/home/lnzliplg/www/program.tar
js/googiespell.min.js000064400000042664151727150220010627 0ustar00/**
 * Roundcube SpellCheck script
 *
 * jQuery'fied spell checker based on GoogieSpell 4.0
 * (which was published under GPL "version 2 or any later version")
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (C) 2006 Amir Salihefendic
 * Copyright (C) The Roundcube Dev Team
 * Copyright (C) Kolab Systems AG
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author 4mir Salihefendic <amix@amix.dk>
 * @author Aleksander Machniak - <alec [at] alec.pl>
 */
var GOOGIE_CUR_LANG,GOOGIE_DEFAULT_LANG="en";function GoogieSpell(t,e,i){var s=this,r=rcmail.get_cookie("language");GOOGIE_CUR_LANG=null!=r?r:GOOGIE_DEFAULT_LANG,this.array_keys=function(t){var e,i=[];for(e in t)i.push([e]);return i},this.img_dir=t,this.server_url=e,this.org_lang_to_word={da:"Dansk",de:"Deutsch",en:"English",es:"Español",fr:"Français",it:"Italiano",nl:"Nederlands",pl:"Polski",pt:"Português",ru:"Русский",fi:"Suomi",sv:"Svenska"},this.lang_to_word=this.org_lang_to_word,this.langlist_codes=this.array_keys(this.lang_to_word),this.show_change_lang_pic=!1,this.change_lang_pic_placement="right",this.report_state_change=!0,this.ta_scroll_top=0,this.el_scroll_top=0,this.lang_chck_spell="Check spelling",this.lang_revert="Revert to",this.lang_close="Close",this.lang_rsm_edt="Resume editing",this.lang_no_error_found="No spelling errors found",this.lang_no_suggestions="No suggestions",this.lang_learn_word="Add to dictionary",this.use_ok_pic=!1,this.show_spell_img=!1,this.decoration=!0,this.use_close_btn=!1,this.edit_layer_dbl_click=!0,this.report_ta_not_found=!0,this.custom_ajax_error=null,this.custom_no_spelling_error=null,this.extra_menu_items=[],this.custom_spellcheck_starter=null,this.main_controller=!0,this.has_dictionary=i,this.lang_state_observer=null,this.spelling_state_observer=null,this.show_menu_observer=null,this.all_errors_fixed_observer=null,this.use_focus=!1,this.focus_link_t=null,this.focus_link_b=null,this.cnt_errors=0,this.cnt_errors_fixed=0,$(document).click(function(t){"1"!=$(t.target).attr("googie_action_btn")&&s.isErrorWindowShown()&&s.hideErrorWindow()}),this.decorateTextarea=function(t){var e,i,s,r,o;this.text_area="string"==typeof t?document.getElementById(t):t,this.text_area?(!this.spell_container&&this.decoration&&(t=document.createElement("table"),e=document.createElement("tbody"),i=document.createElement("tr"),s=document.createElement("td"),r=this.isDefined(this.force_width)?this.force_width:this.text_area.offsetWidth,o=this.isDefined(this.force_height)?this.force_height:16,i.appendChild(s),e.appendChild(i),$(t).append(e).insertBefore(this.text_area).width("100%").height(o),$(s).height(o).width(r).css("text-align","right"),this.spell_container=s),this.checkSpellingState()):this.report_ta_not_found&&rcmail.alert_dialog("Text area not found")},this.setSpellContainer=function(t){this.spell_container="string"==typeof t?document.getElementById(t):t},this.setLanguages=function(t){this.lang_to_word=t,this.langlist_codes=this.array_keys(t)},this.setCurrentLanguage=function(t){GOOGIE_CUR_LANG=t,rcmail.set_cookie("language",t,!1)},this.setForceWidthHeight=function(t,e){this.force_width=t,this.force_height=e},this.setDecoration=function(t){this.decoration=t},this.dontUseCloseButtons=function(){this.use_close_btn=!1},this.appendNewMenuItem=function(t,e,i){this.extra_menu_items.push([t,e,i])},this.setFocus=function(){try{return this.focus_link_b.focus(),this.focus_link_t.focus(),!0}catch(t){return!1}},this.setStateChanged=function(t){this.state=t,null!=this.spelling_state_observer&&this.report_state_change&&this.spelling_state_observer(t,this)},this.setReportStateChange=function(t){this.report_state_change=t},this.getUrl=function(){return this.server_url+GOOGIE_CUR_LANG},this.escapeSpecial=function(t){return t?t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):""},this.createXMLReq=function(t){return'<?xml version="1.0" encoding="utf-8" ?><spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><text>'+t+"</text></spellrequest>"},this.spellCheck=function(t){this.prepare(t);var t=this.escapeSpecial(this.original_text),e=this;$.ajax({type:"POST",url:this.getUrl(),data:this.createXMLReq(t),dataType:"text",error:function(t){e.custom_ajax_error?e.custom_ajax_error(e):rcmail.alert_dialog("An error was encountered on the server. Please try again later."),e.main_controller&&($(e.spell_span).remove(),e.removeIndicator()),e.checkSpellingState()},success:function(t){e.processData(t),e.results.length||(e.custom_no_spelling_error?e.custom_no_spelling_error(e):e.flashNoSpellingErrorState()),e.removeIndicator()}})},this.learnWord=function(t,e){t=this.escapeSpecial(t.innerHTML);var i=this,t='<?xml version="1.0" encoding="utf-8" ?><learnword><text>'+t+"</text></learnword>";$.ajax({type:"POST",url:this.getUrl(),data:t,dataType:"text",error:function(t){i.custom_ajax_error?i.custom_ajax_error(i):rcmail.alert_dialog("An error was encountered on the server. Please try again later.")},success:function(t){}})},this.prepare=function(t,e){this.cnt_errors_fixed=0,this.cnt_errors=0,this.setStateChanged("checking_spell"),this.original_text="",!e&&this.main_controller&&this.appendIndicator(this.spell_span),this.error_links=[],this.ta_scroll_top=this.text_area.scrollTop,this.ignore=t;e=$(this.text_area);""==e.val()||t?(this.custom_no_spelling_error?this.custom_no_spelling_error(this):this.flashNoSpellingErrorState(),this.removeIndicator()):(t="border-box"==$(e).css("box-sizing")?this.text_area.offsetHeight:$(e).height(),this.createEditLayer(e.width(),t),this.createErrorWindow(),$("body").append(this.error_window),this.main_controller&&$(this.spell_span).off("click"),this.original_text=e.val())},this.parseResult=function(t){var e=/\w+="(\d+|true)"/g,i=/\t/g,s=t.match(/<c[^>]*>[^<]*<\/c>/g),r=[];if(null!=s)for(var o=0,n=s.length;o<n;o++){var a=[];this.errorFound(),a.attrs=[];for(var l,h,c=s[o].match(e),_=0;_<c.length;_++)h=(l=c[_].split(/=/))[1].replace(/"/g,""),a.attrs[l[0]]="true"!=h?parseInt(h):h;a.suggestions=[];for(var u=s[o].replace(/<[^>]*>/g,"").split(i),d=0;d<u.length;d++)""!=u[d]&&a.suggestions.push(u[d]);r.push(a)}return r},this.processData=function(t){this.results=this.parseResult(t),this.results.length&&(this.showErrorsInIframe(),this.resumeEditingState())},this.createErrorWindow=function(){this.error_window=document.createElement("div"),$(this.error_window).addClass("googie_window popupmenu").attr("googie_action_btn","1")},this.isErrorWindowShown=function(){return $(this.error_window).is(":visible")},this.hideErrorWindow=function(){$(this.error_window).hide(),$(this.error_window_iframe).hide()},this.updateOriginalText=function(t,e,i,s){var r=this.original_text.substring(0,t),t=this.original_text.substring(t+e.length),o=i.length-e.length;this.original_text=r+i+t,$(this.text_area).val(this.original_text);for(var n=0,a=this.results.length;n<a;n++)n!=s&&s<n&&(this.results[n].attrs.o+=o)},this.saveOldValue=function(t,e){t.is_changed=!0,t.old_value=e},this.createListSeparator=function(){return $("<li>").html("&nbsp;").attr("googie_action_btn","1").css({cursor:"default","font-size":"3px","border-top":"1px solid #ccc","padding-top":"3px"}).get(0)},this.correctError=function(t,e,i,s){var r=e.innerHTML,i=3==i.nodeType?i.nodeValue:i.innerHTML,o=this.results[t].attrs.o;s&&(s=e.previousSibling.innerHTML,e.previousSibling.innerHTML=s.slice(0,s.length-1),r=" "+r,o--),this.hideErrorWindow(),this.updateOriginalText(o,r,i,t),$(e).html(i).css("color","green").attr("is_corrected",!0),this.results[t].attrs.l=i.length,this.isDefined(e.old_value)||this.saveOldValue(e,r),this.errorFixed()},this.ignoreError=function(t,e){$(t).removeAttr("class").css("color","").off(),this.hideErrorWindow()},this.showErrorWindow=function(r,e){this.show_menu_observer&&this.show_menu_observer(this);var o=this,t=$(r).offset(),n=document.createElement("ul"),i=($(this.error_window).html(""),$(n).addClass("googie_list toolbarmenu").attr("googie_action_btn","1"),this.results[e].suggestions),s=this.results[e].attrs.o;this.results[e].attrs.l;this.has_dictionary&&!$(r).attr("is_corrected")&&(l=$("<a>").text(this.lang_learn_word).addClass("googie_add_to_dict active"),$("<li>").attr("googie_action_btn","1").css("cursor","default").mouseover(o.item_onmouseover).mouseout(o.item_onmouseout).click(function(t){o.learnWord(r,e),o.ignoreError(r,e)}).append(l).appendTo(n));for(var a,l,h=0,c=i.length;h<c;h++)l=$("<a>").html(i[h]).addClass("active"),$("<li>").mouseover(this.item_onmouseover).mouseout(this.item_onmouseout).click(function(t){o.correctError(e,r,t.target.firstChild)}).append(l).appendTo(n);r.is_changed&&r.innerHTML!=r.old_value&&(a=r.old_value,l=$("<a>").addClass("googie_list_revert active").html(this.lang_revert+" "+a),$("<li>").mouseover(this.item_onmouseover).mouseout(this.item_onmouseout).click(function(t){o.updateOriginalText(s,r.innerHTML,a,e),$(r).removeAttr("is_corrected").css("color","#b91414").html(a),o.hideErrorWindow()}).append(l).appendTo(n));function _(){return""!=d.value&&(o.isDefined(r.old_value)||o.saveOldValue(r,r.innerHTML),o.updateOriginalText(s,r.innerHTML,d.value,e),$(r).attr("is_corrected",!0).css("color","green").text(d.value),o.hideErrorWindow()),!1}var u=document.createElement("li"),d=document.createElement("input"),g=document.createElement("button"),p=document.createElement("form"),m=($(d).width(120).val($(r).text()).attr("googie_action_btn","1"),$(u).css("cursor","default").attr("googie_action_btn","1").on("click",function(){return!1}),this.use_ok_pic?$("<img>").attr("src",this.img_dir+"ok.gif").width(32).height(16).css({cursor:"pointer","margin-left":"2px","margin-right":"2px"}).appendTo(g):$(g).text("OK"),$(g).addClass("mainaction save googie_ok_button btn-sm").click(_),$(p).attr("googie_action_btn","1").css({cursor:"default","white-space":"nowrap"}).submit(_).append(d).append(g).appendTo(u),n.appendChild(u),0<this.extra_menu_items.length&&n.appendChild(this.createListSeparator()),function(t){var e,i,s;t<o.extra_menu_items.length&&((e=o.extra_menu_items[t])[2]&&!e[2](r,o)||(i=document.createElement("tr"),s=document.createElement("td"),$(s).html(e[0]).mouseover(o.item_onmouseover).mouseout(o.item_onmouseout).click(function(){return e[1](r,o)}),i.appendChild(s),n.appendChild(i)),m(t+1))}),p=(m(0),m=null,this.use_close_btn&&n.appendChild(this.createCloseButton(this.hideErrorWindow)),this.error_window.appendChild(n),rcmail.triggerEvent("googiespell_create",{obj:this.error_window}),$(this.error_window).height()),g=$(this.error_window).width(),u=$(document).height(),f=$(document).width(),u=t.top+p+20<u?t.top+20:t.top-p,p=t.left+g<f?t.left:t.left-g;p<0&&(p=0),u<0&&(u=0),$(this.error_window).css({top:u+"px",left:p+"px",position:"absolute"}).show(),document.all&&!window.opera&&(this.error_window_iframe||(f=$("<iframe>").css({position:"absolute","z-index":-1}),$("body").append(f),this.error_window_iframe=f),$(this.error_window_iframe).css({top:this.error_window.offsetTop,left:this.error_window.offsetLeft,width:this.error_window.offsetWidth,height:this.error_window.offsetHeight}).show())},this.createEditLayer=function(t,e){this.edit_layer=document.createElement("div"),$(this.edit_layer).addClass("googie_edit_layer").attr("id","googie_edit_layer").width(t).height(e),"input"!=this.text_area.nodeName.toLowerCase()||""==$(this.text_area).val()?$(this.edit_layer).css("overflow","auto"):$(this.edit_layer).css("overflow","hidden");var i=this;this.edit_layer_dbl_click&&$(this.edit_layer).dblclick(function(t){var e;return"googie_link"==t.target.className||i.isErrorWindowShown()||(i.resumeEditing(),e=function(){$(i.text_area).focus(),e=null},setTimeout(e,10)),!1})},this.resumeEditing=function(){this.setStateChanged("ready"),this.edit_layer&&(this.el_scroll_top=this.edit_layer.scrollTop),this.hideErrorWindow(),this.main_controller&&$(this.spell_span).removeClass().addClass("googie_no_style"),this.ignore||(this.use_focus&&($(this.focus_link_t).remove(),$(this.focus_link_b).remove()),$(this.edit_layer).remove(),$(this.text_area).show(),null!=this.el_scroll_top&&(this.text_area.scrollTop=this.el_scroll_top)),this.checkSpellingState(!1)},this.createErrorLink=function(t,e){var i=document.createElement("span"),s=this,r=function(t){return s.showErrorWindow(i,e),r=null,!1};return $(i).html(t).addClass("googie_link").click(r).removeAttr("is_corrected").attr({googie_action_btn:"1",g_id:e}),i},this.createPart=function(t){if(" "==t)return document.createTextNode(" ");t=(t=(t=(t=(t=this.escapeSpecial(t)).replace(/\n/g,"<br>")).replace(/    /g," &nbsp;")).replace(/^ /g,"&nbsp;")).replace(/ $/g,"&nbsp;");var e=document.createElement("span");return $(e).html(t),e},this.showErrorsInIframe=function(){var t=document.createElement("div"),e=0,i=this.results;if(0<i.length){for(var s=0,r=i.length;s<r;s++){var o=i[s].attrs.o,n=i[s].attrs.l,a=this.original_text.substring(e,o),a=this.createPart(a),a=(t.appendChild(a),e+=o-e,this.createErrorLink(this.original_text.substr(o,n),s));this.error_links.push(a),t.appendChild(a),e+=n}var l=this.original_text.substr(e,this.original_text.length),l=this.createPart(l);t.appendChild(l)}else t.innerHTML=this.original_text;$(t).css("text-align","left");var h=this;this.custom_item_evaluator&&$.map(this.error_links,function(t){h.custom_item_evaluator(h,t)}),$(this.edit_layer).append(t),$(this.text_area).hide(),$(this.edit_layer).insertBefore(this.text_area),this.use_focus&&(this.focus_link_t=this.createFocusLink("focus_t"),this.focus_link_b=this.createFocusLink("focus_b"),$(this.focus_link_t).insertBefore(this.edit_layer),$(this.focus_link_b).insertAfter(this.edit_layer))},this.deHighlightCurSel=function(){$(this.lang_cur_elm).removeClass().addClass("googie_list_onout")},this.highlightCurSel=function(){null==GOOGIE_CUR_LANG&&(GOOGIE_CUR_LANG=GOOGIE_DEFAULT_LANG);for(var t=0;t<this.lang_elms.length;t++)$(this.lang_elms[t]).attr("googieId")==GOOGIE_CUR_LANG?(this.lang_elms[t].className="googie_list_selected",this.lang_cur_elm=this.lang_elms[t]):this.lang_elms[t].className="googie_list_onout"},this.createSpellDiv=function(){var t=document.createElement("span");return $(t).addClass("googie_check_spelling_link").text(this.lang_chck_spell),this.show_spell_img&&$(t).append(" ").append($("<img>").attr("src",this.img_dir+"spellc.gif")),t},this.flashNoSpellingErrorState=function(t){this.setStateChanged("no_error_found");var e,i,s=this;this.main_controller&&(e=t?function(){t(),s.checkSpellingState()}:function(){s.checkSpellingState()},i=$("<span>").text(this.lang_no_error_found),$(this.switch_lan_pic).hide(),$(this.spell_span).empty().append(i).removeClass().addClass("googie_check_spelling_ok"),setTimeout(e,1e3))},this.resumeEditingState=function(){var t,e;this.setStateChanged("resume_editing"),this.main_controller&&(t=$("<span>").text(this.lang_rsm_edt),e=this,$(this.switch_lan_pic).hide(),$(this.spell_span).empty().off().append(t).click(function(){e.resumeEditing()}).removeClass().addClass("googie_resume_editing"));try{this.edit_layer.scrollTop=this.ta_scroll_top}catch(t){}},this.checkSpellingState=function(t){t&&this.setStateChanged("ready"),this.switch_lan_pic=document.createElement("span");var t=this.createSpellDiv(),e=this;this.custom_spellcheck_starter?$(t).click(function(t){e.custom_spellcheck_starter()}):$(t).click(function(t){e.spellCheck()}),this.main_controller&&("left"==this.change_lang_pic_placement?$(this.spell_container).empty().append(this.switch_lan_pic).append(" ").append(t):$(this.spell_container).empty().append(t).append(" ").append(this.switch_lan_pic)),this.spell_span=t},this.isDefined=function(t){return null!=t},this.errorFixed=function(){this.cnt_errors_fixed++,this.all_errors_fixed_observer&&this.cnt_errors_fixed==this.cnt_errors&&(this.hideErrorWindow(),this.all_errors_fixed_observer())},this.errorFound=function(){this.cnt_errors++},this.createCloseButton=function(t){return this.createButton(this.lang_close,"googie_list_close",t)},this.createButton=function(t,e,i){var s,r=document.createElement("tr"),o=document.createElement("td");return e?(s=document.createElement("span"),$(s).addClass(e).html(t)):s=document.createTextNode(t),$(o).click(i).mouseover(this.item_onmouseover).mouseout(this.item_onmouseout),o.appendChild(s),r.appendChild(o),r},this.removeIndicator=function(t){window.rcmail&&rcmail.set_busy(!1,null,this.rc_msg_id)},this.appendIndicator=function(t){window.rcmail&&(this.rc_msg_id=rcmail.set_busy(!0,"checking"))},this.createFocusLink=function(t){var e=document.createElement("a");return $(e).attr({href:"javascript:;",name:t}),e},this.item_onmouseover=function(t){"googie_list_revert"!=this.className&&"googie_list_close"!=this.className?this.className="googie_list_onhover":this.parentNode.className="googie_list_onhover"},this.item_onmouseout=function(t){"googie_list_revert"!=this.className&&"googie_list_close"!=this.className?this.className="googie_list_onout":this.parentNode.className="googie_list_onout"}}
js/editor.js000064400000066705151727150220007024 0ustar00/**
 * Roundcube editor js library
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Eric Stadtherr <estadtherr@gmail.com>
 * @author Aleksander Machniak <alec@alec.pl>
 */

/**
 * Roundcube Text Editor Widget class
 * @constructor
 */
function rcube_text_editor(config, id)
{
  var ref = this,
    editorElement = $('#' + id),
    abs_url = location.href.replace(/[?#].*$/, '').replace(/\/$/, ''),
    conf = {
      selector: '#' + (editorElement.is('.mce_editor') ? id : 'fake-editor-id'),
      readonly: editorElement.is('[readonly],[disabled]'),
      cache_suffix: 's=5080200',
      theme: 'silver',
      language: config.lang,
      content_css: rcmail.assets_path(config.content_css),
      content_style: config.content_style,
      menubar: false,
      statusbar: false,
      // toolbar_sticky: true, // does not work in scrollable element: https://github.com/tinymce/tinymce/issues/5227
      toolbar_drawer: 'sliding',
      toolbar: 'bold italic underline | alignleft aligncenter alignright alignjustify'
        + ' | fontselect fontsizeselect | forecolor backcolor',
      extended_valid_elements: 'font[face|size|color|style],span[id|class|align|style]',
      fontsize_formats: '8pt 9pt 10pt 11pt 12pt 14pt 18pt 24pt 36pt',
      // Allow style tag, have to be allowed inside body/div/blockquote (#7088)
      valid_children: '+body[style],+blockquote[style],+div[style]',
      relative_urls: false,
      remove_script_host: false,
      convert_urls: false, // #1486944
      image_description: false,
      paste_webkit_styles: "color font-size font-family font-weight background-color",
      automatic_uploads: false, // allows to paste images
      paste_data_images: true,
      // Note: We disable contextmenu options specifically for browser_spellcheck:true.
      //       Otherwise user would have to use Right-Click with CTRL to get to
      //       the browser's spellchecker options. Should you disable browser_spellcheck
      //       you can enable other contextmenu options (by removing these options below).
      browser_spellcheck: true,
      contextmenu: 'spellchecker',
      anchor_bottom: false,
      anchor_top: false,
      file_picker_types: 'image media',
      file_picker_callback: function(callback, value, meta) { ref.file_picker_callback(callback, value, meta); },
      min_height: config.mode == 'identity' ? 100 : 400,
      deprecation_warnings: false
    };

  // register spellchecker for plain text editor
  this.spellcheck_observer = function() {};
  if (config.spellchecker) {
    this.spellchecker = config.spellchecker;
    if (config.spellcheck_observer) {
      this.spellchecker.spelling_state_observer = this.spellcheck_observer = config.spellcheck_observer;
    }
  }

  // Note: must be registered only once (#1490311)
  if (!tinymce.registered_request_token) {
    tinymce.registered_request_token = true;
    tinymce.util.XHR.on('beforeSend', function(e) {
      // secure spellchecker requests with Roundcube token
      e.xhr.setRequestHeader('X-Roundcube-Request', rcmail.env.request_token);
      // A hacky way of setting spellchecker language (there's no API for this in Tiny)
      if (e.settings && e.settings.data)
        e.settings.data = e.settings.data.replace(/^(method=[a-zA-Z]+&lang=)([^&]+)/, '$1' + rcmail.env.spell_lang);
    });
  }

  // minimal editor
  if (config.mode == 'identity' || config.mode == 'response') {
    conf.toolbar += ' | charmap hr link unlink image code $extra';
    $.extend(conf, {
      plugins: 'autolink charmap code hr image link paste tabfocus',
      file_picker_types: 'image'
    });
  }
  // full-featured editor
  else {
    conf.toolbar += ' | bullist numlist outdent indent ltr rtl blockquote'
        + ' | link unlink table | $extra charmap image media | code searchreplace undo redo',
    $.extend(conf, {
      plugins: 'autolink charmap code directionality link lists image media nonbreaking'
        + ' paste table tabfocus searchreplace spellchecker',
      spellchecker_rpc_url: abs_url + '/?_task=utils&_action=spell_html&_remote=1',
      spellchecker_language: rcmail.env.spell_lang
    });
  }

  // add TinyMCE plugins/buttons from Roundcube plugin
  $.each(config.extra_plugins || [], function() {
    if (conf.plugins.indexOf(this) < 0)
      conf.plugins = conf.plugins + ' ' + this;
  });
  $.each(config.extra_buttons || [], function() {
    if (conf.toolbar.indexOf(this) < 0)
      conf.toolbar = conf.toolbar.replace('$extra', '$extra ' + this);
  });

  // disable TinyMCE plugins/buttons from Roundcube plugin
  $.each(config.disabled_plugins || [], function() {
    conf.plugins = conf.plugins.replace(this, '');
  });
  $.each(config.disabled_buttons || [], function() {
    conf.toolbar = conf.toolbar.replace(this, '');
  });

  conf.toolbar = conf.toolbar.replace('$extra', '').replace(/\|\s+\|/g, '|');

  // support external configuration settings e.g. from skin
  if (window.rcmail_editor_settings)
    $.extend(conf, window.rcmail_editor_settings);

  conf.setup = function(ed) {
    ed.on('init', function() { ref.init_callback(ed); });
    // add handler for spellcheck button state update
    ed.on('SpellcheckStart SpellcheckEnd', function(args) {
      ref.spellcheck_active = args.type == 'spellcheckstart';
      ref.spellcheck_observer();
    });
    ed.on('keypress', function() {
      rcmail.compose_type_activity++;
    });
    // make links open on shift-click
    ed.on('click', function(e) {
      var link = $(e.target).closest('a');
      if (link.length && e.shiftKey) {
        window.open(link.get(0).href, '_blank');
        return false;
      }
    });
    ed.on('focus blur', function(e) {
      $(ed.getContainer()).toggleClass('focused');
    });

    if (conf.setup_callback)
      conf.setup_callback(ed);
  };

  rcmail.triggerEvent('editor-init', {config: conf, ref: ref, id: id});

  // textarea identifier
  this.id = id;
  // reference to active editor (if in HTML mode)
  this.editor = null;

  tinymce.init(conf);

  // react to real individual tinyMCE editor init
  this.init_callback = function(editor)
  {
    this.editor = editor;

    // Browsers have performance problems with rendering a lot of content in a textarea.
    // To workaround that we create a separate hidden textarea for the content and copy it
    // to the editor after the page is already loaded (#8108)
    var content, editorContentElement = editorElement.data('html-editor-content-element');
    if (editorContentElement && (content = $('#' + editorContentElement).val())) {
      editor.setContent(content);
      $('#' + editorContentElement).remove();
    }

    if (rcmail.env.action == 'compose') {
      var area = $('#' + this.id),
        height = $('div.tox-toolbar__group', area.parent()).first().height();

      // the editor might be still not fully loaded, making the editing area
      // inaccessible, wait and try again (#1490310)
      if (height > 200 || height > area.height()) {
        return setTimeout(function () { ref.init_callback(editor); }, 300);
      }

      var elem = rcube_find_object('_from'),
        fe = rcmail.env.compose_focus_elem;

      if (elem && elem.type == 'select-one') {
        // insert signature (only for the first time)
        if (!rcmail.env.identities_initialized)
          rcmail.change_identity(elem);

        // Focus previously focused element
        if (fe && fe.id != this.id && fe.nodeName != 'BODY') {
          window.focus(); // for WebKit (#1486674)
          fe.focus();
          rcmail.env.compose_focus_elem = null;
        }
      }
    }

    rcmail.triggerEvent('editor-load', {config: conf, ref: this});

    // set tabIndex and set focus to element that was focused before
    this.tabindex(this.force_focus || (fe && fe.id == this.id));

    // Trigger resize (needed for proper editor resizing in some browsers)
    $(window).resize();
  };

  // set tabIndex on tinymce editor
  this.tabindex = function(focus)
  {
    if (rcmail.env.task == 'mail' && this.editor) {
      var textarea = this.editor.getElement(),
        node = this.editor.getContentAreaContainer().childNodes[0];

      if (textarea && node)
        node.tabIndex = textarea.tabIndex;

      // find :prev and :next elements to get focus when tabbing away
      if (textarea.tabIndex > 0) {
        var x = null,
          tabfocus_elements = [':prev',':next'],
          el = tinymce.DOM.select('*[tabindex='+textarea.tabIndex+']:not(iframe)');

        tinymce.each(el, function(e, i) { if (e.id == ref.id) { x = i; return false; } });
        if (x !== null) {
          if (el[x-1] && el[x-1].id) {
            tabfocus_elements[0] = el[x-1].id;
          }
          if (el[x+1] && el[x+1].id) {
            tabfocus_elements[1] = el[x+1].id;
          }
          this.editor.settings.tabfocus_elements = tabfocus_elements.join(',');
        }
      }

      // ContentEditable reset fixes invisible cursor issue in Firefox < 25
      if (bw.mz && bw.vendver < 25)
        $(this.editor.getBody()).prop('contenteditable', false).prop('contenteditable', true);
    }

    if (focus)
      this.focus();
  };

  // focus the editor
  this.focus = function()
  {
    $(this.editor || ('#' + this.id)).focus();
    this.force_focus = false;
  };

  // Returns current editor mode
  this.is_html = function()
  {
    return !!this.editor;
  };

  // switch html/plain mode
  this.toggle = function(ishtml, noconvert)
  {
    var curr, content, result,
      // these non-printable chars are not removed on text2html and html2text
      // we can use them as temp signature replacement
      sig_mark = "\u0002\u0003",
      input = $('#' + this.id),
      signature = rcmail.env.identity ? rcmail.env.signatures[rcmail.env.identity] : null,
      is_sig = signature && signature.text && signature.text.length > 1;

    // apply spellcheck changes if spell checker is active
    this.spellcheck_stop();

    if (ishtml) {
      content = input.val();

      // replace current text signature with temp mark
      if (is_sig) {
        content = content.replace(/\r\n/, "\n");
        content = content.replace(signature.text.replace(/\r\n/, "\n"), sig_mark);
      }

      var init_editor = function(data) {
        // replace signature mark with html version of the signature
        if (is_sig)
          data = data.replace(sig_mark, '<div id="_rc_sig">' + signature.html + '</div>');

        ref.force_focus = true;
        input.val(data);
        tinymce.execCommand('mceAddEditor', false, ref.id);
      };

      // convert to html
      if (!noconvert) {
        result = rcmail.plain2html(content, init_editor);
      }
      else {
        init_editor(content);
        result = true;
      }
    }
    else if (this.editor) {
      if (is_sig) {
        // get current version of signature, we'll need it in
        // case of html2text conversion abort
        if (curr = this.editor.dom.get('_rc_sig'))
          curr = curr.innerHTML;

        // replace current signature with some non-printable characters
        // we use non-printable characters, because this replacement
        // is visible to the user
        // doing this after getContent() would be hard
        this.editor.dom.setHTML('_rc_sig', sig_mark);
      }

      // get html content
      content = this.editor.getContent();

      var init_plaintext = function(data) {
        tinymce.execCommand('mceRemoveEditor', false, ref.id);
        ref.editor = null;

        // replace signature mark with text version of the signature
        if (is_sig)
          data = data.replace(sig_mark, "\n" + signature.text);

        input.val(data).focus().trigger('input');
        rcmail.set_caret_pos(input.get(0), 0);
      };

      // convert html to text
      if (!noconvert) {
        result = rcmail.html2plain(content, init_plaintext);
      }
      else {
        init_plaintext(input.val());
        result = true;
      }

      // bring back current signature
      if (!result && curr)
        this.editor.dom.setHTML('_rc_sig', curr);
    }

    return result;
  };

  // start spellchecker
  this.spellcheck_start = function()
  {
    if (this.editor) {
      tinymce.execCommand('mceSpellCheck', true);
      this.spellcheck_observer();
    }
    else if (this.spellchecker && this.spellchecker.spellCheck) {
      this.spellchecker.spellCheck();
    }
  };

  // stop spellchecker
  this.spellcheck_stop = function()
  {
    var ed = this.editor;

    if (ed) {
      if (ed.plugins && ed.plugins.spellchecker && this.spellcheck_active) {
        ed.execCommand('mceSpellCheck', false);
        this.spellcheck_observer();
      }
    }
    else if (ed = this.spellchecker) {
      if (ed.state && ed.state != 'ready' && ed.state != 'no_error_found')
        $(ed.spell_span).trigger('click');
    }
  };

  // spellchecker state
  this.spellcheck_state = function()
  {
    var ed;

    if (this.editor)
      return this.spellcheck_active;
    else if ((ed = this.spellchecker) && ed.state)
      return ed.state != 'ready' && ed.state != 'no_error_found';
  };

  // resume spellchecking, highlight provided misspellings without a new ajax request
  this.spellcheck_resume = function(data)
  {
    var ed = this.editor;

    if (ed) {
      ed.plugins.spellchecker.markErrors(data);
    }
    else if (ed = this.spellchecker) {
      ed.prepare(false, true);
      ed.processData(data);
    }
  };

  // get selected (spellchecker) language
  this.get_language = function()
  {
    return rcmail.env.spell_lang;
  };

  // set language for spellchecking
  this.set_language = function(lang)
  {
    var ed = this.editor;

    if (ed) {
      // TODO: this has no effect in recent Tiny versions
      ed.settings.spellchecker_language = lang;
    }
    if (ed = this.spellchecker) {
      ed.setCurrentLanguage(lang);
    }

    rcmail.env.spell_lang = lang;
  };

  // replace selection with text snippet
  // input can be a string or object with 'text' and 'html' properties
  this.replace = function(input)
  {
    var format, ed = this.editor;

    if (!input)
      return false;

    // insert into tinymce editor
    if (ed) {
      ed.getWin().focus(); // correct focus in IE & Chrome

      if ($.type(input) == 'object' && ('html' in input)) {
        input = input.html;
        format = 'html';
      }
      else {
        if ($.type(input) == 'object')
          input = input.text || '';

        input = rcmail.quote_html(input).replace(/\r?\n/g, '<br/>');
        format = 'text';
      }

      ed.selection.setContent(input, {format: format});
    }
    // replace selection in compose textarea
    else if (ed = rcube_find_object(this.id)) {
      var selection = rcmail.get_input_selection(ed),
        value = ed.value,
        pre = value.substring(0, selection.start),
        end = value.substring(selection.end, value.length);

      if ($.type(input) == 'object')
        input = input.text || '';

      // insert response text
      ed.value = pre + input + end;

      // set caret after inserted text
      rcmail.set_caret_pos(ed, selection.start + input.length);
      ed.focus();
    }
  };

  // Fill the editor with specified content
  // TODO: support format conversion
  this.set_content = function(content)
  {
    if (this.editor) {
      this.editor.setContent(content);
      this.editor.getWin().focus();
    }
    else if (ed = rcube_find_object(this.id)) {
      $(ed).val(content).focus();
    }
  };

  // get selected text (if no selection returns all text) from the editor
  this.get_content = function(args)
  {
    var sigstart, ed = this.editor, text = '', strip = false,
      defaults = {refresh: true, selection: false, nosig: false, format: 'html'};

    if (!args)
      args = defaults;
    else
      args = $.extend(defaults, args);

    // apply spellcheck changes if spell checker is active
    if (args.refresh) {
      this.spellcheck_stop();
    }

    // get selected text from tinymce editor
    if (ed) {
      if (args.selection)
        text = ed.selection.getContent({format: args.format});

      if (!text) {
        text = ed.getContent({format: args.format});
        // @todo: strip signature in html mode
        strip = args.format == 'text';
      }
    }
    // get selected text from compose textarea
    else if (ed = rcube_find_object(this.id)) {
      if (args.selection) {
        text = rcmail.get_input_selection(ed).text;
      }

      if (!text) {
        text = ed.value;
        strip = true;
      }
    }

    // strip off signature
    // @todo: make this optional
    if (strip && args.nosig) {
      sigstart = text.indexOf('-- \n');
      if (sigstart > 0) {
        text = text.substring(0, sigstart);
      }
    }

    return text;
  };

  // change user signature text
  this.change_signature = function(id, show_sig)
  {
    var position_element, cursor_pos, p = -1,
      input_message = $('#' + this.id),
      message = input_message.val(),
      sig = rcmail.env.identity;

    if (!this.editor) { // plain text mode
      // remove the 'old' signature
      if (show_sig && sig && rcmail.env.signatures && rcmail.env.signatures[sig]) {
        sig = rcmail.env.signatures[sig].text;
        sig = sig.replace(/\r\n/g, '\n');

        p = rcmail.env.top_posting ? message.indexOf(sig) : message.lastIndexOf(sig);
        if (p >= 0)
          message = message.substring(0, p) + message.substring(p+sig.length, message.length);
      }

      // add the new signature string
      if (show_sig && rcmail.env.signatures && rcmail.env.signatures[id]) {
        sig = rcmail.env.signatures[id].text;
        sig = sig.replace(/\r\n/g, '\n');

        // in place of removed signature
        if (p >= 0) {
          message = message.substring(0, p) + sig + message.substring(p, message.length);
          cursor_pos = p - 1;
        }
        // empty message or new-message mode
        else if (!message || !rcmail.env.compose_mode) {
          cursor_pos = message.length;
          message += '\n\n' + sig;
        }
        else if (rcmail.env.top_posting && !rcmail.env.sig_below) {
          // at cursor position
          if (pos = rcmail.get_caret_pos(input_message.get(0))) {
            message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length);
            cursor_pos = pos;
          }
          // on top
          else {
            message = '\n\n' + sig + '\n\n' + message.replace(/^[\r\n]+/, '');
            cursor_pos = 0;
          }
        }
        else {
          message = message.replace(/[\r\n]+$/, '');
          cursor_pos = !rcmail.env.top_posting && message.length ? message.length + 1 : 0;
          message += '\n\n' + sig;
        }
      }
      else {
        cursor_pos = rcmail.env.top_posting ? 0 : message.length;
      }

      input_message.val(message);

      // move cursor before the signature
      rcmail.set_caret_pos(input_message.get(0), cursor_pos);
    }
    else if (show_sig && rcmail.env.signatures) {  // html
      var sigElem = this.editor.dom.get('_rc_sig');

      // Append the signature as a div within the body
      if (!sigElem) {
        var body = this.editor.getBody();

        sigElem = $('<div id="_rc_sig"></div>').get(0);

        // insert at start or at cursor position in top-posting mode
        // (but not if the content is empty and not in new-message mode)
        if (rcmail.env.top_posting && !rcmail.env.sig_below
          && rcmail.env.compose_mode && (body.childNodes.length > 1 || $(body).text())
        ) {
          this.editor.getWin().focus(); // correct focus in IE & Chrome

          var node = this.editor.selection.getNode();

          $(sigElem).insertBefore(node.nodeName == 'BODY' ? body.firstChild : node.nextSibling);
          $('<p>').append($('<br>')).insertBefore(sigElem);
        }
        else {
          body.appendChild(sigElem);
          position_element = rcmail.env.top_posting && rcmail.env.compose_mode ? body.firstChild : $(sigElem).prev();
        }
      }

      sigElem.innerHTML = rcmail.env.signatures[id] ? rcmail.env.signatures[id].html : '';
    }
    else if (!rcmail.env.top_posting) {
      position_element = $(this.editor.getBody()).children().last();
    }

    // put cursor before signature and scroll the window
    if (this.editor && position_element && position_element.length) {
      this.editor.selection.setCursorLocation(position_element.get(0));
      this.editor.getWin().scroll(0, position_element.offset().top);
    }
  };

  // trigger content save
  this.save = function()
  {
    if (this.editor) {
      this.editor.save();
    }
  };

  // focus the editing area
  this.focus = function()
  {
    (this.editor || rcube_find_object(this.id)).focus();
  };

  // image selector
  this.file_picker_callback = function(callback, value, meta)
  {
    var i, button, elem, cancel, dialog, fn, hint, list = [],
      type = meta.filetype,
      form = $('.upload-form').clone();

    // open image selector dialog
    this.editor.windowManager.open({
      title: rcmail.get_label('select' + type),
      body: {
        type: 'panel',
        items: [{
          type: 'htmlpanel',
          html: '<div id="image-selector" class="image-selector file-upload"><ul id="image-selector-list" class="attachmentslist"></ul></div>',
        }]
      },
      buttons: [{type: 'cancel', text: rcmail.get_label('close'), onclick: function() { ref.file_picker_close(); }}]
    });

    rcmail.env.file_picker_callback = callback;
    rcmail.env.file_picker_type = type;

    dialog = $('#image-selector');

    if (!form.length)
      form = this.file_upload_form(rcmail.gui_objects.uploadform);
    else
      form.find('button,a.button').slice(1).remove(); // need only the first button

    button = dialog.prepend(form).find('button,a.button')
      .text(rcmail.get_label('add' + type))
      .focus();

    if (!button.is('.btn'))
      button.addClass('tox-button');

    // fill images list with available images
    for (i in rcmail.env.attachments) {
      if (elem = ref.file_picker_entry(i, rcmail.env.attachments[i])) {
        list.push(elem);
      }
    }

    cancel = dialog.parents('.tox-dialog').find('button').last();

    // Add custom Tab key handlers, tabindex does not work
    list = $('#image-selector-list').append(list).on('keydown', 'li', function(e) {
        if (e.which == 9) {
          if (rcube_event.get_modifier(e) == SHIFT_KEY) {
            if (!$(this).prev().focus().length) {
              button.focus();
            }
          }
          else if (!$(this).next().focus().length) {
            cancel.focus();
          }

          return false;
        }
      });

    button.keydown(function(e) {
      if (e.which == 9) { // Tab
        if (rcube_event.get_modifier(e) == SHIFT_KEY || !list.find('li').first().focus().length) {
          cancel.focus();
        }

        return false;
      }

      if (e.which == 13) { // Enter
        this.click();
      }
    });

    cancel.keydown(function(e) {
      if (e.which == 9) {
        if (rcube_event.get_modifier(e) != SHIFT_KEY || !list.find('li').last().focus().length) {
          button.focus();
        }

        return false;
      }
    });

    // enable drag-n-drop area
    if (window.FormData) {
      if (!rcmail.env.filedrop) {
        rcmail.env.filedrop = {};
      }
      if (rcmail.gui_objects.filedrop) {
        rcmail.env.old_file_drop = rcmail.gui_objects.filedrop;
      }

      rcmail.gui_objects.filedrop = $('#image-selector');
      rcmail.gui_objects.filedrop.addClass('droptarget')
        .on('dragover dragleave', function(e) {
          e.preventDefault();
          e.stopPropagation();
          $(this)[(e.type == 'dragover' ? 'addClass' : 'removeClass')]('hover');
        })
        .get(0).addEventListener('drop', function(e) { return rcmail.file_dropped(e); }, false);
    }

    // register handler for successful file upload
    if (!rcmail.env['file_dialog_event_' + type]) {
      rcmail.env['file_dialog_event+' + type] = true;
      rcmail.addEventListener('fileuploaded', function(attr) {
        var elem;
        if (elem = ref.file_picker_entry(attr.name, attr.attachment)) {
          list.prepend(elem);
          elem.focus();
        }
      });
    }

    // @todo: upload progress indicator
  };

  // close file browser window
  this.file_picker_close = function(url)
  {
    this.editor.windowManager.close();

    if (url)
      rcmail.env.file_picker_callback(url);

    if (rcmail.env.old_file_drop)
      rcmail.gui_objects.filedrop = rcmail.env.old_file_drop;
  };

  // creates file browser entry
  this.file_picker_entry = function(file_id, file)
  {
    if (!file.complete || !file.mimetype) {
      return;
    }

    if (rcmail.file_upload_id) {
      rcmail.set_busy(false, null, rcmail.file_upload_id);
    }

    var rx, img_src;

    switch (rcmail.env.file_picker_type) {
      case 'image':
        rx = /^image\//i;
        break;

      case 'media':
        rx = /^video\//i;
        img_src = rcmail.assets_path('program/resources/tinymce/video.png');
        break;

      default:
        return;
    }

    if (rx.test(file.mimetype)) {
      var path = rcmail.env.comm_path + '&_from=' + rcmail.env.action,
        action = rcmail.env.compose_id ? '&_id=' + rcmail.env.compose_id + '&_action=display-attachment' : '&_action=upload-display',
        href = path + action + '&_file=' + file_id,
        img = $('<img>').attr({title: file.name, src: img_src ? img_src : href + '&_thumbnail=1'});

      return $('<li>').attr({tabindex: 0})
        .data('url', href)
        .append($('<span class="img">').append(img))
        .append($('<span class="name">').text(file.name))
        .click(function() { ref.file_picker_close($(this).data('url')); })
        .keydown(function(e) {
          if (e.which == 13) {
            ref.file_picker_close($(this).data('url'));
          }
        });
    }
  };

  this.file_upload_form = function(clone_form)
  {
    var hint = clone_form ? $(clone_form).find('.hint').text() : '',
      form = $('<form id="imageuploadform">').attr({method: 'post', enctype: 'multipart/form-data'});
      file = $('<input>').attr({name: '_file[]', type: 'file', multiple: true, style: 'opacity:0;height:1px;width:1px'})
        .change(function() { rcmail.upload_file(form, 'upload'); }),
      wrapper = $('<div class="upload-form">')
        .append($('<button>').attr({'class': 'btn btn-secondary attach', href: '#', onclick: "rcmail.upload_input('imageuploadform')"}));

    if (hint)
      wrapper.prepend($('<div class="hint">').text(hint));

    // clone existing upload form
    if (clone_form) {
      file.attr('name', $('input[type="file"]', clone_form).attr('name'));
      form.attr('action', $(clone_form).attr('action'));
    }

    form.append(file).append($('<input>').attr({type: 'hidden', name: '_token', value: rcmail.env.request_token}));

    return wrapper.append(form);
  };
}
js/publickey.js000064400000047405151727150220007521 0ustar00/**
 * PublicKey.js - v0e011cb1
 *
 * @source https://github.com/diafygi/publickeyjs/blob/master/publickey.js
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) 2015 Daniel Roesler
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 */
"use strict";

(function(context){
    /*
        Default keyservers (HTTPS and CORS enabled)
    */
    var DEFAULT_KEYSERVERS = [
        "https://keys.fedoraproject.org/",
        "https://keybase.io/",
    ];

    /*
        Initialization to create an PublicKey object.

        Arguments:

        * keyservers - Array of keyserver domains, default is:
            ["https://keys.fedoraproject.org/", "https://keybase.io/"]

        Examples:

        //Initialize with the default keyservers
        var hkp = new PublicKey();

        //Initialize only with a specific keyserver
        var hkp = new PublicKey(["https://key.ip6.li/"]);
    */
    var PublicKey = function(keyservers){
        this.keyservers = keyservers || DEFAULT_KEYSERVERS;
    };

    /*
        Get a public key from any keyserver based on keyId.

        Arguments:

        * keyId - String key id of the public key (this is usually a fingerprint)

        * callback - Function that is called when finished. Two arguments are
                passed to the callback: publicKey and errorCode. publicKey is
                an ASCII armored OpenPGP public key. errorCode is the error code
                (either HTTP status code or keybase error code) returned by the
                last keyserver that was tried. If a publicKey was found,
                errorCode is null. If no publicKey was found, publicKey is null
                and errorCode is not null.

        Examples:

        //Get a valid public key
        var hkp = new PublicKey();
        hkp.get("F75BE4E6EF6E9DD203679E94E7F6FAD172EFEE3D", function(publicKey, errorCode){
            errorCode !== null ? console.log(errorCode) : console.log(publicKey);
        });

        //Try to get an invalid public key
        var hkp = new PublicKey();
        hkp.get("bogus_id", function(publicKey, errorCode){
            errorCode !== null ? console.log(errorCode) : console.log(publicKey);
        });
    */
    PublicKey.prototype.get = function(keyId, callback, keyserverIndex, err){
        //default starting point is at the first keyserver
        if(keyserverIndex === undefined){
            keyserverIndex = 0;
        }

        //no more keyservers to check, so no key found
        if(keyserverIndex >= this.keyservers.length){
            return callback(null, err || 404);
        }

        //set the keyserver to try next
        var ks = this.keyservers[keyserverIndex];
        var _this = this;

        //special case for keybase
        if(ks.indexOf("https://keybase.io/") === 0){

            //don't need 0x prefix for keybase searches
            if(keyId.indexOf("0x") === 0){
                keyId = keyId.substr(2);
            }

            //request the public key from keybase
            var xhr = new XMLHttpRequest();
            xhr.open("get", "https://keybase.io/_/api/1.0/user/lookup.json" +
                "?fields=public_keys&key_fingerprint=" + keyId);
            xhr.onload = function(){
                if(xhr.status === 200){
                    var result = JSON.parse(xhr.responseText);

                    //keybase error returns HTTP 200 status, which is silly
                    if(result['status']['code'] !== 0){
                        return _this.get(keyId, callback, keyserverIndex + 1, result['status']['code']);
                    }

                    //no public key found
                    if(result['them'].length === 0){
                        return _this.get(keyId, callback, keyserverIndex + 1, 404);
                    }

                    //found the public key
                    var publicKey = result['them'][0]['public_keys']['primary']['bundle'];
                    return callback(publicKey, null);
                }
                else{
                    return _this.get(keyId, callback, keyserverIndex + 1, xhr.status);
                }
            };
            xhr.send();
        }

        //normal HKP keyserver
        else{
            //add the 0x prefix if absent
            if(keyId.indexOf("0x") !== 0){
                keyId = "0x" + keyId;
            }

            //request the public key from the hkp server
            var xhr = new XMLHttpRequest();
            xhr.open("get", ks + "pks/lookup?op=get&options=mr&search=" + keyId);
            xhr.onload = function(){
                if(xhr.status === 200){
                    return callback(xhr.responseText, null);
                }
                else{
                    return _this.get(keyId, callback, keyserverIndex + 1, xhr.status);
                }
            };
            xhr.send();
        }
    };

    /*
        Search for a public key in the keyservers.

        Arguments:

        * query - String to search for (usually an email, name, or username).

        * callback - Function that is called when finished. Two arguments are
                passed to the callback: results and errorCode. results is an
                Array of users that were returned by the search. errorCode is
                the error code (either HTTP status code or keybase error code)
                returned by the last keyserver that was tried. If any results
                were found, errorCode is null. If no results are found, results
                is null and errorCode is not null.

        Examples:

        //Search for diafygi's key id
        var hkp = new PublicKey();
        hkp.search("diafygi", function(results, errorCode){
            errorCode !== null ? console.log(errorCode) : console.log(results);
        });

        //Search for a nonexistent key id
        var hkp = new PublicKey();
        hkp.search("doesntexist123", function(results, errorCode){
            errorCode !== null ? console.log(errorCode) : console.log(results);
        });
    */
    PublicKey.prototype.search = function(query, callback, keyserverIndex, results, err){
        //default starting point is at the first keyserver
        if(keyserverIndex === undefined){
            keyserverIndex = 0;
        }

        //initialize the results array
        if(results === undefined){
            results = [];
        }

        //no more keyservers to check
        if(keyserverIndex >= this.keyservers.length){

            //return error if no results
            if(results.length === 0){
                return callback(null, err || 404);
            }

            //return results
            else{

                //merge duplicates
                var merged = {};
                for(var i = 0; i < results.length; i++){
                    var k = results[i];

                    //see if there's duplicate key ids to merge
                    if(merged[k['keyid']] !== undefined){

                        for(var u = 0; u < k['uids'].length; u++){
                            var has_this_uid = false;

                            for(var m = 0; m < merged[k['keyid']]['uids'].length; m++){
                                if(merged[k['keyid']]['uids'][m]['uid'] === k['uids'][u]){
                                    has_this_uid = true;
                                    break;
                                }
                            }

                            if(!has_this_uid){
                                merged[k['keyid']]['uids'].push(k['uids'][u])
                            }
                        }
                    }

                    //no duplicate found, so add it to the dict
                    else{
                        merged[k['keyid']] = k;
                    }
                }

                //return a list of the merged results in the same order
                var merged_list = [];
                for(var i = 0; i < results.length; i++){
                    var k = results[i];
                    if(merged[k['keyid']] !== undefined){
                        merged_list.push(merged[k['keyid']]);
                        delete(merged[k['keyid']]);
                    }
                }
                return callback(merged_list, null);
            }
        }

        //set the keyserver to try next
        var ks = this.keyservers[keyserverIndex];
        var _this = this;

        //special case for keybase
        if(ks.indexOf("https://keybase.io/") === 0){

            //request a list of users from keybase
            var xhr = new XMLHttpRequest();
            xhr.open("get", "https://keybase.io/_/api/1.0/user/autocomplete.json?q=" + encodeURIComponent(query));
            xhr.onload = function(){
                if(xhr.status === 200){
                    var kb_json = JSON.parse(xhr.responseText);

                    //keybase error returns HTTP 200 status, which is silly
                    if(kb_json['status']['code'] !== 0){
                        return _this.search(query, callback, keyserverIndex + 1, results, kb_json['status']['code']);
                    }

                    //no public key found
                    if(kb_json['completions'].length === 0){
                        return _this.search(query, callback, keyserverIndex + 1, results, 404);
                    }

                    //compose keybase user results
                    var kb_results = [];
                    for(var i = 0; i < kb_json['completions'].length; i++){
                        var user = kb_json['completions'][i]['components'];

                        //skip if no public key fingerprint
                        if(user['key_fingerprint'] === undefined){
                            continue;
                        }

                        //build keybase user result
                        var kb_result = {
                            "keyid": user['key_fingerprint']['val'].toUpperCase(),
                            "href": "https://keybase.io/" + user['username']['val'] + "/key.asc",
                            "info": "https://keybase.io/" + user['username']['val'],
                            "algo": user['key_fingerprint']['algo'],
                            "keylen": user['key_fingerprint']['nbits'],
                            "creationdate": null,
                            "expirationdate": null,
                            "revoked": false,
                            "disabled": false,
                            "expired": false,
                            "uids": [{
                                "uid": user['username']['val'] +
                                    " on Keybase <https://keybase.io/" +
                                    user['username']['val'] + ">",
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            }]
                        };

                        //add full name
                        if(user['full_name'] !== undefined){
                            kb_result['uids'].push({
                                "uid": "Full Name: " + user['full_name']['val'],
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            });
                        }

                        //add twitter
                        if(user['twitter'] !== undefined){
                            kb_result['uids'].push({
                                "uid": user['twitter']['val'] +
                                    " on Twitter <https://twitter.com/" +
                                    user['twitter']['val'] + ">",
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            });
                        }

                        //add github
                        if(user['github'] !== undefined){
                            kb_result['uids'].push({
                                "uid": user['github']['val'] +
                                    " on Github <https://github.com/" +
                                    user['github']['val'] + ">",
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            });
                        }

                        //add reddit
                        if(user['reddit'] !== undefined){
                            kb_result['uids'].push({
                                "uid": user['reddit']['val'] +
                                    " on Github <https://reddit.com/u/" +
                                    user['reddit']['val'] + ">",
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            });
                        }

                        //add hackernews
                        if(user['hackernews'] !== undefined){
                            kb_result['uids'].push({
                                "uid": user['hackernews']['val'] +
                                    " on Hacker News <https://news.ycombinator.com/user?id=" +
                                    user['hackernews']['val'] + ">",
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            });
                        }

                        //add coinbase
                        if(user['coinbase'] !== undefined){
                            kb_result['uids'].push({
                                "uid": user['coinbase']['val'] +
                                    " on Coinbase <https://www.coinbase.com/" +
                                    user['coinbase']['val'] + ">",
                                "creationdate": null,
                                "expirationdate": null,
                                "revoked": false,
                                "disabled": false,
                                "expired": false,
                            });
                        }

                        //add websites
                        if(user['websites'] !== undefined){
                            for(var w = 0; w < user['websites'].length; w++){
                                kb_result['uids'].push({
                                    "uid": "Owns " + user['websites'][w]['val'],
                                    "creationdate": null,
                                    "expirationdate": null,
                                    "revoked": false,
                                    "disabled": false,
                                    "expired": false,
                                });
                            }
                        }

                        kb_results.push(kb_result);
                    }

                    results = results.concat(kb_results);
                    return _this.search(query, callback, keyserverIndex + 1, results, null);
                }
                else{
                    return _this.search(query, callback, keyserverIndex + 1, results, xhr.status);
                }
            };
            xhr.send();
        }

        //normal HKP keyserver
        else{
            var xhr = new XMLHttpRequest();
            xhr.open("get", ks + "pks/lookup?op=index&options=mr&fingerprint=on&search=" + encodeURIComponent(query));
            xhr.onload = function(){
                if(xhr.status === 200){
                    var ks_results = [];
                    var raw = xhr.responseText.split("\n");
                    var curKey = undefined;
                    for(var i = 0; i < raw.length; i++){
                        var line = raw[i].trim();

                        //pub:<keyid>:<algo>:<keylen>:<creationdate>:<expirationdate>:<flags>
                        if(line.indexOf("pub:") == 0){
                            if(curKey !== undefined){
                                ks_results.push(curKey);
                            }
                            var vals = line.split(":");
                            curKey = {
                                "keyid": vals[1],
                                "href": ks + "pks/lookup?op=get&options=mr&search=0x" + vals[1],
                                "info": ks + "pks/lookup?op=vindex&search=0x" + vals[1],
                                "algo": vals[2] === "" ? null : parseInt(vals[2]),
                                "keylen": vals[3] === "" ? null : parseInt(vals[3]),
                                "creationdate": vals[4] === "" ? null : parseInt(vals[4]),
                                "expirationdate": vals[5] === "" ? null : parseInt(vals[5]),
                                "revoked": vals[6].indexOf("r") !== -1,
                                "disabled": vals[6].indexOf("d") !== -1,
                                "expired": vals[6].indexOf("e") !== -1,
                                "uids": [],
                            }
                        }

                        //uid:<escaped uid string>:<creationdate>:<expirationdate>:<flags>
                        if(line.indexOf("uid:") == 0){
                            var vals = line.split(":");
                            curKey['uids'].push({
                                "uid": decodeURIComponent(vals[1]),
                                "creationdate": vals[2] === "" ? null : parseInt(vals[2]),
                                "expirationdate": vals[3] === "" ? null : parseInt(vals[3]),
                                "revoked": vals[4].indexOf("r") !== -1,
                                "disabled": vals[4].indexOf("d") !== -1,
                                "expired": vals[4].indexOf("e") !== -1,
                            });
                        }
                    }
                    ks_results.push(curKey);

                    results = results.concat(ks_results);
                    return _this.search(query, callback, keyserverIndex + 1, results, null);
                }
                else{
                    return _this.search(query, callback, keyserverIndex + 1, results, xhr.status);
                }
            };
            xhr.send();
        }
    };

    context.PublicKey = PublicKey;
})(typeof exports === "undefined" ? this : exports);
js/editor.min.js000064400000034647151727150220007606 0ustar00/**
 * Roundcube editor js library
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Eric Stadtherr <estadtherr@gmail.com>
 * @author Aleksander Machniak <alec@alec.pl>
 */
function rcube_text_editor(e,t){var o=this,l=$("#"+t),i=location.href.replace(/[?#].*$/,"").replace(/\/$/,""),r={selector:"#"+(l.is(".mce_editor")?t:"fake-editor-id"),readonly:l.is("[readonly],[disabled]"),cache_suffix:"s=5080200",theme:"silver",language:e.lang,content_css:rcmail.assets_path(e.content_css),content_style:e.content_style,menubar:!1,statusbar:!1,toolbar_drawer:"sliding",toolbar:"bold italic underline | alignleft aligncenter alignright alignjustify | fontselect fontsizeselect | forecolor backcolor",extended_valid_elements:"font[face|size|color|style],span[id|class|align|style]",fontsize_formats:"8pt 9pt 10pt 11pt 12pt 14pt 18pt 24pt 36pt",valid_children:"+body[style],+blockquote[style],+div[style]",relative_urls:!1,remove_script_host:!1,convert_urls:!1,image_description:!1,paste_webkit_styles:"color font-size font-family font-weight background-color",automatic_uploads:!1,paste_data_images:!0,browser_spellcheck:!0,contextmenu:"spellchecker",anchor_bottom:!1,anchor_top:!1,file_picker_types:"image media",file_picker_callback:function(e,t,i){o.file_picker_callback(e,t,i)},min_height:"identity"==e.mode?100:400,deprecation_warnings:!1};this.spellcheck_observer=function(){},e.spellchecker&&(this.spellchecker=e.spellchecker,e.spellcheck_observer)&&(this.spellchecker.spelling_state_observer=this.spellcheck_observer=e.spellcheck_observer),tinymce.registered_request_token||(tinymce.registered_request_token=!0,tinymce.util.XHR.on("beforeSend",function(e){e.xhr.setRequestHeader("X-Roundcube-Request",rcmail.env.request_token),e.settings&&e.settings.data&&(e.settings.data=e.settings.data.replace(/^(method=[a-zA-Z]+&lang=)([^&]+)/,"$1"+rcmail.env.spell_lang))})),"identity"==e.mode||"response"==e.mode?(r.toolbar+=" | charmap hr link unlink image code $extra",$.extend(r,{plugins:"autolink charmap code hr image link paste tabfocus",file_picker_types:"image"})):(r.toolbar+=" | bullist numlist outdent indent ltr rtl blockquote | link unlink table | $extra charmap image media | code searchreplace undo redo",$.extend(r,{plugins:"autolink charmap code directionality link lists image media nonbreaking paste table tabfocus searchreplace spellchecker",spellchecker_rpc_url:i+"/?_task=utils&_action=spell_html&_remote=1",spellchecker_language:rcmail.env.spell_lang})),$.each(e.extra_plugins||[],function(){r.plugins.indexOf(this)<0&&(r.plugins=r.plugins+" "+this)}),$.each(e.extra_buttons||[],function(){r.toolbar.indexOf(this)<0&&(r.toolbar=r.toolbar.replace("$extra","$extra "+this))}),$.each(e.disabled_plugins||[],function(){r.plugins=r.plugins.replace(this,"")}),$.each(e.disabled_buttons||[],function(){r.toolbar=r.toolbar.replace(this,"")}),r.toolbar=r.toolbar.replace("$extra","").replace(/\|\s+\|/g,"|"),window.rcmail_editor_settings&&$.extend(r,window.rcmail_editor_settings),r.setup=function(t){t.on("init",function(){o.init_callback(t)}),t.on("SpellcheckStart SpellcheckEnd",function(e){o.spellcheck_active="spellcheckstart"==e.type,o.spellcheck_observer()}),t.on("keypress",function(){rcmail.compose_type_activity++}),t.on("click",function(e){var t=$(e.target).closest("a");if(t.length&&e.shiftKey)return window.open(t.get(0).href,"_blank"),!1}),t.on("focus blur",function(e){$(t.getContainer()).toggleClass("focused")}),r.setup_callback&&r.setup_callback(t)},rcmail.triggerEvent("editor-init",{config:r,ref:o,id:t}),this.id=t,this.editor=null,tinymce.init(r),this.init_callback=function(e){this.editor=e;var t=l.data("html-editor-content-element");if(t&&(i=$("#"+t).val())&&(e.setContent(i),$("#"+t).remove()),"compose"==rcmail.env.action){var i=$("#"+this.id),t=$("div.tox-toolbar__group",i.parent()).first().height();if(200<t||t>i.height())return setTimeout(function(){o.init_callback(e)},300);var t=rcube_find_object("_from"),n=rcmail.env.compose_focus_elem;t&&"select-one"==t.type&&(rcmail.env.identities_initialized||rcmail.change_identity(t),n)&&n.id!=this.id&&"BODY"!=n.nodeName&&(window.focus(),n.focus(),rcmail.env.compose_focus_elem=null)}rcmail.triggerEvent("editor-load",{config:r,ref:this}),this.tabindex(this.force_focus||n&&n.id==this.id),$(window).resize()},this.tabindex=function(e){var i,t,n;"mail"==rcmail.env.task&&this.editor&&(n=this.editor.getElement(),t=this.editor.getContentAreaContainer().childNodes[0],n&&t&&(t.tabIndex=n.tabIndex),0<n.tabIndex&&(i=null,t=[":prev",":next"],n=tinymce.DOM.select("*[tabindex="+n.tabIndex+"]:not(iframe)"),tinymce.each(n,function(e,t){if(e.id==o.id)return i=t,!1}),null!==i)&&(n[i-1]&&n[i-1].id&&(t[0]=n[i-1].id),n[i+1]&&n[i+1].id&&(t[1]=n[i+1].id),this.editor.settings.tabfocus_elements=t.join(",")),bw.mz)&&bw.vendver<25&&$(this.editor.getBody()).prop("contenteditable",!1).prop("contenteditable",!0),e&&this.focus()},this.focus=function(){$(this.editor||"#"+this.id).focus(),this.force_focus=!1},this.is_html=function(){return!!this.editor},this.toggle=function(e,t){var i,n,l,r="",s=$("#"+this.id),c=rcmail.env.identity?rcmail.env.signatures[rcmail.env.identity]:null,a=c&&c.text&&1<c.text.length;return this.spellcheck_stop(),e?(l=s.val(),a&&(l=(l=l.replace(/\r\n/,"\n")).replace(c.text.replace(/\r\n/,"\n"),r)),e=function(e){a&&(e=e.replace(r,'<div id="_rc_sig">'+c.html+"</div>")),o.force_focus=!0,s.val(e),tinymce.execCommand("mceAddEditor",!1,o.id)},n=t?(e(l),!0):rcmail.plain2html(l,e)):!this.editor||(a&&(i=(i=this.editor.dom.get("_rc_sig"))&&i.innerHTML,this.editor.dom.setHTML("_rc_sig",r)),l=this.editor.getContent(),e=function(e){tinymce.execCommand("mceRemoveEditor",!1,o.id),o.editor=null,a&&(e=e.replace(r,"\n"+c.text)),s.val(e).focus().trigger("input"),rcmail.set_caret_pos(s.get(0),0)},n=t?(e(s.val()),!0):rcmail.html2plain(l,e))||!i||this.editor.dom.setHTML("_rc_sig",i),n},this.spellcheck_start=function(){this.editor?(tinymce.execCommand("mceSpellCheck",!0),this.spellcheck_observer()):this.spellchecker&&this.spellchecker.spellCheck&&this.spellchecker.spellCheck()},this.spellcheck_stop=function(){var e=this.editor;e?e.plugins&&e.plugins.spellchecker&&this.spellcheck_active&&(e.execCommand("mceSpellCheck",!1),this.spellcheck_observer()):(e=this.spellchecker)&&e.state&&"ready"!=e.state&&"no_error_found"!=e.state&&$(e.spell_span).trigger("click")},this.spellcheck_state=function(){var e;return this.editor?this.spellcheck_active:(e=this.spellchecker)&&e.state?"ready"!=e.state&&"no_error_found"!=e.state:void 0},this.spellcheck_resume=function(e){var t=this.editor;t?t.plugins.spellchecker.markErrors(e):(t=this.spellchecker)&&(t.prepare(!1,!0),t.processData(e))},this.get_language=function(){return rcmail.env.spell_lang},this.set_language=function(e){var t=this.editor;t&&(t.settings.spellchecker_language=e),(t=this.spellchecker)&&t.setCurrentLanguage(e),rcmail.env.spell_lang=e},this.replace=function(e){var t,i,n,l=this.editor;if(!e)return!1;l?(l.getWin().focus(),t="object"==$.type(e)&&"html"in e?(e=e.html,"html"):("object"==$.type(e)&&(e=e.text||""),e=rcmail.quote_html(e).replace(/\r?\n/g,"<br/>"),"text"),l.selection.setContent(e,{format:t})):(l=rcube_find_object(this.id))&&(t=rcmail.get_input_selection(l),i=(n=l.value).substring(0,t.start),n=n.substring(t.end,n.length),"object"==$.type(e)&&(e=e.text||""),l.value=i+e+n,rcmail.set_caret_pos(l,t.start+e.length),l.focus())},this.set_content=function(e){this.editor?(this.editor.setContent(e),this.editor.getWin().focus()):(ed=rcube_find_object(this.id))&&$(ed).val(e).focus()},this.get_content=function(e){var t=this.editor,i="",n=!1,l={refresh:!0,selection:!1,nosig:!1,format:"html"};return(e=e?$.extend(l,e):l).refresh&&this.spellcheck_stop(),t?(i=e.selection?t.selection.getContent({format:e.format}):i)||(i=t.getContent({format:e.format}),n="text"==e.format):(t=rcube_find_object(this.id))&&!(i=e.selection?rcmail.get_input_selection(t).text:i)&&(i=t.value,n=!0),i=n&&e.nosig&&0<(l=i.indexOf("-- \n"))?i.substring(0,l):i},this.change_signature=function(e,t){var i,n,l,r,s,c=-1,a=$("#"+this.id),o=a.val(),d=rcmail.env.identity;this.editor?t&&rcmail.env.signatures?((s=this.editor.dom.get("_rc_sig"))||(l=this.editor.getBody(),s=$('<div id="_rc_sig"></div>').get(0),rcmail.env.top_posting&&!rcmail.env.sig_below&&rcmail.env.compose_mode&&(1<l.childNodes.length||$(l).text())?(this.editor.getWin().focus(),r=this.editor.selection.getNode(),$(s).insertBefore("BODY"==r.nodeName?l.firstChild:r.nextSibling),$("<p>").append($("<br>")).insertBefore(s)):(l.appendChild(s),i=rcmail.env.top_posting&&rcmail.env.compose_mode?l.firstChild:$(s).prev())),s.innerHTML=rcmail.env.signatures[e]?rcmail.env.signatures[e].html:""):rcmail.env.top_posting||(i=$(this.editor.getBody()).children().last()):(t&&d&&rcmail.env.signatures&&rcmail.env.signatures[d]&&(d=(d=rcmail.env.signatures[d].text).replace(/\r\n/g,"\n"),0<=(c=rcmail.env.top_posting?o.indexOf(d):o.lastIndexOf(d)))&&(o=o.substring(0,c)+o.substring(c+d.length,o.length)),t&&rcmail.env.signatures&&rcmail.env.signatures[e]?(d=(d=rcmail.env.signatures[e].text).replace(/\r\n/g,"\n"),0<=c?(o=o.substring(0,c)+d+o.substring(c,o.length),n=c-1):o&&rcmail.env.compose_mode?rcmail.env.top_posting&&!rcmail.env.sig_below?n=(pos=rcmail.get_caret_pos(a.get(0)))?(o=o.substring(0,pos)+"\n"+d+"\n\n"+o.substring(pos,o.length),pos):(o="\n\n"+d+"\n\n"+o.replace(/^[\r\n]+/,""),0):(o=o.replace(/[\r\n]+$/,""),n=!rcmail.env.top_posting&&o.length?o.length+1:0,o+="\n\n"+d):(n=o.length,o+="\n\n"+d)):n=rcmail.env.top_posting?0:o.length,a.val(o),rcmail.set_caret_pos(a.get(0),n)),this.editor&&i&&i.length&&(this.editor.selection.setCursorLocation(i.get(0)),this.editor.getWin().scroll(0,i.offset().top))},this.save=function(){this.editor&&this.editor.save()},this.focus=function(){(this.editor||rcube_find_object(this.id)).focus()},this.file_picker_callback=function(e,t,i){var n,l,r,s,c=[],i=i.filetype,a=$(".upload-form").clone();for(n in this.editor.windowManager.open({title:rcmail.get_label("select"+i),body:{type:"panel",items:[{type:"htmlpanel",html:'<div id="image-selector" class="image-selector file-upload"><ul id="image-selector-list" class="attachmentslist"></ul></div>'}]},buttons:[{type:"cancel",text:rcmail.get_label("close"),onclick:function(){o.file_picker_close()}}]}),rcmail.env.file_picker_callback=e,rcmail.env.file_picker_type=i,e=$("#image-selector"),a.length?a.find("button,a.button").slice(1).remove():a=this.file_upload_form(rcmail.gui_objects.uploadform),(l=e.prepend(a).find("button,a.button").text(rcmail.get_label("add"+i)).focus()).is(".btn")||l.addClass("tox-button"),rcmail.env.attachments)(r=o.file_picker_entry(n,rcmail.env.attachments[n]))&&c.push(r);s=e.parents(".tox-dialog").find("button").last(),c=$("#image-selector-list").append(c).on("keydown","li",function(e){if(9==e.which)return rcube_event.get_modifier(e)==SHIFT_KEY?$(this).prev().focus().length||l.focus():$(this).next().focus().length||s.focus(),!1}),l.keydown(function(e){if(9==e.which)return rcube_event.get_modifier(e)!=SHIFT_KEY&&c.find("li").first().focus().length||s.focus(),!1;13==e.which&&this.click()}),s.keydown(function(e){if(9==e.which)return rcube_event.get_modifier(e)==SHIFT_KEY&&c.find("li").last().focus().length||l.focus(),!1}),window.FormData&&(rcmail.env.filedrop||(rcmail.env.filedrop={}),rcmail.gui_objects.filedrop&&(rcmail.env.old_file_drop=rcmail.gui_objects.filedrop),rcmail.gui_objects.filedrop=$("#image-selector"),rcmail.gui_objects.filedrop.addClass("droptarget").on("dragover dragleave",function(e){e.preventDefault(),e.stopPropagation(),$(this)["dragover"==e.type?"addClass":"removeClass"]("hover")}).get(0).addEventListener("drop",function(e){return rcmail.file_dropped(e)},!1)),rcmail.env["file_dialog_event_"+i]||(rcmail.env["file_dialog_event+"+i]=!0,rcmail.addEventListener("fileuploaded",function(e){(e=o.file_picker_entry(e.name,e.attachment))&&(c.prepend(e),e.focus())}))},this.file_picker_close=function(e){this.editor.windowManager.close(),e&&rcmail.env.file_picker_callback(e),rcmail.env.old_file_drop&&(rcmail.gui_objects.filedrop=rcmail.env.old_file_drop)},this.file_picker_entry=function(e,t){if(t.complete&&t.mimetype){var i,n,l;switch(rcmail.file_upload_id&&rcmail.set_busy(!1,null,rcmail.file_upload_id),rcmail.env.file_picker_type){case"image":i=/^image\//i;break;case"media":i=/^video\//i,n=rcmail.assets_path("program/resources/tinymce/video.png");break;default:return}return i.test(t.mimetype)?(e=rcmail.env.comm_path+"&_from="+rcmail.env.action+(rcmail.env.compose_id?"&_id="+rcmail.env.compose_id+"&_action=display-attachment":"&_action=upload-display")+"&_file="+e,l=$("<img>").attr({title:t.name,src:n||e+"&_thumbnail=1"}),$("<li>").attr({tabindex:0}).data("url",e).append($('<span class="img">').append(l)).append($('<span class="name">').text(t.name)).click(function(){o.file_picker_close($(this).data("url"))}).keydown(function(e){13==e.which&&o.file_picker_close($(this).data("url"))})):void 0}},this.file_upload_form=function(e){var t=e?$(e).find(".hint").text():"",i=$('<form id="imageuploadform">').attr({method:"post",enctype:"multipart/form-data"});return file=$("<input>").attr({name:"_file[]",type:"file",multiple:!0,style:"opacity:0;height:1px;width:1px"}).change(function(){rcmail.upload_file(i,"upload")}),wrapper=$('<div class="upload-form">').append($("<button>").attr({class:"btn btn-secondary attach",href:"#",onclick:"rcmail.upload_input('imageuploadform')"})),t&&wrapper.prepend($('<div class="hint">').text(t)),e&&(file.attr("name",$('input[type="file"]',e).attr("name")),i.attr("action",$(e).attr("action"))),i.append(file).append($("<input>").attr({type:"hidden",name:"_token",value:rcmail.env.request_token})),wrapper.append(i)}}
js/list.min.js000064400000070005151727150220007257 0ustar00/**
 * Roundcube List Widget
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @author Charles McNulty <charles@charlesmcnulty.com>
 *
 * @requires jquery.js, common.js
 */
function rcube_list_widget(t,e){if(this.ENTER_KEY=13,this.DELETE_KEY=46,this.BACKSPACE_KEY=8,this.list=t||null,this.tagname=this.list?this.list.nodeName.toLowerCase():"table",this.id_regexp=/^rcmrow([a-z0-9\-_=\+\/]+)/i,this.rows={},this.selection=[],this.rowcount=0,this.colcount=0,this.subject_col=0,this.modkey=0,this.multiselect=!1,this.multiexpand=!1,this.multi_selecting=!1,this.draggable=!1,this.column_movable=!1,this.keyboard=!1,this.toggleselect=!1,this.aria_listbox=!1,this.parent_focus=!0,this.checkbox_selection=!1,this.drag_active=!1,this.col_drag_active=!1,this.column_fixed=null,this.last_selected=null,this.shift_start=null,this.focused=!1,this.drag_mouse_start=null,this.dblclick_time=500,this.row_init=function(){},this.touch_start_time=0,this.touch_event_time=500,e&&"object"==typeof e)for(var i in e)this[i]=e[i];rcube_list_widget._instances.push(this)}rcube_list_widget.prototype={init:function(){"table"==this.tagname&&this.list&&this.list.tBodies[0]?(this.thead=this.list.tHead,this.tbody=this.list.tBodies[0]):"table"!=this.tagname&&this.list&&(this.tbody=this.list),"listbox"==$(this.list).attr("role")&&(this.aria_listbox=!0,this.multiselect)&&$(this.list).attr("aria-multiselectable","true");var e=this;if(this.tbody){this.rows={},this.rowcount=0;for(var t=this.tbody.childNodes,i=0,s=t.length;i<s;i++)1==t[i].nodeType&&(this.rowcount+=this.init_row(t[i])?1:0);this.init_header(),this.frame=this.list.parentNode,this.keyboard&&(rcube_event.add_listener({event:"keydown",object:this,method:"key_press"}),$(this.list).attr("tabindex","0").on("focus",function(t){e.focus(t)}))}return this.parent_focus&&(this.list.parentNode.onclick=function(t){e.focus()}),rcmail.triggerEvent("initlist",{obj:this.list}),this},init_row:function(t){var i,e,s;if(t.uid=this.get_row_uid(t),t&&t.uid)return e=t.uid,(i=this).rows[e]={uid:e,id:t.id,obj:t},$(t).data("uid",e).mousedown(function(t){return i.drag_row(t,this.uid)}).mouseup(function(t){return!(1==t.which&&!i.drag_active&&!$(t.currentTarget).is(".ui-droppable-active"))||i.click_row(t,this.uid)}),(bw.ie||bw.edge&&bw.vendver<75)&&bw.pointer?$(t).on("pointerdown",function(t){if("touch"==t.pointerType)return i.touch_start_time=(new Date).getTime(),!1}).on("pointerup",function(t){if("touch"==t.pointerType&&(new Date).getTime()-i.touch_start_time<=i.touch_event_time)return i.drag_row(t,this.uid),i.click_row(t,this.uid)}):bw.touch&&t.addEventListener&&(t.addEventListener("touchstart",function(t){1==t.touches.length&&(i.touchmoved=!1,i.drag_row(rcube_event.touchevent(t.touches[0]),this.uid),i.touch_start_time=(new Date).getTime())},!1),t.addEventListener("touchend",function(t){var e;1==t.changedTouches.length&&(e=(new Date).getTime()-i.touch_start_time,!i.touchmoved)&&e<=i.touch_event_time&&!i.click_row(rcube_event.touchevent(t.changedTouches[0]),this.uid)&&t.preventDefault()},!1),t.addEventListener("touchmove",function(t){1==t.changedTouches.length&&(i.touchmoved=!0,i.drag_active)&&t.preventDefault()},!1)),this.aria_listbox&&(s="l:"+t.id,$(t).attr("role","option").attr("aria-labelledby",s).find(this.col_tagname()).eq(this.subject_column()).attr("id",s)),document.all&&(t.onselectstart=function(){return!1}),this.row_init(this.rows[e]),this.triggerEvent("initrow",this.rows[e]),!0},init_header:function(){if(this.thead){this.colcount=0,this.fixed_header?($(this.list.tHead).replaceWith($(this.fixed_header).find("thead").clone()),$(this.list.tHead).find("th,td").attr("style","").find("a").attr("tabindex","-1")):!bw.touch&&0<=this.list.className.indexOf("fixedheader")&&this.init_fixed_header();var t,e=this;if(this.column_movable&&this.thead&&this.thead.rows)for(t=0;t<this.thead.rows[0].cells.length;t++)this.column_fixed!=t&&(this.thead.rows[0].cells[t].onmousedown=function(t){return e.drag_column(t,this)},this.colcount++)}},container:window,init_fixed_header:function(){var e,t=$(this.list.tHead).clone();this.fixed_header?$(this.fixed_header).find("thead").replaceWith(t):(this.fixed_header=$("<table>").attr("id",this.list.id+"-fixedcopy").attr("class",this.list.className+" fixedcopy").attr("role","presentation").css({position:"fixed"}).append(t).append("<tbody></tbody>"),$(this.list).before(this.fixed_header),e=this,$(window).on("resize",function(){e.resize()}),$(this.container).on("scroll",function(){var t=$(this);e.fixed_header.css({marginLeft:-t.scrollLeft()+"px",marginTop:-t.scrollTop()+"px"})})),$(this.list.tHead).find("a.sortcol").attr("tabindex","-1"),t.find("a.sortcol").attr("tabindex","0"),this.thead=t.get(0),this.resize()},resize:function(){var e;this.fixed_header&&(e=[],$(this.tbody).parent().find("thead th,thead td").each(function(t){e[t]=$(this).width()}),$(this.thead).parent().width($(this.tbody).parent().width()),$(this.thead).find("th,td").each(function(t){$(this).width(e[t])}),$(window).scroll())},clear:function(t){var e;"table"==this.tagname?(e=document.createElement("tbody"),this.list.insertBefore(e,this.tbody),this.list.removeChild(this.list.tBodies[1]),this.tbody=e):$(this.row_tagname()+":not(.thead)",this.tbody).remove(),this.rows={},this.rowcount=0,this.last_selected=null,t&&this.clear_selection(),this.frame&&(this.frame.scrollTop=0),this.resize()},remove_row:function(t,e){var i=this,s=this.rows[t]?this.rows[t].obj:null;s&&(s.style.display="none",e&&this.select_next(t),delete this.rows[t],this.rowcount--,clearTimeout(this.resize_timeout),this.resize_timeout=setTimeout(function(){i.resize()},50))},insert_row:function(t,e){var i=this,s=this.tbody;if(void 0===t.nodeName){var o,r,n,h,c=document.createElement(this.row_tagname());for(t.id&&(c.id=t.id),t.uid&&(c.uid=t.uid),t.className&&(c.className=t.className),t.style&&$.extend(c.style,t.style),o=0;t.cols&&o<t.cols.length;o++){if(!(n=(h=t.cols[o]).dom))for(r in n=document.createElement(this.col_tagname()),h.className&&(n.className=h.className),h.innerHTML&&(n.innerHTML=h.innerHTML),h.events)n["on"+r]=h.events[r];c.appendChild(n)}t=c}this.checkbox_selection&&this.insert_checkbox(t),e&&s.childNodes.length?s.insertBefore(t,"object"==typeof e&&e.parentNode==s?e:s.firstChild):s.appendChild(t),this.init_row(t),this.rowcount++,clearTimeout(this.resize_timeout),this.resize_timeout=setTimeout(function(){i.resize()},50)},update_row:function(t,e,i,s){var o=this.rows[t];if(!o)return!1;for(var r=o.obj,n=0;e&&n<e.length;n++)this.get_cell(r,n).html(e[n]);i&&(delete this.rows[t],r.uid=i,r.id="rcmrow"+i,this.init_row(r),s&&(this.selection[0]=i),this.last_selected==t)&&(this.last_selected=i)},insert_checkbox:function(e,t){var i,s=this,t=document.createElement(this.col_tagname(t)),o=document.createElement("input");o.type="checkbox",o.tabIndex=-1,o.onchange=function(t){s.select_row(e.uid,i||CONTROL_KEY,!0),t.stopPropagation(),i=null},o.onmousedown=function(t){i=rcube_event.get_modifier(t)},t.className="selection",t.onclick=function(t){$(t.target).is("input")||(i=rcube_event.get_modifier(t),$(o).prop("checked",!o.checked).change()),t.stopPropagation()},t.appendChild(o),e.insertBefore(t,e.firstChild)},enable_checkbox_selection:function(){this.checkbox_selection=!0;var t,e,i,s,o=this.row_tagname().toUpperCase();if(this.thead)for(t=0,e=(s=this.thead.childNodes).length;t<e;t++)if(s[t].nodeName==o&&(i=s[t].firstChild)){if("selection"==i.className)break;this.insert_checkbox(s[t],"thead")}for(t=0,e=(s=this.tbody.childNodes).length;t<e;t++)if(s[t].nodeName==o&&(i=s[t].firstChild)){if("selection"==i.className)break;this.insert_checkbox(s[t],"tbody")}},focus:function(t){this.focused||(this.focused=!0,t&&rcube_event.cancel(t),t=null,(t=this.last_selected&&this.rows[this.last_selected]?$(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_column()).attr("tabindex","0"):t)&&t.length?this.focus_noscroll(t):($("iframe,:focus:not(body)").blur(),window.focus()),$(this.list).addClass("focus").removeAttr("tabindex"),this.last_selected)||this.select_first(CONTROL_KEY)},blur:function(t){this.focused=!1;var e=this;setTimeout(function(){$(e.list).attr("tabindex","0")},20),this.last_selected&&this.rows[this.last_selected]&&$(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_column()).removeAttr("tabindex"),$(this.list).removeClass("focus")},focus_noscroll:function(t){var e=this.frame.scrollTop||this.frame.scrollY;t.focus(),this.frame.scrollTop=e},hide_column:function(t,e){e=e?"addClass":"removeClass";this.fixed_header&&$(this.row_tagname()+" "+this.col_tagname()+"."+t,this.fixed_header)[e]("hidden"),$(this.row_tagname()+" "+this.col_tagname()+"."+t,this.list)[e]("hidden")},drag_column:function(t,e){if(1<this.colcount){this.drag_start=!0,this.drag_mouse_start=rcube_event.get_mouse_pos(t),rcube_event.add_listener({event:"mousemove",object:this,method:"column_drag_mouse_move"}),rcube_event.add_listener({event:"mouseup",object:this,method:"column_drag_mouse_up"}),this.add_dragfix();for(var i=0;i<this.thead.rows[0].cells.length;i++)if(e==this.thead.rows[0].cells[i]){this.selected_column=i;break}}return!1},drag_row:function(t,e){var i;return!this.is_event_target(t)||0!=rcube_event.get_button(t)||(this.in_selection_before=!!(t&&t.istouch||this.in_selection(e))&&e,this.in_selection_before||(i=rcube_event.get_modifier(t),this.select_row(e,i,!0)),this.draggable&&this.selection.length&&this.in_selection(e)&&(this.drag_start=!0,this.drag_mouse_start=rcube_event.get_mouse_pos(t),rcube_event.add_listener({event:"mousemove",object:this,method:"drag_mouse_move"}),rcube_event.add_listener({event:"mouseup",object:this,method:"drag_mouse_up"}),bw.touch&&(rcube_event.add_listener({event:"touchmove",object:this,method:"drag_mouse_move"}),rcube_event.add_listener({event:"touchend",object:this,method:"drag_mouse_up"})),this.add_dragfix(),this.focus()),!1)},click_row:function(t,e){if(e&&this.rows[e]){if(!this.is_event_target(t))return!0;var i=(new Date).getTime(),s=i-this.rows[e].clicked<this.dblclick_time;this.drag_active||s||this.in_selection_before!=e||this.select_row(e,rcube_event.get_modifier(t),!0),this.drag_start=!1,this.in_selection_before=!1,this.rowcount&&s&&this.in_selection(e)?(this.triggerEvent("dblclick"),i=0):this.triggerEvent("click"),this.drag_active||(this.del_dragfix(),rcube_event.cancel(t)),this.rows[e].clicked=i,this.focus()}return!1},is_event_target:function(t){var t=rcube_event.get_target(t),e=t.tagName.toLowerCase();return!(t&&("input"==e||"img"==e||"a"!=e&&t.onclick||$(t).data("action-link")))},find_root:function(t){var e=this.rows[t];return e&&e.parent_uid?this.find_root(e.parent_uid):t},expand_row:function(t,e){e=this.rows[e],rcube_event.get_target(t),t=rcube_event.get_modifier(t),t=(e.expanded?"collapse":"expand")+(t==CONTROL_KEY||this.multiexpand?"_all":"");e.clicked=0,this[t](e)},collapse:function(t){var e,i=t.depth,s=t?t.obj.nextSibling:null;for(t.expanded=!1,this.update_expando(t.id),this.triggerEvent("expandcollapse",{uid:t.uid,expanded:t.expanded,obj:t.obj});s;){if(1==s.nodeType){if((e=this.rows[s.uid])&&e.depth<=i)break;$(s).css("display","none"),e.expanded&&(e.expanded=!1,this.triggerEvent("expandcollapse",{uid:e.uid,expanded:e.expanded,obj:s}))}s=s.nextSibling}return this.resize(),this.triggerEvent("listupdate"),!1},expand:function(t){var e,i,s,o,r;for(t?(t.expanded=!0,o=t.depth,s=t.obj.nextSibling,this.update_expando(t.id,!0),this.triggerEvent("expandcollapse",{uid:t.uid,expanded:t.expanded,obj:t.obj})):(s=this.tbody.firstChild,r=o=0);s;){if(1==s.nodeType&&(e=this.rows[s.uid])){if(t&&(!e.depth||e.depth<=o))break;if(e.parent_uid)if((i=this.rows[e.parent_uid])&&i.expanded)(t&&i==t||r>=i.depth-1)&&(r=i.depth,$(s).css("display",""),e.expanded=!0,this.update_expando(e.id,!0),this.triggerEvent("expandcollapse",{uid:e.uid,expanded:e.expanded,obj:s}));else if(t&&(!i||i.depth<=o))break}s=s.nextSibling}return this.resize(),this.triggerEvent("listupdate"),!1},collapse_all:function(t){var e,i,s;if(t){if(t.expanded=!1,e=t.depth,i=t.obj.nextSibling,this.update_expando(t.id),this.triggerEvent("expandcollapse",{uid:t.uid,expanded:t.expanded,obj:t.obj}),e&&this.multiexpand)return!1}else i=this.tbody.firstChild,e=0;for(;i;){if(1==i.nodeType&&(s=this.rows[i.uid])){if(t&&(!s.depth||s.depth<=e))break;(t||s.depth)&&$(i).css("display","none"),s.expanded&&(s.expanded=!1,s.has_children)&&(this.update_expando(s.id),this.triggerEvent("expandcollapse",{uid:s.uid,expanded:s.expanded,obj:i}))}i=i.nextSibling}return this.resize(),this.triggerEvent("listupdate"),!1},expand_all:function(t){var e,i,s;for(t?(t.expanded=!0,e=t.depth,i=t.obj.nextSibling,this.update_expando(t.id,!0),this.triggerEvent("expandcollapse",{uid:t.uid,expanded:t.expanded,obj:t.obj})):(i=this.tbody.firstChild,e=0);i;){if(1==i.nodeType&&(s=this.rows[i.uid])){if(t&&s.depth<=e)break;$(i).css("display",""),s.expanded||(s.expanded=!0,s.has_children&&(this.update_expando(s.id,!0),this.triggerEvent("expandcollapse",{uid:s.uid,expanded:s.expanded,obj:i})))}i=i.nextSibling}return this.resize(),this.triggerEvent("listupdate"),!1},update_expando:function(t,e){t=document.getElementById("rcmexpando"+t);t&&(t.className=e?"expanded":"collapsed")},get_row_uid:function(t){var e;if(t)return t.uid||((e=$(t).data("uid"))?t.uid=e:String(t.id).match(this.id_regexp)&&(t.uid=RegExp.$1)),t.uid},get_next_row:function(t){if(!this.rowcount)return!1;for(var t=this.rows[t||this.last_selected],e=t?t.obj.nextSibling:null;e&&(1!=e.nodeType||"none"==e.style.display);)e=e.nextSibling;return e},get_prev_row:function(t){if(!this.rowcount)return!1;for(var t=this.rows[t||this.last_selected],e=t?t.obj.previousSibling:null;e&&(1!=e.nodeType||"none"==e.style.display);)e=e.previousSibling;return e},get_first_row:function(){if(this.rowcount)for(var t,e=this.tbody.childNodes,i=0;i<e.length;i++)if(e[i].id&&(t=this.get_row_uid(e[i]))&&this.rows[t])return t;return null},get_last_row:function(){if(this.rowcount)for(var t,e=this.tbody.childNodes,i=e.length-1;0<=i;i--)if(e[i].id&&(t=this.get_row_uid(e[i]))&&this.rows[t])return t;return null},get_next:function(){var t;if(t=this.get_next_row())return t.uid},get_prev:function(){var t;if(t=this.get_prev_row())return t.uid},row_tagname:function(){var t={table:"tr",ul:"li","*":"div"};return t[this.tagname]||t["*"]},col_tagname:function(t){var e={table:"td",thead:"th",tbody:"td","*":"span"};return e[t||this.tagname]||e["*"]},get_cell:function(t,e){return $(this.col_tagname(),t).eq(e+(this.checkbox_selection?1:0))},select_row:function(t,e,i){var s=this.selection.join(","),o=this.in_selection(t);if(!this.multiselect&&i&&(e=0),this.shift_start||(this.shift_start=t),e){switch(e){case SHIFT_KEY:this.shift_select(t,!1);break;case CONTROL_KEY:i&&(this.shift_start=t,this.highlight_row(t,!0));break;case CONTROL_SHIFT_KEY:this.shift_select(t,!0);break;default:this.highlight_row(t,!1)}this.multi_selecting=!0}else this.shift_start=t,this.highlight_row(t,!1),this.multi_selecting=!1;this.last_selected&&this.rows[this.last_selected]&&$(this.rows[this.last_selected].obj).removeClass("focused").find(this.col_tagname()).eq(this.subject_column()).removeAttr("tabindex"),this.toggleselect&&o&&!e?this.clear_selection():this.selection.join(",")!=s&&this.triggerEvent("select"),this.rows[t]&&($(this.rows[t].obj).addClass("focused"),this.focused)&&this.focus_noscroll($(this.rows[t].obj).find(this.col_tagname()).eq(this.subject_column()).attr("tabindex","0")),this.selection.length||(this.shift_start=null),this.last_selected=t},select:function(t){this.select_row(t,!1),this.scrollto(t)},select_next:function(t){t=this.get_next_row(t)||this.get_prev_row(t);t&&this.select_row(t.uid,!1,!1)},select_first:function(t,e){var i=this.get_first_row();i&&(this.select_row(i,t,!1),e||this.scrollto(i))},select_last:function(t,e){var i=this.get_last_row();i&&(this.select_row(i,t,!1),e||this.scrollto(i))},select_children:function(t){for(var e=this.row_children(t),i=e.length,s=0;s<i;s++)this.in_selection(e[s])||this.select_row(e[s],CONTROL_KEY,!0)},shift_select:function(t,e){this.rows[this.shift_start]&&this.selection.length||(this.shift_start=t);var i,s=this.rows[t],o=this._rowIndex(this.rows[this.shift_start].obj),r=this._rowIndex(s.obj),n=o<(r=o<r&&!s.expanded&&s.has_children&&(s=this.rows[this.row_children(t).pop()])?this._rowIndex(s.obj):r)?o:r,h=r<o?o:r;for(i in this.rows)this._rowIndex(this.rows[i].obj)>=n&&this._rowIndex(this.rows[i].obj)<=h?this.in_selection(i)||this.highlight_row(i,!0):this.in_selection(i)&&!e&&this.highlight_row(i,!0)},_rowIndex:function(t){return void 0!==t.rowIndex?t.rowIndex:$(t).prevAll().length},in_selection:function(t,e){for(var i in this.selection)if(this.selection[i]==t)return!e||parseInt(i);return!1},select_all:function(t){if(!this.rowcount)return!1;var e,i=this.selection.join(",");for(e in this.selection=[],this.rows)t&&1!=this.rows[e][t]?$(this.rows[e].obj).removeClass("selected").removeAttr("aria-selected"):(this.last_selected=e,this.highlight_row(e,!0,!0));return this.selection.join(",")!=i&&this.triggerEvent("select"),this.focus(),!0},invert_selection:function(){if(!this.rowcount)return!1;var t,e=this.selection.join(",");for(t in this.rows)this.highlight_row(t,!0);return this.selection.join(",")!=e&&this.triggerEvent("select"),this.focus(),!0},clear_selection:function(t,e){var i,s=this.selection.length;if(t){for(i in this.selection)if(this.selection[i]==t){this.selection.splice(i,1);break}}else{for(i in this.selection)this.rows[this.selection[i]]&&$(this.rows[this.selection[i]].obj).removeClass("selected").removeAttr("aria-selected");this.selection=[]}this.checkbox_selection&&$(this.row_tagname()+":not(.selected) > .selection > input:checked",this.list).prop("checked",!1),!s||this.selection.length||e||(this.triggerEvent("select"),this.last_selected=null)},get_selection:function(t){var e=$.merge([],this.selection),i={deep:t,res:e};if(!1===this.triggerEvent("getselection",i))return i.res;if(!1!==t&&e.length)for(var s,o=0,r=e.length;o<r;o++)if(s=e[o],this.rows[s]&&this.rows[s].has_children&&!this.rows[s].expanded)for(var n,h=0,c=(n=this.row_children(s)).length;h<c;h++)s=n[h],this.in_selection(s)||e.push(s);return e},get_single_selection:function(){var t=this.get_selection(!1);return 1==t.length?t[0]:null},highlight_row:function(t,e,i){var s;this.rows[t]&&(e?!1===(e=this.in_selection(t,!0))?(this.selection.push(t),$(this.rows[t].obj).addClass("selected").attr("aria-selected","true"),this.checkbox_selection&&$(".selection > input",this.rows[t].obj).prop("checked",!0),i||this.rows[t].expanded||this.highlight_children(t,!0)):(s=this.selection.slice(0,e),e=this.selection.slice(e+1,this.selection.length),this.selection=s.concat(e),$(this.rows[t].obj).removeClass("selected").removeAttr("aria-selected"),this.checkbox_selection&&$(".selection > input",this.rows[t].obj).prop("checked",!1),i||this.rows[t].expanded||this.highlight_children(t,!1)):(1<this.selection.length||!this.in_selection(t))&&(this.clear_selection(null,!0),this.selection[0]=t,$(this.rows[t].obj).addClass("selected").attr("aria-selected","true"),this.checkbox_selection)&&$(".selection > input",this.rows[t].obj).prop("checked",!0))},highlight_children:function(t,e){for(var i,s=this.row_children(t),o=s.length,r=0;r<o;r++)i=this.in_selection(s[r]),(e&&!i||!e&&i)&&this.highlight_row(s[r],!0,!0)},key_press:function(t){if(this.focused&&!$(t.target).is("input,textarea,select")){var e=rcube_event.get_keycode(t),i=rcube_event.get_modifier(t);switch(e){case 37:case 39:case 40:case 38:case 63233:case 63232:return rcube_event.cancel(t),this.use_arrow_key(e,i);case 32:return rcube_event.cancel(t),this.select_row(this.last_selected,i,!0);case 36:return this.select_first(i),rcube_event.cancel(t);case 35:return this.select_last(i),rcube_event.cancel(t);case 65:if(i==CONTROL_KEY&&this.multiselect)return this.select_first(null,!0),this.select_last(SHIFT_KEY,!0),rcube_event.cancel(t);break;case 27:return this.drag_active?this.drag_mouse_up(t):this.col_drag_active?(this.selected_column=null,this.column_drag_mouse_up(t)):rcube_event.cancel(t);case 9:this.blur();break;case 13:this.selection.length||this.select_row(this.last_selected,i,!1);default:if(this.key_pressed=e,this.modkey=i,this.triggerEvent("keypress"),this.modkey=0,this.key_pressed==this.BACKSPACE_KEY)return rcube_event.cancel(t)}}return!0},use_arrow_key:function(t,e){var i,s=this.rows[this.last_selected];return s?40==t||63233==t?i=this.get_next_row():38==t||63232==t?i=this.get_prev_row():39==t&&s.has_children?s.expanded?(i=this.get_next_row(),e=null):this.expand_all(s):37==t&&(!s.expanded||!s.has_children||s.parent_uid&&this.multiexpand?s.parent_uid&&(i=e==CONTROL_KEY?this.rows[this.find_root(s.uid)]:this.rows[s.parent_uid],e=null):this.collapse_all(s)):this.select_first(CONTROL_KEY),i&&(e||this.selection.length||(e=CONTROL_KEY),this.select_row(i.uid,e,!1),this.scrollto(i.uid)),!1},scrollto:function(t){var e,i,s=this.rows[t]?this.rows[t].obj:null;s&&this.frame&&(i=0,!(e=Number(s.offsetTop))&&this.rows[t].parent_uid&&(t=this.find_root(this.rows[t].uid),this.expand_all(this.rows[t]),e=Number(s.offsetTop)),this.fixed_header&&(i=Number(this.thead.offsetHeight)),e<Number(this.frame.scrollTop)+i?this.frame.scrollTop=e-i:e+Number(s.offsetHeight)>Number(this.frame.scrollTop)+Number(this.frame.offsetHeight)&&(this.frame.scrollTop=e+Number(s.offsetHeight)-Number(this.frame.offsetHeight)))},drag_mouse_move:function(t){if("touchmove"==t.type){if(1!=t.touches.length||1!=t.changedTouches.length)return rcube_event.cancel(t);t=rcube_event.touchevent(t.changedTouches[0])}if(this.drag_start){var e=rcube_event.get_mouse_pos(t),i=[],s=this;if(!this.drag_mouse_start||Math.abs(e.x-this.drag_mouse_start.x)<3&&Math.abs(e.y-this.drag_mouse_start.y)<3)return!1;this.drag_start_pos={left:e.x,top:e.y},this.draglayer?this.draglayer.html(""):this.draglayer=$("<div>").attr("id","rcmdraglayer").css({position:"absolute",display:"none","z-index":2e3}).appendTo(document.body),$(this.row_tagname()+".selected",this.tbody).each(function(){var t=s.get_row_uid(this),e=s.rows[t];if(e&&!(-1<$.inArray(t,i)))return i.push(t),e.has_children&&!e.expanded&&$.each(s.row_children(t),function(){-1<$.inArray(this,i)||i.push(this)}),!(11<i.length)&&void 0});function o(t){return t&&(t=$(t).clone(),$(t).find(".skip-on-drag").remove()),t?t.text():""}var r,n,h=s.subject_column();$.each(i,function(t,e){if(10<t)return s.draglayer.append($("<div>").text("...")),!1;r=s.rows[e].obj,n="",$(r).children(s.col_tagname()).each(function(t,e){if((h<0||0<=h&&h==t)&&(n=o(e)))return!1}),(n=n.length?n:o($(r).children(".subject").first())).length&&(n=50<(n=n.trim()).length?n.substring(0,50)+"...":n,s.draglayer.append($("<div>").text(n)))}),this.draglayer.show(),this.drag_active=!0,this.triggerEvent("dragstart")}return this.drag_active&&this.draglayer&&(e=rcube_event.get_mouse_pos(t),this.draglayer.css({left:e.x+20+"px",top:e.y-5+(bw.ie?document.documentElement.scrollTop:0)+"px"}),this.triggerEvent("dragmove",t||window.event)),this.drag_start=!1},drag_mouse_up:function(t){return document.onmousemove=null,"touchend"==t.type&&1!=t.changedTouches.length||(this.draglayer&&this.draglayer.is(":visible")&&(this.drag_start_pos?this.draglayer.animate(this.drag_start_pos,300,"swing").hide(20):this.draglayer.hide()),this.drag_active&&this.focus(),this.drag_active=!1,rcube_event.remove_listener({event:"mousemove",object:this,method:"drag_mouse_move"}),rcube_event.remove_listener({event:"mouseup",object:this,method:"drag_mouse_up"}),bw.touch&&(rcube_event.remove_listener({event:"touchmove",object:this,method:"drag_mouse_move"}),rcube_event.remove_listener({event:"touchend",object:this,method:"drag_mouse_up"})),this.del_dragfix(),this.triggerEvent("dragend",t)),rcube_event.cancel(t)},column_drag_mouse_move:function(t){if(this.drag_start){var e=rcube_event.get_mouse_pos(t);if(!this.drag_mouse_start||Math.abs(e.x-this.drag_mouse_start.x)<3&&Math.abs(e.y-this.drag_mouse_start.y)<3)return!1;if(!this.col_draglayer){var e=$(this.list).offset(),i=this.thead.rows[0].cells;for(e.top+=this.list.scrollTop+this.list.parentNode.scrollTop,this.col_draglayer=$("<div>").attr("id","rcmcoldraglayer").css(e).css({position:"absolute","z-index":2001,"background-color":"white",opacity:.75,height:this.frame.offsetHeight-2+"px",width:this.frame.offsetWidth-2+"px"}).appendTo(document.body).append($("<div>").attr("id","rcmcolumnindicator").css({position:"absolute","border-right":"2px dotted #555","z-index":2002,height:this.frame.offsetHeight-2+"px"})),this.cols=[],this.list_pos=this.list_min_pos=e.left,s=0;s<i.length;s++)this.cols[s]=i[s].offsetWidth,null!==this.column_fixed&&s<=this.column_fixed&&(this.list_min_pos+=this.cols[s])}this.col_draglayer.show(),this.col_drag_active=!0,this.triggerEvent("column_dragstart")}if(this.col_drag_active&&this.col_draglayer){var s,o=0,r=rcube_event.get_mouse_pos(t);for(s=0;s<this.cols.length&&r.x>=this.cols[s]/2+this.list_pos+o;s++)o+=this.cols[s];0==s&&this.list_min_pos>r.x?o=this.list_min_pos-this.list_pos:this.list.rowcount||s!=this.cols.length||(o-=2),$("#rcmcolumnindicator").css({width:o+"px"}),this.triggerEvent("column_dragmove",t||window.event)}return this.drag_start=!1},column_drag_mouse_up:function(t){if(document.onmousemove=null,this.col_draglayer&&(this.col_draglayer.remove(),this.col_draglayer=null),rcube_event.remove_listener({event:"mousemove",object:this,method:"column_drag_mouse_move"}),rcube_event.remove_listener({event:"mouseup",object:this,method:"column_drag_mouse_up"}),this.del_dragfix(),this.col_drag_active&&(this.col_drag_active=!1,this.focus(),this.triggerEvent("column_dragend",t),null!==this.selected_column)&&this.cols&&this.cols.length){for(var e=0,i=rcube_event.get_mouse_pos(t),s=0;s<this.cols.length&&i.x>=this.cols[s]/2+this.list_pos+e;s++)e+=this.cols[s];s!=this.selected_column&&s!=this.selected_column+1&&this.column_replace(this.selected_column,s)}return rcube_event.cancel(t)},row_children:function(t){if(!this.rows[t]||!this.rows[t].has_children)return[];for(var e=[],i=this.rows[t].depth,s=this.rows[t].obj.nextSibling;s;){if(1==s.nodeType&&(r=this.rows[s.uid])){if(!r.depth||r.depth<=i)break;e.push(r.uid)}s=s.nextSibling}return e},add_dragfix:function(){$("iframe").each(function(){$('<div class="iframe-dragdrop-fix"></div>').css({background:"#fff",width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css($(this).offset()).appendTo(document.body)})},del_dragfix:function(){$("div.iframe-dragdrop-fix").remove()},column_replace:function(t,e){if(this.thead&&this.thead.rows){var i,s=this.thead.rows[0].cells,o=s[t],n=s[e],h=document.createElement("td");for(n?s[0].parentNode.insertBefore(h,n):s[0].parentNode.appendChild(h),s[0].parentNode.replaceChild(o,h),r=0,i=this.tbody.rows.length;r<i;r++)o=(row=this.tbody.rows[r]).cells[t],n=row.cells[e],h=document.createElement("td"),n?row.insertBefore(h,n):row.appendChild(h),row.replaceChild(o,h);this.subject_col==t?this.subject_col=t<e?e-1:e:this.subject_col<t&&e<=this.subject_col?this.subject_col++:this.subject_col>t&&e>=this.subject_col&&this.subject_col--,this.fixed_header&&this.init_header(),this.triggerEvent("column_replace")}},subject_column:function(){return this.subject_col+(this.checkbox_selection?1:0)}},rcube_list_widget.prototype.addEventListener=rcube_event_engine.prototype.addEventListener,rcube_list_widget.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener,rcube_list_widget.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent,rcube_list_widget._instances=[];
js/app.js000064400001161310151727150220006303 0ustar00/**
 * Roundcube Webmail Client Script
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (C) The Roundcube Dev Team
 * Copyright (C) Kolab Systems AG
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
 * @author Charles McNulty <charles@charlesmcnulty.com>
 *
 * @requires jquery.js, common.js, list.js
 */

function rcube_webmail()
{
  this.labels = {};
  this.buttons = {};
  this.buttons_sel = {};
  this.gui_objects = {};
  this.gui_containers = {};
  this.commands = {};
  this.command_handlers = {};
  this.onloads = [];
  this.messages = {};
  this.group2expand = {};
  this.http_request_jobs = {};
  this.menu_stack = [];
  this.menu_buttons = {};
  this.entity_selectors = [];
  this.image_style = {};
  this.uploads = {};

  // webmail client settings
  this.dblclick_time = 500;
  this.message_time = 5000;
  this.preview_delay_select = 400;
  this.preview_delay_click  = 60;
  this.identifier_expr = /[^0-9a-z_-]/gi;
  this.uploadTimeout = 0; // 0 = no timeout | ajax call timeout for loading attachment


  // environment defaults
  this.env = {
    attachments: {},
    request_timeout: 180,  // seconds
    draft_autosave: 0,     // seconds
    comm_path: './',
    recipients_separator: ',', // @deprecated
    recipients_delimiter: ', ', // @deprecated
    popup_width: 1150,
    popup_width_small: 900,
    thread_padding: '15px'
  };

  // create protected reference to myself
  this.ref = 'rcmail';
  var ref = this;

  // set jQuery ajax options
  $.ajaxSetup({
    cache: false,
    timeout: this.env.request_timeout * 1000,
    error: function(request, status, err){ ref.http_error(request, status, err); },
    beforeSend: function(xmlhttp){ xmlhttp.setRequestHeader('X-Roundcube-Request', ref.env.request_token); }
  });

  // unload fix
  $(window).on('beforeunload', function() { ref.unload = true; });

  // set environment variable(s)
  this.set_env = function(p, value)
  {
    if (p != null && typeof p === 'object' && !value)
      for (var n in p)
        this.env[n] = p[n];
    else
      this.env[p] = value;
  };

  // add a localized label to the client environment
  this.add_label = function(p, value)
  {
    if (typeof p == 'string')
      this.labels[p] = value;
    else if (typeof p == 'object')
      $.extend(this.labels, p);
  };

  // add a button to the button list
  this.register_button = function(command, id, type, act, sel, over)
  {
    var button_prop = {id:id, type:type};

    if (act) button_prop.act = act;
    if (sel) button_prop.sel = sel;
    if (over) button_prop.over = over;

    if (!this.buttons[command])
      this.buttons[command] = [];

    this.buttons[command].push(button_prop);

    if (this.loaded) {
      this.init_button(command, button_prop);
      this.set_button(command, (this.commands[command] ? 'act' : 'pas'));
    }
  };

  // register a button with popup menu, to set its state according to the state of all commands in the menu
  this.register_menu_button = function(button, menu_id)
  {
    if (this.menu_buttons[menu_id]) {
      this.menu_buttons[menu_id][0].push(button);
    }
    else {
      var commands = [];
      $('#' + menu_id).find('a').each(function() {
        var command, link = $(this), onclick = link.attr('onclick');

        if (onclick && String(onclick).match(/rcmail\.command\(\'([^']+)/))
          command = RegExp.$1;
        else
          command = function() { return link.is('.active'); };

        commands.push(command);
      });

      if (commands.length)
        this.menu_buttons[menu_id] = [[button], commands];
    }

    this.set_menu_buttons();
  };

  // set state of a menu button according to state of all menu actions
  this.set_menu_buttons = function()
  {
    // Use timeouts to not block and set menu button states only once
    clearTimeout(this.menu_buttons_timeout);
    this.menu_buttons_timeout = setTimeout(function() {
      $.each(ref.menu_buttons, function() {
        var disabled = true;
        $.each(this[1], function() {
          var is_func = typeof(this) == 'function';
          if ((is_func && this()) || (!is_func && ref.commands[this])) {
            return disabled = false;
          }
        });

        $(this[0]).add($(this[0]).parent('.dropbutton'))
          .addClass(disabled ? 'disabled' : 'active')
          .removeClass(disabled ? 'active' : 'disabled');
      });
    }, 50);
  };

  // register a specific gui object
  this.gui_object = function(name, id)
  {
    this.gui_objects[name] = this.loaded ? rcube_find_object(id) : id;
  };

  // register a container object
  this.gui_container = function(name, id)
  {
    this.gui_containers[name] = id;
  };

  // add a GUI element (html node) to a specified container
  this.add_element = function(elm, container)
  {
    if (this.gui_containers[container] && this.gui_containers[container].jquery)
      this.gui_containers[container].append(elm);
  };

  // register an external handler for a certain command
  this.register_command = function(command, callback, enable)
  {
    this.command_handlers[command] = callback;

    if (enable)
      this.enable_command(command, true);
  };

  // execute the given script on load
  this.add_onload = function(f)
  {
    this.onloads.push(f);
  };

  // initialize webmail client
  this.init = function()
  {
    var n;
    this.task = this.env.task;

    if (!this.env.blankpage)
      this.env.blankpage = 'javascript:false;';

    // find all registered gui containers
    for (n in this.gui_containers)
      this.gui_containers[n] = $('#'+this.gui_containers[n]);

    // find all registered gui objects
    for (n in this.gui_objects)
      this.gui_objects[n] = rcube_find_object(this.gui_objects[n]);

    // init registered buttons
    this.init_buttons();

    // tell parent window that this frame is loaded
    if (this.is_framed()) {
      parent.rcmail.unlock_frame();
    }

    // enable general commands
    this.enable_command('close', 'logout', 'mail', 'addressbook', 'settings', 'save-pref',
      'compose', 'undo', 'about', 'switch-task', 'menu-open', 'menu-close', 'menu-save', true);

    // set active task button
    this.set_button(this.task, 'sel');

    if (this.env.permaurl)
      this.enable_command('permaurl', 'extwin', true);

    switch (this.task) {

      case 'mail':
        // enable mail commands
        this.enable_command('list', 'checkmail', 'add-contact', 'search', 'reset-search', 'collapse-folder', 'import-messages', true);

        if (this.gui_objects.messagelist) {
          // setup message list cols
          this.msglist_setup(this.env.layout);

          this.env.widescreen_list_template = [
            {className: 'threads', cells: ['threads']},
            {className: 'subject', cells: ['fromto', 'date', 'size', 'status', 'subject']},
            {className: 'flags', cells: ['flag', 'attachment']}
          ];

          this.message_list = new rcube_list_widget(this.gui_objects.messagelist, {
            multiselect:true, multiexpand:true, draggable:true, keyboard:true,
            column_movable:this.env.col_movable, dblclick_time:this.dblclick_time
            });
          this.message_list
            .addEventListener('initrow', function(o) { ref.init_message_row(o); })
            .addEventListener('dblclick', function(o) { ref.msglist_dbl_click(o); })
            .addEventListener('keypress', function(o) { ref.msglist_keypress(o); })
            .addEventListener('select', function(o) { ref.msglist_select(o); })
            .addEventListener('dragstart', function(o) { ref.drag_start(o); })
            .addEventListener('dragmove', function(e) { ref.drag_move(e); })
            .addEventListener('dragend', function(e) { ref.drag_end(e); })
            .addEventListener('expandcollapse', function(o) { ref.msglist_expand(o); })
            .addEventListener('column_replace', function(o) { ref.msglist_set_coltypes(o); })
            .init();

          // TODO: this should go into the list-widget code
          $(this.message_list.thead).on('click', 'a.sortcol', function(e){
            return ref.command('sort', $(this).attr('rel'), this);
          });

          this.enable_command('toggle_status', 'toggle_flag', 'sort', true);
          this.enable_command('set-listmode', this.env.threads && !this.is_multifolder_listing());

          // load messages
          var searchfilter = $(this.gui_objects.search_filter).val();
          if (searchfilter && searchfilter != 'ALL')
            this.filter_mailbox(searchfilter);
          else
            this.command('list');

          $(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function() { ref.message_list.blur(); });
        }

        this.set_button_titles();

        this.env.message_commands = ['show', 'reply', 'reply-all', 'reply-list',
          'move', 'copy', 'delete', 'open', 'mark', 'edit', 'viewsource', 'bounce',
          'print', 'load-attachment', 'download-attachment', 'show-headers', 'hide-headers', 'download',
          'forward', 'forward-inline', 'forward-attachment', 'change-format'];

        if (this.env.action == 'show' || this.env.action == 'preview') {
          this.enable_command(this.env.message_commands, this.env.uid);
          this.enable_command('reply-list', this.env.list_post);

          if (this.env.action == 'show') {
            this.http_request('pagenav', {_uid: this.env.uid, _mbox: this.env.mailbox, _search: this.env.search_request},
              this.display_message('', 'loading'));
          }

          if (this.env.mail_read_time > 0)
            setTimeout(function() {
              ref.http_post('mark', {_uid: ref.env.uid, _flag: 'read', _mbox: ref.env.mailbox, _quiet: 1});
            }, this.env.mail_read_time * 1000);

          if (this.env.blockedobjects) {
            $(this.gui_objects.remoteobjectsmsg).show();
            this.enable_command('load-remote', true);
          }

          // make preview/message frame visible
          if (this.env.action == 'preview' && this.is_framed()) {
            this.enable_command('compose', 'add-contact', false);
            parent.rcmail.show_contentframe(true);
          }

          if ($.inArray('flagged', this.env.message_flags) >= 0) {
            $(document.body).addClass('status-flagged');
          }

          // initialize drag-n-drop on attachments, so they can e.g.
          // be dropped into mail compose attachments in another window
          if (this.gui_objects.attachments)
            $('li > a', this.gui_objects.attachments).not('.drop').on('dragstart', function(e) {
              var n, href = this.href, dt = e.originalEvent.dataTransfer;
              if (dt) {
                // inject username to the uri
                href = href.replace(/^https?:\/\//, function(m) { return m + urlencode(ref.env.username) + '@'});
                // cleanup the node to get filename without the size test
                n = $(this).clone();
                n.children().remove();

                dt.setData('roundcube-uri', href);
                dt.setData('roundcube-name', n.text().trim());
              }
            });

            this.check_mailvelope(this.env.action);
        }
        else if (this.env.action == 'compose') {
          this.env.address_group_stack = [];
          this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel',
            'toggle-editor', 'list-addresses', 'pushgroup', 'search', 'reset-search', 'extwin',
            'insert-response', 'menu-open', 'menu-close', 'load-attachment',
            'download-attachment', 'open-attachment', 'rename-attachment'];

          if (this.env.drafts_mailbox)
            this.env.compose_commands.push('savedraft')

          this.enable_command(this.env.compose_commands, true);

          // add more commands (not enabled)
          $.merge(this.env.compose_commands, ['add-recipient', 'firstpage', 'previouspage', 'nextpage', 'lastpage']);

          if (window.googie) {
            this.env.editor_config.spellchecker = googie;
            this.env.editor_config.spellcheck_observer = function(s) { ref.spellcheck_state(); };

            this.env.compose_commands.push('spellcheck')
            this.enable_command('spellcheck', true);
          }

          // initialize HTML editor
          this.editor_init(null, this.env.composebody);

          // init message compose form
          this.init_messageform();

          this.check_mailvelope(this.env.action);
        }
        else if (this.env.action == 'bounce') {
          this.init_messageform_inputs();
          this.env.compose_commands = [];
        }
        else if (this.env.action == 'get') {
          this.enable_command('download', true);
          this.enable_command('image-scale', 'image-rotate', !!/^image\//.test(this.env.mimetype));

          // Mozilla's PDF.js viewer does not allow printing from host page (#5125)
          // to minimize user confusion we disable the Print button on Firefox < 75
          this.enable_command('print', this.env.mimetype != 'application/pdf' || !bw.mz || bw.vendver >= 75);

          if (this.env.is_message) {
            this.enable_command('reply', 'reply-all', 'edit', 'viewsource',
              'forward', 'forward-inline', 'forward-attachment', 'bounce', true);
            if (this.env.list_post)
              this.enable_command('reply-list', true);
          }

          // center and scale the image in preview frame
          // TODO: Find a better way. Onload is late, also we could use embed.css
          if (this.env.mimetype.startsWith('image/'))
            $(this.gui_objects.messagepartframe).on('load', function() {
              var contents = $(this).contents();

              // do not apply styles to an error page (with no image)
              if (contents.find('img').length)
                contents.find('head').append(
                  '<style type="text/css">'
                  + 'img { max-width:100%; max-height:100%; } ' // scale
                  + 'body { display:flex; align-items:center; justify-content:center; height:100%; margin:0; }' // align
                  + '</style>'
                );
            });
        }
        // show printing dialog unless decryption must be done first
        else if (this.env.action == 'print' && this.env.uid) {
          this.check_mailvelope(this.env.action);
          if (!this.env.is_pgp_content && !this.env.pgp_mime_part) {
            this.print_dialog();
          }
        }

        // get unread count for each mailbox
        if (this.gui_objects.mailboxlist) {
          this.env.unread_counts = {};
          this.gui_objects.folderlist = this.gui_objects.mailboxlist;
          this.http_request('getunread', {_page: this.env.current_page});
        }

        // init address book widget
        if (this.gui_objects.contactslist) {
          this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
            { multiselect:true, draggable:false, keyboard:true });
          this.contact_list
            .addEventListener('initrow', function(o) { ref.triggerEvent('insertrow', { cid:o.uid, row:o }); })
            .addEventListener('select', function(o) { ref.compose_recipient_select(o); })
            .addEventListener('dblclick', function(o) { ref.compose_add_recipient(); })
            .addEventListener('keypress', function(o) {
              if (o.key_pressed == o.ENTER_KEY) {
                if (!ref.compose_add_recipient()) {
                  // execute link action on <enter> if not a recipient entry
                  if (o.last_selected && String(o.last_selected).charAt(0) == 'G') {
                    $(o.rows[o.last_selected].obj).find('a').first().click();
                  }
                }
              }
            })
            .init();

          // remember last focused address field
          $('#_to,#_cc,#_bcc').focus(function() { ref.env.focused_field = this; });
        }

        if (this.gui_objects.addressbookslist) {
          this.gui_objects.folderlist = this.gui_objects.addressbookslist;
          this.enable_command('list-addresses', true);
        }

        // ask user to send MDN
        if (this.env.mdn_request && this.env.uid) {
            this.mdn_request_dialog(this.env.uid, this.env.mailbox);
        }

        // detect browser capabilities
        if (!this.is_framed() && !this.env.extwin)
          this.browser_capabilities_check();

        break;

      case 'addressbook':
        this.env.address_group_stack = [];

        if (this.gui_objects.folderlist)
          this.env.contactfolders = $.extend($.extend({}, this.env.address_sources), this.env.contactgroups);

        this.enable_command('add', 'import', this.env.writable_source);
        this.enable_command('list', 'listgroup', 'pushgroup', 'popgroup', 'listsearch', 'search', 'reset-search', 'advanced-search', true);

        if (this.gui_objects.contactslist) {
          this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
            {multiselect:true, draggable:this.gui_objects.folderlist?true:false, keyboard:true});
          this.contact_list
            .addEventListener('initrow', function(o) { ref.triggerEvent('insertrow', { cid:o.uid, row:o }); })
            .addEventListener('keypress', function(o) { ref.list_keypress(o); })
            .addEventListener('select', function(o) { ref.contactlist_select(o); })
            .addEventListener('dragstart', function(o) { ref.drag_start(o); })
            .addEventListener('dragmove', function(e) { ref.drag_move(e); })
            .addEventListener('dragend', function(e) { ref.drag_end(e); })
            .init();

          $(this.gui_objects.qsearchbox).focusin(function() { ref.contact_list.blur(); });

          this.update_group_commands();
          this.command('list');
        }

        if (this.gui_objects.savedsearchlist) {
          this.savedsearchlist = new rcube_treelist_widget(this.gui_objects.savedsearchlist, {
            id_prefix: 'rcmli',
            id_encode: this.html_identifier_encode,
            id_decode: this.html_identifier_decode
          });

          this.savedsearchlist.addEventListener('select', function(node) {
            ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }); });
        }

        this.set_page_buttons();

        if (this.env.cid) {
          this.enable_command('show', 'edit', 'qrcode', true);
          // register handlers for group assignment via checkboxes
          if (this.gui_objects.editform) {
            $('input.groupmember').change(function() {
              ref.group_member_change(this.checked ? 'add' : 'del', ref.env.cid, ref.env.source, this.value);
            });
          }
        }

        if (this.gui_objects.editform) {
          this.enable_command('save', true);
          if (this.env.action == 'add' || this.env.action == 'edit' || this.env.action == 'search')
              this.init_contact_form();
        }
        else if (this.env.action == 'print') {
          this.print_dialog();
        }

        break;

      case 'settings':
        this.enable_command('show', 'save', true);

        if (this.env.action == 'identities') {
          this.enable_command('add', this.env.identities_level < 2);
        }
        else if (this.env.action == 'edit-identity' || this.env.action == 'add-identity') {
          this.enable_command('save', 'edit', true);
          this.enable_command('delete', this.env.identities_level < 2);

          if (this.env.action == 'edit-identity') {
            this.check_mailvelope(this.env.action);
          }
        }
        else if (this.env.action == 'folders') {
          this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
        }
        else if (this.env.action == 'edit-folder' && this.gui_objects.editform) {
          this.enable_command('save', 'folder-size', true);
          parent.rcmail.env.exists = this.env.messagecount;
          parent.rcmail.enable_command('purge', this.env.messagecount);
        }
        else if (this.env.action == 'responses') {
          this.enable_command('add', true);
        }

        if (this.gui_objects.identitieslist) {
          this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist,
            {multiselect:false, draggable:false, keyboard:true});
          this.identity_list
            .addEventListener('select', function(o) { ref.identity_select(o); })
            .addEventListener('keypress', function(o) { ref.list_keypress(o); })
            .init()
            .focus();
        }
        else if (this.gui_objects.sectionslist) {
          this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:true});
          this.sections_list
            .addEventListener('select', function(o) { ref.section_select(o); })
            .init()
            .focus();
        }
        else if (this.gui_objects.subscriptionlist) {
          this.init_subscription_list();
        }
        else if (this.gui_objects.responseslist) {
          this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:true});
          this.responses_list
            .addEventListener('select', function(o) { ref.response_select(o); })
            .addEventListener('keypress', function(o) { ref.list_keypress(o); })
            .init()
            .focus();
        }

        break;

      case 'login':
        var tz, tz_name,
            input_user = $('#rcmloginuser'),
            input_tz = $('#rcmlogintz');

        if (input_user.val() == '')
          input_user.focus();
        else
          $('#rcmloginpwd').focus();

        // detect client timezone
        if (window.jstz && (tz = jstz.determine()))
          tz_name = tz.name();

        input_tz.val(tz_name ? tz_name : (new Date().getStdTimezoneOffset() / -60));

        // display 'loading' message on form submit, lock submit button
        $('form').submit(function () {
          $('[type=submit]', this).prop('disabled', true);
          ref.clear_messages();
          ref.display_message('', 'loading');
        });

        break;
    }

    // select first input field in an edit form
    if (this.gui_objects.editform)
      $("input,select,textarea", this.gui_objects.editform)
        .not(':hidden').not(':disabled').first().select().focus();

    // prevent from form submit with Enter key in file input fields
    if (bw.ie)
      $('input[type=file]').keydown(function(e) { if (e.keyCode == '13') e.preventDefault(); });

    // flag object as complete
    this.loaded = true;
    this.env.lastrefresh = new Date();

    // show message
    if (this.pending_message)
      this.display_message.apply(this, this.pending_message);

    // init treelist widget
    if (this.gui_objects.folderlist && window.rcube_treelist_widget
      // some plugins may load rcube_treelist_widget and there's one case
      // when this will cause problems - addressbook widget in compose,
      // which already has been initialized using rcube_list_widget
      && this.gui_objects.folderlist != this.gui_objects.addressbookslist
    ) {
      this.treelist = new rcube_treelist_widget(this.gui_objects.folderlist, {
          selectable: true,
          id_prefix: 'rcmli',
          parent_focus: true,
          id_encode: this.html_identifier_encode,
          id_decode: this.html_identifier_decode,
          check_droptarget: function(node) { return !node.virtual && ref.check_droptarget(node.id) }
      });

      this.treelist
        .addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
        .addEventListener('expand', function(node) { ref.folder_collapsed(node) })
        .addEventListener('beforeselect', function(node) { return !ref.busy; })
        .addEventListener('select', function(node) {
          ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' });
          ref.mark_all_read_state();
        });
    }

    // activate html5 file drop feature (if browser supports it and if configured)
    if (this.gui_objects.filedrop && this.env.filedrop && window.FormData) {
      $(document.body).on('dragover dragleave drop', function(e) { return ref.document_drag_hover(e, e.type == 'dragover'); });
      $(this.gui_objects.filedrop).addClass('droptarget')
        .on('dragover dragleave', function(e) { return ref.file_drag_hover(e, e.type == 'dragover'); })
        .get(0).addEventListener('drop', function(e) { return ref.file_dropped(e); }, false);
    }

    // catch document (and iframe) mouse clicks
    var body_mouseup = function(e) { return ref.doc_mouse_up(e); };
    $(document.body)
      .mouseup(body_mouseup)
      .keydown(function(e) { return ref.doc_keypress(e); });

    rcube_webmail.set_iframe_events({mouseup: body_mouseup});

    // trigger init event hook
    this.triggerEvent('init', { task:this.task, action:this.env.action });

    // execute all foreign onload scripts
    // @deprecated
    for (n in this.onloads) {
      if (typeof this.onloads[n] === 'string')
        eval(this.onloads[n]);
      else if (typeof this.onloads[n] === 'function')
        this.onloads[n]();
    }

    // register menu buttons
    $('[data-popup]').each(function() { ref.register_menu_button(this, $(this).data('popup')); });

    // start keep-alive and refresh intervals
    this.start_refresh();
    this.start_keepalive();
  };

  this.log = function(msg)
  {
    if (this.env.devel_mode && window.console && console.log)
      console.log(msg);
  };

  /*********************************************************/
  /*********       client command interface        *********/
  /*********************************************************/

  // execute a specific command on the web client
  this.command = function(command, props, obj, event, allow_disabled)
  {
    var ret;

    if (obj && obj.blur && !(event && rcube_event.is_keyboard(event)))
      obj.blur();

    // do nothing if interface is locked by another command
    // with exception for searching reset and menu
    if (this.busy && !(command == 'reset-search' && this.last_command == 'search') && !command.match(/^menu-/))
      return false;

    // let the browser handle this click (shift/ctrl usually opens the link in a new window/tab)
    if ((obj && obj.href && String(obj.href).indexOf('#') < 0) && rcube_event.get_modifier(event)) {
      return true;
    }

    // command not supported or allowed
    if (!allow_disabled && !this.commands[command]) {
      // pass command to parent window
      if (this.is_framed())
        parent.rcmail.command(command, props);

      return false;
    }

    // check input before leaving compose step
    if (this.task == 'mail' && this.env.action == 'compose' && !this.env.server_error && command != 'save-pref'
      && ($.inArray(command, this.env.compose_commands) < 0 || command.startsWith('compose-encrypted') && ref.mailvelope_editor)
      && !this.compose_skip_unsavedcheck
    ) {
      if (!this.env.is_sent && this.cmp_hash != this.compose_field_hash()) {
        this.confirm_dialog(this.get_label('notsentwarning'), 'discard', function() {
            // remove copy from local storage if compose screen is left intentionally
            ref.remove_compose_data(ref.env.compose_id);
            ref.compose_skip_unsavedcheck = true;
            ref.command(command, props, obj, event);
          });

        return false;
      }
    }

    this.last_command = command;
    this.command_aborted = false;

    // trigger plugin hooks
    this.triggerEvent('actionbefore', {props: props, action: command, originalEvent: event});

    if ((ret = this.triggerEvent('before' + command, props || event)) !== undefined) {
      // abort if one of the handlers returned false
      if (ret === false)
        return false;

      props = ret;
    }

    // process external commands
    if (typeof this.command_handlers[command] === 'function') {
      ret = this.command_handlers[command](props, obj, event);
    }
    else if (typeof this.command_handlers[command] === 'string') {
      ret = window[this.command_handlers[command]](props, obj, event);
    }
    // process internal commands
    else {
      ret = this.command_handler(command, props, obj, event);
    }

    if (!this.command_aborted && this.triggerEvent('after' + command, props) === false)
      ret = false;

    this.triggerEvent('actionafter', {props: props, action: command, aborted: this.command_aborted, ret: ret, originalEvent: event});

    if (ret === false)
      return false;

    if ((obj && ret !== true) || this.command_aborted === true)
      return false;

    return true;
  };

  // execute a specific known command
  this.command_handler = function(command, props, obj, event)
  {
    var uid, cid, url, flag;

    // process internal command
    switch (command) {

      // commands to switch task
      case 'logout':
      case 'mail':
      case 'addressbook':
      case 'settings':
        this.switch_task(command);
        break;

      case 'about':
        this.redirect('?_task=settings&_action=about', false);
        break;

      case 'permaurl':
        if (obj && obj.href && obj.target)
          return true;
        if (this.env.permaurl)
          parent.location.href = this.env.permaurl;
        break;

      case 'extwin':
        if (this.env.action == 'compose') {
          var form = this.gui_objects.messageform,
            win = this.open_window('');

          if (win) {
            this.save_compose_form_local();
            this.compose_skip_unsavedcheck = true;
            $("[name='_action']", form).val('compose');
            form.action = this.url('mail/compose', { _id: this.env.compose_id, _extwin: 1 });
            form.target = win.name;
            form.submit();
          }
        }
        else {
          this.open_window(this.env.permaurl, true);
        }
        break;

      case 'change-format':
        url = this.env.permaurl + '&_format=' + props;

        if (this.env.action == 'preview')
          url = url.replace(/_action=show/, '_action=preview') + '&_framed=1';
        if (this.env.extwin)
          url += '&_extwin=1';

        location.href = url;
        break;

      case 'menu-open':
        if (props && props.menu == 'attachmentmenu') {
          var mimetype = this.env.attachments[props.id];
          if (mimetype && mimetype.mimetype) // in compose format is different
            mimetype = mimetype.mimetype;
          this.enable_command('open-attachment', mimetype && this.env.mimetypes && $.inArray(mimetype, this.env.mimetypes) >= 0);
        }
        this.show_menu(props, props.show || undefined, event);
        break;

      case 'menu-close':
        this.hide_menu(props, event);
        break;

      case 'menu-save':
        this.triggerEvent(command, {props:props, originalEvent:event});
        return false;

      case 'open':
        if (uid = this.get_single_uid()) {
          obj.href = this.url('show', this.params_from_uid(uid, {_extwin: 1}));
          return true;
        }
        break;

      case 'close':
        if (this.env.extwin)
          window.close();
        break;

      case 'list':
        if (props && props != '') {
          this.reset_qsearch(true);
        }
        if (this.env.action == 'compose' && this.env.extwin) {
          window.close();
        }
        else if (this.task == 'mail') {
          this.list_mailbox(props, props ? 1 : '');
          this.set_button_titles();
        }
        else if (this.task == 'addressbook')
          this.list_contacts(props);
        break;

      case 'set-listmode':
        this.set_list_options(null, undefined, undefined, props == 'threads' ? 1 : 0);
        break;

      case 'sort':
        var sort_order = this.env.sort_order,
          sort_col = !this.env.disabled_sort_col ? props : this.env.sort_col;

        if (!this.env.disabled_sort_order)
          sort_order = this.env.sort_col == sort_col && sort_order == 'ASC' ? 'DESC' : 'ASC';

        // set table header and update env
        this.set_list_sorting(sort_col, sort_order);

        // reload message list
        this.list_mailbox('', '', sort_col+'_'+sort_order);
        break;

      case 'nextpage':
        this.list_page('next');
        break;

      case 'lastpage':
        this.list_page('last');
        break;

      case 'previouspage':
        this.list_page('prev');
        break;

      case 'firstpage':
        this.list_page('first');
        break;

      case 'expunge':
        if (this.env.exists)
          this.expunge_mailbox(this.env.mailbox);
        break;

      case 'purge':
      case 'empty-mailbox':
        if (this.env.exists)
          this.purge_mailbox(this.env.mailbox);
        break;

      // common commands used in multiple tasks
      case 'show':
        if (this.task == 'mail') {
          uid = this.get_single_uid();
          if (uid && (!this.env.uid || uid != this.env.uid)) {
            var mbox = this.get_message_mailbox(uid);
            if (mbox == this.env.drafts_mailbox)
              this.open_compose_step({_draft_uid: uid, _mbox: mbox});
            else
              this.show_message(uid);
          }
        }
        else if (this.task == 'addressbook') {
          cid = props ? props : this.get_single_cid();
          if (cid && !(this.env.action == 'show' && cid == this.env.cid))
            this.load_contact(cid, 'show');
        }
        else if (this.task == 'settings') {
          this.goto_url('settings/' + props, {_framed: 0});
        }
        break;

      case 'add':
        if (this.task == 'addressbook')
          this.load_contact(0, 'add');
        else if (this.task == 'settings' && this.env.action == 'responses')
          this.load_response(0, 'add-response');
        else if (this.task == 'settings')
          this.load_identity(0, 'add-identity');
        break;

      case 'edit':
        if (this.task == 'addressbook' && (cid = this.get_single_cid()))
          this.load_contact(cid, 'edit');
        else if (this.task == 'mail' && (uid = this.get_single_uid())) {
          url = { _mbox: this.get_message_mailbox(uid) };
          url[url._mbox == this.env.drafts_mailbox && props != 'new' ? '_draft_uid' : '_uid'] = uid;
          this.open_compose_step(url);
        }
        break;

      case 'save':
        var input, form = this.gui_objects.editform;
        if (form) {
          // user prefs
          if ((input = $("[name='_pagesize']", form)) && input.length && isNaN(parseInt(input.val()))) {
            this.alert_dialog(this.get_label('nopagesizewarning'), function() {
              input.focus();
            });
            break;
          }
          // contacts/identities
          else {
            // reload form
            if (props == 'reload') {
              form.action += '&_reload=1';
            }
            else if (this.task == 'settings' && (this.env.identities_level % 2) == 0  &&
              (input = $("[name='_email']", form)) && input.length && !rcube_check_email(input.val())
            ) {
              this.alert_dialog(this.get_label('noemailwarning'), function() {
                input.focus();
              });
              break;
            }
          }

          // add selected source (on the list)
          if (parent.rcmail && parent.rcmail.env.source)
            form.action = this.add_url(form.action, '_orig_source', parent.rcmail.env.source);

          form.submit();
        }
        break;

      case 'delete':
        // mail task
        if (this.task == 'mail')
          this.delete_messages(event);
        // addressbook task
        else if (this.task == 'addressbook')
          this.delete_contacts();
        // settings: canned response
        else if (this.task == 'settings' && this.env.action == 'responses')
          this.delete_response();
        // settings: user identities
        else if (this.task == 'settings')
          this.delete_identity();
        break;

      // mail task commands
      case 'move':
      case 'moveto': // deprecated
        if (this.task == 'mail')
          this.move_messages(props, event);
        else if (this.task == 'addressbook')
          this.move_contacts(props, event);
        break;

      case 'copy':
        if (this.task == 'mail')
          this.copy_messages(props, event);
        else if (this.task == 'addressbook')
          this.copy_contacts(props, event);
        break;

      case 'mark':
        if (props)
          this.mark_message(props);
        break;

      case 'toggle_status':
      case 'toggle_flag':
        flag = command == 'toggle_flag' ? 'flagged' : 'read';

        if (uid = props) {
          // toggle flagged/unflagged
          if (flag == 'flagged') {
            if (this.message_list.rows[uid].flagged)
              flag = 'unflagged';
          }
          // toggle read/unread
          else if (this.message_list.rows[uid].deleted)
            flag = 'undelete';
          else if (!this.message_list.rows[uid].unread)
            flag = 'unread';

          this.mark_message(flag, uid);
        }

        break;

      case 'add-contact':
        this.add_contact(props);
        break;

      case 'load-remote':
        if (this.env.uid) {
          if (props && this.env.sender) {
            this.add_contact(this.env.sender, true, props);
            break;
          }

          this.show_message(this.env.uid, true, this.env.action == 'preview');
        }
        break;

      case 'load-attachment':
      case 'open-attachment':
      case 'download-attachment':
        var params, mimetype = this.env.attachments[props];

        if (this.env.action == 'compose') {
          params = {_file: props, _id: this.env.compose_id};
          mimetype = mimetype ? mimetype.mimetype : '';
        }
        else {
          params = {_mbox: this.env.mailbox, _uid: this.env.uid, _part: props};
        }

        // open attachment in frame if it's of a supported mimetype
        if (command != 'download-attachment' && mimetype && this.env.mimetypes && $.inArray(mimetype, this.env.mimetypes) >= 0) {
          // Note: We disable _framed for proper X-Frame-Options:deny support (#6688)
          if (this.open_window(this.url('get', $.extend({_frame: 1, _framed: 0}, params))))
            return true;
        }

        params._download = 1;

        // prevent from page unload warning in compose
        this.compose_skip_unsavedcheck = 1;
        this.goto_url('get', params, false, true);
        this.compose_skip_unsavedcheck = 0;

        return true;

      case 'select-all':
        this.select_all_mode = props ? false : true;
        this.dummy_select = true; // prevent msg opening if there's only one msg on the list
        var list = this[this.task == 'addressbook' ? 'contact_list' : 'message_list'];
        if (props == 'invert')
          list.invert_selection();
        else
          list.select_all(props == 'page' ? '' : props);
        this.dummy_select = null;
        break;

      case 'select-none':
        this.select_all_mode = false;
        this[this.task == 'addressbook' ? 'contact_list' : 'message_list'].clear_selection();
        break;

      case 'expand-all':
        this.env.autoexpand_threads = 1;
        this.message_list.expand_all();
        break;

      case 'expand-unread':
        this.env.autoexpand_threads = 2;
        this.message_list.collapse_all();
        this.expand_unread();
        break;

      case 'collapse-all':
        this.env.autoexpand_threads = 0;
        this.message_list.collapse_all();
        break;

      case 'nextmessage':
        if (this.env.next_uid)
          this.show_message(this.env.next_uid, false, this.env.action == 'preview');
        break;

      case 'lastmessage':
        if (this.env.last_uid)
          this.show_message(this.env.last_uid);
        break;

      case 'previousmessage':
        if (this.env.prev_uid)
          this.show_message(this.env.prev_uid, false, this.env.action == 'preview');
        break;

      case 'firstmessage':
        if (this.env.first_uid)
          this.show_message(this.env.first_uid);
        break;

      case 'compose':
        url = {};

        if (this.task == 'mail') {
          url = {_mbox: this.env.mailbox, _search: this.env.search_request};
          if (props)
            url._to = props;
        }
        // modify url if we're in addressbook
        else if (this.task == 'addressbook') {
          // switch to mail compose step directly
          if (props && props.indexOf('@') > 0) {
            url._to = props;
          }
          else {
            var a_cids = [];
            // use contact id passed as command parameter
            if (props)
              a_cids.push(props);
            // get selected contacts
            else if (this.contact_list)
              a_cids = this.contact_list.get_selection();

            if (a_cids.length) {
              this.http_post('mailto', { _cid: a_cids.join(','), _source: this.env.source }, true);
              break;
            }
            else if (this.env.group && this.env.pagecount) {
              this.http_post('mailto', { _gid: this.env.group, _source: this.env.source }, true);
              break;
            }
          }
        }
        else if (props && typeof props == 'string') {
          url._to = props;
        }
        else if (props && typeof props == 'object') {
          $.extend(url, props);
        }

        this.open_compose_step(url);
        break;

      case 'spellcheck':
        if (this.spellcheck_state()) {
          this.editor.spellcheck_stop();
        }
        else {
          this.editor.spellcheck_start();
        }
        break;

      case 'savedraft':
        // Reset the auto-save timer
        clearTimeout(this.save_timer);

        // compose form did not change (and draft wasn't saved already)
        if (this.env.draft_id && this.cmp_hash == this.compose_field_hash()) {
          this.auto_save_start();
          break;
        }

        this.submit_messageform(true);
        break;

      case 'send':
        if (!props.nocheck && !this.env.is_sent && !this.check_compose_input(command))
          break;

        // Reset the auto-save timer
        clearTimeout(this.save_timer);

        this.submit_messageform();
        break;

      case 'send-attachment':
        // Reset the auto-save timer
        clearTimeout(this.save_timer);

        if (!(flag = this.upload_file(props || this.gui_objects.uploadform, 'upload'))) {
          if (flag !== false)
            this.alert_dialog(this.get_label('selectimportfile'));
          aborted = true;
        }
        break;

      case 'insert-sig':
        this.change_identity($("[name='_from']")[0], true);
        break;

      case 'list-addresses':
        this.list_contacts(props);
        this.enable_command('add-recipient', false);
        break;

      case 'add-recipient':
        this.compose_add_recipient(props);
        break;

      case 'reply-all':
      case 'reply-list':
      case 'reply':
        if (uid = this.get_single_uid()) {
          url = {_reply_uid: uid, _mbox: this.get_message_mailbox(uid), _search: this.env.search_request};
          if (command == 'reply-all')
            // do reply-list, when list is detected and popup menu wasn't used
            url._all = (!props && this.env.reply_all_mode == 1 && this.commands['reply-list'] ? 'list' : 'all');
          else if (command == 'reply-list')
            url._all = 'list';

          this.open_compose_step(url);
        }
        break;

      case 'forward-attachment':
      case 'forward-inline':
      case 'forward':
        var uids = this.env.uid ? [this.env.uid] : (this.message_list ? this.message_list.get_selection() : []);
        if (uids.length) {
          url = { _forward_uid: this.uids_to_list(uids), _mbox: this.env.mailbox, _search: this.env.search_request };
          if (command == 'forward-attachment' || (!props && this.env.forward_attachment) || uids.length > 1)
            url._attachment = 1;
          this.open_compose_step(url);
        }
        break;

      case 'print':
        if (this.task == 'addressbook') {
          if (uid = this.get_single_cid()) {
            url = '&_action=print&_cid=' + uid;
            if (this.env.source)
              url += '&_source=' + urlencode(this.env.source);
            this.open_window(this.env.comm_path + url, true, true);
          }
        }
        else if (this.env.action == 'get' && !this.env.is_message) {
          this.gui_objects.messagepartframe.contentWindow.print();
        }
        else if (uid = this.get_single_uid()) {
          url = this.url('print', this.params_from_uid(uid, {_safe: this.env.safemode ? 1 : 0}));
          if (this.open_window(url, true, true)) {
            if (this.env.action != 'show' && this.env.action != 'get')
              this.mark_message('read', uid);
          }
        }
        break;

      case 'viewsource':
        if (uid = this.get_single_uid())
          this.open_window(this.url('viewsource', this.params_from_uid(uid)), true, true);
        break;

      case 'download':
        if (this.env.action == 'get') {
          location.href = this.secure_url(location.href.replace(/_frame=/, '_download='));
        }
        else if (uid = this.get_single_uid()) {
          this.goto_url('viewsource', this.params_from_uid(uid, {_save: 1}), false, true);
        }
        break;

      // quicksearch
      case 'search':
        return this.qsearch(props);

      // reset quicksearch
      case 'reset-search':
        var n, s = this.env.search_request || this.env.qsearch;

        this.reset_qsearch(true);

        if (s && this.env.action == 'compose') {
          if (this.contact_list)
            this.list_contacts_clear();
        }
        else if (s && this.env.mailbox) {
          this.list_mailbox(this.env.mailbox, 1);
        }
        else if (s && this.task == 'addressbook') {
          this.env.source = this.env.last_source || '';
          this.env.group = this.env.last_group || '';
          this.list_contacts(this.env.source, this.env.group, 1);
        }
        break;

      case 'pushgroup':
        // add group ID and current search to stack
        var group = {
          id: props.id,
          search_request: this.env.search_request,
          page: this.env.current_page,
          search: this.env.search_request && this.gui_objects.qsearchbox ? this.gui_objects.qsearchbox.value : null
        };

        this.env.address_group_stack.push(group);
        if (obj && event)
          rcube_event.cancel(event);

        // FIXME: no break?

      case 'listgroup':
        this.reset_qsearch();
        this.list_contacts(props.source, props.id, 1, group);
        break;

      case 'popgroup':
        if (this.env.address_group_stack.length) {
          var old = this.env.address_group_stack.pop();
          this.reset_qsearch();

          if (old.search_request) {
            // this code is executed when going back to the search result
            if (old.search && this.gui_objects.qsearchbox)
              $(this.gui_objects.qsearchbox).val(old.search);
            this.env.search_request = old.search_request;
            this.list_contacts_remote(null, null, this.env.current_page = old.page);
          }
          else
            this.list_contacts(props.source, this.env.address_group_stack[this.env.address_group_stack.length-1].id);
        }
        break;

      case 'import-messages':
        var form = props || this.gui_objects.importform,
          importlock = this.set_busy(true, 'importwait');

        if (!(flag = this.upload_file(form, 'import', importlock))) {
          this.set_busy(false, null, importlock);
          if (flag !== false)
            this.alert_dialog(this.get_label('selectimportfile'));
          this.command_aborted = true;
        }
        break;

      case 'import':
        var dialog = $('<iframe>').attr('src', this.url('import', {_framed: 1, _target: this.env.source})),
          import_func = function(e) {
            var win = dialog[0].contentWindow,
              form = null;

            if (win.rcmail.gui_objects.importformmap)
              form = win.rcmail.gui_objects.importformmap;
            else
              form = win.rcmail.gui_objects.importform;

            if (form) {
              var lock, file = win.$('#rcmimportfile')[0];
              if (file && !file.value) {
                win.rcmail.alert_dialog(win.rcmail.get_label('selectimportfile'));
                return;
              }

              lock = win.rcmail.set_busy(true, 'importwait');
              $('[name="_unlock"]', form).val(lock);
              form.submit();
              win.rcmail.lock_form(form, true);
              // disable Import button
              $(e.target).attr('disabled', true).next().focus();
            }
          },
          close_func = function(event, ui) {
            $(this).remove();
            if (ref.import_state == 'reload')
              ref.command('list');
          };

        this.import_state = null;
        this.import_dialog = this.simple_dialog(dialog, 'importcontacts', import_func, {
          close: close_func,
          button: 'import',
          width: 500,
          height: 300
        });

        break;

      case 'export':
        if (this.contact_list.rowcount > 0) {
          this.goto_url('export', { _source: this.env.source, _gid: this.env.group, _search: this.env.search_request }, false, true);
        }
        break;

      case 'export-selected':
        if (this.contact_list.rowcount > 0) {
          this.goto_url('export', { _source: this.env.source, _gid: this.env.group, _cid: this.contact_list.get_selection().join(',') }, false, true);
        }
        break;

      case 'upload-photo':
        this.upload_contact_photo(props || this.gui_objects.uploadform);
        break;

      case 'delete-photo':
        this.replace_contact_photo('-del-');
        break;

      case 'undo':
        this.http_request('undo', '', this.display_message('', 'loading'));
        break;

      // unified command call (command name == function name)
      default:
        var func = command.replace(/-/g, '_');
        if (this[func] && typeof this[func] === 'function') {
          return this[func](props, obj, event);
        }
    }
  };

  // set command(s) enabled or disabled
  this.enable_command = function()
  {
    var i, n, args = Array.prototype.slice.call(arguments),
      enable = args.pop(), cmd;

    for (n=0; n<args.length; n++) {
      cmd = args[n];
      // argument of type array
      if (typeof cmd === 'string') {
        this.commands[cmd] = enable;
        this.set_button(cmd, (enable ? 'act' : 'pas'));
        this.triggerEvent('enable-command', {command: cmd, status: enable});
      }
      // push array elements into commands array
      else {
        for (i in cmd)
          args.push(cmd[i]);
      }
    }

    this.set_menu_buttons();
  };

  this.command_enabled = function(cmd)
  {
    return this.commands[cmd];
  };

  // lock/unlock interface
  this.set_busy = function(a, message, id)
  {
    if (a && message) {
      var msg = this.get_label(message);
      if (msg == message)
        msg = 'Loading...';

      id = this.display_message(msg, 'loading');
    }
    else if (!a && id) {
      this.hide_message(id);
    }

    this.busy = a;

    if (this.gui_objects.editform)
      this.lock_form(this.gui_objects.editform, a);

    return id;
  };

  // return a localized string
  this.get_label = function(name, domain)
  {
    if (domain && this.labels[domain+'.'+name])
      return this.labels[domain+'.'+name];
    else if (this.labels[name])
      return this.labels[name];
    else
      return name;
  };

  // alias for convenience reasons
  this.gettext = this.get_label;

  // switch to another application task
  this.switch_task = function(task)
  {
    var action, path;

    if ((path = task.split('/')).length == 2) {
      task = path[0];
      action = path[1];
    }

    if (this.task === task && task != 'mail')
      return;

    var url = this.get_task_url(task);

    if (action)
      url += '&_action=' + action;

    if (task == 'mail')
      url += '&_mbox=INBOX';
    else if (task == 'logout') {
      url = this.secure_url(url);
      this.clear_compose_data();
    }

    this.redirect(url);
  };

  this.get_task_url = function(task, url)
  {
    if (!url)
      url = this.env.comm_path;

    if (url.match(/[?&]_task=[a-zA-Z0-9_-]+/))
        return url.replace(/_task=[a-zA-Z0-9_-]+/, '_task=' + task);
    else
        return url.replace(/\?.*$/, '') + '?_task=' + task;
  };

  this.reload = function(delay)
  {
    if (this.is_framed())
      parent.rcmail.reload(delay);
    else if (delay)
      setTimeout(function() { ref.reload(); }, delay);
    else if (window.location)
      location.href = this.url('', {_extwin: this.env.extwin});
  };

  // Add variable to GET string, replace old value if exists
  this.add_url = function(url, name, value)
  {
    var urldata, datax, hash = '';

    value = urlencode(value);

    if (/(#[a-z0-9_-]*)$/.test(url)) {
      hash = RegExp.$1;
      url = url.substr(0, url.length - hash.length);
    }

    if (/(\?.*)$/.test(url)) {
      urldata = RegExp.$1;
      datax = RegExp('((\\?|&)'+RegExp.escape(name)+'=[^&]*)');

      if (datax.test(urldata))
        urldata = urldata.replace(datax, RegExp.$2 + name + '=' + value);
      else
        urldata += '&' + name + '=' + value;

      return url.replace(/(\?.*)$/, urldata) + hash;
    }

    return url + '?' + name + '=' + value + hash;
  };

  // append CSRF protection token to the given url
  this.secure_url = function(url)
  {
    return this.add_url(url, '_token', this.env.request_token);
  },

  this.is_framed = function()
  {
    return this.env.framed && parent.rcmail && parent.rcmail != this && typeof parent.rcmail.command == 'function';
  };

  this.save_pref = function(prop)
  {
    var request = {_name: prop.name, _value: prop.value};

    if (prop.session)
      request._session = prop.session;
    if (prop.env)
      this.env[prop.env] = prop.value;

    this.http_post('save-pref', request);
  };

  this.html_identifier = function(str, encode)
  {
    return encode ? this.html_identifier_encode(str) : String(str).replace(this.identifier_expr, '_');
  };

  this.html_identifier_encode = function(str)
  {
    return Base64.encode(String(str)).replace(/=+$/, '').replace(/\+/g, '-').replace(/\//g, '_');
  };

  this.html_identifier_decode = function(str)
  {
    str = String(str).replace(/-/g, '+').replace(/_/g, '/');

    while (str.length % 4) str += '=';

    return Base64.decode(str);
  };


  /*********************************************************/
  /*********        event handling methods         *********/
  /*********************************************************/

  this.drag_menu = function(e, target)
  {
    var modkey = rcube_event.get_modifier(e),
      menu = this.gui_objects.dragmenu;

    if (menu && modkey == SHIFT_KEY && this.commands['copy']) {
      var pos = rcube_event.get_mouse_pos(e);
      this.env.drag_target = target;
      this.show_menu(this.gui_objects.dragmenu.id, true, e);
      $(menu).css({top: (pos.y-10)+'px', left: (pos.x-10)+'px'});
      return true;
    }

    return false;
  };

  this.drag_menu_action = function(action)
  {
    var menu = this.gui_objects.dragmenu;
    if (menu) {
      $(menu).hide();
    }

    this.command(action, this.env.drag_target);
    this.env.drag_target = null;
  };

  this.drag_start = function(list)
  {
    this.drag_active = true;

    if (this.preview_timer)
      clearTimeout(this.preview_timer);

    // prepare treelist widget for dragging interactions
    if (this.treelist)
      this.treelist.drag_start();
  };

  this.drag_end = function(e)
  {
    var list, model;

    if (this.treelist)
      this.treelist.drag_end();

    // execute drag & drop action when mouse was released
    if (list = this.message_list)
      model = this.env.mailboxes;
    else if (list = this.contact_list)
      model = this.env.contactfolders;

    // Note: we accept only mouse events to ignore dragging aborts with ESC key (#6623)
    if (this.drag_active && model && this.env.last_folder_target && !rcube_event.is_keyboard(e)) {
      var target = model[this.env.last_folder_target];
      list.draglayer.hide();

      if (this.contact_list) {
        if (!this.contacts_drag_menu(e, target))
          this.command('move', target);
      }
      else if (!this.drag_menu(e, target))
        this.command('move', target);
    }

    this.drag_active = false;
    this.env.last_folder_target = null;
  };

  this.drag_move = function(e)
  {
    if (this.gui_objects.folderlist) {
      var drag_target, oldclass,
        layerclass = 'draglayernormal',
        mouse = rcube_event.get_mouse_pos(e);

      if (this.contact_list && this.contact_list.draglayer)
        oldclass = this.contact_list.draglayer.attr('class');

      // mouse intersects a valid drop target on the treelist
      if (this.treelist && (drag_target = this.treelist.intersects(mouse, true))) {
        this.env.last_folder_target = drag_target;
        layerclass = 'draglayer' + (this.check_droptarget(drag_target) > 1 ? 'copy' : 'normal');
      }
      else {
        // Clear target, otherwise drag end will trigger move into last valid droptarget
        this.env.last_folder_target = null;
      }

      if (layerclass != oldclass && this.contact_list && this.contact_list.draglayer)
        this.contact_list.draglayer.attr('class', layerclass);
    }
  };

  this.collapse_folder = function(name)
  {
    if (this.treelist)
      this.treelist.toggle(name);
  };

  this.folder_collapsed = function(node)
  {
    if (this.folder_collapsed_timer)
      clearTimeout(this.folder_collapsed_timer);

    var prefname = this.env.task == 'addressbook' ? 'collapsed_abooks' : 'collapsed_folders',
      old = this.env[prefname],
      entry = '&' + urlencode(node.id) + '&';

    this.env[prefname] = old.replace(entry, '');

    if (node.collapsed) {
      this.env[prefname] = this.env[prefname] + entry;

      // select the folder if one of its children is currently selected
      // don't select if it's virtual (#1488346)
      if (!node.virtual && this.env.mailbox && this.env.mailbox.startsWith(node.id + this.env.delimiter))
        this.command('list', node.id);
    }

    if (!this.drag_active) {
      if (old !== this.env[prefname])
        this.folder_collapsed_timer = setTimeout(function() { ref.command('save-pref', { name: prefname, value: ref.env[prefname] }); }, 10);

      if (this.env.unread_counts)
        this.set_unread_count_display(node.id, false);
    }
  };

  // global mouse-click handler to cleanup some UI elements
  this.doc_mouse_up = function(e)
  {
    var list, id, target = rcube_event.get_target(e);

    // ignore event if jquery UI dialog is open
    if ($(target).closest('.ui-dialog, .ui-widget-overlay').length)
      return;

    // remove focus from list widgets
    if (window.rcube_list_widget && rcube_list_widget._instances.length) {
      $.each(rcube_list_widget._instances, function(i,list) {
        if (list && !rcube_mouse_is_over(e, list.list.parentNode))
          list.blur();
      });
    }

    // reset 'pressed' buttons
    if (this.buttons_sel) {
      for (id in this.buttons_sel)
        if (typeof id !== 'function')
          this.button_out(this.buttons_sel[id], id);
      this.buttons_sel = {};
    }

    // reset popup menus; delayed to have updated menu_stack data
    setTimeout(function(e) {
      var obj, skip, config, id, i, parents = $(target).parents();
      for (i = ref.menu_stack.length - 1; i >= 0; i--) {
        id = ref.menu_stack[i];
        obj = $('#' + id);

        if (obj.is(':visible')
          && target != obj.data('opener')
          && target != obj.get(0)  // check if scroll bar was clicked (#1489832)
          && !parents.is(obj.data('opener'))
          && id != skip
          && (obj.attr('data-editable') != 'true' || !$(target).parents('#' + id).length)
          && (obj.attr('data-sticky') != 'true' || !rcube_mouse_is_over(e, obj.get(0)))
        ) {
          ref.hide_menu(id, e);
        }
        skip = obj.data('parent');
      }
    }, 10, e);
  };

  // global keypress event handler
  this.doc_keypress = function(e)
  {
    // Helper method to move focus to the next/prev active menu item
    var focus_menu_item = function(dir) {
      var obj, item, mod = dir < 0 ? 'prevAll' : 'nextAll', limit = dir < 0 ? 'last' : 'first';
      if (ref.focused_menu && (obj = $('#'+ref.focused_menu))) {
        item = obj.find(':focus').closest('li')[mod]().has(':not([aria-disabled=true])').find('a,input')[limit]();
        if (!item.length)
          item = obj.find(':focus').closest('ul')[mod]().has(':not([aria-disabled=true])').find('a,input')[limit]();
        return item.focus().length;
      }

      return 0;
    };

    var target = e.target || {},
      keyCode = rcube_event.get_keycode(e);

    if (e.keyCode != 27 && (!this.menu_keyboard_active || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')) {
      return true;
    }

    switch (keyCode) {
      case 38:
      case 40:
      case 63232: // "up", in safari keypress
      case 63233: // "down", in safari keypress
        focus_menu_item(keyCode == 38 || keyCode == 63232 ? -1 : 1);
        return rcube_event.cancel(e);

      case 9:   // tab
        if (this.focused_menu) {
          var mod = rcube_event.get_modifier(e);
          if (!focus_menu_item(mod == SHIFT_KEY ? -1 : 1)) {
            this.hide_menu(this.focused_menu, e);
          }
        }
        return rcube_event.cancel(e);

      case 27:  // esc
        if (this.menu_stack.length)
          this.hide_menu(this.menu_stack[this.menu_stack.length-1], e);
        break;
    }

    return true;
  }

  // Common handler for a keypress event on a list widget
  this.list_keypress = function(list, conf)
  {
    if (list.modkey == CONTROL_KEY)
      return;

    if (list.key_pressed == list.DELETE_KEY || list.key_pressed == list.BACKSPACE_KEY)
      this.command(conf && conf.del ? conf.del : 'delete');
    else if (list.key_pressed == 33)
      this.command(conf && conf.prev ? conf.prev : 'previouspage');
    else if (list.key_pressed == 34)
      this.command(conf && conf.next ? conf.next : 'nextpage');
  };

  // Handler for a keypress event on a messages list widget
  this.msglist_keypress = function(list)
  {
    // On Enter open the message in list layout mode (no preview frame)
    if (list.key_pressed == list.ENTER_KEY && !this.env.contentframe)
      this.command('show');
    else
      this.list_keypress(list);
  };

  this.msglist_select = function(list)
  {
    if (this.preview_timer)
      clearTimeout(this.preview_timer);

    var isDraft = false,
      selected = list.get_single_selection(),
      selection = list.get_selection(false),
      selected_count = selection.length;

    this.enable_command(this.env.message_commands, selected != null);

    // Find out whether any of the selected messages comes from the Drafts folder
    if (selected_count > 0) {
      if (!this.env.multifolder_listing) {
        isDraft = this.env.mailbox == this.env.drafts_mailbox
      }
      else {
        $.each(selection, function(i, v) {
          if (ref.get_message_mailbox(v) == ref.env.drafts_mailbox) {
            isDraft = true;
            return false;
          }
        });
      }
    }

    // Disable some actions enabled above
    if (selected) {
      if (isDraft) {
        this.enable_command('reply', 'reply-all', 'reply-list', 'forward', 'forward-inline',
          'forward-attachment', 'bounce', false);
      }
      else {
        var msg = this.env.messages[selected];
        if (!msg.ml)
          this.enable_command('reply-list', false);
      }
    }

    // Multi-message commands
    this.enable_command('delete', 'move', 'copy', 'mark', selected_count > 0);
    this.enable_command('forward', 'forward-attachment', !isDraft && selected_count > 0);

    // reset all-pages-selection
    if (selected || (selected_count && selected_count != list.rowcount))
      this.select_all_mode = false;

    // start timer for message preview (wait for double click)
    if (selected && this.env.contentframe && !list.multi_selecting && !this.dummy_select) {
      // try to be responsive and try not to overload the server when user is pressing up/down key repeatedly
      var now = new Date().getTime(),
        time_diff = now - (this._last_msglist_select_time || 0),
        preview_pane_delay = this.preview_delay_click;

      // user is selecting messages repeatedly, wait until this ends (use larger delay)
      if (time_diff < this.preview_delay_select) {
        preview_pane_delay = this.preview_delay_select;
        if (this.preview_timer) {
          clearTimeout(this.preview_timer);
        }
        if (this.env.contentframe) {
          this.show_contentframe(false);
        }
      }

      this._last_msglist_select_time = now;
      this.preview_timer = setTimeout(function() { ref.msglist_get_preview(); }, preview_pane_delay);
    }
    else if (this.env.contentframe) {
      this.show_contentframe(false);
    }
  };

  this.msglist_dbl_click = function(list)
  {
    if (this.preview_timer)
      clearTimeout(this.preview_timer);

    var mbox, uid = list.get_single_selection();

    // TODO: Here we should just use this.command('show') but we can't
    // because at this point this.busy=true (set by msglist_get_preview())

    if (uid) {
      mbox = this.get_message_mailbox(uid);
      if (mbox == this.env.drafts_mailbox)
        this.open_compose_step({_draft_uid: uid, _mbox: mbox});
      else
        this.show_message(uid);
    }
  };

  this.msglist_get_preview = function()
  {
    var uid = this.get_single_uid();
    if (uid && this.env.contentframe && !this.drag_active)
      this.show_message(uid, false, true);
    else if (this.env.contentframe)
      this.show_contentframe(false);
  };

  this.msglist_expand = function(row)
  {
    if (this.env.messages[row.uid])
      this.env.messages[row.uid].expanded = row.expanded;
    $(row.obj)[row.expanded?'addClass':'removeClass']('expanded');
  };

  this.msglist_set_coltypes = function(list)
  {
    var i, found, name, cols = list.thead.rows[0].cells;

    this.env.listcols = [];

    for (i=0; i<cols.length; i++)
      if (cols[i].id && cols[i].id.startsWith('rcm')) {
        name = cols[i].id.slice(3);
        this.env.listcols.push(name);
      }

    // update message list setup
    this.msglist_setup(this.env.layout);

    if ((found = $.inArray('flag', this.env.listcols)) >= 0)
      this.env.flagged_col = found;

    if ((found = $.inArray('subject', this.env.listcols)) >= 0)
      this.env.subject_col = found;

    this.command('save-pref', { name: 'list_cols', value: this.env.listcols, session: 'list_attrib/columns' });
  };

  this.msglist_setup = function(layout)
  {
    var ret, listcols;

    // allow plugins or skins to override default list layout
    if (ret = this.triggerEvent('msglist_layout', layout))
      layout = ret;

    listcols = this.env[layout == 'widescreen' ? 'listcols_widescreen' : 'listcols'];

    if (layout == 'widescreen' && !this.env.threading)
      listcols = $.grep(listcols, function(value) { return value != 'threads'; });

    // set env vars for message list
    this.env.msglist_layout = layout;
    this.env.msglist_cols = listcols;

    // Set sort-* class on the list element
    var list = this.gui_objects.messagelist,
      classes = list.className.split(' ').filter(function(v) { return !v.startsWith('sort-'); });

    classes.push('sort-' + (this.env.sort_col || 'none'));
    list.className = classes.join(' ');
  };

  this.check_droptarget = function(id)
  {
    switch (this.task) {
      case 'mail':
        return (this.env.mailboxes[id]
            && !this.env.mailboxes[id].virtual
            && (this.env.mailboxes[id].id != this.env.mailbox || this.is_multifolder_listing())) ? 1 : 0;

      case 'addressbook':
        var target;
        if (id != this.env.source && (target = this.env.contactfolders[id])) {
          // droptarget is a group
          if (target.type == 'group') {
            if (target.id != this.env.group && !this.env.contactfolders[target.source].readonly) {
              var is_other = this.env.selection_sources.length > 1 || $.inArray(target.source, this.env.selection_sources) == -1;
              return !is_other || this.commands.move ? 1 : 2;
            }
          }
          // droptarget is a (writable) addressbook and it's not the source
          else if (!target.readonly && (this.env.selection_sources.length > 1 || $.inArray(id, this.env.selection_sources) == -1)) {
            return this.commands.move ? 1 : 2;
          }
        }
    }

    return 0;
  };

  // open popup window
  this.open_window = function(url, small, toolbar)
  {
    var wname = 'rcmextwin' + new Date().getTime();

    url += (url.match(/\?/) ? '&' : '?') + '_extwin=1';

    if (this.env.standard_windows)
      var extwin = window.open(url, wname);
    else {
      var win = this.is_framed() ? parent.window : window,
        page = $(win),
        page_width = page.width(),
        page_height = bw.mz ? $('body', win).height() : page.height(),
        w = Math.min(small ? this.env.popup_width_small : this.env.popup_width, page_width),
        h = page_height, // always use same height
        l = (win.screenLeft || win.screenX) + 20,
        t = (win.screenTop || win.screenY) + 20,
        extwin = window.open(url, wname,
          'width='+w+',height='+h+',top='+t+',left='+l+',resizable=yes,location=no,scrollbars=yes'
          +(toolbar ? ',toolbar=yes,menubar=yes,status=yes' : ',toolbar=no,menubar=no,status=no'));
    }

    // detect popup blocker (#1489618)
    // don't care this might not work with all browsers
    if (!extwin || extwin.closed) {
      this.display_message('windowopenerror', 'warning');
      return;
    }

    // write loading... message to empty windows
    if (!url && extwin.document) {
      extwin.document.write('<html><body>' + this.get_label('loading') + '</body></html>');
    }

    // allow plugins to grab the window reference (#1489413)
    this.triggerEvent('openwindow', { url:url, handle:extwin });

    // focus window, delayed to bring to front
    setTimeout(function() { extwin && extwin.focus(); }, 10);

    return extwin;
  };


  /*********************************************************/
  /*********     (message) list functionality      *********/
  /*********************************************************/

  this.init_message_row = function(row)
  {
    var i, fn = {}, uid = row.uid,
      status_icon = (this.env.status_col != null ? 'status' : 'msg') + 'icn' + row.id;

    if (uid && this.env.messages[uid])
      $.extend(row, this.env.messages[uid]);

    // set eventhandler to status icon
    if (row.icon = document.getElementById(status_icon)) {
      fn.icon = function(e) { ref.command('toggle_status', uid); };
    }

    // save message icon position too
    if (this.env.status_col != null)
      row.msgicon = document.getElementById('msgicn'+row.id);
    else
      row.msgicon = row.icon;

    // set eventhandler to flag icon
    if (this.env.flagged_col != null && (row.flagicon = document.getElementById('flagicn'+row.id))) {
      fn.flagicon = function(e) { ref.command('toggle_flag', uid); };
    }

    // set event handler to thread expand/collapse icon
    if (!row.depth && row.has_children && (row.expando = document.getElementById('rcmexpando'+row.id))) {
      fn.expando = function(e) { ref.expand_message_row(e, uid); };
    }

    // attach events
    $.each(fn, function(i, f) {
      row[i].onclick = function(e) { f(e); return rcube_event.cancel(e); };
      if (bw.touch && row[i].addEventListener) {
        row[i].addEventListener('touchend', function(e) {
          if (e.changedTouches.length == 1) {
            f(e);
            return rcube_event.cancel(e);
          }
        }, false);
      }
    });

    this.triggerEvent('insertrow', { uid:uid, row:row });
  };

  // create a table row in the message list
  this.add_message_row = function(uid, cols, flags, attop)
  {
    if (!this.gui_objects.messagelist || !this.message_list)
      return false;

    // Prevent from adding messages from different folder (#1487752)
    if (flags.mbox != this.env.mailbox && !flags.skip_mbox_check)
      return false;

    // When deleting messages fast it may happen that the same message
    // from the next page could be added many times, we prevent this here
    if (this.message_list.rows[uid])
      return false;

    if (!this.env.messages[uid])
      this.env.messages[uid] = {};

    // merge flags over local message object
    $.extend(this.env.messages[uid], {
      deleted: flags.deleted?1:0,
      replied: flags.answered?1:0,
      unread: !flags.seen?1:0,
      forwarded: flags.forwarded?1:0,
      flagged: flags.flagged?1:0,
      has_children: flags.has_children?1:0,
      depth: flags.depth?flags.depth:0,
      unread_children: flags.unread_children || 0,
      flagged_children: flags.flagged_children || 0,
      parent_uid: flags.parent_uid || 0,
      selected: this.select_all_mode || this.message_list.in_selection(uid),
      ml: flags.ml?1:0,
      ctype: flags.ctype,
      mbox: flags.mbox,
      // flags from plugins
      flags: flags.extra_flags
    });

    var c, n, col, html, css_class, label, status_class = '', status_label = '',
      tree = '', expando = '',
      list = this.message_list,
      rows = list.rows,
      message = this.env.messages[uid],
      msg_id = this.html_identifier(uid,true),
      row_class = 'message'
        + (!flags.seen ? ' unread' : '')
        + (flags.deleted ? ' deleted' : '')
        + (flags.flagged ? ' flagged' : '')
        + (message.selected ? ' selected' : ''),
      row = { cols:[], style:{}, id:'rcmrow'+msg_id, uid:uid },
      layout = this.env.msglist_layout,
      listcols = this.env.msglist_cols;

    // widescreen layout does not have a separate status column
    if (layout == 'widescreen')
      this.env.status_col = null;
    else if ((n = $.inArray('status', listcols)) >= 0)
      this.env.status_col = n;

    // message status icons
    css_class = 'msgicon';
    if (this.env.status_col === null) {
      css_class += ' status';
      if (flags.deleted) {
        status_class += ' deleted';
        status_label += this.get_label('deleted') + ' ';
      }
      else if (!flags.seen) {
        status_class += ' unread';
        status_label += this.get_label('unread') + ' ';
      }
      else if (flags.unread_children > 0) {
        status_class += ' unreadchildren';
      }
    }
    if (flags.answered) {
      status_class += ' replied';
      status_label += this.get_label('replied') + ' ';
    }
    if (flags.forwarded) {
      status_class += ' forwarded';
      status_label += this.get_label('forwarded') + ' ';
    }

    // update selection
    if (message.selected && !list.in_selection(uid))
      list.selection.push(uid);

    // threads
    if (this.env.threading) {
      if (message.depth) {
        // This assumes that div width is hardcoded to 15px,
        tree += '<span id="rcmtab' + msg_id + '" class="branch" style="width:' + (message.depth * 15) + 'px;">&nbsp;&nbsp;</span>';

        if ((rows[message.parent_uid] && rows[message.parent_uid].expanded === false)
          || ((this.env.autoexpand_threads == 0 || this.env.autoexpand_threads == 2) &&
            (!rows[message.parent_uid] || !rows[message.parent_uid].expanded))
        ) {
          row.style.display = 'none';
          message.expanded = false;
        }
        else
          message.expanded = true;

        row_class += ' thread expanded';
      }
      else if (message.has_children) {
        if (message.expanded === undefined && (this.env.autoexpand_threads == 1 || (this.env.autoexpand_threads == 2 && message.unread_children))) {
          message.expanded = true;
        }

        expando = '<div id="rcmexpando' + row.id + '" class="' + (message.expanded ? 'expanded' : 'collapsed') + '">&nbsp;&nbsp;</div>';
        row_class += ' thread' + (message.expanded ? ' expanded' : '');
      }

      if (flags.unread_children && flags.seen && !message.expanded)
        row_class += ' unroot';

      if (flags.flagged_children && !message.expanded)
        row_class += ' flaggedroot';
    }

    tree += '<span id="msgicn'+row.id+'" class="'+css_class+status_class+'" title="'+status_label+'"></span>';
    row.className = row_class;

    // build subject link
    if (cols.subject) {
      var action  = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show',
        uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid',
        query = { _mbox: flags.mbox };
      query[uid_param] = uid;
      cols.subject = '<a href="' + this.url(action, query) + '" onclick="return rcube_event.keyboard_only(event)"' +
        ' onmouseover="rcube_webmail.long_subject_title(this,'+(message.depth+1)+')" tabindex="-1"><span>'+cols.subject+'</span></a>';
    }

    // add each submitted col
    for (n in listcols) {
      c = listcols[n];
      col = {className: String(c).toLowerCase(), events:{}};

      if (this.env.coltypes[c] && this.env.coltypes[c].hidden) {
        col.className += ' hidden';
      }

      if (c == 'flag') {
        css_class = (flags.flagged ? 'flagged' : 'unflagged');
        label = this.get_label(css_class);
        html = '<span id="flagicn'+row.id+'" class="'+css_class+'" title="'+label+'"></span>';
      }
      else if (c == 'attachment') {
        label = this.get_label('withattachment');
        if (flags.attachmentClass)
          html = '<span class="'+flags.attachmentClass+'" title="'+label+'"></span>';
        else if (flags.ctype == 'multipart/report')
          html = '<span class="report"></span>';
        else if (flags.ctype == 'multipart/encrypted' || flags.ctype == 'application/pkcs7-mime')
          html = '<span class="encrypted"></span>';
        else if (flags.hasattachment || (!flags.hasnoattachment && /application\/|multipart\/(m|signed)/.test(flags.ctype)))
          html = '<span class="attachment" title="'+label+'"></span>';
        else
          html = '&nbsp;';
      }
      else if (c == 'status') {
        label = '';
        if (flags.deleted) {
          css_class = 'deleted';
          label = this.get_label('deleted');
        }
        else if (!flags.seen) {
          css_class = 'unread';
          label = this.get_label('unread');
        }
        else if (flags.unread_children > 0) {
          css_class = 'unreadchildren';
        }
        else
          css_class = 'msgicon';
        html = '<span id="statusicn'+row.id+'" class="'+css_class+status_class+'" title="'+label+'"></span>';
      }
      else if (c == 'threads')
        html = expando;
      else if (c == 'subject') {
        html = tree + cols[c];
      }
      else if (c == 'priority') {
        if (flags.prio > 0 && flags.prio < 6) {
          label = this.get_label('priority') + ' ' + flags.prio;
          html = '<span class="prio'+flags.prio+'" title="'+label+'"></span>';
        }
        else
          html = '&nbsp;';
      }
      else if (c == 'folder') {
        html = '<span onmouseover="rcube_webmail.long_subject_title(this)">' + cols[c] + '<span>';
      }
      else
        html = cols[c];

      col.innerHTML = html;
      row.cols.push(col);
    }

    if (layout == 'widescreen')
      row = this.widescreen_message_row(row, uid, message);

    list.insert_row(row, attop);

    // remove 'old' row
    if (attop && this.env.pagesize && list.rowcount > this.env.pagesize) {
      var uid = list.get_last_row();
      list.remove_row(uid);
      list.clear_selection(uid);
    }
  };

  // Converts standard message list record into "widescreen" (3-column) layout
  this.widescreen_message_row = function(row, uid, message)
  {
    var domrow = document.createElement('tr');

    domrow.id = row.id;
    domrow.uid = row.uid;
    domrow.className = row.className;
    if (row.style) $.extend(domrow.style, row.style);

    $.each(this.env.widescreen_list_template, function() {
      if (!ref.env.threading && this.className == 'threads')
        return;

      var i, n, e, col, domcol,
        domcell = document.createElement('td');

      if (this.className) domcell.className = this.className;

      for (i=0; this.cells && i < this.cells.length; i++) {
        for (n=0; row.cols && n < row.cols.length; n++) {
          if (this.cells[i] == row.cols[n].className) {
            col = row.cols[n];
            domcol = document.createElement('span');
            domcol.className = this.cells[i];
            if (this.className == 'subject' && domcol.className != 'subject')
              domcol.className += ' skip-on-drag';
            if (col.innerHTML)
              domcol.innerHTML = col.innerHTML;
            domcell.appendChild(domcol);
            break;
          }
        }
      }

      domrow.appendChild(domcell);
    });

    if (this.env.threading && message.depth) {
      n = this.calculate_thread_padding(message.depth);
      $('td.subject', domrow).attr('style', 'padding-left:' + n + ' !important');
      $('span.branch', domrow).remove();
    }

    return domrow;
  };

  this.calculate_thread_padding = function(level)
  {
     ref.env.thread_padding.match(/^([0-9.]+)(.+)/);
     return (Math.min(6, level) * parseFloat(RegExp.$1)) + RegExp.$2;
  };

  this.set_list_sorting = function(sort_col, sort_order)
  {
    var sort_old = this.env.sort_col == 'arrival' ? 'date' : this.env.sort_col,
      sort_new = sort_col == 'arrival' ? 'date' : sort_col;

    // set table header class
    $('#rcm' + sort_old).removeClass('sorted' + this.env.sort_order.toUpperCase());
    if (sort_new)
      $('#rcm' + sort_new).addClass('sorted' + sort_order);

    // if sorting by 'arrival' is selected, click on date column should not switch to 'date'
    $('#rcmdate > a').prop('rel', sort_col == 'arrival' ? 'arrival' : 'date');

    this.env.sort_col = sort_col;
    this.env.sort_order = sort_order;
  };

  this.set_list_options = function(cols, sort_col, sort_order, threads, layout)
  {
    var update, post_data = {};

    if (sort_col === undefined)
      sort_col = this.env.sort_col;
    if (!sort_order)
      sort_order = this.env.sort_order;

    if (this.env.sort_col != sort_col || this.env.sort_order != sort_order) {
      update = 1;
      this.set_list_sorting(sort_col, sort_order);
    }

    if (this.env.threading != threads) {
      update = 1;
      post_data._threads = threads;
    }

    if (layout && this.env.layout != layout) {
      this.triggerEvent('layout-change', {old_layout: this.env.layout, new_layout: layout});
      update = 1;
      this.env.layout = post_data._layout = layout;

      // update message list setup
      this.msglist_setup(this.env.layout);
    }

    if (cols && cols.length) {
      // make sure new columns are added at the end of the list
      var i, idx, name, newcols = [], oldcols = this.env.listcols;

      for (i=0; i<oldcols.length; i++) {
        name = oldcols[i];
        idx = $.inArray(name, cols);
        if (idx != -1) {
          newcols.push(name);
          delete cols[idx];
        }
      }
      for (i=0; i<cols.length; i++)
        if (cols[i])
          newcols.push(cols[i]);

      if (newcols.join() != oldcols.join()) {
        update = 1;
        post_data._cols = newcols.join(',');
      }
    }

    if (update)
      this.list_mailbox('', '', sort_col+'_'+sort_order, post_data);
  };

  // when user double-clicks on a row
  this.show_message = function(id, safe, preview)
  {
    if (!id)
      return;

    var win, target = window,
      url = this.params_from_uid(id, {_caps: this.browser_capabilities()});

    if (preview && (win = this.get_frame_window(this.env.contentframe))) {
      target = win;
      url._framed = 1;
    }

    if (safe)
      url._safe = 1;

    // also send search request to get the right messages
    if (this.env.search_request)
      url._search = this.env.search_request;

    if (this.env.extwin)
      url._extwin = 1;

    url = this.url(preview ? 'preview': 'show', url);

    if (preview)
      this.preview_id = id;

    if (preview && String(target.location.href).indexOf(url) >= 0) {
      this.show_contentframe(true);
    }
    else {
      if (!preview && this.env.message_extwin && !this.env.extwin)
        this.open_window(url, true);
      else {
        // "Allow remote resources" reloads the page, we remove this request from the history,
        // so Back button works as expected, i.e. ignores the reload request (#6620)
        if (safe && document.referrer && window.history.replaceState)
          window.history.replaceState({}, '', document.referrer);

        this.location_href(url, target, true);
      }
    }
  };

  // update message status and unread counter after marking a message as read
  this.set_unread_message = function(id, folder)
  {
    var self = this;

    // find window with messages list
    if (!self.message_list)
      self = self.opener();

    if (!self && window.parent)
      self = parent.rcmail;

    if (!self || !self.message_list)
      return;

    // this may fail in multifolder mode
    if (self.set_message(id, 'unread', false) === false)
      self.set_message(id + '-' + folder, 'unread', false);

    if (self.env.unread_counts[folder] > 0) {
      self.env.unread_counts[folder] -= 1;
      self.set_unread_count(folder, self.env.unread_counts[folder], folder == 'INBOX' && !self.is_multifolder_listing());
    }
  };

  this.show_contentframe = function(show)
  {
    var frame, win, name = this.env.contentframe;

    if (frame = this.get_frame_element(name)) {
      if (!show && (win = this.get_frame_window(name))) {
        if (win.location.href.indexOf(this.env.blankpage) < 0) {
          if (win.stop)
            win.stop();
          else // IE
            win.document.execCommand('Stop');

          win.location.href = this.env.blankpage;
        }
      }
      else if (!bw.safari && !bw.konq)
        $(frame)[show ? 'show' : 'hide']();
    }

    if (!show) {
      this.unlock_frame();
      delete this.preview_id;
    }
  };

  this.get_frame_element = function(id)
  {
    var frame;

    if (id && (frame = document.getElementById(id)))
      return frame;
  };

  this.get_frame_window = function(id)
  {
    var frame = this.get_frame_element(id);

    if (frame && frame.name && window.frames)
      return window.frames[frame.name];
  };

  this.lock_frame = function(target)
  {
    var rc = this.is_framed() ? parent.rcmail : this;

    if (!rc.env.frame_lock)
      rc.env.frame_lock = rc.set_busy(true, 'loading');

    try {
      if (target.frameElement)
        $(target.frameElement).on('load.lock', function(e) {
          rc.unlock_frame();
          $(this).off('load.lock');
        });
    } catch(e) { /* Ignore permission denied error */ };
  };

  this.unlock_frame = function()
  {
    if (this.env.frame_lock) {
      this.set_busy(false, null, this.env.frame_lock);
      this.env.frame_lock = null;
    }
  };

  // list a specific page
  this.list_page = function(page)
  {
    if (page == 'next')
      page = this.env.current_page+1;
    else if (page == 'last')
      page = this.env.pagecount;
    else if (page == 'prev' && this.env.current_page > 1)
      page = this.env.current_page-1;
    else if (page == 'first' && this.env.current_page > 1)
      page = 1;

    if (page > 0 && page <= this.env.pagecount) {
      this.env.current_page = page;

      if (this.task == 'addressbook' || this.contact_list)
        this.list_contacts(this.env.source, this.env.group, page);
      else if (this.task == 'mail')
        this.list_mailbox(this.env.mailbox, page);
    }
  };

  // sends request to check for recent messages
  this.checkmail = function()
  {
    var lock = this.set_busy(true, 'checkingmail'),
      params = this.check_recent_params();

    this.http_post('check-recent', params, lock);
  };

  // list messages of a specific mailbox using filter
  this.filter_mailbox = function(filter)
  {
    if (this.filter_disabled)
      return;

    var params = this.search_params(false, filter),
      lock = this.set_busy(true, 'searching');

    this.clear_message_list();

    // reset vars
    this.env.current_page = 1;
    this.env.search_filter = filter;
    this.http_request('search', params, lock);
    this.update_state({_mbox: params._mbox, _filter: filter, _scope: params._scope});
  };

  // reload the current message listing
  this.refresh_list = function()
  {
    this.list_mailbox(this.env.mailbox, this.env.current_page || 1, null, { _clear:1 }, true);
    if (this.message_list)
      this.message_list.clear_selection();
  };

  // list messages of a specific mailbox
  this.list_mailbox = function(mbox, page, sort, url, update_only)
  {
    var win, target = window;

    if (typeof url != 'object')
      url = {};

    if (!mbox)
      mbox = this.env.mailbox ? this.env.mailbox : 'INBOX';

    // add sort to url if set
    if (sort)
      url._sort = sort;

    // folder change, reset page, search scope, etc.
    if (this.env.mailbox != mbox) {
      page = 1;
      this.env.current_page = page;
      this.env.search_scope = 'base';
      this.select_all_mode = false;
      this.reset_search_filter();
    }
    // also send search request to get the right messages
    else if (this.env.search_request)
      url._search = this.env.search_request;

    if (!update_only) {
      // unselect selected messages and clear the list and message data
      this.clear_message_list();

      if (mbox != this.env.mailbox || (mbox == this.env.mailbox && !page && !sort))
        url._refresh = 1;

      this.select_folder(mbox, '', true);
      this.unmark_folder(mbox, 'recent', '', true);
      this.env.mailbox = mbox;
    }

    // load message list remotely
    if (this.gui_objects.messagelist) {
      this.list_mailbox_remote(mbox, page, url);
      return;
    }

    if (win = this.get_frame_window(this.env.contentframe)) {
      target = win;
      url._framed = 1;
    }

    if (this.env.uid)
      url._uid = this.env.uid;

    if (page)
      url._page = page;

    // load message list to target frame/window
    if (mbox) {
      url._mbox = mbox;
      this.set_busy(true, 'loading');
      this.location_href(url, target);
    }
  };

  this.clear_message_list = function()
  {
    this.env.messages = {};

    this.show_contentframe(false);
    if (this.message_list)
      this.message_list.clear(true);
  };

  // send remote request to load message list
  this.list_mailbox_remote = function(mbox, page, url)
  {
    var lock = this.set_busy(true, 'loading');

    if (typeof url != 'object')
      url = {};

    url._layout = this.env.layout
    url._mbox = mbox;
    url._page = page;

    this.http_request('list', url, lock);
    this.update_state({ _mbox: mbox, _page: (page && page > 1 ? page : null) });
  };

  // removes messages that doesn't exists from list selection array
  this.update_selection = function()
  {
    var list = this.message_list,
      selected = list.selection,
      rows = list.rows,
      i, selection = [];

    for (i in selected)
      if (rows[selected[i]])
        selection.push(selected[i]);

    list.selection = selection;

    // reset preview frame, if currently previewed message is not selected (has been removed)
    try {
      var win = this.get_frame_window(this.env.contentframe),
        id = win.rcmail.env.uid;

      if (id && !list.in_selection(id))
        this.show_contentframe(false);
    }
    catch (e) {};
  };

  // expand all threads with unread children
  this.expand_unread = function()
  {
    var r, tbody = this.message_list.tbody,
      new_row = tbody.firstChild;

    while (new_row) {
      if (new_row.nodeType == 1 && (r = this.message_list.rows[new_row.uid]) && r.unread_children) {
        this.message_list.expand_all(r);
        this.set_unread_children(r.uid);
      }

      new_row = new_row.nextSibling;
    }

    return false;
  };

  // thread expanding/collapsing handler
  this.expand_message_row = function(e, uid)
  {
    var row = this.message_list.rows[uid];

    // handle unread_children/flagged_children mark
    row.expanded = !row.expanded;
    this.set_unread_children(uid);
    this.set_flagged_children(uid);
    row.expanded = !row.expanded;

    this.message_list.expand_row(e, uid);
  };

  // message list expanding
  this.expand_threads = function()
  {
    if (!this.env.threading || !this.env.autoexpand_threads || !this.message_list)
      return;

    switch (this.env.autoexpand_threads) {
      case 2: this.expand_unread(); break;
      case 1: this.message_list.expand_all(); break;
    }
  };

  // Initializes threads indicators/expanders after list update
  this.init_threads = function(roots, mbox)
  {
    // #1487752
    if (mbox && mbox != this.env.mailbox)
      return false;

    for (var n=0, len=roots.length; n<len; n++)
      this.add_tree_icons(roots[n]);
    this.expand_threads();
  };

  // adds threads tree icons to the list (or specified thread)
  this.add_tree_icons = function(root)
  {
    var i, l, r, n, len, pos, tmp = [], uid = [],
      row, rows = this.message_list.rows;

    if (root)
      row = rows[root] ? rows[root].obj : null;
    else
      row = this.message_list.tbody.firstChild;

    while (row) {
      if (row.nodeType == 1 && (r = rows[row.uid])) {
        if (r.depth) {
          for (i=tmp.length-1; i>=0; i--) {
            len = tmp[i].length;
            if (len > r.depth) {
              pos = len - r.depth;
              if (!(tmp[i][pos] & 2))
                tmp[i][pos] = tmp[i][pos] ? tmp[i][pos]+2 : 2;
            }
            else if (len == r.depth) {
              if (!(tmp[i][0] & 2))
                tmp[i][0] += 2;
            }
            if (r.depth > len)
              break;
          }

          tmp.push(new Array(r.depth));
          tmp[tmp.length-1][0] = 1;
          uid.push(r.uid);
        }
        else {
          if (tmp.length) {
            for (i in tmp) {
              this.set_tree_icons(uid[i], tmp[i]);
            }
            tmp = [];
            uid = [];
          }
          if (root && row != rows[root].obj)
            break;
        }
      }
      row = row.nextSibling;
    }

    if (tmp.length) {
      for (i in tmp) {
        this.set_tree_icons(uid[i], tmp[i]);
      }
    }
  };

  // adds tree icons to specified message row
  this.set_tree_icons = function(uid, tree)
  {
    var i, divs = [], html = '', len = tree.length;

    for (i=0; i<len; i++) {
      if (tree[i] > 2)
        divs.push({'class': 'l3', width: 15});
      else if (tree[i] > 1)
        divs.push({'class': 'l2', width: 15});
      else if (tree[i] > 0)
        divs.push({'class': 'l1', width: 15});
      // separator div
      else if (divs.length && !divs[divs.length-1]['class'])
        divs[divs.length-1].width += 15;
      else
        divs.push({'class': null, width: 15});
    }

    for (i=divs.length-1; i>=0; i--) {
      if (divs[i]['class'])
        html += '<div class="tree '+divs[i]['class']+'" />';
      else
        html += '<div style="width:'+divs[i].width+'px" />';
    }

    if (html)
      $('#rcmtab'+this.html_identifier(uid, true)).html(html);
  };

  // update parent in a thread
  this.update_thread_root = function(uid, flag)
  {
    if (!this.env.threading)
      return;

    var root = this.message_list.find_root(uid);

    if (uid == root)
      return;

    var p = this.message_list.rows[root];

    if (flag == 'read' && p.unread_children) {
      p.unread_children--;
    }
    else if (flag == 'unread' && p.has_children) {
      // unread_children may be undefined
      p.unread_children = (p.unread_children || 0) + 1;
    }
    else if (flag == 'unflagged' && p.flagged_children) {
      p.flagged_children--;
    }
    else if (flag == 'flagged' && p.has_children) {
      p.flagged_children = (p.flagged_children || 0) + 1;
    }
    else {
      return;
    }

    this.set_message_icon(root);
    this.set_unread_children(root);
    this.set_flagged_children(root);
  };

  // update thread indicators for all messages in a thread below the specified message
  // return number of removed/added root level messages
  this.update_thread = function(uid)
  {
    if (!this.env.threading || !this.message_list.rows[uid])
      return 0;

    var r, parent, count = 0,
      list = this.message_list,
      rows = list.rows,
      row = rows[uid],
      depth = rows[uid].depth,
      roots = [];

    if (!row.depth) // root message: decrease roots count
      count--;

    // update unread_children for thread root
    if (row.depth && row.unread) {
      parent = list.find_root(uid);
      rows[parent].unread_children--;
      this.set_unread_children(parent);
    }

    // update unread_children for thread root
    if (row.depth && row.flagged) {
      parent = list.find_root(uid);
      rows[parent].flagged_children--;
      this.set_flagged_children(parent);
    }

    parent = row.parent_uid;

    // children
    row = row.obj.nextSibling;
    while (row) {
      if (row.nodeType == 1 && (r = rows[row.uid])) {
        if (!r.depth || r.depth <= depth)
          break;

        r.depth--; // move left
        // reset width and clear the content of a tab, icons will be added later
        $('#rcmtab'+r.id).width(r.depth * 15).html('');
        if (!r.depth) { // a new root
          count++; // increase roots count
          r.parent_uid = 0;
          if (r.has_children) {
            // replace 'leaf' with 'collapsed'
            $('#' + r.id + ' .leaf').first()
              .attr('id', 'rcmexpando' + r.id)
              .attr('class', (r.obj.style.display != 'none' ? 'expanded' : 'collapsed'))
              .mousedown({uid: r.uid}, function(e) {
                return ref.expand_message_row(e, e.data.uid);
              });

            r.unread_children = 0;
            roots.push(r);
          }
          // show if it was hidden
          if (r.obj.style.display == 'none')
            $(r.obj).show();
        }
        else {
          if (r.depth == depth)
            r.parent_uid = parent;
          if (r.unread && roots.length)
            roots[roots.length-1].unread_children++;
        }
      }
      row = row.nextSibling;
    }

    // update unread_children/flagged_children for roots
    for (r=0; r<roots.length; r++) {
      this.set_unread_children(roots[r].uid);
      this.set_flagged_children(roots[r].uid);
    }

    return count;
  };

  this.delete_excessive_thread_rows = function()
  {
    var rows = this.message_list.rows,
      tbody = this.message_list.tbody,
      row = tbody.firstChild,
      cnt = this.env.pagesize + 1;

    while (row) {
      if (row.nodeType == 1 && (r = rows[row.uid])) {
        if (!r.depth && cnt)
          cnt--;

        if (!cnt)
          this.message_list.remove_row(row.uid);
      }
      row = row.nextSibling;
    }
  };

  // set message icon
  this.set_message_icon = function(uid)
  {
    var css_class, label = '',
      row = this.message_list.rows[uid];

    if (!row)
      return false;

    if (row.icon) {
      css_class = 'msgicon';
      if (row.deleted) {
        css_class += ' deleted';
        label += this.get_label('deleted') + ' ';
      }
      else if (row.unread) {
        css_class += ' unread';
        label += this.get_label('unread') + ' ';
      }
      else if (row.unread_children)
        css_class += ' unreadchildren';
      if (row.msgicon == row.icon) {
        if (row.replied) {
          css_class += ' replied';
          label += this.get_label('replied') + ' ';
        }
        if (row.forwarded) {
          css_class += ' forwarded';
          label += this.get_label('forwarded') + ' ';
        }
        css_class += ' status';
      }

      $(row.icon).attr({'class': css_class, title: label});
    }

    if (row.msgicon && row.msgicon != row.icon) {
      label = '';
      css_class = 'msgicon';
      if (!row.unread && row.unread_children) {
        css_class += ' unreadchildren';
      }
      if (row.replied) {
        css_class += ' replied';
        label += this.get_label('replied') + ' ';
      }
      if (row.forwarded) {
        css_class += ' forwarded';
        label += this.get_label('forwarded') + ' ';
      }

      $(row.msgicon).attr({'class': css_class, title: label});
    }

    if (row.flagicon) {
      css_class = (row.flagged ? 'flagged' : 'unflagged');
      label = this.get_label(css_class);
      $(row.flagicon).attr('class', css_class)
        .attr({'aria-label': label, title: label});
    }
  };

  // set message status
  this.set_message_status = function(uid, flag, status)
  {
    var row = this.message_list.rows[uid];

    if (!row)
      return false;

    if (flag == 'unread') {
      if (row.unread != status)
        this.update_thread_root(uid, status ? 'unread' : 'read');
    }
    else if (flag == 'flagged') {
      this.update_thread_root(uid, status ? 'flagged' : 'unflagged');
    }

    if ($.inArray(flag, ['unread', 'deleted', 'replied', 'forwarded', 'flagged']) > -1)
      row[flag] = status;
  };

  // set message row status, class and icon
  this.set_message = function(uid, flag, status)
  {
    var row = this.message_list && this.message_list.rows[uid];

    if (!row)
      return false;

    if (flag)
      this.set_message_status(uid, flag, status);

    if ($.inArray(flag, ['unread', 'deleted', 'flagged']) > -1)
      $(row.obj)[row[flag] ? 'addClass' : 'removeClass'](flag);

    this.set_unread_children(uid);
    this.set_message_icon(uid);
  };

  // sets unroot (unread_children) class of parent row
  this.set_unread_children = function(uid)
  {
    var row = this.message_list.rows[uid];

    if (row.parent_uid)
      return;

    var enable = !row.unread && row.unread_children && !row.expanded;
    $(row.obj)[enable ? 'addClass' : 'removeClass']('unroot');
  };

  // sets flaggedroot (flagged_children) class of parent row
  this.set_flagged_children = function(uid)
  {
    var row = this.message_list.rows[uid];

    if (row.parent_uid)
      return;

    var enable = row.flagged_children && !row.expanded;
    $(row.obj)[enable ? 'addClass' : 'removeClass']('flaggedroot');
  };

  // copy selected messages to the specified mailbox
  this.copy_messages = function(mbox, event, uids)
  {
    if (mbox && typeof mbox === 'object') {
      if (mbox.uids) uids = mbox.uids;
      mbox = mbox.id;
    }
    else if (!mbox) {
      uids = this.env.uid ? [this.env.uid] : this.message_list.get_selection();
      return this.folder_selector(event, function(folder, obj) {
        ref.command('copy', {id: folder, uids: uids}, obj, event, true);
      });
    }

    // exit if current or no mailbox specified
    if (!mbox || mbox == this.env.mailbox)
      return;

    var post_data = this.selection_post_data({_target_mbox: mbox, _uid: uids});

    // exit if selection is empty
    if (!post_data._uid)
      return;

    // send request to server
    this.http_post('copy', post_data, this.display_message('copyingmessage', 'loading'));
  };

  // move selected messages to the specified mailbox
  this.move_messages = function(mbox, event, uids)
  {
    if (mbox && typeof mbox === 'object') {
      if (mbox.uids) uids = mbox.uids;
      mbox = mbox.id;
    }
    else if (!mbox) {
      uids = this.env.uid ? [this.env.uid] : this.message_list.get_selection();
      return this.folder_selector(event, function(folder, obj) {
        ref.command('move', {id: folder, uids: uids}, obj, event, true);
      });
    }

    // exit if current or no mailbox specified
    if (!mbox || (mbox == this.env.mailbox && !this.is_multifolder_listing()))
      return;

    var lock = false, post_data = this.selection_post_data({_target_mbox: mbox, _uid: uids});

    // exit if selection is empty
    if (!post_data._uid)
      return;

    // show wait message
    if (this.env.action == 'show')
      lock = this.set_busy(true, 'movingmessage');

    // Hide message command buttons until a message is selected
    this.enable_command(this.env.message_commands, false);

    this.with_selected_messages('move', post_data, lock);

    if (this.env.action != 'show')
      this.show_contentframe(false);
  };

  // delete selected messages from the current mailbox
  this.delete_messages = function(event)
  {
    var list = this.message_list, trash = this.env.trash_mailbox;

    // if config is set to flag for deletion
    if (this.env.flag_for_deletion) {
      this.mark_message('delete');
      return false;
    }
    // if there isn't a defined trash mailbox or we are in it
    else if (!trash || this.env.mailbox == trash)
      this.permanently_remove_messages();
    // we're in Junk folder and delete_junk is enabled
    else if (this.env.delete_junk && this.env.junk_mailbox && this.env.mailbox == this.env.junk_mailbox)
      this.permanently_remove_messages();
    // if there is a trash mailbox defined and we're not currently in it
    else {
      // if shift was pressed delete it immediately
      if ((list && list.modkey == SHIFT_KEY) || (event && rcube_event.get_modifier(event) == SHIFT_KEY)) {
        this.confirm_dialog(this.get_label('deletemessagesconfirm'), 'delete', function() {
            ref.permanently_remove_messages();
          });
      }
      else
        this.move_messages(trash);
    }

    return true;
  };

  // delete the selected messages permanently
  this.permanently_remove_messages = function()
  {
    var post_data = this.selection_post_data();

    // exit if selection is empty
    if (!post_data._uid)
      return;

    this.with_selected_messages('delete', post_data);
    this.show_contentframe(false);
  };

  // Send a specific move/delete request with UIDs of all selected messages
  this.with_selected_messages = function(action, post_data, lock, http_action)
  {
    var count = 0, msg,
      remove = (action == 'delete' || !this.is_multifolder_listing());

    // update the list (remove rows, clear selection)
    if (this.message_list) {
      var n, len, id, root, roots = [],
        selection = post_data._uid,
        display_next = this.check_display_next();

      if (selection === '*')
        selection = this.message_list.get_selection();
      else if (typeof selection == 'string')
        selection = selection.split(',');

      for (n=0, len=selection.length; n<len; n++) {
        id = selection[n];

        if (this.env.threading) {
          count += this.update_thread(id);
          root = this.message_list.find_root(id);
          if (root != id && $.inArray(root, roots) < 0) {
            roots.push(root);
          }
        }

        if (remove)
          this.message_list.remove_row(id, display_next && n == selection.length-1);
      }

      // make sure there are no selected rows
      if (!display_next && remove)
        this.message_list.clear_selection();

      // update thread tree icons
      for (n=0, len=roots.length; n<len; n++) {
        this.add_tree_icons(roots[n]);
      }
    }

    if (count < 0)
      post_data._count = (count*-1);
    // remove threads from the end of the list
    else if (count > 0 && remove)
      this.delete_excessive_thread_rows();

    if (!remove)
      post_data._refresh = 1;

    if (!lock) {
      msg = action == 'move' ? 'movingmessage' : 'deletingmessage';
      lock = this.display_message(msg, 'loading');
    }

    // send request to server
    this.http_post(http_action || action, post_data, lock);
  };

  // build post data for message delete/move/copy/flag requests
  this.selection_post_data = function(data)
  {
    if (typeof(data) != 'object')
      data = {};

    if (!data._uid)
      data._uid = this.env.uid ? [this.env.uid] : this.message_list.get_selection();

    data._mbox = this.env.mailbox;
    data._uid = this.uids_to_list(data._uid);

    if (this.env.action)
      data._from = this.env.action;

    // also send search request to get the right messages
    if (this.env.search_request)
      data._search = this.env.search_request;

    if (this.env.display_next && this.env.next_uid)
      data._next_uid = this.env.next_uid;

    return data;
  };

  this.check_display_next = function()
  {
    return this.env.display_next && (this.preview_id || !this.env.contentframe);
  };

  // set a specific flag to one or more messages
  this.mark_message = function(flag, uid)
  {
    var a_uids = [], r_uids = [], len, n, id,
      list = this.message_list;

    if (uid)
      a_uids.push(uid);
    else if (this.env.uid)
      a_uids.push(this.env.uid);
    else if (list)
      a_uids = list.get_selection();

    if (!list)
      r_uids = a_uids;
    else {
      list.focus();
      for (n=0, len=a_uids.length; n<len; n++) {
        id = a_uids[n];
        if ((flag == 'read' && list.rows[id].unread)
            || (flag == 'unread' && !list.rows[id].unread)
            || (flag == 'delete' && !list.rows[id].deleted)
            || (flag == 'undelete' && list.rows[id].deleted)
            || (flag == 'flagged' && !list.rows[id].flagged)
            || (flag == 'unflagged' && list.rows[id].flagged)
        ) {
          r_uids.push(id);
        }
      }
    }

    // nothing to do
    if (!r_uids.length && !this.select_all_mode)
      return;

    switch (flag) {
        case 'read':
        case 'unread':
          this.toggle_read_status(flag, r_uids);
          break;
        case 'delete':
        case 'undelete':
          this.toggle_delete_status(r_uids);
          break;
        case 'flagged':
        case 'unflagged':
          this.toggle_flagged_status(flag, a_uids);
          break;
    }
  };

  // set class to read/unread
  this.toggle_read_status = function(flag, a_uids)
  {
    var i, len = a_uids.length,
      post_data = this.selection_post_data({_uid: a_uids, _flag: flag}),
      lock = this.display_message('markingmessage', 'loading');

    // mark all message rows as read/unread
    for (i=0; i<len; i++)
      this.set_message(a_uids[i], 'unread', (flag == 'unread' ? true : false));

    this.http_post('mark', post_data, lock);
  };

  // set image to flagged or unflagged
  this.toggle_flagged_status = function(flag, a_uids)
  {
    var i, len = a_uids.length,
      win = this.env.contentframe ? this.get_frame_window(this.env.contentframe) : window,
      post_data = this.selection_post_data({_uid: a_uids, _flag: flag}),
      lock = this.display_message('markingmessage', 'loading');

    // mark all message rows as flagged/unflagged
    for (i=0; i<len; i++)
      this.set_message(a_uids[i], 'flagged', (flag == 'flagged' ? true : false));

    if (this.env.action == 'show' || $.inArray(this.preview_id, a_uids) >= 0)
      $(win.document.body)[flag == 'flagged' ? 'addClass' : 'removeClass']('status-flagged');

    this.http_post('mark', post_data, lock);
  };

  // mark all message rows as deleted/undeleted
  this.toggle_delete_status = function(a_uids)
  {
    var i, uid, all_deleted = true,
      len = a_uids.length,
      rows = this.message_list ? this.message_list.rows : {};

    if (len == 1) {
      if (!this.message_list || (rows[a_uids[0]] && !rows[a_uids[0]].deleted))
        this.flag_as_deleted(a_uids);
      else
        this.flag_as_undeleted(a_uids);

      return true;
    }

    for (i=0; i<len; i++) {
      uid = a_uids[i];
      if (rows[uid] && !rows[uid].deleted) {
        all_deleted = false;
        break;
      }
    }

    if (all_deleted)
      this.flag_as_undeleted(a_uids);
    else
      this.flag_as_deleted(a_uids);

    return true;
  };

  this.flag_as_undeleted = function(a_uids)
  {
    var i, len = a_uids.length,
      post_data = this.selection_post_data({_uid: a_uids, _flag: 'undelete'}),
      lock = this.display_message('markingmessage', 'loading');

    for (i=0; i<len; i++)
      this.set_message(a_uids[i], 'deleted', false);

    this.http_post('mark', post_data, lock);
  };

  this.flag_as_deleted = function(a_uids)
  {
    var r_uids = [],
      post_data = this.selection_post_data({_uid: a_uids, _flag: 'delete'}),
      lock = this.display_message('markingmessage', 'loading'),
      list = this.message_list,
      rows = list ? list.rows : {},
      count = 0,
      display_next = this.check_display_next();

    for (var i=0, len=a_uids.length; i<len; i++) {
      uid = a_uids[i];
      if (rows[uid]) {
        if (rows[uid].unread)
          r_uids[r_uids.length] = uid;

        if (this.env.skip_deleted) {
          count += this.update_thread(uid);
          list.remove_row(uid, display_next && i == list.get_selection(false).length-1);
        }
        else
          this.set_message(uid, 'deleted', true);
      }
    }

    // make sure there are no selected rows
    if (this.env.skip_deleted && list) {
      if (!display_next || !list.rowcount)
        list.clear_selection();
      if (count < 0)
        post_data._count = (count*-1);
      else if (count > 0)
        // remove threads from the end of the list
        this.delete_excessive_thread_rows();
    }

    // set of messages to mark as seen
    if (r_uids.length)
      post_data._ruid = this.uids_to_list(r_uids);

    if (this.env.skip_deleted && this.env.display_next && this.env.next_uid)
      post_data._next_uid = this.env.next_uid;

    this.http_post('mark', post_data, lock);
  };

  // flag as read without mark request (called from backend)
  // argument should be a coma-separated list of uids
  this.flag_deleted_as_read = function(uids)
  {
    var uid, i, len,
      rows = this.message_list ? this.message_list.rows : {};

    if (typeof uids == 'string')
      uids = uids.split(',');

    for (i=0, len=uids.length; i<len; i++) {
      uid = uids[i];
      if (rows[uid])
        this.set_message(uid, 'unread', false);
    }
  };

  // Converts array of message UIDs to comma-separated list for use in URL
  // with select_all mode checking
  this.uids_to_list = function(uids)
  {
    if (this.select_all_mode)
      return '*';

    // multi-folder list of uids cannot be passed as a string (#6845)
    if ($.isArray(uids) && (uids.length == 1 || String(uids[0]).indexOf('-') == -1))
      uids = uids.join(',');

    return uids;
  };

  // Sets title of the delete button
  this.set_button_titles = function()
  {
    var label = 'deletemessage';

    if (!this.env.flag_for_deletion
      && this.env.trash_mailbox && this.env.mailbox != this.env.trash_mailbox
      && (!this.env.delete_junk || !this.env.junk_mailbox || this.env.mailbox != this.env.junk_mailbox)
    )
      label = 'movemessagetotrash';

    this.set_alttext('delete', label);
  };

  // Initialize input element for list page jump
  this.init_pagejumper = function(element)
  {
    $(element).addClass('rcpagejumper')
      .on('focus', function(e) {
        // create and display popup with page selection
        var i, html = '';

        for (i = 1; i <= ref.env.pagecount; i++)
          html += '<li>' + i + '</li>';

        html = '<ul class="toolbarmenu menu">' + html + '</ul>';

        if (!ref.pagejump) {
          ref.pagejump = $('<div id="pagejump-selector" class="popupmenu"></div>')
            .appendTo(document.body)
            .on('click', 'li', function() {
              if (!ref.busy)
                $(element).val($(this).text()).change();
            });
        }

        if (ref.pagejump.data('count') != i)
          ref.pagejump.html(html);

        ref.pagejump.attr('rel', '#' + this.id).data('count', i);

        // display page selector
        ref.show_menu('pagejump-selector', true, e);
      })
      // keyboard navigation
      .on('keydown keyup click', function(e) {
        var current, selector = $('#pagejump-selector'),
          ul = $('ul', selector),
          list = $('li', ul),
          height = ul.height(),
          p = parseInt(this.value);

        if (e.which != 27 && e.which != 9 && e.which != 13 && !selector.is(':visible'))
          return ref.show_menu('pagejump-selector', true, e);

        if (e.type == 'keydown') {
          // arrow-down
          if (e.which == 40) {
            if (list.length > p)
              this.value = (p += 1);
          }
          // arrow-up
          else if (e.which == 38) {
            if (p > 1 && list.length > p - 1)
              this.value = (p -= 1);
          }
          // enter
          else if (e.which == 13) {
            return $(this).change();
          }
          // esc, tab
          else if (e.which == 27 || e.which == 9) {
            ref.hide_menu('pagejump-selector', e);
            return $(element).val(ref.env.current_page);
          }
        }

        $('li.selected', ul).removeClass('selected');

        if ((current = $(list[p - 1])).length) {
          current.addClass('selected');
          $('#pagejump-selector').scrollTop(((ul.height() / list.length) * (p - 1)) - selector.height() / 2);
        }
      })
      .on('change', function(e) {
        // go to specified page
        var p = parseInt(this.value);
        if (p && p != ref.env.current_page && !ref.busy) {
          ref.hide_menu('pagejump-selector', e);
          ref.list_page(p);
        }
      });
  };

  // Update page-jumper state on list updates
  this.update_pagejumper = function()
  {
    $('input.rcpagejumper').val(this.env.current_page).prop('disabled', this.env.pagecount < 2);
  };

  // check for mailvelope API
  this.check_mailvelope = function(action)
  {
    if (window.mailvelope) {
      this.mailvelope_load(action);
    }
    else {
      $(window).on('mailvelope', function() {
        ref.mailvelope_load(action);
      });
    }
  };

  // Load Mailvelope functionality (and initialize keyring if needed)
  this.mailvelope_load = function(action)
  {
    var keyring = this.env.mailvelope_main_keyring ? undefined : this.env.user_id,
      fn = function(kr) {
        ref.mailvelope_keyring = kr;
        ref.mailvelope_init(action, kr);
      };

    mailvelope.getVersion().then(function(v) {
      mailvelope.VERSION = v;
      mailvelope.VERSION_MAJOR = Math.floor(parseFloat(v));
      return mailvelope.getKeyring(keyring);
    }).then(fn, function(err) {
      if (keyring) {
        // attempt to create a new keyring for this app/user
        mailvelope.createKeyring(keyring).then(fn, function(err) {
          console.error(err);
        });
      } else {
        console.error(err);
      }
    });
  };

  // Initializes Mailvelope editor or display container
  this.mailvelope_init = function(action, keyring)
  {
    if (!window.mailvelope)
      return;

    if (action == 'show' || action == 'preview' || action == 'print') {
      // decrypt text body
      if (this.env.is_pgp_content) {
        var data = $(this.env.is_pgp_content).text();
        ref.mailvelope_display_container(this.env.is_pgp_content, data, keyring);
      }
      // load pgp/mime message and pass it to the mailvelope display container
      else if (this.env.pgp_mime_part) {
        var msgid = this.display_message('loadingdata', 'loading'),
          selector = this.env.pgp_mime_container;

        $.ajax({
          type: 'GET',
          url: this.url('get', { '_mbox': this.env.mailbox, '_uid': this.env.uid, '_part': this.env.pgp_mime_part }),
          error: function(o, status, err) {
            ref.http_error(o, status, err, msgid);
          },
          success: function(data) {
            ref.mailvelope_display_container(selector, data, keyring, msgid);
          }
        });
      }
    }
    else if (action == 'compose') {
      this.env.compose_commands.push('compose-encrypted');

      var sign_supported = mailvelope.VERSION_MAJOR >= 2;
      var is_html = $('[name="_is_html"]').val() > 0;

      if (sign_supported)
        this.env.compose_commands.push('compose-encrypted-signed');

      if (this.env.pgp_mime_message) {
        // fetch PGP/Mime part and open load into Mailvelope editor
        var lock = this.set_busy(true, this.get_label('loadingdata'));

        $.ajax({
          type: 'GET',
          url: this.url('get', this.env.pgp_mime_message),
          error: function(o, status, err) {
            ref.http_error(o, status, err, lock);
            ref.enable_command('compose-encrypted', !is_html);
            if (sign_supported)
              ref.enable_command('compose-encrypted-signed', !is_html);
          },
          success: function(data) {
            ref.set_busy(false, null, lock);

            if (is_html) {
              ref.command('toggle-editor', {html: false, noconvert: true});
              $('#' + ref.env.composebody).val('');
            }

            ref.compose_encrypted({ quotedMail: data });
            ref.enable_command('compose-encrypted', true);
            ref.enable_command('compose-encrypted-signed', false);
          }
        });
      }
      else {
        // enable encrypted compose toggle
        this.enable_command('compose-encrypted', !is_html);
        if (sign_supported)
          this.enable_command('compose-encrypted-signed', !is_html);
      }

      // make sure to disable encryption button after toggling editor into HTML mode
      this.addEventListener('actionafter', function(args) {
        if (args.ret && args.action == 'toggle-editor') {
          ref.enable_command('compose-encrypted', !args.props.html);
        if (sign_supported)
          ref.enable_command('compose-encrypted-signed', !args.props.html);
        }
      });
    } else if (action == 'edit-identity') {
      ref.mailvelope_identity_keygen();
    }
  };

  // handler for the 'compose-encrypted-signed' command
  this.compose_encrypted_signed = function(props)
  {
    props = props || {};
    props.signMsg = true;
    this.compose_encrypted(props);
  };

  // handler for the 'compose-encrypted' command
  this.compose_encrypted = function(props)
  {
    var options, container = $('#' + this.env.composebody).parent();

    // remove Mailvelope editor if active
    if (ref.mailvelope_editor) {
      ref.mailvelope_editor = null;
      ref.set_button('compose-encrypted', 'act');

      container.removeClass('mailvelope').find('iframe:not([aria-hidden=true])').remove();
      $('#' + ref.env.composebody).show();
      $("[name='_pgpmime']").remove();

      // re-enable commands that operate on the compose body
      ref.enable_command('toggle-editor', 'insert-response', true);
      ref.enable_command('spellcheck', !!window.googie);
      ref.enable_command('insert-sig', !!(ref.env.signatures && ref.env.identity && ref.env.signatures[ref.env.identity]));

      ref.triggerEvent('compose-encrypted', { active:false });
    }
    // embed Mailvelope editor container
    else {
      if (this.spellcheck_state())
        this.editor.spellcheck_stop();

      if (props.quotedMail) {
        options = { quotedMail: props.quotedMail, quotedMailIndent: false };
      }
      else {
        options = { predefinedText: $('#' + this.env.composebody).val() };
      }

      if (props.signMsg) {
        options.signMsg = props.signMsg;
      }

      if (this.env.compose_mode == 'reply') {
        options.quotedMailIndent = true;
        options.quotedMailHeader = this.env.compose_reply_header;
      }

      mailvelope.createEditorContainer('#' + container.attr('id'), ref.mailvelope_keyring, options).then(function(editor) {
        ref.mailvelope_editor = editor;
        ref.set_button('compose-encrypted', 'sel');

        container.addClass('mailvelope');
        $('#' + ref.env.composebody).hide();

        // disable commands that operate on the compose body
        ref.enable_command('spellcheck', 'insert-sig', 'toggle-editor', 'insert-response', false);
        ref.triggerEvent('compose-encrypted', { active:true });

        if (!$.isEmptyObject(ref.env.attachments)) {
          // notify user if losing attachments
          if (ref.env.compose_mode != 'draft'
            || Object.keys(ref.env.attachments).length != 1
            || ref.env.attachments[Object.keys(ref.env.attachments)[0]].name != 'encrypted.asc'
          ) {
            ref.alert_dialog(ref.get_label('encryptnoattachments'));
          }

          $.each(ref.env.attachments, function(name, attach) {
            ref.remove_from_attachment_list(name);
          });
        }
      }, function(err) {
        console.error(err);
        console.log(options);
      });
    }
  };

  // callback to replace the message body with the full armored
  this.mailvelope_submit_messageform = function(draft, saveonly)
  {
    // get recipients
    var recipients = [];
    $.each(['to', 'cc', 'bcc'], function(i,field) {
      var pos, rcpt, val = $('[name="_' + field + '"]').val().trim();
      while (val.length && rcube_check_email(val, true)) {
        rcpt = RegExp.$2.replace(/^<+/, '').replace(/>+$/, '');
        recipients.push(rcpt);
        val = val.substr(val.indexOf(rcpt) + rcpt.length + 1).replace(/^\s*,\s*/, '');
      }
    });

    // check if we have keys for all recipients
    var isvalid = recipients.length > 0;
    ref.mailvelope_keyring.validKeyForAddress(recipients).then(function(status) {
      var missing_keys = [];
      $.each(status, function(k,v) {
        if (v === false) {
          isvalid = false;
          missing_keys.push(k);
        }
      });

      // list recipients with missing keys
      if (!isvalid && missing_keys.length) {
        // display dialog with missing keys
        ref.simple_dialog(
          ref.get_label('nopubkeyfor').replace('$email', missing_keys.join(', ')) +
            '<p>' + ref.get_label('searchpubkeyservers') + '</p>',
          'encryptedsendialog',
          function() {
            ref.mailvelope_search_pubkeys(missing_keys, function() {
              return true; // close dialog
            });
          },
          {button: 'search'}
        );
        return false;
      }

      if (!isvalid) {
        if (!recipients.length) {
          ref.alert_dialog(ref.get_label('norecipientwarning'), function() {
            $("[name='_to']").focus();
          });
        }
        return false;
      }

      // add sender identity to recipients to be able to decrypt our very own message
      var senders = [], selected_sender = ref.env.identities[$("[name='_from'] option:selected").val()];
      $.each(ref.env.identities, function(k, sender) {
        senders.push(sender.email);
      });

      ref.mailvelope_keyring.validKeyForAddress(senders).then(function(status) {
        valid_sender = null;
        $.each(status, function(k,v) {
          if (v !== false) {
            valid_sender = k;
            if (valid_sender == selected_sender) {
              return false;  // break
            }
          }
        });

        if (!valid_sender) {
          if (!confirm(ref.get_label('nopubkeyforsender'))) {
            return false;
          }
        }

        recipients.push(valid_sender);

        ref.mailvelope_editor.encrypt(recipients).then(function(armored) {
          // all checks passed, send message
          var form = ref.gui_objects.messageform,
            hidden = $("[name='_pgpmime']", form),
            msgid = ref.set_busy(true, draft || saveonly ? 'savingmessage' : 'sendingmessage');

          form.target = ref.get_save_target(msgid);
          form._draft.value = draft ? '1' : '';
          form.action = ref.add_url(form.action, '_unlock', msgid);
          form.action = ref.add_url(form.action, '_framed', 1);

          if (saveonly) {
            form.action = ref.add_url(form.action, '_saveonly', 1);
          }

          // send pgp content via hidden field
          if (!hidden.length) {
            hidden = $('<input type="hidden" name="_pgpmime">').appendTo(form);
          }
          hidden.val(armored);

          form.submit();

        }, function(err) {
          console.log(err);
        });  // mailvelope_editor.encrypt()

      }, function(err) {
        console.error(err);
      });  // mailvelope_keyring.validKeyForAddress(senders)

    }, function(err) {
      console.error(err);
    });  // mailvelope_keyring.validKeyForAddress(recipients)

    return false;
  };

  // wrapper for the mailvelope.createDisplayContainer API call
  this.mailvelope_display_container = function(selector, data, keyring, msgid)
  {
    var error_handler = function(error) {
      // remove mailvelope frame with the error message
      $(selector + ' > iframe').remove();
      ref.hide_message(msgid);
      ref.display_message(error.message, 'error');
    };

    mailvelope.createDisplayContainer(selector, data, keyring, { senderAddress: this.env.sender }).then(function(status) {
      if (status.error && status.error.message) {
        return error_handler(status.error);
      }

      ref.hide_message(msgid);
      $(selector).children().not('iframe').hide();
      $(ref.gui_objects.messagebody).addClass('mailvelope');

      // on success we can remove encrypted part from the attachments list
      if (ref.env.pgp_mime_part)
        $('#attach' + ref.env.pgp_mime_part).remove();

      setTimeout(function() { $(window).resize(); }, 10);
    }, error_handler);
  };

  // subroutine to query keyservers for public keys
  this.mailvelope_search_pubkeys = function(emails, resolve, import_handler)
  {
    // query with publickey.js
    var deferred = [],
      pk = new PublicKey(this.env.keyservers),
      lock = ref.display_message('', 'loading');

    $.each(emails, function(i, email) {
      var d = $.Deferred();
      pk.search(email, function(results, errorCode) {
        if (errorCode !== null) {
          // rejecting would make all fail
          // d.reject(email);
          d.resolve([email]);
        }
        else {
          d.resolve([email].concat(results));
        }
      });
      deferred.push(d);
    });

    $.when.apply($, deferred).then(function() {
      var missing_keys = [],
        key_selection = [];

      // analyze results of all queries
      $.each(arguments, function(i, result) {
        var email = result.shift();
        if (!result.length) {
          missing_keys.push(email);
        }
        else {
          key_selection = key_selection.concat(result);
        }
      });

      ref.hide_message(lock);
      resolve(true);

      // show key import dialog
      if (key_selection.length) {
        ref.mailvelope_key_import_dialog(key_selection, import_handler);
      }
      // some keys could not be found
      if (missing_keys.length) {
        ref.display_message(ref.get_label('nopubkeyfor').replace('$email', missing_keys.join(', ')), 'warning');
      }
    }).fail(function() {
      console.error('Pubkey lookup failed with', arguments);
      ref.hide_message(lock);
      ref.display_message('pubkeysearcherror', 'error');
      resolve(false);
    });
  };

  // list the given public keys in a dialog with options to import
  // them into the local Mailvelope keyring
  this.mailvelope_key_import_dialog = function(candidates, import_handler)
  {
    var ul = $('<div>').addClass('listing pgpkeyimport');

    $.each(candidates, function(i, keyrec) {
      var li = $('<div>').addClass('key');

      if (keyrec.revoked)  li.addClass('revoked');
      if (keyrec.disabled) li.addClass('disabled');
      if (keyrec.expired)  li.addClass('expired');

      li.append($('<label>').addClass('keyid').text(ref.get_label('keyid')));
      li.append($('<a>').text(keyrec.keyid.substr(-8).toUpperCase())
        .attr({href: keyrec.info, target: '_blank', tabindex: '-1'}));

      li.append($('<label>').addClass('keylen').text(ref.get_label('keylength')));
      li.append($('<span>').text(keyrec.keylen));

      if (keyrec.expirationdate) {
        li.append($('<label>').addClass('keyexpired').text(ref.get_label('keyexpired')));
        li.append($('<span>').text(new Date(keyrec.expirationdate * 1000).toDateString()));
      }

      if (keyrec.revoked) {
        li.append($('<span>').addClass('keyrevoked').text(ref.get_label('keyrevoked')));
      }

      var ul_ = $('<ul>').addClass('uids');
      $.each(keyrec.uids, function(j, uid) {
        var li_ = $('<li>').addClass('uid');
        if (uid.revoked)  li_.addClass('revoked');
        if (uid.disabled) li_.addClass('disabled');
        if (uid.expired)  li_.addClass('expired');

        ul_.append(li_.text(uid.uid));
      });

      li.append(ul_);
      li.append($('<button>')
        .attr('rel', keyrec.keyid)
        .text(ref.get_label('import'))
        .addClass('button import importkey')
        .prop('disabled', keyrec.revoked || keyrec.disabled || keyrec.expired));

      ul.append(li);
    });

    // display dialog with missing keys
    ref.simple_dialog(
      $('<div>')
        .append($('<p>').html(ref.get_label('encryptpubkeysfound')))
        .append(ul),
      'importpubkeys',
      null,
      {cancel_label: 'close', cancel_button: 'close'}
    );

    // delegate handler for import button clicks
    ul.on('click', 'button.importkey', function() {
      var btn = $(this),
        keyid = btn.attr('rel'),
        pk = new PublicKey(ref.env.keyservers),
        lock = ref.display_message('', 'loading');

        // fetch from keyserver and import to Mailvelope keyring
        pk.get(keyid, function(armored, errorCode) {
          ref.hide_message(lock);

          if (errorCode) {
            ref.display_message('keyservererror', 'error');
            return;
          }

          if (import_handler) {
            import_handler(armored);
            return;
          }

          // import to keyring
          ref.mailvelope_keyring.importPublicKey(armored).then(function(status) {
            if (status === 'REJECTED') {
              // ref.alert_dialog(ref.get_label('Key import was rejected'));
            }
            else {
              var $key = keyid.substr(-8).toUpperCase();
              btn.closest('.key').fadeOut();
              ref.display_message(ref.get_label('keyimportsuccess').replace('$key', $key), 'confirmation');
            }
          }, function(err) {
            console.log(err);
          });
        });
    });
  };

  // enable key management for identity
  this.mailvelope_identity_keygen = function()
  {
    var container = $(this.gui_objects.editform).find('.identity-encryption').first();
    var identity_email = $(this.gui_objects.editform).find('.ff_email').val().trim();

    if (!container.length || !identity_email || !this.mailvelope_keyring.createKeyGenContainer)
      return;

    var key_fingerprint;
    this.mailvelope_keyring.validKeyForAddress([identity_email])
      .then(function(keys) {
        var private_keys = [];

        if (keys && keys[identity_email] && Array.isArray(keys[identity_email].keys)) {
          var checks = [];
          for (var j=0; j < keys[identity_email].keys.length; j++) {
            checks.push((function(key) {
              return ref.mailvelope_keyring.hasPrivateKey(key.fingerprint)
                .then(function(found) {
                  if (found) {
                    private_keys.push(key);
                  }
                });
            })(keys[identity_email].keys[j]));
          }
          return Promise.all(checks)
            .then(function() {
              return private_keys;
            });
        }

        return private_keys;
      }).then(function(private_keys) {
        var content = container.find('.identity-encryption-block').empty();
        if (private_keys && private_keys.length) {
          // show private key information
          $('<p>').text(ref.get_label('encryptionprivkeysinmailvelope').replace('$nr', private_keys.length)).appendTo(content);
          var ul = $('<ul>').addClass('keylist').appendTo(content);
          $.each(private_keys, function(i, key) {
            $('<li>').appendTo(ul)
              .append($('<strong>').addClass('fingerprint').text(String(key.fingerprint).toUpperCase()))
              .append($('<span>').addClass('identity').text('<' + identity_email + '> '));
          });
        } else {
          $('<p>').text(ref.get_label('encryptionnoprivkeysinmailvelope')).appendTo(content);
        }

        // show button to create a new key
        $('<button>')
          .attr('type', 'button')
          .addClass('button create')
          .text(ref.get_label('encryptioncreatekey'))
          .appendTo(content)
          .on('click', function() { ref.mailvelope_show_keygen_container(content, identity_email); });
        $('<span>').addClass('space').html('&nbsp;').appendTo(content);
        $('<button>')
          .attr('type', 'button')
          .addClass('button settings')
          .text(ref.get_label('openmailvelopesettings'))
          .appendTo(content)
          .on('click', function() { ref.mailvelope_keyring.openSettings(); });

        container.show();
        ref.triggerEvent('identity-encryption-show', { container: container });
      })
      .catch(function(err) {
        console.error('Mailvelope keyring error', err);
      })
  };

  // start pgp key generation using Mailvelope
  this.mailvelope_show_keygen_container = function(container, identity_email)
  {
    var cid = new Date().getTime();
    var user_id = {email: identity_email, fullName: $(ref.gui_objects.editform).find('.ff_name').val().trim()};
    var options = {userIds: [user_id], keySize: this.env.mailvelope_keysize};

    $('<div>').attr('id', 'mailvelope-keygen-container-' + cid)
      .css({height: '245px', marginBottom: '10px'})
      .appendTo(container.empty());

    this.mailvelope_keyring.createKeyGenContainer('#mailvelope-keygen-container-' + cid, options)
      .then(function(generator) {
        if (generator instanceof Error) {
          throw generator;
        }

        // append button to start key generation
        $('<button>')
          .attr('type', 'button')
          .addClass('button mainaction generate')
          .text(ref.get_label('generate'))
          .appendTo(container)
          .on('click', function() {
            var btn = $(this).prop('disabled', true);
            generator.generate()
              .then(function(result) {
                if (typeof result === 'string' && result.indexOf('BEGIN PGP') > 0) {
                  ref.display_message(ref.get_label('keypaircreatesuccess').replace('$identity', identity_email), 'confirmation');
                  // reset keygen view
                  ref.mailvelope_identity_keygen();
                }
              })
              .catch(function(err) {
                debugger;
                ref.display_message(err.message || 'errortitle', 'error');
                btn.prop('disabled', false);
            });
          });

        $('<span>').addClass('space').html('&nbsp;').appendTo(container);

        $('<button>')
          .attr('type', 'button')
          .addClass('button cancel')
          .text(ref.get_label('cancel'))
          .appendTo(container)
          .on('click', function() { ref.mailvelope_identity_keygen(); });

        ref.triggerEvent('identity-encryption-update', { container: container });
      })
      .catch(function(err) {
        ref.display_message('errortitle', 'error');
        // start over
        ref.mailvelope_identity_keygen();
      });
  };

  this.mdn_request_dialog = function(uid, mailbox)
  {
    var props = {
        action: 'mark',
        data: { _uid: uid, _mbox: mailbox, _flag: 'mdnsent' }
      },
      buttons = [
        {
          text: this.get_label('send'),
          'class': 'mainaction send',
          click: function(e, ui, dialog) {
            props.action = 'sendmdn';
            (ref.is_framed() ? parent.$ : $)(dialog || this).dialog('close');
          }
        },
        {
          text: this.get_label('ignore'),
          'class': 'cancel',
          click: function(e, ui, dialog) {
            (ref.is_framed() ? parent.$ : $)(dialog || this).dialog('close');
          }
        }
      ],
      mdn_func = function(event, ui) {
        ref.http_post(props.action, props.data);
        // from default close function
        $(this).remove();
      };

    if (this.env.mdn_request_save) {
      buttons.unshift({
        text: this.get_label('sendalwaysto').replace('$email', this.env.mdn_request_sender.mailto),
        'class': 'mainaction send',
        click: function(e, ui, dialog) {
          props.data._save = ref.env.mdn_request_save;
          props.data._address = ref.env.mdn_request_sender.string;
          $(e.target).next().click();
        }
      });
    }

    this.show_popup_dialog(this.get_label('mdnrequest'), this.get_label('sendreceipt'), buttons, { close: mdn_func });
  };


  /*********************************************************/
  /*********       mailbox folders methods         *********/
  /*********************************************************/

  this.expunge_mailbox = function(mbox)
  {
    var lock, post_data = {_mbox: mbox};

    // lock interface if it's the active mailbox
    if (mbox == this.env.mailbox) {
      lock = this.set_busy(true, 'loading');
      post_data._reload = 1;
      if (this.env.search_request)
        post_data._search = this.env.search_request;
    }

    // send request to server
    this.http_post('expunge', post_data, lock);
  };

  this.purge_mailbox = function(mbox)
  {
    this.confirm_dialog(this.get_label('purgefolderconfirm'), 'delete', function() {
        var lock, post_data = {_mbox: mbox};

        // lock interface if it's the active mailbox
        if (mbox == ref.env.mailbox) {
           lock = ref.set_busy(true, 'loading');
           post_data._reload = 1;
        }

        // send request to server
        ref.http_post('purge', post_data, lock);
      });

    return false;
  };

  // Mark all messages as read in:
  //   - selected folder (mode=cur)
  //   - selected folder and its subfolders (mode=sub)
  //   - all folders (mode=all)
  this.mark_all_read = function(mbox, mode)
  {
    var state, content, nodes = [],
      list = this.message_list,
      folder = mbox || this.env.mailbox,
      post_data = {_uid: '*', _flag: 'read', _mbox: folder, _folders: mode};

    if (typeof mode != 'string') {
      state = this.mark_all_read_state(folder);
      if (!state)
        return;

      if (state > 1) {
        // build content of the dialog
        $.each({cur: 1, sub: 2, all: 4}, function(i, v) {
          var id = 'readallmode' + i,
            label = $('<label>').attr('for', id).text(ref.get_label('folders-' + i)),
            input = $('<input>').attr({type: 'radio', value: i, name: 'mode', id: id, disabled: !(state & v)});

          nodes.push($('<li>').append([input, label]));
        });

        content = $('<ul class="proplist">').append(nodes);
        $('input:not([disabled])', content).first().attr('checked', true);

        this.simple_dialog(content, 'markallread',
          function() {
            ref.mark_all_read(folder, $('input:checked', content).val());
            return true;
          },
          {button: 'mark', button_class: 'save'}
        );

        return;
      }

      post_data._folders = 'cur'; // only current folder has unread messages
    }

    // mark messages on the list
    $.each(list ? list.rows : [], function(uid, row) {
      if (!row.unread)
        return;

      var mbox = ref.env.messages[uid].mbox;
      if (mode == 'all' || mbox == ref.env.mailbox
          || (mode == 'sub' && mbox.startsWith(ref.env.mailbox + ref.env.delimiter))
      ) {
        ref.set_message(uid, 'unread', false);
      }
    });

    // send the request
    this.http_post('mark', post_data, this.display_message('markingmessage', 'loading'));
  };

  // Enable/disable mark-all-read action depending on folders state
  this.mark_all_read_state = function(mbox)
  {
    var state = 0,
      li = this.treelist.get_item(mbox || this.env.mailbox),
      folder_item = $(li).is('.unread') ? 1 : 0,
      subfolder_items = $('li.unread', li).length,
      all_items = $('li.unread', ref.gui_objects.folderlist).length;

    state += folder_item;
    state += subfolder_items ? 2 : 0;
    state += all_items > folder_item + subfolder_items ? 4 : 0;

    this.enable_command('mark-all-read', state > 0);

    return state;
  };

  // Display "bounce message" dialog
  this.bounce = function(props, obj, event)
  {
    // get message uid and folder
    var uid = this.get_single_uid(),
      url = this.url('bounce', {_framed: 1, _uid: uid, _mbox: this.get_message_mailbox(uid)}),
      dialog = $('<iframe>').attr('src', url),
      get_form = function() {
        var rc = $('iframe', dialog)[0].contentWindow.rcmail;
        return {rc: rc, form: rc.gui_objects.messageform};
      },
      post_func = function() {
        var post = {}, form = get_form();

        $.each($(form.form).serializeArray(), function() { post[this.name] = this.value; });

        post._uid = form.rc.env.uid;
        post._mbox = form.rc.env.mailbox;
        delete post._action;
        delete post._task;

        if (post._to || post._cc || post._bcc) {
          ref.http_post('bounce', post, ref.set_busy(true, 'sendingmessage'));
          dialog.dialog('close');
        }
      },
      submit_func = function() {
        var form = get_form();

        if (typeof form.form != 'object')
          return false;

        if (!form.rc.check_compose_address_fields(post_func, form.form))
          return false;

        return post_func();
      };

    this.hide_menu('forwardmenu', event);

    dialog = this.simple_dialog(dialog, 'bouncemsg', submit_func, {
      button: 'bounce',
      width: 400,
      height: 300
    });

    return true;
  };


  /*********************************************************/
  /*********        message compose methods        *********/
  /*********************************************************/

  this.open_compose_step = function(p)
  {
    var url = this.url('mail/compose', p);

    // open new compose window
    if (this.env.compose_extwin && !this.env.extwin) {
      this.open_window(url);
    }
    else {
      this.redirect(url);
      if (this.env.extwin)
        window.resizeTo(Math.max(this.env.popup_width, $(window).width()), $(window).height() + 24);
    }
  };

  // init message compose form: set focus and eventhandlers
  this.init_messageform = function()
  {
    if (!this.gui_objects.messageform)
      return false;

    var elem, pos,
      input_from = $("[name='_from']"),
      input_to = $("[name='_to']"),
      input_subject = $("[name='_subject']"),
      input_message = $("[name='_message']").get(0),
      html_mode = $("[name='_is_html']").val() == '1',
      opener_rc = this.opener();

    // close compose step in opener
    if (opener_rc && opener_rc.env.action == 'compose') {
      setTimeout(function() {
        if (opener.history.length > 1)
          opener.history.back();
        else
          opener_rc.redirect(opener_rc.get_task_url('mail'));
      }, 100);
      this.env.opened_extwin = true;
    }

    if (!html_mode) {
      // On Back button Chrome will overwrite textarea with old content
      // causing e.g. the same signature is added twice (#5809)
      if (input_message.value && input_message.defaultValue !== undefined)
        input_message.value = input_message.defaultValue;

      pos = this.env.top_posting && this.env.compose_mode ? 0 : input_message.value.length;

      // add signature according to selected identity
      // if we have HTML editor, signature is added in a callback
      if (input_from.prop('type') == 'select-one') {
        // for some reason the caret initially is not at pos=0 in Firefox 51 (#5628)
        this.set_caret_pos(input_message, 0);
        this.change_identity(input_from[0]);
      }

      // set initial cursor position
      this.set_caret_pos(input_message, pos);

      // scroll to the bottom of the textarea (#1490114)
      if (pos) {
        $(input_message).scrollTop(input_message.scrollHeight);
      }
    }

    // check for locally stored compose data
    if (this.env.save_localstorage)
      this.compose_restore_dialog(0, html_mode)

    if (input_to.val() == '')
      elem = input_to;
    else if (input_subject.val() == '')
      elem = input_subject;
    else if (input_message)
      elem = input_message;

    this.env.compose_focus_elem = this.init_messageform_inputs(elem);

    // get summary of all field values
    this.compose_field_hash(true);

    // start the auto-save timer
    this.auto_save_start();
  };

  // init autocomplete events on compose form inputs
  this.init_messageform_inputs = function(focused)
  {
    var i,
      input_to = $("[name='_to']"),
      ac_fields = ['cc', 'bcc', 'replyto', 'followupto'];

    // init live search events
    this.init_address_input_events(input_to);
    for (i in ac_fields) {
      this.init_address_input_events($("[name='_"+ac_fields[i]+"']"));
    }

    if (!focused)
      focused = input_to;

    // focus first empty element (and return it)
    return $(focused).focus().get(0);
  };

  this.compose_restore_dialog = function(j, html_mode)
  {
    var i, key, formdata, index = this.local_storage_get_item('compose.index', []);

    var show_next = function(i) {
      if (++i < index.length)
        ref.compose_restore_dialog(i, html_mode)
    }

    for (i = j || 0; i < index.length; i++) {
      key = index[i];
      formdata = this.local_storage_get_item('compose.' + key, null, true);
      if (!formdata) {
        continue;
      }
      // restore saved copy of current compose_id
      if (formdata.changed && key == this.env.compose_id) {
        this.restore_compose_form(key, html_mode);
        break;
      }
      // skip records from 'other' drafts
      if (this.env.draft_id && formdata.draft_id && formdata.draft_id != this.env.draft_id) {
        continue;
      }
      // skip records on reply
      if (this.env.reply_msgid && formdata.reply_msgid != this.env.reply_msgid) {
        continue;
      }
      // show dialog asking to restore the message
      if (formdata.changed && formdata.session != this.env.session_id) {
        this.show_popup_dialog(
          this.get_label('restoresavedcomposedata')
            .replace('$date', new Date(formdata.changed).toLocaleString())
            .replace('$subject', formdata._subject)
            .replace(/\n/g, '<br/>'),
          this.get_label('restoremessage'),
          [{
            text: this.get_label('restore'),
            'class': 'mainaction restore',
            click: function(){
              ref.restore_compose_form(key, html_mode);
              ref.remove_compose_data(key);  // remove old copy
              ref.save_compose_form_local();  // save under current compose_id
              $(this).dialog('close');
            }
          },
          {
            text: this.get_label('delete'),
            'class': 'delete',
            click: function(){
              ref.remove_compose_data(key);
              $(this).dialog('close');
              show_next(i);
            }
          },
          {
            text: this.get_label('ignore'),
            'class': 'cancel',
            click: function(){
              $(this).dialog('close');
              show_next(i);
            }
          }]
        );
        break;
      }
    }
  }

  this.init_address_input_events = function(obj, props)
  {
    // configure parallel autocompletion
    if (!props && this.env.autocomplete_threads > 0) {
      props = {
        threads: this.env.autocomplete_threads,
        sources: this.env.autocomplete_sources
      };
    }

    obj.keydown(function(e) { return ref.ksearch_keydown(e, this, props); })
      .attr({autocomplete: 'off', 'aria-autocomplete': 'list', 'aria-expanded': 'false', role: 'combobox'});

    var callback = function(e) {
      if (ref.ksearch_pane && e.target === ref.ksearch_pane.get(0)) {
        return;
      }
      ref.ksearch_hide();
    };

    // hide the popup on any click
    $(document).on('click', callback);
    // and on scroll (that cannot be jQuery.on())
    document.addEventListener('scroll', callback, true);
  };

  this.submit_messageform = function(draft, saveonly)
  {
    var form = this.gui_objects.messageform;

    if (!form)
      return;

    // the message has been sent but not saved, ask the user what to do
    if (!saveonly && this.env.is_sent) {
      return this.simple_dialog(this.get_label('messageissent'), '', // TODO: dialog title
        function() {
          ref.submit_messageform(false, true);
          return true;
        }
      );
    }

    // delegate sending to Mailvelope routine
    if (this.mailvelope_editor) {
      return this.mailvelope_submit_messageform(draft, saveonly);
    }

    // all checks passed, send message
    var msgid = this.set_busy(true, draft || saveonly ? 'savingmessage' : 'sendingmessage'),
      lang = this.spellcheck_lang(),
      files = [];

    // send files list
    $('li', this.gui_objects.attachmentlist).each(function() { files.push(this.id.replace(/^rcmfile/, '')); });
    $('[name="_attachments"]', form).val(files.join());

    form.target = this.get_save_target(msgid);
    form._draft.value = draft ? '1' : '';
    form.action = this.add_url(form.action, '_unlock', msgid);
    form.action = this.add_url(form.action, '_framed', 1);

    if (lang)
        form.action = this.add_url(form.action, '_lang', lang);
    if (saveonly)
      form.action = this.add_url(form.action, '_saveonly', 1);

    // register timer to notify about connection timeout
    this.submit_timer = setTimeout(function() {
      ref.set_busy(false, null, msgid);
      ref.display_message('requesttimedout', 'error');
    }, this.env.request_timeout * 1000);

    form.submit();
  };

  this.compose_recipient_select = function(list)
  {
    var id, n, recipients = 0, selection = list.get_selection();
    for (n=0; n < selection.length; n++) {
      id = selection[n];
      if (this.env.contactdata[id])
        recipients++;
    }
    this.enable_command('add-recipient', recipients);
  };

  this.compose_add_recipient = function(field)
  {
    // find last focused field name
    if (!field) {
      field = $(this.env.focused_field).filter(':visible');
      field = field.length ? field.attr('id').replace('_', '') : 'to';
    }

    var recipients = [], input = $('#_' + field), selection = this.contact_list.get_selection();

    if (this.contact_list && selection.length) {
      var data, name, n, id;
      for (n = 0; n < selection.length; n++) {
        if ((id = selection[n]) && (data = this.env.contactdata[id])) {
          name = data.name || data

          // group is added, expand it
          if (id.charAt(0) == 'E' && input.length) {
            // We wrap the group name with invisible markers to prevent from problems with group expanding (#7569)
            name = '\u200b' + name + '\u200b';
            var gid = id.substr(1);
            this.group2expand[gid] = {name: name, input: input.get(0)};
            this.http_request('group-expand', {_source: data.source || this.env.source, _gid: gid}, false);
          }

          recipients.push(name);
        }
      }
    }

    if (recipients.length && input.length) {
      var oldval = input.val();
      if (oldval && !/[,;]\s*$/.test(oldval))
        oldval += ', ';
      input.val(oldval + recipients.join(', ') + ', ').change();
      this.triggerEvent('add-recipient', { field:field, recipients:recipients });
    }

    return recipients.length;
  };

  // checks the input fields before sending a message
  this.check_compose_input = function(cmd)
  {
    var key,
      input_subject = $("[name='_subject']");

    // check if all files has been uploaded
    for (key in this.env.attachments) {
      if (typeof this.env.attachments[key] === 'object' && !this.env.attachments[key].complete) {
        this.alert_dialog(this.get_label('notuploadedwarning'));
        return false;
      }
    }

    // display localized warning for missing subject
    if (!this.env.nosubject_warned && input_subject.val() == '') {
      var dialog,
        prompt_value = $('<input>').attr({type: 'text', size: 40, 'data-submit': 'true'}),
        myprompt = $('<div class="prompt">')
          .append($('<p class="message">').text(this.get_label('nosubjectwarning')))
          .append(prompt_value),
        save_func = function() {
          input_subject.val(prompt_value.val());
          dialog.dialog('close');
          if (ref.check_compose_input(cmd))
            ref.command(cmd, { nocheck:true });  // repeat command which triggered this
        };

      dialog = this.show_popup_dialog(
        myprompt,
        this.get_label('nosubjecttitle'),
        [{
            text: this.get_label('sendmessage'),
            'class': 'mainaction send',
            click: function() { save_func(); }
          }, {
            text: this.get_label('cancel'),
            'class': 'cancel',
            click: function() {
              input_subject.focus();
              dialog.dialog('close');
            }
          }],
        {dialogClass: 'warning'}
      );

      this.env.nosubject_warned = true;
      return false;
    }

    // check for empty body (only possible if not mailvelope encrypted)
    if (!this.mailvelope_editor && !this.editor.get_content() && !confirm(this.get_label('nobodywarning'))) {
      this.editor.focus();
      return false;
    }

    if (!this.check_compose_address_fields(cmd))
      return false;

    // move body from html editor to textarea (just to be sure, #1485860)
    this.editor.save();

    return true;
  };

  this.check_compose_address_fields = function(cmd, form)
  {
    if (!form)
      form = window.document;

    // check input fields
    var key, recipients, dialog,
      limit = this.env.max_disclosed_recipients,
      input_to = $("[name='_to']", form),
      input_cc = $("[name='_cc']", form),
      input_bcc = $("[name='_bcc']", form),
      input_from = $("[name='_from']", form),
      get_recipients = function(fields) {
        fields = $.map(fields, function(v) {
          v = v.val().trim();
          return v.length ? v : null;
        });
        return fields.join(',').replace(/^[\s,;]+/, '').replace(/[\s,;]+$/, '');
      };

    // check sender (if have no identities)
    if (input_from.prop('type') == 'text' && !rcube_check_email(input_from.val(), true)) {
      this.alert_dialog(this.get_label('nosenderwarning'), function() {
        input_from.focus();
      });
      return false;
    }

    // check for empty recipient
    if (!rcube_check_email(get_recipients([input_to, input_cc, input_bcc]), true)) {
      this.alert_dialog(this.get_label('norecipientwarning'), function() {
        input_to.focus();
      });
      return false;
    }

    // check disclosed recipients limit
    if (limit && !this.env.disclosed_recipients_warned
      && rcube_check_email(recipients = get_recipients([input_to, input_cc]), true, true) > limit
    ) {
      var save_func = function(move_to_bcc) {
          if (move_to_bcc) {
            var bcc = input_bcc.val();
            input_bcc.val((bcc ? (bcc + ', ') : '') + recipients).change();
            input_to.val('').change();
            input_cc.val('').change();
          }

          dialog.dialog('close');

          if (typeof cmd == 'function')
            cmd();
          else if (cmd)
            ref.command(cmd, { nocheck:true });  // repeat command which triggered this
        };

      dialog = this.show_popup_dialog(
        this.get_label('disclosedrecipwarning'),
        this.get_label('disclosedreciptitle'),
        [{
            text: this.get_label('sendmessage'),
            click: function() { save_func(false); },
            'class': 'mainaction'
          }, {
            text: this.get_label('bccinstead'),
            click: function() { save_func(true); }
          }, {
            text: this.get_label('cancel'),
            click: function() { dialog.dialog('close'); },
            'class': 'cancel'
          }],
        {dialogClass: 'warning'}
      );

      this.env.disclosed_recipients_warned = true;
      return false;
    }

    return true;
  };

  this.toggle_editor = function(props, obj, e)
  {
    // @todo: this should work also with many editors on page
    var mode, result = this.editor.toggle(props.html, props.noconvert || false),
      control = $('#' + this.editor.id).data('control') || $(e ? e.target : []);

    if (result)
      mode = props.html ? 'html' : 'plain';
    else
      mode = props.html ? 'plain' : 'html';

    // update internal format flag
    $("[name='_is_html']").val(mode == 'html' ? 1 : 0);

    if (control.is('[type=checkbox]'))
      control.prop('checked', mode == 'html');
    else
      control.val(mode);

    return result;
  };

  // Inserts a predefined response to the compose editor
  this.insert_response = function(response)
  {
    if (typeof response == 'object') {
      var replace = {};
      replace[response.is_html ? 'html' : 'text'] = response.data;

      this.editor.replace(replace);
      this.display_message('responseinserted', 'confirmation');
    }
    else {
      var lock = this.display_message('', 'loading');
      this.http_get('settings/response-get', {_id: response, _is_html: this.editor.is_html() ? 1 : 0}, lock);
    }
  };

  // updates spellchecker buttons on state change
  this.spellcheck_state = function()
  {
    var active = this.editor.spellcheck_state();

    $.each(this.buttons.spellcheck || [], function(i, v) {
      $('#' + v.id)[active ? 'addClass' : 'removeClass']('selected');
    });

    return active;
  };

  // get selected language
  this.spellcheck_lang = function()
  {
    return this.editor.get_language();
  };

  this.spellcheck_lang_set = function(lang)
  {
    this.editor.set_language(lang);
  };

  // resume spellchecking, highlight provided misspellings without new ajax request
  this.spellcheck_resume = function(data)
  {
    this.editor.spellcheck_resume(data);
  };

  this.set_draft_id = function(id)
  {
    if (id && id != this.env.draft_id) {
      var filter = {task: 'mail', action: ''},
        rc = this.opener(false, filter) || this.opener(true, filter);

      // refresh the drafts folder in the opener window
      if (rc && rc.env.mailbox == this.env.drafts_mailbox)
        rc.command('checkmail');

      this.env.draft_id = id;
      $("[name='_draft_saveid']").val(id);
    }

    // always remove local copy upon saving as draft
    this.remove_compose_data(this.env.compose_id);
    this.compose_skip_unsavedcheck = false;
  };

  // Create (attach) 'savetarget' iframe before use
  this.get_save_target = function(unlock)
  {
    // Removing the frame on load/error to workaround issues with window history
    this.dummy_iframe('savetarget', 'javascript:false;')
      .on('load error', function() {
        // catch invalid/error response from server and unlock the UI (#7494, #7488, #7522)
        if (unlock && $(this).contents().find('meta[name="generator"][content="Roundcube"]').length == 0) {
          ref.iframe_loaded(unlock);
          ref.display_message('connerror', 'error');
        }

        $(this).remove();
      });

    return 'savetarget';
  };

  this.auto_save_start = function()
  {
    if (this.env.draft_autosave) {
      this.save_timer = setTimeout(function() {
          ref.command("savedraft");
      }, this.env.draft_autosave * 1000);
    }

    // save compose form content to local storage every 5 seconds
    if (!this.local_save_timer && window.localStorage && this.env.save_localstorage) {
      // track typing activity and only save on changes
      this.compose_type_activity = this.compose_type_activity_last = 0;
      $(document).keypress(function(e) { ref.compose_type_activity++; });

      this.local_save_timer = setInterval(function(){
        if (ref.compose_type_activity > ref.compose_type_activity_last) {
          ref.save_compose_form_local();
          ref.compose_type_activity_last = ref.compose_type_activity;
        }
      }, 5000);

      $(window).on('unload', function() {
        // remove copy from local storage if compose screen is left after warning
        if (!ref.env.server_error)
          ref.remove_compose_data(ref.env.compose_id);
      });
    }

    // check for unsaved changes before leaving the compose page
    if (!window.onbeforeunload) {
      window.onbeforeunload = function() {
        if (!ref.compose_skip_unsavedcheck && ref.cmp_hash != ref.compose_field_hash()) {
          return ref.get_label('notsentwarning');
        }
      };
    }

    // Unlock interface now that saving is complete
    this.busy = false;
  };

  this.compose_field_hash = function(save)
  {
    // check input fields
    var i, id, val, str = '', hash_fields = ['to', 'cc', 'bcc', 'subject'];

    for (i=0; i<hash_fields.length; i++)
      if (val = $('[name="_' + hash_fields[i] + '"]').val())
        str += val + ':';

    str += this.editor.get_content({refresh: false});

    for (id in this.env.attachments)
      str += id;

    // we can't detect changes in the Mailvelope editor so assume it changed
    if (this.mailvelope_editor) {
      str += ';' + new Date().getTime();
    }

    if (save)
      this.cmp_hash = str;

    return str;
  };

  // store the contents of the compose form to localstorage
  this.save_compose_form_local = function()
  {
    // feature is disabled
    if (!this.env.save_localstorage)
      return;

    var formdata = { session:this.env.session_id, changed:new Date().getTime() },
      ed, empty = true;

    // get fresh content from editor
    this.editor.save();

    if (this.env.draft_id) {
      formdata.draft_id = this.env.draft_id;
    }
    if (this.env.reply_msgid) {
      formdata.reply_msgid = this.env.reply_msgid;
    }

    $('input, select, textarea', this.gui_objects.messageform).each(function(i, elem) {
      switch (elem.tagName.toLowerCase()) {
        case 'input':
          if (elem.type == 'button' || elem.type == 'submit' || (elem.type == 'hidden' && elem.name != '_is_html')) {
            break;
          }
          formdata[elem.name] = elem.type != 'checkbox' || elem.checked ? $(elem).val() : '';

          if (formdata[elem.name] != '' && elem.type != 'hidden')
            empty = false;
          break;

        case 'select':
          formdata[elem.name] = $('option:checked', elem).val();
          break;

        default:
          formdata[elem.name] = $(elem).val();
          if (formdata[elem.name] != '')
            empty = false;
      }
    });

    if (!empty) {
      var index = this.local_storage_get_item('compose.index', []),
        key = this.env.compose_id;

      if ($.inArray(key, index) < 0) {
        index.push(key);
      }

      this.local_storage_set_item('compose.' + key, formdata, true);
      this.local_storage_set_item('compose.index', index);
    }
  };

  // write stored compose data back to form
  this.restore_compose_form = function(key, html_mode)
  {
    var ed, formdata = this.local_storage_get_item('compose.' + key, true);

    if (formdata && typeof formdata == 'object') {
      $.each(formdata, function(k, value) {
        if (k[0] == '_') {
          var elem = $("[name=" + k + "]");
          if (elem[0] && elem[0].type == 'checkbox') {
            elem.prop('checked', value != '');
          }
          else {
            elem.val(value).change();
          }
        }
      });

      // initialize HTML editor
      if ((formdata._is_html == '1' && !html_mode) || (formdata._is_html != '1' && html_mode)) {
        this.command('toggle-editor', {id: this.env.composebody, html: !html_mode, noconvert: true});
      }
    }
  };

  // remove stored compose data from localStorage
  this.remove_compose_data = function(key)
  {
    var index = this.local_storage_get_item('compose.index', []);

    if ($.inArray(key, index) >= 0) {
      this.local_storage_remove_item('compose.' + key);
      this.local_storage_set_item('compose.index', $.grep(index, function(val,i) { return val != key; }));
    }
  };

  // clear all stored compose data of this user
  this.clear_compose_data = function()
  {
    var i, index = this.local_storage_get_item('compose.index', []);

    for (i=0; i < index.length; i++) {
      this.local_storage_remove_item('compose.' + index[i]);
    }

    this.local_storage_remove_item('compose.index');
  };

  this.change_identity = function(obj, show)
  {
    if (!obj || !obj.options)
      return false;

    var id = $(obj).val(),
      got_sig = this.env.signatures && this.env.signatures[id],
      sig = this.env.identity,
      show_sig = show ? show : this.env.show_sig;

    // enable manual signature insert
    if (got_sig) {
      this.enable_command('insert-sig', true);
      this.env.compose_commands.push('insert-sig');
      got_sig = true;
    }
    else
      this.enable_command('insert-sig', false);

    // first function execution
    if (!this.env.identities_initialized) {
      this.env.identities_initialized = true;
      if (this.env.show_sig_later)
        this.env.show_sig = true;
      if (this.env.opened_extwin)
        return;
    }

    // update reply-to/bcc fields with addresses defined in identities
    $.each(['replyto', 'bcc'], function() {
      var rx, key = this,
        old_val = sig && ref.env.identities[sig] ? ref.env.identities[sig][key] : '',
        new_val = id && ref.env.identities[id] ? ref.env.identities[id][key] : '',
        input = $('[name="_'+key+'"]'), input_val = input.val();

      // remove old address(es)
      if (old_val && input_val) {
        rx = new RegExp('\\s*' + RegExp.escape(old_val) + '\\s*');
        input_val = input_val.replace(rx, '');
      }

      // cleanup
      input_val = String(input_val).replace(/[,;]\s*[,;]/g, ',').replace(/^[\s,;]+/, '');

      // add new address(es)
      if (new_val && input_val.indexOf(new_val) == -1 && input_val.indexOf(new_val.replace(/"/g, '')) == -1) {
        if (input_val) {
          input_val = input_val.replace(/[,;\s]+$/, '') + ', ';
        }

        input_val += new_val + ', ';
      }

      if (old_val || new_val)
        input.val(input_val).change();
    });

    if (this.editor)
      this.editor.change_signature(id, show_sig);

    if (show && got_sig)
      this.display_message('siginserted', 'confirmation');

    this.env.identity = id;
    this.triggerEvent('change_identity');

    return true;
  };

  // Open file selection dialog for defined upload form
  // Works only on click and only with smart-upload forms
  this.upload_input = function(name)
  {
    $('#' + name + ' input[type="file"]').click();
  };

  // upload (attachment) file
  this.upload_file = function(form, action, lock)
  {
    if (form) {
      var fname, files = [];
      $('input', form).each(function() {
        if (this.files) {
          fname = this.name;
          for (var i=0; i < this.files.length; i++)
            files.push(this.files[i]);
        }
      });

      return this.file_upload(files, {_id: this.env.compose_id || ''}, {
        name: fname,
        action: action,
        lock: lock
      });
    }
  };

  // add file name to attachment list
  // called from upload page
  this.add2attachment_list = function(name, att, upload_id)
  {
    if (upload_id)
      this.triggerEvent('fileuploaded', {name: name, attachment: att, id: upload_id});

    if (upload_id && this.env.attachments[upload_id])
      delete this.env.attachments[upload_id];

    this.env.attachments[name] = att;

    if (!this.gui_objects.attachmentlist)
      return false;

    var label, indicator, li = $('<li>');

    if (!att.complete && att.html.indexOf('<') < 0)
      att.html = '<span class="uploading">' + att.html + '</span>';

    if (!att.complete && this.env.loadingicon)
      att.html = '<img src="'+this.env.loadingicon+'" alt="" class="uploading" />' + att.html;

    if (!att.complete) {
      label = this.get_label('cancel');
      att.html = '<a title="'+label+'" onclick="return rcmail.cancel_attachment_upload(\''+name+'\');" href="#cancelupload" class="cancelupload">'
        + (this.env.cancelicon ? '<img src="'+this.env.cancelicon+'" alt="'+label+'" />' : '<span class="inner">' + label + '</span>') + '</a>' + att.html;
    }

    li.attr('id', name).addClass(att.classname).html(att.html)
      .find('.attachment-name').on('mouseover', function() { rcube_webmail.long_subject_title_ex(this); });

    // replace indicator's li
    if (upload_id && (indicator = document.getElementById(upload_id))) {
      li.replaceAll(indicator);
    }
    else { // add new li
      li.appendTo(this.gui_objects.attachmentlist);
    }

    // set tabindex attribute
    var tabindex = $(this.gui_objects.attachmentlist).attr('data-tabindex') || '0';
    li.find('a').attr('tabindex', tabindex);

    this.triggerEvent('fileappended', {name: name, attachment: att, id: upload_id, item: li});

    return true;
  };

  this.remove_from_attachment_list = function(name)
  {
    delete this.env.attachments[name];
    $('#'+name).remove();
  };

  this.remove_attachment = function(name)
  {
    if (name && this.env.attachments[name])
      this.http_post('remove-attachment', { _id:this.env.compose_id, _file:name });

    return false;
  };

  this.cancel_attachment_upload = function(name)
  {
    if (!name || !this.uploads[name])
      return false;

    this.remove_from_attachment_list(name);
    this.uploads[name].abort();
    return false;
  };

  // rename uploaded attachment (in compose)
  this.rename_attachment = function(id)
  {
    var attachment = this.env.attachments[id];

    if (!attachment)
      return;

    var input = $('<input>').attr({type: 'text', size: 50}).val(attachment.name),
      content = $('<label>').text(this.get_label('namex')).append(input);

    this.simple_dialog(content, 'attachmentrename', function() {
        var name;
        if ((name = input.val()) && name != attachment.name) {
          ref.http_post('rename-attachment', {_id: ref.env.compose_id, _file: id, _name: name},
          ref.set_busy(true, 'loading'));
          return true;
        }
      }
    );
  };

  // update attachments list with the new name
  this.rename_attachment_handler = function(id, name)
  {
    var attachment = this.env.attachments[id];

    if (!attachment || !name)
      return;

    attachment.name = name;

    $('#' + id + ' .attachment-name').text(name).attr('title', '');
  };

  // send remote request to add a new contact
  this.add_contact = function(value, reload, source)
  {
    if (value)
      this.http_post('addcontact', {_address: value, _reload: reload, _source: source});
  };

  // send remote request to search mail or contacts
  this.qsearch = function(value)
  {
    // Note: Some plugins would like to do search without value,
    // so we keep value != '' check to allow that use-case. Which means
    // e.g. that qsearch() with no argument will execute the search.
    if (value != '' || $(this.gui_objects.qsearchbox).val() || $(this.gui_objects.search_interval).val()) {
      var r, lock = this.set_busy(true, 'searching'),
        url = this.search_params(value),
        action = this.env.action == 'compose' && this.contact_list ? 'search-contacts' : 'search';

      if (this.message_list)
        this.clear_message_list();
      else if (this.contact_list)
        this.list_contacts_clear();

      if (this.env.source)
        url._source = this.env.source;
      if (this.env.group)
        url._gid = this.env.group;

      // reset vars
      this.env.current_page = 1;

      r = this.http_request(action, url, lock);

      this.env.qsearch = {lock: lock, request: r};
      this.enable_command('set-listmode', this.env.threads && (this.env.search_scope || 'base') == 'base');

      return true;
    }

    return false;
  };

  this.continue_search = function(request_id)
  {
    var lock = this.set_busy(true, 'stillsearching');

    setTimeout(function() {
      var url = ref.search_params();
      url._continue = request_id;
      ref.env.qsearch = { lock: lock, request: ref.http_request('search', url, lock) };
    }, 100);
  };

  // build URL params for search
  this.search_params = function(search, filter)
  {
    var n, url = {}, mods_arr = [],
      mods = this.env.search_mods,
      scope = this.env.search_scope || 'base',
      mbox = this.env.mailbox;

    if (!filter && this.gui_objects.search_filter)
      filter = this.gui_objects.search_filter.value;

    if (!search && this.gui_objects.qsearchbox)
      search = this.gui_objects.qsearchbox.value;

    if (this.gui_objects.search_interval)
      url._interval = $(this.gui_objects.search_interval).val();

    if (search) {
      url._q = search;

      if (mods && this.message_list)
        mods = mods[mbox] || mods['*'];

      if (mods) {
        for (n in mods)
          mods_arr.push(n);
        url._headers = mods_arr.join(',');
      }
    }

    url._layout = this.env.layout;
    url._filter = filter;
    url._scope = scope;
    url._mbox = mbox;

    return url;
  };

  // reset search filter
  this.reset_search_filter = function()
  {
    this.filter_disabled = true;
    if (this.gui_objects.search_filter)
      $(this.gui_objects.search_filter).val('ALL').change();
    this.filter_disabled = false;
  };

  // reset quick-search form
  this.reset_qsearch = function(all)
  {
    if (this.gui_objects.qsearchbox)
      this.gui_objects.qsearchbox.value = '';

    if (this.gui_objects.search_interval)
      $(this.gui_objects.search_interval).val('');

    if (this.env.qsearch)
      this.abort_request(this.env.qsearch);

    if (all) {
      this.env.search_scope = 'base';
      this.reset_search_filter();
    }

    this.env.qsearch = null;
    this.env.search_request = null;
    this.env.search_id = null;
    this.select_all_mode = false;

    this.enable_command('set-listmode', this.env.threads);
  };

  this.set_searchscope = function(scope)
  {
    this.env.search_scope = scope;
  };

  this.set_searchinterval = function(interval)
  {
    this.env.search_interval = interval;
  };

  this.set_searchmods = function(mods)
  {
    var mbox = this.env.mailbox,
      scope = this.env.search_scope || 'base';

    if (!this.env.search_mods)
      this.env.search_mods = {};

    if (mbox)
      this.env.search_mods[mbox] = mods;
  };

  this.is_multifolder_listing = function()
  {
    return this.env.multifolder_listing !== undefined ? this.env.multifolder_listing :
      (this.env.search_request && (this.env.search_scope || 'base') != 'base');
  };

  // action executed after mail is sent
  this.sent_successfully = function(type, msg, folders, save_error)
  {
    this.display_message(msg, type);
    this.compose_skip_unsavedcheck = true;

    if (this.env.extwin) {
      if (!save_error)
        this.lock_form(this.gui_objects.messageform);

      var filter = {task: 'mail', action: ''},
        rc = this.opener(false, filter) || this.opener(true, filter);

      if (rc) {
        rc.display_message(msg, type);
        // refresh the folder where sent message was saved or replied message comes from
        if (folders && $.inArray(rc.env.mailbox, folders) >= 0) {
          rc.command('checkmail');
        }
      }

      if (!save_error)
        setTimeout(function() { window.close(); }, 1000);
    }
    else if (!save_error) {
      // before redirect we need to wait some time for Chrome (#1486177)
      setTimeout(function() { ref.list_mailbox(); }, 500);
    }

    if (save_error)
      this.env.is_sent = true;
  };

  this.image_rotate = function()
  {
    var curr = this.image_style ? (this.image_style.rotate || 0) : 0;

    this.image_style.rotate = curr > 180 ? 0 : curr + 90;
    this.apply_image_style();
  };

  this.image_scale = function(prop)
  {
    var curr = this.image_style ? (this.image_style.scale || 1) : 1;

    this.image_style.scale = Math.max(0.1, curr + 0.1 * (prop == '-' ? -1 : 1));
    this.apply_image_style();
  };

  this.apply_image_style = function()
  {
    var style = [],
      head = $(this.gui_objects.messagepartframe).contents().find('head');

    $('#image-style', head).remove();

    $.each({scale: '', rotate: 'deg'}, function(i, v) {
      var val = ref.image_style[i];
      if (val)
        style.push(i + '(' + val + v + ')');
    });

    if (style)
      head.append($('<style id="image-style">').text('img { transform: ' + style.join(' ') + '}'));
  };

  // Update import dialog state
  this.import_state_set = function(state)
  {
    if (this.import_dialog) {
      this.import_state = state;

      var button = $(this.import_dialog).parent().find('.ui-dialog-buttonset > button').first();

      if (state != 'error') {
        // replace Import/Cancel buttons with Close button
        button.hide();
        button.next().text(this.gettext('close')).focus();
      }
      else {
        // activate the Import button
        button.prop('disabled', false);
      }
    }
  };


  /*********************************************************/
  /*********     keyboard live-search methods      *********/
  /*********************************************************/

  // handler for keyboard events on address-fields
  this.ksearch_keydown = function(e, obj, props)
  {
    if (this.ksearch_timer)
      clearTimeout(this.ksearch_timer);

    var key = rcube_event.get_keycode(e);

    switch (key) {
      case 38:  // arrow up
      case 40:  // arrow down
        if (!this.ksearch_visible())
          return;

        var dir = key == 38 ? 1 : 0,
          highlight = this.ksearch_pane.find('li.selected')[0];

        if (!highlight)
          highlight = this.ksearch_pane.__ul.firstChild;

        if (highlight)
          this.ksearch_select(dir ? highlight.previousSibling : highlight.nextSibling);

        return rcube_event.cancel(e);

      case 9:   // tab
        if (rcube_event.get_modifier(e) == SHIFT_KEY || !this.ksearch_visible()) {
          this.ksearch_hide();
          return;
        }

      case 13:  // enter
        if (!this.ksearch_visible())
          return false;

        // insert selected address and hide ksearch pane
        this.insert_recipient(this.ksearch_selected);
        this.ksearch_hide();

        // Don't cancel on Tab, we want to jump to the next field (#5659)
        return key == 9 ? null : rcube_event.cancel(e);

      case 27:  // escape
        this.ksearch_hide();
        return;

      case 37:  // left
      case 39:  // right
        return;
    }

    // start timer
    this.ksearch_timer = setTimeout(function() { ref.ksearch_get_results(props); }, 200);
    this.ksearch_input = obj;

    return true;
  };

  this.ksearch_visible = function()
  {
    return this.ksearch_selected !== null && this.ksearch_selected !== undefined && this.ksearch_value;
  };

  this.ksearch_select = function(node)
  {
    if (this.ksearch_pane && node) {
      this.ksearch_pane.find('li.selected').removeClass('selected').removeAttr('aria-selected');
    }

    if (node) {
      $(node).addClass('selected').attr('aria-selected', 'true');
      this.ksearch_selected = node._rcm_id;
      $(this.ksearch_input).attr('aria-activedescendant', 'rcmkSearchItem' + this.ksearch_selected);
    }
  };

  this.insert_recipient = function(id)
  {
    if (id === null || !this.env.contacts[id] || !this.ksearch_input)
      return;

    var trigger = false, insert = '', delim = ', ',
      contact = this.env.contacts[id];

    this.ksearch_destroy();

    // insert all members of a group
    if (typeof contact === 'object' && contact.type == 'group' && !contact.email && contact.id) {
      // We wrap the group name with invisible markers to prevent from problems with group expanding (#7569)
      var name = '\u200b' + contact.name + '\u200b';
      insert = name + delim;
      this.group2expand[contact.id] = {name: name, input: this.ksearch_input};
      this.http_request('mail/group-expand', {_source: contact.source, _gid: contact.id}, false);
    }
    else if (typeof contact === 'object' && contact.name) {
      insert = contact.name + delim;
      trigger = true;
    }
    else if (typeof contact === 'string') {
      insert = contact + delim;
      trigger = true;
    }

    this.ksearch_input_replace(this.ksearch_value, insert, null, trigger);

    if (trigger) {
      this.triggerEvent('autocomplete_insert', {
          field: this.ksearch_input,
          insert: insert,
          data: contact,
          search: this.ksearch_value_last,
          result_type: 'person'
      });

      this.ksearch_value_last = null;
      this.compose_type_activity++;
    }
  };

  this.replace_group_recipients = function(id, recipients)
  {
    var data = this.group2expand[id];

    if (data) {
      this.ksearch_input_replace(data.name, recipients, data.input);

      this.triggerEvent('autocomplete_insert', {
          field: data.input,
          insert: recipients,
          data: data,
          search: this.ksearch_value_last,
          result_type: 'group'
      });

      this.ksearch_value_last = null;
      this.group2expand[id] = null;
      this.compose_type_activity++;
    }
  };

  // address search processor
  this.ksearch_get_results = function(props)
  {
    if (this.ksearch_pane && this.ksearch_pane.is(":visible"))
      this.ksearch_pane.hide();

    // get string from cursor position back to the last comma or semicolon
    var q = this.ksearch_input_get(),
      min = this.env.autocomplete_min_length,
      data = this.ksearch_data;

    // trim query string
    q = q.trim();

    // Don't (re-)search if the last results are still active
    if (q == this.ksearch_value)
      return;

    this.ksearch_destroy();

    if (q.length && q.length < min) {
      if (!this.ksearch_info) {
        this.ksearch_info = this.display_message(this.get_label('autocompletechars').replace('$min', min));
      }
      return;
    }

    var old_value = this.ksearch_value;
    this.ksearch_value = q;
    this.ksearch_value_last = q;   // Group expansion clears ksearch_value before calling autocomplete_insert trigger, therefore store it in separate variable for later consumption.

    // ...string is empty
    if (!q.length)
      return;

    // ...new search value contains old one and previous search was not finished or its result was empty
    if (old_value && old_value.length && q.startsWith(old_value) && (!data || data.num <= 0) && this.env.contacts && !this.env.contacts.length)
      return;

    var sources = props && props.sources ? props.sources : [''];
    var reqid = this.multi_thread_http_request({
      items: sources,
      threads: props && props.threads ? props.threads : 1,
      action:  props && props.action ? props.action : 'mail/autocomplete',
      postdata: { _search:q, _source:'%s' },
      lock: this.display_message('searching', 'loading')
    });

    this.ksearch_data = { id:reqid, sources:sources.slice(), num:sources.length };
  };

  this.ksearch_query_results = function(results, search, reqid)
  {
    // trigger multi-thread http response callback
    this.multi_thread_http_response(results, reqid);

    // search stopped in meantime?
    if (!this.ksearch_value)
      return;

    // ignore this outdated search response
    if (this.ksearch_input && search != this.ksearch_value)
      return;

    // display search results
    var i, id, len, ul, text, type, init,
      is_framed = this.is_framed(),
      value = this.ksearch_value,
      maxlen = this.env.autocomplete_max ? this.env.autocomplete_max : 15;

    // create results pane if not present
    if (!this.ksearch_pane) {
      ul = $('<ul>');
      this.ksearch_pane = $('<div>')
        .attr({id: 'rcmKSearchpane', role: 'listbox', 'class': 'select-menu inline'})
        .css({position: 'absolute', 'z-index': 30000})
        .append(ul)
        .appendTo(is_framed ? parent.document.body : document.body);

      this.ksearch_pane.__ul = ul[0];
      this.triggerEvent('autocomplete_create', {obj: this.ksearch_pane});
    }

    ul = this.ksearch_pane.__ul;

    // remove all search results or add to existing list if parallel search
    if (reqid && this.ksearch_pane.data('reqid') == reqid) {
      maxlen -= ul.childNodes.length;
    }
    else {
      this.ksearch_pane.data('reqid', reqid);
      init = 1;
      // reset content
      ul.innerHTML = '';
      this.env.contacts = [];

      // Calculate the results pane position and size
      // Elastic: On small screen we use the width/position of the whole .ac-input element (input's parent)
      var is_composite_input = $('html').is('.layout-small,.layout-phone') && $(this.ksearch_input).parents('.ac-input').length == 1,
        input = is_composite_input ? $(this.ksearch_input).parents('.ac-input')[0] : $(this.ksearch_input)[0],
        pos = $(input).offset();

      // ... consider scroll position
      pos.left -= $(document.documentElement).scrollLeft();
      pos.top -= $(document.documentElement).scrollTop();

      // ... consider iframe position
      if (is_framed) {
        try {
          parent.$('iframe').each(function() {
            if (this.contentWindow == window) {
              var offset = $(this).offset();
              pos.left += offset.left;
              pos.top += offset.top;
            }
          });
        }
        catch(e) {}
      }

      var w = $(is_framed ? parent : window).width(),
        input_width = $(input).outerWidth(),
        left = w - pos.left > 200 ? pos.left : w - 200,
        top = (pos.top + input.offsetHeight + 1),
        width = Math.min(400, w - left);

      this.ksearch_pane.css({
        left: (is_composite_input ? pos.left : left) + 'px',
        top: top + 'px',
        maxWidth: (is_composite_input ? input_width : width) + 'px',
        minWidth: '200px',
        width: is_composite_input ? (input_width + 'px') : 'auto',
        display: 'none'
      });
    }

    // add each result line to list
    if (results && (len = results.length)) {
      for (i=0; i < len && maxlen > 0; i++) {
        text = typeof results[i] === 'object' ? (results[i].display || results[i].name) : results[i];
        type = typeof results[i] === 'object' ? results[i].type : '';
        id = i + this.env.contacts.length;
        $('<li>').attr({id: 'rcmkSearchItem' + id, role: 'option'})
          .html('<i class="icon"></i>' + this.quote_html(text.replace(new RegExp('('+RegExp.escape(value)+')', 'ig'), '##$1%%')).replace(/##([^%]+)%%/g, '<b>$1</b>'))
          .addClass(type || '')
          .appendTo(ul)
          .mouseover(function() { ref.ksearch_select(this); })
          .mouseup(function() { ref.ksearch_click(this); })
          .get(0)._rcm_id = id;
        maxlen -= 1;
      }
    }

    if (ul.childNodes.length) {
      // set the right aria-* attributes to the input field
      $(this.ksearch_input)
        .attr({'aria-haspopup': 'true', 'aria-expanded': 'true', 'aria-owns': 'rcmKSearchpane'});

      this.ksearch_pane.show();

      // select the first
      if (!this.env.contacts.length) {
        this.ksearch_select($('li', ul)[0]);
      }
    }

    if (len)
      this.env.contacts = this.env.contacts.concat(results);

    if (this.ksearch_data.id == reqid)
      this.ksearch_data.num--;
  };

  // Getter for input value
  // returns a string from the last comma to current cursor position
  this.ksearch_input_get = function()
  {
    if (!this.ksearch_input)
      return '';

    var cp = this.get_caret_pos(this.ksearch_input);

    return this.ksearch_input.value.substr(0, cp).split(/[,;]/).pop();
  };

  // Setter for input value
  // replaces 'from' string with 'to' and sets cursor position at the end
  this.ksearch_input_replace = function(from, to, input, trigger)
  {
    if (!this.ksearch_input && !input)
      return;

    if (!input)
      input = this.ksearch_input;

    var cpos = this.get_caret_pos(input),
      p = input.value.lastIndexOf(from, cpos),
      pre = input.value.substring(0, p),
      end = input.value.substring(p + from.length, input.value.length);

    input.value = pre + to + end;

    // set caret to insert pos
    this.set_caret_pos(input, cpos + to.length - from.length);

    // run onchange action on the element
    $(input).trigger('change', [true, trigger]);
  };

  this.ksearch_click = function(node)
  {
    if (this.ksearch_input)
      this.ksearch_input.focus();

    this.insert_recipient(node._rcm_id);
    this.ksearch_hide();
  };

  this.ksearch_blur = function()
  {
    if (this.ksearch_timer)
      clearTimeout(this.ksearch_timer);

    this.ksearch_input = null;
    this.ksearch_hide();
  };

  this.ksearch_hide = function()
  {
    this.ksearch_selected = null;
    this.ksearch_value = '';

    if (this.ksearch_pane)
      this.ksearch_pane.hide();

    $(this.ksearch_input)
      .attr({'aria-haspopup': 'false', 'aria-expanded': 'false'})
      .removeAttr('aria-activedescendant')
      .removeAttr('aria-owns');

    this.ksearch_destroy();
  };

  // Clears autocomplete data/requests
  this.ksearch_destroy = function()
  {
    if (this.ksearch_data)
      this.multi_thread_request_abort(this.ksearch_data.id);

    if (this.ksearch_info)
      this.hide_message(this.ksearch_info);

    if (this.ksearch_msg)
      this.hide_message(this.ksearch_msg);

    this.ksearch_data = null;
    this.ksearch_info = null;
    this.ksearch_msg = null;
  };


  /*********************************************************/
  /*********         address book methods          *********/
  /*********************************************************/

  this.contactlist_select = function(list)
  {
    if (this.preview_timer)
      clearTimeout(this.preview_timer);

    var id, targets,
      groupcount = 0,
      writable = false,
      deletable = false,
      copy_writable = false,
      selected = list.get_selection().length,
      source = this.env.source ? this.env.address_sources[this.env.source] : null;

    // we don't have dblclick handler here, so use 50 instead of this.dblclick_time
    if (this.env.contentframe && !list.multi_selecting && (id = list.get_single_selection()))
      this.preview_timer = setTimeout(function() { ref.load_contact(id, 'show'); }, this.preview_delay_click);
    else if (this.env.contentframe)
      this.show_contentframe(false);

    if (selected) {
      list.draggable = false;

      // no source = search result, we'll need to detect if any of
      // selected contacts are in writable addressbook to enable edit/delete
      // we'll also need to know sources used in selection for copy
      // and group-addmember operations (drag&drop)
      this.env.selection_sources = [];

      if (source) {
        this.env.selection_sources.push(this.env.source);
      }

      $.each(list.get_selection(), function(i, v) {
        var book, sid, contact = list.data[v];
        if (!source) {
          sid = String(v).replace(/^[^-]+-/, '');
          book = sid ? ref.env.address_sources[sid] : null;

          if (book) {
            writable = writable || (!book.readonly && !contact.readonly);
            deletable = deletable || book.deletable === true;
            ref.env.selection_sources.push(sid);
          }
        }
        else {
          writable = writable || (!source.readonly && !contact.readonly);
          deletable = deletable || source.deletable === true;
        }

        if (contact._type != 'group')
          list.draggable = true;
      });

      this.env.selection_sources = $.unique(this.env.selection_sources);

      if (source && source.groups)
        $.each(this.env.contactgroups, function() { if (this.source === ref.env.source) groupcount++; });

      targets = $.map(this.env.address_sources, function(v, i) { return v.readonly ? null : i; });
      copy_writable = $.grep(targets, function(v) { return jQuery.inArray(v, ref.env.selection_sources) < 0; }).length > 0;
    }

    // if a group is currently selected, and there is at least one contact selected
    // we can enable the group-remove-selected command
    this.enable_command('group-assign-selected', groupcount > 0 && writable);
    this.enable_command('group-remove-selected', this.env.group && writable);
    this.enable_command('print', 'qrcode', selected == 1);
    this.enable_command('export-selected', selected > 0);
    this.enable_command('edit', id && writable);
    this.enable_command('delete', 'move', writable || deletable);
    this.enable_command('copy', copy_writable);

    return false;
  };

  this.list_contacts = function(src, group, page, search)
  {
    var win, folder, index = -1, url = {},
      refresh = src === undefined && group === undefined && page === undefined,
      target = window;

    if (!src)
      src = this.env.source;

    if (refresh)
      group = this.env.group;

    if (src != this.env.source) {
      page = this.env.current_page = 1;
      this.reset_qsearch();
    }
    else if (!refresh && group != this.env.group)
      page = this.env.current_page = 1;

    if (this.env.search_id)
      folder = 'S'+this.env.search_id;
    else if (!this.env.search_request)
      folder = group ? 'G'+src+group : src;

    this.env.source = this.env.last_source = src;
    this.env.group = this.env.last_group = group;

    // truncate groups listing stack
    $.each(this.env.address_group_stack, function(i, v) {
      if (ref.env.group == v.id) {
        index = i;
        return false;
      }
    });

    this.env.address_group_stack = index < 0 ? [] : this.env.address_group_stack.slice(0, index);

    // remove cached contact group selector
    this.destroy_entity_selector('contactgroup-selector');

    // make sure the current group is on top of the stack
    if (this.env.group) {
      if (!search) search = {};
      search.id = this.env.group;
      this.env.address_group_stack.push(search);

      // mark the first group on the stack as selected in the directory list
      folder = 'G'+src+this.env.address_group_stack[0].id;
    }
    else if (this.gui_objects.addresslist_title) {
        $(this.gui_objects.addresslist_title).text(this.get_label('contacts'));
    }

    if (!this.env.search_id)
      this.select_folder(folder, '', true);

    // load contacts remotely
    if (this.gui_objects.contactslist) {
      this.list_contacts_remote(src, group, page);
      return;
    }

    if (win = this.get_frame_window(this.env.contentframe)) {
      target = win;
      url._framed = 1;
    }

    if (group)
      url._gid = group;
    if (page)
      url._page = page;
    if (src)
      url._source = src;

    // also send search request to get the correct listing
    if (this.env.search_request)
      url._search = this.env.search_request;

    this.set_busy(true, 'loading');
    this.location_href(url, target);
  };

  // send remote request to load contacts list
  this.list_contacts_remote = function(src, group, page)
  {
    // clear message list first
    this.list_contacts_clear();

    // send request to server
    var url = {}, lock = this.set_busy(true, 'loading');

    if (src)
      url._source = src;
    if (page)
      url._page = page;
    if (group)
      url._gid = group;

    this.env.source = src;
    this.env.group = group;

    // also send search request to get the right records
    if (this.env.search_request)
      url._search = this.env.search_request;

    this.http_request(this.env.task == 'mail' ? 'list-contacts' : 'list', url, lock);

    if (this.env.task != 'mail')
      this.update_state({_source: src, _page: page && page > 1 ? page : null, _gid: group});
  };

  this.list_contacts_clear = function()
  {
    this.contact_list.data = {};
    this.contact_list.clear(true);
    this.show_contentframe(false);
    this.enable_command('delete', 'move', 'copy', 'print', false);
  };

  this.set_group_prop = function(prop)
  {
    if (this.gui_objects.addresslist_title) {
      var boxtitle = $(this.gui_objects.addresslist_title).html('');  // clear contents

      // add link to pop back to parent group
      if (this.env.address_group_stack.length > 1
        || (this.env.address_group_stack.length == 1 && this.env.address_group_stack[0].search_request)
      ) {
        var link = $('<a href="#list">...</a>')
          .attr({title: this.get_label('uponelevel'), 'class': 'poplink'})
          .click(function() { return ref.command('popgroup', '', this); });

        boxtitle.append(link).append('&nbsp;&raquo;&nbsp;');
      }

      boxtitle.append($('<span>').text(prop ? prop.name : this.get_label('contacts')));
    }
  };

  // load contact record
  this.load_contact = function(cid, action, framed)
  {
    var win, url = {}, target = window,
      rec = this.contact_list ? this.contact_list.data[cid] : null;

    if (win = this.get_frame_window(this.env.contentframe)) {
      url._framed = 1;
      target = win;
      this.show_contentframe(true);

      // load dummy content, unselect selected row(s)
      if (!cid)
        this.contact_list.clear_selection();

      this.enable_command('export-selected', 'print', rec && rec._type != 'group');
    }
    else if (framed)
      return false;

    if (action && (cid || action == 'add') && !this.drag_active) {
      if (this.env.group)
        url._gid = this.env.group;

      if (this.env.search_request)
        url._search = this.env.search_request;

      if (cid)
        url._cid = this.preview_id = cid;

      url._action = action;
      url._source = this.env.source;

      this.location_href(url, target, true);
    }

    return true;
  };

  // add/delete member to/from the group
  this.group_member_change = function(what, cid, source, gid)
  {
    if (what != 'add')
      what = 'del';

    var lock = this.display_message(what == 'add' ? 'addingmember' : 'removingmember', 'loading'),
      post_data = {_cid: cid, _source: source, _gid: gid};

    this.http_post('group-'+what+'members', post_data, lock);
  };

  this.contacts_drag_menu = function(e, to)
  {
    var dest = to.type == 'group' ? to.source : to.id,
      source = this.env.source;

    if (!this.env.address_sources[dest] || this.env.address_sources[dest].readonly)
      return true;

    // search result may contain contacts from many sources, but if there is only one...
    if (source == '' && this.env.selection_sources.length == 1)
      source = this.env.selection_sources[0];

    if (to.type == 'group' && dest == source) {
      var cid = this.contact_list.get_selection().join(',');
      this.group_member_change('add', cid, dest, to.id);
      return true;
    }
    // move action is not possible, "redirect" to copy if menu wasn't requested
    else if (!this.commands.move && rcube_event.get_modifier(e) != SHIFT_KEY) {
      this.copy_contacts(to);
      return true;
    }

    return this.drag_menu(e, to);
  };

  // copy contact(s) to the specified target (group or directory)
  this.copy_contacts = function(to, event, cid)
  {
    if (!to) {
      cid = this.contact_list.get_selection();
      return this.addressbook_selector(event, function(to, obj) {
          var to = $(obj).data('source') ? ref.env.contactgroups['G' + $(obj).data('source') + $(obj).data('gid')] : ref.env.address_sources[to];
          ref.copy_contacts(to, null, cid);
        });
    }

    var dest = to.type == 'group' ? to.source : to.id,
      source = this.env.source,
      group = this.env.group ? this.env.group : '';

    cid = cid ? cid.join(',') : this.contact_list.get_selection().join(',');

    if (!cid || !this.env.address_sources[dest] || this.env.address_sources[dest].readonly)
      return;

    // search result may contain contacts from many sources, but if there is only one...
    if (source == '' && this.env.selection_sources.length == 1)
      source = this.env.selection_sources[0];

    // target is a group
    if (to.type == 'group') {
      if (dest == source)
        return;

      var lock = this.display_message('copyingcontact', 'loading'),
        post_data = {_cid: cid, _source: this.env.source, _to: dest, _togid: to.id, _gid: group};

      this.http_post('copy', post_data, lock);
    }
    // target is an addressbook
    else if (to.id != source) {
      var lock = this.display_message('copyingcontact', 'loading'),
        post_data = {_cid: cid, _source: this.env.source, _to: to.id, _gid: group};

      this.http_post('copy', post_data, lock);
    }
  };

  // move contact(s) to the specified target (group or directory)
  this.move_contacts = function(to, event, cid)
  {
    if (!to) {
      cid = this.contact_list.get_selection();
      return this.addressbook_selector(event, function(to, obj) {
          var to = $(obj).data('source') ? ref.env.contactgroups['G' + $(obj).data('source') + $(obj).data('gid')] : ref.env.address_sources[to];
          ref.move_contacts(to, null, cid);
        });
    }

    var dest = to.type == 'group' ? to.source : to.id,
      source = this.env.source,
      group = this.env.group ? this.env.group : '';

    if (!this.env.address_sources[dest] || this.env.address_sources[dest].readonly)
      return;

    if (!cid)
      cid = this.contact_list.get_selection();

    // search result may contain contacts from many sources, but if there is only one...
    if (source == '' && this.env.selection_sources.length == 1)
      source = this.env.selection_sources[0];

    if (to.type == 'group') {
      if (dest == source)
        return;

      this._with_selected_contacts('move', {_to: dest, _togid: to.id, _cid: cid});
    }
    // target is an addressbook
    else if (to.id != source)
      this._with_selected_contacts('move', {_to: to.id, _cid: cid});
  };

  // delete contact(s)
  this.delete_contacts = function()
  {
    var undelete = this.env.source && this.env.address_sources[this.env.source].undelete;

    if (undelete) {
      this._with_selected_contacts('delete', {_cid: this.contact_list.get_selection()});
    }
    else {
      var cid = this.contact_list.get_selection();
      this.confirm_dialog(this.get_label('deletecontactconfirm'), 'delete', function() {
        ref._with_selected_contacts('delete', {_cid: cid});
      });
    }
  };

  this._with_selected_contacts = function(action, post_data)
  {
    var selection = post_data._cid;

    // exit if no contact specified or if selection is empty
    if (!selection.length && !this.env.cid)
      return;

    var n, a_cids = [],
      label = action == 'delete' ? 'contactdeleting' : 'movingcontact',
      lock = this.display_message(label, 'loading'),
      display_next = this.check_display_next();

    if (this.env.cid)
      a_cids.push(this.env.cid);
    else {
      for (n=0; n<selection.length; n++) {
        id = selection[n];
        a_cids.push(id);
        this.contact_list.remove_row(id, display_next && n == selection.length-1);
      }

      if (!display_next)
        this.contact_list.clear_selection();
    }

    if (!post_data)
      post_data = {};

    post_data._source = this.env.source;
    post_data._from = this.env.action;
    post_data._cid = a_cids.join(',');

    if (this.env.group)
      post_data._gid = this.env.group;

    // also send search request to get the right records from the next page
    if (this.env.search_request)
      post_data._search = this.env.search_request;

    // send request to server
    this.http_post(action, post_data, lock)

    return true;
  };

  // update a contact record in the list
  this.update_contact_row = function(cid, cols_arr, newcid, source, data)
  {
    var list = this.contact_list;

    cid = this.html_identifier(cid);

    // when in searching mode, concat cid with the source name
    if (!list.rows[cid]) {
      cid = cid + '-' + source;
      if (newcid)
        newcid = newcid + '-' + source;
    }

    list.update_row(cid, cols_arr, newcid, true);
    list.data[cid] = data;
  };

  // add row to contacts list
  this.add_contact_row = function(cid, cols, classes, data)
  {
    if (!this.gui_objects.contactslist)
      return false;

    var c, col, list = this.contact_list,
      row = { cols:[] };

    row.id = 'rcmrow' + this.html_identifier(cid);
    row.className = 'contact ' + (classes || '');

    if (list.in_selection(cid))
      row.className += ' selected';

    // add each submitted col
    for (c in cols) {
      col = {};
      col.className = String(c).toLowerCase();
      col.innerHTML = cols[c];
      row.cols.push(col);
    }

    // store data in list member
    list.data[cid] = data;
    list.insert_row(row);

    this.enable_command('export', list.rowcount > 0);
  };

  this.init_contact_form = function()
  {
    var col;

    if (this.env.coltypes) {
      this.set_photo_actions($('#ff_photo').val());
      for (col in this.env.coltypes)
        this.init_edit_field(col, null);
    }

    $('.contactfieldgroup .row a.deletebutton').click(function() {
      ref.delete_edit_field(this);
      return false;
    });

    $('select.addfieldmenu').change(function() {
      ref.insert_edit_field($(this).val(), $(this).attr('rel'), this);
      this.selectedIndex = 0;
    });

    // enable date pickers on date fields
    if ($.datepicker && this.env.date_format) {
      $.datepicker.setDefaults({
        dateFormat: this.env.date_format,
        changeMonth: true,
        changeYear: true,
        yearRange: '-120:+10',
        showOtherMonths: true,
        selectOtherMonths: true
      });
      $('input.datepicker').datepicker();
    }

    // Submit search form on Enter
    if (this.env.action == 'search')
      $(this.gui_objects.editform).append($('<input type="submit">').hide())
        .submit(function() { $('input.mainaction').click(); return false; });
  };

  // group creation dialog
  this.group_create = function()
  {
    var input = $('<input>').attr({type: 'text', 'data-submit': 'true'}),
      content = $('<label>').text(this.get_label('namex')).append(input),
      source = this.env.source;

    this.simple_dialog(content, 'newgroup', function() {
        var name;
        if (name = input.val()) {
          ref.http_post('group-create', {_source: source, _name: name},
            ref.set_busy(true, 'loading'));
          return true;
        }
      });
  };

  // group rename dialog
  this.group_rename = function()
  {
    if (!this.env.group)
      return;

    var group_name = this.env.contactgroups['G' + this.env.source + this.env.group].name,
      input = $('<input>').attr({type: 'text', 'data-submit': 'true'}).val(group_name),
      content = $('<label>').text(this.get_label('namex')).append(input),
      source = this.env.source,
      group = this.env.group;

    this.simple_dialog(content, 'grouprename', function() {
        var name;
        if ((name = input.val()) && name != group_name) {
          ref.http_post('group-rename', {_source: source, _gid: group, _name: name},
          ref.set_busy(true, 'loading'));
          return true;
        }
      });
  };

  this.group_delete = function()
  {
    if (this.env.group) {
      var group = this.env.group;
      this.confirm_dialog(this.get_label('deletegroupconfirm'), 'delete', function() {
          var lock = ref.set_busy(true, 'groupdeleting');
          ref.http_post('group-delete', {_source: ref.env.source, _gid: group}, lock);
        });
    }
  };

  // callback from server upon group-delete command
  this.remove_group_item = function(prop)
  {
    var key = 'G' + prop.source + prop.id;

    if (this.treelist.remove(key)) {
      // make sure there is no cached address book or contact group selectors
      this.destroy_entity_selector('addressbook-selector');
      this.destroy_entity_selector('contactgroup-selector');

      this.triggerEvent('group_delete', { source:prop.source, id:prop.id });
      delete this.env.contactfolders[key];
      delete this.env.contactgroups[key];
    }

    if (prop.source == this.env.source && prop.id == this.env.group)
      this.list_contacts(prop.source, 0);
  };

  //assign selected contacts to a group
  this.group_assign_selected = function(props, obj, event)
  {
    var cid = ref.contact_list.get_selection();
    var source = ref.env.source;
    this.contactgroup_selector(event, function(to) { ref.group_member_change('add', cid, source, to); });
  };

  //remove selected contacts from current active group
  this.group_remove_selected = function()
  {
    this.http_post('group-delmembers', {_cid: this.contact_list.get_selection(),
      _source: this.env.source, _gid: this.env.group});
  };

  //callback after deleting contact(s) from current group
  this.remove_group_contacts = function(props)
  {
    if (this.env.group !== undefined && (this.env.group === props.gid)) {
      var n, selection = this.contact_list.get_selection(),
        display_next= this.check_display_next();

      for (n=0; n<selection.length; n++) {
        id = selection[n];
        this.contact_list.remove_row(id, display_next && n == selection.length-1);
      }

      if (!display_next)
        this.contact_list.clear_selection();
    }
  };

  // callback for creating a new contact group
  this.insert_contact_group = function(prop)
  {
    prop.type = 'group';

    var key = 'G'+prop.source+prop.id,
      link = $('<a>').attr({href: '#', rel: prop.source + ':' + prop.id})
        .click(function() { return ref.command('listgroup', prop, this); })
        .text(prop.name);

    this.env.contactfolders[key] = this.env.contactgroups[key] = prop;
    this.treelist.insert({ id:key, html:link, classes:['contactgroup'] }, prop.source, 'contactgroup');

    // make sure there is no cached address book or contact group selectors
    this.destroy_entity_selector('addressbook-selector');
    this.destroy_entity_selector('contactgroup-selector');

    this.triggerEvent('group_insert', { id:prop.id, source:prop.source, name:prop.name, li:this.treelist.get_item(key) });
  };

  // callback for renaming a contact group
  this.update_contact_group = function(prop)
  {
    var key = 'G'+prop.source+prop.id,
      newnode = {};

    // group ID has changed, replace link node and identifiers
    if (prop.newid) {
      var newkey = 'G'+prop.source+prop.newid,
        newprop = $.extend({}, prop);

      this.env.contactfolders[newkey] = this.env.contactfolders[key];
      this.env.contactfolders[newkey].id = prop.newid;
      this.env.group = prop.newid;

      delete this.env.contactfolders[key];
      delete this.env.contactgroups[key];

      newprop.id = prop.newid;
      newprop.type = 'group';

      newnode.id = newkey;
      newnode.html = $('<a>').attr({href: '#', rel: prop.source + ':' + prop.newid})
        .click(function() { return ref.command('listgroup', newprop, this); })
        .text(prop.name);
    }
    // update displayed group name
    else {
      $(this.treelist.get_item(key)).children().first().text(prop.name);
      this.env.contactfolders[key].name = this.env.contactgroups[key].name = prop.name;

      if (prop.source == this.env.source && prop.id == this.env.group)
        this.set_group_prop(prop);
    }

    // update list node and re-sort it
    this.treelist.update(key, newnode, true);

    // make sure there is no cached address book or contact group selectors
    this.destroy_entity_selector('addressbook-selector');
    this.destroy_entity_selector('contactgroup-selector');

    this.triggerEvent('group_update', { id:prop.id, source:prop.source, name:prop.name, li:this.treelist.get_item(key), newid:prop.newid });
  };

  this.update_group_commands = function()
  {
    var source = this.env.source != '' ? this.env.address_sources[this.env.source] : null,
      supported = source && source.groups && !source.readonly;

    this.enable_command('group-create', supported);
    this.enable_command('group-rename', 'group-delete', supported && this.env.group);
  };

  this.init_edit_field = function(col, elem)
  {
    var label = this.env.coltypes[col].label;

    if (!elem)
      elem = $('.ff_' + col);

    if (label && !$('label[for="ff_' + col + '"]').length)
      elem.placeholder(label);
  };

  this.insert_edit_field = function(col, section, menu)
  {
    // just make pre-defined input field visible
    var elem = $('#ff_' + col);
    if (elem.length) {
      $('label[for="ff_' + col + '"]').parent().show();
      elem.show().focus();
      $(menu).children('option[value="' + col + '"]').prop('disabled', true);
    }
    else {
      var lastelem = $('.ff_' + col),
        appendcontainer = $('#contactsection'+section+' .contactcontroller'+col);

      if (!appendcontainer.length) {
        var sect = $('#contactsection'+section),
          lastgroup = $('.contactfieldgroup', sect).last();
        appendcontainer = $('<fieldset>').addClass('contactfieldgroup contactcontroller'+col);
        if (lastgroup.length)
          appendcontainer.insertAfter(lastgroup);
        else
          sect.prepend(appendcontainer);
      }

      if (appendcontainer.get(0).nodeName == 'FIELDSET') {
        var label, input,
          colprop = this.env.coltypes[col],
          name_suffix = colprop.limit != 1 ? '[]' : '',
          compact = $(menu).data('compact') ? true : false,
          input_id = 'ff_' + col + (colprop.count || 0),
          row = $('<div>').addClass('row input-group'),
          cell = $('<div>').addClass('contactfieldcontent ' + colprop.type);

        // Field label
        if (colprop.subtypes_select) {
          label = $(colprop.subtypes_select);
          if (!compact)
            label = $('<div>').addClass('contactfieldlabel label').append(label);
          else
            label.addClass('input-group-prepend');
        }
        else {
          label = $('<label>').addClass('contactfieldlabel label input-group-text')
            .attr('for', input_id).text(colprop.label);

          if (compact)
            label = $('<span class="input-group-prepend">').append(label);
        }

        // Field input
        if (colprop.type == 'text' || colprop.type == 'date') {
          input = $('<input>')
            .addClass('form-control ff_' + col)
            .attr({type: 'text', name: '_'+col+name_suffix, size: colprop.size, id: input_id});

          this.init_edit_field(col, input);

          if (colprop.type == 'date' && $.datepicker)
            input.addClass('datepicker').datepicker();
        }
        else if (colprop.type == 'textarea') {
          input = $('<textarea>')
            .addClass('form-control ff_' + col)
            .attr({ name: '_' + col + name_suffix, cols: colprop.size, rows: colprop.rows, id: input_id });

          this.init_edit_field(col, input);
        }
        else if (colprop.type == 'composite') {
          var i, childcol, cp, first, templ, cols = [], suffices = [], content = cell;

          row.addClass('composite');

          if (compact)
            content = $('<div class="content input-group-text">');

          // read template for composite field order
          if (templ = this.env[col + '_template']) {
            for (i=0; i < templ.length; i++) {
              cols.push(templ[i][1]);
              suffices.push(templ[i][2]);
            }
          }
          else {  // list fields according to appearance in colprop
            for (childcol in colprop.childs)
              cols.push(childcol);
          }

          for (i=0; i < cols.length; i++) {
            childcol = cols[i];
            cp = colprop.childs[childcol];
            input = $('<input>')
              .addClass('form-control ff_' + childcol)
              .attr({ type: 'text', name: '_' + childcol + name_suffix, size: cp.size })
              .appendTo(content);

            if (!compact)
              content.append(suffices[i] || " ");

            this.init_edit_field(childcol, input);
            if (!first) first = input;
          }

          if (compact)
            input = content;
          else
            input = first;  // set focus to the first of this composite fields
        }
        else if (colprop.type == 'select') {
          input = $('<select>')
            .addClass('custom-select ff_' + col)
            .attr({ name: '_' + col + name_suffix, id: input_id });

          var options = input.attr('options');
          options[options.length] = new Option('---', '');
          if (colprop.options)
            $.each(colprop.options, function(i, val) { options[options.length] = new Option(val, i); });
        }

        if (input) {
          var delbutton = $('<a href="#del"></a>')
            .addClass('contactfieldbutton deletebutton input-group-text icon delete')
            .attr({title: this.get_label('delete'), rel: col})
            .html(this.env.delbutton)
            .click(function() { ref.delete_edit_field(this); return false; });

          row.append(label);

          if (!compact) {
            if (colprop.type != 'composite')
              cell.append(input);
            row.append(cell.append(delbutton));
          }
          else {
            row.append(input).append(delbutton);
            delbutton.wrap('<span class="input-group-append">');
          }

          row.appendTo(appendcontainer.show());

          if (input.is('div'))
            input.find('input').first().focus();
          else
            input.first().focus();

          // disable option if limit reached
          if (!colprop.count) colprop.count = 0;
          if (++colprop.count == colprop.limit && colprop.limit)
            $(menu).children('option[value="' + col + '"]').prop('disabled', true);

          this.triggerEvent('insert-edit-field', input);
        }
      }
    }
  };

  this.delete_edit_field = function(elem)
  {
    var col = $(elem).attr('rel'),
      colprop = this.env.coltypes[col],
      input_group = $(elem).parents('div.row'),
      fieldset = $(elem).parents('fieldset.contactfieldgroup'),
      addmenu = fieldset.parent().find('select.addfieldmenu');

    // just clear input but don't hide the last field
    if (--colprop.count <= 0 && colprop.visible)
      input_group.find('input').val('').blur();
    else {
      input_group.remove();
      // hide entire fieldset if no more rows
      if (!fieldset.children('div.row').length)
        fieldset.hide();
    }

    // enable option in add-field selector or insert it if necessary
    if (addmenu.length) {
      var option = addmenu.children('option[value="'+col+'"]');
      if (option.length)
        option.prop('disabled', false);
      else
        option = $('<option>').attr('value', col).html(colprop.label).appendTo(addmenu);
      addmenu.show();
    }
  };

  this.upload_contact_photo = function(form)
  {
    if (form && form.elements._photo.value) {
      this.async_upload_form(form, 'upload-photo', function(e) {
        ref.set_busy(false, null, ref.file_upload_id);
      });

      // display upload indicator
      this.file_upload_id = this.set_busy(true, 'uploading');
    }
  };

  this.replace_contact_photo = function(id)
  {
    var img_src = id == '-del-' ? this.env.photo_placeholder :
      this.env.comm_path + '&_action=photo&_source=' + this.env.source + '&_cid=' + (this.env.cid || 0) + '&_photo=' + id;

    this.set_photo_actions(id);
    $(this.gui_objects.contactphoto).children('img').attr('src', img_src);
  };

  this.photo_upload_end = function()
  {
    this.set_busy(false, null, this.file_upload_id);
    delete this.file_upload_id;
  };

  this.set_photo_actions = function(id)
  {
    var n, buttons = this.buttons['upload-photo'];
    for (n=0; buttons && n < buttons.length; n++)
      $('a#'+buttons[n].id).html(this.get_label(id == '-del-' ? 'addphoto' : 'replacephoto'));

    $('#ff_photo').val(id);
    this.enable_command('upload-photo', this.env.coltypes.photo ? true : false);
    this.enable_command('delete-photo', this.env.coltypes.photo && id != '-del-');
  };

  // load advanced search page
  this.advanced_search = function()
  {
    var dialog = $('<iframe>').attr('src', this.url('search', {_form: 1, _framed: 1})),
      search_func = function() {
        var valid = false, form = {_adv: 1};

        $.each($(dialog[0].contentWindow.rcmail.gui_objects.editform).serializeArray(), function() {
          if (this.name.match(/^_search/) && this.value != '') {
            form[this.name] = this.value;
            valid = true;
          }
        });

        if (valid) {
          ref.http_post('search', form, ref.set_busy(true, 'searching'));
          return true;
        }
      };

    this.simple_dialog(dialog, 'advsearch', search_func, {
      button: 'search',
      width: 600,
      height: 500
    });

    return true;
  };

  // unselect directory/group
  this.unselect_directory = function()
  {
    this.select_folder('');
    this.enable_command('search-delete', false);
  };

  // callback for creating a new saved search record
  this.insert_saved_search = function(name, id)
  {
    var key = 'S'+id,
      link = $('<a>').attr({href: '#', rel: id})
        .click(function() { return ref.command('listsearch', id, this); })
        .html(name),
      prop = { name:name, id:id };

    this.savedsearchlist.insert({ id:key, html:link, classes:['contactsearch'] }, null, 'contactsearch');
    this.select_folder(key,'',true);
    this.enable_command('search-delete', true);
    this.env.search_id = id;

    this.triggerEvent('abook_search_insert', prop);
  };

  // creates a dialog for saved search
  this.search_create = function()
  {
    var input = $('<input>').attr('type', 'text'),
      content = $('<label>').text(this.get_label('namex')).append(input);

    this.simple_dialog(content, 'searchsave',
      function() {
        var name;
        if (name = input.val()) {
          ref.http_post('search-create', {_search: ref.env.search_request, _name: name},
            ref.set_busy(true, 'loading'));
          return true;
        }
      }
    );
  };

  this.search_delete = function()
  {
    if (this.env.search_request) {
      var lock = this.set_busy(true, 'savedsearchdeleting');
      this.http_post('search-delete', {_sid: this.env.search_id}, lock);
    }
  };

  // callback from server upon search-delete command
  this.remove_search_item = function(id)
  {
    if (this.savedsearchlist.remove('S' + id)) {
      this.triggerEvent('search_delete', {id: id});
    }

    this.env.search_id = null;
    this.env.search_request = null;
    this.list_contacts_clear();
    this.reset_qsearch();
    this.enable_command('search-delete', 'search-create', false);
  };

  this.listsearch = function(id)
  {
    var lock = this.set_busy(true, 'searching');

    if (this.contact_list) {
      this.list_contacts_clear();
    }

    this.reset_qsearch();

    if (this.savedsearchlist) {
      this.treelist.select('');
      this.savedsearchlist.select('S'+id);
    }
    else
      this.select_folder('S'+id, '', true);

    // reset vars
    this.env.current_page = 1;
    this.http_request('search', {_sid: id}, lock);
  };

  // display a dialog with QR code image
  this.qrcode = function()
  {
    var img = new Image(300, 300);

    img.src = this.url('addressbook/qrcode', {_source: this.env.source, _cid: this.get_single_cid()});

    return this.simple_dialog(img, 'qrcode', null, {
        button: false,
        cancel_button: 'close',
        width: 300,
        height: 300
    });
  };


  /*********************************************************/
  /*********        user settings methods          *********/
  /*********************************************************/

  // preferences section select and load options frame
  this.section_select = function(list)
  {
    var win, id = list.get_single_selection();

    if (id && (win = this.get_frame_window(this.env.contentframe))) {
      this.location_href({_action: 'edit-prefs', _section: id, _framed: 1}, win, true);
    }
  };

  this.response_select = function(list)
  {
    var id = list.get_single_selection();

    this.enable_command('delete', !!id && $.inArray(id, this.env.readonly_responses) < 0);

    if (id) {
      this.load_response(id, 'edit-response');
    }
  };

  // load response record
  this.load_response = function(id, action)
  {
    var win;

    if (win = this.get_frame_window(this.env.contentframe)) {
      if (id || action == 'add-response') {
        if (!id)
          this.responses_list.clear_selection();

        this.location_href({_action: action, _id: id, _framed: 1}, win, true);
      }
    }
  };

  this.identity_select = function(list)
  {
    var id = list.get_single_selection();

    this.enable_command('delete', !!id && list.rowcount > 1 && this.env.identities_level < 2);

    if (id) {
      this.load_identity(id, 'edit-identity');
    }
  };

  // load identity record
  this.load_identity = function(id, action)
  {
    var win;

    if (win = this.get_frame_window(this.env.contentframe)) {
      if (id || action == 'add-identity') {
        if (!id)
          this.identity_list.clear_selection();

        this.location_href({_action: action, _iid: id, _framed: 1}, win, true);
      }
    }
  };

  this.delete_identity = function(id)
  {
    if (!id && this.identity_list)
      id = this.identity_list.get_single_selection();

    if (id) {
      this.confirm_dialog(this.get_label('deleteidentityconfirm'), 'delete', function() {
          ref.http_post('settings/delete-identity', {_iid: id}, true);
      });
    }
  };

  this.delete_response = function(id)
  {
    if (!id && this.responses_list) {
      id = this.responses_list.get_single_selection();
    }

    if (id) {
      this.confirm_dialog(this.get_label('deleteresponseconfirm'), 'delete', function() {
          ref.http_post('settings/delete-response', {_id: id}, true);
      });
    }
  };

  // Update indetities list (add or update a record)
  this.update_identity_row = function(id, name, add)
  {
    var list = this.identity_list,
      rid = this.html_identifier(id);

    if (add) {
      list.insert_row({id: 'rcmrow' + rid, cols: [{className: 'mail', innerHTML: name}]});
      list.select(rid);
    }
    else {
      list.update_row(rid, [name]);
    }
  };

  // Update responses list (add or update a record)
  this.update_response_row = function(id, name, add)
  {
    var list = this.responses_list;

    if (add) {
      list.insert_row({id: 'rcmrow' + id, cols: [{className: 'name', innerHTML: name}]});
      list.select(id);
    }
    else {
      list.update_row(id, [name]);
    }
  };

  // Remove response record from the responses list
  this.remove_response = function(id)
  {
    if (this.responses_list) {
      this.responses_list.remove_row(id);
      this.show_contentframe(false);
    }

    this.enable_command('delete', false);
  };

  // Remove identity record from the identities list
  this.remove_identity = function(id)
  {
    var list = this.identity_list,
      rid = this.html_identifier(id);

    if (list && id) {
      list.remove_row(rid);
      this.show_contentframe(false);
    }

    this.enable_command('delete', false);
  };


  /*********************************************************/
  /*********        folder manager methods         *********/
  /*********************************************************/

  this.init_subscription_list = function()
  {
    var delim = RegExp.escape(this.env.delimiter);

    this.last_sub_rx = RegExp('['+delim+']?[^'+delim+']+$');

    this.subscription_list = new rcube_treelist_widget(this.gui_objects.subscriptionlist, {
        selectable: true,
        tabexit: false,
        parent_focus: true,
        id_prefix: 'rcmli',
        id_encode: this.html_identifier_encode,
        id_decode: this.html_identifier_decode,
        searchbox: '#foldersearch'
    });

    this.subscription_list
      .addEventListener('select', function(node) { ref.subscription_select(node.id); })
      .addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
      .addEventListener('expand', function(node) { ref.folder_collapsed(node) })
      .addEventListener('search', function(p) { if (p.query) ref.subscription_select(); })
      .draggable({cancel: 'li.mailbox.root,input,div.treetoggle,.custom-control'})
      .droppable({
        // @todo: find better way, accept callback is executed for every folder
        // on the list when dragging starts (and stops), this is slow, but
        // I didn't find a method to check droptarget on over event
        accept: function(node) {
          if (!node.is('.mailbox'))
            return false;

          var source_folder = ref.folder_id2name(node.attr('id')),
            dest_folder = ref.folder_id2name(this.id),
            source = ref.env.subscriptionrows[source_folder],
            dest = ref.env.subscriptionrows[dest_folder];

          return source && !source[2]
            && dest_folder != source_folder.replace(ref.last_sub_rx, '')
            && !dest_folder.startsWith(source_folder + ref.env.delimiter);
        },
        drop: function(e, ui) {
          var source = ref.folder_id2name(ui.draggable.attr('id')),
            dest = ref.folder_id2name(this.id);

          ref.subscription_move_folder(source, dest);
        }
      });
  };

  this.folder_id2name = function(id)
  {
    return id ? ref.html_identifier_decode(id.replace(/^rcmli/, '')) : null;
  };

  this.subscription_select = function(id)
  {
    var folder;

    if (id && id != '*' && (folder = this.env.subscriptionrows[id])) {
      this.env.mailbox = id;
      this.show_folder(id);
      this.enable_command('delete-folder', !folder[2]);
    }
    else {
      this.env.mailbox = null;
      this.show_contentframe(false);
      this.enable_command('delete-folder', 'purge', false);
    }
  };

  this.subscription_move_folder = function(from, to)
  {
    if (from && to !== null && from != to && to != from.replace(this.last_sub_rx, '')) {
      var path = from.split(this.env.delimiter),
        basename = path.pop(),
        newname = to === '' || to === '*' ? basename : to + this.env.delimiter + basename;

      if (newname != from) {
        this.confirm_dialog(this.get_label('movefolderconfirm'), 'move', function() {
          ref.http_post('rename-folder', {_folder_oldname: from, _folder_newname: newname},
            ref.set_busy(true, 'foldermoving'));
        }, {button_class: 'save move'});
      }
    }
  };

  // tell server to create and subscribe a new mailbox
  this.create_folder = function()
  {
    this.show_folder('', this.env.mailbox);
  };

  // delete a specific mailbox with all its messages
  this.delete_folder = function(name)
  {
    if (!name)
      name = this.env.mailbox;

    if (name) {
      this.confirm_dialog(this.get_label('deletefolderconfirm'), 'delete', function() {
          ref.http_post('delete-folder', {_mbox: name}, ref.set_busy(true, 'folderdeleting'));
        });
    }
  };

  // Add folder row to the table and initialize it
  this.add_folder_row = function (id, name, display_name, is_protected, subscribed, class_name, refrow, subfolders)
  {
    if (!this.gui_objects.subscriptionlist)
      return false;

    // reset searching
    if (this.subscription_list.is_search()) {
      this.subscription_select();
      this.subscription_list.reset_search();
    }

    // disable drag-n-drop temporarily
    // some skins disable dragging in mobile mode, so we have to check if it is still draggable
    if (this.subscription_list.is_draggable())
      this.subscription_list.draggable('destroy').droppable('destroy');

    var row, n, tmp, tmp_name, rowid, collator, pos, p, parent = '',
      folders = [], list = [], slist = [],
      list_element = $(this.gui_objects.subscriptionlist);
      row = refrow ? refrow : $($('li', list_element).get(1)).clone(true);

    if (!row.length) {
      // Refresh page if we don't have a table row to clone
      this.goto_url('folders');
      return false;
    }

    // set ID, reset css class
    row.attr({id: 'rcmli' + this.html_identifier_encode(id), 'class': class_name});

    if (!refrow || !refrow.length) {
      // remove old data, subfolders and toggle
      $('ul,div.treetoggle', row).remove();
      row.removeData('filtered');
    }

    // set folder name
    $('a', row).first().text(display_name).removeAttr('title');

    // update subscription checkbox
    $('input[name="_subscribed[]"]', row).first().val(id)
      .prop({checked: subscribed ? true : false, disabled: is_protected ? true : false});

    // add to folder/row-ID map
    this.env.subscriptionrows[id] = [name, display_name, false];

    // copy folders data to an array for sorting
    $.each(this.env.subscriptionrows, function(k, v) { v[3] = k; folders.push(v); });

    try {
      // use collator if supported (FF29, IE11, Opera15, Chrome24)
      collator = new Intl.Collator(this.env.locale.replace('_', '-'));
    }
    catch (e) {};

    // sort folders
    folders.sort(function(a, b) {
      var i, f1, f2,
        path1 = a[0].split(ref.env.delimiter),
        path2 = b[0].split(ref.env.delimiter),
        len = path1.length;

      for (i=0; i<len; i++) {
        f1 = path1[i];
        f2 = path2[i];

        if (f1 !== f2) {
          if (f2 === undefined)
            return 1;
          if (collator)
            return collator.compare(f1, f2);
          else
            return f1 < f2 ? -1 : 1;
        }
        else if (i == len-1) {
          return -1
        }
      }
    });

    for (n in folders) {
      p = folders[n][3];
      // protected folder
      if (folders[n][2]) {
        tmp_name = p + this.env.delimiter;
        // prefix namespace cannot have subfolders (#1488349)
        if (tmp_name == this.env.prefix_ns)
          continue;
        slist.push(p);
        tmp = tmp_name;
      }
      // protected folder's child
      else if (tmp && p.startsWith(tmp))
        slist.push(p);
      // other
      else {
        list.push(p);
        tmp = null;
      }
    }

    // check if subfolder of a protected folder
    for (n=0; n<slist.length; n++) {
      if (id.startsWith(slist[n] + this.env.delimiter))
        rowid = slist[n];
    }

    // find folder position after sorting
    for (n=0; !rowid && n<list.length; n++) {
      if (n && list[n] == id)
        rowid = list[n-1];
    }

    // add row to the table
    if (rowid && (n = this.subscription_list.get_item(rowid, true))) {
      // find parent folder
      if (pos = id.lastIndexOf(this.env.delimiter)) {
        parent = id.substring(0, pos);
        parent = this.subscription_list.get_item(parent, true);

        // add required tree elements to the parent if not already there
        if (!$('div.treetoggle', parent).length) {
          $('<div>&nbsp;</div>').addClass('treetoggle collapsed').appendTo(parent);
        }
        if (!$('ul', parent).length) {
          $('<ul>').css('display', 'none').appendTo(parent);
        }
      }

      if (parent && n == parent) {
        $('ul', parent).first().append(row);
      }
      else {
        while (p = $(n).parent().parent().get(0)) {
          if (parent && p == parent)
            break;
          if (!$(p).is('li.mailbox'))
            break;
          n = p;
        }

        $(n).after(row);
      }
    }
    else {
      list_element.append(row);
    }

    // add subfolders
    $.extend(this.env.subscriptionrows, subfolders || {});

    // update list widget
    this.subscription_list.reset(true);
    this.subscription_select();

    // expand parent
    if (parent) {
      this.subscription_list.expand(this.folder_id2name(parent.id));
    }

    row = row.show().get(0);
    if (row.scrollIntoView)
      row.scrollIntoView(false);

    // Let skins to do their magic, e.g. Elastic will fix pretty checkbox
    if (!refrow)
      this.triggerEvent('clonerow', {row: row, id: id});

    return row;
  };

  // replace an existing table row with a new folder line (with subfolders)
  this.replace_folder_row = function(oldid, id, name, display_name, is_protected, class_name)
  {
    if (!this.gui_objects.subscriptionlist) {
      if (this.is_framed()) {
        // @FIXME: for some reason this 'parent' variable need to be prefixed with 'window.'
        return window.parent.rcmail.replace_folder_row(oldid, id, name, display_name, is_protected, class_name);
      }

      return false;
    }

    // reset searching
    if (this.subscription_list.is_search()) {
      this.subscription_select();
      this.subscription_list.reset_search();
    }

    var subfolders = {},
      row = this.subscription_list.get_item(oldid, true),
      parent = $(row).parent(),
      old_folder = this.env.subscriptionrows[oldid],
      prefix_len_id = oldid.length,
      prefix_len_name = old_folder[0].length,
      subscribed = $('input[name="_subscribed[]"]', row).first().prop('checked');

    // no renaming, only update class_name
    if (oldid == id) {
      $(row).attr('class', class_name || '');
      return;
    }

    // update subfolders
    $('li', row).each(function() {
      var fname = ref.folder_id2name(this.id),
        folder = ref.env.subscriptionrows[fname],
        newid = id + fname.slice(prefix_len_id);

      this.id = 'rcmli' + ref.html_identifier_encode(newid);
      $('input[name="_subscribed[]"]', this).first().val(newid);
      folder[0] = name + folder[0].slice(prefix_len_name);

      subfolders[newid] = folder;
      delete ref.env.subscriptionrows[fname];
    });

    // get row off the list
    row = $(row).detach();

    delete this.env.subscriptionrows[oldid];

    // remove parent list/toggle elements if not needed
    if (parent.get(0) != this.gui_objects.subscriptionlist && !$('li', parent).length) {
      $('ul,div.treetoggle', parent.parent()).remove();
    }

    // move the existing table row
    this.add_folder_row(id, name, display_name, is_protected, subscribed, class_name, row, subfolders);
  };

  // remove the table row of a specific mailbox from the table
  this.remove_folder_row = function(folder)
  {
    // reset searching
    if (this.subscription_list.is_search()) {
      this.subscription_select();
      this.subscription_list.reset_search();
    }

    var list = [], row = this.subscription_list.get_item(folder, true);

    // get subfolders if any
    $('li', row).each(function() { list.push(ref.folder_id2name(this.id)); });

    // remove folder row (and subfolders)
    this.subscription_list.remove(folder);

    // update local list variable
    list.push(folder);
    $.each(list, function(i, v) { delete ref.env.subscriptionrows[v]; });
  };

  this.subscribe = function(folder)
  {
    this.change_subscription_state(folder, true);
  };

  this.unsubscribe = function(folder)
  {
    this.change_subscription_state(folder, false);
  };

  this.change_subscription_state = function(folder, state)
  {
    if (folder) {
      var prefix = state ? '' : 'un',
        lock = this.display_message('folder' + prefix + 'subscribing', 'loading');

      this.http_post(prefix + 'subscribe', {_mbox: folder}, lock);

      // in case this was a list of search results, update also the main list
      $(this.gui_objects.subscriptionlist).find('input[value="' + folder + '"]').prop('checked', state);
    }
  };


  // when user select a folder in manager
  this.show_folder = function(folder, path, force)
  {
    var win, target = window,
      action = folder === '' ? 'add' : 'edit',
      url = '&_action=' + action + '-folder&_mbox=' + urlencode(folder);

    if (path)
      url += '&_path='+urlencode(path);

    if (win = this.get_frame_window(this.env.contentframe)) {
      target = win;
      url += '&_framed=1';
    }

    if (String(target.location.href).indexOf(url) >= 0 && !force)
      this.show_contentframe(true);
    else
      this.location_href(this.env.comm_path+url, target, true);
  };

  // disables subscription checkbox (for protected folder)
  this.disable_subscription = function(folder)
  {
    var row = this.subscription_list.get_item(folder, true);
    if (row)
      $('input[name="_subscribed[]"]', row).first().prop('disabled', true);
  };

  // resets state of subscription checkbox (e.g. on error)
  this.reset_subscription = function(folder, state)
  {
    var row = this.subscription_list.get_item(folder, true);
    if (row)
      $('input[name="_subscribed[]"]', row).first().prop('checked', state);
  };

  this.folder_size = function(folder)
  {
    var lock = this.set_busy(true, 'loading');
    this.http_post('folder-size', {_mbox: folder}, lock);
  };

  this.folder_size_update = function(size)
  {
    $('#folder-size').replaceWith(size);
  };

  // filter folders by namespace
  this.folder_filter = function(prefix)
  {
    this.subscription_list.reset_search();

    this.subscription_list.container.children('li').each(function() {
      var i, folder = ref.folder_id2name(this.id);
      // show all folders
      if (prefix == '---') {
      }
      // got namespace prefix
      else if (prefix) {
        if (folder !== prefix) {
          $(this).data('filtered', true).hide();
          return
        }
      }
      // no namespace prefix, filter out all other namespaces
      else {
        // first get all namespace roots
        for (i in ref.env.ns_roots) {
          if (folder === ref.env.ns_roots[i]) {
            $(this).data('filtered', true).hide();
            return;
          }
        }
      }

      $(this).removeData('filtered').show();
    });
  };

  /*********************************************************/
  /*********           GUI functionality           *********/
  /*********************************************************/

  this.init_button = function(cmd, prop)
  {
    var elm = document.getElementById(prop.id);
    if (!elm)
      return;

    var preload = false;
    if (prop.type == 'image') {
      elm = elm.parentNode;
      preload = true;
    }

    elm._command = cmd;
    elm._id = prop.id;
    if (prop.sel) {
      elm.onmousedown = function(e) { return ref.button_sel(this._command, this._id); };
      elm.onmouseup = function(e) { return ref.button_out(this._command, this._id); };
      if (preload)
        new Image().src = prop.sel;
    }
    if (prop.over) {
      elm.onmouseover = function(e) { return ref.button_over(this._command, this._id); };
      elm.onmouseout = function(e) { return ref.button_out(this._command, this._id); };
      if (preload)
        new Image().src = prop.over;
    }
  };

  // set event handlers on registered buttons
  this.init_buttons = function()
  {
    for (var cmd in this.buttons) {
      if (typeof cmd !== 'string')
        continue;

      for (var i=0; i<this.buttons[cmd].length; i++) {
        this.init_button(cmd, this.buttons[cmd][i]);
      }
    }
  };

  // set button to a specific state
  this.set_button = function(command, state)
  {
    var n, button, obj, a_buttons = this.buttons[command],
      len = a_buttons ? a_buttons.length : 0;

    for (n=0; n<len; n++) {
      button = a_buttons[n];
      obj = document.getElementById(button.id);

      if (!obj || button.status === state)
        continue;

      // get default/passive setting of the button
      if (button.type == 'image' && !button.status) {
        button.pas = obj._original_src ? obj._original_src : obj.src;
        // respect PNG fix on IE browsers
        if (obj.runtimeStyle && obj.runtimeStyle.filter && obj.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/))
          button.pas = RegExp.$1;
      }
      else if (!button.status)
        button.pas = String(obj.className);

      button.status = state;

      // set image according to button state
      if (button.type == 'image' && button[state]) {
        obj.src = button[state];
      }
      // set class name according to button state
      else if (button[state] !== undefined) {
        obj.className = button[state];
      }

      // disable/enable input buttons
      if (button.type == 'input' || button.type == 'button') {
        obj.disabled = state == 'pas';
      }
      else {
        $(obj).attr({
          tabindex: state == 'pas' || state == 'sel' ? '-1' : ($(obj).attr('data-tabindex') || '0'),
          'aria-disabled': state == 'pas' || state == 'sel' ? 'true' : 'false'
        });
      }
    }
  };

  // display a specific alttext
  this.set_alttext = function(command, label)
  {
    var n, button, obj, link, label,
      a_buttons = this.buttons[command],
      len = a_buttons ? a_buttons.length : 0;

    for (n=0; n<len; n++) {
      button = a_buttons[n];
      obj = document.getElementById(button.id);
      label = this.get_label(label);

      if (obj && button.type == 'image') {
        obj.setAttribute('alt', label);
        if ((link = obj.parentNode) && link.tagName.toLowerCase() == 'a')
          link.setAttribute('title', label);
      }
      else if (obj)
        obj.setAttribute('title', label);
    }
  };

  // mouse over button
  this.button_over = function(command, id)
  {
    this.button_event(command, id, 'over');
  };

  // mouse down on button
  this.button_sel = function(command, id)
  {
    this.button_event(command, id, 'sel');
  };

  // mouse out of button
  this.button_out = function(command, id)
  {
    this.button_event(command, id, 'act');
  };

  // event of button
  this.button_event = function(command, id, event)
  {
    var n, button, obj, a_buttons = this.buttons[command],
      len = a_buttons ? a_buttons.length : 0;

    for (n=0; n<len; n++) {
      button = a_buttons[n];
      if (button.id == id && button.status == 'act') {
        if (button[event] && (obj = document.getElementById(button.id))) {
          obj[button.type == 'image' ? 'src' : 'className'] = button[event];
        }

        if (event == 'sel') {
          this.buttons_sel[id] = command;
        }
      }
    }
  };

  // write to the document/window title
  this.set_pagetitle = function(title)
  {
    if (title && document.title)
      document.title = title;
  };

  // display a system message, list of types in common.css (below #message definition)
  this.display_message = function(msg, type, timeout, key)
  {
    if (msg && msg.length && /^[a-z._]+$/.test(msg))
      msg = this.get_label(msg);

    // pass command to parent window
    if (this.is_framed())
      return parent.rcmail.display_message(msg, type, timeout);

    if (!this.gui_objects.message) {
      // save message in order to display after page loaded
      if (type != 'loading')
        this.pending_message = [msg, type, timeout, key];
      return 1;
    }

    if (!type)
      type = 'notice';
    else if (type == 'loading') {
      if (!key)
        key = 'loading';
      if (!timeout)
        timeout = this.env.request_timeout * 1000;
      if (!msg)
        msg = this.get_label('loading');
    }

    if (!key)
      key = this.html_identifier(msg);

    var date = new Date(),
      id = type + date.getTime();

    if (!timeout) {
      switch (type) {
        case 'error':
        case 'warning':
          timeout = this.message_time * 2;
          break;

        case 'uploading':
          timeout = 0;
          break;

        default:
          timeout = this.message_time;
      }
    }

    // The same message is already displayed
    if (this.messages[key]) {
      // replace label
      if (this.messages[key].obj)
        $('div.content', this.messages[key].obj).html(msg);
      // store label in stack
      if (type == 'loading') {
        this.messages[key].labels.push({'id': id, 'msg': msg});
      }
      // add element and set timeout
      this.messages[key].elements.push(id);
      setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
      return id;
    }

    // create DOM object and display it
    var obj = $('<div>').addClass(type + ' content').html(msg).data('key', key),
      cont = $(this.gui_objects.message).append(obj).show();

    this.messages[key] = {'obj': obj, 'elements': [id]};

    if (type == 'loading') {
      this.messages[key].labels = [{'id': id, 'msg': msg}];
    }
    else if (type != 'uploading') {
      obj.click(function() { return ref.hide_message(obj); })
        .attr('role', 'alert');
    }

    this.triggerEvent('message', { message:msg, type:type, timeout:timeout, object:obj });

    if (timeout > 0)
      setTimeout(function() { ref.hide_message(id, type != 'loading'); }, timeout);

    return id;
  };

  // make a message to disappear
  this.hide_message = function(obj, fade)
  {
    // pass command to parent window
    if (this.is_framed())
      return parent.rcmail.hide_message(obj, fade);

    if (!this.gui_objects.message)
      return;

    var k, n, i, o, m = this.messages;

    // Hide message by object, don't use for 'loading'!
    if (typeof obj === 'object') {
      o = $(obj);
      k = o.data('key');
      this.hide_message_object(o, fade);
      if (m[k])
        delete m[k];
    }
    // Hide message by id
    else {
      for (k in m) {
        for (n in m[k].elements) {
          if (m[k] && m[k].elements[n] == obj) {
            m[k].elements.splice(n, 1);
            // hide DOM element if last instance is removed
            if (!m[k].elements.length) {
              this.hide_message_object(m[k].obj, fade);
              delete m[k];
            }
            // set pending action label for 'loading' message
            else if (k == 'loading') {
              for (i in m[k].labels) {
                if (m[k].labels[i].id == obj) {
                  delete m[k].labels[i];
                }
                else {
                  o = m[k].labels[i].msg;
                  $('div.content', m[k].obj).html(o);
                }
              }
            }
          }
        }
      }
    }
  };

  // hide message object and remove from the DOM
  this.hide_message_object = function(o, fade)
  {
    if (fade)
      o.fadeOut(600, function() { $(this).remove(); });
    else
      o.hide().remove();
  };

  // remove all messages immediately
  this.clear_messages = function()
  {
    // pass command to parent window
    if (this.is_framed())
      return parent.rcmail.clear_messages();

    var k, n, m = this.messages;

    for (k in m)
      for (n in m[k].elements)
        if (m[k].obj)
          this.hide_message_object(m[k].obj);

    this.messages = {};
  };

  // display uploading message with progress indicator
  // data should contain: name, total, current, percent, text
  this.display_progress = function(data)
  {
    if (!data || !data.name)
      return;

    var msg = this.messages['progress' + data.name];

    if (!data.label)
      data.label = this.get_label('uploadingmany');

    if (!msg) {
      if (!data.percent || data.percent < 100)
        this.display_message(data.label, 'uploading', 0, 'progress' + data.name);
      return;
    }

    if (!data.total || data.percent >= 100) {
      this.hide_message(msg.obj);
      return;
    }

    if (data.text)
      data.label += ' ' + data.text;

    msg.obj.text(data.label);
  };

  // open a jquery UI dialog with the given content
  this.show_popup_dialog = function(content, title, buttons, options)
  {
    // forward call to parent window
    if (this.is_framed()) {
      return parent.rcmail.show_popup_dialog(content, title, buttons, options);
    }

    var popup = $('<div class="popup">');

    if (typeof content == 'object') {
      popup.append(content);
      if ($(content).is('iframe'))
        popup.addClass('iframe');
    }
    else
      popup.html(content);

    // assign special classes to dialog buttons
    var i = 0, fn = function(button, classes, idx) {
        if (typeof button == 'function') {
          button = {
            click: button,
            text: idx,
            'class': classes
          };
        }
        else {
          buttons['class'] = classes;
        }

        return button;
      };

    if (options && options.button_classes)
      $.each(buttons, function(idx, button) {
        var cl = options.button_classes[i];
        if (cl)
          buttons[idx] = fn(button, cl, idx);
        i++;
      });

    options = $.extend({
        title: title,
        buttons: buttons,
        modal: true,
        resizable: true,
        width: 500,
        close: function(event, ui) { $(this).remove(); }
      }, options || {});

    popup.dialog(options);

    // Remember the jQuery instance (window), useful when closing the dialog
    popup[0].jqref = $;

    if (options.width)
      popup.width(options.width);
    if (options.height)
      popup.height(options.height);

    var dialog = popup.parent();

    if (!options.noresize) {
      // resize and center popup
      var win = $(window), w = win.width(), h = win.height(),
        width = popup.width(),
        height = options.height || (popup[0].scrollHeight + 20),
        titlebar_height = $('.ui-dialog-titlebar', dialog).outerHeight() || 0,
        buttonpane_height = $('.ui-dialog-buttonpane', dialog).outerHeight() || 0,
        padding = (parseInt(dialog.css('padding-top')) + parseInt(popup.css('padding-top'))) * 2;

      popup.dialog('option', {
        height: Math.min(h - 40, height + titlebar_height + buttonpane_height + padding + 2),
        width: Math.min(w - 20, width + 28)
      });
    }
    else {
      popup.css('width', 'auto');
    }

    // Don't propagate keyboard events to the UI below the dialog (#6055)
    dialog.on('keydown keyup', function(e) { e.stopPropagation(); });

    // Add Enter key handler to the input, click the 'mainaction' button
    dialog.find('input[data-submit]').on('keydown', function(e) {
      if (e.which == 13) {
        dialog.find('.ui-dialog-buttonpane button.mainaction').click();
      }
    });

    this.triggerEvent('dialog-open', {obj: popup});

    return popup;
  };

  // show_popup_dialog() wrapper for simple dialogs with action and Cancel buttons
  this.simple_dialog = function(content, title, action_func, options)
  {
    if (!options)
      options = {};

    var title = this.get_label(title),
      save_label = options.button || 'save',
      save_class = options.button_class || save_label.replace(/^[^\.]+\./i, ''),
      cancel_label = options.cancel_button || 'cancel',
      cancel_class = options.cancel_class || cancel_label.replace(/^[^\.]+\./i, ''),
      close_func = function(e, ui, dialog) {
        if (!dialog)
          dialog = this;

        // The dialog might got open in the current window, but also any of its parents (#8627)
        // We have to use the jQuery object that did invoke the dialog, set in show_popup_dialog()
        dialog.jqref(dialog).dialog('close');
        if (options.cancel_func) options.cancel_func(e, ref);
      },
      buttons = [{
        text: this.get_label(cancel_label),
        'class': cancel_class.replace(/close/i, 'cancel'),
        click: close_func
      }];

    if (!action_func)
      buttons[0]['class'] += ' mainaction';
    else
      buttons.unshift({
        text: this.get_label(save_label),
        'class': 'mainaction ' + save_class,
        click: function(e, ui) { if (action_func(e, ref)) close_func(e, ui, this); }
      });

    return this.show_popup_dialog(content, title, buttons, options);
  };

  // show_popup_dialog() wrapper for alert() type dialogs
  this.alert_dialog = function(content, action, options)
  {
    options = $.extend(options || {}, {
        cancel_button: 'ok',
        cancel_class: 'save',
        cancel_func: action,
        noresize: true
      });

    return this.simple_dialog(content, options.title || 'alerttitle', null, options);
  };

  // simple_dialog() wrapper for confirm() type dialogs
  this.confirm_dialog = function(content, button_label, action, options)
  {
    var action_func = function(e, ref) { action(e, ref); return true; };

    options = $.extend(options || {}, {
        button: button_label || 'continue',
        noresize: true
      });

    return this.simple_dialog(content, options.title || 'confirmationtitle', action_func, options);
  };

  // enable/disable buttons for page shifting
  this.set_page_buttons = function()
  {
    this.enable_command('nextpage', 'lastpage', this.env.pagecount > this.env.current_page);
    this.enable_command('previouspage', 'firstpage', this.env.current_page > 1);

    this.update_pagejumper();
  };

  // mark a mailbox as selected and set environment variable
  this.select_folder = function(name, prefix, encode)
  {
    if (this.savedsearchlist) {
      this.savedsearchlist.select('');
    }

    if (this.treelist) {
      this.treelist.select(name);
    }
    else if (this.gui_objects.folderlist) {
      $('li.selected', this.gui_objects.folderlist).removeClass('selected');
      $(this.get_folder_li(name, prefix, encode)).addClass('selected');

      // trigger event hook
      this.triggerEvent('selectfolder', { folder:name, prefix:prefix });
    }
  };

  // adds a class to selected folder
  this.mark_folder = function(name, class_name, prefix, encode)
  {
    $(this.get_folder_li(name, prefix, encode)).addClass(class_name);
    this.triggerEvent('markfolder', {folder: name, mark: class_name, status: true});
  };

  // adds a class to selected folder
  this.unmark_folder = function(name, class_name, prefix, encode)
  {
    $(this.get_folder_li(name, prefix, encode)).removeClass(class_name);
    this.triggerEvent('markfolder', {folder: name, mark: class_name, status: false});
  };

  // helper method to find a folder list item
  this.get_folder_li = function(name, prefix, encode)
  {
    if (!prefix)
      prefix = 'rcmli';

    if (this.gui_objects.folderlist) {
      name = this.html_identifier(name, encode);
      return document.getElementById(prefix+name);
    }
  };

  // for reordering column array (Konqueror workaround)
  // and for setting some message list global variables
  this.set_message_coltypes = function(cols, repl, smart_col)
  {
    // update list mode columns list
    this.env.listcols = cols;

    // reset message list cols
    this.msglist_setup(this.env.layout);

    var list = this.message_list,
      thead = list ? list.thead : null,
      repl, cell, col, c, n, len, tr,
      listcols = this.env.msglist_cols;

    if (!this.env.coltypes)
      this.env.coltypes = {};

    // replace old column headers
    if (thead) {
      if (repl) {
        thead.innerHTML = '';
        tr = document.createElement('tr');

        for (n in listcols) {
          c = listcols[n];
          cell = document.createElement('th');
          cell.innerHTML = repl[c].html || '';
          if (repl[c].id) cell.id = repl[c].id;
          if (repl[c].className) cell.className = repl[c].className;
          tr.appendChild(cell);
        }

        if (list.checkbox_selection)
          list.insert_checkbox(tr, 'thead');

        thead.appendChild(tr);
      }

      for (n = 0, len = listcols.length; n < len; n++) {
        col = listcols[list.checkbox_selection ? n-1 : n];
        if ((cell = thead.rows[0].cells[n]) && (col == 'from' || col == 'to' || col == 'fromto')) {
          $(cell).attr('rel', col).find('span,a').text(this.get_label(col == 'fromto' ? smart_col : col));
        }
      }
    }

    this.env.subject_col = null;
    this.env.flagged_col = null;
    this.env.status_col = null;

    if (this.env.coltypes.folder)
      this.env.coltypes.folder.hidden = !(this.env.search_request || this.env.search_id) || this.env.search_scope == 'base';

    if ((n = $.inArray('subject', listcols)) >= 0) {
      this.env.subject_col = n;
      if (list)
        list.subject_col = n;
    }
    if ((n = $.inArray('flag', listcols)) >= 0)
      this.env.flagged_col = n;
    if ((n = $.inArray('status', listcols)) >= 0)
      this.env.status_col = n;

    if (list) {
      list.hide_column('folder', (this.env.coltypes.folder && this.env.coltypes.folder.hidden) || $.inArray('folder', listcols) < 0);
      list.init_header();
    }
  };

  // replace content of row count display
  this.set_rowcount = function(text, mbox)
  {
    // #1487752
    if (mbox && mbox != this.env.mailbox)
      return false;

    $(this.gui_objects.countdisplay).html(text);

    // update page navigation buttons
    this.set_page_buttons();
  };

  // replace content of mailboxname display
  this.set_mailboxname = function(content)
  {
    if (this.gui_objects.mailboxname && content)
      this.gui_objects.mailboxname.innerHTML = content;
  };

  // replace content of quota display
  this.set_quota = function(content)
  {
    if (this.gui_objects.quotadisplay && content && content.type == 'text')
      $(this.gui_objects.quotadisplay).text((content.percent||0) + '%').attr('title', content.title || '');

    this.triggerEvent('setquota', content);
    this.env.quota_content = content;
  };

  // update trash folder state
  this.set_trash_count = function(count)
  {
    this[(count ? 'un' : '') + 'mark_folder'](this.env.trash_mailbox, 'empty', '', true);
  };

  // update the mailboxlist
  this.set_unread_count = function(mbox, count, set_title, mark)
  {
    if (!this.gui_objects.mailboxlist)
      return false;

    this.env.unread_counts[mbox] = count;
    this.set_unread_count_display(mbox, set_title);

    if (mark)
      this.mark_folder(mbox, mark, '', true);
    else if (!count)
      this.unmark_folder(mbox, 'recent', '', true);

    this.mark_all_read_state();
  };

  // update the mailbox count display
  this.set_unread_count_display = function(mbox, set_title)
  {
    var reg, link, text_obj, item, mycount, childcount, div;

    if (item = this.get_folder_li(mbox, '', true)) {
      mycount = this.env.unread_counts[mbox] ? this.env.unread_counts[mbox] : 0;
      link = $(item).children('a').eq(0);
      text_obj = link.children('span.unreadcount');
      if (!text_obj.length && mycount)
        text_obj = $('<span>').addClass('unreadcount skip-content').appendTo(link);
      reg = /\s+\([0-9]+\)$/i;

      childcount = 0;
      if ((div = item.getElementsByTagName('div')[0]) &&
          div.className.match(/collapsed/)) {
        // add children's counters
        for (var k in this.env.unread_counts)
          if (k.startsWith(mbox + this.env.delimiter))
            childcount += this.env.unread_counts[k];
      }

      if (mycount && text_obj.length)
        text_obj.html(this.env.unreadwrap.replace(/%[sd]/, mycount));
      else if (text_obj.length)
        text_obj.remove();

      // set parent's display
      reg = new RegExp(RegExp.escape(this.env.delimiter) + '[^' + RegExp.escape(this.env.delimiter) + ']+$');
      if (mbox.match(reg))
        this.set_unread_count_display(mbox.replace(reg, ''), false);

      // set the right classes
      if ((mycount+childcount)>0)
        $(item).addClass('unread');
      else
        $(item).removeClass('unread');
    }

    // set unread count to window title
    reg = /^\([0-9]+\)\s+/i;
    if (set_title && document.title) {
      var new_title = '',
        doc_title = String(document.title);

      if (mycount && doc_title.match(reg))
        new_title = doc_title.replace(reg, '('+mycount+') ');
      else if (mycount)
        new_title = '('+mycount+') '+doc_title;
      else
        new_title = doc_title.replace(reg, '');

      this.set_pagetitle(new_title);
    }
  };

  // display fetched raw headers
  this.set_headers = function(content)
  {
    if (this.gui_objects.all_headers_box && content)
      $(this.gui_objects.all_headers_box).html(content).show();
  };

  // display all-headers row and fetch raw message headers
  this.show_headers = function(props, elem)
  {
    if (!this.gui_objects.all_headers_row || !this.gui_objects.all_headers_box || !this.env.uid)
      return;

    $(elem).removeClass('show-headers').addClass('hide-headers');
    $(this.gui_objects.all_headers_row).show();
    elem.onclick = function() { ref.command('hide-headers', '', elem); };

    // fetch headers only once
    if (!this.gui_objects.all_headers_box.innerHTML) {
      this.http_request('headers', {_uid: this.env.uid, _mbox: this.env.mailbox},
        this.display_message('', 'loading')
      );
    }
  };

  // hide all-headers row
  this.hide_headers = function(props, elem)
  {
    if (!this.gui_objects.all_headers_row || !this.gui_objects.all_headers_box)
      return;

    $(elem).removeClass('hide-headers').addClass('show-headers');
    $(this.gui_objects.all_headers_row).hide();
    elem.onclick = function() { ref.command('show-headers', '', elem); };
  };

  // create folder selector popup
  this.folder_selector = function(event, callback)
  {
    this.entity_selector('folder-selector', callback, this.env.mailboxes_list, function(obj, a) {
      var n = 0, s = 0,
        delim = ref.env.delimiter,
        folder = ref.env.mailboxes[obj],
        id = folder.id,
        row = $('<li>');

      if (folder.virtual)
        a.addClass('virtual').attr({'aria-disabled': 'true', tabindex: '-1'});
      else
        a.addClass('active').data('id', folder.id);

      if (folder['class'])
        row.addClass(folder['class']);

      // calculate/set indentation level
      while ((s = id.indexOf(delim, s)) >= 0) {
        n++; s++;
      }
      a.css('padding-left', n ? (n * 16) + 'px' : 0);

      // add folder name element
      a.append($('<span>').text(folder.name));

      return row.append(a);
    }, event);
  };

  // create addressbook selector popup
  this.addressbook_selector = function(event, callback)
  {
    // build addressbook + groups list
    var combined_sources = [];

    // check we really need it before processing
    if (!this.entity_selectors['addressbook-selector']) {
      $.each(this.env.address_sources, function() {
        if (!this.readonly) {
          var source = this;
          combined_sources.push(source);

          $.each(ref.env.contactgroups, function() {
            if (source.id === this.source) {
              combined_sources.push(this);
            }
          });
        }
      });
    }

    this.entity_selector('addressbook-selector', callback, combined_sources, function(obj, a) {
      if (obj.type == 'group') {
        a.attr('rel', obj.source + ':' + obj.id)
          .addClass('contactgroup active')
          .data({source: obj.source, gid: obj.id, id: obj.source + ':' + obj.id})
          .css('padding-left', '16px');
      }
      else {
        a.addClass('addressbook active').data('id', obj.id);
      }
      a.append($('<span>').text(obj.name));

      return $('<li>').append(a);
    }, event);
  };

  // create contactgroup selector popup
  this.contactgroup_selector = function(event, callback)
  {
    this.entity_selector('contactgroup-selector', callback, this.env.contactgroups, function(obj, a) {
      if (ref.env.source === obj.source) {
        a.addClass('contactgroup active')
            .data({id: obj.id})
            .append($('<span>').text(obj.name));

        return $('<li>').append(a);
      }
    }, event);
  };

  // create selector popup (eg for folders or address books), position and display it
  this.entity_selector = function(name, click_callback, entity_list, list_callback, event)
  {
    var container = this.entity_selectors[name];

    if (!container) {
      var rows = [],
        container = $('<div>').attr('id', name).addClass('popupmenu'),
        ul = $('<ul>').addClass('toolbarmenu menu'),
        link = document.createElement('a');

      link.href = '#';
      link.className = 'icon';

      // loop over entity list
      $.each(entity_list, function(i) {
        var a = $(link.cloneNode(false)).attr('rel', this.id);
        rows.push(list_callback(this, a, i));
      });

      ul.append(rows).appendTo(container);

      // temporarily show element to calculate its size
      container.css({left: '-1000px', top: '-1000px'})
        .appendTo(document.body).show();

      // set max-height if the list is long
      if (rows.length > 10)
        container.css('max-height', $('li', container)[0].offsetHeight * 10 + 9);

      // register delegate event handler for folder item clicks
      container.on('click', 'a.active', function(e) {
        container.data('callback')($(this).data('id'), this);
      });

      this.entity_selectors[name] = container;
    }

    container.data('callback', click_callback);

    // position menu on the screen
    this.show_menu(name, true, event);
  };

  this.destroy_entity_selector = function(name)
  {
    $("#" + name).remove();
    delete this.entity_selectors[name];
    this.triggerEvent('destroy-entity-selector', { name: name });
  };

  /***********************************************/
  /*********    popup menu functions     *********/
  /***********************************************/

  // Show/hide a specific popup menu
  this.show_menu = function(prop, show, event)
  {
    var name = typeof prop == 'object' ? prop.menu : prop,
      obj = $('#'+name),
      ref = event && event.target ? $(event.target) : $(obj.attr('rel') || '#'+name+'link'),
      keyboard = rcube_event.is_keyboard(event),
      align = obj.attr('data-align') || '',
      stack = false;

    // find "real" button element
    if (ref.get(0).tagName != 'A' && ref.closest('a').length)
      ref = ref.closest('a');

    if (typeof prop == 'string')
      prop = { menu:name };

    // let plugins or skins provide the menu element
    if (!obj.length) {
      obj = this.triggerEvent('menu-get', { name:name, props:prop, originalEvent:event });
    }

    if (!obj || !obj.length) {
      // just delegate the action to subscribers
      return this.triggerEvent(show === false ? 'menu-close' : 'menu-open', { name:name, props:prop, originalEvent:event });
    }

    // move element to top for proper absolute positioning
    obj.appendTo(document.body);

    if (typeof show == 'undefined')
      show = obj.is(':visible') ? false : true;

    if (show && ref.length) {
      var win = $(window),
        pos = ref.offset(),
        above = align.indexOf('bottom') >= 0;

      stack = ref.attr('role') == 'menuitem' || ref.closest('[role=menuitem]').length > 0;

      ref.offsetWidth = ref.outerWidth();
      ref.offsetHeight = ref.outerHeight();
      if (!above && pos.top + ref.offsetHeight + obj.height() > win.height()) {
        above = true;
      }
      if (align.indexOf('right') >= 0) {
        pos.left = pos.left + ref.outerWidth() - obj.width();
      }
      else if (stack) {
        pos.left = pos.left + ref.offsetWidth - 5;
        pos.top -= ref.offsetHeight;
      }
      if (pos.left + obj.width() > win.width()) {
        pos.left = win.width() - obj.width() - 12;
      }
      pos.top = Math.max(0, pos.top + (above ? -obj.height() : ref.offsetHeight));
      obj.css({ left:pos.left+'px', top:pos.top+'px' });
    }

    // add menu to stack
    if (show) {
      // truncate stack down to the one containing the ref link
      for (var i = this.menu_stack.length - 1; stack && i >= 0; i--) {
        if (!$(ref).parents('#'+this.menu_stack[i]).length && $(event.target).parent().attr('role') != 'menuitem')
          this.hide_menu(this.menu_stack[i], event);
      }
      if (stack && this.menu_stack.length) {
        obj.data('parent', $.last(this.menu_stack));
        obj.css('z-index', ($('#'+$.last(this.menu_stack)).css('z-index') || 0) + 1);
      }
      else if (!stack && this.menu_stack.length) {
        this.hide_menu(this.menu_stack[0], event);
      }

      obj.show().attr('aria-hidden', 'false').data('opener', ref.attr('aria-expanded', 'true').get(0));
      this.triggerEvent('menu-open', { name:name, obj:obj, props:prop, originalEvent:event });
      this.menu_stack.push(name);

      this.menu_keyboard_active = show && keyboard;
      if (this.menu_keyboard_active) {
        this.focused_menu = name;
        obj.find('a,input:not(:disabled)').not('[aria-disabled=true]').first().focus();
      }
    }
    else {  // close menu
      this.hide_menu(name, event);
    }

    return show;
  };

  // hide the given popup menu (and its children)
  this.hide_menu = function(name, event)
  {
    if (!this.menu_stack.length) {
      // delegate to subscribers
      this.triggerEvent('menu-close', { name:name, props:{ menu:name }, originalEvent:event });
      return;
    }

    var obj, keyboard = rcube_event.is_keyboard(event);
    for (var j=this.menu_stack.length-1; j >= 0; j--) {
      obj = $('#' + this.menu_stack[j]).hide().attr('aria-hidden', 'true').data('parent', false);
      this.triggerEvent('menu-close', { name:this.menu_stack[j], obj:obj, props:{ menu:this.menu_stack[j] }, originalEvent:event });
      if (this.menu_stack[j] == name) {
        j = -1;  // stop loop
        if (obj.data('opener')) {
          $(obj.data('opener')).attr('aria-expanded', 'false');
          if (keyboard)
            obj.data('opener').focus();
        }
      }
      this.menu_stack.pop();
    }

    // focus previous menu in stack
    if (this.menu_stack.length && keyboard) {
      this.menu_keyboard_active = true;
      this.focused_menu = $.last(this.menu_stack);
      if (!obj || !obj.data('opener'))
        $('#'+this.focused_menu).find('a,input:not(:disabled)').not('[aria-disabled=true]').first().focus();
    }
    else {
      this.focused_menu = null;
      this.menu_keyboard_active = false;
    }
  };

  // position a menu element on the screen in relation to other object
  this.element_position = function(element, obj)
  {
    var obj = $(obj), win = $(window),
      width = obj.outerWidth(),
      height = obj.outerHeight(),
      menu_pos = obj.data('menu-pos'),
      win_height = win.height(),
      elem_height = $(element).height(),
      elem_width = $(element).width(),
      pos = obj.offset(),
      top = pos.top,
      left = pos.left + width;

    if (menu_pos == 'bottom') {
      top += height;
      left -= width;
    }
    else
      left -= 5;

    if (top + elem_height > win_height) {
      top -= elem_height - height;
      if (top < 0)
        top = Math.max(0, (win_height - elem_height) / 2);
    }

    if (left + elem_width > win.width())
      left -= elem_width + width;

    element.css({left: left + 'px', top: top + 'px'});
  };

  // initialize HTML editor
  this.editor_init = function(config, id)
  {
    this.editor = new rcube_text_editor(config || this.env.editor_config, id);
  };


  /********************************************************/
  /*********  html to text conversion functions   *********/
  /********************************************************/

  this.html2plain = function(html, func)
  {
    return this.format_converter(html, 'html', func);
  };

  this.plain2html = function(plain, func)
  {
    return this.format_converter(plain, 'plain', func);
  };

  this.format_converter = function(text, format, func)
  {
    // warn the user (if converted content is not empty)
    if (!text
      || (format == 'html' && !(text.replace(/<[^>]+>|&nbsp;|\xC2\xA0|\s/g, '')).length)
      || (format != 'html' && !(text.replace(/\xC2\xA0|\s/g, '')).length)
    ) {
      // without setTimeout() here, textarea is filled with initial (onload) content
      if (func)
        setTimeout(function() { func(''); }, 50);
      return true;
    }

    var confirmed = this.env.editor_warned || confirm(this.get_label('editorwarning'));

    this.env.editor_warned = true;

    if (!confirmed)
      return false;

    var url = '?_task=utils&_action=' + (format == 'html' ? 'html2text' : 'text2html'),
      lock = this.set_busy(true, 'converting');

    $.ajax({ type: 'POST', url: url, data: text, contentType: 'application/octet-stream',
      error: function(o, status, err) { ref.http_error(o, status, err, lock); },
      success: function(data) {
        ref.set_busy(false, null, lock);
        if (func) func(data);
      }
    });

    return true;
  };


  /********************************************************/
  /*********        remote request methods        *********/
  /********************************************************/

  // compose a valid url with the given parameters
  this.url = function(action, query)
  {
    var querystring = typeof query === 'string' ? query : '';

    if (typeof action !== 'string')
      query = action;
    else if (!query || typeof query !== 'object')
      query = {};

    if (action)
      query._action = action;
    else if (this.env.action)
      query._action = this.env.action;

    var url = this.env.comm_path, k, param = {};

    // overwrite task name
    if (action && action.match(/([a-z0-9_-]+)\/([a-z0-9-_.]+)/)) {
      query._action = RegExp.$2;
      url = url.replace(/\_task=[a-z0-9_-]+/, '_task=' + RegExp.$1);
    }

    // force _framed=0
    if (query._framed === 0) {
      url = url.replace('&_framed=1', '');
      query._framed = null;
    }

    // remove undefined values
    for (k in query) {
      if (query[k] !== undefined && query[k] !== null)
        param[k] = query[k];
    }

    if (param = $.param(param))
      url += (url.indexOf('?') > -1 ? '&' : '?') + param;

    if (querystring)
      url += (url.indexOf('?') > -1 ? '&' : '?') + querystring;

    return url;
  };

  this.redirect = function(url, lock)
  {
    if (lock !== false)
      this.set_busy(true, 'loading');

    if (this.is_framed()) {
      url = url.replace(/&_framed=1/, '');
      parent.rcmail.redirect(url, lock);
    }
    else {
      if (this.env.extwin) {
        if (typeof url == 'string')
          url += (url.indexOf('?') < 0 ? '?' : '&') + '_extwin=1';
        else
          url._extwin = 1;
      }
      this.location_href(url, window);
    }
  };

  this.goto_url = function(action, query, lock, secure)
  {
    var url = this.url(action, query)
    if (secure) url = this.secure_url(url);
    this.redirect(url, lock);
  };

  this.location_href = function(url, target, frame)
  {
    if (frame)
      this.lock_frame(target);

    if (typeof url == 'object')
      url = this.env.comm_path + '&' + $.param(url);

    // simulate real link click to force IE to send referer header
    if (bw.ie && target == window)
      $('<a>').attr('href', url).appendTo(document.body).get(0).click();
    else
      target.location.href = url;

    // reset keep-alive interval
    this.start_keepalive();
  };

  // update browser location to remember current view
  this.update_state = function(query)
  {
    if (window.history.replaceState)
      try {
        // This may throw security exception in Firefox (#5400)
        window.history.replaceState({}, document.title, rcmail.url('', query));
      }
      catch(e) { /* ignore */ };
  };

  // send a http request to the server
  this.http_request = function(action, data, lock, type)
  {
    if (type != 'POST')
      type = 'GET';

    if (typeof data !== 'object')
      data = rcube_parse_query(data);

    data._remote = 1;
    data._unlock = lock ? lock : 0;

    // trigger plugin hook
    var result = this.triggerEvent('request' + action, data);

    // abort if one of the handlers returned false
    if (result === false) {
      if (data._unlock)
        this.set_busy(false, null, data._unlock);
      return false;
    }
    else if (result && result.getResponseHeader) {
      return result;
    }
    else if (result !== undefined) {
      data = result;
      if (data._action) {
        action = data._action;
        delete data._action;
      }
    }

    var url = this.url(action);

    // reset keep-alive interval
    this.start_keepalive();

    // send request
    return $.ajax({
      type: type, url: url, data: data, dataType: 'json',
      success: function(data) { ref.http_response(data); },
      error: function(o, status, err) { ref.http_error(o, status, err, lock, action); }
    });
  };

  // send a http GET request to the server
  this.http_get = this.http_request;

  // send a http POST request to the server
  this.http_post = function(action, data, lock)
  {
    return this.http_request(action, data, lock, 'POST');
  };

  // aborts ajax request
  this.abort_request = function(r)
  {
    if (r.request)
      r.request.abort();
    if (r.lock)
      this.set_busy(false, null, r.lock);
  };

  // handle HTTP response
  this.http_response = function(response)
  {
    if (!response)
      return;

    if (response.unlock)
      this.set_busy(false, null, response.unlock);

    this.triggerEvent('responsebefore', {response: response});
    this.triggerEvent('responsebefore'+response.action, {response: response});

    // set env vars
    if (response.env)
      this.set_env(response.env);

    var i;

    // we have labels to add
    if (typeof response.texts === 'object') {
      for (i in response.texts)
        if (typeof response.texts[i] === 'string')
          this.add_label(i, response.texts[i]);
    }

    // if we get javascript code from server -> execute it
    if (response.exec) {
      eval(response.exec);
    }

    // execute callback functions of plugins
    if (response.callbacks && response.callbacks.length) {
      for (i=0; i < response.callbacks.length; i++)
        this.triggerEvent(response.callbacks[i][0], response.callbacks[i][1]);
    }

    // process the response data according to the sent action
    switch (response.action) {
      case 'mark':
        // Mark the message as Seen also in the opener/parent
        if ((this.env.action == 'show' || this.env.action == 'preview') && this.env.last_flag == 'SEEN')
          this.set_unread_message(this.env.uid, this.env.mailbox);
        break;

      case 'delete':
        if (this.task == 'addressbook') {
          var sid, uid = this.contact_list.get_selection(), writable = false;

          if (uid && this.contact_list.rows[uid]) {
            // search results, get source ID from record ID
            if (this.env.source == '') {
              sid = String(uid).replace(/^[^-]+-/, '');
              writable = sid && this.env.address_sources[sid] && !this.env.address_sources[sid].readonly;
            }
            else {
              writable = !this.env.address_sources[this.env.source].readonly;
            }
          }
          this.enable_command('delete', 'edit', writable);
          this.enable_command('export', (this.contact_list && this.contact_list.rowcount > 0));
          this.enable_command('export-selected', 'print', false);
        }

      case 'move':
        if (this.env.action == 'show') {
          // re-enable commands on move/delete error
          this.enable_command(this.env.message_commands, true);
          if (!this.env.list_post)
            this.enable_command('reply-list', false);
        }
        else if (this.task == 'addressbook') {
          this.triggerEvent('listupdate', { list:this.contact_list, folder:this.env.source, rowcount:this.contact_list.rowcount });
        }

      case 'purge':
      case 'expunge':
        if (this.task == 'mail') {
          if (!this.env.exists) {
            // clear preview pane content
            if (this.env.contentframe)
              this.show_contentframe(false);
            // disable commands useless when mailbox is empty
            this.enable_command(this.env.message_commands, 'purge', 'expunge',
              'select-all', 'select-none', 'expand-all', 'expand-unread', 'collapse-all', false);
          }
          if (this.message_list)
            this.triggerEvent('listupdate', { list:this.message_list, folder:this.env.mailbox, rowcount:this.message_list.rowcount });
        }
        break;

      case 'refresh':
      case 'check-recent':
        // update message flags
        $.each(this.env.recent_flags || {}, function(uid, flags) {
          ref.set_message(uid, 'deleted', flags.deleted);
          ref.set_message(uid, 'replied', flags.answered);
          ref.set_message(uid, 'unread', !flags.seen);
          ref.set_message(uid, 'forwarded', flags.forwarded);
          ref.set_message(uid, 'flagged', flags.flagged);
        });
        delete this.env.recent_flags;

      case 'getunread':
      case 'search':
        this.env.qsearch = null;
      case 'list':
        if (this.task == 'mail') {
          var is_multifolder = this.is_multifolder_listing(),
            list = this.message_list,
            uid = this.env.list_uid;

          this.enable_command('show', 'select-all', 'select-none', this.env.messagecount > 0);
          this.enable_command('expunge', 'purge', this.env.exists && !is_multifolder);
          this.enable_command('import-messages', !is_multifolder);
          this.enable_command('expand-all', 'expand-unread', 'collapse-all', this.env.threading && this.env.messagecount && !is_multifolder);

          if (list) {
            if (response.action == 'list' || response.action == 'search') {
              // highlight message row when we're back from message page
              if (uid) {
                if (uid === 'FIRST') {
                  uid = list.get_first_row();
                }
                else if (uid === 'LAST') {
                  uid = list.get_last_row();
                }
                else if (!list.rows[uid]) {
                  uid += '-' + this.env.mailbox;
                }

                if (uid && list.rows[uid]) {
                  list.select(uid);
                }

                delete this.env.list_uid;
              }

              this.enable_command('set-listmode', this.env.threads && !is_multifolder);
              if (list.rowcount > 0 && !$(document.activeElement).is('input,textarea'))
                list.focus();

              // trigger 'select' so all dependent actions update its state
              // e.g. plugins use this event to activate buttons (#1490647)
              list.triggerEvent('select');
            }

            if (response.action != 'getunread')
              this.triggerEvent('listupdate', { list:list, folder:this.env.mailbox, rowcount:list.rowcount });
          }
        }
        else if (this.task == 'addressbook') {
          var list = this.contact_list,
            uid = this.env.list_uid;

          this.enable_command('export', 'select-all', 'select-none', (list && list.rowcount > 0));

          if (response.action == 'list' || response.action == 'search') {
            this.enable_command('search-create', this.env.source == '');
            this.enable_command('search-delete', this.env.search_id);
            this.update_group_commands();

            if (list && uid) {
              if (uid === 'FIRST') {
                uid = list.get_first_row();
              }
              else if (uid === 'LAST') {
                uid = list.get_last_row();
              }

              if (uid && list.rows[uid]) {
                list.select(uid);
              }

              delete this.env.list_uid;

              // trigger 'select' so all dependent actions update its state
              list.triggerEvent('select');
            }

            if (list.rowcount > 0 && !$(document.activeElement).is('input,textarea'))
              list.focus();

            this.triggerEvent('listupdate', { list:list, folder:this.env.source, rowcount:list.rowcount });
          }
        }
        break;

      case 'list-contacts':
      case 'search-contacts':
        if (this.contact_list) {
          if (this.contact_list.rowcount > 0)
            this.contact_list.focus();
          this.triggerEvent('listupdate', { list:this.contact_list, rowcount:this.contact_list.rowcount });
        }
        break;
    }

    if (response.unlock)
      this.hide_message(response.unlock);

    this.triggerEvent('responseafter', {response: response});
    this.triggerEvent('responseafter'+response.action, {response: response});

    // reset keep-alive interval
    this.start_keepalive();
  };

  // handle HTTP request errors
  this.http_error = function(request, status, err, lock, action)
  {
    var errmsg = request.statusText;

    this.set_busy(false, null, lock);
    request.abort();

    // don't display error message on page unload (#1488547)
    if (this.unload)
      return;

    if (request.status && errmsg)
      this.display_message(this.get_label('servererror') + ' (' + errmsg + ')', 'error');
    else if (status == 'timeout')
      this.display_message('requesttimedout', 'error');
    else if (request.status == 0 && status != 'abort')
      this.display_message('connerror', 'error');

    // redirect to url specified in location header if not empty
    var location_url = request.getResponseHeader("Location");
    if (location_url && this.env.action != 'compose')  // don't redirect on compose screen, contents might get lost (#1488926)
      this.redirect(location_url);

    // 403 Forbidden response (CSRF prevention) - reload the page.
    // In case there's a new valid session it will be used, otherwise
    // login form will be presented (#1488960).
    if (request.status == 403) {
      (this.is_framed() ? parent : window).location.reload();
      return;
    }

    // re-send keep-alive requests after 30 seconds
    if (action == 'keep-alive')
      setTimeout(function() { ref.keep_alive(); ref.start_keepalive(); }, 30000);
  };

  // handler for session errors detected on the server
  this.session_error = function(redirect_url)
  {
    this.env.server_error = 401;

    // save message in local storage and do not redirect
    if (this.env.action == 'compose') {
      this.save_compose_form_local();
      this.compose_skip_unsavedcheck = true;
      // stop keep-alive and refresh processes
      this.env.session_lifetime = 0;
      if (this._keepalive)
        clearInterval(this._keepalive);
      if (this._refresh)
        clearInterval(this._refresh);
    }
    else if (redirect_url) {
      setTimeout(function() { ref.redirect(redirect_url, true); }, 2000);
    }
  };

  // callback when an iframe finished loading
  this.iframe_loaded = function(unlock)
  {
    if (!unlock)
      unlock = this.env.frame_lock;

    this.set_busy(false, null, unlock);

    if (this.submit_timer)
      clearTimeout(this.submit_timer);
  };

  /**
   Send multi-threaded parallel HTTP requests to the server for a list if items.
   The string '%' in either a GET query or POST parameters will be replaced with the respective item value.
   This is the argument object expected: {
       items: ['foo','bar','gna'],      // list of items to send requests for
       action: 'task/some-action',      // Roundcube action to call
       query: { q:'%s' },               // GET query parameters
       postdata: { source:'%s' },       // POST data (sends a POST request if present)
       threads: 3,                      // max. number of concurrent requests
       onresponse: function(data){ },   // Callback function called for every response received from server
       whendone: function(alldata){ }   // Callback function called when all requests have been sent
   }
  */
  this.multi_thread_http_request = function(prop)
  {
    var i, item, reqid = new Date().getTime(),
      threads = prop.threads || 1;

    prop.reqid = reqid;
    prop.running = 0;
    prop.requests = [];
    prop.result = [];
    prop._items = $.extend([], prop.items);  // copy items

    if (!prop.lock)
      prop.lock = this.display_message('', 'loading');

    // add the request arguments to the jobs pool
    this.http_request_jobs[reqid] = prop;

    // start n threads
    for (i=0; i < threads; i++) {
      item = prop._items.shift();
      if (item === undefined)
        break;

      prop.running++;
      prop.requests.push(this.multi_thread_send_request(prop, item));
    }

    return reqid;
  };

  // helper method to send an HTTP request with the given iterator value
  this.multi_thread_send_request = function(prop, item)
  {
    var k, postdata, query;

    // replace %s in post data
    if (prop.postdata) {
      postdata = {};
      for (k in prop.postdata) {
        postdata[k] = String(prop.postdata[k]).replace('%s', item);
      }
      postdata._reqid = prop.reqid;
    }
    // replace %s in query
    else if (typeof prop.query == 'string') {
      query = prop.query.replace('%s', item);
      query += '&_reqid=' + prop.reqid;
    }
    else if (typeof prop.query == 'object' && prop.query) {
      query = {};
      for (k in prop.query) {
        query[k] = String(prop.query[k]).replace('%s', item);
      }
      query._reqid = prop.reqid;
    }

    // send HTTP GET or POST request
    return postdata ? this.http_post(prop.action, postdata) : this.http_request(prop.action, query);
  };

  // callback function for multi-threaded http responses
  this.multi_thread_http_response = function(data, reqid)
  {
    var prop = this.http_request_jobs[reqid];
    if (!prop || prop.running <= 0 || prop.cancelled)
      return;

    prop.running--;

    // trigger response callback
    if (prop.onresponse && typeof prop.onresponse == 'function') {
      prop.onresponse(data);
    }

    prop.result = $.extend(prop.result, data);

    // send next request if prop.items is not yet empty
    var item = prop._items.shift();
    if (item !== undefined) {
      prop.running++;
      prop.requests.push(this.multi_thread_send_request(prop, item));
    }
    // trigger whendone callback and mark this request as done
    else if (prop.running == 0) {
      if (prop.whendone && typeof prop.whendone == 'function') {
        prop.whendone(prop.result);
      }

      this.set_busy(false, '', prop.lock);

      // remove from this.http_request_jobs pool
      delete this.http_request_jobs[reqid];
    }
  };

  // abort a running multi-thread request with the given identifier
  this.multi_thread_request_abort = function(reqid)
  {
    var prop = this.http_request_jobs[reqid];
    if (prop) {
      for (var i=0; prop.running > 0 && i < prop.requests.length; i++) {
        if (prop.requests[i].abort)
          prop.requests[i].abort();
      }

      prop.running = 0;
      prop.cancelled = true;
      this.set_busy(false, '', prop.lock);
    }
  };

  // post the given form to a hidden iframe
  this.async_upload_form = function(form, action, onload)
  {
    // create hidden iframe
    var ts = new Date().getTime(),
      frame_name = 'rcmupload' + ts,
      frame = this.dummy_iframe(frame_name);

    // handle upload errors by parsing iframe content in onload
    frame.on('load', {ts:ts}, onload);

    $(form).attr({
        target: frame_name,
        action: this.url(action, {_id: this.env.compose_id || '', _uploadid: ts, _from: this.env.action}),
        method: 'POST',
        enctype: 'multipart/form-data'
      })
      .submit();

    return frame_name;
  };

  // create hidden iframe element
  this.dummy_iframe = function(name, src)
  {
    return $('<iframe>').attr({
        name: name,
        src: src,
        style: 'width:0;height:0;visibility:hidden',
        'aria-hidden': 'true'
      })
      .appendTo(document.body);
  };

  // html5 file-drop API
  this.document_drag_hover = function(e, over)
  {
    // don't e.preventDefault() here to not block text dragging on the page (#1490619)
    $(this.gui_objects.filedrop)[(over?'addClass':'removeClass')]('active');
  };

  this.file_drag_hover = function(e, over)
  {
    e.preventDefault();
    e.stopPropagation();
    $(this.gui_objects.filedrop)[(over?'addClass':'removeClass')]('hover');
  };

  // handler when files are dropped to a designated area.
  // compose a multipart form data and submit it to the server
  this.file_dropped = function(e)
  {
    // abort event and reset UI
    this.file_drag_hover(e, false);

    // prepare multipart form data composition
    var uri,
      files = e.target.files || e.dataTransfer.files,
      args = {_id: this.env.compose_id || this.env.cid || '', _remote: 1, _from: this.env.action};

    if (!files || !files.length) {
      // Roundcube attachment, pass its uri to the backend and attach
      if (uri = e.dataTransfer.getData('roundcube-uri')) {
        var ts = 'upload' + new Date().getTime(),
          // jQuery way to escape filename (#1490530)
          content = $('<span>').text(e.dataTransfer.getData('roundcube-name') || this.get_label('attaching')).html();

        args._uri = uri;
        args._uploadid = ts;

        // add to attachments list
        if (!this.add2attachment_list(ts, {name: '', html: content, classname: 'uploading', complete: false}))
          this.file_upload_id = this.set_busy(true, 'attaching');

        this.http_post(this.env.filedrop.action || 'upload', args);
      }

      return;
    }

    this.file_upload(files, args, {
      name: (this.env.filedrop.fieldname || '_file') + (this.env.filedrop.single ? '' : '[]'),
      single: this.env.filedrop.single,
      filter: this.env.filedrop.filter,
      action: ref.env.filedrop.action
    });
  };

  // Files upload using ajax
  this.file_upload = function(files, post_args, props)
  {
    if (!window.FormData || !files || !files.length)
      return false;

    var f, i, fname, size = 0, numfiles = 0,
      formdata = new FormData(),
      fieldname = props.name || '_file[]',
      limit = props.single ? 1 : files.length;
      args = $.extend({_remote: 1, _from: this.env.action}, post_args || {});

    // add files to form data
    for (i=0; numfiles < limit && (f = files[i]); i++) {
      // filter by file type if requested
      if (props.filter && !f.type.match(new RegExp(props.filter))) {
        // TODO: show message to user
        continue;
      }

      formdata.append(fieldname, f);
      size += f.size;
      fname = f.name;
      numfiles++;
    }

    if (numfiles) {
      if (this.env.max_filesize && this.env.filesizeerror && size > this.env.max_filesize) {
        this.display_message(this.env.filesizeerror, 'error');
        return false;
      }

      if (this.env.max_filecount && this.env.filecounterror && numfiles > this.env.max_filecount) {
        this.display_message(this.env.filecounterror, 'error');
        return false;
      }

      var ts = 'upload' + new Date().getTime(),
        label = numfiles > 1 ? this.get_label('uploadingmany') : fname,
        // jQuery way to escape filename (#1490530)
        content = $('<span>').text(label).html();

      // add to attachments list
      if (!this.add2attachment_list(ts, {name: '', html: content, classname: 'uploading', complete: false}) && !props.lock)
        props.lock = this.file_upload_id = this.set_busy(true, 'uploading');

      args._uploadid = ts;
      args._unlock = props.lock;

      this.uploads[ts] = $.ajax({
        type: 'POST',
        dataType: 'json',
        url: this.url(props.action || 'upload', args),
        contentType: false,
        processData: false,
        timeout: this.uploadTimeout, // ajax call timeout for loading attachment
        data: formdata,
        headers: {'X-Roundcube-Request': this.env.request_token},
        xhr: function() {
          var xhr = $.ajaxSettings.xhr();
          if (xhr.upload && ref.labels.uploadprogress) {
            xhr.upload.onprogress = function(e) {
              var msg = ref.file_upload_msg(e.loaded, e.total);
              if (msg) {
                $('#' + ts).find('.uploading').text(msg);
              }
            };
          }
          return xhr;
        },
        success: function(data) {
          delete ref.uploads[ts];
          ref.http_response(data);
        },
        error: function(o, status, err) {
          delete ref.uploads[ts];
          ref.remove_from_attachment_list(ts);
          ref.http_error(o, status, err, props.lock, 'attachment');
        }
      });
    }

    return true;
  };

  this.file_upload_msg = function(current, total)
  {
    if (total && current < total) {
      var percent = Math.round(current/total * 100),
        label = ref.get_label('uploadprogress');

      if (total >= 1073741824) {
        total = parseFloat(total/1073741824).toFixed(1) + ' ' . this.get_label('GB');
        current = parseFloat(current/1073741824).toFixed(1);
      }
      else if (total >= 1048576) {
        total = parseFloat(total/1048576).toFixed(1) + ' ' + this.get_label('MB');
        current = parseFloat(current/1048576).toFixed(1);
      }
      else if (total >= 1024) {
        total = parseInt(total/1024) + ' ' + this.get_label('KB');
        current = parseInt(current/1024);
      }
      else {
        total = total + ' ' + this.get_label('B');
      }

      return label.replace('$percent', percent + '%').replace('$current', current).replace('$total', total);
    }
  };

  // starts interval for keep-alive signal
  this.start_keepalive = function()
  {
    if (!this.env.session_lifetime || this.env.framed || this.env.extwin || this.task == 'login' || this.env.action == 'print')
      return;

    if (this._keepalive)
      clearInterval(this._keepalive);

    // use Math to prevent from an integer overflow (#5273)
    // maximum interval is 15 minutes, minimum is 30 seconds
    var interval = Math.min(1800, this.env.session_lifetime) * 0.5 * 1000;
    this._keepalive = setInterval(function() { ref.keep_alive(); }, interval < 30000 ? 30000 : interval);
  };

  // starts interval for refresh signal
  this.start_refresh = function()
  {
    if (!this.env.refresh_interval || this.env.framed || this.env.extwin || this.task == 'login' || this.env.action == 'print')
      return;

    if (this._refresh)
      clearInterval(this._refresh);

    this._refresh = setInterval(function(){ ref.refresh(); }, this.env.refresh_interval * 1000);
  };

  // sends keep-alive signal
  this.keep_alive = function()
  {
    if (!this.busy)
      this.http_request('keep-alive');
  };

  // sends refresh signal
  this.refresh = function()
  {
    if (this.busy) {
      // try again after 10 seconds
      setTimeout(function() { ref.refresh(); ref.start_refresh(); }, 10000);
      return;
    }

    var params = {}, lock = this.set_busy(true, 'refreshing');

    if (this.task == 'mail' && this.gui_objects.mailboxlist)
      params = this.check_recent_params();

    params._last = Math.floor(this.env.lastrefresh.getTime() / 1000);
    this.env.lastrefresh = new Date();

    // plugins should bind to 'requestrefresh' event to add own params
    this.http_post('refresh', params, lock);
  };

  // returns check-recent request parameters
  this.check_recent_params = function()
  {
    var params = {_mbox: this.env.mailbox};

    if (this.gui_objects.mailboxlist)
      params._folderlist = 1;
    if (this.gui_objects.quotadisplay)
      params._quota = 1;
    if (this.env.search_request)
      params._search = this.env.search_request;

    if (this.gui_objects.messagelist) {
      params._list = 1;

      // message uids for flag updates check
      params._uids = $.map(this.message_list.rows, function(row, uid) { return uid; }).join(',');
    }

    return params;
  };


  /********************************************************/
  /*********            helper methods            *********/
  /********************************************************/

  /**
   * Quote html entities
   */
  this.quote_html = function(str)
  {
    return String(str).replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
  };

  // get window.opener.rcmail if available
  this.opener = function(deep, filter)
  {
    var i, win = window.opener;

    // catch Error: Permission denied to access property rcmail
    try {
      if (win && !win.closed && win !== window) {
        // try parent of the opener window, e.g. preview frame
        if (deep && (!win.rcmail || win.rcmail.env.framed) && win.parent && win.parent.rcmail)
          win = win.parent;

        if (win.rcmail && filter)
          for (i in filter)
            if (win.rcmail.env[i] != filter[i])
              return;

        return win.rcmail;
      }
    }
    catch (e) {}
  };

  // check if we're in show mode or if we have a unique selection
  // and return the message uid
  this.get_single_uid = function()
  {
    var uid = this.env.uid || (this.message_list ? this.message_list.get_single_selection() : null);
    var result = ref.triggerEvent('get_single_uid', { uid: uid });
    return result || uid;
  };

  // same as above but for contacts
  this.get_single_cid = function()
  {
    var cid = this.env.cid || (this.contact_list ? this.contact_list.get_single_selection() : null);
    var result = ref.triggerEvent('get_single_cid', { cid: cid });
    return result || cid;
  };

  // get the IMP mailbox of the message with the given UID
  this.get_message_mailbox = function(uid)
  {
    var msg;

    if (this.env.messages && uid && (msg = this.env.messages[uid]) && msg.mbox)
      return msg.mbox;

    if (/^[0-9]+-(.*)$/.test(uid))
      return RegExp.$1;

    return this.env.mailbox;
  };

  // build request parameters from single message id (maybe with mailbox name)
  this.params_from_uid = function(uid, params)
  {
    if (!params)
      params = {};

    params._uid = String(uid).split('-')[0];
    params._mbox = this.get_message_mailbox(uid);

    return params;
  };

  // gets cursor position
  this.get_caret_pos = function(obj)
  {
    if (obj.selectionEnd !== undefined)
      return obj.selectionEnd;

    return obj.value.length;
  };

  // moves cursor to specified position
  this.set_caret_pos = function(obj, pos)
  {
    try {
      if (obj.setSelectionRange)
        obj.setSelectionRange(pos, pos);
    }
    catch(e) {} // catch Firefox exception if obj is hidden
  };

  // get selected text from an input field
  this.get_input_selection = function(obj)
  {
    var start = 0, end = 0, normalizedValue = '';

    if (typeof obj.selectionStart == "number" && typeof obj.selectionEnd == "number") {
      normalizedValue = obj.value;
      start = obj.selectionStart;
      end = obj.selectionEnd;
    }

    return {start: start, end: end, text: normalizedValue.substr(start, end-start)};
  };

  // disable/enable all fields of a form
  this.lock_form = function(form, lock)
  {
    if (!form || !form.elements)
      return;

    if (lock)
      this.disabled_form_elements = [];

    $.each(form.elements, function() {
      if (this.type == 'hidden')
        return;
      // remember which elem was disabled before lock
      if (lock && this.disabled)
        ref.disabled_form_elements.push(this);
      else if (lock || $.inArray(this, ref.disabled_form_elements) < 0)
        this.disabled = lock;
    });
  };

  this.mailto_handler_uri = function()
  {
    return location.href.split('?')[0] + '?_task=mail&_action=compose&_to=%s';
  };

  this.register_protocol_handler = function(name)
  {
    try {
      window.navigator.registerProtocolHandler('mailto', this.mailto_handler_uri(), name);
    }
    catch(e) {
      this.display_message(String(e), 'error');
    }
  };

  this.check_protocol_handler = function(name, elem)
  {
    var nav = window.navigator;

    if (!nav || (typeof nav.registerProtocolHandler != 'function')) {
      $(elem).addClass('disabled').click(function() {
        ref.display_message('nosupporterror', 'error');
        return false;
      });
    }
    else if (typeof nav.isProtocolHandlerRegistered == 'function') {
      var status = nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri());
      if (status)
        $(elem).parent().find('.mailtoprotohandler-status').html(status);
    }
    else {
      $(elem).click(function() { ref.register_protocol_handler(name); return false; });
    }
  };

  // Checks browser capabilities e.g. PDF support, TIF support
  this.browser_capabilities_check = function()
  {
    if (!this.env.browser_capabilities)
      this.env.browser_capabilities = {};

    $.each(['pdf', 'flash', 'tiff', 'webp', 'pgpmime'], function() {
      if (ref.env.browser_capabilities[this] === undefined)
        ref.env.browser_capabilities[this] = ref[this + '_support_check']();
    });
  };

  // Returns browser capabilities string
  this.browser_capabilities = function()
  {
    if (!this.env.browser_capabilities)
      return '';

    var n, ret = [];

    for (n in this.env.browser_capabilities)
      ret.push(n + '=' + this.env.browser_capabilities[n]);

    return ret.join();
  };

  this.tiff_support_check = function()
  {
    this.image_support_check('tiff');
    return 0;
  };

  this.webp_support_check = function()
  {
    this.image_support_check('webp');
    return 0;
  };

  this.image_support_check = function(type)
  {
    setTimeout(function() {
      var img = new Image();
      img.onload = function() { ref.env.browser_capabilities[type] = 1; };
      img.onerror = function() { ref.env.browser_capabilities[type] = 0; };
      img.src = ref.assets_path('program/resources/blank.' + type);
    }, 10);
  };

  this.pdf_support_check = function()
  {
    if ('pdfViewerEnabled' in navigator)
      return navigator.pdfViewerEnabled ? 1 : 0;

    var i, plugin = navigator.mimeTypes ? navigator.mimeTypes["application/pdf"] : {},
      regex = /Adobe Reader|PDF|Acrobat/i;

    if (plugin && plugin.enabledPlugin)
        return 1;

    for (i in navigator.plugins) {
      plugin = navigator.plugins[i];
      if (typeof plugin === 'string') {
        if (regex.test(plugin))
          return 1;
      }
      else if (plugin.name && regex.test(plugin.name))
        return 1;
    }

    setTimeout(function() {
      $('<object>').attr({
          data: ref.assets_path('program/resources/dummy.pdf'),
          type: 'application/pdf',
          style: 'position: "absolute"; top: -1000px; height: 1px; width: 1px'
        })
        .on('load error', function(e) {
          ref.env.browser_capabilities.pdf = e.type == 'load' ? 1 : 0;

          // add a short delay before attempting to remove element (#8128)
          var obj = this;
          setTimeout(function() { $(obj).remove(); }, 10);
        })
        .appendTo(document.body);
      }, 10);

    return 0;
  };

  this.flash_support_check = function()
  {
    var plugin = navigator.mimeTypes ? navigator.mimeTypes["application/x-shockwave-flash"] : {};

    if (plugin && plugin.enabledPlugin)
        return 1;

    if ('ActiveXObject' in window) {
      try {
        if (plugin = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
          return 1;
      }
      catch (e) {}
    }

    return 0;
  };

  // check for mailvelope API
  this.pgpmime_support_check = function(action)
  {
    if (window.mailvelope)
      return 1;

    $(window).on('mailvelope', function() {
      ref.env.browser_capabilities['pgpmime'] = 1;
    });

    return 0;
  };

  this.assets_path = function(path)
  {
    if (this.env.assets_path && !path.startsWith(this.env.assets_path)) {
      path = this.env.assets_path + path;
    }

    return path;
  };

  // Cookie setter
  this.set_cookie = function(name, value, expires)
  {
    if (expires === false) {
      var expires = new Date();
      expires.setYear(expires.getFullYear() + 1);
    }

    setCookie(name, value, expires, this.env.cookie_path, this.env.cookie_domain, this.env.cookie_secure);
  };

  this.get_local_storage_prefix = function()
  {
    if (!this.local_storage_prefix)
      this.local_storage_prefix = 'roundcube.' + (this.env.user_id || 'anonymous') + '.';

    return this.local_storage_prefix;
  };

  // wrapper for localStorage.getItem(key)
  this.local_storage_get_item = function(key, deflt, encrypted)
  {
    var item, result;

    // TODO: add encryption
    try {
      item = localStorage.getItem(this.get_local_storage_prefix() + key);
      result = JSON.parse(item);
    }
    catch (e) { }

    return result || deflt || null;
  };

  // wrapper for localStorage.setItem(key, data)
  this.local_storage_set_item = function(key, data, encrypted)
  {
    // try/catch to handle no localStorage support, but also error
    // in Safari-in-private-browsing-mode where localStorage exists
    // but can't be used (#1489996)
    try {
      // TODO: add encryption
      localStorage.setItem(this.get_local_storage_prefix() + key, JSON.stringify(data));
      return true;
    }
    catch (e) {
      return false;
    }
  };

  // wrapper for localStorage.removeItem(key)
  this.local_storage_remove_item = function(key)
  {
    try {
      localStorage.removeItem(this.get_local_storage_prefix() + key);
      return true;
    }
    catch (e) {
      return false;
    }
  };

  this.print_dialog = function()
  {
    // setTimeout for Safari
    setTimeout('window.print()', 10);
  };
}  // end object rcube_webmail


// some static methods
rcube_webmail.long_subject_title = function(elem, indent, text_elem)
{
  if (!elem.title) {
    var $elem = $(text_elem || elem);
    if ($elem.width() + (indent || 0) * 15 > $elem.parent().width())
      elem.title = rcube_webmail.subject_text($elem[0]);
  }
};

rcube_webmail.long_subject_title_ex = function(elem)
{
  if (!elem.title) {
    var $elem = $(elem),
      txt = $elem.text().trim(),
      indent = $('span.branch', $elem).width() || 0,
      tmp = $('<span>').text(txt)
        .css({position: 'absolute', 'float': 'left', visibility: 'hidden',
          'font-size': $elem.css('font-size'), 'font-weight': $elem.css('font-weight')})
        .appendTo(document.body),
      w = tmp.width();

    tmp.remove();
    if (w + indent * 15 > $elem.width())
      elem.title = rcube_webmail.subject_text(elem);
  }
};

rcube_webmail.subject_text = function(elem)
{
  var t = $(elem).clone();
  t.find('.skip-on-drag,.skip-content,.voice').remove();
  return t.text().trim();
};

// set event handlers on all iframe elements (and their contents)
rcube_webmail.set_iframe_events = function(events)
{
  $('iframe').each(function() {
    var frame = $(this);
    $.each(events, function(event_name, event_handler) {
      frame.on('load', function(e) {
        try { $(this).contents().on(event_name, event_handler); }
        catch (e) {/* catch possible permission error in IE */ }
      });

      try { frame.contents().on(event_name, event_handler); }
      catch (e) {/* catch possible permission error in IE */ }
    });
  });
};

rcube_webmail.prototype.get_cookie = getCookie;

// copy event engine prototype
rcube_webmail.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
rcube_webmail.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;
rcube_webmail.prototype.triggerEvent = rcube_event_engine.prototype.triggerEvent;
js/jstz.min.js000064400000033013151727150220007274 0ustar00/**
 * jsTimezoneDetect - v1.0.7
 *
 * @source https://cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.7/jstz.min.js
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) Jon Nylander
 *
 * Licensed under the MIT licenses
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 */
/* jstz.min.js Version: 1.0.6 Build date: 2019-09-09 */
!function(e){var a=function(){"use strict";var e="s",s={DAY:864e5,HOUR:36e5,MINUTE:6e4,SECOND:1e3,BASELINE_YEAR:2014,MAX_SCORE:864e6,AMBIGUITIES:{"America/Denver":["America/Mazatlan"],"America/Chicago":["America/Mexico_City"],"America/Asuncion":["America/Campo_Grande","America/Santiago"],"America/Montevideo":["America/Sao_Paulo","America/Santiago"],"Asia/Beirut":["Asia/Amman","Asia/Jerusalem","Europe/Helsinki","Asia/Damascus","Africa/Cairo","Asia/Gaza","Europe/Minsk","Africa/Windhoek"],"Pacific/Auckland":["Pacific/Fiji"],"America/Los_Angeles":["America/Santa_Isabel"],"America/New_York":["America/Havana"],"America/Halifax":["America/Goose_Bay"],"America/Godthab":["America/Miquelon"],"Asia/Dubai":["Asia/Yerevan"],"Asia/Jakarta":["Asia/Krasnoyarsk"],"Asia/Shanghai":["Asia/Irkutsk","Australia/Perth"],"Australia/Sydney":["Australia/Lord_Howe"],"Asia/Tokyo":["Asia/Yakutsk"],"Asia/Dhaka":["Asia/Omsk"],"Asia/Baku":["Asia/Yerevan"],"Australia/Brisbane":["Asia/Vladivostok"],"Pacific/Noumea":["Asia/Vladivostok"],"Pacific/Majuro":["Asia/Kamchatka","Pacific/Fiji"],"Pacific/Tongatapu":["Pacific/Apia"],"Asia/Baghdad":["Europe/Minsk","Europe/Moscow"],"Asia/Karachi":["Asia/Yekaterinburg"],"Africa/Johannesburg":["Asia/Gaza","Africa/Cairo"]}},i=function(e){var a=-e.getTimezoneOffset();return null!==a?a:0},r=function(){for(var e=[],a=0;a<=11;a++)for(var r=1;r<=28;r++){var n=i(new Date(s.BASELINE_YEAR,a,r));e?e&&e[e.length-1]!==n&&e.push(n):e.push()}return e},n=function(){var a=0,s=r();return s.length>1&&(a=s[0]-s[1]),s.length>3?s[0]+",1,weird":a<0?s[0]+",1":a>0?s[1]+",1,"+e:s[0]+",0"},o=function(){var e,a;if(Intl&&"undefined"!=typeof Intl&&"undefined"!=typeof Intl.DateTimeFormat&&(e=Intl.DateTimeFormat(),"undefined"!=typeof e&&"undefined"!=typeof e.resolvedOptions))return a=e.resolvedOptions().timeZone,a&&(a.indexOf("/")>-1||"UTC"===a)?a:void 0},t=function(e){for(var a=new Date(e,0,1,0,0,1,0).getTime(),s=new Date(e,12,31,23,59,59).getTime(),i=a,r=new Date(i).getTimezoneOffset(),n=null,o=null;i<s-864e5;){var t=new Date(i),A=t.getTimezoneOffset();A!==r&&(A<r&&(n=t),A>r&&(o=t),r=A),i+=864e5}return!(!n||!o)&&{s:u(n).getTime(),e:u(o).getTime()}},u=function f(e,a,i){"undefined"==typeof a&&(a=s.DAY,i=s.HOUR);for(var r=new Date(e.getTime()-a).getTime(),n=e.getTime()+a,o=new Date(r).getTimezoneOffset(),t=r,u=null;t<n-i;){var A=new Date(t),c=A.getTimezoneOffset();if(c!==o){u=A;break}t+=i}return a===s.DAY?f(u,s.HOUR,s.MINUTE):a===s.HOUR?f(u,s.MINUTE,s.SECOND):u},A=function(e,a,s,i){if("N/A"!==s)return s;if("Asia/Beirut"===a){if("Africa/Cairo"===i.name&&13983768e5===e[6].s&&14116788e5===e[6].e)return 0;if("Asia/Jerusalem"===i.name&&13959648e5===e[6].s&&14118588e5===e[6].e)return 0}else if("America/Santiago"===a){if("America/Asuncion"===i.name&&14124816e5===e[6].s&&1397358e6===e[6].e)return 0;if("America/Campo_Grande"===i.name&&14136912e5===e[6].s&&13925196e5===e[6].e)return 0}else if("America/Montevideo"===a){if("America/Sao_Paulo"===i.name&&14136876e5===e[6].s&&1392516e6===e[6].e)return 0}else if("Pacific/Auckland"===a&&"Pacific/Fiji"===i.name&&14142456e5===e[6].s&&13961016e5===e[6].e)return 0;return s},c=function(e,i){for(var r=function(a){for(var r=0,n=0;n<e.length;n++)if(a.rules[n]&&e[n]){if(!(e[n].s>=a.rules[n].s&&e[n].e<=a.rules[n].e)){r="N/A";break}if(r=0,r+=Math.abs(e[n].s-a.rules[n].s),r+=Math.abs(a.rules[n].e-e[n].e),r>s.MAX_SCORE){r="N/A";break}}return r=A(e,i,r,a)},n={},o=a.olson.dst_rules.zones,t=o.length,u=s.AMBIGUITIES[i],c=0;c<t;c++){var m=o[c],l=r(o[c]);"N/A"!==l&&(n[m.name]=l)}for(var f in n)if(n.hasOwnProperty(f))for(var d=0;d<u.length;d++)if(u[d]===f)return f;return i},m=function(e){var s=function(){for(var e=[],s=0;s<a.olson.dst_rules.years.length;s++){var i=t(a.olson.dst_rules.years[s]);e.push(i)}return e},i=function(e){for(var a=0;a<e.length;a++)if(e[a]!==!1)return!0;return!1},r=s(),n=i(r);return n?c(r,e):e},l=function(e){var i=!1,t=n();return(e||"undefined"==typeof e)&&(i=o()),i||(i=a.olson.timezones[t],"undefined"!=typeof s.AMBIGUITIES[i]&&(i=m(i))),{name:function(){return i},using_intl:e||"undefined"==typeof e,needle:t,offsets:r()}};return{determine:l}}();a.olson=a.olson||{},a.olson.timezones={"-720,0":"Etc/GMT+12","-660,0":"Pacific/Pago_Pago","-660,1,s":"Pacific/Apia","-600,1":"America/Adak","-600,0":"Pacific/Honolulu","-570,0":"Pacific/Marquesas","-540,0":"Pacific/Gambier","-540,1":"America/Anchorage","-480,1":"America/Los_Angeles","-480,0":"Pacific/Pitcairn","-420,0":"America/Phoenix","-420,1":"America/Denver","-360,0":"America/Guatemala","-360,1":"America/Chicago","-360,1,s":"Pacific/Easter","-300,0":"America/Bogota","-300,1":"America/New_York","-270,0":"America/Caracas","-240,1":"America/Halifax","-240,0":"America/Santo_Domingo","-240,1,s":"America/Asuncion","-210,1":"America/St_Johns","-180,1":"America/Godthab","-180,0":"America/Buenos_Aires","-180,1,s":"America/Montevideo","-120,0":"America/Noronha","-120,1":"America/Noronha","-60,1":"Atlantic/Azores","-60,0":"Atlantic/Cape_Verde","0,0":"UTC","0,1":"Europe/London","0,1,weird":"Africa/Casablanca","60,1":"Europe/Berlin","60,0":"Africa/Lagos","60,1,weird":"Africa/Casablanca","120,1":"Asia/Beirut","120,1,weird":"Africa/Cairo","120,0":"Africa/Johannesburg","180,0":"Asia/Baghdad","180,1":"Europe/Moscow","210,1":"Asia/Tehran","240,0":"Asia/Dubai","240,1":"Asia/Baku","270,0":"Asia/Kabul","300,1":"Asia/Yekaterinburg","300,0":"Asia/Karachi","330,0":"Asia/Calcutta","345,0":"Asia/Katmandu","360,0":"Asia/Dhaka","360,1":"Asia/Omsk","390,0":"Asia/Rangoon","420,1":"Asia/Krasnoyarsk","420,0":"Asia/Jakarta","480,0":"Asia/Shanghai","480,1":"Asia/Irkutsk","525,0":"Australia/Eucla","525,1,s":"Australia/Eucla","540,1":"Asia/Yakutsk","540,0":"Asia/Tokyo","570,0":"Australia/Darwin","570,1,s":"Australia/Adelaide","600,0":"Australia/Brisbane","600,1":"Asia/Vladivostok","600,1,s":"Australia/Sydney","630,1,s":"Australia/Lord_Howe","660,1":"Asia/Kamchatka","660,0":"Pacific/Noumea","690,0":"Pacific/Norfolk","720,1,s":"Pacific/Auckland","720,0":"Pacific/Majuro","765,1,s":"Pacific/Chatham","780,0":"Pacific/Tongatapu","780,1,s":"Pacific/Apia","840,0":"Pacific/Kiritimati"},a.olson.dst_rules={years:[2008,2009,2010,2011,2012,2013,2014],zones:[{name:"Africa/Cairo",rules:[{e:12199572e5,s:12090744e5},{e:1250802e6,s:1240524e6},{e:12858804e5,s:12840696e5},!1,!1,!1,{e:14116788e5,s:1406844e6}]},{name:"America/Asuncion",rules:[{e:12050316e5,s:12243888e5},{e:12364812e5,s:12558384e5},{e:12709548e5,s:12860784e5},{e:13024044e5,s:1317528e6},{e:1333854e6,s:13495824e5},{e:1364094e6,s:1381032e6},{e:13955436e5,s:14124816e5}]},{name:"America/Campo_Grande",rules:[{e:12032172e5,s:12243888e5},{e:12346668e5,s:12558384e5},{e:12667212e5,s:1287288e6},{e:12981708e5,s:13187376e5},{e:13302252e5,s:1350792e6},{e:136107e7,s:13822416e5},{e:13925196e5,s:14136912e5}]},{name:"America/Goose_Bay",rules:[{e:122559486e4,s:120503526e4},{e:125704446e4,s:123648486e4},{e:128909886e4,s:126853926e4},{e:13205556e5,s:129998886e4},{e:13520052e5,s:13314456e5},{e:13834548e5,s:13628952e5},{e:14149044e5,s:13943448e5}]},{name:"America/Havana",rules:[{e:12249972e5,s:12056436e5},{e:12564468e5,s:12364884e5},{e:12885012e5,s:12685428e5},{e:13211604e5,s:13005972e5},{e:13520052e5,s:13332564e5},{e:13834548e5,s:13628916e5},{e:14149044e5,s:13943412e5}]},{name:"America/Mazatlan",rules:[{e:1225008e6,s:12074724e5},{e:12564576e5,s:1238922e6},{e:1288512e6,s:12703716e5},{e:13199616e5,s:13018212e5},{e:13514112e5,s:13332708e5},{e:13828608e5,s:13653252e5},{e:14143104e5,s:13967748e5}]},{name:"America/Mexico_City",rules:[{e:12250044e5,s:12074688e5},{e:1256454e6,s:12389184e5},{e:12885084e5,s:1270368e6},{e:1319958e6,s:13018176e5},{e:13514076e5,s:13332672e5},{e:13828572e5,s:13653216e5},{e:14143068e5,s:13967712e5}]},{name:"America/Miquelon",rules:[{e:12255984e5,s:12050388e5},{e:1257048e6,s:12364884e5},{e:12891024e5,s:12685428e5},{e:1320552e6,s:12999924e5},{e:13520016e5,s:1331442e6},{e:13834512e5,s:13628916e5},{e:14149008e5,s:13943412e5}]},{name:"America/Santa_Isabel",rules:[{e:12250116e5,s:1207476e6},{e:12564612e5,s:12389256e5},{e:12891204e5,s:12685608e5},{e:132057e7,s:13000104e5},{e:13520196e5,s:133146e7},{e:13834692e5,s:13629096e5},{e:14149188e5,s:13943592e5}]},{name:"America/Santiago",rules:[{e:1206846e6,s:1223784e6},{e:1237086e6,s:12552336e5},{e:127035e7,s:12866832e5},{e:13048236e5,s:13138992e5},{e:13356684e5,s:13465584e5},{e:1367118e6,s:13786128e5},{e:13985676e5,s:14100624e5}]},{name:"America/Sao_Paulo",rules:[{e:12032136e5,s:12243852e5},{e:12346632e5,s:12558348e5},{e:12667176e5,s:12872844e5},{e:12981672e5,s:1318734e6},{e:13302216e5,s:13507884e5},{e:13610664e5,s:1382238e6},{e:1392516e6,s:14136876e5}]},{name:"Asia/Amman",rules:[{e:1225404e6,s:12066552e5},{e:12568536e5,s:12381048e5},{e:12883032e5,s:12695544e5},{e:13197528e5,s:13016088e5},!1,!1,{e:14147064e5,s:13959576e5}]},{name:"Asia/Damascus",rules:[{e:12254868e5,s:120726e7},{e:125685e7,s:12381048e5},{e:12882996e5,s:12701592e5},{e:13197492e5,s:13016088e5},{e:13511988e5,s:13330584e5},{e:13826484e5,s:1364508e6},{e:14147028e5,s:13959576e5}]},{name:"Asia/Dubai",rules:[!1,!1,!1,!1,!1,!1,!1]},{name:"Asia/Gaza",rules:[{e:12199572e5,s:12066552e5},{e:12520152e5,s:12381048e5},{e:1281474e6,s:126964086e4},{e:1312146e6,s:130160886e4},{e:13481784e5,s:13330584e5},{e:13802292e5,s:1364508e6},{e:1414098e6,s:13959576e5}]},{name:"Asia/Irkutsk",rules:[{e:12249576e5,s:12068136e5},{e:12564072e5,s:12382632e5},{e:12884616e5,s:12697128e5},!1,!1,!1,!1]},{name:"Asia/Jerusalem",rules:[{e:12231612e5,s:12066624e5},{e:1254006e6,s:1238112e6},{e:1284246e6,s:12695616e5},{e:131751e7,s:1301616e6},{e:13483548e5,s:13330656e5},{e:13828284e5,s:13645152e5},{e:1414278e6,s:13959648e5}]},{name:"Asia/Kamchatka",rules:[{e:12249432e5,s:12067992e5},{e:12563928e5,s:12382488e5},{e:12884508e5,s:12696984e5},!1,!1,!1,!1]},{name:"Asia/Krasnoyarsk",rules:[{e:12249612e5,s:12068172e5},{e:12564108e5,s:12382668e5},{e:12884652e5,s:12697164e5},!1,!1,!1,!1]},{name:"Asia/Omsk",rules:[{e:12249648e5,s:12068208e5},{e:12564144e5,s:12382704e5},{e:12884688e5,s:126972e7},!1,!1,!1,!1]},{name:"Asia/Vladivostok",rules:[{e:12249504e5,s:12068064e5},{e:12564e8,s:1238256e6},{e:12884544e5,s:12697056e5},!1,!1,!1,!1]},{name:"Asia/Yakutsk",rules:[{e:1224954e6,s:120681e7},{e:12564036e5,s:12382596e5},{e:1288458e6,s:12697092e5},!1,!1,!1,!1]},{name:"Asia/Yekaterinburg",rules:[{e:12249684e5,s:12068244e5},{e:1256418e6,s:1238274e6},{e:12884724e5,s:12697236e5},!1,!1,!1,!1]},{name:"Asia/Yerevan",rules:[{e:1224972e6,s:1206828e6},{e:12564216e5,s:12382776e5},{e:1288476e6,s:12697272e5},{e:13199256e5,s:13011768e5},!1,!1,!1]},{name:"Australia/Lord_Howe",rules:[{e:12074076e5,s:12231342e5},{e:12388572e5,s:12545838e5},{e:12703068e5,s:12860334e5},{e:13017564e5,s:1317483e6},{e:1333206e6,s:13495374e5},{e:13652604e5,s:1380987e6},{e:139671e7,s:14124366e5}]},{name:"Australia/Perth",rules:[{e:12068136e5,s:12249576e5},!1,!1,!1,!1,!1,!1]},{name:"Europe/Helsinki",rules:[{e:12249828e5,s:12068388e5},{e:12564324e5,s:12382884e5},{e:12884868e5,s:1269738e6},{e:13199364e5,s:13011876e5},{e:1351386e6,s:13326372e5},{e:13828356e5,s:13646916e5},{e:14142852e5,s:13961412e5}]},{name:"Europe/Minsk",rules:[{e:12249792e5,s:12068352e5},{e:12564288e5,s:12382848e5},{e:12884832e5,s:12697344e5},!1,!1,!1,!1]},{name:"Europe/Moscow",rules:[{e:12249756e5,s:12068316e5},{e:12564252e5,s:12382812e5},{e:12884796e5,s:12697308e5},!1,!1,!1,!1]},{name:"Pacific/Apia",rules:[!1,!1,!1,{e:13017528e5,s:13168728e5},{e:13332024e5,s:13489272e5},{e:13652568e5,s:13803768e5},{e:13967064e5,s:14118264e5}]},{name:"Pacific/Fiji",rules:[!1,!1,{e:12696984e5,s:12878424e5},{e:13271544e5,s:1319292e6},{e:1358604e6,s:13507416e5},{e:139005e7,s:1382796e6},{e:14215032e5,s:14148504e5}]},{name:"Europe/London",rules:[{e:12249828e5,s:12068388e5},{e:12564324e5,s:12382884e5},{e:12884868e5,s:1269738e6},{e:13199364e5,s:13011876e5},{e:1351386e6,s:13326372e5},{e:13828356e5,s:13646916e5},{e:14142852e5,s:13961412e5}]},{name:"Africa/Windhoek",rules:[{e:12207492e5,s:120744e7},{e:12521988e5,s:12388896e5},{e:12836484e5,s:12703392e5},{e:1315098e6,s:13017888e5},{e:13465476e5,s:13332384e5},{e:13779972e5,s:13652928e5},{e:14100516e5,s:13967424e5}]}]},"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a:"undefined"!=typeof define&&null!==define&&null!=define.amd?define([],function(){return a}):"undefined"==typeof e?window.jstz=a:e.jstz=a}();js/app.min.js000064400000517211151727150230007072 0ustar00/**
 * Roundcube Webmail Client Script
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (C) The Roundcube Dev Team
 * Copyright (C) Kolab Systems AG
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
 * @author Charles McNulty <charles@charlesmcnulty.com>
 *
 * @requires jquery.js, common.js, list.js
 */
function rcube_webmail(){this.labels={},this.buttons={},this.buttons_sel={},this.gui_objects={},this.gui_containers={},this.commands={},this.command_handlers={},this.onloads=[],this.messages={},this.group2expand={},this.http_request_jobs={},this.menu_stack=[],this.menu_buttons={},this.entity_selectors=[],this.image_style={},this.uploads={},this.dblclick_time=500,this.message_time=5e3,this.preview_delay_select=400,this.preview_delay_click=60,this.identifier_expr=/[^0-9a-z_-]/gi,this.uploadTimeout=0,this.env={attachments:{},request_timeout:180,draft_autosave:0,comm_path:"./",recipients_separator:",",recipients_delimiter:", ",popup_width:1150,popup_width_small:900,thread_padding:"15px"},this.ref="rcmail";var ref=this;$.ajaxSetup({cache:!1,timeout:1e3*this.env.request_timeout,error:function(e,t,s){ref.http_error(e,t,s)},beforeSend:function(e){e.setRequestHeader("X-Roundcube-Request",ref.env.request_token)}}),$(window).on("beforeunload",function(){ref.unload=!0}),this.set_env=function(e,t){if(null==e||"object"!=typeof e||t)this.env[e]=t;else for(var s in e)this.env[s]=e[s]},this.add_label=function(e,t){"string"==typeof e?this.labels[e]=t:"object"==typeof e&&$.extend(this.labels,e)},this.register_button=function(e,t,s,i,n,a){t={id:t,type:s};i&&(t.act=i),n&&(t.sel=n),a&&(t.over=a),this.buttons[e]||(this.buttons[e]=[]),this.buttons[e].push(t),this.loaded&&(this.init_button(e,t),this.set_button(e,this.commands[e]?"act":"pas"))},this.register_menu_button=function(e,t){var s;this.menu_buttons[t]?this.menu_buttons[t][0].push(e):(s=[],$("#"+t).find("a").each(function(){var e=$(this),t=e.attr("onclick"),t=t&&String(t).match(/rcmail\.command\(\'([^']+)/)?RegExp.$1:function(){return e.is(".active")};s.push(t)}),s.length&&(this.menu_buttons[t]=[[e],s])),this.set_menu_buttons()},this.set_menu_buttons=function(){clearTimeout(this.menu_buttons_timeout),this.menu_buttons_timeout=setTimeout(function(){$.each(ref.menu_buttons,function(){var t=!0;$.each(this[1],function(){var e="function"==typeof this;if(e&&this()||!e&&ref.commands[this])return t=!1}),$(this[0]).add($(this[0]).parent(".dropbutton")).addClass(t?"disabled":"active").removeClass(t?"active":"disabled")})},50)},this.gui_object=function(e,t){this.gui_objects[e]=this.loaded?rcube_find_object(t):t},this.gui_container=function(e,t){this.gui_containers[e]=t},this.add_element=function(e,t){this.gui_containers[t]&&this.gui_containers[t].jquery&&this.gui_containers[t].append(e)},this.register_command=function(e,t,s){this.command_handlers[e]=t,s&&this.enable_command(e,!0)},this.add_onload=function(e){this.onloads.push(e)},this.init=function(){var n,searchfilter;for(n in this.task=this.env.task,this.env.blankpage||(this.env.blankpage="javascript:false;"),this.gui_containers)this.gui_containers[n]=$("#"+this.gui_containers[n]);for(n in this.gui_objects)this.gui_objects[n]=rcube_find_object(this.gui_objects[n]);switch(this.init_buttons(),this.is_framed()&&parent.rcmail.unlock_frame(),this.enable_command("close","logout","mail","addressbook","settings","save-pref","compose","undo","about","switch-task","menu-open","menu-close","menu-save",!0),this.set_button(this.task,"sel"),this.env.permaurl&&this.enable_command("permaurl","extwin",!0),this.task){case"mail":this.enable_command("list","checkmail","add-contact","search","reset-search","collapse-folder","import-messages",!0),this.gui_objects.messagelist&&(this.msglist_setup(this.env.layout),this.env.widescreen_list_template=[{className:"threads",cells:["threads"]},{className:"subject",cells:["fromto","date","size","status","subject"]},{className:"flags",cells:["flag","attachment"]}],this.message_list=new rcube_list_widget(this.gui_objects.messagelist,{multiselect:!0,multiexpand:!0,draggable:!0,keyboard:!0,column_movable:this.env.col_movable,dblclick_time:this.dblclick_time}),this.message_list.addEventListener("initrow",function(e){ref.init_message_row(e)}).addEventListener("dblclick",function(e){ref.msglist_dbl_click(e)}).addEventListener("keypress",function(e){ref.msglist_keypress(e)}).addEventListener("select",function(e){ref.msglist_select(e)}).addEventListener("dragstart",function(e){ref.drag_start(e)}).addEventListener("dragmove",function(e){ref.drag_move(e)}).addEventListener("dragend",function(e){ref.drag_end(e)}).addEventListener("expandcollapse",function(e){ref.msglist_expand(e)}).addEventListener("column_replace",function(e){ref.msglist_set_coltypes(e)}).init(),$(this.message_list.thead).on("click","a.sortcol",function(e){return ref.command("sort",$(this).attr("rel"),this)}),this.enable_command("toggle_status","toggle_flag","sort",!0),this.enable_command("set-listmode",this.env.threads&&!this.is_multifolder_listing()),searchfilter=$(this.gui_objects.search_filter).val(),searchfilter&&"ALL"!=searchfilter?this.filter_mailbox(searchfilter):this.command("list"),$(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function(){ref.message_list.blur()})),this.set_button_titles(),this.env.message_commands=["show","reply","reply-all","reply-list","move","copy","delete","open","mark","edit","viewsource","bounce","print","load-attachment","download-attachment","show-headers","hide-headers","download","forward","forward-inline","forward-attachment","change-format"],"show"==this.env.action||"preview"==this.env.action?(this.enable_command(this.env.message_commands,this.env.uid),this.enable_command("reply-list",this.env.list_post),"show"==this.env.action&&this.http_request("pagenav",{_uid:this.env.uid,_mbox:this.env.mailbox,_search:this.env.search_request},this.display_message("","loading")),0<this.env.mail_read_time&&setTimeout(function(){ref.http_post("mark",{_uid:ref.env.uid,_flag:"read",_mbox:ref.env.mailbox,_quiet:1})},1e3*this.env.mail_read_time),this.env.blockedobjects&&($(this.gui_objects.remoteobjectsmsg).show(),this.enable_command("load-remote",!0)),"preview"==this.env.action&&this.is_framed()&&(this.enable_command("compose","add-contact",!1),parent.rcmail.show_contentframe(!0)),0<=$.inArray("flagged",this.env.message_flags)&&$(document.body).addClass("status-flagged"),this.gui_objects.attachments&&$("li > a",this.gui_objects.attachments).not(".drop").on("dragstart",function(e){var t,s=this.href,e=e.originalEvent.dataTransfer;e&&(s=s.replace(/^https?:\/\//,function(e){return e+urlencode(ref.env.username)+"@"}),(t=$(this).clone()).children().remove(),e.setData("roundcube-uri",s),e.setData("roundcube-name",t.text().trim()))}),this.check_mailvelope(this.env.action)):"compose"==this.env.action?(this.env.address_group_stack=[],this.env.compose_commands=["send-attachment","remove-attachment","send","cancel","toggle-editor","list-addresses","pushgroup","search","reset-search","extwin","insert-response","menu-open","menu-close","load-attachment","download-attachment","open-attachment","rename-attachment"],this.env.drafts_mailbox&&this.env.compose_commands.push("savedraft"),this.enable_command(this.env.compose_commands,!0),$.merge(this.env.compose_commands,["add-recipient","firstpage","previouspage","nextpage","lastpage"]),window.googie&&(this.env.editor_config.spellchecker=googie,this.env.editor_config.spellcheck_observer=function(e){ref.spellcheck_state()},this.env.compose_commands.push("spellcheck"),this.enable_command("spellcheck",!0)),this.editor_init(null,this.env.composebody),this.init_messageform(),this.check_mailvelope(this.env.action)):"bounce"==this.env.action?(this.init_messageform_inputs(),this.env.compose_commands=[]):"get"==this.env.action?(this.enable_command("download",!0),this.enable_command("image-scale","image-rotate",!!/^image\//.test(this.env.mimetype)),this.enable_command("print","application/pdf"!=this.env.mimetype||!bw.mz||75<=bw.vendver),this.env.is_message&&(this.enable_command("reply","reply-all","edit","viewsource","forward","forward-inline","forward-attachment","bounce",!0),this.env.list_post)&&this.enable_command("reply-list",!0),this.env.mimetype.startsWith("image/")&&$(this.gui_objects.messagepartframe).on("load",function(){var e=$(this).contents();e.find("img").length&&e.find("head").append('<style type="text/css">img { max-width:100%; max-height:100%; } body { display:flex; align-items:center; justify-content:center; height:100%; margin:0; }</style>')})):"print"==this.env.action&&this.env.uid&&(this.check_mailvelope(this.env.action),this.env.is_pgp_content||this.env.pgp_mime_part||this.print_dialog()),this.gui_objects.mailboxlist&&(this.env.unread_counts={},this.gui_objects.folderlist=this.gui_objects.mailboxlist,this.http_request("getunread",{_page:this.env.current_page})),this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:!1,keyboard:!0}),this.contact_list.addEventListener("initrow",function(e){ref.triggerEvent("insertrow",{cid:e.uid,row:e})}).addEventListener("select",function(e){ref.compose_recipient_select(e)}).addEventListener("dblclick",function(e){ref.compose_add_recipient()}).addEventListener("keypress",function(e){e.key_pressed!=e.ENTER_KEY||ref.compose_add_recipient()||e.last_selected&&"G"==String(e.last_selected).charAt(0)&&$(e.rows[e.last_selected].obj).find("a").first().click()}).init(),$("#_to,#_cc,#_bcc").focus(function(){ref.env.focused_field=this})),this.gui_objects.addressbookslist&&(this.gui_objects.folderlist=this.gui_objects.addressbookslist,this.enable_command("list-addresses",!0)),this.env.mdn_request&&this.env.uid&&this.mdn_request_dialog(this.env.uid,this.env.mailbox),this.is_framed()||this.env.extwin||this.browser_capabilities_check();break;case"addressbook":this.env.address_group_stack=[],this.gui_objects.folderlist&&(this.env.contactfolders=$.extend($.extend({},this.env.address_sources),this.env.contactgroups)),this.enable_command("add","import",this.env.writable_source),this.enable_command("list","listgroup","pushgroup","popgroup","listsearch","search","reset-search","advanced-search",!0),this.gui_objects.contactslist&&(this.contact_list=new rcube_list_widget(this.gui_objects.contactslist,{multiselect:!0,draggable:!!this.gui_objects.folderlist,keyboard:!0}),this.contact_list.addEventListener("initrow",function(e){ref.triggerEvent("insertrow",{cid:e.uid,row:e})}).addEventListener("keypress",function(e){ref.list_keypress(e)}).addEventListener("select",function(e){ref.contactlist_select(e)}).addEventListener("dragstart",function(e){ref.drag_start(e)}).addEventListener("dragmove",function(e){ref.drag_move(e)}).addEventListener("dragend",function(e){ref.drag_end(e)}).init(),$(this.gui_objects.qsearchbox).focusin(function(){ref.contact_list.blur()}),this.update_group_commands(),this.command("list")),this.gui_objects.savedsearchlist&&(this.savedsearchlist=new rcube_treelist_widget(this.gui_objects.savedsearchlist,{id_prefix:"rcmli",id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode}),this.savedsearchlist.addEventListener("select",function(e){ref.triggerEvent("selectfolder",{folder:e.id,prefix:"rcmli"})})),this.set_page_buttons(),this.env.cid&&(this.enable_command("show","edit","qrcode",!0),this.gui_objects.editform)&&$("input.groupmember").change(function(){ref.group_member_change(this.checked?"add":"del",ref.env.cid,ref.env.source,this.value)}),this.gui_objects.editform?(this.enable_command("save",!0),"add"!=this.env.action&&"edit"!=this.env.action&&"search"!=this.env.action||this.init_contact_form()):"print"==this.env.action&&this.print_dialog();break;case"settings":this.enable_command("show","save",!0),"identities"==this.env.action?this.enable_command("add",this.env.identities_level<2):"edit-identity"==this.env.action||"add-identity"==this.env.action?(this.enable_command("save","edit",!0),this.enable_command("delete",this.env.identities_level<2),"edit-identity"==this.env.action&&this.check_mailvelope(this.env.action)):"folders"==this.env.action?this.enable_command("subscribe","unsubscribe","create-folder","rename-folder",!0):"edit-folder"==this.env.action&&this.gui_objects.editform?(this.enable_command("save","folder-size",!0),parent.rcmail.env.exists=this.env.messagecount,parent.rcmail.enable_command("purge",this.env.messagecount)):"responses"==this.env.action&&this.enable_command("add",!0),this.gui_objects.identitieslist?(this.identity_list=new rcube_list_widget(this.gui_objects.identitieslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.identity_list.addEventListener("select",function(e){ref.identity_select(e)}).addEventListener("keypress",function(e){ref.list_keypress(e)}).init().focus()):this.gui_objects.sectionslist?(this.sections_list=new rcube_list_widget(this.gui_objects.sectionslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.sections_list.addEventListener("select",function(e){ref.section_select(e)}).init().focus()):this.gui_objects.subscriptionlist?this.init_subscription_list():this.gui_objects.responseslist&&(this.responses_list=new rcube_list_widget(this.gui_objects.responseslist,{multiselect:!1,draggable:!1,keyboard:!0}),this.responses_list.addEventListener("select",function(e){ref.response_select(e)}).addEventListener("keypress",function(e){ref.list_keypress(e)}).init().focus());break;case"login":var tz,tz_name,input_user=$("#rcmloginuser"),input_tz=$("#rcmlogintz");(""==input_user.val()?input_user:$("#rcmloginpwd")).focus(),window.jstz&&(tz=jstz.determine())&&(tz_name=tz.name()),input_tz.val(tz_name||(new Date).getStdTimezoneOffset()/-60),$("form").submit(function(){$("[type=submit]",this).prop("disabled",!0),ref.clear_messages(),ref.display_message("","loading")})}this.gui_objects.editform&&$("input,select,textarea",this.gui_objects.editform).not(":hidden").not(":disabled").first().select().focus(),bw.ie&&$("input[type=file]").keydown(function(e){"13"==e.keyCode&&e.preventDefault()}),this.loaded=!0,this.env.lastrefresh=new Date,this.pending_message&&this.display_message.apply(this,this.pending_message),this.gui_objects.folderlist&&window.rcube_treelist_widget&&this.gui_objects.folderlist!=this.gui_objects.addressbookslist&&(this.treelist=new rcube_treelist_widget(this.gui_objects.folderlist,{selectable:!0,id_prefix:"rcmli",parent_focus:!0,id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode,check_droptarget:function(e){return!e.virtual&&ref.check_droptarget(e.id)}}),this.treelist.addEventListener("collapse",function(e){ref.folder_collapsed(e)}).addEventListener("expand",function(e){ref.folder_collapsed(e)}).addEventListener("beforeselect",function(e){return!ref.busy}).addEventListener("select",function(e){ref.triggerEvent("selectfolder",{folder:e.id,prefix:"rcmli"}),ref.mark_all_read_state()})),this.gui_objects.filedrop&&this.env.filedrop&&window.FormData&&($(document.body).on("dragover dragleave drop",function(e){return ref.document_drag_hover(e,"dragover"==e.type)}),$(this.gui_objects.filedrop).addClass("droptarget").on("dragover dragleave",function(e){return ref.file_drag_hover(e,"dragover"==e.type)}).get(0).addEventListener("drop",function(e){return ref.file_dropped(e)},!1));var body_mouseup=function(e){return ref.doc_mouse_up(e)};for(n in $(document.body).mouseup(body_mouseup).keydown(function(e){return ref.doc_keypress(e)}),rcube_webmail.set_iframe_events({mouseup:body_mouseup}),this.triggerEvent("init",{task:this.task,action:this.env.action}),this.onloads)"string"==typeof this.onloads[n]?eval(this.onloads[n]):"function"==typeof this.onloads[n]&&this.onloads[n]();$("[data-popup]").each(function(){ref.register_menu_button(this,$(this).data("popup"))}),this.start_refresh(),this.start_keepalive()},this.log=function(e){this.env.devel_mode&&window.console&&console.log&&console.log(e)},this.command=function(e,t,s,i,n){if(!s||!s.blur||i&&rcube_event.is_keyboard(i)||s.blur(),this.busy&&("reset-search"!=e||"search"!=this.last_command)&&!e.match(/^menu-/))return!1;if(s&&s.href&&String(s.href).indexOf("#")<0&&rcube_event.get_modifier(i))return!0;if(!n&&!this.commands[e])return this.is_framed()&&parent.rcmail.command(e,t),!1;if("mail"==this.task&&"compose"==this.env.action&&!this.env.server_error&&"save-pref"!=e&&($.inArray(e,this.env.compose_commands)<0||e.startsWith("compose-encrypted")&&ref.mailvelope_editor)&&!this.compose_skip_unsavedcheck&&!this.env.is_sent&&this.cmp_hash!=this.compose_field_hash())return this.confirm_dialog(this.get_label("notsentwarning"),"discard",function(){ref.remove_compose_data(ref.env.compose_id),ref.compose_skip_unsavedcheck=!0,ref.command(e,t,s,i)}),!1;if(this.last_command=e,this.command_aborted=!1,this.triggerEvent("actionbefore",{props:t,action:e,originalEvent:i}),void 0!==(n=this.triggerEvent("before"+e,t||i))){if(!1===n)return!1;t=n}return n="function"==typeof this.command_handlers[e]?this.command_handlers[e](t,s,i):"string"==typeof this.command_handlers[e]?window[this.command_handlers[e]](t,s,i):this.command_handler(e,t,s,i),this.command_aborted||!1!==this.triggerEvent("after"+e,t)||(n=!1),this.triggerEvent("actionafter",{props:t,action:e,aborted:this.command_aborted,ret:n,originalEvent:i}),!1!==n&&!(s&&!0!==n||!0===this.command_aborted)},this.command_handler=function(e,t,s,i){var n,a,r,o;switch(e){case"logout":case"mail":case"addressbook":case"settings":this.switch_task(e);break;case"about":this.redirect("?_task=settings&_action=about",!1);break;case"permaurl":if(s&&s.href&&s.target)return!0;this.env.permaurl&&(parent.location.href=this.env.permaurl);break;case"extwin":"compose"==this.env.action?(m=this.gui_objects.messageform,(l=this.open_window(""))&&(this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0,$("[name='_action']",m).val("compose"),m.action=this.url("mail/compose",{_id:this.env.compose_id,_extwin:1}),m.target=l.name,m.submit())):this.open_window(this.env.permaurl,!0);break;case"change-format":n=this.env.permaurl+"&_format="+t,"preview"==this.env.action&&(n=n.replace(/_action=show/,"_action=preview")+"&_framed=1"),this.env.extwin&&(n+="&_extwin=1"),location.href=n;break;case"menu-open":t&&"attachmentmenu"==t.menu&&((d=this.env.attachments[t.id])&&d.mimetype&&(d=d.mimetype),this.enable_command("open-attachment",d&&this.env.mimetypes&&0<=$.inArray(d,this.env.mimetypes))),this.show_menu(t,t.show||void 0,i);break;case"menu-close":this.hide_menu(t,i);break;case"menu-save":return this.triggerEvent(e,{props:t,originalEvent:i}),!1;case"open":if(r=this.get_single_uid())return s.href=this.url("show",this.params_from_uid(r,{_extwin:1})),!0;break;case"close":this.env.extwin&&window.close();break;case"list":t&&""!=t&&this.reset_qsearch(!0),"compose"==this.env.action&&this.env.extwin?window.close():"mail"==this.task?(this.list_mailbox(t,t?1:""),this.set_button_titles()):"addressbook"==this.task&&this.list_contacts(t);break;case"set-listmode":this.set_list_options(null,void 0,void 0,"threads"==t?1:0);break;case"sort":var l=this.env.sort_order,c=this.env.disabled_sort_col?this.env.sort_col:t;this.env.disabled_sort_order||(l=this.env.sort_col==c&&"ASC"==l?"DESC":"ASC"),this.set_list_sorting(c,l),this.list_mailbox("","",c+"_"+l);break;case"nextpage":this.list_page("next");break;case"lastpage":this.list_page("last");break;case"previouspage":this.list_page("prev");break;case"firstpage":this.list_page("first");break;case"expunge":this.env.exists&&this.expunge_mailbox(this.env.mailbox);break;case"purge":case"empty-mailbox":this.env.exists&&this.purge_mailbox(this.env.mailbox);break;case"show":"mail"==this.task?!(r=this.get_single_uid())||this.env.uid&&r==this.env.uid||((c=this.get_message_mailbox(r))==this.env.drafts_mailbox?this.open_compose_step({_draft_uid:r,_mbox:c}):this.show_message(r)):"addressbook"==this.task?!(_=t||this.get_single_cid())||"show"==this.env.action&&_==this.env.cid||this.load_contact(_,"show"):"settings"==this.task&&this.goto_url("settings/"+t,{_framed:0});break;case"add":"addressbook"==this.task?this.load_contact(0,"add"):"settings"==this.task&&"responses"==this.env.action?this.load_response(0,"add-response"):"settings"==this.task&&this.load_identity(0,"add-identity");break;case"edit":"addressbook"==this.task&&(_=this.get_single_cid())?this.load_contact(_,"edit"):"mail"==this.task&&(r=this.get_single_uid())&&((n={_mbox:this.get_message_mailbox(r)})[n._mbox==this.env.drafts_mailbox&&"new"!=t?"_draft_uid":"_uid"]=r,this.open_compose_step(n));break;case"save":if(m=this.gui_objects.editform){if((o=$("[name='_pagesize']",m))&&o.length&&isNaN(parseInt(o.val()))){this.alert_dialog(this.get_label("nopagesizewarning"),function(){o.focus()});break}if("reload"==t)m.action+="&_reload=1";else if("settings"==this.task&&this.env.identities_level%2==0&&(o=$("[name='_email']",m))&&o.length&&!rcube_check_email(o.val())){this.alert_dialog(this.get_label("noemailwarning"),function(){o.focus()});break}parent.rcmail&&parent.rcmail.env.source&&(m.action=this.add_url(m.action,"_orig_source",parent.rcmail.env.source)),m.submit()}break;case"delete":"mail"==this.task?this.delete_messages(i):"addressbook"==this.task?this.delete_contacts():"settings"==this.task&&"responses"==this.env.action?this.delete_response():"settings"==this.task&&this.delete_identity();break;case"move":case"moveto":"mail"==this.task?this.move_messages(t,i):"addressbook"==this.task&&this.move_contacts(t,i);break;case"copy":"mail"==this.task?this.copy_messages(t,i):"addressbook"==this.task&&this.copy_contacts(t,i);break;case"mark":t&&this.mark_message(t);break;case"toggle_status":case"toggle_flag":a="toggle_flag"==e?"flagged":"read",(r=t)&&("flagged"==a?this.message_list.rows[r].flagged&&(a="unflagged"):this.message_list.rows[r].deleted?a="undelete":this.message_list.rows[r].unread||(a="unread"),this.mark_message(a,r));break;case"add-contact":this.add_contact(t);break;case"load-remote":if(this.env.uid){if(t&&this.env.sender){this.add_contact(this.env.sender,!0,t);break}this.show_message(this.env.uid,!0,"preview"==this.env.action)}break;case"load-attachment":case"open-attachment":case"download-attachment":var h,d=this.env.attachments[t];return"compose"==this.env.action?(h={_file:t,_id:this.env.compose_id},d=d?d.mimetype:""):h={_mbox:this.env.mailbox,_uid:this.env.uid,_part:t},"download-attachment"!=e&&d&&this.env.mimetypes&&0<=$.inArray(d,this.env.mimetypes)&&this.open_window(this.url("get",$.extend({_frame:1,_framed:0},h)))||(h._download=1,this.compose_skip_unsavedcheck=1,this.goto_url("get",h,!1,!0),this.compose_skip_unsavedcheck=0),!0;case"select-all":this.select_all_mode=!t,this.dummy_select=!0;l=this["addressbook"==this.task?"contact_list":"message_list"];"invert"==t?l.invert_selection():l.select_all("page"==t?"":t),this.dummy_select=null;break;case"select-none":this.select_all_mode=!1,this["addressbook"==this.task?"contact_list":"message_list"].clear_selection();break;case"expand-all":this.env.autoexpand_threads=1,this.message_list.expand_all();break;case"expand-unread":this.env.autoexpand_threads=2,this.message_list.collapse_all(),this.expand_unread();break;case"collapse-all":this.env.autoexpand_threads=0,this.message_list.collapse_all();break;case"nextmessage":this.env.next_uid&&this.show_message(this.env.next_uid,!1,"preview"==this.env.action);break;case"lastmessage":this.env.last_uid&&this.show_message(this.env.last_uid);break;case"previousmessage":this.env.prev_uid&&this.show_message(this.env.prev_uid,!1,"preview"==this.env.action);break;case"firstmessage":this.env.first_uid&&this.show_message(this.env.first_uid);break;case"compose":if(n={},"mail"==this.task)n={_mbox:this.env.mailbox,_search:this.env.search_request},t&&(n._to=t);else if("addressbook"==this.task)if(t&&0<t.indexOf("@"))n._to=t;else{c=[];if(t?c.push(t):this.contact_list&&(c=this.contact_list.get_selection()),c.length){this.http_post("mailto",{_cid:c.join(","),_source:this.env.source},!0);break}if(this.env.group&&this.env.pagecount){this.http_post("mailto",{_gid:this.env.group,_source:this.env.source},!0);break}}else t&&"string"==typeof t?n._to=t:t&&"object"==typeof t&&$.extend(n,t);this.open_compose_step(n);break;case"spellcheck":this.spellcheck_state()?this.editor.spellcheck_stop():this.editor.spellcheck_start();break;case"savedraft":clearTimeout(this.save_timer),this.env.draft_id&&this.cmp_hash==this.compose_field_hash()?this.auto_save_start():this.submit_messageform(!0);break;case"send":(t.nocheck||this.env.is_sent||this.check_compose_input(e))&&(clearTimeout(this.save_timer),this.submit_messageform());break;case"send-attachment":clearTimeout(this.save_timer),(a=this.upload_file(t||this.gui_objects.uploadform,"upload"))||(!1!==a&&this.alert_dialog(this.get_label("selectimportfile")),aborted=!0);break;case"insert-sig":this.change_identity($("[name='_from']")[0],!0);break;case"list-addresses":this.list_contacts(t),this.enable_command("add-recipient",!1);break;case"add-recipient":this.compose_add_recipient(t);break;case"reply-all":case"reply-list":case"reply":(r=this.get_single_uid())&&(n={_reply_uid:r,_mbox:this.get_message_mailbox(r),_search:this.env.search_request},"reply-all"==e?n._all=!t&&1==this.env.reply_all_mode&&this.commands["reply-list"]?"list":"all":"reply-list"==e&&(n._all="list"),this.open_compose_step(n));break;case"forward-attachment":case"forward-inline":case"forward":var _=this.env.uid?[this.env.uid]:this.message_list?this.message_list.get_selection():[];_.length&&(n={_forward_uid:this.uids_to_list(_),_mbox:this.env.mailbox,_search:this.env.search_request},("forward-attachment"==e||!t&&this.env.forward_attachment||1<_.length)&&(n._attachment=1),this.open_compose_step(n));break;case"print":"addressbook"==this.task?(r=this.get_single_cid())&&(n="&_action=print&_cid="+r,this.env.source&&(n+="&_source="+urlencode(this.env.source)),this.open_window(this.env.comm_path+n,!0,!0)):"get"!=this.env.action||this.env.is_message?(r=this.get_single_uid())&&(n=this.url("print",this.params_from_uid(r,{_safe:this.env.safemode?1:0})),this.open_window(n,!0,!0))&&"show"!=this.env.action&&"get"!=this.env.action&&this.mark_message("read",r):this.gui_objects.messagepartframe.contentWindow.print();break;case"viewsource":(r=this.get_single_uid())&&this.open_window(this.url("viewsource",this.params_from_uid(r)),!0,!0);break;case"download":"get"==this.env.action?location.href=this.secure_url(location.href.replace(/_frame=/,"_download=")):(r=this.get_single_uid())&&this.goto_url("viewsource",this.params_from_uid(r,{_save:1}),!1,!0);break;case"search":return this.qsearch(t);case"reset-search":d=this.env.search_request||this.env.qsearch;this.reset_qsearch(!0),d&&"compose"==this.env.action?this.contact_list&&this.list_contacts_clear():d&&this.env.mailbox?this.list_mailbox(this.env.mailbox,1):d&&"addressbook"==this.task&&(this.env.source=this.env.last_source||"",this.env.group=this.env.last_group||"",this.list_contacts(this.env.source,this.env.group,1));break;case"pushgroup":var u={id:t.id,search_request:this.env.search_request,page:this.env.current_page,search:this.env.search_request&&this.gui_objects.qsearchbox?this.gui_objects.qsearchbox.value:null};this.env.address_group_stack.push(u),s&&i&&rcube_event.cancel(i);case"listgroup":this.reset_qsearch(),this.list_contacts(t.source,t.id,1,u);break;case"popgroup":this.env.address_group_stack.length&&(h=this.env.address_group_stack.pop(),this.reset_qsearch(),h.search_request?(h.search&&this.gui_objects.qsearchbox&&$(this.gui_objects.qsearchbox).val(h.search),this.env.search_request=h.search_request,this.list_contacts_remote(null,null,this.env.current_page=h.page)):this.list_contacts(t.source,this.env.address_group_stack[this.env.address_group_stack.length-1].id));break;case"import-messages":var m=t||this.gui_objects.importform,l=this.set_busy(!0,"importwait");(a=this.upload_file(m,"import",l))||(this.set_busy(!1,null,l),!1!==a&&this.alert_dialog(this.get_label("selectimportfile")),this.command_aborted=!0);break;case"import":var p=$("<iframe>").attr("src",this.url("import",{_framed:1,_target:this.env.source}));this.import_state=null,this.import_dialog=this.simple_dialog(p,"importcontacts",function(e){var t,s=p[0].contentWindow,i=null;(i=s.rcmail.gui_objects.importformmap||s.rcmail.gui_objects.importform)&&((t=s.$("#rcmimportfile")[0])&&!t.value?s.rcmail.alert_dialog(s.rcmail.get_label("selectimportfile")):(t=s.rcmail.set_busy(!0,"importwait"),$('[name="_unlock"]',i).val(t),i.submit(),s.rcmail.lock_form(i,!0),$(e.target).attr("disabled",!0).next().focus()))},{close:function(e,t){$(this).remove(),"reload"==ref.import_state&&ref.command("list")},button:"import",width:500,height:300});break;case"export":0<this.contact_list.rowcount&&this.goto_url("export",{_source:this.env.source,_gid:this.env.group,_search:this.env.search_request},!1,!0);break;case"export-selected":0<this.contact_list.rowcount&&this.goto_url("export",{_source:this.env.source,_gid:this.env.group,_cid:this.contact_list.get_selection().join(",")},!1,!0);break;case"upload-photo":this.upload_contact_photo(t||this.gui_objects.uploadform);break;case"delete-photo":this.replace_contact_photo("-del-");break;case"undo":this.http_request("undo","",this.display_message("","loading"));break;default:c=e.replace(/-/g,"_");if(this[c]&&"function"==typeof this[c])return this[c](t,s,i)}},this.enable_command=function(){for(var e,t,s=Array.prototype.slice.call(arguments),i=s.pop(),n=0;n<s.length;n++)if("string"==typeof(t=s[n]))this.commands[t]=i,this.set_button(t,i?"act":"pas"),this.triggerEvent("enable-command",{command:t,status:i});else for(e in t)s.push(t[e]);this.set_menu_buttons()},this.command_enabled=function(e){return this.commands[e]},this.set_busy=function(e,t,s){var i;return e&&t?(i=this.get_label(t),s=this.display_message(i=i==t?"Loading...":i,"loading")):!e&&s&&this.hide_message(s),this.busy=e,this.gui_objects.editform&&this.lock_form(this.gui_objects.editform,e),s},this.get_label=function(e,t){return t&&this.labels[t+"."+e]?this.labels[t+"."+e]:this.labels[e]||e},this.gettext=this.get_label,this.switch_task=function(e){var t,s;2==(s=e.split("/")).length&&(e=s[0],t=s[1]),this.task===e&&"mail"!=e||(s=this.get_task_url(e),t&&(s+="&_action="+t),"mail"==e?s+="&_mbox=INBOX":"logout"==e&&(s=this.secure_url(s),this.clear_compose_data()),this.redirect(s))},this.get_task_url=function(e,t){return(t=t||this.env.comm_path).match(/[?&]_task=[a-zA-Z0-9_-]+/)?t.replace(/_task=[a-zA-Z0-9_-]+/,"_task="+e):t.replace(/\?.*$/,"")+"?_task="+e},this.reload=function(e){this.is_framed()?parent.rcmail.reload(e):e?setTimeout(function(){ref.reload()},e):window.location&&(location.href=this.url("",{_extwin:this.env.extwin}))},this.add_url=function(e,t,s){var i,n,a="";return s=urlencode(s),/(#[a-z0-9_-]*)$/.test(e)&&(a=RegExp.$1,e=e.substr(0,e.length-a.length)),/(\?.*)$/.test(e)?(i=RegExp.$1,(n=RegExp("((\\?|&)"+RegExp.escape(t)+"=[^&]*)")).test(i)?i=i.replace(n,RegExp.$2+t+"="+s):i+="&"+t+"="+s,e.replace(/(\?.*)$/,i)+a):e+"?"+t+"="+s+a},this.secure_url=function(e){return this.add_url(e,"_token",this.env.request_token)},this.is_framed=function(){return this.env.framed&&parent.rcmail&&parent.rcmail!=this&&"function"==typeof parent.rcmail.command},this.save_pref=function(e){var t={_name:e.name,_value:e.value};e.session&&(t._session=e.session),e.env&&(this.env[e.env]=e.value),this.http_post("save-pref",t)},this.html_identifier=function(e,t){return t?this.html_identifier_encode(e):String(e).replace(this.identifier_expr,"_")},this.html_identifier_encode=function(e){return Base64.encode(String(e)).replace(/=+$/,"").replace(/\+/g,"-").replace(/\//g,"_")},this.html_identifier_decode=function(e){for(e=String(e).replace(/-/g,"+").replace(/_/g,"/");e.length%4;)e+="=";return Base64.decode(e)},this.drag_menu=function(e,t){var s=rcube_event.get_modifier(e),i=this.gui_objects.dragmenu;return!(!i||s!=SHIFT_KEY||!this.commands.copy||(s=rcube_event.get_mouse_pos(e),this.env.drag_target=t,this.show_menu(this.gui_objects.dragmenu.id,!0,e),$(i).css({top:s.y-10+"px",left:s.x-10+"px"}),0))},this.drag_menu_action=function(e){var t=this.gui_objects.dragmenu;t&&$(t).hide(),this.command(e,this.env.drag_target),this.env.drag_target=null},this.drag_start=function(e){this.drag_active=!0,this.preview_timer&&clearTimeout(this.preview_timer),this.treelist&&this.treelist.drag_start()},this.drag_end=function(e){var t,s;this.treelist&&this.treelist.drag_end(),(t=this.message_list)?s=this.env.mailboxes:(t=this.contact_list)&&(s=this.env.contactfolders),this.drag_active&&s&&this.env.last_folder_target&&!rcube_event.is_keyboard(e)&&(s=s[this.env.last_folder_target],t.draglayer.hide(),this.contact_list?this.contacts_drag_menu(e,s)||this.command("move",s):this.drag_menu(e,s)||this.command("move",s)),this.drag_active=!1,this.env.last_folder_target=null},this.drag_move=function(e){var t,s;this.gui_objects.folderlist&&(s="draglayernormal",e=rcube_event.get_mouse_pos(e),this.contact_list&&this.contact_list.draglayer&&(t=this.contact_list.draglayer.attr("class")),this.treelist&&(e=this.treelist.intersects(e,!0))?(this.env.last_folder_target=e,s="draglayer"+(1<this.check_droptarget(e)?"copy":"normal")):this.env.last_folder_target=null,s!=t)&&this.contact_list&&this.contact_list.draglayer&&this.contact_list.draglayer.attr("class",s)},this.collapse_folder=function(e){this.treelist&&this.treelist.toggle(e)},this.folder_collapsed=function(e){this.folder_collapsed_timer&&clearTimeout(this.folder_collapsed_timer);var t="addressbook"==this.env.task?"collapsed_abooks":"collapsed_folders",s=this.env[t],i="&"+urlencode(e.id)+"&";this.env[t]=s.replace(i,""),e.collapsed&&(this.env[t]=this.env[t]+i,!e.virtual)&&this.env.mailbox&&this.env.mailbox.startsWith(e.id+this.env.delimiter)&&this.command("list",e.id),this.drag_active||(s!==this.env[t]&&(this.folder_collapsed_timer=setTimeout(function(){ref.command("save-pref",{name:t,value:ref.env[t]})},10)),this.env.unread_counts&&this.set_unread_count_display(e.id,!1))},this.doc_mouse_up=function(s){var e,r=rcube_event.get_target(s);if(!$(r).closest(".ui-dialog, .ui-widget-overlay").length){if(window.rcube_list_widget&&rcube_list_widget._instances.length&&$.each(rcube_list_widget._instances,function(e,t){t&&!rcube_mouse_is_over(s,t.list.parentNode)&&t.blur()}),this.buttons_sel){for(e in this.buttons_sel)"function"!=typeof e&&this.button_out(this.buttons_sel[e],e);this.buttons_sel={}}setTimeout(function(e){for(var t,s,i,n=$(r).parents(),a=ref.menu_stack.length-1;0<=a;a--)i=ref.menu_stack[a],!(t=$("#"+i)).is(":visible")||r==t.data("opener")||r==t.get(0)||n.is(t.data("opener"))||i==s||"true"==t.attr("data-editable")&&$(r).parents("#"+i).length||"true"==t.attr("data-sticky")&&rcube_mouse_is_over(e,t.get(0))||ref.hide_menu(i,e),s=t.data("parent")},10,s)}},this.doc_keypress=function(e){function t(e){var t,s,i=e<0?"prevAll":"nextAll",e=e<0?"last":"first";return ref.focused_menu&&(t=$("#"+ref.focused_menu))?(s=(s=t.find(":focus").closest("li")[i]().has(":not([aria-disabled=true])").find("a,input")[e]()).length?s:t.find(":focus").closest("ul")[i]().has(":not([aria-disabled=true])").find("a,input")[e]()).focus().length:0}var s=e.target||{},i=rcube_event.get_keycode(e);if(27==e.keyCode||this.menu_keyboard_active&&"TEXTAREA"!=s.nodeName&&"SELECT"!=s.nodeName)switch(i){case 38:case 40:case 63232:case 63233:return t(38==i||63232==i?-1:1),rcube_event.cancel(e);case 9:return this.focused_menu&&!t(rcube_event.get_modifier(e)==SHIFT_KEY?-1:1)&&this.hide_menu(this.focused_menu,e),rcube_event.cancel(e);case 27:this.menu_stack.length&&this.hide_menu(this.menu_stack[this.menu_stack.length-1],e)}return!0},this.list_keypress=function(e,t){e.modkey!=CONTROL_KEY&&(e.key_pressed==e.DELETE_KEY||e.key_pressed==e.BACKSPACE_KEY?this.command(t&&t.del?t.del:"delete"):33==e.key_pressed?this.command(t&&t.prev?t.prev:"previouspage"):34==e.key_pressed&&this.command(t&&t.next?t.next:"nextpage"))},this.msglist_keypress=function(e){e.key_pressed!=e.ENTER_KEY||this.env.contentframe?this.list_keypress(e):this.command("show")},this.msglist_select=function(e){this.preview_timer&&clearTimeout(this.preview_timer);var s=!1,t=e.get_single_selection(),i=e.get_selection(!1),n=i.length;this.enable_command(this.env.message_commands,null!=t),0<n&&(this.env.multifolder_listing?$.each(i,function(e,t){if(ref.get_message_mailbox(t)==ref.env.drafts_mailbox)return!(s=!0)}):s=this.env.mailbox==this.env.drafts_mailbox),t&&(s?this.enable_command("reply","reply-all","reply-list","forward","forward-inline","forward-attachment","bounce",!1):this.env.messages[t].ml||this.enable_command("reply-list",!1)),this.enable_command("delete","move","copy","mark",0<n),this.enable_command("forward","forward-attachment",!s&&0<n),(t||n&&n!=e.rowcount)&&(this.select_all_mode=!1),t&&this.env.contentframe&&!e.multi_selecting&&!this.dummy_select?(n=(i=(new Date).getTime())-(this._last_msglist_select_time||0),t=this.preview_delay_click,n<this.preview_delay_select&&(t=this.preview_delay_select,this.preview_timer&&clearTimeout(this.preview_timer),this.env.contentframe)&&this.show_contentframe(!1),this._last_msglist_select_time=i,this.preview_timer=setTimeout(function(){ref.msglist_get_preview()},t)):this.env.contentframe&&this.show_contentframe(!1)},this.msglist_dbl_click=function(e){this.preview_timer&&clearTimeout(this.preview_timer);var t,e=e.get_single_selection();e&&((t=this.get_message_mailbox(e))==this.env.drafts_mailbox?this.open_compose_step({_draft_uid:e,_mbox:t}):this.show_message(e))},this.msglist_get_preview=function(){var e=this.get_single_uid();e&&this.env.contentframe&&!this.drag_active?this.show_message(e,!1,!0):this.env.contentframe&&this.show_contentframe(!1)},this.msglist_expand=function(e){this.env.messages[e.uid]&&(this.env.messages[e.uid].expanded=e.expanded),$(e.obj)[e.expanded?"addClass":"removeClass"]("expanded")},this.msglist_set_coltypes=function(e){var t,s,i=e.thead.rows[0].cells;for(this.env.listcols=[],t=0;t<i.length;t++)i[t].id&&i[t].id.startsWith("rcm")&&(s=i[t].id.slice(3),this.env.listcols.push(s));this.msglist_setup(this.env.layout),0<=(e=$.inArray("flag",this.env.listcols))&&(this.env.flagged_col=e),0<=(e=$.inArray("subject",this.env.listcols))&&(this.env.subject_col=e),this.command("save-pref",{name:"list_cols",value:this.env.listcols,session:"list_attrib/columns"})},this.msglist_setup=function(e){(t=this.triggerEvent("msglist_layout",e))&&(e=t),t=this.env["widescreen"==e?"listcols_widescreen":"listcols"],"widescreen"!=e||this.env.threading||(t=$.grep(t,function(e){return"threads"!=e})),this.env.msglist_layout=e,this.env.msglist_cols=t;var e=this.gui_objects.messagelist,t=e.className.split(" ").filter(function(e){return!e.startsWith("sort-")});t.push("sort-"+(this.env.sort_col||"none")),e.className=t.join(" ")},this.check_droptarget=function(e){switch(this.task){case"mail":return!this.env.mailboxes[e]||this.env.mailboxes[e].virtual||this.env.mailboxes[e].id==this.env.mailbox&&!this.is_multifolder_listing()?0:1;case"addressbook":var t;if(e!=this.env.source&&(t=this.env.contactfolders[e]))if("group"==t.type){if(t.id!=this.env.group&&!this.env.contactfolders[t.source].readonly)return!(1<this.env.selection_sources.length||-1==$.inArray(t.source,this.env.selection_sources))||this.commands.move?1:2}else if(!t.readonly&&(1<this.env.selection_sources.length||-1==$.inArray(e,this.env.selection_sources)))return this.commands.move?1:2}return 0},this.open_window=function(e,t,s){var i,n,a,r,o="rcmextwin"+(new Date).getTime();if(e+=(e.match(/\?/)?"&":"?")+"_extwin=1",(r=this.env.standard_windows?window.open(e,o):(a=this.is_framed()?parent.window:window,n=(i=$(a)).width(),i=(bw.mz?$("body",a):i).height(),t=Math.min(t?this.env.popup_width_small:this.env.popup_width,n),n=(a.screenLeft||a.screenX)+20,a=(a.screenTop||a.screenY)+20,window.open(e,o,"width="+t+",height="+i+",top="+a+",left="+n+",resizable=yes,location=no,scrollbars=yes"+(s?",toolbar=yes,menubar=yes,status=yes":",toolbar=no,menubar=no,status=no"))))&&!r.closed)return!e&&r.document&&r.document.write("<html><body>"+this.get_label("loading")+"</body></html>"),this.triggerEvent("openwindow",{url:e,handle:r}),setTimeout(function(){r&&r.focus()},10),r;this.display_message("windowopenerror","warning")},this.init_message_row=function(s){var e={},t=s.uid,i=(null!=this.env.status_col?"status":"msg")+"icn"+s.id;t&&this.env.messages[t]&&$.extend(s,this.env.messages[t]),(s.icon=document.getElementById(i))&&(e.icon=function(e){ref.command("toggle_status",t)}),null!=this.env.status_col?s.msgicon=document.getElementById("msgicn"+s.id):s.msgicon=s.icon,null!=this.env.flagged_col&&(s.flagicon=document.getElementById("flagicn"+s.id))&&(e.flagicon=function(e){ref.command("toggle_flag",t)}),!s.depth&&s.has_children&&(s.expando=document.getElementById("rcmexpando"+s.id))&&(e.expando=function(e){ref.expand_message_row(e,t)}),$.each(e,function(e,t){s[e].onclick=function(e){return t(e),rcube_event.cancel(e)},bw.touch&&s[e].addEventListener&&s[e].addEventListener("touchend",function(e){if(1==e.changedTouches.length)return t(e),rcube_event.cancel(e)},!1)}),this.triggerEvent("insertrow",{uid:t,row:s})},this.add_message_row=function(e,t,s,i){if(!this.gui_objects.messagelist||!this.message_list)return!1;if(s.mbox!=this.env.mailbox&&!s.skip_mbox_check)return!1;if(this.message_list.rows[e])return!1;this.env.messages[e]||(this.env.messages[e]={}),$.extend(this.env.messages[e],{deleted:s.deleted?1:0,replied:s.answered?1:0,unread:s.seen?0:1,forwarded:s.forwarded?1:0,flagged:s.flagged?1:0,has_children:s.has_children?1:0,depth:s.depth||0,unread_children:s.unread_children||0,flagged_children:s.flagged_children||0,parent_uid:s.parent_uid||0,selected:this.select_all_mode||this.message_list.in_selection(e),ml:s.ml?1:0,ctype:s.ctype,mbox:s.mbox,flags:s.extra_flags});var n,a,r,o,l,c="",h="",d="",_="",u=this.message_list,m=u.rows,p=this.env.messages[e],f=this.html_identifier(e,!0),g="message"+(s.seen?"":" unread")+(s.deleted?" deleted":"")+(s.flagged?" flagged":"")+(p.selected?" selected":""),v={cols:[],style:{},id:"rcmrow"+f,uid:e},b=this.env.msglist_layout,y=this.env.msglist_cols;for(n in"widescreen"==b?this.env.status_col=null:0<=(n=$.inArray("status",y))&&(this.env.status_col=n),o="msgicon",null===this.env.status_col&&(o+=" status",s.deleted?(c+=" deleted",h+=this.get_label("deleted")+" "):s.seen?0<s.unread_children&&(c+=" unreadchildren"):(c+=" unread",h+=this.get_label("unread")+" ")),s.answered&&(c+=" replied",h+=this.get_label("replied")+" "),s.forwarded&&(c+=" forwarded",h+=this.get_label("forwarded")+" "),p.selected&&!u.in_selection(e)&&u.selection.push(e),this.env.threading&&(p.depth?(d+='<span id="rcmtab'+f+'" class="branch" style="width:'+15*p.depth+'px;">&nbsp;&nbsp;</span>',m[p.parent_uid]&&!1===m[p.parent_uid].expanded||!(0!=this.env.autoexpand_threads&&2!=this.env.autoexpand_threads||m[p.parent_uid]&&m[p.parent_uid].expanded)?(v.style.display="none",p.expanded=!1):p.expanded=!0,g+=" thread expanded"):p.has_children&&(void 0===p.expanded&&(1==this.env.autoexpand_threads||2==this.env.autoexpand_threads&&p.unread_children)&&(p.expanded=!0),_='<div id="rcmexpando'+v.id+'" class="'+(p.expanded?"expanded":"collapsed")+'">&nbsp;&nbsp;</div>',g+=" thread"+(p.expanded?" expanded":"")),s.unread_children&&s.seen&&!p.expanded&&(g+=" unroot"),s.flagged_children)&&!p.expanded&&(g+=" flaggedroot"),d+='<span id="msgicn'+v.id+'" class="'+o+c+'" title="'+h+'"></span>',v.className=g,t.subject&&(f=s.mbox==this.env.drafts_mailbox?"compose":"show",m=s.mbox==this.env.drafts_mailbox?"_draft_uid":"_uid",(h={_mbox:s.mbox})[m]=e,t.subject='<a href="'+this.url(f,h)+'" onclick="return rcube_event.keyboard_only(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(p.depth+1)+')" tabindex="-1"><span>'+t.subject+"</span></a>"),y)r=y[n],a={className:String(r).toLowerCase(),events:{}},this.env.coltypes[r]&&this.env.coltypes[r].hidden&&(a.className+=" hidden"),r="flag"==r?(o=s.flagged?"flagged":"unflagged",l=this.get_label(o),'<span id="flagicn'+v.id+'" class="'+o+'" title="'+l+'"></span>'):"attachment"==r?(l=this.get_label("withattachment"),s.attachmentClass?'<span class="'+s.attachmentClass+'" title="'+l+'"></span>':"multipart/report"==s.ctype?'<span class="report"></span>':"multipart/encrypted"==s.ctype||"application/pkcs7-mime"==s.ctype?'<span class="encrypted"></span>':s.hasattachment||!s.hasnoattachment&&/application\/|multipart\/(m|signed)/.test(s.ctype)?'<span class="attachment" title="'+l+'"></span>':"&nbsp;"):"status"==r?(l="",s.deleted?l=this.get_label(o="deleted"):s.seen?o=0<s.unread_children?"unreadchildren":"msgicon":l=this.get_label(o="unread"),'<span id="statusicn'+v.id+'" class="'+o+c+'" title="'+l+'"></span>'):"threads"==r?_:"subject"==r?d+t[r]:"priority"==r?0<s.prio&&s.prio<6?(l=this.get_label("priority")+" "+s.prio,'<span class="prio'+s.prio+'" title="'+l+'"></span>'):"&nbsp;":"folder"==r?'<span onmouseover="rcube_webmail.long_subject_title(this)">'+t[r]+"<span>":t[r],a.innerHTML=r,v.cols.push(a);"widescreen"==b&&(v=this.widescreen_message_row(v,e,p)),u.insert_row(v,i),i&&this.env.pagesize&&u.rowcount>this.env.pagesize&&(e=u.get_last_row(),u.remove_row(e),u.clear_selection(e))},this.widescreen_message_row=function(a,e,t){var r=document.createElement("tr");return r.id=a.id,r.uid=a.uid,r.className=a.className,a.style&&$.extend(r.style,a.style),$.each(this.env.widescreen_list_template,function(){if(ref.env.threading||"threads"!=this.className){var e,t,s,i,n=document.createElement("td");for(this.className&&(n.className=this.className),e=0;this.cells&&e<this.cells.length;e++)for(t=0;a.cols&&t<a.cols.length;t++)if(this.cells[e]==a.cols[t].className){s=a.cols[t],(i=document.createElement("span")).className=this.cells[e],"subject"==this.className&&"subject"!=i.className&&(i.className+=" skip-on-drag"),s.innerHTML&&(i.innerHTML=s.innerHTML),n.appendChild(i);break}r.appendChild(n)}}),this.env.threading&&t.depth&&(n=this.calculate_thread_padding(t.depth),$("td.subject",r).attr("style","padding-left:"+n+" !important"),$("span.branch",r).remove()),r},this.calculate_thread_padding=function(e){return ref.env.thread_padding.match(/^([0-9.]+)(.+)/),Math.min(6,e)*parseFloat(RegExp.$1)+RegExp.$2},this.set_list_sorting=function(e,t){var s="arrival"==this.env.sort_col?"date":this.env.sort_col,i="arrival"==e?"date":e;$("#rcm"+s).removeClass("sorted"+this.env.sort_order.toUpperCase()),i&&$("#rcm"+i).addClass("sorted"+t),$("#rcmdate > a").prop("rel","arrival"==e?"arrival":"date"),this.env.sort_col=e,this.env.sort_order=t},this.set_list_options=function(e,t,s,i,n){var a,r={};if(void 0===t&&(t=this.env.sort_col),s=s||this.env.sort_order,this.env.sort_col==t&&this.env.sort_order==s||(a=1,this.set_list_sorting(t,s)),this.env.threading!=i&&(a=1,r._threads=i),n&&this.env.layout!=n&&(this.triggerEvent("layout-change",{old_layout:this.env.layout,new_layout:n}),a=1,this.env.layout=r._layout=n,this.msglist_setup(this.env.layout)),e&&e.length){for(var o,l,c=[],h=this.env.listcols,d=0;d<h.length;d++)l=h[d],-1!=(o=$.inArray(l,e))&&(c.push(l),delete e[o]);for(d=0;d<e.length;d++)e[d]&&c.push(e[d]);c.join()!=h.join()&&(a=1,r._cols=c.join(","))}a&&this.list_mailbox("","",t+"_"+s,r)},this.show_message=function(e,t,s){var i,n,a;e&&(n=window,a=this.params_from_uid(e,{_caps:this.browser_capabilities()}),s&&(i=this.get_frame_window(this.env.contentframe))&&(n=i,a._framed=1),t&&(a._safe=1),this.env.search_request&&(a._search=this.env.search_request),this.env.extwin&&(a._extwin=1),a=this.url(s?"preview":"show",a),s&&(this.preview_id=e),s&&0<=String(n.location.href).indexOf(a)?this.show_contentframe(!0):s||!this.env.message_extwin||this.env.extwin?(t&&document.referrer&&window.history.replaceState&&window.history.replaceState({},"",document.referrer),this.location_href(a,n,!0)):this.open_window(a,!0))},this.set_unread_message=function(e,t){var s=this;(s=!(s=s.message_list?s:s.opener())&&window.parent?parent.rcmail:s)&&s.message_list&&(!1===s.set_message(e,"unread",!1)&&s.set_message(e+"-"+t,"unread",!1),0<s.env.unread_counts[t])&&(--s.env.unread_counts[t],s.set_unread_count(t,s.env.unread_counts[t],"INBOX"==t&&!s.is_multifolder_listing()))},this.show_contentframe=function(e){var t,s=this.env.contentframe;(t=this.get_frame_element(s))&&(!e&&(s=this.get_frame_window(s))?s.location.href.indexOf(this.env.blankpage)<0&&(s.stop?s.stop():s.document.execCommand("Stop"),s.location.href=this.env.blankpage):bw.safari||bw.konq||$(t)[e?"show":"hide"]()),e||(this.unlock_frame(),delete this.preview_id)},this.get_frame_element=function(e){if(e&&(e=document.getElementById(e)))return e},this.get_frame_window=function(e){e=this.get_frame_element(e);if(e&&e.name&&window.frames)return window.frames[e.name]},this.lock_frame=function(e){var t=this.is_framed()?parent.rcmail:this;t.env.frame_lock||(t.env.frame_lock=t.set_busy(!0,"loading"));try{e.frameElement&&$(e.frameElement).on("load.lock",function(e){t.unlock_frame(),$(this).off("load.lock")})}catch(e){}},this.unlock_frame=function(){this.env.frame_lock&&(this.set_busy(!1,null,this.env.frame_lock),this.env.frame_lock=null)},this.list_page=function(e){"next"==e?e=this.env.current_page+1:"last"==e?e=this.env.pagecount:"prev"==e&&1<this.env.current_page?e=this.env.current_page-1:"first"==e&&1<this.env.current_page&&(e=1),0<e&&e<=this.env.pagecount&&(this.env.current_page=e,"addressbook"==this.task||this.contact_list?this.list_contacts(this.env.source,this.env.group,e):"mail"==this.task&&this.list_mailbox(this.env.mailbox,e))},this.checkmail=function(){var e=this.set_busy(!0,"checkingmail"),t=this.check_recent_params();this.http_post("check-recent",t,e)},this.filter_mailbox=function(e){var t,s;this.filter_disabled||(t=this.search_params(!1,e),s=this.set_busy(!0,"searching"),this.clear_message_list(),this.env.current_page=1,this.env.search_filter=e,this.http_request("search",t,s),this.update_state({_mbox:t._mbox,_filter:e,_scope:t._scope}))},this.refresh_list=function(){this.list_mailbox(this.env.mailbox,this.env.current_page||1,null,{_clear:1},!0),this.message_list&&this.message_list.clear_selection()},this.list_mailbox=function(e,t,s,i,n){var a=window;"object"!=typeof i&&(i={}),e=e||this.env.mailbox||"INBOX",s&&(i._sort=s),this.env.mailbox!=e?(this.env.current_page=t=1,this.env.search_scope="base",this.select_all_mode=!1,this.reset_search_filter()):this.env.search_request&&(i._search=this.env.search_request),n||(this.clear_message_list(),e==this.env.mailbox&&(e!=this.env.mailbox||t||s)||(i._refresh=1),this.select_folder(e,"",!0),this.unmark_folder(e,"recent","",!0),this.env.mailbox=e),this.gui_objects.messagelist?this.list_mailbox_remote(e,t,i):((n=this.get_frame_window(this.env.contentframe))&&(a=n,i._framed=1),this.env.uid&&(i._uid=this.env.uid),t&&(i._page=t),e&&(i._mbox=e,this.set_busy(!0,"loading"),this.location_href(i,a)))},this.clear_message_list=function(){this.env.messages={},this.show_contentframe(!1),this.message_list&&this.message_list.clear(!0)},this.list_mailbox_remote=function(e,t,s){var i=this.set_busy(!0,"loading");(s="object"!=typeof s?{}:s)._layout=this.env.layout,s._mbox=e,s._page=t,this.http_request("list",s,i),this.update_state({_mbox:e,_page:t&&1<t?t:null})},this.update_selection=function(){var e,t=this.message_list,s=t.selection,i=t.rows,n=[];for(e in s)i[s[e]]&&n.push(s[e]);t.selection=n;try{var a=this.get_frame_window(this.env.contentframe).rcmail.env.uid;a&&!t.in_selection(a)&&this.show_contentframe(!1)}catch(e){}},this.expand_unread=function(){for(var e,t=this.message_list.tbody.firstChild;t;)1==t.nodeType&&(e=this.message_list.rows[t.uid])&&e.unread_children&&(this.message_list.expand_all(e),this.set_unread_children(e.uid)),t=t.nextSibling;return!1},this.expand_message_row=function(e,t){var s=this.message_list.rows[t];s.expanded=!s.expanded,this.set_unread_children(t),this.set_flagged_children(t),s.expanded=!s.expanded,this.message_list.expand_row(e,t)},this.expand_threads=function(){if(this.env.threading&&this.env.autoexpand_threads&&this.message_list)switch(this.env.autoexpand_threads){case 2:this.expand_unread();break;case 1:this.message_list.expand_all()}},this.init_threads=function(e,t){if(t&&t!=this.env.mailbox)return!1;for(var s=0,i=e.length;s<i;s++)this.add_tree_icons(e[s]);this.expand_threads()},this.add_tree_icons=function(e){for(var t,s,i,n,a=[],r=[],o=this.message_list.rows,l=e?o[e]?o[e].obj:null:this.message_list.tbody.firstChild;l;){if(1==l.nodeType&&(s=o[l.uid]))if(s.depth){for(t=a.length-1;0<=t&&((i=a[t].length)>s.depth?(n=i-s.depth,2&a[t][n]||(a[t][n]=a[t][n]?a[t][n]+2:2)):i!=s.depth||2&a[t][0]||(a[t][0]+=2),!(s.depth>i));t--);a.push(new Array(s.depth)),a[a.length-1][0]=1,r.push(s.uid)}else{if(a.length){for(t in a)this.set_tree_icons(r[t],a[t]);a=[],r=[]}if(e&&l!=o[e].obj)break}l=l.nextSibling}if(a.length)for(t in a)this.set_tree_icons(r[t],a[t])},this.set_tree_icons=function(e,t){for(var s=[],i="",n=t.length,a=0;a<n;a++)2<t[a]?s.push({class:"l3",width:15}):1<t[a]?s.push({class:"l2",width:15}):0<t[a]?s.push({class:"l1",width:15}):s.length&&!s[s.length-1].class?s[s.length-1].width+=15:s.push({class:null,width:15});for(a=s.length-1;0<=a;a--)s[a].class?i+='<div class="tree '+s[a].class+'" />':i+='<div style="width:'+s[a].width+'px" />';i&&$("#rcmtab"+this.html_identifier(e,!0)).html(i)},this.update_thread_root=function(e,t){if(this.env.threading){var s=this.message_list.find_root(e);if(e!=s){e=this.message_list.rows[s];if("read"==t&&e.unread_children)e.unread_children--;else if("unread"==t&&e.has_children)e.unread_children=(e.unread_children||0)+1;else if("unflagged"==t&&e.flagged_children)e.flagged_children--;else{if("flagged"!=t||!e.has_children)return;e.flagged_children=(e.flagged_children||0)+1}this.set_message_icon(s),this.set_unread_children(s),this.set_flagged_children(s)}}},this.update_thread=function(e){if(!this.env.threading||!this.message_list.rows[e])return 0;var t,s,i=0,n=this.message_list,a=n.rows,r=a[e],o=a[e].depth,l=[];for(r.depth||i--,r.depth&&r.unread&&(a[s=n.find_root(e)].unread_children--,this.set_unread_children(s)),r.depth&&r.flagged&&(a[s=n.find_root(e)].flagged_children--,this.set_flagged_children(s)),s=r.parent_uid,r=r.obj.nextSibling;r;){if(1==r.nodeType&&(t=a[r.uid])){if(!t.depth||t.depth<=o)break;t.depth--,$("#rcmtab"+t.id).width(15*t.depth).html(""),t.depth?(t.depth==o&&(t.parent_uid=s),t.unread&&l.length&&l[l.length-1].unread_children++):(i++,t.parent_uid=0,t.has_children&&($("#"+t.id+" .leaf").first().attr("id","rcmexpando"+t.id).attr("class","none"!=t.obj.style.display?"expanded":"collapsed").mousedown({uid:t.uid},function(e){return ref.expand_message_row(e,e.data.uid)}),t.unread_children=0,l.push(t)),"none"==t.obj.style.display&&$(t.obj).show())}r=r.nextSibling}for(t=0;t<l.length;t++)this.set_unread_children(l[t].uid),this.set_flagged_children(l[t].uid);return i},this.delete_excessive_thread_rows=function(){for(var e=this.message_list.rows,t=this.message_list.tbody.firstChild,s=this.env.pagesize+1;t;)1==t.nodeType&&(r=e[t.uid])&&(!r.depth&&s&&s--,s||this.message_list.remove_row(t.uid)),t=t.nextSibling},this.set_message_icon=function(e){var t,s="",e=this.message_list.rows[e];if(!e)return!1;e.icon&&(t="msgicon",e.deleted?(t+=" deleted",s+=this.get_label("deleted")+" "):e.unread?(t+=" unread",s+=this.get_label("unread")+" "):e.unread_children&&(t+=" unreadchildren"),e.msgicon==e.icon&&(e.replied&&(t+=" replied",s+=this.get_label("replied")+" "),e.forwarded&&(t+=" forwarded",s+=this.get_label("forwarded")+" "),t+=" status"),$(e.icon).attr({class:t,title:s})),e.msgicon&&e.msgicon!=e.icon&&(s="",t="msgicon",!e.unread&&e.unread_children&&(t+=" unreadchildren"),e.replied&&(t+=" replied",s+=this.get_label("replied")+" "),e.forwarded&&(t+=" forwarded",s+=this.get_label("forwarded")+" "),$(e.msgicon).attr({class:t,title:s})),e.flagicon&&(t=e.flagged?"flagged":"unflagged",s=this.get_label(t),$(e.flagicon).attr("class",t).attr({"aria-label":s,title:s}))},this.set_message_status=function(e,t,s){var i=this.message_list.rows[e];if(!i)return!1;"unread"==t?i.unread!=s&&this.update_thread_root(e,s?"unread":"read"):"flagged"==t&&this.update_thread_root(e,s?"flagged":"unflagged"),-1<$.inArray(t,["unread","deleted","replied","forwarded","flagged"])&&(i[t]=s)},this.set_message=function(e,t,s){var i=this.message_list&&this.message_list.rows[e];if(!i)return!1;t&&this.set_message_status(e,t,s),-1<$.inArray(t,["unread","deleted","flagged"])&&$(i.obj)[i[t]?"addClass":"removeClass"](t),this.set_unread_children(e),this.set_message_icon(e)},this.set_unread_children=function(e){var t,e=this.message_list.rows[e];e.parent_uid||(t=!e.unread&&e.unread_children&&!e.expanded,$(e.obj)[t?"addClass":"removeClass"]("unroot"))},this.set_flagged_children=function(e){var t,e=this.message_list.rows[e];e.parent_uid||(t=e.flagged_children&&!e.expanded,$(e.obj)[t?"addClass":"removeClass"]("flaggedroot"))},this.copy_messages=function(e,s,i){if(e&&"object"==typeof e)e.uids&&(i=e.uids),e=e.id;else if(!e)return i=this.env.uid?[this.env.uid]:this.message_list.get_selection(),this.folder_selector(s,function(e,t){ref.command("copy",{id:e,uids:i},t,s,!0)});e&&e!=this.env.mailbox&&(e=this.selection_post_data({_target_mbox:e,_uid:i}))._uid&&this.http_post("copy",e,this.display_message("copyingmessage","loading"))},this.move_messages=function(e,s,i){if(e&&"object"==typeof e)e.uids&&(i=e.uids),e=e.id;else if(!e)return i=this.env.uid?[this.env.uid]:this.message_list.get_selection(),this.folder_selector(s,function(e,t){ref.command("move",{id:e,uids:i},t,s,!0)});var t;e&&(e!=this.env.mailbox||this.is_multifolder_listing())&&(t=!1,(e=this.selection_post_data({_target_mbox:e,_uid:i}))._uid)&&("show"==this.env.action&&(t=this.set_busy(!0,"movingmessage")),this.enable_command(this.env.message_commands,!1),this.with_selected_messages("move",e,t),"show"!=this.env.action)&&this.show_contentframe(!1)},this.delete_messages=function(e){var t=this.message_list,s=this.env.trash_mailbox;return this.env.flag_for_deletion?(this.mark_message("delete"),!1):(!s||this.env.mailbox==s||this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox?this.permanently_remove_messages():t&&t.modkey==SHIFT_KEY||e&&rcube_event.get_modifier(e)==SHIFT_KEY?this.confirm_dialog(this.get_label("deletemessagesconfirm"),"delete",function(){ref.permanently_remove_messages()}):this.move_messages(s),!0)},this.permanently_remove_messages=function(){var e=this.selection_post_data();e._uid&&(this.with_selected_messages("delete",e),this.show_contentframe(!1))},this.with_selected_messages=function(e,t,s,i){var n=0,a="delete"==e||!this.is_multifolder_listing();if(this.message_list){var r,o,l,c,h=[],d=t._uid,_=this.check_display_next();for("*"===d?d=this.message_list.get_selection():"string"==typeof d&&(d=d.split(",")),r=0,o=d.length;r<o;r++)l=d[r],this.env.threading&&(n+=this.update_thread(l),(c=this.message_list.find_root(l))!=l)&&$.inArray(c,h)<0&&h.push(c),a&&this.message_list.remove_row(l,_&&r==d.length-1);for(!_&&a&&this.message_list.clear_selection(),r=0,o=h.length;r<o;r++)this.add_tree_icons(h[r])}n<0?t._count=-1*n:0<n&&a&&this.delete_excessive_thread_rows(),a||(t._refresh=1),s=s||this.display_message("move"==e?"movingmessage":"deletingmessage","loading"),this.http_post(i||e,t,s)},this.selection_post_data=function(e){return(e="object"!=typeof e?{}:e)._uid||(e._uid=this.env.uid?[this.env.uid]:this.message_list.get_selection()),e._mbox=this.env.mailbox,e._uid=this.uids_to_list(e._uid),this.env.action&&(e._from=this.env.action),this.env.search_request&&(e._search=this.env.search_request),this.env.display_next&&this.env.next_uid&&(e._next_uid=this.env.next_uid),e},this.check_display_next=function(){return this.env.display_next&&(this.preview_id||!this.env.contentframe)},this.mark_message=function(e,t){var s,i,n,a=[],r=[],o=this.message_list;if(t?a.push(t):this.env.uid?a.push(this.env.uid):o&&(a=o.get_selection()),o)for(o.focus(),i=0,s=a.length;i<s;i++)n=a[i],("read"==e&&o.rows[n].unread||"unread"==e&&!o.rows[n].unread||"delete"==e&&!o.rows[n].deleted||"undelete"==e&&o.rows[n].deleted||"flagged"==e&&!o.rows[n].flagged||"unflagged"==e&&o.rows[n].flagged)&&r.push(n);else r=a;if(r.length||this.select_all_mode)switch(e){case"read":case"unread":this.toggle_read_status(e,r);break;case"delete":case"undelete":this.toggle_delete_status(r);break;case"flagged":case"unflagged":this.toggle_flagged_status(e,a)}},this.toggle_read_status=function(e,t){for(var s=t.length,i=this.selection_post_data({_uid:t,_flag:e}),n=this.display_message("markingmessage","loading"),a=0;a<s;a++)this.set_message(t[a],"unread","unread"==e);this.http_post("mark",i,n)},this.toggle_flagged_status=function(e,t){for(var s=t.length,i=this.env.contentframe?this.get_frame_window(this.env.contentframe):window,n=this.selection_post_data({_uid:t,_flag:e}),a=this.display_message("markingmessage","loading"),r=0;r<s;r++)this.set_message(t[r],"flagged","flagged"==e);("show"==this.env.action||0<=$.inArray(this.preview_id,t))&&$(i.document.body)["flagged"==e?"addClass":"removeClass"]("status-flagged"),this.http_post("mark",n,a)},this.toggle_delete_status=function(e){var t,s,i=!0,n=e.length,a=this.message_list?this.message_list.rows:{};if(1==n)!this.message_list||a[e[0]]&&!a[e[0]].deleted?this.flag_as_deleted(e):this.flag_as_undeleted(e);else{for(t=0;t<n;t++)if(a[s=e[t]]&&!a[s].deleted){i=!1;break}i?this.flag_as_undeleted(e):this.flag_as_deleted(e)}return!0},this.flag_as_undeleted=function(e){for(var t=e.length,s=this.selection_post_data({_uid:e,_flag:"undelete"}),i=this.display_message("markingmessage","loading"),n=0;n<t;n++)this.set_message(e[n],"deleted",!1);this.http_post("mark",s,i)},this.flag_as_deleted=function(e){for(var t=[],s=this.selection_post_data({_uid:e,_flag:"delete"}),i=this.display_message("markingmessage","loading"),n=this.message_list,a=n?n.rows:{},r=0,o=this.check_display_next(),l=0,c=e.length;l<c;l++)a[uid=e[l]]&&(a[uid].unread&&(t[t.length]=uid),this.env.skip_deleted?(r+=this.update_thread(uid),n.remove_row(uid,o&&l==n.get_selection(!1).length-1)):this.set_message(uid,"deleted",!0));this.env.skip_deleted&&n&&(o&&n.rowcount||n.clear_selection(),r<0?s._count=-1*r:0<r&&this.delete_excessive_thread_rows()),t.length&&(s._ruid=this.uids_to_list(t)),this.env.skip_deleted&&this.env.display_next&&this.env.next_uid&&(s._next_uid=this.env.next_uid),this.http_post("mark",s,i)},this.flag_deleted_as_read=function(e){for(var t,s=this.message_list?this.message_list.rows:{},i=0,n=(e="string"==typeof e?e.split(","):e).length;i<n;i++)s[t=e[i]]&&this.set_message(t,"unread",!1)},this.uids_to_list=function(e){return this.select_all_mode?"*":!$.isArray(e)||1!=e.length&&-1!=String(e[0]).indexOf("-")?e:e.join(",")},this.set_button_titles=function(){var e="deletemessage";this.env.flag_for_deletion||!this.env.trash_mailbox||this.env.mailbox==this.env.trash_mailbox||this.env.delete_junk&&this.env.junk_mailbox&&this.env.mailbox==this.env.junk_mailbox||(e="movemessagetotrash"),this.set_alttext("delete",e)},this.init_pagejumper=function(a){$(a).addClass("rcpagejumper").on("focus",function(e){for(var t="",s=1;s<=ref.env.pagecount;s++)t+="<li>"+s+"</li>";t='<ul class="toolbarmenu menu">'+t+"</ul>",ref.pagejump||(ref.pagejump=$('<div id="pagejump-selector" class="popupmenu"></div>').appendTo(document.body).on("click","li",function(){ref.busy||$(a).val($(this).text()).change()})),ref.pagejump.data("count")!=s&&ref.pagejump.html(t),ref.pagejump.attr("rel","#"+this.id).data("count",s),ref.show_menu("pagejump-selector",!0,e)}).on("keydown keyup click",function(e){var t=$("#pagejump-selector"),s=$("ul",t),i=$("li",s),n=(s.height(),parseInt(this.value));if(27!=e.which&&9!=e.which&&13!=e.which&&!t.is(":visible"))return ref.show_menu("pagejump-selector",!0,e);if("keydown"==e.type)if(40==e.which)i.length>n&&(this.value=n+=1);else if(38==e.which)1<n&&i.length>n-1&&(this.value=--n);else{if(13==e.which)return $(this).change();if(27==e.which||9==e.which)return ref.hide_menu("pagejump-selector",e),$(a).val(ref.env.current_page)}$("li.selected",s).removeClass("selected"),(e=$(i[n-1])).length&&(e.addClass("selected"),$("#pagejump-selector").scrollTop(s.height()/i.length*(n-1)-t.height()/2))}).on("change",function(e){var t=parseInt(this.value);t&&t!=ref.env.current_page&&!ref.busy&&(ref.hide_menu("pagejump-selector",e),ref.list_page(t))})},this.update_pagejumper=function(){$("input.rcpagejumper").val(this.env.current_page).prop("disabled",this.env.pagecount<2)},this.check_mailvelope=function(e){window.mailvelope?this.mailvelope_load(e):$(window).on("mailvelope",function(){ref.mailvelope_load(e)})},this.mailvelope_load=function(t){function s(e){ref.mailvelope_keyring=e,ref.mailvelope_init(t,e)}var i=this.env.mailvelope_main_keyring?void 0:this.env.user_id;mailvelope.getVersion().then(function(e){return mailvelope.VERSION=e,mailvelope.VERSION_MAJOR=Math.floor(parseFloat(e)),mailvelope.getKeyring(i)}).then(s,function(e){i?mailvelope.createKeyring(i).then(s,function(e){console.error(e)}):console.error(e)})},this.mailvelope_init=function(e,t){var s,i,n,a,r,o;window.mailvelope&&("show"==e||"preview"==e||"print"==e?this.env.is_pgp_content?(s=$(this.env.is_pgp_content).text(),ref.mailvelope_display_container(this.env.is_pgp_content,s,t)):this.env.pgp_mime_part&&(i=this.display_message("loadingdata","loading"),n=this.env.pgp_mime_container,$.ajax({type:"GET",url:this.url("get",{_mbox:this.env.mailbox,_uid:this.env.uid,_part:this.env.pgp_mime_part}),error:function(e,t,s){ref.http_error(e,t,s,i)},success:function(e){ref.mailvelope_display_container(n,e,t,i)}})):"compose"==e?(this.env.compose_commands.push("compose-encrypted"),a=2<=mailvelope.VERSION_MAJOR,r=0<$('[name="_is_html"]').val(),a&&this.env.compose_commands.push("compose-encrypted-signed"),this.env.pgp_mime_message?(o=this.set_busy(!0,this.get_label("loadingdata")),$.ajax({type:"GET",url:this.url("get",this.env.pgp_mime_message),error:function(e,t,s){ref.http_error(e,t,s,o),ref.enable_command("compose-encrypted",!r),a&&ref.enable_command("compose-encrypted-signed",!r)},success:function(e){ref.set_busy(!1,null,o),r&&(ref.command("toggle-editor",{html:!1,noconvert:!0}),$("#"+ref.env.composebody).val("")),ref.compose_encrypted({quotedMail:e}),ref.enable_command("compose-encrypted",!0),ref.enable_command("compose-encrypted-signed",!1)}})):(this.enable_command("compose-encrypted",!r),a&&this.enable_command("compose-encrypted-signed",!r)),this.addEventListener("actionafter",function(e){e.ret&&"toggle-editor"==e.action&&(ref.enable_command("compose-encrypted",!e.props.html),a)&&ref.enable_command("compose-encrypted-signed",!e.props.html)})):"edit-identity"==e&&ref.mailvelope_identity_keygen())},this.compose_encrypted_signed=function(e){(e=e||{}).signMsg=!0,this.compose_encrypted(e)},this.compose_encrypted=function(e){var t,s=$("#"+this.env.composebody).parent();ref.mailvelope_editor?(ref.mailvelope_editor=null,ref.set_button("compose-encrypted","act"),s.removeClass("mailvelope").find("iframe:not([aria-hidden=true])").remove(),$("#"+ref.env.composebody).show(),$("[name='_pgpmime']").remove(),ref.enable_command("toggle-editor","insert-response",!0),ref.enable_command("spellcheck",!!window.googie),ref.enable_command("insert-sig",!!(ref.env.signatures&&ref.env.identity&&ref.env.signatures[ref.env.identity])),ref.triggerEvent("compose-encrypted",{active:!1})):(this.spellcheck_state()&&this.editor.spellcheck_stop(),t=e.quotedMail?{quotedMail:e.quotedMail,quotedMailIndent:!1}:{predefinedText:$("#"+this.env.composebody).val()},e.signMsg&&(t.signMsg=e.signMsg),"reply"==this.env.compose_mode&&(t.quotedMailIndent=!0,t.quotedMailHeader=this.env.compose_reply_header),mailvelope.createEditorContainer("#"+s.attr("id"),ref.mailvelope_keyring,t).then(function(e){ref.mailvelope_editor=e,ref.set_button("compose-encrypted","sel"),s.addClass("mailvelope"),$("#"+ref.env.composebody).hide(),ref.enable_command("spellcheck","insert-sig","toggle-editor","insert-response",!1),ref.triggerEvent("compose-encrypted",{active:!0}),$.isEmptyObject(ref.env.attachments)||("draft"==ref.env.compose_mode&&1==Object.keys(ref.env.attachments).length&&"encrypted.asc"==ref.env.attachments[Object.keys(ref.env.attachments)[0]].name||ref.alert_dialog(ref.get_label("encryptnoattachments")),$.each(ref.env.attachments,function(e,t){ref.remove_from_attachment_list(e)}))},function(e){console.error(e),console.log(t)}))},this.mailvelope_submit_messageform=function(a,r){var o=[],l=($.each(["to","cc","bcc"],function(e,t){for(var s,i=$('[name="_'+t+'"]').val().trim();i.length&&rcube_check_email(i,!0);)s=RegExp.$2.replace(/^<+/,"").replace(/>+$/,""),o.push(s),i=i.substr(i.indexOf(s)+s.length+1).replace(/^\s*,\s*/,"")}),0<o.length);return ref.mailvelope_keyring.validKeyForAddress(o).then(function(e){var s,i,n=[];return $.each(e,function(e,t){!1===t&&(l=!1,n.push(e))}),!l&&n.length?(ref.simple_dialog(ref.get_label("nopubkeyfor").replace("$email",n.join(", "))+"<p>"+ref.get_label("searchpubkeyservers")+"</p>","encryptedsendialog",function(){ref.mailvelope_search_pubkeys(n,function(){return!0})},{button:"search"}),!1):l?(s=[],i=ref.env.identities[$("[name='_from'] option:selected").val()],$.each(ref.env.identities,function(e,t){s.push(t.email)}),void ref.mailvelope_keyring.validKeyForAddress(s).then(function(e){if(valid_sender=null,$.each(e,function(e,t){if(!1!==t&&(valid_sender=e)==i)return!1}),!valid_sender&&!confirm(ref.get_label("nopubkeyforsender")))return!1;o.push(valid_sender),ref.mailvelope_editor.encrypt(o).then(function(e){var t=ref.gui_objects.messageform,s=$("[name='_pgpmime']",t),i=ref.set_busy(!0,a||r?"savingmessage":"sendingmessage");t.target=ref.get_save_target(i),t._draft.value=a?"1":"",t.action=ref.add_url(t.action,"_unlock",i),t.action=ref.add_url(t.action,"_framed",1),r&&(t.action=ref.add_url(t.action,"_saveonly",1)),(s=s.length?s:$('<input type="hidden" name="_pgpmime">').appendTo(t)).val(e),t.submit()},function(e){console.log(e)})},function(e){console.error(e)})):(o.length||ref.alert_dialog(ref.get_label("norecipientwarning"),function(){$("[name='_to']").focus()}),!1)},function(e){console.error(e)}),!1},this.mailvelope_display_container=function(t,e,s,i){function n(e){$(t+" > iframe").remove(),ref.hide_message(i),ref.display_message(e.message,"error")}mailvelope.createDisplayContainer(t,e,s,{senderAddress:this.env.sender}).then(function(e){if(e.error&&e.error.message)return n(e.error);ref.hide_message(i),$(t).children().not("iframe").hide(),$(ref.gui_objects.messagebody).addClass("mailvelope"),ref.env.pgp_mime_part&&$("#attach"+ref.env.pgp_mime_part).remove(),setTimeout(function(){$(window).resize()},10)},n)},this.mailvelope_search_pubkeys=function(e,t,s){var n=[],a=new PublicKey(this.env.keyservers),r=ref.display_message("","loading");$.each(e,function(e,s){var i=$.Deferred();a.search(s,function(e,t){null!==t?i.resolve([s]):i.resolve([s].concat(e))}),n.push(i)}),$.when.apply($,n).then(function(){var i=[],n=[];$.each(arguments,function(e,t){var s=t.shift();t.length?n=n.concat(t):i.push(s)}),ref.hide_message(r),t(!0),n.length&&ref.mailvelope_key_import_dialog(n,s),i.length&&ref.display_message(ref.get_label("nopubkeyfor").replace("$email",i.join(", ")),"warning")}).fail(function(){console.error("Pubkey lookup failed with",arguments),ref.hide_message(r),ref.display_message("pubkeysearcherror","error"),t(!1)})},this.mailvelope_key_import_dialog=function(e,a){var n=$("<div>").addClass("listing pgpkeyimport");$.each(e,function(e,t){var s=$("<div>").addClass("key"),i=(t.revoked&&s.addClass("revoked"),t.disabled&&s.addClass("disabled"),t.expired&&s.addClass("expired"),s.append($("<label>").addClass("keyid").text(ref.get_label("keyid"))),s.append($("<a>").text(t.keyid.substr(-8).toUpperCase()).attr({href:t.info,target:"_blank",tabindex:"-1"})),s.append($("<label>").addClass("keylen").text(ref.get_label("keylength"))),s.append($("<span>").text(t.keylen)),t.expirationdate&&(s.append($("<label>").addClass("keyexpired").text(ref.get_label("keyexpired"))),s.append($("<span>").text(new Date(1e3*t.expirationdate).toDateString()))),t.revoked&&s.append($("<span>").addClass("keyrevoked").text(ref.get_label("keyrevoked"))),$("<ul>").addClass("uids"));$.each(t.uids,function(e,t){var s=$("<li>").addClass("uid");t.revoked&&s.addClass("revoked"),t.disabled&&s.addClass("disabled"),t.expired&&s.addClass("expired"),i.append(s.text(t.uid))}),s.append(i),s.append($("<button>").attr("rel",t.keyid).text(ref.get_label("import")).addClass("button import importkey").prop("disabled",t.revoked||t.disabled||t.expired)),n.append(s)}),ref.simple_dialog($("<div>").append($("<p>").html(ref.get_label("encryptpubkeysfound"))).append(n),"importpubkeys",null,{cancel_label:"close",cancel_button:"close"}),n.on("click","button.importkey",function(){var s=$(this),i=s.attr("rel"),e=new PublicKey(ref.env.keyservers),n=ref.display_message("","loading");e.get(i,function(e,t){ref.hide_message(n),t?ref.display_message("keyservererror","error"):a?a(e):ref.mailvelope_keyring.importPublicKey(e).then(function(e){"REJECTED"!==e&&(e=i.substr(-8).toUpperCase(),s.closest(".key").fadeOut(),ref.display_message(ref.get_label("keyimportsuccess").replace("$key",e),"confirmation"))},function(e){console.log(e)})})})},this.mailvelope_identity_keygen=function(){var i=$(this.gui_objects.editform).find(".identity-encryption").first(),n=$(this.gui_objects.editform).find(".ff_email").val().trim();i.length&&n&&this.mailvelope_keyring.createKeyGenContainer&&this.mailvelope_keyring.validKeyForAddress([n]).then(function(e){var s=[];if(e&&e[n]&&Array.isArray(e[n].keys)){for(var t=[],i=0;i<e[n].keys.length;i++)t.push(function(t){return ref.mailvelope_keyring.hasPrivateKey(t.fingerprint).then(function(e){e&&s.push(t)})}(e[n].keys[i]));return Promise.all(t).then(function(){return s})}return s}).then(function(e){var s,t=i.find(".identity-encryption-block").empty();e&&e.length?($("<p>").text(ref.get_label("encryptionprivkeysinmailvelope").replace("$nr",e.length)).appendTo(t),s=$("<ul>").addClass("keylist").appendTo(t),$.each(e,function(e,t){$("<li>").appendTo(s).append($("<strong>").addClass("fingerprint").text(String(t.fingerprint).toUpperCase())).append($("<span>").addClass("identity").text("<"+n+"> "))})):$("<p>").text(ref.get_label("encryptionnoprivkeysinmailvelope")).appendTo(t),$("<button>").attr("type","button").addClass("button create").text(ref.get_label("encryptioncreatekey")).appendTo(t).on("click",function(){ref.mailvelope_show_keygen_container(t,n)}),$("<span>").addClass("space").html("&nbsp;").appendTo(t),$("<button>").attr("type","button").addClass("button settings").text(ref.get_label("openmailvelopesettings")).appendTo(t).on("click",function(){ref.mailvelope_keyring.openSettings()}),i.show(),ref.triggerEvent("identity-encryption-show",{container:i})}).catch(function(e){console.error("Mailvelope keyring error",e)})},this.mailvelope_show_keygen_container=function(t,s){var e=(new Date).getTime(),i={userIds:[{email:s,fullName:$(ref.gui_objects.editform).find(".ff_name").val().trim()}],keySize:this.env.mailvelope_keysize};$("<div>").attr("id","mailvelope-keygen-container-"+e).css({height:"245px",marginBottom:"10px"}).appendTo(t.empty()),this.mailvelope_keyring.createKeyGenContainer("#mailvelope-keygen-container-"+e,i).then(function(e){if(e instanceof Error)throw e;$("<button>").attr("type","button").addClass("button mainaction generate").text(ref.get_label("generate")).appendTo(t).on("click",function(){var t=$(this).prop("disabled",!0);e.generate().then(function(e){"string"==typeof e&&0<e.indexOf("BEGIN PGP")&&(ref.display_message(ref.get_label("keypaircreatesuccess").replace("$identity",s),"confirmation"),ref.mailvelope_identity_keygen())}).catch(function(e){ref.display_message(e.message||"errortitle","error"),t.prop("disabled",!1)})}),$("<span>").addClass("space").html("&nbsp;").appendTo(t),$("<button>").attr("type","button").addClass("button cancel").text(ref.get_label("cancel")).appendTo(t).on("click",function(){ref.mailvelope_identity_keygen()}),ref.triggerEvent("identity-encryption-update",{container:t})}).catch(function(e){ref.display_message("errortitle","error"),ref.mailvelope_identity_keygen()})},this.mdn_request_dialog=function(e,t){var i={action:"mark",data:{_uid:e,_mbox:t,_flag:"mdnsent"}},e=[{text:this.get_label("send"),class:"mainaction send",click:function(e,t,s){i.action="sendmdn",(ref.is_framed()?parent.$:$)(s||this).dialog("close")}},{text:this.get_label("ignore"),class:"cancel",click:function(e,t,s){(ref.is_framed()?parent.$:$)(s||this).dialog("close")}}];this.env.mdn_request_save&&e.unshift({text:this.get_label("sendalwaysto").replace("$email",this.env.mdn_request_sender.mailto),class:"mainaction send",click:function(e,t,s){i.data._save=ref.env.mdn_request_save,i.data._address=ref.env.mdn_request_sender.string,$(e.target).next().click()}}),this.show_popup_dialog(this.get_label("mdnrequest"),this.get_label("sendreceipt"),e,{close:function(e,t){ref.http_post(i.action,i.data),$(this).remove()}})},this.expunge_mailbox=function(e){var t,s={_mbox:e};e==this.env.mailbox&&(t=this.set_busy(!0,"loading"),s._reload=1,this.env.search_request)&&(s._search=this.env.search_request),this.http_post("expunge",s,t)},this.purge_mailbox=function(s){return this.confirm_dialog(this.get_label("purgefolderconfirm"),"delete",function(){var e,t={_mbox:s};s==ref.env.mailbox&&(e=ref.set_busy(!0,"loading"),t._reload=1),ref.http_post("purge",t,e)}),!1},this.mark_all_read=function(e,s){var n,t,a=[],i=this.message_list,r=e||this.env.mailbox,e={_uid:"*",_flag:"read",_mbox:r,_folders:s};if("string"!=typeof s){if(!(n=this.mark_all_read_state(r)))return;if(1<n)return $.each({cur:1,sub:2,all:4},function(e,t){var s="readallmode"+e,i=$("<label>").attr("for",s).text(ref.get_label("folders-"+e)),e=$("<input>").attr({type:"radio",value:e,name:"mode",id:s,disabled:!(n&t)});a.push($("<li>").append([e,i]))}),t=$('<ul class="proplist">').append(a),$("input:not([disabled])",t).first().attr("checked",!0),void this.simple_dialog(t,"markallread",function(){return ref.mark_all_read(r,$("input:checked",t).val()),!0},{button:"mark",button_class:"save"});e._folders="cur"}$.each(i?i.rows:[],function(e,t){t.unread&&(t=ref.env.messages[e].mbox,"all"==s||t==ref.env.mailbox||"sub"==s&&t.startsWith(ref.env.mailbox+ref.env.delimiter))&&ref.set_message(e,"unread",!1)}),this.http_post("mark",e,this.display_message("markingmessage","loading"))},this.mark_all_read_state=function(e){var t=0,e=this.treelist.get_item(e||this.env.mailbox),s=$(e).is(".unread")?1:0,e=$("li.unread",e).length,i=$("li.unread",ref.gui_objects.folderlist).length;return this.enable_command("mark-all-read",0<(t=(t+=s)+(e?2:0)+(s+e<i?4:0))),t},this.bounce=function(e,t,s){var i=this.get_single_uid(),i=this.url("bounce",{_framed:1,_uid:i,_mbox:this.get_message_mailbox(i)}),n=$("<iframe>").attr("src",i),a=function(){var e=$("iframe",n)[0].contentWindow.rcmail;return{rc:e,form:e.gui_objects.messageform}},r=function(){var e={},t=a();$.each($(t.form).serializeArray(),function(){e[this.name]=this.value}),e._uid=t.rc.env.uid,e._mbox=t.rc.env.mailbox,delete e._action,delete e._task,(e._to||e._cc||e._bcc)&&(ref.http_post("bounce",e,ref.set_busy(!0,"sendingmessage")),n.dialog("close"))};return this.hide_menu("forwardmenu",s),n=this.simple_dialog(n,"bouncemsg",function(){var e=a();return"object"==typeof e.form&&!!e.rc.check_compose_address_fields(r,e.form)&&r()},{button:"bounce",width:400,height:300}),!0},this.open_compose_step=function(e){e=this.url("mail/compose",e);this.env.compose_extwin&&!this.env.extwin?this.open_window(e):(this.redirect(e),this.env.extwin&&window.resizeTo(Math.max(this.env.popup_width,$(window).width()),$(window).height()+24))},this.init_messageform=function(){if(!this.gui_objects.messageform)return!1;var e,t,s=$("[name='_from']"),i=$("[name='_to']"),n=$("[name='_subject']"),a=$("[name='_message']").get(0),r="1"==$("[name='_is_html']").val(),o=this.opener();o&&"compose"==o.env.action&&(setTimeout(function(){1<opener.history.length?opener.history.back():o.redirect(o.get_task_url("mail"))},100),this.env.opened_extwin=!0),r||(a.value&&void 0!==a.defaultValue&&(a.value=a.defaultValue),t=this.env.top_posting&&this.env.compose_mode?0:a.value.length,"select-one"==s.prop("type")&&(this.set_caret_pos(a,0),this.change_identity(s[0])),this.set_caret_pos(a,t),t&&$(a).scrollTop(a.scrollHeight)),this.env.save_localstorage&&this.compose_restore_dialog(0,r),""==i.val()?e=i:""==n.val()?e=n:a&&(e=a),this.env.compose_focus_elem=this.init_messageform_inputs(e),this.compose_field_hash(!0),this.auto_save_start()},this.init_messageform_inputs=function(e){var t,s=$("[name='_to']"),i=["cc","bcc","replyto","followupto"];for(t in this.init_address_input_events(s),i)this.init_address_input_events($("[name='_"+i[t]+"']"));return e=e||s,$(e).focus().get(0)},this.compose_restore_dialog=function(e,t){function s(e){++e<a.length&&ref.compose_restore_dialog(e,t)}for(var i,n,a=this.local_storage_get_item("compose.index",[]),r=e||0;r<a.length;r++)if(i=a[r],n=this.local_storage_get_item("compose."+i,null,!0)){if(n.changed&&i==this.env.compose_id){this.restore_compose_form(i,t);break}if((!this.env.draft_id||!n.draft_id||n.draft_id==this.env.draft_id)&&(!this.env.reply_msgid||n.reply_msgid==this.env.reply_msgid)&&n.changed&&n.session!=this.env.session_id){this.show_popup_dialog(this.get_label("restoresavedcomposedata").replace("$date",new Date(n.changed).toLocaleString()).replace("$subject",n._subject).replace(/\n/g,"<br/>"),this.get_label("restoremessage"),[{text:this.get_label("restore"),class:"mainaction restore",click:function(){ref.restore_compose_form(i,t),ref.remove_compose_data(i),ref.save_compose_form_local(),$(this).dialog("close")}},{text:this.get_label("delete"),class:"delete",click:function(){ref.remove_compose_data(i),$(this).dialog("close"),s(r)}},{text:this.get_label("ignore"),class:"cancel",click:function(){$(this).dialog("close"),s(r)}}]);break}}},this.init_address_input_events=function(e,t){!t&&0<this.env.autocomplete_threads&&(t={threads:this.env.autocomplete_threads,sources:this.env.autocomplete_sources}),e.keydown(function(e){return ref.ksearch_keydown(e,this,t)}).attr({autocomplete:"off","aria-autocomplete":"list","aria-expanded":"false",role:"combobox"});function s(e){ref.ksearch_pane&&e.target===ref.ksearch_pane.get(0)||ref.ksearch_hide()}$(document).on("click",s),document.addEventListener("scroll",s,!0)},this.submit_messageform=function(e,t){var s,i,n,a=this.gui_objects.messageform;if(a)return!t&&this.env.is_sent?this.simple_dialog(this.get_label("messageissent"),"",function(){return ref.submit_messageform(!1,!0),!0}):this.mailvelope_editor?this.mailvelope_submit_messageform(e,t):(s=this.set_busy(!0,e||t?"savingmessage":"sendingmessage"),i=this.spellcheck_lang(),n=[],$("li",this.gui_objects.attachmentlist).each(function(){n.push(this.id.replace(/^rcmfile/,""))}),$('[name="_attachments"]',a).val(n.join()),a.target=this.get_save_target(s),a._draft.value=e?"1":"",a.action=this.add_url(a.action,"_unlock",s),a.action=this.add_url(a.action,"_framed",1),i&&(a.action=this.add_url(a.action,"_lang",i)),t&&(a.action=this.add_url(a.action,"_saveonly",1)),this.submit_timer=setTimeout(function(){ref.set_busy(!1,null,s),ref.display_message("requesttimedout","error")},1e3*this.env.request_timeout),void a.submit())},this.compose_recipient_select=function(e){for(var t,s=0,i=e.get_selection(),n=0;n<i.length;n++)t=i[n],this.env.contactdata[t]&&s++;this.enable_command("add-recipient",s)},this.compose_add_recipient=function(e){e=e||((e=$(this.env.focused_field).filter(":visible")).length?e.attr("id").replace("_",""):"to");var t,s=[],i=$("#_"+e),n=this.contact_list.get_selection();if(this.contact_list&&n.length)for(var a,r,o,l=0;l<n.length;l++)(o=n[l])&&(a=this.env.contactdata[o])&&(r=a.name||a,"E"==o.charAt(0)&&i.length&&(r="​"+r+"​",o=o.substr(1),this.group2expand[o]={name:r,input:i.get(0)},this.http_request("group-expand",{_source:a.source||this.env.source,_gid:o},!1)),s.push(r));return s.length&&i.length&&((t=i.val())&&!/[,;]\s*$/.test(t)&&(t+=", "),i.val(t+s.join(", ")+", ").change(),this.triggerEvent("add-recipient",{field:e,recipients:s})),s.length},this.check_compose_input=function(e){var t,s,i,n,a=$("[name='_subject']");for(t in this.env.attachments)if("object"==typeof this.env.attachments[t]&&!this.env.attachments[t].complete)return this.alert_dialog(this.get_label("notuploadedwarning")),!1;return this.env.nosubject_warned||""!=a.val()?this.mailvelope_editor||this.editor.get_content()||confirm(this.get_label("nobodywarning"))?!!this.check_compose_address_fields(e)&&(this.editor.save(),!0):(this.editor.focus(),!1):(s=$("<input>").attr({type:"text",size:40,"data-submit":"true"}),i=$('<div class="prompt">').append($('<p class="message">').text(this.get_label("nosubjectwarning"))).append(s),n=this.show_popup_dialog(i,this.get_label("nosubjecttitle"),[{text:this.get_label("sendmessage"),class:"mainaction send",click:function(){a.val(s.val()),n.dialog("close"),ref.check_compose_input(e)&&ref.command(e,{nocheck:!0})}},{text:this.get_label("cancel"),class:"cancel",click:function(){a.focus(),n.dialog("close")}}],{dialogClass:"warning"}),!(this.env.nosubject_warned=!0))},this.check_compose_address_fields=function(t,e){e=e||window.document;function s(e){return(e=$.map(e,function(e){return(e=e.val().trim()).length?e:null})).join(",").replace(/^[\s,;]+/,"").replace(/[\s,;]+$/,"")}var i,n,a,r=this.env.max_disclosed_recipients,o=$("[name='_to']",e),l=$("[name='_cc']",e),c=$("[name='_bcc']",e),h=$("[name='_from']",e);return"text"!=h.prop("type")||rcube_check_email(h.val(),!0)?rcube_check_email(s([o,l,c]),!0)?!(r&&!this.env.disclosed_recipients_warned&&rcube_check_email(i=s([o,l]),!0,!0)>r&&(n=function(e){e&&(e=c.val(),c.val((e?e+", ":"")+i).change(),o.val("").change(),l.val("").change()),a.dialog("close"),"function"==typeof t?t():t&&ref.command(t,{nocheck:!0})},a=this.show_popup_dialog(this.get_label("disclosedrecipwarning"),this.get_label("disclosedreciptitle"),[{text:this.get_label("sendmessage"),click:function(){n(!1)},class:"mainaction"},{text:this.get_label("bccinstead"),click:function(){n(!0)}},{text:this.get_label("cancel"),click:function(){a.dialog("close")},class:"cancel"}],{dialogClass:"warning"}),this.env.disclosed_recipients_warned=!0)):(this.alert_dialog(this.get_label("norecipientwarning"),function(){o.focus()}),!1):(this.alert_dialog(this.get_label("nosenderwarning"),function(){h.focus()}),!1)},this.toggle_editor=function(e,t,s){var i=this.editor.toggle(e.html,e.noconvert||!1),s=$("#"+this.editor.id).data("control")||$(s?s.target:[]),e=i?e.html?"html":"plain":e.html?"plain":"html";return $("[name='_is_html']").val("html"==e?1:0),s.is("[type=checkbox]")?s.prop("checked","html"==e):s.val(e),i},this.insert_response=function(e){var t;"object"==typeof e?((t={})[e.is_html?"html":"text"]=e.data,this.editor.replace(t),this.display_message("responseinserted","confirmation")):(t=this.display_message("","loading"),this.http_get("settings/response-get",{_id:e,_is_html:this.editor.is_html()?1:0},t))},this.spellcheck_state=function(){var s=this.editor.spellcheck_state();return $.each(this.buttons.spellcheck||[],function(e,t){$("#"+t.id)[s?"addClass":"removeClass"]("selected")}),s},this.spellcheck_lang=function(){return this.editor.get_language()},this.spellcheck_lang_set=function(e){this.editor.set_language(e)},this.spellcheck_resume=function(e){this.editor.spellcheck_resume(e)},this.set_draft_id=function(e){var t;e&&e!=this.env.draft_id&&((t=this.opener(!(t={task:"mail",action:""}),t)||this.opener(!0,t))&&t.env.mailbox==this.env.drafts_mailbox&&t.command("checkmail"),this.env.draft_id=e,$("[name='_draft_saveid']").val(e)),this.remove_compose_data(this.env.compose_id),this.compose_skip_unsavedcheck=!1},this.get_save_target=function(e){return this.dummy_iframe("savetarget","javascript:false;").on("load error",function(){e&&0==$(this).contents().find('meta[name="generator"][content="Roundcube"]').length&&(ref.iframe_loaded(e),ref.display_message("connerror","error")),$(this).remove()}),"savetarget"},this.auto_save_start=function(){this.env.draft_autosave&&(this.save_timer=setTimeout(function(){ref.command("savedraft")},1e3*this.env.draft_autosave)),!this.local_save_timer&&window.localStorage&&this.env.save_localstorage&&(this.compose_type_activity=this.compose_type_activity_last=0,$(document).keypress(function(e){ref.compose_type_activity++}),this.local_save_timer=setInterval(function(){ref.compose_type_activity>ref.compose_type_activity_last&&(ref.save_compose_form_local(),ref.compose_type_activity_last=ref.compose_type_activity)},5e3),$(window).on("unload",function(){ref.env.server_error||ref.remove_compose_data(ref.env.compose_id)})),window.onbeforeunload||(window.onbeforeunload=function(){if(!ref.compose_skip_unsavedcheck&&ref.cmp_hash!=ref.compose_field_hash())return ref.get_label("notsentwarning")}),this.busy=!1},this.compose_field_hash=function(e){for(var t,s,i="",n=["to","cc","bcc","subject"],a=0;a<n.length;a++)(s=$('[name="_'+n[a]+'"]').val())&&(i+=s+":");for(t in i+=this.editor.get_content({refresh:!1}),this.env.attachments)i+=t;return this.mailvelope_editor&&(i+=";"+(new Date).getTime()),e&&(this.cmp_hash=i),i},this.save_compose_form_local=function(){var s,i,e,t;this.env.save_localstorage&&(s={session:this.env.session_id,changed:(new Date).getTime()},i=!0,this.editor.save(),this.env.draft_id&&(s.draft_id=this.env.draft_id),this.env.reply_msgid&&(s.reply_msgid=this.env.reply_msgid),$("input, select, textarea",this.gui_objects.messageform).each(function(e,t){switch(t.tagName.toLowerCase()){case"input":"button"==t.type||"submit"==t.type||"hidden"==t.type&&"_is_html"!=t.name||(s[t.name]="checkbox"!=t.type||t.checked?$(t).val():"",""!=s[t.name]&&"hidden"!=t.type&&(i=!1));break;case"select":s[t.name]=$("option:checked",t).val();break;default:s[t.name]=$(t).val(),""!=s[t.name]&&(i=!1)}}),i||(e=this.local_storage_get_item("compose.index",[]),t=this.env.compose_id,$.inArray(t,e)<0&&e.push(t),this.local_storage_set_item("compose."+t,s,!0),this.local_storage_set_item("compose.index",e)))},this.restore_compose_form=function(e,t){e=this.local_storage_get_item("compose."+e,!0);e&&"object"==typeof e&&($.each(e,function(e,t){"_"==e[0]&&((e=$("[name="+e+"]"))[0]&&"checkbox"==e[0].type?e.prop("checked",""!=t):e.val(t).change())}),"1"==e._is_html&&!t||"1"!=e._is_html&&t)&&this.command("toggle-editor",{id:this.env.composebody,html:!t,noconvert:!0})},this.remove_compose_data=function(s){var e=this.local_storage_get_item("compose.index",[]);0<=$.inArray(s,e)&&(this.local_storage_remove_item("compose."+s),this.local_storage_set_item("compose.index",$.grep(e,function(e,t){return e!=s})))},this.clear_compose_data=function(){for(var e=this.local_storage_get_item("compose.index",[]),t=0;t<e.length;t++)this.local_storage_remove_item("compose."+e[t]);this.local_storage_remove_item("compose.index")},this.change_identity=function(e,t){var a,r,s;return!(!e||!e.options)&&(a=$(e).val(),e=this.env.signatures&&this.env.signatures[a],r=this.env.identity,s=t||this.env.show_sig,e?(this.enable_command("insert-sig",!0),this.env.compose_commands.push("insert-sig"),e=!0):this.enable_command("insert-sig",!1),this.env.identities_initialized||(this.env.identities_initialized=!0,this.env.show_sig_later&&(this.env.show_sig=!0),!this.env.opened_extwin)?($.each(["replyto","bcc"],function(){var e,t=r&&ref.env.identities[r]?ref.env.identities[r][this]:"",s=a&&ref.env.identities[a]?ref.env.identities[a][this]:"",i=$('[name="_'+this+'"]'),n=i.val();t&&n&&(e=new RegExp("\\s*"+RegExp.escape(t)+"\\s*"),n=n.replace(e,"")),n=String(n).replace(/[,;]\s*[,;]/g,",").replace(/^[\s,;]+/,""),s&&-1==n.indexOf(s)&&-1==n.indexOf(s.replace(/"/g,""))&&(n=n&&n.replace(/[,;\s]+$/,"")+", ",n+=s+", "),(t||s)&&i.val(n).change()}),this.editor&&this.editor.change_signature(a,s),t&&e&&this.display_message("siginserted","confirmation"),this.env.identity=a,this.triggerEvent("change_identity"),!0):void 0)},this.upload_input=function(e){$("#"+e+' input[type="file"]').click()},this.upload_file=function(e,t,s){var i,n;if(e)return n=[],$("input",e).each(function(){if(this.files){i=this.name;for(var e=0;e<this.files.length;e++)n.push(this.files[e])}}),this.file_upload(n,{_id:this.env.compose_id||""},{name:i,action:t,lock:s})},this.add2attachment_list=function(e,t,s){var i,n;return s&&this.triggerEvent("fileuploaded",{name:e,attachment:t,id:s}),s&&this.env.attachments[s]&&delete this.env.attachments[s],this.env.attachments[e]=t,!!this.gui_objects.attachmentlist&&(i=$("<li>"),!t.complete&&t.html.indexOf("<")<0&&(t.html='<span class="uploading">'+t.html+"</span>"),!t.complete&&this.env.loadingicon&&(t.html='<img src="'+this.env.loadingicon+'" alt="" class="uploading" />'+t.html),t.complete||(n=this.get_label("cancel"),t.html='<a title="'+n+'" onclick="return rcmail.cancel_attachment_upload(\''+e+'\');" href="#cancelupload" class="cancelupload">'+(this.env.cancelicon?'<img src="'+this.env.cancelicon+'" alt="'+n+'" />':'<span class="inner">'+n+"</span>")+"</a>"+t.html),i.attr("id",e).addClass(t.classname).html(t.html).find(".attachment-name").on("mouseover",function(){rcube_webmail.long_subject_title_ex(this)}),s&&(n=document.getElementById(s))?i.replaceAll(n):i.appendTo(this.gui_objects.attachmentlist),n=$(this.gui_objects.attachmentlist).attr("data-tabindex")||"0",i.find("a").attr("tabindex",n),this.triggerEvent("fileappended",{name:e,attachment:t,id:s,item:i}),!0)},this.remove_from_attachment_list=function(e){delete this.env.attachments[e],$("#"+e).remove()},this.remove_attachment=function(e){return e&&this.env.attachments[e]&&this.http_post("remove-attachment",{_id:this.env.compose_id,_file:e}),!1},this.cancel_attachment_upload=function(e){return e&&this.uploads[e]&&(this.remove_from_attachment_list(e),this.uploads[e].abort()),!1},this.rename_attachment=function(t){var s,e,i=this.env.attachments[t];i&&(s=$("<input>").attr({type:"text",size:50}).val(i.name),e=$("<label>").text(this.get_label("namex")).append(s),this.simple_dialog(e,"attachmentrename",function(){var e;if((e=s.val())&&e!=i.name)return ref.http_post("rename-attachment",{_id:ref.env.compose_id,_file:t,_name:e},ref.set_busy(!0,"loading")),!0}))},this.rename_attachment_handler=function(e,t){var s=this.env.attachments[e];s&&t&&(s.name=t,$("#"+e+" .attachment-name").text(t).attr("title",""))},this.add_contact=function(e,t,s){e&&this.http_post("addcontact",{_address:e,_reload:t,_source:s})},this.qsearch=function(e){var t,s;return!(""==e&&!$(this.gui_objects.qsearchbox).val()&&!$(this.gui_objects.search_interval).val()||(t=this.set_busy(!0,"searching"),e=this.search_params(e),s="compose"==this.env.action&&this.contact_list?"search-contacts":"search",this.message_list?this.clear_message_list():this.contact_list&&this.list_contacts_clear(),this.env.source&&(e._source=this.env.source),this.env.group&&(e._gid=this.env.group),this.env.current_page=1,s=this.http_request(s,e,t),this.env.qsearch={lock:t,request:s},this.enable_command("set-listmode",this.env.threads&&"base"==(this.env.search_scope||"base")),0))},this.continue_search=function(t){var s=this.set_busy(!0,"stillsearching");setTimeout(function(){var e=ref.search_params();e._continue=t,ref.env.qsearch={lock:s,request:ref.http_request("search",e,s)}},100)},this.search_params=function(e,t){var s,i={},n=[],a=this.env.search_mods,r=this.env.search_scope||"base",o=this.env.mailbox;if(!t&&this.gui_objects.search_filter&&(t=this.gui_objects.search_filter.value),!e&&this.gui_objects.qsearchbox&&(e=this.gui_objects.qsearchbox.value),this.gui_objects.search_interval&&(i._interval=$(this.gui_objects.search_interval).val()),e&&(i._q=e,a=a&&this.message_list?a[o]||a["*"]:a)){for(s in a)n.push(s);i._headers=n.join(",")}return i._layout=this.env.layout,i._filter=t,i._scope=r,i._mbox=o,i},this.reset_search_filter=function(){this.filter_disabled=!0,this.gui_objects.search_filter&&$(this.gui_objects.search_filter).val("ALL").change(),this.filter_disabled=!1},this.reset_qsearch=function(e){this.gui_objects.qsearchbox&&(this.gui_objects.qsearchbox.value=""),this.gui_objects.search_interval&&$(this.gui_objects.search_interval).val(""),this.env.qsearch&&this.abort_request(this.env.qsearch),e&&(this.env.search_scope="base",this.reset_search_filter()),this.env.qsearch=null,this.env.search_request=null,this.env.search_id=null,this.select_all_mode=!1,this.enable_command("set-listmode",this.env.threads)},this.set_searchscope=function(e){this.env.search_scope=e},this.set_searchinterval=function(e){this.env.search_interval=e},this.set_searchmods=function(e){var t=this.env.mailbox;this.env.search_scope;this.env.search_mods||(this.env.search_mods={}),t&&(this.env.search_mods[t]=e)},this.is_multifolder_listing=function(){return void 0!==this.env.multifolder_listing?this.env.multifolder_listing:this.env.search_request&&"base"!=(this.env.search_scope||"base")},this.sent_successfully=function(e,t,s,i){var n;this.display_message(t,e),this.compose_skip_unsavedcheck=!0,this.env.extwin?(i||this.lock_form(this.gui_objects.messageform),(n=this.opener(!(n={task:"mail",action:""}),n)||this.opener(!0,n))&&(n.display_message(t,e),s)&&0<=$.inArray(n.env.mailbox,s)&&n.command("checkmail"),i||setTimeout(function(){window.close()},1e3)):i||setTimeout(function(){ref.list_mailbox()},500),i&&(this.env.is_sent=!0)},this.image_rotate=function(){var e=this.image_style&&this.image_style.rotate||0;this.image_style.rotate=180<e?0:e+90,this.apply_image_style()},this.image_scale=function(e){var t=this.image_style&&this.image_style.scale||1;this.image_style.scale=Math.max(.1,t+.1*("-"==e?-1:1)),this.apply_image_style()},this.apply_image_style=function(){var i=[],e=$(this.gui_objects.messagepartframe).contents().find("head");$("#image-style",e).remove(),$.each({scale:"",rotate:"deg"},function(e,t){var s=ref.image_style[e];s&&i.push(e+"("+s+t+")")}),i&&e.append($('<style id="image-style">').text("img { transform: "+i.join(" ")+"}"))},this.import_state_set=function(e){var t;this.import_dialog&&(this.import_state=e,t=$(this.import_dialog).parent().find(".ui-dialog-buttonset > button").first(),"error"!=e?(t.hide(),t.next().text(this.gettext("close")).focus()):t.prop("disabled",!1))},this.ksearch_keydown=function(e,t,s){this.ksearch_timer&&clearTimeout(this.ksearch_timer);var i,n,a=rcube_event.get_keycode(e);switch(a){case 38:case 40:return this.ksearch_visible()?(i=38==a?1:0,(n=(n=this.ksearch_pane.find("li.selected")[0])||this.ksearch_pane.__ul.firstChild)&&this.ksearch_select(i?n.previousSibling:n.nextSibling),rcube_event.cancel(e)):void 0;case 9:if(rcube_event.get_modifier(e)==SHIFT_KEY||!this.ksearch_visible())return void this.ksearch_hide();case 13:return this.ksearch_visible()?(this.insert_recipient(this.ksearch_selected),this.ksearch_hide(),9==a?null:rcube_event.cancel(e)):!1;case 27:return void this.ksearch_hide();case 37:case 39:return}return this.ksearch_timer=setTimeout(function(){ref.ksearch_get_results(s)},200),this.ksearch_input=t,!0},this.ksearch_visible=function(){return null!==this.ksearch_selected&&void 0!==this.ksearch_selected&&this.ksearch_value},this.ksearch_select=function(e){this.ksearch_pane&&e&&this.ksearch_pane.find("li.selected").removeClass("selected").removeAttr("aria-selected"),e&&($(e).addClass("selected").attr("aria-selected","true"),this.ksearch_selected=e._rcm_id,$(this.ksearch_input).attr("aria-activedescendant","rcmkSearchItem"+this.ksearch_selected))},this.insert_recipient=function(e){var t,s,i;null!==e&&this.env.contacts[e]&&this.ksearch_input&&(t=!1,i="",e=this.env.contacts[e],this.ksearch_destroy(),"object"==typeof e&&"group"==e.type&&!e.email&&e.id?(i=(s="​"+e.name+"​")+", ",this.group2expand[e.id]={name:s,input:this.ksearch_input},this.http_request("mail/group-expand",{_source:e.source,_gid:e.id},!1)):"object"==typeof e&&e.name?(i=e.name+", ",t=!0):"string"==typeof e&&(i=e+", ",t=!0),this.ksearch_input_replace(this.ksearch_value,i,null,t),t)&&(this.triggerEvent("autocomplete_insert",{field:this.ksearch_input,insert:i,data:e,search:this.ksearch_value_last,result_type:"person"}),this.ksearch_value_last=null,this.compose_type_activity++)},this.replace_group_recipients=function(e,t){var s=this.group2expand[e];s&&(this.ksearch_input_replace(s.name,t,s.input),this.triggerEvent("autocomplete_insert",{field:s.input,insert:t,data:s,search:this.ksearch_value_last,result_type:"group"}),this.ksearch_value_last=null,this.group2expand[e]=null,this.compose_type_activity++)},this.ksearch_get_results=function(e){this.ksearch_pane&&this.ksearch_pane.is(":visible")&&this.ksearch_pane.hide();var t=this.ksearch_input_get(),s=this.env.autocomplete_min_length,i=this.ksearch_data;(t=t.trim())!=this.ksearch_value&&(this.ksearch_destroy(),t.length&&t.length<s?this.ksearch_info||(this.ksearch_info=this.display_message(this.get_label("autocompletechars").replace("$min",s))):(s=this.ksearch_value,this.ksearch_value=t,!(this.ksearch_value_last=t).length||s&&s.length&&t.startsWith(s)&&(!i||i.num<=0)&&this.env.contacts&&!this.env.contacts.length||(s=e&&e.sources?e.sources:[""],i=this.multi_thread_http_request({items:s,threads:e&&e.threads?e.threads:1,action:e&&e.action?e.action:"mail/autocomplete",postdata:{_search:t,_source:"%s"},lock:this.display_message("searching","loading")}),this.ksearch_data={id:i,sources:s.slice(),num:s.length})))},this.ksearch_query_results=function(e,t,s){if(this.multi_thread_http_response(e,s),this.ksearch_value&&(!this.ksearch_input||t==this.ksearch_value)){var i,n,a,r,o,l,t=this.is_framed(),c=this.ksearch_value,h=this.env.autocomplete_max||15;if(this.ksearch_pane||(r=$("<ul>"),this.ksearch_pane=$("<div>").attr({id:"rcmKSearchpane",role:"listbox",class:"select-menu inline"}).css({position:"absolute","z-index":3e4}).append(r).appendTo((t?parent.document:document).body),this.ksearch_pane.__ul=r[0],this.triggerEvent("autocomplete_create",{obj:this.ksearch_pane})),r=this.ksearch_pane.__ul,s&&this.ksearch_pane.data("reqid")==s)h-=r.childNodes.length;else{this.ksearch_pane.data("reqid",s),r.innerHTML="",this.env.contacts=[];var d=$("html").is(".layout-small,.layout-phone")&&1==$(this.ksearch_input).parents(".ac-input").length,_=(d?$(this.ksearch_input).parents(".ac-input"):$(this.ksearch_input))[0],u=$(_).offset();if(u.left-=$(document.documentElement).scrollLeft(),u.top-=$(document.documentElement).scrollTop(),t)try{parent.$("iframe").each(function(){var e;this.contentWindow==window&&(e=$(this).offset(),u.left+=e.left,u.top+=e.top)})}catch(e){}var t=$(t?parent:window).width(),m=$(_).outerWidth(),p=200<t-u.left?u.left:t-200,_=u.top+_.offsetHeight+1,t=Math.min(400,t-p);this.ksearch_pane.css({left:(d?u.left:p)+"px",top:_+"px",maxWidth:(d?m:t)+"px",minWidth:"200px",width:d?m+"px":"auto",display:"none"})}if(e&&(a=e.length))for(i=0;i<a&&0<h;i++)o="object"==typeof e[i]?e[i].display||e[i].name:e[i],l="object"==typeof e[i]?e[i].type:"",n=i+this.env.contacts.length,$("<li>").attr({id:"rcmkSearchItem"+n,role:"option"}).html('<i class="icon"></i>'+this.quote_html(o.replace(new RegExp("("+RegExp.escape(c)+")","ig"),"##$1%%")).replace(/##([^%]+)%%/g,"<b>$1</b>")).addClass(l||"").appendTo(r).mouseover(function(){ref.ksearch_select(this)}).mouseup(function(){ref.ksearch_click(this)}).get(0)._rcm_id=n,--h;r.childNodes.length&&($(this.ksearch_input).attr({"aria-haspopup":"true","aria-expanded":"true","aria-owns":"rcmKSearchpane"}),this.ksearch_pane.show(),this.env.contacts.length||this.ksearch_select($("li",r)[0])),a&&(this.env.contacts=this.env.contacts.concat(e)),this.ksearch_data.id==s&&this.ksearch_data.num--}},this.ksearch_input_get=function(){var e;return this.ksearch_input?(e=this.get_caret_pos(this.ksearch_input),this.ksearch_input.value.substr(0,e).split(/[,;]/).pop()):""},this.ksearch_input_replace=function(e,t,s,i){var n,a,r;(this.ksearch_input||s)&&(s=s||this.ksearch_input,n=this.get_caret_pos(s),r=s.value.lastIndexOf(e,n),a=s.value.substring(0,r),r=s.value.substring(r+e.length,s.value.length),s.value=a+t+r,this.set_caret_pos(s,n+t.length-e.length),$(s).trigger("change",[!0,i]))},this.ksearch_click=function(e){this.ksearch_input&&this.ksearch_input.focus(),this.insert_recipient(e._rcm_id),this.ksearch_hide()},this.ksearch_blur=function(){this.ksearch_timer&&clearTimeout(this.ksearch_timer),this.ksearch_input=null,this.ksearch_hide()},this.ksearch_hide=function(){this.ksearch_selected=null,this.ksearch_value="",this.ksearch_pane&&this.ksearch_pane.hide(),$(this.ksearch_input).attr({"aria-haspopup":"false","aria-expanded":"false"}).removeAttr("aria-activedescendant").removeAttr("aria-owns"),this.ksearch_destroy()},this.ksearch_destroy=function(){this.ksearch_data&&this.multi_thread_request_abort(this.ksearch_data.id),this.ksearch_info&&this.hide_message(this.ksearch_info),this.ksearch_msg&&this.hide_message(this.ksearch_msg),this.ksearch_data=null,this.ksearch_info=null,this.ksearch_msg=null},this.contactlist_select=function(n){this.preview_timer&&clearTimeout(this.preview_timer);var e,t,s=0,a=!1,r=!1,i=!1,o=n.get_selection().length,l=this.env.source?this.env.address_sources[this.env.source]:null;return this.env.contentframe&&!n.multi_selecting&&(e=n.get_single_selection())?this.preview_timer=setTimeout(function(){ref.load_contact(e,"show")},this.preview_delay_click):this.env.contentframe&&this.show_contentframe(!1),o&&(n.draggable=!1,this.env.selection_sources=[],l&&this.env.selection_sources.push(this.env.source),$.each(n.get_selection(),function(e,t){var s,i=n.data[t];l?(a=a||!l.readonly&&!i.readonly,r=r||!0===l.deletable):(s=(t=String(t).replace(/^[^-]+-/,""))?ref.env.address_sources[t]:null)&&(a=a||!s.readonly&&!i.readonly,r=r||!0===s.deletable,ref.env.selection_sources.push(t)),"group"!=i._type&&(n.draggable=!0)}),this.env.selection_sources=$.unique(this.env.selection_sources),l&&l.groups&&$.each(this.env.contactgroups,function(){this.source===ref.env.source&&s++}),t=$.map(this.env.address_sources,function(e,t){return e.readonly?null:t}),i=0<$.grep(t,function(e){return jQuery.inArray(e,ref.env.selection_sources)<0}).length),this.enable_command("group-assign-selected",0<s&&a),this.enable_command("group-remove-selected",this.env.group&&a),this.enable_command("print","qrcode",1==o),this.enable_command("export-selected",0<o),this.enable_command("edit",e&&a),this.enable_command("delete","move",a||r),this.enable_command("copy",i),!1},this.list_contacts=function(e,t,s,i){var n,a=-1,r={},o=void 0===e&&void 0===t&&void 0===s,l=window;e=e||this.env.source,o&&(t=this.env.group),e!=this.env.source?(s=this.env.current_page=1,this.reset_qsearch()):o||t==this.env.group||(s=this.env.current_page=1),this.env.search_id?n="S"+this.env.search_id:this.env.search_request||(n=t?"G"+e+t:e),this.env.source=this.env.last_source=e,this.env.group=this.env.last_group=t,$.each(this.env.address_group_stack,function(e,t){if(ref.env.group==t.id)return a=e,!1}),this.env.address_group_stack=a<0?[]:this.env.address_group_stack.slice(0,a),this.destroy_entity_selector("contactgroup-selector"),this.env.group?((i=i||{}).id=this.env.group,this.env.address_group_stack.push(i),n="G"+e+this.env.address_group_stack[0].id):this.gui_objects.addresslist_title&&$(this.gui_objects.addresslist_title).text(this.get_label("contacts")),this.env.search_id||this.select_folder(n,"",!0),this.gui_objects.contactslist?this.list_contacts_remote(e,t,s):((o=this.get_frame_window(this.env.contentframe))&&(l=o,r._framed=1),t&&(r._gid=t),s&&(r._page=s),e&&(r._source=e),this.env.search_request&&(r._search=this.env.search_request),this.set_busy(!0,"loading"),this.location_href(r,l))},this.list_contacts_remote=function(e,t,s){this.list_contacts_clear();var i={},n=this.set_busy(!0,"loading");e&&(i._source=e),s&&(i._page=s),t&&(i._gid=t),this.env.source=e,this.env.group=t,this.env.search_request&&(i._search=this.env.search_request),this.http_request("mail"==this.env.task?"list-contacts":"list",i,n),"mail"!=this.env.task&&this.update_state({_source:e,_page:s&&1<s?s:null,_gid:t})},this.list_contacts_clear=function(){this.contact_list.data={},this.contact_list.clear(!0),this.show_contentframe(!1),this.enable_command("delete","move","copy","print",!1)},this.set_group_prop=function(e){var t,s;this.gui_objects.addresslist_title&&(t=$(this.gui_objects.addresslist_title).html(""),(1<this.env.address_group_stack.length||1==this.env.address_group_stack.length&&this.env.address_group_stack[0].search_request)&&(s=$('<a href="#list">...</a>').attr({title:this.get_label("uponelevel"),class:"poplink"}).click(function(){return ref.command("popgroup","",this)}),t.append(s).append("&nbsp;&raquo;&nbsp;")),t.append($("<span>").text(e?e.name:this.get_label("contacts"))))},this.load_contact=function(e,t,s){var i,n={},a=window,r=this.contact_list?this.contact_list.data[e]:null;if(i=this.get_frame_window(this.env.contentframe))n._framed=1,a=i,this.show_contentframe(!0),e||this.contact_list.clear_selection(),this.enable_command("export-selected","print",r&&"group"!=r._type);else if(s)return!1;return!t||!e&&"add"!=t||this.drag_active||(this.env.group&&(n._gid=this.env.group),this.env.search_request&&(n._search=this.env.search_request),e&&(n._cid=this.preview_id=e),n._action=t,n._source=this.env.source,this.location_href(n,a,!0)),!0},this.group_member_change=function(e,t,s,i){var n=this.display_message("add"==(e="add"!=e?"del":e)?"addingmember":"removingmember","loading");this.http_post("group-"+e+"members",{_cid:t,_source:s,_gid:i},n)},this.contacts_drag_menu=function(e,t){var s="group"==t.type?t.source:t.id,i=this.env.source;return!(this.env.address_sources[s]&&!this.env.address_sources[s].readonly)||(""==i&&1==this.env.selection_sources.length&&(i=this.env.selection_sources[0]),"group"==t.type&&s==i?(i=this.contact_list.get_selection().join(","),this.group_member_change("add",i,s,t.id),!0):this.commands.move||rcube_event.get_modifier(e)==SHIFT_KEY?this.drag_menu(e,t):(this.copy_contacts(t),!0))},this.copy_contacts=function(e,t,s){if(!e)return s=this.contact_list.get_selection(),this.addressbook_selector(t,function(e,t){e=$(t).data("source")?ref.env.contactgroups["G"+$(t).data("source")+$(t).data("gid")]:ref.env.address_sources[e];ref.copy_contacts(e,null,s)});var i,n,t="group"==e.type?e.source:e.id,a=this.env.source,r=this.env.group||"";(s=(s||this.contact_list.get_selection()).join(","))&&this.env.address_sources[t]&&!this.env.address_sources[t].readonly&&(""==a&&1==this.env.selection_sources.length&&(a=this.env.selection_sources[0]),"group"==e.type?t!=a&&(i=this.display_message("copyingcontact","loading"),n={_cid:s,_source:this.env.source,_to:t,_togid:e.id,_gid:r},this.http_post("copy",n,i)):e.id!=a&&(i=this.display_message("copyingcontact","loading"),n={_cid:s,_source:this.env.source,_to:e.id,_gid:r},this.http_post("copy",n,i)))},this.move_contacts=function(e,t,s){if(!e)return s=this.contact_list.get_selection(),this.addressbook_selector(t,function(e,t){e=$(t).data("source")?ref.env.contactgroups["G"+$(t).data("source")+$(t).data("gid")]:ref.env.address_sources[e];ref.move_contacts(e,null,s)});var t="group"==e.type?e.source:e.id,i=this.env.source;this.env.group;this.env.address_sources[t]&&!this.env.address_sources[t].readonly&&(s=s||this.contact_list.get_selection(),""==i&&1==this.env.selection_sources.length&&(i=this.env.selection_sources[0]),"group"==e.type?t!=i&&this._with_selected_contacts("move",{_to:t,_togid:e.id,_cid:s}):e.id!=i&&this._with_selected_contacts("move",{_to:e.id,_cid:s}))},this.delete_contacts=function(){var e;this.env.source&&this.env.address_sources[this.env.source].undelete?this._with_selected_contacts("delete",{_cid:this.contact_list.get_selection()}):(e=this.contact_list.get_selection(),this.confirm_dialog(this.get_label("deletecontactconfirm"),"delete",function(){ref._with_selected_contacts("delete",{_cid:e})}))},this._with_selected_contacts=function(e,t){var s=t._cid;if(s.length||this.env.cid){var i,n=[],a=this.display_message("delete"==e?"contactdeleting":"movingcontact","loading"),r=this.check_display_next();if(this.env.cid)n.push(this.env.cid);else{for(i=0;i<s.length;i++)id=s[i],n.push(id),this.contact_list.remove_row(id,r&&i==s.length-1);r||this.contact_list.clear_selection()}return(t=t||{})._source=this.env.source,t._from=this.env.action,t._cid=n.join(","),this.env.group&&(t._gid=this.env.group),this.env.search_request&&(t._search=this.env.search_request),this.http_post(e,t,a),!0}},this.update_contact_row=function(e,t,s,i,n){var a=this.contact_list;e=this.html_identifier(e),a.rows[e]||(e=e+"-"+i,s=s&&s+"-"+i),a.update_row(e,t,s,!0),a.data[e]=n},this.add_contact_row=function(e,t,s,i){if(!this.gui_objects.contactslist)return!1;var n,a,r=this.contact_list,o={cols:[]};for(n in o.id="rcmrow"+this.html_identifier(e),o.className="contact "+(s||""),r.in_selection(e)&&(o.className+=" selected"),t)(a={}).className=String(n).toLowerCase(),a.innerHTML=t[n],o.cols.push(a);r.data[e]=i,r.insert_row(o),this.enable_command("export",0<r.rowcount)},this.init_contact_form=function(){if(this.env.coltypes)for(var e in this.set_photo_actions($("#ff_photo").val()),this.env.coltypes)this.init_edit_field(e,null);$(".contactfieldgroup .row a.deletebutton").click(function(){return ref.delete_edit_field(this),!1}),$("select.addfieldmenu").change(function(){ref.insert_edit_field($(this).val(),$(this).attr("rel"),this),this.selectedIndex=0}),$.datepicker&&this.env.date_format&&($.datepicker.setDefaults({dateFormat:this.env.date_format,changeMonth:!0,changeYear:!0,yearRange:"-120:+10",showOtherMonths:!0,selectOtherMonths:!0}),$("input.datepicker").datepicker()),"search"==this.env.action&&$(this.gui_objects.editform).append($('<input type="submit">').hide()).submit(function(){return $("input.mainaction").click(),!1})},this.group_create=function(){var t=$("<input>").attr({type:"text","data-submit":"true"}),e=$("<label>").text(this.get_label("namex")).append(t),s=this.env.source;this.simple_dialog(e,"newgroup",function(){var e;if(e=t.val())return ref.http_post("group-create",{_source:s,_name:e},ref.set_busy(!0,"loading")),!0})},this.group_rename=function(){var t,s,e,i,n;this.env.group&&(t=this.env.contactgroups["G"+this.env.source+this.env.group].name,s=$("<input>").attr({type:"text","data-submit":"true"}).val(t),e=$("<label>").text(this.get_label("namex")).append(s),i=this.env.source,n=this.env.group,this.simple_dialog(e,"grouprename",function(){var e;if((e=s.val())&&e!=t)return ref.http_post("group-rename",{_source:i,_gid:n,_name:e},ref.set_busy(!0,"loading")),!0}))},this.group_delete=function(){var t;this.env.group&&(t=this.env.group,this.confirm_dialog(this.get_label("deletegroupconfirm"),"delete",function(){var e=ref.set_busy(!0,"groupdeleting");ref.http_post("group-delete",{_source:ref.env.source,_gid:t},e)}))},this.remove_group_item=function(e){var t="G"+e.source+e.id;this.treelist.remove(t)&&(this.destroy_entity_selector("addressbook-selector"),this.destroy_entity_selector("contactgroup-selector"),this.triggerEvent("group_delete",{source:e.source,id:e.id}),delete this.env.contactfolders[t],delete this.env.contactgroups[t]),e.source==this.env.source&&e.id==this.env.group&&this.list_contacts(e.source,0)},this.group_assign_selected=function(e,t,s){var i=ref.contact_list.get_selection(),n=ref.env.source;this.contactgroup_selector(s,function(e){ref.group_member_change("add",i,n,e)})},this.group_remove_selected=function(){this.http_post("group-delmembers",{_cid:this.contact_list.get_selection(),_source:this.env.source,_gid:this.env.group})},this.remove_group_contacts=function(e){if(void 0!==this.env.group&&this.env.group===e.gid){for(var t=this.contact_list.get_selection(),s=this.check_display_next(),i=0;i<t.length;i++)id=t[i],this.contact_list.remove_row(id,s&&i==t.length-1);s||this.contact_list.clear_selection()}},this.insert_contact_group=function(e){e.type="group";var t="G"+e.source+e.id,s=$("<a>").attr({href:"#",rel:e.source+":"+e.id}).click(function(){return ref.command("listgroup",e,this)}).text(e.name);this.env.contactfolders[t]=this.env.contactgroups[t]=e,this.treelist.insert({id:t,html:s,classes:["contactgroup"]},e.source,"contactgroup"),this.destroy_entity_selector("addressbook-selector"),this.destroy_entity_selector("contactgroup-selector"),this.triggerEvent("group_insert",{id:e.id,source:e.source,name:e.name,li:this.treelist.get_item(t)})},this.update_contact_group=function(e){var t,s,i="G"+e.source+e.id,n={};e.newid?(t="G"+e.source+e.newid,s=$.extend({},e),this.env.contactfolders[t]=this.env.contactfolders[i],this.env.contactfolders[t].id=e.newid,this.env.group=e.newid,delete this.env.contactfolders[i],delete this.env.contactgroups[i],s.id=e.newid,s.type="group",n.id=t,n.html=$("<a>").attr({href:"#",rel:e.source+":"+e.newid}).click(function(){return ref.command("listgroup",s,this)}).text(e.name)):($(this.treelist.get_item(i)).children().first().text(e.name),this.env.contactfolders[i].name=this.env.contactgroups[i].name=e.name,e.source==this.env.source&&e.id==this.env.group&&this.set_group_prop(e)),this.treelist.update(i,n,!0),this.destroy_entity_selector("addressbook-selector"),this.destroy_entity_selector("contactgroup-selector"),this.triggerEvent("group_update",{id:e.id,source:e.source,name:e.name,li:this.treelist.get_item(i),newid:e.newid})},this.update_group_commands=function(){var e=""!=this.env.source?this.env.address_sources[this.env.source]:null,e=e&&e.groups&&!e.readonly;this.enable_command("group-create",e),this.enable_command("group-rename","group-delete",e&&this.env.group)},this.init_edit_field=function(e,t){var s=this.env.coltypes[e].label;t=t||$(".ff_"+e),s&&!$('label[for="ff_'+e+'"]').length&&t.placeholder(s)},this.insert_edit_field=function(e,t,s){var i=$("#ff_"+e);if(i.length)$('label[for="ff_'+e+'"]').parent().show(),i.show().focus(),$(s).children('option[value="'+e+'"]').prop("disabled",!0);else{$(".ff_"+e);i=$("#contactsection"+t+" .contactcontroller"+e);if(i.length||(t=$("#contactsection"+t),h=$(".contactfieldgroup",t).last(),i=$("<fieldset>").addClass("contactfieldgroup contactcontroller"+e),h.length?i.insertAfter(h):t.prepend(i)),"FIELDSET"==i.get(0).nodeName){var n,a,r,o=this.env.coltypes[e],l=1!=o.limit?"[]":"",c=!!$(s).data("compact"),h="ff_"+e+(o.count||0),t=$("<div>").addClass("row input-group"),d=$("<div>").addClass("contactfieldcontent "+o.type);if(o.subtypes_select?(n=$(o.subtypes_select),c?n.addClass("input-group-prepend"):n=$("<div>").addClass("contactfieldlabel label").append(n)):(n=$("<label>").addClass("contactfieldlabel label input-group-text").attr("for",h).text(o.label),c&&(n=$('<span class="input-group-prepend">').append(n))),"text"==o.type||"date"==o.type)a=$("<input>").addClass("form-control ff_"+e).attr({type:"text",name:"_"+e+l,size:o.size,id:h}),this.init_edit_field(e,a),"date"==o.type&&$.datepicker&&a.addClass("datepicker").datepicker();else if("textarea"==o.type)a=$("<textarea>").addClass("form-control ff_"+e).attr({name:"_"+e+l,cols:o.size,rows:o.rows,id:h}),this.init_edit_field(e,a);else if("composite"==o.type){var _,u,m,p,f,g=[],v=[],b=d;if(t.addClass("composite"),c&&(b=$('<div class="content input-group-text">')),f=this.env[e+"_template"])for(_=0;_<f.length;_++)g.push(f[_][1]),v.push(f[_][2]);else for(u in o.childs)g.push(u);for(_=0;_<g.length;_++)m=o.childs[u=g[_]],a=$("<input>").addClass("form-control ff_"+u).attr({type:"text",name:"_"+u+l,size:m.size}).appendTo(b),c||b.append(v[_]||" "),this.init_edit_field(u,a),p=p||a;a=c?b:p}else"select"==o.type&&((r=(a=$("<select>").addClass("custom-select ff_"+e).attr({name:"_"+e+l,id:h})).attr("options"))[r.length]=new Option("---",""),o.options)&&$.each(o.options,function(e,t){r[r.length]=new Option(t,e)});a&&(h=$('<a href="#del"></a>').addClass("contactfieldbutton deletebutton input-group-text icon delete").attr({title:this.get_label("delete"),rel:e}).html(this.env.delbutton).click(function(){return ref.delete_edit_field(this),!1}),t.append(n),c?(t.append(a).append(h),h.wrap('<span class="input-group-append">')):("composite"!=o.type&&d.append(a),t.append(d.append(h))),t.appendTo(i.show()),(a.is("div")?a.find("input"):a).first().focus(),o.count||(o.count=0),++o.count==o.limit&&o.limit&&$(s).children('option[value="'+e+'"]').prop("disabled",!0),this.triggerEvent("insert-edit-field",a))}}},this.delete_edit_field=function(e){var t=$(e).attr("rel"),s=this.env.coltypes[t],i=$(e).parents("div.row"),e=$(e).parents("fieldset.contactfieldgroup"),n=e.parent().find("select.addfieldmenu");--s.count<=0&&s.visible?i.find("input").val("").blur():(i.remove(),e.children("div.row").length||e.hide()),n.length&&((i=n.children('option[value="'+t+'"]')).length?i.prop("disabled",!1):i=$("<option>").attr("value",t).html(s.label).appendTo(n),n.show())},this.upload_contact_photo=function(e){e&&e.elements._photo.value&&(this.async_upload_form(e,"upload-photo",function(e){ref.set_busy(!1,null,ref.file_upload_id)}),this.file_upload_id=this.set_busy(!0,"uploading"))},this.replace_contact_photo=function(e){var t="-del-"==e?this.env.photo_placeholder:this.env.comm_path+"&_action=photo&_source="+this.env.source+"&_cid="+(this.env.cid||0)+"&_photo="+e;this.set_photo_actions(e),$(this.gui_objects.contactphoto).children("img").attr("src",t)},this.photo_upload_end=function(){this.set_busy(!1,null,this.file_upload_id),delete this.file_upload_id},this.set_photo_actions=function(e){for(var t=this.buttons["upload-photo"],s=0;t&&s<t.length;s++)$("a#"+t[s].id).html(this.get_label("-del-"==e?"addphoto":"replacephoto"));$("#ff_photo").val(e),this.enable_command("upload-photo",!!this.env.coltypes.photo),this.enable_command("delete-photo",this.env.coltypes.photo&&"-del-"!=e)},this.advanced_search=function(){var s=$("<iframe>").attr("src",this.url("search",{_form:1,_framed:1}));return this.simple_dialog(s,"advsearch",function(){var e=!1,t={_adv:1};if($.each($(s[0].contentWindow.rcmail.gui_objects.editform).serializeArray(),function(){this.name.match(/^_search/)&&""!=this.value&&(t[this.name]=this.value,e=!0)}),e)return ref.http_post("search",t,ref.set_busy(!0,"searching")),!0},{button:"search",width:600,height:500}),!0},this.unselect_directory=function(){this.select_folder(""),this.enable_command("search-delete",!1)},this.insert_saved_search=function(e,t){var s="S"+t,i=$("<a>").attr({href:"#",rel:t}).click(function(){return ref.command("listsearch",t,this)}).html(e),e={name:e,id:t};this.savedsearchlist.insert({id:s,html:i,classes:["contactsearch"]},null,"contactsearch"),this.select_folder(s,"",!0),this.enable_command("search-delete",!0),this.env.search_id=t,this.triggerEvent("abook_search_insert",e)},this.search_create=function(){var t=$("<input>").attr("type","text"),e=$("<label>").text(this.get_label("namex")).append(t);this.simple_dialog(e,"searchsave",function(){var e;if(e=t.val())return ref.http_post("search-create",{_search:ref.env.search_request,_name:e},ref.set_busy(!0,"loading")),!0})},this.search_delete=function(){var e;this.env.search_request&&(e=this.set_busy(!0,"savedsearchdeleting"),this.http_post("search-delete",{_sid:this.env.search_id},e))},this.remove_search_item=function(e){this.savedsearchlist.remove("S"+e)&&this.triggerEvent("search_delete",{id:e}),this.env.search_id=null,this.env.search_request=null,this.list_contacts_clear(),this.reset_qsearch(),this.enable_command("search-delete","search-create",!1)},this.listsearch=function(e){var t=this.set_busy(!0,"searching");this.contact_list&&this.list_contacts_clear(),this.reset_qsearch(),this.savedsearchlist?(this.treelist.select(""),this.savedsearchlist.select("S"+e)):this.select_folder("S"+e,"",!0),this.env.current_page=1,this.http_request("search",{_sid:e},t)},this.qrcode=function(){var e=new Image(300,300);return e.src=this.url("addressbook/qrcode",{_source:this.env.source,_cid:this.get_single_cid()}),this.simple_dialog(e,"qrcode",null,{button:!1,cancel_button:"close",width:300,height:300})},this.section_select=function(e){var t,e=e.get_single_selection();e&&(t=this.get_frame_window(this.env.contentframe))&&this.location_href({_action:"edit-prefs",_section:e,_framed:1},t,!0)},this.response_select=function(e){e=e.get_single_selection();this.enable_command("delete",!!e&&$.inArray(e,this.env.readonly_responses)<0),e&&this.load_response(e,"edit-response")},this.load_response=function(e,t){var s;(s=this.get_frame_window(this.env.contentframe))&&(e||"add-response"==t)&&(e||this.responses_list.clear_selection(),this.location_href({_action:t,_id:e,_framed:1},s,!0))},this.identity_select=function(e){var t=e.get_single_selection();this.enable_command("delete",!!t&&1<e.rowcount&&this.env.identities_level<2),t&&this.load_identity(t,"edit-identity")},this.load_identity=function(e,t){var s;(s=this.get_frame_window(this.env.contentframe))&&(e||"add-identity"==t)&&(e||this.identity_list.clear_selection(),this.location_href({_action:t,_iid:e,_framed:1},s,!0))},this.delete_identity=function(e){(e=!e&&this.identity_list?this.identity_list.get_single_selection():e)&&this.confirm_dialog(this.get_label("deleteidentityconfirm"),"delete",function(){ref.http_post("settings/delete-identity",{_iid:e},!0)})},this.delete_response=function(e){(e=!e&&this.responses_list?this.responses_list.get_single_selection():e)&&this.confirm_dialog(this.get_label("deleteresponseconfirm"),"delete",function(){ref.http_post("settings/delete-response",{_id:e},!0)})},this.update_identity_row=function(e,t,s){var i=this.identity_list,e=this.html_identifier(e);s?(i.insert_row({id:"rcmrow"+e,cols:[{className:"mail",innerHTML:t}]}),i.select(e)):i.update_row(e,[t])},this.update_response_row=function(e,t,s){var i=this.responses_list;s?(i.insert_row({id:"rcmrow"+e,cols:[{className:"name",innerHTML:t}]}),i.select(e)):i.update_row(e,[t])},this.remove_response=function(e){this.responses_list&&(this.responses_list.remove_row(e),this.show_contentframe(!1)),this.enable_command("delete",!1)},this.remove_identity=function(e){var t=this.identity_list,s=this.html_identifier(e);t&&e&&(t.remove_row(s),this.show_contentframe(!1)),this.enable_command("delete",!1)},this.init_subscription_list=function(){var e=RegExp.escape(this.env.delimiter);this.last_sub_rx=RegExp("["+e+"]?[^"+e+"]+$"),this.subscription_list=new rcube_treelist_widget(this.gui_objects.subscriptionlist,{selectable:!0,tabexit:!1,parent_focus:!0,id_prefix:"rcmli",id_encode:this.html_identifier_encode,id_decode:this.html_identifier_decode,searchbox:"#foldersearch"}),this.subscription_list.addEventListener("select",function(e){ref.subscription_select(e.id)}).addEventListener("collapse",function(e){ref.folder_collapsed(e)}).addEventListener("expand",function(e){ref.folder_collapsed(e)}).addEventListener("search",function(e){e.query&&ref.subscription_select()}).draggable({cancel:"li.mailbox.root,input,div.treetoggle,.custom-control"}).droppable({accept:function(e){var t,s;return!!e.is(".mailbox")&&(e=ref.folder_id2name(e.attr("id")),t=ref.folder_id2name(this.id),s=ref.env.subscriptionrows[e],ref.env.subscriptionrows[t],s)&&!s[2]&&t!=e.replace(ref.last_sub_rx,"")&&!t.startsWith(e+ref.env.delimiter)},drop:function(e,t){var t=ref.folder_id2name(t.draggable.attr("id")),s=ref.folder_id2name(this.id);ref.subscription_move_folder(t,s)}})},this.folder_id2name=function(e){return e?ref.html_identifier_decode(e.replace(/^rcmli/,"")):null},this.subscription_select=function(e){var t;e&&"*"!=e&&(t=this.env.subscriptionrows[e])?(this.env.mailbox=e,this.show_folder(e),this.enable_command("delete-folder",!t[2])):(this.env.mailbox=null,this.show_contentframe(!1),this.enable_command("delete-folder","purge",!1))},this.subscription_move_folder=function(e,t){var s,i;e&&null!==t&&e!=t&&t!=e.replace(this.last_sub_rx,"")&&(s=e.split(this.env.delimiter).pop(),(i=""===t||"*"===t?s:t+this.env.delimiter+s)!=e)&&this.confirm_dialog(this.get_label("movefolderconfirm"),"move",function(){ref.http_post("rename-folder",{_folder_oldname:e,_folder_newname:i},ref.set_busy(!0,"foldermoving"))},{button_class:"save move"})},this.create_folder=function(){this.show_folder("",this.env.mailbox)},this.delete_folder=function(e){(e=e||this.env.mailbox)&&this.confirm_dialog(this.get_label("deletefolderconfirm"),"delete",function(){ref.http_post("delete-folder",{_mbox:e},ref.set_busy(!0,"folderdeleting"))})},this.add_folder_row=function(e,t,s,i,n,a,r,o){if(!this.gui_objects.subscriptionlist)return!1;this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search()),this.subscription_list.is_draggable()&&this.subscription_list.draggable("destroy").droppable("destroy");var l,c,h,d,_,u,m="",p=[],f=[],g=[],v=$(this.gui_objects.subscriptionlist),b=r||$($("li",v).get(1)).clone(!0);if(!b.length)return this.goto_url("folders"),!1;b.attr({id:"rcmli"+this.html_identifier_encode(e),class:a}),r&&r.length||($("ul,div.treetoggle",b).remove(),b.removeData("filtered")),$("a",b).first().text(s).removeAttr("title"),$('input[name="_subscribed[]"]',b).first().val(e).prop({checked:!!n,disabled:!!i}),this.env.subscriptionrows[e]=[t,s,!1],$.each(this.env.subscriptionrows,function(e,t){t[3]=e,p.push(t)});try{_=new Intl.Collator(this.env.locale.replace("_","-"))}catch(e){}for(l in p.sort(function(e,t){for(var s,i,n=e[0].split(ref.env.delimiter),a=t[0].split(ref.env.delimiter),r=n.length,o=0;o<r;o++){if((s=n[o])!==(i=a[o]))return void 0===i?1:_?_.compare(s,i):s<i?-1:1;if(o==r-1)return-1}}),p)u=p[l][3],p[l][2]?(h=u+this.env.delimiter)!=this.env.prefix_ns&&(g.push(u),c=h):c&&u.startsWith(c)?g.push(u):(f.push(u),c=null);for(l=0;l<g.length;l++)e.startsWith(g[l]+this.env.delimiter)&&(d=g[l]);for(l=0;!d&&l<f.length;l++)l&&f[l]==e&&(d=f[l-1]);if(d&&(l=this.subscription_list.get_item(d,!0)))if((a=e.lastIndexOf(this.env.delimiter))&&(m=e.substring(0,a),m=this.subscription_list.get_item(m,!0),$("div.treetoggle",m).length||$("<div>&nbsp;</div>").addClass("treetoggle collapsed").appendTo(m),$("ul",m).length||$("<ul>").css("display","none").appendTo(m)),m&&l==m)$("ul",m).first().append(b);else{for(;(u=$(l).parent().parent().get(0))&&(!m||u!=m)&&$(u).is("li.mailbox");)l=u;$(l).after(b)}else v.append(b);return $.extend(this.env.subscriptionrows,o||{}),this.subscription_list.reset(!0),this.subscription_select(),m&&this.subscription_list.expand(this.folder_id2name(m.id)),(b=b.show().get(0)).scrollIntoView&&b.scrollIntoView(!1),r||this.triggerEvent("clonerow",{row:b,id:e}),b},this.replace_folder_row=function(e,i,n,t,s,a){if(!this.gui_objects.subscriptionlist)return!!this.is_framed()&&window.parent.rcmail.replace_folder_row(e,i,n,t,s,a);this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());var r={},o=this.subscription_list.get_item(e,!0),l=$(o).parent(),c=this.env.subscriptionrows[e],h=e.length,d=c[0].length,c=$('input[name="_subscribed[]"]',o).first().prop("checked");e==i?$(o).attr("class",a||""):($("li",o).each(function(){var e=ref.folder_id2name(this.id),t=ref.env.subscriptionrows[e],s=i+e.slice(h);this.id="rcmli"+ref.html_identifier_encode(s),$('input[name="_subscribed[]"]',this).first().val(s),t[0]=n+t[0].slice(d),r[s]=t,delete ref.env.subscriptionrows[e]}),o=$(o).detach(),delete this.env.subscriptionrows[e],l.get(0)==this.gui_objects.subscriptionlist||$("li",l).length||$("ul,div.treetoggle",l.parent()).remove(),this.add_folder_row(i,n,t,s,c,a,o,r))},this.remove_folder_row=function(e){this.subscription_list.is_search()&&(this.subscription_select(),this.subscription_list.reset_search());var t=[],s=this.subscription_list.get_item(e,!0);$("li",s).each(function(){t.push(ref.folder_id2name(this.id))}),this.subscription_list.remove(e),t.push(e),$.each(t,function(e,t){delete ref.env.subscriptionrows[t]})},this.subscribe=function(e){this.change_subscription_state(e,!0)},this.unsubscribe=function(e){this.change_subscription_state(e,!1)},this.change_subscription_state=function(e,t){var s,i;e&&(i=this.display_message("folder"+(s=t?"":"un")+"subscribing","loading"),this.http_post(s+"subscribe",{_mbox:e},i),$(this.gui_objects.subscriptionlist).find('input[value="'+e+'"]').prop("checked",t))},this.show_folder=function(e,t,s){var i=window,e="&_action="+(""===e?"add":"edit")+"-folder&_mbox="+urlencode(e);t&&(e+="&_path="+urlencode(t)),(t=this.get_frame_window(this.env.contentframe))&&(i=t,e+="&_framed=1"),0<=String(i.location.href).indexOf(e)&&!s?this.show_contentframe(!0):this.location_href(this.env.comm_path+e,i,!0)},this.disable_subscription=function(e){e=this.subscription_list.get_item(e,!0);e&&$('input[name="_subscribed[]"]',e).first().prop("disabled",!0)},this.reset_subscription=function(e,t){e=this.subscription_list.get_item(e,!0);e&&$('input[name="_subscribed[]"]',e).first().prop("checked",t)},this.folder_size=function(e){var t=this.set_busy(!0,"loading");this.http_post("folder-size",{_mbox:e},t)},this.folder_size_update=function(e){$("#folder-size").replaceWith(e)},this.folder_filter=function(s){this.subscription_list.reset_search(),this.subscription_list.container.children("li").each(function(){var e,t=ref.folder_id2name(this.id);if("---"!=s)if(s){if(t!==s)return void $(this).data("filtered",!0).hide()}else for(e in ref.env.ns_roots)if(t===ref.env.ns_roots[e])return void $(this).data("filtered",!0).hide();$(this).removeData("filtered").show()})},this.init_button=function(e,t){var s,i=document.getElementById(t.id);i&&(s=!1,"image"==t.type&&(i=i.parentNode,s=!0),i._command=e,i._id=t.id,t.sel&&(i.onmousedown=function(e){return ref.button_sel(this._command,this._id)},i.onmouseup=function(e){return ref.button_out(this._command,this._id)},s)&&((new Image).src=t.sel),t.over)&&(i.onmouseover=function(e){return ref.button_over(this._command,this._id)},i.onmouseout=function(e){return ref.button_out(this._command,this._id)},s)&&((new Image).src=t.over)},this.init_buttons=function(){for(var e in this.buttons)if("string"==typeof e)for(var t=0;t<this.buttons[e].length;t++)this.init_button(e,this.buttons[e][t])},this.set_button=function(e,t){for(var s,i,n=this.buttons[e],a=n?n.length:0,r=0;r<a;r++)s=n[r],(i=document.getElementById(s.id))&&s.status!==t&&("image"!=s.type||s.status?s.status||(s.pas=String(i.className)):(s.pas=i._original_src||i.src,i.runtimeStyle&&i.runtimeStyle.filter&&i.runtimeStyle.filter.match(/src=['"]([^'"]+)['"]/)&&(s.pas=RegExp.$1)),s.status=t,"image"==s.type&&s[t]?i.src=s[t]:void 0!==s[t]&&(i.className=s[t]),"input"==s.type||"button"==s.type?i.disabled="pas"==t:$(i).attr({tabindex:"pas"==t||"sel"==t?"-1":$(i).attr("data-tabindex")||"0","aria-disabled":"pas"==t||"sel"==t?"true":"false"}))},this.set_alttext=function(e,t){for(var s,i,n=this.buttons[e],a=n?n.length:0,r=0;r<a;r++)i=n[r],s=document.getElementById(i.id),t=this.get_label(t),s&&"image"==i.type?(s.setAttribute("alt",t),(i=s.parentNode)&&"a"==i.tagName.toLowerCase()&&i.setAttribute("title",t)):s&&s.setAttribute("title",t)},this.button_over=function(e,t){this.button_event(e,t,"over")},this.button_sel=function(e,t){this.button_event(e,t,"sel")},this.button_out=function(e,t){this.button_event(e,t,"act")},this.button_event=function(e,t,s){for(var i,n,a=this.buttons[e],r=a?a.length:0,o=0;o<r;o++)(i=a[o]).id==t&&"act"==i.status&&(i[s]&&(n=document.getElementById(i.id))&&(n["image"==i.type?"src":"className"]=i[s]),"sel"==s)&&(this.buttons_sel[t]=e)},this.set_pagetitle=function(e){e&&document.title&&(document.title=e)},this.display_message=function(e,t,s,i){if(e&&e.length&&/^[a-z._]+$/.test(e)&&(e=this.get_label(e)),this.is_framed())return parent.rcmail.display_message(e,t,s);if(!this.gui_objects.message)return"loading"!=t&&(this.pending_message=[e,t,s,i]),1;t?"loading"==t&&(i=i||"loading",s=s||1e3*this.env.request_timeout,e=e||this.get_label("loading")):t="notice",i=i||this.html_identifier(e);var n,a=new Date,r=t+a.getTime();if(!s)switch(t){case"error":case"warning":s=2*this.message_time;break;case"uploading":s=0;break;default:s=this.message_time}return this.messages[i]?(this.messages[i].obj&&$("div.content",this.messages[i].obj).html(e),"loading"==t&&this.messages[i].labels.push({id:r,msg:e}),this.messages[i].elements.push(r),setTimeout(function(){ref.hide_message(r,"loading"==t)},s)):(n=$("<div>").addClass(t+" content").html(e).data("key",i),$(this.gui_objects.message).append(n).show(),this.messages[i]={obj:n,elements:[r]},"loading"==t?this.messages[i].labels=[{id:r,msg:e}]:"uploading"!=t&&n.click(function(){return ref.hide_message(n)}).attr("role","alert"),this.triggerEvent("message",{message:e,type:t,timeout:s,object:n}),0<s&&setTimeout(function(){ref.hide_message(r,"loading"!=t)},s)),r},this.hide_message=function(e,t){if(this.is_framed())return parent.rcmail.hide_message(e,t);if(this.gui_objects.message){var s,i,n,a,r=this.messages;if("object"==typeof e)s=(a=$(e)).data("key"),this.hide_message_object(a,t),r[s]&&delete r[s];else for(s in r)for(i in r[s].elements)if(r[s]&&r[s].elements[i]==e)if(r[s].elements.splice(i,1),r[s].elements.length){if("loading"==s)for(n in r[s].labels)r[s].labels[n].id==e?delete r[s].labels[n]:(a=r[s].labels[n].msg,$("div.content",r[s].obj).html(a))}else this.hide_message_object(r[s].obj,t),delete r[s]}},this.hide_message_object=function(e,t){t?e.fadeOut(600,function(){$(this).remove()}):e.hide().remove()},this.clear_messages=function(){if(this.is_framed())return parent.rcmail.clear_messages();var e,t,s=this.messages;for(e in s)for(t in s[e].elements)s[e].obj&&this.hide_message_object(s[e].obj);this.messages={}},this.display_progress=function(e){var t;e&&e.name&&(t=this.messages["progress"+e.name],e.label||(e.label=this.get_label("uploadingmany")),t?!e.total||100<=e.percent?this.hide_message(t.obj):(e.text&&(e.label+=" "+e.text),t.obj.text(e.label)):(!e.percent||e.percent<100)&&this.display_message(e.label,"uploading",0,"progress"+e.name))},this.show_popup_dialog=function(e,t,i,n){var s,a,r,o,l,c,h,d;return this.is_framed()?parent.rcmail.show_popup_dialog(e,t,i,n):(s=$('<div class="popup">'),"object"==typeof e?(s.append(e),$(e).is("iframe")&&s.addClass("iframe")):s.html(e),a=0,n&&n.button_classes&&$.each(i,function(e,t){var s=n.button_classes[a];s&&(i[e]=(s=s,e=e,"function"==typeof(t=t)?t={click:t,text:e,class:s}:i.class=s,t)),a++}),n=$.extend({title:t,buttons:i,modal:!0,resizable:!0,width:500,close:function(e,t){$(this).remove()}},n||{}),s.dialog(n),s[0].jqref=$,n.width&&s.width(n.width),n.height&&s.height(n.height),r=s.parent(),n.noresize?s.css("width","auto"):(t=(e=$(window)).width(),e=e.height(),o=s.width(),l=n.height||s[0].scrollHeight+20,c=$(".ui-dialog-titlebar",r).outerHeight()||0,h=$(".ui-dialog-buttonpane",r).outerHeight()||0,d=2*(parseInt(r.css("padding-top"))+parseInt(s.css("padding-top"))),s.dialog("option",{height:Math.min(e-40,l+c+h+d+2),width:Math.min(t-20,o+28)})),r.on("keydown keyup",function(e){e.stopPropagation()}),r.find("input[data-submit]").on("keydown",function(e){13==e.which&&r.find(".ui-dialog-buttonpane button.mainaction").click()}),this.triggerEvent("dialog-open",{obj:s}),s)},this.simple_dialog=function(e,t,s,i){i=i||{};function n(e,t,s){(s=s||this).jqref(s).dialog("close"),i.cancel_func&&i.cancel_func(e,ref)}var t=this.get_label(t),a=i.button||"save",r=i.button_class||a.replace(/^[^\.]+\./i,""),o=i.cancel_button||"cancel",l=i.cancel_class||o.replace(/^[^\.]+\./i,""),o=[{text:this.get_label(o),class:l.replace(/close/i,"cancel"),click:n}];return s?o.unshift({text:this.get_label(a),class:"mainaction "+r,click:function(e,t){s(e,ref)&&n(e,0,this)}}):o[0].class+=" mainaction",this.show_popup_dialog(e,t,o,i)},this.alert_dialog=function(e,t,s){return s=$.extend(s||{},{cancel_button:"ok",cancel_class:"save",cancel_func:t,noresize:!0}),this.simple_dialog(e,s.title||"alerttitle",null,s)},this.confirm_dialog=function(e,t,s,i){return i=$.extend(i||{},{button:t||"continue",noresize:!0}),this.simple_dialog(e,i.title||"confirmationtitle",function(e,t){return s(e,t),!0},i)},this.set_page_buttons=function(){this.enable_command("nextpage","lastpage",this.env.pagecount>this.env.current_page),this.enable_command("previouspage","firstpage",1<this.env.current_page),this.update_pagejumper()},this.select_folder=function(e,t,s){this.savedsearchlist&&this.savedsearchlist.select(""),this.treelist?this.treelist.select(e):this.gui_objects.folderlist&&($("li.selected",this.gui_objects.folderlist).removeClass("selected"),$(this.get_folder_li(e,t,s)).addClass("selected"),this.triggerEvent("selectfolder",{folder:e,prefix:t}))},this.mark_folder=function(e,t,s,i){$(this.get_folder_li(e,s,i)).addClass(t),this.triggerEvent("markfolder",{folder:e,mark:t,status:!0})},this.unmark_folder=function(e,t,s,i){$(this.get_folder_li(e,s,i)).removeClass(t),this.triggerEvent("markfolder",{folder:e,mark:t,status:!1})},this.get_folder_li=function(e,t,s){if(t=t||"rcmli",this.gui_objects.folderlist)return e=this.html_identifier(e,s),document.getElementById(t+e)},this.set_message_coltypes=function(e,t,s){this.env.listcols=e,this.msglist_setup(this.env.layout);var i,n,a,r,o,l,c=this.message_list,h=c?c.thead:null,d=this.env.msglist_cols;if(this.env.coltypes||(this.env.coltypes={}),h){if(t){for(r in h.innerHTML="",l=document.createElement("tr"),d)a=d[r],(i=document.createElement("th")).innerHTML=t[a].html||"",t[a].id&&(i.id=t[a].id),t[a].className&&(i.className=t[a].className),l.appendChild(i);c.checkbox_selection&&c.insert_checkbox(l,"thead"),h.appendChild(l)}for(r=0,o=d.length;r<o;r++)n=d[c.checkbox_selection?r-1:r],!(i=h.rows[0].cells[r])||"from"!=n&&"to"!=n&&"fromto"!=n||$(i).attr("rel",n).find("span,a").text(this.get_label("fromto"==n?s:n))}this.env.subject_col=null,this.env.flagged_col=null,this.env.status_col=null,this.env.coltypes.folder&&(this.env.coltypes.folder.hidden=!(this.env.search_request||this.env.search_id)||"base"==this.env.search_scope),0<=(r=$.inArray("subject",d))&&(this.env.subject_col=r,c)&&(c.subject_col=r),0<=(r=$.inArray("flag",d))&&(this.env.flagged_col=r),0<=(r=$.inArray("status",d))&&(this.env.status_col=r),c&&(c.hide_column("folder",this.env.coltypes.folder&&this.env.coltypes.folder.hidden||$.inArray("folder",d)<0),c.init_header())},this.set_rowcount=function(e,t){if(t&&t!=this.env.mailbox)return!1;$(this.gui_objects.countdisplay).html(e),this.set_page_buttons()},this.set_mailboxname=function(e){this.gui_objects.mailboxname&&e&&(this.gui_objects.mailboxname.innerHTML=e)},this.set_quota=function(e){this.gui_objects.quotadisplay&&e&&"text"==e.type&&$(this.gui_objects.quotadisplay).text((e.percent||0)+"%").attr("title",e.title||""),this.triggerEvent("setquota",e),this.env.quota_content=e},this.set_trash_count=function(e){this[(e?"un":"")+"mark_folder"](this.env.trash_mailbox,"empty","",!0)},this.set_unread_count=function(e,t,s,i){if(!this.gui_objects.mailboxlist)return!1;this.env.unread_counts[e]=t,this.set_unread_count_display(e,s),i?this.mark_folder(e,i,"",!0):t||this.unmark_folder(e,"recent","",!0),this.mark_all_read_state()},this.set_unread_count_display=function(e,t){var s,i,n,a,r,o;if(i=this.get_folder_li(e,"",!0)){if(n=this.env.unread_counts[e]||0,!(r=(s=$(i).children("a").eq(0)).children("span.unreadcount")).length&&n&&(r=$("<span>").addClass("unreadcount skip-content").appendTo(s)),s=/\s+\([0-9]+\)$/i,a=0,(o=i.getElementsByTagName("div")[0])&&o.className.match(/collapsed/))for(var l in this.env.unread_counts)l.startsWith(e+this.env.delimiter)&&(a+=this.env.unread_counts[l]);n&&r.length?r.html(this.env.unreadwrap.replace(/%[sd]/,n)):r.length&&r.remove(),s=new RegExp(RegExp.escape(this.env.delimiter)+"[^"+RegExp.escape(this.env.delimiter)+"]+$"),e.match(s)&&this.set_unread_count_display(e.replace(s,""),!1),0<n+a?$(i).addClass("unread"):$(i).removeClass("unread")}s=/^\([0-9]+\)\s+/i,t&&document.title&&(o="",r=String(document.title),o=n&&r.match(s)?r.replace(s,"("+n+") "):n?"("+n+") "+r:r.replace(s,""),this.set_pagetitle(o))},this.set_headers=function(e){this.gui_objects.all_headers_box&&e&&$(this.gui_objects.all_headers_box).html(e).show()},this.show_headers=function(e,t){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&this.env.uid&&($(t).removeClass("show-headers").addClass("hide-headers"),$(this.gui_objects.all_headers_row).show(),t.onclick=function(){ref.command("hide-headers","",t)},this.gui_objects.all_headers_box.innerHTML||this.http_request("headers",{_uid:this.env.uid,_mbox:this.env.mailbox},this.display_message("","loading")))},this.hide_headers=function(e,t){this.gui_objects.all_headers_row&&this.gui_objects.all_headers_box&&($(t).removeClass("hide-headers").addClass("show-headers"),$(this.gui_objects.all_headers_row).hide(),t.onclick=function(){ref.command("show-headers","",t)})},this.folder_selector=function(e,t){this.entity_selector("folder-selector",t,this.env.mailboxes_list,function(e,t){var s=0,i=0,n=ref.env.delimiter,e=ref.env.mailboxes[e],a=e.id,r=$("<li>");for(e.virtual?t.addClass("virtual").attr({"aria-disabled":"true",tabindex:"-1"}):t.addClass("active").data("id",e.id),e.class&&r.addClass(e.class);0<=(i=a.indexOf(n,i));)s++,i++;return t.css("padding-left",s?16*s+"px":0),t.append($("<span>").text(e.name)),r.append(t)},e)},this.addressbook_selector=function(e,t){var s=[];this.entity_selectors["addressbook-selector"]||$.each(this.env.address_sources,function(){var e;this.readonly||(s.push(e=this),$.each(ref.env.contactgroups,function(){e.id===this.source&&s.push(this)}))}),this.entity_selector("addressbook-selector",t,s,function(e,t){return"group"==e.type?t.attr("rel",e.source+":"+e.id).addClass("contactgroup active").data({source:e.source,gid:e.id,id:e.source+":"+e.id}).css("padding-left","16px"):t.addClass("addressbook active").data("id",e.id),t.append($("<span>").text(e.name)),$("<li>").append(t)},e)},this.contactgroup_selector=function(e,t){this.entity_selector("contactgroup-selector",t,this.env.contactgroups,function(e,t){if(ref.env.source===e.source)return t.addClass("contactgroup active").data({id:e.id}).append($("<span>").text(e.name)),$("<li>").append(t)},e)},this.entity_selector=function(e,t,s,i,n){var a,r,o,l=this.entity_selectors[e];l||(a=[],l=$("<div>").attr("id",e).addClass("popupmenu"),r=$("<ul>").addClass("toolbarmenu menu"),(o=document.createElement("a")).href="#",o.className="icon",$.each(s,function(e){var t=$(o.cloneNode(!1)).attr("rel",this.id);a.push(i(this,t,e))}),r.append(a).appendTo(l),l.css({left:"-1000px",top:"-1000px"}).appendTo(document.body).show(),10<a.length&&l.css("max-height",10*$("li",l)[0].offsetHeight+9),l.on("click","a.active",function(e){l.data("callback")($(this).data("id"),this)}),this.entity_selectors[e]=l),l.data("callback",t),this.show_menu(e,!0,n)},this.destroy_entity_selector=function(e){$("#"+e).remove(),delete this.entity_selectors[e],this.triggerEvent("destroy-entity-selector",{name:e})},this.show_menu=function(e,t,s){var i,n,a,r="object"==typeof e?e.menu:e,o=$("#"+r),l=s&&s.target?$(s.target):$(o.attr("rel")||"#"+r+"link"),c=rcube_event.is_keyboard(s),h=o.attr("data-align")||"",d=!1;if("A"!=l.get(0).tagName&&l.closest("a").length&&(l=l.closest("a")),"string"==typeof e&&(e={menu:r}),!(o=o.length?o:this.triggerEvent("menu-get",{name:r,props:e,originalEvent:s}))||!o.length)return this.triggerEvent(!1===t?"menu-close":"menu-open",{name:r,props:e,originalEvent:s});if(o.appendTo(document.body),(t=void 0===t?!o.is(":visible"):t)&&l.length&&(i=$(window),n=l.offset(),a=0<=h.indexOf("bottom"),d="menuitem"==l.attr("role")||0<l.closest("[role=menuitem]").length,l.offsetWidth=l.outerWidth(),l.offsetHeight=l.outerHeight(),!a&&n.top+l.offsetHeight+o.height()>i.height()&&(a=!0),0<=h.indexOf("right")?n.left=n.left+l.outerWidth()-o.width():d&&(n.left=n.left+l.offsetWidth-5,n.top-=l.offsetHeight),n.left+o.width()>i.width()&&(n.left=i.width()-o.width()-12),n.top=Math.max(0,n.top+(a?-o.height():l.offsetHeight)),o.css({left:n.left+"px",top:n.top+"px"})),t){for(var _=this.menu_stack.length-1;d&&0<=_;_--)$(l).parents("#"+this.menu_stack[_]).length||"menuitem"==$(s.target).parent().attr("role")||this.hide_menu(this.menu_stack[_],s);d&&this.menu_stack.length?(o.data("parent",$.last(this.menu_stack)),o.css("z-index",($("#"+$.last(this.menu_stack)).css("z-index")||0)+1)):!d&&this.menu_stack.length&&this.hide_menu(this.menu_stack[0],s),o.show().attr("aria-hidden","false").data("opener",l.attr("aria-expanded","true").get(0)),this.triggerEvent("menu-open",{name:r,obj:o,props:e,originalEvent:s}),this.menu_stack.push(r),this.menu_keyboard_active=t&&c,this.menu_keyboard_active&&(this.focused_menu=r,o.find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus())}else this.hide_menu(r,s);return t},this.hide_menu=function(e,t){if(this.menu_stack.length){for(var s,i=rcube_event.is_keyboard(t),n=this.menu_stack.length-1;0<=n;n--)s=$("#"+this.menu_stack[n]).hide().attr("aria-hidden","true").data("parent",!1),this.triggerEvent("menu-close",{name:this.menu_stack[n],obj:s,props:{menu:this.menu_stack[n]},originalEvent:t}),this.menu_stack[n]==e&&(n=-1,s.data("opener"))&&($(s.data("opener")).attr("aria-expanded","false"),i)&&s.data("opener").focus(),this.menu_stack.pop();this.menu_stack.length&&i?(this.menu_keyboard_active=!0,this.focused_menu=$.last(this.menu_stack),s&&s.data("opener")||$("#"+this.focused_menu).find("a,input:not(:disabled)").not("[aria-disabled=true]").first().focus()):(this.focused_menu=null,this.menu_keyboard_active=!1)}else this.triggerEvent("menu-close",{name:e,props:{menu:e},originalEvent:t})},this.element_position=function(e,t){var t=$(t),s=$(window),i=t.outerWidth(),n=t.outerHeight(),a=t.data("menu-pos"),r=s.height(),o=$(e).height(),l=$(e).width(),t=t.offset(),c=t.top,t=t.left+i;"bottom"==a?(c+=n,t-=i):t-=5,r<c+o&&(c-=o-n)<0&&(c=Math.max(0,(r-o)/2)),t+l>s.width()&&(t-=l+i),e.css({left:t+"px",top:c+"px"})},this.editor_init=function(e,t){this.editor=new rcube_text_editor(e||this.env.editor_config,t)},this.html2plain=function(e,t){return this.format_converter(e,"html",t)},this.plain2html=function(e,t){return this.format_converter(e,"plain",t)},this.format_converter=function(e,t,s){if(!e||"html"==t&&!e.replace(/<[^>]+>|&nbsp;|\xC2\xA0|\s/g,"").length||"html"!=t&&!e.replace(/\xC2\xA0|\s/g,"").length)s&&setTimeout(function(){s("")},50);else{var i=this.env.editor_warned||confirm(this.get_label("editorwarning"));if(this.env.editor_warned=!0,!i)return!1;var i="?_task=utils&_action="+("html"==t?"html2text":"text2html"),n=this.set_busy(!0,"converting");$.ajax({type:"POST",url:i,data:e,contentType:"application/octet-stream",error:function(e,t,s){ref.http_error(e,t,s,n)},success:function(e){ref.set_busy(!1,null,n),s&&s(e)}})}return!0},this.url=function(e,t){var s,i="string"==typeof t?t:"",n=("string"!=typeof e?t=e:t&&"object"==typeof t||(t={}),e?t._action=e:this.env.action&&(t._action=this.env.action),this.env.comm_path),a={};for(s in e&&e.match(/([a-z0-9_-]+)\/([a-z0-9-_.]+)/)&&(t._action=RegExp.$2,n=n.replace(/\_task=[a-z0-9_-]+/,"_task="+RegExp.$1)),0===t._framed&&(n=n.replace("&_framed=1",""),t._framed=null),t)void 0!==t[s]&&null!==t[s]&&(a[s]=t[s]);return(a=$.param(a))&&(n+=(-1<n.indexOf("?")?"&":"?")+a),i&&(n+=(-1<n.indexOf("?")?"&":"?")+i),n},this.redirect=function(e,t){!1!==t&&this.set_busy(!0,"loading"),this.is_framed()?(e=e.replace(/&_framed=1/,""),parent.rcmail.redirect(e,t)):(this.env.extwin&&("string"==typeof e?e+=(e.indexOf("?")<0?"?":"&")+"_extwin=1":e._extwin=1),this.location_href(e,window))},this.goto_url=function(e,t,s,i){e=this.url(e,t);i&&(e=this.secure_url(e)),this.redirect(e,s)},this.location_href=function(e,t,s){s&&this.lock_frame(t),"object"==typeof e&&(e=this.env.comm_path+"&"+$.param(e)),bw.ie&&t==window?$("<a>").attr("href",e).appendTo(document.body).get(0).click():t.location.href=e,this.start_keepalive()},this.update_state=function(e){if(window.history.replaceState)try{window.history.replaceState({},document.title,rcmail.url("",e))}catch(e){}},this.http_request=function(i,e,n,t){"POST"!=t&&(t="GET"),(e="object"!=typeof e?rcube_parse_query(e):e)._remote=1,e._unlock=n||0;var s=this.triggerEvent("request"+i,e);if(!1===s)return e._unlock&&this.set_busy(!1,null,e._unlock),!1;if(s&&s.getResponseHeader)return s;void 0!==s&&(e=s)._action&&(i=e._action,delete e._action);s=this.url(i);return this.start_keepalive(),$.ajax({type:t,url:s,data:e,dataType:"json",success:function(e){ref.http_response(e)},error:function(e,t,s){ref.http_error(e,t,s,n,i)}})},this.http_get=this.http_request,this.http_post=function(e,t,s){return this.http_request(e,t,s,"POST")},this.abort_request=function(e){e.request&&e.request.abort(),e.lock&&this.set_busy(!1,null,e.lock)},this.http_response=function(response){if(response){var i,sid,uid,writable,is_multifolder,list,uid,list,uid;if(response.unlock&&this.set_busy(!1,null,response.unlock),this.triggerEvent("responsebefore",{response:response}),this.triggerEvent("responsebefore"+response.action,{response:response}),response.env&&this.set_env(response.env),"object"==typeof response.texts)for(i in response.texts)"string"==typeof response.texts[i]&&this.add_label(i,response.texts[i]);if(response.exec&&eval(response.exec),response.callbacks&&response.callbacks.length)for(i=0;i<response.callbacks.length;i++)this.triggerEvent(response.callbacks[i][0],response.callbacks[i][1]);switch(response.action){case"mark":"show"!=this.env.action&&"preview"!=this.env.action||"SEEN"!=this.env.last_flag||this.set_unread_message(this.env.uid,this.env.mailbox);break;case"delete":"addressbook"==this.task&&(uid=this.contact_list.get_selection(),writable=!1,uid&&this.contact_list.rows[uid]&&(writable=""==this.env.source?(sid=String(uid).replace(/^[^-]+-/,""),sid&&this.env.address_sources[sid]&&!this.env.address_sources[sid].readonly):!this.env.address_sources[this.env.source].readonly),this.enable_command("delete","edit",writable),this.enable_command("export",this.contact_list&&0<this.contact_list.rowcount),this.enable_command("export-selected","print",!1));case"move":"show"==this.env.action?(this.enable_command(this.env.message_commands,!0),this.env.list_post||this.enable_command("reply-list",!1)):"addressbook"==this.task&&this.triggerEvent("listupdate",{list:this.contact_list,folder:this.env.source,rowcount:this.contact_list.rowcount});case"purge":case"expunge":"mail"==this.task&&(this.env.exists||(this.env.contentframe&&this.show_contentframe(!1),this.enable_command(this.env.message_commands,"purge","expunge","select-all","select-none","expand-all","expand-unread","collapse-all",!1)),this.message_list)&&this.triggerEvent("listupdate",{list:this.message_list,folder:this.env.mailbox,rowcount:this.message_list.rowcount});break;case"refresh":case"check-recent":$.each(this.env.recent_flags||{},function(e,t){ref.set_message(e,"deleted",t.deleted),ref.set_message(e,"replied",t.answered),ref.set_message(e,"unread",!t.seen),ref.set_message(e,"forwarded",t.forwarded),ref.set_message(e,"flagged",t.flagged)}),delete this.env.recent_flags;case"getunread":case"search":this.env.qsearch=null;case"list":"mail"==this.task?(is_multifolder=this.is_multifolder_listing(),list=this.message_list,uid=this.env.list_uid,this.enable_command("show","select-all","select-none",0<this.env.messagecount),this.enable_command("expunge","purge",this.env.exists&&!is_multifolder),this.enable_command("import-messages",!is_multifolder),this.enable_command("expand-all","expand-unread","collapse-all",this.env.threading&&this.env.messagecount&&!is_multifolder),list&&("list"!=response.action&&"search"!=response.action||(uid&&("FIRST"===uid?uid=list.get_first_row():"LAST"===uid?uid=list.get_last_row():list.rows[uid]||(uid+="-"+this.env.mailbox),uid&&list.rows[uid]&&list.select(uid),delete this.env.list_uid),this.enable_command("set-listmode",this.env.threads&&!is_multifolder),0<list.rowcount&&!$(document.activeElement).is("input,textarea")&&list.focus(),list.triggerEvent("select")),"getunread"!=response.action)&&this.triggerEvent("listupdate",{list:list,folder:this.env.mailbox,rowcount:list.rowcount})):"addressbook"==this.task&&(list=this.contact_list,uid=this.env.list_uid,this.enable_command("export","select-all","select-none",list&&0<list.rowcount),"list"!=response.action&&"search"!=response.action||(this.enable_command("search-create",""==this.env.source),this.enable_command("search-delete",this.env.search_id),this.update_group_commands(),list&&uid&&("FIRST"===uid?uid=list.get_first_row():"LAST"===uid&&(uid=list.get_last_row()),uid&&list.rows[uid]&&list.select(uid),delete this.env.list_uid,list.triggerEvent("select")),0<list.rowcount&&!$(document.activeElement).is("input,textarea")&&list.focus(),this.triggerEvent("listupdate",{list:list,folder:this.env.source,rowcount:list.rowcount})));break;case"list-contacts":case"search-contacts":this.contact_list&&(0<this.contact_list.rowcount&&this.contact_list.focus(),this.triggerEvent("listupdate",{list:this.contact_list,rowcount:this.contact_list.rowcount}))}response.unlock&&this.hide_message(response.unlock),this.triggerEvent("responseafter",{response:response}),this.triggerEvent("responseafter"+response.action,{response:response}),this.start_keepalive()}},this.http_error=function(e,t,s,i,n){var a=e.statusText;this.set_busy(!1,null,i),e.abort(),this.unload||(e.status&&a?this.display_message(this.get_label("servererror")+" ("+a+")","error"):"timeout"==t?this.display_message("requesttimedout","error"):0==e.status&&"abort"!=t&&this.display_message("connerror","error"),(i=e.getResponseHeader("Location"))&&"compose"!=this.env.action&&this.redirect(i),403==e.status?(this.is_framed()?parent:window).location.reload():"keep-alive"==n&&setTimeout(function(){ref.keep_alive(),ref.start_keepalive()},3e4))},this.session_error=function(e){this.env.server_error=401,"compose"==this.env.action?(this.save_compose_form_local(),this.compose_skip_unsavedcheck=!0,this.env.session_lifetime=0,this._keepalive&&clearInterval(this._keepalive),this._refresh&&clearInterval(this._refresh)):e&&setTimeout(function(){ref.redirect(e,!0)},2e3)},this.iframe_loaded=function(e){e=e||this.env.frame_lock,this.set_busy(!1,null,e),this.submit_timer&&clearTimeout(this.submit_timer)},this.multi_thread_http_request=function(e){var t,s,i=(new Date).getTime(),n=e.threads||1;for(e.reqid=i,e.running=0,e.requests=[],e.result=[],e._items=$.extend([],e.items),e.lock||(e.lock=this.display_message("","loading")),this.http_request_jobs[i]=e,t=0;t<n&&void 0!==(s=e._items.shift());t++)e.running++,e.requests.push(this.multi_thread_send_request(e,s));return i},this.multi_thread_send_request=function(e,t){var s,i,n;if(e.postdata){for(s in i={},e.postdata)i[s]=String(e.postdata[s]).replace("%s",t);i._reqid=e.reqid}else if("string"==typeof e.query)n=e.query.replace("%s",t),n+="&_reqid="+e.reqid;else if("object"==typeof e.query&&e.query){for(s in n={},e.query)n[s]=String(e.query[s]).replace("%s",t);n._reqid=e.reqid}return i?this.http_post(e.action,i):this.http_request(e.action,n)},this.multi_thread_http_response=function(e,t){var s=this.http_request_jobs[t];!s||s.running<=0||s.cancelled||(s.running--,s.onresponse&&"function"==typeof s.onresponse&&s.onresponse(e),s.result=$.extend(s.result,e),void 0!==(e=s._items.shift())?(s.running++,s.requests.push(this.multi_thread_send_request(s,e))):0==s.running&&(s.whendone&&"function"==typeof s.whendone&&s.whendone(s.result),this.set_busy(!1,"",s.lock),delete this.http_request_jobs[t]))},this.multi_thread_request_abort=function(e){var t=this.http_request_jobs[e];if(t){for(var s=0;0<t.running&&s<t.requests.length;s++)t.requests[s].abort&&t.requests[s].abort();t.running=0,t.cancelled=!0,this.set_busy(!1,"",t.lock)}},this.async_upload_form=function(e,t,s){var i=(new Date).getTime(),n="rcmupload"+i;return this.dummy_iframe(n).on("load",{ts:i},s),$(e).attr({target:n,action:this.url(t,{_id:this.env.compose_id||"",_uploadid:i,_from:this.env.action}),method:"POST",enctype:"multipart/form-data"}).submit(),n},this.dummy_iframe=function(e,t){return $("<iframe>").attr({name:e,src:t,style:"width:0;height:0;visibility:hidden","aria-hidden":"true"}).appendTo(document.body)},this.document_drag_hover=function(e,t){$(this.gui_objects.filedrop)[t?"addClass":"removeClass"]("active")},this.file_drag_hover=function(e,t){e.preventDefault(),e.stopPropagation(),$(this.gui_objects.filedrop)[t?"addClass":"removeClass"]("hover")},this.file_dropped=function(e){this.file_drag_hover(e,!1);var t,s=e.target.files||e.dataTransfer.files,i={_id:this.env.compose_id||this.env.cid||"",_remote:1,_from:this.env.action};s&&s.length?this.file_upload(s,i,{name:(this.env.filedrop.fieldname||"_file")+(this.env.filedrop.single?"":"[]"),single:this.env.filedrop.single,filter:this.env.filedrop.filter,action:ref.env.filedrop.action}):(s=e.dataTransfer.getData("roundcube-uri"))&&(t="upload"+(new Date).getTime(),e=$("<span>").text(e.dataTransfer.getData("roundcube-name")||this.get_label("attaching")).html(),i._uri=s,this.add2attachment_list(i._uploadid=t,{name:"",html:e,classname:"uploading",complete:!1})||(this.file_upload_id=this.set_busy(!0,"attaching")),this.http_post(this.env.filedrop.action||"upload",i))},this.file_upload=function(e,t,i){if(!window.FormData||!e||!e.length)return!1;var s,n,a,r=0,o=0,l=new FormData,c=i.name||"_file[]",h=i.single?1:e.length;for(args=$.extend({_remote:1,_from:this.env.action},t||{}),n=0;o<h&&(s=e[n]);n++)i.filter&&!s.type.match(new RegExp(i.filter))||(l.append(c,s),r+=s.size,a=s.name,o++);if(o){if(this.env.max_filesize&&this.env.filesizeerror&&r>this.env.max_filesize)return this.display_message(this.env.filesizeerror,"error"),!1;if(this.env.max_filecount&&this.env.filecounterror&&o>this.env.max_filecount)return this.display_message(this.env.filecounterror,"error"),!1;var d="upload"+(new Date).getTime(),t=1<o?this.get_label("uploadingmany"):a,t=$("<span>").text(t).html();this.add2attachment_list(d,{name:"",html:t,classname:"uploading",complete:!1})||i.lock||(i.lock=this.file_upload_id=this.set_busy(!0,"uploading")),args._uploadid=d,args._unlock=i.lock,this.uploads[d]=$.ajax({type:"POST",dataType:"json",url:this.url(i.action||"upload",args),contentType:!1,processData:!1,timeout:this.uploadTimeout,data:l,headers:{"X-Roundcube-Request":this.env.request_token},xhr:function(){var e=$.ajaxSettings.xhr();return e.upload&&ref.labels.uploadprogress&&(e.upload.onprogress=function(e){e=ref.file_upload_msg(e.loaded,e.total);e&&$("#"+d).find(".uploading").text(e)}),e},success:function(e){delete ref.uploads[d],ref.http_response(e)},error:function(e,t,s){delete ref.uploads[d],ref.remove_from_attachment_list(d),ref.http_error(e,t,s,i.lock,"attachment")}})}return!0},this.file_upload_msg=function(e,t){var s,i;if(t&&e<t)return s=Math.round(e/t*100),i=ref.get_label("uploadprogress"),1073741824<=t?(t=parseFloat(t/1073741824).toFixed(1)+" ".this.get_label("GB"),e=parseFloat(e/1073741824).toFixed(1)):1048576<=t?(t=parseFloat(t/1048576).toFixed(1)+" "+this.get_label("MB"),e=parseFloat(e/1048576).toFixed(1)):1024<=t?(t=parseInt(t/1024)+" "+this.get_label("KB"),e=parseInt(e/1024)):t=t+" "+this.get_label("B"),i.replace("$percent",s+"%").replace("$current",e).replace("$total",t)},this.start_keepalive=function(){var e;!this.env.session_lifetime||this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._keepalive&&clearInterval(this._keepalive),e=.5*Math.min(1800,this.env.session_lifetime)*1e3,this._keepalive=setInterval(function(){ref.keep_alive()},e<3e4?3e4:e))},this.start_refresh=function(){!this.env.refresh_interval||this.env.framed||this.env.extwin||"login"==this.task||"print"==this.env.action||(this._refresh&&clearInterval(this._refresh),this._refresh=setInterval(function(){ref.refresh()},1e3*this.env.refresh_interval))},this.keep_alive=function(){this.busy||this.http_request("keep-alive")},this.refresh=function(){var e,t;this.busy?setTimeout(function(){ref.refresh(),ref.start_refresh()},1e4):(e={},t=this.set_busy(!0,"refreshing"),(e="mail"==this.task&&this.gui_objects.mailboxlist?this.check_recent_params():e)._last=Math.floor(this.env.lastrefresh.getTime()/1e3),this.env.lastrefresh=new Date,this.http_post("refresh",e,t))},this.check_recent_params=function(){var e={_mbox:this.env.mailbox};return this.gui_objects.mailboxlist&&(e._folderlist=1),this.gui_objects.quotadisplay&&(e._quota=1),this.env.search_request&&(e._search=this.env.search_request),this.gui_objects.messagelist&&(e._list=1,e._uids=$.map(this.message_list.rows,function(e,t){return t}).join(",")),e},this.quote_html=function(e){return String(e).replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},this.opener=function(e,t){var s,i=window.opener;try{if(i&&!i.closed&&i!==window){if((i=e&&(!i.rcmail||i.rcmail.env.framed)&&i.parent&&i.parent.rcmail?i.parent:i).rcmail&&t)for(s in t)if(i.rcmail.env[s]!=t[s])return;return i.rcmail}}catch(e){}},this.get_single_uid=function(){var e=this.env.uid||(this.message_list?this.message_list.get_single_selection():null);return ref.triggerEvent("get_single_uid",{uid:e})||e},this.get_single_cid=function(){var e=this.env.cid||(this.contact_list?this.contact_list.get_single_selection():null);return ref.triggerEvent("get_single_cid",{cid:e})||e},this.get_message_mailbox=function(e){var t;return this.env.messages&&e&&(t=this.env.messages[e])&&t.mbox?t.mbox:/^[0-9]+-(.*)$/.test(e)?RegExp.$1:this.env.mailbox},this.params_from_uid=function(e,t){return(t=t||{})._uid=String(e).split("-")[0],t._mbox=this.get_message_mailbox(e),t},this.get_caret_pos=function(e){return void 0!==e.selectionEnd?e.selectionEnd:e.value.length},this.set_caret_pos=function(e,t){try{e.setSelectionRange&&e.setSelectionRange(t,t)}catch(e){}},this.get_input_selection=function(e){var t=0,s=0,i="";return"number"==typeof e.selectionStart&&"number"==typeof e.selectionEnd&&(i=e.value,t=e.selectionStart,s=e.selectionEnd),{start:t,end:s,text:i.substr(t,s-t)}},this.lock_form=function(e,t){e&&e.elements&&(t&&(this.disabled_form_elements=[]),$.each(e.elements,function(){"hidden"!=this.type&&(t&&this.disabled?ref.disabled_form_elements.push(this):(t||$.inArray(this,ref.disabled_form_elements)<0)&&(this.disabled=t))}))},this.mailto_handler_uri=function(){return location.href.split("?")[0]+"?_task=mail&_action=compose&_to=%s"},this.register_protocol_handler=function(e){try{window.navigator.registerProtocolHandler("mailto",this.mailto_handler_uri(),e)}catch(e){this.display_message(String(e),"error")}},this.check_protocol_handler=function(e,t){var s=window.navigator;s&&"function"==typeof s.registerProtocolHandler?"function"==typeof s.isProtocolHandlerRegistered?(s=s.isProtocolHandlerRegistered("mailto",this.mailto_handler_uri()))&&$(t).parent().find(".mailtoprotohandler-status").html(s):$(t).click(function(){return ref.register_protocol_handler(e),!1}):$(t).addClass("disabled").click(function(){return ref.display_message("nosupporterror","error"),!1})},this.browser_capabilities_check=function(){this.env.browser_capabilities||(this.env.browser_capabilities={}),$.each(["pdf","flash","tiff","webp","pgpmime"],function(){void 0===ref.env.browser_capabilities[this]&&(ref.env.browser_capabilities[this]=ref[this+"_support_check"]())})},this.browser_capabilities=function(){if(!this.env.browser_capabilities)return"";var e,t=[];for(e in this.env.browser_capabilities)t.push(e+"="+this.env.browser_capabilities[e]);return t.join()},this.tiff_support_check=function(){return this.image_support_check("tiff"),0},this.webp_support_check=function(){return this.image_support_check("webp"),0},this.image_support_check=function(t){setTimeout(function(){var e=new Image;e.onload=function(){ref.env.browser_capabilities[t]=1},e.onerror=function(){ref.env.browser_capabilities[t]=0},e.src=ref.assets_path("program/resources/blank."+t)},10)},this.pdf_support_check=function(){if("pdfViewerEnabled"in navigator)return navigator.pdfViewerEnabled?1:0;var e,t=navigator.mimeTypes?navigator.mimeTypes["application/pdf"]:{},s=/Adobe Reader|PDF|Acrobat/i;if(t&&t.enabledPlugin)return 1;for(e in navigator.plugins)if("string"==typeof(t=navigator.plugins[e])){if(s.test(t))return 1}else if(t.name&&s.test(t.name))return 1;return setTimeout(function(){$("<object>").attr({data:ref.assets_path("program/resources/dummy.pdf"),type:"application/pdf",style:'position: "absolute"; top: -1000px; height: 1px; width: 1px'}).on("load error",function(e){ref.env.browser_capabilities.pdf="load"==e.type?1:0;var t=this;setTimeout(function(){$(t).remove()},10)}).appendTo(document.body)},10),0},this.flash_support_check=function(){var e=navigator.mimeTypes?navigator.mimeTypes["application/x-shockwave-flash"]:{};if(e&&e.enabledPlugin)return 1;if("ActiveXObject"in window)try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return 1}catch(e){}return 0},this.pgpmime_support_check=function(e){return window.mailvelope?1:($(window).on("mailvelope",function(){ref.env.browser_capabilities.pgpmime=1}),0)},this.assets_path=function(e){return e=this.env.assets_path&&!e.startsWith(this.env.assets_path)?this.env.assets_path+e:e},this.set_cookie=function(e,t,s){!1===s&&(s=new Date).setYear(s.getFullYear()+1),setCookie(e,t,s,this.env.cookie_path,this.env.cookie_domain,this.env.cookie_secure)},this.get_local_storage_prefix=function(){return this.local_storage_prefix||(this.local_storage_prefix="roundcube."+(this.env.user_id||"anonymous")+"."),this.local_storage_prefix},this.local_storage_get_item=function(e,t,s){var i,n;try{i=localStorage.getItem(this.get_local_storage_prefix()+e),n=JSON.parse(i)}catch(e){}return n||t||null},this.local_storage_set_item=function(e,t,s){try{return localStorage.setItem(this.get_local_storage_prefix()+e,JSON.stringify(t)),!0}catch(e){return!1}},this.local_storage_remove_item=function(e){try{return localStorage.removeItem(this.get_local_storage_prefix()+e),!0}catch(e){return!1}},this.print_dialog=function(){setTimeout("window.print()",10)}}rcube_webmail.long_subject_title=function(e,t,s){e.title||(s=$(s||e)).width()+15*(t||0)>s.parent().width()&&(e.title=rcube_webmail.subject_text(s[0]))},rcube_webmail.long_subject_title_ex=function(e){var t,s,i,n;e.title||(i=(t=$(e)).text().trim(),s=$("span.branch",t).width()||0,n=(i=$("<span>").text(i).css({position:"absolute",float:"left",visibility:"hidden","font-size":t.css("font-size"),"font-weight":t.css("font-weight")}).appendTo(document.body)).width(),i.remove(),n+15*s>t.width()&&(e.title=rcube_webmail.subject_text(e)))},rcube_webmail.subject_text=function(e){e=$(e).clone();return e.find(".skip-on-drag,.skip-content,.voice").remove(),e.text().trim()},rcube_webmail.set_iframe_events=function(t){$("iframe").each(function(){var e=$(this);$.each(t,function(t,s){e.on("load",function(e){try{$(this).contents().on(t,s)}catch(e){}});try{e.contents().on(t,s)}catch(e){}})})},rcube_webmail.prototype.get_cookie=getCookie,rcube_webmail.prototype.addEventListener=rcube_event_engine.prototype.addEventListener,rcube_webmail.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener,rcube_webmail.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent;
js/jquery.min.js000064400000261456151727150230007640 0ustar00/**
 * jQuery - v3.5.1
 *
 * @source https://github.com/jquery/jquery/tree/3.5.1
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright JS Foundation and other contributors
 *
 * Licensed under the MIT licenses
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 */
/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(D).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(D(this,e||[],!1))},not:function(e){return this.pushStack(D(this,e||[],!0))},is:function(e){return!!D(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var j,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^key/,we=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ce(){return!0}function Ee(){return!1}function Se(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ee;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Ae(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,Ce)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click",Ce),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ae(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ce:Ee,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Ee,isPropagationStopped:Ee,isImmediatePropagationStopped:Ee,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ce,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ce,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ce,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&be.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&we.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Ae(this,e,Se),!1},trigger:function(){return Ae(this,e),!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return ke(this,e,t,n,r)},one:function(e,t,n,r){return ke(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Ee),this.each(function(){S.event.remove(this,e,n,t)})}});var Ne=/<script|<style|<link/i,De=/checked\s*(?:[^=]|=\s*.checked.)/i,je=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function Pe(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&De.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Pe(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),Le)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,He),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(je,""),u,l))}return n}function Re(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Oe(o[r],a[r]);else Oe(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Pe(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||qe(this,e).appendChild(e)})},prepend:function(){return Pe(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=qe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Pe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ne.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Pe(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Me=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Ie=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},We=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Fe=new RegExp(ne.join("|"),"i");function Be(e,t,n){var r,i,o,a,s=e.style;return(n=n||Ie(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Me.test(a)&&Fe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function $e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px",t.style.height="1px",n.style.height="9px",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=3<parseInt(r.height),re.removeChild(e)),a}}))}();var _e=["Webkit","Moz","ms"],ze=E.createElement("div").style,Ue={};function Xe(e){var t=S.cssProps[e]||Ue[e];return t||(e in ze?e:Ue[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=_e.length;while(n--)if((e=_e[n]+t)in ze)return e}(e)||e)}var Ve=/^(none|table(?!-c[ea]).+)/,Ge=/^--/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ve.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):We(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Ie(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Je(0,t,s)}}}),S.cssHooks.marginLeft=$e(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Je)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=et.prototype.init,S.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,S.fx.interval),S.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ct(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=ft(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),S.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),tt=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){nt||(nt=!0,st())},S.fx.stop=function(){nt=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=E.createElement("input"),it=E.createElement("select").appendChild(E.createElement("option")),rt.type="checkbox",y.checkOn=""!==rt.value,y.optSelected=it.selected,(rt=E.createElement("input")).value="t",rt.type="radio",y.radioValue="t"===rt.value;var pt,dt=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||S.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function vt(e){return(e.match(P)||[]).join(" ")}function yt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,yt(this)))});if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,yt(this)))});if(!arguments.length)return this.attr("class","");if((e=mt(t)).length)while(n=this[u++])if(i=yt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,yt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=mt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=yt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+vt(yt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:vt(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},Et=/\?/;S.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||S.error("Invalid XML: "+e),t};var St=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function Dt(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||St.test(n)?i(n,t):Dt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)Dt(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)Dt(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var jt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=E.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Bt(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function $t(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Wt.href=Tt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?$t($t(e,S.ajaxSettings),t):$t(S.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Bt(Rt,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ot.test(v.type),f=v.url.replace(qt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(jt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Et.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Lt,"$1"),o=(Et.test(f)?"&":"?")+"_="+Ct.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+It+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Bt(Mt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=S.ajaxSettings.xhr();y.cors=!!zt&&"withCredentials"in zt,y.ajax=zt=!!zt,S.ajaxTransport(function(i){var o,a;if(y.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=vt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Gt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Yt=C.jQuery,Qt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Qt),e&&C.jQuery===S&&(C.jQuery=Yt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
js/common.js000064400000054600151727150230007016 0ustar00/**
 * Roundcube common js library
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 */

// Constants
var CONTROL_KEY = 1;
var SHIFT_KEY = 2;
var CONTROL_SHIFT_KEY = 3;

/**
 * Default browser check class
 * @constructor
 */
function roundcube_browser()
{
  var n = navigator;

  this.agent = n.userAgent;
  this.agent_lc = n.userAgent.toLowerCase();
  this.name = n.appName;
  this.vendor = n.vendor ? n.vendor : '';
  this.vendver = n.vendorSub ? parseFloat(n.vendorSub) : 0;
  this.product = n.product ? n.product : '';
  this.platform = String(n.platform).toLowerCase();
  this.lang = n.language ? n.language.substring(0,2) :
              n.browserLanguage ? n.browserLanguage.substring(0,2) :
              n.systemLanguage ? n.systemLanguage.substring(0,2) : 'en';

  this.win = this.platform.indexOf('win') >= 0;
  this.mac = this.platform.indexOf('mac') >= 0;
  this.linux = this.platform.indexOf('linux') >= 0;
  this.unix = this.platform.indexOf('unix') >= 0;

  this.dom = document.getElementById ? true : false;
  this.dom2 = document.addEventListener && document.removeEventListener;

  this.edge = this.agent_lc.indexOf(' edge/') > 0 || this.agent_lc.indexOf(' edg/') > 0; // "edg" in Chromium based Edge
  this.webkit = !this.edge && this.agent_lc.indexOf('applewebkit') > 0;
  this.ie = (document.all && !window.opera) || (this.win && this.agent_lc.indexOf('trident/') > 0);

  if (window.opera) {
    this.opera = true; // Opera < 15
    this.vendver = opera.version();
  }
  else if (!this.ie && !this.edge) {
    this.chrome = this.agent_lc.indexOf('chrome') > 0;
    this.opera = this.webkit && this.agent.indexOf(' OPR/') > 0; // Opera >= 15
    this.safari = !this.chrome && !this.opera && (this.webkit || this.agent_lc.indexOf('safari') > 0);
    this.konq = this.agent_lc.indexOf('konqueror') > 0;
    this.mz = this.dom && !this.chrome && !this.safari && !this.konq && !this.opera && this.agent.indexOf('Mozilla') >= 0;
    this.iphone = this.safari && (this.agent_lc.indexOf('iphone') > 0 || this.agent_lc.indexOf('ipod') > 0 || this.platform == 'ipod' || this.platform == 'iphone');
    this.ipad = this.safari && (this.agent_lc.indexOf('ipad') > 0 || this.platform == 'ipad');
  }

  if (!this.vendver) {
    if (this.ie)
      pattern = /(msie|rv)(\s|:)([0-9\.]+)/;
    else if (this.edge)
      pattern = /(edge?)(\/)([0-9\.]+)/;
    else if (this.opera)
      pattern = /(opera|opr)(\/)([0-9\.]+)/;
    else if (this.konq)
      pattern = /(konqueror)(\/)([0-9\.]+)/;
    else if (this.safari)
      pattern = /(version)(\/)([0-9\.]+)/;
    else if (this.chrome)
      pattern = /(chrome)(\/)([0-9\.]+)/;
    else if (this.mz)
      pattern = /(firefox)(\/)([0-9\.]+)/;
    else
      pattern = /(khtml|safari|applewebkit|rv)(\s|\/|:)([0-9\.]+)/;

    // common version strings
    this.vendver = pattern.test(this.agent_lc) ? parseFloat(RegExp.$3) : 0;
  }

  // get real language out of safari's user agent
  if (this.safari && (/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)))
    this.lang = RegExp.$1;

  this.mobile = /iphone|ipod|blackberry|iemobile|opera mini|opera mobi|mobile/i.test(this.agent_lc);
  this.tablet = !this.mobile && /ipad|android|xoom|sch-i800|playbook|tablet|kindle/i.test(this.agent_lc);
  this.touch = this.mobile || this.tablet;
  this.pointer = typeof window.PointerEvent == "function";
  this.cookies = n.cookieEnabled;

  // set class names to html tag according to the current user agent detection
  // this allows browser-specific css selectors like "html.chrome .someclass"
  this.set_html_class = function()
  {
    var classname = ' js';

    if (this.ie)
      classname += ' ms ie ie'+parseInt(this.vendver);
    else if (this.edge && this.vendver > 74)
      classname += ' chrome';
    else if (this.edge)
      classname += ' ms edge';
    else if (this.opera)
      classname += ' opera';
    else if (this.konq)
      classname += ' konqueror';
    else if (this.safari)
      classname += ' chrome';
    else if (this.chrome)
      classname += ' chrome';
    else if (this.mz)
      classname += ' mozilla';

    if (this.iphone)
      classname += ' iphone';
    else if (this.ipad)
      classname += ' ipad';
    else if (this.webkit)
      classname += ' webkit';

    if (this.mobile)
      classname += ' mobile';
    if (this.tablet)
      classname += ' tablet';

    if (document.documentElement)
      document.documentElement.className += classname;
  };
};


// static functions for DOM event handling
var rcube_event = {

/**
 * returns the event target element
 */
get_target: function(e)
{
  e = e || window.event;
  return e && e.target ? e.target : e.srcElement || document;
},

/**
 * returns the event key code
 */
get_keycode: function(e)
{
  e = e || window.event;
  return e && e.keyCode ? e.keyCode : (e && e.which ? e.which : 0);
},

/**
 * returns the event key code
 */
get_button: function(e)
{
  e = e || window.event;
  return e && e.button !== undefined ? e.button : (e && e.which ? e.which : 0);
},

/**
 * returns modifier key (constants defined at top of file)
 */
get_modifier: function(e)
{
  var opcode = 0;
  e = e || window.event;

  if (bw.mac && e)
    opcode += (e.metaKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY);
  else if (e)
    opcode += (e.ctrlKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY);

  return opcode;
},

/**
 * Return absolute mouse position of an event
 */
get_mouse_pos: function(e)
{
  if (!e) e = window.event;
  var mX = (e.pageX) ? e.pageX : e.clientX,
    mY = (e.pageY) ? e.pageY : e.clientY;

  if (document.body && document.all) {
    mX += document.body.scrollLeft;
    mY += document.body.scrollTop;
  }

  if (e._offset) {
    mX += e._offset.left;
    mY += e._offset.top;
  }

  return { x:mX, y:mY };
},

/**
 * Add an object method as event listener to a certain element
 */
add_listener: function(p)
{
  if (!p.object || !p.method)  // not enough arguments
    return;
  if (!p.element)
    p.element = document;

  if (!p.object._rc_events)
    p.object._rc_events = {};

  var key = p.event + '*' + p.method;
  if (!p.object._rc_events[key])
    p.object._rc_events[key] = function(e){ return p.object[p.method](e); };

  if (p.element.addEventListener)
    p.element.addEventListener(p.event, p.object._rc_events[key], false);
  else if (p.element.attachEvent) {
    // IE allows multiple events with the same function to be applied to the same object
    // forcibly detach the event, then attach
    p.element.detachEvent('on'+p.event, p.object._rc_events[key]);
    p.element.attachEvent('on'+p.event, p.object._rc_events[key]);
  }
  else
    p.element['on'+p.event] = p.object._rc_events[key];
},

/**
 * Remove event listener
 */
remove_listener: function(p)
{
  if (!p.element)
    p.element = document;

  var key = p.event + '*' + p.method;
  if (p.object && p.object._rc_events && p.object._rc_events[key]) {
    if (p.element.removeEventListener)
      p.element.removeEventListener(p.event, p.object._rc_events[key], false);
    else if (p.element.detachEvent)
      p.element.detachEvent('on'+p.event, p.object._rc_events[key]);
    else
      p.element['on'+p.event] = null;
  }
},

/**
 * Prevent event propagation and bubbling
 */
cancel: function(evt)
{
  var e = evt ? evt : window.event;

  if (e.preventDefault)
    e.preventDefault();
  else
    e.returnValue = false;

  if (e.stopPropagation)
    e.stopPropagation();

  e.cancelBubble = true;

  return false;
},

/**
 * Determine whether the given event was triggered from keyboard
 */
is_keyboard: function(e)
{
  if (!e)
    return false;

  // DOM3-compatible
  // An event invoked by pressing Enter on a link will produce a 'click' event,
  // so we have to extend the check, e.g. with use of e.clientX.
  if (e.type)
    return !!e.type.match(/^key/) || (e.type == 'click' && !e.clientX);

  // Old browsers
  return !e.pageX && (e.pageY || 0) <= 0 && !e.clientX && (e.clientY || 0) <= 0;
},

/**
 * Accept event if triggered from keyboard action (e.g. <Enter>)
 */
keyboard_only: function(e)
{
  return rcube_event.is_keyboard(e) ? true : rcube_event.cancel(e);
},

touchevent: function(e)
{
  return { pageX:e.pageX, pageY:e.pageY, offsetX:e.pageX - e.target.offsetLeft, offsetY:e.pageY - e.target.offsetTop, target:e.target, istouch:true };
}

};


/**
 * rcmail objects event interface
 */
function rcube_event_engine()
{
  this._events = {};
};

rcube_event_engine.prototype = {

/**
 * Setter for object event handlers
 *
 * @param {String}   Event name
 * @param {Function} Handler function
 */
addEventListener: function(evt, func, obj)
{
  if (!this._events)
    this._events = {};
  if (!this._events[evt])
    this._events[evt] = [];

  this._events[evt].push({func:func, obj:obj ? obj : window});

  return this; // chainable
},

/**
 * Removes a specific event listener
 *
 * @param {String} Event name
 * @param {Int}    Listener ID to remove
 */
removeEventListener: function(evt, func, obj)
{
  if (obj === undefined)
    obj = window;

  for (var h,i=0; this._events && this._events[evt] && i < this._events[evt].length; i++)
    if ((h = this._events[evt][i]) && h.func == func && h.obj == obj)
      this._events[evt][i] = null;
},

/**
 * This will execute all registered event handlers
 *
 * @param {String} Event to trigger
 * @param {Object} Event object/arguments
 */
triggerEvent: function(evt, e)
{
  var ret, h,
    reset_fn = function(o) {
      try { if (o && o.event) delete o.event; } catch(err) { };
    };

  if (e === undefined)
    e = this;
  else if (typeof e === 'object')
    e.event = evt;

  if (!this._event_exec)
    this._event_exec = {};

  if (this._events && this._events[evt] && !this._event_exec[evt]) {
    this._event_exec[evt] = true;
    for (var i=0; i < this._events[evt].length; i++) {
      if ((h = this._events[evt][i])) {
        if (typeof h.func === 'function')
          ret = h.func.call ? h.func.call(h.obj, e) : h.func(e);
        else if (typeof h.obj[h.func] === 'function')
          ret = h.obj[h.func](e);

        // cancel event execution
        if (ret !== undefined && !ret)
          break;
      }
    }
    reset_fn(ret);
  }

  delete this._event_exec[evt];
  reset_fn(e);

  return ret;
}

};  // end rcube_event_engine.prototype


// check if input is a valid email address
// By Cal Henderson <cal@iamcal.com>
// http://code.iamcal.com/php/rfc822/
function rcube_check_email(input, inline, count, strict)
{
  if (!input)
    return count ? 0 : false;

  if (count) inline = true;

  var qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]',
      dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]',
      atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+',
      quoted_pair = '\\x5c[\\x00-\\x7f]',
      quoted_string = '\\x22('+qtext+'|'+quoted_pair+')*\\x22',
      ipv4 = '\\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\\]',
      ipv6 = '\\[IPv6:[0-9a-f:.]+\\]',
      ip_addr = '(' + ipv4 + ')|(' + ipv6 + ')',
      // Use simplified domain matching, because we need to allow Unicode characters here
      // So, e-mail address should be validated also on server side after idn_to_ascii()
      // Allow punycode/unicode top-level domains, allow extended domains (#5588)
      // Allow a domain ending with .s (#8854)
      domain = '(('+ip_addr+')|(([^@.]+\\.)+([^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|s|xn--[a-z0-9]{2,})))',
      // ICANN e-mail test (http://idn.icann.org/E-mail_test)
      icann_domains = [
        '\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631',
        '\\u4f8b\\u5b50\\x2e\\u6d4b\\u8bd5',
        '\\u4f8b\\u5b50\\x2e\\u6e2c\\u8a66',
        '\\u03c0\\u03b1\\u03c1\\u03ac\\u03b4\\u03b5\\u03b9\\u03b3\\u03bc\\u03b1\\x2e\\u03b4\\u03bf\\u03ba\\u03b9\\u03bc\\u03ae',
        '\\u0909\\u0926\\u093e\\u0939\\u0930\\u0923\\x2e\\u092a\\u0930\\u0940\\u0915\\u094d\\u0937\\u093e',
        '\\u4f8b\\u3048\\x2e\\u30c6\\u30b9\\u30c8',
        '\\uc2e4\\ub840\\x2e\\ud14c\\uc2a4\\ud2b8',
        '\\u0645\\u062b\\u0627\\u0644\\x2e\\u0622\\u0632\\u0645\\u0627\\u06cc\\u0634\\u06cc',
        '\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\x2e\\u0438\\u0441\\u043f\\u044b\\u0442\\u0430\\u043d\\u0438\\u0435',
        '\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\\x2e\\u0baa\\u0bb0\\u0bbf\\u0b9f\\u0bcd\\u0b9a\\u0bc8',
        '\\u05d1\\u05f2\\u05b7\\u05e9\\u05e4\\u05bc\\u05d9\\u05dc\\x2e\\u05d8\\u05e2\\u05e1\\u05d8'
      ],
      icann_addr = 'mailtest\\x40('+icann_domains.join('|')+')',
      word = strict ? '('+atom+'|'+quoted_string+')' : '[^\\u0000-\\u0020\\u002e\\u00a0\\u0040\\u007f\\u2028\\u2029]+',
      delim = '[,;\\s\\n]',
      local_part = word+'(\\x2e'+word+')*',
      addr_spec = '(('+local_part+'\\x40'+domain+')|('+icann_addr+'))',
      rx_flag = count ? 'ig' : 'i',
      rx = inline ? new RegExp('(^|<|'+delim+')'+addr_spec+'($|>|'+delim+')', rx_flag) : new RegExp('^'+addr_spec+'$', 'i');

  if (count) {
    var re = input.match(rx);
    return re ? re.length : 0;
  }

  return rx.test(input);
};

// recursively copy an object
function rcube_clone_object(obj)
{
  var out = {};

  for (var key in obj) {
    if (obj[key] && typeof obj[key] === 'object')
      out[key] = rcube_clone_object(obj[key]);
    else
      out[key] = obj[key];
  }

  return out;
};

// make a string URL safe (and compatible with PHP's rawurlencode())
function urlencode(str)
{
  return encodeURIComponent(str)
    .replace('*', '%2A')
    .replace('(', '%28')
    .replace(')', '%29')
    .replace('!', '%21')
    .replace("'", '%27');
};


// get any type of html objects by id/name
function rcube_find_object(id, d)
{
  var n, f, obj, e;

  if (!d) d = document;

  if (d.getElementById)
    if (obj = d.getElementById(id))
      return obj;

  if (!obj && d.getElementsByName && (e = d.getElementsByName(id)))
    obj = e[0];

  if (!obj && d.all)
    obj = d.all[id];

  if (!obj && d.images.length)
    obj = d.images[id];

  if (!obj && d.forms.length) {
    for (f=0; f<d.forms.length; f++) {
      if (d.forms[f].name == id)
        obj = d.forms[f];
      else if(d.forms[f].elements[id])
        obj = d.forms[f].elements[id];
    }
  }

  if (!obj && d.layers) {
    if (d.layers[id])
      obj = d.layers[id];
    for (n=0; !obj && n<d.layers.length; n++)
      obj = rcube_find_object(id, d.layers[n].document);
  }

  return obj;
};

// determine whether the mouse is over the given object or not
function rcube_mouse_is_over(ev, obj)
{
  var mouse = rcube_event.get_mouse_pos(ev),
    pos = $(obj).offset();

  return (mouse.x >= pos.left) && (mouse.x < (pos.left + obj.offsetWidth)) &&
    (mouse.y >= pos.top) && (mouse.y < (pos.top + obj.offsetHeight));
};


// cookie functions by GoogieSpell
function setCookie(name, value, expires, path, domain, secure)
{
  var curCookie = name + "=" + escape(value) +
      (expires ? "; expires=" + expires.toGMTString() : "") +
      (path ? "; path=" + path : "") +
      (domain ? "; domain=" + domain : "") +
      (secure ? "; secure" : "") + '; SameSite=Lax';

  document.cookie = curCookie;
};

function getCookie(name)
{
  var dc = document.cookie,
    prefix = name + "=",
    begin = dc.indexOf("; " + prefix);

  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0)
      return null;
  }
  else {
    begin += 2;
  }

  var end = dc.indexOf(";", begin);
  if (end == -1)
    end = dc.length;

  return unescape(dc.substring(begin + prefix.length, end));
};

// deprecated aliases, to be removed, use rcmail.set_cookie/rcmail.get_cookie
roundcube_browser.prototype.set_cookie = setCookie;
roundcube_browser.prototype.get_cookie = getCookie;

var bw = new roundcube_browser();
bw.set_html_class();


// Add escape() method to RegExp object
// http://dev.rubyonrails.org/changeset/7271
RegExp.escape = function(str)
{
  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
};

// Extend Date prototype to detect Standard timezone without DST
// from http://www.michaelapproved.com/articles/timezone-detect-and-ignore-daylight-saving-time-dst/
Date.prototype.getStdTimezoneOffset = function()
{
  var m = 12,
    d = new Date(null, m, 1),
    tzo = d.getTimezoneOffset();

    while (--m) {
      d.setUTCMonth(m);
      if (tzo != d.getTimezoneOffset()) {
        return Math.max(tzo, d.getTimezoneOffset());
    }
  }

  return tzo;
}

// define String's startsWith() method for old browsers
if (!String.prototype.startsWith) {
  String.prototype.startsWith = function(search, position) {
    position = position || 0;
    return this.slice(position, search.length) === search;
  };
}

if (!String.prototype.endsWith) {
  String.prototype.endsWith = function(searchString, position) {
    var subjectString = this.toString();
    if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
      position = subjectString.length;
    }
    position -= searchString.length;
    var lastIndex = subjectString.lastIndexOf(searchString, position);
    return lastIndex !== -1 && lastIndex === position;
  };
}

// array utility function
jQuery.last = function(arr) {
  return arr && arr.length ? arr[arr.length-1] : undefined;
}

// jQuery plugin to set HTML5 placeholder and title attributes on input elements
jQuery.fn.placeholder = function(text) {
  return this.each(function() {
    $(this).prop({title: text, placeholder: text});
  });
};

// function to parse query string into an object
var rcube_parse_query = function(query)
{
  if (!query)
    return {};

  var params = {}, e, k, v,
    re = /([^&=]+)=?([^&]*)/g,
    decodeRE = /\+/g, // Regex for replacing addition symbol with a space
    decode = function (str) { return decodeURIComponent(str.replace(decodeRE, ' ')); };

  query = query.replace(/\?/, '');

  while (e = re.exec(query)) {
    k = decode(e[1]);
    v = decode(e[2]);

    if (k.substring(k.length - 2) === '[]') {
      k = k.substring(0, k.length - 2);
      (params[k] || (params[k] = [])).push(v);
    }
    else
      params[k] = v;
  }

  return params;
};


// Base64 code from Tyler Akins -- http://rumkin.com
var Base64 = (function () {
  var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

  // private method for UTF-8 encoding
  var utf8_encode = function(string) {
    string = string.replace(/\r\n/g, "\n");
    var utftext = '';

    for (var n = 0; n < string.length; n++) {
      var c = string.charCodeAt(n);

      if (c < 128) {
        utftext += String.fromCharCode(c);
      }
      else if(c > 127 && c < 2048) {
        utftext += String.fromCharCode((c >> 6) | 192);
        utftext += String.fromCharCode((c & 63) | 128);
      }
      else {
        utftext += String.fromCharCode((c >> 12) | 224);
        utftext += String.fromCharCode(((c >> 6) & 63) | 128);
        utftext += String.fromCharCode((c & 63) | 128);
      }
    }

    return utftext;
  };

  // private method for UTF-8 decoding
  var utf8_decode = function (utftext) {
    var i = 0, string = '', c = 0, c2 = 0, c3 = 0;

    while (i < utftext.length) {
      c = utftext.charCodeAt(i);
      if (c < 128) {
        string += String.fromCharCode(c);
        i++;
      }
      else if (c > 191 && c < 224) {
        c2 = utftext.charCodeAt(i + 1);
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
        i += 2;
      }
      else {
        c2 = utftext.charCodeAt(i + 1);
        c3 = utftext.charCodeAt(i + 2);
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
        i += 3;
      }
    }

    return string;
  };

  var obj = {
    /**
     * Encodes a string in base64
     * @param {String} input The string to encode in base64.
     */
    encode: function (input) {
      // encode UTF8 as btoa() may fail on some characters
      input = utf8_encode(input);

      if (typeof(window.btoa) === 'function') {
        try {
          return btoa(input);
        }
        catch (e) {};
      }

      var chr1, chr2, chr3, enc1, enc2, enc3, enc4, i = 0, output = '', len = input.length;

      while (i < len) {
        chr1 = input.charCodeAt(i++);
        chr2 = input.charCodeAt(i++);
        chr3 = input.charCodeAt(i++);

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
        enc4 = chr3 & 63;

        if (isNaN(chr2))
          enc3 = enc4 = 64;
        else if (isNaN(chr3))
          enc4 = 64;

        output = output
          + keyStr.charAt(enc1) + keyStr.charAt(enc2)
          + keyStr.charAt(enc3) + keyStr.charAt(enc4);
      }

      return output;
    },

    /**
     * Decodes a base64 string.
     * @param {String} input The string to decode.
     */
    decode: function (input) {
      if (typeof(window.atob) === 'function') {
        try {
          return utf8_decode(atob(input));
        }
        catch (e) {};
      }

      var chr1, chr2, chr3, enc1, enc2, enc3, enc4, len, i = 0, output = '';

      // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
      input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
      len = input.length;

      while (i < len) {
        enc1 = keyStr.indexOf(input.charAt(i++));
        enc2 = keyStr.indexOf(input.charAt(i++));
        enc3 = keyStr.indexOf(input.charAt(i++));
        enc4 = keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        output = output + String.fromCharCode(chr1);

        if (enc3 != 64)
          output = output + String.fromCharCode(chr2);
        if (enc4 != 64)
          output = output + String.fromCharCode(chr3);
      }

      return utf8_decode(output);
    }
  };

  return obj;
})();
js/treelist.js000064400000102003151727150230007350 0ustar00/**
 * Roundcube Treelist Widget
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @requires jquery.js, common.js
 */


/**
 * Roundcube Treelist widget class
 * @constructor
 */
function rcube_treelist_widget(node, p)
{
  // apply some defaults to p
  p = $.extend({
    id_prefix: '',
    autoexpand: 1000,
    selectable: false,
    scroll_delay: 500,
    scroll_step: 5,
    scroll_speed: 20,
    save_state: false,
    keyboard: true,
    tabexit: true,
    parent_focus: false,
    check_droptarget: function(node) { return !node.virtual; }
  }, p || {});

  var container = $(node),
    data = p.data || [],
    indexbyid = {},
    selection = null,
    drag_active = false,
    search_active = false,
    last_search = '',
    has_focus = false,
    box_coords = {},
    item_coords = [],
    autoexpand_timer,
    autoexpand_item,
    body_scroll_top = 0,
    list_scroll_top = 0,
    scroll_timer,
    searchfield,
    tree_state,
    ui_droppable,
    ui_draggable,
    draggable_opts,
    droppable_opts,
    list_id = (container.attr('id') || p.id_prefix || '0'),
    me = this;


  /////// export public members and methods

  this.container = container;
  this.expand = expand;
  this.collapse = collapse;
  this.expand_all = expand_all;
  this.collapse_all = collapse_all;
  this.select = select;
  this.render = render;
  this.reset = reset;
  this.drag_start = drag_start;
  this.drag_end = drag_end;
  this.intersects = intersects;
  this.droppable = droppable;
  this.draggable = draggable;
  this.is_draggable = is_draggable;
  this.update = update_node;
  this.insert = insert;
  this.remove = remove;
  this.get_item = get_item;
  this.get_node = get_node;
  this.get_selection = get_selection;
  this.in_selection = in_selection;
  this.get_next = get_next;
  this.get_prev = get_prev;
  this.get_single_selection = get_selection;
  this.is_search = is_search;
  this.reset_search = reset_search;

  /////// startup code (constructor)

  // abort if node not found
  if (!container.length)
    return;

  if (p.data)
    index_data({ children:data });
  // load data from DOM
  else
    update_data();

  // scroll to the selected item
  if (selection) {
    scroll_to_node(id2dom(selection, true));
  }

  container.attr('role', 'tree')
    .on('focusin', function(e) {
      // TODO: only accept focus on virtual nodes from keyboard events
      has_focus = true;
    })
    .on('focusout', function(e) {
      has_focus = false;
    })
    // register click handlers on list
    .on('click', 'div.treetoggle', function(e) {
      toggle(dom2id($(this).parent()));
      e.stopPropagation();
    })
    .on('click', 'li', function(e) {
      // do not select record on checkbox/input click
      if ($(e.target).is('input'))
        return true;

      var node = p.selectable ? indexbyid[dom2id($(this))] : null;
      if (node) {
        if (!node.virtual)
          select(node.id);
        e.stopPropagation();
      }
    })
    // mute clicks on virtual folder links (they need tabindex="0" in order to be selectable by keyboard)
    .on('mousedown', 'a', function(e) {
      var link = $(e.target), node = indexbyid[dom2id(link.closest('li'))];
      if (node && node.virtual && !link.attr('href')) {
        e.preventDefault();
        e.stopPropagation();
        return false;
      }
    });

  // activate search function
  if (p.searchbox) {
    searchfield = $(p.searchbox).off('keyup.treelist').on('keyup.treelist', function(e) {
      var key = rcube_event.get_keycode(e),
        mod = rcube_event.get_modifier(e);

      switch (key) {
        case 9:   // tab
          break;

        case 13:  // enter
          search(this.value, true);
          return rcube_event.cancel(e);

        case 27:  // escape
          reset_search();
          break;

        case 38:  // arrow up
        case 37:  // left
        case 39:  // right
        case 40:  // arrow down
          return;  // ignore arrow keys

        default:
          search(this.value, false);
          break;
      }
    }).attr('autocomplete', 'off');

    // find the reset button for this search field
    searchfield.parent().find('a.reset').off('click.treelist').on('click.treelist', function(e) {
      reset_search();
      return false;
    })
  }

  $(document.body).on('keydown', keypress);

  // catch focus when clicking the list container area
  if (p.parent_focus) {
    container.parent(':not(body)').click(function(e) {
      // click on a checkbox does not catch the focus
      if ($(e.target).is('input'))
        return true;

      if (!has_focus && selection) {
        $(get_item(selection)).find(':focusable').first().focus();
      }
      else if (!has_focus) {
        container.children('li').find(':focusable').first().focus();
      }
    });
  }

  /**
   * Collapse a the node with the given ID
   */
  function collapse(id, recursive, set)
  {
    var node;

    if (node = indexbyid[id]) {
      node.collapsed = typeof set == 'undefined' || set;
      update_dom(node);

      if (recursive && node.children) {
        for (var i=0; i < node.children.length; i++) {
          collapse(node.children[i].id, recursive, set);
        }
      }

      me.triggerEvent(node.collapsed ? 'collapse' : 'expand', node);
      save_state(id, node.collapsed);
    }
  }

  /**
   * Expand a the node with the given ID
   */
  function expand(id, recursive)
  {
    collapse(id, recursive, false);
  }

  /**
   * Toggle collapsed state of a list node
   */
  function toggle(id, recursive)
  {
    var node;
    if (node = indexbyid[id]) {
      collapse(id, recursive, !node.collapsed);
    }
  }

  /**
   * Collapse all expanded nodes
   */
  function collapse_all()
  {
    $.each(indexbyid, function(id, data) {
      if (data.children.length > 0 && !data.collapsed) {
        collapse(id);
      }
    });
  }

  /**
   * Expand all collapsed nodes
   */
  function expand_all()
  {
    $.each(indexbyid, function(id, data) {
      if (data.children.length > 0 && data.collapsed) {
        collapse(id, false, false);
      }
    });
  }

  /**
   * Select a tree node by it's ID
   */
  function select(id)
  {
    // allow subscribes to prevent selection change
    if (me.triggerEvent('beforeselect', indexbyid[id]) === false) {
      return;
    }

    if (selection) {
      id2dom(selection, true).removeClass('selected').removeAttr('aria-selected');
      if (search_active)
          id2dom(selection).removeClass('selected').removeAttr('aria-selected');
      selection = null;
    }

    if (!id)
      return;

    var li = id2dom(id, true);
    if (li.length) {
      li.addClass('selected').attr('aria-selected', 'true');
      selection = id;
      // TODO: expand all parent nodes if collapsed

      if (search_active)
        id2dom(id).addClass('selected').attr('aria-selected', 'true');

      scroll_to_node(li);
    }

    me.triggerEvent('select', indexbyid[id]);
  }

  /**
   * Getter for the currently selected node ID
   */
  function get_selection()
  {
    return selection;
  }

  /**
   * Check if given id is selected
   * This is for consistency with rcube_list_widget
   */
  function in_selection(id)
  {
    return selection == id;
  }

  /**
   * Return the DOM element of the list item with the given ID
   */
  function get_node(id)
  {
    return indexbyid[id];
  }

  /**
   * Return the DOM element of the list item with the given ID
   */
  function get_item(id, real)
  {
    return id2dom(id, real).get(0);
  }

  /**
   * Insert the given node
   */
  function insert(node, parent_id, sort)
  {
    var li, parent_li,
      parent_node = parent_id ? indexbyid[parent_id] : null
      search_ = search_active;

    // ignore, already exists
    if (indexbyid[node.id]) {
      return;
    }

    // apply saved state
    state = get_state(node.id, node.collapsed);
    if (state !== undefined) {
      node.collapsed = state;
    }

    // insert as child of an existing node
    if (parent_node) {
      node.level = parent_node.level + 1;

      if (!parent_node.children)
        parent_node.children = [];
      else {
        // Remove deleted nodes from the parent to make sure re-rendering below
        // happens when adding a new child to a parent with all nodes removed
        parent_node.children = parent_node.children.filter(function(node) { return !node.deleted; });
      }

      search_active = false;
      parent_node.children.push(node);
      parent_li = id2dom(parent_id);

      // re-render the entire subtree
      if (parent_node.children.length == 1) {
        render_node(parent_node, null, parent_li);
        li = id2dom(node.id);
      }
      else {
        // append new node to parent's child list
        li = render_node(node, parent_li.children('ul').first());
      }

      // list is in search mode
      if (search_) {
        search_active = search_;

        // add clone to current search results (top level)
        if (!li.is(':visible')) {
          $('<li>')
            .attr('id', li.attr('id') + '--xsR')
            .attr('class', li.attr('class'))
            .addClass('searchresult__')
            .append(li.children().first().clone(true, true))
            .appendTo(container);
        }
      }
    }
    // insert at top level
    else {
      node.level = 0;
      data.push(node);
      li = render_node(node, container);
    }

    indexbyid[node.id] = node;

    // set new reference to node.html after insert
    // will otherwise vanish in Firefox 3.6
    if (typeof node.html == 'object') {
        indexbyid[node.id].html = id2dom(node.id, true).children();
    }

    if (sort) {
      resort_node(li, typeof sort == 'string' ? '[class~="' + sort + '"]' : '');
    }
  }

  /**
   * Update properties of an existing node
   */
  function update_node(id, updates, sort)
  {
    var li, parent_ul, parent_node, old_parent,
      node = indexbyid[id];

    if (node) {
      li = id2dom(id);
      parent_ul = li.parent();

      if (updates.id || updates.html || updates.children || updates.classes || updates.parent) {
        if (updates.parent && (parent_node = indexbyid[updates.parent])) {
          // remove reference from old parent's child list
          if (parent_ul.closest('li').length && (old_parent = indexbyid[dom2id(parent_ul.closest('li'))])) {
            old_parent.children = $.grep(old_parent.children, function(elem, i){ return elem.id != node.id; });
          }

          // append to new parent node
          parent_ul = id2dom(updates.parent).children('ul').first();
          if (!parent_node.children)
            parent_node.children = [];
          parent_node.children.push(node);
        }
        else if (updates.parent !== undefined) {
          parent_ul = container;
        }

        $.extend(node, updates);
        li = render_node(node, parent_ul, li);
      }

      if (node.id != id) {
        delete indexbyid[id];
        indexbyid[node.id] = node;
      }

      if (sort) {
        resort_node(li, typeof sort == 'string' ? '[class~="' + sort + '"]' : '');
      }
    }
  }

  /**
   * Helper method to sort the list of the given item
   */
  function resort_node(li, filter)
  {
    var first, sibling,
      myid = li.get(0).id,
      sortname = li.children().first().text().toUpperCase();

    li.parent().children('li' + filter).each(function(i, elem) {
      if (i == 0)
        first = elem;
      if (elem.id == myid) {
        // skip
      }
      else if (elem.id != myid && sortname >= $(elem).children().first().text().toUpperCase()) {
        sibling = elem;
      }
      else {
        return false;
      }
    });

    if (sibling) {
      li.insertAfter(sibling);
    }
    else if (first && first.id != myid) {
      li.insertBefore(first);
    }

    // reload data from dom
    update_data();
  }

  /**
   * Remove the item with the given ID
   */
  function remove(id)
  {
    var node, li, parent;

    if (node = indexbyid[id]) {
      li = id2dom(id, true);
      parent = li.parent();
      li.remove();

      node.deleted = true;
      delete indexbyid[id];

      if (search_active) {
        id2dom(id, false).remove();
      }

      // remove tree-toggle button and children list
      if (!parent.children().length) {
        parent.parent('li').find('div.treetoggle').remove();

        // remove parent, but not if it's the list itself
        if (parent[0] != container[0]) {
            parent.remove();
        }
      }

      return true;
    }

    return false;
  }

  /**
   * (Re-)read tree data from DOM
   */
  function update_data()
  {
    data = walk_list(container, 0);
  }

  /**
   * Apply the 'collapsed' status of the data node to the corresponding DOM element(s)
   */
  function update_dom(node)
  {
    var li = id2dom(node.id, true);
    li.attr('aria-expanded', node.collapsed ? 'false' : 'true');
    li.children('ul').first()[(node.collapsed ? 'hide' : 'show')]();
    li.children('div.treetoggle').removeClass('collapsed expanded').addClass(node.collapsed ? 'collapsed' : 'expanded');
    me.triggerEvent('toggle', node);
  }

  /**
   *
   */
  function reset(keep_content, keep_selection)
  {
    if (!keep_selection)
      select('');

    data = [];
    indexbyid = {};
    drag_active = false;

    if (keep_content) {
      if (draggable_opts) {
        if (ui_draggable)
          draggable('destroy');
        draggable(draggable_opts);
      }

      if (droppable_opts) {
        if (ui_droppable)
          droppable('destroy');
        droppable(droppable_opts);
      }

      update_data();
    }
    else {
      container.html('');
    }

    reset_search(keep_selection);
  }

  /**
   * 
   */
  function search(q, enter)
  {
    q = String(q).toLowerCase();

    if (!q.length)
      return reset_search();
    else if (q == last_search && !enter)
      return 0;

    var hits = [];
    var search_tree = function(items) {
      $.each(items, function(i, node) {
        var li, sli;
        if (!node.virtual && !node.deleted && String(node.text).toLowerCase().indexOf(q) >= 0 && hits.indexOf(node.id) < 0) {
          li = id2dom(node.id);

          // skip already filtered nodes
          if (li.data('filtered'))
            return;

          sli = $('<li>')
            .attr('id', li.attr('id') + '--xsR')
            .attr('class', li.attr('class'))
            .addClass('searchresult__')
            // append all elements like links and inputs, but not sub-trees
            .append(li.children(':not(div.treetoggle,ul)').clone(true, true))
            .appendTo(container);
          
          // let skins to do their magic, e.g. Elastic will fix pretty checkbox
          rcmail.triggerEvent('clonerow', {
            id: node.id,
            row: sli.get(0)
          });

          hits.push(node.id);
        }

        if (node.children && node.children.length) {
          search_tree(node.children);
        }
      });
    };

    // reset old search results
    if (search_active) {
      $(container).children('li.searchresult__').remove();
      search_active = false;
    }

    // hide all list items
    $(container).children('li').hide().removeClass('selected');

    // search recursively in tree (to keep sorting order)
    search_tree(data);
    search_active = true;

    me.triggerEvent('search', { query: q, last: last_search, count: hits.length, ids: hits, execute: enter||false });

    last_search = q;

    return hits.count;
  }

  /**
   * 
   */
  function reset_search(nosel)
  {
    if (searchfield)
      searchfield.val('');

    $(container).children('li.searchresult__').remove();
    $(container).children('li').filter(function() { return !$(this).data('filtered'); }).show();

    search_active = false;

    me.triggerEvent('search', { query: false, last: last_search });
    last_search = '';

    if (selection && !nosel)
      select(selection);
  }

  /**
   *
   */
  function is_search()
  {
    return search_active;
  }

  /**
   * Render the tree list from the internal data structure
   */
  function render()
  {
    if (me.triggerEvent('renderBefore', data) === false)
      return;

    // remove all child nodes
    container.html('');

    // render child nodes
    for (var i=0; i < data.length; i++) {
      data[i].level = 0;
      render_node(data[i], container);
    }

    me.triggerEvent('renderAfter', container);
  }

  /**
   * Render a specific node into the DOM list
   */
  function render_node(node, parent, replace)
  {
    if (node.deleted)
      return;

    var li = $('<li>')
      .attr('id', p.id_prefix + (p.id_encode ? p.id_encode(node.id) : node.id))
      .attr('role', 'treeitem')
      .addClass((node.classes || []).join(' '))
      .data('id', node.id);

    if (replace) {
      replace.replaceWith(li);
      if (parent)
        li.appendTo(parent);
    }
    else
      li.appendTo(parent);

    if (typeof node.html == 'string')
      li.html(node.html);
    else if (typeof node.html == 'object')
      li.append(node.html);

    if (!node.text)
      node.text = li.children().first().text();

    if (node.virtual)
      li.addClass('virtual');
    if (node.id == selection)
      li.addClass('selected');

    // add child list and toggle icon
    if (node.children && node.children.length) {
      li.attr('aria-expanded', node.collapsed ? 'false' : 'true');
      $('<div class="treetoggle '+(node.collapsed ? 'collapsed' : 'expanded') + '">&nbsp;</div>').appendTo(li);
      var ul = $('<ul>').appendTo(li).attr('class', node.childlistclass).attr('role', 'group');
      if (node.collapsed)
        ul.hide();

      for (var i=0; i < node.children.length; i++) {
        node.children[i].level = node.level + 1;
        render_node(node.children[i], ul);
      }
    }

    return li;
  }

  /**
   * Recursively walk the DOM tree and build an internal data structure
   * representing the skeleton of this tree list.
   */
  function walk_list(ul, level)
  {
    var result = [];
    ul.children('li').each(function(i,e){
      var state, li = $(e), sublist = li.children('ul');
      var node = {
        id: dom2id(li),
        classes: String(li.attr('class')).split(' '),
        virtual: li.hasClass('virtual'),
        level: level,
        html: li.children().first().get(0).outerHTML,
        text: li.children().first().text(),
        children: walk_list(sublist, level+1)
      }

      if (sublist.length) {
        node.childlistclass = sublist.attr('class');
      }
      if (node.children.length) {
        if (node.collapsed === undefined)
          node.collapsed = sublist.css('display') == 'none';

        // apply saved state
        state = get_state(node.id, node.collapsed);
        if (state !== undefined) {
          node.collapsed = state;
          sublist[(state?'hide':'show')]();
        }

        if (!li.children('div.treetoggle').length)
          $('<div class="treetoggle '+(node.collapsed ? 'collapsed' : 'expanded') + '">&nbsp;</div>').appendTo(li);

        li.attr('aria-expanded', node.collapsed ? 'false' : 'true');
      }
      if (li.hasClass('selected')) {
        li.attr('aria-selected', 'true');
        selection = node.id;
      }

      li.data('id', node.id);

      // declare list item as treeitem
      li.attr('role', 'treeitem').attr('aria-level', node.level+1);

      // allow virtual nodes to receive focus
      if (node.virtual) {
        li.children('a').first().attr('tabindex', '0');
      }

      result.push(node);
      indexbyid[node.id] = node;
    });

    ul.attr('role', level == 0 ? 'tree' : 'group');

    return result;
  }

  /**
   * Recursively walk the data tree and index nodes by their ID
   */
  function index_data(node)
  {
    if (node.id) {
      indexbyid[node.id] = node;
    }
    for (var c=0; node.children && c < node.children.length; c++) {
      index_data(node.children[c]);
    }
  }

  /**
   * Get the (stripped) node ID from the given DOM element
   */
  function dom2id(li)
  {
    var domid = String(li.attr('id')).replace(new RegExp('^' + (p.id_prefix) || '%'), '').replace(/--xsR$/, '');
    return p.id_decode ? p.id_decode(domid) : domid;
  }

  /**
   * Get the <li> element for the given node ID
   */
  function id2dom(id, real)
  {
    var domid = p.id_encode ? p.id_encode(id) : id,
      suffix = search_active && !real ? '--xsR' : '';

    return $('#' + p.id_prefix + domid + suffix, container);
  }

  /**
   * Scroll the parent container to make the given list item visible
   */
  function scroll_to_node(li)
  {
    var scroller = container.parent(),
      current_offset = scroller.scrollTop(),
      rel_offset = li.offset().top - scroller.offset().top;

    if (rel_offset < 0 || rel_offset + li.height() > scroller.height())
      scroller.scrollTop(rel_offset + current_offset);
  }

  /**
   * Save node collapse state to localStorage
   */
  function save_state(id, collapsed)
  {
    if (p.save_state && window.rcmail) {
      var key = 'treelist-' + list_id;
      if (!tree_state) {
        tree_state = rcmail.local_storage_get_item(key, {});
      }

      if (tree_state[id] != collapsed) {
        tree_state[id] = collapsed;
        rcmail.local_storage_set_item(key, tree_state);
      }
    }
  }

  /**
   * Read node collapse state from localStorage
   */
  function get_state(id)
  {
    if (p.save_state && window.rcmail) {
      if (!tree_state) {
        tree_state = rcmail.local_storage_get_item('treelist-' + list_id, {});
      }
      return tree_state[id];
    }

    return undefined;
  }

  /**
   * Handler for keyboard events on treelist
   */
  function keypress(e)
  {
    var target = e.target || {},
      keyCode = rcube_event.get_keycode(e);

    if (!has_focus || target.nodeName == 'INPUT' && keyCode != 38 && keyCode != 40 || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')
      return true;

    switch (keyCode) {
      case 38:
      case 40:
      case 63232: // 'up', in safari keypress
      case 63233: // 'down', in safari keypress
        var li = p.keyboard ? container.find(':focus').closest('li') : [];
        if (li.length) {
          focus_next(li, (mod = keyCode == 38 || keyCode == 63232 ? -1 : 1));
        }
        return rcube_event.cancel(e);

      case 37: // Left arrow key
      case 39: // Right arrow key
        var id, node, li = container.find(':focus').closest('li');
        if (li.length) {
          id = dom2id(li);
          node = indexbyid[id];
          if (node && node.children.length && node.collapsed != (keyCode == 37))
            toggle(id, rcube_event.get_modifier(e) == SHIFT_KEY);  // toggle subtree
        }
        return false;

      case 9:  // Tab
        if (p.keyboard && p.tabexit) {
          // jump to last/first item to move focus away from the treelist widget by tab
          var limit = rcube_event.get_modifier(e) == SHIFT_KEY ? 'first' : 'last';
          focus_noscroll(container.find('li[role=treeitem]:has(a)')[limit]().find('a:'+limit));
        }
        break;
    }

    return true;
  }

  function focus_next(li, dir, from_child)
  {
    var mod = dir < 0 ? 'prev' : 'next',
      next = li[mod](), limit, parent;

    if (dir > 0 && !from_child && li.children('ul[role=group]:visible').length) {
      li.children('ul').children('li').first().find('a').first().focus();
    }
    else if (dir < 0 && !from_child && next.children('ul[role=group]:visible').length) {
      next.children('ul').children('li').last().find('a').first().focus();
    }
    else if (next.length && next.find('a').first().focus().length) {
        // focused
    }
    else {
      parent = li.parent().closest('li[role=treeitem]');
      if (parent.length)
        if (dir < 0) {
          parent.find('a').first().focus();
        }
        else {
          focus_next(parent, dir, true);
        }
    }
  }

  /**
   * Focus the given element without scrolling the list container
   */
  function focus_noscroll(elem)
  {
    if (elem.length) {
      var frame = container.parent().get(0) || { scrollTop:0 },
        y = frame.scrollTop || frame.scrollY;
      elem.focus();
      frame.scrollTop = y;
    }
  }


  function get_next()
  {
    var node, child;
    if (selection && (node = id2dom(selection))) {
      child = node.children('ul').children('li').first();
      if (child.length) {
        return dom2id(child);
      }

      child = node.next();
      if (child.length) {
        return dom2id(child);
      }

      while ((node = node.parent('ul').parent('li')) && node.length) {
        child = node.next();
        if (child.length) {
          return dom2id(child);
        }
      }
    }
  }

  function get_prev()
  {
    var node, prev, child;
    if (selection && (node = id2dom(selection))) {
      prev = node.prev();
      child = prev.find('li').last();

      if (child.length) {
        return dom2id(child);
      }

      if (prev.length) {
        return dom2id(prev);
      }

      node = node.parent().parent();
      if (node.length && node.is('li')) {
        return dom2id(node);
      }
    }
  }

  ///// drag & drop support

  /**
   * When dragging starts, compute absolute bounding boxes of the list and it's items
   * for faster comparisons while mouse is moving
   */
  function drag_start(force)
  {
    if (!force && drag_active)
      return;

    drag_active = true;

    var li, item, height,
      pos = container.offset();

    body_scroll_top = bw.ie ? 0 : window.pageYOffset;
    list_scroll_top = container.parent().scrollTop();
    pos.top += list_scroll_top;

    box_coords = {
      x1: pos.left,
      y1: pos.top,
      x2: pos.left + container.width(),
      y2: pos.top + container.height()
    };

    item_coords = [];
    for (var id in indexbyid) {
      li = id2dom(id);
      item = li.children().first().get(0);
      if (item && (height = item.offsetHeight)) {
        pos = $(item).offset();
        pos.top += list_scroll_top;
        item_coords[id] = {
          x1: pos.left,
          y1: pos.top,
          x2: pos.left + item.offsetWidth,
          y2: pos.top + height,
          on: id == autoexpand_item
        };
      }
    }

    // enable auto-scrolling of list container
    if (container.height() > container.parent().height()) {
      container.parent().on('mousemove.treelist', function(e) {
          var scroll = 0,
            mouse = rcube_event.get_mouse_pos(e);
          mouse.y -= container.parent().offset().top;

          if (mouse.y < 25 && list_scroll_top > 0) {
            scroll = -1; // up
          }
          else if (mouse.y > container.parent().height() - 25) {
            scroll = 1; // down
          }

          if (drag_active && scroll != 0) {
            if (!scroll_timer)
              scroll_timer = setTimeout(function() { drag_scroll(scroll); }, p.scroll_delay);
          }
          else if (scroll_timer) {
            window.clearTimeout(scroll_timer);
            scroll_timer = null;
          }
      })
      .on('mouseleave.treelist', function() {
          if (scroll_timer) {
            window.clearTimeout(scroll_timer);
            scroll_timer = null;
          }
      });
    }
  }

  /**
   * Signal that dragging has stopped
   */
  function drag_end()
  {
    container.parent().off('.treelist');
    $('li.droptarget', container).removeClass('droptarget');

    if (!drag_active)
      return;

    drag_active = false;
    scroll_timer = null;

    if (autoexpand_timer) {
      clearTimeout(autoexpand_timer);
      autoexpand_timer = null;
      autoexpand_item = null;
    }
  }

  /**
   * Scroll list container in the given direction
   */
  function drag_scroll(dir)
  {
    if (!drag_active)
      return;

    var old_top = list_scroll_top;
    container.parent().get(0).scrollTop += p.scroll_step * dir;
    list_scroll_top = container.parent().scrollTop();
    scroll_timer = null;

    if (list_scroll_top != old_top)
      scroll_timer = setTimeout(function() { drag_scroll(dir); }, p.scroll_speed);
  }

  /**
   * Determine if the given mouse coords intersect the list and one of its items
   */
  function intersects(mouse, highlight)
  {
    // offsets to compensate for scrolling while dragging a message
    var boffset = bw.ie ? -document.documentElement.scrollTop : body_scroll_top,
      moffset = container.parent().scrollTop(),
      result = null;

    mouse.top = mouse.y + moffset - boffset;

    // no intersection with list bounding box
    if (mouse.x < box_coords.x1 || mouse.x >= box_coords.x2 || mouse.top < box_coords.y1 || mouse.top >= box_coords.y2) {
      // TODO: optimize performance for this operation
      if (highlight)
        $('li.droptarget', container).removeClass('droptarget');
      return result;
    }

    // check intersection with visible list items
    var id, pos, node;
    for (id in item_coords) {
      pos = item_coords[id];
      if (mouse.x >= pos.x1 && mouse.x < pos.x2 && mouse.top >= pos.y1 && mouse.top < pos.y2) {
        node = indexbyid[id];

        // if the folder is collapsed, expand it after the configured time
        if (node.children && node.children.length && node.collapsed && p.autoexpand && autoexpand_item != id) {
          if (autoexpand_timer)
            clearTimeout(autoexpand_timer);

          autoexpand_item = id;
          autoexpand_timer = setTimeout(function() {
            expand(autoexpand_item);
            drag_start(true);  // re-calculate item coords
            autoexpand_item = null;
            if (ui_droppable)
              $.ui.ddmanager.prepareOffsets($.ui.ddmanager.current, null);
          }, p.autoexpand);
        }
        else if (autoexpand_timer && autoexpand_item != id) {
          clearTimeout(autoexpand_timer);
          autoexpand_item = null;
          autoexpand_timer = null;
        }

        // check if this item is accepted as drop target
        if (p.check_droptarget(node)) {
          if (highlight) {
            id2dom(id).addClass('droptarget');
            pos.on = true;
          }
          result = id;
        }
        else {
          result = null;
        }
      }
      else if (pos.on) {
        id2dom(id).removeClass('droptarget');
        pos.on = false;
      }
    }

    return result;
  }

  /**
   * Wrapper for jQuery.UI.droppable() activation on this widget
   *
   * @param object Options as passed to regular .droppable() function
   */
  function droppable(opts)
  {
    if (!opts) opts = {};

    if ($.type(opts) == 'string') {
      if (opts == 'destroy') {
        ui_droppable = null;
      }
      $('li:not(.virtual)', container).droppable(opts);
      return this;
    }

    droppable_opts = opts;

    var my_opts = $.extend({
        greedy: true,
        tolerance: 'pointer',
        hoverClass: 'droptarget',
        addClasses: false
      }, opts);

    my_opts.activate = function(e, ui) {
      drag_start();
      ui_droppable = ui;
      if (opts.activate)
        opts.activate(e, ui);
    };

    my_opts.deactivate = function(e, ui) {
      drag_end();
      ui_droppable = null;
      if (opts.deactivate)
        opts.deactivate(e, ui);
    };

    my_opts.over = function(e, ui) {
      intersects(rcube_event.get_mouse_pos(e), false);
      if (opts.over)
        opts.over(e, ui);
    };

    $('li:not(.virtual)', container).droppable(my_opts);

    return this;
  }

  /**
   * Wrapper for jQuery.UI.draggable() activation on this widget
   *
   * @param object Options as passed to regular .draggable() function
   */
  function draggable(opts)
  {
    if (!opts) opts = {};

    if ($.type(opts) == 'string') {
      if (opts == 'destroy') {
        ui_draggable = null;
      }
      $('li:not(.virtual)', container).draggable(opts);
      return this;
    }

    draggable_opts = opts;

    var my_opts = $.extend({
        appendTo: 'body',
        revert: 'invalid',
        iframeFix: true,
        addClasses: false,
        cursorAt: {left: -20, top: 5},
        create: function(e, ui) { ui_draggable = ui; },
        helper: function(e) {
          return $('<div>').attr('id', 'rcmdraglayer')
            .text($(e.target).first().text().trim());
        }
      }, opts);

    $('li:not(.virtual)', container).draggable(my_opts);

    return this;
  }

  function is_draggable()
  {
    return !!ui_draggable;
  }
}

// use event processing functions from Roundcube's rcube_event_engine
rcube_treelist_widget.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
rcube_treelist_widget.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;
rcube_treelist_widget.prototype.triggerEvent = rcube_event_engine.prototype.triggerEvent;
js/treelist.min.js000064400000033455151727150230010150 0ustar00/**
 * Roundcube Treelist Widget
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @requires jquery.js, common.js
 */
function rcube_treelist_widget(e,s){s=$.extend({id_prefix:"",autoexpand:1e3,selectable:!1,scroll_delay:500,scroll_step:5,scroll_speed:20,save_state:!1,keyboard:!0,tabexit:!0,parent_focus:!1,check_droptarget:function(e){return!e.virtual}},s||{});var d,c,n,t,o,u,r,i,l,f=$(e),a=s.data||[],h={},p=null,g=!1,v=!1,_="",m=!1,x={},b=[],y=0,T=0,w=f.attr("id")||s.id_prefix||"0",C=this;function E(e,t,r){var i;if(i=h[e]){if(i.collapsed=void 0===r||r,(n=O((a=i).id,!0)).attr("aria-expanded",a.collapsed?"false":"true"),n.children("ul").first()[a.collapsed?"hide":"show"](),n.children("div.treetoggle").removeClass("collapsed expanded").addClass(a.collapsed?"collapsed":"expanded"),C.triggerEvent("toggle",a),t&&i.children)for(var l=0;l<i.children.length;l++)E(i.children[l].id,t,r);C.triggerEvent(i.collapsed?"collapse":"expand",i);var n=e,a=i.collapsed;s.save_state&&window.rcmail&&(e="treelist-"+w,(o=o||rcmail.local_storage_get_item(e,{}))[n]!=a)&&(o[n]=a,rcmail.local_storage_set_item(e,o))}}function k(e,t){E(e,t,!1)}function L(e,t){var r;(r=h[e])&&E(e,t,!r.collapsed)}function A(e){var t;!1!==C.triggerEvent("beforeselect",h[e])&&(p&&(O(p,!0).removeClass("selected").removeAttr("aria-selected"),v&&O(p).removeClass("selected").removeAttr("aria-selected"),p=null),e)&&((t=O(e,!0)).length&&(t.addClass("selected").attr("aria-selected","true"),p=e,v&&O(e).addClass("selected").attr("aria-selected","true"),B(t)),C.triggerEvent("select",h[e]))}function F(){return p}function I(e,t){return O(e,t).get(0)}function U(e,t){var r,i,l=e.get(0).id,n=e.children().first().text().toUpperCase();e.parent().children("li"+t).each(function(e,t){if(0==e&&(r=t),t.id!=l){if(!(t.id!=l&&n>=$(t).children().first().text().toUpperCase()))return!1;i=t}}),i?e.insertAfter(i):r&&r.id!=l&&e.insertBefore(r),S()}function S(){a=function n(e,a){var o=[];e.children("li").each(function(e,t){var r,t=$(t),i=t.children("ul"),l={id:N(t),classes:String(t.attr("class")).split(" "),virtual:t.hasClass("virtual"),level:a,html:t.children().first().get(0).outerHTML,text:t.children().first().text(),children:n(i,a+1)};i.length&&(l.childlistclass=i.attr("class")),l.children.length&&(void 0===l.collapsed&&(l.collapsed="none"==i.css("display")),void 0!==(r=K(l.id))&&i[(l.collapsed=r)?"hide":"show"](),t.children("div.treetoggle").length||$('<div class="treetoggle '+(l.collapsed?"collapsed":"expanded")+'">&nbsp;</div>').appendTo(t),t.attr("aria-expanded",l.collapsed?"false":"true")),t.hasClass("selected")&&(t.attr("aria-selected","true"),p=l.id),t.data("id",l.id),t.attr("role","treeitem").attr("aria-level",l.level+1),l.virtual&&t.children("a").first().attr("tabindex","0"),o.push(l),h[l.id]=l});e.attr("role",0==a?"tree":"group");return o}(f,0)}function q(i,e){if(!(i=String(i).toLowerCase()).length)return R();var l,n;i==_&&!e||(l=[],n=function(e){$.each(e,function(e,t){var r;if(!t.virtual&&!t.deleted&&0<=String(t.text).toLowerCase().indexOf(i)&&l.indexOf(t.id)<0){if((r=O(t.id)).data("filtered"))return;r=$("<li>").attr("id",r.attr("id")+"--xsR").attr("class",r.attr("class")).addClass("searchresult__").append(r.children(":not(div.treetoggle,ul)").clone(!0,!0)).appendTo(f),rcmail.triggerEvent("clonerow",{id:t.id,row:r.get(0)}),l.push(t.id)}t.children&&t.children.length&&n(t.children)})},v&&($(f).children("li.searchresult__").remove(),v=!1),$(f).children("li").hide().removeClass("selected"),n(a),v=!0,C.triggerEvent("search",{query:i,last:_,count:l.length,ids:l,execute:e||!1}),_=i)}function R(e){t&&t.val(""),$(f).children("li.searchresult__").remove(),$(f).children("li").filter(function(){return!$(this).data("filtered")}).show(),v=!1,C.triggerEvent("search",{query:!1,last:_}),_="",p&&!e&&A(p)}function H(e,t,r){if(!e.deleted){var i=$("<li>").attr("id",s.id_prefix+(s.id_encode?s.id_encode(e.id):e.id)).attr("role","treeitem").addClass((e.classes||[]).join(" ")).data("id",e.id);if((!r||(r.replaceWith(i),t))&&i.appendTo(t),"string"==typeof e.html?i.html(e.html):"object"==typeof e.html&&i.append(e.html),e.text||(e.text=i.children().first().text()),e.virtual&&i.addClass("virtual"),e.id==p&&i.addClass("selected"),e.children&&e.children.length){i.attr("aria-expanded",e.collapsed?"false":"true"),$('<div class="treetoggle '+(e.collapsed?"collapsed":"expanded")+'">&nbsp;</div>').appendTo(i);var l=$("<ul>").appendTo(i).attr("class",e.childlistclass).attr("role","group");e.collapsed&&l.hide();for(var n=0;n<e.children.length;n++)e.children[n].level=e.level+1,H(e.children[n],l)}return i}}function N(e){e=String(e.attr("id")).replace(new RegExp("^"+s.id_prefix||"%"),"").replace(/--xsR$/,"");return s.id_decode?s.id_decode(e):e}function O(e,t){e=s.id_encode?s.id_encode(e):e,t=v&&!t?"--xsR":"";return $("#"+s.id_prefix+e+t,f)}function B(e){var t=f.parent(),r=t.scrollTop(),i=e.offset().top-t.offset().top;(i<0||i+e.height()>t.height())&&t.scrollTop(i+r)}function K(e){if(s.save_state&&window.rcmail)return(o=o||rcmail.local_storage_get_item("treelist-"+w,{}))[e]}function P(e){if(e||!g){g=!0;var t,r,i,l=f.offset();for(i in y=bw.ie?0:window.pageYOffset,T=f.parent().scrollTop(),l.top+=T,x={x1:l.left,y1:l.top,x2:l.left+f.width(),y2:l.top+f.height()},b=[],h)(t=O(i).children().first().get(0))&&(r=t.offsetHeight)&&((l=$(t).offset()).top+=T,b[i]={x1:l.left,y1:l.top,x2:l.left+t.offsetWidth,y2:l.top+r,on:i==c});f.height()>f.parent().height()&&f.parent().on("mousemove.treelist",function(e){var t=0,e=rcube_event.get_mouse_pos(e);e.y-=f.parent().offset().top,e.y<25&&0<T?t=-1:e.y>f.parent().height()-25&&(t=1),g&&0!=t?n=n||setTimeout(function(){!function e(t){if(!g)return;var r=T;f.parent().get(0).scrollTop+=s.scroll_step*t;T=f.parent().scrollTop();n=null;T!=r&&(n=setTimeout(function(){e(t)},s.scroll_speed))}(t)},s.scroll_delay):n&&(window.clearTimeout(n),n=null)}).on("mouseleave.treelist",function(){n&&(window.clearTimeout(n),n=null)})}}function W(){f.parent().off(".treelist"),$("li.droptarget",f).removeClass("droptarget"),g&&(g=!1,n=null,d)&&(clearTimeout(d),c=d=null)}function D(e,t){var r,i,l,n=bw.ie?-document.documentElement.scrollTop:y,a=f.parent().scrollTop(),o=null;if(e.top=e.y+a-n,e.x<x.x1||e.x>=x.x2||e.top<x.y1||e.top>=x.y2)t&&$("li.droptarget",f).removeClass("droptarget");else for(r in b)i=b[r],e.x>=i.x1&&e.x<i.x2&&e.top>=i.y1&&e.top<i.y2?((l=h[r]).children&&l.children.length&&l.collapsed&&s.autoexpand&&c!=r?(d&&clearTimeout(d),c=r,d=setTimeout(function(){k(c),P(!0),c=null,u&&$.ui.ddmanager.prepareOffsets($.ui.ddmanager.current,null)},s.autoexpand)):d&&c!=r&&(clearTimeout(d),d=c=null),o=s.check_droptarget(l)?(t&&(O(r).addClass("droptarget"),i.on=!0),r):null):i.on&&(O(r).removeClass("droptarget"),i.on=!1);return o}function Y(r){var e;return r=r||{},"string"==$.type(r)?("destroy"==r&&(u=null),$("li:not(.virtual)",f).droppable(r)):(l=r,(e=$.extend({greedy:!0,tolerance:"pointer",hoverClass:"droptarget",addClasses:!1},r)).activate=function(e,t){P(),u=t,r.activate&&r.activate(e,t)},e.deactivate=function(e,t){W(),u=null,r.deactivate&&r.deactivate(e,t)},e.over=function(e,t){D(rcube_event.get_mouse_pos(e),!1),r.over&&r.over(e,t)},$("li:not(.virtual)",f).droppable(e)),this}function j(e){return e=e||{},"string"==$.type(e)?("destroy"==e&&(r=null),$("li:not(.virtual)",f).draggable(e)):(i=e,e=$.extend({appendTo:"body",revert:"invalid",iframeFix:!0,addClasses:!1,cursorAt:{left:-20,top:5},create:function(e,t){r=t},helper:function(e){return $("<div>").attr("id","rcmdraglayer").text($(e.target).first().text().trim())}},e),$("li:not(.virtual)",f).draggable(e)),this}this.container=f,this.expand=k,this.collapse=E,this.expand_all=function(){$.each(h,function(e,t){0<t.children.length&&t.collapsed&&E(e,!1,!1)})},this.collapse_all=function(){$.each(h,function(e,t){0<t.children.length&&!t.collapsed&&E(e)})},this.select=A,this.render=function(){if(!1!==C.triggerEvent("renderBefore",a)){f.html("");for(var e=0;e<a.length;e++)a[e].level=0,H(a[e],f);C.triggerEvent("renderAfter",f)}},this.reset=function(e,t){t||A("");a=[],g=!(h={}),e?(i&&(r&&j("destroy"),j(i)),l&&(u&&Y("destroy"),Y(l)),S()):f.html("");R(t)},this.drag_start=P,this.drag_end=W,this.intersects=D,this.droppable=Y,this.draggable=j,this.is_draggable=function(){return!!r},this.update=function(e,t,r){var i,l,n,a,o=h[e];o&&(i=O(e),l=i.parent(),(t.id||t.html||t.children||t.classes||t.parent)&&(t.parent&&(n=h[t.parent])?(l.closest("li").length&&(a=h[N(l.closest("li"))])&&(a.children=$.grep(a.children,function(e,t){return e.id!=o.id})),l=O(t.parent).children("ul").first(),n.children||(n.children=[]),n.children.push(o)):void 0!==t.parent&&(l=f),$.extend(o,t),i=H(o,l,i)),o.id!=e&&(delete h[e],h[o.id]=o),r)&&U(i,"string"==typeof r?'[class~="'+r+'"]':"")},this.insert=function(e,t,r){var i,l=t?h[t]:null;search_=v,h[e.id]||(void 0!==(state=K(e.id,e.collapsed))&&(e.collapsed=state),l?(e.level=l.level+1,l.children?l.children=l.children.filter(function(e){return!e.deleted}):l.children=[],v=!1,l.children.push(e),t=O(t),i=1==l.children.length?(H(l,null,t),O(e.id)):H(e,t.children("ul").first()),search_&&(v=search_,i.is(":visible")||$("<li>").attr("id",i.attr("id")+"--xsR").attr("class",i.attr("class")).addClass("searchresult__").append(i.children().first().clone(!0,!0)).appendTo(f))):(e.level=0,a.push(e),i=H(e,f)),"object"==typeof(h[e.id]=e).html&&(h[e.id].html=O(e.id,!0).children()),r&&U(i,"string"==typeof r?'[class~="'+r+'"]':""))},this.remove=function(e){var t,r,i;if(t=h[e])return r=O(e,!0),i=r.parent(),r.remove(),t.deleted=!0,delete h[e],v&&O(e,!1).remove(),i.children().length||(i.parent("li").find("div.treetoggle").remove(),i[0]!=f[0]&&i.remove()),!0;return!1},this.get_item=I,this.get_node=function(e){return h[e]},this.get_selection=F,this.in_selection=function(e){return p==e},this.get_next=function(){var e,t;if(p&&(e=O(p))){if((t=e.children("ul").children("li").first()).length)return N(t);if((t=e.next()).length)return N(t);for(;(e=e.parent("ul").parent("li"))&&e.length;)if((t=e.next()).length)return N(t)}},this.get_prev=function(){var e,t,r;if(p&&(e=O(p)))return t=e.prev(),(r=t.find("li").last()).length?N(r):t.length?N(t):(e=e.parent().parent()).length&&e.is("li")?N(e):void 0},this.get_single_selection=F,this.is_search=function(){return v},this.reset_search=R,f.length&&(s.data?function e(t){t.id&&(h[t.id]=t);for(var r=0;t.children&&r<t.children.length;r++)e(t.children[r])}({children:a}):S(),p&&B(O(p,!0)),f.attr("role","tree").on("focusin",function(e){m=!0}).on("focusout",function(e){m=!1}).on("click","div.treetoggle",function(e){L(N($(this).parent())),e.stopPropagation()}).on("click","li",function(e){if($(e.target).is("input"))return!0;var t=s.selectable?h[N($(this))]:null;t&&(t.virtual||A(t.id),e.stopPropagation())}).on("mousedown","a",function(e){var t=$(e.target),r=h[N(t.closest("li"))];if(r&&r.virtual&&!t.attr("href"))return e.preventDefault(),e.stopPropagation(),!1}),s.searchbox&&(t=$(s.searchbox).off("keyup.treelist").on("keyup.treelist",function(e){var t=rcube_event.get_keycode(e);rcube_event.get_modifier(e);switch(t){case 9:break;case 13:return q(this.value,!0),rcube_event.cancel(e);case 27:R();break;case 38:case 37:case 39:case 40:return;default:q(this.value,!1)}}).attr("autocomplete","off")).parent().find("a.reset").off("click.treelist").on("click.treelist",function(e){return R(),!1}),$(document.body).on("keydown",function(e){var t,r,i=e.target||{},l=rcube_event.get_keycode(e);if(m&&("INPUT"!=i.nodeName||38==l||40==l)&&"TEXTAREA"!=i.nodeName&&"SELECT"!=i.nodeName)switch(l){case 38:case 40:case 63232:case 63233:return(t=s.keyboard?f.find(":focus").closest("li"):[]).length&&function e(t,r,i){var l=r<0?"prev":"next",l=t[l]();0<r&&!i&&t.children("ul[role=group]:visible").length?t.children("ul").children("li").first().find("a").first().focus():r<0&&!i&&l.children("ul[role=group]:visible").length?l.children("ul").children("li").last().find("a").first().focus():l.length&&l.find("a").first().focus().length||(i=t.parent().closest("li[role=treeitem]")).length&&(r<0?i.find("a").first().focus():e(i,r,!0))}(t,mod=38==l||63232==l?-1:1),rcube_event.cancel(e);case 37:case 39:return(t=f.find(":focus").closest("li")).length&&(t=N(t),r=h[t])&&r.children.length&&r.collapsed!=(37==l)&&L(t,rcube_event.get_modifier(e)==SHIFT_KEY),!1;case 9:s.keyboard&&s.tabexit&&(r=rcube_event.get_modifier(e)==SHIFT_KEY?"first":"last",function(e){{var t,r;e.length&&(t=f.parent().get(0)||{scrollTop:0},r=t.scrollTop||t.scrollY,e.focus(),t.scrollTop=r)}}(f.find("li[role=treeitem]:has(a)")[r]().find("a:"+r)))}return!0}),s.parent_focus)&&f.parent(":not(body)").click(function(e){if($(e.target).is("input"))return!0;!m&&p?$(I(p)).find(":focusable").first().focus():m||f.children("li").find(":focusable").first().focus()})}rcube_treelist_widget.prototype.addEventListener=rcube_event_engine.prototype.addEventListener,rcube_treelist_widget.prototype.removeEventListener=rcube_event_engine.prototype.removeEventListener,rcube_treelist_widget.prototype.triggerEvent=rcube_event_engine.prototype.triggerEvent;
js/tinymce/plugins/link/plugin.min.js000064400000036561151727150230013702 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function t(r){return function(t){return e=typeof(n=t),(null===n?"null":"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e)===r;var n,e}}function n(n){return function(t){return typeof t===n}}function h(){}function i(t){return function(){return t}}function e(t){return t}function r(t,n){return t===n}function o(){return v}var u,a=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK"),l=t("string"),d=t("array"),p=function(t){return u===t},f=n("boolean"),s=n("function"),m=i(!1),g=i(!(u=null)),v={fold:function(t,n){return t()},isSome:m,isNone:g,getOr:e,getOrThunk:y,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:y,map:o,each:h,bind:o,exists:m,forall:g,filter:function(){return v},toArray:function(){return[]},toString:i("none()")};function y(t){return t()}function k(t,o,i){return function(t){for(var n,e=0,r=t.length;e<r;e++)n=t[e],i=o(i,n,e)}(t),i}function x(t){for(var n=[],e=0,r=t.length;e<r;++e){if(!d(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);at.apply(n,t[e])}return n}function b(t,n){for(var e=0;e<t.length;e++){var r=n(t[e],e);if(r.isSome())return r}return it.none()}function O(t,n,e){return void 0===e&&(e=r),t.exists(function(t){return e(t,n)})}function w(t,n){return t?it.some(n):it.none()}function C(t){var n=t.getParam("link_assume_external_targets",!1);return f(n)&&n?1:!l(n)||"http"!==n&&"https"!==n?0:n}function N(t){return t.getParam("default_link_target")}function A(t){return t.getParam("target_list",!0)}function T(t){return t.getParam("rel_list",[],"array")}function P(t){return t.getParam("allow_unsafe_link_target",!1,"boolean")}function S(t){return l(t.value)?t.value:""}function _(n){return void 0===n&&(n=S),function(t){return it.from(t).map(function(t){return ct(t,n)})}}function R(t,i,u,a){return function(t){for(var n=mt(t),e=0,r=n.length;e<r;e++){var o=n[e];!function(t,n){(i(t,n)?u:a)(t,n)}(t[o],o)}}(t),1}function D(t,n){return gt.call(t,n)}function L(t){return t&&"a"===t.nodeName.toLowerCase()}function E(t){return L(t)&&!!pt(t)}function M(t,n){if(t.collapsed)return[];for(var e=t.cloneContents(),r=new dt(e.firstChild,e),o=[],i=e.firstChild;n(i)&&o.push(i),i=r.next(););return o}function U(t){return/^\w+:/i.test(t)}function B(t,n){function e(t){return t.filter(function(t){return-1===lt.inArray(o,t)})}var r,o=["noopener"],i=t?t.split(/\s+/):[],u=n?0<(r=e(r=i)).length?r.concat(o):o:e(i);return 0<u.length?lt.trim(u.sort().join(" ")):""}function I(t,n){return n=n||t.selection.getNode(),vt(n)?t.dom.select("a[href]",n)[0]:t.dom.getParent(n,"a[href]")}function K(t,n){return(n?n.innerText||n.textContent:t.getContent({format:"text"})).replace(/\uFEFF/g,"")}function z(t){return 0<lt.grep(t,E).length}function j(t){var n=t.schema.getTextInlineElements();return 0===M(t.selection.getRng(),function(t){return 1===t.nodeType&&!L(t)&&!D(n,t.nodeName.toLowerCase())}).length}function V(l,c,f){var t,n,e,r,o,i,u,s=l.selection.getNode(),m=I(l,s),g=(n=l,e=k(["title","rel","class","target"],function(n,e){return t[e].each(function(t){n[e]=0<t.length?t:null}),n},{href:(t=f).href}),u=st({},e),0<T(n).length||!1!==P(n)||(r=B(u.rel,"_blank"===u.target),u.rel=r||null),it.from(u.target).isNone()&&!1===A(n)&&(u.target=N(n)),u.href=(o=u.href,"http"!==(i=C(n))&&"https"!==i||U(o)?o:i+"://"+o),u);l.undoManager.transact(function(){var n,t,e,r,o,i,u,a;f.href===c.href&&c.attach(),m?(l.focus(),o=l,i=m,u=f.text,a=g,u.each(function(t){D(i,"innerText")?i.innerText=t:i.textContent=t}),o.dom.setAttribs(i,a),o.selection.select(i)):(n=l,e=f.text,r=g,vt(t=s)?kt(n,t,r):e.fold(function(){n.execCommand("mceInsertLink",!1,r)},function(t){n.insertContent(n.dom.createHTML("a",r,n.dom.encode(t)))}))})}function q(t,n,e){var r,o,i,u,a,l,c,f,s,m,g=(r=t,o=e.href,st(st({},e),{href:ht.isDomSafe(o,"a",r.settings)?o:""}));t.hasPlugin("rtc",!0)?t.execCommand("createlink",!1,(a=g.class,l=g.href,c=g.rel,f=g.target,s=g.text,m=g.title,R({class:a.getOrNull(),href:l,rel:c.getOrNull(),target:f.getOrNull(),text:s.getOrNull(),title:m.getOrNull()},function(t,n){return!1===p(t)},(i=u={},function(t,n){i[n]=t}),h),u)):V(t,n,g)}function F(t){var l;t.hasPlugin("rtc",!0)?t.execCommand("unlink"):(l=t).undoManager.transact(function(){var t,n,e,r,o,i,u,a=l.selection.getNode();vt(a)?yt(l,a):(n=(t=l).dom,r=(e=t.selection).getBookmark(),o=e.getRng().cloneRange(),i=n.getParent(o.startContainer,"a[href]",t.getBody()),u=n.getParent(o.endContainer,"a[href]",t.getBody()),i&&o.setStartBefore(i),u&&o.setEndAfter(u),e.setRng(o),t.execCommand("unlink"),e.moveToBookmark(r)),l.focus()})}function W(t){var n=t.href;return 0<n.indexOf("@")&&-1===n.indexOf("/")&&-1===n.indexOf("mailto:")?it.some({message:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",preprocess:function(t){return st(st({},t),{href:"mailto:"+n})}}):it.none()}function H(t,n,e){var r=t.getAttrib(n,e);return null!==r&&0<r.length?it.some(r):it.none()}function G(d){var t,n=I(t=d);Tt(t,n).then(function(t){var n,e,i,u,r=function(t){var e=t.getData();if(!e.url.value)return F(i),void t.close();function n(n){return it.from(e[n]).filter(function(t){return!O(u.anchor[n],t)})}var r={href:e.url.value,text:n("text"),target:n("target"),rel:n("rel"),class:n("linkClass"),title:n("title")},o={href:e.url.value,attach:void 0!==e.url.meta&&e.url.meta.attach?e.url.meta.attach:h};Ct(i,r).then(function(t){q(i,o,t)}),t.close()},o=i=d,a=(n=u=t).anchor.text.map(function(){return{name:"text",type:"input",label:"Text to display"}}).toArray(),l=n.flags.titleEnabled?[{name:"title",type:"input",label:"Title"}]:[],c=it.from(N(o)),f=n.anchor,s={url:{value:e=f.url.getOr(""),meta:{original:{value:e}}},text:f.text.getOr(""),title:f.title.getOr(""),anchor:e,link:e,rel:f.rel.getOr(""),target:f.target.or(c).getOr(""),linkClass:f.linkClass.getOr("")},m=n.catalogs,g=bt(s,m);return{title:"Insert/Edit Link",size:"normal",body:{type:"panel",items:x([[{name:"url",type:"urlinput",filetype:"file",label:"URL"}],a,l,function(t){for(var n=[],e=function(t){n.push(t)},r=0;r<t.length;r++)t[r].each(e);return n}([m.anchor.map(ft.createUi("anchor","Anchors")),m.rels.map(ft.createUi("rel","Rel")),m.targets.map(ft.createUi("target","Open link in...")),m.link.map(ft.createUi("link","Link list")),m.classes.map(ft.createUi("linkClass","Class"))])])},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:s,onChange:function(n,t){var e=t.name;g.onChange(n.getData,{name:e}).each(function(t){n.setData(t)})},onSubmit:r}}).then(function(t){d.windowManager.open(t)})}function J(t,n){return t.dom.getParent(n,"a[href]")}function X(t){return J(t,t.selection.getStart())}function $(t,n){var e,r;n&&(e=pt(n),/^#/.test(e)?(r=t.$(e)).length&&t.selection.scrollIntoView(r[0],!0):function(t){var n=document.createElement("a");n.target="_blank",n.href=t,n.rel="noreferrer noopener";var e,r,o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),e=n,r=o,document.body.appendChild(e),e.dispatchEvent(r),document.body.removeChild(e)}(n.href))}function Q(t){return function(){G(t)}}function Y(t){return function(){$(t,X(t))}}function Z(t,n){return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}function tt(e){return function(t){function n(){return t.setActive(!e.mode.isReadOnly()&&null!==I(e,e.selection.getNode()))}return n(),Z(e,n)}}function nt(e){return function(t){function n(){return t.setDisabled(null===I(e,e.selection.getNode()))}return n(),Z(e,n)}}function et(r){return function(n){function e(t){return z(t)||0<M(r.selection.getRng(),E).length}var t=r.dom.getParents(r.selection.getStart());return n.setDisabled(!e(t)),Z(r,function(t){return n.setDisabled(!e(t.parents))})}}function rt(t){var n=x(function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var i=t[o];r[o]=n(i,o)}return r}(t.dom.select("a:not([href])"),function(t){var n=t.name||t.id;return n?[{text:n,value:"#"+n}]:[]}));return 0<n.length?it.some([{text:"None",value:""}].concat(n)):it.none()}var ot=function(e){function t(){return o}function n(t){return t(e)}var r=i(e),o={fold:function(t,n){return n(e)},isSome:g,isNone:m,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return ot(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?o:v},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return o},it={some:ot,none:o,from:function(t){return null==t?v:ot(t)}},ut=Array.prototype.indexOf,at=Array.prototype.push,lt=tinymce.util.Tools.resolve("tinymce.util.Tools"),ct=function(t,i){var u=[];return lt.each(t,function(t){var n,e,r,o=l((n=t).text)?n.text:l(n.title)?n.title:"";void 0!==t.menu?(e=ct(t.menu,i),u.push({text:o,items:e})):(r=i(t),u.push({text:o,value:r}))}),u},ft={sanitize:function(t){return _(S)(t)},sanitizeWith:_,createUi:function(n,e){return function(t){return{name:n,type:"listbox",label:e,items:t}}},getValue:S},st=function(){return(st=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)},mt=Object.keys,gt=Object.hasOwnProperty,dt=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),ht=tinymce.util.Tools.resolve("tinymce.util.URI"),pt=function(t){return t.getAttribute("data-mce-href")||t.getAttribute("href")},vt=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},yt=function(t,n){var e,r=t.dom.select("img",n)[0];!r||(e=t.dom.getParents(r,"a[href]",n)[0])&&(e.parentNode.insertBefore(r,e),t.dom.remove(e))},kt=function(t,n,e){var r,o=t.dom.select("img",n)[0];o&&(r=t.dom.create("a",e),o.parentNode.insertBefore(r,o),r.appendChild(o))},xt=function(e,t){return b(t,function(t){return D(n=t,"items")&&void 0!==n.items&&null!==n.items?xt(e,t.items):w(t.value===e,t);var n})},bt=function(t,c){function f(t,n){var e,r,o,i,u,a,l=("link"===(e=n.name)?c.link:"anchor"===e?c.anchor:it.none()).getOr([]);return r=s.text,o=n.name,i=l,u=t[o],a=0<r.length,void 0!==u?xt(u,i).map(function(t){return{url:{value:t.value,meta:{text:a?r:t.text,attach:h}},text:a?r:t.text}}):it.none()}var s={text:t.text,title:t.title};return{onChange:function(t,n){var e,r,o,i,u,a,l=n.name;return"url"===l?(r=t(),o=r.url,u=w(s.text.length<=0,it.from(o.meta.text).getOr(o.value)),i=r.url,a=w(s.title.length<=0,it.from(i.meta.title).getOr("")),u.isSome()||a.isSome()?it.some(st(st({},u.map(function(t){return{text:t}}).getOr({})),a.map(function(t){return{title:t}}).getOr({}))):it.none()):(e=["anchor","link"],-1<ut.call(e,l)?f(t(),n):("text"!==l&&"title"!==l||(s[l]=t()[l]),it.none()))}}},Ot=tinymce.util.Tools.resolve("tinymce.util.Delay"),wt=tinymce.util.Tools.resolve("tinymce.util.Promise"),Ct=function(u,a){return b([W,(e=C(u),r=u.getParam("link_default_protocol","http","string"),function(t){var n=t.href;return 1===e&&!U(n)||0===e&&/^\s*www(\.|\d\.)/i.test(n)?it.some({message:"The URL you entered seems to be an external link. Do you want to add the required "+r+":// prefix?",preprocess:function(t){return st(st({},t),{href:r+"://"+n})}}):it.none()})],function(t){return t(a)}).fold(function(){return wt.resolve(a)},function(i){return new wt(function(n){var e=u,t=i.message,r=function(t){n(t?i.preprocess(a):a)},o=e.selection.getRng();Ot.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),r(t)})})})});var e,r},Nt=tinymce.util.Tools.resolve("tinymce.util.XHR"),At=[{text:"Current window",value:""},{text:"New window",value:"_blank"}],Tt=function(m,g){return t=(e=m).getParam("link_list"),new wt(function(n){l(t)?Nt.send({url:t,success:function(t){return n(function(t){try{return it.some(JSON.parse(t))}catch(t){return it.none()}}(t))},error:function(t){return n(it.none())}}):s(t)?t(function(t){return n(it.some(t))}):n(it.from(t))}).then(function(t){return t.bind(ft.sanitizeWith(n)).map(function(t){return 0<t.length?[{text:"None",value:""}].concat(t):t})}).then(function(t){var n,e,r,o,i,u,a,l,c,f,s=(e=g,r=(n=m).dom,o=j(n)?it.some(K(n.selection,e)):it.none(),i=e?it.some(r.getAttrib(e,"href")):it.none(),u=e?it.from(r.getAttrib(e,"target")):it.none(),a=H(r,e,"rel"),l=H(r,e,"class"),{url:i,text:o,title:H(r,e,"title"),target:u,rel:a,linkClass:l});return{anchor:s,catalogs:{targets:(f=A(m),d(f)?ft.sanitize(f).orThunk(function(){return it.some(At)}):!1===f?it.none():it.some(At)),rels:function(t,n){var e=T(t);if(0<e.length){var r=O(n,"_blank");return(!1===P(t)?ft.sanitizeWith(function(t){return B(ft.getValue(t),r)}):ft.sanitize)(e)}return it.none()}(m,s.target),classes:0<(c=m.getParam("link_class_list",[],"array")).length?ft.sanitize(c):it.none(),anchor:rt(m),link:t},optNode:it.from(g),flags:{titleEnabled:m.getParam("link_title",!0,"boolean")}}});function n(t){return e.convertURL(t.value||t.url,"href")}var e,t};a.add("link",function(t){var n,e,r,o,i,u,a;function l(t){var n=a.selection.getNode();return t.setDisabled(!I(a,n)),h}(n=t).ui.registry.addToggleButton("link",{icon:"link",tooltip:"Insert/edit link",onAction:Q(n),onSetup:tt(n)}),n.ui.registry.addButton("openlink",{icon:"new-tab",tooltip:"Open link",onAction:Y(n),onSetup:nt(n)}),n.ui.registry.addButton("unlink",{icon:"unlink",tooltip:"Remove link",onAction:function(){return F(n)},onSetup:et(n)}),(e=t).ui.registry.addMenuItem("openlink",{text:"Open link",icon:"new-tab",onAction:Y(e),onSetup:nt(e)}),e.ui.registry.addMenuItem("link",{icon:"link",text:"Link...",shortcut:"Meta+K",onAction:Q(e)}),e.ui.registry.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onAction:function(){return F(e)},onSetup:et(e)}),(r=t).ui.registry.addContextMenu("link",{update:function(t){return z(r.dom.getParents(t,"a"))?"link unlink openlink":"link"}}),(a=t).ui.registry.addContextForm("quicklink",{launch:{type:"contextformtogglebutton",icon:"link",tooltip:"Link",onSetup:tt(a)},label:"Link",predicate:function(t){return!!I(a,t)&&a.getParam("link_context_toolbar",!1,"boolean")},initValue:function(){var t=I(a);return t?pt(t):""},commands:[{type:"contextformtogglebutton",icon:"link",tooltip:"Link",primary:!0,onSetup:function(t){var n=a.selection.getNode();return t.setActive(!!I(a,n)),tt(a)(t)},onAction:function(t){var n=t.getValue(),e=function(t){var n=I(a),e=j(a);if(n||!e)return it.none();var r=K(a.selection,n);return it.some(0<r.length?r:t)}(n);q(a,{href:n,attach:h},{href:n,text:e,title:it.none(),rel:it.none(),target:it.none(),class:it.none()}),a.selection.collapse(!1),t.hide()}},{type:"contextformbutton",icon:"unlink",tooltip:"Remove link",onSetup:l,onAction:function(t){F(a),t.hide()}},{type:"contextformbutton",icon:"new-tab",tooltip:"Open link",onSetup:l,onAction:function(t){Y(a)(),t.hide()}}]}),(u=t).on("click",function(t){var n=J(u,t.target);n&&c.metaKeyPressed(t)&&(t.preventDefault(),$(u,n))}),u.on("keydown",function(t){var n=X(u);n&&13===t.keyCode&&!0===t.altKey&&!1===t.shiftKey&&!1===t.ctrlKey&&!1===t.metaKey&&(t.preventDefault(),$(u,n))}),(o=t).addCommand("mceLink",function(){o.getParam("link_quicklink",!1,"boolean")?o.fire("contexttoolbar-show",{toolbarKey:"quicklink"}):Q(o)()}),(i=t).addShortcut("Meta+K","",function(){i.execCommand("mceLink")})})}();js/tinymce/plugins/image/plugin.min.js000064400000047270151727150230014026 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function D(e){return!(null==e)}function l(){}function a(e){return function(){return e}}function n(e){return e}function r(){return g}var i,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=function(){return(v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},T=e("string"),s=e("object"),c=e("array"),N=t("boolean"),w=t("function"),u=t("number"),m=a(!1),d=a(!(i=null)),g={fold:function(e,t){return e()},isSome:m,isNone:d,getOr:n,getOrThunk:p,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(void 0),or:n,orThunk:p,map:r,each:l,bind:r,exists:m,forall:d,filter:function(){return g},toArray:function(){return[]},toString:a("none()")};function p(e){return e()}function f(e,a,o,l){return function(e){for(var t=y(e),n=0,r=t.length;n<r;n++){var i=t[n];!function(e,t){(a(e,t)?o:l)(e,t)}(e[i],i)}}(e),1}function h(e,t){return A.call(e,t)}function S(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!c(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);U.apply(t,e[n])}return t}var b=function(n){function e(){return i}function t(e){return e(n)}var r=a(n),i={fold:function(e,t){return t(n)},isSome:d,isNone:m,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return b(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?i:g},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return i},L={some:b,none:r,from:function(e){return null==e?g:b(e)}},y=Object.keys,A=Object.hasOwnProperty,U=Array.prototype.push;function I(e,t,n){!function(e,t,n){if(!(T(n)||N(n)||u(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}(e.dom,t,n)}function C(e){return e.getParam("image_dimensions",!0,"boolean")}function x(e,t){return Math.max(parseInt(e,10),parseInt(t,10))}function O(e){return e&&e.replace(/px$/,"")}function P(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e}function _(e){if(e.margin){var t=String(e.margin).split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e}function E(e){return"IMG"===e.nodeName&&(e.hasAttribute("data-mce-object")||e.hasAttribute("data-mce-placeholder"))}function R(e,t){return we.isDomSafe(t,"img",e.settings)}function k(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?O(e.style.marginLeft):""}function z(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?O(e.style.marginTop):""}function M(e){return e.style.borderWidth?O(e.style.borderWidth):""}function j(e,t){return e.hasAttribute(t)?e.getAttribute(t):""}function B(e,t){return e.style[t]||""}function H(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName}function F(e,t,n){""===n?e.removeAttribute(t):e.setAttribute(t,n)}function G(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")}function W(e,r){return function(e,t,n){e.style[t]?(e.style[t]=P(n),G(e,r)):F(e,t,n)}}function V(e,t){return e.style[t]?O(e.style[t]):j(e,t)}function $(e,t){var n=P(t);e.style.marginLeft=n,e.style.marginRight=n}function J(e,t){var n=P(t);e.style.marginTop=n,e.style.marginBottom=n}function K(e,t){var n=P(t);e.style.borderWidth=n}function X(e,t){e.style.borderStyle=t}function Z(e){return"FIGURE"===e.nodeName}function q(e){return 0===Ue.getAttrib(e,"alt").length&&"presentation"===Ue.getAttrib(e,"role")}function Q(){return{src:"",alt:"",title:"",width:"",height:"",class:"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:"",isDecorative:!1}}function Y(e,t){return{src:j(t,"src"),alt:q(n=t)?"":j(n,"alt"),title:j(t,"title"),width:V(t,"width"),height:V(t,"height"),class:j(t,"class"),style:e(j(t,"style")),caption:H(t),hspace:k(t),vspace:z(t),border:M(t),borderStyle:B(t,"borderStyle"),isDecorative:q(t)};var n}function ee(e,t,n,r,i){n[r]!==t[r]&&i(e,r,n[r])}function te(r,i){return function(e,t,n){r(e,n),G(e,i)}}function ne(e,t){var n=_(e.dom.styles.parse(t)),r=e.dom.styles.parse(e.dom.styles.serialize(n));return e.dom.styles.serialize(r)}function re(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||E(t))?null:t}function ie(n,e){var r,t,i=n.dom,a=(f(n.schema.getTextBlockElements(),function(e,t){return!n.schema.isValidChild(t,"figure")},(r=t={},function(e,t){r[t]=e}),l),t),o=i.getParent(e.parentNode,function(e){return h(t=a,n=e.nodeName)&&null!=t[n];var t,n},n.getBody());return o?i.split(o,e):e}function ae(r,e){var t=function(e){var t=document.createElement("img");if(Ce(function(e){return ne(r,e)},v(v({},e),{caption:!1}),t),Ie(t,e.alt,e.isDecorative),e.caption){var n=Ue.create("figure",{class:"image"});return n.appendChild(t),n.appendChild(Ue.create("figcaption",{contentEditable:"true"},"Caption")),n.contentEditable="false",n}return t}(e);r.dom.setAttrib(t,"data-mce-id","__mcenew"),r.focus(),r.selection.setContent(t.outerHTML);var n,i=r.dom.select('*[data-mce-id="__mcenew"]')[0];r.dom.setAttrib(i,"data-mce-id",null),Z(i)?(n=ie(r,i),r.selection.select(n)):r.selection.select(i)}function oe(t,e){var n,r,i,a,o,l,s,c,u,m,d,g,p,f,h,b=re(t);function y(){f.onload=f.onerror=null,g.selection&&(g.selection.select(f),g.nodeChanged())}b?(n=Y(function(e){return ne(t,e)},b),r=v(v({},n),e),s=t,c=r.src,i=v(v({},r),{src:R(s,c)?c:""}),r.src?(m=i,h=re(u=t),Ce(function(e){return ne(u,e)},m,h),u.dom.setAttrib(h,"src",h.getAttribute("src")),Z(h.parentNode)?(d=h.parentNode,ie(u,d),u.selection.select(h.parentNode)):(u.selection.select(h),g=u,p=m,(f=h).onload=function(){p.width||p.height||!C(g)||g.dom.setAttribs(f,{width:String(f.clientWidth),height:String(f.clientHeight)}),y()},f.onerror=y)):(a=t,(o=b)&&(l=a.dom.is(o.parentNode,"figure.image")?o.parentNode:o,a.dom.remove(l),a.focus(),a.nodeChanged(),a.dom.isEmpty(a.getBody())&&(a.setContent(""),a.selection.setCursorLocation())))):e.src&&ae(t,v(v({},Q()),e))}function le(e){return T(e.value)?e.value:""}function se(t){return void 0===t&&(t=le),function(e){return e?L.from(e).map(function(e){return Ne(e,t)}):L.none()}}function ce(e){var t=e.imageList.map(function(e){return{name:"images",type:"listbox",label:"Image list",items:e}}),n={name:"alt",type:"input",label:"Alternative description",disabled:e.hasAccessibilityOptions&&e.image.isDecorative},r=e.classList.map(function(e){return{name:"classes",type:"listbox",label:"Class",items:e}});return S([[{name:"src",type:"urlinput",filetype:"image",label:"Source"}],t.toArray(),e.hasAccessibilityOptions&&e.hasDescription?[{type:"label",label:"Accessibility",items:[{name:"isDecorative",type:"checkbox",label:"Image is decorative"}]}]:[],e.hasDescription?[n]:[],e.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],e.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[v(v({},e.classList.isSome()&&e.hasImageCaption?{type:"grid",columns:2}:{type:"panel"}),{items:S([r.toArray(),e.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])})]])}function ue(e){return{src:{value:e.src,meta:{}},images:e.src,alt:e.alt,title:e.title,dimensions:{width:e.width,height:e.height},classes:e.class,caption:e.caption,style:e.style,vspace:e.vspace,border:e.border,hspace:e.hspace,borderstyle:e.borderStyle,fileinput:[],isDecorative:e.isDecorative}}function me(e,t){return{src:e.src.value,alt:0===e.alt.length&&t?null:e.alt,title:e.title,width:e.dimensions.width,height:e.dimensions.height,class:e.classes,style:e.style,caption:e.caption,hspace:e.hspace,vspace:e.vspace,border:e.border,borderStyle:e.borderstyle,isDecorative:e.isDecorative}}function de(e,t,n,r){var i,a,o,l,s,c,u,m,d,g,p,f,h,b,y,v,A,D,w,S,U,I,C,x,O;U=t,C=(I=r).getData(),x=U,O=C.src.value,(/^(?:[a-zA-Z]+:)?\/\//.test(O)?L.none():x.prependURL.bind(function(e){return O.substring(0,e.length)!==e?L.some(e+O):L.none()})).each(function(e){I.setData({src:{value:e,meta:C.src.meta}})}),h=t,w=(b=r).getData(),void 0!==(S=w.src.meta)&&(y=xe({},w),A=y,D=S,(v=h).hasDescription&&T(D.alt)&&(A.alt=D.alt),v.hasAccessibilityOptions&&(A.isDecorative=D.isDecorative||A.isDecorative||!1),v.hasImageTitle&&T(D.title)&&(A.title=D.title),v.hasDimensions&&(T(D.width)&&(A.dimensions.width=D.width),T(D.height)&&(A.dimensions.height=D.height)),T(D.class)&&Ee(v.classList,D.class).each(function(e){A.classes=e.value}),v.hasImageCaption&&N(D.caption)&&(A.caption=D.caption),v.hasAdvTab&&(T(D.style)&&(A.style=D.style),T(D.vspace)&&(A.vspace=D.vspace),T(D.border)&&(A.border=D.border),T(D.hspace)&&(A.hspace=D.hspace),T(D.borderstyle)&&(A.borderstyle=D.borderstyle)),b.setData(y)),i=e,a=t,o=n,c=(s=(l=r).getData()).src.value,(u=s.src.meta||{}).width||u.height||!a.hasDimensions||(0<c.length?i.imageSize(c).then(function(e){o.open&&l.setData({dimensions:e})}).catch(function(e){return console.error(e)}):l.setData({dimensions:{width:"",height:""}})),m=t,d=n,p=(g=r).getData(),f=Ee(m.imageList,p.src.value),d.prevImage=f,g.setData({images:f.map(function(e){return e.value}).getOr("")})}function ge(l,s,t,c){var e,n=c.getData();c.block("Uploading image"),(0<(e=n.fileinput).length?L.some(e[0]):L.none()).fold(function(){c.unblock()},function(n){function r(){c.unblock(),URL.revokeObjectURL(a)}function i(e){c.setData({src:{value:e,meta:{}}}),c.showTab("general"),de(l,s,t,c)}var a=URL.createObjectURL(n),o=n;new De(function(e,t){var n=new FileReader;n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(o)}).then(function(e){var t=l.createBlobCache(n,a,e);s.automaticUploads?l.uploadImage(t).then(function(e){i(e.url),r()}).catch(function(e){r(),l.alertErr(e)}):(l.addToBlobCache(t),i(t.blobUri()),c.unblock())})})}function pe(S,U,I){return function(e,t){var n,r,i,a,o,l,s,c,u,m,d,g,p,f,h,b,y,v,A,D,w;"src"===t.name?de(S,U,I,e):"images"===t.name?(c=S,u=U,m=I,g=(d=e).getData(),(p=Ee(u.imageList,g.images)).each(function(e){""===g.alt||m.prevImage.map(function(e){return e.text===g.alt}).getOr(!1)?""===e.value?d.setData({src:e,alt:m.prevAlt}):d.setData({src:e,alt:e.text}):d.setData({src:e})}),m.prevImage=p,de(c,u,m,d)):"alt"===t.name?I.prevAlt=e.getData().alt:"style"===t.name?(o=S,s=(l=e).getData(),y=o.parseStyle,v=o.serializeStyle,D=_(y((A=s).style)),(w=xe({},A)).vspace=D["margin-top"]&&D["margin-bottom"]&&D["margin-top"]===D["margin-bottom"]?O(String(D["margin-top"])):"",w.hspace=D["margin-right"]&&D["margin-left"]&&D["margin-right"]===D["margin-left"]?O(String(D["margin-right"])):"",w.border=D["border-width"]?O(String(D["border-width"])):"",w.borderstyle=D["border-style"]?String(D["border-style"]):"",w.style=v(y(v(D))),l.setData(w)):"vspace"===t.name||"hspace"===t.name||"border"===t.name||"borderstyle"===t.name?(n=S,i=xe(ue(U.image),(r=e).getData()),f=n.normalizeCss,h=me(i,!1),F(b=document.createElement("img"),"style",h.style),!k(b)&&""===h.hspace||$(b,h.hspace),!z(b)&&""===h.vspace||J(b,h.vspace),!M(b)&&""===h.border||K(b,h.border),!B(b,"borderStyle")&&""===h.borderStyle||X(b,h.borderStyle),a=f(b.getAttribute("style")),r.setData({style:a})):"fileinput"===t.name?ge(S,U,I,e):"isDecorative"===t.name&&(e.getData().isDecorative?e.disable("alt"):e.enable("alt"))}}function fe(v){var t,n,r,i,a,o,l,s,c,A={onSubmit:function(n){return function(e){var t=xe(ue(n.image),e.getData());c.execCommand("mceUpdateImage",!1,me(t,n.hasAccessibilityOptions)),c.editorUpload.uploadImagesAuto(),e.close()}},imageSize:function(e){return R(s,e)?(i=s.documentBaseURI.toAbsolute(e),new De(function(t){function n(e){r.onload=r.onerror=null,r.parentNode&&r.parentNode.removeChild(r),t(e)}var r=document.createElement("img");r.onload=function(){var e=x(r.width,r.clientWidth),t=x(r.height,r.clientHeight);n(De.resolve({width:e,height:t}))},r.onerror=function(){n(De.reject("Failed to get image dimensions for: "+i))};var e=r.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left="0px",e.width=e.height="auto",document.body.appendChild(r),r.src=i}).then(function(e){return{width:String(e.width),height:String(e.height)}})):De.resolve({width:"",height:""});var i},addToBlobCache:function(e){l.editorUpload.blobCache.add(e)},createBlobCache:function(e,t,n){return o.editorUpload.blobCache.create({blob:e,blobUri:t,name:e.name?e.name.replace(/\.[^\.]+$/,""):null,filename:e.name,base64:n.split(",")[1]})},alertErr:function(e){a.windowManager.alert(e)},normalizeCss:function(e){return ne(i,e)},parseStyle:function(e){return r.dom.parseStyle(e)},serializeStyle:function(e,t){return n.dom.serializeStyle(e,t)},uploadImage:(t=n=r=i=a=o=l=s=c=v,function(e){return Oe(t).upload([e],!1).then(function(e){return 0===e.length?De.reject("Failed to upload image"):!1===e[0].status?De.reject(e[0].error.message):e[0]})})};return{open:function(){var a,r,t,e,i,n,o,l,s,c,u,m,d,g,p,f,h,b,y;r=v,i=Pe(function(e){return r.convertURL(e.value||e.url,"src")}),n=new De(function(t){var n=function(e){t(i(e).map(function(e){return S([[{text:"None",value:""}],e])}))},e=r.getParam("image_list",!1);T(e)?Se.send({url:e,success:function(e){n(JSON.parse(e))}}):w(e)?e(n):n(e)}),o=_e(r.getParam("image_class_list")),l=r.getParam("image_advtab",!1,"boolean"),s=r.getParam("image_uploadtab",!0,"boolean"),c=D(r.getParam("images_upload_url")),u=D(r.getParam("images_upload_handler")),m=(e=re(t=r))?Y(function(e){return ne(t,e)},e):Q(),d=r.getParam("image_description",!0,"boolean"),g=r.getParam("image_title",!1,"boolean"),p=C(r),f=r.getParam("image_caption",!1,"boolean"),h=r.getParam("a11y_advanced_options",!1,"boolean"),b=r.getParam("automatic_uploads",!0,"boolean"),y=L.some(r.getParam("image_prepend_url","","string")).filter(function(e){return T(e)&&0<e.length}),n.then(function(e){return{image:m,imageList:e,classList:o,hasAdvTab:l,hasUploadTab:s,hasUploadUrl:c,hasUploadHandler:u,hasDescription:d,hasImageTitle:g,hasDimensions:p,hasImageCaption:f,prependURL:y,hasAccessibilityOptions:h,automaticUploads:b}}).then((a=A,function(e){var t,n,r,i={prevImage:Ee((t=e).imageList,t.image.src),prevAlt:t.image.alt,open:!0};return{title:"Insert/Edit Image",size:"normal",body:(r=e).hasAdvTab||r.hasUploadUrl||r.hasUploadHandler?{type:"tabpanel",tabs:S([[ke(r)],r.hasAdvTab?[Re(r)]:[],r.hasUploadTab&&(r.hasUploadUrl||r.hasUploadHandler)?[Me(r)]:[]])}:{type:"panel",items:ze(r)},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:ue(e.image),onSubmit:a.onSubmit(e),onChange:pe(a,e,i),onClose:(n=i,function(){n.open=!1})}})).then(v.windowManager.open)}}}function he(a){return function(e){for(var t=e.length,n=function(e){e.attr("contenteditable",a?"true":null)};t--;){var r,i=e[t];(r=i.attr("class"))&&/\bimage\b/.test(r)&&(i.attr("contenteditable",a?"false":null),Te.each(i.getAll("figcaption"),n))}}}"undefined"!=typeof window||Function("return this;")();function be(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var ye,ve=be,Ae=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),De=tinymce.util.Tools.resolve("tinymce.util.Promise"),we=tinymce.util.Tools.resolve("tinymce.util.URI"),Se=tinymce.util.Tools.resolve("tinymce.util.XHR"),Ue=Ae.DOM,Ie=function(e,t,n){n?(Ue.setAttrib(e,"role","presentation"),I(ve(e),"alt","")):(i===t?ve(e).dom.removeAttribute("alt"):I(ve(e),"alt",t),"presentation"===Ue.getAttrib(e,"role")&&Ue.setAttrib(e,"role",""))},Ce=function(e,t,n){var r=Y(e,n);ee(n,r,t,"caption",function(e,t,n){return H(r=e)?(o=r.parentNode,Ue.insertAfter(r,o),Ue.remove(o)):(i=r,a=Ue.create("figure",{class:"image"}),Ue.insertAfter(a,i),a.appendChild(i),a.appendChild(Ue.create("figcaption",{contentEditable:"true"},"Caption")),a.contentEditable="false"),0;var r,i,a,o}),ee(n,r,t,"src",F),ee(n,r,t,"title",F),ee(n,r,t,"width",W(0,e)),ee(n,r,t,"height",W(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t),0},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(J,e)),ee(n,r,t,"border",te(K,e)),ee(n,r,t,"borderStyle",te(X,e)),t.alt===r.alt&&t.isDecorative===r.isDecorative||Ie(n,t.alt,t.isDecorative)},xe=(ye=function(e,t){return s(e)&&s(t)?xe(e,t):t},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var i,a=e[r];for(i in a)h(a,i)&&(n[i]=ye(n[i],a[i]))}return n}),Oe=tinymce.util.Tools.resolve("tinymce.util.ImageUploader"),Te=tinymce.util.Tools.resolve("tinymce.util.Tools"),Ne=function(e,a){var o=[];return Te.each(e,function(e){var t,n,r,i=T((t=e).text)?t.text:T(t.title)?t.title:"";void 0!==e.menu?(n=Ne(e.menu,a),o.push({text:i,items:n})):(r=a(e),o.push({text:i,value:r}))}),o},Le=function(e,i){return function(e){for(var t,n=0;n<e.length;n++){var r=h(t=e[n],"items")?Le(t.items,i):t.value===i?L.some(t):L.none();if(r.isSome())return r}return L.none()}(e)},Pe=se,_e=function(e){return se(le)(e)},Ee=function(e,t){return e.bind(function(e){return Le(e,t)})},Re=function(e){return{title:"Advanced",name:"advanced",items:[{type:"input",label:"Style",name:"style"},{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"listbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}},ke=function(e){return{title:"General",name:"general",items:ce(e)}},ze=ce,Me=function(e){return{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput"}]}};o.add("image",function(e){var t,n,r;(t=e).on("PreInit",function(){t.parser.addNodeFilter("figure",he(!0)),t.serializer.addNodeFilter("figure",he(!1))}),(n=e).ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:fe(n).open,onSetup:function(e){return e.setActive(D(re(n))),n.selection.selectorChangedWithUnbind("img:not([data-mce-object],[data-mce-placeholder]),figure.image",e.setActive).unbind}}),n.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:fe(n).open}),n.ui.registry.addContextMenu("image",{update:function(e){return Z(e)||"IMG"===e.nodeName&&!E(e)?["image"]:[]}}),(r=e).addCommand("mceImage",fe(r).open),r.addCommand("mceUpdateImage",function(e,t){r.undoManager.transact(function(){return oe(r,t)})})})}();js/tinymce/plugins/autoresize/plugin.min.js000064400000004370151727150230015130 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function y(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")}function p(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function v(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var l=Object.hasOwnProperty,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),b=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t,n){var i,o,r,s,a,l,u,g,c,m,f,d=e.dom,h=e.getDoc();h&&(e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()?p(e,!0):(i=h.documentElement,o=e.getParam("autoresize_bottom_margin",50,"number"),r=y(e),s=v(d,i,"margin-top",!0),a=v(d,i,"margin-bottom",!0),(l=(l=i.offsetHeight+s+a+o)<0?0:l)+(u=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight)>y(e)&&(r=l+u),(g=e.getParam("max_height",0,"number"))&&g<r?(r=g,p(e,!0)):p(e,!1),r!==t.get()&&(c=r-t.get(),d.setStyle(e.getContainer(),"height",r+"px"),t.set(r),e.fire("ResizeEditor"),b.browser.isSafari()&&b.mac&&(m=e.getWin()).scrollTo(m.pageXOffset,m.pageYOffset),!e.hasFocus()||"setcontent"!==(null==(f=n)?void 0:f.type.toLowerCase())||!0!==f.selection&&!0!==f.paste||e.selection.scrollIntoView(),b.webkit&&c<0&&C(e,t,n))))};e.add("autoresize",function(e){var t,n,i,o,r,s,a=e.settings;l.call(a,"resize")||(e.settings.resize=!1),e.inline||(s=0,r=t={get:function(){return s},set:function(e){s=e}},(o=e).addCommand("mceAutoResize",function(){C(o,r)}),i=t,(n=e).on("init",function(){var e=n.getParam("autoresize_overflow_padding",1,"number"),t=n.dom;t.setStyles(n.getDoc().documentElement,{height:"auto"}),t.setStyles(n.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),n.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(e){C(n,i,e)}),n.getParam("autoresize_on_init",!0,"boolean")&&n.on("init",function(){u(n,i,20,100,function(){u(n,i,5,1e3)})}))})}();js/tinymce/plugins/pagebreak/plugin.min.js000064400000003136151727150230014656 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function u(e){return e.getParam("pagebreak_split_block",!1)}function l(e){var a='<img src="'+n.transparentSrc+'" class="'+m+'" data-mce-resize="false" data-mce-placeholder />';return e?"<p>"+a+"</p>":a}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.Env"),m="mce-pagebreak";e.add("pagebreak",function(e){var a,n,o,i,t,r;function c(){return n.execCommand("mcePageBreak")}function g(){return u(o)}(a=e).addCommand("mcePageBreak",function(){a.insertContent(l(u(a)))}),(n=e).ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:c}),n.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:c}),i=(o=e).getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e"),t=new RegExp(i.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),o.on("BeforeSetContent",function(e){e.content=e.content.replace(t,l(g()))}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var a,n,t,r=e.length;r--;)(t=(n=e[r]).attr("class"))&&-1!==t.indexOf(m)&&(a=n.parent,o.schema.getBlockElements()[a.name]&&g()?(a.type=3,a.value=i,a.raw=!0,n.remove()):(n.type=3,n.value=i,n.raw=!0))})}),(r=e).on("ResolveName",function(e){"IMG"===e.target.nodeName&&r.dom.hasClass(e.target,m)&&(e.name="pagebreak")})})}();js/tinymce/plugins/help/plugin.min.js000064400000032115151727150230013664 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function i(e){return function(){return e}}function e(e){return e}function t(){return s}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=function(){return(g=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},u=i(!1),r=i(!0),s={fold:function(e,t){return e()},isSome:u,isNone:r,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:a,map:t,each:function(){},bind:t,exists:u,forall:r,filter:function(){return s},toArray:function(){return[]},toString:i("none()")};function a(e){return e()}function b(e,t){for(var n=e.length,a=new Array(n),o=0;o<n;o++){var i=e[o];a[o]=t(i,o)}return a}function m(e,t){for(var n=[],a=0,o=e.length;a<o;a++){var i=e[a];t(i,a)&&n.push(i)}return n}function f(e){var n=p.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl ",access:"Shift + Alt "},t=b(e.split("+"),function(e){var t=e.toLowerCase().trim();return A(n,t)?n[t]:e});return p.mac?t.join("").replace(/\s/,""):t.join("+")}function k(e){function a(e){return'<a href="'+e.url+'" target="_blank" rel="noopener">'+e.name+"</a>"}var t,o,n,i,r,s,l,c;return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[null==e?"":'<div data-mce-tabstop="1" tabindex="-1">'+(s=b((i=w((n=o=e).plugins),void 0===(r=n.getParam("forced_plugins"))?i:m(i,function(e){return!(-1<h.call(r,e))})),function(e){return"<li>"+(t=o,n=e,function(e,t,n){for(var a=0,o=e.length;a<o;a++){var i=e[a];if(t(i,a))return v.some(i);if(n(i,a))break}return v.none()}(d,function(e){return e.key===n},u).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?a(e()):n},function(e){return a({name:"premium"===e.type?e.name+"*":e.name,url:"https://www.tiny.cloud/docs/plugins/"+e.type+"/"+e.slug})}))+"</li>";var t,n}),l=s.length,c=s.join(""),"<p><b>"+T.translate(["Plugins installed ({0}):",l])+"</b></p><ul>"+c+"</ul>")+"</div>",(t=b(m(d,function(e){var t=e.key,n=e.type;return"autocorrect"!==t&&"premium"===n}),function(e){return"<li>"+T.translate(e.name)+"</li>"}).join(""),'<div data-mce-tabstop="1" tabindex="-1"><p><b>'+T.translate("Premium plugins:")+"</b></p><ul>"+t+'<li class="tox-help__more-link" "><a href="https://www.tiny.cloud/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+T.translate("Learn more...")+"</a></li></ul></div>")].join("")}]}}function l(d,y){return function(){var e,t,n,a,o,i,r,s,l,c,u,m=(e=d,t=y,r={name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:b(x,function(e){var t=b(e.shortcuts,f).join(" or ");return[e.action,t]})}]},s={name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"<h1>Editor UI keyboard navigation</h1>\n\n<h2>Activating keyboard navigation</h2>\n\n<p>The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:</p>\n<ul>\n  <li>Focus the menubar: Alt + F9 (Windows) or &#x2325;F9 (MacOS)</li>\n  <li>Focus the toolbar: Alt + F10 (Windows) or &#x2325;F10 (MacOS)</li>\n  <li>Focus the footer: Alt + F11 (Windows) or &#x2325;F11 (MacOS)</li>\n</ul>\n\n<p>Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline. </p>\n\n<h2>Moving between UI sections</h2>\n\n<p>When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:</p>\n<ul>\n  <li>the menubar</li>\n  <li>each group of the toolbar </li>\n  <li>the sidebar</li>\n  <li>the element path in the footer </li>\n  <li>the wordcount toggle button in the footer </li>\n  <li>the branding link in the footer </li>\n  <li>the editor resize handle in the footer</li>\n</ul>\n\n<p>Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.</p>\n\n<h2>Moving within UI sections</h2>\n\n<p>Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:</p>\n<ul>\n  <li>moving between menus in the menubar</li>\n  <li>moving between buttons in a toolbar group</li>\n  <li>moving between items in the element path</li>\n</ul>\n\n<p>In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group. </p>\n\n<h1>Executing buttons</h1>\n\n<p>To execute a button, navigate the selection to the desired button and hit space or enter.</p>\n\n<h1>Opening, navigating and closing menus</h1>\n\n<p>When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.</p>\n\n<p>To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.</p>\n\n<h1>Context toolbars and menus</h1>\n\n<p>To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or &#x2303;F9 (MacOS).</p>\n\n<p>Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.</p>\n\n<h1>Dialog navigation</h1>\n\n<p>There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.</p>\n\n<p>When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.</p>\n\n<p>When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.</p>"}]},l=k(e),a=C.majorVersion,o=C.minorVersion,i=0===a.indexOf("@")?"X.X.X":a+"."+o,c={name:"versions",title:"Version",items:[{type:"htmlpanel",html:"<p>"+T.translate(["You are using {0}",'<a href="https://www.tiny.cloud/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+i+"</a>"])+"</p>",presets:"document"}]},u=g(((n={})[r.name]=r,n[s.name]=s,n[l.name]=l,n[c.name]=c,n),t.get()),v.from(e.getParam("help_tabs")).fold(function(){return-1!==(n=(t=w(e=u)).indexOf("versions"))&&(t.splice(n,1),t.push("versions")),{tabs:e,names:t};var e,t,n},function(e){return t=u,n={},a=b(e,function(e){return"string"==typeof e?(A(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name}),{tabs:n,names:a};var t,n,a})),h=m.tabs,p=function(e){for(var t=[],n=function(e){t.push(e)},a=0;a<e.length;a++)e[a].each(n);return t}(b(m.names,function(e){return A(t=h,n=e)?v.from(t[n]):v.none();var t,n}));d.windowManager.open({title:"Help",size:"medium",body:{type:"tabpanel",tabs:p},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})}}var c=function(n){function e(){return o}function t(e){return e(n)}var a=i(n),o={fold:function(e,t){return t(n)},isSome:r,isNone:u,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return c(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:s},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},v={some:c,none:t,from:function(e){return null==e?s:c(e)}},h=Array.prototype.indexOf,w=Object.keys,o=Object.hasOwnProperty,A=function(e,t){return o.call(e,t)},p=tinymce.util.Tools.resolve("tinymce.Env"),x=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Heading 1"},{shortcuts:["Access + 2"],action:"Heading 2"},{shortcuts:["Access + 3"],action:"Heading 3"},{shortcuts:["Access + 4"],action:"Heading 4"},{shortcuts:["Access + 5"],action:"Heading 5"},{shortcuts:["Access + 6"],action:"Heading 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],T=tinymce.util.Tools.resolve("tinymce.util.I18n"),d=b([{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"quickbars",name:"Quick Toolbars"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"},{key:"a11ychecker",name:"Accessibility Checker",type:"premium"},{key:"advcode",name:"Advanced Code Editor",type:"premium"},{key:"advtable",name:"Advanced Tables",type:"premium"},{key:"autocorrect",name:"Autocorrect",type:"premium"},{key:"casechange",name:"Case Change",type:"premium"},{key:"checklist",name:"Checklist",type:"premium"},{key:"export",name:"Export",type:"premium"},{key:"mediaembed",name:"Enhanced Media Embed",type:"premium"},{key:"formatpainter",name:"Format Painter",type:"premium"},{key:"linkchecker",name:"Link Checker",type:"premium"},{key:"mentions",name:"Mentions",type:"premium"},{key:"pageembed",name:"Page Embed",type:"premium"},{key:"permanentpen",name:"Permanent Pen",type:"premium"},{key:"powerpaste",name:"PowerPaste",type:"premium"},{key:"rtc",name:"Real-Time Collaboration",type:"premium"},{key:"tinymcespellchecker",name:"Spell Checker Pro",type:"premium"},{key:"tinycomments",name:"Tiny Comments",type:"premium",slug:"comments"},{key:"tinydrive",name:"Tiny Drive",type:"premium"}],function(e){return g(g({},e),{type:e.type||"opensource",slug:e.slug||e.key})}),C=tinymce.util.Tools.resolve("tinymce.EditorManager");n.add("help",function(e){var t,n,a,o=(t={},{get:function(){return t},set:function(e){t=e}}),i={addTab:function(e){var t=n.get();t[e.name]=e,n.set(t)}},r=l(e,n=o),s=r;return(a=e).ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:s}),a.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:s}),e.addCommand("mceHelp",r),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),i})}();js/tinymce/plugins/charmap/plugin.min.js000064400000026622151727150230014355 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function l(e,r){var n=e.fire("insertCustomChar",{chr:r}).chr;e.execCommand("mceInsertContent",!1,n)}function i(e){return function(){return e}}function e(e){return e}function r(){return c}var t,g,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(e){return n=typeof(r=e),(null===r?"null":"object"==n&&(Array.prototype.isPrototypeOf(r)||r.constructor&&"Array"===r.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(r)||r.constructor&&"String"===r.constructor.name)?"string":n)===t;var r,n},m=i(!(t="array")),o=i(!(g=null)),c={fold:function(e,r){return e()},isSome:m,isNone:o,getOr:e,getOrThunk:u,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:u,map:r,each:function(){},bind:r,exists:m,forall:o,filter:function(){return c},toArray:function(){return[]},toString:i("none()")};function u(e){return e()}function f(e,r){for(var n=e.length,t=new Array(n),a=0;a<n;a++){var i=e[a];t[a]=r(i,a)}return t}function s(e){return A(e)?x.grep(e,function(e){return A(e)&&2===e.length}):"function"==typeof e?e():[]}function h(e){var r=function(e,r){var n=e.getParam("charmap");n&&(r=[{name:O,characters:s(n)}]);var t=e.getParam("charmap_append");if(t){var a=x.grep(r,function(e){return e.name===O});return a.length?(a[0].characters=[].concat(a[0].characters).concat(s(t)),r):r.concat({name:O,characters:s(t)})}return r}(e,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[169,"copyright sign"],[174,"registered sign"],[8482,"trade mark sign"],[8240,"per mille sign"],[181,"micro sign"],[183,"middle dot"],[8226,"bullet"],[8230,"three dot leader"],[8242,"minutes / feet"],[8243,"seconds / inches"],[167,"section sign"],[182,"paragraph sign"],[223,"sharp s / ess-zed"]]},{name:"Quotations",characters:[[8249,"single left-pointing angle quotation mark"],[8250,"single right-pointing angle quotation mark"],[171,"left pointing guillemet"],[187,"right pointing guillemet"],[8216,"left single quotation mark"],[8217,"right single quotation mark"],[8220,"left double quotation mark"],[8221,"right double quotation mark"],[8218,"single low-9 quotation mark"],[8222,"double low-9 quotation mark"],[60,"less-than sign"],[62,"greater-than sign"],[8804,"less-than or equal to"],[8805,"greater-than or equal to"],[8211,"en dash"],[8212,"em dash"],[175,"macron"],[8254,"overline"],[164,"currency sign"],[166,"broken bar"],[168,"diaeresis"],[161,"inverted exclamation mark"],[191,"turned question mark"],[710,"circumflex accent"],[732,"small tilde"],[176,"degree sign"],[8722,"minus sign"],[177,"plus-minus sign"],[247,"division sign"],[8260,"fraction slash"],[215,"multiplication sign"],[185,"superscript one"],[178,"superscript two"],[179,"superscript three"],[188,"fraction one quarter"],[189,"fraction one half"],[190,"fraction three quarters"]]},{name:"Mathematical",characters:[[402,"function / florin"],[8747,"integral"],[8721,"n-ary sumation"],[8734,"infinity"],[8730,"square root"],[8764,"similar to"],[8773,"approximately equal to"],[8776,"almost equal to"],[8800,"not equal to"],[8801,"identical to"],[8712,"element of"],[8713,"not an element of"],[8715,"contains as member"],[8719,"n-ary product"],[8743,"logical and"],[8744,"logical or"],[172,"not sign"],[8745,"intersection"],[8746,"union"],[8706,"partial differential"],[8704,"for all"],[8707,"there exists"],[8709,"diameter"],[8711,"backward difference"],[8727,"asterisk operator"],[8733,"proportional to"],[8736,"angle"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[913,"Alpha"],[914,"Beta"],[915,"Gamma"],[916,"Delta"],[917,"Epsilon"],[918,"Zeta"],[919,"Eta"],[920,"Theta"],[921,"Iota"],[922,"Kappa"],[923,"Lambda"],[924,"Mu"],[925,"Nu"],[926,"Xi"],[927,"Omicron"],[928,"Pi"],[929,"Rho"],[931,"Sigma"],[932,"Tau"],[933,"Upsilon"],[934,"Phi"],[935,"Chi"],[936,"Psi"],[937,"Omega"],[945,"alpha"],[946,"beta"],[947,"gamma"],[948,"delta"],[949,"epsilon"],[950,"zeta"],[951,"eta"],[952,"theta"],[953,"iota"],[954,"kappa"],[955,"lambda"],[956,"mu"],[957,"nu"],[958,"xi"],[959,"omicron"],[960,"pi"],[961,"rho"],[962,"final sigma"],[963,"sigma"],[964,"tau"],[965,"upsilon"],[966,"phi"],[967,"chi"],[968,"psi"],[969,"omega"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[8592,"leftwards arrow"],[8593,"upwards arrow"],[8594,"rightwards arrow"],[8595,"downwards arrow"],[8596,"left right arrow"],[8629,"carriage return"],[8656,"leftwards double arrow"],[8657,"upwards double arrow"],[8658,"rightwards double arrow"],[8659,"downwards double arrow"],[8660,"left right double arrow"],[8756,"therefore"],[8834,"subset of"],[8835,"superset of"],[8836,"not a subset of"],[8838,"subset of or equal to"],[8839,"superset of or equal to"],[8853,"circled plus"],[8855,"circled times"],[8869,"perpendicular"],[8901,"dot operator"],[8968,"left ceiling"],[8969,"right ceiling"],[8970,"left floor"],[8971,"right floor"],[9001,"left-pointing angle bracket"],[9002,"right-pointing angle bracket"],[9674,"lozenge"],[9824,"black spade suit"],[9827,"black club suit"],[9829,"black heart suit"],[9830,"black diamond suit"],[8194,"en space"],[8195,"em space"],[8201,"thin space"],[8204,"zero width non-joiner"],[8205,"zero width joiner"],[8206,"left-to-right mark"],[8207,"right-to-left mark"]]}]);return 1<r.length?[{name:"All",characters:function(e){for(var r=[],n=0,t=e.length;n<t;++n){if(!a(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);C.apply(r,e[n])}return r}(f(r,function(e){return e.characters}))}].concat(r):r}function p(e){var r=e;return{get:function(){return r},set:function(e){r=e}}}function d(e,r){return-1!==e.indexOf(r)}function y(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];if(q)return q.apply(void 0,e);for(var n=[],t="",a=0,i=e.length;a!==i;++a){var o=+e[a];if(!(o<1114111&&o>>>0===o))throw RangeError("Invalid code point: "+o);16383<=(o<=65535?n.push(o):(o-=65536,n.push(55296+(o>>10),o%1024+56320)))&&(t+=String.fromCharCode.apply(null,n),n.length=0)}return t+String.fromCharCode.apply(null,n)}function v(e,r){var c=[],u=r.toLowerCase();return function(e){for(var r,n,t,a,i=0,o=e.length;i<o;i++)r=e[i],a=t=n=a=t=n=void 0,n=r[0],t=r[1],a=u,(d(y(n).toLowerCase(),a)||d(t.toLowerCase(),a)||d(t.toLowerCase().replace(/\s+/g,""),a))&&c.push(r)}(e.characters),f(c,function(e){return{text:e[1],value:y(e[0]),icon:y(e[0])}})}function w(n,a){function r(){return[{label:"Search",type:"input",name:S},{type:"collection",name:"results"}]}var t,i,o=1===a.length?p(O):p("All"),c=(t=function(e){var r=e.getData().pattern,n=e,t=r;(function(e,r,n){for(var t=0,a=e.length;t<a;t++){var i=e[t];if(r(i,t))return k.some(i);if(n(i,t))break}return k.none()})(a,function(e){return e.name===o.get()},m).each(function(e){var r=v(e,t);n.setData({results:r})})},i=null,{cancel:u,throttle:function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];u(),i=setTimeout(function(){i=null,t.apply(null,e)},40)}});function u(){g===i||(clearTimeout(i),i=null)}var e=1===a.length?{type:"panel",items:r()}:{type:"tabpanel",tabs:f(a,function(e){return{title:e.name,name:e.name,items:r()}})},s={pattern:"",results:v(a[0],"")};n.windowManager.open({title:"Special Character",size:"normal",body:e,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:s,onAction:function(e,r){"results"===r.name&&(l(n,r.value),e.close())},onTabChange:function(e,r){o.set(r.newTabName),c.throttle(e)},onChange:function(e,r){r.name===S&&c.throttle(e)}}).focus(S)}var b=function(n){function e(){return a}function r(e){return e(n)}var t=i(n),a={fold:function(e,r){return r(n)},isSome:o,isNone:m,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return b(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?a:c},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},k={some:b,none:r,from:function(e){return null==e?c:b(e)}},C=Array.prototype.push,x=tinymce.util.Tools.resolve("tinymce.util.Tools"),A=x.isArray,O="User Defined",q=String.fromCodePoint,S="pattern",T=tinymce.util.Tools.resolve("tinymce.util.Promise");n.add("charmap",function(e){var r,n,t,a,i,o=h(e),c=o;return(r=e).addCommand("mceShowCharmap",function(){w(r,c)}),(n=e).ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:function(){return n.execCommand("mceShowCharmap")}}),n.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:function(){return n.execCommand("mceShowCharmap")}}),t=e,a=o[0],t.ui.registry.addAutocompleter("charmap",{ch:":",columns:"auto",minChars:2,fetch:function(n,e){return new T(function(e,r){e(v(a,n))})},onAction:function(e,r,n){t.selection.setRng(r),t.insertContent(n),e.hide()}}),i=e,{getCharMap:function(){return h(i)},insertChar:function(e){l(i,e)}}})}();js/tinymce/plugins/importcss/plugin.min.js000064400000007624151727150230014766 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function t(n){return function(t){return r=typeof(e=t),(null===e?"null":"object"==r&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":r)===n;var e,r}}function y(t){return t.getParam("importcss_selector_converter")}function u(e){return l(e)?function(t){return-1!==t.indexOf(e)}:e instanceof RegExp?function(t){return e.test(t)}:e}function h(t,e){var r,n=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(n){var o=n[1],i=n[2].substr(1).split(".").join(" "),c=x.makeMap("a,img");return n[1]?(r={title:e},t.schema.getTextBlockElements()[o]?r.block=o:t.schema.getBlockElements()[o]||c[o.toLowerCase()]?r.selector=o:r.inline=o):n[2]&&(r={inline:"span",title:e.substr(1),classes:i}),!1!==t.getParam("importcss_merge_classes")?r.classes=i:r.attributes={class:i},r}}function d(t,e){return null===e||!1!==t.getParam("importcss_exclusive")}function r(v){v.on("init",function(){function o(t,e){if(f=t,p=g,!(d(v,m=e)?f in p:f in m.selectors)){a=t,l=g,d(v,u=e)?l[a]=!0:u.selectors[a]=!0;var r=(i=(o=v).plugins.importcss,c=t,((s=e)&&s.selector_converter?s.selector_converter:y(o)?y(o):function(){return h(o,c)}).call(i,c,s));if(r){var n=r.name||_.DOM.uniqueId();return v.formatter.register(n,r),{title:r.title,format:n}}}var o,i,c,s,a,u,l,f,m,p;return null}var e,r,n,t,i=(e=[],r=[],n={},{addItemToGroup:function(t,e){n[t]?n[t].push(e):(r.push(t),n[t]=[e])},addItem:function(t){e.push(t)},toFormats:function(){return function(t){for(var e=[],r=0,n=t.length;r<n;++r){if(!f(t[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+t);P.apply(e,t[r])}return e}(function(t,e){for(var r=t.length,n=new Array(r),o=0;o<r;o++){var i=t[o];n[o]=e(i,o)}return n}(r,function(t){var e=n[t];return 0===e.length?[]:[{title:t,items:e}]})).concat(e)}}),g={},c=u(v.getParam("importcss_selector_filter")),s=(t=v.getParam("importcss_groups"),x.map(t,function(t){return x.extend({},t,{original:t,selectors:{},filter:u(t.filter)})}));x.each(function(c,t,s){var a=[],r={},u=function(t,e){var r,n,o=n=t.href,i=p.cacheSuffix;if((n=o=l(o)?o.replace("?"+i,"").replace("&"+i,""):o)&&s(n,e)&&!function(t,e){var r,n=!1!==(r=t.getParam("skin"))&&(r||"oxide");if(n){var o=t.getParam("skin_url"),i=o?t.documentBaseURI.toAbsolute(o):m.baseURL+"/skins/ui/"+n,c=m.baseURL+"/skins/content/";return e===i+"/content"+(t.inline?".inline":"")+".min.css"||-1!==e.indexOf(c)}}(c,n)){x.each(t.imports,function(t){u(t,!0)});try{r=t.cssRules||t.rules}catch(t){}x.each(r,function(t){t.styleSheet?u(t.styleSheet,!0):t.selectorText&&x.each(t.selectorText.split(","),function(t){a.push(x.trim(t))})})}};x.each(c.contentCSS,function(t){r[t]=!0}),s=s||function(t,e){return e||r[t]};try{x.each(t.styleSheets,function(t){u(t)})}catch(t){}return a}(v,v.getDoc(),u(v.getParam("importcss_file_filter"))),function(r){var t,e,n;T.test(r)||c&&!c(r)||(n=r,0<(t=x.grep(s,function(t){return!t.filter||t.filter(n)})).length?x.each(t,function(t){var e=o(r,t);e&&i.addItemToGroup(t.title,e)}):(e=o(r,null))&&i.addItem(e))});var a=i.toFormats();v.fire("addStyleModifications",{items:a,replace:!v.getParam("importcss_append")})})}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=t("string"),f=t("array"),_=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),m=tinymce.util.Tools.resolve("tinymce.EditorManager"),p=tinymce.util.Tools.resolve("tinymce.Env"),x=tinymce.util.Tools.resolve("tinymce.util.Tools"),P=Array.prototype.push,T=/^\.(?:ephox|tiny-pageembed|mce)(?:[.-]+\w+)+$/;e.add("importcss",function(t){return r(t),e=t,{convertSelectorToFormat:function(t){return h(e,t)}};var e})}();js/tinymce/plugins/preview/plugin.min.js000064400000004060151727150230014413 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.Env"),w=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("preview",function(e){var n,t;function i(){return t.execCommand("mcePreview")}(n=e).addCommand("mcePreview",function(){var e,t;t=function(t){var n="",i=t.dom.encode,e=t.getParam("content_style","","string");n+='<base href="'+i(t.documentBaseURI.getURI())+'">';var o=t.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"";w.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"}),e&&(n+='<style type="text/css">'+e+"</style>");var a,r,s,c,d,l,m,y=-1===(c=(a=t).getParam("body_id","tinymce","string")).indexOf("=")?c:(s=(r=a).getParam("body_id","","hash"))[r.id]||s,u=-1===(m=(d=t).getParam("body_class","","string")).indexOf("=")?m:(l=d).getParam("body_class","","hash")[l.id]||"",v='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(f.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",g=t.getBody().dir,p=g?' dir="'+i(g)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(y)+'" class="mce-content-body '+i(u)+'"'+p+">"+t.getContent()+v+"</body></html>"}(e=n),e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}),(t=e).ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:i}),t.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:i})})}();js/tinymce/plugins/autolink/plugin.min.js000064400000005265151727150230014570 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function k(e){return/^[(\[{ \u00a0]$/.test(e)}function w(e){return 3===e.nodeType}function i(e){return 1===e.nodeType}function o(e,t){var n;return t<0&&(t=0),!w(e)||(n=e.data.length)<t&&(t=n),t}function y(e,t,n){!i(t)||t.hasChildNodes()?e.setStart(t,o(t,n)):e.setStartBefore(t)}function v(e,t,n){!i(t)||t.hasChildNodes()?e.setEnd(t,o(t,n)):e.setEndAfter(t)}function r(e,t){var n,i,o,r,a,f=e.getParam("autolink_pattern",A),s=e.getParam("default_link_target",!1);if(null===e.dom.getParent(e.selection.getNode(),"a[href]")){var d=e.selection.getRng().cloneRange();if(d.startOffset<5){if(!(r=d.endContainer.previousSibling)){if(!d.endContainer.firstChild||!d.endContainer.firstChild.nextSibling)return;r=d.endContainer.firstChild.nextSibling}if(y(d,r,a=r.length),v(d,r,a),d.endOffset<5)return;n=d.endOffset,i=r}else{if(!w(i=d.endContainer)&&i.firstChild){for(;!w(i)&&i.firstChild;)i=i.firstChild;w(i)&&(y(d,i,0),v(d,i,i.nodeValue.length))}n=1===d.endOffset?2:d.endOffset-1-t}for(var l=n;y(d,i,2<=n?n-2:0),v(d,i,1<=n?n-1:0),--n,!k(d.toString())&&0<=n-2;);k(d.toString())?(y(d,i,n),v(d,i,l),n+=1):(0===d.startOffset?y(d,i,0):y(d,i,n),v(d,i,l)),u=d.toString(),/[?!,.;:]/.test(u.charAt(u.length-1))&&v(d,i,l-1);var u,c,g,h,C=(u=d.toString().trim()).match(f),m=e.getParam("link_default_protocol","http","string");C&&((g=c=C[0]).length>=(h="www.").length&&g.substr(0,0+h.length)===h?c=m+"://"+c:-1===c.indexOf("@")||/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(c)||(c="mailto:"+c),o=e.selection.getBookmark(),e.selection.setRng(d),e.execCommand("createlink",!1,c),!1!==s&&e.dom.setAttrib(e.selection.getNode(),"target",s),e.selection.moveToBookmark(o),e.nodeChanged())}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),A=new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i");e.add("autolink",function(e){var t,n;(t=e).on("keydown",function(e){if(13===e.keyCode)return r(t,-1)}),a.browser.isIE()?t.on("focus",function(){if(!n){n=!0;try{t.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(t.on("keypress",function(e){if(41===e.keyCode||93===e.keyCode||125===e.keyCode)return r(t,-1)}),t.on("keyup",function(e){if(32===e.keyCode)return r(t,0)}))})}();js/tinymce/plugins/textpattern/plugin.min.js000064400000042340151727150230015317 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(){return(u=Object.assign||function(t){for(var n,r=1,e=arguments.length;r<e;r++)for(var o in n=arguments[r])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)};function a(t,n,r){if(r||2===arguments.length)for(var e,o=0,a=n.length;o<a;o++)!e&&o in n||((e=e||Array.prototype.slice.call(n,0,o))[o]=n[o]);return t.concat(e||Array.prototype.slice.call(n))}function n(e){return function(t){return r=typeof(n=t),(null===n?"null":"object"==r&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":r)===e;var n,r}}function e(){}function i(t){return function(){return t}}function o(t){return t}function r(){return m}var f=n("string"),c=n("object"),s=n("array"),l=i(!1),d=i(!0),m={fold:function(t,n){return t()},isSome:l,isNone:d,getOr:o,getOrThunk:g,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:o,orThunk:g,map:r,each:e,bind:r,exists:l,forall:d,filter:function(){return m},toArray:function(){return[]},toString:i("none()")};function g(t){return t()}function p(t,n){return-1<E.call(t,n)}function h(t,n){for(var r=t.length,e=new Array(r),o=0;o<r;o++){var a=t[o];e[o]=n(a,o)}return e}function v(t,n){for(var r=0,e=t.length;r<e;r++)n(t[r],r)}function y(t,n){for(var r=[],e=0,o=t.length;e<o;e++){var a=t[e];n(a,e)&&r.push(a)}return r}function b(t,e,o){return function(t){for(var n,r=t.length-1;0<=r;r--)n=t[r],o=e(o,n,r)}(t),o}function k(t,n){for(var r=0,e=t.length;r<e;++r)if(!0!==n(t[r],r))return;return 1}var O=function(r){function t(){return o}function n(t){return t(r)}var e=i(r),o={fold:function(t,n){return n(r)},isSome:d,isNone:l,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(t){return O(t(r))},each:function(t){t(r)},bind:n,exists:n,forall:n,filter:function(t){return t(r)?o:m},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return o},w={some:O,none:r,from:function(t){return null==t?m:O(t)}},C=Array.prototype.slice,E=Array.prototype.indexOf,x=Object.keys,R=Object.hasOwnProperty;function T(t){var n=[],r=[];return v(t,function(t){t.fold(function(t){n.push(t)},function(t){r.push(t)})}),{errors:n,values:r}}function P(t){return"inline-command"===t.type||"inline-format"===t.type}function N(t){return"block-command"===t.type||"block-format"===t.type}function S(o){function a(t){return ut.error({message:t,pattern:o})}function t(t,n,r){if(void 0===o.format)return void 0!==o.cmd?f(o.cmd)?ut.value(r(o.cmd,o.value)):a(t+" pattern has non-string `cmd` parameter"):a(t+" pattern is missing both `format` and `cmd` parameters");var e=void 0;if(s(o.format)){if(!k(o.format,f))return a(t+" pattern has non-string items in the `format` array");e=o.format}else{if(!f(o.format))return a(t+" pattern has non-string `format` parameter");e=[o.format]}return ut.value(n(e))}if(!c(o))return a("Raw pattern is not an object");if(!f(o.start))return a("Raw pattern is missing `start` parameter");if(void 0===o.end)return void 0!==o.replacement?f(o.replacement)?0===o.start.length?a("Replacement pattern has empty `start` parameter"):ut.value({type:"inline-command",start:"",end:o.start,cmd:"mceInsertContent",value:o.replacement}):a("Replacement pattern has non-string `replacement` parameter"):0===o.start.length?a("Block pattern has empty `start` parameter"):t("Block",function(t){return{type:"block-format",start:o.start,format:t[0]}},function(t,n){return{type:"block-command",start:o.start,cmd:t,value:n}});if(!f(o.end))return a("Inline pattern has non-string `end` parameter");if(0===o.start.length&&0===o.end.length)return a("Inline pattern has empty `start` and `end` parameters");var r=o.start,e=o.end;return 0===e.length&&(e=r,r=""),t("Inline",function(t){return{type:"inline-format",start:r,end:e,format:t}},function(t,n){return{type:"inline-command",start:r,end:e,cmd:t,value:n}})}function M(t){return"block-command"===t.type?{start:t.start,cmd:t.cmd,value:t.value}:"block-format"===t.type?{start:t.start,format:t.format}:"inline-command"===t.type?"mceInsertContent"===t.cmd&&""===t.start?{start:t.end,replacement:t.value}:{start:t.start,end:t.end,cmd:t.cmd,value:t.value}:"inline-format"===t.type?{start:t.start,end:t.end,format:1===t.format.length?t.format[0]:t.format}:void 0}function A(t){return{inlinePatterns:y(t,P),blockPatterns:(n=y(t,N),r=function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1},(e=C.call(n,0)).sort(r),e)};var n,r,e}function B(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var r=ft.console;r&&(r.error||r.log).apply(r,t)}function D(t){var n=t.getParam("forced_root_block","p");return!1===n?"":!0===n?"p":n}function I(t,n){return{container:t,offset:n}}function j(t){return t.nodeType===Node.TEXT_NODE}function _(t,n,r,e){void 0===e&&(e=!0);var o=n.startContainer.parentNode,a=n.endContainer.parentNode;n.deleteContents(),e&&!r(n.startContainer)&&(j(n.startContainer)&&0===n.startContainer.data.length&&t.remove(n.startContainer),j(n.endContainer)&&0===n.endContainer.data.length&&t.remove(n.endContainer),pt(t,o,r),o!==a&&pt(t,a,r))}function U(t,n){var r,e=n.get(t);return s(e)&&(0<(r=e).length?w.some(r[0]):w.none()).exists(function(t){return R.call(t,"block")})}function L(t){return 0===t.start.length}function V(t,n){var r=w.from(t.dom.getParent(n.startContainer,t.dom.isBlock));return""===D(t)?r.orThunk(function(){return w.some(t.getBody())}):r}function W(n){return function(t){return n===t?-1:0}}function q(t,n,r){if(j(t)&&0<=n)return w.some(I(t,n));var e=gt(ht);return w.from(e.backwards(t,n,W(t),r)).map(function(t){return I(t.container,t.container.data.length)})}function z(t,n,r){if(j(n)&&(r<0||r>n.data.length))return[];for(var e=[r],o=n;o!==t&&o.parentNode;){for(var a=o.parentNode,i=0;i<a.childNodes.length;i++)if(a.childNodes[i]===o){e.push(i);break}o=a}return o===t?e.reverse():[]}function F(t,n,r,e,o){return{start:z(t,n,r),end:z(t,e,o)}}function G(t,n){var r=n.slice(),e=r.pop(),o=r,a=function(t,n){return t.bind(function(t){return w.from(t.childNodes[n])})},i=w.some(t);return v(o,function(t,n){i=a(i,t)}),i.bind(function(t){return j(t)&&(e<0||e>t.data.length)?w.none():w.some({node:t,offset:e})})}function H(n,r){return G(n,r.start).bind(function(t){var o=t.node,a=t.offset;return G(n,r.end).map(function(t){var n=t.node,r=t.offset,e=document.createRange();return e.setStart(o,a),e.setEnd(n,r),e})})}function J(e,o,n){!function(t,n){if(j(t)&&t.length<=0)return w.some(I(t,0));var r=gt(ht);return w.from(r.forwards(t,0,W(t),n)).map(function(t){return I(t.container,0)})}(o,o).each(function(t){var r=t.container;yt(r,n.start.length,o).each(function(t){var n=e.createRng();n.setStart(r,0),n.setEnd(t.container,t.offset),_(e,n,function(t){return t===o})})})}function K(e,a){var i=e.dom,t=e.selection.getRng();return V(e,t).filter(function(t){var n=D(e),r=""===n&&i.is(t,"body")||i.is(t,n);return null!==t&&r}).bind(function(n){var r,e=n.textContent,t=a,o=(r=e).replace("\xa0"," ");return function(t,n,r){for(var e=0,o=t.length;e<o;e++){var a=t[e];if(n(a,e))return w.some(a);if(r(a,e))break}return w.none()}(t,function(t){return 0===r.indexOf(t.start)||0===o.indexOf(t.start)},l).map(function(t){return dt.trim(e).length===t.start.length?[]:[{pattern:t,range:F(i.getRoot(),n,0,n,0)}]})}).getOr([])}function X(t,n){return t.create("span",{"data-mce-type":"bookmark",id:n})}function Q(t,n){var r=t.createRng();return r.setStartAfter(n.start),r.setEndBefore(n.end),r}function Y(t,n,r){var e=H(t.getRoot(),r).getOrDie("Unable to resolve path range"),o=e.startContainer,a=e.endContainer,i=0===e.endOffset?a:a.splitText(e.endOffset),u=0===e.startOffset?o:o.splitText(e.startOffset);return{prefix:n,end:i.parentNode.insertBefore(X(t,n+"-end"),i),start:u.parentNode.insertBefore(X(t,n+"-start"),u)}}function Z(t,n,r){pt(t,t.get(n.prefix+"-end"),r),pt(t,t.get(n.prefix+"-start"),r)}function $(n,t,r){n.selection.setRng(r),"inline-format"===t.type?v(t.format,function(t){n.formatter.apply(t)}):n.execCommand(t.cmd,!1,t.value)}function tt(r,e,o){var a=r.selection.getRng();return!1===a.collapsed?[]:V(r,a).bind(function(t){var n=a.startOffset-(o?1:0);return Ot(r,e,a.startContainer,n,t)}).fold(function(){return[]},function(t){return t.matches})}function nt(p,t){var h,n,o,r,e,a,i;0!==t.length&&(h=p.dom,n=p.selection.getBookmark(),o=h,r=t,e=(new Date).getTime(),a="mce_textpattern_"+Math.floor(1e9*Math.random())+ ++bt+String(e),i=b(r,function(t,n){var r=Y(o,a+"_end"+t.length,n.endRng);return t.concat([u(u({},n),{endMarker:r})])},[]),v(b(i,function(t,n){var r=i.length-t.length-1,e=L(n.pattern)?n.endMarker:Y(o,a+"_start"+r,n.startRng);return t.concat([u(u({},n),{startMarker:e})])},[]),function(t){function n(t){return t===g}var r,e,o,a,i,u,f,c,s,l,d,m,g=h.getParent(t.startMarker.start,h.isBlock);L(t.pattern)?(e=t.pattern,o=t.endMarker,a=n,i=Q((r=p).dom,o),_(r.dom,i,a),$(r,e,i)):(u=p,f=t.pattern,c=t.startMarker,s=t.endMarker,l=n,d=u.dom,m=Q(d,s),_(d,Q(d,c),l),_(d,m,l),$(u,f,Q(d,{prefix:c.prefix,start:c.end,end:s.start}))),Z(h,t.endMarker,n),Z(h,t.startMarker,n)}),p.selection.moveToBookmark(n))}function rt(t,n){var r=tt(t,n.inlinePatterns,!0);0<r.length&&t.undoManager.transact(function(){nt(t,r)})}function et(t,n,r){for(var e=0;e<t.length;e++)if(r(t[e],n))return 1}function ot(n,r){var e=[",",".",";",":","!","?"],o=[32];n.on("keydown",function(t){13!==t.keyCode||lt.modifierPressed(t)||!function(o,t){if(o.selection.isCollapsed()){var a=tt(o,t.inlinePatterns,!1),u=K(o,t.blockPatterns);return(0<u.length||0<a.length)&&(o.undoManager.add(),o.undoManager.extra(function(){o.execCommand("mceInsertNewLine")},function(){var i,t,n;o.insertContent("\ufeff",{preserve_zwsp:!0}),nt(o,a),i=o,0!==(t=u).length&&(n=i.selection.getBookmark(),v(t,function(t){return e=(n=i).dom,o=(r=t).pattern,a=H(e.getRoot(),r.range).getOrDie("Unable to resolve path range"),V(n,a).each(function(t){"block-format"===o.type?U(o.format,n.formatter)&&n.undoManager.transact(function(){J(n.dom,t,o),n.formatter.apply(o.format)}):"block-command"===o.type&&n.undoManager.transact(function(){J(n.dom,t,o),n.execCommand(o.cmd,!1,o.value)})}),1;var n,r,e,o,a}),i.selection.moveToBookmark(n));var r=o.selection.getRng(),e=q(r.startContainer,r.startOffset,o.dom.getRoot());o.execCommand("mceInsertNewLine"),e.each(function(t){var n=t.container;"\ufeff"===n.data.charAt(t.offset-1)&&(n.deleteData(t.offset-1,1),pt(o.dom,n.parentNode,function(t){return t===o.dom.getRoot()}))})}),1)}}(n,r.get())||t.preventDefault()},!0),n.on("keyup",function(t){et(o,t,function(t,n){return t===n.keyCode&&!1===lt.modifierPressed(n)})&&rt(n,r.get())}),n.on("keypress",function(t){et(e,t,function(t,n){return t.charCodeAt(0)===n.charCode})&&st.setEditorTimeout(n,function(){rt(n,r.get())})})}!function(i){if(!s(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var u=[],r={};v(i,function(t,e){var n=x(t);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],a=t[o];if(void 0!==r[o])throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!s(a))throw new Error("case arguments must be an array");u.push(o),r[o]=function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];var n=r.length;if(n!==a.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+a.length+" ("+a+"), got "+n);return{fold:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(t.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+t.length);return t[e].apply(null,r)},match:function(t){var n=x(t);if(u.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+n.join(","));if(!k(u,function(t){return p(n,t)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+u.join(", "));return t[o].apply(null,r)},log:function(t){console.log(t,{constructors:u,constructor:o,params:r})}}}})}([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var at=function(r){return{isValue:d,isError:l,getOr:i(r),getOrThunk:i(r),getOrDie:i(r),or:function(t){return at(r)},orThunk:function(t){return at(r)},fold:function(t,n){return n(r)},map:function(t){return at(t(r))},mapError:function(t){return at(r)},each:function(t){t(r)},bind:function(t){return t(r)},exists:function(t){return t(r)},forall:function(t){return t(r)},toOptional:function(){return w.some(r)}}},it=function(r){return{isValue:l,isError:d,getOr:o,getOrThunk:function(t){return t()},getOrDie:function(){return t=String(r),function(){throw new Error(t)}();var t},or:o,orThunk:function(t){return t()},fold:function(t,n){return t(r)},map:function(t){return it(r)},mapError:function(t){return it(t(r))},each:e,bind:function(t){return it(r)},exists:l,forall:d,toOptional:w.none}},ut={value:at,error:it,fromOption:function(t,n){return t.fold(function(){return it(n)},at)}},ft="undefined"!=typeof window?window:Function("return this;")(),ct=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],st=tinymce.util.Tools.resolve("tinymce.util.Delay"),lt=tinymce.util.Tools.resolve("tinymce.util.VK"),dt=tinymce.util.Tools.resolve("tinymce.util.Tools"),mt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),gt=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker"),pt=function(t,n,r){var e;n&&t.isEmpty(n)&&!r(n)&&(e=n.parentNode,t.remove(n),pt(t,e,r))},ht=mt.DOM,vt=function(t,r,e){if(!j(t))return w.none();var n=t.textContent;if(0<=r&&r<=n.length)return w.some(I(t,r));var o=gt(ht);return w.from(o.backwards(t,r,W(t),e)).bind(function(t){var n=t.container.data;return vt(t.container,r+n.length,e)})},yt=function(t,n,r){if(!j(t))return w.none();var e=t.textContent;if(n<=e.length)return w.some(I(t,n));var o=gt(ht);return w.from(o.forwards(t,n,W(t),r)).bind(function(t){return yt(t.container,n-e.length,r)})},bt=0,kt=function(e,o,a,t){var i,n,r,u,f,c,s,l=o.start;return n=t.container,r=t.offset,i=l,u=function(t,n){var r=t.data.substring(0,n),e=r.lastIndexOf(i.charAt(i.length-1)),o=r.lastIndexOf(i);return-1!==o?o+i.length:-1!==e?e+1:-1},f=a,s=gt(e,(c=e,function(t){return c.isBlock(t)||p(["BR","IMG","HR","INPUT"],t.nodeName)||"false"===c.getContentEditable(t)})),w.from(s.backwards(n,r,u,f)).bind(function(r){if(r.offset>=l.length){var t=e.createRng();return t.setStart(r.container,r.offset-l.length),t.setEnd(r.container,r.offset),w.some(t)}var n=r.offset-l.length;return vt(r.container,n,a).map(function(t){var n=e.createRng();return n.setStart(t.container,t.offset),n.setEnd(r.container,r.offset),n}).filter(function(t){return t.toString()===l}).orThunk(function(){return kt(e,o,a,I(r.container,0))})})},Ot=function(l,d,m,g,p){var h=l.dom;return q(m,g,h.getRoot()).bind(function(t){var n=h.createRng();n.setStart(p,0),n.setEnd(m,g);for(var r,e=n.toString(),o=0;o<d.length;o++){var a,i,u=d[o],f=u.end;i=r=void 0;if(a=(r=e).length-f.length,""===(i=f)||r.length>=i.length&&r.substr(a,a+i.length)===i){var c=d.slice();c.splice(o,1);var s=function(a,i,u){var f=a.dom,c=f.getRoot(),s=u.pattern,l=u.position.container,d=u.position.offset;return vt(l,d-u.pattern.end.length,i).bind(function(t){var r=F(c,t.container,t.offset,l,d);if(L(s))return w.some({matches:[{pattern:s,startRng:r,endRng:r}],position:t});var n=Ot(a,u.remainingPatterns,t.container,t.offset,i),e=n.getOr({matches:[],position:t}),o=e.position;return function(t,r,n,e,o,a){if(void 0===a&&(a=!1),0!==r.start.length||a)return q(n,e,o).bind(function(n){return kt(t,r,o,n).bind(function(t){if(a){if(t.endContainer===n.container&&t.endOffset===n.offset)return w.none();if(0===n.offset&&t.endContainer.textContent.length===t.endOffset)return w.none()}return w.some(t)})});var i=t.createRng();return i.setStart(n,e),i.setEnd(n,e),w.some(i)}(f,s,o.container,o.offset,i,n.isNone()).map(function(t){var n=F(c,t.startContainer,t.startOffset,t.endContainer,t.endOffset);return{matches:e.matches.concat([{pattern:s,startRng:n,endRng:r}]),position:I(t.startContainer,t.startOffset)}})})}(l,p,{pattern:u,remainingPatterns:c,position:t});if(s.isSome())return s}}return w.none()})};t.add("textpattern",function(r){var t,n,e,o=(t=function(){var t=r.getParam("textpattern_patterns",ct,"array");if(!s(t))return B("The setting textpattern_patterns should be an array"),{inlinePatterns:[],blockPatterns:[]};var n=T(h(t,S));return v(n.errors,function(t){return B(t.message,t.pattern),0}),A(n.values)}(),n=t,{get:function(){return n},set:function(t){n=t}});return ot(r,o),e=o,{setPatterns:function(t){var n=T(h(t,S));if(0<n.errors.length){var r=n.errors[0];throw new Error(r.message+":\n"+JSON.stringify(r.pattern,null,2))}e.set(A(n.values))},getPatterns:function(){return a(a([],h(e.get().inlinePatterns,M),!0),h(e.get().blockPatterns,M),!0)}}})}();js/tinymce/plugins/spellchecker/plugin.min.js000064400000023072151727150230015402 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function C(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function u(e){return e.getParam("spellchecker_rpc_url")}function E(e){var t=new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)}function p(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function r(i,r){function o(e){var t=i.getElementsByTagName("*"),n=[];e="number"==typeof e?""+e:null;for(var r=0;r<t.length;r++){var o=t[r],a=o.getAttribute("data-mce-index");null!==a&&a.length&&-1!==o.className.indexOf("mce-spellchecker-word")&&(a!==e&&null!==e||n.push(o))}return n}function a(e){for(var t=c.length;t--;)if(c[t]===e)return t;return-1}var n,c=[],v=r.dom,f=r.schema.getBlockElements(),h=r.schema.getWhiteSpaceElements(),g=r.schema.getShortEndedElements(),s=function(e){if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!f[e.nodeName])return"";if(p(e))return"\n";var t="";if((f[e.nodeName]||g[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=s(e),e=e.nextSibling;);return t};function e(e){for(var t=0,n=c.length;t<n&&!1!==e(c[t],t);t++);return this}function t(e){for(var t=o(e?a(e):null),n=t.length;n--;)!function(e){for(var t=e.parentNode;0<e.childNodes.length;)t.insertBefore(e.childNodes[0],e);t.removeChild(e)}(t[n]);return this}function l(e){var t=o(a(e)),n=r.dom.createRng();return n.setStartBefore(t[0]),n.setEndAfter(t[t.length-1]),n}var u=s(i);return{text:u,matches:c,each:e,filter:function(n){var r=[];return e(function(e,t){n(e,t)&&r.push(e)}),c=r,this},reset:function(){return c.splice(0,c.length),t(),this},matchFromElement:function(e){return c[e.getAttribute("data-mce-index")]},elementFromMatch:function(e){return o(a(e))[0]},find:function(e,t){if(u&&e.global)for(;n=e.exec(u);)c.push(function(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}(n,t));return this},add:function(e,t,n){return c.push({start:e,end:e+t,text:u.substr(e,t),data:n}),this},wrap:function(e){return c.length&&function(e,t,n){var r,o,a,i,c,s=[],l=0,u=e,d=0;(t=t.slice(0)).sort(function(e,t){return e.start-t.start}),c=t.shift();e:for(;;){if((f[u.nodeName]||g[u.nodeName]||p(u))&&l++,3===u.nodeType&&(!o&&u.length+l>=c.end?(o=u,i=c.end-l):r&&s.push(u),!r&&u.length+l>c.start&&(r=u,a=c.start-l),l+=u.length),r&&o){if(u=n({startNode:r,startNodeIndex:a,endNode:o,endNodeIndex:i,innerNodes:s,match:c.text,matchIndex:d}),l-=o.length-i,o=r=null,s=[],d++,!(c=t.shift()))break}else if(h[u.nodeName]&&!f[u.nodeName]||!u.firstChild){if(u.nextSibling){u=u.nextSibling;continue}}else if(!p(u)){u=u.firstChild;continue}for(;;){if(u.nextSibling){u=u.nextSibling;break}if(u.parentNode===e)break e;u=u.parentNode}}}(i,c,(o=e,function(e){var t=e.startNode,n=e.endNode,r=e.matchIndex,o=v.doc;if(t===n){var a=t,i=a.parentNode;0<e.startNodeIndex&&(s=o.createTextNode(a.data.substring(0,e.startNodeIndex)),i.insertBefore(s,a));var c=m(e.match,r);return i.insertBefore(c,a),e.endNodeIndex<a.length&&(l=o.createTextNode(a.data.substring(e.endNodeIndex)),i.insertBefore(l,a)),a.parentNode.removeChild(a),c}for(var s=o.createTextNode(t.data.substring(0,e.startNodeIndex)),l=o.createTextNode(n.data.substring(e.endNodeIndex)),u=m(t.data.substring(e.startNodeIndex),r),d=0,f=e.innerNodes.length;d<f;++d){var h=e.innerNodes[d],g=m(h.data,r);h.parentNode.replaceChild(g,h)}var p=m(n.data.substring(0,e.endNodeIndex),r);return(i=t.parentNode).insertBefore(s,t),i.insertBefore(u,t),i.removeChild(t),(i=n.parentNode).insertBefore(p,n),i.insertBefore(l,n),i.removeChild(n),p})),this;function m(e,t){var n=c[t];n.stencil||(n.stencil=o(n));var r=n.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",""+t),e&&r.appendChild(v.doc.createTextNode(e)),r}var o},unwrap:t,replace:function(e,t){var n=l(e);return n.deleteContents(),0<t.length&&n.insertNode(r.dom.doc.createTextNode(t)),n},rangeFromMatch:l,indexOf:a}}function l(e,t){var n;return t.get()||(n=r(e.getBody(),e),t.set(n)),t.get()}function k(e,t,n,r,o,a,i){var c,s,l;(e.getParam("spellchecker_callback")||(c=e,s=t,l=n,function(e,t,r,o){var n={method:e,lang:l.get()},a="";n["addToDictionary"===e?"word":"text"]=t,M.each(n,function(e,t){a&&(a+="&"),a+=t+"="+encodeURIComponent(e)}),h.send({url:new f(s).toAbsolute(u(c)),type:"post",content_type:"application/x-www-form-urlencoded",data:a,success:function(e){var t,n=JSON.parse(e);n?n.error?o(n.error):r(n):(t=c.translate("Server response wasn't proper JSON."),o(t))},error:function(){var e=c.translate("The spelling service was not found: (")+u(c)+c.translate(")");o(e)}})})).call(e.plugins.spellchecker,r,o,a,i)}function R(t,e,n,r,o,a){i(t,n,r)||(t.setProgressState(!0),k(t,e,a,"spellcheck",l(t,r).text,function(e){O(t,n,r,o,e)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1),i(t,n,r)}),t.focus())}function y(e,t,n){e.dom.select("span.mce-spellchecker-word").length||i(e,t,n)}function S(t,e,n,r,o,a){t.selection.collapse(),a?M.each(t.dom.select("span.mce-spellchecker-word"),function(e){e.getAttribute("data-mce-word")===r&&t.dom.remove(e,!0)}):t.dom.remove(o,!0),y(t,e,n)}function b(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function _(g,p,m,v,x,N){g.ui.registry.addContextMenu("spellchecker",{update:function(e){var t=e;if("mce-spellchecker-word"!==t.className)return[];var c,s,n,l,u,d,f,h,r,o,a=function(e,t){var n=[],r=M.toArray(e.getBody().getElementsByTagName("span"));if(r.length)for(var o=0;o<r.length;o++){var a=b(r[o]);null!==a&&a.length&&a===t.toString()&&n.push(r[o])}return n}(g,b(t));if(0<a.length){var i=g.dom.createRng();return i.setStartBefore(a[0]),i.setEndAfter(a[a.length-1]),g.selection.setRng(i),c=g,s=p,n=m,l=v,u=x,d=N,f=t.getAttribute("data-mce-word"),h=a,r=[],o=n.get().suggestions[f],M.each(o,function(e){r.push({text:e,onAction:function(){c.insertContent(c.dom.encode(e)),c.dom.remove(h),y(c,l,u)}})}),n.get().hasDictionarySupport&&(r.push({type:"separator"}),r.push({text:"Add to dictionary",onAction:function(){var t,e=s,n=l,r=u,o=d,a=f,i=h;(t=c).setProgressState(!0),k(t,e,o,"addToDictionary",a,function(){t.setProgressState(!1),t.dom.remove(i,!0),y(t,n,r)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1)})}})),r.push.apply(r,[{type:"separator"},{text:"Ignore",onAction:function(){S(c,l,u,f,h)}},{text:"Ignore all",onAction:function(){S(c,l,u,f,h,!0)}}]),r}}})}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=Object.hasOwnProperty,M=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=tinymce.util.Tools.resolve("tinymce.util.URI"),h=tinymce.util.Tools.resolve("tinymce.util.XHR"),i=function(e,t,n){var r=e.selection.getBookmark();if(l(e,n).reset(),e.selection.moveToBookmark(r),n.set(null),t.get())return t.set(!1),e.fire("SpellcheckEnd"),!0},O=function(t,e,n,r,o){var a=!!o.dictionary,i=o.words;if(t.setProgressState(!1),function(e){for(var t in e)if(d.call(e,t))return;return 1}(i)){var c=t.translate("No misspellings found.");return t.notificationManager.open({text:c,type:"info"}),void e.set(!1)}r.set({suggestions:i,hasDictionarySupport:a});var s=t.selection.getBookmark();l(t,n).find(E(t)).filter(function(e){return!!i[e.text]}).wrap(function(e){return t.dom.create("span",{class:"mce-spellchecker-word","aria-invalid":"spelling","data-mce-bogus":1,"data-mce-word":e.text})}),t.selection.moveToBookmark(s),e.set(!0),t.fire("SpellcheckStart")},D=function(){return(D=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},F="SpellcheckStart SpellcheckEnd";e.add("spellchecker",function(e,t){if(0==(!!e.hasPlugin("tinymcespellchecker",!0)&&(void 0!==window.console&&window.console.log&&window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),!0))){var n=C(!1),r=C((I=(P=e).getParam("language","en"),P.getParam("spellchecker_language",I))),o=C(null),a=C(null);return c=e,s=t,l=n,u=o,d=r,f=a,h=M.map(c.getParam("spellchecker_languages","English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv").split(","),function(e){var t=e.split("=");return{name:t[0],value:t[1]}}),g=[],M.each(h,function(e){g.push({selectable:!0,text:e.name,data:e.value})}),p=g,v=D(D({},m={tooltip:"Spellcheck",onAction:i,icon:"spell-check",onSetup:function(e){function t(){e.setActive(l.get())}return c.on(F,t),function(){c.off(F,t)}}}),{type:"splitbutton",select:function(e){return e===d.get()},fetch:function(e){e(M.map(p,function(e){return{type:"choiceitem",value:e.data,text:e.text}}))},onItemAction:function(e,t){d.set(t)}}),1<p.length?c.ui.registry.addSplitButton("spellchecker",v):c.ui.registry.addToggleButton("spellchecker",m),c.ui.registry.addToggleMenuItem("spellchecker",{text:"Spellcheck",icon:"spell-check",onSetup:function(e){function t(){e.setActive(l.get())}return e.setActive(l.get()),c.on(F,t),function(){c.off(F,t)}},onAction:i}),_(e,t,a,n,o,r),b=t,w=n,T=o,A=a,B=r,(S=e).addCommand("mceSpellCheck",function(){R(S,b,w,T,A,B)}),x=e,N=n,k=a,{getTextMatcher:(y=o).get,getWordCharPattern:function(){return E(x)},markErrors:function(e){O(x,N,y,k,e)},getLanguage:r.get}}function i(){R(c,s,l,u,f,d)}var c,s,l,u,d,f,h,g,p,m,v,x,N,k,y,S,b,w,T,A,B,P,I})}();js/tinymce/plugins/lists/plugin.min.js000064400000066445151727150230014107 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function u(){}function S(e){return function(){return e}}function n(e){return e}function r(e,t){return e===t}function y(t){return function(e){return!t(e)}}function o(){return p}var i=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=e("string"),O=e("object"),s=e("array"),c=t("boolean"),f=t("function"),d=t("number"),l=S(!1),m=S(!0),p={fold:function(e,t){return e()},isSome:l,isNone:m,getOr:n,getOrThunk:g,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:S(null),getOrUndefined:S(void 0),or:n,orThunk:g,map:o,each:u,bind:o,exists:l,forall:m,filter:function(){return p},toArray:function(){return[]},toString:S("none()")};function g(e){return e()}function C(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r}function b(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function L(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function v(e,n,r){return b(e,function(e,t){r=n(r,e,t)}),r}function h(e,t,n){for(var r=0,o=e.length;r<o;r++){var i=e[r];if(t(i,r))return E.some(i);if(n(i,r))break}return E.none()}function N(e,t){return h(e,t,l)}function T(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!s(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);P.apply(t,e[n])}return t}(C(e,t))}function D(e){var t=I.call(e,0);return t.reverse(),t}function x(e,t){return 0<=t&&t<e.length?E.some(e[t]):E.none()}function A(e){return x(e,0)}function w(e){return x(e,e.length-1)}var k=function(n){function e(){return o}function t(e){return e(n)}var r=S(n),o={fold:function(e,t){return t(n)},isSome:m,isNone:l,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return k(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:p},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},E={some:k,none:o,from:function(e){return null==e?p:k(e)}},I=Array.prototype.slice,P=Array.prototype.push,B=function(){return(B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function R(r,e){return function(e){for(var t=0;t<e.length;t++){var n=function(t){var n=t.brand.toLowerCase();return N(r,function(e){var t;return n===(null===(t=e.brand)||void 0===t?void 0:t.toLowerCase())}).map(function(e){return{current:e.name,version:G.nu(parseInt(t.version,10),0)}})}(e[t]);if(n.isSome())return n}return E.none()}(e.brands)}function M(e,t){var n=String(t).toLowerCase();return N(e,function(e){return e.search(n)})}function U(e,t){return-1!==e.indexOf(t)}function _(t){return function(e){return U(e,t)}}function $(e){return window.matchMedia(e).matches}function F(e,t){return e.dom===t.dom}function H(e,t){return le().browser.isIE()?(n=e.dom,r=t.dom,o=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(n.compareDocumentPosition(r)&o)):(i=e.dom)!==(a=t.dom)&&i.contains(a);var n,r,o,i,a}function j(e,t){for(var n=ye(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function K(){return Z(0,0)}function V(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isEdge:t("Edge"),isChrome:t("Chrome"),isIE:t("IE"),isOpera:t("Opera"),isFirefox:t(ne),isSafari:t("Safari")}}function W(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isWindows:t(ie),isiOS:t("iOS"),isAndroid:t(ae),isOSX:t("OSX"),isLinux:t("Linux"),isSolaris:t(se),isFreeBSD:t(ue),isChromeOS:t(ce)}}function Q(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var X,q,z,Y,Z=function(e,t){return{major:e,minor:t}},G={nu:Z,detect:function(e,t){var n,r,o=String(t).toLowerCase();return 0===e.length?K():(r=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}}(e,n=o))?Z(i(1),i(2)):{major:0,minor:0};function i(e){return Number(n.replace(r,"$"+e))}},unknown:K},J=(X=/^\s+|\s+$/g,function(e){return e.replace(X,"")}),ee=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,te={browsers:S([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return U(e,"edge/")&&U(e,"chrome")&&U(e,"safari")&&U(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,ee],search:function(e){return U(e,"chrome")&&!U(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return U(e,"msie")||U(e,"trident")}},{name:"Opera",versionRegexes:[ee,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:_("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:_("firefox")},{name:"Safari",versionRegexes:[ee,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(U(e,"safari")||U(e,"mobile/"))&&U(e,"applewebkit")}}]),oses:S([{name:"Windows",search:_("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return U(e,"iphone")||U(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:_("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:_("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:_("linux"),versionRegexes:[]},{name:"Solaris",search:_("sunos"),versionRegexes:[]},{name:"FreeBSD",search:_("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:_("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},ne="Firefox",re=function(){return V({current:void 0,version:G.unknown()})},oe=V,ie=(S("Edge"),S("Chrome"),S("IE"),S("Opera"),S(ne),S("Safari"),"Windows"),ae="Android",se="Solaris",ue="FreeBSD",ce="ChromeOS",fe=function(){return W({current:void 0,version:G.unknown()})},de=W,le=(S(ie),S("iOS"),S(ae),S("Linux"),S("OSX"),S(se),S(ue),S(ce),Y=!(q=function(){return e=navigator.userAgent,t=E.from(navigator.userAgentData),n=$,g=te.browsers(),v=te.oses(),h=t.bind(function(e){return R(g,e)}).orThunk(function(){return M(g,n=e).map(function(e){var t=G.detect(e.versionRegexes,n);return{current:e.name,version:t}});var n}).fold(re,oe),y=M(v,r=e).map(function(e){var t=G.detect(e.versionRegexes,r);return{current:e.name,version:t}}).fold(fe,de),{browser:h,os:y,deviceType:(i=h,a=e,s=n,u=(o=y).isiOS()&&!0===/ipad/i.test(a),c=o.isiOS()&&!u,d=(f=o.isiOS()||o.isAndroid())||s("(pointer:coarse)"),l=u||!c&&f&&s("(min-device-width:768px)"),m=c||f&&!l,p=i.isSafari()&&o.isiOS()&&!1===/safari/i.test(a),{isiPad:S(u),isiPhone:S(c),isTablet:S(l),isPhone:S(m),isTouch:S(d),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:S(p),isDesktop:S(!m&&!l&&!p)})};var e,t,n,r,o,i,a,s,u,c,f,d,l,m,p,g,v,h,y}),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Y||(Y=!0,z=q.apply(null,e)),z}),me={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Q(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return Q(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return Q(n)},fromDom:Q,fromPoint:function(e,t,n){return E.from(e.dom.elementFromPoint(t,n)).map(Q)}},pe=function(e,t){var n=e.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(t);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(t);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(t);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},ge=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),ve=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),he=tinymce.util.Tools.resolve("tinymce.util.VK"),ye=Object.keys;function Se(e){return e.dom.nodeName.toLowerCase()}function Ce(t){return function(e){return Bt(e)&&Se(e)===t}}function be(e,t){var n=e.dom;j(t,function(e,t){!function(e,t,n){if(!(a(n)||c(n)||d(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}(n,t,e)})}function Ne(e){return v(e.dom.attributes,function(e,t){return e[t.name]=t.value,e},{})}function Oe(e){return E.from(e.dom.parentNode).map(me.fromDom)}function Le(e){return C(e.dom.childNodes,me.fromDom)}function Te(e,t){var n=e.dom.childNodes;return E.from(n[t]).map(me.fromDom)}function De(e){return Te(e,0)}function xe(e){return Te(e,e.dom.childNodes.length-1)}function Ae(t,n){Oe(t).each(function(e){e.dom.insertBefore(n.dom,t.dom)})}function we(e,t){e.dom.appendChild(t.dom)}function ke(t,e){b(e,function(e){we(t,e)})}function Ee(e){var t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)}function Ie(e){return me.fromDom(e.dom.cloneNode(!0))}function Pe(e,t){var n,r,o=(n=e,be(r=me.fromTag(t),Ne(n)),r);return Ae(e,o),ke(o,Le(e)),Ee(e),o}function Be(t){return function(e){return e&&e.nodeName.toLowerCase()===t}}function Re(t){return function(e){return e&&t.test(e.nodeName)}}function Me(e){return e&&3===e.nodeType}function Ue(e,t){return t&&e.schema.getTextBlockElements()[t.nodeName]}function _e(e,t){return e&&e.nodeName in t}function $e(e,t,n){var r=e.isEmpty(t);return!(n&&0<e.select("span[data-mce-type=bookmark]",t).length)&&r}function Fe(e,t){return e.isChildOf(t,e.getRoot())}function He(e,t){var n,r,o,i,a=e.dom,s=e.schema.getBlockElements(),u=a.createFragment(),c=!1===(n=e.getParam("forced_root_block","p"))?"":!0===n?"p":n;if(c&&((o=a.create(c)).tagName===c.toUpperCase()&&a.setAttribs(o,e.getParam("forced_root_block_attrs",{})),_e(t.firstChild,s)||u.appendChild(o)),t)for(;r=t.firstChild;){var f=r.nodeName;i||"SPAN"===f&&"bookmark"===r.getAttribute("data-mce-type")||(i=!0),_e(r,s)?(u.appendChild(r),o=null):c?(o||(o=a.create(c),u.appendChild(o)),o.appendChild(r)):u.appendChild(r)}return c?i||o.appendChild(a.create("br",{"data-mce-bogus":"1"})):u.appendChild(a.create("br")),u}function je(e){Qt(e)&&Pe(e,"dd")}function Ke(r,e,t){b(t,"Indent"===e?je:function(e){return t=r,Wt(n=e)?Pe(n,"dt"):Qt(n)&&Oe(n).each(function(e){return function(e,t,n){var r=Vt.select('span[data-mce-type="bookmark"]',t),o=He(e,n),i=Vt.createRng();i.setStartAfter(n),i.setEndAfter(t);for(var a,s=i.extractContents(),u=s.firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Vt.remove(u);break}e.dom.isEmpty(s)||Vt.insertAfter(s,t),Vt.insertAfter(o,t),$e(e.dom,n.parentNode)&&(a=n.parentNode,Mt.each(r,function(e){a.parentNode.insertBefore(e,n.parentNode)}),Vt.remove(a)),Vt.remove(n),$e(e.dom,t)&&Vt.remove(t)}(t,e.dom,n.dom)}),0;var t,n})}function Ve(e,t){if(Me(e))return{container:e,offset:t};var n=ge.getNode(e,t);return Me(n)?{container:n,offset:t>=e.childNodes.length?n.data.length:0}:n.previousSibling&&Me(n.previousSibling)?{container:n.previousSibling,offset:n.previousSibling.data.length}:n.nextSibling&&Me(n.nextSibling)?{container:n.nextSibling,offset:0}:{container:e,offset:t}}function We(e){var t=e.cloneRange(),n=Ve(e.startContainer,e.startOffset);t.setStart(n.container,n.offset);var r=Ve(e.endContainer,e.endOffset);return t.setEnd(r.container,r.offset),t}function Qe(e,t){var n=t||e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",qt(e,n))}function Xe(e){var t,n,r=e.selection.getSelectedBlocks();return L((t=e,n=Mt.map(r,function(e){return t.dom.getParent(e,"li,dd,dt",qt(t,e))||e}),Xt.unique(n)),Ft)}function qe(e,t){return w(e.dom.getParents(t,"ol,ul",qt(e,t)))}function ze(e,t,n){return void 0===n&&(n=r),e.exists(function(e){return n(e,t)})}function Ye(e,t,n){return e.isSome()&&t.isSome()?E.some(n(e.getOrDie(),t.getOrDie())):E.none()}function Ze(e,t,n){return e.fire("ListMutation",{action:t,element:n})}function Ge(e,t){we(e.item,t.list)}function Je(e,t){for(var n=0;n<e.length-1;n++)(function(e,t,n){if(!a(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);void 0!==e.style&&f(e.style.getPropertyValue)&&e.style.setProperty(t,n)})(e[n].item.dom,"list-style-type","none");w(e).each(function(e){be(e.list,t.listAttributes),be(e.item,t.itemAttributes),ke(e.item,t.content)})}function et(u,e,c){var t=e.slice(0,c.depth);return w(t).each(function(e){var t,n,r,o,i,a,s=(t=c.itemAttributes,n=c.content,be(r=me.fromTag("li",u),t),ke(r,n),r);we((o=e).list,s),o.item=s,a=c,Se((i=e).list)!==a.listType&&(i.list=Pe(i.list,a.listType)),be(i.list,a.listAttributes)}),t}function tt(e,t,n){var r,o=function(e,t,n){for(var r,o,i,a=[],s=0;s<n;s++)a.push((o=t.listType,we((i={list:me.fromTag(o,r=e),item:me.fromTag("li",r)}).list,i.item),i));return a}(e,n,n.depth-t.length);return function(e){for(var t=1;t<e.length;t++)Ge(e[t-1],e[t])}(o),Je(o,n),r=o,Ye(w(t),A(r),Ge),t.concat(o)}function nt(e){return pe(e,"OL,UL")}function rt(e){return De(e).exists(nt)}function ot(e){return 0<e.depth}function it(e){return e.isSelected}function at(s){return b(s,function(a,e){function t(e){return e.depth===i&&!e.dirty}function n(e){return e.depth<i}var r,o,i;i=(r=s)[o=e].depth,h(D(r.slice(0,o)),t,n).orThunk(function(){return h(r.slice(o+1),t,n)}).fold(function(){var e,t,n,r,o,i;a.dirty&&(a.listAttributes=(e=a.listAttributes,n=function(e,t){return"start"!==t},r=t={},o=function(e,t){r[t]=e},i=u,j(e,function(e,t){(n(e,t)?o:i)(e,t)}),t))},function(e){var t=e;a.listType=t.listType,a.listAttributes=B({},t.listAttributes)})}),s}function st(n,a,s,u){return De(u).filter(nt).fold(function(){a.each(function(e){F(e.start,u)&&s.set(!0)});var r,o,i,e=(r=u,o=n,i=s.get(),Oe(r).filter(Bt).map(function(e){return{depth:o,dirty:!1,isSelected:i,content:(n=Le(t=r),C(xe(t).exists(nt)?n.slice(0,-1):n,Ie)),itemAttributes:Ne(r),listAttributes:Ne(e),listType:Se(e)};var t,n}));a.each(function(e){F(e.end,u)&&s.set(!1)});var t=xe(u).filter(nt).map(function(e){return Yt(n,a,s,e)}).getOr([]);return e.toArray().concat(t)},function(e){return Yt(n,a,s,e)})}function ut(o,e){return C(at(e),function(e){var t,n,r=(t=e.content,n=document.createDocumentFragment(),b(t,function(e){n.appendChild(e.dom)}),me.fromDom(n));return me.fromDom(He(o,r.dom))})}function ct(e,t){var n=at(t),r=e.contentDocument;return A(v(n,function(e,t){return(t.depth>e.length?tt:et)(r,e,t)},[])).map(function(e){return e.list}).toArray()}function ft(e,t){b(L(e,it),function(e){return function(e){switch(t){case"Indent":e.depth++;break;case"Outdent":e.depth--;break;case"Flatten":e.depth=0}e.dirty=!0}(e),0})}function dt(e,t){var n,r,o,i,a,s,u,c,f,d,l,m,p,g=C((i=qe(o=r=e,o.selection.getStart()),a=L(o.selection.getSelectedBlocks(),_t),s=i.toArray().concat(a),zt(r,s)),me.fromDom),v=C(L(Xe(e),Ht),me.fromDom),h=!1;return(g.length||v.length)&&(n=e.selection.getBookmark(),c=t,b((f=g,p=C(Xe(u=e),me.fromDom),d=Ye(N(p,y(rt)),N(D(p),y(rt)),function(e,t){return{start:e,end:t}}),l=!1,m={get:function(){return l},set:function(e){l=e}},C(f,function(e){return{sourceList:e,entries:Yt(0,d,m,e)}})),function(e){ft(e.entries,c);var t,n,r=(t=u,T(function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,a=e.length;i<a;i++){var s=e[i],u=t(s);u!==n&&(r.push(o),o=[]),n=u,o.push(s)}return 0!==o.length&&r.push(o),r}(e.entries,ot),function(e){return(A(e).exists(ot)?ct:ut)(t,e)}));b(r,function(e){Ze(u,"Indent"===c?"IndentList":"OutdentList",e.dom)}),n=e.sourceList,b(r,function(e){Ae(n,e)}),Ee(e.sourceList)}),Ke(e,t,v),e.selection.moveToBookmark(n),e.selection.setRng(We(e.selection.getRng())),e.nodeChanged(),h=!0),h}function lt(e){return dt(e,"Indent")}function mt(e){return dt(e,"Outdent")}function pt(e){return dt(e,"Flatten")}function gt(o){function e(e){var t,n=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"];1===n.nodeType&&(t=Gt.create("span",{"data-mce-type":"bookmark"}),n.hasChildNodes()?(r=Math.min(r,n.childNodes.length-1),e?n.insertBefore(t,n.childNodes[r]):Gt.insertAfter(t,n.childNodes[r])):n.appendChild(t),n=t,r=0),i[e?"startContainer":"endContainer"]=n,i[e?"startOffset":"endOffset"]=r}var i={};return e(!0),o.collapsed||e(),i}function vt(o){function e(e){var t,n=t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"];n&&(1===n.nodeType&&(r=function(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t===e)return n;1===t.nodeType&&"bookmark"===t.getAttribute("data-mce-type")||n++,t=t.nextSibling}return-1}(n),n=n.parentNode,Gt.remove(t),!n.hasChildNodes()&&Gt.isBlock(n)&&n.appendChild(Gt.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=r)}e(!0),e();var t=Gt.createRng();return t.setStart(o.startContainer,o.startOffset),o.endContainer&&t.setEnd(o.endContainer,o.endOffset),We(t)}function ht(e){switch(e){case"UL":return"ToggleUlList";case"OL":return"ToggleOlList";case"DL":return"ToggleDLList"}}function yt(e){return/\btox\-/.test(e.className)}function St(e,n,r){function t(e){var t=h(e.parents,Ut,jt).filter(function(e){return e.nodeName===n&&!yt(e)}).isSome();r(t)}return t({parents:e.dom.getParents(e.selection.getNode())}),e.on("NodeChange",t),function(){return e.off("NodeChange",t)}}function Ct(n,e){Mt.each(e,function(e,t){n.setAttribute(t,e)})}function bt(e,t,n){var r,o,i,a=n["list-style-type"]||null;e.setStyle(t,"list-style-type",a),r=e,Ct(o=t,(i=n)["list-attributes"]),Mt.each(r.select("li",o),function(e){Ct(e,i["list-item-attributes"])})}function Nt(e,t,n,r){var o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"];for(1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!n&&Kt(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(Ue(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o}function Ot(u,c,f){var e,t,n=u.selection.getRng(),d="LI",r=qt(u,u.selection.getStart(!0)),l=u.dom;"false"!==l.getContentEditable(u.selection.getNode())&&("DL"===(c=c.toUpperCase())&&(d="DT"),e=gt(n),t=function(n,e,r){for(var o,i=[],a=n.dom,t=Nt(n,e,!0,r),s=Nt(n,e,!1,r),u=[],c=t;c&&(u.push(c),c!==s);c=c.nextSibling);return Mt.each(u,function(e){if(Ue(n,e))return i.push(e),void(o=null);if(a.isBlock(e)||Kt(e))return Kt(e)&&a.remove(e),void(o=null);var t=e.nextSibling;Zt.isBookmarkNode(e)&&(Ut(t)||Ue(n,t)||!t&&e.parentNode===r)?o=null:(o||(o=a.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(u,n,r),Mt.each(t,function(e){var t,n,r,o,i,a=e.previousSibling,s=e.parentNode;Ft(s)||(a&&Ut(a)&&a.nodeName===c&&(o=f,l.getStyle(a,"list-style-type")===(i=null===(i=o?o["list-style-type"]:"")?"":i))?(t=a,e=l.rename(e,d),a.appendChild(e)):(t=l.create(c),e.parentNode.insertBefore(t,e),t.appendChild(e),e=l.rename(e,d)),n=l,r=e,Mt.each(["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],function(e){var t;return n.setStyle(r,((t={})[e]="",t))}),bt(l,t,f),Jt(u.dom,t))}),u.selection.setRng(vt(e)))}function Lt(e,t,n){return a=n,(i=t)&&a&&Ut(i)&&i.nodeName===a.nodeName&&(o=n,(r=e).getStyle(t,"list-style-type",!0)===r.getStyle(o,"list-style-type",!0))&&t.className===n.className;var r,o,i,a}function Tt(e,t,n){var r,o,i,a,s,u,c,f,d,l,m,p,g,v,h,y,S,C=Qe(e),b=(f=Qe(c=e),d=c.selection.getSelectedBlocks(),f&&1===d.length&&d[0]===f?L(f.querySelectorAll("ol,ul,dl"),Ut):L(d,function(e){return Ut(e)&&f!==e})),N=O(n)?n:{};0<b.length?(l=e,p=b,g=t,v=N,(S=Ut(m=C))&&m.nodeName===g&&!en(v)?pt(l):(Ot(l,g,v),h=gt(l.selection.getRng()),y=S?function(e,t){for(var n,r=0,o=t.length;r<o;r++)!n&&r in t||((n=n||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(n||Array.prototype.slice.call(t))}([m],p,!0):p,Mt.each(y,function(e){var t,n,r=l,o=g,i=v;(t=e).nodeName!==o?(n=r.dom.rename(t,o),bt(r.dom,n,i),Ze(r,ht(o),n)):(bt(r.dom,t,i),Ze(r,ht(o),t))}),l.selection.setRng(vt(h)))):(i=t,a=N,(o=C)!==(r=e).getBody()&&(o?o.nodeName!==i||en(a)||yt(o)?(s=gt(r.selection.getRng()),bt(r.dom,o,a),u=r.dom.rename(o,i),Jt(r.dom,u),r.selection.setRng(vt(s)),Ot(r,i,a),Ze(r,ht(i),u)):pt(r):(Ot(r,i,a),Ze(r,ht(i),o))))}function Dt(e,t,n,r){var o=t.startContainer,i=t.startOffset;if(Me(o)&&(n?i<o.data.length:0<i))return o;var a=e.schema.getNonEmptyElements();1===o.nodeType&&(o=ge.getNode(o,i));var s,u,c=new ve(o,r);for(n&&(s=e.dom,Kt(u=o)&&s.isBlock(u.nextSibling)&&!Kt(u.previousSibling)&&c.next());o=c[n?"next":"prev2"]();){if("LI"===o.nodeName&&!o.hasChildNodes())return o;if(a[o.nodeName])return o;if(Me(o)&&0<o.data.length)return o}}function xt(e,t){var n=t.childNodes;return 1===n.length&&!Ut(n[0])&&e.isBlock(n[0])}function At(t,e,n){var r,o,i,a=e.parentNode;Fe(t,e)&&Fe(t,n)&&(Ut(n.lastChild)&&(r=n.lastChild),a===n.lastChild&&Kt(a.previousSibling)&&t.remove(a.previousSibling),(o=n.lastChild)&&Kt(o)&&e.hasChildNodes()&&t.remove(o),$e(t,n,!0)&&t.$(n).empty(),function(e,t,n){var r,o,i,a=xt(e,n)?n.firstChild:n;if(xt(o=e,i=t)&&o.remove(i.firstChild,!0),!$e(e,t,!0))for(;r=t.firstChild;)a.appendChild(r)}(t,e,n),r&&n.appendChild(r),i=H(me.fromDom(n),me.fromDom(e))?t.getParents(e,Ut,n):[],t.remove(e),b(i,function(e){$e(t,e)&&e!==t.getRoot()&&t.remove(e)}))}function wt(c,f){var e=c.dom,t=c.selection,n=t.getStart(),r=qt(c,n),d=e.getParent(t.getStart(),"LI",r);if(d){var o=d.parentNode;if(o===c.getBody()&&$e(e,o))return 1;var l=We(t.getRng()),m=e.getParent(Dt(c,l,f,r),"LI",r);if(m&&m!==d)return c.undoManager.transact(function(){var e,t,n,r,o,i,a,s,u;f?(t=l,n=m,r=d,(u=(e=c).dom).isEmpty(r)?(a=n,(i=e).dom.$(s=r).empty(),At(i.dom,a,s),i.selection.setCursorLocation(s,0)):(o=gt(t),At(u,n,r),e.selection.setRng(vt(o)))):d.parentNode.firstChild===d?mt(c):function(e,t,n){var r=gt(l);At(e.dom,t,n);var o=vt(r);e.selection.setRng(o)}(c,d,m)}),1;if(!m&&!f&&0===l.startOffset&&0===l.endOffset)return c.undoManager.transact(function(){pt(c)}),1}}function kt(e,t){return e.selection.isCollapsed()?wt(i=e,a=t)||function(r,o){var i=r.dom,e=r.selection.getStart(),a=qt(r,e),s=i.getParent(e,i.isBlock,a);if(s&&i.isEmpty(s)){var t=We(r.selection.getRng()),u=i.getParent(Dt(r,t,o,a),"LI",a);if(u)return r.undoManager.transact(function(){var e,t=s,n=(e=i).getParent(t.parentNode,e.isBlock,a);e.remove(t),n&&e.isEmpty(n)&&e.remove(n),Jt(i,u.parentNode),r.selection.select(u,!0),r.selection.collapse(o)}),1}}(i,a):(r=(n=e).selection.getStart(),o=qt(n,r),(n.dom.getParent(r,"LI,DT,DD",o)||0<Xe(n).length)&&(n.undoManager.transact(function(){var i,e,t;n.execCommand("Delete"),i=n.dom,e=n.getBody(),t=Mt.grep(i.select("ol,ul",e)),Mt.each(t,function(e){var t,n,r,o=i;"LI"===(r=(t=e).parentNode).nodeName&&r.firstChild===t&&((n=r.previousSibling)&&"LI"===n.nodeName?(n.appendChild(t),$e(o,r)&&tn.remove(r)):tn.setStyle(r,"listStyleType","none")),Ut(r)&&(n=r.previousSibling)&&"LI"===n.nodeName&&n.appendChild(t)})}),1));var n,r,o,i,a}function Et(e){return v(C(D(J(e).split("")),function(e,t){var n=e.toUpperCase().charCodeAt(0)-"A".charCodeAt(0)+1;return Math.pow(26,t)*n}),function(e,t){return e+t},0)}function It(t,n){return function(){var e=Qe(t);return e&&e.nodeName===n}}function Pt(o){o.addCommand("mceListProps",function(){var t,e,n,r;r=Qe(t=o),$t(r)&&t.windowManager.open({title:"List Properties",body:{type:"panel",items:[{type:"input",name:"start",label:"Start list at number",inputMode:"numeric"}]},initialData:{start:(e={start:t.dom.getAttrib(r,"start","1"),listStyleType:E.some(t.dom.getStyle(r,"list-style-type"))},n=parseInt(e.start,10),ze(e.listStyleType,"upper-alpha")?nn(n):ze(e.listStyleType,"lower-alpha")?nn(n).toLowerCase():e.start)},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){!function(e){switch(/^[0-9]+$/.test(t=e)?2:/^[A-Z]+$/.test(t)?0:/^[a-z]+$/.test(t)?1:0<t.length?4:3){case 2:return E.some({listStyleType:E.none(),start:e});case 0:return E.some({listStyleType:E.some("upper-alpha"),start:Et(e).toString()});case 1:return E.some({listStyleType:E.some("lower-alpha"),start:Et(e).toString()});case 3:return E.some({listStyleType:E.none(),start:""});case 4:return E.none()}var t}(e.getData().start).each(function(e){t.execCommand("mceListUpdate",!1,{attrs:{start:"1"===e.start?"":e.start},styles:{"list-style-type":e.listStyleType.getOr("")}})}),e.close()}})})}"undefined"!=typeof window||Function("return this;")();function Bt(e){return 1===e.dom.nodeType}var Rt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Mt=tinymce.util.Tools.resolve("tinymce.util.Tools"),Ut=Re(/^(OL|UL|DL)$/),_t=Re(/^(OL|UL)$/),$t=Be("ol"),Ft=Re(/^(LI|DT|DD)$/),Ht=Re(/^(DT|DD)$/),jt=Re(/^(TH|TD)$/),Kt=Be("br"),Vt=Rt.DOM,Wt=Ce("dd"),Qt=Ce("dt"),Xt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),qt=function(e,t){var n=e.dom.getParents(t,"TD,TH");return 0<n.length?n[0]:e.getBody()},zt=function(t,e){var n=C(e,function(e){return qe(t,e).getOr(e)});return Xt.unique(n)},Yt=function(t,n,r,e){return T(Le(e),function(e){return(nt(e)?Yt:st)(t+1,n,r,e)})},Zt=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),Gt=Rt.DOM,Jt=function(e,t){var n,r=t.nextSibling;if(Lt(e,t,r)){for(;n=r.firstChild;)t.appendChild(n);e.remove(r)}if(Lt(e,t,r=t.previousSibling)){for(;n=r.lastChild;)t.insertBefore(n,t.firstChild);e.remove(r)}},en=function(e){return"list-style-type"in e},tn=Rt.DOM,nn=function(e){if(--e<0)return"";var t=e%26,n=Math.floor(e/26);return nn(n)+String.fromCharCode("A".charCodeAt(0)+t)};i.add("lists",function(e){var n,t,r,o,i,a,s,u;return!1===e.hasPlugin("rtc",!0)?((a=e).getParam("lists_indent_on_tab",!0)&&(s=a).on("keydown",function(e){e.keyCode!==he.TAB||he.metaKeyPressed(e)||s.undoManager.transact(function(){(e.shiftKey?mt:lt)(s)&&e.preventDefault()})}),(u=a).on("keydown",function(e){e.keyCode===he.BACKSPACE?kt(u,!1)&&e.preventDefault():e.keyCode===he.DELETE&&kt(u,!0)&&e.preventDefault()}),(i=e).on("BeforeExecCommand",function(e){var t=e.command.toLowerCase();"indent"===t?lt(i):"outdent"===t&&mt(i)}),i.addCommand("InsertUnorderedList",function(e,t){Tt(i,"UL",t)}),i.addCommand("InsertOrderedList",function(e,t){Tt(i,"OL",t)}),i.addCommand("InsertDefinitionList",function(e,t){Tt(i,"DL",t)}),i.addCommand("RemoveList",function(){pt(i)}),Pt(i),i.addCommand("mceListUpdate",function(e,t){var n,r,o;O(t)&&(r=t,o=Qe(n=i),n.undoManager.transact(function(){O(r.styles)&&n.dom.setStyles(o,r.styles),O(r.attrs)&&j(r.attrs,function(e,t){return n.dom.setAttrib(o,t,e)})}))}),i.addQueryStateHandler("InsertUnorderedList",It(i,"UL")),i.addQueryStateHandler("InsertOrderedList",It(i,"OL")),i.addQueryStateHandler("InsertDefinitionList",It(i,"DL"))):Pt(e),(o=e).hasPlugin("advlist")||(o.ui.registry.addToggleButton("numlist",{icon:"ordered-list",active:!1,tooltip:"Numbered list",onAction:c("InsertOrderedList"),onSetup:function(e){return St(o,"OL",e.setActive)}}),o.ui.registry.addToggleButton("bullist",{icon:"unordered-list",active:!1,tooltip:"Bullet list",onAction:c("InsertUnorderedList"),onSetup:function(e){return St(o,"UL",e.setActive)}})),t={text:"List properties...",icon:"ordered-list",onAction:function(){return n.execCommand("mceListProps")},onSetup:function(t){return St(n,"OL",function(e){return t.setDisabled(!e)})}},(n=e).ui.registry.addMenuItem("listprops",t),n.ui.registry.addContextMenu("lists",{update:function(e){var t=Qe(n,e);return $t(t)?["listprops"]:[]}}),r=e,{backspaceDelete:function(e){kt(r,e)}};function c(e){return function(){return o.execCommand(e)}}})}();js/tinymce/plugins/autosave/plugin.min.js000064400000005617151727150240014573 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function o(t,e){var r=t||e,n=/^(\d+)([ms]?)$/.exec(""+r);return(n[2]?{s:1e3,m:6e4}[n[2]]:1)*parseInt(r,10)}function n(t){var e=document.location;return t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)}function i(t,e){if(a(e))return t.dom.isEmpty(t.getBody());var r=d.trim(e);if(""===r)return!0;var n=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(n)}function u(t){var e=parseInt(v.getItem(n(t)+"time"),10)||0;return!((new Date).getTime()-e>o(t.getParam("autosave_retention"),"20m")&&(g(t,!1),1))}function s(t){var e=n(t);!i(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))}function f(t){var e=n(t);u(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))}function c(t){t.undoManager.transact(function(){f(t),g(t)}),t.focus()}function m(r){return function(t){function e(){return t.setDisabled(!u(r))}return t.setDisabled(!u(r)),r.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return r.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return void 0===t},l=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var r=n(t);v.removeItem(r+"draft"),v.removeItem(r+"time"),!1!==e&&t.fire("RemoveDraft")},y=tinymce.util.Tools.resolve("tinymce.EditorManager");t.add("autosave",function(t){var e,r,n,a;return t.editorManager.on("BeforeUnload",function(t){var e;d.each(y.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)}),n=e=t,a=o(n.getParam("autosave_interval"),"30s"),l.setEditorInterval(n,function(){s(n)},a),e.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),e.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),t.on("init",function(){t.getParam("autosave_restore_when_empty",!1)&&t.dom.isEmpty(t.getBody())&&f(t)}),r=t,{hasDraft:function(){return u(r)},storeDraft:function(){return s(r)},restoreDraft:function(){return f(r)},removeDraft:function(t){return g(r,t)},isEmpty:function(t){return i(r,t)}}})}();js/tinymce/plugins/hr/plugin.min.js000064400000001344151727150240013346 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("hr",function(n){var o,t;function e(){return t.execCommand("InsertHorizontalRule")}(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"<hr />")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:e}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:e})})}();js/tinymce/plugins/template/plugin.min.js000064400000020071151727150240014546 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function o(e){return function(){return e}}function e(e){return e}function i(e){return n=typeof(t=e),"string"==(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n);var t,n}var t,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return typeof e===t};function s(e){return e.getParam("template_mdate_classes","mdate")}function l(e){return e.getParam("template_replace_values")}function m(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))}function f(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function p(e,t,n){void 0===n&&(n=new Date);var r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),a="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),o="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),c="January February March April May June July August September October November December".split(" ");return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",f(n.getMonth()+1,2))).replace("%d",f(n.getDate(),2))).replace("%H",""+f(n.getHours(),2))).replace("%M",""+f(n.getMinutes(),2))).replace("%S",""+f(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(c[n.getMonth()]))).replace("%b",""+e.translate(o[n.getMonth()]))).replace("%A",""+e.translate(a[n.getDay()]))).replace("%a",""+e.translate(r[n.getDay()]))).replace("%%","%")}function x(n,e){return O.each(e,function(e,t){u(e)&&(e=e(t)),n=n.replace(new RegExp("\\{\\$"+t+"\\}","g"),e)}),n}function d(e,t){var r=e.dom,a=l(e);O.each(r.select("*",t),function(n){O.each(a,function(e,t){r.hasClass(n,t)&&u(e)&&e(n)})})}function g(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}function y(t,e,n){var r=t.dom,a=t.selection.getContent();n=x(n,l(t));var o=r.create("div",null,n),c=r.select(".mceTmpl",o);c&&0<c.length&&(o=r.create("div",null)).appendChild(c[0].cloneNode(!0)),O.each(r.select("*",o),function(e){g(e,t.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(e.innerHTML=p(t,t.getParam("template_cdate_format",t.translate("%Y-%m-%d")))),g(e,s(t).replace(/\s+/g,"|"))&&(e.innerHTML=p(t,m(t))),g(e,t.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(e.innerHTML=a)}),d(t,o),t.execCommand("mceInsertContent",!1,o.innerHTML),t.addVisual()}function r(){return b}var c=o(!(t="function")),v=o(!0),O=tinymce.util.Tools.resolve("tinymce.util.Tools"),h=tinymce.util.Tools.resolve("tinymce.util.XHR"),b={fold:function(e,t){return e()},isSome:c,isNone:v,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:r,each:function(){},bind:r,exists:c,forall:v,filter:function(){return b},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function T(M,t){function l(e,t){return function(e,t,n){for(var r=0,a=e.length;r<a;r++){var o=e[r];if(t(o,r))return P.some(o);if(n(o,r))break}return P.none()}(e,function(e){return e.text===t},c)}function i(e){M.windowManager.alert("Could not load the specified template.",function(){return e.focus("template")})}function u(e){return new _(function(t,n){e.value.url.fold(function(){return t(e.value.content.getOr(""))},function(e){return h.send({url:e,success:function(e){t(e)},error:function(e){n(e)}})})})}!function(){if(t&&0!==t.length)return P.from(O.map(t,function(e,t){function n(e){return void 0!==e.url}return{selected:0===t,text:e.title,value:{url:n(e)?P.from(e.url):P.none(),content:n(e)?P.none():P.from(e.content),description:e.description}}}));var e=M.translate("No templates defined.");return M.notificationManager.open({text:e,type:"info"}),P.none()}().each(function(o){function b(e,t){return{title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:t,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(t){var e=t.getData();l(n,e.template).each(function(e){u(e).then(function(e){M.execCommand("mceInsertTemplate",!1,e),t.close()}).catch(function(){t.disable("save"),i(t)})})},onChange:(r=n=o,a=c,function(n,e){var t;"template"===e.name&&(t=n.getData().template,l(r,t).each(function(t){n.block("Loading..."),u(t).then(function(e){a(n,t,e)}).catch(function(){a(n,t,""),n.disable("save"),i(n)})}))})};var r,a,n}var T=function(e){for(var t=e.length,n=new Array(t),r=0;r<t;r++){var a=e[r];n[r]={text:a.text,value:a.text}}return n}(o),c=function(e,t,n){var r,a,o,c,l,i,u,s,m,f,p,d,g,y=(r=M,-1===(a=n).indexOf("<html>")&&(o="",c=r.getParam("content_style","","string"),l=r.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"",O.each(r.contentCSS,function(e){o+='<link type="text/css" rel="stylesheet" href="'+r.documentBaseURI.toAbsolute(e)+'"'+l+">"}),c&&(o+='<style type="text/css">'+c+"</style>"),i=-1===(g=(p=r).getParam("body_class","","string")).indexOf("=")?g:(d=p).getParam("body_class","","hash")[d.id]||"",u=r.dom.encode,s='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(S.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",f=(m=r.getBody().dir)?' dir="'+u(m)+'"':"",a='<!DOCTYPE html><html><head><base href="'+u(r.documentBaseURI.getURI())+'">'+o+s+'</head><body class="'+u(i)+'"'+f+">"+a+"</body></html>"),x(a,r.getParam("template_preview_replace_values"))),v=[{type:"selectbox",name:"template",label:"Templates",items:T},{type:"htmlpanel",html:'<p aria-live="polite">'+t.value.description.replace(/["'<>&]/g,function(e){return(C(t=A,n=e)?P.from(t[n]):P.none()).getOr(e);var t,n})+"</p>"},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1}],h={template:t.text,preview:y};e.unblock(),e.redial(b(v,h)),e.focus("template")},t=M.windowManager.open(b([],{template:"",preview:""}));t.block("Loading..."),u(o[0]).then(function(e){c(t,o[0],e)}).catch(function(){c(t,o[0],""),t.disable("save"),i(t)})})}var M=function(n){function e(){return a}function t(e){return e(n)}var r=o(n),a={fold:function(e,t){return t(n)},isSome:v,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return M(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:b},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},P={some:M,none:r,from:function(e){return null==e?b:M(e)}},S=tinymce.util.Tools.resolve("tinymce.Env"),_=tinymce.util.Tools.resolve("tinymce.util.Promise"),w=Object.hasOwnProperty,C=function(e,t){return w.call(e,t)},A={'"':"&quot;","<":"&lt;",">":"&gt;","&":"&amp;","'":"&#039;"};n.add("template",function(e){function t(){return n.execCommand("mceTemplate")}var n,r,a,o,c,l;(n=e).ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onAction:t}),n.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onAction:t}),(a=e).addCommand("mceInsertTemplate",function(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}(y,a)),a.addCommand("mceTemplate",(l=o=a,c=function(e){T(l,e)},function(){var e=o.getParam("templates");u(e)?e(c):i(e)?h.send({url:e,success:function(e){c(JSON.parse(e))}}):c(e)})),(r=e).on("PreProcess",function(e){var t=r.dom,n=m(r);O.each(t.select("div",e.node),function(e){t.hasClass(e,"mceTmpl")&&(O.each(t.select("*",e),function(e){t.hasClass(e,s(r).replace(/\s+/g,"|"))&&(e.innerHTML=p(r,n))}),d(r,e))})})})}();js/tinymce/plugins/save/plugin.min.js000064400000003264151727150240013676 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function o(e){return e.getParam("save_enablewhendirty",!0)}function a(e,n){e.notificationManager.open({text:n,type:"error"})}function t(t){t.addCommand("mceSave",function(){!function(e){var n=c.DOM.getParent(e.id,"form");if(!o(e)||e.isDirty()){if(e.save(),e.getParam("save_onsavecallback"))return e.execCallback("save_onsavecallback",e),e.nodeChanged();n?(e.setDirty(!1),n.onsubmit&&!n.onsubmit()||("function"==typeof n.submit?n.submit():a(e,"Error: Form submit field collision.")),e.nodeChanged()):a(e,"Error: No form element found.")}}(t)}),t.addCommand("mceCancel",function(){var e=t,n=r.trim(e.startContent);e.getParam("save_oncancelcallback")?e.execCallback("save_oncancelcallback",e):e.resetContent(n)})}function i(t){return function(e){function n(){e.setDisabled(o(t)&&!t.isDirty())}return n(),t.on("NodeChange dirty",n),function(){return t.off("NodeChange dirty",n)}}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("save",function(e){var n;(n=e).ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:i(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:i(n)}),n.addShortcut("Meta+S","","mceSave"),t(e)})}();js/tinymce/plugins/print/plugin.min.js000064400000001450151727150240014067 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.Env");n.add("print",function(n){var t,i;function e(){return i.execCommand("mcePrint")}(t=n).addCommand("mcePrint",function(){r.browser.isIE()?t.getDoc().execCommand("print",!1,null):t.getWin().print()}),(i=n).ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:e}),i.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:e}),n.addShortcut("Meta+P","","mcePrint")})}();js/tinymce/plugins/wordcount/plugin.min.js000064400000027511151727150240014765 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function r(t){return t}function g(t){for(var e=a,n=c.length,r=0;r<n;++r){var o=c[r];if(o&&o.test(t)){e=r;break}}return e}function d(t,e,n,r){for(var o,u,c,a,i,s,g,d,l,p=[],h=[],f=0;f<n.length;++f)h.push(t[f]),function(t,e){var n=t[e],r=t[e+1];if(!(e<0||e>t.length-1&&0!==e||0===n&&0===r)){var o=t[e+2];if(0!==n||2!==r&&1!==r&&12!==r||0!==o){var u=t[e-1];return(2!==n&&1!==n&&12!==r||0!==r||0!==u)&&(4!==n&&0!==n||4!==r&&0!==r)&&(3!==n&&1!==n||4!==r||4!==u)&&(4!==n||3!==r&&1!==r||4!==o)&&8!==n&&9!==n&&8!==u&&9!==u&&8!==r&&9!==r&&(5!==n||6!==r)&&(7===n||5===n||6===n||7===r||5===r||6===r||(10!==n||10!==r)&&(11!==r||0!==n&&4!==n&&10!==n&&11!==n)&&(11!==n||0!==r&&4!==r&&10!==r)&&12!==n)}}}(n,f)&&(o=e[f],!r.includeWhitespace&&W.test(o)||!r.includePunctuation&&E.test(o)||(u=f-h.length+1,"http"!==(a=e.slice(u,c=f+1).join(""))&&"https"!==a||(d=f,l=void 0,l=function(t){for(var e=d+1;e<t.length&&!W.test(t[e]);e++);return e}(g=e),i="://"===g.slice(d+1,l).join("").substr(0,3)?l:d,s=t.slice(c,i),Array.prototype.push.apply(h,s),f=i),p.push(h)),h=[]);return p}function o(t,e){for(var n,r=e.getBlockElements(),o=e.getShortEndedElements(),u=[],c="",a=new s(t,t);t=a.next();)3===t.nodeType?c+=t.data.replace(/\uFEFF/g,""):(r[(n=t).nodeName]||o[n.nodeName])&&c.length&&(u.push(c),c="");return c.length&&u.push(c),u}function n(t){return t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length}function l(t,e){var n=o(t,e).join("\n").replace(/\u200B/g,"");return i(n.split(""),r).length}function p(t,e){return n(o(t,e).join(""))}function h(t,e){return n(o(t,e).join("").replace(/\s/g,""))}function f(t,e){return function(){return e(t.getBody(),t.schema)}}function C(t,e){return function(){return e(t.selection.getRng().cloneContents(),t.schema)}}function y(t){return f(t,l)}function v(t,e){var n=e;t.fire("wordCountUpdate",{wordCount:{words:n.body.getWordCount(),characters:n.body.getCharacterCount(),charactersWithoutSpaces:n.body.getCharacterCountWithoutSpaces()}})}var w,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=function(){return(m=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},e=[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp("[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]"),new RegExp("[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]"),new RegExp("[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]"),new RegExp("[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]"),new RegExp("\\r"),new RegExp("\\n"),new RegExp("[\v\f\x85\u2028\u2029]"),new RegExp("[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]"),new RegExp("[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]"),new RegExp("[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]"),new RegExp("[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]"),new RegExp("@")],u=new RegExp("^[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]$"),c=e,a=13,W=/^\s+$/,E=u,i=function(t,e,n){n=m(m({},{includeWhitespace:!1,includePunctuation:!1}),n);for(var r=[],o=[],u=0;u<t.length;u++){var c=e(t[u]);"\ufeff"!==c&&(r.push(t[u]),o.push(c))}var a,i,s=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var u=t[o];r[o]=e(u,o)}return r}(o,(a=g,i={},function(t){if(i[t])return i[t];var e=a(t);return i[t]=e}));return d(r,o,s,n)},s=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),x=tinymce.util.Tools.resolve("tinymce.util.Delay");void 0===w&&(w=300),t.add("wordcount",function(t){var e,n,r,o,u,c,a,i={body:{getWordCount:y(t),getCharacterCount:f(t,p),getCharacterCountWithoutSpaces:f(t,h)},selection:{getWordCount:C(t,l),getCharacterCount:C(t,p),getCharacterCountWithoutSpaces:C(t,h)},getCount:y(t)};function s(){return e.execCommand("mceWordCount")}return a=i,(c=t).addCommand("mceWordCount",function(){var t=a;c.windowManager.open({title:"Word Count",body:{type:"panel",items:[{type:"table",header:["Count","Document","Selection"],cells:[["Words",String(t.body.getWordCount()),String(t.selection.getWordCount())],["Characters (no spaces)",String(t.body.getCharacterCountWithoutSpaces()),String(t.selection.getCharacterCountWithoutSpaces())],["Characters",String(t.body.getCharacterCount()),String(t.selection.getCharacterCount())]]}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}]})}),(e=t).ui.registry.addButton("wordcount",{tooltip:"Word count",icon:"character-count",onAction:s}),e.ui.registry.addMenuItem("wordcount",{text:"Word count",icon:"character-count",onAction:s}),n=t,r=i,o=w,u=x.debounce(function(){return v(n,r)},o),n.on("init",function(){v(n,r),x.setEditorTimeout(n,function(){n.on("SetContent BeforeAddUndo Undo Redo ViewUpdate keyup",u)},0)}),i})}();js/tinymce/plugins/visualblocks/plugin.min.js000064400000002544151727150240015441 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function f(t,o,e){var n,i;t.dom.toggleClass(t.getBody(),"mce-visualblocks"),e.set(!e.get()),n=t,i=e.get(),n.fire("VisualBlocks",{state:i})}function g(e,n){return function(o){function t(t){return o.setActive(t.state)}return o.setActive(n.get()),e.on("VisualBlocks",t),function(){return e.off("VisualBlocks",t)}}}tinymce.util.Tools.resolve("tinymce.PluginManager").add("visualblocks",function(t,o){var e,n,i,s,c,u,l,a=(e=!1,{get:function(){return e},set:function(t){e=t}});function r(){return s.execCommand("mceVisualBlocks")}i=a,(n=t).addCommand("mceVisualBlocks",function(){f(n,0,i)}),(s=t).ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:r,onSetup:g(s,c=a)}),s.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",icon:"visualblocks",onAction:r,onSetup:g(s,c)}),l=a,(u=t).on("PreviewFormats AfterPreviewFormats",function(t){l.get()&&u.dom.toggleClass(u.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),u.on("init",function(){u.getParam("visualblocks_default_state",!1,"boolean")&&f(u,0,l)})})}();js/tinymce/plugins/fullscreen/plugin.min.js000064400000040163151727150240015101 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function a(e){var n=e;return{get:function(){return n},set:function(e){n=e}}}function e(t){return function(e){return r=typeof(n=e),(null===n?"null":"object"==r&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":r)===t;var n,r}}function n(n){return function(e){return typeof e===n}}function c(e){return!(null==e)}function s(){}function y(e){return function(){return e}}function r(e){return e}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=e("string"),d=e("array"),o=n("boolean"),h=n("function"),i=n("number");function u(){return m}var v=y(!1),f=y(!0),m={fold:function(e,n){return e()},isSome:v,isNone:f,getOr:r,getOrThunk:g,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:y(null),getOrUndefined:y(void 0),or:r,orThunk:g,map:u,each:s,bind:u,exists:v,forall:f,filter:function(){return m},toArray:function(){return[]},toString:y("none()")};function g(e){return e()}function p(e){function n(){return r.get().each(e)}var r=a(A.none());return{clear:function(){n(),r.set(A.none())},isSet:function(){return r.get().isSome()},get:function(){return r.get()},set:function(e){n(),r.set(A.some(e))}}}function w(){return p(function(e){return e.unbind()})}function C(e,n){for(var r=e.length,t=new Array(r),o=0;o<r;o++){var i=e[o];t[o]=n(i,o)}return t}function D(e,n){for(var r=0,t=e.length;r<t;r++)n(e[r],r)}function b(e,n){for(var r=[],t=0,o=e.length;t<o;t++){var i=e[t];n(i,t)&&r.push(i)}return r}function S(e,n){return function(e,n,r){for(var t=0,o=e.length;t<o;t++){var i=e[t];if(n(i,t))return A.some(i);if(r(i,t))break}return A.none()}(e,n,v)}function x(e,n){return-1!==e.indexOf(n)}function E(e){return void 0!==e.style&&h(e.style.getPropertyValue)}function O(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var F=function(r){function e(){return o}function n(e){return e(r)}var t=y(r),o={fold:function(e,n){return n(r)},isSome:f,isNone:v,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return F(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:m},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return o},A={some:F,none:u,from:function(e){return null==e?m:F(e)}},T=function(){return(T=Object.assign||function(e){for(var n,r=1,t=arguments.length;r<t;r++)for(var o in n=arguments[r])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)},k=Array.prototype.push,R=Object.keys,L={fromHtml:function(e,n){var r=(n||document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return O(r.childNodes[0])},fromTag:function(e,n){var r=(n||document).createElement(e);return O(r)},fromText:function(e,n){var r=(n||document).createTextNode(e);return O(r)},fromDom:O,fromPoint:function(e,n,r){return A.from(e.dom.elementFromPoint(n,r)).map(O)}};function P(n){return function(e){return e.dom.nodeType===n}}function M(t,e){return function(e){for(var n=0;n<e.length;n++){var r=function(n){var r=n.brand.toLowerCase();return S(t,function(e){var n;return r===(null===(n=e.brand)||void 0===n?void 0:n.toLowerCase())}).map(function(e){return{current:e.name,version:he.nu(parseInt(n.version,10),0)}})}(e[n]);if(r.isSome())return r}return A.none()}(e.brands)}function N(e,n){var r=String(n).toLowerCase();return S(e,function(e){return e.search(r)})}function H(n){return function(e){return x(e,n)}}function W(e){return window.matchMedia(e).matches}function q(e,n){var r=e.dom;if(1!==r.nodeType)return!1;var t=r;if(void 0!==t.matches)return t.matches(n);if(void 0!==t.msMatchesSelector)return t.msMatchesSelector(n);if(void 0!==t.webkitMatchesSelector)return t.webkitMatchesSelector(n);if(void 0!==t.mozMatchesSelector)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function I(e){return L.fromDom(e.dom.ownerDocument)}function j(e){var n,r=Re(e);return me(n=r)&&c(n.dom.host)?A.some(r):A.none()}function B(e){return L.fromDom(e.dom.host)}function V(e,n,r){!function(e,n,r){if(!(l(r)||o(r)||i(r)))throw console.error("Invalid call to Attribute.set. Key ",n,":: Value ",r,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,r+"")}(e.dom,n,r)}function X(e,n){var r=e.dom.getAttribute(n);return null===r?void 0:r}function _(e,n){e.dom.removeAttribute(n)}function z(e,n){var u=e.dom;!function(e){for(var n,r=R(e),t=0,o=r.length;t<o;t++){var i=r[t];n=e[i],function(e,n,r){if(!l(r))throw console.error("Invalid call to CSS.set. Property ",n,":: Value ",r,":: Element ",e),new Error("CSS value must be a string: "+r);E(e)&&e.style.setProperty(n,r)}(u,i,n)}}(n)}function U(e){function n(){return e.stopPropagation()}function r(){return e.preventDefault()}var t,o,i=L.fromDom(function(e){if(Ae()&&c(e.target)){var n=L.fromDom(e.target);if(se(n)&&Le(n)&&e.composed&&e.composedPath){var r=e.composedPath();if(r)return 0<(t=r).length?A.some(t[0]):A.none()}}var t;return A.from(e.target)}(e).getOr(e.target)),u=(t=r,o=n,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return t(o.apply(null,e))});return{target:i,x:e.clientX,y:e.clientY,stop:n,prevent:r,kill:u,raw:e}}function $(e,n,r){return o=n,i=!1,u=He,c=r,a=function(e){u(e)&&c(U(e))},(t=e).dom.addEventListener(o,a,i),{unbind:function(t){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var r=o.concat(e);return t.apply(null,r)}}(Ne,t,o,a,i)};var t,o,i,u,c,a}function K(e){var n=void 0===e?window:e;return ke().browser.isFirefox()?A.none():A.from(n.visualViewport)}function Y(e,n,r,t){return{x:e,y:n,width:r,height:t,right:e+r,bottom:n+t}}function G(r,t,e){return K(e).map(function(e){function n(e){return t(U(e))}return e.addEventListener(r,n),{unbind:function(){return e.removeEventListener(r,n)}}}).getOrThunk(function(){return{unbind:s}})}function J(e,n){e.fire("FullscreenStateChanged",{state:n}),e.fire("ResizeEditor")}function Q(e){return e.getParam("fullscreen_native",!1,"boolean")}function Z(e){return e.dom===(void 0!==(n=I(e).dom).fullscreenElement?n.fullscreenElement:void 0!==n.msFullscreenElement?n.msFullscreenElement:void 0!==n.webkitFullscreenElement?n.webkitFullscreenElement:null);var n}function ee(e,n){return t=function(e){return q(e,n)},b((r=e,A.from(r.dom.parentNode).map(L.fromDom).map(Ce).map(function(e){return b(e,function(e){return r.dom!==e.dom})}).getOr([])),t);var r,t}function ne(o,e,n){function r(t){return function(e){var n=X(e,"style"),r=void 0===n?"no-styles":n.trim();r===t||(V(e,Ve,r),z(e,o.parseStyle(t)))}}var t,i,u,c,a,s,l=(s=function(e){return q(e,"*")},b(function(e,n){for(var r=h(n)?n:v,t=e.dom,o=[];null!==t.parentNode&&void 0!==t.parentNode;){var i=t.parentNode,u=L.fromDom(i);if(o.push(u),!0===r(u))break;t=i}return o}(e,void 0),s)),f=function(e){for(var n=[],r=0,t=e.length;r<t;++r){if(!d(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);k.apply(n,e[r])}return n}(C(l,function(e){return ee(e,"*:not(.tox-silver-sink)")})),m=(i="background-color",u=(t=n).dom,void 0!==(a=""!==(c=window.getComputedStyle(u).getPropertyValue(i))||Pe(t)?c:Me(u,i))&&""!==a?"background-color:"+a+"!important":"background-color:rgb(255,255,255)!important;");D(f,r("display:none!important;")),D(l,r(Xe+_e+m)),r((!0===ze?"":Xe)+_e+m)(e)}function re(r,t){return function(n){function e(e){return n.setActive(e.state)}return n.setActive(null!==t.get()),r.on("FullscreenStateChanged",e),function(){return r.off("FullscreenStateChanged",e)}}}"undefined"!=typeof window||Function("return this;")();function te(){return de(0,0)}function oe(e){function n(e){return function(){return r===e}}var r=e.current,t=e.version;return{current:r,version:t,isEdge:n("Edge"),isChrome:n("Chrome"),isIE:n("IE"),isOpera:n("Opera"),isFirefox:n(pe),isSafari:n("Safari")}}function ie(e){function n(e){return function(){return r===e}}var r=e.current,t=e.version;return{current:r,version:t,isWindows:n(be),isiOS:n("iOS"),isAndroid:n(Se),isOSX:n("OSX"),isLinux:n("Linux"),isSolaris:n(xe),isFreeBSD:n(Ee),isChromeOS:n(Oe)}}var ue,ce,ae,se=P(1),le=P(3),fe=P(9),me=P(11),de=function(e,n){return{major:e,minor:n}},he={nu:de,detect:function(e,n){var r,t,o=String(n).toLowerCase();return 0===e.length?te():(t=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}}(e,r=o))?de(i(1),i(2)):{major:0,minor:0};function i(e){return Number(r.replace(t,"$"+e))}},unknown:te},ve=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ge={browsers:y([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return x(e,"edge/")&&x(e,"chrome")&&x(e,"safari")&&x(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,ve],search:function(e){return x(e,"chrome")&&!x(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return x(e,"msie")||x(e,"trident")}},{name:"Opera",versionRegexes:[ve,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:H("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:H("firefox")},{name:"Safari",versionRegexes:[ve,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(x(e,"safari")||x(e,"mobile/"))&&x(e,"applewebkit")}}]),oses:y([{name:"Windows",search:H("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return x(e,"iphone")||x(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:H("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:H("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:H("linux"),versionRegexes:[]},{name:"Solaris",search:H("sunos"),versionRegexes:[]},{name:"FreeBSD",search:H("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:H("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},pe="Firefox",we=function(){return oe({current:void 0,version:he.unknown()})},ye=oe,be=(y("Edge"),y("Chrome"),y("IE"),y("Opera"),y(pe),y("Safari"),"Windows"),Se="Android",xe="Solaris",Ee="FreeBSD",Oe="ChromeOS",Fe=function(){return ie({current:void 0,version:he.unknown()})},Te=ie,ke=(y(be),y("iOS"),y(Se),y("Linux"),y("OSX"),y(xe),y(Ee),y(Oe),ae=!(ue=function(){return e=navigator.userAgent,n=A.from(navigator.userAgentData),r=W,v=ge.browsers(),g=ge.oses(),p=n.bind(function(e){return M(v,e)}).orThunk(function(){return N(v,r=e).map(function(e){var n=he.detect(e.versionRegexes,r);return{current:e.name,version:n}});var r}).fold(we,ye),w=N(g,t=e).map(function(e){var n=he.detect(e.versionRegexes,t);return{current:e.name,version:n}}).fold(Fe,Te),{browser:p,os:w,deviceType:(i=p,u=e,c=r,a=(o=w).isiOS()&&!0===/ipad/i.test(u),s=o.isiOS()&&!a,f=(l=o.isiOS()||o.isAndroid())||c("(pointer:coarse)"),m=a||!s&&l&&c("(min-device-width:768px)"),d=s||l&&!m,h=i.isSafari()&&o.isiOS()&&!1===/safari/i.test(u),{isiPad:y(a),isiPhone:y(s),isTablet:y(m),isPhone:y(d),isTouch:y(f),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:y(h),isDesktop:y(!d&&!m&&!h)})};var e,n,r,t,o,i,u,c,a,s,l,f,m,d,h,v,g,p,w}),function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return ae||(ae=!0,ce=ue.apply(null,e)),ce}),Ce=function(e){return C(e.dom.childNodes,L.fromDom)},De=h(Element.prototype.attachShadow)&&h(Node.prototype.getRootNode),Ae=y(De),Re=De?function(e){return L.fromDom(e.dom.getRootNode())}:function(e){return fe(e)?e:I(e)},Le=function(e){return c(e.dom.shadowRoot)},Pe=function(e){var n=le(e)?e.dom.parentNode:e.dom;if(null==n||null===n.ownerDocument)return!1;var r,t,o=n.ownerDocument;return j(L.fromDom(n)).fold(function(){return o.body.contains(n)},(r=Pe,t=B,function(e){return r(t(e))}))},Me=function(e,n){return E(e)?e.style.getPropertyValue(n):""},Ne=function(e,n,r,t){e.dom.removeEventListener(n,r,t)},He=f,We=function(r,t){return{left:r,top:t,translate:function(e,n){return We(r+e,t+n)}}},qe=We,Ie=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),je=tinymce.util.Tools.resolve("tinymce.Env"),Be=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ve="data-ephox-mobile-fullscreen-style",Xe="position:absolute!important;",_e="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",ze=je.os.isAndroid(),Ue=Ie.DOM,$e=K().fold(function(){return{bind:s,unbind:s}},function(n){var r,t=(r=p(s),T(T({},r),{on:function(e){return r.get().each(e)}})),o=w(),i=w(),u=Be.throttle(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0,window.requestAnimationFrame(function(){t.on(function(e){return z(e,{top:n.offsetTop+"px",left:n.offsetLeft+"px",height:n.height+"px",width:n.width+"px"})})})},50);return{bind:function(e){t.set(e),u(),o.set(G("resize",u)),i.set(G("scroll",u))},unbind:function(){t.on(function(){o.clear(),i.clear()}),t.clear()}}}),Ke=function(o,i){function u(n){n(w,"tox-fullscreen"),n(y,"tox-fullscreen"),n(b,"tox-fullscreen"),j(S).map(function(e){return B(e).dom}).each(function(e){n(e,"tox-fullscreen"),n(e,"tox-shadowhost")})}function e(){var r,e,n,t;F&&(r=o.dom,e="["+Ve+"]",D(1!==(n=t=document).nodeType&&9!==n.nodeType&&11!==n.nodeType||0===n.childElementCount?[]:C(t.querySelectorAll(e),L.fromDom),function(e){var n=X(e,Ve);"no-styles"!==n?z(e,r.parseStyle(n)):_(e,"style"),_(e,Ve)})),u(Ue.removeClass),$e.unbind(),A.from(i.get()).each(function(e){return e.fullscreenChangeHandler.unbind()})}var n,r,t,c,a,s,l,f,m,d,h,v,g,p,w=document.body,y=document.documentElement,b=o.getContainer(),S=L.fromDom(b),x=j(s=L.fromDom(o.getElement())).map(B).getOrThunk(function(){var e=I(s).dom.body;if(null==e)throw new Error("Body is not available yet");return L.fromDom(e)}),E=i.get(),O=L.fromDom(o.getBody()),F=je.deviceType.isTouch(),T=b.style,k=o.iframeElement.style;E?(E.fullscreenChangeHandler.unbind(),Q(o)&&Z(x)&&((c=I(x).dom).exitFullscreen?c.exitFullscreen():c.msExitFullscreen?c.msExitFullscreen():c.webkitCancelFullScreen&&c.webkitCancelFullScreen()),k.width=E.iframeWidth,k.height=E.iframeHeight,T.width=E.containerWidth,T.height=E.containerHeight,T.top=E.containerTop,T.left=E.containerLeft,e(),t=E.scrollPos,window.scrollTo(t.x,t.y),i.set(null),J(o,!1),o.off("remove",e)):(n=$(I(x),void 0!==document.fullscreenElement?"fullscreenchange":void 0!==document.msFullscreenElement?"MSFullscreenChange":void 0!==document.webkitFullscreenElement?"webkitfullscreenchange":"fullscreenchange",function(e){Q(o)&&(Z(x)||null===i.get()||Ke(o,i))}),r={scrollPos:(l=window,v=void 0===l?window:l,g=v.document,d=(m=void 0!==(f=L.fromDom(g))?f.dom:document).body.scrollLeft||m.documentElement.scrollLeft,h=m.body.scrollTop||m.documentElement.scrollTop,p=qe(d,h),K(v).fold(function(){var e=v.document.documentElement,n=e.clientWidth,r=e.clientHeight;return Y(p.left,p.top,n,r)},function(e){return Y(Math.max(e.pageLeft,p.left),Math.max(e.pageTop,p.top),e.width,e.height)})),containerWidth:T.width,containerHeight:T.height,containerTop:T.top,containerLeft:T.left,iframeWidth:k.width,iframeHeight:k.height,fullscreenChangeHandler:n},F&&ne(o.dom,S,O),k.width=k.height="100%",T.width=T.height="",u(Ue.addClass),$e.bind(S),o.on("remove",e),i.set(r),Q(o)&&((a=x.dom).requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.webkitRequestFullScreen&&a.webkitRequestFullScreen()),J(o,!0))};t.add("fullscreen",function(e){var n,r,t,o,i,u=a(null);return e.inline||(r=u,(n=e).addCommand("mceFullScreen",function(){Ke(n,r)}),(t=e).ui.registry.addToggleMenuItem("fullscreen",{text:"Fullscreen",icon:"fullscreen",shortcut:"Meta+Shift+F",onAction:c,onSetup:re(t,o=u)}),t.ui.registry.addToggleButton("fullscreen",{tooltip:"Fullscreen",icon:"fullscreen",onAction:c,onSetup:re(t,o)}),e.addShortcut("Meta+Shift+F","","mceFullScreen")),i=u,{isFullscreen:function(){return null!==i.get()}};function c(){return t.execCommand("mceFullScreen")}})}();js/tinymce/plugins/colorpicker/plugin.min.js000064400000000615151727150240015251 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){})}();js/tinymce/plugins/imagetools/plugin.min.js000064400000046005151727150240015103 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function c(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function h(e){return null!=e}function r(){}function i(e){return function(){return e}}function e(e){return e}function t(){return d}function s(e){return n=typeof(t=e),"array"==(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n);var t,n}var n,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(e){return typeof e===n},u=i(!(n="function")),l=i(!0),d={fold:function(e,t){return e()},isSome:u,isNone:l,getOr:e,getOrThunk:m,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:e,orThunk:m,map:t,each:r,bind:t,exists:u,forall:l,filter:function(){return d},toArray:function(){return[]},toString:i("none()")};function m(e){return e()}var g=function(n){function e(){return o}function t(e){return e(n)}var r=i(n),o={fold:function(e,t){return t(n)},isSome:l,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return g(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:d},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},p={some:g,none:t,from:function(e){return null==e?d:g(e)}},v={},y={exports:v};function w(e,t){return U(document.createElement("canvas"),e,t)}function b(e){var t=w(e.width,e.height);return R(t).drawImage(e,0,0),t}function _(u){return new I(function(e,t){function n(){o.removeEventListener("load",i),o.removeEventListener("error",a)}var r=URL.createObjectURL(u),o=new Image,i=function(){n(),e(o)},a=function(){n(),t("Unable to load data of type "+u.type+": "+r)};o.addEventListener("load",i),o.addEventListener("error",a),o.src=r,o.complete&&setTimeout(i,0)})}function E(e,r,o){return r=r||"image/png",a(HTMLCanvasElement.prototype.toBlob)?new I(function(t,n){e.toBlob(function(e){e?t(e):n()},r,o)}):j(e.toDataURL(r,o))}function T(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function x(e,t){return function(e,t,n){for(var r=0,o=e.length;r<o;r++){var i=e[r];if(t(i,r))return p.some(i);if(n(i,r))break}return p.none()}(e,t,u)}!function(){var e=this,t=function(){var e,t,n,r={exports:{}};function o(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(e,this)}function a(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var e,t=1===n._state?r.onFulfilled:r.onRejected;if(null!==t){try{e=t(n._value)}catch(e){return void c(r.promise,e)}u(r.promise,e)}else(1===n._state?u:c)(r.promise,n._value)})):n._deferreds.push(r)}function u(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l((r=n,o=e,function(){r.apply(o,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(e){c(t,e)}var r,o}function c(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)a(e,e._deferreds[t]);e._deferreds=null}function f(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,u(t,e))},function(e){n||(n=!0,c(t,e))})}catch(e){if(n)return;n=!0,c(t,e)}}e=r,t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=setTimeout,i.prototype.catch=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(o);return a(this,new f(e,t,n)),n},i.all=function(e){var u=Array.prototype.slice.call(e);return new i(function(o,i){if(0===u.length)return o([]);for(var a=u.length,e=0;e<u.length;e++)!function t(n,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var r=e.then;if("function"==typeof r)return r.call(e,function(e){t(n,e)},i),0}u[n]=e,0==--a&&o(u)}catch(e){i(e)}}(e,u[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof setImmediate?function(e){setImmediate(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},e.exports?e.exports=i:t.Promise||(t.Promise=i);var d=r.exports;return{boltExport:("undefined"!=typeof window?window:Function("return this;")()).Promise||d}};"object"==typeof v&&void 0!==y?y.exports=t():(e="undefined"!=typeof globalThis?globalThis:e||self).EphoxContactWrapper=t()}();var I=y.exports.boltExport,R=function(e){return e.getContext("2d")},U=function(e,t,n){return e.width=t,e.height=n,e},A=function(r){return new I(function(e,t){var n=new XMLHttpRequest;n.open("GET",r,!0),n.responseType="blob",n.onload=function(){200===this.status&&e(this.response)},n.onerror=function(){var e;t(0===this.status?((e=new Error("No access to download image")).code=18,e.name="SecurityError",e):new Error("Error "+this.status+" downloading image"))},n.send()})},j=function(h){return new I(function(e,t){!function(){var e=h.split(","),t=/data:([^;]+)/.exec(e[0]);if(!t)return p.none();for(var n=t[1],r=e[1],o=atob(r),i=o.length,a=Math.ceil(i/1024),u=new Array(a),c=0;c<a;++c){for(var s=1024*c,f=Math.min(1024+s,i),l=new Array(f-s),d=s,m=0;d<f;++m,++d)l[m]=o[d].charCodeAt(0);u[c]=new Uint8Array(l)}return p.some(new Blob(u,{type:n}))}().fold(function(){t("uri is not base64: "+h)},e)})},S=function(e){URL.revokeObjectURL(e.src)},M=_,P=Array.prototype.indexOf,O=Object.keys;function L(e,t,n){function r(t,n){return e.then(function(e){return e.toDataURL(t||"image/png",n)})}return{getType:i(t.type),toBlob:function(){return I.resolve(t)},toDataURL:i(n),toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(t,n){return e.then(function(e){return E(e,t,n)})},toAdjustedDataURL:r,toAdjustedBase64:function(e,t){return r(e,t).then(function(e){return e.split(",")[1]})},toCanvas:function(){return e.then(b)}}}function k(t,e){return E(t,e).then(function(e){return L(I.resolve(t),e,t.toDataURL())})}function C(e,t){void 0===t&&(t=2);var n=Math.pow(10,t),r=Math.round(e*n);return Math.ceil(r/n)}function F(t,n,r){return void 0===r&&(r=!1),new I(function(e){var a=new XMLHttpRequest;a.onreadystatechange=function(){4===a.readyState&&e({status:a.status,blob:a.response})},a.open("GET",t,!0),a.withCredentials=r,function(e){for(var t,n=O(e),r=0,o=n.length;r<o;r++){var i=n[r];t=e[i],a.setRequestHeader(i,t)}}(n),a.responseType="blob",a.send()})}function B(e){var t,n=(t=e,"ImageProxy HTTP error: "+x(J,function(e){return t===e.code}).fold(i("Unknown ImageProxy error"),function(e){return e.message}));return I.reject(n)}function N(t){return x(K,function(e){return e.type===t}).fold(i("Unknown service error"),function(e){return e.message})}function D(e){return"ImageProxy Service error: "+function(e){try{return p.some(JSON.parse(e))}catch(e){return p.none()}}(e).bind(function(e){return n=function(e,t){return h(e)?e[t]:void 0},r=e,T(["error","type"],function(e,t){r=n(r,e)}),t=r,p.from(t).map(N);var n,r,t}).getOr("Invalid JSON in service error message")}function H(e){return e<200||300<=e}function z(e,t){var n,r,o,i={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":t};return F((r=t,o=-1===(n=e).indexOf("?")?"?":"&",/[?&]apiKey=/.test(n)?n:n+o+"apiKey="+encodeURIComponent(r)),i).then(function(e){return H(e.status)?(t=e.status,"application/json"!==(null==(n=e.blob)?void 0:n.type)||400!==t&&403!==t&&404!==t&&500!==t?B(t):(r=n,new I(function(e,t){var n=new FileReader;n.onload=function(){e(n.result)},n.onerror=function(e){t(e)},n.readAsText(r)}).then(function(e){var t=D(e);return I.reject(t)}))):I.resolve(e.blob);var r,t,n})}function q(e,t,n){return void 0===n&&(n=!1),t?z(e,t):F(e,{},n).then(function(e){return H(e.status)?B(e.status):I.resolve(e.blob)})}function W(t){return n=t,new I(function(e){var t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)}).then(function(e){return L(_(t).then(function(e){S(e);var t=w(e.naturalWidth||e.width,e.naturalHeight||e.height);return R(t).drawImage(e,0,0),t}),t,e)});var n}!function(a){if(!s(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};T(a,function(e,r){var t=O(e);if(1!==t.length)throw new Error("one and only one name per case");var i=t[0],o=e[i];if(void 0!==n[i])throw new Error("duplicate key detected:"+i);if("cata"===i)throw new Error("cannot have a case named cata (sorry)");if(!s(o))throw new Error("case arguments must be an array");u.push(i),n[i]=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=n.length;if(t!==o.length)throw new Error("Wrong number of arguments to case "+i+". Expected "+o.length+" ("+o+"), got "+t);return{fold:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(e.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+e.length);return e[r].apply(null,n)},match:function(e){var o=O(e);if(u.length!==o.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+o.join(","));if(!function(e){for(var t,n=0,r=e.length;n<r;++n)if(!0!==(t=e[n],function(e,t){return-1<P.call(e,t)}(o,t)))return;return 1}(u))throw new Error("Not all branches were specified when using match. Specified: "+o.join(", ")+"\nRequired: "+u.join(", "));return e[i].apply(null,n)},log:function(e){console.log(e,{constructors:u,constructor:i,params:n})}}}})}([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);function $(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var V=function(e,t,n){var r=(n<0?360+n:n)*Math.PI/180,o=e.width,i=e.height,a=Math.sin(r),u=Math.cos(r),c=C(Math.abs(o*u)+Math.abs(i*a)),s=C(Math.abs(o*a)+Math.abs(i*u)),f=w(c,s),l=R(f);return l.translate(c/2,s/2),l.rotate(r),l.drawImage(e,-o/2,-i/2),k(f,t)},G=function(e,t,n){var r=w(e.width,e.height),o=R(r);return"v"===n?(o.scale(1,-1),o.drawImage(e,0,-r.height)):(o.scale(-1,1),o.drawImage(e,-r.width,0)),k(r,t)},J=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],K=[{type:"not_found",message:"Failed to load image."},{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],X={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return $(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return $(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return $(n)},fromDom:$,fromPoint:function(e,t,n){return p.from(e.dom.elementFromPoint(t,n)).map($)}};function Q(e){return e.getParam("imagetools_proxy")}function Y(e){function t(e){return/^[0-9\.]+px$/.test(e)}var n=e.style.width,r=e.style.height;return n||r?t(n)&&t(r)?{w:parseInt(n,10),h:parseInt(r,10)}:null:(n=e.width,r=e.height,n&&r?{w:parseInt(n,10),h:parseInt(r,10)}:null)}function Z(e){return{w:e.naturalWidth,h:e.naturalHeight}}function ee(e){return t=X.fromDom(e),n="img",r=function(r){return function(e){var t=r.dom;if(1!==t.nodeType)return!1;var n=t;if(void 0!==n.matches)return n.matches(e);if(void 0!==n.msMatchesSelector)return n.msMatchesSelector(e);if(void 0!==n.webkitMatchesSelector)return n.webkitMatchesSelector(e);if(void 0!==n.mozMatchesSelector)return n.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}(n)},x(t.dom.childNodes,function(e){return r(X.fromDom(e))}).map(X.fromDom);var t,n,r}function te(e,t){return e.dom.is(t,"figure")}function ne(e,t){return e.dom.is(t,"img:not([data-mce-object],[data-mce-placeholder])")}function re(t,e){function n(e){return ne(t,e)&&(be(t,e)||_e(t,e)||h(Q(t)))}return te(t,e)?ee(e).bind(function(e){return n(e.dom)?p.some(e.dom):p.none()}):n(e)?p.some(e):p.none()}function oe(e,t){e.notificationManager.open({text:t,type:"error"})}function ie(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return null!==n&&te(e,n)?ee(n):ne(e,t)?p.some(X.fromDom(t)):p.none()}function ae(e,t,n){var r=t.match(/(?:\/|^)(([^\/\?]+)\.(?:[a-z0-9.]+))(?:\?|$)/i);return h(r)?e.dom.encode(r[n]):null}function ue(e,t){if(_e(e,t))return q(t.src,null,(n=t,-1!==f.inArray(e.getParam("imagetools_credentials_hosts",[],"string[]"),new ye(n.src).host)));var n,r;if(be(e,t))return(0===(r=t.src).indexOf("data:")?j:A)(r);var o=Q(e);return q(o+(-1===o.indexOf("?")?"?":"&")+"url="+encodeURIComponent(t.src),e.getParam("api_key",e.getParam("imagetools_api_key","","string"),"string"),!1)}function ce(e,t){var n,r,o=e.editorUpload.blobCache.getByUri(t.src);return o?ve.resolve(o.blob()):(n=e,r=t,p.from(n.getParam("imagetools_fetch_image",null,"function")).fold(function(){return ue(n,r)},function(e){return e(r)}))}function se(e){pe.clearTimeout(e.get())}function fe(u,c,s,f,l,d,m){return s.toBlob().then(function(e){var t,n,o,r=u.editorUpload.blobCache,i=d.src,a=c.type===e.type;return u.getParam("images_reuse_filename",!1,"boolean")&&(n=h(o=r.getByUri(i))?(i=o.uri(),t=o.name(),o.filename()):(t=ae(u,i,2),ae(u,i,1))),o=r.create({id:"imagetools"+we++,blob:e,base64:s.toBase64(),uri:i,name:t,filename:a?n:void 0}),r.add(o),u.undoManager.transact(function(){var r=function(){var e,t,n;u.$(d).off("load",r),u.nodeChanged(),f?u.editorUpload.uploadImagesAuto():(se(l),e=u,t=l,n=pe.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},e.getParam("images_upload_timeout",3e4,"number")),t.set(n))};u.$(d).on("load",r),m&&u.$(d).attr({width:m.w,height:m.h}),u.$(d).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})}function le(r,o,e,i){return function(){return ie(r).fold(function(){oe(r,"Could not find selected image")},function(n){return r._scanForImages().then(function(){return ce(r,n.dom)}).then(function(t){return W(t).then(e).then(function(e){return fe(r,t,e,!1,o,n.dom,i)})}).catch(function(e){oe(r,e)})})}}function de(t,n,r){return function(){var e=ie(t).map(function(e){var t=Y(e.dom);return t?{w:t.h,h:t.w}:null}).getOrNull();return le(t,n,function(e){return n=r,(t=e).toCanvas().then(function(e){return V(e,t.getType(),n)});var t,n},e)()}}function me(e,t,r){return function(){return le(e,t,function(e){return n=r,(t=e).toCanvas().then(function(e){return G(e,t.getType(),n)});var t,n})()}}function he(s,f){return function(){var n=ie(s),i=n.map(function(e){return Z(e.dom)});n.each(function(t){re(s,t.dom).each(function(e){ce(s,t.dom).then(function(e){var t={blob:e,url:URL.createObjectURL(e)};s.windowManager.open({title:"Edit Image",size:"large",body:{type:"panel",items:[{type:"imagetools",name:"imagetools",label:"Edit Image",currentState:t}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,disabled:!0}],onSubmit:function(e){var o=e.getData().imagetools.blob;n.each(function(r){i.each(function(e){var t,n,a,u,c;t=s,n=f,a=r.dom,u=e,M(c=o).then(function(e){var t,n,r,o,i=Z(e);return u.w===i.w&&u.h===i.h||Y(a)&&(t=a,(n=i)&&(r=t.style.width,o=t.style.height,(r||o)&&(t.style.width=n.w+"px",t.style.height=n.h+"px",t.removeAttribute("data-mce-style")),r=t.width,o=t.height,(r||o)&&(t.setAttribute("width",String(n.w)),t.setAttribute("height",String(n.h))))),URL.revokeObjectURL(e.src),c}).then(W).then(function(e){return fe(t,c,e,!0,n,a)})})}),e.close()},onCancel:r,onAction:function(e,t){switch(t.name){case"save-state":t.value?e.enable("save"):e.disable("save");break;case"disable":e.disable("save"),e.disable("cancel");break;case"enable":e.enable("cancel")}}})})})})}}function ge(t){function n(e){return function(){return t.execCommand(e)}}function e(){return ie(t).exists(function(e){return re(t,e.dom).isSome()})}function r(t){function i(e){return t.setDisabled(!e)}return i(e()),o=o.concat([i]),function(){o=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var o=e[n];o!==i&&t.push(o)}return t}(o)}}var o=[];t.on("NodeChange",function(){var t=e();T(o,function(e){return e(t)})}),t.ui.registry.addButton("rotateleft",{tooltip:"Rotate counterclockwise",icon:"rotate-left",onAction:n("mceImageRotateLeft"),onSetup:r}),t.ui.registry.addButton("rotateright",{tooltip:"Rotate clockwise",icon:"rotate-right",onAction:n("mceImageRotateRight"),onSetup:r}),t.ui.registry.addButton("flipv",{tooltip:"Flip vertically",icon:"flip-vertically",onAction:n("mceImageFlipVertical"),onSetup:r}),t.ui.registry.addButton("fliph",{tooltip:"Flip horizontally",icon:"flip-horizontally",onAction:n("mceImageFlipHorizontal"),onSetup:r}),t.ui.registry.addButton("editimage",{tooltip:"Edit image",icon:"edit-image",onAction:n("mceEditImage"),onSetup:r}),t.ui.registry.addButton("imageoptions",{tooltip:"Image options",icon:"image",onAction:n("mceImage")}),t.ui.registry.addContextMenu("imagetools",{update:function(e){return re(t,e).map(function(e){return{text:"Edit image",icon:"edit-image",onAction:n("mceEditImage")}}).toArray()}})}"undefined"!=typeof window||Function("return this;")();var pe=tinymce.util.Tools.resolve("tinymce.util.Delay"),ve=tinymce.util.Tools.resolve("tinymce.util.Promise"),ye=tinymce.util.Tools.resolve("tinymce.util.URI"),we=0,be=function(e,t){var n=t.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new ye(n).host===e.documentBaseURI.host},_e=function(e,t){return-1!==f.inArray(e.getParam("imagetools_cors_hosts",[],"string[]"),new ye(t.src).host)};o.add("imagetools",function(e){var t,r,o,i,n=c(0),a=c(null),u=e;f.each({mceImageRotateLeft:de(u,n,-90),mceImageRotateRight:de(u,n,90),mceImageFlipVertical:me(u,n,"v"),mceImageFlipHorizontal:me(u,n,"h"),mceEditImage:he(u,n)},function(e,t){u.addCommand(t,e)}),ge(e),(t=e).ui.registry.addContextToolbar("imagetools",{items:t.getParam("imagetools_toolbar","rotateleft rotateright flipv fliph editimage imageoptions"),predicate:function(e){return re(t,e).isSome()},position:"node",scope:"node"}),o=n,i=a,(r=e).on("NodeChange",function(e){var t=i.get(),n=re(r,e.element);t&&!n.exists(function(e){return t.src===e.src})&&(se(o),r.editorUpload.uploadImagesAuto(),i.set(null)),n.each(i.set)})})}();js/tinymce/plugins/tabfocus/plugin.min.js000064400000003502151727150240014541 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function n(e){e.keyCode!==y.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),a=tinymce.util.Tools.resolve("tinymce.util.Delay"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),y=tinymce.util.Tools.resolve("tinymce.util.VK"),d=t.DOM;e.add("tabfocus",function(e){function t(l){var r,e,t,n,i;l.keyCode!==y.TAB||l.ctrlKey||l.altKey||l.metaKey||l.isDefaultPrevented()||(e=function(e){function t(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&s.get(l.id)&&-1!==e.tabIndex&&i(e)}var n=d.select(":input:enabled,*[tabindex]:not(iframe)"),i=function(e){return"BODY"===e.nodeName||"hidden"!==e.type&&"none"!==e.style.display&&"hidden"!==e.style.visibility&&i(e.parentNode)};if(c.each(n,function(e,t){if(e.id===u.id)return r=t,!1}),0<e){for(var o=r+1;o<n.length;o++)if(t(n[o]))return n[o]}else for(o=r-1;0<=o;o--)if(t(n[o]))return n[o];return null},1===(t=c.explode(u.getParam("tab_focus",u.getParam("tabfocus_elements",":prev,:next")))).length&&(t[1]=t[0],t[0]=":prev"),(n=l.shiftKey?":prev"===t[0]?e(-1):d.get(t[0]):":next"===t[1]?e(1):d.get(t[1]))&&(i=s.get(n.id||n.name),n.id&&i?i.focus():a.setTimeout(function(){o.webkit||window.focus(),n.focus()},10),l.preventDefault()))}var u;(u=e).on("init",function(){u.inline&&d.setAttrib(u.getBody(),"tabIndex",null),u.on("keyup",n),o.gecko?u.on("keypress keydown",t):u.on("keydown",t)})})}();js/tinymce/plugins/insertdatetime/plugin.min.js000064400000005700151727150240015756 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function l(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function s(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function r(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function d(e,t,n){return void 0===n&&(n=new Date),(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",r(n.getMonth()+1,2))).replace("%d",r(n.getDate(),2))).replace("%H",""+r(n.getHours(),2))).replace("%M",""+r(n.getMinutes(),2))).replace("%S",""+r(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(u[n.getMonth()]))).replace("%b",""+e.translate(o[n.getMonth()]))).replace("%A",""+e.translate(i[n.getDay()]))).replace("%a",""+e.translate(a[n.getDay()]))).replace("%%","%")}function p(e,t){var n,r,a,i,o,u;e.getParam("insertdatetime_element",!1)?(n=d(e,t),r=/%[HMSIp]/.test(t)?d(e,"%Y-%m-%dT%H:%M"):d(e,"%Y-%m-%d"),(a=e.dom.getParent(e.selection.getStart(),"time"))?(o=a,u=(i=e).dom.create("time",{datetime:r},n),o.parentNode.insertBefore(u,o),i.dom.remove(o),i.selection.select(u,!0),i.selection.collapse(!1)):e.insertContent('<time datetime="'+r+'">'+n+"</time>")):e.insertContent(d(e,t))}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),i="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),o="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),u="January February March April May June July August September October November December".split(" "),g=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("insertdatetime",function(e){var n,r,t,a,i,o,u,c;function m(e){return r.execCommand("mceInsertDate",!1,e)}(n=e).addCommand("mceInsertDate",function(e,t){p(n,null!=t?t:n.getParam("insertdatetime_dateformat",n.translate("%Y-%m-%d")))}),n.addCommand("mceInsertTime",function(e,t){p(n,null!=t?t:l(n))}),u=s(r=e),t=0<(o=s(i=r)).length?o[0]:l(i),a=t,c={get:function(){return a},set:function(e){a=e}},r.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===c.get()},fetch:function(e){e(g.map(u,function(e){return{type:"choiceitem",text:d(r,e),value:e}}))},onAction:function(e){m(c.get())},onItemAction:function(e,t){c.set(t),m(t)}}),r.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return g.map(u,function(e){return{type:"menuitem",text:d(r,e),onAction:(t=e,function(){c.set(t),m(t)})};var t})}})})}();js/tinymce/plugins/codesample/plugin.min.js000064400000136353151727150240015062 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function o(e){return function(){return e}}function e(e){return e}function n(){return l}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),s=o(!1),i=o(!0),l={fold:function(e,n){return e()},isSome:s,isNone:i,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:n,each:function(){},bind:n,exists:s,forall:i,filter:function(){return l},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function u(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")}function c(t){return function(e,n){return t(n)}}var d=function(t){function e(){return r}function n(e){return e(t)}var a=o(t),r={fold:function(e,n){return n(t)},isSome:i,isNone:s,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return d(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?r:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},p={some:d,none:n,from:function(e){return null==e?l:d(e)}},g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r="undefined"!=typeof window?window:Function("return this;")(),b={},m={exports:b},f={};function h(e){return r.Prism&&e.getParam("codesample_global_prismjs",!1,"boolean")?r.Prism:k}function y(e){var n=e.selection?e.selection.getNode():null;return u(n)?p.some(n):p.none()}function w(s){var t,e,n=s.getParam("codesample_languages")||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}],a=(0<(e=n).length?p.some(e[0]):p.none()).fold(o(""),function(e){return e.value}),r=(t=a,y(s).fold(function(){return t},function(e){var n=e.className.match(/language-(\w+)/);return n?n[1]:t})),i=y(s).fold(o(""),function(e){return e.textContent});s.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:n},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:r,code:i},onSubmit:function(e){var n=e.getData(),t=s,a=n.language,r=n.code;t.undoManager.transact(function(){var e=y(t);return r=g.DOM.encode(r),e.fold(function(){t.insertContent('<pre id="__new" class="language-'+a+'">'+r+"</pre>"),t.selection.select(t.$("#__new").removeAttr("id")[0])},function(e){t.dom.setAttrib(e,"class","language-"+a),e.innerHTML=r,h(t).highlightElement(e),t.selection.select(e)})}),e.close()}})}!function(e,n){var t,a,r=window.Prism;window.Prism={manual:!0},t=this,a=function(){var e,n,h,t,a,r,s,i,o,l,u="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:f,c={exports:{}};function y(e,n){return"___"+e.toUpperCase()+n+"___"}return e=c,n=function(u){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,e={},j={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof T?new T(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function t(e,a){var r,n;switch(a=a||{},j.util.type(e)){case"Object":if(n=j.util.objId(e),a[n])return a[n];for(var s in r={},a[n]=r,e)e.hasOwnProperty(s)&&(r[s]=t(e[s],a));return r;case"Array":return n=j.util.objId(e),a[n]||(r=[],a[n]=r,e.forEach(function(e,n){r[n]=t(e,a)}),r);default:return e}},getLanguage:function(e){for(;e;){var n=t.exec(e.className);if(n)return n[1].toLowerCase();e=e.parentElement}return"none"},setLanguage:function(e,n){e.className=e.className.replace(RegExp(t.source,"gi"),""),e.classList.add("language-"+n)},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var n=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(e.stack)||[])[1];if(n){var t,a=document.getElementsByTagName("script");for(t in a)if(a[t].src==n)return a[t]}return null}},isActive:function(e,n,t){for(var a="no-"+n;e;){var r=e.classList;if(r.contains(n))return!0;if(r.contains(a))return!1;e=e.parentElement}return!!t}},languages:{plain:e,plaintext:e,text:e,txt:e,extend:function(e,n){var t,a=j.util.clone(j.languages[e]);for(t in n)a[t]=n[t];return a},insertBefore:function(t,e,n,a){var r,s=(a=a||j.languages)[t],i={};for(r in s)if(s.hasOwnProperty(r)){if(r==e)for(var o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);n.hasOwnProperty(r)||(i[r]=s[r])}var l=a[t];return a[t]=i,j.languages.DFS(j.languages,function(e,n){n===l&&e!=t&&(this[e]=i)}),i},DFS:function e(n,t,a,r){r=r||{};var s,i,o,l=j.util.objId;for(s in n)n.hasOwnProperty(s)&&(t.call(n,s,n[s],a||s),i=n[s],"Object"!==(o=j.util.type(i))||r[l(i)]?"Array"!==o||r[l(i)]||(r[l(i)]=!0,e(i,t,s,r)):(r[l(i)]=!0,e(i,t,null,r)))}},plugins:{},highlightAll:function(e,n){j.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var a={callback:t,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};j.hooks.run("before-highlightall",a),a.elements=Array.prototype.slice.apply(a.container.querySelectorAll(a.selector)),j.hooks.run("before-all-elements-highlight",a);for(var r,s=0;r=a.elements[s++];)j.highlightElement(r,!0===n,a.callback)},highlightElement:function(e,n,t){var a=j.util.getLanguage(e),r=j.languages[a];j.util.setLanguage(e,a);var s=e.parentElement;s&&"pre"===s.nodeName.toLowerCase()&&j.util.setLanguage(s,a);var i,o={element:e,language:a,grammar:r,code:e.textContent};function l(e){o.highlightedCode=e,j.hooks.run("before-insert",o),o.element.innerHTML=o.highlightedCode,j.hooks.run("after-highlight",o),j.hooks.run("complete",o),t&&t.call(o.element)}if(j.hooks.run("before-sanity-check",o),(s=o.element.parentElement)&&"pre"===s.nodeName.toLowerCase()&&!s.hasAttribute("tabindex")&&s.setAttribute("tabindex","0"),!o.code)return j.hooks.run("complete",o),void(t&&t.call(o.element));j.hooks.run("before-highlight",o),o.grammar?n&&u.Worker?((i=new Worker(j.filename)).onmessage=function(e){l(e.data)},i.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))):l(j.highlight(o.code,o.grammar,o.language)):l(j.util.encode(o.code))},highlight:function(e,n,t){var a={code:e,grammar:n,language:t};if(j.hooks.run("before-tokenize",a),!a.grammar)throw new Error('The language "'+a.language+'" has no grammar.');return a.tokens=j.tokenize(a.code,a.grammar),j.hooks.run("after-tokenize",a),T.stringify(j.util.encode(a.tokens),a.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var a in t)n[a]=t[a];delete n.rest}var r=new s;return O(r,r.head,e),function e(n,t,a,r,s,i){for(var o in a)if(a.hasOwnProperty(o)&&a[o])for(var l=a[o],l=Array.isArray(l)?l:[l],u=0;u<l.length;++u){if(i&&i.cause==o+","+u)return;var c,d=l[u],p=d.inside,g=!!d.lookbehind,b=!!d.greedy,m=d.alias;b&&!d.pattern.global&&(c=d.pattern.toString().match(/[imsuy]*$/)[0],d.pattern=RegExp(d.pattern.source,c+"g"));for(var f=d.pattern||d,h=r.next,y=s;h!==t.tail&&!(i&&y>=i.reach);y+=h.value.length,h=h.next){var w=h.value;if(t.length>n.length)return;if(!(w instanceof T)){var k,v=1;if(b){if(!(k=B(f,y,n,g))||k.index>=n.length)break;var x=k.index,_=k.index+k[0].length,F=y;for(F+=h.value.length;F<=x;)F+=(h=h.next).value.length;if(y=F-=h.value.length,h.value instanceof T)continue;for(var S=h;S!==t.tail&&(F<_||"string"==typeof S.value);S=S.next)v++,F+=S.value.length;v--,w=n.slice(y,F),k.index-=y}else if(!(k=B(f,0,w,g)))continue;var x=k.index,A=k[0],P=w.slice(0,x),$=w.slice(x+A.length),z=y+w.length;i&&z>i.reach&&(i.reach=z);var E=h.prev;P&&(E=O(t,E,P),y+=P.length),function(e,n,t){for(var a=n.next,r=0;r<t&&a!==e.tail;r++)a=a.next;(n.next=a).prev=n,e.length-=r}(t,E,v);var C,h=O(t,E,new T(o,p?j.tokenize(A,p):A,m,A));$&&O(t,h,$),1<v&&(e(n,t,a,h.prev,y,C={cause:o+","+u,reach:z}),i&&C.reach>i.reach&&(i.reach=C.reach))}}}}(e,r,n,r.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(r)},hooks:{all:{},add:function(e,n){var t=j.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=j.hooks.all[e];if(t&&t.length)for(var a,r=0;a=t[r++];)a(n)}},Token:T};function T(e,n,t,a){this.type=e,this.content=n,this.alias=t,this.length=0|(a||"").length}function B(e,n,t,a){e.lastIndex=n;var r,s=e.exec(t);return s&&a&&s[1]&&(r=s[1].length,s.index+=r,s[0]=s[0].slice(r)),s}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function O(e,n,t){var a=n.next,r={value:t,prev:n,next:a};return n.next=r,a.prev=r,e.length++,r}if(u.Prism=j,T.stringify=function n(e,t){if("string"==typeof e)return e;if(Array.isArray(e)){var a="";return e.forEach(function(e){a+=n(e,t)}),a}var r={type:e.type,content:n(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t},s=e.alias;s&&(Array.isArray(s)?Array.prototype.push.apply(r.classes,s):r.classes.push(s)),j.hooks.run("wrap",r);var i,o="";for(i in r.attributes)o+=" "+i+'="'+(r.attributes[i]||"").replace(/"/g,"&quot;")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'"'+o+">"+r.content+"</"+r.tag+">"},!u.document)return u.addEventListener&&(j.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,a=n.code,r=n.immediateClose;u.postMessage(j.highlight(a,j.languages[t],t)),r&&u.close()},!1)),j;var a,r=j.util.currentScript();function i(){j.manual||j.highlightAll()}return r&&(j.filename=r.src,r.hasAttribute("data-manual")&&(j.manual=!0)),j.manual||("loading"===(a=document.readyState)||"interactive"===a&&r&&r.defer?document.addEventListener("DOMContentLoaded",i):window.requestAnimationFrame?window.requestAnimationFrame(i):window.setTimeout(i,16)),j}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{}),e.exports&&(e.exports=n),void 0!==u&&(u.Prism=n),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},h=Prism,Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,s){var i;a.language===r&&(i=a.tokenStack=[],a.code=a.code.replace(e,function(e){if("function"==typeof s&&!s(e))return e;for(var n,t=i.length;-1!==a.code.indexOf(n=y(r,t));)++t;return i[t]=e,n}),a.grammar=h.languages.markup)}},tokenizePlaceholders:{value:function(g,b){var m,f;g.language===b&&g.tokenStack&&(g.grammar=h.languages[b],m=0,f=Object.keys(g.tokenStack),function e(n){for(var t=0;t<n.length&&!(m>=f.length);t++){var a,r,s,i,o,l,u,c,d,p=n[t];"string"==typeof p||p.content&&"string"==typeof p.content?(a=f[m],r=g.tokenStack[a],s="string"==typeof p?p:p.content,i=y(b,a),-1<(o=s.indexOf(i))&&(++m,l=s.substring(0,o),u=new h.Token(b,h.tokenize(r,g.grammar),"language-"+b,r),c=s.substring(o+i.length),d=[],l&&d.push.apply(d,e([l])),d.push(u),c&&d.push.apply(d,e([c])),"string"==typeof p?n.splice.apply(n,[t,1].concat(d)):p.content=d)):p.content&&e(p.content)}return n}(g.tokens))}}}),Prism.languages.c=Prism.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),Prism.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},Prism.languages.c.string],char:Prism.languages.c.char,comment:Prism.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:Prism.languages.c}}}}),Prism.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete Prism.languages.c.boolean,t=Prism,a=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,r=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,function(){return a.source}),t.languages.cpp=t.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,function(){return a.source})),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:a,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),t.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,function(){return r})+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),t.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t.languages.cpp}}}}),t.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),t.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:t.languages.extend("cpp",{})}}),t.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},t.languages.cpp["base-clause"]),function(t){function a(e,t){return e.replace(/<<(\d+)>>/g,function(e,n){return"(?:"+t[+n]+")"})}function r(e,n,t){return RegExp(a(e,n),t||"")}function e(e,n){for(var t=0;t<n;t++)e=e.replace(/<<self>>/g,function(){return"(?:"+e+")"});return e.replace(/<<self>>/g,"[^\\s\\S]")}var n="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",s="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",o="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var u=l(s),c=RegExp(l(n+" "+s+" "+i+" "+o)),d=l(s+" "+i+" "+o),p=l(n+" "+s+" "+o),g=e(/<(?:[^<>;=+\-*/%&|^]|<<self>>)*>/.source,2),b=e(/\((?:[^()]|<<self>>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,f=a(/<<0>>(?:\s*<<1>>)?/.source,[m,g]),h=a(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,f]),y=/\[\s*(?:,\s*)*\]/.source,w=a(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[h,y]),k=a(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[g,b,y]),v=a(/\(<<0>>+(?:,<<0>>+)+\)/.source,[k]),x=a(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[v,h,y]),_={keyword:c,punctuation:/[<>()?,.:[\]]/},F=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,S=/"(?:\\.|[^\\"\r\n])*"/.source;t.languages.csharp=t.languages.extend("clike",{string:[{pattern:r(/(^|[^$\\])<<0>>/.source,[/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source]),lookbehind:!0,greedy:!0},{pattern:r(/(^|[^@$\\])<<0>>/.source,[S]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:r(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[h]),lookbehind:!0,inside:_},{pattern:r(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,x]),lookbehind:!0,inside:_},{pattern:r(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:r(/(\b<<0>>\s+)<<1>>/.source,[u,f]),lookbehind:!0,inside:_},{pattern:r(/(\bcatch\s*\(\s*)<<0>>/.source,[h]),lookbehind:!0,inside:_},{pattern:r(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:r(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[w]),lookbehind:!0,inside:_},{pattern:r(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,p,m]),inside:_}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),t.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),t.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:r(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),t.languages.insertBefore("csharp","class-name",{namespace:{pattern:r(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:r(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[b]),lookbehind:!0,alias:"class-name",inside:_},"return-type":{pattern:r(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,h]),inside:_,alias:"class-name"},"constructor-invocation":{pattern:r(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:_,alias:"class-name"},"generic-method":{pattern:r(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,g]),inside:{function:r(/^<<0>>/.source,[m]),generic:{pattern:RegExp(g),alias:"class-name",inside:_}}},"type-list":{pattern:r(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[u,f,m,x,c.source,b,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:r(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[f,b]),lookbehind:!0,greedy:!0,inside:t.languages.csharp},keyword:c,"class-name":{pattern:RegExp(x),greedy:!0,inside:_},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var A=S+"|"+F,P=a(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[A]),$=e(a(/[^"'/()]|<<0>>|\(<<self>>*\)/.source,[P]),2),z=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,E=a(/<<0>>(?:\s*\(<<1>>*\))?/.source,[h,$]);t.languages.insertBefore("csharp","class-name",{attribute:{pattern:r(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[z,E]),lookbehind:!0,greedy:!0,inside:{target:{pattern:r(/^<<0>>(?=\s*:)/.source,[z]),alias:"keyword"},"attribute-arguments":{pattern:r(/\(<<0>>*\)/.source,[$]),inside:t.languages.csharp},"class-name":{pattern:RegExp(h),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var C=/:[^}\r\n]+/.source,j=e(a(/[^"'/()]|<<0>>|\(<<self>>*\)/.source,[P]),2),T=a(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[j,C]),B=e(a(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<<self>>*\)/.source,[A]),2),O=a(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[B,C]);function R(e,n){return{interpolation:{pattern:r(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[e]),lookbehind:!0,inside:{"format-string":{pattern:r(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[n,C]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:t.languages.csharp}}},string:/[\s\S]+/}}t.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:r(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[T]),lookbehind:!0,greedy:!0,inside:R(T,j)},{pattern:r(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[O]),lookbehind:!0,greedy:!0,inside:R(O,B)}],char:{pattern:RegExp(F),greedy:!0}}),t.languages.dotnet=t.languages.cs=t.languages.csharp}(Prism),function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism),s=Prism,i=/\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/,o=/(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source,l={pattern:RegExp(/(^|[^\w.])/.source+o+/[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),lookbehind:!0,inside:{namespace:{pattern:/^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,inside:{punctuation:/\./}},punctuation:/\./}},s.languages.java=s.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,lookbehind:!0,greedy:!0},"class-name":[l,{pattern:RegExp(/(^|[^\w.])/.source+o+/[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),lookbehind:!0,inside:l.inside},{pattern:RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source+o+/[A-Z]\w*\b/.source),lookbehind:!0,inside:l.inside}],keyword:i,function:[s.languages.clike.function,{pattern:/(::\s*)[a-z_]\w*/,lookbehind:!0}],number:/\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,operator:{pattern:/(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,lookbehind:!0},constant:/\b[A-Z][A-Z_\d]+\b/}),s.languages.insertBefore("java","string",{"triple-quoted-string":{pattern:/"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,greedy:!0,alias:"string"},char:{pattern:/'(?:\\.|[^'\\\r\n]){1,6}'/,greedy:!0}}),s.languages.insertBefore("java","class-name",{annotation:{pattern:/(^|[^.])@\w+(?:\s*\.\s*\w+)*/,lookbehind:!0,alias:"punctuation"},generics:{pattern:/<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,inside:{"class-name":l,keyword:i,punctuation:/[<>(),.:]/,operator:/[?&|]/}},import:[{pattern:RegExp(/(\bimport\s+)/.source+o+/(?:[A-Z]\w*|\*)(?=\s*;)/.source),lookbehind:!0,inside:{namespace:l.inside.namespace,punctuation:/\./,operator:/\*/,"class-name":/\w+/}},{pattern:RegExp(/(\bimport\s+static\s+)/.source+o+/(?:\w+|\*)(?=\s*;)/.source),lookbehind:!0,alias:"static",inside:{namespace:l.inside.namespace,static:/\b\w+$/,punctuation:/\./,operator:/\*/,"class-name":/\w+/}}],namespace:{pattern:RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g,function(){return i.source})),lookbehind:!0,inside:{punctuation:/\./}}}),Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript,Prism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(e,n){var t={};t["language-"+n]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[n]},t.cdata=/^<!\[CDATA\[|\]\]>$/i;var a={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:t}};a["language-"+n]={pattern:/[\s\S]+/,inside:Prism.languages[n]};var r={};r[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,function(){return e}),"i"),lookbehind:!0,greedy:!0,inside:a},Prism.languages.insertBefore("markup","cdata",r)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(e,n){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:Prism.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml,function(n){var e=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],a=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,r=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;n.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"},"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:a,operator:r,punctuation:s};var i={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:n.languages.php},o=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:i}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:i}}];n.languages.insertBefore("php","variable",{string:o,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:o,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:a,operator:r,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),n.hooks.add("before-tokenize",function(e){/<\?/.test(e.code)&&n.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g)}),n.hooks.add("after-tokenize",function(e){n.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism),Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python,function(e){e.languages.ruby=e.languages.extend("clike",{comment:{pattern:/#.*|^=begin\s[\s\S]*?^=end/m,greedy:!0},"class-name":{pattern:/(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,operator:/\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,punctuation:/[(){}[\].,;]/}),e.languages.insertBefore("ruby","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}});var n={pattern:/((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,lookbehind:!0,inside:{content:{pattern:/^(#\{)[\s\S]+(?=\}$)/,lookbehind:!0,inside:e.languages.ruby},delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"}}};delete e.languages.ruby.function;var t="(?:"+[/([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,/\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,/\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,/\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,/<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source].join("|")+")",a=/(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;e.languages.insertBefore("ruby","keyword",{"regex-literal":[{pattern:RegExp(/%r/.source+t+/[egimnosux]{0,6}/.source),greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}},{pattern:/(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,lookbehind:!0,greedy:!0,inside:{interpolation:n,regex:/[\s\S]+/}}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:[{pattern:RegExp(/(^|[^:]):/.source+a),lookbehind:!0,greedy:!0},{pattern:RegExp(/([\r\n{(,][ \t]*)/.source+a+/(?=:(?!:))/.source),lookbehind:!0,greedy:!0}],"method-definition":{pattern:/(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,lookbehind:!0,inside:{function:/\b\w+$/,keyword:/^self\b/,"class-name":/^\w+/,punctuation:/\./}}}),e.languages.insertBefore("ruby","string",{"string-literal":[{pattern:RegExp(/%[qQiIwWs]?/.source+t),greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,greedy:!0,inside:{interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?/}},interpolation:n,string:/[\s\S]+/}},{pattern:/<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,inside:{symbol:/\b\w+/,punctuation:/^<<[-~]?'|'$/}},string:/[\s\S]+/}}],"command-literal":[{pattern:RegExp(/%x/.source+t),greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}},{pattern:/`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,greedy:!0,inside:{interpolation:n,command:{pattern:/[\s\S]+/,alias:"string"}}}]}),delete e.languages.ruby.string,e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,constant:/\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/}),e.languages.rb=e.languages.ruby}(Prism),{boltExport:c.exports}},"object"==typeof e&&void 0!==n?n.exports=a():(t="undefined"!=typeof globalThis?globalThis:t||self).EphoxContactWrapper=a();window.Prism;window.Prism=r}(b,m);var k=m.exports.boltExport;t.add("codesample",function(n){var t,r,a,s;function e(){return s.execCommand("codesample")}r=(t=n).$,t.on("PreProcess",function(e){r("pre[contenteditable=false]",e.node).filter(c(u)).each(function(e,n){var t=r(n),a=n.textContent;t.attr("class",r.trim(t.attr("class"))),t.removeAttr("contentEditable"),t.empty().append(r("<code></code>").each(function(){this.textContent=a}))})}),t.on("SetContent",function(){var e=r("pre").filter(c(u)).filter(function(e,n){return"false"!==n.contentEditable});e.length&&t.undoManager.transact(function(){e.each(function(e,n){r(n).find("br").each(function(e,n){n.parentNode.replaceChild(t.getDoc().createTextNode("\n"),n)}),n.contentEditable="false",n.innerHTML=t.dom.encode(n.textContent),h(t).highlightElement(n),n.className=r.trim(n.className)})})}),(s=n).ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:e,onSetup:function(t){function e(){var e,n;t.setActive((n=(e=s).selection.getStart(),e.dom.is(n,'pre[class*="language-"]')))}return s.on("NodeChange",e),function(){return s.off("NodeChange",e)}}}),s.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:e}),(a=n).addCommand("codesample",function(){var e=a.selection.getNode();a.selection.isCollapsed()||u(e)?w(a):a.formatter.toggle("code")}),n.on("dblclick",function(e){u(e.target)&&w(n)})})}();js/tinymce/plugins/nonbreaking/plugin.min.js000064400000002555151727150240015237 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function o(n,e){for(var a="",o=0;o<e;o++)a+=n;return a}function s(n,e){var a=n.getParam("nonbreaking_wrap",!0,"boolean")||n.plugins.visualchars?'<span class="'+(n.plugins.visualchars&&n.plugins.visualchars.isEnabled()?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap")+'" contenteditable="false">'+o("&nbsp;",e)+"</span>":o("&nbsp;",e);n.undoManager.transact(function(){return n.insertContent(a)})}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK");n.add("nonbreaking",function(n){var e,a,o,t,i;function r(){return a.execCommand("mceNonBreaking")}(e=n).addCommand("mceNonBreaking",function(){s(e,1)}),(a=n).ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:r}),a.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:r}),0<(i="boolean"==typeof(t=(o=n).getParam("nonbreaking_force_tab",0))?!0===t?3:0:t)&&o.on("keydown",function(n){n.keyCode!==c.TAB||n.isDefaultPrevented()||n.shiftKey||(n.preventDefault(),n.stopImmediatePropagation(),s(o,i))})})}();js/tinymce/plugins/table/plugin.min.js000064400000430166151727150240014034 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function e(r){return function(e){return t=typeof(n=e),(null===n?"null":"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t)===r;var n,t}}function n(n){return function(e){return typeof e===n}}function t(n){return function(e){return n===e}}function l(e){return!(null==e)}function E(){}function C(e){return function(){return e}}function S(e){return e}function r(e,n){return e===n}var T=e("string"),g=e("object"),a=e("array"),h=t(null),o=n("boolean"),u=t(void 0),c=n("function"),f=n("number");function P(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}function p(n){return function(e){return!n(e)}}function i(){return s}var v=C(!1),x=C(!0),s={fold:function(e,n){return e()},isSome:v,isNone:x,getOr:S,getOrThunk:m,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:C(null),getOrUndefined:C(void 0),or:S,orThunk:m,map:i,each:E,bind:i,exists:v,forall:x,filter:function(){return s},toArray:function(){return[]},toString:C("none()")};function m(e){return e()}function y(e,n){return-1<G.call(e,n)}function R(e,n){for(var t=0,r=e.length;t<r;t++)if(n(e[t],t))return!0;return!1}function D(e,n){for(var t=[],r=0;r<e;r++)t.push(n(r));return t}function O(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var u=e[o];r[o]=n(u,o)}return r}function A(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t)}function d(e,n){for(var t=[],r=[],o=0,u=e.length;o<u;o++){var i=e[o];(n(i,o)?t:r).push(i)}return{pass:t,fail:r}}function k(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var u=e[r];n(u,r)&&t.push(u)}return t}function I(e,r,o){return function(e){for(var n,t=e.length-1;0<=t;t--)n=e[t],o=r(o,n,t)}(e),o}function B(e,t,r){return A(e,function(e,n){r=t(r,e,n)}),r}function w(e,n){return function(e,n,t){for(var r=0,o=e.length;r<o;r++){var u=e[r];if(n(u,r))return q.some(u);if(t(u,r))break}return q.none()}(e,n,v)}function b(e,n){for(var t=0,r=e.length;t<r;t++)if(n(e[t],t))return q.some(t);return q.none()}function M(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!a(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);$.apply(n,e[t])}return n}function N(e,n){return M(O(e,n))}function z(e,n){for(var t=0,r=e.length;t<r;++t)if(!0!==n(e[t],t))return!1;return!0}function L(e,n){for(var t={},r=0,o=e.length;r<o;r++){var u=e[r];t[String(u)]=n(u,r)}return t}function _(e){return[e]}function W(e,n){return 0<=n&&n<e.length?q.some(e[n]):q.none()}function j(e){return W(e,0)}function F(e){return W(e,e.length-1)}function H(e,n){for(var t=0;t<e.length;t++){var r=n(e[t],t);if(r.isSome())return r}return q.none()}var V=function(t){function e(){return o}function n(e){return e(t)}var r=C(t),o={fold:function(e,n){return n(t)},isSome:x,isNone:v,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return V(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:s},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},q={some:V,none:i,from:function(e){return null==e?s:V(e)}},U=Array.prototype.slice,G=Array.prototype.indexOf,$=Array.prototype.push,K=function(){return(K=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)};function X(e,n,t){if(t||2===arguments.length)for(var r,o=0,u=n.length;o<u;o++)!r&&o in n||((r=r||Array.prototype.slice.call(n,0,o))[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))}function Y(t){var r,o=!1;return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return o||(o=!0,r=t.apply(null,e)),r}}function J(e,n){var t=String(n).toLowerCase();return w(e,function(e){return e.search(t)})}function Q(e,n,t){return""===n||e.length>=n.length&&e.substr(t,t+n.length)===n}function Z(e,n){return-1!==e.indexOf(n)}function ee(e,n){return Q(e,n,e.length-n.length)}function ne(e){return 0<e.length}function te(n){return function(e){return Z(e,n)}}function re(e){return window.matchMedia(e).matches}function oe(e,n){var t=e.dom;if(1!==t.nodeType)return!1;var r=t;if(void 0!==r.matches)return r.matches(n);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(n);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(n);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function ue(e){return 1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount}function ie(e,n){var t=void 0===n?document:n.dom;return ue(t)?q.none():q.from(t.querySelector(e)).map(Ve.fromDom)}function ce(e,n){return e.dom===n.dom}function le(e,n){return He().browser.isIE()?(t=e.dom,r=n.dom,o=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(t.compareDocumentPosition(r)&o)):(u=e.dom)!==(i=n.dom)&&u.contains(i);var t,r,o,u,i}function ae(e,n){for(var t=Ue(e),r=0,o=t.length;r<o;r++){var u=t[r];n(e[u],u)}}function fe(e,t){return $e(e,function(e,n){return{k:n,v:t(e,n)}})}function se(e,n){var t={},r=n,o=t,u=function(e,n){o[n]=e},i=E;return ae(e,function(e,n){(r(e,n)?u:i)(e,n)}),t}function me(e,t){var r=[];return ae(e,function(e,n){r.push(t(e,n))}),r}function de(e){return me(e,S)}function ge(e){return Ue(e).length}function pe(e,n){return Ke(e,n)?q.from(e[n]):q.none()}function be(e,n){return Ke(e,n)&&void 0!==e[n]&&null!==e[n]}function he(e,n,t){return{element:e,rowspan:n,colspan:t}}function ve(e,n,t){return{element:e,cells:n,section:t}}function we(e,n,t){return{element:e,isNew:n,isLocked:t}}function ye(e,n,t,r){return{element:e,cells:n,section:t,isNew:r}}function Ce(){return De(0,0)}function Se(e){function n(e){return function(){return t===e}}var t=e.current,r=e.version;return{current:t,version:r,isEdge:n("Edge"),isChrome:n("Chrome"),isIE:n("IE"),isOpera:n("Opera"),isFirefox:n(Me),isSafari:n("Safari")}}function Te(e){function n(e){return function(){return t===e}}var t=e.current,r=e.version;return{current:t,version:r,isWindows:n(Ne),isiOS:n("iOS"),isAndroid:n(ze),isOSX:n("OSX"),isLinux:n("Linux"),isSolaris:n(Le),isFreeBSD:n(_e),isChromeOS:n(We)}}function xe(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var Re,De=function(e,n){return{major:e,minor:n}},Oe={nu:De,detect:function(e,n){var t,r,o=String(n).toLowerCase();return 0===e.length?Ce():(r=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}}(e,t=o))?De(u(1),u(2)):{major:0,minor:0};function u(e){return Number(t.replace(r,"$"+e))}},unknown:Ce},Ae=function(e,n){return Q(e,n,0)},ke=(Re=/^\s+|\s+$/g,function(e){return e.replace(Re,"")}),Ie=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Be={browsers:C([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Z(e,"edge/")&&Z(e,"chrome")&&Z(e,"safari")&&Z(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ie],search:function(e){return Z(e,"chrome")&&!Z(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Z(e,"msie")||Z(e,"trident")}},{name:"Opera",versionRegexes:[Ie,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:te("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:te("firefox")},{name:"Safari",versionRegexes:[Ie,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Z(e,"safari")||Z(e,"mobile/"))&&Z(e,"applewebkit")}}]),oses:C([{name:"Windows",search:te("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Z(e,"iphone")||Z(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:te("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:te("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:te("linux"),versionRegexes:[]},{name:"Solaris",search:te("sunos"),versionRegexes:[]},{name:"FreeBSD",search:te("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:te("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},Me="Firefox",Ee=function(){return Se({current:void 0,version:Oe.unknown()})},Pe=Se,Ne=(C("Edge"),C("Chrome"),C("IE"),C("Opera"),C(Me),C("Safari"),"Windows"),ze="Android",Le="Solaris",_e="FreeBSD",We="ChromeOS",je=function(){return Te({current:void 0,version:Oe.unknown()})},Fe=Te,He=(C(Ne),C("iOS"),C(ze),C("Linux"),C("OSX"),C(Le),C(_e),C(We),Y(function(){return e=navigator.userAgent,n=q.from(navigator.userAgentData),t=re,p=Be.browsers(),b=Be.oses(),h=n.bind(function(e){return r=p,H(e.brands,function(n){var t=n.brand.toLowerCase();return w(r,function(e){var n;return t===(null===(n=e.brand)||void 0===n?void 0:n.toLowerCase())}).map(function(e){return{current:e.name,version:Oe.nu(parseInt(n.version,10),0)}})});var r}).orThunk(function(){return J(p,t=e).map(function(e){var n=Oe.detect(e.versionRegexes,t);return{current:e.name,version:n}});var t}).fold(Ee,Pe),v=J(b,r=e).map(function(e){var n=Oe.detect(e.versionRegexes,r);return{current:e.name,version:n}}).fold(je,Fe),{browser:h,os:v,deviceType:(u=h,i=e,c=t,l=(o=v).isiOS()&&!0===/ipad/i.test(i),a=o.isiOS()&&!l,s=(f=o.isiOS()||o.isAndroid())||c("(pointer:coarse)"),m=l||!a&&f&&c("(min-device-width:768px)"),d=a||f&&!m,g=u.isSafari()&&o.isiOS()&&!1===/safari/i.test(i),{isiPad:C(l),isiPhone:C(a),isTablet:C(m),isPhone:C(d),isTouch:C(s),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:C(g),isDesktop:C(!d&&!m&&!g)})};var e,n,t,r,o,u,i,c,l,a,f,s,m,d,g,p,b,h,v})),Ve={fromHtml:function(e,n){var t=(n||document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return xe(t.childNodes[0])},fromTag:function(e,n){var t=(n||document).createElement(e);return xe(t)},fromText:function(e,n){var t=(n||document).createTextNode(e);return xe(t)},fromDom:xe,fromPoint:function(e,n,t){return q.from(e.dom.elementFromPoint(n,t)).map(xe)}},qe=oe,Ue=Object.keys,Ge=Object.hasOwnProperty,$e=function(e,r){var o={};return ae(e,function(e,n){var t=r(e,n);o[t.k]=t.v}),o},Ke=function(e,n){return Ge.call(e,n)},Xe=["tfoot","thead","tbody","colgroup"];function Ye(e){return e.dom.nodeName.toLowerCase()}function Je(e){return e.dom.nodeType}function Qe(n){return function(e){return Je(e)===n}}function Ze(e){return 8===Je(e)||"#comment"===Ye(e)}function en(n){return function(e){return gn(e)&&Ye(e)===n}}function nn(e){return Ve.fromDom(e.dom.ownerDocument)}function tn(e){return bn(e)?e:nn(e)}function rn(e){return q.from(e.dom.parentNode).map(Ve.fromDom)}function on(e,n){for(var t=c(n)?n:v,r=e.dom,o=[];null!==r.parentNode&&void 0!==r.parentNode;){var u=r.parentNode,i=Ve.fromDom(u);if(o.push(i),!0===t(i))break;r=u}return o}function un(e){return q.from(e.dom.previousSibling).map(Ve.fromDom)}function cn(e){return q.from(e.dom.nextSibling).map(Ve.fromDom)}function ln(e){return O(e.dom.childNodes,Ve.fromDom)}function an(e,n){var t=e.dom.childNodes;return q.from(t[n]).map(Ve.fromDom)}function fn(e){return Ve.fromDom(e.dom.host)}function sn(e,n,t){return r=function(e){return oe(e,n)},k(on(e,t),r);var r}function mn(e,n){return t=function(e){return oe(e,n)},k(ln(e),t);var t}function dn(e,n){return ue(t=void 0===e?document:e.dom)?[]:O(t.querySelectorAll(n),Ve.fromDom);var t}"undefined"!=typeof window||Function("return this;")();var gn=Qe(1),pn=Qe(3),bn=Qe(9),hn=Qe(11),vn=c(Element.prototype.attachShadow)&&c(Node.prototype.getRootNode),wn=C(vn),yn=vn?function(e){return Ve.fromDom(e.dom.getRootNode())}:tn,Cn=function(e){return l(e.dom.shadowRoot)},Sn=function(e){var n=pn(e)?e.dom.parentNode:e.dom;if(null==n||null===n.ownerDocument)return!1;var t,r,o,u,i,c=n.ownerDocument;return o=Ve.fromDom(n),i=yn(o),(hn(u=i)&&l(u.dom.host)?q.some(i):q.none()).fold(function(){return c.body.contains(n)},(t=Sn,r=fn,function(e){return t(r(e))}))},Tn=function(e){var n=e.dom.body;if(null==n)throw new Error("Body is not available yet");return Ve.fromDom(n)},xn=function(e,n){var t=[];return A(ln(e),function(e){t=(t=n(e)?t.concat([e]):t).concat(xn(e,n))}),t};function Rn(e,n,t,r,o){return e(t,r)?q.some(t):c(o)&&o(t)?q.none():n(t,r,o)}function Dn(e,n,t){for(var r=e.dom,o=c(t)?t:v;r.parentNode;){var r=r.parentNode,u=Ve.fromDom(r);if(n(u))return q.some(u);if(o(u))break}return q.none()}function On(e,n,t){return Dn(e,function(e){return oe(e,n)},t)}function An(e,n){return t=function(e){return oe(e,n)},w(e.dom.childNodes,function(e){return t(Ve.fromDom(e))}).map(Ve.fromDom);var t}function kn(e,n){return ie(n,e)}function In(e,n,t){return Rn(oe,On,e,n,t)}function Bn(e,n,t){if(!(T(t)||o(t)||f(t)))throw console.error("Invalid call to Attribute.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}function Mn(e,n,t){Bn(e.dom,n,t)}function En(e,n){var t=e.dom;ae(n,function(e,n){Bn(t,n,e)})}function Pn(e,n){var t=e.dom.getAttribute(n);return null===t?void 0:t}function Nn(e,n){return q.from(Pn(e,n))}function zn(e){return B(e.dom.attributes,function(e,n){return e[n.name]=n.value,e},{})}function Ln(e,n,t){return void 0===t&&(t=r),e.exists(function(e){return t(e,n)})}function _n(e){for(var n=[],t=function(e){n.push(e)},r=0;r<e.length;r++)e[r].each(t);return n}function Wn(e,n,t){return e.isSome()&&n.isSome()?q.some(t(e.getOrDie(),n.getOrDie())):q.none()}function jn(e,n){return e?q.some(n):q.none()}function Fn(e){return void 0!==e.style&&c(e.style.getPropertyValue)}function Hn(e,n,t){if(!T(t))throw console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);Fn(e)&&e.style.setProperty(n,t)}function Vn(e,n,t){Hn(e.dom,n,t)}function qn(e,n){var t=e.dom;ae(n,function(e,n){Hn(t,n,e)})}function Un(e,n){var t=e.dom,r=window.getComputedStyle(t).getPropertyValue(n);return""!==r||Sn(e)?r:jt(t,n)}function Gn(e,n){var t=e.dom,r=jt(t,n);return q.from(r).filter(function(e){return 0<e.length})}function $n(e,n){var t,r=n;Fn(t=e.dom)&&t.style.removeProperty(r),Ln(Nn(e,"style").map(ke),"")&&Wt(e,"style")}function Kn(e,n,t){return void 0===t&&(t=0),Nn(e,n).map(function(e){return parseInt(e,10)}).getOr(t)}function Xn(e,n){return Kn(e,n,1)}function Yn(e){return en("col")(e)?1<Kn(e,"span",1):1<Xn(e,"colspan")}function Jn(e){return 1<Xn(e,"rowspan")}function Qn(e,n){return parseInt(Un(e,n),10)}function Zn(e,n){return Vt(e,n,x)}function et(e,n){return t=["td","th"],(o=void 0===(o=n)?v:n)(r=e)?q.none():y(t,Ye(r))?q.some(r):On(r,t.join(","),function(e){return oe(e,"table")||o(e)});var t,r,o}function nt(e){return Zn(e,"th,td")}function tt(e){return oe(e,"colgroup")?mn(e,"col"):N(qt(e),function(e){return mn(e,"col")})}function rt(e,n){return In(e,"table",n)}function ot(e){return Zn(e,"tr")}function ut(e,t){return O(e,function(e){if("colgroup"!==Ye(e))return ve(e,n=O(nt(e),function(e){return he(e,Kn(e,"rowspan",1),Kn(e,"colspan",1))}),t(e));var n=O(tt(e),function(e){return he(e,1,Kn(e,"span",1))});return ve(e,n,"colgroup")})}function it(e){return rn(e).map(function(e){var n=Ye(e);return y(Xe,n)?n:"tbody"}).getOr("tbody")}function ct(e){var n=ot(e);return ut(X(X([],qt(e),!0),n,!0),it)}function lt(e,n,t){var r=e.cells,o=r.slice(0,n),u=r.slice(n),i=o.concat(t).concat(u);return Ut(e,i)}function at(e,n,t){return lt(e,n,[t])}function ft(e,n,t){e.cells[n]=t}function st(e,n){return e.cells[n]}function mt(e,n){return st(e,n).element}function dt(e){return e.cells.length}function gt(e){var n=d(e,function(e){return"colgroup"===e.section});return{rows:n.fail,cols:n.pass}}function pt(e,n,t){var r=O(e.cells,t);return ye(n(e.element),r,e.section,!0)}function bt(e){return Nn(e,Gt).bind(function(e){return q.from(e.match(/\d+/g))}).map(function(e){return L(e,x)})}function ht(e){var n,t=me(B(gt(e).rows,function(t,e){return A(e.cells,function(e,n){e.isLocked&&(t[n]=!0)}),t},{}),function(e,n){return parseInt(n,10)});return(n=U.call(t,0)).sort(void 0),n}function vt(e){var l={},n=[],a=j(e).map(function(e){return e.element}).bind(rt).bind(bt).getOr({}),t=0,f=0,s=0,r=d(e,function(e){return"colgroup"===e.section}),o=r.pass;A(r.fail,function(e){var c=[];A(e.cells,function(e){for(var n=0;void 0!==l[s+","+n];)n++;for(var t=be(a,n.toString()),r={element:e.element,rowspan:e.rowspan,colspan:e.colspan,row:s,column:n,isLocked:t},o=0;o<e.colspan;o++)for(var u=0;u<e.rowspan;u++){var i=n+o;l[s+u+","+i]=r,f=Math.max(f,i+1)}c.push(r)}),t++,n.push(ve(e.element,c,e.section)),s++});var u=F(o).map(function(e){var o,u,n=(o={},u=0,A(e.cells,function(t){var r=t.colspan;D(r,function(e){var n=u+e;o[n]={element:t.element,colspan:r,column:n}}),u+=r}),o);return{colgroups:[{element:e.element,columns:de(n)}],columns:n}}).getOrThunk(function(){return{colgroups:[],columns:{}}}),i=u.columns,c=u.colgroups;return{grid:{rows:t,columns:f},access:l,all:n,columns:i,colgroups:c}}function wt(e,n){var t=n.column,r=n.column+n.colspan-1,o=n.row,u=n.row+n.rowspan-1;return t<=e.finishCol&&r>=e.startCol&&o<=e.finishRow&&u>=e.startRow}function yt(e,n){return n.column>=e.startCol&&n.column+n.colspan-1<=e.finishCol&&n.row>=e.startRow&&n.row+n.rowspan-1<=e.finishRow}function Ct(e,n,t){var r=$t.findItem(e,n,ce),o=$t.findItem(e,t,ce);return r.bind(function(r){return o.map(function(e){return n=r,t=e,{startRow:Math.min(n.row,t.row),startCol:Math.min(n.column,t.column),finishRow:Math.max(n.row+n.rowspan-1,t.row+t.rowspan-1),finishCol:Math.max(n.column+n.colspan-1,t.column+t.colspan-1)};var n,t})})}function St(n,e,t){return Ct(n,e,t).map(function(e){return O($t.filterItems(n,P(wt,e)),function(e){return e.element})})}function Tt(e,n){return $t.findItem(e,n,function(e,n){return le(n,e)}).map(function(e){return e.element})}function xt(e,n,t,r,o){var u=Kt(e),i=ce(e,t)?q.some(n):Tt(u,n),c=ce(e,o)?q.some(r):Tt(u,r);return i.bind(function(n){return c.bind(function(e){return St(u,n,e)})})}function Rt(n,t){rn(n).each(function(e){e.dom.insertBefore(t.dom,n.dom)})}function Dt(e,n){cn(e).fold(function(){rn(e).each(function(e){Xt(e,n)})},function(e){Rt(e,n)})}function Ot(n,t){an(n,0).fold(function(){Xt(n,t)},function(e){n.dom.insertBefore(t.dom,e.dom)})}function At(e,n){Rt(e,n),Xt(n,e)}function kt(t,r){A(r,function(e,n){Dt(0===n?t:r[n-1],e)})}function It(n,e){A(e,function(e){Xt(n,e)})}function Bt(e){e.dom.textContent="",A(ln(e),function(e){Yt(e)})}function Mt(e){var n,t=ln(e);0<t.length&&(n=e,A(t,function(e){Rt(n,e)})),Yt(e)}function Et(e){return Jt.get(e)}function Pt(e){return Jt.getOption(e)}function Nt(e,n){return Jt.set(e,n)}function zt(e,n){return k(N(e.all,function(e){return e.cells}),n)}var Lt,_t,Wt=function(e,n){e.dom.removeAttribute(n)},jt=function(e,n){return Fn(e)?e.style.getPropertyValue(n):""},Ft=C(10),Ht=C(10),Vt=function(e,n,t){return N(ln(e),function(e){return oe(e,n)?t(e)?[e]:[]:Vt(e,n,t)})},qt=function(e){return rt(e).fold(C([]),function(e){return mn(e,"colgroup")})},Ut=function(e,n){return ye(e.element,n,e.section,e.isNew)},Gt="data-snooker-locked-cols",$t={fromTable:function(e){return vt(ct(e))},generate:vt,getAt:function(e,n,t){return q.from(e.access[n+","+t])},findItem:function(e,n,t){var r=zt(e,function(e){return t(n,e.element)});return 0<r.length?q.some(r[0]):q.none()},filterItems:zt,justCells:function(e){return N(e.all,function(e){return e.cells})},justColumns:function(e){return de(e.columns)},hasColumns:function(e){return 0<Ue(e.columns).length},getColumnAt:function(e,n){return q.from(e.columns[n])}},Kt=$t.fromTable,Xt=function(e,n){e.dom.appendChild(n.dom)},Yt=function(e){var n=e.dom;null!==n.parentNode&&n.parentNode.removeChild(n)},Jt=(Lt=pn,{get:function(e){if(!Lt(e))throw new Error("Can only get text value of a text node");return _t(e).getOr("")},getOption:_t=function(e){return Lt(e)?q.from(e.dom.nodeValue):q.none()},set:function(e,n){if(!Lt(e))throw new Error("Can only set raw text value of a text node");e.dom.nodeValue=n}}),Qt=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function Zt(){return{up:C({selector:On,closest:In,predicate:Dn,all:on}),down:C({selector:dn,predicate:xn}),styles:C({get:Un,getRaw:Gn,set:Vn,remove:$n}),attrs:C({get:Pn,set:Mn,remove:Wt,copyTo:function(e,n){En(n,zn(e))}}),insert:C({before:Rt,after:Dt,afterAll:kt,append:Xt,appendAll:It,prepend:Ot,wrap:At}),remove:C({unwrap:Mt,remove:Yt}),create:C({nu:Ve.fromTag,clone:function(e){return Ve.fromDom(e.dom.cloneNode(!1))},text:Ve.fromText}),query:C({comparePosition:function(e,n){return e.dom.compareDocumentPosition(n.dom)},prevSibling:un,nextSibling:cn}),property:C({children:ln,name:Ye,parent:rn,document:function(e){return tn(e).dom},isText:pn,isComment:Ze,isElement:gn,isSpecial:function(e){return y(["script","noscript","iframe","noframes","noembed","title","style","textarea","xmp"],Ye(e))},getLanguage:function(e){return gn(e)?Nn(e,"lang"):q.none()},getText:Et,setText:Nt,isBoundary:function(e){return!!gn(e)&&("body"===Ye(e)||y(Qt,Ye(e)))},isEmptyTag:function(e){return!!gn(e)&&y(["br","img","hr","input"],Ye(e))},isNonEditable:function(e){return gn(e)&&"false"===Pn(e,"contenteditable")}}),eq:ce,is:qe}}function er(t,e){return Hr(qr,function(e,n){return t(n)},e)}function nr(e){return On(e,"table")}function tr(c,l,a){function f(n){return function(e){return void 0!==a&&a(e)||ce(e,n)}}return ce(c,l)?q.some({boxes:q.some([c]),start:c,finish:l}):nr(c).bind(function(i){return nr(l).bind(function(u){if(ce(i,u))return q.some({boxes:(r=c,o=l,St(Kt(i),r,o)),start:c,finish:l});if(le(i,u)){var e=0<(n=sn(l,"td,th",f(i))).length?n[n.length-1]:l;return q.some({boxes:xt(i,c,i,l,u),start:c,finish:e})}if(le(u,i)){var n,t=0<(n=sn(c,"td,th",f(u))).length?n[n.length-1]:c;return q.some({boxes:xt(u,c,i,l,u),start:c,finish:t})}return Vr(qr,c,l,void 0).shared.bind(function(e){return In(e,"table",a).bind(function(e){var n=sn(l,"td,th",f(e)),t=0<n.length?n[n.length-1]:l,r=sn(c,"td,th",f(e)),o=0<r.length?r[r.length-1]:c;return q.some({boxes:xt(e,c,i,l,u),start:o,finish:t})})});var r,o})})}function rr(e,n){var t=dn(e,n);return 0<t.length?q.some(t):q.none()}function or(e,n,r){return kn(e,n).bind(function(t){return kn(e,r).bind(function(n){return er(nr,[t,n]).map(function(e){return{first:t,last:n,table:e}})})})}function ur(e,r,o,u,n){return t=n,w(e,function(e){return oe(e,t)}).bind(function(e){return t=r,i=o,rt(n=e).bind(function(e){var r=Kt(e),o=t,u=i;return $t.findItem(r,n,ce).bind(function(e){var n=0<o?e.row+e.rowspan-1:e.row,t=0<u?e.column+e.colspan-1:e.column;return $t.getAt(r,n+o,t+u).map(function(e){return e.element})})}).bind(function(e){return t=u,On(n=e,"table").bind(function(e){return kn(e,t).bind(function(e){return tr(e,n).bind(function(n){return n.boxes.map(function(e){return{boxes:e,start:n.start,finish:n.finish}})})})});var n,t});var n,t,i});var t}function ir(o,e,n){return or(o,e,n).bind(function(c){function e(e){return ce(o,e)}var n="thead,tfoot,tbody,table",t=On(c.first,n,e),r=On(c.last,n,e);return t.bind(function(i){return r.bind(function(e){return ce(i,e)?(t=c.table,r=c.first,o=c.last,u=Kt(t),Ct(n=u,r,o).bind(function(e){return function(e,n){for(var t=!0,r=P(yt,n),o=n.startRow;o<=n.finishRow;o++)for(var u=n.startCol;u<=n.finishCol;u++)t=t&&$t.getAt(e,o,u).exists(r);return t?q.some(n):q.none()}(n,e)})):q.none();var n,t,r,o,u})})})}function cr(e,n,t,r){return e.fold(n,t,r)}function lr(e,n){return Ve.fromDom(e.dom.cloneNode(n))}function ar(e){return lr(e,!1)}function fr(e){return lr(e,!0)}function sr(e,n){var t=Ve.fromTag(n);return En(t,zn(e)),t}function mr(r,o){function e(e){var n=o(e);if(n<=0||null===n){var t=Un(e,r);return parseFloat(t)||0}return n}function u(o,e){return B(e,function(e,n){var t=Un(o,n),r=void 0===t?0:parseInt(t,10);return isNaN(r)?e:e+r},0)}return{set:function(e,n){if(!f(n)&&!n.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+n);var t=e.dom;Fn(t)&&(t.style[r]=n+"px")},get:e,getOuter:e,aggregate:u,max:function(e,n,t){var r=u(e,t);return r<n?n-r:0}}}function dr(){var e=He().browser;return e.isIE()||e.isEdge()}function gr(e,n,t){return r=Un(e,n),o=t,u=parseFloat(r),(isNaN(u)?q.none():q.some(u)).getOr(o);var r,o,u}function pr(e){return Un(e,"box-sizing")}function br(e,n,t,r){return n-gr(e,"padding-"+t,0)-gr(e,"padding-"+r,0)-gr(e,"border-"+t+"-width",0)-gr(e,"border-"+r+"-width",0)}function hr(e,n){var t=e.dom,r=t.getBoundingClientRect().width||t.offsetWidth;return"border-box"===n?r:br(e,r,"left","right")}function vr(e){return Jr.get(e)}function wr(e){return Jr.getOuter(e)}function yr(t,r){void 0===r&&(r=x);var e=t.grid,n=D(e.columns,S),o=D(e.rows,S);return O(n,function(n){return eo(function(){return N(o,function(e){return $t.getAt(t,e,n).filter(function(e){return e.column===n}).toArray()})},function(e){return 1===e.colspan&&r(e.element)},function(){return $t.getAt(t,0,n)})})}function Cr(t){var e=t.grid,n=D(e.rows,S),r=D(e.columns,S);return O(n,function(n){return eo(function(){return N(r,function(e){return $t.getAt(t,n,e).filter(function(e){return e.row===n}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.rowspan},function(){return $t.getAt(t,n,0)})})}function Sr(n,t){return function(e){return"rtl"===no(e)?t:n}}function Tr(e){return to.get(e)}function xr(e){return to.getOuter(e)}function Rr(e,n){return void 0!==e?e:void 0!==n?n:0}function Dr(e){var n=e.dom.ownerDocument,t=n.body,r=n.defaultView,o=n.documentElement;if(t===e.dom)return uo(t.offsetLeft,t.offsetTop);var u=Rr(null==r?void 0:r.pageYOffset,o.scrollTop),i=Rr(null==r?void 0:r.pageXOffset,o.scrollLeft),c=Rr(o.clientTop,t.clientTop),l=Rr(o.clientLeft,t.clientLeft);return io(e).translate(i-l,u-c)}function Or(e,n){return{row:e,y:n}}function Ar(e,n){return{col:e,x:n}}function kr(e){return Dr(e).left+wr(e)}function Ir(e){return Dr(e).left}function Br(e,n){return Ar(e,Ir(n))}function Mr(e,n){return Ar(e,kr(n))}function Er(e){return Dr(e).top}function Pr(e,n){return Or(e,Er(n))}function Nr(e,n){return Or(e,Er(n)+xr(n))}function zr(t,n,r){if(0===r.length)return[];var e=O(r.slice(1),function(e,n){return e.map(function(e){return t(n,e)})}),o=r[r.length-1].map(function(e){return n(r.length-1,e)});return e.concat([o])}function Lr(i){if(!a(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var c=[],t={};return A(i,function(e,r){var n=Ue(e);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],u=e[o];if(void 0!==t[o])throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!a(u))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(n!==u.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+u.length+" ("+u+"), got "+n);return{fold:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(e.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+e.length);return e[r].apply(null,t)},match:function(e){var n=Ue(e);if(c.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+n.join(","));if(!z(c,function(e){return y(n,e)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+c.join(", "));return e[o].apply(null,t)},log:function(e){console.log(e,{constructors:c,constructor:o,params:t})}}}}),t}var _r,Wr,jr,Fr=function(n,e,t){return e.bind(function(e){return t.filter(P(n.eq,e))})},Hr=function(e,n,t){return 0<t.length?(r=e,o=n,u=t[0],I(t.slice(1),function(e,n){var t=o(r,n);return Fr(r,e,t)},o(r,u))):q.none();var r,o,u},Vr=function(n,e,t,r){function o(n){return b(n,r).fold(function(){return n},function(e){return n.slice(0,e+1)})}void 0===r&&(r=v);var u=[e].concat(n.up().all(e)),i=[t].concat(n.up().all(t)),c=o(u),l=o(i),a=w(c,function(e){return R(l,P(n.eq,e))});return{firstpath:c,secondpath:l,shared:a}},qr=Zt(),Ur=rr,Gr=Lr([{none:[]},{multiple:["elements"]},{single:["element"]}]),$r=Gr.none,Kr=Gr.multiple,Xr=Gr.single,Yr=tinymce.util.Tools.resolve("tinymce.PluginManager"),Jr=mr("width",function(e){return e.dom.offsetWidth}),Qr=function(e){return hr(e,"content-box")},Zr=function(e){return dr()?hr(e,pr(e)):gr(e,"width",e.dom.offsetWidth)},eo=function(e,n,t){var r=e();return w(r,n).orThunk(function(){return q.from(r[0]).orThunk(t)}).map(function(e){return e.element})},no=function(e){return"rtl"===Un(e,"direction")?"rtl":"ltr"},to=mr("height",function(e){var n=e.dom;return Sn(e)?n.getBoundingClientRect().height:n.offsetHeight}),ro=function(e){return dr()?(t=pr(n=e),o=(r=n.dom).getBoundingClientRect().height||r.offsetHeight,"border-box"===t?o:br(n,o,"top","bottom")):gr(e,"height",e.dom.offsetHeight);var n,t,r,o},oo=function(t,r){return{left:t,top:r,translate:function(e,n){return oo(t+e,r+n)}}},uo=oo,io=function(e){var n,t=e.dom,r=t.ownerDocument.body;return r===t?uo(r.offsetLeft,r.offsetTop):Sn(e)?(n=t.getBoundingClientRect(),uo(n.left,n.top)):uo(0,0)},co={delta:S,positions:function(e){return zr(Pr,Nr,e)},edge:Er},lo=Sr({delta:S,edge:Ir,positions:function(e){return zr(Br,Mr,e)}},{delta:function(e){return-e},edge:kr,positions:function(e){return zr(Mr,Br,e)}}),ao={delta:function(e,n){return lo(n).delta(e,n)},positions:function(e,n){return lo(n).positions(e,n)},edge:function(e){return lo(e).edge(e)}},fo={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},so=(jr=["Infinity",(_r="[0-9]+")+"\\."+mo(_r)+mo(Wr="[eE][+-]?[0-9]+"),"\\."+_r+mo(Wr),_r+mo(Wr)].join("|"),new RegExp("^([+-]?(?:"+jr+"))(.*)$"));function mo(e){return"(?:"+e+")?"}function go(e,n,t){var r=q.from(e.dom.parentElement).map(Ve.fromDom).getOrThunk(function(){return Tn(nn(e))});return n(e)/t(r)*100}function po(e,n){Vn(e,"width",n+"px")}function bo(e,n){Vn(e,"width",n+"%")}function ho(e,n){Vn(e,"height",n+"px")}function vo(e){var n,t,r,o,u,i,c,l,a,f,s=ro(e)+"px";return s?(n=s,t=e,r=Tr,o=ho,f=parseFloat(n),ee(n,"%")&&"table"!==Ye(t)?(i=f,c=r,l=o,a=rt(u=t).map(function(e){var n=c(e);return Math.floor(i/100*n)}).getOr(i),l(u,a),a):f):Tr(e)}function wo(e,n){return Gn(e,n).orThunk(function(){return Nn(e,n).map(function(e){return e+"px"})})}function yo(e){return wo(e,"width")}function Co(e){return go(e,vr,Qr)}function So(e){return(jl(e)?vr:Zr)(e)}function To(e){return vo(n=e)/Xn(n,"rowspan");var n}function xo(e,n,t){Vn(e,"width",n+t)}function Ro(e){return go(e,vr,Qr)+"%"}function Do(e){return yo(e).getOrThunk(function(){return So(e)+"px"})}function Oo(e){return wo(e,"height").getOrThunk(function(){return To(e)+"px"})}function Ao(e,n,t,r,o,u){return e.filter(r).fold(function(){return u(function(t,r){if(r<0||r>=t.length-1)return q.none();var e=t[r].fold(function(){var e,n;return H((e=t.slice(0,r),(n=U.call(e,0)).reverse(),n),function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return q.some({value:e,delta:0})}),n=t[r+1].fold(function(){return H(t.slice(r+1),function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return q.some({value:e,delta:1})});return e.bind(function(t){return n.map(function(e){var n=e.delta+t.delta;return Math.abs(e.value-t.value)/n})})}(t,n))},function(e){return o(e)})}function ko(e,n,i,c){var l=yr(e),t=$t.hasColumns(e)?O($t.justColumns(e),function(e){return q.from(e.element)}):l,a=[q.some(ao.edge(n))].concat(O(ao.positions(l,n),function(e){return e.map(function(e){return e.x})})),f=p(Yn);return O(t,function(e,u){return Ao(e,u,a,f,function(e){return t=e,o=(r=He().browser).isChrome()||r.isFirefox(),!Hl(t)||o?i(e):Ao(null!=(n=l[u])?S(n):q.none(),u,a,f,function(e){return c(q.some(vr(e)))},c);var n,t,r,o},c)})}function Io(e){return e.map(function(e){return e+"px"}).getOr("")}function Bo(e,n,t){return ko(e,n,So,function(e){return e.getOrThunk(t.minCellWidth)})}function Mo(e,n,t,r,o){var u=Cr(e),i=[q.some(t.edge(n))].concat(O(t.positions(u,n),function(e){return e.map(function(e){return e.y})}));return O(u,function(e,n){return Ao(e,n,i,p(Jn),r,o)})}function Eo(e,n){return function(){return Sn(e)?n(e):parseFloat(Gn(e,"width").getOr("0"))}}function Po(r){var t=Eo(r,function(e){return parseFloat(Ro(e))}),n=Eo(r,vr);return{width:t,pixelWidth:n,getWidths:function(e,n){return t=n,ko(e,r,Co,function(e){return e.fold(function(){return t.minCellWidth()},function(e){return e/t.pixelWidth()*100})});var t},getCellDelta:function(e){return e/n()*100},singleColumnWidth:function(e,n){return[100-e]},minCellWidth:function(){return Ft()/n()*100},setElementWidth:bo,adjustTableWidth:function(e){var n=t();bo(r,n+e/100*n)},isRelative:!0,label:"percent"}}function No(t){var r=Eo(t,vr);return{width:r,pixelWidth:r,getWidths:function(e,n){return Bo(e,t,n)},getCellDelta:S,singleColumnWidth:function(e,n){return[Math.max(Ft(),e+n)-e]},minCellWidth:Ft,setElementWidth:po,adjustTableWidth:function(e){var n=r()+e;po(t,n)},isRelative:!1,label:"pixel"}}function zo(e,n){function t(e){return oe(e.element,n)}var u,r,i,c,l,a,f,s,o,m,d,g,p=fr(e),b=ct(p),h=Vl(e),v=$t.generate(b),w=(u=t,r=v.grid.columns,i=v.grid.rows,c=r,a=l=0,f=[],s=[],ae(v.access,function(e){var n,t,r,o;f.push(e),u(e)&&(s.push(e),t=(n=e.row)+e.rowspan-1,o=(r=e.column)+e.colspan-1,n<i?i=n:l<t&&(l=t),r<c?c=r:a<o&&(a=o))}),{minRow:i,minCol:c,maxRow:l,maxCol:a,allCells:f,selectedCells:s}),y="th:not("+n+"),td:not("+n+")";return A(Vt(p,"th,td",function(e){return oe(e,y)}),Yt),function(e,n,t,r){for(var o,u,i,c=n.grid.columns,l=n.grid.rows,a=0;a<l;a++)for(var f=!1,s=0;s<c;s++)a<t.minRow||a>t.maxRow||s<t.minCol||s>t.maxCol||($t.getAt(n,a,s).filter(r).isNone()?(o=f,0,u=e[a].element,i=Ve.fromTag("td"),Xt(i,Ve.fromTag("br")),(o?Xt:Ot)(u,i)):f=!0)}(b,v,w,t),o=p,m=w,d=v,g=function(e,n,t,r){if(0===r.minCol&&n.grid.columns===r.maxCol+1)return 0;var o=Bo(n,e,t),u=B(o,function(e,n){return e+n},0),i=B(o.slice(r.minCol,r.maxCol+1),function(e,n){return e+n},0)/u*t.pixelWidth()-t.pixelWidth();return t.getCellDelta(i)}(e,$t.fromTable(e),h,w),ae(d.columns,function(e){(e.column<m.minCol||e.column>m.maxCol)&&Yt(e.element)}),A(k(Zn(o,"tr"),function(e){return 0===e.dom.childElementCount}),Yt),m.minCol!==m.maxCol&&m.minRow!==m.maxRow||A(Zn(o,"th,td"),function(e){Wt(e,"rowspan"),Wt(e,"colspan")}),Wt(o,Gt),Wt(o,"data-snooker-col-series"),Vl(o).adjustTableWidth(g),p}function Lo(e){return"img"===Ye(e)?1:Pt(e).fold(function(){return ln(e).length},function(e){return e.length})}function _o(e){return Pt(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()||y(Gl,Ye(e))}function Wo(e){return o=_o,(u=function(e){for(var n=0;n<e.childNodes.length;n++){var t=Ve.fromDom(e.childNodes[n]);if(o(t))return q.some(t);var r=u(e.childNodes[n]);if(r.isSome())return r}return q.none()})(e.dom);var o,u}function jo(e){return $l(e,_o)}function Fo(n){return function(){var e=Ve.fromTag("td",n.dom);return Xt(e,Ve.fromTag("br",n.dom)),e}}function Ho(e){return function(){return Ve.fromTag("col",e.dom)}}function Vo(e){return function(){return Ve.fromTag("colgroup",e.dom)}}function qo(e){return function(){return Ve.fromTag("tr",e.dom)}}function Uo(e,n,t){var r,o,u=(It(o=sr(r=e,n),ln(fr(r))),o);return ae(t,function(e,n){null===e?Wt(u,n):Mn(u,n,e)}),u}function Go(e){return e}function $o(a,f,s){function m(e,n){var t=e.element.dom,r=n.dom;Fn(t)&&Fn(r)&&(r.style.cssText=t.style.cssText),$n(n,"height"),1!==e.colspan&&$n(n,"width")}return{col:function(e){var n=Ve.fromTag(Ye(e.element),f.dom);return m(e,n),a(e.element,n),n},colgroup:Vo(f),row:qo(f),cell:function(e){var n,t,r,o,u,i=Ve.fromTag(Ye(e.element),f.dom),c=s.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),l=0<c.length?(n=e.element,t=i,r=c,Wo(n).map(function(e){return I(sn(e,r.join(","),function(e){return ce(e,n)}),function(e,n){var t=ar(n);return Wt(t,"contenteditable"),Xt(e,t),t},t)}).getOr(t)):i;return Xt(l,Ve.fromTag("br")),m(e,i),o=e.element,u=i,ae(Kl,function(n,t){return Nn(o,t).filter(function(e){return y(n,e)}).each(function(e){return Mn(u,t,e)})}),a(e.element,i),i},replace:Uo,colGap:Ho(f),gap:Fo(f)}}function Ko(e){return{col:Ho(e),colgroup:Vo(e),row:qo(e),cell:Fo(e),replace:Go,colGap:Ho(e),gap:Fo(e)}}function Xo(e){return O(e,Ve.fromDom)}function Yo(e){return Ve.fromDom(e.getBody())}function Jo(e){return e.getBoundingClientRect().width}function Qo(e){return e.getBoundingClientRect().height}function Zo(n){return function(e){return ce(e,Yo(n))}}function eu(e){return/^\d+(\.\d+)?$/.test(e)?e+"px":e}function nu(e){function n(e){return Wt(e,"data-mce-style")}Wt(e,"data-mce-style"),A(nt(e),n),A(tt(e),n),A(ot(e),n)}function tu(e){return Ve.fromDom(e.selection.getStart())}function ru(e){return cr(e.get(),C([]),S,_)}function ou(e,n,t){return{element:t,mergable:(u=n,i=Xl,cr(e.get(),q.none,function(n){return n.length<=1?q.none():ir(u,i.firstSelectedSelector,i.lastSelectedSelector).map(function(e){return{bounds:e,cells:n}})},q.none)),unmergable:0<(o=ru(e)).length&&z(o,function(e){return r(e,"rowspan")||r(e,"colspan")})?q.some(o):q.none(),selection:ru(e)};function r(e,n){return Nn(e,n).exists(function(e){return 1<parseInt(e,10)})}var o,u,i}function uu(o){return function(e,n){var t,r=Ye(e);return In("col"===r||"colgroup"===r?rt(t=e).bind(function(e){return Ur(e,Xl.firstSelectedSelector)}).fold(C(t),function(e){return e[0]}):e,o,n)}}function iu(a,e,f){a.on("BeforeGetContent",function(t){!0===t.selection&&cr(e.get(),E,function(e){t.preventDefault(),rt(e[0]).map(function(e){var n=zo(e,"[data-mce-selected]");return nu(n),[n]}).each(function(e){var n;t.content="text"===t.format?O(e,function(e){return e.dom.innerText}).join(""):(n=a,O(e,function(e){return n.selection.serializer.serialize(e.dom,{})}).join(""))})},E)}),a.on("BeforeSetContent",function(l){!0===l.selection&&!0===l.paste&&j(Ql(e)).each(function(c){rt(c).each(function(e){var n,t,r,o,u=k((n=l.content,(t=document.createElement("div")).innerHTML=n,ln(Ve.fromDom(t))),function(e){return"meta"!==Ye(e)}),i=en("table");1===u.length&&i(u[0])&&(l.preventDefault(),r=Ko(Ve.fromDom(a.getDoc())),o={element:c,clipboard:u[0],generators:r},f.pasteCells(e,o).each(function(){a.focus()}))})})})}function cu(e,n,t){for(var r=0,o=e;o<n;o++)r+=void 0!==t[o]?t[o]:0;return r}function lu(e,n,t){var r,o,u,i;A((r=e,o=n,$t.hasColumns(r)?(i=o,O($t.justColumns(r),function(e,n){return{element:e.element,width:i[n],colspan:e.colspan}})):(u=o,O($t.justCells(r),function(e){var n=cu(e.column,e.column+e.colspan,u);return{element:e.element,width:n,colspan:e.colspan}}))),function(e){t.setElementWidth(e.element,e.width)})}function au(e,n,t,r,o){var u,i,c,l,a,f,s,m,d,g,p=$t.fromTable(e),b=o.getCellDelta(n),h=o.getWidths(p,o),v=t===p.grid.columns-1,w=r.clampTableDelta(h,t,b,o.minCellWidth(),v),y=(i=t,c=w,l=o,a=r,m=(u=h).slice(0),s=i,d=0===(f=u).length?ea.none():1===f.length?ea.only(0):0===s?ea.left(0,1):s===f.length-1?ea.right(s-1,s):0<s&&s<f.length-1?ea.middle(s-1,s,s+1):ea.none(),g=C(O(m,C(0))),d.fold(g,function(e){return l.singleColumnWidth(m[e],c)},function(e,n){return a.calcLeftEdgeDeltas(m,e,n,c,l.minCellWidth(),l.isRelative)},function(e,n,t){return a.calcMiddleDeltas(m,e,n,t,c,l.minCellWidth(),l.isRelative)},function(e,n){return a.calcRightEdgeDeltas(m,e,n,c,l.minCellWidth(),l.isRelative)}));lu(p,O(y,function(e,n){return e+h[n]}),o),r.resizeTable(o.adjustTableWidth,w,v)}function fu(e){return O(e,C(0))}function su(e,n,t,r,o){return o(e.slice(0,n)).concat(r).concat(o(e.slice(t)))}function mu(i){return function(e,n,t,r){if(i(t)){var o=Math.max(r,e[n]-Math.abs(t)),u=Math.abs(o-e[n]);return 0<=t?u:-u}return t}}function du(){function f(e,t,n,r){var o=(100+n)/100,u=Math.max(r,(e[t]+n)/o);return O(e,function(e,n){return(n===t?u:e/o)-e})}function c(e,n,t,r,o,u){return u?f(e,n,r,o):(l=t,a=na(i=e,c=n,r,o),su(i,c,l+1,[a,0],fu));var i,c,l,a}return{resizeTable:function(e,n){return e(n)},clampTableDelta:na,calcLeftEdgeDeltas:c,calcMiddleDeltas:function(e,n,t,r,o,u,i){return c(e,t,r,o,u,i)},calcRightEdgeDeltas:function(e,n,t,r,o,u){if(u)return f(e,t,r,o);var i=na(e,t,r,o);return fu(e.slice(0,t)).concat([i])},calcRedestributedWidths:function(e,n,t,r){if(r){var o=(n+t)/n,u=O(e,function(e){return e/o});return{delta:100*o-100,newSizes:u}}return{delta:t,newSizes:e}}}}function gu(){function i(e,n,t,r,o){var u=ta(e,0<=r?t:n,r,o);return su(e,n,t+1,[u,-u],fu)}return{resizeTable:function(e,n,t){t&&e(n)},clampTableDelta:function(e,n,t,r,o){if(o){if(0<=t)return t;var u=B(e,function(e,n){return e+n-r},0);return Math.max(-u,t)}return na(e,n,t,r)},calcLeftEdgeDeltas:i,calcMiddleDeltas:function(e,n,t,r,o,u){return i(e,t,r,o,u)},calcRightEdgeDeltas:function(e,n,t,r,o,u){return u?fu(e):O(e,C(r/e.length))},calcRedestributedWidths:function(e,n,t,r){return{delta:0,newSizes:e}}}}function pu(e,n,t){var r=t.substring(0,t.length-e.length),o=parseFloat(r);return r===o.toString()?n(o):ra.invalid(t)}function bu(e,n,t){var r,o,u,i,c=oa.from(t),l=z(e,function(e){return"0px"===e})?(r=e.length,o=c.fold(function(){return C("")},function(e){return C(e/r+"px")},function(){return C(100/r+"%")}),D(r,o)):(u=e,i=n,c.fold(function(){return u},function(e){return t=(n=e)/i,O(u,function(e){return oa.from(e).fold(function(){return e},function(e){return e*t+"px"},function(e){return e/100*n+"px"})});var n,t},function(e){return n=i,O(u,function(e){return oa.from(e).fold(function(){return e},function(e){return e/n*100+"%"},function(e){return e+"%"})});var n}));return ua(l)}function hu(e,n){return 0===e.length?n:I(e,function(e,n){return oa.from(n).fold(C(0),S,S)+e},0)}function vu(e){return ia(e).fold(C("px"),C("px"),C("%"))}function wu(l,e,n){var a=$t.fromTable(l),i=a.all,f=$t.justCells(a),s=$t.justColumns(a);e.each(function(e){var t,r,o,u,n=vu(e),i=vr(l),c=bu(ko(a,l,Do,Io),i,e);$t.hasColumns(a)?(o=c,u=n,A(s,function(e,n){var t=hu([o[n]],Ft());Vn(e.element,"width",t+u)})):(t=c,r=n,A(f,function(e){var n=hu(t.slice(e.column,e.colspan+e.column),Ft());Vn(e.element,"width",n+r)})),Vn(l,"width",e)}),n.each(function(e){var n=vu(e),t=Tr(l),r=bu(Mo(a,l,co,Oo,Io),t,e),o=i,u=n;A(f,function(e){var n=hu(r.slice(e.row,e.rowspan+e.row),Ht());Vn(e.element,"height",n+u)}),A(o,function(e,n){Vn(e.element,"height",r[n])}),Vn(l,"height",e)})}function yu(e){return $t.fromTable(e).grid}function Cu(n){var o=[];return{bind:function(e){if(void 0===e)throw new Error("Event bind error: undefined handler");o.push(e)},unbind:function(n){o=k(o,function(e){return e!==n})},trigger:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var r={};A(n,function(e,n){r[e]=t[n]}),A(o,function(e){e(r)})}}}function Su(e){return{registry:fe(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:fe(e,function(e){return e.trigger})}}function Tu(e){return e.slice(0).sort()}function xu(n,e){var t=k(e,function(e){return!y(n,e)});0<t.length&&function(){throw new Error("Unsupported keys for object: "+Tu(t).join(", "))}()}function Ru(e){return function(r,o,u){if(0===o.length)throw new Error("You must specify at least one required field.");var t;return function(n,e){if(!a(e))throw new Error("The "+n+" fields must be an array. Was: "+e+".");A(e,function(e){if(!T(e))throw new Error("The value "+e+" in the "+n+" fields was not a string.")})}("required",o),w(t=Tu(o),function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")}),function(n){var t=Ue(n);z(o,function(e){return y(t,e)})||function(e,n){throw new Error("All required keys ("+Tu(e).join(", ")+") were not specified. Specified keys were: "+Tu(n).join(", ")+".")}(o,t),r(o,t);var e=k(o,function(e){return!u.validate(n[e],e)});return 0<e.length&&function(e,n){throw new Error("All values need to be of type: "+n+". Keys ("+Tu(e).join(", ")+") were not.")}(e,u.label),n}}(xu,e,{validate:c,label:"function"})}function Du(){var u,i,e={onEvent:E,reset:E,events:Su({move:Cu(["info"])}).registry},n=(u=q.none(),{onEvent:function(e,o){o.extract(e).each(function(e){var n=o,t=e,r=u.map(function(e){return n.compare(e,t)});u=q.some(t),r.each(function(e){i.trigger.move(e)})})},reset:function(){u=q.none()},events:(i=Su({move:Cu(["info"])})).registry}),t=e;return{on:function(){t.reset(),t=n},off:function(){t.reset(),t=e},isOn:function(){return t===n},onEvent:function(e,n){t.onEvent(e,n)},events:n.events}}function Ou(e){function n(){return e.stopPropagation()}function t(){return e.preventDefault()}var r,o,u=Ve.fromDom(function(e){if(wn()&&l(e.target)){var n=Ve.fromDom(e.target);if(gn(n)&&Cn(n)&&e.composed&&e.composedPath){var t=e.composedPath();if(t)return j(t)}}return q.from(e.target)}(e).getOr(e.target)),i=(r=t,o=n,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return r(o.apply(null,e))});return{target:u,x:e.clientX,y:e.clientY,stop:n,prevent:t,kill:i,raw:e}}function Au(e,n,t){return o=n,u=!1,i=sa,c=t,l=function(e){i(e)&&c(Ou(e))},(r=e).dom.addEventListener(o,l,u),{unbind:P(fa,r,o,l,u)};var r,o,u,i,c,l}function ku(e){return void 0!==e.dom.classList}function Iu(e,n){return o=n,Mn(e,t="class",(void 0===(r=Pn(e,t))||""===r?[]:r.split(" ")).concat([o]).join(" ")),1;var t,r,o}function Bu(e,n){ku(e)?e.dom.classList.add(n):Iu(e,n)}function Mu(e,n){return ku(e)&&e.dom.classList.contains(n)}function Eu(e){var n=e.replace(/\./g,"-");return{resolve:function(e){return n+"-"+e}}}function Pu(e){return In(e,"[contenteditable]")}function Nu(e,n){return void 0===n&&(n=!1),!He().browser.isIE()&&Sn(e)?e.dom.isContentEditable:Pu(e).fold(C(n),function(e){return"true"===pa(e)})}function zu(e){A(dn(e.parent(),"."+ha),Yt)}function Lu(t,e,r){var o=t.origin();A(e,function(e){e.each(function(e){var n=r(o,e);Bu(n,ha),Xt(t.parent(),n)})})}function _u(e,n,t,r,o){var u,i,c,l,a,f=Dr(t),s=n.isResizable,m=0<r.length?co.positions(r,t):[],d=0<m.length?(u=s,N(e.all,function(e,n){return u(e.element)?[n]:[]})):[],g=k(m,function(e,n){return R(d,function(e){return n===e})});i=n,c=g,l=f,a=wr(t),Lu(i,c,function(e,n){var t,r,o,u,i,c=(t=n.row,r=l.left-e.left,o=n.y-e.top,u=a,qn(i=Ve.fromTag("div"),{position:"absolute",left:r+"px",top:o-3.5+"px",height:"7px",width:u+"px"}),En(i,{"data-row":t,role:"presentation"}),i);return Bu(c,va),c});var p,b,h,v,w,y,C,S=0<o.length?ao.positions(o,t):[],T=0<S.length?(b=s,h=[],D((p=e).grid.columns,function(e){$t.getColumnAt(p,e).map(function(e){return e.element}).forall(b)&&h.push(e)}),k(h,function(n){return z($t.filterItems(p,function(e){return e.column===n}),function(e){return b(e.element)})})):[],x=k(S,function(e,n){return R(T,function(e){return n===e})});v=n,w=x,y=f,C=xr(t),Lu(v,w,function(e,n){var t,r,o,u,i,c=(t=n.col,r=n.x-e.left,o=y.top-e.top,u=C,qn(i=Ve.fromTag("div"),{position:"absolute",left:r-3.5+"px",top:o+"px",height:u+"px",width:"7px"}),En(i,{"data-column":t,role:"presentation"}),i);return Bu(c,wa),c})}function Wu(e,n){var t;zu(e),e.isResizable(n)&&_u(t=$t.fromTable(n),e,n,Cr(t),yr(t))}function ju(e,n){A(dn(e.parent(),"."+ha),n)}function Fu(e){ju(e,function(e){Vn(e,"display","none")})}function Hu(e){ju(e,function(e){Vn(e,"display","block")})}function Vu(o){function e(e,n){return q.from(Pn(e,n))}var n,t,r,u,i,c,l=(u=Su({drag:Cu(["xDelta","yDelta","target"])}),i=q.none(),(c={mutate:function(e,n){r.trigger.drag(e,n)},events:(r=Su({drag:Cu(["xDelta","yDelta"])})).registry}).events.drag.bind(function(n){i.each(function(e){u.trigger.drag(n.xDelta,n.yDelta,e)})}),{assign:function(e){i=q.some(e)},get:function(){return i},mutate:c.mutate,events:u.registry}),a=(t=void 0!==(n={}).mode?n.mode:ga,function(n,t,e){function r(){m.stop(),l.isOn()&&(l.off(),c.trigger.stop())}var o,u,i=!1,c=Su({start:Cu([]),stop:Cu([])}),l=Du(),a=(o=r,u=null,{cancel:f,throttle:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];f(),u=setTimeout(function(){u=null,o.apply(null,e)},200)}});function f(){h(u)||(clearTimeout(u),u=null)}function s(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];i&&t.apply(null,e)}}l.events.move.bind(function(e){t.mutate(n,e.info)});var m=t.sink(aa({forceDrop:r,drop:s(r),move:s(function(e){a.cancel(),l.onEvent(e,t)}),delayDrop:s(a.throttle)}),e);return{element:m.element,go:function(e){m.start(e),l.on(),c.trigger.start()},on:function(){i=!0},off:function(){i=!1},destroy:function(){m.destroy()},events:c.registry}}(l,t,n)),f=q.none();function s(e,n){return Qn(e,n)-Kn(e,"data-initial-"+n,0)}function m(e,n){b.trigger.startAdjust(),l.assign(e),Mn(e,"data-initial-"+n,Qn(e,n)),Bu(e,ya),Vn(e,"opacity","0.2"),a.go(o.parent())}function d(e){return ce(e,o.view())}l.events.drag.bind(function(t){e(t.target,"data-row").each(function(e){var n=Qn(t.target,"top");Vn(t.target,"top",n+t.yDelta+"px")}),e(t.target,"data-column").each(function(e){var n=Qn(t.target,"left");Vn(t.target,"left",n+t.xDelta+"px")})}),a.events.stop.bind(function(){l.get().each(function(r){f.each(function(t){e(r,"data-row").each(function(e){var n=s(r,"top");Wt(r,"data-initial-top"),b.trigger.adjustHeight(t,n,parseInt(e,10))}),e(r,"data-column").each(function(e){var n=s(r,"left");Wt(r,"data-initial-left"),b.trigger.adjustWidth(t,n,parseInt(e,10))}),Wu(o,t)})})});var g=Au(o.parent(),"mousedown",function(e){Mu(e.target,va)&&m(e.target,"top"),Mu(e.target,wa)&&m(e.target,"left")}),p=Au(o.view(),"mouseover",function(e){In(e.target,"table",d).filter(Nu).fold(function(){Sn(e.target)&&zu(o)},function(e){f=q.some(e),Wu(o,e)})}),b=Su({adjustHeight:Cu(["table","delta","row"]),adjustWidth:Cu(["table","delta","column"]),startAdjust:Cu([])});return{destroy:function(){g.unbind(),p.unbind(),a.destroy(),zu(o)},refresh:function(e){Wu(o,e)},on:a.on,off:a.off,hideBars:P(Fu,o),showBars:P(Hu,o),events:b.registry}}function qu(e,n){return e.fire("newrow",{node:n})}function Uu(e,n){return e.fire("newcell",{node:n})}function Gu(e,n,t){e.fire("TableModified",K(K({},t),{table:n}))}function $u(e){return e.getParam("table_sizing_mode","auto")}function Ku(e){return e.getParam("table_responsive_width")}function Xu(e){return e.getParam("table_border_widths",Ra,"array")}function Yu(e){return e.getParam("table_border_styles",Da,"array")}function Ju(e){return e.getParam("table_default_attributes",Oa,"object")}function Qu(e){return e.getParam("table_default_styles",function(e){var n;if(ka(e)){var t=e.dom,r=null!==(n=t.getParent(e.selection.getStart(),t.isBlock))&&void 0!==n?n:e.getBody(),o=Qr(Ve.fromDom(r));return K(K({},xa),{width:o+"px"})}return Ia(e)?se(xa,function(e,n){return"width"!==n}):xa}(e),"object")}function Zu(e){return e.getParam("table_cell_advtab",!0,"boolean")}function ei(e){return e.getParam("table_row_advtab",!0,"boolean")}function ni(e){return e.getParam("table_advtab",!0,"boolean")}function ti(e){return e.getParam("table_style_by_css",!1,"boolean")}function ri(e){return e.getParam("table_cell_class_list",[],"array")}function oi(e){return e.getParam("table_class_list",[],"array")}function ui(e){return"relative"===$u(e)||!0===Ku(e)}function ii(e){var n="section",t=e.getParam("table_header_type",n,"string");return y(["section","cells","sectionCells","auto"],t)?t:n}function ci(e){var n=e.getParam("table_column_resizing",Aa,"string");return w(["preservetable","resizetable"],function(e){return e===n}).getOr(Aa)}function li(e){return"preservetable"===ci(e)}function ai(e){return"resizetable"===ci(e)}function fi(e){var n=e.getParam("table_clone_elements");return T(n)?q.some(n.split(/[ ,]/)):Array.isArray(n)?q.some(n):q.none()}function si(e){return e.getParam("table_background_color_map",[],"array")}function mi(e){return e.getParam("table_border_color_map",[],"array")}function di(e,n){return(ui(e)?Ul:ka(e)?ql:Vl)(n)}function gi(e){Wt(e,"width")}function pi(e){return"false"!==Pn(e,"data-mce-resize")}function bi(p){function m(e){return"TABLE"===e.nodeName}function b(e){return di(p,e)}function h(){return(li(p)?gu:du)()}var d,g,v=q.none(),w=q.none(),y=q.none();return p.on("init",function(){var e,n,t,r,o,u,i,c,l,a,m,f,s,d,g=(n=pi,(e=p).inline?(u=Yo(e),qn(c=Ve.fromTag("div"),{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Xt(Tn(Ve.fromDom(document)),c),c,i=n,{parent:C(c),view:C(u),origin:C(uo(0,0)),isResizable:i}):Il(Ve.fromDom(e.getDoc()),n));y=q.some(g),o=p.getParam("object_resizing",!0),(T(o)?"table"===o:o)&&p.getParam("table_resize_bars",!0,"boolean")&&(t=h(),l=t,a=b,m=co,f=ao,s=Vu(g),d=Su({beforeResize:Cu(["table","type"]),afterResize:Cu(["table","type"]),startDrag:Cu([])}),s.events.adjustHeight.bind(function(e){var n=e.table;d.trigger.beforeResize(n,"row");var t,r,o,u,i,c,l,a,f,s=m.delta(e.delta,n);t=n,r=s,o=e.row,u=m,l=$t.fromTable(t),a=O(Mo(l,t,u,To,function(e){return e.getOrThunk(Ht)}),function(e,n){return o===n?Math.max(r+e,Ht()):e}),i=a,f=O($t.justCells(l),function(e){var n=cu(e.row,e.row+e.rowspan,i);return{element:e.element,height:n,rowspan:e.rowspan}}),A((c=a,O(l.all,function(e,n){return{element:e.element,height:c[n]}})),function(e){ho(e.element,e.height)}),A(f,function(e){ho(e.element,e.height)}),ho(t,I(a,function(e,n){return e+n},0)),d.trigger.afterResize(n,"row")}),s.events.startAdjust.bind(function(e){d.trigger.startDrag()}),s.events.adjustWidth.bind(function(e){var n=e.table;d.trigger.beforeResize(n,"col");var t=f.delta(e.delta,n),r=a(n);au(n,t,e.column,l,r),d.trigger.afterResize(n,"col")}),(r={on:s.on,off:s.off,hideBars:s.hideBars,showBars:s.showBars,destroy:s.destroy,events:d.registry}).on(),r.events.startDrag.bind(function(e){v=q.some(p.selection.getRng())}),r.events.beforeResize.bind(function(e){var n,t=e.table.dom,r=p,o=Jo(n=t),u=Qo(t),i=Pa+e.type;r.fire("ObjectResizeStart",{target:n,width:o,height:u,origin:i})}),r.events.afterResize.bind(function(e){var n,t,r,o,u,i=e.table,c=i.dom;nu(i),v.each(function(e){p.selection.setRng(e),p.focus()}),n=p,r=Jo(t=c),o=Qo(c),u=Pa+e.type,n.fire("ObjectResized",{target:t,width:r,height:o,origin:u}),p.undoManager.add()}),w=q.some(r))}),p.on("ObjectResizeStart",function(e){var n,t,r,o,u=e.target;m(u)&&(n=Ve.fromDom(u),A(p.dom.select(".mce-clonedresizable"),function(e){p.dom.addClass(e,"mce-"+ci(p)+"-columns")}),!Ml(n)&&ka(p)?Ma(n):!Bl(n)&&ui(p)&&Ba(n),El(n)&&Ae(e.origin,Pa)&&Ba(n),d=e.width,g=Ia(p)?"":(o=(t=p).dom.getStyle(r=u,"width")||t.dom.getAttrib(r,"width"),q.from(o).filter(ne).getOr("")))}),p.on("ObjectResized",function(e){var n,t,r,o,u,i,c,l,a,f,s=e.target;m(s)&&(n=Ve.fromDom(s),t=e.origin,Ae(t,"corner-")&&(r=n,o=e.width,f=ee(t,"e"),""===g&&Ba(r),o!==d&&""!==g?(Vn(r,"width",g),u=h(),i=b(r),c=li(p)||f?yu(r).columns-1:0,au(r,o-d,c,u,i)):/^(\d+(\.\d+)?)%$/.test(g)&&Vn(r,"width",o*parseFloat(g.replace("%",""))/d+"%"),/^(\d+(\.\d+)?)px$/.test(g)&&(a=$t.fromTable(l=r),$t.hasColumns(a)||A(nt(l),function(e){Vn(e,"width",Un(e,"width")),Wt(e,"width")}))),nu(n),Gu(p,n.dom,Ca))}),p.on("SwitchMode",function(){w.each(function(e){p.mode.isReadOnly()?e.hideBars():e.showBars()})}),{lazyResize:function(){return w},lazyWire:function(){return y.getOr(Il(Ve.fromDom(p.getBody()),pi))},destroy:function(){w.each(function(e){e.destroy()}),y.each(function(e){var n=e;p.inline&&Yt(n.parent())})}}}function hi(e,n){return{element:e,offset:n}}function vi(e,n){return(e.property().isText(n)?e.property().getText(n):e.property().children(n)).length}function wi(t,r){1===Xn(t,"colspan")&&yo(t).bind(function(e){return o=["fixed","relative","empty"],q.from(so.exec(e)).bind(function(e){var n=Number(e[1]),t=e[2],r=t;return R(o,function(e){return R(fo[e],function(e){return r===e})})?q.some({value:n,unit:t}):q.none()});var o}).each(function(e){var n=e.value/2;xo(t,n,e.unit),xo(r,n,e.unit)})}function yi(e){return z(e,function(e){return Wa(e.element)})}function Ci(e){var n="thead"===e.section,t=Ln(ja(e.cells),"th");return n||t?{type:"header",subType:n&&t?"sectionCells":n?"section":"cells"}:"tfoot"===e.section?{type:"footer"}:{type:"body"}}function Si(e,n,t){return we(t(e.element,n),!0,e.isLocked)}function Ti(e,n){return e.section!==n?ye(e.element,e.cells,n,e.isNew):e}function xi(){return{transformRow:Ti,transformCell:function(e,n,t){var r,o,u=t(e.element,n);return we("td"!==Ye(u)?(o=sr(r=u,"td"),Rt(r,o),It(o,ln(r)),Yt(r),o):u,e.isNew,e.isLocked)}}}function Ri(){return{transformRow:Ti,transformCell:Si}}function Di(){return{transformRow:function(e,n){return Ti(e,"thead"===n?"tbody":n)},transformCell:Si}}function Oi(e,n,t,r){t===r?Wt(e,n):Mn(e,n,t)}function Ai(e,n,t){F(mn(e,n)).fold(function(){return Ot(e,t)},function(e){return Dt(e,t)})}function ki(u,e){function t(e,n){var t,r,o;It((Bt(o=An(t=u,r=n).getOrThunk(function(){var e=Ve.fromTag(r,nn(t).dom);return"thead"===r?Ai(t,"caption,colgroup",e):"colgroup"===r?Ai(t,"caption",e):Xt(t,e),e})),o),("colgroup"===n?function(e){return N(e,function(e){return O(e.cells,function(e){return Oi(e.element,"span",e.colspan,1),e.element})})}:function(e){return O(e,function(e){e.isNew&&i.push(e.element);var n=e.element;return Bt(n),A(e.cells,function(e){e.isNew&&c.push(e.element),Oi(e.element,"colspan",e.colspan,1),Oi(e.element,"rowspan",e.rowspan,1),Xt(n,e.element)}),n})})(e))}function n(e,n){0<e.length?t(e,n):An(u,n).each(Yt)}var i=[],c=[],r=[],o=[],l=[],a=[];return A(e,function(e){switch(e.section){case"thead":r.push(e);break;case"tbody":o.push(e);break;case"tfoot":l.push(e);break;case"colgroup":a.push(e)}}),n(a,"colgroup"),n(r,"thead"),n(o,"tbody"),n(l,"tfoot"),{newRows:i,newCells:c}}function Ii(e,n){if(0===e.length)return 0;var t=e[0];return b(e,function(e){return!n(t.element,e.element)}).getOr(e.length)}function Bi(m,d){var g=O(m,function(e){return O(e.cells,v)});return O(m,function(e,s){var n=N(e.cells,function(e,n){if(!1!==g[s][n])return[];var t,r,o,u,i,c,l,a,f=(o=n,u=d,l=(t=m)[r=s],a="colgroup"===l.section,{colspan:Ii(l.cells.slice(o),u),rowspan:a?1:Ii((i=t.slice(r),c=o,O(i,function(e){return st(e,c)})),u)});return function(e,n,t,r){for(var o=e;o<e+t;o++)for(var u=n;u<n+r;u++)g[o][u]=!0}(s,n,f.rowspan,f.colspan),[{element:e.element,rowspan:f.rowspan,colspan:f.colspan,isNew:e.isNew}]});return{element:e.element,cells:n,section:e.section,isNew:e.isNew}})}function Mi(o,u,i){var c=[];A(o.colgroups,function(e){for(var n=[],t=0;t<o.grid.columns;t++){var r=$t.getColumnAt(o,t).map(function(e){return we(e.element,i,!1)}).getOrThunk(function(){return we(u.colGap(),!0,!1)});n.push(r)}c.push(ye(e.element,n,"colgroup",i))});for(var e=0;e<o.grid.rows;e++){for(var n=[],t=0;t<o.grid.columns;t++){var r=$t.getAt(o,e,t).map(function(e){return we(e.element,i,e.isLocked)}).getOrThunk(function(){return we(u.gap(),!0,!1)});n.push(r)}var l=o.all[e],a=ye(l.element,n,l.section,i);c.push(a)}return c}function Ei(e){return Bi(e,ce)}function Pi(e,n){return H(e.all,function(e){return w(e.cells,function(e){return ce(n,e.element)})})}function Ni(n,e,t){var r=_n(O(e.selection,function(e){return et(e).bind(function(e){return Pi(n,e)}).filter(t)}));return jn(0<r.length,r)}function zi(f,n,s,m,d){return function(o,u,e,i,c){var l=$t.fromTable(u),a=q.from(null==c?void 0:c.section).getOrThunk(Pl);return n(l,e).map(function(e){var n=Mi(l,i,!1),t=f(n,e,ce,d(i),a),r=ht(t.grid);return{info:e,grid:Ei(t.grid),cursor:t.cursor,lockedColumns:r}}).bind(function(e){var n=ki(u,e.grid),t=q.from(null==c?void 0:c.sizing).getOrThunk(function(){return Vl(u)}),r=q.from(null==c?void 0:c.resize).getOrThunk(gu);return s(u,e.grid,e.info,{sizing:t,resize:r,section:a}),m(u),Wu(o,u),Wt(u,Gt),0<e.lockedColumns.length&&Mn(u,Gt,e.lockedColumns.join(",")),q.some({cursor:e.cursor,newRows:n.newRows,newCells:n.newCells})})}}function Li(e,n){return Ni(e,n,x).map(function(e){return{cells:e,generators:n.generators,clipboard:n.clipboard}})}function _i(e,n){return Ni(e,n,x)}function Wi(e,n){return Ni(e,n,function(e){return!e.isLocked})}function ji(n,e){return z(e,function(e){return Pi(n,e).exists(function(e){return!e.isLocked})})}function Fi(n,e){return e.mergable.filter(function(e){return ji(n,e.cells)})}function Hi(n,e){return e.unmergable.filter(function(e){return ji(n,e)})}function Vi(e,n,t,r){for(var o=gt(e).rows,u=!0,i=0;i<o.length;i++)for(var c=0;c<dt(o[0]);c++){var l=o[i],a=st(l,c),f=t(a.element,n);!0===f&&!1===u?ft(l,c,we(r(),!0,a.isLocked)):!0===f&&(u=!1)}return e}function qi(e,t,i,c){var n,r,l=gt(e).rows;return 0<t&&t<l.length&&(n=l[t-1].cells,r=i,A(B(n,function(e,n){return R(e,function(e){return r(e.element,n.element)})?e:e.concat([n])},[]),function(e){for(var o=q.none(),u=t;u<l.length;u++)for(var n=0;n<dt(l[0]);n++)!function(n){var t=l[u],r=st(t,n);i(r.element,e.element)&&(o=o.isNone()?q.some(c()):o).each(function(e){ft(t,n,we(e,!0,r.isLocked))})}(n)})),e}function Ui(e,n){return{rowDelta:0,colDelta:dt(e[0])-dt(n[0])}}function Gi(e,n){return{rowDelta:e.length-n.length,colDelta:0}}function $i(e,n,t,r){var o="colgroup"===n.section?t.col:t.cell;return D(e,function(e){return we(o(),!0,r(e))})}function Ki(e,n,r,o){var u=e[e.length-1];return e.concat(D(n,function(){var e="colgroup"===u.section?r.colgroup:r.row,n=pt(u,e,S),t=$i(n.cells.length,n,r,function(e){return Ke(o,e.toString())});return Ut(n,t)}))}function Xi(e,t,r,o){return O(e,function(e){var n=$i(t,e,r,v);return lt(e,o,n)})}function Yi(e,n,t){var r=n.colDelta<0?Xi:S,o=n.rowDelta<0?Ki:S,u=ht(e),i=dt(e[0]),c=R(u,function(e){return e===i-1}),l=r(e,Math.abs(n.colDelta),t,c?i-1:i),a=ht(l);return o(l,Math.abs(n.rowDelta),t,L(a,x))}function Ji(n,t,e){return k(e,function(e){return e>=n.column&&e<=dt(t[0])+n.column})}function Qi(e,u,n,i,c){var t,r,o,l=ht(u),a=(t=e,r=l,o=dt(u[0]),{row:gt(u).cols.length+t.row,column:w(D(o-t.column,function(e){return e+t.column}),function(n){return z(r,function(e){return e!==n})}).getOr(o-1)}),f=gt(n).rows,s=Ji(a,f,l);return function(e,n,t){if(e.row>=n.length||e.column>dt(n[0]))return Ga.error("invalid start address out of table bounds, row: "+e.row+", column: "+e.column);var r=n.slice(e.row),o=r[0].cells.slice(e.column),u=dt(t[0]),i=t.length;return Ga.value({rowDelta:r.length-i,colDelta:o.length-u})}(a,u,f).map(function(e){var n=K(K({},e),{colDelta:e.colDelta-s.length}),t=Yi(u,n,i),r=ht(t),o=Ji(a,f,r);return function(e,n,t,r,o,u){for(var i,c,l,a,f,s=e.row,m=e.column,d=s+t.length,g=m+dt(t[0])+u.length,p=L(u,x),b=s;b<d;b++)for(var h,v,w,y=0,C=m;C<g;C++)p[C]?y++:(l=C,a=void 0,a=P(o,st((i=n)[c=b],l).element),f=i[c],1<i.length&&1<dt(f)&&(0<l&&a(mt(f,l-1))||l<f.cells.length-1&&a(mt(f,l+1))||0<c&&a(mt(i[c-1],l))||c<i.length-1&&a(mt(i[c+1],l)))&&Vi(n,mt(n[b],C),o,r.cell),v=(h=st(t[b-s],C-m-y)).element,w=r.replace(v),ft(n[b],C,we(w,!0,h.isLocked)));return n}(a,t,f,i,c,o)})}function Zi(t,e,n,r,o){var u=t,i=o,c=r.cell;0<u&&u<e[0].cells.length&&A(e,function(e){var n=e.cells[u-1],t=e.cells[u];i(t.element,n.element)&&ft(e,u,we(c(),!0,t.isLocked))});var l=Yi(n,Gi(n,e),r);return O(Yi(e,Gi(e,l),r),function(e,n){return lt(e,t,l[n].cells)})}function ec(e,n,t,r,o){qi(n,e,o,r.cell);var u,i,c=ht(n),l=Ui(n,t),a=Yi(n,K(K({},l),{colDelta:l.colDelta-c.length}),r),f=gt(a),s=f.cols,m=f.rows,d=ht(a),g=Ui(t,n),p=K(K({},g),{colDelta:g.colDelta+d.length}),b=Yi((u=r,i=d,O(t,function(t){return B(i,function(e,n){return at(e,n,$i(1,t,u,x)[0])},t)})),p,r);return s.concat(m.slice(0,e)).concat(b).concat(m.slice(e,m.length))}function nc(e,t,n,r,o){var u,i,c,l,a=gt(e),f=a.rows,s=a.cols,m=f.slice(0,t),d=f.slice(t),g=(u=f[n],i=function(e,n){return 0<t&&t<f.length&&r(mt(f[t-1],n),mt(f[t],n))?st(f[t],n):we(o(e.element,r),!0,e.isLocked)},c=r,l=o,pt(u,function(e){return l(e,c)},i));return s.concat(m).concat([g]).concat(d)}function tc(e,u,i,c,l){return O(e,function(e){var n,t,r=0<u&&u<dt(e)&&c(mt(e,u-1),mt(e,u)),o=(n=e.section,t=l,"colgroup"!==n&&r?st(e,u):we(t(st(e,i).element,c),!0,!1));return at(e,u,o)})}function rc(e,n,t,r){return void 0!==mt((u=e)[i=n],t)&&0<i&&r(mt(u[i-1],t),mt(u[i],t))||(o=e[n],0<t&&r(mt(o,t-1),mt(o,t)));var o,u,i}function oc(e,n,t,r){function o(e){return("row"===e?Jn:Yn)(n)?e+"group":e}return e?Wa(n)?o(t):null:r&&Wa(n)?o("row"===t?"col":"row"):null}function uc(e,n,t){return we(t(e.element,n),!0,e.isLocked)}function ic(e,u,i,c,l,a,f){return O(e,function(e,o){return t=function(e,n){if(t=e,R(u,function(e){return i(t.element,e.element)})){var r=f(e,o,n)?l(e,i,c):e;return a(r,o,n).each(function(e){var t=r.element;ae({scope:q.from(e)},function(e,n){e.fold(function(){Wt(t,n)},function(e){Bn(t.dom,n,e)})})}),r}return e;var t},r=O((n=e).cells,t),ye(n.element,r,n.section,n.isNew);var n,t,r})}function cc(t,r,o){return N(t,function(e,n){return rc(t,n,r,o)?[]:[st(e,r)]})}function lc(e,n,t,r,o){var u,i,c,l,a=gt(e).rows,f=N(n,function(e){return cc(a,e,r)}),s=O(e,function(e){return yi(e.cells)}),m=(u=f,z(i=s,S)&&yi(u)?x:function(e,n,t){return!("th"===Ye(e.element)&&i[n])}),d=(c=t,l=s,function(e,n){return q.some(oc(c,e.element,"row",l[n]))});return ic(e,f,r,o,uc,d,m)}function ac(e,n,t,r){var o=gt(e).rows;return ic(e,O(n,function(e){return st(o[e.row],e.column)}),t,r,uc,q.none,x)}function fc(e){return B(e,function(e,n){return R(e,function(e){return e.column===n.column})?e:e.concat([n])},[]).sort(function(e,n){return e.column-n.column})}function sc(e){return"tr"===Ye(e)||Ka(e)}function mc(e){return{element:e,colspan:Kn(e,"colspan",1),rowspan:Kn(e,"rowspan",1)}}function dc(e){return Nn(e,"scope").map(function(e){return e.substr(0,3)})}function gc(e){return n=e,t=Ya.property().name(n),y(Xa,t);var n,t}function pc(e){return n=e,y(["ol","ul"],Ya.property().name(n));var n}function bc(e){function u(e){return"br"===Ye(e)}function t(o){return jo(o).bind(function(t){var r=cn(t).map(function(e){return!!gc(e)||(n=e,!!y(["br","img","hr","input"],Ya.property().name(n))&&"img"!==Ye(e));var n}).getOr(!1);return rn(t).map(function(e){return!0===r||"li"===Ye(n=e)||Dn(n,pc).isSome()||u(t)||gc(e)&&!ce(o,e)?[]:[Ve.fromTag("br")];var n})}).getOr([])}var n,r=0===(n=N(e,function(e){var n=ln(e);return z(n,function(e){return u(e)||pn(e)&&0===Et(e).trim().length})?[]:n.concat(t(e))})).length?[Ve.fromTag("br")]:n;Bt(e[0]),It(e[0],r)}function hc(e){return Nu(e,!0)}function vc(e){0===nt(e).length&&Yt(e)}function wc(e,n){return{grid:e,cursor:n}}function yc(e,n,t){var r,o,u,i,c,l=(r=n,o=t,c=gt(e).rows,q.from(null===(i=null===(u=c[r])||void 0===u?void 0:u.cells[o])||void 0===i?void 0:i.element).filter(hc).orThunk(function(){return H(c,function(e){return H(e.cells,function(e){var n=e.element;return jn(hc(n),n)})})}));return wc(e,l)}function Cc(e){return B(e,function(e,n){return R(e,function(e){return e.row===n.row})?e:e.concat([n])},[]).sort(function(e,n){return e.row-n.row})}function Sc(u,i){return function(e,n,t,r,o){return yc(function(e,n,t,r,u,o,i){var c=gt(e),l=c.cols,a=c.rows,f=a[n[0]],s=N(n,function(e){return o=u,N((t=a)[r=e].cells,function(e,n){return rc(t,r,n,o)?[]:[e]});var t,r,o}),m=O(f.cells,function(e,n){return yi(cc(a,n,u))}),d=X([],a,!0);A(n,function(e){d[e]=i.transformRow(a[e],t)});var g,p,b,h,v=l.concat(d),w=(g=f,z(p=m,S)&&yi(g.cells)?x:function(e,n,t){return!("th"===Ye(e.element)&&p[t])}),y=(b=r,h=m,function(e,n,t){return q.some(oc(b,e.element,"col",h[t]))});return ic(v,s,u,o,i.transformCell,y,w)}(e,O(Cc(n),function(e){return e.row}),u,i,t,r.replaceOrInit,o),n[0].row,n[0].column)}}function Tc(e,n,t){var r,o=(r=t.section,ut(e,function(){return r}));return Mi($t.generate(o),n,!0)}function xc(e,n,t,r){var o=r.sizing,u=$t.generate(n);lu(u,o.getWidths(u,o),o)}function Rc(e,n,t,r){var o=t,u=r.sizing,i=r.resize,c=$t.generate(n),l=u.getWidths(c,u),a=u.pixelWidth(),f=i.calcRedestributedWidths(l,a,o.pixelDelta,u.isRelative),s=f.newSizes,m=f.delta;lu(c,s,u),u.adjustTableWidth(m)}function Dc(e,n){return R(n,function(e){return 0===e.column&&e.isLocked})}function Oc(n,e){return R(e,function(e){return e.column+e.colspan>=n.grid.columns&&e.isLocked})}function Ac(e,n){var t=yr(e);return B(fc(n),function(e,n){return e+t[n.column].map(wr).getOr(0)},0)}function kc(t){return function(n,e){return _i(n,e).filter(function(e){return!(t?Dc:Oc)(n,e)}).map(function(e){return{details:e,pixelDelta:Ac(n,e)}})}}function Ic(t){return function(n,e){return Li(n,e).filter(function(e){return!(t?Dc:Oc)(n,e.cells)})}}function Bc(e,n){var u=$t.fromTable(e);return _i(u,n).bind(function(e){var n=e[e.length-1],t=e[0].column,r=n.column+n.colspan,o=M(O(u.all,function(e){return k(e.cells,function(e){return e.column>=t&&e.column<r})}));return ja(o)}).getOr("")}function Mc(e,n){return _i($t.fromTable(e),n).bind(ja).getOr("")}function Ec(m,d,e){function n(e){return"table"===Ye(Yo(e))}function t(c,l,a,f,s){return function(t,e,o){void 0===o&&(o=!1),nu(t);var n=f(),r=Ve.fromDom(m.getDoc()),u=$o(a,r,g),i={sizing:di(m,t),resize:(ai(m)?du:gu)(),section:function(e){switch(ii(m)){case"section":return Fa();case"sectionCells":return Ha();case"cells":return Va();default:return function(e,n){var t;switch(H($t.fromTable(e).all,function(e){var n=Ci(e);return"header"===n.type?q.from(n.subType):q.none()}).getOr(n)){case"section":return xi();case"sectionCells":return Ri();case"cells":return Di()}}(e,"section")}}(t)};return l(t)?c(n,t,e,u,i).bind(function(e){A(e.newRows,function(e){qu(m,e.dom)}),A(e.newCells,function(e){Uu(m,e.dom)});var r,n=(r=t,e.cursor.fold(function(){return j(nt(r)).filter(Sn).map(function(e){d.clear(r);var n=m.dom.createRng();return n.selectNode(e.dom),m.selection.setRng(n),Mn(e,"data-mce-selected","1"),n})},function(e){var n=La(_a,e),t=m.dom.createRng();return t.setStart(n.element.dom,n.offset),t.setEnd(n.element.dom,n.offset),m.selection.setRng(t),d.clear(r),q.some(t)}));return Sn(t)&&(nu(t),o||Gu(m,t.dom,s)),n.map(function(e){return{rng:e,effect:s}})}):q.none()}}var g=fi(m),r=ai(m)?E:wi;return{deleteRow:t(lf,function(e){return!1===n(m)||1<yu(e).rows},E,e,Sa),deleteColumn:t(cf,function(e){return!1===n(m)||1<yu(e).columns},E,e,Sa),insertRowsBefore:t(tf,x,E,e,Sa),insertRowsAfter:t(rf,x,E,e,Sa),insertColumnsBefore:t(of,x,r,e,Sa),insertColumnsAfter:t(uf,x,r,e,Sa),mergeCells:t(bf,x,E,e,Sa),unmergeCells:t(hf,x,E,e,Sa),pasteColsBefore:t(wf,x,E,e,Sa),pasteColsAfter:t(yf,x,E,e,Sa),pasteRowsBefore:t(Cf,x,E,e,Sa),pasteRowsAfter:t(Sf,x,E,e,Sa),pasteCells:t(vf,x,E,e,Ta),makeCellsHeader:t(gf,x,E,e,Sa),unmakeCellsHeader:t(pf,x,E,e,Sa),makeColumnsHeader:t(af,x,E,e,Sa),unmakeColumnsHeader:t(ff,x,E,e,Sa),makeRowsHeader:t(sf,x,E,e,Sa),makeRowsBody:t(mf,x,E,e,Sa),makeRowsFooter:t(df,x,E,e,Sa),getTableRowType:Tf,getTableCellType:Mc,getTableColType:Bc}}function Pc(e,n,t,r){return D(e,function(e){return function(e,n,t,r){for(var o=Ve.fromTag("tr"),u=0;u<e;u++){var i=r<n||u<t?Ve.fromTag("th"):Ve.fromTag("td");u<t&&Mn(i,"scope","row"),r<n&&Mn(i,"scope","col"),Xt(i,Ve.fromTag("br")),Xt(o,i)}return o}(n,t,r,e)})}function Nc(e,n){e.selection.select(n.dom,!0),e.selection.collapse(!0)}function zc(u,i,c,l,a){var o=Qu(u),f={styles:o,attributes:Ju(u),colGroups:u.getParam("table_use_colgroups",!1,"boolean")};return u.undoManager.ignore(function(){var e=function(e,n,t,r,o,u){void 0===u&&(u=xf);var i,c,l=Ve.fromTag("table"),a="cells"!==o;qn(l,u.styles),En(l,u.attributes),u.colGroups&&Xt(l,(i=n,c=Ve.fromTag("colgroup"),D(i,function(){return Xt(c,Ve.fromTag("col"))}),c));var f,s=Math.min(e,t);a&&0<t&&(f=Ve.fromTag("thead"),Xt(l,f),It(f,Pc(t,n,"sectionCells"===o?s:0,r)));var m=Ve.fromTag("tbody");return Xt(l,m),It(m,Pc(a?e-s:e,n,a?0:t,r)),l}(c,i,a,l,ii(u),f);Mn(e,"data-mce-id","__mce");var n,t,r,o=(n=e,t=Ve.fromTag("div"),r=Ve.fromDom(n.dom.cloneNode(!0)),Xt(t,r),t.dom.innerHTML);u.insertContent(o),u.addVisual()}),kn(Yo(u),'table[data-mce-id="__mce"]').map(function(e){var n,t,r;return ka(u)?Ma(e):Ia(u)?Ea(e):(ui(u)||(n=o.width,T(n)&&-1!==n.indexOf("%")))&&Ba(e),nu(e),Wt(e,"data-mce-id"),t=u,A(dn(e,"tr"),function(e){qu(t,e.dom),A(dn(e,"th,td"),function(e){Uu(t,e.dom)})}),r=u,kn(e,"td,th").each(P(Nc,r)),e.dom}).getOr(null)}function Lc(e,n,t,r,o){function u(e){return f(e)&&0<e}if(void 0===r&&(r={}),u(n)&&u(t)){var i=r.headerRows||0;return zc(e,t,n,r.headerColumns||0,i)}return console.error(o),null}function _c(e){return function(){return e().fold(function(){return[]},function(e){return O(e,function(e){return e.dom})})}}function Wc(t){return function(e){var n=0<e.length?q.some(Xo(e)):q.none();t(n)}}function jc(e,n,t){var r=Kn(e,n,1);1===t||r<=1?Wt(e,n):Mn(e,n,Math.min(t,r))}function Fc(o,e,u){return function(e,n){for(var t=0;t<n.length;t++){var r=o.getStyle(n[t],u);if((e=void 0===e?r:e)!==r)return""}return e}(void 0,o.select("td,th",e))}function Hc(e,n,t){t&&e.formatter.apply("align"+t,{},n)}function Vc(n,t){Rf.each("left center right".split(" "),function(e){n.formatter.remove("align"+e,{},t)})}function qc(e){return Of.test(t=e)||Af.test(t)?q.some({value:(Ae(n=e,"#")?n.substring("#".length):n).toUpperCase()}):q.none();var n,t}function Uc(e){var n=e.toString(16);return(1===n.length?"0"+n:n).toUpperCase()}function Gc(e){return{value:Uc(e.red)+Uc(e.green)+Uc(e.blue)}}function $c(e,n,t,r){return{red:e,green:n,blue:t,alpha:r}}function Kc(e,n,t,r){return $c(parseInt(e,10),parseInt(n,10),parseInt(t,10),parseFloat(r))}function Xc(e){var n=e;return{get:function(){return n},set:function(e){n=e}}}function Yc(e){function n(){return t.get().each(e)}var t=Xc(q.none());return{clear:function(){n(),t.set(q.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){n(),t.set(q.some(e))}}}function Jc(){var n=Yc(E);return K(K({},n),{on:function(e){return n.get().each(e)}})}function Qc(e){return be(e,"menu")}function Zc(t,r){return function(e){var n;t.execCommand("mceTableApplyCellStyle",!1,((n={})[r]=e,n))}}function el(n,t,r,o,u){return function(e){return e(Mf(n,t,r,o,u))}}function nl(r,e,o){var n=O(e,function(e){return{text:e.title,value:"#"+qc(r=e.value).orThunk(function(){return function(e){if("transparent"===e)return q.some($c(0,0,0,0));var n=kf.exec(e);if(null!==n)return q.some(Kc(n[1],n[2],n[3],"1"));var t=If.exec(e);return null!==t?q.some(Kc(t[1],t[2],t[3],t[4])):q.none()}(r).map(Gc)}).getOrThunk(function(){var e=document.createElement("canvas");e.height=1,e.width=1;var n=e.getContext("2d");n.clearRect(0,0,e.width,e.height),n.fillStyle="#FFFFFF",n.fillStyle=r,n.fillRect(0,0,1,1);var t=n.getImageData(0,0,1,1).data;return Gc($c(t[0],t[1],t[2],t[3]))}).value,type:"choiceitem"};var r});return[{type:"fancymenuitem",fancytype:"colorswatch",initData:{colors:0<n.length?n:void 0,allowCustomColors:!1},onAction:function(e){var n,t="remove"===e.value?"":e.value;r.execCommand("mceTableApplyCellStyle",!1,((n={})[o]=t,n))}}]}function tl(n){return function(){var e=n.queryCommandValue("mceTableRowType");n.execCommand("mceTableRowType",!1,{type:"header"===e?"body":"header"})}}function rl(n){return function(){var e=n.queryCommandValue("mceTableColType");n.execCommand("mceTableColType",!1,{type:"th"===e?"td":"th"})}}function ol(e){return Pf.concat((0<(n=Bf(ri(e))).length?q.some({name:"class",type:"listbox",label:"Class",items:n}):q.none()).toArray());var n}function ul(e,n){var t=[{name:"borderstyle",type:"listbox",label:"Border style",items:[{text:"Select...",value:""}].concat(Bf(Yu(e)))},{name:"bordercolor",type:"colorinput",label:"Border color"},{name:"backgroundcolor",type:"colorinput",label:"Background color"}];return{title:"Advanced",name:"advanced",items:"cell"===n?[{name:"borderwidth",type:"input",label:"Border width"}].concat(t):t}}function il(u){return function(t,r){var o=t.dom;return{setAttrib:function(e,n){u&&!n||o.setAttrib(r,e,n)},setStyle:function(e,n){u&&!n||o.setStyle(r,e,n)},setFormat:function(e,n){u&&!n||(""===n?t.formatter.remove(e,{value:null},r,!0):t.formatter.apply(e,{value:n},r))}}}}function cl(n){return function(e){return Ae(e,"rgb")?n.toHex(e):e}}function ll(e,n){var t=Ve.fromDom(n);return{borderwidth:Gn(t,"border-width").getOr(""),borderstyle:Gn(t,"border-style").getOr(""),bordercolor:Gn(t,"border-color").map(cl(e)).getOr(""),backgroundcolor:Gn(t,"background-color").map(cl(e)).getOr("")}}function al(e){var o=e[0];return A(e.slice(1),function(e){A(Ue(o),function(r){ae(e,function(e,n){var t=o[r];""!==t&&r===n&&t!==e&&(o[r]="")})})}),o}function fl(e,n,t,r){return w(e,function(e){return!u(t.formatter.matchNode(r,n+e))}).getOr("")}function sl(e,t){var n=$t.fromTable(e);return O(k($t.justCells(n),function(n){return R(t,function(e){return ce(n.element,e)})}),function(e){return{element:e.element.dom,column:$t.getColumnAt(n,e.column).map(function(e){return e.element.dom})}})}function ml(e,n,r,t){var l=t.getData();t.close(),e.undoManager.transact(function(){var o,u=e,i=n,t=r,c=se(o=l,function(e,n){return t[n]!==e});0<ge(c)&&1<=i.length&&rt(i[0]).each(function(e){var s,m,d,n=sl(e,i),t=0<ge(se(c,function(e,n){return"scope"!==n&&"celltype"!==n})),r=Ke(c,"celltype");(t||Ke(c,"scope"))&&(s=u,m=o,d=1===n.length,A(n,function(e){var n,t,r,o,u,i,c=e.element,l=d?Nf.normal(s,c):Nf.ifTruthy(s,c),a=e.column.map(function(e){return d?Nf.normal(s,e):Nf.ifTruthy(s,e)}).getOr(l),f=m;(n=l).setAttrib("scope",f.scope),n.setAttrib("class",f.class),n.setStyle("height",eu(f.height)),a.setStyle("width",eu(f.width)),Zu(s)&&((t=l).setFormat("tablecellbackgroundcolor",(r=m).backgroundcolor),t.setFormat("tablecellbordercolor",r.bordercolor),t.setFormat("tablecellborderstyle",r.borderstyle),t.setFormat("tablecellborderwidth",eu(r.borderwidth))),d&&(Vc(s,c),o=s,u=c,Rf.each("top middle bottom".split(" "),function(e){o.formatter.remove("valign"+e,{},u)})),m.halign&&Hc(s,c,m.halign),!m.valign||(i=m.valign)&&s.formatter.apply("valign"+i,{},c)})),r&&u.execCommand("mceTableCellType",!1,{type:o.celltype,no_events:!0}),Gu(u,e.dom,{structure:r,style:t})}),e.focus()})}function dl(e,n){var t,l,r,o,u,i=Ql(n);0!==i.length&&(l=e,t=al(rt((r=i)[0]).map(function(e){return O(sl(e,r),function(e){return t=l,r=e.element,o=Zu(l),u=e.column,i=t.dom,c=u.getOr(r),K({width:n(c,"width"),height:n(r,"height"),scope:i.getAttrib(r,"scope"),celltype:r.nodeName.toLowerCase(),class:i.getAttrib(r,"class",""),halign:zf(t,r),valign:Lf(t,r)},o?ll(i,r):{});function n(e,n){return i.getStyle(e,n)||i.getAttrib(e,n)}var t,r,o,u,i,c})}).getOrDie()),o={type:"tabpanel",tabs:[{title:"General",name:"general",items:ol(e)},ul(e,"cell")]},u={type:"panel",items:[{type:"grid",columns:2,items:ol(e)}]},e.windowManager.open({title:"Cell Properties",size:"normal",body:Zu(e)?o:u,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:t,onSubmit:P(ml,e,i,t)}))}function gl(e){return _f.concat((0<(n=Bf(e.getParam("table_row_class_list",[],"array"))).length?q.some({name:"class",type:"listbox",label:"Class",items:n}):q.none()).toArray());var n}function pl(s,m,d,e){var g=e.getData();e.close(),s.undoManager.transact(function(){var e,n,t,i,c,l,a,r=s,o=m,u=d,f=se(e=g,function(e,n){return u[n]!==e});0<ge(f)&&(n=Ke(f,"type"),(t=!n||1<ge(f))&&(i=r,c=e,l=u,a=1===o.length,A(o,function(e){var n,t,r,o=a?Nf.normal(i,e):Nf.ifTruthy(i,e),u=c;(n=o).setAttrib("class",u.class),n.setStyle("height",eu(u.height)),ei(i)&&((t=o).setStyle("background-color",(r=c).backgroundcolor),t.setStyle("border-color",r.bordercolor),t.setStyle("border-style",r.borderstyle)),c.align!==l.align&&(Vc(i,e),Hc(i,e,c.align))})),n&&r.execCommand("mceTableRowType",!1,{type:e.type,no_events:!0}),rt(Ve.fromDom(o[0])).each(function(e){return Gu(r,e.dom,{structure:n,style:t})})),s.focus()})}function bl(i){var e,t,n,r,o,u,c,l=(e=tu(i),t=Xl.selected,r=(n=Jl(e)).bind(function(e){return rt(e)}).map(ot),Wn(n,r,function(n,e){return k(e,function(e){return R(Xo(e.dom.cells),function(e){return"1"===Pn(e,t)||ce(e,n)})})}).getOr([]));0!==l.length&&(o=al(O(l,function(e){return n=i,t=e.dom,r=ei(i),u=n.dom,K({height:u.getStyle(t,"height")||u.getAttrib(t,"height"),class:u.getAttrib(t,"class",""),type:rt(Ve.fromDom(o=t)).map(function(e){var n={selection:Xo(o.cells)};return Tf(e,n)}).getOr(""),align:zf(n,t)},r?ll(u,t):{});var n,t,r,o,u})),u={type:"tabpanel",tabs:[{title:"General",name:"general",items:gl(i)},ul(i,"row")]},c={type:"panel",items:[{type:"grid",columns:2,items:gl(i)}]},i.windowManager.open({title:"Row Properties",size:"normal",body:ei(i)?u:c,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onSubmit:P(pl,i,O(l,function(e){return e.dom}),o)}))}function hl(u,i,t,e){var c=u.dom,l=e.getData(),a=se(l,function(e,n){return t[n]!==e});e.close(),""===l.class&&delete l.class,u.undoManager.transact(function(){var e,n,t,r,o;i||(e=parseInt(l.cols,10)||1,n=parseInt(l.rows,10)||1,i=zc(u,e,n,0,0)),0<ge(a)&&(function(e,n,t){var r,o=e.dom,u={},i={};if(u.class=t.class,i.height=eu(t.height),o.getAttrib(n,"width")&&!ti(e)?u.width=(r=t.width)?r.replace(/px$/,""):"":i.width=eu(t.width),ti(e)?(i["border-width"]=eu(t.border),i["border-spacing"]=eu(t.cellspacing)):(u.border=t.border,u.cellpadding=t.cellpadding,u.cellspacing=t.cellspacing),ti(e)&&n.children)for(var c=0;c<n.children.length;c++)Wf(o,n.children[c],{"border-width":eu(t.border),padding:eu(t.cellpadding)}),ni(e)&&Wf(o,n.children[c],{"border-color":t.bordercolor});ni(e)&&(i["background-color"]=t.backgroundcolor,i["border-color"]=t.bordercolor,i["border-style"]=t.borderstyle),u.style=o.serializeStyle(K(K({},Qu(e)),i)),o.setAttribs(n,K(K({},Ju(e)),u))}(u,i,l),((t=c.select("caption",i)[0])&&!l.caption||!t&&l.caption)&&u.execCommand("mceTableToggleCaption"),""===l.align?Vc(u,i):Hc(u,i,l.align)),u.focus(),u.addVisual(),0<ge(a)&&(o=!(r=Ke(a,"caption"))||1<ge(a),Gu(u,i,{structure:r,style:o}))})}function vl(e,n){var t,r,o,u,i,c,l,a,f,s,m,d,g,p,b,h,v,w,y,C=e.dom,S=(o=ni(r=e),a=Qu(r),f=Ju(r),s=o?(u=r.dom,{borderstyle:pe(a,"border-style").getOr(""),bordercolor:cl(u)(pe(a,"border-color").getOr("")),backgroundcolor:cl(u)(pe(a,"background-color").getOr(""))}):{},K(K(K(K(K(K({},{height:"",width:"100%",cellspacing:"",cellpadding:"",caption:!1,class:"",align:"",border:""}),a),f),s),(l=a["border-width"],ti(r)&&l?{border:l}:pe(f,"border").fold(function(){return{}},function(e){return{border:e}}))),(i=pe(a,"border-spacing").or(pe(f,"cellspacing")).fold(function(){return{}},function(e){return{cellspacing:e}}),c=pe(a,"border-padding").or(pe(f,"cellpadding")).fold(function(){return{}},function(e){return{cellpadding:e}}),K(K({},i),c))));!1===n?(t=C.getParent(e.selection.getStart(),"table",e.getBody()))?(d=t,g=ni(m=e),v=m.dom,w=ti(m)?v.getStyle(d,"border-spacing")||v.getAttrib(d,"cellspacing"):v.getAttrib(d,"cellspacing")||v.getStyle(d,"border-spacing"),y=ti(m)?Fc(v,d,"padding")||v.getAttrib(d,"cellpadding"):v.getAttrib(d,"cellpadding")||Fc(v,d,"padding"),S=K({width:v.getStyle(d,"width")||v.getAttrib(d,"width"),height:v.getStyle(d,"height")||v.getAttrib(d,"height"),cellspacing:w,cellpadding:y,border:(p=v,h=Gn(Ve.fromDom(b=d),"border-width"),ti(m)&&h.isSome()?h.getOr(""):p.getAttrib(b,"border")||Fc(m.dom,b,"border-width")||Fc(m.dom,b,"border")),caption:!!v.select("caption",d)[0],class:v.getAttrib(d,"class",""),align:zf(m,d)},g?ll(v,d):{})):ni(e)&&(S.borderstyle="",S.bordercolor="",S.backgroundcolor=""):(S.cols="1",S.rows="1",ni(e)&&(S.borderstyle="",S.bordercolor="",S.backgroundcolor=""));var T=Bf(oi(e));0<T.length&&S.class&&(S.class=S.class.replace(/\s*mce\-item\-table\s*/g,""));var x,R,D,O,A={type:"grid",columns:2,items:(x=T,R=n?[{type:"input",name:"cols",label:"Cols",inputMode:"numeric"},{type:"input",name:"rows",label:"Rows",inputMode:"numeric"}]:[],D=e.getParam("table_appearance_options",!0,"boolean")?[{type:"input",name:"cellspacing",label:"Cell spacing",inputMode:"numeric"},{type:"input",name:"cellpadding",label:"Cell padding",inputMode:"numeric"},{type:"input",name:"border",label:"Border width"},{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[],O=0<x.length?[{type:"listbox",name:"class",label:"Class",items:x}]:[],R.concat([{type:"input",name:"width",label:"Width"},{type:"input",name:"height",label:"Height"}]).concat(D).concat([{type:"listbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]).concat(O))},k=ni(e)?{type:"tabpanel",tabs:[{title:"General",name:"general",items:[A]},ul(e,"table")]}:{type:"panel",items:[A]};e.windowManager.open({title:"Table Properties",size:"normal",body:k,onSubmit:P(hl,e,t,S),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:S})}function wl(e){return Yl(tu(e),Zo(e))}function yl(l,n,e,a,t){function u(e){return rt(e,d)}function f(t){return Jl(tu(e=l),Zo(e)).bind(function(n){return u(n).map(function(e){return t(e,n)})});var e}function s(e){l.focus()}function r(r,o){return void 0===o&&(o=!1),f(function(e,n){var t=ou(a,e,n);r(e,t,o).each(s)})}function o(){return f(function(e,n){var t,r,o,u=ou(a,e,n),i=$o(E,Ve.fromDom(l.getDoc()),q.none());return t=u,r=i,_i(o=$t.fromTable(e),t).bind(function(e){var n=Ei(N(gt(Mi(o,r,!1)).rows.slice(e[0].row,e[e.length-1].row+e[e.length-1].rowspan),function(e){var n=k(e.cells,function(e){return!e.isLocked});return 0<n.length?[K(K({},e),{cells:n})]:[]}));return jn(0<n.length,n)}).map(function(e){return O(e,function(e){var t=ar(e.element);return A(e.cells,function(e){var n=fr(e.element);Oi(n,"colspan",e.colspan,1),Oi(n,"rowspan",e.rowspan,1),Xt(t,n)}),t})})})}function i(){return f(function(e,n){var t,l,r=ou(a,e,n);return t=r,Wi(l=$t.fromTable(e),t).map(function(e){var r,o,n=e[e.length-1],t=e[0].column,u=n.column+n.colspan,i=function(e,t,r){if($t.hasColumns(e)){var n=O(k($t.justColumns(e),function(e){return e.column>=t&&e.column<r}),function(e){var n=fr(e.element);return jc(n,"span",r-t),n}),o=Ve.fromTag("colgroup");return It(o,n),[o]}return[]}(l,t,u),c=(r=t,o=u,O(l.all,function(e){var n=O(k(e.cells,function(e){return e.column>=r&&e.column<o}),function(e){var n=fr(e.element);return jc(n,"colspan",o-r),n}),t=Ve.fromTag("tr");return It(t,n),t}));return X(X([],i,!0),c,!0)})})}function c(c,e){return e().each(function(e){var i=O(e,fr);f(function(e,n){var t,r,o=Ko(Ve.fromDom(l.getDoc())),u=(t=i,r=o,{selection:ru(a),clipboard:t,generators:r});c(e,u).each(s)})})}function m(t){return function(e,n){return pe(n,"type").each(function(e){r(t(e),n.no_events)})}}var d=Zo(l);ae({mceTableSplitCells:function(){return r(n.unmergeCells)},mceTableMergeCells:function(){return r(n.mergeCells)},mceTableInsertRowBefore:function(){return r(n.insertRowsBefore)},mceTableInsertRowAfter:function(){return r(n.insertRowsAfter)},mceTableInsertColBefore:function(){return r(n.insertColumnsBefore)},mceTableInsertColAfter:function(){return r(n.insertColumnsAfter)},mceTableDeleteCol:function(){return r(n.deleteColumn)},mceTableDeleteRow:function(){return r(n.deleteRow)},mceTableCutCol:function(){return i().each(function(e){t.setColumns(e),r(n.deleteColumn)})},mceTableCutRow:function(){return o().each(function(e){t.setRows(e),r(n.deleteRow)})},mceTableCopyCol:function(){return i().each(function(e){return t.setColumns(e)})},mceTableCopyRow:function(){return o().each(function(e){return t.setRows(e)})},mceTablePasteColBefore:function(){return c(n.pasteColsBefore,t.getColumns)},mceTablePasteColAfter:function(){return c(n.pasteColsAfter,t.getColumns)},mceTablePasteRowBefore:function(){return c(n.pasteRowsBefore,t.getRows)},mceTablePasteRowAfter:function(){return c(n.pasteRowsAfter,t.getRows)},mceTableDelete:function(){return wl(l).each(function(e){rt(e,d).filter(p(d)).each(function(e){var n,t=Ve.fromText("");Dt(e,t),Yt(e),l.dom.isEmpty(l.getBody())?(l.setContent(""),l.selection.setCursorLocation()):((n=l.dom.createRng()).setStart(t.dom,0),n.setEnd(t.dom,0),l.selection.setRng(n),l.nodeChanged())})})},mceTableCellToggleClass:function(e,r){f(function(e){var n=Ql(a),t=z(n,function(e){return l.formatter.match("tablecellclass",{value:r},e.dom)})?l.formatter.remove:l.formatter.apply;A(n,function(e){return t("tablecellclass",{value:r},e.dom)}),Gu(l,e.dom,Ca)})},mceTableToggleClass:function(e,n){f(function(e){l.formatter.toggle("tableclass",{value:n},e.dom),Gu(l,e.dom,Ca)})},mceTableToggleCaption:function(){wl(l).each(function(n){rt(n,d).each(function(r){An(r,"caption").fold(function(){var e,n,t=Ve.fromTag("caption");Xt(t,Ve.fromText("Caption")),n=t,an(e=r,0).fold(function(){Xt(e,n)},function(e){Rt(e,n)}),l.selection.setCursorLocation(t.dom,0)},function(e){en("caption")(n)&&ie("td",r).each(function(e){return l.selection.setCursorLocation(e.dom,0)}),Yt(e)}),Gu(l,r.dom,Sa)})})},mceTableSizingMode:function(e,n){return t=n,wl(l).each(function(e){Ia(l)||ka(l)||ui(l)||rt(e,d).each(function(e){"relative"!==t||Bl(e)?"fixed"!==t||Ml(e)?"responsive"!==t||El(e)||Ea(e):Ma(e):Ba(e),nu(e),Gu(l,e.dom,Sa)})});var t},mceTableCellType:m(function(e){return"th"===e?n.makeCellsHeader:n.unmakeCellsHeader}),mceTableColType:m(function(e){return"th"===e?n.makeColumnsHeader:n.unmakeColumnsHeader}),mceTableRowType:m(function(e){switch(e){case"header":return n.makeRowsHeader;case"footer":return n.makeRowsFooter;default:return n.makeRowsBody}})},function(e,n){return l.addCommand(n,e)}),ae({mceTableProps:P(vl,l,!1),mceTableRowProps:P(bl,l),mceTableCellProps:P(dl,l,a)},function(e,n){return l.addCommand(n,function(){return e()})}),l.addCommand("mceInsertTable",function(e,n){g(n)&&0<Ue(n).length?Lc(l,n.rows,n.columns,n.options,"Invalid values for mceInsertTable - rows and columns values are required to insert a table."):vl(l,!0)}),l.addCommand("mceTableApplyCellStyle",function(e,n){function r(e){return"tablecell"+e.toLowerCase().replace("-","")}var o,t;!g(n)||0!==(o=Ql(a)).length&&(function(e){for(var n in e)if(Ge.call(e,n))return;return 1}(t=se(n,function(e,n){return l.formatter.has(r(n))&&T(e)}))||(ae(t,function(n,t){A(o,function(e){Nf.normal(l,e.dom).setFormat(r(t),n)})}),u(o[0]).each(function(e){return Gu(l,e.dom,Ca)})))})}function Cl(t,e){return rt(t,e).bind(function(e){var n=nt(e);return b(n,function(e){return ce(t,e)}).map(function(e){return{index:e,all:n}})})}function Sl(e,n){var t=e.document.createRange();return t.selectNode(n.dom),t}function Tl(e,n){var t=e.document.createRange();return Jf(t,n),t}function xl(e,n,t){var r,o=e.document.createRange(),u=o;return n.fold(function(e){u.setStartBefore(e.dom)},function(e,n){u.setStart(e.dom,n)},function(e){u.setStartAfter(e.dom)}),r=o,t.fold(function(e){r.setEndBefore(e.dom)},function(e,n){r.setEnd(e.dom,n)},function(e){r.setEndAfter(e.dom)}),o}function Rl(e,n,t,r,o){var u=e.document.createRange();return u.setStart(n.dom,t),u.setEnd(r.dom,o),u}function Dl(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom,width:e.width,height:e.height}}function Ol(e,n,t){return n(Ve.fromDom(t.startContainer),t.startOffset,Ve.fromDom(t.endContainer),t.endOffset)}function Al(e,n){var o,t,r,u=(o=e,n.match({domRange:function(e){return{ltr:C(e),rtl:q.none}},relative:function(e,n){return{ltr:Y(function(){return xl(o,e,n)}),rtl:Y(function(){return q.some(xl(o,n,e))})}},exact:function(e,n,t,r){return{ltr:Y(function(){return Rl(o,e,n,t,r)}),rtl:Y(function(){return q.some(Rl(o,t,r,e,n))})}}}));return(r=(t=u).ltr()).collapsed?t.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Qf.rtl(Ve.fromDom(e.endContainer),e.endOffset,Ve.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Ol(0,Qf.ltr,r)}):Ol(0,Qf.ltr,r)}function kl(u,e){return Al(u,e).match({ltr:function(e,n,t,r){var o=u.document.createRange();return o.setStart(e.dom,n),o.setEnd(t.dom,r),o},rtl:function(e,n,t,r){var o=u.document.createRange();return o.setStart(t.dom,r),o.setEnd(e.dom,n),o}})}function Il(e,n){return{parent:C(q.from(e.dom.documentElement).map(Ve.fromDom).getOr(e)),view:C(e),origin:C(uo(0,0)),isResizable:n}}function Bl(e){return yo(e).exists(function(e){return _l.test(e)})}function Ml(e){return yo(e).exists(function(e){return Wl.test(e)})}function El(e){return yo(e).isNone()}function Pl(){return{transformRow:S,transformCell:Si}}function Nl(o,u){function r(e){if(sc(e))return Ka((t={element:e}).element)?o.colgroup(t):o.row(t);var n,t,r=(n=u(e),$a(n.element)?o.col(n):o.cell(n));return i=q.some({item:e,replacement:r}),r}void 0===u&&(u=mc);var i=q.none();return{getOrInit:function(n,t){return i.fold(function(){return r(n)},function(e){return t(n,e.item)?e.replacement:r(n)})}}}function zl(r){return function(t){function u(e){var n=t.replace(e,r,"td"===r?{scope:null}:{});return i.push({item:e,sub:n}),n}var i=[];return{replaceOrInit:function(n,t){return sc(n)||$a(n)?n:(r=n,o=t,w(i,function(e){return o(e.item,r)}).fold(function(){return u(n)},function(e){return t(n,e.item)?e.sub:u(n)}));var r,o}}}}function Ll(r){return{unmerge:function(t){var e=dc(t);return e.each(function(e){return Mn(t,"scope",e)}),function(){var n=r.cell({element:t,colspan:1,rowspan:1});return $n(n,"width"),$n(t,"width"),e.each(function(e){return Mn(n,"scope",e)}),n}},merge:function(r){return $n(r[0],"width"),function(){var e=_n(O(r,dc));if(0===e.length)return q.none();var n=e[0],t=["row","col"];return R(e,function(e){return e!==n&&y(t,e)})?q.none():q.from(n)}().fold(function(){return Wt(r[0],"scope")},function(e){return Mn(r[0],"scope",e+"group")}),C(r[0])}}}var _l=/(\d+(\.\d+)?)%/,Wl=/(\d+(\.\d+)?)px|em/,jl=en("col"),Fl=C(_l),Hl=en("col"),Vl=function(r){return yo(r).fold(function(){return e=Eo(t=r,vr),n=C(0),{width:e,pixelWidth:e,getWidths:function(e,n){return Bo(e,t,n)},getCellDelta:n,singleColumnWidth:C([0]),minCellWidth:n,setElementWidth:E,adjustTableWidth:E,isRelative:!0,label:"none"};var t,e,n},function(e){return n=r,t=e,(null!==Fl().exec(t)?Po:No)(n);var n,t})},ql=No,Ul=Po,Gl=["img","br"],$l=function(e,u){var i=function(e){for(var n=ln(e),t=n.length-1;0<=t;t--){var r=n[t];if(u(r))return q.some(r);var o=i(r);if(o.isSome())return o}return q.none()};return i(e)},Kl={scope:["row","col"]},Xl={selected:"data-mce-selected",selectedSelector:"td[data-mce-selected],th[data-mce-selected]",firstSelected:"data-mce-first-selected",firstSelectedSelector:"td[data-mce-first-selected],th[data-mce-first-selected]",lastSelected:"data-mce-last-selected",lastSelectedSelector:"td[data-mce-last-selected],th[data-mce-last-selected]"},Yl=uu("th,td,caption"),Jl=uu("th,td"),Ql=ru,Zl=Lr([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}]),ea=K({},Zl),na=mu(function(e){return e<0}),ta=mu(x),ra=Lr([{invalid:["raw"]},{pixels:["value"]},{percent:["value"]}]),oa=K(K({},ra),{from:function(e){return ee(e,"%")?pu("%",ra.percent,e):ee(e,"px")?pu("px",ra.pixels,e):ra.invalid(e)}}),ua=function(e){if(0===e.length)return e;var n,t,r=I(e,function(e,n){var t=oa.from(n).fold(function(){return{value:n,remainder:0}},function(e){return n=e,{value:(t=Math.floor(n))+"px",remainder:n-t};var n,t},function(e){return{value:e+"%",remainder:0}});return{output:[t.value].concat(e.output),remainder:e.remainder+t.remainder}},{output:[],remainder:0}),o=r.output;return o.slice(0,o.length-1).concat([(n=o[o.length-1],t=Math.round(r.remainder),oa.from(n).fold(C(n),function(e){return e+t+"px"},function(e){return e+t+"%"}))])},ia=oa.from,ca=Ru(["compare","extract","mutate","sink"]),la=Ru(["element","start","stop","destroy"]),aa=Ru(["forceDrop","drop","move","delayDrop"]),fa=function(e,n,t,r){e.dom.removeEventListener(n,t,r)},sa=x,ma=Ou,da=Eu("ephox-dragster").resolve,ga=ca({compare:function(e,n){return uo(n.left-e.left,n.top-e.top)},extract:function(e){return q.some(uo(e.x,e.y))},sink:function(e,n){var t,r,o,u=(t=n,r=K({layerClass:da("blocker")},t),Mn(o=Ve.fromTag("div"),"role","presentation"),qn(o,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Bu(o,da("blocker")),Bu(o,r.layerClass),{element:C(o),destroy:function(){Yt(o)}}),i=Au(u.element(),"mousedown",e.forceDrop),c=Au(u.element(),"mouseup",e.drop),l=Au(u.element(),"mousemove",e.move),a=Au(u.element(),"mouseout",e.delayDrop);return la({element:u.element,start:function(e){Xt(e,u.element())},stop:function(){Yt(u.element())},destroy:function(){u.destroy(),c.unbind(),l.unbind(),a.unbind(),i.unbind()}})},mutate:function(e,n){e.mutate(n.left,n.top)}}),pa=function(e){return e.dom.contentEditable},ba=Eu("ephox-snooker").resolve,ha=ba("resizer-bar"),va=ba("resizer-rows"),wa=ba("resizer-cols"),ya=ba("resizer-bar-dragging"),Ca={structure:!1,style:!0},Sa={structure:!0,style:!1},Ta={structure:!0,style:!0},xa={"border-collapse":"collapse",width:"100%"},Ra=D(5,function(e){var n=e+1+"px";return{title:n,value:n}}),Da=O(["Solid","Dotted","Dashed","Double","Groove","Ridge","Inset","Outset","None","Hidden"],function(e){return{title:e,value:e.toLowerCase()}}),Oa={border:"1"},Aa="preservetable",ka=function(e){return"fixed"===$u(e)||!1===Ku(e)},Ia=function(e){return"responsive"===$u(e)},Ba=function(e){var n=Ro(e);wu(e,q.some(n),q.none()),gi(e)},Ma=function(e){var n=vr(e)+"px";wu(e,q.some(n),q.none()),gi(e)},Ea=function(e){$n(e,"width");var n=tt(e);A(0<n.length?n:nt(e),function(e){$n(e,"width"),gi(e)}),gi(e)},Pa="bar-",Na=function(n,e,t){return n.property().isText(e)&&0===n.property().getText(e).trim().length||n.property().isComment(e)?t(e).bind(function(e){return Na(n,e,t).orThunk(function(){return q.some(e)})}):q.none()},za=function(e,n){var t=Na(e,n,e.query().prevSibling).getOr(n);if(e.property().isText(t))return hi(t,vi(e,t));var r=e.property().children(t);return 0<r.length?za(e,r[r.length-1]):hi(t,vi(e,t))},La=za,_a=Zt(),Wa=en("th"),ja=function(e){var n=k(e,function(e){return Wa(e.element)});return 0===n.length?q.some("td"):n.length===e.length?q.some("th"):q.none()},Fa=xi,Ha=Ri,Va=Di,qa=function(t){return{isValue:x,isError:v,getOr:C(t),getOrThunk:C(t),getOrDie:C(t),or:function(e){return qa(t)},orThunk:function(e){return qa(t)},fold:function(e,n){return n(t)},map:function(e){return qa(e(t))},mapError:function(e){return qa(t)},each:function(e){e(t)},bind:function(e){return e(t)},exists:function(e){return e(t)},forall:function(e){return e(t)},toOptional:function(){return q.some(t)}}},Ua=function(t){return{isValue:v,isError:x,getOr:S,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(t),function(){throw new Error(e)}();var e},or:S,orThunk:function(e){return e()},fold:function(e,n){return e(t)},map:function(e){return Ua(t)},mapError:function(e){return Ua(e(t))},each:E,bind:function(e){return Ua(t)},exists:v,forall:x,toOptional:q.none}},Ga={value:qa,error:Ua,fromOption:function(e,n){return e.fold(function(){return Ua(n)},qa)}},$a=en("col"),Ka=en("colgroup"),Xa=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],Ya=Zt(),Ja=Sc("thead",!0),Qa=Sc("tbody",!1),Za=Sc("tfoot",!1),ef=zl("th"),nf=zl("td"),tf=zi(function(e,n,t,r){var o=n[0].row;return yc(I(Cc(n),function(e,n){return{grid:nc(e.grid,o,n.row+e.delta,t,r.getOrInit),delta:e.delta+1}},{grid:e,delta:0}).grid,o,n[0].column)},_i,E,E,Nl),rf=zi(function(e,n,t,r){var o=Cc(n),u=o[o.length-1],i=u.row+u.rowspan;return yc(I(o,function(e,n){return nc(e,i,n.row,t,r.getOrInit)},e),i,n[0].column)},_i,E,E,Nl),of=zi(function(e,n,t,r){var o=n.details,u=fc(o),i=u[0].column;return yc(I(u,function(e,n){return{grid:tc(e.grid,i,n.column+e.delta,t,r.getOrInit),delta:e.delta+1}},{grid:e,delta:0}).grid,o[0].row,i)},kc(!0),Rc,E,Nl),uf=zi(function(e,n,t,r){var o=n.details,u=o[o.length-1],i=u.column+u.colspan;return yc(I(fc(o),function(e,n){return tc(e,i,n.column,t,r.getOrInit)},e),o[0].row,i)},kc(!1),Rc,E,Nl),cf=zi(function(e,n,t,r){var o,u,i=fc(n.details),c=(o=e,u=O(i,function(e){return e.column}),N(o,function(e){var n=e.cells,t=I(u,function(e,n){return 0<=n&&n<e.length?e.slice(0,n).concat(e.slice(n+1)):e},n);return 0<t.length?[ye(e.element,t,e.section,e.isNew)]:[]})),l=0<c.length?c[0].cells.length-1:0;return yc(c,i[0].row,Math.min(i[0].column,l))},function(n,e){return Wi(n,e).map(function(e){return{details:e,pixelDelta:-Ac(n,e)}})},Rc,vc,Nl),lf=zi(function(e,n,t,r){var o,u,i,c,l=Cc(n),a=(o=l[0].row,u=l[l.length-1].row,c=(i=gt(e)).rows,i.cols.concat(c.slice(0,o)).concat(c.slice(u+1))),f=0<a.length?a.length-1:0;return yc(a,Math.min(n[0].row,f),n[0].column)},_i,E,vc,Nl),af=zi(function(e,n,t,r){return yc(lc(e,O(fc(n),function(e){return e.column}),!0,t,r.replaceOrInit),n[0].row,n[0].column)},Wi,E,E,ef),ff=zi(function(e,n,t,r){return yc(lc(e,O(fc(n),function(e){return e.column}),!1,t,r.replaceOrInit),n[0].row,n[0].column)},Wi,E,E,nf),sf=zi(Ja,Wi,E,E,ef),mf=zi(Qa,Wi,E,E,nf),df=zi(Za,Wi,E,E,nf),gf=zi(function(e,n,t,r){return yc(ac(e,n,t,r.replaceOrInit),n[0].row,n[0].column)},Wi,E,E,ef),pf=zi(function(e,n,t,r){return yc(ac(e,n,t,r.replaceOrInit),n[0].row,n[0].column)},Wi,E,E,nf),bf=zi(function(e,n,t,r){var o=n.cells;return bc(o),wc(function(e,n,t){var r=gt(e).rows;if(0===r.length)return e;for(var o=n.startRow;o<=n.finishRow;o++)for(var u=n.startCol;u<=n.finishCol;u++){var i=r[o],c=st(i,u).isLocked;ft(i,u,we(t(),!1,c))}return e}(e,n.bounds,r.merge(o)),q.from(o[0]))},Fi,xc,E,Ll),hf=zi(function(e,n,t,r){return wc(I(n,function(e,n){return Vi(e,n,t,r.unmerge(n))},e),q.from(n[0]))},Hi,xc,E,Ll),vf=zi(function(e,n,t,r){var o,u,i=(o=n.clipboard,u=n.generators,Mi($t.fromTable(o),u,!0));return Qi({row:n.row,column:n.column},e,i,n.generators,t).fold(function(){return wc(e,q.some(n.element))},function(e){return yc(e,n.row,n.column)})},function(n,t){return et(t.element).bind(function(e){return Pi(n,e).map(function(e){return K(K({},e),{generators:t.generators,clipboard:t.clipboard})})})},xc,E,Nl),wf=zi(function(e,n,t,r){var o=gt(e).rows,u=n.cells[0].column,i=o[n.cells[0].row];return yc(Zi(u,e,Tc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Ic(!0),E,E,Nl),yf=zi(function(e,n,t,r){var o=gt(e).rows,u=n.cells[n.cells.length-1].column+n.cells[n.cells.length-1].colspan,i=o[n.cells[0].row];return yc(Zi(u,e,Tc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Ic(!1),E,E,Nl),Cf=zi(function(e,n,t,r){var o=gt(e).rows,u=n.cells[0].row,i=o[u];return yc(ec(u,e,Tc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Li,E,E,Nl),Sf=zi(function(e,n,t,r){var o=gt(e).rows,u=n.cells[n.cells.length-1].row+n.cells[n.cells.length-1].rowspan,i=o[n.cells[0].row];return yc(ec(u,e,Tc(n.clipboard,n.generators,i),n.generators,t),n.cells[0].row,n.cells[0].column)},Li,E,E,Nl),Tf=function(e,n){var i=$t.fromTable(e);return _i(i,n).bind(function(e){var n=e[e.length-1],o=e[0].row,u=n.row+n.rowspan;return function(){var e=O(i.all.slice(o,u),function(e){return Ci(e).type}),n=y(e,"header"),t=y(e,"footer");if(n||t){var r=y(e,"body");return!n||r||t?n||r||!t?q.none():q.some("footer"):q.some("header")}return q.some("body")}()}).getOr("")},xf={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},colGroups:!1},Rf=tinymce.util.Tools.resolve("tinymce.util.Tools"),Df=[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}],Of=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,Af=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,kf=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,If=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,Bf=function(e){return O(e,function(e){var n=e.text||e.title;return Qc(e)?{text:n,items:Bf(e.menu)}:{text:n,value:e.value}})},Mf=function(t,r,e,o,a){return O(e,function(e){var u,i,c,l,n=e.text||e.title;return Qc(e)?{type:"nestedmenuitem",text:n,getSubmenuItems:function(){return Mf(t,r,e.menu,o,a)}}:{text:n,type:"togglemenuitem",onAction:function(){return a(e.value)},onSetup:(u=t,i=r,c=o,l=e.value,function(t){function e(){function e(e){return u.formatter.match(c,{value:l},e.dom,o)}var n=Ql(i);o?(t.setActive(!R(n,e)),r.set(u.formatter.formatChanged(c,function(e){return t.setActive(!e)},!0))):(t.setActive(z(n,e)),r.set(u.formatter.formatChanged(c,t.setActive,!1,{value:l})))}var r=Yc(function(e){return e.unbind()}),o=!ne(l);return u.initialized?e():u.on("init",e),r.clear})}})},Ef=function(e){return N(e,function(e){return Qc(e)?[K(K({},e),{menu:Ef(e.menu)})]:ne(e.value)?[e]:[]})},Pf=[{name:"width",type:"input",label:"Width"},{name:"height",type:"input",label:"Height"},{name:"celltype",type:"listbox",label:"Cell type",items:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{name:"scope",type:"listbox",label:"Scope",items:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{name:"halign",type:"listbox",label:"Horizontal align",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{name:"valign",type:"listbox",label:"Vertical align",items:Df}],Nf={normal:il(!1),ifTruthy:il(!0)},zf=P(fl,["left","center","right"],"align"),Lf=P(fl,["top","middle","bottom"],"valign"),_f=[{type:"listbox",name:"type",label:"Row type",items:[{text:"Header",value:"header"},{text:"Body",value:"body"},{text:"Footer",value:"footer"}]},{type:"listbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height",type:"input"}],Wf=function(e,n,t,r){if("TD"===n.tagName||"TH"===n.tagName)T(t)?e.setStyle(n,t,r):e.setStyle(n,t);else if(n.children)for(var o=0;o<n.children.length;o++)Wf(e,n.children[o],t,r)},jf={remove_similar:!0,inherit:!1},Ff=K({selector:"td,th"},jf),Hf={tablecellbackgroundcolor:K({styles:{backgroundColor:"%value"}},Ff),tablecellverticalalign:K({styles:{"vertical-align":"%value"}},Ff),tablecellbordercolor:K({styles:{borderColor:"%value"}},Ff),tablecellclass:K({classes:["%value"]},Ff),tableclass:K({selector:"table",classes:["%value"]},jf),tablecellborderstyle:K({styles:{borderStyle:"%value"}},Ff),tablecellborderwidth:K({styles:{borderWidth:"%value"}},Ff)},Vf=Lr([{none:["current"]},{first:["current"]},{middle:["current","target"]},{last:["current"]}]),qf=K(K({},Vf),{none:function(e){return Vf.none(e=void 0===e?void 0:e)}}),Uf=function(e,n,t,r,o){void 0===o&&(o=x);var u=1===r;if(!u&&t<=0)return qf.first(e[0]);if(u&&t>=e.length-1)return qf.last(e[e.length-1]);var i=t+r,c=e[i];return o(c)?qf.middle(n,c):Uf(e,n,i,r,o)},Gf=function(e,n,t,r){return{start:e,soffset:n,finish:t,foffset:r}},$f=Lr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Kf={before:$f.before,on:$f.on,after:$f.after,cata:function(e,n,t,r){return e.fold(n,t,r)},getStart:function(e){return e.fold(S,S,S)}},Xf=Lr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Yf={domRange:Xf.domRange,relative:Xf.relative,exact:Xf.exact,exactFromRange:function(e){return Xf.exact(e.start,e.soffset,e.finish,e.foffset)},getWin:function(e){var n=e.match({domRange:function(e){return Ve.fromDom(e.startContainer)},relative:function(e,n){return Kf.getStart(e)},exact:function(e,n,t,r){return e}});return Ve.fromDom(tn(n).dom.defaultView)},range:Gf},Jf=function(e,n){return e.selectNodeContents(n.dom)},Qf=Lr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function Zf(e,n,t){return n>=e.left&&n<=e.right&&t>=e.top&&t<=e.bottom}function es(t,r,e,n,o){function l(e){var n=t.dom.createRange();return n.setStart(r.dom,e),n.collapse(!0),n}var u=Et(r).length,i=function(e,n,t,r){if(0===r)return 0;if(e===t)return r-1;for(var o=t,u=1;u<r;u++){var i=l(u).getBoundingClientRect(),c=Math.abs(e-i.left);if(n<=i.bottom){if(n<i.top||o<c)return u-1;o=c}}return 0}(e,n,o.right,u);return l(i)}function ns(e,n){return n-e.left<e.right-n}function ts(e,n,t){var r=e.dom.createRange();return r.selectNode(n.dom),r.collapse(t),r}function rs(n,e,t){var r=n.dom.createRange();r.selectNode(e.dom);var o=ns(r.getBoundingClientRect(),t);return(!0===o?Wo:jo)(e).map(function(e){return ts(n,e,o)})}function os(e,n,t){var r=ns(n.dom.getBoundingClientRect(),t);return q.some(ts(e,n,r))}function us(e,n){var t=Ye(e);return"input"===t?Kf.after(e):y(["br","img"],t)?0===n?Kf.before(e):Kf.after(e):Kf.on(e,n)}function is(e,n){var t=e.fold(Kf.before,us,Kf.after),r=n.fold(Kf.before,us,Kf.after);return Yf.relative(t,r)}function cs(e,n,t,r){var o=us(e,n),u=us(t,r);return Yf.relative(o,u)}function ls(e){return q.from(e.getSelection())}function as(e,n){ls(e).each(function(e){e.removeAllRanges(),e.addRange(n)})}function fs(e,n,t,r,o){as(e,Rl(e,n,t,r,o))}function ss(l,e){return Al(l,e).match({ltr:function(e,n,t,r){fs(l,e,n,t,r)},rtl:function(o,u,i,c){ls(l).each(function(e){if(e.setBaseAndExtent)e.setBaseAndExtent(o.dom,u,i.dom,c);else if(e.extend)try{t=i,r=c,(n=e).collapse(o.dom,u),n.extend(t.dom,r)}catch(e){fs(l,i,c,o,u)}else fs(l,i,c,o,u);var n,t,r})}})}function ms(e,n,t,r,o){ss(e,cs(n,t,r,o))}function ds(e,n,t){ss(e,is(n,t))}function gs(e){if(0<e.rangeCount){var n=e.getRangeAt(0),t=e.getRangeAt(e.rangeCount-1);return q.some(Gf(Ve.fromDom(n.startContainer),n.startOffset,Ve.fromDom(t.endContainer),t.endOffset))}return q.none()}function ps(e){if(null===e.anchorNode||null===e.focusNode)return gs(e);var n,t,r,o,u,i,c,l,a,f,s,m=Ve.fromDom(e.anchorNode),d=Ve.fromDom(e.focusNode);return n=m,t=e.anchorOffset,r=d,o=e.focusOffset,i=t,c=r,l=o,(a=nn(u=n).dom.createRange()).setStart(u.dom,i),a.setEnd(c.dom,l),f=a,s=ce(n,r)&&t===o,f.collapsed&&!s?q.some(Gf(m,e.anchorOffset,d,e.focusOffset)):gs(e)}function bs(e,n,t){as(e,((t=void 0===t||t)?Tl:Sl)(e,n))}function hs(e){return ls(e).filter(function(e){return 0<e.rangeCount}).bind(ps).map(function(e){return Yf.exact(e.start,e.soffset,e.finish,e.foffset)})}function vs(e,n,t){return Zs(e,n,(o=Nu,Cl(r=t,void 0).fold(function(){return qf.none(r)},function(e){return Uf(e.all,r,e.index,1,o)})));var r,o}function ws(e,n){var t=kl(e,n);return Gf(Ve.fromDom(t.startContainer),t.startOffset,Ve.fromDom(t.endContainer),t.endOffset)}function ys(e,n){return{item:e,mode:n}}function Cs(e,n,t,r){return void 0===r&&(r=Ks),e.property().parent(n).map(function(e){return ys(e,r)})}function Ss(n){return function(e){return 0===n.property().children(e).length}}function Ts(e,n){return am(sm,e,Ss(sm),n)}function xs(e,n){return fm(sm,e,Ss(sm),n)}function Rs(e){return In(e,"tr")}function Ds(e){return"br"===Ye(e)}function Os(e,n,t,r){var o,u,i,c,l,a,f;return(Ds(n)?(o=e,(i=r).traverse(u=n).orThunk(function(){return pm(u,i.gather,o)}).map(i.relative)):(c=e,l=r,an(a=n,f=t).filter(Ds).orThunk(function(){return an(a,f-1).filter(Ds)}).bind(function(e){return l.traverse(e).fold(function(){return pm(e,l.gather,c).map(l.relative)},function(e){return rn(r=e).bind(function(n){var t=ln(n);return gm(t,r).map(function(e){return{parent:n,children:t,element:r,index:e}})}).map(function(e){return Kf.on(e.parent,e.index)});var r})}))).map(function(e){return{start:e,finish:e}})}function As(e,n){return{left:e.left,top:e.top+n,right:e.right,bottom:e.bottom+n}}function ks(e,n){return{left:e.left,top:e.top-n,right:e.right,bottom:e.bottom-n}}function Is(e,n,t){return{left:e.left+n,top:e.top+t,right:e.right+n,bottom:e.bottom+t}}function Bs(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function Ms(e,n){return q.some(e.getRect(n))}function Es(e,n,t){return gn(n)?Ms(e,n).map(Bs):pn(n)?(r=e,o=n,(0<=(u=t)&&u<Lo(o)?r.getRangedRect(o,u,o,u+1):0<u?r.getRangedRect(o,u-1,o,u):q.none()).map(Bs)):q.none();var r,o,u}function Ps(e,n){return gn(n)?Ms(e,n).map(Bs):pn(n)?e.getRangedRect(n,0,n,Lo(n)).map(Bs):q.none()}function Ns(n,e,r){return Rn(function(e,n){return n(e)},Dn,e,gc,void 0).fold(v,function(e){return Ps(n,e).exists(function(e){return(n=r).left<(t=e).left||Math.abs(t.right-n.left)<1||n.left>t.right;var n,t})})}function zs(n,t,e){var r,o=n.move(e,5),u=vm(t,n,e,o,100).getOr(o),i=u,c=t;return((r=n).point(i)>c.getInnerHeight()?q.some(r.point(i)-c.getInnerHeight()):r.point(i)<0?q.some(-r.point(i)):q.none()).fold(function(){return t.situsFromPoint(u.left,n.point(u))},function(e){return t.scrollBy(0,e),t.situsFromPoint(u.left,n.point(u)-e)})}function Ls(a,f,s,e,m){return In(e,"td,th",f).bind(function(l){return In(l,"table",f).bind(function(e){return n=e,Dn(m,function(e){return rn(e).exists(function(e){return ce(e,n)})},void 0).isSome()?(o=t=a,u=r=f,i=c=s,o.getSelection().bind(function(r){return Os(u,r.finish,r.foffset,i).fold(function(){return q.some(hi(r.finish,r.foffset))},function(e){var n=o.fromSitus(e),t=dm.verify(o,r.finish,r.foffset,n.finish,n.foffset,i.failure,u);return dm.cata(t,function(e){return q.none()},function(){return q.none()},function(e){return q.some(hi(e,0))},function(e){return q.some(hi(e,Lo(e)))})})}).bind(function(e){return ym(t,r,e.element,e.offset,c,20).map(t.fromSitus)}).bind(function(n){return In(n.finish,"td,th",f).map(function(e){return{start:l,finish:e,range:n}})})):q.none();var o,u,i,n,t,r,c})})}function _s(e,n,t,r,o,u){return He().browser.isIE()?q.none():u(r,n).orThunk(function(){return Ls(e,n,t,r,o).map(function(e){var n=e.range;return nm(q.some(rm(n.start,n.soffset,n.finish,n.foffset)),!0)})})}function Ws(e,r){return In(e,"tr",r).bind(function(t){return In(t,"table",r).bind(function(e){var n=dn(e,"tr");return ce(t,n[0])?am(sm,e,function(e){return jo(e).isSome()},r).map(function(e){var n=Lo(e);return nm(q.some(rm(e,n,e,n)),!0)}):q.none()})})}function js(e,r){return In(e,"tr",r).bind(function(t){return In(t,"table",r).bind(function(e){var n=dn(e,"tr");return ce(t,n[n.length-1])?fm(sm,e,function(e){return Wo(e).isSome()},r).map(function(e){return nm(q.some(rm(e,0,e,0)),!0)}):q.none()})})}function Fs(e,n,t,r,o,u,i){return Ls(e,t,r,o,u).bind(function(e){return om(n,t,e.start,e.finish,i)})}function Hs(e,n){return In(e,"td,th",n)}function Vs(n){return function(e){return e===n}}function qs(e){return 37<=e&&e<=40}function Us(l){return{elementFromPoint:function(e,n){return Ve.fromPoint(Ve.fromDom(l.document),e,n)},getRect:function(e){return e.dom.getBoundingClientRect()},getRangedRect:function(e,n,t,r){var o,u,i,c=Yf.exact(e,n,t,r);return i=(o=kl(l,c)).getClientRects(),0<(u=0<i.length?i[0]:o.getBoundingClientRect()).width||0<u.height?q.some(u).map(Dl):q.none()},getSelection:function(){return hs(l).map(function(e){return ws(l,e)})},fromSitus:function(e){var n=Yf.relative(e.start,e.finish);return ws(l,n)},situsFromPoint:function(e,n){return t=e,r=n,o=Ve.fromDom(l.document),Js(o,t,r).map(function(e){return Gf(Ve.fromDom(e.startContainer),e.startOffset,Ve.fromDom(e.endContainer),e.endOffset)}).map(function(e){return tm(e.start,e.soffset,e.finish,e.foffset)});var t,r,o},clearSelection:function(){ls(l).each(function(e){return e.removeAllRanges()})},collapseSelection:function(i){void 0===i&&(i=!1),hs(l).each(function(e){return e.fold(function(e){return e.collapse(i)},function(e,n){var t=i?e:n;ds(l,t,t)},function(e,n,t,r){var o=i?e:t,u=i?n:r;ms(l,o,u,o,u)})})},setSelection:function(e){ms(l,e.start,e.soffset,e.finish,e.foffset)},setRelativeSelection:function(e,n){ds(l,e,n)},selectNode:function(e){bs(l,e,!1)},selectContents:function(e){bs(l,e)},getInnerHeight:function(){return l.innerHeight},getScrollY:function(){var e=Ve.fromDom(l.document),n=void 0!==e?e.dom:document,t=n.body.scrollLeft||n.documentElement.scrollLeft,r=n.body.scrollTop||n.documentElement.scrollTop;return uo(t,r).top},scrollBy:function(e,n){var t,r=e,o=n,u=Ve.fromDom(l.document);(t=(void 0!==u?u.dom:document).defaultView)&&t.scrollBy(r,o)}}}function Gs(e,n){return{rows:e,cols:n}}function $s(e){return!1===Mu(Ve.fromDom(e.target),"ephox-snooker-resizer-bar")}Qf.ltr,Qf.rtl;function Ks(e,n,t,r){return void 0===r&&(r=um),t.sibling(e,n).map(function(e){return ys(e,r)})}function Xs(o,u,n){function t(e){Wt(e,o.selected),Wt(e,o.firstSelected),Wt(e,o.lastSelected)}function i(e){Mn(e,o.selected,"1")}function c(e){r(e),n()}function r(e){A(dn(e,o.selectedSelector+","+o.firstSelectedSelector+","+o.lastSelectedSelector),t)}return{clearBeforeUpdate:r,clear:c,selectRange:function(e,n,t,r){c(e),A(n,i),Mn(t,o.firstSelected,"1"),Mn(r,o.lastSelected,"1"),u(n,t,r)},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}var Ys=function(e,n,t,r){return pn(n)?(u=n,i=t,c=r,(l=(o=e).dom.createRange()).selectNode(u.dom),H(l.getClientRects(),function(e){return Zf(e,i,c)?q.some(e):q.none()}).map(function(e){return es(o,u,i,c,e)})):(f=n,s=t,m=r,d=(a=e).dom.createRange(),H(ln(f),function(e){return d.selectNode(e.dom),Zf(d.getBoundingClientRect(),s,m)?Ys(a,e,s,m):q.none()}));var o,u,i,c,l,a,f,s,m,d},Js=document.caretPositionFromPoint?function(t,e,n){var r,o;return q.from(null===(o=(r=t.dom).caretPositionFromPoint)||void 0===o?void 0:o.call(r,e,n)).bind(function(e){if(null===e.offsetNode)return q.none();var n=t.dom.createRange();return n.setStart(e.offsetNode,e.offset),n.collapse(),q.some(n)})}:document.caretRangeFromPoint?function(e,n,t){var r,o;return q.from(null===(o=(r=e.dom).caretRangeFromPoint)||void 0===o?void 0:o.call(r,n,t))}:function(o,u,n){return Ve.fromPoint(o,u,n).bind(function(r){function e(){return e=o,t=u,(0===ln(n=r).length?os:rs)(e,n,t);var e,n,t}return 0===ln(r).length?e():function(e,n,t,r){var o=e.dom.createRange();o.selectNode(n.dom);var u=o.getBoundingClientRect();return function(e,n,t,r){var o=e.dom.createRange();o.selectNode(n.dom);var u=o.getBoundingClientRect(),i=Math.max(u.left,Math.min(u.right,t)),c=Math.max(u.top,Math.min(u.bottom,r));return Ys(e,n,i,c)}(e,n,Math.max(u.left,Math.min(u.right,t)),Math.max(u.top,Math.min(u.bottom,r)))}(o,r,u,n).orThunk(e)})},Qs=tinymce.util.Tools.resolve("tinymce.util.VK"),Zs=function(n,t,e){return e.fold(q.none,q.none,function(e,n){return Wo(n).map(function(e){return u=Yf.exact(e,0,e,0),t=u,o=Yf.getWin(t).dom,r=t.match({domRange:function(e){var n=Ve.fromDom(e.startContainer),t=Ve.fromDom(e.endContainer);return cs(n,e.startOffset,t,e.endOffset)},relative:is,exact:cs}),Al(o,r).match({ltr:n,rtl:n});function n(e,n,t,r){return Rl(o,e,n,t,r)}var t,o,r,u})},function(e){return n.execCommand("mceTableInsertRowAfter"),vs(n,t,e)})},em=["table","li","dl"],nm=function(e,n){return{selection:e,kill:n}},tm=function(e,n,t,r){return{start:Kf.on(e,n),finish:Kf.on(t,r)}},rm=tm,om=function(t,e,r,n,o){return ce(r,n)?q.none():tr(r,n,e).bind(function(e){var n=e.boxes.getOr([]);return 1<n.length?(o(t,n,e.start,e.finish),q.some(nm(q.some(rm(r,0,r,Lo(r))),!0))):q.none()})},um=function(e,n,t,r){void 0===r&&(r=um);var o=e.property().children(n);return t.first(o).map(function(e){return ys(e,r)})},im=[{current:Cs,next:Ks,fallback:q.none()},{current:Ks,next:um,fallback:q.some(Cs)},{current:um,next:um,fallback:q.some(Ks)}],cm=function(n,t,r,o,e){return w(e=void 0===e?im:e,function(e){return e.current===r}).bind(function(e){return e.current(n,t,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return cm(n,t,e,o)})})})},lm=function(n,e,t,r,o,u){return cm(n,e,r,o).bind(function(e){return u(e.item)?q.none():t(e.item)?q.some(e.item):lm(n,e.item,t,e.mode,o,u)})},am=function(e,n,t,r){return lm(e,n,t,Ks,{sibling:function(e,n){return e.query().prevSibling(n)},first:function(e){return 0<e.length?q.some(e[e.length-1]):q.none()}},r)},fm=function(e,n,t,r){return lm(e,n,t,Ks,{sibling:function(e,n){return e.query().nextSibling(n)},first:function(e){return 0<e.length?q.some(e[0]):q.none()}},r)},sm=Zt(),mm=Lr([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}]),dm=K(K({},mm),{verify:function(i,e,n,t,r,c,o){return In(t,"td,th",o).bind(function(u){return In(e,"td,th",o).map(function(o){return ce(u,o)?ce(t,u)&&Lo(u)===r?c(o):mm.none("in same cell"):er(Rs,[u,o]).fold(function(){return n=u,t=(e=i).getRect(o),(r=e.getRect(n)).right>t.left&&r.left<t.right?mm.success():c(o);var e,n,t,r},function(e){return c(o)})})}).getOr(mm.none("default"))},cata:function(e,n,t,r,o){return e.fold(n,t,r,o)}}),gm=function(e,n){return b(e,P(ce,n))},pm=function(e,n,t){return n(e,t).bind(function(e){return pn(e)&&0===Et(e).trim().length?pm(e,n,t):q.some(e)})},bm=Lr([{none:[]},{retry:["caret"]}]),hm={point:function(e){return e.bottom},adjuster:function(e,n,t,r,o){var u=As(o,5);return Math.abs(t.bottom-r.bottom)<1||t.top>o.bottom?bm.retry(u):t.top===o.bottom?bm.retry(As(o,1)):Ns(e,n,o)?bm.retry(Is(u,5,0)):bm.none()},move:As,gather:xs},vm=function(t,r,o,u,i){return 0===i?q.some(u):(n=t,c=u.left,l=r.point(u),n.elementFromPoint(c,l).filter(function(e){return"table"===Ye(e)}).isSome()?(e=i-1,vm(t,r,o,r.move(u,5),e)):t.situsFromPoint(u.left,r.point(u)).bind(function(e){return e.start.fold(q.none,function(n){return Ps(t,n).bind(function(e){return r.adjuster(t,n,e,o,u).fold(q.none,function(e){return vm(t,r,o,e,i-1)})}).orThunk(function(){return q.some(u)})},q.none)}));var e,n,c,l},wm={tryUp:P(zs,{point:function(e){return e.top},adjuster:function(e,n,t,r,o){var u=ks(o,5);return Math.abs(t.top-r.top)<1||t.bottom<o.top?bm.retry(u):t.bottom===o.top?bm.retry(ks(o,1)):Ns(e,n,o)?bm.retry(Is(u,5,0)):bm.none()},move:ks,gather:Ts}),tryDown:P(zs,hm),ieTryUp:function(e,n){return e.situsFromPoint(n.left,n.top-5)},ieTryDown:function(e,n){return e.situsFromPoint(n.left,n.bottom+5)},getJumpSize:C(5)},ym=function(r,o,u,i,c,l){return 0===l?q.none():Tm(r,o,u,i,c).bind(function(e){var n=r.fromSitus(e),t=dm.verify(r,u,i,n.finish,n.foffset,c.failure,o);return dm.cata(t,function(){return q.none()},function(){return q.some(e)},function(e){return ce(u,e)&&0===i?Cm(r,u,i,ks,c):ym(r,o,e,0,c,l-1)},function(e){return ce(u,e)&&i===Lo(e)?Cm(r,u,i,As,c):ym(r,o,e,Lo(e),c,l-1)})})},Cm=function(n,e,t,r,o){return Es(n,e,t).bind(function(e){return Sm(n,o,r(e,wm.getJumpSize()))})},Sm=function(e,n,t){var r=He().browser;return r.isChrome()||r.isSafari()||r.isFirefox()||r.isEdge()?n.otherRetry(e,t):r.isIE()?n.ieRetry(e,t):q.none()},Tm=function(n,e,t,r,o){return Es(n,t,r).bind(function(e){return Sm(n,o,e)})},xm={traverse:cn,gather:xs,relative:Kf.before,otherRetry:wm.tryDown,ieRetry:wm.ieTryDown,failure:dm.failedDown},Rm={traverse:un,gather:Ts,relative:Kf.before,otherRetry:wm.tryUp,ieRetry:wm.ieTryUp,failure:dm.failedUp},Dm=Vs(38),Om=Vs(40),Am={isBackward:Vs(37),isForward:Vs(39)},km={isBackward:Vs(39),isForward:Vs(37)},Im=tinymce.util.Tools.resolve("tinymce.Env");function Bm(I,B,e){var M=Xs(Xl,function(l,a,f){e.targets().each(function(c){rt(a).each(function(e){var n,o,u,t=fi(I),r=$o(E,Ve.fromDom(I.getDoc()),t),i=(n=c,o=r,_i(u=$t.fromTable(e),n).map(function(e){var n,t,r=Mi(u,o,!1);return{upOrLeftCells:N(Ei(r.slice(0,(n=e)[n.length-1].row+1)),function(e){return O(e.cells.slice(0,n[n.length-1].column+1),function(e){return e.element})}),downOrRightCells:N(Ei(r.slice((t=e)[0].row+t[0].rowspan-1,r.length)),function(e){return O(e.cells.slice(t[0].column+t[0].colspan-1,e.cells.length),function(e){return e.element})})}}));I.fire("TableSelectionChange",{cells:l,start:a,finish:f,otherCells:i})})})},function(){I.fire("TableSelectionClear")});return I.on("init",function(e){var n,t,r,o,u,i,m,d,g,a,c,l,f,s,p,b,h=I.getWin(),v=Yo(I),w=Zo(I),y=(n=Us(h),{clearstate:(c=n,l=v,f=w,s=M,p=Jc(),(t={clearstate:b=p.clear,mousedown:function(e){s.clear(l),Hs(e.target,f).each(p.set)},mouseover:function(e){x(e)},mouseup:function(e){x(e),b()}}).clearstate),mousedown:t.mousedown,mouseover:t.mouseover,mouseup:t.mouseup}),C=(a=Us(h),{keydown:function(e,n,t,r,o,i){var u=e.raw,c=u.which,l=!0===u.shiftKey;return rr(m,g.selectedSelector).fold(function(){return qs(c)&&!l&&g.clearBeforeUpdate(m),Om(c)&&l?P(Fs,a,m,d,xm,r,n,g.selectRange):Dm(c)&&l?P(Fs,a,m,d,Rm,r,n,g.selectRange):Om(c)?P(_s,a,d,xm,r,n,js):Dm(c)?P(_s,a,d,Rm,r,n,Ws):q.none},function(u){function e(e){return function(){return H(e,function(e){return n=e.rows,t=e.cols,r=m,ur(u,n,t,(o=g).firstSelectedSelector,o.lastSelectedSelector).map(function(e){return o.clearBeforeUpdate(r),o.selectRange(r,e.boxes,e.start,e.finish),e.boxes});var n,t,r,o}).fold(function(){return or(m,g.firstSelectedSelector,g.lastSelectedSelector).map(function(e){var n=Om(c)||i.isForward(c)?Kf.after:Kf.before;return a.setRelativeSelection(Kf.on(e.first,0),n(e.table)),g.clear(m),nm(q.none(),!0)})},function(e){return q.some(nm(q.none(),!0))})}}return Om(c)&&l?e([Gs(1,0)]):Dm(c)&&l?e([Gs(-1,0)]):i.isBackward(c)&&l?e([Gs(0,-1),Gs(-1,0)]):i.isForward(c)&&l?e([Gs(0,1),Gs(1,0)]):qs(c)&&!l?T:q.none})()},keyup:function(c,l,a,f,s){return rr(m,g.selectedSelector).fold(function(){var t,r,e,o,u,n=c.raw,i=n.which;return!0===n.shiftKey&&qs(i)?(t=m,r=d,u=g.selectRange,ce(e=l,o=f)&&a===s?q.none():In(e,"td,th",r).bind(function(n){return In(o,"td,th",r).bind(function(e){return om(t,r,n,e,u)})})):q.none()},q.none)}}),S=(r=m=v,o=d=w,u=g=M,i=Us(h),function(e,t){u.clearBeforeUpdate(r),tr(e,t,o).each(function(e){var n=e.boxes.getOr([]);u.selectRange(r,n,e.start,e.finish),i.selectContents(t),i.collapseSelection()})});function T(){return g.clear(m),q.none()}function x(i){p.on(function(e){s.clearBeforeUpdate(l),Hs(i.target,f).each(function(u){tr(e,u,f).each(function(e){var n,t,r,o=e.boxes.getOr([]);1===o.length?(n=o[0],t="false"===pa(n),r=Ln(Pu(i.target),n,ce),t&&r&&(s.selectRange(l,o,n,n),c.selectContents(n))):1<o.length&&(s.selectRange(l,o,e.start,e.finish),c.selectContents(u))})})})}function R(e,n){!0===e.raw.shiftKey&&(n.kill&&e.kill(),n.selection.each(function(e){var n=Yf.relative(e.start,e.finish),t=kl(h,n);I.selection.setRng(t)}))}function D(e){return 0===e.button}I.on("TableSelectorChange",function(e){return S(e.start,e.finish)});var O,A,k=(O=Xc(Ve.fromDom(v)),A=Xc(0),{touchEnd:function(e){var n,t,r=Ve.fromDom(e.target);"td"!==Ye(r)&&"th"!==Ye(r)||(n=O.get(),t=A.get(),ce(n,r)&&e.timeStamp-t<300&&(e.preventDefault(),S(r,r))),O.set(r),A.set(e.timeStamp)}});I.on("dragstart",function(e){y.clearstate()}),I.on("mousedown",function(e){D(e)&&$s(e)&&y.mousedown(ma(e))}),I.on("mouseover",function(e){var n;(void 0===(n=e).buttons||Im.browser.isEdge()&&0===n.buttons||0!=(1&n.buttons))&&$s(e)&&y.mouseover(ma(e))}),I.on("mouseup",function(e){D(e)&&$s(e)&&y.mouseup(ma(e))}),I.on("touchend",k.touchEnd),I.on("keyup",function(e){var n,t,r,o=ma(e);o.raw.shiftKey&&qs(o.raw.which)&&(n=I.selection.getRng(),t=Ve.fromDom(n.startContainer),r=Ve.fromDom(n.endContainer),C.keyup(o,t,n.startOffset,r,n.endOffset).each(function(e){R(o,e)}))}),I.on("keydown",function(e){var n=ma(e);B().each(function(e){return e.hideBars()});var t=I.selection.getRng(),r=Ve.fromDom(t.startContainer),o=Ve.fromDom(t.endContainer),u=Sr(Am,km)(Ve.fromDom(I.selection.getStart()));C.keydown(n,r,t.startOffset,o,t.endOffset,u).each(function(e){R(n,e)}),B().each(function(e){return e.showBars()})}),I.on("NodeChange",function(){var e=I.selection;er(rt,[Ve.fromDom(e.getStart()),Ve.fromDom(e.getEnd())]).fold(function(){return M.clear(v)},E)})}),{clear:M.clear}}function Mm(o,u){function n(n){return d.forall(function(e){return!e[n]})}function e(){return Yl(tu(o),Zo(o)).bind(function(r){return Wn(rt(r),Yl(Ve.fromDom(o.selection.getEnd()),Zo(o)).bind(rt),function(e,n){return ce(e,n)?g(r)?q.some({element:t=r,mergable:q.none(),unmergable:q.none(),selection:[t]}):q.some(ou(u,e,r)):q.none();var t}).bind(S)})}function t(r){return rt(r.element).map(function(e){var t=$t.fromTable(e),n=B(_i(t,r).getOr([]),function(e,n){return n.isLocked&&(e.onAny=!0,0===n.column?e.onFirst=!0:n.column+n.colspan>=t.grid.columns&&(e.onLast=!0)),e},{onAny:!1,onFirst:!1,onLast:!1});return{mergeable:Fi(t,r).isSome(),unmergeable:Hi(t,r).isSome(),locked:n}})}function r(){s.set(Y(e)()),d=s.get().bind(t),A(m.get(),function(e){return e()})}function i(n){return n(),m.set(m.get().concat([n])),function(){m.set(k(m.get(),function(e){return e!==n}))}}function c(n,t){return i(function(){return s.get().fold(function(){n.setDisabled(!0)},function(e){n.setDisabled(t(e))})})}function l(n,t,r){return i(function(){return s.get().fold(function(){n.setDisabled(!0),n.setActive(!1)},function(e){n.setDisabled(t(e)),n.setActive(r(e))})})}function a(n){return d.exists(function(e){return e.locked[n]})}function f(n,t){return function(e){return l(e,function(e){return g(e.element)},function(){return o.queryCommandValue(n)===t})}}var s=Xc(q.none()),m=Xc([]),d=q.none(),g=en("caption"),p=f("mceTableRowType","header"),b=f("mceTableColType","th");return o.on("NodeChange ExecCommand TableSelectorChange",r),{onSetupTable:function(e){return c(e,function(e){return!1})},onSetupCellOrRow:function(e){return c(e,function(e){return g(e.element)})},onSetupColumn:function(n){return function(e){return c(e,function(e){return g(e.element)||a(n)})}},onSetupPasteable:function(n){return function(e){return c(e,function(e){return g(e.element)||n().isNone()})}},onSetupPasteableColumn:function(n,t){return function(e){return c(e,function(e){return g(e.element)||n().isNone()||a(t)})}},onSetupMergeable:function(e){return c(e,function(e){return n("mergeable")})},onSetupUnmergeable:function(e){return c(e,function(e){return n("unmergeable")})},resetTargets:r,onSetupTableWithCaption:function(e){return l(e,v,function(e){return rt(e.element,Zo(o)).exists(function(e){return An(e,"caption").isSome()})})},onSetupTableRowHeaders:p,onSetupTableColumnHeaders:b,targets:s.get}}Yr.add("table",function(c){var e,n,t,r,o,u,i,l,a,f,s,m,d=(e=function(){return Yo(c)},n=function(){return Jl(tu(c),Zo(c))},t=Xl.selectedSelector,{get:function(){return Ur(e(),t).fold(function(){return n().fold($r,Xr)},function(e){return Kr(e)})}}),g=Mm(c,d),p=bi(c),b=Bm(c,p.lazyResize,g),h=Ec(c,b,p.lazyWire),v=(r=Jc(),o=Jc(),{getRows:r.get,setRows:function(e){e.fold(r.clear,r.set),o.clear()},clearRows:r.clear,getColumns:o.get,setColumns:function(e){e.fold(o.clear,o.set),r.clear()},clearColumns:o.clear});return yl(c,h,0,d,v),f=h,s=d,m=Zo(a=c),ae({mceTableRowType:function(){return w(f.getTableRowType)},mceTableCellType:function(){return w(f.getTableCellType)},mceTableColType:function(){return w(f.getTableColType)}},function(e,n){return a.addQueryValueHandler(n,e)}),iu(c,d,h),function(n,e,t,r){function o(e){return function(){return n.execCommand(e)}}function u(e){n.execCommand("mceInsertTable",!1,{rows:e.numRows,columns:e.numColumns})}var i={text:"Table properties",onSetup:t.onSetupTable,onAction:o("mceTableProps")},c={text:"Delete table",icon:"table-delete-table",onSetup:t.onSetupTable,onAction:o("mceTableDelete")};n.ui.registry.addMenuItem("tableinsertrowbefore",{text:"Insert row before",icon:"table-insert-row-above",onAction:o("mceTableInsertRowBefore"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tableinsertrowafter",{text:"Insert row after",icon:"table-insert-row-after",onAction:o("mceTableInsertRowAfter"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tabledeleterow",{text:"Delete row",icon:"table-delete-row",onAction:o("mceTableDeleteRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablerowprops",{text:"Row properties",icon:"table-row-properties",onAction:o("mceTableRowProps"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablecutrow",{text:"Cut row",icon:"cut-row",onAction:o("mceTableCutRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablecopyrow",{text:"Copy row",icon:"duplicate-row",onAction:o("mceTableCopyRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablepasterowbefore",{text:"Paste row before",icon:"paste-row-before",onAction:o("mceTablePasteRowBefore"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addMenuItem("tablepasterowafter",{text:"Paste row after",icon:"paste-row-after",onAction:o("mceTablePasteRowAfter"),onSetup:t.onSetupPasteable(r.getRows)});var l={type:"nestedmenuitem",text:"Row",getSubmenuItems:C("tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops | tablecutrow tablecopyrow tablepasterowbefore tablepasterowafter")};n.ui.registry.addMenuItem("tableinsertcolumnbefore",{text:"Insert column before",icon:"table-insert-column-before",onAction:o("mceTableInsertColBefore"),onSetup:t.onSetupColumn("onFirst")}),n.ui.registry.addMenuItem("tableinsertcolumnafter",{text:"Insert column after",icon:"table-insert-column-after",onAction:o("mceTableInsertColAfter"),onSetup:t.onSetupColumn("onLast")}),n.ui.registry.addMenuItem("tabledeletecolumn",{text:"Delete column",icon:"table-delete-column",onAction:o("mceTableDeleteCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablecutcolumn",{text:"Cut column",icon:"cut-column",onAction:o("mceTableCutCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablecopycolumn",{text:"Copy column",icon:"duplicate-column",onAction:o("mceTableCopyCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addMenuItem("tablepastecolumnbefore",{text:"Paste column before",icon:"paste-column-before",onAction:o("mceTablePasteColBefore"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onFirst")}),n.ui.registry.addMenuItem("tablepastecolumnafter",{text:"Paste column after",icon:"paste-column-after",onAction:o("mceTablePasteColAfter"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onLast")});var a={type:"nestedmenuitem",text:"Column",getSubmenuItems:C("tableinsertcolumnbefore tableinsertcolumnafter tabledeletecolumn | tablecutcolumn tablecopycolumn tablepastecolumnbefore tablepastecolumnafter")};n.ui.registry.addMenuItem("tablecellprops",{text:"Cell properties",icon:"table-cell-properties",onAction:o("mceTableCellProps"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuItem("tablemergecells",{text:"Merge cells",icon:"table-merge-cells",onAction:o("mceTableMergeCells"),onSetup:t.onSetupMergeable}),n.ui.registry.addMenuItem("tablesplitcells",{text:"Split cell",icon:"table-split-cells",onAction:o("mceTableSplitCells"),onSetup:t.onSetupUnmergeable});var f={type:"nestedmenuitem",text:"Cell",getSubmenuItems:C("tablecellprops tablemergecells tablesplitcells")};!1===n.getParam("table_grid",!0,"boolean")?n.ui.registry.addMenuItem("inserttable",{text:"Table",icon:"table",onAction:o("mceInsertTable")}):n.ui.registry.addNestedMenuItem("inserttable",{text:"Table",icon:"table",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"inserttable",onAction:u}]}}),n.ui.registry.addMenuItem("inserttabledialog",{text:"Insert table",icon:"table",onAction:o("mceInsertTable")}),n.ui.registry.addMenuItem("tableprops",i),n.ui.registry.addMenuItem("deletetable",c),n.ui.registry.addNestedMenuItem("row",l),n.ui.registry.addNestedMenuItem("column",a),n.ui.registry.addNestedMenuItem("cell",f),n.ui.registry.addContextMenu("table",{update:function(){return t.resetTargets(),t.targets().fold(C(""),function(e){return"caption"===Ye(e.element)?"tableprops deletetable":"cell row column | advtablesort | tableprops deletetable"})}});var s=Ef(oi(n));0!==s.length&&n.ui.registry.addNestedMenuItem("tableclass",{icon:"table-classes",text:"Table styles",getSubmenuItems:function(){return Mf(n,e,s,"tableclass",function(e){return n.execCommand("mceTableToggleClass",!1,e)})},onSetup:t.onSetupTable});var m=Ef(ri(n));0!==m.length&&n.ui.registry.addNestedMenuItem("tablecellclass",{icon:"table-cell-classes",text:"Cell styles",getSubmenuItems:function(){return Mf(n,e,m,"tablecellclass",function(e){return n.execCommand("mceTableCellToggleClass",!1,e)})},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellvalign",{icon:"vertical-align",text:"Vertical align",getSubmenuItems:function(){return Mf(n,e,Df,"tablecellverticalalign",Zc(n,"vertical-align"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellborderwidth",{icon:"border-width",text:"Border width",getSubmenuItems:function(){return Mf(n,e,Xu(n),"tablecellborderwidth",Zc(n,"border-width"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellborderstyle",{icon:"border-style",text:"Border style",getSubmenuItems:function(){return Mf(n,e,Yu(n),"tablecellborderstyle",Zc(n,"border-style"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleMenuItem("tablecaption",{icon:"table-caption",text:"Table caption",onAction:o("mceTableToggleCaption"),onSetup:t.onSetupTableWithCaption}),n.ui.registry.addNestedMenuItem("tablecellbackgroundcolor",{icon:"cell-background-color",text:"Background color",getSubmenuItems:function(){return nl(n,si(n),"background-color")},onSetup:t.onSetupCellOrRow}),n.ui.registry.addNestedMenuItem("tablecellbordercolor",{icon:"cell-border-color",text:"Border color",getSubmenuItems:function(){return nl(n,mi(n),"border-color")},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleMenuItem("tablerowheader",{text:"Row header",icon:"table-top-header",onAction:tl(n),onSetup:t.onSetupTableRowHeaders}),n.ui.registry.addToggleMenuItem("tablecolheader",{text:"Column header",icon:"table-left-header",onAction:rl(n),onSetup:t.onSetupTableColumnHeaders})}(c,d,g,v),function(n,e,t,r){function o(e){return function(){return n.execCommand(e)}}n.ui.registry.addMenuButton("table",{tooltip:"Table",icon:"table",fetch:function(e){return e("inserttable | cell row column | advtablesort | tableprops deletetable")}}),n.ui.registry.addButton("tableprops",{tooltip:"Table properties",onAction:o("mceTableProps"),icon:"table",onSetup:t.onSetupTable}),n.ui.registry.addButton("tabledelete",{tooltip:"Delete table",onAction:o("mceTableDelete"),icon:"table-delete-table",onSetup:t.onSetupTable}),n.ui.registry.addButton("tablecellprops",{tooltip:"Cell properties",onAction:o("mceTableCellProps"),icon:"table-cell-properties",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablemergecells",{tooltip:"Merge cells",onAction:o("mceTableMergeCells"),icon:"table-merge-cells",onSetup:t.onSetupMergeable}),n.ui.registry.addButton("tablesplitcells",{tooltip:"Split cell",onAction:o("mceTableSplitCells"),icon:"table-split-cells",onSetup:t.onSetupUnmergeable}),n.ui.registry.addButton("tableinsertrowbefore",{tooltip:"Insert row before",onAction:o("mceTableInsertRowBefore"),icon:"table-insert-row-above",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertrowafter",{tooltip:"Insert row after",onAction:o("mceTableInsertRowAfter"),icon:"table-insert-row-after",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tabledeleterow",{tooltip:"Delete row",onAction:o("mceTableDeleteRow"),icon:"table-delete-row",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablerowprops",{tooltip:"Row properties",onAction:o("mceTableRowProps"),icon:"table-row-properties",onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolbefore",{tooltip:"Insert column before",onAction:o("mceTableInsertColBefore"),icon:"table-insert-column-before",onSetup:t.onSetupColumn("onFirst")}),n.ui.registry.addButton("tableinsertcolafter",{tooltip:"Insert column after",onAction:o("mceTableInsertColAfter"),icon:"table-insert-column-after",onSetup:t.onSetupColumn("onLast")}),n.ui.registry.addButton("tabledeletecol",{tooltip:"Delete column",onAction:o("mceTableDeleteCol"),icon:"table-delete-column",onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablecutrow",{tooltip:"Cut row",icon:"cut-row",onAction:o("mceTableCutRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablecopyrow",{tooltip:"Copy row",icon:"duplicate-row",onAction:o("mceTableCopyRow"),onSetup:t.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowbefore",{tooltip:"Paste row before",icon:"paste-row-before",onAction:o("mceTablePasteRowBefore"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addButton("tablepasterowafter",{tooltip:"Paste row after",icon:"paste-row-after",onAction:o("mceTablePasteRowAfter"),onSetup:t.onSetupPasteable(r.getRows)}),n.ui.registry.addButton("tablecutcol",{tooltip:"Cut column",icon:"cut-column",onAction:o("mceTableCutCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablecopycol",{tooltip:"Copy column",icon:"duplicate-column",onAction:o("mceTableCopyCol"),onSetup:t.onSetupColumn("onAny")}),n.ui.registry.addButton("tablepastecolbefore",{tooltip:"Paste column before",icon:"paste-column-before",onAction:o("mceTablePasteColBefore"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onFirst")}),n.ui.registry.addButton("tablepastecolafter",{tooltip:"Paste column after",icon:"paste-column-after",onAction:o("mceTablePasteColAfter"),onSetup:t.onSetupPasteableColumn(r.getColumns,"onLast")}),n.ui.registry.addButton("tableinsertdialog",{tooltip:"Insert table",onAction:o("mceInsertTable"),icon:"table"});var u=Ef(oi(n));0!==u.length&&n.ui.registry.addMenuButton("tableclass",{icon:"table-classes",tooltip:"Table styles",fetch:el(n,e,u,"tableclass",function(e){return n.execCommand("mceTableToggleClass",!1,e)}),onSetup:t.onSetupTable});var i=Ef(ri(n));0!==i.length&&n.ui.registry.addMenuButton("tablecellclass",{icon:"table-cell-classes",tooltip:"Cell styles",fetch:el(n,e,i,"tablecellclass",function(e){return n.execCommand("mceTableCellToggleClass",!1,e)}),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellvalign",{icon:"vertical-align",tooltip:"Vertical align",fetch:el(n,e,Df,"tablecellverticalalign",Zc(n,"vertical-align")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellborderwidth",{icon:"border-width",tooltip:"Border width",fetch:el(n,e,Xu(n),"tablecellborderwidth",Zc(n,"border-width")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellborderstyle",{icon:"border-style",tooltip:"Border style",fetch:el(n,e,Yu(n),"tablecellborderstyle",Zc(n,"border-style")),onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleButton("tablecaption",{tooltip:"Table caption",onAction:o("mceTableToggleCaption"),icon:"table-caption",onSetup:t.onSetupTableWithCaption}),n.ui.registry.addMenuButton("tablecellbackgroundcolor",{icon:"cell-background-color",tooltip:"Background color",fetch:function(e){return e(nl(n,si(n),"background-color"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addMenuButton("tablecellbordercolor",{icon:"cell-border-color",tooltip:"Border color",fetch:function(e){return e(nl(n,mi(n),"border-color"))},onSetup:t.onSetupCellOrRow}),n.ui.registry.addToggleButton("tablerowheader",{tooltip:"Row header",icon:"table-top-header",onAction:tl(n),onSetup:t.onSetupTableRowHeaders}),n.ui.registry.addToggleButton("tablecolheader",{tooltip:"Column header",icon:"table-left-header",onAction:rl(n),onSetup:t.onSetupTableColumnHeaders})}(c,d,g,v),0<(l=(i=c).getParam("table_toolbar","tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol")).length&&i.ui.registry.addContextToolbar("table",{predicate:function(e){return i.dom.is(e,"table")&&i.getBody().contains(e)},items:l,scope:"node",position:"node"}),c.on("PreInit",function(){c.serializer.addTempAttr(Xl.firstSelected),c.serializer.addTempAttr(Xl.lastSelected),c.formatter.register(Hf)}),c.getParam("table_tab_navigation",!0,"boolean")&&c.on("keydown",function(e){var n,t,r,o,u=c,i=b;(n=e).keyCode===Qs.TAB&&(t=Yo(u),r=function(e){var n=Ye(e);return ce(e,t)||y(em,n)},o=u.selection.getRng(),et(Ve.fromDom(n.shiftKey?o.startContainer:o.endContainer),r).each(function(e){n.preventDefault(),rt(e,r).each(i.clear),u.selection.collapse(n.shiftKey),(n.shiftKey?function(e,n,t){return Zs(e,n,(o=Nu,Cl(r=t,void 0).fold(function(){return qf.none()},function(e){return Uf(e.all,r,e.index,-1,o)})));var r,o}:vs)(u,r,e).each(function(e){u.selection.setRng(e)})}))}),c.on("remove",function(){p.destroy()}),{insertTable:(u=c,function(e,n,t){var r=Lc(u,n,e,t=void 0===t?{}:t,"Invalid values for insertTable - rows and columns values are required to insert a table.");return u.undoManager.add(),r}),setClipboardRows:Wc(v.setRows),getClipboardRows:_c(v.getRows),setClipboardCols:Wc(v.setColumns),getClipboardCols:_c(v.getColumns),resizeHandler:p,selectionTargets:g};function w(r){return Jl(tu(a)).bind(function(t){return rt(t,m).map(function(e){var n=ou(s,e,t);return r(e,n)})}).getOr("")}})}();js/tinymce/plugins/quickbars/plugin.min.js000064400000013652151727150240014726 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function n(a){a.ui.registry.addButton("quickimage",{icon:"image",tooltip:"Insert image",onAction:function(){var i=a;new s(function(n){var r=document.createElement("input");r.type="file",r.accept="image/*",r.style.position="fixed",r.style.left="0",r.style.top="0",r.style.opacity="0.001",document.body.appendChild(r),r.addEventListener("change",function(t){n(Array.prototype.slice.call(t.target.files))});var o=function(t){function e(){n([]),r.parentNode.removeChild(r)}d.os.isAndroid()&&"remove"!==t.type?f.setEditorTimeout(i,e,0):e(),i.off("focusin remove",o)};i.on("focusin remove",o),r.click()}).then(function(t){var c,n;0<t.length&&(c=t[0],n=c,new s(function(t){var e=new FileReader;e.onloadend=function(){t(e.result.split(",")[1])},e.readAsDataURL(n)}).then(function(t){var e,n,r,o,i,u;n=t,r=c,i=(e=a).editorUpload.blobCache,u=i.create((o=(new Date).getTime(),"mceu_"+Math.floor(1e9*Math.random())+ ++l+String(o)),r,n),i.add(u),e.insertContent(e.dom.createHTML("img",{src:u.blobUri()}))}))})}}),a.ui.registry.addButton("quicktable",{icon:"table",tooltip:"Insert table",onAction:function(){var t,n;(t=a).plugins.table?t.plugins.table.insertTable(2,2):(n=t).undoManager.transact(function(){n.insertContent(function(){var t='<table data-mce-id="mce" style="width: 100%">';t+="<tbody>";for(var e=0;e<2;e++){t+="<tr>";for(var n=0;n<2;n++)t+="<td><br></td>";t+="</tr>"}return(t+="</tbody>")+"</table>"}());var t=n.dom.select("*[data-mce-id]")[0];t.removeAttribute("data-mce-id");var e=n.dom.select("td,th",t);n.selection.setCursorLocation(e[0],0)})}})}function t(r){return function(t){return n=typeof(e=t),(null===e?"null":"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n)===r;var e,n}}function e(e){return function(t){return typeof t===e}}function i(t){return function(){return t}}function r(t){return t}function o(){return y}var u,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=0,s=tinymce.util.Tools.resolve("tinymce.util.Promise"),d=tinymce.util.Tools.resolve("tinymce.Env"),f=tinymce.util.Tools.resolve("tinymce.util.Delay"),a=t("string"),m=t("object"),g=t("array"),v=e("boolean"),h=e("function"),p=i(!1),b=i(!(u=void 0)),y={fold:function(t,e){return t()},isSome:p,isNone:b,getOr:r,getOrThunk:k,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:r,orThunk:k,map:o,each:function(){},bind:o,exists:p,forall:b,filter:function(){return y},toArray:function(){return[]},toString:i("none()")};function k(t){return t()}var w=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:b,isNone:p,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return w(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:y},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:w,none:o,from:function(t){return null==t?y:w(t)}};function E(t,e,n,r,o){return t(n,r)?T.some(n):h(o)&&o(n)?T.none():e(n,r,o)}function N(t,e){var n=t.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(e);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(e);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(e);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function M(t){if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}}var S={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",t),new Error("HTML must have a single root node");return M(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);return M(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return M(n)},fromDom:M,fromPoint:function(t,e,n){return T.from(t.dom.elementFromPoint(e,n)).map(M)}};function C(t,e,n){for(var r=t.dom,o=h(n)?n:p;r.parentNode;){var r=r.parentNode,i=S.fromDom(r);if(e(i))return T.some(i);if(o(i))break}return T.none()}function O(t,e,n){return C(t,function(t){return N(t,e)},n)}"undefined"!=typeof window||Function("return this;")();var q,x=(q=a,function(t,e,n){return function(){if(!q(n))throw new Error("Default value doesn't match requested type.")}(),function(t,e){if(g(t)||m(t))throw new Error("expected a string but found: "+t);return u===t?e:v(t)?!1===t?"":e:t}(t.getParam(e,n),n)});c.add("quickbars",function(t){var o,e;n(t),0<(e=x(o=t,"quickbars_insert_toolbar","quickimage quicktable")).trim().length&&o.ui.registry.addContextToolbar("quickblock",{predicate:function(t){function e(t){return t.dom===o.getBody()}var n=S.fromDom(t),r=o.schema.getTextBlockElements();return E(N,O,n,"table",e).fold(function(){return E(function(t,e){return e(t)},C,n,function(t){return t.dom.nodeName.toLowerCase()in r&&o.dom.isEmpty(t.dom)},e).isSome()},p)},items:e,position:"line",scope:"editor"}),function(e){function n(t){return"IMG"===t.nodeName||"FIGURE"===t.nodeName&&/image/i.test(t.className)}var t=x(e,"quickbars_image_toolbar","alignleft aligncenter alignright");0<t.trim().length&&e.ui.registry.addContextToolbar("imageselection",{predicate:n,items:t,position:"node"});var r=x(e,"quickbars_selection_toolbar","bold italic | quicklink h2 h3 blockquote");0<r.trim().length&&e.ui.registry.addContextToolbar("textselection",{predicate:function(t){return!n(t)&&!e.selection.isCollapsed()&&"false"!==e.dom.getContentEditableParent(t)},items:r,position:"selection",scope:"editor"})}(t)})}();js/tinymce/plugins/code/plugin.min.js000064400000002154151727150240013647 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",function(e){var t,o;function n(){return o.execCommand("mceCodeEditor")}return(t=e).addCommand("mceCodeEditor",function(){var n,e;e=(n=t).getContent({source_view:!0}),n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t=n,o=e.getData().code;t.focus(),t.undoManager.transact(function(){t.setContent(o)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})}),(o=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:n}),o.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:n}),{}})}();js/tinymce/plugins/fullpage/plugin.min.js000064400000017214151727150240014537 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function i(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function _(e){return e.getParam("fullpage_hide_in_source_view")}function b(e){return e.getParam("fullpage_default_encoding")}function x(e){return e.getParam("fullpage_default_font_family")}function k(e){return e.getParam("fullpage_default_font_size")}function C(e,t){return n({validate:!1,root_name:"#document"},e.schema).parse(t,{format:"xhtml"})}function c(u,m){u.addCommand("mceFullPageProperties",function(){var l,i,o,e,t,n,r,a,c,s;function d(e,t){return e.attr(t)||""}t=l=u,n=(i=m).get(),c=C(t,n),(s={}).fontface=x(t),s.fontsize=k(t),7===(r=c.firstChild).type&&(s.xml_pi=!0,(a=/encoding="([^"]+)"/.exec(r.value))&&(s.docencoding=a[1])),(r=c.getAll("#doctype")[0])&&(s.doctype="<!DOCTYPE"+r.value+">"),(r=c.getAll("title")[0])&&r.firstChild&&(s.title=r.firstChild.value),w.each(c.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?s[n.toLowerCase()]=e.attr("content"):"Content-Type"===l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")))&&(s.docencoding=t[1])}),(r=c.getAll("html")[0])&&(s.langcode=d(r,"lang")||d(r,"xml:lang")),s.stylesheets=[],w.each(c.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&s.stylesheets.push(e.attr("href"))}),(r=c.getAll("body")[0])&&(s.langdir=d(r,"dir"),s.style=d(r,"style"),s.visited_color=d(r,"vlink"),s.link_color=d(r,"link"),s.active_color=d(r,"alink")),o=s,e=g(g({},{title:"",keywords:"",description:"",robots:"",author:"",docencoding:""}),o),l.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:e,onSubmit:function(e){var t=e.getData(),n=function(e,o,t){function n(e,t,n){e.attr(t,n||void 0)}function r(e){s.firstChild?s.insert(e,s.firstChild):s.append(e)}var a,l,i=e.dom,c=C(e,t),s=c.getAll("head")[0];s||(a=c.getAll("html")[0],s=new f("head",1),a.firstChild?a.insert(s,a.firstChild,!0):a.append(s)),a=c.firstChild,o.xml_pi?(l='version="1.0"',o.docencoding&&(l+=' encoding="'+o.docencoding+'"'),7!==a.type&&(a=new f("xml",7),c.insert(a,c.firstChild,!0)),a.value=l):a&&7===a.type&&a.remove(),a=c.getAll("#doctype")[0],o.doctype?(a||(a=new f("#doctype",10),o.xml_pi?c.insert(a,c.firstChild):r(a)),a.value=o.doctype.substring(9,o.doctype.length-1)):a&&a.remove(),a=null,w.each(c.getAll("meta"),function(e){"Content-Type"===e.attr("http-equiv")&&(a=e)}),o.docencoding?(a||((a=new f("meta",1)).attr("http-equiv","Content-Type"),a.shortEnded=!0,r(a)),a.attr("content","text/html; charset="+o.docencoding)):a&&a.remove(),a=c.getAll("title")[0],o.title?(a?a.empty():r(a=new f("title",1)),a.append(new f("#text",3)).value=o.title):a&&a.remove(),w.each("keywords,description,author,copyright,robots".split(","),function(e){for(var t,n=c.getAll("meta"),l=o[e],i=0;i<n.length;i++)if((t=n[i]).attr("name")===e)return void(l?t.attr("content",l):t.remove());l&&((a=new f("meta",1)).attr("name",e),a.attr("content",l),a.shortEnded=!0,r(a))});var d={};w.each(c.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&(d[e.attr("href")]=e)}),w.each(o.stylesheets,function(e){d[e]||((a=new f("link",1)).attr({rel:"stylesheet",text:"text/css",href:e}),a.shortEnded=!0,r(a)),delete d[e]}),w.each(d,function(e){e.remove()}),(a=c.getAll("body")[0])&&(n(a,"dir",o.langdir),n(a,"style",o.style),n(a,"vlink",o.visited_color),n(a,"link",o.link_color),n(a,"alink",o.active_color),i.setAttribs(e.getBody(),{style:o.style,dir:o.dir,vLink:o.visited_color,link:o.link_color,aLink:o.active_color})),(a=c.getAll("html")[0])&&(n(a,"lang",o.langcode),n(a,"xml:lang",o.langcode)),s.firstChild||s.remove();var u=p({validate:!1,indent:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(c);return u.substring(0,u.indexOf("</body>"))}(l,w.extend(o,t),i.get());i.set(n),e.close()}})})}function A(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})}function s(e,t,n,l){var i,o,r,a,c,s,d,u,m,g,f,p,h,y="",v=e.dom;l.selection||(a=e.getParam("protect"),c=l.content,w.each(a,function(e){c=c.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})}),r=c,"raw"===l.format&&t.get()||l.source_view&&_(e)||(-1!==(i=(r=(r=0!==r.length||l.source_view?r:w.trim(t.get())+"\n"+w.trim(r)+"\n"+w.trim(n.get())).replace(/<(\/?)BODY/gi,"<$1body")).indexOf("<body"))?(i=r.indexOf(">",i),t.set(A(r.substring(0,i+1))),-1===(o=r.indexOf("</body",i))&&(o=r.length),l.content=w.trim(r.substring(i+1,o)),n.set(A(r.substring(o)))):(t.set((h=p="",(g=e).getParam("fullpage_default_xml_pi")&&(p+='<?xml version="1.0" encoding="'+(b(g)||"ISO-8859-1")+'" ?>\n'),p+=g.getParam("fullpage_default_doctype","<!DOCTYPE html>"),p+="\n<html>\n<head>\n",(f=g.getParam("fullpage_default_title"))&&(p+="<title>"+f+"</title>\n"),(f=b(g))&&(p+='<meta http-equiv="Content-Type" content="text/html; charset='+f+'" />\n'),(f=x(g))&&(h+="font-family: "+f+";"),(f=k(g))&&(h+="font-size: "+f+";"),(f=g.getParam("fullpage_default_text_color"))&&(h+="color: "+f+";"),p+="</head>\n<body"+(h?' style="'+h+'"':"")+">\n")),n.set("\n</body>\n</html>")),s=C(e,t.get()),P(s.getAll("style"),function(e){e.firstChild&&(y+=e.firstChild.value)}),(d=s.getAll("body")[0])&&v.setAttribs(e.getBody(),{style:d.attr("style")||"",dir:d.attr("dir")||"",vLink:d.attr("vlink")||"",link:d.attr("link")||"",aLink:d.attr("alink")||""}),v.remove("fullpage_styles"),u=e.getDoc().getElementsByTagName("head")[0],y&&v.add(u,"style",{id:"fullpage_styles"}).appendChild(document.createTextNode(y)),m={},w.each(u.getElementsByTagName("link"),function(e){"stylesheet"===e.rel&&e.getAttribute("data-mce-fullpage")&&(m[e.href]=e)}),w.each(s.getAll("link"),function(e){var t=e.attr("href");if(!t)return!0;m[t]||"stylesheet"!==e.attr("rel")||v.add(u,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete m[t]}),w.each(m,function(e){e.parentNode.removeChild(e)})))}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=function(){return(g=Object.assign||function(e){for(var t,n=1,l=arguments.length;n<l;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},w=tinymce.util.Tools.resolve("tinymce.util.Tools"),n=tinymce.util.Tools.resolve("tinymce.html.DomParser"),f=tinymce.util.Tools.resolve("tinymce.html.Node"),p=tinymce.util.Tools.resolve("tinymce.html.Serializer"),P=w.each;e.add("fullpage",function(e){var t,o,r,a,n=i(""),l=i("");c(e,n),(t=e).ui.registry.addButton("fullpage",{tooltip:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),t.ui.registry.addMenuItem("fullpage",{text:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),r=n,a=l,(o=e).on("BeforeSetContent",function(e){s(o,r,a,e)}),o.on("GetContent",function(e){var t,n,l,i;t=o,n=r.get(),l=a.get(),"html"!==(i=e).format||i.selection||i.source_view&&_(t)||(i.content=(w.trim(n)+"\n"+w.trim(i.content)+"\n"+w.trim(l)).replace(/<!--mce:protected ([\s\S]*?)-->/g,function(e,t){return unescape(t)}))})})}();js/tinymce/plugins/textcolor/plugin.min.js000064400000000613151727150240014756 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("textcolor",function(){})}();js/tinymce/plugins/noneditable/plugin.min.js000064400000003332151727150240015220 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function l(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")}function u(e){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(e)}}function e(e){var t,r="contenteditable",n=" "+f.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",a=" "+f.trim(l(e))+" ",i=u(n),o=u(a),c=(t=e.getParam("noneditable_regexp",[]))&&t.constructor===RegExp?[t]:t;e.on("PreInit",function(){0<c.length&&e.on("BeforeSetContent",function(t){!function(t,e,n){var r=e.length,a=n.content;if("raw"!==n.format){for(;r--;)a=a.replace(e[r],function(i,o,c){return function(t){var e=arguments,n=e[e.length-2],r=0<n?o.charAt(n-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",n);if(-1!==a&&-1!==o.substring(a,n).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(e[0])+'">'+i.dom.encode("string"==typeof e[1]?e[1]:e[0])+"</span>"}}(t,a,l(t)));n.content=a}}(e,c,t)}),e.parser.addAttributeFilter("class",function(t){for(var e,n=t.length;n--;)e=t[n],i(e)?e.attr(r,"true"):o(e)&&e.attr(r,"false")}),e.serializer.addAttributeFilter(r,function(t){for(var e,n=t.length;n--;)e=t[n],(i(e)||o(e))&&(0<c.length&&e.attr("data-mce-content")?(e.name="#text",e.type=3,e.raw=!0,e.value=e.attr("data-mce-content")):e.attr(r,null))})})}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.util.Tools");t.add("noneditable",function(t){e(t)})}();js/tinymce/plugins/emoticons/js/emojiimages.js000064400001656354151727150240015604 0ustar00// Source: npm package: emojilib
// Images provided by twemoji: https://github.com/twitter/twemoji
window.tinymce.Resource.add("tinymce.plugins.emoticons", {
  100: {
    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaf" src="1f4af.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  1234: {
    keywords: [ "numbers", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd22" src="1f522.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  grinning: {
    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude00" src="1f600.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  grimacing: {
    keywords: [ "face", "grimace", "teeth" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2c" src="1f62c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  grin: {
    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude01" src="1f601.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  joy: {
    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude02" src="1f602.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  rofl: {
    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd23" src="1f923.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  partying: {
    keywords: [ "face", "celebration", "woohoo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd73" src="1f973.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smiley: {
    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude03" src="1f603.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smile: {
    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude04" src="1f604.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sweat_smile: {
    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude05" src="1f605.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  laughing: {
    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude06" src="1f606.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  innocent: {
    keywords: [ "face", "angel", "heaven", "halo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude07" src="1f607.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  wink: {
    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude09" src="1f609.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  blush: {
    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0a" src="1f60a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  slightly_smiling_face: {
    keywords: [ "face", "smile" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude42" src="1f642.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  upside_down_face: {
    keywords: [ "face", "flipped", "silly", "smile" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude43" src="1f643.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  relaxed: {
    keywords: [ "face", "blush", "massage", "happiness" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u263a\ufe0f" src="263a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  yum: {
    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0b" src="1f60b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  relieved: {
    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0c" src="1f60c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  heart_eyes: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0d" src="1f60d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smiling_face_with_three_hearts: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd70" src="1f970.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_heart: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude18" src="1f618.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing: {
    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude17" src="1f617.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_smiling_eyes: {
    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude19" src="1f619.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_closed_eyes: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1a" src="1f61a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  stuck_out_tongue_winking_eye: {
    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1c" src="1f61c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  zany: {
    keywords: [ "face", "goofy", "crazy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2a" src="1f92a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  raised_eyebrow: {
    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd28" src="1f928.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  monocle: {
    keywords: [ "face", "stuffy", "wealthy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd0" src="1f9d0.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  stuck_out_tongue_closed_eyes: {
    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1d" src="1f61d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  stuck_out_tongue: {
    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1b" src="1f61b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  money_mouth_face: {
    keywords: [ "face", "rich", "dollar", "money" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd11" src="1f911.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  nerd_face: {
    keywords: [ "face", "nerdy", "geek", "dork" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd13" src="1f913.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sunglasses: {
    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0e" src="1f60e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  star_struck: {
    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd29" src="1f929.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  clown_face: {
    keywords: [ "face" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd21" src="1f921.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  cowboy_hat_face: {
    keywords: [ "face", "cowgirl", "hat" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd20" src="1f920.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  hugs: {
    keywords: [ "face", "smile", "hug" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd17" src="1f917.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smirk: {
    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0f" src="1f60f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  no_mouth: {
    keywords: [ "face", "hellokitty" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude36" src="1f636.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  neutral_face: {
    keywords: [ "indifference", "meh", ":|", "neutral" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude10" src="1f610.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  expressionless: {
    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude11" src="1f611.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  unamused: {
    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude12" src="1f612.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  roll_eyes: {
    keywords: [ "face", "eyeroll", "frustrated" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude44" src="1f644.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  thinking: {
    keywords: [ "face", "hmmm", "think", "consider" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd14" src="1f914.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  lying_face: {
    keywords: [ "face", "lie", "pinocchio" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd25" src="1f925.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  hand_over_mouth: {
    keywords: [ "face", "whoops", "shock", "surprise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2d" src="1f92d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  shushing: {
    keywords: [ "face", "quiet", "shhh" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2b" src="1f92b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  symbols_over_mouth: {
    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2c" src="1f92c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  exploding_head: {
    keywords: [ "face", "shocked", "mind", "blown" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2f" src="1f92f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  flushed: {
    keywords: [ "face", "blush", "shy", "flattered" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude33" src="1f633.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  disappointed: {
    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1e" src="1f61e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  worried: {
    keywords: [ "face", "concern", "nervous", ":(" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1f" src="1f61f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  angry: {
    keywords: [ "mad", "face", "annoyed", "frustrated" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude20" src="1f620.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  rage: {
    keywords: [ "angry", "mad", "hate", "despise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude21" src="1f621.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  pensive: {
    keywords: [ "face", "sad", "depressed", "upset" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude14" src="1f614.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  confused: {
    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude15" src="1f615.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  slightly_frowning_face: {
    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude41" src="1f641.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  frowning_face: {
    keywords: [ "face", "sad", "upset", "frown" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2639" src="2639.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  persevere: {
    keywords: [ "face", "sick", "no", "upset", "oops" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude23" src="1f623.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  confounded: {
    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude16" src="1f616.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  tired_face: {
    keywords: [ "sick", "whine", "upset", "frustrated" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2b" src="1f62b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  weary: {
    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude29" src="1f629.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  pleading: {
    keywords: [ "face", "begging", "mercy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7a" src="1f97a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  triumph: {
    keywords: [ "face", "gas", "phew", "proud", "pride" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude24" src="1f624.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  open_mouth: {
    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2e" src="1f62e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  scream: {
    keywords: [ "face", "munch", "scared", "omg" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude31" src="1f631.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  fearful: {
    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude28" src="1f628.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  cold_sweat: {
    keywords: [ "face", "nervous", "sweat" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude30" src="1f630.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  hushed: {
    keywords: [ "face", "woo", "shh" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2f" src="1f62f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  frowning: {
    keywords: [ "face", "aw", "what" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude26" src="1f626.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  anguished: {
    keywords: [ "face", "stunned", "nervous" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude27" src="1f627.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  cry: {
    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude22" src="1f622.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  disappointed_relieved: {
    keywords: [ "face", "phew", "sweat", "nervous" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude25" src="1f625.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  drooling_face: {
    keywords: [ "face" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd24" src="1f924.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sleepy: {
    keywords: [ "face", "tired", "rest", "nap" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2a" src="1f62a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sweat: {
    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude13" src="1f613.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  hot: {
    keywords: [ "face", "feverish", "heat", "red", "sweating" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd75" src="1f975.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  cold: {
    keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd76" src="1f976.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sob: {
    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2d" src="1f62d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  dizzy_face: {
    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude35" src="1f635.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  astonished: {
    keywords: [ "face", "xox", "surprised", "poisoned" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude32" src="1f632.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  zipper_mouth_face: {
    keywords: [ "face", "sealed", "zipper", "secret" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd10" src="1f910.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  nauseated_face: {
    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd22" src="1f922.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sneezing_face: {
    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd27" src="1f927.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  vomiting: {
    keywords: [ "face", "sick" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2e" src="1f92e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  mask: {
    keywords: [ "face", "sick", "ill", "disease" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude37" src="1f637.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  face_with_thermometer: {
    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd12" src="1f912.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  face_with_head_bandage: {
    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd15" src="1f915.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  woozy: {
    keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd74" src="1f974.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sleeping: {
    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude34" src="1f634.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  zzz: {
    keywords: [ "sleepy", "tired", "dream" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca4" src="1f4a4.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  poop: {
    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca9" src="1f4a9.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smiling_imp: {
    keywords: [ "devil", "horns" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude08" src="1f608.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  imp: {
    keywords: [ "devil", "angry", "horns" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7f" src="1f47f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  japanese_ogre: {
    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc79" src="1f479.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  japanese_goblin: {
    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7a" src="1f47a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  skull: {
    keywords: [ "dead", "skeleton", "creepy", "death" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc80" src="1f480.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  ghost: {
    keywords: [ "halloween", "spooky", "scary" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7b" src="1f47b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  alien: {
    keywords: [ "UFO", "paul", "weird", "outer_space" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7d" src="1f47d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  robot: {
    keywords: [ "computer", "machine", "bot" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd16" src="1f916.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smiley_cat: {
    keywords: [ "animal", "cats", "happy", "smile" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3a" src="1f63a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smile_cat: {
    keywords: [ "animal", "cats", "smile" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude38" src="1f638.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  joy_cat: {
    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude39" src="1f639.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  heart_eyes_cat: {
    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3b" src="1f63b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  smirk_cat: {
    keywords: [ "animal", "cats", "smirk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3c" src="1f63c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_cat: {
    keywords: [ "animal", "cats", "kiss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3d" src="1f63d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  scream_cat: {
    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude40" src="1f640.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  crying_cat_face: {
    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3f" src="1f63f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  pouting_cat: {
    keywords: [ "animal", "cats" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3e" src="1f63e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  palms_up: {
    keywords: [ "hands", "gesture", "cupped", "prayer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd32" src="1f932.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_hands: {
    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4c" src="1f64c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  clap: {
    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4f" src="1f44f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  wave: {
    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4b" src="1f44b.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  call_me_hand: {
    keywords: [ "hands", "gesture" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd19" src="1f919.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  "+1": {
    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4d" src="1f44d.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  "-1": {
    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4e" src="1f44e.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  facepunch: {
    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4a" src="1f44a.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  fist: {
    keywords: [ "fingers", "hand", "grasp" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270a" src="270a.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  fist_left: {
    keywords: [ "hand", "fistbump" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1b" src="1f91b.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  fist_right: {
    keywords: [ "hand", "fistbump" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1c" src="1f91c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  v: {
    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270c" src="270c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  ok_hand: {
    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4c" src="1f44c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_hand: {
    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270b" src="270b.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_back_of_hand: {
    keywords: [ "fingers", "raised", "backhand" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1a" src="1f91a.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  open_hands: {
    keywords: [ "fingers", "butterfly", "hands", "open" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc50" src="1f450.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  muscle: {
    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaa" src="1f4aa.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  pray: {
    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4f" src="1f64f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  foot: {
    keywords: [ "kick", "stomp" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb6" src="1f9b6.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  leg: {
    keywords: [ "kick", "limb" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb5" src="1f9b5.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  handshake: {
    keywords: [ "agreement", "shake" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1d" src="1f91d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  point_up: {
    keywords: [ "hand", "fingers", "direction", "up" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u261d" src="261d.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  point_up_2: {
    keywords: [ "fingers", "hand", "direction", "up" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc46" src="1f446.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  point_down: {
    keywords: [ "fingers", "hand", "direction", "down" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc47" src="1f447.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  point_left: {
    keywords: [ "direction", "fingers", "hand", "left" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc48" src="1f448.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  point_right: {
    keywords: [ "fingers", "hand", "direction", "right" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc49" src="1f449.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  fu: {
    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd95" src="1f595.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_hand_with_fingers_splayed: {
    keywords: [ "hand", "fingers", "palm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd90" src="1f590.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  love_you: {
    keywords: [ "hand", "fingers", "gesture" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1f" src="1f91f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  metal: {
    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd18" src="1f918.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  crossed_fingers: {
    keywords: [ "good", "lucky" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1e" src="1f91e.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  vulcan_salute: {
    keywords: [ "hand", "fingers", "spock", "star trek" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd96" src="1f596.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  writing_hand: {
    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270d" src="270d.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  selfie: {
    keywords: [ "camera", "phone" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd33" src="1f933.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  nail_care: {
    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc85" src="1f485.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  lips: {
    keywords: [ "mouth", "kiss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc44" src="1f444.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  tooth: {
    keywords: [ "teeth", "dentist" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb7" src="1f9b7.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  tongue: {
    keywords: [ "mouth", "playful" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc45" src="1f445.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  ear: {
    keywords: [ "face", "hear", "sound", "listen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc42" src="1f442.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  nose: {
    keywords: [ "smell", "sniff" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc43" src="1f443.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  eye: {
    keywords: [ "face", "look", "see", "watch", "stare" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc41" src="1f441.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  eyes: {
    keywords: [ "look", "watch", "stalk", "peek", "see" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc40" src="1f440.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  brain: {
    keywords: [ "smart", "intelligent" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde0" src="1f9e0.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  bust_in_silhouette: {
    keywords: [ "user", "person", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc64" src="1f464.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  busts_in_silhouette: {
    keywords: [ "user", "person", "human", "group", "team" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc65" src="1f465.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  speaking_head: {
    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde3" src="1f5e3.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  baby: {
    keywords: [ "child", "boy", "girl", "toddler" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc76" src="1f476.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  child: {
    keywords: [ "gender-neutral", "young" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd2" src="1f9d2.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  boy: {
    keywords: [ "man", "male", "guy", "teenager" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc66" src="1f466.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  girl: {
    keywords: [ "female", "woman", "teenager" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc67" src="1f467.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  adult: {
    keywords: [ "gender-neutral", "person" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd1" src="1f9d1.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man: {
    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68" src="1f468.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman: {
    keywords: [ "female", "girls", "lady" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69" src="1f469.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  blonde_woman: {
    keywords: [ "woman", "female", "girl", "blonde", "person" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71\u200d\u2640\ufe0f" src="1f471-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  blonde_man: {
    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71" src="1f471.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  bearded_person: {
    keywords: [ "person", "bewhiskered" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd4" src="1f9d4.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  older_adult: {
    keywords: [ "human", "elder", "senior", "gender-neutral" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd3" src="1f9d3.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  older_man: {
    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc74" src="1f474.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  older_woman: {
    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc75" src="1f475.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_with_gua_pi_mao: {
    keywords: [ "male", "boy", "chinese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc72" src="1f472.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_with_headscarf: {
    keywords: [ "female", "hijab", "mantilla", "tichel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd5" src="1f9d5.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_with_turban: {
    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73\u200d\u2640\ufe0f" src="1f473-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_with_turban: {
    keywords: [ "male", "indian", "hinduism", "arabs" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73" src="1f473.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  policewoman: {
    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e\u200d\u2640\ufe0f" src="1f46e-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  policeman: {
    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e" src="1f46e.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  construction_worker_woman: {
    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77\u200d\u2640\ufe0f" src="1f477-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  construction_worker_man: {
    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77" src="1f477.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  guardswoman: {
    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82\u200d\u2640\ufe0f" src="1f482-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  guardsman: {
    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82" src="1f482.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  female_detective: {
    keywords: [ "human", "spy", "detective", "female", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75\ufe0f\u200d\u2640\ufe0f" src="1f575-fe0f-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  male_detective: {
    keywords: [ "human", "spy", "detective" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75" src="1f575.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_health_worker: {
    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2695\ufe0f" src="1f469-200d-2695-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_health_worker: {
    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2695\ufe0f" src="1f468-200d-2695-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_farmer: {
    keywords: [ "rancher", "gardener", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf3e" src="1f469-200d-1f33e.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_farmer: {
    keywords: [ "rancher", "gardener", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf3e" src="1f468-200d-1f33e.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_cook: {
    keywords: [ "chef", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf73" src="1f469-200d-1f373.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_cook: {
    keywords: [ "chef", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf73" src="1f468-200d-1f373.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_student: {
    keywords: [ "graduate", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf93" src="1f469-200d-1f393.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_student: {
    keywords: [ "graduate", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf93" src="1f468-200d-1f393.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_singer: {
    keywords: [ "rockstar", "entertainer", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa4" src="1f469-200d-1f3a4.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_singer: {
    keywords: [ "rockstar", "entertainer", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa4" src="1f468-200d-1f3a4.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_teacher: {
    keywords: [ "instructor", "professor", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfeb" src="1f469-200d-1f3eb.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_teacher: {
    keywords: [ "instructor", "professor", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfeb" src="1f468-200d-1f3eb.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_factory_worker: {
    keywords: [ "assembly", "industrial", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfed" src="1f469-200d-1f3ed.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_factory_worker: {
    keywords: [ "assembly", "industrial", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfed" src="1f468-200d-1f3ed.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_technologist: {
    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbb" src="1f469-200d-1f4bb.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_technologist: {
    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbb" src="1f468-200d-1f4bb.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_office_worker: {
    keywords: [ "business", "manager", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbc" src="1f469-200d-1f4bc.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_office_worker: {
    keywords: [ "business", "manager", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbc" src="1f468-200d-1f4bc.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_mechanic: {
    keywords: [ "plumber", "woman", "human", "wrench" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd27" src="1f469-200d-1f527.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_mechanic: {
    keywords: [ "plumber", "man", "human", "wrench" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd27" src="1f468-200d-1f527.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_scientist: {
    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd2c" src="1f469-200d-1f52c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_scientist: {
    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd2c" src="1f468-200d-1f52c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_artist: {
    keywords: [ "painter", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa8" src="1f469-200d-1f3a8.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_artist: {
    keywords: [ "painter", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa8" src="1f468-200d-1f3a8.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_firefighter: {
    keywords: [ "fireman", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude92" src="1f469-200d-1f692.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_firefighter: {
    keywords: [ "fireman", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude92" src="1f468-200d-1f692.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_pilot: {
    keywords: [ "aviator", "plane", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2708\ufe0f" src="1f469-200d-2708-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_pilot: {
    keywords: [ "aviator", "plane", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2708\ufe0f" src="1f468-200d-2708-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_astronaut: {
    keywords: [ "space", "rocket", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude80" src="1f469-200d-1f680.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_astronaut: {
    keywords: [ "space", "rocket", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude80" src="1f468-200d-1f680.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_judge: {
    keywords: [ "justice", "court", "woman", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2696\ufe0f" src="1f469-200d-2696-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_judge: {
    keywords: [ "justice", "court", "man", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2696\ufe0f" src="1f468-200d-2696-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_superhero: {
    keywords: [ "woman", "female", "good", "heroine", "superpowers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2640\ufe0f" src="1f9b8-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_superhero: {
    keywords: [ "man", "male", "good", "hero", "superpowers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2642\ufe0f" src="1f9b8-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_supervillain: {
    keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2640\ufe0f" src="1f9b9-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_supervillain: {
    keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2642\ufe0f" src="1f9b9-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  mrs_claus: {
    keywords: [ "woman", "female", "xmas", "mother christmas" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd36" src="1f936.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  santa: {
    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf85" src="1f385.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  sorceress: {
    keywords: [ "woman", "female", "mage", "witch" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2640\ufe0f" src="1f9d9-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  wizard: {
    keywords: [ "man", "male", "mage", "sorcerer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2642\ufe0f" src="1f9d9-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_elf: {
    keywords: [ "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2640\ufe0f" src="1f9dd-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_elf: {
    keywords: [ "man", "male" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2642\ufe0f" src="1f9dd-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_vampire: {
    keywords: [ "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2640\ufe0f" src="1f9db-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_vampire: {
    keywords: [ "man", "male", "dracula" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2642\ufe0f" src="1f9db-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_zombie: {
    keywords: [ "woman", "female", "undead", "walking dead" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2640\ufe0f" src="1f9df-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  man_zombie: {
    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2642\ufe0f" src="1f9df-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  woman_genie: {
    keywords: [ "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2640\ufe0f" src="1f9de-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  man_genie: {
    keywords: [ "man", "male" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2642\ufe0f" src="1f9de-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  mermaid: {
    keywords: [ "woman", "female", "merwoman", "ariel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2640\ufe0f" src="1f9dc-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  merman: {
    keywords: [ "man", "male", "triton" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2642\ufe0f" src="1f9dc-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_fairy: {
    keywords: [ "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2640\ufe0f" src="1f9da-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_fairy: {
    keywords: [ "man", "male" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2642\ufe0f" src="1f9da-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  angel: {
    keywords: [ "heaven", "wings", "halo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7c" src="1f47c.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  pregnant_woman: {
    keywords: [ "baby" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd30" src="1f930.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  breastfeeding: {
    keywords: [ "nursing", "baby" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd31" src="1f931.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  princess: {
    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc78" src="1f478.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  prince: {
    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd34" src="1f934.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  bride_with_veil: {
    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc70" src="1f470.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_in_tuxedo: {
    keywords: [ "couple", "marriage", "wedding", "groom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd35" src="1f935.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  running_woman: {
    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3\u200d\u2640\ufe0f" src="1f3c3-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  running_man: {
    keywords: [ "man", "walking", "exercise", "race", "running" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3" src="1f3c3.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  walking_woman: {
    keywords: [ "human", "feet", "steps", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6\u200d\u2640\ufe0f" src="1f6b6-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  walking_man: {
    keywords: [ "human", "feet", "steps" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6" src="1f6b6.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  dancer: {
    keywords: [ "female", "girl", "woman", "fun" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc83" src="1f483.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_dancing: {
    keywords: [ "male", "boy", "fun", "dancer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd7a" src="1f57a.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  dancing_women: {
    keywords: [ "female", "bunny", "women", "girls" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f" src="1f46f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  dancing_men: {
    keywords: [ "male", "bunny", "men", "boys" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f\u200d\u2642\ufe0f" src="1f46f-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  couple: {
    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6b" src="1f46b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  two_men_holding_hands: {
    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6c" src="1f46c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  two_women_holding_hands: {
    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6d" src="1f46d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  bowing_woman: {
    keywords: [ "woman", "female", "girl" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47\u200d\u2640\ufe0f" src="1f647-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  bowing_man: {
    keywords: [ "man", "male", "boy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47" src="1f647.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_facepalming: {
    keywords: [ "man", "male", "boy", "disbelief" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2642\ufe0f" src="1f926-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_facepalming: {
    keywords: [ "woman", "female", "girl", "disbelief" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2640\ufe0f" src="1f926-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_shrugging: {
    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37" src="1f937.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_shrugging: {
    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37\u200d\u2642\ufe0f" src="1f937-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  tipping_hand_woman: {
    keywords: [ "female", "girl", "woman", "human", "information" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81" src="1f481.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  tipping_hand_man: {
    keywords: [ "male", "boy", "man", "human", "information" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81\u200d\u2642\ufe0f" src="1f481-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  no_good_woman: {
    keywords: [ "female", "girl", "woman", "nope" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45" src="1f645.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  no_good_man: {
    keywords: [ "male", "boy", "man", "nope" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45\u200d\u2642\ufe0f" src="1f645-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  ok_woman: {
    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46" src="1f646.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  ok_man: {
    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46\u200d\u2642\ufe0f" src="1f646-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  raising_hand_woman: {
    keywords: [ "female", "girl", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b" src="1f64b.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  raising_hand_man: {
    keywords: [ "male", "boy", "man" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b\u200d\u2642\ufe0f" src="1f64b-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  pouting_woman: {
    keywords: [ "female", "girl", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e" src="1f64e.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  pouting_man: {
    keywords: [ "male", "boy", "man" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e\u200d\u2642\ufe0f" src="1f64e-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  frowning_woman: {
    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d" src="1f64d.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  frowning_man: {
    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d\u200d\u2642\ufe0f" src="1f64d-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  haircut_woman: {
    keywords: [ "female", "girl", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87" src="1f487.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  haircut_man: {
    keywords: [ "male", "boy", "man" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87\u200d\u2642\ufe0f" src="1f487-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  massage_woman: {
    keywords: [ "female", "girl", "woman", "head" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86" src="1f486.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  massage_man: {
    keywords: [ "male", "boy", "man", "head" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86\u200d\u2642\ufe0f" src="1f486-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_in_steamy_room: {
    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2640\ufe0f" src="1f9d6-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  man_in_steamy_room: {
    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2642\ufe0f" src="1f9d6-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "people"
  },
  couple_with_heart_woman_man: {
    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc91" src="1f491.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  couple_with_heart_woman_woman: {
    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f469.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  couple_with_heart_man_man: {
    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f468.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  couplekiss_man_woman: {
    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8f" src="1f48f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  couplekiss_woman_woman: {
    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  couplekiss_man_man: {
    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_boy: {
    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6a" src="1f46a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_girl: {
    keywords: [ "home", "parents", "people", "human", "child" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_girl_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_boy_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_girl_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_girl_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_boy_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_girl_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_girl_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_boy_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_girl_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_boy: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_girl: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_girl_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f467-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_boy_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f466-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_girl_girl: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f467-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_boy: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_girl: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_girl_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f467-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_boy_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f466-200d-1f466.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_girl_girl: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f467-200d-1f467.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  yarn: {
    keywords: [ "ball", "crochet", "knit" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf6" src="1f9f6.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  thread: {
    keywords: [ "needle", "sewing", "spool", "string" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf5" src="1f9f5.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  coat: {
    keywords: [ "jacket" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde5" src="1f9e5.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  labcoat: {
    keywords: [ "doctor", "experiment", "scientist", "chemist" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7c" src="1f97c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  womans_clothes: {
    keywords: [ "fashion", "shopping_bags", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5a" src="1f45a.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  tshirt: {
    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc55" src="1f455.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  jeans: {
    keywords: [ "fashion", "shopping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc56" src="1f456.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  necktie: {
    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc54" src="1f454.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  dress: {
    keywords: [ "clothes", "fashion", "shopping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc57" src="1f457.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  bikini: {
    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc59" src="1f459.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kimono: {
    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc58" src="1f458.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  lipstick: {
    keywords: [ "female", "girl", "fashion", "woman" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc84" src="1f484.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  kiss: {
    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8b" src="1f48b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  footprints: {
    keywords: [ "feet", "tracking", "walking", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc63" src="1f463.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  flat_shoe: {
    keywords: [ "ballet", "slip-on", "slipper" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7f" src="1f97f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  high_heel: {
    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc60" src="1f460.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  sandal: {
    keywords: [ "shoes", "fashion", "flip flops" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc61" src="1f461.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  boot: {
    keywords: [ "shoes", "fashion" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc62" src="1f462.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  mans_shoe: {
    keywords: [ "fashion", "male" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5e" src="1f45e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  athletic_shoe: {
    keywords: [ "shoes", "sports", "sneakers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5f" src="1f45f.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  hiking_boot: {
    keywords: [ "backpacking", "camping", "hiking" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7e" src="1f97e.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  socks: {
    keywords: [ "stockings", "clothes" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde6" src="1f9e6.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  gloves: {
    keywords: [ "hands", "winter", "clothes" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde4" src="1f9e4.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  scarf: {
    keywords: [ "neck", "winter", "clothes" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde3" src="1f9e3.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  womans_hat: {
    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc52" src="1f452.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  tophat: {
    keywords: [ "magic", "gentleman", "classy", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa9" src="1f3a9.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  billed_hat: {
    keywords: [ "cap", "baseball" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde2" src="1f9e2.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  rescue_worker_helmet: {
    keywords: [ "construction", "build" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d1" src="26d1.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  mortar_board: {
    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf93" src="1f393.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  crown: {
    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc51" src="1f451.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  school_satchel: {
    keywords: [ "student", "education", "bag", "backpack" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf92" src="1f392.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  luggage: {
    keywords: [ "packing", "travel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf3" src="1f9f3.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  pouch: {
    keywords: [ "bag", "accessories", "shopping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5d" src="1f45d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  purse: {
    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5b" src="1f45b.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  handbag: {
    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5c" src="1f45c.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  briefcase: {
    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbc" src="1f4bc.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  eyeglasses: {
    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc53" src="1f453.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  dark_sunglasses: {
    keywords: [ "face", "cool", "accessories" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd76" src="1f576.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  goggles: {
    keywords: [ "eyes", "protection", "safety" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7d" src="1f97d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  ring: {
    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8d" src="1f48d.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  closed_umbrella: {
    keywords: [ "weather", "rain", "drizzle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf02" src="1f302.png"/>',
    fitzpatrick_scale: false,
    category: "people"
  },
  dog: {
    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc36" src="1f436.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cat: {
    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc31" src="1f431.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mouse: {
    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2d" src="1f42d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hamster: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc39" src="1f439.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rabbit: {
    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc30" src="1f430.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fox_face: {
    keywords: [ "animal", "nature", "face" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8a" src="1f98a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bear: {
    keywords: [ "animal", "nature", "wild" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3b" src="1f43b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  panda_face: {
    keywords: [ "animal", "nature", "panda" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3c" src="1f43c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  koala: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc28" src="1f428.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tiger: {
    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2f" src="1f42f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  lion: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd81" src="1f981.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cow: {
    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2e" src="1f42e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  pig: {
    keywords: [ "animal", "oink", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc37" src="1f437.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  pig_nose: {
    keywords: [ "animal", "oink" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3d" src="1f43d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  frog: {
    keywords: [ "animal", "nature", "croak", "toad" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc38" src="1f438.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  squid: {
    keywords: [ "animal", "nature", "ocean", "sea" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd91" src="1f991.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  octopus: {
    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc19" src="1f419.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shrimp: {
    keywords: [ "animal", "ocean", "nature", "seafood" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd90" src="1f990.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  monkey_face: {
    keywords: [ "animal", "nature", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc35" src="1f435.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  gorilla: {
    keywords: [ "animal", "nature", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8d" src="1f98d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  see_no_evil: {
    keywords: [ "monkey", "animal", "nature", "haha" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude48" src="1f648.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hear_no_evil: {
    keywords: [ "animal", "monkey", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude49" src="1f649.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  speak_no_evil: {
    keywords: [ "monkey", "animal", "nature", "omg" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4a" src="1f64a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  monkey: {
    keywords: [ "animal", "nature", "banana", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc12" src="1f412.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  chicken: {
    keywords: [ "animal", "cluck", "nature", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc14" src="1f414.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  penguin: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc27" src="1f427.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bird: {
    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc26" src="1f426.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  baby_chick: {
    keywords: [ "animal", "chicken", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc24" src="1f424.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hatching_chick: {
    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc23" src="1f423.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hatched_chick: {
    keywords: [ "animal", "chicken", "baby", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc25" src="1f425.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  duck: {
    keywords: [ "animal", "nature", "bird", "mallard" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd86" src="1f986.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  eagle: {
    keywords: [ "animal", "nature", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd85" src="1f985.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  owl: {
    keywords: [ "animal", "nature", "bird", "hoot" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd89" src="1f989.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bat: {
    keywords: [ "animal", "nature", "blind", "vampire" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd87" src="1f987.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  wolf: {
    keywords: [ "animal", "nature", "wild" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3a" src="1f43a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  boar: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc17" src="1f417.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  horse: {
    keywords: [ "animal", "brown", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc34" src="1f434.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  unicorn: {
    keywords: [ "animal", "nature", "mystical" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd84" src="1f984.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  honeybee: {
    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1d" src="1f41d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bug: {
    keywords: [ "animal", "insect", "nature", "worm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1b" src="1f41b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  butterfly: {
    keywords: [ "animal", "insect", "nature", "caterpillar" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8b" src="1f98b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snail: {
    keywords: [ "slow", "animal", "shell" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0c" src="1f40c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  beetle: {
    keywords: [ "animal", "insect", "nature", "ladybug" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1e" src="1f41e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ant: {
    keywords: [ "animal", "insect", "nature", "bug" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1c" src="1f41c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  grasshopper: {
    keywords: [ "animal", "cricket", "chirp" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd97" src="1f997.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  spider: {
    keywords: [ "animal", "arachnid" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd77" src="1f577.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  scorpion: {
    keywords: [ "animal", "arachnid" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd82" src="1f982.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  crab: {
    keywords: [ "animal", "crustacean" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd80" src="1f980.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snake: {
    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0d" src="1f40d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  lizard: {
    keywords: [ "animal", "nature", "reptile" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8e" src="1f98e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  "t-rex": {
    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd96" src="1f996.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sauropod: {
    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd95" src="1f995.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  turtle: {
    keywords: [ "animal", "slow", "nature", "tortoise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc22" src="1f422.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tropical_fish: {
    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc20" src="1f420.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fish: {
    keywords: [ "animal", "food", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1f" src="1f41f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  blowfish: {
    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc21" src="1f421.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dolphin: {
    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2c" src="1f42c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shark: {
    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd88" src="1f988.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  whale: {
    keywords: [ "animal", "nature", "sea", "ocean" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc33" src="1f433.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  whale2: {
    keywords: [ "animal", "nature", "sea", "ocean" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0b" src="1f40b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  crocodile: {
    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0a" src="1f40a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  leopard: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc06" src="1f406.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  zebra: {
    keywords: [ "animal", "nature", "stripes", "safari" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd93" src="1f993.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tiger2: {
    keywords: [ "animal", "nature", "roar" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc05" src="1f405.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  water_buffalo: {
    keywords: [ "animal", "nature", "ox", "cow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc03" src="1f403.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ox: {
    keywords: [ "animal", "cow", "beef" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc02" src="1f402.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cow2: {
    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc04" src="1f404.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  deer: {
    keywords: [ "animal", "nature", "horns", "venison" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8c" src="1f98c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dromedary_camel: {
    keywords: [ "animal", "hot", "desert", "hump" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2a" src="1f42a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  camel: {
    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2b" src="1f42b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  giraffe: {
    keywords: [ "animal", "nature", "spots", "safari" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd92" src="1f992.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  elephant: {
    keywords: [ "animal", "nature", "nose", "th", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc18" src="1f418.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rhinoceros: {
    keywords: [ "animal", "nature", "horn" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8f" src="1f98f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  goat: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc10" src="1f410.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ram: {
    keywords: [ "animal", "sheep", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0f" src="1f40f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sheep: {
    keywords: [ "animal", "nature", "wool", "shipit" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc11" src="1f411.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  racehorse: {
    keywords: [ "animal", "gamble", "luck" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0e" src="1f40e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  pig2: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc16" src="1f416.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rat: {
    keywords: [ "animal", "mouse", "rodent" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc00" src="1f400.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mouse2: {
    keywords: [ "animal", "nature", "rodent" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc01" src="1f401.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rooster: {
    keywords: [ "animal", "nature", "chicken" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc13" src="1f413.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  turkey: {
    keywords: [ "animal", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd83" src="1f983.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dove: {
    keywords: [ "animal", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4a" src="1f54a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dog2: {
    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc15" src="1f415.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  poodle: {
    keywords: [ "dog", "animal", "101", "nature", "pet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc29" src="1f429.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cat2: {
    keywords: [ "animal", "meow", "pet", "cats" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc08" src="1f408.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rabbit2: {
    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc07" src="1f407.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  chipmunk: {
    keywords: [ "animal", "nature", "rodent", "squirrel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3f" src="1f43f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hedgehog: {
    keywords: [ "animal", "nature", "spiny" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd94" src="1f994.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  raccoon: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9d" src="1f99d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  llama: {
    keywords: [ "animal", "nature", "alpaca" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd99" src="1f999.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hippopotamus: {
    keywords: [ "animal", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9b" src="1f99b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  kangaroo: {
    keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd98" src="1f998.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  badger: {
    keywords: [ "animal", "nature", "honey" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda1" src="1f9a1.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  swan: {
    keywords: [ "animal", "nature", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda2" src="1f9a2.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  peacock: {
    keywords: [ "animal", "nature", "peahen", "bird" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9a" src="1f99a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  parrot: {
    keywords: [ "animal", "nature", "bird", "pirate", "talk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9c" src="1f99c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  lobster: {
    keywords: [ "animal", "nature", "bisque", "claws", "seafood" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9e" src="1f99e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mosquito: {
    keywords: [ "animal", "nature", "insect", "malaria" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9f" src="1f99f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  paw_prints: {
    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3e" src="1f43e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dragon: {
    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc09" src="1f409.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dragon_face: {
    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc32" src="1f432.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cactus: {
    keywords: [ "vegetable", "plant", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf35" src="1f335.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  christmas_tree: {
    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf84" src="1f384.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  evergreen_tree: {
    keywords: [ "plant", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf32" src="1f332.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  deciduous_tree: {
    keywords: [ "plant", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf33" src="1f333.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  palm_tree: {
    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf34" src="1f334.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  seedling: {
    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf31" src="1f331.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  herb: {
    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3f" src="1f33f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shamrock: {
    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2618" src="2618.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  four_leaf_clover: {
    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf40" src="1f340.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bamboo: {
    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8d" src="1f38d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tanabata_tree: {
    keywords: [ "plant", "nature", "branch", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8b" src="1f38b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  leaves: {
    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf43" src="1f343.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fallen_leaf: {
    keywords: [ "nature", "plant", "vegetable", "leaves" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf42" src="1f342.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  maple_leaf: {
    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf41" src="1f341.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ear_of_rice: {
    keywords: [ "nature", "plant" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3e" src="1f33e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hibiscus: {
    keywords: [ "plant", "vegetable", "flowers", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3a" src="1f33a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sunflower: {
    keywords: [ "nature", "plant", "fall" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3b" src="1f33b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rose: {
    keywords: [ "flowers", "valentines", "love", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf39" src="1f339.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  wilted_flower: {
    keywords: [ "plant", "nature", "flower" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd40" src="1f940.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tulip: {
    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf37" src="1f337.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  blossom: {
    keywords: [ "nature", "flowers", "yellow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3c" src="1f33c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cherry_blossom: {
    keywords: [ "nature", "plant", "spring", "flower" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf38" src="1f338.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bouquet: {
    keywords: [ "flowers", "nature", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc90" src="1f490.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mushroom: {
    keywords: [ "plant", "vegetable" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf44" src="1f344.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  chestnut: {
    keywords: [ "food", "squirrel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf30" src="1f330.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  jack_o_lantern: {
    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf83" src="1f383.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shell: {
    keywords: [ "nature", "sea", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1a" src="1f41a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  spider_web: {
    keywords: [ "animal", "insect", "arachnid", "silk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd78" src="1f578.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  earth_americas: {
    keywords: [ "globe", "world", "USA", "international" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0e" src="1f30e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  earth_africa: {
    keywords: [ "globe", "world", "international" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0d" src="1f30d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  earth_asia: {
    keywords: [ "globe", "world", "east", "international" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0f" src="1f30f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  full_moon: {
    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf15" src="1f315.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waning_gibbous_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf16" src="1f316.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  last_quarter_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf17" src="1f317.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waning_crescent_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf18" src="1f318.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  new_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf11" src="1f311.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waxing_crescent_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf12" src="1f312.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  first_quarter_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf13" src="1f313.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waxing_gibbous_moon: {
    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf14" src="1f314.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  new_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1a" src="1f31a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  full_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1d" src="1f31d.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  first_quarter_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1b" src="1f31b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  last_quarter_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1c" src="1f31c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_with_face: {
    keywords: [ "nature", "morning", "sky" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1e" src="1f31e.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  crescent_moon: {
    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf19" src="1f319.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  star: {
    keywords: [ "night", "yellow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b50" src="2b50.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  star2: {
    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1f" src="1f31f.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dizzy: {
    keywords: [ "star", "sparkle", "shoot", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcab" src="1f4ab.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sparkles: {
    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2728" src="2728.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  comet: {
    keywords: [ "space" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2604" src="2604.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sunny: {
    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2600\ufe0f" src="2600.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_behind_small_cloud: {
    keywords: [ "weather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf24" src="1f324.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  partly_sunny: {
    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c5" src="26c5.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_behind_large_cloud: {
    keywords: [ "weather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf25" src="1f325.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_behind_rain_cloud: {
    keywords: [ "weather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf26" src="1f326.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud: {
    keywords: [ "weather", "sky" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2601\ufe0f" src="2601.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_rain: {
    keywords: [ "weather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf27" src="1f327.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_lightning_and_rain: {
    keywords: [ "weather", "lightning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c8" src="26c8.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_lightning: {
    keywords: [ "weather", "thunder" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf29" src="1f329.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  zap: {
    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a1" src="26a1.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fire: {
    keywords: [ "hot", "cook", "flame" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd25" src="1f525.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  boom: {
    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca5" src="1f4a5.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snowflake: {
    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2744\ufe0f" src="2744.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_snow: {
    keywords: [ "weather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf28" src="1f328.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snowman: {
    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c4" src="26c4.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snowman_with_snow: {
    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2603" src="2603.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  wind_face: {
    keywords: [ "gust", "air" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2c" src="1f32c.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dash: {
    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca8" src="1f4a8.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tornado: {
    keywords: [ "weather", "cyclone", "twister" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2a" src="1f32a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fog: {
    keywords: [ "weather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2b" src="1f32b.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  open_umbrella: {
    keywords: [ "weather", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2602" src="2602.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  umbrella: {
    keywords: [ "rainy", "weather", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2614" src="2614.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  droplet: {
    keywords: [ "water", "drip", "faucet", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca7" src="1f4a7.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sweat_drops: {
    keywords: [ "water", "drip", "oops" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca6" src="1f4a6.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ocean: {
    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0a" src="1f30a.png"/>',
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  green_apple: {
    keywords: [ "fruit", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4f" src="1f34f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  apple: {
    keywords: [ "fruit", "mac", "school" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4e" src="1f34e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pear: {
    keywords: [ "fruit", "nature", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf50" src="1f350.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tangerine: {
    keywords: [ "food", "fruit", "nature", "orange" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4a" src="1f34a.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  lemon: {
    keywords: [ "fruit", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4b" src="1f34b.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  banana: {
    keywords: [ "fruit", "food", "monkey" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4c" src="1f34c.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  watermelon: {
    keywords: [ "fruit", "food", "picnic", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf49" src="1f349.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  grapes: {
    keywords: [ "fruit", "food", "wine" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf47" src="1f347.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  strawberry: {
    keywords: [ "fruit", "food", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf53" src="1f353.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  melon: {
    keywords: [ "fruit", "nature", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf48" src="1f348.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cherries: {
    keywords: [ "food", "fruit" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf52" src="1f352.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  peach: {
    keywords: [ "fruit", "nature", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf51" src="1f351.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pineapple: {
    keywords: [ "fruit", "nature", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4d" src="1f34d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  coconut: {
    keywords: [ "fruit", "nature", "food", "palm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd65" src="1f965.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  kiwi_fruit: {
    keywords: [ "fruit", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5d" src="1f95d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  mango: {
    keywords: [ "fruit", "food", "tropical" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6d" src="1f96d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  avocado: {
    keywords: [ "fruit", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd51" src="1f951.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  broccoli: {
    keywords: [ "fruit", "food", "vegetable" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd66" src="1f966.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tomato: {
    keywords: [ "fruit", "vegetable", "nature", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf45" src="1f345.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  eggplant: {
    keywords: [ "vegetable", "nature", "food", "aubergine" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf46" src="1f346.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cucumber: {
    keywords: [ "fruit", "food", "pickle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd52" src="1f952.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  carrot: {
    keywords: [ "vegetable", "food", "orange" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd55" src="1f955.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  hot_pepper: {
    keywords: [ "food", "spicy", "chilli", "chili" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf36" src="1f336.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  potato: {
    keywords: [ "food", "tuber", "vegatable", "starch" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd54" src="1f954.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  corn: {
    keywords: [ "food", "vegetable", "plant" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3d" src="1f33d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  leafy_greens: {
    keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6c" src="1f96c.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sweet_potato: {
    keywords: [ "food", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf60" src="1f360.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  peanuts: {
    keywords: [ "food", "nut" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5c" src="1f95c.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  honey_pot: {
    keywords: [ "bees", "sweet", "kitchen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6f" src="1f36f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  croissant: {
    keywords: [ "food", "bread", "french" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd50" src="1f950.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bread: {
    keywords: [ "food", "wheat", "breakfast", "toast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5e" src="1f35e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  baguette_bread: {
    keywords: [ "food", "bread", "french" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd56" src="1f956.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bagel: {
    keywords: [ "food", "bread", "bakery", "schmear" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6f" src="1f96f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pretzel: {
    keywords: [ "food", "bread", "twisted" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd68" src="1f968.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cheese: {
    keywords: [ "food", "chadder" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc0" src="1f9c0.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  egg: {
    keywords: [ "food", "chicken", "breakfast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5a" src="1f95a.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bacon: {
    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd53" src="1f953.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  steak: {
    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd69" src="1f969.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pancakes: {
    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5e" src="1f95e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  poultry_leg: {
    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf57" src="1f357.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  meat_on_bone: {
    keywords: [ "good", "food", "drumstick" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf56" src="1f356.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bone: {
    keywords: [ "skeleton" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb4" src="1f9b4.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fried_shrimp: {
    keywords: [ "food", "animal", "appetizer", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf64" src="1f364.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fried_egg: {
    keywords: [ "food", "breakfast", "kitchen", "egg" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf73" src="1f373.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  hamburger: {
    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf54" src="1f354.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fries: {
    keywords: [ "chips", "snack", "fast food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5f" src="1f35f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  stuffed_flatbread: {
    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd59" src="1f959.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  hotdog: {
    keywords: [ "food", "frankfurter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2d" src="1f32d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pizza: {
    keywords: [ "food", "party" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf55" src="1f355.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sandwich: {
    keywords: [ "food", "lunch", "bread" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6a" src="1f96a.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  canned_food: {
    keywords: [ "food", "soup" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6b" src="1f96b.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  spaghetti: {
    keywords: [ "food", "italian", "noodle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5d" src="1f35d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  taco: {
    keywords: [ "food", "mexican" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2e" src="1f32e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  burrito: {
    keywords: [ "food", "mexican" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2f" src="1f32f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  green_salad: {
    keywords: [ "food", "healthy", "lettuce" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd57" src="1f957.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  shallow_pan_of_food: {
    keywords: [ "food", "cooking", "casserole", "paella" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd58" src="1f958.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  ramen: {
    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5c" src="1f35c.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  stew: {
    keywords: [ "food", "meat", "soup" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf72" src="1f372.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fish_cake: {
    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf65" src="1f365.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fortune_cookie: {
    keywords: [ "food", "prophecy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd60" src="1f960.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sushi: {
    keywords: [ "food", "fish", "japanese", "rice" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf63" src="1f363.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bento: {
    keywords: [ "food", "japanese", "box" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf71" src="1f371.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  curry: {
    keywords: [ "food", "spicy", "hot", "indian" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5b" src="1f35b.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  rice_ball: {
    keywords: [ "food", "japanese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf59" src="1f359.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  rice: {
    keywords: [ "food", "china", "asian" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5a" src="1f35a.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  rice_cracker: {
    keywords: [ "food", "japanese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf58" src="1f358.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  oden: {
    keywords: [ "food", "japanese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf62" src="1f362.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  dango: {
    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf61" src="1f361.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  shaved_ice: {
    keywords: [ "hot", "dessert", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf67" src="1f367.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  ice_cream: {
    keywords: [ "food", "hot", "dessert" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf68" src="1f368.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  icecream: {
    keywords: [ "food", "hot", "dessert", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf66" src="1f366.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pie: {
    keywords: [ "food", "dessert", "pastry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd67" src="1f967.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cake: {
    keywords: [ "food", "dessert" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf70" src="1f370.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cupcake: {
    keywords: [ "food", "dessert", "bakery", "sweet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc1" src="1f9c1.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  moon_cake: {
    keywords: [ "food", "autumn" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6e" src="1f96e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  birthday: {
    keywords: [ "food", "dessert", "cake" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf82" src="1f382.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  custard: {
    keywords: [ "dessert", "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6e" src="1f36e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  candy: {
    keywords: [ "snack", "dessert", "sweet", "lolly" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6c" src="1f36c.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  lollipop: {
    keywords: [ "food", "snack", "candy", "sweet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6d" src="1f36d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  chocolate_bar: {
    keywords: [ "food", "snack", "dessert", "sweet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6b" src="1f36b.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  popcorn: {
    keywords: [ "food", "movie theater", "films", "snack" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7f" src="1f37f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  dumpling: {
    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5f" src="1f95f.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  doughnut: {
    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf69" src="1f369.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cookie: {
    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6a" src="1f36a.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  milk_glass: {
    keywords: [ "beverage", "drink", "cow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5b" src="1f95b.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  beer: {
    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7a" src="1f37a.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  beers: {
    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7b" src="1f37b.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  clinking_glasses: {
    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd42" src="1f942.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  wine_glass: {
    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf77" src="1f377.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tumbler_glass: {
    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd43" src="1f943.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cocktail: {
    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf78" src="1f378.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tropical_drink: {
    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf79" src="1f379.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  champagne: {
    keywords: [ "drink", "wine", "bottle", "celebration" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7e" src="1f37e.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sake: {
    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf76" src="1f376.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tea: {
    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf75" src="1f375.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cup_with_straw: {
    keywords: [ "drink", "soda" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd64" src="1f964.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  coffee: {
    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2615" src="2615.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  baby_bottle: {
    keywords: [ "food", "container", "milk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7c" src="1f37c.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  salt: {
    keywords: [ "condiment", "shaker" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc2" src="1f9c2.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  spoon: {
    keywords: [ "cutlery", "kitchen", "tableware" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd44" src="1f944.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fork_and_knife: {
    keywords: [ "cutlery", "kitchen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf74" src="1f374.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  plate_with_cutlery: {
    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7d" src="1f37d.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bowl_with_spoon: {
    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd63" src="1f963.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  takeout_box: {
    keywords: [ "food", "leftovers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd61" src="1f961.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  chopsticks: {
    keywords: [ "food" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd62" src="1f962.png"/>',
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  soccer: {
    keywords: [ "sports", "football" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26bd" src="26bd.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  basketball: {
    keywords: [ "sports", "balls", "NBA" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc0" src="1f3c0.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  football: {
    keywords: [ "sports", "balls", "NFL" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc8" src="1f3c8.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  baseball: {
    keywords: [ "sports", "balls" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26be" src="26be.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  softball: {
    keywords: [ "sports", "balls" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4e" src="1f94e.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  tennis: {
    keywords: [ "sports", "balls", "green" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbe" src="1f3be.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  volleyball: {
    keywords: [ "sports", "balls" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd0" src="1f3d0.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  rugby_football: {
    keywords: [ "sports", "team" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc9" src="1f3c9.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  flying_disc: {
    keywords: [ "sports", "frisbee", "ultimate" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4f" src="1f94f.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  "8ball": {
    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb1" src="1f3b1.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  golf: {
    keywords: [ "sports", "business", "flag", "hole", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f3" src="26f3.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  golfing_woman: {
    keywords: [ "sports", "business", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f" src="1f3cc-fe0f-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  golfing_man: {
    keywords: [ "sports", "business" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc" src="1f3cc.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  ping_pong: {
    keywords: [ "sports", "pingpong" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd3" src="1f3d3.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  badminton: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff8" src="1f3f8.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  goal_net: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd45" src="1f945.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  ice_hockey: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd2" src="1f3d2.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  field_hockey: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd1" src="1f3d1.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  lacrosse: {
    keywords: [ "sports", "ball", "stick" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4d" src="1f94d.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  cricket: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcf" src="1f3cf.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  ski: {
    keywords: [ "sports", "winter", "cold", "snow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbf" src="1f3bf.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  skier: {
    keywords: [ "sports", "winter", "snow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f7" src="26f7.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  snowboarder: {
    keywords: [ "sports", "winter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc2" src="1f3c2.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  person_fencing: {
    keywords: [ "sports", "fencing", "sword" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3a" src="1f93a.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  women_wrestling: {
    keywords: [ "sports", "wrestlers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2640\ufe0f" src="1f93c-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  men_wrestling: {
    keywords: [ "sports", "wrestlers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2642\ufe0f" src="1f93c-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  woman_cartwheeling: {
    keywords: [ "gymnastics" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2640\ufe0f" src="1f938-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_cartwheeling: {
    keywords: [ "gymnastics" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2642\ufe0f" src="1f938-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  woman_playing_handball: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2640\ufe0f" src="1f93e-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_playing_handball: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2642\ufe0f" src="1f93e-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  ice_skate: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f8" src="26f8.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  curling_stone: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4c" src="1f94c.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  skateboard: {
    keywords: [ "board" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef9" src="1f6f9.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  sled: {
    keywords: [ "sleigh", "luge", "toboggan" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef7" src="1f6f7.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  bow_and_arrow: {
    keywords: [ "sports" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff9" src="1f3f9.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  fishing_pole_and_fish: {
    keywords: [ "food", "hobby", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa3" src="1f3a3.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  boxing_glove: {
    keywords: [ "sports", "fighting" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4a" src="1f94a.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  martial_arts_uniform: {
    keywords: [ "judo", "karate", "taekwondo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4b" src="1f94b.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  rowing_woman: {
    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3\u200d\u2640\ufe0f" src="1f6a3-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  rowing_man: {
    keywords: [ "sports", "hobby", "water", "ship" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3" src="1f6a3.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  climbing_woman: {
    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2640\ufe0f" src="1f9d7-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  climbing_man: {
    keywords: [ "sports", "hobby", "man", "male", "rock" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2642\ufe0f" src="1f9d7-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  swimming_woman: {
    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca\u200d\u2640\ufe0f" src="1f3ca-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  swimming_man: {
    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca" src="1f3ca.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  woman_playing_water_polo: {
    keywords: [ "sports", "pool" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2640\ufe0f" src="1f93d-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_playing_water_polo: {
    keywords: [ "sports", "pool" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2642\ufe0f" src="1f93d-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  woman_in_lotus_position: {
    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2640\ufe0f" src="1f9d8-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_in_lotus_position: {
    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2642\ufe0f" src="1f9d8-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  surfing_woman: {
    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4\u200d\u2640\ufe0f" src="1f3c4-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  surfing_man: {
    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4" src="1f3c4.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  bath: {
    keywords: [ "clean", "shower", "bathroom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec0" src="1f6c0.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  basketball_woman: {
    keywords: [ "sports", "human", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9\ufe0f\u200d\u2640\ufe0f" src="26f9-fe0f-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  basketball_man: {
    keywords: [ "sports", "human" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9" src="26f9.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  weight_lifting_woman: {
    keywords: [ "sports", "training", "exercise", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f" src="1f3cb-fe0f-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  weight_lifting_man: {
    keywords: [ "sports", "training", "exercise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb" src="1f3cb.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  biking_woman: {
    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4\u200d\u2640\ufe0f" src="1f6b4-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  biking_man: {
    keywords: [ "sports", "bike", "exercise", "hipster" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4" src="1f6b4.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  mountain_biking_woman: {
    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5\u200d\u2640\ufe0f" src="1f6b5-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  mountain_biking_man: {
    keywords: [ "transportation", "sports", "human", "race", "bike" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5" src="1f6b5.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  horse_racing: {
    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc7" src="1f3c7.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  business_suit_levitating: {
    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd74" src="1f574.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  trophy: {
    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc6" src="1f3c6.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  running_shirt_with_sash: {
    keywords: [ "play", "pageant" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbd" src="1f3bd.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  medal_sports: {
    keywords: [ "award", "winning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc5" src="1f3c5.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  medal_military: {
    keywords: [ "award", "winning", "army" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf96" src="1f396.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  "1st_place_medal": {
    keywords: [ "award", "winning", "first" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd47" src="1f947.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  "2nd_place_medal": {
    keywords: [ "award", "second" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd48" src="1f948.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  "3rd_place_medal": {
    keywords: [ "award", "third" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd49" src="1f949.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  reminder_ribbon: {
    keywords: [ "sports", "cause", "support", "awareness" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf97" src="1f397.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  rosette: {
    keywords: [ "flower", "decoration", "military" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff5" src="1f3f5.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  ticket: {
    keywords: [ "event", "concert", "pass" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfab" src="1f3ab.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  tickets: {
    keywords: [ "sports", "concert", "entrance" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9f" src="1f39f.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  performing_arts: {
    keywords: [ "acting", "theater", "drama" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfad" src="1f3ad.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  art: {
    keywords: [ "design", "paint", "draw", "colors" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa8" src="1f3a8.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  circus_tent: {
    keywords: [ "festival", "carnival", "party" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaa" src="1f3aa.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  woman_juggling: {
    keywords: [ "juggle", "balance", "skill", "multitask" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2640\ufe0f" src="1f939-200d-2640-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_juggling: {
    keywords: [ "juggle", "balance", "skill", "multitask" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2642\ufe0f" src="1f939-200d-2642-fe0f.png"/>',
    fitzpatrick_scale: true,
    category: "activity"
  },
  microphone: {
    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa4" src="1f3a4.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  headphones: {
    keywords: [ "music", "score", "gadgets" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa7" src="1f3a7.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  musical_score: {
    keywords: [ "treble", "clef", "compose" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbc" src="1f3bc.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  musical_keyboard: {
    keywords: [ "piano", "instrument", "compose" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb9" src="1f3b9.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  drum: {
    keywords: [ "music", "instrument", "drumsticks", "snare" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd41" src="1f941.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  saxophone: {
    keywords: [ "music", "instrument", "jazz", "blues" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb7" src="1f3b7.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  trumpet: {
    keywords: [ "music", "brass" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfba" src="1f3ba.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  guitar: {
    keywords: [ "music", "instrument" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb8" src="1f3b8.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  violin: {
    keywords: [ "music", "instrument", "orchestra", "symphony" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbb" src="1f3bb.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  clapper: {
    keywords: [ "movie", "film", "record" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfac" src="1f3ac.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  video_game: {
    keywords: [ "play", "console", "PS4", "controller" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfae" src="1f3ae.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  space_invader: {
    keywords: [ "game", "arcade", "play" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7e" src="1f47e.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  dart: {
    keywords: [ "game", "play", "bar", "target", "bullseye" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaf" src="1f3af.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  game_die: {
    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb2" src="1f3b2.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  chess_pawn: {
    keywords: [ "expendable" ],
    char: "\u265f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  slot_machine: {
    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb0" src="1f3b0.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  jigsaw: {
    keywords: [ "interlocking", "puzzle", "piece" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde9" src="1f9e9.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  bowling: {
    keywords: [ "sports", "fun", "play" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb3" src="1f3b3.png"/>',
    fitzpatrick_scale: false,
    category: "activity"
  },
  red_car: {
    keywords: [ "red", "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude97" src="1f697.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  taxi: {
    keywords: [ "uber", "vehicle", "cars", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude95" src="1f695.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  blue_car: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude99" src="1f699.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bus: {
    keywords: [ "car", "vehicle", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8c" src="1f68c.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  trolleybus: {
    keywords: [ "bart", "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8e" src="1f68e.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  racing_car: {
    keywords: [ "sports", "race", "fast", "formula", "f1" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfce" src="1f3ce.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  police_car: {
    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude93" src="1f693.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ambulance: {
    keywords: [ "health", "911", "hospital" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude91" src="1f691.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fire_engine: {
    keywords: [ "transportation", "cars", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude92" src="1f692.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  minibus: {
    keywords: [ "vehicle", "car", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude90" src="1f690.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  truck: {
    keywords: [ "cars", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9a" src="1f69a.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  articulated_lorry: {
    keywords: [ "vehicle", "cars", "transportation", "express" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9b" src="1f69b.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tractor: {
    keywords: [ "vehicle", "car", "farming", "agriculture" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9c" src="1f69c.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  kick_scooter: {
    keywords: [ "vehicle", "kick", "razor" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef4" src="1f6f4.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motorcycle: {
    keywords: [ "race", "sports", "fast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcd" src="1f3cd.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bike: {
    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb2" src="1f6b2.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motor_scooter: {
    keywords: [ "vehicle", "vespa", "sasha" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef5" src="1f6f5.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rotating_light: {
    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea8" src="1f6a8.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_police_car: {
    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude94" src="1f694.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_bus: {
    keywords: [ "vehicle", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8d" src="1f68d.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_automobile: {
    keywords: [ "car", "vehicle", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude98" src="1f698.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_taxi: {
    keywords: [ "vehicle", "cars", "uber" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude96" src="1f696.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  aerial_tramway: {
    keywords: [ "transportation", "vehicle", "ski" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea1" src="1f6a1.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain_cableway: {
    keywords: [ "transportation", "vehicle", "ski" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea0" src="1f6a0.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  suspension_railway: {
    keywords: [ "vehicle", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9f" src="1f69f.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  railway_car: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude83" src="1f683.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  train: {
    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8b" src="1f68b.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  monorail: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9d" src="1f69d.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bullettrain_side: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude84" src="1f684.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bullettrain_front: {
    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude85" src="1f685.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  light_rail: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude88" src="1f688.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain_railway: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9e" src="1f69e.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  steam_locomotive: {
    keywords: [ "transportation", "vehicle", "train" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude82" src="1f682.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  train2: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude86" src="1f686.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  metro: {
    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude87" src="1f687.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tram: {
    keywords: [ "transportation", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8a" src="1f68a.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  station: {
    keywords: [ "transportation", "vehicle", "public" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude89" src="1f689.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  flying_saucer: {
    keywords: [ "transportation", "vehicle", "ufo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef8" src="1f6f8.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  helicopter: {
    keywords: [ "transportation", "vehicle", "fly" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude81" src="1f681.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  small_airplane: {
    keywords: [ "flight", "transportation", "fly", "vehicle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee9" src="1f6e9.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  airplane: {
    keywords: [ "vehicle", "transportation", "flight", "fly" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2708\ufe0f" src="2708.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  flight_departure: {
    keywords: [ "airport", "flight", "landing" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeeb" src="1f6eb.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  flight_arrival: {
    keywords: [ "airport", "flight", "boarding" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeec" src="1f6ec.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sailboat: {
    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f5" src="26f5.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motor_boat: {
    keywords: [ "ship" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee5" src="1f6e5.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  speedboat: {
    keywords: [ "ship", "transportation", "vehicle", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea4" src="1f6a4.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ferry: {
    keywords: [ "boat", "ship", "yacht" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f4" src="26f4.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  passenger_ship: {
    keywords: [ "yacht", "cruise", "ferry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef3" src="1f6f3.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rocket: {
    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude80" src="1f680.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  artificial_satellite: {
    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef0" src="1f6f0.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  seat: {
    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcba" src="1f4ba.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  canoe: {
    keywords: [ "boat", "paddle", "water", "ship" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef6" src="1f6f6.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  anchor: {
    keywords: [ "ship", "ferry", "sea", "boat" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2693" src="2693.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  construction: {
    keywords: [ "wip", "progress", "caution", "warning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea7" src="1f6a7.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fuelpump: {
    keywords: [ "gas station", "petroleum" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fd" src="26fd.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  busstop: {
    keywords: [ "transportation", "wait" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8f" src="1f68f.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  vertical_traffic_light: {
    keywords: [ "transportation", "driving" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea6" src="1f6a6.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  traffic_light: {
    keywords: [ "transportation", "signal" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea5" src="1f6a5.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  checkered_flag: {
    keywords: [ "contest", "finishline", "race", "gokart" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc1" src="1f3c1.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ship: {
    keywords: [ "transportation", "titanic", "deploy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea2" src="1f6a2.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ferris_wheel: {
    keywords: [ "photo", "carnival", "londoneye" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa1" src="1f3a1.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  roller_coaster: {
    keywords: [ "carnival", "playground", "photo", "fun" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa2" src="1f3a2.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  carousel_horse: {
    keywords: [ "photo", "carnival" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa0" src="1f3a0.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  building_construction: {
    keywords: [ "wip", "working", "progress" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd7" src="1f3d7.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  foggy: {
    keywords: [ "photo", "mountain" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf01" src="1f301.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tokyo_tower: {
    keywords: [ "photo", "japanese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfc" src="1f5fc.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  factory: {
    keywords: [ "building", "industry", "pollution", "smoke" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfed" src="1f3ed.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fountain: {
    keywords: [ "photo", "summer", "water", "fresh" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f2" src="26f2.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rice_scene: {
    keywords: [ "photo", "japan", "asia", "tsukimi" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf91" src="1f391.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain: {
    keywords: [ "photo", "nature", "environment" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f0" src="26f0.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain_snow: {
    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd4" src="1f3d4.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mount_fuji: {
    keywords: [ "photo", "mountain", "nature", "japanese" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfb" src="1f5fb.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  volcano: {
    keywords: [ "photo", "nature", "disaster" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0b" src="1f30b.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  japan: {
    keywords: [ "nation", "country", "japanese", "asia" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfe" src="1f5fe.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  camping: {
    keywords: [ "photo", "outdoors", "tent" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd5" src="1f3d5.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tent: {
    keywords: [ "photo", "camping", "outdoors" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fa" src="26fa.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  national_park: {
    keywords: [ "photo", "environment", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfde" src="1f3de.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motorway: {
    keywords: [ "road", "cupertino", "interstate", "highway" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee3" src="1f6e3.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  railway_track: {
    keywords: [ "train", "transportation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee4" src="1f6e4.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sunrise: {
    keywords: [ "morning", "view", "vacation", "photo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf05" src="1f305.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sunrise_over_mountains: {
    keywords: [ "view", "vacation", "photo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf04" src="1f304.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  desert: {
    keywords: [ "photo", "warm", "saharah" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdc" src="1f3dc.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  beach_umbrella: {
    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd6" src="1f3d6.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  desert_island: {
    keywords: [ "photo", "tropical", "mojito" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdd" src="1f3dd.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  city_sunrise: {
    keywords: [ "photo", "good morning", "dawn" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf07" src="1f307.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  city_sunset: {
    keywords: [ "photo", "evening", "sky", "buildings" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf06" src="1f306.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  cityscape: {
    keywords: [ "photo", "night life", "urban" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd9" src="1f3d9.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  night_with_stars: {
    keywords: [ "evening", "city", "downtown" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf03" src="1f303.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bridge_at_night: {
    keywords: [ "photo", "sanfrancisco" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf09" src="1f309.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  milky_way: {
    keywords: [ "photo", "space", "stars" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0c" src="1f30c.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  stars: {
    keywords: [ "night", "photo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf20" src="1f320.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sparkler: {
    keywords: [ "stars", "night", "shine" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf87" src="1f387.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fireworks: {
    keywords: [ "photo", "festival", "carnival", "congratulations" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf86" src="1f386.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rainbow: {
    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf08" src="1f308.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  houses: {
    keywords: [ "buildings", "photo" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd8" src="1f3d8.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  european_castle: {
    keywords: [ "building", "royalty", "history" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff0" src="1f3f0.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  japanese_castle: {
    keywords: [ "photo", "building" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfef" src="1f3ef.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  stadium: {
    keywords: [ "photo", "place", "sports", "concert", "venue" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdf" src="1f3df.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  statue_of_liberty: {
    keywords: [ "american", "newyork" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfd" src="1f5fd.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  house: {
    keywords: [ "building", "home" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe0" src="1f3e0.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  house_with_garden: {
    keywords: [ "home", "plant", "nature" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe1" src="1f3e1.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  derelict_house: {
    keywords: [ "abandon", "evict", "broken", "building" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfda" src="1f3da.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  office: {
    keywords: [ "building", "bureau", "work" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe2" src="1f3e2.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  department_store: {
    keywords: [ "building", "shopping", "mall" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfec" src="1f3ec.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  post_office: {
    keywords: [ "building", "envelope", "communication" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe3" src="1f3e3.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  european_post_office: {
    keywords: [ "building", "email" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe4" src="1f3e4.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  hospital: {
    keywords: [ "building", "health", "surgery", "doctor" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe5" src="1f3e5.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bank: {
    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe6" src="1f3e6.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  hotel: {
    keywords: [ "building", "accomodation", "checkin" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe8" src="1f3e8.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  convenience_store: {
    keywords: [ "building", "shopping", "groceries" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfea" src="1f3ea.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  school: {
    keywords: [ "building", "student", "education", "learn", "teach" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfeb" src="1f3eb.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  love_hotel: {
    keywords: [ "like", "affection", "dating" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe9" src="1f3e9.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  wedding: {
    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc92" src="1f492.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  classical_building: {
    keywords: [ "art", "culture", "history" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdb" src="1f3db.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  church: {
    keywords: [ "building", "religion", "christ" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ea" src="26ea.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mosque: {
    keywords: [ "islam", "worship", "minaret" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4c" src="1f54c.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  synagogue: {
    keywords: [ "judaism", "worship", "temple", "jewish" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4d" src="1f54d.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  kaaba: {
    keywords: [ "mecca", "mosque", "islam" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4b" src="1f54b.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  shinto_shrine: {
    keywords: [ "temple", "japan", "kyoto" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26e9" src="26e9.png"/>',
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  watch: {
    keywords: [ "time", "accessories" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231a" src="231a.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  iphone: {
    keywords: [ "technology", "apple", "gadgets", "dial" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf1" src="1f4f1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  calling: {
    keywords: [ "iphone", "incoming" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf2" src="1f4f2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  computer: {
    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbb" src="1f4bb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  keyboard: {
    keywords: [ "technology", "computer", "type", "input", "text" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2328" src="2328.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  desktop_computer: {
    keywords: [ "technology", "computing", "screen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda5" src="1f5a5.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  printer: {
    keywords: [ "paper", "ink" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda8" src="1f5a8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  computer_mouse: {
    keywords: [ "click" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb1" src="1f5b1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  trackball: {
    keywords: [ "technology", "trackpad" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb2" src="1f5b2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  joystick: {
    keywords: [ "game", "play" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd79" src="1f579.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  clamp: {
    keywords: [ "tool" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddc" src="1f5dc.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  minidisc: {
    keywords: [ "technology", "record", "data", "disk", "90s" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbd" src="1f4bd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  floppy_disk: {
    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbe" src="1f4be.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  cd: {
    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbf" src="1f4bf.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  dvd: {
    keywords: [ "cd", "disk", "disc" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc0" src="1f4c0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  vhs: {
    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfc" src="1f4fc.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  camera: {
    keywords: [ "gadgets", "photography" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf7" src="1f4f7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  camera_flash: {
    keywords: [ "photography", "gadgets" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf8" src="1f4f8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  video_camera: {
    keywords: [ "film", "record" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf9" src="1f4f9.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  movie_camera: {
    keywords: [ "film", "record" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa5" src="1f3a5.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  film_projector: {
    keywords: [ "video", "tape", "record", "movie" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfd" src="1f4fd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  film_strip: {
    keywords: [ "movie" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9e" src="1f39e.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  telephone_receiver: {
    keywords: [ "technology", "communication", "dial" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcde" src="1f4de.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  phone: {
    keywords: [ "technology", "communication", "dial", "telephone" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u260e\ufe0f" src="260e.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pager: {
    keywords: [ "bbcall", "oldschool", "90s" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdf" src="1f4df.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  fax: {
    keywords: [ "communication", "technology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce0" src="1f4e0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  tv: {
    keywords: [ "technology", "program", "oldschool", "show", "television" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfa" src="1f4fa.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  radio: {
    keywords: [ "communication", "music", "podcast", "program" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfb" src="1f4fb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  studio_microphone: {
    keywords: [ "sing", "recording", "artist", "talkshow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf99" src="1f399.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  level_slider: {
    keywords: [ "scale" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9a" src="1f39a.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  control_knobs: {
    keywords: [ "dial" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9b" src="1f39b.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  compass: {
    keywords: [ "magnetic", "navigation", "orienteering" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udded" src="1f9ed.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  stopwatch: {
    keywords: [ "time", "deadline" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f1" src="23f1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  timer_clock: {
    keywords: [ "alarm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f2" src="23f2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  alarm_clock: {
    keywords: [ "time", "wake" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f0" src="23f0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mantelpiece_clock: {
    keywords: [ "time" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd70" src="1f570.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hourglass_flowing_sand: {
    keywords: [ "oldschool", "time", "countdown" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f3" src="23f3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hourglass: {
    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231b" src="231b.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  satellite: {
    keywords: [ "communication", "future", "radio", "space" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce1" src="1f4e1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  battery: {
    keywords: [ "power", "energy", "sustain" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0b" src="1f50b.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  electric_plug: {
    keywords: [ "charger", "power" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0c" src="1f50c.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bulb: {
    keywords: [ "light", "electricity", "idea" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca1" src="1f4a1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  flashlight: {
    keywords: [ "dark", "camping", "sight", "night" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd26" src="1f526.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  candle: {
    keywords: [ "fire", "wax" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd6f" src="1f56f.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  fire_extinguisher: {
    keywords: [ "quench" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddef" src="1f9ef.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  wastebasket: {
    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd1" src="1f5d1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  oil_drum: {
    keywords: [ "barrell" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee2" src="1f6e2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  money_with_wings: {
    keywords: [ "dollar", "bills", "payment", "sale" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb8" src="1f4b8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  dollar: {
    keywords: [ "money", "sales", "bill", "currency" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb5" src="1f4b5.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  yen: {
    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb4" src="1f4b4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  euro: {
    keywords: [ "money", "sales", "dollar", "currency" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb6" src="1f4b6.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pound: {
    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb7" src="1f4b7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  moneybag: {
    keywords: [ "dollar", "payment", "coins", "sale" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb0" src="1f4b0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  credit_card: {
    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb3" src="1f4b3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  gem: {
    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8e" src="1f48e.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  balance_scale: {
    keywords: [ "law", "fairness", "weight" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2696" src="2696.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  toolbox: {
    keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf0" src="1f9f0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  wrench: {
    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd27" src="1f527.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hammer: {
    keywords: [ "tools", "build", "create" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd28" src="1f528.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hammer_and_pick: {
    keywords: [ "tools", "build", "create" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2692" src="2692.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hammer_and_wrench: {
    keywords: [ "tools", "build", "create" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee0" src="1f6e0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pick: {
    keywords: [ "tools", "dig" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26cf" src="26cf.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  nut_and_bolt: {
    keywords: [ "handy", "tools", "fix" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd29" src="1f529.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  gear: {
    keywords: [ "cog" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2699" src="2699.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  brick: {
    keywords: [ "bricks" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf1" src="1f9f1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  chains: {
    keywords: [ "lock", "arrest" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d3" src="26d3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  magnet: {
    keywords: [ "attraction", "magnetic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf2" src="1f9f2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  gun: {
    keywords: [ "violence", "weapon", "pistol", "revolver" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2b" src="1f52b.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bomb: {
    keywords: [ "boom", "explode", "explosion", "terrorism" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca3" src="1f4a3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  firecracker: {
    keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde8" src="1f9e8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hocho: {
    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2a" src="1f52a.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  dagger: {
    keywords: [ "weapon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde1" src="1f5e1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  crossed_swords: {
    keywords: [ "weapon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2694" src="2694.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  shield: {
    keywords: [ "protection", "security" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee1" src="1f6e1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  smoking: {
    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeac" src="1f6ac.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  skull_and_crossbones: {
    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2620" src="2620.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  coffin: {
    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b0" src="26b0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  funeral_urn: {
    keywords: [ "dead", "die", "death", "rip", "ashes" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b1" src="26b1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  amphora: {
    keywords: [ "vase", "jar" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udffa" src="1f3fa.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  crystal_ball: {
    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2e" src="1f52e.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  prayer_beads: {
    keywords: [ "dhikr", "religious" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcff" src="1f4ff.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  nazar_amulet: {
    keywords: [ "bead", "charm" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddff" src="1f9ff.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  barber: {
    keywords: [ "hair", "salon", "style" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc88" src="1f488.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  alembic: {
    keywords: [ "distilling", "science", "experiment", "chemistry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2697" src="2697.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  telescope: {
    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2d" src="1f52d.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  microscope: {
    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2c" src="1f52c.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  hole: {
    keywords: [ "embarrassing" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd73" src="1f573.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pill: {
    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8a" src="1f48a.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  syringe: {
    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc89" src="1f489.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  dna: {
    keywords: [ "biologist", "genetics", "life" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddec" src="1f9ec.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  microbe: {
    keywords: [ "amoeba", "bacteria", "germs" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda0" src="1f9a0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  petri_dish: {
    keywords: [ "bacteria", "biology", "culture", "lab" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddeb" src="1f9eb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  test_tube: {
    keywords: [ "chemistry", "experiment", "lab", "science" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddea" src="1f9ea.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  thermometer: {
    keywords: [ "weather", "temperature", "hot", "cold" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf21" src="1f321.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  broom: {
    keywords: [ "cleaning", "sweeping", "witch" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf9" src="1f9f9.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  basket: {
    keywords: [ "laundry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfa" src="1f9fa.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  toilet_paper: {
    keywords: [ "roll" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfb" src="1f9fb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  label: {
    keywords: [ "sale", "tag" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff7" src="1f3f7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bookmark: {
    keywords: [ "favorite", "label", "save" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd16" src="1f516.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  toilet: {
    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebd" src="1f6bd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  shower: {
    keywords: [ "clean", "water", "bathroom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebf" src="1f6bf.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bathtub: {
    keywords: [ "clean", "shower", "bathroom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec1" src="1f6c1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  soap: {
    keywords: [ "bar", "bathing", "cleaning", "lather" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfc" src="1f9fc.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  sponge: {
    keywords: [ "absorbing", "cleaning", "porous" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfd" src="1f9fd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  lotion_bottle: {
    keywords: [ "moisturizer", "sunscreen" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf4" src="1f9f4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  key: {
    keywords: [ "lock", "door", "password" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd11" src="1f511.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  old_key: {
    keywords: [ "lock", "door", "password" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddd" src="1f5dd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  couch_and_lamp: {
    keywords: [ "read", "chill" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecb" src="1f6cb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  sleeping_bed: {
    keywords: [ "bed", "rest" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecc" src="1f6cc.png"/>',
    fitzpatrick_scale: true,
    category: "objects"
  },
  bed: {
    keywords: [ "sleep", "rest" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecf" src="1f6cf.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  door: {
    keywords: [ "house", "entry", "exit" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaa" src="1f6aa.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bellhop_bell: {
    keywords: [ "service" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udece" src="1f6ce.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  teddy_bear: {
    keywords: [ "plush", "stuffed" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf8" src="1f9f8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  framed_picture: {
    keywords: [ "photography" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddbc" src="1f5bc.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  world_map: {
    keywords: [ "location", "direction" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfa" src="1f5fa.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  parasol_on_ground: {
    keywords: [ "weather", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f1" src="26f1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  moyai: {
    keywords: [ "rock", "easter island", "moai" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddff" src="1f5ff.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  shopping: {
    keywords: [ "mall", "buy", "purchase" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecd" src="1f6cd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  shopping_cart: {
    keywords: [ "trolley" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded2" src="1f6d2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  balloon: {
    keywords: [ "party", "celebration", "birthday", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf88" src="1f388.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  flags: {
    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8f" src="1f38f.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  ribbon: {
    keywords: [ "decoration", "pink", "girl", "bowtie" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf80" src="1f380.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  gift: {
    keywords: [ "present", "birthday", "christmas", "xmas" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf81" src="1f381.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  confetti_ball: {
    keywords: [ "festival", "party", "birthday", "circus" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8a" src="1f38a.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  tada: {
    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf89" src="1f389.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  dolls: {
    keywords: [ "japanese", "toy", "kimono" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8e" src="1f38e.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  wind_chime: {
    keywords: [ "nature", "ding", "spring", "bell" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf90" src="1f390.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  crossed_flags: {
    keywords: [ "japanese", "nation", "country", "border" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8c" src="1f38c.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  izakaya_lantern: {
    keywords: [ "light", "paper", "halloween", "spooky" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfee" src="1f3ee.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  red_envelope: {
    keywords: [ "gift" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde7" src="1f9e7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  email: {
    keywords: [ "letter", "postal", "inbox", "communication" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2709\ufe0f" src="2709.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  envelope_with_arrow: {
    keywords: [ "email", "communication" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce9" src="1f4e9.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  incoming_envelope: {
    keywords: [ "email", "inbox" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce8" src="1f4e8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  "e-mail": {
    keywords: [ "communication", "inbox" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce7" src="1f4e7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  love_letter: {
    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8c" src="1f48c.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  postbox: {
    keywords: [ "email", "letter", "envelope" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcee" src="1f4ee.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox_closed: {
    keywords: [ "email", "communication", "inbox" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcea" src="1f4ea.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox: {
    keywords: [ "email", "inbox", "communication" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udceb" src="1f4eb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox_with_mail: {
    keywords: [ "email", "inbox", "communication" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcec" src="1f4ec.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox_with_no_mail: {
    keywords: [ "email", "inbox" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udced" src="1f4ed.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  package: {
    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce6" src="1f4e6.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  postal_horn: {
    keywords: [ "instrument", "music" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcef" src="1f4ef.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  inbox_tray: {
    keywords: [ "email", "documents" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce5" src="1f4e5.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  outbox_tray: {
    keywords: [ "inbox", "email" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce4" src="1f4e4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  scroll: {
    keywords: [ "documents", "ancient", "history", "paper" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdc" src="1f4dc.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  page_with_curl: {
    keywords: [ "documents", "office", "paper" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc3" src="1f4c3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bookmark_tabs: {
    keywords: [ "favorite", "save", "order", "tidy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd1" src="1f4d1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  receipt: {
    keywords: [ "accounting", "expenses" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfe" src="1f9fe.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  bar_chart: {
    keywords: [ "graph", "presentation", "stats" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcca" src="1f4ca.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  chart_with_upwards_trend: {
    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc8" src="1f4c8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  chart_with_downwards_trend: {
    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc9" src="1f4c9.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  page_facing_up: {
    keywords: [ "documents", "office", "paper", "information" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc4" src="1f4c4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  date: {
    keywords: [ "calendar", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc5" src="1f4c5.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  calendar: {
    keywords: [ "schedule", "date", "planning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc6" src="1f4c6.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  spiral_calendar: {
    keywords: [ "date", "schedule", "planning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd3" src="1f5d3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  card_index: {
    keywords: [ "business", "stationery" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc7" src="1f4c7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  card_file_box: {
    keywords: [ "business", "stationery" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc3" src="1f5c3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  ballot_box: {
    keywords: [ "election", "vote" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddf3" src="1f5f3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  file_cabinet: {
    keywords: [ "filing", "organizing" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc4" src="1f5c4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  clipboard: {
    keywords: [ "stationery", "documents" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccb" src="1f4cb.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  spiral_notepad: {
    keywords: [ "memo", "stationery" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd2" src="1f5d2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  file_folder: {
    keywords: [ "documents", "business", "office" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc1" src="1f4c1.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  open_file_folder: {
    keywords: [ "documents", "load" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc2" src="1f4c2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  card_index_dividers: {
    keywords: [ "organizing", "business", "stationery" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc2" src="1f5c2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  newspaper_roll: {
    keywords: [ "press", "headline" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddde" src="1f5de.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  newspaper: {
    keywords: [ "press", "headline" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf0" src="1f4f0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  notebook: {
    keywords: [ "stationery", "record", "notes", "paper", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd3" src="1f4d3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  closed_book: {
    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd5" src="1f4d5.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  green_book: {
    keywords: [ "read", "library", "knowledge", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd7" src="1f4d7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  blue_book: {
    keywords: [ "read", "library", "knowledge", "learn", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd8" src="1f4d8.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  orange_book: {
    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd9" src="1f4d9.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  notebook_with_decorative_cover: {
    keywords: [ "classroom", "notes", "record", "paper", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd4" src="1f4d4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  ledger: {
    keywords: [ "notes", "paper" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd2" src="1f4d2.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  books: {
    keywords: [ "literature", "library", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcda" src="1f4da.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  open_book: {
    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd6" src="1f4d6.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  safety_pin: {
    keywords: [ "diaper" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf7" src="1f9f7.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  link: {
    keywords: [ "rings", "url" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd17" src="1f517.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  paperclip: {
    keywords: [ "documents", "stationery" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcce" src="1f4ce.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  paperclips: {
    keywords: [ "documents", "stationery" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd87" src="1f587.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  scissors: {
    keywords: [ "stationery", "cut" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2702\ufe0f" src="2702.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  triangular_ruler: {
    keywords: [ "stationery", "math", "architect", "sketch" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd0" src="1f4d0.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  straight_ruler: {
    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccf" src="1f4cf.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  abacus: {
    keywords: [ "calculation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddee" src="1f9ee.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pushpin: {
    keywords: [ "stationery", "mark", "here" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccc" src="1f4cc.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  round_pushpin: {
    keywords: [ "stationery", "location", "map", "here" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccd" src="1f4cd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  triangular_flag_on_post: {
    keywords: [ "mark", "milestone", "place" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea9" src="1f6a9.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  white_flag: {
    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3" src="1f3f3.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  black_flag: {
    keywords: [ "pirate" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4" src="1f3f4.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  rainbow_flag: {
    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3\ufe0f\u200d\ud83c\udf08" src="1f3f3-fe0f-200d-1f308.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  closed_lock_with_key: {
    keywords: [ "security", "privacy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd10" src="1f510.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  lock: {
    keywords: [ "security", "password", "padlock" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd12" src="1f512.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  unlock: {
    keywords: [ "privacy", "security" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd13" src="1f513.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  lock_with_ink_pen: {
    keywords: [ "security", "secret" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0f" src="1f50f.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pen: {
    keywords: [ "stationery", "writing", "write" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8a" src="1f58a.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  fountain_pen: {
    keywords: [ "stationery", "writing", "write" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8b" src="1f58b.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  black_nib: {
    keywords: [ "pen", "stationery", "writing", "write" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2712\ufe0f" src="2712.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  memo: {
    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdd" src="1f4dd.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  pencil2: {
    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270f\ufe0f" src="270f.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  crayon: {
    keywords: [ "drawing", "creativity" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8d" src="1f58d.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  paintbrush: {
    keywords: [ "drawing", "creativity", "art" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8c" src="1f58c.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mag: {
    keywords: [ "search", "zoom", "find", "detective" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0d" src="1f50d.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  mag_right: {
    keywords: [ "search", "zoom", "find", "detective" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0e" src="1f50e.png"/>',
    fitzpatrick_scale: false,
    category: "objects"
  },
  heart: {
    keywords: [ "love", "like", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2764\ufe0f" src="2764.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  orange_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde1" src="1f9e1.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  yellow_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9b" src="1f49b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  green_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9a" src="1f49a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  blue_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc99" src="1f499.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  purple_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9c" src="1f49c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_heart: {
    keywords: [ "evil" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda4" src="1f5a4.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  broken_heart: {
    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc94" src="1f494.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_heart_exclamation: {
    keywords: [ "decoration", "love" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2763" src="2763.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  two_hearts: {
    keywords: [ "love", "like", "affection", "valentines", "heart" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc95" src="1f495.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  revolving_hearts: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9e" src="1f49e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heartbeat: {
    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc93" src="1f493.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heartpulse: {
    keywords: [ "like", "love", "affection", "valentines", "pink" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc97" src="1f497.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sparkling_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc96" src="1f496.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cupid: {
    keywords: [ "love", "like", "heart", "affection", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc98" src="1f498.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  gift_heart: {
    keywords: [ "love", "valentines" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9d" src="1f49d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heart_decoration: {
    keywords: [ "purple-square", "love", "like" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9f" src="1f49f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  peace_symbol: {
    keywords: [ "hippie" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262e" src="262e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  latin_cross: {
    keywords: [ "christianity" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u271d" src="271d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  star_and_crescent: {
    keywords: [ "islam" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262a" src="262a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  om: {
    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd49" src="1f549.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wheel_of_dharma: {
    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2638" src="2638.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  star_of_david: {
    keywords: [ "judaism" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2721" src="2721.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  six_pointed_star: {
    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2f" src="1f52f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  menorah: {
    keywords: [ "hanukkah", "candles", "jewish" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4e" src="1f54e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  yin_yang: {
    keywords: [ "balance" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262f" src="262f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  orthodox_cross: {
    keywords: [ "suppedaneum", "religion" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2626" src="2626.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  place_of_worship: {
    keywords: [ "religion", "church", "temple", "prayer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded0" src="1f6d0.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ophiuchus: {
    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ce" src="26ce.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  aries: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2648" src="2648.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  taurus: {
    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2649" src="2649.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  gemini: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264a" src="264a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cancer: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264b" src="264b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  leo: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264c" src="264c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  virgo: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264d" src="264d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  libra: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264e" src="264e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  scorpius: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264f" src="264f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sagittarius: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2650" src="2650.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  capricorn: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2651" src="2651.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  aquarius: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2652" src="2652.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  pisces: {
    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2653" src="2653.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  id: {
    keywords: [ "purple-square", "words" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd94" src="1f194.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  atom_symbol: {
    keywords: [ "science", "physics", "chemistry" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269b" src="269b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7a7a: {
    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude33" src="1f233.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u5272: {
    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude39" src="1f239.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  radioactive: {
    keywords: [ "nuclear", "danger" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2622" src="2622.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  biohazard: {
    keywords: [ "danger" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2623" src="2623.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mobile_phone_off: {
    keywords: [ "mute", "orange-square", "silence", "quiet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf4" src="1f4f4.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  vibration_mode: {
    keywords: [ "orange-square", "phone" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf3" src="1f4f3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6709: {
    keywords: [ "orange-square", "chinese", "have", "kanji" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude36" src="1f236.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7121: {
    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude1a" src="1f21a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7533: {
    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude38" src="1f238.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u55b6: {
    keywords: [ "japanese", "opening hours", "orange-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude3a" src="1f23a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6708: {
    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude37\ufe0f" src="1f237.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eight_pointed_black_star: {
    keywords: [ "orange-square", "shape", "polygon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2734\ufe0f" src="2734.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  vs: {
    keywords: [ "words", "orange-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd9a" src="1f19a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  accept: {
    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude51" src="1f251.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_flower: {
    keywords: [ "japanese", "spring" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcae" src="1f4ae.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ideograph_advantage: {
    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude50" src="1f250.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  secret: {
    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3299\ufe0f" src="3299.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  congratulations: {
    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3297\ufe0f" src="3297.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u5408: {
    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude34" src="1f234.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6e80: {
    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude35" src="1f235.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7981: {
    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude32" src="1f232.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  a: {
    keywords: [ "red-square", "alphabet", "letter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd70\ufe0f" src="1f170.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  b: {
    keywords: [ "red-square", "alphabet", "letter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd71\ufe0f" src="1f171.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ab: {
    keywords: [ "red-square", "alphabet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd8e" src="1f18e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cl: {
    keywords: [ "alphabet", "words", "red-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd91" src="1f191.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  o2: {
    keywords: [ "alphabet", "red-square", "letter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7e\ufe0f" src="1f17e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sos: {
    keywords: [ "help", "red-square", "words", "emergency", "911" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd98" src="1f198.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_entry: {
    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d4" src="26d4.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  name_badge: {
    keywords: [ "fire", "forbid" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdb" src="1f4db.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_entry_sign: {
    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeab" src="1f6ab.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  x: {
    keywords: [ "no", "delete", "remove", "cancel", "red" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274c" src="274c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  o: {
    keywords: [ "circle", "round" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b55" src="2b55.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  stop_sign: {
    keywords: [ "stop" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded1" src="1f6d1.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  anger: {
    keywords: [ "angry", "mad" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca2" src="1f4a2.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  hotsprings: {
    keywords: [ "bath", "warm", "relax" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2668\ufe0f" src="2668.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_pedestrians: {
    keywords: [ "rules", "crossing", "walking", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb7" src="1f6b7.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  do_not_litter: {
    keywords: [ "trash", "bin", "garbage", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaf" src="1f6af.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_bicycles: {
    keywords: [ "cyclist", "prohibited", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb3" src="1f6b3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  "non-potable_water": {
    keywords: [ "drink", "faucet", "tap", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb1" src="1f6b1.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  underage: {
    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1e" src="1f51e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_mobile_phones: {
    keywords: [ "iphone", "mute", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf5" src="1f4f5.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  exclamation: {
    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2757" src="2757.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  grey_exclamation: {
    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2755" src="2755.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  question: {
    keywords: [ "doubt", "confused" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2753" src="2753.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  grey_question: {
    keywords: [ "doubts", "gray", "huh", "confused" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2754" src="2754.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  bangbang: {
    keywords: [ "exclamation", "surprise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u203c\ufe0f" src="203c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  interrobang: {
    keywords: [ "wat", "punctuation", "surprise" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2049\ufe0f" src="2049.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  low_brightness: {
    keywords: [ "sun", "afternoon", "warm", "summer" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd05" src="1f505.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  high_brightness: {
    keywords: [ "sun", "light" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd06" src="1f506.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  trident: {
    keywords: [ "weapon", "spear" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd31" src="1f531.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  fleur_de_lis: {
    keywords: [ "decorative", "scout" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269c" src="269c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  part_alternation_mark: {
    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u303d\ufe0f" src="303d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  warning: {
    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a0\ufe0f" src="26a0.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  children_crossing: {
    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb8" src="1f6b8.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  beginner: {
    keywords: [ "badge", "shield" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd30" src="1f530.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  recycle: {
    keywords: [ "arrow", "environment", "garbage", "trash" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267b\ufe0f" src="267b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6307: {
    keywords: [ "chinese", "point", "green-square", "kanji" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude2f" src="1f22f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  chart: {
    keywords: [ "green-square", "graph", "presentation", "stats" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb9" src="1f4b9.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sparkle: {
    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2747\ufe0f" src="2747.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eight_spoked_asterisk: {
    keywords: [ "star", "sparkle", "green-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2733\ufe0f" src="2733.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  negative_squared_cross_mark: {
    keywords: [ "x", "green-square", "no", "deny" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274e" src="274e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_check_mark: {
    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2705" src="2705.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  diamond_shape_with_a_dot_inside: {
    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca0" src="1f4a0.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cyclone: {
    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf00" src="1f300.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  loop: {
    keywords: [ "tape", "cassette" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27bf" src="27bf.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  globe_with_meridians: {
    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf10" src="1f310.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  m: {
    keywords: [ "alphabet", "blue-circle", "letter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u24c2\ufe0f" src="24c2.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  atm: {
    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe7" src="1f3e7.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sa: {
    keywords: [ "japanese", "blue-square", "katakana" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude02\ufe0f" src="1f202.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  passport_control: {
    keywords: [ "custom", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec2" src="1f6c2.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  customs: {
    keywords: [ "passport", "border", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec3" src="1f6c3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  baggage_claim: {
    keywords: [ "blue-square", "airport", "transport" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec4" src="1f6c4.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  left_luggage: {
    keywords: [ "blue-square", "travel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec5" src="1f6c5.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wheelchair: {
    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267f" src="267f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_smoking: {
    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udead" src="1f6ad.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wc: {
    keywords: [ "toilet", "restroom", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebe" src="1f6be.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  parking: {
    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7f\ufe0f" src="1f17f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  potable_water: {
    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb0" src="1f6b0.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mens: {
    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb9" src="1f6b9.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  womens: {
    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeba" src="1f6ba.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  baby_symbol: {
    keywords: [ "orange-square", "child" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebc" src="1f6bc.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  restroom: {
    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebb" src="1f6bb.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  put_litter_in_its_place: {
    keywords: [ "blue-square", "sign", "human", "info" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeae" src="1f6ae.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cinema: {
    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa6" src="1f3a6.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  signal_strength: {
    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf6" src="1f4f6.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  koko: {
    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude01" src="1f201.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ng: {
    keywords: [ "blue-square", "words", "shape", "icon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd96" src="1f196.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ok: {
    keywords: [ "good", "agree", "yes", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd97" src="1f197.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  up: {
    keywords: [ "blue-square", "above", "high" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd99" src="1f199.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cool: {
    keywords: [ "words", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd92" src="1f192.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  new: {
    keywords: [ "blue-square", "words", "start" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd95" src="1f195.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  free: {
    keywords: [ "blue-square", "words" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd93" src="1f193.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  zero: {
    keywords: [ "0", "numbers", "blue-square", "null" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="0\ufe0f\u20e3" src="30-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  one: {
    keywords: [ "blue-square", "numbers", "1" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="1\ufe0f\u20e3" src="31-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  two: {
    keywords: [ "numbers", "2", "prime", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="2\ufe0f\u20e3" src="32-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  three: {
    keywords: [ "3", "numbers", "prime", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="3\ufe0f\u20e3" src="33-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  four: {
    keywords: [ "4", "numbers", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="4\ufe0f\u20e3" src="34-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  five: {
    keywords: [ "5", "numbers", "blue-square", "prime" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="5\ufe0f\u20e3" src="35-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  six: {
    keywords: [ "6", "numbers", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="6\ufe0f\u20e3" src="36-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  seven: {
    keywords: [ "7", "numbers", "blue-square", "prime" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="7\ufe0f\u20e3" src="37-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eight: {
    keywords: [ "8", "blue-square", "numbers" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="8\ufe0f\u20e3" src="38-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  nine: {
    keywords: [ "blue-square", "numbers", "9" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="9\ufe0f\u20e3" src="39-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  keycap_ten: {
    keywords: [ "numbers", "10", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1f" src="1f51f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  asterisk: {
    keywords: [ "star", "keycap" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="*\u20e3" src="2a-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eject_button: {
    keywords: [ "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23cf\ufe0f" src="23cf.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_forward: {
    keywords: [ "blue-square", "right", "direction", "play" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25b6\ufe0f" src="25b6.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  pause_button: {
    keywords: [ "pause", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f8" src="23f8.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  next_track_button: {
    keywords: [ "forward", "next", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ed" src="23ed.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  stop_button: {
    keywords: [ "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f9" src="23f9.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  record_button: {
    keywords: [ "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23fa" src="23fa.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  play_or_pause_button: {
    keywords: [ "blue-square", "play", "pause" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ef" src="23ef.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  previous_track_button: {
    keywords: [ "backward" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ee" src="23ee.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  fast_forward: {
    keywords: [ "blue-square", "play", "speed", "continue" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23e9" src="23e9.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  rewind: {
    keywords: [ "play", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ea" src="23ea.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  twisted_rightwards_arrows: {
    keywords: [ "blue-square", "shuffle", "music", "random" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd00" src="1f500.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  repeat: {
    keywords: [ "loop", "record" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd01" src="1f501.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  repeat_one: {
    keywords: [ "blue-square", "loop" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd02" src="1f502.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_backward: {
    keywords: [ "blue-square", "left", "direction" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25c0\ufe0f" src="25c0.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_up_small: {
    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3c" src="1f53c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_down_small: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3d" src="1f53d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_double_up: {
    keywords: [ "blue-square", "direction", "top" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23eb" src="23eb.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_double_down: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ec" src="23ec.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_right: {
    keywords: [ "blue-square", "next" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27a1\ufe0f" src="27a1.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_left: {
    keywords: [ "blue-square", "previous", "back" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b05\ufe0f" src="2b05.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_up: {
    keywords: [ "blue-square", "continue", "top", "direction" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b06\ufe0f" src="2b06.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_down: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b07\ufe0f" src="2b07.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_upper_right: {
    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2197\ufe0f" src="2197.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_lower_right: {
    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2198\ufe0f" src="2198.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_lower_left: {
    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2199\ufe0f" src="2199.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_upper_left: {
    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2196\ufe0f" src="2196.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_up_down: {
    keywords: [ "blue-square", "direction", "way", "vertical" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2195\ufe0f" src="2195.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  left_right_arrow: {
    keywords: [ "shape", "direction", "horizontal", "sideways" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2194\ufe0f" src="2194.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrows_counterclockwise: {
    keywords: [ "blue-square", "sync", "cycle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd04" src="1f504.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_right_hook: {
    keywords: [ "blue-square", "return", "rotate", "direction" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21aa\ufe0f" src="21aa.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  leftwards_arrow_with_hook: {
    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21a9\ufe0f" src="21a9.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_heading_up: {
    keywords: [ "blue-square", "direction", "top" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2934\ufe0f" src="2934.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_heading_down: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2935\ufe0f" src="2935.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  hash: {
    keywords: [ "symbol", "blue-square", "twitter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="#\ufe0f\u20e3" src="23-20e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  information_source: {
    keywords: [ "blue-square", "alphabet", "letter" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2139\ufe0f" src="2139.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  abc: {
    keywords: [ "blue-square", "alphabet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd24" src="1f524.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  abcd: {
    keywords: [ "blue-square", "alphabet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd21" src="1f521.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  capital_abcd: {
    keywords: [ "alphabet", "words", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd20" src="1f520.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  symbols: {
    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd23" src="1f523.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  musical_note: {
    keywords: [ "score", "tone", "sound" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb5" src="1f3b5.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  notes: {
    keywords: [ "music", "score" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb6" src="1f3b6.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wavy_dash: {
    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3030\ufe0f" src="3030.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  curly_loop: {
    keywords: [ "scribble", "draw", "shape", "squiggle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27b0" src="27b0.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_check_mark: {
    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2714\ufe0f" src="2714.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrows_clockwise: {
    keywords: [ "sync", "cycle", "round", "repeat" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd03" src="1f503.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_plus_sign: {
    keywords: [ "math", "calculation", "addition", "more", "increase" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2795" src="2795.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_minus_sign: {
    keywords: [ "math", "calculation", "subtract", "less" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2796" src="2796.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_division_sign: {
    keywords: [ "divide", "math", "calculation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2797" src="2797.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_multiplication_x: {
    keywords: [ "math", "calculation" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2716\ufe0f" src="2716.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  infinity: {
    keywords: [ "forever" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267e" src="267e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_dollar_sign: {
    keywords: [ "money", "sales", "payment", "currency", "buck" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb2" src="1f4b2.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  currency_exchange: {
    keywords: [ "money", "sales", "dollar", "travel" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb1" src="1f4b1.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  copyright: {
    keywords: [ "ip", "license", "circle", "law", "legal" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xa9\ufe0f" src="a9.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  registered: {
    keywords: [ "alphabet", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xae\ufe0f" src="ae.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  tm: {
    keywords: [ "trademark", "brand", "law", "legal" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2122\ufe0f" src="2122.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  end: {
    keywords: [ "words", "arrow" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1a" src="1f51a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  back: {
    keywords: [ "arrow", "words", "return" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd19" src="1f519.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  on: {
    keywords: [ "arrow", "words" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1b" src="1f51b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  top: {
    keywords: [ "words", "blue-square" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1d" src="1f51d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  soon: {
    keywords: [ "arrow", "words" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1c" src="1f51c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ballot_box_with_check: {
    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2611\ufe0f" src="2611.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  radio_button: {
    keywords: [ "input", "old", "music", "circle" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd18" src="1f518.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_circle: {
    keywords: [ "shape", "round" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26aa" src="26aa.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_circle: {
    keywords: [ "shape", "button", "round" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ab" src="26ab.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  red_circle: {
    keywords: [ "shape", "error", "danger" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd34" src="1f534.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  large_blue_circle: {
    keywords: [ "shape", "icon", "button" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd35" src="1f535.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_orange_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd38" src="1f538.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_blue_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd39" src="1f539.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  large_orange_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd36" src="1f536.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  large_blue_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd37" src="1f537.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_red_triangle: {
    keywords: [ "shape", "direction", "up", "top" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3a" src="1f53a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_small_square: {
    keywords: [ "shape", "icon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25aa\ufe0f" src="25aa.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_small_square: {
    keywords: [ "shape", "icon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25ab\ufe0f" src="25ab.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_large_square: {
    keywords: [ "shape", "icon", "button" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1b" src="2b1b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_large_square: {
    keywords: [ "shape", "icon", "stone", "button" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1c" src="2b1c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_red_triangle_down: {
    keywords: [ "shape", "direction", "bottom" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3b" src="1f53b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_medium_square: {
    keywords: [ "shape", "button", "icon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fc\ufe0f" src="25fc.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_medium_square: {
    keywords: [ "shape", "stone", "icon" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fb\ufe0f" src="25fb.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_medium_small_square: {
    keywords: [ "icon", "shape", "button" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fe" src="25fe.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_medium_small_square: {
    keywords: [ "shape", "stone", "icon", "button" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fd" src="25fd.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_square_button: {
    keywords: [ "shape", "input", "frame" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd32" src="1f532.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_square_button: {
    keywords: [ "shape", "input" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd33" src="1f533.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  speaker: {
    keywords: [ "sound", "volume", "silence", "broadcast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd08" src="1f508.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sound: {
    keywords: [ "volume", "speaker", "broadcast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd09" src="1f509.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  loud_sound: {
    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0a" src="1f50a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mute: {
    keywords: [ "sound", "volume", "silence", "quiet" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd07" src="1f507.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mega: {
    keywords: [ "sound", "speaker", "volume" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce3" src="1f4e3.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  loudspeaker: {
    keywords: [ "volume", "sound" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce2" src="1f4e2.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  bell: {
    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd14" src="1f514.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_bell: {
    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd15" src="1f515.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_joker: {
    keywords: [ "poker", "cards", "game", "play", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udccf" src="1f0cf.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mahjong: {
    keywords: [ "game", "play", "chinese", "kanji" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udc04" src="1f004.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  spades: {
    keywords: [ "poker", "cards", "suits", "magic" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2660\ufe0f" src="2660.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clubs: {
    keywords: [ "poker", "cards", "magic", "suits" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2663\ufe0f" src="2663.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  hearts: {
    keywords: [ "poker", "cards", "magic", "suits" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2665\ufe0f" src="2665.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  diamonds: {
    keywords: [ "poker", "cards", "magic", "suits" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2666\ufe0f" src="2666.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  flower_playing_cards: {
    keywords: [ "game", "sunset", "red" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb4" src="1f3b4.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  thought_balloon: {
    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcad" src="1f4ad.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  right_anger_bubble: {
    keywords: [ "caption", "speech", "thinking", "mad" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddef" src="1f5ef.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  speech_balloon: {
    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcac" src="1f4ac.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  left_speech_bubble: {
    keywords: [ "words", "message", "talk", "chatting" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde8" src="1f5e8.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd50" src="1f550.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock2: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd51" src="1f551.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock3: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd52" src="1f552.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock4: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd53" src="1f553.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock5: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd54" src="1f554.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock6: {
    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd55" src="1f555.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock7: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd56" src="1f556.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock8: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd57" src="1f557.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock9: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd58" src="1f558.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock10: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd59" src="1f559.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock11: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5a" src="1f55a.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock12: {
    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5b" src="1f55b.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock130: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5c" src="1f55c.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock230: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5d" src="1f55d.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock330: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5e" src="1f55e.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock430: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5f" src="1f55f.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock530: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd60" src="1f560.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock630: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd61" src="1f561.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock730: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd62" src="1f562.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock830: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd63" src="1f563.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock930: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd64" src="1f564.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1030: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd65" src="1f565.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1130: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd66" src="1f566.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1230: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd67" src="1f567.png"/>',
    fitzpatrick_scale: false,
    category: "symbols"
  },
  afghanistan: {
    keywords: [ "af", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddeb" src="1f1e6-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  aland_islands: {
    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfd" src="1f1e6-1f1fd.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  albania: {
    keywords: [ "al", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf1" src="1f1e6-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  algeria: {
    keywords: [ "dz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddff" src="1f1e9-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  american_samoa: {
    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf8" src="1f1e6-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  andorra: {
    keywords: [ "ad", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\udde9" src="1f1e6-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  angola: {
    keywords: [ "ao", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf4" src="1f1e6-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  anguilla: {
    keywords: [ "ai", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddee" src="1f1e6-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  antarctica: {
    keywords: [ "aq", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf6" src="1f1e6-1f1f6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  antigua_barbuda: {
    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddec" src="1f1e6-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  argentina: {
    keywords: [ "ar", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf7" src="1f1e6-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  armenia: {
    keywords: [ "am", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf2" src="1f1e6-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  aruba: {
    keywords: [ "aw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfc" src="1f1e6-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  australia: {
    keywords: [ "au", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfa" src="1f1e6-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  austria: {
    keywords: [ "at", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf9" src="1f1e6-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  azerbaijan: {
    keywords: [ "az", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddff" src="1f1e6-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bahamas: {
    keywords: [ "bs", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf8" src="1f1e7-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bahrain: {
    keywords: [ "bh", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udded" src="1f1e7-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bangladesh: {
    keywords: [ "bd", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde9" src="1f1e7-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  barbados: {
    keywords: [ "bb", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde7" src="1f1e7-1f1e7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  belarus: {
    keywords: [ "by", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfe" src="1f1e7-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  belgium: {
    keywords: [ "be", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddea" src="1f1e7-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  belize: {
    keywords: [ "bz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddff" src="1f1e7-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  benin: {
    keywords: [ "bj", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddef" src="1f1e7-1f1ef.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bermuda: {
    keywords: [ "bm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf2" src="1f1e7-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bhutan: {
    keywords: [ "bt", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf9" src="1f1e7-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bolivia: {
    keywords: [ "bo", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf4" src="1f1e7-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  caribbean_netherlands: {
    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf6" src="1f1e7-1f1f6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bosnia_herzegovina: {
    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde6" src="1f1e7-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  botswana: {
    keywords: [ "bw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfc" src="1f1e7-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  brazil: {
    keywords: [ "br", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf7" src="1f1e7-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  british_indian_ocean_territory: {
    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf4" src="1f1ee-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  british_virgin_islands: {
    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddec" src="1f1fb-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  brunei: {
    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf3" src="1f1e7-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  bulgaria: {
    keywords: [ "bg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddec" src="1f1e7-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  burkina_faso: {
    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddeb" src="1f1e7-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  burundi: {
    keywords: [ "bi", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddee" src="1f1e7-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cape_verde: {
    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfb" src="1f1e8-1f1fb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cambodia: {
    keywords: [ "kh", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\udded" src="1f1f0-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cameroon: {
    keywords: [ "cm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf2" src="1f1e8-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  canada: {
    keywords: [ "ca", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde6" src="1f1e8-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  canary_islands: {
    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde8" src="1f1ee-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cayman_islands: {
    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfe" src="1f1f0-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  central_african_republic: {
    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddeb" src="1f1e8-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  chad: {
    keywords: [ "td", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde9" src="1f1f9-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  chile: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf1" src="1f1e8-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cn: {
    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf3" src="1f1e8-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  christmas_island: {
    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfd" src="1f1e8-1f1fd.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cocos_islands: {
    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde8" src="1f1e8-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  colombia: {
    keywords: [ "co", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf4" src="1f1e8-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  comoros: {
    keywords: [ "km", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf2" src="1f1f0-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  congo_brazzaville: {
    keywords: [ "congo", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddec" src="1f1e8-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  congo_kinshasa: {
    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde9" src="1f1e8-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cook_islands: {
    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf0" src="1f1e8-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  costa_rica: {
    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf7" src="1f1e8-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  croatia: {
    keywords: [ "hr", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf7" src="1f1ed-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cuba: {
    keywords: [ "cu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfa" src="1f1e8-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  curacao: {
    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfc" src="1f1e8-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cyprus: {
    keywords: [ "cy", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfe" src="1f1e8-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  czech_republic: {
    keywords: [ "cz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddff" src="1f1e8-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  denmark: {
    keywords: [ "dk", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf0" src="1f1e9-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  djibouti: {
    keywords: [ "dj", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddef" src="1f1e9-1f1ef.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  dominica: {
    keywords: [ "dm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf2" src="1f1e9-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  dominican_republic: {
    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf4" src="1f1e9-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  ecuador: {
    keywords: [ "ec", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udde8" src="1f1ea-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  egypt: {
    keywords: [ "eg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddec" src="1f1ea-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  el_salvador: {
    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfb" src="1f1f8-1f1fb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  equatorial_guinea: {
    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf6" src="1f1ec-1f1f6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  eritrea: {
    keywords: [ "er", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf7" src="1f1ea-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  estonia: {
    keywords: [ "ee", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddea" src="1f1ea-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  ethiopia: {
    keywords: [ "et", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf9" src="1f1ea-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  eu: {
    keywords: [ "european", "union", "flag", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddfa" src="1f1ea-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  falkland_islands: {
    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf0" src="1f1eb-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  faroe_islands: {
    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf4" src="1f1eb-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  fiji: {
    keywords: [ "fj", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddef" src="1f1eb-1f1ef.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  finland: {
    keywords: [ "fi", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddee" src="1f1eb-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  fr: {
    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf7" src="1f1eb-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  french_guiana: {
    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddeb" src="1f1ec-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  french_polynesia: {
    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddeb" src="1f1f5-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  french_southern_territories: {
    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddeb" src="1f1f9-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  gabon: {
    keywords: [ "ga", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde6" src="1f1ec-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  gambia: {
    keywords: [ "gm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf2" src="1f1ec-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  georgia: {
    keywords: [ "ge", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddea" src="1f1ec-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  de: {
    keywords: [ "german", "nation", "flag", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddea" src="1f1e9-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  ghana: {
    keywords: [ "gh", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udded" src="1f1ec-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  gibraltar: {
    keywords: [ "gi", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddee" src="1f1ec-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  greece: {
    keywords: [ "gr", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf7" src="1f1ec-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  greenland: {
    keywords: [ "gl", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf1" src="1f1ec-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  grenada: {
    keywords: [ "gd", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde9" src="1f1ec-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guadeloupe: {
    keywords: [ "gp", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf5" src="1f1ec-1f1f5.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guam: {
    keywords: [ "gu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfa" src="1f1ec-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guatemala: {
    keywords: [ "gt", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf9" src="1f1ec-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guernsey: {
    keywords: [ "gg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddec" src="1f1ec-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guinea: {
    keywords: [ "gn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf3" src="1f1ec-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guinea_bissau: {
    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfc" src="1f1ec-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  guyana: {
    keywords: [ "gy", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfe" src="1f1ec-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  haiti: {
    keywords: [ "ht", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf9" src="1f1ed-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  honduras: {
    keywords: [ "hn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf3" src="1f1ed-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  hong_kong: {
    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf0" src="1f1ed-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  hungary: {
    keywords: [ "hu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddfa" src="1f1ed-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  iceland: {
    keywords: [ "is", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf8" src="1f1ee-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  india: {
    keywords: [ "in", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf3" src="1f1ee-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  indonesia: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde9" src="1f1ee-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  iran: {
    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf7" src="1f1ee-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  iraq: {
    keywords: [ "iq", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf6" src="1f1ee-1f1f6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  ireland: {
    keywords: [ "ie", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddea" src="1f1ee-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  isle_of_man: {
    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf2" src="1f1ee-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  israel: {
    keywords: [ "il", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf1" src="1f1ee-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  it: {
    keywords: [ "italy", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf9" src="1f1ee-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  cote_divoire: {
    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddee" src="1f1e8-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  jamaica: {
    keywords: [ "jm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf2" src="1f1ef-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  jp: {
    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf5" src="1f1ef-1f1f5.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  jersey: {
    keywords: [ "je", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddea" src="1f1ef-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  jordan: {
    keywords: [ "jo", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf4" src="1f1ef-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kazakhstan: {
    keywords: [ "kz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddff" src="1f1f0-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kenya: {
    keywords: [ "ke", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddea" src="1f1f0-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kiribati: {
    keywords: [ "ki", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddee" src="1f1f0-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kosovo: {
    keywords: [ "xk", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfd\ud83c\uddf0" src="1f1fd-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kuwait: {
    keywords: [ "kw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfc" src="1f1f0-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kyrgyzstan: {
    keywords: [ "kg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddec" src="1f1f0-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  laos: {
    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde6" src="1f1f1-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  latvia: {
    keywords: [ "lv", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfb" src="1f1f1-1f1fb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  lebanon: {
    keywords: [ "lb", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde7" src="1f1f1-1f1e7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  lesotho: {
    keywords: [ "ls", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf8" src="1f1f1-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  liberia: {
    keywords: [ "lr", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf7" src="1f1f1-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  libya: {
    keywords: [ "ly", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfe" src="1f1f1-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  liechtenstein: {
    keywords: [ "li", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddee" src="1f1f1-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  lithuania: {
    keywords: [ "lt", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf9" src="1f1f1-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  luxembourg: {
    keywords: [ "lu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfa" src="1f1f1-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  macau: {
    keywords: [ "macao", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf4" src="1f1f2-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  macedonia: {
    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf0" src="1f1f2-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  madagascar: {
    keywords: [ "mg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddec" src="1f1f2-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  malawi: {
    keywords: [ "mw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfc" src="1f1f2-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  malaysia: {
    keywords: [ "my", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfe" src="1f1f2-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  maldives: {
    keywords: [ "mv", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfb" src="1f1f2-1f1fb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mali: {
    keywords: [ "ml", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf1" src="1f1f2-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  malta: {
    keywords: [ "mt", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf9" src="1f1f2-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  marshall_islands: {
    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udded" src="1f1f2-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  martinique: {
    keywords: [ "mq", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf6" src="1f1f2-1f1f6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mauritania: {
    keywords: [ "mr", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf7" src="1f1f2-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mauritius: {
    keywords: [ "mu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfa" src="1f1f2-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mayotte: {
    keywords: [ "yt", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddf9" src="1f1fe-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mexico: {
    keywords: [ "mx", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfd" src="1f1f2-1f1fd.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  micronesia: {
    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf2" src="1f1eb-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  moldova: {
    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde9" src="1f1f2-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  monaco: {
    keywords: [ "mc", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde8" src="1f1f2-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mongolia: {
    keywords: [ "mn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf3" src="1f1f2-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  montenegro: {
    keywords: [ "me", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddea" src="1f1f2-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  montserrat: {
    keywords: [ "ms", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf8" src="1f1f2-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  morocco: {
    keywords: [ "ma", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde6" src="1f1f2-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  mozambique: {
    keywords: [ "mz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddff" src="1f1f2-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  myanmar: {
    keywords: [ "mm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf2" src="1f1f2-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  namibia: {
    keywords: [ "na", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde6" src="1f1f3-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  nauru: {
    keywords: [ "nr", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf7" src="1f1f3-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  nepal: {
    keywords: [ "np", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf5" src="1f1f3-1f1f5.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  netherlands: {
    keywords: [ "nl", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf1" src="1f1f3-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  new_caledonia: {
    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde8" src="1f1f3-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  new_zealand: {
    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddff" src="1f1f3-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  nicaragua: {
    keywords: [ "ni", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddee" src="1f1f3-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  niger: {
    keywords: [ "ne", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddea" src="1f1f3-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  nigeria: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddec" src="1f1f3-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  niue: {
    keywords: [ "nu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddfa" src="1f1f3-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  norfolk_island: {
    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddeb" src="1f1f3-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  northern_mariana_islands: {
    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf5" src="1f1f2-1f1f5.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  north_korea: {
    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf5" src="1f1f0-1f1f5.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  norway: {
    keywords: [ "no", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf4" src="1f1f3-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  oman: {
    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf4\ud83c\uddf2" src="1f1f4-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  pakistan: {
    keywords: [ "pk", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf0" src="1f1f5-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  palau: {
    keywords: [ "pw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfc" src="1f1f5-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  palestinian_territories: {
    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf8" src="1f1f5-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  panama: {
    keywords: [ "pa", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udde6" src="1f1f5-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  papua_new_guinea: {
    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddec" src="1f1f5-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  paraguay: {
    keywords: [ "py", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfe" src="1f1f5-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  peru: {
    keywords: [ "pe", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddea" src="1f1f5-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  philippines: {
    keywords: [ "ph", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udded" src="1f1f5-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  pitcairn_islands: {
    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf3" src="1f1f5-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  poland: {
    keywords: [ "pl", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf1" src="1f1f5-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  portugal: {
    keywords: [ "pt", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf9" src="1f1f5-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  puerto_rico: {
    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf7" src="1f1f5-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  qatar: {
    keywords: [ "qa", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf6\ud83c\udde6" src="1f1f6-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  reunion: {
    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddea" src="1f1f7-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  romania: {
    keywords: [ "ro", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf4" src="1f1f7-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  ru: {
    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfa" src="1f1f7-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  rwanda: {
    keywords: [ "rw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfc" src="1f1f7-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_barthelemy: {
    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf1" src="1f1e7-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_helena: {
    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udded" src="1f1f8-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_kitts_nevis: {
    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf3" src="1f1f0-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_lucia: {
    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde8" src="1f1f1-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_pierre_miquelon: {
    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf2" src="1f1f5-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_vincent_grenadines: {
    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde8" src="1f1fb-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  samoa: {
    keywords: [ "ws", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddf8" src="1f1fc-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  san_marino: {
    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf2" src="1f1f8-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  sao_tome_principe: {
    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf9" src="1f1f8-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  saudi_arabia: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde6" src="1f1f8-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  senegal: {
    keywords: [ "sn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf3" src="1f1f8-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  serbia: {
    keywords: [ "rs", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf8" src="1f1f7-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  seychelles: {
    keywords: [ "sc", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde8" src="1f1f8-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  sierra_leone: {
    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf1" src="1f1f8-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  singapore: {
    keywords: [ "sg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddec" src="1f1f8-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  sint_maarten: {
    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfd" src="1f1f8-1f1fd.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  slovakia: {
    keywords: [ "sk", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf0" src="1f1f8-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  slovenia: {
    keywords: [ "si", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddee" src="1f1f8-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  solomon_islands: {
    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde7" src="1f1f8-1f1e7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  somalia: {
    keywords: [ "so", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf4" src="1f1f8-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  south_africa: {
    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\udde6" src="1f1ff-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  south_georgia_south_sandwich_islands: {
    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf8" src="1f1ec-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  kr: {
    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf7" src="1f1f0-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  south_sudan: {
    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf8" src="1f1f8-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  es: {
    keywords: [ "spain", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf8" src="1f1ea-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  sri_lanka: {
    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf0" src="1f1f1-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  sudan: {
    keywords: [ "sd", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde9" src="1f1f8-1f1e9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  suriname: {
    keywords: [ "sr", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf7" src="1f1f8-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  swaziland: {
    keywords: [ "sz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddff" src="1f1f8-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  sweden: {
    keywords: [ "se", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddea" src="1f1f8-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  switzerland: {
    keywords: [ "ch", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udded" src="1f1e8-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  syria: {
    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfe" src="1f1f8-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  taiwan: {
    keywords: [ "tw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfc" src="1f1f9-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tajikistan: {
    keywords: [ "tj", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddef" src="1f1f9-1f1ef.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tanzania: {
    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddff" src="1f1f9-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  thailand: {
    keywords: [ "th", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udded" src="1f1f9-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  timor_leste: {
    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf1" src="1f1f9-1f1f1.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  togo: {
    keywords: [ "tg", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddec" src="1f1f9-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tokelau: {
    keywords: [ "tk", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf0" src="1f1f9-1f1f0.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tonga: {
    keywords: [ "to", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf4" src="1f1f9-1f1f4.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  trinidad_tobago: {
    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf9" src="1f1f9-1f1f9.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tunisia: {
    keywords: [ "tn", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf3" src="1f1f9-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tr: {
    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf7" src="1f1f9-1f1f7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  turkmenistan: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf2" src="1f1f9-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  turks_caicos_islands: {
    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde8" src="1f1f9-1f1e8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  tuvalu: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfb" src="1f1f9-1f1fb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  uganda: {
    keywords: [ "ug", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddec" src="1f1fa-1f1ec.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  ukraine: {
    keywords: [ "ua", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\udde6" src="1f1fa-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  united_arab_emirates: {
    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddea" src="1f1e6-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  uk: {
    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde7" src="1f1ec-1f1e7.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  england: {
    keywords: [ "flag", "english" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f" src="1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  scotland: {
    keywords: [ "flag", "scottish" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f" src="1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  wales: {
    keywords: [ "flag", "welsh" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f" src="1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  us: {
    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf8" src="1f1fa-1f1f8.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  us_virgin_islands: {
    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddee" src="1f1fb-1f1ee.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  uruguay: {
    keywords: [ "uy", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddfe" src="1f1fa-1f1fe.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  uzbekistan: {
    keywords: [ "uz", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddff" src="1f1fa-1f1ff.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  vanuatu: {
    keywords: [ "vu", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddfa" src="1f1fb-1f1fa.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  vatican_city: {
    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde6" src="1f1fb-1f1e6.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  venezuela: {
    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddea" src="1f1fb-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  vietnam: {
    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddf3" src="1f1fb-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  wallis_futuna: {
    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddeb" src="1f1fc-1f1eb.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  western_sahara: {
    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udded" src="1f1ea-1f1ed.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  yemen: {
    keywords: [ "ye", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddea" src="1f1fe-1f1ea.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  zambia: {
    keywords: [ "zm", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddf2" src="1f1ff-1f1f2.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  zimbabwe: {
    keywords: [ "zw", "flag", "nation", "country", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddfc" src="1f1ff-1f1fc.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  united_nations: {
    keywords: [ "un", "flag", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf3" src="1f1fa-1f1f3.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  },
  pirate_flag: {
    keywords: [ "skull", "crossbones", "flag", "banner" ],
    char: '<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\u200d\u2620\ufe0f" src="1f3f4-200d-2620-fe0f.png"/>',
    fitzpatrick_scale: false,
    category: "flags"
  }
});js/tinymce/plugins/emoticons/js/emojiimages.min.js000064400001466714151727150240016365 0ustar00// Source: npm package: emojilib
// Images provided by twemoji: https://github.com/twitter/twemoji
window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaf" src="1f4af.png"/>',fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd22" src="1f522.png"/>',fitzpatrick_scale:!1,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude00" src="1f600.png"/>',fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2c" src="1f62c.png"/>',fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude01" src="1f601.png"/>',fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude02" src="1f602.png"/>',fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd23" src="1f923.png"/>',fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd73" src="1f973.png"/>',fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude03" src="1f603.png"/>',fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude04" src="1f604.png"/>',fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude05" src="1f605.png"/>',fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude06" src="1f606.png"/>',fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude07" src="1f607.png"/>',fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude09" src="1f609.png"/>',fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0a" src="1f60a.png"/>',fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude42" src="1f642.png"/>',fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude43" src="1f643.png"/>',fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u263a\ufe0f" src="263a.png"/>',fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0b" src="1f60b.png"/>',fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0c" src="1f60c.png"/>',fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0d" src="1f60d.png"/>',fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd70" src="1f970.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude18" src="1f618.png"/>',fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude17" src="1f617.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude19" src="1f619.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1a" src="1f61a.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1c" src="1f61c.png"/>',fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2a" src="1f92a.png"/>',fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd28" src="1f928.png"/>',fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd0" src="1f9d0.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1d" src="1f61d.png"/>',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1b" src="1f61b.png"/>',fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd11" src="1f911.png"/>',fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd13" src="1f913.png"/>',fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0e" src="1f60e.png"/>',fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd29" src="1f929.png"/>',fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd21" src="1f921.png"/>',fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd20" src="1f920.png"/>',fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd17" src="1f917.png"/>',fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude0f" src="1f60f.png"/>',fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude36" src="1f636.png"/>',fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude10" src="1f610.png"/>',fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude11" src="1f611.png"/>',fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude12" src="1f612.png"/>',fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude44" src="1f644.png"/>',fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd14" src="1f914.png"/>',fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd25" src="1f925.png"/>',fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2d" src="1f92d.png"/>',fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2b" src="1f92b.png"/>',fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2c" src="1f92c.png"/>',fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2f" src="1f92f.png"/>',fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude33" src="1f633.png"/>',fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1e" src="1f61e.png"/>',fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude1f" src="1f61f.png"/>',fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude20" src="1f620.png"/>',fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude21" src="1f621.png"/>',fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude14" src="1f614.png"/>',fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude15" src="1f615.png"/>',fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude41" src="1f641.png"/>',fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2639" src="2639.png"/>',fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude23" src="1f623.png"/>',fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude16" src="1f616.png"/>',fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2b" src="1f62b.png"/>',fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude29" src="1f629.png"/>',fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7a" src="1f97a.png"/>',fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude24" src="1f624.png"/>',fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2e" src="1f62e.png"/>',fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude31" src="1f631.png"/>',fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude28" src="1f628.png"/>',fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude30" src="1f630.png"/>',fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2f" src="1f62f.png"/>',fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude26" src="1f626.png"/>',fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude27" src="1f627.png"/>',fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude22" src="1f622.png"/>',fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude25" src="1f625.png"/>',fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd24" src="1f924.png"/>',fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2a" src="1f62a.png"/>',fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude13" src="1f613.png"/>',fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd75" src="1f975.png"/>',fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd76" src="1f976.png"/>',fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude2d" src="1f62d.png"/>',fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude35" src="1f635.png"/>',fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude32" src="1f632.png"/>',fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd10" src="1f910.png"/>',fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd22" src="1f922.png"/>',fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd27" src="1f927.png"/>',fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd2e" src="1f92e.png"/>',fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude37" src="1f637.png"/>',fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd12" src="1f912.png"/>',fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd15" src="1f915.png"/>',fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd74" src="1f974.png"/>',fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude34" src="1f634.png"/>',fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca4" src="1f4a4.png"/>',fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca9" src="1f4a9.png"/>',fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude08" src="1f608.png"/>',fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7f" src="1f47f.png"/>',fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc79" src="1f479.png"/>',fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7a" src="1f47a.png"/>',fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc80" src="1f480.png"/>',fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7b" src="1f47b.png"/>',fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7d" src="1f47d.png"/>',fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd16" src="1f916.png"/>',fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3a" src="1f63a.png"/>',fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude38" src="1f638.png"/>',fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude39" src="1f639.png"/>',fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3b" src="1f63b.png"/>',fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3c" src="1f63c.png"/>',fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3d" src="1f63d.png"/>',fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude40" src="1f640.png"/>',fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3f" src="1f63f.png"/>',fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude3e" src="1f63e.png"/>',fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd32" src="1f932.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4c" src="1f64c.png"/>',fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4f" src="1f44f.png"/>',fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4b" src="1f44b.png"/>',fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd19" src="1f919.png"/>',fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4d" src="1f44d.png"/>',fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4e" src="1f44e.png"/>',fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4a" src="1f44a.png"/>',fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270a" src="270a.png"/>',fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1b" src="1f91b.png"/>',fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1c" src="1f91c.png"/>',fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270c" src="270c.png"/>',fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc4c" src="1f44c.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270b" src="270b.png"/>',fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1a" src="1f91a.png"/>',fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc50" src="1f450.png"/>',fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcaa" src="1f4aa.png"/>',fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4f" src="1f64f.png"/>',fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb6" src="1f9b6.png"/>',fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb5" src="1f9b5.png"/>',fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1d" src="1f91d.png"/>',fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u261d" src="261d.png"/>',fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc46" src="1f446.png"/>',fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc47" src="1f447.png"/>',fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc48" src="1f448.png"/>',fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc49" src="1f449.png"/>',fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd95" src="1f595.png"/>',fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd90" src="1f590.png"/>',fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1f" src="1f91f.png"/>',fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd18" src="1f918.png"/>',fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd1e" src="1f91e.png"/>',fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd96" src="1f596.png"/>',fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270d" src="270d.png"/>',fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd33" src="1f933.png"/>',fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc85" src="1f485.png"/>',fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc44" src="1f444.png"/>',fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb7" src="1f9b7.png"/>',fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc45" src="1f445.png"/>',fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc42" src="1f442.png"/>',fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc43" src="1f443.png"/>',fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc41" src="1f441.png"/>',fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc40" src="1f440.png"/>',fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde0" src="1f9e0.png"/>',fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc64" src="1f464.png"/>',fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc65" src="1f465.png"/>',fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde3" src="1f5e3.png"/>',fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc76" src="1f476.png"/>',fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd2" src="1f9d2.png"/>',fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc66" src="1f466.png"/>',fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc67" src="1f467.png"/>',fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd1" src="1f9d1.png"/>',fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68" src="1f468.png"/>',fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69" src="1f469.png"/>',fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71\u200d\u2640\ufe0f" src="1f471-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc71" src="1f471.png"/>',fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd4" src="1f9d4.png"/>',fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd3" src="1f9d3.png"/>',fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc74" src="1f474.png"/>',fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc75" src="1f475.png"/>',fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc72" src="1f472.png"/>',fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd5" src="1f9d5.png"/>',fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73\u200d\u2640\ufe0f" src="1f473-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc73" src="1f473.png"/>',fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e\u200d\u2640\ufe0f" src="1f46e-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6e" src="1f46e.png"/>',fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77\u200d\u2640\ufe0f" src="1f477-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc77" src="1f477.png"/>',fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82\u200d\u2640\ufe0f" src="1f482-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc82" src="1f482.png"/>',fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75\ufe0f\u200d\u2640\ufe0f" src="1f575-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd75" src="1f575.png"/>',fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2695\ufe0f" src="1f469-200d-2695-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2695\ufe0f" src="1f468-200d-2695-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf3e" src="1f469-200d-1f33e.png"/>',fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf3e" src="1f468-200d-1f33e.png"/>',fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf73" src="1f469-200d-1f373.png"/>',fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf73" src="1f468-200d-1f373.png"/>',fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udf93" src="1f469-200d-1f393.png"/>',fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udf93" src="1f468-200d-1f393.png"/>',fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa4" src="1f469-200d-1f3a4.png"/>',fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa4" src="1f468-200d-1f3a4.png"/>',fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfeb" src="1f469-200d-1f3eb.png"/>',fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfeb" src="1f468-200d-1f3eb.png"/>',fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfed" src="1f469-200d-1f3ed.png"/>',fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfed" src="1f468-200d-1f3ed.png"/>',fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbb" src="1f469-200d-1f4bb.png"/>',fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbb" src="1f468-200d-1f4bb.png"/>',fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udcbc" src="1f469-200d-1f4bc.png"/>',fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udcbc" src="1f468-200d-1f4bc.png"/>',fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd27" src="1f469-200d-1f527.png"/>',fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd27" src="1f468-200d-1f527.png"/>',fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udd2c" src="1f469-200d-1f52c.png"/>',fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udd2c" src="1f468-200d-1f52c.png"/>',fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83c\udfa8" src="1f469-200d-1f3a8.png"/>',fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83c\udfa8" src="1f468-200d-1f3a8.png"/>',fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude92" src="1f469-200d-1f692.png"/>',fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude92" src="1f468-200d-1f692.png"/>',fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2708\ufe0f" src="1f469-200d-2708-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2708\ufe0f" src="1f468-200d-2708-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\ude80" src="1f469-200d-1f680.png"/>',fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\ude80" src="1f468-200d-1f680.png"/>',fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2696\ufe0f" src="1f469-200d-2696-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2696\ufe0f" src="1f468-200d-2696-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2640\ufe0f" src="1f9b8-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb8\u200d\u2642\ufe0f" src="1f9b8-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2640\ufe0f" src="1f9b9-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb9\u200d\u2642\ufe0f" src="1f9b9-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd36" src="1f936.png"/>',fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf85" src="1f385.png"/>',fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2640\ufe0f" src="1f9d9-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd9\u200d\u2642\ufe0f" src="1f9d9-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2640\ufe0f" src="1f9dd-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddd\u200d\u2642\ufe0f" src="1f9dd-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2640\ufe0f" src="1f9db-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddb\u200d\u2642\ufe0f" src="1f9db-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2640\ufe0f" src="1f9df-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddf\u200d\u2642\ufe0f" src="1f9df-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2640\ufe0f" src="1f9de-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddde\u200d\u2642\ufe0f" src="1f9de-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2640\ufe0f" src="1f9dc-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udddc\u200d\u2642\ufe0f" src="1f9dc-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2640\ufe0f" src="1f9da-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddda\u200d\u2642\ufe0f" src="1f9da-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7c" src="1f47c.png"/>',fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd30" src="1f930.png"/>',fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd31" src="1f931.png"/>',fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc78" src="1f478.png"/>',fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd34" src="1f934.png"/>',fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc70" src="1f470.png"/>',fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd35" src="1f935.png"/>',fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3\u200d\u2640\ufe0f" src="1f3c3-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc3" src="1f3c3.png"/>',fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6\u200d\u2640\ufe0f" src="1f6b6-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb6" src="1f6b6.png"/>',fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc83" src="1f483.png"/>',fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd7a" src="1f57a.png"/>',fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f" src="1f46f.png"/>',fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6f\u200d\u2642\ufe0f" src="1f46f-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6b" src="1f46b.png"/>',fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6c" src="1f46c.png"/>',fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6d" src="1f46d.png"/>',fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47\u200d\u2640\ufe0f" src="1f647-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude47" src="1f647.png"/>',fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2642\ufe0f" src="1f926-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd26\u200d\u2640\ufe0f" src="1f926-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37" src="1f937.png"/>',fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd37\u200d\u2642\ufe0f" src="1f937-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81" src="1f481.png"/>',fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc81\u200d\u2642\ufe0f" src="1f481-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45" src="1f645.png"/>',fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude45\u200d\u2642\ufe0f" src="1f645-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46" src="1f646.png"/>',fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude46\u200d\u2642\ufe0f" src="1f646-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b" src="1f64b.png"/>',fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4b\u200d\u2642\ufe0f" src="1f64b-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e" src="1f64e.png"/>',fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4e\u200d\u2642\ufe0f" src="1f64e-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d" src="1f64d.png"/>',fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4d\u200d\u2642\ufe0f" src="1f64d-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87" src="1f487.png"/>',fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc87\u200d\u2642\ufe0f" src="1f487-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86" src="1f486.png"/>',fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc86\u200d\u2642\ufe0f" src="1f486-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2640\ufe0f" src="1f9d6-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd6\u200d\u2642\ufe0f" src="1f9d6-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc91" src="1f491.png"/>',fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f469.png"/>',fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f468.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8f" src="1f48f.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>',fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc6a" src="1f46a.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66" src="1f469-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67" src="1f469-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66" src="1f468-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67" src="1f468-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66" src="1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66" src="1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67" src="1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf6" src="1f9f6.png"/>',fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf5" src="1f9f5.png"/>',fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde5" src="1f9e5.png"/>',fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7c" src="1f97c.png"/>',fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5a" src="1f45a.png"/>',fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc55" src="1f455.png"/>',fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc56" src="1f456.png"/>',fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc54" src="1f454.png"/>',fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc57" src="1f457.png"/>',fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc59" src="1f459.png"/>',fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc58" src="1f458.png"/>',fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc84" src="1f484.png"/>',fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8b" src="1f48b.png"/>',fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc63" src="1f463.png"/>',fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7f" src="1f97f.png"/>',fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc60" src="1f460.png"/>',fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc61" src="1f461.png"/>',fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc62" src="1f462.png"/>',fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5e" src="1f45e.png"/>',fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5f" src="1f45f.png"/>',fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7e" src="1f97e.png"/>',fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde6" src="1f9e6.png"/>',fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde4" src="1f9e4.png"/>',fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde3" src="1f9e3.png"/>',fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc52" src="1f452.png"/>',fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa9" src="1f3a9.png"/>',fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde2" src="1f9e2.png"/>',fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d1" src="26d1.png"/>',fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf93" src="1f393.png"/>',fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc51" src="1f451.png"/>',fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf92" src="1f392.png"/>',fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf3" src="1f9f3.png"/>',fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5d" src="1f45d.png"/>',fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5b" src="1f45b.png"/>',fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc5c" src="1f45c.png"/>',fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbc" src="1f4bc.png"/>',fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc53" src="1f453.png"/>',fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd76" src="1f576.png"/>',fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd7d" src="1f97d.png"/>',fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8d" src="1f48d.png"/>',fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf02" src="1f302.png"/>',fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc36" src="1f436.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc31" src="1f431.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2d" src="1f42d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc39" src="1f439.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc30" src="1f430.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8a" src="1f98a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3b" src="1f43b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3c" src="1f43c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc28" src="1f428.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2f" src="1f42f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd81" src="1f981.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2e" src="1f42e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc37" src="1f437.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3d" src="1f43d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc38" src="1f438.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd91" src="1f991.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc19" src="1f419.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd90" src="1f990.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc35" src="1f435.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8d" src="1f98d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude48" src="1f648.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude49" src="1f649.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude4a" src="1f64a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc12" src="1f412.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc14" src="1f414.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc27" src="1f427.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc26" src="1f426.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc24" src="1f424.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc23" src="1f423.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc25" src="1f425.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd86" src="1f986.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd85" src="1f985.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd89" src="1f989.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd87" src="1f987.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3a" src="1f43a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc17" src="1f417.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc34" src="1f434.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd84" src="1f984.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1d" src="1f41d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1b" src="1f41b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8b" src="1f98b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0c" src="1f40c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1e" src="1f41e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1c" src="1f41c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd97" src="1f997.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd77" src="1f577.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd82" src="1f982.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd80" src="1f980.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0d" src="1f40d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8e" src="1f98e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd96" src="1f996.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd95" src="1f995.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc22" src="1f422.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc20" src="1f420.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1f" src="1f41f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc21" src="1f421.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2c" src="1f42c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd88" src="1f988.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc33" src="1f433.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0b" src="1f40b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0a" src="1f40a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc06" src="1f406.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd93" src="1f993.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc05" src="1f405.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc03" src="1f403.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc02" src="1f402.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc04" src="1f404.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8c" src="1f98c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2a" src="1f42a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc2b" src="1f42b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd92" src="1f992.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc18" src="1f418.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd8f" src="1f98f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc10" src="1f410.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0f" src="1f40f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc11" src="1f411.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc0e" src="1f40e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc16" src="1f416.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc00" src="1f400.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc01" src="1f401.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc13" src="1f413.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd83" src="1f983.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4a" src="1f54a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc15" src="1f415.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc29" src="1f429.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc08" src="1f408.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc07" src="1f407.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3f" src="1f43f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd94" src="1f994.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9d" src="1f99d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd99" src="1f999.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9b" src="1f99b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd98" src="1f998.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda1" src="1f9a1.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda2" src="1f9a2.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9a" src="1f99a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9c" src="1f99c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9e" src="1f99e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd9f" src="1f99f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc3e" src="1f43e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc09" src="1f409.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc32" src="1f432.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf35" src="1f335.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf84" src="1f384.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf32" src="1f332.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf33" src="1f333.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf34" src="1f334.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf31" src="1f331.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3f" src="1f33f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2618" src="2618.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf40" src="1f340.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8d" src="1f38d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8b" src="1f38b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf43" src="1f343.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf42" src="1f342.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf41" src="1f341.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3e" src="1f33e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3a" src="1f33a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3b" src="1f33b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf39" src="1f339.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd40" src="1f940.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf37" src="1f337.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3c" src="1f33c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf38" src="1f338.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc90" src="1f490.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf44" src="1f344.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf30" src="1f330.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf83" src="1f383.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc1a" src="1f41a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd78" src="1f578.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0e" src="1f30e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0d" src="1f30d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0f" src="1f30f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf15" src="1f315.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf16" src="1f316.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf17" src="1f317.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf18" src="1f318.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf11" src="1f311.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf12" src="1f312.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf13" src="1f313.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf14" src="1f314.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1a" src="1f31a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1d" src="1f31d.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1b" src="1f31b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1c" src="1f31c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1e" src="1f31e.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf19" src="1f319.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b50" src="2b50.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf1f" src="1f31f.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcab" src="1f4ab.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2728" src="2728.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2604" src="2604.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2600\ufe0f" src="2600.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf24" src="1f324.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c5" src="26c5.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf25" src="1f325.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf26" src="1f326.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2601\ufe0f" src="2601.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf27" src="1f327.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c8" src="26c8.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf29" src="1f329.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a1" src="26a1.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd25" src="1f525.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca5" src="1f4a5.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2744\ufe0f" src="2744.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf28" src="1f328.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26c4" src="26c4.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2603" src="2603.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2c" src="1f32c.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca8" src="1f4a8.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2a" src="1f32a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2b" src="1f32b.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2602" src="2602.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2614" src="2614.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca7" src="1f4a7.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca6" src="1f4a6.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0a" src="1f30a.png"/>',fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4f" src="1f34f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4e" src="1f34e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf50" src="1f350.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4a" src="1f34a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4b" src="1f34b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4c" src="1f34c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf49" src="1f349.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf47" src="1f347.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf53" src="1f353.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf48" src="1f348.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf52" src="1f352.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf51" src="1f351.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf4d" src="1f34d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd65" src="1f965.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5d" src="1f95d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6d" src="1f96d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd51" src="1f951.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd66" src="1f966.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf45" src="1f345.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf46" src="1f346.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd52" src="1f952.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd55" src="1f955.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf36" src="1f336.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd54" src="1f954.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf3d" src="1f33d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6c" src="1f96c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf60" src="1f360.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5c" src="1f95c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6f" src="1f36f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd50" src="1f950.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5e" src="1f35e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd56" src="1f956.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6f" src="1f96f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd68" src="1f968.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc0" src="1f9c0.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5a" src="1f95a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd53" src="1f953.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd69" src="1f969.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5e" src="1f95e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf57" src="1f357.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf56" src="1f356.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddb4" src="1f9b4.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf64" src="1f364.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf73" src="1f373.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf54" src="1f354.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5f" src="1f35f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd59" src="1f959.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2d" src="1f32d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf55" src="1f355.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6a" src="1f96a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6b" src="1f96b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5d" src="1f35d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2e" src="1f32e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf2f" src="1f32f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd57" src="1f957.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd58" src="1f958.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5c" src="1f35c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf72" src="1f372.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf65" src="1f365.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd60" src="1f960.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf63" src="1f363.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf71" src="1f371.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5b" src="1f35b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf59" src="1f359.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf5a" src="1f35a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf58" src="1f358.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf62" src="1f362.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf61" src="1f361.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf67" src="1f367.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf68" src="1f368.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf66" src="1f366.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd67" src="1f967.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf70" src="1f370.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc1" src="1f9c1.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd6e" src="1f96e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf82" src="1f382.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6e" src="1f36e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6c" src="1f36c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6d" src="1f36d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6b" src="1f36b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7f" src="1f37f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5f" src="1f95f.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf69" src="1f369.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf6a" src="1f36a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd5b" src="1f95b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7a" src="1f37a.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7b" src="1f37b.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd42" src="1f942.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf77" src="1f377.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd43" src="1f943.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf78" src="1f378.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf79" src="1f379.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7e" src="1f37e.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf76" src="1f376.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf75" src="1f375.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd64" src="1f964.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2615" src="2615.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7c" src="1f37c.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddc2" src="1f9c2.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd44" src="1f944.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf74" src="1f374.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf7d" src="1f37d.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd63" src="1f963.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd61" src="1f961.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd62" src="1f962.png"/>',fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26bd" src="26bd.png"/>',fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc0" src="1f3c0.png"/>',fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc8" src="1f3c8.png"/>',fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26be" src="26be.png"/>',fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4e" src="1f94e.png"/>',fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbe" src="1f3be.png"/>',fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd0" src="1f3d0.png"/>',fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc9" src="1f3c9.png"/>',fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4f" src="1f94f.png"/>',fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb1" src="1f3b1.png"/>',fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f3" src="26f3.png"/>',fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f" src="1f3cc-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcc" src="1f3cc.png"/>',fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd3" src="1f3d3.png"/>',fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff8" src="1f3f8.png"/>',fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd45" src="1f945.png"/>',fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd2" src="1f3d2.png"/>',fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd1" src="1f3d1.png"/>',fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4d" src="1f94d.png"/>',fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcf" src="1f3cf.png"/>',fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbf" src="1f3bf.png"/>',fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f7" src="26f7.png"/>',fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc2" src="1f3c2.png"/>',fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3a" src="1f93a.png"/>',fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2640\ufe0f" src="1f93c-200d-2640-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3c\u200d\u2642\ufe0f" src="1f93c-200d-2642-fe0f.png"/>',fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2640\ufe0f" src="1f938-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd38\u200d\u2642\ufe0f" src="1f938-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2640\ufe0f" src="1f93e-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3e\u200d\u2642\ufe0f" src="1f93e-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f8" src="26f8.png"/>',fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4c" src="1f94c.png"/>',fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef9" src="1f6f9.png"/>',fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef7" src="1f6f7.png"/>',fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff9" src="1f3f9.png"/>',fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa3" src="1f3a3.png"/>',fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4a" src="1f94a.png"/>',fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd4b" src="1f94b.png"/>',fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3\u200d\u2640\ufe0f" src="1f6a3-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea3" src="1f6a3.png"/>',fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2640\ufe0f" src="1f9d7-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd7\u200d\u2642\ufe0f" src="1f9d7-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca\u200d\u2640\ufe0f" src="1f3ca-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfca" src="1f3ca.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2640\ufe0f" src="1f93d-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd3d\u200d\u2642\ufe0f" src="1f93d-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2640\ufe0f" src="1f9d8-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddd8\u200d\u2642\ufe0f" src="1f9d8-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4\u200d\u2640\ufe0f" src="1f3c4-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc4" src="1f3c4.png"/>',fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec0" src="1f6c0.png"/>',fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9\ufe0f\u200d\u2640\ufe0f" src="26f9-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f9" src="26f9.png"/>',fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f" src="1f3cb-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcb" src="1f3cb.png"/>',fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4\u200d\u2640\ufe0f" src="1f6b4-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb4" src="1f6b4.png"/>',fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5\u200d\u2640\ufe0f" src="1f6b5-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb5" src="1f6b5.png"/>',fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc7" src="1f3c7.png"/>',fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd74" src="1f574.png"/>',fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc6" src="1f3c6.png"/>',fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbd" src="1f3bd.png"/>',fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc5" src="1f3c5.png"/>',fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf96" src="1f396.png"/>',fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd47" src="1f947.png"/>',fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd48" src="1f948.png"/>',fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd49" src="1f949.png"/>',fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf97" src="1f397.png"/>',fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff5" src="1f3f5.png"/>',fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfab" src="1f3ab.png"/>',fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9f" src="1f39f.png"/>',fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfad" src="1f3ad.png"/>',fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa8" src="1f3a8.png"/>',fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaa" src="1f3aa.png"/>',fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2640\ufe0f" src="1f939-200d-2640-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd39\u200d\u2642\ufe0f" src="1f939-200d-2642-fe0f.png"/>',fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa4" src="1f3a4.png"/>',fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa7" src="1f3a7.png"/>',fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbc" src="1f3bc.png"/>',fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb9" src="1f3b9.png"/>',fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udd41" src="1f941.png"/>',fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb7" src="1f3b7.png"/>',fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfba" src="1f3ba.png"/>',fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb8" src="1f3b8.png"/>',fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfbb" src="1f3bb.png"/>',fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfac" src="1f3ac.png"/>',fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfae" src="1f3ae.png"/>',fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc7e" src="1f47e.png"/>',fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfaf" src="1f3af.png"/>',fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb2" src="1f3b2.png"/>',fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],char:"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb0" src="1f3b0.png"/>',fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde9" src="1f9e9.png"/>',fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb3" src="1f3b3.png"/>',fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude97" src="1f697.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude95" src="1f695.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude99" src="1f699.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8c" src="1f68c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8e" src="1f68e.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfce" src="1f3ce.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude93" src="1f693.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude91" src="1f691.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude92" src="1f692.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude90" src="1f690.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9a" src="1f69a.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9b" src="1f69b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9c" src="1f69c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef4" src="1f6f4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfcd" src="1f3cd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb2" src="1f6b2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef5" src="1f6f5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea8" src="1f6a8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude94" src="1f694.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8d" src="1f68d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude98" src="1f698.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude96" src="1f696.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea1" src="1f6a1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea0" src="1f6a0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9f" src="1f69f.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude83" src="1f683.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8b" src="1f68b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9d" src="1f69d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude84" src="1f684.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude85" src="1f685.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude88" src="1f688.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude9e" src="1f69e.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude82" src="1f682.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude86" src="1f686.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude87" src="1f687.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8a" src="1f68a.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude89" src="1f689.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef8" src="1f6f8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude81" src="1f681.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee9" src="1f6e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2708\ufe0f" src="2708.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeeb" src="1f6eb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeec" src="1f6ec.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f5" src="26f5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee5" src="1f6e5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea4" src="1f6a4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f4" src="26f4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef3" src="1f6f3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude80" src="1f680.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef0" src="1f6f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcba" src="1f4ba.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udef6" src="1f6f6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2693" src="2693.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea7" src="1f6a7.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fd" src="26fd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\ude8f" src="1f68f.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea6" src="1f6a6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea5" src="1f6a5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfc1" src="1f3c1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea2" src="1f6a2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa1" src="1f3a1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa2" src="1f3a2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa0" src="1f3a0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd7" src="1f3d7.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf01" src="1f301.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfc" src="1f5fc.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfed" src="1f3ed.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f2" src="26f2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf91" src="1f391.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f0" src="26f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd4" src="1f3d4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfb" src="1f5fb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0b" src="1f30b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfe" src="1f5fe.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd5" src="1f3d5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26fa" src="26fa.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfde" src="1f3de.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee3" src="1f6e3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee4" src="1f6e4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf05" src="1f305.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf04" src="1f304.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdc" src="1f3dc.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd6" src="1f3d6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdd" src="1f3dd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf07" src="1f307.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf06" src="1f306.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd9" src="1f3d9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf03" src="1f303.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf09" src="1f309.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf0c" src="1f30c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf20" src="1f320.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf87" src="1f387.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf86" src="1f386.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf08" src="1f308.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfd8" src="1f3d8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff0" src="1f3f0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfef" src="1f3ef.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdf" src="1f3df.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfd" src="1f5fd.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe0" src="1f3e0.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe1" src="1f3e1.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfda" src="1f3da.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe2" src="1f3e2.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfec" src="1f3ec.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe3" src="1f3e3.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe4" src="1f3e4.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe5" src="1f3e5.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe6" src="1f3e6.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe8" src="1f3e8.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfea" src="1f3ea.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfeb" src="1f3eb.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe9" src="1f3e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc92" src="1f492.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfdb" src="1f3db.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ea" src="26ea.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4c" src="1f54c.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4d" src="1f54d.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4b" src="1f54b.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26e9" src="26e9.png"/>',fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231a" src="231a.png"/>',fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf1" src="1f4f1.png"/>',fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf2" src="1f4f2.png"/>',fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbb" src="1f4bb.png"/>',fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2328" src="2328.png"/>',fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda5" src="1f5a5.png"/>',fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda8" src="1f5a8.png"/>',fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb1" src="1f5b1.png"/>',fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddb2" src="1f5b2.png"/>',fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd79" src="1f579.png"/>',fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddc" src="1f5dc.png"/>',fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbd" src="1f4bd.png"/>',fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbe" src="1f4be.png"/>',fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcbf" src="1f4bf.png"/>',fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc0" src="1f4c0.png"/>',fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfc" src="1f4fc.png"/>',fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf7" src="1f4f7.png"/>',fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf8" src="1f4f8.png"/>',fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf9" src="1f4f9.png"/>',fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa5" src="1f3a5.png"/>',fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfd" src="1f4fd.png"/>',fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9e" src="1f39e.png"/>',fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcde" src="1f4de.png"/>',fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u260e\ufe0f" src="260e.png"/>',fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdf" src="1f4df.png"/>',fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce0" src="1f4e0.png"/>',fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfa" src="1f4fa.png"/>',fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcfb" src="1f4fb.png"/>',fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf99" src="1f399.png"/>',fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9a" src="1f39a.png"/>',fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf9b" src="1f39b.png"/>',fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udded" src="1f9ed.png"/>',fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f1" src="23f1.png"/>',fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f2" src="23f2.png"/>',fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f0" src="23f0.png"/>',fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd70" src="1f570.png"/>',fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f3" src="23f3.png"/>',fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u231b" src="231b.png"/>',fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce1" src="1f4e1.png"/>',fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0b" src="1f50b.png"/>',fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0c" src="1f50c.png"/>',fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca1" src="1f4a1.png"/>',fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd26" src="1f526.png"/>',fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd6f" src="1f56f.png"/>',fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddef" src="1f9ef.png"/>',fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd1" src="1f5d1.png"/>',fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee2" src="1f6e2.png"/>',fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb8" src="1f4b8.png"/>',fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb5" src="1f4b5.png"/>',fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb4" src="1f4b4.png"/>',fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb6" src="1f4b6.png"/>',fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb7" src="1f4b7.png"/>',fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb0" src="1f4b0.png"/>',fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb3" src="1f4b3.png"/>',fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8e" src="1f48e.png"/>',fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2696" src="2696.png"/>',fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf0" src="1f9f0.png"/>',fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd27" src="1f527.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd28" src="1f528.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2692" src="2692.png"/>',fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee0" src="1f6e0.png"/>',fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26cf" src="26cf.png"/>',fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd29" src="1f529.png"/>',fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2699" src="2699.png"/>',fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf1" src="1f9f1.png"/>',fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d3" src="26d3.png"/>',fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf2" src="1f9f2.png"/>',fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2b" src="1f52b.png"/>',fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca3" src="1f4a3.png"/>',fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde8" src="1f9e8.png"/>',fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2a" src="1f52a.png"/>',fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde1" src="1f5e1.png"/>',fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2694" src="2694.png"/>',fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udee1" src="1f6e1.png"/>',fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeac" src="1f6ac.png"/>',fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2620" src="2620.png"/>',fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b0" src="26b0.png"/>',fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26b1" src="26b1.png"/>',fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udffa" src="1f3fa.png"/>',fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2e" src="1f52e.png"/>',fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcff" src="1f4ff.png"/>',fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddff" src="1f9ff.png"/>',fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc88" src="1f488.png"/>',fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2697" src="2697.png"/>',fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2d" src="1f52d.png"/>',fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2c" src="1f52c.png"/>',fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd73" src="1f573.png"/>',fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8a" src="1f48a.png"/>',fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc89" src="1f489.png"/>',fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddec" src="1f9ec.png"/>',fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udda0" src="1f9a0.png"/>',fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddeb" src="1f9eb.png"/>',fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddea" src="1f9ea.png"/>',fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf21" src="1f321.png"/>',fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf9" src="1f9f9.png"/>',fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfa" src="1f9fa.png"/>',fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfb" src="1f9fb.png"/>',fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff7" src="1f3f7.png"/>',fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd16" src="1f516.png"/>',fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebd" src="1f6bd.png"/>',fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebf" src="1f6bf.png"/>',fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec1" src="1f6c1.png"/>',fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfc" src="1f9fc.png"/>',fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfd" src="1f9fd.png"/>',fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf4" src="1f9f4.png"/>',fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd11" src="1f511.png"/>',fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udddd" src="1f5dd.png"/>',fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecb" src="1f6cb.png"/>',fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecc" src="1f6cc.png"/>',fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecf" src="1f6cf.png"/>',fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaa" src="1f6aa.png"/>',fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udece" src="1f6ce.png"/>',fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf8" src="1f9f8.png"/>',fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddbc" src="1f5bc.png"/>',fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddfa" src="1f5fa.png"/>',fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26f1" src="26f1.png"/>',fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddff" src="1f5ff.png"/>',fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udecd" src="1f6cd.png"/>',fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded2" src="1f6d2.png"/>',fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf88" src="1f388.png"/>',fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8f" src="1f38f.png"/>',fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf80" src="1f380.png"/>',fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf81" src="1f381.png"/>',fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8a" src="1f38a.png"/>',fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf89" src="1f389.png"/>',fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8e" src="1f38e.png"/>',fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf90" src="1f390.png"/>',fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf8c" src="1f38c.png"/>',fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfee" src="1f3ee.png"/>',fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde7" src="1f9e7.png"/>',fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2709\ufe0f" src="2709.png"/>',fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce9" src="1f4e9.png"/>',fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce8" src="1f4e8.png"/>',fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce7" src="1f4e7.png"/>',fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc8c" src="1f48c.png"/>',fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcee" src="1f4ee.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcea" src="1f4ea.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udceb" src="1f4eb.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcec" src="1f4ec.png"/>',fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udced" src="1f4ed.png"/>',fitzpatrick_scale:!1,category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce6" src="1f4e6.png"/>',fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcef" src="1f4ef.png"/>',fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce5" src="1f4e5.png"/>',fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce4" src="1f4e4.png"/>',fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdc" src="1f4dc.png"/>',fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc3" src="1f4c3.png"/>',fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd1" src="1f4d1.png"/>',fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddfe" src="1f9fe.png"/>',fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcca" src="1f4ca.png"/>',fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc8" src="1f4c8.png"/>',fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc9" src="1f4c9.png"/>',fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc4" src="1f4c4.png"/>',fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc5" src="1f4c5.png"/>',fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc6" src="1f4c6.png"/>',fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd3" src="1f5d3.png"/>',fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc7" src="1f4c7.png"/>',fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc3" src="1f5c3.png"/>',fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddf3" src="1f5f3.png"/>',fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc4" src="1f5c4.png"/>',fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccb" src="1f4cb.png"/>',fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddd2" src="1f5d2.png"/>',fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc1" src="1f4c1.png"/>',fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcc2" src="1f4c2.png"/>',fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddc2" src="1f5c2.png"/>',fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddde" src="1f5de.png"/>',fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf0" src="1f4f0.png"/>',fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd3" src="1f4d3.png"/>',fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd5" src="1f4d5.png"/>',fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd7" src="1f4d7.png"/>',fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd8" src="1f4d8.png"/>',fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd9" src="1f4d9.png"/>',fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd4" src="1f4d4.png"/>',fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd2" src="1f4d2.png"/>',fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcda" src="1f4da.png"/>',fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd6" src="1f4d6.png"/>',fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddf7" src="1f9f7.png"/>',fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd17" src="1f517.png"/>',fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcce" src="1f4ce.png"/>',fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd87" src="1f587.png"/>',fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2702\ufe0f" src="2702.png"/>',fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcd0" src="1f4d0.png"/>',fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccf" src="1f4cf.png"/>',fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\uddee" src="1f9ee.png"/>',fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccc" src="1f4cc.png"/>',fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udccd" src="1f4cd.png"/>',fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udea9" src="1f6a9.png"/>',fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3" src="1f3f3.png"/>',fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4" src="1f3f4.png"/>',fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff3\ufe0f\u200d\ud83c\udf08" src="1f3f3-fe0f-200d-1f308.png"/>',fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd10" src="1f510.png"/>',fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd12" src="1f512.png"/>',fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd13" src="1f513.png"/>',fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0f" src="1f50f.png"/>',fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8a" src="1f58a.png"/>',fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8b" src="1f58b.png"/>',fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2712\ufe0f" src="2712.png"/>',fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdd" src="1f4dd.png"/>',fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u270f\ufe0f" src="270f.png"/>',fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8d" src="1f58d.png"/>',fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd8c" src="1f58c.png"/>',fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0d" src="1f50d.png"/>',fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0e" src="1f50e.png"/>',fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2764\ufe0f" src="2764.png"/>',fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83e\udde1" src="1f9e1.png"/>',fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9b" src="1f49b.png"/>',fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9a" src="1f49a.png"/>',fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc99" src="1f499.png"/>',fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9c" src="1f49c.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udda4" src="1f5a4.png"/>',fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc94" src="1f494.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2763" src="2763.png"/>',fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc95" src="1f495.png"/>',fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9e" src="1f49e.png"/>',fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc93" src="1f493.png"/>',fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc97" src="1f497.png"/>',fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc96" src="1f496.png"/>',fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc98" src="1f498.png"/>',fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9d" src="1f49d.png"/>',fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udc9f" src="1f49f.png"/>',fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262e" src="262e.png"/>',fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u271d" src="271d.png"/>',fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262a" src="262a.png"/>',fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd49" src="1f549.png"/>',fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2638" src="2638.png"/>',fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2721" src="2721.png"/>',fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd2f" src="1f52f.png"/>',fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd4e" src="1f54e.png"/>',fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u262f" src="262f.png"/>',fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2626" src="2626.png"/>',fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded0" src="1f6d0.png"/>',fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ce" src="26ce.png"/>',fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2648" src="2648.png"/>',fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2649" src="2649.png"/>',fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264a" src="264a.png"/>',fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264b" src="264b.png"/>',fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264c" src="264c.png"/>',fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264d" src="264d.png"/>',fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264e" src="264e.png"/>',fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u264f" src="264f.png"/>',fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2650" src="2650.png"/>',fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2651" src="2651.png"/>',fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2652" src="2652.png"/>',fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2653" src="2653.png"/>',fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd94" src="1f194.png"/>',fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269b" src="269b.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude33" src="1f233.png"/>',fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude39" src="1f239.png"/>',fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2622" src="2622.png"/>',fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2623" src="2623.png"/>',fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf4" src="1f4f4.png"/>',fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf3" src="1f4f3.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude36" src="1f236.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude1a" src="1f21a.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude38" src="1f238.png"/>',fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude3a" src="1f23a.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude37\ufe0f" src="1f237.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2734\ufe0f" src="2734.png"/>',fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd9a" src="1f19a.png"/>',fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude51" src="1f251.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcae" src="1f4ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude50" src="1f250.png"/>',fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3299\ufe0f" src="3299.png"/>',fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3297\ufe0f" src="3297.png"/>',fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude34" src="1f234.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude35" src="1f235.png"/>',fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude32" src="1f232.png"/>',fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd70\ufe0f" src="1f170.png"/>',fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd71\ufe0f" src="1f171.png"/>',fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd8e" src="1f18e.png"/>',fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd91" src="1f191.png"/>',fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7e\ufe0f" src="1f17e.png"/>',fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd98" src="1f198.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26d4" src="26d4.png"/>',fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcdb" src="1f4db.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeab" src="1f6ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274c" src="274c.png"/>',fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b55" src="2b55.png"/>',fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uded1" src="1f6d1.png"/>',fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca2" src="1f4a2.png"/>',fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2668\ufe0f" src="2668.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb7" src="1f6b7.png"/>',fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeaf" src="1f6af.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb3" src="1f6b3.png"/>',fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb1" src="1f6b1.png"/>',fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1e" src="1f51e.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf5" src="1f4f5.png"/>',fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2757" src="2757.png"/>',fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2755" src="2755.png"/>',fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2753" src="2753.png"/>',fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2754" src="2754.png"/>',fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u203c\ufe0f" src="203c.png"/>',fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2049\ufe0f" src="2049.png"/>',fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd05" src="1f505.png"/>',fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd06" src="1f506.png"/>',fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd31" src="1f531.png"/>',fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u269c" src="269c.png"/>',fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u303d\ufe0f" src="303d.png"/>',fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26a0\ufe0f" src="26a0.png"/>',fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb8" src="1f6b8.png"/>',fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd30" src="1f530.png"/>',fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267b\ufe0f" src="267b.png"/>',fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude2f" src="1f22f.png"/>',fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb9" src="1f4b9.png"/>',fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2747\ufe0f" src="2747.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2733\ufe0f" src="2733.png"/>',fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u274e" src="274e.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2705" src="2705.png"/>',fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udca0" src="1f4a0.png"/>',fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf00" src="1f300.png"/>',fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27bf" src="27bf.png"/>',fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udf10" src="1f310.png"/>',fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u24c2\ufe0f" src="24c2.png"/>',fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfe7" src="1f3e7.png"/>',fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude02\ufe0f" src="1f202.png"/>',fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec2" src="1f6c2.png"/>',fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec3" src="1f6c3.png"/>',fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec4" src="1f6c4.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udec5" src="1f6c5.png"/>',fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267f" src="267f.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udead" src="1f6ad.png"/>',fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebe" src="1f6be.png"/>',fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd7f\ufe0f" src="1f17f.png"/>',fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb0" src="1f6b0.png"/>',fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeb9" src="1f6b9.png"/>',fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeba" src="1f6ba.png"/>',fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebc" src="1f6bc.png"/>',fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udebb" src="1f6bb.png"/>',fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udeae" src="1f6ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfa6" src="1f3a6.png"/>',fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcf6" src="1f4f6.png"/>',fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\ude01" src="1f201.png"/>',fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd96" src="1f196.png"/>',fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd97" src="1f197.png"/>',fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd99" src="1f199.png"/>',fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd92" src="1f192.png"/>',fitzpatrick_scale:!1,category:"symbols"},new:{keywords:["blue-square","words","start"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd95" src="1f195.png"/>',fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udd93" src="1f193.png"/>',fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="0\ufe0f\u20e3" src="30-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="1\ufe0f\u20e3" src="31-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="2\ufe0f\u20e3" src="32-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="3\ufe0f\u20e3" src="33-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="4\ufe0f\u20e3" src="34-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="5\ufe0f\u20e3" src="35-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="6\ufe0f\u20e3" src="36-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="7\ufe0f\u20e3" src="37-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="8\ufe0f\u20e3" src="38-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="9\ufe0f\u20e3" src="39-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1f" src="1f51f.png"/>',fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="*\u20e3" src="2a-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23cf\ufe0f" src="23cf.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25b6\ufe0f" src="25b6.png"/>',fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f8" src="23f8.png"/>',fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ed" src="23ed.png"/>',fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23f9" src="23f9.png"/>',fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23fa" src="23fa.png"/>',fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ef" src="23ef.png"/>',fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ee" src="23ee.png"/>',fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23e9" src="23e9.png"/>',fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ea" src="23ea.png"/>',fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd00" src="1f500.png"/>',fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd01" src="1f501.png"/>',fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd02" src="1f502.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25c0\ufe0f" src="25c0.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3c" src="1f53c.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3d" src="1f53d.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23eb" src="23eb.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u23ec" src="23ec.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27a1\ufe0f" src="27a1.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b05\ufe0f" src="2b05.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b06\ufe0f" src="2b06.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b07\ufe0f" src="2b07.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2197\ufe0f" src="2197.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2198\ufe0f" src="2198.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2199\ufe0f" src="2199.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2196\ufe0f" src="2196.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2195\ufe0f" src="2195.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2194\ufe0f" src="2194.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd04" src="1f504.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21aa\ufe0f" src="21aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u21a9\ufe0f" src="21a9.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2934\ufe0f" src="2934.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2935\ufe0f" src="2935.png"/>',fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="#\ufe0f\u20e3" src="23-20e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2139\ufe0f" src="2139.png"/>',fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd24" src="1f524.png"/>',fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd21" src="1f521.png"/>',fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd20" src="1f520.png"/>',fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd23" src="1f523.png"/>',fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb5" src="1f3b5.png"/>',fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb6" src="1f3b6.png"/>',fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u3030\ufe0f" src="3030.png"/>',fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u27b0" src="27b0.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2714\ufe0f" src="2714.png"/>',fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd03" src="1f503.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2795" src="2795.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2796" src="2796.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2797" src="2797.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2716\ufe0f" src="2716.png"/>',fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u267e" src="267e.png"/>',fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb2" src="1f4b2.png"/>',fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcb1" src="1f4b1.png"/>',fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xa9\ufe0f" src="a9.png"/>',fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\xae\ufe0f" src="ae.png"/>',fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2122\ufe0f" src="2122.png"/>',fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1a" src="1f51a.png"/>',fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd19" src="1f519.png"/>',fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1b" src="1f51b.png"/>',fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1d" src="1f51d.png"/>',fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd1c" src="1f51c.png"/>',fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2611\ufe0f" src="2611.png"/>',fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd18" src="1f518.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26aa" src="26aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u26ab" src="26ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd34" src="1f534.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd35" src="1f535.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd38" src="1f538.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd39" src="1f539.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd36" src="1f536.png"/>',fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd37" src="1f537.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3a" src="1f53a.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25aa\ufe0f" src="25aa.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25ab\ufe0f" src="25ab.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1b" src="2b1b.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2b1c" src="2b1c.png"/>',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd3b" src="1f53b.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fc\ufe0f" src="25fc.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fb\ufe0f" src="25fb.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fe" src="25fe.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u25fd" src="25fd.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd32" src="1f532.png"/>',fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd33" src="1f533.png"/>',fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd08" src="1f508.png"/>',fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd09" src="1f509.png"/>',fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd0a" src="1f50a.png"/>',fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd07" src="1f507.png"/>',fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce3" src="1f4e3.png"/>',fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udce2" src="1f4e2.png"/>',fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd14" src="1f514.png"/>',fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd15" src="1f515.png"/>',fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udccf" src="1f0cf.png"/>',fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udc04" src="1f004.png"/>',fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2660\ufe0f" src="2660.png"/>',fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2663\ufe0f" src="2663.png"/>',fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2665\ufe0f" src="2665.png"/>',fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\u2666\ufe0f" src="2666.png"/>',fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udfb4" src="1f3b4.png"/>',fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcad" src="1f4ad.png"/>',fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\uddef" src="1f5ef.png"/>',fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udcac" src="1f4ac.png"/>',fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udde8" src="1f5e8.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd50" src="1f550.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd51" src="1f551.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd52" src="1f552.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd53" src="1f553.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd54" src="1f554.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd55" src="1f555.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd56" src="1f556.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd57" src="1f557.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd58" src="1f558.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd59" src="1f559.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5a" src="1f55a.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5b" src="1f55b.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5c" src="1f55c.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5d" src="1f55d.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5e" src="1f55e.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd5f" src="1f55f.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd60" src="1f560.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd61" src="1f561.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd62" src="1f562.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd63" src="1f563.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd64" src="1f564.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd65" src="1f565.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd66" src="1f566.png"/>',fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83d\udd67" src="1f567.png"/>',fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddeb" src="1f1e6-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfd" src="1f1e6-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf1" src="1f1e6-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddff" src="1f1e9-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf8" src="1f1e6-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\udde9" src="1f1e6-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf4" src="1f1e6-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddee" src="1f1e6-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf6" src="1f1e6-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddec" src="1f1e6-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf7" src="1f1e6-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf2" src="1f1e6-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfc" src="1f1e6-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddfa" src="1f1e6-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddf9" src="1f1e6-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddff" src="1f1e6-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf8" src="1f1e7-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udded" src="1f1e7-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde9" src="1f1e7-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde7" src="1f1e7-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfe" src="1f1e7-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddea" src="1f1e7-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddff" src="1f1e7-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddef" src="1f1e7-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf2" src="1f1e7-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf9" src="1f1e7-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf4" src="1f1e7-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf6" src="1f1e7-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\udde6" src="1f1e7-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddfc" src="1f1e7-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf7" src="1f1e7-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf4" src="1f1ee-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddec" src="1f1fb-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf3" src="1f1e7-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddec" src="1f1e7-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddeb" src="1f1e7-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddee" src="1f1e7-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfb" src="1f1e8-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\udded" src="1f1f0-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf2" src="1f1e8-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde6" src="1f1e8-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde8" src="1f1ee-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfe" src="1f1f0-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddeb" src="1f1e8-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde9" src="1f1f9-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf1" src="1f1e8-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf3" src="1f1e8-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfd" src="1f1e8-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde8" src="1f1e8-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf4" src="1f1e8-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf2" src="1f1f0-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddec" src="1f1e8-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udde9" src="1f1e8-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf0" src="1f1e8-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddf7" src="1f1e8-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf7" src="1f1ed-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfa" src="1f1e8-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfc" src="1f1e8-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddfe" src="1f1e8-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddff" src="1f1e8-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf0" src="1f1e9-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddef" src="1f1e9-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf2" src="1f1e9-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddf4" src="1f1e9-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udde8" src="1f1ea-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddec" src="1f1ea-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfb" src="1f1f8-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf6" src="1f1ec-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf7" src="1f1ea-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddea" src="1f1ea-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf9" src="1f1ea-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddfa" src="1f1ea-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf0" src="1f1eb-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf4" src="1f1eb-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddef" src="1f1eb-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddee" src="1f1eb-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf7" src="1f1eb-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddeb" src="1f1ec-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddeb" src="1f1f5-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddeb" src="1f1f9-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde6" src="1f1ec-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf2" src="1f1ec-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddea" src="1f1ec-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde9\ud83c\uddea" src="1f1e9-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udded" src="1f1ec-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddee" src="1f1ec-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf7" src="1f1ec-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf1" src="1f1ec-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde9" src="1f1ec-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf5" src="1f1ec-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfa" src="1f1ec-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf9" src="1f1ec-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddec" src="1f1ec-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf3" src="1f1ec-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfc" src="1f1ec-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddfe" src="1f1ec-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf9" src="1f1ed-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf3" src="1f1ed-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddf0" src="1f1ed-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udded\ud83c\uddfa" src="1f1ed-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf8" src="1f1ee-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf3" src="1f1ee-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\udde9" src="1f1ee-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf7" src="1f1ee-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf6" src="1f1ee-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddea" src="1f1ee-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf2" src="1f1ee-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf1" src="1f1ee-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddee\ud83c\uddf9" src="1f1ee-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\uddee" src="1f1e8-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf2" src="1f1ef-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf5" src="1f1ef-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddea" src="1f1ef-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddef\ud83c\uddf4" src="1f1ef-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddff" src="1f1f0-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddea" src="1f1f0-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddee" src="1f1f0-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfd\ud83c\uddf0" src="1f1fd-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddfc" src="1f1f0-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddec" src="1f1f0-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde6" src="1f1f1-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfb" src="1f1f1-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde7" src="1f1f1-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf8" src="1f1f1-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf7" src="1f1f1-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfe" src="1f1f1-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddee" src="1f1f1-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf9" src="1f1f1-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddfa" src="1f1f1-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf4" src="1f1f2-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf0" src="1f1f2-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddec" src="1f1f2-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfc" src="1f1f2-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfe" src="1f1f2-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfb" src="1f1f2-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf1" src="1f1f2-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf9" src="1f1f2-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udded" src="1f1f2-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf6" src="1f1f2-1f1f6.png"/>',fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf7" src="1f1f2-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfa" src="1f1f2-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddf9" src="1f1fe-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddfd" src="1f1f2-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddeb\ud83c\uddf2" src="1f1eb-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde9" src="1f1f2-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde8" src="1f1f2-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf3" src="1f1f2-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddea" src="1f1f2-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf8" src="1f1f2-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\udde6" src="1f1f2-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddff" src="1f1f2-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf2" src="1f1f2-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde6" src="1f1f3-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf7" src="1f1f3-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf5" src="1f1f3-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf1" src="1f1f3-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\udde8" src="1f1f3-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddff" src="1f1f3-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddee" src="1f1f3-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddea" src="1f1f3-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddec" src="1f1f3-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddfa" src="1f1f3-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddeb" src="1f1f3-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf2\ud83c\uddf5" src="1f1f2-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf5" src="1f1f0-1f1f5.png"/>',fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf3\ud83c\uddf4" src="1f1f3-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf4\ud83c\uddf2" src="1f1f4-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf0" src="1f1f5-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfc" src="1f1f5-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf8" src="1f1f5-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udde6" src="1f1f5-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddec" src="1f1f5-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddfe" src="1f1f5-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddea" src="1f1f5-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\udded" src="1f1f5-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf3" src="1f1f5-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf1" src="1f1f5-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf9" src="1f1f5-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf7" src="1f1f5-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf6\ud83c\udde6" src="1f1f6-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddea" src="1f1f7-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf4" src="1f1f7-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfa" src="1f1f7-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddfc" src="1f1f7-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde7\ud83c\uddf1" src="1f1e7-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udded" src="1f1f8-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf3" src="1f1f0-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\udde8" src="1f1f1-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf5\ud83c\uddf2" src="1f1f5-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde8" src="1f1fb-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddf8" src="1f1fc-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf2" src="1f1f8-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf9" src="1f1f8-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde6" src="1f1f8-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf3" src="1f1f8-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf7\ud83c\uddf8" src="1f1f7-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde8" src="1f1f8-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf1" src="1f1f8-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddec" src="1f1f8-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfd" src="1f1f8-1f1fd.png"/>',fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf0" src="1f1f8-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddee" src="1f1f8-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde7" src="1f1f8-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf4" src="1f1f8-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\udde6" src="1f1ff-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\uddf8" src="1f1ec-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf0\ud83c\uddf7" src="1f1f0-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf8" src="1f1f8-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\uddf8" src="1f1ea-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf1\ud83c\uddf0" src="1f1f1-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\udde9" src="1f1f8-1f1e9.png"/>',fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddf7" src="1f1f8-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddff" src="1f1f8-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddea" src="1f1f8-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde8\ud83c\udded" src="1f1e8-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf8\ud83c\uddfe" src="1f1f8-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfc" src="1f1f9-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddef" src="1f1f9-1f1ef.png"/>',fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddff" src="1f1f9-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udded" src="1f1f9-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf1" src="1f1f9-1f1f1.png"/>',fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddec" src="1f1f9-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf0" src="1f1f9-1f1f0.png"/>',fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf4" src="1f1f9-1f1f4.png"/>',fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf9" src="1f1f9-1f1f9.png"/>',fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf3" src="1f1f9-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf7" src="1f1f9-1f1f7.png"/>',fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddf2" src="1f1f9-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\udde8" src="1f1f9-1f1e8.png"/>',fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddf9\ud83c\uddfb" src="1f1f9-1f1fb.png"/>',fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddec" src="1f1fa-1f1ec.png"/>',fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\udde6" src="1f1fa-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udde6\ud83c\uddea" src="1f1e6-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddec\ud83c\udde7" src="1f1ec-1f1e7.png"/>',fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f" src="1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f" src="1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f" src="1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png"/>',fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf8" src="1f1fa-1f1f8.png"/>',fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddee" src="1f1fb-1f1ee.png"/>',fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddfe" src="1f1fa-1f1fe.png"/>',fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddff" src="1f1fa-1f1ff.png"/>',fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddfa" src="1f1fb-1f1fa.png"/>',fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\udde6" src="1f1fb-1f1e6.png"/>',fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddea" src="1f1fb-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfb\ud83c\uddf3" src="1f1fb-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfc\ud83c\uddeb" src="1f1fc-1f1eb.png"/>',fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddea\ud83c\udded" src="1f1ea-1f1ed.png"/>',fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfe\ud83c\uddea" src="1f1fe-1f1ea.png"/>',fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddf2" src="1f1ff-1f1f2.png"/>',fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddff\ud83c\uddfc" src="1f1ff-1f1fc.png"/>',fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\uddfa\ud83c\uddf3" src="1f1fa-1f1f3.png"/>',fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="\ud83c\udff4\u200d\u2620\ufe0f" src="1f3f4-200d-2620-fe0f.png"/>',fitzpatrick_scale:!1,category:"flags"}});js/tinymce/plugins/emoticons/js/emojis.min.js000064400000602705151727150240015351 0ustar00// Source: npm package: emojilib, file:emojis.json
window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:"\ud83e\udd73",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:"\ud83e\udd70",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],char:"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],char:"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],char:"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],char:"\ud83e\udd7a",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],char:"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],char:"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],char:"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:"\ud83e\udd75",fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:"\ud83e\udd76",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],char:"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:"\ud83e\udd74",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],char:"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],char:"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],char:"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],char:"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],char:"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],char:"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],char:"\ud83e\uddb6",fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],char:"\ud83e\uddb5",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],char:"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],char:"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],char:"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],char:"\ud83e\uddb7",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],char:"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],char:"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],char:"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],char:"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],char:"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],char:"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],char:"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],char:"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],char:"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],char:"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:"\ud83e\uddb8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:"\ud83e\uddb8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:"\ud83e\uddb9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:"\ud83e\uddb9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],char:"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],char:"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],char:"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],char:"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],char:"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],char:"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],char:"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],char:"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],char:"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],char:"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],char:"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],char:"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:"\ud83e\udd26\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],char:"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],char:"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:"\ud83e\uddf6",fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:"\ud83e\uddf5",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],char:"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:"\ud83e\udd7c",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],char:"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:"\ud83e\udd7f",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],char:"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],char:"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:"\ud83e\udd7e",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],char:"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],char:"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],char:"\ud83e\uddf3",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:"\ud83e\udd7d",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:"\ud83e\udd9d",fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:"\ud83e\udd99",fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:"\ud83e\udd9b",fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:"\ud83e\udd98",fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:"\ud83e\udda1",fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:"\ud83e\udda2",fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:"\ud83e\udd9a",fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:"\ud83e\udd9c",fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:"\ud83e\udd9e",fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:"\ud83e\udd9f",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],char:"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],char:"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:"\ud83e\udd6d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:"\ud83e\udd6c",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:"\ud83e\udd6f",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],char:"\ud83e\uddb4",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],char:"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],char:"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],char:"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],char:"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],char:"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],char:"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],char:"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],char:"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],char:"\ud83e\uddc1",fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],char:"\ud83e\udd6e",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],char:"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],char:"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],char:"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],char:"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],char:"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],char:"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],char:"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],char:"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],char:"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],char:"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],char:"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],char:"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],char:"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],char:"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],char:"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],char:"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],char:"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],char:"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],char:"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],char:"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],char:"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],char:"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],char:"\ud83e\uddc2",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],char:"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],char:"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],char:"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],char:"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],char:"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],char:"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],char:"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],char:"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],char:"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],char:"\u26be",fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],char:"\ud83e\udd4e",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],char:"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],char:"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],char:"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],char:"\ud83e\udd4f",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],char:"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],char:"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],char:"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],char:"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],char:"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],char:"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],char:"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],char:"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],char:"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],char:"\ud83e\udd4d",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],char:"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],char:"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],char:"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],char:"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],char:"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],char:"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],char:"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],char:"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],char:"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],char:"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],char:"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],char:"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],char:"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],char:"\ud83d\udef9",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],char:"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],char:"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],char:"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],char:"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],char:"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],char:"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],char:"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],char:"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],char:"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],char:"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],char:"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],char:"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],char:"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],char:"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],char:"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],char:"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],char:"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],char:"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],char:"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],char:"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],char:"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],char:"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],char:"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],char:"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],char:"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],char:"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],char:"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],char:"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],char:"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],char:"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],char:"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],char:"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],char:"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],char:"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],char:"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],char:"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],char:"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],char:"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],char:"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],char:"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],char:"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],char:"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],char:"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],char:"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],char:"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],char:"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],char:"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],char:"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],char:"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],char:"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],char:"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],char:"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],char:"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],char:"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],char:"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],char:"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],char:"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],char:"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],char:"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],char:"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],char:"\ud83e\udde9",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],char:"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],char:"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],char:"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],char:"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],char:"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],char:"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],char:"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],char:"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],char:"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],char:"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],char:"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],char:"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],char:"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],char:"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],char:"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],char:"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],char:"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],char:"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],char:"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],char:"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],char:"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],char:"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],char:"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],char:"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],char:"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],char:"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],char:"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],char:"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],char:"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],char:"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],char:"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],char:"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],char:"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],char:"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],char:"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],char:"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],char:"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],char:"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],char:"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],char:"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],char:"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],char:"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],char:"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],char:"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],char:"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],char:"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],char:"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],char:"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],char:"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],char:"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],char:"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],char:"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],char:"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],char:"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],char:"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],char:"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],char:"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],char:"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],char:"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],char:"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],char:"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],char:"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],char:"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],char:"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],char:"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],char:"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],char:"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],char:"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],char:"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],char:"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],char:"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],char:"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],char:"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],char:"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],char:"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],char:"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],char:"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],char:"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],char:"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],char:"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],char:"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],char:"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],char:"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],char:"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],char:"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],char:"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],char:"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],char:"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],char:"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],char:"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],char:"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],char:"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],char:"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],char:"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],char:"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],char:"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],char:"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],char:"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],char:"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],char:"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],char:"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],char:"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],char:"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],char:"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],char:"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],char:"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],char:"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],char:"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],char:"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],char:"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],char:"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],char:"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],char:"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],char:"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],char:"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],char:"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],char:"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],char:"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],char:"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],char:"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],char:"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],char:"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],char:"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],char:"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],char:"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],char:"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],char:"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],char:"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],char:"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],char:"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],char:"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],char:"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],char:"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],char:"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],char:"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],char:"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],char:"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],char:"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],char:"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],char:"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],char:"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],char:"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],char:"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],char:"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],char:"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],char:"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],char:"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],char:"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],char:"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],char:"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],char:"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],char:"\ud83e\udded",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],char:"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],char:"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],char:"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],char:"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],char:"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],char:"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],char:"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],char:"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],char:"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],char:"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],char:"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],char:"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],char:"\ud83e\uddef",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],char:"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],char:"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],char:"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],char:"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],char:"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],char:"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],char:"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],char:"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],char:"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],char:"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],char:"\u2696",fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],char:"\ud83e\uddf0",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],char:"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],char:"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],char:"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],char:"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],char:"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],char:"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],char:"\u2699",fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],char:"\ud83e\uddf1",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],char:"\u26d3",fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],char:"\ud83e\uddf2",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],char:"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],char:"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],char:"\ud83e\udde8",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],char:"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],char:"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],char:"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],char:"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],char:"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],char:"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],char:"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],char:"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],char:"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],char:"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],char:"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],char:"\ud83e\uddff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],char:"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],char:"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],char:"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],char:"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],char:"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],char:"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],char:"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],char:"\ud83e\uddec",fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],char:"\ud83e\udda0",fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],char:"\ud83e\uddeb",fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],char:"\ud83e\uddea",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],char:"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],char:"\ud83e\uddf9",fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],char:"\ud83e\uddfa",fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],char:"\ud83e\uddfb",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],char:"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],char:"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],char:"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],char:"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],char:"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],char:"\ud83e\uddfc",fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],char:"\ud83e\uddfd",fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],char:"\ud83e\uddf4",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],char:"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],char:"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],char:"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],char:"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],char:"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],char:"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],char:"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],char:"\ud83e\uddf8",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],char:"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],char:"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],char:"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],char:"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],char:"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],char:"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],char:"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],char:"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],char:"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],char:"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],char:"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],char:"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],char:"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],char:"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],char:"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],char:"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],char:"\ud83e\udde7",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],char:"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],char:"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],char:"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],char:"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],char:"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],char:"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],char:"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],char:"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],char:"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],char:"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},package:{keywords:["mail","gift","cardboard","box","moving"],char:"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],char:"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],char:"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],char:"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],char:"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],char:"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],char:"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],char:"\ud83e\uddfe",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],char:"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],char:"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],char:"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],char:"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],char:"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],char:"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],char:"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],char:"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],char:"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],char:"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],char:"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],char:"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],char:"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],char:"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],char:"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],char:"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],char:"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],char:"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],char:"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],char:"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],char:"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],char:"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],char:"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],char:"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],char:"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],char:"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],char:"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],char:"\ud83e\uddf7",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],char:"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],char:"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],char:"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],char:"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],char:"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],char:"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],char:"\ud83e\uddee",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],char:"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],char:"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],char:"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],char:"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],char:"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],char:"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],char:"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],char:"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],char:"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],char:"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],char:"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],char:"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],char:"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],char:"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],char:"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],char:"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],char:"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],char:"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],char:"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],char:"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],char:"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],char:"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],char:"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],char:"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],char:"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],char:"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],char:"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],char:"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],char:"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],char:"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],char:"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],char:"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],char:"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],char:"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],char:"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],char:"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],char:"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],char:"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],char:"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],char:"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],char:"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],char:"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],char:"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],char:"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],char:"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],char:"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],char:"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],char:"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],char:"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],char:"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],char:"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],char:"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],char:"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],char:"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],char:"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],char:"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],char:"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],char:"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],char:"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],char:"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],char:"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],char:"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],char:"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],char:"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],char:"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],char:"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],char:"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],char:"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],char:"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],char:"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],char:"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],char:"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],char:"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],char:"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],char:"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],char:"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],char:"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],char:"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],char:"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],char:"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],char:"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],char:"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],char:"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],char:"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],char:"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],char:"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],char:"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],char:"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],char:"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],char:"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],char:"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],char:"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],char:"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],char:"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],char:"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],char:"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],char:"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],char:"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],char:"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],char:"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],char:"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],char:"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],char:"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],char:"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],char:"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],char:"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],char:"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],char:"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],char:"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],char:"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],char:"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],char:"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],char:"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],char:"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],char:"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],char:"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],char:"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],char:"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],char:"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],char:"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],char:"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],char:"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],char:"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],char:"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],char:"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],char:"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],char:"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],char:"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],char:"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],char:"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],char:"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],char:"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],char:"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],char:"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],char:"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],char:"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],char:"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],char:"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],char:"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},new:{keywords:["blue-square","words","start"],char:"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],char:"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],char:"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],char:"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],char:"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],char:"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],char:"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],char:"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],char:"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],char:"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],char:"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],char:"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],char:"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],char:"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],char:"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],char:"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],char:"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],char:"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],char:"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],char:"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],char:"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],char:"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],char:"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],char:"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],char:"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],char:"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],char:"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],char:"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],char:"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],char:"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],char:"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],char:"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],char:"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],char:"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],char:"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],char:"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],char:"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],char:"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],char:"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],char:"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],char:"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],char:"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],char:"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],char:"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],char:"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],char:"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],char:"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],char:"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],char:"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],char:"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],char:"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],char:"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],char:"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],char:"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],char:"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],char:"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],char:"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],char:"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],char:"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],char:"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],char:"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],char:"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],char:"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],char:"\u267e",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],char:"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],char:"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],char:"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],char:"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],char:"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],char:"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],char:"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],char:"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],char:"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],char:"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],char:"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],char:"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],char:"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],char:"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],char:"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],char:"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],char:"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],char:"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],char:"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],char:"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],char:"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],char:"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],char:"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],char:"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],char:"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],char:"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],char:"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],char:"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],char:"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],char:"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],char:"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],char:"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],char:"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],char:"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],char:"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],char:"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],char:"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],char:"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],char:"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],char:"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],char:"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],char:"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],char:"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],char:"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],char:"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],char:"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],char:"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],char:"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],char:"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],char:"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],char:"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],char:"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],char:"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],char:"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],char:"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],char:"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],char:"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],char:"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],char:"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],char:"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],char:"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],char:"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],char:"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],char:"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],char:"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],char:"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],char:"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],char:"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],char:"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],char:"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],char:"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],char:"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],char:"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],char:"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],char:"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],char:"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],char:"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],char:"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],char:"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],char:"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],char:"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],char:"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],char:"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],char:"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],char:"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],char:"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],char:"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],char:"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],char:"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],char:"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],char:"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],char:"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],char:"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],char:"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],char:"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],char:"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],char:"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],char:"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],char:"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],char:"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],char:"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],char:"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],char:"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],char:"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],char:"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],char:"\ud83c\uddfa\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],char:"\ud83c\udff4\u200d\u2620\ufe0f",fitzpatrick_scale:!1,category:"flags"}});js/tinymce/plugins/emoticons/js/emojis.js000064400000772345151727150240014577 0ustar00// Source: npm package: emojilib, file:emojis.json
window.tinymce.Resource.add("tinymce.plugins.emoticons", {
  grinning: {
    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
    char: "\ud83d\ude00",
    fitzpatrick_scale: false,
    category: "people"
  },
  grimacing: {
    keywords: [ "face", "grimace", "teeth" ],
    char: "\ud83d\ude2c",
    fitzpatrick_scale: false,
    category: "people"
  },
  grin: {
    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
    char: "\ud83d\ude01",
    fitzpatrick_scale: false,
    category: "people"
  },
  joy: {
    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
    char: "\ud83d\ude02",
    fitzpatrick_scale: false,
    category: "people"
  },
  rofl: {
    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
    char: "\ud83e\udd23",
    fitzpatrick_scale: false,
    category: "people"
  },
  partying: {
    keywords: [ "face", "celebration", "woohoo" ],
    char: "\ud83e\udd73",
    fitzpatrick_scale: false,
    category: "people"
  },
  smiley: {
    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
    char: "\ud83d\ude03",
    fitzpatrick_scale: false,
    category: "people"
  },
  smile: {
    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
    char: "\ud83d\ude04",
    fitzpatrick_scale: false,
    category: "people"
  },
  sweat_smile: {
    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
    char: "\ud83d\ude05",
    fitzpatrick_scale: false,
    category: "people"
  },
  laughing: {
    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
    char: "\ud83d\ude06",
    fitzpatrick_scale: false,
    category: "people"
  },
  innocent: {
    keywords: [ "face", "angel", "heaven", "halo" ],
    char: "\ud83d\ude07",
    fitzpatrick_scale: false,
    category: "people"
  },
  wink: {
    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
    char: "\ud83d\ude09",
    fitzpatrick_scale: false,
    category: "people"
  },
  blush: {
    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
    char: "\ud83d\ude0a",
    fitzpatrick_scale: false,
    category: "people"
  },
  slightly_smiling_face: {
    keywords: [ "face", "smile" ],
    char: "\ud83d\ude42",
    fitzpatrick_scale: false,
    category: "people"
  },
  upside_down_face: {
    keywords: [ "face", "flipped", "silly", "smile" ],
    char: "\ud83d\ude43",
    fitzpatrick_scale: false,
    category: "people"
  },
  relaxed: {
    keywords: [ "face", "blush", "massage", "happiness" ],
    char: "\u263a\ufe0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  yum: {
    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
    char: "\ud83d\ude0b",
    fitzpatrick_scale: false,
    category: "people"
  },
  relieved: {
    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
    char: "\ud83d\ude0c",
    fitzpatrick_scale: false,
    category: "people"
  },
  heart_eyes: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
    char: "\ud83d\ude0d",
    fitzpatrick_scale: false,
    category: "people"
  },
  smiling_face_with_three_hearts: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "hearts", "adore" ],
    char: "\ud83e\udd70",
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_heart: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
    char: "\ud83d\ude18",
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing: {
    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
    char: "\ud83d\ude17",
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_smiling_eyes: {
    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
    char: "\ud83d\ude19",
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_closed_eyes: {
    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
    char: "\ud83d\ude1a",
    fitzpatrick_scale: false,
    category: "people"
  },
  stuck_out_tongue_winking_eye: {
    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
    char: "\ud83d\ude1c",
    fitzpatrick_scale: false,
    category: "people"
  },
  zany: {
    keywords: [ "face", "goofy", "crazy" ],
    char: "\ud83e\udd2a",
    fitzpatrick_scale: false,
    category: "people"
  },
  raised_eyebrow: {
    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
    char: "\ud83e\udd28",
    fitzpatrick_scale: false,
    category: "people"
  },
  monocle: {
    keywords: [ "face", "stuffy", "wealthy" ],
    char: "\ud83e\uddd0",
    fitzpatrick_scale: false,
    category: "people"
  },
  stuck_out_tongue_closed_eyes: {
    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
    char: "\ud83d\ude1d",
    fitzpatrick_scale: false,
    category: "people"
  },
  stuck_out_tongue: {
    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
    char: "\ud83d\ude1b",
    fitzpatrick_scale: false,
    category: "people"
  },
  money_mouth_face: {
    keywords: [ "face", "rich", "dollar", "money" ],
    char: "\ud83e\udd11",
    fitzpatrick_scale: false,
    category: "people"
  },
  nerd_face: {
    keywords: [ "face", "nerdy", "geek", "dork" ],
    char: "\ud83e\udd13",
    fitzpatrick_scale: false,
    category: "people"
  },
  sunglasses: {
    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
    char: "\ud83d\ude0e",
    fitzpatrick_scale: false,
    category: "people"
  },
  star_struck: {
    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
    char: "\ud83e\udd29",
    fitzpatrick_scale: false,
    category: "people"
  },
  clown_face: {
    keywords: [ "face" ],
    char: "\ud83e\udd21",
    fitzpatrick_scale: false,
    category: "people"
  },
  cowboy_hat_face: {
    keywords: [ "face", "cowgirl", "hat" ],
    char: "\ud83e\udd20",
    fitzpatrick_scale: false,
    category: "people"
  },
  hugs: {
    keywords: [ "face", "smile", "hug" ],
    char: "\ud83e\udd17",
    fitzpatrick_scale: false,
    category: "people"
  },
  smirk: {
    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
    char: "\ud83d\ude0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  no_mouth: {
    keywords: [ "face", "hellokitty" ],
    char: "\ud83d\ude36",
    fitzpatrick_scale: false,
    category: "people"
  },
  neutral_face: {
    keywords: [ "indifference", "meh", ":|", "neutral" ],
    char: "\ud83d\ude10",
    fitzpatrick_scale: false,
    category: "people"
  },
  expressionless: {
    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
    char: "\ud83d\ude11",
    fitzpatrick_scale: false,
    category: "people"
  },
  unamused: {
    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
    char: "\ud83d\ude12",
    fitzpatrick_scale: false,
    category: "people"
  },
  roll_eyes: {
    keywords: [ "face", "eyeroll", "frustrated" ],
    char: "\ud83d\ude44",
    fitzpatrick_scale: false,
    category: "people"
  },
  thinking: {
    keywords: [ "face", "hmmm", "think", "consider" ],
    char: "\ud83e\udd14",
    fitzpatrick_scale: false,
    category: "people"
  },
  lying_face: {
    keywords: [ "face", "lie", "pinocchio" ],
    char: "\ud83e\udd25",
    fitzpatrick_scale: false,
    category: "people"
  },
  hand_over_mouth: {
    keywords: [ "face", "whoops", "shock", "surprise" ],
    char: "\ud83e\udd2d",
    fitzpatrick_scale: false,
    category: "people"
  },
  shushing: {
    keywords: [ "face", "quiet", "shhh" ],
    char: "\ud83e\udd2b",
    fitzpatrick_scale: false,
    category: "people"
  },
  symbols_over_mouth: {
    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
    char: "\ud83e\udd2c",
    fitzpatrick_scale: false,
    category: "people"
  },
  exploding_head: {
    keywords: [ "face", "shocked", "mind", "blown" ],
    char: "\ud83e\udd2f",
    fitzpatrick_scale: false,
    category: "people"
  },
  flushed: {
    keywords: [ "face", "blush", "shy", "flattered" ],
    char: "\ud83d\ude33",
    fitzpatrick_scale: false,
    category: "people"
  },
  disappointed: {
    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
    char: "\ud83d\ude1e",
    fitzpatrick_scale: false,
    category: "people"
  },
  worried: {
    keywords: [ "face", "concern", "nervous", ":(" ],
    char: "\ud83d\ude1f",
    fitzpatrick_scale: false,
    category: "people"
  },
  angry: {
    keywords: [ "mad", "face", "annoyed", "frustrated" ],
    char: "\ud83d\ude20",
    fitzpatrick_scale: false,
    category: "people"
  },
  rage: {
    keywords: [ "angry", "mad", "hate", "despise" ],
    char: "\ud83d\ude21",
    fitzpatrick_scale: false,
    category: "people"
  },
  pensive: {
    keywords: [ "face", "sad", "depressed", "upset" ],
    char: "\ud83d\ude14",
    fitzpatrick_scale: false,
    category: "people"
  },
  confused: {
    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
    char: "\ud83d\ude15",
    fitzpatrick_scale: false,
    category: "people"
  },
  slightly_frowning_face: {
    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
    char: "\ud83d\ude41",
    fitzpatrick_scale: false,
    category: "people"
  },
  frowning_face: {
    keywords: [ "face", "sad", "upset", "frown" ],
    char: "\u2639",
    fitzpatrick_scale: false,
    category: "people"
  },
  persevere: {
    keywords: [ "face", "sick", "no", "upset", "oops" ],
    char: "\ud83d\ude23",
    fitzpatrick_scale: false,
    category: "people"
  },
  confounded: {
    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
    char: "\ud83d\ude16",
    fitzpatrick_scale: false,
    category: "people"
  },
  tired_face: {
    keywords: [ "sick", "whine", "upset", "frustrated" ],
    char: "\ud83d\ude2b",
    fitzpatrick_scale: false,
    category: "people"
  },
  weary: {
    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
    char: "\ud83d\ude29",
    fitzpatrick_scale: false,
    category: "people"
  },
  pleading: {
    keywords: [ "face", "begging", "mercy" ],
    char: "\ud83e\udd7a",
    fitzpatrick_scale: false,
    category: "people"
  },
  triumph: {
    keywords: [ "face", "gas", "phew", "proud", "pride" ],
    char: "\ud83d\ude24",
    fitzpatrick_scale: false,
    category: "people"
  },
  open_mouth: {
    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
    char: "\ud83d\ude2e",
    fitzpatrick_scale: false,
    category: "people"
  },
  scream: {
    keywords: [ "face", "munch", "scared", "omg" ],
    char: "\ud83d\ude31",
    fitzpatrick_scale: false,
    category: "people"
  },
  fearful: {
    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
    char: "\ud83d\ude28",
    fitzpatrick_scale: false,
    category: "people"
  },
  cold_sweat: {
    keywords: [ "face", "nervous", "sweat" ],
    char: "\ud83d\ude30",
    fitzpatrick_scale: false,
    category: "people"
  },
  hushed: {
    keywords: [ "face", "woo", "shh" ],
    char: "\ud83d\ude2f",
    fitzpatrick_scale: false,
    category: "people"
  },
  frowning: {
    keywords: [ "face", "aw", "what" ],
    char: "\ud83d\ude26",
    fitzpatrick_scale: false,
    category: "people"
  },
  anguished: {
    keywords: [ "face", "stunned", "nervous" ],
    char: "\ud83d\ude27",
    fitzpatrick_scale: false,
    category: "people"
  },
  cry: {
    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
    char: "\ud83d\ude22",
    fitzpatrick_scale: false,
    category: "people"
  },
  disappointed_relieved: {
    keywords: [ "face", "phew", "sweat", "nervous" ],
    char: "\ud83d\ude25",
    fitzpatrick_scale: false,
    category: "people"
  },
  drooling_face: {
    keywords: [ "face" ],
    char: "\ud83e\udd24",
    fitzpatrick_scale: false,
    category: "people"
  },
  sleepy: {
    keywords: [ "face", "tired", "rest", "nap" ],
    char: "\ud83d\ude2a",
    fitzpatrick_scale: false,
    category: "people"
  },
  sweat: {
    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
    char: "\ud83d\ude13",
    fitzpatrick_scale: false,
    category: "people"
  },
  hot: {
    keywords: [ "face", "feverish", "heat", "red", "sweating" ],
    char: "\ud83e\udd75",
    fitzpatrick_scale: false,
    category: "people"
  },
  cold: {
    keywords: [ "face", "blue", "freezing", "frozen", "frostbite", "icicles" ],
    char: "\ud83e\udd76",
    fitzpatrick_scale: false,
    category: "people"
  },
  sob: {
    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
    char: "\ud83d\ude2d",
    fitzpatrick_scale: false,
    category: "people"
  },
  dizzy_face: {
    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
    char: "\ud83d\ude35",
    fitzpatrick_scale: false,
    category: "people"
  },
  astonished: {
    keywords: [ "face", "xox", "surprised", "poisoned" ],
    char: "\ud83d\ude32",
    fitzpatrick_scale: false,
    category: "people"
  },
  zipper_mouth_face: {
    keywords: [ "face", "sealed", "zipper", "secret" ],
    char: "\ud83e\udd10",
    fitzpatrick_scale: false,
    category: "people"
  },
  nauseated_face: {
    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
    char: "\ud83e\udd22",
    fitzpatrick_scale: false,
    category: "people"
  },
  sneezing_face: {
    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
    char: "\ud83e\udd27",
    fitzpatrick_scale: false,
    category: "people"
  },
  vomiting: {
    keywords: [ "face", "sick" ],
    char: "\ud83e\udd2e",
    fitzpatrick_scale: false,
    category: "people"
  },
  mask: {
    keywords: [ "face", "sick", "ill", "disease" ],
    char: "\ud83d\ude37",
    fitzpatrick_scale: false,
    category: "people"
  },
  face_with_thermometer: {
    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
    char: "\ud83e\udd12",
    fitzpatrick_scale: false,
    category: "people"
  },
  face_with_head_bandage: {
    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
    char: "\ud83e\udd15",
    fitzpatrick_scale: false,
    category: "people"
  },
  woozy: {
    keywords: [ "face", "dizzy", "intoxicated", "tipsy", "wavy" ],
    char: "\ud83e\udd74",
    fitzpatrick_scale: false,
    category: "people"
  },
  sleeping: {
    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
    char: "\ud83d\ude34",
    fitzpatrick_scale: false,
    category: "people"
  },
  zzz: {
    keywords: [ "sleepy", "tired", "dream" ],
    char: "\ud83d\udca4",
    fitzpatrick_scale: false,
    category: "people"
  },
  poop: {
    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
    char: "\ud83d\udca9",
    fitzpatrick_scale: false,
    category: "people"
  },
  smiling_imp: {
    keywords: [ "devil", "horns" ],
    char: "\ud83d\ude08",
    fitzpatrick_scale: false,
    category: "people"
  },
  imp: {
    keywords: [ "devil", "angry", "horns" ],
    char: "\ud83d\udc7f",
    fitzpatrick_scale: false,
    category: "people"
  },
  japanese_ogre: {
    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
    char: "\ud83d\udc79",
    fitzpatrick_scale: false,
    category: "people"
  },
  japanese_goblin: {
    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
    char: "\ud83d\udc7a",
    fitzpatrick_scale: false,
    category: "people"
  },
  skull: {
    keywords: [ "dead", "skeleton", "creepy", "death" ],
    char: "\ud83d\udc80",
    fitzpatrick_scale: false,
    category: "people"
  },
  ghost: {
    keywords: [ "halloween", "spooky", "scary" ],
    char: "\ud83d\udc7b",
    fitzpatrick_scale: false,
    category: "people"
  },
  alien: {
    keywords: [ "UFO", "paul", "weird", "outer_space" ],
    char: "\ud83d\udc7d",
    fitzpatrick_scale: false,
    category: "people"
  },
  robot: {
    keywords: [ "computer", "machine", "bot" ],
    char: "\ud83e\udd16",
    fitzpatrick_scale: false,
    category: "people"
  },
  smiley_cat: {
    keywords: [ "animal", "cats", "happy", "smile" ],
    char: "\ud83d\ude3a",
    fitzpatrick_scale: false,
    category: "people"
  },
  smile_cat: {
    keywords: [ "animal", "cats", "smile" ],
    char: "\ud83d\ude38",
    fitzpatrick_scale: false,
    category: "people"
  },
  joy_cat: {
    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
    char: "\ud83d\ude39",
    fitzpatrick_scale: false,
    category: "people"
  },
  heart_eyes_cat: {
    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
    char: "\ud83d\ude3b",
    fitzpatrick_scale: false,
    category: "people"
  },
  smirk_cat: {
    keywords: [ "animal", "cats", "smirk" ],
    char: "\ud83d\ude3c",
    fitzpatrick_scale: false,
    category: "people"
  },
  kissing_cat: {
    keywords: [ "animal", "cats", "kiss" ],
    char: "\ud83d\ude3d",
    fitzpatrick_scale: false,
    category: "people"
  },
  scream_cat: {
    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
    char: "\ud83d\ude40",
    fitzpatrick_scale: false,
    category: "people"
  },
  crying_cat_face: {
    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
    char: "\ud83d\ude3f",
    fitzpatrick_scale: false,
    category: "people"
  },
  pouting_cat: {
    keywords: [ "animal", "cats" ],
    char: "\ud83d\ude3e",
    fitzpatrick_scale: false,
    category: "people"
  },
  palms_up: {
    keywords: [ "hands", "gesture", "cupped", "prayer" ],
    char: "\ud83e\udd32",
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_hands: {
    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
    char: "\ud83d\ude4c",
    fitzpatrick_scale: true,
    category: "people"
  },
  clap: {
    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
    char: "\ud83d\udc4f",
    fitzpatrick_scale: true,
    category: "people"
  },
  wave: {
    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
    char: "\ud83d\udc4b",
    fitzpatrick_scale: true,
    category: "people"
  },
  call_me_hand: {
    keywords: [ "hands", "gesture" ],
    char: "\ud83e\udd19",
    fitzpatrick_scale: true,
    category: "people"
  },
  "+1": {
    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
    char: "\ud83d\udc4d",
    fitzpatrick_scale: true,
    category: "people"
  },
  "-1": {
    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
    char: "\ud83d\udc4e",
    fitzpatrick_scale: true,
    category: "people"
  },
  facepunch: {
    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
    char: "\ud83d\udc4a",
    fitzpatrick_scale: true,
    category: "people"
  },
  fist: {
    keywords: [ "fingers", "hand", "grasp" ],
    char: "\u270a",
    fitzpatrick_scale: true,
    category: "people"
  },
  fist_left: {
    keywords: [ "hand", "fistbump" ],
    char: "\ud83e\udd1b",
    fitzpatrick_scale: true,
    category: "people"
  },
  fist_right: {
    keywords: [ "hand", "fistbump" ],
    char: "\ud83e\udd1c",
    fitzpatrick_scale: true,
    category: "people"
  },
  v: {
    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
    char: "\u270c",
    fitzpatrick_scale: true,
    category: "people"
  },
  ok_hand: {
    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
    char: "\ud83d\udc4c",
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_hand: {
    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
    char: "\u270b",
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_back_of_hand: {
    keywords: [ "fingers", "raised", "backhand" ],
    char: "\ud83e\udd1a",
    fitzpatrick_scale: true,
    category: "people"
  },
  open_hands: {
    keywords: [ "fingers", "butterfly", "hands", "open" ],
    char: "\ud83d\udc50",
    fitzpatrick_scale: true,
    category: "people"
  },
  muscle: {
    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
    char: "\ud83d\udcaa",
    fitzpatrick_scale: true,
    category: "people"
  },
  pray: {
    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
    char: "\ud83d\ude4f",
    fitzpatrick_scale: true,
    category: "people"
  },
  foot: {
    keywords: [ "kick", "stomp" ],
    char: "\ud83e\uddb6",
    fitzpatrick_scale: true,
    category: "people"
  },
  leg: {
    keywords: [ "kick", "limb" ],
    char: "\ud83e\uddb5",
    fitzpatrick_scale: true,
    category: "people"
  },
  handshake: {
    keywords: [ "agreement", "shake" ],
    char: "\ud83e\udd1d",
    fitzpatrick_scale: false,
    category: "people"
  },
  point_up: {
    keywords: [ "hand", "fingers", "direction", "up" ],
    char: "\u261d",
    fitzpatrick_scale: true,
    category: "people"
  },
  point_up_2: {
    keywords: [ "fingers", "hand", "direction", "up" ],
    char: "\ud83d\udc46",
    fitzpatrick_scale: true,
    category: "people"
  },
  point_down: {
    keywords: [ "fingers", "hand", "direction", "down" ],
    char: "\ud83d\udc47",
    fitzpatrick_scale: true,
    category: "people"
  },
  point_left: {
    keywords: [ "direction", "fingers", "hand", "left" ],
    char: "\ud83d\udc48",
    fitzpatrick_scale: true,
    category: "people"
  },
  point_right: {
    keywords: [ "fingers", "hand", "direction", "right" ],
    char: "\ud83d\udc49",
    fitzpatrick_scale: true,
    category: "people"
  },
  fu: {
    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
    char: "\ud83d\udd95",
    fitzpatrick_scale: true,
    category: "people"
  },
  raised_hand_with_fingers_splayed: {
    keywords: [ "hand", "fingers", "palm" ],
    char: "\ud83d\udd90",
    fitzpatrick_scale: true,
    category: "people"
  },
  love_you: {
    keywords: [ "hand", "fingers", "gesture" ],
    char: "\ud83e\udd1f",
    fitzpatrick_scale: true,
    category: "people"
  },
  metal: {
    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
    char: "\ud83e\udd18",
    fitzpatrick_scale: true,
    category: "people"
  },
  crossed_fingers: {
    keywords: [ "good", "lucky" ],
    char: "\ud83e\udd1e",
    fitzpatrick_scale: true,
    category: "people"
  },
  vulcan_salute: {
    keywords: [ "hand", "fingers", "spock", "star trek" ],
    char: "\ud83d\udd96",
    fitzpatrick_scale: true,
    category: "people"
  },
  writing_hand: {
    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
    char: "\u270d",
    fitzpatrick_scale: true,
    category: "people"
  },
  selfie: {
    keywords: [ "camera", "phone" ],
    char: "\ud83e\udd33",
    fitzpatrick_scale: true,
    category: "people"
  },
  nail_care: {
    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
    char: "\ud83d\udc85",
    fitzpatrick_scale: true,
    category: "people"
  },
  lips: {
    keywords: [ "mouth", "kiss" ],
    char: "\ud83d\udc44",
    fitzpatrick_scale: false,
    category: "people"
  },
  tooth: {
    keywords: [ "teeth", "dentist" ],
    char: "\ud83e\uddb7",
    fitzpatrick_scale: false,
    category: "people"
  },
  tongue: {
    keywords: [ "mouth", "playful" ],
    char: "\ud83d\udc45",
    fitzpatrick_scale: false,
    category: "people"
  },
  ear: {
    keywords: [ "face", "hear", "sound", "listen" ],
    char: "\ud83d\udc42",
    fitzpatrick_scale: true,
    category: "people"
  },
  nose: {
    keywords: [ "smell", "sniff" ],
    char: "\ud83d\udc43",
    fitzpatrick_scale: true,
    category: "people"
  },
  eye: {
    keywords: [ "face", "look", "see", "watch", "stare" ],
    char: "\ud83d\udc41",
    fitzpatrick_scale: false,
    category: "people"
  },
  eyes: {
    keywords: [ "look", "watch", "stalk", "peek", "see" ],
    char: "\ud83d\udc40",
    fitzpatrick_scale: false,
    category: "people"
  },
  brain: {
    keywords: [ "smart", "intelligent" ],
    char: "\ud83e\udde0",
    fitzpatrick_scale: false,
    category: "people"
  },
  bust_in_silhouette: {
    keywords: [ "user", "person", "human" ],
    char: "\ud83d\udc64",
    fitzpatrick_scale: false,
    category: "people"
  },
  busts_in_silhouette: {
    keywords: [ "user", "person", "human", "group", "team" ],
    char: "\ud83d\udc65",
    fitzpatrick_scale: false,
    category: "people"
  },
  speaking_head: {
    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
    char: "\ud83d\udde3",
    fitzpatrick_scale: false,
    category: "people"
  },
  baby: {
    keywords: [ "child", "boy", "girl", "toddler" ],
    char: "\ud83d\udc76",
    fitzpatrick_scale: true,
    category: "people"
  },
  child: {
    keywords: [ "gender-neutral", "young" ],
    char: "\ud83e\uddd2",
    fitzpatrick_scale: true,
    category: "people"
  },
  boy: {
    keywords: [ "man", "male", "guy", "teenager" ],
    char: "\ud83d\udc66",
    fitzpatrick_scale: true,
    category: "people"
  },
  girl: {
    keywords: [ "female", "woman", "teenager" ],
    char: "\ud83d\udc67",
    fitzpatrick_scale: true,
    category: "people"
  },
  adult: {
    keywords: [ "gender-neutral", "person" ],
    char: "\ud83e\uddd1",
    fitzpatrick_scale: true,
    category: "people"
  },
  man: {
    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
    char: "\ud83d\udc68",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman: {
    keywords: [ "female", "girls", "lady" ],
    char: "\ud83d\udc69",
    fitzpatrick_scale: true,
    category: "people"
  },
  blonde_woman: {
    keywords: [ "woman", "female", "girl", "blonde", "person" ],
    char: "\ud83d\udc71\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  blonde_man: {
    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
    char: "\ud83d\udc71",
    fitzpatrick_scale: true,
    category: "people"
  },
  bearded_person: {
    keywords: [ "person", "bewhiskered" ],
    char: "\ud83e\uddd4",
    fitzpatrick_scale: true,
    category: "people"
  },
  older_adult: {
    keywords: [ "human", "elder", "senior", "gender-neutral" ],
    char: "\ud83e\uddd3",
    fitzpatrick_scale: true,
    category: "people"
  },
  older_man: {
    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
    char: "\ud83d\udc74",
    fitzpatrick_scale: true,
    category: "people"
  },
  older_woman: {
    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
    char: "\ud83d\udc75",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_with_gua_pi_mao: {
    keywords: [ "male", "boy", "chinese" ],
    char: "\ud83d\udc72",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_with_headscarf: {
    keywords: [ "female", "hijab", "mantilla", "tichel" ],
    char: "\ud83e\uddd5",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_with_turban: {
    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
    char: "\ud83d\udc73\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_with_turban: {
    keywords: [ "male", "indian", "hinduism", "arabs" ],
    char: "\ud83d\udc73",
    fitzpatrick_scale: true,
    category: "people"
  },
  policewoman: {
    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
    char: "\ud83d\udc6e\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  policeman: {
    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
    char: "\ud83d\udc6e",
    fitzpatrick_scale: true,
    category: "people"
  },
  construction_worker_woman: {
    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
    char: "\ud83d\udc77\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  construction_worker_man: {
    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
    char: "\ud83d\udc77",
    fitzpatrick_scale: true,
    category: "people"
  },
  guardswoman: {
    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
    char: "\ud83d\udc82\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  guardsman: {
    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
    char: "\ud83d\udc82",
    fitzpatrick_scale: true,
    category: "people"
  },
  female_detective: {
    keywords: [ "human", "spy", "detective", "female", "woman" ],
    char: "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  male_detective: {
    keywords: [ "human", "spy", "detective" ],
    char: "\ud83d\udd75",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_health_worker: {
    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
    char: "\ud83d\udc69\u200d\u2695\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_health_worker: {
    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
    char: "\ud83d\udc68\u200d\u2695\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_farmer: {
    keywords: [ "rancher", "gardener", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udf3e",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_farmer: {
    keywords: [ "rancher", "gardener", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udf3e",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_cook: {
    keywords: [ "chef", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udf73",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_cook: {
    keywords: [ "chef", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udf73",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_student: {
    keywords: [ "graduate", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udf93",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_student: {
    keywords: [ "graduate", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udf93",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_singer: {
    keywords: [ "rockstar", "entertainer", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udfa4",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_singer: {
    keywords: [ "rockstar", "entertainer", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udfa4",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_teacher: {
    keywords: [ "instructor", "professor", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udfeb",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_teacher: {
    keywords: [ "instructor", "professor", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udfeb",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_factory_worker: {
    keywords: [ "assembly", "industrial", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udfed",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_factory_worker: {
    keywords: [ "assembly", "industrial", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udfed",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_technologist: {
    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
    char: "\ud83d\udc69\u200d\ud83d\udcbb",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_technologist: {
    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
    char: "\ud83d\udc68\u200d\ud83d\udcbb",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_office_worker: {
    keywords: [ "business", "manager", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83d\udcbc",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_office_worker: {
    keywords: [ "business", "manager", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83d\udcbc",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_mechanic: {
    keywords: [ "plumber", "woman", "human", "wrench" ],
    char: "\ud83d\udc69\u200d\ud83d\udd27",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_mechanic: {
    keywords: [ "plumber", "man", "human", "wrench" ],
    char: "\ud83d\udc68\u200d\ud83d\udd27",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_scientist: {
    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83d\udd2c",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_scientist: {
    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83d\udd2c",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_artist: {
    keywords: [ "painter", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83c\udfa8",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_artist: {
    keywords: [ "painter", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83c\udfa8",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_firefighter: {
    keywords: [ "fireman", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83d\ude92",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_firefighter: {
    keywords: [ "fireman", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83d\ude92",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_pilot: {
    keywords: [ "aviator", "plane", "woman", "human" ],
    char: "\ud83d\udc69\u200d\u2708\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_pilot: {
    keywords: [ "aviator", "plane", "man", "human" ],
    char: "\ud83d\udc68\u200d\u2708\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_astronaut: {
    keywords: [ "space", "rocket", "woman", "human" ],
    char: "\ud83d\udc69\u200d\ud83d\ude80",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_astronaut: {
    keywords: [ "space", "rocket", "man", "human" ],
    char: "\ud83d\udc68\u200d\ud83d\ude80",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_judge: {
    keywords: [ "justice", "court", "woman", "human" ],
    char: "\ud83d\udc69\u200d\u2696\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_judge: {
    keywords: [ "justice", "court", "man", "human" ],
    char: "\ud83d\udc68\u200d\u2696\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_superhero: {
    keywords: [ "woman", "female", "good", "heroine", "superpowers" ],
    char: "\ud83e\uddb8\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_superhero: {
    keywords: [ "man", "male", "good", "hero", "superpowers" ],
    char: "\ud83e\uddb8\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_supervillain: {
    keywords: [ "woman", "female", "evil", "bad", "criminal", "heroine", "superpowers" ],
    char: "\ud83e\uddb9\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_supervillain: {
    keywords: [ "man", "male", "evil", "bad", "criminal", "hero", "superpowers" ],
    char: "\ud83e\uddb9\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  mrs_claus: {
    keywords: [ "woman", "female", "xmas", "mother christmas" ],
    char: "\ud83e\udd36",
    fitzpatrick_scale: true,
    category: "people"
  },
  santa: {
    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
    char: "\ud83c\udf85",
    fitzpatrick_scale: true,
    category: "people"
  },
  sorceress: {
    keywords: [ "woman", "female", "mage", "witch" ],
    char: "\ud83e\uddd9\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  wizard: {
    keywords: [ "man", "male", "mage", "sorcerer" ],
    char: "\ud83e\uddd9\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_elf: {
    keywords: [ "woman", "female" ],
    char: "\ud83e\udddd\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_elf: {
    keywords: [ "man", "male" ],
    char: "\ud83e\udddd\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_vampire: {
    keywords: [ "woman", "female" ],
    char: "\ud83e\udddb\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_vampire: {
    keywords: [ "man", "male", "dracula" ],
    char: "\ud83e\udddb\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_zombie: {
    keywords: [ "woman", "female", "undead", "walking dead" ],
    char: "\ud83e\udddf\u200d\u2640\ufe0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  man_zombie: {
    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
    char: "\ud83e\udddf\u200d\u2642\ufe0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  woman_genie: {
    keywords: [ "woman", "female" ],
    char: "\ud83e\uddde\u200d\u2640\ufe0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  man_genie: {
    keywords: [ "man", "male" ],
    char: "\ud83e\uddde\u200d\u2642\ufe0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  mermaid: {
    keywords: [ "woman", "female", "merwoman", "ariel" ],
    char: "\ud83e\udddc\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  merman: {
    keywords: [ "man", "male", "triton" ],
    char: "\ud83e\udddc\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_fairy: {
    keywords: [ "woman", "female" ],
    char: "\ud83e\uddda\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_fairy: {
    keywords: [ "man", "male" ],
    char: "\ud83e\uddda\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  angel: {
    keywords: [ "heaven", "wings", "halo" ],
    char: "\ud83d\udc7c",
    fitzpatrick_scale: true,
    category: "people"
  },
  pregnant_woman: {
    keywords: [ "baby" ],
    char: "\ud83e\udd30",
    fitzpatrick_scale: true,
    category: "people"
  },
  breastfeeding: {
    keywords: [ "nursing", "baby" ],
    char: "\ud83e\udd31",
    fitzpatrick_scale: true,
    category: "people"
  },
  princess: {
    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
    char: "\ud83d\udc78",
    fitzpatrick_scale: true,
    category: "people"
  },
  prince: {
    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
    char: "\ud83e\udd34",
    fitzpatrick_scale: true,
    category: "people"
  },
  bride_with_veil: {
    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
    char: "\ud83d\udc70",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_in_tuxedo: {
    keywords: [ "couple", "marriage", "wedding", "groom" ],
    char: "\ud83e\udd35",
    fitzpatrick_scale: true,
    category: "people"
  },
  running_woman: {
    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
    char: "\ud83c\udfc3\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  running_man: {
    keywords: [ "man", "walking", "exercise", "race", "running" ],
    char: "\ud83c\udfc3",
    fitzpatrick_scale: true,
    category: "people"
  },
  walking_woman: {
    keywords: [ "human", "feet", "steps", "woman", "female" ],
    char: "\ud83d\udeb6\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  walking_man: {
    keywords: [ "human", "feet", "steps" ],
    char: "\ud83d\udeb6",
    fitzpatrick_scale: true,
    category: "people"
  },
  dancer: {
    keywords: [ "female", "girl", "woman", "fun" ],
    char: "\ud83d\udc83",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_dancing: {
    keywords: [ "male", "boy", "fun", "dancer" ],
    char: "\ud83d\udd7a",
    fitzpatrick_scale: true,
    category: "people"
  },
  dancing_women: {
    keywords: [ "female", "bunny", "women", "girls" ],
    char: "\ud83d\udc6f",
    fitzpatrick_scale: false,
    category: "people"
  },
  dancing_men: {
    keywords: [ "male", "bunny", "men", "boys" ],
    char: "\ud83d\udc6f\u200d\u2642\ufe0f",
    fitzpatrick_scale: false,
    category: "people"
  },
  couple: {
    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
    char: "\ud83d\udc6b",
    fitzpatrick_scale: false,
    category: "people"
  },
  two_men_holding_hands: {
    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
    char: "\ud83d\udc6c",
    fitzpatrick_scale: false,
    category: "people"
  },
  two_women_holding_hands: {
    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
    char: "\ud83d\udc6d",
    fitzpatrick_scale: false,
    category: "people"
  },
  bowing_woman: {
    keywords: [ "woman", "female", "girl" ],
    char: "\ud83d\ude47\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  bowing_man: {
    keywords: [ "man", "male", "boy" ],
    char: "\ud83d\ude47",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_facepalming: {
    keywords: [ "man", "male", "boy", "disbelief" ],
    char: "\ud83e\udd26\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_facepalming: {
    keywords: [ "woman", "female", "girl", "disbelief" ],
    char: "\ud83e\udd26\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_shrugging: {
    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
    char: "\ud83e\udd37",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_shrugging: {
    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
    char: "\ud83e\udd37\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  tipping_hand_woman: {
    keywords: [ "female", "girl", "woman", "human", "information" ],
    char: "\ud83d\udc81",
    fitzpatrick_scale: true,
    category: "people"
  },
  tipping_hand_man: {
    keywords: [ "male", "boy", "man", "human", "information" ],
    char: "\ud83d\udc81\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  no_good_woman: {
    keywords: [ "female", "girl", "woman", "nope" ],
    char: "\ud83d\ude45",
    fitzpatrick_scale: true,
    category: "people"
  },
  no_good_man: {
    keywords: [ "male", "boy", "man", "nope" ],
    char: "\ud83d\ude45\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  ok_woman: {
    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
    char: "\ud83d\ude46",
    fitzpatrick_scale: true,
    category: "people"
  },
  ok_man: {
    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
    char: "\ud83d\ude46\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  raising_hand_woman: {
    keywords: [ "female", "girl", "woman" ],
    char: "\ud83d\ude4b",
    fitzpatrick_scale: true,
    category: "people"
  },
  raising_hand_man: {
    keywords: [ "male", "boy", "man" ],
    char: "\ud83d\ude4b\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  pouting_woman: {
    keywords: [ "female", "girl", "woman" ],
    char: "\ud83d\ude4e",
    fitzpatrick_scale: true,
    category: "people"
  },
  pouting_man: {
    keywords: [ "male", "boy", "man" ],
    char: "\ud83d\ude4e\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  frowning_woman: {
    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
    char: "\ud83d\ude4d",
    fitzpatrick_scale: true,
    category: "people"
  },
  frowning_man: {
    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
    char: "\ud83d\ude4d\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  haircut_woman: {
    keywords: [ "female", "girl", "woman" ],
    char: "\ud83d\udc87",
    fitzpatrick_scale: true,
    category: "people"
  },
  haircut_man: {
    keywords: [ "male", "boy", "man" ],
    char: "\ud83d\udc87\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  massage_woman: {
    keywords: [ "female", "girl", "woman", "head" ],
    char: "\ud83d\udc86",
    fitzpatrick_scale: true,
    category: "people"
  },
  massage_man: {
    keywords: [ "male", "boy", "man", "head" ],
    char: "\ud83d\udc86\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  woman_in_steamy_room: {
    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
    char: "\ud83e\uddd6\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  man_in_steamy_room: {
    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
    char: "\ud83e\uddd6\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "people"
  },
  couple_with_heart_woman_man: {
    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
    char: "\ud83d\udc91",
    fitzpatrick_scale: false,
    category: "people"
  },
  couple_with_heart_woman_woman: {
    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
    char: "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",
    fitzpatrick_scale: false,
    category: "people"
  },
  couple_with_heart_man_man: {
    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
    char: "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",
    fitzpatrick_scale: false,
    category: "people"
  },
  couplekiss_man_woman: {
    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
    char: "\ud83d\udc8f",
    fitzpatrick_scale: false,
    category: "people"
  },
  couplekiss_woman_woman: {
    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
    char: "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",
    fitzpatrick_scale: false,
    category: "people"
  },
  couplekiss_man_man: {
    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
    char: "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_boy: {
    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
    char: "\ud83d\udc6a",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_girl: {
    keywords: [ "home", "parents", "people", "human", "child" ],
    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_girl_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_boy_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_woman_girl_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_girl_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_boy_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_woman_girl_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_girl_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_boy_boy: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_man_girl_girl: {
    keywords: [ "home", "parents", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_boy: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: "\ud83d\udc69\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_girl: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: "\ud83d\udc69\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_girl_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_boy_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_woman_girl_girl: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_boy: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: "\ud83d\udc68\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_girl: {
    keywords: [ "home", "parent", "people", "human", "child" ],
    char: "\ud83d\udc68\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_girl_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_boy_boy: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
    fitzpatrick_scale: false,
    category: "people"
  },
  family_man_girl_girl: {
    keywords: [ "home", "parent", "people", "human", "children" ],
    char: "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
    fitzpatrick_scale: false,
    category: "people"
  },
  yarn: {
    keywords: [ "ball", "crochet", "knit" ],
    char: "\ud83e\uddf6",
    fitzpatrick_scale: false,
    category: "people"
  },
  thread: {
    keywords: [ "needle", "sewing", "spool", "string" ],
    char: "\ud83e\uddf5",
    fitzpatrick_scale: false,
    category: "people"
  },
  coat: {
    keywords: [ "jacket" ],
    char: "\ud83e\udde5",
    fitzpatrick_scale: false,
    category: "people"
  },
  labcoat: {
    keywords: [ "doctor", "experiment", "scientist", "chemist" ],
    char: "\ud83e\udd7c",
    fitzpatrick_scale: false,
    category: "people"
  },
  womans_clothes: {
    keywords: [ "fashion", "shopping_bags", "female" ],
    char: "\ud83d\udc5a",
    fitzpatrick_scale: false,
    category: "people"
  },
  tshirt: {
    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
    char: "\ud83d\udc55",
    fitzpatrick_scale: false,
    category: "people"
  },
  jeans: {
    keywords: [ "fashion", "shopping" ],
    char: "\ud83d\udc56",
    fitzpatrick_scale: false,
    category: "people"
  },
  necktie: {
    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
    char: "\ud83d\udc54",
    fitzpatrick_scale: false,
    category: "people"
  },
  dress: {
    keywords: [ "clothes", "fashion", "shopping" ],
    char: "\ud83d\udc57",
    fitzpatrick_scale: false,
    category: "people"
  },
  bikini: {
    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
    char: "\ud83d\udc59",
    fitzpatrick_scale: false,
    category: "people"
  },
  kimono: {
    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
    char: "\ud83d\udc58",
    fitzpatrick_scale: false,
    category: "people"
  },
  lipstick: {
    keywords: [ "female", "girl", "fashion", "woman" ],
    char: "\ud83d\udc84",
    fitzpatrick_scale: false,
    category: "people"
  },
  kiss: {
    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc8b",
    fitzpatrick_scale: false,
    category: "people"
  },
  footprints: {
    keywords: [ "feet", "tracking", "walking", "beach" ],
    char: "\ud83d\udc63",
    fitzpatrick_scale: false,
    category: "people"
  },
  flat_shoe: {
    keywords: [ "ballet", "slip-on", "slipper" ],
    char: "\ud83e\udd7f",
    fitzpatrick_scale: false,
    category: "people"
  },
  high_heel: {
    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
    char: "\ud83d\udc60",
    fitzpatrick_scale: false,
    category: "people"
  },
  sandal: {
    keywords: [ "shoes", "fashion", "flip flops" ],
    char: "\ud83d\udc61",
    fitzpatrick_scale: false,
    category: "people"
  },
  boot: {
    keywords: [ "shoes", "fashion" ],
    char: "\ud83d\udc62",
    fitzpatrick_scale: false,
    category: "people"
  },
  mans_shoe: {
    keywords: [ "fashion", "male" ],
    char: "\ud83d\udc5e",
    fitzpatrick_scale: false,
    category: "people"
  },
  athletic_shoe: {
    keywords: [ "shoes", "sports", "sneakers" ],
    char: "\ud83d\udc5f",
    fitzpatrick_scale: false,
    category: "people"
  },
  hiking_boot: {
    keywords: [ "backpacking", "camping", "hiking" ],
    char: "\ud83e\udd7e",
    fitzpatrick_scale: false,
    category: "people"
  },
  socks: {
    keywords: [ "stockings", "clothes" ],
    char: "\ud83e\udde6",
    fitzpatrick_scale: false,
    category: "people"
  },
  gloves: {
    keywords: [ "hands", "winter", "clothes" ],
    char: "\ud83e\udde4",
    fitzpatrick_scale: false,
    category: "people"
  },
  scarf: {
    keywords: [ "neck", "winter", "clothes" ],
    char: "\ud83e\udde3",
    fitzpatrick_scale: false,
    category: "people"
  },
  womans_hat: {
    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
    char: "\ud83d\udc52",
    fitzpatrick_scale: false,
    category: "people"
  },
  tophat: {
    keywords: [ "magic", "gentleman", "classy", "circus" ],
    char: "\ud83c\udfa9",
    fitzpatrick_scale: false,
    category: "people"
  },
  billed_hat: {
    keywords: [ "cap", "baseball" ],
    char: "\ud83e\udde2",
    fitzpatrick_scale: false,
    category: "people"
  },
  rescue_worker_helmet: {
    keywords: [ "construction", "build" ],
    char: "\u26d1",
    fitzpatrick_scale: false,
    category: "people"
  },
  mortar_board: {
    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
    char: "\ud83c\udf93",
    fitzpatrick_scale: false,
    category: "people"
  },
  crown: {
    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
    char: "\ud83d\udc51",
    fitzpatrick_scale: false,
    category: "people"
  },
  school_satchel: {
    keywords: [ "student", "education", "bag", "backpack" ],
    char: "\ud83c\udf92",
    fitzpatrick_scale: false,
    category: "people"
  },
  luggage: {
    keywords: [ "packing", "travel" ],
    char: "\ud83e\uddf3",
    fitzpatrick_scale: false,
    category: "people"
  },
  pouch: {
    keywords: [ "bag", "accessories", "shopping" ],
    char: "\ud83d\udc5d",
    fitzpatrick_scale: false,
    category: "people"
  },
  purse: {
    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
    char: "\ud83d\udc5b",
    fitzpatrick_scale: false,
    category: "people"
  },
  handbag: {
    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
    char: "\ud83d\udc5c",
    fitzpatrick_scale: false,
    category: "people"
  },
  briefcase: {
    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
    char: "\ud83d\udcbc",
    fitzpatrick_scale: false,
    category: "people"
  },
  eyeglasses: {
    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
    char: "\ud83d\udc53",
    fitzpatrick_scale: false,
    category: "people"
  },
  dark_sunglasses: {
    keywords: [ "face", "cool", "accessories" ],
    char: "\ud83d\udd76",
    fitzpatrick_scale: false,
    category: "people"
  },
  goggles: {
    keywords: [ "eyes", "protection", "safety" ],
    char: "\ud83e\udd7d",
    fitzpatrick_scale: false,
    category: "people"
  },
  ring: {
    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
    char: "\ud83d\udc8d",
    fitzpatrick_scale: false,
    category: "people"
  },
  closed_umbrella: {
    keywords: [ "weather", "rain", "drizzle" ],
    char: "\ud83c\udf02",
    fitzpatrick_scale: false,
    category: "people"
  },
  dog: {
    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
    char: "\ud83d\udc36",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cat: {
    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
    char: "\ud83d\udc31",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mouse: {
    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
    char: "\ud83d\udc2d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hamster: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc39",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rabbit: {
    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
    char: "\ud83d\udc30",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fox_face: {
    keywords: [ "animal", "nature", "face" ],
    char: "\ud83e\udd8a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bear: {
    keywords: [ "animal", "nature", "wild" ],
    char: "\ud83d\udc3b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  panda_face: {
    keywords: [ "animal", "nature", "panda" ],
    char: "\ud83d\udc3c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  koala: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc28",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tiger: {
    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
    char: "\ud83d\udc2f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  lion: {
    keywords: [ "animal", "nature" ],
    char: "\ud83e\udd81",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cow: {
    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
    char: "\ud83d\udc2e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  pig: {
    keywords: [ "animal", "oink", "nature" ],
    char: "\ud83d\udc37",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  pig_nose: {
    keywords: [ "animal", "oink" ],
    char: "\ud83d\udc3d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  frog: {
    keywords: [ "animal", "nature", "croak", "toad" ],
    char: "\ud83d\udc38",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  squid: {
    keywords: [ "animal", "nature", "ocean", "sea" ],
    char: "\ud83e\udd91",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  octopus: {
    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
    char: "\ud83d\udc19",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shrimp: {
    keywords: [ "animal", "ocean", "nature", "seafood" ],
    char: "\ud83e\udd90",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  monkey_face: {
    keywords: [ "animal", "nature", "circus" ],
    char: "\ud83d\udc35",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  gorilla: {
    keywords: [ "animal", "nature", "circus" ],
    char: "\ud83e\udd8d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  see_no_evil: {
    keywords: [ "monkey", "animal", "nature", "haha" ],
    char: "\ud83d\ude48",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hear_no_evil: {
    keywords: [ "animal", "monkey", "nature" ],
    char: "\ud83d\ude49",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  speak_no_evil: {
    keywords: [ "monkey", "animal", "nature", "omg" ],
    char: "\ud83d\ude4a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  monkey: {
    keywords: [ "animal", "nature", "banana", "circus" ],
    char: "\ud83d\udc12",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  chicken: {
    keywords: [ "animal", "cluck", "nature", "bird" ],
    char: "\ud83d\udc14",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  penguin: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc27",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bird: {
    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
    char: "\ud83d\udc26",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  baby_chick: {
    keywords: [ "animal", "chicken", "bird" ],
    char: "\ud83d\udc24",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hatching_chick: {
    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
    char: "\ud83d\udc23",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hatched_chick: {
    keywords: [ "animal", "chicken", "baby", "bird" ],
    char: "\ud83d\udc25",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  duck: {
    keywords: [ "animal", "nature", "bird", "mallard" ],
    char: "\ud83e\udd86",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  eagle: {
    keywords: [ "animal", "nature", "bird" ],
    char: "\ud83e\udd85",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  owl: {
    keywords: [ "animal", "nature", "bird", "hoot" ],
    char: "\ud83e\udd89",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bat: {
    keywords: [ "animal", "nature", "blind", "vampire" ],
    char: "\ud83e\udd87",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  wolf: {
    keywords: [ "animal", "nature", "wild" ],
    char: "\ud83d\udc3a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  boar: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc17",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  horse: {
    keywords: [ "animal", "brown", "nature" ],
    char: "\ud83d\udc34",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  unicorn: {
    keywords: [ "animal", "nature", "mystical" ],
    char: "\ud83e\udd84",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  honeybee: {
    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
    char: "\ud83d\udc1d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bug: {
    keywords: [ "animal", "insect", "nature", "worm" ],
    char: "\ud83d\udc1b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  butterfly: {
    keywords: [ "animal", "insect", "nature", "caterpillar" ],
    char: "\ud83e\udd8b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snail: {
    keywords: [ "slow", "animal", "shell" ],
    char: "\ud83d\udc0c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  beetle: {
    keywords: [ "animal", "insect", "nature", "ladybug" ],
    char: "\ud83d\udc1e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ant: {
    keywords: [ "animal", "insect", "nature", "bug" ],
    char: "\ud83d\udc1c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  grasshopper: {
    keywords: [ "animal", "cricket", "chirp" ],
    char: "\ud83e\udd97",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  spider: {
    keywords: [ "animal", "arachnid" ],
    char: "\ud83d\udd77",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  scorpion: {
    keywords: [ "animal", "arachnid" ],
    char: "\ud83e\udd82",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  crab: {
    keywords: [ "animal", "crustacean" ],
    char: "\ud83e\udd80",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snake: {
    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
    char: "\ud83d\udc0d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  lizard: {
    keywords: [ "animal", "nature", "reptile" ],
    char: "\ud83e\udd8e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  "t-rex": {
    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
    char: "\ud83e\udd96",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sauropod: {
    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
    char: "\ud83e\udd95",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  turtle: {
    keywords: [ "animal", "slow", "nature", "tortoise" ],
    char: "\ud83d\udc22",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tropical_fish: {
    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
    char: "\ud83d\udc20",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fish: {
    keywords: [ "animal", "food", "nature" ],
    char: "\ud83d\udc1f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  blowfish: {
    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
    char: "\ud83d\udc21",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dolphin: {
    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
    char: "\ud83d\udc2c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shark: {
    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
    char: "\ud83e\udd88",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  whale: {
    keywords: [ "animal", "nature", "sea", "ocean" ],
    char: "\ud83d\udc33",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  whale2: {
    keywords: [ "animal", "nature", "sea", "ocean" ],
    char: "\ud83d\udc0b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  crocodile: {
    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
    char: "\ud83d\udc0a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  leopard: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc06",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  zebra: {
    keywords: [ "animal", "nature", "stripes", "safari" ],
    char: "\ud83e\udd93",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tiger2: {
    keywords: [ "animal", "nature", "roar" ],
    char: "\ud83d\udc05",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  water_buffalo: {
    keywords: [ "animal", "nature", "ox", "cow" ],
    char: "\ud83d\udc03",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ox: {
    keywords: [ "animal", "cow", "beef" ],
    char: "\ud83d\udc02",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cow2: {
    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
    char: "\ud83d\udc04",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  deer: {
    keywords: [ "animal", "nature", "horns", "venison" ],
    char: "\ud83e\udd8c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dromedary_camel: {
    keywords: [ "animal", "hot", "desert", "hump" ],
    char: "\ud83d\udc2a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  camel: {
    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
    char: "\ud83d\udc2b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  giraffe: {
    keywords: [ "animal", "nature", "spots", "safari" ],
    char: "\ud83e\udd92",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  elephant: {
    keywords: [ "animal", "nature", "nose", "th", "circus" ],
    char: "\ud83d\udc18",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rhinoceros: {
    keywords: [ "animal", "nature", "horn" ],
    char: "\ud83e\udd8f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  goat: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc10",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ram: {
    keywords: [ "animal", "sheep", "nature" ],
    char: "\ud83d\udc0f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sheep: {
    keywords: [ "animal", "nature", "wool", "shipit" ],
    char: "\ud83d\udc11",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  racehorse: {
    keywords: [ "animal", "gamble", "luck" ],
    char: "\ud83d\udc0e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  pig2: {
    keywords: [ "animal", "nature" ],
    char: "\ud83d\udc16",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rat: {
    keywords: [ "animal", "mouse", "rodent" ],
    char: "\ud83d\udc00",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mouse2: {
    keywords: [ "animal", "nature", "rodent" ],
    char: "\ud83d\udc01",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rooster: {
    keywords: [ "animal", "nature", "chicken" ],
    char: "\ud83d\udc13",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  turkey: {
    keywords: [ "animal", "bird" ],
    char: "\ud83e\udd83",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dove: {
    keywords: [ "animal", "bird" ],
    char: "\ud83d\udd4a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dog2: {
    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
    char: "\ud83d\udc15",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  poodle: {
    keywords: [ "dog", "animal", "101", "nature", "pet" ],
    char: "\ud83d\udc29",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cat2: {
    keywords: [ "animal", "meow", "pet", "cats" ],
    char: "\ud83d\udc08",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rabbit2: {
    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
    char: "\ud83d\udc07",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  chipmunk: {
    keywords: [ "animal", "nature", "rodent", "squirrel" ],
    char: "\ud83d\udc3f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hedgehog: {
    keywords: [ "animal", "nature", "spiny" ],
    char: "\ud83e\udd94",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  raccoon: {
    keywords: [ "animal", "nature" ],
    char: "\ud83e\udd9d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  llama: {
    keywords: [ "animal", "nature", "alpaca" ],
    char: "\ud83e\udd99",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hippopotamus: {
    keywords: [ "animal", "nature" ],
    char: "\ud83e\udd9b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  kangaroo: {
    keywords: [ "animal", "nature", "australia", "joey", "hop", "marsupial" ],
    char: "\ud83e\udd98",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  badger: {
    keywords: [ "animal", "nature", "honey" ],
    char: "\ud83e\udda1",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  swan: {
    keywords: [ "animal", "nature", "bird" ],
    char: "\ud83e\udda2",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  peacock: {
    keywords: [ "animal", "nature", "peahen", "bird" ],
    char: "\ud83e\udd9a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  parrot: {
    keywords: [ "animal", "nature", "bird", "pirate", "talk" ],
    char: "\ud83e\udd9c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  lobster: {
    keywords: [ "animal", "nature", "bisque", "claws", "seafood" ],
    char: "\ud83e\udd9e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mosquito: {
    keywords: [ "animal", "nature", "insect", "malaria" ],
    char: "\ud83e\udd9f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  paw_prints: {
    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
    char: "\ud83d\udc3e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dragon: {
    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
    char: "\ud83d\udc09",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dragon_face: {
    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
    char: "\ud83d\udc32",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cactus: {
    keywords: [ "vegetable", "plant", "nature" ],
    char: "\ud83c\udf35",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  christmas_tree: {
    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
    char: "\ud83c\udf84",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  evergreen_tree: {
    keywords: [ "plant", "nature" ],
    char: "\ud83c\udf32",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  deciduous_tree: {
    keywords: [ "plant", "nature" ],
    char: "\ud83c\udf33",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  palm_tree: {
    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
    char: "\ud83c\udf34",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  seedling: {
    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
    char: "\ud83c\udf31",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  herb: {
    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
    char: "\ud83c\udf3f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shamrock: {
    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
    char: "\u2618",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  four_leaf_clover: {
    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
    char: "\ud83c\udf40",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bamboo: {
    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
    char: "\ud83c\udf8d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tanabata_tree: {
    keywords: [ "plant", "nature", "branch", "summer" ],
    char: "\ud83c\udf8b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  leaves: {
    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
    char: "\ud83c\udf43",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fallen_leaf: {
    keywords: [ "nature", "plant", "vegetable", "leaves" ],
    char: "\ud83c\udf42",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  maple_leaf: {
    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
    char: "\ud83c\udf41",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ear_of_rice: {
    keywords: [ "nature", "plant" ],
    char: "\ud83c\udf3e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  hibiscus: {
    keywords: [ "plant", "vegetable", "flowers", "beach" ],
    char: "\ud83c\udf3a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sunflower: {
    keywords: [ "nature", "plant", "fall" ],
    char: "\ud83c\udf3b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  rose: {
    keywords: [ "flowers", "valentines", "love", "spring" ],
    char: "\ud83c\udf39",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  wilted_flower: {
    keywords: [ "plant", "nature", "flower" ],
    char: "\ud83e\udd40",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tulip: {
    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
    char: "\ud83c\udf37",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  blossom: {
    keywords: [ "nature", "flowers", "yellow" ],
    char: "\ud83c\udf3c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cherry_blossom: {
    keywords: [ "nature", "plant", "spring", "flower" ],
    char: "\ud83c\udf38",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  bouquet: {
    keywords: [ "flowers", "nature", "spring" ],
    char: "\ud83d\udc90",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  mushroom: {
    keywords: [ "plant", "vegetable" ],
    char: "\ud83c\udf44",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  chestnut: {
    keywords: [ "food", "squirrel" ],
    char: "\ud83c\udf30",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  jack_o_lantern: {
    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
    char: "\ud83c\udf83",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  shell: {
    keywords: [ "nature", "sea", "beach" ],
    char: "\ud83d\udc1a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  spider_web: {
    keywords: [ "animal", "insect", "arachnid", "silk" ],
    char: "\ud83d\udd78",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  earth_americas: {
    keywords: [ "globe", "world", "USA", "international" ],
    char: "\ud83c\udf0e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  earth_africa: {
    keywords: [ "globe", "world", "international" ],
    char: "\ud83c\udf0d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  earth_asia: {
    keywords: [ "globe", "world", "east", "international" ],
    char: "\ud83c\udf0f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  full_moon: {
    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf15",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waning_gibbous_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
    char: "\ud83c\udf16",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  last_quarter_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf17",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waning_crescent_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf18",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  new_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf11",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waxing_crescent_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf12",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  first_quarter_moon: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf13",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  waxing_gibbous_moon: {
    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
    char: "\ud83c\udf14",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  new_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf1a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  full_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf1d",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  first_quarter_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf1b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  last_quarter_moon_with_face: {
    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
    char: "\ud83c\udf1c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_with_face: {
    keywords: [ "nature", "morning", "sky" ],
    char: "\ud83c\udf1e",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  crescent_moon: {
    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
    char: "\ud83c\udf19",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  star: {
    keywords: [ "night", "yellow" ],
    char: "\u2b50",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  star2: {
    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
    char: "\ud83c\udf1f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dizzy: {
    keywords: [ "star", "sparkle", "shoot", "magic" ],
    char: "\ud83d\udcab",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sparkles: {
    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
    char: "\u2728",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  comet: {
    keywords: [ "space" ],
    char: "\u2604",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sunny: {
    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
    char: "\u2600\ufe0f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_behind_small_cloud: {
    keywords: [ "weather" ],
    char: "\ud83c\udf24",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  partly_sunny: {
    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
    char: "\u26c5",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_behind_large_cloud: {
    keywords: [ "weather" ],
    char: "\ud83c\udf25",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sun_behind_rain_cloud: {
    keywords: [ "weather" ],
    char: "\ud83c\udf26",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud: {
    keywords: [ "weather", "sky" ],
    char: "\u2601\ufe0f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_rain: {
    keywords: [ "weather" ],
    char: "\ud83c\udf27",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_lightning_and_rain: {
    keywords: [ "weather", "lightning" ],
    char: "\u26c8",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_lightning: {
    keywords: [ "weather", "thunder" ],
    char: "\ud83c\udf29",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  zap: {
    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
    char: "\u26a1",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fire: {
    keywords: [ "hot", "cook", "flame" ],
    char: "\ud83d\udd25",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  boom: {
    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
    char: "\ud83d\udca5",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snowflake: {
    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
    char: "\u2744\ufe0f",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  cloud_with_snow: {
    keywords: [ "weather" ],
    char: "\ud83c\udf28",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snowman: {
    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
    char: "\u26c4",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  snowman_with_snow: {
    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
    char: "\u2603",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  wind_face: {
    keywords: [ "gust", "air" ],
    char: "\ud83c\udf2c",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  dash: {
    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
    char: "\ud83d\udca8",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  tornado: {
    keywords: [ "weather", "cyclone", "twister" ],
    char: "\ud83c\udf2a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  fog: {
    keywords: [ "weather" ],
    char: "\ud83c\udf2b",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  open_umbrella: {
    keywords: [ "weather", "spring" ],
    char: "\u2602",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  umbrella: {
    keywords: [ "rainy", "weather", "spring" ],
    char: "\u2614",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  droplet: {
    keywords: [ "water", "drip", "faucet", "spring" ],
    char: "\ud83d\udca7",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  sweat_drops: {
    keywords: [ "water", "drip", "oops" ],
    char: "\ud83d\udca6",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  ocean: {
    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
    char: "\ud83c\udf0a",
    fitzpatrick_scale: false,
    category: "animals_and_nature"
  },
  green_apple: {
    keywords: [ "fruit", "nature" ],
    char: "\ud83c\udf4f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  apple: {
    keywords: [ "fruit", "mac", "school" ],
    char: "\ud83c\udf4e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pear: {
    keywords: [ "fruit", "nature", "food" ],
    char: "\ud83c\udf50",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tangerine: {
    keywords: [ "food", "fruit", "nature", "orange" ],
    char: "\ud83c\udf4a",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  lemon: {
    keywords: [ "fruit", "nature" ],
    char: "\ud83c\udf4b",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  banana: {
    keywords: [ "fruit", "food", "monkey" ],
    char: "\ud83c\udf4c",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  watermelon: {
    keywords: [ "fruit", "food", "picnic", "summer" ],
    char: "\ud83c\udf49",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  grapes: {
    keywords: [ "fruit", "food", "wine" ],
    char: "\ud83c\udf47",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  strawberry: {
    keywords: [ "fruit", "food", "nature" ],
    char: "\ud83c\udf53",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  melon: {
    keywords: [ "fruit", "nature", "food" ],
    char: "\ud83c\udf48",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cherries: {
    keywords: [ "food", "fruit" ],
    char: "\ud83c\udf52",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  peach: {
    keywords: [ "fruit", "nature", "food" ],
    char: "\ud83c\udf51",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pineapple: {
    keywords: [ "fruit", "nature", "food" ],
    char: "\ud83c\udf4d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  coconut: {
    keywords: [ "fruit", "nature", "food", "palm" ],
    char: "\ud83e\udd65",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  kiwi_fruit: {
    keywords: [ "fruit", "food" ],
    char: "\ud83e\udd5d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  mango: {
    keywords: [ "fruit", "food", "tropical" ],
    char: "\ud83e\udd6d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  avocado: {
    keywords: [ "fruit", "food" ],
    char: "\ud83e\udd51",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  broccoli: {
    keywords: [ "fruit", "food", "vegetable" ],
    char: "\ud83e\udd66",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tomato: {
    keywords: [ "fruit", "vegetable", "nature", "food" ],
    char: "\ud83c\udf45",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  eggplant: {
    keywords: [ "vegetable", "nature", "food", "aubergine" ],
    char: "\ud83c\udf46",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cucumber: {
    keywords: [ "fruit", "food", "pickle" ],
    char: "\ud83e\udd52",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  carrot: {
    keywords: [ "vegetable", "food", "orange" ],
    char: "\ud83e\udd55",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  hot_pepper: {
    keywords: [ "food", "spicy", "chilli", "chili" ],
    char: "\ud83c\udf36",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  potato: {
    keywords: [ "food", "tuber", "vegatable", "starch" ],
    char: "\ud83e\udd54",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  corn: {
    keywords: [ "food", "vegetable", "plant" ],
    char: "\ud83c\udf3d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  leafy_greens: {
    keywords: [ "food", "vegetable", "plant", "bok choy", "cabbage", "kale", "lettuce" ],
    char: "\ud83e\udd6c",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sweet_potato: {
    keywords: [ "food", "nature" ],
    char: "\ud83c\udf60",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  peanuts: {
    keywords: [ "food", "nut" ],
    char: "\ud83e\udd5c",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  honey_pot: {
    keywords: [ "bees", "sweet", "kitchen" ],
    char: "\ud83c\udf6f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  croissant: {
    keywords: [ "food", "bread", "french" ],
    char: "\ud83e\udd50",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bread: {
    keywords: [ "food", "wheat", "breakfast", "toast" ],
    char: "\ud83c\udf5e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  baguette_bread: {
    keywords: [ "food", "bread", "french" ],
    char: "\ud83e\udd56",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bagel: {
    keywords: [ "food", "bread", "bakery", "schmear" ],
    char: "\ud83e\udd6f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pretzel: {
    keywords: [ "food", "bread", "twisted" ],
    char: "\ud83e\udd68",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cheese: {
    keywords: [ "food", "chadder" ],
    char: "\ud83e\uddc0",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  egg: {
    keywords: [ "food", "chicken", "breakfast" ],
    char: "\ud83e\udd5a",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bacon: {
    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
    char: "\ud83e\udd53",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  steak: {
    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
    char: "\ud83e\udd69",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pancakes: {
    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
    char: "\ud83e\udd5e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  poultry_leg: {
    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
    char: "\ud83c\udf57",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  meat_on_bone: {
    keywords: [ "good", "food", "drumstick" ],
    char: "\ud83c\udf56",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bone: {
    keywords: [ "skeleton" ],
    char: "\ud83e\uddb4",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fried_shrimp: {
    keywords: [ "food", "animal", "appetizer", "summer" ],
    char: "\ud83c\udf64",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fried_egg: {
    keywords: [ "food", "breakfast", "kitchen", "egg" ],
    char: "\ud83c\udf73",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  hamburger: {
    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
    char: "\ud83c\udf54",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fries: {
    keywords: [ "chips", "snack", "fast food" ],
    char: "\ud83c\udf5f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  stuffed_flatbread: {
    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
    char: "\ud83e\udd59",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  hotdog: {
    keywords: [ "food", "frankfurter" ],
    char: "\ud83c\udf2d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pizza: {
    keywords: [ "food", "party" ],
    char: "\ud83c\udf55",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sandwich: {
    keywords: [ "food", "lunch", "bread" ],
    char: "\ud83e\udd6a",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  canned_food: {
    keywords: [ "food", "soup" ],
    char: "\ud83e\udd6b",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  spaghetti: {
    keywords: [ "food", "italian", "noodle" ],
    char: "\ud83c\udf5d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  taco: {
    keywords: [ "food", "mexican" ],
    char: "\ud83c\udf2e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  burrito: {
    keywords: [ "food", "mexican" ],
    char: "\ud83c\udf2f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  green_salad: {
    keywords: [ "food", "healthy", "lettuce" ],
    char: "\ud83e\udd57",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  shallow_pan_of_food: {
    keywords: [ "food", "cooking", "casserole", "paella" ],
    char: "\ud83e\udd58",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  ramen: {
    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
    char: "\ud83c\udf5c",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  stew: {
    keywords: [ "food", "meat", "soup" ],
    char: "\ud83c\udf72",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fish_cake: {
    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
    char: "\ud83c\udf65",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fortune_cookie: {
    keywords: [ "food", "prophecy" ],
    char: "\ud83e\udd60",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sushi: {
    keywords: [ "food", "fish", "japanese", "rice" ],
    char: "\ud83c\udf63",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bento: {
    keywords: [ "food", "japanese", "box" ],
    char: "\ud83c\udf71",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  curry: {
    keywords: [ "food", "spicy", "hot", "indian" ],
    char: "\ud83c\udf5b",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  rice_ball: {
    keywords: [ "food", "japanese" ],
    char: "\ud83c\udf59",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  rice: {
    keywords: [ "food", "china", "asian" ],
    char: "\ud83c\udf5a",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  rice_cracker: {
    keywords: [ "food", "japanese" ],
    char: "\ud83c\udf58",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  oden: {
    keywords: [ "food", "japanese" ],
    char: "\ud83c\udf62",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  dango: {
    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
    char: "\ud83c\udf61",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  shaved_ice: {
    keywords: [ "hot", "dessert", "summer" ],
    char: "\ud83c\udf67",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  ice_cream: {
    keywords: [ "food", "hot", "dessert" ],
    char: "\ud83c\udf68",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  icecream: {
    keywords: [ "food", "hot", "dessert", "summer" ],
    char: "\ud83c\udf66",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  pie: {
    keywords: [ "food", "dessert", "pastry" ],
    char: "\ud83e\udd67",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cake: {
    keywords: [ "food", "dessert" ],
    char: "\ud83c\udf70",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cupcake: {
    keywords: [ "food", "dessert", "bakery", "sweet" ],
    char: "\ud83e\uddc1",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  moon_cake: {
    keywords: [ "food", "autumn" ],
    char: "\ud83e\udd6e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  birthday: {
    keywords: [ "food", "dessert", "cake" ],
    char: "\ud83c\udf82",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  custard: {
    keywords: [ "dessert", "food" ],
    char: "\ud83c\udf6e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  candy: {
    keywords: [ "snack", "dessert", "sweet", "lolly" ],
    char: "\ud83c\udf6c",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  lollipop: {
    keywords: [ "food", "snack", "candy", "sweet" ],
    char: "\ud83c\udf6d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  chocolate_bar: {
    keywords: [ "food", "snack", "dessert", "sweet" ],
    char: "\ud83c\udf6b",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  popcorn: {
    keywords: [ "food", "movie theater", "films", "snack" ],
    char: "\ud83c\udf7f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  dumpling: {
    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
    char: "\ud83e\udd5f",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  doughnut: {
    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
    char: "\ud83c\udf69",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cookie: {
    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
    char: "\ud83c\udf6a",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  milk_glass: {
    keywords: [ "beverage", "drink", "cow" ],
    char: "\ud83e\udd5b",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  beer: {
    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
    char: "\ud83c\udf7a",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  beers: {
    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
    char: "\ud83c\udf7b",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  clinking_glasses: {
    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
    char: "\ud83e\udd42",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  wine_glass: {
    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
    char: "\ud83c\udf77",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tumbler_glass: {
    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
    char: "\ud83e\udd43",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cocktail: {
    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
    char: "\ud83c\udf78",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tropical_drink: {
    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
    char: "\ud83c\udf79",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  champagne: {
    keywords: [ "drink", "wine", "bottle", "celebration" ],
    char: "\ud83c\udf7e",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  sake: {
    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
    char: "\ud83c\udf76",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  tea: {
    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
    char: "\ud83c\udf75",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  cup_with_straw: {
    keywords: [ "drink", "soda" ],
    char: "\ud83e\udd64",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  coffee: {
    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
    char: "\u2615",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  baby_bottle: {
    keywords: [ "food", "container", "milk" ],
    char: "\ud83c\udf7c",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  salt: {
    keywords: [ "condiment", "shaker" ],
    char: "\ud83e\uddc2",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  spoon: {
    keywords: [ "cutlery", "kitchen", "tableware" ],
    char: "\ud83e\udd44",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  fork_and_knife: {
    keywords: [ "cutlery", "kitchen" ],
    char: "\ud83c\udf74",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  plate_with_cutlery: {
    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
    char: "\ud83c\udf7d",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  bowl_with_spoon: {
    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
    char: "\ud83e\udd63",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  takeout_box: {
    keywords: [ "food", "leftovers" ],
    char: "\ud83e\udd61",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  chopsticks: {
    keywords: [ "food" ],
    char: "\ud83e\udd62",
    fitzpatrick_scale: false,
    category: "food_and_drink"
  },
  soccer: {
    keywords: [ "sports", "football" ],
    char: "\u26bd",
    fitzpatrick_scale: false,
    category: "activity"
  },
  basketball: {
    keywords: [ "sports", "balls", "NBA" ],
    char: "\ud83c\udfc0",
    fitzpatrick_scale: false,
    category: "activity"
  },
  football: {
    keywords: [ "sports", "balls", "NFL" ],
    char: "\ud83c\udfc8",
    fitzpatrick_scale: false,
    category: "activity"
  },
  baseball: {
    keywords: [ "sports", "balls" ],
    char: "\u26be",
    fitzpatrick_scale: false,
    category: "activity"
  },
  softball: {
    keywords: [ "sports", "balls" ],
    char: "\ud83e\udd4e",
    fitzpatrick_scale: false,
    category: "activity"
  },
  tennis: {
    keywords: [ "sports", "balls", "green" ],
    char: "\ud83c\udfbe",
    fitzpatrick_scale: false,
    category: "activity"
  },
  volleyball: {
    keywords: [ "sports", "balls" ],
    char: "\ud83c\udfd0",
    fitzpatrick_scale: false,
    category: "activity"
  },
  rugby_football: {
    keywords: [ "sports", "team" ],
    char: "\ud83c\udfc9",
    fitzpatrick_scale: false,
    category: "activity"
  },
  flying_disc: {
    keywords: [ "sports", "frisbee", "ultimate" ],
    char: "\ud83e\udd4f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  "8ball": {
    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
    char: "\ud83c\udfb1",
    fitzpatrick_scale: false,
    category: "activity"
  },
  golf: {
    keywords: [ "sports", "business", "flag", "hole", "summer" ],
    char: "\u26f3",
    fitzpatrick_scale: false,
    category: "activity"
  },
  golfing_woman: {
    keywords: [ "sports", "business", "woman", "female" ],
    char: "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  golfing_man: {
    keywords: [ "sports", "business" ],
    char: "\ud83c\udfcc",
    fitzpatrick_scale: true,
    category: "activity"
  },
  ping_pong: {
    keywords: [ "sports", "pingpong" ],
    char: "\ud83c\udfd3",
    fitzpatrick_scale: false,
    category: "activity"
  },
  badminton: {
    keywords: [ "sports" ],
    char: "\ud83c\udff8",
    fitzpatrick_scale: false,
    category: "activity"
  },
  goal_net: {
    keywords: [ "sports" ],
    char: "\ud83e\udd45",
    fitzpatrick_scale: false,
    category: "activity"
  },
  ice_hockey: {
    keywords: [ "sports" ],
    char: "\ud83c\udfd2",
    fitzpatrick_scale: false,
    category: "activity"
  },
  field_hockey: {
    keywords: [ "sports" ],
    char: "\ud83c\udfd1",
    fitzpatrick_scale: false,
    category: "activity"
  },
  lacrosse: {
    keywords: [ "sports", "ball", "stick" ],
    char: "\ud83e\udd4d",
    fitzpatrick_scale: false,
    category: "activity"
  },
  cricket: {
    keywords: [ "sports" ],
    char: "\ud83c\udfcf",
    fitzpatrick_scale: false,
    category: "activity"
  },
  ski: {
    keywords: [ "sports", "winter", "cold", "snow" ],
    char: "\ud83c\udfbf",
    fitzpatrick_scale: false,
    category: "activity"
  },
  skier: {
    keywords: [ "sports", "winter", "snow" ],
    char: "\u26f7",
    fitzpatrick_scale: false,
    category: "activity"
  },
  snowboarder: {
    keywords: [ "sports", "winter" ],
    char: "\ud83c\udfc2",
    fitzpatrick_scale: true,
    category: "activity"
  },
  person_fencing: {
    keywords: [ "sports", "fencing", "sword" ],
    char: "\ud83e\udd3a",
    fitzpatrick_scale: false,
    category: "activity"
  },
  women_wrestling: {
    keywords: [ "sports", "wrestlers" ],
    char: "\ud83e\udd3c\u200d\u2640\ufe0f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  men_wrestling: {
    keywords: [ "sports", "wrestlers" ],
    char: "\ud83e\udd3c\u200d\u2642\ufe0f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  woman_cartwheeling: {
    keywords: [ "gymnastics" ],
    char: "\ud83e\udd38\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_cartwheeling: {
    keywords: [ "gymnastics" ],
    char: "\ud83e\udd38\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  woman_playing_handball: {
    keywords: [ "sports" ],
    char: "\ud83e\udd3e\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_playing_handball: {
    keywords: [ "sports" ],
    char: "\ud83e\udd3e\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  ice_skate: {
    keywords: [ "sports" ],
    char: "\u26f8",
    fitzpatrick_scale: false,
    category: "activity"
  },
  curling_stone: {
    keywords: [ "sports" ],
    char: "\ud83e\udd4c",
    fitzpatrick_scale: false,
    category: "activity"
  },
  skateboard: {
    keywords: [ "board" ],
    char: "\ud83d\udef9",
    fitzpatrick_scale: false,
    category: "activity"
  },
  sled: {
    keywords: [ "sleigh", "luge", "toboggan" ],
    char: "\ud83d\udef7",
    fitzpatrick_scale: false,
    category: "activity"
  },
  bow_and_arrow: {
    keywords: [ "sports" ],
    char: "\ud83c\udff9",
    fitzpatrick_scale: false,
    category: "activity"
  },
  fishing_pole_and_fish: {
    keywords: [ "food", "hobby", "summer" ],
    char: "\ud83c\udfa3",
    fitzpatrick_scale: false,
    category: "activity"
  },
  boxing_glove: {
    keywords: [ "sports", "fighting" ],
    char: "\ud83e\udd4a",
    fitzpatrick_scale: false,
    category: "activity"
  },
  martial_arts_uniform: {
    keywords: [ "judo", "karate", "taekwondo" ],
    char: "\ud83e\udd4b",
    fitzpatrick_scale: false,
    category: "activity"
  },
  rowing_woman: {
    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
    char: "\ud83d\udea3\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  rowing_man: {
    keywords: [ "sports", "hobby", "water", "ship" ],
    char: "\ud83d\udea3",
    fitzpatrick_scale: true,
    category: "activity"
  },
  climbing_woman: {
    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
    char: "\ud83e\uddd7\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  climbing_man: {
    keywords: [ "sports", "hobby", "man", "male", "rock" ],
    char: "\ud83e\uddd7\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  swimming_woman: {
    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
    char: "\ud83c\udfca\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  swimming_man: {
    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
    char: "\ud83c\udfca",
    fitzpatrick_scale: true,
    category: "activity"
  },
  woman_playing_water_polo: {
    keywords: [ "sports", "pool" ],
    char: "\ud83e\udd3d\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_playing_water_polo: {
    keywords: [ "sports", "pool" ],
    char: "\ud83e\udd3d\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  woman_in_lotus_position: {
    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
    char: "\ud83e\uddd8\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_in_lotus_position: {
    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
    char: "\ud83e\uddd8\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  surfing_woman: {
    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
    char: "\ud83c\udfc4\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  surfing_man: {
    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
    char: "\ud83c\udfc4",
    fitzpatrick_scale: true,
    category: "activity"
  },
  bath: {
    keywords: [ "clean", "shower", "bathroom" ],
    char: "\ud83d\udec0",
    fitzpatrick_scale: true,
    category: "activity"
  },
  basketball_woman: {
    keywords: [ "sports", "human", "woman", "female" ],
    char: "\u26f9\ufe0f\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  basketball_man: {
    keywords: [ "sports", "human" ],
    char: "\u26f9",
    fitzpatrick_scale: true,
    category: "activity"
  },
  weight_lifting_woman: {
    keywords: [ "sports", "training", "exercise", "woman", "female" ],
    char: "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  weight_lifting_man: {
    keywords: [ "sports", "training", "exercise" ],
    char: "\ud83c\udfcb",
    fitzpatrick_scale: true,
    category: "activity"
  },
  biking_woman: {
    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
    char: "\ud83d\udeb4\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  biking_man: {
    keywords: [ "sports", "bike", "exercise", "hipster" ],
    char: "\ud83d\udeb4",
    fitzpatrick_scale: true,
    category: "activity"
  },
  mountain_biking_woman: {
    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
    char: "\ud83d\udeb5\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  mountain_biking_man: {
    keywords: [ "transportation", "sports", "human", "race", "bike" ],
    char: "\ud83d\udeb5",
    fitzpatrick_scale: true,
    category: "activity"
  },
  horse_racing: {
    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
    char: "\ud83c\udfc7",
    fitzpatrick_scale: true,
    category: "activity"
  },
  business_suit_levitating: {
    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
    char: "\ud83d\udd74",
    fitzpatrick_scale: true,
    category: "activity"
  },
  trophy: {
    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
    char: "\ud83c\udfc6",
    fitzpatrick_scale: false,
    category: "activity"
  },
  running_shirt_with_sash: {
    keywords: [ "play", "pageant" ],
    char: "\ud83c\udfbd",
    fitzpatrick_scale: false,
    category: "activity"
  },
  medal_sports: {
    keywords: [ "award", "winning" ],
    char: "\ud83c\udfc5",
    fitzpatrick_scale: false,
    category: "activity"
  },
  medal_military: {
    keywords: [ "award", "winning", "army" ],
    char: "\ud83c\udf96",
    fitzpatrick_scale: false,
    category: "activity"
  },
  "1st_place_medal": {
    keywords: [ "award", "winning", "first" ],
    char: "\ud83e\udd47",
    fitzpatrick_scale: false,
    category: "activity"
  },
  "2nd_place_medal": {
    keywords: [ "award", "second" ],
    char: "\ud83e\udd48",
    fitzpatrick_scale: false,
    category: "activity"
  },
  "3rd_place_medal": {
    keywords: [ "award", "third" ],
    char: "\ud83e\udd49",
    fitzpatrick_scale: false,
    category: "activity"
  },
  reminder_ribbon: {
    keywords: [ "sports", "cause", "support", "awareness" ],
    char: "\ud83c\udf97",
    fitzpatrick_scale: false,
    category: "activity"
  },
  rosette: {
    keywords: [ "flower", "decoration", "military" ],
    char: "\ud83c\udff5",
    fitzpatrick_scale: false,
    category: "activity"
  },
  ticket: {
    keywords: [ "event", "concert", "pass" ],
    char: "\ud83c\udfab",
    fitzpatrick_scale: false,
    category: "activity"
  },
  tickets: {
    keywords: [ "sports", "concert", "entrance" ],
    char: "\ud83c\udf9f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  performing_arts: {
    keywords: [ "acting", "theater", "drama" ],
    char: "\ud83c\udfad",
    fitzpatrick_scale: false,
    category: "activity"
  },
  art: {
    keywords: [ "design", "paint", "draw", "colors" ],
    char: "\ud83c\udfa8",
    fitzpatrick_scale: false,
    category: "activity"
  },
  circus_tent: {
    keywords: [ "festival", "carnival", "party" ],
    char: "\ud83c\udfaa",
    fitzpatrick_scale: false,
    category: "activity"
  },
  woman_juggling: {
    keywords: [ "juggle", "balance", "skill", "multitask" ],
    char: "\ud83e\udd39\u200d\u2640\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  man_juggling: {
    keywords: [ "juggle", "balance", "skill", "multitask" ],
    char: "\ud83e\udd39\u200d\u2642\ufe0f",
    fitzpatrick_scale: true,
    category: "activity"
  },
  microphone: {
    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
    char: "\ud83c\udfa4",
    fitzpatrick_scale: false,
    category: "activity"
  },
  headphones: {
    keywords: [ "music", "score", "gadgets" ],
    char: "\ud83c\udfa7",
    fitzpatrick_scale: false,
    category: "activity"
  },
  musical_score: {
    keywords: [ "treble", "clef", "compose" ],
    char: "\ud83c\udfbc",
    fitzpatrick_scale: false,
    category: "activity"
  },
  musical_keyboard: {
    keywords: [ "piano", "instrument", "compose" ],
    char: "\ud83c\udfb9",
    fitzpatrick_scale: false,
    category: "activity"
  },
  drum: {
    keywords: [ "music", "instrument", "drumsticks", "snare" ],
    char: "\ud83e\udd41",
    fitzpatrick_scale: false,
    category: "activity"
  },
  saxophone: {
    keywords: [ "music", "instrument", "jazz", "blues" ],
    char: "\ud83c\udfb7",
    fitzpatrick_scale: false,
    category: "activity"
  },
  trumpet: {
    keywords: [ "music", "brass" ],
    char: "\ud83c\udfba",
    fitzpatrick_scale: false,
    category: "activity"
  },
  guitar: {
    keywords: [ "music", "instrument" ],
    char: "\ud83c\udfb8",
    fitzpatrick_scale: false,
    category: "activity"
  },
  violin: {
    keywords: [ "music", "instrument", "orchestra", "symphony" ],
    char: "\ud83c\udfbb",
    fitzpatrick_scale: false,
    category: "activity"
  },
  clapper: {
    keywords: [ "movie", "film", "record" ],
    char: "\ud83c\udfac",
    fitzpatrick_scale: false,
    category: "activity"
  },
  video_game: {
    keywords: [ "play", "console", "PS4", "controller" ],
    char: "\ud83c\udfae",
    fitzpatrick_scale: false,
    category: "activity"
  },
  space_invader: {
    keywords: [ "game", "arcade", "play" ],
    char: "\ud83d\udc7e",
    fitzpatrick_scale: false,
    category: "activity"
  },
  dart: {
    keywords: [ "game", "play", "bar", "target", "bullseye" ],
    char: "\ud83c\udfaf",
    fitzpatrick_scale: false,
    category: "activity"
  },
  game_die: {
    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
    char: "\ud83c\udfb2",
    fitzpatrick_scale: false,
    category: "activity"
  },
  chess_pawn: {
    keywords: [ "expendable" ],
    char: "\u265f",
    fitzpatrick_scale: false,
    category: "activity"
  },
  slot_machine: {
    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
    char: "\ud83c\udfb0",
    fitzpatrick_scale: false,
    category: "activity"
  },
  jigsaw: {
    keywords: [ "interlocking", "puzzle", "piece" ],
    char: "\ud83e\udde9",
    fitzpatrick_scale: false,
    category: "activity"
  },
  bowling: {
    keywords: [ "sports", "fun", "play" ],
    char: "\ud83c\udfb3",
    fitzpatrick_scale: false,
    category: "activity"
  },
  red_car: {
    keywords: [ "red", "transportation", "vehicle" ],
    char: "\ud83d\ude97",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  taxi: {
    keywords: [ "uber", "vehicle", "cars", "transportation" ],
    char: "\ud83d\ude95",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  blue_car: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude99",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bus: {
    keywords: [ "car", "vehicle", "transportation" ],
    char: "\ud83d\ude8c",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  trolleybus: {
    keywords: [ "bart", "transportation", "vehicle" ],
    char: "\ud83d\ude8e",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  racing_car: {
    keywords: [ "sports", "race", "fast", "formula", "f1" ],
    char: "\ud83c\udfce",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  police_car: {
    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
    char: "\ud83d\ude93",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ambulance: {
    keywords: [ "health", "911", "hospital" ],
    char: "\ud83d\ude91",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fire_engine: {
    keywords: [ "transportation", "cars", "vehicle" ],
    char: "\ud83d\ude92",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  minibus: {
    keywords: [ "vehicle", "car", "transportation" ],
    char: "\ud83d\ude90",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  truck: {
    keywords: [ "cars", "transportation" ],
    char: "\ud83d\ude9a",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  articulated_lorry: {
    keywords: [ "vehicle", "cars", "transportation", "express" ],
    char: "\ud83d\ude9b",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tractor: {
    keywords: [ "vehicle", "car", "farming", "agriculture" ],
    char: "\ud83d\ude9c",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  kick_scooter: {
    keywords: [ "vehicle", "kick", "razor" ],
    char: "\ud83d\udef4",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motorcycle: {
    keywords: [ "race", "sports", "fast" ],
    char: "\ud83c\udfcd",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bike: {
    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
    char: "\ud83d\udeb2",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motor_scooter: {
    keywords: [ "vehicle", "vespa", "sasha" ],
    char: "\ud83d\udef5",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rotating_light: {
    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
    char: "\ud83d\udea8",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_police_car: {
    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
    char: "\ud83d\ude94",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_bus: {
    keywords: [ "vehicle", "transportation" ],
    char: "\ud83d\ude8d",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_automobile: {
    keywords: [ "car", "vehicle", "transportation" ],
    char: "\ud83d\ude98",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  oncoming_taxi: {
    keywords: [ "vehicle", "cars", "uber" ],
    char: "\ud83d\ude96",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  aerial_tramway: {
    keywords: [ "transportation", "vehicle", "ski" ],
    char: "\ud83d\udea1",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain_cableway: {
    keywords: [ "transportation", "vehicle", "ski" ],
    char: "\ud83d\udea0",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  suspension_railway: {
    keywords: [ "vehicle", "transportation" ],
    char: "\ud83d\ude9f",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  railway_car: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude83",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  train: {
    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
    char: "\ud83d\ude8b",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  monorail: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude9d",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bullettrain_side: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude84",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bullettrain_front: {
    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
    char: "\ud83d\ude85",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  light_rail: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude88",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain_railway: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude9e",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  steam_locomotive: {
    keywords: [ "transportation", "vehicle", "train" ],
    char: "\ud83d\ude82",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  train2: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude86",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  metro: {
    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
    char: "\ud83d\ude87",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tram: {
    keywords: [ "transportation", "vehicle" ],
    char: "\ud83d\ude8a",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  station: {
    keywords: [ "transportation", "vehicle", "public" ],
    char: "\ud83d\ude89",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  flying_saucer: {
    keywords: [ "transportation", "vehicle", "ufo" ],
    char: "\ud83d\udef8",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  helicopter: {
    keywords: [ "transportation", "vehicle", "fly" ],
    char: "\ud83d\ude81",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  small_airplane: {
    keywords: [ "flight", "transportation", "fly", "vehicle" ],
    char: "\ud83d\udee9",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  airplane: {
    keywords: [ "vehicle", "transportation", "flight", "fly" ],
    char: "\u2708\ufe0f",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  flight_departure: {
    keywords: [ "airport", "flight", "landing" ],
    char: "\ud83d\udeeb",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  flight_arrival: {
    keywords: [ "airport", "flight", "boarding" ],
    char: "\ud83d\udeec",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sailboat: {
    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
    char: "\u26f5",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motor_boat: {
    keywords: [ "ship" ],
    char: "\ud83d\udee5",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  speedboat: {
    keywords: [ "ship", "transportation", "vehicle", "summer" ],
    char: "\ud83d\udea4",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ferry: {
    keywords: [ "boat", "ship", "yacht" ],
    char: "\u26f4",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  passenger_ship: {
    keywords: [ "yacht", "cruise", "ferry" ],
    char: "\ud83d\udef3",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rocket: {
    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
    char: "\ud83d\ude80",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  artificial_satellite: {
    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
    char: "\ud83d\udef0",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  seat: {
    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
    char: "\ud83d\udcba",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  canoe: {
    keywords: [ "boat", "paddle", "water", "ship" ],
    char: "\ud83d\udef6",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  anchor: {
    keywords: [ "ship", "ferry", "sea", "boat" ],
    char: "\u2693",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  construction: {
    keywords: [ "wip", "progress", "caution", "warning" ],
    char: "\ud83d\udea7",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fuelpump: {
    keywords: [ "gas station", "petroleum" ],
    char: "\u26fd",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  busstop: {
    keywords: [ "transportation", "wait" ],
    char: "\ud83d\ude8f",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  vertical_traffic_light: {
    keywords: [ "transportation", "driving" ],
    char: "\ud83d\udea6",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  traffic_light: {
    keywords: [ "transportation", "signal" ],
    char: "\ud83d\udea5",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  checkered_flag: {
    keywords: [ "contest", "finishline", "race", "gokart" ],
    char: "\ud83c\udfc1",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ship: {
    keywords: [ "transportation", "titanic", "deploy" ],
    char: "\ud83d\udea2",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  ferris_wheel: {
    keywords: [ "photo", "carnival", "londoneye" ],
    char: "\ud83c\udfa1",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  roller_coaster: {
    keywords: [ "carnival", "playground", "photo", "fun" ],
    char: "\ud83c\udfa2",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  carousel_horse: {
    keywords: [ "photo", "carnival" ],
    char: "\ud83c\udfa0",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  building_construction: {
    keywords: [ "wip", "working", "progress" ],
    char: "\ud83c\udfd7",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  foggy: {
    keywords: [ "photo", "mountain" ],
    char: "\ud83c\udf01",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tokyo_tower: {
    keywords: [ "photo", "japanese" ],
    char: "\ud83d\uddfc",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  factory: {
    keywords: [ "building", "industry", "pollution", "smoke" ],
    char: "\ud83c\udfed",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fountain: {
    keywords: [ "photo", "summer", "water", "fresh" ],
    char: "\u26f2",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rice_scene: {
    keywords: [ "photo", "japan", "asia", "tsukimi" ],
    char: "\ud83c\udf91",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain: {
    keywords: [ "photo", "nature", "environment" ],
    char: "\u26f0",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mountain_snow: {
    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
    char: "\ud83c\udfd4",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mount_fuji: {
    keywords: [ "photo", "mountain", "nature", "japanese" ],
    char: "\ud83d\uddfb",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  volcano: {
    keywords: [ "photo", "nature", "disaster" ],
    char: "\ud83c\udf0b",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  japan: {
    keywords: [ "nation", "country", "japanese", "asia" ],
    char: "\ud83d\uddfe",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  camping: {
    keywords: [ "photo", "outdoors", "tent" ],
    char: "\ud83c\udfd5",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  tent: {
    keywords: [ "photo", "camping", "outdoors" ],
    char: "\u26fa",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  national_park: {
    keywords: [ "photo", "environment", "nature" ],
    char: "\ud83c\udfde",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  motorway: {
    keywords: [ "road", "cupertino", "interstate", "highway" ],
    char: "\ud83d\udee3",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  railway_track: {
    keywords: [ "train", "transportation" ],
    char: "\ud83d\udee4",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sunrise: {
    keywords: [ "morning", "view", "vacation", "photo" ],
    char: "\ud83c\udf05",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sunrise_over_mountains: {
    keywords: [ "view", "vacation", "photo" ],
    char: "\ud83c\udf04",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  desert: {
    keywords: [ "photo", "warm", "saharah" ],
    char: "\ud83c\udfdc",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  beach_umbrella: {
    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
    char: "\ud83c\udfd6",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  desert_island: {
    keywords: [ "photo", "tropical", "mojito" ],
    char: "\ud83c\udfdd",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  city_sunrise: {
    keywords: [ "photo", "good morning", "dawn" ],
    char: "\ud83c\udf07",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  city_sunset: {
    keywords: [ "photo", "evening", "sky", "buildings" ],
    char: "\ud83c\udf06",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  cityscape: {
    keywords: [ "photo", "night life", "urban" ],
    char: "\ud83c\udfd9",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  night_with_stars: {
    keywords: [ "evening", "city", "downtown" ],
    char: "\ud83c\udf03",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bridge_at_night: {
    keywords: [ "photo", "sanfrancisco" ],
    char: "\ud83c\udf09",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  milky_way: {
    keywords: [ "photo", "space", "stars" ],
    char: "\ud83c\udf0c",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  stars: {
    keywords: [ "night", "photo" ],
    char: "\ud83c\udf20",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  sparkler: {
    keywords: [ "stars", "night", "shine" ],
    char: "\ud83c\udf87",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  fireworks: {
    keywords: [ "photo", "festival", "carnival", "congratulations" ],
    char: "\ud83c\udf86",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  rainbow: {
    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
    char: "\ud83c\udf08",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  houses: {
    keywords: [ "buildings", "photo" ],
    char: "\ud83c\udfd8",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  european_castle: {
    keywords: [ "building", "royalty", "history" ],
    char: "\ud83c\udff0",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  japanese_castle: {
    keywords: [ "photo", "building" ],
    char: "\ud83c\udfef",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  stadium: {
    keywords: [ "photo", "place", "sports", "concert", "venue" ],
    char: "\ud83c\udfdf",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  statue_of_liberty: {
    keywords: [ "american", "newyork" ],
    char: "\ud83d\uddfd",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  house: {
    keywords: [ "building", "home" ],
    char: "\ud83c\udfe0",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  house_with_garden: {
    keywords: [ "home", "plant", "nature" ],
    char: "\ud83c\udfe1",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  derelict_house: {
    keywords: [ "abandon", "evict", "broken", "building" ],
    char: "\ud83c\udfda",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  office: {
    keywords: [ "building", "bureau", "work" ],
    char: "\ud83c\udfe2",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  department_store: {
    keywords: [ "building", "shopping", "mall" ],
    char: "\ud83c\udfec",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  post_office: {
    keywords: [ "building", "envelope", "communication" ],
    char: "\ud83c\udfe3",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  european_post_office: {
    keywords: [ "building", "email" ],
    char: "\ud83c\udfe4",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  hospital: {
    keywords: [ "building", "health", "surgery", "doctor" ],
    char: "\ud83c\udfe5",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  bank: {
    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
    char: "\ud83c\udfe6",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  hotel: {
    keywords: [ "building", "accomodation", "checkin" ],
    char: "\ud83c\udfe8",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  convenience_store: {
    keywords: [ "building", "shopping", "groceries" ],
    char: "\ud83c\udfea",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  school: {
    keywords: [ "building", "student", "education", "learn", "teach" ],
    char: "\ud83c\udfeb",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  love_hotel: {
    keywords: [ "like", "affection", "dating" ],
    char: "\ud83c\udfe9",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  wedding: {
    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
    char: "\ud83d\udc92",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  classical_building: {
    keywords: [ "art", "culture", "history" ],
    char: "\ud83c\udfdb",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  church: {
    keywords: [ "building", "religion", "christ" ],
    char: "\u26ea",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  mosque: {
    keywords: [ "islam", "worship", "minaret" ],
    char: "\ud83d\udd4c",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  synagogue: {
    keywords: [ "judaism", "worship", "temple", "jewish" ],
    char: "\ud83d\udd4d",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  kaaba: {
    keywords: [ "mecca", "mosque", "islam" ],
    char: "\ud83d\udd4b",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  shinto_shrine: {
    keywords: [ "temple", "japan", "kyoto" ],
    char: "\u26e9",
    fitzpatrick_scale: false,
    category: "travel_and_places"
  },
  watch: {
    keywords: [ "time", "accessories" ],
    char: "\u231a",
    fitzpatrick_scale: false,
    category: "objects"
  },
  iphone: {
    keywords: [ "technology", "apple", "gadgets", "dial" ],
    char: "\ud83d\udcf1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  calling: {
    keywords: [ "iphone", "incoming" ],
    char: "\ud83d\udcf2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  computer: {
    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
    char: "\ud83d\udcbb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  keyboard: {
    keywords: [ "technology", "computer", "type", "input", "text" ],
    char: "\u2328",
    fitzpatrick_scale: false,
    category: "objects"
  },
  desktop_computer: {
    keywords: [ "technology", "computing", "screen" ],
    char: "\ud83d\udda5",
    fitzpatrick_scale: false,
    category: "objects"
  },
  printer: {
    keywords: [ "paper", "ink" ],
    char: "\ud83d\udda8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  computer_mouse: {
    keywords: [ "click" ],
    char: "\ud83d\uddb1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  trackball: {
    keywords: [ "technology", "trackpad" ],
    char: "\ud83d\uddb2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  joystick: {
    keywords: [ "game", "play" ],
    char: "\ud83d\udd79",
    fitzpatrick_scale: false,
    category: "objects"
  },
  clamp: {
    keywords: [ "tool" ],
    char: "\ud83d\udddc",
    fitzpatrick_scale: false,
    category: "objects"
  },
  minidisc: {
    keywords: [ "technology", "record", "data", "disk", "90s" ],
    char: "\ud83d\udcbd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  floppy_disk: {
    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
    char: "\ud83d\udcbe",
    fitzpatrick_scale: false,
    category: "objects"
  },
  cd: {
    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
    char: "\ud83d\udcbf",
    fitzpatrick_scale: false,
    category: "objects"
  },
  dvd: {
    keywords: [ "cd", "disk", "disc" ],
    char: "\ud83d\udcc0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  vhs: {
    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
    char: "\ud83d\udcfc",
    fitzpatrick_scale: false,
    category: "objects"
  },
  camera: {
    keywords: [ "gadgets", "photography" ],
    char: "\ud83d\udcf7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  camera_flash: {
    keywords: [ "photography", "gadgets" ],
    char: "\ud83d\udcf8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  video_camera: {
    keywords: [ "film", "record" ],
    char: "\ud83d\udcf9",
    fitzpatrick_scale: false,
    category: "objects"
  },
  movie_camera: {
    keywords: [ "film", "record" ],
    char: "\ud83c\udfa5",
    fitzpatrick_scale: false,
    category: "objects"
  },
  film_projector: {
    keywords: [ "video", "tape", "record", "movie" ],
    char: "\ud83d\udcfd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  film_strip: {
    keywords: [ "movie" ],
    char: "\ud83c\udf9e",
    fitzpatrick_scale: false,
    category: "objects"
  },
  telephone_receiver: {
    keywords: [ "technology", "communication", "dial" ],
    char: "\ud83d\udcde",
    fitzpatrick_scale: false,
    category: "objects"
  },
  phone: {
    keywords: [ "technology", "communication", "dial", "telephone" ],
    char: "\u260e\ufe0f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pager: {
    keywords: [ "bbcall", "oldschool", "90s" ],
    char: "\ud83d\udcdf",
    fitzpatrick_scale: false,
    category: "objects"
  },
  fax: {
    keywords: [ "communication", "technology" ],
    char: "\ud83d\udce0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  tv: {
    keywords: [ "technology", "program", "oldschool", "show", "television" ],
    char: "\ud83d\udcfa",
    fitzpatrick_scale: false,
    category: "objects"
  },
  radio: {
    keywords: [ "communication", "music", "podcast", "program" ],
    char: "\ud83d\udcfb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  studio_microphone: {
    keywords: [ "sing", "recording", "artist", "talkshow" ],
    char: "\ud83c\udf99",
    fitzpatrick_scale: false,
    category: "objects"
  },
  level_slider: {
    keywords: [ "scale" ],
    char: "\ud83c\udf9a",
    fitzpatrick_scale: false,
    category: "objects"
  },
  control_knobs: {
    keywords: [ "dial" ],
    char: "\ud83c\udf9b",
    fitzpatrick_scale: false,
    category: "objects"
  },
  compass: {
    keywords: [ "magnetic", "navigation", "orienteering" ],
    char: "\ud83e\udded",
    fitzpatrick_scale: false,
    category: "objects"
  },
  stopwatch: {
    keywords: [ "time", "deadline" ],
    char: "\u23f1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  timer_clock: {
    keywords: [ "alarm" ],
    char: "\u23f2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  alarm_clock: {
    keywords: [ "time", "wake" ],
    char: "\u23f0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mantelpiece_clock: {
    keywords: [ "time" ],
    char: "\ud83d\udd70",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hourglass_flowing_sand: {
    keywords: [ "oldschool", "time", "countdown" ],
    char: "\u23f3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hourglass: {
    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
    char: "\u231b",
    fitzpatrick_scale: false,
    category: "objects"
  },
  satellite: {
    keywords: [ "communication", "future", "radio", "space" ],
    char: "\ud83d\udce1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  battery: {
    keywords: [ "power", "energy", "sustain" ],
    char: "\ud83d\udd0b",
    fitzpatrick_scale: false,
    category: "objects"
  },
  electric_plug: {
    keywords: [ "charger", "power" ],
    char: "\ud83d\udd0c",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bulb: {
    keywords: [ "light", "electricity", "idea" ],
    char: "\ud83d\udca1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  flashlight: {
    keywords: [ "dark", "camping", "sight", "night" ],
    char: "\ud83d\udd26",
    fitzpatrick_scale: false,
    category: "objects"
  },
  candle: {
    keywords: [ "fire", "wax" ],
    char: "\ud83d\udd6f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  fire_extinguisher: {
    keywords: [ "quench" ],
    char: "\ud83e\uddef",
    fitzpatrick_scale: false,
    category: "objects"
  },
  wastebasket: {
    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
    char: "\ud83d\uddd1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  oil_drum: {
    keywords: [ "barrell" ],
    char: "\ud83d\udee2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  money_with_wings: {
    keywords: [ "dollar", "bills", "payment", "sale" ],
    char: "\ud83d\udcb8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  dollar: {
    keywords: [ "money", "sales", "bill", "currency" ],
    char: "\ud83d\udcb5",
    fitzpatrick_scale: false,
    category: "objects"
  },
  yen: {
    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
    char: "\ud83d\udcb4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  euro: {
    keywords: [ "money", "sales", "dollar", "currency" ],
    char: "\ud83d\udcb6",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pound: {
    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
    char: "\ud83d\udcb7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  moneybag: {
    keywords: [ "dollar", "payment", "coins", "sale" ],
    char: "\ud83d\udcb0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  credit_card: {
    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
    char: "\ud83d\udcb3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  gem: {
    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
    char: "\ud83d\udc8e",
    fitzpatrick_scale: false,
    category: "objects"
  },
  balance_scale: {
    keywords: [ "law", "fairness", "weight" ],
    char: "\u2696",
    fitzpatrick_scale: false,
    category: "objects"
  },
  toolbox: {
    keywords: [ "tools", "diy", "fix", "maintainer", "mechanic" ],
    char: "\ud83e\uddf0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  wrench: {
    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
    char: "\ud83d\udd27",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hammer: {
    keywords: [ "tools", "build", "create" ],
    char: "\ud83d\udd28",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hammer_and_pick: {
    keywords: [ "tools", "build", "create" ],
    char: "\u2692",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hammer_and_wrench: {
    keywords: [ "tools", "build", "create" ],
    char: "\ud83d\udee0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pick: {
    keywords: [ "tools", "dig" ],
    char: "\u26cf",
    fitzpatrick_scale: false,
    category: "objects"
  },
  nut_and_bolt: {
    keywords: [ "handy", "tools", "fix" ],
    char: "\ud83d\udd29",
    fitzpatrick_scale: false,
    category: "objects"
  },
  gear: {
    keywords: [ "cog" ],
    char: "\u2699",
    fitzpatrick_scale: false,
    category: "objects"
  },
  brick: {
    keywords: [ "bricks" ],
    char: "\ud83e\uddf1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  chains: {
    keywords: [ "lock", "arrest" ],
    char: "\u26d3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  magnet: {
    keywords: [ "attraction", "magnetic" ],
    char: "\ud83e\uddf2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  gun: {
    keywords: [ "violence", "weapon", "pistol", "revolver" ],
    char: "\ud83d\udd2b",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bomb: {
    keywords: [ "boom", "explode", "explosion", "terrorism" ],
    char: "\ud83d\udca3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  firecracker: {
    keywords: [ "dynamite", "boom", "explode", "explosion", "explosive" ],
    char: "\ud83e\udde8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hocho: {
    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
    char: "\ud83d\udd2a",
    fitzpatrick_scale: false,
    category: "objects"
  },
  dagger: {
    keywords: [ "weapon" ],
    char: "\ud83d\udde1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  crossed_swords: {
    keywords: [ "weapon" ],
    char: "\u2694",
    fitzpatrick_scale: false,
    category: "objects"
  },
  shield: {
    keywords: [ "protection", "security" ],
    char: "\ud83d\udee1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  smoking: {
    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
    char: "\ud83d\udeac",
    fitzpatrick_scale: false,
    category: "objects"
  },
  skull_and_crossbones: {
    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
    char: "\u2620",
    fitzpatrick_scale: false,
    category: "objects"
  },
  coffin: {
    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
    char: "\u26b0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  funeral_urn: {
    keywords: [ "dead", "die", "death", "rip", "ashes" ],
    char: "\u26b1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  amphora: {
    keywords: [ "vase", "jar" ],
    char: "\ud83c\udffa",
    fitzpatrick_scale: false,
    category: "objects"
  },
  crystal_ball: {
    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
    char: "\ud83d\udd2e",
    fitzpatrick_scale: false,
    category: "objects"
  },
  prayer_beads: {
    keywords: [ "dhikr", "religious" ],
    char: "\ud83d\udcff",
    fitzpatrick_scale: false,
    category: "objects"
  },
  nazar_amulet: {
    keywords: [ "bead", "charm" ],
    char: "\ud83e\uddff",
    fitzpatrick_scale: false,
    category: "objects"
  },
  barber: {
    keywords: [ "hair", "salon", "style" ],
    char: "\ud83d\udc88",
    fitzpatrick_scale: false,
    category: "objects"
  },
  alembic: {
    keywords: [ "distilling", "science", "experiment", "chemistry" ],
    char: "\u2697",
    fitzpatrick_scale: false,
    category: "objects"
  },
  telescope: {
    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
    char: "\ud83d\udd2d",
    fitzpatrick_scale: false,
    category: "objects"
  },
  microscope: {
    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
    char: "\ud83d\udd2c",
    fitzpatrick_scale: false,
    category: "objects"
  },
  hole: {
    keywords: [ "embarrassing" ],
    char: "\ud83d\udd73",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pill: {
    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
    char: "\ud83d\udc8a",
    fitzpatrick_scale: false,
    category: "objects"
  },
  syringe: {
    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
    char: "\ud83d\udc89",
    fitzpatrick_scale: false,
    category: "objects"
  },
  dna: {
    keywords: [ "biologist", "genetics", "life" ],
    char: "\ud83e\uddec",
    fitzpatrick_scale: false,
    category: "objects"
  },
  microbe: {
    keywords: [ "amoeba", "bacteria", "germs" ],
    char: "\ud83e\udda0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  petri_dish: {
    keywords: [ "bacteria", "biology", "culture", "lab" ],
    char: "\ud83e\uddeb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  test_tube: {
    keywords: [ "chemistry", "experiment", "lab", "science" ],
    char: "\ud83e\uddea",
    fitzpatrick_scale: false,
    category: "objects"
  },
  thermometer: {
    keywords: [ "weather", "temperature", "hot", "cold" ],
    char: "\ud83c\udf21",
    fitzpatrick_scale: false,
    category: "objects"
  },
  broom: {
    keywords: [ "cleaning", "sweeping", "witch" ],
    char: "\ud83e\uddf9",
    fitzpatrick_scale: false,
    category: "objects"
  },
  basket: {
    keywords: [ "laundry" ],
    char: "\ud83e\uddfa",
    fitzpatrick_scale: false,
    category: "objects"
  },
  toilet_paper: {
    keywords: [ "roll" ],
    char: "\ud83e\uddfb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  label: {
    keywords: [ "sale", "tag" ],
    char: "\ud83c\udff7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bookmark: {
    keywords: [ "favorite", "label", "save" ],
    char: "\ud83d\udd16",
    fitzpatrick_scale: false,
    category: "objects"
  },
  toilet: {
    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
    char: "\ud83d\udebd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  shower: {
    keywords: [ "clean", "water", "bathroom" ],
    char: "\ud83d\udebf",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bathtub: {
    keywords: [ "clean", "shower", "bathroom" ],
    char: "\ud83d\udec1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  soap: {
    keywords: [ "bar", "bathing", "cleaning", "lather" ],
    char: "\ud83e\uddfc",
    fitzpatrick_scale: false,
    category: "objects"
  },
  sponge: {
    keywords: [ "absorbing", "cleaning", "porous" ],
    char: "\ud83e\uddfd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  lotion_bottle: {
    keywords: [ "moisturizer", "sunscreen" ],
    char: "\ud83e\uddf4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  key: {
    keywords: [ "lock", "door", "password" ],
    char: "\ud83d\udd11",
    fitzpatrick_scale: false,
    category: "objects"
  },
  old_key: {
    keywords: [ "lock", "door", "password" ],
    char: "\ud83d\udddd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  couch_and_lamp: {
    keywords: [ "read", "chill" ],
    char: "\ud83d\udecb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  sleeping_bed: {
    keywords: [ "bed", "rest" ],
    char: "\ud83d\udecc",
    fitzpatrick_scale: true,
    category: "objects"
  },
  bed: {
    keywords: [ "sleep", "rest" ],
    char: "\ud83d\udecf",
    fitzpatrick_scale: false,
    category: "objects"
  },
  door: {
    keywords: [ "house", "entry", "exit" ],
    char: "\ud83d\udeaa",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bellhop_bell: {
    keywords: [ "service" ],
    char: "\ud83d\udece",
    fitzpatrick_scale: false,
    category: "objects"
  },
  teddy_bear: {
    keywords: [ "plush", "stuffed" ],
    char: "\ud83e\uddf8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  framed_picture: {
    keywords: [ "photography" ],
    char: "\ud83d\uddbc",
    fitzpatrick_scale: false,
    category: "objects"
  },
  world_map: {
    keywords: [ "location", "direction" ],
    char: "\ud83d\uddfa",
    fitzpatrick_scale: false,
    category: "objects"
  },
  parasol_on_ground: {
    keywords: [ "weather", "summer" ],
    char: "\u26f1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  moyai: {
    keywords: [ "rock", "easter island", "moai" ],
    char: "\ud83d\uddff",
    fitzpatrick_scale: false,
    category: "objects"
  },
  shopping: {
    keywords: [ "mall", "buy", "purchase" ],
    char: "\ud83d\udecd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  shopping_cart: {
    keywords: [ "trolley" ],
    char: "\ud83d\uded2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  balloon: {
    keywords: [ "party", "celebration", "birthday", "circus" ],
    char: "\ud83c\udf88",
    fitzpatrick_scale: false,
    category: "objects"
  },
  flags: {
    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
    char: "\ud83c\udf8f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  ribbon: {
    keywords: [ "decoration", "pink", "girl", "bowtie" ],
    char: "\ud83c\udf80",
    fitzpatrick_scale: false,
    category: "objects"
  },
  gift: {
    keywords: [ "present", "birthday", "christmas", "xmas" ],
    char: "\ud83c\udf81",
    fitzpatrick_scale: false,
    category: "objects"
  },
  confetti_ball: {
    keywords: [ "festival", "party", "birthday", "circus" ],
    char: "\ud83c\udf8a",
    fitzpatrick_scale: false,
    category: "objects"
  },
  tada: {
    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
    char: "\ud83c\udf89",
    fitzpatrick_scale: false,
    category: "objects"
  },
  dolls: {
    keywords: [ "japanese", "toy", "kimono" ],
    char: "\ud83c\udf8e",
    fitzpatrick_scale: false,
    category: "objects"
  },
  wind_chime: {
    keywords: [ "nature", "ding", "spring", "bell" ],
    char: "\ud83c\udf90",
    fitzpatrick_scale: false,
    category: "objects"
  },
  crossed_flags: {
    keywords: [ "japanese", "nation", "country", "border" ],
    char: "\ud83c\udf8c",
    fitzpatrick_scale: false,
    category: "objects"
  },
  izakaya_lantern: {
    keywords: [ "light", "paper", "halloween", "spooky" ],
    char: "\ud83c\udfee",
    fitzpatrick_scale: false,
    category: "objects"
  },
  red_envelope: {
    keywords: [ "gift" ],
    char: "\ud83e\udde7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  email: {
    keywords: [ "letter", "postal", "inbox", "communication" ],
    char: "\u2709\ufe0f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  envelope_with_arrow: {
    keywords: [ "email", "communication" ],
    char: "\ud83d\udce9",
    fitzpatrick_scale: false,
    category: "objects"
  },
  incoming_envelope: {
    keywords: [ "email", "inbox" ],
    char: "\ud83d\udce8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  "e-mail": {
    keywords: [ "communication", "inbox" ],
    char: "\ud83d\udce7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  love_letter: {
    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
    char: "\ud83d\udc8c",
    fitzpatrick_scale: false,
    category: "objects"
  },
  postbox: {
    keywords: [ "email", "letter", "envelope" ],
    char: "\ud83d\udcee",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox_closed: {
    keywords: [ "email", "communication", "inbox" ],
    char: "\ud83d\udcea",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox: {
    keywords: [ "email", "inbox", "communication" ],
    char: "\ud83d\udceb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox_with_mail: {
    keywords: [ "email", "inbox", "communication" ],
    char: "\ud83d\udcec",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mailbox_with_no_mail: {
    keywords: [ "email", "inbox" ],
    char: "\ud83d\udced",
    fitzpatrick_scale: false,
    category: "objects"
  },
  package: {
    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
    char: "\ud83d\udce6",
    fitzpatrick_scale: false,
    category: "objects"
  },
  postal_horn: {
    keywords: [ "instrument", "music" ],
    char: "\ud83d\udcef",
    fitzpatrick_scale: false,
    category: "objects"
  },
  inbox_tray: {
    keywords: [ "email", "documents" ],
    char: "\ud83d\udce5",
    fitzpatrick_scale: false,
    category: "objects"
  },
  outbox_tray: {
    keywords: [ "inbox", "email" ],
    char: "\ud83d\udce4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  scroll: {
    keywords: [ "documents", "ancient", "history", "paper" ],
    char: "\ud83d\udcdc",
    fitzpatrick_scale: false,
    category: "objects"
  },
  page_with_curl: {
    keywords: [ "documents", "office", "paper" ],
    char: "\ud83d\udcc3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bookmark_tabs: {
    keywords: [ "favorite", "save", "order", "tidy" ],
    char: "\ud83d\udcd1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  receipt: {
    keywords: [ "accounting", "expenses" ],
    char: "\ud83e\uddfe",
    fitzpatrick_scale: false,
    category: "objects"
  },
  bar_chart: {
    keywords: [ "graph", "presentation", "stats" ],
    char: "\ud83d\udcca",
    fitzpatrick_scale: false,
    category: "objects"
  },
  chart_with_upwards_trend: {
    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
    char: "\ud83d\udcc8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  chart_with_downwards_trend: {
    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
    char: "\ud83d\udcc9",
    fitzpatrick_scale: false,
    category: "objects"
  },
  page_facing_up: {
    keywords: [ "documents", "office", "paper", "information" ],
    char: "\ud83d\udcc4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  date: {
    keywords: [ "calendar", "schedule" ],
    char: "\ud83d\udcc5",
    fitzpatrick_scale: false,
    category: "objects"
  },
  calendar: {
    keywords: [ "schedule", "date", "planning" ],
    char: "\ud83d\udcc6",
    fitzpatrick_scale: false,
    category: "objects"
  },
  spiral_calendar: {
    keywords: [ "date", "schedule", "planning" ],
    char: "\ud83d\uddd3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  card_index: {
    keywords: [ "business", "stationery" ],
    char: "\ud83d\udcc7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  card_file_box: {
    keywords: [ "business", "stationery" ],
    char: "\ud83d\uddc3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  ballot_box: {
    keywords: [ "election", "vote" ],
    char: "\ud83d\uddf3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  file_cabinet: {
    keywords: [ "filing", "organizing" ],
    char: "\ud83d\uddc4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  clipboard: {
    keywords: [ "stationery", "documents" ],
    char: "\ud83d\udccb",
    fitzpatrick_scale: false,
    category: "objects"
  },
  spiral_notepad: {
    keywords: [ "memo", "stationery" ],
    char: "\ud83d\uddd2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  file_folder: {
    keywords: [ "documents", "business", "office" ],
    char: "\ud83d\udcc1",
    fitzpatrick_scale: false,
    category: "objects"
  },
  open_file_folder: {
    keywords: [ "documents", "load" ],
    char: "\ud83d\udcc2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  card_index_dividers: {
    keywords: [ "organizing", "business", "stationery" ],
    char: "\ud83d\uddc2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  newspaper_roll: {
    keywords: [ "press", "headline" ],
    char: "\ud83d\uddde",
    fitzpatrick_scale: false,
    category: "objects"
  },
  newspaper: {
    keywords: [ "press", "headline" ],
    char: "\ud83d\udcf0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  notebook: {
    keywords: [ "stationery", "record", "notes", "paper", "study" ],
    char: "\ud83d\udcd3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  closed_book: {
    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
    char: "\ud83d\udcd5",
    fitzpatrick_scale: false,
    category: "objects"
  },
  green_book: {
    keywords: [ "read", "library", "knowledge", "study" ],
    char: "\ud83d\udcd7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  blue_book: {
    keywords: [ "read", "library", "knowledge", "learn", "study" ],
    char: "\ud83d\udcd8",
    fitzpatrick_scale: false,
    category: "objects"
  },
  orange_book: {
    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
    char: "\ud83d\udcd9",
    fitzpatrick_scale: false,
    category: "objects"
  },
  notebook_with_decorative_cover: {
    keywords: [ "classroom", "notes", "record", "paper", "study" ],
    char: "\ud83d\udcd4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  ledger: {
    keywords: [ "notes", "paper" ],
    char: "\ud83d\udcd2",
    fitzpatrick_scale: false,
    category: "objects"
  },
  books: {
    keywords: [ "literature", "library", "study" ],
    char: "\ud83d\udcda",
    fitzpatrick_scale: false,
    category: "objects"
  },
  open_book: {
    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
    char: "\ud83d\udcd6",
    fitzpatrick_scale: false,
    category: "objects"
  },
  safety_pin: {
    keywords: [ "diaper" ],
    char: "\ud83e\uddf7",
    fitzpatrick_scale: false,
    category: "objects"
  },
  link: {
    keywords: [ "rings", "url" ],
    char: "\ud83d\udd17",
    fitzpatrick_scale: false,
    category: "objects"
  },
  paperclip: {
    keywords: [ "documents", "stationery" ],
    char: "\ud83d\udcce",
    fitzpatrick_scale: false,
    category: "objects"
  },
  paperclips: {
    keywords: [ "documents", "stationery" ],
    char: "\ud83d\udd87",
    fitzpatrick_scale: false,
    category: "objects"
  },
  scissors: {
    keywords: [ "stationery", "cut" ],
    char: "\u2702\ufe0f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  triangular_ruler: {
    keywords: [ "stationery", "math", "architect", "sketch" ],
    char: "\ud83d\udcd0",
    fitzpatrick_scale: false,
    category: "objects"
  },
  straight_ruler: {
    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
    char: "\ud83d\udccf",
    fitzpatrick_scale: false,
    category: "objects"
  },
  abacus: {
    keywords: [ "calculation" ],
    char: "\ud83e\uddee",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pushpin: {
    keywords: [ "stationery", "mark", "here" ],
    char: "\ud83d\udccc",
    fitzpatrick_scale: false,
    category: "objects"
  },
  round_pushpin: {
    keywords: [ "stationery", "location", "map", "here" ],
    char: "\ud83d\udccd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  triangular_flag_on_post: {
    keywords: [ "mark", "milestone", "place" ],
    char: "\ud83d\udea9",
    fitzpatrick_scale: false,
    category: "objects"
  },
  white_flag: {
    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
    char: "\ud83c\udff3",
    fitzpatrick_scale: false,
    category: "objects"
  },
  black_flag: {
    keywords: [ "pirate" ],
    char: "\ud83c\udff4",
    fitzpatrick_scale: false,
    category: "objects"
  },
  rainbow_flag: {
    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
    char: "\ud83c\udff3\ufe0f\u200d\ud83c\udf08",
    fitzpatrick_scale: false,
    category: "objects"
  },
  closed_lock_with_key: {
    keywords: [ "security", "privacy" ],
    char: "\ud83d\udd10",
    fitzpatrick_scale: false,
    category: "objects"
  },
  lock: {
    keywords: [ "security", "password", "padlock" ],
    char: "\ud83d\udd12",
    fitzpatrick_scale: false,
    category: "objects"
  },
  unlock: {
    keywords: [ "privacy", "security" ],
    char: "\ud83d\udd13",
    fitzpatrick_scale: false,
    category: "objects"
  },
  lock_with_ink_pen: {
    keywords: [ "security", "secret" ],
    char: "\ud83d\udd0f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pen: {
    keywords: [ "stationery", "writing", "write" ],
    char: "\ud83d\udd8a",
    fitzpatrick_scale: false,
    category: "objects"
  },
  fountain_pen: {
    keywords: [ "stationery", "writing", "write" ],
    char: "\ud83d\udd8b",
    fitzpatrick_scale: false,
    category: "objects"
  },
  black_nib: {
    keywords: [ "pen", "stationery", "writing", "write" ],
    char: "\u2712\ufe0f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  memo: {
    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
    char: "\ud83d\udcdd",
    fitzpatrick_scale: false,
    category: "objects"
  },
  pencil2: {
    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
    char: "\u270f\ufe0f",
    fitzpatrick_scale: false,
    category: "objects"
  },
  crayon: {
    keywords: [ "drawing", "creativity" ],
    char: "\ud83d\udd8d",
    fitzpatrick_scale: false,
    category: "objects"
  },
  paintbrush: {
    keywords: [ "drawing", "creativity", "art" ],
    char: "\ud83d\udd8c",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mag: {
    keywords: [ "search", "zoom", "find", "detective" ],
    char: "\ud83d\udd0d",
    fitzpatrick_scale: false,
    category: "objects"
  },
  mag_right: {
    keywords: [ "search", "zoom", "find", "detective" ],
    char: "\ud83d\udd0e",
    fitzpatrick_scale: false,
    category: "objects"
  },
  heart: {
    keywords: [ "love", "like", "valentines" ],
    char: "\u2764\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  orange_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83e\udde1",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  yellow_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc9b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  green_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc9a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  blue_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc99",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  purple_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc9c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_heart: {
    keywords: [ "evil" ],
    char: "\ud83d\udda4",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  broken_heart: {
    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
    char: "\ud83d\udc94",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_heart_exclamation: {
    keywords: [ "decoration", "love" ],
    char: "\u2763",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  two_hearts: {
    keywords: [ "love", "like", "affection", "valentines", "heart" ],
    char: "\ud83d\udc95",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  revolving_hearts: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc9e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heartbeat: {
    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
    char: "\ud83d\udc93",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heartpulse: {
    keywords: [ "like", "love", "affection", "valentines", "pink" ],
    char: "\ud83d\udc97",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sparkling_heart: {
    keywords: [ "love", "like", "affection", "valentines" ],
    char: "\ud83d\udc96",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cupid: {
    keywords: [ "love", "like", "heart", "affection", "valentines" ],
    char: "\ud83d\udc98",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  gift_heart: {
    keywords: [ "love", "valentines" ],
    char: "\ud83d\udc9d",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heart_decoration: {
    keywords: [ "purple-square", "love", "like" ],
    char: "\ud83d\udc9f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  peace_symbol: {
    keywords: [ "hippie" ],
    char: "\u262e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  latin_cross: {
    keywords: [ "christianity" ],
    char: "\u271d",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  star_and_crescent: {
    keywords: [ "islam" ],
    char: "\u262a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  om: {
    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
    char: "\ud83d\udd49",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wheel_of_dharma: {
    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
    char: "\u2638",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  star_of_david: {
    keywords: [ "judaism" ],
    char: "\u2721",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  six_pointed_star: {
    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
    char: "\ud83d\udd2f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  menorah: {
    keywords: [ "hanukkah", "candles", "jewish" ],
    char: "\ud83d\udd4e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  yin_yang: {
    keywords: [ "balance" ],
    char: "\u262f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  orthodox_cross: {
    keywords: [ "suppedaneum", "religion" ],
    char: "\u2626",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  place_of_worship: {
    keywords: [ "religion", "church", "temple", "prayer" ],
    char: "\ud83d\uded0",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ophiuchus: {
    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
    char: "\u26ce",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  aries: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: "\u2648",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  taurus: {
    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
    char: "\u2649",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  gemini: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: "\u264a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cancer: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: "\u264b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  leo: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: "\u264c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  virgo: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: "\u264d",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  libra: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: "\u264e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  scorpius: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
    char: "\u264f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sagittarius: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: "\u2650",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  capricorn: {
    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
    char: "\u2651",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  aquarius: {
    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
    char: "\u2652",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  pisces: {
    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
    char: "\u2653",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  id: {
    keywords: [ "purple-square", "words" ],
    char: "\ud83c\udd94",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  atom_symbol: {
    keywords: [ "science", "physics", "chemistry" ],
    char: "\u269b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7a7a: {
    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
    char: "\ud83c\ude33",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u5272: {
    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
    char: "\ud83c\ude39",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  radioactive: {
    keywords: [ "nuclear", "danger" ],
    char: "\u2622",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  biohazard: {
    keywords: [ "danger" ],
    char: "\u2623",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mobile_phone_off: {
    keywords: [ "mute", "orange-square", "silence", "quiet" ],
    char: "\ud83d\udcf4",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  vibration_mode: {
    keywords: [ "orange-square", "phone" ],
    char: "\ud83d\udcf3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6709: {
    keywords: [ "orange-square", "chinese", "have", "kanji" ],
    char: "\ud83c\ude36",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7121: {
    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
    char: "\ud83c\ude1a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7533: {
    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
    char: "\ud83c\ude38",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u55b6: {
    keywords: [ "japanese", "opening hours", "orange-square" ],
    char: "\ud83c\ude3a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6708: {
    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
    char: "\ud83c\ude37\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eight_pointed_black_star: {
    keywords: [ "orange-square", "shape", "polygon" ],
    char: "\u2734\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  vs: {
    keywords: [ "words", "orange-square" ],
    char: "\ud83c\udd9a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  accept: {
    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
    char: "\ud83c\ude51",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_flower: {
    keywords: [ "japanese", "spring" ],
    char: "\ud83d\udcae",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ideograph_advantage: {
    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
    char: "\ud83c\ude50",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  secret: {
    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
    char: "\u3299\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  congratulations: {
    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
    char: "\u3297\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u5408: {
    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
    char: "\ud83c\ude34",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6e80: {
    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
    char: "\ud83c\ude35",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u7981: {
    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
    char: "\ud83c\ude32",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  a: {
    keywords: [ "red-square", "alphabet", "letter" ],
    char: "\ud83c\udd70\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  b: {
    keywords: [ "red-square", "alphabet", "letter" ],
    char: "\ud83c\udd71\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ab: {
    keywords: [ "red-square", "alphabet" ],
    char: "\ud83c\udd8e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cl: {
    keywords: [ "alphabet", "words", "red-square" ],
    char: "\ud83c\udd91",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  o2: {
    keywords: [ "alphabet", "red-square", "letter" ],
    char: "\ud83c\udd7e\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sos: {
    keywords: [ "help", "red-square", "words", "emergency", "911" ],
    char: "\ud83c\udd98",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_entry: {
    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
    char: "\u26d4",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  name_badge: {
    keywords: [ "fire", "forbid" ],
    char: "\ud83d\udcdb",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_entry_sign: {
    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
    char: "\ud83d\udeab",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  x: {
    keywords: [ "no", "delete", "remove", "cancel", "red" ],
    char: "\u274c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  o: {
    keywords: [ "circle", "round" ],
    char: "\u2b55",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  stop_sign: {
    keywords: [ "stop" ],
    char: "\ud83d\uded1",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  anger: {
    keywords: [ "angry", "mad" ],
    char: "\ud83d\udca2",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  hotsprings: {
    keywords: [ "bath", "warm", "relax" ],
    char: "\u2668\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_pedestrians: {
    keywords: [ "rules", "crossing", "walking", "circle" ],
    char: "\ud83d\udeb7",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  do_not_litter: {
    keywords: [ "trash", "bin", "garbage", "circle" ],
    char: "\ud83d\udeaf",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_bicycles: {
    keywords: [ "cyclist", "prohibited", "circle" ],
    char: "\ud83d\udeb3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  "non-potable_water": {
    keywords: [ "drink", "faucet", "tap", "circle" ],
    char: "\ud83d\udeb1",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  underage: {
    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
    char: "\ud83d\udd1e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_mobile_phones: {
    keywords: [ "iphone", "mute", "circle" ],
    char: "\ud83d\udcf5",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  exclamation: {
    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
    char: "\u2757",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  grey_exclamation: {
    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
    char: "\u2755",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  question: {
    keywords: [ "doubt", "confused" ],
    char: "\u2753",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  grey_question: {
    keywords: [ "doubts", "gray", "huh", "confused" ],
    char: "\u2754",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  bangbang: {
    keywords: [ "exclamation", "surprise" ],
    char: "\u203c\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  interrobang: {
    keywords: [ "wat", "punctuation", "surprise" ],
    char: "\u2049\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  100: {
    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
    char: "\ud83d\udcaf",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  low_brightness: {
    keywords: [ "sun", "afternoon", "warm", "summer" ],
    char: "\ud83d\udd05",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  high_brightness: {
    keywords: [ "sun", "light" ],
    char: "\ud83d\udd06",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  trident: {
    keywords: [ "weapon", "spear" ],
    char: "\ud83d\udd31",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  fleur_de_lis: {
    keywords: [ "decorative", "scout" ],
    char: "\u269c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  part_alternation_mark: {
    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
    char: "\u303d\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  warning: {
    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
    char: "\u26a0\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  children_crossing: {
    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
    char: "\ud83d\udeb8",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  beginner: {
    keywords: [ "badge", "shield" ],
    char: "\ud83d\udd30",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  recycle: {
    keywords: [ "arrow", "environment", "garbage", "trash" ],
    char: "\u267b\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  u6307: {
    keywords: [ "chinese", "point", "green-square", "kanji" ],
    char: "\ud83c\ude2f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  chart: {
    keywords: [ "green-square", "graph", "presentation", "stats" ],
    char: "\ud83d\udcb9",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sparkle: {
    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
    char: "\u2747\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eight_spoked_asterisk: {
    keywords: [ "star", "sparkle", "green-square" ],
    char: "\u2733\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  negative_squared_cross_mark: {
    keywords: [ "x", "green-square", "no", "deny" ],
    char: "\u274e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_check_mark: {
    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
    char: "\u2705",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  diamond_shape_with_a_dot_inside: {
    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
    char: "\ud83d\udca0",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cyclone: {
    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
    char: "\ud83c\udf00",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  loop: {
    keywords: [ "tape", "cassette" ],
    char: "\u27bf",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  globe_with_meridians: {
    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
    char: "\ud83c\udf10",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  m: {
    keywords: [ "alphabet", "blue-circle", "letter" ],
    char: "\u24c2\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  atm: {
    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
    char: "\ud83c\udfe7",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sa: {
    keywords: [ "japanese", "blue-square", "katakana" ],
    char: "\ud83c\ude02\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  passport_control: {
    keywords: [ "custom", "blue-square" ],
    char: "\ud83d\udec2",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  customs: {
    keywords: [ "passport", "border", "blue-square" ],
    char: "\ud83d\udec3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  baggage_claim: {
    keywords: [ "blue-square", "airport", "transport" ],
    char: "\ud83d\udec4",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  left_luggage: {
    keywords: [ "blue-square", "travel" ],
    char: "\ud83d\udec5",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wheelchair: {
    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
    char: "\u267f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_smoking: {
    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
    char: "\ud83d\udead",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wc: {
    keywords: [ "toilet", "restroom", "blue-square" ],
    char: "\ud83d\udebe",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  parking: {
    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
    char: "\ud83c\udd7f\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  potable_water: {
    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
    char: "\ud83d\udeb0",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mens: {
    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
    char: "\ud83d\udeb9",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  womens: {
    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
    char: "\ud83d\udeba",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  baby_symbol: {
    keywords: [ "orange-square", "child" ],
    char: "\ud83d\udebc",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  restroom: {
    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
    char: "\ud83d\udebb",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  put_litter_in_its_place: {
    keywords: [ "blue-square", "sign", "human", "info" ],
    char: "\ud83d\udeae",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cinema: {
    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
    char: "\ud83c\udfa6",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  signal_strength: {
    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
    char: "\ud83d\udcf6",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  koko: {
    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
    char: "\ud83c\ude01",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ng: {
    keywords: [ "blue-square", "words", "shape", "icon" ],
    char: "\ud83c\udd96",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ok: {
    keywords: [ "good", "agree", "yes", "blue-square" ],
    char: "\ud83c\udd97",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  up: {
    keywords: [ "blue-square", "above", "high" ],
    char: "\ud83c\udd99",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  cool: {
    keywords: [ "words", "blue-square" ],
    char: "\ud83c\udd92",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  new: {
    keywords: [ "blue-square", "words", "start" ],
    char: "\ud83c\udd95",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  free: {
    keywords: [ "blue-square", "words" ],
    char: "\ud83c\udd93",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  zero: {
    keywords: [ "0", "numbers", "blue-square", "null" ],
    char: "0\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  one: {
    keywords: [ "blue-square", "numbers", "1" ],
    char: "1\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  two: {
    keywords: [ "numbers", "2", "prime", "blue-square" ],
    char: "2\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  three: {
    keywords: [ "3", "numbers", "prime", "blue-square" ],
    char: "3\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  four: {
    keywords: [ "4", "numbers", "blue-square" ],
    char: "4\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  five: {
    keywords: [ "5", "numbers", "blue-square", "prime" ],
    char: "5\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  six: {
    keywords: [ "6", "numbers", "blue-square" ],
    char: "6\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  seven: {
    keywords: [ "7", "numbers", "blue-square", "prime" ],
    char: "7\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eight: {
    keywords: [ "8", "blue-square", "numbers" ],
    char: "8\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  nine: {
    keywords: [ "blue-square", "numbers", "9" ],
    char: "9\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  keycap_ten: {
    keywords: [ "numbers", "10", "blue-square" ],
    char: "\ud83d\udd1f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  asterisk: {
    keywords: [ "star", "keycap" ],
    char: "*\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  1234: {
    keywords: [ "numbers", "blue-square" ],
    char: "\ud83d\udd22",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  eject_button: {
    keywords: [ "blue-square" ],
    char: "\u23cf\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_forward: {
    keywords: [ "blue-square", "right", "direction", "play" ],
    char: "\u25b6\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  pause_button: {
    keywords: [ "pause", "blue-square" ],
    char: "\u23f8",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  next_track_button: {
    keywords: [ "forward", "next", "blue-square" ],
    char: "\u23ed",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  stop_button: {
    keywords: [ "blue-square" ],
    char: "\u23f9",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  record_button: {
    keywords: [ "blue-square" ],
    char: "\u23fa",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  play_or_pause_button: {
    keywords: [ "blue-square", "play", "pause" ],
    char: "\u23ef",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  previous_track_button: {
    keywords: [ "backward" ],
    char: "\u23ee",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  fast_forward: {
    keywords: [ "blue-square", "play", "speed", "continue" ],
    char: "\u23e9",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  rewind: {
    keywords: [ "play", "blue-square" ],
    char: "\u23ea",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  twisted_rightwards_arrows: {
    keywords: [ "blue-square", "shuffle", "music", "random" ],
    char: "\ud83d\udd00",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  repeat: {
    keywords: [ "loop", "record" ],
    char: "\ud83d\udd01",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  repeat_one: {
    keywords: [ "blue-square", "loop" ],
    char: "\ud83d\udd02",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_backward: {
    keywords: [ "blue-square", "left", "direction" ],
    char: "\u25c0\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_up_small: {
    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
    char: "\ud83d\udd3c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_down_small: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: "\ud83d\udd3d",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_double_up: {
    keywords: [ "blue-square", "direction", "top" ],
    char: "\u23eb",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_double_down: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: "\u23ec",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_right: {
    keywords: [ "blue-square", "next" ],
    char: "\u27a1\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_left: {
    keywords: [ "blue-square", "previous", "back" ],
    char: "\u2b05\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_up: {
    keywords: [ "blue-square", "continue", "top", "direction" ],
    char: "\u2b06\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_down: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: "\u2b07\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_upper_right: {
    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
    char: "\u2197\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_lower_right: {
    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
    char: "\u2198\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_lower_left: {
    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
    char: "\u2199\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_upper_left: {
    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
    char: "\u2196\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_up_down: {
    keywords: [ "blue-square", "direction", "way", "vertical" ],
    char: "\u2195\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  left_right_arrow: {
    keywords: [ "shape", "direction", "horizontal", "sideways" ],
    char: "\u2194\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrows_counterclockwise: {
    keywords: [ "blue-square", "sync", "cycle" ],
    char: "\ud83d\udd04",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_right_hook: {
    keywords: [ "blue-square", "return", "rotate", "direction" ],
    char: "\u21aa\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  leftwards_arrow_with_hook: {
    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
    char: "\u21a9\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_heading_up: {
    keywords: [ "blue-square", "direction", "top" ],
    char: "\u2934\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrow_heading_down: {
    keywords: [ "blue-square", "direction", "bottom" ],
    char: "\u2935\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  hash: {
    keywords: [ "symbol", "blue-square", "twitter" ],
    char: "#\ufe0f\u20e3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  information_source: {
    keywords: [ "blue-square", "alphabet", "letter" ],
    char: "\u2139\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  abc: {
    keywords: [ "blue-square", "alphabet" ],
    char: "\ud83d\udd24",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  abcd: {
    keywords: [ "blue-square", "alphabet" ],
    char: "\ud83d\udd21",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  capital_abcd: {
    keywords: [ "alphabet", "words", "blue-square" ],
    char: "\ud83d\udd20",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  symbols: {
    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
    char: "\ud83d\udd23",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  musical_note: {
    keywords: [ "score", "tone", "sound" ],
    char: "\ud83c\udfb5",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  notes: {
    keywords: [ "music", "score" ],
    char: "\ud83c\udfb6",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  wavy_dash: {
    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
    char: "\u3030\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  curly_loop: {
    keywords: [ "scribble", "draw", "shape", "squiggle" ],
    char: "\u27b0",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_check_mark: {
    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
    char: "\u2714\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  arrows_clockwise: {
    keywords: [ "sync", "cycle", "round", "repeat" ],
    char: "\ud83d\udd03",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_plus_sign: {
    keywords: [ "math", "calculation", "addition", "more", "increase" ],
    char: "\u2795",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_minus_sign: {
    keywords: [ "math", "calculation", "subtract", "less" ],
    char: "\u2796",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_division_sign: {
    keywords: [ "divide", "math", "calculation" ],
    char: "\u2797",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_multiplication_x: {
    keywords: [ "math", "calculation" ],
    char: "\u2716\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  infinity: {
    keywords: [ "forever" ],
    char: "\u267e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  heavy_dollar_sign: {
    keywords: [ "money", "sales", "payment", "currency", "buck" ],
    char: "\ud83d\udcb2",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  currency_exchange: {
    keywords: [ "money", "sales", "dollar", "travel" ],
    char: "\ud83d\udcb1",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  copyright: {
    keywords: [ "ip", "license", "circle", "law", "legal" ],
    char: "\xa9\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  registered: {
    keywords: [ "alphabet", "circle" ],
    char: "\xae\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  tm: {
    keywords: [ "trademark", "brand", "law", "legal" ],
    char: "\u2122\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  end: {
    keywords: [ "words", "arrow" ],
    char: "\ud83d\udd1a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  back: {
    keywords: [ "arrow", "words", "return" ],
    char: "\ud83d\udd19",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  on: {
    keywords: [ "arrow", "words" ],
    char: "\ud83d\udd1b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  top: {
    keywords: [ "words", "blue-square" ],
    char: "\ud83d\udd1d",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  soon: {
    keywords: [ "arrow", "words" ],
    char: "\ud83d\udd1c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  ballot_box_with_check: {
    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
    char: "\u2611\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  radio_button: {
    keywords: [ "input", "old", "music", "circle" ],
    char: "\ud83d\udd18",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_circle: {
    keywords: [ "shape", "round" ],
    char: "\u26aa",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_circle: {
    keywords: [ "shape", "button", "round" ],
    char: "\u26ab",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  red_circle: {
    keywords: [ "shape", "error", "danger" ],
    char: "\ud83d\udd34",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  large_blue_circle: {
    keywords: [ "shape", "icon", "button" ],
    char: "\ud83d\udd35",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_orange_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: "\ud83d\udd38",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_blue_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: "\ud83d\udd39",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  large_orange_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: "\ud83d\udd36",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  large_blue_diamond: {
    keywords: [ "shape", "jewel", "gem" ],
    char: "\ud83d\udd37",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_red_triangle: {
    keywords: [ "shape", "direction", "up", "top" ],
    char: "\ud83d\udd3a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_small_square: {
    keywords: [ "shape", "icon" ],
    char: "\u25aa\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_small_square: {
    keywords: [ "shape", "icon" ],
    char: "\u25ab\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_large_square: {
    keywords: [ "shape", "icon", "button" ],
    char: "\u2b1b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_large_square: {
    keywords: [ "shape", "icon", "stone", "button" ],
    char: "\u2b1c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  small_red_triangle_down: {
    keywords: [ "shape", "direction", "bottom" ],
    char: "\ud83d\udd3b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_medium_square: {
    keywords: [ "shape", "button", "icon" ],
    char: "\u25fc\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_medium_square: {
    keywords: [ "shape", "stone", "icon" ],
    char: "\u25fb\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_medium_small_square: {
    keywords: [ "icon", "shape", "button" ],
    char: "\u25fe",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_medium_small_square: {
    keywords: [ "shape", "stone", "icon", "button" ],
    char: "\u25fd",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_square_button: {
    keywords: [ "shape", "input", "frame" ],
    char: "\ud83d\udd32",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  white_square_button: {
    keywords: [ "shape", "input" ],
    char: "\ud83d\udd33",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  speaker: {
    keywords: [ "sound", "volume", "silence", "broadcast" ],
    char: "\ud83d\udd08",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  sound: {
    keywords: [ "volume", "speaker", "broadcast" ],
    char: "\ud83d\udd09",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  loud_sound: {
    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
    char: "\ud83d\udd0a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mute: {
    keywords: [ "sound", "volume", "silence", "quiet" ],
    char: "\ud83d\udd07",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mega: {
    keywords: [ "sound", "speaker", "volume" ],
    char: "\ud83d\udce3",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  loudspeaker: {
    keywords: [ "volume", "sound" ],
    char: "\ud83d\udce2",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  bell: {
    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
    char: "\ud83d\udd14",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  no_bell: {
    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
    char: "\ud83d\udd15",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  black_joker: {
    keywords: [ "poker", "cards", "game", "play", "magic" ],
    char: "\ud83c\udccf",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  mahjong: {
    keywords: [ "game", "play", "chinese", "kanji" ],
    char: "\ud83c\udc04",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  spades: {
    keywords: [ "poker", "cards", "suits", "magic" ],
    char: "\u2660\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clubs: {
    keywords: [ "poker", "cards", "magic", "suits" ],
    char: "\u2663\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  hearts: {
    keywords: [ "poker", "cards", "magic", "suits" ],
    char: "\u2665\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  diamonds: {
    keywords: [ "poker", "cards", "magic", "suits" ],
    char: "\u2666\ufe0f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  flower_playing_cards: {
    keywords: [ "game", "sunset", "red" ],
    char: "\ud83c\udfb4",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  thought_balloon: {
    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
    char: "\ud83d\udcad",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  right_anger_bubble: {
    keywords: [ "caption", "speech", "thinking", "mad" ],
    char: "\ud83d\uddef",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  speech_balloon: {
    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
    char: "\ud83d\udcac",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  left_speech_bubble: {
    keywords: [ "words", "message", "talk", "chatting" ],
    char: "\ud83d\udde8",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd50",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock2: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd51",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock3: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd52",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock4: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd53",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock5: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd54",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock6: {
    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
    char: "\ud83d\udd55",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock7: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd56",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock8: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd57",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock9: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd58",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock10: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd59",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock11: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd5a",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock12: {
    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
    char: "\ud83d\udd5b",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock130: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd5c",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock230: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd5d",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock330: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd5e",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock430: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd5f",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock530: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd60",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock630: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd61",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock730: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd62",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock830: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd63",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock930: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd64",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1030: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd65",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1130: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd66",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  clock1230: {
    keywords: [ "time", "late", "early", "schedule" ],
    char: "\ud83d\udd67",
    fitzpatrick_scale: false,
    category: "symbols"
  },
  afghanistan: {
    keywords: [ "af", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  aland_islands: {
    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddfd",
    fitzpatrick_scale: false,
    category: "flags"
  },
  albania: {
    keywords: [ "al", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  algeria: {
    keywords: [ "dz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde9\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  american_samoa: {
    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  andorra: {
    keywords: [ "ad", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  angola: {
    keywords: [ "ao", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  anguilla: {
    keywords: [ "ai", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  antarctica: {
    keywords: [ "aq", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  antigua_barbuda: {
    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  argentina: {
    keywords: [ "ar", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  armenia: {
    keywords: [ "am", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  aruba: {
    keywords: [ "aw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  australia: {
    keywords: [ "au", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  austria: {
    keywords: [ "at", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  azerbaijan: {
    keywords: [ "az", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bahamas: {
    keywords: [ "bs", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bahrain: {
    keywords: [ "bh", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bangladesh: {
    keywords: [ "bd", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  barbados: {
    keywords: [ "bb", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\udde7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  belarus: {
    keywords: [ "by", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  belgium: {
    keywords: [ "be", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  belize: {
    keywords: [ "bz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  benin: {
    keywords: [ "bj", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddef",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bermuda: {
    keywords: [ "bm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bhutan: {
    keywords: [ "bt", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bolivia: {
    keywords: [ "bo", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  caribbean_netherlands: {
    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bosnia_herzegovina: {
    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  botswana: {
    keywords: [ "bw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  brazil: {
    keywords: [ "br", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  british_indian_ocean_territory: {
    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  british_virgin_islands: {
    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  brunei: {
    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  bulgaria: {
    keywords: [ "bg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  burkina_faso: {
    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  burundi: {
    keywords: [ "bi", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cape_verde: {
    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddfb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cambodia: {
    keywords: [ "kh", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cameroon: {
    keywords: [ "cm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  canada: {
    keywords: [ "ca", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  canary_islands: {
    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cayman_islands: {
    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  central_african_republic: {
    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  chad: {
    keywords: [ "td", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  chile: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cn: {
    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
    char: "\ud83c\udde8\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  christmas_island: {
    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddfd",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cocos_islands: {
    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  colombia: {
    keywords: [ "co", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  comoros: {
    keywords: [ "km", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  congo_brazzaville: {
    keywords: [ "congo", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  congo_kinshasa: {
    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cook_islands: {
    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  costa_rica: {
    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  croatia: {
    keywords: [ "hr", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udded\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cuba: {
    keywords: [ "cu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  curacao: {
    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cyprus: {
    keywords: [ "cy", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  czech_republic: {
    keywords: [ "cz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  denmark: {
    keywords: [ "dk", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde9\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  djibouti: {
    keywords: [ "dj", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde9\ud83c\uddef",
    fitzpatrick_scale: false,
    category: "flags"
  },
  dominica: {
    keywords: [ "dm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde9\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  dominican_republic: {
    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde9\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  ecuador: {
    keywords: [ "ec", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  egypt: {
    keywords: [ "eg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  el_salvador: {
    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddfb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  equatorial_guinea: {
    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  eritrea: {
    keywords: [ "er", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  estonia: {
    keywords: [ "ee", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  ethiopia: {
    keywords: [ "et", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  eu: {
    keywords: [ "european", "union", "flag", "banner" ],
    char: "\ud83c\uddea\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  falkland_islands: {
    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddeb\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  faroe_islands: {
    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddeb\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  fiji: {
    keywords: [ "fj", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddeb\ud83c\uddef",
    fitzpatrick_scale: false,
    category: "flags"
  },
  finland: {
    keywords: [ "fi", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddeb\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  fr: {
    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
    char: "\ud83c\uddeb\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  french_guiana: {
    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  french_polynesia: {
    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  french_southern_territories: {
    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  gabon: {
    keywords: [ "ga", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  gambia: {
    keywords: [ "gm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  georgia: {
    keywords: [ "ge", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  de: {
    keywords: [ "german", "nation", "flag", "country", "banner" ],
    char: "\ud83c\udde9\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  ghana: {
    keywords: [ "gh", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  gibraltar: {
    keywords: [ "gi", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  greece: {
    keywords: [ "gr", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  greenland: {
    keywords: [ "gl", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  grenada: {
    keywords: [ "gd", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guadeloupe: {
    keywords: [ "gp", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf5",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guam: {
    keywords: [ "gu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guatemala: {
    keywords: [ "gt", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guernsey: {
    keywords: [ "gg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guinea: {
    keywords: [ "gn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guinea_bissau: {
    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  guyana: {
    keywords: [ "gy", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  haiti: {
    keywords: [ "ht", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udded\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  honduras: {
    keywords: [ "hn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udded\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  hong_kong: {
    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udded\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  hungary: {
    keywords: [ "hu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udded\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  iceland: {
    keywords: [ "is", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  india: {
    keywords: [ "in", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  indonesia: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  iran: {
    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  iraq: {
    keywords: [ "iq", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  ireland: {
    keywords: [ "ie", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  isle_of_man: {
    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  israel: {
    keywords: [ "il", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  it: {
    keywords: [ "italy", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddee\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  cote_divoire: {
    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  jamaica: {
    keywords: [ "jm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddef\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  jp: {
    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
    char: "\ud83c\uddef\ud83c\uddf5",
    fitzpatrick_scale: false,
    category: "flags"
  },
  jersey: {
    keywords: [ "je", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddef\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  jordan: {
    keywords: [ "jo", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddef\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kazakhstan: {
    keywords: [ "kz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kenya: {
    keywords: [ "ke", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kiribati: {
    keywords: [ "ki", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kosovo: {
    keywords: [ "xk", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfd\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kuwait: {
    keywords: [ "kw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kyrgyzstan: {
    keywords: [ "kg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  laos: {
    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  latvia: {
    keywords: [ "lv", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddfb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  lebanon: {
    keywords: [ "lb", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\udde7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  lesotho: {
    keywords: [ "ls", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  liberia: {
    keywords: [ "lr", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  libya: {
    keywords: [ "ly", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  liechtenstein: {
    keywords: [ "li", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  lithuania: {
    keywords: [ "lt", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  luxembourg: {
    keywords: [ "lu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  macau: {
    keywords: [ "macao", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  macedonia: {
    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  madagascar: {
    keywords: [ "mg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  malawi: {
    keywords: [ "mw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  malaysia: {
    keywords: [ "my", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  maldives: {
    keywords: [ "mv", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddfb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mali: {
    keywords: [ "ml", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  malta: {
    keywords: [ "mt", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  marshall_islands: {
    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  martinique: {
    keywords: [ "mq", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mauritania: {
    keywords: [ "mr", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mauritius: {
    keywords: [ "mu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mayotte: {
    keywords: [ "yt", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfe\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mexico: {
    keywords: [ "mx", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddfd",
    fitzpatrick_scale: false,
    category: "flags"
  },
  micronesia: {
    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddeb\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  moldova: {
    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  monaco: {
    keywords: [ "mc", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mongolia: {
    keywords: [ "mn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  montenegro: {
    keywords: [ "me", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  montserrat: {
    keywords: [ "ms", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  morocco: {
    keywords: [ "ma", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  mozambique: {
    keywords: [ "mz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  myanmar: {
    keywords: [ "mm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  namibia: {
    keywords: [ "na", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  nauru: {
    keywords: [ "nr", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  nepal: {
    keywords: [ "np", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddf5",
    fitzpatrick_scale: false,
    category: "flags"
  },
  netherlands: {
    keywords: [ "nl", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  new_caledonia: {
    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  new_zealand: {
    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  nicaragua: {
    keywords: [ "ni", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  niger: {
    keywords: [ "ne", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  nigeria: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  niue: {
    keywords: [ "nu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  norfolk_island: {
    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  northern_mariana_islands: {
    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf2\ud83c\uddf5",
    fitzpatrick_scale: false,
    category: "flags"
  },
  north_korea: {
    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddf5",
    fitzpatrick_scale: false,
    category: "flags"
  },
  norway: {
    keywords: [ "no", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf3\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  oman: {
    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf4\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  pakistan: {
    keywords: [ "pk", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  palau: {
    keywords: [ "pw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  palestinian_territories: {
    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  panama: {
    keywords: [ "pa", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  papua_new_guinea: {
    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  paraguay: {
    keywords: [ "py", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  peru: {
    keywords: [ "pe", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  philippines: {
    keywords: [ "ph", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  pitcairn_islands: {
    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  poland: {
    keywords: [ "pl", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  portugal: {
    keywords: [ "pt", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  puerto_rico: {
    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  qatar: {
    keywords: [ "qa", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf6\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  reunion: {
    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf7\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  romania: {
    keywords: [ "ro", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf7\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  ru: {
    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf7\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  rwanda: {
    keywords: [ "rw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf7\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_barthelemy: {
    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde7\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_helena: {
    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_kitts_nevis: {
    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_lucia: {
    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_pierre_miquelon: {
    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf5\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  st_vincent_grenadines: {
    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  samoa: {
    keywords: [ "ws", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfc\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  san_marino: {
    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  sao_tome_principe: {
    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  saudi_arabia: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  senegal: {
    keywords: [ "sn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  serbia: {
    keywords: [ "rs", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf7\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  seychelles: {
    keywords: [ "sc", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  sierra_leone: {
    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  singapore: {
    keywords: [ "sg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  sint_maarten: {
    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddfd",
    fitzpatrick_scale: false,
    category: "flags"
  },
  slovakia: {
    keywords: [ "sk", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  slovenia: {
    keywords: [ "si", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  solomon_islands: {
    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\udde7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  somalia: {
    keywords: [ "so", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  south_africa: {
    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddff\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  south_georgia_south_sandwich_islands: {
    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddec\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  kr: {
    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
    char: "\ud83c\uddf0\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  south_sudan: {
    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  es: {
    keywords: [ "spain", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  sri_lanka: {
    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf1\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  sudan: {
    keywords: [ "sd", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\udde9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  suriname: {
    keywords: [ "sr", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  swaziland: {
    keywords: [ "sz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  sweden: {
    keywords: [ "se", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  switzerland: {
    keywords: [ "ch", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde8\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  syria: {
    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf8\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  taiwan: {
    keywords: [ "tw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tajikistan: {
    keywords: [ "tj", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddef",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tanzania: {
    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  thailand: {
    keywords: [ "th", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  timor_leste: {
    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf1",
    fitzpatrick_scale: false,
    category: "flags"
  },
  togo: {
    keywords: [ "tg", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tokelau: {
    keywords: [ "tk", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf0",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tonga: {
    keywords: [ "to", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf4",
    fitzpatrick_scale: false,
    category: "flags"
  },
  trinidad_tobago: {
    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf9",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tunisia: {
    keywords: [ "tn", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tr: {
    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  turkmenistan: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  turks_caicos_islands: {
    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\udde8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  tuvalu: {
    keywords: [ "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddf9\ud83c\uddfb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  uganda: {
    keywords: [ "ug", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfa\ud83c\uddec",
    fitzpatrick_scale: false,
    category: "flags"
  },
  ukraine: {
    keywords: [ "ua", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfa\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  united_arab_emirates: {
    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
    char: "\ud83c\udde6\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  uk: {
    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
    char: "\ud83c\uddec\ud83c\udde7",
    fitzpatrick_scale: false,
    category: "flags"
  },
  england: {
    keywords: [ "flag", "english" ],
    char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",
    fitzpatrick_scale: false,
    category: "flags"
  },
  scotland: {
    keywords: [ "flag", "scottish" ],
    char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",
    fitzpatrick_scale: false,
    category: "flags"
  },
  wales: {
    keywords: [ "flag", "welsh" ],
    char: "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",
    fitzpatrick_scale: false,
    category: "flags"
  },
  us: {
    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfa\ud83c\uddf8",
    fitzpatrick_scale: false,
    category: "flags"
  },
  us_virgin_islands: {
    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\uddee",
    fitzpatrick_scale: false,
    category: "flags"
  },
  uruguay: {
    keywords: [ "uy", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfa\ud83c\uddfe",
    fitzpatrick_scale: false,
    category: "flags"
  },
  uzbekistan: {
    keywords: [ "uz", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfa\ud83c\uddff",
    fitzpatrick_scale: false,
    category: "flags"
  },
  vanuatu: {
    keywords: [ "vu", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\uddfa",
    fitzpatrick_scale: false,
    category: "flags"
  },
  vatican_city: {
    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\udde6",
    fitzpatrick_scale: false,
    category: "flags"
  },
  venezuela: {
    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  vietnam: {
    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfb\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  wallis_futuna: {
    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfc\ud83c\uddeb",
    fitzpatrick_scale: false,
    category: "flags"
  },
  western_sahara: {
    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddea\ud83c\udded",
    fitzpatrick_scale: false,
    category: "flags"
  },
  yemen: {
    keywords: [ "ye", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddfe\ud83c\uddea",
    fitzpatrick_scale: false,
    category: "flags"
  },
  zambia: {
    keywords: [ "zm", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddff\ud83c\uddf2",
    fitzpatrick_scale: false,
    category: "flags"
  },
  zimbabwe: {
    keywords: [ "zw", "flag", "nation", "country", "banner" ],
    char: "\ud83c\uddff\ud83c\uddfc",
    fitzpatrick_scale: false,
    category: "flags"
  },
  united_nations: {
    keywords: [ "un", "flag", "banner" ],
    char: "\ud83c\uddfa\ud83c\uddf3",
    fitzpatrick_scale: false,
    category: "flags"
  },
  pirate_flag: {
    keywords: [ "skull", "crossbones", "flag", "banner" ],
    char: "\ud83c\udff4\u200d\u2620\ufe0f",
    fitzpatrick_scale: false,
    category: "flags"
  }
});js/tinymce/plugins/emoticons/plugin.min.js000064400000015344151727150240014742 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function r(){}function i(t){return function(){return t}}function t(t){return t}function n(){return c}var m,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=i(!1),a=i(!(m=null)),c={fold:function(t,n){return t()},isSome:l,isNone:a,getOr:t,getOrThunk:o,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:o,map:n,each:r,bind:n,exists:l,forall:a,filter:function(){return c},toArray:function(){return[]},toString:i("none()")};function o(t){return t()}function g(t){var n=t;return{get:function(){return n},set:function(t){n=t}}}function d(t,n){for(var e=k(t),o=0,r=e.length;o<r;o++){var i=e[o];n(t[i],i)}}function h(t,n){return j.call(t,n)}function s(){var t,n,e=(t=r,n=g(O.none()),{clear:function(){o(),n.set(O.none())},isSet:function(){return n.get().isSome()},get:function(){return n.get()},set:function(t){o(),n.set(O.some(t))}});function o(){return n.get().each(t)}return C(C({},e),{on:function(t){return e.get().each(t)}})}function f(t,n){return-1!==t.indexOf(n)}function v(i,r,t){var a=s(),c=s(),f=i.getParam("emoticons_images_url","https://twemoji.maxcdn.com/v/13.0.1/72x72/","string");i.on("init",function(){_.load(t,r).then(function(t){var n,e,o,l,s,r=(n=i.getParam("emoticons_append",{},"object"),e=function(t){return C({keywords:[],category:"user"},t)},A(n,function(t,n){return{k:n,v:e(t)}}));o=w(t,r),l={},s=[],d(o,function(t,n){var e,o,r,i,a,c={title:n,keywords:t.keywords,char:(i=(r=t).char).length>=(a="<img").length&&i.substr(0,0+a.length)===a?r.char.replace(/src="([^"]+)"/,function(t,n){return'src="'+f+n+'"'}):r.char,category:h(e=D,o=t.category)?e[o]:o},u=void 0!==l[c.category]?l[c.category]:[];l[c.category]=u.concat([c]),s.push(c)}),a.set(l),c.set(s)},function(t){console.log("Failed to load emoticons: "+t),a.set({}),c.set([])})});function e(){return c.get().getOr([])}function u(){return a.isSet()&&c.isSet()}return{listCategories:function(){return[P].concat(k(a.get().getOr({})))},hasLoaded:u,waitForLoad:function(){return u()?x.resolve(!0):new x(function(t,n){var e=15,o=T.setInterval(function(){u()?(T.clearInterval(o),t(!0)):--e<0&&(console.log("Could not load emojis from url: "+r),T.clearInterval(o),n(!1))},100)})},listAll:e,listCategory:function(n){return n===P?e():a.get().bind(function(t){return O.from(t[n])}).getOr([])}}}function y(t,n,e){for(var o,r,i=[],a=n.toLowerCase(),c=e.fold(function(){return l},function(n){return function(t){return n<=t}}),u=0;u<t.length&&(0!==n.length&&(o=t[u],r=a,!f(o.title.toLowerCase(),r)&&!function(t){for(var n=0,e=t.length;n<e;n++)if(f(t[n].toLowerCase(),r))return 1}(o.keywords))||(i.push({value:t[u].char,text:t[u].title,icon:t[u].char}),!c(i.length)));u++);return i}function p(o,i){var e,r,t={pattern:"",results:y(i.listAll(),"",O.some(300))},a=g(P),c=(e=function(t){var n,e=(n=t).getData(),o=a.get(),r=y(i.listCategory(o),e[S],o===P?O.some(300):O.none());n.setData({results:r})},r=null,{cancel:u,throttle:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];u(),r=setTimeout(function(){r=null,e.apply(null,t)},200)}});function u(){m===r||(clearTimeout(r),r=null)}function n(){return{title:"Emoticons",size:"normal",body:{type:"tabpanel",tabs:function(t){for(var n=t.length,e=new Array(n),o=0;o<n;o++){var r=t[o];e[o]={title:r,name:r,items:[l,s]}}return e}(i.listCategories())},initialData:t,onTabChange:function(t,n){a.set(n.newTabName),c.throttle(t)},onChange:c.throttle,onAction:function(t,n){var e;"results"===n.name&&(e=n.value,o.insertContent(e),t.close())},buttons:[{type:"cancel",text:"Close",primary:!0}]}}var l={label:"Search",type:"input",name:S},s={type:"collection",name:"results"},f=o.windowManager.open(n());f.focus(S),i.hasLoaded()||(f.block("Loading emoticons..."),i.waitForLoad().then(function(){f.redial(n()),c.throttle(f),f.focus(S),f.unblock()}).catch(function(t){f.redial({title:"Emoticons",body:{type:"panel",items:[{type:"alertbanner",level:"error",icon:"warning",text:"<p>Could not load emoticons</p>"}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),f.focus(S),f.unblock()}))}function b(t){t.on("PreInit",function(){t.parser.addAttributeFilter("data-emoticon",function(t){!function(t){for(var n,e=0,o=t.length;e<o;e++)(n=t[e]).attr("data-mce-resize","false"),n.attr("data-mce-placeholder","1")}(t)})})}function w(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(0===t.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<t.length;o++){var r,i=t[o];for(r in i)h(i,r)&&(e[r]=(e[r],i[r]))}return e}var u=function(e){function t(){return r}function n(t){return t(e)}var o=i(e),r={fold:function(t,n){return n(e)},isSome:a,isNone:l,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:t,orThunk:t,map:function(t){return u(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?r:c},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},O={some:u,none:n,from:function(t){return null==t?c:u(t)}},C=function(){return(C=Object.assign||function(t){for(var n,e=1,o=arguments.length;e<o;e++)for(var r in n=arguments[e])Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r]);return t}).apply(this,arguments)},k=Object.keys,j=Object.hasOwnProperty,A=function(t,o){var r={};return d(t,function(t,n){var e=o(t,n);r[e.k]=e.v}),r},_=tinymce.util.Tools.resolve("tinymce.Resource"),T=tinymce.util.Tools.resolve("tinymce.util.Delay"),x=tinymce.util.Tools.resolve("tinymce.util.Promise"),P="All",D={symbols:"Symbols",people:"People",animals_and_nature:"Animals and Nature",food_and_drink:"Food and Drink",activity:"Activity",travel_and_places:"Travel and Places",objects:"Objects",flags:"Flags",user:"User Defined"},S="pattern";e.add("emoticons",function(t,n){var e,o,r,i,a,c,u,l,s=(o=n,r=(e=t).getParam("emoticons_database","emojis","string"),e.getParam("emoticons_database_url",o+"/js/"+r+e.suffix+".js","string")),f=t.getParam("emoticons_database_id","tinymce.plugins.emoticons","string"),m=v(t,s,f);function g(){return c.execCommand("mceEmoticons")}a=m,(i=t).addCommand("mceEmoticons",function(){return p(i,a)}),(c=t).ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:g}),c.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:g}),l=m,(u=t).ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(t,n){return l.waitForLoad().then(function(){return y(l.listAll(),t,O.some(n))})},onAction:function(t,n,e){u.selection.setRng(n),u.insertContent(e),t.hide()}}),b(t)})}();js/tinymce/plugins/anchor/plugin.min.js000064400000005230151727150240014205 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function a(e){return e.getAttribute("id")||e.getAttribute("name")||""}function c(e){return e&&"a"===e.nodeName.toLowerCase()&&!e.getAttribute("href")&&""!==a(e)}function d(e){return e.dom.getParent(e.selection.getStart(),l)}function r(e,t){var o,a,n,r,i,l=d(e);l?(n=e,r=t,(i=l).removeAttribute("name"),i.id=r,n.addVisual(),n.undoManager.add()):(a=t,(o=e).undoManager.transact(function(){var e,n;o.getParam("allow_html_in_named_anchor",!1,"boolean")||o.selection.collapse(!0),o.selection.isCollapsed()?o.insertContent(o.dom.createHTML("a",{id:a})):(n=(e=o).dom,u(n).walk(e.selection.getRng(),function(e){s.each(e,function(e){var t;c(t=e)&&!t.firstChild&&n.remove(e,!1)})}),o.formatter.remove("namedAnchor",null,null,!0),o.formatter.apply("namedAnchor",{value:a}),o.addVisual())})),e.focus()}function i(r){return function(e){for(var t,n=0;n<e.length;n++){var o=e[n],a=void 0;!(a=t=o)||a.attr("href")||!a.attr("id")&&!a.attr("name")||t.firstChild||o.attr("contenteditable",r)}}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),s=tinymce.util.Tools.resolve("tinymce.util.Tools"),l="a:not([href])";e.add("anchor",function(e){var t,n,o;(t=e).on("PreInit",function(){t.parser.addNodeFilter("a",i("false")),t.serializer.addNodeFilter("a",i(null))}),(n=e).addCommand("mceAnchor",function(){var o,e,t;t=(e=d(o=n))?a(e):"",o.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(e){var t=o,n=e.getData().id;(/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(n)?(r(t,n),0):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))||e.close()}})}),(o=e).ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return o.execCommand("mceAnchor")},onSetup:function(e){return o.selection.selectorChangedWithUnbind("a:not([href])",e.setActive).unbind}}),o.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return o.execCommand("mceAnchor")}}),e.on("PreInit",function(){e.formatter.register("namedAnchor",{inline:"a",selector:l,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:c})})})}();js/tinymce/plugins/contextmenu/plugin.min.js000064400000000615151727150250015307 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){})}();js/tinymce/plugins/legacyoutput/plugin.min.js000064400000005674151727150250015475 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("legacyoutput",function(e){var s,t;(t=s=e).settings.inline_styles=!1,t.getParam("fontsize_formats")||(t.settings.fontsize_formats="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t.getParam("font_formats")||(t.settings.font_formats="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),s.on("PreInit",function(){var e=s,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=l.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),a=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all",preserve_attributes:["class","style"]},{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all",preserve_attributes:["class","style"]},{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return String(l.inArray(i,e.value)+1)}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),l.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),l.each(t.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})})}();js/tinymce/plugins/searchreplace/plugin.min.js000064400000034415151727150250015544 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function g(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function p(){}function i(e){return function(){return e}}function n(e){return e}function r(){return m}var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=function(){return(v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},a=e("string"),c=e("array"),u=t("boolean"),l=t("number"),s=i(!1),f=i(!0),d=i("[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]"),m={fold:function(e,t){return e()},isSome:s,isNone:f,getOr:n,getOrThunk:h,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:n,orThunk:h,map:r,each:p,bind:r,exists:s,forall:f,filter:function(){return m},toArray:function(){return[]},toString:i("none()")};function h(e){return e()}function y(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r}function x(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function b(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}function w(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!c(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);A.apply(t,e[n])}return t}(y(e,t))}function O(e,t){return D.call(e,t)}var C=function(n){function e(){return o}function t(e){return e(n)}var r=i(n),o={fold:function(e,t){return t(n)},isSome:f,isNone:s,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return C(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:m},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:C,none:r,from:function(e){return null==e?m:C(e)}},E=d,N=tinymce.util.Tools.resolve("tinymce.Env"),k=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=Array.prototype.slice,A=Array.prototype.push,D=Object.hasOwnProperty;function M(e,t,n){!function(e,t,n){if(!(a(n)||u(n)||l(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}(e.dom,t,n)}function B(e,t){return{element:e,offset:t}}function F(e,t){var n,r;n=e,r=t,T.from(n.dom.parentNode).map(fe.fromDom).each(function(e){e.dom.insertBefore(r.dom,n.dom)}),t.dom.appendChild(e.dom)}function I(e){return de.get(e)}function P(e,t){return e.isBlock(t)||O(e.schema.getShortEndedElements(),t.nodeName)}function R(e,t){return"false"===e.getContentEditable(t)}function W(e,t){return!e.isBlock(t)&&O(e.schema.getWhiteSpaceElements(),t.nodeName)}function j(){return{sOffset:0,fOffset:0,elements:[]}}function V(e,t){return n=fe.fromDom(e),r=t,0<(o=y(n.dom.childNodes,fe.fromDom)).length&&r<o.length?B(o[r],0):B(n,r);var n,r,o}function H(e,t,n,r,o,i){for(var a=(i=void 0===i||i)?t(!1):n;a;){var c=R(e,a);if(c||W(e,a)){if(c?r.cef(a):r.boundary(a))break;a=t(!0)}else{if(P(e,a)){if(r.boundary(a))break}else 3===a.nodeType&&r.text(a);if(a===o)break;a=t(!1)}}}function L(e,t,n,r,o){var i,a,c,u,l,s;P(i=e,a=n)||R(i,a)||W(i,a)||"true"===(c=i).getContentEditable(u=a)&&"false"===c.getContentEditableParent(u.parentNode)||(l=e.getParent(r,e.isBlock),s=new me(n,l),H(e,(o?s.next:s.prev).bind(s),n,{boundary:f,cef:f,text:function(e){o?t.fOffset+=e.length:t.sOffset+=e.length,t.elements.push(fe.fromDom(e))}}))}function U(e,t,n,r,o,i){void 0===i&&(i=!0);var a=new me(n,t),c=[],u=j();function l(){return 0<u.elements.length&&(c.push(u),u=j()),!1}return L(e,u,n,t,!1),H(e,a.next.bind(a),n,{boundary:l,cef:function(e){return l(),o&&c.push.apply(c,o.cef(e)),!1},text:function(e){u.elements.push(fe.fromDom(e)),o&&o.text(e,u)}},r,i),r&&L(e,u,r,t,!0),l(),c}function $(u,e){var n=V(e.startContainer,e.startOffset),r=n.element.dom,o=V(e.endContainer,e.endOffset),i=o.element.dom;return U(u,e.commonAncestorContainer,r,i,{text:function(e,t){e===i?t.fOffset+=e.length-o.offset:e===r&&(t.sOffset+=n.offset)},cef:function(e){var t,n,r,o,i,a=w((n=fe.fromDom(e),r="*[contenteditable=true]",1!==(o=i=void 0===n?document:n.dom).nodeType&&9!==o.nodeType&&11!==o.nodeType||0===o.childElementCount?[]:y(i.querySelectorAll(r),fe.fromDom)),function(e){var t=e.dom;return U(u,t,t)}),c=function(e,t){return n=e.elements[0].dom,r=t.elements[0].dom,o=Node.DOCUMENT_POSITION_PRECEDING,0!=(n.compareDocumentPosition(r)&o)?1:-1;var n,r,o};return(t=S.call(a,0)).sort(c),t}},!1)}function _(e,t){return t.collapsed?[]:$(e,t)}function z(e,t){var n=e.createRng();return n.selectNode(t),_(e,n)}function q(c,e){return w(e,function(e){var a,n,r,t=e.elements,o=y(t,I).join(""),i=function(e,t,n,r){void 0===r&&(r=e.length);var o=t.regex;o.lastIndex=n=void 0===n?0:n;for(var i,a=[];i=o.exec(e);){var c=i[t.matchIndex],u=i.index+i[0].indexOf(c),l=u+c.length;if(r<l)break;a.push({start:u,finish:l}),o.lastIndex=l}return a}(o,c,e.sOffset,o.length-e.fOffset);return a=i,function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,a=e.length;i<a;i++){var c=e[i],u=t(c);u!==n&&(r.push(o),o=[]),n=u,o.push(c)}return 0!==o.length&&r.push(o),r}((n=function(e,n){var t=I(n),r=e.last,o=r+t.length,i=w(a,function(e,t){return e.start<o&&e.finish>r?[{element:n,start:Math.max(r,e.start)-r,finish:Math.min(o,e.finish)-r,matchId:t}]:[]});return{results:e.results.concat(i),last:o}},r={results:[],last:0},x(t,function(e,t){r=n(r,e)}),r.results),function(e){return e.matchId})})}function G(e,i){b(e,function(e,o){b(e,function(e){var t=fe.fromDom(i.cloneNode(!1));M(t,"data-mce-index",o);var n,r=e.element.dom;r.length===e.finish&&0===e.start?F(e.element,t):(r.length!==e.finish&&r.splitText(e.finish),n=r.splitText(e.start),F(fe.fromDom(n),t))})})}function K(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function J(e,t,n,r){var o=e.dom.create("span",{"data-mce-bogus":1});o.className="mce-match-marker";var i,a,c,u,l,s,f,d,m,h,g=e.getBody();return he(e,t,!1),r?(c=e.dom,u=n,l=e.selection,s=o,d=l.getBookmark(),m=c.select("td[data-mce-selected],th[data-mce-selected]"),G(h=q(u,0<m.length?(f=c,w(m,function(e){return z(f,e)})):_(c,l.getRng())),s),l.moveToBookmark(d),h.length):(i=o,G(a=q(n,z(e.dom,g)),i),a.length)}function Q(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function X(e,t){var n=[],r=k.toArray(e.getBody().getElementsByTagName("span"));if(r.length)for(var o=0;o<r.length;o++){var i=K(r[o]);null!==i&&i.length&&i===t.toString()&&n.push(r[o])}return n}function Y(e,t,n){var r=t.get(),o=r.index,i=e.dom;(n=!1!==n)?o+1===r.count?o=0:o++:o-1==-1?o=r.count-1:o--,i.removeClass(X(e,r.index),"mce-match-marker-selected");var a=X(e,o);return a.length?(i.addClass(X(e,o),"mce-match-marker-selected"),e.selection.scrollIntoView(a[0]),o):-1}function Z(e,t){var n=t.parentNode;e.remove(t),e.isEmpty(n)&&e.remove(n)}function ee(e,t,n,r,o,i){var a,c,u,l=e.selection,s=(a=o,c="("+n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&").replace(/\s/g,"[^\\S\\r\\n\\uFEFF]")+")",a?"(?:^|\\s|"+E()+")"+c+"(?=$|\\s|"+E()+")":c),f=l.isForward(),d=J(e,t,{regex:new RegExp(s,r?"g":"gi"),matchIndex:1},i);return N.browser.isSafari()&&l.setRng(l.getRng(),f),d&&(u=Y(e,t,!0),t.set({index:u,count:d,text:n,matchCase:r,wholeWord:o,inSelection:i})),d}function te(e,t){var n=Y(e,t,!0);t.set(v(v({},t.get()),{index:n}))}function ne(e,t){var n=Y(e,t,!1);t.set(v(v({},t.get()),{index:n}))}function re(e){var t=K(e);return null!==t&&0<t.length}function oe(e,t,n,r,o){var i,a=t.get(),c=a.index,u=c;r=!1!==r;for(var l=e.getBody(),s=k.grep(k.toArray(l.getElementsByTagName("span")),re),f=0;f<s.length;f++){var d=K(s[f]),m=i=parseInt(d,10);if(o||m===a.index){for(n.length?(s[f].firstChild.nodeValue=n,Q(s[f])):Z(e.dom,s[f]);s[++f];){if((m=parseInt(K(s[f]),10))!==i){f--;break}Z(e.dom,s[f])}r&&u--}else c<i&&s[f].setAttribute("data-mce-index",String(i-1))}return t.set(v(v({},a),{count:o?0:a.count-1,index:u})),(r?te:ne)(e,t),!o&&0<t.get().count}function ie(i,a){var e,t,n,r=(e=p,t=g(T.none()),v(v({},n={clear:function(){o(),t.set(T.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){o(),t.set(T.some(e))}}),{on:function(e){return n.get().each(e)}}));function o(){return t.get().each(e)}function c(e){(1<a.get().count?e.enable:e.disable)("next"),(1<a.get().count?e.enable:e.disable)("prev")}function u(e,t){x(["replace","replaceall","prev","next"],t?e.disable:e.enable)}function l(e,t){N.browser.isSafari()&&N.deviceType.isTouch()&&("find"===t||"replace"===t||"replaceall"===t)&&e.focus(t)}function s(e){he(i,a,!1),u(e,!0),c(e)}function f(e){var t,n,r=e.getData(),o=a.get();r.findtext.length?(o.text===r.findtext&&o.matchCase===r.matchcase&&o.wholeWord===r.wholewords?te(i,a):((t=ee(i,a,r.findtext,r.matchcase,r.wholewords,r.inselection))<=0&&(n=e,i.windowManager.alert("Could not find the specified string.",function(){n.focus("findtext")})),u(e,0===t)),c(e)):s(e)}i.undoManager.add();var d=k.trim(i.selection.getContent({format:"text"})),m=a.get(),h={title:"Find and Replace",size:"normal",body:{type:"panel",items:[{type:"bar",items:[{type:"input",name:"findtext",placeholder:"Find",maximized:!0,inputMode:"search"},{type:"button",name:"prev",text:"Previous",icon:"action-prev",disabled:!0,borderless:!0},{type:"button",name:"next",text:"Next",icon:"action-next",disabled:!0,borderless:!0}]},{type:"input",name:"replacetext",placeholder:"Replace with",inputMode:"search"}]},buttons:[{type:"menu",name:"options",icon:"preferences",tooltip:"Preferences",align:"start",items:[{type:"togglemenuitem",name:"matchcase",text:"Match case"},{type:"togglemenuitem",name:"wholewords",text:"Find whole words only"},{type:"togglemenuitem",name:"inselection",text:"Find in selection"}]},{type:"custom",name:"find",text:"Find",primary:!0},{type:"custom",name:"replace",text:"Replace",disabled:!0},{type:"custom",name:"replaceall",text:"Replace all",disabled:!0}],initialData:{findtext:d,replacetext:"",wholewords:m.wholeWord,matchcase:m.matchCase,inselection:m.inSelection},onChange:function(e,t){"findtext"===t.name&&0<a.get().count&&s(e)},onAction:function(e,t){var n,r,o=e.getData();switch(t.name){case"find":f(e);break;case"replace":(oe(i,a,o.replacetext)?c:s)(e);break;case"replaceall":oe(i,a,o.replacetext,!0,!0),s(e);break;case"prev":ne(i,a),c(e);break;case"next":te(i,a),c(e);break;case"matchcase":case"wholewords":case"inselection":n=e.getData(),r=a.get(),a.set(v(v({},r),{matchCase:n.matchcase,wholeWord:n.wholewords,inSelection:n.inselection})),s(e)}l(e,t.name)},onSubmit:function(e){f(e),l(e,"find")},onClose:function(){i.focus(),he(i,a),i.undoManager.add()}};r.set(i.windowManager.open(h,{inline:"toolbar"}))}function ae(e,t){return function(){ie(e,t)}}"undefined"!=typeof window||Function("return this;")();function ce(e){return 3===e.dom.nodeType}function ue(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var le,se,fe={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ue(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return ue(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return ue(n)},fromDom:ue,fromPoint:function(e,t,n){return T.from(e.dom.elementFromPoint(t,n)).map(ue)}},de=(le=ce,{get:function(e){if(!le(e))throw new Error("Can only get text value of a text node");return se(e).getOr("")},getOption:se=function(e){return le(e)?T.from(e.dom.nodeValue):T.none()},set:function(e,t){if(!le(e))throw new Error("Can only set raw text value of a text node");e.dom.nodeValue=t}}),me=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),he=function(e,t,n){for(var r,o,i=t.get(),a=k.toArray(e.getBody().getElementsByTagName("span")),c=0;c<a.length;c++){var u=K(a[c]);null!==u&&u.length&&(u===i.index.toString()&&(r=r||a[c].firstChild,o=a[c].firstChild),Q(a[c]))}if(t.set(v(v({},i),{index:-1,count:0,text:""})),r&&o){var l=e.dom.createRng();return l.setStart(r,0),l.setEnd(o,o.data.length),!1!==n&&e.selection.setRng(l),l}};o.add("searchreplace",function(e){var t,n,r,o,i,a=g({index:-1,count:0,text:"",matchCase:!1,wholeWord:!1,inSelection:!1}),c=a;return(t=e).addCommand("SearchReplace",function(){ie(t,c)}),(n=e).ui.registry.addMenuItem("searchreplace",{text:"Find and replace...",shortcut:"Meta+F",onAction:ae(n,r=a),icon:"search"}),n.ui.registry.addButton("searchreplace",{tooltip:"Find and replace",onAction:ae(n,r),icon:"search"}),n.shortcuts.add("Meta+F","",ae(n,r)),o=e,i=a,{done:function(e){return he(o,i,e)},find:function(e,t,n,r){return ee(o,i,e,t,n,r=void 0!==r&&r)},next:function(){return te(o,i)},prev:function(){return ne(o,i)},replace:function(e,t,n){return oe(o,i,e,t,n)}}})}();js/tinymce/plugins/toc/plugin.min.js000064400000006322151727150250013524 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function a(t){return t.getParam("toc_class","mce-toc")}function s(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"}function u(n){return function(t){function e(){return t.setDisabled(n.mode.isReadOnly()||!(0<g(n).length))}return e(),n.on("LoadContent SetContent change",e),function(){return n.on("LoadContent SetContent change",e)}}}function d(t){var e,n,o,i="",r=g(t),c=function(t){for(var e=9,n=0;n<t.length;n++)if(1===(e=t[n].level<e?t[n].level:e))return e;return e}(r)-1;if(!r.length)return"";i+=(e=s(t),n=v.translate("Table of Contents"),o="</"+e+">","<"+e+' contenteditable="true">'+m.DOM.encode(n)+o);for(var l=0;l<r.length;l++){var a=r[l];a.element.id=a.id;var u=r[l+1]&&r[l+1].level;if(c===a.level)i+="<li>";else for(var d=c;d<a.level;d++)i+="<ul><li>";if(i+='<a href="#'+a.id+'">'+a.title+"</a>",u!==a.level&&u)for(d=a.level;u<d;d--)i+=d===u+1?"</li></ul><li>":"</li></ul>";else i+="</li>",u||(i+="</ul>");c=a.level}return i}function f(t){var e=a(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(d(t))})}var t,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),v=tinymce.util.Tools.resolve("tinymce.util.I18n"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=(t=0,function(){return"mcetoc_"+(new Date).getTime().toString(32)+(t++).toString(32)}),g=function(n){var t,o=a(n),e=s(n),i=function(t){for(var e=[],n=1;n<=t;n++)e.push("h"+n);return e.join(",")}(1<=(t=parseInt(n.getParam("toc_depth","3"),10))&&t<=9?t:3),r=n.$(i);return r.length&&/^h[1-9]$/i.test(e)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),c.map(r,function(t){return{id:t.id||l(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})};e.add("toc",function(t){var c,e,n,o,i,r;function l(){return i.execCommand("mceInsertToc")}(c=t).addCommand("mceInsertToc",function(){var t,e,n,o,i,r;o=a(t=c),i=t.$("."+o),r=t,!i.length||0<r.dom.getParents(i[0],".mce-offscreen-selection").length?t.insertContent((n=d(e=t),'<div class="'+e.dom.encode(a(e))+'" contenteditable="false">'+n+"</div>")):f(t)}),c.addCommand("mceUpdateToc",function(){f(c)}),(i=t).ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:l,onSetup:u(i)}),i.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return i.execCommand("mceUpdateToc")}}),i.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:l,onSetup:u(i)}),i.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:(r=i,function(t){return t&&r.dom.is(t,"."+a(r))&&r.getBody().contains(t)}),scope:"node",position:"node"}),n=(e=t).$,o=a(e),e.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),e.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})})}();js/tinymce/plugins/media/plugin.min.js000064400000042214151727150250014016 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function e(n){return function(e){return r=typeof(t=e),(null===t?"null":"object"==r&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":r)===n;var t,r}}function s(e){return null!=e}function o(e){return function(){return e}}function t(e){return e}function r(){return d}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=function(){return(p=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},i=e("string"),u=e("object"),l=e("array"),c=o(!1),m=o(!0),d={fold:function(e,t){return e()},isSome:c,isNone:m,getOr:t,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:t,orThunk:a,map:r,each:function(){},bind:r,exists:c,forall:m,filter:function(){return d},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function h(e,t){for(var r=0,n=e.length;r<n;r++)t(e[r],r)}function f(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function g(e,t){return J(e,t)?W.from(e[t]):W.none()}function v(e){return e.getParam("media_scripts")}function b(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]}function w(e){return e.replace(/px$/,"")}function y(i,e){var c=f(!1),s={};return V({validate:!1,allow_conditional_comments:!0,start:function(e,t){if(!c.get())if(J(t.map,"data-ephox-embed-iri"))c.set(!0),o=(a=(n=t).map.style)?X.parseStyle(a):{},s={type:"ephox-embed-iri",source:n.map["data-ephox-embed-iri"],altsource:"",poster:"",width:g(o,"max-width").map(w).getOr(""),height:g(o,"max-height").map(w).getOr("")};else{if(s.source||"param"!==e||(s.source=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(s.type||(s.type=e),s=K.extend(t.map,s)),"script"===e){var r=b(i,t.map.src);if(!r)return;s={type:"script",source:t.map.src,width:String(r.width),height:String(r.height)}}"source"===e&&(s.source?s.altsource||(s.altsource=t.map.src):s.source=t.map.src),"img"!==e||s.poster||(s.poster=t.map.src)}var n,a,o}}).parse(e),s.source=s.source||s.src||s.data,s.altsource=s.altsource||"",s.poster=s.poster||"",s}function x(e){return{mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()]||""}function j(e){return/^[0-9.]+$/.test(e)?e+"px":e}function O(o,e){!function(e){for(var t=q(e),r=0,n=t.length;r<n;r++){var a=t[r];!function(e,t){var r=""+e;if(o.map[t])for(var n=o.length;n--;){var a=o[n];a.name===t&&(r?(o.map[t]=r,a.value=r):(delete o.map[t],o.splice(n,1)))}else r&&(o.push({name:t,value:r}),o.map[t]=r)}(e[a],a)}}(e)}function S(e,c,s){var u,l=Z(),m=f(!1),d=0;return V({validate:!1,allow_conditional_comments:!0,comment:function(e){l.comment(e)},cdata:function(e){l.cdata(e)},text:function(e,t){l.text(e,t)},start:function(e,t,r){if(!m.get())if(J(t.map,"data-ephox-embed-iri"))m.set(!0),n=c,(i=(o=(a=t).map.style)?ee.parseStyle(o):{})["max-width"]=j(n.width),i["max-height"]=j(n.height),O(a,{style:ee.serializeStyle(i)});else{switch(e){case"video":case"object":case"embed":case"img":case"iframe":void 0!==c.height&&void 0!==c.width&&O(t,{width:c.width,height:c.height})}if(s)switch(e){case"video":O(t,{poster:c.poster,src:""}),c.altsource&&O(t,{src:""});break;case"iframe":O(t,{src:c.source});break;case"source":if(d<2&&(O(t,{src:c[te[d]],type:c[te[d]+"mime"]}),!c[te[d]]))return;d++;break;case"img":if(!c.poster)return;u=!0}}var n,a,o,i;l.start(e,t,r)},end:function(e){if(!m.get()){if("video"===e&&s)for(var t,r=0;r<2;r++)c[te[r]]&&((t=[]).map={},d<=r&&(O(t,{src:c[te[r]],type:c[te[r]+"mime"]}),l.start("source",t,!0)));var n;c.poster&&"object"===e&&s&&!u&&((n=[]).map={},O(n,{src:c.poster,width:c.width,height:c.height}),l.start("img",n,!0))}l.end(e)}},Y({})).parse(e),l.getContent()}function _(e,t){for(var r,n=(r=t.match(/^(https?:\/\/|www\.)(.+)$/i))&&1<r.length&&"www."!==r[1]?r[1]:"https://",a=e.regex.exec(t),o=n+e.url,i=0;i<a.length;i++)!function(e){o=o.replace("$"+e,function(){return a[e]||""})}(i);return o.replace(/\?$/,"")}function k(r,e){var n=K.extend({},e);if(!n.source&&(K.extend(n,y(v(r),n.embed)),!n.source))return"";n.altsource||(n.altsource=""),n.poster||(n.poster=""),n.source=r.convertURL(n.source,"source"),n.altsource=r.convertURL(n.altsource,"source"),n.sourcemime=x(n.source),n.altsourcemime=x(n.altsource),n.poster=r.convertURL(n.poster,"poster");var t,a,o=(t=n.source,0<(a=re.filter(function(e){return e.regex.test(t)})).length?K.extend({},a[0],{url:_(a[0],t)}):null);if(o&&(n.source=o.url,n.type=o.type,n.allowfullscreen=o.allowFullscreen,n.width=n.width||String(o.w),n.height=n.height||String(o.h)),n.embed)return S(n.embed,n,!0);var i=b(v(r),n.source);i&&(n.type="script",n.width=String(i.width),n.height=String(i.height));var c,s,u,l,m=r.getParam("audio_template_callback"),d=r.getParam("video_template_callback");return n.width=n.width||"300",n.height=n.height||"150",K.each(n,function(e,t){n[t]=r.dom.encode(""+e)}),"iframe"===n.type?(l=n.allowfullscreen?' allowFullscreen="1"':"",'<iframe src="'+n.source+'" width="'+n.width+'" height="'+n.height+'"'+l+"></iframe>"):"application/x-shockwave-flash"===n.sourcemime?(u='<object data="'+n.source+'" width="'+n.width+'" height="'+n.height+'" type="application/x-shockwave-flash">',n.poster&&(u+='<img src="'+n.poster+'" width="'+n.width+'" height="'+n.height+'" />'),u+"</object>"):-1!==n.sourcemime.indexOf("audio")?(s=n,m?m(s):'<audio controls="controls" src="'+s.source+'">'+(s.altsource?'\n<source src="'+s.altsource+'"'+(s.altsourcemime?' type="'+s.altsourcemime+'"':"")+" />\n":"")+"</audio>"):"script"===n.type?'<script src="'+n.source+'"><\/script>':(c=n,d?d(c):'<video width="'+c.width+'" height="'+c.height+'"'+(c.poster?' poster="'+c.poster+'"':"")+' controls="controls">\n<source src="'+c.source+'"'+(c.sourcemime?' type="'+c.sourcemime+'"':"")+" />\n"+(c.altsource?'<source src="'+c.altsource+'"'+(c.altsourcemime?' type="'+c.altsourcemime+'"':"")+" />\n":"")+"</video>")}function A(e){return e.hasAttribute("data-mce-object")||e.hasAttribute("data-ephox-embed-iri")}function T(t){return function(e){return k(t,e)}}function C(e,t){var r,n,a,o,i,c=e.getParam("media_url_resolver");return c?(a=t,o=T(e),i=c,new ne(function(t,e){function r(e){return e.html&&(ae[a.source]=e),t({url:a.source,html:e.html||o(a)})}ae[a.source]?r(ae[a.source]):i({url:a.source},r,e)})):(n=T(e),ne.resolve({html:n(r=t),url:r.source}))}function D(e,t){var r,n,o,i,c,a=t?g(e,t).bind(function(e){return g(e,"meta")}).getOr({}):{},s=(o=e,i=a,c=t,function(e){function t(){return g(o,e)}function r(){return g(i,e)}function n(e){return g(e,"value").bind(function(e){return 0<e.length?W.some(e):W.none()})}var a={};return a[e]=(e===c?t().bind(function(e){return u(e)?n(e).orThunk(r):r().orThunk(function(){return W.from(e)})}):r().orThunk(function(){return t().bind(function(e){return u(e)?n(e):W.from(e)})})).getOr(""),a});return p(p(p(p(p({},s("source")),s("altsource")),s("poster")),s("embed")),(r=a,n={},g(e,"dimensions").each(function(e){h(["width","height"],function(t){g(r,t).orThunk(function(){return g(e,t)}).each(function(e){return n[t]=e})})}),n))}function P(e){var n=p(p({},e),{source:{value:g(e,"source").getOr("")},altsource:{value:g(e,"altsource").getOr("")},poster:{value:g(e,"poster").getOr("")}});return h(["width","height"],function(r){g(e,r).each(function(e){var t=n.dimensions||{};t[r]=e,n.dimensions=t})}),n}function $(r){return function(e){var t=e&&e.msg?"Media embed handler error: "+e.msg:"Media embed handler threw unknown error.";r.notificationManager.open({type:"error",text:t})}}function M(e,t){return y(v(e),t)}function F(a,o){return function(e){var t,r,n;i(e.url)&&0<e.url.trim().length&&(t=e.html,r=M(o,t),n=p(p({},r),{source:e.url,embed:t}),a.setData(P(n)))}}function z(e,t){var r=e.dom.select("*[data-mce-object]");e.insertContent(t),function(e,t){for(var r=e.dom.select("*[data-mce-object]"),n=0;n<t.length;n++)for(var a=r.length-1;0<=a;a--)t[n]===r[a]&&r.splice(a,1);e.selection.select(r[0])}(e,r),e.nodeChanged()}function N(m){var e,t,r,n=(r=A(t=(e=m).selection.getNode())?e.serializer.serialize(t,{selection:!0}):"",p({embed:r},y(v(e),r))),d=f(n),a=P(n),o={title:"General",name:"general",items:function(e){for(var t=[],r=0,n=e.length;r<n;++r){if(!l(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);G.apply(t,e[r])}return t}([[{name:"source",type:"urlinput",filetype:"media",label:"Source"}],m.getParam("media_dimensions",!0)?[{type:"sizeinput",name:"dimensions",label:"Constrain proportions",constrain:!0}]:[]])},i=[];m.getParam("media_alt_source",!0)&&i.push({name:"altsource",type:"urlinput",filetype:"media",label:"Alternative source URL"}),m.getParam("media_poster",!0)&&i.push({name:"poster",type:"urlinput",filetype:"image",label:"Media poster (Image URL)"});var c=[o,{title:"Embed",items:[{type:"textarea",name:"embed",label:"Paste your embed code below:"}]}];0<i.length&&c.push({title:"Advanced",name:"advanced",items:i});var h=m.windowManager.open({title:"Insert/Edit Media",size:"normal",body:{type:"tabpanel",tabs:c},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){var t,r,n,a,o=D(e.getData());t=d.get(),n=m,(r=o).embed=S(r.embed,r),r.embed&&(t.source===r.source||(a=r.source,J(ae,a)))?z(n,r.embed):C(n,r).then(function(e){z(n,e.html)}).catch($(n)),e.close()},onChange:function(e,t){switch(t.name){case"source":u=d.get(),l=D(e.getData(),"source"),u.source!==l.source&&(F(h,m)({url:l.source,html:""}),C(m,l).then(F(h,m)).catch($(m)));break;case"embed":c=D((i=e).getData()),s=M(m,c.embed),i.setData(P(s));break;case"dimensions":case"altsource":case"poster":n=t.name,a=D((r=e).getData(),n),o=k(m,a),r.setData(P(p(p({},a),{embed:o})))}var r,n,a,o,i,c,s,u,l;d.set(D(e.getData()))},initialData:a})}function U(o,e){if(!1===o.getParam("media_filter_html",!0))return e;var i,c=Z();return V({validate:!1,allow_conditional_comments:!1,comment:function(e){i||c.comment(e)},cdata:function(e){i||c.cdata(e)},text:function(e,t){i||c.text(e,t)},start:function(e,t,r){if(i=!0,"script"!==e&&"noscript"!==e&&"svg"!==e){for(var n=t.length-1;0<=n;n--){var a=t[n].name;0===a.indexOf("on")&&(delete t.map[a],t.splice(n,1)),"style"===a&&(t[n].value=o.dom.serializeStyle(o.dom.parseStyle(t[n].value),e))}c.start(e,t,r),i=!1}},end:function(e){i||c.end(e)}},Y({})).parse(e),c.getContent()}function E(e,t,r,n){void 0===n&&(n=null);var a=e.attr(r);return s(a)?a:J(t,r)?null:n}function R(e,t,r){var n="img"===t.name||"video"===e.name,a="audio"===e.name?"30":"150",o=n?a:null;t.attr({width:E(e,r,"width",n?"300":null),height:E(e,r,"height",o)})}function L(e,t){var r=t.name,n=new oe("span",1);n.attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":r,class:"mce-preview-object mce-object-"+r}),se(e,t,n);var a,o=e.dom.parseStyle(t.attr("style")),i=new oe(r,1);R(t,i,o),i.attr({src:t.attr("src"),style:t.attr("style"),class:t.attr("class")}),"iframe"===r?i.attr({allowfullscreen:t.attr("allowfullscreen"),frameborder:"0"}):(h(["controls","crossorigin","currentTime","loop","muted","poster","preload"],function(e){i.attr(e,t.attr(e))}),s(a=n.attr("data-mce-html"))&&function(e,t,r,n){for(var a=ce({forced_root_block:!1,validate:!1},e.schema).parse(n,{context:t});a.firstChild;)r.append(a.firstChild)}(e,r,i,unescape(a)));var c=new oe("span",1);return c.attr("class","mce-shim"),n.append(i),n.append(c),n}function I(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri")||(t=e.attr("class"))&&/\btiny-pageembed\b/.test(t))return 1;var t}var B=function(r){function e(){return a}function t(e){return e(r)}var n=o(r),a={fold:function(e,t){return t(r)},isSome:m,isNone:c,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(e){return B(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?a:d},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return a},W={some:B,none:r,from:function(e){return null==e?d:B(e)}},G=Array.prototype.push,q=Object.keys,H=Object.hasOwnProperty,J=function(e,t){return H.call(e,t)},K=tinymce.util.Tools.resolve("tinymce.util.Tools"),Q=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),V=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),X=Q.DOM,Y=tinymce.util.Tools.resolve("tinymce.html.Schema"),Z=tinymce.util.Tools.resolve("tinymce.html.Writer"),ee=Q.DOM,te=["source","altsource"],re=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"player.vimeo.com/video/$2?title=0&amp;byline=0",allowFullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],ne=tinymce.util.Tools.resolve("tinymce.util.Promise"),ae={},oe=tinymce.util.Tools.resolve("tinymce.html.Node"),ie=tinymce.util.Tools.resolve("tinymce.Env"),ce=tinymce.util.Tools.resolve("tinymce.html.DomParser"),se=function(e,t,r){for(var n=t.attributes,a=n.length;a--;){var o=n[a].name,i=n[a].value;"width"!==o&&"height"!==o&&"style"!==o&&("data"!==o&&"src"!==o||(i=e.convertURL(i,o)),r.attr("data-mce-p-"+o,i))}var c=t.firstChild&&t.firstChild.value;c&&(r.attr("data-mce-html",escape(U(e,c))),r.firstChild=null)};n.add("media",function(e){var t,r,d,n,a;function o(){return r.execCommand("mceMedia")}return(t=e).addCommand("mceMedia",function(){N(t)}),(r=e).ui.registry.addToggleButton("media",{tooltip:"Insert/edit media",icon:"embed",onAction:o,onSetup:function(e){var t=r.selection;return e.setActive(A(t.getNode())),t.selectorChangedWithUnbind("img[data-mce-object],span[data-mce-object],div[data-ephox-embed-iri]",e.setActive).unbind}}),r.ui.registry.addMenuItem("media",{icon:"embed",text:"Media...",onAction:o}),e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),(d=e).on("preInit",function(){var t=d.schema.getSpecialElements();K.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var u,r=d.schema.getBoolAttrs();K.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),d.parser.addNodeFilter("iframe,video,audio,object,embed,script",(u=d,function(e){for(var t,r,n,a,o,i,c,s=e.length;s--;)(t=e[s]).parent&&(t.parent.attr("data-mce-object")||"script"===t.name&&!(r=b(v(u),t.attr("src")))||(r&&(r.width&&t.attr("width",r.width.toString()),r.height&&t.attr("height",r.height.toString())),("iframe"===(c=t.name)||"video"===c||"audio"===c)&&u.getParam("media_live_embeds",!0)&&ie.ceFalse?I(t)||t.replace(L(u,t)):I(t)||t.replace((n=u,i=void 0,o=(a=t).name,(i=new oe("img",1)).shortEnded=!0,se(n,a,i),R(a,i,{}),i.attr({style:a.attr("style"),src:ie.transparentSrc,"data-mce-object":o,class:"mce-object mce-object-"+o}),i))))})),d.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var r,n,a,o,i,c,s,u,l=e.length;l--;)if((r=e[l]).parent){for(s=r.attr(t),n=new oe(s,1),"audio"!==s&&"script"!==s&&((u=r.attr("class"))&&-1!==u.indexOf("mce-preview-object")?n.attr({width:r.firstChild.attr("width"),height:r.firstChild.attr("height")}):n.attr({width:r.attr("width"),height:r.attr("height")})),n.attr({style:r.attr("style")}),a=(o=r.attributes).length;a--;){var m=o[a].name;0===m.indexOf("data-mce-p-")&&n.attr(m.substr(11),o[a].value)}"script"===s&&n.attr("type","text/javascript"),(i=r.attr("data-mce-html"))&&((c=new oe("#text",3)).raw=!0,c.value=U(d,unescape(i)),n.append(c)),r.replace(n)}})}),d.on("SetContent",function(){d.$("span.mce-preview-object").each(function(e,t){var r=d.$(t);0===r.find("span.mce-shim").length&&r.append('<span class="mce-shim"></span>')})}),(n=e).on("click keyup touchend",function(){var e=n.selection.getNode();e&&n.dom.hasClass(e,"mce-preview-object")&&n.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),n.on("ObjectSelected",function(e){"script"===e.target.getAttribute("data-mce-object")&&e.preventDefault()}),n.on("ObjectResized",function(e){var t,r=e.target;!r.getAttribute("data-mce-object")||(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(S(t,{width:String(e.width),height:String(e.height)}))))}),a=e,{showDialog:function(){N(a)}}})}();js/tinymce/plugins/bbcode/plugin.min.js000064400000006014151727150250014153 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function i(t){function o(o,e){t=t.replace(o,e)}return t=n.trim(t),o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),t}var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){function e(o,e){t=t.replace(o,e)}var t;o.set&&(o.content=i(o.content)),o.get&&(o.content=(t=o.content,t=n.trim(t),e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/<font>(.*?)<\/font>/gi,"$1"),e(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),e(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),e(/<u>/gi,"[u]"),e(/<blockquote[^>]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/<br \/>/gi,"\n"),e(/<br\/>/gi,"\n"),e(/<br>/gi,"\n"),e(/<p>/gi,""),e(/<\/p>/gi,"\n"),e(/&nbsp;|\u00a0/gi," "),e(/&quot;/gi,'"'),e(/&lt;/gi,"<"),e(/&gt;/gi,">"),e(/&amp;/gi,"&"),t))})})}();js/tinymce/plugins/visualchars/plugin.min.js000064400000013220151727150250015256 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function n(t){return function(n){return typeof n===t}}function i(n){return function(){return n}}function t(n){return n}function e(){return l}var o,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(n){return e=typeof(t=n),(null===t?"null":"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e)===o;var t,e},c=n("boolean"),a=n("number"),s=i(!(o="string")),f=i(!0),l={fold:function(n,t){return n()},isSome:s,isNone:f,getOr:t,getOrThunk:d,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:d,map:e,each:function(){},bind:e,exists:s,forall:f,filter:function(){return l},toArray:function(){return[]},toString:i("none()")};function d(n){return n()}function m(n,t){for(var e=0,o=n.length;e<o;e++)t(n[e],e)}function v(n,t){for(var e=h(n),o=0,r=e.length;o<r;o++){var i=e[o];t(n[i],i)}}var g=function(e){function n(){return r}function t(n){return n(e)}var o=i(e),r={fold:function(n,t){return t(e)},isSome:f,isNone:s,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return g(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?r:l},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},h=Object.keys;function p(n){return n.dom.nodeValue}function y(n,t,e){!function(n,t,e){if(!(u(e)||c(e)||a(e)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",e,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,e+"")}(n.dom,t,e)}function b(n,t){n.dom.removeAttribute(t)}function w(n,t){var e,o=null===(e=n.dom.getAttribute(t))?void 0:e;return void 0===o||""===o?[]:o.split(" ")}function T(n){return void 0!==n.dom.classList}function k(n,t){return i=t,0<(o=function(n){for(var t=[],e=0,o=n.length;e<o;e++){var r=n[e];r!==i&&t.push(r)}return t}(w(e=n,"class"))).length?y(e,"class",o.join(" ")):b(e,"class"),0;var e,i,o}function N(n,t){var e="";return v(n,function(n,t){e+=t}),new RegExp("["+e+"]",t?"g":"")}function A(n){return'<span data-mce-bogus="1" class="mce-'+H[n]+'">'+n+"</span>"}function O(n){var t=p(n);return j(n)&&void 0!==t&&_.test(t)}function C(n){return"span"===n.nodeName.toLowerCase()&&n.classList.contains("mce-nbsp-wrap")}function S(f,n){m(K(M.fromDom(n),O),function(n){var t,e,o,r,i,u=n.dom.parentNode;if(C(u))t=M.fromDom(u),e=U,T(t)?t.dom.classList.add(e):(r=e,i=w(o=t,"class").concat([r]),y(o,"class",i.join(" ")));else{for(var c,a=f.dom.encode(p(n)).replace(F,A),s=f.dom.create("div",null,a);c=s.lastChild;)f.dom.insertAfter(c,n.dom);f.dom.remove(n.dom)}})}function D(r,n){m(r.dom.select(I,n),function(n){var t,e,o;C(n)?(t=M.fromDom(n),e=U,T(t)?t.dom.classList.remove(e):k(t,e),0===(T(o=t)?o.dom.classList:w(o,"class")).length&&b(o,"class")):r.dom.remove(n,!0)})}function E(n){var t=n.getBody(),e=n.selection.getBookmark(),o=function(n,t){for(;n.parentNode;){if(n.parentNode===t)return n;n=n.parentNode}}(n.selection.getNode(),t);D(n,o=void 0!==o?o:t),S(n,o),n.selection.moveToBookmark(e)}function L(n,t){var e=n,o=t.get();e.fire("VisualChars",{state:o});var r=n.getBody();(!0===t.get()?S:D)(n,r)}function x(n,t){n.addCommand("mceVisualChars",function(){!function(n,t){t.set(!t.get());var e=n.selection.getBookmark();L(n,t),n.selection.moveToBookmark(e)}(n,t)})}function B(e,o){return function(t){function n(n){return t.setActive(n.state)}return t.setActive(o.get()),e.on("VisualChars",n),function(){return e.off("VisualChars",n)}}}"undefined"!=typeof window||Function("return this;")();function P(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var V,j=function(n){return 3===n.dom.nodeType},M={fromHtml:function(n,t){var e=(t||document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return P(e.childNodes[0])},fromTag:function(n,t){var e=(t||document).createElement(n);return P(e)},fromText:function(n,t){var e=(t||document).createTextNode(n);return P(e)},fromDom:P,fromPoint:function(n,t,e){return(null==(o=n.dom.elementFromPoint(t,e))?l:g(o)).map(P);var o}},H={"\xa0":"nbsp","\xad":"shy"},_=N(H),F=N(H,!0),I=(V="",v(H,function(n){V&&(V+=","),V+="span.mce-"+n}),V),U="mce-nbsp",K=function(n,t){var e=[];return m(function(n,t){for(var e=n.length,o=new Array(e),r=0;r<e;r++){var i=n[r];o[r]=t(i,r)}return o}(n.dom.childNodes,M.fromDom),function(n){e=(e=t(n)?e.concat([n]):e).concat(K(n,t))}),e},R=tinymce.util.Tools.resolve("tinymce.util.Delay");r.add("visualchars",function(n){var t,e,o,r,i,u,c,a,s,f,l=(t=n.getParam("visualchars_default_state",!1),e=t,{get:function(){return e},set:function(n){e=n}});function d(){return o.execCommand("mceVisualChars")}return x(n,l),(o=n).ui.registry.addToggleButton("visualchars",{tooltip:"Show invisible characters",icon:"visualchars",onAction:d,onSetup:B(o,r=l)}),o.ui.registry.addToggleMenuItem("visualchars",{text:"Show invisible characters",icon:"visualchars",onAction:d,onSetup:B(o,r)}),i=n,u=l,c=R.debounce(function(){E(i)},300),!1!==i.getParam("forced_root_block")&&i.on("keydown",function(n){!0===u.get()&&(13===n.keyCode?E(i):c())}),i.on("remove",c.stop),s=l,(a=n).on("init",function(){L(a,s)}),f=l,{isEnabled:function(){return f.get()}}})}();js/tinymce/plugins/directionality/plugin.min.js000064400000012330151727150250015756 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function n(t){return function(n){return typeof n===t}}function u(n){return function(){return n}}function t(n){return n}function r(){return d}var o,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){return r=typeof(t=n),(null===t?"null":"object"==r&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==r&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":r)===o;var t,r},c=n("boolean"),f=n("function"),l=n("number"),a=u(!(o="string")),m=u(!0),d={fold:function(n,t){return n()},isSome:a,isNone:m,getOr:t,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(void 0),or:t,orThunk:s,map:r,each:function(){},bind:r,exists:a,forall:m,filter:function(){return d},toArray:function(){return[]},toString:u("none()")};function s(n){return n()}function g(n,t){for(var r=0,o=n.length;r<o;r++)t(n[r],r)}function h(n,t){var r=n.dom;if(1!==r.nodeType)return!1;var o=r;if(void 0!==o.matches)return o.matches(t);if(void 0!==o.msMatchesSelector)return o.msMatchesSelector(t);if(void 0!==o.webkitMatchesSelector)return o.webkitMatchesSelector(t);if(void 0!==o.mozMatchesSelector)return o.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function v(n){if(null==n)throw new Error("Node cannot be null or undefined");return{dom:n}}var p=function(r){function n(){return e}function t(n){return n(r)}var o=u(r),e={fold:function(n,t){return t(r)},isSome:m,isNone:a,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return p(n(r))},each:function(n){n(r)},bind:t,exists:t,forall:t,filter:function(n){return n(r)?e:d},toArray:function(){return[r]},toString:function(){return"some("+r+")"}};return e},y={some:p,none:r,from:function(n){return null==n?d:p(n)}},w={fromHtml:function(n,t){var r=(t||document).createElement("div");if(r.innerHTML=n,!r.hasChildNodes()||1<r.childNodes.length)throw console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return v(r.childNodes[0])},fromTag:function(n,t){var r=(t||document).createElement(n);return v(r)},fromText:function(n,t){var r=(t||document).createTextNode(n);return v(r)},fromDom:v,fromPoint:function(n,t,r){return y.from(n.dom.elementFromPoint(t,r)).map(v)}};function D(t){return function(n){return n.dom.nodeType===t}}function N(n,t,r){!function(n,t,r){if(!(i(r)||c(r)||l(r)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",r,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,r+"")}(n.dom,t,r)}function T(n,t){n.dom.removeAttribute(t)}function S(n){return w.fromDom(n.dom.host)}function b(e,u,n){return function(n){for(var t=e.dom,r=f(n)?n:a;t.parentNode;){var t=t.parentNode,o=w.fromDom(t);if(h(o,u))return y.some(o);if(r(o))break}return y.none()}(n)}function O(n){return"rtl"===(r="direction",o=(t=n).dom,""!==(e=window.getComputedStyle(o).getPropertyValue(r))||B(t)?e:H(o,r))?"rtl":"ltr";var t,r,o,e}function A(n,t){return r=function(n){return h(n,t)},function(n,t){for(var r=[],o=0,e=n.length;o<e;o++){var u=n[o];t(u,o)&&r.push(u)}return r}(function(n,t){for(var r=n.length,o=new Array(r),e=0;e<r;e++){var u=n[e];o[e]=t(u,e)}return o}(n.dom.childNodes,w.fromDom),r);var r}function C(n,u){var t=n.selection.getSelectedBlocks();0<t.length&&(g(t,function(n){var t,r=w.fromDom(n),o=k(r),e=(t=r,(o?b(t,"ol,ul"):y.some(t)).getOr(t));y.from(e.dom.parentNode).map(w.fromDom).filter(E).each(function(n){O(n)!==u?N(e,"dir",u):O(e)!==u&&T(e,"dir"),o&&g(A(e,"li[dir]"),function(n){return T(n,"dir"),0})})}),n.nodeChanged())}function M(t,o){return function(r){function n(n){var t=w.fromDom(n.element);r.setActive(O(t)===o)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}"undefined"!=typeof window||Function("return this;")();function k(n){return E(n)&&"li"===n.dom.nodeName.toLowerCase()}var E=D(1),L=D(3),P=D(9),R=D(11),x=f(Element.prototype.attachShadow)&&f(Node.prototype.getRootNode)?function(n){return w.fromDom(n.dom.getRootNode())}:function(n){return P(n)?n:w.fromDom(n.dom.ownerDocument)},B=function(n){var t=L(n)?n.dom.parentNode:n.dom;if(null==t||null===t.ownerDocument)return!1;var r,o,e,u,i,c=t.ownerDocument;return e=w.fromDom(t),i=x(e),(R(u=i)&&null!=u.dom.host?y.some(i):y.none()).fold(function(){return c.body.contains(t)},(r=B,o=S,function(n){return r(o(n))}))},H=function(n,t){return void 0!==n.style&&f(n.style.getPropertyValue)?n.style.getPropertyValue(t):""};e.add("directionality",function(n){var t,r;(t=n).addCommand("mceDirectionLTR",function(){C(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){C(t,"rtl")}),(r=n).ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return r.execCommand("mceDirectionLTR")},onSetup:M(r,"ltr")}),r.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return r.execCommand("mceDirectionRTL")},onSetup:M(r,"rtl")})})}();js/tinymce/plugins/advlist/plugin.min.js000064400000006612151727150250014407 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function f(t,e,n){t.execCommand("UL"===e?"InsertUnorderedList":"InsertOrderedList",!1,!1===n?null:{"list-style-type":n})}function i(t){return function(){return t}}function t(t){return t}function e(){return s}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),g=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=i(!1),l=i(!0),s={fold:function(t,e){return t()},isSome:u,isNone:l,getOr:t,getOrThunk:r,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(void 0),or:t,orThunk:r,map:e,each:function(){},bind:e,exists:u,forall:l,filter:function(){return s},toArray:function(){return[]},toString:i("none()")};function r(t){return t()}function d(t){return t&&/^(TH|TD)$/.test(t.nodeName)}function m(c,a){return function(s){function t(t){var e,n,r,o,i,u,l;s.setActive((e=c,r=a,i=-1!==(o=function(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n;return-1}((n=t).parents,d))?n.parents.slice(0,o):n.parents,0<(u=g.grep(i,(l=e,function(t){return t&&/^(OL|UL|DL)$/.test(t.nodeName)&&(e=t,l.$.contains(l.getBody(),e));var e}))).length&&u[0].nodeName===r))}return c.on("NodeChange",t),function(){return c.off("NodeChange",t)}}}function c(t,e,n,r,o,i){var u,l,s,c,a,d;1<i.length?(c=r,a=o,d=i,(s=t).ui.registry.addSplitButton(e,{tooltip:n,icon:"OL"===a?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(t){t(g.map(d,function(t){return{type:"choiceitem",value:"default"===t?"":t,icon:"list-"+("OL"===a?"num":"bull")+"-"+("disc"===t||"decimal"===t?"default":t),text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()})}}))},onAction:function(){return s.execCommand(c)},onItemAction:function(t,e){f(s,a,e)},select:function(e){var t,n=(t=s).dom.getParent(t.selection.getNode(),"ol,ul"),r=t.dom.getStyle(n,"listStyleType");return p(r).map(function(t){return e===t}).getOr(!1)},onSetup:m(s,a)})):(l=r,(u=t).ui.registry.addToggleButton(e,{active:!1,tooltip:n,icon:"OL"===o?"ordered-list":"unordered-list",onSetup:m(u,o),onAction:function(){return u.execCommand(l)}}))}var a=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},isSome:l,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return a(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:s},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},p=function(t){return null==t?s:a(t)};n.add("advlist",function(t){var n,e,r,o;t.hasPlugin("lists")?(c(e=t,"numlist","Numbered list","InsertOrderedList","OL",(r=e.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"))?r.split(/[ ,]/):[]),c(e,"bullist","Bullet list","InsertUnorderedList","UL",(o=e.getParam("advlist_bullet_styles","default,circle,square"))?o.split(/[ ,]/):[]),(n=t).addCommand("ApplyUnorderedListStyle",function(t,e){f(n,"UL",e["list-style-type"])}),n.addCommand("ApplyOrderedListStyle",function(t,e){f(n,"OL",e["list-style-type"])})):console.error("Please use the Lists plugin together with the Advanced List plugin.")})}();js/tinymce/plugins/paste/plugin.min.js000064400000054056151727150250014062 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function w(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function P(e){return!(null==e)}function _(){}function o(e){return function(){return e}}function e(e){return e}function t(){return l}var n,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return n=typeof(t=e),"array"==(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n);var t,n},i=o(!(n="function")),s=o(!0),l={fold:function(e,t){return e()},isSome:i,isNone:s,getOr:e,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(void 0),or:e,orThunk:a,map:t,each:_,bind:t,exists:i,forall:s,filter:function(){return l},toArray:function(){return[]},toString:o("none()")};function a(e){return e()}function c(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1}function f(e,t){for(var n=e.length,r=new Array(n),a=0;a<n;a++){var o=e[a];r[a]=t(o,a)}return r}function d(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function p(){var e,t,n=(e=_,t=w(le.none()),{clear:function(){r(),t.set(le.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){r(),t.set(le.some(e))}});function r(){return t.get().each(e)}return de(de({},n),{on:function(e){return n.get().each(e)}})}function m(e,t,n){return""===t||e.length>=t.length&&e.substr(n,n+t.length)===t}function C(e,t){return e.fire("PastePlainTextToggle",{state:t})}function T(e){return e.getParam("paste_data_images",!1)}function g(e){return e.getParam("paste_retain_style_properties")}function h(e){return e.getParam("validate")}function y(e){return e.getParam("paste_data_images",!1,"boolean")}function v(e){return he.explode(e.getParam("images_file_types","jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp","string"))}function b(e){return-1!==e.indexOf(be)}function x(e,t,n){return t?(r=!0===t?"p":t,a=n,o=e.split(/\n\n/),i=function(e,t){var n,r=[],a="<"+e;if("object"==typeof t){for(var o in t)n=o,we.call(t,n)&&r.push(o+'="'+Pe.encodeAllRaw(t[o])+'"');r.length&&(a+=" "+r.join(" "))}return a+">"}(r,a),s="</"+r+">",1===(l=he.map(o,function(e){return e.split(/\n/).join("<br />")})).length?l[0]:he.map(l,function(e){return i+e+s}).join("")):e.replace(/\r?\n/g,"<br>");var r,a,o,i,s,l}function D(t,e){return he.each(e,function(e){t=e.constructor===RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}function k(e){return D(e,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(e,t,n){return t||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])}function O(e){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^']*\bmso-|w:WordDocument/i.test(e)||/class="OutlineElement/.test(e)||/id="?docs\-internal\-guid\-/.test(e)}function S(r,e){var a,t=g(r);t&&(a=he.makeMap(t.split(/[, ]/))),e=D(e,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return 0<t.length?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var n=r.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody"),o=De({valid_elements:n,valid_children:"-li[p]"});he.each(o.elements,function(e){e.attributes.class||(e.attributes.class={},e.attributesOrder.push("class")),e.attributes.style||(e.attributes.style={},e.attributesOrder.push("style"))});var i=_e({},o);i.addAttributeFilter("style",function(e){for(var t,n=e.length;n--;)(t=e[n]).attr("style",function(r,a,o,i){var s={},e=r.dom.parseStyle(i);return he.each(e,function(e,t){switch(t){case"mso-list":var n=/\w+ \w+([0-9]+)/i.exec(i);n&&(o._listLevel=parseInt(n[1],10)),/Ignore/i.test(e)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":t="text-align";break;case"vert-align":t="vertical-align";break;case"font-color":case"mso-foreground":t="color";break;case"mso-background":case"mso-highlight":t="background";break;case"font-weight":case"font-style":return void("normal"!==e&&(s[t]=e));case"mso-element":if(/^(comment|comment-list)$/i.test(e))return void o.remove()}0!==t.indexOf("mso-comment")?0!==t.indexOf("mso-")&&("all"===g(r)||a&&a[t])&&(s[t]=e):o.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],o.wrap(new Te("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],o.wrap(new Te("i",1))),r.dom.serializeStyle(s,o.name)||null}(r,a,t,t.attr("style"))),"span"===t.name&&t.parent&&!t.attributes.length&&t.unwrap()}),i.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=(t=e[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&t.remove(),t.attr("class",null)}),i.addNodeFilter("del",function(e){for(var t=e.length;t--;)e[t].remove()}),i.addNodeFilter("a",function(e){for(var t,n,r,a=e.length;a--;)n=(t=e[a]).attr("href"),r=t.attr("name"),n&&-1!==n.indexOf("#_msocom_")?t.remove():!(n=n&&0===n.indexOf("file://")?(n=n.split("#")[1])&&"#"+n:n)&&!r||r&&!/^_?(?:toc|edn|ftn)/i.test(r)?t.unwrap():t.attr({href:n,name:r})});var s=i.parse(e);return r.getParam("paste_convert_word_fake_lists",!0)&&function(e){for(var a,o,i=1,n=function(e){var t="";if(3===e.type)return e.value;if(e=e.firstChild)for(;t+=n(e),e=e.next;);return t},s=function(e,t){if(3===e.type&&t.test(e.value))return e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do{if(!s(e,t))return!1}while(e=e.next);return!0},l=function(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;l(e),e=e.next;);},t=function(e,t,n){var r=e._listLevel||i;(a=r!==i?r<i?a&&a.parent.parent:(o=a,null):a)&&a.name===t?a.append(e):(o=o||a,a=new Te(t,1),1<n&&a.attr("start",""+n),e.wrap(a)),e.name="li",i<r&&o&&o.lastChild.append(a),i=r,l(e),s(e,/^\u00a0+/),s(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(e,/^\u00a0+/)},r=[],u=e.firstChild;null!=u;)if(r.push(u),null!==(u=u.walk()))for(;void 0!==u&&u.parent!==e;)u=u.walk();for(var c,f,d,p=0;p<r.length;p++)"p"===(e=r[p]).name&&e.firstChild?(c=n(e),/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)?t(e,"ul"):function(t){var n=!1;return t=c.replace(/^[\u00a0 ]+/,""),he.each([/^[IVXLMCD]+\.[ \u00a0]/,/^[ivxlmcd]+\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],function(e){if(e.test(t))return!(n=!0)}),n}(c)?(d=1,t(e,"ol",d=(f=/([0-9]+)\./.exec(c))?parseInt(f[1],10):d)):e._listLevel?t(e,"ul",1):a=null):(o=a,a=null)}(s),Ce({validate:h(r)},o).serialize(s)}function j(e,t){return{content:e,cancelled:t}}function A(e,t,n){var r,a,o,i,s,l,u,c,f,d,p,m,g=O(t),v=g?(a=t,(r=e).getParam("paste_enable_default_filters",!0)?S(r,a):a):t;return i=n,s=g,p=(o=e).fire("PastePreProcess",{content:v,internal:i,wordContent:s}),m=function(e,t){var n=_e({},e.schema);n.addNodeFilter("meta",function(e){he.each(e,function(e){e.remove()})});var r=n.parse(t,{forced_root_block:!1,isRootContent:!0});return Ce({validate:h(e)},e.schema).serialize(r)}(o,p.content),o.hasEventListeners("PastePostProcess")&&!p.isDefaultPrevented()?(u=i,c=s,f=(l=o).dom.create("div",{style:"display:none"},m),j((d=l.fire("PastePostProcess",{node:f,internal:u,wordContent:c})).node.innerHTML,d.isDefaultPrevented())):j(m,p.isDefaultPrevented())}function R(e,t){return e.insertContent(t,{merge:e.getParam("paste_merge_formats",!0),paste:!0}),!0}function I(e){return/^https?:\/\/[\w\-\/+=.,!;:&%@^~(){}?#]+$/i.test(e)}function F(e,t,n){return!(!1!==e.selection.isCollapsed()||!I(t)||(a=t,o=n,(r=e).undoManager.extra(function(){o(r,a)},function(){r.execCommand("mceInsertLink",!1,a)}),0));var r,a,o}function E(e,t,n){return r=e,!(!I(a=t)||!c(v(r),function(e){return m(t=a.toLowerCase(),n="."+e.toLowerCase(),t.length-n.length);var t,n})||(i=t,s=n,(o=e).undoManager.extra(function(){s(o,i)},function(){o.insertContent('<img src="'+i+'">')}),0));var r,a,o,i,s}function M(e){return"\n"===e||"\r"===e}function B(e,t,n,r){var a,o,i,s,l=A(e,t,n);!1===l.cancelled&&(a=e,o=l.content,r||!1===a.getParam("smart_paste",!0)?R(a,o):(i=a,s=o,he.each([F,E,R],function(e){return!0!==e(i,s,R)})))}function L(e,t,n){var r=n||b(t);B(e,t.replace(be,""),r,!1)}function N(e,t){var n,r,a,o,i,s,l=e.dom.encode(t).replace(/\r\n/g,"\n"),u=x((n=l,o=(r=e.getParam("paste_tab_spaces",4,"number"))<=0?"":new Array(r+1).join(" "),i=n.replace(/\t/g,o),s={pcIsSpace:!(a=function(e,t){return-1!==" \f\t\v".indexOf(t)||"\xa0"===t?e.pcIsSpace||""===e.str||e.str.length===i.length-1||(n=e.str.length+1)<i.length&&0<=n&&M(i[n])?{pcIsSpace:!1,str:e.str+"\xa0"}:{pcIsSpace:!0,str:e.str+" "}:{pcIsSpace:M(t),str:e.str+t};var n}),str:""},d(i,function(e,t){s=a(s,e)}),s.str),e.getParam("forced_root_block"),e.getParam("forced_root_block_attrs"));B(e,u,!1,!0)}function H(e){var t,n={};if(e&&(!e.getData||(t=e.getData("Text"))&&0<t.length&&-1===t.indexOf("data:text/mce-internal,")&&(n["text/plain"]=t),e.types))for(var r=0;r<e.types.length;r++){var a=e.types[r];try{n[a]=e.getData(a)}catch(e){n[a]=""}}return n}function $(e,t){return t in e&&0<e[t].length}function z(e){return $(e,"text/html")||$(e,"text/plain")}function U(w,e,t){var n,r,a,o,i,s="paste"===e.type?e.clipboardData:e.dataTransfer;if(y(w)&&s){var l=(n=w,a=(r=s).items?function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!u(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);ce.apply(t,e[n])}return t}(f(fe(r.items),function(e){return"file"===e.kind?[e.getAsFile()]:[]})):[],o=r.files?fe(r.files):[],function(e,t){for(var n=[],r=0,a=e.length;r<a;r++){var o=e[r];t(o,r)&&n.push(o)}return n}(0<a.length?a:o,(i=v(n),function(r){return m(r.type,"image/",0)&&c(i,function(e){return t=e.toLowerCase(),(he.hasOwn(n={jpg:"jpeg",jpe:"jpeg",jfi:"jpeg",jif:"jpeg",jfif:"jpeg",pjpeg:"jpeg",pjp:"jpeg",svg:"svg+xml"},t)?"image/"+n[t]:"image/"+t)===r.type;var t,n})})));if(0<l.length)return e.preventDefault(),ge.all(f(l,function(r){return new ge(function(e){var t=P(r.getAsFile)?r.getAsFile():r,n=new window.FileReader;n.onload=function(){e({blob:t,uri:n.result})},n.readAsDataURL(t)})})).then(function(e){t&&w.selection.setRng(t),d(e,function(e){var t,n,r,a,o,i,s,l,u,c,f,d,p,m,g,v,h,y,b,x;t=w,r=(n=e).uri,g=(a=/data:([^;]+);base64,([a-z0-9\+\/=]+)/i.exec(r))?{type:a[1],data:decodeURIComponent(a[2])}:{type:null,data:null},v=g.data,h=g.type,y=ke(),b=n.blob,(x=new Image).src=n.uri,p=x,!(m=t.getParam("images_dataimg_filter"))||m(p)?(c=void 0,(i=(o=t.editorUpload.blobCache).getByData(v,h))?c=i:(l=(s=t.getParam("images_reuse_filename")&&P(b.name))?(f=t,P(d=b.name.match(/([\s\S]+?)(?:\.[a-z0-9.]+)$/i))?f.dom.encode(d[1]):null):y,u=s?b.name:void 0,c=o.create(y,b,v,l,u),o.add(c)),L(t,'<img src="'+c.blobUri()+'">',!1)):L(t,'<img src="'+n.uri+'">',!1)})}),!0}return!1}function V(e){return ve.metaKeyPressed(e)&&86===e.keyCode||e.shiftKey&&45===e.keyCode}function K(o,e,t){var i,s,v,l,u,c,f;function d(e,t,n,r,a){var o;$(t,"text/html")?o=t["text/html"]:(o=v.getHtml(),a=a||b(o),v.isDefaultContent(o)&&(r=!0)),o=k(o),v.remove();var i,s,l,u,c,f,d,p,m=!1===a&&!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(o),g=I(o);((r=!o.length||m&&!g||r)||g)&&(o=$(t,"text/plain")&&m?t["text/plain"]:(i=o,s=De(),l=_e({},s),u="",c=s.getShortEndedElements(),f=he.makeMap("script noscript style textarea video audio iframe object"," "),d=s.getBlockElements(),p=function(e){var t=e.name,n=e;if("br"!==t){if("wbr"!==t)if(c[t]&&(u+=" "),f[t])u+=" ";else{if(3===e.type&&(u+=e.value),!e.shortEnded&&(e=e.firstChild))for(;p(e),e=e.next;);d[t]&&n.next&&(u+="\n","p"===t&&(u+="\n"))}}else u+="\n"},i=D(i,[/<!\[[^\]]+\]>/g]),p(l.parse(i)),u)),v.isDefaultContent(o)?n||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):r?N(e,o):L(e,o,a)}s=o,v=e,l=t,c=p(),f=p(),s.on("keyup",f.clear),s.on("keydown",function(e){function t(e){V(e)&&!e.isDefaultPrevented()&&v.remove()}if(V(e)&&!e.isDefaultPrevented()&&(!(u=e.shiftKey&&86===e.keyCode)||!pe.webkit||-1===navigator.userAgent.indexOf("Version/"))){if(e.stopImmediatePropagation(),c.set(e),f.set(!0),pe.ie&&u)return e.preventDefault(),void s.fire("paste",{ieFake:!0});v.remove(),v.create(),s.once("keyup",t),s.once("paste",function(){s.off("keyup",t)})}}),s.on("paste",function(e){var t=c.isSet()||f.isSet();t&&c.clear();var n,r=H(e.clipboardData||s.getDoc().dataTransfer),a="text"===l.get()||u,o=$(r,xe());u=!1,e.isDefaultPrevented()||(n=e.clipboardData,-1!==navigator.userAgent.indexOf("Android")&&n&&n.items&&0===n.items.length)||!z(r)&&U(s,e,v.getLastRng()||s.selection.getRng())?v.remove():(t||e.preventDefault(),!pe.ie||t&&!e.ieFake||$(r,"text/html")||(v.create(),s.dom.bind(v.getEl(),"paste",function(e){e.stopPropagation()}),s.getDoc().execCommand("Paste",!1,null),r["text/html"]=v.getHtml()),$(r,"text/html")?(e.preventDefault(),o=o||b(r["text/html"]),d(s,r,t,a,o)):me.setEditorTimeout(s,function(){d(s,r,t,a,o)},0))}),o.parser.addNodeFilter("img",function(e,t,n){var r;if(!y(o)&&n.data&&!0===n.data.paste)for(var a=e.length;a--;)(i=e[a].attr("src"))&&(0!==i.indexOf("webkit-fake-url")&&(o.getParam("allow_html_data_urls",!1,"boolean")||0!==i.indexOf("data:"))||((r=e[a]).attr("data-mce-object")||i===pe.transparentSrc||r.remove()))})}function X(e){return pe.ie&&e.inline?document.body:e.getBody()}function W(e){var t=w(null),n="%MCEPASTEBIN%";return{create:function(){return function(e,t,n){var r=e.dom,a=e.getBody();t.set(e.selection.getRng());var o,i,s,l,u=e.dom.add(X(e),"div",{id:"mcepastebin",class:"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n);(pe.ie||pe.gecko)&&r.setStyle(u,"left","rtl"===r.getStyle(a,"direction",!0)?65535:-65535),r.bind(u,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),i=u,s=n,X(l=o=e)!==l.getBody()&&o.dom.bind(i,"paste keyup",function(e){Oe(o,s)||o.fire("paste")}),u.focus(),e.selection.select(u,!0)}(e,t,n)},remove:function(){return function(e,t){if(oe(e)){for(var n,r=t.get();n=e.dom.get("mcepastebin");)e.dom.remove(n),e.dom.unbind(n);r&&e.selection.setRng(r)}t.set(null)}(e,t)},getEl:function(){return oe(e)},getHtml:function(){return function(n){function t(e,t){e.appendChild(t),n.dom.remove(t,!0)}var e=he.grep(X(n).childNodes,function(e){return"mcepastebin"===e.id}),r=e.shift();he.each(e,function(e){t(r,e)});for(var a=n.dom.select("div[id=mcepastebin]",r),o=a.length-1;0<=o;o--){var i=n.dom.create("div");r.insertBefore(i,a[o]),t(i,a[o])}return r?r.innerHTML:""}(e)},getLastRng:t.get,isDefault:function(){return Oe(e,n)},isDefaultContent:function(e){return e===n}}}function Y(e,t,n,r){!function(e,t,n){if(!1===pe.iOS&&"function"==typeof(null==e?void 0:e.setData))try{return e.clearData(),e.setData("text/html",t),e.setData("text/plain",n),e.setData(xe(),t),1}catch(e){return}}(e.clipboardData,t.html,t.text)?n(t.html,r):(e.preventDefault(),r())}function Z(s){return function(e,t){var n=be+e,r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),a=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(a),s.dom.add(s.getBody(),r);var o=s.selection.getRng();a.focus();var i=s.dom.createRng();i.selectNodeContents(a),s.selection.setRng(i),me.setTimeout(function(){s.selection.setRng(o),r.parentNode.removeChild(r),t()},0)}}function q(e){return{html:e.selection.getContent({contextual:!0}),text:e.selection.getContent({format:"text"})}}function G(e){return!e.selection.isCollapsed()||(t=e).dom.getParent(t.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",t.getBody());var t}function J(e,t){return Se.getCaretRangeFromPoint(t.clientX,t.clientY,e.getDoc())}function Q(e,t){e.focus(),e.selection.setRng(t)}function ee(t,n){t.on("PastePreProcess",function(e){e.content=n(t,e.content,e.internal,e.wordContent)})}function te(e,t){if(!O(t))return t;var n=[];return he.each(e.schema.getBlockElements(),function(e,t){n.push(t)}),t=D(t,[[new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g"),"$1"]]),D(t,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function ne(e,t,n,r){if(r||n)return t;var c,f,d,a=e.getParam("paste_webkit_styles");return!1===e.getParam("paste_remove_styles_if_webkit",!0)||"all"===a?t:(t=(c=a?a.split(/[, ]/):c)?(f=e.dom,d=e.selection.getNode(),t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(e,t,n,r){var a=f.parseStyle(f.decode(n)),o={};if("none"===c)return t+r;for(var i=0;i<c.length;i++){var s=a[c[i]],l=f.getStyle(d,c[i],!0);/color/.test(c[i])&&(s=f.toHex(s),l=f.toHex(l)),l!==s&&(o[c[i]]=s)}var u=f.serializeStyle(o,"span");return u?t+' style="'+u+'"'+r:t+r})):t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3")).replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(e,t,n,r){return t+' style="'+n+'"'+r})}function re(n,e){n.$("a",e).find("font,u").each(function(e,t){n.dom.remove(t,!0)})}function ae(n,r){return function(t){function e(e){return t.setActive(e.state)}return t.setActive("text"===r.pasteFormat.get()),n.on("PastePlainTextToggle",e),function(){return n.off("PastePlainTextToggle",e)}}}function oe(e){return e.dom.get("mcepastebin")}var ie,se=function(n){function e(){return a}function t(e){return e(n)}var r=o(n),a={fold:function(e,t){return t(n)},isSome:s,isNone:i,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return se(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:l},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return a},le={some:se,none:t,from:function(e){return null==e?l:se(e)}},ue=Array.prototype.slice,ce=Array.prototype.push,fe=typeof Array.from===n?Array.from:function(e){return ue.call(e)},de=function(){return(de=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)},pe=tinymce.util.Tools.resolve("tinymce.Env"),me=tinymce.util.Tools.resolve("tinymce.util.Delay"),ge=tinymce.util.Tools.resolve("tinymce.util.Promise"),ve=tinymce.util.Tools.resolve("tinymce.util.VK"),he=tinymce.util.Tools.resolve("tinymce.util.Tools"),ye="x-tinymce/html",be="\x3c!-- "+ye+" --\x3e",xe=o(ye),we=Object.hasOwnProperty,Pe=tinymce.util.Tools.resolve("tinymce.html.Entities"),_e=tinymce.util.Tools.resolve("tinymce.html.DomParser"),Ce=tinymce.util.Tools.resolve("tinymce.html.Serializer"),Te=tinymce.util.Tools.resolve("tinymce.html.Node"),De=tinymce.util.Tools.resolve("tinymce.html.Schema"),ke=(ie=0,function(){return"mceclip"+ie++}),Oe=function(e,t){var n=oe(e);return n&&"mcepastebin"===n.id&&n.innerHTML===t},Se=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils");r.add("paste",function(e){if(0==(!!e.hasPlugin("powerpaste",!0)&&(void 0!==window.console&&window.console.log&&window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),!0))){var t=w(!1),n=w(e.getParam("paste_as_text",!1)?"text":"html"),r=(y=n,b=W(h=e),h.on("PreInit",function(){return K(h,b,y)}),{pasteFormat:y,pasteHtml:function(e,t){return L(h,e,t)},pasteText:function(e){return N(h,e)},pasteImageData:function(e,t){return U(h,e,t)},getDataTransferItems:H,hasHtmlOrText:z,hasContentType:$}),a=e;return pe.webkit&&ee(a,ne),pe.ie&&(ee(a,te),v=re,(g=a).on("PastePostProcess",function(e){v(g,e.node)})),(p=e).ui.registry.addToggleButton("pastetext",{active:!1,icon:"paste-text",tooltip:"Paste as text",onAction:x,onSetup:ae(p,m=r)}),p.ui.registry.addToggleMenuItem("pastetext",{text:"Paste as text",icon:"paste-text",onAction:x,onSetup:ae(p,m)}),d=r,(f=e).addCommand("mceTogglePlainTextPaste",function(){var e,t=f;"text"===(e=d).pasteFormat.get()?(e.pasteFormat.set("html"),C(t,!1)):(e.pasteFormat.set("text"),C(t,!0)),t.focus()}),f.addCommand("mceInsertClipboardContent",function(e,t){t.content&&d.pasteHtml(t.content,t.internal),t.text&&d.pasteText(t.text)}),function(e){var t=e.plugins.paste,n=e.getParam("paste_preprocess");n&&e.on("PastePreProcess",function(e){n.call(t,t,e)});var r=e.getParam("paste_postprocess");r&&e.on("PastePostProcess",function(e){r.call(t,t,e)})}(e),(o=e).on("cut",(u=o,function(e){G(u)&&Y(e,q(u),Z(u),function(){var e;pe.browser.isChrome()||pe.browser.isFirefox()?(e=u.selection.getRng(),me.setEditorTimeout(u,function(){u.selection.setRng(e),u.execCommand("Delete")},0)):u.execCommand("Delete")})})),o.on("copy",(c=o,function(e){G(c)&&Y(e,q(c),Z(c),_)})),s=r,l=t,(i=e).getParam("paste_block_drop",!1)&&i.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),T(i)||i.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&0<t.files.length&&e.preventDefault()}),i.on("drop",function(e){var t,n,r,a,o=J(i,e);e.isDefaultPrevented()||l.get()||(t=s.getDataTransferItems(e.dataTransfer),n=s.hasContentType(t,xe()),(!s.hasHtmlOrText(t)||(r=t["text/plain"])&&0===r.indexOf("file://"))&&s.pasteImageData(e,o)||!o||!i.getParam("paste_filter_drop",!0)||(a=t["mce-internal"]||t["text/html"]||t["text/plain"])&&(e.preventDefault(),me.setEditorTimeout(i,function(){i.undoManager.transact(function(){t["mce-internal"]&&i.execCommand("Delete"),Q(i,o),a=k(a),t["text/html"]?s.pasteHtml(a,n):s.pasteText(a)})})))}),i.on("dragstart",function(e){l.set(!0)}),i.on("dragover dragend",function(e){T(i)&&!1===l.get()&&(e.preventDefault(),Q(i,J(i,e))),"dragend"===e.type&&l.set(!1)}),{clipboard:r}}var i,s,l,o,u,c,f,d,p,m,a,g,v,h,y,b;function x(){return p.execCommand("mceTogglePlainTextPaste")}})}();js/tinymce/skins/ui/oxide/content.mobile.min.css000064400000001040151727150250015720 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
js/tinymce/skins/ui/oxide/skin.min.css000064400000170141151727150250013755 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
js/tinymce/skins/ui/oxide/skin.mobile.min.css000064400000051014151727150250015220 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff000064400000011020151727150250016434 0ustar00wOFF�OS/2``	�cmaph�?�"gasplglyftTTeŵ7head�66��7hhea$$�#hmtx$��~@�loca�FF+'6maxp�  ,�name���l�post�  ��������3	@����@�@ �6  �a���W�Z�f�4�9�?�B�E�I�T�d���������y������� �a���W�Z�f�4�6�?�A�E�I�T�d���������y����������$�����������TPN����797979�UV4>32#".�6]|GF}]66]|GF}]6�F}]66]}FG|]66]|VU�%!%2#!"&5463V�T������"21#�T"21#�����VV4"�#33#"4V���/2+532654&+55!%;#".54>;#"�,N9!!9N,��6NN6��T��N6��,N9!!9N,��6N�":N,-N:!RN66NR�TT*6NR!:N-,N:"RNB��7!7.#"'>32����-p?9gU>dRo�J+QKD���%+#>V3 BqR/)V��2.#"!>J�oRd?Ug9?p-����DKQU/RqB 3V>#+%���)�+�+!!!!5!5!!!�����T������T+VTV�TT��VVV�+�+!!5!5!!5!5������+V�VVVVTTVV��VV�+�+!!5!5!5!5!�����+V�VV�TT�VV�VV*�� 2654&+32654&##!!2@%%��%%p*2ZD��Hb&%%���%%�N0D^VdH!@V+V�!#'7#'''#7V�DZfxth6�B�h��Հ�XHx
��6�(�!#3!53#�Vx�^��x�^�����Vjk��#/!!5!5!%2#"&5462#"&5462#"&546*V��V��V�*%&'%%%%%%%%%�T�TT�TTj'&&'%%%%�%%%%VU�'5!5!!!533#57'5#5353#535#535*V��V��V��ԀNN�L"*TT��T**�TT�TTTT�,(X,(X��,���,�,,���5!##!###�����*Ԁ������*V���+*+7!!%".5332653�T��*5^E(jX>=Yj(E^�V�(E]6V��>VV>V��6]E(�+t	'762	#tN�N$d�ؠ�(�N�Nd$�@ؠ�(��*!###�T����V���%	�<�<�<<�n���%7'7	n��<����<��VU�U'3%2>54.#"!32#!"&546;4632#"&,N:"":N,,N:"":NTN�"21#�T"21#�FO99OO99O�!:N-,N:"":N,-N:!�T4"�#33#"4��9OO99OO�UV!	V���<��V<��T�<VV<�V�U'7''72#".54>֚�<��<��<���X�sCCs�YX�sCCs���<��<��<���Ct�XY�tBBt�YX�tC����%'7��<��<��<��<��*�''7'77*��<��<��<�����<��<��<���+�+ 2#!"&=3!!#54637!5!'7*"43#��$2VT��V2$�n�d�n<��+4"��#33#��T��"4��pTp<���K	%#"&'.46?�$()F]&22221BB~22222�gj�$_34]F)�3}�}222222}�}3��Aj+3##5#535332654&#"!'5'#".54>32V*VV*VjOqpPOqpP�@�$]3:eK,,Ke::dK+" VV*VV�pPOqqOPp�@�" "+Je:9fK,,Kf93]$	�� -CYaiqy�#"!4&".#">768383>5464&.#"0<54632%.#"0<54632#"!4&'#"!4&#"!4&#"!4&#"!4&�'(O}ZZ}}zyGV��VFzz�zgCCl````�mCCf````��'(�'(�(�(&�(&�(&�('�&&6��&'J6�����##������##���('�('�&(�&(&(@���!###@���������e�a AOas���%#".54>;2+";2#!#"&546;2654&+"&546;2#"&=46323"&'&4?62#!"&/&4762#2#"&=46#2"'&4?>3!2"/&47>3Ҝ+L9!!9L+��+==+�8��+==+��+L9!!9L+��	hh
��
hh	��	hh
8
hh	� 9L++L9 =++==++= 9L++L8!�
i

i
hhhh��
i

i
hhhh33��`�_<��������a���@�"�VVBV���*VjV����VnV�V����@@e
>l��(Px���4r����bz���@�8J*"�	��K�*u
�		�	Y	�	5	�	
4�tinymce-mobiletinymce-mobileVersion 1.2Version 1.2tinymce-mobiletinymce-mobiletinymce-mobiletinymce-mobileRegularRegulartinymce-mobiletinymce-mobileFont generated by IcoMoon.Font generated by IcoMoon.js/tinymce/skins/ui/oxide/content.min.css000064400000052512151727150250014464 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
js/tinymce/skins/ui/oxide/skin.shadowdom.min.css000064400000001417151727150250015740 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
js/tinymce/skins/ui/oxide/content.inline.min.css000064400000052417151727150250015745 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
js/tinymce/skins/ui/oxide-dark/content.mobile.min.css000064400000001040151727150260016640 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
js/tinymce/skins/ui/oxide-dark/skin.min.css000064400000167760151727150260014712 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css000064400000051014151727150260016140 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff000064400000011020151727150260017354 0ustar00wOFF�OS/2``	�cmaph�?�"gasplglyftTTeŵ7head�66��7hhea$$�#hmtx$��~@�loca�FF+'6maxp�  ,�name���l�post�  ��������3	@����@�@ �6  �a���W�Z�f�4�9�?�B�E�I�T�d���������y������� �a���W�Z�f�4�6�?�A�E�I�T�d���������y����������$�����������TPN����797979�UV4>32#".�6]|GF}]66]|GF}]6�F}]66]}FG|]66]|VU�%!%2#!"&5463V�T������"21#�T"21#�����VV4"�#33#"4V���/2+532654&+55!%;#".54>;#"�,N9!!9N,��6NN6��T��N6��,N9!!9N,��6N�":N,-N:!RN66NR�TT*6NR!:N-,N:"RNB��7!7.#"'>32����-p?9gU>dRo�J+QKD���%+#>V3 BqR/)V��2.#"!>J�oRd?Ug9?p-����DKQU/RqB 3V>#+%���)�+�+!!!!5!5!!!�����T������T+VTV�TT��VVV�+�+!!5!5!!5!5������+V�VVVVTTVV��VV�+�+!!5!5!5!5!�����+V�VV�TT�VV�VV*�� 2654&+32654&##!!2@%%��%%p*2ZD��Hb&%%���%%�N0D^VdH!@V+V�!#'7#'''#7V�DZfxth6�B�h��Հ�XHx
��6�(�!#3!53#�Vx�^��x�^�����Vjk��#/!!5!5!%2#"&5462#"&5462#"&546*V��V��V�*%&'%%%%%%%%%�T�TT�TTj'&&'%%%%�%%%%VU�'5!5!!!533#57'5#5353#535#535*V��V��V��ԀNN�L"*TT��T**�TT�TTTT�,(X,(X��,���,�,,���5!##!###�����*Ԁ������*V���+*+7!!%".5332653�T��*5^E(jX>=Yj(E^�V�(E]6V��>VV>V��6]E(�+t	'762	#tN�N$d�ؠ�(�N�Nd$�@ؠ�(��*!###�T����V���%	�<�<�<<�n���%7'7	n��<����<��VU�U'3%2>54.#"!32#!"&546;4632#"&,N:"":N,,N:"":NTN�"21#�T"21#�FO99OO99O�!:N-,N:"":N,-N:!�T4"�#33#"4��9OO99OO�UV!	V���<��V<��T�<VV<�V�U'7''72#".54>֚�<��<��<���X�sCCs�YX�sCCs���<��<��<���Ct�XY�tBBt�YX�tC����%'7��<��<��<��<��*�''7'77*��<��<��<�����<��<��<���+�+ 2#!"&=3!!#54637!5!'7*"43#��$2VT��V2$�n�d�n<��+4"��#33#��T��"4��pTp<���K	%#"&'.46?�$()F]&22221BB~22222�gj�$_34]F)�3}�}222222}�}3��Aj+3##5#535332654&#"!'5'#".54>32V*VV*VjOqpPOqpP�@�$]3:eK,,Ke::dK+" VV*VV�pPOqqOPp�@�" "+Je:9fK,,Kf93]$	�� -CYaiqy�#"!4&".#">768383>5464&.#"0<54632%.#"0<54632#"!4&'#"!4&#"!4&#"!4&#"!4&�'(O}ZZ}}zyGV��VFzz�zgCCl````�mCCf````��'(�'(�(�(&�(&�(&�('�&&6��&'J6�����##������##���('�('�&(�&(&(@���!###@���������e�a AOas���%#".54>;2+";2#!#"&546;2654&+"&546;2#"&=46323"&'&4?62#!"&/&4762#2#"&=46#2"'&4?>3!2"/&47>3Ҝ+L9!!9L+��+==+�8��+==+��+L9!!9L+��	hh
��
hh	��	hh
8
hh	� 9L++L9 =++==++= 9L++L8!�
i

i
hhhh��
i

i
hhhh33��`�_<��������a���@�"�VVBV���*VjV����VnV�V����@@e
>l��(Px���4r����bz���@�8J*"�	��K�*u
�		�	Y	�	5	�	
4�tinymce-mobiletinymce-mobileVersion 1.2Version 1.2tinymce-mobiletinymce-mobiletinymce-mobiletinymce-mobileRegularRegulartinymce-mobiletinymce-mobileFont generated by IcoMoon.Font generated by IcoMoon.js/tinymce/skins/ui/oxide-dark/content.min.css000064400000051713151727150260015406 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
js/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css000064400000001417151727150260016660 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
js/tinymce/skins/ui/oxide-dark/content.inline.min.css000064400000052417151727150260016665 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
js/tinymce/skins/content/dark/content.min.css000064400000002675151727150260015340 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
js/tinymce/skins/content/document/content.min.css000064400000002732151727150260016227 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
js/tinymce/skins/content/writer/content.min.css000064400000002614151727150260015724 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
js/tinymce/skins/content/default/content.min.css000064400000002567151727150260016043 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 */
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
js/tinymce/langs/pt_BR.js000064400000044035151727150260011314 0ustar00tinymce.addI18n('pt_BR',{
"Redo": "Refazer",
"Undo": "Desfazer",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Colar",
"Select all": "Selecionar tudo",
"New document": "Novo documento",
"Ok": "Ok",
"Cancel": "Cancelar",
"Visual aids": "Ajuda visual",
"Bold": "Negrito",
"Italic": "It\u00e1lico",
"Underline": "Sublinhado",
"Strikethrough": "Tachado",
"Superscript": "Sobrescrito",
"Subscript": "Subscrito",
"Clear formatting": "Limpar formata\u00e7\u00e3o",
"Align left": "Alinhar \u00e0 esquerda",
"Align center": "Centralizar",
"Align right": "Alinhar \u00e0 direita",
"Justify": "Justificar",
"Bullet list": "Lista n\u00e3o ordenada",
"Numbered list": "Lista ordenada",
"Decrease indent": "Diminuir recuo",
"Increase indent": "Aumentar recuo",
"Close": "Fechar",
"Formats": "Formatos",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X - C - V do teclado",
"Headers": "Cabe\u00e7alhos",
"Header 1": "Cabe\u00e7alho 1",
"Header 2": "Cabe\u00e7alho 2",
"Header 3": "Cabe\u00e7alho 3",
"Header 4": "Cabe\u00e7alho 4",
"Header 5": "Cabe\u00e7alho 5",
"Header 6": "Cabe\u00e7alho 6",
"Headings": "T\u00edtulos",
"Heading 1": "T\u00edtulo 1",
"Heading 2": "T\u00edtulo 2",
"Heading 3": "T\u00edtulo 3",
"Heading 4": "T\u00edtulo 4",
"Heading 5": "T\u00edtulo 5",
"Heading 6": "T\u00edtulo 6",
"Preformatted": "Pr\u00e9-formatado",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f3digo",
"Paragraph": "Par\u00e1grafo",
"Blockquote": "Aspas",
"Inline": "Em linha",
"Blocks": "Blocos",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 agora em modo texto plano. O conte\u00fado ser\u00e1 colado como texto plano at\u00e9 voc\u00ea desligar esta op\u00e7\u00e3o.",
"Fonts": "Fontes",
"Font Sizes": "Tamanhos da fonte",
"Class": "Classe",
"Browse for an image": "Procure uma imagem",
"OR": "OU",
"Drop an image here": "Solte uma imagem aqui",
"Upload": "Carregar",
"Block": "Bloco",
"Align": "Alinhamento",
"Default": "Padr\u00e3o",
"Circle": "C\u00edrculo",
"Disc": "Disco",
"Square": "Quadrado",
"Lower Alpha": "a. b. c. ...",
"Lower Greek": "\u03b1. \u03b2. \u03b3. ...",
"Lower Roman": "i. ii. iii. ...",
"Upper Alpha": "A. B. C. ...",
"Upper Roman": "I. II. III. ...",
"Anchor...": "\u00c2ncora...",
"Name": "Nome",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id deve come\u00e7ar com uma letra, seguido apenas por letras, n\u00fameros, tra\u00e7os, pontos, dois pontos ou sublinhados.",
"You have unsaved changes are you sure you want to navigate away?": "Voc\u00ea tem mudan\u00e7as n\u00e3o salvas. Voc\u00ea tem certeza que deseja sair?",
"Restore last draft": "Restaurar \u00faltimo rascunho",
"Special character...": "Caractere especial...",
"Source code": "C\u00f3digo fonte",
"Insert\/Edit code sample": "Inserir\/Editar c\u00f3digo de exemplo",
"Language": "Idioma",
"Code sample...": "Exemplo de c\u00f3digo...",
"Color Picker": "Seletor de Cores",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Da esquerda para a direita",
"Right to left": "Da direita para a esquerda",
"Emoticons": "Emoticons",
"Emoticons...": "Emojis...",
"Metadata and Document Properties": "Metadados e Propriedades do Documento",
"Title": "T\u00edtulo",
"Keywords": "Palavras-chave",
"Description": "Descri\u00e7\u00e3o",
"Robots": "Rob\u00f4s",
"Author": "Autor",
"Encoding": "Codifica\u00e7\u00e3o",
"Fullscreen": "Tela cheia",
"Action": "A\u00e7\u00e3o",
"Shortcut": "Atalho",
"Help": "Ajuda",
"Address": "Endere\u00e7o",
"Focus to menubar": "Foco no menu",
"Focus to toolbar": "Foco na barra de ferramentas",
"Focus to element path": "Foco no caminho do elemento",
"Focus to contextual toolbar": "Foco na barra de ferramentas contextual",
"Insert link (if link plugin activated)": "Inserir link (se o plugin de link estiver ativado)",
"Save (if save plugin activated)": "Salvar (se o plugin de salvar estiver ativado)",
"Find (if searchreplace plugin activated)": "Procurar (se o plugin de procurar e substituir estiver ativado)",
"Plugins installed ({0}):": "Plugins instalados ({0}):",
"Premium plugins:": "Plugins premium:",
"Learn more...": "Saiba mais...",
"You are using {0}": "Voc\u00ea est\u00e1 usando {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Atalhos \u00fateis",
"Horizontal line": "Linha horizontal",
"Insert\/edit image": "Inserir\/editar imagem",
"Alternative description": "Descri\u00e7\u00e3o alternativa",
"Accessibility": "Acessibilidade",
"Image is decorative": "A imagem \u00e9 decorativa",
"Source": "Endere\u00e7o da imagem",
"Dimensions": "Dimens\u00f5es",
"Constrain proportions": "Manter propor\u00e7\u00f5es",
"General": "Geral",
"Advanced": "Avan\u00e7ado",
"Style": "Estilo",
"Vertical space": "Espa\u00e7amento vertical",
"Horizontal space": "Espa\u00e7amento horizontal",
"Border": "Borda",
"Insert image": "Inserir imagem",
"Image...": "Imagem...",
"Image list": "Lista de Imagens",
"Rotate counterclockwise": "Girar em sentido hor\u00e1rio",
"Rotate clockwise": "Girar em sentido anti-hor\u00e1rio",
"Flip vertically": "Virar verticalmente",
"Flip horizontally": "Virar horizontalmente",
"Edit image": "Editar imagem",
"Image options": "Op\u00e7\u00f5es de Imagem",
"Zoom in": "Aumentar zoom",
"Zoom out": "Diminuir zoom",
"Crop": "Cortar",
"Resize": "Redimensionar",
"Orientation": "Orienta\u00e7\u00e3o",
"Brightness": "Brilho",
"Sharpen": "Aumentar nitidez",
"Contrast": "Contraste",
"Color levels": "N\u00edveis de cor",
"Gamma": "Gama",
"Invert": "Inverter",
"Apply": "Aplicar",
"Back": "Voltar",
"Insert date\/time": "Inserir data\/hora",
"Date\/time": "data\/hora",
"Insert\/edit link": "Inserir\/editar link",
"Text to display": "Texto para mostrar",
"Url": "Url",
"Open link in...": "Abrir link em...",
"Current window": "Janela atual",
"None": "Nenhum",
"New window": "Nova janela",
"Open link": "Abrir link",
"Remove link": "Remover link",
"Anchors": "\u00c2ncoras",
"Link...": "Link...",
"Paste or type a link": "Cole ou digite um Link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "A URL que voc\u00ea informou parece ser um link externo. Deseja incluir o prefixo http:\/\/?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "A URL informada parece ser um link externo. Voc\u00ea quer adicionar o prefixo necess\u00e1rio https:\/\/ ?",
"Link list": "Lista de Links",
"Insert video": "Inserir v\u00eddeo",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Insert\/edit media": "Inserir\/editar imagem",
"Alternative source": "Fonte alternativa",
"Alternative source URL": "Endere\u00e7o URL alternativo",
"Media poster (Image URL)": "Post de m\u00eddia (URL da Imagem)",
"Paste your embed code below:": "Insira o c\u00f3digo de incorpora\u00e7\u00e3o abaixo:",
"Embed": "Incorporar",
"Media...": "M\u00eddia...",
"Nonbreaking space": "Espa\u00e7o n\u00e3o separ\u00e1vel",
"Page break": "Quebra de p\u00e1gina",
"Paste as text": "Colar como texto",
"Preview": "Pr\u00e9-visualizar",
"Print...": "Imprimir...",
"Save": "Salvar",
"Find": "Localizar",
"Replace with": "Substituir por",
"Replace": "Substituir",
"Replace all": "Substituir tudo",
"Previous": "Anterior",
"Next": "Pr\u00f3ximo",
"Find and Replace": "Localizar e substituir",
"Find and replace...": "Encontrar e substituir...",
"Could not find the specified string.": "N\u00e3o foi poss\u00edvel encontrar o termo especificado",
"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas",
"Find whole words only": "Encontrar somente palavras inteiras",
"Find in selection": "Localizar na sele\u00e7\u00e3o",
"Spellcheck": "Corretor ortogr\u00e1fico",
"Spellcheck Language": "Idioma de verifica\u00e7\u00e3o ortogr\u00e1fica",
"No misspellings found.": "Sem erros ortogr\u00e1ficos",
"Ignore": "Ignorar",
"Ignore all": "Ignorar tudo",
"Finish": "Finalizar",
"Add to Dictionary": "Adicionar ao Dicion\u00e1rio",
"Insert table": "Inserir tabela",
"Table properties": "Propriedades da tabela",
"Delete table": "Excluir tabela",
"Cell": "C\u00e9lula",
"Row": "Linha",
"Column": "Coluna",
"Cell properties": "Propriedades da c\u00e9lula",
"Merge cells": "Agrupar c\u00e9lulas",
"Split cell": "Dividir c\u00e9lula",
"Insert row before": "Inserir linha antes",
"Insert row after": "Inserir linha depois",
"Delete row": "Excluir linha",
"Row properties": "Propriedades da linha",
"Cut row": "Recortar linha",
"Copy row": "Copiar linha",
"Paste row before": "Colar linha antes",
"Paste row after": "Colar linha depois",
"Insert column before": "Inserir coluna antes",
"Insert column after": "Inserir coluna depois",
"Delete column": "Excluir coluna",
"Cols": "Colunas",
"Rows": "Linhas",
"Width": "Largura",
"Height": "Altura",
"Cell spacing": "Espa\u00e7amento da c\u00e9lula",
"Cell padding": "Espa\u00e7amento interno da c\u00e9lula",
"Caption": "Legenda",
"Show caption": "Mostrar descri\u00e7\u00e3o",
"Left": "Esquerdo",
"Center": "Centro",
"Right": "Direita",
"Cell type": "Tipo de c\u00e9lula",
"Scope": "Escopo",
"Alignment": "Alinhamento",
"H Align": "Alinhamento H",
"V Align": "Alinhamento V",
"Top": "Superior",
"Middle": "Meio",
"Bottom": "Inferior",
"Header cell": "C\u00e9lula cabe\u00e7alho",
"Row group": "Agrupar linha",
"Column group": "Agrupar coluna",
"Row type": "Tipo de linha",
"Header": "Cabe\u00e7alho",
"Body": "Corpo",
"Footer": "Rodap\u00e9",
"Border color": "Cor da borda",
"Insert template...": "Inserir modelo...",
"Templates": "Modelos",
"Template": "Modelo",
"Text color": "Cor do texto",
"Background color": "Cor do fundo",
"Custom...": "Personalizado...",
"Custom color": "Cor personalizada",
"No color": "Nenhuma cor",
"Remove color": "Remover cor",
"Table of Contents": "\u00edndice de Conte\u00fado",
"Show blocks": "Mostrar blocos",
"Show invisible characters": "Exibir caracteres invis\u00edveis",
"Word count": "Contador de palavras",
"Count": "Contar",
"Document": "Documento",
"Selection": "Sele\u00e7\u00e3o",
"Words": "Palavras",
"Words: {0}": "Palavras: {0}",
"{0} words": "{0} palavras",
"File": "Arquivo",
"Edit": "Editar",
"Insert": "Inserir",
"View": "Visualizar",
"Format": "Formatar",
"Table": "Tabela",
"Tools": "Ferramentas",
"Powered by {0}": "Distribu\u00eddo por  {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda",
"Image title": "T\u00edtulo da imagem",
"Border width": "Espessura da borda",
"Border style": "Estilo da borda",
"Error": "Erro",
"Warn": "Aviso",
"Valid": "V\u00e1lido",
"To open the popup, press Shift+Enter": "Para abrir a popup, aperte Shit+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u00c1rea Rich Text. Aperte ALT-0 para ajuda.",
"System Font": "Fonte do sistema",
"Failed to upload image: {0}": "Falha no upload da imagem: {0}",
"Failed to load plugin: {0} from url {1}": "Falha ao carregar plugin: {0} da url {1}",
"Failed to load plugin url: {0}": "Falha ao carregar url do plugin: {0}",
"Failed to initialize plugin: {0}": "Falha ao inicializar plugin: {0}",
"example": "exemplo",
"Search": "Pesquisar",
"All": "Tudo",
"Currency": "Moeda",
"Text": "Texto",
"Quotations": "Cita\u00e7\u00f5es",
"Mathematical": "Matem\u00e1tico",
"Extended Latin": "Latino estendido",
"Symbols": "S\u00edmbolos",
"Arrows": "Setas",
"User Defined": "Definido pelo Usu\u00e1rio",
"dollar sign": "s\u00edmbolo de d\u00f3lar",
"currency sign": "s\u00edmbolo de moeda",
"euro-currency sign": "s\u00edmbolo de euro",
"colon sign": "s\u00edmbolo de dois pontos",
"cruzeiro sign": "s\u00edmbolo de cruzeiro",
"french franc sign": "s\u00edmbolo de franco franc\u00eas",
"lira sign": "s\u00edmbolo de lira",
"mill sign": "s\u00edmbolo do mill",
"naira sign": "s\u00edmbolo da naira",
"peseta sign": "s\u00edmbolo da peseta",
"rupee sign": "s\u00edmbolo da r\u00fapia",
"won sign": "s\u00edmbolo do won",
"new sheqel sign": "s\u00edmbolo do novo sheqel",
"dong sign": "s\u00edmbolo do dong",
"kip sign": "s\u00edmbolo do kip",
"tugrik sign": "s\u00edmbolo do tugrik",
"drachma sign": "s\u00edmbolo do drachma",
"german penny symbol": "s\u00edmbolo de centavo alem\u00e3o",
"peso sign": "s\u00edmbolo do peso",
"guarani sign": "s\u00edmbolo do guarani",
"austral sign": "s\u00edmbolo do austral",
"hryvnia sign": "s\u00edmbolo do hryvnia",
"cedi sign": "s\u00edmbolo do cedi",
"livre tournois sign": "s\u00edmbolo do livre tournois",
"spesmilo sign": "s\u00edmbolo do spesmilo",
"tenge sign": "s\u00edmbolo do tenge",
"indian rupee sign": "s\u00edmbolo de r\u00fapia indiana",
"turkish lira sign": "s\u00edmbolo de lira turca",
"nordic mark sign": "s\u00edmbolo do marco n\u00f3rdico",
"manat sign": "s\u00edmbolo do manat",
"ruble sign": "s\u00edmbolo do rublo",
"yen character": "caractere do yen",
"yuan character": "caractere do yuan",
"yuan character, in hong kong and taiwan": "caractere do yuan, em Hong Kong e Taiwan",
"yen\/yuan character variant one": "varia\u00e7\u00e3o do caractere de yen\/yuan",
"Loading emoticons...": "Carregando emojis...",
"Could not load emoticons": "N\u00e3o foi poss\u00edvel carregar emojis",
"People": "Pessoas",
"Animals and Nature": "Animais e Natureza",
"Food and Drink": "Comida e Bebida",
"Activity": "Atividade",
"Travel and Places": "Viagem e Lugares",
"Objects": "Objetos",
"Flags": "Bandeiras",
"Characters": "Caracteres",
"Characters (no spaces)": "Caracteres (sem espa\u00e7os)",
"{0} characters": "{0} caracteres",
"Error: Form submit field collision.": "Erro: colis\u00e3o de bot\u00e3o de envio do formul\u00e1rio.",
"Error: No form element found.": "Erro: elemento de formul\u00e1rio n\u00e3o encontrado.",
"Update": "Atualizar",
"Color swatch": "Amostra de cor",
"Turquoise": "Turquesa",
"Green": "Verde",
"Blue": "Azul",
"Purple": "Roxo",
"Navy Blue": "Azul marinho",
"Dark Turquoise": "Turquesa escuro",
"Dark Green": "Verde escuro",
"Medium Blue": "Azul m\u00e9dio",
"Medium Purple": "Roxo m\u00e9dio",
"Midnight Blue": "Azul meia-noite",
"Yellow": "Amarelo",
"Orange": "Laranja",
"Red": "Vermelho",
"Light Gray": "Cinza claro",
"Gray": "Cinza",
"Dark Yellow": "Amarelo escuro",
"Dark Orange": "Laranja escuro",
"Dark Red": "Vermelho escuro",
"Medium Gray": "Cinza m\u00e9dio",
"Dark Gray": "Cinza escuro",
"Light Green": "Verde claro",
"Light Yellow": "Amarelo claro",
"Light Red": "Vermelho claro",
"Light Purple": "Roxo claro",
"Light Blue": "Azul claro",
"Dark Purple": "Roxo escuro",
"Dark Blue": "Azul escuro",
"Black": "Preto",
"White": "Branco",
"Switch to or from fullscreen mode": "Abrir ou fechar modo de tela cheia",
"Open help dialog": "Abrir janela de ajuda",
"history": "hist\u00f3rico",
"styles": "estilos",
"formatting": "formata\u00e7\u00e3o",
"alignment": "alinhamento",
"indentation": "indenta\u00e7\u00e3o",
"Font": "Fonte",
"Size": "Tamanho",
"More...": "Mais...",
"Select...": "Selecionar...",
"Preferences": "Prefer\u00eancias",
"Yes": "Sim",
"No": "N\u00e3o",
"Keyboard Navigation": "Navega\u00e7\u00e3o por Teclado",
"Version": "Vers\u00e3o",
"Code view": "Ver c\u00f3digo",
"Open popup menu for split buttons": "Abrir menu popup para bot\u00f5es com divis\u00e3o",
"List Properties": "Listar Propriedades",
"List properties...": "Listar propriedades...",
"Start list at number": "Iniciar a lista no n\u00famero",
"Line height": "Altura da linha",
"comments": "coment\u00e1rios",
"Format Painter": "Pincel de Formata\u00e7\u00e3o",
"Insert\/edit iframe": "Inserir\/editar iframe",
"Capitalization": "Capitaliza\u00e7\u00e3o",
"lowercase": "min\u00fasculos",
"UPPERCASE": "MAI\u00daSCULAS",
"Title Case": "T\u00edtulo do caso",
"permanent pen": "caneta permanente",
"Permanent Pen Properties": "Propriedades da caneta permanente",
"Permanent pen properties...": "Propriedades de caneta permanentes...",
"case change": "mudar caixa",
"page embed": "embutir p\u00e1gina",
"Advanced sort...": "Ordena\u00e7\u00e3o avan\u00e7ada...",
"Advanced Sort": "Ordena\u00e7\u00e3o Avan\u00e7ada...",
"Sort table by column ascending": "Ordenar tabela por coluna ascendente",
"Sort table by column descending": "Ordenar tabela por coluna descendente",
"Sort": "Ordenar",
"Order": "Ordem",
"Sort by": "Ordenar por",
"Ascending": "Ascendente",
"Descending": "Descendente",
"Column {0}": "Coluna {0}",
"Row {0}": "Linha {0}",
"Spellcheck...": "Verifica\u00e7\u00e3o ortogr\u00e1fica",
"Misspelled word": "Palavra com erro ortogr\u00e1fico",
"Suggestions": "Sugest\u00f5es",
"Change": "Mudar",
"Finding word suggestions": "Encontrando sugest\u00f5es de palavras",
"Success": "Sucesso",
"Repair": "Reparo",
"Issue {0} of {1}": "Problema {0} de {1}",
"Images must be marked as decorative or have an alternative text description": "Imagens precisam ser marcadas como decorativas ou terem uma descri\u00e7\u00e3o alternativa de texto",
"Images must have an alternative text description. Decorative images are not allowed.": "Imagens precisam ter uma descri\u00e7\u00e3o alternativa de texto. Imagens decorativas n\u00e3o s\u00e3o permitidas.",
"Or provide alternative text:": "Ou informe um texto alternativo:",
"Make image decorative:": "Fa\u00e7a imagem decorativa:",
"ID attribute must be unique": "O atributo ID precisa ser \u00fanico",
"Make ID unique": "Fa\u00e7a um ID \u00fanico",
"Keep this ID and remove all others": "Mantenha esse ID e remova todos os outros",
"Remove this ID": "Remova esse ID",
"Remove all IDs": "Remova todos os IDs",
"Checklist": "Lista de checagem",
"Anchor": "\u00c2ncora",
"Special character": "Caracteres especiais",
"Code sample": "Exemplo de c\u00f3digo",
"Color": "Cor",
"Document properties": "Propriedades do documento",
"Image description": "Inserir descri\u00e7\u00e3o",
"Image": "Imagem",
"Insert link": "Inserir link",
"Target": "Alvo",
"Link": "Link",
"Poster": "Autor",
"Media": "imagem",
"Print": "Imprimir",
"Prev": "Anterior",
"Find and replace": "Localizar e substituir",
"Whole words": "Palavras inteiras",
"Insert template": "Inserir modelo"
});js/tinymce/langs/gd.js000064400000021147151727150260010677 0ustar00tinymce.addI18n('gd',{
"Cut": "Gearr \u00e0s",
"Heading 5": "Ceann-sgr\u00ecobhadh 5",
"Header 2": "Bann-cinn 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Chan eil am brabhsair agad a' cur taic ri inntrigeadh d\u00ecreach dhan st\u00f2r-bh\u00f2rd. Cleachd ath-ghoiridean a' mheur-chl\u00e0ir, Ctrl+X\/V\/V 'nan \u00e0ite.",
"Heading 4": "Ceann-sgr\u00ecobhadh 4",
"Div": "Div",
"Heading 2": "Ceann-sgr\u00ecobhadh 2",
"Paste": "Cuir ann",
"Close": "D\u00f9in",
"Font Family": "Teaghlach a' chrutha-chl\u00f2",
"Pre": "Pre",
"Align right": "Co-thaobhaich ris an l\u00e0imh dheas",
"New document": "Sgr\u00ecobhainn \u00f9r",
"Blockquote": "Bloc-luaidh",
"Numbered list": "Liosta \u00e0ireamhaichte",
"Heading 1": "Ceann-sgr\u00ecobhadh 1",
"Headings": "Ceann-sgr\u00ecobhaidhean",
"Increase indent": "Meudaich an eag",
"Formats": "F\u00f2rmatan",
"Headers": "Bannan-cinn",
"Select all": "Tagh na h-uile",
"Header 3": "Bann-cinn 3",
"Blocks": "Blocaichean",
"Undo": "Neo-dh\u00e8an",
"Strikethrough": "Loidhne troimhe",
"Bullet list": "Liosta pheilearaichte",
"Header 1": "Bann-cinn 1",
"Superscript": "Os-sgr\u00ecobhte",
"Clear formatting": "Falamhaich am f\u00f2rmatadh",
"Font Sizes": "Meudan nan cruthan-chl\u00f2",
"Subscript": "Bun-sgr\u00ecobhte",
"Header 6": "Bann-cinn 6",
"Redo": "Ath-dh\u00e8an",
"Paragraph": "Paragraf",
"Ok": "Ceart ma-th\u00e0",
"Bold": "Trom",
"Code": "C\u00f2d",
"Italic": "Eadailteach",
"Align center": "Co-thaobhaich ris a' mheadhan",
"Header 5": "Bann-cinn 5",
"Heading 6": "Ceann-sgr\u00ecobhadh 6",
"Heading 3": "Ceann-sgr\u00ecobhadh 3",
"Decrease indent": "Lughdaich an eag",
"Header 4": "Bann-cinn 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Ma chuireas tu rud ann a-nis, th\u00e8id an t-susbaint a chur ann mar theacsa lom gus an cuir thu dheth an roghainn seo a-rithist.",
"Underline": "Fo-loidhne",
"Cancel": "Sguir dheth",
"Justify": "Blocaich",
"Inline": "Taobh a-staigh na loidhne",
"Copy": "D\u00e8an lethbhreac",
"Align left": "Co-thaobhaich ris an l\u00e0imh chl\u00ec",
"Visual aids": "Taic l\u00e8irsinne",
"Lower Greek": "Litrichean Greugach beaga",
"Square": "Ce\u00e0rnag",
"Default": "Bun-roghainn",
"Lower Alpha": "Aibidileach is beag",
"Circle": "Cearcall",
"Disc": "Diosga",
"Upper Alpha": "Aibidileach is m\u00f2r",
"Upper Roman": "\u00c0ireamhan R\u00f2manach is m\u00f2r",
"Lower Roman": "\u00c0ireamhan R\u00f2manach is beag",
"Name": "Ainm",
"Anchor": "Acair",
"You have unsaved changes are you sure you want to navigate away?": "Tha atharraichean gun s\u00e0bhaladh agad, a bheil thu cinnteach gu bheil thu airson gluasad air falbh?",
"Restore last draft": "Aisig an dreach mu dheireadh",
"Special character": "Caractar s\u00f2nraichte",
"Source code": "An c\u00f2d t\u00f9sail",
"B": "B",
"R": "R",
"G": "G",
"Color": "Dath",
"Right to left": "Deas gu cl\u00ec",
"Left to right": "Cl\u00ec gu deas",
"Emoticons": "Samhlaidhean-gn\u00f9ise",
"Robots": "Robotairean",
"Document properties": "Roghainnean na sgr\u00ecobhainne",
"Title": "Tiotal",
"Keywords": "Faclan-luirg",
"Encoding": "C\u00f2dachadh",
"Description": "Tuairisgeul",
"Author": "\u00d9ghdar",
"Fullscreen": "L\u00e0n-sgr\u00ecn",
"Horizontal line": "Loidhne ch\u00f2mhnard",
"Horizontal space": "\u00c0ite c\u00f2mhnard",
"Insert\/edit image": "Cuir a-steach\/Deasaich an dealbh",
"General": "Coitcheann",
"Advanced": "Adhartach",
"Source": "T\u00f9s",
"Border": "Iomall",
"Constrain proportions": "Cuingich na co-r\u00e8irean",
"Vertical space": "\u00c0ite inghearach",
"Image description": "Tuairisgeul an deilbh",
"Style": "Stoidhle",
"Dimensions": "Meudachd",
"Insert image": "Cuir a-steach dealbh",
"Zoom in": "S\u00f9m a-steach",
"Contrast": "Iomsgaradh",
"Back": "Air ais",
"Gamma": "Gamma",
"Flip horizontally": "Thoir flip air a\u2019 ch\u00f2mhnard",
"Resize": "Atharraich am meud",
"Sharpen": "Geuraich",
"Zoom out": "S\u00f9m a-mach",
"Image options": "Roghainnean an deilbh",
"Apply": "Cuir an s\u00e0s",
"Brightness": "Soilleireachd",
"Rotate clockwise": "Cuairtich gu deiseil",
"Rotate counterclockwise": "Cuairtich gu tuathail",
"Edit image": "Deasaich an dealbh",
"Color levels": "\u00ccrean nan dathan",
"Crop": "Bearr",
"Orientation": "Comhair",
"Flip vertically": "Thoir flip gu inghearach",
"Invert": "Ais-thionndaidh",
"Insert date\/time": "Cuir a-steach ceann-l\u00e0\/\u00e0m",
"Remove link": "Thoir air falbh an ceangal",
"Url": "URL",
"Text to display": "An teacsa a th\u00e8id a shealltainn",
"Anchors": "Acraichean",
"Insert link": "Cuir a-steach ceangal",
"New window": "Uinneag \u00f9r",
"None": "Chan eil gin",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Tha coltas gu bheil an URL a chuir thu a-steach 'na cheangal ris an taobh a-muigh. A bheil thu airson an ro-leasachan http:\/\/ a chur ris? Tha feum air.",
"Target": "Targaid",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Tha coltas gu bheil an URL a chuir thu a-steach 'na she\u00f2ladh puist-d. A bheil thu airson an ro-leasachan mailto: a chur ris? Tha feum air.",
"Insert\/edit link": "Cuir a-steach\/Deasaich an ceangal",
"Insert\/edit video": "Cuir a-steach\/Deasaich a' video",
"Poster": "P\u00f2stair",
"Alternative source": "Roghainn eile de th\u00f9s",
"Paste your embed code below:": "Cuir an c\u00f2d leabachaidh agad a-steach gu h-\u00ecosal:",
"Insert video": "Cuir a-steach video",
"Embed": "Leabaich",
"Nonbreaking space": "Be\u00e0rn neo-bhristidh",
"Page break": "Briseadh-duilleige",
"Paste as text": "Cuir ann mar theacsa",
"Preview": "Ro-shealladh",
"Print": "Cl\u00f2-bhuail",
"Save": "S\u00e0bhail",
"Could not find the specified string.": "Cha b' urrainn dhuinn na dh'iarr thu a lorg.",
"Replace": "Cuir 'na \u00e0ite",
"Next": "Air adhart",
"Whole words": "Faclan sl\u00e0na",
"Find and replace": "Lorg is cuir 'na \u00e0ite",
"Replace with": "Cuir na leanas 'na \u00e0ite",
"Find": "Lorg",
"Replace all": "Cuir an \u00e0ite na h-uile",
"Match case": "Maids litrichean m\u00f2ra 's beaga",
"Prev": "Air ais",
"Spellcheck": "Dearbhaich an litreachadh",
"Finish": "Cr\u00ecochnaich",
"Ignore all": "Leig seachad na h-uile",
"Ignore": "Leig seachad",
"Add to Dictionary": "Cuir ris an fhaclair",
"Insert row before": "Cuir a-steach r\u00e0gh roimhe",
"Rows": "R\u00e0ghan",
"Height": "\u00c0irde",
"Paste row after": "Cuir ann r\u00e0gh 'na dh\u00e8idh",
"Alignment": "Co-thaobhadh",
"Border color": "Dath an iomaill",
"Column group": "Buidheann cholbhan",
"Row": "R\u00e0gh",
"Insert column before": "Cuir a-steach colbh roimhe",
"Split cell": "Sgoilt an cealla",
"Cell padding": "Padadh nan ceallan",
"Cell spacing": "Be\u00e0rnadh nan ceallan",
"Row type": "Se\u00f2rsa an r\u00e0igh",
"Insert table": "Cuir a-steach cl\u00e0r",
"Body": "Bodhaig",
"Caption": "Caipsean",
"Footer": "Bann-coise",
"Delete row": "Sguab \u00e0s an r\u00e0gh",
"Paste row before": "Cuir ann r\u00e0gh roimhe",
"Scope": "Sg\u00f2p",
"Delete table": "Sguab \u00e0s an cl\u00e0r",
"H Align": "Co-thaobhadh c\u00f2mhnard",
"Top": "Barr",
"Header cell": "Cealla a' bhanna-chinn",
"Column": "Colbh",
"Row group": "Buidheann r\u00e0ghan",
"Cell": "Cealla",
"Middle": "Meadhan",
"Cell type": "Se\u00f2rsa a' chealla",
"Copy row": "D\u00e8an lethbhreac dhen r\u00e0gh",
"Row properties": "Roghainnean an r\u00e0igh",
"Table properties": "Roghainnean a' chl\u00e0ir",
"Bottom": "Bonn",
"V Align": "Co-thaobhadh inghearach",
"Header": "Bann-cinn",
"Right": "Deas",
"Insert column after": "Cuir a-steach colbh 'na dh\u00e8idh",
"Cols": "Colbhan",
"Insert row after": "Cuir a-steach r\u00e0gh 'na dh\u00e8idh",
"Width": "Leud",
"Cell properties": "Roghainnean a' chealla",
"Left": "Cl\u00ec",
"Cut row": "Gearr \u00e0s an r\u00e0gh",
"Delete column": "Sguab \u00e0s an colbh",
"Center": "Meadhan",
"Merge cells": "Co-aonaich na ceallan",
"Insert template": "Cuir a-steach teamplaid",
"Templates": "Teamplaidean",
"Background color": "Dath a\u2019 ch\u00f9laibh",
"Custom...": "Gn\u00e0thaichte...",
"Custom color": "Dath gn\u00e0thaichte",
"No color": "Gun dath",
"Text color": "Dath an teacsa",
"Show blocks": "Seall na blocaichean",
"Show invisible characters": "Seall na caractaran do-fhaicsinneach",
"Words: {0}": "Faclan: {0}",
"Insert": "Cuir a-steach",
"File": "Faidhle",
"Edit": "Deasaich",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Raon Rich Text. Br\u00f9th ALT-F9 airson a' chl\u00e0ir-thaice. Br\u00f9th ALT-F10 airson a' bh\u00e0r-inneal. Br\u00f9th ALT-0 airson na cobharach.",
"Tools": "Innealan",
"View": "Sealladh",
"Table": "Cl\u00e0r",
"Format": "F\u00f2rmat"
});js/tinymce/langs/km_KH.js000064400000062424151727150270011302 0ustar00tinymce.addI18n('km_KH',{
"Redo": "\u1792\u17d2\u179c\u17be\u200b\u179c\u17b7\u1789",
"Undo": "\u1798\u17b7\u1793\u200b\u1792\u17d2\u179c\u17be\u200b\u179c\u17b7\u1789",
"Cut": "\u1780\u17b6\u178f\u17cb",
"Copy": "\u1785\u1798\u17d2\u179b\u1784",
"Paste": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb",
"Select all": "\u1787\u17d2\u179a\u17be\u179f\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
"New document": "\u17af\u1780\u179f\u17b6\u179a\u200b\u17a2\u178f\u17d2\u1790\u1794\u1791\u200b\u1790\u17d2\u1798\u17b8",
"Ok": "\u1796\u17d2\u179a\u1798",
"Cancel": "\u1794\u17c4\u17c7\u200b\u1794\u1784\u17cb",
"Visual aids": "\u1791\u17b7\u178a\u17d2\u178b\u1797\u17b6\u1796\u200b\u1787\u17c6\u1793\u17bd\u1799",
"Bold": "\u178a\u17b7\u178f",
"Italic": "\u1791\u17d2\u179a\u17c1\u178f",
"Underline": "\u1782\u17bc\u179f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1798",
"Strikethrough": "\u1782\u17bc\u179f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1786\u17bc\u178f",
"Superscript": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785\u200b\u179b\u17be",
"Subscript": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785\u200b\u1780\u17d2\u179a\u17c4\u1798",
"Clear formatting": "\u179f\u1798\u17d2\u17a2\u17b6\u178f\u200b\u1791\u1798\u17d2\u179a\u1784\u17cb",
"Align left": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u1786\u17d2\u179c\u17c1\u1784",
"Align center": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Align right": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u179f\u17d2\u178a\u17b6\u17c6",
"Justify": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1796\u17c1\u1789",
"Bullet list": "\u1794\u1789\u17d2\u1787\u17b8\u200b\u1787\u17b6\u200b\u1785\u17c6\u178e\u17bb\u1785",
"Numbered list": "\u1794\u1789\u17d2\u1787\u17b8\u200b\u1787\u17b6\u200b\u179b\u17c1\u1781",
"Decrease indent": "\u1781\u17b7\u178f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1785\u17c1\u1789",
"Increase indent": "\u1781\u17b7\u178f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1785\u17bc\u179b",
"Close": "\u1794\u17b7\u1791",
"Formats": "\u1791\u17d2\u179a\u1784\u17cb\u1791\u17d2\u179a\u17b6\u1799",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u200b\u17a2\u17ca\u17b8\u1793\u1792\u17ba\u178e\u17b7\u178f\u200b\u179a\u1794\u179f\u17cb\u200b\u17a2\u17d2\u1793\u1780\u200b\u1798\u17b7\u1793\u200b\u17a2\u17b6\u1785\u200b\u1785\u17bc\u179b\u200b\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1791\u17c5\u200b\u1780\u17b6\u1793\u17cb\u200b\u1783\u17d2\u179b\u17b8\u1794\u1794\u178f\u200b\u1791\u17c1\u17d4 \u179f\u17bc\u1798\u200b\u1794\u17d2\u179a\u17be Ctrl+X\/C\/V \u179b\u17be\u200b\u1780\u17d2\u178a\u17b6\u179a\u200b\u1785\u17bb\u1785\u200b\u1787\u17c6\u1793\u17bd\u179f\u200b\u179c\u17b7\u1789\u17d4",
"Headers": "\u1780\u17d2\u1794\u17b6\u179b",
"Header 1": "\u1780\u17d2\u1794\u17b6\u179b 1",
"Header 2": "\u1780\u17d2\u1794\u17b6\u179b 2",
"Header 3": "\u1780\u17d2\u1794\u17b6\u179b 3",
"Header 4": "\u1780\u17d2\u1794\u17b6\u179b 4",
"Header 5": "\u1780\u17d2\u1794\u17b6\u179b 5",
"Header 6": "\u1780\u17d2\u1794\u17b6\u179b 6",
"Headings": "\u1780\u17d2\u1794\u17b6\u179b",
"Heading 1": "\u1780\u17d2\u1794\u17b6\u179b 1",
"Heading 2": "\u1780\u17d2\u1794\u17b6\u179b 2",
"Heading 3": "\u1780\u17d2\u1794\u17b6\u179b 3",
"Heading 4": "\u1780\u17d2\u1794\u17b6\u179b 4",
"Heading 5": "\u1780\u17d2\u1794\u17b6\u179b 5",
"Heading 6": "\u1780\u17d2\u1794\u17b6\u179b 6",
"Div": "Div",
"Pre": "Pre",
"Code": "\u1780\u17bc\u178a",
"Paragraph": "\u1780\u1790\u17b6\u1781\u178e\u17d2\u178c",
"Blockquote": "\u1794\u17d2\u179b\u17bb\u1780\u200b\u1796\u17b6\u1780\u17d2\u1799\u200b\u179f\u1798\u17d2\u179a\u1784\u17cb",
"Inline": "\u1780\u17d2\u1793\u17bb\u1784\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb",
"Blocks": "\u1794\u17d2\u179b\u17bb\u1780",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u1780\u17b6\u179a\u200b\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1796\u17c1\u179b\u200b\u1793\u17c1\u17c7 \u179f\u17d2\u1790\u17b7\u178f\u200b\u1780\u17d2\u1793\u17bb\u1784\u200b\u1794\u17c2\u1794\u200b\u1795\u17c2\u1793\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u1798\u17d2\u1798\u178f\u17b6\u17d4 \u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793\u200b\u1793\u17c1\u17c7 \u1798\u17b6\u178f\u17b7\u1780\u17b6\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a1\u17b6\u1799\u200b\u1793\u17b9\u1784\u200b\u178f\u17d2\u179a\u17bc\u179c\u200b\u1794\u17b6\u1793\u200b\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17b6\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u1798\u17d2\u1798\u178f\u17b6 \u179b\u17bb\u17c7\u178f\u17d2\u179a\u17b6\u200b\u178f\u17c2\u200b\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b7\u1791\u200b\u1787\u1798\u17d2\u179a\u17be\u179f\u200b\u1793\u17c1\u17c7\u17d4",
"Font Family": "\u1782\u17d2\u179a\u17bd\u179f\u17b6\u179a\u200b\u1796\u17bb\u1798\u17d2\u1796\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Font Sizes": "\u1791\u17c6\u17a0\u17c6\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Class": "Class",
"Browse for an image": "\u179a\u1780\u1798\u17be\u179b\u200b\u179a\u17bc\u1794\u1797\u17b6\u1796",
"OR": "\u17ac",
"Drop an image here": "\u1791\u1798\u17d2\u179b\u17b6\u1794\u17cb\u200b\u179a\u17bc\u1794\u1797\u17b6\u1796\u200b\u1793\u17c5\u200b\u178f\u17d2\u179a\u1784\u17cb\u200b\u1793\u17c1\u17c7",
"Upload": "\u1795\u17d2\u1791\u17bb\u1780\u17a1\u17be\u1784",
"Default": "\u179b\u17c6\u1793\u17b6\u17c6\u200b\u178a\u17be\u1798",
"Circle": "\u1798\u17bc\u179b",
"Disc": "\u1790\u17b6\u179f",
"Square": "\u1787\u17d2\u179a\u17bb\u1784",
"Lower Alpha": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785",
"Lower Greek": "\u179b\u17c1\u1781\u200b\u1780\u17d2\u179a\u17b7\u1780\u200b\u178f\u17bc\u1785",
"Lower Roman": "\u179b\u17c1\u1781\u200b\u179a\u17c9\u17bc\u1798\u17c9\u17b6\u17c6\u1784\u200b\u178f\u17bc\u1785",
"Upper Alpha": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u17c6",
"Upper Roman": "\u179b\u17c1\u1781\u200b\u179a\u17c9\u17bc\u1798\u17c9\u17b6\u17c6\u1784\u200b\u1792\u17c6",
"Anchor": "\u1799\u17bb\u1790\u17d2\u1780\u17b6",
"Name": "\u1788\u17d2\u1798\u17c4\u17c7",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u1782\u17bd\u179a\u178f\u17c2\u200b\u1795\u17d2\u178a\u17be\u1798\u200b\u1787\u17b6\u1798\u17bd\u1799\u200b\u178f\u17bd\u17a2\u1780\u17d2\u179f\u179a \u17a0\u17be\u1799\u200b\u1794\u1793\u17d2\u178f\u200b\u1787\u17b6\u1798\u17bd\u1799\u200b\u178f\u17c2\u200b\u178f\u17bd\u17a2\u1780\u17d2\u179f\u179a \u179b\u17c1\u1781 \u179f\u1789\u17d2\u1789\u17b6\u200b\u178a\u1780 \u179f\u1789\u17d2\u1789\u17b6\u200b\u1785\u17bb\u1785 \u179f\u1789\u17d2\u1789\u17b6\u200b\u1785\u17bb\u1785\u1796\u17b8\u179a \u17ac\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1780\u17d2\u179a\u17c4\u1798\u17d4",
"You have unsaved changes are you sure you want to navigate away?": "\u1798\u17b6\u1793\u200b\u1794\u1793\u17d2\u179b\u17b6\u179f\u17cb\u200b\u1794\u17d2\u178a\u17bc\u179a\u200b\u1798\u17b7\u1793\u200b\u1791\u17b6\u1793\u17cb\u200b\u1794\u17b6\u1793\u200b\u179a\u1780\u17d2\u179f\u17b6\u200b\u1791\u17bb\u1780\u17d4 \u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1796\u17b7\u178f\u200b\u1787\u17b6\u200b\u1785\u1784\u17cb\u200b\u1785\u17b6\u1780\u200b\u1785\u17c1\u1789\u200b\u1796\u17b8\u1791\u17b8\u1793\u17c1\u17c7\u200b\u1798\u17c2\u1793\u1791\u17c1?",
"Restore last draft": "\u179f\u17d2\u178a\u17b6\u179a\u200b\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u1796\u17d2\u179a\u17b6\u1784\u200b\u1796\u17b8\u200b\u1798\u17bb\u1793",
"Special character": "\u178f\u17bd\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1796\u17b7\u179f\u17c1\u179f",
"Source code": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u1780\u17bc\u178a",
"Insert\/Edit code sample": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b \u1780\u17bc\u178a\u200b\u1782\u17c6\u179a\u17bc",
"Language": "\u1797\u17b6\u179f\u17b6",
"Color": "\u1796\u178e\u17cc",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u1786\u17d2\u179c\u17c1\u1784\u200b\u1791\u17c5\u200b\u179f\u17d2\u178a\u17b6\u17c6",
"Right to left": "\u179f\u17d2\u178a\u17b6\u17c6\u200b\u1791\u17c5\u200b\u1786\u17d2\u179c\u17c1\u1784",
"Emoticons": "\u179a\u17bc\u1794\u200b\u179f\u1789\u17d2\u1789\u17b6\u178e\u200b\u17a2\u17b6\u179a\u1798\u17d2\u1798\u178e\u17cd",
"Document properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u200b\u17af\u1780\u179f\u17b6\u179a",
"Title": "\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Keywords": "\u1796\u17b6\u1780\u17d2\u1799\u200b\u1782\u1793\u17d2\u179b\u17b9\u17c7",
"Description": "\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u17a2\u1792\u17b7\u1794\u17d2\u1794\u17b6\u1799",
"Robots": "\u179a\u17bc\u1794\u1799\u1793\u17d2\u178f",
"Author": "\u17a2\u17d2\u1793\u1780\u200b\u1793\u17b7\u1796\u1793\u17d2\u1792",
"Encoding": "\u1780\u17b6\u179a\u200b\u17a2\u17ca\u17b8\u1793\u1780\u17bc\u178a",
"Fullscreen": "\u1796\u17c1\u1789\u200b\u17a2\u17c1\u1780\u17d2\u179a\u1784\u17cb",
"Action": "\u179f\u1780\u1798\u17d2\u1798\u1797\u17b6\u1796",
"Shortcut": "\u1795\u17d2\u179b\u17bc\u179c\u1780\u17b6\u178f\u17cb",
"Help": "\u1787\u17c6\u1793\u17bd\u1799",
"Address": "\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793",
"Focus to menubar": "\u1795\u17d2\u178a\u17c4\u178f\u200b\u1791\u17c5\u179b\u17be\u200b\u179a\u1794\u17b6\u179a\u200b\u1798\u17c9\u17ba\u1793\u17bb\u1799",
"Focus to toolbar": "\u1795\u17d2\u178a\u17c4\u178f\u200b\u1791\u17c5\u179b\u17be\u200b\u179a\u1794\u17b6\u179a\u200b\u17a7\u1794\u1780\u179a\u178e\u17cd",
"Focus to element path": "\u1795\u17d2\u178a\u17c4\u178f\u200b\u1791\u17c5\u179b\u17be\u200b\u1791\u17b8\u178f\u17b6\u17c6\u1784\u200b\u179a\u1794\u179f\u17cb\u200b\u1792\u17b6\u178f\u17bb",
"Focus to contextual toolbar": "\u1795\u17d2\u178a\u17c4\u178f\u200b\u1791\u17c5\u200b\u179b\u17be\u200b\u179a\u1794\u17b6\u179a\u17a7\u1794\u1780\u179a\u178e\u17cd\u200b\u178f\u17b6\u1798\u200b\u1794\u179a\u17b7\u1794\u1791",
"Insert link (if link plugin activated)": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17c6\u178e (\u1794\u17d2\u179a\u179f\u17b7\u1793\u1794\u17be\u200b\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8 plugin \u1794\u17b6\u1793\u1794\u17be\u1780)",
"Save (if save plugin activated)": "\u179a\u1780\u17d2\u179f\u17b6\u1791\u17bb\u1780 (\u1794\u17d2\u179a\u179f\u17b7\u1793\u1794\u17be\u200b\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8 save \u1794\u17b6\u1793\u1794\u17be\u1780)",
"Find (if searchreplace plugin activated)": "\u179f\u17d2\u179c\u17c2\u1784\u179a\u1780 (\u1794\u17d2\u179a\u179f\u17b7\u1793\u200b\u1794\u17be\u200b\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8 searchreplace \u1794\u17b6\u1793\u200b\u1794\u17be\u1780)",
"Plugins installed ({0}):": "\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u178a\u17c2\u179b\u1794\u17b6\u1793\u200b\u178a\u17c6\u17a1\u17be\u1784 ({0})\u17d6",
"Premium plugins:": "\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u200b\u1782\u17b7\u178f\u200b\u1794\u17d2\u179a\u17b6\u1780\u17cb\u17d6",
"Learn more...": "\u179f\u17b7\u1780\u17d2\u179f\u17b6\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798...",
"You are using {0}": "\u17a2\u17d2\u1793\u1780\u200b\u1780\u17c6\u1796\u17bb\u1784\u200b\u1794\u17d2\u179a\u17be {0}",
"Horizontal line": "\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u178a\u17c1\u1780",
"Insert\/edit image": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2 \u179a\u17bc\u1794\u200b\u1797\u17b6\u1796",
"Image description": "\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u17a2\u1792\u17b7\u1794\u17d2\u1794\u17b6\u1799\u200b\u1796\u17b8\u200b\u179a\u17bc\u1794",
"Source": "\u1794\u17d2\u179a\u1797\u1796",
"Dimensions": "\u179c\u17b7\u1798\u17b6\u178f\u17d2\u179a",
"Constrain proportions": " \u1794\u1784\u17d2\u1781\u17c6\u200b\u17b2\u17d2\u1799\u200b\u1798\u17b6\u1793\u200b\u179f\u1798\u17b6\u1798\u17b6\u178f\u17d2\u179a",
"General": "\u1791\u17bc\u1791\u17c5",
"Advanced": "\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1781\u17d2\u1796\u179f\u17cb",
"Style": "\u179a\u1785\u1793\u17b6\u1794\u1790",
"Vertical space": "\u179b\u17c6\u17a0\u200b\u1794\u1789\u17d2\u1788\u179a",
"Horizontal space": "\u179b\u17c6\u17a0\u200b\u1795\u17d2\u178a\u17c1\u1780",
"Border": "\u179f\u17ca\u17bb\u1798",
"Insert image": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u179a\u17bc\u1794\u200b\u1797\u17b6\u1796",
"Image": "\u179a\u17bc\u1794\u1797\u17b6\u1796",
"Image list": "\u1794\u1789\u17d2\u1787\u17b8\u179a\u17bc\u1794\u1797\u17b6\u1796",
"Rotate counterclockwise": "\u1794\u1784\u17d2\u179c\u17b7\u179b\u200b\u1785\u17d2\u179a\u17b6\u179f\u200b\u1791\u17d2\u179a\u1793\u17b7\u1785\u200b\u1793\u17b6\u17a1\u17b7\u1780\u17b6",
"Rotate clockwise": "\u1794\u1784\u17d2\u179c\u17b7\u179b\u200b\u179f\u17d2\u179a\u1794\u200b\u1791\u17d2\u179a\u1793\u17b7\u1785\u200b\u1793\u17b6\u17a1\u17b7\u1780\u17b6",
"Flip vertically": "\u178f\u17d2\u179a\u17a1\u1794\u17cb\u200b\u1794\u1789\u17d2\u1788\u179a",
"Flip horizontally": "\u178f\u17d2\u179a\u17a1\u1794\u17cb\u200b\u1795\u17d2\u178a\u17c1\u1780",
"Edit image": "\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b\u200b\u179a\u17bc\u1794\u1797\u17b6\u1796",
"Image options": "\u1787\u1798\u17d2\u179a\u17be\u179f\u200b\u179a\u17bc\u1794\u1797\u17b6\u1796",
"Zoom in": "\u1796\u1784\u17d2\u179a\u17b8\u1780",
"Zoom out": "\u1794\u1784\u17d2\u179a\u17bd\u1798",
"Crop": "\u1785\u17d2\u179a\u17b9\u1794",
"Resize": "\u1794\u17d2\u178a\u17bc\u179a\u200b\u1791\u17c6\u17a0\u17c6",
"Orientation": "\u1791\u17b7\u179f",
"Brightness": "\u1796\u1793\u17d2\u179b\u17ba",
"Sharpen": "\u1785\u17d2\u1794\u17b6\u179f\u17cb",
"Contrast": "\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1796\u178e\u17cc",
"Color levels": "\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1796\u178e\u17cc",
"Gamma": "\u17a0\u17d2\u1782\u17b6\u1798\u17c9\u17b6",
"Invert": "\u178a\u17b6\u1780\u17cb\u200b\u1794\u1789\u17d2\u1785\u17d2\u179a\u17b6\u179f",
"Apply": "\u17a2\u1793\u17bb\u179c\u178f\u17d2\u178f",
"Back": "\u1790\u1799\u1780\u17d2\u179a\u17c4\u1799",
"Insert date\/time": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1780\u17b6\u179b\u200b\u1794\u179a\u17b7\u1785\u17d2\u1786\u17c1\u1791\/\u1798\u17c9\u17c4\u1784",
"Date\/time": "\u1780\u17b6\u179b\u1794\u179a\u17b7\u1785\u17d2\u1786\u17c1\u1791\/\u1798\u17c9\u17c4\u1784",
"Insert link": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17c6\u178e",
"Insert\/edit link": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2 \u178f\u17c6\u178e",
"Text to display": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17d2\u179a\u17bc\u179c\u200b\u1794\u1784\u17d2\u17a0\u17b6\u1789",
"Url": "Url",
"Target": "\u1791\u17b7\u179f\u178a\u17c5",
"None": "\u1798\u17b7\u1793\u200b\u1798\u17b6\u1793",
"New window": "\u1795\u17d2\u1791\u17b6\u17c6\u1784\u200b\u179c\u17b8\u1793\u178a\u17bc\u200b\u1790\u17d2\u1798\u17b8",
"Remove link": "\u178a\u1780\u200b\u178f\u17c6\u178e\u200b\u1785\u17c1\u1789",
"Anchors": "\u1799\u17bb\u1790\u17d2\u1780\u17b6",
"Link": "\u178f\u17c6\u178e",
"Paste or type a link": "\u1794\u17b7\u1791\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u17ac\u200b\u179c\u17b6\u1799\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17c6\u178e",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b6\u1793\u200b\u1794\u1789\u17d2\u1785\u17bc\u179b URL \u178a\u17c2\u179b\u200b\u1798\u17b6\u1793\u200b\u179f\u178e\u17d2\u178b\u17b6\u1793\u200b\u178a\u17bc\u1785\u200b\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u200b\u17a2\u17ca\u17b8\u1798\u17c2\u179b\u17d4 \u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1785\u1784\u17cb\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1794\u17bb\u1796\u17d2\u179c\u1794\u200b\u1791 mailto: \u178a\u17c2\u179a\u200b\u17ac\u1791\u17c1?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b6\u1793\u200b\u1794\u1789\u17d2\u1785\u17bc\u179b URL \u178a\u17c2\u179b\u200b\u1787\u17b6\u200b\u178f\u17c6\u178e\u200b\u1791\u17c5\u200b\u1781\u17b6\u1784\u200b\u1780\u17d2\u179a\u17c5\u17d4 \u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1785\u1784\u17cb\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1794\u17bb\u1796\u17d2\u179c\u1794\u200b\u1791 http:\/\/ \u178a\u17c2\u179a\u200b\u17ac\u1791\u17c1?",
"Link list": "\u1794\u1789\u17d2\u1787\u17b8\u178f\u17c6\u178e",
"Insert video": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u179c\u17b8\u178a\u17c1\u17a2\u17bc",
"Insert\/edit video": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2 \u179c\u17b8\u178a\u17c1\u17a2\u17bc",
"Insert\/edit media": "\u1794\u1789\u17d2\u1787\u17bc\u179b\u200b\/\u1780\u17c2\u179f\u1798\u17d2\u179a\u17bd\u179b \u1798\u17c1\u178c\u17b6",
"Alternative source": "\u1794\u17d2\u179a\u1797\u1796\u200b\u178a\u1791\u17c3\u200b\u1791\u17c0\u178f",
"Poster": "\u17a2\u17d2\u1793\u1780\u200b\u1795\u17d2\u179f\u17b6\u1799",
"Paste your embed code below:": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1780\u17bc\u178a\u200b\u1794\u1784\u17d2\u1780\u1794\u17cb\u200b\u1793\u17c5\u200b\u1781\u17b6\u1784\u200b\u1780\u17d2\u179a\u17c4\u1798:",
"Embed": "\u1794\u1784\u17d2\u1780\u1794\u17cb",
"Media": "\u1798\u17c1\u178c\u17b6",
"Nonbreaking space": "\u178a\u17c6\u178e\u1780\u200b\u1783\u17d2\u179b\u17b6\u200b\u1798\u17b7\u1793\u200b\u1794\u17c6\u1794\u17c2\u1780",
"Page break": "\u1794\u17c6\u1794\u17c2\u1780\u200b\u1791\u17c6\u1796\u17d0\u179a",
"Paste as text": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17b6\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Preview": "\u1798\u17be\u179b\u200b\u1787\u17b6\u200b\u1798\u17bb\u1793",
"Print": "\u1794\u17c4\u17c7\u200b\u1796\u17bb\u1798\u17d2\u1796",
"Save": "\u179a\u1780\u17d2\u179f\u17b6\u200b\u1791\u17bb\u1780",
"Find": "\u179f\u17d2\u179c\u17c2\u1784\u200b\u179a\u1780",
"Replace with": "\u1787\u17c6\u1793\u17bd\u179f\u200b\u178a\u17c4\u1799",
"Replace": "\u1787\u17c6\u1793\u17bd\u179f",
"Replace all": "\u1787\u17c6\u1793\u17bd\u179f\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
"Prev": "\u1780\u17d2\u179a\u17c4\u1799",
"Next": "\u1798\u17bb\u1781",
"Find and replace": "\u179f\u17d2\u179c\u17c2\u1784\u200b\u179a\u1780\u200b\u1793\u17b7\u1784\u200b\u1787\u17c6\u1793\u17bd\u179f",
"Could not find the specified string.": "\u1798\u17b7\u1793\u200b\u17a2\u17b6\u1785\u200b\u179a\u1780\u200b\u1783\u17be\u1789\u200b\u1781\u17d2\u179f\u17c2\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u178a\u17c2\u179b\u200b\u1794\u17b6\u1793\u200b\u1780\u17c6\u178e\u178f\u17cb\u17d4",
"Match case": "\u1780\u179a\u178e\u17b8\u200b\u178a\u17c6\u178e\u17bc\u1785",
"Whole words": "\u1796\u17b6\u1780\u17d2\u1799\u200b\u1791\u17b6\u17c6\u1784\u200b\u1798\u17bc\u179b",
"Spellcheck": "\u1796\u17b7\u1793\u17b7\u178f\u17d2\u1799\u200b\u17a2\u1780\u17d2\u1781\u179a\u17b6\u179c\u17b7\u179a\u17bb\u1791\u17d2\u1792",
"Ignore": "\u1798\u17b7\u1793\u200b\u17a2\u17be\u200b\u1796\u17be",
"Ignore all": "\u1798\u17b7\u1793\u200b\u17a2\u17be\u1796\u17be\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
"Finish": "\u1794\u1789\u17d2\u1785\u1794\u17cb",
"Add to Dictionary": "\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1791\u17c5\u200b\u179c\u1785\u1793\u17b6\u1793\u17bb\u1780\u17d2\u179a\u1798",
"Insert table": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17b6\u179a\u17b6\u1784",
"Table properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u178f\u17b6\u179a\u17b6\u1784",
"Delete table": "\u179b\u17bb\u1794\u200b\u178f\u17b6\u179a\u17b6\u1784",
"Cell": "\u1780\u17d2\u179a\u17a1\u17b6",
"Row": "\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Column": "\u1787\u17bd\u179a\u200b\u1788\u179a",
"Cell properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Merge cells": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1780\u17d2\u179a\u17a1\u17b6\u200b\u1785\u17bc\u179b\u200b\u1782\u17d2\u1793\u17b6",
"Split cell": "\u1789\u17c2\u1780\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Insert row before": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1788\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
"Insert row after": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Delete row": "\u179b\u17bb\u1794\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Row properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Cut row": "\u1780\u17b6\u178f\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Copy row": "\u1785\u1798\u17d2\u179b\u1784\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Paste row before": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
"Paste row after": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Insert column before": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u1788\u179a\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
"Insert column after": "\u1794\u1789\u17d2\u1787\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Delete column": "\u179b\u17bb\u1794\u200b\u1787\u17bd\u179a\u200b\u1788\u179a",
"Cols": "\u1787\u17bd\u179a\u200b\u1788\u179a",
"Rows": "\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Width": "\u1791\u1791\u17b9\u1784",
"Height": "\u1780\u1798\u17d2\u1796\u179f\u17cb",
"Cell spacing": "\u1782\u1798\u17d2\u179b\u17b6\u178f\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Cell padding": "\u1785\u1793\u17d2\u179b\u17c4\u17c7\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Caption": "\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Left": "\u1786\u17d2\u179c\u17c1\u1784",
"Center": "\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Right": "\u179f\u17d2\u178a\u17b6\u17c6",
"Cell type": "\u1794\u17d2\u179a\u1797\u17c1\u1791\u200b\u1780\u17d2\u179a\u17a1\u17b6",
"Scope": "\u179c\u17b7\u179f\u17b6\u179b\u200b\u1797\u17b6\u1796",
"Alignment": "\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798",
"H Align": "\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1795\u17d2\u178a\u17c1\u1780",
"V Align": "\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1794\u1789\u17d2\u1788\u179a",
"Top": "\u179b\u17be",
"Middle": "\u1780\u178e\u17d2\u178a\u17b6\u179b",
"Bottom": "\u1780\u17d2\u179a\u17c4\u1798",
"Header cell": "\u1780\u17d2\u179a\u17a1\u17b6\u200b\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Row group": "\u1780\u17d2\u179a\u17bb\u1798\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Column group": "\u1780\u17d2\u179a\u17bb\u1798\u200b\u1787\u17bd\u179a\u200b\u1788\u179a",
"Row type": "\u1794\u17d2\u179a\u1797\u17c1\u1791\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
"Header": "\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
"Body": "\u178f\u17bd\u200b\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8",
"Footer": "\u1794\u178b\u1798\u200b\u1780\u1790\u17b6",
"Border color": "\u1796\u178e\u17cc\u200b\u179f\u17ca\u17bb\u1798",
"Insert template": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1796\u17bb\u1798\u17d2\u1796\u200b\u1782\u1798\u17d2\u179a\u17bc",
"Templates": "\u1796\u17bb\u1798\u17d2\u1796\u200b\u1782\u17c6\u179a\u17bc",
"Template": "\u1796\u17bb\u1798\u17d2\u1796\u1782\u17c6\u179a\u17bc",
"Text color": "\u1796\u178e\u17cc\u200b\u17a2\u1780\u17d2\u179f\u179a",
"Background color": "\u1796\u178e\u17cc\u200b\u1795\u17d2\u1791\u17c3\u200b\u1780\u17d2\u179a\u17c4\u1799",
"Custom...": "\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1781\u17d2\u179b\u17bd\u1793...",
"Custom color": "\u1796\u178e\u17cc\u200b\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1781\u17d2\u179b\u17bd\u1793",
"No color": "\u1782\u17d2\u1798\u17b6\u1793\u200b\u1796\u178e\u17cc",
"Table of Contents": "\u178f\u17b6\u179a\u17b6\u1784\u200b\u1793\u17c3\u200b\u1798\u17b6\u178f\u17b7\u1780\u17b6",
"Show blocks": "\u1794\u1784\u17d2\u17a0\u17b6\u1789\u200b\u1794\u17d2\u179b\u17bb\u1780",
"Show invisible characters": "\u1794\u1784\u17d2\u17a0\u17b6\u1789\u200b\u178f\u17bd\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1780\u17c6\u1794\u17b6\u17c6\u1784",
"Words: {0}": "\u1796\u17b6\u1780\u17d2\u1799: {0}",
"File": "\u17af\u1780\u179f\u17b6\u179a",
"Edit": "\u1780\u17c2\u1794\u17d2\u179a\u17c2",
"Insert": "\u1794\u1789\u17d2\u1785\u17bc\u179b",
"View": "\u1791\u17b7\u178a\u17d2\u178b\u1797\u17b6\u1796",
"Format": "\u1791\u17d2\u179a\u1784\u17cb\u1791\u17d2\u179a\u17b6\u1799",
"Table": "\u178f\u17b6\u179a\u17b6\u1784",
"Tools": "\u17a7\u1794\u1780\u179a\u178e\u17cd",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u1791\u17b8\u178f\u17b6\u17c6\u1784\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u179f\u17c6\u1794\u17bc\u179a\u1794\u17c2\u1794\u17d4 \u1785\u17bb\u1785 ALT-F9 \u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u1798\u17c9\u17ba\u1793\u17bb\u1799\u17d4 \u1785\u17bb\u1785 ALT-F10 \u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u179a\u1794\u17b6\u179a\u200b\u17a7\u1794\u1780\u179a\u178e\u17cd\u17d4 \u1785\u17bb\u1785 ALT-0 \u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u1787\u17c6\u1793\u17bd\u1799\u17d4"
});js/tinymce/langs/tr_TR.js000064400000047224151727150270011344 0ustar00tinymce.addI18n('tr_TR',{
"Redo": "Yinele",
"Undo": "Geri al",
"Cut": "Kes",
"Copy": "Kopyala",
"Paste": "Yap\u0131\u015ft\u0131r",
"Select all": "T\u00fcm\u00fcn\u00fc se\u00e7",
"New document": "Yeni dok\u00fcman",
"Ok": "Tamam",
"Cancel": "\u0130ptal",
"Visual aids": "G\u00f6rsel ara\u00e7lar",
"Bold": "Kal\u0131n",
"Italic": "\u0130talik",
"Underline": "Alt\u0131 \u00e7izili",
"Strikethrough": "\u00dcst\u00fc \u00e7izgili",
"Superscript": "\u00dcst simge",
"Subscript": "Alt simge",
"Clear formatting": "Bi\u00e7imi temizle",
"Align left": "Sola hizala",
"Align center": "Ortala",
"Align right": "Sa\u011fa hizala",
"Justify": "\u0130ki yana yasla",
"Bullet list": "S\u0131ras\u0131z liste",
"Numbered list": "S\u0131ral\u0131 liste",
"Decrease indent": "Girintiyi azalt",
"Increase indent": "Girintiyi art\u0131r",
"Close": "Kapat",
"Formats": "Bi\u00e7imler",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Taray\u0131c\u0131n\u0131z panoya direk eri\u015fimi desteklemiyor. L\u00fctfen Ctrl+X\/C\/V klavye k\u0131sayollar\u0131n\u0131 kullan\u0131n.",
"Headers": "Ba\u015fl\u0131klar",
"Header 1": "Ba\u015fl\u0131k 1",
"Header 2": "Ba\u015fl\u0131k 2",
"Header 3": "Ba\u015fl\u0131k 3",
"Header 4": "Ba\u015fl\u0131k 4",
"Header 5": "Ba\u015fl\u0131k 5",
"Header 6": "Ba\u015fl\u0131k 6",
"Headings": "Ba\u015fl\u0131klar",
"Heading 1": "Ba\u015fl\u0131k 1",
"Heading 2": "Ba\u015fl\u0131k 2",
"Heading 3": "Ba\u015fl\u0131k 3",
"Heading 4": "Ba\u015fl\u0131k 4",
"Heading 5": "Ba\u015fl\u0131k 5",
"Heading 6": "Ba\u015fl\u0131k 6",
"Preformatted": "\u00d6nceden bi\u00e7imlendirilmi\u015f",
"Div": "Div",
"Pre": "Pre",
"Code": "Kod",
"Paragraph": "Paragraf",
"Blockquote": "Blockquote",
"Inline": "Sat\u0131r i\u00e7i",
"Blocks": "Bloklar",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00fcz metin modunda yap\u0131\u015ft\u0131r. Bu se\u00e7ene\u011fi kapatana kadar i\u00e7erikler d\u00fcz metin olarak yap\u0131\u015ft\u0131r\u0131l\u0131r.",
"Fonts": "Yaz\u0131 Tipleri",
"Font Sizes": "Yaz\u0131tipi B\u00fcy\u00fckl\u00fc\u011f\u00fc",
"Class": "S\u0131n\u0131f",
"Browse for an image": "Bir resim aray\u0131n",
"OR": "ya da",
"Drop an image here": "Buraya bir resim koyun",
"Upload": "Y\u00fckle",
"Block": "Blok",
"Align": "Hizala",
"Default": "Varsay\u0131lan",
"Circle": "Daire",
"Disc": "Disk",
"Square": "Kare",
"Lower Alpha": "K\u00fc\u00e7\u00fck ABC",
"Lower Greek": "K\u00fc\u00e7\u00fck Yunan alfabesi",
"Lower Roman": "K\u00fc\u00e7\u00fck Roman alfabesi",
"Upper Alpha": "B\u00fcy\u00fck ABC",
"Upper Roman": "B\u00fcy\u00fck Roman alfabesi",
"Anchor...": "\u00c7apa...",
"Name": "\u0130sim",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id bir harf ile ba\u015flamal\u0131d\u0131r ve sadece harfleri, rakamlar\u0131, \u00e7izgileri, noktalar\u0131, virg\u00fclleri veya alt \u00e7izgileri i\u00e7ermelidir.",
"You have unsaved changes are you sure you want to navigate away?": "Kaydedilmemi\u015f de\u011fi\u015fiklikler var, sayfadan ayr\u0131lmak istedi\u011finize emin misiniz?",
"Restore last draft": "Son tasla\u011f\u0131 kurtar",
"Special character...": "\u00d6zel karakter...",
"Source code": "Kaynak kodu",
"Insert\/Edit code sample": "Kod \u00f6rne\u011fini Kaydet\/D\u00fczenle",
"Language": "Dil",
"Code sample...": "Kod \u00f6rne\u011fi...",
"Color Picker": "Renk Se\u00e7ici",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Soldan sa\u011fa",
"Right to left": "Sa\u011fdan sola",
"Emoticons": "G\u00fcl\u00fcc\u00fckler",
"Emoticons...": "\u0130fadeler...",
"Metadata and Document Properties": "\u00d6nbilgi ve Belge \u00d6zellikleri",
"Title": "Ba\u015fl\u0131k",
"Keywords": "Anahtar kelimeler",
"Description": "A\u00e7\u0131klama",
"Robots": "Robotlar",
"Author": "Yazar",
"Encoding": "Kodlama",
"Fullscreen": "Tam ekran",
"Action": "Eylem",
"Shortcut": "K\u0131sayol",
"Help": "Yard\u0131m",
"Address": "Adres",
"Focus to menubar": "Men\u00fc \u00e7ubu\u011funa odaklan.",
"Focus to toolbar": "Ara\u00e7 \u00e7ubu\u011funa odaklan.",
"Focus to element path": "Eleman yoluna odaklan",
"Focus to contextual toolbar": "Ba\u011flamsal ara\u00e7 \u00e7ubu\u011funa odaklan",
"Insert link (if link plugin activated)": "Link ekle (Link eklentisi aktif ise)",
"Save (if save plugin activated)": "Kaydet (Kay\u0131t eklentisi aktif ise)",
"Find (if searchreplace plugin activated)": "Bul (SearchReplace eklentisi aktif ise)",
"Plugins installed ({0}):": "Y\u00fckl\u00fc eklenti say\u0131s\u0131 : ({0}):",
"Premium plugins:": "Premium eklentileri",
"Learn more...": "Daha fazla bilgi edinin.",
"You are using {0}": "{0} kullan\u0131yorsun.",
"Plugins": "Eklentiler",
"Handy Shortcuts": "Kullan\u0131\u015fl\u0131 K\u0131sayollar",
"Horizontal line": "Yatay \u00e7izgi",
"Insert\/edit image": "Resim ekle\/d\u00fczenle",
"Alternative description": "Alt etiket",
"Accessibility": "Eri\u015filebilirlik",
"Image is decorative": "G\u00f6rsel s\u00fcs ama\u00e7l\u0131d\u0131r",
"Source": "Kaynak",
"Dimensions": "Boyutlar",
"Constrain proportions": "En - Boy oran\u0131n\u0131 koru",
"General": "Genel",
"Advanced": "Geli\u015fmi\u015f",
"Style": "Stil",
"Vertical space": "Dikey bo\u015fluk",
"Horizontal space": "Yatay bo\u015fluk",
"Border": "\u00c7er\u00e7eve",
"Insert image": "Resim ekle",
"Image...": "Resim...",
"Image list": "Resim listesi",
"Rotate counterclockwise": "Saat y\u00f6n\u00fcn\u00fcn tersine d\u00f6nd\u00fcr",
"Rotate clockwise": "Saat y\u00f6n\u00fcnde d\u00f6nd\u00fcr",
"Flip vertically": "Dikey \u00e7evir",
"Flip horizontally": "Yatay \u00e7evir",
"Edit image": "G\u00f6r\u00fcnt\u00fcy\u00fc d\u00fczenle",
"Image options": "G\u00f6r\u00fcnt\u00fc se\u00e7enekleri",
"Zoom in": "Yak\u0131nla\u015ft\u0131r",
"Zoom out": "Uzakla\u015ft\u0131r",
"Crop": "Kes",
"Resize": "Yeniden Boyutland\u0131r",
"Orientation": "Y\u00f6n\u00fcn\u00fc Belirle",
"Brightness": "Parlakl\u0131k",
"Sharpen": "Keskinle\u015ftir",
"Contrast": "Kontrast",
"Color levels": "Renk seviyesi",
"Gamma": "Gama",
"Invert": "Tersine \u00e7evir",
"Apply": "Uygula",
"Back": "Geri",
"Insert date\/time": "Tarih \/ Zaman ekle",
"Date\/time": "Tarih\/zaman",
"Insert\/edit link": "Ba\u011flant\u0131 ekle\/d\u00fczenle",
"Text to display": "G\u00f6r\u00fcnen yaz\u0131",
"Url": "Url",
"Open link in...": "Ba\u011flant\u0131y\u0131 a\u00e7...",
"Current window": "Mevcut pencere",
"None": "Hi\u00e7biri",
"New window": "Yeni pencere",
"Open link": "Ba\u011flant\u0131y\u0131 A\u00e7",
"Remove link": "Ba\u011flant\u0131y\u0131 kald\u0131r",
"Anchors": "\u00c7apalar",
"Link...": "Ba\u011flant\u0131...",
"Paste or type a link": "Bir ba\u011flant\u0131 yap\u0131\u015ft\u0131r\u0131n yada yaz\u0131n.",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Girdi\u011finiz URL bir eposta adresi gibi g\u00f6z\u00fck\u00fcyor. Gerekli olan mailto: \u00f6nekini eklemek ister misiniz?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Girdi\u011finiz URL bir d\u0131\u015f ba\u011flant\u0131 gibi g\u00f6z\u00fck\u00fcyor. Gerekli olan http:\/\/ \u00f6nekini eklemek ister misiniz?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Girdi\u011finiz URL harici bir ba\u011flant\u0131 gibi g\u00f6r\u00fcn\u00fcyor. \"https:\/\/\" \u00f6nekini eklemek istiyor musunuz? *Gerekli",
"Link list": "Link listesi",
"Insert video": "Video ekle",
"Insert\/edit video": "Video ekle\/d\u00fczenle",
"Insert\/edit media": "Medya ekle\/d\u00fczenle",
"Alternative source": "Alternatif kaynak",
"Alternative source URL": "Alternatif kaynak URL",
"Media poster (Image URL)": "Medya posteri (Resim URL)",
"Paste your embed code below:": "Medya g\u00f6mme kodunu buraya yap\u0131\u015ft\u0131r:",
"Embed": "G\u00f6mme",
"Media...": "Medya...",
"Nonbreaking space": "B\u00f6l\u00fcnemez bo\u015fluk",
"Page break": "Sayfa sonu",
"Paste as text": "Metin olarak yap\u0131\u015ft\u0131r",
"Preview": "\u00d6nizleme",
"Print...": "Yazd\u0131r...",
"Save": "Kaydet",
"Find": "Bul",
"Replace with": "Bununla de\u011fi\u015ftir",
"Replace": "De\u011fi\u015ftir",
"Replace all": "T\u00fcm\u00fcn\u00fc de\u011fi\u015ftir",
"Previous": "Geri",
"Next": "Sonraki",
"Find and Replace": "Bul ve De\u011fi\u015ftir",
"Find and replace...": "Bul ve de\u011fi\u015ftir...",
"Could not find the specified string.": "Herhangi bir sonu\u00e7 bulunamad\u0131.",
"Match case": "B\u00fcy\u00fck \/ K\u00fc\u00e7\u00fck harfe duyarl\u0131",
"Find whole words only": "Sadece t\u00fcm kelimeyi ara",
"Find in selection": "Se\u00e7ili Alanda Bul",
"Spellcheck": "Yaz\u0131m denetimi",
"Spellcheck Language": "Dil Yaz\u0131m Denetimi",
"No misspellings found.": "Yaz\u0131m hatas\u0131 bulunamad\u0131",
"Ignore": "Yoksay",
"Ignore all": "T\u00fcm\u00fcn\u00fc yoksay",
"Finish": "Bitir",
"Add to Dictionary": "S\u00f6zl\u00fc\u011fe ekle",
"Insert table": "Tablo ekle",
"Table properties": "Tablo \u00f6zellikleri",
"Delete table": "Tabloyu sil",
"Cell": "H\u00fccre",
"Row": "Sat\u0131r",
"Column": "S\u00fctun",
"Cell properties": "H\u00fccre \u00f6zellikleri",
"Merge cells": "H\u00fccreleri birle\u015ftir",
"Split cell": "H\u00fccreleri ay\u0131r",
"Insert row before": "\u00d6ncesine yeni sat\u0131r ekle",
"Insert row after": "Sonras\u0131na yeni sat\u0131r ekle",
"Delete row": "Sat\u0131r\u0131 sil",
"Row properties": "Sat\u0131r \u00f6zellikleri",
"Cut row": "Sat\u0131r\u0131 kes",
"Copy row": "Sat\u0131r\u0131 kopyala",
"Paste row before": "\u00d6ncesine sat\u0131r yap\u0131\u015ft\u0131r",
"Paste row after": "Sonras\u0131na sat\u0131r  yap\u0131\u015ft\u0131r",
"Insert column before": "\u00d6ncesine yeni s\u00fctun ekle",
"Insert column after": "Sonras\u0131na yeni s\u00fctun ekle",
"Delete column": "S\u00fctunu sil",
"Cols": "S\u00fctunlar",
"Rows": "Sat\u0131rlar",
"Width": "Geni\u015flik",
"Height": "Y\u00fckseklik",
"Cell spacing": "H\u00fccre aral\u0131\u011f\u0131",
"Cell padding": "H\u00fccre i\u00e7 bo\u015flu\u011fu",
"Caption": "Ba\u015fl\u0131k",
"Show caption": "Ba\u015fl\u0131\u011f\u0131 g\u00f6ster",
"Left": "Sol",
"Center": "Orta",
"Right": "Sa\u011f",
"Cell type": "H\u00fccre tipi",
"Scope": "Kapsam",
"Alignment": "Hizalama",
"H Align": "Yatay Hizalama",
"V Align": "Dikey Hizalama",
"Top": "\u00dcst",
"Middle": "Orta",
"Bottom": "Alt",
"Header cell": "Ba\u015fl\u0131k h\u00fccresi",
"Row group": "Sat\u0131r grubu",
"Column group": "S\u00fctun grubu",
"Row type": "Sat\u0131r tipi",
"Header": "Ba\u015fl\u0131k",
"Body": "G\u00f6vde",
"Footer": "Alt",
"Border color": "Kenarl\u0131k Rengi",
"Insert template...": "\u015eablon ekle...",
"Templates": "\u015eablonlar",
"Template": "Tema",
"Text color": "Yaz\u0131 rengi",
"Background color": "Arkaplan rengi",
"Custom...": "\u00d6zel",
"Custom color": "\u00d6zel Renk",
"No color": "Renk Yok",
"Remove color": "Rengi kald\u0131r",
"Table of Contents": "\u0130\u00e7indekiler",
"Show blocks": "Bloklar\u0131 g\u00f6r\u00fcnt\u00fcle",
"Show invisible characters": "G\u00f6r\u00fcnmez karakterleri g\u00f6ster",
"Word count": "Kelime say\u0131s\u0131",
"Count": "Adet",
"Document": "Belge",
"Selection": "Se\u00e7im",
"Words": "Kelimeler",
"Words: {0}": "Kelime: {0}",
"{0} words": "{0} kelime",
"File": "Dosya",
"Edit": "D\u00fczenle",
"Insert": "Ekle",
"View": "G\u00f6r\u00fcnt\u00fcle",
"Format": "Bi\u00e7im",
"Table": "Tablo",
"Tools": "Ara\u00e7lar",
"Powered by {0}": "{0} taraf\u0131ndan yap\u0131lm\u0131\u015ft\u0131r ",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zengin Metin Alan\u0131. Men\u00fc i\u00e7in ALT-F9 k\u0131sayolunu kullan\u0131n. Ara\u00e7 \u00e7ubu\u011fu i\u00e7in ALT-F10 k\u0131sayolunu kullan\u0131n. Yard\u0131m i\u00e7in ALT-0 k\u0131sayolunu kullan\u0131n.",
"Image title": "Resim ba\u015fl\u0131\u011f\u0131",
"Border width": "Kenar geni\u015fli\u011fi",
"Border style": "Kenar sitili",
"Error": "Hata",
"Warn": "Uyar\u0131",
"Valid": "Ge\u00e7erli",
"To open the popup, press Shift+Enter": "Popup'\u0131 a\u00e7mak i\u00e7in Shift+Enter'a bas\u0131n",
"Rich Text Area. Press ALT-0 for help.": "Zengin Metin Alan\u0131. Yard\u0131m i\u00e7in Alt-0'a bas\u0131n.",
"System Font": "Sistem Yaz\u0131 Tipi",
"Failed to upload image: {0}": "Resim y\u00fcklenemedi: {0}",
"Failed to load plugin: {0} from url {1}": "Eklenti y\u00fcklenemedi: {1} url\u2019sinden {0} ",
"Failed to load plugin url: {0}": "Url eklentisi y\u00fcklenemedi: {0}",
"Failed to initialize plugin: {0}": "Eklenti ba\u015flat\u0131lamad\u0131: {0}",
"example": "\u00f6rnek",
"Search": "Ara",
"All": "T\u00fcm\u00fc",
"Currency": "Para birimi",
"Text": "Metin",
"Quotations": "Al\u0131nt\u0131",
"Mathematical": "Matematik",
"Extended Latin": "Uzat\u0131lm\u0131\u015f Latin",
"Symbols": "Semboller",
"Arrows": "Oklar",
"User Defined": "Kullan\u0131c\u0131 Tan\u0131ml\u0131",
"dollar sign": "dolar i\u015fareti",
"currency sign": "para birimi i\u015fareti",
"euro-currency sign": "euro para birimi i\u015fareti",
"colon sign": "colon i\u015fareti",
"cruzeiro sign": "cruzeiro i\u015fareti",
"french franc sign": "frans\u0131z frang\u0131 i\u015fareti",
"lira sign": "lira i\u015fareti",
"mill sign": "mill i\u015fareti",
"naira sign": "naira i\u015fareti",
"peseta sign": "peseta i\u015fareti",
"rupee sign": "rupi i\u015fareti",
"won sign": "won i\u015fareti",
"new sheqel sign": "yeni \u015fekel i\u015fareti",
"dong sign": "dong i\u015fareti",
"kip sign": "kip i\u015fareti",
"tugrik sign": "tugrik i\u015fareti",
"drachma sign": "drahma i\u015fareti",
"german penny symbol": "alman kuru\u015f sembol\u00fc",
"peso sign": "peso i\u015fareti",
"guarani sign": "guarani i\u015fareti",
"austral sign": "austral i\u015fareti",
"hryvnia sign": "hrivniya i\u015fareti",
"cedi sign": "cedi i\u015fareti",
"livre tournois sign": "livre tournois i\u015fareti",
"spesmilo sign": "spesmilo i\u015fareti",
"tenge sign": "tenge i\u015fareti",
"indian rupee sign": "hindistan rupisi i\u015fareti",
"turkish lira sign": "t\u00fcrk liras\u0131 i\u015fareti",
"nordic mark sign": "nordic i\u015fareti",
"manat sign": "manat i\u015fareti",
"ruble sign": "ruble i\u015fareti",
"yen character": "yen karakteri",
"yuan character": "yuan karakteri",
"yuan character, in hong kong and taiwan": "yuan karakteri, hong kong ve tayvan'da kullan\u0131lan",
"yen\/yuan character variant one": "yen\/yuan karakter de\u011fi\u015fkeni",
"Loading emoticons...": "\u0130fadeler y\u00fckleniyor...",
"Could not load emoticons": "\u0130fadeler y\u00fcklenemedi",
"People": "\u0130nsan",
"Animals and Nature": "Hayvanlar ve Do\u011fa",
"Food and Drink": "Yiyecek ve \u0130\u00e7ecek",
"Activity": "Etkinlik",
"Travel and Places": "Gezi ve Yerler",
"Objects": "Nesneler",
"Flags": "Bayraklar",
"Characters": "Karakter",
"Characters (no spaces)": "Karakter (bo\u015fluksuz)",
"{0} characters": "{0} karakter",
"Error: Form submit field collision.": "Hata: Form g\u00f6nderme alan\u0131 \u00e7at\u0131\u015fmas\u0131.",
"Error: No form element found.": "Hata: Form eleman\u0131 bulunamad\u0131.",
"Update": "G\u00fcncelle\u015ftir",
"Color swatch": "Renk \u00f6rne\u011fi",
"Turquoise": "Turkuaz",
"Green": "Ye\u015fil",
"Blue": "Mavi",
"Purple": "Mor",
"Navy Blue": "Lacivert",
"Dark Turquoise": "Koyu Turkuaz",
"Dark Green": "Koyu Ye\u015fil",
"Medium Blue": "Donuk Mavi",
"Medium Purple": "Orta Mor",
"Midnight Blue": "Gece Yar\u0131s\u0131 Mavisi",
"Yellow": "Sar\u0131",
"Orange": "Turuncu",
"Red": "K\u0131rm\u0131z\u0131",
"Light Gray": "A\u00e7\u0131k Gri",
"Gray": "Gri",
"Dark Yellow": "Koyu Sar\u0131",
"Dark Orange": "Koyu Turuncu",
"Dark Red": "Koyu K\u0131rm\u0131z\u0131",
"Medium Gray": "Orta Gri",
"Dark Gray": "Koyu Gri",
"Light Green": "A\u00e7\u0131k Ye\u015fil",
"Light Yellow": "A\u00e7\u0131k Sar\u0131",
"Light Red": "A\u00e7\u0131k K\u0131rm\u0131z\u0131",
"Light Purple": "A\u00e7\u0131k Mor",
"Light Blue": "A\u00e7\u0131k Mavi",
"Dark Purple": "Koyu Mor",
"Dark Blue": "Koyu Mavi",
"Black": "Siyah",
"White": "Beyaz",
"Switch to or from fullscreen mode": "Tam ekran moduna ge\u00e7 veya \u00e7\u0131k",
"Open help dialog": "Yard\u0131m penceresini a\u00e7",
"history": "ge\u00e7mi\u015f",
"styles": "stiller",
"formatting": "bi\u00e7imlendirme",
"alignment": "hizalanma",
"indentation": "girinti",
"Font": "Font",
"Size": "Boyut",
"More...": "Daha Fazla...",
"Select...": "Se\u00e7...",
"Preferences": "Tercihler",
"Yes": "Evet",
"No": "Hay\u0131r",
"Keyboard Navigation": "Klavye K\u0131sayollar\u0131",
"Version": "Versiyon",
"Code view": "Kod G\u00f6r\u00fcn\u00fcm\u00fc",
"Open popup menu for split buttons": "B\u00f6l\u00fcnm\u00fc\u015f d\u00fc\u011fmeler i\u00e7in a\u00e7\u0131l\u0131r men\u00fcy\u00fc a\u00e7",
"List Properties": "Liste \u00d6zellikleri",
"List properties...": "Liste \u00d6zellikleri...",
"Start list at number": "Listeyi numaradan ba\u015flat",
"Line height": "Sat\u0131r Y\u00fcksekli\u011fi",
"comments": "yorumlar",
"Format Painter": "Bi\u00e7im Boyac\u0131s\u0131",
"Insert\/edit iframe": "ekle\/d\u00fczenle\/iframe",
"Capitalization": "B\u00fcy\u00fck Harfle Yazma",
"lowercase": "k\u00fc\u00e7\u00fclt\u00fclm\u00fc\u015f",
"UPPERCASE": "b\u00fcy\u00fclt\u00fclm\u00fc\u015f",
"Title Case": "Ba\u015fl\u0131k Alan\u0131",
"permanent pen": "kal\u0131c\u0131 kalem",
"Permanent Pen Properties": "Kal\u0131c\u0131 Kalem \u00d6zellikleri",
"Permanent pen properties...": "Kal\u0131c\u0131 kalem \u00f6zellikleri...",
"case change": "Durum De\u011fi\u015fikli\u011fi",
"page embed": "Sayfa Yerle\u015ftirme",
"Advanced sort...": "Geli\u015fmi\u015f s\u0131ralama...",
"Advanced Sort": "Geli\u015fmi\u015f s\u0131ralama",
"Sort table by column ascending": "Tabloyu S\u00fctuna G\u00f6re Artan S\u0131rada S\u0131rala",
"Sort table by column descending": "Tabloyu S\u00fctuna G\u00f6re Azalan S\u0131rada S\u0131rala",
"Sort": "S\u0131n\u0131fland\u0131r",
"Order": "D\u00fczenle",
"Sort by": "\u015euna g\u00f6re s\u0131n\u0131fland\u0131r:",
"Ascending": "Y\u00fckselen",
"Descending": "Al\u00e7alan",
"Column {0}": "Kolon : {0}",
"Row {0}": "S\u0131ra : {0}",
"Spellcheck...": "Yaz\u0131m Denetimi...",
"Misspelled word": "Yanl\u0131\u015f yaz\u0131lm\u0131\u015f kelime",
"Suggestions": "\u00d6neriler",
"Change": "De\u011fi\u015ftir",
"Finding word suggestions": "Kelime \u00f6nerilerini bulma",
"Success": "Ba\u015far\u0131",
"Repair": "Onar\u0131m",
"Issue {0} of {1}": "Bas\u0131m :  {0} \/ {1}",
"Images must be marked as decorative or have an alternative text description": "Resimler s\u00fcs ama\u00e7l\u0131 olarak i\u015faretlenmelidir yahut alt etikete sahip olmal\u0131d\u0131r.",
"Images must have an alternative text description. Decorative images are not allowed.": "G\u00f6rsellerin alternatif bir metin a\u00e7\u0131klamas\u0131 olmal\u0131d\u0131r. Dekoratif resimlere izin verilmez.",
"Or provide alternative text:": "veya alternatif metin sa\u011flay\u0131n:",
"Make image decorative:": "Resmi dekoratif yap:",
"ID attribute must be unique": "\"ID\" \u00f6zelli\u011fi benzersiz olmal\u0131d\u0131r",
"Make ID unique": "\"ID\" \u00f6zelli\u011fini benzersiz yap",
"Keep this ID and remove all others": "Bu kimli\u011fi saklay\u0131n ve di\u011ferlerini kald\u0131r\u0131n",
"Remove this ID": "Bu ID'yi kald\u0131r",
"Remove all IDs": "T\u00fcm ID'leri kald\u0131r",
"Checklist": "Kontrol Listesi",
"Anchor": "\u00c7apa",
"Special character": "\u00d6zel karakter",
"Code sample": "Kod \u00f6rne\u011fi",
"Color": "Renk",
"Document properties": "Dok\u00fcman \u00f6zellikleri",
"Image description": "Resim a\u00e7\u0131klamas\u0131",
"Image": "Resim",
"Insert link": "Ba\u011flant\u0131 ekle",
"Target": "Hedef",
"Link": "Ba\u011flant\u0131",
"Poster": "Poster",
"Media": "Medya",
"Print": "Yazd\u0131r",
"Prev": "\u00d6nceki",
"Find and replace": "Bul ve de\u011fi\u015ftir",
"Whole words": "Tam s\u00f6zc\u00fckler",
"Insert template": "\u015eablon ekle"
});js/tinymce/langs/oc.js000064400000035667151727150270010723 0ustar00tinymce.addI18n('oc',{
"Redo": "Refar",
"Undo": "Desfar",
"Cut": "Talhar",
"Copy": "Copiar",
"Paste": "Pegar",
"Select all": "Seleccionar tot",
"New document": "Document nov\u00e8l",
"Ok": "D'ac\u00f2rdi",
"Cancel": "Anullar",
"Visual aids": "Ajudas visualas",
"Bold": "Gras",
"Italic": "Italica",
"Underline": "Solinhat",
"Strikethrough": "Ralhat",
"Superscript": "Exponent",
"Subscript": "Indici",
"Clear formatting": "Escafar la mesa en forma",
"Align left": "Alinhar a esqu\u00e8rra",
"Align center": "Alinhar al centre",
"Align right": "Alinhar a drecha",
"Justify": "Justificar",
"Bullet list": "Piuses",
"Numbered list": "Lista numerotada",
"Decrease indent": "Demesir l'alin\u00e8a",
"Increase indent": "Aumentar l'alin\u00e8a",
"Close": "Tampar",
"Formats": "Formats",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00f2stre navigador sup\u00f2rta pas la c\u00f2pia dir\u00e8cta. Merc\u00e9 d'utilizar las t\u00f2cas Ctrl+X\/C\/V.",
"Headers": "Ent\u00e8stas",
"Header 1": "Ent\u00e8sta 1",
"Header 2": "Ent\u00e8sta 2",
"Header 3": "Ent\u00e8sta 3",
"Header 4": "Ent\u00e8sta 4",
"Header 5": "Ent\u00e8sta 5",
"Header 6": "Ent\u00e8sta 6",
"Headings": "T\u00edtols",
"Heading 1": "T\u00edtol 1",
"Heading 2": "T\u00edtol 2",
"Heading 3": "T\u00edtol 3",
"Heading 4": "T\u00edtol 4",
"Heading 5": "T\u00edtol 5",
"Heading 6": "T\u00edtol 6",
"Preformatted": "Preformatat",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f2de",
"Paragraph": "Paragraf",
"Blockquote": "Citacion",
"Inline": "En linha",
"Blocks": "Bl\u00f2ts",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lo quichapapi\u00e8rs es ara en m\u00f2de \"t\u00e8xte plen\". Los contenguts ser\u00e0n pegats sens ret\u00e9ner los formatatges fins al moment que desactivaretz aquesta opcion.",
"Fonts": "Polissas",
"Font Sizes": "Talhas de poli\u00e7a",
"Class": "Class",
"Browse for an image": "Cercar un imatge",
"OR": "O",
"Drop an image here": "Depausatz un imatge aqu\u00ed",
"Upload": "Enviar",
"Block": "Bl\u00f2c",
"Align": "Alinhament",
"Default": "Per defaut",
"Circle": "Cercle",
"Disc": "Disc",
"Square": "Carrat",
"Lower Alpha": "Alfa minuscula",
"Lower Greek": "Gr\u00e8c minuscula",
"Lower Roman": "Roman minuscula",
"Upper Alpha": "Alfa majuscula",
"Upper Roman": "Roman majuscula",
"Anchor...": "Ancora...",
"Name": "Nom",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Los ID devon comen\u00e7ar amb una letra e \u00e8sser seguit per de letras, nombres, jonhent, punts o  punt-virgulas.",
"You have unsaved changes are you sure you want to navigate away?": "Av\u00e8tz de modificacions pas enregistradas, s\u00e8tz segur que vol\u00e8tz quitar la pagina ?",
"Restore last draft": "Restablir lo darri\u00e8r borrolhon",
"Special character...": "Caract\u00e8r especial...",
"Source code": "C\u00f2de font",
"Insert\/Edit code sample": "Inserir\/Modificar exemple de c\u00f2di",
"Language": "Lenga",
"Code sample...": "Exemple de c\u00f2di...",
"Color Picker": "Trapador de color",
"R": "R",
"G": "V",
"B": "B",
"Left to right": "D'esqu\u00e8rra cap a drecha",
"Right to left": "De drecha cap a esqu\u00e8rra",
"Emoticons...": "Emoticons...",
"Metadata and Document Properties": "Metadonadas e proprietats del document",
"Title": "T\u00edtol",
"Keywords": "Mots claus",
"Description": "Descripcion",
"Robots": "Rob\u00f2ts",
"Author": "Autor",
"Encoding": "Encodatge",
"Fullscreen": "Ecran complet",
"Action": "Accion",
"Shortcut": "Acorchi",
"Help": "Ajuda",
"Address": "Adre\u00e7as",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Inserir un ligam (se l\u2019extension Ligam es activada)",
"Save (if save plugin activated)": "Enregistrar (se l\u2019exension Enregistrar es activada)",
"Find (if searchreplace plugin activated)": "Cercar (se l\u2019extension Searchreplace es activada)",
"Plugins installed ({0}):": "Extensions installadas ({0})\u202f:",
"Premium plugins:": "Extensions Premium\u202f:",
"Learn more...": "Ne saber mai...",
"You are using {0}": "Utilizatz {0}",
"Plugins": "Extensions",
"Handy Shortcuts": "Acorchis utils",
"Horizontal line": "Linha orizontala",
"Insert\/edit image": "Inserir\/modificar un imatge",
"Image description": "Descripcion de l'imatge",
"Source": "Font",
"Dimensions": "Dimensions",
"Constrain proportions": "Conservar las proporcions",
"General": "General",
"Advanced": "Avan\u00e7at",
"Style": "Estil",
"Vertical space": "Espa\u00e7ament vertical",
"Horizontal space": "Espa\u00e7ament orizontal",
"Border": "Bordadura",
"Insert image": "Inserir un imatge",
"Image...": "Imatge...",
"Image list": "Lista d\u2019imatges",
"Rotate counterclockwise": "Rotacion anti-or\u00e0ria",
"Rotate clockwise": "Rotacion or\u00e0ria",
"Flip vertically": "Revirament vertical",
"Flip horizontally": "Revirament orizontal",
"Edit image": "Modificar l'imatge",
"Image options": "Opcions de l'imatge",
"Zoom in": "Zoom avant",
"Zoom out": "Zoom arri\u00e8r",
"Crop": "Retalhar",
"Resize": "Redimensionar",
"Orientation": "Orientacion",
"Brightness": "Luminositat",
"Sharpen": "Afinar",
"Contrast": "Contraste",
"Color levels": "Niv\u00e8ls de color",
"Gamma": "Gamma",
"Invert": "Inversar",
"Apply": "Aplicar",
"Back": "Retorn",
"Insert date\/time": "Inserir data\/ora",
"Date\/time": "Data\/ora",
"Insert\/Edit Link": "Inserir\/Modificar un ligam",
"Insert\/edit link": "Inserir\/modificar un ligam",
"Text to display": "T\u00e8xte d'afichar",
"Url": "Url",
"Open link in...": "Dobrir lo ligam dins...",
"Current window": "Fen\u00e8stra actuala",
"None": "Pas cap",
"New window": "Fen\u00e8stra nov\u00e8la",
"Remove link": "Suprimir lo ligam",
"Anchors": "Anc\u00f2ras",
"Link...": "Ligam...",
"Paste or type a link": "Pegatz o picatz un ligam",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Sembla que l'URL qu'av\u00e8tz entrada es una adre\u00e7a e-mail. Vol\u00e8tz apondre lo prefix mailto: necessari ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Sembla que l'URL qu'av\u00e8tz entrada es un ligam ext\u00e8rne. Vol\u00e8tz apondre lo prefix http:\/\/ necessari ?",
"Link list": "Lista de ligams",
"Insert video": "Inserir una vid\u00e8o",
"Insert\/edit video": "Inserir\/modificar una vid\u00e8o",
"Insert\/edit media": "Inserir\/modificar un m\u00e8dia",
"Alternative source": "Font alternativa",
"Alternative source URL": "URL font alternativa",
"Media poster (Image URL)": "Media poster (Image URL)",
"Paste your embed code below:": "Pegatz v\u00f2tre c\u00f2di d'integracion \u00e7aij\u00f3s :",
"Embed": "Integrat",
"Media...": "M\u00e8dia...",
"Nonbreaking space": "Espaci insecable",
"Page break": "Pagina copada",
"Paste as text": "Pegar coma de t\u00e8xte",
"Preview": "Previsualizar",
"Print...": "Imprimir...",
"Save": "Enregistrar",
"Find": "Recercar",
"Replace with": "Rempla\u00e7ar per",
"Replace": "Rempla\u00e7ar",
"Replace all": "Rempla\u00e7ar tot",
"Previous": "Precedent",
"Next": "Seg",
"Find and replace...": "Trobar e rempla\u00e7ar...",
"Could not find the specified string.": "Impossible de trobar la cadena especificada.",
"Match case": "Respectar la cassa",
"Find whole words only": "Cercar mot enti\u00e8r sonque",
"Spell check": "Verificacion ortografica",
"Ignore": "Ignorar",
"Ignore all": "Ignorar tot",
"Finish": "Acabar",
"Add to Dictionary": "Apondre al diccionari",
"Insert table": "Inserir un tabl\u00e8u",
"Table properties": "Proprietats del tabl\u00e8u",
"Delete table": "Suprimir lo tabl\u00e8u",
"Cell": "Cellula",
"Row": "Linha",
"Column": "Colomna",
"Cell properties": "Proprietats de la cellula",
"Merge cells": "Fusionar las cellulas",
"Split cell": "Devesir la cellula",
"Insert row before": "Inserir una linha abans",
"Insert row after": "Inserir una linha apr\u00e8p",
"Delete row": "Suprimir la linha",
"Row properties": "Proprietats de la linha",
"Cut row": "Talhar la linha",
"Copy row": "Copiar la linha",
"Paste row before": "Pegar la linha abans",
"Paste row after": "Pegar la linha apr\u00e8p",
"Insert column before": "Inserir una colomna abans",
"Insert column after": "Inserir una colomna apr\u00e8p",
"Delete column": "Suprimir la colomna",
"Cols": "Colomnas",
"Rows": "Linhas",
"Width": "Largor",
"Height": "Nautor",
"Cell spacing": "Cell spacing",
"Cell padding": "Cell padding",
"Show caption": "Mostrar legenda",
"Left": "Esqu\u00e8rra",
"Center": "Centre",
"Right": "Drecha",
"Cell type": "Tipe de cellula",
"Scope": "Scope",
"Alignment": "Alinhament",
"H Align": "H Align",
"V Align": "V Align",
"Top": "Top",
"Middle": "Mitan",
"Bottom": "Bottom",
"Header cell": "Header cell",
"Row group": "Row group",
"Column group": "Column group",
"Row type": "Tipe de linha",
"Header": "Ent\u00e8sta",
"Body": "C\u00f2s",
"Footer": "P\u00e8 de pagina",
"Border color": "Color de la bordadura",
"Insert template...": "Inserir un mod\u00e8l...",
"Templates": "Mod\u00e8ls",
"Template": "Mod\u00e8l",
"Text color": "Color del t\u00e8xte",
"Background color": "Color de r\u00e8ireplan",
"Custom...": "Personalizar...",
"Custom color": "Color personalizada",
"No color": "Pas de color",
"Remove color": "Tirar la color",
"Table of Contents": "Ensenhador",
"Show blocks": "Afichar los bl\u00f2ts",
"Show invisible characters": "Far veire los caract\u00e8rs invisibles",
"Word count": "Comptador mot",
"Count": "Comptador",
"Document": "Document",
"Selection": "Seleccion",
"Words": "Mots",
"Words: {0}": "Mots : {0}",
"{0} words": "{0} mots",
"File": "Fichi\u00e8r",
"Edit": "Editar",
"Insert": "Inserir",
"View": "Veire",
"Format": "Format",
"Table": "Tabl\u00e8u",
"Tools": "Aisinas",
"Powered by {0}": "Propulsat per {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Z\u00f2na T\u00e8xte Ric. Quichar sus ALT-F9 pel men\u00fa. Quichar sus ALT-F10 per la barra d'aisinas. Quichar sus ALT-0 per d'ajuda.",
"Image title": "T\u00edtol imatge",
"Border width": "Largor bordadura",
"Border style": "Estil bordadura",
"Error": "Error",
"Warn": "Av\u00eds",
"Valid": "Valid",
"To open the popup, press Shift+Enter": "Per dobrir dins una fen\u00e8stra sorgissenta, quichatz Maj+Entrada",
"Rich Text Area. Press ALT-0 for help.": "Rich Text Area. Press ALT-0 for help.",
"System Font": "Polissa sist\u00e8ma",
"Failed to upload image: {0}": "Frac\u00e0s mandad\u00eds imatge : {0}",
"Failed to load plugin: {0} from url {1}": "Failed to load plugin: {0} from url {1}",
"Failed to load plugin url: {0}": "Failed to load plugin url: {0}",
"Failed to initialize plugin: {0}": "Failed to initialize plugin: {0}",
"example": "exemple",
"Search": "Cercar",
"All": "Tot",
"Currency": "Moneda",
"Text": "T\u00e8xte",
"Quotations": "Citacions",
"Mathematical": "Mathematical",
"Extended Latin": "Extended Latin",
"Symbols": "Simb\u00f2ls",
"Arrows": "Fl\u00e8chas",
"User Defined": "User Defined",
"dollar sign": "signe d\u00f2lar",
"currency sign": "Signe devisa",
"euro-currency sign": "signe devisa europenca ",
"colon sign": "signe colon",
"cruzeiro sign": "signe cruzeiro",
"french franc sign": "signe franc",
"lira sign": "signe lira",
"mill sign": "signe mill",
"naira sign": "signe naira",
"peseta sign": "signe peseta",
"rupee sign": "signe roble",
"won sign": "signe won",
"new sheqel sign": "signe sheqel",
"dong sign": "signe dong",
"kip sign": "signe kip",
"tugrik sign": "signe tugrik",
"drachma sign": "signe drachma",
"german penny symbol": "signe devisa germana",
"peso sign": "signe peso",
"guarani sign": "signe guarani",
"austral sign": "signe austral",
"hryvnia sign": "signe hryvnia",
"cedi sign": "signe cedi",
"livre tournois sign": "signe livre tournois",
"spesmilo sign": "signe spesmilo",
"tenge sign": "signe tenge",
"indian rupee sign": "signe roble india",
"turkish lira sign": "signe lira de Turquia",
"nordic mark sign": "signe marc nordic",
"manat sign": "signe manat",
"ruble sign": "signe roble",
"yen character": "signe yen",
"yuan character": "signe yuan",
"yuan character, in hong kong and taiwan": "yuan character, in hong kong and taiwan",
"yen\/yuan character variant one": "yen\/yuan character variant one",
"Loading emoticons...": "Cargament emoticons...",
"Could not load emoticons": "Cargament impossible de las emoticons",
"People": "Gents",
"Animals and Nature": "Animals e Natura",
"Food and Drink": "Beure e manjar",
"Activity": "Activitat",
"Travel and Places": "Viatge e L\u00f2cs",
"Objects": "Obj\u00e8ctes",
"Flags": "Drap\u00e8us",
"Characters": "Caract\u00e8rs",
"Characters (no spaces)": "Caract\u00e8rs (sens espaci)",
"{0} characters": "{0} caract\u00e8rs",
"Error: Form submit field collision.": "Error: Form submit field collision.",
"Error: No form element found.": "Error\u202f: cap d\u2019element formulari pas trobat.",
"Update": "Actualizar",
"Color swatch": "Cambiament de color",
"Turquoise": "Turquesa",
"Green": "Verd",
"Blue": "Blau",
"Purple": "Violet",
"Navy Blue": "Blau marin",
"Dark Turquoise": "Turquesa escur",
"Dark Green": "Verd escur",
"Medium Blue": "Blau mejan",
"Medium Purple": "Violet mejan",
"Midnight Blue": "Blau nu\u00e8ch",
"Yellow": "Jaune",
"Orange": "Irange",
"Red": "Roge",
"Light Gray": "Gris clar",
"Gray": "Gris",
"Dark Yellow": "Jaune escur",
"Dark Orange": "Irange escur",
"Dark Red": "Roge escur",
"Medium Gray": "Gris mejan",
"Dark Gray": "Gris escur",
"Light Green": "Verd clar",
"Light Yellow": "Jaune clar",
"Light Red": "Roge clar",
"Light Purple": "Violet clar",
"Light Blue": "Blau clar",
"Dark Purple": "Violet escur",
"Dark Blue": "Blau escur",
"Black": "Negre",
"White": "Blanc",
"Switch to or from fullscreen mode": "Switch to or from fullscreen mode",
"Open help dialog": "Open help dialog",
"history": "istoric",
"styles": "estils",
"formatting": "formatting",
"alignment": "alinhament",
"indentation": "indentacion",
"permanent pen": "permanent pen",
"comments": "comentaris",
"Format Painter": "Format Painter",
"Insert\/edit iframe": "Insert\/edit iframe",
"Capitalization": "Capitalization",
"lowercase": "lowercase",
"UPPERCASE": "UPPERCASE",
"Title Case": "Title Case",
"Permanent Pen Properties": "Permanent Pen Properties",
"Permanent pen properties...": "Permanent pen properties...",
"Font": "Polissa",
"Size": "Talha",
"More...": "Mai...",
"Spellcheck Language": "Lenga del verificador ortografic",
"Select...": "Seleccionar...",
"Preferences": "Prefer\u00e9ncias",
"Yes": "\u00d2c",
"No": "Non",
"Keyboard Navigation": "Acorchis clavi\u00e8r",
"Version": "Version",
"Anchor": "Anc\u00f2ra",
"Special character": "Caract\u00e8r especial",
"Color": "Color",
"Emoticons": "Emotic\u00f2nas",
"Document properties": "Proprietats del document",
"Insert link": "Inserir un ligam",
"Target": "Cibla",
"Poster": "Publicar",
"Print": "Imprimir",
"Whole words": "Mots enti\u00e8rs",
"Find and replace": "Recercar e rempla\u00e7ar",
"Prev": "Prec",
"Spellcheck": "Corrector ortografic",
"Caption": "Caption",
"Insert template": "Inserir un mod\u00e8l"
});js/tinymce/langs/bs.js000064400000016545151727150270010720 0ustar00tinymce.addI18n('bs',{
"Cut": "Izre\u017ei",
"Heading 5": "Naslov 5",
"Header 2": "Zaglavlje 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 browser ne podr\u017eava direktan pristup me\u0111umemoriji. Molimo vas da koristite pre\u010dice Ctrl+X\/C\/V na tastaturi.",
"Heading 4": "Naslov 4",
"Div": "Div",
"Heading 2": "Naslov 2",
"Paste": "Zalijepi",
"Close": "Zatvori",
"Font Family": "Familija fonta",
"Pre": "Pre",
"Align right": "Poravnaj desno",
"New document": "Novi dokument",
"Blockquote": "Blok citat",
"Numbered list": "Numerisana lista",
"Heading 1": "Naslov 1",
"Headings": "Naslovi",
"Increase indent": "Pove\u0107aj uvlaku",
"Formats": "Formati",
"Headers": "Zaglavlja",
"Select all": "Ozna\u010di sve",
"Header 3": "Zaglavlje 3",
"Blocks": "Blokovi",
"Undo": "Nazad",
"Strikethrough": "Precrtano",
"Bullet list": "Bullet lista",
"Header 1": "Zaglavlje 1",
"Superscript": "Eksponent",
"Clear formatting": "Poni\u0161ti formatiranje",
"Font Sizes": "Veli\u010dine fonta",
"Subscript": "Indeks",
"Header 6": "Zaglavlje 6",
"Redo": "Naprijed",
"Paragraph": "Paragraf",
"Ok": "U redu",
"Bold": "Podebljano",
"Code": "Kod",
"Italic": "Nakrivljen",
"Align center": "Centriraj",
"Header 5": "Zaglavlje 5",
"Heading 6": "Naslov 6",
"Heading 3": "Naslov 3",
"Decrease indent": "Smanji uvlaku",
"Header 4": "Zaglavlje 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lijepljenje je sada u modu obi\u010dnog teksta. Sadr\u017eaj \u0107e sada biti zalijepljen kao obi\u010dni tekst sve dok ovu opciju ne ugasite.",
"Underline": "Podvu\u010deno",
"Cancel": "Otka\u017ei",
"Justify": "Obostrano poravnanje",
"Inline": "U liniji",
"Copy": "Kopiraj",
"Align left": "Poravnaj lijevo",
"Visual aids": "Vizualna pomo\u0107",
"Lower Greek": "Mala gr\u010dka slova",
"Square": "Kvadrat",
"Default": "Po\u010detno",
"Lower Alpha": "Mala slova",
"Circle": "Krug",
"Disc": "Disk",
"Upper Alpha": "Velika slova",
"Upper Roman": "Velika rimska slova",
"Lower Roman": "Mala rimska slova",
"Name": "Ime",
"Anchor": "Anchor",
"You have unsaved changes are you sure you want to navigate away?": "Niste sa\u010duvali izmjene. Jeste li sigurni da \u017eelite napustiti stranicu?",
"Restore last draft": "Vrati posljednju skicu",
"Special character": "Specijalni znak",
"Source code": "Izvorni kod",
"B": "B",
"R": "R",
"G": "G",
"Color": "Boja",
"Right to left": "S desna na lijevo",
"Left to right": "S lijeva na desno",
"Emoticons": "Smajliji",
"Robots": "Roboti",
"Document properties": "Svojstva dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne rije\u010di",
"Encoding": "Kodiranje",
"Description": "Opis",
"Author": "Autor",
"Fullscreen": "Cijeli ekran",
"Horizontal line": "Vodoravna linija",
"Horizontal space": "Horizontalni razmak",
"Insert\/edit image": "Umetni\/uredi sliku",
"General": "Op\u0107enito",
"Advanced": "Napredno",
"Source": "Izvor",
"Border": "Okvir",
"Constrain proportions": "Ograni\u010di proporcije",
"Vertical space": "Vertikalni razmak",
"Image description": "Opis slike",
"Style": "Stil",
"Dimensions": "Dimenzije",
"Insert image": "Umetni sliku",
"Zoom in": "Zoom in",
"Contrast": "Contrast",
"Back": "Back",
"Gamma": "Gamma",
"Flip horizontally": "Flip horizontally",
"Resize": "Resize",
"Sharpen": "Sharpen",
"Zoom out": "Zoom out",
"Image options": "Image options",
"Apply": "Apply",
"Brightness": "Brightness",
"Rotate clockwise": "Rotate clockwise",
"Rotate counterclockwise": "Rotate counterclockwise",
"Edit image": "Edit image",
"Color levels": "Color levels",
"Crop": "Crop",
"Orientation": "Orientation",
"Flip vertically": "Flip vertically",
"Invert": "Invert",
"Insert date\/time": "Umetni datum\/vrijeme",
"Remove link": "Ukloni link",
"Url": "URL",
"Text to display": "Tekst za prikaz",
"Anchors": "Anchori",
"Insert link": "Umetni link",
"New window": "Novi prozor",
"None": "Ni\u0161ta",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Izgleda je URL koji ste upisali vanjski link. \u017delite li da dodate obavezni http:\/\/ prefiks?",
"Target": "Odredi\u0161te",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Izgleda da je URL koji ste upisali ustvari email adresa. \u017delite li da dodate obavezni mailto: prefiks?",
"Insert\/edit link": "Umetni\/uredi link",
"Insert\/edit video": "Umetni\/uredi video",
"Poster": "Objavio",
"Alternative source": "Alternativni izvor",
"Paste your embed code below:": "Zalijepite va\u0161 ugradbeni kod ispod:",
"Insert video": "Umetni video",
"Embed": "Ugradi",
"Nonbreaking space": "Neprijelomni razmak",
"Page break": "Prijelom stranice",
"Paste as text": "Zalijepi kao tekst",
"Preview": "Pregled",
"Print": "\u0160tampaj",
"Save": "Sa\u010duvaj",
"Could not find the specified string.": "Tra\u017eeni string nije prona\u0111en.",
"Replace": "Zamijeni",
"Next": "Sljede\u0107e",
"Whole words": "Cijele rije\u010di",
"Find and replace": "Prona\u0111i i zamijeni",
"Replace with": "Zamijena sa",
"Find": "Prona\u0111i",
"Replace all": "Zamijeni sve",
"Match case": "Razlikuj mala i velika slova",
"Prev": "Prethodno",
"Spellcheck": "Provjera pravopisa",
"Finish": "Zavr\u0161i",
"Ignore all": "Zanemari sve",
"Ignore": "Zanemari",
"Add to Dictionary": "Dodaj u rje\u010dnik",
"Insert row before": "Umetni red iznad",
"Rows": "Redovi",
"Height": "Visina",
"Paste row after": "Zalijepi red iznad",
"Alignment": "Poravnanje",
"Border color": "Boja okvira",
"Column group": "Grupa kolone",
"Row": "Red",
"Insert column before": "Umetni kolonu iznad",
"Split cell": "Podijeli \u0107eliju",
"Cell padding": "Ispunjenje \u0107elije",
"Cell spacing": "Razmak \u0107elija",
"Row type": "Vrsta reda",
"Insert table": "Umetni tabelu",
"Body": "Tijelo",
"Caption": "Natpis",
"Footer": "Podno\u017eje",
"Delete row": "Obri\u0161i red",
"Paste row before": "Zalijepi red ispod",
"Scope": "Opseg",
"Delete table": "Obri\u0161i tabelu",
"H Align": "H poravnanje",
"Top": "Vrh",
"Header cell": "\u0106elija zaglavlja",
"Column": "Kolona",
"Row group": "Grupa reda",
"Cell": "\u0106elija",
"Middle": "Sredina",
"Cell type": "Vrsta \u0107elije",
"Copy row": "Kopiraj red",
"Row properties": "Svojstva reda",
"Table properties": "Svojstva tabele",
"Bottom": "Dno",
"V Align": "V poravnanje",
"Header": "Zaglavlje",
"Right": "Desno",
"Insert column after": "Umetni kolonu ispod",
"Cols": "Kolone",
"Insert row after": "Umetni red ispod",
"Width": "\u0160irina",
"Cell properties": "Svojstva \u0107elije",
"Left": "Lijevo",
"Cut row": "Izre\u017ei red",
"Delete column": "Obri\u0161i kolonu",
"Center": "Centrirano",
"Merge cells": "Spoji \u0107elije",
"Insert template": "Umetni predlo\u017eak",
"Templates": "Predlo\u0161ci",
"Background color": "Boja pozadine",
"Custom...": "Prilago\u0111eno...",
"Custom color": "Korisni\u010dka boja",
"No color": "Bez boje",
"Text color": "Boja tekst",
"Show blocks": "Prika\u017ei blokove",
"Show invisible characters": "Prika\u017ei nevidljive znakove",
"Words: {0}": "Rije\u010di: {0}",
"Insert": "Umetni",
"File": "Datoteka",
"Edit": "Uredi",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Oblast za ure\u0111ivanje teksta. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za prikaz alatne trake. Pritisnite ALT-0 za pomo\u0107.",
"Tools": "Alati",
"View": "Pregled",
"Table": "Tabela",
"Format": "Formatiranje"
});js/tinymce/langs/bg_BG.js000064400000130325151727150270011245 0ustar00tinymce.addI18n('bg_BG',{
"Redo": "\u041e\u0442\u043c\u0435\u043d\u044f\u043d\u0435",
"Undo": "\u0412\u0440\u044a\u0449\u0430\u043d\u0435",
"Cut": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435",
"Copy": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435",
"Paste": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435",
"Select all": "\u041c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435",
"New document": "\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Ok": "\u0414\u043e\u0431\u0440\u0435",
"Cancel": "\u041e\u0442\u043a\u0430\u0437",
"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0438 \u0431\u0435\u0437 \u043a\u0430\u043d\u0442\u043e\u0432\u0435 (\u0440\u0430\u043c\u043a\u0438)",
"Bold": "\u0423\u0434\u0435\u0431\u0435\u043b\u0435\u043d (\u043f\u043e\u043b\u0443\u0447\u0435\u0440)",
"Italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d (\u043a\u0443\u0440\u0441\u0438\u0432)",
"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u0432\u0430\u043d\u0435",
"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u0432\u0430\u043d\u0435",
"Superscript": "\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441",
"Subscript": "\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441",
"Clear formatting": "\u0418\u0437\u0447\u0438\u0441\u0442\u0432\u0430\u043d\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
"Align left": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e",
"Align center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u0435",
"Align right": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e",
"Justify": "\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"Bullet list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0432\u043e\u0434\u0430\u0447\u0438",
"Numbered list": "\u041d\u043e\u043c\u0435\u0440\u0438\u0440\u0430\u043d \u0441\u043f\u0438\u0441\u044a\u043a",
"Decrease indent": "\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
"Close": "\u0417\u0430\u0442\u0432\u0430\u0440\u044f\u043d\u0435",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448\u0438\u044f\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u043a\u043b\u0438\u043f\u0431\u043e\u0440\u0434\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0432\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl+X (\u0437\u0430 \u0438\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435), Ctrl+C (\u0437\u0430 \u043a\u043e\u043f\u0438\u0440\u0430\u043d\u0435) \u0438 Ctrl+V (\u0437\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435).",
"Headers": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f",
"Header 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",
"Header 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",
"Header 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",
"Header 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",
"Header 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",
"Header 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",
"Headings": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f",
"Heading 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",
"Heading 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",
"Heading 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",
"Heading 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",
"Heading 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",
"Heading 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",
"Preformatted": "\u041f\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d",
"Div": "\u0411\u043b\u043e\u043a",
"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u0435\u043d \u0442\u0435\u043a\u0441\u0442",
"Code": "\u041a\u043e\u0434",
"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442",
"Inline": "\u041d\u0430 \u0435\u0434\u0438\u043d \u0440\u0435\u0434",
"Blocks": "\u0411\u043b\u043e\u043a\u043e\u0432\u0435",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0435 \u0432 \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d \u0440\u0435\u0436\u0438\u043c. \u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u0449\u0435 \u0431\u044a\u0434\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e \u043a\u0430\u0442\u043e \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442, \u0434\u043e\u043a\u0430\u0442\u043e \u0438\u0437\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u0430\u0437\u0438 \u043e\u043f\u0446\u0438\u044f.",
"Fonts": "\u0428\u0440\u0438\u0444\u0442\u043e\u0432\u0435",
"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
"Class": "\u041a\u043b\u0430\u0441",
"Browse for an image": "\u041f\u043e\u0442\u044a\u0440\u0441\u0435\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"OR": "\u0418\u041b\u0418",
"Drop an image here": "\u041f\u0443\u0441\u043d\u0435\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0442\u0443\u043a",
"Upload": "\u041a\u0430\u0447\u0432\u0430\u043d\u0435",
"Block": "\u0411\u043b\u043e\u043a",
"Align": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"Default": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",
"Circle": "\u041e\u043a\u0440\u044a\u0436\u043d\u043e\u0441\u0442\u0438",
"Disc": "\u041a\u0440\u044a\u0433\u0447\u0435\u0442\u0430",
"Square": "\u0417\u0430\u043f\u044a\u043b\u043d\u0435\u043d\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
"Lower Alpha": "\u041c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
"Lower Greek": "\u041c\u0430\u043b\u043a\u0438 \u0433\u0440\u044a\u0446\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
"Lower Roman": "\u0420\u0438\u043c\u0441\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
"Upper Alpha": "\u0413\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438",
"Upper Roman": "\u0420\u0438\u043c\u0441\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438",
"Anchor...": "\u041a\u043e\u0442\u0432\u0430...",
"Name": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
"Id": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 (id)",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 (id) \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u0432\u0430 \u0441 \u0431\u0443\u043a\u0432\u0430, \u043f\u043e\u0441\u043b\u0435\u0434\u0432\u0430\u043d \u043e\u0442 \u0431\u0443\u043a\u0432\u0438, \u0447\u0438\u0444\u0440\u0438, \u0442\u0438\u0440\u0435\u0442\u0430, \u0442\u043e\u0447\u043a\u0438, \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435 \u0438 \u0434\u043e\u043b\u043d\u043e \u0442\u0438\u0440\u0435.",
"You have unsaved changes are you sure you want to navigate away?": "\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u043c\u0430 \u043d\u0435\u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438. \u0429\u0435 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u043b\u0438?",
"Restore last draft": "\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0430",
"Special character...": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0435\u043d \u0441\u0438\u043c\u0432\u043e\u043b...",
"Source code": "\u0418\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 HTML",
"Insert\/Edit code sample": "\u0412\u043c\u044a\u043a\u043d\u0438\/ \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434",
"Language": "\u0415\u0437\u0438\u043a",
"Code sample...": "\u041f\u0440\u0438\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434...",
"Color Picker": "\u0418\u0437\u0431\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0446\u0432\u044f\u0442",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430\u0434\u044f\u0441\u043d\u043e",
"Right to left": "\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430\u043b\u044f\u0432\u043e",
"Emoticons...": "\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438...",
"Metadata and Document Properties": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0438 \u0434\u0443\u043c\u0438",
"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438 \u043d\u0430 \u0443\u0435\u0431 \u0442\u044a\u0440\u0441\u0430\u0447\u043a\u0438",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Encoding": "\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438\u0442\u0435",
"Fullscreen": "\u041d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d",
"Action": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435",
"Shortcut": "\u0411\u044a\u0440\u0437 \u043a\u043b\u0430\u0432\u0438\u0448",
"Help": "\u041f\u043e\u043c\u043e\u0449",
"Address": "\u0410\u0434\u0440\u0435\u0441",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u0432\u0440\u044a\u0437\u043a\u0430 (\u0430\u043a\u043e \u043f\u043b\u044a\u0433\u0438\u043d\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0438 \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d)",
"Save (if save plugin activated)": "\u0417\u0430\u043f\u0438\u0448\u0438 (\u0430\u043a\u043e \u043f\u043b\u044a\u0433\u0438\u043d\u0430 \u0437\u0430 \u0437\u0430\u043f\u0438\u0441 \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d)",
"Find (if searchreplace plugin activated)": "\u041d\u0430\u043c\u0435\u0440\u0438 (\u0430\u043a\u043e \u043f\u043b\u044a\u0433\u0438\u043d\u0430 \u0437\u0430 \u0442\u044a\u0440\u0441\u0435\u043d\u0435\/\u0437\u0430\u043c\u044f\u043d\u0430 \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d)",
"Plugins installed ({0}):": "\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0438 \u043f\u043b\u044a\u0433\u0438\u043d\u0438 ({0}):",
"Premium plugins:": "\u041f\u0440\u0435\u043c\u0438\u0439\u043d\u0438 \u043f\u043b\u044a\u0433\u0438\u043d\u0438:",
"Learn more...": "\u041d\u0430\u0443\u0447\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u0447\u0435...",
"You are using {0}": "\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u0447\u0435\u0440\u0442\u0430",
"Insert\/edit image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",
"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e",
"Source": "\u0410\u0434\u0440\u0435\u0441",
"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
"Constrain proportions": "\u0417\u0430\u0432\u0430\u0437\u043d\u0430\u0432\u0435 \u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",
"General": "\u041e\u0431\u0449\u043e",
"Advanced": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e",
"Style": "\u0421\u0442\u0438\u043b",
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
"Horizontal space": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
"Border": "\u041a\u0430\u043d\u0442 (\u0440\u0430\u043c\u043a\u0430)",
"Insert image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Image...": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435...",
"Image list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438",
"Rotate counterclockwise": "\u0417\u0430\u0432\u044a\u0440\u0442\u0430\u043d\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0447\u0430\u0441\u043e\u0432\u043d\u0438\u043a\u0430",
"Rotate clockwise": "\u0417\u0430\u0432\u044a\u0440\u0442\u0430\u043d\u0435 \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043d\u0438\u043a\u0430",
"Flip vertically": "\u041e\u0431\u044a\u0440\u043d\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e",
"Flip horizontally": "\u041e\u0431\u044a\u0440\u043d\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e",
"Edit image": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e",
"Image options": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e",
"Zoom in": "\u041f\u0440\u0438\u0431\u043b\u0438\u0436\u0438",
"Zoom out": "\u041e\u0442\u0434\u0430\u043b\u0435\u0447\u0438",
"Crop": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435",
"Resize": "\u041f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435",
"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
"Brightness": "\u042f\u0440\u043a\u043e\u0441\u0442",
"Sharpen": "\u0418\u0437\u043e\u0441\u0442\u0440\u044f\u043d\u0435",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Color levels": "\u0426\u0432\u0435\u0442\u043d\u0438 \u043d\u0438\u0432\u0430",
"Gamma": "\u0413\u0430\u043c\u0430",
"Invert": "\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f",
"Apply": "\u041f\u0440\u0438\u043b\u043e\u0436\u0438",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Insert date\/time": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0434\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Date\/time": "\u0414\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Insert\/Edit Link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
"Insert\/edit link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
"Text to display": "\u0422\u0435\u043a\u0441\u0442",
"Url": "\u0410\u0434\u0440\u0435\u0441 (URL)",
"Open link in...": "\u041e\u0442\u0432\u0430\u0440\u044f\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 \u0432...",
"Current window": "\u0422\u0435\u043a\u0443\u0449 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",
"None": "\u0411\u0435\u0437",
"New window": "\u0412 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 (\u043f\u043e\u0434\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446)",
"Remove link": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",
"Anchors": "\u041a\u043e\u0442\u0432\u0438",
"Link...": "\u0425\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430...",
"Paste or type a link": "\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0430(\u043b\u0438\u043d\u043a)",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u044a\u0442, \u043a\u043e\u0439\u0442\u043e \u0432\u044a\u0432\u0434\u043e\u0445\u0442\u0435 \u043f\u0440\u0438\u043b\u0438\u0447\u0430 \u043d\u0430 \u0435-\u043c\u0435\u0439\u043b \u0430\u0434\u0440\u0435\u0441. \u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0438\u044f mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u044a\u0442, \u043a\u043e\u0439\u0442\u043e \u0432\u044a\u0432\u0434\u043e\u0445\u0442\u0435 \u043f\u0440\u0438\u043b\u0438\u0447\u0430 \u0432\u044a\u043d\u0448\u0435\u043d \u0430\u0434\u0440\u0435\u0441. \u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0438\u044f http:\/\/ \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",
"Link list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0432\u0440\u044a\u0437\u043a\u0438",
"Insert video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit media": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0434\u0438\u044f",
"Alternative source": "\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0430\u0434\u0440\u0435\u0441",
"Alternative source URL": "\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0430\u0434\u0440\u0435\u0441 URL",
"Media poster (Image URL)": "\u041c\u0435\u0434\u0438\u0435\u043d \u043f\u043b\u0430\u043a\u0430\u0442 (\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 URL)",
"Paste your embed code below:": "\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430 \u0432\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432 \u043f\u043e\u043b\u0435\u0442\u043e \u043f\u043e-\u0434\u043e\u043b\u0443:",
"Embed": "\u0412\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435",
"Media...": "\u041c\u0435\u0434\u0438\u044f...",
"Nonbreaking space": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Page break": "\u041d\u043e\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
"Paste as text": "\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442",
"Preview": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u0438\u0437\u0433\u043b\u0435\u0434",
"Print...": "\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u0432\u0430\u043d\u0435...",
"Save": "\u0421\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435",
"Find": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0437\u0430",
"Replace with": "\u0417\u0430\u043c\u044f\u043d\u0430 \u0441",
"Replace": "\u0417\u0430\u043c\u044f\u043d\u0430",
"Replace all": "\u0417\u0430\u043c\u044f\u043d\u0430 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0441\u0440\u0435\u0449\u0430\u043d\u0438\u044f",
"Previous": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d",
"Next": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449",
"Find and replace...": "\u041d\u0430\u043c\u0438\u0440\u0430\u043d\u0435 \u0438 \u0437\u0430\u043c\u044f\u043d\u0430...",
"Could not find the specified string.": "\u0422\u044a\u0440\u0441\u0435\u043d\u0438\u044f\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
"Match case": "\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430 (\u043c\u0430\u043b\u043a\u0438\/\u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438)",
"Find whole words only": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0441\u0430\u043c\u043e \u043d\u0430 \u0446\u0435\u043b\u0438 \u0434\u0443\u043c\u0438",
"Spell check": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",
"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435",
"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u043e",
"Finish": "\u041a\u0440\u0430\u0439",
"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438 \u0432 \u0440\u0435\u0447\u043d\u0438\u043a\u0430",
"Insert table": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",
"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
"Delete table": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
"Cell": "\u041a\u043b\u0435\u0442\u043a\u0430",
"Row": "\u0420\u0435\u0434",
"Column": "\u041a\u043e\u043b\u043e\u043d\u0430",
"Cell properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
"Merge cells": "\u0421\u043b\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
"Split cell": "\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",
"Insert row before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
"Insert row after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
"Delete row": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434\u0430",
"Row properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430",
"Cut row": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434",
"Copy row": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434",
"Paste row before": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
"Paste row after": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
"Insert column before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u0438",
"Insert column after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u0441\u043b\u0435\u0434",
"Delete column": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430",
"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438",
"Rows": "\u0420\u0435\u0434\u043e\u0432\u0435",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Height": "\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",
"Cell spacing": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
"Cell padding": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e",
"Show caption": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0434\u043f\u0438\u0441",
"Left": "\u041b\u044f\u0432\u043e",
"Center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
"Right": "\u0414\u044f\u0441\u043d\u043e",
"Cell type": "\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
"Scope": "\u041e\u0431\u0445\u0432\u0430\u0442",
"Alignment": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"H Align": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"Top": "\u0413\u043e\u0440\u0435",
"Middle": "\u041f\u043e \u0441\u0440\u0435\u0434\u0430\u0442\u0430",
"Bottom": "\u0414\u043e\u043b\u0443",
"Header cell": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430 (\u0430\u043d\u0442\u0435\u0442\u043a\u0430)",
"Row group": "Row group",
"Column group": "Column group",
"Row type": "\u0422\u0438\u043f \u043d\u0430 \u0440\u0435\u0434\u0430",
"Header": "\u0413\u043e\u0440\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (header)",
"Body": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 (body)",
"Footer": "\u0414\u043e\u043b\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (footer)",
"Border color": "\u0426\u0432\u044f\u0442 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430",
"Insert template...": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d...",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"Text color": "\u0426\u0432\u044f\u0442 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
"Background color": "\u0424\u043e\u043d\u043e\u0432 \u0446\u0432\u044f\u0442",
"Custom...": "\u0418\u0437\u0431\u0440\u0430\u043d...",
"Custom color": "\u0426\u0432\u044f\u0442 \u043f\u043e \u0438\u0437\u0431\u043e\u0440",
"No color": "\u0411\u0435\u0437 \u0446\u0432\u044f\u0442",
"Remove color": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0446\u0432\u0435\u0442\u0430",
"Table of Contents": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435",
"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u043e\u0432\u0435\u0442\u0435",
"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u0435\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c\u0438 \u0437\u043d\u0430\u0446\u0438",
"Word count": "\u0411\u0440\u043e\u0435\u043d\u0435 \u043d\u0430 \u0434\u0443\u043c\u0438",
"Count": "\u0411\u0440\u043e\u0439",
"Document": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Selection": "\u0418\u0437\u0431\u0440\u0430\u043d\u043e",
"Words": "\u0414\u0443\u043c\u0438",
"Words: {0}": "\u0411\u0440\u043e\u0439 \u0434\u0443\u043c\u0438: {0}",
"{0} words": "{0} \u0431\u0440\u043e\u0439 \u0434\u0443\u043c\u0438",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435",
"Insert": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435",
"View": "\u0418\u0437\u0433\u043b\u0435\u0434",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
"Powered by {0}": "\u0421\u044a\u0437\u0434\u0430\u0434\u0435\u043d\u043e \u0441 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041f\u043e\u043b\u0435 \u0437\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 Alt+F9 \u0437\u0430 \u043c\u0435\u043d\u044e; Alt+F10 \u0437\u0430 \u043b\u0435\u043d\u0442\u0430 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438; Alt+0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449.",
"Image title": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e",
"Border width": "\u0428\u0438\u0440\u0438\u043d\u0430 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430",
"Border style": "\u0421\u0442\u0438\u043b \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430",
"Error": "\u0413\u0440\u0435\u0448\u043a\u0430",
"Warn": "\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435",
"Valid": "\u0412\u0430\u043b\u0438\u0434\u043d\u043e",
"To open the popup, press Shift+Enter": "\u0417\u0430 \u0434\u0430 \u043e\u0442\u0432\u043e\u0440\u0438\u0442\u0435 \u0438\u0437\u0441\u043a\u0430\u0447\u0430\u0449\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446, \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u041f\u043e\u043b\u0435 \u0437\u0430 \u043e\u0431\u043e\u0433\u0430\u0442\u0435\u043d \u0442\u0435\u043a\u0441\u0442. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT+0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449.",
"System Font": "\u0421\u0438\u0441\u0442\u0435\u043c\u0435\u043d \u0448\u0440\u0438\u0444\u0442",
"Failed to upload image: {0}": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043a\u0430\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: {0}",
"Failed to load plugin: {0} from url {1}": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 \u043f\u043b\u044a\u0433\u0438\u043d {0} \u043e\u0442 URL {1}",
"Failed to load plugin url: {0}": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 URL \u043d\u0430 \u043f\u043b\u044a\u0433\u0438\u043d: {0}",
"Failed to initialize plugin: {0}": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043b\u044a\u0433\u0438\u043d: {0}",
"example": "\u043f\u0440\u0438\u043c\u0435\u0440",
"Search": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435",
"All": "\u0412\u0441\u0438\u0447\u043a\u0438",
"Currency": "\u0412\u0430\u043b\u0443\u0442\u0430",
"Text": "\u0422\u0435\u043a\u0441\u0442",
"Quotations": "\u0426\u0438\u0442\u0430\u0442\u0438",
"Mathematical": "\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438",
"Extended Latin": "\u0420\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
"Symbols": "\u0421\u0438\u043c\u0432\u043e\u043b\u0438",
"Arrows": "\u0421\u0442\u0440\u0435\u043b\u043a\u0438",
"User Defined": "\u0417\u0430\u0434\u0430\u0434\u0435\u043d\u0438 \u043e\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f",
"dollar sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0434\u043e\u043b\u0430\u0440",
"currency sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0432\u0430\u043b\u0443\u0442\u0430",
"euro-currency sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0435\u0432\u0440\u043e \u0432\u0430\u043b\u0443\u0442\u0430",
"colon sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043a\u043e\u043b\u043e\u043d",
"cruzeiro sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043a\u0440\u0443\u0437\u0435\u0439\u0440\u043e",
"french franc sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0444\u0440\u0435\u043d\u0441\u043a\u0438 \u0444\u0440\u0430\u043d\u043a",
"lira sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043b\u0438\u0440\u0430",
"mill sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043c\u0438\u043b",
"naira sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043d\u0430\u0439\u0440\u0430",
"peseta sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043f\u0435\u0441\u0435\u0442\u0430",
"rupee sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0440\u0443\u043f\u0438\u044f",
"won sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043a\u043e\u0440\u0435\u0439\u0441\u043a\u0438 \u0432\u043e\u043d",
"new sheqel sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043d\u043e\u0432 \u0448\u0435\u043a\u0435\u043b",
"dong sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0432\u0438\u0435\u0442\u043d\u0430\u043c\u0441\u043a\u0438 \u0434\u043e\u043d\u0433",
"kip sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043b\u0430\u043e\u0441\u043a\u0438 \u043a\u0438\u043f",
"tugrik sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043c\u043e\u043d\u0433\u043e\u043b\u0441\u043a\u0438 \u0442\u0443\u0433\u0440\u0438\u043a",
"drachma sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0434\u0440\u0430\u0445\u043c\u0430",
"german penny symbol": "\u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430 \u0433\u0435\u0440\u043c\u0430\u043d\u0441\u043a\u043e \u043f\u0435\u043d\u0438",
"peso sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043f\u0435\u0441\u043e",
"guarani sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0433\u0443\u0430\u0440\u0430\u043d\u0438",
"austral sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0430\u0443\u0441\u0442\u0440\u0430\u043b",
"hryvnia sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0433\u0440\u0438\u0432\u043d\u044f",
"cedi sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0441\u0435\u0434\u0438",
"livre tournois sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043b\u0438\u0432\u0440 \u0442\u0443\u0440\u043d\u0443\u0430",
"spesmilo sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0441\u043f\u0435\u0441\u043c\u0438\u043b\u043e",
"tenge sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0442\u0435\u043d\u0433\u0435",
"indian rupee sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0438\u043d\u0434\u0438\u0439\u0441\u043a\u0430 \u0440\u0443\u043f\u0438\u044f",
"turkish lira sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0442\u0443\u0440\u0441\u043a\u0430 \u043b\u0438\u0440\u0430",
"nordic mark sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043d\u043e\u0440\u0434\u0441\u043a\u0430 \u043c\u0430\u0440\u043a\u0430",
"manat sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u043c\u0430\u043d\u0430\u0442",
"ruble sign": "\u0437\u043d\u0430\u043a \u0437\u0430 \u0440\u0443\u0431\u043b\u0430",
"yen character": "\u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430 \u0439\u0435\u043d\u0430",
"yuan character": "\u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430 \u044e\u0430\u043d",
"yuan character, in hong kong and taiwan": "\u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430 \u044e\u0430\u043d \u0432 \u0425\u043e\u043d\u043a\u043e\u043d\u0433 \u0438 \u0422\u0430\u0439\u0432\u0430\u043d",
"yen\/yuan character variant one": "\u0441\u0438\u043c\u0432\u043e\u043b \u0437\u0430 \u0439\u0435\u043d\u0430\/\u044e\u0430\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0435\u0434\u043d\u043e",
"Loading emoticons...": "\u0417\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438...",
"Could not load emoticons": "\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",
"People": "\u0425\u043e\u0440\u0430",
"Animals and Nature": "\u0416\u0438\u0432\u043e\u0442\u043d\u0438 \u0438 \u043f\u0440\u0438\u0440\u043e\u0434\u0430",
"Food and Drink": "\u0425\u0440\u0430\u043d\u0430 \u0438 \u043d\u0430\u043f\u0438\u0442\u043a\u0438",
"Activity": "\u0414\u0435\u0439\u043d\u043e\u0441\u0442\u0438",
"Travel and Places": "\u041f\u044a\u0442\u0443\u0432\u0430\u043d\u0435 \u0438 \u043c\u0435\u0441\u0442\u0430",
"Objects": "\u041f\u0440\u0435\u0434\u043c\u0435\u0442\u0438",
"Flags": "\u0417\u043d\u0430\u043c\u0435\u043d\u0430",
"Characters": "\u0421\u0438\u043c\u0432\u043e\u043b\u0438",
"Characters (no spaces)": "\u0421\u0438\u043c\u0432\u043e\u043b\u0438 (\u0431\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0438)",
"{0} characters": "{0} \u0441\u0438\u043c\u0432\u043e\u043b\u0430",
"Error: Form submit field collision.": "\u0413\u0440\u0435\u0448\u043a\u0430: \u041d\u0435\u0441\u044a\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0430 \u043f\u043e\u043b\u0435 \u043f\u0440\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u044f\u0440.",
"Error: No form element found.": "\u0413\u0440\u0435\u0448\u043a\u0430: \u041d\u0435 \u0435 \u043e\u0442\u043a\u0440\u0438\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430 \u0444\u043e\u0440\u043c\u0443\u043b\u044f\u0440\u0430.",
"Update": "\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435",
"Color swatch": "\u0426\u0432\u0435\u0442\u043d\u0430 \u043c\u043e\u0441\u0442\u0440\u0430",
"Turquoise": "\u0422\u044e\u0440\u043a\u043e\u0430\u0437\u0435\u043d\u043e",
"Green": "\u0417\u0435\u043b\u0435\u043d\u043e",
"Blue": "\u0421\u0438\u043d\u044c\u043e",
"Purple": "\u041b\u0438\u043b\u0430\u0432\u043e",
"Navy Blue": "\u041c\u043e\u0440\u0441\u043a\u043e\u0441\u0438\u043d\u044c\u043e",
"Dark Turquoise": "\u0422\u044a\u043c\u043d\u043e\u0442\u044e\u0440\u043a\u043e\u0430\u0437\u0435\u043d\u043e",
"Dark Green": "\u0422\u044a\u043c\u043d\u043e\u0437\u0435\u043b\u0435\u043d\u043e",
"Medium Blue": "\u0421\u0440\u0435\u0434\u043d\u043e\u0441\u0438\u043d\u044c\u043e",
"Medium Purple": "\u0421\u0440\u0435\u0434\u043d\u043e\u043b\u0438\u043b\u0430\u0432\u043e",
"Midnight Blue": "\u0421\u0440\u0435\u0434\u043d\u043e\u0449\u043d\u043e \u0441\u0438\u043d\u044c\u043e",
"Yellow": "\u0416\u044a\u043b\u0442\u043e",
"Orange": "\u041e\u0440\u0430\u043d\u0436\u0435\u0432\u043e",
"Red": "\u0427\u0435\u0440\u0432\u0435\u043d\u043e",
"Light Gray": "\u0421\u0432\u0435\u0442\u043b\u043e\u0441\u0438\u0432\u043e",
"Gray": "\u0421\u0438\u0432\u043e",
"Dark Yellow": "\u0422\u044a\u043c\u043d\u043e\u0436\u044a\u043b\u0442\u043e",
"Dark Orange": "\u0422\u044a\u043c\u043d\u043e\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u043e",
"Dark Red": "\u0422\u044a\u043c\u043d\u043e\u0447\u0435\u0440\u0432\u0435\u043d\u043e",
"Medium Gray": "\u0421\u0440\u0435\u0434\u043d\u043e\u0441\u0438\u0432\u043e",
"Dark Gray": "\u0422\u044a\u043c\u043d\u043e\u0441\u0438\u0432\u043e",
"Light Green": "\u0421\u0432\u0435\u0442\u043b\u043e\u0437\u0435\u043b\u0435\u043d",
"Light Yellow": "\u0421\u0432\u0435\u0442\u043b\u043e\u0436\u044a\u043b\u0442",
"Light Red": "\u0421\u0432\u0435\u0442\u043b\u043e\u0447\u0435\u0440\u0432\u0435\u043d",
"Light Purple": "\u0421\u0432\u0435\u0442\u043b\u043e\u043b\u0438\u043b\u0430\u0432",
"Light Blue": "\u0421\u0432\u0435\u0442\u043b\u043e\u0441\u0438\u043d",
"Dark Purple": "\u0422\u044a\u043c\u043d\u043e\u043b\u0438\u043b\u0430\u0432",
"Dark Blue": "\u0422\u044a\u043c\u043d\u043e\u0441\u0438\u043d",
"Black": "\u0427\u0435\u0440\u043d\u043e",
"White": "\u0411\u044f\u043b\u043e",
"Switch to or from fullscreen mode": "\u041f\u0440\u0435\u0432\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043a\u044a\u043c \u0438\u043b\u0438 \u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u043d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d",
"Open help dialog": "\u041e\u0442\u0432\u0430\u0440\u044f\u043d\u0435 \u043d\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449",
"history": "\u0438\u0441\u0442\u043e\u0440\u0438\u044f",
"styles": "\u0441\u0442\u0438\u043b\u043e\u0432\u0435",
"formatting": "\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435",
"alignment": "\u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
"indentation": "\u043e\u0442\u0441\u0442\u044a\u043f",
"permanent pen": "\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430 \u0445\u0438\u043c\u0438\u043a\u0430\u043b\u043a\u0430",
"comments": "\u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0438",
"Format Painter": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
"Insert\/edit iframe": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043d\u0435 \u043d\u0430 iframe",
"Capitalization": "\u0413\u043b\u0430\u0432\u043d\u0430 \u0431\u0443\u043a\u0432\u0430",
"lowercase": "\u043c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
"UPPERCASE": "\u0413\u041e\u041b\u0415\u041c\u0418 \u0411\u0423\u041a\u0412\u0418",
"Title Case": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0438 \u0411\u0443\u043a\u0432\u0438",
"Permanent Pen Properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u041f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u0438\u044f \u041c\u0430\u0440\u043a\u0435\u0440",
"Permanent pen properties...": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u0438\u044f \u043c\u0430\u0440\u043a\u0435\u0440...",
"Font": "\u0428\u0440\u0438\u0444\u0442",
"Size": "\u0420\u0430\u0437\u043c\u0435\u0440",
"More...": "\u041e\u0449\u0435...",
"Spellcheck Language": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438 \u041f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",
"Select...": "\u0418\u0437\u0431\u0435\u0440\u0438...",
"Preferences": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f",
"Yes": "\u0414\u0430",
"No": "\u041d\u0435",
"Keyboard Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430",
"Version": "\u0412\u0435\u0440\u0441\u0438\u044f",
"Anchor": "\u041a\u043e\u0442\u0432\u0430 (\u0432\u0440\u044a\u0437\u043a\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430)",
"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0435\u043d \u0437\u043d\u0430\u043a",
"Code sample": "\u041f\u0440\u0438\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434",
"Color": "\u0426\u0432\u044f\u0442",
"Emoticons": "\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",
"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Image": "\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",
"Insert link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
"Target": "\u0426\u0435\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Link": "\u0412\u0440\u044a\u0437\u043a\u0430(\u043b\u0438\u043d\u043a)",
"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
"Media": "\u041c\u0435\u0434\u0438\u044f",
"Print": "\u041f\u0435\u0447\u0430\u0442",
"Prev": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d",
"Find and replace": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0438 \u0437\u0430\u043c\u044f\u043d\u0430",
"Whole words": "\u0421\u0430\u043c\u043e \u0446\u0435\u043b\u0438 \u0434\u0443\u043c\u0438",
"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",
"Caption": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
"Insert template": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d"
});js/tinymce/langs/ug.js000064400000136541151727150270010726 0ustar00tinymce.addI18n('ug',{
"Redo": "\u0642\u0627\u064a\u062a\u0627 \u0642\u0649\u0644\u0649\u0634",
"Undo": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u064a\u06d0\u0646\u0649\u0634",
"Cut": "\u0643\u06d0\u0633\u0649\u0634",
"Copy": "\u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Paste": "\u0686\u0627\u067e\u0644\u0627\u0634",
"Select all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u062a\u0627\u0644\u0644\u0627\u0634",
"New document": "\u064a\u06d0\u06ad\u0649 \u067e\u06c8\u062a\u06c8\u0643",
"Ok": "\u062c\u06d5\u0632\u0649\u0645\u0644\u06d5\u0634",
"Cancel": "\u0642\u0627\u0644\u062f\u06c7\u0631\u06c7\u0634",
"Visual aids": "\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
"Bold": "\u062a\u0648\u0645",
"Italic": "\u064a\u0627\u0646\u062a\u06c7",
"Underline": "\u0626\u0627\u0633\u062a\u0649 \u0633\u0649\u0632\u0649\u0642",
"Strikethrough": "\u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634 \u0633\u0649\u0632\u0649\u0642\u0649",
"Superscript": "\u0626\u06c8\u0633\u062a\u06c8\u0646\u0643\u0649 \u0628\u06d5\u0644\u06af\u06d5",
"Subscript": "\u0626\u0627\u0633\u062a\u0649\u0646\u0642\u0649 \u0628\u06d5\u0644\u06af\u06d5",
"Clear formatting": "\u0641\u0648\u0631\u0645\u0627\u062a\u0646\u0649 \u062a\u0627\u0632\u0644\u0627\u0634",
"Align left": "\u0633\u0648\u0644\u063a\u0627 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
"Align center": "\u0645\u06d5\u0631\u0643\u06d5\u0632\u06af\u06d5 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
"Align right": "\u0626\u0648\u06ad\u063a\u0627 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
"Justify": "\u0626\u0649\u0643\u0643\u0649 \u064a\u0627\u0646\u063a\u0627 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
"Bullet list": "\u0628\u06d5\u0644\u06af\u06d5 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
"Numbered list": "\u0633\u0627\u0646\u0644\u0649\u0642 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
"Decrease indent": "\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0633\u06c8\u0631\u06c8\u0634",
"Increase indent": "\u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0633\u06c8\u0631\u06c8\u0634",
"Close": "\u062a\u0627\u0642\u0627\u0634",
"Formats": "\u0641\u0648\u0631\u0645\u0627\u062a",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0633\u0649\u0632\u0646\u0649\u06ad \u062a\u0648\u0631 \u0643\u06c6\u0631\u06af\u06c8\u0686\u0649\u06ad\u0649\u0632 \u0642\u0649\u064a\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634 \u062a\u0627\u062e\u062a\u0649\u0633\u0649 \u0632\u0649\u064a\u0627\u0631\u06d5\u062a \u0642\u0649\u0644\u0649\u0634\u0646\u0649 \u0642\u0648\u0644\u0644\u0649\u0645\u0627\u064a\u062f\u06c7.  Ctrl+X\/C\/V \u062a\u06d0\u0632\u0644\u06d5\u062a\u0645\u06d5 \u0643\u06c7\u0646\u06c7\u067e\u0643\u0649\u0633\u0649 \u0626\u0627\u0631\u0642\u0649\u0644\u0649\u0642 \u0643\u06d0\u0633\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634 \u0645\u06d5\u0634\u063a\u06c7\u0644\u0627\u062a\u0649 \u0642\u0649\u0644\u0649\u06ad.",
"Headers": "\u0628\u06d0\u0634\u0649",
"Header 1": "\u062a\u06d0\u0645\u0627 1",
"Header 2": "\u062a\u06d0\u0645\u0627 2",
"Header 3": "\u062a\u06d0\u0645\u0627 3",
"Header 4": "\u062a\u06d0\u0645\u0627 4",
"Header 5": "\u062a\u06d0\u0645\u0627 5",
"Header 6": "\u062a\u06d0\u0645\u0627 6",
"Headings": "\u0645\u0627\u06cb\u0632\u06c7",
"Heading 1": "1 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0645\u0627\u06cb\u0632\u06c7",
"Heading 2": "2 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0645\u0627\u06cb\u0632\u06c7",
"Heading 3": "3 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0645\u0627\u06cb\u0632\u06c7",
"Heading 4": "4 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0645\u0627\u06cb\u0632\u06c7",
"Heading 5": "5 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0645\u0627\u06cb\u0632\u06c7",
"Heading 6": "6 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0645\u0627\u06cb\u0632\u06c7",
"Preformatted": "\u0626\u0627\u0644\u062f\u0649\u0646 \u0641\u0648\u0631\u0645\u0627\u062a\u0644\u0627\u0646\u063a\u0627\u0646",
"Div": "Div",
"Pre": "Pre",
"Code": "\u0643\u0648\u062f",
"Paragraph": "\u067e\u0627\u0631\u0627\u06af\u0649\u0631\u0627 \u0641",
"Blockquote": "\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
"Inline": "\u0626\u0649\u0686\u0643\u0649",
"Blocks": "\u0631\u0627\u064a\u0648\u0646",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u06be\u0627\u0632\u0649\u0631 \u0686\u0627\u067e\u0644\u0649\u0633\u0649\u06ad\u0649\u0632 \u0633\u0627\u067e \u062a\u06d0\u0643\u0649\u0634 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0649 \u0686\u0627\u067e\u0644\u0649\u0646\u0649\u062f\u06c7. \u062a\u06d0\u0643\u0649\u0634 \u0634\u06d5\u0643\u0644\u0649\u062f\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634 \u062a\u06d5\u06ad\u0634\u0649\u0643\u0649\u0646\u0649 \u062a\u0627\u0642\u0649\u06cb\u06d5\u062a\u0643\u06d5\u0646\u06af\u06d5 \u0642\u06d5\u062f\u06d5\u0631.",
"Fonts": "\u062e\u06d5\u062a \u0646\u06c7\u0633\u062e\u0649\u0644\u0649\u0631\u0649",
"Font Sizes": "\u062e\u06d5\u062a \u0686\u0648\u06ad\u0644\u06c7\u0642\u0649",
"Class": "\u062a\u06c8\u0631",
"Browse for an image": "\u0631\u06d5\u0633\u0649\u0645\u0646\u0649  \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
"OR": "\u064a\u0627\u0643\u0649",
"Drop an image here": "\u0628\u06c7 \u064a\u06d5\u0631\u062f\u0649\u0643\u0649 \u0631\u06d5\u0633\u0649\u0645\u0646\u0649 \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Upload": "\u0686\u0649\u0642\u0649\u0631\u0649\u0634",
"Block": "\u067e\u0627\u0631\u0686\u06d5",
"Align": "\u062a\u0648\u063a\u0631\u0649\u0644\u0649\u0646\u0649\u0634\u0649",
"Default": "\u0633\u06c8\u0643\u06c8\u062a",
"Circle": "\u0686\u06d5\u0645\u0628\u06d5\u0631",
"Disc": "\u062f\u06d0\u0633\u0643\u0627",
"Square": "\u0643\u06cb\u0627\u062f\u0631\u0627\u062a",
"Lower Alpha": "\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Lower Greek": "\u06af\u0631\u06d0\u062a\u0633\u0649\u064a\u0649\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Lower Roman": "\u0631\u0649\u0645\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Upper Alpha": "\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5 \u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Upper Roman": "\u0631\u0649\u0645\u0686\u06d5 \u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
"Anchor...": "\u0644\u06d5\u06ad\u06af\u06d5\u0631...",
"Name": "\u0646\u0627\u0645\u0649",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID \u0686\u0648\u0642\u06c7\u0645 \u06be\u06d5\u0631\u0649\u067e \u0628\u0649\u0644\u06d5\u0646 \u0628\u0627\u0634\u0644\u0649\u0646\u0649\u0634\u0649 \u0643\u06d0\u0631\u06d5\u0643 \u060c \u0626\u0627\u0631\u0642\u0649\u0633\u0649 \u067e\u06d5\u0642\u06d5\u062a \u06be\u06d5\u0631\u0649\u067e \u060c \u0633\u0627\u0646 \u060c \u0626\u0627\u064a\u0631\u0649\u0634 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649 \u060c \u0686\u0649\u0643\u0649\u062a \u06cb\u06d5 \u0626\u0627\u0633\u062a\u0649 \u0633\u0649\u0632\u0649\u0642\u0649 \u062f\u0649\u0646 \u0626\u0649\u0628\u0627\u0631\u06d5\u062a .",
"You have unsaved changes are you sure you want to navigate away?": "\u0633\u0649\u0632 \u062a\u06d0\u062e\u0649 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649 \u0633\u0627\u0642\u0644\u0649\u0645\u0649\u062f\u0649\u06ad\u0649\u0632\u060c \u0626\u0627\u064a\u0631\u0649\u0644\u0627\u0645\u0633\u0649\u0632\u061f",
"Restore last draft": "\u0626\u0627\u062e\u0649\u0631\u0642\u0649 \u0643\u06c7\u067e\u0649\u064a\u0649\u06af\u06d5 \u0642\u0627\u064a\u062a\u0649\u0634",
"Special character...": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5 \u06be\u06d5\u0631\u067e-\u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631...",
"Source code": "\u0626\u06d5\u0633\u0644\u0649 \u0643\u0648\u062f\u0649",
"Insert\/Edit code sample": "\u0643\u0648\u062f \u0645\u0649\u0633\u0627\u0644\u0649\\\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Language": "\u062a\u0649\u0644",
"Code sample...": "\u0626\u06c8\u0644\u06af\u06d5 \u0643\u0648\u062f...",
"Color Picker": "\u0631\u06d5\u06ad \u062a\u0627\u0644\u0644\u0649\u063a\u06c7\u0686",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0633\u0648\u0644\u062f\u0649\u0646 \u0626\u0648\u06ad\u063a\u0627 ",
"Right to left": "\u0626\u0648\u06ad\u062f\u0649\u0646 \u0633\u0648\u0644\u063a\u0627",
"Emoticons": "\u0686\u0649\u0631\u0627\u064a \u0626\u0649\u067e\u0627\u062f\u06d5",
"Emoticons...": "\u0686\u0649\u0631\u0627\u064a \u0626\u0649\u067e\u0627\u062f\u0649\u0644\u0649\u0631\u0649...",
"Metadata and Document Properties": "\u0645\u06d0\u062a\u0627\u0645\u06d5\u0644\u06c7\u0645\u0627\u062a \u06cb\u06d5 \u06be\u06c6\u062c\u062c\u06d5\u062a \u062e\u0627\u0633\u0644\u0649\u0642\u0644\u0649\u0631\u0649",
"Title": "\u062a\u06d0\u0645\u0627",
"Keywords": "\u06be\u0627\u0644\u0642\u0649\u0644\u0649\u0642 \u0633\u06c6\u0632",
"Description": "\u062a\u06d5\u0633\u0649\u06cb\u0649\u0631",
"Robots": "\u0645\u0627\u0634\u0649\u0646\u0627 \u0626\u0627\u062f\u06d5\u0645",
"Author": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
"Encoding": "\u0643\u0648\u062f\u0644\u0627\u0634",
"Fullscreen": "\u067e\u06c8\u062a\u06c8\u0646 \u0626\u06d0\u0643\u0631\u0627\u0646",
"Action": "\u06be\u06d5\u0631\u0649\u0643\u06d5\u062a",
"Shortcut": "\u0642\u0649\u0633\u0642\u0627 \u064a\u0648\u0644",
"Help": "\u064a\u0627\u0631\u062f\u06d5\u0645",
"Address": "\u0626\u0627\u062f\u0649\u0631\u0649\u0633",
"Focus to menubar": "\u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643 \u0633\u0649\u062a\u0648\u0646\u0649\u063a\u0627 \u062f\u0649\u0642\u06d5\u062a",
"Focus to toolbar": "\u0642\u06c7\u0631\u0627\u0644 \u0633\u0649\u062a\u0648\u0646\u0649\u063a\u0627 \u062f\u0649\u0642\u06d5\u062a",
"Focus to element path": "\u0626\u06d0\u0644\u0649\u0645\u0649\u0646\u062a\u0644\u0627\u0631 \u064a\u0648\u0644\u0649\u063a\u0627 \u062f\u0649\u0642\u06d5\u062a",
"Focus to contextual toolbar": "\u0643\u0648\u0646\u062a\u06d0\u0643\u0649\u0633\u062a \u0642\u0648\u0631\u0627\u0644 \u0626\u0649\u0633\u062a\u0648\u0646\u0649\u063a\u0627 \u062f\u06d0\u0642\u06d5\u062a",
"Insert link (if link plugin activated)": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u06ad (\u0626\u06c7\u0644\u0627\u0646\u0645\u0627 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634 \u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0649\u0633\u0649\u0646\u0649 \u0642\u0648\u0632\u063a\u0627\u062a\u0642\u0627\u0646 \u0626\u06d5\u06be\u06cb\u0627\u0644\u062f\u0627)",
"Save (if save plugin activated)": "\u0633\u0627\u0642\u0644\u0627\u0634 (\u0633\u0627\u0642\u0644\u0627\u0634 \u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0649\u0633\u0649\u0646\u0649 \u0642\u0648\u0632\u063a\u0627\u062a\u0642\u0627\u0646 \u0626\u06d5\u06be\u06cb\u0627\u0644\u062f\u0627)",
"Find (if searchreplace plugin activated)": "\u0626\u0649\u0632\u062f\u06d5\u0634 (\u0626\u0649\u0632\u062f\u06d5\u0634 \u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0649\u0633\u0649 \u0642\u0648\u0632\u063a\u0649\u062a\u0649\u0644\u063a\u0627\u0646 \u0626\u06d5\u06be\u06cb\u0627\u0644\u062f\u0627)",
"Plugins installed ({0}):": "\u0642\u0627\u0686\u0649\u0644\u0627\u0646\u063a\u0627\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0644\u0645\u0627 ({0}):",
"Premium plugins:": "\u064a\u06c7\u0642\u0649\u0631\u0649 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0644\u0645\u0627 :",
"Learn more...": "\u062a\u06d0\u062e\u0649\u0645\u06c7 \u0686\u06c8\u0634\u0649\u0646\u0649\u0634 ...",
"You are using {0}": "\u0626\u0649\u0634\u0644\u0649\u062a\u0649\u06cb\u0627\u062a\u0642\u0649\u0646\u0649\u06ad\u0649\u0632 {0}",
"Plugins": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0644\u0645\u0627",
"Handy Shortcuts": "\u0642\u0648\u0644\u0627\u064a\u0644\u0649\u0642 \u0642\u0649\u0633\u0642\u0627 \u064a\u0648\u0644",
"Horizontal line": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u0642\u06c7\u0631",
"Insert\/edit image": "\u0631\u06d5\u0633\u0649\u0645 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634 \u064a\u0627\u0643\u0649 \u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Alternative description": "\u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0627 \u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634\u0649",
"Accessibility": "\u064a\u0627\u0631\u062f\u06d5\u0645\u0686\u06d5 \u0626\u0649\u0642\u062a\u0649\u062f\u0627\u0631",
"Image is decorative": "\u0628\u06d0\u0632\u06d5\u0643 \u0631\u06d5\u0633\u0649\u0645",
"Source": "\u0645\u06d5\u0646\u0628\u06d5",
"Dimensions": "\u0686\u0648\u06ad-\u0643\u0649\u0686\u0649\u0643",
"Constrain proportions": "\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643-\u0643\u06d5\u06ad\u0644\u0649\u0643 \u0646\u0649\u0633\u067e\u0649\u062a\u0649\u0646\u0649 \u0633\u0627\u0642\u0644\u0627\u0634",
"General": "\u0626\u0627\u062f\u06d5\u062a\u062a\u0649\u0643\u0649",
"Advanced": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5",
"Style": "\u0626\u06c7\u0633\u0644\u06c7\u067e",
"Vertical space": "\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644 \u0628\u0648\u0634\u0644\u06c7\u0642",
"Horizontal space": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u0628\u0648\u0634\u0644\u06c7\u0642",
"Border": "\u064a\u0627\u0642\u0627",
"Insert image": "\u0631\u06d5\u0633\u0649\u0645 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Image...": "\u0631\u06d5\u0633\u0649\u0645...",
"Image list": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643\u0649",
"Rotate counterclockwise": "\u200f\u200f\u0633\u0627\u0626\u06d5\u062a\u0643\u06d5 \u0642\u0627\u0631\u0634\u0649 \u0686\u06c6\u0631\u06c8\u0634",
"Rotate clockwise": "\u200f\u200f\u0633\u0627\u0626\u06d5\u062a \u064a\u06c6\u0646\u0649\u0644\u0649\u0634\u0649\u062f\u06d5 \u0686\u06c6\u0631\u06c8\u0634",
"Flip vertically": "\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644 \u0626\u06c6\u0631\u06c8\u0634",
"Flip horizontally": "\u06af\u0648\u0631\u0649\u0632\u0648\u0646\u062a\u0627\u0644 \u0626\u06c6\u0631\u06c8\u0634",
"Edit image": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Image options": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0649\u0644\u0649\u0631\u0649",
"Zoom in": "\u064a\u06d0\u0642\u0649\u0646\u0644\u0627\u062a\u0645\u0627\u0642",
"Zoom out": "\u064a\u0649\u0631\u0627\u0642\u0644\u0627\u062a\u0645\u0627\u0642",
"Crop": "\u0642\u0649\u064a\u0649\u0634",
"Resize": "\u0686\u0648\u06ad\u0644\u06c7\u0642\u0649\u0646\u0649 \u0626\u06c6\u0632\u06af\u06d5\u0631\u062a\u0649\u0634",
"Orientation": "\u064a\u06c6\u0646\u0649\u0644\u0649\u0634",
"Brightness": "\u064a\u0648\u0631\u06c7\u0642\u0644\u06c7\u0642\u0649",
"Sharpen": "\u0626\u06c6\u062a\u0643\u06c8\u0631\u0644\u06d5\u0634\u062a\u06c8\u0631\u06c8\u0634",
"Contrast": "\u0633\u06d0\u0644\u0649\u0634\u062a\u06c7\u0631\u0645\u0627",
"Color levels": "\u0631\u06d5\u06ad \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0631\u0649",
"Gamma": "\u06af\u0627\u0645\u0645\u0627",
"Invert": "\u062a\u06d5\u062a\u06c8\u0631",
"Apply": "\u0642\u0648\u0644\u0644\u0649\u0646\u0649\u0634",
"Back": "\u0642\u0627\u064a\u062a\u0649\u0634",
"Insert date\/time": "\u0686\u0649\u0633\u0644\u0627\/\u06cb\u0627\u0642\u0649\u062a \u0643\u0649\u0631\u06af\u06c8\u0632\u06c8\u0634",
"Date\/time": "\u0686\u06d0\u0633\u0644\u0627\\\u06cb\u0627\u0642\u0649\u062a",
"Insert\/edit link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0642\u06c7\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Text to display": "\u0643\u06c6\u0631\u06c8\u0646\u0649\u062f\u0649\u063a\u0627\u0646 \u0645\u06d5\u0632\u0645\u06c7\u0646",
"Url": "\u0626\u0627\u062f\u0631\u0649\u0633",
"Open link in...": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627 \u0626\u06d0\u0686\u0649\u0634 \u0626\u0648\u0631\u0646\u0649...",
"Current window": "\u0646\u06c6\u06cb\u06d5\u062a\u062a\u0649\u0643\u0649 \u0643\u06c6\u0632\u0646\u06d5\u0643",
"None": "\u064a\u0648\u0642",
"New window": "\u064a\u06d0\u06ad\u0649 \u0643\u06c6\u0632\u0646\u06d5\u0643",
"Open link": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627 \u0626\u06d0\u0686\u0649\u0634",
"Remove link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Anchors": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634",
"Link...": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627...",
"Paste or type a link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0686\u0627\u067e\u0644\u0627\u06ad \u064a\u0627\u0643\u0649 \u0643\u0649\u0631\u06af\u06c8\u0632\u06c8\u06ad",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0633\u0649\u0632 \u0643\u0649\u0631\u06af\u06c8\u0632\u06af\u06d5\u0646 URL \u0628\u0649\u0631 \u0626\u06d0\u0644\u062e\u06d5\u062a \u0626\u0627\u062f\u0631\u06d0\u0633\u0649\u062f\u06d5\u0643 \u0642\u0649\u0644\u0649\u067e \u062a\u06c7\u0631\u0649\u062f\u06c7\u060c\u062a\u06d5\u0644\u06d5\u067e \u0642\u0649\u0644\u0649\u0646\u063a\u0627\u0646 mailto \u0646\u0649 \u0642\u06c7\u0634\u0627\u0645\u0633\u0649\u0632\u061f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0633\u0649\u0632 \u0643\u0649\u0631\u06af\u06c8\u0632\u06af\u06d5\u0646 \u062a\u0648\u0631 \u0626\u0627\u062f\u0631\u06d0\u0633\u0649 \u0633\u0649\u0631\u062a\u0642\u0649 \u0626\u06c7\u0644\u0627\u0646\u0645\u0649\u062f\u06d5\u0643 \u0642\u0649\u0644\u0649\u067e \u062a\u06c7\u0631\u0649\u062f\u06c7 \u060c\u062a\u06d5\u0644\u06d5\u067e \u0642\u0649\u0644\u0649\u0646\u063a\u0627\u0646 http:\/\/ \u0646\u0649 \u0642\u0648\u0634\u0627\u0645\u0633\u0649\u0632\u061f",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u0633\u0649\u0632 \u0643\u0649\u0631\u06af\u06c8\u0632\u06af\u06d5\u0646 \u0626\u0627\u062f\u0631\u06d0\u0633 \u0633\u0649\u0631\u062a\u0642\u0649 \u0626\u06c7\u0644\u0627\u0646\u0645\u0649\u062f\u06d5\u0643 \u062a\u06c7\u0631\u0649\u062f\u06c7. \u062a\u06d5\u0644\u06d5\u067e \u0642\u0649\u0644\u0649\u0646\u063a\u0627\u0646 https:\/\/ \u0626\u0627\u0644\u062f\u0649 \u0642\u0648\u0634\u06c7\u0645\u0686\u0649\u0633\u0649\u0646\u0649 \u0642\u0648\u0634\u0627\u0645\u0633\u0649\u0632\u061f",
"Link list": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u062a\u06c8\u0631\u0649",
"Insert video": "\u0633\u0649\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Insert\/edit video": "\u0633\u0649\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Insert\/edit media": "\u0645\u06d0\u062f\u0649\u064a\u0627 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Alternative source": "\u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
"Alternative source URL": "\u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0627 \u0645\u06d5\u0646\u0628\u06d5 \u0626\u0627\u062f\u0631\u06d0\u0633\u0649",
"Media poster (Image URL)": "\u0645\u06d0\u062f\u0649\u064a\u0627 \u0645\u06c7\u0642\u0627\u06cb\u0649\u0633\u0649 (\u0631\u06d5\u0633\u0649\u0645 \u0626\u0627\u062f\u0631\u06d0\u0633\u0649)",
"Paste your embed code below:": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0627\u0642\u0686\u0649 \u0628\u0648\u0644\u063a\u0627\u0646 \u0643\u0648\u062f\u0646\u0649 \u0686\u0627\u067e\u0644\u0627\u06ad",
"Embed": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Media...": "\u0645\u06d0\u062f\u0649\u064a\u0627...",
"Nonbreaking space": "\u0628\u0648\u0634\u0644\u06c7\u0642",
"Page break": "\u0628\u06d5\u062a \u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Paste as text": "\u062a\u06d0\u0643\u0649\u0634 \u0634\u06d5\u0643\u0644\u0649\u062f\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634",
"Preview": "\u0643\u06c6\u0631\u06c8\u0634",
"Print...": "\u0628\u06d0\u0633\u0649\u0634...",
"Save": "\u0633\u0627\u0642\u0644\u0627\u0634",
"Find": "\u0626\u0649\u0632\u062f\u06d5\u0634",
"Replace with": "\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Replace": "\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Replace all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Previous": "\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649",
"Next": "\u0643\u06d0\u064a\u0649\u0646\u0643\u0649\u0633\u0649",
"Find and Replace": "\u0626\u0649\u0632\u062f\u06d5\u0634 \u06cb\u06d5 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Find and replace...": "\u0626\u0649\u0632\u062f\u06d5\u0634 \u06cb\u06d5 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634...",
"Could not find the specified string.": "\u0626\u0649\u0632\u062f\u0649\u0645\u06d5\u0643\u0686\u0649 \u0628\u0648\u0644\u063a\u0627\u0646 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649 \u062a\u0627\u067e\u0627\u0644\u0645\u0649\u062f\u0649.",
"Match case": "\u0686\u0648\u06ad \u0643\u0649\u0686\u0649\u0643 \u06be\u06d5\u0631\u0649\u067e\u0646\u0649 \u067e\u06d5\u0631\u0649\u0642\u0644\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
"Find whole words only": "\u067e\u06c8\u062a\u06c8\u0646 \u0633\u06c6\u0632\u0646\u0649\u0644\u0627 \u0626\u0649\u0632\u062f\u06d5\u0634",
"Find in selection": "\u062a\u0627\u0644\u0644\u0627\u0646\u063a\u0627\u0646\u062f\u0649\u0646 \u0626\u0649\u0632\u062f\u06d5\u0634",
"Spellcheck": "\u0626\u0649\u0645\u0644\u0627 \u062a\u06d5\u0643\u0634\u06c8\u0631\u06c8\u0634",
"Spellcheck Language": "\u0626\u0649\u0645\u0644\u0627 \u062a\u06d5\u0643\u0634\u06c8\u0631\u06c8\u0634 \u062a\u0649\u0644\u0649",
"No misspellings found.": "\u0626\u0649\u0645\u0644\u0627 \u062e\u0627\u062a\u0627\u0644\u0649\u0642\u0649 \u062a\u06d0\u067e\u0649\u0644\u0645\u0649\u062f\u0649.",
"Ignore": "\u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
"Ignore all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
"Finish": "\u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Add to Dictionary": "\u0644\u06c7\u063a\u06d5\u062a \u0642\u0648\u0634\u06c7\u0634",
"Insert table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Table properties": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Delete table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u0626\u06c6\u0686\u06c8\u0631\u0634",
"Cell": "\u0643\u0627\u062a\u06d5\u0643",
"Row": "\u0642\u06c7\u0631",
"Column": "\u0631\u06d5\u062a",
"Cell properties": "\u0643\u0627\u062a\u06d5\u0643 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Merge cells": "\u0643\u0627\u062a\u06d5\u0643 \u0628\u0649\u0631\u0644\u06d5\u0634\u062a\u06c8\u0631\u06c8\u0634",
"Split cell": "\u0643\u0627\u062a\u06d5\u0643 \u067e\u0627\u0631\u0686\u0649\u0644\u0627\u0634",
"Insert row before": "\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u06c7\u0631 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Insert row after": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u0642\u06c7\u0631 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Delete row": "\u0642\u06c7\u0631 \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Row properties": "\u0642\u06c7\u0631 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Cut row": "\u0642\u06c7\u0631 \u0643\u06d0\u0633\u0649\u0634",
"Copy row": "\u0642\u06c7\u0631 \u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Paste row before": "\u0642\u06c7\u0631 \u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0686\u0627\u067e\u0644\u0627\u0634",
"Paste row after": "\u0642\u06c7\u0631 \u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634",
"Insert column before": "\u0631\u06d5\u062a \u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Insert column after": "\u0631\u06d5\u062a \u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Delete column": "\u0631\u06d5\u062a \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
"Cols": "\u0631\u06d5\u062a",
"Rows": "\u0642\u06c7\u0631",
"Width": "\u0643\u06d5\u06ad\u0644\u0649\u0643\u0649",
"Height": "\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643\u0649",
"Cell spacing": "\u0643\u0627\u062a\u06d5\u0643 \u0633\u0649\u0631\u062a\u0642\u0649 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
"Cell padding": "\u0643\u0627\u062a\u06d5\u0643 \u0626\u0649\u0686\u0643\u0649 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
"Caption": "\u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
"Show caption": "\u062a\u06d0\u0645\u0649\u0633\u0649\u0646\u0649 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
"Left": "\u0633\u0648\u0644",
"Center": "\u0645\u06d5\u0631\u0643\u06d5\u0632",
"Right": "\u0626\u0648\u06ad",
"Cell type": "\u0643\u0627\u062a\u06d5\u0643 \u062a\u0649\u067e\u0649",
"Scope": "\u062f\u0627\u0626\u0649\u0631\u06d5",
"Alignment": "\u064a\u06c6\u0644\u0649\u0646\u0649\u0634\u0649",
"H Align": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
"V Align": "\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
"Top": "\u0626\u06c8\u0633\u062a\u0649",
"Middle": "\u0626\u0648\u062a\u062a\u06c7\u0631\u0633\u0649",
"Bottom": "\u0626\u0627\u0633\u062a\u0649",
"Header cell": "\u0628\u0627\u0634 \u0643\u0627\u062a\u06d5\u0643",
"Row group": "\u0642\u06c7\u0631 \u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
"Column group": "\u0631\u06d5\u062a \u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
"Row type": "\u0642\u06c7\u0631 \u062a\u0649\u067e\u0649",
"Header": "\u0628\u06d0\u0634\u0649",
"Body": "\u0628\u06d5\u062f\u0649\u0646\u0649",
"Footer": "\u067e\u06c7\u062a\u0649",
"Border color": "\u0631\u0627\u0645\u0643\u0627 \u0631\u06d5\u06ad\u06af\u0649",
"Insert template...": "\u0642\u06d0\u0644\u0649\u067e \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634...",
"Templates": "\u0626\u06c8\u0644\u06af\u0649\u0644\u06d5\u0631",
"Template": "\u0626\u06c8\u0644\u06af\u0649\u0644\u06d5\u0631",
"Text color": "\u062e\u06d5\u062a \u0631\u06d5\u06ad\u06af\u0649",
"Background color": "\u0626\u0627\u0631\u0642\u0627 \u0631\u06d5\u06ad\u06af\u0649",
"Custom...": "\u0626\u0649\u062e\u062a\u0649\u064a\u0627\u0631\u0649",
"Custom color": "\u0626\u0649\u062e\u062a\u0649\u064a\u0627\u0631\u0649 \u0631\u06d5\u06ad",
"No color": "\u0631\u06d5\u06ad \u064a\u0648\u0642",
"Remove color": "\u0631\u06d5\u06ad\u0646\u0649 \u0686\u0649\u0642\u0649\u0631\u0649\u06cb\u06d0\u062a\u0649\u0634",
"Table of Contents": "\u062c\u06d5\u062f\u06d5\u0644\u0646\u0649\u06ad \u0645\u06d5\u0632\u0645\u06c7\u0646\u0649",
"Show blocks": "\u0631\u0627\u064a\u0648\u0646 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
"Show invisible characters": "\u0643\u06c6\u0631\u06c8\u0646\u0645\u06d5\u064a\u062f\u0649\u063a\u0627\u0646 \u06be\u06d5\u0631\u0649\u067e\u0644\u06d5\u0631\u0646\u0649 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
"Word count": "\u0633\u06c6\u0632 \u0633\u0627\u0646\u0649",
"Count": "\u0633\u0627\u0646\u0627\u0634",
"Document": "\u06be\u06c6\u062c\u062c\u06d5\u062a",
"Selection": "\u062a\u0627\u0644\u0644\u0627\u0646\u063a\u0627\u0646",
"Words": "\u0633\u06c6\u0632\u0644\u06d5\u0631",
"Words: {0}": "\u0633\u06c6\u0632: {0}",
"{0} words": "{0} \u0633\u06c6\u0632",
"File": "\u06be\u06c6\u062c\u062c\u06d5\u062a",
"Edit": "\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Insert": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"View": "\u0643\u06c6\u0631\u06c8\u0634",
"Format": "\u0641\u0648\u0631\u0645\u0627\u062a",
"Table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644",
"Tools": "\u0642\u06c7\u0631\u0627\u0644",
"Powered by {0}": "\u062a\u06d0\u062e\u0646\u0649\u0643\u0649\u062f\u0627 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0645\u0648\u0644 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0644\u06c7\u0642 \u062a\u06d0\u0643\u06d0\u0633\u0649\u062a \u0631\u0627\u0645\u0643\u0649\u0633\u0649 \u0631\u0627\u064a\u0648\u0646\u0649\u062f\u0627 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643 \u0626\u06c8\u0686\u06c8\u0646 ALT-F9 \u0646\u0649\u060c \u0642\u0648\u0631\u0627\u0644 \u0628\u0627\u0644\u062f\u0649\u0642\u0649 \u0626\u06c8\u0686\u06c8\u0646 ALT-F10 \u0646\u0649\u060c \u064a\u0627\u0631\u062f\u06d5\u0645 \u0626\u06c8\u0686\u06c8\u0646 ALT-0 \u0646\u0649 \u0628\u06d0\u0633\u0649\u06ad",
"Image title": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u06d0\u0645\u0649\u0633\u0649",
"Border width": "\u06af\u0649\u0631\u06cb\u06d5\u0643 \u0643\u06d5\u06ad\u0644\u0649\u0643\u0649",
"Border style": "\u06af\u0649\u0631\u06cb\u06d5\u0643 \u0626\u06c7\u0633\u0644\u06c7\u0628\u0649",
"Error": "\u062e\u0627\u062a\u0627\u0644\u0649\u0642",
"Warn": "\u0626\u0627\u06af\u0627\u06be\u0644\u0627\u0646\u062f\u06c7\u0631\u06c7\u0634",
"Valid": "\u0626\u06c8\u0646\u06c8\u0645\u0644\u06c8\u0643",
"To open the popup, press Shift+Enter": "\u0633\u06d5\u0643\u0631\u0649\u0645\u06d5 \u0643\u06c6\u0632\u0646\u06d5\u0643\u0646\u0649 \u0626\u06d0\u0686\u0649\u0634 \u0626\u06c8\u0686\u06c8\u0646 Shift+Enter \u0646\u0649 \u0628\u06d0\u0633\u0649\u06ad",
"Rich Text Area. Press ALT-0 for help.": "\u0641\u0648\u0631\u0645\u0627\u062a\u0644\u0649\u0642 \u062a\u06d0\u0643\u0649\u0633\u062a \u0631\u0627\u064a\u0648\u0646\u0649. \u064a\u0627\u0631\u062f\u06d5\u0645 \u0626\u06c8\u0686\u06c8\u0646 ALT-0 \u0646\u0649 \u0628\u06d0\u0633\u0649\u06ad.",
"System Font": "\u0633\u0649\u0633\u062a\u06d0\u0645\u0627 \u062e\u06d5\u062a \u0646\u06c7\u0633\u062e\u0649\u0633\u0649",
"Failed to upload image: {0}": "\u0631\u06d5\u0633\u0649\u0645\u0646\u0649 \u064a\u06c8\u0643\u0644\u0649\u064a\u06d5\u0644\u0645\u0649\u062f\u0649: {0}",
"Failed to load plugin: {0} from url {1}": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0649\u0646\u0649 \u064a\u06c8\u0643\u0644\u0649\u064a\u06d5\u0644\u0645\u0649\u062f\u0649: {0} \u0646\u0649\u06ad \u0645\u06d5\u0646\u0628\u06d5 \u0626\u0627\u062f\u0631\u06d0\u0633\u0649 {1}",
"Failed to load plugin url: {0}": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0649\u0646\u0649 \u064a\u06c8\u0643\u0644\u0649\u064a\u06d5\u0644\u0645\u0649\u062f\u0649 \u0626\u0627\u062f\u0631\u06d0\u0633\u0649: {0}",
"Failed to initialize plugin: {0}": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0649\u0646\u0649 \u062f\u06d5\u0633\u0644\u06d5\u067e\u0644\u06d5\u0634\u062a\u06c8\u0631\u06d5\u0644\u0645\u0649\u062f\u0649: {0}",
"example": "\u0645\u06d5\u0633\u0649\u0644\u06d5\u0646",
"Search": "\u0626\u0649\u0632\u062f\u06d5\u0634",
"All": "\u06be\u06d5\u0645\u0645\u06d5",
"Currency": "\u067e\u06c7\u0644",
"Text": "\u062a\u06d0\u0643\u0649\u0633\u062a",
"Quotations": "\u0646\u06d5\u0642\u0649\u0644\u0644\u06d5\u0631",
"Mathematical": "\u0645\u0627\u062a\u06d0\u0645\u0627\u062a\u0649\u0643\u0649\u0644\u0649\u0642",
"Extended Latin": "\u0643\u06d0\u06ad\u06d5\u064a\u062a\u0649\u0644\u06af\u06d5\u0646 \u0644\u0627\u062a\u0649\u0646 \u06be\u06d5\u0631\u067e\u0644\u0649\u0631\u0649",
"Symbols": "\u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631",
"Arrows": "\u0626\u0649\u0633\u062a\u0631\u06d0\u0644\u0643\u0649\u0644\u0627\u0631",
"User Defined": "\u0626\u0649\u0634\u0644\u06d5\u062a\u0643\u06c8\u0686\u0649 \u0628\u06d5\u0644\u06af\u0649\u0644\u0649\u06af\u06d5\u0646",
"dollar sign": "\u062f\u0648\u0644\u0644\u0627\u0631 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"currency sign": "\u067e\u06c7\u0644 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"euro-currency sign": "\u064a\u0627\u06cb\u0631\u0648 \u067e\u06c7\u0644 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"colon sign": "\u0642\u0648\u0634 \u0686\u06d0\u0643\u0649\u062a \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"cruzeiro sign": "\u0643\u0631\u06c7 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"french franc sign": "\u0641\u0649\u0631\u0627\u0646\u0633\u0649\u064a\u06d5 \u0641\u0649\u0631\u0627\u0646\u0643 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"lira sign": "\u0644\u0649\u0631\u0627 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"mill sign": "\u0645\u0649\u0644 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"naira sign": "\u0646\u0627\u064a\u0631\u0627 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"peseta sign": "\u067e\u06d0\u0633\u06d0\u062a\u0627 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"rupee sign": "\u0631\u06c7\u067e\u0649\u064a\u06d5 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"won sign": "\u06cb\u0648\u0646 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"new sheqel sign": "\u064a\u06d0\u06ad\u0649 \u0634\u0649\u0643\u0649\u0644 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"dong sign": "\u06cb\u0649\u064a\u06d0\u062a\u0646\u0627\u0645 \u062f\u0648\u06ad\u0649 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"kip sign": "\u0643\u0649\u067e \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"tugrik sign": "\u062a\u06c8\u06af\u0631\u0649\u0643 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"drachma sign": "\u062f\u0649\u0631\u0627\u062e\u0645\u0627 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"german penny symbol": "\u06af\u06d0\u0631\u0645\u0627\u0646\u0649\u064a\u06d5 \u067e\u06d0\u0646\u0646\u0649 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"peso sign": "\u067e\u06d0\u0633\u0648 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"guarani sign": "\u06af\u06c7\u0626\u0627\u0631\u0627\u0646\u0649 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"austral sign": "\u0626\u0627\u06cb\u0633\u062a\u0631\u0627\u0644\u0649\u064a\u06d5 \u067e\u06c7\u0644 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"hryvnia sign": "hryvnia \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"cedi sign": "\u0633\u06d0\u062f\u0649 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"livre tournois sign": "livre tournois \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"spesmilo sign": "spesmilo \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"tenge sign": "tenge \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"indian rupee sign": "\u06be\u0649\u0646\u062f\u0649\u0633\u062a\u0627\u0646 \u0631\u06c7\u067e\u0649\u064a\u06d5 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"turkish lira sign": "\u062a\u06c8\u0631\u0643\u0649\u064a\u06d5 \u0644\u0649\u0631\u0627 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"nordic mark sign": "\u0634\u0649\u0645\u0627\u0644\u0649\u064a \u064a\u0627\u06cb\u0631\u0648\u067e\u0627 \u0645\u0627\u0631\u0643 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"manat sign": "manat \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"ruble sign": "\u0631\u06c7\u0628\u0644\u0649 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"yen character": "\u064a\u06d0\u0646 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"yuan character": "\u064a\u06c8\u06d5\u0646 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"yuan character, in hong kong and taiwan": "\u064a\u06c8\u06d5\u0646 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649 (\u0634\u064a\u0627\u06ad\u06af\u0627\u06ad \u06cb\u06d5 \u062a\u06d5\u064a\u06cb\u06d5\u0646)",
"yen\/yuan character variant one": "\u064a\u06d0\u0646 \u06cb\u06d5 \u064a\u06c8\u06d5\u0646 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649",
"Loading emoticons...": "\u0686\u0649\u0631\u0627\u064a \u0626\u0649\u067e\u0627\u062f\u0649\u0644\u0649\u0631\u0649 \u064a\u06c8\u0643\u0644\u0649\u0646\u0649\u06cb\u0627\u062a\u0649\u062f\u06c7...",
"Could not load emoticons": "\u0686\u0649\u0631\u0627\u064a \u0626\u0649\u067e\u0627\u062f\u0649\u0644\u0649\u0631\u0649 \u064a\u06c8\u0643\u0644\u06d5\u0646\u0645\u0649\u062f\u0649",
"People": "\u0626\u0627\u062f\u06d5\u0645\u0644\u06d5\u0631",
"Animals and Nature": "\u06be\u0627\u064a\u06cb\u0627\u0646\u0644\u0627\u0631 \u06cb\u06d5 \u062a\u06d5\u0628\u0649\u0626\u06d5\u062a",
"Food and Drink": "\u064a\u06d0\u0645\u06d5\u0643-\u0626\u0649\u0686\u0645\u06d5\u0643",
"Activity": "\u067e\u0627\u0626\u0627\u0644\u0649\u064a\u06d5\u062a",
"Travel and Places": "\u0633\u0627\u064a\u0627\u06be\u06d5\u062a \u06cb\u06d5 \u062c\u0627\u064a\u0644\u0627\u0631",
"Objects": "\u0646\u06d5\u0631\u0633\u0649\u0644\u06d5\u0631",
"Flags": "\u0628\u0627\u064a\u0631\u0627\u0642\u0644\u0627\u0631",
"Characters": "\u06be\u06d5\u0631\u067e-\u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631",
"Characters (no spaces)": "\u06be\u06d5\u0631\u067e-\u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631 (\u0628\u0648\u0634\u0644\u06c7\u0642\u0646\u0649 \u0626\u06c6\u0632 \u0626\u0649\u0686\u0649\u06af\u06d5 \u0626\u0627\u0644\u0645\u0627\u064a\u062f\u06c7)",
"{0} characters": "{0} \u06be\u06d5\u0631\u067e-\u0628\u06d5\u0644\u06af\u06d5",
"Error: Form submit field collision.": "\u062e\u0627\u062a\u0627\u0644\u0649\u0642: \u0631\u0627\u0645\u0643\u0627 (form) \u064a\u0648\u0644\u0644\u0627\u0634 \u0628\u06c6\u0644\u0649\u0643\u0649 \u062a\u0648\u0642\u06c7\u0646\u06c7\u0634\u062a\u0649.",
"Error: No form element found.": "\u062e\u0627\u062a\u0627\u0644\u0649\u0642: \u0631\u0627\u0645\u0643\u0627 (form) \u0626\u06d0\u0644\u06d0\u0645\u06d0\u0646\u062a\u0649 \u062a\u06d0\u067e\u0649\u0644\u0645\u0649\u062f\u0649.",
"Update": "\u064a\u06d0\u06ad\u0649\u0644\u0627\u0634",
"Color swatch": "\u0631\u06d5\u06ad \u0626\u06c8\u0644\u06af\u0649\u0633\u0649",
"Turquoise": "\u0643\u06c6\u0643\u06c8\u0686 \u064a\u06d0\u0634\u0649\u0644",
"Green": "\u064a\u06d0\u0634\u0649\u0644",
"Blue": "\u0643\u06c6\u0643",
"Purple": "\u0628\u0649\u0646\u06d5\u067e\u0634\u06d5",
"Navy Blue": "\u062f\u06d0\u06ad\u0649\u0632 \u0643\u06c6\u0643",
"Dark Turquoise": "\u062a\u0648\u0642 \u0643\u06c6\u0643\u06c8\u0686 \u064a\u06d0\u0634\u0649\u0644",
"Dark Green": "\u062a\u0648\u0642 \u064a\u06d0\u0634\u0649\u0644",
"Medium Blue": "\u0626\u0627\u0631\u0627 \u0643\u06c6\u0643",
"Medium Purple": "\u0626\u0627\u0631\u0627 \u0628\u0649\u0646\u06d5\u067e\u0634\u06d5",
"Midnight Blue": "\u0642\u0627\u0631\u0627 \u0643\u06c6\u0643",
"Yellow": "\u0633\u06d0\u0631\u0649\u0642",
"Orange": "\u0642\u0649\u0632\u063a\u06c7\u0686 \u0633\u06d0\u0631\u0649\u0642",
"Red": "\u0642\u0649\u0632\u0649\u0644",
"Light Gray": "\u0626\u0627\u0686 \u0643\u06c8\u0644\u0631\u06d5\u06ad",
"Gray": "\u0643\u06c8\u0644\u0631\u06d5\u06ad",
"Dark Yellow": "\u062a\u0648\u0642 \u0633\u06d0\u0631\u0649\u0642",
"Dark Orange": "\u062a\u0648\u0642 \u0642\u0649\u0632\u063a\u06c7\u0686",
"Dark Red": "\u062a\u0648\u0642 \u0642\u0649\u0632\u0649\u0644",
"Medium Gray": "\u0626\u0648\u062a\u062a\u06c7\u0631\u06be\u0627\u0644 \u0643\u06c8\u0644\u0631\u06d5\u06ad",
"Dark Gray": "\u062a\u0648\u0642 \u0643\u06c8\u0644\u0631\u06d5\u06ad",
"Light Green": "\u0626\u0627\u0686 \u064a\u06d0\u0634\u0649\u0644",
"Light Yellow": "\u0626\u0627\u0686 \u0633\u06d0\u0631\u0649\u0642",
"Light Red": "\u0626\u0627\u0686 \u0642\u0649\u0632\u0649\u0644",
"Light Purple": "\u0626\u0627\u0686 \u0628\u0649\u0646\u06d5\u067e\u0634\u06d5",
"Light Blue": "\u0626\u0627\u0686 \u0643\u06c6\u0643",
"Dark Purple": "\u062a\u0648\u0642 \u0628\u0649\u0646\u06d5\u067e\u0634\u06d5",
"Dark Blue": "\u062a\u0648\u0642 \u0643\u06c6\u0643",
"Black": "\u0642\u0627\u0631\u0627",
"White": "\u0626\u0627\u0642",
"Switch to or from fullscreen mode": "\u062a\u0648\u0644\u06c7\u0642 \u0626\u06d0\u0643\u0631\u0627\u0646 \u06be\u0627\u0644\u0649\u062a\u0649\u0646\u0649 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Open help dialog": "\u064a\u0627\u0631\u062f\u06d5\u0645 \u062f\u0649\u064a\u0627\u0644\u0648\u06af\u0649\u0646\u0649 \u0626\u06d0\u0686\u0649\u0634",
"history": "\u062a\u0627\u0631\u0649\u062e\u0649\u064a \u0626\u06c7\u0686\u06c7\u0631",
"styles": "\u0626\u06c7\u0633\u0644\u06c7\u0628\u0644\u0627\u0631",
"formatting": "\u0641\u0648\u0631\u0645\u0627\u062a\u0644\u0627\u0634",
"alignment": "\u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
"indentation": "\u062a\u0627\u0631\u0627\u064a\u062a\u0649\u0634",
"Font": "\u062e\u06d5\u062a \u0646\u06c7\u0633\u062e\u0649\u0633\u0649",
"Size": "\u0686\u0648\u06ad\u0644\u06c7\u0642\u0649",
"More...": "\u062a\u06d0\u062e\u0649\u0645\u06c7 \u0643\u06c6\u067e...",
"Select...": "\u062a\u0627\u0644\u0644\u0627\u0634...",
"Preferences": "\u0645\u0627\u064a\u0649\u0644\u0644\u0649\u0642\u0644\u0649\u0631\u0649",
"Yes": "\u06be\u06d5\u0626\u06d5",
"No": "\u064a\u0627\u0642",
"Keyboard Navigation": "\u064a\u06c6\u062a\u0643\u0649\u0644\u0649\u0634\u0686\u0627\u0646 \u0643\u06c7\u0646\u06c7\u067e\u0643\u0627 \u062a\u0627\u062e\u062a\u0649\u0633\u0649",
"Version": "\u0646\u06d5\u0634\u0631\u0649",
"Code view": "\u0643\u0648\u062f \u0643\u06c6\u0631\u06c8\u0646\u06c8\u0634\u0649",
"Open popup menu for split buttons": "\u0628\u06c6\u0644\u06c8\u0646\u0645\u06d5 \u0643\u06c7\u0646\u06c7\u067e\u0643\u0649\u0644\u0627\u0631 \u0626\u06c8\u0686\u06c8\u0646 \u0633\u06d5\u0643\u0631\u0649\u0645\u06d5 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643 \u0626\u06d0\u0686\u0649\u0634",
"List Properties": "\u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643 \u062e\u0627\u0633\u0644\u0649\u0642\u0644\u0649\u0631\u0649",
"List properties...": "\u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643 \u062e\u0627\u0633\u0644\u0649\u0642\u0644\u0649\u0631\u0649...",
"Start list at number": "\u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643\u0646\u0649 \u0633\u0627\u0646 \u0628\u0649\u0644\u06d5\u0646 \u0628\u0627\u0634\u0644\u0627\u0634",
"Line height": "\u0642\u06c7\u0631 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
"comments": "\u0626\u0649\u0646\u0643\u0627\u0633\u0644\u0627\u0631",
"Format Painter": "\u0641\u0648\u0631\u0645\u0627\u062a \u0643\u06c6\u0686\u06c8\u0631\u06af\u06c8\u0686",
"Insert\/edit iframe": "\u0631\u0627\u0645\u0643\u0627 (iframe) \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634 \u064a\u0627\u0643\u0649 \u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
"Capitalization": "\u0686\u0648\u06ad \u06be\u06d5\u0631\u067e\u0643\u06d5 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"lowercase": "\u0643\u0649\u0686\u0649\u0643 \u06be\u06d5\u0631\u067e",
"UPPERCASE": "\u0686\u0648\u06ad \u06be\u06d5\u0631\u067e",
"Title Case": "\u062a\u06d0\u0645\u0627 \u0626\u06c7\u0633\u0644\u06c7\u0628\u0649",
"permanent pen": "\u062f\u0627\u0626\u0649\u0645\u0644\u0649\u0642 \u0642\u06d5\u0644\u06d5\u0645",
"Permanent Pen Properties": "\u062f\u0627\u0626\u0649\u0645\u0644\u0649\u0642 \u0642\u06d5\u0644\u06d5\u0645 \u062e\u0627\u0633\u0644\u0649\u0642\u0644\u0649\u0631\u0649",
"Permanent pen properties...": "\u062f\u0627\u0626\u0649\u0645\u0644\u0649\u0642 \u0642\u06d5\u0644\u06d5\u0645 \u062e\u0627\u0633\u0644\u0649\u0642\u0644\u0649\u0631\u0649...",
"case change": "\u0686\u0648\u06ad\u0644\u06c7\u0642\u0649\u0646\u0649 \u0626\u06c6\u0632\u06af\u06d5\u0631\u062a\u0649\u0634",
"page embed": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0627 \u0628\u06d5\u062a",
"Advanced sort...": "\u0626\u0627\u0644\u0649\u064a \u062a\u0649\u0632\u0649\u0634...",
"Advanced Sort": "\u0626\u0627\u0644\u0649\u064a \u062a\u0649\u0632\u0649\u0634",
"Sort table by column ascending": "\u062c\u06d5\u062f\u06cb\u06d5\u0644\u0646\u0649 \u0626\u0649\u0633\u062a\u0648\u0646\u0646\u0649\u06ad \u0626\u06d0\u0634\u0649\u0634\u0649 \u0628\u0648\u064a\u0649\u0686\u06d5 \u062a\u0649\u0632\u0649\u0634",
"Sort table by column descending": "\u062c\u06d5\u062f\u06cb\u06d5\u0644\u0646\u0649 \u0626\u0649\u0633\u062a\u0648\u0646\u0646\u0649\u06ad \u0643\u06d0\u0645\u0649\u064a\u0649\u0634\u0649 \u0628\u0648\u064a\u0649\u0686\u06d5 \u062a\u0649\u0632\u0649\u0634",
"Sort": "\u062a\u0649\u0632\u0649\u0634",
"Order": "\u062a\u06d5\u0631\u062a\u0649\u067e\u0649",
"Sort by": "\u062a\u0649\u0632\u0649\u0634 \u0634\u06d5\u0643\u0644\u0649",
"Ascending": "\u0626\u06d0\u0634\u0649\u0634",
"Descending": "\u0643\u06d0\u0645\u0649\u064a\u0649\u0634",
"Column {0}": "{0} \u0626\u0649\u0633\u062a\u0648\u0646",
"Row {0}": "{0}-\u0642\u06c7\u0631",
"Spellcheck...": "\u0626\u0649\u0645\u0644\u0627 \u062a\u06d5\u0643\u0634\u06c8\u0631\u06c8\u0634...",
"Misspelled word": "\u062e\u0627\u062a\u0627 \u0633\u06c6\u0632",
"Suggestions": "\u062a\u06d5\u06cb\u0633\u0649\u064a\u06d5\u0644\u06d5\u0631",
"Change": "\u0626\u06c6\u0632\u06af\u06d5\u0631\u062a\u0649\u0634",
"Finding word suggestions": "\u062a\u06d5\u06cb\u0633\u0649\u064a\u06d5 \u0633\u06c6\u0632\u0644\u06d5\u0631\u0646\u0649 \u0626\u0649\u0632\u062f\u06d5\u0634",
"Success": "\u0626\u0648\u06ad\u06c7\u0634\u0644\u06c7\u0642 \u0628\u0648\u0644\u062f\u0649",
"Repair": "\u0626\u0648\u06ad\u0634\u0627\u0634",
"Issue {0} of {1}": "{0}-\u0645\u06d5\u0633\u0649\u0644\u06d5\u060c \u062c\u06d5\u0645\u0626\u0649\u064a {1} \u0645\u06d5\u0633\u0649\u0644\u06d5",
"Images must be marked as decorative or have an alternative text description": "\u0631\u06d5\u0633\u0649\u0645\u0644\u06d5\u0631\u0646\u0649\u06ad \u0686\u0648\u0642\u06c7\u0645 \u0628\u06d0\u0632\u06d5\u0643 \u0628\u06d5\u0644\u06af\u0649\u0633\u0649 \u064a\u0627\u0643\u0649 \u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0627 \u062a\u06d0\u0643\u0649\u0633\u062a \u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634\u0649 \u0628\u0648\u0644\u06c7\u0634\u0649 \u0643\u06d0\u0631\u06d5\u0643",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0631\u06d5\u0633\u0649\u0645\u0644\u06d5\u0631\u0646\u0649\u06ad \u0686\u0648\u0642\u06c7\u0645 \u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0627 \u062a\u06d0\u0643\u0649\u0633\u062a \u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634\u0649 \u0628\u0648\u0644\u06c7\u0634\u0649 \u0643\u06d0\u0631\u06d5\u0643. \u0628\u06d0\u0632\u06d5\u0643 \u0631\u06d5\u0633\u0649\u0645\u0644\u06d5\u0631\u06af\u06d5 \u0631\u06c7\u062e\u0633\u06d5\u062a \u0642\u0649\u0644\u0649\u0646\u0645\u0627\u064a\u062f\u06c7.",
"Or provide alternative text:": "\u064a\u0627\u0643\u0649 \u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0627 \u062a\u06d0\u0643\u0649\u0633\u062a\u0646\u0649 \u0643\u0649\u0631\u06af\u06c8\u0632\u06c8\u06ad:",
"Make image decorative:": "\u0628\u06d0\u0632\u06d5\u0643 \u0631\u06d5\u0633\u0649\u0645 \u0642\u0649\u0644\u0649\u06ad:",
"ID attribute must be unique": "ID \u062e\u0627\u0633\u0644\u0649\u0642\u0649 \u0628\u0649\u0631\u062f\u0649\u0646\u0628\u0649\u0631 \u0628\u0648\u0644\u06c7\u0634\u0649 \u0643\u06d0\u0631\u06d5\u0643",
"Make ID unique": "ID \u0646\u0649 \u0628\u0649\u0631\u062f\u0649\u0646\u0628\u0649\u0631 \u0642\u0649\u0644\u0649\u0634",
"Keep this ID and remove all others": "\u0628\u06c7 ID \u062f\u0649\u0646 \u0628\u0627\u0634\u0642\u0649\u0644\u0649\u0631\u0649\u0646\u0649 \u0686\u0649\u0642\u0649\u0631\u0649\u06cb\u06d0\u062a\u0649\u0634",
"Remove this ID": "\u0628\u06c7 ID \u0646\u0649 \u0686\u0649\u0642\u0649\u0631\u0649\u06cb\u06d0\u062a\u0649\u0634",
"Remove all IDs": "\u0628\u0627\u0631\u0644\u0649\u0642 ID \u0646\u0649 \u0686\u0649\u0642\u0649\u0631\u0649\u06cb\u06d0\u062a\u0649\u0634",
"Checklist": "\u062a\u0627\u0644\u0644\u0627\u0646\u0645\u0627 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
"Anchor": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
"Special character": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5 \u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631",
"Code sample": "\u0643\u0648\u062f \u0645\u0649\u0633\u0627\u0644\u0649",
"Color": "\u0631\u06d5\u06ad",
"Document properties": "\u06be\u06c6\u062c\u062c\u06d5\u062a \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
"Image description": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
"Image": "\u0631\u06d5\u0633\u0649\u0645",
"Insert link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
"Target": "\u0646\u0649\u0634\u0627\u0646",
"Link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634",
"Poster": "\u064a\u0648\u0644\u0644\u0649\u063a\u06c7\u0686\u0649",
"Media": "\u0645\u06d0\u062f\u0649\u064a\u0627",
"Print": "\u0628\u06d0\u0633\u0649\u0634",
"Prev": "\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649\u0633\u0649",
"Find and replace": "\u0626\u0649\u0632\u062f\u06d5\u0634 \u06cb\u06d5 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Whole words": "\u062a\u0648\u0644\u06c7\u0642  \u0645\u0627\u0633\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
"Insert template": "\u0626\u06c8\u0644\u06af\u06d5 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634"
});js/tinymce/langs/kab.js000064400000035767151727150270011060 0ustar00tinymce.addI18n('kab',{
"Redo": "Err-d",
"Undo": "Semmet",
"Cut": "Gzem",
"Copy": "N\u0263el",
"Paste": "Sente\u1e0d",
"Select all": "Fren kulec",
"New document": "Attaftar amaynut",
"Ok": "Ih",
"Cancel": "Semmet",
"Visual aids": "Visual aids",
"Bold": "Tira tazurant",
"Italic": "Tira yeknan",
"Underline": "Aderrer",
"Strikethrough": "Strikethrough",
"Superscript": "Superscript",
"Subscript": "Subscript",
"Clear formatting": "Clear formatting",
"Align left": "Tarigla \u0263er zelma\u1e0d",
"Align center": "Di tlemast",
"Align right": "tarigla \u0263er zelma\u1e0d",
"Justify": "Justify",
"Bullet list": "Tabdart s tlillac",
"Numbered list": "Tabdart s wu\u1e6d\u1e6dunen",
"Decrease indent": "Simc\u1e6du\u1e25 asi\u1e93i",
"Increase indent": "Sim\u0263ur asi\u1e93i",
"Close": "Mdel",
"Formats": "Imasalen",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
"Headers": "Izwal",
"Header 1": "Azwel 1",
"Header 2": "Azwel 2",
"Header 3": "Azwel 3",
"Header 4": "Azwel 4",
"Header 5": "Header 5",
"Header 6": "Azwel 6",
"Headings": "Izewlen",
"Heading 1": "Inixf 1",
"Heading 2": "Inixf 2",
"Heading 3": "Inixf 3",
"Heading 4": "Inixf 4",
"Heading 5": "Inixf 5",
"Heading 6": "Inixf 6",
"Preformatted": "Yettwamsel si tazwara",
"Div": "Div",
"Pre": "Pre",
"Code": "Tangalt",
"Paragraph": "taseddart",
"Blockquote": "Tanebdurt",
"Inline": "Inline",
"Blocks": "I\u1e25edran",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
"Fonts": "Tisefsa",
"Font Sizes": "Tiddi n tsefsit",
"Class": "Asmil",
"Browse for an image": "Snirem iwakken ad tferne\u1e0d tugna",
"OR": "Ih",
"Drop an image here": "Ssers tugna dagi",
"Upload": "Sili",
"Block": "Sew\u1e25el",
"Align": "Settef",
"Default": "Lex\u1e63as",
"Circle": "Tawinest",
"Disc": "A\u1e0debsi",
"Square": "Amku\u1e93",
"Lower Alpha": "Alpha ame\u1e93yan",
"Lower Greek": "Grik ame\u1e93yan",
"Lower Roman": "Ruman amectu\u1e25",
"Upper Alpha": "Alfa ameqran",
"Upper Roman": "Ruman ameqran",
"Anchor...": "Tamdeyt...",
"Name": "Isem",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "id ilaq ad ibdu s usekkil, ad yettwa\u1e0dfer kan s isekkilen, im\u1e0danen, ijerri\u1e0den, tinqi\u1e0din, snat n tenqi\u1e0din ne\u0263 ijerri\u1e0den n wadda.",
"You have unsaved changes are you sure you want to navigate away?": "Ibeddilen ur twaskelsen ara teb\u0263i\u1e0d ad teff\u0263e\u1e0d ?",
"Restore last draft": "Restore last draft",
"Special character...": "Isekkilen uzzigen...",
"Source code": "Tangalt ta\u0263balut",
"Insert\/Edit code sample": "Ger\/\u1e92reg tangalt n umedya",
"Language": "Tutlayt",
"Code sample...": "Amedya n tengalt...",
"Color Picker": "Amelqa\u1e0d n yini",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Seg zelma\u1e0d \u0263er yefus",
"Right to left": "Seg yefus \u0263er zelma\u1e0d",
"Emoticons...": "Tigitin n u\u1e25ulfu...",
"Metadata and Document Properties": "Idfersefka akked yiraten n yisemli",
"Title": "Azwel",
"Keywords": "Awalen yufraren",
"Description": "Aglam",
"Robots": "Robots",
"Author": "Ameskar",
"Encoding": "Asettengel",
"Fullscreen": "Agdil a\u010duran",
"Action": "Tigawt",
"Shortcut": "Anegzum",
"Help": "Tallalt",
"Address": "Tansa",
"Focus to menubar": "Asa\u1e0des \u0263ef tfeggagt n wumu\u0263",
"Focus to toolbar": "Asa\u1e0des \u0263ef tfeggagt n ifecka",
"Focus to element path": "Asa\u1e0des \u0263ef ubrid n uferdis",
"Focus to contextual toolbar": "Asa\u1e0des \u0263ef tfeggagt n ifecka tanattalt",
"Insert link (if link plugin activated)": "Ger ase\u0263wen (ma yermed uzegrir n use\u0263wen)",
"Save (if save plugin activated)": "Sekles (ma yermed uzegrir save)",
"Find (if searchreplace plugin activated)": "Nadi (ma yermed uzegrir searchreplace)",
"Plugins installed ({0}):": "Izegriren yettwasbedden ({0}):",
"Premium plugins:": "Izegriren premium :",
"Learn more...": "\u1e92er ugar...",
"You are using {0}": "Tsseqdace\u1e0d {0}",
"Plugins": "Isi\u0263zifen",
"Handy Shortcuts": "Inegzumen",
"Horizontal line": "Ajerri\u1e0d aglawan",
"Insert\/edit image": "Ger\/\u1e92reg tugna",
"Image description": "Aglam n tugna",
"Source": "A\u0263balu",
"Dimensions": "Tisekta",
"Constrain proportions": "Constrain proportions",
"General": "Amatu",
"Advanced": "Ana\u1e93i",
"Style": "A\u0263anib",
"Vertical space": "Talunt taratakt",
"Horizontal space": "Talunt taglawant",
"Border": "Iri",
"Insert image": "Ger tugna",
"Image...": "Tugna...",
"Image list": "Tabdart n tugniwin",
"Rotate counterclockwise": "Tuzya mgal tamrilt",
"Rotate clockwise": "Tuzya yugdan tamrilt",
"Flip vertically": "Tuzya taratakt",
"Flip horizontally": "Tuzttya tagrawant",
"Edit image": "\u1e92reg tugna",
"Image options": "Tixti\u1e5biyin n tugna",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Rogner",
"Resize": "Beddel tiddi",
"Orientation": "Ta\u0263da",
"Brightness": "Tafat",
"Sharpen": "Affiner",
"Contrast": "Contrast",
"Color levels": "Iswiren n yini",
"Gamma": "Gamma",
"Invert": "Tti",
"Apply": "Snes",
"Back": "Tu\u0263alin",
"Insert date\/time": "Ger azemz\/asrag",
"Date\/time": "Azemz\/Asrag",
"Insert\/Edit Link": "Ger\/\u1e92reg as\u0263en",
"Insert\/edit link": "Ger\/\u1e93reg azday",
"Text to display": "A\u1e0dris ara yettwabeqq\u1e0den",
"Url": "Url",
"Open link in...": "Ldi as\u0263en di...",
"Current window": "Asfaylu amiran",
"None": "Ulac",
"New window": "Asfaylu amaynut",
"Remove link": "Kkes azday",
"Anchors": "Timdyin",
"Link...": "As\u0263en...",
"Paste or type a link": "Sente\u1e0d ne\u0263 sekcem ase\u0263wen",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL i teskecme\u1e0d tettban-d d tansa email. teb\u0263i\u1e0d ad s-ternu\u1e0d azwir mailto : ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL i teskecme\u1e0d tettban-d d azday uffi\u0263. Teb\u0263i\u1e0d ad s-ternu\u1e0d azwir http:\/\/  ?",
"Link list": "Tabdart n is\u0263ewnen",
"Insert video": "Ger avidyu",
"Insert\/edit video": "Ger\/\u1e93reg avidyu",
"Insert\/edit media": "Ger\/\u1e92reg amiya",
"Alternative source": "A\u0263balu amlellay",
"Alternative source URL": "A\u0263balu n URL amlellay",
"Media poster (Image URL)": "Abeqqi\u1e0d n umidya (URL n tugna)",
"Paste your embed code below:": "Paste your embed code below:",
"Embed": "Embed",
"Media...": "Amidya...",
"Nonbreaking space": "Talunt ur nettwagzam ara",
"Page break": "Angaz n usebter",
"Paste as text": "Sente\u1e0d d a\u1e0dris",
"Preview": "Sken",
"Print...": "Siggez...",
"Save": "Sekles",
"Find": "Nadi",
"Replace with": "Semselsi s",
"Replace": "Semselsi",
"Replace all": "Semselsi kulec",
"Previous": "Uzwir",
"Next": "Win \u0263ers",
"Find and replace...": "Nadi semselsi...",
"Could not find the specified string.": "Ur d-nufi ara azrar i d-yettunefken.",
"Match case": "Match case",
"Find whole words only": "Af-d awal ummid kan",
"Spell check": "Selken ta\u0263dirawt",
"Ignore": "Zgel",
"Ignore all": "Zgel kulec",
"Finish": "Fak",
"Add to Dictionary": "Rnu-t s amawal",
"Insert table": "Ger tafelwit",
"Table properties": "Iraten n tfelwit",
"Delete table": "Kkes tafelwit",
"Cell": "Taxxamt",
"Row": "Adur",
"Column": "Tagejdit",
"Cell properties": "Iraten n texxamt",
"Merge cells": "Seddukel tixxamin",
"Split cell": "B\u1e0du tixxamin",
"Insert row before": "Ger adur deffir",
"Insert row after": "Ger adur sdat",
"Delete row": "Kkes tagejdit",
"Row properties": "Iraten n udur",
"Cut row": "Gzem adur",
"Copy row": "N\u0263el adur",
"Paste row before": "Sente\u1e0d adur sdat",
"Paste row after": "Sente\u1e0d adur deffir",
"Insert column before": "Sente\u1e0d tagejdit sdat",
"Insert column after": "Sente\u1e0d tagejdit deffir",
"Delete column": "Kkes tagejdit",
"Cols": "Tigejda",
"Rows": "Aduren",
"Width": "Tehri",
"Height": "Te\u0263zi",
"Cell spacing": "Tlunt ger texxamin",
"Cell padding": "Tama n texxamt",
"Show caption": "Sken taw\u1e6d\u1e6dfa",
"Left": "\u0194er zelma\u1e0d",
"Center": "Di tlemmast",
"Right": "\u0194er yefus",
"Cell type": "Anaw n texxamt",
"Scope": "Scope",
"Alignment": "Tarigla",
"H Align": "Tarigla taglawant",
"V Align": "Tarigla taratakt",
"Top": "Uksawen",
"Middle": "Di tlemmast",
"Bottom": "Uksar",
"Header cell": "Tasen\u1e6di\u1e0dt n texxamt",
"Row group": "Agraw n waduren",
"Column group": "Agraw n tgejda",
"Row type": "Anaw n wadur",
"Header": "Tasenti\u1e0dt",
"Body": "Tafka",
"Footer": "A\u1e0dar",
"Border color": "Ini n yiri",
"Insert template...": "Ger tane\u0263ruft...",
"Templates": "Timudimin",
"Template": "Tine\u0263rufin",
"Text color": "Ini n u\u1e0dris",
"Background color": "Ini n ugilal",
"Custom...": "Custom...",
"Custom color": "Custom color",
"No color": "Ulac ini",
"Remove color": "Kkes ini",
"Table of Contents": "Tafelwit n ugbur",
"Show blocks": "Beqqe\u1e0d i\u1e25edran",
"Show invisible characters": "Beqqe\u1e0d isekkilen uffiren",
"Word count": "Am\u1e0dan n wawalen",
"Count": "A\u0263rud",
"Document": "Isemli",
"Selection": "Tafrayt",
"Words": "Awalen",
"Words: {0}": "Words: {0}",
"{0} words": "{0} n wawalen",
"File": "Afaylu",
"Edit": "\u1e92reg",
"Insert": "Ger",
"View": "Tamu\u0263li",
"Format": "Amasal",
"Table": "Tafelwit",
"Tools": "Ifecka",
"Powered by {0}": "Iteddu s {0} ",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
"Image title": "Azwel n tugna",
"Border width": "Tehri n yiri",
"Border style": "A\u0263anib n yiri",
"Error": "Tucc\u1e0da",
"Warn": "\u0190eyyen",
"Valid": "Ame\u0263tu",
"To open the popup, press Shift+Enter": "Iwakken ad teldi\u1e0d asfaylu udhim, ssed Shift+Kcem",
"Rich Text Area. Press ALT-0 for help.": "Ta\u0263zut n u\u1e0dris anesba\u0263ur. Ssed ALT-0 i tallelt.",
"System Font": "Anagraw n tsefsa",
"Failed to upload image: {0}": "Tucc\u1e0da deg usili n tugna: {0}",
"Failed to load plugin: {0} from url {1}": "Tucc\u1e0da deg usili n usi\u0263zef: {0} seg url {1}",
"Failed to load plugin url: {0}": "Tucc\u1e0da deg usali n usi\u0263zef: {0}",
"Failed to initialize plugin: {0}": "Tucc\u1e0da deg wallus n uwennez n usi\u0263zef: {0}",
"example": "amedya",
"Search": "Nadi",
"All": "Akk",
"Currency": "Adrim",
"Text": "A\u1e0dris",
"Quotations": "Tinebdurin",
"Mathematical": "Inemhalen usnaken",
"Extended Latin": "Talatinit ye\u1e93len",
"Symbols": "Izamulen",
"Arrows": "Tineccabin",
"User Defined": "Yesbadu-t useqdac",
"dollar sign": "Azamul n dular",
"currency sign": "Azamul n wedrim",
"euro-currency sign": "azamul n euro",
"colon sign": "azamul n kulun",
"cruzeiro sign": "azamul n krutayru",
"french franc sign": "azamul n f\u1e5bank afransi",
"lira sign": "azamul n lira",
"mill sign": "azamul n mil",
"naira sign": "azamul n nayra",
"peseta sign": "azamul n pizi\u1e6da",
"rupee sign": "azamul n urupi",
"won sign": "azamul n wun",
"new sheqel sign": "azamul n ciqel amaynut",
"dong sign": "azamul n dung",
"kip sign": "azamul n kip",
"tugrik sign": "azamul n tugrik",
"drachma sign": "azamul n d\u1e5bacma",
"german penny symbol": "azamul n pini almani",
"peso sign": "azamul n pizu",
"guarani sign": "azamul n gwa\u1e5bani",
"austral sign": "azamul n ustral",
"hryvnia sign": "azamul n hrivniya",
"cedi sign": "azamul n siddi",
"livre tournois sign": "azamul lira aturnwa",
"spesmilo sign": "azamul n spismilu",
"tenge sign": "azamul n tingi",
"indian rupee sign": "azamul n urupi ahindi",
"turkish lira sign": "azamul n lira a\u1e6durki",
"nordic mark sign": "azamul n ma\u1e5bk n ugafa",
"manat sign": "azamul n mana\u1e6d",
"ruble sign": "azamul n rubl",
"yen character": "azamul n yan",
"yuan character": "azamul n yuwan",
"yuan character, in hong kong and taiwan": "asekkil n yuwan, di hunkung akked \u1e6daywan",
"yen\/yuan character variant one": "yan\/yuwan tasenfelt n usekkil yiwen",
"Loading emoticons...": "Asali n tignitin n u\u1e25ulfu...",
"Could not load emoticons": "Tucc\u1e0da deg usali n tignitin n u\u1e25ulfu",
"People": "L\u0263aci",
"Animals and Nature": "i\u0263ersiwen akked ugama",
"Food and Drink": "Tu\u010d\u010dit akked tisit",
"Activity": "Armud",
"Travel and Places": "Asikel akked ime\u1e0dqan",
"Objects": "Ti\u0263awsiwin",
"Flags": "Annayen",
"Characters": "Isekkilen",
"Characters (no spaces)": "Isekkilen (tallunin ur ttekkint ara)",
"{0} characters": "{0} n yisekkilen",
"Error: Form submit field collision.": "Tucc\u1e0da: amgirred n wurtan di tuzzna n tferkit.",
"Error: No form element found.": "Ulac aferdis n tferkit i yettwafen.",
"Update": "Leqqem",
"Color swatch": "Talemmict n yini",
"Turquoise": "Ajenjari",
"Green": "Azegzaw",
"Blue": "Anili",
"Purple": "Amidadi",
"Navy Blue": "Anili n yilel",
"Dark Turquoise": "Ajenjari a\u0263mayan",
"Dark Green": "Azegzaw a\u0263mayan",
"Medium Blue": "Anili alemmas",
"Medium Purple": "Amidadi alemmas",
"Midnight Blue": "Anili n yi\u1e0d",
"Yellow": "Awra\u0263",
"Orange": "A\u010d\u010dinawi",
"Red": "Azegga\u0263",
"Light Gray": "Amelli\u0263di afaw",
"Gray": "Amelli\u0263di",
"Dark Yellow": "Awra\u0263 a\u0263mayan",
"Dark Orange": "A\u010dinawi a\u0263mayan",
"Dark Red": "Azegga\u0263 a\u0263mayan",
"Medium Gray": "Amelli\u0263di alemmas",
"Dark Gray": "Amelli\u0263di a\u0263mayan",
"Light Green": "Azegzaw afaw",
"Light Yellow": "Awra\u0263 afaw",
"Light Red": "Azegga\u0263 afaw",
"Light Purple": "Amidadi afaw",
"Light Blue": "Anili afaw",
"Dark Purple": "Amidadi a\u0263mayan",
"Dark Blue": "Anili a\u0263mayan",
"Black": "Aberkan",
"White": "Amellal",
"Switch to or from fullscreen mode": "Kcem ne\u0263 ffe\u0263 agdil a\u010d\u010duran",
"Open help dialog": "Ldi tankult n udiwenni n tallelt",
"history": "Amazray",
"styles": "i\u0263unab",
"formatting": "amsal",
"alignment": "aderrec",
"indentation": "asi\u1e93i",
"permanent pen": "imru ama\u0263lal",
"comments": "iwenniten",
"Format Painter": "Sisleg amsal",
"Insert\/edit iframe": "Ger\/\u1e92reg akatar",
"Capitalization": "Selket s asekkil ameqran",
"lowercase": "asekkil amec\u1e6du\u1e25",
"UPPERCASE": "ASEKKIL AMEQRAN",
"Title Case": "Taj\u1e5but n uzwel",
"Permanent Pen Properties": "Iraten n yimru ama\u0263lal",
"Permanent pen properties...": "Iraten n yimru ama\u0263lal...",
"Font": "Tasefsit",
"Size": "Tiddi",
"More...": "Ugar...",
"Spellcheck Language": "Tutlayt n umse\u0263ti n tira",
"Select...": "Fren...",
"Preferences": "Imenyafen",
"Yes": "Ih",
"No": "Ala",
"Keyboard Navigation": "Tunigin s unasiw",
"Version": "Lqem",
"Anchor": "Tamdeyt",
"Special character": "Askil uslig",
"Code sample": "Tikkest n tengalt",
"Color": "Ini",
"Emoticons": "Emoticons",
"Document properties": "Iraten n warat",
"Image": "Tugna",
"Insert link": "Ger azday",
"Target": "Target",
"Link": "Ase\u0263wen",
"Poster": "Poster",
"Media": "Amidya",
"Print": "Siggez",
"Prev": "Win yezrin",
"Find and replace": "Nadi semselsi",
"Whole words": "Awal ummid",
"Spellcheck": "Ase\u0263ti n tira",
"Caption": "Caption",
"Insert template": "Ger tamuddimt"
});js/tinymce/langs/hy.js000064400000122766151727150270010737 0ustar00tinymce.addI18n('hy',{
"Redo": "\u0540\u0561\u057b\u0578\u0580\u0564 \u0584\u0561\u0575\u056c",
"Undo": "\u0546\u0561\u056d\u0578\u0580\u0564 \u0584\u0561\u0575\u056c",
"Cut": "\u053f\u057f\u0580\u0565\u056c",
"Copy": "\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c",
"Paste": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c",
"Select all": "\u0546\u0577\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568",
"New document": "\u0546\u0578\u0580 \u0583\u0561\u057d\u057f\u0561\u0569\u0578\u0582\u0572\u0569",
"Ok": "Ok",
"Cancel": "\u0553\u0561\u056f\u0565\u056c",
"Visual aids": "\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u056f\u0578\u0576\u057f\u0578\u0582\u0580\u0576\u0565\u0580\u0568",
"Bold": "\u0539\u0561\u057e\u0561\u057f\u0561\u057c",
"Italic": "\u0547\u0565\u0572\u0561\u057f\u0561\u057c",
"Underline": "\u0538\u0576\u0564\u0563\u056e\u057e\u0561\u056e",
"Strikethrough": "\u0531\u0580\u057f\u0561\u0563\u056e\u057e\u0561\u056e",
"Superscript": "\u054e\u0565\u0580\u056b\u0576 \u056b\u0576\u0564\u0565\u0584\u057d",
"Subscript": "\u054d\u057f\u0578\u0580\u056b\u0576 \u056b\u0576\u0564\u0565\u0584\u057d",
"Clear formatting": "\u0544\u0561\u0584\u0580\u0565\u056c \u0586\u0578\u0580\u0574\u0561\u057f\u0561\u057e\u0578\u0580\u0578\u0582\u0574\u0568",
"Align left": "\u0541\u0561\u056d\u0561\u056f\u0578\u0572\u0574\u0575\u0561 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Align center": "\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u056f\u0561\u0576 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Align right": "\u0531\u057b\u0561\u056f\u0578\u0572\u0574\u0575\u0561 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Justify": "\u0535\u0580\u056f\u056f\u0578\u0572\u0574\u0561\u0576\u056b \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Bullet list": "\u0549\u0570\u0561\u0574\u0561\u0580\u0561\u056f\u0561\u056c\u057e\u0561\u056e \u0581\u0578\u0582\u0581\u0561\u056f",
"Numbered list": "\u0540\u0561\u0574\u0561\u0580\u0561\u056f\u0561\u056c\u057e\u0561\u056e \u0581\u0578\u0582\u0581\u0561\u056f",
"Decrease indent": "\u0553\u0578\u0584\u0580\u0561\u0581\u0576\u0565\u056c \u0571\u0561\u056d \u0565\u0566\u0580\u056b \u0570\u0565\u057c\u0561\u057e\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",
"Increase indent": "\u0544\u0565\u056e\u0561\u0581\u0576\u0565\u056c \u0571\u0561\u056d \u0565\u0566\u0580\u056b \u0570\u0565\u057c\u0561\u057e\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",
"Close": "\u0553\u0561\u056f\u0565\u056c",
"Formats": "\u0556\u0578\u0580\u0574\u0561\u057f\u0576\u0565\u0580",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0541\u0565\u0580 \u0562\u0580\u0561\u0578\u0582\u0566\u0565\u0580\u0568 \u0579\u056b \u0561\u057a\u0561\u0570\u0578\u057e\u0578\u0582\u0574 \u0561\u0576\u0574\u056b\u057b\u0561\u056f\u0561\u0576 \u0565\u056c\u0584 \u0583\u0578\u056d\u0561\u0576\u0561\u056f\u0574\u0561\u0576 \u0562\u0578\u0582\u0586\u0565\u0580\u056b\u0576\u0589 \u053d\u0576\u0564\u0580\u0578\u0582\u0574 \u0565\u0576\u0584 \u0585\u0563\u057f\u057e\u0565\u056c Ctrl+X\/C\/V \u057d\u057f\u0565\u0572\u0576\u0565\u0580\u056b\u0581\u0589",
"Headers": "\u054e\u0565\u0580\u0576\u0561\u0563\u0580\u0565\u0580",
"Header 1": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 1",
"Header 2": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 2",
"Header 3": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 3",
"Header 4": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 4",
"Header 5": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 5",
"Header 6": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 6",
"Headings": "\u054e\u0565\u0580\u0576\u0561\u0563\u0580\u0565\u0580",
"Heading 1": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 1",
"Heading 2": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 2",
"Heading 3": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 3",
"Heading 4": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 4",
"Heading 5": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 5",
"Heading 6": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 6",
"Preformatted": "\u0546\u0561\u056d\u0561\u057a\u0565\u057d \u0571\u0565\u0582\u0561\u057e\u0578\u0580\u057e\u0561\u056e",
"Div": "Div",
"Pre": "Pre",
"Code": "\u053f\u0578\u0564",
"Paragraph": "\u054a\u0561\u0580\u0562\u0565\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Blockquote": "\u0544\u0565\u057b\u0562\u0565\u0580\u0578\u0582\u0574",
"Inline": "\u054f\u0578\u0572\u0561\u0575\u056b\u0576",
"Blocks": "\u0532\u056c\u0578\u056f\u0576\u0565\u0580",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u054f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0578\u0582\u0574\u0568 \u056f\u0561\u057f\u0561\u0580\u057e\u0565\u056c\u0578\u0582 \u0567 \u0570\u0561\u057d\u0561\u0580\u0561\u056f \u057f\u0565\u0584\u057d\u057f\u056b \u057c\u0565\u056a\u056b\u0574\u0578\u057e\u0589 \u054a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u0568 \u057f\u0565\u0572\u0561\u0564\u0580\u057e\u0565\u056c\u0578\u0582 \u0567 \u0570\u0561\u057d\u0561\u0580\u0561\u056f \u057f\u0565\u0584\u057d\u057f\u056b \u0571\u0587\u0578\u057e \u0574\u056b\u0576\u0579\u0587 \u0561\u0575\u057d \u057c\u0565\u056a\u056b\u0574\u056b \u0561\u0576\u057b\u0561\u057f\u0578\u0582\u0574\u0568\u0589",
"Fonts": "\u0556\u0578\u0576\u057f\u0565\u0580",
"Font Sizes": "\u054f\u0561\u057c\u056b \u0579\u0561\u0583",
"Class": "\u0534\u0561\u057d",
"Browse for an image": "\u0538\u0576\u057f\u0580\u0565\u056c \u0576\u056f\u0561\u0580",
"OR": "\u053f\u0531\u0544",
"Drop an image here": "\u0546\u056f\u0561\u0580\u0568 \u0563\u0581\u0565\u0584 \u0561\u0575\u057d\u057f\u0565\u0572",
"Upload": "\u054e\u0565\u0580\u0562\u0565\u057c\u0576\u0565\u056c",
"Block": "\u0532\u056c\u0578\u056f",
"Align": "\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0576\u0565\u056c",
"Default": "\u054d\u057f\u0561\u0576\u0564\u0561\u0580\u057f",
"Circle": "\u0547\u0580\u057b\u0561\u0576",
"Disc": "\u053f\u056c\u0578\u0580",
"Square": "\u0554\u0561\u057c\u0561\u056f\u0578\u0582\u057d\u056b",
"Lower Alpha": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c \u056c\u0561\u057f\u056b\u0576\u0561\u056f\u0561\u0576 \u057f\u0561\u057c\u0565\u0580",
"Lower Greek": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c \u0570\u0578\u0582\u0576\u0561\u056f\u0561\u0576 \u057f\u0561\u057c\u0565\u0580",
"Lower Roman": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c \u0570\u057c\u0578\u0574\u0565\u0561\u056f\u0561\u0576 \u0569\u057e\u0565\u0580",
"Upper Alpha": "\u0544\u0565\u056e\u0561\u057f\u0561\u057c \u056c\u0561\u057f\u056b\u0576\u0565\u0580\u0565\u0576 \u057f\u0561\u057c\u0565\u0580",
"Upper Roman": "\u0544\u0565\u056e\u0561\u057f\u0561\u057c \u0570\u057c\u0578\u0574\u0565\u0561\u056f\u0561\u0576 \u0569\u057e\u0565\u0580",
"Anchor...": "\u053d\u0561\u0580\u056b\u057d\u056d...",
"Name": "\u0531\u0576\u0578\u0582\u0576",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id-\u0576 \u057a\u0565\u057f\u0584 \u0567 \u057d\u056f\u057d\u057e\u056b \u057f\u0561\u057c\u0578\u057e \u0587 \u056f\u0561\u0580\u0578\u0572 \u0567 \u057a\u0561\u0580\u0578\u0582\u0576\u0561\u056f\u0565\u056c \u057f\u0561\u057c\u0565\u0580, \u0569\u057e\u0565\u0580, \u0563\u056e\u056b\u056f, \u056f\u0565\u057f, \u057e\u0565\u0580\u057b\u0561\u056f\u0565\u0565\u057f \u056f\u0561\u0574 \u057f\u0578\u0572\u0561\u057f\u0561\u056f\u056b \u0563\u056e\u056b\u056f",
"You have unsaved changes are you sure you want to navigate away?": "\u053f\u0561\u0576 \u0579\u057a\u0561\u0570\u057a\u0561\u0576\u057e\u0561\u056e \u0583\u0578\u0583\u0578\u056d\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0589 \u0534\u0578\u0582\u0584 \u056b\u0580\u0578\u055e\u0584 \u0578\u0582\u0566\u0578\u0582\u0574 \u0565\u0584 \u0564\u0578\u0582\u0580\u057d \u0563\u0561\u056c",
"Restore last draft": "\u054e\u0565\u0580\u0561\u056f\u0561\u0576\u0563\u0576\u0565\u056c \u057e\u0565\u0580\u057b\u056b\u0576 \u0576\u0561\u056d\u0561\u0563\u056b\u056e\u0568",
"Special character...": "\u0540\u0561\u057f\u0578\u0582\u056f \u057d\u056b\u0574\u057e\u0578\u056c\u0576\u0565\u0580...",
"Source code": "\u053e\u0580\u0561\u0563\u0580\u0561\u0575\u056b\u0576 \u056f\u0578\u0564",
"Insert\/Edit code sample": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u056f\u0578\u0564\u0568",
"Language": "\u053c\u0565\u0566\u0578\u0582",
"Code sample...": "\u053f\u0578\u0564\u056b \u0585\u0580\u0576\u0561\u056f",
"Color Picker": "\u0533\u0578\u0582\u0576\u0561\u057a\u0576\u0561\u056f",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0541\u0561\u056d\u056b\u0581 \u0561\u057b",
"Right to left": "\u0531\u057b\u056b\u0581 \u0571\u0561\u056d",
"Emoticons...": "\u054d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580...",
"Metadata and Document Properties": "\u0553\u0561\u057d\u057f\u0561\u0569\u0572\u0569\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
"Title": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
"Keywords": "\u0548\u0580\u0578\u0576\u0578\u0572\u0561\u056f\u0561\u0576 \u0562\u0561\u057c\u0565\u0580",
"Description": "\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Robots": "Robots",
"Author": "\u0540\u0565\u0572\u056b\u0576\u0561\u056f",
"Encoding": "\u053f\u0578\u0564\u0561\u057e\u0578\u0580\u0578\u0582\u0574",
"Fullscreen": "\u0531\u0574\u0562\u0578\u0572\u057b \u0567\u056f\u0580\u0561\u0576\u0578\u057e",
"Action": "\u0533\u0578\u0580\u056e\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Shortcut": "\u053f\u0561\u0580\u0573\u0578\u0582\u0572\u056b",
"Help": "\u0555\u0563\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Address": "\u0540\u0561\u057d\u0581\u0565",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0570\u0572\u0578\u0582\u0574 (\u0565\u0569\u0565 \u0570\u0572\u0578\u0582\u0574 \u0568\u0576\u0564\u056c\u0561\u0575\u0576\u0578\u0582\u0574\u0568 \u0561\u057e\u057f\u056b\u057e \u0567)",
"Save (if save plugin activated)": "\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c (\u0565\u0569\u0565 save \u0568\u0576\u0564\u056c\u0561\u0575\u0576\u0578\u0582\u0574\u0568 \u0561\u056f\u057f\u056b\u057e \u0567)",
"Find (if searchreplace plugin activated)": "\u0553\u0576\u057f\u0580\u0565\u056c (\u0565\u0569\u0565 searchreplace \u0568\u0576\u0564\u056c\u0561\u0575\u0576\u0578\u0582\u0574\u0568 \u0561\u056f\u057f\u056b\u057e \u0567)",
"Plugins installed ({0}):": "\u054f\u0565\u0572\u0561\u0564\u0580\u057e\u0561\u056e \u0583\u056c\u0561\u0563\u056b\u0576\u0576\u0565\u0580 ({0}):",
"Premium plugins:": "\u054e\u0573\u0561\u0580\u0578\u057e\u056b \u0568\u0576\u0564\u056c\u0561\u0575\u0576\u0578\u0582\u0574\u0576\u0565\u0580",
"Learn more...": "\u053b\u0574\u0561\u0576\u0561\u056c \u0561\u057e\u0565\u056c\u056b\u0576 \u2024\u2024\u2024",
"You are using {0}": "\u0534\u0578\u0582\u0584 \u0585\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0578\u0582\u0574 \u0565\u0584 {0}",
"Plugins": "\u0538\u0576\u0564\u056c\u0561\u0575\u0576\u0578\u0582\u0574\u0576\u0565\u0580",
"Handy Shortcuts": "\u0555\u0563\u057f\u0561\u056f\u0561\u0580 \u056f\u0561\u0580\u0573\u0578\u0582\u0572\u056b\u0576\u0565\u0580",
"Horizontal line": "\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u0563\u056b\u056e",
"Insert\/edit image": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u0576\u056f\u0561\u0580",
"Image description": "\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Source": "\u0546\u056f\u0561\u0580\u056b \u0570\u0561\u057d\u0581\u0565",
"Dimensions": "\u0549\u0561\u0583\u0565\u0580",
"Constrain proportions": "\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u0574\u0561\u0577\u057f\u0561\u0562\u0561\u057e\u0578\u0580\u0578\u0582\u0574\u0568",
"General": "\u0533\u056c\u056d\u0561\u057e\u0578\u0580",
"Advanced": "\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579",
"Style": "\u0548\u0573",
"Vertical space": "\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Horizontal space": "\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Border": "\u0535\u0566\u0580\u0561\u0563\u056b\u056e",
"Insert image": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0576\u056f\u0561\u0580",
"Image...": "\u0546\u056f\u0561\u0580",
"Image list": "Image list",
"Rotate counterclockwise": "\u054a\u057f\u057f\u0565\u056c \u056a\u0561\u0574\u057d\u056c\u0561\u0584\u056b\u0576 \u0570\u0561\u056f\u0561\u057c\u0561\u056f",
"Rotate clockwise": "\u054a\u057f\u057f\u0565\u056c \u056a\u0561\u0574\u057d\u056c\u0561\u0584\u056b \u0578\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0561\u0574\u0562",
"Flip vertically": "\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u0561\u0580\u057f\u0561\u0581\u0578\u056c\u0578\u0582\u0574",
"Flip horizontally": "\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u0561\u0580\u057f\u0561\u0581\u0578\u056c\u0578\u0582\u0574",
"Edit image": "\u053d\u0562\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u0576\u056f\u0561\u0580\u0568",
"Image options": "\u0546\u056f\u0561\u0580\u056b \u056f\u0561\u0580\u0563\u0561\u057e\u0578\u0580\u0578\u0582\u0574\u0576\u0565\u0580\u0568",
"Zoom in": "\u0544\u0565\u056e\u0561\u0581\u0576\u0565\u056c",
"Zoom out": "\u0553\u0578\u0584\u0580\u0561\u0581\u0576\u0565\u056c",
"Crop": "\u053f\u057f\u0580\u0565\u056c",
"Resize": "\u0553\u0578\u056d\u0565\u056c \u0579\u0561\u0583\u0568",
"Orientation": "\u053f\u0578\u0572\u0574\u0576\u0578\u0580\u0578\u0577\u0578\u0582\u0574",
"Brightness": "\u054a\u0561\u0575\u056e\u0561\u057c\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Sharpen": "Sharpen",
"Contrast": "\u053f\u0578\u0576\u057f\u0580\u0561\u057d\u057f",
"Color levels": "Color levels",
"Gamma": "\u0533\u0561\u0574\u0574\u0561",
"Invert": "\u0553\u0578\u056d\u0561\u057f\u0565\u0572\u0565\u056c",
"Apply": "\u0540\u0561\u057d\u057f\u0561\u057f\u0565\u056c",
"Back": "\u0540\u0565\u057f",
"Insert date\/time": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0561\u0574\u057d\u0561\u0569\u056b\u057e\/\u056a\u0561\u0574\u0561\u0576\u0561\u056f",
"Date\/time": "\u0531\u0574\u057d\u0561\u0569\u056b\u057e\/\u056a\u0561\u0574\u0561\u0576\u0561\u056f",
"Insert\/Edit Link": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u0553\u0578\u0583\u0578\u056d\u0565\u056c \u0540\u0572\u0578\u0582\u0574\u0568",
"Insert\/edit link": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u0570\u0572\u0578\u0582\u0574",
"Text to display": "\u0540\u0572\u0574\u0561\u0576 \u057f\u0565\u0584\u057d\u057f",
"Url": "Url",
"Open link in...": "\u0532\u0561\u0581\u0565\u056c \u0570\u0572\u0578\u0582\u0574\u0568",
"Current window": "\u0538\u0576\u0569\u0561\u0581\u056b\u056f \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0568",
"None": "\u0548\u0579\u056b\u0576\u0579",
"New window": "\u0546\u0578\u0580 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576",
"Remove link": "\u054b\u0576\u057b\u0565\u056c \u0570\u0572\u0578\u0582\u0574\u0568",
"Anchors": "\u053d\u0561\u0580\u056b\u057d\u056d\u0576\u0565\u0580",
"Link...": "\u0540\u0572\u0578\u0582\u0574",
"Paste or type a link": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u0584 \u056f\u0561\u0574 \u0563\u0580\u0565\u0584 \u0570\u0572\u0578\u0582\u0574\u0568",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0544\u0578\u0582\u057f\u0584\u0561\u0563\u0580\u057e\u0561\u056e \u0570\u0572\u0578\u0582\u0574\u0568 \u056f\u0561\u0580\u056e\u0565\u057d \u0537\u056c. \u0583\u0578\u057d\u057f\u056b \u0570\u0561\u057d\u0581\u0565 \u0567: \u0534\u0578\u0582\u0584 \u056f\u0581\u0561\u0576\u056f\u0561\u0576\u0561\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c mailto: \u0570\u0572\u0574\u0561\u0576 \u057d\u056f\u0566\u0562\u0578\u0582\u0574",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0544\u0578\u0582\u057f\u0584\u0561\u0563\u0580\u057e\u0561\u056e \u0570\u0572\u0578\u0582\u0574\u0568 \u056f\u0561\u0580\u056e\u0565\u057d \u0561\u0580\u057f\u0561\u0584\u056b\u0576 \u0570\u0572\u0578\u0582\u0574 \u0567: \u0534\u0578\u0582\u0584 \u056f\u0581\u0561\u0576\u056f\u0561\u0576\u0561\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c http:\/\/ \u0570\u0572\u0574\u0561\u0576 \u057d\u056f\u0566\u0562\u0578\u0582\u0574",
"Link list": "\u0540\u0572\u0578\u0582\u0574\u0576\u0565\u0580\u056b \u0581\u0578\u0582\u0581\u0561\u056f",
"Insert video": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057e\u056b\u0564\u0565\u0578",
"Insert\/edit video": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u057e\u056b\u0564\u0565\u0578",
"Insert\/edit media": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u0574\u0565\u0564\u056b\u0561",
"Alternative source": "\u0531\u0575\u056c\u0568\u0576\u057f\u0580\u0561\u0576\u0584\u0561\u0575\u056b\u0576 \u056f\u0578\u0564",
"Alternative source URL": "\u0531\u0575\u056c\u0568\u0576\u057f\u0580\u0561\u0576\u0584\u0561\u0575\u056b\u0576 \u0561\u0572\u0562\u0575\u0578\u0582\u0580\u056b \u0570\u0572\u0578\u0582\u0574",
"Media poster (Image URL)": "\u0544\u0565\u0564\u056b\u0561 \u057a\u0561\u057d\u057f\u0561\u057c (\u0546\u056f\u0561\u0580\u056b \u0570\u0572\u0578\u0582\u0574)",
"Paste your embed code below:": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u0584 \u0541\u0565\u0580 \u056f\u0578\u0564\u0568 \u0561\u0575\u057d\u057f\u0565\u0572\u055d",
"Embed": "\u054f\u0565\u0572\u0561\u0564\u0580\u057e\u0578\u0572 \u056f\u0578\u0564",
"Media...": "\u0544\u0565\u0564\u056b\u0561",
"Nonbreaking space": "\u0531\u057c\u0561\u0576\u0581 \u0576\u0578\u0580 \u057f\u0578\u0572\u056b \u0562\u0561\u0581\u0561\u057f",
"Page break": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0567\u057b\u056b \u0561\u0576\u057b\u0561\u057f\u056b\u0579",
"Paste as text": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0578\u0580\u057a\u0565\u057d \u057f\u0565\u0584\u057d\u057f",
"Preview": "\u0546\u0561\u056d\u0576\u0561\u056f\u0561\u0576 \u0564\u056b\u057f\u0578\u0582\u0574",
"Print...": "\u054f\u057a\u0565\u056c",
"Save": "\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c",
"Find": "\u0553\u0576\u057f\u0580\u0565\u056c",
"Replace with": "\u0553\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
"Replace": "\u0553\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
"Replace all": "\u0553\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568",
"Previous": "\u0546\u0561\u056d\u0578\u0580\u0564",
"Next": "\u0540\u0561\u057b\u0578\u0580\u0564",
"Find and replace...": "\u0553\u0576\u057f\u0580\u0565\u056c \u0587 \u0583\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
"Could not find the specified string.": "\u0546\u0577\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u0568 \u0579\u056b \u0563\u057f\u0576\u057e\u0565\u056c",
"Match case": "\u0540\u0561\u0577\u057e\u056b \u0561\u057c\u0576\u0565\u056c \u057c\u0565\u0563\u056b\u057d\u057f\u0578\u0580\u0568",
"Find whole words only": "\u0533\u057f\u0576\u0565\u056c \u0574\u056b\u0561\u0575\u0576 \u0561\u0574\u0562\u0578\u0572\u057b \u0562\u0561\u057c\u0565\u0580\u0568",
"Spell check": "\u0548\u0582\u0572\u0572\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0561\u0576 \u057d\u057f\u0578\u0582\u0563\u0578\u0582\u0574",
"Ignore": "\u0531\u0576\u057f\u0565\u057d\u0565\u056c",
"Ignore all": "\u0531\u0576\u057f\u0565\u057d\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568",
"Finish": "\u0531\u057e\u0561\u0580\u057f\u0565\u056c",
"Add to Dictionary": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u0562\u0561\u057c\u0561\u0580\u0561\u0576\u0578\u0582\u0574",
"Insert table": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0561\u0572\u0575\u0578\u0582\u057d\u0561\u056f",
"Table properties": "\u0531\u0572\u0575\u0578\u0582\u057d\u0561\u056f\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
"Delete table": "\u054b\u0576\u057b\u0565\u056c \u0561\u0572\u0575\u0578\u0582\u057d\u0561\u056f\u0568",
"Cell": "\u054e\u0561\u0576\u0564\u0561\u056f",
"Row": "\u054f\u0578\u0572",
"Column": "\u054d\u0575\u0578\u0582\u0576\u0575\u0561\u056f",
"Cell properties": "\u054e\u0561\u0576\u0564\u0561\u056f\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
"Merge cells": "\u0544\u056b\u0561\u057e\u0578\u0580\u0565\u056c \u057e\u0561\u0576\u0564\u0561\u056f\u0576\u0565\u0580\u0568",
"Split cell": "\u0532\u0561\u056a\u0561\u0576\u0565\u056c \u057e\u0561\u0576\u0564\u0561\u056f\u0568",
"Insert row before": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u057f\u0578\u0572 \u057e\u0565\u0580\u0587\u0578\u0582\u0574",
"Insert row after": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u057f\u0578\u0572 \u0576\u0565\u0580\u0584\u0587\u0578\u0582\u0574",
"Delete row": "\u054b\u0576\u057b\u0565\u056c \u057f\u0578\u0572\u0568",
"Row properties": "\u054f\u0578\u0572\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
"Cut row": "\u053f\u057f\u0580\u0565\u056c \u057f\u0578\u0572\u0568",
"Copy row": "\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c \u057f\u0578\u0572\u0568",
"Paste row before": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057f\u0578\u0572\u0568 \u057e\u0565\u0580\u0587\u0578\u0582\u0574",
"Paste row after": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057f\u0578\u0572\u0568 \u0576\u0565\u0580\u0584\u0587\u0578\u0582\u0574",
"Insert column before": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u0576\u0578\u0580 \u057d\u0575\u0578\u0582\u0576 \u0571\u0561\u056d\u056b\u0581",
"Insert column after": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u0576\u0578\u0580 \u057d\u0575\u0578\u0582\u0576 \u0561\u057b\u056b\u0581",
"Delete column": "\u0541\u0576\u057b\u0565\u056c \u057d\u0575\u0578\u0582\u0576\u0568",
"Cols": "\u054d\u0575\u0578\u0582\u0576\u0575\u0561\u056f\u0576\u0565\u0580",
"Rows": "\u054f\u0578\u0572\u0565\u0580",
"Width": "\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Height": "\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Cell spacing": "\u0531\u0580\u057f\u0561\u0584\u056b\u0576 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Cell padding": "\u0546\u0565\u0580\u0584\u056b\u0576 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Show caption": "\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u057e\u0565\u0580\u0576\u0561\u0563\u056b\u0580\u0568",
"Left": "\u0541\u0561\u056d",
"Center": "\u053f\u0565\u0576\u057f\u0580\u0578\u0576",
"Right": "\u0531\u057b",
"Cell type": "\u054e\u0561\u0576\u0564\u0561\u056f\u056b \u057f\u056b\u057a",
"Scope": "Scope",
"Alignment": "\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",
"H Align": "\u0540. \u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",
"V Align": "\u0548\u0582. \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",
"Top": "\u054e\u0565\u0580\u0587",
"Middle": "\u0544\u0565\u057b\u057f\u0565\u0572",
"Bottom": "\u0546\u0565\u0580\u0584\u0587",
"Header cell": "\u054e\u0565\u0580\u0576\u0561\u0563\u0580\u056b \u057e\u0561\u0576\u0564\u0561\u056f\u0576\u0565\u0580",
"Row group": "\u054f\u0578\u0572\u0565\u0580\u056b \u056d\u0578\u0582\u0574\u0562",
"Column group": "\u054d\u0575\u0578\u0582\u0576\u0575\u0561\u056f\u0576\u0565\u0580\u056b \u056d\u0578\u0582\u0574\u0562",
"Row type": "\u054f\u0578\u0572\u056b \u057f\u056b\u057a",
"Header": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
"Body": "\u054a\u0561\u0580\u0578\u0582\u0576\u0561\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Footer": "\u0531\u0572\u0575\u0578\u0582\u057d\u0561\u056f\u056b \u057d\u057f\u0578\u0580\u056b\u0576 \u0570\u0561\u057f\u057e\u0561\u056e",
"Border color": "\u0535\u0566\u0580\u0561\u0563\u056b\u056e",
"Insert template...": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u0584 \u0571\u0587\u0561\u0576\u0574\u0578\u0582\u0577",
"Templates": "\u0541\u0587\u0561\u0576\u0574\u0578\u0582\u0577\u0576\u0565\u0580",
"Template": "\u0541\u0587\u0561\u0576\u0574\u0578\u0582\u0577",
"Text color": "\u054f\u0561\u057c\u056b \u0563\u0578\u0582\u0575\u0576",
"Background color": "\u0556\u0578\u0576\u056b \u0563\u0578\u0582\u0575\u0576",
"Custom...": "\u0531\u0575\u056c...",
"Custom color": "\u0531\u0575\u056c \u0563\u0578\u0582\u0575\u0576",
"No color": "\u0531\u0576\u0563\u0578\u0582\u0575\u0576",
"Remove color": "\u054b\u0576\u057b\u0565\u056c \u0563\u0578\u0582\u0575\u0576\u0568",
"Table of Contents": "\u0551\u0561\u0576\u056f",
"Show blocks": "\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u0562\u056c\u0578\u056f\u0576\u0565\u0580\u0568",
"Show invisible characters": "\u0551\u0578\u0582\u0575\u0581 \u057f\u0561\u056c \u0561\u0576\u057f\u0565\u057d\u0561\u0576\u0565\u056c\u056b \u057d\u056b\u0574\u057e\u0578\u056c\u0576\u0565\u0580\u0568",
"Word count": "\u0532\u0561\u057c\u056b \u0584\u0561\u0576\u0561\u056f",
"Count": "\u0554\u0561\u0576\u0561\u056f\u0568",
"Document": "\u0553\u0561\u057d\u057f\u0561\u0569\u0578\u0582\u0572\u0569",
"Selection": "\u0538\u0576\u057f\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Words": "\u0532\u0561\u057c\u0565\u0580",
"Words: {0}": "\u0532\u0561\u057c\u0565\u0580\u056b \u0584\u0561\u0576\u0561\u056f: {0}",
"{0} words": "{0} \u0562\u0561\u057c",
"File": "\u0556\u0561\u0575\u056c",
"Edit": "\u053d\u0574\u0562\u0561\u0563\u0580\u0565\u056c",
"Insert": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c",
"View": "\u054f\u0565\u057d\u0584",
"Format": "\u0556\u0578\u0580\u0574\u0561\u057f",
"Table": "\u0531\u0572\u0575\u0578\u0582\u057d\u0561\u056f",
"Tools": "\u0533\u0578\u0580\u056e\u056b\u0584\u0576\u0565\u0580",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u054f\u0565\u0584\u057d\u057f\u0561\u0575\u056b\u0576 \u0564\u0561\u0577\u057f\u0589 \u054d\u0565\u0572\u0574\u0565\u0584 ALT-F9 \u0574\u0565\u0576\u0575\u0578\u0582\u056b \u0570\u0561\u0574\u0561\u0580\u0589 ALT-F10 \u0563\u0578\u0580\u056e\u056b\u0584\u0576\u0565\u0580\u056b \u057e\u0561\u0570\u0561\u0576\u0561\u056f\u0589 \u054d\u0565\u0572\u0574\u0565\u0584 ALT-0 \u0585\u0563\u0576\u0578\u0582\u0569\u0575\u0561\u0576 \u0570\u0561\u0574\u0561\u0580",
"Image title": "\u0546\u056f\u0561\u0580\u056b \u057e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
"Border width": "\u054d\u0561\u0570\u0574\u0561\u0576\u056b \u056c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",
"Border style": "\u054d\u0561\u0570\u0574\u0561\u0576\u056b \u0578\u0573\u0568",
"Error": "\u054d\u056d\u0561\u056c",
"Warn": "\u0536\u0563\u0578\u0582\u0577\u0561\u0581\u0578\u0582\u0574",
"Valid": "\u054e\u0561\u057e\u0565\u0580 \u0567",
"To open the popup, press Shift+Enter": "\u0539\u057c\u0578\u0582\u0581\u056b\u056f\u0568 \u0562\u0561\u0581\u0565\u056c\u0578\u0582 \u0570\u0561\u0574\u0561\u0580 \u057d\u0565\u0572\u0574\u0565\u0584 Shift + Enter",
"Rich Text Area. Press ALT-0 for help.": "\u0540\u0561\u0580\u0578\u0582\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u0561\u0575\u056b\u0576 \u057f\u0561\u0580\u0561\u056e\u0584: \u0555\u0563\u0576\u0578\u0582\u0569\u0575\u0561\u0576 \u0570\u0561\u0574\u0561\u0580 \u057d\u0565\u0572\u0574\u0565\u0584 ALT-0:",
"System Font": "\u0540\u0561\u0574\u0561\u056f\u0561\u0580\u0563\u056b \u057f\u0561\u057c\u0561\u057f\u0565\u057d\u0561\u056f",
"Failed to upload image: {0}": "\u0549\u0570\u0561\u057b\u0578\u0572\u057e\u0565\u0581 \u057e\u0565\u0580\u0562\u0565\u057c\u0576\u0565\u056c \u057a\u0561\u057f\u056f\u0565\u0580\u0568: {0}",
"Failed to load plugin: {0} from url {1}": "\u0549\u0570\u0561\u057b\u0578\u0572\u057e\u0565\u0581 \u0562\u0565\u057c\u0576\u0565\u056c \u057a\u056c\u0561\u0563\u056b\u0576\u0568\u0589 {0} \u0570\u0572\u0578\u0582\u0574\u056b\u0581 {1}",
"Failed to load plugin url: {0}": "\u0549\u0570\u0561\u057b\u0578\u0572\u057e\u0565\u0581 \u0562\u0565\u057c\u0576\u0565\u056c \u057a\u056c\u0561\u0563\u056b\u0576\u0568 \u0570\u0572\u0578\u0582\u0574\u056b\u0581\u0589 {0}",
"Failed to initialize plugin: {0}": "\u0549\u0570\u0561\u057b\u0578\u0572\u057e\u0565\u0581 \u0574\u056b\u0561\u0581\u0576\u0565\u056c \u057a\u056c\u0561\u0563\u056b\u0576\u0568\u0589 {0}",
"example": "\u0585\u0580\u056b\u0576\u0561\u056f",
"Search": "\u0553\u0576\u057f\u0580\u0565\u056c",
"All": "\u0532\u0578\u056c\u0578\u0580\u0568",
"Currency": "\u0531\u0580\u056a\u0578\u0582\u0575\u0569",
"Text": "\u054f\u0565\u0584\u057d\u057f",
"Quotations": "\u0544\u0565\u057b\u0562\u0565\u0580\u0578\u0582\u0574\u0576\u0565\u0580",
"Mathematical": "\u0544\u0561\u0569\u0565\u0574\u0561\u057f\u056b\u056f\u0561\u056f\u0561\u0576",
"Extended Latin": "\u0538\u0576\u0564\u0561\u0580\u0571\u0561\u056f \u056c\u0561\u057f\u056b\u0576\u0565\u0580\u0565\u0576",
"Symbols": "\u054d\u056b\u0574\u057e\u0578\u056c\u0576\u0565\u0580",
"Arrows": "\u054d\u056c\u0561\u0584\u0576\u0565\u0580",
"User Defined": "\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0578\u0572\u056b \u056f\u0578\u0572\u0574\u056b\u0581 \u054d\u0561\u0570\u0574\u0561\u0576\u057e\u0561\u056e",
"dollar sign": "\u0564\u0578\u056c\u056c\u0561\u0580\u056b \u0576\u0577\u0561\u0576",
"currency sign": "\u0561\u0580\u056a\u0578\u0582\u0575\u0569\u056b \u0576\u0577\u0561\u0576",
"euro-currency sign": "\u0565\u057e\u0580\u0578-\u0561\u0580\u056a\u0578\u0582\u0575\u0569\u056b \u0576\u0577\u0561\u0576",
"colon sign": "\u056f\u0580\u056f\u0576\u0561\u056f\u0565\u057f \u0576\u0577\u0561\u0576",
"cruzeiro sign": "\u0576\u0561\u057e\u0561\u0580\u056f\u0578\u0582\u0569\u0575\u0561\u0576 \u0576\u0577\u0561\u0576",
"french franc sign": "\u0586\u0580\u0561\u0576\u057d\u056b\u0561\u056f\u0561\u0576 \u0586\u0580\u0561\u0576\u056f\u056b \u0576\u0577\u0561\u0576",
"lira sign": "\u056c\u056b\u0580\u056b \u0576\u0577\u0561\u0576",
"mill sign": "\u057b\u0580\u0561\u0572\u0561\u0581\u056b \u0576\u0577\u0561\u0576",
"naira sign": "\u0576\u0561\u056b\u0580\u0561\u0575\u056b \u0576\u0577\u0561\u0576",
"peseta sign": "\u057a\u0565\u057d\u0565\u057f\u0561\u0575\u056b \u0576\u0577\u0561\u0576",
"rupee sign": "\u057c\u0578\u0582\u0583\u056b\u056b \u0576\u0577\u0561\u0576",
"won sign": "\u0577\u0561\u0570\u0565\u056c\u0578\u0582 \u0576\u0577\u0561\u0576\u0568",
"new sheqel sign": "\u0576\u0578\u0580 \u0577\u0565\u056f\u0565\u056c \u0576\u0577\u0561\u0576",
"dong sign": "\u0564\u0578\u0576\u0563\u056b \u0576\u0577\u0561\u0576",
"kip sign": "\u056f\u056b\u057a \u0576\u0577\u0561\u0576",
"tugrik sign": "\u057f\u0578\u0582\u0563\u0580\u056b\u056f\u056b \u0576\u0577\u0561\u0576",
"drachma sign": "\u0564\u0580\u0561\u0574\u0561\u056d\u0574\u0561\u0575\u056b \u0576\u0577\u0561\u0576",
"german penny symbol": "\u0563\u0565\u0580\u0574\u0561\u0576\u0561\u056f\u0561\u0576 \u057a\u0565\u0576\u056b\u0575\u056b \u056d\u0578\u0580\u0570\u0580\u0564\u0561\u0576\u056b\u0577",
"peso sign": "\u057a\u0565\u057d\u0578\u0575\u056b \u0576\u0577\u0561\u0576",
"guarani sign": "\u0563\u0578\u0582\u0561\u0580\u0561\u0576\u056b \u0576\u0577\u0561\u0576",
"austral sign": "\u0561\u057e\u057d\u057f\u0580\u0561\u056c\u056b \u0576\u0577\u0561\u0576",
"hryvnia sign": "\u0563\u0580\u056b\u057e\u0576\u0561\u0575\u056b \u0576\u0577\u0561\u0576",
"cedi sign": "\u0584\u0565\u0564\u056b \u0576\u0577\u0561\u0576",
"livre tournois sign": "\u056c\u056b\u057e\u0580\u0565 \u0569\u0578\u0582\u0580\u0576\u0578\u056b\u057d \u0576\u0577\u0561\u0576",
"spesmilo sign": "\u057d\u057a\u0565\u057d\u0574\u056b\u056c\u0578 \u0576\u0577\u0561\u0576",
"tenge sign": "\u057f\u0565\u0576\u0563\u0565 \u0576\u0577\u0561\u0576",
"indian rupee sign": "\u0570\u0576\u0564\u056f\u0561\u056f\u0561\u0576 \u057c\u0578\u0582\u0583\u056b \u0576\u0577\u0561\u0576",
"turkish lira sign": "\u0569\u0578\u0582\u0580\u0584\u0561\u056f\u0561\u0576 \u056c\u056b\u0580\u0561\u0575\u056b \u0576\u0577\u0561\u0576",
"nordic mark sign": "\u0570\u0575\u0578\u0582\u057d\u056b\u057d\u0561\u0575\u056b\u0576 \u0576\u0577\u0561\u0576\u056b \u0576\u0577\u0561\u0576",
"manat sign": "\u0574\u0561\u0576\u0561\u0569\u056b \u0576\u0577\u0561\u0576",
"ruble sign": "\u057c\u0578\u0582\u0562\u056c\u0578\u0582 \u0576\u0577\u0561\u0576",
"yen character": "\u056b\u0565\u0576\u056b \u0576\u0577\u0561\u0576",
"yuan character": "\u0575\u0578\u0582\u0561\u0576\u056b \u0576\u0577\u0561\u0576",
"yuan character, in hong kong and taiwan": "\u0575\u0578\u0582\u0561\u0576\u056b \u0576\u0577\u0561\u0576 \u0570\u0578\u0576\u0563\u056f\u0578\u0576\u0563\u0578\u0582\u0574 \u0587 \u0569\u0561\u0575\u057e\u0561\u0576\u0578\u0582\u0574",
"yen\/yuan character variant one": "\u0575\u0565\u0576\u056b\/\u0575\u0578\u0582\u0561\u0576\u056b \u0576\u0577\u0561\u0576 \u057f\u0561\u0580\u0562\u0565\u0580\u0561\u056f \u0561\u057c\u0561\u057b\u056b\u0576",
"Loading emoticons...": "\u054d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580\u056b \u0562\u0565\u057c\u0576\u0578\u0582\u0574\u0568\u2024\u2024\u2024",
"Could not load emoticons": "\u0549\u056f\u0561\u0580\u0578\u0572\u0561\u0581\u0561\u0576 \u0562\u0565\u057c\u0576\u057e\u0565\u056c \u057d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580\u0568",
"People": "\u0544\u0561\u0580\u0564\u056b\u0584",
"Animals and Nature": "\u053f\u0565\u0576\u0564\u0561\u0576\u056b\u0576\u0565\u0580 \u0587 \u0532\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Food and Drink": "\u054d\u0576\u0578\u0582\u0576\u0564 \u0587 \u056d\u0574\u056b\u0579\u0584",
"Activity": "\u0533\u0578\u0580\u056e\u0578\u0582\u0576\u0565\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Travel and Places": "\u0543\u0561\u0576\u0561\u057a\u0561\u0580\u0570\u0578\u0580\u0564\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580 \u0587 \u057e\u0561\u0575\u0580\u0565\u0580",
"Objects": "\u0555\u0562\u0575\u0565\u056f\u057f\u0576\u0565\u0580",
"Flags": "\u0534\u0580\u0578\u0577\u0576\u0565\u0580",
"Characters": "\u0546\u056b\u0577\u0565\u0580",
"Characters (no spaces)": "\u0546\u056b\u0577\u0565\u0580 (\u0562\u0561\u0581\u0561\u057f\u0576\u0565\u0580)",
"{0} characters": "{0} \u0576\u056b\u0577\u0565\u0580",
"Error: Form submit field collision.": "\u054d\u056d\u0561\u056c\u0589 \u0541\u0587\u0568 \u0570\u0561\u057d\u057f\u0561\u057f\u0565\u056c\u0578\u0582\u0581 \u0564\u0561\u0577\u057f\u056b \u0562\u0561\u056d\u0578\u0582\u0574:",
"Error: No form element found.": "\u054d\u056d\u0561\u056c\u0589 \u0541\u0587\u056b \u0578\u0579 \u0574\u056b \u057f\u0561\u0580\u0580 \u0579\u056b \u0563\u057f\u0576\u057e\u0565\u056c:",
"Update": "\u0539\u0561\u0580\u0574\u0561\u0581\u0576\u0565\u056c",
"Color swatch": "\u0533\u0578\u0582\u0575\u0576\u056b \u0583\u0578\u056d\u0561\u0576\u0561\u056f\u0578\u0582\u0574",
"Turquoise": "\u0553\u056b\u0580\u0578\u0582\u0566\u0561\u0563\u0578\u0582\u0575\u0576",
"Green": "\u053f\u0561\u0576\u0561\u0579",
"Blue": "\u053f\u0561\u057a\u0578\u0582\u0575\u057f",
"Purple": "\u0544\u0561\u0576\u0578\u0582\u0577\u0561\u056f\u0561\u0563\u0578\u0582\u0575\u0576",
"Navy Blue": "\u0544\u0578\u0582\u0563 \u056f\u0561\u057a\u0578\u0582\u0575\u057f",
"Dark Turquoise": "\u0544\u0578\u0582\u0563 \u0583\u056b\u0580\u0578\u0582\u0566\u0561\u0563\u0578\u0582\u0575\u0576",
"Dark Green": "\u0544\u0578\u0582\u0563 \u056f\u0561\u0576\u0561\u0579",
"Medium Blue": "\u0544\u056b\u057b\u056b\u0576 \u056f\u0561\u057a\u0578\u0582\u0575\u057f",
"Medium Purple": "\u0544\u056b\u057b\u056b\u0576 \u0574\u0561\u0576\u0578\u0582\u0577\u0561\u056f\u0561\u0563\u0578\u0582\u0575\u0576",
"Midnight Blue": "\u053f\u0565\u057d\u0563\u056b\u0577\u0565\u0580\u0561\u0575\u056b\u0576 \u056f\u0561\u057a\u0578\u0582\u0575\u057f",
"Yellow": "\u0534\u0565\u0572\u056b\u0576",
"Orange": "\u0546\u0561\u0580\u0576\u057b\u0561\u0563\u0578\u0582\u0575\u0576",
"Red": "\u053f\u0561\u0580\u0574\u056b\u0580",
"Light Gray": "\u0532\u0561\u0581 \u0574\u0578\u056d\u0580\u0561\u0563\u0578\u0582\u0575\u0576",
"Gray": "\u0544\u0578\u056d\u0580\u0561\u0563\u0578\u0582\u0575\u0576",
"Dark Yellow": "\u0544\u0578\u0582\u0563 \u0564\u0565\u0572\u056b\u0576",
"Dark Orange": "\u0544\u0578\u0582\u0563 \u0576\u0561\u0580\u0576\u057b\u0561\u0563\u0578\u0582\u0575\u0576",
"Dark Red": "\u0544\u0578\u0582\u0563 \u056f\u0561\u0580\u0574\u056b\u0580",
"Medium Gray": "\u0544\u056b\u057b\u056b\u0576 \u0574\u0578\u056d\u0580\u0561\u0563\u0578\u0582\u0575\u0576",
"Dark Gray": "\u0544\u0578\u0582\u0563 \u0574\u0578\u056d\u0580\u0561\u0563\u0578\u0582\u0575\u0576",
"Light Green": "\u0532\u0561\u0581 \u056f\u0561\u0576\u0561\u0579",
"Light Yellow": "\u0532\u0561\u0581 \u0564\u0565\u0572\u056b\u0576",
"Light Red": "\u0532\u0561\u0581 \u056f\u0561\u0580\u0574\u056b\u0580",
"Light Purple": "\u0532\u0561\u0581 \u0574\u0561\u0576\u0578\u0582\u0577\u0561\u056f\u0561\u0563\u0578\u0582\u0575\u0576",
"Light Blue": "\u0532\u0561\u0581 \u056f\u0561\u057a\u0578\u0582\u0575\u057f",
"Dark Purple": "\u0544\u0578\u0582\u0563 \u0574\u0561\u0576\u0578\u0582\u0577\u0561\u056f\u0561\u0563\u0578\u0582\u0575\u0576",
"Dark Blue": "\u0544\u0578\u0582\u0563 \u056f\u0561\u057a\u0578\u0582\u0575\u057f",
"Black": "\u054d\u0587",
"White": "\u054d\u057a\u056b\u057f\u0561\u056f",
"Switch to or from fullscreen mode": "\u0531\u0576\u0581\u0565\u0584 \u0561\u0574\u0562\u0578\u0572\u057b \u0567\u056f\u0580\u0561\u0576\u056b\u0576 \u057c\u0565\u056a\u056b\u0574\u056b\u0581 \u056f\u0561\u0574 \u0561\u0574\u0562\u0578\u0572\u057b \u057c\u0565\u056a\u056b\u0574\u056b\u0581",
"Open help dialog": "\u0532\u0561\u0581\u0565\u056c \u0585\u0563\u0576\u0578\u0582\u0569\u0575\u0561\u0576 \u0565\u0580\u056f\u056d\u0578\u057d\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",
"history": "\u054a\u0561\u057f\u0574\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"styles": "\u0578\u0573\u0565\u0580\u0568",
"formatting": "\u0579\u0561\u0583\u0561\u0576\u0577\u0578\u0582\u0574",
"alignment": "\u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",
"indentation": "\u056d\u0561\u0575\u0569\u0578\u0581",
"permanent pen": "\u0574\u0577\u057f\u0561\u056f\u0561\u0576 \u0563\u0580\u056b\u0579",
"comments": "\u0574\u0565\u056f\u0576\u0561\u0562\u0561\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580",
"Format Painter": "\u0541\u0587\u0561\u0579\u0561\u0583\u056b \u0576\u056f\u0561\u0580\u056b\u0579",
"Insert\/edit iframe": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u0584\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u0584 iframe- \u0568",
"Capitalization": "\u0544\u0565\u056e\u0561\u057f\u0561\u057c",
"lowercase": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c",
"UPPERCASE": "\u0544\u0535\u053e\u0531\u054f\u0531\u054c",
"Title Case": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 \u0533\u0578\u0580\u056e",
"Permanent Pen Properties": "\u0544\u0577\u057f\u0561\u056f\u0561\u0576 \u0563\u0580\u056b\u0579\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
"Permanent pen properties...": "\u0544\u0577\u057f\u0561\u056f\u0561\u0576 \u0563\u0580\u056b\u0579\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568\u2024\u2024\u2024",
"Font": "\u054f\u0561\u057c\u0561\u057f\u0565\u057d\u0561\u056f",
"Size": "\u0549\u0561\u0583\u057d",
"More...": "\u0531\u057e\u0565\u056c\u056b\u0576\u2024\u2024\u2024",
"Spellcheck Language": "\u0548\u0582\u0572\u0572\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0561\u0576 \u057d\u057f\u0578\u0582\u0563\u0574\u0561\u0576 \u056c\u0565\u0566\u0578\u0582",
"Select...": "\u0538\u0576\u057f\u0580\u0565\u056c\u2024\u2024\u2024",
"Preferences": "\u0546\u0561\u056d\u0561\u057a\u0561\u057f\u057e\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580",
"Yes": "\u0531\u0575\u0578",
"No": "\u0548\u0579",
"Keyboard Navigation": "\u054d\u057f\u0565\u0572\u0576\u0561\u0577\u0561\u0580\u056b \u0546\u0561\u057e\u056b\u0563\u0561\u0581\u056b\u0561",
"Version": "\u054f\u0561\u0580\u0562\u0565\u0580\u0561\u056f",
"Anchor": "\u053d\u0561\u0580\u056b\u057d\u056d",
"Special character": "\u0540\u0561\u057f\u0578\u0582\u056f \u057d\u056b\u0574\u057e\u0578\u056c\u0576\u0565\u0580",
"Code sample": "\u053f\u0578\u0564\u056b \u0585\u0580\u056b\u0576\u0561\u056f",
"Color": "\u0533\u0578\u0582\u0575\u0576",
"Emoticons": "\u054d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580",
"Document properties": "\u0553\u0561\u057d\u057f\u0561\u0569\u0572\u0569\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
"Image": "\u0546\u056f\u0561\u0580",
"Insert link": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0570\u0572\u0578\u0582\u0574",
"Target": "\u0539\u056b\u0580\u0561\u056d",
"Link": "\u0540\u0572\u0578\u0582\u0574",
"Poster": "\u054a\u0561\u057d\u057f\u0561\u057c",
"Media": "\u0544\u0565\u0564\u056b\u0561",
"Print": "\u054f\u057a\u0565\u056c",
"Prev": "\u0546\u0561\u056d\u0578\u0580\u0564",
"Find and replace": "\u0553\u0576\u057f\u0580\u0565\u056c \u0587 \u0583\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
"Whole words": "\u0532\u0561\u057c\u0565\u0580\u0568 \u0561\u0574\u0562\u0578\u0572\u057b\u0578\u0582\u0569\u0575\u0561\u0574\u0562",
"Spellcheck": "\u0548\u0582\u0572\u0572\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
"Caption": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
"Insert template": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0571\u0587\u0561\u0576\u0574\u0578\u0582\u0577"
});js/tinymce/langs/sv_SE.js000064400000035442151727150270011330 0ustar00tinymce.addI18n('sv_SE',{
"Redo": "G\u00f6r om",
"Undo": "\u00c5ngra",
"Cut": "Klipp ut",
"Copy": "Kopiera",
"Paste": "Klistra in",
"Select all": "Markera allt",
"New document": "Nytt dokument",
"Ok": "Ok",
"Cancel": "Avbryt",
"Visual aids": "Visuella hj\u00e4lpmedel",
"Bold": "Fet",
"Italic": "Kursiv",
"Underline": "Understruken",
"Strikethrough": "Genomstruken",
"Superscript": "Upph\u00f6jd",
"Subscript": "Neds\u00e4nkt",
"Clear formatting": "Rensa formatering",
"Align left": "V\u00e4nsterjustera",
"Align center": "Centrera",
"Align right": "H\u00f6gerjustera",
"Justify": "Verifiera",
"Bullet list": "Punktlista",
"Numbered list": "Nummerlista",
"Decrease indent": "Minska indrag",
"Increase indent": "\u00d6ka indrag",
"Close": "St\u00e4ng",
"Formats": "Format",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din webbl\u00e4sare st\u00f6djer inte direkt \u00e5tkomst till klippboken. Anv\u00e4nd kortkommandona Ctrl\u00a0+\u00a0X\/C\/V i st\u00e4llet.",
"Headers": "Rubriker",
"Header 1": "Rubrik 1",
"Header 2": "Rubrik 2",
"Header 3": "Rubrik 3",
"Header 4": "Rubrik 4",
"Header 5": "Rubrik 5",
"Header 6": "Rubrik 6",
"Headings": "Rubriker",
"Heading 1": "Rubrik 1",
"Heading 2": "Rubrik 2",
"Heading 3": "Rubrik 3",
"Heading 4": "Rubrik 4",
"Heading 5": "Rubrik 5",
"Heading 6": "Rubrik 6",
"Preformatted": "F\u00f6rformaterad",
"Div": "Div",
"Pre": "Pre",
"Code": "Kod",
"Paragraph": "Avsnitt",
"Blockquote": "Blockquote",
"Inline": "Inline",
"Blocks": "Block",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Klistra in \u00e4r nu i textl\u00e4ge. Inneh\u00e5ll kommer att konverteras till text tills du sl\u00e5r av detta l\u00e4ge.",
"Fonts": "Typsnitt",
"Font Sizes": "Teckenstorlek",
"Class": "Klass",
"Browse for an image": "Bl\u00e4ddra efter en bild",
"OR": "OR",
"Drop an image here": "Sl\u00e4pp en bild h\u00e4r",
"Upload": "Ladda upp",
"Block": "Block",
"Align": "Justera",
"Default": "Original",
"Circle": "Cirkel",
"Disc": "Disk",
"Square": "Fyrkant",
"Lower Alpha": "Gemener",
"Lower Greek": "Grekiska gemener",
"Lower Roman": "Romerska gemener",
"Upper Alpha": "Versaler",
"Upper Roman": "Romerska versaler",
"Anchor...": "Ankare...",
"Name": "Namn",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id skall b\u00f6rja med en bokstav och f\u00f6ljande tecken ska vara bokst\u00e4ver, nummer, punkter, understr\u00e4ck eller kolon.",
"You have unsaved changes are you sure you want to navigate away?": "Du har f\u00f6r\u00e4ndringar som du inte har sparat. \u00c4r du s\u00e4ker p\u00e5 att du vill navigera vidare?",
"Restore last draft": "\u00c5terst\u00e4ll senaste utkast",
"Special character...": "Specialtecken...",
"Source code": "K\u00e4llkod",
"Insert\/Edit code sample": "Infoga\/Redigera k\u00e5d exempel",
"Language": "Spr\u00e5k",
"Code sample...": "Kodexempel...",
"Color Picker": "F\u00e4rgv\u00e4ljare",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "V\u00e4nster till h\u00f6ger",
"Right to left": "H\u00f6ger till v\u00e4nster",
"Emoticons...": "Emoticons...",
"Metadata and Document Properties": "Metadata och dokumentegenskaper",
"Title": "Titel",
"Keywords": "Nyckelord",
"Description": "Beskrivning",
"Robots": "Robotar",
"Author": "F\u00f6rfattare",
"Encoding": "Encoding",
"Fullscreen": "Fullsk\u00e4rm",
"Action": "H\u00e4ndelse",
"Shortcut": "Kortkommando",
"Help": "Hj\u00e4lp",
"Address": "Adress",
"Focus to menubar": "Fokusera p\u00e5 menyrad",
"Focus to toolbar": "Fokusera p\u00e5 verktygsrad",
"Focus to element path": "Fokusera p\u00e5 elements\u00f6kv\u00e4gsrad",
"Focus to contextual toolbar": "Fokusera p\u00e5 den kontextuella verktygsraden",
"Insert link (if link plugin activated)": "Infoga l\u00e4nk (om link-pluginet \u00e4r aktiverat)",
"Save (if save plugin activated)": "Spara (om save-pluginet \u00e4r aktiverat)",
"Find (if searchreplace plugin activated)": "S\u00f6k (om searchreplace-pluginet \u00e4r aktiverat)",
"Plugins installed ({0}):": "Installerade plugins ({0}):",
"Premium plugins:": "Premiumplugins:",
"Learn more...": "L\u00e4s mer...",
"You are using {0}": "Du anv\u00e4nder {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Kortkommandon",
"Horizontal line": "Horisontell linje",
"Insert\/edit image": "Infoga\/redigera bild",
"Image description": "Bildbeskrivning",
"Source": "K\u00e4lla",
"Dimensions": "Dimensioner",
"Constrain proportions": "Begr\u00e4nsa proportioner",
"General": "Generella",
"Advanced": "Avancerat",
"Style": "Stil",
"Vertical space": "Vertikaltutrymme",
"Horizontal space": "Horisontellt utrymme",
"Border": "Ram",
"Insert image": "Infoga bild",
"Image...": "Bild...",
"Image list": "Bildlista",
"Rotate counterclockwise": "Rotera moturs",
"Rotate clockwise": "Rotera medurs",
"Flip vertically": "Spegelv\u00e4nd vertikalt",
"Flip horizontally": "Spegelv\u00e4nd horisontellt",
"Edit image": "Redigera bild",
"Image options": "Bild inst\u00e4llningar",
"Zoom in": "Zooma in",
"Zoom out": "Zooma ut",
"Crop": "Besk\u00e4r",
"Resize": "Skala om",
"Orientation": "Orientera",
"Brightness": "Ljusstyrka",
"Sharpen": "Sk\u00e4rpa",
"Contrast": "Kontrast",
"Color levels": "F\u00e4rgniv\u00e5er",
"Gamma": "Gamma",
"Invert": "Invertera",
"Apply": "Applicera",
"Back": "Tillbaka",
"Insert date\/time": "Infoga datum\/tid",
"Date\/time": "Datum\/tid",
"Insert\/Edit Link": "Infoga\/redigera l\u00e4nk",
"Insert\/edit link": "Infoga\/redigera l\u00e4nk",
"Text to display": "Text att visa",
"Url": "Url",
"Open link in...": "\u00d6ppna l\u00e4nk i...",
"Current window": "Nuvarande f\u00f6nster",
"None": "Ingen",
"New window": "Nytt f\u00f6nster",
"Remove link": "Ta bort l\u00e4nk",
"Anchors": "Bokm\u00e4rken",
"Link...": "L\u00e4nk...",
"Paste or type a link": "Klistra in eller skriv en l\u00e4nk",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Urlen du angav verkar vara en epost adress. Vill du l\u00e4gga till ett mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Urlen du angav verkar vara en extern l\u00e4nk. Vill du l\u00e4gga till http:\/\/ prefixet?",
"Link list": "L\u00e4nklista",
"Insert video": "Infoga video",
"Insert\/edit video": "Infoga\/redigera video",
"Insert\/edit media": "Infoga\/redigera media",
"Alternative source": "Alternativ k\u00e4lla",
"Alternative source URL": "Alternativ k\u00e4llwebbadress",
"Media poster (Image URL)": "Mediaposter (bildwebbadress)",
"Paste your embed code below:": "Klistra in din inb\u00e4ddningskod nedan:",
"Embed": "Inb\u00e4ddning",
"Media...": "Media...",
"Nonbreaking space": "Avbrottsfritt mellanrum",
"Page break": "Sidbrytning",
"Paste as text": "Klistra in som text",
"Preview": "F\u00f6rhandsgranska",
"Print...": "Skriv ut...",
"Save": "Spara",
"Find": "S\u00f6k",
"Replace with": "Ers\u00e4tt med",
"Replace": "Ers\u00e4tt",
"Replace all": "Ers\u00e4tt alla",
"Previous": "F\u00f6reg\u00e5ende",
"Next": "N\u00e4sta",
"Find and replace...": "S\u00f6k och ers\u00e4tt...",
"Could not find the specified string.": "Kunde inte hitta den specifierade st\u00e4ngen.",
"Match case": "Matcha gemener\/versaler",
"Find whole words only": "Hitta endast hela ord",
"Spell check": "Stavningskontroll",
"Ignore": "Ignorera",
"Ignore all": "Ignorera alla",
"Finish": "Avsluta",
"Add to Dictionary": "L\u00e4gg till i ordlista",
"Insert table": "Infoga tabell",
"Table properties": "Tabellegenskaper",
"Delete table": "Radera tabell",
"Cell": "Cell",
"Row": "Rad",
"Column": "Kolumn",
"Cell properties": "Cellegenskaper",
"Merge cells": "Sammanfoga celler",
"Split cell": "Bryt is\u00e4r celler",
"Insert row before": "Infoga rad f\u00f6re",
"Insert row after": "Infoga rad efter",
"Delete row": "Radera rad",
"Row properties": "Radegenskaper",
"Cut row": "Klipp ut rad",
"Copy row": "Kopiera rad",
"Paste row before": "Klista in rad f\u00f6re",
"Paste row after": "Klistra in rad efter",
"Insert column before": "Infoga kolumn f\u00f6re",
"Insert column after": "Infoga kolumn efter",
"Delete column": "Radera kolumn",
"Cols": "Kolumner",
"Rows": "Rader",
"Width": "Bredd",
"Height": "H\u00f6jd",
"Cell spacing": "Cellmellanrum",
"Cell padding": "Cellpaddning",
"Show caption": "Visa bildtext",
"Left": "V\u00e4nster",
"Center": "Centrum",
"Right": "H\u00f6ger",
"Cell type": "Celltyp",
"Scope": "Omf\u00e5ng",
"Alignment": "Justering",
"H Align": "H-justering",
"V Align": "V-justering",
"Top": "Toppen",
"Middle": "Mitten",
"Bottom": "Botten",
"Header cell": "Huvudcell",
"Row group": "Radgrupp",
"Column group": "Kolumngrupp",
"Row type": "Radtyp",
"Header": "Huvud",
"Body": "Kropp",
"Footer": "Fot",
"Border color": "Ramf\u00e4rg",
"Insert template...": "Infoga mall...",
"Templates": "Mallar",
"Template": "Mall",
"Text color": "Textf\u00e4rg",
"Background color": "Bakgrundsf\u00e4rg",
"Custom...": "Anpassad...",
"Custom color": "Anpassad f\u00e4rg",
"No color": "Ingen f\u00e4rg",
"Remove color": "Ta bort f\u00e4rg",
"Table of Contents": "Inneh\u00e5llsf\u00f6rteckning",
"Show blocks": "Visa block",
"Show invisible characters": "Visa onsynliga tecken",
"Word count": "Ordantal",
"Count": "Antal",
"Document": "Dokument",
"Selection": "Val",
"Words": "Ord",
"Words: {0}": "Ord: {0}",
"{0} words": "{0} ord",
"File": "Fil",
"Edit": "Redigera",
"Insert": "Infoga",
"View": "Visa",
"Format": "Format",
"Table": "Tabell",
"Tools": "Verktyg",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textredigerare. Tryck ALT-F9 f\u00f6r menyn. Tryck ALT-F10 f\u00f6r verktygsrader. Tryck ALT-0 f\u00f6r hj\u00e4lp.",
"Image title": "Bildtitel",
"Border width": "Kantlinjebredd",
"Border style": "Kantlinjestil",
"Error": "Fel",
"Warn": "Varning",
"Valid": "Giltig",
"To open the popup, press Shift+Enter": "Tryck p\u00e5 Shift\u00a0+\u00a0Enter f\u00f6r att \u00f6ppna popup-f\u00f6nstret",
"Rich Text Area. Press ALT-0 for help.": "Omr\u00e5de med formaterad text. Tryck p\u00e5 ALT-0 f\u00f6r hj\u00e4lp.",
"System Font": "Systemtypsnitt",
"Failed to upload image: {0}": "Kunde inte ladda upp bild: {0}",
"Failed to load plugin: {0} from url {1}": "Kunde inte l\u00e4sa in insticksprogram: {0} fr\u00e5n webbadress {1}",
"Failed to load plugin url: {0}": "Kunde inte l\u00e4sa in webbadress f\u00f6r insticksprogram: {0}",
"Failed to initialize plugin: {0}": "Kunde inte initiera insticksprogram: {0}",
"example": "exempel",
"Search": "S\u00f6k",
"All": "Alla",
"Currency": "Valuta",
"Text": "Text",
"Quotations": "Citattecken",
"Mathematical": "Matematiskt",
"Extended Latin": "Ut\u00f6kad latin",
"Symbols": "Symboler",
"Arrows": "Pilar",
"User Defined": "Anv\u00e4ndardefinierade",
"dollar sign": "dollartecken",
"currency sign": "valutatecken",
"euro-currency sign": "eurotecken",
"colon sign": "kolon",
"cruzeiro sign": "cruzeirotecken",
"french franc sign": "franctecken",
"lira sign": "liratecken",
"mill sign": "milltecken",
"naira sign": "nairatecken",
"peseta sign": "pesetastecken",
"rupee sign": "rupeetecken",
"won sign": "wontecken",
"new sheqel sign": "schekeltecken",
"dong sign": "dongtecken",
"kip sign": "kiptecken",
"tugrik sign": "tugriktecken",
"drachma sign": "drachmertecken",
"german penny symbol": "tecken f\u00f6r tysk penny",
"peso sign": "pesotecken",
"guarani sign": "guaranitecken",
"austral sign": "australtecken",
"hryvnia sign": "hryvniatecken",
"cedi sign": "ceditecken",
"livre tournois sign": "tecken f\u00f6r livre tournois",
"spesmilo sign": "spesmilotecken",
"tenge sign": "tengetecken",
"indian rupee sign": "tecken f\u00f6r indisk rupee",
"turkish lira sign": "tecken f\u00f6r turkisk lira",
"nordic mark sign": "tecken f\u00f6r nordisk mark",
"manat sign": "manattecken",
"ruble sign": "rubeltecken",
"yen character": "yentecken",
"yuan character": "yuantecken",
"yuan character, in hong kong and taiwan": "yuantecken i Hongkong och Taiwan",
"yen\/yuan character variant one": "yen-\/yuantecken variant ett",
"Loading emoticons...": "L\u00e4ser in emoticons...",
"Could not load emoticons": "Kunde inte l\u00e4sa in emoticons",
"People": "M\u00e4nniskor",
"Animals and Nature": "Djur och natur",
"Food and Drink": "Mat och dryck",
"Activity": "Aktivitet",
"Travel and Places": "Resa och platser",
"Objects": "F\u00f6rem\u00e5l",
"Flags": "Flaggor",
"Characters": "Tecken",
"Characters (no spaces)": "Tecken (inga mellanrum)",
"{0} characters": "{0} tecken",
"Error: Form submit field collision.": "Fel: Kollision f\u00e4lt f\u00f6r s\u00e4ndning av formul\u00e4r.",
"Error: No form element found.": "Fel: Inget formul\u00e4relement hittades.",
"Update": "Uppdatera",
"Color swatch": "F\u00e4rgpalett",
"Turquoise": "Turkos",
"Green": "Gr\u00f6n",
"Blue": "Bl\u00e5",
"Purple": "Lila",
"Navy Blue": "M\u00f6rkbl\u00e5",
"Dark Turquoise": "M\u00f6rkturkos",
"Dark Green": "M\u00f6rkgr\u00f6n",
"Medium Blue": "Mellanbl\u00e5",
"Medium Purple": "Mellanlila",
"Midnight Blue": "Midnattsbl\u00e5",
"Yellow": "Gul",
"Orange": "Orange",
"Red": "R\u00f6d",
"Light Gray": "Ljusgr\u00e5",
"Gray": "Gr\u00e5",
"Dark Yellow": "M\u00f6rkgul",
"Dark Orange": "M\u00f6rkorange",
"Dark Red": "M\u00f6rkr\u00f6d",
"Medium Gray": "Mellangr\u00e5",
"Dark Gray": "M\u00f6rkgr\u00e5",
"Light Green": "Ljusgr\u00f6n",
"Light Yellow": "Ljusgul",
"Light Red": "Ljusr\u00f6d",
"Light Purple": "Ljuslila",
"Light Blue": "Ljusbl\u00e5",
"Dark Purple": "M\u00f6rklila",
"Dark Blue": "M\u00f6rkbl\u00e5",
"Black": "Svart",
"White": "Vit",
"Switch to or from fullscreen mode": "V\u00e4xla till eller fr\u00e5n fullsk\u00e4rmsl\u00e4ge",
"Open help dialog": "\u00d6ppna hj\u00e4lpdialogrutan",
"history": "historik",
"styles": "stilar",
"formatting": "formatering",
"alignment": "justering",
"indentation": "indragning",
"permanent pen": "permanent penna",
"comments": "kommentarer",
"Format Painter": "H\u00e4mta format",
"Insert\/edit iframe": "Infoga\/redigera iframe",
"Capitalization": "Versaler",
"lowercase": "gemener",
"UPPERCASE": "VERSALER",
"Title Case": "Inledande versal",
"Permanent Pen Properties": "Permanenta pennegenskaper",
"Permanent pen properties...": "Permanenta pennegenskaper\u00a0\u2026",
"Font": "Teckensnitt",
"Size": "Storlek",
"More...": "Mer...",
"Spellcheck Language": "Spr\u00e5k f\u00f6r stavningskontroll",
"Select...": "V\u00e4lj...",
"Preferences": "Inst\u00e4llningar",
"Yes": "Ja",
"No": "Nej",
"Keyboard Navigation": "Tangentbordsnavigering",
"Version": "Version",
"Anchor": "Ankare",
"Special character": "Specialtecken",
"Code sample": "K\u00e5dexempel",
"Color": "F\u00e4rg",
"Emoticons": "Emoticons",
"Document properties": "Dokumentegenskaper",
"Image": "Bild",
"Insert link": "Infoga l\u00e4nk",
"Target": "M\u00e5l",
"Link": "L\u00e4nk",
"Poster": "Affish",
"Media": "Media",
"Print": "Skriv ut",
"Prev": "F\u00f6reg\u00e5ende",
"Find and replace": "S\u00f6k och ers\u00e4tt",
"Whole words": "Hela ord",
"Spellcheck": "R\u00e4ttstava",
"Caption": "Rubrik",
"Insert template": "Infoga mall"
});js/tinymce/langs/nl.js000064400000041114151727150270010713 0ustar00tinymce.addI18n('nl',{
"Redo": "Opnieuw uitvoeren",
"Undo": "Ongedaan maken",
"Cut": "Knippen",
"Copy": "Kopi\u00ebren",
"Paste": "Plakken",
"Select all": "Alles selecteren",
"New document": "Nieuw document",
"Ok": "OK",
"Cancel": "Annuleren",
"Visual aids": " Visuele hulpmiddelen",
"Bold": "Vet",
"Italic": "Cursief",
"Underline": "Onderstrepen",
"Strikethrough": "Doorhalen",
"Superscript": "Superscript",
"Subscript": "Subscript",
"Clear formatting": "Opmaak wissen",
"Align left": "Links uitlijnen",
"Align center": "Centreren",
"Align right": "Rechts uitlijnen",
"Justify": "Uitvullen",
"Bullet list": "Lijst met opsommingstekens",
"Numbered list": "Genummerde lijst",
"Decrease indent": "Inspringing verkleinen",
"Increase indent": "Inspringing vergroten",
"Close": "Sluiten",
"Formats": "Opmaken",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Jouw browser ondersteunt geen rechtstreekse toegang tot het klembord. Gebruik in plaats daarvan de sneltoetsen Ctrl+X\/C\/V.",
"Headers": "Kopteksten",
"Header 1": "Koptekst 1",
"Header 2": "Koptekst 2",
"Header 3": "Koptekst 3",
"Header 4": "Koptekst 4",
"Header 5": "Koptekst 5",
"Header 6": "Koptekst 6",
"Headings": "Koppen",
"Heading 1": "Kop 1",
"Heading 2": "Kop 2",
"Heading 3": "Kop 3",
"Heading 4": "Kop 4",
"Heading 5": "Kop 5",
"Heading 6": "Kop 6",
"Preformatted": "Vooraf opgemaakt",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "Alinea",
"Blockquote": "Blockquote",
"Inline": "Inline",
"Blocks": "Blokken",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Plakken gebeurt nu als platte tekst. Tekst wordt nu ingevoegd zonder opmaak tot deze optie uitgeschakeld wordt.",
"Fonts": "Lettertypes",
"Font Sizes": "Tekengroottes",
"Class": "Klasse",
"Browse for an image": "Afbeelding zoeken",
"OR": "OF",
"Drop an image here": "Hier een afbeelding neerzetten",
"Upload": "Uploaden",
"Block": "Blok",
"Align": "Uitlijnen",
"Default": "Standaard",
"Circle": "Cirkel",
"Disc": "Bolletje",
"Square": "Vierkant",
"Lower Alpha": "Kleine letters",
"Lower Greek": "Griekse letters",
"Lower Roman": "Romeinse cijfers klein",
"Upper Alpha": "Hoofdletters",
"Upper Roman": "Romeinse cijfers groot",
"Anchor...": "Anker...",
"Name": "Naam",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID moet beginnen met een letter, gevolgd door letters, nummers, streepjes, punten, dubbele punten of underscores.",
"You have unsaved changes are you sure you want to navigate away?": "U hebt niet alles opgeslagen bent u zeker dat u de pagina wenst te verlaten?",
"Restore last draft": "Herstel het laatste concept",
"Special character...": "Speciaal teken...",
"Source code": "Broncode",
"Insert\/Edit code sample": "Broncode invoegen\/bewerken",
"Language": "Programmeertaal",
"Code sample...": "Codevoorbeeld...",
"Color Picker": "Kleurenkiezer",
"R": "Rood",
"G": "Groen",
"B": "Blauw",
"Left to right": "Links naar rechts",
"Right to left": "Rechts naar links",
"Emoticons": "Emoticons",
"Emoticons...": "Emoticons...",
"Metadata and Document Properties": "Metadata en documenteigenschappen",
"Title": "Titel",
"Keywords": "Sleutelwoorden",
"Description": "Omschrijving",
"Robots": "Robots",
"Author": "Auteur",
"Encoding": "Codering",
"Fullscreen": "Volledig scherm",
"Action": "Actie",
"Shortcut": "Snelkoppeling",
"Help": "Help",
"Address": "Adres",
"Focus to menubar": "Menubalk selecteren",
"Focus to toolbar": "Werkbalk selecteren",
"Focus to element path": "Element pad selecteren",
"Focus to contextual toolbar": "Contextuele werkbalk selecteren",
"Insert link (if link plugin activated)": "Link invoegen (als link plug-in geactiveerd is)",
"Save (if save plugin activated)": "Opslaan (als opslaan plug-in ingeschakeld is)",
"Find (if searchreplace plugin activated)": "Zoeken (als zoeken\/vervangen plug-in ingeschakeld is)",
"Plugins installed ({0}):": "Plug-ins ge\u00efnstalleerd ({0}):",
"Premium plugins:": "Premium plug-ins:",
"Learn more...": "Leer meer...",
"You are using {0}": "Je gebruikt {0}",
"Plugins": "Plug-ins",
"Handy Shortcuts": "Handige snelkoppelingen",
"Horizontal line": "Horizontale lijn",
"Insert\/edit image": "Afbeelding invoegen\/bewerken",
"Alternative description": "Alternatieve beschrijving",
"Accessibility": "Toegankelijkheid",
"Image is decorative": "Afbeelding is decoratief",
"Source": "Bron",
"Dimensions": "Afmetingen",
"Constrain proportions": "Verhoudingen behouden",
"General": "Algemeen",
"Advanced": "Geavanceerd",
"Style": "Stijl",
"Vertical space": "Verticale ruimte",
"Horizontal space": "Horizontale ruimte",
"Border": "Rand",
"Insert image": "Afbeelding invoegen",
"Image...": "Afbeelding...",
"Image list": "Afbeeldingenlijst",
"Rotate counterclockwise": "Linksom draaien",
"Rotate clockwise": "Rechtsom draaien",
"Flip vertically": "Verticaal spiegelen",
"Flip horizontally": "Horizontaal spiegelen",
"Edit image": "Bewerk afbeelding",
"Image options": "Afbeelding opties",
"Zoom in": "Inzoomen",
"Zoom out": "Uitzoomen",
"Crop": "Uitsnijden",
"Resize": "Formaat aanpassen",
"Orientation": "Orientatie",
"Brightness": "Helderheid",
"Sharpen": "Scherpte",
"Contrast": "Contrast",
"Color levels": "Kleurniveau's",
"Gamma": "Gamma",
"Invert": "Omkeren",
"Apply": "Toepassen",
"Back": "Terug",
"Insert date\/time": "Voeg datum\/tijd in",
"Date\/time": "Datum\/tijd",
"Insert\/edit link": "Hyperlink invoegen\/bewerken",
"Text to display": "Linktekst",
"Url": "Url",
"Open link in...": "Link openen in...",
"Current window": "Huidige venster",
"None": "Geen",
"New window": "Nieuw venster",
"Open link": "Open koppeling",
"Remove link": "Link verwijderen",
"Anchors": "Anker",
"Link...": "Link...",
"Paste or type a link": "Plak of typ een link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "De ingegeven URL lijkt op een e-mailadres. Wil je er \"mailto:\" aan toevoegen?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "De ingegeven URL verwijst naar een extern adres. Wil je er \"http:\/\/\" aan toevoegen?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "De ingevoerde URL verwijst naar een extern adres. Wilt u er het vereiste voorvoegsel https:\/\/ aan toevoegen?",
"Link list": "Linklijst",
"Insert video": "Video invoegen",
"Insert\/edit video": "Video invoegen\/bewerken",
"Insert\/edit media": "Media invoegen\/bewerken",
"Alternative source": "Alternatieve bron",
"Alternative source URL": "Alternatief bron-URL",
"Media poster (Image URL)": "Mediaposter (afbeeldings-url)",
"Paste your embed code below:": "Plak u in te sluiten code hieronder:",
"Embed": "Insluiten",
"Media...": "Media...",
"Nonbreaking space": "Vaste spatie invoegen",
"Page break": "Pagina einde",
"Paste as text": "Plakken als tekst",
"Preview": "Voorbeeld",
"Print...": "Afdrukken... ",
"Save": "Opslaan",
"Find": "Zoeken",
"Replace with": "Vervangen door",
"Replace": "Vervangen",
"Replace all": "Alles vervangen",
"Previous": "Vorige",
"Next": "Volgende",
"Find and Replace": "Zoek en vervang",
"Find and replace...": "Zoeken en vervangen...",
"Could not find the specified string.": "Geen resultaten gevonden",
"Match case": "Identieke hoofd\/kleine letters",
"Find whole words only": "Alleen hele woorden zoeken",
"Find in selection": "Zoek in selectie",
"Spellcheck": "Spellingscontrole",
"Spellcheck Language": "Spellingscontrole taal",
"No misspellings found.": "Geen foute vertalingen",
"Ignore": "Negeren",
"Ignore all": "Alles negeren",
"Finish": "Einde",
"Add to Dictionary": "Toevoegen aan woordenlijst",
"Insert table": "Tabel invoegen",
"Table properties": "Tabel eigenschappen",
"Delete table": "Verwijder tabel",
"Cell": "Cel",
"Row": "Rij",
"Column": "Kolom",
"Cell properties": "Cel eigenschappen",
"Merge cells": "Cellen samenvoegen",
"Split cell": "Cel splitsen",
"Insert row before": "Voeg rij boven toe",
"Insert row after": "Voeg rij onder toe",
"Delete row": "Verwijder rij",
"Row properties": "Rij eigenschappen",
"Cut row": "Knip rij",
"Copy row": "Kopieer rij",
"Paste row before": "Plak rij boven",
"Paste row after": "Plak rij onder",
"Insert column before": "Voeg kolom in voor",
"Insert column after": "Voeg kolom in na",
"Delete column": "Verwijder kolom",
"Cols": "Kolommen",
"Rows": "Rijen",
"Width": "Breedte",
"Height": "Hoogte",
"Cell spacing": "Celruimte",
"Cell padding": "Ruimte binnen cel",
"Caption": "Onderschrift",
"Show caption": "Bijschrift weergeven",
"Left": "Links",
"Center": "Midden",
"Right": "Rechts",
"Cell type": "Celtype",
"Scope": "Bereik",
"Alignment": "Uitlijning",
"H Align": "Links uitlijnen",
"V Align": "Boven uitlijnen",
"Top": "Bovenaan",
"Middle": "Centreren",
"Bottom": "Onderaan",
"Header cell": "Kopcel",
"Row group": "Rijgroep",
"Column group": "Kolomgroep",
"Row type": "Rijtype",
"Header": "Koptekst",
"Body": "Body",
"Footer": "Voettekst",
"Border color": "Randkleur",
"Insert template...": "Sjabloon invoegen...",
"Templates": "Sjablonen",
"Template": "Sjabloon",
"Text color": "Tekstkleur",
"Background color": "Achtergrondkleur",
"Custom...": "Eigen...",
"Custom color": "Eigen kleur",
"No color": "Geen kleur",
"Remove color": "Kleur verwijderen",
"Table of Contents": "Inhoudsopgave",
"Show blocks": "Blokken tonen",
"Show invisible characters": "Onzichtbare karakters tonen",
"Word count": "Aantal woorden",
"Count": "Telling",
"Document": "Document",
"Selection": "Selectie",
"Words": "Woorden",
"Words: {0}": "Woorden: {0}",
"{0} words": "{0} woorden",
"File": "Bestand",
"Edit": "Bewerken",
"Insert": "Invoegen",
"View": "Beeld",
"Format": "Opmaak",
"Table": "Tabel",
"Tools": "Gereedschap",
"Powered by {0}": "Gemaakt door {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Druk ALT-F9 voor het menu. Druk ALT-F10 voor de toolbar. Druk ALT-0 voor help.",
"Image title": "Afbeeldingstitel",
"Border width": "Randbreedte",
"Border style": "Randstijl",
"Error": "Fout",
"Warn": "Waarschuwen",
"Valid": "Geldig",
"To open the popup, press Shift+Enter": "Druk op Shift+Enter om de pop-up te openen",
"Rich Text Area. Press ALT-0 for help.": " Gebied met opgemaakte tekst. Druk op ALT-0 voor hulp.",
"System Font": "Systeemlettertype",
"Failed to upload image: {0}": "Niet gelukt om afbeelding te uploaden: {0}",
"Failed to load plugin: {0} from url {1}": "Niet gelukt om plug-in te laden: {0} vanaf URL {1}",
"Failed to load plugin url: {0}": "Niet gelukt om URL plug-in te laden: {0}",
"Failed to initialize plugin: {0}": "Niet gelukt om plug-in te initialiseren: {0}",
"example": "voorbeeld",
"Search": "Zoeken",
"All": "Alle",
"Currency": "Valuta",
"Text": "Tekst",
"Quotations": "Citaten",
"Mathematical": "Wiskundig",
"Extended Latin": "Latijn uitgebreid ",
"Symbols": "Symbolen",
"Arrows": "Pijlen",
"User Defined": "Door gebruiker gedefinieerd ",
"dollar sign": "dollarteken",
"currency sign": "valutateken",
"euro-currency sign": "euroteken",
"colon sign": "colon-teken",
"cruzeiro sign": "cruzeiro-teken",
"french franc sign": "franse franc-teken",
"lira sign": "lire-teken",
"mill sign": "mill-teken",
"naira sign": "naira-teken",
"peseta sign": "peseta-teken",
"rupee sign": "roepie-teken",
"won sign": "won-teken",
"new sheqel sign": "nieuwe sheqel-teken",
"dong sign": "dong-teken",
"kip sign": "kip-teken",
"tugrik sign": "tugrik-teken",
"drachma sign": "drachme-teken",
"german penny symbol": "duitse pfennig-teken",
"peso sign": "peso-teken",
"guarani sign": "guarani-teken",
"austral sign": "austral-teken",
"hryvnia sign": "hryvnia-teken",
"cedi sign": "cedi-teken",
"livre tournois sign": "livre tournois-teken",
"spesmilo sign": "spesmilo-teken",
"tenge sign": "tenge-teken",
"indian rupee sign": "indiaase roepie-teken",
"turkish lira sign": "turkse lire-teken",
"nordic mark sign": "noorse mark-teken",
"manat sign": "manat-teken",
"ruble sign": "roebel-teken",
"yen character": "yen-teken",
"yuan character": "yuan-teken",
"yuan character, in hong kong and taiwan": "yuan-teken (Hong Kong en Taiwan)",
"yen\/yuan character variant one": "yen\/yuan variant 1-teken",
"Loading emoticons...": "Emoticons laden...",
"Could not load emoticons": "Kan emoticons niet laden",
"People": "Personen",
"Animals and Nature": "Dieren en natuur",
"Food and Drink": "Eten en drinken",
"Activity": "Activiteit",
"Travel and Places": "Reizen en plaatsen",
"Objects": "Objecten",
"Flags": "Vlaggen",
"Characters": "Tekens",
"Characters (no spaces)": "Tekens (geen spaties)",
"{0} characters": "{0} karakters",
"Error: Form submit field collision.": "Fout: Veldconflict bij versturen formulier.",
"Error: No form element found.": "Fout: Geen formulierelement gevonden.",
"Update": "Bijwerken",
"Color swatch": "Kleurenwaaier",
"Turquoise": "Turquoise",
"Green": "Groen",
"Blue": "Blauw",
"Purple": "Paars",
"Navy Blue": "Marineblauw",
"Dark Turquoise": "Donkerturquoise",
"Dark Green": "Donkergroen",
"Medium Blue": "Middelblauw",
"Medium Purple": "Middelpaars",
"Midnight Blue": "Middernachtblauw",
"Yellow": "Geel",
"Orange": "Oranje",
"Red": "Rood",
"Light Gray": "Lichtgrijs",
"Gray": "Grijs",
"Dark Yellow": "Donkergeel",
"Dark Orange": "Donkeroranje",
"Dark Red": "Donkerrood",
"Medium Gray": "Middelgrijs",
"Dark Gray": "Donkergrijs",
"Light Green": "Lichtgroen",
"Light Yellow": "Lichtgeel",
"Light Red": "Lichtrood",
"Light Purple": "Lichtpaars",
"Light Blue": "Lichtblauw",
"Dark Purple": "Donkerpaars",
"Dark Blue": "Donkerblauw",
"Black": "Zwart",
"White": "Wit",
"Switch to or from fullscreen mode": "Overschakelen naar of vanuit de volledig scherm-modus",
"Open help dialog": "Help-scherm openen",
"history": "geschiedenis",
"styles": "stijlen",
"formatting": "opmaak",
"alignment": "uitlijning",
"indentation": "inspringing",
"Font": "Lettertype",
"Size": "Formaat",
"More...": "Meer...",
"Select...": "Selecteer...",
"Preferences": "Voorkeuren",
"Yes": "Ja",
"No": "Nee",
"Keyboard Navigation": "Toetsenbord navigatie",
"Version": "Versie",
"Code view": "Code bekijken",
"Open popup menu for split buttons": "Open het pop-up menu voor gesplitste  knoppen",
"List Properties": "Lijsteigenschappen",
"List properties...": "Lijsteigenschappen...",
"Start list at number": "Begin lijst met nummer",
"Line height": "Lijnhoogte",
"comments": "opmerkingen",
"Format Painter": "Opmaak overnemen",
"Insert\/edit iframe": "Iframe toevoegen\/aanpassen",
"Capitalization": "Hoofdletter gebruik",
"lowercase": "kleine letters",
"UPPERCASE": "HOOFDLETTERS",
"Title Case": "Titel hoofdletter gebruik",
"permanent pen": "permanent pen",
"Permanent Pen Properties": "Permantente Pen eigenschappen",
"Permanent pen properties...": "Permantente pen eigenschappen...",
"case change": "hoofdlettergebruik veranderen",
"page embed": "pagina insluiten",
"Advanced sort...": "Geavanceerd sorteren...",
"Advanced Sort": "Geavanceerd sorteren",
"Sort table by column ascending": "Sorteer tabel per kolom in oplopende volgorde",
"Sort table by column descending": "Sorteer tabel per kolom in aflopende volgorde",
"Sort": "Sorteren",
"Order": "Volgorde",
"Sort by": "Sorteren op",
"Ascending": "Oplopend",
"Descending": "Aflopend",
"Column {0}": "Kolom {0}",
"Row {0}": "Rij {0}",
"Spellcheck...": "Spellingscontrole...",
"Misspelled word": "Fout gespeld woord",
"Suggestions": "Suggesties",
"Change": "Wijzigen",
"Finding word suggestions": "Woordsuggesties zoeken",
"Success": "Gelukt",
"Repair": "Herstellen",
"Issue {0} of {1}": "Probleem {0} van {1}",
"Images must be marked as decorative or have an alternative text description": "Afbeeldingen moeten als decoratief gemarkeerd zijn of moeten een alternatieve tekstbeschrijving hebben",
"Images must have an alternative text description. Decorative images are not allowed.": "Afbeeldingen moeten een alternatieve tekstbeschrijving hebben. Decoratieve afbeeldingen zijn niet toegelaten.",
"Or provide alternative text:": "Of geef een alternatieve tekst:",
"Make image decorative:": "Afbeelding decoratief maken:",
"ID attribute must be unique": "ID attribuut moet uniek zijn",
"Make ID unique": "ID uniek maken",
"Keep this ID and remove all others": "Dit ID behouden en alle andere verwijderen",
"Remove this ID": "Dit ID verwijderen",
"Remove all IDs": "Alle ID's verwijderen",
"Checklist": "Controlelijst",
"Anchor": "Anker",
"Special character": "Speciale karakters",
"Code sample": "Broncode voorbeeld",
"Color": "Kleur",
"Document properties": "Document eigenschappen",
"Image description": "Afbeelding omschrijving",
"Image": "Afbeelding",
"Insert link": "Hyperlink invoegen",
"Target": "Doel",
"Link": "Link",
"Poster": "Poster",
"Media": "Media",
"Print": "Print",
"Prev": "Vorige",
"Find and replace": "Zoek en vervang",
"Whole words": "Alleen hele woorden",
"Insert template": "Sjabloon invoegen"
});js/tinymce/langs/tr.js000064400000041302151727150270010726 0ustar00tinymce.addI18n('tr',{
"Redo": "Yinele",
"Undo": "Geri al",
"Cut": "Kes",
"Copy": "Kopyala",
"Paste": "Yap\u0131\u015ft\u0131r",
"Select all": "T\u00fcm\u00fcn\u00fc se\u00e7",
"New document": "Yeni dok\u00fcman",
"Ok": "Tamam",
"Cancel": "\u0130ptal",
"Visual aids": "G\u00f6rsel ara\u00e7lar",
"Bold": "Kal\u0131n",
"Italic": "\u0130talik",
"Underline": "Alt\u0131 \u00e7izili",
"Strikethrough": "\u00dcst\u00fc \u00e7izgili",
"Superscript": "\u00dcst simge",
"Subscript": "Alt simge",
"Clear formatting": "Bi\u00e7imi temizle",
"Align left": "Sola hizala",
"Align center": "Ortala",
"Align right": "Sa\u011fa hizala",
"Justify": "\u0130ki yana yasla",
"Bullet list": "S\u0131ras\u0131z liste",
"Numbered list": "S\u0131ral\u0131 liste",
"Decrease indent": "Girintiyi azalt",
"Increase indent": "Girintiyi art\u0131r",
"Close": "Kapat",
"Formats": "Bi\u00e7imler",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Taray\u0131c\u0131n\u0131z panoya direk eri\u015fimi desteklemiyor. L\u00fctfen Ctrl+X\/C\/V klavye k\u0131sayollar\u0131n\u0131 kullan\u0131n.",
"Headers": "Ba\u015fl\u0131klar",
"Header 1": "Ba\u015fl\u0131k 1",
"Header 2": "Ba\u015fl\u0131k 2",
"Header 3": "Ba\u015fl\u0131k 3",
"Header 4": "Ba\u015fl\u0131k 4",
"Header 5": "Ba\u015fl\u0131k 5",
"Header 6": "Ba\u015fl\u0131k 6",
"Headings": "Ba\u015fl\u0131klar",
"Heading 1": "Ba\u015fl\u0131k 1",
"Heading 2": "Ba\u015fl\u0131k 2",
"Heading 3": "Ba\u015fl\u0131k 3",
"Heading 4": "Ba\u015fl\u0131k 4",
"Heading 5": "Ba\u015fl\u0131k 5",
"Heading 6": "Ba\u015fl\u0131k 6",
"Preformatted": "\u00d6nceden bi\u00e7imlendirilmi\u015f",
"Div": "Div",
"Pre": "Pre",
"Code": "Kod",
"Paragraph": "Paragraf",
"Blockquote": "Blockquote",
"Inline": "Sat\u0131r i\u00e7i",
"Blocks": "Bloklar",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00fcz metin modunda yap\u0131\u015ft\u0131r. Bu se\u00e7ene\u011fi kapatana kadar i\u00e7erikler d\u00fcz metin olarak yap\u0131\u015ft\u0131r\u0131l\u0131r.",
"Fonts": "Yaz\u0131 Tipleri",
"Font Sizes": "Yaz\u0131tipi B\u00fcy\u00fckl\u00fc\u011f\u00fc",
"Class": "S\u0131n\u0131f",
"Browse for an image": "Bir resim aray\u0131n",
"OR": "VEYA",
"Drop an image here": "Buraya bir resim koyun",
"Upload": "Y\u00fckle",
"Block": "Blok",
"Align": "Hizala",
"Default": "Varsay\u0131lan",
"Circle": "Daire",
"Disc": "Disk",
"Square": "Kare",
"Lower Alpha": "K\u00fc\u00e7\u00fck Harf",
"Lower Greek": "K\u00fc\u00e7\u00fck Yunan Harfleri",
"Lower Roman": "K\u00fc\u00e7\u00fck Roman Harfleri ",
"Upper Alpha": "B\u00fcy\u00fck Harf",
"Upper Roman": "B\u00fcy\u00fck Roman Harfleri ",
"Anchor...": "\u00c7apa...",
"Name": "\u0130sim",
"Id": "Kimlik",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id bir harf ile ba\u015flamal\u0131d\u0131r ve harf, rakam, \u00e7izgi, nokta, iki nokta \u00fcst\u00fcste veya alt \u00e7izgi kullan\u0131labilir.",
"You have unsaved changes are you sure you want to navigate away?": "Kaydedilmemi\u015f de\u011fi\u015fiklikler var, sayfadan ayr\u0131lmak istedi\u011finize emin misiniz?",
"Restore last draft": "Son tasla\u011f\u0131 geri y\u00fckle",
"Special character...": "\u00d6zel karakter...",
"Source code": "Kaynak kodu",
"Insert\/Edit code sample": "\u00d6rnek kod ekle\/d\u00fczenle",
"Language": "Dil",
"Code sample...": "Kod \u00f6rne\u011fi...",
"Color Picker": "Renk Se\u00e7ici",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Soldan sa\u011fa",
"Right to left": "Sa\u011fdan sola",
"Emoticons...": "\u0130fadeler...",
"Metadata and Document Properties": "\u00d6nbilgi ve Belge \u00d6zellikleri",
"Title": "Ba\u015fl\u0131k",
"Keywords": "Anahtar kelimeler",
"Description": "A\u00e7\u0131klama",
"Robots": "Robotlar",
"Author": "Yazar",
"Encoding": "Kodlama",
"Fullscreen": "Tam ekran",
"Action": "Eylem",
"Shortcut": "K\u0131sayol",
"Help": "Yard\u0131m",
"Address": "Adres",
"Focus to menubar": "Men\u00fcye odaklan",
"Focus to toolbar": "Ara\u00e7 tak\u0131m\u0131na odaklan",
"Focus to element path": "\u00d6\u011fe yoluna odaklan",
"Focus to contextual toolbar": "Ba\u011flamsal ara\u00e7 tak\u0131m\u0131na odaklan",
"Insert link (if link plugin activated)": "Ba\u011flant\u0131 ekle (Ba\u011flant\u0131 eklentisi aktif ise)",
"Save (if save plugin activated)": "Kaydet (Kay\u0131t eklentisi aktif ise)",
"Find (if searchreplace plugin activated)": "Bul (Bul\/De\u011fi\u015ftir eklentisi aktif ise)",
"Plugins installed ({0}):": "Eklentiler y\u00fcklendi ({0}):",
"Premium plugins:": "Premium eklentiler:",
"Learn more...": "Detayl\u0131 bilgi...",
"You are using {0}": "\u015eu an {0} kullan\u0131yorsunuz",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "Yatay \u00e7izgi",
"Insert\/edit image": "Resim ekle\/d\u00fczenle",
"Image description": "Resim a\u00e7\u0131klamas\u0131",
"Source": "Kaynak",
"Dimensions": "Boyutlar",
"Constrain proportions": "Oranlar\u0131 koru",
"General": "Genel",
"Advanced": "Geli\u015fmi\u015f",
"Style": "Stil",
"Vertical space": "Dikey bo\u015fluk",
"Horizontal space": "Yatay bo\u015fluk",
"Border": "Kenarl\u0131k",
"Insert image": "Resim ekle",
"Image...": "Resim...",
"Image list": "G\u00f6rsel listesi",
"Rotate counterclockwise": "Saatin tersi y\u00f6n\u00fcnde d\u00f6nd\u00fcr",
"Rotate clockwise": "Saat y\u00f6n\u00fcnde d\u00f6nd\u00fcr",
"Flip vertically": "Dikine \u00e7evir",
"Flip horizontally": "Enine \u00e7evir",
"Edit image": "Resmi d\u00fczenle",
"Image options": "Resim ayarlar\u0131",
"Zoom in": "Yak\u0131nla\u015ft\u0131r",
"Zoom out": "Uzakla\u015ft\u0131r",
"Crop": "K\u0131rp",
"Resize": "Yeniden Boyutland\u0131r",
"Orientation": "Oryantasyon",
"Brightness": "Parlakl\u0131k",
"Sharpen": "Keskinle\u015ftir",
"Contrast": "Kontrast",
"Color levels": "Renk d\u00fczeyleri",
"Gamma": "Gama",
"Invert": "Ters \u00c7evir",
"Apply": "Uygula",
"Back": "Geri",
"Insert date\/time": "Tarih\/saat ekle",
"Date\/time": "Tarih\/saat",
"Insert\/Edit Link": "Ba\u011flant\u0131 Ekle\/D\u00fczenle",
"Insert\/edit link": "Ba\u011flant\u0131 ekle\/d\u00fczenle",
"Text to display": "Yaz\u0131y\u0131 g\u00f6r\u00fcnt\u00fcle",
"Url": "Url",
"Open link in...": "Ba\u011flant\u0131y\u0131 a\u00e7...",
"Current window": "Mevcut pencere",
"None": "Hi\u00e7biri",
"New window": "Yeni pencere",
"Remove link": "Ba\u011flant\u0131y\u0131 kald\u0131r",
"Anchors": "\u00c7apalar",
"Link...": "Ba\u011flant\u0131...",
"Paste or type a link": "Bir ba\u011flant\u0131 yaz\u0131n yada yap\u0131\u015ft\u0131r\u0131n",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Girdi\u011finiz URL bir e-posta adresi gibi g\u00f6r\u00fcn\u00fcyor. Gerekli olan mailto: \u00f6nekini eklemek ister misiniz?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Girdi\u011finiz URL bir d\u0131\u015f ba\u011flant\u0131 gibi g\u00f6r\u00fcn\u00fcyor. Gerekli olan http:\/\/ \u00f6nekini eklemek ister misiniz?",
"Link list": "Ba\u011flant\u0131 listesi",
"Insert video": "Video ekle",
"Insert\/edit video": "Video ekle\/d\u00fczenle",
"Insert\/edit media": "Medya ekle\/d\u00fczenle",
"Alternative source": "Alternatif kaynak",
"Alternative source URL": "Alternatif kaynak URL",
"Media poster (Image URL)": "Medya posteri (Resim URL)",
"Paste your embed code below:": "Video g\u00f6mme kodunu a\u015fa\u011f\u0131ya yap\u0131\u015ft\u0131r\u0131n\u0131z:",
"Embed": "G\u00f6mme",
"Media...": "Medya...",
"Nonbreaking space": "B\u00f6l\u00fcnemez bo\u015fluk",
"Page break": "Sayfa sonu",
"Paste as text": "Metin olarak yap\u0131\u015ft\u0131r",
"Preview": "\u00d6nizleme",
"Print...": "Yazd\u0131r...",
"Save": "Kaydet",
"Find": "Bul",
"Replace with": "Bununla de\u011fi\u015ftir",
"Replace": "De\u011fi\u015ftir",
"Replace all": "T\u00fcm\u00fcn\u00fc de\u011fi\u015ftir",
"Previous": "Geri",
"Next": "Sonraki",
"Find and replace...": "Bul ve de\u011fi\u015ftir...",
"Could not find the specified string.": "Herhangi bir sonu\u00e7 bulunamad\u0131.",
"Match case": "B\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131",
"Find whole words only": "Sadece t\u00fcm kelimeyi ara",
"Spell check": "Yaz\u0131m denetimi",
"Ignore": "Yoksay",
"Ignore all": "T\u00fcm\u00fcn\u00fc yoksay",
"Finish": "Bitir",
"Add to Dictionary": "S\u00f6zl\u00fc\u011fe Ekle",
"Insert table": "Tablo ekle",
"Table properties": "Tablo \u00f6zellikleri",
"Delete table": "Tablo sil",
"Cell": "H\u00fccre",
"Row": "Sat\u0131r",
"Column": "S\u00fctun",
"Cell properties": "H\u00fccre \u00f6zellikleri",
"Merge cells": "H\u00fccreleri birle\u015ftir",
"Split cell": "H\u00fccre b\u00f6l",
"Insert row before": "\u00dcste sat\u0131r ekle",
"Insert row after": "Alta sat\u0131r ekle ",
"Delete row": "Sat\u0131r sil",
"Row properties": "Sat\u0131r \u00f6zellikleri",
"Cut row": "Sat\u0131r\u0131 kes",
"Copy row": "Sat\u0131r\u0131 kopyala",
"Paste row before": "\u00dcste sat\u0131r yap\u0131\u015ft\u0131r",
"Paste row after": "Alta sat\u0131r yap\u0131\u015ft\u0131r",
"Insert column before": "Sola s\u00fctun ekle",
"Insert column after": "Sa\u011fa s\u00fctun ekle",
"Delete column": "S\u00fctun sil",
"Cols": "S\u00fctunlar",
"Rows": "Sat\u0131rlar",
"Width": "Geni\u015flik",
"Height": "Y\u00fckseklik",
"Cell spacing": "H\u00fccre aral\u0131\u011f\u0131",
"Cell padding": "H\u00fccre dolgusu",
"Show caption": "Ba\u015fl\u0131\u011f\u0131 g\u00f6ster",
"Left": "Sol",
"Center": "Orta",
"Right": "Sa\u011f",
"Cell type": "H\u00fccre tipi",
"Scope": "Kapsam",
"Alignment": "Hizalama",
"H Align": "Yatay Hizalama",
"V Align": "Dikey Hizalama",
"Top": "\u00dcst",
"Middle": "Orta",
"Bottom": "Alt",
"Header cell": "Ba\u015fl\u0131k h\u00fccresi",
"Row group": "Sat\u0131r grubu",
"Column group": "S\u00fctun grubu",
"Row type": "Sat\u0131r tipi",
"Header": "Ba\u015fl\u0131k",
"Body": "G\u00f6vde",
"Footer": "Alt",
"Border color": "Kenarl\u0131k rengi",
"Insert template...": "\u015eablon ekle...",
"Templates": "\u015eablonlar",
"Template": "Taslak",
"Text color": "Yaz\u0131 rengi",
"Background color": "Arka plan rengi",
"Custom...": "\u00d6zel...",
"Custom color": "\u00d6zel renk",
"No color": "Renk yok",
"Remove color": "Rengi kald\u0131r",
"Table of Contents": "\u0130\u00e7erik tablosu",
"Show blocks": "Bloklar\u0131 g\u00f6ster",
"Show invisible characters": "G\u00f6r\u00fcnmez karakterleri g\u00f6ster",
"Word count": "Kelime say\u0131s\u0131",
"Count": "Say\u0131m",
"Document": "Belge",
"Selection": "Se\u00e7im",
"Words": "S\u00f6zc\u00fck",
"Words: {0}": "Kelime: {0}",
"{0} words": "{0} words",
"File": "Dosya",
"Edit": "D\u00fczenle",
"Insert": "Ekle",
"View": "G\u00f6r\u00fcn\u00fcm",
"Format": "Bi\u00e7im",
"Table": "Tablo",
"Tools": "Ara\u00e7lar",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zengin Metin Alan\u0131. Men\u00fc i\u00e7in ALT-F9 tu\u015funa bas\u0131n\u0131z. Ara\u00e7 \u00e7ubu\u011fu i\u00e7in ALT-F10 tu\u015funa bas\u0131n\u0131z. Yard\u0131m i\u00e7in ALT-0 tu\u015funa bas\u0131n\u0131z.",
"Image title": "Resim ba\u015fl\u0131\u011f\u0131",
"Border width": "Kenar geni\u015fli\u011fi",
"Border style": "Kenar sitili",
"Error": "Hata",
"Warn": "Uyar\u0131",
"Valid": "Ge\u00e7erli",
"To open the popup, press Shift+Enter": "Popup'\u0131 a\u00e7mak i\u00e7in Shift+Enter'a bas\u0131n",
"Rich Text Area. Press ALT-0 for help.": "Zengin Metin Alan\u0131. Yard\u0131m i\u00e7in Alt-0'a bas\u0131n.",
"System Font": "Sistem Yaz\u0131 Tipi",
"Failed to upload image: {0}": "Resim y\u00fcklenemedi: {0}",
"Failed to load plugin: {0} from url {1}": "Eklenti y\u00fcklenemedi: {1} url\u2019sinden {0}",
"Failed to load plugin url: {0}": "Url eklentisi y\u00fcklenemedi: {0}",
"Failed to initialize plugin: {0}": "Eklenti ba\u015flat\u0131lamad\u0131: {0}",
"example": "\u00f6rnek",
"Search": "Ara",
"All": "T\u00fcm\u00fc",
"Currency": "Para birimi",
"Text": "Metin",
"Quotations": "Al\u0131nt\u0131",
"Mathematical": "Matematik",
"Extended Latin": "Uzat\u0131lm\u0131\u015f Latin",
"Symbols": "Semboller",
"Arrows": "Oklar",
"User Defined": "Kullan\u0131c\u0131 Tan\u0131ml\u0131",
"dollar sign": "dolar i\u015fareti",
"currency sign": "para birimi i\u015fareti",
"euro-currency sign": "euro para birimi i\u015fareti",
"colon sign": "colon i\u015fareti",
"cruzeiro sign": "cruzeiro i\u015fareti",
"french franc sign": "frans\u0131z frang\u0131 i\u015fareti",
"lira sign": "lira i\u015fareti",
"mill sign": "mill i\u015fareti",
"naira sign": "naira i\u015fareti",
"peseta sign": "peseta i\u015fareti",
"rupee sign": "rupi i\u015fareti",
"won sign": "won i\u015fareti",
"new sheqel sign": "yeni \u015fekel i\u015fareti",
"dong sign": "dong i\u015fareti",
"kip sign": "kip i\u015fareti",
"tugrik sign": "tugrik i\u015fareti",
"drachma sign": "drahma i\u015fareti",
"german penny symbol": "alman kuru\u015f sembol\u00fc",
"peso sign": "peso i\u015fareti",
"guarani sign": "guarani i\u015fareti",
"austral sign": "austral i\u015fareti",
"hryvnia sign": "hrivniya i\u015fareti",
"cedi sign": "cedi i\u015fareti",
"livre tournois sign": "livre tournois i\u015fareti",
"spesmilo sign": "spesmilo i\u015fareti",
"tenge sign": "tenge i\u015fareti",
"indian rupee sign": "hindistan rupisi i\u015fareti",
"turkish lira sign": "t\u00fcrk liras\u0131 i\u015fareti",
"nordic mark sign": "nordic i\u015fareti",
"manat sign": "manat i\u015fareti",
"ruble sign": "ruble i\u015fareti",
"yen character": "yen karakteri",
"yuan character": "yuan karakteri",
"yuan character, in hong kong and taiwan": "yuan karakteri, hong kong ve tayvan'da kullan\u0131lan",
"yen\/yuan character variant one": "yen\/yuan karakter de\u011fi\u015fkeni",
"Loading emoticons...": "\u0130fadeler y\u00fckleniyor...",
"Could not load emoticons": "\u0130fadeler y\u00fcklenemedi",
"People": "\u0130nsan",
"Animals and Nature": "Hayvanlar ve Do\u011fa",
"Food and Drink": "Yiyecek ve \u0130\u00e7ecek",
"Activity": "Etkinlik",
"Travel and Places": "Gezi ve Yerler",
"Objects": "Nesneler",
"Flags": "Bayraklar",
"Characters": "Karakter",
"Characters (no spaces)": "Karakter (bo\u015fluksuz)",
"{0} characters": "{0} karakter",
"Error: Form submit field collision.": "Hata: Form g\u00f6nderme alan\u0131 \u00e7at\u0131\u015fmas\u0131.",
"Error: No form element found.": "Hata: Form eleman\u0131 bulunamad\u0131.",
"Update": "G\u00fcncelle\u015ftir",
"Color swatch": "Renk \u00f6rne\u011fi",
"Turquoise": "Turkuaz",
"Green": "Ye\u015fil",
"Blue": "Mavi",
"Purple": "Mor",
"Navy Blue": "Lacivert",
"Dark Turquoise": "Koyu Turkuaz",
"Dark Green": "Koyu Ye\u015fil",
"Medium Blue": "Donuk Mavi",
"Medium Purple": "Orta Mor",
"Midnight Blue": "Gece Yar\u0131s\u0131 Mavisi",
"Yellow": "Sar\u0131",
"Orange": "Turuncu",
"Red": "K\u0131rm\u0131z\u0131",
"Light Gray": "A\u00e7\u0131k Gri",
"Gray": "Gri",
"Dark Yellow": "Koyu Sar\u0131",
"Dark Orange": "Koyu Turuncu",
"Dark Red": "Koyu K\u0131rm\u0131z\u0131",
"Medium Gray": "Orta Gri",
"Dark Gray": "Koyu Gri",
"Light Green": "A\u00e7\u0131k Ye\u015fil",
"Light Yellow": "A\u00e7\u0131k Sar\u0131",
"Light Red": "A\u00e7\u0131k K\u0131rm\u0131z\u0131",
"Light Purple": "A\u00e7\u0131k Mor",
"Light Blue": "A\u00e7\u0131k Mavi",
"Dark Purple": "Koyu Mor",
"Dark Blue": "Lacivert",
"Black": "Siyah",
"White": "Beyaz",
"Switch to or from fullscreen mode": "Tam ekran moduna ge\u00e7 veya \u00e7\u0131k",
"Open help dialog": "Yard\u0131m penceresini a\u00e7",
"history": "ge\u00e7mi\u015f",
"styles": "stiller",
"formatting": "bi\u00e7imlendirme",
"alignment": "hizalanma",
"indentation": "girinti",
"permanent pen": "kal\u0131c\u0131 kalem",
"comments": "yorumlar",
"Format Painter": "Bi\u00e7im Boyac\u0131s\u0131",
"Insert\/edit iframe": "\u0130frame ekle\/d\u00fczenle",
"Capitalization": "B\u00fcy\u00fck Harfle Yaz\u0131m",
"lowercase": "k\u00fc\u00e7\u00fck harf",
"UPPERCASE": "B\u00dcY\u00dcK HARF",
"Title Case": "\u0130lk Harfler B\u00fcy\u00fck",
"Permanent Pen Properties": "Kal\u0131c\u0131 Kalem \u00d6zellikleri",
"Permanent pen properties...": "Kal\u0131c\u0131 kalem \u00f6zellikleri...",
"Font": "Yaz\u0131 Tipi",
"Size": "Boyut",
"More...": "Devam\u0131...",
"Spellcheck Language": "Yaz\u0131m Denetimi Dili",
"Select...": "Se\u00e7...",
"Preferences": "Tercihler",
"Yes": "Evet",
"No": "Hay\u0131r",
"Keyboard Navigation": "Klavye Tu\u015flar\u0131",
"Version": "S\u00fcr\u00fcm",
"Anchor": "\u00c7apa",
"Special character": "\u00d6zel karakter",
"Code sample": "Code sample",
"Color": "Renk",
"Emoticons": "\u0130fadeler",
"Document properties": "Dok\u00fcman \u00f6zellikleri",
"Image": "Resim",
"Insert link": "Ba\u011flant\u0131 ekle",
"Target": "Hedef",
"Link": "Ba\u011flant\u0131",
"Poster": "Poster",
"Media": "Medya",
"Print": "Yazd\u0131r",
"Prev": "\u00d6nceki",
"Find and replace": "Bul ve de\u011fi\u015ftir",
"Whole words": "Tam kelimeler",
"Spellcheck": "Yaz\u0131m denetimi",
"Caption": "Ba\u015fl\u0131k",
"Insert template": "\u015eablon ekle"
});js/tinymce/langs/en_GB.js000064400000020563151727150270011261 0ustar00tinymce.addI18n('en_GB',{
"Redo": "Redo",
"Undo": "Undo",
"Cut": "Cut",
"Copy": "Copy",
"Paste": "Paste",
"Select all": "Select all",
"New document": "New document",
"Ok": "Ok",
"Cancel": "Cancel",
"Visual aids": "Visual aids",
"Bold": "Bold",
"Italic": "Italic",
"Underline": "Underline",
"Strikethrough": "Strike-through",
"Superscript": "Superscript",
"Subscript": "Subscript",
"Clear formatting": "Clear formatting",
"Align left": "Align left",
"Align center": "Align centre",
"Align right": "Align right",
"Justify": "Justify",
"Bullet list": "Bullet list",
"Numbered list": "Numbered list",
"Decrease indent": "Decrease indent",
"Increase indent": "Increase indent",
"Close": "Close",
"Formats": "Formats",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
"Headers": "Headers",
"Header 1": "Header 1",
"Header 2": "Header 2",
"Header 3": "Header 3",
"Header 4": "Header 4",
"Header 5": "Header 5",
"Header 6": "Header 6",
"Headings": "Headings",
"Heading 1": "Heading 1",
"Heading 2": "Heading 2",
"Heading 3": "Heading 3",
"Heading 4": "Heading 4",
"Heading 5": "Heading 5",
"Heading 6": "Heading 6",
"Preformatted": "Preformatted",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "Paragraph",
"Blockquote": "Blockquote",
"Inline": "Inline",
"Blocks": "Blocks",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
"Font Family": "Font Family",
"Font Sizes": "Font Sizes",
"Class": "Class",
"Browse for an image": "Browse for an image",
"OR": "OR",
"Drop an image here": "Drop an image here",
"Upload": "Upload",
"Block": "Block",
"Align": "Align",
"Default": "Default",
"Circle": "Circle",
"Disc": "Disc",
"Square": "Square",
"Lower Alpha": "Lower Alpha",
"Lower Greek": "Lower Greek",
"Lower Roman": "Lower Roman",
"Upper Alpha": "Upper Alpha",
"Upper Roman": "Upper Roman",
"Anchor": "Anchor",
"Name": "Name",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.",
"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
"Restore last draft": "Restore last draft",
"Special character": "Special character",
"Source code": "Source code",
"Insert\/Edit code sample": "Insert\/Edit code sample",
"Language": "Language",
"Code sample": "Code sample",
"Color": "Colour",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Left to right",
"Right to left": "Right to left",
"Emoticons": "Emoticons",
"Document properties": "Document properties",
"Title": "Title",
"Keywords": "Keywords",
"Description": "Description",
"Robots": "Robots",
"Author": "Author",
"Encoding": "Encoding",
"Fullscreen": "Full-screen",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "Horizontal line",
"Insert\/edit image": "Insert\/edit image",
"Image description": "Image description",
"Source": "Source",
"Dimensions": "Dimensions",
"Constrain proportions": "Constrain proportions",
"General": "General",
"Advanced": "Advanced",
"Style": "Style",
"Vertical space": "Vertical space",
"Horizontal space": "Horizontal space",
"Border": "Border",
"Insert image": "Insert image",
"Image": "Image",
"Image list": "Image list",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Colour levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "Insert date\/time",
"Date\/time": "Date\/time",
"Insert link": "Insert link",
"Insert\/edit link": "Insert\/edit link",
"Text to display": "Text to display",
"Url": "URL",
"Target": "Target",
"None": "None",
"New window": "New window",
"Remove link": "Remove link",
"Anchors": "Anchors",
"Link": "Link",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
"Link list": "Link list",
"Insert video": "Insert video",
"Insert\/edit video": "Insert\/edit video",
"Insert\/edit media": "Insert\/edit media",
"Alternative source": "Alternative source",
"Poster": "Poster",
"Paste your embed code below:": "Paste your embed code below:",
"Embed": "Embed",
"Media": "Media",
"Nonbreaking space": "Non-breaking space",
"Page break": "Page break",
"Paste as text": "Paste as text",
"Preview": "Preview",
"Print": "Print",
"Save": "Save",
"Find": "Find",
"Replace with": "Replace with",
"Replace": "Replace",
"Replace all": "Replace all",
"Prev": "Prev",
"Next": "Next",
"Find and replace": "Find and replace",
"Could not find the specified string.": "Could not find the specified string.",
"Match case": "Match case",
"Whole words": "Whole words",
"Spellcheck": "Spell-check",
"Ignore": "Ignore",
"Ignore all": "Ignore all",
"Finish": "Finish",
"Add to Dictionary": "Add to Dictionary",
"Insert table": "Insert table",
"Table properties": "Table properties",
"Delete table": "Delete table",
"Cell": "Cell",
"Row": "Row",
"Column": "Column",
"Cell properties": "Cell properties",
"Merge cells": "Merge cells",
"Split cell": "Split cell",
"Insert row before": "Insert row before",
"Insert row after": "Insert row after",
"Delete row": "Delete row",
"Row properties": "Row properties",
"Cut row": "Cut row",
"Copy row": "Copy row",
"Paste row before": "Paste row before",
"Paste row after": "Paste row after",
"Insert column before": "Insert column before",
"Insert column after": "Insert column after",
"Delete column": "Delete column",
"Cols": "Cols",
"Rows": "Rows",
"Width": "Width",
"Height": "Height",
"Cell spacing": "Cell spacing",
"Cell padding": "Cell padding",
"Caption": "Caption",
"Left": "Left",
"Center": "Centre",
"Right": "Right",
"Cell type": "Cell type",
"Scope": "Scope",
"Alignment": "Alignment",
"H Align": "H Align",
"V Align": "V Align",
"Top": "Top",
"Middle": "Middle",
"Bottom": "Bottom",
"Header cell": "Header cell",
"Row group": "Row group",
"Column group": "Column group",
"Row type": "Row type",
"Header": "Header",
"Body": "Body",
"Footer": "Footer",
"Border color": "Border colour",
"Insert template": "Insert template",
"Templates": "Templates",
"Template": "Template",
"Text color": "Text colour",
"Background color": "Background colour",
"Custom...": "Custom...",
"Custom color": "Custom colour",
"No color": "No colour",
"Table of Contents": "Table of Contents",
"Show blocks": "Show blocks",
"Show invisible characters": "Show invisible characters",
"Words: {0}": "Words: {0}",
"{0} words": "{0} words",
"File": "File",
"Edit": "Edit",
"Insert": "Insert",
"View": "View",
"Format": "Format",
"Table": "Table",
"Tools": "Tools",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"
});js/tinymce/langs/de.js000064400000043325151727150270010700 0ustar00tinymce.addI18n('de',{
"Redo": "Wiederholen",
"Undo": "R\u00fcckg\u00e4ngig machen",
"Cut": "Ausschneiden",
"Copy": "Kopieren",
"Paste": "Einf\u00fcgen",
"Select all": "Alles ausw\u00e4hlen",
"New document": "Neues Dokument",
"Ok": "Ok",
"Cancel": "Abbrechen",
"Visual aids": "Visuelle Hilfen",
"Bold": "Fett",
"Italic": "Kursiv",
"Underline": "Unterstrichen",
"Strikethrough": "Durchgestrichen",
"Superscript": "Hochgestellt",
"Subscript": "Tiefgestellt",
"Clear formatting": "Formatierung entfernen",
"Align left": "Linksb\u00fcndig ausrichten",
"Align center": "Zentrieren",
"Align right": "Rechtsb\u00fcndig ausrichten",
"Justify": "Blocksatz",
"Bullet list": "Aufz\u00e4hlung",
"Numbered list": "Nummerierte Liste",
"Decrease indent": "Einzug verkleinern",
"Increase indent": "Einzug vergr\u00f6\u00dfern",
"Close": "Schlie\u00dfen",
"Formats": "Formate",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Tastenkombinationen Strg+X\/C\/V.",
"Headers": "\u00dcberschriften",
"Header 1": "\u00dcberschrift 1",
"Header 2": "\u00dcberschrift 2",
"Header 3": "\u00dcberschrift 3",
"Header 4": "\u00dcberschrift 4",
"Header 5": "\u00dcberschrift 5",
"Header 6": "\u00dcberschrift 6",
"Headings": "\u00dcberschriften",
"Heading 1": "Kopfzeile 1",
"Heading 2": "Kopfzeile 2",
"Heading 3": "Kopfzeile 3",
"Heading 4": "Kopfzeile 4",
"Heading 5": "Kopfzeile 5",
"Heading 6": "Kopfzeile 6",
"Preformatted": "Vorformatiert",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "Absatz",
"Blockquote": "Blockquote",
"Inline": "Zeichenformate",
"Blocks": "Bl\u00f6cke",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
"Fonts": "Schriftarten",
"Font Sizes": "Schriftgr\u00f6\u00dfe",
"Class": "Klasse",
"Browse for an image": "Bild...",
"OR": "ODER",
"Drop an image here": "Bild hier ablegen",
"Upload": "Hochladen",
"Block": "Blocksatz",
"Align": "Ausrichten",
"Default": "Standard",
"Circle": "Kreis",
"Disc": "Punkt",
"Square": "Quadrat",
"Lower Alpha": "Kleinbuchstaben",
"Lower Greek": "Griechische Kleinbuchstaben",
"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
"Upper Alpha": "Gro\u00dfbuchstaben",
"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
"Anchor...": "Textmarke",
"Name": "Name",
"Id": "Kennung",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.",
"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
"Restore last draft": "Letzten Entwurf wiederherstellen",
"Special character...": "Sonderzeichen...",
"Source code": "Quelltext",
"Insert\/Edit code sample": "Codebeispiel einf\u00fcgen\/bearbeiten",
"Language": "Sprache",
"Code sample...": "Codebeispiel...",
"Color Picker": "Farbwahl",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Von links nach rechts",
"Right to left": "Von rechts nach links",
"Emoticons": "Emoticons",
"Emoticons...": "Emoticons...",
"Metadata and Document Properties": "Dokument-Eigenschaften und -Metadaten",
"Title": "Titel",
"Keywords": "Sch\u00fcsselw\u00f6rter",
"Description": "Beschreibung",
"Robots": "Robots",
"Author": "Verfasser",
"Encoding": "Zeichenkodierung",
"Fullscreen": "Vollbild",
"Action": "Aktion",
"Shortcut": "Shortcut",
"Help": "Hilfe",
"Address": "Adresse",
"Focus to menubar": "Fokus auf Men\u00fcleiste",
"Focus to toolbar": "Fokus auf Werkzeugleiste",
"Focus to element path": "Fokus auf Elementpfad",
"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste",
"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Link-Plugin aktiviert ist)",
"Save (if save plugin activated)": "Speichern (wenn Save-Plugin aktiviert ist)",
"Find (if searchreplace plugin activated)": "Suchen einf\u00fcgen (wenn Suchen\/Ersetzen-Plugin aktiviert ist)",
"Plugins installed ({0}):": "installierte Plugins ({0}):",
"Premium plugins:": "Premium Plugins:",
"Learn more...": "Erfahren Sie mehr dazu...",
"You are using {0}": "Sie verwenden {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Praktische Tastenkombinationen",
"Horizontal line": "Horizontale Linie",
"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
"Alternative description": "Alternative Beschreibung",
"Accessibility": "Barrierefreiheit",
"Image is decorative": "Bild ist dekorativ",
"Source": "Quelle",
"Dimensions": "Abmessungen",
"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
"General": "Allgemein",
"Advanced": "Erweitert",
"Style": "Stil",
"Vertical space": "Vertikaler Abstand",
"Horizontal space": "Horizontaler Abstand",
"Border": "Rahmen",
"Insert image": "Bild einf\u00fcgen",
"Image...": "Bild...",
"Image list": "Bildliste",
"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
"Rotate clockwise": "Im Uhrzeigersinn drehen",
"Flip vertically": "Vertikal spiegeln",
"Flip horizontally": "Horizontal spiegeln",
"Edit image": "Bild bearbeiten",
"Image options": "Bildeigenschaften",
"Zoom in": "Ansicht vergr\u00f6\u00dfern",
"Zoom out": "Ansicht verkleinern",
"Crop": "Bescheiden",
"Resize": "Skalieren",
"Orientation": "Ausrichtung",
"Brightness": "Helligkeit",
"Sharpen": "Sch\u00e4rfen",
"Contrast": "Kontrast",
"Color levels": "Farbwerte",
"Gamma": "Gamma",
"Invert": "Invertieren",
"Apply": "Anwenden",
"Back": "Zur\u00fcck",
"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
"Date\/time": "Datum\/Uhrzeit",
"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
"Text to display": "Anzuzeigender Text",
"Url": "URL",
"Open link in...": "Link \u00f6ffnen in...",
"Current window": "Aktuelles Fenster",
"None": "Keine",
"New window": "Neues Fenster",
"Open link": "Link \u00f6ffnen",
"Remove link": "Link entfernen",
"Anchors": "Textmarken",
"Link...": "Link...",
"Paste or type a link": "Link einf\u00fcgen oder eintippen",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Die eingegebene URL scheint ein externer Link zu sein. Soll das fehlende https:\/\/ davor erg\u00e4nzt werden?",
"Link list": "Linkliste",
"Insert video": "Video einf\u00fcgen",
"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten",
"Alternative source": "Alternative Quelle",
"Alternative source URL": "URL der alternativen Quelle",
"Media poster (Image URL)": "Medienposter (Bild-URL)",
"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
"Embed": "Einbetten",
"Media...": "Medien...",
"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
"Page break": "Seitenumbruch",
"Paste as text": "Als Text einf\u00fcgen",
"Preview": "Vorschau",
"Print...": "Drucken...",
"Save": "Speichern",
"Find": "Suchen",
"Replace with": "Ersetzen durch",
"Replace": "Ersetzen",
"Replace all": "Alles ersetzen",
"Previous": "Vorherige",
"Next": "Weiter",
"Find and Replace": "Suchen und Ersetzen",
"Find and replace...": "Suchen und ersetzen...",
"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
"Match case": "Gro\u00df-\/Kleinschreibung beachten",
"Find whole words only": "Nur ganze W\u00f6rter suchen",
"Find in selection": "In Auswahl suchen",
"Spellcheck": "Rechtschreibpr\u00fcfung",
"Spellcheck Language": "Sprache f\u00fcr die Rechtschreibpr\u00fcfung",
"No misspellings found.": "Keine Rechtschreibfehler gefunden",
"Ignore": "Ignorieren",
"Ignore all": "Alles Ignorieren",
"Finish": "Ende",
"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
"Insert table": "Tabelle einf\u00fcgen",
"Table properties": "Tabelleneigenschaften",
"Delete table": "Tabelle l\u00f6schen",
"Cell": "Zelle",
"Row": "Zeile",
"Column": "Spalte",
"Cell properties": "Zelleneigenschaften",
"Merge cells": "Zellen verbinden",
"Split cell": "Zelle aufteilen",
"Insert row before": "Neue Zeile davor einf\u00fcgen ",
"Insert row after": "Neue Zeile danach einf\u00fcgen",
"Delete row": "Zeile l\u00f6schen",
"Row properties": "Zeileneigenschaften",
"Cut row": "Zeile ausschneiden",
"Copy row": "Zeile kopieren",
"Paste row before": "Zeile davor einf\u00fcgen",
"Paste row after": "Zeile danach einf\u00fcgen",
"Insert column before": "Neue Spalte davor einf\u00fcgen",
"Insert column after": "Neue Spalte danach einf\u00fcgen",
"Delete column": "Spalte l\u00f6schen",
"Cols": "Spalten",
"Rows": "Zeilen",
"Width": "Breite",
"Height": "H\u00f6he",
"Cell spacing": "Zellenabstand",
"Cell padding": "Zelleninnenabstand",
"Caption": "Beschriftung",
"Show caption": "Beschriftung anzeigen",
"Left": "Linksb\u00fcndig",
"Center": "Zentriert",
"Right": "Rechtsb\u00fcndig",
"Cell type": "Zellentyp",
"Scope": "G\u00fcltigkeitsbereich",
"Alignment": "Ausrichtung",
"H Align": "Horizontale Ausrichtung",
"V Align": "Vertikale Ausrichtung",
"Top": "Oben",
"Middle": "Mitte",
"Bottom": "Unten",
"Header cell": "Kopfzelle",
"Row group": "Zeilengruppe",
"Column group": "Spaltengruppe",
"Row type": "Zeilentyp",
"Header": "Kopfzeile",
"Body": "Inhalt",
"Footer": "Fu\u00dfzeile",
"Border color": "Rahmenfarbe",
"Insert template...": "Vorlage einf\u00fcgen...",
"Templates": "Vorlagen",
"Template": "Vorlage",
"Text color": "Textfarbe",
"Background color": "Hintergrundfarbe",
"Custom...": "Benutzerdefiniert...",
"Custom color": "Benutzerdefinierte Farbe",
"No color": "Keine Farbe",
"Remove color": "Farbauswahl aufheben",
"Table of Contents": "Inhaltsverzeichnis",
"Show blocks": "Bl\u00f6cke anzeigen",
"Show invisible characters": "Unsichtbare Zeichen anzeigen",
"Word count": "Anzahl der W\u00f6rter",
"Count": "Anzahl",
"Document": "Dokument",
"Selection": "Auswahl",
"Words": "W\u00f6rter",
"Words: {0}": "W\u00f6rter: {0}",
"{0} words": "{0} W\u00f6rter",
"File": "Datei",
"Edit": "Bearbeiten",
"Insert": "Einf\u00fcgen",
"View": "Ansicht",
"Format": "Format",
"Table": "Tabelle",
"Tools": "Werkzeuge",
"Powered by {0}": "Betrieben von {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
"Image title": "Bildtitel",
"Border width": "Rahmenbreite",
"Border style": "Rahmenstil",
"Error": "Fehler",
"Warn": "Warnung",
"Valid": "G\u00fcltig",
"To open the popup, press Shift+Enter": "Dr\u00fccken Sie Umschalt+Eingabe, um das Popup-Fenster zu \u00f6ffnen.",
"Rich Text Area. Press ALT-0 for help.": "Rich-Text-Bereich. Dr\u00fccken Sie Alt+0 f\u00fcr Hilfe.",
"System Font": "Betriebssystemschriftart",
"Failed to upload image: {0}": "Bild konnte nicht hochgeladen werden: {0}",
"Failed to load plugin: {0} from url {1}": "Plugin konnte nicht geladen werden: {0} von URL {1}",
"Failed to load plugin url: {0}": "Plugin-URL konnte nicht geladen werden: {0}",
"Failed to initialize plugin: {0}": "Plugin konnte nicht initialisiert werden: {0}",
"example": "Beispiel",
"Search": "Suchen",
"All": "Alles",
"Currency": "W\u00e4hrung",
"Text": "Text",
"Quotations": "Anf\u00fchrungszeichen",
"Mathematical": "Mathematisch",
"Extended Latin": "Erweitertes Latein",
"Symbols": "Symbole",
"Arrows": "Pfeile",
"User Defined": "Benutzerdefiniert",
"dollar sign": "Dollarzeichen",
"currency sign": "W\u00e4hrungssymbol",
"euro-currency sign": "Eurozeichen",
"colon sign": "Doppelpunkt",
"cruzeiro sign": "Cruzeirozeichen",
"french franc sign": "Franczeichen",
"lira sign": "Lirezeichen",
"mill sign": "Millzeichen",
"naira sign": "Nairazeichen",
"peseta sign": "Pesetazeichen",
"rupee sign": "Rupiezeichen",
"won sign": "Wonzeichen",
"new sheqel sign": "Schekelzeichen",
"dong sign": "Dongzeichen",
"kip sign": "Kipzeichen",
"tugrik sign": "Tugrikzeichen",
"drachma sign": "Drachmezeichen",
"german penny symbol": "Pfennigzeichen",
"peso sign": "Pesozeichen",
"guarani sign": "Guaranizeichen",
"austral sign": "Australzeichen",
"hryvnia sign": "Hrywnjazeichen",
"cedi sign": "Cedizeichen",
"livre tournois sign": "Livrezeichen",
"spesmilo sign": "Spesmilozeichen",
"tenge sign": "Tengezeichen",
"indian rupee sign": "Indisches Rupiezeichen",
"turkish lira sign": "T\u00fcrkisches Lirazeichen",
"nordic mark sign": "Zeichen nordische Mark",
"manat sign": "Manatzeichen",
"ruble sign": "Rubelzeichen",
"yen character": "Yenzeichen",
"yuan character": "Yuanzeichen",
"yuan character, in hong kong and taiwan": "Yuanzeichen in Hongkong und Taiwan",
"yen\/yuan character variant one": "Yen-\/Yuanzeichen Variante 1",
"Loading emoticons...": "Emoticons werden geladen...",
"Could not load emoticons": "Emoticons konnten nicht geladen werden",
"People": "Menschen",
"Animals and Nature": "Tiere und Natur",
"Food and Drink": "Essen und Trinken",
"Activity": "Aktivit\u00e4t",
"Travel and Places": "Reisen und Orte",
"Objects": "Objekte",
"Flags": "Flaggen",
"Characters": "Zeichen",
"Characters (no spaces)": "Zeichen (ohne Leerzeichen)",
"{0} characters": "{0}\u00a0Zeichen",
"Error: Form submit field collision.": "Fehler: Kollision der Formularbest\u00e4tigungsfelder.",
"Error: No form element found.": "Fehler: Kein Formularelement gefunden.",
"Update": "Aktualisieren",
"Color swatch": "Farbpalette",
"Turquoise": "T\u00fcrkis",
"Green": "Gr\u00fcn",
"Blue": "Blau",
"Purple": "Violett",
"Navy Blue": "Marineblau",
"Dark Turquoise": "Dunkelt\u00fcrkis",
"Dark Green": "Dunkelgr\u00fcn",
"Medium Blue": "Mittleres Blau",
"Medium Purple": "Mittelviolett",
"Midnight Blue": "Mitternachtsblau",
"Yellow": "Gelb",
"Orange": "Orange",
"Red": "Rot",
"Light Gray": "Hellgrau",
"Gray": "Grau",
"Dark Yellow": "Dunkelgelb",
"Dark Orange": "Dunkelorange",
"Dark Red": "Dunkelrot",
"Medium Gray": "Mittelgrau",
"Dark Gray": "Dunkelgrau",
"Light Green": "Hellgr\u00fcn",
"Light Yellow": "Hellgelb",
"Light Red": "Hellrot",
"Light Purple": "Helllila",
"Light Blue": "Hellblau",
"Dark Purple": "Dunkellila",
"Dark Blue": "Dunkelblau",
"Black": "Schwarz",
"White": "Wei\u00df",
"Switch to or from fullscreen mode": "Vollbildmodus umschalten",
"Open help dialog": "Hilfe-Dialog \u00f6ffnen",
"history": "Historie",
"styles": "Stile",
"formatting": "Formatierung",
"alignment": "Ausrichtung",
"indentation": "Einr\u00fcckungen",
"Font": "Schriftart",
"Size": "Schriftgr\u00f6\u00dfe",
"More...": "Mehr...",
"Select...": "Auswahl...",
"Preferences": "Einstellungen",
"Yes": "Ja",
"No": "Nein",
"Keyboard Navigation": "Tastaturnavigation",
"Version": "Version",
"Code view": "Code Ansicht",
"Open popup menu for split buttons": "\u00d6ffne Popup Menge um Buttons zu trennen",
"List Properties": "Liste Eigenschaften",
"List properties...": "Liste Eigenschaften",
"Start list at number": "Beginne Liste mit Nummer",
"Line height": "Liniendicke",
"comments": "Anmerkungen",
"Format Painter": "Format-Painter",
"Insert\/edit iframe": "iframe einf\u00fcgen\/bearbeiten",
"Capitalization": "Gro\u00dfschreibung",
"lowercase": "Kleinbuchstaben",
"UPPERCASE": "Gro\u00dfbuchstaben",
"Title Case": "Gro\u00df-\/Kleinschreibung des Titels",
"permanent pen": "Textmarker",
"Permanent Pen Properties": "Eigenschaften von Permanent Pen",
"Permanent pen properties...": "Eigenschaften von Permanent Pen...",
"case change": "Gro\u00df-\/Kleinschreibung",
"page embed": "Seite einbetten",
"Advanced sort...": "Erweiterte Sortierung...",
"Advanced Sort": "Erweiterte Sortierung",
"Sort table by column ascending": "Tabelle aufsteigend nach Spalten sortieren",
"Sort table by column descending": "Tabelle absteigend nach Spalten sortieren",
"Sort": "Sortieren",
"Order": "Reihenfolge",
"Sort by": "Sortieren nach",
"Ascending": "Aufsteigend",
"Descending": "Absteigend",
"Column {0}": "Spalte {0}",
"Row {0}": "Reihe {0}",
"Spellcheck...": "Rechtschreibpr\u00fcfung...",
"Misspelled word": "Rechtschreibfehler",
"Suggestions": "Vorschl\u00e4ge",
"Change": "Ver\u00e4ndere",
"Finding word suggestions": "Finde Wort Vorschl\u00e4ge",
"Success": "Erfolg",
"Repair": "Reparieren",
"Issue {0} of {1}": "Fehler {0} von {1}",
"Images must be marked as decorative or have an alternative text description": "Bilder m\u00fcssen entweder als dekorativ markiert werden oder eine alternative Beschreibung bekommen",
"Images must have an alternative text description. Decorative images are not allowed.": "Bilder ben\u00f6tigen alternativen Text. Dekorative Bilder nicht erlaubt!",
"Or provide alternative text:": "Oder definiere alternativen Text:",
"Make image decorative:": "Markiere Bild als dekorativ:",
"ID attribute must be unique": "ID muss einzigartig sein",
"Make ID unique": "Mache diese ID einzigartig",
"Keep this ID and remove all others": "Behalte diese ID und entferne alle anderen",
"Remove this ID": "Entferne diese ID",
"Remove all IDs": "Entferne alle IDs",
"Checklist": "Checkliste",
"Anchor": "Textmarke",
"Special character": "Sonderzeichen",
"Code sample": "Codebeispiel",
"Color": "Farbe",
"Document properties": "Dokumenteigenschaften",
"Image description": "Bildbeschreibung",
"Image": "Bild",
"Insert link": "Link einf\u00fcgen",
"Target": "Ziel",
"Link": "Link",
"Poster": "Poster",
"Media": "Medium",
"Print": "Drucken",
"Prev": "Zur\u00fcck",
"Find and replace": "Suchen und ersetzen",
"Whole words": "Nur ganze W\u00f6rter",
"Insert template": "Vorlage einf\u00fcgen "
});js/tinymce/langs/mk_MK.js000064400000044632151727150270011310 0ustar00tinymce.addI18n('mk_MK',{
"Cut": "\u0418\u0441\u0435\u0447\u0438",
"Heading 5": "Heading 5",
"Header 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448\u0438\u043e\u0442 \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u043d\u0435 \u043f\u043e\u0434\u0440\u0436\u0443\u0432\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d \u043f\u0440\u0438\u0441\u0442\u0430\u043f \u0434\u043e clipboard. \u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 \u0433\u0438 \u043a\u0440\u0430\u0442\u0435\u043d\u043a\u0438\u0442\u0435 CTRL+X\/C\/V.",
"Heading 4": "Heading 4",
"Div": "Div",
"Heading 2": "Heading 2",
"Paste": "\u0417\u0430\u043b\u0435\u043f\u0438",
"Close": "\u0417\u0430\u0442\u0432\u043e\u0440\u0438",
"Font Family": "Font Family",
"Pre": "Pre",
"Align right": "\u041f\u043e\u0440\u0430\u043c\u043d\u0438 \u0434\u0435\u0441\u043d\u043e",
"New document": "\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "Blockquote",
"Numbered list": "\u041b\u0438\u0441\u0442\u0430 \u0431\u0440\u043e\u0458\u043a\u0438",
"Heading 1": "Heading 1",
"Headings": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0458\u0430",
"Increase indent": "\u0417\u0433\u043e\u043b\u0435\u043c\u0438 \u0432\u043e\u0432\u043b\u0435\u043a\u0443\u0432\u0430\u045a\u0435",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
"Headers": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435",
"Select all": "\u0421\u0435\u043b\u0435\u043a\u0442\u0438\u0440\u0430\u0458 \u0441\u00e8",
"Header 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435 3",
"Blocks": "Blocks",
"Undo": "\u0412\u0440\u0430\u0442\u0438",
"Strikethrough": "\u041f\u0440\u0435\u0446\u0440\u0442\u0430\u043d\u043e",
"Bullet list": "\u041b\u0438\u0441\u0442\u0430 \u0442\u043e\u0447\u043a\u0438",
"Header 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435 1",
"Superscript": "\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435",
"Clear formatting": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u045a\u0435",
"Font Sizes": "Font Sizes",
"Subscript": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443",
"Header 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435 6",
"Redo": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438",
"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "\u041e\u043a",
"Bold": "\u0417\u0434\u0435\u0431\u0435\u043b\u0435\u043d\u043e",
"Code": "Code",
"Italic": "\u0417\u0430\u043a\u043e\u0441\u0435\u043d\u043e",
"Align center": "\u041f\u043e\u0440\u0430\u043c\u043d\u0438 \u0441\u0440\u0435\u0434\u0438\u043d\u0430",
"Header 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435 5",
"Heading 6": "Heading 6",
"Heading 3": "Heading 3",
"Decrease indent": "\u041d\u0430\u043c\u0430\u043b\u0438 \u0432\u043e\u0432\u043b\u0435\u043a\u0443\u0432\u0430\u045a\u0435",
"Header 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0458\u0435 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u043c\u0435\u0442\u043d\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u0441\u0435\u0433\u0430 \u0435 \u043a\u0430\u043a\u043e \u0447\u0438\u0441\u0442 \u0442\u0435\u043a\u0441\u0442. \u0421\u043e\u0434\u0440\u0436\u0438\u043d\u0430\u0442\u0430 \u045c\u0435 \u0431\u0438\u0434\u0435 \u0432\u043c\u0435\u0442\u043d\u0430\u0442\u0430 \u043a\u0430\u043a\u043e \u0447\u0438\u0441\u0442 \u0442\u0435\u043a\u0441\u0442 \u0431\u0430\u0440\u0435\u043c \u0434\u043e\u0434\u0435\u043a\u0430 \u043d\u0435 \u0458\u0430 \u0438\u0441\u043a\u043b\u0443\u0447\u0438\u0442\u0435 \u043e\u0432\u0430\u0430 \u043e\u043f\u0446\u0438\u0458\u0430",
"Underline": "\u041f\u043e\u0434\u0432\u043b\u0435\u0447\u0435\u043d\u043e",
"Cancel": "\u041e\u0442\u043a\u0430\u0436\u0438",
"Justify": "Justify",
"Inline": "Inline",
"Copy": "\u041a\u043e\u043f\u0438\u0440\u0430\u0458",
"Align left": "\u041f\u043e\u0440\u0430\u043c\u043d\u0438 \u043b\u0435\u0432\u043e",
"Visual aids": "\u0412\u0438\u0437\u0443\u0435\u043b\u043d\u0430 \u043f\u043e\u043c\u043e\u0448",
"Lower Greek": "\u043c\u0430\u043b\u0438 \u0413\u0440\u0438\u043a",
"Square": "\u043a\u0432\u0430\u0434\u0440\u0430\u0442",
"Default": "\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e",
"Lower Alpha": "\u043c\u0430\u043b\u0438 \u0410\u043b\u0444\u0430",
"Circle": "\u043a\u0440\u0443\u0433",
"Disc": "\u0434\u0438\u0441\u043a",
"Upper Alpha": "\u0433\u043e\u043b\u0435\u043c\u0438 \u0410\u043b\u0444\u0430",
"Upper Roman": "\u0433\u043e\u043b\u0435\u043c\u0438 \u0420\u043e\u043c\u0430\u043d",
"Lower Roman": "\u043c\u0430\u043b\u0438 \u0420\u043e\u043c\u0430\u043d",
"Name": "\u0418\u043c\u0435",
"Anchor": "Anchor",
"You have unsaved changes are you sure you want to navigate away?": "\u0418\u043c\u0430\u0442\u0435 \u043d\u0435\u0437\u0430\u0447\u0443\u0432\u0430\u043d\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u043f\u043e\u043d\u0430\u0442\u0430\u043c\u0443?",
"Restore last draft": "\u0412\u0440\u0430\u0442\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430 \u043f\u0440\u0438\u043f\u0440\u0435\u043c\u0430",
"Special character": "\u0421\u043f\u0435\u0446\u0438\u0458\u0430\u043b\u0435\u043d \u043a\u0430\u0440\u0430\u043a\u0442\u0435\u0440",
"Source code": "\u0418\u0437\u0432\u043e\u0440\u0435\u043d \u043a\u043e\u0434",
"B": "\u0411",
"R": "\u0420",
"G": "\u0413",
"Color": "\u0411\u043e\u0458\u0430",
"Right to left": "\u0414\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e",
"Left to right": "\u041b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e",
"Emoticons": "\u0421\u043c\u0430\u0458\u043b\u0438",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
"Document properties": "\u041f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0437\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0442",
"Title": "\u041d\u0430\u0441\u043b\u043e\u0432",
"Keywords": "\u041a\u043b\u0443\u0447\u043d\u0438 \u0437\u0431\u043e\u0440\u043e\u0432\u0438",
"Encoding": "\u0415\u043d\u043a\u043e\u0434\u0438\u043d\u0433",
"Description": "\u041e\u043f\u0438\u0441",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Fullscreen": "\u0426\u0435\u043b \u0435\u043a\u0440\u0430\u043d",
"Horizontal line": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430",
"Horizontal space": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0440",
"Insert\/edit image": "\u0412\u043d\u0435\u0441\u0438\/\u0438\u0437\u043c\u0435\u043d\u0438 \u0441\u043b\u0438\u043a\u0430",
"General": "\u0413\u0435\u043d\u0435\u0440\u0430\u043b\u043d\u043e",
"Advanced": "\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e",
"Source": "\u0418\u0437\u0432\u043e\u0440",
"Border": "\u0420\u0430\u043c\u043a\u0430",
"Constrain proportions": "\u0421\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0440",
"Image description": "\u041e\u0431\u0458\u0430\u0441\u043d\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430",
"Style": "\u0421\u0442\u0438\u043b",
"Dimensions": "\u0414\u0438\u043c\u0435\u043d\u0437\u0438\u0438",
"Insert image": "\u0412\u043d\u0435\u0441\u0438 \u0441\u043b\u0438\u043a\u0430",
"Zoom in": "\u0417\u0433\u043e\u043b\u0435\u043c\u0438 \u043f\u043e\u0433\u043b\u0435\u0434",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Gamma": "\u0413\u0430\u043c\u0430",
"Flip horizontally": "\u0421\u0432\u0440\u0442\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e",
"Resize": "\u0420\u0435\u0434\u0438\u043c\u0435\u043d\u0437\u0438\u043e\u043d\u0438\u0440\u0430\u0458",
"Sharpen": "\u041e\u0441\u0442\u0440\u0438\u043d\u0430",
"Zoom out": "\u041d\u0430\u043c\u0430\u043b\u0438 \u043f\u043e\u0433\u043b\u0435\u0434",
"Image options": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 \u0441\u043b\u0438\u043a\u0430",
"Apply": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438",
"Brightness": "\u0421\u0432\u0435\u0442\u043b\u043e\u0441\u0442",
"Rotate clockwise": "\u0421\u0432\u0440\u0442\u0438 \u0432\u043e \u043f\u0440\u0430\u0432\u0435\u0446 \u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u0442\u0430",
"Rotate counterclockwise": "\u0421\u0432\u0440\u0442\u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043e\u0434 \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u0442\u0430",
"Edit image": "\u0423\u0440\u0435\u0434\u0438 \u0441\u043b\u0438\u043a\u0430",
"Color levels": "\u041d\u0438\u0432\u043e\u0430 \u043d\u0430 \u0431\u043e\u0438",
"Crop": "\u041e\u0442\u0441\u0435\u0447\u0438",
"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0458\u0430",
"Flip vertically": "\u0421\u0432\u0440\u0442\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e",
"Invert": "\u0418\u043d\u0432\u0435\u0440\u0437\u043d\u043e",
"Insert date\/time": "\u0412\u043d\u0435\u0441\u0438 \u0434\u0430\u0442\u0443\u043c\/\u0432\u0440\u0435\u043c\u0435",
"Remove link": "\u041e\u0442\u0441\u0442\u0440\u0430\u043d\u0438 \u043b\u0438\u043d\u043a",
"Url": "Url",
"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0437\u0430 \u043f\u0440\u0438\u043a\u0430\u0437",
"Anchors": "Anchors",
"Insert link": "\u0412\u043d\u0435\u0441\u0438 \u043b\u0438\u043d\u043a",
"New window": "\u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",
"None": "\u043d\u0438\u0448\u0442\u043e",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0435 \u0447\u0438\u043d\u0438 \u0434\u0435\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430 \u0448\u0442\u043e \u0458\u0430 \u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0435 \u043d\u0430\u0434\u0432\u043e\u0440\u0435\u0448\u0435\u043d \u043b\u0438\u043d\u043a. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u043e\u0434\u0430\u0434\u0435\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0438\u043e\u0442 http:\/\/ \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",
"Target": "\u0446\u0435\u043b",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0435 \u0447\u0438\u043d\u0438 \u0434\u0435\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430 \u0448\u0442\u043e \u0458\u0430 \u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0435 \u0435-\u043f\u043e\u0448\u0442\u0430. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u043e\u0434\u0430\u0434\u0435\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0438\u043e\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",
"Insert\/edit link": "\u0412\u043d\u0435\u0441\u0438\/\u0443\u0440\u0435\u0434\u0438 \u043b\u0438\u043d\u043a",
"Insert\/edit video": "\u0412\u043d\u0435\u0441\u0438\/\u0443\u0440\u0435\u0434\u0438 \u0432\u0438\u0434\u0435\u043e",
"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
"Alternative source": "\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0432\u043e\u0440",
"Paste your embed code below:": "\u041f\u043e\u0434\u043e\u043b\u0443 \u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u0433\u043e \u0432\u0430\u0448\u0438\u043e\u0442 \u043a\u043e\u0434 \u0437\u0430 \u0432\u043c\u0435\u0442\u043d\u0443\u0432\u0430\u045a\u0435:",
"Insert video": "\u0412\u043d\u0435\u0441\u0438 \u0432\u0438\u0434\u0435\u043e",
"Embed": "\u0412\u043c\u0435\u0442\u043d\u0438 \u043a\u043e\u0434",
"Nonbreaking space": "\u041d\u0435\u043f\u0440\u0435\u043a\u0440\u0448\u0443\u0432\u0430\u0447\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0440",
"Page break": "\u041f\u0440\u0435\u043a\u0440\u0448\u0443\u0432\u0430\u045a\u0435",
"Paste as text": "\u0412\u043c\u0435\u0442\u043d\u0438 \u043a\u0430\u043a\u043e \u0442\u0435\u043a\u0441\u0442",
"Preview": "\u041f\u0440\u0435\u0433\u043b\u0435\u0434",
"Print": "\u041f\u0435\u0447\u0430\u0442\u0438",
"Save": "\u0417\u0430\u0447\u0443\u0432\u0430\u0458",
"Could not find the specified string.": "\u041d\u0435\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043e\u0453\u0430\u045a\u0435 \u043d\u0430 \u043f\u043e\u0441\u043e\u0447\u0435\u043d\u0438\u043e\u0442 \u043f\u043e\u0438\u043c",
"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438",
"Next": "\u041f\u043e",
"Whole words": "\u0426\u0435\u043b\u0438 \u0437\u0431\u043e\u0440\u043e\u0432\u0438",
"Find and replace": "\u041d\u0430\u0458\u0434\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438",
"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438 \u0441\u043e",
"Find": "\u041d\u0430\u0458\u0434\u0438",
"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438 \u0441\u00e8",
"Match case": "\u0426\u0435\u043b\u043e\u0441\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0453\u0430\u045a\u0435",
"Prev": "\u041f\u0440\u0435\u0434",
"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441",
"Finish": "\u0424\u0438\u043d\u0438\u0448",
"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0458 \u0441\u00e8",
"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0458",
"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0434\u0438 \u0432\u043e \u0440\u0435\u0447\u043d\u0438\u043a",
"Insert row before": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0440\u0435\u0434 \u043d\u0430\u0434",
"Rows": "\u0420\u0435\u0434\u043e\u0432\u0438",
"Height": "\u0412\u0438\u0441\u0438\u043d\u0430",
"Paste row after": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0440\u0435\u0434 \u043f\u043e\u0434",
"Alignment": "\u041f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",
"Border color": "\u0411\u043e\u0458\u0430 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430",
"Column group": "\u0413\u0440\u0443\u043f\u0430 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430",
"Row": "\u0420\u0435\u0434",
"Insert column before": "\u0412\u043c\u0435\u0442\u043d\u0438 \u043a\u043e\u043b\u043e\u043d\u0430 \u043d\u0430\u0434",
"Split cell": "\u041f\u043e\u0434\u0435\u043b\u0438 \u045c\u0435\u043b\u0438\u0458\u0430",
"Cell padding": "\u0411\u0435\u043b\u0438\u043d\u0430 \u0432\u043e \u045c\u0435\u043b\u0438\u0458\u0430",
"Cell spacing": "\u041f\u0440\u043e\u0441\u0442\u043e\u0440 \u043d\u0430 \u045c\u0435\u043b\u0438\u0458\u0430",
"Row type": "\u0422\u0438\u043f \u043d\u0430 \u0440\u0435\u0434",
"Insert table": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0442\u0430\u0431\u0435\u043b\u0430",
"Body": "\u0422\u0435\u043b\u043e",
"Caption": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",
"Footer": "\u041f\u043e\u0434\u043d\u043e\u0436\u0458\u0435",
"Delete row": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u0440\u0435\u0434",
"Paste row before": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0440\u0435\u0434 \u043d\u0430\u0434",
"Scope": "Scope",
"Delete table": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u0442\u0430\u0431\u0435\u043b\u0430",
"H Align": "H Align",
"Top": "\u0433\u043e\u0440\u0435",
"Header cell": "\u041d\u0430\u0441\u043b\u043e\u0432\u043d\u0430 \u045c\u0435\u043b\u0438\u0458\u0430",
"Column": "\u041a\u043e\u043b\u043e\u043d\u0430",
"Row group": "\u0413\u0440\u0443\u043f\u0430 \u043d\u0430 \u0440\u0435\u0434",
"Cell": "\u040c\u0435\u043b\u0438\u0458\u0430",
"Middle": "\u0441\u0440\u0435\u0434\u0438\u043d\u0430",
"Cell type": "\u0422\u0438\u043f \u043d\u0430 \u045c\u0435\u043b\u0438\u0458\u0430",
"Copy row": "\u041a\u043e\u043f\u0438\u0440\u0430\u0458 \u0440\u0435\u0434",
"Row properties": "\u041f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0437\u0430 \u0440\u0435\u0434",
"Table properties": "\u041f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0437\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430",
"Bottom": "\u0434\u043e\u043b\u0443",
"V Align": "V Align",
"Header": "\u041d\u0430\u0441\u043b\u043e\u0432",
"Right": "\u0434\u0435\u0441\u043d\u043e",
"Insert column after": "\u0412\u043c\u0435\u0442\u043d\u0438 \u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u043e\u0434",
"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438",
"Insert row after": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0440\u0435\u0434 \u043f\u043e\u0434",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Cell properties": "\u041f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u0437\u0430 \u045c\u0435\u043b\u0438\u0458\u0430",
"Left": "\u043b\u0435\u0432\u043e",
"Cut row": "\u041e\u0442\u0441\u0435\u0447\u0438 \u0440\u0435\u0434",
"Delete column": "\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u043a\u043e\u043b\u043e\u043d\u0430",
"Center": "\u0446\u0435\u043d\u0442\u0430\u0440",
"Merge cells": "\u0421\u043f\u043e\u0438 \u045c\u0435\u043b\u0438\u0438",
"Insert template": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0448\u0430\u0431\u043b\u043e\u043d",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Background color": "\u0411\u043e\u0458\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430",
"Custom...": "\u041f\u043e \u0436\u0435\u043b\u0431\u0430...",
"Custom color": "\u0411\u043e\u0458\u0430 \u043f\u043e \u0436\u0435\u043b\u0431\u0430",
"No color": "\u0411\u0435\u0437 \u0431\u043e\u0458\u0430",
"Text color": "\u0411\u043e\u0458\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442",
"Show blocks": "\u041f\u0440\u0438\u043a\u0430\u0436\u0438 \u0431\u043b\u043e\u043a\u043e\u0432\u0438",
"Show invisible characters": "\u041f\u0440\u0438\u043a\u0430\u0436\u0438 \u043d\u0435\u0432\u0438\u0434\u043b\u0438\u0432\u0438 \u043a\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438",
"Words: {0}": "\u0417\u0431\u043e\u0440\u043e\u0432\u0438: {0}",
"Insert": "\u0412\u043c\u0435\u0442\u043d\u0438",
"File": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Edit": "\u0423\u0440\u0435\u0434\u0438",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041f\u043e\u043b\u0435 \u0437\u0430 Rich Text. \u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0438 ALT-F9 \u0437\u0430 \u043c\u0435\u043d\u0438. \u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0438 ALT-F10 \u0437\u0430 \u043b\u0435\u043d\u0442\u0430 \u0441\u043e \u0430\u043b\u0430\u0442\u043a\u0438. \u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0438 ALT-0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0448.",
"Tools": "\u0410\u043b\u0430\u0442\u043a\u0438",
"View": "\u041f\u043e\u0433\u043b\u0435\u0434",
"Table": "\u0422\u0430\u0431\u0435\u043b\u0430",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
});js/tinymce/langs/ar.js000064400000107147151727150300010707 0ustar00tinymce.addI18n('ar',{
"Redo": "\u0625\u0639\u0627\u062f\u0629",
"Undo": "\u062a\u0631\u0627\u062c\u0639",
"Cut": "\u0642\u0635",
"Copy": "\u0646\u0633\u062e",
"Paste": "\u0644\u0635\u0642",
"Select all": "\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644",
"New document": "\u0645\u0633\u062a\u0646\u062f \u062c\u062f\u064a\u062f",
"Ok": "\u0645\u0648\u0627\u0641\u0642",
"Cancel": "\u0625\u0644\u063a\u0627\u0621 \u0627\u0644\u0623\u0645\u0631",
"Visual aids": "\u0623\u062f\u0648\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u0635\u0631\u064a\u0629",
"Bold": "\u063a\u0627\u0645\u0642",
"Italic": "\u0645\u0627\u0626\u0644",
"Underline": "\u062a\u0633\u0637\u064a\u0631",
"Strikethrough": "\u064a\u062a\u0648\u0633\u0637\u0647 \u062e\u0637",
"Superscript": "\u0645\u0631\u062a\u0641\u0639",
"Subscript": "\u0645\u0646\u062e\u0641\u0636",
"Clear formatting": "\u0645\u0633\u062d \u0627\u0644\u062a\u0646\u0633\u064a\u0642",
"Align left": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0625\u0644\u0649 \u0627\u0644\u064a\u0633\u0627\u0631",
"Align center": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0625\u0644\u0649 \u0627\u0644\u0648\u0633\u0637",
"Align right": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0625\u0644\u0649 \u0627\u0644\u064a\u0645\u064a\u0646",
"Justify": "\u0636\u0628\u0637",
"Bullet list": "\u0642\u0627\u0626\u0645\u0629 \u062a\u0639\u062f\u0627\u062f \u0646\u0642\u0637\u064a",
"Numbered list": "\u0642\u0627\u0626\u0645\u0629 \u0645\u0631\u0642\u0645\u0651\u064e\u0629",
"Decrease indent": "\u062a\u0642\u0644\u064a\u0644 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
"Increase indent": "\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
"Close": "\u0625\u063a\u0644\u0627\u0642",
"Formats": "\u0627\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0627 \u064a\u062f\u0639\u0645 \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0628\u0627\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629. \u064a\u064f\u0631\u062c\u0649 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Ctrl+X\/C\/V \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0630\u0644\u0643.",
"Headers": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646",
"Header 1": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 1",
"Header 2": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 2",
"Header 3": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 3",
"Header 4": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 4",
"Header 5": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 5",
"Header 6": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646 6",
"Headings": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646",
"Heading 1": "\u0639\u0646\u0648\u0627\u0646 \u0661",
"Heading 2": "\u0639\u0646\u0648\u0627\u0646 2",
"Heading 3": "\u0639\u0646\u0648\u0627\u0646 3",
"Heading 4": "\u0639\u0646\u0648\u0627\u0646 4",
"Heading 5": "\u0639\u0646\u0648\u0627\u0646 5",
"Heading 6": "\u0639\u0646\u0648\u0627\u0646 6",
"Preformatted": "\u0645\u0646\u0633\u0642 \u0645\u0633\u0628\u0642\u064b\u0627",
"Div": "Div",
"Pre": "Pre",
"Code": "\u0631\u0645\u0632",
"Paragraph": "\u0627\u0644\u0641\u0642\u0631\u0629",
"Blockquote": "Blockquote",
"Inline": "\u062f\u0627\u062e\u0644\u064a",
"Blocks": "\u0627\u0644\u0643\u062a\u0644",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u064a\u062a\u0645 \u0627\u0644\u0644\u0635\u0642 \u062d\u0627\u0644\u064a\u0627\u064b \u0643\u0646\u0635 \u0639\u0627\u062f\u064a. \u0627\u0644\u0645\u062d\u062a\u0648\u0649 \u0633\u064a\u0628\u0642\u0649 \u0643\u0646\u0635 \u0639\u0627\u062f\u064a \u062d\u062a\u0649 \u062a\u0642\u0648\u0645 \u0628\u062a\u0639\u0637\u064a\u0644 \u0647\u0630\u0627 \u0627\u0644\u062e\u064a\u0627\u0631.",
"Fonts": "\u0627\u0644\u062e\u0637\u0648\u0637",
"Font Sizes": "\u0623\u062d\u062c\u0627\u0645 \u0627\u0644\u062e\u0637\u0648\u0637",
"Class": "\u0627\u0644\u0641\u0626\u0629",
"Browse for an image": "\u0627\u0633\u062a\u0639\u0631\u0627\u0636 \u0635\u0648\u0631\u0629",
"OR": "\u0623\u0648",
"Drop an image here": "\u0625\u0641\u0644\u0627\u062a \u0635\u0648\u0631\u0629 \u0647\u0646\u0627",
"Upload": "\u062a\u062d\u0645\u064a\u0644",
"Block": "\u062d\u0638\u0631",
"Align": "\u0645\u062d\u0627\u0630\u0627\u0629",
"Default": "\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",
"Circle": "\u062f\u0627\u0626\u0631\u0629",
"Disc": "\u0642\u0631\u0635",
"Square": "\u0645\u0631\u0628\u0639",
"Lower Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062e\u0631\u0641 \u0635\u063a\u064a\u0631\u0629",
"Lower Greek": "\u062a\u0631\u0642\u064a\u0645 \u064a\u0648\u0646\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
"Lower Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
"Upper Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062d\u0631\u0641 \u0643\u0628\u064a\u0631\u0629",
"Upper Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0643\u0628\u064a\u0631",
"Anchor...": "\u0645\u0631\u0633\u0627\u0629...",
"Name": "\u0627\u0644\u0627\u0633\u0645",
"Id": "\u0631\u0642\u0645 \u0627\u0644\u0645\u0639\u0631\u0641",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u0631\u0642\u0645 \u0627\u0644\u0645\u0639\u0631\u0641 \u064a\u062c\u0628 \u0623\u0646 \u062a\u0628\u062f\u0623 \u0628\u062d\u0631\u0641\u060c \u064a\u062a\u0628\u0639 \u0641\u0642\u0637 \u0628\u062d\u0631\u0648\u0641 \u0648\u0623\u0631\u0642\u0627\u0645\u060c \u0634\u0631\u0637\u0627\u062a\u060c \u0623\u0648 \u0627\u0644\u0646\u0642\u0627\u0637\u060c \u0627\u0644\u0646\u0642\u0637\u062a\u064a\u0646 \u0623\u0648 \u0627\u0644\u0634\u0631\u0637\u0627\u062a \u0627\u0644\u0633\u0641\u0644\u064a\u0629.",
"You have unsaved changes are you sure you want to navigate away?": "\u0644\u062f\u064a\u0643 \u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0644\u0645 \u064a\u062a\u0645 \u062d\u0641\u0638\u0647\u0627 \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0639\u064a\u062f\u0627\u061f",
"Restore last draft": "\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0623\u062e\u0631 \u0645\u0633\u0648\u062f\u0629",
"Special character...": "\u0631\u0645\u0632 \u062e\u0627\u0635...",
"Source code": "\u0634\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631",
"Insert\/Edit code sample": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0643\u0648\u062f",
"Language": "\u0627\u0644\u0644\u063a\u0629",
"Code sample...": "\u0639\u064a\u0646\u0629 \u0627\u0644\u0631\u0645\u0632...",
"Color Picker": "\u0645\u0646\u062a\u0642\u064a \u0627\u0644\u0623\u0644\u0648\u0627\u0646",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0644\u0644\u064a\u0645\u064a\u0646",
"Right to left": "\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0644\u0644\u064a\u0633\u0627\u0631",
"Emoticons...": "\u0631\u0645\u0648\u0632 \u0627\u0644\u0645\u0634\u0627\u0639\u0631...",
"Metadata and Document Properties": "\u062e\u0635\u0627\u0626\u0635 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0648\u0627\u0644\u0645\u0633\u062a\u0646\u062f",
"Title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
"Keywords": "\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0628\u062d\u062b",
"Description": "\u0627\u0644\u0648\u0635\u0641",
"Robots": "\u0627\u0644\u0631\u0648\u0628\u0648\u062a\u0627\u062a",
"Author": "\u0627\u0644\u0643\u0627\u062a\u0628",
"Encoding": "\u0627\u0644\u062a\u0631\u0645\u064a\u0632",
"Fullscreen": "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
"Action": "\u0627\u0644\u0639\u0645\u0644\u064a\u0629",
"Shortcut": "\u0627\u0644\u0627\u062e\u062a\u0635\u0627\u0631",
"Help": "\u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629",
"Address": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
"Focus to menubar": "\u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0639\u0644\u0649 \u0634\u0631\u064a\u0637 \u0627\u0644\u0642\u0648\u0627\u0626\u0645",
"Focus to toolbar": "\u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0639\u0644\u0649 \u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a",
"Focus to element path": "\u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0639\u0644\u0649 \u0645\u0633\u0627\u0631 \u0627\u0644\u0639\u0646\u0635\u0631",
"Focus to contextual toolbar": "\u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0639\u0644\u0649 \u0634\u0631\u064a\u0637 \u0623\u062f\u0648\u0627\u062a \u0627\u0644\u0633\u064a\u0627\u0642",
"Insert link (if link plugin activated)": "\u0625\u0636\u0627\u0641\u0629 \u0631\u0627\u0628\u0637 (\u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0631\u0648\u0627\u0628\u0637 \u0645\u0641\u0639\u0644\u0629)",
"Save (if save plugin activated)": "\u062d\u0641\u0638 (\u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u062d\u0641\u0638 \u0645\u0641\u0639\u0644\u0629)",
"Find (if searchreplace plugin activated)": "\u0627\u0644\u0628\u062d\u062b (\u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0628\u062d\u062b \u0645\u0641\u0639\u0644\u0629)",
"Plugins installed ({0}):": "\u0627\u0644\u0625\u0636\u0627\u0641\u0627\u062a \u0627\u0644\u0645\u062b\u0628\u062a\u0629 ({0}):",
"Premium plugins:": "\u0627\u0644\u0625\u0636\u0627\u0641\u0627\u062a \u0627\u0644\u0645\u0645\u064a\u0632\u0629:",
"Learn more...": "\u0645\u0639\u0631\u0641\u0629 \u0627\u0644\u0645\u0632\u064a\u062f...",
"You are using {0}": "\u0623\u0646\u062a \u062a\u0633\u062a\u062e\u062f\u0645 {0}",
"Plugins": "\u0627\u0644\u0625\u0636\u0627\u0641\u0627\u062a",
"Handy Shortcuts": "\u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0645\u0633\u0627\u0639\u0650\u062f\u0629",
"Horizontal line": "\u062e\u0637 \u0623\u0641\u0642\u064a",
"Insert\/edit image": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0635\u0648\u0631\u0629",
"Image description": "\u0648\u0635\u0641 \u0627\u0644\u0635\u0648\u0631\u0629",
"Source": "\u0627\u0644\u0645\u0635\u062f\u0631",
"Dimensions": "\u0627\u0644\u0623\u0628\u0639\u0627\u062f",
"Constrain proportions": "\u0627\u0644\u062a\u0646\u0627\u0633\u0628",
"General": "\u0639\u0627\u0645",
"Advanced": "\u062e\u0635\u0627\u0626\u0635 \u0645\u062a\u0642\u062f\u0645\u0647",
"Style": "\u0627\u0644\u0646\u0645\u0637 \/ \u0627\u0644\u0634\u0643\u0644",
"Vertical space": "\u0645\u0633\u0627\u0641\u0629 \u0639\u0645\u0648\u062f\u064a\u0629",
"Horizontal space": "\u0645\u0633\u0627\u0641\u0629 \u0623\u0641\u0642\u064a\u0629",
"Border": "\u062d\u062f\u0648\u062f",
"Insert image": "\u0625\u062f\u0631\u0627\u062c \u0635\u0648\u0631\u0629",
"Image...": "\u0635\u0648\u0631\u0629...",
"Image list": "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0635\u0648\u0631",
"Rotate counterclockwise": "\u062a\u062f\u0648\u064a\u0631 \u0639\u0643\u0633 \u0627\u062a\u062c\u0627\u0647 \u0639\u0642\u0627\u0631\u0628 \u0627\u0644\u0633\u0627\u0639\u0629",
"Rotate clockwise": "\u062a\u062f\u0648\u064a\u0631 \u0641\u064a \u0627\u062a\u062c\u0627\u0647 \u0639\u0642\u0627\u0631\u0628 \u0627\u0644\u0633\u0627\u0639\u0629",
"Flip vertically": "\u0627\u0646\u0639\u0643\u0627\u0633 \u0639\u0627\u0645\u0648\u062f\u064a",
"Flip horizontally": "\u0627\u0646\u0639\u0643\u0627\u0633 \u0623\u0641\u0642\u064a",
"Edit image": "\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0635\u0648\u0631\u0629",
"Image options": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0635\u0648\u0631\u0629",
"Zoom in": "\u062a\u0643\u0628\u064a\u0631",
"Zoom out": "\u062a\u0635\u063a\u064a\u0631",
"Crop": "\u0642\u0635",
"Resize": "\u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645",
"Orientation": "\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629",
"Brightness": "\u0627\u0644\u0625\u0636\u0627\u0621\u0629",
"Sharpen": "\u062d\u0627\u062f\u0629",
"Contrast": "\u0627\u0644\u062a\u0628\u0627\u064a\u0646",
"Color levels": "\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0644\u0648\u0646",
"Gamma": "\u063a\u0627\u0645\u0627",
"Invert": "\u0639\u0643\u0633",
"Apply": "\u062a\u0637\u0628\u064a\u0642",
"Back": "\u0644\u0644\u062e\u0644\u0641",
"Insert date\/time": "\u0625\u062f\u0631\u0627\u062c \u062a\u0627\u0631\u064a\u062e\/\u0648\u0642\u062a",
"Date\/time": "\u0627\u0644\u062a\u0627\u0631\u064a\u062e\/\u0627\u0644\u0648\u0642\u062a",
"Insert\/Edit Link": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0627\u0631\u062a\u0628\u0627\u0637",
"Insert\/edit link": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0631\u0627\u0628\u0637",
"Text to display": "\u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0639\u0631\u0636\u0647",
"Url": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
"Open link in...": "\u062c\u0627\u0631\u064d \u0641\u062a\u062d \u0627\u0644\u0627\u0631\u062a\u0628\u0627\u0637.",
"Current window": "\u0627\u0644\u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629",
"None": "\u0628\u0644\u0627",
"New window": "\u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629",
"Remove link": "\u062d\u0630\u0641 \u0627\u0644\u0631\u0627\u0628\u0637",
"Anchors": "\u0627\u0644\u0645\u0631\u0633\u0627\u0629",
"Link...": "\u0627\u0631\u062a\u0628\u0627\u0637...",
"Paste or type a link": "\u0623\u062f\u062e\u0644 \u0623\u0648 \u0627\u0643\u062a\u0628 \u0627\u0644\u0631\u0627\u0628\u0637",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0642\u0645\u062a \u0628\u0625\u062f\u0631\u0627\u062c\u0647 \u064a\u0634\u0627\u0628\u0647 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a. \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u062a\u0636\u064a\u0641 \u0627\u0644\u0644\u0627\u062d\u0642\u0629 mailto: \u0645\u0639\u062a\u0628\u0631\u0627\u064b \u0647\u0630\u0627 \u0627\u0644\u0631\u0627\u0628\u0637 \u0628\u0631\u064a\u062f\u0627 \u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0627\u064b\u061f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0646\u062a\u0648\u0642\u0639 \u0627\u0646\u0643 \u0642\u0645\u062a \u0628\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637 \u0644\u0645\u0648\u0642\u0639 \u062e\u0627\u0631\u062c\u064a. \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u0646\u0636\u064a\u0641 \u0627\u0644\u0644\u0627\u062d\u0642\u0629 http:\/\/ \u0644\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0627\u062f\u062e\u0644\u062a\u0647\u061f",
"Link list": "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0631\u0648\u0627\u0628\u0637",
"Insert video": "\u0625\u062f\u0631\u0627\u062c \u0641\u064a\u062f\u064a\u0648",
"Insert\/edit video": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0641\u064a\u062f\u064a\u0648",
"Insert\/edit media": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0648\u0633\u0627\u0626\u0637 \u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629",
"Alternative source": "\u0645\u0635\u062f\u0631 \u0628\u062f\u064a\u0644",
"Alternative source URL": "\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0645\u0635\u062f\u0631 \u0627\u0644\u0628\u062f\u064a\u0644",
"Media poster (Image URL)": "\u0645\u0644\u0635\u0642 \u0627\u0644\u0648\u0633\u0627\u0626\u0637 (\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0635\u0648\u0631\u0629)",
"Paste your embed code below:": "\u0644\u0635\u0642 \u0643\u0648\u062f \u0627\u0644\u062a\u0636\u0645\u064a\u0646 \u0647\u0646\u0627:",
"Embed": "\u062a\u0636\u0645\u064a\u0646",
"Media...": "\u0627\u0644\u0648\u0633\u0627\u0626\u0637...",
"Nonbreaking space": "\u0645\u0633\u0627\u0641\u0629 \u063a\u064a\u0631 \u0645\u0646\u0642\u0633\u0645\u0629",
"Page break": "\u0641\u0627\u0635\u0644 \u0644\u0644\u0635\u0641\u062d\u0629",
"Paste as text": "\u0644\u0635\u0642 \u0643\u0646\u0635",
"Preview": "\u0645\u0639\u0627\u064a\u0646\u0629",
"Print...": "\u0637\u0628\u0627\u0639\u0629...",
"Save": "\u062d\u0641\u0638",
"Find": "\u0628\u062d\u062b",
"Replace with": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0628\u0640",
"Replace": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
"Replace all": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0627\u0644\u0643\u0644",
"Previous": "\u0627\u0644\u0633\u0627\u0628\u0642",
"Next": "\u0627\u0644\u062a\u0627\u0644\u064a",
"Find and replace...": "\u062c\u0627\u0631\u064d \u0627\u0644\u0628\u062d\u062b \u0648\u0627\u0644\u0627\u0633\u062a\u0628\u062f\u0627\u0644...",
"Could not find the specified string.": "\u062a\u0639\u0630\u0631 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629",
"Match case": "\u0645\u0637\u0627\u0628\u0642\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641",
"Find whole words only": "\u0628\u062d\u062b \u0643\u0644\u0645\u0627\u062a \u0628\u0623\u0643\u0645\u0644\u0647\u0627 \u0641\u0642\u0637",
"Spell check": "\u062a\u062f\u0642\u064a\u0642 \u0625\u0645\u0644\u0627\u0626\u064a",
"Ignore": "\u062a\u062c\u0627\u0647\u0644",
"Ignore all": "\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0643\u0644",
"Finish": "\u0627\u0646\u062a\u0647\u064a",
"Add to Dictionary": "\u0627\u0636\u0641 \u0627\u0644\u064a \u0627\u0644\u0642\u0627\u0645\u0648\u0633",
"Insert table": "\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644",
"Table properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644",
"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
"Cell": "\u062e\u0644\u064a\u0629",
"Row": "\u0635\u0641",
"Column": "\u0639\u0645\u0648\u062f",
"Cell properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062e\u0644\u064a\u0629",
"Merge cells": "\u062f\u0645\u062c \u062e\u0644\u0627\u064a\u0627",
"Split cell": "\u062a\u0642\u0633\u064a\u0645 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
"Insert row before": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
"Insert row after": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
"Delete row": "\u062d\u0630\u0641 \u0635\u0641",
"Row properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0635\u0641",
"Cut row": "\u0642\u0635 \u0627\u0644\u0635\u0641",
"Copy row": "\u0646\u0633\u062e \u0627\u0644\u0635\u0641",
"Paste row before": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
"Paste row after": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
"Insert column before": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0633\u0627\u0631",
"Insert column after": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0645\u064a\u0646",
"Delete column": "\u062d\u0630\u0641 \u0639\u0645\u0648\u062f",
"Cols": "\u0639\u062f\u062f \u0627\u0644\u0623\u0639\u0645\u062f\u0629",
"Rows": "\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641",
"Width": "\u0639\u0631\u0636",
"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
"Cell spacing": "\u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0628\u064a\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
"Cell padding": "\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062e\u0644\u064a\u0629",
"Show caption": "\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u062a\u0633\u0645\u064a\u0629 \u0627\u0644\u062a\u0648\u0636\u064a\u062d\u064a\u0629",
"Left": "\u064a\u0633\u0627\u0631",
"Center": "\u062a\u0648\u0633\u064a\u0637",
"Right": "\u064a\u0645\u064a\u0646",
"Cell type": "\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629",
"Scope": "\u0627\u0644\u0645\u062c\u0627\u0644",
"Alignment": "\u0645\u062d\u0627\u0630\u0627\u0629",
"H Align": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0623\u0641\u0642\u064a\u0629",
"V Align": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0631\u0623\u0633\u064a\u0629",
"Top": "\u0623\u0639\u0644\u064a",
"Middle": "\u0627\u0644\u0648\u0633\u0637",
"Bottom": "\u0627\u0644\u0623\u0633\u0641\u0644",
"Header cell": "\u0631\u0623\u0633 \u0627\u0644\u062e\u0644\u064a\u0629",
"Row group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641",
"Column group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0639\u0645\u0648\u062f",
"Row type": "\u0646\u0648\u0639 \u0627\u0644\u0635\u0641",
"Header": "\u0627\u0644\u0631\u0623\u0633",
"Body": "\u0647\u064a\u0643\u0644",
"Footer": "\u062a\u0630\u064a\u064a\u0644",
"Border color": "\u0644\u0648\u0646 \u0627\u0644\u0625\u0637\u0627\u0631",
"Insert template...": "\u062c\u0627\u0631\u064d \u0625\u062f\u0631\u0627\u062c \u0642\u0627\u0644\u0628...",
"Templates": "\u0642\u0648\u0627\u0644\u0628",
"Template": "\u0627\u0644\u0642\u0627\u0644\u0628",
"Text color": "\u0644\u0648\u0646 \u0627\u0644\u0646\u0635",
"Background color": "\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",
"Custom...": "\u062a\u062e\u0635\u064a\u0635 ...",
"Custom color": "\u0644\u0648\u0646 \u0645\u062e\u0635\u0635",
"No color": "\u0628\u062f\u0648\u0646 \u0644\u0648\u0646",
"Remove color": "\u0625\u0632\u0627\u0644\u0629 \u0644\u0648\u0646",
"Table of Contents": "\u062c\u062f\u0648\u0644 \u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a",
"Show blocks": "\u0645\u0634\u0627\u0647\u062f\u0629 \u0627\u0644\u0643\u062a\u0644",
"Show invisible characters": "\u0623\u0638\u0647\u0631 \u0627\u0644\u0623\u062d\u0631\u0641 \u0627\u0644\u063a\u064a\u0631 \u0645\u0631\u0626\u064a\u0629",
"Word count": "\u0639\u062f\u062f \u0627\u0644\u0643\u0644\u0645\u0627\u062a",
"Count": "\u0627\u0644\u0639\u062f\u062f",
"Document": "\u0627\u0644\u0645\u0633\u062a\u0646\u062f",
"Selection": "\u0627\u0644\u062a\u062d\u062f\u064a\u062f",
"Words": "\u0627\u0644\u0643\u0644\u0645\u0627\u062a",
"Words: {0}": "\u0627\u0644\u0643\u0644\u0645\u0627\u062a:{0}",
"{0} words": "{0} \u0643\u0644\u0645\u0627\u062a",
"File": "\u0645\u0644\u0641",
"Edit": "\u062a\u062d\u0631\u064a\u0631",
"Insert": "\u0625\u062f\u0631\u0627\u062c",
"View": "\u0639\u0631\u0636",
"Format": "\u062a\u0646\u0633\u064a\u0642",
"Table": "\u062c\u062f\u0648\u0644",
"Tools": "\u0623\u062f\u0627\u0648\u0627\u062a",
"Powered by {0}": "\u0645\u062f\u0639\u0648\u0645 \u0645\u0646 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0645\u0646\u0637\u0642\u0629 \u0646\u0635 \u0645\u0646\u0633\u0642. \u0627\u0636\u063a\u0637 ALT-F9 \u0644\u0644\u0642\u0627\u0626\u0645\u0629. \u0627\u0636\u063a\u0637 ALT-F10 \u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a. \u0627\u0636\u063a\u0637 ALT-0 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0633\u0627\u0639\u062f\u0629",
"Image title": "\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0635\u0648\u0631\u0629",
"Border width": "\u0639\u0631\u0636 \u0627\u0644\u062d\u062f",
"Border style": "\u0646\u0645\u0637 \u0627\u0644\u062d\u062f",
"Error": "\u062e\u0637\u0623",
"Warn": "\u062a\u062d\u0630\u064a\u0631",
"Valid": "\u0635\u062d\u064a\u062d",
"To open the popup, press Shift+Enter": "\u0644\u0641\u062a\u062d \u0627\u0644\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u0628\u062b\u0642\u0629\u060c \u0627\u0636\u063a\u0637 \u0639\u0644\u0649 Shift\u200f+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u0645\u0646\u0637\u0642\u0629 \u0646\u0635 \u0645\u0646\u0633\u0642. \u0627\u0636\u063a\u0637 ALT-0 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629.",
"System Font": "\u062e\u0637 \u0627\u0644\u0646\u0638\u0627\u0645",
"Failed to upload image: {0}": "\u0641\u0634\u0644 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0635\u0648\u0631\u0629: {0}",
"Failed to load plugin: {0} from url {1}": "\u0641\u0634\u0644 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0643\u0648\u0651\u0650\u0646 \u0627\u0644\u0625\u0636\u0627\u0641\u064a: {0} \u0645\u0646 url \u200f{1}",
"Failed to load plugin url: {0}": "\u0641\u0634\u0644 \u062a\u062d\u0645\u064a\u0644 url \u0644\u0644\u0645\u0643\u0648\u0651\u0650\u0646 \u0627\u0644\u0625\u0636\u0627\u0641\u064a: {0}",
"Failed to initialize plugin: {0}": "\u0641\u0634\u0644\u062a \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u0645\u0643\u0648\u0651\u0650\u0646 \u0627\u0644\u0625\u0636\u0627\u0641\u064a: {0}",
"example": "\u0645\u062b\u0627\u0644",
"Search": "\u0628\u062d\u062b",
"All": "\u0627\u0644\u0643\u0644",
"Currency": "\u0627\u0644\u0639\u0645\u0644\u0629",
"Text": "\u0627\u0644\u0646\u0635",
"Quotations": "\u0639\u0631\u0648\u0636 \u0627\u0644\u0623\u0633\u0639\u0627\u0631",
"Mathematical": "\u0631\u064a\u0627\u0636\u064a\u0629",
"Extended Latin": "\u0627\u0644\u0644\u0627\u062a\u064a\u0646\u064a\u0629 \u0627\u0644\u0645\u0648\u0633\u0639\u0629",
"Symbols": "\u0627\u0644\u0631\u0645\u0648\u0632",
"Arrows": "\u0627\u0644\u0623\u0633\u0647\u0645",
"User Defined": "\u0645\u0639\u0631\u0651\u064e\u0641 \u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645",
"dollar sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062f\u0648\u0644\u0627\u0631",
"currency sign": "\u0639\u0644\u0627\u0645\u0629 \u0639\u0645\u0644\u0629",
"euro-currency sign": "\u0639\u0644\u0627\u0645\u0629 \u0639\u0645\u0644\u0629 \u0627\u0644\u064a\u0648\u0631\u0648",
"colon sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0646\u0642\u0637\u062a\u064a\u0646",
"cruzeiro sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0643\u0631\u0648\u0632\u064a\u0631\u0648",
"french franc sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0641\u0631\u0646\u0643 \u0627\u0644\u0641\u0631\u0646\u0633\u064a",
"lira sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0644\u064a\u0631\u0629",
"mill sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0644",
"naira sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0646\u064a\u0631\u0629",
"peseta sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0628\u064a\u0632\u064a\u062a\u0627",
"rupee sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0631\u0648\u0628\u064a\u0629",
"won sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0648\u0646",
"new sheqel sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0634\u064a\u0643\u0644 \u0627\u0644\u062c\u062f\u064a\u062f",
"dong sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062f\u0648\u0646\u062c",
"kip sign": "\u0639\u0645\u0644\u0629 \u0627\u0644\u0643\u064a\u0628",
"tugrik sign": "\u0639\u0645\u0644\u0629 \u0627\u0644\u062a\u0648\u063a\u0631\u064a\u0643",
"drachma sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062f\u0631\u0627\u062e\u0645\u0627",
"german penny symbol": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0628\u0646\u0633 \u0627\u0644\u0623\u0644\u0645\u0627\u0646\u064a",
"peso sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0628\u064a\u0632\u0648",
"guarani sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062c\u0648\u0627\u0631\u0627\u0646\u064a",
"austral sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0623\u0648\u0633\u062a\u0631\u0627\u0644",
"hryvnia sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0647\u0631\u064a\u0641\u0646\u064a\u0627",
"cedi sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0633\u064a\u062f\u064a",
"livre tournois sign": "\u0639\u0644\u0627\u0645\u0629 \u0644\u064a\u0641\u0631 \u062a\u0648\u0631\u0646\u0648\u064a\u0632",
"spesmilo sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0627\u0633\u0628\u064a\u0632\u0645\u0627\u064a\u0644\u0648",
"tenge sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062a\u064a\u0646\u062c",
"indian rupee sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0631\u0648\u0628\u064a\u0629 \u0627\u0644\u0647\u0646\u062f\u064a\u0629",
"turkish lira sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0644\u064a\u0631\u0629 \u0627\u0644\u062a\u0631\u0643\u064a\u0629",
"nordic mark sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0646\u0648\u0631\u062f\u0643",
"manat sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0645\u0627\u0646\u0627\u062a",
"ruble sign": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0631\u0648\u0628\u0644",
"yen character": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u064a\u0646",
"yuan character": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u064a\u0648\u0627\u0646",
"yuan character, in hong kong and taiwan": "\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u064a\u0648\u0627\u0646 \u0641\u064a \u0647\u0648\u0646\u062c \u0643\u0648\u0646\u062c \u0648\u062a\u0627\u064a\u0648\u0627\u0646",
"yen\/yuan character variant one": "\u0627\u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0628\u062f\u064a\u0644\u0629 \u0644\u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u064a\u0646\/\u0627\u0644\u064a\u0648\u0627\u0646",
"Loading emoticons...": "\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0631\u0645\u0648\u0632 \u0627\u0644\u0645\u0634\u0627\u0639\u0631...",
"Could not load emoticons": "\u062c\u0627\u0631\u064d \u062a\u062d\u0645\u064a\u0644 \u0631\u0645\u0648\u0632 \u0627\u0644\u0645\u0634\u0627\u0639\u0631",
"People": "\u0623\u0634\u062e\u0627\u0635",
"Animals and Nature": "\u0627\u0644\u062d\u064a\u0648\u0627\u0646\u0627\u062a \u0648\u0627\u0644\u0637\u0628\u064a\u0639\u0629",
"Food and Drink": "\u0627\u0644\u0623\u0637\u0639\u0645\u0629 \u0648\u0627\u0644\u0645\u0634\u0631\u0648\u0628\u0627\u062a",
"Activity": "\u0627\u0644\u0646\u0634\u0627\u0637",
"Travel and Places": "\u0627\u0644\u0633\u0641\u0631 \u0648\u0627\u0644\u0623\u0645\u0627\u0643\u0646 \u0633\u064a\u0627\u062d\u064a\u0629",
"Objects": "\u0643\u0627\u0626\u0646\u0627\u062a",
"Flags": "\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062a",
"Characters": "\u0627\u0644\u0623\u062d\u0631\u0641",
"Characters (no spaces)": "\u0627\u0644\u0623\u062d\u0631\u0641 (\u062f\u0648\u0646 \u0627\u0644\u0645\u0633\u0627\u0641\u0627\u062a)",
"{0} characters": "{0} \u0631\u0645\u0648\u0632",
"Error: Form submit field collision.": "\u062e\u0637\u0623: \u062a\u0636\u0627\u0631\u0628 \u0641\u064a \u062d\u0642\u0644 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0646\u0645\u0648\u0630\u062c.",
"Error: No form element found.": "\u0627\u0644\u062e\u0637\u0623: \u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0639\u0646\u0635\u0631 \u0646\u0645\u0648\u0630\u062c.",
"Update": "\u062a\u062d\u062f\u064a\u062b",
"Color swatch": "\u0639\u064a\u0646\u0627\u062a \u0627\u0644\u0623\u0644\u0648\u0627\u0646",
"Turquoise": "\u0641\u064a\u0631\u0648\u0632\u064a",
"Green": "\u0623\u062e\u0636\u0631",
"Blue": "\u0623\u0632\u0631\u0642",
"Purple": "\u0628\u0646\u0641\u0633\u062c\u064a",
"Navy Blue": "\u0623\u0632\u0631\u0642 \u0646\u064a\u0644\u064a",
"Dark Turquoise": "\u0641\u064a\u0631\u0648\u0632\u064a \u062f\u0627\u0643\u0646",
"Dark Green": "\u0623\u062e\u0636\u0631 \u062f\u0627\u0643\u0646",
"Medium Blue": "\u0623\u0632\u0631\u0642 \u0645\u062a\u0648\u0633\u0637",
"Medium Purple": "\u0628\u0646\u0641\u0633\u062c\u064a \u0645\u062a\u0648\u0633\u0637",
"Midnight Blue": "\u0623\u0632\u0631\u0642 \u062f\u0627\u0643\u0646 \u062c\u062f\u0627\u064b",
"Yellow": "\u0623\u0635\u0641\u0631",
"Orange": "\u0628\u0631\u062a\u0642\u0627\u0644\u064a",
"Red": "\u0623\u062d\u0645\u0631",
"Light Gray": "\u0631\u0645\u0627\u062f\u064a \u0641\u0627\u062a\u062d",
"Gray": "\u0631\u0645\u0627\u062f\u064a",
"Dark Yellow": "\u0623\u0635\u0641\u0631 \u062f\u0627\u0643\u0646",
"Dark Orange": "\u0628\u0631\u062a\u0642\u0627\u0644\u064a \u062f\u0627\u0643\u0646",
"Dark Red": "\u0623\u062d\u0645\u0631 \u062f\u0627\u0643\u0646",
"Medium Gray": "\u0631\u0645\u0627\u062f\u064a \u0645\u062a\u0648\u0633\u0637",
"Dark Gray": "\u0631\u0645\u0627\u062f\u064a \u062f\u0627\u0643\u0646",
"Light Green": "\u0623\u062e\u0636\u0631 \u0641\u0627\u062a\u062d",
"Light Yellow": "\u0623\u0635\u0641\u0631 \u0641\u0627\u062a\u062d",
"Light Red": "\u0623\u062d\u0645\u0631 \u0641\u0627\u062a\u062d",
"Light Purple": "\u0628\u0646\u0641\u0633\u062c\u064a \u0641\u0627\u062a\u062d",
"Light Blue": "\u0623\u0632\u0631\u0642 \u0641\u0627\u062a\u062d",
"Dark Purple": "\u0623\u0631\u062c\u0648\u0627\u0646\u064a \u062f\u0627\u0643\u0646",
"Dark Blue": "\u0623\u0632\u0631\u0642 \u062f\u0627\u0643\u0646",
"Black": "\u0623\u0633\u0648\u062f",
"White": "\u0623\u0628\u064a\u0636",
"Switch to or from fullscreen mode": "\u0627\u0644\u062a\u0628\u062f\u064a\u0644 \u0625\u0644\u0649 \u0623\u0648 \u0645\u0646 \u0648\u0636\u0639 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
"Open help dialog": "\u0627\u0641\u062a\u062d \u062d\u0648\u0627\u0631 \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u0627\u062a",
"history": "\u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0627\u062a",
"styles": "\u0627\u0644\u0623\u0646\u0645\u0627\u0637",
"formatting": "\u062a\u0646\u0633\u064a\u0642",
"alignment": "\u0645\u062d\u0627\u0630\u0627\u0629",
"indentation": "\u0645\u0633\u0627\u0641\u0629 \u0628\u0627\u062f\u0626\u0629",
"permanent pen": "\u0642\u0644\u0645 \u062b\u0627\u0628\u062a",
"comments": "\u0627\u0644\u062a\u0639\u0644\u064a\u0642\u0627\u062a",
"Format Painter": "\u0646\u0627\u0633\u062e \u0627\u0644\u062a\u0646\u0633\u064a\u0642",
"Insert\/edit iframe": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0625\u0637\u0627\u0631 \u0645\u062f\u0645\u062c",
"Capitalization": "\u0643\u062a\u0627\u0628\u0629 \u0628\u0627\u0644\u0623\u062d\u0631\u0641 \u0627\u0644\u0643\u0628\u064a\u0631\u0629",
"lowercase": "\u0623\u062d\u0631\u0641 \u0635\u063a\u064a\u0631\u0629",
"UPPERCASE": "\u0623\u062d\u0631\u0641 \u0643\u0628\u064a\u0631\u0629",
"Title Case": "\u062d\u0627\u0644\u0629 \u0623\u062d\u0631\u0641 \u0627\u0644\u0639\u0646\u0648\u0627\u0646",
"Permanent Pen Properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0642\u0644\u0645 \u0627\u0644\u062b\u0627\u0628\u062a",
"Permanent pen properties...": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0642\u0644\u0645 \u0627\u0644\u062b\u0627\u0628\u062a...",
"Font": "\u0627\u0644\u062e\u0637",
"Size": "\u0627\u0644\u062d\u062c\u0645",
"More...": "\u0627\u0644\u0645\u0632\u064a\u062f...",
"Spellcheck Language": "\u0644\u063a\u0629 \u0627\u0644\u062a\u062f\u0642\u064a\u0642 \u0627\u0644\u0625\u0645\u0644\u0627\u0626\u064a",
"Select...": "\u062a\u062d\u062f\u064a\u062f...",
"Preferences": "\u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a",
"Yes": "\u0646\u0639\u0645",
"No": "\u0644\u0627",
"Keyboard Navigation": "\u0627\u0644\u062a\u0646\u0642\u0644 \u0628\u0648\u0627\u0633\u0637\u0629 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d",
"Version": "\u0627\u0644\u0625\u0635\u062f\u0627\u0631",
"Anchor": "\u0645\u0631\u0633\u0627\u0629",
"Special character": "\u0631\u0645\u0632",
"Code sample": "\u0639\u064a\u0651\u0646\u0629 \u0639\u0646 \u0627\u0644\u0643\u0648\u062f \u0627\u0644\u0628\u0631\u0645\u062c\u064a",
"Color": "\u0627\u0644\u0644\u0648\u0646",
"Emoticons": "\u0627\u0644\u0631\u0645\u0648\u0632",
"Document properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u0646\u062f",
"Image": "\u0627\u0644\u0635\u0648\u0631\u0629",
"Insert link": "\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637",
"Target": "\u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0647\u062f\u0641",
"Link": "\u0627\u0644\u0631\u0627\u0628\u0637",
"Poster": "\u0645\u0644\u0635\u0642",
"Media": "\u0627\u0644\u0648\u0633\u0627\u0626\u0637 \u0627\u0644\u0645\u062a\u0639\u062f\u062f\u0629",
"Print": "\u0637\u0628\u0627\u0639\u0629",
"Prev": "\u0627\u0644\u0633\u0627\u0628\u0642",
"Find and replace": "\u0628\u062d\u062b \u0648\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
"Whole words": "\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0643\u0644\u0645\u0627\u062a \u0628\u0627\u0644\u0643\u0627\u0645\u0644",
"Spellcheck": "\u062a\u062f\u0642\u064a\u0642 \u0625\u0645\u0644\u0627\u0626\u064a",
"Caption": "\u0634\u0631\u062d",
"Insert template": "\u0625\u062f\u0631\u0627\u062c \u0642\u0627\u0644\u0628",
"_dir": "rtl"
});js/tinymce/langs/da.js000064400000041321151727150300010660 0ustar00tinymce.addI18n('da',{
"Redo": "Gendan",
"Undo": "Fortryd",
"Cut": "Klip",
"Copy": "Kopier",
"Paste": "S\u00e6t ind",
"Select all": "V\u00e6lg alle",
"New document": "Nyt dokument",
"Ok": "Ok",
"Cancel": "Annuller",
"Visual aids": "Visuel hj\u00e6lp",
"Bold": "Fed",
"Italic": "Kursiv",
"Underline": "Understreget",
"Strikethrough": "Gennemstreget",
"Superscript": "H\u00e6vet skrift",
"Subscript": "S\u00e6nket skrift",
"Clear formatting": "Nulstil formattering",
"Align left": "Opstil til venstre",
"Align center": "Centrer",
"Align right": "Opstil til h\u00f8jre",
"Justify": "Justering",
"Bullet list": "Punktopstillet liste",
"Numbered list": "Nummereret liste",
"Decrease indent": "Formindsk indrykning",
"Increase indent": "For\u00f8g indrykning",
"Close": "Luk",
"Formats": "Formater",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser underst\u00f8tter ikke direkte adgang til udklipsholder. Benyt Ctrl+X\/C\/ tastaturgenveje i stedet for.",
"Headers": "Overskrifter",
"Header 1": "Overskrift 1",
"Header 2": "Overskrift 2",
"Header 3": "Overskrift 3",
"Header 4": "Overskrift 4",
"Header 5": "Overskrift 5",
"Header 6": "Overskrift 6",
"Headings": "Overskrifter",
"Heading 1": "Overskrift 1",
"Heading 2": "Overskrift 2",
"Heading 3": "Overskrift 3",
"Heading 4": "Overskrift 4",
"Heading 5": "Overskrift 5",
"Heading 6": "Overskrift 6",
"Preformatted": "Forudformateret",
"Div": "Div",
"Pre": "Pre",
"Code": "Kode",
"Paragraph": "Afsnit",
"Blockquote": "Blockquote",
"Inline": "Inline",
"Blocks": "Blokke",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "S\u00e6t ind er indstillet til at inds\u00e6tte som ren tekst. Indhold bliver nu indsat uden formatering indtil du \u00e6ndrer indstillingen.",
"Fonts": "Skrifttyper",
"Font Sizes": "Skriftst\u00f8rrelse",
"Class": "Class",
"Browse for an image": "S\u00f8g efter et billede",
"OR": "OR",
"Drop an image here": "Slip et billede her",
"Upload": "Upload",
"Block": "Blok\u00e9r",
"Align": "Align",
"Default": "Standard",
"Circle": "Cirkel",
"Disc": "Disk",
"Square": "Kvadrat",
"Lower Alpha": "Lower Alpha",
"Lower Greek": "Lower Gr\u00e6sk",
"Lower Roman": "Lower Roman",
"Upper Alpha": "Upper Alpha",
"Upper Roman": "Upper Roman",
"Anchor...": "Anker...",
"Name": "Navn",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id b\u00f8r starte med et bogstav, efterfulgt af bogstaver, tal, bindestreger, punktummer, koloner eller underscores.",
"You have unsaved changes are you sure you want to navigate away?": "Du har ikke gemte \u00e6ndringer. Er du sikker p\u00e5 at du vil forts\u00e6tte?",
"Restore last draft": "Genopret sidste kladde",
"Special character...": "Specielle tegn...",
"Source code": "Kildekode",
"Insert\/Edit code sample": "Inds\u00e6t\/Ret kodeeksempel",
"Language": "Sprog",
"Code sample...": "Kodeeksempel...",
"Color Picker": "Farvev\u00e6lger",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Venstre til h\u00f8jre",
"Right to left": "H\u00f8jre til venstre",
"Emoticons": "Emot-ikoner",
"Emoticons...": "Emotikoner...",
"Metadata and Document Properties": "Metadata og dokumentegenskaber",
"Title": "Titel",
"Keywords": "S\u00f8geord",
"Description": "Beskrivelse",
"Robots": "Robotter",
"Author": "Forfatter",
"Encoding": "Kodning",
"Fullscreen": "Fuldsk\u00e6rm",
"Action": "Handling",
"Shortcut": "Genvej",
"Help": "Hj\u00e6lp",
"Address": "Adresse",
"Focus to menubar": "Fokus p\u00e5 menulinjen",
"Focus to toolbar": "Fokus p\u00e5 v\u00e6rkt\u00f8jslinjen",
"Focus to element path": "Fokuser p\u00e5 elementvej",
"Focus to contextual toolbar": "Fokuser p\u00e5 kontekstuelle v\u00e6rkt\u00f8jslinje",
"Insert link (if link plugin activated)": "Inds\u00e6t link (hvis link plugin er aktiveret)",
"Save (if save plugin activated)": "Gem (hvis save plugin er aktiveret)",
"Find (if searchreplace plugin activated)": "Find (hvis searchreplace plugin er aktiveret)",
"Plugins installed ({0}):": "Installerede plugins ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "L\u00e6r mere...",
"You are using {0}": "Du benytter {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Praktiske Genveje",
"Horizontal line": "Vandret linie",
"Insert\/edit image": "Inds\u00e6t\/ret billede",
"Alternative description": "Alternativ beskrivelse",
"Accessibility": "Tilg\u00e6ngelighed",
"Image is decorative": "Billede er dekorativt",
"Source": "Kilde",
"Dimensions": "Dimensioner",
"Constrain proportions": "Behold propertioner",
"General": "Generet",
"Advanced": "Avanceret",
"Style": "Stil",
"Vertical space": "Lodret afstand",
"Horizontal space": "Vandret afstand",
"Border": "Kant",
"Insert image": "Inds\u00e6t billede",
"Image...": "Billede...",
"Image list": "Billede liste",
"Rotate counterclockwise": "Drej modsat urets retning",
"Rotate clockwise": "Drej med urets retning",
"Flip vertically": "Flip vertikalt",
"Flip horizontally": "Flip horisontalt",
"Edit image": "Rediger billede",
"Image options": "Billede indstillinger",
"Zoom in": "Zoom ind",
"Zoom out": "Zoom ud",
"Crop": "Besk\u00e6r",
"Resize": "Skaler",
"Orientation": "Retning",
"Brightness": "Lysstyrke",
"Sharpen": "G\u00f8r skarpere",
"Contrast": "Kontrast",
"Color levels": "Farve niveauer",
"Gamma": "Gamma",
"Invert": "Inverter",
"Apply": "Anvend",
"Back": "Tilbage",
"Insert date\/time": "Inds\u00e6t dato\/klokkeslet",
"Date\/time": "Dato\/klokkeslet",
"Insert\/edit link": "Inds\u00e6t\/ret link",
"Text to display": "Vis tekst",
"Url": "Url",
"Open link in...": "\u00c5bn link med...",
"Current window": "Aktuelle vindue",
"None": "Ingen",
"New window": "Nyt vindue",
"Open link": "\u00c5ben link",
"Remove link": "Fjern link",
"Anchors": "Ankre",
"Link...": "Link...",
"Paste or type a link": "Inds\u00e6t eller skriv et link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URLen som du angav ser ud til at v\u00e6re en email adresse. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks  mailto: ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URLen som du angav ser ud til at v\u00e6re et eksternt link. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks http:\/\/ ?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "URL'en som du angav ser ud til at v\u00e6re et eksternt link. \u00d8nsker du at tilf\u00f8je det n\u00f8dvendige https:\/\/ pr\u00e6fiks?",
"Link list": "Link liste",
"Insert video": "Inds\u00e6t video",
"Insert\/edit video": "Inds\u00e6t\/ret video",
"Insert\/edit media": "Inds\u00e6t\/ret medier",
"Alternative source": "Alternativ kilde",
"Alternative source URL": "Alternativ kilde URL",
"Media poster (Image URL)": "Medieplakat (billede URL)",
"Paste your embed code below:": "Inds\u00e6t din embed kode herunder:",
"Embed": "Integrer",
"Media...": "Medie...",
"Nonbreaking space": "H\u00e5rdt mellemrum",
"Page break": "Sideskift",
"Paste as text": "Inds\u00e6t som ren tekst",
"Preview": "Forh\u00e5ndsvisning",
"Print...": "Udskriv...",
"Save": "Gem",
"Find": "Find",
"Replace with": "Erstat med",
"Replace": "Erstat",
"Replace all": "Erstat alt",
"Previous": "Forrige",
"Next": "N\u00e6ste",
"Find and Replace": "Find og erstat",
"Find and replace...": "Find og erstat...",
"Could not find the specified string.": "Kunne ikke finde s\u00f8getekst",
"Match case": "STORE og sm\u00e5 bogstaver",
"Find whole words only": "Find kun hele ord",
"Find in selection": "Find i det valgte",
"Spellcheck": "Stavekontrol",
"Spellcheck Language": "Sprog til stavekontrol",
"No misspellings found.": "Ingen stavefejl fundet.",
"Ignore": "Ignorer",
"Ignore all": "Ignorer alt",
"Finish": "F\u00e6rdig",
"Add to Dictionary": "Tilf\u00f8j til ordbog",
"Insert table": "Inds\u00e6t tabel",
"Table properties": "Tabel egenskaber",
"Delete table": "Slet tabel",
"Cell": "Celle",
"Row": "R\u00e6kke",
"Column": "Kolonne",
"Cell properties": "Celle egenskaber",
"Merge cells": "Flet celler",
"Split cell": "Split celle",
"Insert row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
"Insert row after": "Inds\u00e6t r\u00e6kke efter",
"Delete row": "Slet r\u00e6kke",
"Row properties": "R\u00e6kke egenskaber",
"Cut row": "Klip r\u00e6kke",
"Copy row": "Kopier r\u00e6kke",
"Paste row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
"Paste row after": "Inds\u00e6t r\u00e6kke efter",
"Insert column before": "Inds\u00e6t kolonne f\u00f8r",
"Insert column after": "Inds\u00e6t kolonne efter",
"Delete column": "Slet kolonne",
"Cols": "Kolonne",
"Rows": "R\u00e6kker",
"Width": "Bredde",
"Height": "H\u00f8jde",
"Cell spacing": "Celle afstand",
"Cell padding": "Celle padding",
"Caption": "Tekst",
"Show caption": "Vis overskrift",
"Left": "Venstre",
"Center": "Centrering",
"Right": "H\u00f8jre",
"Cell type": "Celle type",
"Scope": "Anvendelsesomr\u00e5de",
"Alignment": "Tilpasning",
"H Align": "H juster",
"V Align": "V juster",
"Top": "Top",
"Middle": "Midt",
"Bottom": "Bund",
"Header cell": "Sidehoved celle",
"Row group": "R\u00e6kke gruppe",
"Column group": "Kolonne gruppe",
"Row type": "R\u00e6kke type",
"Header": "Sidehoved",
"Body": "Krop",
"Footer": "Sidefod",
"Border color": "Kant farve",
"Insert template...": "Inds\u00e6t skabelon...",
"Templates": "Skabeloner",
"Template": "Skabelon",
"Text color": "Tekst farve",
"Background color": "Baggrunds farve",
"Custom...": "Brugerdefineret...",
"Custom color": "Brugerdefineret farve",
"No color": "Ingen farve",
"Remove color": "Fjern farve",
"Table of Contents": "Indholdsfortegnelse",
"Show blocks": "Vis klokke",
"Show invisible characters": "Vis usynlige tegn",
"Word count": "Optalte ord",
"Count": "Antal",
"Document": "Dokument",
"Selection": "Valg",
"Words": "Ord",
"Words: {0}": "Ord: {0}",
"{0} words": "{0} ord",
"File": "Fil",
"Edit": "Rediger",
"Insert": "Inds\u00e6t",
"View": "Vis",
"Format": "Format",
"Table": "Tabel",
"Tools": "V\u00e6rkt\u00f8j",
"Powered by {0}": "Drevet af {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text omr\u00e5de. Tryk ALT-F9 for menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\u00e6lp",
"Image title": "Billedtitel",
"Border width": "Kantbredde",
"Border style": "Kantstil",
"Error": "Fejl",
"Warn": "Advar",
"Valid": "Gyldig",
"To open the popup, press Shift+Enter": "Tryk skift + enter for at \u00e5bne pop op",
"Rich Text Area. Press ALT-0 for help.": "Rich tekst omr\u00e5de. Tryk p\u00e5 ALT-0 for hj\u00e6lp.",
"System Font": "Systemskrifttype",
"Failed to upload image: {0}": "Mislykket billed-upload:",
"Failed to load plugin: {0} from url {1}": "Mislykket plugin indl\u00e6sning: {0}  fra url {1}",
"Failed to load plugin url: {0}": "Mislykket indl\u00e6sning af plugin-url: {0}",
"Failed to initialize plugin: {0}": "Mislykket initiering a plugin: {0}",
"example": "eksempel",
"Search": "S\u00f8g",
"All": "Alle",
"Currency": "Valuta",
"Text": "Tekst",
"Quotations": "Anf\u00f8rselstegn",
"Mathematical": "Matematiske tegn",
"Extended Latin": "Udvidet Latin",
"Symbols": "Symboler",
"Arrows": "Pile",
"User Defined": "Brugerdefineret",
"dollar sign": "dollartegn",
"currency sign": "valutategn",
"euro-currency sign": "euro-tegn",
"colon sign": "kolontegn",
"cruzeiro sign": "cruzeiro-tegn",
"french franc sign": "fransk frank-tegn",
"lira sign": "lira-tegn",
"mill sign": "mill-tegn",
"naira sign": "naira-tegn",
"peseta sign": "peseta-tegn",
"rupee sign": "rupee-tegn",
"won sign": "won-tegn",
"new sheqel sign": "ny sheqel-tegn",
"dong sign": "dong-tegn",
"kip sign": "kip-tegn",
"tugrik sign": "tugrik-tegn",
"drachma sign": "drakmer-tegn",
"german penny symbol": "tysk penny-symbol",
"peso sign": "peso-tegn",
"guarani sign": "guarani-tegn",
"austral sign": "austral-tegn",
"hryvnia sign": "hryvnia-tegn",
"cedi sign": "cedi-tegn",
"livre tournois sign": "livre tournois-tegn",
"spesmilo sign": "spesmilo-tegn",
"tenge sign": "tenge-tegn",
"indian rupee sign": "indisk rupee-tegn",
"turkish lira sign": "tyrkisk lira-tegn",
"nordic mark sign": "nordisk mark-tegn",
"manat sign": "manat-tegn",
"ruble sign": "rubel-tegn",
"yen character": "yen-tegn",
"yuan character": "yuan-tegn",
"yuan character, in hong kong and taiwan": "yuan-tegn, i hong kong og taiwan",
"yen\/yuan character variant one": "yen\/yuan-tegn variant en",
"Loading emoticons...": "Indl\u00e6ser emotikoner...",
"Could not load emoticons": "Kunne ikke indl\u00e6se emotikoner",
"People": "Folk",
"Animals and Nature": "Dyr og natur",
"Food and Drink": "F\u00f8de og drikke",
"Activity": "Aktivitet",
"Travel and Places": "Rejser og steder",
"Objects": "Objekter",
"Flags": "Flag",
"Characters": "Tegn",
"Characters (no spaces)": "Tegn (uden mellemrum)",
"{0} characters": "{0} tegn",
"Error: Form submit field collision.": "Fejl: Form submit felt kollision",
"Error: No form element found.": "Fejl: Ingen form element fundet.",
"Update": "Opdater",
"Color swatch": "Farvepr\u00f8ve",
"Turquoise": "Turkis",
"Green": "Gr\u00f8n",
"Blue": "Bl\u00e5",
"Purple": "Lilla",
"Navy Blue": "Marinebl\u00e5",
"Dark Turquoise": "M\u00f8rketurkis",
"Dark Green": "M\u00f8rkegr\u00f8n",
"Medium Blue": "Medium bl\u00e5",
"Medium Purple": "Medium lilla",
"Midnight Blue": "Midnatsbl\u00e5",
"Yellow": "Gul",
"Orange": "Orange",
"Red": "R\u00f8d",
"Light Gray": "Lysegr\u00e5",
"Gray": "Gr\u00e5",
"Dark Yellow": "M\u00f8rkegul",
"Dark Orange": "M\u00f8rkeorange",
"Dark Red": "M\u00f8rker\u00f8d",
"Medium Gray": "Mellemgr\u00e5",
"Dark Gray": "M\u00f8rkegr\u00e5",
"Light Green": "Lysegr\u00f8n",
"Light Yellow": "Lysegul",
"Light Red": "Lyser\u00f8d",
"Light Purple": "Lyslilla",
"Light Blue": "Lysebl\u00e5",
"Dark Purple": "M\u00f8rkelilla",
"Dark Blue": "M\u00f8rkebl\u00e5",
"Black": "Sort",
"White": "Hvid",
"Switch to or from fullscreen mode": "Skift til eller fra fuldsk\u00e6rmstilstand",
"Open help dialog": "\u00c5bn hj\u00e6lpedialog",
"history": "historie",
"styles": "stile",
"formatting": "formatering",
"alignment": "justering",
"indentation": "indrykning",
"Font": "Skrifttype",
"Size": "St\u00f8rrelse",
"More...": "Mere...",
"Select...": "V\u00e6lg...",
"Preferences": "Pr\u00e6ferencer",
"Yes": "Ja",
"No": "Nej",
"Keyboard Navigation": "Navigation med tastatur",
"Version": "Version",
"Code view": "Kodevisning",
"Open popup menu for split buttons": "\u00c5ben popup menu for split knapper",
"List Properties": "List indstillinger",
"List properties...": "List indstillinger...",
"Start list at number": "Start liste ved nummer",
"Line height": "Linjeh\u00f8jde",
"comments": "kommentarer",
"Format Painter": "Formatpensel",
"Insert\/edit iframe": "Inds\u00e6t\/rediger iframe",
"Capitalization": "Store bogstaver",
"lowercase": "sm\u00e5 bogstaver",
"UPPERCASE": "STORE BOGSTAVER",
"Title Case": "Stort begyndelsesbogstav",
"permanent pen": "permanent pen",
"Permanent Pen Properties": "Permanente penegenskaber",
"Permanent pen properties...": "Permanente penegenskaber...",
"case change": "\u00e6ndring af stort\/sm\u00e5t",
"page embed": "side indlejring",
"Advanced sort...": "Avanceret sortering...",
"Advanced Sort": "Avanceret sortering",
"Sort table by column ascending": "Sorter tabel efter kolonne stigende",
"Sort table by column descending": "Sorter tabel efter kolonne faldende",
"Sort": "Sorter",
"Order": "R\u00e6kkef\u00f8lge",
"Sort by": "Sorter efter",
"Ascending": "Stigende",
"Descending": "Faldende",
"Column {0}": "Kolonne {0}",
"Row {0}": "R\u00e6kke {0}",
"Spellcheck...": "Stavekontrol...",
"Misspelled word": "Ord med stavefejl",
"Suggestions": "Forslag",
"Change": "\u00c6ndring",
"Finding word suggestions": "Finder ord forslag",
"Success": "Succes",
"Repair": "Reparer",
"Issue {0} of {1}": "Problem {0} ud af {1}",
"Images must be marked as decorative or have an alternative text description": "Billeder skal markeres som dekorative eller have en alternativ tekstbeskrivelse",
"Images must have an alternative text description. Decorative images are not allowed.": "Billeder skal have en alternativ tekstbeskrivelse. Dekorative billeder er ikke tilladte.",
"Or provide alternative text:": "Eller angiv en alternativ tekst:",
"Make image decorative:": "G\u00f8r billede dekorativ:",
"ID attribute must be unique": "ID attribut skal v\u00e6re unik",
"Make ID unique": "G\u00f8r ID unik",
"Keep this ID and remove all others": "Behold dette ID og fjern alle andre",
"Remove this ID": "Fjern dette ID",
"Remove all IDs": "Fjern alle ID'er",
"Checklist": "Kontrolliste",
"Anchor": "Anchor",
"Special character": "Specielle tegn",
"Code sample": "Kodepr\u00f8ve",
"Color": "Farve",
"Document properties": "Dokument egenskaber",
"Image description": "Billede beskrivelse",
"Image": "Billede",
"Insert link": "Inds\u00e6t link",
"Target": "Target",
"Link": "Link",
"Poster": "Poster",
"Media": "Medier",
"Print": "Udskriv",
"Prev": "Forrige",
"Find and replace": "Find og erstat",
"Whole words": "Hele ord",
"Insert template": "Inds\u00e6t skabelon"
});js/tinymce/langs/en_CA.js000064400000020561151727150300011244 0ustar00tinymce.addI18n('en_CA',{
"Redo": "Redo",
"Undo": "Undo",
"Cut": "Cut",
"Copy": "Copy",
"Paste": "Paste",
"Select all": "Select all",
"New document": "New document",
"Ok": "Ok",
"Cancel": "Cancel",
"Visual aids": "Visual aids",
"Bold": "Bold",
"Italic": "Italic",
"Underline": "Underline",
"Strikethrough": "Strikethrough",
"Superscript": "Superscript",
"Subscript": "Subscript",
"Clear formatting": "Clear formatting",
"Align left": "Align left",
"Align center": "Align center",
"Align right": "Align right",
"Justify": "Justify",
"Bullet list": "Bullet list",
"Numbered list": "Numbered list",
"Decrease indent": "Decrease indent",
"Increase indent": "Increase indent",
"Close": "Close",
"Formats": "Formats",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
"Headers": "Headers",
"Header 1": "Header 1",
"Header 2": "Header 2",
"Header 3": "Header 3",
"Header 4": "Header 4",
"Header 5": "Header 5",
"Header 6": "Header 6",
"Headings": "Headings",
"Heading 1": "Heading 1",
"Heading 2": "Heading 2",
"Heading 3": "Heading 3",
"Heading 4": "Heading 4",
"Heading 5": "Heading 5",
"Heading 6": "Heading 6",
"Preformatted": "Preformatted",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "Paragraph",
"Blockquote": "Blockquote",
"Inline": "Inline",
"Blocks": "Blocks",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
"Font Family": "Font Family",
"Font Sizes": "Font Sizes",
"Class": "Class",
"Browse for an image": "Browse for an image",
"OR": "OR",
"Drop an image here": "Drop an image here",
"Upload": "Upload",
"Block": "Blocks",
"Align": "Align",
"Default": "Default",
"Circle": "Circle",
"Disc": "Disc",
"Square": "Square",
"Lower Alpha": "Lower Alpha",
"Lower Greek": "Lower Greek",
"Lower Roman": "Lower Roman",
"Upper Alpha": "Upper Alpha",
"Upper Roman": "Upper Roman",
"Anchor": "Anchor",
"Name": "Name",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID should start with a letter, followed only by letters, numbers, dashes, dots, colons, or underscores.",
"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
"Restore last draft": "Restore last draft",
"Special character": "Special character",
"Source code": "Source code",
"Insert\/Edit code sample": "Insert\/Edit code sample",
"Language": "Language",
"Code sample": "Code sample",
"Color": "Colour",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Left to right",
"Right to left": "Right to left",
"Emoticons": "Emoticons",
"Document properties": "Document properties",
"Title": "Title",
"Keywords": "Keywords",
"Description": "Description",
"Robots": "Robots",
"Author": "Author",
"Encoding": "Encoding",
"Fullscreen": "Fullscreen",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "Horizontal line",
"Insert\/edit image": "Insert\/edit image",
"Image description": "Image description",
"Source": "Source",
"Dimensions": "Dimensions",
"Constrain proportions": "Constrain proportions",
"General": "General",
"Advanced": "Advanced",
"Style": "Style",
"Vertical space": "Vertical space",
"Horizontal space": "Horizontal space",
"Border": "Border",
"Insert image": "Insert image",
"Image": "Image",
"Image list": "Image list",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Colour levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "Insert date\/time",
"Date\/time": "Date\/time",
"Insert link": "Insert link",
"Insert\/edit link": "Insert\/edit link",
"Text to display": "Text to display",
"Url": "Url",
"Target": "Target",
"None": "None",
"New window": "New window",
"Remove link": "Remove link",
"Anchors": "Anchors",
"Link": "Link",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
"Link list": "Link list",
"Insert video": "Insert video",
"Insert\/edit video": "Insert\/edit video",
"Insert\/edit media": "Insert\/edit media",
"Alternative source": "Alternative source",
"Poster": "Poster",
"Paste your embed code below:": "Paste your embed code below:",
"Embed": "Embed",
"Media": "Media",
"Nonbreaking space": "Nonbreaking space",
"Page break": "Page break",
"Paste as text": "Paste as text",
"Preview": "Preview",
"Print": "Print",
"Save": "Save",
"Find": "Find",
"Replace with": "Replace with",
"Replace": "Replace",
"Replace all": "Replace all",
"Prev": "Prev",
"Next": "Next",
"Find and replace": "Find and replace",
"Could not find the specified string.": "Could not find the specified string.",
"Match case": "Match case",
"Whole words": "Whole words",
"Spellcheck": "Spellcheck",
"Ignore": "Ignore",
"Ignore all": "Ignore all",
"Finish": "Finish",
"Add to Dictionary": "Add to Dictionary",
"Insert table": "Insert table",
"Table properties": "Table properties",
"Delete table": "Delete table",
"Cell": "Cell",
"Row": "Row",
"Column": "Column",
"Cell properties": "Cell properties",
"Merge cells": "Merge cells",
"Split cell": "Split cell",
"Insert row before": "Insert row before",
"Insert row after": "Insert row after",
"Delete row": "Delete row",
"Row properties": "Row properties",
"Cut row": "Cut row",
"Copy row": "Copy row",
"Paste row before": "Paste row before",
"Paste row after": "Paste row after",
"Insert column before": "Insert column before",
"Insert column after": "Insert column after",
"Delete column": "Delete column",
"Cols": "Cols",
"Rows": "Rows",
"Width": "Width",
"Height": "Height",
"Cell spacing": "Cell spacing",
"Cell padding": "Cell padding",
"Caption": "Caption",
"Left": "Left",
"Center": "Center",
"Right": "Right",
"Cell type": "Cell type",
"Scope": "Scope",
"Alignment": "Alignment",
"H Align": "H Align",
"V Align": "V Align",
"Top": "Top",
"Middle": "Middle",
"Bottom": "Bottom",
"Header cell": "Header cell",
"Row group": "Row group",
"Column group": "Column group",
"Row type": "Row type",
"Header": "Header",
"Body": "Body",
"Footer": "Footer",
"Border color": "Border colour",
"Insert template": "Insert template",
"Templates": "Templates",
"Template": "Template",
"Text color": "Text colour",
"Background color": "Background colour",
"Custom...": "Custom...",
"Custom color": "Custom colour",
"No color": "No colour",
"Table of Contents": "Table of Contents",
"Show blocks": "Show blocks",
"Show invisible characters": "Show invisible characters",
"Words: {0}": "Words: {0}",
"{0} words": "{0} words",
"File": "File",
"Edit": "Edit",
"Insert": "Insert",
"View": "View",
"Format": "Format",
"Table": "Table",
"Tools": "Tools",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"
});js/tinymce/langs/lb.js000064400000017470151727150300010701 0ustar00tinymce.addI18n('lb',{
"Cut": "Ausschneiden",
"Heading 5": "Iwwerschr\u00ebft 5",
"Header 2": "Titel 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "D\u00e4i Web-Browser \u00ebnnerst\u00ebtzt keen direkten Acc\u00e8s op d'Zw\u00ebschenaplag. Benotz w.e.gl. CTRL+C fir den ausgewielten Text ze kop\u00e9ieren an CTRL+V fir en anzepechen.",
"Heading 4": "Iwwerschr\u00ebft 4",
"Div": "DIV",
"Heading 2": "Iwwerschr\u00ebft 2",
"Paste": "Apechen",
"Close": "Zoumaachen",
"Font Family": "Schr\u00ebft-Famill",
"Pre": "PRE",
"Align right": "Riets align\u00e9iert",
"New document": "Neit Dokument",
"Blockquote": "Zitat",
"Numbered list": "Nummer\u00e9iert L\u00ebscht",
"Heading 1": "Iwwerschr\u00ebft 1",
"Headings": "Iwwerschr\u00ebften",
"Increase indent": "Ident\u00e9ierung vergr\u00e9isseren",
"Formats": "Formater",
"Headers": "Titelen",
"Select all": "Alles auswielen",
"Header 3": "Titel 3",
"Blocks": "Bl\u00e9ck",
"Undo": "R\u00e9ckg\u00e4ngeg maachen",
"Strikethrough": "Duerchgestrach",
"Bullet list": "Opzielung",
"Header 1": "Titel 1",
"Superscript": "H\u00e9ichgestallt",
"Clear formatting": "Format\u00e9ierung l\u00e4schen",
"Font Sizes": "Schr\u00ebft-Gr\u00e9issten",
"Subscript": "Erofgestallt",
"Header 6": "Titel 6",
"Redo": "Widderhuelen",
"Paragraph": "Paragraph",
"Ok": "Okee",
"Bold": "Fett",
"Code": "CODE",
"Italic": "Kursiv",
"Align center": "Zentr\u00e9iert",
"Header 5": "Titel 5",
"Heading 6": "Iwwerschr\u00ebft 6",
"Heading 3": "Iwwerschr\u00ebft 3",
"Decrease indent": "Ident\u00e9ierung verklengeren",
"Header 4": "Titel 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\"Apechen\" ass elo am Textmodus. Inhalter ginn elo ouni Format\u00e9ierungen agepecht bis du d\u00ebs Optioun ausm\u00e9chs.",
"Underline": "\u00cbnnerstrach",
"Cancel": "Ofbriechen",
"Justify": "Blocksaz",
"Inline": "Inline",
"Copy": "Kop\u00e9ieren",
"Align left": "L\u00e9nks align\u00e9iert",
"Visual aids": "Visuell H\u00ebllefen",
"Lower Greek": "Klengt griichescht Alphabet",
"Square": "Quadrat",
"Default": "Standard",
"Lower Alpha": "Klengt Alphabet",
"Circle": "Krees",
"Disc": "Scheif",
"Upper Alpha": "Grousst Alphabet",
"Upper Roman": "Grousst r\u00e9imescht Alphabet",
"Lower Roman": "Klengt r\u00e9imescht Alphabet",
"Name": "Numm",
"Anchor": "Anker",
"You have unsaved changes are you sure you want to navigate away?": "Du hues ongesp\u00e4ichert \u00c4nnerungen. W\u00eblls du s\u00e9cher ewechnavig\u00e9ieren?",
"Restore last draft": "Leschten Entworf er\u00ebm zr\u00e9cksetzen",
"Special character": "Speziell Zeechen",
"Source code": "Quelltext",
"B": "B",
"R": "R",
"G": "G",
"Color": "Faarf",
"Right to left": "Vu riets no l\u00e9nks",
"Left to right": "Vu l\u00e9nks no riets",
"Emoticons": "Smileyen",
"Robots": "Robotter",
"Document properties": "Eegeschafte vum Dokument",
"Title": "Titel",
"Keywords": "Schl\u00ebsselwierder",
"Encoding": "Cod\u00e9ierung",
"Description": "Beschreiwung",
"Author": "Auteur",
"Fullscreen": "Vollbildschierm",
"Horizontal line": "Horizontal Linn",
"Horizontal space": "Horizontalen Espace",
"Insert\/edit image": "Bild af\u00fcgen\/\u00e4nneren",
"General": "Allgemeng",
"Advanced": "Erweidert",
"Source": "Quell",
"Border": "Rand",
"Constrain proportions": "Proportioune b\u00e4ibehalen",
"Vertical space": "Vertikalen Espace",
"Image description": "Bildbeschreiwung",
"Style": "Stil",
"Dimensions": "Dimensiounen",
"Insert image": "Bild af\u00fcgen",
"Zoom in": "Zoom in",
"Contrast": "Contrast",
"Back": "Back",
"Gamma": "Gamma",
"Flip horizontally": "Flip horizontally",
"Resize": "Resize",
"Sharpen": "Sharpen",
"Zoom out": "Zoom out",
"Image options": "Image options",
"Apply": "Apply",
"Brightness": "Brightness",
"Rotate clockwise": "Rotate clockwise",
"Rotate counterclockwise": "Rotate counterclockwise",
"Edit image": "Edit image",
"Color levels": "Color levels",
"Crop": "Crop",
"Orientation": "Orientation",
"Flip vertically": "Flip vertically",
"Invert": "Invert",
"Insert date\/time": "Datum\/Z\u00e4it drasetzen",
"Remove link": "Link l\u00e4schen",
"Url": "URL",
"Text to display": "Text deen unzeweisen ass",
"Anchors": "Ankeren",
"Insert link": "Link drasetzen",
"New window": "Nei F\u00ebnster",
"None": "Keen",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "D'URL d\u00e9i s du aginn hues sch\u00e9ngt en externe Link ze sinn. W\u00eblls du den \"http:\/\/\"-Pr\u00e4fix dob\u00e4isetzen?",
"Target": "Zil",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "D'URL d\u00e9i s du aginn hues sch\u00e9ngt eng Email-Adress ze sinn. W\u00eblls du de \"mailto:\"-Pr\u00e4fix dob\u00e4isetzen?",
"Insert\/edit link": "Link drasetzen\/\u00e4nneren",
"Insert\/edit video": "Video drasetzen\/\u00e4nneren",
"Poster": "Pouster",
"Alternative source": "Alternativ Quell",
"Paste your embed code below:": "Abannungscode hei apechen:",
"Insert video": "Video drasetzen",
"Embed": "Abannen",
"Nonbreaking space": "Net\u00ebmbriechenden Espace",
"Page break": "S\u00e4iten\u00ebmbroch",
"Paste as text": "Als Text apechen",
"Preview": "Kucken",
"Print": "Dr\u00e9cken",
"Save": "Sp\u00e4icheren",
"Could not find the specified string.": "Den Text konnt net fonnt ginn.",
"Replace": "Ersetzen",
"Next": "Weider",
"Whole words": "Ganz Wierder",
"Find and replace": "Fannen an ersetzen",
"Replace with": "Ersetze mat",
"Find": "Fannen",
"Replace all": "All ersetzen",
"Match case": "Grouss-\/Klengschreiwung respekt\u00e9ieren",
"Prev": "Zr\u00e9ck",
"Spellcheck": "Verbesseren",
"Finish": "Ofschl\u00e9issen",
"Ignore all": "All ignor\u00e9ieren",
"Ignore": "Ignor\u00e9ieren",
"Add to Dictionary": "An den Dictionnaire androen",
"Insert row before": "Rei virdrun drasetzen",
"Rows": "Reien",
"Height": "H\u00e9icht",
"Paste row after": "Rei herno apechen",
"Alignment": "Align\u00e9ierung",
"Border color": "Rumm-Faarf",
"Column group": "Kolonnegrupp",
"Row": "Rei",
"Insert column before": "Kolonn virdrun drasetzen",
"Split cell": "Zell opspl\u00e9cken",
"Cell padding": "Zellenopf\u00ebllung",
"Cell spacing": "Zellenofstand",
"Row type": "Reientyp",
"Insert table": "Tabell drasetzen",
"Body": "Kierper",
"Caption": "Beschr\u00ebftung",
"Footer": "Fouss",
"Delete row": "Rei l\u00e4schen",
"Paste row before": "Rei virdrun apechen",
"Scope": "Ber\u00e4ich",
"Delete table": "Tabell l\u00e4schen",
"H Align": "H-Align\u00e9ierung",
"Top": "Uewen",
"Header cell": "Kappzell",
"Column": "Kolonn",
"Row group": "Reiegrupp",
"Cell": "Zell",
"Middle": "M\u00ebtt",
"Cell type": "Zellentyp",
"Copy row": "Rei kop\u00e9ieren",
"Row properties": "Eegeschafte vu Reien",
"Table properties": "Eegeschafte vun Tabellen",
"Bottom": "\u00cbnnen",
"V Align": "V-Align\u00e9ierung",
"Header": "Kapp",
"Right": "Riets",
"Insert column after": "Kolonn herno drasetzen",
"Cols": "Kolonnen",
"Insert row after": "Rei herno drasetzen",
"Width": "Breet",
"Cell properties": "Eegeschafte vun Zellen",
"Left": "L\u00e9nks",
"Cut row": "Rei ausschneiden",
"Delete column": "Kolonn l\u00e4schen",
"Center": "M\u00ebtt",
"Merge cells": "Zelle fusion\u00e9ieren",
"Insert template": "Virlag drasetzen",
"Templates": "Virlagen",
"Background color": "Hanndergrondfaarf",
"Custom...": "Eegen...",
"Custom color": "Eege Faarf",
"No color": "Keng Faarf",
"Text color": "Textfaarf",
"Show blocks": "Bl\u00e9ck weisen",
"Show invisible characters": "Onsiichtbar Zeeche weisen",
"Words: {0}": "Wierder: {0}",
"Insert": "Drasetzen",
"File": "Fichier",
"Edit": "\u00c4nneren",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ber\u00e4ich fir format\u00e9ierten Text. Dr\u00e9ck ALT+F9 fir de Men\u00fc. Dr\u00e9ck ALT+F10 fir d'Geschirleescht. Dr\u00e9ck ALT+0 fir d'H\u00ebllef.",
"Tools": "Geschir",
"View": "Kucken",
"Table": "Tabell",
"Format": "Format"
});js/tinymce/langs/eo.js000064400000035617151727150300010712 0ustar00tinymce.addI18n('eo',{
"Redo": "Refari",
"Undo": "Malfari",
"Cut": "Eltran\u0109i",
"Copy": "Kopii",
"Paste": "Englui",
"Select all": "Elekti \u0109ion",
"New document": "Nova dokumento",
"Ok": "Bone",
"Cancel": "Nuligi",
"Visual aids": "Videblaj helpiloj",
"Bold": "Dika",
"Italic": "Oblikva",
"Underline": "Substreki",
"Strikethrough": "Trastreki",
"Superscript": "Superskribi",
"Subscript": "Malsuperskribi",
"Clear formatting": "Forigi formatigon",
"Align left": "Ordigu maldekstren",
"Align center": "Ordigu centren",
"Align right": "Ordigu dekstren",
"Justify": "Ordigu la\u016dflanke",
"Bullet list": "Punkta listo",
"Numbered list": "Numera listo",
"Decrease indent": "Malpliigu alineon",
"Increase indent": "Pliigu alineon",
"Close": "Fermi",
"Formats": "Formatoj",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Via retumilo ne subtenas rektan aliron al bufro. Bonvolu antata\u016de uzi klavarajn kombinojn Ctrl+X\/C\/V.",
"Headers": "\u0108apoj",
"Header 1": "\u0108apo 1",
"Header 2": "\u0108apo 2",
"Header 3": "\u0108apo 3",
"Header 4": "\u0108apo 4",
"Header 5": "\u0108apo 5",
"Header 6": "\u0108apo 6",
"Headings": "Titoloj",
"Heading 1": "Titolo 1",
"Heading 2": "Titolo 2",
"Heading 3": "Titolo 3",
"Heading 4": "Titolo 4",
"Heading 5": "Titolo 5",
"Heading 6": "Titolo 6",
"Preformatted": "Anta\u016dformatigita",
"Div": "Div",
"Pre": "Pre",
"Code": "Kodo",
"Paragraph": "Alineo",
"Blockquote": "Mar\u011denigo",
"Inline": "Enlinie",
"Blocks": "Blokoj",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "La engluado nun okazas en simpla teksta re\u011dimo. La enhavo estos engluata kiel simpla teksto \u011dis anta\u016d vi for\u015daltos tiun \u0109i opcion.",
"Fonts": "Tiparoj",
"Font Sizes": "Tiparaj grandoj",
"Class": "Klaso",
"Browse for an image": "Rigardi por iu bildo",
"OR": "A\u016c",
"Drop an image here": "\u0134etu iun bildon \u0109i tien",
"Upload": "Al\u015duti",
"Block": "Bloko",
"Align": "\u011cisrandigi ",
"Default": "Implicite",
"Circle": "Cirklo",
"Disc": "Disko",
"Square": "Kvadrato",
"Lower Alpha": "Minuskla alfabeta",
"Lower Greek": "Minuskla greka",
"Lower Roman": "Minuskla latina",
"Upper Alpha": "Majuskla alfabeta",
"Upper Roman": "Majuskla latina",
"Anchor...": "Ankro...",
"Name": "Nomo",
"Id": "Identigilo",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Identigilo devas komenci\u011di per litero sekvata nur per literoj, ciferoj, streketoj, punktoj, dupunktoj a\u016d substrekoj.",
"You have unsaved changes are you sure you want to navigate away?": "Vi havas nekonservitajn \u015dan\u011dojn, \u0109u vi certe deziras eliri?",
"Restore last draft": "Restarigu lastan malneton",
"Special character...": "Speciala signo...",
"Source code": "Fonta kodo",
"Insert\/Edit code sample": "Enmeti\/Redakti kodospecimenon",
"Language": "Lingvo",
"Code sample...": "Kodospecimeno...",
"Color Picker": "Kolorelektilo",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Maldekstro dekstren",
"Right to left": "Dekstro maldekstren",
"Emoticons...": "Miensimboloj...",
"Metadata and Document Properties": "Metadatumoj kaj ecoj de dokumento",
"Title": "Titolo",
"Keywords": "\u015closilvortoj",
"Description": "Priskribo",
"Robots": "Robotoj",
"Author": "A\u016dtoro",
"Encoding": "Enkodigo",
"Fullscreen": "Tutekrane",
"Action": "Ago",
"Shortcut": "\u015cparvojo",
"Help": "Helpo",
"Address": "Adreso",
"Focus to menubar": "Enfokusigi al menubreto",
"Focus to toolbar": "Enfokusigi al ilobreto",
"Focus to element path": "Enfokusigi al elementvojo",
"Focus to contextual toolbar": "Enfokusigi al kunteksta ilobreto",
"Insert link (if link plugin activated)": "Enmeti ligilon (se ligila komprogramo estas aktivigita)",
"Save (if save plugin activated)": "Konservi (se konserva komprogramo estas aktivigita)",
"Find (if searchreplace plugin activated)": "Ser\u0109i (se ser\u0109a komprogramo estas aktivigita)",
"Plugins installed ({0}):": "Kromprogramoj instalitaj ({0}): ",
"Premium plugins:": "Premiaj kromprogramoj:",
"Learn more...": "Legu aldone...",
"You are using {0}": "Vi uzas {0}",
"Plugins": "Kromprogramoj",
"Handy Shortcuts": "Komfortaj \u015dparvojoj",
"Horizontal line": "Horizontala linio",
"Insert\/edit image": "Enmetu\/redaktu bildon",
"Image description": "Bilda priskribo",
"Source": "Fonto",
"Dimensions": "Dimensioj",
"Constrain proportions": "Relativigu proporciojn",
"General": "\u011cenerale",
"Advanced": "Por spertuloj",
"Style": "Stilo",
"Vertical space": "Vertikala spaco",
"Horizontal space": "Horizontala spaco",
"Border": "Limo",
"Insert image": "Enmetu bildon",
"Image...": "Bildo...",
"Image list": "Bildlisto",
"Rotate counterclockwise": "Rotaciu kontra\u016d horlo\u011do",
"Rotate clockwise": "Rotaciu la\u016d horlo\u011do",
"Flip vertically": "Respegulu vertikale",
"Flip horizontally": "Respegulu horizontale",
"Edit image": "Redaktu bildon",
"Image options": "Bildaj opcioj",
"Zoom in": "Plilar\u011digu",
"Zoom out": "Malplilar\u011digu",
"Crop": "Randtran\u0109u",
"Resize": "\u015can\u011du dimensiojn",
"Orientation": "Orientigo",
"Brightness": "Heleco",
"Sharpen": "Akrigu",
"Contrast": "Kontrasto",
"Color levels": "Kolorniveloj",
"Gamma": "Gamo",
"Invert": "Inversigu",
"Apply": "Apliku",
"Back": "Reen",
"Insert date\/time": "Enmetu daton\/tempon",
"Date\/time": "Dato\/tempo",
"Insert\/Edit Link": "Enmeti\/redakti ligilon",
"Insert\/edit link": "Enmetu\/redaktu ligilon",
"Text to display": "Montrata teksto",
"Url": "Urlo",
"Open link in...": "Sekvi ligilon per...",
"Current window": "Aktuala fenestro",
"None": "Nenio",
"New window": "Nova fenestro",
"Remove link": "Forigu ligilon",
"Anchors": "Ankroj",
"Link...": "Ligilo...",
"Paste or type a link": "Engluu a\u016d enigu ligilon",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "La enmetita URLo \u015dajnas esti retadreso. \u0108u vi deziras aldoni prefikson mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "La enmetita URLo \u015dajnas esti ekstera ligilo. \u0108u vi deziras aldoni nepran prefikson http:\/\/?",
"Link list": "Ligila listo",
"Insert video": "Enmetu videon",
"Insert\/edit video": "Enmetu\/redaktu videon",
"Insert\/edit media": "Enmeti\/redakti a\u016ddovida\u0135on  ",
"Alternative source": "Alternativa fonto",
"Alternative source URL": "URLo de alternativa fonto",
"Media poster (Image URL)": "Ligilo al a\u016ddovida\u0135o (URLo de bildo)",
"Paste your embed code below:": "Engluu vian internan kodon \u0109i-sube:",
"Embed": "Enkonstruu",
"Media...": "A\u016ddovida\u0135o...",
"Nonbreaking space": "Nerompebla spaco",
"Page break": "Pa\u011da fino",
"Paste as text": "Engluu kiel tekston",
"Preview": "Provrigardo",
"Print...": "Presi...",
"Save": "Konservi",
"Find": "Trovi",
"Replace with": "Anstata\u016digi per",
"Replace": "Anstata\u016digi",
"Replace all": "Anstata\u016digi\u0109ion",
"Previous": "Anta\u016da",
"Next": "Posta",
"Find and replace...": "Ser\u0109i kaj anstata\u016di... ",
"Could not find the specified string.": "Malsukceso trovi la indikitan sinsekvon",
"Match case": "Sekvi usklecon",
"Find whole words only": "Ser\u0109i nur tutan vorton",
"Spell check": "Kontroli literumadon",
"Ignore": "Ignoru",
"Ignore all": "Ignoru \u0109ion",
"Finish": "Finu",
"Add to Dictionary": "Aldonu al vortaro",
"Insert table": "Enmetu tabelon",
"Table properties": "Tabelaj ecoj",
"Delete table": "Forigu tabelon",
"Cell": "\u0108elo",
"Row": "Vico",
"Column": "Kolumno",
"Cell properties": "\u0108elaj ecoj",
"Merge cells": "Kunigu \u0109elojn",
"Split cell": "Disdividu \u0109elon",
"Insert row before": "Enmetu vicon anta\u016d",
"Insert row after": "Enmetu vicon poste",
"Delete row": "Forigu vicon",
"Row properties": "Vicaj ecoj",
"Cut row": "Eltran\u0109u vicon",
"Copy row": "Kopiu vicon",
"Paste row before": "Engluu vicon anta\u016d",
"Paste row after": "Engluu vicon poste",
"Insert column before": "Enmetu kolumnon anta\u016d",
"Insert column after": "Enmetu kolumnon poste",
"Delete column": "Forigu kolumnon",
"Cols": "Kolumonoj",
"Rows": "Vicoj",
"Width": "Lar\u011do",
"Height": "Alto",
"Cell spacing": "\u0108elspacoj",
"Cell padding": "\u0108elmar\u011denoj",
"Show caption": "Montri apudskribon",
"Left": "Maldekstro",
"Center": "Centro",
"Right": "Dekstro",
"Cell type": "\u0108ela tipo",
"Scope": "Amplekso",
"Alignment": "Aligo",
"H Align": "H aligo",
"V Align": "V aligo",
"Top": "Supro",
"Middle": "Mezo",
"Bottom": "Subo",
"Header cell": "\u0108apa \u0109elo",
"Row group": "Vica grupo",
"Column group": "Kolumna grupo",
"Row type": "Vica tipo",
"Header": "\u0108apo",
"Body": "Korpo",
"Footer": "Piedo",
"Border color": "Lima koloro",
"Insert template...": "Enmeti \u015dablonon...",
"Templates": "\u015cablonoj",
"Template": "\u015cablono",
"Text color": "Teksta koloro",
"Background color": "Fona koloro",
"Custom...": "Propra...",
"Custom color": "Propra koloro",
"No color": "Neniu koloro",
"Remove color": "Forigi koloron",
"Table of Contents": "Enhavotabelo",
"Show blocks": "Montru blokojn",
"Show invisible characters": "Montru nevideblajn karaktrojn",
"Word count": "Vortnombro ",
"Count": "Nombri",
"Document": "Dokumento",
"Selection": "Elekto",
"Words": "Vortoj",
"Words: {0}": "Vortoj: {0}",
"{0} words": "{0} vortoj",
"File": "Dokumento",
"Edit": "Redakti",
"Insert": "Enmeti",
"View": "Vidi",
"Format": "Aspektigi",
"Table": "Tabelo",
"Tools": "Iloj",
"Powered by {0}": "Funkciigita de {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ri\u0109teksta Areo. Premu ALT-F9 por menuo. Premu ALT-F10 por menuejo. Premu ALT-0 por helpo",
"Image title": "Titolo de bildo",
"Border width": "Lar\u011do de bordero",
"Border style": "Stilo de bordero",
"Error": "Eraro",
"Warn": "Averto",
"Valid": "Valida",
"To open the popup, press Shift+Enter": "Por aperigi \u015dprucfenestron premu fulmoklavon Shift+Enter ",
"Rich Text Area. Press ALT-0 for help.": "Ri\u0109teksta loko. Premu fulmoklavon ALT-0 por helpo.",
"System Font": "Sistema tiparo",
"Failed to upload image: {0}": "Al\u015dutado de bildo {0} malsukcesis",
"Failed to load plugin: {0} from url {1}": "\u015cargado de kromprogramo {0} el URLo {1} malsukcesis",
"Failed to load plugin url: {0}": "\u015cargado por kroprograma URLo {0} malsukcesis",
"Failed to initialize plugin: {0}": "Pravalorizado de krompogramo {0} malsukcesis",
"example": "ekzemplo",
"Search": "Ser\u0109i",
"All": "\u0108io",
"Currency": "Valuto",
"Text": "Teksto",
"Quotations": "Cita\u0135oj",
"Mathematical": "Matematika",
"Extended Latin": "Etendita la latina",
"Symbols": "Simboloj",
"Arrows": "Sagsimboloj",
"User Defined": "Propre difinita ",
"dollar sign": "signo de usona dolaro",
"currency sign": "valutsigno",
"euro-currency sign": "signo de e\u016dro",
"colon sign": "dupunkto",
"cruzeiro sign": "signo de brazila kruzero",
"french franc sign": "signo de francia franko",
"lira sign": "signo de itala liro",
"mill sign": "signo de milono de baza monunuo",
"naira sign": "signo de ni\u011deria najro",
"peseta sign": "signo de hispana peseto",
"rupee sign": "signo de rupio",
"won sign": "signo de koreia \u016dono",
"new sheqel sign": "signo de israela siklo",
"dong sign": "signo de vjetnama dongo",
"kip sign": "signo de laosa kipo",
"tugrik sign": "signo de mongola tugriko",
"drachma sign": "signo de greka dra\u0125mo",
"german penny symbol": "signo de pfenigo",
"peso sign": "signo de peso",
"guarani sign": "signo de paragvaja gvaranio",
"austral sign": "signo de argentina a\u016dstralo",
"hryvnia sign": "signo de ukrainia hrivno",
"cedi sign": "signo de ganaa cedio",
"livre tournois sign": "signo de pundo de Turo",
"spesmilo sign": "signo de spesmilo",
"tenge sign": "signo de kaza\u0125a tengo",
"indian rupee sign": "signo de barata rupio",
"turkish lira sign": "signo de turka liro",
"nordic mark sign": "signo de marko",
"manat sign": "signo de azerbaj\u011dana manato",
"ruble sign": "signo de rusia rublo",
"yen character": "signo de japana eno",
"yuan character": "signo de \u0109ina renminbio",
"yuan character, in hong kong and taiwan": "signo de juano, Hongkongo kaj Tajvano",
"yen\/yuan character variant one": "alia varianto de signo de eno\/juano",
"Loading emoticons...": "\u015cargado de mienvinjetoj",
"Could not load emoticons": "Ne povas \u015dargi mienvinjetojn",
"People": "Homoj",
"Animals and Nature": "Bestoj kaj naturo",
"Food and Drink": "Man\u011da\u0135o kaj trinka\u0135o",
"Activity": "Aktiveco",
"Travel and Places": "Voja\u011doj kaj lokoj",
"Objects": "Objektoj",
"Flags": "Flagoj",
"Characters": "Simboloj",
"Characters (no spaces)": "Simboloj (senspacetaj)",
"{0} characters": "{0} signojn",
"Error: Form submit field collision.": "Eraro: kolizio de kampoj dum sendado de formularo.",
"Error: No form element found.": "Eraro: elementoj de formularo forestas",
"Update": "\u011cisdatigi",
"Color swatch": "Specimenaro de koloroj",
"Turquoise": "Turkisa",
"Green": "Verda",
"Blue": "Blua",
"Purple": "Purpura",
"Navy Blue": "Helblua",
"Dark Turquoise": "Malhela turkisa",
"Dark Green": "Malhela verda",
"Medium Blue": "Meza blua",
"Medium Purple": "Meza purpla",
"Midnight Blue": "Nigroblua",
"Yellow": "Flava",
"Orange": "Oran\u011da",
"Red": "Ru\u011da",
"Light Gray": "Helgriza",
"Gray": "Griza",
"Dark Yellow": "Malhela flava",
"Dark Orange": "Malhela oran\u011da",
"Dark Red": "Malhela ru\u011da",
"Medium Gray": "Meza griza",
"Dark Gray": "Malhela griza",
"Light Green": "Helverda",
"Light Yellow": "Helflava",
"Light Red": "Helru\u011da",
"Light Purple": "Helpurpura",
"Light Blue": "Helblua",
"Dark Purple": "Malhelpurpura",
"Dark Blue": "Malhelblua",
"Black": "Nigra",
"White": "Blanka",
"Switch to or from fullscreen mode": "Tra\u015dan\u011di tutekranan re\u011dimon",
"Open help dialog": "Malfermi helpan dialogon",
"history": "historio",
"styles": "stilo",
"formatting": "tekstaran\u011do",
"alignment": "niveleco",
"indentation": "krommar\u011deno",
"permanent pen": "konstanta plumo",
"comments": "komentoj",
"Format Painter": "Formatelektilo",
"Insert\/edit iframe": "Enmeti\/redakti enkonstruitan framon (iframe)",
"Capitalization": "Komenci per majuskla",
"lowercase": "minuskla",
"UPPERCASE": "MAJUSKLA",
"Title Case": "Uskleco de titolo",
"Permanent Pen Properties": "Konstantaj ecoj de plumo",
"Permanent pen properties...": "Konstantaj ecoj de plumo",
"Font": "Tiparo",
"Size": "Grando",
"More...": "Pli...",
"Spellcheck Language": "Lingvo por literumi",
"Select...": "Elektu...",
"Preferences": "Agordoj",
"Yes": "Jes",
"No": "Ne",
"Keyboard Navigation": "Perklavara movi\u011dado",
"Version": "Versio",
"Anchor": "Ankro",
"Special character": "Speciala karaktro",
"Color": "Koloro",
"Emoticons": "Emociikonoj",
"Document properties": "Dokumentaj trajtoj",
"Insert link": "Enmetu ligilon",
"Target": "Celo",
"Poster": "Afi\u015do",
"Print": "Presu",
"Whole words": "Tutaj vortoj",
"Find and replace": "Trovi kaj anstata\u016digi",
"Prev": "Anta\u016da",
"Spellcheck": "Literumu",
"Caption": "Cita\u0135o",
"Insert template": "Enmetu \u015dablonon"
});js/tinymce/langs/hi_IN.js000064400000044031151727150300011263 0ustar00tinymce.addI18n('hi_IN',{
"Cut": "\u0915\u093e\u091f\u0947\u0902",
"Heading 5": "\u0936\u0940\u0930\u094d\u0937\u0915 5",
"Header 2": "\u0936\u0940\u0930\u094d\u0937\u0915 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0906\u092a\u0915\u093e \u091c\u093e\u0932 \u0935\u093f\u091a\u093e\u0930\u0915 \u0938\u0940\u0927\u0947 \u0938\u092e\u0930\u094d\u0925\u0928 \u0928\u0939\u0940\u0902 \u0915\u0930 \u0930\u0939\u093e \u0939\u0948\u0964 \u0915\u0943\u092a\u092f\u093e \u0915\u0941\u0902\u091c\u0940\u092a\u091f\u0932 \u0915\u0947 \u0926\u094d\u0935\u093e\u0930\u093e Ctrl+X\/C\/V \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902\u0964",
"Heading 4": "\u0936\u0940\u0930\u094d\u0937\u0915 4",
"Div": "\u0921\u093f\u0935",
"Heading 2": "\u0936\u0940\u0930\u094d\u0937\u0915 2",
"Paste": "\u091a\u093f\u092a\u0915\u093e\u090f\u0901",
"Close": "\u092c\u0902\u0926",
"Font Family": "\u092b\u093c\u0949\u0928\u094d\u091f \u092a\u0930\u093f\u0935\u093e\u0930",
"Pre": "\u092a\u0942\u0930\u094d\u0935",
"Align right": "\u0926\u093e\u090f\u0901 \u0938\u0902\u0930\u0947\u0916\u0923",
"New document": "\u0928\u092f\u093e \u0926\u0938\u094d\u0924\u093e\u0935\u0947\u091c\u093c",
"Blockquote": "\u0916\u0902\u0921-\u0909\u0926\u094d\u0927\u0930\u0923",
"Numbered list": "\u0915\u094d\u0930\u092e\u093e\u0902\u0915\u093f\u0924 \u0938\u0942\u091a\u0940",
"Heading 1": "\u0936\u0940\u0930\u094d\u0937\u0915 1",
"Headings": "\u0936\u0940\u0930\u094d\u0937\u0915",
"Increase indent": "\u0916\u0930\u094b\u091c \u092c\u095d\u093e\u090f\u0901",
"Formats": "\u092a\u094d\u0930\u093e\u0930\u0942\u092a",
"Headers": "\u0936\u0940\u0930\u094d\u0937\u0915",
"Select all": "\u0938\u092d\u0940 \u091a\u0941\u0928\u0947\u0902",
"Header 3": "\u0936\u0940\u0930\u094d\u0937\u0915 3",
"Blocks": "\u0916\u0902\u0921",
"Undo": "\u092a\u0940\u091b\u0947",
"Strikethrough": "\u092e\u0927\u094d\u092f \u0938\u0947 \u0915\u093e\u091f\u0947\u0902",
"Bullet list": "\u0917\u094b\u0932\u0940 \u0938\u0942\u091a\u0940",
"Header 1": "\u0936\u0940\u0930\u094d\u0937\u0915 1",
"Superscript": "\u0909\u092a\u0930\u093f\u0932\u093f\u0916\u093f\u0924",
"Clear formatting": "\u092a\u094d\u0930\u093e\u0930\u0942\u092a\u0923 \u0939\u091f\u093e\u090f\u0901",
"Font Sizes": "\u092b\u093c\u0949\u0928\u094d\u091f \u0906\u0915\u093e\u0930",
"Subscript": "\u0928\u093f\u091a\u0932\u0940\u0932\u093f\u0916\u093f\u0924",
"Header 6": "\u0936\u0940\u0930\u094d\u0937\u0915 6",
"Redo": "\u0906\u0917\u0947",
"Paragraph": "\u0905\u0928\u0941\u091a\u094d\u091b\u0947\u0926",
"Ok": "\u0920\u0940\u0915 \u0939\u0948",
"Bold": "\u092e\u094b\u091f\u093e",
"Code": "\u0938\u0902\u0915\u0947\u0924\u0932\u093f\u092a\u093f",
"Italic": "\u091f\u0947\u095c\u093e",
"Align center": "\u092e\u0927\u094d\u092f \u0938\u0902\u0930\u0947\u0916\u0923",
"Header 5": "\u0936\u0940\u0930\u094d\u0937\u0915 5",
"Heading 6": "\u0936\u0940\u0930\u094d\u0937\u0915 6",
"Heading 3": "\u0936\u0940\u0930\u094d\u0937\u0915 3",
"Decrease indent": "\u0916\u0930\u094b\u091c \u0915\u092e \u0915\u0930\u0947\u0902",
"Header 4": "\u0936\u0940\u0930\u094d\u0937\u0915 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u091a\u093f\u092a\u0915\u093e\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u0915\u093e\u0930 \u0905\u092d\u0940 \u0938\u093e\u0926\u093e \u092a\u093e\u0920\u094d\u092f \u0939\u0948\u0964 \u0938\u093e\u092e\u0917\u094d\u0930\u0940 \u091a\u093f\u092a\u0915\u093e\u0928\u0947 \u092a\u0930 \u0935\u0939 \u0938\u093e\u0926\u0947 \u092a\u093e\u0920\u094d\u092f \u092e\u0947\u0902 \u0930\u0939\u0917\u0940 \u091c\u092c \u0924\u0915 \u0906\u092a \u0907\u0938 \u0935\u093f\u0915\u0932\u094d\u092a \u0915\u094b \u092c\u0902\u0926 \u0928\u0939\u0940\u0902 \u0915\u0930 \u0926\u0947\u0924\u0947\u0964",
"Underline": "\u0905\u0927\u094b\u0930\u0947\u0916\u093e\u0902\u0915\u0928",
"Cancel": "\u0930\u0926\u094d\u0926",
"Justify": "\u0938\u092e\u0915\u0930\u0923",
"Inline": "\u0930\u0947\u0916\u093e \u092e\u0947\u0902",
"Copy": "\u092a\u094d\u0930\u0924\u093f \u0915\u0930\u0947\u0902",
"Align left": "\u092c\u093e\u090f\u0901 \u0938\u0902\u0930\u0947\u0916\u0923",
"Visual aids": "\u0926\u0943\u0936\u094d\u092f \u0938\u093e\u0927\u0928",
"Lower Greek": "\u0928\u093f\u092e\u094d\u0928 \u0917\u094d\u0930\u0940\u0915",
"Square": "\u0935\u0930\u094d\u0917",
"Default": "\u092a\u0939\u0932\u0947 \u0938\u0947 \u091a\u0941\u0928\u093e \u0939\u0941\u0906",
"Lower Alpha": "\u0928\u093f\u092e\u094d\u0928 \u0905\u0932\u094d\u092b\u093e",
"Circle": "\u0935\u0943\u0924\u094d\u0924",
"Disc": "\u092c\u093f\u0902\u092c",
"Upper Alpha": "\u0909\u091a\u094d\u091a \u0905\u0932\u094d\u092b\u093e",
"Upper Roman": "\u0909\u091a\u094d\u091a \u0930\u094b\u092e\u0928",
"Lower Roman": "\u0928\u093f\u092e\u094d\u0928 \u0930\u094b\u092e\u0928",
"Name": "\u0928\u093e\u092e",
"Anchor": "\u0932\u0902\u0917\u0930",
"You have unsaved changes are you sure you want to navigate away?": "\u0906\u092a\u0915\u0947 \u0915\u0941\u091b \u0905\u0938\u0939\u0947\u091c\u0947 \u092c\u0926\u0932\u093e\u0935 \u0939\u0948\u0902, \u0915\u094d\u092f\u093e \u0906\u092a \u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0930\u0942\u092a \u0938\u0947 \u092f\u0939\u093e\u0901 \u0938\u0947 \u091c\u093e\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u094b?",
"Restore last draft": "\u0906\u0916\u093f\u0930\u0940 \u092e\u0938\u094c\u0926\u093e \u092a\u0941\u0928\u0930\u094d\u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902",
"Special character": "\u0935\u093f\u0936\u0947\u0937 \u0935\u0930\u094d\u0923",
"Source code": "\u0938\u094d\u0924\u094d\u0930\u094b\u0924 \u0938\u0902\u0915\u0947\u0924\u0932\u093f\u092a\u093f",
"B": "\u092c\u0940",
"R": "\u0906\u0930",
"G": "\u091c\u0940",
"Color": "\u0930\u0902\u0917",
"Right to left": "\u0926\u093e\u090f\u0901 \u0938\u0947 \u092c\u093e\u090f\u0901",
"Left to right": "\u092c\u093e\u090f\u0901 \u0938\u0947 \u0926\u093e\u090f\u0901",
"Emoticons": "\u092d\u093e\u0935\u0928\u093e-\u092a\u094d\u0930\u0924\u0940\u0915",
"Robots": "\u092f\u0902\u0924\u094d\u0930\u092e\u093e\u0928\u0935",
"Document properties": "\u0926\u0938\u094d\u0924\u093e\u0935\u0947\u091c\u093c \u0917\u0941\u0923",
"Title": "\u0936\u0940\u0930\u094d\u0937\u0915",
"Keywords": "\u0915\u0941\u0902\u091c\u0940\u0936\u092c\u094d\u0926",
"Encoding": "\u0938\u0902\u0915\u0947\u0924\u0940\u0915\u0930\u0923",
"Description": "\u0935\u093f\u0935\u0930\u0923",
"Author": "\u0932\u0947\u0916\u0915",
"Fullscreen": "\u092a\u0942\u0930\u094d\u0923 \u0938\u094d\u0915\u094d\u0930\u0940\u0928",
"Horizontal line": "\u0915\u094d\u0937\u0948\u0924\u093f\u091c \u0930\u0947\u0916\u093e",
"Horizontal space": "\u0915\u094d\u0937\u0948\u0924\u093f\u091c \u0938\u094d\u0925\u093e\u0928",
"Insert\/edit image": "\u091b\u0935\u093f \u0921\u093e\u0932\u0947\u0902\/\u0938\u092e\u094d\u092a\u093e\u0926\u0928 \u0915\u0930\u0947\u0902",
"General": "\u0938\u093e\u092e\u093e\u0928\u094d\u092f",
"Advanced": "\u0909\u0928\u094d\u0928\u0924",
"Source": "\u0938\u094d\u0924\u094d\u0930\u094b\u0924",
"Border": "\u0938\u0940\u092e\u093e",
"Constrain proportions": "\u0905\u0928\u0941\u092a\u093e\u0924 \u0935\u093f\u0935\u0936",
"Vertical space": "\u090a\u0930\u094d\u0927\u094d\u0935\u093e\u0927\u0930 \u0938\u094d\u0925\u093e\u0928",
"Image description": "\u091b\u0935\u093f \u0935\u093f\u0935\u0930\u0923",
"Style": "\u0936\u0948\u0932\u0940",
"Dimensions": "\u0906\u092f\u093e\u092e",
"Insert image": "\u091b\u0935\u093f \u0921\u093e\u0932\u0947\u0902",
"Zoom in": "\u0926\u0942\u0930\u0940 \u0915\u092e \u0915\u0930\u0947\u0902",
"Contrast": "\u0935\u093f\u0937\u092e\u0924\u093e",
"Back": "\u092a\u0940\u091b\u0947",
"Gamma": "\u0917\u093e\u092e\u093e",
"Flip horizontally": "\u0915\u094d\u0937\u0948\u0924\u093f\u091c \u0915\u0930\u0947\u0902",
"Resize": "\u0906\u0915\u093e\u0930 \u092c\u0926\u0932\u0947\u0902",
"Sharpen": "\u0928\u0941\u0915\u0940\u0932\u093e\u092a\u0928",
"Zoom out": "\u0926\u0942\u0930\u0940 \u092c\u095d\u093e\u090f\u0901",
"Image options": "\u091b\u0935\u093f \u0915\u0947 \u0935\u093f\u0915\u0932\u094d\u092a",
"Apply": "\u0932\u093e\u0917\u0942 \u0915\u0930\u0947\u0902",
"Brightness": "\u091a\u092e\u0915\u0940\u0932\u093e\u092a\u0928",
"Rotate clockwise": "\u0918\u095c\u0940 \u0915\u0940 \u0926\u093f\u0936\u093e \u092e\u0947\u0902 \u0918\u0941\u092e\u093e\u0913",
"Rotate counterclockwise": "\u0918\u095c\u0940 \u0915\u0947 \u0935\u093f\u092a\u0930\u0940\u0924 \u0918\u0941\u092e\u093e\u0913",
"Edit image": "\u091b\u0935\u093f \u0938\u092e\u094d\u092a\u093e\u0926\u0928",
"Color levels": "\u0930\u0902\u0917 \u0938\u094d\u0924\u0930",
"Crop": "\u0915\u093e\u091f\u0947\u0902",
"Orientation": "\u0928\u093f\u0930\u094d\u0926\u0947\u0936\u0915 \u0930\u0947\u0916\u093e",
"Flip vertically": "\u0916\u095c\u093e \u0915\u0930\u0947\u0902",
"Invert": "\u0909\u0932\u091f\u0947\u0902",
"Insert date\/time": "\u0926\u093f\u0928\u093e\u0902\u0915\/\u0938\u092e\u092f \u0921\u093e\u0932\u0947\u0902",
"Remove link": "\u0915\u095c\u0940 \u0939\u091f\u093e\u090f\u0901",
"Url": "\u091c\u093e\u0932\u0938\u094d\u0925\u0932 \u092a\u0924\u093e",
"Text to display": "\u0926\u093f\u0916\u093e\u0928\u0947 \u0939\u0947\u0924\u0941 \u092a\u093e\u0920\u094d\u092f",
"Anchors": "\u0932\u0902\u0917\u0930",
"Insert link": "\u0915\u095c\u0940 \u0921\u093e\u0932\u0947\u0902",
"New window": "\u0928\u0908 \u0916\u093f\u095c\u0915\u0940",
"None": "\u0915\u094b\u0908 \u0928\u0939\u0940\u0902",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0906\u092a\u0928\u0947 \u091c\u094b \u0915\u095c\u0940 \u0921\u093e\u0932\u0940 \u0939\u0948 \u0935\u0939 \u092c\u093e\u0939\u0930\u0940 \u0915\u095c\u0940 \u0915\u0947 \u091c\u0948\u0938\u0947 \u0926\u093f\u0916 \u0930\u0939\u093e \u0939\u0948\u0964 \u0915\u094d\u092f\u093e \u0906\u092a http:\/\/ \u092a\u0939\u0932\u0947 \u091c\u094b\u095c\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948?",
"Target": "\u0932\u0915\u094d\u0937\u094d\u092f",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0906\u092a\u0928\u0947 \u091c\u094b \u0915\u095c\u0940 \u0921\u093e\u0932\u0940 \u0939\u0948 \u0935\u0939 \u0908\u092e\u0947\u0932 \u092a\u0924\u093e \u0915\u0947 \u091c\u0948\u0938\u0947 \u0926\u093f\u0916 \u0930\u0939\u093e \u0939\u0948\u0964 \u0915\u094d\u092f\u093e \u0906\u092a mailto: \u092a\u0939\u0932\u0947 \u091c\u094b\u095c\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948?",
"Insert\/edit link": "\u0915\u095c\u0940 \u0921\u093e\u0932\u0947\u0902\/\u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902",
"Insert\/edit video": "\u091a\u0932\u091a\u093f\u0924\u094d\u0930 \u0921\u093e\u0932\u0947\u0902\/\u0938\u092e\u094d\u092a\u093e\u0926\u0928 \u0915\u0930\u0947\u0902",
"Poster": "\u092a\u094b\u0938\u094d\u091f\u0930",
"Alternative source": "\u0935\u0948\u0915\u0932\u094d\u092a\u093f\u0915 \u0938\u094d\u0930\u094b\u0924",
"Paste your embed code below:": "\u0926\u093f\u0916\u093e\u0928\u0947 \u0935\u093e\u0932\u0947 \u0938\u0902\u0915\u0947\u0924 \u0915\u094b \u0928\u0940\u091a\u0947 \u0921\u093e\u0932\u0947\u0902:",
"Insert video": "\u091a\u0932\u091a\u093f\u0924\u094d\u0930 \u0921\u093e\u0932\u0947\u0902",
"Embed": "\u0926\u093f\u0916\u093e\u0928\u093e",
"Nonbreaking space": "\u0905\u0935\u093f\u0930\u093e\u092e\u093f\u0924 \u091c\u0917\u0939",
"Page break": "\u092a\u0943\u0937\u094d\u0920 \u0935\u093f\u0930\u093e\u092e",
"Paste as text": "\u092a\u093e\u0920\u094d\u092f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u091a\u093f\u092a\u0915\u093e\u090f\u0901",
"Preview": "\u092a\u0942\u0930\u094d\u0935\u093e\u0935\u0932\u094b\u0915\u0928",
"Print": "\u092e\u0941\u0926\u094d\u0930\u0923",
"Save": "\u0938\u0939\u0947\u091c\u0947\u0902",
"Could not find the specified string.": "\u0928\u093f\u0930\u094d\u0926\u093f\u0937\u094d\u091f \u092a\u0902\u0915\u094d\u0924\u093f \u0928\u0939\u0940\u0902 \u092e\u093f\u0932 \u0938\u0915\u093e\u0964",
"Replace": "\u092a\u094d\u0930\u0924\u093f\u0938\u094d\u0925\u093e\u092a\u0928",
"Next": "\u0905\u0917\u0932\u093e",
"Whole words": "\u0938\u0902\u092a\u0942\u0930\u094d\u0923 \u0936\u092c\u094d\u0926",
"Find and replace": "\u0922\u0942\u0901\u0922\u0947\u0902 \u0914\u0930 \u092c\u0926\u0932\u0947\u0902",
"Replace with": "\u092a\u094d\u0930\u0924\u093f\u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902",
"Find": "\u0916\u094b\u091c",
"Replace all": "\u0938\u092d\u0940 \u092a\u094d\u0930\u0924\u093f\u0938\u094d\u0925\u093e\u092a\u093f\u0924 \u0915\u0930\u0947\u0902",
"Match case": "\u092e\u093e\u092e\u0932\u0947 \u092e\u093f\u0932\u093e\u090f\u0901",
"Prev": "\u092a\u093f\u091b\u0932\u093e",
"Spellcheck": "\u0935\u0930\u094d\u0924\u0928\u0940\u0936\u094b\u0927\u0915",
"Finish": "\u0938\u092e\u093e\u092a\u094d\u0924",
"Ignore all": "\u0938\u092d\u0940 \u0915\u0940 \u0909\u092a\u0947\u0915\u094d\u0937\u093e",
"Ignore": "\u0909\u092a\u0947\u0915\u094d\u0937\u093e",
"Add to Dictionary": "\u0936\u092c\u094d\u0926\u0915\u094b\u0936 \u092e\u0947\u0902 \u091c\u094b\u095c\u0947\u0902",
"Insert row before": "\u092a\u0939\u0932\u0947 \u092a\u0902\u0915\u094d\u0924\u093f \u0921\u093e\u0932\u0947\u0902",
"Rows": "\u092a\u0902\u0915\u094d\u0924\u093f\u092f\u093e\u0901",
"Height": "\u090a\u0901\u091a\u093e\u0908",
"Paste row after": "\u092a\u0902\u0915\u094d\u0924\u093f \u0915\u0947 \u092c\u093e\u0926 \u091a\u093f\u092a\u0915\u093e\u090f\u0901",
"Alignment": "\u0938\u0902\u0930\u0947\u0916\u0923",
"Border color": "\u0938\u0940\u092e\u093e \u0930\u0902\u0917",
"Column group": "\u0938\u094d\u0924\u0902\u092d \u0938\u092e\u0942\u0939",
"Row": "\u092a\u0902\u0915\u094d\u0924\u093f",
"Insert column before": "\u092a\u0939\u0932\u0947 \u0938\u094d\u0924\u0902\u092d \u0921\u093e\u0932\u0947\u0902",
"Split cell": "\u0916\u093e\u0928\u0947\u0902 \u0935\u093f\u092d\u093e\u091c\u093f\u0924 \u0915\u0930\u0947\u0902",
"Cell padding": "\u0916\u093e\u0928\u094b\u0902 \u092e\u0947\u0902 \u0926\u0942\u0930\u0940",
"Cell spacing": "\u0916\u093e\u0928\u094b\u0902 \u092e\u0947\u0902 \u0930\u093f\u0915\u094d\u0924\u093f",
"Row type": "\u092a\u0902\u0915\u094d\u0924\u093f \u092a\u094d\u0930\u0915\u093e\u0930",
"Insert table": "\u0924\u093e\u0932\u093f\u0915\u093e \u0921\u093e\u0932\u0947\u0902",
"Body": "\u0936\u0930\u0940\u0930",
"Caption": "\u0905\u0928\u0941\u0936\u0940\u0930\u094d\u0937\u0915",
"Footer": "\u092a\u093e\u0926 \u0932\u0947\u0916",
"Delete row": "\u092a\u0902\u0915\u094d\u0924\u093f \u0939\u091f\u093e\u090f\u0902",
"Paste row before": "\u092a\u0902\u0915\u094d\u0924\u093f \u0938\u0947 \u092a\u0939\u0932\u0947 \u091a\u093f\u092a\u0915\u093e\u090f\u0901",
"Scope": "\u0915\u094d\u0937\u0947\u0924\u094d\u0930",
"Delete table": "\u0924\u093e\u0932\u093f\u0915\u093e \u0939\u091f\u093e\u090f\u0901",
"H Align": "\u0915\u094d\u0937\u0947\u0924\u093f\u091c \u0938\u0902\u0930\u0947\u0916\u093f\u0924",
"Top": "\u0936\u0940\u0930\u094d\u0937",
"Header cell": "\u0936\u0940\u0930\u094d\u0937 \u0916\u093e\u0928\u093e",
"Column": "\u0938\u094d\u0924\u0902\u092d",
"Row group": "\u092a\u0902\u0915\u094d\u0924\u093f \u0938\u092e\u0942\u0939",
"Cell": "\u0915\u094b\u0936\u093f\u0915\u093e",
"Middle": "\u092e\u0927\u094d\u092f",
"Cell type": "\u0916\u093e\u0928\u0947 \u0915\u093e \u092a\u094d\u0930\u0915\u093e\u0930",
"Copy row": "\u092a\u0902\u0915\u094d\u0924\u093f \u0915\u0940 \u092a\u094d\u0930\u0924\u093f\u0932\u093f\u092a\u093f \u0932\u0947\u0902",
"Row properties": "\u092a\u0902\u0915\u094d\u0924\u093f \u0915\u0947 \u0917\u0941\u0923",
"Table properties": "\u0924\u093e\u0932\u093f\u0915\u093e \u0915\u0947 \u0917\u0941\u0923",
"Bottom": "\u0928\u0940\u091a\u0947",
"V Align": "\u090a\u0930\u094d\u0927\u094d\u0935\u093e\u0927\u0930 \u0938\u0902\u0930\u0947\u0916\u093f\u0924",
"Header": "\u0936\u0940\u0930\u094d\u0937\u0915",
"Right": "\u0926\u093e\u092f\u093e\u0901",
"Insert column after": "\u092c\u093e\u0926 \u0938\u094d\u0924\u0902\u092d \u0921\u093e\u0932\u0947\u0902",
"Cols": "\u0938\u094d\u0924\u0902\u092d",
"Insert row after": "\u092c\u093e\u0926 \u092a\u0902\u0915\u094d\u0924\u093f \u0921\u093e\u0932\u0947\u0902",
"Width": "\u091a\u094c\u0921\u093c\u093e\u0908",
"Cell properties": "\u0915\u094b\u0936\u093f\u0915\u093e \u0917\u0941\u0923",
"Left": "\u092c\u093e\u092f\u093e\u0901",
"Cut row": "\u092a\u0902\u0915\u094d\u0924\u093f \u0915\u093e\u091f\u0947\u0902",
"Delete column": "\u0938\u094d\u0924\u0902\u092d \u0939\u091f\u093e\u090f\u0901",
"Center": "\u092e\u0927\u094d\u092f",
"Merge cells": "\u0916\u093e\u0928\u094b\u0902 \u0915\u094b \u092e\u093f\u0932\u093e\u090f\u0902",
"Insert template": "\u0938\u093e\u0901\u091a\u093e \u0921\u093e\u0932\u0947\u0902",
"Templates": "\u0938\u093e\u0901\u091a\u0947",
"Background color": "\u092a\u0943\u0937\u094d\u0920\u092d\u0942\u092e\u093f \u0915\u093e \u0930\u0902\u0917",
"Custom...": "\u0905\u0928\u0941\u0915\u0942\u0932\u093f\u0924...",
"Custom color": "\u0905\u0928\u0941\u0915\u0942\u0932\u093f\u0924 \u0930\u0902\u0917",
"No color": "\u0930\u0902\u0917\u0939\u0940\u0928",
"Text color": "\u092a\u093e\u0920\u094d\u092f \u0930\u0902\u0917",
"Show blocks": "\u0921\u092c\u094d\u092c\u0947 \u0926\u093f\u0916\u093e\u090f\u0901",
"Show invisible characters": "\u0905\u0926\u0943\u0936\u094d\u092f \u0905\u0915\u094d\u0937\u0930\u094b\u0902 \u0915\u094b \u0926\u093f\u0916\u093e\u090f\u0901",
"Words: {0}": "\u0936\u092c\u094d\u0926: {0}",
"Insert": "\u0921\u093e\u0932\u0947\u0902",
"File": "\u0928\u0924\u094d\u0925\u0940",
"Edit": "\u0938\u092e\u094d\u092a\u093e\u0926\u0928",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0938\u0902\u092a\u0928\u094d\u0928 \u092a\u093e\u0920 \u0915\u094d\u0937\u0947\u0924\u094d\u0930\u0964 \u092e\u0947\u0928\u0942 \u0915\u0947 \u0932\u093f\u090f ALT-F9 \u0926\u092c\u093e\u090f\u0901\u0964 \u0909\u092a\u0915\u0930\u0923 \u092a\u091f\u094d\u091f\u0940 \u0915\u0947 \u0932\u093f\u090f  ALT-F10 \u0926\u092c\u093e\u090f\u0901\u0964 \u0938\u0939\u093e\u092f\u0924\u093e \u0915\u0947 \u0932\u093f\u090f ALT-0 \u0926\u092c\u093e\u090f\u0901\u0964",
"Tools": "\u0909\u092a\u0915\u0930\u0923",
"View": "\u0926\u0947\u0916\u0947\u0902",
"Table": "\u0924\u093e\u0932\u093f\u0915\u093e",
"Format": "\u092a\u094d\u0930\u093e\u0930\u0942\u092a"
});js/tinymce/langs/tg.js000064400000114435151727150300010715 0ustar00tinymce.addI18n('tg',{
"Redo": "\u0411\u0435\u043a\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
"Undo": "\u0411\u043e\u0437 \u0433\u0430\u0440\u0434\u043e\u043d\u0438\u0434\u0430\u043d",
"Cut": "\u0411\u0443\u0440\u0438\u0434\u0430\u043d",
"Copy": "\u041d\u0443\u0441\u0445\u0430\u0431\u043e\u0440\u0434\u043e\u043d\u0438 \u043a\u0430\u0440\u0434\u0430\u043d",
"Paste": "\u0413\u0443\u0437\u043e\u0448\u0442\u0430\u043d",
"Select all": "\u0418\u043d\u0442\u0438\u0445\u043e\u0431\u0438 \u043a\u0443\u043b\u043b\u0438",
"New document": "\u04b2\u0443\u04b7\u04b7\u0430\u0442\u0438 \u043d\u0430\u0432",
"Ok": "\u041e\u043a",
"Cancel": "\u0411\u0435\u043a\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
"Visual aids": "\u041a\u0443\u043c\u043c\u0430\u043a\u0438 \u0430\u0451\u043d\u04e3",
"Bold": "\u0492\u0430\u0444\u0441",
"Italic": "\u0418\u0442\u0430\u043b\u0438\u043a",
"Underline": "\u0414\u0430\u0440 \u0442\u0430\u0433\u0430\u0448 \u0445\u0430\u0442 \u043a\u0430\u0448\u0438\u0434\u0430\u043d",
"Strikethrough": "\u0410\u0437 \u043c\u043e\u0431\u0430\u0439\u043d\u0430\u0448 \u0445\u0430\u0442 \u043a\u0430\u0448\u0438\u0434\u0430\u043d",
"Superscript": "\u0410\u0437 \u0445\u0430\u0442 \u0431\u043e\u043b\u043e\u0442\u0430\u0440",
"Subscript": "\u0410\u0437 \u0445\u0430\u0442 \u043f\u043e\u0451\u043d\u0442\u0430\u0440",
"Clear formatting": "\u0424\u043e\u0440\u043c\u0430\u0442\u04b3\u043e\u0440\u043e \u0431\u0435\u043a\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
"Align left": "\u0420\u043e\u0441 \u043a\u0430\u0440\u0434\u0430\u043d \u0430\u0437 \u0447\u0430\u043f",
"Align center": "\u0420\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d \u0430\u0437 \u043c\u043e\u0431\u0430\u0439\u043d",
"Align right": "\u0420\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d \u0430\u0437 \u0440\u043e\u0441\u0442",
"Justify": "\u0410\u0437 \u04b3\u0430\u0440 \u0434\u0443 \u0442\u0430\u0440\u0430\u0444 \u0440\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d",
"Bullet list": "\u0420\u0443\u0439\u0445\u0430\u0442\u0438 \u0431\u0435 \u0442\u0430\u0440\u0442\u0438\u0431",
"Numbered list": "\u0420\u0443\u0439\u0445\u0430\u0442\u0438 \u0431\u043e \u0442\u0430\u0440\u0442\u0438\u0431",
"Decrease indent": "\u0410\u0431\u0437\u0430\u0441\u0442\u0440\u043e \u0445\u0443\u0440\u0434 \u043a\u0430\u0440\u0434\u0430\u043d",
"Increase indent": "\u0410\u0431\u0437\u0430\u0441\u0442\u0440\u043e \u0432\u0430\u0441\u0435\u044a \u043a\u0430\u0440\u0434\u0430\u043d",
"Close": "\u041c\u0430\u04b3\u043a\u0430\u043c \u043a\u0430\u0440\u0434\u0430\u043d",
"Formats": "\u0424\u0430\u0440\u043c\u0430\u0442\u04b3\u043e",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0411\u0430\u0440\u0438 \u0448\u0443\u0441\u0445\u0430\u0431\u0430\u0440\u0434\u043e\u0440\u0438 \u043a\u0430\u0440\u0434\u0430\u043d Ctrl+X\/C\/V \u0438\u0441\u0442\u0438\u0444\u043e\u0434\u0430 \u043a\u0443\u043d\u0435\u0434",
"Headers": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u04b3\u043e",
"Header 1": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 1",
"Header 2": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 2",
"Header 3": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 3",
"Header 4": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 4",
"Header 5": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 5",
"Header 6": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 6",
"Headings": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u04b3\u043e",
"Heading 1": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 1",
"Heading 2": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 2",
"Heading 3": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 3",
"Heading 4": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 4",
"Heading 5": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 5",
"Heading 6": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 6",
"Preformatted": "\u0411\u0430\u0440\u043e\u0431\u0430\u0440 \u043a\u0430\u0440\u0434\u0430 \u0448\u0443\u0434\u0430",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "\u0410\u0431\u0437\u0430\u0441\u0442",
"Blockquote": "\u041d\u043e\u0445\u0443\u043d\u0430\u043a",
"Inline": "\u0414\u0430\u0440 \u044f\u043a \u0445\u0430\u0442",
"Blocks": "\u0425\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u04e3",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0422\u043e \u043e\u043d \u0437\u0430\u043c\u043e\u043d\u0435, \u043a\u0438 \u0438\u043d \u0445\u043e\u043c\u0443\u0448 \u0430\u0441\u0442, \u04b3\u0430\u043c\u0447\u0443\u043d \u043c\u0430\u043d\u0442 \u0432\u043e\u0440\u0438\u0434 \u043a\u0443\u043d\u0435\u0434.",
"Fonts": "\u04b2\u0443\u0440\u0443\u0444\u04b3\u043e",
"Font Sizes": "\u04b2\u0430\u04b7\u043c\u0438 \u0448\u0440\u0438\u0444\u0442",
"Class": "\u041a\u043b\u0430\u0441",
"Browse for an image": "\u0418\u043b\u043e\u0432\u0430\u0438 \u0441\u0443\u0440\u0430\u0442",
"OR": "\u0401",
"Drop an image here": "\u0421\u0443\u0440\u0430\u0442\u0440\u043e \u0438\u043d \u04b7\u043e \u043f\u0430\u0440\u0442\u043e\u0435\u0434",
"Upload": "\u0411\u043e\u0440\u043a\u0443\u043d\u04e3",
"Block": "\u0411\u043b\u043e\u043a",
"Align": "\u04b2\u0430\u043c\u0432\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
"Default": "\u0411\u043e \u0442\u0430\u0440\u0437\u0438 \u0445\u043e\u043c\u0443\u0448\u04e3",
"Circle": "\u0414\u043e\u0438\u0440\u0430",
"Disc": "\u0414\u0438\u0441\u043a",
"Square": "\u0427\u043e\u0440\u043a\u0443\u043d\u04b7\u0430",
"Lower Alpha": "\u0425\u0443\u0440\u0434\u0438 \u044e\u043d\u043e\u043d\u04e3",
"Lower Greek": "\u0425\u0443\u0440\u0434\u0438 \u042e\u043d\u043e\u043d\u04e3",
"Lower Roman": "\u0425\u0443\u0440\u0434\u0438 \u0440\u043e\u043c\u0430\u043d\u04e3",
"Upper Alpha": "\u041a\u0430\u043b\u043e\u043d\u0438 \u044e\u043d\u043e\u043d\u04e3",
"Upper Roman": "\u041a\u0430\u043b\u043e\u043d\u0438 \u0440\u043e\u043c\u0430\u043d\u04e3",
"Anchor...": "\u0410\u043d\u0447\u0443\u043c\u0430\u043d",
"Name": "\u041d\u043e\u043c",
"Id": "\u041c\u0443\u0430\u0439\u044f\u043d\u043a\u0443\u043d\u0430\u043d\u0434\u0430 (Id)",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u0431\u043e\u044f\u0434 \u0431\u043e \u04b3\u0430\u0440\u0444 \u043e\u0493\u043e\u0437 \u0448\u0430\u0432\u0430\u0434 \u0432\u0430 \u0442\u0430\u043d\u04b3\u043e \u0430\u0437 \u04b3\u0430\u0440\u0444\u04b3\u043e, \u0430\u0434\u0430\u0434\u04b3\u043e, \u0442\u0438\u0440\u0447\u0430\u04b3\u043e, \u043d\u0443\u049b\u0442\u0430\u04b3\u043e, \u0441\u0443\u0442\u0443\u043d\u04b3\u043e \u0451 \u0437\u0435\u0440\u043d\u0438\u0448\u0438\u043d\u04b3\u043e \u0438\u0441\u0442\u0438\u0444\u043e\u0434\u0430 \u0448\u0430\u0432\u0430\u0434.",
"You have unsaved changes are you sure you want to navigate away?": "\u0422\u0430\u0493\u0438\u0440\u043e\u0442\u04b3\u043e\u0438 \u043a\u0430\u0440\u0434\u0430\u0430\u0442\u043e\u043d\u0440\u043e \u0442\u043e \u04b3\u043e\u043b \u043d\u0438\u0433\u043e\u04b3 \u043d\u0430\u0434\u043e\u0448\u0442\u0430\u0435\u0434!\n\u041e\u0451 \u0448\u0443\u043c\u043e \u0434\u0430\u0440 \u04b3\u0430\u049b\u0438\u049b\u0430\u0442 \u043c\u0435\u0445\u043e\u04b3\u0435\u0434 \u043a\u0438 \u0431\u0430 \u0434\u0438\u0433\u0430\u0440 \u049b\u0438\u0441\u043c \u0433\u0443\u0437\u0430\u0440\u0435\u0434?",
"Restore last draft": "\u0422\u0430\u0493\u0438\u0440\u043e\u0442\u04b3\u043e\u0438 \u043e\u0445\u0438\u0440\u0438\u043d\u0440\u043e \u0431\u0435\u043a\u043e\u0440 \u043a\u0443\u043d",
"Special character...": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u043c\u0430\u0445\u0441\u0443\u0441 ...",
"Source code": "\u041a\u043e\u0434\u0438 \u0430\u0441\u043b\u0438",
"Insert\/Edit code sample": "\u0418\u043b\u043e\u0432\u0430\/\u0442\u0430\u0493\u0439\u0438\u0440 \u0434\u043e\u0434\u0430\u043d\u0438 \u043d\u0430\u043c\u0443\u043d\u0430\u0438 \u043a\u043e\u0434",
"Language": "\u0417\u0430\u0431\u043e\u043d",
"Code sample...": "\u041d\u0430\u043c\u0443\u043d\u0430\u0438 \u043a\u043e\u0434 ...",
"Color Picker": "\u0418\u043d\u0442\u0438\u0445\u043e\u0431\u043a\u0443\u043d\u0430\u043d\u0434\u0430\u0438 \u0440\u0430\u043d\u0433",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0410\u0437 \u0447\u0430\u043f \u0431\u0430 \u0440\u043e\u0441\u0442",
"Right to left": "\u0410\u0437 \u0440\u043e\u0441\u0442 \u0431\u0430 \u0447\u0430\u043f",
"Emoticons...": "\u0418\u043b\u043e\u0432\u0430\u0438 \u0441\u043c\u0430\u0439\u043b",
"Metadata and Document Properties": "\u041c\u0435\u0442\u0430\u0434\u043e\u0434\u0430\u04b3\u043e \u0432\u0430 \u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u04b3\u043e\u0438 \u04b3\u0443\u04b7\u04b7\u0430\u0442",
"Title": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
"Keywords": "\u041a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e\u0438 \u043c\u0443\u0442\u0430\u043d\u043e\u0441\u0438\u0431",
"Description": "\u041c\u0430\u044a\u043b\u0443\u043c\u043e\u0442\u0438 \u043c\u0443\u0445\u0442\u0430\u0441\u0430\u0440",
"Robots": "Robots",
"Author": "\u041c\u0443\u0430\u043b\u043b\u0438\u0444",
"Encoding": "\u0411\u043e \u0440\u0430\u043c\u0437 \u0433\u0430\u0440\u0434\u043e\u043d\u0438\u0434\u0430\u043d",
"Fullscreen": "\u041a\u0430\u043b\u043e\u043d \u043a\u0430\u0440\u0434\u0430\u043d",
"Action": "\u0410\u043c\u0430\u043b",
"Shortcut": "\u0428\u043e\u0440\u0442\u043a\u043e\u0434",
"Help": "\u0401\u0440\u04e3",
"Address": "\u0421\u0443\u0440\u043e\u0493\u0430",
"Focus to menubar": "\u0422\u0430\u0432\u0430\u04b7\u04b7\u04ef\u04b3 (\u0424\u043e\u043a\u0443\u0441) \u0431\u0430 \u043c\u0435\u043d\u044e",
"Focus to toolbar": "\u0422\u0430\u0432\u0430\u04b7\u04b7\u04ef\u04b3 (\u0424\u043e\u043a\u0443\u0441) \u0431\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0441\u0431\u043e\u0431\u04b3\u043e",
"Focus to element path": "\u0422\u0430\u0432\u0430\u04b7\u04b7\u04ef\u04b3 (\u0424\u043e\u043a\u0443\u0441)  \u0431\u0430 \u0440\u043e\u04b3\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",
"Focus to contextual toolbar": "\u0422\u0430\u0432\u0430\u04b7\u04b7\u04ef\u04b3 (\u0424\u043e\u043a\u0443\u0441) \u0431\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0441\u0431\u043e\u0431\u04b3\u043e\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u04e3",
"Insert link (if link plugin activated)": "\u0412\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u043f\u0430\u0439\u0432\u0430\u043d\u0434\u0430\u043a (\u0430\u0433\u0430\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0438 \u043f\u0430\u0439\u0432\u0430\u043d\u0434 \u0444\u0430\u044a\u043e\u043b \u0431\u043e\u0448\u0430\u0434)",
"Save (if save plugin activated)": "\u0421\u0430\u0431\u0442 \u043a\u0430\u0440\u0434\u0430\u043d (\u0430\u0433\u0430\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0438 \u0441\u0430\u0431\u0442 \u0444\u0430\u044a\u043e\u043b \u0431\u043e\u0448\u0430\u0434)",
"Find (if searchreplace plugin activated)": "\u04b6\u0443\u0441\u0442\u0443\u04b7\u04ef (\u0430\u0433\u0430\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0438 \u04b7\u043e\u0438 \u04b7\u0443\u0441\u0442\u0443\u04b7\u04ef \u0444\u0430\u044a\u043e\u043b \u0431\u043e\u0448\u0430\u0434)",
"Plugins installed ({0}):": "\u041f\u043b\u0430\u0433\u0438\u043d\u04b3\u043e\u0438 \u043d\u0430\u0441\u0431\u0448\u0443\u0434\u0430 ({0}):",
"Premium plugins:": "\u041f\u043b\u0430\u0433\u0438\u043d\u04b3\u043e\u0438 \u043f\u0440\u0435\u043c\u0438\u0443\u043c:",
"Learn more...": "\u0411\u0435\u0448\u0442\u0430\u0440 \u0445\u043e\u043d\u0434\u0430\u043d...",
"You are using {0}": "\u0428\u0443\u043c\u043e {0} -\u0440\u043e \u0438\u0441\u0442\u0438\u0444\u043e\u0434\u0430 \u043c\u0435\u0431\u0430\u0440\u0435\u0434",
"Plugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u04b3\u043e",
"Handy Shortcuts": "\u0428\u043e\u0440\u0442\u043a\u043e\u0434\u0438 \u0434\u0430\u0441\u0442\u04e3",
"Horizontal line": "\u0425\u0430\u0442\u0438 \u0443\u0444\u0443\u049b\u04e3",
"Insert\/edit image": "\u0412\u043e\u0440\u0438\u0434\/\u0422\u0430\u0493\u0438\u0440\u0438 \u0440\u0430\u0441\u043c",
"Image description": "\u041c\u0430\u044a\u043b\u0443\u043c\u043e\u0442\u0438 \u043c\u0443\u0445\u0442\u0430\u0441\u0430\u0440",
"Source": "\u041c\u0430\u043a\u043e\u043d\u0438 \u0430\u0441\u043e\u0441\u04e3",
"Dimensions": "\u0427\u0435\u043d\u0430\u043a\u04b3\u043e",
"Constrain proportions": "\u0427\u0435\u043d\u0430\u043a\u04b3\u043e\u0438 \u043c\u0430\u04b7\u0431\u0443\u0440\u0438",
"General": "\u041e\u0434\u0434\u0438",
"Advanced": "\u041c\u0443\u0442\u0430\u0440\u0430\u049b\u0438",
"Style": "\u0421\u0442\u0438\u043b",
"Vertical space": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0430\u043c\u0443\u0434\u04e3",
"Horizontal space": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0443\u0444\u0443\u049b\u04e3",
"Border": "\u04b2\u0443\u0434\u0443\u0434",
"Insert image": "\u0420\u0430\u0441\u043c \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d",
"Image...": "\u0421\u0443\u0440\u0430\u0442 ...",
"Image list": "\u0420\u04ef\u0439\u0445\u0430\u0442\u0438 c\u0443\u0440\u0430\u0442\u04b3\u043e",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Color levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "\u0412\u043e\u0440\u0438\u0434\u0438 \u0420\u04ef\u0437\/\u0421\u043e\u0430\u0442",
"Date\/time": "\u0420\u04ef\u0437\/\u0421\u043e\u0430\u0442",
"Insert\/Edit Link": "\u0412\u043e\u0440\u0438\u0434\/\u0422\u0430\u04b3\u0440\u0438\u0440 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u043f\u0430\u0439\u0432\u0430\u043d\u0434",
"Insert\/edit link": "\u0412\u043e\u0440\u0438\u0434\/\u0442\u0430\u0493\u0438\u0440 \u0434\u043e\u0434\u0430\u043d\u0438 \u0438\u0441\u0442\u0438\u043d\u043e\u0434",
"Text to display": "\u041c\u0430\u0442\u043d \u0431\u0430\u0440\u043e\u0438 \u043c\u0430\u043d\u0437\u0443\u0440",
"Url": "Url",
"Open link in...": "\u041f\u0430\u0439\u0432\u0430\u043d\u0434\u0440\u043e \u043a\u0443\u0448\u043e\u0435\u0434 \u0434\u0430\u0440 ...",
"Current window": "\u0420\u0430\u0432\u0437\u0430\u043d\u0430\u0438 \u04b7\u043e\u0440\u04e3",
"None": "\u04b2\u0435\u04b7 \u0447\u0438\u0437",
"New window": "\u0422\u0438\u0440\u0435\u0437\u0430\u0438 \u043d\u0430\u0432",
"Remove link": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u0438\u0441\u0442\u0438\u043d\u043e\u0434",
"Anchors": "\u041b\u0430\u043d\u0433\u0430\u0440",
"Link...": "\u041f\u0430\u0439\u0432\u0430\u043d\u0434...",
"Paste or type a link": "\u041f\u0430\u0439\u0432\u0430\u043d\u0434\u0440\u043e \u043c\u043e\u043d\u0435\u0434 \u0451 \u043d\u0430\u0432\u0438\u0441\u0435\u0434",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u0435, \u043a\u0438 \u0448\u0443\u043c\u043e \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0435\u0434 Email \u0430\u0434\u0440\u0435\u0441 \u0430\u0441\u0442. G\u0440\u0435\u0444\u0438\u043a\u0441\u0438 mailto: \u0438\u043b\u043e\u0432\u0430 \u043a\u0443\u043d\u0430\u043c?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u0435, \u043a\u0438 \u0448\u0443\u043c\u043e \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0435\u0434 \u0438\u0441\u0442\u0438\u043d\u043e\u0434 \u0430\u0441\u0442. \u041f\u0440\u0435\u0444\u0438\u043a\u0441\u0438 http:\/\/: \u0438\u043b\u043e\u0432\u0430 \u043a\u0443\u043d\u0430\u043c?",
"Link list": "\u0420\u04ef\u0439\u0445\u0430\u0442\u0438 \u043f\u0430\u0439\u0432\u0430\u043d\u0434\u04b3\u043e",
"Insert video": "\u0412\u043e\u0440\u0438\u0434\u0438 \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit video": "\u0412\u043e\u0440\u0438\u0434\/\u0442\u0430\u0493\u0438\u0440\u0438 \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit media": "\u0413\u0443\u0437\u043e\u0448\u0442\u0430\u043d\/\u0442\u0430\u04b3\u0440\u0438\u0440 \u0442\u0430\u0493\u0439\u0438\u0440\u0434\u043e\u0434\u0430\u043d\u0438 \u043c\u0435\u0434\u0438\u0430",
"Alternative source": "\u0421\u0430\u0440\u0447\u0430\u0448\u043c\u0430\u0438 \u0430\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u04e3",
"Alternative source URL": "\u041c\u0430\u043d\u0431\u0430\u0438 \u0430\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0438\u0438 URL",
"Media poster (Image URL)": "\u042d\u044a\u043b\u043e\u043d\u0438 \u0440\u0430\u0441\u043e\u043d\u0430 (URL\u0438 \u0441\u0443\u0440\u0430\u0442)",
"Paste your embed code below:": "embed \u043a\u043e\u0434\u0440\u043e \u0438\u043d\u04b7\u043e \u0432\u043e\u0440\u0438\u0434 \u043a\u0443\u043d\u0435\u0434",
"Embed": "Embed",
"Media...": "\u041c\u0435\u0434\u0438\u0430..",
"Nonbreaking space": "\u0411\u0435\u0444\u043e\u0441\u0438\u043b\u0430",
"Page break": "\u0421\u0430\u04b3\u0438\u0444\u0430\u0440\u043e \u0448\u0438\u043a\u0430\u0441\u0442\u0430\u043d",
"Paste as text": "\u0413\u0443\u0437\u043e\u0448\u0442\u0430\u043d \u04b3\u0430\u043c\u0447\u0443 \u043c\u0430\u0442\u043d",
"Preview": "\u041c\u0430\u043d\u0437\u0443\u0440",
"Print...": "\u0427\u043e\u043f \u043a\u0430\u0440\u0434\u0430\u043d...",
"Save": "\u041d\u0438\u0433\u043e\u04b3 \u0434\u043e\u0448\u0442\u0430\u043d",
"Find": "\u0401\u0444\u0442\u0430\u043d",
"Replace with": "\u0422\u0430\u0493\u0438\u0440 \u0431\u0430",
"Replace": "\u0422\u0430\u0493\u0438\u0440",
"Replace all": "\u0422\u0430\u0493\u0438\u0440\u0438 \u04b3\u0430\u043c\u0430\u0430\u0448",
"Previous": "\u041f\u0435\u0448\u0442\u0430\u0440",
"Next": "\u041e\u044f\u043d\u0434\u0430",
"Find and replace...": "\u04b6\u0443\u0441\u0442\u0443\u04b7\u04ef \u0432\u0430 \u0438\u0432\u0430\u0437 ...",
"Could not find the specified string.": "\u0425\u0430\u0442\u0438 \u0434\u0430\u0440\u0445\u043e\u0441\u0442\u0448\u0443\u0434\u0430\u0440\u043e \u0451\u0444\u0442\u0430 \u043d\u0430\u0442\u0430\u0432\u043e\u043d\u0438\u0441\u0442\u0430\u043c",
"Match case": "\u041c\u0443\u0432\u043e\u0444\u0438\u049b\u0430\u0442",
"Find whole words only": "\u0422\u0430\u043d\u04b3\u043e \u043a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e\u0440\u043e \u04b7\u0443\u0441\u0442\u0430\u043d",
"Spell check": "\u0421\u0430\u043d\u04b7\u0438\u0448\u0438 \u0438\u043c\u043b\u043e",
"Ignore": "\u0410\u04b3\u0430\u043c\u0438\u044f\u0442 \u043d\u0430\u0434\u043e\u0434\u0430\u043d",
"Ignore all": "\u0410\u04b3\u0430\u043c\u0438\u044f\u0442 \u043d\u0430\u0434\u043e\u0434\u0430\u043d \u0431\u0430 \u04b3\u0430\u043c\u043c\u0430\u0448",
"Finish": "\u0422\u0430\u043c\u043e\u043c",
"Add to Dictionary": "\u0414\u0430\u0440 \u043b\u0443\u0493\u0430\u0442 \u0438\u043b\u043e\u0432\u0430 \u043a\u0443\u043d",
"Insert table": "\u0412\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u04b7\u0430\u0434\u0432\u0430\u043b",
"Table properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u04b7\u0430\u0434\u0432\u0430\u043b",
"Delete table": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u04b7\u0430\u0434\u0432\u0430\u043b",
"Cell": "\u0421\u04ef\u0440\u043e\u0445",
"Row": "\u0425\u0430\u0442",
"Column": "\u0421\u0443\u0442\u0443\u043d",
"Cell properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u0441\u04ef\u0440\u043e\u0445",
"Merge cells": "\u0421\u04ef\u0440\u043e\u0445\u0438\u04b3\u043e\u0440\u043e \u044f\u043a\u04b7\u043e\u044f \u043a\u0430\u0440\u0434\u0430\u043d",
"Split cell": "\u0421\u04ef\u0440\u043e\u0445\u0438\u04b3\u043e\u0440\u043e \u0431\u0443\u0440\u0438\u0434\u0430\u043d",
"Insert row before": "\u0425\u0430\u0442 \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0435\u0448 \u0430\u0437",
"Insert row after": "\u0425\u0430\u0442 \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0430\u0441 \u0430\u0437",
"Delete row": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u0445\u0430\u0442",
"Row properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u0445\u0430\u0442",
"Cut row": "\u0411\u0443\u0440\u0438\u0434\u0430\u043d\u0438 \u0445\u0430\u0442",
"Copy row": "\u041d\u0443\u0441\u0445\u0430\u0431\u043e\u0440\u0434\u043e\u0440\u0438\u0438 \u0445\u0430\u0442",
"Paste row before": "\u0425\u0430\u0442 \u0433\u0443\u0437\u043e\u0448\u0442\u0430\u043d \u043f\u0435\u0448 \u0430\u0437",
"Paste row after": "\u0425\u0430\u0442 \u0433\u0443\u0437\u043e\u0448\u0442\u0430\u043d \u043f\u0430\u0441 \u0430\u0437",
"Insert column before": "\u0421\u0443\u0442\u0443\u043d \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0435\u0448 \u0430\u0437",
"Insert column after": "\u0421\u0443\u0442\u0443\u043d \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0430\u0441 \u0430\u0437",
"Delete column": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u0441\u0443\u0442\u0443\u043d",
"Cols": "\u0421\u0443\u0442\u0443\u043d\u04b3\u043e",
"Rows": "\u0425\u0430\u0442\u04b3\u043e",
"Width": "\u041f\u0430\u04b3\u043d\u0438",
"Height": "\u0411\u0430\u043b\u0430\u043d\u0434\u0438",
"Cell spacing": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0431\u0435\u0440\u0443\u043d\u0430",
"Cell padding": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0434\u0430\u0440\u0443\u043d\u0430",
"Show caption": "\u041d\u0430\u043c\u043e\u0438\u0448\u0438 \u0441\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
"Left": "\u0427\u0430\u043f",
"Center": "\u041c\u0430\u0440\u043a\u0430\u0437",
"Right": "\u0420\u043e\u0441\u0442",
"Cell type": "\u041d\u0430\u043c\u0443\u0434\u0438 \u0441\u0443\u0440\u043e\u0445\u04e3",
"Scope": "Scope",
"Alignment": "\u0420\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d",
"H Align": "\u0410\u0437 \u0431\u043e\u043b\u043e \u0431\u0430 \u043f\u043e\u0451\u043d",
"V Align": "\u0410\u0437 \u0447\u0430\u043f \u0431\u0430 \u0440\u043e\u0441\u0442",
"Top": "\u0411\u043e\u043b\u043e",
"Middle": "\u041c\u043e\u0431\u0430\u0439\u043d",
"Bottom": "\u041f\u043e\u0451\u043d",
"Header cell": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
"Row group": "\u0413\u0443\u0440\u0443\u04b3\u0438 \u0445\u0430\u0442\u04b3\u043e",
"Column group": "\u0413\u0443\u0440\u0443\u04b3\u0438 \u0441\u0443\u0442\u0443\u043d",
"Row type": "\u041d\u0430\u043c\u0443\u0434\u0438 \u0445\u0430\u0442",
"Header": "\u049a\u0438\u0441\u043c\u0438 \u0431\u043e\u043b\u043e\u0438",
"Body": "\u049a\u0438\u0441\u043c\u0438 \u0430\u0441\u043b\u0438",
"Footer": "\u049a\u0438\u0441\u043c\u0438 \u043f\u043e\u0451\u043d\u0438",
"Border color": "\u0420\u0430\u043d\u0433\u0438 \u04b3\u0443\u0434\u0443\u0434",
"Insert template...": "\u0428\u0430\u0431\u043b\u043e\u043d \u0433\u0443\u0437\u043e\u0440\u0435\u0434 ...",
"Templates": "\u049a\u043e\u043b\u0430\u0431",
"Template": "\u041d\u0430\u043c\u0443\u043d\u0430",
"Text color": "\u0420\u0430\u043d\u0433\u0438 \u043c\u0430\u0442\u043d",
"Background color": "\u0420\u0430\u043d\u0433\u0438 \u043f\u0443\u0448\u0442\u0438 \u043c\u0430\u0442\u043d",
"Custom...": "\u0425\u0443\u0441\u0443\u0441\u04e3",
"Custom color": "\u0420\u0430\u043d\u0433\u0438 \u0445\u0443\u0441\u0443\u0441\u04e3",
"No color": "\u0411\u0435 \u0440\u0430\u043d\u0433",
"Remove color": "\u0420\u0430\u043d\u0433\u0440\u043e \u043d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d",
"Table of Contents": "\u041c\u0443\u043d\u0434\u0430\u0440\u0438\u04b7\u0430",
"Show blocks": "\u041d\u0438\u0448\u043e\u043d \u0434\u043e\u0434\u0430\u043d\u0438 \u0433\u0443\u0440\u0443\u04b3\u04b3\u043e",
"Show invisible characters": "\u0420\u0430\u043c\u0437\u04b3\u043e\u0438 \u043c\u0430\u0445\u0441\u0443\u0441\u0440\u043e \u043d\u0438\u0448\u043e\u043d \u0434\u043e\u0434\u0430\u043d",
"Word count": "\u0428\u0443\u043c\u043e\u0440\u0430\u0438 \u043a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e",
"Count": "\u0428\u0443\u043c\u043e\u0440\u0430",
"Document": "\u04b2\u0443\u04b7\u04b7\u0430\u0442",
"Selection": "\u0418\u043d\u0442\u0438\u0445\u043e\u0431\u04b3\u043e",
"Words": "\u041a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e",
"Words: {0}": "\u041a\u043b\u0438\u043c\u0430\u04b3\u043e: {0}",
"{0} words": "{0} \u043a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0422\u0430\u0493\u0438\u0440\u043e\u0442",
"Insert": "\u0412\u043e\u0440\u0438\u0434",
"View": "\u041c\u0430\u043d\u0437\u0443\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Table": "\u04b6\u0430\u0434\u0432\u0430\u043b",
"Tools": "\u0410\u0441\u0431\u043e\u0431\u04b3\u043e",
"Powered by {0}": "\u041d\u0435\u0440\u04ef\u043c\u0430\u043d\u0434\u0448\u0443\u0434\u0430 \u0430\u0437 \u04b7\u043e\u043d\u0438\u0431\u0438 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041c\u0435\u043d\u044e ALT-F9. \u0410\u0441\u0431\u043e\u0431\u04b3\u043e ALT-F10. \u041a\u0443\u043c\u043c\u0430\u043a ALT-0",
"Image title": "\u0423\u043d\u0432\u043e\u043d\u0438 \u0442\u0430\u0441\u0432\u0438\u0440",
"Border width": "\u041f\u0430\u04b3\u043c\u0438\u0438 \u0447\u043e\u0440\u0447\u04ef\u0431\u0430",
"Border style": "\u0421\u0442\u0438\u043b\u0438 \u0447\u043e\u0440\u0447\u04ef\u0431\u0430",
"Error": "\u0425\u0430\u0442\u043e\u0433\u04e3",
"Warn": "\u041e\u0433\u043e\u04b3\u04e3",
"Valid": "\u0414\u0443\u0440\u0443\u0441\u0442",
"To open the popup, press Shift+Enter": "\u0411\u0430\u0440\u043e\u0438 \u043a\u0443\u0448\u043e\u0434\u0430\u043d\u0438 \u043f\u043e\u043f-\u0430\u043f, Shift + Enter\u0440\u043e \u043f\u0430\u0445\u0448 \u043a\u0443\u043d\u0435\u0434",
"Rich Text Area. Press ALT-0 for help.": "\u041c\u0438\u043d\u0442\u0430\u049b\u0430\u0438 \u0431\u043e\u0439\u0438 \u043c\u0430\u0442\u043d. \u0411\u0430\u0440\u043e\u0438 \u043a\u04ef\u043c\u0430\u043a ALT-0 -\u0440\u043e \u043f\u0430\u0445\u0448 \u043a\u0443\u043d\u0435\u0434.",
"System Font": "\u04b2\u0430\u0440\u0444\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430",
"Failed to upload image: {0}": "\u0421\u0443\u0440\u0430\u0442 \u0431\u043e\u0440 \u043a\u0430\u0440\u0434\u0430 \u043d\u0430\u0448\u0443\u0434: {0}",
"Failed to load plugin: {0} from url {1}": "\u0411\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043c\u043a\u043e\u043d\u043d\u043e\u043f\u0430\u0437\u0438\u0440 \u043d\u0435\u0441\u0442: {0} \u0430\u0437 URL {1}",
"Failed to load plugin url: {0}": "\u0425\u0430\u0442\u043e\u0433\u0438\u0438 URL, \u0431\u043e\u0440\u043a\u0443\u043d\u04e3 \u043c\u0443\u044f\u0441\u0441\u0430\u0440 \u043d\u0430\u0448\u0443\u0434: {0}",
"Failed to initialize plugin: {0}": "\u0422\u0430\u043d\u0437\u0438\u043c \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u043c\u0443\u044f\u0441\u0441\u0430\u0440 \u043d\u0430\u0448\u0443\u0434: {0}",
"example": "\u043d\u0430\u043c\u0443\u043d\u0430",
"Search": "\u04b6\u0443\u0441\u0442\u0443\u04b7\u04ef",
"All": "\u04b2\u0430\u043c\u0430",
"Currency": "\u0410\u0441\u044a\u043e\u0440",
"Text": "\u041c\u0430\u0442\u043d",
"Quotations": "\u0418\u049b\u0442\u0438\u0431\u043e\u0441\u04b3\u043e",
"Mathematical": "\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u04e3",
"Extended Latin": "\u041b\u043e\u0442\u0438\u043d\u0438\u0438 \u0432\u0430\u0441\u0435\u044a",
"Symbols": "\u0410\u043b\u043e\u043c\u0430\u0442\u04b3\u043e",
"Arrows": "\u0422\u0438\u0440\u04b3\u043e",
"User Defined": "\u041a\u043e\u0440\u0431\u0430\u0440 \u043c\u0443\u0430\u0439\u044f\u043d \u043a\u0430\u0440\u0434\u0430",
"dollar sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0434\u043e\u043b\u043b\u0430\u0440",
"currency sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0430\u0441\u044a\u043e\u0440",
"euro-currency sign": "\u0435\u0432\u0440\u043e \u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0430\u0441\u044a\u043e\u0440",
"colon sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043a\u043e\u043b\u043e\u043d",
"cruzeiro sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 cruzeiro",
"french franc sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0444\u0440\u0430\u043d\u043a\u0438 \u0444\u0430\u0440\u043e\u043d\u0441\u0430\u0432\u04e3",
"lira sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043b\u0438\u0440\u0430",
"mill sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043c\u0438\u043b",
"naira sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043d\u0430\u0438\u0440\u0430",
"peseta sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043f\u0435\u0441\u0435\u0442\u0430",
"rupee sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0440\u0443\u043f\u0438",
"won sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0432\u043e\u043d",
"new sheqel sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0448\u0435\u043a\u0435\u043b\u0438 \u043d\u0430\u0432",
"dong sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0434\u043e\u043d\u0433",
"kip sign": "\u043d\u0438\u0448\u043e\u043d\u0438 \u043a\u0438\u043f",
"tugrik sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0442\u0443\u0433\u0440\u0438\u043a",
"drachma sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0434\u0440\u0430\u0445\u043c\u0430",
"german penny symbol": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0434\u0438\u043d\u043e\u0440\u0438 \u041e\u043b\u043c\u043e\u043d",
"peso sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043f\u0435\u0441\u043e",
"guarani sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0433\u0443\u0430\u0440\u0430\u043d\u0430",
"austral sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0430\u0432\u0441\u0442\u0440\u0430\u043b",
"hryvnia sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0433\u0440\u0438\u0432\u043d\u0430",
"cedi sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0441\u0435\u0434\u0438",
"livre tournois sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043b\u0438\u0432\u0440 \u0442\u0443\u0440\u043d\u043e\u0441",
"spesmilo sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0441\u043f\u0435\u0441\u043c\u0438\u043b\u043e",
"tenge sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0442\u0435\u043d\u0433\u0435",
"indian rupee sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0440\u0443\u043f\u0438\u0438 \u04b3\u0438\u043d\u0434\u04e3",
"turkish lira sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043b\u0438\u0440\u0430\u0438 \u0442\u0443\u0440\u043a\u04e3",
"nordic mark sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043c\u0430\u0440\u043a\u0438 \u043d\u043e\u0440\u0432\u0435\u0433\u0438",
"manat sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u043c\u0430\u043d\u0430\u0442",
"ruble sign": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0440\u0443\u0431\u043b",
"yen character": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0439\u0435\u043d",
"yuan character": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u044e\u0430\u043d",
"yuan character, in hong kong and taiwan": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u044e\u0430\u043d, \u0434\u0430\u0440 \u0425\u043e\u043d\u0433 \u041a\u043e\u043d\u0433 \u0432\u0430 \u0422\u0430\u0439\u0432\u0430\u043d",
"yen\/yuan character variant one": "\u0430\u043b\u043e\u043c\u0430\u0442\u0438 \u0439\u0435\u043d\/\u044e\u0430\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0438 \u044f\u043a\u0443\u043c",
"Loading emoticons...": "\u0411\u043e\u0440\u043a\u0443\u043d\u0438\u0438 \u0441\u043c\u0430\u0439\u043b\u04b3\u043e ...",
"Could not load emoticons": "\u0421\u043c\u0430\u0439\u043b\u04b3\u043e \u0431\u043e\u0440 \u043a\u0430\u0440\u0434\u0430 \u043d\u0430\u0448\u0443\u0434",
"People": "\u041c\u0430\u0440\u0434\u0443\u043c",
"Animals and Nature": "\u04b2\u0430\u0439\u0432\u043e\u043d\u043e\u0442 \u0432\u0430 \u0442\u0430\u0431\u0438\u0430\u0442",
"Food and Drink": "\u0492\u0438\u0437\u043e \u0432\u0430 \u043d\u04ef\u0448\u043e\u043a\u04e3",
"Activity": "\u0424\u0430\u044a\u043e\u043b\u0438\u044f\u0442",
"Travel and Places": "\u0421\u0430\u0444\u0430\u0440 \u0432\u0430 \u04b7\u043e\u0439\u04b3\u043e",
"Objects": "\u041e\u0431\u044a\u0435\u043a\u0442\u04b3\u043e",
"Flags": "\u041f\u0430\u0440\u0447\u0430\u043c\u04b3\u043e",
"Characters": "\u0410\u043b\u043e\u043c\u0430\u0442\u04b3\u043e",
"Characters (no spaces)": "\u0410\u043b\u043e\u043c\u0430\u0442\u04b3\u043e (\u0431\u0435 \u0444\u043e\u0441\u0438\u043b\u0430)",
"{0} characters": "{0} \u0430\u043b\u043e\u043c\u0430\u0442\u04b3\u043e",
"Error: Form submit field collision.": "\u0425\u0430\u0442\u043e\u0433\u04e3: \u0414\u0430\u0440 \u043c\u0430\u0439\u0434\u043e\u043d\u04b3\u043e\u0438 \u0434\u043e\u0445\u0438\u043b\u043a\u0443\u043d\u0438 \u0437\u0438\u0434\u0434\u0438\u044f\u0442 \u0451\u0444\u0442 \u0448\u0443\u0434.",
"Error: No form element found.": "\u0425\u0430\u0442\u043e\u0433\u04e3: \u042f\u0433\u043e\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u043c\u0430\u0439\u0434\u043e\u043d \u0451\u0444\u0442 \u043d\u0430\u0448\u0443\u0434.",
"Update": "\u041d\u0430\u0432\u0441\u043e\u0437\u04e3",
"Color swatch": "\u041a\u0430\u0448\u0438\u0448\u0438 \u0440\u0430\u043d\u0433",
"Turquoise": "\u0422\u0443\u0440\u043a\u0443",
"Green": "\u0421\u0430\u0431\u0437",
"Blue": "\u041a\u0430\u0431\u0443\u0434",
"Purple": "\u0410\u0440\u0493\u0443\u0432\u043e\u043d",
"Navy Blue": "\u041a\u0430\u0431\u0443\u0434\u0438 \u0442\u0438\u0440\u0430",
"Dark Turquoise": "\u0422\u0443\u0440\u043a\u0443\u0438 \u0442\u043e\u0440\u0438\u043a",
"Dark Green": "\u0421\u0430\u0431\u0437\u0438 \u0442\u043e\u0440\u0438\u043a",
"Medium Blue": "\u041a\u0430\u0431\u0443\u0434\u0438 \u043c\u0438\u0451\u043d\u0430",
"Medium Purple": "\u0410\u0440\u0493\u0443\u0432\u043e\u043d\u0438 \u043c\u0438\u0451\u043d\u0430",
"Midnight Blue": "\u041a\u0430\u0431\u0443\u0434\u0438 \u0442\u0438\u0440\u0430",
"Yellow": "\u0417\u0430\u0440\u0434",
"Orange": "\u041d\u043e\u0440\u0438\u043d\u04b7\u04e3",
"Red": "\u0421\u0443\u0440\u0445",
"Light Gray": "\u0425\u043e\u043a\u0438\u0441\u0442\u0430\u0440\u0440\u0430\u043d\u0433\u0438 \u0445\u0438\u0440\u0430",
"Gray": "\u0425\u043e\u043a\u0438\u0441\u0442\u0430\u0440\u0440\u0430\u043d\u0433",
"Dark Yellow": "\u0417\u0430\u0440\u0434\u0438 \u0442\u0438\u0440\u0430",
"Dark Orange": "\u041d\u043e\u0440\u0438\u043d\u04b7\u0438\u0438 \u0442\u0438\u0440\u0430",
"Dark Red": "\u0421\u0443\u0440\u0445\u0438 \u0442\u043e\u0440\u0438\u043a",
"Medium Gray": "\u0425\u043e\u043a\u0438\u0441\u0442\u0430\u0440\u0440\u0430\u043d\u0433\u0438 \u043c\u0438\u0451\u043d\u0430",
"Dark Gray": "\u0425\u043e\u043a\u0438\u0441\u0442\u0430\u0440\u0440\u0430\u043d\u0433\u0438 \u0442\u0438\u0440\u0430",
"Light Green": "\u0421\u0430\u0431\u0437\u0438 \u0445\u0438\u0440\u0430",
"Light Yellow": "\u0417\u0430\u0440\u0434\u0438 \u0445\u0438\u0440\u0430",
"Light Red": "\u0421\u0443\u0440\u0445\u0438 \u0445\u0438\u0440\u0430",
"Light Purple": "\u0410\u0440\u0493\u0443\u0432\u043e\u043d\u0438 \u0445\u0438\u0440\u0430",
"Light Blue": "\u041a\u0430\u0431\u0443\u0434\u0438 \u0445\u0438\u0440\u0430",
"Dark Purple": "\u0410\u0440\u0493\u0443\u0432\u043e\u043d\u0438 \u0442\u0438\u0440\u0430",
"Dark Blue": "\u041a\u0430\u0431\u0443\u0434\u0438 \u0442\u043e\u0440\u0438\u043a",
"Black": "\u0421\u0438\u0451\u04b3",
"White": "\u0421\u0430\u0444\u0435\u0434",
"Switch to or from fullscreen mode": "\u0411\u0430 \u04b3\u043e\u043b\u0430\u0442\u0438 \u043f\u0443\u0440\u0440\u0430\u0438 \u0440\u0430\u0432\u0437\u0430\u043d\u0430 \u0433\u0443\u0437\u0430\u0440\u0435\u0434",
"Open help dialog": "\u041e\u0438\u043d\u0430\u0438 \u043a\u04ef\u043c\u0430\u043a\u0440\u043e \u043a\u0443\u0448\u043e\u0435\u0434",
"history": "\u0442\u0430\u044a\u0440\u0438\u0445",
"styles": "\u0443\u0441\u043b\u0443\u0431\u04b3\u043e",
"formatting": "\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043d\u04e3",
"alignment": "\u041c\u0443\u0442\u043e\u0431\u0438\u049b\u043a\u0443\u043d\u04e3",
"indentation": "\u0444\u043e\u0441\u0438\u043b\u0430",
"permanent pen": "\u049b\u0430\u043b\u0430\u043c",
"comments": "\u0442\u0430\u0444\u0441\u0438\u0440\u04b3\u043e",
"Format Painter": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0448\u0430\u043a",
"Insert\/edit iframe": "\u0412\u043e\u0440\u0438\u0434\/\u0442\u0430\u0493\u0438\u0440 \u0434\u043e\u0434\u0430\u043d\u0438 iframe",
"Capitalization": "\u0421\u0430\u0440\u043c\u043e\u044f\u0433\u0443\u0437\u043e\u0440\u04e3",
"lowercase": "\u0431\u043e \u04b3\u0430\u0440\u0444\u04b3\u043e\u0438 \u0445\u0443\u0440\u0434",
"UPPERCASE": "\u0411\u041e \u04b2\u0410\u0420\u0424\u04b2\u041e\u0418 \u041a\u0410\u041b\u041e\u041d",
"Title Case": "\u041f\u0430\u0440\u0432\u0430\u043d\u0434\u0430\u0438 \u0443\u043d\u0432\u043e\u043d",
"Permanent Pen Properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u04b3\u043e\u0438 \u049b\u0430\u043b\u0430\u043c",
"Permanent pen properties...": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u04b3\u043e\u0438 \u049b\u0430\u043b\u0430\u043c ...",
"Font": "\u04b2\u0443\u0440\u0443\u0444",
"Size": "\u0410\u043d\u0434\u043e\u0437\u0430",
"More...": "\u0411\u0435\u0448\u0442\u0430\u0440...",
"Spellcheck Language": "\u0417\u0430\u0431\u043e\u043d\u0438 \u0438\u043c\u043b\u043e",
"Select...": "\u0418\u043d\u0442\u0438\u0445\u043e\u0431 \u043a\u0443\u043d\u0435\u0434 ...",
"Preferences": "\u0410\u0444\u0437\u0430\u043b\u0438\u044f\u0442\u04b3\u043e",
"Yes": "\u04b2a",
"No": "\u041d\u0435",
"Keyboard Navigation": "\u041d\u0430\u0432\u0438\u0433\u0430\u0442\u0441\u0438\u044f\u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430",
"Version": "\u0412\u0435\u0440\u0441\u0438\u044f",
"Anchor": "\u041b\u0430\u043d\u0433\u0430\u0440",
"Special character": "\u0420\u0430\u043c\u0437\u04b3\u043e\u0438 \u043c\u0430\u0445\u0441\u0443\u0441",
"Color": "\u0420\u0430\u043d\u0433",
"Emoticons": "\u042d\u04b3\u0441\u043e\u0441\u04b3\u043e",
"Document properties": "\u04b2\u043e\u043b\u0430\u0442\u0438 \u04b3\u0443\u04b7\u04b7\u0430\u0442",
"Insert link": "\u0418\u0441\u0442\u0438\u043d\u043e\u0434 \u0433\u0443\u0437\u043e\u0448\u0442\u0430\u043d",
"Target": "\u041d\u0438\u0448\u043e\u043d\u0430",
"Poster": "\u042d\u044a\u043b\u043e\u043d\u043d\u043e\u043c\u0430",
"Print": "\u0427\u043e\u043f \u043a\u0430\u0440\u0434\u0430\u043d",
"Whole words": "\u041a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e\u0438 \u043f\u0443\u0440\u0440\u0430",
"Find and replace": "\u0401\u0444\u0442\u0430\u043d \u0432\u0430 \u0442\u0430\u0493\u0438\u0440 \u0434\u043e\u0434\u0430\u043d",
"Prev": "\u0413\u0443\u0437\u0430\u0448\u0442\u0430",
"Spellcheck": "\u0422\u0430\u0444\u0442\u0438\u0448\u0438 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u04e3",
"Caption": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
"Insert template": "\u0412\u043e\u0440\u0438\u0434\u0438 \u049b\u043e\u043b\u0430\u0431"
});js/tinymce/langs/ga.js000064400000025015151727150300010665 0ustar00tinymce.addI18n('ga',{
"Redo": "Athdh\u00e9an",
"Undo": "Cealaigh",
"Cut": "Gearr",
"Copy": "C\u00f3ipe\u00e1il",
"Paste": "Greamaigh",
"Select all": "Roghnaigh uile",
"New document": "C\u00e1ip\u00e9is nua",
"Ok": "OK",
"Cancel": "Cealaigh",
"Visual aids": "\u00c1iseanna amhairc",
"Bold": "Trom",
"Italic": "Iod\u00e1lach",
"Underline": "Fol\u00edne",
"Strikethrough": "L\u00edne tr\u00edd",
"Superscript": "Forscript",
"Subscript": "Foscript",
"Clear formatting": "Glan form\u00e1idi\u00fa",
"Align left": "Ail\u00ednigh ar chl\u00e9",
"Align center": "Ail\u00ednigh sa l\u00e1r",
"Align right": "Ail\u00ednigh ar dheis",
"Justify": "Comhfhadaigh",
"Bullet list": "Liosta Urchar",
"Numbered list": "Liosta Uimhrithe",
"Decrease indent": "Laghdaigh eang",
"Increase indent": "M\u00e9adaigh eang",
"Close": "D\u00fan",
"Formats": "Form\u00e1id\u00ed",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "N\u00ed f\u00e9idir le do bhrabhs\u00e1la\u00ed teacht go d\u00edreach ar an ngearrthaisce. Bain \u00fas\u00e1id as na haicearra\u00ed Ctrl+X\/C\/V. ",
"Headers": "Ceannt\u00e1sca",
"Header 1": "Ceannt\u00e1sc 1",
"Header 2": "Ceannt\u00e1sc 2",
"Header 3": "Ceannt\u00e1sc 3",
"Header 4": "Ceannt\u00e1sc 4",
"Header 5": "Ceannt\u00e1sc 5",
"Header 6": "Ceannt\u00e1sc 6",
"Headings": "Ceannteidil",
"Heading 1": "Ceannteideal 1",
"Heading 2": "Ceannteideal 2",
"Heading 3": "Ceannteideal 3",
"Heading 4": "Ceannteideal 4",
"Heading 5": "Ceannteideal 5",
"Heading 6": "Ceannteideal 6",
"Preformatted": "R\u00e9amhfhorm\u00e1idithe",
"Div": "Deighilt",
"Pre": "R\u00e9amh",
"Code": "C\u00f3d",
"Paragraph": "Alt",
"Blockquote": "Athfhriotal",
"Inline": "Inl\u00edne",
"Blocks": "Blocanna",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Sa m\u00f3d gn\u00e1th-th\u00e9acs anois. Gream\u00f3far \u00e1bhar mar ghn\u00e1th-th\u00e9acs go dt\u00ed go m\u00fachfaidh t\u00fa an rogha seo.",
"Font Family": "Cl\u00f3fhoireann",
"Font Sizes": "Cl\u00f3mh\u00e9ideanna",
"Class": "Aicme",
"Browse for an image": "Brabhs\u00e1il le haghaidh \u00edomh\u00e1",
"OR": "N\u00d3",
"Drop an image here": "Scaoil \u00edomh\u00e1 anseo",
"Upload": "Uasl\u00f3d\u00e1il",
"Block": "Bloc",
"Align": "Ail\u00ednigh",
"Default": "R\u00e9amhshocr\u00fa",
"Circle": "Ciorcal",
"Disc": "Diosca",
"Square": "Cearn\u00f3g",
"Lower Alpha": "Alfa Beag",
"Lower Greek": "Litir Bheag Ghr\u00e9agach",
"Lower Roman": "Litir Bheag R\u00f3mh\u00e1nach",
"Upper Alpha": "Alfa M\u00f3r",
"Upper Roman": "Litir Mh\u00f3r R\u00f3mh\u00e1nach",
"Anchor": "Ancaire",
"Name": "Ainm",
"Id": "Aitheantas",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "N\u00ed m\u00f3r don aitheantas tos\u00fa le litir, agus gan ach litreacha, uimhreacha, daiseanna, poncanna, idirstadanna, n\u00f3 fostr\u00edoca ina dhiaidh sin.",
"You have unsaved changes are you sure you want to navigate away?": "T\u00e1 athruithe gan s\u00e1bh\u00e1il ann. An bhfuil t\u00fa cinnte gur mhaith leat imeacht amach as seo?",
"Restore last draft": "Oscail an dr\u00e9acht is d\u00e9ana\u00ed",
"Special character": "Carachtar speisialta",
"Source code": "C\u00f3d foinseach",
"Insert\/Edit code sample": "Cuir sampla c\u00f3id isteach\/in eagar",
"Language": "Teanga",
"Code sample": "Sampla c\u00f3id",
"Color": "Dath",
"R": "D",
"G": "U",
"B": "G",
"Left to right": "Cl\u00e9-go-deas",
"Right to left": "Deas-go-cl\u00e9",
"Emoticons": "Straoiseoga",
"Document properties": "Air\u00edonna na C\u00e1ip\u00e9ise",
"Title": "Teideal",
"Keywords": "Lorgfhocail",
"Description": "Cur S\u00edos",
"Robots": "R\u00f3bait",
"Author": "\u00dadar",
"Encoding": "Ionch\u00f3d\u00fa",
"Fullscreen": "L\u00e1nsc\u00e1ile\u00e1n",
"Action": "Gn\u00edomh",
"Shortcut": "Aicearra",
"Help": "Cabhair",
"Address": "Seoladh",
"Focus to menubar": "F\u00f3cas sa bharra roghchl\u00e1ir",
"Focus to toolbar": "F\u00f3cas sa bharra uirlis\u00ed",
"Focus to element path": "F\u00f3cas sa chonair eiliminte",
"Focus to contextual toolbar": "F\u00f3cas sa bharra uirlis\u00ed comhth\u00e9acs\u00fail",
"Insert link (if link plugin activated)": "Cuir nasc isteach (m\u00e1 t\u00e1 an breise\u00e1n naisc ar si\u00fal)",
"Save (if save plugin activated)": "S\u00e1bh\u00e1il (m\u00e1 t\u00e1 an breise\u00e1n s\u00e1bh\u00e1la ar si\u00fal)",
"Find (if searchreplace plugin activated)": "Aimsigh (m\u00e1 t\u00e1 an breise\u00e1n cuardaigh ar si\u00fal)",
"Plugins installed ({0}):": "Breise\u00e1in shuite\u00e1ilte ({0}):",
"Premium plugins:": "Scothbhreise\u00e1in:",
"Learn more...": "Tuilleadh eolais...",
"You are using {0}": "T\u00e1 t\u00fa ag \u00fas\u00e1id {0}",
"Plugins": "Breise\u00e1in",
"Handy Shortcuts": "Aicearra\u00ed \u00das\u00e1ideacha",
"Horizontal line": "L\u00edne chothrom\u00e1nach",
"Insert\/edit image": "Cuir \u00edomh\u00e1 isteach\/in eagar",
"Image description": "Cur s\u00edos ar an \u00edomh\u00e1",
"Source": "Foinse",
"Dimensions": "Tois\u00ed",
"Constrain proportions": "Comhr\u00e9ir faoi ghlas",
"General": "Ginear\u00e1lta",
"Advanced": "Casta",
"Style": "St\u00edl",
"Vertical space": "Sp\u00e1s ingearach",
"Horizontal space": "Sp\u00e1s cothrom\u00e1nach",
"Border": "Iml\u00edne",
"Insert image": "Cuir \u00edomh\u00e1 isteach",
"Image": "\u00cdomh\u00e1",
"Image list": "Liosta \u00edomh\u00e1nna",
"Rotate counterclockwise": "Rothlaigh ar tuathal",
"Rotate clockwise": "Rothlaigh ar deiseal",
"Flip vertically": "Cas go hingearach",
"Flip horizontally": "Cas go cothrom\u00e1nach",
"Edit image": "Cuir an \u00edomh\u00e1 in eagar",
"Image options": "Roghanna \u00edomh\u00e1",
"Zoom in": "Z\u00fam\u00e1il isteach",
"Zoom out": "Z\u00fam\u00e1il amach",
"Crop": "Bear",
"Resize": "Athraigh m\u00e9id",
"Orientation": "Treoshu\u00edomh",
"Brightness": "Gile",
"Sharpen": "G\u00e9araigh",
"Contrast": "Codarsnacht",
"Color levels": "Leibh\u00e9il datha",
"Gamma": "G\u00e1ma",
"Invert": "Inbh\u00e9artaigh",
"Apply": "Cuir i bhfeidhm",
"Back": "Siar",
"Insert date\/time": "Cuir d\u00e1ta\/am isteach",
"Date\/time": "D\u00e1ta\/am",
"Insert link": "Cuir nasc isteach",
"Insert\/edit link": "Cuir nasc isteach\/in eagar",
"Text to display": "T\u00e9acs le taispe\u00e1int",
"Url": "URL",
"Target": "Sprioc",
"None": "Dada",
"New window": "Fuinneog nua",
"Remove link": "Bain an nasc",
"Anchors": "Ancair\u00ed",
"Link": "Nasc",
"Paste or type a link": "Greamaigh n\u00f3 cl\u00f3scr\u00edobh nasc",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Is seoladh r\u00edomhphoist \u00e9 an URL a chuir t\u00fa isteach. An bhfuil fonn ort an r\u00e9im\u00edr riachtanach mailto: a chur leis?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Is nasc seachtrach \u00e9 an URL a chuir t\u00fa isteach. An bhfuil fonn ort an r\u00e9im\u00edr riachtanach http:\/\/ a chur leis?",
"Link list": "Liosta nascanna",
"Insert video": "Cuir f\u00edse\u00e1n isteach",
"Insert\/edit video": "Cuir f\u00edse\u00e1n isteach\/in eagar",
"Insert\/edit media": "Cuir me\u00e1n isteach\/in eagar",
"Alternative source": "Foinse mhalartach",
"Poster": "P\u00f3staer",
"Paste your embed code below:": "Greamaigh do ch\u00f3d leabaithe th\u00edos:",
"Embed": "Leabaigh",
"Media": "Me\u00e1in",
"Nonbreaking space": "Sp\u00e1s neamhbhristeach",
"Page break": "Briseadh leathanaigh",
"Paste as text": "Greamaigh mar th\u00e9acs",
"Preview": "R\u00e9amhamharc",
"Print": "Priont\u00e1il",
"Save": "S\u00e1bh\u00e1il",
"Find": "Aimsigh",
"Replace with": "Ionadaigh le",
"Replace": "Ionadaigh",
"Replace all": "Ionadaigh uile",
"Prev": "Siar",
"Next": "Ar aghaidh",
"Find and replace": "Aimsigh agus ionadaigh",
"Could not find the specified string.": "N\u00edor aims\u00edodh an teaghr\u00e1n.",
"Match case": "C\u00e1s-\u00edogair",
"Whole words": "Focail ioml\u00e1na",
"Spellcheck": "Seice\u00e1il an litri\u00fa",
"Ignore": "D\u00e9an neamhaird air",
"Ignore all": "D\u00e9an neamhaird orthu go l\u00e9ir",
"Finish": "Cr\u00edochnaigh",
"Add to Dictionary": "Cuir leis an bhFocl\u00f3ir \u00e9",
"Insert table": "Ions\u00e1igh t\u00e1bla",
"Table properties": "Air\u00edonna an t\u00e1bla",
"Delete table": "Scrios an t\u00e1bla",
"Cell": "Cill",
"Row": "R\u00f3",
"Column": "Col\u00fan",
"Cell properties": "Air\u00edonna na cille",
"Merge cells": "Cumaisc cealla",
"Split cell": "Roinn cill",
"Insert row before": "Ions\u00e1igh r\u00f3 os a chionn",
"Insert row after": "Ions\u00e1igh r\u00f3 faoi",
"Delete row": "Scrios an r\u00f3",
"Row properties": "Air\u00edonna an r\u00f3",
"Cut row": "Gearr an r\u00f3",
"Copy row": "C\u00f3ipe\u00e1il an r\u00f3",
"Paste row before": "Greamaigh r\u00f3 os a chionn",
"Paste row after": "Greamaigh r\u00f3 faoi",
"Insert column before": "Ions\u00e1igh col\u00fan ar chl\u00e9",
"Insert column after": "Ions\u00e1igh col\u00fan ar dheis",
"Delete column": "Scrios an col\u00fan",
"Cols": "Col\u00fain",
"Rows": "R\u00f3nna",
"Width": "Leithead",
"Height": "Airde",
"Cell spacing": "Sp\u00e1s\u00e1il ceall",
"Cell padding": "Stu\u00e1il ceall",
"Caption": "Fotheideal",
"Left": "Ar Chl\u00e9",
"Center": "Sa L\u00e1r",
"Right": "Ar Dheis",
"Cell type": "Cine\u00e1l na cille",
"Scope": "Sc\u00f3ip",
"Alignment": "Ail\u00edni\u00fa",
"H Align": "Ail\u00edni\u00fa C.",
"V Align": "Ail\u00edni\u00fa I.",
"Top": "Barr",
"Middle": "L\u00e1r",
"Bottom": "Bun",
"Header cell": "Cill cheannt\u00e1isc",
"Row group": "Gr\u00fapa r\u00f3nna",
"Column group": "Gr\u00fapa col\u00fan",
"Row type": "Cine\u00e1l an r\u00f3",
"Header": "Ceannt\u00e1sc",
"Body": "Corp",
"Footer": "Bunt\u00e1sc",
"Border color": "Dath na himl\u00edne",
"Insert template": "Ions\u00e1igh teimpl\u00e9ad",
"Templates": "Teimpl\u00e9id",
"Template": "Teimpl\u00e9ad",
"Text color": "Dath an t\u00e9acs",
"Background color": "Dath an ch\u00falra",
"Custom...": "Saincheap...",
"Custom color": "Dath saincheaptha",
"No color": "Gan dath",
"Table of Contents": "Cl\u00e1r na n\u00c1bhar",
"Show blocks": "Taispe\u00e1in blocanna",
"Show invisible characters": "Taispe\u00e1in carachtair dhofheicthe",
"Words: {0}": "Focail: {0}",
"{0} words": "{0} focal",
"File": "Comhad",
"Edit": "Eagar",
"Insert": "Ions\u00e1ig",
"View": "Amharc",
"Format": "Form\u00e1id",
"Table": "T\u00e1bla",
"Tools": "Uirlis\u00ed",
"Powered by {0}": "\u00c1 chumhacht\u00fa ag {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Limist\u00e9ar M\u00e9ith-Th\u00e9acs. Br\u00faigh ALT-F9 le haghaidh roghchl\u00e1ir, ALT-F10 le haghaidh barra uirlis\u00ed, agus ALT-0 le c\u00fanamh a fh\u00e1il"
});js/tinymce/langs/ro.js000064400000045323151727150300010722 0ustar00tinymce.addI18n('ro',{
"Redo": "Refacere",
"Undo": "Anulare",
"Cut": "Decupare",
"Copy": "Copiere",
"Paste": "Lipire",
"Select all": "Selecteaz\u0103 tot",
"New document": "Document nou",
"Ok": "Ok",
"Cancel": "Revocare",
"Visual aids": "Ajutoare vizuale",
"Bold": "Aldin",
"Italic": "Cursiv",
"Underline": "Subliniere",
"Strikethrough": "T\u0103iere",
"Superscript": "Exponent",
"Subscript": "Indice",
"Clear formatting": "\u00cendep\u0103rtare formatare",
"Align left": "Aliniere st\u00e2nga",
"Align center": "Aliniere centru",
"Align right": "Aliniere dreapta",
"Justify": "Aliniere st\u00e2nga-dreapta",
"Bullet list": "List\u0103 marcatori",
"Numbered list": "List\u0103 numerotat\u0103",
"Decrease indent": "Mic\u0219orare indent",
"Increase indent": "M\u0103rire indent",
"Close": "\u00cenchidere",
"Formats": "Formate",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Browser-ul dumneavoastr\u0103 nu are acces direct la clipboard. V\u0103 rug\u0103m s\u0103 folosi\u021bi \u00een schimb scurt\u0103turile de tastatur\u0103 Ctrl+X\/C\/V.",
"Headers": "Antete",
"Header 1": "Antet 1",
"Header 2": "Antet 2",
"Header 3": "Antet 3",
"Header 4": "Antet 4",
"Header 5": "Antet 5",
"Header 6": "Antet 6",
"Headings": "Rubrici",
"Heading 1": "Titlu 1",
"Heading 2": "Titlu 2",
"Heading 3": "Titlu 3",
"Heading 4": "Titlu 4",
"Heading 5": "Titlu 5",
"Heading 6": "Titlu 6",
"Preformatted": "Preformatat",
"Div": "Div",
"Pre": "Pre",
"Code": "Cod",
"Paragraph": "Paragraf",
"Blockquote": "Blockquote",
"Inline": "\u00cen linie",
"Blocks": "Blocuri",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Functia \"lipe\u015fte\" este acum \u00een modul text simplu. Continutul va fi acum inserat ca text simplu p\u00e2n\u0103 c\u00e2nd aceast\u0103 op\u021biune va fi dezactivat.",
"Fonts": "Fonturi",
"Font Sizes": "Dimensiuni font",
"Class": "Clas\u0103",
"Browse for an image": "C\u0103uta\u021bi o imagine",
"OR": "OR",
"Drop an image here": "Glisa\u021bi o imagine aici",
"Upload": "\u00cenc\u0103rcare",
"Block": "Sec\u021biune",
"Align": "Aliniere",
"Default": "Implicit",
"Circle": "Cerc",
"Disc": "Disc",
"Square": "P\u0103trat",
"Lower Alpha": "Minuscule Alfanumerice",
"Lower Greek": "Minuscule Grecesti",
"Lower Roman": "Minuscule Romane",
"Upper Alpha": "Majuscule Alfanumerice",
"Upper Roman": "Majuscule Romane",
"Anchor...": "Ancor\u0103\u2026",
"Name": "Nume",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id-ul trebuie s\u0103 inceap\u0103 cu o liter\u0103, urmat\u0103 exclusiv de litere, numere, cratime, puncte, punct \u0219i virgul\u0103 sau underscore-uri.",
"You have unsaved changes are you sure you want to navigate away?": "Ave\u021bi modific\u0103ri nesalvate! Sunte\u0163i sigur c\u0103 dori\u0163i s\u0103 ie\u015fiti?",
"Restore last draft": "Restaurare la ultima salvare",
"Special character...": "Caracter special\u2026",
"Source code": "Codul surs\u0103",
"Insert\/Edit code sample": "Inserare\/Editare mostr\u0103 cod",
"Language": "Limba",
"Code sample...": "Mostr\u0103 cod\u2026",
"Color Picker": "Selector culori",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "St\u00e2nga la dreapta",
"Right to left": "Dreapta la st\u00e2nga",
"Emoticons": "Emoticoane",
"Emoticons...": "Emoticoane\u2026",
"Metadata and Document Properties": "Meta date \u0219i Propriet\u0103\u021bi Document",
"Title": "Titlu",
"Keywords": "Cuvinte cheie",
"Description": "Descriere",
"Robots": "Robo\u021bi",
"Author": "Autor",
"Encoding": "Codare",
"Fullscreen": "Pe tot ecranul",
"Action": "Ac\u0163iune",
"Shortcut": "Comand\u0103 rapid\u0103",
"Help": "Ajutor",
"Address": "Adres\u0103",
"Focus to menubar": "Centrare pe bara de meniuri",
"Focus to toolbar": "Centrare pe bara de unelte",
"Focus to element path": "Centrare pe calea elementului",
"Focus to contextual toolbar": "Centrare pe bara de unelte contextual\u0103",
"Insert link (if link plugin activated)": "Inserare link (dac\u0103 modulul de link-uri este activat)",
"Save (if save plugin activated)": "Salvare (dac\u0103 modulul de salvare este activat)",
"Find (if searchreplace plugin activated)": "C\u0103utare (dac\u0103 modulul de c\u0103utare \u0219i \u00eenlocuire este activat)",
"Plugins installed ({0}):": "Module instalate ({0}):",
"Premium plugins:": "Module premium:",
"Learn more...": "Afla\u021bi mai multe\u2026",
"You are using {0}": "Folosi\u021bi {0}",
"Plugins": "Inserturi",
"Handy Shortcuts": "Comenzi rapide accesibile",
"Horizontal line": "Linie orizontal\u0103",
"Insert\/edit image": "Inserare\/editarea imaginilor",
"Alternative description": "Descriere alternativ\u0103",
"Accessibility": "Accesibilitate",
"Image is decorative": "Imaginea este decorativ\u0103",
"Source": "Surs\u0103",
"Dimensions": "Dimensiuni",
"Constrain proportions": "Constr\u00e2nge propor\u021biile",
"General": "General",
"Advanced": "Avansat",
"Style": "Stil",
"Vertical space": "Spa\u021biul vertical",
"Horizontal space": "Spa\u021biul orizontal",
"Border": "Bordur\u0103",
"Insert image": "Inserare imagine",
"Image...": "Imagine\u2026",
"Image list": "List\u0103 de imagini",
"Rotate counterclockwise": "Rotire \u00een sensul antiorar",
"Rotate clockwise": "Rotire \u00een sensul orar",
"Flip vertically": "R\u0103sturn\u0103 vertical",
"Flip horizontally": "R\u0103sturn\u0103 orizontal",
"Edit image": "Editare imagine",
"Image options": "Op\u021biuni imagine",
"Zoom in": "M\u0103rire",
"Zoom out": "Mic\u015forare",
"Crop": "Decupare",
"Resize": "Redimensionare",
"Orientation": "Orientare",
"Brightness": "Str\u0103lucire",
"Sharpen": "Accentuare",
"Contrast": "Contrast",
"Color levels": "Niveluri de culoare",
"Gamma": "Gamma",
"Invert": "Invers\u0103",
"Apply": "Salveaz\u0103",
"Back": "\u00cenapoi",
"Insert date\/time": "Insereaz\u0103 data\/ora",
"Date\/time": "Data\/ora",
"Insert\/edit link": "Inserare\/editare link",
"Text to display": "Text de afi\u0219at",
"Url": "Url",
"Open link in...": "Deschide link \u00een\u2026",
"Current window": "Fereastra curent\u0103",
"None": "Nici unul",
"New window": "Fereastr\u0103 nou\u0103",
"Open link": "Deschide leg\u0103tur\u0103",
"Remove link": "\u0218terge link-ul",
"Anchors": "Ancor\u0103",
"Link...": "Link\u2026",
"Paste or type a link": "Introduce\u021bi un link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL-ul introdus pare s\u0103 fie o adres\u0103 de e-mail. Dori\u021bi s\u0103 ad\u0103uga\u021bi prefixul mailto: ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL-ul introdus pare s\u0103 fie o adres\u0103 web. Dori\u021bi s\u0103 ad\u0103uga\u021bi prefixul http:\/\/ ?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Adresa URL pe care a\u021bi introdus-o pare a fi un leg\u0103tur\u0103 extern\u0103. Dori\u021bi s\u0103 ad\u0103uga\u021bi prefixul https:\/\/ necesar?",
"Link list": "List\u0103 linkuri",
"Insert video": "Inserare video",
"Insert\/edit video": "Inserare\/editare video",
"Insert\/edit media": "Inserare\/editare media",
"Alternative source": "Surs\u0103 alternativ\u0103",
"Alternative source URL": "URL surs\u0103 alternativ\u0103",
"Media poster (Image URL)": "Poster media (URL imagine)",
"Paste your embed code below:": "Insera\u021bi codul:",
"Embed": "Embed",
"Media...": "Media\u2026",
"Nonbreaking space": "Spa\u021biu neseparator",
"Page break": "\u00centrerupere de pagin\u0103",
"Paste as text": "Lipe\u015fte ca text",
"Preview": "Previzualizare",
"Print...": "Tip\u0103rire\u2026",
"Save": "Salveaz\u0103",
"Find": "Caut\u0103",
"Replace with": "\u00cenlocuie\u015fte cu",
"Replace": "\u00cenlocuie\u015fte",
"Replace all": "\u00cenlocuie\u015fte toate",
"Previous": "Anterior",
"Next": "Precedent",
"Find and Replace": "G\u0103si\u021bi \u0219i \u00eenlocui\u021bi",
"Find and replace...": "C\u0103utare \u0219i \u00eenlocuire\u2026",
"Could not find the specified string.": "Nu am putut g\u0103si \u0219irul specificat.",
"Match case": "Distinge majuscule\/minuscule",
"Find whole words only": "G\u0103se\u0219te doar cuvintele \u00eentregi",
"Find in selection": "G\u0103si\u021bi \u00een selec\u021bie",
"Spellcheck": "Verificarea ortografic\u0103",
"Spellcheck Language": "Verificare ortografic\u0103 a limbii",
"No misspellings found.": "Nu s-au g\u0103sit gre\u0219eli de ortografie.",
"Ignore": "Ignor\u0103",
"Ignore all": "Ignor\u0103 toate",
"Finish": "Finalizeaz\u0103",
"Add to Dictionary": "Adaug\u0103 \u00een Dic\u021bionar",
"Insert table": "Insereaz\u0103 tabel\u0103",
"Table properties": "Propriet\u0103\u021bi tabel\u0103",
"Delete table": "\u0218terge tabel\u0103",
"Cell": "Celul\u0103",
"Row": "Linie",
"Column": "Coloan\u0103",
"Cell properties": "Propriet\u0103\u021bi celul\u0103",
"Merge cells": "\u00cembinarea celulelor",
"Split cell": "\u00cemp\u0103r\u021birea celulelor",
"Insert row before": "Insereaz\u0103 \u00eenainte de linie",
"Insert row after": "Insereaz\u0103 dup\u0103 linie",
"Delete row": "\u0218terge linia",
"Row properties": "Propriet\u0103\u021bi linie",
"Cut row": "Taie linie",
"Copy row": "Copiaz\u0103 linie",
"Paste row before": "Lipe\u015fte \u00eenainte de linie",
"Paste row after": "Lipe\u015fte linie dup\u0103",
"Insert column before": "Insereaza \u00eenainte de coloan\u0103",
"Insert column after": "Insereaza dup\u0103 coloan\u0103",
"Delete column": "\u0218terge coloana",
"Cols": "Coloane",
"Rows": "Linii",
"Width": "L\u0103\u0163ime",
"Height": "\u00cen\u0103l\u0163ime",
"Cell spacing": "Spa\u021biere celule",
"Cell padding": "Spa\u021biere",
"Caption": "Titlu",
"Show caption": "Afi\u0219are captur\u0103",
"Left": "St\u00e2nga",
"Center": "Centru",
"Right": "Dreapta",
"Cell type": "Tip celul\u0103",
"Scope": "Domeniu",
"Alignment": "Aliniament",
"H Align": "Aliniere H",
"V Align": "Aliniere V",
"Top": "Sus",
"Middle": "Mijloc",
"Bottom": "Jos",
"Header cell": "Antet celul\u0103",
"Row group": "Grup de linii",
"Column group": "Grup de coloane",
"Row type": "Tip de linie",
"Header": "Antet",
"Body": "Corp",
"Footer": "Subsol",
"Border color": "Culoare bordur\u0103",
"Insert template...": "Inserare \u0219ablon\u2026",
"Templates": "\u015eabloane",
"Template": "\u0218ablon",
"Text color": "Culoare text",
"Background color": "Culoare fundal",
"Custom...": "Personalizat...",
"Custom color": "Culoare personalizat\u0103",
"No color": "F\u0103r\u0103 culoare",
"Remove color": "Eliminare culoare",
"Table of Contents": "Cuprins",
"Show blocks": "Afi\u0219are blocuri",
"Show invisible characters": "Afi\u0219are caractere invizibile",
"Word count": "Num\u0103r\u0103toare cuvinte",
"Count": "Num\u0103r\u0103toare",
"Document": "Document",
"Selection": "Selec\u021bie",
"Words": "Cuvinte",
"Words: {0}": "Cuvinte: {0}",
"{0} words": "{0} cuvinte",
"File": "Fil\u0103",
"Edit": "Editeaz\u0103",
"Insert": "Insereaz\u0103",
"View": "Vezi",
"Format": "Formateaz\u0103",
"Table": "Tabel\u0103",
"Tools": "Unelte",
"Powered by {0}": "Sus\u021binut de {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zon\u0103 cu Rich Text. Apas\u0103 ALT-F9 pentru meniu. Apas\u0103 ALT-F10 pentru bara de unelte. Apas\u0103 ALT-0 pentru ajutor",
"Image title": "Titlu imagine",
"Border width": "Grosime chenar",
"Border style": "Stil chenar",
"Error": "Eroare",
"Warn": "Aten\u021bionare",
"Valid": "Valid",
"To open the popup, press Shift+Enter": "Pentru a deschide fereastra popup, ap\u0103sa\u021bi Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Zon\u0103 Text Formatat. Ap\u0103sa\u021bi ALT-0 pentru ajutor.",
"System Font": "Font Sistem",
"Failed to upload image: {0}": "Nu s-a putut \u00eenc\u0103rca imaginea: {0}",
"Failed to load plugin: {0} from url {1}": "Nu s-a putut \u00eenc\u0103rca modulul: {0} de la URL-ul {1}",
"Failed to load plugin url: {0}": "Nu s-a putut \u00eenc\u0103rca URL-ul modulului: {0}",
"Failed to initialize plugin: {0}": "Nu s-a putut ini\u021bializa modulul: {0}",
"example": "exemplu",
"Search": "C\u0103utare",
"All": "Tot",
"Currency": "Moned\u0103",
"Text": "Text",
"Quotations": "Ghilimele",
"Mathematical": "Simboluri matematice",
"Extended Latin": "Simboluri alfabet latin extins",
"Symbols": "Simboluri",
"Arrows": "S\u0103ge\u021bi",
"User Defined": "Definite de utilizator",
"dollar sign": "simbol dolar",
"currency sign": "simbol moned\u0103",
"euro-currency sign": "simbol euro",
"colon sign": "dou\u0103 puncte",
"cruzeiro sign": "simbol cruzeiro",
"french franc sign": "simbol franc francez",
"lira sign": "simbol lir\u0103",
"mill sign": "simbol mill",
"naira sign": "simbol naira",
"peseta sign": "simbol peset\u0103",
"rupee sign": "simbol rupie",
"won sign": "simbol won",
"new sheqel sign": "simbol shekel nou",
"dong sign": "simbol dong",
"kip sign": "simbol kip",
"tugrik sign": "simbol tugrik",
"drachma sign": "simbol drahm\u0103",
"german penny symbol": "simbol peni german",
"peso sign": "simbol peso",
"guarani sign": "simbol guarani",
"austral sign": "simbol austral",
"hryvnia sign": "simbol grivn\u0103",
"cedi sign": "simbol cedi",
"livre tournois sign": "simbol livr\u0103 tournois",
"spesmilo sign": "simbol spesmilo",
"tenge sign": "simbol tenge",
"indian rupee sign": "simbol rupie indian\u0103",
"turkish lira sign": "simbol lir\u0103 turceasc\u0103",
"nordic mark sign": "simbol marc\u0103 nordic\u0103",
"manat sign": "simbol manat",
"ruble sign": "simbol rubl\u0103",
"yen character": "simbol yen",
"yuan character": "simbol yuan",
"yuan character, in hong kong and taiwan": "simbol yuan \u00een Hong Kong \u0219i Taiwan",
"yen\/yuan character variant one": "simbol yen\/yuan prima variant\u0103",
"Loading emoticons...": "Se \u00eencarc\u0103 emoticoanele\u2026",
"Could not load emoticons": "Nu s-au putut \u00eenc\u0103rca emoticoanele",
"People": "Persoane",
"Animals and Nature": "Animale \u0219i natur\u0103",
"Food and Drink": "M\u00e2ncare \u0219i b\u0103uturi",
"Activity": "Activit\u0103\u021bi",
"Travel and Places": "C\u0103l\u0103torii \u0219i loca\u021bii",
"Objects": "Obiecte",
"Flags": "Steaguri",
"Characters": "Caractere",
"Characters (no spaces)": "Caractere (f\u0103r\u0103 spa\u021bii)",
"{0} characters": "{0} caractere",
"Error: Form submit field collision.": "Eroare: Coliziune c\u00e2mpuri la trimiterea formularului.",
"Error: No form element found.": "Eroare: Niciun element de formular g\u0103sit.",
"Update": "Actualizare",
"Color swatch": "Mostr\u0103 de culori",
"Turquoise": "Turcoaz",
"Green": "Verde",
"Blue": "Albastru",
"Purple": "Mov",
"Navy Blue": "Albastru marin",
"Dark Turquoise": "Turcoaz \u00eenchis",
"Dark Green": "Verde \u00eenchis",
"Medium Blue": "Albastru mediu",
"Medium Purple": "Mov mediu",
"Midnight Blue": "Albastru \u00eenchis",
"Yellow": "Galben",
"Orange": "Portocaliu",
"Red": "Ro\u0219u",
"Light Gray": "Gri deschis",
"Gray": "Gri",
"Dark Yellow": "Galben \u00eenchis",
"Dark Orange": "Portocaliu \u00eenchis",
"Dark Red": "Ro\u0219u \u00eenchis",
"Medium Gray": "Gri mediu",
"Dark Gray": "Gri \u00eenchis",
"Light Green": "Verde deschis",
"Light Yellow": "Galben deschis",
"Light Red": "Ro\u015fu deschis",
"Light Purple": "Violet deschis",
"Light Blue": "Albastru deschis",
"Dark Purple": "Violet \u00eenchis",
"Dark Blue": "Negru \u00eenchis",
"Black": "Negru",
"White": "Alb",
"Switch to or from fullscreen mode": "Comutare pe sau de la modul ecran complet",
"Open help dialog": "Deschide dialogul de ajutor",
"history": "istoric",
"styles": "stiluri",
"formatting": "formatare",
"alignment": "aliniere",
"indentation": "indentare",
"Font": "Font",
"Size": "Dimensiuni",
"More...": "Mai multe...",
"Select...": "Selectare...",
"Preferences": "Preferin\u021be",
"Yes": "Da",
"No": "Nu",
"Keyboard Navigation": "Navigare de la tastatur\u0103",
"Version": "Versiune",
"Code view": "Vizualizare cod",
"Open popup menu for split buttons": "Deschide\u021bi meniul pop-up pentru butoanele divizate",
"List Properties": "Propriet\u0103\u021bi list\u0103",
"List properties...": "Propriet\u0103\u021bi list\u0103...",
"Start list at number": "\u00cencepe\u021bi lista la num\u0103rul",
"Line height": "\u00cen\u0103l\u021bimea liniei",
"comments": "comentarii",
"Format Painter": "Descriptor de formate",
"Insert\/edit iframe": "Inserare\/editare icadru",
"Capitalization": "Scriere cu majuscule",
"lowercase": "litere mici",
"UPPERCASE": "MAJUSCULE",
"Title Case": "Ini\u021bial\u0103 majuscul\u0103",
"permanent pen": "stilou permanent",
"Permanent Pen Properties": "Propriet\u0103\u021bile stiloului permanent",
"Permanent pen properties...": "Propriet\u0103\u021bile stiloului permanent...",
"case change": "schimbarea cazului",
"page embed": "\u00eencorporare pagin\u0103",
"Advanced sort...": "Sortare avansat\u0103...",
"Advanced Sort": "Sortare avansat\u0103",
"Sort table by column ascending": "Sorta\u021bi tabelul dup\u0103 coloan\u0103 cresc\u0103toare",
"Sort table by column descending": "Sorta\u021bi tabelul dup\u0103 coloan\u0103 descresc\u0103toare",
"Sort": "Sortare",
"Order": "Ordonare",
"Sort by": "Soreaz\u0103 dup\u0103",
"Ascending": "Cresc\u0103tor",
"Descending": "Descresc\u0103tor",
"Column {0}": "Coloan\u0103 {0}",
"Row {0}": "R\u00e2nd {0}",
"Spellcheck...": "Verificare a ortografiei...",
"Misspelled word": "Cuv\u00e2nt scris gre\u0219it",
"Suggestions": "Sugestii",
"Change": "Schimbare",
"Finding word suggestions": "G\u0103se\u0219te sugestii de cuvinte",
"Success": "Succes",
"Repair": "Repar\u0103",
"Issue {0} of {1}": "Num\u0103rul {0} din {1}",
"Images must be marked as decorative or have an alternative text description": "Imaginile trebuie s\u0103 fie marcate ca decorative sau s\u0103 aib\u0103 o descriere alternativ\u0103 a textului",
"Images must have an alternative text description. Decorative images are not allowed.": "Imaginile trebuie s\u0103 aib\u0103 o descriere alternativ\u0103 a textului. Imaginile decorative nu sunt permise.",
"Or provide alternative text:": "Sau furniza\u021bi un text alternativ:",
"Make image decorative:": "Face\u021bi imaginea decorativ\u0103:",
"ID attribute must be unique": "Atributul ID trebuie s\u0103 fie unic",
"Make ID unique": "Face\u021bi ID-ul unic",
"Keep this ID and remove all others": "P\u0103stra\u021bi acest ID \u0219i elimina\u021bi pe toate celelalte",
"Remove this ID": "Elimina\u021bi acest ID",
"Remove all IDs": "Elimina\u021bi toate ID-urile",
"Checklist": "Lista de verificare",
"Anchor": "Ancor\u0103",
"Special character": "Caractere speciale",
"Color": "Culoare",
"Document properties": "Propriet\u0103\u021bi document",
"Image description": "Descrierea imaginii",
"Image": "Imagine",
"Insert link": "Inserare link",
"Link": "Link",
"Target": "\u021aint\u0103",
"Media": "Media",
"Poster": "Poster",
"Print": "Tip\u0103re\u0219te",
"Whole words": "Doar cuv\u00eentul \u00eentreg",
"Find and replace": "Caut\u0103 \u015fi \u00eenlocuie\u015fte",
"Prev": "Anterior",
"Insert template": "Insereaz\u0103 \u0219ablon"
});js/tinymce/langs/sl_SI.js000064400000033777151727150300011325 0ustar00tinymce.addI18n('sl_SI',{
"Redo": "Ponovno uveljavi",
"Undo": "Razveljavi",
"Cut": "Izre\u017ei",
"Copy": "Kopiraj",
"Paste": "Prilepi",
"Select all": "Izberi vse",
"New document": "Nov dokument",
"Ok": "V redu",
"Cancel": "Prekli\u010di",
"Visual aids": "Vizualni pripomo\u010dki",
"Bold": "Krepko",
"Italic": "Po\u0161evno",
"Underline": "Pod\u010drtano",
"Strikethrough": "Pre\u010drtano",
"Superscript": "Nadpisano",
"Subscript": "Podpisano",
"Clear formatting": "Odstrani oblikovanje",
"Align left": "Leva poravnava",
"Align center": "Sredinska poravnava",
"Align right": "Desna poravnava",
"Justify": "Obojestranska poravnava",
"Bullet list": "Ozna\u010den seznam",
"Numbered list": "O\u0161tevil\u010den seznam",
"Decrease indent": "Zmanj\u0161aj zamik",
"Increase indent": "Pove\u010daj zamik",
"Close": "Zapri",
"Formats": "Oblika",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Varnostne nastavitve brskalnika ne dopu\u0161\u010dajo direktnega dostopa do odlo\u017ei\u0161\u010da. Uporabite kombinacijo tipk Ctrl + X\/C\/V na tipkovnici.",
"Headers": "Naslovi",
"Header 1": "Naslov 1",
"Header 2": "Naslov 2",
"Header 3": "Naslov 3",
"Header 4": "Naslov 4",
"Header 5": "Naslov 5",
"Header 6": "Naslov 6",
"Headings": "Naslovi",
"Heading 1": "Naslov 1",
"Heading 2": "Naslov 2",
"Heading 3": "Naslov 3",
"Heading 4": "Naslov 4",
"Heading 5": "Naslov 5",
"Heading 6": "Naslov 6",
"Preformatted": "Predformatirano",
"Div": "Div",
"Pre": "Pre",
"Code": "Koda",
"Paragraph": "Odstavek",
"Blockquote": "Blockquote",
"Inline": "Med besedilom",
"Blocks": "Bloki",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Odlagali\u0161\u010de je zdaj v tekstovnem na\u010dinu. Vsebina bo preslikana kot golo besedilo brez oblike, dokler te mo\u017enosti ne izklju\u010dite.",
"Fonts": "Pisave",
"Font Sizes": "Velikosti pisave",
"Class": "Razred",
"Browse for an image": "Prebrskaj za sliko",
"OR": "ALI",
"Drop an image here": "Spusti sliko sem",
"Upload": "Nalo\u017ei",
"Block": "Blok",
"Align": "Poravnava",
"Default": "Privzeto",
"Circle": "Pikica",
"Disc": "Kroglica",
"Square": "Kvadratek",
"Lower Alpha": "Male tiskane \u010drke",
"Lower Greek": "Male gr\u0161ke \u010drke",
"Lower Roman": "Male rimske \u0161tevilke",
"Upper Alpha": "Velike tiskane \u010drke",
"Upper Roman": "Velike rimske \u0161tevilke",
"Anchor...": "Sidro ...",
"Name": "Naziv zaznamka",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id se mora za\u010deti s \u010drko, sledijo samo \u010drke, \u0161tevilke, pomi\u0161ljaj, pike, dvopi\u010dje ali pod\u010drtaj.",
"You have unsaved changes are you sure you want to navigate away?": "Imate neshranjene spremembe. Ste prepri\u010dati, da \u017eelite zapustiti stran?",
"Restore last draft": "Obnovi zadnji osnutek",
"Special characters...": "Posebni znaki ...",
"Source code": "Izvorna koda",
"Insert\/Edit code sample": "Vstavi\/Uredi vzor\u010dno kodo",
"Language": "Jezik",
"Code sample...": "Vzor\u010dna koda ...",
"Color Picker": "Izbirnik barve",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Od leve proti desni",
"Right to left": "Od desne proti levi",
"Emoticons...": "\u010custveni simboli ...",
"Metadata and Document Properties": "Metapodatki in lastnosti dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne besede",
"Description": "Opis",
"Robots": "Robotki",
"Author": "Avtor",
"Encoding": "Kodiranje",
"Fullscreen": "\u010cez cel zaslon",
"Action": "Dejanje",
"Shortcut": "Bli\u017enjica",
"Help": "Pomo\u010d",
"Address": "Naslov",
"Focus to menubar": "Poudarek na menijski vrstici",
"Focus to toolbar": "Poudarek na orodni vrstici",
"Focus to element path": "Poudarek na poti elementa",
"Focus to contextual toolbar": "Poudarek na kontekstualni orodni vrstici",
"Insert link (if link plugin activated)": "Vstavi povezavo (\u010de je aktiviran vti\u010dnik za povezavo)",
"Save (if save plugin activated)": "Shrani (\u010de je aktiviran vti\u010dnik za shranjevanje)",
"Find (if searchreplace plugin activated)": "I\u0161\u010di (\u010de je aktiviran vti\u010dnik za iskanje\/zamenjavo)",
"Plugins installed ({0}):": "Name\u0161\u010deni vti\u010dniki ({0}):",
"Premium plugins:": "Premium vti\u010dniki:",
"Learn more...": "Ve\u010d ...",
"You are using {0}": "Uporabljate {0}",
"Plugins": "Vti\u010dniki",
"Handy Shortcuts": "Uporabne bli\u017enjice",
"Horizontal line": "Vodoravna \u010drta",
"Insert\/edit image": "Vstavi\/uredi sliko",
"Image description": "Opis slike",
"Source": "Pot",
"Dimensions": "Dimenzije",
"Constrain proportions": "Obdr\u017ei razmerje",
"General": "Splo\u0161no",
"Advanced": "Napredno",
"Style": "Slog",
"Vertical space": "Navpi\u010dni prostor",
"Horizontal space": "Vodoravni prostor",
"Border": "Obroba",
"Insert image": "Vnesi sliko",
"Image...": "Slika ...",
"Image list": "Seznam slik",
"Rotate counterclockwise": "Zavrti v nasprotni smeri urnega kazalca",
"Rotate clockwise": "Zavrti v smeri urinega kazalca",
"Flip vertically": "Obrni navpi\u010dno",
"Flip horizontally": "Obrni vodoravno",
"Edit image": "Uredi sliko",
"Image options": "Mo\u017enosti slike",
"Zoom in": "Pove\u010daj",
"Zoom out": "Pomanj\u0161aj",
"Crop": "Obre\u017ei",
"Resize": "Spremeni velikost",
"Orientation": "Usmerjenost",
"Brightness": "Svetlost",
"Sharpen": "Izostri",
"Contrast": "Kontrast",
"Color levels": "Barvni nivo",
"Gamma": "Gama",
"Invert": "Obrni",
"Apply": "Uporabi",
"Back": "Nazaj",
"Insert date\/time": "Vstavi datum\/\u010das",
"Date\/time": "Datum\/\u010das",
"Insert\/Edit Link": "Vstavi\/uredi povezavo",
"Insert\/edit link": "Vstavi\/uredi povezavo",
"Text to display": "Prikazno besedilo",
"Url": "Povezava",
"Open link in...": "Odpri povezavo v ...",
"Current window": "Trenutno okno",
"None": "Brez",
"New window": "Novo okno",
"Remove link": "Odstrani povezavo",
"Anchors": "Sidra",
"Link...": "Povezava ...",
"Paste or type a link": "Prilepite ali vnesite povezavo",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Vne\u0161eni URL predstavlja e-po\u0161tni naslov. Ali \u017eelite dodati potrebno \"mailto:\" predpono?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Vne\u0161eni URL predstavlja zunanjo povezavo. Ali \u017eelite dodati \"http:\/\/\" predpono?",
"Link list": "Seznam povezav",
"Insert video": "Vstavi video",
"Insert\/edit video": "Vstavi\/uredi video",
"Insert\/edit media": "Vstavi\/uredi medij",
"Alternative source": "Nadomestni vir",
"Alternative source URL": "Nadomestni vir URL",
"Media poster (Image URL)": "Medijski poster (URL slike)",
"Paste your embed code below:": "Prilepite kodo za vdelavo:",
"Embed": "Vdelaj",
"Media...": "Mediji ...",
"Nonbreaking space": "Nedeljivi presledek",
"Page break": "Prelom strani",
"Paste as text": "Vnesi kot besedilo",
"Preview": "Predogled",
"Print...": "Natisni ...",
"Save": "Shrani",
"Find": "I\u0161\u010di",
"Replace with": "Zamenjaj z",
"Replace": "Zamenjaj",
"Replace all": "Zamenjaj vse",
"Previous": "Prej\u0161nja",
"Next": "Naprej",
"Find and replace...": "Najdi in zamenjaj ...",
"Could not find the specified string.": "Iskanje ni vrnilo rezultatov.",
"Match case": "Ujemanje malih in velikih \u010drk",
"Find whole words only": "I\u0161\u010di samo cele besede",
"Spell check": "\u010crkovanje",
"Ignore": "Prezri",
"Ignore all": "Prezri vse",
"Finish": "Zaklju\u010di",
"Add to Dictionary": "Dodaj v slovar",
"Insert table": "Vstavi tabelo",
"Table properties": "Lastnosti tabele",
"Delete table": "Izbri\u0161i tabelo",
"Cell": "Celica",
"Row": "Vrstica",
"Column": "Stolpec",
"Cell properties": "Lastnosti celice",
"Merge cells": "Zdru\u017ei celice",
"Split cell": "Razdeli celico",
"Insert row before": "Vstavi vrstico pred",
"Insert row after": "Vstavi vrstico za",
"Delete row": "Izbri\u0161i vrstico",
"Row properties": "Lastnosti vrstice",
"Cut row": "Izre\u017ei vrstico",
"Copy row": "Kopiraj vrstico",
"Paste row before": "Prilepi vrstico pred",
"Paste row after": "Prilepi vrstico za",
"Insert column before": "Vstavi stolpec pred",
"Insert column after": "Vstavi stolpec za",
"Delete column": "Izbri\u0161i stolpec",
"Cols": "Stolpci",
"Rows": "Vrstice",
"Width": "\u0160irina",
"Height": "Vi\u0161ina",
"Cell spacing": "Razmik med celicami",
"Cell padding": "Polnilo med celicami",
"Show caption": "Poka\u017ei napis",
"Left": "Levo",
"Center": "Sredinsko",
"Right": "Desno",
"Cell type": "Tip celice",
"Scope": "Obseg",
"Alignment": "Poravnava",
"H Align": "Horizontalna poravnava",
"V Align": "Vertikalna poravnava",
"Top": "Vrh",
"Middle": "Sredina",
"Bottom": "Dno",
"Header cell": "Celica glave",
"Row group": "Grupiranje vrstic",
"Column group": "Grupiranje stolpcev",
"Row type": "Tip vrstice",
"Header": "Glava",
"Body": "Vsebina",
"Footer": "Noga",
"Border color": "Barva obrobe",
"Insert template...": "Vstavi predlogo ...",
"Templates": "Predloge",
"Template": "Predloga",
"Text color": "Barva besedila",
"Background color": "Barva ozadja",
"Custom...": "Po meri ...",
"Custom color": "Barva po meri",
"No color": "Brezbarvno",
"Remove color": "Odstrani barvo",
"Table of Contents": "Kazalo",
"Show blocks": "Prika\u017ei bloke",
"Show invisible characters": "Prika\u017ei skrite znake",
"Word count": "\u0160tevilo besed",
"Words: {0}": "Besed: {0}",
"{0} words": "{0} besed",
"File": "Datoteka",
"Edit": "Uredi",
"Insert": "Vstavi",
"View": "Pogled",
"Format": "Oblika",
"Table": "Tabela",
"Tools": "Orodja",
"Powered by {0}": "Uporablja tehnologijo {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Bogato besedilo. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za pomo\u010d",
"Image title": "Naslov slike",
"Border width": "\u0160irina obrobe",
"Border style": "Slog obrobe",
"Error": "Napaka",
"Warn": "Opozorilo",
"Valid": "Veljavno",
"To open the popup, press Shift+Enter": "Za odpiranje pojavnega okna pritisnite Shift + Enter.",
"Rich Text Area. Press ALT-0 for help.": "Bogato besedilo. Pritisnite ALT-0 za pomo\u010d.",
"System Font": "Sistemska pisava",
"Failed to upload image: {0}": "Napaka nalaganja slike: {0}",
"Failed to load plugin: {0} from url {1}": "Napaka nalaganja vti\u010dnika: {0} z url {1}",
"Failed to load plugin url: {0}": "Napaka nalaganja url: {0}",
"Failed to initialize plugin: {0}": "Napaka inicializacije vti\u010dnika: {0}",
"example": "primer",
"Search": "Iskanje",
"All": "Vse",
"Currency": "Valuta",
"Text": "Besedilo",
"Quotations": "Citati",
"Mathematical": "Matemati\u010dno",
"Extended Latin": "Raz\u0161irjena latinica",
"Symbols": "Simboli",
"Arrows": "Pu\u0161\u010dice",
"User Defined": "Uporabnik dolo\u010den",
"dollar sign": "znak za dolar",
"currency sign": "znak za valuto",
"euro-currency sign": "znak za evro",
"colon sign": "znak za dvopi\u010dje",
"cruzeiro sign": "znak za cruzeiro",
"french franc sign": "znak za francoski frank",
"lira sign": "znak za liro",
"mill sign": "znak za mill",
"naira sign": "znak za nairo",
"peseta sign": "znak za peseto",
"rupee sign": "znak za rupijo",
"won sign": "znak za won",
"new sheqel sign": "znak za novi \u0161ekl",
"dong sign": "znak za dong",
"kip sign": "znak za kip",
"tugrik sign": "znak za tugrik",
"drachma sign": "znak za drahmo",
"german penny symbol": "znak za nem\u0161ki peni",
"peso sign": "znak za peso",
"guarani sign": "znak za guarani",
"austral sign": "znak za austral",
"hryvnia sign": "znak za hrivnijo",
"cedi sign": "znak za cedi",
"livre tournois sign": "znak za livre tournois",
"spesmilo sign": "znak za spesmilo",
"tenge sign": "znak za tenge",
"indian rupee sign": "znak za indijsko rupijo",
"turkish lira sign": "znak za tur\u0161ko liro",
"nordic mark sign": "znak za nordijsko marko",
"manat sign": "znak za manat",
"ruble sign": "znak za rubelj",
"yen character": "znak za jen",
"yuan character": "znak za yuan",
"yuan character, in hong kong and taiwan": "znak za yuan, v Hongkongu in na Tajvanu",
"yen\/yuan character variant one": "znak za jen\/yuan, prva razli\u010dica",
"Loading emoticons...": "Nalaganje \u010dustvenih simbolov ...",
"Could not load emoticons": "\u010custvenih simbolov ni mogo\u010de nalo\u017eiti.",
"People": "Ljudje",
"Animals and Nature": "\u017divali in narava",
"Food and Drink": "Hrana in pija\u010da",
"Activity": "Dejavnost",
"Travel and Places": "Potovanja in kraji",
"Objects": "Predmeti",
"Flags": "Zastave",
"Characters": "Znaki",
"Characters (no spaces)": "Znaki (brez presledkov)",
"Error: Form submit field collision.": "Napaka: navzkri\u017eje polja za oddajo obrazca",
"Error: No form element found.": "Napaka: elementa oblike ni mogo\u010de najti",
"Update": "Posodobitev",
"Color swatch": "Vzorec barv",
"Turquoise": "Turkizna",
"Green": "Zelena",
"Blue": "Modra",
"Purple": "\u0160krlatna",
"Navy Blue": "Mornarsko modra",
"Dark Turquoise": "Temno turkizna",
"Dark Green": "Temno zelena",
"Medium Blue": "Srednje modra",
"Medium Purple": "Srednje \u0161krlatna",
"Midnight Blue": "Polno\u010dno modra",
"Yellow": "Rumena",
"Orange": "Oran\u017ena",
"Red": "Rde\u010da",
"Light Gray": "Svetlo siva",
"Gray": "Siva",
"Dark Yellow": "Temno rumena",
"Dark Orange": "Temno oran\u017ena",
"Dark Red": "Temno rde\u010da",
"Medium Gray": "Srednje siva",
"Dark Gray": "Temno siva",
"Black": "\u010crna",
"White": "Bela",
"Switch to or from fullscreen mode": "Preklopi v ali iz celozaslonskega na\u010dina",
"Open help dialog": "Odpri pogovorno okno za pomo\u010d",
"history": "zgodovina",
"styles": "slogi",
"formatting": "oblikovanje",
"alignment": "poravnava",
"indentation": "zamik",
"permanent pen": "permanentno pisalo",
"comments": "komentarji",
"Anchor": "Zaznamek",
"Special character": "Posebni znaki",
"Color": "Barva",
"Emoticons": "Sme\u0161ki",
"Document properties": "Lastnosti dokumenta",
"Image": "Slika",
"Insert link": "Vstavi povezavo",
"Link": "Povezava",
"Target": "Cilj",
"Media": "Medij",
"Poster": "Poster",
"Print": "Natisni",
"Whole words": "Cele besede",
"Find and replace": "Poi\u0161\u010di in zamenjaj",
"Prev": "Nazaj",
"Spellcheck": "Preverjanje \u010drkovanja",
"Caption": "Naslov",
"Insert template": "Vstavi predlogo"
});js/tinymce/langs/el.js000064400000070473151727150300010706 0ustar00tinymce.addI18n('el',{
"Redo": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",
"Undo": "\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7",
"Cut": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae",
"Copy": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
"Paste": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7",
"Select all": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03cc\u03bb\u03c9\u03bd",
"New document": "\u039d\u03ad\u03bf \u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf",
"Ok": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9",
"Cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
"Visual aids": "O\u03c0\u03c4\u03b9\u03ba\u03ac \u03b2\u03bf\u03b7\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1 ",
"Bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7",
"Italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1",
"Underline": "\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",
"Strikethrough": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03ae \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
"Superscript": "\u0395\u03ba\u03b8\u03ad\u03c4\u03b7\u03c2",
"Subscript": "\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2",
"Clear formatting": "\u0391\u03c0\u03b1\u03bb\u03bf\u03b9\u03c6\u03ae \u03bc\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2",
"Align left": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Align center": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03c3\u03c4\u03bf \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf",
"Align right": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b4\u03b5\u03be\u03b9\u03ac",
"Justify": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"Bullet list": "\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03ba\u03bf\u03c5\u03ba\u03ba\u03af\u03b4\u03b5\u03c2",
"Numbered list": "\u0391\u03c1\u03b9\u03b8\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1",
"Decrease indent": "\u039c\u03b5\u03af\u03c9\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
"Increase indent": "\u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
"Close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf",
"Formats": "\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u039f \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03bd\u03c4\u03bf\u03bc\u03b5\u03cd\u03c3\u03b5\u03b9\u03c2 \u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03af\u03bf\u03c5 Ctrl+X\/C\/V.",
"Headers": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b5\u03c2",
"Header 1": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",
"Header 2": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",
"Header 3": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",
"Header 4": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",
"Header 5": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",
"Header 6": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",
"Headings": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b5\u03c2",
"Heading 1": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",
"Heading 2": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",
"Heading 3": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",
"Heading 4": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",
"Heading 5": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",
"Heading 6": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",
"Preformatted": "\u03a0\u03c1\u03bf\u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03c9\u03bc\u03ad\u03bd\u03bf",
"Div": "Div",
"Pre": "Pre",
"Code": "\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
"Paragraph": "\u03a0\u03b1\u03c1\u03ac\u03b3\u03c1\u03b1\u03c6\u03bf\u03c2",
"Blockquote": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03c0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2",
"Inline": "\u0395\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b7",
"Blocks": "\u03a4\u03bc\u03ae\u03bc\u03b1\u03c4\u03b1",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0397 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03ce\u03c1\u03b1 \u03c3\u03b5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bb\u03bf\u03cd \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u03a4\u03b1 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1 \u03bc\u03b9\u03b1\u03c2 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2 \u03b8\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03c9\u03c2 \u03b1\u03c0\u03bb\u03cc \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03cc\u03c3\u03bf \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03bd\u03b5\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae.",
"Font Family": "\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac",
"Font Sizes": "\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2",
"Class": "\u039a\u03bb\u03ac\u03c3\u03b7",
"Browse for an image": "\u0391\u03bd\u03b1\u03b6\u03b7\u03c4\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1",
"OR": "\u0389",
"Drop an image here": "\u03a1\u03af\u03be\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03b5\u03b4\u03ce",
"Upload": "\u039c\u03b5\u03c4\u03b1\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7",
"Block": "\u03a4\u03bc\u03ae\u03bc\u03b1",
"Align": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"Default": "\u03a0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",
"Circle": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2",
"Disc": "\u0394\u03af\u03c3\u03ba\u03bf\u03c2",
"Square": "\u03a4\u03b5\u03c4\u03c1\u03ac\u03b3\u03c9\u03bd\u03bf",
"Lower Alpha": "\u03a0\u03b5\u03b6\u03ac \u03bb\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
"Lower Greek": "\u03a0\u03b5\u03b6\u03ac \u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
"Lower Roman": "\u03a0\u03b5\u03b6\u03ac \u03c1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
"Upper Alpha": "\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1 \u03bb\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
"Upper Roman": "\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1 \u03c1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
"Anchor": "\u0391\u03b3\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
"Name": "\u038c\u03bd\u03bf\u03bc\u03b1",
"Id": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u039f \u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b1\u03c1\u03c7\u03af\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1, \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03bc\u03cc\u03bd\u03bf \u03b1\u03c0\u03cc \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1, \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03cd\u03c2, \u03c0\u03b1\u03cd\u03bb\u03b5\u03c2, \u03c4\u03b5\u03bb\u03b5\u03af\u03b5\u03c2, \u03ac\u03bd\u03c9 \u03c4\u03b5\u03bb\u03b5\u03af\u03b1 \u03ae \u03c5\u03c0\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03af\u03c3\u03b5\u03b9\u03c2.",
"You have unsaved changes are you sure you want to navigate away?": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03bc\u03b7 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c6\u03cd\u03b3\u03b5\u03c4\u03b5 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03b5\u03bb\u03af\u03b4\u03b1;",
"Restore last draft": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5",
"Special character": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1\u03c2",
"Source code": "\u03a0\u03b7\u03b3\u03b1\u03af\u03bf\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
"Insert\/Edit code sample": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b4\u03b5\u03af\u03b3\u03bc\u03b1\u03c4\u03bf\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1",
"Language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1",
"Code sample": "\u0394\u03b5\u03af\u03b3\u03bc\u03b1 \u039a\u03ce\u03b4\u03b9\u03ba\u03b1",
"Color": "\u03a7\u03c1\u03ce\u03bc\u03b1",
"R": "\u03ba",
"G": "\u03a0",
"B": "\u039c",
"Left to right": "\u0391\u03c0\u03cc \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac",
"Right to left": "\u0391\u03c0\u03cc \u03b4\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Emoticons": "\u03a6\u03b1\u03c4\u03c3\u03bf\u03cd\u03bb\u03b5\u03c2",
"Document properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5",
"Title": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",
"Keywords": "\u039b\u03ad\u03be\u03b5\u03b9\u03c2 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac",
"Description": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
"Robots": "\u03a1\u03bf\u03bc\u03c0\u03cc\u03c4",
"Author": "\u03a3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b7\u03c2",
"Encoding": "\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
"Fullscreen": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7",
"Action": "\u0395\u03bd\u03ad\u03c1\u03b3\u03b5\u03b9\u03b1",
"Shortcut": "\u03a3\u03c5\u03bd\u03c4\u03cc\u03bc\u03b5\u03c5\u03c3\u03b7",
"Help": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1",
"Address": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7",
"Focus to menubar": "\u0395\u03c3\u03c4\u03af\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd",
"Focus to toolbar": "\u0395\u03c3\u03c4\u03af\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd",
"Focus to element path": "\u0395\u03c3\u03c4\u03af\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5",
"Focus to contextual toolbar": "\u0395\u03c3\u03c4\u03af\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03c3\u03c5\u03bd\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd",
"Insert link (if link plugin activated)": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 (\u03b5\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf \u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf \u03c4\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5)",
"Save (if save plugin activated)": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 (\u03b5\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf \u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf \u03c4\u03b7\u03c2 \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7\u03c2)",
"Find (if searchreplace plugin activated)": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 (\u03b5\u03ac\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03bf \u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf \u03c4\u03b7\u03c2 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7\u03c2)",
"Plugins installed ({0}):": "\u0395\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1 ({0}):",
"Premium plugins:": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1 \u03c5\u03c8\u03b7\u03bb\u03ae\u03c2 \u03c0\u03bf\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2:",
"Learn more...": "\u039c\u03ac\u03b8\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1...",
"You are using {0}": "\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 {0}",
"Plugins": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1",
"Handy Shortcuts": "\u03a7\u03c1\u03ae\u03c3\u03b9\u03bc\u03b5\u03c2 \u03c3\u03c5\u03bd\u03c4\u03bf\u03bc\u03b5\u03cd\u03c3\u03b5\u03b9\u03c2",
"Horizontal line": "\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae",
"Insert\/edit image": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Image description": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Source": "\u03a0\u03b7\u03b3\u03ae",
"Dimensions": "\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",
"Constrain proportions": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03b9\u03ce\u03bd",
"General": "\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",
"Advanced": "\u0393\u03b9\u03b1 \u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",
"Style": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
"Vertical space": "\u039a\u03ac\u03b8\u03b5\u03c4\u03bf \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
"Horizontal space": "\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03bf \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
"Border": "\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",
"Insert image": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Image": "\u0395\u03b9\u03ba\u03cc\u03bd\u03b1",
"Image list": "\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd",
"Rotate counterclockwise": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03cc\u03c3\u03c4\u03c1\u03bf\u03c6\u03b1",
"Rotate clockwise": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03b4\u03b5\u03be\u03b9\u03cc\u03c3\u03c4\u03c1\u03bf\u03c6\u03b1",
"Flip vertically": "\u0391\u03bd\u03b1\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03ba\u03b1\u03b8\u03ad\u03c4\u03c9\u03c2",
"Flip horizontally": "\u0391\u03bd\u03b1\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03bf\u03c1\u03b9\u03b6\u03bf\u03bd\u03c4\u03af\u03c9\u03c2",
"Edit image": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Image options": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
"Zoom in": "\u039c\u03b5\u03b3\u03ad\u03b8\u03c5\u03bd\u03c3\u03b7",
"Zoom out": "\u03a3\u03bc\u03af\u03ba\u03c1\u03c5\u03bd\u03c3\u03b7",
"Crop": "\u03a0\u03b5\u03c1\u03b9\u03ba\u03bf\u03c0\u03ae",
"Resize": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03bc\u03b5\u03b3\u03ad\u03b8\u03bf\u03c5\u03c2",
"Orientation": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03bd\u03b1\u03c4\u03bf\u03bb\u03b9\u03c3\u03bc\u03cc\u03c2",
"Brightness": "\u03a6\u03c9\u03c4\u03b5\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1",
"Sharpen": "\u038c\u03be\u03c5\u03bd\u03c3\u03b7",
"Contrast": "\u0391\u03bd\u03c4\u03af\u03b8\u03b5\u03c3\u03b7",
"Color levels": "\u0395\u03c0\u03af\u03c0\u03b5\u03b4\u03b1 \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2",
"Gamma": "\u0393\u03ac\u03bc\u03bc\u03b1",
"Invert": "\u0391\u03bd\u03c4\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae",
"Apply": "\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",
"Back": "\u03a0\u03af\u03c3\u03c9",
"Insert date\/time": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2\/\u03ce\u03c1\u03b1\u03c2",
"Date\/time": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\/\u03ce\u03c1\u03b1",
"Insert link": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
"Insert\/edit link": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
"Text to display": "\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03b3\u03b9\u03b1 \u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
"Url": "URL",
"Target": "\u03a0\u03c1\u03bf\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2",
"None": "\u039a\u03b1\u03bc\u03af\u03b1",
"New window": "\u039d\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",
"Remove link": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
"Anchors": "\u0386\u03b3\u03ba\u03c5\u03c1\u03b5\u03c2",
"Link": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2",
"Paste or type a link": "\u0395\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03ae\u03c3\u03c4\u03b5 \u03ae \u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03ae\u03c3\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email. \u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03c0\u03c1\u03cc\u03b8\u03b7\u03bc\u03b1 mailto:;",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2. \u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03c0\u03c1\u03cc\u03b8\u03b7\u03bc\u03b1 http:\/\/;",
"Link list": "\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd",
"Insert video": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b2\u03af\u03bd\u03c4\u03b5\u03bf",
"Insert\/edit video": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf",
"Insert\/edit media": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 media",
"Alternative source": "\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7",
"Poster": "\u0391\u03c6\u03af\u03c3\u03b1",
"Paste your embed code below:": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03bf \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9:",
"Embed": "\u0395\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7",
"Media": "\u039c\u03ad\u03c3\u03b1 (\u03bc\u03af\u03bd\u03c4\u03b9\u03b1)",
"Nonbreaking space": "\u039a\u03b5\u03bd\u03cc \u03c7\u03c9\u03c1\u03af\u03c2 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae",
"Page break": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2",
"Paste as text": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03c9\u03c2 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",
"Preview": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",
"Print": "\u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7",
"Save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7",
"Find": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7",
"Replace with": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bc\u03b5",
"Replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
"Replace all": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd",
"Prev": "\u03a0\u03c1\u03bf\u03b7\u03b3.",
"Next": "\u0395\u03c0\u03cc\u03bc.",
"Find and replace": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
"Could not find the specified string.": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b1\u03bb\u03c6\u03b1\u03c1\u03b9\u03b8\u03bc\u03b7\u03c4\u03b9\u03ba\u03bf\u03cd.",
"Match case": "\u03a4\u03b1\u03af\u03c1\u03b9\u03b1\u03c3\u03bc\u03b1 \u03c0\u03b5\u03b6\u03ce\u03bd\/\u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03c9\u03bd",
"Whole words": "\u039f\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b5\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2",
"Spellcheck": "\u039f\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 ",
"Ignore": "\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7",
"Ignore all": "\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7 \u03cc\u03bb\u03c9\u03bd",
"Finish": "\u03a4\u03ad\u03bb\u03bf\u03c2",
"Add to Dictionary": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c4\u03bf \u039b\u03b5\u03be\u03b9\u03ba\u03cc",
"Insert table": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
"Table properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
"Delete table": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
"Cell": "\u039a\u03b5\u03bb\u03af",
"Row": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ae",
"Column": "\u03a3\u03c4\u03ae\u03bb\u03b7",
"Cell properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
"Merge cells": "\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
"Split cell": "\u0394\u03b9\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
"Insert row before": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03b5\u03c0\u03ac\u03bd\u03c9",
"Insert row after": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03ac\u03c4\u03c9",
"Delete row": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Row properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Cut row": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Copy row": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Paste row before": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03b5\u03c0\u03ac\u03bd\u03c9",
"Paste row after": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03ac\u03c4\u03c9",
"Insert column before": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Insert column after": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",
"Delete column": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2",
"Cols": "\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",
"Rows": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",
"Width": "\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",
"Height": "\u038e\u03c8\u03bf\u03c2",
"Cell spacing": "\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
"Cell padding": "\u0391\u03bd\u03b1\u03c0\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
"Caption": "\u039b\u03b5\u03b6\u03ac\u03bd\u03c4\u03b1",
"Left": "\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
"Center": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b1\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7",
"Right": "\u0394\u03b5\u03be\u03b9\u03ac",
"Cell type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
"Scope": "\u0388\u03ba\u03c4\u03b1\u03c3\u03b7",
"Alignment": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"H Align": "\u039f\u03c1. \u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"V Align": "\u039a. \u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
"Top": "\u039a\u03bf\u03c1\u03c5\u03c6\u03ae",
"Middle": "\u039c\u03ad\u03c3\u03b7",
"Bottom": "\u039a\u03ac\u03c4\u03c9",
"Header cell": "\u039a\u03b5\u03bb\u03af-\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
"Row group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",
"Column group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",
"Row type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
"Header": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
"Body": "\u03a3\u03ce\u03bc\u03b1",
"Footer": "\u03a5\u03c0\u03bf\u03c3\u03ad\u03bb\u03b9\u03b4\u03bf",
"Border color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c0\u03bb\u03b1\u03b9\u03c3\u03af\u03bf\u03c5",
"Insert template": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03c1\u03bf\u03c4\u03cd\u03c0\u03bf\u03c5 ",
"Templates": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b1",
"Template": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf",
"Text color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 ",
"Background color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",
"Custom...": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae...",
"Custom color": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03c3\u03bc\u03ad\u03bd\u03bf \u03c7\u03c1\u03ce\u03bc\u03b1",
"No color": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03c7\u03c1\u03ce\u03bc\u03b1",
"Table of Contents": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2 \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd",
"Show blocks": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03bc\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd",
"Show invisible characters": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03ba\u03c1\u03c5\u03c6\u03ce\u03bd \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd",
"Words: {0}": "\u039b\u03ad\u03be\u03b5\u03b9\u03c2: {0}",
"{0} words": "{0} \u03bb\u03ad\u03be\u03b5\u03b9\u03c2",
"File": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf",
"Edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
"Insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",
"View": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae",
"Format": "\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
"Table": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2",
"Tools": "\u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1",
"Powered by {0}": "\u03a4\u03c1\u03bf\u03c6\u03bf\u03b4\u03bf\u03c4\u03b5\u03af\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u0395\u03bc\u03c0\u03bb\u03bf\u03c5\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F9 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F10 \u03b3\u03b9\u03b1  \u03c4\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-0 \u03b3\u03b9\u03b1 \u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1"
});js/tinymce/langs/th_TH.js000064400000132722151727150300011310 0ustar00tinymce.addI18n('th_TH',{
"Redo": "\u0e17\u0e33\u0e43\u0e2b\u0e21\u0e48\u0e2d\u0e35\u0e01",
"Undo": "\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e04\u0e37\u0e19",
"Cut": "\u0e15\u0e31\u0e14",
"Copy": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01",
"Paste": "\u0e27\u0e32\u0e07",
"Select all": "\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"New document": "\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48",
"Ok": "\u0e15\u0e01\u0e25\u0e07",
"Cancel": "\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01",
"Visual aids": "\u0e17\u0e31\u0e28\u0e19\u0e39\u0e1b\u0e01\u0e23\u0e13\u0e4c",
"Bold": "\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32",
"Italic": "\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e35\u0e22\u0e07",
"Underline": "\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49",
"Strikethrough": "\u0e02\u0e35\u0e14\u0e04\u0e23\u0e48\u0e2d\u0e21",
"Superscript": "\u0e15\u0e31\u0e27\u0e22\u0e01",
"Subscript": "\u0e15\u0e31\u0e27\u0e2b\u0e49\u0e2d\u0e22",
"Clear formatting": "\u0e25\u0e49\u0e32\u0e07\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Align left": "\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e0b\u0e49\u0e32\u0e22",
"Align center": "\u0e08\u0e31\u0e14\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
"Align right": "\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32",
"Justify": "\u0e40\u0e15\u0e47\u0e21\u0e41\u0e19\u0e27",
"Bullet list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e22\u0e48\u0e2d\u0e22",
"Numbered list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e25\u0e02",
"Decrease indent": "\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
"Increase indent": "\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
"Close": "\u0e1b\u0e34\u0e14",
"Formats": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e04\u0e25\u0e34\u0e1b\u0e1a\u0e2d\u0e23\u0e4c\u0e14 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e43\u0e0a\u0e49\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e25\u0e31\u0e14 Ctrl+X\/C\/V \u0e41\u0e17\u0e19",
"Headers": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
"Header 1": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 1",
"Header 2": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 2",
"Header 3": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 3",
"Header 4": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 4",
"Header 5": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 5",
"Header 6": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 6",
"Headings": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07",
"Heading 1": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48 1",
"Heading 2": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48 2",
"Heading 3": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48 3",
"Heading 4": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48 4",
"Heading 5": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48 5",
"Heading 6": "\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48 6",
"Preformatted": "\u0e1f\u0e2d\u0e23\u0e4c\u0e41\u0e21\u0e15\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19",
"Div": "Div",
"Pre": "Pre",
"Code": "\u0e23\u0e2b\u0e31\u0e2a",
"Paragraph": "\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",
"Blockquote": "Blockquote",
"Inline": "\u0e41\u0e1a\u0e1a\u0e2d\u0e34\u0e19\u0e44\u0e25\u0e19\u0e4c",
"Blocks": "\u0e1a\u0e25\u0e4a\u0e2d\u0e04",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32 \u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e08\u0e30\u0e16\u0e39\u0e01\u0e27\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e08\u0e30\u0e1b\u0e34\u0e14\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e19\u0e35\u0e49",
"Fonts": "\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23",
"Font Sizes": "\u0e02\u0e19\u0e32\u0e14\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23",
"Class": "\u0e0a\u0e31\u0e49\u0e19",
"Browse for an image": "\u0e40\u0e23\u0e35\u0e22\u0e01\u0e14\u0e39\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"OR": "OR",
"Drop an image here": "\u0e27\u0e32\u0e07\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48",
"Upload": "\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14",
"Block": "\u0e1a\u0e25\u0e47\u0e2d\u0e01",
"Align": "Align",
"Default": "\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",
"Circle": "\u0e27\u0e07\u0e01\u0e25\u0e21",
"Disc": "\u0e14\u0e34\u0e2a\u0e01\u0e4c",
"Square": "\u0e08\u0e31\u0e15\u0e38\u0e23\u0e31\u0e2a",
"Lower Alpha": "\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
"Lower Greek": "\u0e01\u0e23\u0e35\u0e01\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
"Lower Roman": "\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
"Upper Alpha": "\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
"Upper Roman": "\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
"Anchor...": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14...",
"Name": "\u0e0a\u0e37\u0e48\u0e2d",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u0e04\u0e27\u0e23\u0e08\u0e30\u0e02\u0e36\u0e49\u0e19\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \u0e15\u0e32\u0e21\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \u0e15\u0e31\u0e27\u0e40\u0e25\u0e02 \u0e02\u0e35\u0e14\u0e01\u0e25\u0e32\u0e07 \u0e08\u0e38\u0e14 \u0e2d\u0e31\u0e12\u0e20\u0e32\u0e04 \u0e2b\u0e23\u0e37\u0e2d \u0e02\u0e35\u0e14\u0e25\u0e48\u0e32\u0e07",
"You have unsaved changes are you sure you want to navigate away?": "\u0e04\u0e38\u0e13\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?",
"Restore last draft": "\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14",
"Special character...": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29...",
"Source code": "\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a",
"Insert\/Edit code sample": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14",
"Language": "\u0e20\u0e32\u0e29\u0e32",
"Code sample...": "\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14...",
"Color Picker": "\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35",
"R": "\u0e41\u0e14\u0e07",
"G": "\u0e40\u0e02\u0e35\u0e22\u0e27",
"B": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19",
"Left to right": "\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",
"Right to left": "\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",
"Emoticons": "\u0e2d\u0e34\u0e42\u0e21\u0e15\u0e34\u0e04\u0e2d\u0e19",
"Emoticons...": "\u0e2d\u0e35\u0e42\u0e21\u0e15\u0e34\u0e04\u0e2d\u0e19...",
"Metadata and Document Properties": "\u0e40\u0e21\u0e15\u0e32\u0e14\u0e32\u0e15\u0e49\u0e32\u0e41\u0e25\u0e30\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",
"Title": "\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07",
"Keywords": "\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d",
"Description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
"Robots": "\u0e2b\u0e38\u0e48\u0e19\u0e22\u0e19\u0e15\u0e4c",
"Author": "\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19",
"Encoding": "\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a",
"Fullscreen": "\u0e40\u0e15\u0e47\u0e21\u0e08\u0e2d",
"Action": "\u0e01\u0e32\u0e23\u0e01\u0e23\u0e30\u0e17\u0e33",
"Shortcut": "\u0e17\u0e32\u0e07\u0e25\u0e31\u0e14",
"Help": "\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"Address": "\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48",
"Focus to menubar": "\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e40\u0e21\u0e19\u0e39\u0e1a\u0e32\u0e23\u0e4c",
"Focus to toolbar": "\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d",
"Focus to element path": "\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e2d\u0e07\u0e04\u0e4c\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a",
"Focus to contextual toolbar": "\u0e42\u0e1f\u0e01\u0e31\u0e2a\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e15\u0e32\u0e21\u0e1a\u0e23\u0e34\u0e1a\u0e17",
"Insert link (if link plugin activated)": "\u0e41\u0e17\u0e23\u0e01\u0e25\u0e34\u0e07\u0e01\u0e4c (\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c)",
"Save (if save plugin activated)": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 (\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01)",
"Find (if searchreplace plugin activated)": "\u0e04\u0e49\u0e19\u0e2b\u0e32 (\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19 searchreplace)",
"Plugins installed ({0}):": "\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19\u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e49\u0e27 ({0}):",
"Premium plugins:": "\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19\u0e1e\u0e23\u0e35\u0e40\u0e21\u0e35\u0e22\u0e21:",
"Learn more...": "\u0e40\u0e23\u0e35\u0e22\u0e19\u0e23\u0e39\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21...",
"You are using {0}": "\u0e04\u0e38\u0e13\u0e01\u0e33\u0e25\u0e31\u0e07\u0e43\u0e0a\u0e49 {0}",
"Plugins": "\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19",
"Handy Shortcuts": "\u0e17\u0e32\u0e07\u0e25\u0e31\u0e14\u0e14\u0e49\u0e27\u0e22\u0e21\u0e37\u0e2d",
"Horizontal line": "\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Insert\/edit image": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b",
"Alternative description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e17\u0e32\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01",
"Accessibility": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07",
"Image is decorative": "\u0e20\u0e32\u0e1e\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07",
"Source": "\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32",
"Dimensions": "\u0e02\u0e19\u0e32\u0e14",
"Constrain proportions": "\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19",
"General": "\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",
"Advanced": "\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",
"Style": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Vertical space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
"Horizontal space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Border": "\u0e40\u0e2a\u0e49\u0e19\u0e02\u0e2d\u0e1a",
"Insert image": "\u0e41\u0e17\u0e23\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Image...": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e...",
"Image list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Rotate counterclockwise": "\u0e2b\u0e21\u0e38\u0e19\u0e17\u0e27\u0e19\u0e40\u0e02\u0e47\u0e21\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32",
"Rotate clockwise": "\u0e2b\u0e21\u0e38\u0e19\u0e15\u0e32\u0e21\u0e40\u0e02\u0e47\u0e21\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32",
"Flip vertically": "\u0e1e\u0e25\u0e34\u0e01\u0e15\u0e32\u0e21\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
"Flip horizontally": "\u0e1e\u0e25\u0e34\u0e01\u0e15\u0e32\u0e21\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"Edit image": "\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b",
"Image options": "\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Zoom in": "\u0e02\u0e22\u0e32\u0e22\u0e40\u0e02\u0e49\u0e32",
"Zoom out": "\u0e22\u0e48\u0e2d\u0e2d\u0e2d\u0e01",
"Crop": "\u0e04\u0e23\u0e2d\u0e1b\u0e15\u0e31\u0e14",
"Resize": "\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14",
"Orientation": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07",
"Brightness": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e27\u0e48\u0e32\u0e07",
"Sharpen": "\u0e04\u0e27\u0e32\u0e21\u0e04\u0e21",
"Contrast": "\u0e04\u0e27\u0e32\u0e21\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e15\u0e48\u0e32\u0e07",
"Color levels": "\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2a\u0e35",
"Gamma": "\u0e41\u0e01\u0e21\u0e21\u0e32",
"Invert": "\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a",
"Apply": "\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49",
"Back": "\u0e01\u0e25\u0e31\u0e1a",
"Insert date\/time": "\u0e41\u0e17\u0e23\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\/\u0e40\u0e27\u0e25\u0e32",
"Date\/time": "\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\/\u0e40\u0e27\u0e25\u0e32",
"Insert\/edit link": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Text to display": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07",
"Url": "URL",
"Open link in...": "\u0e40\u0e1b\u0e34\u0e14\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e43\u0e19...",
"Current window": "\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19",
"None": "\u0e44\u0e21\u0e48\u0e21\u0e35",
"New window": "\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48",
"Open link": "\u0e40\u0e1b\u0e34\u0e14\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Remove link": "\u0e40\u0e2d\u0e32\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e2d\u0e2d\u0e01",
"Anchors": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
"Link...": "\u0e25\u0e34\u0e07\u0e01\u0e4c...",
"Paste or type a link": "\u0e27\u0e32\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e49\u0e2d\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e23\u0e30\u0e1a\u0e38\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e41\u0e2d\u0e14\u0e40\u0e14\u0e23\u0e2a \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48 mailto: \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e23\u0e30\u0e1a\u0e38\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48 http:\/\/ \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e33\u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32 https:\/\/ \u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?",
"Link list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Insert video": "\u0e41\u0e17\u0e23\u0e01\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
"Insert\/edit video": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
"Insert\/edit media": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2a\u0e37\u0e48\u0e2d",
"Alternative source": "\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e2a\u0e33\u0e23\u0e2d\u0e07",
"Alternative source URL": "URL \u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e2a\u0e33\u0e23\u0e2d\u0e07",
"Media poster (Image URL)": "\u0e42\u0e1b\u0e2a\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e21\u0e35\u0e40\u0e14\u0e35\u0e22 (URL \u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e)",
"Paste your embed code below:": "\u0e27\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e1d\u0e31\u0e07\u0e15\u0e31\u0e27\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07:",
"Embed": "\u0e1d\u0e31\u0e07",
"Media...": "\u0e21\u0e35\u0e40\u0e14\u0e35\u0e22...",
"Nonbreaking space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e44\u0e21\u0e48\u0e41\u0e22\u0e01",
"Page break": "\u0e15\u0e31\u0e27\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32",
"Paste as text": "\u0e27\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Preview": "\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",
"Print...": "\u0e1e\u0e34\u0e21\u0e1e\u0e4c...",
"Save": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",
"Find": "\u0e04\u0e49\u0e19\u0e2b\u0e32",
"Replace with": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e27\u0e22",
"Replace": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
"Replace all": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Previous": "\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49",
"Next": "\u0e16\u0e31\u0e14\u0e44\u0e1b",
"Find and Replace": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e41\u0e25\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
"Find and replace...": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e41\u0e25\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48...",
"Could not find the specified string.": "\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38",
"Match case": "\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48-\u0e40\u0e25\u0e47\u0e01",
"Find whole words only": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e17\u0e31\u0e49\u0e07\u0e04\u0e33\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19",
"Find in selection": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01",
"Spellcheck": "\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14",
"Spellcheck Language": "\u0e20\u0e32\u0e29\u0e32\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14",
"No misspellings found.": "\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14\u0e04\u0e33\u0e1c\u0e34\u0e14",
"Ignore": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19",
"Ignore all": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Finish": "\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19",
"Add to Dictionary": "\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e43\u0e19\u0e1e\u0e08\u0e19\u0e32\u0e19\u0e38\u0e01\u0e23\u0e21",
"Insert table": "\u0e41\u0e17\u0e23\u0e01\u0e15\u0e32\u0e23\u0e32\u0e07",
"Table properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07",
"Delete table": "\u0e25\u0e1a\u0e15\u0e32\u0e23\u0e32\u0e07",
"Cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Row": "\u0e41\u0e16\u0e27",
"Column": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Cell properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Merge cells": "\u0e1c\u0e2a\u0e32\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Split cell": "\u0e41\u0e22\u0e01\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Insert row before": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
"Insert row after": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
"Delete row": "\u0e25\u0e1a\u0e41\u0e16\u0e27",
"Row properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
"Cut row": "\u0e15\u0e31\u0e14\u0e41\u0e16\u0e27",
"Copy row": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e16\u0e27",
"Paste row before": "\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
"Paste row after": "\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
"Insert column before": "\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32",
"Insert column after": "\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07",
"Delete column": "\u0e25\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Cols": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Rows": "\u0e41\u0e16\u0e27",
"Width": "\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07",
"Height": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07",
"Cell spacing": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Cell padding": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Caption": "\u0e1b\u0e49\u0e32\u0e22\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
"Show caption": "\u0e41\u0e2a\u0e14\u0e07\u0e04\u0e33\u0e1a\u0e23\u0e23\u0e22\u0e32\u0e22",
"Left": "\u0e0b\u0e49\u0e32\u0e22",
"Center": "\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
"Right": "\u0e02\u0e27\u0e32",
"Cell type": "\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
"Scope": "\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15",
"Alignment": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e19\u0e27",
"H Align": "\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e43\u0e19\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
"V Align": "\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e43\u0e19\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
"Top": "\u0e1a\u0e19",
"Middle": "\u0e01\u0e25\u0e32\u0e07",
"Bottom": "\u0e25\u0e48\u0e32\u0e07",
"Header cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
"Row group": "\u0e01\u0e25\u0e38\u0e48\u0e21\u0e41\u0e16\u0e27",
"Column group": "\u0e01\u0e25\u0e38\u0e48\u0e21\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
"Row type": "\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
"Header": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
"Body": "\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Footer": "\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e49\u0e32\u0e22",
"Border color": "\u0e2a\u0e35\u0e02\u0e2d\u0e1a",
"Insert template...": "\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a...",
"Templates": "\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
"Template": "\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
"Text color": "\u0e2a\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Background color": "\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",
"Custom...": "\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07",
"Custom color": "\u0e2a\u0e35\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07",
"No color": "\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e35",
"Remove color": "\u0e25\u0e1a\u0e2a\u0e35",
"Table of Contents": "\u0e2a\u0e32\u0e23\u0e1a\u0e31\u0e0d",
"Show blocks": "\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01",
"Show invisible characters": "\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e47\u0e19",
"Word count": "\u0e19\u0e31\u0e1a\u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e33",
"Count": "\u0e19\u0e31\u0e1a",
"Document": "\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",
"Selection": "\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01",
"Words": "\u0e04\u0e33",
"Words: {0}": "\u0e04\u0e33: {0}",
"{0} words": "{0} \u0e04\u0e33",
"File": "\u0e44\u0e1f\u0e25\u0e4c",
"Edit": "\u0e41\u0e01\u0e49\u0e44\u0e02",
"Insert": "\u0e41\u0e17\u0e23\u0e01",
"View": "\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07",
"Format": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"Table": "\u0e15\u0e32\u0e23\u0e32\u0e07",
"Tools": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d",
"Powered by {0}": "\u0e02\u0e31\u0e1a\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e42\u0e14\u0e22 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48 Rich Text \u0e01\u0e14 ALT-F9 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e19\u0e39 \u0e01\u0e14 ALT-F10 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d \u0e01\u0e14 ALT-0 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"Image title": "\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Border width": "\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e40\u0e2a\u0e49\u0e19\u0e02\u0e2d\u0e1a",
"Border style": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e40\u0e2a\u0e49\u0e19\u0e02\u0e2d\u0e1a",
"Error": "\u0e04\u0e27\u0e32\u0e21\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14",
"Warn": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e15\u0e37\u0e2d\u0e19",
"Valid": "\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07",
"To open the popup, press Shift+Enter": "\u0e01\u0e14 Shift+Enter \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e1b\u0e4a\u0e2d\u0e1a\u0e2d\u0e31\u0e1e",
"Rich Text Area. Press ALT-0 for help.": "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48 Rich Text \u0e01\u0e14 ALT-0 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"System Font": "\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a",
"Failed to upload image: {0}": "\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e: {0}",
"Failed to load plugin: {0} from url {1}": "\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e2b\u0e25\u0e14\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19: {0} \u0e08\u0e32\u0e01 url {1}",
"Failed to load plugin url: {0}": "\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e2b\u0e25\u0e14 url \u0e02\u0e2d\u0e07\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19: {0}",
"Failed to initialize plugin: {0}": "\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19: {0}",
"example": "\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",
"Search": "\u0e04\u0e49\u0e19\u0e2b\u0e32",
"All": "\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Currency": "\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19",
"Text": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
"Quotations": "\u0e43\u0e1a\u0e40\u0e2a\u0e19\u0e2d\u0e23\u0e32\u0e04\u0e32",
"Mathematical": "\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e04\u0e13\u0e34\u0e15\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c",
"Extended Latin": "\u0e20\u0e32\u0e29\u0e32\u0e25\u0e32\u0e15\u0e34\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e22\u0e32\u0e22",
"Symbols": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c",
"Arrows": "\u0e25\u0e39\u0e01\u0e28\u0e23",
"User Defined": "\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07",
"dollar sign": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e14\u0e2d\u0e25\u0e25\u0e48\u0e32\u0e23\u0e4c",
"currency sign": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19",
"euro-currency sign": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e22\u0e39\u0e42\u0e23",
"colon sign": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e08\u0e38\u0e14\u0e04\u0e39\u0e48",
"cruzeiro sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e04\u0e23\u0e39\u0e40\u0e0b\u0e42\u0e35\u0e23",
"french franc sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e1f\u0e23\u0e31\u0e07\u0e01\u0e4c\u0e1d\u0e23\u0e31\u0e48\u0e07\u0e40\u0e28\u0e2a",
"lira sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e25\u0e35\u0e23\u0e32",
"mill sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e21\u0e34\u0e25\u0e25\u0e4c",
"naira sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e44\u0e19\u0e23\u0e32",
"peseta sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e40\u0e1b\u0e40\u0e0b\u0e15\u0e32",
"rupee sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e23\u0e39\u0e1b\u0e35",
"won sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e27\u0e2d\u0e19",
"new sheqel sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e19\u0e34\u0e27\u0e40\u0e0a\u0e40\u0e01\u0e25",
"dong sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e14\u0e2d\u0e07",
"kip sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e01\u0e35\u0e1a",
"tugrik sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e17\u0e39\u0e01\u0e23\u0e34\u0e01",
"drachma sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e14\u0e23\u0e31\u0e04\u0e21\u0e32",
"german penny symbol": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e40\u0e1e\u0e19\u0e19\u0e35\u0e40\u0e22\u0e2d\u0e23\u0e21\u0e31\u0e19",
"peso sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e40\u0e1b\u0e42\u0e0b",
"guarani sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e01\u0e27\u0e32\u0e23\u0e32\u0e19\u0e35",
"austral sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e2d\u0e2d\u0e2a\u0e15\u0e23\u0e31\u0e25",
"hryvnia sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e2e\u0e23\u0e34\u0e1f\u0e40\u0e19\u0e35\u0e22",
"cedi sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e40\u0e0b\u0e14\u0e35",
"livre tournois sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e1b\u0e2d\u0e19\u0e14\u0e4c\u0e15\u0e39\u0e23\u0e4c",
"spesmilo sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e2a\u0e40\u0e1b\u0e2a\u0e21\u0e34\u0e42\u0e25",
"tenge sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e40\u0e17\u0e07\u0e40\u0e08",
"indian rupee sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e23\u0e39\u0e1b\u0e35\u0e2d\u0e34\u0e19\u0e40\u0e14\u0e35\u0e22",
"turkish lira sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e25\u0e35\u0e23\u0e32\u0e15\u0e38\u0e23\u0e01\u0e35",
"nordic mark sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e21\u0e32\u0e23\u0e4c\u0e04\u0e19\u0e2d\u0e23\u0e4c\u0e14\u0e34\u0e01",
"manat sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e21\u0e32\u0e19\u0e31\u0e15",
"ruble sign": "\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2a\u0e01\u0e38\u0e25\u0e40\u0e07\u0e34\u0e19\u0e23\u0e39\u0e40\u0e1a\u0e34\u0e25",
"yen character": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e40\u0e22\u0e19",
"yuan character": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e2b\u0e22\u0e27\u0e19",
"yuan character, in hong kong and taiwan": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e2b\u0e22\u0e27\u0e19 \u0e43\u0e19\u0e2e\u0e48\u0e2d\u0e07\u0e01\u0e07\u0e41\u0e25\u0e30\u0e44\u0e15\u0e49\u0e2b\u0e27\u0e31\u0e19",
"yen\/yuan character variant one": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e40\u0e07\u0e34\u0e19\u0e40\u0e22\u0e19\/\u0e2b\u0e22\u0e27\u0e19 \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48 1",
"Loading emoticons...": "\u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e32\u0e23\u0e21\u0e13\u0e4c...",
"Could not load emoticons": "\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e32\u0e23\u0e21\u0e13\u0e4c\u0e44\u0e14\u0e49",
"People": "\u0e1c\u0e39\u0e49\u0e04\u0e19",
"Animals and Nature": "\u0e2a\u0e31\u0e15\u0e27\u0e4c\u0e41\u0e25\u0e30\u0e18\u0e23\u0e23\u0e21\u0e0a\u0e32\u0e15\u0e34",
"Food and Drink": "\u0e2d\u0e32\u0e2b\u0e32\u0e23\u0e41\u0e25\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e14\u0e37\u0e48\u0e21",
"Activity": "\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21",
"Travel and Places": "\u0e01\u0e32\u0e23\u0e17\u0e48\u0e2d\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e27\u0e41\u0e25\u0e30\u0e2a\u0e16\u0e32\u0e19\u0e17\u0e35\u0e48",
"Objects": "\u0e27\u0e31\u0e15\u0e16\u0e38",
"Flags": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22",
"Characters": "\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23",
"Characters (no spaces)": "\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 (\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07)",
"{0} characters": "{0} \u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30",
"Error: Form submit field collision.": "\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14: \u0e0a\u0e48\u0e2d\u0e07\u0e2a\u0e48\u0e07\u0e41\u0e1a\u0e1a\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e02\u0e31\u0e14\u0e41\u0e22\u0e49\u0e07\u0e01\u0e31\u0e19",
"Error: No form element found.": "\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14: \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2d\u0e07\u0e04\u0e4c\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e1f\u0e2d\u0e23\u0e4c\u0e21",
"Update": "\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e43\u0e2b\u0e49\u0e17\u0e31\u0e19\u0e2a\u0e21\u0e31\u0e22",
"Color swatch": "\u0e41\u0e16\u0e1a\u0e2a\u0e35",
"Turquoise": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19\u0e2d\u0e21\u0e40\u0e02\u0e35\u0e22\u0e27",
"Green": "\u0e40\u0e02\u0e35\u0e22\u0e27",
"Blue": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19",
"Purple": "\u0e21\u0e48\u0e27\u0e07",
"Navy Blue": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19\u0e40\u0e02\u0e49\u0e21",
"Dark Turquoise": "\u0e2a\u0e35\u0e1f\u0e49\u0e32\u0e04\u0e23\u0e32\u0e21\u0e40\u0e02\u0e49\u0e21",
"Dark Green": "\u0e40\u0e02\u0e35\u0e22\u0e27\u0e40\u0e02\u0e49\u0e21",
"Medium Blue": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19\u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07",
"Medium Purple": "\u0e2a\u0e35\u0e21\u0e48\u0e27\u0e07\u0e01\u0e25\u0e32\u0e07\u0e46",
"Midnight Blue": "\u0e2a\u0e35\u0e1f\u0e49\u0e32\u0e40\u0e02\u0e49\u0e21",
"Yellow": "\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e07",
"Orange": "\u0e2a\u0e49\u0e21",
"Red": "\u0e41\u0e14\u0e07",
"Light Gray": "\u0e2a\u0e35\u0e40\u0e17\u0e32\u0e2d\u0e48\u0e2d\u0e19",
"Gray": "\u0e40\u0e17\u0e32",
"Dark Yellow": "\u0e2a\u0e35\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e07\u0e40\u0e02\u0e49\u0e21",
"Dark Orange": "\u0e2a\u0e49\u0e21\u0e40\u0e02\u0e49\u0e21",
"Dark Red": "\u0e41\u0e14\u0e07\u0e40\u0e02\u0e49\u0e21",
"Medium Gray": "\u0e2a\u0e35\u0e40\u0e17\u0e32\u0e01\u0e25\u0e32\u0e07\u0e46",
"Dark Gray": "\u0e2a\u0e35\u0e40\u0e17\u0e32\u0e40\u0e02\u0e49\u0e21",
"Light Green": "\u0e40\u0e02\u0e35\u0e22\u0e27\u0e2d\u0e48\u0e2d\u0e19",
"Light Yellow": "\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e07\u0e2d\u0e48\u0e2d\u0e19",
"Light Red": "\u0e41\u0e14\u0e07\u0e2d\u0e48\u0e2d\u0e19",
"Light Purple": "\u0e21\u0e48\u0e27\u0e07\u0e2d\u0e48\u0e2d\u0e19",
"Light Blue": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19\u0e2d\u0e48\u0e2d\u0e19",
"Dark Purple": "\u0e21\u0e48\u0e27\u0e07\u0e40\u0e02\u0e49\u0e21",
"Dark Blue": "\u0e19\u0e49\u0e33\u0e40\u0e07\u0e34\u0e19\u0e40\u0e02\u0e49\u0e21",
"Black": "\u0e14\u0e33",
"White": "\u0e02\u0e32\u0e27",
"Switch to or from fullscreen mode": "\u0e2a\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e08\u0e32\u0e01\u0e42\u0e2b\u0e21\u0e14\u0e40\u0e15\u0e47\u0e21\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d",
"Open help dialog": "\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e32\u0e23\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
"history": "\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34",
"styles": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"formatting": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
"alignment": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e19\u0e27",
"indentation": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",
"Font": "\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23",
"Size": "\u0e02\u0e19\u0e32\u0e14",
"More...": "\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21...",
"Select...": "\u0e40\u0e25\u0e37\u0e2d\u0e01...",
"Preferences": "\u0e04\u0e48\u0e32\u0e01\u0e33\u0e2b\u0e19\u0e14",
"Yes": "\u0e43\u0e0a\u0e48",
"No": "\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48",
"Keyboard Navigation": "\u0e01\u0e32\u0e23\u0e19\u0e33\u0e17\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c",
"Version": "\u0e23\u0e38\u0e48\u0e19",
"Code view": "\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07\u0e42\u0e04\u0e49\u0e14",
"Open popup menu for split buttons": "\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e21\u0e19\u0e39\u0e1b\u0e4a\u0e2d\u0e1b\u0e2d\u0e31\u0e1b\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\u0e41\u0e22\u0e01",
"List Properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23",
"List properties...": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23...",
"Start list at number": "\u0e40\u0e23\u0e34\u0e48\u0e21\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e14\u0e49\u0e27\u0e22\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02",
"Line height": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14",
"comments": "\u0e02\u0e49\u0e2d\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19",
"Format Painter": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e40\u0e1e\u0e19\u0e40\u0e15\u0e2d\u0e23\u0e4c",
"Insert\/edit iframe": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02 iframe",
"Capitalization": "\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48",
"lowercase": "\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e40\u0e25\u0e47\u0e01",
"UPPERCASE": "\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48",
"Title Case": "\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e02\u0e2d\u0e07\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d",
"permanent pen": "\u0e1b\u0e32\u0e01\u0e01\u0e32\u0e40\u0e04\u0e21\u0e35\u0e0a\u0e19\u0e34\u0e14\u0e25\u0e1a\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49",
"Permanent Pen Properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e1b\u0e32\u0e01\u0e01\u0e32\u0e21\u0e32\u0e23\u0e4c\u0e04\u0e40\u0e01\u0e2d\u0e23\u0e4c",
"Permanent pen properties...": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e1b\u0e32\u0e01\u0e01\u0e32\u0e21\u0e32\u0e23\u0e4c\u0e04\u0e40\u0e01\u0e2d\u0e23\u0e4c...",
"case change": "\u0e02\u0e19\u0e32\u0e14\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19",
"page embed": "\u0e1d\u0e31\u0e07\u0e2b\u0e19\u0e49\u0e32",
"Advanced sort...": "\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07...",
"Advanced Sort": "\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",
"Sort table by column ascending": "\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e15\u0e32\u0e21\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e32\u0e01\u0e19\u0e49\u0e2d\u0e22\u0e44\u0e1b\u0e21\u0e32\u0e01",
"Sort table by column descending": "\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07\u0e15\u0e32\u0e21\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e32\u0e01\u0e21\u0e32\u0e01\u0e44\u0e1b\u0e19\u0e49\u0e2d\u0e22",
"Sort": "\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07",
"Order": "\u0e25\u0e33\u0e14\u0e31\u0e1a",
"Sort by": "\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e42\u0e14\u0e22",
"Ascending": "\u0e08\u0e32\u0e01\u0e19\u0e49\u0e2d\u0e22\u0e44\u0e1b\u0e21\u0e32\u0e01",
"Descending": "\u0e08\u0e32\u0e01\u0e21\u0e32\u0e01\u0e44\u0e1b\u0e19\u0e49\u0e2d\u0e22",
"Column {0}": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c {0}",
"Row {0}": "\u0e41\u0e16\u0e27 {0}",
"Spellcheck...": "\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14\u0e04\u0e33...",
"Misspelled word": "\u0e04\u0e33\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e01\u0e14\u0e1c\u0e34\u0e14",
"Suggestions": "\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33",
"Change": "\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19",
"Finding word suggestions": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e04\u0e33\u0e17\u0e35\u0e48\u0e41\u0e19\u0e30\u0e19\u0e33",
"Success": "\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08",
"Repair": "\u0e0b\u0e48\u0e2d\u0e21\u0e41\u0e0b\u0e21",
"Issue {0} of {1}": "\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48 {0} \u0e08\u0e32\u0e01 {1}",
"Images must be marked as decorative or have an alternative text description": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e27\u0e48\u0e32\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07 \u0e2b\u0e23\u0e37\u0e2d\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e2a\u0e14\u0e07\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e2a\u0e14\u0e07\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e20\u0e32\u0e1e\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07",
"Or provide alternative text:": "\u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e30\u0e1a\u0e38\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e2a\u0e14\u0e07:",
"Make image decorative:": "\u0e17\u0e33\u0e20\u0e32\u0e1e\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07:",
"ID attribute must be unique": "\u0e41\u0e2d\u0e15\u0e17\u0e23\u0e34\u0e1a\u0e34\u0e27\u0e15\u0e4c ID \u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33\u0e01\u0e31\u0e19",
"Make ID unique": "\u0e17\u0e33\u0e43\u0e2b\u0e49 ID \u0e44\u0e21\u0e48\u0e0b\u0e49\u0e33\u0e01\u0e31\u0e19",
"Keep this ID and remove all others": "\u0e40\u0e01\u0e47\u0e1a ID \u0e19\u0e35\u0e49\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e25\u0e1a\u0e2d\u0e37\u0e48\u0e19 \u0e46 \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Remove this ID": "\u0e25\u0e1a ID \u0e19\u0e35\u0e49",
"Remove all IDs": "\u0e25\u0e1a ID \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
"Checklist": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a",
"Anchor": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
"Special character": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29",
"Code sample": "\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14",
"Color": "\u0e2a\u0e35",
"Document properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",
"Image description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b",
"Image": "\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
"Insert link": "\u0e41\u0e17\u0e23\u0e01\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Target": "\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",
"Link": "\u0e25\u0e34\u0e07\u0e01\u0e4c",
"Poster": "\u0e42\u0e1b\u0e2a\u0e40\u0e15\u0e2d\u0e23\u0e4c",
"Media": "\u0e2a\u0e37\u0e48\u0e2d",
"Print": "\u0e1e\u0e34\u0e21\u0e1e\u0e4c",
"Prev": "\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32",
"Find and replace": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e41\u0e25\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
"Whole words": "\u0e17\u0e31\u0e49\u0e07\u0e04\u0e33",
"Insert template": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a"
});js/tinymce/langs/cs.js000064400000047340151727150300010710 0ustar00tinymce.addI18n('cs',{
"Redo": "Znovu",
"Undo": "Zp\u011bt",
"Cut": "Vyjmout",
"Copy": "Kop\u00edrovat",
"Paste": "Vlo\u017eit",
"Select all": "Vybrat v\u0161e",
"New document": "Nov\u00fd dokument",
"Ok": "OK",
"Cancel": "Zru\u0161it",
"Visual aids": "Vizu\u00e1ln\u00ed pom\u016fcky",
"Bold": "Tu\u010dn\u00e9",
"Italic": "Kurz\u00edva",
"Underline": "Podtr\u017een\u00e9",
"Strikethrough": "P\u0159e\u0161krtnut\u00e9",
"Superscript": "Horn\u00ed index",
"Subscript": "Doln\u00ed index",
"Clear formatting": "Vymazat form\u00e1tov\u00e1n\u00ed",
"Align left": "Zarovnat vlevo",
"Align center": "Zarovnat na st\u0159ed",
"Align right": "Zarovnat vpravo",
"Justify": "Do bloku",
"Bullet list": "Odr\u00e1\u017eky",
"Numbered list": "\u010c\u00edslov\u00e1n\u00ed",
"Decrease indent": "Zmen\u0161it odsazen\u00ed",
"Increase indent": "Zv\u011bt\u0161it odsazen\u00ed",
"Close": "Zav\u0159\u00edt",
"Formats": "Form\u00e1ty",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prohl\u00ed\u017ee\u010d nepodporuje p\u0159\u00edm\u00fd p\u0159\u00edstup do schr\u00e1nky. Pou\u017eijte pros\u00edm kl\u00e1vesov\u00e9 zkratky Ctrl+X\/C\/V.",
"Headers": "Nadpisy",
"Header 1": "Nadpis 1",
"Header 2": "Nadpis 2",
"Header 3": "Nadpis 3",
"Header 4": "Nadpis 4",
"Header 5": "Nadpis 5",
"Header 6": "Nadpis 6",
"Headings": "Nadpisy",
"Heading 1": "Nadpis 1",
"Heading 2": "Nadpis 2",
"Heading 3": "Nadpis 3",
"Heading 4": "Nadpis 4",
"Heading 5": "Nadpis 5",
"Heading 6": "Nadpis 6",
"Preformatted": "P\u0159edform\u00e1tovan\u00fd text",
"Div": "Div (blok)",
"Pre": "Pre (p\u0159edform\u00e1tov\u00e1no)",
"Code": "Code (k\u00f3d)",
"Paragraph": "Odstavec",
"Blockquote": "Citace",
"Inline": "\u0158\u00e1dkov\u00e9 zobrazen\u00ed (inline)",
"Blocks": "Blokov\u00e9 zobrazen\u00ed (block)",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Je zapnuto vkl\u00e1d\u00e1n\u00ed \u010dist\u00e9ho textu. Dokud nebude tato volba vypnuta, bude ve\u0161ker\u00fd obsah vlo\u017een jako \u010dist\u00fd text.",
"Fonts": "Typ p\u00edsma",
"Font Sizes": "Velikost p\u00edsma",
"Class": "T\u0159\u00edda",
"Browse for an image": "Vyhledat obr\u00e1zek",
"OR": "NEBO",
"Drop an image here": "P\u0159et\u00e1hn\u011bte obr\u00e1zek do tohoto um\u00edst\u011bn\u00ed",
"Upload": "Nahr\u00e1t",
"Block": "Do bloku",
"Align": "Zarovn\u00e1n\u00ed",
"Default": "V\u00fdchoz\u00ed",
"Circle": "Kole\u010dko",
"Disc": "Punt\u00edk",
"Square": "\u010ctvere\u010dek",
"Lower Alpha": "Norm\u00e1ln\u00ed \u010d\u00edslov\u00e1n\u00ed",
"Lower Greek": "Mal\u00e9 p\u00edsmenkov\u00e1n\u00ed",
"Lower Roman": "Mal\u00e9 \u0159\u00edmsk\u00e9 \u010d\u00edslice",
"Upper Alpha": "velk\u00e9 p\u00edsmenkov\u00e1n\u00ed",
"Upper Roman": "\u0158\u00edmsk\u00e9 \u010d\u00edslice",
"Anchor...": "Kotva",
"Name": "N\u00e1zev",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id by m\u011blo za\u010d\u00ednat p\u00edsmenem a d\u00e1le obsahovat pouze p\u00edsmena, \u010d\u00edsla, poml\u010dky, te\u010dky, dvojte\u010dky, nebo podtr\u017e\u00edtka.",
"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zm\u011bny. Opravdu chcete opustit str\u00e1nku?",
"Restore last draft": "Obnovit posledn\u00ed koncept",
"Special character...": "Speci\u00e1ln\u00ed znak\u2026",
"Source code": "Zdrojov\u00fd k\u00f3d",
"Insert\/Edit code sample": "Vlo\u017eit \/ Upravit uk\u00e1zkov\u00fd k\u00f3d",
"Language": "Jazyk",
"Code sample...": "Uk\u00e1zka k\u00f3du",
"Color Picker": "V\u00fdb\u011br barvy",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Zleva doprava",
"Right to left": "Zprava doleva",
"Emoticons": "Emotikony",
"Emoticons...": "Emotikony",
"Metadata and Document Properties": "Metadata a vlastnosti dokumentu",
"Title": "Titulek",
"Keywords": "Kl\u00ed\u010dov\u00e1 slova",
"Description": "Popis",
"Robots": "Roboti",
"Author": "Autor",
"Encoding": "K\u00f3dov\u00e1n\u00ed",
"Fullscreen": "Na celou obrazovku",
"Action": "Akce",
"Shortcut": "Kl\u00e1vesov\u00e1 zkratka",
"Help": "N\u00e1pov\u011bda",
"Address": "Blok s po\u0161tovn\u00ed adresou",
"Focus to menubar": "P\u0159ej\u00edt do menu",
"Focus to toolbar": "P\u0159ej\u00edt na panel n\u00e1stroj\u016f",
"Focus to element path": "P\u0159ej\u00edt na element path",
"Focus to contextual toolbar": "P\u0159ej\u00edt na kontextov\u00fd panel n\u00e1stroj\u016f",
"Insert link (if link plugin activated)": "Vlo\u017eit odkaz (pokud je aktivn\u00ed link plugin)",
"Save (if save plugin activated)": "Ulo\u017eit (pokud je aktivni save plugin)",
"Find (if searchreplace plugin activated)": "Hledat (pokud je aktivn\u00ed plugin searchreplace)",
"Plugins installed ({0}):": "Instalovan\u00e9 pluginy ({0}):",
"Premium plugins:": "Pr\u00e9miov\u00e9 pluginy:",
"Learn more...": "Zjistit v\u00edce...",
"You are using {0}": "Pou\u017e\u00edv\u00e1te {0}",
"Plugins": "Pluginy",
"Handy Shortcuts": "U\u017eite\u010dn\u00e9 kl\u00e1vesov\u00e9 zkratky",
"Horizontal line": "Vodorovn\u00e1 \u010d\u00e1ra",
"Insert\/edit image": "Vlo\u017eit \/ upravit obr\u00e1zek",
"Alternative description": "Alternativn\u00ed text",
"Accessibility": "Bez alternativn\u00edho textu",
"Image is decorative": "(dekorativn\u00ed obr\u00e1zek bez alternativn\u00edho textu)",
"Source": "URL",
"Dimensions": "Rozm\u011bry",
"Constrain proportions": "Zachovat proporce",
"General": "Obecn\u00e9",
"Advanced": "Pokro\u010dil\u00e9",
"Style": "Styl",
"Vertical space": "Vertik\u00e1ln\u00ed mezera",
"Horizontal space": "Horizont\u00e1ln\u00ed mezera",
"Border": "R\u00e1me\u010dek",
"Insert image": "Vlo\u017eit obr\u00e1zek",
"Image...": "Obr\u00e1zek",
"Image list": "Seznam obr\u00e1zk\u016f",
"Rotate counterclockwise": "Oto\u010dit doleva",
"Rotate clockwise": "Oto\u010dit doprava",
"Flip vertically": "P\u0159evr\u00e1tit svisle",
"Flip horizontally": "P\u0159evr\u00e1tit vodorovn\u011b",
"Edit image": "Upravit obr\u00e1zek",
"Image options": "Vlastnosti obr\u00e1zku",
"Zoom in": "P\u0159ibl\u00ed\u017eit",
"Zoom out": "Odd\u00e1lit",
"Crop": "O\u0159\u00edznout",
"Resize": "Zm\u011bnit velikost",
"Orientation": "Transformovat",
"Brightness": "Jas",
"Sharpen": "Ostrost",
"Contrast": "Kontrast",
"Color levels": "\u00darovn\u011b barev",
"Gamma": "Gama",
"Invert": "Invertovat",
"Apply": "Pou\u017e\u00edt",
"Back": "Zp\u011bt",
"Insert date\/time": "Vlo\u017eit datum \/ \u010das",
"Date\/time": "Datum\/\u010das",
"Insert\/edit link": "Vlo\u017eit \/ upravit odkaz",
"Text to display": "Text k zobrazen\u00ed",
"Url": "URL",
"Open link in...": "C\u00edlov\u00e9 okno URL",
"Current window": "Otev\u0159\u00edt v nad\u0159azen\u00e9 okn\u011b",
"None": "\u017d\u00e1dn\u00e9",
"New window": "Nov\u00e9 okno",
"Open link": "C\u00edlov\u00e9 okno URL",
"Remove link": "Odstranit odkaz",
"Anchors": "Kotvy",
"Link...": "Odkaz",
"Paste or type a link": "Vlo\u017eit nebo napsat odkaz",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa. Chcete doplnit povinn\u00fd prefix mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1 jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix http:\/\/?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1 jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix https:\/\/?",
"Link list": "Seznam odkaz\u016f",
"Insert video": "Vlo\u017eit video",
"Insert\/edit video": "Vlo\u017eit \/ upravit video",
"Insert\/edit media": "Vlo\u017eit \/ upravit m\u00e9dia",
"Alternative source": "Alternativn\u00ed zdroj",
"Alternative source URL": "Alternativn\u00ed zdrojov\u00e1 URL",
"Media poster (Image URL)": "URL n\u00e1hledu",
"Paste your embed code below:": "Vlo\u017ete k\u00f3d pro vlo\u017een\u00ed n\u00ed\u017ee:",
"Embed": "Vlo\u017eit",
"Media...": "M\u00e9dia",
"Nonbreaking space": "Pevn\u00e1 mezera",
"Page break": "Konec str\u00e1nky",
"Paste as text": "Vlo\u017eit jako \u010dist\u00fd text",
"Preview": "N\u00e1hled",
"Print...": "Tisk...",
"Save": "Ulo\u017eit",
"Find": "Naj\u00edt",
"Replace with": "Nahradit za",
"Replace": "Nahradit",
"Replace all": "Nahradit v\u0161e",
"Previous": "P\u0159edchoz\u00ed",
"Next": "Dal\u0161\u00ed",
"Find and Replace": "Naj\u00edt a nahradit",
"Find and replace...": "Naj\u00edt a nahradit",
"Could not find the specified string.": "Zadan\u00fd \u0159et\u011bzec nebyl nalezen.",
"Match case": "Rozli\u0161ovat mal\u00e1 a velk\u00e1 p\u00edsmena",
"Find whole words only": "Pouze cel\u00e1 slova",
"Find in selection": "Ozna\u010den\u00fd text",
"Spellcheck": "Kontrola pravopisu",
"Spellcheck Language": "Jazyk kontroly pravopisu",
"No misspellings found.": "Nebyly nalezeny \u017e\u00e1dn\u00e9 p\u0159eklepy.",
"Ignore": "Ignorovat",
"Ignore all": "Ignorovat v\u0161e",
"Finish": "Ukon\u010dit",
"Add to Dictionary": "P\u0159idat do slovn\u00edku",
"Insert table": "Vlo\u017eit tabulku",
"Table properties": "Vlastnosti tabulky",
"Delete table": "Smazat tabulku",
"Cell": "Bu\u0148ka",
"Row": "\u0158\u00e1dek",
"Column": "Sloupec",
"Cell properties": "Vlastnosti bu\u0148ky",
"Merge cells": "Slou\u010dit bu\u0148ky",
"Split cell": "Rozd\u011blit bu\u0148ky",
"Insert row before": "Vlo\u017eit \u0159\u00e1dek nad",
"Insert row after": "Vlo\u017eit \u0159\u00e1dek pod",
"Delete row": "Smazat \u0159\u00e1dek",
"Row properties": "Vlastnosti \u0159\u00e1dku",
"Cut row": "Vyjmout \u0159\u00e1dek",
"Copy row": "Kop\u00edrovat \u0159\u00e1dek",
"Paste row before": "Vlo\u017eit \u0159\u00e1dek nad",
"Paste row after": "Vlo\u017eit \u0159\u00e1dek pod",
"Insert column before": "Vlo\u017eit sloupec vlevo",
"Insert column after": "Vlo\u017eit sloupec vpravo",
"Delete column": "Smazat sloupec",
"Cols": "Sloupc\u016f",
"Rows": "\u0158\u00e1dek",
"Width": "\u0160\u00ed\u0159ka",
"Height": "V\u00fd\u0161ka",
"Cell spacing": "Vn\u011bj\u0161\u00ed okraj bun\u011bk",
"Cell padding": "Vnit\u0159n\u00ed okraj bun\u011bk",
"Caption": "Nadpis",
"Show caption": "Zobrazit titulek",
"Left": "Vlevo",
"Center": "Na st\u0159ed",
"Right": "Vpravo",
"Cell type": "Typ bu\u0148ky",
"Scope": "Rozsah",
"Alignment": "Zarovn\u00e1n\u00ed",
"H Align": "Horizont\u00e1ln\u00ed zarovn\u00e1n\u00ed",
"V Align": "Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed",
"Top": "Nahoru",
"Middle": "Uprost\u0159ed",
"Bottom": "Dol\u016f",
"Header cell": "Hlavi\u010dkov\u00e1 bu\u0148ka",
"Row group": "Skupina \u0159\u00e1dk\u016f",
"Column group": "Skupina sloupc\u016f",
"Row type": "Typ \u0159\u00e1dku",
"Header": "Hlavi\u010dka",
"Body": "T\u011blo",
"Footer": "Pati\u010dka",
"Border color": "Barva r\u00e1me\u010dku",
"Insert template...": "Vlo\u017eit \u0161ablonu",
"Templates": "\u0160ablony",
"Template": "\u0160ablona",
"Text color": "Barva p\u00edsma",
"Background color": "Barva pozad\u00ed",
"Custom...": "Vlastn\u00ed...",
"Custom color": "Vlastn\u00ed barva",
"No color": "Bez barvy",
"Remove color": "Odebrat barvu",
"Table of Contents": "Obsah",
"Show blocks": "Uk\u00e1zat bloky",
"Show invisible characters": "Zobrazit speci\u00e1ln\u00ed znaky",
"Word count": "Po\u010det slov",
"Count": "Po\u010det",
"Document": "Dokument",
"Selection": "V\u00fdb\u011br",
"Words": "Slova",
"Words: {0}": "Po\u010det slov: {0}",
"{0} words": "Po\u010det slov: {0}",
"File": "Soubor",
"Edit": "\u00dapravy",
"Insert": "Vlo\u017eit",
"View": "Zobrazit",
"Format": "Form\u00e1t",
"Table": "Tabulka",
"Tools": "N\u00e1stroje",
"Powered by {0}": "Vytvo\u0159il {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Editor. Stiskn\u011bte ALT-F9 pro menu, ALT-F10 pro n\u00e1strojovou li\u0161tu a ALT-0 pro n\u00e1pov\u011bdu.",
"Image title": "N\u00e1zev obr\u00e1zku",
"Border width": "\u0160\u00ed\u0159ka ohrani\u010den\u00ed",
"Border style": "Styl ohrani\u010den\u00ed",
"Error": "Chyba",
"Warn": "Varov\u00e1n\u00ed",
"Valid": "Platn\u00fd",
"To open the popup, press Shift+Enter": "Vyskakovac\u00ed okno otev\u0159ete stisknut\u00edm Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Oblast Rich Text, stiskn\u011bte ALT-0 pro n\u00e1pov\u011bdu.",
"System Font": "Typ p\u00edsma",
"Failed to upload image: {0}": "Selhalo nahr\u00e1n\u00ed obr\u00e1zku: {0}",
"Failed to load plugin: {0} from url {1}": "Selhalo na\u010dten\u00ed pluginu: {0} z URL {1}",
"Failed to load plugin url: {0}": "Selhalo na\u010dten\u00ed URL pluginu: {0}",
"Failed to initialize plugin: {0}": "Selhala inicializace pluginu: {0}",
"example": "p\u0159\u00edklad",
"Search": "Hledat",
"All": "V\u0161e",
"Currency": "M\u011bna",
"Text": "Text",
"Quotations": "Citace",
"Mathematical": "Matematick\u00e9 symboly",
"Extended Latin": "Roz\u0161\u00ed\u0159en\u00e1 latinka",
"Symbols": "Symboly",
"Arrows": "\u0160ipky",
"User Defined": "Definovan\u00e9 u\u017eivatelem",
"dollar sign": "znak dolar",
"currency sign": "znak m\u011bny",
"euro-currency sign": "znak eura",
"colon sign": "znak colon",
"cruzeiro sign": "znak cruzeiro",
"french franc sign": "znak francouzsk\u00fdo frank",
"lira sign": "znak lira",
"mill sign": "znak mill",
"naira sign": "znak nairo",
"peseta sign": "znak peseto",
"rupee sign": "znak rupie",
"won sign": "znak won",
"new sheqel sign": "znak nov\u00fd \u0161ekel",
"dong sign": "znak dong",
"kip sign": "znak kip",
"tugrik sign": "znak tugrik",
"drachma sign": "znak drachma",
"german penny symbol": "znak n\u011bmeck\u00fd fenik",
"peso sign": "znak peso",
"guarani sign": "znak guaran\u00ed",
"austral sign": "znak austral",
"hryvnia sign": "znak h\u0159ivna",
"cedi sign": "znak cedi",
"livre tournois sign": "znak tournois libra",
"spesmilo sign": "znak spesmilo",
"tenge sign": "znak tenge",
"indian rupee sign": "znak indick\u00e1 rupie",
"turkish lira sign": "znak tureck\u00e1 liry",
"nordic mark sign": "znak norsk\u00e1 marka",
"manat sign": "znak manat",
"ruble sign": "znak rubl",
"yen character": "znak jen",
"yuan character": "znak juan",
"yuan character, in hong kong and taiwan": "znak juanu v hongkongu a tchaj-wanu",
"yen\/yuan character variant one": "znak jenu\/juanu, varianta 1",
"Loading emoticons...": "Na\u010d\u00edt\u00e1n\u00ed emotikon\u016f...",
"Could not load emoticons": "Nelze na\u010d\u00edst emotikony",
"People": "Lid\u00e9",
"Animals and Nature": "Zv\u00ed\u0159ata a p\u0159\u00edroda",
"Food and Drink": "J\u00eddlo a pit\u00ed",
"Activity": "Aktivita",
"Travel and Places": "Cestov\u00e1n\u00ed a m\u00edsta",
"Objects": "Objekty",
"Flags": "Vlajky",
"Characters": "Znaky",
"Characters (no spaces)": "Znaky (bez mezer)",
"{0} characters": "{0} znak\u016f",
"Error: Form submit field collision.": "Chyba: Kolize odes\u00edlac\u00edho formul\u00e1\u0159ov\u00e9ho pole.",
"Error: No form element found.": "Chyba: Nebyl nalezen \u017e\u00e1dn\u00fd prvek formul\u00e1\u0159e.",
"Update": "Aktualizovat",
"Color swatch": "Vzorek barvy",
"Turquoise": "Tyrkysov\u00e1",
"Green": "Zelen\u00e1",
"Blue": "Modr\u00e1",
"Purple": "Fialov\u00e1",
"Navy Blue": "N\u00e1mo\u0159nick\u00e1 mod\u0159",
"Dark Turquoise": "Tmav\u011b tyrkysov\u00e1",
"Dark Green": "Tmav\u011b zelen\u00e1",
"Medium Blue": "St\u0159edn\u011b modr\u00e1",
"Medium Purple": "St\u0159edn\u011b fialov\u00e1",
"Midnight Blue": "P\u016flno\u010dn\u00ed modr\u00e1",
"Yellow": "\u017dlut\u00e1",
"Orange": "Oran\u017eov\u00e1",
"Red": "\u010cerven\u00e1",
"Light Gray": "Sv\u011btle \u0161ed\u00e1",
"Gray": "\u0160ed\u00e1",
"Dark Yellow": "Tmav\u011b \u017elut\u00e1",
"Dark Orange": "Tmav\u011b oran\u017eov\u00e1",
"Dark Red": "Tmav\u011b \u010derven\u00e1",
"Medium Gray": "St\u0159edn\u011b \u0161ed\u00e1",
"Dark Gray": "Tmav\u011b \u0161ed\u00e1",
"Light Green": "Sv\u011btle zelen\u00e1",
"Light Yellow": "Sv\u011btle \u017elut\u00e1",
"Light Red": "Sv\u011btle \u010derven\u00e1",
"Light Purple": "Sv\u011btle fialov\u00e1",
"Light Blue": "Sv\u011btle modr\u00e1",
"Dark Purple": "Tmav\u011b fialov\u00e1",
"Dark Blue": "Tmav\u011b modr\u00e1",
"Black": "\u010cern\u00e1",
"White": "B\u00edl\u00e1",
"Switch to or from fullscreen mode": "P\u0159ep\u00edn\u00e1n\u00ed mezi re\u017eimem cel\u00e9 obrazovky",
"Open help dialog": "Otev\u0159\u00edt okno n\u00e1pov\u011bdy",
"history": "historie",
"styles": "styly",
"formatting": "form\u00e1tov\u00e1n\u00ed",
"alignment": "zarovn\u00e1n\u00ed",
"indentation": "odsazen\u00ed",
"Font": "P\u00edsmo",
"Size": "Velikost",
"More...": "Dal\u0161\u00ed\u2026",
"Select...": "Vybrat",
"Preferences": "P\u0159edvolby",
"Yes": "Ano",
"No": "Ne",
"Keyboard Navigation": "Navigace pomoc\u00ed kl\u00e1vesnice",
"Version": "Verze",
"Code view": "Zobrazit k\u00f3d",
"Open popup menu for split buttons": "Otev\u0159ete vyskakovac\u00ed nab\u00eddku pro rozd\u011blen\u00e1 tla\u010d\u00edtka",
"List Properties": "Vlastnosti seznamu",
"List properties...": "Vlastnosti seznamu...",
"Start list at number": "Po\u010d\u00e1te\u010dn\u00ed \u010d\u00edslo seznamu",
"Line height": "V\u00fd\u0161ka \u0159\u00e1dku",
"comments": "koment\u00e1\u0159e",
"Format Painter": "Kop\u00edrovat form\u00e1t",
"Insert\/edit iframe": "Vlo\u017eit\/upravit prvek iframe",
"Capitalization": "Velk\u00e1 p\u00edsmena",
"lowercase": "mal\u00e1 p\u00edsmena",
"UPPERCASE": "VELK\u00c1 P\u00cdSMENA",
"Title Case": "V\u0161echna Prvn\u00ed Velk\u00e1",
"permanent pen": "Permanentn\u00ed pero",
"Permanent Pen Properties": "Vlastnosti permanentn\u00edho pera",
"Permanent pen properties...": "Vlastnosti permanentn\u00edho pera\u2026",
"case change": "Zm\u011bna velikosti p\u00edsma",
"page embed": "Vlo\u017een\u00ed str\u00e1nky",
"Advanced sort...": "Roz\u0161\u00ed\u0159en\u00e9 \u0159azen\u00ed...",
"Advanced Sort": "Roz\u0161\u00ed\u0159en\u00e9 \u0159azen\u00ed",
"Sort table by column ascending": "Se\u0159adit tabulku podle sloupce vzestupn\u011b",
"Sort table by column descending": "Se\u0159adit tabulku podle sloupce sestupn\u011b",
"Sort": "\u0158adit",
"Order": "\u0158azen\u00ed",
"Sort by": "\u0158adit dle",
"Ascending": "Vzestupn\u011b",
"Descending": "Sestupn\u011b",
"Column {0}": "Sloupec {0}",
"Row {0}": "\u0158\u00e1dek {0}",
"Spellcheck...": "Kontrola pravopisu",
"Misspelled word": "\u0160patn\u011b napsan\u00e9 slovo",
"Suggestions": "N\u00e1vrhy",
"Change": "Zm\u011bnit",
"Finding word suggestions": "Hled\u00e1n\u00ed n\u00e1vrh\u016f slov",
"Success": "\u00dasp\u011b\u0161n\u00e9",
"Repair": "Opraveno",
"Issue {0} of {1}": "Probl\u00e9m {0} z {1}",
"Images must be marked as decorative or have an alternative text description": "Obr\u00e1zky mus\u00ed b\u00fdt ozna\u010deny jako dekorativn\u00ed nebo mus\u00ed m\u00edt alternativn\u00ed textov\u00fd popis.",
"Images must have an alternative text description. Decorative images are not allowed.": "Obr\u00e1zky mus\u00ed m\u00edt alternativn\u00ed textov\u00fd popis. Dekorativn\u00ed obr\u00e1zky nejsou povoleny.",
"Or provide alternative text:": "Nebo zadejte alternativn\u00ed text:",
"Make image decorative:": "Nastavit obr\u00e1zek jako dekorativn\u00ed:",
"ID attribute must be unique": "ID atributu mus\u00ed b\u00fdt jedine\u010dn\u00e9",
"Make ID unique": "Nastavit ID jako jedine\u010dn\u00e9",
"Keep this ID and remove all others": "Ponechat toto ID a odstranit v\u0161echny ostatn\u00ed",
"Remove this ID": "Odebrat toto ID",
"Remove all IDs": "Odebrat v\u0161echna ID",
"Checklist": "Kontroln\u00ed seznam",
"Anchor": "Kotva",
"Special character": "Speci\u00e1ln\u00ed znak",
"Code sample": "Uk\u00e1zkov\u00fd k\u00f3d",
"Color": "Barva",
"Document properties": "Vlastnosti dokumentu",
"Image description": "Popis obr\u00e1zku",
"Image": "Obr\u00e1zek",
"Insert link": "Vlo\u017eit odkaz",
"Target": "C\u00edl",
"Link": "Odkaz",
"Poster": "N\u00e1hled",
"Media": "M\u00e9dia",
"Print": "Tisk",
"Prev": "P\u0159edchoz\u00ed",
"Find and replace": "Naj\u00edt a nahradit",
"Whole words": "Pouze cel\u00e1 slova",
"Insert template": "Vlo\u017eit \u0161ablonu"
});js/tinymce/langs/lv.js000064400000025457151727150310010732 0ustar00tinymce.addI18n('lv',{
"Redo": "Solis uz priek\u0161u",
"Undo": "Solis atpaka\u013c",
"Cut": "Izgriezt",
"Copy": "Kop\u0113t",
"Paste": "Iel\u012bm\u0113t",
"Select all": "Iez\u012bm\u0113t visu",
"New document": "Jauns dokuments",
"Ok": "Ok",
"Cancel": "Atcelt",
"Visual aids": "Vizu\u0101l\u0101 pal\u012bdz\u012bba",
"Bold": "Treknraksts",
"Italic": "Sl\u012bpraksts",
"Underline": "Pasv\u012btrot",
"Strikethrough": "Nosv\u012btrot",
"Superscript": "Aug\u0161raksts",
"Subscript": "Apak\u0161raksts",
"Clear formatting": "No\u0146emt format\u0113jumu",
"Align left": "Pa kreisi",
"Align center": "Centr\u0113t",
"Align right": "Pa labi",
"Justify": "Gar ab\u0101m mal\u0101m",
"Bullet list": "Nenumur\u0113ts saraksts",
"Numbered list": "Numur\u0113ts saraksts",
"Decrease indent": "Samazin\u0101t atk\u0101pi",
"Increase indent": "Palielin\u0101t atk\u0101pi",
"Close": "Aizv\u0113rt",
"Formats": "Format\u0113jumi",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "J\u016bsu p\u0101rl\u016bkprogramma neatbalsta piek\u013cuvi starpliktuvei. L\u016bdzu, lietojiet Ctrl+X\/C\/V klaviat\u016bras sa\u012bsnes.",
"Headers": "Virsraksti",
"Header 1": "1. l\u012bme\u0146a virsraksts",
"Header 2": "2. l\u012bme\u0146a virsraksts",
"Header 3": "3. l\u012bme\u0146a virsraksts",
"Header 4": "4. l\u012bme\u0146a virsraksts",
"Header 5": "5. l\u012bme\u0146a virsraksts",
"Header 6": "6. l\u012bme\u0146a virsraksts",
"Headings": "Virsraksti",
"Heading 1": "1. l\u012bme\u0146a virsraksts",
"Heading 2": "2. l\u012bme\u0146a virsraksts",
"Heading 3": "3. l\u012bme\u0146a virsraksts",
"Heading 4": "4. l\u012bme\u0146a virsraksts",
"Heading 5": "5. l\u012bme\u0146a virsraksts",
"Heading 6": "6. l\u012bme\u0146a virsraksts",
"Div": "Div",
"Pre": "Pre",
"Code": "Kods",
"Paragraph": "Rindkopa",
"Blockquote": "Cit\u0101ts",
"Inline": "Inline elementi",
"Blocks": "Bloka elementi",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Iel\u012bm\u0113\u0161ana vienk\u0101r\u0161\u0101 teksta re\u017e\u012bm\u0101. Saturs tiks iel\u012bm\u0113ts bez format\u0113juma l\u012bdz \u0161\u012b opcija tiks atsl\u0113gta.",
"Font Family": "Fontu saime",
"Font Sizes": "Fontu izm\u0113ri",
"Class": "Klase",
"Browse for an image": "Izv\u0113l\u0113ties att\u0113lu",
"OR": "VAI",
"Drop an image here": "Ievelciet att\u0113lu \u0161eit",
"Upload": "Aug\u0161upiel\u0101d\u0113t",
"Block": "Bloks",
"Align": "L\u012bdzin\u0101t",
"Default": "Parastais",
"Circle": "Aplis",
"Disc": "Disks",
"Square": "Kvadr\u0101ts",
"Lower Alpha": "Lat\u012b\u0146u mazie burti",
"Lower Greek": "Grie\u0137u mazie burti",
"Lower Roman": "Romie\u0161u mazie burti",
"Upper Alpha": "Lat\u012b\u0146u lielie burti",
"Upper Roman": "Romie\u0161u lielie burti",
"Anchor": "Iek\u0161\u0113j\u0101 saite",
"Name": "Nosaukums",
"Id": "Identifikators",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Identifikatoram j\u0101s\u0101kas ar burtu, p\u0113c tam var satur\u0113t: burtus, ciparus, domuz\u012bmes, punktus, kolus vai pasv\u012btrojumz\u012bmes. ",
"You have unsaved changes are you sure you want to navigate away?": "Saturs ir labots un nav saglab\u0101ts. Vai tie\u0161\u0101m v\u0113laties atst\u0101t \u0161o lapu?",
"Restore last draft": "Atjaunot p\u0113d\u0113jo melnrakstu",
"Special character": "Speci\u0101l\u0101 rakstz\u012bme",
"Source code": "Pirmkods",
"Insert\/Edit code sample": "Ievad\u012bt\/Labot koda paraugu",
"Language": "Valoda",
"Code sample": "Koda paraugs",
"Color": "Kr\u0101sa",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "No kreis\u0101s uz labo",
"Right to left": "No lab\u0101s uz kreiso",
"Emoticons": "Emocijas",
"Document properties": "Dokumenta parametri",
"Title": "Nosaukums",
"Keywords": "Atsl\u0113gv\u0101rdi",
"Description": "Apraksts",
"Robots": "Programmas",
"Author": "Autors",
"Encoding": "Kod\u0113\u0161ana",
"Fullscreen": "Pilnekr\u0101na re\u017e\u012bms",
"Action": "Darb\u012bba",
"Shortcut": "Sa\u012bsne",
"Help": "Pal\u012bdz\u012bba",
"Address": "Adrese",
"Focus to menubar": "Fokuss uz izv\u0113lni",
"Focus to toolbar": "Fokuss uz r\u012bkjoslu",
"Focus to element path": "Fokuss uz elementa ce\u013cu",
"Focus to contextual toolbar": "Fokuss uz papildizv\u0113lni",
"Insert link (if link plugin activated)": "Ievietot saiti (Ja sai\u0161u spraudnis ir akt\u012bvs)",
"Save (if save plugin activated)": "Saglab\u0101t (Ja saglab\u0101\u0161anas spraudnis ir akt\u012bvs)",
"Find (if searchreplace plugin activated)": "Atrast (Ja \"searchreplace\" spraudnis ir akt\u012bvs)",
"Plugins installed ({0}):": "Spraud\u0146i instal\u0113ti ({0}):",
"Premium plugins:": "\u012apa\u0161ie spraud\u0146i:",
"Learn more...": "Uzzin\u0101t vair\u0101k...",
"You are using {0}": "J\u016bs lietojiet {0}",
"Plugins": "Spraud\u0146i",
"Handy Shortcuts": "Paroc\u012bgi \u012bsce\u013ci",
"Horizontal line": "Horizont\u0101l\u0101 l\u012bnija",
"Insert\/edit image": "Ievietot\/labot att\u0113lu",
"Image description": "Apraksts",
"Source": "Avots",
"Dimensions": "Izm\u0113ri",
"Constrain proportions": "Saglab\u0101t malu attiec\u012bbu",
"General": "Pamata info",
"Advanced": "Papildus",
"Style": "Stils",
"Vertical space": "Vertik\u0101l\u0101 atstarpe",
"Horizontal space": "Horizont\u0101l\u0101 atstarpe",
"Border": "Apmale",
"Insert image": "Ievietot att\u0113lu",
"Image": "Att\u0113ls",
"Image list": "Att\u0113lu saraksts",
"Rotate counterclockwise": "Pagriezt pret\u0113ji pulkste\u0146a r\u0101d\u012bt\u0101ja virzienam",
"Rotate clockwise": "Pagriezt pulkste\u0146a r\u0101d\u012bt\u0101ja virzien\u0101",
"Flip vertically": "Apmest vertik\u0101li",
"Flip horizontally": "Apmest horizont\u0101li",
"Edit image": "Redi\u0123\u0113t att\u0113lu",
"Image options": "Att\u0113la parametri",
"Zoom in": "Pietuvin\u0101t",
"Zoom out": "Att\u0101lin\u0101t",
"Crop": "Apgriezt",
"Resize": "Main\u012bt izm\u0113ru",
"Orientation": "Orient\u0101cija",
"Brightness": "Gai\u0161ums",
"Sharpen": "Asums",
"Contrast": "Kontrasts",
"Color levels": "Kr\u0101su l\u012bme\u0146i",
"Gamma": "Gamma",
"Invert": "Pret\u0113j\u0101s kr\u0101sas",
"Apply": "Pielietot",
"Back": "Atgriezties",
"Insert date\/time": "Ievietot datumu\/laiku",
"Date\/time": "Datums\/laiks",
"Insert link": "Ievietot saiti",
"Insert\/edit link": "Ievietot\/labot saiti",
"Text to display": "Nosaukums",
"Url": "Adrese",
"Target": "Kur atv\u0113rt",
"None": "\u2014",
"New window": "Jaun\u0101 \u0161\u0137irkl\u012b",
"Remove link": "No\u0146emt saiti",
"Anchors": "Saites",
"Link": "Saite",
"Paste or type a link": "Iekop\u0113jiet vai ierakstiet saiti",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "J\u016bs ievad\u012bj\u0101t e-pasta adresi. Lai t\u0101 korekti darbotos, ir nepiecie\u0161ams to papildin\u0101t ar \"mailto:\" priek\u0161\u0101. Vai v\u0113laties to izdar\u012bt?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "J\u016bs ievad\u012bj\u0101t \u0101r\u0113jo saiti. Lai t\u0101 korekti darbotos, ir nepiecie\u0161ams to papildin\u0101t ar \"http:\/\/\" priek\u0161\u0101. Vai v\u0113laties to izdar\u012bt?",
"Link list": "Sai\u0161u saraksts",
"Insert video": "Ievietot video",
"Insert\/edit video": "Ievietot\/redi\u0123\u0113t video",
"Insert\/edit media": "Ievietot\/labot att\u0113lu",
"Alternative source": "Alternat\u012bvs avots",
"Poster": "Att\u0113ls",
"Paste your embed code below:": "Iekop\u0113jiet Embed kodu \u0161eit:",
"Embed": "Embed kods",
"Media": "Att\u0113ls vai video",
"Nonbreaking space": "Nedal\u0101m\u0101 atstarpe",
"Page break": "P\u0101reja uz jauno lapu",
"Paste as text": "Iel\u012bm\u0113t bez format\u0113juma",
"Preview": "Priek\u0161skat\u012bt",
"Print": "Druk\u0101t",
"Save": "Saglab\u0101t",
"Find": "Mekl\u0113t",
"Replace with": "Aizvietot ar",
"Replace": "Aizvietot",
"Replace all": "Aizvietot visu",
"Prev": "Iepriek\u0161\u0113jais",
"Next": "N\u0101kamais",
"Find and replace": "Mekl\u0113t un aizvietot",
"Could not find the specified string.": "Mekl\u0113tais teksts netika atrasts",
"Match case": "At\u0161\u0137irt lielos un mazos burtus",
"Whole words": "Tikai pilnos v\u0101rdus",
"Spellcheck": "Pareizrakst\u012bbas p\u0101rbaude",
"Ignore": "Ignor\u0113t",
"Ignore all": "Ignor\u0113t visu",
"Finish": "Pabeigt",
"Add to Dictionary": "Pievienot v\u0101rdn\u012bcai",
"Insert table": "Ievietot tabulu",
"Table properties": "Tabulas parametri",
"Delete table": "Dz\u0113st tabulu",
"Cell": "\u0160\u016bna",
"Row": "Rinda",
"Column": "Kolonna",
"Cell properties": "\u0160\u016bnas parametri",
"Merge cells": "Apvienot \u0161\u016bnas",
"Split cell": "Sadal\u012bt \u0161\u016bnas",
"Insert row before": "Jauna rinda augst\u0101k",
"Insert row after": "Jauna rinda zem\u0101k",
"Delete row": "Dz\u0113st rindu",
"Row properties": "Rindas parametri",
"Cut row": "Izgriezt rindu",
"Copy row": "Kop\u0113t rindu",
"Paste row before": "Iel\u012bm\u0113t rindu augst\u0101k",
"Paste row after": "Iel\u012bm\u0113t rindu zem\u0101k",
"Insert column before": "Jauna kolonna pa kreisi",
"Insert column after": "Jauna kolonna pa labi",
"Delete column": "Dz\u0113st kolonu",
"Cols": "Kolonnas",
"Rows": "Rindas",
"Width": "Platums",
"Height": "Augstums",
"Cell spacing": "\u0160\u016bnu atstarpe",
"Cell padding": "Iek\u0161\u0113j\u0101 atstarpe",
"Caption": "Ar virsrakstu",
"Left": "Pa kreisi",
"Center": "Centr\u0113t",
"Right": "Pa labi",
"Cell type": "\u0160\u016bnas veids",
"Scope": "Attiecin\u0101t uz",
"Alignment": "Izl\u012bdzin\u0101\u0161ana",
"H Align": "Horizont\u0101lais novietojums",
"V Align": "Vertik\u0101lais novietojums",
"Top": "Aug\u0161\u0101",
"Middle": "Pa vidu",
"Bottom": "Apak\u0161\u0101",
"Header cell": "Galvenes \u0161\u016bna",
"Row group": "Rindu grupa",
"Column group": "Kolonnu grupa",
"Row type": "Rindas veids",
"Header": "Galvene",
"Body": "Saturs",
"Footer": "K\u0101jene",
"Border color": "Apmales kr\u0101sa",
"Insert template": "Ievietot veidni",
"Templates": "Veidnes",
"Template": "Veidne",
"Text color": "Teksta kr\u0101sa",
"Background color": "Fona kr\u0101sa",
"Custom...": "Izv\u0113l\u0113ties citu...",
"Custom color": "Specifisk\u0101 kr\u0101sa",
"No color": "Nenor\u0101d\u012bt kr\u0101su",
"Table of Contents": "Saturs",
"Show blocks": "R\u0101d\u012bt blokus",
"Show invisible characters": "R\u0101d\u012bt neredzam\u0101s rakstz\u012bmes",
"Words: {0}": "V\u0101rdi: {0}",
"{0} words": "{0} v\u0101rdi",
"File": "Datne",
"Edit": "Labot",
"Insert": "Ievietot",
"View": "Skat\u012bt",
"Format": "Format\u0113t",
"Table": "Tabula",
"Tools": "R\u012bki",
"Powered by {0}": "Darb\u012bbu nodro\u0161ina {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Satura redaktors. Nospiediet ALT-F9 lai par\u0101d\u012btu izv\u0113lni, ALT-F10 - r\u012bkjoslu vai ALT-0 - pal\u012bdz\u012bbu."
});js/tinymce/langs/fa_IR.js000064400000105314151727150310011260 0ustar00tinymce.addI18n('fa_IR',{
"Redo": "\u0628\u0627\u0632\u0627\u0646\u062c\u0627\u0645",
"Undo": "\u0648\u0627\u06af\u0631\u062f",
"Cut": "\u0628\u0631\u0634",
"Copy": "\u06a9\u067e\u06cc",
"Paste": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646",
"Select all": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0647\u0645\u0647",
"New document": "\u0633\u0646\u062f \u062c\u062f\u06cc\u062f",
"Ok": "\u062a\u0623\u06cc\u06cc\u062f",
"Cancel": "\u0644\u063a\u0648",
"Visual aids": "\u06a9\u0645\u06a9\u200c\u0647\u0627\u06cc \u0628\u0635\u0631\u06cc",
"Bold": "\u067e\u0631\u0631\u0646\u06af",
"Italic": "\u06a9\u062c",
"Underline": "\u0632\u06cc\u0631 \u062e\u0637 \u062f\u0627\u0631",
"Strikethrough": "\u062e\u0637 \u0632\u062f\u0646",
"Superscript": "\u0628\u0627\u0644\u0627\u0646\u06af\u0627\u0634\u062a",
"Subscript": "\u0632\u06cc\u0631\u0646\u06af\u0627\u0634\u062a",
"Clear formatting": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc",
"Align left": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u0627\u0632 \u0686\u067e",
"Align center": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u0627\u0632 \u0648\u0633\u0637",
"Align right": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u0627\u0632 \u0631\u0627\u0633\u062a",
"Justify": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u062f\u0648\u0637\u0631\u0641\u0647",
"Bullet list": "\u0641\u0647\u0631\u0633\u062a \u0646\u0634\u0627\u0646\u0647\u200c\u062f\u0627\u0631",
"Numbered list": "\u0641\u0647\u0631\u0633\u062a \u0634\u0645\u0627\u0631\u0647\u200c\u062f\u0627\u0631",
"Decrease indent": "\u06a9\u0627\u0647\u0634 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc",
"Increase indent": "\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc",
"Close": "\u0628\u0633\u062a\u0646",
"Formats": "\u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc\u200c\u0647\u0627",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u06a9\u0644\u06cc\u067e\u200c\u0628\u0648\u0631\u062f \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u0627\u0632 \u0645\u06cc\u0627\u0646\u0628\u0631\u0647\u0627\u06cc Ctrl+X\/C\/V \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.",
"Headers": "\u0633\u0631\u0628\u0631\u06af\u200c\u0647\u0627",
"Header 1": "\u0633\u0631\u0628\u0631\u06af 1",
"Header 2": "\u0633\u0631\u0628\u0631\u06af 2",
"Header 3": "\u0633\u0631\u0628\u0631\u06af 3",
"Header 4": "\u0633\u0631\u0628\u0631\u06af 4",
"Header 5": "\u0633\u0631\u0628\u0631\u06af 5",
"Header 6": "\u0633\u0631\u0628\u0631\u06af 6",
"Headings": "\u0633\u0631\u0641\u0635\u0644\u200c\u0647\u0627",
"Heading 1": "\u0633\u0631\u0641\u0635\u0644\u200c 1",
"Heading 2": "\u0633\u0631\u0641\u0635\u0644 2",
"Heading 3": "\u0633\u0631\u0641\u0635\u0644 3",
"Heading 4": "\u0633\u0631\u0641\u0635\u0644 4",
"Heading 5": "\u0633\u0631\u0641\u0635\u0644 5",
"Heading 6": "\u0633\u0631\u0641\u0635\u0644 6",
"Preformatted": "\u0627\u0632 \u067e\u06cc\u0634 \u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc\u200c\u0634\u062f\u0647",
"Div": "\u0628\u062e\u0634",
"Pre": "\u067e\u06cc\u0634",
"Code": "\u06a9\u062f",
"Paragraph": "\u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641",
"Blockquote": "\u0646\u0642\u0644 \u0642\u0648\u0644 \u0628\u0644\u0648\u06a9\u06cc",
"Inline": "\u0647\u0645\u200c\u0631\u0627\u0633\u062a\u0627",
"Blocks": "\u0628\u0644\u0648\u06a9\u200c\u0647\u0627",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0627\u0645\u06a9\u0627\u0646 \u0686\u0633\u0628\u0627\u0646\u062f\u0646\u060c \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u062e\u0627\u0644\u0635 \u062a\u0646\u0638\u06cc\u0645 \u06af\u0634\u062a\u0647. \u062a\u0627 \u0632\u0645\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0648\u0631\u062f \u0686\u0633\u0628\u0627\u0646\u062f\u0646\u060c \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062a\u0646 \u062e\u0627\u0644\u0635 \u062e\u0648\u0627\u0647\u062f \u0686\u0633\u0628\u06cc\u062f.",
"Fonts": "\u0641\u0648\u0646\u062a\u200c\u200c\u0647\u0627",
"Font Sizes": "\u0627\u0646\u062f\u0627\u0632\u0647\u0654 \u0641\u0648\u0646\u062a",
"Class": "\u0637\u0628\u0642\u0647",
"Browse for an image": "\u06af\u0634\u062a\u0646 \u0628\u0631\u0627\u06cc \u0639\u06a9\u0633 \u0645\u0648\u0631\u062f \u0646\u0638\u0631",
"OR": "\u06cc\u0627",
"Drop an image here": "\u062a\u0635\u0648\u06cc\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0647\u0627 \u06a9\u0646\u06cc\u062f",
"Upload": "\u0622\u067e\u0644\u0648\u062f",
"Block": "\u0628\u0644\u0648\u06a9",
"Align": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc",
"Default": "\u067e\u06cc\u0634 \u0641\u0631\u0636",
"Circle": "\u062f\u0627\u06cc\u0631\u0647",
"Disc": "\u062f\u0627\u06cc\u0631\u0647\u0621 \u062a\u0648\u067e\u0631",
"Square": "\u0686\u0647\u0627\u0631 \u06af\u0648\u0634",
"Lower Alpha": "\u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9",
"Lower Greek": "\u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9 \u06cc\u0648\u0646\u0627\u0646\u06cc",
"Lower Roman": "\u0627\u0631\u0642\u0627\u0645 \u06a9\u0648\u0686\u06a9 \u0631\u0648\u0645\u06cc",
"Upper Alpha": "\u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af",
"Upper Roman": "\u0627\u0631\u0642\u0627\u0645 \u0628\u0632\u0631\u06af \u0631\u0648\u0645\u06cc",
"Anchor...": "\u0642\u0644\u0627\u0628...",
"Name": "\u0646\u0627\u0645",
"Id": "\u0634\u0646\u0627\u0633\u0647",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u0634\u0646\u0627\u0633\u0647 \u0645\u06cc \u0628\u0627\u06cc\u0633\u062a \u0628\u0627 \u06cc\u06a9 \u062d\u0631\u0641 \u0627\u0644\u0641\u0628\u0627 \u0622\u063a\u0627\u0632 \u0648 \u0628\u0627 \u062f\u0646\u0628\u0627\u0644\u0647 \u0627\u06cc \u0627\u0632 \u062d\u0631\u0648\u0641\u060c \u0627\u0639\u062f\u0627\u062f\u060c \u0639\u0644\u0627\u0645\u062a \u0645\u0650\u0646\u0647\u0627\u060c \u0646\u0642\u0637\u0647\u060c \u062f\u0648 \u0646\u0642\u0637\u0647 \u06cc\u0627 \u062e\u0637 \u062a\u06cc\u0631\u0647 \u0627\u062f\u0627\u0645\u0647 \u06cc\u0627\u0628\u062f.",
"You have unsaved changes are you sure you want to navigate away?": "\u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0634\u0645\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647 \u0627\u0646\u062f\u060c \u0622\u06cc\u0627 \u062c\u0647\u062a \u062e\u0631\u0648\u062c \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f\u061f",
"Restore last draft": "\u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0622\u062e\u0631\u06cc\u0646 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633",
"Special character...": "\u062d\u0631\u0648\u0641 \u062e\u0627\u0635",
"Source code": "\u0645\u062a\u0646 \u06a9\u062f \u0645\u0646\u0628\u0639",
"Insert\/Edit code sample": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0646\u0645\u0648\u0646\u0647\u0621 \u06a9\u062f",
"Language": "\u0632\u0628\u0627\u0646",
"Code sample...": "\u0646\u0645\u0648\u0646\u0647 \u06a9\u062f...",
"Color Picker": "\u0627\u0646\u062a\u062e\u0627\u0628\u200c\u06a9\u0646\u0646\u062f\u0647 \u0631\u0646\u06af",
"R": "\u0642\u0631\u0645\u0632",
"G": "\u0633\u0628\u0632",
"B": "\u0622\u0628\u06cc",
"Left to right": "\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",
"Right to left": "\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",
"Emoticons...": "\u0635\u0648\u0631\u062a\u06a9\u200c\u0647\u0627...",
"Metadata and Document Properties": "\u0641\u0631\u0627\u062f\u0627\u062f\u0647 \u0648 \u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0646\u062f",
"Title": "\u0639\u0646\u0648\u0627\u0646",
"Keywords": "\u0648\u0627\u0698\u06af\u0627\u0646 \u06a9\u0644\u06cc\u062f\u06cc",
"Description": "\u062a\u0648\u0636\u06cc\u062d",
"Robots": "\u0631\u0648\u0628\u0627\u062a\u0647\u0627",
"Author": "\u0645\u0648\u0644\u0641",
"Encoding": "\u06a9\u062f\u06af\u0632\u0627\u0631\u06cc \u0645\u062a\u0646",
"Fullscreen": "\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",
"Action": "\u0639\u0645\u0644",
"Shortcut": "\u0645\u06cc\u0627\u0646\u0628\u064f\u0631",
"Help": "\u0631\u0627\u0647\u0646\u0645\u0627",
"Address": "\u0646\u0634\u0627\u0646\u06cc",
"Focus to menubar": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0646\u0648\u0627\u0631 \u0645\u0646\u0648",
"Focus to toolbar": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631",
"Focus to element path": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0645\u0633\u06cc\u0631 \u0627\u0650\u0644\u0650\u0645\u0627\u0646",
"Focus to contextual toolbar": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 \u0645\u062a\u0646\u06cc",
"Insert link (if link plugin activated)": "\u062f\u0631\u062c \u067e\u06cc\u0648\u0646\u062f (\u0627\u06af\u0631 \u0627\u0641\u0632\u0648\u0646\u0647\u0621 \u067e\u06cc\u0648\u0646\u062f \u0641\u0639\u0627\u0644 \u0634\u062f)",
"Save (if save plugin activated)": "\u062b\u0628\u062a\u00a0(\u0627\u06af\u0631 \u0627\u0641\u0632\u0648\u0646\u0647\u0621 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0641\u0639\u0627\u0644 \u0634\u062f)",
"Find (if searchreplace plugin activated)": "\u06cc\u0627\u0641\u062a\u0646 (\u0627\u06af\u0631 \u0627\u0641\u0632\u0648\u0646\u0647\u0621 \u062c\u0633\u062a\u062c\u0648\/\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0641\u0639\u0627\u0644 \u0634\u062f)",
"Plugins installed ({0}):": "\u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u0635\u0628 \u0634\u062f\u0646\u062f ({0}):",
"Premium plugins:": "\u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627\u06cc \u0645\u062e\u0635\u0648\u0635:",
"Learn more...": "\u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631...",
"You are using {0}": "\u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 {0} \u0645\u06cc \u0628\u0627\u0634\u06cc\u062f",
"Plugins": "\u0627\u0641\u0632\u0648\u0646\u0647 \u0647\u0627",
"Handy Shortcuts": "\u0645\u06cc\u0627\u0646\u0628\u064f\u0631\u0647\u0627\u06cc \u0633\u0648\u062f\u0645\u0646\u062f",
"Horizontal line": "\u062e\u0637 \u0627\u0641\u0642\u06cc",
"Insert\/edit image": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631",
"Image description": "\u062a\u0648\u0635\u06cc\u0641 \u062a\u0635\u0648\u06cc\u0631",
"Source": "\u0645\u0646\u0628\u0639",
"Dimensions": "\u0627\u0628\u0639\u0627\u062f",
"Constrain proportions": "\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",
"General": "\u0639\u0645\u0648\u0645\u06cc",
"Advanced": "\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
"Style": "\u0633\u0628\u06a9",
"Vertical space": "\u0641\u0636\u0627\u06cc \u0639\u0645\u0648\u062f\u06cc",
"Horizontal space": "\u0641\u0636\u0627\u06cc \u0627\u0641\u0642\u06cc",
"Border": "\u0644\u0628\u0647",
"Insert image": "\u062f\u0631\u062c \u062a\u0635\u0648\u06cc\u0631",
"Image...": "\u062a\u0635\u0648\u06cc\u0631...",
"Image list": "\u0641\u0647\u0631\u0633\u062a \u062a\u0635\u0648\u06cc\u0631\u06cc",
"Rotate counterclockwise": "\u062f\u064e\u0648\u064e\u0631\u0627\u0646 \u067e\u0627\u062f \u0633\u0627\u0639\u062a \u06af\u0631\u062f",
"Rotate clockwise": "\u062f\u064e\u0648\u064e\u0631\u0627\u0646 \u0633\u0627\u0639\u062a \u06af\u0631\u062f",
"Flip vertically": "\u0642\u0631\u06cc\u0646\u0647 \u0639\u0645\u0648\u062f\u06cc",
"Flip horizontally": "\u0642\u0631\u06cc\u0646\u0647 \u0627\u0641\u0642\u06cc",
"Edit image": "\u0648\u06cc\u0631\u0627\u0633\u062a \u062a\u0635\u0648\u06cc\u0631",
"Image options": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062a\u0635\u0648\u06cc\u0631",
"Zoom in": "\u0628\u0632\u0631\u06af \u0646\u0645\u0627\u06cc\u06cc",
"Zoom out": "\u06a9\u0648\u0686\u06a9 \u0646\u0645\u0627\u06cc\u06cc",
"Crop": "\u0628\u064f\u0631\u0634 \u062f\u064f\u0648\u0631",
"Resize": "\u062a\u063a\u06cc\u06cc\u0631 \u0627\u0646\u062f\u0627\u0632\u0647",
"Orientation": "\u06af\u0650\u0631\u0627",
"Brightness": "\u0631\u0648\u0634\u0646\u0627\u06cc\u06cc",
"Sharpen": "\u0628\u0647\u0628\u0648\u062f \u0644\u0628\u0647",
"Contrast": "\u062a\u0636\u0627\u062f \u0631\u0646\u06af",
"Color levels": "\u0633\u0637\u0648\u062d \u0631\u0646\u06af",
"Gamma": "\u06af\u0627\u0645\u0627",
"Invert": "\u0628\u0631\u06af\u0634\u062a \u0631\u0646\u06af",
"Apply": "\u0627\u0650\u0639\u0645\u0627\u0644",
"Back": "\u0628\u0627\u0632\u06af\u0634\u062a",
"Insert date\/time": "\u062f\u0631\u062c \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646",
"Date\/time": "\u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646",
"Insert\/Edit Link": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u067e\u06cc\u0648\u0646\u062f",
"Insert\/edit link": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u067e\u06cc\u0648\u0646\u062f",
"Text to display": "\u0645\u062a\u0646 \u0646\u0645\u0627\u06cc\u0634\u06cc",
"Url": "\u0622\u062f\u0631\u0633",
"Open link in...": "\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f \u062f\u0631...",
"Current window": "\u067e\u0646\u062c\u0631\u0647 \u062c\u0627\u0631\u06cc",
"None": "\u0647\u06cc\u0686",
"New window": "\u067e\u0646\u062c\u0631\u0647\u0621 \u062c\u062f\u06cc\u062f",
"Remove link": "\u062d\u0630\u0641 \u067e\u06cc\u0648\u0646\u062f",
"Anchors": "\u0642\u0644\u0627\u0628 \u0647\u0627",
"Link...": "\u067e\u06cc\u0648\u0646\u062f...",
"Paste or type a link": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u06cc\u0627 \u062a\u0627\u06cc\u067e \u067e\u06cc\u0648\u0646\u062f",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0622\u062f\u0631\u0633 \u0648\u0631\u0648\u062f\u06cc \u06cc\u06a9 \u0631\u0627\u06cc\u0627\u0646\u0627\u0645\u0647 \u0628\u0627\u0634\u062f. \u0622\u06cc\u0627 \u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u0627\u0641\u0632\u0648\u0631\u062f\u0646 \u067e\u06cc\u0634\u0648\u0646\u062f mailto: \u062f\u0627\u0631\u06cc\u062f\u061f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0622\u062f\u0631\u0633 \u0648\u0631\u0648\u062f\u06cc \u0627\u0631\u062c\u0627\u0639\u06cc \u0628\u0647 \u062e\u0627\u0631\u062c \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0645\u06cc \u0628\u0627\u0634\u062f. \u0622\u06cc\u0627 \u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u0627\u0641\u0632\u0648\u0631\u062f\u0646 \u067e\u06cc\u0634\u0648\u0646\u062f http:\/\/ \u062f\u0627\u0631\u06cc\u062f\u061f",
"Link list": "\u0641\u0647\u0631\u0633\u062a \u067e\u06cc\u0648\u0646\u062f",
"Insert video": "\u062f\u0631\u062c \u0648\u06cc\u062f\u06cc\u0648",
"Insert\/edit video": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648\u06cc\u062f\u06cc\u0648",
"Insert\/edit media": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0633\u0627\u0646\u0647",
"Alternative source": "\u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646",
"Alternative source URL": "\u0646\u0634\u0627\u0646\u06cc \u0648\u0628 \u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646",
"Media poster (Image URL)": "\u067e\u0648\u0633\u062a\u0631 \u0631\u0633\u0627\u0646\u0647 (\u0646\u0634\u0627\u0646\u06cc \u0648\u0628 \u062a\u0635\u0648\u06cc\u0631)",
"Paste your embed code below:": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u06a9\u062f \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0632\u06cc\u0631: ",
"Embed": "\u062c\u0627\u0633\u0627\u0632\u06cc",
"Media...": "\u0631\u0633\u0627\u0646\u0647...",
"Nonbreaking space": "\u0641\u0636\u0627\u06cc \u062e\u0627\u0644\u06cc \u0628\u0631\u0634 \u0646\u0627\u067e\u0630\u06cc\u0631",
"Page break": "\u0628\u0631\u0634 \u0635\u0641\u062d\u0647",
"Paste as text": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646",
"Preview": "\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",
"Print...": "\u0686\u0627\u067e...",
"Save": "\u0630\u062e\u06cc\u0631\u0647",
"Find": "\u062c\u0633\u062a\u062c\u0648",
"Replace with": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0627",
"Replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc",
"Replace all": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0647\u0645\u0647",
"Previous": "\u0642\u0628\u0644\u06cc",
"Next": "\u0628\u0639\u062f\u06cc",
"Find and replace...": "\u06cc\u0627\u0641\u062a\u0646 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646...",
"Could not find the specified string.": "\u0631\u0634\u062a\u0647\u0621 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u06cc\u0627\u0641\u062a \u0646\u06af\u0631\u062f\u06cc\u062f.",
"Match case": "\u062a\u0637\u0627\u0628\u0642 \u062d\u0631\u0648\u0641",
"Find whole words only": "\u06cc\u0627\u0641\u062a\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u06a9\u0644 \u0648\u0627\u0698\u0647",
"Spell check": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627",
"Ignore": "\u0628\u06cc \u062e\u06cc\u0627\u0644",
"Ignore all": "\u0628\u06cc \u062e\u06cc\u0627\u0644 \u0647\u0645\u0647",
"Finish": "\u0627\u062a\u0645\u0627\u0645",
"Add to Dictionary": "\u0628\u0647 \u0648\u0627\u0698\u0647 \u0646\u0627\u0645\u0647 \u0628\u06cc \u0627\u0641\u0632\u0627",
"Insert table": "\u062f\u0631\u062c \u062c\u062f\u0648\u0644",
"Table properties": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062c\u062f\u0648\u0644",
"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
"Cell": "\u0633\u0644\u0648\u0644",
"Row": "\u0633\u0637\u0631",
"Column": "\u0633\u062a\u0648\u0646",
"Cell properties": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0644\u0648\u0644",
"Merge cells": "\u067e\u06cc\u0648\u0646\u062f \u0633\u0644\u0648\u0644 \u0647\u0627",
"Split cell": "\u062c\u062f\u0627 \u0633\u0627\u0632\u06cc \u0633\u0644\u0648\u0644",
"Insert row before": "\u062f\u0631\u062c \u0633\u0637\u0631 \u062f\u0631 \u0628\u0627\u0644\u0627",
"Insert row after": "\u062f\u0631\u062c \u0633\u0637\u0631 \u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646",
"Delete row": "\u062d\u0630\u0641 \u0633\u0637\u0631",
"Row properties": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0637\u0631",
"Cut row": "\u0628\u0631\u0634 \u0633\u0637\u0631",
"Copy row": "\u0631\u0648\u0646\u0648\u06cc\u0633\u06cc \u0633\u0637\u0631",
"Paste row before": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631 \u062f\u0631 \u0628\u0627\u0644\u0627",
"Paste row after": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631 \u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646",
"Insert column before": "\u062f\u0631\u062c \u0633\u062a\u0648\u0646 \u0642\u0628\u0644",
"Insert column after": "\u062f\u0631\u062c \u0633\u062a\u0648\u0646 \u0628\u0639\u062f",
"Delete column": "\u062d\u0630\u0641 \u0633\u062a\u0648\u0646",
"Cols": "\u0633\u062a\u0648\u0646 \u0647\u0627",
"Rows": "\u0633\u0637\u0631 \u0647\u0627",
"Width": "\u0639\u0631\u0636",
"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
"Cell spacing": "\u0641\u0627\u0635\u0644\u0647 \u0645\u06cc\u0627\u0646 \u0633\u0644\u0648\u0644\u06cc",
"Cell padding": "\u062d\u0627\u0634\u06cc\u0647 \u062f\u0631\u0648\u0646 \u0633\u0644\u0648\u0644\u06cc",
"Show caption": "\u0646\u0645\u0627\u06cc\u0634 \u0639\u0646\u0648\u0627\u0646",
"Left": "\u0686\u067e",
"Center": "\u0645\u06cc\u0627\u0646\u0647",
"Right": "\u0631\u0627\u0633\u062a",
"Cell type": "\u0646\u0648\u0639 \u0633\u0644\u0648\u0644",
"Scope": "\u062d\u0648\u0632\u0647",
"Alignment": "\u0647\u0645 \u062a\u0631\u0627\u0632\u06cc",
"H Align": "\u062a\u0631\u0627\u0632 \u0627\u0641\u0642\u06cc",
"V Align": "\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc",
"Top": "\u0628\u0627\u0644\u0627",
"Middle": "\u0645\u06cc\u0627\u0646\u0647",
"Bottom": "\u067e\u0627\u06cc\u06cc\u0646",
"Header cell": "\u0633\u0644\u0648\u0644 \u0633\u0631 \u0633\u062a\u0648\u0646",
"Row group": "\u06af\u0631\u0648\u0647 \u0633\u0637\u0631\u06cc",
"Column group": "\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646\u06cc",
"Row type": "\u0646\u0648\u0639 \u0633\u0637\u0631",
"Header": "\u0633\u0631 \u0622\u0645\u062f",
"Body": "\u0628\u062f\u0646\u0647",
"Footer": "\u067e\u0627 \u0646\u0648\u0634\u062a",
"Border color": "\u0631\u0646\u06af \u0644\u0628\u0647",
"Insert template...": "\u062f\u0631\u062c \u0627\u0644\u06af\u0648...",
"Templates": "\u0627\u0644\u06af\u0648\u0647\u0627",
"Template": "\u0627\u0644\u06af\u0648",
"Text color": "\u0631\u0646\u06af \u0645\u062a\u0646",
"Background color": "\u0631\u0646\u06af \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647",
"Custom...": "\u062f\u0644\u062e\u0648\u0627\u0647...",
"Custom color": "\u0631\u0646\u06af \u062f\u0644\u062e\u0648\u0627\u0647",
"No color": "\u0628\u062f\u0648\u0646 \u0631\u0646\u06af",
"Remove color": "\u062d\u0630\u0641 \u0631\u0646\u06af",
"Table of Contents": "\u0641\u0647\u0631\u0633\u062a \u0639\u0646\u0627\u0648\u06cc\u0646",
"Show blocks": "\u0646\u0645\u0627\u06cc\u0634 \u0628\u0644\u0648\u06a9 \u0647\u0627",
"Show invisible characters": "\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u06cc\u0633\u0647 \u0647\u0627\u06cc \u0646\u0627\u067e\u06cc\u062f\u0627",
"Word count": "\u062a\u0639\u062f\u0627\u062f \u0648\u0627\u0698\u0647\u200c\u0647\u0627",
"Count": "\u0634\u0645\u0627\u0631\u0634",
"Document": "\u0627\u0633\u0646\u0627\u062f",
"Selection": "\u0627\u0646\u062a\u062e\u0627\u0628",
"Words": "\u06a9\u0644\u0645\u0627\u062a",
"Words: {0}": "\u0648\u0627\u0698\u0647 \u0647\u0627: {0}",
"{0} words": "{0} \u0648\u0627\u0698\u0647",
"File": "\u067e\u0631\u0648\u0646\u062f\u0647",
"Edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
"Insert": "\u062f\u0631\u062c",
"View": "\u0646\u0645\u0627\u06cc\u0634",
"Format": "\u0642\u0627\u0644\u0628",
"Table": "\u062c\u062f\u0648\u0644",
"Tools": "\u0627\u0628\u0632\u0627\u0631\u0647\u0627",
"Powered by {0}": "\u062a\u0648\u0627\u0646 \u06af\u0631\u0641\u062a\u0647 \u0627\u0632 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0646\u0627\u062d\u06cc\u0647 \u0645\u062a\u0646 \u063a\u0646\u06cc.\n\u062c\u0647\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u0646\u0648 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628\u06cc ALT + F9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f.\n\u062c\u0647\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628\u06cc ALT + F10 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f.\n\u062c\u0647\u062a \u0645\u0634\u0627\u0647\u062f\u0647 \u0631\u0627\u0647\u0646\u0645\u0627 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628\u06cc ALT + 0 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f.",
"Image title": "\u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631",
"Border width": "\u0639\u0631\u0636 \u062d\u0627\u0634\u06cc\u0647",
"Border style": "\u0633\u0628\u06a9 \u062d\u0627\u0634\u06cc\u0647",
"Error": "\u062e\u0637\u0627",
"Warn": "\u0647\u0634\u062f\u0627\u0631",
"Valid": "\u0645\u0639\u062a\u0628\u0631",
"To open the popup, press Shift+Enter": "\u062c\u0647\u062a \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc Shift + Enter \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
"Rich Text Area. Press ALT-0 for help.": "\u0646\u0627\u062d\u06cc\u0647 \u0645\u062a\u0646 \u063a\u0646\u06cc. \u062c\u0647\u062a \u0645\u0634\u0627\u0647\u062f\u0647\u0654 \u0631\u0627\u0647\u0646\u0645\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT + 0 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
"System Font": "\u0641\u0648\u0646\u062a \u0633\u06cc\u0633\u062a\u0645\u06cc",
"Failed to upload image: {0}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631: {0}",
"Failed to load plugin: {0} from url {1}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u0641\u0632\u0648\u0646\u0647: {0} \u0627\u0632 \u0646\u0634\u0627\u0646\u06cc \u0648\u0628 {1}",
"Failed to load plugin url: {0}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u0627\u0646\u06cc \u0648\u0628 \u0627\u0641\u0632\u0648\u0646\u0647: {0}",
"Failed to initialize plugin: {0}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0641\u0632\u0648\u0646\u0647: {0}",
"example": "\u0645\u062b\u0627\u0644",
"Search": "\u062c\u0633\u062a\u062c\u0648",
"All": "\u0647\u0645\u0647",
"Currency": "\u0627\u0631\u0632",
"Text": "\u0645\u062a\u0646",
"Quotations": "\u0646\u0642\u0644\u200c\u0642\u0648\u0644\u200c\u0647\u0627",
"Mathematical": "\u0631\u06cc\u0627\u0636\u06cc",
"Extended Latin": "\u0644\u0627\u062a\u06cc\u0646 \u06af\u0633\u062a\u0631\u062f\u0647",
"Symbols": "\u0646\u0645\u0627\u062f\u0647\u0627",
"Arrows": "\u067e\u06cc\u06a9\u0627\u0646\u200c\u0647\u0627",
"User Defined": "\u0628\u0647 \u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631",
"dollar sign": "\u0646\u0645\u0627\u062f \u062f\u0644\u0627\u0631",
"currency sign": "\u0646\u0645\u0627\u062f \u0627\u0631\u0632",
"euro-currency sign": "\u0646\u0645\u0627\u062f \u06cc\u0648\u0631\u0648",
"colon sign": "\u0646\u0645\u0627\u062f \u062f\u0648\u0646\u0642\u0637\u0647",
"cruzeiro sign": "\u0646\u0645\u0627\u062f \u06a9\u0631\u0648\u0632\u06cc\u0631\u0648",
"french franc sign": "\u0646\u0645\u0627\u062f \u0641\u0631\u0627\u0646\u06a9 \u0641\u0631\u0627\u0646\u0633\u0647",
"lira sign": "\u0646\u0645\u0627\u062f \u0644\u06cc\u0631\u0647",
"mill sign": "\u0646\u0645\u0627\u062f \u0645\u06cc\u0644",
"naira sign": "\u0646\u0645\u0627\u062f \u0646\u0627\u06cc\u0631\u0627",
"peseta sign": "\u0646\u0645\u0627\u062f \u067e\u0632\u062a\u0627",
"rupee sign": "\u0646\u0645\u0627\u062f \u0631\u0648\u067e\u06cc\u0647",
"won sign": "\u0646\u0645\u0627\u062f \u0648\u0648\u0646",
"new sheqel sign": "\u0646\u0645\u0627\u062f \u0634\u06a9\u0644 \u062c\u062f\u06cc\u062f",
"dong sign": "\u0646\u0645\u0627\u062f \u062f\u0627\u0646\u06af",
"kip sign": "\u0646\u0645\u0627\u062f \u06a9\u06cc\u067e",
"tugrik sign": "\u0646\u0645\u0627\u062f \u062a\u0648\u06af\u0631\u0648\u06af",
"drachma sign": "\u0646\u0645\u0627\u062f \u062f\u0631\u0627\u062e\u0645\u0627",
"german penny symbol": "\u0646\u0645\u0627\u062f \u067e\u0646\u06cc \u0622\u0644\u0645\u0627\u0646\u06cc",
"peso sign": "\u0646\u0645\u0627\u062f \u067e\u0632\u0648",
"guarani sign": "\u0646\u0645\u0627\u062f \u06af\u0648\u0627\u0631\u0627\u0646\u06cc",
"austral sign": "\u0646\u0645\u0627\u062f \u0622\u0633\u062a\u0631\u0627\u0644",
"hryvnia sign": "\u0646\u0645\u0627\u062f \u06af\u0631\u06cc\u0648\u0646\u0627",
"cedi sign": "\u0646\u0645\u0627\u062f \u0633\u062f\u06cc",
"livre tournois sign": "\u0646\u0645\u0627\u062f \u0644\u06cc\u0648\u0631\u0647 \u062a\u0648\u0631\u0646\u0648\u0627",
"spesmilo sign": "\u0646\u0645\u0627\u062f \u0627\u0633\u067e\u0633\u0645\u06cc\u0644\u0648",
"tenge sign": "\u0646\u0645\u0627\u062f \u062a\u0646\u06af\u0647",
"indian rupee sign": "\u0646\u0645\u0627\u062f \u0631\u0648\u067e\u06cc\u0647 \u0647\u0646\u062f\u06cc",
"turkish lira sign": "\u0646\u0645\u0627\u062f \u0644\u06cc\u0631\u0647 \u062a\u0631\u06a9\u06cc",
"nordic mark sign": "\u0646\u0645\u0627\u062f \u0645\u0627\u0631\u06a9 \u0646\u0631\u0648\u0698",
"manat sign": "\u0646\u0645\u0627\u062f \u0645\u0646\u0627\u062a",
"ruble sign": "\u0646\u0645\u0627\u062f \u0631\u0648\u0628\u0644",
"yen character": "\u0646\u0648\u06cc\u0633\u0647 \u06cc\u0646",
"yuan character": "\u0646\u0648\u06cc\u0633\u0647 \u06cc\u0648\u0627\u0646",
"yuan character, in hong kong and taiwan": "\u0646\u0648\u06cc\u0633\u0647 \u06cc\u0648\u0627\u0646\u060c \u062f\u0631 \u0647\u0646\u06af\u200c\u06a9\u0646\u06af \u0648 \u062a\u0627\u06cc\u0648\u0627\u0646",
"yen\/yuan character variant one": "\u0646\u0648\u06cc\u0633\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06cc\u0646\/\u06cc\u0648\u0627\u0646",
"Loading emoticons...": "\u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u06a9\u0644\u06a9\u200c\u0647\u0627...",
"Could not load emoticons": "\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0646\u062f",
"People": "\u0627\u0641\u0631\u0627\u062f",
"Animals and Nature": "\u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u0648 \u0637\u0628\u06cc\u0639\u062a",
"Food and Drink": "\u063a\u0630\u0627 \u0648 \u0646\u0648\u0634\u06cc\u062f\u0646\u06cc",
"Activity": "\u0641\u0639\u0627\u0644\u06cc\u062a",
"Travel and Places": "\u0633\u0641\u0631 \u0648 \u0627\u0645\u0627\u06a9\u0646",
"Objects": "\u0627\u0634\u06cc\u0627",
"Flags": "\u067e\u0631\u0686\u0645\u200c\u0647\u0627",
"Characters": "\u0646\u0648\u06cc\u0633\u0647\u200c\u0647\u0627",
"Characters (no spaces)": "\u0646\u0648\u06cc\u0633\u0647 \u0647\u0627 (\u0628\u062f\u0648\u0646 \u0641\u0627\u0635\u0644\u0647)",
"{0} characters": "{0} \u062d\u0631\u0641",
"Error: Form submit field collision.": "\u062e\u0637\u0627: \u062a\u062f\u0627\u062e\u0644 \u062f\u0631 \u062b\u0628\u062a \u0641\u0631\u0645.",
"Error: No form element found.": "\u062e\u0637\u0627: \u0647\u06cc\u0686 \u0627\u0644\u0645\u0627\u0646 \u0641\u0631\u0645\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f.",
"Update": "\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc",
"Color swatch": "\u0646\u0645\u0648\u0646\u0647 \u0631\u0646\u06af",
"Turquoise": "\u0641\u06cc\u0631\u0648\u0632\u0647\u200c\u0627\u06cc",
"Green": "\u0633\u0628\u0632",
"Blue": "\u0622\u0628\u06cc",
"Purple": "\u0628\u0646\u0641\u0634",
"Navy Blue": "\u0633\u0631\u0645\u0647\u200c\u0627\u06cc",
"Dark Turquoise": "\u0641\u06cc\u0631\u0648\u0632\u0647\u200c\u0627\u06cc \u062a\u06cc\u0631\u0647",
"Dark Green": "\u0633\u0628\u0632 \u062a\u06cc\u0631\u0647",
"Medium Blue": "\u0622\u0628\u06cc \u0633\u06cc\u0631",
"Medium Purple": "\u0622\u0628\u06cc \u0628\u0646\u0641\u0634",
"Midnight Blue": "\u0622\u0628\u06cc \u0646\u0641\u062a\u06cc",
"Yellow": "\u0632\u0631\u062f",
"Orange": "\u0646\u0627\u0631\u0646\u062c\u06cc",
"Red": "\u0642\u0631\u0645\u0632",
"Light Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc \u0631\u0648\u0634\u0646",
"Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc",
"Dark Yellow": "\u0632\u0631\u062f \u062a\u06cc\u0631\u0647",
"Dark Orange": "\u0646\u0627\u0631\u0646\u062c\u06cc \u062a\u06cc\u0631\u0647",
"Dark Red": "\u0642\u0631\u0645\u0632 \u062a\u06cc\u0631\u0647",
"Medium Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc \u0646\u06cc\u0645\u0647\u200c\u0631\u0648\u0634\u0646",
"Dark Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc \u062a\u06cc\u0631\u0647",
"Light Green": "\u0633\u0628\u0632 \u0631\u0648\u0634\u0646",
"Light Yellow": "\u0632\u0631\u062f \u0631\u0648\u0634\u0646",
"Light Red": "\u0642\u0631\u0645\u0632 \u0631\u0648\u0634\u0646",
"Light Purple": "\u0628\u0646\u0641\u0634 \u0631\u0648\u0634\u0646",
"Light Blue": "\u0622\u0628\u06cc \u0631\u0648\u0634\u0646",
"Dark Purple": "\u0628\u0646\u0641\u0634 \u062a\u06cc\u0631\u0647",
"Dark Blue": "\u0622\u0628\u06cc \u062a\u06cc\u0631\u0647",
"Black": "\u0633\u06cc\u0627\u0647",
"White": "\u0633\u0641\u06cc\u062f",
"Switch to or from fullscreen mode": "\u062a\u063a\u06cc\u06cc\u0631 \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645\u200c\u0635\u0641\u062d\u0647 \u06cc\u0627 \u0628\u0647 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645\u200c\u0635\u0641\u062d\u0647",
"Open help dialog": "\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u062f\u0631 \u0631\u0627\u0647\u0646\u0645\u0627",
"history": "\u062a\u0627\u0631\u06cc\u062e\u0686\u0647",
"styles": "\u0633\u0628\u06a9\u200c\u0647\u0627",
"formatting": "\u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc",
"alignment": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc",
"indentation": "\u062a\u0648\u0631\u0641\u062a\u06af\u06cc",
"permanent pen": "\u0642\u0644\u0645 \u062f\u0627\u0626\u0645\u06cc",
"comments": "\u0646\u0638\u0631\u0627\u062a",
"Format Painter": "\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0646\u0642\u0627\u0634",
"Insert\/edit iframe": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 iframe",
"Capitalization": "\u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af",
"lowercase": "\u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9",
"UPPERCASE": "\u062d\u0631\u0648\u0641 \u0628\u0631\u062c\u0633\u062a\u0647",
"Title Case": "\u0639\u0646\u0648\u0627\u0646 \u0628\u0646\u062f\u06cc",
"Permanent Pen Properties": "\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0642\u0644\u0645",
"Permanent pen properties...": "\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0642\u0644\u0645...",
"Font": "\u0642\u0644\u0645",
"Size": "\u0627\u0646\u062f\u0627\u0632\u0647",
"More...": "\u0628\u06cc\u0634\u062a\u0631...",
"Spellcheck Language": "\u0632\u0628\u0627\u0646 \u0628\u0631\u0631\u0633\u06cc \u063a\u0644\u0637 \u0627\u0645\u0644\u0627\u06cc\u06cc",
"Select...": "\u0627\u0646\u062a\u062e\u0627\u0628...",
"Preferences": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u06af\u0632\u06cc\u062f\u0647",
"Yes": "\u0628\u0644\u0647",
"No": "\u062e\u06cc\u0631",
"Keyboard Navigation": "\u067e\u06cc\u0645\u0627\u06cc\u0634 \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f",
"Version": "\u0646\u0633\u062e\u0647",
"Anchor": "\u0642\u0644\u0627\u0628",
"Special character": "\u0646\u0648\u06cc\u0633\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635",
"Code sample": "\u0646\u0645\u0648\u0646\u0647 \u06a9\u064f\u062f",
"Color": "\u0631\u0646\u06af",
"Emoticons": "\u0635\u0648\u0631\u062a\u06a9 \u0647\u0627",
"Document properties": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0646\u062f",
"Image": "\u062a\u0635\u0648\u06cc\u0631",
"Insert link": "\u062f\u0631\u062c \u067e\u06cc\u0648\u0646\u062f",
"Target": "\u0645\u0642\u0635\u062f",
"Link": "\u067e\u06cc\u0648\u0646\u062f",
"Poster": "\u067e\u0648\u0633\u062a\u0631",
"Media": "\u0631\u0633\u0627\u0646\u0647",
"Print": "\u0686\u0627\u067e",
"Prev": "\u0642\u0628\u0644\u06cc",
"Find and replace": "\u062c\u0633\u062a\u062c\u0648 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc",
"Whole words": "\u062a\u0645\u0627\u0645 \u0648\u0627\u0698\u06af\u0627\u0646",
"Spellcheck": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u0621",
"Caption": "\u0639\u0646\u0648\u0627\u0646",
"Insert template": "\u062f\u0631\u062c \u0627\u0644\u06af\u0648",
"_dir": "rtl"
});js/tinymce/langs/it_IT.js000064400000033312151727150310011306 0ustar00tinymce.addI18n('it_IT',{
"Redo": "Ripristina",
"Undo": "Annulla",
"Cut": "Taglia",
"Copy": "Copia",
"Paste": "Incolla",
"Select all": "Seleziona tutto",
"New document": "Nuovo documento",
"Ok": "OK",
"Cancel": "Annulla",
"Visual aids": "Aiuti visivi",
"Bold": "Grassetto",
"Italic": "Corsivo",
"Underline": "Sottolineato",
"Strikethrough": "Barrato",
"Superscript": "Apice",
"Subscript": "Pedice",
"Clear formatting": "Cancella la formattazione",
"Align left": "Allinea a sinistra",
"Align center": "Allinea al centro",
"Align right": "Allinea a destra",
"Justify": "Giustifica",
"Bullet list": "Elenco puntato",
"Numbered list": "Elenco numerato",
"Decrease indent": "Riduci rientro",
"Increase indent": "Aumenta rientro",
"Close": "Chiudi",
"Formats": "Formati",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il browser non supporta l'accesso diretto alla cartella degli appunti. Usare i tasti di scelta rapida Ctrl+X\/C\/V.",
"Headers": "Intestazioni",
"Header 1": "Intestazione 1",
"Header 2": "Intestazione 2",
"Header 3": "Intestazione 3",
"Header 4": "Intestazione 4",
"Header 5": "Intestazione 5",
"Header 6": "Intestazione 6",
"Headings": "Titoli",
"Heading 1": "Titolo 1",
"Heading 2": "Titolo 2",
"Heading 3": "Titolo 3",
"Heading 4": "Titolo 4",
"Heading 5": "Titolo 5",
"Heading 6": "Titolo 6",
"Preformatted": "Preformattato",
"Div": "Div",
"Pre": "Pre",
"Code": "Codice",
"Paragraph": "Paragrafo",
"Blockquote": "Blockquote",
"Inline": "In linea",
"Blocks": "Blocchi",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti saranno incollati come testo normale se non viene disattivata questa opzione.",
"Fonts": "Caratteri",
"Font Sizes": "Dimensioni caratteri",
"Class": "Classe",
"Browse for an image": "Cerca un'immagine",
"OR": "OPPURE",
"Drop an image here": "Rilasciare un'immagine qui",
"Upload": "Carica",
"Block": "Blocco",
"Align": "Allinea",
"Default": "Predefinito",
"Circle": "Circolo",
"Disc": "Disco",
"Square": "Quadrato",
"Lower Alpha": "Alfabetico minuscolo",
"Lower Greek": "Greco minuscolo",
"Lower Roman": "Romano minuscolo",
"Upper Alpha": "Alfabetico maiuscolo",
"Upper Roman": "Romano maiuscolo",
"Anchor...": "Ancoraggio...",
"Name": "Nome",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'ID dovrebbe cominciare con una lettera, seguita unicamente da lettere, numeri, linee, punti, due punti o caratteri di sottolineatura.",
"You have unsaved changes are you sure you want to navigate away?": "Ci sono modifiche non salvate, si \u00e8 sicuro di volere uscire?",
"Restore last draft": "Ripristina l'ultima bozza",
"Special characters...": "Caratteri speciali...",
"Source code": "Codice sorgente",
"Insert\/Edit code sample": "Inserisci\/modifica esempio di codice",
"Language": "Lingua",
"Code sample...": "Esempio di codice...",
"Color Picker": "Selezione colori",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Da sinistra a destra",
"Right to left": "Da destra a sinistra",
"Emoticons...": "Emoticon...",
"Metadata and Document Properties": "Metadata e propriet\u00e0 del documento",
"Title": "Titolo",
"Keywords": "Parole chiave",
"Description": "Descrizione",
"Robots": "Robot",
"Author": "Autore",
"Encoding": "Codifica",
"Fullscreen": "A tutto schermo",
"Action": "Azione",
"Shortcut": "Collegamento",
"Help": "Guida",
"Address": "Indirizzo",
"Focus to menubar": "Imposta stato attivo per la barra dei menu",
"Focus to toolbar": "Imposta stato attivo per la barra degli strumenti",
"Focus to element path": "Imposta stato attivo per il percorso dell'elemento",
"Focus to contextual toolbar": "Imposta stato attivo per la barra degli strumenti contestuale",
"Insert link (if link plugin activated)": "Inserisci un collegamento (se \u00e8 attivato l'apposito plugin)",
"Save (if save plugin activated)": "Salva (se \u00e8 attivato l'apposito plugin)",
"Find (if searchreplace plugin activated)": "Trova (se \u00e8 attivato l'apposito plugin)",
"Plugins installed ({0}):": "Plugin installati ({0}):",
"Premium plugins:": "Plugin Premium:",
"Learn more...": "Maggiori informazioni...",
"You are using {0}": "Si sta utilizzando {0}",
"Plugins": "Plugin",
"Handy Shortcuts": "Scorciatoie utili",
"Horizontal line": "Linea orizzontale",
"Insert\/edit image": "Inserisci\/modifica immagine",
"Image description": "Descrizione immagine",
"Source": "Fonte",
"Dimensions": "Dimensioni",
"Constrain proportions": "Mantieni proporzioni",
"General": "Generali",
"Advanced": "Avanzate",
"Style": "Stile",
"Vertical space": "Spazio verticale",
"Horizontal space": "Spazio orizzontale",
"Border": "Bordo",
"Insert image": "Inserisci immagine",
"Image...": "Immagine...",
"Image list": "Elenco immagini",
"Rotate counterclockwise": "Ruota in senso antiorario",
"Rotate clockwise": "Ruota in senso orario",
"Flip vertically": "Rifletti verticalmente",
"Flip horizontally": "Rifletti orizzontalmente",
"Edit image": "Modifica immagine",
"Image options": "Opzioni immagine",
"Zoom in": "Ingrandisci",
"Zoom out": "Zoom indietro",
"Crop": "Ritaglia",
"Resize": "Ridimensiona",
"Orientation": "Orientamento",
"Brightness": "Luminosit\u00e0",
"Sharpen": "Nitidezza",
"Contrast": "Contrasto",
"Color levels": "Livelli di colore",
"Gamma": "Gamma",
"Invert": "Inverti",
"Apply": "Applica",
"Back": "Indietro",
"Insert date\/time": "Inserisci data\/ora",
"Date\/time": "Data\/ora",
"Insert\/Edit Link": "Inserisci\/modifica collegamento",
"Insert\/edit link": "Inserisci\/modifica collegamento",
"Text to display": "Testo da visualizzare",
"Url": "URL",
"Open link in...": "Apri collegamento in...",
"Current window": "Finestra corrente",
"None": "Nessuno",
"New window": "Nuova finestra",
"Remove link": "Rimuovi collegamento",
"Anchors": "Ancoraggi",
"Link...": "Collegamento...",
"Paste or type a link": "Incolla o digita un collegamento",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL inserito sembra essere un indirizzo email. Si vuole aggiungere il necessario prefisso mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL inserito sembra essere un collegamento esterno. Si vuole aggiungere il necessario prefisso http:\/\/?",
"Link list": "Elenco collegamenti",
"Insert video": "Inserisci video",
"Insert\/edit video": "Inserisci\/modifica video",
"Insert\/edit media": "Inserisci\/modifica oggetti multimediali",
"Alternative source": "Sorgente alternativa",
"Alternative source URL": "URL sorgente alternativa",
"Media poster (Image URL)": "Poster dell'oggetto multimediale (URL dell'immagine)",
"Paste your embed code below:": "Incolla il codice d'incorporamento di seguito:",
"Embed": "Incorpora",
"Media...": "Oggetto multimediale...",
"Nonbreaking space": "Spazio indivisibile",
"Page break": "Interruzione di pagina",
"Paste as text": "Incolla senza formattazioni",
"Preview": "Anteprima",
"Print...": "Stampa...",
"Save": "Salva",
"Find": "Trova",
"Replace with": "Sostituisci con",
"Replace": "Sostituisci",
"Replace all": "Sostituisci tutto",
"Previous": "Indietro",
"Next": "Avanti",
"Find and replace...": "Trova e sostituisci...",
"Could not find the specified string.": "Impossibile trovare la stringa specificata.",
"Match case": "Maiuscole\/minuscole",
"Find whole words only": "Trova solo parole intere",
"Spell check": "Controllo ortografia",
"Ignore": "Ignora",
"Ignore all": "Ignora tutto",
"Finish": "Fine",
"Add to Dictionary": "Aggiungi al dizionario",
"Insert table": "Inserisci tabella",
"Table properties": "Propriet\u00e0 della tabella",
"Delete table": "Elimina tabella",
"Cell": "Cella",
"Row": "Riga",
"Column": "Colonna",
"Cell properties": "Propriet\u00e0 cella",
"Merge cells": "Unisci le celle",
"Split cell": "Dividi la cella",
"Insert row before": "Inserisci riga prima",
"Insert row after": "Inserisci riga dopo",
"Delete row": "Elimina riga",
"Row properties": "Propriet\u00e0 della riga",
"Cut row": "Taglia riga",
"Copy row": "Copia riga",
"Paste row before": "Incolla riga prima",
"Paste row after": "Incolla riga dopo",
"Insert column before": "Inserisci colonna prima",
"Insert column after": "Inserisci colonna dopo",
"Delete column": "Elimina colonna",
"Cols": "Colonne",
"Rows": "Righe",
"Width": "Larghezza",
"Height": "Altezza",
"Cell spacing": "Spaziatura tra celle",
"Cell padding": "Spaziatura interna celle",
"Show caption": "Mostra didascalia",
"Left": "Sinistra",
"Center": "Centro",
"Right": "Destra",
"Cell type": "Tipo di cella",
"Scope": "Ambito",
"Alignment": "Allineamento",
"H Align": "Allineamento H",
"V Align": "Allineamento V",
"Top": "In alto",
"Middle": "Centrato",
"Bottom": "In basso",
"Header cell": "Cella d'intestazione",
"Row group": "Gruppo di righe",
"Column group": "Gruppo di colonne",
"Row type": "Tipo di riga",
"Header": "Intestazione",
"Body": "Corpo",
"Footer": "Pi\u00e8 di pagina",
"Border color": "Colore del bordo",
"Insert template...": "Inserisci modello...",
"Templates": "Modelli",
"Template": "Modello",
"Text color": "Colore testo",
"Background color": "Colore dello sfondo",
"Custom...": "Personalizzato...",
"Custom color": "Colore personalizzato",
"No color": "Nessun colore",
"Remove color": "Rimuovi colore",
"Table of Contents": "Sommario",
"Show blocks": "Mostra blocchi",
"Show invisible characters": "Mostra caratteri invisibili",
"Word count": "Conteggio parole",
"Words: {0}": "Parole: {0}",
"{0} words": "{0} parole",
"File": "File",
"Edit": "Modifica",
"Insert": "Inserisci",
"View": "Visualizza",
"Format": "Formato",
"Table": "Tabella",
"Tools": "Strumenti",
"Powered by {0}": "Con tecnologia {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Area di testo RTF. Premere ALT-F9 per il menu. Premere ALT-F10 per la barra degli strumenti. Premere ALT-0 per la guida.",
"Image title": "Titolo immagine",
"Border width": "Larghezza del bordo",
"Border style": "Stile del bordo",
"Error": "Errore",
"Warn": "Avviso",
"Valid": "Valido",
"To open the popup, press Shift+Enter": "Per aprire il popup, premere Shift+Invio",
"Rich Text Area. Press ALT-0 for help.": "Area di testo RTF. Premere ALT-0 per la guida.",
"System Font": "Carattere di sistema",
"Failed to upload image: {0}": "Caricamento immagine fallito: {0}",
"Failed to load plugin: {0} from url {1}": "Caricamento plugin fallito: {0} dall'URL {1}",
"Failed to load plugin url: {0}": "Caricamento URL plugin fallito: {0}",
"Failed to initialize plugin: {0}": "Inizializzazione plugin fallita: {0}",
"example": "esempio",
"Search": "Cerca",
"All": "Tutto",
"Currency": "Valuta",
"Text": "Testo",
"Quotations": "Citazioni",
"Mathematical": "Caratteri matematici",
"Extended Latin": "Latino esteso",
"Symbols": "Simboli",
"Arrows": "Frecce",
"User Defined": "Definito dall'utente",
"dollar sign": "simbolo del dollaro",
"currency sign": "simbolo di valuta",
"euro-currency sign": "simbolo dell'euro",
"colon sign": "simbolo del col\u00f3n",
"cruzeiro sign": "simbolo del cruzeiro",
"french franc sign": "simbolo del franco francese",
"lira sign": "simbolo della lira",
"mill sign": "simbolo del mill",
"naira sign": "simbolo della naira",
"peseta sign": "simbolo della peseta",
"rupee sign": "simbolo della rup\u00eca",
"won sign": "simbolo del won",
"new sheqel sign": "simbolo del nuovo shekel",
"dong sign": "simbolo del dong",
"kip sign": "simbolo del kip",
"tugrik sign": "simbolo del tugrik",
"drachma sign": "simbolo della dracma",
"german penny symbol": "simbolo del pfennig tedesco",
"peso sign": "simbolo del peso",
"guarani sign": "simbolo del guaran\u00ec",
"austral sign": "simbolo dell'austral",
"hryvnia sign": "simbolo della hryvnia",
"cedi sign": "simbolo del cedi",
"livre tournois sign": "simbolo della lira di Tours",
"spesmilo sign": "simbolo dello spesmilo",
"tenge sign": "simbolo del tenge",
"indian rupee sign": "simbolo della rup\u00eca indiana",
"turkish lira sign": "simbolo della lira turca",
"nordic mark sign": "simbolo del marco nordico",
"manat sign": "simbolo del manat",
"ruble sign": "simbolo del rublo",
"yen character": "simbolo dello yen",
"yuan character": "simbolo dello yuan",
"yuan character, in hong kong and taiwan": "simbolo dello yuan, Hong Kong e Taiwan",
"yen\/yuan character variant one": "simbolo yen\/yuan variante uno",
"Loading emoticons...": "Caricamento emoticon in corso",
"Could not load emoticons": "Impossibile caricare emoticon",
"People": "Persone",
"Animals and Nature": "Animali e natura",
"Food and Drink": "Cibi e bevande",
"Activity": "Attivit\u00e0",
"Travel and Places": "Viaggi e luoghi",
"Objects": "Oggetti",
"Flags": "Bandiere",
"Characters": "Caratteri",
"Characters (no spaces)": "Caratteri (senza spazi)",
"Error: Form submit field collision.": "Errore: Conflitto di campi nel modulo inviato.",
"Error: No form element found.": "Errore: Nessun elemento di modulo trovato.",
"Update": "Aggiorna",
"Color swatch": "Campione di colore",
"Turquoise": "Turchese",
"Green": "Verde",
"Blue": "Blu",
"Purple": "Viola",
"Navy Blue": "Blu scuro",
"Dark Turquoise": "Turchese scuro",
"Dark Green": "Verde scuro",
"Medium Blue": "Blu medio",
"Medium Purple": "Viola medio",
"Midnight Blue": "Blu notte",
"Yellow": "Giallo",
"Orange": "Arancio",
"Red": "Rosso",
"Light Gray": "Grigio chiaro",
"Gray": "Grigio",
"Dark Yellow": "Giallo scuro",
"Dark Orange": "Arancio scuro",
"Dark Red": "Rosso scuro",
"Medium Gray": "Grigio medio",
"Dark Gray": "Grigio scuro",
"Black": "Nero",
"White": "Bianco",
"Switch to or from fullscreen mode": "Attiva\/disattiva la modalit\u00e0 schermo intero",
"Open help dialog": "Apri la finestra di aiuto",
"history": "cronologia",
"styles": "stili",
"formatting": "formattazione",
"alignment": "allineamento",
"indentation": "indentazione",
"permanent pen": "penna indelebile",
"comments": "commenti"
});js/tinymce/langs/pt_PT.js000064400000044423151727150310011331 0ustar00tinymce.addI18n('pt_PT',{
"Redo": "Refazer",
"Undo": "Anular",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Colar",
"Select all": "Selecionar tudo",
"New document": "Novo documento",
"Ok": "Ok",
"Cancel": "Cancelar",
"Visual aids": "Ajuda visual",
"Bold": "Negrito",
"Italic": "It\u00e1lico",
"Underline": "Sublinhado",
"Strikethrough": "Rasurado",
"Superscript": "Superior \u00e0 linha",
"Subscript": "Inferior \u00e0 linha",
"Clear formatting": "Limpar formata\u00e7\u00e3o",
"Align left": "Alinhar \u00e0 esquerda",
"Align center": "Alinhar ao centro",
"Align right": "Alinhar \u00e0 direita",
"Justify": "Justificar",
"Bullet list": "Lista com marcas",
"Numbered list": "Lista numerada",
"Decrease indent": "Diminuir avan\u00e7o",
"Increase indent": "Aumentar avan\u00e7o",
"Close": "Fechar",
"Formats": "Formatos",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor, use os atalhos Ctrl+X\/C\/V do seu teclado.",
"Headers": "Cabe\u00e7alhos",
"Header 1": "Cabe\u00e7alho 1",
"Header 2": "Cabe\u00e7alho 2",
"Header 3": "Cabe\u00e7alho 3",
"Header 4": "Cabe\u00e7alho 4",
"Header 5": "Cabe\u00e7alho 5",
"Header 6": "Cabe\u00e7alho 6",
"Headings": "T\u00edtulos",
"Heading 1": "T\u00edtulo 1",
"Heading 2": "T\u00edtulo 2",
"Heading 3": "T\u00edtulo 3",
"Heading 4": "T\u00edtulo 4",
"Heading 5": "T\u00edtulo 5",
"Heading 6": "T\u00edtulo 6",
"Preformatted": "Pr\u00e9-formatado",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f3digo",
"Paragraph": "Par\u00e1grafo",
"Blockquote": "Blockquote",
"Inline": "Inline",
"Blocks": "Blocos",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 em modo de texto simples. O conte\u00fado ser\u00e1 colado como texto simples at\u00e9 desativar esta op\u00e7\u00e3o.",
"Fonts": "Tipos de letra",
"Font Sizes": "Tamanhos dos tipos de letra",
"Class": "Classe",
"Browse for an image": "Procurar uma imagem",
"OR": "OU",
"Drop an image here": "Largar aqui uma imagem",
"Upload": "Carregar",
"Block": "Bloco",
"Align": "Alinhar",
"Default": "Padr\u00e3o",
"Circle": "C\u00edrculo",
"Disc": "Disco",
"Square": "Quadrado",
"Lower Alpha": "a. b. c. ...",
"Lower Greek": "\\u03b1. \\u03b2. \\u03b3. ...",
"Lower Roman": "i. ii. iii. ...",
"Upper Alpha": "A. B. C. ...",
"Upper Roman": "I. II. III. ...",
"Anchor...": "\u00c2ncora...",
"Name": "Nome",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "O ID deve come\u00e7ar com uma letra, seguido apenas por letras, n\u00fameros, pontos, dois pontos, tra\u00e7os ou sobtra\u00e7os.",
"You have unsaved changes are you sure you want to navigate away?": "Existem altera\u00e7\u00f5es que ainda n\u00e3o foram guardadas. Tem a certeza que pretende sair?",
"Restore last draft": "Restaurar o \u00faltimo rascunho",
"Special character...": "Car\u00e1ter especial...",
"Source code": "C\u00f3digo fonte",
"Insert\/Edit code sample": "Inserir\/editar amostra de c\u00f3digo",
"Language": "Idioma",
"Code sample...": "Amostra de c\u00f3digo...",
"Color Picker": "Seletor de cores",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Da esquerda para a direita",
"Right to left": "Da direita para a esquerda",
"Emoticons": "Emo\u00e7\u00f5es",
"Emoticons...": "\u00cdcones expressivos...",
"Metadata and Document Properties": "Metadados e propriedades do documento",
"Title": "T\u00edtulo",
"Keywords": "Palavras-chave",
"Description": "Descri\u00e7\u00e3o",
"Robots": "Rob\u00f4s",
"Author": "Autor",
"Encoding": "Codifica\u00e7\u00e3o",
"Fullscreen": "Ecr\u00e3 completo",
"Action": "A\u00e7\u00e3o",
"Shortcut": "Atalho",
"Help": "Ajuda",
"Address": "Endere\u00e7o",
"Focus to menubar": "Foco na barra de menu",
"Focus to toolbar": "Foco na barra de ferramentas",
"Focus to element path": "Foco no caminho do elemento",
"Focus to contextual toolbar": "Foco na barra de contexto",
"Insert link (if link plugin activated)": "Inserir hiperliga\u00e7\u00e3o (se o plugin de liga\u00e7\u00f5es estiver ativado)",
"Save (if save plugin activated)": "Guardar (se o plugin de guardar estiver ativado)",
"Find (if searchreplace plugin activated)": "Pesquisar (se o plugin pesquisar e substituir estiver ativado)",
"Plugins installed ({0}):": "Plugins instalados ({0}):",
"Premium plugins:": "Plugins comerciais:",
"Learn more...": "Saiba mais...",
"You are using {0}": "Est\u00e1 a usar {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Atalhos \u00fateis",
"Horizontal line": "Linha horizontal",
"Insert\/edit image": "Inserir\/editar imagem",
"Alternative description": "Descri\u00e7\u00e3o alternativa",
"Accessibility": "Acessibilidade",
"Image is decorative": "Imagem \u00e9 decorativa",
"Source": "Localiza\u00e7\u00e3o",
"Dimensions": "Dimens\u00f5es",
"Constrain proportions": "Manter propor\u00e7\u00f5es",
"General": "Geral",
"Advanced": "Avan\u00e7ado",
"Style": "Estilo",
"Vertical space": "Espa\u00e7amento vertical",
"Horizontal space": "Espa\u00e7amento horizontal",
"Border": "Contorno",
"Insert image": "Inserir imagem",
"Image...": "Imagem...",
"Image list": "Lista de imagens",
"Rotate counterclockwise": "Rota\u00e7\u00e3o anti-hor\u00e1ria",
"Rotate clockwise": "Rota\u00e7\u00e3o hor\u00e1ria",
"Flip vertically": "Inverter verticalmente",
"Flip horizontally": "Inverter horizontalmente",
"Edit image": "Editar imagem",
"Image options": "Op\u00e7\u00f5es de imagem",
"Zoom in": "Mais zoom",
"Zoom out": "Menos zoom",
"Crop": "Recortar",
"Resize": "Redimensionar",
"Orientation": "Orienta\u00e7\u00e3o",
"Brightness": "Brilho",
"Sharpen": "Mais nitidez",
"Contrast": "Contraste",
"Color levels": "N\u00edveis de cor",
"Gamma": "Gama",
"Invert": "Inverter",
"Apply": "Aplicar",
"Back": "Voltar",
"Insert date\/time": "Inserir data\/hora",
"Date\/time": "Data\/hora",
"Insert\/edit link": "Inserir\/editar liga\u00e7\u00e3o",
"Text to display": "Texto a exibir",
"Url": "URL",
"Open link in...": "Abrir liga\u00e7\u00e3o em...",
"Current window": "Janela atual",
"None": "Nenhum",
"New window": "Nova janela",
"Open link": "Abrir liga\u00e7\u00e3o",
"Remove link": "Remover liga\u00e7\u00e3o",
"Anchors": "\u00c2ncora",
"Link...": "Liga\u00e7\u00e3o...",
"Paste or type a link": "Copiar ou escrever uma hiperliga\u00e7\u00e3o",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "O URL que indicou parece ser um endere\u00e7o de email. Quer adicionar o prefixo mailto: tal como necess\u00e1rio?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "O URL que indicou parece ser um endere\u00e7o web. Quer adicionar o prefixo http:\/\/ tal como necess\u00e1rio?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "O URL que introduziu parece ser uma liga\u00e7\u00e3o externa. Deseja adicionar-lhe o prefixo https:\/\/ ?",
"Link list": "Lista de liga\u00e7\u00f5es",
"Insert video": "Inserir v\u00eddeo",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Insert\/edit media": "Inserir\/editar media",
"Alternative source": "Localiza\u00e7\u00e3o alternativa",
"Alternative source URL": "URL da origem alternativa",
"Media poster (Image URL)": "Publicador de media (URL da imagem)",
"Paste your embed code below:": "Colar c\u00f3digo para embeber:",
"Embed": "Embeber",
"Media...": "Media...",
"Nonbreaking space": "Espa\u00e7o n\u00e3o quebr\u00e1vel",
"Page break": "Quebra de p\u00e1gina",
"Paste as text": "Colar como texto",
"Preview": "Pr\u00e9-visualizar",
"Print...": "Imprimir...",
"Save": "Guardar",
"Find": "Pesquisar",
"Replace with": "Substituir por",
"Replace": "Substituir",
"Replace all": "Substituir tudo",
"Previous": "Anterior",
"Next": "Pr\u00f3ximo",
"Find and Replace": "Pesquisar e substituir",
"Find and replace...": "Localizar e substituir...",
"Could not find the specified string.": "N\u00e3o foi poss\u00edvel localizar o termo especificado.",
"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas",
"Find whole words only": "Localizar apenas palavras inteiras",
"Find in selection": "Pesquisar na selec\u00e7\u00e3o",
"Spellcheck": "Corretor ortogr\u00e1fico",
"Spellcheck Language": "Idioma de verifica\u00e7\u00e3o lingu\u00edstica",
"No misspellings found.": "N\u00e3o foram encontrados erros ortogr\u00e1ficos.",
"Ignore": "Ignorar",
"Ignore all": "Ignorar tudo",
"Finish": "Concluir",
"Add to Dictionary": "Adicionar ao dicion\u00e1rio",
"Insert table": "Inserir tabela",
"Table properties": "Propriedades da tabela",
"Delete table": "Eliminar tabela",
"Cell": "C\u00e9lula",
"Row": "Linha",
"Column": "Coluna",
"Cell properties": "Propriedades da c\u00e9lula",
"Merge cells": "Unir c\u00e9lulas",
"Split cell": "Dividir c\u00e9lula",
"Insert row before": "Inserir linha antes",
"Insert row after": "Inserir linha depois",
"Delete row": "Eliminar linha",
"Row properties": "Propriedades da linha",
"Cut row": "Cortar linha",
"Copy row": "Copiar linha",
"Paste row before": "Colar linha antes",
"Paste row after": "Colar linha depois",
"Insert column before": "Inserir coluna antes",
"Insert column after": "Inserir coluna depois",
"Delete column": "Eliminar coluna",
"Cols": "Colunas",
"Rows": "Linhas",
"Width": "Largura",
"Height": "Altura",
"Cell spacing": "Espa\u00e7amento entre c\u00e9lulas",
"Cell padding": "Espa\u00e7amento interno da c\u00e9lula",
"Caption": "Legenda",
"Show caption": "Mostrar legenda",
"Left": "Esquerda",
"Center": "Centro",
"Right": "Direita",
"Cell type": "Tipo de c\u00e9lula",
"Scope": "Escopo",
"Alignment": "Alinhamento",
"H Align": "Alinhamento H",
"V Align": "Alinhamento V",
"Top": "Superior",
"Middle": "Meio",
"Bottom": "Inferior",
"Header cell": "C\u00e9lula de cabe\u00e7alho",
"Row group": "Agrupar linha",
"Column group": "Agrupar coluna",
"Row type": "Tipo de linha",
"Header": "Cabe\u00e7alho",
"Body": "Corpo",
"Footer": "Rodap\u00e9",
"Border color": "Cor de contorno",
"Insert template...": "Inserir modelo...",
"Templates": "Modelos",
"Template": "Tema",
"Text color": "Cor do texto",
"Background color": "Cor de fundo",
"Custom...": "Personalizada...",
"Custom color": "Cor personalizada",
"No color": "Sem cor",
"Remove color": "Remover cor",
"Table of Contents": "\u00cdndice",
"Show blocks": "Mostrar blocos",
"Show invisible characters": "Mostrar caracteres invis\u00edveis",
"Word count": "Contagem de palavras",
"Count": "Contagem",
"Document": "Documento",
"Selection": "Sele\u00e7\u00e3o",
"Words": "Palavras",
"Words: {0}": "Palavras: {0}",
"{0} words": "{0} palavras",
"File": "Ficheiro",
"Edit": "Editar",
"Insert": "Inserir",
"View": "Ver",
"Format": "Formatar",
"Table": "Tabela",
"Tools": "Ferramentas",
"Powered by {0}": "Criado em {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Caixa de texto formatado. Pressione ALT-F9 para exibir o menu. Pressione ALT-F10 para exibir a barra de ferramentas. Pressione ALT-0 para exibir a ajuda",
"Image title": "T\u00edtulo da imagem",
"Border width": "Largura do limite",
"Border style": "Estilo do limite",
"Error": "Erro",
"Warn": "Aviso",
"Valid": "V\u00e1lido",
"To open the popup, press Shift+Enter": "Para abrir o pop-up, prima Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u00c1rea de texto formatado. Prima ALT-0 para exibir a ajuda.",
"System Font": "Tipo de letra do sistema",
"Failed to upload image: {0}": "Falha ao carregar imagem: {0}",
"Failed to load plugin: {0} from url {1}": "Falha ao carregar plugin: {0} do URL {1}",
"Failed to load plugin url: {0}": "Falha ao carregar o URL do plugin: {0}",
"Failed to initialize plugin: {0}": "Falha ao inicializar plugin: {0}",
"example": "exemplo",
"Search": "Pesquisar",
"All": "Tudo",
"Currency": "Moeda",
"Text": "Texto",
"Quotations": "Aspas",
"Mathematical": "Matem\u00e1tico",
"Extended Latin": "Carateres latinos estendidos",
"Symbols": "S\u00edmbolos",
"Arrows": "Setas",
"User Defined": "Definido pelo utilizador",
"dollar sign": "cifr\u00e3o",
"currency sign": "sinal monet\u00e1rio",
"euro-currency sign": "sinal monet\u00e1rio do euro",
"colon sign": "sinal de dois pontos",
"cruzeiro sign": "sinal de cruzeiro",
"french franc sign": "sinal de franco franc\u00eas",
"lira sign": "sinal de lira",
"mill sign": "sinal de por mil",
"naira sign": "sinal de naira",
"peseta sign": "sinal de peseta",
"rupee sign": "sinal de r\u00fapia",
"won sign": "sinal de won",
"new sheqel sign": "sinal de novo sheqel",
"dong sign": "sinal de dong",
"kip sign": "sinal kip",
"tugrik sign": "sinal tugrik",
"drachma sign": "sinal drachma",
"german penny symbol": "sinal de penny alem\u00e3o",
"peso sign": "sinal de peso",
"guarani sign": "sinal de guarani",
"austral sign": "sinal de austral",
"hryvnia sign": "sinal hryvnia",
"cedi sign": "sinal de cedi",
"livre tournois sign": "sinal de libra de tours",
"spesmilo sign": "sinal de spesmilo",
"tenge sign": "sinal de tengue",
"indian rupee sign": "sinal de rupia indiana",
"turkish lira sign": "sinal de lira turca",
"nordic mark sign": "sinal de marca n\u00f3rdica",
"manat sign": "sinal manat",
"ruble sign": "sinal de rublo",
"yen character": "sinal de iene",
"yuan character": "sinal de iuane",
"yuan character, in hong kong and taiwan": "sinal de iuane, em Hong Kong e Taiwan",
"yen\/yuan character variant one": "variante um de sinal de iene\/iuane",
"Loading emoticons...": "A carregar \u00edcones expressivos...",
"Could not load emoticons": "N\u00e3o foi poss\u00edvel carregar \u00edcones expressivos",
"People": "Pessoas",
"Animals and Nature": "Animais e natureza",
"Food and Drink": "Comida e bebida",
"Activity": "Atividade",
"Travel and Places": "Viagens e lugares",
"Objects": "Objetos",
"Flags": "Bandeiras",
"Characters": "Carateres",
"Characters (no spaces)": "Carateres (sem espa\u00e7os)",
"{0} characters": "{0} carateres",
"Error: Form submit field collision.": "Erro: conflito no campo de submiss\u00e3o de formul\u00e1rio.",
"Error: No form element found.": "Erro: nenhum elemento de formul\u00e1rio encontrado.",
"Update": "Atualizar",
"Color swatch": "Cole\u00e7\u00e3o de cores",
"Turquoise": "Turquesa",
"Green": "Verde",
"Blue": "Azul",
"Purple": "P\u00farpura",
"Navy Blue": "Azul-atl\u00e2ntico",
"Dark Turquoise": "Turquesa escuro",
"Dark Green": "Verde escuro",
"Medium Blue": "Azul interm\u00e9dio",
"Medium Purple": "P\u00farpura interm\u00e9dio",
"Midnight Blue": "Azul muito escuro",
"Yellow": "Amarelo",
"Orange": "Laranja",
"Red": "Vermelho",
"Light Gray": "Cinzento claro",
"Gray": "Cinzento",
"Dark Yellow": "Amarelo escuro",
"Dark Orange": "Laranja escuro",
"Dark Red": "Vermelho escuro",
"Medium Gray": "Cinzento m\u00e9dio",
"Dark Gray": "Cinzento escuro",
"Light Green": "Verde claro",
"Light Yellow": "Amarelo claro",
"Light Red": "Vermelho claro",
"Light Purple": "P\u00farpura claro",
"Light Blue": "Azul claro",
"Dark Purple": "P\u00farpura escuro",
"Dark Blue": "Azul escuro",
"Black": "Preto",
"White": "Branco",
"Switch to or from fullscreen mode": "Entrar ou sair do modo de ecr\u00e3 inteiro",
"Open help dialog": "Abrir caixa de di\u00e1logo Ajuda",
"history": "hist\u00f3rico",
"styles": "estilos",
"formatting": "formata\u00e7\u00e3o",
"alignment": "alinhamento",
"indentation": "avan\u00e7o",
"Font": "Tipo de letra",
"Size": "Tamanho",
"More...": "Mais...",
"Select...": "Selecionar...",
"Preferences": "Prefer\u00eancias",
"Yes": "Sim",
"No": "N\u00e3o",
"Keyboard Navigation": "Navega\u00e7\u00e3o com teclado",
"Version": "Vers\u00e3o",
"Code view": "Vista do c\u00f3digo-fonte",
"Open popup menu for split buttons": "Abrir o menu popup para bot\u00f5es divididos",
"List Properties": "Propriedades da lista",
"List properties...": "Propriedades da lista\u2026",
"Start list at number": "Come\u00e7ar a lista pelo n\u00famero",
"Line height": "Altura da linha",
"comments": "coment\u00e1rios",
"Format Painter": "Pincel de formata\u00e7\u00e3o",
"Insert\/edit iframe": "Inserir\/editar iframe",
"Capitalization": "Capitaliza\u00e7\u00e3o",
"lowercase": "min\u00fasculas",
"UPPERCASE": "MAI\u00daSCULAS",
"Title Case": "Iniciais mai\u00fasculas",
"permanent pen": "caneta permanente",
"Permanent Pen Properties": "Propriedades da Caneta Permanente",
"Permanent pen properties...": "Propriedades da caneta permanente...",
"case change": "mudan\u00e7a de capitaliza\u00e7\u00e3o",
"page embed": "incorporar p\u00e1gina",
"Advanced sort...": "Ordena\u00e7\u00e3o avan\u00e7ada\u2026",
"Advanced Sort": "Ordena\u00e7\u00e3o avan\u00e7ada",
"Sort table by column ascending": "Ordenar tabela por coluna ascendente",
"Sort table by column descending": "Ordenar tabela por coluna descendente",
"Sort": "Ordenar",
"Order": "Ordem",
"Sort by": "Ordenar por",
"Ascending": "Ascendente",
"Descending": "Descendente",
"Column {0}": "Coluna {0}",
"Row {0}": "Linha {0}",
"Spellcheck...": "Verifica\u00e7\u00e3o ortogr\u00e1fica...",
"Misspelled word": "Palavra mal escrita",
"Suggestions": "Sugest\u00f5es",
"Change": "Alterar",
"Finding word suggestions": "Encontrar sugest\u00f5es de palavras",
"Success": "Sucesso",
"Repair": "Reparar",
"Issue {0} of {1}": "Problema {0} de {1}",
"Images must be marked as decorative or have an alternative text description": "As imagens devem ser marcadas como decorativas ou ter uma descri\u00e7\u00e3o textual alternativa",
"Images must have an alternative text description. Decorative images are not allowed.": "As imagens devem ter uma descri\u00e7\u00e3o textual alternativa. N\u00e3o s\u00e3o permitidas imagens meramente decorativas.",
"Or provide alternative text:": "Ou forne\u00e7a um texto alternativo:",
"Make image decorative:": "Marque a imagem como decorativa:",
"ID attribute must be unique": "O atributo ID tem de ser \u00fanico",
"Make ID unique": "Tornar o ID \u00fanico",
"Keep this ID and remove all others": "Mantenha este ID e remova todos os outros",
"Remove this ID": "Remover este ID",
"Remove all IDs": "Remover todos os IDs",
"Checklist": "Lista de verifica\u00e7\u00e3o",
"Anchor": "\u00c2ncora",
"Special character": "Car\u00e1cter especial",
"Code sample": "Amostra de c\u00f3digo",
"Color": "Cor",
"Document properties": "Propriedades do documento",
"Image description": "Descri\u00e7\u00e3o da imagem",
"Image": "Imagem",
"Insert link": "Inserir liga\u00e7\u00e3o",
"Target": "Alvo",
"Link": "Liga\u00e7\u00e3o",
"Poster": "Autor",
"Media": "Media",
"Print": "Imprimir",
"Prev": "Anterior",
"Find and replace": "Pesquisar e substituir",
"Whole words": "Palavras completas",
"Insert template": "Inserir modelo"
});js/tinymce/langs/zh_TW.js000064400000044576151727150310011347 0ustar00tinymce.addI18n('zh_TW',{
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u92b7",
"Cut": "\u526a\u4e0b",
"Copy": "\u8907\u88fd",
"Paste": "\u8cbc\u4e0a",
"Select all": "\u5168\u9078",
"New document": "\u65b0\u6587\u4ef6",
"Ok": "\u78ba\u5b9a",
"Cancel": "\u53d6\u6d88",
"Visual aids": "\u5c0f\u5e6b\u624b",
"Bold": "\u7c97\u9ad4",
"Italic": "\u659c\u9ad4",
"Underline": "\u4e0b\u5283\u7dda",
"Strikethrough": "\u522a\u9664\u7dda",
"Superscript": "\u4e0a\u6a19",
"Subscript": "\u4e0b\u6a19",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Align left": "\u5de6\u908a\u5c0d\u9f4a",
"Align center": "\u4e2d\u9593\u5c0d\u9f4a",
"Align right": "\u53f3\u908a\u5c0d\u9f4a",
"Justify": "\u5de6\u53f3\u5c0d\u9f4a",
"Bullet list": "\u9805\u76ee\u6e05\u55ae",
"Numbered list": "\u6578\u5b57\u6e05\u55ae",
"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392",
"Increase indent": "\u589e\u52a0\u7e2e\u6392",
"Close": "\u95dc\u9589",
"Formats": "\u683c\u5f0f",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002",
"Headers": "\u6a19\u984c",
"Header 1": "\u6a19\u984c 1",
"Header 2": "\u6a19\u984c 2",
"Header 3": "\u6a19\u984c 3",
"Header 4": "\u6a19\u984c 4",
"Header 5": "\u6a19\u984c 5",
"Header 6": "\u6a19\u984c 6",
"Headings": "\u6a19\u984c",
"Heading 1": "\u6a19\u984c1",
"Heading 2": "\u6a19\u984c2",
"Heading 3": "\u6a19\u984c3",
"Heading 4": "\u6a19\u984c4",
"Heading 5": "\u6a19\u984c5",
"Heading 6": "\u6a19\u984c6",
"Preformatted": "\u9810\u5148\u683c\u5f0f\u5316\u7684",
"Div": "Div",
"Pre": "Pre",
"Code": "\u4ee3\u78bc",
"Paragraph": "\u6bb5\u843d",
"Blockquote": "\u5f15\u6587\u5340\u584a",
"Inline": "\u5167\u806f",
"Blocks": "\u57fa\u584a",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002",
"Fonts": "\u5b57\u578b",
"Font Sizes": "\u5b57\u578b\u5927\u5c0f",
"Class": "\u985e\u578b",
"Browse for an image": "\u5f9e\u5716\u7247\u4e2d\u700f\u89bd",
"OR": "\u6216",
"Drop an image here": "\u62d6\u66f3\u5716\u7247\u81f3\u6b64",
"Upload": "\u4e0a\u50b3",
"Block": "\u5340\u584a",
"Align": "\u5c0d\u9f4a",
"Default": "\u9810\u8a2d",
"Circle": "\u7a7a\u5fc3\u5713",
"Disc": "\u5be6\u5fc3\u5713",
"Square": "\u6b63\u65b9\u5f62",
"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd",
"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57",
"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57",
"Anchor...": "\u9328\u9ede...",
"Name": "\u540d\u7a31",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id\u61c9\u4ee5\u5b57\u6bcd\u958b\u982d\uff0c\u5f8c\u9762\u63a5\u8457\u5b57\u6bcd\uff0c\u6578\u5b57\uff0c\u7834\u6298\u865f\uff0c\u9ede\u6578\uff0c\u5192\u865f\u6216\u4e0b\u5283\u7dda\u3002",
"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f",
"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f",
"Special character...": "\u7279\u6b8a\u5b57\u5143......",
"Source code": "\u539f\u59cb\u78bc",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7de8\u8f2f \u7a0b\u5f0f\u78bc\u7bc4\u4f8b",
"Language": "\u8a9e\u8a00",
"Code sample...": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b...",
"Color Picker": "\u9078\u8272\u5668",
"R": "\u7d05",
"G": "\u7da0",
"B": "\u85cd",
"Left to right": "\u5f9e\u5de6\u5230\u53f3",
"Right to left": "\u5f9e\u53f3\u5230\u5de6",
"Emoticons...": "\u8868\u60c5\u7b26\u865f\u2026",
"Metadata and Document Properties": "\u5f8c\u8a2d\u8cc7\u6599\u8207\u6587\u4ef6\u5c6c\u6027",
"Title": "\u6a19\u984c",
"Keywords": "\u95dc\u9375\u5b57",
"Description": "\u63cf\u8ff0",
"Robots": "\u6a5f\u5668\u4eba",
"Author": "\u4f5c\u8005",
"Encoding": "\u7de8\u78bc",
"Fullscreen": "\u5168\u87a2\u5e55",
"Action": "\u52d5\u4f5c",
"Shortcut": "\u5feb\u901f\u9375",
"Help": "\u5e6b\u52a9",
"Address": "\u5730\u5740",
"Focus to menubar": "\u8df3\u81f3\u9078\u55ae\u5217",
"Focus to toolbar": "\u8df3\u81f3\u5de5\u5177\u5217",
"Focus to element path": "\u8df3\u81f3HTML\u5143\u7d20\u5217",
"Focus to contextual toolbar": "\u8df3\u81f3\u5feb\u6377\u9078\u55ae",
"Insert link (if link plugin activated)": "\u65b0\u589e\u6377\u5f91 (\u6377\u5f91\u5916\u639b\u555f\u7528\u6642)",
"Save (if save plugin activated)": "\u5132\u5b58 (\u5132\u5b58\u5916\u639b\u555f\u7528\u6642)",
"Find (if searchreplace plugin activated)": "\u5c0b\u627e (\u5c0b\u627e\u53d6\u4ee3\u5916\u639b\u555f\u7528\u6642)",
"Plugins installed ({0}):": "({0}) \u500b\u5916\u639b\u5df2\u5b89\u88dd\uff1a",
"Premium plugins:": "\u52a0\u503c\u5916\u639b\uff1a",
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
"You are using {0}": "\u60a8\u6b63\u5728\u4f7f\u7528 {0}",
"Plugins": "\u5916\u639b",
"Handy Shortcuts": "\u5feb\u901f\u9375",
"Horizontal line": "\u6c34\u5e73\u7dda",
"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247",
"Image description": "\u5716\u7247\u63cf\u8ff0",
"Source": "\u5716\u7247\u7db2\u5740",
"Dimensions": "\u5c3a\u5bf8",
"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e",
"General": "\u4e00\u822c",
"Advanced": "\u9032\u968e",
"Style": "\u6a23\u5f0f",
"Vertical space": "\u9ad8\u5ea6",
"Horizontal space": "\u5bec\u5ea6",
"Border": "\u908a\u6846",
"Insert image": "\u63d2\u5165\u5716\u7247",
"Image...": "\u5716\u7247......",
"Image list": "\u5716\u7247\u6e05\u55ae",
"Rotate counterclockwise": "\u9006\u6642\u91dd\u65cb\u8f49",
"Rotate clockwise": "\u9806\u6642\u91dd\u65cb\u8f49",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f49",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f49",
"Edit image": "\u7de8\u8f2f\u5716\u7247",
"Image options": "\u5716\u7247\u9078\u9805",
"Zoom in": "\u653e\u5927",
"Zoom out": "\u7e2e\u5c0f",
"Crop": "\u88c1\u526a",
"Resize": "\u8abf\u6574\u5927\u5c0f",
"Orientation": "\u65b9\u5411",
"Brightness": "\u4eae\u5ea6",
"Sharpen": "\u92b3\u5316",
"Contrast": "\u5c0d\u6bd4",
"Color levels": "\u984f\u8272\u5c64\u6b21",
"Gamma": "\u4f3d\u99ac\u503c",
"Invert": "\u53cd\u8f49",
"Apply": "\u61c9\u7528",
"Back": "\u5f8c\u9000",
"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593",
"Date\/time": "\u65e5\u671f\/\u6642\u9593",
"Insert\/Edit Link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
"Text to display": "\u986f\u793a\u6587\u5b57",
"Url": "\u7db2\u5740",
"Open link in...": "\u958b\u555f\u9023\u7d50\u65bc...",
"Current window": "\u76ee\u524d\u8996\u7a97",
"None": "\u7121",
"New window": "\u53e6\u958b\u8996\u7a97",
"Remove link": "\u79fb\u9664\u9023\u7d50",
"Anchors": "\u52a0\u5165\u9328\u9ede",
"Link...": "\u9023\u7d50...",
"Paste or type a link": "\u8cbc\u4e0a\u6216\u8f38\u5165\u9023\u7d50",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u70ba\u96fb\u5b50\u90f5\u4ef6\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7db4\u55ce\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u5c6c\u65bc\u5916\u90e8\u93c8\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7db4\u55ce\uff1f",
"Link list": "\u9023\u7d50\u6e05\u55ae",
"Insert video": "\u63d2\u5165\u5f71\u97f3",
"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3",
"Insert\/edit media": "\u63d2\u5165\/\u7de8\u8f2f \u5a92\u9ad4",
"Alternative source": "\u66ff\u4ee3\u5f71\u97f3",
"Alternative source URL": "\u66ff\u4ee3\u4f86\u6e90URL",
"Media poster (Image URL)": "\u5a92\u9ad4\u6d77\u5831\uff08\u5f71\u50cfImage URL\uff09",
"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:",
"Embed": "\u5d4c\u5165\u78bc",
"Media...": "\u5a92\u9ad4...",
"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c",
"Page break": "\u5206\u9801",
"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a",
"Preview": "\u9810\u89bd",
"Print...": "\u5217\u5370...",
"Save": "\u5132\u5b58",
"Find": "\u641c\u5c0b",
"Replace with": "\u66f4\u63db",
"Replace": "\u66ff\u63db",
"Replace all": "\u66ff\u63db\u5168\u90e8",
"Previous": "\u4e0a\u4e00\u500b",
"Next": "\u4e0b\u4e00\u500b",
"Find and replace...": "\u5c0b\u627e\u53ca\u53d6\u4ee3...",
"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32",
"Match case": "\u76f8\u5339\u914d\u6848\u4ef6",
"Find whole words only": "\u50c5\u627e\u51fa\u5b8c\u6574\u5b57\u532f",
"Spell check": "\u62fc\u5beb\u6aa2\u67e5",
"Ignore": "\u5ffd\u7565",
"Ignore all": "\u5ffd\u7565\u6240\u6709",
"Finish": "\u5b8c\u6210",
"Add to Dictionary": "\u52a0\u5165\u5b57\u5178\u4e2d",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Table properties": "\u8868\u683c\u5c6c\u6027",
"Delete table": "\u522a\u9664\u8868\u683c",
"Cell": "\u5132\u5b58\u683c",
"Row": "\u5217",
"Column": "\u884c",
"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027",
"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c",
"Split cell": "\u5206\u5272\u5132\u5b58\u683c",
"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d",
"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c",
"Delete row": "\u522a\u9664\u5217",
"Row properties": "\u5217\u5c6c\u6027",
"Cut row": "\u526a\u4e0b\u5217",
"Copy row": "\u8907\u88fd\u5217",
"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d",
"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c",
"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d",
"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c",
"Delete column": "\u522a\u9664\u884c",
"Cols": "\u6b04\u4f4d\u6bb5",
"Rows": "\u5217",
"Width": "\u5bec\u5ea6",
"Height": "\u9ad8\u5ea6",
"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd",
"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd",
"Show caption": "\u986f\u793a\u6a19\u984c",
"Left": "\u5de6\u908a",
"Center": "\u4e2d\u9593",
"Right": "\u53f3\u908a",
"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b",
"Scope": "\u7bc4\u570d",
"Alignment": "\u5c0d\u9f4a",
"H Align": "\u6c34\u5e73\u4f4d\u7f6e",
"V Align": "\u5782\u76f4\u4f4d\u7f6e",
"Top": "\u7f6e\u9802",
"Middle": "\u7f6e\u4e2d",
"Bottom": "\u7f6e\u5e95",
"Header cell": "\u6a19\u982d\u5132\u5b58\u683c",
"Row group": "\u5217\u7fa4\u7d44",
"Column group": "\u6b04\u4f4d\u7fa4\u7d44",
"Row type": "\u884c\u7684\u985e\u578b",
"Header": "\u6a19\u982d",
"Body": "\u4e3b\u9ad4",
"Footer": "\u9801\u5c3e",
"Border color": "\u908a\u6846\u984f\u8272",
"Insert template...": "\u63d2\u5165\u6a23\u7248...",
"Templates": "\u6a23\u7248",
"Template": "\u6a23\u677f",
"Text color": "\u6587\u5b57\u984f\u8272",
"Background color": "\u80cc\u666f\u984f\u8272",
"Custom...": "\u81ea\u8a02",
"Custom color": "\u81ea\u8a02\u984f\u8272",
"No color": "No color",
"Remove color": "\u79fb\u9664\u984f\u8272",
"Table of Contents": "\u76ee\u9304",
"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a",
"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143",
"Word count": "\u8a08\u7b97\u5b57\u6578",
"Count": "\u8a08\u7b97",
"Document": "\u6587\u4ef6",
"Selection": "\u9078\u9805",
"Words": "\u5b57\u6578",
"Words: {0}": "\u5b57\u6578\uff1a{0}",
"{0} words": "{0} \u5b57\u5143",
"File": "\u6a94\u6848",
"Edit": "\u7de8\u8f2f",
"Insert": "\u63d2\u5165",
"View": "\u6aa2\u8996",
"Format": "\u683c\u5f0f",
"Table": "\u8868\u683c",
"Tools": "\u5de5\u5177",
"Powered by {0}": "\u7531 {0} \u63d0\u4f9b",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9",
"Image title": "\u5716\u7247\u6a19\u984c",
"Border width": "\u6846\u7dda\u5bec\u5ea6",
"Border style": "\u6846\u7dda\u6a23\u5f0f",
"Error": "\u932f\u8aa4",
"Warn": "\u8b66\u544a",
"Valid": "\u6709\u6548",
"To open the popup, press Shift+Enter": "\u8981\u958b\u555f\u5f48\u51fa\u8996\u7a97\uff0c\u8acb\u6309Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u5bcc\u6587\u672c\u5340\u57df\u3002\u8acb\u6309ALT-0\u5c0b\u6c42\u5354\u52a9\u3002",
"System Font": "\u7cfb\u7d71\u5b57\u578b",
"Failed to upload image: {0}": "\u7121\u6cd5\u4e0a\u50b3\u5f71\u50cf\uff1a{0}",
"Failed to load plugin: {0} from url {1}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}\u81eaurl{1}",
"Failed to load plugin url: {0}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}",
"Failed to initialize plugin: {0}": "\u7121\u6cd5\u555f\u52d5\u63d2\u4ef6\uff1a{0}",
"example": "\u7bc4\u4f8b",
"Search": "\u641c\u7d22",
"All": "\u5168\u90e8",
"Currency": "\u8ca8\u5e63",
"Text": "\u6587\u672c",
"Quotations": "\u5f15\u7528",
"Mathematical": "\u6578\u5b78",
"Extended Latin": "\u62c9\u4e01\u5b57\u6bcd\u64f4\u5145",
"Symbols": "\u7b26\u865f",
"Arrows": "\u7bad\u982d",
"User Defined": "\u4f7f\u7528\u8005\u5df2\u5b9a\u7fa9",
"dollar sign": "\u7f8e\u5143\u7b26\u865f",
"currency sign": "\u8ca8\u5e63\u7b26\u865f",
"euro-currency sign": "\u6b50\u5143\u7b26\u865f",
"colon sign": "\u79d1\u6717\u7b26\u865f",
"cruzeiro sign": "\u514b\u9b6f\u8cfd\u7f85\u7b26\u865f",
"french franc sign": "\u6cd5\u6717\u7b26\u865f",
"lira sign": "\u91cc\u62c9\u7b26\u865f",
"mill sign": "\u6587\u7b26\u865f",
"naira sign": "\u5948\u62c9\u7b26\u865f",
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u865f",
"rupee sign": "\u76e7\u6bd4\u7b26\u865f",
"won sign": "\u97d3\u571c\u7b26\u865f",
"new sheqel sign": "\u65b0\u8b1d\u514b\u723e\u7b26\u865f",
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u865f",
"kip sign": "\u8001\u64be\u5e63\u7b26\u865f",
"tugrik sign": "\u8499\u53e4\u5e63\u7b26\u865f",
"drachma sign": "\u5fb7\u514b\u62c9\u99ac\u7b26\u865f",
"german penny symbol": "\u5fb7\u570b\u5206\u7b26\u865f",
"peso sign": "\u62ab\u7d22\u7b26\u865f",
"guarani sign": "\u5df4\u62c9\u572d\u5e63\u7b26\u865f",
"austral sign": "\u963f\u6839\u5ef7\u5e63\u7b26\u865f",
"hryvnia sign": "\u70cf\u514b\u862d\u5e63\u7b26\u865f",
"cedi sign": "\u8fe6\u7d0d\u5e63\u7b26\u865f",
"livre tournois sign": "\u91cc\u5f17\u723e\u7b26\u865f",
"spesmilo sign": "\u570b\u969b\u5e63\u7b26\u865f",
"tenge sign": "\u54c8\u85a9\u514b\u5e63\u7b26\u865f",
"indian rupee sign": "\u5370\u5ea6\u76e7\u6bd4\u7b26\u865f",
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9\u7b26\u865f",
"nordic mark sign": "\u5317\u6b50\u99ac\u514b\u7b26\u865f",
"manat sign": "\u4e9e\u585e\u62dc\u7136\u5e63\u7b26\u865f",
"ruble sign": "\u76e7\u5e03\u7b26\u865f",
"yen character": "\u65e5\u5713\u7b26\u865f",
"yuan character": "\u4eba\u6c11\u5e63\u7b26\u865f",
"yuan character, in hong kong and taiwan": "\u6e2f\u5143\u8207\u53f0\u5e63\u7b26\u865f",
"yen\/yuan character variant one": "\u65e5\u5713\/\u4eba\u6c11\u5e63\u7b26\u865f\u8b8a\u5316\u578b",
"Loading emoticons...": "\u8f09\u5165\u8868\u60c5\u7b26\u865f\u2026",
"Could not load emoticons": "\u7121\u6cd5\u8f09\u5165\u8868\u60c5\u7b26\u865f",
"People": "\u4eba",
"Animals and Nature": "\u52d5\u7269\u8207\u81ea\u7136",
"Food and Drink": "\u98f2\u98df",
"Activity": "\u6d3b\u52d5",
"Travel and Places": "\u65c5\u884c\u8207\u5730\u9ede",
"Objects": "\u7269\u4ef6",
"Flags": "\u65d7\u6a19",
"Characters": "\u5b57\u5143",
"Characters (no spaces)": "\u5b57\u5143\uff08\u7121\u7a7a\u683c\uff09",
"{0} characters": "{0}\u5b57\u5143",
"Error: Form submit field collision.": "\u932f\u8aa4\uff1a\u8868\u683c\u905e\u4ea4\u6b04\u4f4d\u885d\u7a81\u3002",
"Error: No form element found.": "\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u8868\u683c\u5143\u7d20\u3002",
"Update": "\u66f4\u65b0",
"Color swatch": "\u8272\u5f69\u6a23\u672c",
"Turquoise": "\u571f\u8033\u5176\u85cd",
"Green": "\u7da0\u8272",
"Blue": "\u85cd\u8272",
"Purple": "\u7d2b\u8272",
"Navy Blue": "\u6df1\u85cd\u8272",
"Dark Turquoise": "\u6df1\u571f\u8033\u5176\u85cd",
"Dark Green": "\u6df1\u7da0\u8272",
"Medium Blue": "\u4e2d\u85cd\u8272",
"Medium Purple": "\u4e2d\u7d2b\u8272",
"Midnight Blue": "\u9ed1\u85cd\u8272",
"Yellow": "\u9ec3\u8272",
"Orange": "\u6a59\u8272",
"Red": "\u7d05\u8272",
"Light Gray": "\u6dfa\u7070\u8272",
"Gray": "\u7070\u8272",
"Dark Yellow": "\u6df1\u9ec3\u8272",
"Dark Orange": "\u6df1\u6a59\u8272",
"Dark Red": "\u6697\u7d05\u8272",
"Medium Gray": "\u4e2d\u7070\u8272",
"Dark Gray": "\u6df1\u7070\u8272",
"Light Green": "\u6de1\u7da0\u8272",
"Light Yellow": "\u6dfa\u9ec3\u8272",
"Light Red": "\u6dfa\u7d05\u8272",
"Light Purple": "\u6dfa\u7d2b\u8272",
"Light Blue": "\u6dfa\u85cd\u8272",
"Dark Purple": "\u6df1\u7d2b\u8272",
"Dark Blue": "\u6df1\u85cd\u8272",
"Black": "\u9ed1\u8272",
"White": "\u767d\u8272",
"Switch to or from fullscreen mode": "\u8f49\u63db\u81ea\/\u81f3\u5168\u87a2\u5e55\u6a21\u5f0f",
"Open help dialog": "\u958b\u555f\u5354\u52a9\u5c0d\u8a71",
"history": "\u6b77\u53f2",
"styles": "\u6a23\u5f0f",
"formatting": "\u683c\u5f0f",
"alignment": "\u5c0d\u9f4a",
"indentation": "\u7e2e\u6392",
"permanent pen": "\u6c38\u4e45\u6027\u7b46",
"comments": "\u8a3b\u89e3",
"Format Painter": "\u8907\u88fd\u683c\u5f0f",
"Insert\/edit iframe": "\u63d2\u5165\/\u7de8\u8f2fiframe",
"Capitalization": "\u5927\u5beb",
"lowercase": "\u5c0f\u5beb",
"UPPERCASE": "\u5927\u5beb",
"Title Case": "\u5b57\u9996\u5927\u5beb",
"Permanent Pen Properties": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027",
"Permanent pen properties...": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027......",
"Font": "\u5b57\u578b",
"Size": "\u5b57\u5f62\u5927\u5c0f",
"More...": "\u66f4\u591a\u8cc7\u8a0a......",
"Spellcheck Language": "\u62fc\u5beb\u8a9e\u8a00",
"Select...": "\u9078\u64c7......",
"Preferences": "\u9996\u9078\u9805",
"Yes": "\u662f",
"No": "\u5426",
"Keyboard Navigation": "\u9375\u76e4\u5c0e\u822a",
"Version": "\u7248\u672c",
"Anchor": "\u52a0\u5165\u9328\u9ede",
"Special character": "\u7279\u6b8a\u5b57\u5143",
"Code sample": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b",
"Color": "\u984f\u8272",
"Emoticons": "\u8868\u60c5",
"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027",
"Image": "\u5716\u7247",
"Insert link": "\u63d2\u5165\u9023\u7d50",
"Target": "\u958b\u555f\u65b9\u5f0f",
"Link": "\u9023\u7d50",
"Poster": "\u9810\u89bd\u5716\u7247",
"Media": "\u5a92\u9ad4",
"Print": "\u5217\u5370",
"Prev": "\u4e0a\u4e00\u500b",
"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3",
"Whole words": "\u6574\u500b\u55ae\u5b57",
"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
"Caption": "\u8868\u683c\u6a19\u984c",
"Insert template": "\u63d2\u5165\u6a23\u7248"
});js/tinymce/langs/ko_KR.js000064400000047736151727150310011322 0ustar00tinymce.addI18n('ko_KR',{
"Redo": "\ub2e4\uc2dc \uc2e4\ud589",
"Undo": "\uc2e4\ud589 \ucde8\uc18c",
"Cut": "\uc798\ub77c\ub0b4\uae30",
"Copy": "\ubcf5\uc0ac",
"Paste": "\ubd99\uc5ec\ub123\uae30",
"Select all": "\uc804\uccb4\uc120\ud0dd",
"New document": "\uc0c8 \ubb38\uc11c",
"Ok": "\ud655\uc778",
"Cancel": "\ucde8\uc18c",
"Visual aids": "\uc2dc\uac01\uad50\uc7ac",
"Bold": "\uad75\uac8c",
"Italic": "\uae30\uc6b8\uc784\uaf34",
"Underline": "\ubc11\uc904",
"Strikethrough": "\ucde8\uc18c\uc120",
"Superscript": "\uc704 \ucca8\uc790",
"Subscript": "\uc544\ub798 \ucca8\uc790",
"Clear formatting": "\uc11c\uc2dd \uc9c0\uc6b0\uae30",
"Align left": "\uc67c\ucabd \ub9de\ucda4",
"Align center": "\uac00\uc6b4\ub370 \ub9de\ucda4",
"Align right": "\uc624\ub978\ucabd \ub9de\ucda4",
"Justify": "\uc591\ucabd \ub9de\ucda4",
"Bullet list": "\uae00\uba38\ub9ac \uae30\ud638 \ubaa9\ub85d",
"Numbered list": "\ubc88\ud638 \ub9e4\uae30\uae30 \ubaa9\ub85d",
"Decrease indent": "\ub0b4\uc5b4\uc4f0\uae30",
"Increase indent": "\ub4e4\uc5ec\uc4f0\uae30",
"Close": "\ub2eb\uae30",
"Formats": "\uc11c\uc2dd",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\ube0c\ub77c\uc6b0\uc800\uac00 \ud074\ub9bd\ubcf4\ub4dc \uc811\uadfc\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Ctrl+X\/C\/V \ub2e8\ucd95\ud0a4\ub97c \uc774\uc6a9\ud558\uc2ed\uc2dc\uc624.",
"Headers": "\uba38\ub9ac\uae00",
"Header 1": "\uba38\ub9ac\uae00 1",
"Header 2": "\uba38\ub9ac\uae00 2",
"Header 3": "\uba38\ub9ac\uae00 3",
"Header 4": "\uba38\ub9ac\uae00 4",
"Header 5": "\uba38\ub9ac\uae00 5",
"Header 6": "\uba38\ub9ac\uae00 6",
"Headings": "\uc81c\ubaa9",
"Heading 1": "\uc81c\ubaa9 1",
"Heading 2": "\uc81c\ubaa9 2",
"Heading 3": "\uc81c\ubaa9 3",
"Heading 4": "\uc81c\ubaa9 4",
"Heading 5": "\uc81c\ubaa9 5",
"Heading 6": "\uc81c\ubaa9 6",
"Preformatted": "\uc11c\uc2dd \ubbf8\uc124\uc815",
"Div": "Div",
"Pre": "Pre",
"Code": "\ucf54\ub4dc",
"Paragraph": "\ub2e8\ub77d",
"Blockquote": "\uc778\uc6a9\ubb38",
"Inline": "\uc778\ub77c\uc778",
"Blocks": "\ube14\ub85d",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\uc2a4\ud0c0\uc77c\ubcf5\uc0ac \ub044\uae30. \uc774 \uc635\uc158\uc744 \ub044\uae30 \uc804\uc5d0\ub294 \ubcf5\uc0ac \uc2dc, \uc2a4\ud0c0\uc77c\uc774 \ubcf5\uc0ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",
"Fonts": "\uae00\uaf34",
"Font Sizes": "\uae00\uaf34 \ud06c\uae30",
"Class": "\ud074\ub798\uc2a4",
"Browse for an image": "\uc774\ubbf8\uc9c0 \ucc3e\uae30",
"OR": "\ub610\ub294",
"Drop an image here": "\uc5ec\uae30\ub85c \uc774\ubbf8\uc9c0 \ub04c\uc5b4\uc624\uae30",
"Upload": "\uc5c5\ub85c\ub4dc",
"Block": "\ube14\ub85d",
"Align": "\uc815\ub82c",
"Default": "\uae30\ubcf8",
"Circle": "\uc6d0",
"Disc": "\uc6d0\ubc18",
"Square": "\uc0ac\uac01",
"Lower Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
"Lower Greek": "\uadf8\ub9ac\uc2a4\uc5b4 \uc18c\ubb38\uc790",
"Lower Roman": "\ub85c\ub9c8\uc790 \uc18c\ubb38\uc790",
"Upper Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
"Upper Roman": "\ub85c\ub9c8\uc790 \ub300\ubb38\uc790",
"Anchor...": "\uc575\ucee4...",
"Name": "\uc774\ub984",
"Id": "\uc544\uc774\ub514",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\uc544\uc774\ub514\ub294 \ubb38\uc790, \uc22b\uc790, \ub300\uc2dc, \uc810, \ucf5c\ub860 \ub610\ub294 \ubc11\uc904\ub85c \uc2dc\uc791\ud574\uc57c\ud569\ub2c8\ub2e4.",
"You have unsaved changes are you sure you want to navigate away?": "\uc800\uc7a5\ud558\uc9c0 \uc54a\uc740 \uc815\ubcf4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c \ubc97\uc5b4\ub098\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
"Restore last draft": "\ub9c8\uc9c0\ub9c9 \ucd08\uc548 \ubcf5\uc6d0",
"Special character...": "\ud2b9\uc218 \ubb38\uc790...",
"Source code": "\uc18c\uc2a4\ucf54\ub4dc",
"Insert\/Edit code sample": "\ucf54\ub4dc\uc0d8\ud50c \uc0bd\uc785\/\ud3b8\uc9d1",
"Language": "\uc5b8\uc5b4",
"Code sample...": "\ucf54\ub4dc \uc0d8\ud50c...",
"Color Picker": "\uc0c9 \uc120\ud0dd\uae30",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",
"Right to left": "\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",
"Emoticons...": "\uc774\ubaa8\ud2f0\ucf58...",
"Metadata and Document Properties": "\uba54\ud0c0\ub370\uc774\ud130\uc640 \ubb38\uc11c \uc18d\uc131",
"Title": "\uc81c\ubaa9",
"Keywords": "\ud0a4\uc6cc\ub4dc",
"Description": "\uc124\uba85",
"Robots": "\ub85c\ubd07",
"Author": "\uc800\uc790",
"Encoding": "\uc778\ucf54\ub529",
"Fullscreen": "\uc804\uccb4\ud654\uba74",
"Action": "\ub3d9\uc791",
"Shortcut": "\ub2e8\ucd95\ud0a4",
"Help": "\ub3c4\uc6c0\ub9d0",
"Address": "\uc8fc\uc18c",
"Focus to menubar": "\uba54\ub274\uc5d0 \ud3ec\ucee4\uc2a4",
"Focus to toolbar": "\ud234\ubc14\uc5d0 \ud3ec\ucee4\uc2a4",
"Focus to element path": "element path\uc5d0 \ud3ec\ucee4\uc2a4",
"Focus to contextual toolbar": "\ucf04\ud14d\uc2a4\ud2b8 \ud234\ubc14\uc5d0 \ud3ec\ucee4\uc2a4",
"Insert link (if link plugin activated)": "\ub9c1\ud06c \uc0bd\uc785 (link \ud50c\ub7ec\uadf8\uc778\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c)",
"Save (if save plugin activated)": "\uc800\uc7a5 (save \ud50c\ub7ec\uadf8\uc778\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c)",
"Find (if searchreplace plugin activated)": "\ucc3e\uae30(searchreplace \ud50c\ub7ec\uadf8\uc778\uc774 \ud65c\uc131\ud654\ub41c \uc0c1\ud0dc\uc5d0\uc11c)",
"Plugins installed ({0}):": "\uc124\uce58\ub41c \ud50c\ub7ec\uadf8\uc778 ({0}):",
"Premium plugins:": "\uace0\uae09 \ud50c\ub7ec\uadf8\uc778",
"Learn more...": "\uc880 \ub354 \uc0b4\ud3b4\ubcf4\uae30",
"You are using {0}": "{0}\ub97c \uc0ac\uc6a9\uc911",
"Plugins": "\ud50c\ub7ec\uadf8\uc778",
"Handy Shortcuts": "\ub2e8\ucd95\ud0a4",
"Horizontal line": "\uac00\ub85c",
"Insert\/edit image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785\/\uc218\uc815",
"Image description": "\uc774\ubbf8\uc9c0 \uc124\uba85",
"Source": "\uc18c\uc2a4",
"Dimensions": "\ud06c\uae30",
"Constrain proportions": "\uc791\uc5c5 \uc81c\ud55c",
"General": "\uc77c\ubc18",
"Advanced": "\uace0\uae09",
"Style": "\uc2a4\ud0c0\uc77c",
"Vertical space": "\uc218\uc9c1 \uacf5\ubc31",
"Horizontal space": "\uc218\ud3c9 \uacf5\ubc31",
"Border": "\ud14c\ub450\ub9ac",
"Insert image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785",
"Image...": "\uc774\ubbf8\uc9c0...",
"Image list": "\uc774\ubbf8\uc9c0 \ubaa9\ub85d",
"Rotate counterclockwise": "\uc2dc\uacc4\ubc18\ub300\ubc29\ud5a5\uc73c\ub85c \ud68c\uc804",
"Rotate clockwise": "\uc2dc\uacc4\ubc29\ud5a5\uc73c\ub85c \ud68c\uc804",
"Flip vertically": "\uc218\uc9c1 \ub4a4\uc9d1\uae30",
"Flip horizontally": "\uc218\ud3c9 \ub4a4\uc9d1\uae30",
"Edit image": "\uc774\ubbf8\uc9c0 \ud3b8\uc9d1",
"Image options": "\uc774\ubbf8\uc9c0 \uc635\uc158",
"Zoom in": "\ud655\ub300",
"Zoom out": "\ucd95\uc18c",
"Crop": "\uc790\ub974\uae30",
"Resize": "\ud06c\uae30 \uc870\uc808",
"Orientation": "\ubc29\ud5a5",
"Brightness": "\ubc1d\uae30",
"Sharpen": "\uc120\uba85\ud558\uac8c",
"Contrast": "\ub300\ube44",
"Color levels": "\uc0c9\uc0c1\ub808\ubca8",
"Gamma": "\uac10\ub9c8",
"Invert": "\ubc18\uc804",
"Apply": "\uc801\uc6a9",
"Back": "\ub4a4\ub85c",
"Insert date\/time": "\ub0a0\uc9dc\/\uc2dc\uac04\uc0bd\uc785",
"Date\/time": "\ub0a0\uc9dc\/\uc2dc\uac04",
"Insert\/Edit Link": "\ub9c1\ud06c \uc0bd\uc785\/\ud3b8\uc9d1",
"Insert\/edit link": "\ub9c1\ud06c \uc0bd\uc785\/\uc218\uc815",
"Text to display": "\ubcf8\ubb38",
"Url": "\uc8fc\uc18c",
"Open link in...": "...\uc5d0\uc11c \ub9c1\ud06c \uc5f4\uae30",
"Current window": "\ud604\uc7ac \ucc3d",
"None": "\uc5c6\uc74c",
"New window": "\uc0c8\ucc3d",
"Remove link": "\ub9c1\ud06c\uc0ad\uc81c",
"Anchors": "\ucc45\uac08\ud53c",
"Link...": "\ub9c1\ud06c...",
"Paste or type a link": "\ub9c1\ud06c\ub97c \ubd99\uc5ec\ub123\uac70\ub098 \uc785\ub825\ud558\uc138\uc694",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\ud604\uc7ac E-mail\uc8fc\uc18c\ub97c \uc785\ub825\ud558\uc168\uc2b5\ub2c8\ub2e4. E-mail \uc8fc\uc18c\uc5d0 \ub9c1\ud06c\ub97c \uac78\uae4c\uc694?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\ud604\uc7ac \uc6f9\uc0ac\uc774\ud2b8 \uc8fc\uc18c\ub97c \uc785\ub825\ud558\uc168\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \uc8fc\uc18c\uc5d0 \ub9c1\ud06c\ub97c \uac78\uae4c\uc694?",
"Link list": "\ub9c1\ud06c \ub9ac\uc2a4\ud2b8",
"Insert video": "\ube44\ub514\uc624 \uc0bd\uc785",
"Insert\/edit video": "\ube44\ub514\uc624 \uc0bd\uc785\/\uc218\uc815",
"Insert\/edit media": "\ubbf8\ub514\uc5b4 \uc0bd\uc785\/\uc218\uc815",
"Alternative source": "\ub300\uccb4 \uc18c\uc2a4",
"Alternative source URL": "\ub300\uccb4 \uc6d0\ubcf8 URL",
"Media poster (Image URL)": "\ub300\ud45c \uc774\ubbf8\uc9c0(\uc774\ubbf8\uc9c0 URL)",
"Paste your embed code below:": "\uc544\ub798\uc5d0 \ucf54\ub4dc\ub97c \ubd99\uc5ec\ub123\uc73c\uc138\uc694:",
"Embed": "\uc0bd\uc785",
"Media...": "\ubbf8\ub514\uc5b4...",
"Nonbreaking space": "\ub744\uc5b4\uc4f0\uae30",
"Page break": "\ud398\uc774\uc9c0 \uad6c\ubd84\uc790",
"Paste as text": "\ud14d\uc2a4\ud2b8\ub85c \ubd99\uc5ec\ub123\uae30",
"Preview": "\ubbf8\ub9ac\ubcf4\uae30",
"Print...": "\uc778\uc1c4...",
"Save": "\uc800\uc7a5",
"Find": "\ucc3e\uae30",
"Replace with": "\uad50\uccb4",
"Replace": "\uad50\uccb4",
"Replace all": "\uc804\uccb4 \uad50\uccb4",
"Previous": "\uc774\uc804",
"Next": "\ub2e4\uc74c",
"Find and replace...": "\ucc3e\uae30 \ubc0f \ubc14\uafb8\uae30...",
"Could not find the specified string.": "\ubb38\uc790\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
"Match case": "\ub300\uc18c\ubb38\uc790 \uc77c\uce58",
"Find whole words only": "\ubaa8\ub450 \uc77c\uce58\ud558\ub294 \ubb38\uc790 \ucc3e\uae30",
"Spell check": "\ub9de\ucda4\ubc95 \uac80\uc0ac",
"Ignore": "\ubb34\uc2dc",
"Ignore all": "\uc804\uccb4\ubb34\uc2dc",
"Finish": "\uc644\ub8cc",
"Add to Dictionary": "\uc0ac\uc804\uc5d0 \ucd94\uac00",
"Insert table": "\ud14c\uc774\ube14 \uc0bd\uc785",
"Table properties": "\ud14c\uc774\ube14 \uc18d\uc131",
"Delete table": "\ud14c\uc774\ube14 \uc0ad\uc81c",
"Cell": "\uc140",
"Row": "\uc5f4",
"Column": "\ud589",
"Cell properties": "\uc140 \uc18d",
"Merge cells": "\uc140 \ud569\uce58\uae30",
"Split cell": "\uc140 \ub098\ub204\uae30",
"Insert row before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
"Insert row after": "\ub2e4\uc74c\uc5d0 \ud589 \uc0bd\uc785",
"Delete row": "\ud589 \uc9c0\uc6b0\uae30",
"Row properties": "\ud589 \uc18d\uc131",
"Cut row": "\ud589 \uc798\ub77c\ub0b4\uae30",
"Copy row": "\ud589 \ubcf5\uc0ac",
"Paste row before": "\uc774\uc804\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
"Paste row after": "\ub2e4\uc74c\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
"Insert column before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
"Insert column after": "\ub2e4\uc74c\uc5d0 \uc5f4 \uc0bd\uc785",
"Delete column": "\uc5f4 \uc9c0\uc6b0\uae30",
"Cols": "\uc5f4",
"Rows": "\ud589",
"Width": "\ub113\uc774",
"Height": "\ub192\uc774",
"Cell spacing": "\uc140 \uac04\uaca9",
"Cell padding": "\uc140 \uc548\ucabd \uc5ec\ubc31",
"Show caption": "\ucea1\uc158 \ud45c\uc2dc",
"Left": "\uc67c\ucabd",
"Center": "\uac00\uc6b4\ub370",
"Right": "\uc624\ub978\ucabd",
"Cell type": "\uc140 \ud0c0\uc785",
"Scope": "\ubc94\uc704",
"Alignment": "\uc815\ub82c",
"H Align": "\uac00\ub85c \uc815\ub82c",
"V Align": "\uc138\ub85c \uc815\ub82c",
"Top": "\uc0c1\ub2e8",
"Middle": "\uc911\uac04",
"Bottom": "\ud558\ub2e8",
"Header cell": "\ud5e4\ub354 \uc140",
"Row group": "\ud589 \uadf8\ub8f9",
"Column group": "\uc5f4 \uadf8\ub8f9",
"Row type": "\ud589 \ud0c0\uc785",
"Header": "\ud5e4\ub354",
"Body": "\ubc14\ub514",
"Footer": "\ud478\ud130",
"Border color": "\ud14c\ub450\ub9ac \uc0c9",
"Insert template...": "\ud15c\ud50c\ub9bf \uc0bd\uc785...",
"Templates": "\ud15c\ud50c\ub9bf",
"Template": "\ud15c\ud50c\ub9bf",
"Text color": "\ubb38\uc790 \uc0c9\uae54",
"Background color": "\ubc30\uacbd\uc0c9",
"Custom...": "\uc9c1\uc811 \uc0c9\uae54 \uc9c0\uc815\ud558\uae30",
"Custom color": "\uc9c1\uc811 \uc9c0\uc815\ud55c \uc0c9\uae54",
"No color": "\uc0c9\uc0c1 \uc5c6\uc74c",
"Remove color": "\uc0c9 \uc81c\uac70",
"Table of Contents": "\ubaa9\ucc28",
"Show blocks": "\ube14\ub7ed \ubcf4\uc5ec\uc8fc\uae30",
"Show invisible characters": "\uc548\ubcf4\uc774\ub294 \ubb38\uc790 \ubcf4\uc774\uae30",
"Word count": "\ub2e8\uc5b4 \uc218",
"Count": "\uac1c\uc218",
"Document": "\ubb38\uc11c",
"Selection": "\uc120\ud0dd",
"Words": "\ub2e8\uc5b4",
"Words: {0}": "\ub2e8\uc5b4: {0}",
"{0} words": "{0} \ub2e8\uc5b4",
"File": "\ud30c\uc77c",
"Edit": "\uc218\uc815",
"Insert": "\uc0bd\uc785",
"View": "\ubcf4\uae30",
"Format": "\ud3ec\ub9f7",
"Table": "\ud14c\uc774\ube14",
"Tools": "\ub3c4\uad6c",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\uc11c\uc2dd \uc788\ub294 \ud14d\uc2a4\ud2b8 \ud3b8\uc9d1\uae30 \uc785\ub2c8\ub2e4. ALT-F9\ub97c \ub204\ub974\uba74 \uba54\ub274, ALT-F10\ub97c \ub204\ub974\uba74 \ud234\ubc14, ALT-0\uc744 \ub204\ub974\uba74 \ub3c4\uc6c0\ub9d0\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
"Image title": "\uc774\ubbf8\uc9c0 \uc81c\ubaa9",
"Border width": "\ud14c\ub450\ub9ac \ub450\uaed8",
"Border style": "\ud14c\ub450\ub9ac \uc2a4\ud0c0\uc77c",
"Error": "\uc624\ub958",
"Warn": "\uacbd\uace0",
"Valid": "\uc720\ud6a8\ud568",
"To open the popup, press Shift+Enter": "\ud31d\uc5c5\uc744 \uc5f4\ub824\uba74 Shift+Enter\ub97c \ub204\ub974\uc2ed\uc2dc\uc624.",
"Rich Text Area. Press ALT-0 for help.": "\uc11c\uc2dd \uc788\ub294 \ud14d\uc2a4\ud2b8 \uc601\uc5ed. ALT-0\uc744 \ub204\ub974\uba74 \ub3c4\uc6c0\ub9d0\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
"System Font": "\uc2dc\uc2a4\ud15c \uae00\uaf34",
"Failed to upload image: {0}": "\uc774\ubbf8\uc9c0 \uc5c5\ub85c\ub4dc \uc2e4\ud328: {0}",
"Failed to load plugin: {0} from url {1}": "\ud50c\ub7ec\uadf8\uc778 \ub85c\ub4dc \uc2e4\ud328:  URL: {1}\uc5d0\uc11c\uc758 {0}",
"Failed to load plugin url: {0}": "\ud50c\ub7ec\uadf8\uc778 URL \ub85c\ub4dc \uc2e4\ud328: {0}",
"Failed to initialize plugin: {0}": "\ud50c\ub7ec\uadf8\uc778 \ucd08\uae30\ud654 \uc2e4\ud328: {0}",
"example": "\uc608\uc81c",
"Search": "\uac80\uc0c9",
"All": "\ubaa8\ub450",
"Currency": "\ud1b5\ud654",
"Text": "\ud14d\uc2a4\ud2b8",
"Quotations": "\uc778\uc6a9\ubb38",
"Mathematical": "\uc218\ud559",
"Extended Latin": "\ud655\uc7a5 \ub77c\ud2f4\uc5b4",
"Symbols": "\uae30\ud638",
"Arrows": "\ud654\uc0b4\ud45c",
"User Defined": "\uc0ac\uc6a9\uc790 \uc815\uc758",
"dollar sign": "\ub2ec\ub7ec \uae30\ud638",
"currency sign": "\ud1b5\ud654 \uae30\ud638",
"euro-currency sign": "\uc720\ub85c\ud654 \uae30\ud638",
"colon sign": "\ucf5c\ub860 \uae30\ud638",
"cruzeiro sign": "\ud06c\ub8e8\uc81c\uc774\ub8e8 \uae30\ud638",
"french franc sign": "\ud504\ub791\uc2a4 \ud504\ub791 \uae30\ud638",
"lira sign": "\ub9ac\ub77c \uae30\ud638",
"mill sign": "\ubc00 \uae30\ud638",
"naira sign": "\ub098\uc774\ub77c \uae30\ud638",
"peseta sign": "\ud398\uc138\ud0c0 \uae30\ud638",
"rupee sign": "\ub8e8\ud53c \uae30\ud638",
"won sign": "\uc6d0 \uae30\ud638",
"new sheqel sign": "\ub274 \uc138\ucf08 \uae30\ud638",
"dong sign": "\ub3d9 \uae30\ud638",
"kip sign": "\ud0b5 \uae30\ud638",
"tugrik sign": "\ud22c\uadf8\ub9ac\ud06c \uae30\ud638",
"drachma sign": "\ub4dc\ub77c\ud06c\ub9c8 \uae30\ud638",
"german penny symbol": "\ub3c5\uc77c \ud398\ub2c8 \uae30\ud638",
"peso sign": "\ud398\uc18c \uae30\ud638",
"guarani sign": "\uacfc\ub77c\ub2c8 \uae30\ud638",
"austral sign": "\uc544\uc6b0\uc2a4\ud2b8\ub784 \uae30\ud638",
"hryvnia sign": "\uadf8\ub9ac\ube0c\ub098 \uae30\ud638",
"cedi sign": "\uc138\ub514 \uae30\ud638",
"livre tournois sign": "\ub9ac\ube0c\ub974 \ud2b8\ub974\ub204\uc544 \uae30\ud638",
"spesmilo sign": "\uc2a4\ud398\uc2a4\ubc00\ub85c \uae30\ud638",
"tenge sign": "\ud161\uac8c \uae30\ud638",
"indian rupee sign": "\uc778\ub3c4 \ub8e8\ud53c \uae30\ud638",
"turkish lira sign": "\ud130\ud0a4 \ub9ac\ub77c \uae30\ud638",
"nordic mark sign": "\ub178\ub974\ub515 \ub9c8\ub974\ud06c \uae30\ud638",
"manat sign": "\ub9c8\ub098\ud2b8 \uae30\ud638",
"ruble sign": "\ub8e8\ube14 \uae30\ud638",
"yen character": "\uc5d4 \uae30\ud638",
"yuan character": "\uc704\uc548 \uae30\ud638",
"yuan character, in hong kong and taiwan": "\ub300\ub9cc \uc704\uc548 \uae30\ud638",
"yen\/yuan character variant one": "\uc5d4\/\uc704\uc548 \ubb38\uc790 \ubcc0\ud615",
"Loading emoticons...": "\uc774\ubaa8\ud2f0\ucf58 \ubd88\ub7ec\uc624\ub294 \uc911...",
"Could not load emoticons": "\uc774\ubaa8\ud2f0\ucf58\uc744 \ubd88\ub7ec\uc62c \uc218 \uc5c6\uc74c",
"People": "\uc0ac\ub78c",
"Animals and Nature": "\ub3d9\ubb3c\uacfc \uc790\uc5f0",
"Food and Drink": "\uc74c\uc2dd\uacfc \uc74c\ub8cc",
"Activity": "\ud65c\ub3d9",
"Travel and Places": "\uc5ec\ud589\uacfc \uc7a5\uc18c",
"Objects": "\ubb3c\uac74",
"Flags": "\uae43\ubc1c",
"Characters": "\ubb38\uc790",
"Characters (no spaces)": "\ubb38\uc790(\uacf5\ubc31 \uc5c6\uc74c)",
"{0} characters": "{0} \ubb38\uc790",
"Error: Form submit field collision.": "\uc624\ub958: \uc591\uc2dd \uc81c\ucd9c \ud544\ub4dc \ubd88\uc77c\uce58",
"Error: No form element found.": "\uc624\ub958: \uc591\uc2dd \ud56d\ubaa9 \uc5c6\uc74c",
"Update": "\uc5c5\ub370\uc774\ud2b8",
"Color swatch": "\uc0c9\uc0c1 \uacac\ubcf8",
"Turquoise": "\uccad\ub85d\uc0c9",
"Green": "\ucd08\ub85d\uc0c9",
"Blue": "\ud30c\ub780\uc0c9",
"Purple": "\ubcf4\ub77c\uc0c9",
"Navy Blue": "\ub0a8\uc0c9",
"Dark Turquoise": "\uc9c4\ud55c \uccad\ub85d\uc0c9",
"Dark Green": "\uc9c4\ud55c \ucd08\ub85d\uc0c9",
"Medium Blue": "\uc911\uac04 \ud30c\ub780\uc0c9",
"Medium Purple": "\uc911\uac04 \ubcf4\ub77c\uc0c9",
"Midnight Blue": "\uc9c4\ud55c \ud30c\ub780\uc0c9",
"Yellow": "\ub178\ub780\uc0c9",
"Orange": "\uc8fc\ud669\uc0c9",
"Red": "\ube68\uac04\uc0c9",
"Light Gray": "\ubc1d\uc740 \ud68c\uc0c9",
"Gray": "\ud68c\uc0c9",
"Dark Yellow": "\uc9c4\ud55c \ub178\ub780\uc0c9",
"Dark Orange": "\uc9c4\ud55c \uc8fc\ud669\uc0c9",
"Dark Red": "\uc9c4\ud55c \ube68\uac04\uc0c9",
"Medium Gray": "\uc911\uac04 \ud68c\uc0c9",
"Dark Gray": "\uc9c4\ud55c \ud68c\uc0c9",
"Light Green": "\ubc1d\uc740 \ub179\uc0c9",
"Light Yellow": "\ubc1d\uc740 \ub178\ub780\uc0c9",
"Light Red": "\ubc1d\uc740 \ube68\uac04\uc0c9",
"Light Purple": "\ubc1d\uc740 \ubcf4\ub77c\uc0c9",
"Light Blue": "\ubc1d\uc740 \ud30c\ub780\uc0c9",
"Dark Purple": "\uc9c4\ud55c \ubcf4\ub77c\uc0c9",
"Dark Blue": "\uc9c4\ud55c \ud30c\ub780\uc0c9",
"Black": "\uac80\uc740\uc0c9",
"White": "\ud770\uc0c9",
"Switch to or from fullscreen mode": "\uc804\uccb4 \ud654\uba74\uc73c\ub85c\/\uc5d0\uc11c \uc804\ud658",
"Open help dialog": "\ub3c4\uc6c0\ub9d0 \ub300\ud654\ucc3d \uc5f4\uae30",
"history": "\uae30\ub85d",
"styles": "\uc2a4\ud0c0\uc77c",
"formatting": "\ud3ec\ub9f7\ud305",
"alignment": "\uc815\ub82c",
"indentation": "\ub4e4\uc5ec\uc4f0\uae30",
"permanent pen": "\uc720\uc131\ud39c",
"comments": "\uc8fc\uc11d",
"Format Painter": "\uc11c\uc2dd \ubcf5\uc0ac",
"Insert\/edit iframe": "\uc544\uc774\ud504\ub808\uc784 \uc0bd\uc785\/\ud3b8\uc9d1",
"Capitalization": "\ub300\ubb38\uc790\ud654",
"lowercase": "\uc18c\ubb38\uc790",
"UPPERCASE": "\ub300\ubb38\uc790",
"Title Case": "\uc81c\ubaa9\uc744 \ub300\ubb38\uc790\ud654",
"Permanent Pen Properties": "\uc601\uad6c \ud39c \ud2b9\uc131",
"Permanent pen properties...": "\uc601\uad6c \ud39c \ud2b9\uc131...",
"Font": "\uae00\uaf34",
"Size": "\ud06c\uae30",
"More...": "\ub354 \ubcf4\uae30...",
"Spellcheck Language": "\ub9de\ucda4\ubc95 \uac80\uc0ac \uc5b8\uc5b4",
"Select...": "\uc120\ud0dd...",
"Preferences": "\ud658\uacbd\uc124\uc815",
"Yes": "\ub124",
"No": "\uc544\ub2c8\uc624",
"Keyboard Navigation": "\ud0a4 \uc120\ud0dd",
"Version": "\ubc84\uc804",
"Anchor": "\uc575\ucee4",
"Special character": "\ud2b9\uc218\ubb38\uc790",
"Code sample": "\ucf54\ub4dc\uc0d8\ud50c",
"Color": "\uc0c9\uc0c1",
"Emoticons": "\uc774\ubaa8\ud2f0\ucf58",
"Document properties": "\ubb38\uc11c \uc18d\uc131",
"Image": "\uc774\ubbf8\uc9c0",
"Insert link": "\ub9c1\ud06c \uc0bd\uc785 ",
"Target": "\ub300\uc0c1",
"Link": "\ub9c1\ud06c",
"Poster": "\ud3ec\uc2a4\ud130",
"Media": "\ubbf8\ub514\uc5b4",
"Print": "\ucd9c\ub825",
"Prev": "\uc774\uc804",
"Find and replace": "\ucc3e\uc544\uc11c \uad50\uccb4",
"Whole words": "\uc804\uccb4 \ub2e8\uc5b4",
"Spellcheck": "\ubb38\ubc95\uccb4\ud06c",
"Caption": "\ucea1\uc158",
"Insert template": "\ud15c\ud50c\ub9bf \uc0bd\uc785"
});js/tinymce/langs/hu_HU.js000064400000051740151727150310011313 0ustar00tinymce.addI18n('hu_HU',{
"Redo": "Ism\u00e9t",
"Undo": "Visszavon\u00e1s",
"Cut": "Kiv\u00e1g\u00e1s",
"Copy": "M\u00e1sol\u00e1s",
"Paste": "Beilleszt\u00e9s",
"Select all": "Minden kijel\u00f6l\u00e9se",
"New document": "\u00daj dokumentum",
"Ok": "Rendben",
"Cancel": "M\u00e9gse",
"Visual aids": "Vizu\u00e1lis seg\u00e9deszk\u00f6z\u00f6k",
"Bold": "F\u00e9lk\u00f6v\u00e9r",
"Italic": "D\u0151lt",
"Underline": "Al\u00e1h\u00fazott",
"Strikethrough": "\u00c1th\u00fazott",
"Superscript": "Fels\u0151 index",
"Subscript": "Als\u00f3 index",
"Clear formatting": "Form\u00e1z\u00e1s t\u00f6rl\u00e9se",
"Align left": "Balra igaz\u00edt",
"Align center": "K\u00f6z\u00e9pre igaz\u00edt",
"Align right": "Jobbra igaz\u00edt",
"Justify": "Sorkiz\u00e1rt",
"Bullet list": "Listajeles lista",
"Numbered list": "Sz\u00e1mozott lista",
"Decrease indent": "Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se",
"Increase indent": "Beh\u00faz\u00e1s n\u00f6vel\u00e9se",
"Close": "Bez\u00e1r",
"Formats": "Form\u00e1tumok",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "A b\u00f6ng\u00e9sz\u0151d nem t\u00e1mogatja a k\u00f6zvetlen hozz\u00e1f\u00e9r\u00e9st a v\u00e1g\u00f3laphoz. K\u00e9rlek, haszn\u00e1ld a Ctrl+X\/C\/V billenty\u0171ket.",
"Headers": "C\u00edmsorok",
"Header 1": "C\u00edmsor 1",
"Header 2": "C\u00edmsor 2",
"Header 3": "C\u00edmsor 3",
"Header 4": "C\u00edmsor 4",
"Header 5": "C\u00edmsor 5",
"Header 6": "C\u00edmsor 6",
"Headings": "Fejl\u00e9cek",
"Heading 1": "1. fejl\u00e9c",
"Heading 2": "2. fejl\u00e9c",
"Heading 3": "3. fejl\u00e9c",
"Heading 4": "4. fejl\u00e9c",
"Heading 5": "5. fejl\u00e9c",
"Heading 6": "6. fejl\u00e9c",
"Preformatted": "El\u0151form\u00e1zott",
"Div": "Div",
"Pre": "Pre",
"Code": "K\u00f3d",
"Paragraph": "Bekezd\u00e9s",
"Blockquote": "Id\u00e9zetblokk",
"Inline": "Foly\u00f3 sz\u00f6veg",
"Blocks": "Blokkok",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Beilleszt\u00e9s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban. A tartalmak mostant\u00f3l egyszer\u0171 sz\u00f6vegk\u00e9nt lesznek beillesztve, am\u00edg nem kapcsolod ki ezt az opci\u00f3t.",
"Fonts": "Bet\u0171t\u00edpusok",
"Font Sizes": "Bet\u0171m\u00e9retek",
"Class": "Oszt\u00e1ly",
"Browse for an image": "K\u00e9p keres\u00e9se tall\u00f3z\u00e1ssal",
"OR": "VAGY",
"Drop an image here": "H\u00fazz ide egy k\u00e9pet",
"Upload": "Felt\u00f6lt\u00e9s",
"Block": "Blokk",
"Align": "Igaz\u00edt\u00e1s",
"Default": "Alap\u00e9rtelmezett",
"Circle": "K\u00f6r",
"Disc": "Pont",
"Square": "N\u00e9gyzet",
"Lower Alpha": "Kisbet\u0171",
"Lower Greek": "Kis g\u00f6r\u00f6g sz\u00e1m",
"Lower Roman": "Kis r\u00f3mai sz\u00e1m",
"Upper Alpha": "Nagybet\u0171",
"Upper Roman": "Nagy r\u00f3mai sz\u00e1m",
"Anchor...": "Horgony...",
"Name": "N\u00e9v",
"Id": "Azonos\u00edt\u00f3",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Az azonos\u00edt\u00f3nak bet\u0171vel kell kezd\u0151dnie, azut\u00e1n csak bet\u0171ket, sz\u00e1mokat, gondolatjeleket, pontokat, kett\u0151spontokat vagy al\u00e1h\u00faz\u00e1st tartalmazhat.",
"You have unsaved changes are you sure you want to navigate away?": "Nem mentett m\u00f3dos\u00edt\u00e1said vannak, biztos hogy el akarsz navig\u00e1lni?",
"Restore last draft": "Utols\u00f3 piszkozat vissza\u00e1ll\u00edt\u00e1sa",
"Special character...": "Speci\u00e1lis karakter...",
"Source code": "Forr\u00e1sk\u00f3d",
"Insert\/Edit code sample": "K\u00f3dminta besz\u00far\u00e1sa\/szerkeszt\u00e9se",
"Language": "Nyelv",
"Code sample...": "K\u00f3dminta...",
"Color Picker": "Sz\u00ednv\u00e1laszt\u00f3",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Balr\u00f3l jobbra",
"Right to left": "Jobbr\u00f3l balra",
"Emoticons": "Vigyorok",
"Emoticons...": "Hangulatjelek...",
"Metadata and Document Properties": "Metaadatok \u00e9s a dokumentum tulajdons\u00e1gai",
"Title": "C\u00edm",
"Keywords": "Kulcsszavak",
"Description": "Le\u00edr\u00e1s",
"Robots": "Robotok",
"Author": "Szerz\u0151",
"Encoding": "K\u00f3dol\u00e1s",
"Fullscreen": "Teljes k\u00e9perny\u0151",
"Action": "M\u0171velet",
"Shortcut": "Parancsikon",
"Help": "S\u00fag\u00f3",
"Address": "C\u00edm",
"Focus to menubar": "F\u00f3kusz a men\u00fcre",
"Focus to toolbar": "F\u00f3kusz az eszk\u00f6zt\u00e1rra",
"Focus to element path": "F\u00f3kusz az elemek \u00fatvonal\u00e1ra",
"Focus to contextual toolbar": "F\u00f3kusz a k\u00f6rnyezetf\u00fcgg\u0151 eszk\u00f6zt\u00e1rra",
"Insert link (if link plugin activated)": "Hivatkoz\u00e1s besz\u00far\u00e1sa (ha a hivatkoz\u00e1s b\u0151v\u00edtm\u00e9ny enged\u00e9lyezett)",
"Save (if save plugin activated)": "Ment\u00e9s (ha a ment\u00e9s b\u0151v\u00edtm\u00e9ny enged\u00e9lyezett)",
"Find (if searchreplace plugin activated)": "Keres\u00e9s (ha a keres\u00e9s \u00e9s csere b\u0151v\u00edtm\u00e9ny enged\u00e9lyezett)",
"Plugins installed ({0}):": "Telep\u00edtett b\u0151v\u00edtm\u00e9nyek ({0}):",
"Premium plugins:": "Pr\u00e9mium b\u0151v\u00edtm\u00e9nyek:",
"Learn more...": "Tudj meg t\u00f6bbet...",
"You are using {0}": "Haszn\u00e1latban: {0}",
"Plugins": "Pluginek",
"Handy Shortcuts": "Hasznos linkek",
"Horizontal line": "V\u00edzszintes vonal",
"Insert\/edit image": "K\u00e9p beilleszt\u00e9se\/szerkeszt\u00e9se",
"Alternative description": "Alternat\u00edv le\u00edr\u00e1s",
"Accessibility": "Akad\u00e1lymentes\u00edt\u00e9s",
"Image is decorative": "Dekor\u00e1ci\u00f3s k\u00e9p",
"Source": "Forr\u00e1s",
"Dimensions": "M\u00e9retek",
"Constrain proportions": "M\u00e9retar\u00e1ny",
"General": "\u00c1ltal\u00e1nos",
"Advanced": "Halad\u00f3",
"Style": "St\u00edlus",
"Vertical space": "Vertik\u00e1lis hely",
"Horizontal space": "Horizont\u00e1lis hely",
"Border": "Szeg\u00e9ly",
"Insert image": "K\u00e9p beilleszt\u00e9se",
"Image...": "K\u00e9p...",
"Image list": "K\u00e9p lista",
"Rotate counterclockwise": "Forgat\u00e1s az \u00f3ramutat\u00f3 j\u00e1r\u00e1s\u00e1val ellent\u00e9tesen",
"Rotate clockwise": "Forgat\u00e1s az \u00f3ramutat\u00f3 j\u00e1r\u00e1s\u00e1val megegyez\u0151en",
"Flip vertically": "F\u00fcgg\u0151leges t\u00fckr\u00f6z\u00e9s",
"Flip horizontally": "V\u00edzszintes t\u00fckr\u00f6z\u00e9s",
"Edit image": "K\u00e9p szerkeszt\u00e9se",
"Image options": "K\u00e9p be\u00e1ll\u00edt\u00e1sok",
"Zoom in": "Nagy\u00edt\u00e1s",
"Zoom out": "Kicsiny\u00edt\u00e9s",
"Crop": "K\u00e9p v\u00e1g\u00e1s",
"Resize": "\u00c1tm\u00e9retez\u00e9s",
"Orientation": "K\u00e9p t\u00e1jol\u00e1s",
"Brightness": "F\u00e9nyer\u0151",
"Sharpen": "\u00c9less\u00e9g",
"Contrast": "Kontraszt",
"Color levels": "Sz\u00ednszint",
"Gamma": "Gamma",
"Invert": "Inverz k\u00e9p",
"Apply": "Ment\u00e9s",
"Back": "Vissza",
"Insert date\/time": "D\u00e1tum\/id\u0151 beilleszt\u00e9se",
"Date\/time": "D\u00e1tum\/id\u0151",
"Insert\/edit link": "Hivatkoz\u00e1s beilleszt\u00e9se\/szerkeszt\u00e9se",
"Text to display": "Megjelen\u0151 sz\u00f6veg",
"Url": "Url",
"Open link in...": "Hivatkoz\u00e1s megnyit\u00e1sa...",
"Current window": "Jelenlegi ablak",
"None": "Nincs",
"New window": "\u00daj ablak",
"Open link": "Hivatkoz\u00e1s megnyit\u00e1sa",
"Remove link": "Hivatkoz\u00e1s t\u00f6rl\u00e9se",
"Anchors": "Horgonyok",
"Link...": "Hivatkoz\u00e1s...",
"Paste or type a link": "Hivatkoz\u00e1s be\u00edr\u00e1sa vagy beilleszt\u00e9se",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "A megadott URL email c\u00edmnek t\u0171nik. Szeretn\u00e9d hozz\u00e1adni a sz\u00fcks\u00e9ges mailto: el\u0151tagot?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "A megadott URL k\u00fcls\u0151 c\u00edmnek t\u0171nik. Szeretn\u00e9d hozz\u00e1adni a sz\u00fcks\u00e9ges http:\/\/ el\u0151tagot?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Az URL amit megadt\u00e1l k\u00fcls\u0151 hivatkoz\u00e1s. Szeretn\u00e9d https:\/\/ el\u0151taggal megnyitni?",
"Link list": "Hivatkoz\u00e1slista",
"Insert video": "Vide\u00f3 beilleszt\u00e9se",
"Insert\/edit video": "Vide\u00f3 beilleszt\u00e9se\/szerkeszt\u00e9se",
"Insert\/edit media": "M\u00e9dia besz\u00far\u00e1sa\/beilleszt\u00e9se",
"Alternative source": "Alternat\u00edv forr\u00e1s",
"Alternative source URL": "Alternat\u00edv forr\u00e1s URL",
"Media poster (Image URL)": "M\u00e9dia poszter (k\u00e9p URL)",
"Paste your embed code below:": "Illeszd be a be\u00e1gyaz\u00f3 k\u00f3dot alulra:",
"Embed": "Be\u00e1gyaz\u00e1s",
"Media...": "M\u00e9dia...",
"Nonbreaking space": "Nem t\u00f6rhet\u0151 sz\u00f3k\u00f6z",
"Page break": "Oldalt\u00f6r\u00e9s",
"Paste as text": "Beilleszt\u00e9s sz\u00f6vegk\u00e9nt",
"Preview": "El\u0151n\u00e9zet",
"Print...": "Nyomtat\u00e1s...",
"Save": "Ment\u00e9s",
"Find": "Keres\u00e9s",
"Replace with": "Csere erre",
"Replace": "Csere",
"Replace all": "Az \u00f6sszes cser\u00e9je",
"Previous": "El\u0151z\u0151",
"Next": "K\u00f6vetkez\u0151",
"Find and Replace": "Keres\u00e9s \u00e9s csere",
"Find and replace...": "Keres\u00e9s \u00e9s csere...",
"Could not find the specified string.": "A be\u00edrt kifejez\u00e9s nem tal\u00e1lhat\u00f3.",
"Match case": "Kis \u00e9s nagybet\u0171k megk\u00fcl\u00f6nb\u00f6ztet\u00e9se",
"Find whole words only": "Csak teljes szavak keres\u00e9se",
"Find in selection": "Keres\u00e9s a kiv\u00e1laszt\u00e1sban",
"Spellcheck": "Helyes\u00edr\u00e1s ellen\u0151rz\u00e9s",
"Spellcheck Language": "Helyes\u00edr\u00e1s-ellen\u0151rz\u00e9s nyelve",
"No misspellings found.": "Nincsenek el\u00edr\u00e1sok.",
"Ignore": "Figyelmen k\u00edv\u00fcl hagy",
"Ignore all": "Mindent figyelmen k\u00edv\u00fcl hagy",
"Finish": "Befejez\u00e9s",
"Add to Dictionary": "Sz\u00f3t\u00e1rhoz ad",
"Insert table": "T\u00e1bl\u00e1zat beilleszt\u00e9se",
"Table properties": "T\u00e1bl\u00e1zat tulajdons\u00e1gok",
"Delete table": "T\u00e1bl\u00e1zat t\u00f6rl\u00e9se",
"Cell": "Cella",
"Row": "Sor",
"Column": "Oszlop",
"Cell properties": "Cella tulajdons\u00e1gok",
"Merge cells": "Cell\u00e1k egyes\u00edt\u00e9se",
"Split cell": "Cell\u00e1k sz\u00e9tv\u00e1laszt\u00e1sa",
"Insert row before": "Sor besz\u00far\u00e1sa el\u00e9",
"Insert row after": "Sor besz\u00far\u00e1sa m\u00f6g\u00e9",
"Delete row": "Sor t\u00f6rl\u00e9se",
"Row properties": "Sor tulajdons\u00e1gai",
"Cut row": "Sor kiv\u00e1g\u00e1sa",
"Copy row": "Sor m\u00e1sol\u00e1sa",
"Paste row before": "Sor beilleszt\u00e9se el\u00e9",
"Paste row after": "Sor beilleszt\u00e9se m\u00f6g\u00e9",
"Insert column before": "Oszlop besz\u00far\u00e1sa el\u00e9",
"Insert column after": "Oszlop besz\u00far\u00e1sa m\u00f6g\u00e9",
"Delete column": "Oszlop t\u00f6rl\u00e9se",
"Cols": "Oszlopok",
"Rows": "Sorok",
"Width": "Sz\u00e9less\u00e9g",
"Height": "Magass\u00e1g",
"Cell spacing": "Cell\u00e1k t\u00e1vols\u00e1ga",
"Cell padding": "Cella m\u00e9rete",
"Caption": "Felirat",
"Show caption": "C\u00edm megjelen\u00edt\u00e9se",
"Left": "Bal",
"Center": "K\u00f6z\u00e9p",
"Right": "Jobb",
"Cell type": "Cella t\u00edpusa",
"Scope": "Hat\u00f3k\u00f6r",
"Alignment": "Igaz\u00edt\u00e1s",
"H Align": "V\u00edzszintes igaz\u00edt\u00e1s",
"V Align": "F\u00fcgg\u0151leges igaz\u00edt\u00e1s",
"Top": "Fel\u00fcl",
"Middle": "K\u00f6z\u00e9pen",
"Bottom": "Alul",
"Header cell": "Fejl\u00e9c cella",
"Row group": "Sor csoport",
"Column group": "Oszlop csoport",
"Row type": "Sor t\u00edpus",
"Header": "Fejl\u00e9c",
"Body": "Sz\u00f6vegt\u00f6rzs",
"Footer": "L\u00e1bl\u00e9c",
"Border color": "Szeg\u00e9ly sz\u00edne",
"Insert template...": "Sablon besz\u00far\u00e1sa...",
"Templates": "Sablonok",
"Template": "Sablon",
"Text color": "Sz\u00f6veg sz\u00edne",
"Background color": "H\u00e1tt\u00e9r sz\u00edn",
"Custom...": "Egy\u00e9ni...",
"Custom color": "Egy\u00e9ni sz\u00edn",
"No color": "Nincs sz\u00edn",
"Remove color": "Sz\u00edn t\u00f6rl\u00e9se",
"Table of Contents": "Tartalomjegyz\u00e9k",
"Show blocks": "Blokkok mutat\u00e1sa",
"Show invisible characters": "L\u00e1thatatlan karakterek mutat\u00e1sa",
"Word count": "Szavak sz\u00e1ma",
"Count": "Sz\u00e1m",
"Document": "Dokumentum",
"Selection": "Kiv\u00e1laszt\u00e1s",
"Words": "Szavak",
"Words: {0}": "Szavak: {0}",
"{0} words": "{0} sz\u00f3",
"File": "F\u00e1jl",
"Edit": "Szerkeszt\u00e9s",
"Insert": "Beilleszt\u00e9s",
"View": "N\u00e9zet",
"Format": "Form\u00e1tum",
"Table": "T\u00e1bl\u00e1zat",
"Tools": "Eszk\u00f6z\u00f6k",
"Powered by {0}": "\u00dczemelteti: {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text ter\u00fclet. Nyomj ALT-F9-et a men\u00fch\u00f6z. Nyomj ALT-F10-et az eszk\u00f6zt\u00e1rhoz. Nyomj ALT-0-t a s\u00fag\u00f3hoz",
"Image title": "K\u00e9p c\u00edme",
"Border width": "Szeg\u00e9ly vastags\u00e1ga",
"Border style": "Szeg\u00e9ly st\u00edlusa",
"Error": "Hiba",
"Warn": "Figyelmeztet\u00e9s",
"Valid": "\u00c9rv\u00e9nyes",
"To open the popup, press Shift+Enter": "A felugr\u00f3 ablak megnyit\u00e1s\u00e1hoz nyomja meg a Shift+Enter billenty\u0171t",
"Rich Text Area. Press ALT-0 for help.": "Vizu\u00e1lis szerkeszt\u0151 ter\u00fclet. Nyomjon ALT-0-t a s\u00fag\u00f3hoz.",
"System Font": "Rendszer-bet\u0171t\u00edpus",
"Failed to upload image: {0}": "Nem siker\u00fclt felt\u00f6lteni a k\u00e9pet: {0}",
"Failed to load plugin: {0} from url {1}": "Nem siker\u00fclt bet\u00f6lteni a be\u00e9p\u00fcl\u0151 modult: {0} err\u0151l a webc\u00edmr\u0151l: {1}",
"Failed to load plugin url: {0}": "Nem siker\u00fclt bet\u00f6lteni a be\u00e9p\u00fcl\u0151 modul url-\u00e9t: {0}",
"Failed to initialize plugin: {0}": "Nem siker\u00fclt inicializ\u00e1lni a be\u00e9p\u00fcl\u0151 modult: {0}",
"example": "p\u00e9lda",
"Search": "Keres\u00e9s",
"All": "Minden",
"Currency": "P\u00e9nznem",
"Text": "Sz\u00f6veg",
"Quotations": "Id\u00e9z\u0151jelek",
"Mathematical": "Matematikai",
"Extended Latin": "B\u0151v\u00edtett latin",
"Symbols": "Szimb\u00f3lumok",
"Arrows": "Nyilak",
"User Defined": "Felhaszn\u00e1l\u00f3 \u00e1ltal meghat\u00e1rozott",
"dollar sign": "doll\u00e1r jel",
"currency sign": "valuta jel",
"euro-currency sign": "euro-valuta jel",
"colon sign": "kett\u0151spont",
"cruzeiro sign": "cruzeiro jel",
"french franc sign": "francia frank jel",
"lira sign": "l\u00edra jel",
"mill sign": "mill jel",
"naira sign": "naira jel",
"peseta sign": "peseta jel",
"rupee sign": "r\u00fapia jel",
"won sign": "won jel",
"new sheqel sign": "\u00faj shekel jel",
"dong sign": "dong jel",
"kip sign": "kip jel",
"tugrik sign": "tugrik jel",
"drachma sign": "drachma jel",
"german penny symbol": "n\u00e9met penny jel",
"peso sign": "peso jel",
"guarani sign": "guarani jel",
"austral sign": "austral jel",
"hryvnia sign": "hrivnya jel",
"cedi sign": "cedi jel",
"livre tournois sign": "livre tournois jel",
"spesmilo sign": "spesmilo jel",
"tenge sign": "tenge jel",
"indian rupee sign": "r\u00fapel jel",
"turkish lira sign": "t\u00f6r\u00f6k l\u00edra jel",
"nordic mark sign": "\u00e9szaki m\u00e1rka jel",
"manat sign": "manat jel",
"ruble sign": "rubel jel",
"yen character": "jen karakter",
"yuan character": "j\u00fcan karakter",
"yuan character, in hong kong and taiwan": "hongkongi \u00e9s tajvani j\u00fcan karakter",
"yen\/yuan character variant one": "jen\/j\u00fcan karaktervari\u00e1ns",
"Loading emoticons...": "Hangulatjelek bet\u00f6lt\u00e9se...",
"Could not load emoticons": "Nem siker\u00fclt a hangulatjelek bet\u00f6lt\u00e9se",
"People": "Emberek",
"Animals and Nature": "\u00c1llatok \u00e9s term\u00e9szet",
"Food and Drink": "\u00c9tel, ital",
"Activity": "Tev\u00e9kenys\u00e9gek",
"Travel and Places": "Utaz\u00e1s \u00e9s helyek",
"Objects": "T\u00e1rgyak",
"Flags": "Z\u00e1szl\u00f3k",
"Characters": "Karakterek",
"Characters (no spaces)": "Karakterek (sz\u00f3k\u00f6z\u00f6k n\u00e9lk\u00fcl)",
"{0} characters": "{0} karakter",
"Error: Form submit field collision.": "Hiba: \u00dctk\u00f6z\u00e9s t\u00f6rt\u00e9nt az \u0171rlap elk\u00fcld\u00e9sekor.",
"Error: No form element found.": "Hiba: Nem tal\u00e1lhat\u00f3 \u0171rlap elem.",
"Update": "Friss\u00edt\u00e9s",
"Color swatch": "Sz\u00ednpaletta",
"Turquoise": "T\u00fcrkiz",
"Green": "Z\u00f6ld",
"Blue": "K\u00e9k",
"Purple": "Lila",
"Navy Blue": "Tengerk\u00e9k",
"Dark Turquoise": "S\u00f6t\u00e9tt\u00fcrkiz",
"Dark Green": "S\u00f6t\u00e9tz\u00f6ld",
"Medium Blue": "Kir\u00e1lyk\u00e9k",
"Medium Purple": "K\u00f6z\u00e9plila",
"Midnight Blue": "\u00c9jf\u00e9lk\u00e9k",
"Yellow": "S\u00e1rga",
"Orange": "Narancss\u00e1rga",
"Red": "Piros",
"Light Gray": "Vil\u00e1gossz\u00fcrke",
"Gray": "Sz\u00fcrke",
"Dark Yellow": "S\u00f6t\u00e9ts\u00e1rga",
"Dark Orange": "S\u00f6t\u00e9t narancss\u00e1rga",
"Dark Red": "S\u00f6t\u00e9tv\u00f6r\u00f6s",
"Medium Gray": "K\u00f6z\u00e9psz\u00fcrke",
"Dark Gray": "S\u00f6t\u00e9tsz\u00fcrke",
"Light Green": "Vil\u00e1gosz\u00f6ld",
"Light Yellow": "Vil\u00e1goss\u00e1rga",
"Light Red": "Vil\u00e1gospiros",
"Light Purple": "Vil\u00e1goslila",
"Light Blue": "Vil\u00e1gosk\u00e9k",
"Dark Purple": "S\u00f6t\u00e9tlila",
"Dark Blue": "S\u00f6t\u00e9tk\u00e9k",
"Black": "Fekete",
"White": "Feh\u00e9r",
"Switch to or from fullscreen mode": "Teljes vagy norm\u00e1l k\u00e9perny\u0151s m\u00f3dra v\u00e1lt\u00e1s",
"Open help dialog": "S\u00fag\u00f3ablak megnyit\u00e1sa",
"history": "el\u0151zm\u00e9nyek",
"styles": "st\u00edlusok",
"formatting": "form\u00e1z\u00e1s",
"alignment": "igaz\u00edt\u00e1s",
"indentation": "beh\u00faz\u00e1s",
"Font": "Bet\u0171t\u00edpus",
"Size": "M\u00e9ret",
"More...": "Tov\u00e1bbiak...",
"Select...": "V\u00e1lasszon...",
"Preferences": "Preferenci\u00e1k",
"Yes": "Igen",
"No": "Nem",
"Keyboard Navigation": "Billenty\u0171zettel val\u00f3 navig\u00e1l\u00e1s",
"Version": "Verzi\u00f3",
"Code view": "K\u00f3d n\u00e9zet",
"Open popup menu for split buttons": "Felugr\u00f3 men\u00fc megnyit\u00e1sa az osztott gombokhoz",
"List Properties": "Lista tulajdons\u00e1gai",
"List properties...": "Lista tulajdons\u00e1gai...",
"Start list at number": "Lista kezd\u00e9se ett\u0151l a sz\u00e1mt\u00f3l",
"Line height": "Sor magass\u00e1ga",
"comments": "megjegyz\u00e9sek",
"Format Painter": "Form\u00e1tumm\u00e1sol\u00f3",
"Insert\/edit iframe": "iframe besz\u00far\u00e1sa\/szerkeszt\u00e9se",
"Capitalization": "Nagybet\u0171s \u00edr\u00e1s",
"lowercase": "kisbet\u0171s",
"UPPERCASE": "NAGYBET\u0170S",
"Title Case": "C\u00edm szerinti \u00edr\u00e1sm\u00f3d",
"permanent pen": "sz\u00f6vegkiemel\u0151",
"Permanent Pen Properties": "Tart\u00f3s toll tulajdons\u00e1gai",
"Permanent pen properties...": "Tart\u00f3s toll tulajdons\u00e1gai...",
"case change": "esetv\u00e1lt\u00e1s",
"page embed": "oldal be\u00e1gyaz\u00e1s",
"Advanced sort...": "Speci\u00e1lis rendez\u00e9s... ",
"Advanced Sort": "Speci\u00e1lis rendez\u00e9s",
"Sort table by column ascending": "T\u00e1bl\u00e1zat rendez\u00e9se oszlop szerint n\u00f6vekv\u0151 sorrendben",
"Sort table by column descending": "T\u00e1bl\u00e1zat rendez\u00e9se oszlop szerint cs\u00f6kken\u0151 sorrendben",
"Sort": "Rendez\u00e9s",
"Order": "Sorrend",
"Sort by": "Rendez\u00e9s",
"Ascending": "N\u00f6vekv\u0151",
"Descending": "Cs\u00f6kken\u0151",
"Column {0}": "Oszlop {0}",
"Row {0}": "Sor {0}",
"Spellcheck...": "Helyes\u00edr\u00e1s ellen\u0151rz\u00e9s...",
"Misspelled word": "Helytelen\u00fcl \u00edrt sz\u00f3",
"Suggestions": "Javaslatok",
"Change": "V\u00e1ltoz\u00e1s",
"Finding word suggestions": "Sz\u00f3javaslatok keres\u00e9se",
"Success": "Siker",
"Repair": "Jav\u00edt\u00e1s",
"Issue {0} of {1}": "Probl\u00e9ma {0} - {1}",
"Images must be marked as decorative or have an alternative text description": "A k\u00e9peket dekor\u00e1ci\u00f3k\u00e9nt kell megjel\u00f6lni, vagy alternat\u00edv sz\u00f6veges le\u00edr\u00e1ssal kell ell\u00e1tni",
"Images must have an alternative text description. Decorative images are not allowed.": "A k\u00e9peknek alternat\u00edv sz\u00f6veges le\u00edr\u00e1ssal kell rendelkezni\u00fck. Dekor\u00e1ci\u00f3s k\u00e9pek nem megengedettek.",
"Or provide alternative text:": "Vagy adjon meg alternat\u00edv sz\u00f6veget:",
"Make image decorative:": "Dekor\u00e1ci\u00f3s k\u00e9p:",
"ID attribute must be unique": "Az azonos\u00edt\u00f3 attrib\u00fatumnak egyedinek kell lennie",
"Make ID unique": "Egyedi azonos\u00edt\u00f3 l\u00e9trehoz\u00e1sa",
"Keep this ID and remove all others": "Ennek kiv\u00e9tel\u00e9vel az \u00f6sszes azonos\u00edt\u00f3 elt\u00e1vol\u00edt\u00e1sa",
"Remove this ID": "Azonos\u00edt\u00f3 elt\u00e1vol\u00edt\u00e1sa",
"Remove all IDs": "\u00d6sszes azonos\u00edt\u00f3 elt\u00e1vol\u00edt\u00e1sa",
"Checklist": "Ellen\u0151rz\u0151 lista",
"Anchor": "Horgony",
"Special character": "Speci\u00e1lis karakter",
"Code sample": "K\u00f3d p\u00e9lda",
"Color": "Sz\u00edn",
"Document properties": "Dokumentum tulajdons\u00e1gai",
"Image description": "K\u00e9p le\u00edr\u00e1sa",
"Image": "K\u00e9p",
"Insert link": "Hivatkoz\u00e1s beilleszt\u00e9se",
"Target": "C\u00e9l",
"Link": "Hivatkoz\u00e1s",
"Poster": "El\u0151n\u00e9zeti k\u00e9p",
"Media": "M\u00e9dia",
"Print": "Nyomtat\u00e1s",
"Prev": "El\u0151z\u0151",
"Find and replace": "Keres\u00e9s \u00e9s csere",
"Whole words": "Csak ha ez a teljes sz\u00f3",
"Insert template": "Sablon beilleszt\u00e9se"
});js/tinymce/langs/eu.js000064400000035677151727150310010727 0ustar00tinymce.addI18n('eu',{
"Redo": "Berregin",
"Undo": "Desegin",
"Cut": "Ebaki",
"Copy": "Kopiatu",
"Paste": "Itsatsi",
"Select all": "Hautatu dena",
"New document": "Dokumentu berria",
"Ok": "Ondo",
"Cancel": "Ezeztatu",
"Visual aids": "Laguntza bisualak",
"Bold": "Lodia",
"Italic": "Etzana",
"Underline": "Azpimarratua",
"Strikethrough": "Marratua",
"Superscript": "Goi-indizea",
"Subscript": "Azpiindizea",
"Clear formatting": "Ezabatu formatua",
"Align left": "Lerrokatu ezkerrean",
"Align center": "Lerrokatu erdian",
"Align right": "Lerrokatu eskuinean",
"Justify": "Justifikatuta",
"Bullet list": "Bulet zerrenda",
"Numbered list": "Zenbaki-zerrenda",
"Decrease indent": "Txikitu koska",
"Increase indent": "Handitu koska",
"Close": "Itxi",
"Formats": "Formatuak",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Zure nabigatzaileak ez du arbela zuzenean erabiltzeko euskarririk. Mesedez erabili CTRL+X\/C\/V teklatuko lasterbideak.",
"Headers": "Goiburuak",
"Header 1": "1. goiburua",
"Header 2": "2. goiburua",
"Header 3": "3. goiburua",
"Header 4": "4. goiburua",
"Header 5": "5. goiburua",
"Header 6": "6. goiburua",
"Headings": "Izenburuak",
"Heading 1": "1. izenburua",
"Heading 2": "2. izenburua",
"Heading 3": "3. izenburua",
"Heading 4": "4. izenburua",
"Heading 5": "5. izenburua",
"Heading 6": "6. izenburua",
"Preformatted": "Aurreformateatuta",
"Div": "Div",
"Pre": "Pre",
"Code": "Kodea",
"Paragraph": "Paragrafoa",
"Blockquote": "Blockquote",
"Inline": "Txertatuta",
"Blocks": "Blokeak",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Itsatsi testu arrunt moduan dago orain. Edukiak testu arruntak bezala itsatsiko dira aukera hau itzaltzen duzunera arte.",
"Fonts": "Letra-motak",
"Font Sizes": "Letra-tamainak",
"Class": "Klasea",
"Browse for an image": "Irudia arakatu",
"OR": "EDO",
"Drop an image here": "Irudia hona ekarri",
"Upload": "Kargatu",
"Block": "Blokea",
"Align": "Lerrokatu",
"Default": "Lehenetstia",
"Circle": "Zirkulua",
"Disc": "Diskoa",
"Square": "Karratua",
"Lower Alpha": "Behe alfa",
"Lower Greek": "Behe grekoa",
"Lower Roman": "Behe erromatarra",
"Upper Alpha": "Goi alfa",
"Upper Roman": "Goi erromatarra",
"Anchor...": "Aingura...",
"Name": "Izena",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Ida hizki batekin hasi behar da, jarraian hizkiak, zenbakiak, gidoiak, puntuak, bi-puntu edo azpiko marrak bakarrik izan ditzake.",
"You have unsaved changes are you sure you want to navigate away?": "Gorde gabeko aldaketak dituzu, zihur zaude hemendik irten nahi duzula?",
"Restore last draft": "Leheneratu azken zirriborroa",
"Special character...": "Karaktere bereziak...",
"Source code": "Iturburu-kodea",
"Insert\/Edit code sample": "Txertatu\/editatu kode adibidea",
"Language": "Hizkuntza",
"Code sample...": "Kode adibidea...",
"Color Picker": "Kolore-hautatzailea",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Ezkerretik eskuinera",
"Right to left": "Eskuinetik ezkerrera",
"Emoticons...": "Emotikonoak...",
"Metadata and Document Properties": "Metadatuak eta dokumentuaren propietateak",
"Title": "Titulua",
"Keywords": "Hitz gakoak",
"Description": "Deskribapena",
"Robots": "Robotak",
"Author": "Egilea",
"Encoding": "Encoding",
"Fullscreen": "Pantaila osoa",
"Action": "Akzioa",
"Shortcut": "Laster tekla",
"Help": "Laguntza",
"Address": "Helbidea",
"Focus to menubar": "Fokoa menu-barrara eraman",
"Focus to toolbar": "Fokoa tresna-barrara eraman",
"Focus to element path": "Fokoa elementuaren bidera eraman",
"Focus to contextual toolbar": "Fokoa kontestuko tresna-barrara eraman",
"Insert link (if link plugin activated)": "Lotura txertatu (lotura plugina aktibatuta badago)",
"Save (if save plugin activated)": "Gorde (gordetzeko plugina aktibatuta badago)",
"Find (if searchreplace plugin activated)": "Bilatu (bilatuordezkatu plugina instalatuta badago)",
"Plugins installed ({0}):": "Instalatutako pluginak ({0}):",
"Premium plugins:": "Premium pluginak:",
"Learn more...": "Gehiago ikasi...",
"You are using {0}": "{0} erabiltzen ari zara",
"Plugins": "Pluginak",
"Handy Shortcuts": "Laster-tekla erabilgarriak",
"Horizontal line": "Marra horizontala",
"Insert\/edit image": "Irudia txertatu\/editatu",
"Image description": "Irudiaren deskribapena",
"Source": "Iturburua",
"Dimensions": "Neurriak",
"Constrain proportions": "Zerraditu proportzioak",
"General": "Orokorra",
"Advanced": "Aurreratua",
"Style": "Estiloa",
"Vertical space": "Hutsune bertikala",
"Horizontal space": "Hutsune horizontala",
"Border": "Ertza",
"Insert image": "Irudia txertatu",
"Image...": "Irudia...",
"Image list": "Irudi zerrenda",
"Rotate counterclockwise": "Erlojuaren aurkako eran biratu",
"Rotate clockwise": "Erlojuaren eran biratu",
"Flip vertically": "Bertikalki irauli",
"Flip horizontally": "Horizontalki irauli",
"Edit image": "Irudia editatu",
"Image options": "Irudiaren aukerak",
"Zoom in": "Zooma handiagotu",
"Zoom out": "Zooma txikiagotu",
"Crop": "Moztu",
"Resize": "Tamaina aldatu",
"Orientation": "Orientazioa",
"Brightness": "Distira",
"Sharpen": "Zorroztu",
"Contrast": "Kontrastatu",
"Color levels": "Kolore mailak",
"Gamma": "Gamma",
"Invert": "Biratu",
"Apply": "Gorde",
"Back": "Atzera",
"Insert date\/time": "Data\/ordua txertatu",
"Date\/time": "Data\/ordua",
"Insert\/Edit Link": "Lotura txertatu\/aldatu...",
"Insert\/edit link": "Esteka txertatu\/editatu",
"Text to display": "Bistaratzeko testua",
"Url": "Url",
"Open link in...": "Lotura hemen ireki...",
"Current window": "Leiho hau",
"None": "Bat ere ez",
"New window": "Lehio berria",
"Remove link": "Kendu esteka",
"Anchors": "Estekak",
"Link...": "Esteka...",
"Paste or type a link": "Itsatsu edo idatzi lotura",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Sartu duzun URL-ak e-posta helbidea dela dirudi. Nahi duzu dagokion mailto: aurrizkia gehitzea?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Sartu duzun URL-ak kanpoko esteka dela dirudi. Nahi duzu dagokion http:\/\/ aurrizkia gehitzea?",
"Link list": "Loturen zerrenda",
"Insert video": "Bideoa txertatu",
"Insert\/edit video": "Bideoa txertatu\/editatu",
"Insert\/edit media": "Media txertatu\/editatu",
"Alternative source": "Iturburu alternatiboa",
"Alternative source URL": "Ordezko jatorri URL-a",
"Media poster (Image URL)": "Media posterra (irudiaren URL-a)",
"Paste your embed code below:": "Itsatsi hemen zure enkapsulatzeko kodea:",
"Embed": "Kapsulatu",
"Media...": "Multimedia...",
"Nonbreaking space": "Zuriune zatiezina",
"Page break": "Orrialde-jauzia",
"Paste as text": "Itsatsi testu bezala",
"Preview": "Aurrebista",
"Print...": "Inprimatu...",
"Save": "Gorde",
"Find": "Bilatu",
"Replace with": "Honekin ordeztu",
"Replace": "Ordeztu",
"Replace all": "Ordeztu dena",
"Previous": "Aurrekoa",
"Next": "Hurrengoa",
"Find and replace...": "Bilatu eta ordezkatu...",
"Could not find the specified string.": "Ezin izan da zehaztutako katea aurkitu.",
"Match case": "Maiuskula\/minuskula",
"Find whole words only": "Hitz osoak bakarrik bilatu",
"Spell check": "Hizkuntza zuzenketa",
"Ignore": "Ez ikusi",
"Ignore all": "Ez ikusi guztia",
"Finish": "Amaitu",
"Add to Dictionary": "Hiztegira gehitu",
"Insert table": "Txertatu taula",
"Table properties": "Taularen propietateak",
"Delete table": "Taula ezabatu",
"Cell": "Gelaxka",
"Row": "Errenkada",
"Column": "Zutabea",
"Cell properties": "Gelaxkaren propietateak",
"Merge cells": "Batu gelaxkak",
"Split cell": "Banatu gelaxkak",
"Insert row before": "Txertatu errenkada aurretik",
"Insert row after": "Txertatu errenkada ostean",
"Delete row": "Ezabatu errenkada",
"Row properties": "Errenkadaren propietateak",
"Cut row": "Ebaki errenkada",
"Copy row": "Kopiatu errenkada",
"Paste row before": "Itsatsi errenkada aurretik",
"Paste row after": "Itsatsi errenkada ostean",
"Insert column before": "Txertatu zutabe aurretik",
"Insert column after": "Txertatu zutabea ostean",
"Delete column": "Ezabatu zutabea",
"Cols": "Zutabeak",
"Rows": "Errenkadak",
"Width": "Zabalera",
"Height": "Altuera",
"Cell spacing": "Gelaxka arteko tartea",
"Cell padding": "Gelaxken betegarria",
"Show caption": "Erakutsi irudi-oina erakutsi",
"Left": "Ezkerra",
"Center": "Erdia",
"Right": "Eskuina",
"Cell type": "Gelaxka mota",
"Scope": "Esparrua",
"Alignment": "Lerrokatzea",
"H Align": "Lerrokatze horizontala",
"V Align": "Lerrokatze bertikala",
"Top": "Goian",
"Middle": "Erdian",
"Bottom": "Behean",
"Header cell": "Goiburuko gelaxka",
"Row group": "Lerro taldea",
"Column group": "Zutabe taldea",
"Row type": "Lerro mota",
"Header": "Goiburua",
"Body": "Gorputza",
"Footer": "Oina",
"Border color": "Inguruko marraren kolorea",
"Insert template...": "Txantiloia txertatu...",
"Templates": "Txantiloiak",
"Template": "Txantiloia",
"Text color": "Testuaren kolorea",
"Background color": "Atzeko kolorea",
"Custom...": "Pertsonalizatu",
"Custom color": "Pertsonalizatutako kolorea",
"No color": "Kolorerik ez",
"Remove color": "Kendu kolorea",
"Table of Contents": "Edukien taula",
"Show blocks": "Erakutsi blokeak",
"Show invisible characters": "Erakutsi karaktere izkutuak",
"Word count": "Hizki-kontaketa",
"Count": "Zenbatu",
"Document": "Dokumentua",
"Selection": "Aukera",
"Words": "Hitzak",
"Words: {0}": "Hitzak: {0}",
"{0} words": "{0} hitz",
"File": "Fitxategia",
"Edit": "Editatu",
"Insert": "Sartu",
"View": "Ikusi",
"Format": "Formatua",
"Table": "Taula",
"Tools": "Tresnak",
"Powered by {0}": "{0}rekin egina",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Testu aberastuko area. Sakatu ALT-F9 menurako. Sakatu ALT-F10 tresna-barrarako. Sakatu ALT-0 laguntzarako",
"Image title": "Irudiaren izenburua",
"Border width": "Ertzaren zabalera",
"Border style": "Ertzaren estiloa",
"Error": "Errorea",
"Warn": "Oharra",
"Valid": "Zuzena",
"To open the popup, press Shift+Enter": "Leiho berria irekitzeko, sakatu Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Testu aberastuko area. Sakatu ALT-0 laguntza lortzeko.",
"System Font": "Sistemaren letra-mota",
"Failed to upload image: {0}": "Errorea gertatu da irudia igotzean: {0}",
"Failed to load plugin: {0} from url {1}": "Errorea gertatu da {0} plugina kargatzean {1} url-tik",
"Failed to load plugin url: {0}": "Errorea gertatu da pluginaren url-a kargatzean: {0}",
"Failed to initialize plugin: {0}": "Errorea gertatu da plugina hasieratzean: {0}",
"example": "adibidea",
"Search": "Bilatu",
"All": "Guztiak",
"Currency": "Moneta",
"Text": "Testua",
"Quotations": "Aipuak",
"Mathematical": "Matematika",
"Extended Latin": "Latin zabaldua",
"Symbols": "Ikurrak",
"Arrows": "Geziak",
"User Defined": "Erabiltzaileak definitutakoak",
"dollar sign": "dolarraren ikurra",
"currency sign": "monetaren ikurra",
"euro-currency sign": "euroaren ikurra",
"colon sign": "bi puntuen ikurra",
"cruzeiro sign": "cruzeiroaren ikurra",
"french franc sign": "libera frantsesaren ikurra",
"lira sign": "liraren ikurra",
"mill sign": "millaren ikurra",
"naira sign": "naira ikurra",
"peseta sign": "pezetaren ikurra",
"rupee sign": "rupiaren ikurra",
"won sign": "wonaren ikurra",
"new sheqel sign": "sheqel berriaren ikurra",
"dong sign": "dongaren ikurra",
"kip sign": "kiparen ikurra",
"tugrik sign": "tugrikaren ikurra",
"drachma sign": "drakmaren ikurra",
"german penny symbol": "alemaniako peniaren ikurra",
"peso sign": "pesoaren ikurra",
"guarani sign": "guaraniaren ikurra",
"austral sign": "australaren ikurra",
"hryvnia sign": "hryvniaren ikurra",
"cedi sign": "cediaren ikurra",
"livre tournois sign": "libre tournoisaren ikurra",
"spesmilo sign": "spesmiloaren ikurra",
"tenge sign": "tengearen ikurra",
"indian rupee sign": "indiako rupiaren ikurra",
"turkish lira sign": "lira turkiarraren ikurra",
"nordic mark sign": "iparraldeko markoaren ikurra",
"manat sign": "manataren ikurra",
"ruble sign": "rubloaren ikurra",
"yen character": "yenaren karakterea",
"yuan character": "yuanaren karakterea",
"yuan character, in hong kong and taiwan": "yuanaren karakterea, hong kong eta taiwanen",
"yen\/yuan character variant one": "yen\/yuan karakterearen 1go bariantea",
"Loading emoticons...": "Emotikonoak kargatzen...",
"Could not load emoticons": "Ezin izan dira emotikonoak kargatu",
"People": "Jendea",
"Animals and Nature": "Animaliak eta natura",
"Food and Drink": "Janari eta edaria",
"Activity": "Ekintzak",
"Travel and Places": "Bidaiak eta lekuak",
"Objects": "Objektuak",
"Flags": "Banderak",
"Characters": "Karaktereak",
"Characters (no spaces)": "Karaktereak (espaziorik gabe)",
"{0} characters": "{0} karaktere",
"Error: Form submit field collision.": "Errorea: formularioaren eremuetan talka gertatu da.",
"Error: No form element found.": "Errorea: ez da formularioa aurkitu.",
"Update": "Eguneratu",
"Color swatch": "Koloreak",
"Turquoise": "Turkesa",
"Green": "Berdea",
"Blue": "Urdina",
"Purple": "Morea",
"Navy Blue": "Itsas-urdina",
"Dark Turquoise": "Turkesa iluna",
"Dark Green": "Berde iluna",
"Medium Blue": "Tarteko urdina",
"Medium Purple": "Tarteko morea",
"Midnight Blue": "Gauerdiko urdina",
"Yellow": "Horia",
"Orange": "Laranja",
"Red": "Gorria",
"Light Gray": "Gris argia",
"Gray": "Grisa",
"Dark Yellow": "Hori iluna",
"Dark Orange": "Laranja iluna",
"Dark Red": "Gorri iluna",
"Medium Gray": "Tarteko grisa",
"Dark Gray": "Gris iluna",
"Light Green": "Berde argia",
"Light Yellow": "Hori argia",
"Light Red": "Gorri argia",
"Light Purple": "More argia",
"Light Blue": "Urdin argia",
"Dark Purple": "More iluna",
"Dark Blue": "Urdin iluna",
"Black": "Beltza",
"White": "Zuria",
"Switch to or from fullscreen mode": "Pantaila osoko modura joan edo handik itzuli",
"Open help dialog": "Laguntza elkarrizketa ireki",
"history": "historia",
"styles": "estiloak",
"formatting": "formatua",
"alignment": "lerrokatzea",
"indentation": "koska",
"permanent pen": "boligrafo iraunkorra",
"comments": "iruzkinak",
"Format Painter": "Formatua kopiatu",
"Insert\/edit iframe": "Txertatu\/editatu bideoa",
"Capitalization": "Letra larriak",
"lowercase": "Letra xeheak",
"UPPERCASE": "Maiuskula",
"Title Case": "Izenburu kasua",
"Permanent Pen Properties": "Boligrafo iraunkorraren ezaugarriak",
"Permanent pen properties...": "Boligrafo iraunkorraren ezaugarriak...",
"Font": "Letra-motak",
"Size": "Tamaina",
"More...": "Gehiago...",
"Spellcheck Language": "Zuzenketa ortografikoaren hizkuntza",
"Select...": "Aukeratu...",
"Preferences": "Lehentasunak",
"Yes": "Bai",
"No": "Ez",
"Keyboard Navigation": "Teklatuaren nabigazioa",
"Version": "Bertsioa",
"Anchor": "Esteka",
"Special character": "Karaktere bereziak",
"Code sample": "Kode adibidea",
"Color": "Kolorea",
"Emoticons": "Irrifartxoak",
"Document properties": "Dokumentuaren propietateak",
"Image": "Irudia",
"Insert link": "Esteka txertatu",
"Target": "Target",
"Link": "Lotura",
"Poster": "Poster-a",
"Media": "Media",
"Print": "Inprimatu",
"Prev": "Aurrekoa",
"Find and replace": "Bilatu eta ordeztu",
"Whole words": "hitz osoak",
"Spellcheck": "Egiaztapenak",
"Caption": "Epigrafea",
"Insert template": "Txertatu txantiloia"
});js/tinymce/langs/ca.js000064400000036657151727150310010700 0ustar00tinymce.addI18n('ca',{
"Redo": "Refer",
"Undo": "Desfer",
"Cut": "Retalla",
"Copy": "Copia",
"Paste": "Enganxa",
"Select all": "Seleccionar-ho tot",
"New document": "Nou document",
"Ok": "Acceptar",
"Cancel": "Cancel\u00b7la",
"Visual aids": "Assist\u00e8ncia visual",
"Bold": "Negreta",
"Italic": "Cursiva",
"Underline": "Subratllat",
"Strikethrough": "Barrat",
"Superscript": "Super\u00edndex",
"Subscript": "Sub\u00edndex",
"Clear formatting": "Eliminar format",
"Align left": "Alinea a l'esquerra",
"Align center": "Alinea al centre",
"Align right": "Alinea a la dreta",
"Justify": "Justificat",
"Bullet list": "Llista no ordenada",
"Numbered list": "Llista enumerada",
"Decrease indent": "Disminuir sagnat",
"Increase indent": "Augmentar sagnat",
"Close": "Tancar",
"Formats": "Formats",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "El vostre navegador no suporta l'acc\u00e9s directe al portaobjectes. Si us plau, feu servir les dreceres de teclat Ctrl+X\/C\/V.",
"Headers": "Encap\u00e7alaments",
"Header 1": "Encap\u00e7alament 1",
"Header 2": "Encap\u00e7alament 2",
"Header 3": "Encap\u00e7alament 3",
"Header 4": "Encap\u00e7alament 4",
"Header 5": "Encap\u00e7alament 5",
"Header 6": "Encap\u00e7alament 6",
"Headings": "Encap\u00e7alaments",
"Heading 1": "Encap\u00e7alament 1",
"Heading 2": "Encap\u00e7alament 2",
"Heading 3": "Encap\u00e7alament 3",
"Heading 4": "Encap\u00e7alament 4",
"Heading 5": "Encap\u00e7alament 5",
"Heading 6": "Encap\u00e7alament 6",
"Preformatted": "Preformatat",
"Div": "Div",
"Pre": "Pre",
"Code": "Codi",
"Paragraph": "Par\u00e0graf",
"Blockquote": "Cita",
"Inline": "En l\u00ednia",
"Blocks": "Blocs",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Enganxar ara est\u00e0 en mode text pla. Els continguts s'enganxaran com a text pla fins que desactivis aquesta opci\u00f3. ",
"Fonts": "Fonts",
"Font Sizes": "Mides de la font",
"Class": "Classe",
"Browse for an image": "Explorar per cercar una imatge",
"OR": "O",
"Drop an image here": "Deixar anar una imatge aqu\u00ed",
"Upload": "Pujar",
"Block": "Bloc",
"Align": "Alinea",
"Default": "Per defecte",
"Circle": "Cercle",
"Disc": "Disc",
"Square": "Quadrat",
"Lower Alpha": "Alfa menor",
"Lower Greek": "Grec menor",
"Lower Roman": "Roman menor",
"Upper Alpha": "Alfa major",
"Upper Roman": "Roman major",
"Anchor...": "Ancoratge...",
"Name": "Nom",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "La Id ha de comen\u00e7ar amb una lletra, seguida d'altres lletres, n\u00fameros, punts, ratlles, comes, o guions baixos",
"You have unsaved changes are you sure you want to navigate away?": "Teniu canvis sense desar, esteu segur que voleu deixar-ho ara?",
"Restore last draft": "Restaurar l'\u00faltim esborrany",
"Special character...": "Car\u00e0cters especials\u2026",
"Source code": "Codi font",
"Insert\/Edit code sample": "Inserir\/Editar tros de codi",
"Language": "Idioma",
"Code sample...": "Mostra de codi...",
"Color Picker": "Selector de colors",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "D'esquerra a dreta",
"Right to left": "De dreta a esquerra",
"Emoticons...": "Emoticones...",
"Metadata and Document Properties": "Metadades i propietats del document",
"Title": "T\u00edtol",
"Keywords": "Paraules clau",
"Description": "Descripci\u00f3",
"Robots": "Robots",
"Author": "Autor",
"Encoding": "Codificaci\u00f3",
"Fullscreen": "Pantalla completa",
"Action": "Acci\u00f3",
"Shortcut": "Drecera",
"Help": "Ajuda",
"Address": "Adre\u00e7a",
"Focus to menubar": "Enfocar la barra de men\u00fa",
"Focus to toolbar": "Enfocar la barra d'eines",
"Focus to element path": "Enfocar la ruta d'elements",
"Focus to contextual toolbar": "Enfocar la barra d'eines contextual",
"Insert link (if link plugin activated)": "Inserir enlla\u00e7 (si el complement d'enlla\u00e7 est\u00e0 activat)",
"Save (if save plugin activated)": "Desar (si el complement desar est\u00e0 activat)",
"Find (if searchreplace plugin activated)": "Cercar (si el complement cercar-reempla\u00e7ar est\u00e0 activat)",
"Plugins installed ({0}):": "Complements instal\u00b7lats ({0}):",
"Premium plugins:": "Complements premium",
"Learn more...": "Apr\u00e8n m\u00e9s...",
"You are using {0}": "Est\u00e0s utilitzant {0}",
"Plugins": "Complements",
"Handy Shortcuts": "Dreceres a m\u00e0",
"Horizontal line": "L\u00ednia horitzontal",
"Insert\/edit image": "Inserir\/editar imatge",
"Image description": "Descripci\u00f3 de la imatge",
"Source": "Font",
"Dimensions": "Dimensions",
"Constrain proportions": "Mantenir proporcions",
"General": "General",
"Advanced": "Avan\u00e7at",
"Style": "Estil",
"Vertical space": "Espai vertical",
"Horizontal space": "Espai horitzontal",
"Border": "Vora",
"Insert image": "Inserir imatge",
"Image...": "Imatge...",
"Image list": "Llista d'imatges",
"Rotate counterclockwise": "Girar a l'esquerra",
"Rotate clockwise": "Girar a la dreta",
"Flip vertically": "Capgirar verticalment",
"Flip horizontally": "Capgirar horitzontalment",
"Edit image": "Editar imatge",
"Image options": "Opcions d'imatge",
"Zoom in": "Ampliar",
"Zoom out": "Empetitir",
"Crop": "Escap\u00e7ar",
"Resize": "Canviar mida",
"Orientation": "Orientaci\u00f3",
"Brightness": "Brillantor",
"Sharpen": "Remarcar vores",
"Contrast": "Contrast",
"Color levels": "Nivells de color",
"Gamma": "Gamma",
"Invert": "Invertir",
"Apply": "Aplicar",
"Back": "Tornar",
"Insert date\/time": "Inserir data\/hora",
"Date\/time": "Data\/hora",
"Insert\/Edit Link": "Inserir\/editar l'enlla\u00e7",
"Insert\/edit link": "Inserir\/editar enlla\u00e7",
"Text to display": "Text per mostrar",
"Url": "URL",
"Open link in...": "Obrir l'enlla\u00e7 a...",
"Current window": "Finestra actual",
"None": "Cap",
"New window": "Finestra nova",
"Remove link": "Treure enlla\u00e7",
"Anchors": "\u00c0ncores",
"Link...": "Enlla\u00e7...",
"Paste or type a link": "Enganxa o escriu un enlla\u00e7",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que has escrit sembla una adre\u00e7a de correu electr\u00f2nic. Vols afegir-li el prefix obligatori mailto: ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que has escrit sembla un enlla\u00e7 extern. Vols afegir-li el prefix obligatori http:\/\/ ?",
"Link list": "Llista d'enlla\u00e7os",
"Insert video": "Inserir v\u00eddeo",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Insert\/edit media": "Inserir\/editar mitj\u00e0",
"Alternative source": "Font alternativa",
"Alternative source URL": "URL de font alternativa",
"Media poster (Image URL)": "Cartell de multim\u00e8dia (URL d'imatge)",
"Paste your embed code below:": "Enganxau el codi a sota:",
"Embed": "Incloure",
"Media...": "Multim\u00e8dia...",
"Nonbreaking space": "Espai fixe",
"Page break": "Salt de p\u00e0gina",
"Paste as text": "Enganxar com a text",
"Preview": "Previsualitzaci\u00f3",
"Print...": "Imprimir...",
"Save": "Desa",
"Find": "Buscar",
"Replace with": "Rempla\u00e7ar amb",
"Replace": "Rempla\u00e7ar",
"Replace all": "Rempla\u00e7ar-ho tot",
"Previous": "Anterior",
"Next": "Seg\u00fcent",
"Find and replace...": "Cercar i reempla\u00e7ar...",
"Could not find the specified string.": "No es pot trobar el text especificat.",
"Match case": "Coincidir maj\u00fascules",
"Find whole words only": "Cercar nom\u00e9s paraules completes",
"Spell check": "Corrector ortogr\u00e0fic",
"Ignore": "Ignorar",
"Ignore all": "Ignorar tots",
"Finish": "Finalitzar",
"Add to Dictionary": "Afegir al diccionari",
"Insert table": "Inserir taula",
"Table properties": "Propietats de taula",
"Delete table": "Esborrar taula",
"Cell": "Cel\u00b7la",
"Row": "Fila",
"Column": "Columna",
"Cell properties": "Propietats de cel\u00b7la",
"Merge cells": "Fusionar cel\u00b7les",
"Split cell": "Dividir cel\u00b7les",
"Insert row before": "Inserir fila a sobre",
"Insert row after": "Inserir fila a sota",
"Delete row": "Esborrar fila",
"Row properties": "Propietats de fila",
"Cut row": "Retallar fila",
"Copy row": "Copiar fila",
"Paste row before": "Enganxar fila a sobre",
"Paste row after": "Enganxar fila a sota",
"Insert column before": "Inserir columna abans",
"Insert column after": "Inserir columna despr\u00e9s",
"Delete column": "Esborrar columna",
"Cols": "Cols",
"Rows": "Files",
"Width": "Amplada",
"Height": "Al\u00e7ada",
"Cell spacing": "Espai entre cel\u00b7les",
"Cell padding": "Marge intern",
"Show caption": "Mostrar encap\u00e7alament",
"Left": "A l'esquerra",
"Center": "Centrat",
"Right": "A la dreta",
"Cell type": "Tipus de cel\u00b7la",
"Scope": "\u00c0mbit",
"Alignment": "Aliniament",
"H Align": "Al\u00edniament H",
"V Align": "Al\u00edniament V",
"Top": "Superior",
"Middle": "Mitj\u00e0",
"Bottom": "Inferior",
"Header cell": "Cel\u00b7la de cap\u00e7alera",
"Row group": "Grup de fila",
"Column group": "Grup de columna",
"Row type": "Tipus de fila",
"Header": "Cap\u00e7alera",
"Body": "Cos",
"Footer": "Peu",
"Border color": "Color de vora",
"Insert template...": "Inserir plantilla...",
"Templates": "Plantilles",
"Template": "Plantilla",
"Text color": "Color del text",
"Background color": "Color del fons",
"Custom...": "Personalitzar...",
"Custom color": "Personalitzar el color",
"No color": "Sense color",
"Remove color": "Eliminar el color",
"Table of Contents": "Taula de continguts",
"Show blocks": "Mostrar blocs",
"Show invisible characters": "Mostrar car\u00e0cters invisibles",
"Word count": "Recompte de paraules",
"Count": "Compta",
"Document": "Document",
"Selection": "Selecci\u00f3",
"Words": "Paraules",
"Words: {0}": "Paraules: {0}",
"{0} words": "{0} paraules",
"File": "Arxiu",
"Edit": "Edici\u00f3",
"Insert": "Inserir",
"View": "Veure",
"Format": "Format",
"Table": "Taula",
"Tools": "Eines",
"Powered by {0}": "Impulsat per {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c0rea de text amb format. Premeu ALT-F9 per mostrar el men\u00fa, ALT F10 per la barra d'eines i ALT-0 per ajuda.",
"Image title": "T\u00edtol de la imatge",
"Border width": "Amplada de la vora",
"Border style": "Estil de la vora",
"Error": "Error",
"Warn": "Alerta",
"Valid": "V\u00e0lid",
"To open the popup, press Shift+Enter": "Per obrir la finestra emergent, premeu Maj.+Retorn",
"Rich Text Area. Press ALT-0 for help.": "\u00c0rea de Text enriquit. Premeu ALT-0 per obtenir ajuda.",
"System Font": "Font del sistema",
"Failed to upload image: {0}": "No s'ha pogut carregar la imatge: {0}",
"Failed to load plugin: {0} from url {1}": "No s'ha pogut carregar el complement: {0} de l\u2019URL {1}",
"Failed to load plugin url: {0}": "No s'ha pogut carregar l\u2019URL del complement: {0}",
"Failed to initialize plugin: {0}": "No s'ha pogut inicialitzar el complement: {0}",
"example": "exemple",
"Search": "Cerca",
"All": "Tot",
"Currency": "Moneda",
"Text": "Text",
"Quotations": "Cites",
"Mathematical": "S\u00edmbols matem\u00e0tics",
"Extended Latin": "Llat\u00ed ampliat",
"Symbols": "S\u00edmbols",
"Arrows": "Fletxes",
"User Defined": "Definit per l'usuari",
"dollar sign": "signe del d\u00f2lar",
"currency sign": "signe de la moneda",
"euro-currency sign": "signe de l'euro",
"colon sign": "signe del col\u00f3n",
"cruzeiro sign": "signe del cruzeiro",
"french franc sign": "signe del franc franc\u00e8s",
"lira sign": "signe de la lira",
"mill sign": "signe del mill",
"naira sign": "signe de la naira",
"peseta sign": "signe de la pesseta",
"rupee sign": "signe de la rupia",
"won sign": "signe del won",
"new sheqel sign": "signe del nou x\u00e9quel",
"dong sign": "signe del dong",
"kip sign": "signe del kip",
"tugrik sign": "signe del t\u00f6gr\u00f6g",
"drachma sign": "signe del dracma",
"german penny symbol": "signe del penic alemany",
"peso sign": "signe del peso",
"guarani sign": "signe del guaran\u00ed",
"austral sign": "signe de l\u2019austral",
"hryvnia sign": "signe de la hr\u00edvnia",
"cedi sign": "signe del cedi",
"livre tournois sign": "signe de la lliura tornesa",
"spesmilo sign": "signe de l\u2019spesmilo",
"tenge sign": "signe del tenge",
"indian rupee sign": "signe de la rupia \u00edndia",
"turkish lira sign": "signe de la lira turca",
"nordic mark sign": "signe del marc n\u00f2rdic",
"manat sign": "signe del manat",
"ruble sign": "signe del ruble",
"yen character": "signe del ien",
"yuan character": "signe del iuan",
"yuan character, in hong kong and taiwan": "signe del iuan en Hong Kong i Taiwan",
"yen\/yuan character variant one": "variaci\u00f3 1 del signe del ien\/iuan",
"Loading emoticons...": "Carregant les emoticones...",
"Could not load emoticons": "No s'han pogut carregar les emoticones",
"People": "Gent",
"Animals and Nature": "Animals i natura",
"Food and Drink": "Menjar i beure",
"Activity": "Activitat",
"Travel and Places": "Viatges i llocs",
"Objects": "Objectes",
"Flags": "Banderes",
"Characters": "Car\u00e0cters",
"Characters (no spaces)": "Car\u00e0cters (sense espais)",
"{0} characters": "{0} car\u00e0cters",
"Error: Form submit field collision.": "Error: error en el camp d\u2019enviament del formulari.",
"Error: No form element found.": "Error: no s'ha trobat l'element del formulari.",
"Update": "Actualitzar",
"Color swatch": "Mostra de color",
"Turquoise": "Turquesa",
"Green": "Verd",
"Blue": "Blau",
"Purple": "Violeta",
"Navy Blue": "Blau mar\u00ed",
"Dark Turquoise": "Turquesa fosc",
"Dark Green": "Verd fosc",
"Medium Blue": "Blau mitj\u00e0",
"Medium Purple": "Violeta mitj\u00e0",
"Midnight Blue": "Blau mitjanit",
"Yellow": "Groc",
"Orange": "Taronja",
"Red": "Vermell",
"Light Gray": "Gris clar",
"Gray": "Gris",
"Dark Yellow": "Groc fosc",
"Dark Orange": "Taronja fosc",
"Dark Red": "Vermell fosc",
"Medium Gray": "Gris mitj\u00e0",
"Dark Gray": "Gris fosc",
"Light Green": "Verd clar",
"Light Yellow": "Groc clar",
"Light Red": "Vermell clar",
"Light Purple": "Porpra clar",
"Light Blue": "Blau clar",
"Dark Purple": "Porpra fosc",
"Dark Blue": "Blau fosc",
"Black": "Negre",
"White": "Blanc",
"Switch to or from fullscreen mode": "Canviar a o del mode de pantalla completa",
"Open help dialog": "Obrir el quadre de di\u00e0leg d'ajuda",
"history": "historial",
"styles": "estils",
"formatting": "format",
"alignment": "alineaci\u00f3",
"indentation": "sagnat",
"permanent pen": "retolador permanent",
"comments": "comentaris",
"Format Painter": "Formata el Painter",
"Insert\/edit iframe": "Insereix\/edita iframe",
"Capitalization": "Capitalitzaci\u00f3",
"lowercase": "min\u00fascules",
"UPPERCASE": "MAJ\u00daSCULES",
"Title Case": "Caixa del t\u00edtol",
"Permanent Pen Properties": "Par\u00e0metres permanents del llapis",
"Permanent pen properties...": "Par\u00e0metres permanents del llapis\u2026",
"Font": "Font",
"Size": "Mida",
"More...": "M\u00e9s\u2026",
"Spellcheck Language": "Idioma de la comprovaci\u00f3 d'ortografia",
"Select...": "Selecciona\u2026",
"Preferences": "Par\u00e0metres",
"Yes": "S\u00ed",
"No": "No",
"Keyboard Navigation": "Navegaci\u00f3 per teclat",
"Version": "Versi\u00f3",
"Anchor": "\u00c0ncora",
"Special character": "Car\u00e0cter especial",
"Code sample": "Mostra de codi",
"Color": "Color",
"Emoticons": "Emoticones",
"Document properties": "Propietats del document",
"Image": "Imatge",
"Insert link": "Inserir enlla\u00e7",
"Target": "Dest\u00ed",
"Link": "Enlla\u00e7",
"Poster": "P\u00f3ster",
"Media": "Mitjans",
"Print": "Imprimir",
"Prev": "Anterior",
"Find and replace": "Buscar i rempla\u00e7ar",
"Whole words": "Paraules senceres",
"Spellcheck": "Comprovar ortrografia",
"Caption": "Encap\u00e7alament",
"Insert template": "Inserir plantilla"
});js/tinymce/langs/nl_BE.js000064400000040222151727150310011253 0ustar00tinymce.addI18n('nl_BE',{
"Redo": "Opnieuw doen",
"Undo": "Ongedaan maken",
"Cut": "Knippen",
"Copy": "Kopi\u00ebren",
"Paste": "Plakken",
"Select all": "Alles selecteren",
"New document": "Nieuw document",
"Ok": "Ok",
"Cancel": "Annuleren",
"Visual aids": "Visuele hulpmiddelen",
"Bold": "Vet",
"Italic": "Cursief",
"Underline": "Onderlijnd",
"Strikethrough": "Doorstreept",
"Superscript": "Superscript",
"Subscript": "Subscript",
"Clear formatting": "Opmaak verwijderen",
"Align left": "Links uitlijnen",
"Align center": "Centreren",
"Align right": "Rechts uitlijnen",
"Justify": "Distribueren",
"Bullet list": "Ongeordende lijst",
"Numbered list": "Geordende lijst",
"Decrease indent": "Inspringing verkleinen",
"Increase indent": "Inspringing vergroten",
"Close": "Sluiten",
"Formats": "Formaten",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Uw browser ondersteunt geen directe toegang tot het klembord. Gelieve de CTRL+X\/C\/V toetsen te gebruiken.",
"Headers": "Kopteksten",
"Header 1": "Koptekst 1",
"Header 2": "Koptekst 2",
"Header 3": "Koptekst 3",
"Header 4": "Koptekst 4",
"Header 5": "Koptekst 5",
"Header 6": "Koptekst 6",
"Headings": "Hoofdingen",
"Heading 1": "Hoofding 1",
"Heading 2": "Hoofding 2",
"Heading 3": "Hoofding 3",
"Heading 4": "Hoofding 4",
"Heading 5": "Hoofding 5",
"Heading 6": "Hoofding 6",
"Preformatted": "Gepreformateerd",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "Paragraaf",
"Blockquote": "Citaat",
"Inline": "In tekstregel",
"Blocks": "Blokken",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Plakken is nu in gewone tekst modus. Elementen zullen nu als gewone tekst geplakt worden tot u deze optie uit schakelt.",
"Fonts": "Lettertypen",
"Font Sizes": "Lettergrootte",
"Class": "Class",
"Browse for an image": "Een afbeelding zoeken",
"OR": "OF",
"Drop an image here": "Plaats hier een afbeelding",
"Upload": "Uploaden",
"Block": "Vierkant",
"Align": "Aligneer",
"Default": "Standaard",
"Circle": "Cirkel",
"Disc": "Schijf",
"Square": "Vierkant",
"Lower Alpha": "Kleine letters",
"Lower Greek": "Klein Grieks schrift",
"Lower Roman": "Klein Latijns schrift",
"Upper Alpha": "Hoofdletters",
"Upper Roman": "Hoofdletters Latijns",
"Anchor...": "Anker...",
"Name": "Naam",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Een id moet met een letter beginnen, gevolgd door letters, nummers, strepen, punten, dubbele punten of liggende streepjes.",
"You have unsaved changes are you sure you want to navigate away?": "U heeft niet opgeslagen wijzigingen bent u zeker dat u de pagina wilt verlaten?",
"Restore last draft": "Laatste concept herstellen",
"Special character...": "Speciaal karakter...",
"Source code": "Broncode",
"Insert\/Edit code sample": "Codevoorbeeld invoegen\/bewerken",
"Language": "Taal",
"Code sample...": "Codevoorbeeld...",
"Color Picker": "Kleurenkiezer",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Links naar rechts",
"Right to left": "Rechts naar links",
"Emoticons": "Emoticons",
"Emoticons...": "Emoticons...",
"Metadata and Document Properties": "Metadata en Document Eigenschappen",
"Title": "Titel",
"Keywords": "Sleutelwoorden",
"Description": "Omschrijving",
"Robots": "Robots",
"Author": "Auteur",
"Encoding": "Bestandscodering",
"Fullscreen": "Schermvullend",
"Action": "Actie",
"Shortcut": "Snelkoppeling",
"Help": "Help",
"Address": "Adres",
"Focus to menubar": "Focus naar menubalk",
"Focus to toolbar": "Focus naar werkbalk",
"Focus to element path": "Focus naar elementenpad",
"Focus to contextual toolbar": "Focus naar contextuele werkbalk",
"Insert link (if link plugin activated)": "Link invoegen (als link plug-in geactiveerd is)",
"Save (if save plugin activated)": "Opslaan (als opslaan plug-in geactiveerd is)",
"Find (if searchreplace plugin activated)": "Zoeken (als zoeken\/vervangen plug-in geactiveerd is)",
"Plugins installed ({0}):": "Ge\u00efnstalleerde plugins ({0}):",
"Premium plugins:": "Premium plug-ins:",
"Learn more...": "Leer meer...",
"You are using {0}": "U gebruikt {0}",
"Plugins": "Plug-ins",
"Handy Shortcuts": "Handige snelkoppelingen",
"Horizontal line": "Horizontale lijn",
"Insert\/edit image": "Afbeelding invoegen\/bewerken",
"Alternative description": "Alternatieve beschrijving",
"Accessibility": "Toegankelijkheid",
"Image is decorative": "Afbeelding is decoratief",
"Source": "Bron",
"Dimensions": "Afmetingen",
"Constrain proportions": "Verhoudingen begrenzen",
"General": "Algemeen",
"Advanced": "Geavanceerd",
"Style": "Stijl",
"Vertical space": "Verticale ruimte",
"Horizontal space": "Horizontale ruimte",
"Border": "Rand",
"Insert image": "Afbeelding invoegen",
"Image...": "Afbeelding...",
"Image list": "Afbeeldingenlijst",
"Rotate counterclockwise": "Linksom draaien",
"Rotate clockwise": "Rechtsom draaien",
"Flip vertically": "Verticaal spiegelen",
"Flip horizontally": "Horizontaal spiegelen",
"Edit image": "Afbeelding bewerken",
"Image options": "Afbeeldingsopties",
"Zoom in": "Inzoomen",
"Zoom out": "Uitzoomen",
"Crop": "Bijsnijden",
"Resize": "Herschalen",
"Orientation": "Ori\u00ebntatie",
"Brightness": "Helderheid",
"Sharpen": "Verscherpen",
"Contrast": "Contrast",
"Color levels": "Kleurniveau's",
"Gamma": "Gamma",
"Invert": "Omkeren",
"Apply": "Toepassen",
"Back": "Terug",
"Insert date\/time": "Datum\/tijd invoegen",
"Date\/time": "Datum\/tijd",
"Insert\/edit link": "Link invoegen\/bewerken",
"Text to display": "Weer te geven tekst",
"Url": "Url",
"Open link in...": "Link openen in...",
"Current window": "Huidig venster",
"None": "Geen",
"New window": "Nieuw venster",
"Open link": "Link openen",
"Remove link": "Link verwijderen",
"Anchors": "Ankers",
"Link...": "Link...",
"Paste or type a link": "Link plakken of typen",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "De ingevoerde URL lijkt op een e-mailadres. Wilt u er het vereiste voorvoegsel mailto: aan toevoegen?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "De ingevoerde URL lijkt op een externe link. Wilt u er het vereiste voorvoegsel http:\/\/ aan toevoegen?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "De ingevoerde URL lijkt op een externe link. Wilt u er het vereiste voorvoegsel https:\/\/ aan toevoegen?",
"Link list": "Link lijst",
"Insert video": "Video invoegen",
"Insert\/edit video": "Video invoegen\/bewerken",
"Insert\/edit media": "Media invoegen\/bewerken",
"Alternative source": "Alternatieve bron",
"Alternative source URL": "Alternatieve bron URL",
"Media poster (Image URL)": "Mediaposter (Afbeelding URL)",
"Paste your embed code below:": "Plak de in te sluiten code hieronder:",
"Embed": "Insluiten",
"Media...": "Media...",
"Nonbreaking space": "Vaste spatie",
"Page break": "Pagina-einde",
"Paste as text": "Plakken als tekst",
"Preview": "Voorbeeld",
"Print...": "Afdrukken...",
"Save": "Opslaan",
"Find": "Zoeken",
"Replace with": "Vervangen door",
"Replace": "Vervangen",
"Replace all": "Alles vervangen",
"Previous": "Vorige",
"Next": "Volgende",
"Find and Replace": "Zoeken en Vervangen",
"Find and replace...": "Zoeken en vervangen...",
"Could not find the specified string.": "Kon de gespecificeerde string niet vinden.",
"Match case": "Hoofdlettergevoelig",
"Find whole words only": "Enkel volledige woorden",
"Find in selection": "Zoeken in selectie",
"Spellcheck": "Spellingscontrole",
"Spellcheck Language": "Spellingscontrole Taal",
"No misspellings found.": "Geen spelfouten gevonden.",
"Ignore": "Negeren",
"Ignore all": "Alles negeren",
"Finish": "Voltooien",
"Add to Dictionary": "Aan woordenboek toevoegen",
"Insert table": "Tabel invoegen",
"Table properties": "Tabeleigenschappen",
"Delete table": "Tabel verwijderen",
"Cell": "Cel",
"Row": "Rij",
"Column": "Kolom",
"Cell properties": "Celeigenschappen",
"Merge cells": "Cellen samenvoegen",
"Split cell": "Cel splitsen",
"Insert row before": "Rij boven invoegen",
"Insert row after": "Rij onder invoegen",
"Delete row": "Rij verwijderen",
"Row properties": "Rijeigenschappen",
"Cut row": "Rij knippen",
"Copy row": "Rij kopi\u00ebren",
"Paste row before": "Rij boven plakken",
"Paste row after": "Rij onder plakken",
"Insert column before": "Kolom invoegen voor",
"Insert column after": "Kolom invoegen na",
"Delete column": "Kolom verwijderen",
"Cols": "Kolommen",
"Rows": "Rijen",
"Width": "Breedte\\v",
"Height": "Hoogte",
"Cell spacing": "Celafstand",
"Cell padding": "Celopvulling",
"Caption": "Bijschrift",
"Show caption": "Bijschrift tonen",
"Left": "Links",
"Center": "Midden",
"Right": "Rechts",
"Cell type": "Celtype",
"Scope": "Bereik",
"Alignment": "Uitlijning",
"H Align": "H uitlijnen",
"V Align": "V uitlijnen",
"Top": "Boven",
"Middle": "Midden",
"Bottom": "Onder",
"Header cell": "Koptekstcel",
"Row group": "Rijgroep",
"Column group": "Kolomgroep",
"Row type": "Rijtype",
"Header": "Koptekst",
"Body": "Hoofdtekst",
"Footer": "Voettekst",
"Border color": "Randkleur",
"Insert template...": "Sjabloon invoegen...",
"Templates": "Sjablonen",
"Template": "Sjabloon",
"Text color": "Tekstkleur",
"Background color": "Achtergrondkleur",
"Custom...": "Aangepast...",
"Custom color": "Aangepaste kleur",
"No color": "Geen kleur",
"Remove color": "Kleur verwijderen",
"Table of Contents": "Inhoudsopgave",
"Show blocks": "Blokken tonen",
"Show invisible characters": "Onzichtbare tekens tonen",
"Word count": "Aantal woorden",
"Count": "Tellen",
"Document": "Document",
"Selection": "Selectie",
"Words": "Woorden",
"Words: {0}": "Woorden: {0}",
"{0} words": "{0} woorden",
"File": "Bestand",
"Edit": "Bewerken",
"Insert": "Invoegen",
"View": "Tonen",
"Format": "Formaat",
"Table": "Tabel",
"Tools": "Gereedschappen",
"Powered by {0}": "Aangedreven door {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Druk op Alt-F9 voor menu. Druk op Alt-F10 voor gereedschapsbalk. Druk op Alt-0 voor help",
"Image title": "Afbeeldingstitel",
"Border width": "Randbreedte",
"Border style": "Randstijl",
"Error": "Fout",
"Warn": "Waarschuwen",
"Valid": "Geldig",
"To open the popup, press Shift+Enter": "Druk op Shift+Enter om de pop-up te openen",
"Rich Text Area. Press ALT-0 for help.": "Rich Text Area. Druk op Alt-0 voor help.",
"System Font": "Systeemlettertype",
"Failed to upload image: {0}": "Afbeelding uploaden niet gelukt: {0}",
"Failed to load plugin: {0} from url {1}": "Plug-in laden niet gelukt: {0} vanaf url {1}",
"Failed to load plugin url: {0}": "Plug-in URL laden niet gelukt: {0}",
"Failed to initialize plugin: {0}": "Plug-in initialiseren niet gelukt: {0}",
"example": "voorbeeld",
"Search": "Zoeken",
"All": "Alle",
"Currency": "Valuta",
"Text": "Tekst",
"Quotations": "Citaten",
"Mathematical": "Wiskundig",
"Extended Latin": "Latijn uitgebreid",
"Symbols": "Symbolen",
"Arrows": "Pijlen",
"User Defined": "Gebruiker Gedefinieerd",
"dollar sign": "dollar teken",
"currency sign": "valuta teken",
"euro-currency sign": "euro valuta teken",
"colon sign": "colon teken",
"cruzeiro sign": "cruzeiro teken",
"french franc sign": "franse frank teken",
"lira sign": "lire teken",
"mill sign": "mill teken",
"naira sign": "naira teken",
"peseta sign": "peseta teken",
"rupee sign": "roepie teken",
"won sign": "won teken",
"new sheqel sign": "nieuwe shekel teken",
"dong sign": "dong teken",
"kip sign": "kip teken",
"tugrik sign": "tugrik teken",
"drachma sign": "drachme teken",
"german penny symbol": "duitse pfennig teken",
"peso sign": "peso teken",
"guarani sign": "guarani teken",
"austral sign": "austral teken",
"hryvnia sign": "hryvnia teken",
"cedi sign": "cedi teken",
"livre tournois sign": "tours pond teken",
"spesmilo sign": "spesmilo teken",
"tenge sign": "tenge teken",
"indian rupee sign": "indische roepie teken",
"turkish lira sign": "turkse lira teken",
"nordic mark sign": "noordse mark teken",
"manat sign": "manat teken",
"ruble sign": "roebel teken",
"yen character": "yen karakter",
"yuan character": "yuan karakter",
"yuan character, in hong kong and taiwan": "yuan karakter, in hong kong en taiwan",
"yen\/yuan character variant one": "yen\/yuan karakter variant een",
"Loading emoticons...": "Emoticons laden...",
"Could not load emoticons": "Kon emoticons niet laden",
"People": "Mensen",
"Animals and Nature": "Dieren en natuur",
"Food and Drink": "Voedsel en drank",
"Activity": "Activiteit",
"Travel and Places": "Reizen en plaatsen",
"Objects": "Voorwerpen",
"Flags": "Vlaggen",
"Characters": "Karakters",
"Characters (no spaces)": "Karakters (zonder spaties)",
"{0} characters": "{0} karakters",
"Error: Form submit field collision.": "Fout: Veldconflict bij versturen formulier.",
"Error: No form element found.": "Fout: Geen formulierelement gevonden.",
"Update": "Updaten",
"Color swatch": "Kleurenstaal",
"Turquoise": "Turkoois",
"Green": "Groen",
"Blue": "Blauw",
"Purple": "Paars",
"Navy Blue": "Marineblauw",
"Dark Turquoise": "Donker turkoois",
"Dark Green": "Donker groen",
"Medium Blue": "Middelblauw",
"Medium Purple": "Middelpaars",
"Midnight Blue": "Middernachtblauw",
"Yellow": "Geel",
"Orange": "Oranje",
"Red": "Rood",
"Light Gray": "Lichtgrijs",
"Gray": "Grijs",
"Dark Yellow": "Donker Geel",
"Dark Orange": "Donker Oranje",
"Dark Red": "Donker Rood",
"Medium Gray": "Middel Grijs",
"Dark Gray": "Donker Grijs",
"Light Green": "Licht Groen",
"Light Yellow": "Licht Geel",
"Light Red": "Licht Rood",
"Light Purple": "Licht Paars",
"Light Blue": "Licht Blauw",
"Dark Purple": "Donker Paars",
"Dark Blue": "Donker Blauw",
"Black": "Zwart",
"White": "Wit",
"Switch to or from fullscreen mode": "Schakelen naar of vanuit volledige schermmodus",
"Open help dialog": "Helpdialoog openen",
"history": "geschiedenis",
"styles": "stijlen",
"formatting": "opmaak",
"alignment": "uitlijning",
"indentation": "inspringing",
"Font": "Lettertype",
"Size": "Grootte",
"More...": "Meer...",
"Select...": "Selecteren...",
"Preferences": "Voorkeuren",
"Yes": "Ja",
"No": "Nee",
"Keyboard Navigation": "Toetsenbord navigatie",
"Version": "Versie",
"Code view": "Codeweergave",
"Open popup menu for split buttons": "Open pop-up menu voor gesplitste knoppen",
"List Properties": "Lijst Eigenschappen",
"List properties...": "Lijst eigenschappen...",
"Start list at number": "Begin lijst bij nummer",
"Line height": "Regelhoogte",
"comments": "opmerkingen",
"Format Painter": "Format Painter",
"Insert\/edit iframe": "iFrame invoegen\/bewerken",
"Capitalization": "Hoofdlettergebruik",
"lowercase": "kleine letters",
"UPPERCASE": "HOOFDLETTERS",
"Title Case": "Titel hoofdlettergebruik",
"permanent pen": "permanente pen",
"Permanent Pen Properties": "Permanent Pen Eigenschappen",
"Permanent pen properties...": "Permanent pen eigenschappen...",
"case change": "hoofdlettergebruik veranderen",
"page embed": "pagina insluiten",
"Advanced sort...": "Geavanceerd sorteren...",
"Advanced Sort": "Geavanceerd Sorteren",
"Sort table by column ascending": "Sorteer tabel per kolom in oplopende volgorde",
"Sort table by column descending": "Sorteer tabel per kolom in aflopende volgorde",
"Sort": "Sorteren",
"Order": "Ordenen",
"Sort by": "Sorteren op",
"Ascending": "Oplopend",
"Descending": "Aflopend",
"Column {0}": "Kolom {0}",
"Row {0}": "Rij {0}",
"Spellcheck...": "Spellingscontrole...",
"Misspelled word": "Fout gespeld woord",
"Suggestions": "Suggesties",
"Change": "Wijzigen",
"Finding word suggestions": "Woordsuggesties zoeken",
"Success": "Gelukt",
"Repair": "Herstellen",
"Issue {0} of {1}": "Probleem {0} van {1}",
"Images must be marked as decorative or have an alternative text description": "Afbeeldingen markeren als decoratief of alternatieve tekstbeschrijving geven",
"Images must have an alternative text description. Decorative images are not allowed.": "Afbeeldingen moeten een alternatieve tekstbeschrijving hebben. Decoratieve afbeeldingen zijn niet toegelaten.",
"Or provide alternative text:": "Of voorzie alternatieve tekst:",
"Make image decorative:": "Afbeelding decoratief maken",
"ID attribute must be unique": "ID attribuut moet uniek zijn",
"Make ID unique": "ID uniek maken",
"Keep this ID and remove all others": "Dit ID behouden en alle andere verwijderen",
"Remove this ID": "Dit ID verwijderen",
"Remove all IDs": "Alle IDs verwijderen",
"Checklist": "Controlelijst"
});js/tinymce/langs/es.js000064400000036434151727150320010716 0ustar00tinymce.addI18n('es',{
"Redo": "Rehacer",
"Undo": "Deshacer",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Pegar",
"Select all": "Seleccionar todo",
"New document": "Nuevo documento",
"Ok": "Ok",
"Cancel": "Cancelar",
"Visual aids": "Ayudas visuales",
"Bold": "Negrita",
"Italic": "Cursiva",
"Underline": "Subrayado",
"Strikethrough": "Tachado",
"Superscript": "Super\u00edndice",
"Subscript": "Sub\u00edndice",
"Clear formatting": "Limpiar formato",
"Align left": "Alinear a la izquierda",
"Align center": "Alinear al centro",
"Align right": "Alinear a la derecha",
"Justify": "Justificar",
"Bullet list": "Lista de vi\u00f1etas",
"Numbered list": "Lista numerada",
"Decrease indent": "Disminuir sangr\u00eda",
"Increase indent": "Incrementar sangr\u00eda",
"Close": "Cerrar",
"Formats": "Formatos",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Su navegador no es compatible con el acceso directo al portapapeles. Use las teclas Crtl+X\/C\/V de su teclado.",
"Headers": "Encabezados",
"Header 1": "Encabezado 1",
"Header 2": "Encabezado 2",
"Header 3": "Encabezado 3",
"Header 4": "Encabezado 4",
"Header 5": "Encabezado 5",
"Header 6": "Encabezado 6",
"Headings": "Encabezados",
"Heading 1": "Encabezado 1",
"Heading 2": "Encabezado 2",
"Heading 3": "Encabezado 3",
"Heading 4": "Encabezado 4",
"Heading 5": "Encabezado 5",
"Heading 6": "Encabezado 6",
"Preformatted": "Con formato previo",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f3digo",
"Paragraph": "P\u00e1rrafo",
"Blockquote": "Blockquote",
"Inline": "Alineado",
"Blocks": "Bloques",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Pegar est\u00e1 ahora en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.",
"Fonts": "Fuentes",
"Font Sizes": "Tama\u00f1os de fuente",
"Class": "Clase",
"Browse for an image": "Buscar una imagen",
"OR": "OR",
"Drop an image here": "Arrastre una imagen aqu\u00ed",
"Upload": "Cargar",
"Block": "Bloque",
"Align": "Alinear",
"Default": "Por defecto",
"Circle": "C\u00edrculo",
"Disc": "Disco",
"Square": "Cuadrado",
"Lower Alpha": "Inferior Alfa",
"Lower Greek": "Inferior Griega",
"Lower Roman": "Inferior Romana",
"Upper Alpha": "Superior Alfa",
"Upper Roman": "Superior Romana",
"Anchor...": "Anclaje...",
"Name": "Nombre",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Deber\u00eda comenzar por una letra, seguida solo de letras, n\u00fameros, guiones, puntos, dos puntos o guiones bajos.",
"You have unsaved changes are you sure you want to navigate away?": "Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que quiere salir?",
"Restore last draft": "Restaurar el \u00faltimo borrador",
"Special character...": "Car\u00e1cter especial...",
"Source code": "C\u00f3digo fuente",
"Insert\/Edit code sample": "Insertar\/editar c\u00f3digo de prueba",
"Language": "Idioma",
"Code sample...": "Ejemplo de c\u00f3digo...",
"Color Picker": "Selector de colores",
"R": "R",
"G": "V",
"B": "A",
"Left to right": "De izquierda a derecha",
"Right to left": "De derecha a izquierda",
"Emoticons...": "Emoticones...",
"Metadata and Document Properties": "Metadatos y propiedades del documento",
"Title": "T\u00edtulo",
"Keywords": "Palabras clave",
"Description": "Descripci\u00f3n",
"Robots": "Robots",
"Author": "Autor",
"Encoding": "Codificaci\u00f3n",
"Fullscreen": "Pantalla completa",
"Action": "Acci\u00f3n",
"Shortcut": "Atajo",
"Help": "Ayuda",
"Address": "Direcci\u00f3n",
"Focus to menubar": "Enfocar la barra del men\u00fa",
"Focus to toolbar": "Enfocar la barra de herramientas",
"Focus to element path": "Enfocar la ruta del elemento",
"Focus to contextual toolbar": "Enfocar la barra de herramientas contextual",
"Insert link (if link plugin activated)": "Insertar enlace (si el complemento de enlace est\u00e1 activado)",
"Save (if save plugin activated)": "Guardar (si el componente de salvar est\u00e1 activado)",
"Find (if searchreplace plugin activated)": "Buscar (si el complemento buscar-remplazar est\u00e1 activado)",
"Plugins installed ({0}):": "Plugins instalados ({0}):",
"Premium plugins:": "Complementos premium:",
"Learn more...": "Aprende m\u00e1s...",
"You are using {0}": "Estas usando {0}",
"Plugins": "Complementos",
"Handy Shortcuts": "Accesos directos",
"Horizontal line": "L\u00ednea horizontal",
"Insert\/edit image": "Insertar\/editar imagen",
"Image description": "Descripci\u00f3n de la imagen",
"Source": "Enlace",
"Dimensions": "Dimensiones",
"Constrain proportions": "Restringir proporciones",
"General": "General",
"Advanced": "Avanzado",
"Style": "Estilo",
"Vertical space": "Espacio vertical",
"Horizontal space": "Espacio horizontal",
"Border": "Borde",
"Insert image": "Insertar imagen",
"Image...": "Imagen...",
"Image list": "Lista de im\u00e1genes",
"Rotate counterclockwise": "Girar a la izquierda",
"Rotate clockwise": "Girar a la derecha",
"Flip vertically": "Invertir verticalmente",
"Flip horizontally": "Invertir horizontalmente",
"Edit image": "Editar imagen",
"Image options": "Opciones de imagen",
"Zoom in": "Acercar",
"Zoom out": "Alejar",
"Crop": "Recortar",
"Resize": "Redimensionar",
"Orientation": "Orientaci\u00f3n",
"Brightness": "Brillo",
"Sharpen": "Forma",
"Contrast": "Contraste",
"Color levels": "Niveles de color",
"Gamma": "Gamma",
"Invert": "Invertir",
"Apply": "Aplicar",
"Back": "Atr\u00e1s",
"Insert date\/time": "Insertar fecha\/hora",
"Date\/time": "Fecha\/hora",
"Insert\/Edit Link": "Insertar\/editar enlace",
"Insert\/edit link": "Insertar\/editar enlace",
"Text to display": "Texto para mostrar",
"Url": "URL",
"Open link in...": "Abrir enlace en...",
"Current window": "Ventana actual",
"None": "Ninguno",
"New window": "Nueva ventana",
"Remove link": "Quitar enlace",
"Anchors": "Anclas",
"Link...": "Enlace...",
"Paste or type a link": "Pega o introduce un enlace",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "El enlace que has introducido no parece ser una direcci\u00f3n de correo electr\u00f3nico. Quieres a\u00f1adir el prefijo necesario mailto: ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "El enlace que has introducido no parece ser una enlace externo. Quieres a\u00f1adir el prefijo necesario http:\/\/ ?",
"Link list": "Lista de enlaces",
"Insert video": "Insertar video",
"Insert\/edit video": "Insertar\/editar video",
"Insert\/edit media": "Insertar\/editar medio",
"Alternative source": "Enlace alternativo",
"Alternative source URL": "Origen de URL alternativo",
"Media poster (Image URL)": "P\u00f3ster de medio (URL de imagen)",
"Paste your embed code below:": "Pega tu c\u00f3digo embebido debajo",
"Embed": "Incrustado",
"Media...": "Medios...",
"Nonbreaking space": "Espacio fijo",
"Page break": "Salto de p\u00e1gina",
"Paste as text": "Pegar como texto",
"Preview": "Previsualizar",
"Print...": "Imprimir...",
"Save": "Guardar",
"Find": "Buscar",
"Replace with": "Reemplazar con",
"Replace": "Reemplazar",
"Replace all": "Reemplazar todo",
"Previous": "Anterior",
"Next": "Siguiente",
"Find and replace...": "Buscar y reemplazar...",
"Could not find the specified string.": "No se encuentra la cadena de texto especificada",
"Match case": "Coincidencia exacta",
"Find whole words only": "Solo palabras completas",
"Spell check": "Revisar ortograf\u00eda",
"Ignore": "Ignorar",
"Ignore all": "Ignorar todos",
"Finish": "Finalizar",
"Add to Dictionary": "A\u00f1adir al Diccionario",
"Insert table": "Insertar tabla",
"Table properties": "Propiedades de la tabla",
"Delete table": "Eliminar tabla",
"Cell": "Celda",
"Row": "Fila",
"Column": "Columna",
"Cell properties": "Propiedades de la celda",
"Merge cells": "Combinar celdas",
"Split cell": "Dividir celdas",
"Insert row before": "Insertar fila antes",
"Insert row after": "Insertar fila despu\u00e9s ",
"Delete row": "Eliminar fila",
"Row properties": "Propiedades de la fila",
"Cut row": "Cortar fila",
"Copy row": "Copiar fila",
"Paste row before": "Pegar la fila antes",
"Paste row after": "Pegar la fila despu\u00e9s",
"Insert column before": "Insertar columna antes",
"Insert column after": "Insertar columna despu\u00e9s",
"Delete column": "Eliminar columna",
"Cols": "Columnas",
"Rows": "Filas",
"Width": "Ancho",
"Height": "Alto",
"Cell spacing": "Espacio entre celdas",
"Cell padding": "Relleno de celda",
"Show caption": "Mostrar t\u00edtulo",
"Left": "Izquierda",
"Center": "Centrado",
"Right": "Derecha",
"Cell type": "Tipo de celda",
"Scope": "\u00c1mbito",
"Alignment": "Alineaci\u00f3n",
"H Align": "Alineamiento Horizontal",
"V Align": "Alineamiento Vertical",
"Top": "Arriba",
"Middle": "Centro",
"Bottom": "Abajo",
"Header cell": "Celda de la cebecera",
"Row group": "Grupo de filas",
"Column group": "Grupo de columnas",
"Row type": "Tipo de fila",
"Header": "Cabecera",
"Body": "Cuerpo",
"Footer": "Pie de p\u00e1gina",
"Border color": "Color del borde",
"Insert template...": "Insertar plantilla...",
"Templates": "Plantillas",
"Template": "Plantilla",
"Text color": "Color del texto",
"Background color": "Color de fondo",
"Custom...": "Personalizar...",
"Custom color": "Color personalizado",
"No color": "Sin color",
"Remove color": "Quitar color",
"Table of Contents": "Tabla de contenidos",
"Show blocks": "Mostrar bloques",
"Show invisible characters": "Mostrar caracteres invisibles",
"Word count": "Contar palabras",
"Count": "Recuento",
"Document": "Documento",
"Selection": "Selecci\u00f3n",
"Words": "Palabras",
"Words: {0}": "Palabras: {0}",
"{0} words": "{0} palabras",
"File": "Archivo",
"Edit": "Editar",
"Insert": "Insertar",
"View": "Ver",
"Format": "Formato",
"Table": "Tabla",
"Tools": "Herramientas",
"Powered by {0}": "Desarrollado por {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda",
"Image title": "Titulo de imagen",
"Border width": "Ancho de borde",
"Border style": "Estilo de borde",
"Error": "Error",
"Warn": "Advertencia",
"Valid": "V\u00e1lido",
"To open the popup, press Shift+Enter": "Para abrir el elemento emergente, pulse May\u00fas+Intro",
"Rich Text Area. Press ALT-0 for help.": "\u00c1rea de texto enriquecido. Pulse ALT-0 para abrir la ayuda.",
"System Font": "Fuente de sistema",
"Failed to upload image: {0}": "Fallo al cargar imagen: {0}",
"Failed to load plugin: {0} from url {1}": "Fallo al cargar complemento: {0} desde URL {1}",
"Failed to load plugin url: {0}": "Fallo al cargar URL del complemento: {0}",
"Failed to initialize plugin: {0}": "Fallo al iniciar el complemento: {0}",
"example": "ejemplo",
"Search": "Buscar",
"All": "Todo",
"Currency": "Divisa",
"Text": "Texto",
"Quotations": "Comillas",
"Mathematical": "S\u00edmbolo matem\u00e1tico",
"Extended Latin": "Latino extendido A",
"Symbols": "S\u00edmbolos",
"Arrows": "Flechas",
"User Defined": "Definido por el usuario",
"dollar sign": "signo de d\u00f3lar",
"currency sign": "signo de divisa",
"euro-currency sign": "signo de euro",
"colon sign": "signo de dos puntos",
"cruzeiro sign": "signo de cruceiro",
"french franc sign": "signo de franco franc\u00e9s",
"lira sign": "signo de lira",
"mill sign": "signo de mill",
"naira sign": "signo de naira",
"peseta sign": "signo de peseta",
"rupee sign": "signo de rupia",
"won sign": "signo de won",
"new sheqel sign": "signo de nuevo s\u00e9quel",
"dong sign": "signo de dong",
"kip sign": "signo de kip",
"tugrik sign": "signo de tugrik",
"drachma sign": "signo de dracma",
"german penny symbol": "signo de penique alem\u00e1n",
"peso sign": "signo de peso",
"guarani sign": "signo de guaran\u00ed",
"austral sign": "signo de austral",
"hryvnia sign": "signo de grivna",
"cedi sign": "signo de cedi",
"livre tournois sign": "signo de libra tornesa",
"spesmilo sign": "signo de spesmilo",
"tenge sign": "signo de tenge",
"indian rupee sign": "signo de rupia india",
"turkish lira sign": "signo de lira turca",
"nordic mark sign": "signo de marco n\u00f3rdico",
"manat sign": "signo de manat",
"ruble sign": "signo de rublo",
"yen character": "car\u00e1cter de yen",
"yuan character": "car\u00e1cter de yuan",
"yuan character, in hong kong and taiwan": "car\u00e1cter de yuan en Hong Kong y Taiw\u00e1n",
"yen\/yuan character variant one": "Variante uno de car\u00e1cter de yen\/yuan",
"Loading emoticons...": "Cargando emoticonos...",
"Could not load emoticons": "No se han podido cargar los emoticonos",
"People": "Personas",
"Animals and Nature": "Animales y naturaleza",
"Food and Drink": "Comida y bebida",
"Activity": "Actividad",
"Travel and Places": "Viajes y lugares",
"Objects": "Objetos",
"Flags": "Banderas",
"Characters": "Caracteres",
"Characters (no spaces)": "Caracteres (sin espacios)",
"{0} characters": "{0} caracteres",
"Error: Form submit field collision.": "Error: Colisi\u00f3n de campo al enviar formulario.",
"Error: No form element found.": "Error: No se encuentra ning\u00fan elemento de formulario.",
"Update": "Actualizar",
"Color swatch": "Muestrario de colores",
"Turquoise": "Turquesa",
"Green": "Verde",
"Blue": "Azul",
"Purple": "P\u00farpura",
"Navy Blue": "Azul marino",
"Dark Turquoise": "Turquesa oscuro",
"Dark Green": "Verde oscuro",
"Medium Blue": "Azul medio",
"Medium Purple": "P\u00farpura medio",
"Midnight Blue": "Azul medio",
"Yellow": "Amarillo",
"Orange": "Naranja",
"Red": "Rojo",
"Light Gray": "Gris claro",
"Gray": "Gris",
"Dark Yellow": "Amarillo oscuro",
"Dark Orange": "Naranja oscuro",
"Dark Red": "Rojo oscuro",
"Medium Gray": "Gris medio",
"Dark Gray": "Gris oscuro",
"Light Green": "Verde claro",
"Light Yellow": "Amarillo claro",
"Light Red": "Rojo claro",
"Light Purple": "Morado claro",
"Light Blue": "Azul claro",
"Dark Purple": "Morado oscuro",
"Dark Blue": "Azul oscuro",
"Black": "Negro",
"White": "Blanco",
"Switch to or from fullscreen mode": "Activar o desactivar modo pantalla completa",
"Open help dialog": "Abrir di\u00e1logo de ayuda",
"history": "historial",
"styles": "estilos",
"formatting": "formato",
"alignment": "alineaci\u00f3n",
"indentation": "sangr\u00eda",
"permanent pen": "bol\u00edgrafo permanente",
"comments": "comentarios",
"Format Painter": "Copiar formato",
"Insert\/edit iframe": "Insertar\/editar iframe",
"Capitalization": "Uso de may\u00fasculas",
"lowercase": "min\u00fasculas",
"UPPERCASE": "MAY\u00daSCULAS",
"Title Case": "Tipo T\u00edtulo",
"Permanent Pen Properties": "Propiedades del bol\u00edgrafo permanente",
"Permanent pen properties...": "Propiedades del bol\u00edgrafo permanente...",
"Font": "Fuente",
"Size": "Tama\u00f1o",
"More...": "M\u00e1s...",
"Spellcheck Language": "Corrector",
"Select...": "Seleccionar...",
"Preferences": "Preferencias",
"Yes": "S\u00ed",
"No": "No",
"Keyboard Navigation": "Navegaci\u00f3n con el teclado",
"Version": "Versi\u00f3n",
"Anchor": "Ancla",
"Special character": "Car\u00e1cter especial",
"Code sample": "Ejemplo de c\u00f3digo",
"Color": "Color",
"Emoticons": "Emoticonos",
"Document properties": "Propiedades del documento",
"Image": "Imagen",
"Insert link": "Insertar enlace",
"Target": "Destino",
"Link": "Enlace",
"Poster": "Miniatura",
"Media": "Media",
"Print": "Imprimir",
"Prev": "Anterior",
"Find and replace": "Buscar y reemplazar",
"Whole words": "Palabras completas",
"Spellcheck": "Corrector ortogr\u00e1fico",
"Caption": "Subt\u00edtulo",
"Insert template": "Insertar plantilla"
});js/tinymce/langs/sl.js000064400000041436151727150320010723 0ustar00tinymce.addI18n('sl',{
"Redo": "Ponovno uveljavi",
"Undo": "Razveljavi",
"Cut": "Izre\u017ei",
"Copy": "Kopiraj",
"Paste": "Prilepi",
"Select all": "Izberi vse",
"New document": "Nov dokument",
"Ok": "V redu",
"Cancel": "Prekli\u010di",
"Visual aids": "Vizualni pripomo\u010dki",
"Bold": "Krepko",
"Italic": "Po\u0161evno",
"Underline": "Pod\u010drtano",
"Strikethrough": "Pre\u010drtano",
"Superscript": "Nadpisano",
"Subscript": "Podpisano",
"Clear formatting": "Odstrani oblikovanje",
"Align left": "Leva poravnava",
"Align center": "Sredinska poravnava",
"Align right": "Desna poravnava",
"Justify": "Obojestranska poravnava",
"Bullet list": "Ozna\u010den seznam",
"Numbered list": "O\u0161tevil\u010den seznam",
"Decrease indent": "Zmanj\u0161aj zamik",
"Increase indent": "Pove\u010daj zamik",
"Close": "Zapri",
"Formats": "Oblika",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Varnostne nastavitve brskalnika ne dopu\u0161\u010dajo direktnega dostopa do odlo\u017ei\u0161\u010da. Uporabite kombinacijo tipk Ctrl + X\/C\/V na tipkovnici.",
"Headers": "Naslovi",
"Header 1": "Naslov 1",
"Header 2": "Naslov 2",
"Header 3": "Naslov 3",
"Header 4": "Naslov 4",
"Header 5": "Naslov 5",
"Header 6": "Naslov 6",
"Headings": "Naslovi",
"Heading 1": "Naslov 1",
"Heading 2": "Naslov 2",
"Heading 3": "Naslov 3",
"Heading 4": "Naslov 4",
"Heading 5": "Naslov 5",
"Heading 6": "Naslov 6",
"Preformatted": "Predformatirano",
"Div": "Div",
"Pre": "Pre",
"Code": "Koda",
"Paragraph": "Odstavek",
"Blockquote": "Blockquote",
"Inline": "Med besedilom",
"Blocks": "Bloki",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Odlagali\u0161\u010de je sedaj v tekstovnem na\u010dinu. Vsebina bo preslikana kot besedilo, dokler te mo\u017enosti ne izklju\u010dite.",
"Fonts": "Pisave",
"Font Sizes": "Velikosti pisave",
"Class": "Razred",
"Browse for an image": "Prebrskaj za sliko",
"OR": "ALI",
"Drop an image here": "Spusti sliko sem",
"Upload": "Nalo\u017ei",
"Block": "Blok",
"Align": "Poravnava",
"Default": "Privzeto",
"Circle": "Krog",
"Disc": "Disk",
"Square": "Kvadrat",
"Lower Alpha": "Mala alfa",
"Lower Greek": "Male gr\u0161ke \u010drke",
"Lower Roman": "Male rimske \u0161tevilke",
"Upper Alpha": "Velika alfa",
"Upper Roman": "Velike rimske \u0161tevilke",
"Anchor...": "Sidro ...",
"Name": "Naziv",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id se mora za\u010deti s \u010drko, sledijo samo \u010drke, \u0161tevilke, pomi\u0161ljaji, pike, dvopi\u010dja ali pod\u010drtaji.",
"You have unsaved changes are you sure you want to navigate away?": "Imate neshranjene spremembe. Ste prepri\u010dati, da \u017eelite zapustiti stran?",
"Restore last draft": "Obnovi zadnji osnutek",
"Special character...": "Poseben znak ...",
"Source code": "Izvorna koda",
"Insert\/Edit code sample": "Vstavi\/Uredi vzor\u010dno kodo",
"Language": "Jezik",
"Code sample...": "Vzor\u010dna koda ...",
"Color Picker": "Izbirnik barve",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Od leve proti desni",
"Right to left": "Od desne proti levi",
"Emoticons": "\u010custveni simboli",
"Emoticons...": "\u010custveni simboli ...",
"Metadata and Document Properties": "Metapodatki in lastnosti dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne besede",
"Description": "Opis",
"Robots": "Robotki",
"Author": "Avtor",
"Encoding": "Kodiranje",
"Fullscreen": "\u010cez cel zaslon",
"Action": "Dejanje",
"Shortcut": "Bli\u017enjica",
"Help": "Pomo\u010d",
"Address": "Naslov",
"Focus to menubar": "Poudarek na menijski vrstici",
"Focus to toolbar": "Poudarek na orodni vrstici",
"Focus to element path": "Poudarek na poti elementa",
"Focus to contextual toolbar": "Poudarek na kontekstualni orodni vrstici",
"Insert link (if link plugin activated)": "Vstavi povezavo (\u010de je aktiviran vti\u010dnik za povezavo)",
"Save (if save plugin activated)": "Shrani (\u010de je aktiviran vti\u010dnik za shranjevanje)",
"Find (if searchreplace plugin activated)": "I\u0161\u010di (\u010de je aktiviran vti\u010dnik za iskanje\/zamenjavo)",
"Plugins installed ({0}):": "Name\u0161\u010deni vti\u010dniki ({0}):",
"Premium plugins:": "Premium vti\u010dniki:",
"Learn more...": "Ve\u010d ...",
"You are using {0}": "Uporabljate {0}",
"Plugins": "Vti\u010dniki",
"Handy Shortcuts": "Uporabne bli\u017enjice",
"Horizontal line": "Vodoravna \u010drta",
"Insert\/edit image": "Vstavi\/uredi sliko",
"Alternative description": "Nadomestni opis",
"Accessibility": "Dostopnost",
"Image is decorative": "Slika je okrasna",
"Source": "Pot",
"Dimensions": "Dimenzije",
"Constrain proportions": "Obdr\u017ei razmerje",
"General": "Splo\u0161no",
"Advanced": "Napredno",
"Style": "Slog",
"Vertical space": "Navpi\u010dni prostor",
"Horizontal space": "Vodoravni prostor",
"Border": "Meja",
"Insert image": "Vnesi sliko",
"Image...": "Slika ...",
"Image list": "Seznam slik",
"Rotate counterclockwise": "Zavrti v nasprotni smeri urnega kazalca",
"Rotate clockwise": "Zavrti v smeri urnega kazalca",
"Flip vertically": "Obrni navpi\u010dno",
"Flip horizontally": "Obrni vodoravno",
"Edit image": "Uredi sliko",
"Image options": "Mo\u017enosti slike",
"Zoom in": "Pove\u010daj",
"Zoom out": "Pomanj\u0161aj",
"Crop": "Obre\u017ei",
"Resize": "Spremeni velikost",
"Orientation": "Usmerjenost",
"Brightness": "Svetlost",
"Sharpen": "Izostri",
"Contrast": "Kontrast",
"Color levels": "Barvni nivo",
"Gamma": "Gama",
"Invert": "Obrni",
"Apply": "Uporabi",
"Back": "Nazaj",
"Insert date\/time": "Vstavi datum\/\u010das",
"Date\/time": "Datum\/\u010das",
"Insert\/edit link": "Vstavi\/uredi povezavo",
"Text to display": "Besedilo za prikaz",
"Url": "Povezava",
"Open link in...": "Odpri povezavo v ...",
"Current window": "Trenutno okno",
"None": "Brez",
"New window": "Novo okno",
"Open link": "Odpri povezavo",
"Remove link": "Odstrani povezavo",
"Anchors": "Sidra",
"Link...": "Povezava ...",
"Paste or type a link": "Prilepite ali vnesite povezavo",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Vneseni URL predstavlja e-po\u0161tni naslov. Ali \u017eelite dodati potrebno predpono \"mailto:\"?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Vneseni URL predstavlja zunanjo povezavo. Ali \u017eelite dodati predpono \"http:\/\/\"?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Vneseni URL naslov predstavlja zunanjo povezavo. Ali mu \u017eelite dodati predpono https:\/\/ ?",
"Link list": "Seznam povezav",
"Insert video": "Vstavi video",
"Insert\/edit video": "Vstavi\/uredi video",
"Insert\/edit media": "Vstavi\/uredi medij",
"Alternative source": "Nadomestni vir",
"Alternative source URL": "Nadomestni vir URL",
"Media poster (Image URL)": "Medijski poster (URL slike)",
"Paste your embed code below:": "Spodaj prilepite kodo za vdelavo:",
"Embed": "Vdelaj",
"Media...": "Mediji ...",
"Nonbreaking space": "Nedeljivi presledek",
"Page break": "Prelom strani",
"Paste as text": "Vnesi kot besedilo",
"Preview": "Predogled",
"Print...": "Natisni ...",
"Save": "Shrani",
"Find": "Najdi",
"Replace with": "Zamenjaj z",
"Replace": "Zamenjaj",
"Replace all": "Zamenjaj vse",
"Previous": "Prej\u0161nja",
"Next": "Naslednja",
"Find and Replace": "Najdi in zamenjaj",
"Find and replace...": "Najdi in zamenjaj ...",
"Could not find the specified string.": "Iskanje ni vrnilo rezultatov.",
"Match case": "Ujemanje malih in velikih \u010drk",
"Find whole words only": "I\u0161\u010di samo cele besede",
"Find in selection": "I\u0161\u010di v izboru",
"Spellcheck": "\u010crkovalnik",
"Spellcheck Language": "Jezik \u010drkovalnika",
"No misspellings found.": "Ni najdenih napak v \u010drkovanju.",
"Ignore": "Prezri",
"Ignore all": "Prezri vse",
"Finish": "Zaklju\u010di",
"Add to Dictionary": "Dodaj v slovar",
"Insert table": "Vstavi tabelo",
"Table properties": "Lastnosti tabele",
"Delete table": "Izbri\u0161i tabelo",
"Cell": "Celica",
"Row": "Vrstica",
"Column": "Stolpec",
"Cell properties": "Lastnosti celice",
"Merge cells": "Zdru\u017ei celice",
"Split cell": "Razdeli celico",
"Insert row before": "Vstavi vrstico pred",
"Insert row after": "Vstavi vrstico za",
"Delete row": "Izbri\u0161i vrstico",
"Row properties": "Lastnosti vrstice",
"Cut row": "Izre\u017ei vrstico",
"Copy row": "Kopiraj vrstico",
"Paste row before": "Prilepi vrstico pred",
"Paste row after": "Prilepi vrstico za",
"Insert column before": "Vstavi stolpec pred",
"Insert column after": "Vstavi stolpec za",
"Delete column": "Izbri\u0161i stolpec",
"Cols": "Stolpci",
"Rows": "Vrstice",
"Width": "\u0160irina",
"Height": "Vi\u0161ina",
"Cell spacing": "Razmik med celicami",
"Cell padding": "Polnilo med celicami",
"Caption": "Naslov",
"Show caption": "Poka\u017ei napis",
"Left": "Leva",
"Center": "Sredinska",
"Right": "Desna",
"Cell type": "Tip celice",
"Scope": "Obseg",
"Alignment": "Poravnava",
"H Align": "Vodoravna poravnava",
"V Align": "Navpi\u010dna poravnava",
"Top": "Vrh",
"Middle": "Sredina",
"Bottom": "Dno",
"Header cell": "Celica glave",
"Row group": "Grupiranje vrstic",
"Column group": "Grupiranje stolpcev",
"Row type": "Tip vrstice",
"Header": "Header",
"Body": "Vsebina",
"Footer": "Footer",
"Border color": "Barva obrobe",
"Insert template...": "Vstavi predlogo ...",
"Templates": "Predloge",
"Template": "Predloga",
"Text color": "Barva besedila",
"Background color": "Barva ozadja",
"Custom...": "Po meri ...",
"Custom color": "Barva po meri",
"No color": "Brezbarvno",
"Remove color": "Odstrani barvo",
"Table of Contents": "Kazalo",
"Show blocks": "Prika\u017ei bloke",
"Show invisible characters": "Prika\u017ei skrite znake",
"Word count": "\u0160tevilo besed",
"Count": "\u0160tevilo",
"Document": "Dokument",
"Selection": "Izbor",
"Words": "Besede",
"Words: {0}": "Besed: {0}",
"{0} words": "{0} besed",
"File": "Datoteka",
"Edit": "Uredi",
"Insert": "Vstavi",
"View": "Pogled",
"Format": "Oblika",
"Table": "Tabela",
"Tools": "Orodja",
"Powered by {0}": "Uporablja tehnologijo {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Bogato besedilo. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za pomo\u010d",
"Image title": "Naslov slike",
"Border width": "\u0160irina obrobe",
"Border style": "Slog obrobe",
"Error": "Napaka",
"Warn": "Opozorilo",
"Valid": "Veljavno",
"To open the popup, press Shift+Enter": "Za odpiranje pojavnega okna pritisnite Shift + Enter.",
"Rich Text Area. Press ALT-0 for help.": "Bogato besedilo. Pritisnite ALT-0 za pomo\u010d.",
"System Font": "Sistemska pisava",
"Failed to upload image: {0}": "Napaka nalaganja slike: {0}",
"Failed to load plugin: {0} from url {1}": "Napaka nalaganja vti\u010dnika: {0} z url {1}",
"Failed to load plugin url: {0}": "Napaka nalaganja url: {0}",
"Failed to initialize plugin: {0}": "Napaka inicializacije vti\u010dnika: {0}",
"example": "primer",
"Search": "Iskanje",
"All": "Vse",
"Currency": "Valuta",
"Text": "Besedilo",
"Quotations": "Citati",
"Mathematical": "Matemati\u010dno",
"Extended Latin": "Raz\u0161irjena latinica",
"Symbols": "Simboli",
"Arrows": "Pu\u0161\u010dice",
"User Defined": "Uporabnik dolo\u010den",
"dollar sign": "znak za dolar",
"currency sign": "znak za valuto",
"euro-currency sign": "znak za evro",
"colon sign": "znak za dvopi\u010dje",
"cruzeiro sign": "znak za cruzeiro",
"french franc sign": "znak za francoski frank",
"lira sign": "znak za liro",
"mill sign": "znak za mill",
"naira sign": "znak za nairo",
"peseta sign": "znak za peseto",
"rupee sign": "znak za rupijo",
"won sign": "znak za won",
"new sheqel sign": "znak za novi \u0161ekl",
"dong sign": "znak za dong",
"kip sign": "znak za kip",
"tugrik sign": "znak za tugrik",
"drachma sign": "znak za drahmo",
"german penny symbol": "znak za nem\u0161ki peni",
"peso sign": "znak za peso",
"guarani sign": "znak za guarani",
"austral sign": "znak za austral",
"hryvnia sign": "znak za hrivnijo",
"cedi sign": "znak za cedi",
"livre tournois sign": "znak za livre tournois",
"spesmilo sign": "znak za spesmilo",
"tenge sign": "znak za tenge",
"indian rupee sign": "znak za indijsko rupijo",
"turkish lira sign": "znak za tur\u0161ko liro",
"nordic mark sign": "znak za nordijsko marko",
"manat sign": "znak za manat",
"ruble sign": "znak za rubelj",
"yen character": "znak za jen",
"yuan character": "znak za yuan",
"yuan character, in hong kong and taiwan": "znak za yuan, v Hongkongu in na Tajvanu",
"yen\/yuan character variant one": "znak za jen\/yuan, prva razli\u010dica",
"Loading emoticons...": "Nalaganje \u010dustvenih simbolov ...",
"Could not load emoticons": "\u010custvenih simbolov ni mogo\u010de nalo\u017eiti.",
"People": "Ljudje",
"Animals and Nature": "\u017divali in narava",
"Food and Drink": "Hrana in pija\u010da",
"Activity": "Dejavnost",
"Travel and Places": "Potovanja in kraji",
"Objects": "Predmeti",
"Flags": "Zastave",
"Characters": "Znaki",
"Characters (no spaces)": "Znaki (brez presledkov)",
"{0} characters": "{0} znakov",
"Error: Form submit field collision.": "Napaka: navzkri\u017eje polja za oddajo obrazca",
"Error: No form element found.": "Napaka: elementa oblike ni mogo\u010de najti",
"Update": "Posodobitev",
"Color swatch": "Vzorec barv",
"Turquoise": "Turkizna",
"Green": "Zelena",
"Blue": "Modra",
"Purple": "\u0160krlatna",
"Navy Blue": "Mornarsko modra",
"Dark Turquoise": "Temno turkizna",
"Dark Green": "Temno zelena",
"Medium Blue": "Srednje modra",
"Medium Purple": "Srednje \u0161krlatna",
"Midnight Blue": "Polno\u010dno modra",
"Yellow": "Rumena",
"Orange": "Oran\u017ena",
"Red": "Rde\u010da",
"Light Gray": "Svetlo siva",
"Gray": "Siva",
"Dark Yellow": "Temno rumena",
"Dark Orange": "Temno oran\u017ena",
"Dark Red": "Temno rde\u010da",
"Medium Gray": "Srednje siva",
"Dark Gray": "Temno siva",
"Light Green": "Svetlo zelena",
"Light Yellow": "Svetlo rumena",
"Light Red": "Svetlo rde\u010da",
"Light Purple": "Svetlo vijoli\u010dna",
"Light Blue": "Svetlo modra",
"Dark Purple": "Temno vijoli\u010dna",
"Dark Blue": "Temno modra",
"Black": "\u010crna",
"White": "Bela",
"Switch to or from fullscreen mode": "Preklopi v ali iz celozaslonskega na\u010dina",
"Open help dialog": "Odpri pogovorno okno za pomo\u010d",
"history": "zgodovina",
"styles": "slogi",
"formatting": "oblikovanje",
"alignment": "poravnava",
"indentation": "zamik",
"Font": "Pisava",
"Size": "Velikost",
"More...": "Ve\u010d ...",
"Select...": "Izberi ...",
"Preferences": "Preference",
"Yes": "Da",
"No": "Ne",
"Keyboard Navigation": "Krmarjenje s tipkovnico",
"Version": "Razli\u010dica",
"Code view": "Prikaz kode",
"Open popup menu for split buttons": "Odpri pojavni meni za razdeljene gumbe",
"List Properties": "Lastnosti seznama",
"List properties...": "Lastnosti seznama...",
"Start list at number": "Za\u010dni seznam s \u0161tevilko",
"Line height": "Vi\u0161ina vrstice",
"comments": "komentarji",
"Format Painter": "Preslikovalnik Oblik",
"Insert\/edit iframe": "Vstavi\/uredi iFrame",
"Capitalization": "Velika za\u010detnica",
"lowercase": "male \u010drke",
"UPPERCASE": "VELIKE \u010cRKE",
"Title Case": "Velike za\u010detnice naslovov",
"permanent pen": "permanentno pisalo",
"Permanent Pen Properties": "Lastnosti permanentnega pisala",
"Permanent pen properties...": "Lastnosti permanentnega pisala ...",
"case change": "sprememba male\/velike \u010drke",
"page embed": "vstavi stran",
"Advanced sort...": "Napredno razvr\u0161\u010danje",
"Advanced Sort": "Napredno razvr\u0161\u010danje...",
"Sort table by column ascending": "Razvrsti tabelo po stolpcu nara\u0161\u010dajo\u010de",
"Sort table by column descending": "Razvrsti tabelo po stolpcu padajo\u010de",
"Sort": "Razvrsti",
"Order": "Vrstni red",
"Sort by": "Razvrsti po",
"Ascending": "Nara\u0161\u010dajo\u010de",
"Descending": "Padajo\u010de",
"Column {0}": "Stolpec {0}",
"Row {0}": "Vrstica {0}",
"Spellcheck...": "\u010crkovalnik...",
"Misspelled word": "\u00b8Nepravilno \u010drkovana beseda",
"Suggestions": "Predlogi",
"Change": "Spremeni",
"Finding word suggestions": "Iskanje predlogov besed",
"Success": "Uspe\u0161no",
"Repair": "Popravi",
"Issue {0} of {1}": "Te\u017eava {0} od {1}",
"Images must be marked as decorative or have an alternative text description": "Slike morajo biti ozna\u010dene kot okrasne ali morajo imeti nadomestni opis v obliki besedila",
"Images must have an alternative text description. Decorative images are not allowed.": "Slike morajo imeti nadomestni opis v obliki besedila.  Okrasne slike niso dovoljene.",
"Or provide alternative text:": "Ali podajte nadomestno besedilo:",
"Make image decorative:": "Dolo\u010di sliko kot okrasno:",
"ID attribute must be unique": "ID atribut mora biti edinstven",
"Make ID unique": "Ustvari edinstven ID",
"Keep this ID and remove all others": "Obdr\u017ei ta ID in odstrani vse ostale",
"Remove this ID": "Odstrani ta ID",
"Remove all IDs": "Odstrani vse IDje",
"Checklist": "Seznam preverjanj"
});js/tinymce/langs/tt.js000064400000047371151727150320010740 0ustar00tinymce.addI18n('tt',{
"Cut": "\u041a\u0438\u0441\u0435\u043f \u0430\u043b\u0443",
"Heading 5": "\u0411\u0430\u0448\u043b\u0430\u043c 5",
"Header 2": "\u0411\u0430\u0448\u043b\u0430\u043c 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b\u0433\u044b\u0437 \u0430\u043b\u043c\u0430\u0448\u0443 \u0431\u0443\u0444\u0435\u0440\u044b\u043d\u0430 \u043a\u0435\u0440\u04af \u043c\u04e9\u043c\u043a\u0438\u043d\u043b\u0435\u0433\u0435 \u0431\u0435\u043b\u04d9\u043d \u0442\u04d9\u044d\u043c\u0438\u043d \u0438\u0442\u0435\u043b\u043c\u04d9\u0433\u04d9\u043d. \u0410\u043b\u043c\u0430\u0448\u043a\u0430 Ctrl+X\/C\/V \u043a\u0443\u043b\u043b\u0430\u043d\u044b\u0433\u044b\u0437.",
"Heading 4": "\u0411\u0430\u0448\u043b\u0430\u043c 4",
"Div": "Div",
"Heading 2": "\u0411\u0430\u0448\u043b\u0430\u043c 2",
"Paste": "\u04e8\u0441\u0442\u04d9\u04af",
"Close": "\u042f\u0431\u044b\u0440\u0433\u0430",
"Font Family": "\u0428\u0440\u0438\u0444\u0442 \u0442\u04e9\u0440\u0435",
"Pre": "\u0410\u043b\u0434\u0430\u043d \u0444\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u043d\u0433\u0430\u043d \u0442\u0435\u043a\u0441\u0442",
"Align right": "\u0423\u04a3 \u044f\u043a \u043a\u044b\u0440\u044b\u0439\u0434\u0430\u043d \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"New document": "\u042f\u04a3\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f",
"Heading 1": "\u0411\u0430\u0448\u043b\u0430\u043c 1",
"Headings": "\u0411\u0430\u0448\u043b\u0430\u043c\u043b\u0430\u0440",
"Increase indent": "\u041e\u0442\u0441\u0442\u0443\u043f\u043d\u044b \u0430\u0440\u0442\u0442\u044b\u0440\u0443",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0440",
"Headers": "\u0411\u0430\u0448\u043b\u0430\u043c\u043b\u0430\u0440",
"Select all": "\u0411\u0430\u0440\u044b\u0441\u044b\u043d \u0441\u0430\u0439\u043b\u0430\u0443",
"Header 3": "\u0411\u0430\u0448\u043b\u0430\u043c 3",
"Blocks": "\u0411\u043b\u043e\u043a\u043b\u0430\u0440",
"Undo": "\u041a\u0430\u0439\u0442\u0430\u0440\u0443",
"Strikethrough": "\u0421\u044b\u0437\u044b\u043b\u0433\u0430\u043d",
"Bullet list": "\u041c\u0430\u0440\u043a\u0435\u0440\u043b\u0430\u0440",
"Header 1": "\u0411\u0430\u0448\u043b\u0430\u043c 1",
"Superscript": "\u04e8\u0441\u043a\u0435 \u0438\u043d\u0434\u0435\u043a\u0441",
"Clear formatting": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u043d\u044b \u0447\u0438\u0441\u0442\u0430\u0440\u0442\u0443",
"Font Sizes": "\u0428\u0440\u0438\u0444\u0442 \u0437\u0443\u0440\u043b\u044b\u043a\u043b\u0430\u0440\u044b",
"Subscript": "\u0410\u0441\u043a\u044b \u0438\u043d\u0434\u0435\u043a\u0441",
"Header 6": "\u0411\u0430\u0448\u043b\u0430\u043c 6",
"Redo": "\u041a\u0430\u0431\u0430\u0442\u043b\u0430\u0443",
"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Ok": "\u0422\u04d9\u043c\u0430\u043c",
"Bold": "\u041a\u0430\u043b\u044b\u043d",
"Code": "\u041a\u043e\u0434",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Align center": "\u04ae\u0437\u04d9\u043a\u043a\u04d9 \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"Header 5": "\u0411\u0430\u0448\u043b\u0430\u043c 5",
"Heading 6": "\u0411\u0430\u0448\u043b\u0430\u043c 6",
"Heading 3": "\u0411\u0430\u0448\u043b\u0430\u043c 3",
"Decrease indent": "\u041e\u0442\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u0435\u0447\u0435\u0440\u04d9\u0439\u0442\u04af",
"Header 4": "\u0411\u0430\u0448\u043b\u0430\u043c 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u04e8\u0441\u0442\u04d9\u043b\u04d9\u0441\u0435 \u0442\u0435\u043a\u0441\u0442 \u0445\u04d9\u0437\u0435\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u043d\u043c\u0430\u0433\u0430\u043d \u0440\u0435\u0436\u0438\u043c\u0434\u0430. \u04d8\u043b\u0435\u0433\u0435 \u04af\u0437\u043b\u0435\u043a\u043d\u0435 \u0441\u04af\u043d\u0434\u0435\u0440\u043c\u04d9\u0433\u04d9\u043d \u043e\u0447\u0440\u0430\u043a\u0442\u0430 \u0442\u0435\u043a\u0441\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u043d\u043c\u0430\u0433\u0430\u043d \u043a\u0438\u043b\u0435\u0448 \u04e9\u0441\u0442\u04d9\u043b\u0435\u0440.",
"Underline": "\u0410\u0441\u0442\u044b\u043d\u0430 \u0441\u044b\u0437\u044b\u043b\u0433\u0430\u043d",
"Cancel": "\u0411\u0430\u0448 \u0442\u0430\u0440\u0442\u0443",
"Justify": "\u041a\u0438\u04a3\u043b\u0435\u043a\u043a\u04d9 \u043a\u0430\u0440\u0430\u043f \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"Inline": "\u042e\u043b \u0445\u04d9\u0440\u0435\u0444\u043b\u04d9\u0440\u0435",
"Copy": "\u041a\u04af\u0447\u0435\u0440\u043c\u04d9\u043b\u04d9\u04af",
"Align left": "\u0421\u0443\u043b \u044f\u043a \u043a\u044b\u0440\u044b\u0439\u0434\u0430\u043d \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"Visual aids": "\u041a\u04af\u0440\u0441\u04d9\u0442\u043c\u04d9 \u04d9\u0441\u0431\u0430\u043f\u043b\u0430\u0440",
"Lower Greek": "\u0413\u0440\u0435\u043a \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u0435",
"Square": "\u0428\u0430\u043a\u043c\u0430\u043a",
"Default": "\u04d8\u04af\u0432\u04d9\u043b\u0433\u0435 \u043a\u04e9\u0439\u043b\u04d9\u04af\u043b\u04d9\u0440",
"Lower Alpha": "\u0410\u043b\u044c\u0444\u0430 \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u0435",
"Circle": "\u0422\u04af\u0433\u0259\u0440\u0259\u043a",
"Disc": "\u0414\u0438\u0441\u043a",
"Upper Alpha": "\u0410\u043b\u044c\u0444\u0430 \u0431\u0430\u0448 \u0445\u04d9\u0440\u0435\u0444\u0435",
"Upper Roman": "\u0420\u0438\u043c \u0431\u0430\u0448 \u0445\u04d9\u0440\u0435\u0444\u0435",
"Lower Roman": "\u0420\u0438\u043c \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u0435",
"Name": "\u0418\u0441\u0435\u043c",
"Anchor": "\u042f\u043a\u043e\u0440\u044c",
"You have unsaved changes are you sure you want to navigate away?": "\u0421\u0430\u043a\u043b\u0430\u043d\u043c\u0430\u0433\u0430\u043d \u04af\u0437\u0433\u04d9\u0440\u0435\u0448\u043b\u04d9\u0440 \u0431\u0430\u0440. \u0421\u0435\u0437 \u0447\u044b\u043d\u043d\u0430\u043d \u0434\u0430 \u0447\u044b\u0433\u0430\u0440\u0433\u0430 \u0442\u0435\u043b\u0438\u0441\u0435\u0437\u043c\u0435?",
"Restore last draft": "\u0421\u043e\u04a3\u0433\u044b \u043a\u0430\u0440\u0430\u043b\u0430\u043c\u0430\u043d\u044b \u043a\u0430\u0439\u0442\u0430\u0440\u0443",
"Special character": "\u041c\u0430\u0445\u0441\u0443\u0441 \u0441\u0438\u043c\u0432\u043e\u043b",
"Source code": "\u0427\u044b\u0433\u0430\u043d\u0430\u043a \u043a\u043e\u0434",
"B": "B",
"R": "R",
"G": "G",
"Color": "\u0422\u04e9\u0441",
"Right to left": "\u0423\u04a3\u043d\u0430\u043d \u0441\u0443\u043b\u0433\u0430 \u044f\u0437\u044b\u043b\u044b\u0448",
"Left to right": "\u0421\u0443\u043b\u0434\u0430\u043d \u0443\u04a3\u0433\u0430 \u044f\u0437\u044b\u043b\u044b\u0448",
"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u043b\u0430\u0440",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u043b\u0430\u0440",
"Document properties": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
"Title": "\u0418\u0441\u0435\u043c",
"Keywords": "\u0410\u0447\u043a\u044b\u0447 \u0441\u04af\u0437\u043b\u04d9\u0440",
"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
"Description": "\u0422\u0430\u0441\u0432\u0438\u0440\u043b\u0430\u043c\u0430",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Fullscreen": "\u0422\u0443\u043b\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430",
"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c \u0441\u044b\u0437\u044b\u043a",
"Horizontal space": "\u042f\u0442\u043c\u0430 \u0430\u0440\u0430",
"Insert\/edit image": "\u0420\u04d9\u0441\u0435\u043c \u04e9\u0441\u0442\u04d9\u04af\/\u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
"General": "\u0413\u043e\u043c\u0443\u043c\u0438",
"Advanced": "\u041a\u0438\u04a3\u04d9\u0439\u0442\u0435\u043b\u0433\u04d9\u043d \u043a\u04e9\u0439\u043b\u04d9\u04af\u043b\u04d9\u0440",
"Source": "\u0427\u044b\u0433\u0430\u043d\u0430\u043a",
"Border": "\u0427\u0438\u043a",
"Constrain proportions": "\u0427\u0438\u043a\u043b\u04d9\u043c\u04d9\u043b\u04d9\u0440 \u043f\u0440\u043e\u043f\u0440\u043e\u0440\u0446\u0438\u044f\u043b\u04d9\u0440\u0435",
"Vertical space": "\u0410\u0441\u043c\u0430 \u0430\u0440\u0430",
"Image description": "\u0422\u0430\u0441\u0432\u0438\u0440\u043b\u0430\u043c\u0430",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Dimensions": "\u04ae\u043b\u0447\u04d9\u043d\u0435\u0448\u043b\u04d9\u0440",
"Insert image": "\u0420\u04d9\u0441\u0435\u043c \u04e9\u0441\u0442\u04d9\u04af",
"Zoom in": "\u0417\u0443\u0440\u0430\u0439\u0442\u044b\u0440\u0433\u0430",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Back": "\u0411\u0430\u0448 \u0442\u0430\u0440\u0442\u0443",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Flip horizontally": "Flip horizontally",
"Resize": "\u0417\u0443\u0440\u043b\u044b\u043a\u043d\u044b \u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
"Sharpen": "\u04ae\u0442\u043a\u0435\u043d\u043b\u0435\u043a",
"Zoom out": "\u041a\u0435\u0447\u0435\u0440\u04d9\u0439\u0442\u0435\u0440\u0433\u04d9",
"Image options": "Image options",
"Apply": "\u0422\u04d9\u043c\u0430\u043c",
"Brightness": "\u042f\u043a\u0442\u044b\u043b\u044b\u043a",
"Rotate clockwise": "Rotate clockwise",
"Rotate counterclockwise": "Rotate counterclockwise",
"Edit image": "\u0420\u04d9\u0441\u0435\u043c \u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
"Color levels": "\u0422\u04e9\u0441\u043b\u04d9\u0440 \u043a\u04af\u043b\u04d9\u043c\u0435",
"Crop": "\u041a\u0438\u0441\u04af",
"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
"Flip vertically": "Flip vertically",
"Invert": "\u04d8\u0432\u0435\u0440\u0435\u043b\u0434\u0435\u0440\u04af",
"Insert date\/time": "\u0414\u0430\u0442\u0430\/\u0432\u0430\u043a\u044b\u0442 \u04e9\u0441\u0442\u04d9\u04af",
"Remove link": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
"Url": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430",
"Text to display": "\u041a\u04af\u0440\u0441\u04d9\u0442\u0435\u043b\u0433\u04d9\u043d \u0442\u0435\u043a\u0441\u0442",
"Anchors": "\u042f\u043a\u043e\u0440\u044c\u043b\u04d9\u0440",
"Insert link": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430 \u04e9\u0441\u0442\u04d9\u04af",
"New window": "\u042f\u04a3\u0430 \u0442\u04d9\u0440\u04d9\u0437\u04d9",
"None": "\u04ba\u0438\u0447\u0431\u0435\u0440",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u04e8\u0441\u0442\u04d9\u043b\u0433\u04d9\u043d URL \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u043f\u043e\u0447\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u044b \u0431\u0443\u043b\u0441\u0430 \u043a\u0438\u0440\u04d9\u043a. \u0417\u0430\u0440\u0443\u0440\u0438 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u04e9\u0441\u0442\u04d9\u043b\u0441\u0435\u043d\u043c\u0435?",
"Target": "\u041c\u0430\u043a\u0441\u0430\u0442",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u04e8\u0441\u0442\u04d9\u043b\u0433\u04d9\u043d URL \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u043f\u043e\u0447\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u044b \u0431\u0443\u043b\u0441\u0430 \u043a\u0438\u0440\u04d9\u043a. \u0417\u0430\u0440\u0443\u0440\u0438 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u04e9\u0441\u0442\u04d9\u043b\u0441\u0435\u043d\u043c\u0435?",
"Insert\/edit link": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430 \u04e9\u0441\u0442\u04d9\u04af\/\u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
"Insert\/edit video": "\u0412\u0438\u0434\u0435\u043e \u04e9\u0441\u0442\u04d9\u04af\/\u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u0447\u044b\u0433\u0430\u043d\u0430\u043a",
"Paste your embed code below:": "\u042d\u0447\u0435\u043d\u04d9 \u0441\u0430\u043b\u044b\u043d\u0433\u0430\u043d \u043a\u043e\u0434\u043d\u044b \u0442\u04af\u0431\u04d9\u043d\u0440\u04d9\u043a \u04e9\u0441\u0442\u04d9\u0433\u0435\u0437:",
"Insert video": "\u0412\u0438\u0434\u0435\u043e \u04e9\u0441\u0442\u04d9\u04af",
"Embed": "\u042d\u0447\u0435\u043d\u04d9 \u0441\u0430\u043b\u0443",
"Nonbreaking space": "\u04e8\u0437\u0435\u043b\u043c\u04d9\u0441 \u0431\u0443\u0448\u043b\u044b\u043a",
"Page break": "\u0411\u0438\u0442 \u0431\u04af\u043b\u0433\u0435\u0447\u0435",
"Paste as text": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u0441\u044b\u0437 \u0442\u0435\u043a\u0441\u0442 \u04e9\u0441\u0442\u04d9\u04af",
"Preview": "\u041a\u0430\u0440\u0430\u043f \u0430\u043b\u0443",
"Print": "\u0411\u0430\u0441\u0442\u044b\u0440\u0443",
"Save": "\u0421\u0430\u043a\u043b\u0430\u0443",
"Could not find the specified string.": "\u042d\u0437\u043b\u04d9\u043d\u0433\u04d9\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.",
"Replace": "\u0410\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
"Next": "\u041a\u0438\u043b\u04d9\u0441\u0435",
"Whole words": "\u0421\u04af\u0437\u043b\u04d9\u0440\u043d\u0435 \u0442\u0443\u043b\u044b\u0441\u044b\u043d\u0447\u0430 \u0433\u044b\u043d\u0430 \u044d\u0437\u043b\u04d9\u04af",
"Find and replace": "\u042d\u0437\u043b\u04d9\u043f \u0442\u0430\u0431\u0443 \u04bb\u04d9\u043c \u0430\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
"Replace with": "\u041d\u04d9\u0440\u0441\u04d9\u0433\u04d9 \u0430\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
"Find": "\u042d\u0437\u043b\u04d9\u04af",
"Replace all": "\u0411\u0430\u0440\u044b\u0441\u044b\u043d \u0434\u0430 \u0430\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
"Match case": "\u0411\u0430\u0448 \u04bb\u04d9\u043c \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u043b\u04d9\u0440\u0435\u043d \u0438\u0441\u04d9\u043f\u043a\u04d9 \u0430\u043b\u0443",
"Prev": "\u0410\u043b\u0434\u0430\u0433\u044b",
"Spellcheck": "\u0414\u04e9\u0440\u0435\u0441 \u044f\u0437\u044b\u043b\u044b\u0448",
"Finish": "\u0422\u04d9\u043c\u0430\u043c",
"Ignore all": "\u0411\u0430\u0440\u044b\u0441\u044b\u043d \u0434\u0430 \u043a\u0430\u043b\u0434\u044b\u0440\u0443",
"Ignore": "\u0418\u0433\u044a\u0442\u0438\u0431\u0430\u0440\u0441\u044b\u0437 \u043a\u0430\u043b\u0434\u044b\u0440\u0443",
"Add to Dictionary": "\u0421\u04af\u0437\u043b\u0435\u043a\u043a\u04d9 \u04e9\u0441\u0442\u04d9\u04af",
"Insert row before": "\u04e8\u0441\u0442\u04d9\u043d \u044e\u043b\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
"Rows": "\u042e\u043b\u043b\u0430\u0440",
"Height": "\u0411\u0438\u0435\u043a\u043b\u0435\u043a",
"Paste row after": "\u042e\u043b\u043d\u044b \u0430\u0441\u0442\u0430\u043d \u04e9\u0441\u0442\u04d9\u04af",
"Alignment": "\u0422\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"Border color": "\u0427\u0438\u043a \u0442\u04e9\u0441\u0435",
"Column group": "\u0411\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440 \u0433\u0440\u0443\u043f\u043f\u0430\u0441\u044b",
"Row": "\u042e\u043b",
"Insert column before": "\u0421\u0443\u043b\u0434\u0430\u043d \u0431\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
"Split cell": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043d\u0435 \u0431\u04af\u043b\u04af",
"Cell padding": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043d\u0435 \u0442\u0443\u0442\u044b\u0440\u0443",
"Cell spacing": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043b\u04d9\u0440 \u0430\u0440\u0430\u0441\u044b",
"Row type": "\u042e\u043b \u0442\u04e9\u0440\u0435",
"Insert table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u04e9\u0441\u0442\u04d9\u04af",
"Body": "\u0411\u04d9\u0434\u04d9\u043d",
"Caption": "\u0418\u0441\u0435\u043c",
"Footer": "\u0410\u0441\u043a\u044b \u04e9\u043b\u0435\u0448",
"Delete row": "\u042e\u043b\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
"Paste row before": "\u042e\u043b\u043d\u044b \u04e9\u0441\u0442\u04d9\u043d \u04e9\u0441\u0442\u04d9\u04af",
"Scope": "\u04e8\u043b\u043a\u04d9",
"Delete table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
"H Align": "\u042f\u0442\u043c\u0430 \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"Top": "\u04e8\u0441\u043a\u04d9",
"Header cell": "\u0411\u0430\u0448 \u043a\u04af\u0437\u04d9\u043d\u04d9\u043a",
"Column": "\u0411\u0430\u0433\u0430\u043d\u0430",
"Row group": "\u042e\u043b\u043b\u0430\u0440 \u0433\u0440\u0443\u043f\u043f\u0430\u0441\u044b",
"Cell": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a",
"Middle": "\u0423\u0440\u0442\u0430\u0433\u0430",
"Cell type": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a \u0442\u04e9\u0440\u0435",
"Copy row": "\u042e\u043b\u043d\u044b \u043a\u04af\u0447\u0435\u0440\u043c\u04d9\u043b\u04d9\u04af",
"Row properties": "\u042e\u043b \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
"Table properties": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
"Bottom": "\u0410\u0441\u043a\u0430",
"V Align": "\u0410\u0441\u043c\u0430 \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
"Header": "\u04e8\u0441\u043a\u0435 \u04e9\u043b\u0435\u0448",
"Right": "\u0423\u04a3",
"Insert column after": "\u0423\u04a3\u043d\u0430\u043d \u0431\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
"Cols": "\u0411\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440",
"Insert row after": "\u0410\u0441\u0442\u0430\u043d \u044e\u043b\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
"Width": "\u041a\u0438\u04a3\u043b\u0435\u043a",
"Cell properties": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
"Left": "\u0421\u0443\u043b",
"Cut row": "\u042e\u043b\u043d\u044b \u043a\u0438\u0441\u0435\u043f \u0430\u043b\u0443",
"Delete column": "\u0411\u0430\u0433\u0430\u043d\u0430\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
"Center": "\u04ae\u0437\u04d9\u043a",
"Merge cells": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043b\u04d9\u0440\u043d\u0435 \u0431\u0435\u0440\u043b\u04d9\u0448\u0442\u0435\u0440\u04af",
"Insert template": "\u0428\u0430\u0431\u043b\u043e\u043d \u04e9\u0441\u0442\u04d9\u04af",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u043d\u0430\u0440",
"Background color": "\u0424\u043e\u043d \u0442\u04e9\u0441\u0435",
"Custom...": "\u04ae\u0437\u0435\u043d\u0447\u04d9\u043b\u0435\u043a\u043b\u0435...",
"Custom color": "\u04ae\u0437\u0435\u043d\u0447\u04d9\u043b\u0435\u043a\u043b\u0435 \u0442\u04e9\u0441",
"No color": "\u0422\u04e9\u0441\u0441\u0435\u0437",
"Text color": "\u0422\u0435\u043a\u0441\u0442 \u0442\u04e9\u0441\u0435",
"Show blocks": "\u0411\u043b\u043e\u043a\u043b\u0430\u0440\u043d\u044b \u043a\u04af\u0440\u0441\u04d9\u0442\u04af",
"Show invisible characters": "\u042f\u0448\u0435\u0440\u0435\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u043b\u0430\u0440\u043d\u044b \u043a\u04af\u0440\u0441\u04d9\u0442\u04af",
"Words: {0}": "\u0421\u04af\u0437\u043b\u04d9\u0440 \u0441\u0430\u043d\u044b: {0}",
"Insert": "\u04e8\u0441\u0442\u04d9\u04af",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0422\u04e9\u043f",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u043b\u044b \u0442\u0435\u043a\u0441\u0442 \u04e9\u043b\u043a\u04d9\u0441\u0435. \u041c\u0435\u043d\u044e\u0433\u0430 \u043a\u0435\u0440\u0435\u0440 \u04e9\u0447\u0435\u043d ALT-F9 \u0431\u0430\u0441\u044b\u0433\u044b\u0437. \u041a\u043e\u0440\u0430\u043b\u043b\u0430\u0440 \u043f\u0430\u043d\u0435\u043b\u0435\u043d\u04d9 \u043a\u04af\u0447\u0435\u0440 \u04e9\u0447\u0435\u043d ALT-F10 \u0431\u0430\u0441\u044b\u0433\u044b\u0437. \u042f\u0440\u0434\u04d9\u043c \u04e9\u0447\u0435\u043d ALT-0 \u0431\u0430\u0441\u044b\u0433\u044b\u0437.",
"Tools": "\u041a\u043e\u0440\u0430\u043b\u043b\u0430\u0440",
"View": "\u041a\u04af\u0440\u0435\u043d\u0435\u0448",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443"
});js/tinymce/langs/he_IL.js000064400000076276151727150320011277 0ustar00tinymce.addI18n('he_IL',{
"Redo": "\u05d1\u05e6\u05e2 \u05e9\u05d5\u05d1",
"Undo": "\u05d1\u05d8\u05dc",
"Cut": "\u05d2\u05d6\u05d5\u05e8",
"Copy": "\u05d4\u05e2\u05ea\u05e7",
"Paste": "\u05d4\u05d3\u05d1\u05e7",
"Select all": "\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc",
"New document": "\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9",
"Ok": "\u05d0\u05d9\u05e9\u05d5\u05e8",
"Cancel": "\u05d1\u05d9\u05d8\u05d5\u05dc",
"Visual aids": "\u05e2\u05d6\u05e8\u05d9\u05dd \u05d7\u05d6\u05d5\u05ea\u05d9\u05d9\u05dd",
"Bold": "\u05de\u05d5\u05d3\u05d2\u05e9",
"Italic": "\u05e0\u05d8\u05d5\u05d9",
"Underline": "\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d5\u05df",
"Strikethrough": "\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4",
"Superscript": "\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9",
"Subscript": "\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9",
"Clear formatting": "\u05e0\u05e7\u05d4 \u05e2\u05d9\u05e6\u05d5\u05d1",
"Align left": "\u05d9\u05e9\u05e8 \u05dc\u05e9\u05de\u05d0\u05dc",
"Align center": "\u05de\u05e8\u05db\u05d6",
"Align right": "\u05d9\u05e9\u05e8 \u05dc\u05d9\u05de\u05d9\u05df",
"Justify": "\u05d9\u05d9\u05e9\u05e8",
"Bullet list": "\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd",
"Numbered list": "\u05e8\u05e9\u05d9\u05de\u05d4 \u05de\u05de\u05d5\u05e1\u05e4\u05e8\u05ea",
"Decrease indent": "\u05d4\u05e7\u05d8\u05df \u05d4\u05d6\u05d7\u05d4",
"Increase indent": "\u05d4\u05d2\u05d3\u05dc \u05d4\u05d6\u05d7\u05d4",
"Close": "\u05e1\u05d2\u05d5\u05e8",
"Formats": "\u05e2\u05d9\u05e6\u05d5\u05d1\u05d9\u05dd",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da \u05d0\u05d9\u05e0\u05d5 \u05de\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d4 \u05dc\u05dc\u05d5\u05d7. \u05d0\u05e0\u05d0 \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9 \u05d4\u05de\u05e7\u05dc\u05d3\u05ea Ctrl+X\/C\/V \u05d1\u05de\u05e7\u05d5\u05dd.",
"Headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea",
"Header 1": "\u05db\u05d5\u05ea\u05e8\u05ea 1",
"Header 2": "\u05db\u05d5\u05ea\u05e8\u05ea 2",
"Header 3": "\u05db\u05d5\u05ea\u05e8\u05ea 3",
"Header 4": "\u05db\u05d5\u05ea\u05e8\u05ea 4",
"Header 5": "\u05db\u05d5\u05ea\u05e8\u05ea 5",
"Header 6": "\u05db\u05d5\u05ea\u05e8\u05ea 6",
"Headings": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea",
"Heading 1": "\u05db\u05d5\u05ea\u05e8\u05ea 1",
"Heading 2": "\u05db\u05d5\u05ea\u05e8\u05ea 2",
"Heading 3": "\u05db\u05d5\u05ea\u05e8\u05ea 3",
"Heading 4": "\u05db\u05d5\u05ea\u05e8\u05ea 4",
"Heading 5": "\u05db\u05d5\u05ea\u05e8\u05ea 5",
"Heading 6": "\u05db\u05d5\u05ea\u05e8\u05ea 6",
"Preformatted": "\u05de\u05e2\u05d5\u05e6\u05d1 \u05de\u05e8\u05d0\u05e9",
"Div": "Div",
"Pre": "Pre",
"Code": "\u05e7\u05d5\u05d3",
"Paragraph": "\u05e4\u05e1\u05e7\u05d4",
"Blockquote": "Blockquote",
"Inline": "\u05d1\u05ea\u05d5\u05da \u05e9\u05d5\u05e8\u05d4",
"Blocks": "\u05d1\u05dc\u05d5\u05e7\u05d9\u05dd",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d1\u05de\u05e6\u05d1 \u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc. \u05ea\u05db\u05e0\u05d9\u05dd \u05d9\u05d5\u05d3\u05d1\u05e7\u05d5 \u05de\u05e2\u05ea\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc \u05e2\u05d3 \u05e9\u05ea\u05db\u05d1\u05d4 \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5.",
"Fonts": "\u05d2\u05d5\u05e4\u05e0\u05d9\u05dd",
"Font Sizes": "\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05e0\u05d9\u05dd",
"Class": "\u05de\u05d7\u05dc\u05e7\u05d4",
"Browse for an image": "\u05d7\u05e4\u05e9 \u05ea\u05de\u05d5\u05e0\u05d4",
"OR": "OR",
"Drop an image here": "\u05e9\u05d7\u05e8\u05e8 \u05ea\u05de\u05d5\u05e0\u05d4 \u05db\u05d0\u05df",
"Upload": "\u05d4\u05e2\u05dc\u05d4",
"Block": "\u05d1\u05dc\u05d5\u05e7",
"Align": "\u05d9\u05e9\u05e8",
"Default": "\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",
"Circle": "\u05e2\u05d9\u05d2\u05d5\u05dc",
"Disc": "\u05d7\u05d9\u05e9\u05d5\u05e7",
"Square": "\u05e8\u05d9\u05d1\u05d5\u05e2",
"Lower Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
"Lower Greek": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d9\u05d5\u05d5\u05e0\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
"Lower Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
"Upper Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
"Upper Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
"Anchor...": "\u05e2\u05d5\u05d2\u05df...",
"Name": "\u05e9\u05dd",
"Id": "\u05de\u05d6\u05d4\u05d4",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u05d4\u05de\u05d6\u05d4\u05d4 \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d1\u05d0\u05d5\u05ea \u05d5\u05dc\u05d0\u05d7\u05e8\u05d9\u05d4 \u05e8\u05e7 \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea, \u05de\u05e1\u05e4\u05e8\u05d9\u05dd, \u05de\u05e7\u05e4\u05d9\u05dd, \u05e0\u05e7\u05d5\u05d3\u05d5\u05ea, \u05e0\u05e7\u05d5\u05d3\u05ea\u05d9\u05d9\u05dd \u05d0\u05d5 \u05e7\u05d5\u05d5\u05d9\u05dd \u05ea\u05d7\u05ea\u05d9\u05d9\u05dd.",
"You have unsaved changes are you sure you want to navigate away?": "\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e9\u05de\u05e8\u05d5. \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e6\u05d0\u05ea \u05de\u05d4\u05d3\u05e3?",
"Restore last draft": "\u05e9\u05d7\u05d6\u05e8 \u05d8\u05d9\u05d5\u05d8\u05d4 \u05d0\u05d7\u05e8\u05d5\u05e0\u05d4",
"Special character...": "\u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd...",
"Source code": "\u05e7\u05d5\u05d3 \u05de\u05e7\u05d5\u05e8",
"Insert\/Edit code sample": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05d3\u05d5\u05d2\u05de\u05ea \u05e7\u05d5\u05d3",
"Language": "\u05e9\u05e4\u05d4",
"Code sample...": "\u05d3\u05d5\u05d2\u05de\u05ea \u05e7\u05d5\u05d3...",
"Color Picker": "\u05d1\u05d5\u05e8\u05e8 \u05e6\u05d1\u05e2\u05d9\u05dd",
"R": "\u05d0'",
"G": "\u05d9'",
"B": "\u05db'",
"Left to right": "\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",
"Right to left": "\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",
"Emoticons...": "\u05e1\u05de\u05dc\u05d9 \u05d4\u05d1\u05e2\u05d4...",
"Metadata and Document Properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05d8\u05d4-\u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05d5\u05de\u05e1\u05de\u05da",
"Title": "\u05db\u05d5\u05ea\u05e8\u05ea",
"Keywords": "\u05de\u05d9\u05dc\u05d5\u05ea \u05de\u05e4\u05ea\u05d7",
"Description": "\u05ea\u05d9\u05d0\u05d5\u05e8",
"Robots": "\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd",
"Author": "\u05de\u05d7\u05d1\u05e8",
"Encoding": "\u05e7\u05d9\u05d3\u05d5\u05d3",
"Fullscreen": "\u05de\u05e1\u05da \u05de\u05dc\u05d0",
"Action": "\u05e4\u05e2\u05d5\u05dc\u05d4",
"Shortcut": "\u05e7\u05d9\u05e6\u05d5\u05e8",
"Help": "\u05e2\u05d6\u05e8\u05d4",
"Address": "\u05db\u05ea\u05d5\u05d1\u05ea",
"Focus to menubar": "\u05d4\u05e2\u05d1\u05e8 \u05de\u05d9\u05e7\u05d5\u05d3 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05ea\u05e4\u05e8\u05d8\u05d9\u05dd",
"Focus to toolbar": "\u05d4\u05e2\u05d1\u05e8 \u05de\u05d9\u05e7\u05d5\u05d3 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05db\u05dc\u05d9\u05dd",
"Focus to element path": "\u05e2\u05d1\u05e8 \u05de\u05d9\u05e7\u05d5\u05d3 \u05dc\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e4\u05e8\u05d9\u05d8",
"Focus to contextual toolbar": "\u05d4\u05e2\u05d1\u05e8 \u05de\u05d9\u05e7\u05d5\u05d3 \u05dc\u05e1\u05e8\u05d2\u05dc \u05ea\u05d5\u05db\u05df",
"Insert link (if link plugin activated)": "\u05d4\u05db\u05e0\u05e1 \u05e7\u05d9\u05e9\u05d5\u05e8 (\u05d0\u05dd \u05ea\u05d5\u05e1\u05e3 \"\u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd\" \u05e4\u05e2\u05d9\u05dc)",
"Save (if save plugin activated)": "\u05e9\u05de\u05d5\u05e8 (\u05d0\u05dd \u05ea\u05d5\u05e1\u05e3 \"\u05e9\u05de\u05d9\u05e8\u05d4\" \u05e4\u05e2\u05d9\u05dc)",
"Find (if searchreplace plugin activated)": "\u05d7\u05e4\u05e9 (\u05d0\u05dd \u05ea\u05d5\u05e1\u05e3 \"\u05d7\u05e4\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e3\" \u05e4\u05e2\u05d9\u05dc)",
"Plugins installed ({0}):": "\u05ea\u05d5\u05e1\u05e4\u05d9\u05dd \u05de\u05d5\u05ea\u05e7\u05e0\u05d9\u05dd ({0}):",
"Premium plugins:": "\u05ea\u05d5\u05e1\u05e4\u05d9\u05dd \u05d1\u05ea\u05e9\u05dc\u05d5\u05dd:",
"Learn more...": "\u05dc\u05de\u05d3 \u05e2\u05d5\u05d3...",
"You are using {0}": "\u05d0\u05ea\\\u05d4 \u05de\u05e9\u05ea\u05de\u05e9\\\u05ea {0}",
"Plugins": "\u05ea\u05d5\u05e1\u05e4\u05d9\u05dd",
"Handy Shortcuts": "\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9\u05dd \u05e9\u05d9\u05de\u05d5\u05e9\u05d9\u05d9\u05dd",
"Horizontal line": "\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",
"Insert\/edit image": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d4",
"Image description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",
"Source": "\u05de\u05e7\u05d5\u05e8",
"Dimensions": "\u05de\u05d9\u05de\u05d3\u05d9\u05dd",
"Constrain proportions": "\u05d4\u05d2\u05d1\u05dc\u05ea \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",
"General": "\u05db\u05dc\u05dc\u05d9",
"Advanced": "\u05de\u05ea\u05e7\u05d3\u05dd",
"Style": "\u05e1\u05d2\u05e0\u05d5\u05df",
"Vertical space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9",
"Horizontal space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",
"Border": "\u05de\u05e1\u05d2\u05e8\u05ea",
"Insert image": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05de\u05d5\u05e0\u05d4",
"Image...": "\u05ea\u05de\u05d5\u05e0\u05d4...",
"Image list": "\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea",
"Rotate counterclockwise": "\u05e1\u05d5\u05d1\u05d1 \u05d1\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e4\u05d5\u05da \u05dc\u05e9\u05e2\u05d5\u05df",
"Rotate clockwise": "\u05e1\u05d5\u05d1\u05d1 \u05d1\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e2\u05d5\u05df",
"Flip vertically": "\u05d4\u05e4\u05d5\u05da \u05d0\u05e0\u05db\u05d9\u05ea",
"Flip horizontally": "\u05d4\u05e4\u05d5\u05da \u05d0\u05d5\u05e4\u05e7\u05d9\u05ea",
"Edit image": "\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d4",
"Image options": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",
"Zoom in": "\u05d4\u05d2\u05d3\u05dc \u05ea\u05e6\u05d5\u05d2\u05d4",
"Zoom out": "\u05d4\u05e7\u05d8\u05df \u05ea\u05e6\u05d5\u05d2\u05d4",
"Crop": "\u05e7\u05e6\u05e5",
"Resize": "\u05e9\u05e0\u05d4 \u05d2\u05d5\u05d3\u05dc",
"Orientation": "\u05db\u05d9\u05d5\u05d5\u05df \u05dc\u05d0\u05d5\u05e8\u05da \/ \u05dc\u05e8\u05d5\u05d7\u05d1",
"Brightness": "\u05d1\u05d4\u05d9\u05e8\u05d5\u05ea",
"Sharpen": "\u05d7\u05d3\u05d3",
"Contrast": "\u05e0\u05d9\u05d2\u05d5\u05d3\u05d9\u05d5\u05ea",
"Color levels": "\u05e8\u05de\u05d5\u05ea \u05e6\u05d1\u05e2\u05d9\u05dd",
"Gamma": "\u05d2\u05d0\u05de\u05d4",
"Invert": "\u05d4\u05d9\u05e4\u05d5\u05da \u05e6\u05d1\u05e2\u05d9\u05dd",
"Apply": "\u05d9\u05d9\u05e9\u05dd",
"Back": "\u05d7\u05d6\u05d5\u05e8",
"Insert date\/time": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d0\u05e8\u05d9\u05da\/\u05e9\u05e2\u05d4",
"Date\/time": "\u05ea\u05d0\u05e8\u05d9\u05da\/\u05e9\u05e2\u05d4",
"Insert\/Edit Link": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e7\u05d9\u05e9\u05d5\u05e8",
"Insert\/edit link": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e7\u05d9\u05e9\u05d5\u05e8",
"Text to display": "\u05d8\u05e7\u05e1\u05d8 \u05dc\u05d4\u05e6\u05d2\u05d4",
"Url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",
"Open link in...": "\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1...",
"Current window": "\u05d7\u05dc\u05d5\u05df \u05e0\u05d5\u05db\u05d7\u05d9",
"None": "\u05dc\u05dc\u05d0",
"New window": "\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9",
"Remove link": "\u05de\u05d7\u05e7 \u05e7\u05d9\u05e9\u05d5\u05e8",
"Anchors": "\u05e2\u05d5\u05d2\u05e0\u05d9\u05dd",
"Link...": "\u05e7\u05d9\u05e9\u05d5\u05e8...",
"Paste or type a link": "\u05d4\u05d3\u05d1\u05e7 \u05d0\u05d5 \u05d4\u05e7\u05dc\u05d3 \u05e7\u05d9\u05e9\u05d5\u05e8",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05db\u05ea\u05d5\u05d1\u05ea \u05e9\u05d4\u05db\u05e0\u05e1\u05ea \u05d4\u05d9\u05d0 \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05d9\u05de\u05d9\u05d9\u05dc. \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea :mailto?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05db\u05ea\u05d5\u05d1\u05ea \u05e9\u05d4\u05db\u05e0\u05e1\u05ea \u05d4\u05d9\u05d0 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:\/\/?",
"Link list": "\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd",
"Insert video": "\u05d4\u05db\u05e0\u05e1 \u05e1\u05e8\u05d8\u05d5\u05df",
"Insert\/edit video": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e1\u05e8\u05d8\u05d5\u05df",
"Insert\/edit media": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05de\u05d3\u05d9\u05d4",
"Alternative source": "\u05de\u05e7\u05d5\u05e8 \u05de\u05e9\u05e0\u05d9",
"Alternative source URL": "\u05db\u05ea\u05d5\u05d1\u05ea URL \u05dc\u05de\u05e7\u05d5\u05e8 \u05d7\u05dc\u05d5\u05e4\u05d9",
"Media poster (Image URL)": "\u05e4\u05d5\u05e1\u05d8\u05e8 \u05de\u05d3\u05d9\u05d4 (\u05db\u05ea\u05d5\u05d1\u05ea URL \u05dc\u05ea\u05de\u05d5\u05e0\u05d4)",
"Paste your embed code below:": "\u05d4\u05d3\u05d1\u05e7 \u05e7\u05d5\u05d3 \u05d4\u05d8\u05de\u05e2\u05d4 \u05de\u05ea\u05d7\u05ea:",
"Embed": "\u05d4\u05d8\u05de\u05e2",
"Media...": "\u05de\u05d3\u05d9\u05d4...",
"Nonbreaking space": "\u05e8\u05d5\u05d5\u05d7 (\u05dc\u05dc\u05d0 \u05e9\u05d1\u05d9\u05e8\u05ea \u05e9\u05d5\u05e8\u05d4)",
"Page break": "\u05d3\u05e3 \u05d7\u05d3\u05e9",
"Paste as text": "\u05d4\u05d3\u05d1\u05e7 \u05db\u05d8\u05e7\u05e1\u05d8",
"Preview": "\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",
"Print...": "\u05d4\u05d3\u05e4\u05e1...",
"Save": "\u05e9\u05de\u05d9\u05e8\u05d4",
"Find": "\u05d7\u05e4\u05e9",
"Replace with": "\u05d4\u05d7\u05dc\u05e3 \u05d1",
"Replace": "\u05d4\u05d7\u05dc\u05e3",
"Replace all": "\u05d4\u05d7\u05dc\u05e3 \u05d4\u05db\u05dc",
"Previous": "\u05d4\u05e7\u05d5\u05d3\u05dd",
"Next": "\u05d4\u05d1\u05d0",
"Find and replace...": "\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e4\u05d4...",
"Could not find the specified string.": "\u05de\u05d7\u05e8\u05d5\u05d6\u05ea \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4",
"Match case": "\u05d4\u05d1\u05d7\u05df \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea \u05dc\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
"Find whole words only": "\u05d7\u05e4\u05e9 \u05de\u05d9\u05dc\u05d9\u05dd \u05e9\u05dc\u05de\u05d5\u05ea \u05d1\u05dc\u05d1\u05d3",
"Spell check": "\u05d1\u05d3\u05d9\u05e7\u05ea \u05d0\u05d9\u05d5\u05ea",
"Ignore": "\u05d4\u05ea\u05e2\u05dc\u05dd",
"Ignore all": "\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05db\u05dc",
"Finish": "\u05e1\u05d9\u05d9\u05dd",
"Add to Dictionary": "\u05d4\u05d5\u05e1\u05e3 \u05dc\u05de\u05d9\u05dc\u05d5\u05df",
"Insert table": "\u05d4\u05db\u05e0\u05e1 \u05d8\u05d1\u05dc\u05d4",
"Table properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d8\u05d1\u05dc\u05d4",
"Delete table": "\u05de\u05d7\u05e7 \u05d8\u05d1\u05dc\u05d4",
"Cell": "\u05ea\u05d0",
"Row": "\u05e9\u05d5\u05e8\u05d4",
"Column": "\u05e2\u05de\u05d5\u05d3\u05d4",
"Cell properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05ea\u05d0",
"Merge cells": "\u05de\u05d6\u05d2 \u05ea\u05d0\u05d9\u05dd",
"Split cell": "\u05e4\u05e6\u05dc \u05ea\u05d0",
"Insert row before": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
"Insert row after": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
"Delete row": "\u05de\u05d7\u05e7 \u05e9\u05d5\u05e8\u05d4",
"Row properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e9\u05d5\u05e8\u05d4",
"Cut row": "\u05d2\u05d6\u05d5\u05e8 \u05e9\u05d5\u05e8\u05d4",
"Copy row": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4",
"Paste row before": "\u05d4\u05d3\u05d1\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
"Paste row after": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
"Insert column before": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05dc\u05e4\u05e0\u05d9",
"Insert column after": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05d0\u05d7\u05e8\u05d9",
"Delete column": "\u05de\u05d7\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4",
"Cols": "\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
"Rows": "\u05e9\u05d5\u05e8\u05d5\u05ea",
"Width": "\u05e8\u05d5\u05d7\u05d1",
"Height": "\u05d2\u05d5\u05d1\u05d4",
"Cell spacing": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9\u05dd \u05dc\u05ea\u05d0",
"Cell padding": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e4\u05e0\u05d9\u05de\u05d9\u05d9\u05dd \u05dc\u05ea\u05d0",
"Show caption": "\u05d4\u05e6\u05d2 \u05db\u05ea\u05d5\u05d1\u05d9\u05ea",
"Left": "\u05e9\u05de\u05d0\u05dc",
"Center": "\u05de\u05e8\u05db\u05d6",
"Right": "\u05d9\u05de\u05d9\u05df",
"Cell type": "\u05e1\u05d5\u05d2 \u05ea\u05d0",
"Scope": "\u05d4\u05d9\u05e7\u05e3",
"Alignment": "\u05d9\u05d9\u05e9\u05d5\u05e8",
"H Align": "\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d0\u05d5\u05e4\u05e7\u05d9",
"V Align": "\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9",
"Top": "\u05e2\u05dc\u05d9\u05d5\u05df",
"Middle": "\u05d0\u05de\u05e6\u05e2",
"Bottom": "\u05ea\u05d7\u05ea\u05d9\u05ea",
"Header cell": "\u05db\u05d5\u05ea\u05e8\u05ea \u05dc\u05ea\u05d0",
"Row group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e9\u05d5\u05e8\u05d5\u05ea",
"Column group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
"Row type": "\u05e1\u05d5\u05d2 \u05e9\u05d5\u05e8\u05d4",
"Header": "\u05db\u05d5\u05ea\u05e8\u05ea",
"Body": "\u05d2\u05d5\u05e3 \u05d4\u05d8\u05d1\u05dc\u05d0",
"Footer": "\u05db\u05d5\u05ea\u05e8\u05ea \u05ea\u05d7\u05ea\u05d5\u05e0\u05d4",
"Border color": "\u05e6\u05d1\u05e2 \u05d2\u05d1\u05d5\u05dc",
"Insert template...": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d1\u05e0\u05d9\u05ea...",
"Templates": "\u05ea\u05d1\u05e0\u05d9\u05d5\u05ea",
"Template": "\u05ea\u05d1\u05e0\u05d9\u05ea",
"Text color": "\u05e6\u05d1\u05e2 \u05d4\u05db\u05ea\u05d1",
"Background color": "\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",
"Custom...": "\u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea...",
"Custom color": "\u05e6\u05d1\u05e2 \u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea",
"No color": "\u05dc\u05dc\u05d0 \u05e6\u05d1\u05e2",
"Remove color": "\u05d4\u05e1\u05e8 \u05e6\u05d1\u05e2",
"Table of Contents": "\u05ea\u05d5\u05db\u05df \u05e2\u05e0\u05d9\u05d9\u05e0\u05d9\u05dd",
"Show blocks": "\u05d4\u05e6\u05d2 \u05ea\u05d9\u05d1\u05d5\u05ea",
"Show invisible characters": "\u05d4\u05e6\u05d2 \u05ea\u05d5\u05d5\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e8\u05d0\u05d9\u05dd",
"Word count": "\u05e1\u05e4\u05d9\u05e8\u05ea \u05de\u05d9\u05dc\u05d9\u05dd",
"Count": "\u05e1\u05e4\u05d9\u05e8\u05d4",
"Document": "\u05de\u05e1\u05de\u05da",
"Selection": "\u05d1\u05d7\u05d9\u05e8\u05d4",
"Words": "\u05de\u05d9\u05dc\u05d9\u05dd",
"Words: {0}": "\u05de\u05d9\u05dc\u05d9\u05dd: {0}",
"{0} words": "{0} \u05de\u05d9\u05dc\u05d9\u05dd",
"File": "\u05e7\u05d5\u05d1\u05e5",
"Edit": "\u05e2\u05e8\u05d9\u05db\u05d4",
"Insert": "\u05d4\u05d5\u05e1\u05e4\u05d4",
"View": "\u05ea\u05e6\u05d5\u05d2\u05d4",
"Format": "\u05e4\u05d5\u05e8\u05de\u05d8",
"Table": "\u05d8\u05d1\u05dc\u05d4",
"Tools": "\u05db\u05dc\u05d9\u05dd",
"Powered by {0}": "\u05de\u05d5\u05e4\u05e2\u05dc \u05e2\"\u05d9 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u05ea\u05d9\u05d1\u05ea \u05e2\u05e8\u05d9\u05db\u05d4 \u05d7\u05db\u05de\u05d4. \u05dc\u05d7\u05e5 Alt-F9 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8. Alt-F10 \u05dc\u05ea\u05e6\u05d5\u05d2\u05ea \u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd, Alt-0 \u05dc\u05e2\u05d6\u05e8\u05d4",
"Image title": "\u05db\u05d5\u05ea\u05e8\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",
"Border width": "\u05e8\u05d5\u05d7\u05d1 \u05d2\u05d1\u05d5\u05dc",
"Border style": "\u05e1\u05d2\u05e0\u05d5\u05df \u05d2\u05d1\u05d5\u05dc",
"Error": "\u05e9\u05d2\u05d9\u05d0\u05d4",
"Warn": "\u05d0\u05d6\u05d4\u05e8\u05d4",
"Valid": "\u05d7\u05d5\u05e7\u05d9",
"To open the popup, press Shift+Enter": "\u05db\u05d3\u05d9 \u05dc\u05e4\u05ea\u05d5\u05d7 \u05d0\u05ea \u05d4\u05e4\u05e8\u05d9\u05d8 \u05d4\u05de\u05d5\u05e7\u05e4\u05e5, \u05d4\u05e7\u05e9 \u05e2\u05dc Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u05d0\u05d6\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05e2\u05e9\u05d9\u05e8. \u05d4\u05e7\u05e9 \u05e2\u05dc ALT-0 \u05dc\u05e2\u05d6\u05e8\u05d4.",
"System Font": "\u05d2\u05d5\u05e4\u05df \u05de\u05e2\u05e8\u05db\u05ea",
"Failed to upload image: {0}": "\u05db\u05e9\u05dc \u05d1\u05d4\u05e2\u05dc\u05d0\u05ea \u05ea\u05de\u05d5\u05e0\u05d4: {0}",
"Failed to load plugin: {0} from url {1}": "\u05db\u05e9\u05dc \u05d1\u05d8\u05e2\u05d9\u05e0\u05ea \u05d9\u05d9\u05e9\u05d5\u05dd Plugin: {0} \u05de\u05db\u05ea\u05d5\u05d1\u05ea URL\u200f {1}",
"Failed to load plugin url: {0}": "\u05db\u05e9\u05dc \u05d1\u05d8\u05e2\u05d9\u05e0\u05ea \u05db\u05ea\u05d5\u05d1\u05ea URL \u05e9\u05dc \u05d9\u05d9\u05e9\u05d5\u05dd Plugin\u200f: {0}",
"Failed to initialize plugin: {0}": "\u05db\u05e9\u05dc \u05d1\u05d0\u05ea\u05d7\u05d5\u05dc \u05d9\u05d9\u05e9\u05d5\u05dd Plugin\u200f: {0}",
"example": "\u05d3\u05d5\u05d2\u05de\u05d4",
"Search": "\u05d7\u05e4\u05e9",
"All": "\u05d4\u05db\u05dc",
"Currency": "\u05de\u05d8\u05d1\u05e2",
"Text": "\u05d8\u05e7\u05e1\u05d8",
"Quotations": "\u05e9\u05d0\u05dc\u05d5\u05ea",
"Mathematical": "\u05de\u05ea\u05de\u05d8\u05d9",
"Extended Latin": "\u05dc\u05d8\u05d9\u05e0\u05d9\u05ea \u05de\u05d5\u05e8\u05d7\u05d1\u05ea",
"Symbols": "\u05e1\u05de\u05dc\u05d9\u05dd",
"Arrows": "\u05d7\u05d9\u05e6\u05d9\u05dd",
"User Defined": "\u05de\u05d5\u05d2\u05d3\u05e8 \u05e2\u05dc-\u05d9\u05d3\u05d9 \u05d4\u05de\u05e9\u05ea\u05de\u05e9",
"dollar sign": "\u05e1\u05d9\u05de\u05df \u05d3\u05d5\u05dc\u05e8",
"currency sign": "\u05e1\u05d9\u05de\u05df \u05de\u05d8\u05d1\u05e2",
"euro-currency sign": "\u05e1\u05d9\u05de\u05df \u05de\u05d8\u05d1\u05e2 \u05d0\u05d9\u05e8\u05d5",
"colon sign": "\u05e1\u05d9\u05de\u05df \u05e7\u05d5\u05dc\u05d5\u05df",
"cruzeiro sign": "\u05e1\u05d9\u05de\u05df \u05e7\u05e8\u05d5\u05d6\u05e8\u05d5",
"french franc sign": "\u05e1\u05d9\u05de\u05df \u05e4\u05e8\u05e0\u05e7 \u05e6\u05e8\u05e4\u05ea\u05d9",
"lira sign": "\u05e1\u05d9\u05de\u05df \u05dc\u05d9\u05e8\u05d4",
"mill sign": "\u05e1\u05d9\u05de\u05df \u05de\u05d9\u05dc",
"naira sign": "\u05e1\u05d9\u05de\u05df \u05e0\u05d0\u05d9\u05e8\u05d4",
"peseta sign": "\u05e1\u05d9\u05de\u05df \u05e4\u05d6\u05d8\u05d4",
"rupee sign": "\u05e1\u05d9\u05de\u05df \u05e8\u05d5\u05e4\u05d9",
"won sign": "\u05e1\u05d9\u05de\u05df \u05d5\u05d5\u05df",
"new sheqel sign": "\u05e1\u05d9\u05de\u05df \u05e9\u05e7\u05dc \u05d7\u05d3\u05e9",
"dong sign": "\u05e1\u05d9\u05de\u05df \u05d3\u05d5\u05e0\u05d2",
"kip sign": "\u05e1\u05d9\u05de\u05df \u05e7\u05d9\u05e4",
"tugrik sign": "\u05e1\u05d9\u05de\u05df \u05d8\u05d5\u05d2\u05e8\u05d9\u05e7",
"drachma sign": "\u05e1\u05d9\u05de\u05df \u05d3\u05e8\u05db\u05de\u05d4",
"german penny symbol": "\u05e1\u05de\u05dc \u05e4\u05e0\u05d9 \u05d2\u05e8\u05de\u05e0\u05d9",
"peso sign": "\u05e1\u05d9\u05de\u05df \u05e4\u05d6\u05d5",
"guarani sign": "\u05e1\u05d9\u05de\u05df \u05d2\u05d5\u05d0\u05e8\u05e0\u05d9\u05ea",
"austral sign": "\u05e1\u05d9\u05de\u05df \u05d0\u05d5\u05e1\u05d8\u05e8\u05dc",
"hryvnia sign": "\u05e1\u05d9\u05de\u05df \u05e8\u05d9\u05d1\u05e0\u05d9\u05d4",
"cedi sign": "\u05e1\u05d9\u05de\u05df \u05e1\u05d3\u05d9",
"livre tournois sign": "\u05e1\u05d9\u05de\u05df \u05dc\u05d1\u05e8\u05d4 \u05d8\u05d5\u05e8\u05e0\u05d5",
"spesmilo sign": "\u05e1\u05d9\u05de\u05df \u05e1\u05e4\u05e1\u05de\u05d9\u05dc\u05d5",
"tenge sign": "\u05e1\u05d9\u05de\u05df \u05d8\u05e0\u05d2\u05d4",
"indian rupee sign": "\u05e1\u05d9\u05de\u05df \u05e8\u05d5\u05e4\u05d9 \u05d4\u05d5\u05d3\u05d9",
"turkish lira sign": "\u05e1\u05d9\u05de\u05df \u05dc\u05d9\u05e8\u05d4 \u05d8\u05d5\u05e8\u05e7\u05d9\u05ea",
"nordic mark sign": "\u05e1\u05d9\u05de\u05df \u05de\u05d0\u05e8\u05e7 \u05e1\u05e7\u05e0\u05d3\u05d9\u05e0\u05d1\u05d9",
"manat sign": "\u05e1\u05d9\u05de\u05df \u05de\u05d0\u05e0\u05d0\u05d8",
"ruble sign": "\u05e1\u05d9\u05de\u05df \u05e8\u05d5\u05d1\u05dc",
"yen character": "\u05ea\u05d5 \u05d9\u05df",
"yuan character": "\u05ea\u05d5 \u05d9\u05d5\u05d0\u05df",
"yuan character, in hong kong and taiwan": "\u05ea\u05d5 \u05d9\u05d5\u05d0\u05df, \u05d1\u05d4\u05d5\u05e0\u05d2 \u05e7\u05d5\u05e0\u05d2 \u05d5\u05d1\u05d8\u05d9\u05d9\u05d5\u05d5\u05d0\u05df",
"yen\/yuan character variant one": "\u05de\u05e9\u05ea\u05e0\u05d4 \u05d0\u05d7\u05d3 \u05e9\u05dc \u05ea\u05d5 \u05d9\u05d5\u05d0\u05df\/\u05d9\u05df",
"Loading emoticons...": "\u05d8\u05d5\u05e2\u05df \u05e1\u05de\u05dc\u05d9 \u05d4\u05d1\u05e2\u05d4...",
"Could not load emoticons": "\u05dc\u05d0 \u05e0\u05d9\u05ea\u05df \u05d4\u05d9\u05d4 \u05dc\u05d8\u05e2\u05d5\u05df \u05e1\u05de\u05dc\u05d9 \u05d4\u05d1\u05e2\u05d4",
"People": "\u05d0\u05e0\u05e9\u05d9\u05dd",
"Animals and Nature": "\u05d1\u05e2\u05dc\u05d9-\u05d7\u05d9\u05d9\u05dd \u05d5\u05d8\u05d1\u05e2",
"Food and Drink": "\u05d0\u05d5\u05db\u05dc \u05d5\u05e9\u05ea\u05d9\u05d9\u05d4",
"Activity": "\u05e4\u05e2\u05d9\u05dc\u05d5\u05ea",
"Travel and Places": "\u05e0\u05e1\u05d9\u05e2\u05d4 \u05d5\u05de\u05e7\u05d5\u05de\u05d5\u05ea",
"Objects": "\u05d0\u05d5\u05d1\u05d9\u05d9\u05e7\u05d8\u05d9\u05dd",
"Flags": "\u05d3\u05d2\u05dc\u05d9\u05dd",
"Characters": "\u05ea\u05d5\u05d5\u05d9\u05dd",
"Characters (no spaces)": "\u05ea\u05d5\u05d5\u05d9\u05dd (\u05dc\u05dc\u05d0 \u05e8\u05d5\u05d5\u05d7\u05d9\u05dd)",
"{0} characters": "{0} \u05ea\u05d5\u05d5\u05d9\u05dd",
"Error: Form submit field collision.": "\u05e9\u05d2\u05d9\u05d0\u05d4: \u05d4\u05ea\u05e0\u05d2\u05e9\u05d5\u05ea \u05d1\u05e9\u05d3\u05d4 \u05e9\u05dc\u05d9\u05d7\u05ea \u05d8\u05d5\u05e4\u05e1.",
"Error: No form element found.": "\u05e9\u05d2\u05d9\u05d0\u05d4: \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05e8\u05db\u05d9\u05d1 \u05d8\u05d5\u05e4\u05e1.",
"Update": "\u05e2\u05d3\u05db\u05df",
"Color swatch": "\u05d3\u05d5\u05d2\u05de\u05d0\u05d5\u05ea \u05e6\u05d1\u05e2",
"Turquoise": "\u05d8\u05d5\u05e8\u05e7\u05d9\u05d6",
"Green": "\u05d9\u05e8\u05d5\u05e7",
"Blue": "\u05db\u05d7\u05d5\u05dc",
"Purple": "\u05e1\u05d2\u05d5\u05dc",
"Navy Blue": "\u05db\u05d7\u05d5\u05dc \u05e6\u05d9",
"Dark Turquoise": "\u05d8\u05d5\u05e8\u05e7\u05d9\u05d6 \u05db\u05d4\u05d4",
"Dark Green": "\u05d9\u05e8\u05d5\u05e7 \u05db\u05d4\u05d4",
"Medium Blue": "\u05db\u05d7\u05d5\u05dc \u05d1\u05d9\u05e0\u05d5\u05e0\u05d9",
"Medium Purple": "\u05e1\u05d2\u05d5\u05dc \u05d1\u05d9\u05e0\u05d5\u05e0\u05d9",
"Midnight Blue": "\u05db\u05d7\u05d5\u05dc \u05d7\u05e6\u05d5\u05ea",
"Yellow": "\u05e6\u05d4\u05d5\u05d1",
"Orange": "\u05db\u05ea\u05d5\u05dd",
"Red": "\u05d0\u05d3\u05d5\u05dd",
"Light Gray": "\u05d0\u05e4\u05d5\u05e8 \u05d1\u05d4\u05d9\u05e8",
"Gray": "\u05d0\u05e4\u05d5\u05e8",
"Dark Yellow": "\u05e6\u05d4\u05d5\u05d1 \u05db\u05d4\u05d4",
"Dark Orange": "\u05db\u05ea\u05d5\u05dd \u05db\u05d4\u05d4",
"Dark Red": "\u05d0\u05d3\u05d5\u05dd \u05db\u05d4\u05d4",
"Medium Gray": "\u05d0\u05e4\u05d5\u05e8 \u05d1\u05d9\u05e0\u05d5\u05e0\u05d9",
"Dark Gray": "\u05d0\u05e4\u05d5\u05e8 \u05db\u05d4\u05d4",
"Light Green": "\u05d9\u05e8\u05d5\u05e7 \u05d1\u05d4\u05d9\u05e8",
"Light Yellow": "\u05e6\u05d4\u05d5\u05d1 \u05d1\u05d4\u05d9\u05e8",
"Light Red": "\u05d0\u05d3\u05d5\u05dd \u05d1\u05d4\u05d9\u05e8",
"Light Purple": "\u05e1\u05d2\u05d5\u05dc \u05d1\u05d4\u05d9\u05e8",
"Light Blue": "\u05db\u05d7\u05d5\u05dc \u05d1\u05d4\u05d9\u05e8",
"Dark Purple": "\u05e1\u05d2\u05d5\u05dc \u05db\u05d4\u05d4",
"Dark Blue": "\u05db\u05d7\u05d5\u05dc \u05db\u05d4\u05d4",
"Black": "\u05e9\u05d7\u05d5\u05e8",
"White": "\u05dc\u05d1\u05df",
"Switch to or from fullscreen mode": "\u05d4\u05d7\u05dc\u05e3 \u05dc\u05de\u05e6\u05d1 \u05de\u05e1\u05da \u05de\u05dc\u05d0 \u05d0\u05d5 \u05e6\u05d0 \u05de\u05de\u05e0\u05d5",
"Open help dialog": "\u05e4\u05ea\u05d7 \u05ea\u05d9\u05d1\u05ea \u05d3\u05d5-\u05e9\u05d9\u05d7 \u05e9\u05dc \u05e2\u05d6\u05e8\u05d4",
"history": "\u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d4",
"styles": "\u05e1\u05d2\u05e0\u05d5\u05e0\u05d5\u05ea",
"formatting": "\u05e2\u05d9\u05e6\u05d5\u05d1",
"alignment": "\u05d9\u05d9\u05e9\u05d5\u05e8",
"indentation": "\u05d4\u05d6\u05d7\u05d4",
"permanent pen": "\u05e2\u05d8 \u05e7\u05d1\u05d5\u05e2",
"comments": "\u05d4\u05e2\u05e8\u05d5\u05ea",
"Format Painter": "\u05e6\u05d9\u05d9\u05e8 \u05e2\u05d9\u05e6\u05d5\u05d1",
"Insert\/edit iframe": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05d7\u05dc\u05d5\u05df \u05de\u05e1\u05d2\u05e8\u05ea",
"Capitalization": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea",
"lowercase": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
"UPPERCASE": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea",
"Title Case": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05db\u05d5\u05ea\u05e8\u05ea",
"Permanent Pen Properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e2\u05d8 \u05e7\u05d1\u05d5\u05e2\u05d9\u05dd",
"Permanent pen properties...": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e2\u05d8 \u05e7\u05d1\u05d5\u05e2\u05d9\u05dd...",
"Font": "\u05d2\u05d5\u05e4\u05df",
"Size": "\u05d2\u05d5\u05d3\u05dc",
"More...": "\u05e2\u05d5\u05d3...",
"Spellcheck Language": "\u05e9\u05e4\u05ea \u05d1\u05d3\u05d9\u05e7\u05ea \u05d0\u05d9\u05d5\u05ea",
"Select...": "\u05d1\u05d7\u05e8...",
"Preferences": "\u05d4\u05e2\u05d3\u05e4\u05d5\u05ea",
"Yes": "\u05db\u05df",
"No": "\u05dc\u05d0",
"Keyboard Navigation": "\u05e0\u05d9\u05d5\u05d5\u05d8 \u05d1\u05de\u05e7\u05dc\u05d3\u05ea",
"Version": "\u05d2\u05e8\u05e1\u05d4",
"Anchor": "\u05de\u05e7\u05d5\u05dd \u05e2\u05d9\u05d2\u05d5\u05df",
"Special character": "\u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd",
"Code sample": "\u05d3\u05d5\u05d2\u05de\u05ea \u05e7\u05d5\u05d3",
"Color": "\u05e6\u05d1\u05e2",
"Emoticons": "\u05de\u05d7\u05d5\u05d5\u05ea",
"Document properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05e1\u05de\u05da",
"Image": "\u05ea\u05de\u05d5\u05e0\u05d4",
"Insert link": "\u05d4\u05db\u05e0\u05e1 \u05e7\u05d9\u05e9\u05d5\u05e8",
"Target": "\u05de\u05d8\u05e8\u05d4",
"Link": "\u05e7\u05d9\u05e9\u05d5\u05e8",
"Poster": "\u05e4\u05d5\u05e1\u05d8\u05e8",
"Media": "\u05de\u05d3\u05d9\u05d4",
"Print": "\u05d4\u05d3\u05e4\u05e1",
"Prev": "\u05e7\u05d5\u05d3\u05dd",
"Find and replace": "\u05d7\u05e4\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e3",
"Whole words": "\u05de\u05d9\u05dc\u05d4 \u05e9\u05dc\u05de\u05d4",
"Spellcheck": "\u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea",
"Caption": "\u05db\u05d9\u05ea\u05d5\u05d1",
"Insert template": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d1\u05e0\u05d9\u05ea",
"_dir": "rtl"
});js/tinymce/langs/ru_RU.js000064400000137444151727150320011346 0ustar00tinymce.addI18n('ru_RU',{
"Redo": "\u041f\u043e\u0432\u0442\u043e\u0440",
"Undo": "\u041e\u0442\u043c\u0435\u043d\u0430",
"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c",
"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"Select all": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435",
"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Ok": "\u041f\u0440\u0438\u043d\u044f\u0442\u044c",
"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438",
"Bold": "\u0416\u0438\u0440\u043d\u044b\u0439",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Underline": "\u041f\u043e\u0434\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
"Strikethrough": "\u041f\u0435\u0440\u0435\u0447\u0451\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"Subscript": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
"Align left": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Align center": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Align right": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Justify": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",
"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl + X \/ C \/ V.",
"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Preformatted": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439",
"Div": "<div>\u0411\u043b\u043e\u043a<\/div>",
"Pre": "<pre>\u0411\u043b\u043e\u043a<\/pre>",
"Code": "\u041a\u043e\u0434",
"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
"Inline": "\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439",
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0430 \u0432\u044b \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u044d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e.",
"Fonts": "\u0428\u0440\u0438\u0444\u0442\u044b",
"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0448\u0440\u0438\u0444\u0442\u0430",
"Class": "\u041a\u043b\u0430\u0441\u0441",
"Browse for an image": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"OR": "\u0418\u041b\u0418",
"Drop an image here": "\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u044e\u0434\u0430",
"Upload": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c",
"Block": "\u0411\u043b\u043e\u043a",
"Align": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Default": "\u041f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",
"Circle": "\u041a\u0440\u0443\u0433",
"Disc": "\u0422\u043e\u0447\u043a\u0430",
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442",
"Lower Alpha": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u041b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439",
"Lower Greek": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0413\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0439",
"Lower Roman": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0439 \u0420\u0438\u043c\u0441\u043a\u0438\u0439",
"Upper Alpha": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u041b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439",
"Upper Roman": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0420\u0438\u043c\u0441\u043a\u0438\u0439",
"Anchor...": "\u042f\u043a\u043e\u0440\u044c",
"Name": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",
"Id": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 Id \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0442\u0438\u0440\u0435, \u0442\u043e\u0447\u043a\u0438, \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f.",
"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0432\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u044b\u0439\u0442\u0438?",
"Restore last draft": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a",
"Special character...": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b...",
"Source code": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434",
"Insert\/Edit code sample": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \/ \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",
"Language": "\u042f\u0437\u044b\u043a",
"Code sample...": "\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",
"Color Picker": "\u041f\u0430\u043b\u0438\u0442\u0440\u0430 \u0446\u0432\u0435\u0442\u043e\u0432",
"R": "\u041a",
"G": "\u0417",
"B": "\u0421",
"Left to right": "\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",
"Emoticons": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b",
"Emoticons...": "\u0421\u043c\u0430\u0439\u043b\u044b...",
"Metadata and Document Properties": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",
"Keywords": "\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430",
"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
"Fullscreen": "\u0412\u043e \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d",
"Action": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435",
"Shortcut": "\u042f\u0440\u043b\u044b\u043a",
"Help": "\u041f\u043e\u043c\u043e\u0449\u044c",
"Address": "\u0410\u0434\u0440\u0435\u0441",
"Focus to menubar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043c\u0435\u043d\u044e",
"Focus to toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432",
"Focus to element path": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \u043f\u0443\u0442\u0438",
"Focus to contextual toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u044e",
"Insert link (if link plugin activated)": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 (\u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u0441\u044b\u043b\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d)",
"Save (if save plugin activated)": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c (\u0435\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f)",
"Find (if searchreplace plugin activated)": "\u041d\u0430\u0439\u0442\u0438 (\u0435\u0441\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u043d\u044b)",
"Plugins installed ({0}):": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 ({0}):",
"Premium plugins:": "Premium \u043f\u043b\u0430\u0433\u0438\u043d\u044b:",
"Learn more...": "\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435...",
"You are using {0}": "\u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 {0}",
"Plugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u044b",
"Handy Shortcuts": "\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f",
"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f",
"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Alternative description": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Accessibility": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c",
"Image is decorative": "\u0414\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Source": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440\u044b",
"Constrain proportions": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
"General": "\u041e\u0431\u0449\u0438\u0435",
"Advanced": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b",
"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b",
"Border": "\u0420\u0430\u043c\u043a\u0438",
"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Image...": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435...",
"Image list": "\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439",
"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439",
"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0430\u0441\u043e\u0432\u043e\u0439",
"Flip vertically": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438",
"Flip horizontally": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438",
"Edit image": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Image options": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Zoom in": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c",
"Zoom out": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c",
"Crop": "\u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c",
"Resize": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b",
"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
"Brightness": "\u042f\u0440\u043a\u043e\u0441\u0442\u044c",
"Sharpen": "\u0420\u0435\u0437\u043a\u043e\u0441\u0442\u044c",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u044c",
"Color levels": "\u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Invert": "\u0418\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0446\u0432\u0435\u0442",
"Apply": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f",
"Date\/time": "\u0414\u0430\u0442\u0430\/\u0432\u0440\u0435\u043c\u044f",
"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Text to display": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442",
"Url": "Url",
"Open link in...": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0432...",
"Current window": "\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e",
"None": "-",
"New window": "\u041d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e",
"Open link": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Anchors": "\u042f\u043a\u043e\u0440\u044c",
"Link...": "\u0421\u0441\u044b\u043b\u043a\u0430...",
"Paste or type a link": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0412\u0430\u043c\u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0412\u0430\u043c\u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0425\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http: \/\/?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0412\u0430\u043c\u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0425\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 https: \/\/?",
"Link list": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a",
"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit media": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430-\u043a\u043e\u043d\u0442\u0435\u043d\u0442",
"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"Alternative source URL": "URL \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430",
"Media poster (Image URL)": "\u041c\u0435\u0434\u0438\u0430-\u043a\u043e\u043d\u0442\u0435\u043d\u0442 (URL \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f)",
"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u0434 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043d\u0438\u0436\u0435:",
"Embed": "\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439",
"Media...": "\u041c\u0435\u0434\u0438\u0430-\u043a\u043e\u043d\u0442\u0435\u043d\u0442...",
"Nonbreaking space": "\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a",
"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442",
"Preview": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",
"Print...": "\u041f\u0435\u0447\u0430\u0442\u044c...",
"Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
"Find": "\u041d\u0430\u0439\u0442\u0438",
"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e",
"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",
"Previous": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439",
"Next": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439",
"Find and Replace": "\u041d\u0430\u0439\u0442\u0438 \u0438 \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
"Find and replace...": "\u041d\u0430\u0439\u0442\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c...",
"Could not find the specified string.": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443.",
"Match case": "\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"Find whole words only": "\u041d\u0430\u0439\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c",
"Find in selection": "\u0418\u0441\u043a\u0430\u0442\u044c \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c",
"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Spellcheck Language": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e \u044f\u0437\u044b\u043a\u0443",
"No misspellings found.": "\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e.",
"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435",
"Finish": "\u041a\u043e\u043d\u0435\u0446",
"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0421\u043b\u043e\u0432\u0430\u0440\u044c",
"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",
"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430",
"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446",
"Cell properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0447\u0435\u0439\u043a\u0438",
"Merge cells": "\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",
"Split cell": "\u0420\u0430\u0437\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",
"Insert row before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e",
"Insert row after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0441\u043b\u0435",
"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
"Row properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a\u0438",
"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
"Copy row": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u0435\u0440\u0435\u0434",
"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0441\u043b\u0435",
"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0434\u043e",
"Insert column after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043f\u043e\u0441\u043b\u0435",
"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446",
"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b",
"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
"Cell spacing": "\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438",
"Cell padding": "\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445",
"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Show caption": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u044c",
"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Cell type": "\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438",
"Scope": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c",
"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Top": "\u0421\u0432\u0435\u0440\u0445\u0443",
"Middle": "\u041f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435",
"Bottom": "\u0421\u043d\u0438\u0437\u0443",
"Header cell": "\u0421\u0442\u0440\u043e\u043a\u0430-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Row group": "\u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438",
"Column group": "\u0421\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0446\u044b",
"Row type": "\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438",
"Header": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Body": "\u0422\u0435\u043b\u043e",
"Footer": "\u041f\u043e\u0434\u0432\u0430\u043b",
"Border color": "\u0426\u0432\u0435\u0442 \u0440\u0430\u043c\u043a\u0438",
"Insert template...": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d...",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
"Template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"Text color": "\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",
"Background color": "\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",
"Custom...": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439...",
"Custom color": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0446\u0432\u0435\u0442",
"No color": "\u0411\u0435\u0437 \u0446\u0432\u0435\u0442\u0430",
"Remove color": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0446\u0432\u0435\u0442",
"Table of Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",
"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438",
"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
"Word count": "\u0421\u0447\u0451\u0442\u0447\u0438\u043a \u0441\u043b\u043e\u0432",
"Count": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e",
"Document": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Selection": "\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435",
"Words": "\u0421\u043b\u043e\u0432\u0430",
"Words: {0}": "\u0421\u043b\u043e\u0432: {0}",
"{0} words": "{0} \u0441\u043b\u043e\u0432",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Insert": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430",
"View": "\u0412\u0438\u0434",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
"Powered by {0}": "\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u043c\u0435\u043d\u044e. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F10 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-0 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438",
"Image title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Border width": "\u0428\u0438\u0440\u0438\u043d\u0430 \u0440\u0430\u043c\u043a\u0438",
"Border style": "\u0421\u0442\u0438\u043b\u044c \u0440\u0430\u043c\u043a\u0438",
"Error": "\u041e\u0448\u0438\u0431\u043a\u0430",
"Warn": "\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435",
"Valid": "\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435",
"To open the popup, press Shift+Enter": "\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Shift + Enter",
"Rich Text Area. Press ALT-0 for help.": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-0 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438.",
"System Font": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0428\u0440\u0438\u0444\u0442",
"Failed to upload image: {0}": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: {0}",
"Failed to load plugin: {0} from url {1}": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d: {0} \u0438\u0437 url {1}",
"Failed to load plugin url: {0}": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c url \u043f\u043b\u0430\u0433\u0438\u043d\u0430: {0}",
"Failed to initialize plugin: {0}": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d: {0}",
"example": "\u043f\u0440\u0438\u043c\u0435\u0440",
"Search": "\u041f\u043e\u0438\u0441\u043a",
"All": "\u0412\u0441\u0435",
"Currency": "\u0412\u0430\u043b\u044e\u0442\u0430",
"Text": "\u0422\u0435\u043a\u0441\u0442",
"Quotations": "\u0426\u0438\u0442\u0430\u0442\u044b",
"Mathematical": "\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439",
"Extended Latin": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u041b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439",
"Symbols": "\u0421\u0438\u043c\u0432\u043e\u043b\u044b",
"Arrows": "\u0421\u0442\u0440\u0435\u043b\u043a\u0438",
"User Defined": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c",
"dollar sign": "\u0434\u043e\u043b\u043b\u0430\u0440",
"currency sign": "\u0432\u0430\u043b\u044e\u0442\u0430",
"euro-currency sign": "\u0435\u0432\u0440\u043e",
"colon sign": "\u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435",
"cruzeiro sign": "\u043a\u0440\u0443\u0437\u0435\u0439\u0440\u043e",
"french franc sign": "\u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0439 \u0444\u0440\u0430\u043d\u043a",
"lira sign": "\u043b\u0438\u0440\u0430",
"mill sign": "\u043c\u0438\u043b\u043b\u044c",
"naira sign": "\u043d\u0430\u0438\u0440\u0430",
"peseta sign": "\u043f\u0435\u0441\u0435\u0442\u0430",
"rupee sign": "\u0440\u0443\u043f\u0438\u044f",
"won sign": "\u0432\u043e\u043d\u0430",
"new sheqel sign": "\u043d\u043e\u0432\u044b\u0439 \u0448\u0435\u043a\u0435\u043b\u044c",
"dong sign": "\u0434\u043e\u043d\u0433",
"kip sign": "\u043a\u0438\u043f",
"tugrik sign": "\u0442\u0443\u0433\u0440\u0438\u043a",
"drachma sign": "\u0434\u0440\u0430\u0445\u043c\u0430",
"german penny symbol": "\u043f\u0444\u0435\u043d\u043d\u0438\u043d\u0433",
"peso sign": "\u043f\u0435\u0441\u043e",
"guarani sign": "\u0433\u0443\u0430\u0440\u0430\u043d\u0438",
"austral sign": "\u0430\u0443\u0441\u0442\u0440\u0430\u043b\u044c",
"hryvnia sign": "\u0433\u0440\u0438\u0432\u043d\u0430",
"cedi sign": "\u0441\u0435\u0434\u0438",
"livre tournois sign": "\u0442\u0443\u0440\u0441\u043a\u0438\u0439 \u043b\u0438\u0432\u0440",
"spesmilo sign": "\u0441\u043f\u0435\u0441\u043c\u0438\u043b\u043e",
"tenge sign": "\u0442\u0435\u043d\u0433\u0435",
"indian rupee sign": "\u0438\u043d\u0434\u0438\u0439\u0441\u043a\u0430\u044f \u0440\u0443\u043f\u0438\u044f",
"turkish lira sign": "\u0442\u0443\u0440\u0435\u0446\u043a\u0430\u044f \u043b\u0438\u0440\u0430",
"nordic mark sign": "\u0441\u043a\u0430\u043d\u0434\u0438\u043d\u0430\u0432\u0441\u043a\u0430\u044f \u043c\u0430\u0440\u043a\u0430",
"manat sign": "\u043c\u0430\u043d\u0430\u0442",
"ruble sign": "\u0440\u0443\u0431\u043b\u044c",
"yen character": "\u0438\u0435\u043d\u0430",
"yuan character": "\u044e\u0430\u043d\u044c",
"yuan character, in hong kong and taiwan": "\u0413\u043e\u043d\u043a\u043e\u043d\u0433\u0441\u043a\u0438\u0439 \/ \u0422\u0430\u0439\u0432\u0430\u043d\u044c\u0441\u043a\u0438\u0439 \u044e\u0430\u043d\u044c",
"yen\/yuan character variant one": "\u0438\u0435\u043d\u0430\/\u044e\u0430\u043d\u044c",
"Loading emoticons...": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043c\u0430\u0439\u043b\u043e\u0432 ...",
"Could not load emoticons": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b\u044b",
"People": "\u041b\u044e\u0434\u0438",
"Animals and Nature": "\u0416\u0438\u0432\u043e\u0442\u043d\u044b\u0435 \u0438 \u041f\u0440\u0438\u0440\u043e\u0434\u0430",
"Food and Drink": "\u0415\u0434\u0430 \u0438 \u041d\u0430\u043f\u0438\u0442\u043a\u0438",
"Activity": "\u041c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u044f",
"Travel and Places": "\u041f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u0438 \u041c\u0435\u0441\u0442\u0430",
"Objects": "\u041e\u0431\u044a\u0435\u043a\u0442\u044b",
"Flags": "\u0424\u043b\u0430\u0433\u0438",
"Characters": "\u0421\u0438\u043c\u0432\u043e\u043b\u044b",
"Characters (no spaces)": "\u0421\u0438\u043c\u0432\u043e\u043b\u044b (\u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432)",
"{0} characters": "{0} \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432",
"Error: Form submit field collision.": "\u041e\u0448\u0438\u0431\u043a\u0430: \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u044f \u0424\u043e\u0440\u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.",
"Error: No form element found.": "\u041e\u0448\u0438\u0431\u043a\u0430: \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d.",
"Update": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c",
"Color swatch": "\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u0446\u0432\u0435\u0442\u0430",
"Turquoise": "\u0411\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",
"Green": "\u0417\u0435\u043b\u0451\u043d\u044b\u0439",
"Blue": "\u0421\u0438\u043d\u0438\u0439",
"Purple": "\u0424\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
"Navy Blue": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",
"Dark Turquoise": "\u0422\u0435\u043c\u043d\u043e-\u0431\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",
"Dark Green": "\u0422\u0435\u043c\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",
"Medium Blue": "\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0441\u0438\u043d\u0438\u0439",
"Medium Purple": "\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
"Midnight Blue": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",
"Yellow": "\u0416\u0435\u043b\u0442\u044b\u0439",
"Orange": "\u041e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439",
"Red": "\u041a\u0440\u0430\u0441\u043d\u044b\u0439",
"Light Gray": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0439",
"Gray": "\u0421\u0435\u0440\u044b\u0439",
"Dark Yellow": "\u0422\u0435\u043c\u043d\u043e-\u0436\u0435\u043b\u0442\u044b\u0439",
"Dark Orange": "\u0422\u0435\u043c\u043d\u043e-\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439",
"Dark Red": "\u0422\u0435\u043c\u043d\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",
"Medium Gray": "\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0441\u0435\u0440\u044b\u0439",
"Dark Gray": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",
"Light Green": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",
"Light Yellow": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0436\u0435\u043b\u0442\u044b\u0439",
"Light Red": "\u0421\u0432\u0435\u0442\u043b\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",
"Light Purple": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
"Light Blue": "\u0413\u043e\u043b\u0443\u0431\u043e\u0439",
"Dark Purple": "\u0422\u0435\u043c\u043d\u043e-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
"Dark Blue": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",
"Black": "\u0427\u0435\u0440\u043d\u044b\u0439",
"White": "\u0411\u0435\u043b\u044b\u0439",
"Switch to or from fullscreen mode": "\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0432 \u0438\u043b\u0438 \u0438\u0437 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430",
"Open help dialog": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u043a\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u043a\u0438",
"history": "\u0438\u0441\u0442\u043e\u0440\u0438\u044f",
"styles": "\u0441\u0442\u0438\u043b\u0438",
"formatting": "\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
"alignment": "\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"indentation": "\u043e\u0442\u0441\u0442\u0443\u043f\u044b",
"Font": "\u0428\u0440\u0438\u0444\u0442",
"Size": "\u0420\u0430\u0437\u043c\u0435\u0440",
"More...": "\u0415\u0449\u0451...",
"Select...": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c...",
"Preferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"Yes": "\u0414\u0430",
"No": "\u041d\u0435\u0442",
"Keyboard Navigation": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b",
"Version": "\u0412\u0435\u0440\u0441\u0438\u044f",
"Code view": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0434\u0430",
"Open popup menu for split buttons": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a",
"List Properties": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432",
"List properties...": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432...",
"Start list at number": "\u041d\u0430\u0447\u0430\u0442\u044c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e \u0441",
"Line height": "\u0412\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438",
"comments": "\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438",
"Format Painter": "\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
"Insert\/edit iframe": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0440\u0435\u0439\u043c",
"Capitalization": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0432\u044b\u0435",
"lowercase": "\u043d\u0438\u0436\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"UPPERCASE": "\u0412\u0415\u0420\u0425\u041d\u0418\u0419 \u0420\u0415\u0413\u0418\u0421\u0422\u0420",
"Title Case": "\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f",
"permanent pen": "\u0440\u0443\u0447\u043a\u0430",
"Permanent Pen Properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0430",
"Permanent pen properties...": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0430...",
"case change": "\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430",
"page embed": "\u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443",
"Advanced sort...": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430...",
"Advanced Sort": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430",
"Sort table by column ascending": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e",
"Sort table by column descending": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e",
"Sort": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Order": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a",
"Sort by": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e",
"Ascending": "\u041f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e",
"Descending": "\u041f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e",
"Column {0}": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446 {0}",
"Row {0}": "\u0421\u0442\u0440\u043e\u043a\u0430 {0}",
"Spellcheck...": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f...",
"Misspelled word": "\u0421\u043b\u043e\u0432\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439",
"Suggestions": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f",
"Change": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
"Finding word suggestions": "\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430",
"Success": "\u0423\u0441\u043f\u0435\u0445",
"Repair": "\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c",
"Issue {0} of {1}": "\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 {0} \u0438\u0437 {1}",
"Images must be marked as decorative or have an alternative text description": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u0414\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b.",
"Or provide alternative text:": "\u0418\u043b\u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:",
"Make image decorative:": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435:",
"ID attribute must be unique": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 ID \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c",
"Make ID unique": "\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c",
"Keep this ID and remove all others": "\u041e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435",
"Remove this ID": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440",
"Remove all IDs": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b",
"Checklist": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438"
});js/tinymce/langs/fr_FR.js000064400000044451151727150320011303 0ustar00tinymce.addI18n('fr_FR',{
"Redo": "R\u00e9tablir",
"Undo": "Annuler",
"Cut": "Couper",
"Copy": "Copier",
"Paste": "Coller",
"Select all": "S\u00e9lectionner tout",
"New document": "Nouveau document",
"Ok": "OK",
"Cancel": "Annuler",
"Visual aids": "Aides visuelles",
"Bold": "Gras",
"Italic": "Italique",
"Underline": "Soulign\u00e9",
"Strikethrough": "Barr\u00e9",
"Superscript": "Exposant",
"Subscript": "Indice",
"Clear formatting": "Effacer la mise en forme",
"Align left": "Aligner \u00e0 gauche",
"Align center": "Centrer",
"Align right": "Aligner \u00e0 droite",
"Justify": "Justifier",
"Bullet list": "Liste \u00e0 puces",
"Numbered list": "Liste num\u00e9rot\u00e9e",
"Decrease indent": "R\u00e9duire le retrait",
"Increase indent": "Augmenter le retrait",
"Close": "Fermer",
"Formats": "Formats",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas l\u2019acc\u00e8s direct au presse-papiers. Merci d'utiliser les raccourcis clavier Ctrl+X\/C\/V.",
"Headers": "En-t\u00eates",
"Header 1": "En-t\u00eate 1",
"Header 2": "En-t\u00eate 2",
"Header 3": "En-t\u00eate 3",
"Header 4": "En-t\u00eate 4",
"Header 5": "En-t\u00eate 5",
"Header 6": "En-t\u00eate 6",
"Headings": "Titres",
"Heading 1": "Titre\u00a01",
"Heading 2": "Titre\u00a02",
"Heading 3": "Titre\u00a03",
"Heading 4": "Titre\u00a04",
"Heading 5": "Titre\u00a05",
"Heading 6": "Titre\u00a06",
"Preformatted": "Pr\u00e9format\u00e9",
"Div": "Div",
"Pre": "Pre",
"Code": "Code",
"Paragraph": "Paragraphe",
"Blockquote": "Blockquote",
"Inline": "En ligne",
"Blocks": "Blocs",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
"Fonts": "Polices",
"Font Sizes": "Tailles de police",
"Class": "Classe",
"Browse for an image": "Rechercher une image",
"OR": "OU",
"Drop an image here": "D\u00e9poser une image ici",
"Upload": "T\u00e9l\u00e9charger",
"Block": "Bloc",
"Align": "Aligner",
"Default": "Par d\u00e9faut",
"Circle": "Cercle",
"Disc": "Disque",
"Square": "Carr\u00e9",
"Lower Alpha": "Alpha minuscule",
"Lower Greek": "Grec minuscule",
"Lower Roman": "Romain minuscule",
"Upper Alpha": "Alpha majuscule",
"Upper Roman": "Romain majuscule",
"Anchor...": "Ancre...",
"Name": "Nom",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores",
"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
"Restore last draft": "Restaurer le dernier brouillon",
"Special character...": "Caract\u00e8re sp\u00e9cial...",
"Source code": "Code source",
"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code",
"Language": "Langue",
"Code sample...": "Exemple de code...",
"Color Picker": "S\u00e9lecteur de couleurs",
"R": "R",
"G": "V",
"B": "B",
"Left to right": "Gauche \u00e0 droite",
"Right to left": "Droite \u00e0 gauche",
"Emoticons": "Emotic\u00f4nes",
"Emoticons...": "\u00c9motic\u00f4nes...",
"Metadata and Document Properties": "M\u00e9tadonn\u00e9es et propri\u00e9t\u00e9s du document",
"Title": "Titre",
"Keywords": "Mots-cl\u00e9s",
"Description": "Description",
"Robots": "Robots",
"Author": "Auteur",
"Encoding": "Encodage",
"Fullscreen": "Plein \u00e9cran",
"Action": "Action",
"Shortcut": "Raccourci",
"Help": "Aide",
"Address": "Adresse",
"Focus to menubar": "Cibler la barre de menu",
"Focus to toolbar": "Cibler la barre d'outils",
"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment",
"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle",
"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)",
"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)",
"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)",
"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ",
"Premium plugins:": "Modules premium :",
"Learn more...": "En savoir plus...",
"You are using {0}": "Vous utilisez {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Raccourcis utiles",
"Horizontal line": "Ligne horizontale",
"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
"Alternative description": "Description alternative",
"Accessibility": "Accessibilit\u00e9",
"Image is decorative": "L'image est d\u00e9corative",
"Source": "Source",
"Dimensions": "Dimensions",
"Constrain proportions": "Conserver les proportions",
"General": "G\u00e9n\u00e9ral",
"Advanced": "Avanc\u00e9",
"Style": "Style",
"Vertical space": "Espacement vertical",
"Horizontal space": "Espacement horizontal",
"Border": "Bordure",
"Insert image": "Ins\u00e9rer une image",
"Image...": "Image...",
"Image list": "Liste d'images",
"Rotate counterclockwise": "Rotation anti-horaire",
"Rotate clockwise": "Rotation horaire",
"Flip vertically": "Retournement vertical",
"Flip horizontally": "Retournement horizontal",
"Edit image": "Modifier l'image",
"Image options": "Options de l'image",
"Zoom in": "Zoomer",
"Zoom out": "D\u00e9zoomer",
"Crop": "Rogner",
"Resize": "Redimensionner",
"Orientation": "Orientation",
"Brightness": "Luminosit\u00e9",
"Sharpen": "Affiner",
"Contrast": "Contraste",
"Color levels": "Niveaux de couleur",
"Gamma": "Gamma",
"Invert": "Inverser",
"Apply": "Appliquer",
"Back": "Retour",
"Insert date\/time": "Ins\u00e9rer date\/heure",
"Date\/time": "Date\/heure",
"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
"Text to display": "Texte \u00e0 afficher",
"Url": "Url",
"Open link in...": "Ouvrir le lien dans...",
"Current window": "Fen\u00eatre active",
"None": "n\/a",
"New window": "Nouvelle fen\u00eatre",
"Open link": "Ouvrir le lien",
"Remove link": "Enlever le lien",
"Anchors": "Ancres",
"Link...": "Lien...",
"Paste or type a link": "Coller ou taper un lien",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "L'URL que vous avez saisie semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe https:\/\/ requis\u00a0?",
"Link list": "Liste de liens",
"Insert video": "Ins\u00e9rer une vid\u00e9o",
"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
"Alternative source": "Source alternative",
"Alternative source URL": "URL de la source alternative",
"Media poster (Image URL)": "Affiche de m\u00e9dia (URL de l'image)",
"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
"Embed": "Int\u00e9grer",
"Media...": "M\u00e9dia...",
"Nonbreaking space": "Espace ins\u00e9cable",
"Page break": "Saut de page",
"Paste as text": "Coller comme texte",
"Preview": "Pr\u00e9visualiser",
"Print...": "Imprimer...",
"Save": "Enregistrer",
"Find": "Chercher",
"Replace with": "Remplacer par",
"Replace": "Remplacer",
"Replace all": "Tout remplacer",
"Previous": "Pr\u00e9c\u00e9dente",
"Next": "Suiv",
"Find and Replace": "Trouver et remplacer",
"Find and replace...": "Trouver et remplacer...",
"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
"Match case": "Respecter la casse",
"Find whole words only": "Mot entier",
"Find in selection": "Trouver dans la s\u00e9lection",
"Spellcheck": "V\u00e9rification orthographique",
"Spellcheck Language": "Langue du correcteur orthographique",
"No misspellings found.": "Aucune faute d'orthographe trouv\u00e9e.",
"Ignore": "Ignorer",
"Ignore all": "Tout ignorer",
"Finish": "Finie",
"Add to Dictionary": "Ajouter au dictionnaire",
"Insert table": "Ins\u00e9rer un tableau",
"Table properties": "Propri\u00e9t\u00e9s du tableau",
"Delete table": "Supprimer le tableau",
"Cell": "Cellule",
"Row": "Ligne",
"Column": "Colonne",
"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
"Merge cells": "Fusionner les cellules",
"Split cell": "Diviser la cellule",
"Insert row before": "Ins\u00e9rer une ligne avant",
"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
"Delete row": "Effacer la ligne",
"Row properties": "Propri\u00e9t\u00e9s de la ligne",
"Cut row": "Couper la ligne",
"Copy row": "Copier la ligne",
"Paste row before": "Coller la ligne avant",
"Paste row after": "Coller la ligne apr\u00e8s",
"Insert column before": "Ins\u00e9rer une colonne avant",
"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
"Delete column": "Effacer la colonne",
"Cols": "Colonnes",
"Rows": "Lignes",
"Width": "Largeur",
"Height": "Hauteur",
"Cell spacing": "Espacement inter-cellulles",
"Cell padding": "Espacement interne cellule",
"Caption": "Titre",
"Show caption": "Afficher le sous-titrage",
"Left": "Gauche",
"Center": "Centr\u00e9",
"Right": "Droite",
"Cell type": "Type de cellule",
"Scope": "Etendue",
"Alignment": "Alignement",
"H Align": "Alignement H",
"V Align": "Alignement V",
"Top": "Haut",
"Middle": "Milieu",
"Bottom": "Bas",
"Header cell": "Cellule d'en-t\u00eate",
"Row group": "Groupe de lignes",
"Column group": "Groupe de colonnes",
"Row type": "Type de ligne",
"Header": "En-t\u00eate",
"Body": "Corps",
"Footer": "Pied",
"Border color": "Couleur de la bordure",
"Insert template...": "Ins\u00e9rer un mod\u00e8le...",
"Templates": "Th\u00e8mes",
"Template": "Mod\u00e8le",
"Text color": "Couleur du texte",
"Background color": "Couleur d'arri\u00e8re-plan",
"Custom...": "Personnalis\u00e9...",
"Custom color": "Couleur personnalis\u00e9e",
"No color": "Aucune couleur",
"Remove color": "Supprimer la couleur",
"Table of Contents": "Table des mati\u00e8res",
"Show blocks": "Afficher les blocs",
"Show invisible characters": "Afficher les caract\u00e8res invisibles",
"Word count": "Nombre de mots",
"Count": "Total",
"Document": "Document",
"Selection": "S\u00e9lection",
"Words": "Mots",
"Words: {0}": "Mots : {0}",
"{0} words": "{0} mots",
"File": "Fichier",
"Edit": "Editer",
"Insert": "Ins\u00e9rer",
"View": "Voir",
"Format": "Format",
"Table": "Tableau",
"Tools": "Outils",
"Powered by {0}": "Propuls\u00e9 par {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
"Image title": "Titre d'image",
"Border width": "\u00c9paisseur de la bordure",
"Border style": "Style de la bordure",
"Error": "Erreur",
"Warn": "Avertir",
"Valid": "Valide",
"To open the popup, press Shift+Enter": "Pour ouvrir la popup, appuyez sur Maj+Entr\u00e9e",
"Rich Text Area. Press ALT-0 for help.": "Zone de texte riche. Appuyez sur ALT-0 pour l'aide.",
"System Font": "Police syst\u00e8me",
"Failed to upload image: {0}": "\u00c9chec d'envoi de l'image\u00a0: {0}",
"Failed to load plugin: {0} from url {1}": "\u00c9chec de chargement du plug-in\u00a0: {0} \u00e0 partir de l\u2019URL {1}",
"Failed to load plugin url: {0}": "\u00c9chec de chargement de l'URL du plug-in\u00a0: {0}",
"Failed to initialize plugin: {0}": "\u00c9chec d'initialisation du plug-in\u00a0: {0}",
"example": "exemple",
"Search": "Rechercher",
"All": "Tout",
"Currency": "Devise",
"Text": "Texte",
"Quotations": "Citations",
"Mathematical": "Op\u00e9rateurs math\u00e9matiques",
"Extended Latin": "Latin \u00e9tendu",
"Symbols": "Symboles",
"Arrows": "Fl\u00e8ches",
"User Defined": "D\u00e9fini par l'utilisateur",
"dollar sign": "Symbole dollar",
"currency sign": "Symbole devise",
"euro-currency sign": "Symbole euro",
"colon sign": "Symbole col\u00f3n",
"cruzeiro sign": "Symbole cruzeiro",
"french franc sign": "Symbole franc fran\u00e7ais",
"lira sign": "Symbole lire",
"mill sign": "Symbole milli\u00e8me",
"naira sign": "Symbole naira",
"peseta sign": "Symbole peseta",
"rupee sign": "Symbole roupie",
"won sign": "Symbole won",
"new sheqel sign": "Symbole nouveau ch\u00e9kel",
"dong sign": "Symbole dong",
"kip sign": "Symbole kip",
"tugrik sign": "Symbole tougrik",
"drachma sign": "Symbole drachme",
"german penny symbol": "Symbole pfennig",
"peso sign": "Symbole peso",
"guarani sign": "Symbole guarani",
"austral sign": "Symbole austral",
"hryvnia sign": "Symbole hryvnia",
"cedi sign": "Symbole cedi",
"livre tournois sign": "Symbole livre tournois",
"spesmilo sign": "Symbole spesmilo",
"tenge sign": "Symbole tenge",
"indian rupee sign": "Symbole roupie indienne",
"turkish lira sign": "Symbole lire turque",
"nordic mark sign": "Symbole du mark nordique",
"manat sign": "Symbole manat",
"ruble sign": "Symbole rouble",
"yen character": "Sinogramme Yen",
"yuan character": "Sinogramme Yuan",
"yuan character, in hong kong and taiwan": "Sinogramme Yuan, Hong Kong et Taiwan",
"yen\/yuan character variant one": "Sinogramme Yen\/Yuan, premi\u00e8re variante",
"Loading emoticons...": "Chargement des \u00e9motic\u00f4nes en cours...",
"Could not load emoticons": "\u00c9chec de chargement des \u00e9motic\u00f4nes",
"People": "Personnes",
"Animals and Nature": "Animaux & nature",
"Food and Drink": "Nourriture & boissons",
"Activity": "Activit\u00e9",
"Travel and Places": "Voyages & lieux",
"Objects": "Objets",
"Flags": "Drapeaux",
"Characters": "Caract\u00e8res",
"Characters (no spaces)": "Caract\u00e8res (espaces non compris)",
"{0} characters": "{0}\u00a0caract\u00e8res",
"Error: Form submit field collision.": "Erreur\u00a0: conflit de champs lors de la soumission du formulaire.",
"Error: No form element found.": "Erreur : aucun \u00e9l\u00e9ment de formulaire trouv\u00e9.",
"Update": "Mettre \u00e0 jour",
"Color swatch": "\u00c9chantillon de couleurs",
"Turquoise": "Turquoise",
"Green": "Vert",
"Blue": "Bleu",
"Purple": "Violet",
"Navy Blue": "Bleu marine",
"Dark Turquoise": "Turquoise fonc\u00e9",
"Dark Green": "Vert fonc\u00e9",
"Medium Blue": "Bleu moyen",
"Medium Purple": "Violet moyen",
"Midnight Blue": "Bleu de minuit",
"Yellow": "Jaune",
"Orange": "Orange",
"Red": "Rouge",
"Light Gray": "Gris clair",
"Gray": "Gris",
"Dark Yellow": "Jaune fonc\u00e9",
"Dark Orange": "Orange fonc\u00e9",
"Dark Red": "Rouge fonc\u00e9",
"Medium Gray": "Gris moyen",
"Dark Gray": "Gris fonc\u00e9",
"Light Green": "Vert clair",
"Light Yellow": "Jaune clair",
"Light Red": "Rouge clair",
"Light Purple": "Violet clair",
"Light Blue": "Bleu clair",
"Dark Purple": "Violet fonc\u00e9",
"Dark Blue": "Bleu fonc\u00e9",
"Black": "Noir",
"White": "Blanc",
"Switch to or from fullscreen mode": "Passer en ou quitter le mode plein \u00e9cran",
"Open help dialog": "Ouvrir la bo\u00eete de dialogue d'aide",
"history": "historique",
"styles": "styles",
"formatting": "mise en forme",
"alignment": "alignement",
"indentation": "retrait",
"Font": "Police",
"Size": "Taille",
"More...": "Plus...",
"Select...": "S\u00e9lectionner...",
"Preferences": "Pr\u00e9f\u00e9rences",
"Yes": "Oui",
"No": "Non",
"Keyboard Navigation": "Navigation au clavier",
"Version": "Version",
"Code view": "Affichage du code",
"Open popup menu for split buttons": "Ouvrir le menu contextuel pour les boutons partag\u00e9s",
"List Properties": "Propri\u00e9t\u00e9s de la liste",
"List properties...": "Lister les propri\u00e9t\u00e9s...",
"Start list at number": "Liste de d\u00e9part au num\u00e9ro",
"Line height": "Hauteur de la ligne",
"comments": "commentaires",
"Format Painter": "Reproduire la mise en forme",
"Insert\/edit iframe": "Ins\u00e9rer\/modifier iframe",
"Capitalization": "Mise en majuscules",
"lowercase": "minuscule",
"UPPERCASE": "MAJUSCULE",
"Title Case": "Casse du titre",
"permanent pen": "feutre ind\u00e9l\u00e9bile",
"Permanent Pen Properties": "Propri\u00e9t\u00e9s du feutre ind\u00e9l\u00e9bile",
"Permanent pen properties...": "Propri\u00e9t\u00e9s du feutre ind\u00e9l\u00e9bile...",
"case change": "changement de cas",
"page embed": "int\u00e9gration de page",
"Advanced sort...": "Tri avanc\u00e9...",
"Advanced Sort": "Tri avanc\u00e9",
"Sort table by column ascending": "Trier le tableau par colonne ascendante",
"Sort table by column descending": "Trier le tableau par colonne en ordre d\u00e9croissant",
"Sort": "Sorte",
"Order": "Ordre",
"Sort by": "Trier par",
"Ascending": "Ascendant",
"Descending": "Descendant",
"Column {0}": "Colonne {0}",
"Row {0}": "Ligne {0}",
"Spellcheck...": "V\u00e9rification orthographique...",
"Misspelled word": "Mot mal orthographi\u00e9",
"Suggestions": "Suggestions",
"Change": "Changement",
"Finding word suggestions": "Trouver des suggestions de mots",
"Success": "Succ\u00e8s",
"Repair": "R\u00e9paration",
"Issue {0} of {1}": " {0} Erreur sur  {1}",
"Images must be marked as decorative or have an alternative text description": "Les images doivent \u00eatre marqu\u00e9es comme d\u00e9coratives ou avoir une description textuelle alternative",
"Images must have an alternative text description. Decorative images are not allowed.": "Les images doivent avoir une description textuelle alternative. Les images d\u00e9coratives ne sont pas autoris\u00e9es.",
"Or provide alternative text:": "Ou fournissez un texte alternatif\u00a0:",
"Make image decorative:": "Rendre l'image d\u00e9corative\u00a0:",
"ID attribute must be unique": "L'attribut ID doit \u00eatre unique",
"Make ID unique": "Rendre l'identifiant unique",
"Keep this ID and remove all others": "Conservez cet identifiant et supprimez tous les autres",
"Remove this ID": "Supprimer cet identifiant",
"Remove all IDs": "Supprimer tous les identifiants",
"Checklist": "Liste de contr\u00f4le",
"Anchor": "Ancre",
"Special character": "Caract\u00e8res sp\u00e9ciaux",
"Code sample": "Extrait de code",
"Color": "Couleur",
"Document properties": "Propri\u00e9t\u00e9 du document",
"Image description": "Description de l'image",
"Image": "Image",
"Insert link": "Ins\u00e9rer un lien",
"Target": "Cible",
"Link": "Lien",
"Poster": "Publier",
"Media": "M\u00e9dia",
"Print": "Imprimer",
"Prev": "Pr\u00e9c ",
"Find and replace": "Trouver et remplacer",
"Whole words": "Mots entiers",
"Insert template": "Ajouter un th\u00e8me"
});js/tinymce/langs/vi.js000064400000046017151727150320010723 0ustar00tinymce.addI18n('vi',{
"Redo": "L\u00e0m l\u1ea1i",
"Undo": "H\u1ee7y thao t\u00e1c",
"Cut": "C\u1eaft",
"Copy": "Sao ch\u00e9p",
"Paste": "D\u00e1n",
"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
"Ok": "\u0110\u1ed3ng \u00dd",
"Cancel": "Hu\u1ef7 B\u1ecf",
"Visual aids": "M\u1edf khung so\u1ea1n th\u1ea3o",
"Bold": "In \u0111\u1eadm",
"Italic": "In nghi\u00eang",
"Underline": "G\u1ea1ch d\u01b0\u1edbi",
"Strikethrough": "G\u1ea1ch ngang",
"Superscript": "K\u00fd t\u1ef1 m\u0169",
"Subscript": "K\u00fd t\u1ef1 th\u1ea5p",
"Clear formatting": "L\u01b0\u1ee3c b\u1ecf ph\u1ea7n hi\u1ec7u \u1ee9ng",
"Align left": "Canh tr\u00e1i",
"Align center": "Canh gi\u1eefa",
"Align right": "Canh ph\u1ea3i",
"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
"Bullet list": "Danh s\u00e1ch d\u1ea1ng bi\u1ec3u t\u01b0\u1ee3ng",
"Numbered list": "Danh s\u00e1ch d\u1ea1ng s\u1ed1",
"Decrease indent": "Th\u1ee5t l\u00f9i d\u00f2ng",
"Increase indent": "T\u0103ng kho\u1ea3ng c\u00e1ch d\u00f2ng",
"Close": "\u0110\u00f3ng L\u1ea1i",
"Formats": "\u0110\u1ecbnh d\u1ea1ng",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3 truy c\u1eadp truy c\u1eadp b\u1ed9 nh\u1edb \u1ea3o, vui l\u00f2ng s\u1eed d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p ph\u00edm Ctrl + X, C, V.",
"Headers": "\u0110\u1ea7u trang",
"Header 1": "Ti\u00eau \u0111\u1ec1 1",
"Header 2": "Ti\u00eau \u0111\u1ec1 2",
"Header 3": "Ti\u00eau \u0111\u1ec1 3",
"Header 4": "Ti\u00eau \u0111\u1ec1 4",
"Header 5": "Ti\u00eau \u0111\u1ec1 5",
"Header 6": "Ti\u00eau \u0111\u1ec1 6",
"Headings": "Ph\u1ea7n \u0111\u1ea7u",
"Heading 1": "H1",
"Heading 2": "H2",
"Heading 3": "H3",
"Heading 4": "H4",
"Heading 5": "H5",
"Heading 6": "G6",
"Preformatted": "\u0110\u1ecbnh d\u1ea1ng s\u1eb5n",
"Div": "Khung",
"Pre": "\u0110\u1ecbnh d\u1ea1ng",
"Code": "M\u00e3",
"Paragraph": "\u0110o\u1ea1n v\u0103n",
"Blockquote": "\u0110o\u1ea1n Tr\u00edch D\u1eabn",
"Inline": "C\u00f9ng d\u00f2ng",
"Blocks": "Bao",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Ch\u1ee9c n\u0103ng D\u00e1n \u0111ang trong tr\u1ea1ng th\u00e1i v\u0103n b\u1ea3n \u0111\u01a1n gi\u1ea3n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n d\u01b0\u1edbi d\u1ea1ng v\u0103n b\u1ea3n thu\u1ea7n, kh\u00f4ng c\u00f3 \u0111\u1ecbnh d\u1ea1ng.",
"Fonts": "Ph\u00f4ng ch\u1eef",
"Font Sizes": "C\u1ee1 ch\u1eef",
"Class": "L\u1edbp",
"Browse for an image": "Ch\u00e8n m\u1ed9t h\u00ecnh \u1ea3nh",
"OR": "HO\u1eb6C",
"Drop an image here": "Th\u1ea3 h\u00ecnh \u1ea3nh v\u00e0o \u0111\u00e2y",
"Upload": "T\u1ea3i l\u00ean",
"Block": "Kh\u1ed1i",
"Align": "Canh l\u1ec1",
"Default": "M\u1eb7c \u0111\u1ecbnh",
"Circle": "H\u00ecnh tr\u00f2n",
"Disc": "H\u00ecnh tr\u00f2n  d\u1ea1ng m\u1ecfng",
"Square": "\u00d4 vu\u00f4ng",
"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
"Upper Alpha": "K\u00fd t\u1ef1 hoa",
"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
"Anchor...": "Neo...",
"Name": "T\u00ean",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.",
"You have unsaved changes are you sure you want to navigate away?": "B\u1ea1n ch\u01b0a l\u01b0u thay \u0111\u1ed5i b\u1ea1n c\u00f3 ch\u1eafc b\u1ea1n mu\u1ed1n di chuy\u1ec3n \u0111i?",
"Restore last draft": "Kh\u00f4i ph\u1ee5c b\u1ea3n g\u1ea7n nh\u1ea5t",
"Special character...": "K\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t...",
"Source code": "M\u00e3 ngu\u1ed3n",
"Insert\/Edit code sample": "Ch\u00e8n\/S\u1eeda m\u00e3 m\u1eabu",
"Language": "Ng\u00f4n ng\u1eef",
"Code sample...": "Code sample...",
"Color Picker": "B\u1ea3ng ch\u1ecdn m\u00e0u",
"R": "M\u00e0u \u0111\u1ecf",
"G": "M\u00e0u xanh l\u00e1 c\u00e2y",
"B": "M\u00e0u xanh da tr\u1eddi",
"Left to right": "Tr\u00e1i sang ph\u1ea3i",
"Right to left": "Ph\u1ea3i sang tr\u00e1i",
"Emoticons...": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac...",
"Metadata and Document Properties": "Metadata v\u00e0 Thu\u1ed9c t\u00ednh v\u0103n b\u1ea3n",
"Title": "Ti\u00eau \u0111\u1ec1",
"Keywords": "T\u1eeb kh\u00f3a",
"Description": "M\u00f4 t\u1ea3",
"Robots": "Robots",
"Author": "T\u00e1c gi\u1ea3",
"Encoding": "M\u00e3 h\u00f3a",
"Fullscreen": "To\u00e0n m\u00e0n h\u00ecnh",
"Action": "H\u00e0nh \u0111\u1ed9ng",
"Shortcut": "L\u1ed1i t\u1eaft",
"Help": "Tr\u1ee3 gi\u00fap",
"Address": "\u0110\u1ecba ch\u1ec9",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Ch\u00e8n \u0111\u01b0\u1eddng d\u1eabn",
"Save (if save plugin activated)": "L\u01b0u",
"Find (if searchreplace plugin activated)": "T\u00ecm ki\u1ebfm",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "K\u1ebb ngang",
"Insert\/edit image": "Ch\u00e8n\/s\u1eeda \u1ea3nh",
"Image description": "M\u00f4 t\u1ea3 \u1ea3nh",
"Source": "Ngu\u1ed3n",
"Dimensions": "K\u00edch th\u01b0\u1edbc",
"Constrain proportions": "T\u1ef7 l\u1ec7 h\u1ea1n ch\u1ebf",
"General": "Chung",
"Advanced": "N\u00e2ng cao",
"Style": "Ki\u1ec3u",
"Vertical space": "N\u1eb1m d\u1ecdc",
"Horizontal space": "N\u1eb1m ngang",
"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
"Insert image": "Ch\u00e8n \u1ea3nh",
"Image...": "H\u00ecnh \u1ea3nh...",
"Image list": "Image list",
"Rotate counterclockwise": "Xoay tr\u00e1i",
"Rotate clockwise": "Xoay ph\u1ea3i",
"Flip vertically": "L\u1eadt d\u1ecdc",
"Flip horizontally": "L\u1eadt ngang",
"Edit image": "Ch\u1ec9nh s\u1eeda \u1ea3nh",
"Image options": "T\u00f9y ch\u1ecdn \u1ea3nh",
"Zoom in": "Thu nh\u1ecf",
"Zoom out": "Ph\u00f3ng to",
"Crop": "C\u1eaft \u1ea3nh",
"Resize": "Thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc",
"Orientation": "\u0110\u1ecbnh h\u01b0\u1edbng",
"Brightness": "\u0110\u1ed9 s\u00e1ng",
"Sharpen": "L\u00e0m s\u1eafc n\u00e9t",
"Contrast": "\u0110\u1ed9 t\u01b0\u01a1ng ph\u1ea3n",
"Color levels": "M\u1ee9c \u0111\u1ed9 m\u00e0u",
"Gamma": "M\u00e0u Gamma",
"Invert": "\u0110\u1ea3o ng\u01b0\u1ee3c",
"Apply": "\u00c1p d\u1ee5ng",
"Back": "Quay l\u1ea1i",
"Insert date\/time": "Ch\u00e8n ng\u00e0y\/th\u00e1ng",
"Date\/time": "Date\/time",
"Insert\/Edit Link": "Ch\u00e8n\/S\u1eeda li\u00ean k\u1ebft",
"Insert\/edit link": "Ch\u00e8n\/s\u1eeda li\u00ean k\u1ebft",
"Text to display": "N\u1ed9i dung hi\u1ec3n th\u1ecb",
"Url": "Url",
"Open link in...": "M\u1edf \u0111\u01b0\u1eddng d\u1eabn trong...",
"Current window": "C\u1eeda s\u1ed5 hi\u1ec7n t\u1ea1i",
"None": "Kh\u00f4ng",
"New window": "C\u1eeda s\u1ed5 m\u1edbi",
"Remove link": "B\u1ecf li\u00ean k\u1ebft",
"Anchors": "Neo",
"Link...": "\u0110\u01b0\u1eddng d\u1eabn...",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0110\u1ecba ch\u1ec9 URL b\u1ea1n v\u1eeba nh\u1eadp gi\u1ed1ng nh\u01b0 m\u1ed9t \u0111\u1ecba ch\u1ec9 email. B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 mailto: kh\u00f4ng?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0110\u1ecba ch\u1ec9 URL b\u1ea1n v\u1eeba nh\u1eadp gi\u1ed1ng nh\u01b0 m\u1ed9t li\u00ean k\u1ebft. B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 http:\/\/ kh\u00f4ng?",
"Link list": "Link list",
"Insert video": "Ch\u00e8n video",
"Insert\/edit video": "Ch\u00e8n\/s\u1eeda video",
"Insert\/edit media": "Insert\/edit media",
"Alternative source": "Ngu\u1ed3n thay th\u1ebf",
"Alternative source URL": "\u0110\u01b0\u1eddng d\u1eabn ngu\u1ed3n thay th\u1ebf",
"Media poster (Image URL)": "\u00c1p ph\u00edch \u0111a ph\u01b0\u01a1ng ti\u1ec7n (\u0110\u01b0\u1eddng d\u1eabn h\u00ecnh \u1ea3nh)",
"Paste your embed code below:": "D\u00e1n m\u00e3 nh\u00fang c\u1ee7a b\u1ea1n d\u01b0\u1edbi \u0111\u00e2y:",
"Embed": "Nh\u00fang",
"Media...": "\u0110a ph\u01b0\u01a1ng ti\u1ec7n...",
"Nonbreaking space": "Kh\u00f4ng xu\u1ed1ng h\u00e0ng",
"Page break": "Ng\u1eaft trang",
"Paste as text": "D\u00e1n \u0111o\u1ea1n v\u0103n b\u1ea3n",
"Preview": "Xem th\u1eed",
"Print...": "In...",
"Save": "L\u01b0u",
"Find": "T\u00ecm ki\u1ebfm",
"Replace with": "Thay th\u1ebf b\u1edfi",
"Replace": "Thay th\u1ebf",
"Replace all": "Thay t\u1ea5t c\u1ea3",
"Previous": "Tr\u01b0\u1edbc",
"Next": "K\u1ebf ti\u1ebfp",
"Find and replace...": "T\u00ecm v\u00e0 thay th\u1ebf...",
"Could not find the specified string.": "Kh\u00f4ng t\u00ecm th\u1ea5y chu\u1ed7i qui \u0111\u1ecbnh",
"Match case": "Tr\u01b0\u1eddng h\u1ee3p xem",
"Find whole words only": "Ch\u1ec9 t\u00ecm to\u00e0n b\u1ed9 t\u1eeb",
"Spell check": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
"Ignore": "B\u1ecf qua",
"Ignore all": "B\u1ecf qua t\u1ea5t",
"Finish": "Ho\u00e0n t\u1ea5t",
"Add to Dictionary": "Th\u00eam v\u00e0o t\u1eeb \u0111i\u1ec3n",
"Insert table": "Th\u00eam b\u1ea3ng",
"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
"Delete table": "Xo\u00e1 b\u1ea3ng",
"Cell": "\u00d4",
"Row": "D\u00f2ng",
"Column": "C\u1ed9t",
"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
"Merge cells": "Tr\u1ed9n \u00f4",
"Split cell": "Chia c\u1eaft \u00f4",
"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda tr\u00ean",
"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda d\u01b0\u1edbi",
"Delete row": "Xo\u00e1 d\u00f2ng",
"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
"Cut row": "C\u1eaft d\u00f2ng",
"Copy row": "Sao ch\u00e9p d\u00f2ng",
"Paste row before": "D\u00e1n v\u00e0o ph\u00eda tr\u01b0\u1edbc, tr\u00ean",
"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau, d\u01b0\u1edbi",
"Insert column before": "Th\u00eam c\u1ed9t b\u00ean tr\u00e1i",
"Insert column after": "Th\u00eam c\u1ed9t b\u00ean ph\u1ea3i",
"Delete column": "Xo\u00e1 c\u1ed9t",
"Cols": "C\u1ed9t",
"Rows": "D\u00f2ng",
"Width": "\u0110\u1ed9 R\u1ed9ng",
"Height": "\u0110\u1ed9 Cao",
"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
"Show caption": "Hi\u1ec7n ti\u00eau \u0111\u1ec1",
"Left": "Tr\u00e1i",
"Center": "Gi\u1eefa",
"Right": "Ph\u1ea3i",
"Cell type": "Lo\u1ea1i \u00f4",
"Scope": "Quy\u1ec1n",
"Alignment": "Canh ch\u1ec9nh",
"H Align": "L\u1ec1 ngang",
"V Align": "L\u1ec1 d\u1ecdc",
"Top": "Tr\u00ean",
"Middle": "Kho\u1ea3ng gi\u1eefa",
"Bottom": "D\u01b0\u1edbi",
"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
"Row group": "Gom nh\u00f3m d\u00f2ng",
"Column group": "Gom nh\u00f3m c\u1ed9t",
"Row type": "Th\u1ec3 lo\u1ea1i d\u00f2ng",
"Header": "Ti\u00eau \u0111\u1ec1",
"Body": "N\u1ed9i dung",
"Footer": "Ch\u00e2n",
"Border color": "M\u00e0u vi\u1ec1n",
"Insert template...": "Th\u00eam m\u1eabu...",
"Templates": "M\u1eabu",
"Template": "Template",
"Text color": "M\u00e0u v\u0103n b\u1ea3n",
"Background color": "M\u00e0u n\u1ec1n",
"Custom...": "Tu\u1ef3 ch\u1ec9nh...",
"Custom color": "Tu\u1ef3 ch\u1ec9nh m\u00e0u",
"No color": "Kh\u00f4ng c\u00f3 m\u00e0u",
"Remove color": "B\u1ecf m\u00e0u",
"Table of Contents": "Table of Contents",
"Show blocks": "Hi\u1ec3n th\u1ecb kh\u1ed1i",
"Show invisible characters": "Hi\u1ec3n th\u1ecb k\u00fd t\u1ef1 \u1ea9n",
"Word count": "S\u1ed1 t\u1eeb",
"Count": "\u0110\u1ebfm",
"Document": "T\u00e0i li\u1ec7u",
"Selection": "L\u1ef1a ch\u1ecdn",
"Words": "T\u1eeb",
"Words: {0}": "T\u1eeb: {0}",
"{0} words": "{0} words",
"File": "T\u1eadp tin",
"Edit": "S\u1eeda",
"Insert": "Ch\u00e8n",
"View": "Xem",
"Format": "\u0110\u1ecbnh d\u1ea1ng",
"Table": "B\u1ea3ng",
"Tools": "C\u00f4ng c\u1ee5",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. B\u1ea5m ALT-F9 m\u1edf menu. B\u1ea5m ALT-F10 m\u1edf thanh c\u00f4ng c\u1ee5. B\u1ea5m ALT-0 m\u1edf tr\u1ee3 gi\u00fap",
"Image title": "Ti\u00eau \u0111\u1ec1 \u1ea3nh",
"Border width": "\u0110\u1ed9 d\u00e0y vi\u1ec1n",
"Border style": "Ki\u1ec3u vi\u1ec1n",
"Error": "L\u1ed7i",
"Warn": "C\u1ea3nh b\u00e1o",
"Valid": "H\u1ee3p l\u1ec7",
"To open the popup, press Shift+Enter": "\u0110\u1ec3 m\u1edf h\u1ed9p tho\u1ea1i, nh\u1ea5n Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Khu v\u1ef1c Rich Text. Nh\u00e2n ALT-0 \u0111\u1ec3 bi\u1ebft th\u00eam.",
"System Font": "Ph\u00f4ng ch\u1eef h\u1ec7 th\u1ed1ng",
"Failed to upload image: {0}": "Kh\u00f4ng th\u1ec3 \u0111\u0103ng h\u00ecnh: {0}",
"Failed to load plugin: {0} from url {1}": "Kh\u00f4ng th\u1ec3 t\u1ea3i plugin: {0} t\u1eeb \u0111\u01b0\u1eddng d\u1eabn {1}",
"Failed to load plugin url: {0}": "Kh\u00f4ng th\u1ec3 t\u1ea3i \u0111\u01b0\u1eddng d\u1eabn plugin: {0}",
"Failed to initialize plugin: {0}": "Kh\u00f4ng th\u1ec3 kh\u1edfi t\u1ea1o plugin: {0}",
"example": "v\u00ed d\u1ee5",
"Search": "T\u00ecm ki\u1ebfm",
"All": "T\u1ea5t c\u1ea3",
"Currency": "Ti\u1ec1n t\u1ec7",
"Text": "V\u0103n b\u1ea3n",
"Quotations": "Tr\u00edch d\u1eabn",
"Mathematical": "Thu\u1ed9c v\u1ec1 to\u00e1n h\u1ecdc",
"Extended Latin": "Latin m\u1edf r\u1ed9ng",
"Symbols": "K\u00fd hi\u1ec7u",
"Arrows": "M\u0169i t\u00ean",
"User Defined": "\u0110\u1ecbnh ngh\u0129a b\u1edfi ng\u01b0\u1eddi d\u00f9ng",
"dollar sign": "\u00fd hi\u1ec7u \u0111\u00f4 la",
"currency sign": "\u00fd hi\u1ec7u ti\u1ec1n t\u1ec7",
"euro-currency sign": "k\u00fd hi\u1ec7u euro",
"colon sign": "d\u1ea5u hai ch\u1ea5m",
"cruzeiro sign": "k\u00fd hi\u1ec7u cruzeiro",
"french franc sign": "k\u00fd hi\u1ec7u franc Ph\u00e1p",
"lira sign": "\u00fd hi\u1ec7u lira",
"mill sign": "k\u00fd hi\u1ec7u mill",
"naira sign": "k\u00fd hi\u1ec7u naira",
"peseta sign": "k\u00fd hi\u1ec7u peseta",
"rupee sign": "k\u00fd hi\u1ec7u rupee",
"won sign": "k\u00fd hi\u1ec7u won",
"new sheqel sign": "k\u00fd hi\u1ec7u new sheqel",
"dong sign": "k\u00fd hi\u1ec7u \u0111\u00f2ng",
"kip sign": "k\u00fd hi\u1ec7u \u0111\u00f2ng kip",
"tugrik sign": "k\u00fd hi\u1ec7u tugrik",
"drachma sign": "k\u00fd hi\u1ec7u drachma",
"german penny symbol": "k\u00fd hi\u1ec7u xu \u0110\u1ee9c",
"peso sign": "k\u00fd hi\u1ec7u peso",
"guarani sign": "k\u00fd hi\u1ec7u guarani",
"austral sign": "k\u00fd hi\u1ec7u austral",
"hryvnia sign": "k\u00fd hi\u1ec7u hryvnia",
"cedi sign": "k\u00fd hi\u1ec7u cedi ",
"livre tournois sign": "k\u00fd hi\u1ec7u livre tournois",
"spesmilo sign": "k\u00fd hi\u1ec7u spesmilo",
"tenge sign": "K\u00fd hi\u1ec7u tenge",
"indian rupee sign": "k\u00fd hi\u1ec7u rupee \u1ea5n \u0111\u1ed9",
"turkish lira sign": "k\u00fd hi\u1ec7u lira th\u1ed5 nh\u0129 k\u1ef3",
"nordic mark sign": "k\u00fd hi\u1ec7u mark b\u1eafc \u00e2u",
"manat sign": "k\u00fd hi\u1ec7u manat",
"ruble sign": "k\u00fd hi\u1ec7u r\u00fap",
"yen character": "k\u00fd hi\u1ec7u y\u00ean",
"yuan character": "k\u00fd hi\u1ec7u yuan",
"yuan character, in hong kong and taiwan": "k\u00fd hi\u1ec7u yuan, \u1edf h\u1ed3ng k\u00f4ng v\u00e0 \u0111\u00e0i loan",
"yen\/yuan character variant one": "k\u00fd hi\u1ec7u y\u00ean\/yuan bi\u1ebfn th\u1ec3",
"Loading emoticons...": "\u0110ang t\u1ea3i bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac...",
"Could not load emoticons": "Kh\u00f4ng th\u1ec3 t\u1ea3i bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac",
"People": "Ng\u01b0\u1eddi",
"Animals and Nature": "\u0110\u1ed9ng v\u1eadt v\u00e0 thi\u00ean nhi\u00ean",
"Food and Drink": "Th\u1ee9c \u0103n v\u00e0 \u0111\u1ed3 u\u1ed1ng",
"Activity": "Ho\u1ea1t \u0111\u1ed9ng",
"Travel and Places": "Du l\u1ecbch v\u00e0 \u0111\u1ecba \u0111i\u1ec3m",
"Objects": "V\u1eadt d\u1ee5ng",
"Flags": "C\u1edd",
"Characters": "Nh\u00e2n v\u1eadt",
"Characters (no spaces)": "K\u00fd t\u1ef1 (kh\u00f4ng kho\u1ea3ng tr\u1ed1ng)",
"{0} characters": "{0} k\u00fd t\u1ef1",
"Error: Form submit field collision.": "L\u1ed7i: Xung \u0111\u1ed9t tr\u01b0\u1eddng trong bi\u1ec3u m\u1eabu.",
"Error: No form element found.": "L\u1ed7i: Kh\u00f4ng t\u00ecm th\u1ea5y bi\u1ec3u m\u1eabu.",
"Update": "C\u1eadp nh\u1eadt",
"Color swatch": "M\u1eabu m\u00e0u",
"Turquoise": "Ng\u1ecdc lam",
"Green": "Xanh l\u00e1",
"Blue": "Xanh d\u01b0\u01a1ng",
"Purple": "T\u00edm",
"Navy Blue": "Xanh n\u01b0\u1edbc bi\u1ec3n",
"Dark Turquoise": "Ng\u1ecdc lam t\u1ed1i",
"Dark Green": "Xanh l\u00e1 c\u00e2y \u0111\u1eadm",
"Medium Blue": "Xanh d\u01b0\u01a1ng nh\u1eb9",
"Medium Purple": "T\u00edm nh\u1eb9",
"Midnight Blue": "Xanh d\u01b0\u01a1ng n\u1eeda \u0111\u00eam",
"Yellow": "V\u00e0ng",
"Orange": "Cam",
"Red": "\u0110\u1ecf",
"Light Gray": "X\u00e1m nh\u1ea1t",
"Gray": "X\u00e1m",
"Dark Yellow": "V\u00e0ng \u0111\u1eadm",
"Dark Orange": "Cam \u0111\u1eadm",
"Dark Red": "\u0110\u1ecf \u0111\u1eadm",
"Medium Gray": "X\u00e1m nh\u1eb9",
"Dark Gray": "X\u00e1m \u0111\u1eadm",
"Light Green": "Xanh l\u00e1 nh\u1ea1t",
"Light Yellow": "V\u00e0ng nh\u1ea1t",
"Light Red": "\u0110\u1ecf nh\u1ea1t",
"Light Purple": "T\u00edm nh\u1ea1t",
"Light Blue": "Xanh d\u01b0\u01a1ng nh\u1ea1t",
"Dark Purple": "T\u00edm \u0111\u1eadm",
"Dark Blue": "Xanh d\u01b0\u01a1ng \u0111\u1eadm",
"Black": "\u0110en",
"White": "Tr\u1eafng",
"Switch to or from fullscreen mode": "Chuy\u1ec3n qua ho\u1eb7c l\u1ea1i ch\u1ebf \u0111\u1ed9 to\u00e0n m\u00e0n h\u00ecnh",
"Open help dialog": "M\u1edf h\u1ed9p tho\u1ea1i tr\u1ee3 gi\u00fap",
"history": "l\u1ecbch s\u1eed",
"styles": "ki\u1ec3u",
"formatting": "\u0111\u1ecbnh d\u1ea1ng",
"alignment": "canh l\u1ec1",
"indentation": "th\u1ee5t \u0111\u1ea7u d\u00f2ng",
"permanent pen": "b\u00fat d\u1ea7u",
"comments": "b\u00ecnh lu\u1eadn...",
"Format Painter": "Sao ch\u00e9p \u0111\u1ecbnh d\u1ea1ng",
"Insert\/edit iframe": "Ch\u00e8n\/s\u1eeda iframe",
"Capitalization": "Ch\u1eef hoa",
"lowercase": "ch\u1eef th\u01b0\u1eddng",
"UPPERCASE": "VI\u1ebeT HOA",
"Title Case": "D\u1ea1ng ti\u00eau \u0111\u1ec1",
"Permanent Pen Properties": "Thu\u1ed9c t\u00ednh b\u00fat",
"Permanent pen properties...": "Thu\u1ed9c t\u00ednh b\u00fat...",
"Font": "Ph\u00f4ng ch\u1eef",
"Size": "K\u00edch th\u01b0\u1edbc",
"More...": "Th\u00eam...",
"Spellcheck Language": "Ng\u00f4n ng\u1eef ch\u00ednh t\u1ea3",
"Select...": "Ch\u1ecdn...",
"Preferences": "T\u00f9y ch\u1ecdn",
"Yes": "C\u00f3",
"No": "Kh\u00f4ng",
"Keyboard Navigation": "Ph\u00edm \u0111i\u1ec1u h\u01b0\u1edbng",
"Version": "Phi\u00ean b\u1ea3n",
"Anchor": "Neo",
"Special character": "K\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t",
"Code sample": "M\u00e3 m\u1eabu",
"Color": "M\u00e0u s\u1eafc",
"Emoticons": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac",
"Document properties": "Thu\u1ed9c t\u00ednh t\u00e0i li\u1ec7u",
"Image": "Image",
"Insert link": "Ch\u00e8n li\u00ean k\u1ebft",
"Target": "\u0110\u00edch",
"Link": "Link",
"Poster": "Ng\u01b0\u1eddi g\u1eedi",
"Media": "Media",
"Print": "In",
"Prev": "Tr\u01b0\u1edbc",
"Find and replace": "T\u00ecm v\u00e0 thay th\u1ebf",
"Whole words": "To\u00e0n b\u1ed9 t\u1eeb",
"Spellcheck": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
"Caption": "Ti\u00eau \u0111\u1ec1",
"Insert template": "Th\u00eam m\u1eabu"
});js/tinymce/langs/pl.js000064400000044377151727150320010727 0ustar00tinymce.addI18n('pl',{
"Redo": "Powt\u00f3rz",
"Undo": "Cofnij",
"Cut": "Wytnij",
"Copy": "Kopiuj",
"Paste": "Wklej",
"Select all": "Zaznacz wszystko",
"New document": "Nowy dokument",
"Ok": "Ok",
"Cancel": "Anuluj",
"Visual aids": "Pomoce wizualne",
"Bold": "Pogrubienie",
"Italic": "Kursywa",
"Underline": "Podkre\u015blenie",
"Strikethrough": "Przekre\u015blenie",
"Superscript": "Indeks g\u00f3rny",
"Subscript": "Indeks dolny",
"Clear formatting": "Wyczy\u015b\u0107 formatowanie",
"Align left": "Wyr\u00f3wnaj do lewej",
"Align center": "Wyr\u00f3wnaj do \u015brodka",
"Align right": "Wyr\u00f3wnaj do prawej",
"Justify": "Wyjustuj",
"Bullet list": "Lista wypunktowana",
"Numbered list": "Lista numerowana",
"Decrease indent": "Zmniejsz wci\u0119cie",
"Increase indent": "Zwi\u0119ksz wci\u0119cie",
"Close": "Zamknij",
"Formats": "Formaty",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.",
"Headers": "Nag\u0142\u00f3wki",
"Header 1": "Nag\u0142\u00f3wek 1",
"Header 2": "Nag\u0142\u00f3wek 2",
"Header 3": "Nag\u0142\u00f3wek 3",
"Header 4": "Nag\u0142\u00f3wek 4",
"Header 5": "Nag\u0142\u00f3wek 5",
"Header 6": "Nag\u0142\u00f3wek 6",
"Headings": "Nag\u0142\u00f3wki",
"Heading 1": "Nag\u0142\u00f3wek 1",
"Heading 2": "Nag\u0142\u00f3wek 2",
"Heading 3": "Nag\u0142\u00f3wek 3",
"Heading 4": "Nag\u0142\u00f3wek 4",
"Heading 5": "Nag\u0142\u00f3wek 5",
"Heading 6": "Nag\u0142\u00f3wek 6",
"Preformatted": "Wst\u0119pne formatowanie",
"Div": "Div",
"Pre": "Pre",
"Code": "Kod",
"Paragraph": "Akapit",
"Blockquote": "Blok cytatu",
"Inline": "W tek\u015bcie",
"Blocks": "Bloki",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Wklejanie jest w trybie tekstowym. Zawarto\u015b\u0107 zostanie wklejona jako zwyk\u0142y tekst dop\u00f3ki nie wy\u0142\u0105czysz tej opcji.",
"Fonts": "Fonty",
"Font Sizes": "Rozmiar fontu",
"Class": "Klasa",
"Browse for an image": "Przegl\u0105daj za zdj\u0119ciem",
"OR": "LUB",
"Drop an image here": "Upu\u015b\u0107 obraz tutaj",
"Upload": "Prze\u015blij",
"Block": "Zablokuj",
"Align": "Wyr\u00f3wnaj",
"Default": "Domy\u015blne",
"Circle": "K\u00f3\u0142ko",
"Disc": "Dysk",
"Square": "Kwadrat",
"Lower Alpha": "Ma\u0142e litery",
"Lower Greek": "Ma\u0142e greckie",
"Lower Roman": "Ma\u0142e rzymskie",
"Upper Alpha": "Wielkie litery",
"Upper Roman": "Wielkie rzymskie",
"Anchor...": "Kotwica...",
"Name": "Nazwa",
"Id": "Identyfikator",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Identyfikator powinien zaczyna\u0107 si\u0119 liter\u0105, dozwolone s\u0105 tylko litery, numery, uko\u015bniki, kropki, dwukropki i podkre\u015blniki - tzw. pod\u0142ogi",
"You have unsaved changes are you sure you want to navigate away?": "Masz niezapisane zmiany. Czy na pewno chcesz opu\u015bci\u0107 stron\u0119?",
"Restore last draft": "Przywr\u00f3\u0107 ostatni szkic",
"Special character...": "Znak specjalny...",
"Source code": "Kod \u017ar\u00f3d\u0142owy",
"Insert\/Edit code sample": "Dodaj\/Edytuj przyk\u0142adowy kod",
"Language": "J\u0119zyk",
"Code sample...": "Przyk\u0142ad kodu...",
"Color Picker": "Selektor kolor\u00f3w",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Od lewej do prawej",
"Right to left": "Od prawej do lewej",
"Emoticons": "Ikony emocji",
"Emoticons...": "Emotikony...",
"Metadata and Document Properties": "Metadane i w\u0142a\u015bciwo\u015bci dokumentu",
"Title": "Tytu\u0142",
"Keywords": "S\u0142owa kluczowe",
"Description": "Opis",
"Robots": "Roboty",
"Author": "Autor",
"Encoding": "Kodowanie",
"Fullscreen": "Pe\u0142ny ekran",
"Action": "Akcja",
"Shortcut": "Skr\u00f3t",
"Help": "Pomoc",
"Address": "Adres",
"Focus to menubar": "Skup si\u0119 na pasku menu",
"Focus to toolbar": "Skupi\u0107 si\u0119 na pasku",
"Focus to element path": "Skup si\u0119 na \u015bcie\u017cce elementu",
"Focus to contextual toolbar": "Skupi\u0107 si\u0119 na pasku narz\u0119dzi kontekstowych",
"Insert link (if link plugin activated)": "Wstaw \u0142\u0105cze (je\u015bli w\u0142\u0105czysz wtyczk\u0119 link\u00f3w)",
"Save (if save plugin activated)": "Zapisz (je\u015bli aktywowana jest wtyczka do zapisu)",
"Find (if searchreplace plugin activated)": "Znajd\u017a (je\u015bli w\u0142\u0105czysz wtyczk\u0119 do wyszukiwania)",
"Plugins installed ({0}):": "Zainstalowane wtyczki ({0}):",
"Premium plugins:": "Wtyczki Premium:",
"Learn more...": "Dowiedz si\u0119 wi\u0119cej...",
"You are using {0}": "U\u017cywasz {0}",
"Plugins": "Pluginy",
"Handy Shortcuts": "Przydatne skr\u00f3ty",
"Horizontal line": "Pozioma linia",
"Insert\/edit image": "Wstaw\/edytuj obrazek",
"Alternative description": "Alternatywny opis",
"Accessibility": "Dost\u0119pno\u015b\u0107",
"Image is decorative": "Obraz jest dekoracyjny",
"Source": "\u0179r\u00f3d\u0142o",
"Dimensions": "Wymiary",
"Constrain proportions": "Zachowaj proporcje",
"General": "Og\u00f3lne",
"Advanced": "Zaawansowane",
"Style": "Styl",
"Vertical space": "Odst\u0119p pionowy",
"Horizontal space": "Odst\u0119p poziomy",
"Border": "Ramka",
"Insert image": "Wstaw obrazek",
"Image...": "Obraz...",
"Image list": "Lista obrazk\u00f3w",
"Rotate counterclockwise": "Obr\u00f3\u0107 w lewo",
"Rotate clockwise": "Obr\u00f3\u0107 w prawo",
"Flip vertically": "Przerzu\u0107 w pionie",
"Flip horizontally": "Przerzu\u0107 w poziomie",
"Edit image": "Edytuj obrazek",
"Image options": "Opcje obrazu",
"Zoom in": "Powi\u0119ksz",
"Zoom out": "Pomniejsz",
"Crop": "Przytnij",
"Resize": "Zmiana rozmiaru",
"Orientation": "Orientacja",
"Brightness": "Jasno\u015b\u0107",
"Sharpen": "Wyostrz",
"Contrast": "Kontrast",
"Color levels": "Poziom koloru",
"Gamma": "Gamma",
"Invert": "Odwr\u00f3\u0107",
"Apply": "Zaakceptuj",
"Back": "Cofnij",
"Insert date\/time": "Wstaw dat\u0119\/czas",
"Date\/time": "Data\/Czas",
"Insert\/edit link": "Wstaw\/edytuj \u0142\u0105cze",
"Text to display": "Tekst do wy\u015bwietlenia",
"Url": "URL",
"Open link in...": "Otw\u00f3rz \u0142\u0105cze w...",
"Current window": "Bie\u017c\u0105ce okno",
"None": "\u017baden",
"New window": "Nowe okno",
"Open link": "Otw\u00f3rz \u0142\u0105cze",
"Remove link": "Usu\u0144 \u0142\u0105cze",
"Anchors": "Kotwice",
"Link...": "\u0141\u0105cze...",
"Paste or type a link": "Wklej lub wpisz adres \u0142\u0105cza",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na adres e-mail. Czy chcesz doda\u0107 mailto: jako prefiks?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na link zewn\u0119trzny. Czy chcesz doda\u0107 http:\/\/ jako prefiks?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Wprowadzony przez Ciebie adres URL wydaje si\u0119 by\u0107 \u0142\u0105czem zewn\u0119trznym. Czy chcesz doda\u0107 wymagany prefiks https:\/\/?",
"Link list": "Lista link\u00f3w",
"Insert video": "Wstaw wideo",
"Insert\/edit video": "Wstaw\/edytuj wideo",
"Insert\/edit media": "Wstaw\/Edytuj media",
"Alternative source": "Alternatywne \u017ar\u00f3d\u0142o",
"Alternative source URL": "Alternatywny URL \u017ar\u00f3d\u0142a",
"Media poster (Image URL)": "Plakat (URL obrazu)",
"Paste your embed code below:": "Wklej tutaj kod do osadzenia:",
"Embed": "Osad\u017a",
"Media...": "Multimedia...",
"Nonbreaking space": "Nie\u0142amliwa spacja",
"Page break": "Podzia\u0142 strony",
"Paste as text": "Wklej jako zwyk\u0142y tekst",
"Preview": "Podgl\u0105d",
"Print...": "Drukuj...",
"Save": "Zapisz",
"Find": "Znajd\u017a",
"Replace with": "Zamie\u0144 na",
"Replace": "Zamie\u0144",
"Replace all": "Zamie\u0144 wszystko",
"Previous": "Poprzedni",
"Next": "Nast.",
"Find and Replace": "Znajd\u017a i Zamie\u0144",
"Find and replace...": "Znajd\u017a i zamie\u0144...",
"Could not find the specified string.": "Nie znaleziono szukanego tekstu.",
"Match case": "Dopasuj wielko\u015b\u0107 liter",
"Find whole words only": "Znajd\u017a tylko ca\u0142e wyrazy",
"Find in selection": "Znajd\u017a w zaznaczeniu",
"Spellcheck": "Sprawdzanie pisowni",
"Spellcheck Language": "J\u0119zyk sprawdzania pisowni",
"No misspellings found.": "Brak b\u0142\u0119d\u00f3w pisowni",
"Ignore": "Ignoruj",
"Ignore all": "Ignoruj wszystko",
"Finish": "Zako\u0144cz",
"Add to Dictionary": "Dodaj do s\u0142ownika",
"Insert table": "Wstaw tabel\u0119",
"Table properties": "W\u0142a\u015bciwo\u015bci tabeli",
"Delete table": "Usu\u0144 tabel\u0119",
"Cell": "Kom\u00f3rka",
"Row": "Wiersz",
"Column": "Kolumna",
"Cell properties": "W\u0142a\u015bciwo\u015bci kom\u00f3rki",
"Merge cells": "\u0141\u0105cz kom\u00f3rki",
"Split cell": "Podziel kom\u00f3rk\u0119",
"Insert row before": "Wstaw wiersz przed",
"Insert row after": "Wstaw wiersz po",
"Delete row": "Usu\u0144 wiersz",
"Row properties": "W\u0142a\u015bciwo\u015bci wiersza",
"Cut row": "Wytnij wiersz",
"Copy row": "Kopiuj wiersz",
"Paste row before": "Wklej wiersz przed",
"Paste row after": "Wklej wiersz po",
"Insert column before": "Wstaw kolumn\u0119 przed",
"Insert column after": "Wstaw kolumn\u0119 po",
"Delete column": "Usu\u0144 kolumn\u0119",
"Cols": "Kol.",
"Rows": "Wiersz.",
"Width": "Szeroko\u015b\u0107",
"Height": "Wysoko\u015b\u0107",
"Cell spacing": "Odst\u0119py kom\u00f3rek",
"Cell padding": "Dope\u0142nienie kom\u00f3rki",
"Caption": "Tytu\u0142",
"Show caption": "Poka\u017c podpis",
"Left": "Lewo",
"Center": "\u015arodek",
"Right": "Prawo",
"Cell type": "Typ kom\u00f3rki",
"Scope": "Kontekst",
"Alignment": "Wyr\u00f3wnanie",
"H Align": "Wyr\u00f3wnanie w pionie",
"V Align": "Wyr\u00f3wnanie w poziomie",
"Top": "G\u00f3ra",
"Middle": "\u015arodek",
"Bottom": "D\u00f3\u0142",
"Header cell": "Kom\u00f3rka nag\u0142\u00f3wka",
"Row group": "Grupa wierszy",
"Column group": "Grupa kolumn",
"Row type": "Typ wiersza",
"Header": "Nag\u0142\u00f3wek",
"Body": "Tre\u015b\u0107",
"Footer": "Stopka",
"Border color": "Kolor ramki",
"Insert template...": "Wstaw szablon...",
"Templates": "Szablony",
"Template": "Szablon",
"Text color": "Kolor tekstu",
"Background color": "Kolor t\u0142a",
"Custom...": "Niestandardowy...",
"Custom color": "Kolor niestandardowy",
"No color": "Bez koloru",
"Remove color": "Usu\u0144 kolor",
"Table of Contents": "Spis tre\u015bci",
"Show blocks": "Poka\u017c bloki",
"Show invisible characters": "Poka\u017c niewidoczne znaki",
"Word count": "Liczba s\u0142\u00f3w",
"Count": "Liczba",
"Document": "Dokument",
"Selection": "Zaznaczenie",
"Words": "S\u0142owa",
"Words: {0}": "S\u0142\u00f3w: {0}",
"{0} words": "{0} s\u0142\u00f3w",
"File": "Plik",
"Edit": "Edycja",
"Insert": "Wstaw",
"View": "Widok",
"Format": "Format",
"Table": "Tabela",
"Tools": "Narz\u0119dzia",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Obszar Edycji. ALT-F9 - menu. ALT-F10 - pasek narz\u0119dzi. ALT-0 - pomoc",
"Image title": "Tytu\u0142 obrazu",
"Border width": "Grubo\u015b\u0107 ramki",
"Border style": "Styl ramki",
"Error": "B\u0142\u0105d",
"Warn": "Ostrze\u017cenie",
"Valid": "Prawid\u0142owe",
"To open the popup, press Shift+Enter": "Aby otworzy\u0107 okienko, naci\u015bnij Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Obszar tekstu sformatowanego. Naci\u015bnij ALT-0, aby uzyska\u0107 pomoc.",
"System Font": "Font systemowy",
"Failed to upload image: {0}": "Nie uda\u0142o si\u0119 przes\u0142a\u0107 obrazu: {0}",
"Failed to load plugin: {0} from url {1}": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 dodatku: {0} spod adresu url {1}",
"Failed to load plugin url: {0}": "Nie uda\u0142o si\u0119 za\u0142adowa\u0107 adresu url dodatku: {0}",
"Failed to initialize plugin: {0}": "Nie mo\u017cna zainicjowa\u0107 dodatku: {0}",
"example": "przyk\u0142ad",
"Search": "Wyszukaj",
"All": "Wszystkie",
"Currency": "Waluta",
"Text": "Tekst",
"Quotations": "Cudzys\u0142owy",
"Mathematical": "Matematyczne",
"Extended Latin": "Rozszerzony \u0142aci\u0144ski",
"Symbols": "Symbole",
"Arrows": "Strza\u0142ki",
"User Defined": "W\u0142asny",
"dollar sign": "znak dolara",
"currency sign": "znak waluty",
"euro-currency sign": "znak euro",
"colon sign": "znak colon",
"cruzeiro sign": "znak cruzeiro",
"french franc sign": "znak franka francuskiego",
"lira sign": "znak liry",
"mill sign": "znak mill",
"naira sign": "znak nairy",
"peseta sign": "znak pesety",
"rupee sign": "znak rupii",
"won sign": "znak wona",
"new sheqel sign": "znak nowego szekla",
"dong sign": "znak donga",
"kip sign": "znak kipa",
"tugrik sign": "znak tugrika",
"drachma sign": "znak drachmy",
"german penny symbol": "znak feniga",
"peso sign": "znak peso",
"guarani sign": "znak guarani",
"austral sign": "znak australa",
"hryvnia sign": "znak hrywny",
"cedi sign": "znak cedi",
"livre tournois sign": "znak livre tournois",
"spesmilo sign": "znak spesmilo",
"tenge sign": "znak tenge",
"indian rupee sign": "znak rupii indyjskiej",
"turkish lira sign": "znak liry tureckiej",
"nordic mark sign": "znak nordic mark",
"manat sign": "znak manata",
"ruble sign": "znak rubla",
"yen character": "znak jena",
"yuan character": "znak juana",
"yuan character, in hong kong and taiwan": "znak juana w Hongkongu i na Tajwanie",
"yen\/yuan character variant one": "jen\/juan, wariant pierwszy",
"Loading emoticons...": "\u0141adowanie emotikon\u00f3w...",
"Could not load emoticons": "Nie mo\u017cna za\u0142adowa\u0107 emotikon\u00f3w",
"People": "Ludzie",
"Animals and Nature": "Zwierz\u0119ta i natura",
"Food and Drink": "Jedzenie i picie",
"Activity": "Aktywno\u015b\u0107",
"Travel and Places": "Podr\u00f3\u017ce i miejsca",
"Objects": "Obiekty",
"Flags": "Flagi",
"Characters": "Znaki",
"Characters (no spaces)": "Znaki (bez spacji)",
"{0} characters": "{0} znak\u00f3w",
"Error: Form submit field collision.": "B\u0142\u0105d: kolizja pola przesy\u0142ania formularza.",
"Error: No form element found.": "B\u0142\u0105d: nie znaleziono elementu formularza.",
"Update": "Aktualizuj",
"Color swatch": "Pr\u00f3bka koloru",
"Turquoise": "Turkusowy",
"Green": "Zielony",
"Blue": "Niebieski",
"Purple": "Purpurowy",
"Navy Blue": "Ciemnoniebieski",
"Dark Turquoise": "Ciemnoturkusowy",
"Dark Green": "Ciemnozielony",
"Medium Blue": "\u015arednioniebieski",
"Medium Purple": "\u015aredniopurpurowy",
"Midnight Blue": "Nocny b\u0142\u0119kit",
"Yellow": "\u017b\u00f3\u0142ty",
"Orange": "Pomara\u0144czowy",
"Red": "Czerwony",
"Light Gray": "Jasnoszary",
"Gray": "Szary",
"Dark Yellow": "Ciemno\u017c\u00f3\u0142ty",
"Dark Orange": "Ciemnopomara\u0144czowy",
"Dark Red": "Ciemnoczerwony",
"Medium Gray": "\u015arednioszary",
"Dark Gray": "Ciemnoszary",
"Light Green": "Jasnozielony",
"Light Yellow": "Jasno\u017c\u00f3\u0142ty",
"Light Red": "Jasnoczerwony",
"Light Purple": "Jasnopurpurowy",
"Light Blue": "Jasnoniebieski",
"Dark Purple": "Ciemnopurpurowy",
"Dark Blue": "Ciemnoniebieski",
"Black": "Czarny",
"White": "Bia\u0142y",
"Switch to or from fullscreen mode": "W\u0142\u0105cz lub wy\u0142\u0105cz tryb pe\u0142noekranowy",
"Open help dialog": "Otw\u00f3rz okno dialogowe pomocy",
"history": "historia",
"styles": "style",
"formatting": "formatowanie",
"alignment": "wyr\u00f3wnanie",
"indentation": "wci\u0119cie",
"Font": "Font",
"Size": "Rozmiar",
"More...": "Wi\u0119cej...",
"Select...": "Wybierz...",
"Preferences": "Ustawienia",
"Yes": "Tak",
"No": "Nie",
"Keyboard Navigation": "Nawigacja za pomoc\u0105 klawiatury",
"Version": "Wersja",
"Code view": "Widok kodu",
"Open popup menu for split buttons": "Otw\u00f3rz menu podr\u0119czne dla przycisk\u00f3w",
"List Properties": "Ustawienia Listy",
"List properties...": "Ustawienia listy...",
"Start list at number": "Rozpocznij numeracj\u0119 od",
"Line height": "Wysoko\u015b\u0107 Linii",
"comments": "komentarze",
"Format Painter": "Malarz format\u00f3w",
"Insert\/edit iframe": "Wstaw\/edytuj iframe",
"Capitalization": "Jak w zdaniu",
"lowercase": "ma\u0142e litery",
"UPPERCASE": "WIELKIE LITERY",
"Title Case": "Jak Nazwy W\u0142asne",
"permanent pen": "marker",
"Permanent Pen Properties": "W\u0142a\u015bciwo\u015bci markera",
"Permanent pen properties...": "W\u0142a\u015bciwo\u015bci markera...",
"case change": "Zmie\u0144 wielko\u015b\u0107",
"page embed": "strona osadzona",
"Advanced sort...": "Sortowanie zaawansowane...",
"Advanced Sort": "Sortowanie Zaawansowane",
"Sort table by column ascending": "Sortuj tabel\u0119 po kolumnie rosn\u0105co",
"Sort table by column descending": "Sortuj tabel\u0119 po kolumnie malej\u0105co",
"Sort": "Sortuj",
"Order": "Kolejno\u015b\u0107",
"Sort by": "Sortuj wed\u0142ug",
"Ascending": "Rosn\u0105co",
"Descending": "Malej\u0105co",
"Column {0}": "Kolumna {0}",
"Row {0}": "Wiersz {0}",
"Spellcheck...": "Sprawd\u017a pisowni\u0119...",
"Misspelled word": "B\u0142\u0119dna pisownia",
"Suggestions": "Sugestie",
"Change": "Zmie\u0144",
"Finding word suggestions": "Wyszukiwanie propozycji s\u0142\u00f3w",
"Success": "Sukces",
"Repair": "Napraw",
"Issue {0} of {1}": "Problem {0} z {1}",
"Images must be marked as decorative or have an alternative text description": "Obrazy musz\u0105 by\u0107 oznaczone jako dekoracyjne lub posiada\u0107 alternatywny opis tekstowy.",
"Images must have an alternative text description. Decorative images are not allowed.": "Obrazki musz\u0105 mie\u0107 tekst alternatywny. Dekoracyjne obrazy nie s\u0105 dozwolone.",
"Or provide alternative text:": "lub dodaj tekst alternatywny:",
"Make image decorative:": "Uczy\u0144 obraz dekoracyjnym:",
"ID attribute must be unique": "ID atrybutu musi by\u0107 unikalny",
"Make ID unique": "Utw\u00f3rz unikalny ID",
"Keep this ID and remove all others": "Zachowaj to ID oraz usu\u0144 inne",
"Remove this ID": "Usu\u0144 to ID",
"Remove all IDs": "Usu\u0144 wszystkie ID",
"Checklist": "Checklista",
"Anchor": "Kotwica",
"Special character": "Znak specjalny",
"Code sample": "Przyk\u0142ad kodu \u017ar\u00f3d\u0142owego",
"Color": "Kolor",
"Document properties": "W\u0142a\u015bciwo\u015bci dokumentu",
"Image description": "Opis obrazka",
"Image": "Obraz",
"Insert link": "Wstaw \u0142\u0105cze",
"Target": "Cel",
"Link": "Adres \u0142\u0105cza",
"Poster": "Plakat",
"Media": "Media",
"Print": "Drukuj",
"Prev": "Poprz.",
"Find and replace": "Znajd\u017a i zamie\u0144",
"Whole words": "Ca\u0142e s\u0142owa",
"Insert template": "Wstaw szablon"
});js/tinymce/langs/az.js000064400000031211151727150320010705 0ustar00tinymce.addI18n('az',{
"Redo": "\u0130r\u0259li",
"Undo": "Geriy\u0259",
"Cut": "K\u0259s",
"Copy": "K\u00f6\u00e7\u00fcr",
"Paste": "\u018flav\u0259 et",
"Select all": "Ham\u0131s\u0131n\u0131 se\u00e7",
"New document": "Yeni s\u0259n\u0259d",
"Ok": "Oldu",
"Cancel": "L\u0259\u011fv et",
"Visual aids": "Konturlar\u0131 g\u00f6st\u0259r",
"Bold": "Qal\u0131n",
"Italic": "Maili",
"Underline": "Alt x\u0259ttli",
"Strikethrough": "Silinmi\u015f",
"Superscript": "Yuxar\u0131 indeks",
"Subscript": "A\u015fa\u011f\u0131 indeks",
"Clear formatting": "Format\u0131 t\u0259mizl\u0259",
"Align left": "Sol t\u0259r\u0259f \u00fczr\u0259",
"Align center": "M\u0259rk\u0259z \u00fczr\u0259",
"Align right": "Sa\u011f t\u0259r\u0259f \u00fczr\u0259",
"Justify": "H\u0259r iki t\u0259r\u0259f \u00fczr\u0259",
"Bullet list": "S\u0131ras\u0131z siyah\u0131",
"Numbered list": "N\u00f6mr\u0259l\u0259nmi\u015f siyah\u0131",
"Decrease indent": "Bo\u015flu\u011fu azalt",
"Increase indent": "Bo\u015flu\u011fu art\u0131r",
"Close": "Ba\u011fla",
"Formats": "Formatlar",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Sizin brauzeriniz m\u00fcbadil\u0259 buferin\u0259 birba\u015fa yolu d\u0259st\u0259kl\u0259mir. Z\u0259hm\u0259t olmasa, bunun yerin\u0259 klaviaturan\u0131n Ctrl+X\/C\/V d\u00fcym\u0259l\u0259rind\u0259n istifad\u0259 edin.",
"Headers": "Ba\u015fl\u0131qlar",
"Header 1": "Ba\u015fl\u0131q 1",
"Header 2": "Ba\u015fl\u0131q 2",
"Header 3": "Ba\u015fl\u0131q 3",
"Header 4": "Ba\u015fl\u0131q 4",
"Header 5": "Ba\u015fl\u0131q 5",
"Header 6": "Ba\u015fl\u0131q 6",
"Headings": "Ba\u015fl\u0131qlar",
"Heading 1": "Ba\u015fl\u0131q 1",
"Heading 2": "Ba\u015fl\u0131q 2",
"Heading 3": "Ba\u015fl\u0131q 3",
"Heading 4": "Ba\u015fl\u0131q 4",
"Heading 5": "Ba\u015fl\u0131q 5",
"Heading 6": "Ba\u015fl\u0131q 6",
"Preformatted": "\u018fvv\u0259lc\u0259d\u0259n formatland\u0131r\u0131lm\u0131\u015f",
"Div": "Div",
"Pre": "Pre",
"Code": "Kod",
"Paragraph": "Paraqraf",
"Blockquote": "Sitat",
"Inline": "S\u0259tir i\u00e7i",
"Blocks": "Bloklar",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Hal-haz\u0131rda adi m\u0259tn rejimind\u0259 yerl\u0259\u015fdirilir. M\u0259zmun sad\u0259 m\u0259tn \u015f\u0259klind\u0259 yerl\u0259\u015fdiril\u0259c\u0259k, h\u0259l\u0259 bu se\u00e7imi d\u0259yi\u015fdirm\u0259.",
"Font Family": "Font stili",
"Font Sizes": "Font \u00f6l\u00e7\u00fcl\u0259ri",
"Class": "Sinif",
"Browse for an image": "\u015e\u0259kil se\u00e7",
"OR": "V\u018f YA",
"Drop an image here": "\u015e\u0259kli buraya s\u00fcr\u00fckl\u0259yin",
"Upload": "Y\u00fckl\u0259",
"Block": "Blokla",
"Align": "D\u00fczl\u0259ndir",
"Default": "Susmaya g\u00f6r\u0259",
"Circle": "Dair\u0259",
"Disc": "Disk",
"Square": "Sah\u0259",
"Lower Alpha": "Ki\u00e7ik Alfa \u0259lifbas\u0131",
"Lower Greek": "Ki\u00e7ik Yunan \u0259lifbas\u0131",
"Lower Roman": "Ki\u00e7ik Roma \u0259lifbas\u0131",
"Upper Alpha": "B\u00f6y\u00fck Alfa \u0259lifbas\u0131",
"Upper Roman": "B\u00f6y\u00fck Roma \u0259lifbas\u0131",
"Anchor": "L\u00f6vb\u0259r",
"Name": "Ad",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u0130D h\u0259rfl\u0259 ba\u015flamal\u0131d\u0131r. Daha sonra is\u0259 h\u0259rf, r\u0259q\u0259m, tire, n\u00f6qt\u0259, qo\u015fan\u00f6qt\u0259, v\u0259 altx\u0259tt kimi simvollardan istifad\u0259 oluna bil\u0259r.",
"You have unsaved changes are you sure you want to navigate away?": "Sizd\u0259 yadda saxlan\u0131lmayan d\u0259yi\u015fiklikl\u0259r var \u0259minsiniz ki, getm\u0259k ist\u0259yirsiniz?",
"Restore last draft": "Son layih\u0259nin b\u0259rpas\u0131",
"Special character": "X\u00fcsusi simvollar",
"Source code": "M\u0259nb\u0259 kodu",
"Insert\/Edit code sample": "Kod n\u00fcmun\u0259sin\u0259 \u0259lav\u0259\/d\u00fcz\u0259li\u015f et",
"Language": "Dil",
"Code sample": "Kod n\u00fcmun\u0259si",
"Color": "R\u0259ng",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Soldan sa\u011fa",
"Right to left": "Sa\u011fdan sola",
"Emoticons": "Emosiyalar",
"Document properties": "S\u0259n\u0259din x\u00fcsusiyy\u0259tl\u0259ri",
"Title": "Ba\u015fl\u0131q",
"Keywords": "A\u00e7ar s\u00f6zl\u0259r",
"Description": "T\u0259sviri",
"Robots": "Robotlar",
"Author": "M\u00fc\u0259llif",
"Encoding": "Kodla\u015fd\u0131rma",
"Fullscreen": "Tam ekran rejimi",
"Action": "\u018fmr",
"Shortcut": "Q\u0131sayol",
"Help": "K\u00f6m\u0259k",
"Address": "Adres",
"Focus to menubar": "Menyu \u00e7ubu\u011funa diqq\u0259t et",
"Focus to toolbar": "Al\u0259tl\u0259r \u00e7ubu\u011funa diqq\u0259t et",
"Focus to element path": "Elementin m\u0259nb\u0259yin\u0259 diqq\u0259t et",
"Focus to contextual toolbar": "Kontekst menyuya diqq\u0259t et",
"Insert link (if link plugin activated)": "Link \u0259lav\u0259 et (\u0259g\u0259r link \u0259lav\u0259si aktivdirs\u0259)",
"Save (if save plugin activated)": "Yadda\u015fa yaz (\u0259g\u0259r yadda\u015fa yaz \u0259lav\u0259si aktivdirs\u0259)",
"Find (if searchreplace plugin activated)": "Tap (\u0259g\u0259r axtar\u0131\u015f \u0259lav\u0259si aktivdirs\u0259)",
"Plugins installed ({0}):": "\u018flav\u0259l\u0259r y\u00fckl\u0259ndi ({0}):",
"Premium plugins:": "Premium \u0259lav\u0259l\u0259r",
"Learn more...": "Daha \u00e7ox \u00f6yr\u0259n...",
"You are using {0}": "Siz {0} istifad\u0259 edirsiniz",
"Plugins": "\u018flav\u0259l\u0259r",
"Handy Shortcuts": "Laz\u0131ml\u0131 q\u0131sayollar",
"Horizontal line": "Horizontal x\u0259tt",
"Insert\/edit image": "\u015e\u0259kilin \u0259lav\u0259\/redakt\u0259 edilm\u0259si",
"Image description": "\u015e\u0259kilin t\u0259sviri",
"Source": "M\u0259nb\u0259",
"Dimensions": "\u00d6l\u00e7\u00fcl\u0259r",
"Constrain proportions": "Nisb\u0259tl\u0259rin saxlan\u0131lmas\u0131",
"General": "\u00dcmumi",
"Advanced": "Geni\u015fl\u0259nmi\u015f",
"Style": "Stil",
"Vertical space": "Vertikal sah\u0259",
"Horizontal space": "Horizontal sah\u0259",
"Border": "\u00c7\u0259r\u00e7iv\u0259",
"Insert image": "\u015e\u0259kil yerl\u0259\u015fdir",
"Image": "\u015e\u0259kil",
"Image list": "\u015e\u0259kil listi",
"Rotate counterclockwise": "Saat \u0259qr\u0259binin \u0259ksin\u0259 f\u0131rlat",
"Rotate clockwise": "Saat \u0259qr\u0259bi istiqam\u0259tind\u0259 f\u0131rlat",
"Flip vertically": "\u015eaquli \u00e7evir",
"Flip horizontally": "\u00dcfiqi \u00e7evir",
"Edit image": "\u015e\u0259kili redakt\u0259 et",
"Image options": "\u015e\u0259kil parametrl\u0259ri",
"Zoom in": "Yax\u0131nla\u015fd\u0131r",
"Zoom out": "Uzaqla\u015fd\u0131r",
"Crop": "K\u0259s",
"Resize": "\u00d6l\u00e7\u00fcl\u0259ri d\u0259yi\u015f",
"Orientation": "Oriyentasiya",
"Brightness": "Parlaql\u0131q",
"Sharpen": "K\u0259skinl\u0259\u015fdir",
"Contrast": "Ziddiyy\u0259t",
"Color levels": "R\u0259ng s\u0259viyy\u0259l\u0259ri",
"Gamma": "Qamma",
"Invert": "T\u0259rsin\u0259 \u00e7evir",
"Apply": "T\u0259tbiq et",
"Back": "Geri",
"Insert date\/time": "G\u00fcn\/tarix \u0259lav\u0259 et",
"Date\/time": "Tarix\/saat",
"Insert link": "Linkin \u0259lav\u0259 edilm\u0259si",
"Insert\/edit link": "Linkin \u0259lav\u0259\/redakt\u0259 edilm\u0259si",
"Text to display": "G\u00f6r\u00fcn\u0259n yaz\u0131n\u0131n t\u0259sviri",
"Url": "Linkin \u00fcnvan\u0131",
"Target": "H\u0259d\u0259f",
"None": "Yoxdur",
"New window": "Yeni p\u0259nc\u0259r\u0259d\u0259 a\u00e7\u0131ls\u0131n",
"Remove link": "Linki sil",
"Anchors": "L\u00f6vb\u0259rl\u0259r",
"Link": "Ke\u00e7id",
"Paste or type a link": "Ke\u00e7idi yerl\u0259\u015fdirin v\u0259 ya yaz\u0131n",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Daxil etdiyiniz URL bir e-mail kimi g\u00f6r\u00fcn\u00fcr. \u018fg\u0259r t\u0259l\u0259b olunan mailto: prefix \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Daxil etdiyiniz URL bir e-mail kimi g\u00f6r\u00fcn\u00fcr. \u018fg\u0259r t\u0259l\u0259b olunan mailto: prefix \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",
"Link list": "Ke\u00e7id listi",
"Insert video": "Videonun \u0259lav\u0259 edilm\u0259si",
"Insert\/edit video": "Videonun \u0259lav\u0259\/redakt\u0259 edilm\u0259si",
"Insert\/edit media": "Media \u0259lav\u0259\/d\u00fcz\u0259li\u015f et",
"Alternative source": "Alternativ m\u0259nb\u0259",
"Poster": "Poster",
"Paste your embed code below:": "\u00d6z kodunuzu a\u015fa\u011f\u0131 \u0259lav\u0259 edin:",
"Embed": "\u018flav\u0259 etm\u0259k \u00fc\u00e7\u00fcn kod",
"Media": "Media",
"Nonbreaking space": "Q\u0131r\u0131lmaz sah\u0259",
"Page break": "S\u0259hif\u0259nin q\u0131r\u0131lmas\u0131",
"Paste as text": "M\u0259tn kimi \u0259lav\u0259 et",
"Preview": "\u0130lkinbax\u0131\u015f",
"Print": "\u00c7ap et",
"Save": "Yadda saxla",
"Find": "Tap",
"Replace with": "Bununla d\u0259yi\u015fdir",
"Replace": "D\u0259yi\u015fdir",
"Replace all": "Ham\u0131s\u0131n\u0131 d\u0259yi\u015fdir",
"Prev": "\u018fvv\u0259lki",
"Next": "N\u00f6vb\u0259ti",
"Find and replace": "Tap v\u0259 d\u0259yi\u015fdir",
"Could not find the specified string.": "G\u00f6st\u0259ril\u0259n s\u0259tiri tapmaq olmur",
"Match case": "Registri n\u0259z\u0259r\u0259 al",
"Whole words": "Tam s\u00f6zl\u0259r",
"Spellcheck": "Orfoqrafiyan\u0131 yoxla",
"Ignore": "\u0130qnorla",
"Ignore all": "Ham\u0131s\u0131n\u0131 iqnorla",
"Finish": "Bitir",
"Add to Dictionary": "L\u00fc\u011f\u0259t\u0259 \u0259lav\u0259 edilsin",
"Insert table": "S\u0259tir \u0259lav\u0259 et",
"Table properties": "C\u0259dv\u0259lin x\u00fcsusiyy\u0259tl\u0259ri",
"Delete table": "C\u0259dv\u0259li sil",
"Cell": "H\u00fccr\u0259",
"Row": "S\u0259tir",
"Column": "S\u00fctun",
"Cell properties": "H\u00fccr\u0259nin x\u00fcsusiyy\u0259tl\u0259ri",
"Merge cells": "H\u00fccr\u0259l\u0259ri birl\u0259\u015ftir",
"Split cell": "H\u00fccr\u0259l\u0259rin say\u0131",
"Insert row before": "\u018fvv\u0259lin\u0259 s\u0259tir \u0259lav\u0259 et",
"Insert row after": "Sonras\u0131na s\u0259tir \u0259lav\u0259 et",
"Delete row": "S\u0259tri sil",
"Row properties": "S\u0259trin x\u00fcsusiyy\u0259tl\u0259ri",
"Cut row": "S\u0259tiri k\u0259s",
"Copy row": "S\u0259tiri k\u00f6\u00e7\u00fcr",
"Paste row before": "\u018fvv\u0259lin\u0259 s\u0259tir \u0259lav\u0259 et",
"Paste row after": "Sonras\u0131na s\u0259tir \u0259lav\u0259 et",
"Insert column before": "\u018fvv\u0259lin\u0259 s\u0259tir \u0259lav\u0259 et",
"Insert column after": "\u018fvv\u0259lin\u0259 s\u00fctun \u0259lav\u0259 et",
"Delete column": "S\u00fctunu sil",
"Cols": "S\u00fctunlar",
"Rows": "S\u0259tirl\u0259r",
"Width": "Eni",
"Height": "H\u00fcnd\u00fcrl\u00fcy\u00fc",
"Cell spacing": "H\u00fccr\u0259l\u0259rin aras\u0131nda m\u0259saf\u0259",
"Cell padding": "H\u00fccr\u0259l\u0259rin sah\u0259l\u0259ri",
"Caption": "Ba\u015flan\u011f\u0131c",
"Left": "Sol t\u0259r\u0259f \u00fczr\u0259",
"Center": "M\u0259rk\u0259z \u00fczr\u0259",
"Right": "Sa\u011f t\u0259r\u0259f \u00fczr\u0259",
"Cell type": "H\u00fccr\u0259nin tipi",
"Scope": "Sfera",
"Alignment": "D\u00fczl\u0259ndirm\u0259",
"H Align": "H D\u00fczl\u0259ndir",
"V Align": "V D\u00fczl\u0259ndir",
"Top": "Yuxar\u0131",
"Middle": "Orta",
"Bottom": "A\u015fa\u011f\u0131",
"Header cell": "H\u00fccr\u0259nin ba\u015fl\u0131\u011f\u0131",
"Row group": "S\u0259tirin qrupu",
"Column group": "S\u00fctunun qrupu",
"Row type": "S\u0259tirin tipi",
"Header": "Ba\u015fl\u0131q",
"Body": "K\u00fctl\u0259",
"Footer": "\u018fn a\u015fa\u011f\u0131",
"Border color": "\u00c7\u0259r\u00e7iv\u0259 r\u0259ngi",
"Insert template": "\u015eablon \u0259lav\u0259 et",
"Templates": "\u015eablonlar",
"Template": "\u015eablon",
"Text color": "M\u0259tnin r\u0259ngi",
"Background color": "Arxafon r\u0259ngi",
"Custom...": "\u00c7\u0259kilm\u0259...",
"Custom color": "\u00c7\u0259kilm\u0259 r\u0259ng",
"No color": "R\u0259ngsiz",
"Table of Contents": "M\u00fcnd\u0259ricat",
"Show blocks": "Bloklar\u0131 g\u00f6st\u0259r",
"Show invisible characters": "G\u00f6r\u00fcnm\u0259y\u0259n simvollar\u0131 g\u00f6st\u0259r",
"Words: {0}": "S\u00f6zl\u0259r: {0}",
"{0} words": "{0} s\u00f6z",
"File": "Fayl",
"Edit": "Redakt\u0259 et",
"Insert": "\u018flav\u0259 et",
"View": "G\u00f6r\u00fcn\u00fc\u015f",
"Format": "Format",
"Table": "C\u0259dv\u0259l",
"Tools": "Al\u0259tl\u0259r",
"Powered by {0}": "{0} t\u0259r\u0259find\u0259n t\u0259chiz edilib",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "B\u00f6y\u00fck m\u0259tn sah\u0259si \u0259lav\u0259 edilib. Menyu \u00fc\u00e7\u00fcn ALT-F9 d\u00fcym\u0259sini bas\u0131n. Al\u0259tl\u0259r paneli \u00fc\u00e7\u00fcn ALT-F10 d\u00fcym\u0259sini bas\u0131n. K\u00f6m\u0259k \u00fc\u00e7\u00fcn ALT-0 d\u00fcym\u0259l\u0259rin bas\u0131n."
});js/tinymce/langs/ru.js000064400000143440151727150320010731 0ustar00tinymce.addI18n('ru',{
"Redo": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c",
"Undo": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c",
"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"Select all": "\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435",
"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Ok": "OK",
"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438",
"Bold": "\u0416\u0438\u0440\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435",
"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435",
"Superscript": "\u041d\u0430\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439",
"Subscript": "\u041f\u043e\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439",
"Clear formatting": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
"Align left": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Align center": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Align right": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u043f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Justify": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c \u0442\u0435\u0441\u0442 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",
"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u044b",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448: Ctrl+X\/C\/V.",
"Headers": "\u0412\u0435\u0440\u0445\u043d\u0438\u0435 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b\u044b",
"Header 1": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 1",
"Header 2": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 2",
"Header 3": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 3",
"Header 4": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 4",
"Header 5": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 5",
"Header 6": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 6",
"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Preformatted": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439",
"Div": "Div",
"Pre": "Pre",
"Code": "\u041a\u043e\u0434",
"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
"Blockquote": "\u0411\u043b\u043e\u043a \u0446\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f",
"Inline": "\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439",
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e.",
"Fonts": "\u0428\u0440\u0438\u0444\u0442\u044b",
"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",
"Class": "\u041a\u043b\u0430\u0441\u0441",
"Browse for an image": "\u0412\u044b\u0431\u043e\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"OR": "\u0418\u041b\u0418",
"Drop an image here": "\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u044e\u0434\u0430",
"Upload": "\u041f\u0435\u0440\u0435\u0434\u0430\u0442\u044c",
"Block": "\u0411\u043b\u043e\u043a",
"Align": "\u0412\u044b\u0440\u043e\u0432\u043d\u044f\u0442\u044c",
"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439",
"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",
"Disc": "\u041a\u0440\u0443\u0433\u0438",
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
"Lower Alpha": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
"Lower Greek": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
"Lower Roman": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
"Upper Alpha": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
"Upper Roman": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
"Anchor...": "\u042f\u043a\u043e\u0440\u044c...",
"Name": "\u0418\u043c\u044f",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u0431\u0443\u043a\u0432\u044b, \u0446\u0438\u0444\u0440\u044b, \u0442\u0438\u0440\u0435, \u0442\u043e\u0447\u043a\u0438, \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f.",
"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0439\u0442\u0438?",
"Restore last draft": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430",
"Special character...": "\u0421\u043f\u0435\u0446. \u0441\u0438\u043c\u0432\u043e\u043b\u044b...",
"Source code": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434",
"Insert\/Edit code sample": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c\/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",
"Language": "\u042f\u0437\u044b\u043a",
"Code sample...": "\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430...",
"Color Picker": "\u041f\u0438\u043f\u0435\u0442\u043a\u0430 \u0446\u0432\u0435\u0442\u0430",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
"Right to left": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",
"Emoticons": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b",
"Emoticons...": "\u0421\u043c\u0430\u0439\u043b\u0438\u043a\u0438...",
"Metadata and Document Properties": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Keywords": "\u041a\u043b\u044e\u0447\u0438\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430",
"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
"Fullscreen": "\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c",
"Action": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435",
"Shortcut": "\u042f\u0440\u043b\u044b\u043a",
"Help": "\u041f\u043e\u043c\u043e\u0449\u044c",
"Address": "\u0410\u0434\u0440\u0435\u0441",
"Focus to menubar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u043c\u0435\u043d\u044e",
"Focus to toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432",
"Focus to element path": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0435 \u043f\u0443\u0442\u0438",
"Focus to contextual toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432",
"Insert link (if link plugin activated)": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 (\u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d link \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d)",
"Save (if save plugin activated)": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c (\u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d save \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d)",
"Find (if searchreplace plugin activated)": "\u041d\u0430\u0439\u0442\u0438 (\u0435\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d searchreplace \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d)",
"Plugins installed ({0}):": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b ({0}):",
"Premium plugins:": "\u041f\u0440\u0435\u043c\u0438\u0443\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u044b:",
"Learn more...": "\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435...",
"You are using {0}": "\u0412\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 {0}",
"Plugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u044b",
"Handy Shortcuts": "\u0413\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438",
"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f",
"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Alternative description": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Accessibility": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438",
"Image is decorative": "\u0414\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Source": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
"Constrain proportions": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
"General": "\u041e\u0431\u0449\u0435\u0435",
"Advanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Border": "\u0420\u0430\u043c\u043a\u0430",
"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Image...": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435...",
"Image list": "\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439",
"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438",
"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435",
"Flip vertically": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438",
"Flip horizontally": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438",
"Edit image": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Image options": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Zoom in": "\u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c",
"Zoom out": "\u041e\u0442\u0434\u0430\u043b\u0438\u0442\u044c",
"Crop": "\u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c",
"Resize": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",
"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f",
"Brightness": "\u042f\u0440\u043a\u043e\u0441\u0442\u044c",
"Sharpen": "\u0427\u0435\u0442\u043a\u043e\u0441\u0442\u044c",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Color levels": "\u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Invert": "\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f",
"Apply": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f",
"Date\/time": "\u0414\u0430\u0442\u0430\/\u0432\u0440\u0435\u043c\u044f",
"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Text to display": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442",
"Url": "\u0410\u0434\u0440\u0435\u0441 \u0441\u0441\u044b\u043b\u043a\u0438",
"Open link in...": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0432...",
"Current window": "\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u043a\u043d\u043e",
"None": "\u041d\u0435\u0442",
"New window": "\u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435",
"Open link": "\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435",
"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Anchors": "\u042f\u043a\u043e\u0440\u044f",
"Link...": "\u0421\u0441\u044b\u043b\u043a\u0430...",
"Paste or type a link": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abmailto:\u00bb?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abhttp:\/\/\u00bb?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0412\u0430\u043c\u0438 URL-\u0430\u0434\u0440\u0435\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0425\u043e\u0442\u0438\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 https: \/\/?",
"Link list": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a",
"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
"Insert\/edit media": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
"Alternative source URL": "URL \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430",
"Media poster (Image URL)": "\u041f\u043e\u0441\u0442\u0435\u0440 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 (URL \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f)",
"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435:",
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
"Media...": "\u041c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430...",
"Nonbreaking space": "\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b",
"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442",
"Preview": "\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",
"Print...": "\u041d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c...",
"Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
"Find": "\u041d\u0430\u0439\u0442\u0438",
"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",
"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",
"Previous": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439",
"Next": "\u0412\u043d\u0438\u0437",
"Find and Replace": "\u041d\u0430\u0439\u0442\u0438 \u0438 \u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
"Find and replace...": "\u041d\u0430\u0439\u0442\u0438 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c...",
"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
"Match case": "\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"Find whole words only": "\u041d\u0430\u0439\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0435\u043b\u044b\u0435 \u0441\u043b\u043e\u0432\u0430",
"Find in selection": "\u0418\u0441\u043a\u0430\u0442\u044c \u0432 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c",
"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Spellcheck Language": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f",
"No misspellings found.": "\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e.",
"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435",
"Finish": "\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c",
"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c",
"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",
"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430",
"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446",
"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438",
"Merge cells": "\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",
"Split cell": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443",
"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438",
"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
"Copy row": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430",
"Insert column after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430",
"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446",
"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b",
"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
"Cell spacing": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
"Cell padding": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Show caption": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u044c",
"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Cell type": "\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438",
"Scope": "Scope",
"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u0443",
"Middle": "\u041f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435",
"Bottom": "\u041f\u043e \u043d\u0438\u0437\u0443",
"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Row group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",
"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a",
"Row type": "\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438",
"Header": "\u0428\u0430\u043f\u043a\u0430",
"Body": "\u0422\u0435\u043b\u043e",
"Footer": "\u041d\u0438\u0437",
"Border color": "\u0426\u0432\u0435\u0442 \u0440\u0430\u043c\u043a\u0438",
"Insert template...": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d...",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
"Template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"Text color": "\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",
"Background color": "\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",
"Custom...": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u2026",
"Custom color": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0446\u0432\u0435\u0442",
"No color": "\u0411\u0435\u0437 \u0446\u0432\u0435\u0442\u0430",
"Remove color": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0446\u0432\u0435\u0442",
"Table of Contents": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",
"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438",
"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
"Word count": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432",
"Count": "\u041f\u043e\u0434\u0441\u0447\u0435\u0442",
"Document": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Selection": "\u0412\u044b\u0431\u043e\u0440",
"Words": "\u0421\u043b\u043e\u0432\u0430",
"Words: {0}": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432: {0}",
"{0} words": "\u0441\u043b\u043e\u0432: {0}",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
"View": "\u0412\u0438\u0434",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
"Powered by {0}": "\u041f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9 \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, ALT-0 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u043e\u043c\u043e\u0449\u0438.",
"Image title": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Border width": "\u0428\u0438\u0440\u0438\u043d\u0430 \u0440\u0430\u043c\u043a\u0438",
"Border style": "\u0421\u0442\u0438\u043b\u044c \u0440\u0430\u043c\u043a\u0438",
"Error": "\u041e\u0448\u0438\u0431\u043a\u0430",
"Warn": "\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435",
"Valid": "\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0439",
"To open the popup, press Shift+Enter": "\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u041f\u043e\u043b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-0, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0443.",
"System Font": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0448\u0440\u0438\u0444\u0442",
"Failed to upload image: {0}": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f: {0}",
"Failed to load plugin: {0} from url {1}": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430: {0} \u0438\u0437 URL {1}",
"Failed to load plugin url: {0}": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 URL \u043f\u043b\u0430\u0433\u0438\u043d\u0430: {0}",
"Failed to initialize plugin: {0}": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430: {0}",
"example": "\u043f\u0440\u0438\u043c\u0435\u0440",
"Search": "\u041f\u043e\u0438\u0441\u043a",
"All": "\u0412\u0441\u0435",
"Currency": "\u0412\u0430\u043b\u044e\u0442\u0430",
"Text": "\u0422\u0435\u043a\u0441\u0442",
"Quotations": "\u0426\u0438\u0442\u0430\u0442\u044b",
"Mathematical": "\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435",
"Extended Latin": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u043b\u0430\u0442\u044b\u043d\u044c",
"Symbols": "\u0421\u0438\u043c\u0432\u043e\u043b\u044b",
"Arrows": "\u0421\u0442\u0440\u0435\u043b\u043a\u0438",
"User Defined": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c",
"dollar sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0434\u043e\u043b\u043b\u0430\u0440\u0430",
"currency sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0432\u0430\u043b\u044e\u0442\u044b",
"euro-currency sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0435\u0432\u0440\u043e",
"colon sign": "\u0414\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435",
"cruzeiro sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043a\u0440\u0443\u0437\u0435\u0439\u0440\u043e",
"french franc sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u0433\u043e \u0444\u0440\u0430\u043d\u043a\u0430",
"lira sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043b\u0438\u0440\u044b",
"mill sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0434\u0435\u0441\u044f\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0446\u0435\u043d\u0442\u0430",
"naira sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043d\u0430\u0439\u0440\u044b",
"peseta sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0441\u0435\u0442\u044b",
"rupee sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0440\u0443\u043f\u0438\u0438",
"won sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0432\u043e\u043d\u044b",
"new sheqel sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0448\u0435\u043a\u0435\u043b\u044f",
"dong sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0434\u043e\u043d\u0433\u0430",
"kip sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043a\u0438\u043f\u044b",
"tugrik sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0442\u0443\u0433\u0440\u0438\u043a\u0430",
"drachma sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0434\u0440\u0430\u0445\u043c\u044b",
"german penny symbol": "\u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0444\u0435\u043d\u043d\u0438\u0433\u0430",
"peso sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0441\u043e",
"guarani sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0433\u0443\u0430\u0440\u0430\u043d\u0438",
"austral sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0430\u0443\u0441\u0442\u0440\u0430\u043b\u0430",
"hryvnia sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0433\u0440\u0438\u0432\u043d\u0438",
"cedi sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0441\u0435\u0434\u0438",
"livre tournois sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043b\u0438\u0432\u0440\u044b",
"spesmilo sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0441\u043f\u0435\u0441\u043c\u0438\u043b\u043e",
"tenge sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0442\u0435\u043d\u044c\u0433\u0435",
"indian rupee sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0438\u043d\u0434\u0438\u0439\u0441\u043a\u043e\u0439 \u0440\u0443\u043f\u0438\u0438",
"turkish lira sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0442\u0443\u0440\u0435\u0446\u043a\u043e\u0439 \u043b\u0438\u0440\u044b",
"nordic mark sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043c\u0430\u0440\u043a\u0438",
"manat sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u043c\u0430\u043d\u0430\u0442\u0430",
"ruble sign": "\u0421\u0438\u043c\u0432\u043e\u043b \u0440\u0443\u0431\u043b\u044f",
"yen character": "\u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0435\u043d\u044b",
"yuan character": "\u0441\u0438\u043c\u0432\u043e\u043b \u044e\u0430\u043d\u044f",
"yuan character, in hong kong and taiwan": "\u0421\u0438\u043c\u0432\u043e\u043b \u044e\u0430\u043d\u044f, \u0413\u043e\u043d\u043a\u043e\u043d\u0433 \u0438 \u0422\u0430\u0439\u0432\u0430\u043d\u044c",
"yen\/yuan character variant one": "\u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0435\u043d\u044b\/\u044e\u0430\u043d\u044f, \u0432\u0430\u0440\u0438\u0430\u043d\u0442 1",
"Loading emoticons...": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043c\u0430\u0439\u043b\u043e\u0432...",
"Could not load emoticons": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b\u044b",
"People": "\u041b\u044e\u0434\u0438",
"Animals and Nature": "\u0416\u0438\u0432\u043e\u0442\u043d\u044b\u0435 \u0438 \u043f\u0440\u0438\u0440\u043e\u0434\u0430",
"Food and Drink": "\u0415\u0434\u0430 \u0438 \u043d\u0430\u043f\u0438\u0442\u043a\u0438",
"Activity": "\u0414\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c",
"Travel and Places": "\u041f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f \u0438 \u043c\u0435\u0441\u0442\u0430",
"Objects": "\u041e\u0431\u044a\u0435\u043a\u0442\u044b",
"Flags": "\u0424\u043b\u0430\u0433\u0438",
"Characters": "\u0421\u0438\u043c\u0432\u043e\u043b\u044b",
"Characters (no spaces)": "\u0421\u0438\u043c\u0432\u043e\u043b\u044b (\u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432)",
"{0} characters": "{0} \u0441\u0438\u043c\u0432\u043e\u043b.",
"Error: Form submit field collision.": "\u041e\u0448\u0438\u0431\u043a\u0430: \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043f\u043e\u043b\u0435\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u043e\u0440\u043c\u044b.",
"Error: No form element found.": "\u041e\u0448\u0438\u0431\u043a\u0430: \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u044b.",
"Update": "\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c",
"Color swatch": "\u041e\u0431\u0440\u0430\u0437\u0435\u0446 \u0446\u0432\u0435\u0442\u0430",
"Turquoise": "\u0411\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",
"Green": "\u0417\u0435\u043b\u0435\u043d\u044b\u0439",
"Blue": "\u0421\u0438\u043d\u0438\u0439",
"Purple": "\u0420\u043e\u0437\u043e\u0432\u044b\u0439",
"Navy Blue": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",
"Dark Turquoise": "\u0422\u0435\u043c\u043d\u043e-\u0431\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439",
"Dark Green": "\u0422\u0435\u043c\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",
"Medium Blue": "\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0441\u0438\u043d\u0438\u0439",
"Medium Purple": "\u0423\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043f\u0443\u0440\u043f\u0443\u0440\u043d\u044b\u0439",
"Midnight Blue": "\u0427\u0435\u0440\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",
"Yellow": "\u0416\u0435\u043b\u0442\u044b\u0439",
"Orange": "\u041e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439",
"Red": "\u041a\u0440\u0430\u0441\u043d\u044b\u0439",
"Light Gray": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0441\u0435\u0440\u044b\u0439",
"Gray": "\u0421\u0435\u0440\u044b\u0439",
"Dark Yellow": "\u0422\u0435\u043c\u043d\u043e-\u0436\u0435\u043b\u0442\u044b\u0439",
"Dark Orange": "\u0422\u0435\u043c\u043d\u043e-\u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439",
"Dark Red": "\u0422\u0435\u043c\u043d\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",
"Medium Gray": "\u0423\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u0435\u0440\u044b\u0439",
"Dark Gray": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439",
"Light Green": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439",
"Light Yellow": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0436\u0435\u043b\u0442\u044b\u0439",
"Light Red": "\u0421\u0432\u0435\u0442\u043b\u043e-\u043a\u0440\u0430\u0441\u043d\u044b\u0439",
"Light Purple": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
"Light Blue": "\u0421\u0432\u0435\u0442\u043b\u043e-\u0441\u0438\u043d\u0438\u0439",
"Dark Purple": "\u0422\u0435\u043c\u043d\u043e-\u0444\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u044b\u0439",
"Dark Blue": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439",
"Black": "\u0427\u0435\u0440\u043d\u044b\u0439",
"White": "\u0411\u0435\u043b\u044b\u0439",
"Switch to or from fullscreen mode": "\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c",
"Open help dialog": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043f\u0440\u0430\u0432\u043a\u0443",
"history": "\u0438\u0441\u0442\u043e\u0440\u0438\u044f",
"styles": "\u0441\u0442\u0438\u043b\u0438",
"formatting": "\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
"alignment": "\u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"indentation": "\u043e\u0442\u0441\u0442\u0443\u043f",
"Font": "\u0428\u0440\u0438\u0444\u0442",
"Size": "\u0420\u0430\u0437\u043c\u0435\u0440",
"More...": "\u0411\u043e\u043b\u044c\u0448\u0435...",
"Select...": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c...",
"Preferences": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f",
"Yes": "\u0414\u0430",
"No": "\u041d\u0435\u0442",
"Keyboard Navigation": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b",
"Version": "\u0412\u0435\u0440\u0441\u0438\u044f",
"Code view": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043a\u043e\u0434\u0430",
"Open popup menu for split buttons": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043c\u0435\u043d\u044e \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a",
"List Properties": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432",
"List properties...": "\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432...",
"Start list at number": "\u041d\u0430\u0447\u0430\u0442\u044c \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044e \u0441",
"Line height": "\u0412\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438",
"comments": "\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438",
"Format Painter": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443",
"Insert\/edit iframe": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 iframe",
"Capitalization": "\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u043d\u044b\u0445 \u0431\u0443\u043a\u0432",
"lowercase": "\u043d\u0438\u0436\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
"UPPERCASE": "\u0412\u0415\u0420\u0425\u041d\u0418\u0419 \u0420\u0415\u0413\u0418\u0421\u0422\u0420",
"Title Case": "\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f",
"permanent pen": "\u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u043f\u0435\u0440\u043e",
"Permanent Pen Properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0430",
"Permanent pen properties...": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0435\u0440\u043c\u0430\u043d\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0430...",
"case change": "\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430",
"page embed": "\u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443",
"Advanced sort...": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430...",
"Advanced Sort": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430",
"Sort table by column ascending": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e",
"Sort table by column descending": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0441\u0442\u043e\u043b\u0431\u0446\u0443 \u043f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e",
"Sort": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
"Order": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a",
"Sort by": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e",
"Ascending": "\u041f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e",
"Descending": "\u041f\u043e \u0443\u0431\u044b\u0432\u0430\u043d\u0438\u044e",
"Column {0}": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446 {0}",
"Row {0}": "\u0421\u0442\u0440\u043e\u043a\u0430 {0}",
"Spellcheck...": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f...",
"Misspelled word": "\u0421\u043b\u043e\u0432\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439",
"Suggestions": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f",
"Change": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
"Finding word suggestions": "\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430",
"Success": "\u0423\u0441\u043f\u0435\u0445",
"Repair": "\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c",
"Issue {0} of {1}": "\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 {0} \u0438\u0437 {1}",
"Images must be marked as decorative or have an alternative text description": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435. \u0414\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b.",
"Or provide alternative text:": "\u0418\u043b\u0438 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435:",
"Make image decorative:": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435:",
"ID attribute must be unique": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 ID \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c",
"Make ID unique": "\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c:",
"Keep this ID and remove all others": "\u041e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435",
"Remove this ID": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440",
"Remove all IDs": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b",
"Checklist": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438",
"Anchor": "\u042f\u043a\u043e\u0440\u044c",
"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
"Code sample": "\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",
"Color": "\u0426\u0432\u0435\u0442",
"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Image": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Target": "\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
"Link": "\u0421\u0441\u044b\u043b\u043a\u0430",
"Poster": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
"Media": "\u0412\u0438\u0434\u0435\u043e",
"Print": "\u041f\u0435\u0447\u0430\u0442\u044c",
"Prev": "\u0412\u0432\u0435\u0440\u0445",
"Find and replace": "\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430",
"Whole words": "\u0421\u043b\u043e\u0432\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c",
"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d"
});js/tinymce/langs/sq.js000064400000016051151727150320010723 0ustar00tinymce.addI18n('sq',{
"Cut": "prerje",
"Heading 5": "titull 5",
"Header 2": "titull 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Shfletuesi juaj nuk supurton qasje t\u00eb drejtp\u00ebrdrejt\u00eb n\u00eb clipboard. Ju lutemi p\u00ebrdorni Ctrl+X\/C\/V shkurtesat e tastier\u00ebs n\u00eb vend. ",
"Heading 4": "titull 4",
"Div": "ndarje",
"Heading 2": "titull 2",
"Paste": "ngjit",
"Close": "Mbylle",
"Font Family": "soj g\u00ebrmave",
"Pre": "para",
"Align right": "Radhit djathtas",
"New document": "Dokument i ri",
"Blockquote": "citat",
"Numbered list": "list\u00eb e num\u00ebruara",
"Heading 1": "titull 1",
"Headings": "titull",
"Increase indent": "rrit gjurm\u00eb",
"Formats": "form\u00eb",
"Headers": "titull",
"Select all": "Selektoj t\u00eb gjitha",
"Header 3": "titull 3",
"Blocks": "bllok",
"Undo": "Anuloj",
"Strikethrough": "Vij\u00eb nga",
"Bullet list": "list\u00eb plumb",
"Header 1": "titull 1",
"Superscript": "indeks i sip\u00ebrm",
"Clear formatting": "spastroj formate",
"Font Sizes": "p\u00ebrmasa e germave",
"Subscript": "Indeksin e",
"Header 6": "titull 6",
"Redo": "rib\u00ebj",
"Paragraph": "paragraf",
"Ok": "Ok",
"Bold": "i zi",
"Code": "kod",
"Italic": "kursiv",
"Align center": "Radhit n\u00eb mes",
"Header 5": "titull 5",
"Heading 6": "titull 6",
"Heading 3": "titull 3",
"Decrease indent": "ulja gjurm\u00eb",
"Header 4": "titull 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
"Underline": "n\u00ebnvizoj",
"Cancel": "Moho",
"Justify": "justifikuar",
"Inline": "nj\u00ebshkolon\u00eb",
"Copy": "kopjoj",
"Align left": "Radhit majtas",
"Visual aids": "ndihm\u00ebsit vizuale",
"Lower Greek": "Lower Greek",
"Square": "Katror",
"Default": "Default",
"Lower Alpha": "Lower Alpha",
"Circle": "Rreth",
"Disc": "Disc",
"Upper Alpha": "Upper Alpha",
"Upper Roman": "Upper Roman",
"Lower Roman": "Lower Roman",
"Name": "Emri",
"Anchor": "Anchor",
"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
"Restore last draft": "Restore last draft",
"Special character": "Karakter i veqant",
"Source code": "Kodi burimor",
"B": "Kalt\u00ebr",
"R": "Kuqe",
"G": "Gjelb\u00ebr",
"Color": "Ngjyra",
"Right to left": "Nga e djathta n\u00eb t\u00eb majt\u00eb",
"Left to right": "Nga e majta n\u00eb t\u00eb djatht\u00eb",
"Emoticons": "Emoticons",
"Robots": "Robot\u00ebt",
"Document properties": "Vetit\u00eb e dokumentit",
"Title": "Titulli",
"Keywords": "Fjal\u00ebt kyqe",
"Encoding": "Encoding",
"Description": "Description",
"Author": "Autori",
"Fullscreen": "Fullscreen",
"Horizontal line": "Vij\u00eb horizontale",
"Horizontal space": "Hapsir\u00eb horizontale",
"Insert\/edit image": "Shto\/ndrysho imazh",
"General": "General",
"Advanced": "T\u00eb p\u00ebrparuar",
"Source": "Burimi",
"Border": "Border",
"Constrain proportions": "Constrain proportions",
"Vertical space": "Hapsir\u00eb vertikale",
"Image description": "P\u00ebrshkrimi i imazhit",
"Style": "Stili",
"Dimensions": "Dimensions",
"Insert image": "Shto imazh",
"Zoom in": "Zoom in",
"Contrast": "Contrast",
"Back": "Back",
"Gamma": "Gamma",
"Flip horizontally": "Flip horizontally",
"Resize": "Resize",
"Sharpen": "Sharpen",
"Zoom out": "Zoom out",
"Image options": "Image options",
"Apply": "Apply",
"Brightness": "Brightness",
"Rotate clockwise": "Rotate clockwise",
"Rotate counterclockwise": "Rotate counterclockwise",
"Edit image": "Edit image",
"Color levels": "Color levels",
"Crop": "Crop",
"Orientation": "Orientation",
"Flip vertically": "Flip vertically",
"Invert": "Invert",
"Insert date\/time": "Insert date\/time",
"Remove link": "Remove link",
"Url": "Url",
"Text to display": "Text to display",
"Anchors": "Anchors",
"Insert link": "Insert link",
"New window": "New window",
"None": "None",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
"Target": "Target",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"Insert\/edit link": "Insert\/edit link",
"Insert\/edit video": "Insert\/edit video",
"Poster": "Poster",
"Alternative source": "Alternative source",
"Paste your embed code below:": "Paste your embed code below:",
"Insert video": "Insert video",
"Embed": "Embed",
"Nonbreaking space": "Nonbreaking space",
"Page break": "Page break",
"Paste as text": "Paste as text",
"Preview": "Preview",
"Print": "Print",
"Save": "Save",
"Could not find the specified string.": "Could not find the specified string.",
"Replace": "Replace",
"Next": "Next",
"Whole words": "Whole words",
"Find and replace": "Find and replace",
"Replace with": "Replace with",
"Find": "Find",
"Replace all": "Replace all",
"Match case": "Match case",
"Prev": "Prev",
"Spellcheck": "Spellcheck",
"Finish": "Finish",
"Ignore all": "Ignore all",
"Ignore": "Ignore",
"Add to Dictionary": "Add to Dictionary",
"Insert row before": "Insert row before",
"Rows": "Rows",
"Height": "Height",
"Paste row after": "Paste row after",
"Alignment": "Alignment",
"Border color": "Border color",
"Column group": "Column group",
"Row": "Row",
"Insert column before": "Insert column before",
"Split cell": "Split cell",
"Cell padding": "Cell padding",
"Cell spacing": "Cell spacing",
"Row type": "Row type",
"Insert table": "Insert table",
"Body": "Body",
"Caption": "Caption",
"Footer": "Footer",
"Delete row": "Delete row",
"Paste row before": "Paste row before",
"Scope": "Scope",
"Delete table": "Delete table",
"H Align": "H Align",
"Top": "Top",
"Header cell": "Header cell",
"Column": "Column",
"Row group": "Row group",
"Cell": "Cell",
"Middle": "Middle",
"Cell type": "Cell type",
"Copy row": "Copy row",
"Row properties": "Row properties",
"Table properties": "Table properties",
"Bottom": "Bottom",
"V Align": "V Align",
"Header": "Header",
"Right": "Right",
"Insert column after": "Insert column after",
"Cols": "Cols",
"Insert row after": "Insert row after",
"Width": "Width",
"Cell properties": "Cell properties",
"Left": "Left",
"Cut row": "Cut row",
"Delete column": "Delete column",
"Center": "Center",
"Merge cells": "Merge cells",
"Insert template": "Insert template",
"Templates": "Templates",
"Background color": "Background color",
"Custom...": "Custom...",
"Custom color": "Custom color",
"No color": "No color",
"Text color": "Text color",
"Show blocks": "Show blocks",
"Show invisible characters": "Show invisible characters",
"Words: {0}": "Words: {0}",
"Insert": "Insert",
"File": "File",
"Edit": "Edit",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
"Tools": "Tools",
"View": "View",
"Table": "Table",
"Format": "Format"
});js/tinymce/langs/cy.js000064400000040412151727150330010712 0ustar00tinymce.addI18n('cy',{
"Redo": "Ailwneud",
"Undo": "Dadwneud",
"Cut": "Torri",
"Copy": "Cop\u00efo",
"Paste": "Gludo",
"Select all": "Dewis popeth",
"New document": "Dogfen newydd",
"Ok": "Iawn",
"Cancel": "Canslo",
"Visual aids": "Cymorth gweledol",
"Bold": "Trwm",
"Italic": "Italig",
"Underline": "Tanlinellu",
"Strikethrough": "Llinell drwodd",
"Superscript": "Uwchsgript",
"Subscript": "Is-sgript",
"Clear formatting": "Clirio pob fformat",
"Align left": "Aliniad chwith",
"Align center": "Aliniad canol",
"Align right": "Aliniad de",
"Justify": "Unioni",
"Bullet list": "Rhestr fwled",
"Numbered list": "Rhestr rifol",
"Decrease indent": "Lleihau mewnoliad",
"Increase indent": "Cynyddu mewnoliad",
"Close": "Cau",
"Formats": "Fformatau",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Dyw eich porwr ddim yn cynnal mynediad uniongyrchol i'r clipfwrdd. Yn hytrach defnyddiwch y bysellau llwybrau byr Ctrl+X\/C\/V.",
"Headers": "Penawdau",
"Header 1": "Pennawd 1",
"Header 2": "Pennawd 2",
"Header 3": "Pennawd 3",
"Header 4": "Pennawd 4",
"Header 5": "Pennawd 5",
"Header 6": "Pennawd 6",
"Headings": "Penawdau",
"Heading 1": "Pennawd 1",
"Heading 2": "Pennawd 2",
"Heading 3": "Pennawd 3",
"Heading 4": "Pennawd 4",
"Heading 5": "Pennawd 5",
"Heading 6": "Pennawd 6",
"Preformatted": "Wedi ei rag-fformatio",
"Div": "Div",
"Pre": "Pre",
"Code": "Cod",
"Paragraph": "Paragraff",
"Blockquote": "Dyfyniad Bloc",
"Inline": "Mewnlin",
"Blocks": "Blociau",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Mae gludo nawr yn gweithio yn y modd testun plaen.  Caiff testun plaen ei ludo nawr tan gaiff yr opsiwn ei doglo i'w ddiffodd.",
"Fonts": "Ffontau",
"Font Sizes": "Meintiau Ffont",
"Class": "Dosbarth",
"Browse for an image": "Pori am ddelwedd",
"OR": "NEU",
"Drop an image here": "Gollwng delwedd yma",
"Upload": "Uwchlwytho",
"Block": "Bloc",
"Align": "Alinio",
"Default": "Diofyn",
"Circle": "Cylch",
"Disc": "Disg",
"Square": "Sgw\u00e2r",
"Lower Alpha": "Alffa Is",
"Lower Greek": "Groeg Is",
"Lower Roman": "Rhufeinig Is",
"Upper Alpha": "Alffa Uwch",
"Upper Roman": "Rhufeinig Uwch",
"Anchor...": "Angor...",
"Name": "Enw",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Dylai Id gychwyn gyda llythyren ac yna dim ond llythrennau, rhifau, llinellau toriad,dotiau, colonau neu danlinellau.",
"You have unsaved changes are you sure you want to navigate away?": "Mae newidiadau heb eu cadw - ydych chi wir am symud i ffwrdd?",
"Restore last draft": "Adfer y drafft olaf",
"Special character...": "Nod arbennig...",
"Source code": "Cod gwreiddiol",
"Insert\/Edit code sample": "Mewnosod\/golygu sampl cod",
"Language": "Iaith",
"Code sample...": "Sampl cod...",
"Color Picker": "Dewisydd Lliw",
"R": "C",
"G": "Gw",
"B": "Gl",
"Left to right": "Chwith i'r dde",
"Right to left": "De i'r chwith",
"Emoticons": "Gwenogluniau",
"Emoticons...": "Gwenogluniau...",
"Metadata and Document Properties": "Metaddata a Priodweddau'r ddogfen",
"Title": "Teitl",
"Keywords": "Allweddeiriau",
"Description": "Disgrifiad",
"Robots": "Robotiaid",
"Author": "Awdur",
"Encoding": "Amgodiad",
"Fullscreen": "Sgrin llawn",
"Action": "Gweithred",
"Shortcut": "Llwybr Byr",
"Help": "Help",
"Address": "Cyfeiriad",
"Focus to menubar": "Ffocws i'r bar dewislen",
"Focus to toolbar": "Ffocws i'r bar offer",
"Focus to element path": "Ffocws i lwybr elfen",
"Focus to contextual toolbar": "Ffocws i far offer y cyd-destun",
"Insert link (if link plugin activated)": "Mewnosod dolen (os yw'r ategyn dolen yn weithredol)",
"Save (if save plugin activated)": "Cadw (os yw'r ategyn cadw yn weithredol)",
"Find (if searchreplace plugin activated)": "Canfod (os yw'r ategyn chwilio ac amnewid yn weithredol)",
"Plugins installed ({0}):": "Ategio wedi eu gosod ({0}):",
"Premium plugins:": "Ategion premiwm:",
"Learn more...": "Dysgu Mwy...",
"You are using {0}": "Rydych yn defnyddio {0}",
"Plugins": "Ategion",
"Handy Shortcuts": "Llwybrau byr cyfleus",
"Horizontal line": "Llinell lorweddol",
"Insert\/edit image": "Mewnosod\/golygu delwedd",
"Alternative description": "Disgrifiad arall",
"Accessibility": "Hygyrchedd",
"Image is decorative": "Delwedd yn addurniadol",
"Source": "Ffynhonnell",
"Dimensions": "Dimensiynau",
"Constrain proportions": "Gorfodi cyfrannedd",
"General": "Cyffredinol",
"Advanced": "Uwch",
"Style": "Arddull",
"Vertical space": "Gofod fertigol",
"Horizontal space": "Gofod llorweddol",
"Border": "Border",
"Insert image": "Mewnosod delwedd",
"Image...": "Delwedd...",
"Image list": "Rhestr delweddau",
"Rotate counterclockwise": "Troi gwrthgloc",
"Rotate clockwise": "Troi clocwedd",
"Flip vertically": "Fflipio fertigol",
"Flip horizontally": "Fflipio llorweddol",
"Edit image": "Golygu delwedd",
"Image options": "Dewisiadau delwedd",
"Zoom in": "Chwyddo mewn",
"Zoom out": "Chwyddo allan",
"Crop": "Tocio",
"Resize": "Ailfeintio",
"Orientation": "Cyfeiriadaeth",
"Brightness": "Disgleirdeb",
"Sharpen": "Hogi",
"Contrast": "Cyferbynnedd",
"Color levels": "Lefelau Lliw",
"Gamma": "Gamma",
"Invert": "Gwrthdroi",
"Apply": "Rhoi ar waith",
"Back": "Nol",
"Insert date\/time": "Mewnosod dyddiad\/amser",
"Date\/time": "Dyddiad\/amser",
"Insert\/edit link": "Mewnosod\/golygu dolen",
"Text to display": "Testun i'w ddangos",
"Url": "Url",
"Open link in...": "Agor dolen yn...",
"Current window": "Ffenestr gyfredol",
"None": "Dim",
"New window": "Ffenest newydd",
"Open link": "Agor dolen",
"Remove link": "Tynnu dolen",
"Anchors": "Angorau",
"Link...": "Dolen...",
"Paste or type a link": "Pastio neu deipio dolen",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Mae'n debyg mai cyfeiriad e-bost yw'r URL hwn. Ydych chi am ychwanegu'r rhagddoddiad mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Mae'n debyg mai dolen allanol yw'r URL hwn. Ydych chi am ychwanegu'r rhagddodiad http:\/\/ ?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Ymddengys mai dolen allannol yw'r URL a roddoch chi. Ydych chi eisiau ychwanegu'r rhagddodiad https:\/\/ gofynnol?",
"Link list": "Rhestr dolenni",
"Insert video": "Mewnosod fideo",
"Insert\/edit video": "Mewnosod\/golygu fideo",
"Insert\/edit media": "Mewnosod\/golygu cyfrwng",
"Alternative source": "Ffynhonnell amgen",
"Alternative source URL": "Ffynhonnell URL arall",
"Media poster (Image URL)": "Poster cyfrwng (URL delwedd)",
"Paste your embed code below:": "Gludwch eich cod mewnosod isod:",
"Embed": "Mewnosod",
"Media...": "Cyfrwng...",
"Nonbreaking space": "Bwlch heb dorri",
"Page break": "Toriad tudalen",
"Paste as text": "Gludo fel testun",
"Preview": "Rhagolwg",
"Print...": "Argraffu...",
"Save": "Cadw",
"Find": "Chwilio",
"Replace with": "Amnewid gyda",
"Replace": "Amnewid",
"Replace all": "Amnewid y cwbl",
"Previous": "Blaenorol",
"Next": "Nesaf",
"Find and Replace": "Canfod a Newid",
"Find and replace...": "Chwilio ac amnewid",
"Could not find the specified string.": "Methu ffeindio'r llinyn hwnnw.",
"Match case": "Cas yn cyfateb",
"Find whole words only": "Canfod geiriau llawn yn unig",
"Find in selection": "Canfod yn y dewisiad",
"Spellcheck": "Sillafydd",
"Spellcheck Language": "Iaith Gwirio Sillafu",
"No misspellings found.": "Dim camsillafiadau.",
"Ignore": "Anwybyddu",
"Ignore all": "Amwybyddu pob",
"Finish": "Gorffen",
"Add to Dictionary": "Adio i'r Geiriadur",
"Insert table": "Mewnosod tabl",
"Table properties": "Priodweddau tabl",
"Delete table": "Dileu'r tabl",
"Cell": "Cell",
"Row": "Rhes",
"Column": "Colofn",
"Cell properties": "Priodweddau'r gell",
"Merge cells": "Cyfuno celloedd",
"Split cell": "Hollti celloedd",
"Insert row before": "Mewnosod rhes cyn",
"Insert row after": "Mewnosod rhes ar \u00f4l",
"Delete row": "Dileu rhes",
"Row properties": "Priodweddau rhes",
"Cut row": "Torri rhes",
"Copy row": "Cop\u00efo rhes",
"Paste row before": "Gludo rhes cyn",
"Paste row after": "Gludo rhes ar \u00f4l",
"Insert column before": "Mewnosod colofn cyn",
"Insert column after": "Mewnosod colofn ar \u00f4l",
"Delete column": "Dileu colofn",
"Cols": "Colofnau",
"Rows": "Rhesi",
"Width": "Lled",
"Height": "Uchder",
"Cell spacing": "Bylchiad celloedd",
"Cell padding": "Padio celloedd",
"Caption": "Pennawd",
"Show caption": "Dangos capsiwn",
"Left": "Chwith",
"Center": "Canol",
"Right": "De",
"Cell type": "Math y gell",
"Scope": "Cwmpas",
"Alignment": "Aliniad",
"H Align": "Aliniad Ll",
"V Align": "Aliniad F",
"Top": "Brig",
"Middle": "Canol",
"Bottom": "Gwaelod",
"Header cell": "Cell bennawd",
"Row group": "Gr\u0175p rhes",
"Column group": "Gr\u0175p colofn",
"Row type": "Math y rhes",
"Header": "Pennyn",
"Body": "Corff",
"Footer": "Troedyn",
"Border color": "Lliw Border",
"Insert template...": "Mewnosod templed...",
"Templates": "Templedi",
"Template": "Templed",
"Text color": "Lliw testun",
"Background color": "Lliw cefndir",
"Custom...": "Personol...",
"Custom color": "Lliw personol",
"No color": "Dim Lliw",
"Remove color": "Tynnu lliw",
"Table of Contents": "Tabl Cynnwys",
"Show blocks": "Dangos blociau",
"Show invisible characters": "Dangos nodau anweledig",
"Word count": "Cyfri geiriau",
"Count": "Cyfrif",
"Document": "Dogfen",
"Selection": "Dewis",
"Words": "Geiriau",
"Words: {0}": "Geiriau: {0}",
"{0} words": "{0} o eiriau",
"File": "Ffeil",
"Edit": "Golygu",
"Insert": "Mewnosod",
"View": "Dangos",
"Format": "Fformat",
"Table": "Tabl",
"Tools": "Offer",
"Powered by {0}": "Gyrrir gan {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ardal Testun Uwch. Pwyswch ALT-F9 ar gyfer y ddewislen, Pwyswch ALT-F10 ar gyfer y bar offer. Pwyswch ALT-0 am gymorth",
"Image title": "Teitl delwedd",
"Border width": "Lled border",
"Border style": "Steil border",
"Error": "Gwall",
"Warn": "Rhybuddio",
"Valid": "Dilys",
"To open the popup, press Shift+Enter": "I agor y llamlen, pwyswch Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Ardal testun cyfoethog. Pwyswch ALT-0 am help.",
"System Font": "Ffont system",
"Failed to upload image: {0}": "Wedi methu uwchlwytho'r ddelwedd: {0}",
"Failed to load plugin: {0} from url {1}": "Wedi methu llwytho'r ategyn: {0} o'r url {1}",
"Failed to load plugin url: {0}": "Wedi methu llwytho url yr ategyn: {0}",
"Failed to initialize plugin: {0}": "Wedi methu ymgychwyn yr ategyn: {0}",
"example": "enghraifft",
"Search": "Chwilio",
"All": "Y cwbl",
"Currency": "Arian cyfred",
"Text": "Testun",
"Quotations": "Dyfyniadau",
"Mathematical": "Mathemategol",
"Extended Latin": "Lladin estynedig",
"Symbols": "Symbolau",
"Arrows": "Saethau",
"User Defined": "Diffinir gan y defnyddiwr",
"dollar sign": "Arwydd dolar",
"currency sign": "Arwydd arian cyfred",
"euro-currency sign": "Arwydd euro",
"colon sign": "Arwydd colon",
"cruzeiro sign": "Arwydd cruzeiro",
"french franc sign": "Arwydd ffranc Ffrengig",
"lira sign": "Arwydd lira",
"mill sign": "arwydd mill",
"naira sign": "arwydd naira",
"peseta sign": "arwydd peseta",
"rupee sign": "arwydd rupee",
"won sign": "arwydd won",
"new sheqel sign": "arwydd sheqel newydd",
"dong sign": "arwydd dong",
"kip sign": "arwydd kip",
"tugrik sign": "arwydd tugrik",
"drachma sign": "arwydd drachma",
"german penny symbol": "arwydd ceiniog almaenig",
"peso sign": "arwydd peso",
"guarani sign": "arwydd quarani",
"austral sign": "arwydd austral",
"hryvnia sign": "arwydd hryvnia",
"cedi sign": "arwydd cedi",
"livre tournois sign": "arwydd punt tournois",
"spesmilo sign": "arwydd spesmilo",
"tenge sign": "arwydd tenge",
"indian rupee sign": "arwydd rupee india",
"turkish lira sign": "arwydd lira twrcaidd",
"nordic mark sign": "arwydd marc nordig",
"manat sign": "arwydd manat",
"ruble sign": "arwydd ruble",
"yen character": "nod yen",
"yuan character": "nod yuan",
"yuan character, in hong kong and taiwan": "nod yuan yn Hong Kong a Taiwan",
"yen\/yuan character variant one": "nod yen\/yuan amrywiad un",
"Loading emoticons...": "Yn llwytho gwenogluniau",
"Could not load emoticons": "Wedi methu llwytho gwenogluniau",
"People": "Pobl",
"Animals and Nature": "Anifeiliaid a Natur",
"Food and Drink": "Bwyd a Diod",
"Activity": "Gweithgaredd",
"Travel and Places": "Teithio a lleoedd",
"Objects": "Gwrthrychau",
"Flags": "Baneri",
"Characters": "Nodau",
"Characters (no spaces)": "Nodau (dim gofod)",
"{0} characters": "{0} nod",
"Error: Form submit field collision.": "Gwall: Gwrthdrawiad maes cyflwyno ffurflen",
"Error: No form element found.": "Gwall: Ni chafwyd elfen ffurflen",
"Update": "Diweddaru",
"Color swatch": "Casgliad lliwiau",
"Turquoise": "Gwyrddlas",
"Green": "Gwyrdd",
"Blue": "Glas",
"Purple": "Porffor",
"Navy Blue": "Dulas",
"Dark Turquoise": "Gwyrddlas tywyll",
"Dark Green": "Gwyrdd tywyll",
"Medium Blue": "Glas canolig",
"Medium Purple": "Porffor canolig",
"Midnight Blue": "Glas y nos",
"Yellow": "Melyn",
"Orange": "Oren",
"Red": "Coch",
"Light Gray": "Llwyd golau",
"Gray": "d",
"Dark Yellow": "Melyn tywyll",
"Dark Orange": "Oren tywyll",
"Dark Red": "Coch tywyll",
"Medium Gray": "Llwyd canolig",
"Dark Gray": "Llwyd tywyll",
"Light Green": "Gwyrdd Golau",
"Light Yellow": "Melyn Golau",
"Light Red": "Coch Golau",
"Light Purple": "Porffor Golau",
"Light Blue": "Glas Golau",
"Dark Purple": "Porffor Tywyll",
"Dark Blue": "Glas Tywyll",
"Black": "Du",
"White": "Gwyn",
"Switch to or from fullscreen mode": "Newid i neu o'r modd sgr\u00een llawn",
"Open help dialog": "Agor y ddeialog gymorth",
"history": "hanes",
"styles": "steiliau",
"formatting": "fformatio",
"alignment": "aliniad",
"indentation": "mewnoli",
"Font": "Ffont",
"Size": "Maint",
"More...": "Mwy...",
"Select...": "Dewis...",
"Preferences": "Dewisiadau",
"Yes": "Iawn",
"No": "Na",
"Keyboard Navigation": "Llywio Bysellfwrdd",
"Version": "Fersiwn",
"Code view": "Golwg cod",
"Open popup menu for split buttons": "Agor naidlen ar gyfer botymau hollt",
"List Properties": "Rhestru Priodweddau",
"List properties...": "Rhestru priodweddau...",
"Start list at number": "Dechrau rhestr efo rhif",
"Line height": "Uchder llinell",
"comments": "Sylwadau",
"Format Painter": "Brwsh Fformat",
"Insert\/edit iframe": "Mewnosod\/golygu iframe",
"Capitalization": "Priflythrennu",
"lowercase": "llythrennau bach",
"UPPERCASE": "PRIFLYTHRENNAU",
"Title Case": "Priflythyren i bob gair",
"permanent pen": "pen sefydlog",
"Permanent Pen Properties": "Priodweddau Yswgrifbin Parhaol",
"Permanent pen properties...": "Priodweddau ysgrifbin parhaol...",
"case change": "Newid Cas",
"page embed": "Mewnblannu i'r dudalen",
"Advanced sort...": "Trefnu uwch...",
"Advanced Sort": "Trefnu Uwch",
"Sort table by column ascending": "Trefnu tabl yn \u00f4l colofn yn esgynnol",
"Sort table by column descending": "Trefnu tabl yn \u00f4l colofn yn ddisgynnol",
"Sort": "Trefnu",
"Order": "Trefn",
"Sort by": "Trefnu yn \u00f4l",
"Ascending": "yn Esgynnol",
"Descending": "yn Ddisgynnol",
"Column {0}": "Colofn {0}",
"Row {0}": "Rhes {0}",
"Spellcheck...": "Gwirydd sillafu...",
"Misspelled word": "Gair wedi ei gamsillafu",
"Suggestions": "Awgrymiadau",
"Change": "Newid",
"Finding word suggestions": "Darganfod geiriau a awgrymir",
"Success": "Llwyddiant",
"Repair": "Trwsio",
"Issue {0} of {1}": "Problem  {0} o {1}",
"Images must be marked as decorative or have an alternative text description": "Rhaid bod delwedd wedi ei marcio yn addurniadol neu gyda disgrifiad testun arall",
"Images must have an alternative text description. Decorative images are not allowed.": "Rhaid bod gan ddelwedd ddisgrifiad testun arall. Ni chaniateir delweddau addurniadol.",
"Or provide alternative text:": "Neu darparu testun arall:",
"Make image decorative:": "Gwneud delwedd yn addurniadol:",
"ID attribute must be unique": "Rhaid i'r priodoledd ID fod yn unigryw",
"Make ID unique": "Gwneud yr ID yn unigryw",
"Keep this ID and remove all others": "Cadwch yr ID hwn a dileu pob un arall",
"Remove this ID": "Dileu'r ID hwn",
"Remove all IDs": "Dileu pob ID",
"Checklist": "Rhestr wirio",
"Anchor": "Angor",
"Special character": "Nod arbennig",
"Color": "Lliw",
"Document properties": "Priodweddau'r ddogfen",
"Image description": "Disgrifiad y ddelwedd",
"Image": "Delwedd",
"Insert link": "Mewnosod dolen",
"Link": "Dolen",
"Target": "Targed",
"Media": "Cyfrwng",
"Poster": "Poster",
"Print": "Argraffu",
"Whole words": "Geiriau cyfan",
"Find and replace": "Chwilio ac amnewid",
"Prev": "Blaenorol",
"Insert template": "Mewnosod templed"
});js/tinymce/langs/ta.js000064400000143341151727150330010710 0ustar00tinymce.addI18n('ta',{
"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Undo": "\u0b9a\u0bc6\u0baf\u0bb2\u0bcd\u0ba4\u0bb5\u0bbf\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Copy": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Select all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b86\u0bb5\u0ba3\u0bae\u0bcd",
"Ok": "\u0b9a\u0bb0\u0bbf",
"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Visual aids": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd \u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
"Underline": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
"Strikethrough": "\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
"Superscript": "\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
"Subscript": "\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
"Clear formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
"Align left": "\u0b87\u0b9f\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Align center": "\u0bae\u0bc8\u0baf \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Bullet list": "\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f  \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Numbered list": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Decrease indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
"Increase indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
"Formats": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf \u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0b86\u0b95\u0bb5\u0bc7 \u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9 Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
"Headers": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
"Headings": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Heading 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
"Heading 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
"Heading 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
"Heading 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
"Heading 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
"Heading 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
"Preformatted": "\u0bae\u0bc1\u0ba9\u0bcd\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
"Div": "\u0baa\u0bbf\u0bb0\u0bbf\u0bb5\u0bc1 (Div)",
"Pre": "\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1 (Pre)",
"Code": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
"Inline": "\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1. \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
"Fonts": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Font Sizes": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1 \u0b85\u0bb3\u0bb5\u0bc1\u0b95\u0bb3\u0bcd",
"Class": "Class",
"Browse for an image": "\u0b92\u0bb0\u0bc1 \u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0b89\u0bb2\u0bbe\u0bb5\u0bc1\u0b95",
"OR": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1",
"Drop an image here": "\u0b92\u0bb0\u0bc1 \u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc1 \u0b87\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd \u0baa\u0bcb\u0b9f\u0bb5\u0bc1\u0bae\u0bcd",
"Upload": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Block": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf",
"Align": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Default": "\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd \u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
"Anchor...": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd...",
"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u0b86\u0ba9\u0ba4\u0bc1 \u0b92\u0bb0\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd; \u0b87\u0ba4\u0ba9\u0bc8\u0ba4\u0bcd \u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd, \u0b8e\u0ba3\u0bcd\u0b95\u0bb3\u0bcd, \u0b87\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc7\u0bbe\u0b9f\u0bc1\u0b95\u0bb3\u0bcd (-), \u0baa\u0bc1\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bb3\u0bcd (.), \u0bae\u0bc1\u0b95\u0bcd\u0b95\u0bbe\u0bb1\u0bcd\u0baa\u0bc1\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bb3\u0bcd (:) \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc7\u0bbe\u0b9f\u0bc1\u0b95\u0bb3\u0bcd (_) \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bc7 \u0b87\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd.",
"You have unsaved changes are you sure you want to navigate away?": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95 \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Special character...": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc1...",
"Source code": "\u0bae\u0bc2\u0bb2 \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
"Insert\/Edit code sample": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Language": "\u0bae\u0bca\u0bb4\u0bbf",
"Code sample...": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf...",
"Color Picker": "\u0ba8\u0bbf\u0bb1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0bb5\u0bc1",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb2\u0bae\u0bcd",
"Right to left": "\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b87\u0b9f\u0bae\u0bcd",
"Emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Emoticons...": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Metadata and Document Properties": "\u0bae\u0bc0\u0ba4\u0bcd\u0ba4\u0bb0\u0bb5\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b86\u0bb5\u0ba3\u0baa\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Keywords": "\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Robots": "\u0baa\u0bca\u0bb1\u0bbf\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd (Robots)",
"Author": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
"Encoding": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Fullscreen": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
"Action": "\u0b9a\u0bc6\u0baf\u0bb2\u0bcd",
"Shortcut": "\u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf",
"Help": "\u0b89\u0ba4\u0bb5\u0bbf",
"Address": "\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Focus to menubar": "\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Focus to toolbar": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Focus to element path": "\u0bae\u0bc2\u0bb2\u0b95\u0baa\u0bcd \u0baa\u0bbe\u0ba4\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Focus to contextual toolbar": "\u0b9a\u0bc2\u0bb4\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Insert link (if link plugin activated)": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95 (\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b9a\u0bc6\u0baf\u0bb2\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bbe\u0bb2\u0bcd)",
"Save (if save plugin activated)": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95 (\u0b9a\u0bc7\u0bae\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b9a\u0bc6\u0baf\u0bb2\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bbe\u0bb2\u0bcd)",
"Find (if searchreplace plugin activated)": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 (\u0ba4\u0bc7\u0b9f\u0bbf\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bb2\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b9a\u0bc6\u0baf\u0bb2\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bbe\u0bb2\u0bcd)",
"Plugins installed ({0}):": "\u0ba8\u0bbf\u0bb1\u0bc1\u0bb5\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc1\u0bb3\u0bcd\u0bb3 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf\u0b95\u0bb3\u0bcd ({0}):",
"Premium plugins:": "\u0b89\u0baf\u0bb0\u0bcd\u0bae\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf\u0b95\u0bb3\u0bcd:",
"Learn more...": "\u0bae\u0bc7\u0bb2\u0bc1\u0bae\u0bcd \u0b85\u0bb1\u0bbf\u0b95...",
"You are using {0}": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb5\u0ba4\u0bc1 {0}",
"Plugins": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf\u0b95\u0bb3\u0bcd",
"Handy Shortcuts": "\u0b8e\u0bb3\u0bbf\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0bc8\u0baf\u0bbe\u0bb3\u0b95\u0bcd\u0b95\u0bc2\u0b9f\u0bbf\u0baf \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bcd",
"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8 \u0b95\u0bcb\u0b9f\u0bc1",
"Insert\/edit image": "\u0baa\u0b9f\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Alternative description": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Accessibility": "\u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bcd\u0ba4\u0ba9\u0bcd\u0bae\u0bc8",
"Image is decorative": "\u0baa\u0b9f\u0bae\u0bcd \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0bae\u0bbe\u0ba9\u0ba4\u0bc1",
"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
"Dimensions": "\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Constrain proportions": "\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"General": "\u0baa\u0bca\u0ba4\u0bc1",
"Advanced": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Horizontal space": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Border": "\u0b95\u0bb0\u0bc8",
"Insert image": "\u0baa\u0b9f\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Image...": "\u0baa\u0b9f\u0bae\u0bcd...",
"Image list": "\u0baa\u0b9f\u0baa\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Rotate counterclockwise": "\u0b95\u0b9f\u0bbf\u0b95\u0bbe\u0bb0 \u0b8e\u0ba4\u0bbf\u0bb0\u0bcd\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc1\u0bb4\u0bb1\u0bcd\u0bb1\u0bc1",
"Rotate clockwise": "\u0b95\u0b9f\u0bbf\u0b95\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc1\u0bb4\u0bb1\u0bcd\u0bb1\u0bc1",
"Flip vertically": "\u0b9a\u0bc6\u0b99\u0bcd\u0b95\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0b95 \u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bc1",
"Flip horizontally": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f\u0bae\u0bbe\u0b95 \u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bc1",
"Edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0ba4\u0bca\u0b95\u0bc1",
"Image options": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Zoom in": "\u0baa\u0bc6\u0bb0\u0bbf\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Zoom out": "\u0b9a\u0bbf\u0bb1\u0bbf\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Crop": "\u0b9a\u0bc6\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bc1",
"Resize": "\u0bae\u0bb1\u0bc1\u0b85\u0bb3\u0bb5\u0bbf\u0b9f\u0bc1",
"Orientation": "\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bae\u0bc8\u0bb5\u0bc1",
"Brightness": "\u0b92\u0bb3\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1",
"Sharpen": "\u0b95\u0bc2\u0bb0\u0bcd\u0bae\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Contrast": "\u0ba8\u0bbf\u0bb1\u0bae\u0bbe\u0bb1\u0bc1\u0baa\u0bbe\u0b9f\u0bc1",
"Color levels": "\u0bb5\u0ba3\u0bcd\u0ba3 \u0ba8\u0bbf\u0bb2\u0bc8\u0b95\u0bb3\u0bcd",
"Gamma": "Gamma",
"Invert": "\u0ba8\u0bc7\u0bb0\u0bcd\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1",
"Apply": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Back": "\u0baa\u0bbf\u0ba9\u0bcd",
"Insert date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd",
"Insert\/edit link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Text to display": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
"Url": "\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Open link in...": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b87\u0ba4\u0bbf\u0bb2\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95...",
"Current window": "\u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc8\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
"None": "\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
"Open link": "\u0ba4\u0bbf\u0bb1\u0ba8\u0bcd\u0ba4 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Anchors": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Link...": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1...",
"Paste or type a link": "\u0b92\u0bb0\u0bc1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95 \u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0ba4\u0b9f\u0bcd\u0b9f\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bae\u0bbf\u0ba9\u0bcd-\u0b85\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 mailto: \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link) \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 http:\/\/ \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link) \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 https:\/\/ \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8 (prefix) \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bb3\u0bbe?",
"Link list": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0baa\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Insert\/edit media": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2\u0bae\u0bcd",
"Alternative source URL": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2 \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Media poster (Image URL)": "\u0b8a\u0b9f\u0b95 \u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf (\u0b89\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf)",
"Paste your embed code below:": "\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b95\u0bc0\u0bb4\u0bc7 \u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
"Media...": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd...",
"Nonbreaking space": "\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Page break": "\u0baa\u0b95\u0bcd\u0b95 \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Preview": "\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
"Print...": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95...",
"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
"Find": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Replace": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Replace all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Previous": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
"Find and Replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Find and replace...": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95...",
"Could not find the specified string.": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f \u0b9a\u0bb0\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"Match case": "\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Find whole words only": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Find in selection": "\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bbf\u0bb2\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Spellcheck": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Spellcheck Language": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1 \u0bae\u0bca\u0bb4\u0bbf",
"No misspellings found.": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0b95\u0bb3\u0bcd \u0b95\u0bbe\u0ba3\u0baa\u0bcd\u0baa\u0b9f\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.",
"Ignore": "\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
"Ignore all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Add to Dictionary": "\u0b85\u0b95\u0bb0\u0bbe\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Table properties": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Cell properties": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Merge cells": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Insert column before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Delete column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Cols": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
"Rows": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
"Caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Show caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Left": "\u0b87\u0b9f\u0bae\u0bcd",
"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0bb5\u0b95\u0bc8",
"Scope": "\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
"Alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
"H Align": "\u0b95\u0bbf (H) \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"V Align": "\u0b9a\u0bc6 (V) \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Top": "\u0bae\u0bc7\u0bb2\u0bcd",
"Middle": "\u0ba8\u0b9f\u0bc1",
"Bottom": "\u0b95\u0bc0\u0bb4\u0bcd",
"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
"Column group": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0b95\u0bc8",
"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
"Footer": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Border color": "\u0b95\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Insert template...": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95...",
"Templates": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1",
"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Background color": "\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Custom...": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd...",
"Custom color": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"No color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
"Remove color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Table of Contents": "\u0baa\u0bca\u0bb0\u0bc1\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Show blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Show invisible characters": "\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Word count": "\u0b9a\u0bca\u0bb2\u0bcd \u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b95\u0bcd\u0b95\u0bc8",
"Count": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b95\u0bcd\u0b95\u0bc8",
"Document": "\u0b86\u0bb5\u0ba3\u0bae\u0bcd",
"Selection": "\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1",
"Words": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd: {0}",
"{0} words": "{0} \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Insert": "\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Format": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
"Tools": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
"Powered by {0}": "\u0bb5\u0bb2\u0bc1\u0bb5\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0ba4\u0bc1 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 , \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1 ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
"Image title": "\u0baa\u0b9f\u0ba4\u0bcd \u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Border width": "\u0b95\u0bb0\u0bc8 \u0b85\u0b95\u0bb2\u0bae\u0bcd",
"Border style": "\u0b95\u0bb0\u0bc8 \u0baa\u0bbe\u0ba3\u0bbf",
"Error": "\u0baa\u0bbf\u0bb4\u0bc8",
"Warn": "\u0b8e\u0b9a\u0bcd\u0b9a\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Valid": "\u0b9a\u0bc6\u0bb2\u0bcd\u0bb2\u0ba4\u0bcd\u0ba4\u0b95\u0bcd\u0b95\u0ba4\u0bc1",
"To open the popup, press Shift+Enter": "\u0bae\u0bc7\u0bb2\u0bcd\u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1-\u0bb5\u0bc8\u0ba4\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95 Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
"System Font": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Failed to upload image: {0}": "\u0baa\u0b9f\u0bae\u0bcd \u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0}",
"Failed to load plugin: {0} from url {1}": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0} - {1} \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf\u0baf\u0bbf\u0bb2\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1",
"Failed to load plugin url: {0}": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0}",
"Failed to initialize plugin: {0}": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0ba4\u0bc1\u0bb5\u0b99\u0bcd\u0b95\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0}",
"example": "\u0b89\u0ba4\u0bbe\u0bb0\u0ba3\u0bae\u0bcd",
"Search": "\u0ba4\u0bc7\u0b9f\u0bc1\u0b95",
"All": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1\u0bae\u0bcd",
"Currency": "\u0b9a\u0bc6\u0bb2\u0bbe\u0bb5\u0ba3\u0bbf (Currency)",
"Text": "\u0b89\u0bb0\u0bc8",
"Quotations": "\u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bc7\u0bbe\u0bb3\u0bcd\u0b95\u0bb3\u0bcd",
"Mathematical": "\u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bbf\u0baf\u0bb2\u0bcd",
"Extended Latin": "\u0ba8\u0bc0\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0b87\u0bb2\u0ba4\u0bcd\u0ba4\u0bc0\u0ba9\u0bcd",
"Symbols": "\u0b87\u0b9f\u0bc1\u0b95\u0bc1\u0bb1\u0bbf\u0b95\u0bb3\u0bcd",
"Arrows": "\u0b85\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"User Defined": "\u0baa\u0baf\u0ba9\u0bb0\u0bcd \u0bb5\u0bb0\u0bc8\u0baf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4",
"dollar sign": "dollar \u0b95\u0bc1\u0bb1\u0bbf",
"currency sign": "\u0b9a\u0bc6\u0bb2\u0bbe\u0bb5\u0ba3\u0bbf\u0b95\u0bcd \u0b95\u0bc1\u0bb1\u0bbf",
"euro-currency sign": "euro-currency \u0b95\u0bc1\u0bb1\u0bbf",
"colon sign": "colon \u0b95\u0bc1\u0bb1\u0bbf",
"cruzeiro sign": "cruzeiro \u0b95\u0bc1\u0bb1\u0bbf",
"french franc sign": "french franc \u0b95\u0bc1\u0bb1\u0bbf",
"lira sign": "lira \u0b95\u0bc1\u0bb1\u0bbf",
"mill sign": "mill \u0b95\u0bc1\u0bb1\u0bbf",
"naira sign": "naira \u0b95\u0bc1\u0bb1\u0bbf",
"peseta sign": "peseta \u0b95\u0bc1\u0bb1\u0bbf",
"rupee sign": "rupee \u0b95\u0bc1\u0bb1\u0bbf",
"won sign": "won \u0b95\u0bc1\u0bb1\u0bbf",
"new sheqel sign": "new sheqel \u0b95\u0bc1\u0bb1\u0bbf",
"dong sign": "dong \u0b95\u0bc1\u0bb1\u0bbf",
"kip sign": "kip \u0b95\u0bc1\u0bb1\u0bbf",
"tugrik sign": "tugrik \u0b95\u0bc1\u0bb1\u0bbf",
"drachma sign": "drachma \u0b95\u0bc1\u0bb1\u0bbf",
"german penny symbol": "german penny \u0b87\u0b9f\u0bc1\u0b95\u0bc1\u0bb1\u0bbf",
"peso sign": "peso \u0b95\u0bc1\u0bb1\u0bbf",
"guarani sign": "guarani \u0b95\u0bc1\u0bb1\u0bbf",
"austral sign": "austral \u0b95\u0bc1\u0bb1\u0bbf",
"hryvnia sign": "hryvnia \u0b95\u0bc1\u0bb1\u0bbf",
"cedi sign": "cedi \u0b95\u0bc1\u0bb1\u0bbf",
"livre tournois sign": "livre tournois \u0b95\u0bc1\u0bb1\u0bbf",
"spesmilo sign": "spesmilo \u0b95\u0bc1\u0bb1\u0bbf",
"tenge sign": "tenge \u0b95\u0bc1\u0bb1\u0bbf",
"indian rupee sign": "indian rupee \u0b95\u0bc1\u0bb1\u0bbf",
"turkish lira sign": "turkish lira \u0b95\u0bc1\u0bb1\u0bbf",
"nordic mark sign": "nordic mark \u0b95\u0bc1\u0bb1\u0bbf",
"manat sign": "manat \u0b95\u0bc1\u0bb1\u0bbf",
"ruble sign": "ruble \u0b95\u0bc1\u0bb1\u0bbf",
"yen character": "yen \u0b89\u0bb0\u0bc1",
"yuan character": "yuan \u0b89\u0bb0\u0bc1",
"yuan character, in hong kong and taiwan": "yuan \u0b89\u0bb0\u0bc1, \u0bb9\u0bbe\u0b99\u0bcd\u0b95\u0bbe\u0b99\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0ba4\u0bbe\u0baf\u0bcd\u0bb5\u0bbe\u0ba9\u0bcd \u0b87\u0bb2\u0bcd",
"yen\/yuan character variant one": "yen\/yuan \u0b89\u0bb0\u0bc1 \u0bae\u0bbe\u0bb1\u0bc1\u0baa\u0bbe\u0b9f\u0bc1",
"Loading emoticons...": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b8f\u0bb1\u0bcd\u0bb1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0b95\u0bbf\u0ba9\u0bcd\u0bb1\u0ba9...",
"Could not load emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bc8 \u0b8f\u0bb1\u0bcd\u0bb1 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"People": "\u0bae\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Animals and Nature": "\u0bae\u0bbf\u0bb0\u0bc1\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b87\u0baf\u0bb1\u0bcd\u0b95\u0bc8",
"Food and Drink": "\u0b89\u0ba3\u0bb5\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0baa\u0bbe\u0ba9\u0bae\u0bcd",
"Activity": "\u0b9a\u0bc6\u0baf\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1",
"Travel and Places": "\u0baa\u0baf\u0ba3\u0bae\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b87\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Objects": "\u0baa\u0bca\u0bb0\u0bc1\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",
"Flags": "\u0b95\u0bca\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",
"Characters": "\u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Characters (no spaces)": "\u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd (\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf\u0b95\u0bb3\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8)",
"{0} characters": "{0} \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Error: Form submit field collision.": "\u0baa\u0bbf\u0bb4\u0bc8: \u0baa\u0b9f\u0bbf\u0bb5\u0bae\u0bcd \u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd \u0baa\u0bc1\u0bb2\u0bae\u0bcd \u0bae\u0bcb\u0ba4\u0bb2\u0bcd.",
"Error: No form element found.": "\u0baa\u0bbf\u0bb4\u0bc8: \u0baa\u0bc1\u0bb2\u0bae\u0bcd \u0bae\u0bc2\u0bb2\u0b95\u0bae\u0bcd \u0b8e\u0ba4\u0bc1\u0bb5\u0bc1\u0bae\u0bcd \u0b95\u0bbe\u0ba3\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.",
"Update": "\u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95",
"Color swatch": "\u0ba8\u0bbf\u0bb1\u0b9a\u0bcd \u0b9a\u0bcb\u0ba4\u0ba9\u0bc8\u0b95\u0bcd\u0b95\u0bb2\u0bb5\u0bc8",
"Turquoise": "\u0ba8\u0bc0\u0bb2\u0baa\u0bcd\u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Green": "\u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Blue": "\u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Purple": "\u0b8a\u0ba4\u0bbe",
"Navy Blue": "\u0b95\u0b9f\u0bb1\u0bcd\u0baa\u0b9f\u0bc8 \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Dark Turquoise": "\u0b85\u0b9f\u0bb0\u0bcd \u0ba8\u0bc0\u0bb2\u0baa\u0bcd\u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Dark Green": "\u0b85\u0b9f\u0bb0\u0bcd \u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Medium Blue": "\u0ba8\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb0 \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Medium Purple": "\u0ba8\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb0 \u0b8a\u0ba4\u0bbe",
"Midnight Blue": "\u0ba8\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bb5\u0bc1 \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Yellow": "\u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Orange": "\u0b9a\u0bbf\u0bb5\u0ba8\u0bcd\u0ba4 \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Red": "\u0b9a\u0bbf\u0bb5\u0baa\u0bcd\u0baa\u0bc1",
"Light Gray": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Gray": "\u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Dark Yellow": "\u0b85\u0b9f\u0bb0\u0bcd \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Dark Orange": "\u0b85\u0b9f\u0bb0\u0bcd \u0b9a\u0bbf\u0bb5\u0ba8\u0bcd\u0ba4 \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Dark Red": "\u0b85\u0b9f\u0bb0\u0bcd \u0b9a\u0bbf\u0bb5\u0baa\u0bcd\u0baa\u0bc1",
"Medium Gray": "\u0ba8\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb0 \u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Dark Gray": "\u0b85\u0b9f\u0bb0\u0bcd \u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Light Green": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Light Yellow": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Light Red": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd\u00a0\u0b9a\u0bbf\u0bb5\u0baa\u0bcd\u0baa\u0bc1",
"Light Purple": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0b8a\u0ba4\u0bbe",
"Light Blue": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Dark Purple": "\u0b85\u0b9f\u0bb0\u0bcd \u0b8a\u0ba4\u0bbe",
"Dark Blue": "\u0b85\u0b9f\u0bb0\u0bcd \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Black": "\u0b95\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
"White": "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bc8",
"Switch to or from fullscreen mode": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0bc1\/\u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bc1\u0b95",
"Open help dialog": "\u0b89\u0ba4\u0bb5\u0bbf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95",
"history": "\u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bc1",
"styles": "\u0baa\u0bbe\u0ba3\u0bbf\u0b95\u0bb3\u0bcd",
"formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd",
"alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
"indentation": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bcd",
"Font": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Size": "\u0b85\u0bb3\u0bb5\u0bc1",
"More...": "\u0bae\u0bc7\u0bb2\u0bc1\u0bae\u0bcd...",
"Select...": "\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95...",
"Preferences": "\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Yes": "\u0b86\u0bae\u0bcd",
"No": "\u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
"Keyboard Navigation": "\u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0bb5\u0bb4\u0bbf\u0b9a\u0bcd\u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd",
"Version": "\u0baa\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Code view": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
"Open popup menu for split buttons": "\u0baa\u0bbf\u0bb3\u0bb5\u0bc1 \u0baa\u0bca\u0ba4\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd\u0b95\u0bb3\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0bae\u0bc7\u0bb2\u0bcd\u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95",
"List Properties": "\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bbf\u0b9f\u0bc1\u0b95",
"List properties...": "\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bbf\u0b9f\u0bc1\u0b95..",
"Start list at number": "\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bc8 \u0b87\u0ba8\u0bcd\u0ba4 \u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0bb2\u0bcd \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95\u0bc1\u0b95",
"Line height": "\u0bb5\u0bb0\u0bbf \u0b89\u0baf\u0bb0\u0bae\u0bcd",
"comments": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bb3\u0bcd",
"Format Painter": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0bc2\u0b9a\u0bbe\u0bb3\u0ba9\u0bcd",
"Insert\/edit iframe": "iframe \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Capitalization": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"lowercase": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bc6\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"UPPERCASE": "\u0baa\u0bc7\u0bb0\u0bc6\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Title Case": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bcd",
"permanent pen": "\u0ba8\u0bbf\u0bb0\u0ba8\u0bcd\u0ba4\u0bb0\u0baa\u0bcd \u0baa\u0bc7\u0ba9\u0bbe",
"Permanent Pen Properties": "\u0ba8\u0bbf\u0bb0\u0ba8\u0bcd\u0ba4\u0bb0\u0baa\u0bcd \u0baa\u0bc7\u0ba9\u0bbe \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Permanent pen properties...": "\u0ba8\u0bbf\u0bb0\u0ba8\u0bcd\u0ba4\u0bb0\u0baa\u0bcd \u0baa\u0bc7\u0ba9\u0bbe \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd...",
"case change": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bae\u0bcd",
"page embed": "\u0baa\u0b95\u0bcd\u0b95\u0bae\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd",
"Advanced sort...": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd...",
"Advanced Sort": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Sort table by column ascending": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b8f\u0bb1\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bbe\u0b95 \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Sort table by column descending": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b87\u0bb1\u0b99\u0bcd\u0b95\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bbe\u0b95 \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Sort": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Order": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0bae\u0bc1\u0bb1\u0bc8",
"Sort by": "\u0b87\u0ba4\u0ba9\u0bbe\u0bb2\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Ascending": "\u0b8f\u0bb1\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bcd",
"Descending": "\u0b87\u0bb1\u0b99\u0bcd\u0b95\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bcd",
"Column {0}": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 {0}",
"Row {0}": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 {0}",
"Spellcheck...": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95...",
"Misspelled word": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc1\u0bb3\u0bcd\u0bb3 \u0b9a\u0bca\u0bb2\u0bcd",
"Suggestions": "\u0baa\u0bb0\u0bbf\u0ba8\u0bcd\u0ba4\u0bc1\u0bb0\u0bc8\u0b95\u0bb3\u0bcd",
"Change": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Finding word suggestions": "\u0b9a\u0bca\u0bb2\u0bcd \u0baa\u0bb0\u0bbf\u0ba8\u0bcd\u0ba4\u0bc1\u0bb0\u0bc8\u0b95\u0bb3\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bb1\u0bbf\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1",
"Success": "\u0bb5\u0bc6\u0bb1\u0bcd\u0bb1\u0bbf",
"Repair": "\u0b9a\u0bb0\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Issue {0} of {1}": "\u0baa\u0bbf\u0bb0\u0b9a\u0bcd\u0b9a\u0bbf\u0ba9\u0bc8 {0} \/ {1}",
"Images must be marked as decorative or have an alternative text description": "\u0baa\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0bae\u0bbe\u0b95 \u0b95\u0bc1\u0bb1\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0b89\u0bb0\u0bc8 \u0bb5\u0bbf\u0bb3\u0b95\u0bcd\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bbf\u0bb0\u0bc1\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0baa\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0b89\u0bb0\u0bc8 \u0bb5\u0bbf\u0bb3\u0b95\u0bcd\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bbf\u0bb0\u0bc1\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd. \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0baa\u0bcd \u0baa\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0b85\u0ba9\u0bc1\u0bae\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.",
"Or provide alternative text:": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bc8 \u0bb5\u0bb4\u0b99\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
"Make image decorative:": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0bae\u0bbe\u0ba9\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"ID attribute must be unique": "ID \u0baa\u0ba3\u0bcd\u0baa\u0bc1 \u0ba4\u0ba9\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1\u0bb5\u0bae\u0bbe\u0b95 \u0b87\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd",
"Make ID unique": "ID-\u0baf\u0bc8 \u0ba4\u0ba9\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1\u0bb5\u0bae\u0bbe\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Keep this ID and remove all others": "\u0b87\u0ba8\u0bcd\u0ba4 ID-\u0baf\u0bc8 \u0bb5\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1 \u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bb5\u0bc1\u0bae\u0bcd",
"Remove this ID": "\u0b87\u0ba8\u0bcd\u0ba4 ID \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Remove all IDs": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1 ID-\u0b95\u0bb3\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Checklist": "\u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Anchor": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
"Special character": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Code sample": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf",
"Color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Document properties": "\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Image description": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Image": "\u0baa\u0b9f\u0bae\u0bcd",
"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
"Link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Poster": "\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
"Media": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd",
"Print": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
"Find and replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Insert template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95"
});js/tinymce/langs/fa.js000064400000115652151727150330010676 0ustar00tinymce.addI18n('fa',{
"Redo": "\u0628\u0627\u0632\u0627\u0646\u062c\u0627\u0645",
"Undo": "\u0648\u0627\u06af\u0631\u062f",
"Cut": "\u0628\u0631\u0634",
"Copy": "\u06a9\u067e\u06cc",
"Paste": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646",
"Select all": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0647\u0645\u0647",
"New document": "\u0633\u0646\u062f \u062c\u062f\u06cc\u062f",
"Ok": "\u062a\u0623\u06cc\u06cc\u062f",
"Cancel": "\u0644\u063a\u0648",
"Visual aids": "\u06a9\u0645\u06a9\u200c\u0647\u0627\u06cc \u0628\u0635\u0631\u06cc",
"Bold": "\u067e\u0631\u0631\u0646\u06af",
"Italic": "\u06a9\u062c",
"Underline": "\u0632\u06cc\u0631 \u062e\u0637 \u062f\u0627\u0631",
"Strikethrough": "\u062e\u0637 \u0632\u062f\u0646",
"Superscript": "\u0628\u0627\u0644\u0627\u0646\u06af\u0627\u0634\u062a",
"Subscript": "\u0632\u06cc\u0631\u0646\u06af\u0627\u0634\u062a",
"Clear formatting": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc",
"Align left": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u0627\u0632 \u0686\u067e",
"Align center": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u0627\u0632 \u0648\u0633\u0637",
"Align right": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u0627\u0632 \u0631\u0627\u0633\u062a",
"Justify": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc \u062f\u0648\u0637\u0631\u0641\u0647",
"Bullet list": "\u0641\u0647\u0631\u0633\u062a \u0646\u0634\u0627\u0646\u0647\u200c\u062f\u0627\u0631",
"Numbered list": "\u0641\u0647\u0631\u0633\u062a \u0634\u0645\u0627\u0631\u0647\u200c\u062f\u0627\u0631",
"Decrease indent": "\u06a9\u0627\u0647\u0634 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc",
"Increase indent": "\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648\u0631\u0641\u062a\u06af\u06cc",
"Close": "\u0628\u0633\u062a\u0646",
"Formats": "\u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc\u200c\u0647\u0627",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u06a9\u0644\u06cc\u067e\u200c\u0628\u0648\u0631\u062f \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u0627\u0632 \u0645\u06cc\u0627\u0646\u0628\u0631\u0647\u0627\u06cc Ctrl+X\/C\/V \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.",
"Headers": "\u0633\u0631\u0628\u0631\u06af\u200c\u0647\u0627",
"Header 1": "\u0633\u0631\u0628\u0631\u06af 1",
"Header 2": "\u0633\u0631\u0628\u0631\u06af 2",
"Header 3": "\u0633\u0631\u0628\u0631\u06af 3",
"Header 4": "\u0633\u0631\u0628\u0631\u06af 4",
"Header 5": "\u0633\u0631\u0628\u0631\u06af 5",
"Header 6": "\u0633\u0631\u0628\u0631\u06af 6",
"Headings": "\u0633\u0631\u0641\u0635\u0644\u200c\u0647\u0627",
"Heading 1": "\u0633\u0631\u0641\u0635\u0644 1",
"Heading 2": "\u0633\u0631\u0641\u0635\u0644 2",
"Heading 3": "\u0633\u0631\u0641\u0635\u0644 3",
"Heading 4": "\u0633\u0631\u0641\u0635\u0644 4",
"Heading 5": "\u0633\u0631\u0641\u0635\u0644 5",
"Heading 6": "\u0633\u0631\u0641\u0635\u0644 6",
"Preformatted": "\u0627\u0632 \u067e\u06cc\u0634 \u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc\u200c\u0634\u062f\u0647",
"Div": "\u0628\u062e\u0634",
"Pre": "\u067e\u06cc\u0634",
"Code": "\u06a9\u062f",
"Paragraph": "\u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641",
"Blockquote": "\u0646\u0642\u0644 \u0642\u0648\u0644 \u0628\u0644\u0648\u06a9\u06cc",
"Inline": "\u0647\u0645\u200c\u0631\u0627\u0633\u062a\u0627",
"Blocks": "\u0628\u0644\u0648\u06a9\u200c\u0647\u0627",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0631\u0627 \u063a\u06cc\u0631\u200c\u0641\u0639\u0627\u0644 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u062a\u0648\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.",
"Fonts": "\u0641\u0648\u0646\u062a\u200c\u200c\u0647\u0627",
"Font Sizes": "\u0627\u0646\u062f\u0627\u0632\u0647\u0654 \u0641\u0648\u0646\u062a",
"Class": "\u0637\u0628\u0642\u0647",
"Browse for an image": "\u06af\u0634\u062a\u0646 \u0628\u0631\u0627\u06cc \u0639\u06a9\u0633 \u0645\u0648\u0631\u062f \u0646\u0638\u0631",
"OR": "OR",
"Drop an image here": "\u062a\u0635\u0648\u06cc\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0631\u0647\u0627 \u06a9\u0646\u06cc\u062f",
"Upload": "\u0622\u067e\u0644\u0648\u062f",
"Block": "\u0628\u0644\u0648\u06a9",
"Align": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc",
"Default": "\u067e\u06cc\u0634\u0641\u0631\u0636",
"Circle": "\u062f\u0627\u06cc\u0631\u0647",
"Disc": "\u062f\u06cc\u0633\u06a9",
"Square": "\u0645\u0631\u0628\u0639",
"Lower Alpha": "\u0622\u0644\u0641\u0627\u0621 \u06a9\u0648\u0686\u06a9",
"Lower Greek": "\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0648\u0686\u06a9",
"Lower Roman": "\u0631\u0648\u0645\u06cc \u06a9\u0648\u0686\u06a9",
"Upper Alpha": "\u0622\u0644\u0641\u0627\u0621 \u0628\u0632\u0631\u06af",
"Upper Roman": "\u0631\u0648\u0645\u06cc \u0628\u0632\u0631\u06af",
"Anchor...": "\u0642\u0644\u0627\u0628...",
"Name": "\u0646\u0627\u0645",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.",
"You have unsaved changes are you sure you want to navigate away?": "\u0634\u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647 \u0627\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631\u0648\u06cc\u062f\u061f",
"Restore last draft": "\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0622\u062e\u0631\u06cc\u0646 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633",
"Special character...": "\u0646\u0648\u06cc\u0633\u06c0 \u0648\u06cc\u0698\u0647...",
"Source code": "\u06a9\u062f \u0645\u0646\u0628\u0639",
"Insert\/Edit code sample": "Insert\/Edit code sample",
"Language": "Language",
"Code sample...": "\u0646\u0645\u0648\u0646\u0647 \u06a9\u062f...",
"Color Picker": "\u0627\u0646\u062a\u062e\u0627\u0628\u200c\u06a9\u0646\u0646\u062f\u0647 \u0631\u0646\u06af",
"R": "\u0642\u0631\u0645\u0632",
"G": "\u0633\u0628\u0632",
"B": "\u0622\u0628\u06cc",
"Left to right": "\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",
"Right to left": "\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",
"Emoticons": "\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627",
"Emoticons...": "\u0635\u0648\u0631\u062a\u06a9\u200c\u0647\u0627...",
"Metadata and Document Properties": "\u0641\u0631\u0627\u062f\u0627\u062f\u0647 \u0648 \u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0646\u062f",
"Title": "\u0639\u0646\u0648\u0627\u0646",
"Keywords": "\u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc",
"Description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a",
"Robots": "\u0631\u0628\u0627\u062a\u200c\u0647\u0627",
"Author": "\u0646\u0648\u06cc\u0633\u0646\u062f\u0647",
"Encoding": "\u06a9\u062f \u06af\u0630\u0627\u0631\u06cc",
"Fullscreen": "\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",
"Action": "\u0627\u0642\u062f\u0627\u0645",
"Shortcut": "\u0645\u06cc\u0627\u0646\u0628\u0631",
"Help": "\u0631\u0627\u0647\u0646\u0645\u0627",
"Address": "\u0622\u062f\u0631\u0633",
"Focus to menubar": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0646\u0648\u0627\u0631 \u0645\u0646\u0648",
"Focus to toolbar": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631",
"Focus to element path": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0645\u0633\u06cc\u0631 \u0627\u0644\u0645\u0627\u0646",
"Focus to contextual toolbar": "\u062a\u0645\u0631\u06a9\u0632 \u0628\u0631 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 \u0628\u0627\u0641\u062a\u0627\u0631\u06cc",
"Insert link (if link plugin activated)": "\u062f\u0631\u062c \u067e\u06cc\u0648\u0646\u062f (\u062f\u0631 \u0635\u0648\u0631\u062a \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0627\u0641\u0632\u0648\u0646\u0647\u0654 \u067e\u06cc\u0648\u0646\u062f)",
"Save (if save plugin activated)": "\u0630\u062e\u06cc\u0631\u0647\u00a0(\u062f\u0631 \u0635\u0648\u0631\u062a \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0627\u0641\u0632\u0648\u0646\u0647\u0654 \u0630\u062e\u06cc\u0631\u0647)",
"Find (if searchreplace plugin activated)": "\u06cc\u0627\u0641\u062a\u0646 (\u062f\u0631 \u0635\u0648\u0631\u062a \u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 \u0627\u0641\u0632\u0648\u0646\u0647\u0654 \u062c\u0633\u062a\u062c\u0648\/\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc)",
"Plugins installed ({0}):": "\u0627\u0641\u0632\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0646\u0635\u0628\u200c\u0634\u062f\u0647 ({0}):",
"Premium plugins:": "\u0627\u0641\u0632\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u067e\u0648\u0644\u06cc:",
"Learn more...": "\u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631...",
"You are using {0}": "\u062f\u0631 \u062d\u0627\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 {0} \u0647\u0633\u062a\u06cc\u062f",
"Plugins": "\u0627\u0641\u0632\u0648\u0646\u0647\u200c\u0647\u0627",
"Handy Shortcuts": "\u0645\u06cc\u0627\u0646\u0628\u0631\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f",
"Horizontal line": "\u062e\u0637 \u0627\u0641\u0642\u06cc",
"Insert\/edit image": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
"Alternative description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646",
"Accessibility": "\u062f\u0633\u062a\u0631\u0633\u06cc",
"Image is decorative": "\u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u062f\u06a9\u0648\u0631\u06cc \u0627\u0633\u062a",
"Source": "\u0645\u0646\u0628\u0639",
"Dimensions": "\u0627\u0628\u0639\u0627\u062f",
"Constrain proportions": "\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",
"General": "\u0639\u0645\u0648\u0645\u06cc",
"Advanced": "\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
"Style": "\u0633\u0628\u06a9",
"Vertical space": "\u0641\u0636\u0627\u06cc \u0639\u0645\u0648\u062f\u06cc",
"Horizontal space": "\u0641\u0636\u0627\u06cc \u0627\u0641\u0642\u06cc",
"Border": "\u062d\u0627\u0634\u06cc\u0647",
"Insert image": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
"Image...": "\u062a\u0635\u0648\u06cc\u0631...",
"Image list": "\u0641\u0647\u0631\u0633\u062a \u062a\u0635\u0648\u06cc\u0631",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Color levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646",
"Date\/time": "Date\/time",
"Insert\/edit link": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
"Text to display": "\u0645\u062a\u0646 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634",
"Url": "\u0627\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9",
"Open link in...": "\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0648\u0646\u062f \u062f\u0631...",
"Current window": "\u067e\u0646\u062c\u0631\u0647 \u062c\u0627\u0631\u06cc",
"None": "\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",
"New window": "\u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f",
"Open link": "\u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
"Remove link": "\u062d\u0630\u0641 \u0644\u06cc\u0646\u06a9",
"Anchors": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9 \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647",
"Link...": "\u067e\u06cc\u0648\u0646\u062f...",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u0622\u062f\u0631\u0633 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u06af\u0648\u06cc\u0627 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u062e\u0627\u0631\u062c\u06cc \u0627\u0633\u062a. \u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0647 \u067e\u06cc\u0634\u0648\u0646\u062f \u0636\u0631\u0648\u0631\u06cc https:\/\/ \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645\u061f",
"Link list": "\u0641\u0647\u0631\u0633\u062a \u067e\u06cc\u0648\u0646\u062f\u0647\u0627",
"Insert video": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc",
"Insert\/edit video": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc",
"Insert\/edit media": "Insert\/edit media",
"Alternative source": "\u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631",
"Alternative source URL": "\u0646\u0634\u0627\u0646\u06cc \u0648\u0628 \u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646",
"Media poster (Image URL)": "\u067e\u0648\u0633\u062a\u0631 \u0631\u0633\u0627\u0646\u0647 (\u0646\u0634\u0627\u0646\u06cc \u0648\u0628 \u062a\u0635\u0648\u06cc\u0631)",
"Paste your embed code below:": "\u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062c\u0627 \u062f\u0627\u062f\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a - embed - \u060c \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:",
"Embed": "\u062c\u0627 \u062f\u0627\u062f\u0646",
"Media...": "\u0631\u0633\u0627\u0646\u0647...",
"Nonbreaking space": "\u0641\u0636\u0627\u06cc \u063a\u06cc\u0631 \u0634\u06a9\u0633\u062a\u0646",
"Page break": "\u0634\u06a9\u0633\u062a\u0646 \u0635\u0641\u062d\u0647",
"Paste as text": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0646",
"Preview": "\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",
"Print...": "\u0686\u0627\u067e...",
"Save": "\u0630\u062e\u06cc\u0631\u0647",
"Find": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648",
"Replace with": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0628\u0627",
"Replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646",
"Replace all": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647",
"Previous": "\u0642\u0628\u0644\u06cc",
"Next": "\u0628\u0639\u062f\u06cc",
"Find and Replace": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646",
"Find and replace...": "\u06cc\u0627\u0641\u062a\u0646 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646...",
"Could not find the specified string.": "\u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.",
"Match case": "\u062d\u0633\u0627\u0633 \u0628\u0647 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9 \u0648 \u0628\u0632\u0631\u06af",
"Find whole words only": "\u06cc\u0627\u0641\u062a\u0646 \u062f\u0642\u06cc\u0642\u0627\u064b \u06a9\u0644 \u0648\u0627\u0698\u0647",
"Find in selection": "\u062f\u0631 \u06af\u0644\u0686\u06cc\u0646 \u0628\u06cc\u0627\u0628\u06cc\u062f",
"Spellcheck": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u06cc\u06cc",
"Spellcheck Language": "\u0632\u0628\u0627\u0646 \u0686\u06a9 \u0627\u0633\u067e\u0644\u06cc\u0646\u06af",
"No misspellings found.": "\u063a\u0644\u0637 \u0627\u0645\u0644\u0627\u06cc\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f.",
"Ignore": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646",
"Ignore all": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0647\u0645\u0647",
"Finish": "\u067e\u0627\u06cc\u0627\u0646",
"Add to Dictionary": "Add to Dictionary",
"Insert table": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u062f\u0648\u0644",
"Table properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062c\u062f\u0648\u0644",
"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
"Cell": "\u0633\u0644\u0648\u0644",
"Row": "\u0633\u0637\u0631",
"Column": "\u0633\u062a\u0648\u0646",
"Cell properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0644\u0648\u0644",
"Merge cells": "\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644\u200c\u0647\u0627",
"Split cell": "\u062a\u0642\u0633\u06cc\u0645 \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644",
"Insert row before": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
"Insert row after": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
"Delete row": "\u062d\u0630\u0641 \u0633\u0637\u0631",
"Row properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0637\u0631",
"Cut row": "\u0628\u0631\u0634 \u0633\u0637\u0631",
"Copy row": "\u06a9\u067e\u06cc \u0633\u0637\u0631",
"Paste row before": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
"Paste row after": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
"Insert column before": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646",
"Insert column after": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646",
"Delete column": "\u062d\u0630\u0641 \u0633\u062a\u0648\u0646",
"Cols": "\u062a\u0639\u062f\u0627\u062f \u0633\u062a\u0648\u0646\u200c\u0647\u0627",
"Rows": "\u062a\u0639\u062f\u0627\u062f \u0633\u0637\u0631\u200c\u0647\u0627",
"Width": "\u0639\u0631\u0636",
"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
"Cell spacing": "\u0641\u0627\u0635\u0644\u0647\u200c\u06cc \u0628\u06cc\u0646 \u0633\u0644\u0648\u0644 \u0647\u0627",
"Cell padding": "\u062d\u0627\u0634\u06cc\u0647 \u0633\u0644\u0648\u0644 \u0647\u0627",
"Caption": "\u0639\u0646\u0648\u0627\u0646",
"Show caption": "\u0646\u0645\u0627\u06cc\u0634 \u0639\u0646\u0648\u0627\u0646",
"Left": "\u0686\u067e",
"Center": "\u0648\u0633\u0637",
"Right": "\u0631\u0627\u0633\u062a",
"Cell type": "\u0646\u0648\u0639 \u0633\u0644\u0648\u0644",
"Scope": "\u0645\u062d\u062f\u0648\u062f\u0647\u200c\u06cc \u0639\u0646\u0648\u0627\u0646",
"Alignment": "\u0631\u062f\u06cc\u0641 \u0628\u0646\u062f\u06cc \u0646\u0648\u0634\u062a\u0647",
"H Align": "H Align",
"V Align": "V Align",
"Top": "Top",
"Middle": "Middle",
"Bottom": "Bottom",
"Header cell": "\u0633\u0631\u0622\u06cc\u0646\u062f \u0633\u0644\u0648\u0644",
"Row group": "\u06af\u0631\u0648\u0647 \u0633\u0637\u0631",
"Column group": "\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646",
"Row type": "\u0646\u0648\u0639 \u0633\u0637\u0631",
"Header": "\u0633\u0631\u0622\u06cc\u0646\u062f",
"Body": "\u0628\u062f\u0646\u0647",
"Footer": "\u067e\u0627\u0646\u0648\u06cc\u0633",
"Border color": "Border color",
"Insert template...": "\u062f\u0631\u062c \u0627\u0644\u06af\u0648...",
"Templates": "\u0627\u0644\u06af\u0648\u200c\u0647\u0627",
"Template": "\u0627\u0644\u06af\u0648",
"Text color": "\u0631\u0646\u06af \u0645\u062a\u0646",
"Background color": "\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647 \u0645\u062a\u0646",
"Custom...": "Custom...",
"Custom color": "Custom color",
"No color": "No color",
"Remove color": "\u062d\u0630\u0641 \u0631\u0646\u06af",
"Table of Contents": "Table of Contents",
"Show blocks": "\u0646\u0645\u0627\u06cc\u0634 \u0628\u062e\u0634\u200c\u0647\u0627",
"Show invisible characters": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0686\u0627\u067e",
"Word count": "\u062a\u0639\u062f\u0627\u062f \u0648\u0627\u0698\u0647\u200c\u0647\u0627",
"Count": "\u0634\u0645\u0627\u0631\u0634",
"Document": "\u0633\u0646\u062f",
"Selection": "\u0627\u0646\u062a\u062e\u0627\u0628",
"Words": "\u06a9\u0644\u0645\u0627\u062a",
"Words: {0}": "\u06a9\u0644\u0645\u0627\u062a : {0}",
"{0} words": "{0} \u0648\u0627\u0698\u0647",
"File": "\u067e\u0631\u0648\u0646\u062f\u0647",
"Edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
"Insert": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646",
"View": "\u0646\u0645\u0627\u06cc\u0634",
"Format": "\u0642\u0627\u0644\u0628",
"Table": "\u062c\u062f\u0648\u0644",
"Tools": "\u0627\u0628\u0632\u0627\u0631\u0647\u0627",
"Powered by {0}": "\u0642\u0648\u062a\u200c\u06af\u0631\u0641\u062a\u0647 \u0627\u0632 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u06cc \u0645\u062a\u0646. \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F9\u060c \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 ALT-F10 \u0648 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc \u0631\u0627\u0647\u0646\u0645\u0627 ALT-0 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
"Image title": "\u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631",
"Border width": "\u0639\u0631\u0636 \u062d\u0627\u0634\u06cc\u0647",
"Border style": "\u0633\u0628\u06a9 \u062d\u0627\u0634\u06cc\u0647",
"Error": "\u062e\u0637\u0627",
"Warn": "\u0647\u0634\u062f\u0627\u0631",
"Valid": "\u0645\u0639\u062a\u0628\u0631",
"To open the popup, press Shift+Enter": "\u062c\u0647\u062a \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648\u060c \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc Shift + Enter \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
"Rich Text Area. Press ALT-0 for help.": "\u0646\u0627\u062d\u06cc\u0647 \u0645\u062a\u0646 \u063a\u0646\u06cc. \u062c\u0647\u062a \u0645\u0634\u0627\u0647\u062f\u0647\u0654 \u0631\u0627\u0647\u0646\u0645\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT + 0 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
"System Font": "\u0641\u0648\u0646\u062a \u0633\u06cc\u0633\u062a\u0645\u06cc",
"Failed to upload image: {0}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062a\u0635\u0648\u06cc\u0631: {0}",
"Failed to load plugin: {0} from url {1}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0627\u0641\u0632\u0648\u0646\u0647: {0} \u0627\u0632 \u0646\u0634\u0627\u0646\u06cc \u0648\u0628 {1}",
"Failed to load plugin url: {0}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u0627\u0646\u06cc \u0648\u0628 \u0627\u0641\u0632\u0648\u0646\u0647: {0}",
"Failed to initialize plugin: {0}": "\u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u062f\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u0641\u0632\u0648\u0646\u0647: {0}",
"example": "\u0645\u062b\u0627\u0644",
"Search": "\u062c\u0633\u062a\u062c\u0648",
"All": "\u0647\u0645\u0647",
"Currency": "\u0627\u0631\u0632",
"Text": "\u0645\u062a\u0646",
"Quotations": "\u0646\u0642\u0644\u200c\u0642\u0648\u0644\u200c\u0647\u0627",
"Mathematical": "\u0631\u06cc\u0627\u0636\u06cc",
"Extended Latin": "\u0644\u0627\u062a\u06cc\u0646 \u06af\u0633\u062a\u0631\u062f\u0647",
"Symbols": "\u0646\u0645\u0627\u062f\u0647\u0627",
"Arrows": "\u067e\u06cc\u06a9\u0627\u0646\u200c\u0647\u0627",
"User Defined": "\u0628\u0647 \u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631",
"dollar sign": "\u0646\u0645\u0627\u062f \u062f\u0644\u0627\u0631",
"currency sign": "\u0646\u0645\u0627\u062f \u0627\u0631\u0632",
"euro-currency sign": "\u0646\u0645\u0627\u062f \u06cc\u0648\u0631\u0648",
"colon sign": "\u0646\u0645\u0627\u062f \u062f\u0648\u0646\u0642\u0637\u0647",
"cruzeiro sign": "\u0646\u0645\u0627\u062f \u06a9\u0631\u0648\u0632\u06cc\u0631\u0648",
"french franc sign": "\u0646\u0645\u0627\u062f \u0641\u0631\u0627\u0646\u06a9 \u0641\u0631\u0627\u0646\u0633\u0647",
"lira sign": "\u0646\u0645\u0627\u062f \u0644\u06cc\u0631\u0647",
"mill sign": "\u0646\u0645\u0627\u062f \u0645\u06cc\u0644",
"naira sign": "\u0646\u0645\u0627\u062f \u0646\u0627\u06cc\u0631\u0627",
"peseta sign": "\u0646\u0645\u0627\u062f \u067e\u0632\u062a\u0627",
"rupee sign": "\u0646\u0645\u0627\u062f \u0631\u0648\u067e\u06cc\u0647",
"won sign": "\u0646\u0645\u0627\u062f \u0648\u0648\u0646",
"new sheqel sign": "\u0646\u0645\u0627\u062f \u0634\u06a9\u0644 \u062c\u062f\u06cc\u062f",
"dong sign": "\u0646\u0645\u0627\u062f \u062f\u0627\u0646\u06af",
"kip sign": "\u0646\u0645\u0627\u062f \u06a9\u06cc\u067e",
"tugrik sign": "\u0646\u0645\u0627\u062f \u062a\u0648\u06af\u0631\u0648\u06af",
"drachma sign": "\u0646\u0645\u0627\u062f \u062f\u0631\u0627\u062e\u0645\u0627",
"german penny symbol": "\u0646\u0645\u0627\u062f \u067e\u0646\u06cc \u0622\u0644\u0645\u0627\u0646\u06cc",
"peso sign": "\u0646\u0645\u0627\u062f \u067e\u0632\u0648",
"guarani sign": "\u0646\u0645\u0627\u062f \u06af\u0648\u0627\u0631\u0627\u0646\u06cc",
"austral sign": "\u0646\u0645\u0627\u062f \u0622\u0633\u062a\u0631\u0627\u0644",
"hryvnia sign": "\u0646\u0645\u0627\u062f \u06af\u0631\u06cc\u0648\u0646\u0627",
"cedi sign": "\u0646\u0645\u0627\u062f \u0633\u062f\u06cc",
"livre tournois sign": "\u0646\u0645\u0627\u062f \u0644\u06cc\u0648\u0631\u0647 \u062a\u0648\u0631\u0646\u0648\u0627",
"spesmilo sign": "\u0646\u0645\u0627\u062f \u0627\u0633\u067e\u0633\u0645\u06cc\u0644\u0648",
"tenge sign": "\u0646\u0645\u0627\u062f \u062a\u0646\u06af\u0647",
"indian rupee sign": "\u0646\u0645\u0627\u062f \u0631\u0648\u067e\u06cc\u0647 \u0647\u0646\u062f\u06cc",
"turkish lira sign": "\u0646\u0645\u0627\u062f \u0644\u06cc\u0631\u0647 \u062a\u0631\u06a9\u06cc",
"nordic mark sign": "\u0646\u0645\u0627\u062f \u0645\u0627\u0631\u06a9 \u0646\u0631\u0648\u0698",
"manat sign": "\u0646\u0645\u0627\u062f \u0645\u0646\u0627\u062a",
"ruble sign": "\u0646\u0645\u0627\u062f \u0631\u0648\u0628\u0644",
"yen character": "\u0646\u0648\u06cc\u0633\u0647 \u06cc\u0646",
"yuan character": "\u0646\u0648\u06cc\u0633\u0647 \u06cc\u0648\u0627\u0646",
"yuan character, in hong kong and taiwan": "\u0646\u0648\u06cc\u0633\u0647 \u06cc\u0648\u0627\u0646\u060c \u062f\u0631 \u0647\u0646\u06af\u200c\u06a9\u0646\u06af \u0648 \u062a\u0627\u06cc\u0648\u0627\u0646",
"yen\/yuan character variant one": "\u0646\u0648\u06cc\u0633\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06cc\u0646\/\u06cc\u0648\u0627\u0646",
"Loading emoticons...": "\u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u06a9\u0644\u06a9\u200c\u0647\u0627...",
"Could not load emoticons": "\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0646\u062f",
"People": "\u0627\u0641\u0631\u0627\u062f",
"Animals and Nature": "\u062d\u06cc\u0648\u0627\u0646\u0627\u062a \u0648 \u0637\u0628\u06cc\u0639\u062a",
"Food and Drink": "\u063a\u0630\u0627 \u0648 \u0646\u0648\u0634\u06cc\u062f\u0646\u06cc",
"Activity": "\u0641\u0639\u0627\u0644\u06cc\u062a",
"Travel and Places": "\u0633\u0641\u0631 \u0648 \u0627\u0645\u0627\u06a9\u0646",
"Objects": "\u0627\u0634\u06cc\u0627",
"Flags": "\u067e\u0631\u0686\u0645\u200c\u0647\u0627",
"Characters": "\u0646\u0648\u06cc\u0633\u0647\u200c\u0647\u0627",
"Characters (no spaces)": "\u0646\u0648\u06cc\u0633\u0647 \u0647\u0627 (\u0628\u062f\u0648\u0646 \u0641\u0627\u0635\u0644\u0647)",
"{0} characters": "{0} \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631",
"Error: Form submit field collision.": "\u062e\u0637\u0627: \u062a\u062f\u0627\u062e\u0644 \u062f\u0631 \u062b\u0628\u062a \u0641\u0631\u0645.",
"Error: No form element found.": "\u062e\u0637\u0627: \u0647\u06cc\u0686 \u0627\u0644\u0645\u0627\u0646 \u0641\u0631\u0645\u06cc \u06cc\u0627\u0641\u062a \u0646\u0634\u062f.",
"Update": "\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc",
"Color swatch": "\u0646\u0645\u0648\u0646\u0647 \u0631\u0646\u06af",
"Turquoise": "\u0641\u06cc\u0631\u0648\u0632\u0647\u200c\u0627\u06cc",
"Green": "\u0633\u0628\u0632",
"Blue": "\u0622\u0628\u06cc",
"Purple": "\u0628\u0646\u0641\u0634",
"Navy Blue": "\u0633\u0631\u0645\u0647\u200c\u0627\u06cc",
"Dark Turquoise": "\u0641\u06cc\u0631\u0648\u0632\u0647\u200c\u0627\u06cc \u062a\u06cc\u0631\u0647",
"Dark Green": "\u0633\u0628\u0632 \u062a\u06cc\u0631\u0647",
"Medium Blue": "\u0622\u0628\u06cc \u0633\u06cc\u0631",
"Medium Purple": "\u0622\u0628\u06cc \u0628\u0646\u0641\u0634",
"Midnight Blue": "\u0622\u0628\u06cc \u0646\u0641\u062a\u06cc",
"Yellow": "\u0632\u0631\u062f",
"Orange": "\u0646\u0627\u0631\u0646\u062c\u06cc",
"Red": "\u0642\u0631\u0645\u0632",
"Light Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc \u0631\u0648\u0634\u0646",
"Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc",
"Dark Yellow": "\u0632\u0631\u062f \u062a\u06cc\u0631\u0647",
"Dark Orange": "\u0646\u0627\u0631\u0646\u062c\u06cc \u062a\u06cc\u0631\u0647",
"Dark Red": "\u0642\u0631\u0645\u0632 \u062a\u06cc\u0631\u0647",
"Medium Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc \u0646\u06cc\u0645\u0647\u200c\u0631\u0648\u0634\u0646",
"Dark Gray": "\u062e\u0627\u06a9\u0633\u062a\u0631\u06cc \u062a\u06cc\u0631\u0647",
"Light Green": "\u0633\u0628\u0632 \u0631\u0648\u0634\u0646",
"Light Yellow": "\u0632\u0631\u062f \u0631\u0648\u0634\u0646",
"Light Red": "\u0642\u0631\u0645\u0632 \u0631\u0648\u0634\u0646",
"Light Purple": "\u0628\u0646\u0641\u0634 \u0631\u0648\u0634\u0646",
"Light Blue": "\u0622\u0628\u06cc \u0631\u0648\u0634\u0646",
"Dark Purple": "\u0628\u0646\u0641\u0634 \u062a\u06cc\u0631\u0647",
"Dark Blue": "\u0622\u0628\u06cc \u062a\u06cc\u0631\u0647",
"Black": "\u0633\u06cc\u0627\u0647",
"White": "\u0633\u0641\u06cc\u062f",
"Switch to or from fullscreen mode": "\u062a\u063a\u06cc\u06cc\u0631 \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645\u200c\u0635\u0641\u062d\u0647 \u06cc\u0627 \u0628\u0647 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645\u200c\u0635\u0641\u062d\u0647",
"Open help dialog": "\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u062f\u0631 \u0631\u0627\u0647\u0646\u0645\u0627",
"history": "\u062a\u0627\u0631\u06cc\u062e\u0686\u0647",
"styles": "\u0633\u0628\u06a9\u200c\u0647\u0627",
"formatting": "\u0642\u0627\u0644\u0628\u200c\u0628\u0646\u062f\u06cc",
"alignment": "\u062a\u0631\u0627\u0632\u0628\u0646\u062f\u06cc",
"indentation": "\u062a\u0648\u0631\u0641\u062a\u06af\u06cc",
"Font": "\u0641\u0648\u0646\u062a",
"Size": "\u0627\u0646\u062f\u0627\u0632\u0647",
"More...": "\u0628\u06cc\u0634\u062a\u0631...",
"Select...": "\u0627\u0646\u062a\u062e\u0627\u0628...",
"Preferences": "\u062a\u0631\u062c\u06cc\u062d\u0627\u062a",
"Yes": "\u0628\u0644\u0647",
"No": "\u062e\u06cc\u0631",
"Keyboard Navigation": "\u0645\u0631\u0648\u0631 \u0628\u0627 \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f",
"Version": "\u0646\u0633\u062e\u0647",
"Code view": "\u0646\u0645\u0627\u06cc \u06a9\u062f",
"Open popup menu for split buttons": "\u0645\u0646\u0648\u06cc \u0628\u0627\u0632\u0634\u0648 \u0628\u0631\u0627\u06cc \u062f\u06a9\u0645\u0647 \u0647\u0627\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f",
"List Properties": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u0647\u0631\u0633\u062a",
"List properties...": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u0647\u0631\u0633\u062a",
"Start list at number": "\u0644\u06cc\u0633\u062a \u0631\u0627 \u062f\u0631 \u0634\u0645\u0627\u0631\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f",
"Line height": "\u0628\u0644\u0646\u062f\u06cc \u062e\u0637 ",
"comments": "\u0646\u0638\u0631\u0627\u062a",
"Format Painter": "\u0646\u0642\u0627\u0634 \u0641\u0631\u0645\u062a",
"Insert\/edit iframe": "\u062f\u0631\u062c\/\u0648\u06cc\u0631\u0627\u06cc\u0634 iframe",
"Capitalization": "\u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af",
"lowercase": "\u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9",
"UPPERCASE": "\u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af",
"Title Case": "\u062d\u0631\u0648\u0641 \u062a\u06cc\u062a\u0631\u06cc",
"permanent pen": "\u0642\u0644\u0645 \u062f\u0627\u0626\u0645\u06cc",
"Permanent Pen Properties": "\u0645\u0634\u062e\u0635\u0627\u062a \u062f\u0627\u0626\u0645\u06cc \u0642\u0644\u0645",
"Permanent pen properties...": "\u0645\u0634\u062e\u0635\u0627\u062a \u062f\u0627\u0626\u0645\u06cc \u0642\u0644\u0645...",
"case change": "\u062a\u063a\u06cc\u06cc\u0631 \u0645\u0648\u0631\u062f",
"page embed": "\u0635\u0641\u062d\u0647 \u062c\u0627\u0633\u0627\u0632\u06cc\u00a0",
"Advanced sort...": "\u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
"Advanced Sort": "\u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
"Sort table by column ascending": "\u062c\u062f\u0648\u0644 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0633\u062a\u0648\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0635\u0639\u0648\u062f\u06cc \u0645\u0631\u062a\u0628 \u06a9\u0646\u06cc\u062f",
"Sort table by column descending": "\u062c\u062f\u0648\u0644 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0633\u062a\u0648\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0632\u0648\u0644\u06cc \u0645\u0631\u062a\u0628 \u06a9\u0646\u06cc\u062f",
"Sort": "\u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc",
"Order": "\u062a\u0631\u062a\u06cc\u0628",
"Sort by": "\u0645\u0631\u062a\u0628 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637",
"Ascending": "\u0635\u0639\u0648\u062f\u06cc",
"Descending": "\u0646\u0632\u0648\u0644\u06cc",
"Column {0}": "\u0633\u062a\u0648\u0646 {0}",
"Row {0}": "\u0631\u062f\u06cc\u0641 {0}",
"Spellcheck...": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u06cc\u06cc",
"Misspelled word": "\u06a9\u0644\u0645\u0647 \u063a\u0644\u0637 \u0627\u0645\u0644\u0627\u06cc\u06cc",
"Suggestions": "\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0627\u062a",
"Change": "\u062a\u063a\u06cc\u06cc\u0631 \u062f\u0627\u062f\u0646",
"Finding word suggestions": "\u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0627\u062a \u06a9\u0644\u0645\u0647",
"Success": "\u0645\u0648\u0641\u0642",
"Repair": "\u062a\u0639\u0645\u06cc\u0631",
"Issue {0} of {1}": "\u0645\u0634\u06a9\u0644 {0} \u0627\u0632 {1}",
"Images must be marked as decorative or have an alternative text description": "\u062a\u0635\u0648\u06cc\u0631 \u0647\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0645\u0627\u06cc\u0634\u06cc \u0645\u0634\u062e\u0635 \u0634\u0648\u062f \u06cc\u0627 \u06cc\u06a9 \u0645\u062a\u0646 \u062a\u0648\u0636\u06cc\u062d\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0639\u06a9\u0633 \u0647\u0627 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0645\u062a\u0646 \u062a\u0648\u0636\u06cc\u062d\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f. \u0639\u06a9\u0633 \u0647\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634\u06cc \u0645\u062c\u0627\u0632 \u0646\u06cc\u0633\u062a\u0646\u062f.",
"Or provide alternative text:": "\u06cc\u0627 \u06cc\u06a9 \u0645\u062a\u0646 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f:",
"Make image decorative:": "\u0639\u06a9\u0633 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634\u06cc \u06a9\u0646\u06cc\u062f:",
"ID attribute must be unique": "\u0634\u0646\u0627\u0633\u0647 \u0635\u0641\u062a \u0628\u0627\u06cc\u062f \u06cc\u06a9\u062a\u0627 \u0628\u0627\u0634\u062f",
"Make ID unique": "\u0634\u0646\u0627\u0633\u0647 \u0631\u0627 \u06cc\u06a9\u062a\u0627 \u06a9\u0646\u06cc\u062f",
"Keep this ID and remove all others": "\u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631 \u0648 \u0647\u0645\u0647 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646",
"Remove this ID": "\u0627\u06cc\u0646 \u0634\u0646\u0627\u0633\u0647 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646",
"Remove all IDs": "\u062a\u0645\u0627\u0645 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0628\u0631",
"Checklist": "\u0686\u06a9 \u0644\u06cc\u0633\u062a",
"Anchor": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9",
"Special character": "\u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0647\u0627\u06cc \u062e\u0627\u0635",
"Color": "Color",
"Document properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0646\u062f",
"Image description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0639\u06a9\u0633",
"Image": "\u0639\u06a9\u0633",
"Insert link": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
"Link": "Link",
"Target": "\u0646\u062d\u0648\u0647 \u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631",
"Media": "Media",
"Poster": "\u067e\u0648\u0633\u062a\u0631",
"Print": "\u0686\u0627\u067e",
"Whole words": "\u0647\u0645\u0647 \u06a9\u0644\u0645\u0647\u200c\u0647\u0627",
"Find and replace": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646",
"Prev": "\u0642\u0628\u0644\u06cc",
"Insert template": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u0644\u06af\u0648",
"_dir": "rtl"
});js/tinymce/langs/fr_CH.js000064400000017611151727150330011265 0ustar00tinymce.addI18n('fr_CH',{
"Cut": "Couper",
"Heading 5": "Rubrique 5",
"Header 2": "Titre 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
"Heading 4": "Rubrique 4",
"Div": "Div",
"Heading 2": "Rubrique 2",
"Paste": "Coller",
"Close": "Fermer",
"Font Family": "Polices de caract\u00e8res",
"Pre": "Pre",
"Align right": "Aligner \u00e0 droite",
"New document": "Nouveau document",
"Blockquote": "Citation",
"Numbered list": "Num\u00e9rotation",
"Heading 1": "Rubrique 1",
"Headings": "Rubriques",
"Increase indent": "Augmenter le retrait",
"Formats": "Formats",
"Headers": "Titres",
"Select all": "Tout s\u00e9lectionner",
"Header 3": "Titre 3",
"Blocks": "Blocs",
"Undo": "Annuler",
"Strikethrough": "Barr\u00e9",
"Bullet list": "Puces",
"Header 1": "Titre 1",
"Superscript": "Exposant",
"Clear formatting": "Effacer la mise en forme",
"Font Sizes": "Tailles de la police",
"Subscript": "Indice",
"Header 6": "Titre 6",
"Redo": "R\u00e9tablir",
"Paragraph": "Paragraphe",
"Ok": "Ok",
"Bold": "Gras",
"Code": "Code",
"Italic": "Italique",
"Align center": "Aligner au centre",
"Header 5": "Titre 5",
"Heading 6": "Rubrique 6",
"Heading 3": "Rubrique 3",
"Decrease indent": "Diminuer le retrait",
"Header 4": "Titre 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
"Underline": "Souligner",
"Cancel": "Annuler",
"Justify": "Justifier",
"Inline": "En ligne",
"Copy": "Copier",
"Align left": "Aligner \u00e0 gauche",
"Visual aids": "Aides visuelles",
"Lower Greek": "Grecque inf\u00e9rieur",
"Square": "Carr\u00e9",
"Default": "D\u00e9faut",
"Lower Alpha": "Alpha inf\u00e9rieur",
"Circle": "Cercle",
"Disc": "Disque",
"Upper Alpha": "Alpha sup\u00e9rieur",
"Upper Roman": "Romain sup\u00e9rieur",
"Lower Roman": "Romain inf\u00e9rieur",
"Name": "Nom",
"Anchor": "Ancre",
"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
"Restore last draft": "Restaurer le dernier brouillon",
"Special character": "Caract\u00e8re sp\u00e9cial",
"Source code": "Code source",
"B": "B",
"R": "R",
"G": "V",
"Color": "Couleur",
"Right to left": "Droite \u00e0 gauche",
"Left to right": "Gauche \u00e0 droite",
"Emoticons": "\u00c9motic\u00f4nes",
"Robots": "Robots",
"Document properties": "Propri\u00e9t\u00e9s du document",
"Title": "Titre",
"Keywords": "Mots cl\u00e9s",
"Encoding": "Encodage",
"Description": "Description",
"Author": "Auteur",
"Fullscreen": "Plein \u00e9cran",
"Horizontal line": "Ligne horizontale",
"Horizontal space": "Espacement horizontal",
"Insert\/edit image": "Ins\u00e9rer\/\u00e9diter image",
"General": "G\u00e9n\u00e9ral",
"Advanced": "Avanc\u00e9",
"Source": "Source",
"Border": "Bordure",
"Constrain proportions": "Conserver les proportions",
"Vertical space": "Espacement vertical",
"Image description": "Description de l'image",
"Style": "Style",
"Dimensions": "Dimensions",
"Insert image": "Ins\u00e9rer une image",
"Zoom in": "Zoomer",
"Contrast": "Contraste",
"Back": "Retour",
"Gamma": "Gamma",
"Flip horizontally": "Miroir horizontal",
"Resize": "Redimensionner",
"Sharpen": "Nettet\u00e9",
"Zoom out": "D\u00e9zoomer",
"Image options": "Options de l'image",
"Apply": "Appliquer",
"Brightness": "Luminosit\u00e9",
"Rotate clockwise": "Tourner dans le sens inverse des aiguilles",
"Rotate counterclockwise": "Tourner dans le sens des aiguilles",
"Edit image": "Modifier l'image",
"Color levels": "Niveau de couleurs",
"Crop": "Recadrer",
"Orientation": "Orientation",
"Flip vertically": "Miroir vertical",
"Invert": "Inverser",
"Insert date\/time": "Ins\u00e9rer date\/heure",
"Remove link": "Supprimer le lien",
"Url": "Url",
"Text to display": "Texte \u00e0 afficher",
"Anchors": "Ancres",
"Insert link": "Ins\u00e9rer un lien",
"New window": "Nouvelle fen\u00eatre",
"None": "n\/a",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
"Target": "Cible",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
"Insert\/edit link": "Ins\u00e9rer\/\u00e9diter lien",
"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
"Poster": "Publier",
"Alternative source": "Source alternative",
"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
"Insert video": "Ins\u00e9rer une vid\u00e9o",
"Embed": "Int\u00e9grer",
"Nonbreaking space": "Espace ins\u00e9cable",
"Page break": "Saut de page",
"Paste as text": "Coller comme texte",
"Preview": "Pr\u00e9visualiser",
"Print": "Imprimer",
"Save": "Enregistrer",
"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
"Replace": "Remplacer",
"Next": "Suiv",
"Whole words": "Mots entiers",
"Find and replace": "Trouver et remplacer",
"Replace with": "Remplacer par",
"Find": "Chercher",
"Replace all": "Remplacer tout",
"Match case": "Respecter la casse",
"Prev": "Pr\u00e9c",
"Spellcheck": "V\u00e9rification orthographique",
"Finish": "Finie",
"Ignore all": "Tout ignorer",
"Ignore": "Ignorer",
"Add to Dictionary": "Ajouter au dictionnaire",
"Insert row before": "Ins\u00e9rer une ligne avant",
"Rows": "Lignes",
"Height": "Hauteur",
"Paste row after": "Coller la ligne apr\u00e8s",
"Alignment": "Alignement",
"Border color": "Couleur de la bordure",
"Column group": "Groupe de colonnes",
"Row": "Ligne",
"Insert column before": "Ins\u00e9rer une colonne avant",
"Split cell": "Diviser la cellule",
"Cell padding": "Espacement interne cellule",
"Cell spacing": "Espacement inter-cellulles",
"Row type": "Type de ligne",
"Insert table": "Ins\u00e9rer un tableau",
"Body": "Corps",
"Caption": "Titre",
"Footer": "Pied",
"Delete row": "Effacer la ligne",
"Paste row before": "Coller la ligne avant",
"Scope": "Etendue",
"Delete table": "Supprimer le tableau",
"H Align": "Alignement H",
"Top": "Haut",
"Header cell": "Cellule d'en-t\u00eate",
"Column": "Colonne",
"Row group": "Groupe de lignes",
"Cell": "Cellule",
"Middle": "Milieu",
"Cell type": "Type de cellule",
"Copy row": "Copier la ligne",
"Row properties": "Propri\u00e9t\u00e9s de la ligne",
"Table properties": "Propri\u00e9t\u00e9s du tableau",
"Bottom": "Bas",
"V Align": "Alignement V",
"Header": "En-t\u00eate",
"Right": "Droite",
"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
"Cols": "Colonnes",
"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
"Width": "Largeur",
"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
"Left": "Gauche",
"Cut row": "Couper la ligne",
"Delete column": "Effacer la colonne",
"Center": "Centr\u00e9",
"Merge cells": "Fusionner les cellules",
"Insert template": "Ajouter un th\u00e8me",
"Templates": "Th\u00e8mes",
"Background color": "Couleur d'arri\u00e8re-plan",
"Custom...": "Personnalis\u00e9...",
"Custom color": "Couleur personnalis\u00e9e",
"No color": "Aucune couleur",
"Text color": "Couleur du texte",
"Show blocks": "Afficher les blocs",
"Show invisible characters": "Afficher les caract\u00e8res invisibles",
"Words: {0}": "Mots : {0}",
"Insert": "Ins\u00e9rer",
"File": "Fichier",
"Edit": "Editer",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
"Tools": "Outils",
"View": "Voir",
"Table": "Tableau",
"Format": "Format"
});js/tinymce/langs/uk.js000064400000125552151727150330010727 0ustar00tinymce.addI18n('uk',{
"Redo": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438",
"Undo": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
"Select all": "\u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438 \u0432\u0441\u0435",
"New document": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Ok": "\u0413\u0430\u0440\u0430\u0437\u0434",
"Cancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
"Visual aids": "\u041d\u0430\u043e\u0447\u043d\u0456 \u043f\u0440\u0438\u043b\u0430\u0434\u0434\u044f",
"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f",
"Strikethrough": "\u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f",
"Superscript": "\u041d\u0430\u0434\u0440\u044f\u0434\u043a\u043e\u0432\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b",
"Subscript": "\u041f\u0456\u0434\u0440\u044f\u0434\u043a\u043e\u0432\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b",
"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Align left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Align center": "\u0412\u0438\u0440\u0456\u0432\u043d\u044f\u0442\u0438 \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Align right": "\u0412\u0438\u0440\u0456\u0432\u043d\u044f\u0442\u0438 \u0437\u0430 \u043f\u0440\u0430\u0432\u0438\u043c \u043a\u0440\u0430\u0454\u043c",
"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Bullet list": "\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0456\u043d\u0443. \u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043d\u0430\u0442\u043e\u043c\u0456\u0441\u0442\u044c \u0441\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448 Ctrl\u00a0+\u00a0C\/V\/X.",
"Headers": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b\u0438",
"Header 1": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 1",
"Header 2": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 2",
"Header 3": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 3",
"Header 4": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 4",
"Header 5": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 5",
"Header 6": "\u041a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b 6",
"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Preformatted": "\u0424\u043e\u0440\u043c\u0430\u0442\u043e\u0432\u0430\u043d\u0438\u0439",
"Div": "\u0420\u043e\u0437\u0434\u0456\u043b",
"Pre": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Code": "\u041a\u043e\u0434",
"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
"Blockquote": "\u0411\u043b\u043e\u043a \u0446\u0438\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Inline": "\u0420\u044f\u0434\u043a\u043e\u0432\u0438\u0439",
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0434\u0456\u0439\u0441\u043d\u044e\u0454\u0442\u044c\u0441\u044f \u0443 \u0432\u0438\u0433\u043b\u044f\u0434\u0456 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443, \u043f\u043e\u043a\u0438 \u043d\u0435 \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u0434\u0430\u043d\u0443 \u043e\u043f\u0446\u0456\u044e.",
"Fonts": "\u0428\u0440\u0438\u0444\u0442\u0438",
"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440\u0438 \u0448\u0440\u0438\u0444\u0442\u0443",
"Class": "\u041a\u043b\u0430\u0441",
"Browse for an image": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"OR": "\u0410\u0411\u041e",
"Drop an image here": "\u041f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0456\u0442\u044c \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0441\u044e\u0434\u0438",
"Upload": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438",
"Block": "\u0411\u043b\u043e\u043a",
"Align": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u0439",
"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0456",
"Disc": "\u041a\u0440\u0443\u0433\u0438",
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
"Lower Alpha": "\u041c\u0430\u043b\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
"Lower Roman": "\u041c\u0430\u043b\u0456 \u0440\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438",
"Upper Alpha": "\u0412\u0435\u043b\u0438\u043a\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438",
"Anchor...": "\u042f\u043a\u0456\u0440\u2026",
"Name": "\u041d\u0430\u0437\u0432\u0430",
"Id": "\u041a\u043e\u0434",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u041a\u043e\u0434 \u043c\u0430\u0454 \u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0437 \u043b\u0456\u0442\u0435\u0440\u0438 \u0456 \u043c\u043e\u0436\u0435 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043b\u0438\u0448\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438 \u043b\u0456\u0442\u0435\u0440, \u0446\u0438\u0444\u0440, \u0434\u0435\u0444\u0456\u0441\u0443, \u043a\u0440\u0430\u043f\u043a\u0438, \u043a\u043e\u043c\u0438 \u0430\u0431\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u0433\u043e \u043f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f.",
"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0412\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438?",
"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443",
"Special character...": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u2026",
"Source code": "\u0412\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434",
"Insert\/Edit code sample": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443",
"Language": "\u041c\u043e\u0432\u0430",
"Code sample...": "\u041f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443\u2026",
"Color Picker": "\u041f\u0456\u043f\u0435\u0442\u043a\u0430 \u043a\u043e\u043b\u044c\u043e\u0440\u0443",
"R": "\u0427",
"G": "\u0417",
"B": "\u0411",
"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",
"Emoticons...": "\u0421\u043c\u0430\u0439\u043b\u0438\u043a\u0438\u2026",
"Metadata and Document Properties": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u0456 \u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430",
"Description": "\u041e\u043f\u0438\u0441",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
"Fullscreen": "\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c",
"Action": "\u0414\u0456\u044f",
"Shortcut": "\u042f\u0440\u043b\u0438\u043a",
"Help": "\u0414\u043e\u043f\u043e\u043c\u043e\u0433\u0430",
"Address": "\u0410\u0434\u0440\u0435\u0441\u0430",
"Focus to menubar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043c\u0435\u043d\u044e",
"Focus to toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445",
"Focus to element path": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u0448\u043b\u044f\u0445\u0443",
"Focus to contextual toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0456",
"Insert link (if link plugin activated)": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f (\u044f\u043a\u0449\u043e \u043f\u043b\u0430\u0433\u0456\u043d \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c \u0430\u043a\u0442\u0438\u0432\u043e\u0432\u0430\u043d\u0438\u0439)",
"Save (if save plugin activated)": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 (\u044f\u043a\u0449\u043e \u043f\u043b\u0430\u0433\u0456\u043d \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043d\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432\u0430\u043d\u043e)",
"Find (if searchreplace plugin activated)": "\u0417\u043d\u0430\u0439\u0442\u0438 (\u044f\u043a\u0449\u043e \u043f\u043b\u0430\u0433\u0456\u043d \u043f\u043e\u0448\u0443\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043e\u0432\u0430\u043d\u043e)",
"Plugins installed ({0}):": "\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0456 \u043f\u043b\u0430\u0433\u0456\u043d\u0438 ({0}):",
"Premium plugins:": "\u041f\u0440\u0435\u043c\u0456\u0443\u043c \u043f\u043b\u0430\u0433\u0456\u043d\u0438:",
"Learn more...": "\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e...",
"You are using {0}": "\u0423 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u0456 {0}",
"Plugins": "\u041f\u043b\u0430\u0433\u0456\u043d\u0438",
"Handy Shortcuts": "\u041a\u043b\u0430\u0432\u0456\u0430\u0442\u0443\u0440\u043d\u0456 \u0441\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044f",
"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f",
"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440",
"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456",
"Advanced": "\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
"Border": "\u041c\u0435\u0436\u0430",
"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image...": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f\u2026",
"Image list": "\u041f\u0435\u0440\u0435\u043b\u0456\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c",
"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u043f\u0440\u043e\u0442\u0438 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u0457 \u0441\u0442\u0440\u0456\u043b\u043a\u0438",
"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u0437\u0430 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u044e \u0441\u0442\u0440\u0456\u043b\u043a\u043e\u044e",
"Flip vertically": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0456",
"Flip horizontally": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0456",
"Edit image": "\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image options": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Zoom in": "\u041d\u0430\u0431\u043b\u0438\u0437\u0438\u0442\u0438",
"Zoom out": "\u0412\u0456\u0434\u0434\u0430\u043b\u0438\u0442\u0438",
"Crop": "\u041e\u0431\u0440\u0456\u0437\u0430\u0442\u0438",
"Resize": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440",
"Orientation": "\u041e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u044f",
"Brightness": "\u042f\u0441\u043a\u0440\u0430\u0432\u0456\u0441\u0442\u044c",
"Sharpen": "\u0427\u0456\u0442\u043a\u0456\u0441\u0442\u044c",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Color levels": "\u0420\u0456\u0432\u043d\u0456 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Invert": "\u0406\u043d\u0432\u0435\u0440\u0441\u0456\u044f",
"Apply": "\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438",
"Back": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f",
"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
"Date\/time": "\u0414\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Insert\/Edit Link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Url": "\u0410\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Open link in...": "\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0432\u2026",
"Current window": "\u0423 \u043f\u043e\u0442\u043e\u0447\u043d\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456",
"None": "\u041d\u0456",
"New window": "\u0423 \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456",
"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Anchors": "\u042f\u043a\u043e\u0440\u0456",
"Link...": "\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u2026",
"Paste or type a link": "\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u0430\u0431\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 mailto: \u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 http:\/\/ \u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
"Link list": "\u041f\u0435\u0440\u0435\u043b\u0456\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c",
"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
"Insert\/edit media": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0430\u0443\u0434\u0456\u043e",
"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
"Alternative source URL": "\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
"Media poster (Image URL)": "\u0421\u0432\u0456\u0442\u043b\u0438\u043d\u0430 \u043c\u0435\u0434\u0456\u0430 (\u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f)",
"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
"Media...": "\u041c\u0435\u0434\u0456\u0430\u2026",
"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0456\u043b",
"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442",
"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
"Print...": "\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438\u2026",
"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",
"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435",
"Previous": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",
"Next": "\u0412\u043d\u0438\u0437",
"Find and replace...": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0456\u043d\u0430\u2026",
"Could not find the specified string.": "\u0412\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e",
"Match case": "\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
"Find whole words only": "\u0428\u0443\u043a\u0430\u0442\u0438 \u0442\u0456\u043b\u044c\u043a\u0438 \u0446\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
"Spell check": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0443",
"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435",
"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438",
"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0434\u043e \u0421\u043b\u043e\u0432\u043d\u0438\u043a\u0430",
"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",
"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430",
"Row": "\u0420\u044f\u0434\u043e\u043a",
"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",
"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0440\u044f\u0434\u043a\u0430",
"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
"Insert column before": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043b\u0456\u0432\u043e\u0440\u0443\u0447",
"Insert column after": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
"Rows": "\u0420\u044f\u0434\u043a\u0438",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
"Cell spacing": "\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",
"Cell padding": "\u041f\u043e\u043b\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a",
"Show caption": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Scope": "\u0421\u0444\u0435\u0440\u0430",
"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435  \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Middle": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Bottom": "\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432",
"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430",
"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
"Body": "\u0422\u0456\u043b\u043e",
"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
"Border color": "\u043a\u043e\u043b\u0456\u0440 \u0440\u0430\u043c\u043a\u0438",
"Insert template...": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u2026",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443",
"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",
"Custom...": "\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439",
"Custom color": "\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u043a\u043e\u043b\u0456\u0440",
"No color": "\u0431\u0435\u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u0443",
"Remove color": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043a\u043e\u043b\u0456\u0440",
"Table of Contents": "\u0417\u043c\u0456\u0441\u0442",
"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438",
"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
"Word count": "\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u043b\u0456\u0432",
"Count": "\u041b\u0456\u0447\u0438\u043b\u044c\u043d\u0438\u043a",
"Document": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Selection": "\u0412\u0438\u0434\u0456\u043b\u0435\u043d\u043d\u044f",
"Words": "\u0421\u043b\u043e\u0432\u0430",
"Words: {0}": "\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u043b\u0456\u0432: {0}",
"{0} words": "{0} \u0441\u043b\u0456\u0432",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438",
"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
"View": "\u0412\u0438\u0433\u043b\u044f\u0434",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
"Powered by {0}": "\u041f\u0440\u0430\u0446\u044e\u0454 \u043d\u0430 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 \u0449\u043e\u0431 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438 \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432, ALT-0 \u0434\u043b\u044f \u0432\u0438\u043a\u043b\u0438\u043a\u0443 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0438.",
"Image title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Border width": "\u0428\u0438\u0440\u0438\u043d\u0430 \u043c\u0435\u0436\u0456",
"Border style": "\u0421\u0442\u0438\u043b\u044c \u043c\u0435\u0436\u0456",
"Error": "\u041f\u043e\u043c\u0438\u043b\u043a\u0430",
"Warn": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u0436\u0435\u043d\u043d\u044f",
"Valid": "\u0412\u0456\u0440\u043d\u0438\u0439",
"To open the popup, press Shift+Enter": "\u0429\u043e\u0431 \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0441\u043f\u043b\u0438\u0432\u043d\u0435 \u0432\u0456\u043a\u043d\u043e, \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c Shift\u00a0+\u00a0Enter",
"Rich Text Area. Press ALT-0 for help.": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432\u0430\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT\u00a0+\u00a00, \u0449\u043e\u0431 \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0434\u043e\u0432\u0456\u0434\u043a\u0443.",
"System Font": "\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u0438\u0439 \u0448\u0440\u0438\u0444\u0442",
"Failed to upload image: {0}": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0432\u0456\u0434\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f: {0}",
"Failed to load plugin: {0} from url {1}": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u043f\u043b\u0430\u0491\u0456\u043d: {0} \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c {1}",
"Failed to load plugin url: {0}": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u043f\u043b\u0430\u0491\u0456\u043d: {0}",
"Failed to initialize plugin: {0}": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0456\u043d\u0456\u0446\u0456\u0430\u043b\u0456\u0437\u0443\u0432\u0430\u0442\u0438 \u043f\u043b\u0430\u0491\u0456\u043d: {0}",
"example": "\u043f\u0440\u0438\u043a\u043b\u0430\u0434",
"Search": "\u041f\u043e\u0448\u0443\u043a",
"All": "\u0412\u0441\u0435",
"Currency": "\u0412\u0430\u043b\u044e\u0442\u0430",
"Text": "\u0422\u0435\u043a\u0441\u0442",
"Quotations": "\u0426\u0438\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Mathematical": "\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
"Extended Latin": "\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0430 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044f",
"Symbols": "\u0421\u0438\u043c\u0432\u043e\u043b\u0438",
"Arrows": "\u0421\u0442\u0440\u0456\u043b\u043a\u0438",
"User Defined": "\u0412\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u0456 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0435\u043c",
"dollar sign": "\u0437\u043d\u0430\u043a \u0434\u043e\u043b\u0430\u0440\u0430",
"currency sign": "\u0437\u043d\u0430\u043a \u0432\u0430\u043b\u044e\u0442\u0438",
"euro-currency sign": "\u0437\u043d\u0430\u043a \u0454\u0432\u0440\u043e",
"colon sign": "\u0437\u043d\u0430\u043a \u0434\u0432\u043e\u043a\u0440\u0430\u043f\u043a\u0438",
"cruzeiro sign": "\u0437\u043d\u0430\u043a \u043a\u0440\u0443\u0437\u0435\u0439\u0440\u043e",
"french franc sign": "\u0437\u043d\u0430\u043a \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u044c\u043a\u043e\u0433\u043e \u0444\u0440\u0430\u043d\u043a\u0443",
"lira sign": "\u0437\u043d\u0430\u043a \u043b\u0456\u0440\u0438",
"mill sign": "\u0437\u043d\u0430\u043a \u043c\u0456\u043b\u044e",
"naira sign": "\u0437\u043d\u0430\u043a \u043d\u0430\u0439\u0440\u0438",
"peseta sign": "\u0437\u043d\u0430\u043a \u043f\u0435\u0441\u0435\u0442\u0438",
"rupee sign": "\u0437\u043d\u0430\u043a \u0440\u0443\u043f\u0456\u0457",
"won sign": "\u0437\u043d\u0430\u043a \u0432\u043e\u043d\u0438",
"new sheqel sign": "\u0437\u043d\u0430\u043a \u043d\u043e\u0432\u043e\u0433\u043e \u0448\u0435\u043a\u0435\u043b\u044f",
"dong sign": "\u0437\u043d\u0430\u043a \u0434\u043e\u043d\u0433\u0443",
"kip sign": "\u0437\u043d\u0430\u043a \u043a\u0456\u043f\u0443",
"tugrik sign": "\u0437\u043d\u0430\u043a \u0442\u0443\u0433\u0440\u0438\u043a\u0430",
"drachma sign": "\u0437\u043d\u0430\u043a \u0434\u0440\u0430\u0445\u043c\u0438",
"german penny symbol": "\u0437\u043d\u0430\u043a \u043f\u0444\u0435\u043d\u0456\u0433\u0430",
"peso sign": "\u0437\u043d\u0430\u043a \u043f\u0435\u0441\u043e",
"guarani sign": "\u0437\u043d\u0430\u043a \u0433\u0443\u0430\u0440\u0430\u043d\u0456",
"austral sign": "\u0437\u043d\u0430\u043a \u0430\u0443\u0441\u0442\u0440\u0430\u043b\u044e",
"hryvnia sign": "\u0437\u043d\u0430\u043a \u0433\u0440\u0438\u0432\u043d\u0456",
"cedi sign": "\u0437\u043d\u0430\u043a \u0441\u0435\u0434\u0456",
"livre tournois sign": "\u0437\u043d\u0430\u043a \u0442\u0443\u0440\u0441\u044c\u043a\u043e\u0433\u043e \u043b\u0456\u0432\u0440\u0443",
"spesmilo sign": "\u0437\u043d\u0430\u043a \u0441\u043f\u0435\u0441\u043c\u0456\u043b\u043e",
"tenge sign": "\u0437\u043d\u0430\u043a \u0442\u0435\u043d\u0433\u0435",
"indian rupee sign": "\u0437\u043d\u0430\u043a \u0456\u043d\u0434\u0456\u0439\u0441\u044c\u043a\u043e\u0457 \u0440\u0443\u043f\u0456\u0457",
"turkish lira sign": "\u0437\u043d\u0430\u043a \u0442\u0443\u0440\u0435\u0446\u044c\u043a\u043e\u0457 \u043b\u0456\u0440\u0438",
"nordic mark sign": "\u0437\u043d\u0430\u043a \u043f\u0456\u0432\u043d\u0456\u0447\u043d\u043e\u0457 \u043c\u0430\u0440\u043a\u0438",
"manat sign": "\u0437\u043d\u0430\u043a \u043c\u0430\u043d\u0430\u0442\u0443",
"ruble sign": "\u0437\u043d\u0430\u043a \u0440\u0443\u0431\u043b\u044f",
"yen character": "\u0441\u0438\u043c\u0432\u043e\u043b \u0454\u043d\u0438",
"yuan character": "\u0441\u0438\u043c\u0432\u043e\u043b \u044e\u0430\u043d\u044e",
"yuan character, in hong kong and taiwan": "\u0441\u0438\u043c\u0432\u043e\u043b \u044e\u0430\u043d\u044e \u0432 \u0413\u043e\u043d\u043a\u043e\u043d\u0437\u0456 \u0456 \u0422\u0430\u0439\u0432\u0430\u043d\u0456",
"yen\/yuan character variant one": "\u0441\u0438\u043c\u0432\u043e\u043b \u0454\u043d\u0438\/\u044e\u0430\u043d\u044e, \u043f\u0435\u0440\u0448\u0438\u0439 \u0432\u0430\u0440\u0456\u0430\u043d\u0442",
"Loading emoticons...": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0441\u043c\u0430\u0439\u043b\u0438\u043a\u0456\u0432\u2026",
"Could not load emoticons": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0441\u043c\u0430\u0439\u043b\u0438\u043a\u0438",
"People": "\u041b\u044e\u0434\u0438",
"Animals and Nature": "\u0422\u0432\u0430\u0440\u0438\u043d\u0438 \u0442\u0430 \u043f\u0440\u0438\u0440\u043e\u0434\u0430",
"Food and Drink": "\u0407\u0436\u0430 \u0442\u0430 \u043d\u0430\u043f\u043e\u0457",
"Activity": "\u0410\u043a\u0442\u0438\u0432\u043d\u0456\u0441\u0442\u044c",
"Travel and Places": "\u041f\u043e\u0434\u043e\u0440\u043e\u0436\u0456 \u0456 \u043c\u0456\u0441\u0446\u044f",
"Objects": "\u041e\u0431\u2019\u0454\u043a\u0442\u0438",
"Flags": "\u041f\u0440\u0430\u043f\u043e\u0440\u0438",
"Characters": "\u0421\u0438\u043c\u0432\u043e\u043b\u0438",
"Characters (no spaces)": "\u0421\u0438\u043c\u0432\u043e\u043b\u0438 (\u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0456\u043b\u0456\u0432)",
"{0} characters": "\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432: {0}",
"Error: Form submit field collision.": "\u041f\u043e\u043c\u0438\u043b\u043a\u0430: \u043a\u043e\u043b\u0456\u0437\u0456\u044f \u043f\u043e\u043b\u044f \u0432\u0456\u0434\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044f \u0444\u043e\u0440\u043c\u0438.",
"Error: No form element found.": "\u041f\u043e\u043c\u0438\u043b\u043a\u0430: \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0444\u043e\u0440\u043c\u0438.",
"Update": "\u041e\u043d\u043e\u0432\u0438\u0442\u0438",
"Color swatch": "\u0417\u0440\u0430\u0437\u043e\u043a \u043a\u043e\u043b\u044c\u043e\u0440\u0443",
"Turquoise": "\u0411\u0456\u0440\u044e\u0437\u043e\u0432\u0438\u0439",
"Green": "\u0417\u0435\u043b\u0435\u043d\u0438\u0439",
"Blue": "\u0421\u0438\u043d\u0456\u0439",
"Purple": "\u0424\u0456\u043e\u043b\u0435\u0442\u043e\u0432\u0438\u0439",
"Navy Blue": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0438\u043d\u0456\u0439",
"Dark Turquoise": "\u0422\u0435\u043c\u043d\u043e-\u0431\u0456\u0440\u044e\u0437\u043e\u0432\u0438\u0439",
"Dark Green": "\u0422\u0435\u043c\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u0438\u0439",
"Medium Blue": "\u0421\u0435\u0440\u0435\u0434\u043d\u044c\u043e-\u0441\u0438\u043d\u0456\u0439",
"Medium Purple": "\u0421\u0435\u0440\u0435\u0434\u043d\u044c\u043e-\u0444\u0456\u043e\u043b\u0435\u0442\u043e\u0432\u0438\u0439",
"Midnight Blue": "\u041e\u043f\u0456\u0432\u043d\u0456\u0447\u043d\u0430 \u0431\u043b\u0430\u043a\u0438\u0442\u044c",
"Yellow": "\u0416\u043e\u0432\u0442\u0438\u0439",
"Orange": "\u041f\u043e\u043c\u0430\u0440\u0430\u043d\u0447\u0435\u0432\u0438\u0439",
"Red": "\u0427\u0435\u0440\u0432\u043e\u043d\u0438\u0439",
"Light Gray": "\u0421\u0432\u0456\u0442\u043b\u043e-\u0441\u0456\u0440\u0438\u0439",
"Gray": "\u0421\u0456\u0440\u0438\u0439",
"Dark Yellow": "\u0422\u0435\u043c\u043d\u043e-\u0436\u043e\u0432\u0442\u0438\u0439",
"Dark Orange": "\u0422\u0435\u043c\u043d\u043e-\u043f\u043e\u043c\u0430\u0440\u0430\u043d\u0447\u0435\u0432\u0438\u0439",
"Dark Red": "\u0422\u0435\u043c\u043d\u043e-\u0447\u0435\u0440\u0432\u043e\u043d\u0438\u0439",
"Medium Gray": "\u0421\u0435\u0440\u0435\u0434\u043d\u044c\u043e-\u0441\u0456\u0440\u0438\u0439",
"Dark Gray": "\u0422\u0435\u043c\u043d\u043e-\u0441\u0456\u0440\u0438\u0439",
"Light Green": "\u0421\u0432\u0456\u0442\u043b\u043e-\u0437\u0435\u043b\u0435\u043d\u0438\u0439",
"Light Yellow": "\u0421\u0432\u0456\u0442\u043b\u043e-\u0436\u043e\u0432\u0442\u0438\u0439",
"Light Red": "\u0421\u0432\u0456\u0442\u043b\u043e-\u0447\u0435\u0440\u0432\u043e\u043d\u0438\u0439",
"Light Purple": "\u0421\u0432\u0456\u0442\u043b\u043e-\u0444\u0456\u043e\u043b\u0435\u0442\u043e\u0432\u0438\u0439",
"Light Blue": "\u0421\u0432\u0456\u0442\u043b\u043e-\u0441\u0438\u043d\u0456\u0439",
"Dark Purple": "\u0422\u0435\u043c\u043d\u043e-\u0444\u0456\u043e\u043b\u0435\u0442\u043e\u0432\u0438\u0439",
"Dark Blue": "\u0422\u0435\u043c\u043d\u043e-\u0433\u043e\u043b\u0443\u0431\u0438\u0439",
"Black": "\u0427\u043e\u0440\u043d\u0438\u0439",
"White": "\u0411\u0456\u043b\u0438\u0439",
"Switch to or from fullscreen mode": "\u041f\u0435\u0440\u0435\u043c\u0438\u043a\u0430\u043d\u043d\u044f \u043f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0443",
"Open help dialog": "\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432\u0456\u043a\u043d\u043e \u0434\u043e\u0432\u0456\u0434\u043a\u0438",
"history": "\u0456\u0441\u0442\u043e\u0440\u0456\u044f",
"styles": "\u0441\u0442\u0438\u043b\u0456",
"formatting": "\u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"alignment": "\u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"indentation": "\u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"permanent pen": "\u043c\u0430\u0440\u043a\u0435\u0440",
"comments": "\u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u0456",
"Format Painter": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0437\u0430 \u0437\u0440\u0430\u0437\u043a\u043e\u043c",
"Insert\/edit iframe": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 iframe",
"Capitalization": "\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u0432\u0435\u043b\u0438\u043a\u0438\u0445 \u043b\u0456\u0442\u0435\u0440",
"lowercase": "\u043d\u0438\u0436\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
"UPPERCASE": "\u0412\u0415\u0420\u0425\u041d\u0406\u0419 \u0420\u0415\u0413\u0406\u0421\u0422\u0420",
"Title Case": "\u0420\u0435\u0433\u0456\u0441\u0442\u0440 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430",
"Permanent Pen Properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043c\u0430\u0440\u043a\u0435\u0440\u0430",
"Permanent pen properties...": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043c\u0430\u0440\u043a\u0435\u0440\u0430\u2026",
"Font": "\u0428\u0440\u0438\u0444\u0442",
"Size": "\u0420\u043e\u0437\u043c\u0456\u0440",
"More...": "\u0411\u0456\u043b\u044c\u0448\u0435\u2026",
"Spellcheck Language": "\u041c\u043e\u0432\u0430 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
"Select...": "\u0412\u0438\u0431\u0440\u0430\u0442\u0438\u2026",
"Preferences": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438",
"Yes": "\u0422\u0430\u043a",
"No": "\u041d\u0456",
"Keyboard Navigation": "\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u0430 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u043e\u044e \u043a\u043b\u0430\u0432\u0456\u0430\u0442\u0443\u0440\u0438",
"Version": "\u0412\u0435\u0440\u0441\u0456\u044f",
"Anchor": "\u042f\u043a\u0456\u0440",
"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
"Code sample": "\u041f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443",
"Color": "\u043a\u043e\u043b\u0456\u0440",
"Emoticons": "\u0415\u043c\u043e\u0446\u0456\u0457",
"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Image": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Target": "\u0412\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Link": "\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Poster": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Media": "\u041c\u0435\u0434\u0456\u0430\u0434\u0430\u043d\u0456",
"Print": "\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438",
"Prev": "\u0412\u0433\u043e\u0440\u0443",
"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0456\u043d\u0430",
"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d"
});js/tinymce/langs/ja.js000064400000066643151727150340010710 0ustar00tinymce.addI18n('ja',{
"Redo": "\u3084\u308a\u76f4\u3057",
"Undo": "\u5143\u306b\u623b\u3059",
"Cut": "\u5207\u308a\u53d6\u308a",
"Copy": "\u30b3\u30d4\u30fc",
"Paste": "\u8cbc\u308a\u4ed8\u3051",
"Select all": "\u3059\u3079\u3066\u9078\u629e",
"New document": "\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
"Ok": "OK",
"Cancel": "\u53d6\u6d88",
"Visual aids": "\u8868\u306e\u67a0\u7dda\u3092\u70b9\u7dda\u3067\u8868\u793a",
"Bold": "\u592a\u5b57",
"Italic": "\u659c\u4f53",
"Underline": "\u4e0b\u7dda",
"Strikethrough": "\u53d6\u6d88\u7dda",
"Superscript": "\u4e0a\u4ed8\u304d",
"Subscript": "\u4e0b\u4ed8\u304d",
"Clear formatting": "\u66f8\u5f0f\u3092\u30af\u30ea\u30a2",
"Align left": "\u5de6\u63c3\u3048",
"Align center": "\u4e2d\u592e\u63c3\u3048",
"Align right": "\u53f3\u63c3\u3048",
"Justify": "\u4e21\u7aef\u63c3\u3048",
"Bullet list": "\u7b87\u6761\u66f8\u304d",
"Numbered list": "\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d",
"Decrease indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059",
"Increase indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059",
"Close": "\u9589\u3058\u308b",
"Formats": "\u66f8\u5f0f",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff08Ctrl+X, Ctrl+C, Ctrl+V\uff09\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",
"Headers": "\u30d8\u30c3\u30c0\u30fc",
"Header 1": "\u30d8\u30c3\u30c0\u30fc 1",
"Header 2": "\u30d8\u30c3\u30c0\u30fc 2",
"Header 3": "\u30d8\u30c3\u30c0\u30fc 3",
"Header 4": "\u30d8\u30c3\u30c0\u30fc 4",
"Header 5": "\u30d8\u30c3\u30c0\u30fc 5",
"Header 6": "\u30d8\u30c3\u30c0\u30fc 6",
"Headings": "\u898b\u51fa\u3057",
"Heading 1": "\u898b\u51fa\u30571",
"Heading 2": "\u898b\u51fa\u30572",
"Heading 3": "\u898b\u51fa\u30573",
"Heading 4": "\u898b\u51fa\u30574",
"Heading 5": "\u898b\u51fa\u30575",
"Heading 6": "\u898b\u51fa\u30576",
"Preformatted": "\u66f8\u5f0f\u8a2d\u5b9a\u6e08\u307f",
"Div": "Div",
"Pre": "Pre",
"Code": "\u30b3\u30fc\u30c9",
"Paragraph": "\u6bb5\u843d",
"Blockquote": "Blockquote",
"Inline": "\u30a4\u30f3\u30e9\u30a4\u30f3",
"Blocks": "\u30d6\u30ed\u30c3\u30af",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u8cbc\u308a\u4ed8\u3051\u306f\u73fe\u5728\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u3067\u3059\u3002\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30aa\u30d5\u306b\u3057\u306a\u3044\u9650\u308a\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002",
"Fonts": "\u30d5\u30a9\u30f3\u30c8",
"Font Sizes": "\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",
"Class": "\u30af\u30e9\u30b9",
"Browse for an image": "\u753b\u50cf\u3092\u53c2\u7167",
"OR": "OR",
"Drop an image here": "\u3053\u3053\u306b\u753b\u50cf\u3092\u30c9\u30ed\u30c3\u30d7",
"Upload": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9",
"Block": "\u30d6\u30ed\u30c3\u30af",
"Align": "\u914d\u7f6e",
"Default": "\u30c7\u30d5\u30a9\u30eb\u30c8",
"Circle": "\u5186",
"Disc": "\u70b9",
"Square": "\u56db\u89d2",
"Lower Alpha": "\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
"Lower Greek": "\u5c0f\u6587\u5b57\u306e\u30ae\u30ea\u30b7\u30e3\u6587\u5b57",
"Lower Roman": "\u5c0f\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
"Upper Alpha": "\u5927\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
"Upper Roman": "\u5927\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
"Anchor...": "\u30a2\u30f3\u30ab\u30fc...",
"Name": "\u30a2\u30f3\u30ab\u30fc\u540d",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID\u306f\u6587\u5b57\u3067\u59cb\u307e\u308a\u3001\u6587\u5b57\u3001\u6570\u5b57\u3001\u30c0\u30c3\u30b7\u30e5\u3001\u30c9\u30c3\u30c8\u3001\u30b3\u30ed\u30f3\u307e\u305f\u306f\u30a2\u30f3\u30c0\u30fc\u30b9\u30b3\u30a2\u3067\u59cb\u307e\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",
"You have unsaved changes are you sure you want to navigate away?": "\u307e\u3060\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5909\u66f4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u672c\u5f53\u306b\u3053\u306e\u30da\u30fc\u30b8\u3092\u96e2\u308c\u307e\u3059\u304b\uff1f",
"Restore last draft": "\u524d\u56de\u306e\u4e0b\u66f8\u304d\u3092\u5fa9\u6d3b\u3055\u305b\u308b",
"Special character...": "\u7279\u6b8a\u6587\u5b57...",
"Source code": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9",
"Insert\/Edit code sample": "\u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Language": "\u8a00\u8a9e",
"Code sample...": "\u30b3\u30fc\u30c9\u306e\u30b5\u30f3\u30d7\u30eb...",
"Color Picker": "\u30ab\u30e9\u30fc\u30d4\u30c3\u30ab\u30fc",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u5de6\u304b\u3089\u53f3",
"Right to left": "\u53f3\u304b\u3089\u5de6",
"Emoticons": "\u7d75\u6587\u5b57",
"Emoticons...": "\u7d75\u6587\u5b57...",
"Metadata and Document Properties": "\u30e1\u30bf\u30c7\u30fc\u30bf\u3068\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3",
"Title": "\u30bf\u30a4\u30c8\u30eb",
"Keywords": "\u30ad\u30fc\u30ef\u30fc\u30c9",
"Description": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5185\u5bb9",
"Robots": "\u30ed\u30dc\u30c3\u30c4",
"Author": "\u8457\u8005",
"Encoding": "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",
"Fullscreen": "\u5168\u753b\u9762\u8868\u793a",
"Action": "\u30a2\u30af\u30b7\u30e7\u30f3",
"Shortcut": "\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",
"Help": "\u30d8\u30eb\u30d7",
"Address": "\u30a2\u30c9\u30ec\u30b9",
"Focus to menubar": "\u30e1\u30cb\u30e5\u30fc\u30d0\u30fc\u306b\u30d5\u30a9\u30fc\u30ab\u30b9",
"Focus to toolbar": "\u30c4\u30fc\u30eb\u30d0\u30fc\u306b\u30d5\u30a9\u30fc\u30ab\u30b9",
"Focus to element path": "\u8981\u7d20\u30d1\u30b9\u306b\u30d5\u30a9\u30fc\u30ab\u30b9",
"Focus to contextual toolbar": "\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30c4\u30fc\u30eb\u30d0\u30fc\u306b\u30d5\u30a9\u30fc\u30ab\u30b9",
"Insert link (if link plugin activated)": "\u30ea\u30f3\u30af\u3092\u633f\u5165 (\u30ea\u30f3\u30af\u30d7\u30e9\u30b0\u30a4\u30f3\u6709\u52b9\u6642)",
"Save (if save plugin activated)": "\u4fdd\u5b58 (\u4fdd\u5b58\u30d7\u30e9\u30b0\u30a4\u30f3\u6709\u52b9\u6642)",
"Find (if searchreplace plugin activated)": "\u691c\u7d22(\u7f6e\u63db\u30d7\u30e9\u30b0\u30a4\u30f3\u6709\u52b9\u6642)",
"Plugins installed ({0}):": "\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u30d7\u30e9\u30b0\u30a4\u30f3 ({0}):",
"Premium plugins:": "\u30d7\u30ec\u30df\u30a2\u30e0\u30d7\u30e9\u30b0\u30a4\u30f3:",
"Learn more...": "\u8a73\u7d30...",
"You are using {0}": "\u3042\u306a\u305f\u306f {0} \u4f7f\u7528\u4e2d",
"Plugins": "\u30d7\u30e9\u30b0\u30a4\u30f3",
"Handy Shortcuts": "\u4fbf\u5229\u306a\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",
"Horizontal line": "\u6c34\u5e73\u7f6b\u7dda",
"Insert\/edit image": "\u753b\u50cf\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Alternative description": "\u4ee3\u66ff\u306e\u8aac\u660e\u6587",
"Accessibility": "\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3",
"Image is decorative": "\u753b\u50cf\u306f\u88c5\u98fe\u753b\u50cf",
"Source": "\u753b\u50cf\u306e\u30bd\u30fc\u30b9",
"Dimensions": "\u753b\u50cf\u30b5\u30a4\u30ba\uff08\u6a2a\u30fb\u7e26\uff09",
"Constrain proportions": "\u7e26\u6a2a\u6bd4\u3092\u4fdd\u6301\u3059\u308b",
"General": "\u4e00\u822c",
"Advanced": "\u8a73\u7d30\u8a2d\u5b9a",
"Style": "\u30b9\u30bf\u30a4\u30eb",
"Vertical space": "\u7e26\u65b9\u5411\u306e\u4f59\u767d",
"Horizontal space": "\u6a2a\u65b9\u5411\u306e\u4f59\u767d",
"Border": "\u67a0\u7dda",
"Insert image": "\u753b\u50cf\u306e\u633f\u5165",
"Image...": "\u753b\u50cf..",
"Image list": "\u753b\u50cf\u4e00\u89a7",
"Rotate counterclockwise": "\u53cd\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2",
"Rotate clockwise": "\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2",
"Flip vertically": "\u4e0a\u4e0b\u306b\u53cd\u8ee2",
"Flip horizontally": "\u6c34\u5e73\u306b\u53cd\u8ee2",
"Edit image": "\u753b\u50cf\u306e\u7de8\u96c6",
"Image options": "\u753b\u50cf\u30aa\u30d7\u30b7\u30e7\u30f3",
"Zoom in": "\u30ba\u30fc\u30e0\u30a4\u30f3",
"Zoom out": "\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8",
"Crop": "\u30af\u30ed\u30c3\u30d7",
"Resize": "\u30ea\u30b5\u30a4\u30ba",
"Orientation": "\u5411\u304d",
"Brightness": "\u660e\u308b\u3055",
"Sharpen": "\u30b7\u30e3\u30fc\u30d7\u5316",
"Contrast": "\u30b3\u30f3\u30c8\u30e9\u30b9\u30c8",
"Color levels": "\u30ab\u30e9\u30fc\u30ec\u30d9\u30eb",
"Gamma": "\u30ac\u30f3\u30de",
"Invert": "\u53cd\u8ee2",
"Apply": "\u9069\u7528",
"Back": "\u623b\u308b",
"Insert date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
"Date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
"Insert\/edit link": "\u30ea\u30f3\u30af\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Text to display": "\u30ea\u30f3\u30af\u5143\u30c6\u30ad\u30b9\u30c8",
"Url": "\u30ea\u30f3\u30af\u5148URL",
"Open link in...": "\u30ea\u30f3\u30af\u306e\u958b\u304d\u65b9...",
"Current window": "\u540c\u3058\u30a6\u30a3\u30f3\u30c9\u30a6",
"None": "\u306a\u3057",
"New window": "\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6",
"Open link": "\u30ea\u30f3\u30af\u3092\u958b\u304f",
"Remove link": "\u30ea\u30f3\u30af\u306e\u524a\u9664",
"Anchors": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
"Link...": "\u30ea\u30f3\u30af...",
"Paste or type a link": "\u30ea\u30f3\u30af\u3092\u30da\u30fc\u30b9\u30c8\u307e\u305f\u306f\u5165\u529b",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u300cmailto:\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u5916\u90e8\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u300chttp:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u5916\u90e8\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u5fc5\u8981\u306a\u300chttps:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
"Link list": "\u30ea\u30f3\u30af\u4e00\u89a7",
"Insert video": "\u52d5\u753b",
"Insert\/edit video": "\u52d5\u753b\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Insert\/edit media": "\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165\u30fb\u7de8\u96c6",
"Alternative source": "\u4ee3\u66ff\u52d5\u753b\u306e\u5834\u6240",
"Alternative source URL": "\u4ee3\u66ff\u30bd\u30fc\u30b9URL",
"Media poster (Image URL)": "\u30e1\u30c7\u30a3\u30a2\u30dd\u30b9\u30bf\u30fc (\u753b\u50cfURL)",
"Paste your embed code below:": "\u57cb\u3081\u8fbc\u307f\u7528\u30b3\u30fc\u30c9\u3092\u4e0b\u8a18\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002",
"Embed": "\u57cb\u3081\u8fbc\u307f",
"Media...": "\u30e1\u30c7\u30a3\u30a2\u2026",
"Nonbreaking space": "\u56fa\u5b9a\u30b9\u30da\u30fc\u30b9\uff08&nbsp;\uff09",
"Page break": "\u30da\u30fc\u30b8\u533a\u5207\u308a",
"Paste as text": "\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051",
"Preview": "\u30d7\u30ec\u30d3\u30e5\u30fc",
"Print...": "\u5370\u5237...",
"Save": "\u4fdd\u5b58",
"Find": "\u691c\u7d22",
"Replace with": "\u7f6e\u304d\u63db\u3048\u308b\u6587\u5b57",
"Replace": "\u7f6e\u304d\u63db\u3048",
"Replace all": "\u5168\u3066\u3092\u7f6e\u304d\u63db\u3048\u308b",
"Previous": "\u524d\u3078",
"Next": "\u6b21",
"Find and Replace": "\u691c\u7d22\u3068\u7f6e\u63db",
"Find and replace...": "\u7f6e\u63db...",
"Could not find the specified string.": "\u304a\u63a2\u3057\u306e\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
"Match case": "\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b",
"Find whole words only": "\u8a9e\u5168\u4f53\u3092\u542b\u3080\u3082\u306e\u306e\u307f\u691c\u7d22",
"Find in selection": "\u9078\u629e\u90e8\u5206\u3067\u691c\u7d22",
"Spellcheck": "\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af",
"Spellcheck Language": "\u8a00\u8a9e\u306e\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af",
"No misspellings found.": "\u30b9\u30da\u30eb\u30df\u30b9\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f",
"Ignore": "\u7121\u8996",
"Ignore all": "\u5168\u3066\u3092\u7121\u8996",
"Finish": "\u7d42\u4e86",
"Add to Dictionary": "\u8f9e\u66f8\u306b\u8ffd\u52a0",
"Insert table": "\u8868\u306e\u633f\u5165",
"Table properties": "\u8868\u306e\u8a73\u7d30\u8a2d\u5b9a",
"Delete table": "\u8868\u306e\u524a\u9664",
"Cell": "\u30bb\u30eb",
"Row": "\u884c",
"Column": "\u5217",
"Cell properties": "\u30bb\u30eb\u306e\u8a73\u7d30\u8a2d\u5b9a",
"Merge cells": "\u30bb\u30eb\u306e\u7d50\u5408",
"Split cell": "\u30bb\u30eb\u306e\u5206\u5272",
"Insert row before": "\u4e0a\u5074\u306b\u884c\u3092\u633f\u5165",
"Insert row after": "\u4e0b\u5074\u306b\u884c\u3092\u633f\u5165",
"Delete row": "\u884c\u306e\u524a\u9664",
"Row properties": "\u884c\u306e\u8a73\u7d30\u8a2d\u5b9a",
"Cut row": "\u884c\u306e\u5207\u308a\u53d6\u308a",
"Copy row": "\u884c\u306e\u30b3\u30d4\u30fc",
"Paste row before": "\u4e0a\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
"Paste row after": "\u4e0b\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
"Insert column before": "\u5de6\u5074\u306b\u5217\u3092\u633f\u5165",
"Insert column after": "\u53f3\u5074\u306b\u5217\u3092\u633f\u5165",
"Delete column": "\u5217\u306e\u524a\u9664",
"Cols": "\u5217\u6570",
"Rows": "\u884c\u6570",
"Width": "\u5e45",
"Height": "\u9ad8\u3055",
"Cell spacing": "\u30bb\u30eb\u306e\u9593\u9694",
"Cell padding": "\u30bb\u30eb\u5185\u4f59\u767d\uff08\u30d1\u30c7\u30a3\u30f3\u30b0\uff09",
"Caption": "\u8868\u984c",
"Show caption": "\u30ad\u30e3\u30d7\u30b7\u30e7\u30f3\u306e\u8868\u793a",
"Left": "\u5de6\u5bc4\u305b",
"Center": "\u4e2d\u592e\u63c3\u3048",
"Right": "\u53f3\u5bc4\u305b",
"Cell type": "\u30bb\u30eb\u30bf\u30a4\u30d7",
"Scope": "\u30b9\u30b3\u30fc\u30d7",
"Alignment": "\u914d\u7f6e",
"H Align": "\u6c34\u5e73\u65b9\u5411\u306e\u914d\u7f6e",
"V Align": "\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e",
"Top": "\u4e0a",
"Middle": "\u4e2d\u592e",
"Bottom": "\u4e0b",
"Header cell": "\u30d8\u30c3\u30c0\u30fc\u30bb\u30eb",
"Row group": "\u884c\u30b0\u30eb\u30fc\u30d7",
"Column group": "\u5217\u30b0\u30eb\u30fc\u30d7",
"Row type": "\u884c\u30bf\u30a4\u30d7",
"Header": "\u30d8\u30c3\u30c0\u30fc",
"Body": "\u30dc\u30c7\u30a3\u30fc",
"Footer": "\u30d5\u30c3\u30bf\u30fc",
"Border color": "\u67a0\u7dda\u306e\u8272",
"Insert template...": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165..",
"Templates": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u540d",
"Template": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8",
"Text color": "\u30c6\u30ad\u30b9\u30c8\u306e\u8272",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u30ab\u30b9\u30bf\u30e0...",
"Custom color": "\u30ab\u30b9\u30bf\u30e0\u30ab\u30e9\u30fc",
"No color": "\u30ab\u30e9\u30fc\u306a\u3057",
"Remove color": "\u8272\u8a2d\u5b9a\u3092\u89e3\u9664",
"Table of Contents": "\u76ee\u6b21",
"Show blocks": "\u6587\u7ae0\u306e\u533a\u5207\u308a\u3092\u70b9\u7dda\u3067\u8868\u793a",
"Show invisible characters": "\u4e0d\u53ef\u8996\u6587\u5b57\u3092\u8868\u793a",
"Word count": "\u6587\u5b57\u6570\u30ab\u30a6\u30f3\u30c8",
"Count": "\u30ab\u30a6\u30f3\u30c8",
"Document": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
"Selection": "\u9078\u629e",
"Words": "\u5358\u8a9e\u6570",
"Words: {0}": "\u5358\u8a9e\u6570: {0}",
"{0} words": "{0} \u30ef\u30fc\u30c9",
"File": "\u30d5\u30a1\u30a4\u30eb",
"Edit": "\u7de8\u96c6",
"Insert": "\u633f\u5165",
"View": "\u8868\u793a",
"Format": "\u66f8\u5f0f",
"Table": "\u8868",
"Tools": "\u30c4\u30fc\u30eb",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u66f8\u5f0f\u4ed8\u304d\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u753b\u9762\u3002ALT-F9\u3067\u30e1\u30cb\u30e5\u30fc\u3001ALT-F10\u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002",
"Image title": "\u753b\u50cf\u30bf\u30a4\u30c8\u30eb",
"Border width": "\u67a0\u7dda\u5e45",
"Border style": "\u67a0\u7dda\u30b9\u30bf\u30a4\u30eb",
"Error": "\u30a8\u30e9\u30fc",
"Warn": "\u8b66\u544a",
"Valid": "\u6709\u52b9",
"To open the popup, press Shift+Enter": "\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u958b\u304f\u306b\u306f\u3001Shift+Enter\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044",
"Rich Text Area. Press ALT-0 for help.": "\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3002Alt-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002",
"System Font": "\u30b7\u30b9\u30c6\u30e0\u30d5\u30a9\u30f3\u30c8",
"Failed to upload image: {0}": "\u753b\u50cf{0}\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f",
"Failed to load plugin: {0} from url {1}": "URL{1}\u304b\u3089\u306e\u30d7\u30e9\u30b0\u30a4\u30f3{0}\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
"Failed to load plugin url: {0}": "\u30d7\u30e9\u30b0\u30a4\u30f3\u306eURL{0}\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f",
"Failed to initialize plugin: {0}": "\u30d7\u30e9\u30b0\u30a4\u30f3{0}\u306e\u521d\u671f\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f",
"example": "\u4f8b",
"Search": "\u691c\u7d22",
"All": "\u3059\u3079\u3066",
"Currency": "\u901a\u8ca8",
"Text": "\u30c6\u30ad\u30b9\u30c8",
"Quotations": "\u5f15\u7528",
"Mathematical": "\u6570\u5b66\u8a18\u53f7",
"Extended Latin": "\u30e9\u30c6\u30f3\u6587\u5b57\u62e1\u5f35",
"Symbols": "\u8a18\u53f7",
"Arrows": "\u77e2\u5370",
"User Defined": "\u30e6\u30fc\u30b6\u30fc\u5b9a\u7fa9",
"dollar sign": "\u30c9\u30eb\u8a18\u53f7",
"currency sign": "\u901a\u8ca8\u8a18\u53f7",
"euro-currency sign": "\u30e6\u30fc\u30ed\u8a18\u53f7",
"colon sign": "\u30b3\u30ed\u30f3\u8a18\u53f7",
"cruzeiro sign": "\u30af\u30eb\u30bc\u30a4\u30ed\u8a18\u53f7",
"french franc sign": "\u30d5\u30e9\u30f3\u30b9\u30d5\u30e9\u30f3\u8a18\u53f7",
"lira sign": "\u30ea\u30e9\u8a18\u53f7",
"mill sign": "\u30df\u30eb\u8a18\u53f7",
"naira sign": "\u30ca\u30a4\u30e9\u8a18\u53f7",
"peseta sign": "\u30da\u30bb\u30bf\u8a18\u53f7",
"rupee sign": "\u30eb\u30d4\u30fc\u8a18\u53f7",
"won sign": "\u30a6\u30a9\u30f3\u8a18\u53f7",
"new sheqel sign": "\u65b0\u30b7\u30a7\u30b1\u30eb\u8a18\u53f7",
"dong sign": "\u30c9\u30f3\u8a18\u53f7",
"kip sign": "\u30ad\u30fc\u30d7\u8a18\u53f7",
"tugrik sign": "\u30c8\u30a5\u30b0\u30eb\u30b0\u8a18\u53f7",
"drachma sign": "\u30c9\u30e9\u30af\u30de\u8a18\u53f7",
"german penny symbol": "\u30c9\u30a4\u30c4\u30da\u30cb\u30fc\u8a18\u53f7",
"peso sign": "\u30da\u30bd\u8a18\u53f7",
"guarani sign": "\u30ac\u30e9\u30cb\u8a18\u53f7",
"austral sign": "\u30a2\u30a6\u30b9\u30c8\u30e9\u30eb\u8a18\u53f7",
"hryvnia sign": "\u30d5\u30ea\u30f4\u30cb\u30e3\u8a18\u53f7",
"cedi sign": "\u30bb\u30c7\u30a3\u8a18\u53f7",
"livre tournois sign": "\u30c8\u30a5\u30fc\u30eb\u30dd\u30f3\u30c9\u8a18\u53f7",
"spesmilo sign": "\u30b9\u30da\u30b9\u30df\u30fc\u30ed\u8a18\u53f7",
"tenge sign": "\u30c6\u30f3\u30b2\u8a18\u53f7",
"indian rupee sign": "\u30a4\u30f3\u30c9\u30eb\u30d4\u30fc\u8a18\u53f7",
"turkish lira sign": "\u30c8\u30eb\u30b3\u30ea\u30e9\u8a18\u53f7",
"nordic mark sign": "\u5317\u6b27\u30de\u30eb\u30af\u8a18\u53f7",
"manat sign": "\u30de\u30ca\u30c8\u8a18\u53f7",
"ruble sign": "\u30eb\u30fc\u30d6\u30eb\u8a18\u53f7",
"yen character": "\u5186\u8a18\u53f7",
"yuan character": "\u4eba\u6c11\u5143\u8a18\u53f7",
"yuan character, in hong kong and taiwan": "\u9999\u6e2f\u304a\u3088\u3073\u53f0\u6e7e\u306b\u304a\u3051\u308b\u5143\u8a18\u53f7",
"yen\/yuan character variant one": "\u5186\/\u5143\u8a18\u53f7\u306e\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3",
"Loading emoticons...": "\u7d75\u6587\u5b57\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059...",
"Could not load emoticons": "\u7d75\u6587\u5b57\u304c\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
"People": "\u4eba",
"Animals and Nature": "\u52d5\u7269\u3068\u81ea\u7136",
"Food and Drink": "\u98df\u3079\u7269\u3068\u98f2\u307f\u7269",
"Activity": "\u884c\u52d5",
"Travel and Places": "\u65c5\u884c\u3068\u5834\u6240",
"Objects": "\u7269",
"Flags": "\u65d7",
"Characters": "\u6587\u5b57\u6570",
"Characters (no spaces)": "\u6587\u5b57\u6570 (\u30b9\u30da\u30fc\u30b9\u306a\u3057)",
"{0} characters": "{0}\u6587\u5b57",
"Error: Form submit field collision.": "\u30a8\u30e9\u30fc\uff1a\u30d5\u30a9\u30fc\u30e0\u9001\u4fe1\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u7af6\u5408\u3057\u3066\u3044\u307e\u3059\u3002",
"Error: No form element found.": "\u30a8\u30e9\u30fc\uff1a\u30d5\u30a9\u30fc\u30e0\u8981\u7d20\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
"Update": "\u66f4\u65b0",
"Color swatch": "\u8272\u306e\u898b\u672c",
"Turquoise": "\u30bf\u30fc\u30b3\u30a4\u30ba",
"Green": "\u30b0\u30ea\u30fc\u30f3",
"Blue": "\u30d6\u30eb\u30fc",
"Purple": "\u30d1\u30fc\u30d7\u30eb",
"Navy Blue": "\u30cd\u30a4\u30d3\u30fc",
"Dark Turquoise": "\u30c0\u30fc\u30af\u30bf\u30fc\u30b3\u30a4\u30ba",
"Dark Green": "\u30c0\u30fc\u30af\u30b0\u30ea\u30fc\u30f3",
"Medium Blue": "\u30e1\u30c7\u30a3\u30a2\u30e0\u30d6\u30eb\u30fc",
"Medium Purple": "\u30df\u30c7\u30a3\u30a2\u30e0\u30d1\u30fc\u30d7\u30eb",
"Midnight Blue": "\u30df\u30c3\u30c9\u30ca\u30a4\u30c8\u30d6\u30eb\u30fc",
"Yellow": "\u30a4\u30a8\u30ed\u30fc",
"Orange": "\u30aa\u30ec\u30f3\u30b8",
"Red": "\u30ec\u30c3\u30c9",
"Light Gray": "\u30e9\u30a4\u30c8\u30b0\u30ec\u30fc",
"Gray": "\u30b0\u30ec\u30fc",
"Dark Yellow": "\u30c0\u30fc\u30af\u30a4\u30a8\u30ed\u30fc",
"Dark Orange": "\u30c0\u30fc\u30af\u30aa\u30ec\u30f3\u30b8",
"Dark Red": "\u30c0\u30fc\u30af\u30ec\u30c3\u30c9",
"Medium Gray": "\u30df\u30c7\u30a3\u30a2\u30e0\u30b0\u30ec\u30fc",
"Dark Gray": "\u30c0\u30fc\u30af\u30b0\u30ec\u30fc",
"Light Green": "\u30e9\u30a4\u30c8\u30b0\u30ea\u30fc\u30f3",
"Light Yellow": "\u30e9\u30a4\u30c8\u30a4\u30a8\u30ed\u30fc",
"Light Red": "\u30e9\u30a4\u30c8\u30ec\u30c3\u30c9",
"Light Purple": "\u30e9\u30a4\u30c8\u30d1\u30fc\u30d7\u30eb",
"Light Blue": "\u30e9\u30a4\u30c8\u30d6\u30eb\u30fc",
"Dark Purple": "\u30c0\u30fc\u30af\u30d1\u30fc\u30d7\u30eb",
"Dark Blue": "\u30c0\u30fc\u30af\u30d6\u30eb\u30fc",
"Black": "\u30d6\u30e9\u30c3\u30af",
"White": "\u30db\u30ef\u30a4\u30c8",
"Switch to or from fullscreen mode": "\u30d5\u30eb\u30b9\u30af\u30ea\u30fc\u30f3\u30e2\u30fc\u30c9\u5207\u66ff",
"Open help dialog": "\u30d8\u30eb\u30d7\u30c0\u30a4\u30a2\u30ed\u30b0\u3092\u958b\u304f",
"history": "\u5c65\u6b74",
"styles": "\u30b9\u30bf\u30a4\u30eb",
"formatting": "\u66f8\u5f0f",
"alignment": "\u914d\u7f6e",
"indentation": "\u30a4\u30f3\u30c7\u30f3\u30c8",
"Font": "\u30d5\u30a9\u30f3\u30c8",
"Size": "\u30b5\u30a4\u30ba",
"More...": "\u8a73\u7d30...",
"Select...": "\u9078\u629e...",
"Preferences": "\u30d7\u30ea\u30d5\u30a1\u30ec\u30f3\u30b9",
"Yes": "\u306f\u3044",
"No": "\u3044\u3044\u3048",
"Keyboard Navigation": "\u30ad\u30fc\u30dc\u30fc\u30c9\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3",
"Version": "\u30d0\u30fc\u30b8\u30e7\u30f3",
"Code view": "\u30b3\u30fc\u30c9\u8868\u793a",
"Open popup menu for split buttons": "\u5206\u5272\u30dc\u30bf\u30f3\u306e\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",
"List Properties": "\u7b87\u6761\u66f8\u304d\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
"List properties...": "\u7b87\u6761\u66f8\u304d\u306e\u30d7\u30ed\u30d1\u30c6\u30a3...",
"Start list at number": "\u756a\u53f7\u30ea\u30b9\u30c8\u306e\u958b\u59cb",
"Line height": "\u884c\u306e\u9ad8\u3055",
"comments": "\u30b3\u30e1\u30f3\u30c8",
"Format Painter": "\u66f8\u5f0f\u306e\u30b3\u30d4\u30fc\/\u8cbc\u308a\u4ed8\u3051",
"Insert\/edit iframe": "iframe\u306e\u633f\u5165\/\u7de8\u96c6",
"Capitalization": "\u5927\u6587\u5b57\u5316",
"lowercase": "\u5c0f\u6587\u5b57",
"UPPERCASE": "\u5927\u6587\u5b57",
"Title Case": "\u30bf\u30a4\u30c8\u30eb\u6587\u5b57",
"permanent pen": "\u86cd\u5149\u30da\u30f3",
"Permanent Pen Properties": "\u86cd\u5149\u30da\u30f3\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
"Permanent pen properties...": "\u86cd\u5149\u30da\u30f3\u306e\u30d7\u30ed\u30d1\u30c6\u30a3...",
"case change": "\u5927\u6587\u5b57\/\u5c0f\u6587\u5b57\u306e\u5909\u66f4",
"page embed": "\u30da\u30fc\u30b8\u57cb\u3081\u8fbc\u307f",
"Advanced sort...": "\u9ad8\u5ea6\u306a\u4e26\u3079\u66ff\u3048...",
"Advanced Sort": "\u9ad8\u5ea6\u306a\u4e26\u3079\u66ff\u3048",
"Sort table by column ascending": "\u5217\u306e\u6607\u9806\u3067\u8868\u3092\u4e26\u3079\u66ff\u3048\u308b",
"Sort table by column descending": "\u5217\u306e\u964d\u9806\u3067\u8868\u3092\u4e26\u3079\u66ff\u3048\u308b",
"Sort": "\u4e26\u3079\u66ff\u3048",
"Order": "\u9806\u5e8f",
"Sort by": "\u4e26\u3073\u66ff\u3048",
"Ascending": "\u6607\u9806",
"Descending": "\u964d\u9806",
"Column {0}": "\u5217 {0}",
"Row {0}": "\u884c {0}",
"Spellcheck...": "\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af ...",
"Misspelled word": "\u30b9\u30da\u30eb\u30df\u30b9\u306e\u5358\u8a9e",
"Suggestions": "\u63d0\u6848",
"Change": "\u5909\u66f4",
"Finding word suggestions": "\u5358\u8a9e\u306e\u63d0\u6848\u3092\u691c\u7d22",
"Success": "\u6210\u529f",
"Repair": "\u4fee\u5fa9",
"Issue {0} of {1}": "{1}\u306e{0}\u3092\u767a\u884c",
"Images must be marked as decorative or have an alternative text description": "\u753b\u50cf\u306f\u88c5\u98fe\u3068\u3057\u3066\u30de\u30fc\u30af\u3059\u308b\u304b\u3001\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u8aac\u660e\u304c\u5fc5\u8981\u3067\u3059",
"Images must have an alternative text description. Decorative images are not allowed.": "\u753b\u50cf\u306b\u306f\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u306e\u8aac\u660e\u304c\u5fc5\u8981\u3067\u3059\u3002\u88c5\u98fe\u7684\u306a\u753b\u50cf\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002",
"Or provide alternative text:": "\u307e\u305f\u306f\u4ee3\u66ff\u30c6\u30ad\u30b9\u30c8\u3092\u63d0\u4f9b:",
"Make image decorative:": "\u753b\u50cf\u3092\u88c5\u98fe\u7684\u306b\u3059\u308b:",
"ID attribute must be unique": "ID\u306e\u5c5e\u6027\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059",
"Make ID unique": "ID\u3092\u4e00\u610f\u306b\u3059\u308b",
"Keep this ID and remove all others": "\u3053\u306eID\u3092\u4fdd\u6301\u3057\u3001\u4ed6\u306e\u3059\u3079\u3066\u3092\u524a\u9664\u3057\u307e\u3059",
"Remove this ID": "\u3053\u306eID\u3092\u524a\u9664\u3057\u307e\u3059",
"Remove all IDs": "\u3059\u3079\u3066\u306eID\u3092\u524a\u9664\u3057\u307e\u3059",
"Checklist": "\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8",
"Anchor": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
"Special character": "\u7279\u6b8a\u6587\u5b57",
"Code sample": "\u30b3\u30fc\u30c9\u30b5\u30f3\u30d7\u30eb",
"Color": "\u30ab\u30e9\u30fc",
"Document properties": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
"Image description": "\u753b\u50cf\u306e\u8aac\u660e\u6587",
"Image": "\u753b\u50cf",
"Insert link": "\u30ea\u30f3\u30af",
"Target": "\u30bf\u30fc\u30b2\u30c3\u30c8\u5c5e\u6027",
"Link": "\u30ea\u30f3\u30af",
"Poster": "\u4ee3\u66ff\u753b\u50cf\u306e\u5834\u6240",
"Media": "\u30e1\u30c7\u30a3\u30a2",
"Print": "\u5370\u5237",
"Prev": "\u524d",
"Find and replace": "\u691c\u7d22\u3068\u7f6e\u304d\u63db\u3048",
"Whole words": "\u5358\u8a9e\u5358\u4f4d\u3067\u691c\u7d22\u3059\u308b",
"Insert template": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165"
});js/tinymce/langs/ku.js000064400000113341151727150340010721 0ustar00tinymce.addI18n('ku',{
"Redo": "\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5",
"Undo": "\u06af\u06d5\u0695\u0627\u0646\u06d5\u0648\u06d5",
"Cut": "\u0628\u0695\u06cc\u0646",
"Copy": "\u0644\u06d5\u0628\u06d5\u0631\u06af\u0631\u062a\u0646\u06d5\u0648\u06d5",
"Paste": "\u0644\u06a9\u0627\u0646\u062f\u0646",
"Select all": "\u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u0646\u06cc \u0647\u06d5\u0645\u0648\u0648",
"New document": "\u0628\u06d5\u06b5\u06af\u06d5\u0646\u0627\u0645\u06d5\u06cc \u0646\u0648\u06ce",
"Ok": "\u0628\u0627\u0634\u06d5",
"Cancel": "\u067e\u0627\u0634\u06af\u06d5\u0632\u0628\u0648\u0648\u0646\u06d5\u0648\u06d5",
"Visual aids": "\u0647\u0627\u0648\u06a9\u0627\u0631\u06cc \u0628\u06cc\u0646\u06d5\u06cc\u06cc",
"Bold": "\u062a\u06c6\u062e\u06a9\u0631\u062f\u0646",
"Italic": "\u0644\u0627\u0631\u06a9\u0631\u062f\u0646",
"Underline": "\u0647\u06ce\u06b5 \u0628\u06d5\u0698\u06ce\u0631\u062f\u0627\u0646",
"Strikethrough": "\u0647\u06ce\u06b5 \u0628\u06d5\u0646\u0627\u0648\u062f\u0627\u0646",
"Superscript": "\u0633\u06d5\u0631\u0646\u0648\u0648\u0633",
"Subscript": "\u0698\u06ce\u0631\u0646\u0648\u0648\u0633",
"Clear formatting": "\u067e\u0627\u06a9\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u0634\u06ce\u0648\u0627\u0632\u06a9\u0631\u062f\u0646",
"Align left": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0686\u06d5\u067e",
"Align center": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0646\u0627\u0648\u06d5\u0695\u0627\u0633\u062a",
"Align right": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0695\u0627\u0633\u062a",
"Justify": "\u0647\u0627\u0648\u0695\u06ce\u06a9\u06cc ",
"Bullet list": "\u0644\u06cc\u0633\u062a\u06cc \u062e\u0627\u06b5",
"Numbered list": "\u0644\u06cc\u0633\u062a\u06cc \u0698\u0645\u0627\u0631\u06d5",
"Decrease indent": "\u06a9\u06d5\u0645\u06a9\u0631\u062f\u0646\u06cc \u0628\u06c6\u0634\u0627\u06cc\u06cc",
"Increase indent": "\u0632\u06cc\u0627\u062f\u06a9\u0631\u062f\u0646\u06cc \u0628\u06c6\u0634\u0627\u06cc\u06cc",
"Close": "\u062f\u0627\u062e\u0633\u062a\u0646",
"Formats": "\u0634\u06ce\u0648\u0627\u0632\u06a9\u0631\u062f\u0646\u06d5\u06a9\u0627\u0646",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0648\u06ce\u0628\u06af\u06d5\u0695\u06d5\u06a9\u06d5\u062a \u067e\u0627\u06b5\u067e\u0634\u062a\u06cc \u062f\u06d5\u0633\u062a\u06a9\u06d5\u0648\u062a\u0646\u06cc \u0695\u0627\u0633\u062a\u06d5\u0648\u062e\u06c6\u06cc \u06a9\u0644\u06cc\u067e\u0628\u06c6\u0631\u062f \u0646\u0627\u06a9\u0627\u062a. \u062a\u06a9\u0627\u06cc\u06d5 \u0644\u06d5\u062c\u06cc\u0627\u062a\u06cc \u06a9\u0648\u0631\u062a\u0628\u0695\u06d5\u06a9\u0627\u0646\u06cc Ctrl+X\/C\/V \u062a\u06d5\u062e\u062a\u06d5\u06a9\u0644\u06cc\u0644 \u0628\u06d5\u06a9\u0627\u0631\u0628\u06ce\u0646\u06d5.",
"Headers": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5\u06a9\u0627\u0646",
"Header 1": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 1",
"Header 2": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 2",
"Header 3": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 3",
"Header 4": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 4",
"Header 5": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 5",
"Header 6": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 6",
"Headings": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a\u06d5\u06a9\u0627\u0646",
"Heading 1": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 1",
"Heading 2": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 2",
"Heading 3": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 3",
"Heading 4": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 4",
"Heading 5": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 5",
"Heading 6": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 6",
"Preformatted": "\u067e\u06ce\u0634\u0634\u06ce\u0648\u0627\u0632\u06a9\u0631\u0627\u0648",
"Div": "Div",
"Pre": "Pre",
"Code": "\u06a9\u06c6\u062f",
"Paragraph": "\u0628\u0695\u06af\u06d5",
"Blockquote": "Blockquote",
"Inline": "\u0644\u06d5\u0633\u06d5\u0631\u062f\u06ce\u0631",
"Blocks": "\u0628\u0644\u06c6\u06a9\u06d5\u06a9\u0627\u0646",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0644\u06a9\u0627\u0646\u062f\u0646 \u0626\u06ce\u0633\u062a\u0627 \u0644\u06d5 \u0628\u0627\u0631\u06cc \u062f\u06d5\u0642\u06cc \u0633\u0627\u062f\u06d5\u06cc\u06d5. \u0646\u0627\u0648\u06d5\u0695\u06c6\u06a9\u06d5\u06a9\u0627\u0646 \u062f\u06d5\u0644\u06a9\u06ce\u0646 \u0648\u06d5\u06a9 \u062f\u06d5\u0642\u06cc \u0633\u0627\u062f\u06d5 \u0647\u06d5\u062a\u0627 \u0626\u06d5\u0645 \u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u06d5 \u0646\u0627\u06a9\u0627\u0631\u0627 \u062f\u06d5\u06a9\u06d5\u06cc\u062a.",
"Fonts": "\u0641\u06c6\u0646\u062a\u06d5\u06a9\u0627\u0646",
"Font Sizes": "\u0642\u06d5\u0628\u0627\u0631\u06d5\u06cc \u0641\u06c6\u0646\u062a",
"Class": "\u067e\u06c6\u0644",
"Browse for an image": "\u0628\u06af\u06d5\u0695\u06ce \u0628\u06c6 \u0648\u06ce\u0646\u06d5\u06cc\u06d5\u06a9",
"OR": "OR",
"Drop an image here": "\u0648\u06ce\u0646\u06d5\u06cc\u06d5\u06a9 \u0695\u0627\u06a9\u06ce\u0634\u06d5 \u0628\u06c6 \u0626\u06ce\u0631\u06d5",
"Upload": "\u0628\u0627\u0631\u06a9\u0631\u062f\u0646",
"Block": "\u0628\u0644\u06c6\u06a9",
"Align": "\u0644\u0627\u06af\u0631\u062a\u0646",
"Default": "\u0628\u0646\u06d5\u0695\u06d5\u062a\u06cc",
"Circle": "\u0628\u0627\u0632\u0646\u06d5",
"Disc": "\u067e\u06d5\u067e\u06a9\u06d5",
"Square": "\u0686\u0648\u0627\u0631\u06af\u06c6\u0634\u06d5",
"Lower Alpha": "\u0626\u06d5\u0644\u0641\u0627\u06cc \u0628\u0686\u0648\u0648\u06a9",
"Lower Greek": "\u06cc\u06c6\u0646\u0627\u0646\u06cc \u0628\u0686\u0648\u0648\u06a9",
"Lower Roman": "\u0695\u06c6\u0645\u0627\u0646\u06cc \u0628\u0686\u0648\u0648\u06a9",
"Upper Alpha": "\u0626\u06d5\u0644\u0641\u0627\u06cc \u06af\u06d5\u0648\u0631\u06d5",
"Upper Roman": "\u0695\u06c6\u0645\u0627\u0646\u06cc \u06af\u06d5\u0648\u0631\u06d5",
"Anchor...": "\u0644\u06d5\u0646\u06af\u06d5\u0631...",
"Name": "\u0646\u0627\u0648",
"Id": "\u067e\u06ce\u0646\u0627\u0633\u06d5",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u067e\u06ce\u0646\u0627\u0633\u06d5 \u062f\u06d5\u0628\u06ce \u0628\u06d5 \u062d\u06d5\u0631\u0641\u06d5\u0648\u06d5 \u062f\u06d5\u0633\u062a \u067e\u06ce \u0628\u06a9\u0627\u060c \u0648 \u0628\u06d5 \u062d\u06d5\u0631\u0641\u060c \u0698\u0645\u0627\u0631\u06d5\u060c \u0628\u06d5\u0646\u062f\u06d5\u06a9\u060c \u062e\u0627\u06b5\u060c \u062c\u0648\u0648\u062a\u062e\u0627\u06b5 \u06cc\u0627\u0646 \u0628\u0646\u0647\u06ce\u06b5 \u062f\u0631\u06ce\u0698\u06d5\u06cc \u067e\u06ce \u0628\u062f\u0631\u06ce.",
"You have unsaved changes are you sure you want to navigate away?": "\u062a\u06c6 \u06af\u06c6\u0695\u0627\u0646\u06a9\u0627\u0631\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u062a \u067e\u0627\u0634\u06d5\u06a9\u06d5\u0648\u062a \u0646\u06d5\u06a9\u0631\u062f\u0648\u0648\u06d5\u060c \u0626\u0627\u06cc\u0627 \u062f\u06b5\u0646\u06cc\u0627\u06cc\u062a \u0644\u06d5 \u062f\u06d5\u0631\u0686\u0648\u0648\u0646\u062a\u061f",
"Restore last draft": "\u06af\u06d5\u0695\u0627\u0646\u062f\u0646\u06d5\u0648\u06d5\u06cc \u062f\u0648\u0627\u06cc\u06cc\u0646 \u0695\u06d5\u0634\u0646\u0648\u0648\u0633",
"Special character...": "\u0646\u0648\u0648\u0633\u06d5 \u062a\u0627\u06cc\u0628\u06d5\u062a\u06d5\u06a9\u0627\u0646...",
"Source code": "\u06a9\u06c6\u062f\u06cc \u0633\u06d5\u0631\u0686\u0627\u0648\u06d5",
"Insert\/Edit code sample": "\u062a\u06ce\u062e\u0633\u062a\u0646\/\u0628\u0698\u0627\u0631\u06a9\u0631\u062f\u0646\u06cc \u0646\u0645\u0648\u0648\u0646\u06d5 \u06a9\u06c6\u062f",
"Language": "\u0632\u0645\u0627\u0646",
"Code sample...": "\u0646\u0645\u0648\u0648\u0646\u06d5 \u06a9\u06c6\u062f...",
"Color Picker": "\u0647\u06d5\u06b5\u0686\u0646\u06cc \u0695\u06d5\u0646\u06af",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0686\u06d5\u067e \u0628\u06c6 \u0695\u0627\u0633\u062a",
"Right to left": "\u0695\u0627\u0633\u062a \u0628\u06c6 \u0686\u06d5\u067e",
"Emoticons...": "\u067e\u06ce\u06a9\u06d5\u0646\u06c6\u06a9...",
"Metadata and Document Properties": "\u0645\u06ce\u062a\u0627\u062f\u0631\u0627\u0648\u06d5 \u0648 \u062a\u0627\u06cc\u0628\u06d5\u062a\u0645\u06d5\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u0628\u06d5\u06b5\u06af\u06d5",
"Title": "\u0646\u0627\u0648\u0646\u06cc\u0634\u0627\u0646",
"Keywords": "\u06a9\u0644\u06cc\u0644\u0647\u200c\u0648\u0634\u0647\u200c\u06a9\u0627\u0646",
"Description": "\u0628\u0627\u0633\u06a9\u0631\u062f\u0646",
"Robots": "\u0695\u06c6\u0628\u06c6\u062a\u06d5\u06a9\u0627\u0646",
"Author": "\u0646\u0648\u0648\u0633\u06d5\u0631",
"Encoding": "\u0628\u06d5\u06a9\u06c6\u062f\u06a9\u0631\u062f\u0646",
"Fullscreen": "\u0695\u0648\u0648\u067e\u0695\u06cc",
"Action": "\u06a9\u0631\u062f\u0627\u0631",
"Shortcut": "\u0646\u0627\u0648\u0628\u0695",
"Help": "\u06cc\u0627\u0631\u0645\u06d5\u062a\u06cc",
"Address": "\u0646\u0627\u0648\u0646\u06cc\u0634\u0627\u0646",
"Focus to menubar": "\u0633\u06d5\u0631\u0646\u062c\u062f\u0627\u0646 \u0644\u06d5 \u0634\u0631\u06cc\u062a\u06cc \u0645\u06ce\u0646\u0648\u0648",
"Focus to toolbar": "\u0633\u06d5\u0631\u0646\u062c\u062f\u0627\u0646 \u0644\u06d5 \u0634\u0631\u06cc\u062a\u06cc \u0626\u0627\u0645\u06ce\u0631\u06d5\u06a9\u0627\u0646",
"Focus to element path": "\u0633\u06d5\u0631\u0646\u062c\u062f\u0627\u0646 \u0644\u06d5 \u0695\u06ce\u0686\u06a9\u06d5\u06cc \u0639\u0648\u0646\u0633\u0648\u0631",
"Focus to contextual toolbar": "\u0633\u06d5\u0631\u0646\u062c\u062f\u0627\u0646 \u0644\u06d5 \u0634\u0631\u06cc\u062a\u06cc \u0626\u0627\u0645\u06ce\u0631\u06cc \u062f\u06d5\u0642\u06cc",
"Insert link (if link plugin activated)": "\u062a\u06ce\u062e\u0633\u062a\u0646\u06cc \u0644\u06cc\u0646\u06a9 (\u0626\u06d5\u06af\u06d5\u0631 \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648 \u0686\u0627\u0644\u0627\u06a9 \u06a9\u0631\u0627\u0648\u06d5)",
"Save (if save plugin activated)": "\u067e\u0627\u0634\u06d5\u06a9\u06d5\u0648\u062a\u06a9\u0631\u062f\u0646 (\u0626\u06d5\u06af\u06d5\u0631 \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648\u06cc \u067e\u0627\u0634\u06d5\u06a9\u06d5\u0648\u062a\u06a9\u0631\u062f\u0646 \u0686\u0627\u0644\u0627\u06a9 \u06a9\u0631\u0627\u0648\u06d5)",
"Find (if searchreplace plugin activated)": "\u062f\u06c6\u0632\u06cc\u0646\u06d5\u0648\u06d5 (\u0626\u06d5\u06af\u06d5\u0631 \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648\u06cc \u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646\u06cc \u06af\u06d5\u0695\u0627\u0646 \u0686\u0627\u0644\u0627\u06a9 \u06a9\u0631\u0627\u0648\u06d5)",
"Plugins installed ({0}):": "\u0626\u06d5\u0648 \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648\u0627\u0646\u06d5\u06cc \u062f\u0627\u0645\u06d5\u0632\u0631\u0627\u0648\u0646 ({0}):",
"Premium plugins:": "\u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648\u06d5 \u067e\u0627\u0631\u06d5\u06cc\u06cc\u06cc\u06d5\u06a9\u0627\u0646:",
"Learn more...": "\u0632\u06cc\u0627\u062a\u0631 \u0628\u0632\u0627\u0646\u06d5...",
"You are using {0}": "\u062a\u06c6  {0} \u0628\u06d5\u06a9\u0627\u0631 \u062f\u06ce\u0646\u06cc",
"Plugins": "\u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648\u06d5\u06a9\u0627\u0646",
"Handy Shortcuts": "\u0646\u0627\u0648\u0628\u0695\u06d5 \u062f\u06d5\u0633\u062a\u06cc\u06cc\u06d5\u06a9\u0627\u0646",
"Horizontal line": "\u0647\u06ce\u06b5\u06cc \u0626\u0627\u0633\u06c6\u06cc\u06cc",
"Insert\/edit image": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc \u0648\u06ce\u0646\u06d5",
"Image description": "\u0628\u0627\u0633\u06a9\u0631\u062f\u0646\u06cc \u0648\u06ce\u0646\u06d5",
"Source": "\u0633\u06d5\u0631\u0686\u0627\u0648\u06d5",
"Dimensions": "\u062f\u0648\u0648\u0631\u06cc\u06cc\u06d5\u06a9\u0627\u0646",
"Constrain proportions": "\u0695\u06d5\u0647\u06d5\u0646\u062f\u06cc \u0645\u06d5\u0631\u062c\u06d5\u06a9\u0627\u0646",
"General": "\u06af\u0634\u062a\u06cc",
"Advanced": "\u067e\u06ce\u0634\u06a9\u06d5\u0648\u062a\u0648\u0648",
"Style": "\u0634\u06ce\u0648\u0627\u0632",
"Vertical space": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u0633\u062a\u0648\u0648\u0646\u06cc",
"Horizontal space": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u0626\u0627\u0633\u06c6\u06cc\u06cc",
"Border": "\u0633\u0646\u0648\u0648\u0631",
"Insert image": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0648\u06ce\u0646\u06d5",
"Image...": "\u0648\u06ce\u0646\u06d5...",
"Image list": "\u067e\u06ce\u0631\u0633\u062a\u06cc \u0648\u06ce\u0646\u06d5",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Color levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0695\u06c6\u0698\/\u06a9\u0627\u062a",
"Date\/time": "\u0695\u06ce\u06a9\u06d5\u0648\u062a\/\u06a9\u0627\u062a",
"Insert\/Edit Link": "\u062a\u06ce\u062e\u0633\u062a\u0646\/\u0628\u0698\u0627\u0631\u06a9\u0631\u062f\u0646\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Insert\/edit link": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Text to display": "\u062f\u06d5\u0642 \u0628\u06c6 \u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646",
"Url": "\u0628\u06d5\u0633\u062a\u06d5\u0631",
"Open link in...": "\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631 \u0644\u06d5...",
"Current window": "\u0647\u06d5\u0631\u0626\u06d5\u0645 \u067e\u06d5\u0646\u062c\u06d5\u0631\u06d5\u06cc\u06d5",
"None": "\u0647\u06cc\u0686",
"New window": "\u067e\u06d5\u0646\u062c\u06d5\u0631\u06d5\u06cc \u0646\u0648\u06ce",
"Remove link": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Anchors": "\u0644\u06d5\u0646\u06af\u06d5\u0631\u06d5\u06a9\u0627\u0646",
"Link...": "\u0628\u06d5\u0633\u062a\u06d5\u0631...",
"Paste or type a link": "\u0644\u06a9\u0627\u0646\u062f\u0646 \u06cc\u0627\u0646 \u0646\u0648\u0648\u0633\u06cc\u0646\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0626\u06d5\u0648 \u0628\u06d5\u0633\u062a\u06d5\u0631\u06d5\u06cc \u0646\u0648\u0648\u0633\u06cc\u0648\u062a\u06d5 \u0628\u06d5 \u067e\u06d5\u06cc\u0627\u0645\u06cc \u0626\u06d5\u0644\u06cc\u06a9\u062a\u0695\u06c6\u0646\u06cc \u062f\u06d5\u0686\u06ce\u062a. \u0626\u0627\u06cc\u0627 \u062f\u06d5\u062a\u06d5\u0648\u06ce\u062a mailto: prefix \u06cc \u0628\u06c6 \u0632\u06cc\u0627\u062f \u0628\u06a9\u06d5\u06cc\u062a\u061f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0626\u06d5\u0648 \u0628\u06d5\u0633\u062a\u06d5\u0631\u06d5\u06cc \u0646\u0648\u0648\u0633\u06cc\u0648\u062a\u06d5 \u0628\u06d5 \u0628\u06d5\u0633\u062a\u06d5\u0631\u06cc \u062f\u06d5\u0631\u06d5\u06a9\u06cc \u062f\u06d5\u0686\u06ce\u062a. \u0626\u0627\u06cc\u0627 \u062f\u06d5\u062a\u06d5\u0648\u06ce\u062a http:\/\/ prefix \u06cc \u0628\u06c6 \u0632\u06cc\u0627\u062f \u0628\u06a9\u06d5\u06cc\u062a\u061f",
"Link list": "\u067e\u06ce\u0633\u0631\u062a\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Insert video": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u06a4\u06cc\u062f\u06cc\u06c6",
"Insert\/edit video": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc \u06a4\u06cc\u062f\u06cc\u06c6",
"Insert\/edit media": "\u062a\u06ce\u062e\u0633\u062a\u0646\/\u0628\u0698\u0627\u0631\u06a9\u0631\u062f\u0646\u06cc \u06af\u06d5\u06cc\u0627\u0646\u06d5",
"Alternative source": "\u0633\u06d5\u0631\u0686\u0627\u0648\u06d5\u06cc \u062c\u06ce\u06af\u0631\u06d5\u0648\u06d5",
"Alternative source URL": "\u0628\u06d5\u0633\u062a\u06d5\u0631\u06cc \u0633\u06d5\u0631\u0686\u0627\u0648\u06d5\u06cc \u062c\u06ce\u06af\u0631\u06d5\u0648\u06d5",
"Media poster (Image URL)": "\u067e\u06c6\u0633\u062a\u06d5\u0631\u06cc \u06af\u06d5\u06cc\u0627\u0646\u06d5 (\u0628\u06d5\u0633\u062a\u06d5\u0631\u06cc \u0648\u06ce\u0646\u06d5)",
"Paste your embed code below:": "\u06a9\u06c6\u062f\u06cc \u062a\u06ce\u062e\u0633\u062a\u0646\u06d5\u06a9\u06d5\u062a \u0644\u06d5\u062e\u0648\u0627\u0631\u06d5\u0648\u06d5 \u0628\u0644\u06a9\u06ce\u0646\u06d5:",
"Embed": "\u062a\u06ce\u062e\u0633\u062a\u0646",
"Media...": "\u06af\u06d5\u06cc\u0627\u0646\u06d5...",
"Nonbreaking space": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u0646\u06d5\u0628\u0695\u0627\u0648",
"Page break": "\u0628\u0695\u06cc\u0646\u06cc \u067e\u06d5\u0695\u06d5",
"Paste as text": "\u0644\u06a9\u0627\u0646\u062f\u0646 \u0648\u06d5\u06a9 \u062f\u06d5\u0642",
"Preview": "\u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646",
"Print...": "\u0686\u0627\u067e\u06a9\u0631\u062f\u0646...",
"Save": "\u067e\u0627\u0634\u06d5\u06a9\u06d5\u0648\u062a",
"Find": "\u062f\u06c6\u0632\u06cc\u0646\u06d5\u0648\u06d5",
"Replace with": "\u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646 \u0644\u06d5\u06af\u06d5\u06b5",
"Replace": "\u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646",
"Replace all": "\u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646\u06cc \u0647\u06d5\u0645\u0648\u0648",
"Previous": "\u067e\u06ce\u0634\u0648\u0648",
"Next": "\u062f\u0648\u0627\u062a\u0631",
"Find and replace...": "\u062f\u06c6\u0632\u06cc\u0646 \u0648 \u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646...",
"Could not find the specified string.": "\u0695\u06cc\u0632\u0628\u06d5\u0646\u062f\u06cc \u062f\u06cc\u0627\u0631\u06cc\u06a9\u0631\u0627\u0648 \u0646\u0627\u062f\u06c6\u0632\u0631\u06ce\u062a\u06d5\u0648\u06d5.",
"Match case": "\u0647\u0627\u0648\u062a\u0627\u0628\u0648\u0648\u0646\u06cc \u0628\u0627\u0631",
"Find whole words only": "\u062f\u06c6\u0632\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u062a\u06d5\u0646\u06cc\u0627 \u062a\u06d5\u0648\u0627\u0648\u06cc \u0648\u0634\u06d5\u06a9\u0627\u0646",
"Spell check": "\u062a\u0627\u0648\u062a\u0648\u06ce\u06cc \u0695\u06ce\u0646\u0648\u0648\u0633",
"Ignore": "\u0644\u06d5\u0628\u06cc\u0631\u06a9\u0631\u062f\u0646",
"Ignore all": "\u0644\u06d5\u0628\u06cc\u0631\u06a9\u0631\u062f\u0646\u06cc \u0647\u06d5\u0645\u0648\u0648",
"Finish": "\u062a\u06d5\u0648\u0627\u0648",
"Add to Dictionary": "\u0632\u06cc\u0627\u062f\u06a9\u0631\u062f\u0646 \u0628\u06c6 \u0641\u06d5\u0631\u0647\u06d5\u0646\u06af",
"Insert table": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u062e\u0634\u062a\u06d5",
"Table properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u062e\u0634\u062a\u06d5",
"Delete table": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u062e\u0634\u062a\u06d5",
"Cell": "\u062e\u0627\u0646\u06d5",
"Row": "\u0695\u06cc\u0632",
"Column": "\u0633\u062a\u0648\u0648\u0646",
"Cell properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u062e\u0627\u0646\u06d5",
"Merge cells": "\u06cc\u06d5\u06a9\u062e\u0633\u062a\u0646\u06cc \u062e\u0627\u0646\u06d5\u06a9\u0627\u0646",
"Split cell": "\u062c\u06cc\u0627\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u062e\u0627\u0646\u06d5",
"Insert row before": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0695\u06cc\u0632 \u0628\u06c6 \u067e\u06ce\u0634\u062a\u0631",
"Insert row after": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0695\u06cc\u0632 \u0628\u06c6 \u062f\u0648\u0627\u062a\u0631",
"Delete row": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u0695\u06cc\u0632",
"Row properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u0695\u06cc\u0632",
"Cut row": "\u0628\u0695\u06cc\u0646\u06cc \u0695\u06cc\u0632",
"Copy row": "\u0644\u06d5\u0628\u06d5\u0631\u06af\u0631\u062a\u0646\u06d5\u0648\u06d5\u06cc \u0695\u06cc\u0632",
"Paste row before": "\u0644\u06a9\u0627\u0646\u062f\u0646\u06cc \u0695\u06cc\u0632 \u0644\u06d5 \u067e\u06ce\u0634\u062a\u0631",
"Paste row after": "\u0644\u06a9\u0627\u0646\u062f\u0646\u06cc \u0695\u06cc\u0632 \u0644\u06d5 \u062f\u0648\u0627\u062a\u0631",
"Insert column before": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0633\u062a\u0648\u0648\u0646 \u0628\u06c6 \u067e\u06ce\u0634\u062a\u0631",
"Insert column after": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0633\u062a\u0648\u0648\u0646 \u0628\u06c6 \u062f\u0648\u0627\u062a\u0631",
"Delete column": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u0633\u062a\u0648\u0648\u0646",
"Cols": "\u0633\u062a\u0648\u0648\u0646\u06d5\u06a9\u0627\u0646",
"Rows": "\u0695\u06cc\u0632\u06d5\u06a9\u0627\u0646",
"Width": "\u062f\u0631\u06ce\u0698\u06cc",
"Height": "\u0628\u06d5\u0631\u0632\u06cc",
"Cell spacing": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u062e\u0627\u0646\u06d5",
"Cell padding": "\u0646\u0627\u0648\u067e\u06c6\u0634\u06cc \u062e\u0627\u0646\u06d5",
"Show caption": "\u0646\u06cc\u0634\u0627\u0646\u062f\u0627\u0646\u06cc \u0633\u06d5\u0631\u062f\u06ce\u0695",
"Left": "\u0686\u06d5\u067e",
"Center": "\u0646\u0627\u0648\u06d5\u0695\u0627\u0633\u062a",
"Right": "\u0695\u0627\u0633\u062a",
"Cell type": "\u062c\u06c6\u0631\u06cc \u062e\u0627\u0646\u06d5",
"Scope": "\u0628\u0648\u0627\u0631",
"Alignment": "\u0644\u0627\u06af\u0631\u062a\u0646",
"H Align": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0626\u0627\u0633\u06c6\u06cc\u06cc",
"V Align": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0633\u062a\u0648\u0648\u0646\u06cc",
"Top": "\u0633\u06d5\u0631\u06d5\u0648\u06d5",
"Middle": "\u0646\u0627\u0648\u06d5\u0646\u062f",
"Bottom": "\u0698\u06ce\u0631\u06d5\u0648\u06d5",
"Header cell": "\u062e\u0627\u0646\u06d5\u06cc \u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5",
"Row group": "\u06a9\u06c6\u0645\u06d5\u06b5\u06d5 \u0695\u06cc\u0632",
"Column group": "\u06a9\u06c6\u0645\u06d5\u06b5\u06d5 \u0633\u062a\u0648\u0648\u0646",
"Row type": "\u062c\u06c6\u0631\u06cc \u0695\u06cc\u0632",
"Header": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5",
"Body": "\u0646\u0627\u0648\u06d5\u0695\u06c6\u06a9",
"Footer": "\u067e\u06ce\u067e\u06d5\u0695\u06d5",
"Border color": "\u0695\u06d5\u0646\u06af\u06cc \u0633\u0646\u0648\u0648\u0631",
"Insert template...": "\u062a\u06ce\u062e\u0633\u062a\u0646\u06cc \u0642\u0627\u06b5\u0628...",
"Templates": "\u062f\u0627\u0695\u06ce\u0698\u06d5\u06a9\u0627\u0646",
"Template": "\u0642\u0627\u06b5\u0628",
"Text color": "\u0695\u06d5\u0646\u06af\u06cc \u062f\u06d5\u0642",
"Background color": "\u0695\u06d5\u0646\u06af\u06cc \u067e\u0627\u0634\u0628\u0646\u06d5\u0645\u0627",
"Custom...": "\u062f\u0627\u0646\u0631\u0627\u0648...",
"Custom color": "\u0695\u06d5\u0646\u06af\u06cc \u062f\u0627\u0646\u0631\u0627\u0648",
"No color": "\u0628\u06d5\u0628\u06ce \u0695\u06d5\u0646\u06af",
"Remove color": "\u0644\u0627\u0628\u0631\u062f\u0646\u06cc \u0695\u06d5\u0646\u06af",
"Table of Contents": "\u062c\u06d5\u062f\u0648\u06d5\u0644\u06cc \u0646\u0627\u0648\u06d5\u0631\u06c6\u06a9",
"Show blocks": "\u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646\u06cc \u0628\u0644\u06c6\u06a9\u06d5\u06a9\u0627\u0646",
"Show invisible characters": "\u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646\u06cc \u0646\u0648\u0648\u0633\u06d5 \u0634\u0627\u0631\u0627\u0648\u06d5\u06a9\u0627\u0646",
"Word count": "\u0698\u0645\u0627\u0631\u06d5\u06cc \u0648\u0634\u06d5\u06a9\u0627\u0646",
"Count": "\u0698\u0645\u0627\u0631\u06d5",
"Document": "\u0628\u06d5\u06b5\u06af\u06d5",
"Selection": "\u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u0646",
"Words": "\u0648\u0634\u06d5\u06a9\u0627\u0646",
"Words: {0}": "\u0648\u0634\u06d5\u06a9\u0627\u0646: {0}",
"{0} words": "{0} \u0648\u0634\u06d5",
"File": "\u067e\u06d5\u0695\u06af\u06d5",
"Edit": "\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc",
"Insert": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648",
"View": "\u0628\u06cc\u0646\u06cc\u0646",
"Format": "\u0634\u06ce\u0648\u0627\u0632",
"Table": "\u062e\u0634\u062a\u06d5",
"Tools": "\u0626\u0627\u0645\u0631\u0627\u0632\u06d5\u06a9\u0627\u0646",
"Powered by {0}": "\u0647\u06ce\u0632\u06af\u0631\u062a\u0648\u0648 \u0644\u06d5 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0646\u0627\u0648\u0686\u06d5\u06cc \u062f\u06d5\u0642\u06cc \u062a\u06d5\u0648\u0627\u0648. ALT-F9 \u062f\u0627\u06af\u0631\u06d5 \u0628\u06c6 \u0644\u06cc\u0633\u062a\u06d5. ALT-F10 \u062f\u0627\u06af\u0631\u06d5 \u0628\u06c6 \u062a\u0648\u0648\u06b5\u0627\u0645\u0631\u0627\u0632. ALT-0 \u062f\u0627\u06af\u0631\u06d5 \u0628\u06c6 \u06cc\u0627\u0631\u0645\u06d5\u062a\u06cc",
"Image title": "\u0633\u06d5\u0631\u062f\u06ce\u0631\u06cc \u0648\u06ce\u0646\u06d5",
"Border width": "\u067e\u0627\u0646\u06cc\u06cc \u0644\u06ce\u0648\u0627\u0631",
"Border style": "\u0634\u06ce\u0648\u0627\u0632\u06cc \u0644\u06ce\u0648\u0627\u0631",
"Error": "\u0647\u06d5\u06b5\u06d5",
"Warn": "\u0647\u06c6\u0634\u06cc\u0627\u0631\u06cc",
"Valid": "\u062f\u0631\u0648\u0633\u062a",
"To open the popup, press Shift+Enter": "\u0628\u06c6 \u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u067e\u06d5\u0646\u062c\u06d5\u0631\u06d5\u06cc \u0633\u06d5\u0631\u067e\u06d5\u0695\u060c Shift+Enter \u0644\u06ce\u062f\u06d5",
"Rich Text Area. Press ALT-0 for help.": "\u062f\u06d5\u06a4\u06d5\u0631\u06cc \u062f\u06d5\u0642\u06cc \u062f\u06d5\u0648\u06b5\u06d5\u0645\u06d5\u0646\u062f. \u0628\u06c6 \u0695\u06ce\u0646\u0645\u0627\u06cc\u06cc ALT-0 \u0644\u06ce\u062f\u06d5.",
"System Font": "\u0641\u06c6\u0646\u062a\u06cc \u0633\u06cc\u0633\u062a\u0645",
"Failed to upload image: {0}": "\u0628\u0627\u0631\u06a9\u0631\u062f\u0646\u06cc \u0648\u06ce\u0646\u06d5 \u0634\u06a9\u0633\u062a\u06cc \u0647\u06ce\u0646\u0627: {0}",
"Failed to load plugin: {0} from url {1}": "\u0628\u0627\u0631\u06af\u0631\u062a\u0646\u06cc \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648 \u0634\u06a9\u0633\u062a\u06cc \u0647\u06ce\u0646\u0627: {0}",
"Failed to load plugin url: {0}": "\u0628\u0627\u0631\u06af\u0631\u062a\u0646\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631\u06cc \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648 \u0634\u06a9\u0633\u062a\u06cc \u0647\u06ce\u0646\u0627: {0}",
"Failed to initialize plugin: {0}": "\u0695\u06ce\u062e\u0633\u062a\u0646\u06cc \u0633\u06d5\u0631\u06d5\u062a\u0627\u06cc\u06cc \u067e\u06ce\u0648\u06d5\u06a9\u0631\u0627\u0648 \u0634\u06a9\u0633\u062a\u06cc \u0647\u06ce\u0646\u0627: {0}",
"example": "\u0646\u0645\u0648\u0648\u0646\u06d5",
"Search": "\u06af\u06d5\u0695\u0627\u0646",
"All": "\u0647\u06d5\u0645\u0648\u0648",
"Currency": "\u062f\u0631\u0627\u0648",
"Text": "\u062f\u06d5\u0642",
"Quotations": "\u0648\u062a\u06d5\u06cc \u06af\u06ce\u0695\u0627\u0648\u06d5",
"Mathematical": "\u0628\u06cc\u0631\u06a9\u0627\u0631\u06cc\u0627\u0646\u06d5",
"Extended Latin": "\u0644\u0627\u062a\u06cc\u0646\u06cc \u067e\u06d5\u0631\u06d5\u067e\u06ce\u062f\u0631\u0627\u0648",
"Symbols": "\u0646\u06cc\u0634\u0627\u0646\u06d5\u06a9\u0627\u0646",
"Arrows": "\u062a\u06cc\u0631\u0646\u06cc\u0634\u0627\u0646\u06d5\u06a9\u0627\u0646",
"User Defined": "\u062f\u06cc\u0627\u0631\u06cc\u06a9\u0631\u0627\u0648\u06cc \u0628\u06d5\u06a9\u0627\u0631\u0647\u06ce\u0646\u06d5\u0631",
"dollar sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062f\u06c6\u0644\u0627\u0631",
"currency sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062f\u0631\u0627\u0648",
"euro-currency sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062f\u0631\u0627\u0648\u06cc \u06cc\u06c6\u0631\u06c6",
"colon sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062c\u0648\u0648\u062a\u062e\u0627\u06b5",
"cruzeiro sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u06a9\u0631\u0648\u0648\u0632\u06cc\u0631\u06c6",
"french franc sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0641\u0631\u0627\u0646\u06a9\u06cc \u0641\u06d5\u0695\u06d5\u0646\u0633\u0627",
"lira sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0644\u06cc\u0631\u06d5",
"mill sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0645\u06cc\u0644",
"naira sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0646\u0627\u06cc\u0631\u0627",
"peseta sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u067e\u06ce\u0633\u06ce\u062a\u0627",
"rupee sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0695\u0648\u0648\u067e\u06cc\u06d5",
"won sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0648\u06c6\u0646",
"new sheqel sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0646\u0648\u06ce\u06cc \u0634\u06ce\u06a9\u06ce\u0644",
"dong sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062f\u06c6\u0646\u06af",
"kip sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u06a9\u06cc\u067e",
"tugrik sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062a\u0648\u06af\u0631\u0648\u06af",
"drachma sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062f\u0631\u0627\u062e\u0645\u0627",
"german penny symbol": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u067e\u06ce\u0646\u06cc\u06cc \u0626\u06d5\u06b5\u0645\u0627\u0646\u06cc",
"peso sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u067e\u06ce\u0633\u06c6",
"guarani sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u06af\u0648\u0627\u0631\u0627\u0646\u06cc",
"austral sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0626\u0627\u0648\u0633\u062a\u0631\u0627\u0644",
"hryvnia sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u06af\u0631\u06cc\u06a4\u0646\u06cc\u0627",
"cedi sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0633\u06ce\u062f\u06cc",
"livre tournois sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0644\u06cc\u06a4\u0631\u06ce \u062a\u0648\u0631\u0646\u06c6\u06cc\u0633",
"spesmilo sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0633\u067e\u06ce\u0633\u0645\u0627\u06cc\u06b5\u06c6",
"tenge sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u062a\u06ce\u0646\u062c",
"indian rupee sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0695\u0648\u0648\u067e\u06cc\u06d5\u06cc \u0647\u0646\u062f\u06cc",
"turkish lira sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0644\u06cc\u0631\u06d5\u06cc \u062a\u0648\u0631\u06a9",
"nordic mark sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0645\u0627\u0631\u06a9\u06cc \u0646\u06c6\u0631\u0648\u06cc\u0698",
"manat sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0645\u06d5\u0646\u0627\u062a",
"ruble sign": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u0695\u0648\u0648\u0628\u06b5",
"yen character": "\u0646\u0648\u0648\u0633\u06d5\u06cc \u06cc\u06ce\u0646",
"yuan character": "\u0646\u0648\u0648\u0633\u06d5\u06cc \u06cc\u0648\u0627\u0646",
"yuan character, in hong kong and taiwan": "\u0646\u06cc\u0634\u0627\u0646\u06cc \u06cc\u0648\u0627\u0646\u060c \u0644\u06d5 \u0647\u06c6\u0646\u06af \u06a9\u06c6\u0646\u06af \u0648 \u062a\u0627\u06cc\u0648\u0627\u0646",
"yen\/yuan character variant one": "\u0646\u0648\u0648\u0633\u06d5\u06cc \u062c\u06ce\u06af\u0631\u06cc \u06cc\u06ce\u0646\/\u06cc\u0648\u0627\u0646",
"Loading emoticons...": "\u062e\u06d5\u0631\u06cc\u06a9\u06cc \u0628\u0627\u0631\u06af\u0631\u062a\u0646\u06cc \u067e\u06ce\u06a9\u06d5\u0646\u06c6\u06a9\u06d5\u06a9\u0627\u0646...",
"Could not load emoticons": "\u0646\u0627\u062a\u0648\u0627\u0646\u0631\u06ce \u067e\u06ce\u06a9\u06d5\u0646\u06c6\u06a9\u06d5\u06a9\u0627\u0646 \u0628\u0627\u0631 \u0628\u06af\u06cc\u0631\u06ce",
"People": "\u062e\u06d5\u06b5\u06a9",
"Animals and Nature": "\u0626\u0627\u0698\u06d5\u06b5 \u0648 \u0633\u0631\u0648\u0634\u062a",
"Food and Drink": "\u0686\u06ce\u0634\u062a \u0648 \u062e\u0648\u0627\u0631\u062f\u0646",
"Activity": "\u0686\u0627\u0644\u0627\u06a9\u06cc",
"Travel and Places": "\u0633\u06d5\u0641\u06d5\u0631 \u0648 \u0634\u0648\u06ce\u0646\u06d5\u06a9\u0627\u0646",
"Objects": "\u0634\u062a\u06d5\u06a9\u0627\u0646",
"Flags": "\u0626\u0627\u06b5\u0627\u06a9\u0627\u0646",
"Characters": "\u0646\u0648\u0648\u0633\u06d5\u06a9\u0627\u0646",
"Characters (no spaces)": "\u0646\u0648\u0648\u0633\u06d5\u06a9\u0627\u0646 (\u0628\u06d5\u0628\u06ce \u0628\u06c6\u0634\u0627\u06cc\u06cc)",
"{0} characters": "{0} \u0646\u0648\u0648\u0633\u06d5",
"Error: Form submit field collision.": "\u0647\u06d5\u06b5\u06d5: \u062a\u06ce\u06a9\u0686\u0648\u0648\u0646\u06cc \u0646\u0627\u0631\u062f\u0646\u06cc \u0641\u06c6\u0631\u0645.",
"Error: No form element found.": "\u0647\u06d5\u06b5\u06d5: \u0647\u06cc\u0686 \u0639\u0648\u0646\u0633\u0648\u0631\u06ce\u06a9\u06cc \u0641\u06c6\u0631\u0645 \u0646\u06d5\u062f\u06c6\u0632\u0631\u0627\u06cc\u06d5\u0648\u06d5.",
"Update": "\u0695\u06c6\u0698\u0627\u0646\u06d5\u06a9\u0631\u062f\u0646",
"Color swatch": "\u0646\u0645\u0648\u0648\u0646\u06d5 \u0695\u06d5\u0646\u06af",
"Turquoise": "\u067e\u06cc\u0631\u06c6\u0632\u06d5\u06cc\u06cc",
"Green": "\u0633\u06d5\u0648\u0632",
"Blue": "\u06a9\u06d5\u0648\u06d5",
"Purple": "\u0645\u06c6\u0631",
"Navy Blue": "\u0633\u0648\u0631\u0645\u06d5\u06cc\u06cc",
"Dark Turquoise": "\u067e\u06cc\u0631\u06c6\u0632\u06d5\u06cc\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Dark Green": "\u0633\u06d5\u0648\u0632\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Medium Blue": "\u06a9\u06d5\u0648\u06d5\u06cc \u0645\u0627\u0645\u0646\u0627\u0648\u06d5\u0646\u062f",
"Medium Purple": "\u0645\u06c6\u0631\u06cc \u0645\u0627\u0645\u0646\u0627\u0648\u06d5\u0646\u062f",
"Midnight Blue": "\u06a9\u06d5\u0648\u06d5\u06cc \u0646\u06cc\u0648\u06d5\u0634\u06d5\u0648",
"Yellow": "\u0632\u06d5\u0631\u062f",
"Orange": "\u067e\u0631\u062a\u06d5\u0642\u0627\u06b5\u06cc",
"Red": "\u0633\u0648\u0648\u0631",
"Light Gray": "\u0628\u06c6\u0631\u06cc \u06a9\u0627\u06b5",
"Gray": "\u0628\u06c6\u0631",
"Dark Yellow": "\u0632\u06d5\u0631\u062f\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Dark Orange": "\u067e\u0631\u062a\u06d5\u0642\u0627\u06b5\u06cc\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Dark Red": "\u0633\u0648\u0648\u0631\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Medium Gray": "\u0628\u06c6\u0631\u06cc \u0645\u0627\u0645\u0646\u0627\u0648\u06d5\u0646\u062f",
"Dark Gray": "\u0628\u06c6\u0631\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Light Green": "\u0633\u06d5\u0648\u0632\u06cc \u06a9\u0627\u06b5",
"Light Yellow": "\u0632\u06d5\u0631\u062f\u06cc \u06a9\u0627\u06b5",
"Light Red": "\u0633\u0648\u0648\u0631\u06cc \u06a9\u0627\u06b5",
"Light Purple": "\u0645\u06c6\u0631\u06cc \u06a9\u0627\u06b5",
"Light Blue": "\u06a9\u06d5\u0648\u06d5\u06cc \u06a9\u0627\u06b5",
"Dark Purple": "\u0645\u06c6\u0631\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Dark Blue": "\u06a9\u06d5\u0648\u06d5\u06cc \u062a\u0627\u0631\u06cc\u06a9",
"Black": "\u0695\u06d5\u0634",
"White": "\u0633\u067e\u06cc",
"Switch to or from fullscreen mode": "\u06af\u06c6\u0695\u06cc\u0646 \u0644\u06d5 \u06cc\u0627\u0646 \u0628\u06c6 \u062d\u0627\u06b5\u06d5\u062a\u06cc \u067e\u0695\u062f\u06cc\u0645\u06d5\u0646",
"Open help dialog": "\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u0648\u062a\u0648\u0648\u06ce\u0698\u06cc \u06cc\u0627\u0631\u0645\u06d5\u062a\u06cc",
"history": "\u0645\u06ce\u0698\u0648\u0648",
"styles": "\u0634\u06ce\u0648\u06d5\u06a9\u0627\u0646",
"formatting": "\u0634\u06ce\u0648\u06d5\u067e\u06ce\u062f\u0627\u0646",
"alignment": "\u0644\u0627\u06af\u0631\u062a\u0646",
"indentation": "\u0646\u0627\u0648\u0648\u06d5\u0686\u0648\u0648\u0646",
"permanent pen": "\u067e\u06ce\u0646\u0648\u0648\u0633\u06cc \u0647\u06d5\u0645\u06cc\u0634\u06d5\u06cc\u06cc",
"comments": "\u0628\u06c6\u0686\u0648\u0648\u0646\u06d5\u06a9\u0627\u0646",
"Format Painter": "\u0646\u06cc\u06af\u0627\u0631\u06a9\u06ce\u0634\u06cc \u0634\u06ce\u0648\u0627\u0632",
"Insert\/edit iframe": "\u062a\u06ce\u062e\u0633\u062a\u0646\/\u0628\u0698\u0627\u0631\u06a9\u0631\u062f\u0646\u06cc \u0626\u0627\u06cc\u0641\u0631\u06d5\u06cc\u0645",
"Capitalization": "\u062d\u06d5\u0631\u0641\u06d5 \u06af\u06d5\u0648\u0631\u06d5\u06a9\u0627\u0646",
"lowercase": "\u062d\u06d5\u0631\u0641\u06cc \u0628\u0686\u0648\u0648\u06a9",
"UPPERCASE": "\u062d\u06d5\u0631\u0641\u06cc \u06af\u06d5\u0648\u0631\u06d5",
"Title Case": "\u062d\u06d5\u0631\u0641\u06d5 \u0633\u06d5\u0631\u062f\u06ce\u0631\u06cc\u06cc\u06d5\u06a9\u0627\u0646",
"Permanent Pen Properties": "\u062a\u0627\u06cc\u0628\u06d5\u062a\u0645\u06d5\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u067e\u06ce\u0646\u0648\u0648\u0633\u06cc \u0647\u06d5\u0645\u06cc\u0634\u06d5\u06cc\u06cc",
"Permanent pen properties...": "\u062a\u0627\u06cc\u0628\u06d5\u062a\u0645\u06d5\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u067e\u06ce\u0646\u0648\u0648\u0633\u06cc \u0647\u06d5\u0645\u06cc\u0634\u06d5\u06cc\u06cc...",
"Font": "\u0641\u06c6\u0646\u062a",
"Size": "\u0626\u06d5\u0646\u062f\u0627\u0632\u06d5",
"More...": "\u0632\u06cc\u0627\u062a\u0631...",
"Spellcheck Language": "\u0632\u0645\u0627\u0646\u06cc \u062a\u0627\u0648\u062a\u0648\u06ce\u06cc \u0695\u06ce\u0646\u0648\u0648\u0633",
"Select...": "\u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u0646...",
"Preferences": "\u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u06d5\u06a9\u0627\u0646",
"Yes": "\u0626\u06d5\u0631\u06ce",
"No": "\u0646\u06d5\u062e\u06ce\u0631",
"Keyboard Navigation": "\u0695\u06ce\u067e\u06ce\u0648\u0627\u0646 \u0628\u06d5 \u062a\u06d5\u062e\u062a\u06d5\u06a9\u0644\u06cc\u0644",
"Version": "\u0648\u06d5\u0634\u0627\u0646",
"Anchor": "\u0644\u06d5\u0646\u06af\u06d5\u0631",
"Special character": "\u0646\u0648\u0648\u0633\u06d5\u06cc \u062a\u0627\u06cc\u0628\u06d5\u062a",
"Color": "\u0695\u06d5\u0646\u06af",
"Emoticons": "\u0648\u06ce\u0646\u06c6\u0686\u06a9\u06d5\u06a9\u0627\u0646\u06cc \u0647\u06d5\u0633\u062a",
"Document properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u0628\u06d5\u06b5\u06af\u06d5\u0646\u0627\u0645\u06d5",
"Insert link": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Target": "\u0626\u0627\u0645\u0627\u0646\u062c",
"Poster": "\u067e\u06c6\u0633\u062a\u06d5\u0631",
"Print": "\u0686\u0627\u067e\u06a9\u0631\u062f\u0646",
"Whole words": "\u0647\u06d5\u0645\u0648\u0648 \u0648\u0634\u06d5\u06a9\u0627\u0646",
"Find and replace": "\u062f\u06c6\u0632\u06cc\u0646\u06d5\u0648\u06d5 \u0648 \u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646",
"Prev": "\u067e\u06ce\u0634\u0648\u0648",
"Spellcheck": "\u067e\u0634\u06a9\u0646\u06cc\u0646\u06cc \u0695\u06ce\u0646\u0648\u0648\u0633",
"Caption": "\u0633\u06d5\u0631\u062f\u06ce\u0695",
"Insert template": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u062f\u0627\u0695\u06ce\u0698\u06d5"
});js/tinymce/langs/es_MX.js000064400000036745151727150340011331 0ustar00tinymce.addI18n('es_MX',{
"Redo": "Rehacer",
"Undo": "Deshacer",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Pegar",
"Select all": "Seleccionar todo",
"New document": "Nuevo documento",
"Ok": "Aceptar",
"Cancel": "Cancelar",
"Visual aids": "Ayudas visuales",
"Bold": "Negrita",
"Italic": "Cursiva",
"Underline": "Subrayado",
"Strikethrough": "Tachado",
"Superscript": "Super\u00edndice",
"Subscript": "Sub\u00edndice",
"Clear formatting": "Borrar formato",
"Align left": "Alinear a la izquierda",
"Align center": "Alinear al centro",
"Align right": "Alinear a la derecha",
"Justify": "Justificar",
"Bullet list": "Lista de vi\u00f1etas",
"Numbered list": "Lista numerada",
"Decrease indent": "Reducir sangr\u00eda",
"Increase indent": "Aumentar sangr\u00eda",
"Close": "Cerrar",
"Formats": "Formatos",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Su navegador no admite el acceso directo al portapapeles. Utilice los m\u00e9todos abreviados de teclado Ctrl+ X\/C\/V.",
"Headers": "Encabezados",
"Header 1": "Encabezado 1",
"Header 2": "Encabezado 2",
"Header 3": "Encabezado 3",
"Header 4": "Encabezado 4",
"Header 5": "Encabezado 5",
"Header 6": "Encabezado 6",
"Headings": "T\u00edtulos",
"Heading 1": "T\u00edtulo 1",
"Heading 2": "T\u00edtulo 2",
"Heading 3": "T\u00edtulo 3",
"Heading 4": "T\u00edtulo 4",
"Heading 5": "T\u00edtulo 5",
"Heading 6": "T\u00edtulo 6",
"Preformatted": "Con formato previo",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f3digo",
"Paragraph": "P\u00e1rrafo",
"Blockquote": "Blockquote",
"Inline": "En l\u00ednea",
"Blocks": "Bloques",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Se pegar\u00e1 en texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.",
"Fonts": "Fuentes",
"Font Sizes": "Tama\u00f1os de fuente",
"Class": "Clase",
"Browse for an image": "Buscar una imagen",
"OR": "O",
"Drop an image here": "Soltar una imagen aqu\u00ed",
"Upload": "Cargar",
"Block": "Bloque",
"Align": "Alinear",
"Default": "Por defecto",
"Circle": "Circulo",
"Disc": "Disco",
"Square": "Cuadro",
"Lower Alpha": "Alfa min\u00fascula",
"Lower Greek": "Griega min\u00fascula",
"Lower Roman": "Romano min\u00fascula",
"Upper Alpha": "Alfa may\u00fascula",
"Upper Roman": "May\u00fascula Romana",
"Anchor...": "Marcador...",
"Name": "Nombre",
"Id": "Identificador",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "El Identificador debe comenzar con una letra, seguido solo por letras, n\u00fameros, puntos, guiones medios o guiones bajos.  ",
"You have unsaved changes are you sure you want to navigate away?": "No se  han guardado los cambios. \u00bfSeguro que desea abandonar la p\u00e1gina?",
"Restore last draft": "Restaurar el \u00faltimo borrador",
"Special character...": "Car\u00e1cter especial...",
"Source code": "C\u00f3digo fuente",
"Insert\/Edit code sample": "Insertar\/Editar c\u00f3digo muestra",
"Language": "idioma",
"Code sample...": "Ejemplo de c\u00f3digo...",
"Color Picker": "Selector de colores",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Izquierda a derecha",
"Right to left": "Derecha a Izquierda",
"Emoticons...": "Emoticonos...",
"Metadata and Document Properties": "Metadatos y propiedades del documento",
"Title": "T\u00edtulo",
"Keywords": "Palabras clave",
"Description": "Descripci\u00f3n ",
"Robots": "Robots",
"Author": "Autor",
"Encoding": "Codificaci\u00f3n",
"Fullscreen": "Pantalla completa",
"Action": "Acci\u00f3n",
"Shortcut": "Atajo",
"Help": "Ayuda",
"Address": "Direcci\u00f3n",
"Focus to menubar": "Enfocar en barra de menu",
"Focus to toolbar": "Enfocar en barra de herramientas",
"Focus to element path": "Enfocar ruta del elemento",
"Focus to contextual toolbar": "Enfocar en barra de herramientas contextual",
"Insert link (if link plugin activated)": "Insertar enlace (si enlace del plugin est\u00e1 activo)",
"Save (if save plugin activated)": "Guardar (si el plugin guardar est\u00e1 activo)",
"Find (if searchreplace plugin activated)": "Buscar (si el plugin buscar\/reemplazar est\u00e1 activo)",
"Plugins installed ({0}):": "Plugins instalados ({0}):",
"Premium plugins:": "Plugins premium:",
"Learn more...": "Aprende m\u00e1s...",
"You are using {0}": "est\u00e1s usando {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Atajos \u00fatiles",
"Horizontal line": "L\u00ednea Horizontal",
"Insert\/edit image": "Insertar\/editar imagen",
"Image description": "Descripci\u00f3n de imagen",
"Source": "Origen",
"Dimensions": "Dimensiones",
"Constrain proportions": "Restringir proporciones",
"General": "General",
"Advanced": "Avanzado",
"Style": "Estilo",
"Vertical space": "Espacio vertical",
"Horizontal space": "Espacio horizontal",
"Border": "Borde",
"Insert image": "Insertar imagen",
"Image...": "Imagen...",
"Image list": "Lista de im\u00e1genes",
"Rotate counterclockwise": "Rotar en sentido contrario a las manecillas",
"Rotate clockwise": "Rotar en sentido de las manecillas",
"Flip vertically": "Voltear verticalmente",
"Flip horizontally": "Volter horizontalmente",
"Edit image": "Editar imagen",
"Image options": "Opciones de la imagen",
"Zoom in": "Acercar",
"Zoom out": "Alejar",
"Crop": "Recortar",
"Resize": "Cambiar tama\u00f1o",
"Orientation": "Orientaci\u00f3n",
"Brightness": "Brillo",
"Sharpen": "Nitidez",
"Contrast": "Contraste",
"Color levels": "Niveles de Color",
"Gamma": "Gamma",
"Invert": "Invertir",
"Apply": "Aplicar",
"Back": "Regresar",
"Insert date\/time": "Insertar fecha\/hora",
"Date\/time": "Fecha\/hora",
"Insert\/Edit Link": "Insertar\/editar v\u00ednculo",
"Insert\/edit link": "Inserta\/editar enlace",
"Text to display": "Texto a mostrar",
"Url": "Url",
"Open link in...": "Abrir v\u00ednculo en...",
"Current window": "Ventana actual",
"None": "Ninguno",
"New window": "Nueva ventana",
"Remove link": "Eliminar elnace",
"Anchors": "Anclas",
"Link...": "V\u00ednculo...",
"Paste or type a link": "Pega o escribe un enlace",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "El URL que ha insertado tiene formato de correo electr\u00f3nico. \u00bfDesea agregar con prefijo \"mailto:\"?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "El URL que ha ingresado es un enlace externo. \u00bfDesea agregar el prefijo \"http:\/\/\"?",
"Link list": "Lista de enlaces",
"Insert video": "Insertar video",
"Insert\/edit video": "Insertar\/editar video",
"Insert\/edit media": "Insertar\/editar multimedia",
"Alternative source": "Fuente alternativa",
"Alternative source URL": "URL de origen alternativo",
"Media poster (Image URL)": "P\u00f3ster multimedia (URL de la imagen)",
"Paste your embed code below:": "Pegue su c\u00f3digo de inserci\u00f3n abajo:",
"Embed": "Incrustar",
"Media...": "Elemento multimedia...",
"Nonbreaking space": "Espacio de no separaci\u00f3n",
"Page break": "Salto de p\u00e1gina ",
"Paste as text": "Copiar como texto",
"Preview": "Vista previa ",
"Print...": "Imprimir...",
"Save": "Guardar",
"Find": "Buscar",
"Replace with": "Remplazar con",
"Replace": "Remplazar",
"Replace all": "Remplazar todo",
"Previous": "Anterior",
"Next": "Siguiente",
"Find and replace...": "Buscar y reemplazar...",
"Could not find the specified string.": "No se ha encontrado la cadena especificada.",
"Match case": "Coincidencia",
"Find whole words only": "Buscar solo palabras completas",
"Spell check": "Corrector ortogr\u00e1fico",
"Ignore": "Ignorar",
"Ignore all": "Ignorar todo",
"Finish": "Terminar",
"Add to Dictionary": "Agregar al diccionario ",
"Insert table": "Insertar tabla",
"Table properties": "Propiedades de tabla",
"Delete table": "Eliminar tabla",
"Cell": "Celda",
"Row": "Rengl\u00f3n ",
"Column": "Columna",
"Cell properties": "Propiedades de celda",
"Merge cells": "Unir celdas",
"Split cell": "Dividir celdas",
"Insert row before": "Insertar rengl\u00f3n antes",
"Insert row after": "Insertar rengl\u00f3n despu\u00e9s",
"Delete row": "Eliminar rengl\u00f3n ",
"Row properties": "Propiedades del rengl\u00f3n ",
"Cut row": "Cortar renglon",
"Copy row": "Copiar rengl\u00f3n ",
"Paste row before": "Pegar rengl\u00f3n antes",
"Paste row after": "Pegar rengl\u00f3n despu\u00e9s",
"Insert column before": "Insertar columna antes",
"Insert column after": "Insertar columna despu\u00e9s",
"Delete column": "Eliminar columna",
"Cols": "Columnas",
"Rows": "Renglones ",
"Width": "Ancho",
"Height": "Alto",
"Cell spacing": "Espacio entre celdas",
"Cell padding": "Relleno de la celda",
"Show caption": "Mostrar leyenda",
"Left": "Izquierda",
"Center": "Centro",
"Right": "Derecha",
"Cell type": "Tipo de celda",
"Scope": "Alcance",
"Alignment": "Alineaci\u00f3n ",
"H Align": "Alineaci\u00f3n Horizontal",
"V Align": "Alineaci\u00f3n Vertical",
"Top": "Arriba",
"Middle": "Centrado",
"Bottom": "Abajo",
"Header cell": "Celda de encabezado",
"Row group": "Grupo de renglones",
"Column group": "Grupo de columnas",
"Row type": "Tipo de rengl\u00f3n ",
"Header": "Encabezado",
"Body": "Cuerpo",
"Footer": "Pie",
"Border color": "Color del borde",
"Insert template...": "Insertar plantilla...",
"Templates": "Plantilla",
"Template": "Plantilla",
"Text color": "Color de letra",
"Background color": "Color de fondo",
"Custom...": "Personalizar",
"Custom color": "Perzonalizar color",
"No color": "Sin color",
"Remove color": "Eliminar color",
"Table of Contents": "Tabla de Contenidos",
"Show blocks": "Mostrar bloques",
"Show invisible characters": "Mostrar caracteres invisibles",
"Word count": "Contar palabras",
"Count": "Recuento",
"Document": "Documento",
"Selection": "Selecci\u00f3n",
"Words": "Palabras",
"Words: {0}": "Palabras:{0}",
"{0} words": "{0} palabras",
"File": "Archivo",
"Edit": "Editar",
"Insert": "Insertar",
"View": "Vistas",
"Format": "Formato",
"Table": "Tabla",
"Tools": "Herramientas",
"Powered by {0}": "Creado con {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Presione dentro del \u00e1rea de texto ALT-F9 para invocar el men\u00fa, ALT-F10 para la barra de herramientas y ALT-0 para la ayuda.",
"Image title": "T\u00edtulo de la imagen",
"Border width": "Ancho del borde",
"Border style": "Estilo del borde",
"Error": "Error",
"Warn": "Advertencia",
"Valid": "V\u00e1lido",
"To open the popup, press Shift+Enter": "Para abrir la ventana emergente, pulse May\u00fas+Intro",
"Rich Text Area. Press ALT-0 for help.": "\u00c1rea de texto enriquecido. Pulse ALT-0 para obtener ayuda.",
"System Font": "Fuente del sistema",
"Failed to upload image: {0}": "Error al cargar la imagen: {0}",
"Failed to load plugin: {0} from url {1}": "Error al cargar el complemento: {0} desde la url {1}",
"Failed to load plugin url: {0}": "Error al cargar la url del complemento: {0}",
"Failed to initialize plugin: {0}": "Error al inicializar el complemento: {0}",
"example": "ejemplo",
"Search": "Buscar",
"All": "Todo",
"Currency": "Moneda",
"Text": "Texto",
"Quotations": "Comillas",
"Mathematical": "Matem\u00e1ticos",
"Extended Latin": "Lat\u00edn extendido",
"Symbols": "S\u00edmbolos",
"Arrows": "Flechas",
"User Defined": "Definido por el usuario",
"dollar sign": "signo de d\u00f3lar",
"currency sign": "signo de moneda",
"euro-currency sign": "signo de euro",
"colon sign": "signo del col\u00f3n",
"cruzeiro sign": "signo del cruzeiro",
"french franc sign": "signo del franco franc\u00e9s",
"lira sign": "signo de la lira",
"mill sign": "signo de mil",
"naira sign": "signo del naira",
"peseta sign": "signo de la peseta",
"rupee sign": "signo de la rupia",
"won sign": "signo del won",
"new sheqel sign": "signo de nuevo shequel",
"dong sign": "signo del dong",
"kip sign": "signo del kip",
"tugrik sign": "signo del tugrik",
"drachma sign": "signo del dracma",
"german penny symbol": "signo del penique alem\u00e1n",
"peso sign": "signo del peso",
"guarani sign": "signo del guaran\u00ed",
"austral sign": "signo del austral",
"hryvnia sign": "signo de hryvnia",
"cedi sign": "signo de cedi",
"livre tournois sign": "signo de livre tournois",
"spesmilo sign": "signo de spesmilo",
"tenge sign": "signo de tenge",
"indian rupee sign": "signo de la rupia india",
"turkish lira sign": "signo de la lira turca",
"nordic mark sign": "signo del marco n\u00f3rdico",
"manat sign": "signo de manat",
"ruble sign": "signo de rublo",
"yen character": "car\u00e1cter del yen",
"yuan character": "car\u00e1cter del yuan",
"yuan character, in hong kong and taiwan": "car\u00e1cter del yuan, en Hong Kong y Taiw\u00e1n",
"yen\/yuan character variant one": "variante uno del car\u00e1cter del yen\/yuan",
"Loading emoticons...": "Cargando emoticonos...",
"Could not load emoticons": "No se pudieron cargar los emoticonos",
"People": "Personas",
"Animals and Nature": "Animales y naturaleza",
"Food and Drink": "Comida y bebida",
"Activity": "Actividad",
"Travel and Places": "Viajes y lugares",
"Objects": "Objetos",
"Flags": "Banderas",
"Characters": "Caracteres",
"Characters (no spaces)": "Caracteres (sin espacios)",
"{0} characters": "{0} caracteres",
"Error: Form submit field collision.": "Error: colisi\u00f3n de campo env\u00edo de formulario.",
"Error: No form element found.": "Error: no se encontr\u00f3 ning\u00fan elemento de formulario.",
"Update": "Actualizar",
"Color swatch": "Muestrario de colores",
"Turquoise": "Turquesa",
"Green": "Verde",
"Blue": "Azul",
"Purple": "Morado",
"Navy Blue": "Azul marino",
"Dark Turquoise": "Turquesa oscuro",
"Dark Green": "Verde oscuro",
"Medium Blue": "Azul medio",
"Medium Purple": "Morado medio",
"Midnight Blue": "Azul noche",
"Yellow": "Amarillo",
"Orange": "Anaranjado",
"Red": "Rojo",
"Light Gray": "Gris claro",
"Gray": "Gris",
"Dark Yellow": "Amarillo oscuro",
"Dark Orange": "Anaranjado oscuro",
"Dark Red": "Rojo oscuro",
"Medium Gray": "Gris medio",
"Dark Gray": "Gris oscuro",
"Light Green": "Verde claro",
"Light Yellow": "Amarillo claro",
"Light Red": "Rojo claro",
"Light Purple": "Morado claro",
"Light Blue": "Azul claro",
"Dark Purple": "Morado oscuro",
"Dark Blue": "Azul oscuro",
"Black": "Negro",
"White": "Blanco",
"Switch to or from fullscreen mode": "Cambiar a modo de pantalla completa o salir de \u00e9l",
"Open help dialog": "Abrir di\u00e1logo de ayuda",
"history": "historial",
"styles": "estilos",
"formatting": "formato",
"alignment": "alineaci\u00f3n",
"indentation": "sangr\u00eda",
"permanent pen": "l\u00e1piz permanente",
"comments": "comentarios",
"Format Painter": "Copiar formato",
"Insert\/edit iframe": "Insertar\/editar marco flotante",
"Capitalization": "Uso de may\u00fasculas",
"lowercase": "min\u00fascula",
"UPPERCASE": "MAY\u00daSCULA",
"Title Case": "Tipo t\u00edtulo",
"Permanent Pen Properties": "Propiedades del l\u00e1piz permanente",
"Permanent pen properties...": "Propiedades del l\u00e1piz permanente...",
"Font": "Fuente",
"Size": "Tama\u00f1o",
"More...": "M\u00e1s...",
"Spellcheck Language": "Idioma de la revisi\u00f3n ortogr\u00e1fica",
"Select...": "Seleccionar...",
"Preferences": "Preferencias",
"Yes": "S\u00ed",
"No": "No",
"Keyboard Navigation": "Navegaci\u00f3n con el teclado",
"Version": "Versi\u00f3n",
"Anchor": "Anclar",
"Special character": "Caracter especial",
"Code sample": "C\u00f3digo muestra",
"Color": "Color",
"Emoticons": "Emoticones",
"Document properties": "Propiedades del documento",
"Image": "Imagen",
"Insert link": "Insertar enlace",
"Target": "Objetivo",
"Link": "Enlace",
"Poster": "Cartel",
"Media": "Multimedia",
"Print": "Imprimir",
"Prev": "Anterior",
"Find and replace": "Buscar y reemplazar",
"Whole words": "Palabras completas",
"Spellcheck": "Revisi\u00f3n ortogr\u00e1fica",
"Caption": "Subt\u00edtulo",
"Insert template": "Insertar plantilla"
});js/tinymce/langs/cs_CZ.js000064400000047210151727150340011304 0ustar00tinymce.addI18n('cs_CZ',{
"Redo": "Znovu",
"Undo": "Zp\u011bt",
"Cut": "Vyjmout",
"Copy": "Kop\u00edrovat",
"Paste": "Vlo\u017eit",
"Select all": "Vybrat v\u0161e",
"New document": "Nov\u00fd dokument",
"Ok": "Ok",
"Cancel": "Zru\u0161it",
"Visual aids": "Vizu\u00e1ln\u00ed pom\u016fcky",
"Bold": "Tu\u010dn\u011b",
"Italic": "Kurz\u00edva",
"Underline": "Podtr\u017een\u00e9",
"Strikethrough": "P\u0159e\u0161krtnut\u00e9",
"Superscript": "Horn\u00ed index",
"Subscript": "Doln\u00ed index",
"Clear formatting": "Vymazat form\u00e1tov\u00e1n\u00ed",
"Align left": "Vlevo",
"Align center": "Na st\u0159ed",
"Align right": "Vpravo",
"Justify": "Zarovnat do bloku",
"Bullet list": "Odr\u00e1\u017eky",
"Numbered list": "\u010c\u00edslov\u00e1n\u00ed",
"Decrease indent": "Zmen\u0161it odsazen\u00ed",
"Increase indent": "Zv\u011b\u0161it odsazen\u00ed",
"Close": "Zav\u0159\u00edt",
"Formats": "Form\u00e1ty",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prohl\u00ed\u017ee\u010d nepodporuje p\u0159\u00edm\u00fd p\u0159\u00edstup do schr\u00e1nky. Pou\u017eijte pros\u00edm kl\u00e1vesov\u00e9 zkratky Ctrl+X\/C\/V.",
"Headers": "Nadpisy",
"Header 1": "Nadpis 1",
"Header 2": "Nadpis 2",
"Header 3": "Nadpis 3",
"Header 4": "Nadpis 4",
"Header 5": "Nadpis 5",
"Header 6": "Nadpis 6",
"Headings": "Nadpisy",
"Heading 1": "Nadpis 1",
"Heading 2": "Nadpis 2",
"Heading 3": "Nadpis 3",
"Heading 4": "Nadpis 4",
"Heading 5": "Nadpis 5",
"Heading 6": "Nadpis 6",
"Preformatted": "P\u0159edform\u00e1tovan\u00fd text",
"Div": "Div (blok)",
"Pre": "Pre (p\u0159edform\u00e1tov\u00e1no)",
"Code": "Code (k\u00f3d)",
"Paragraph": "Odstavec",
"Blockquote": "Citace",
"Inline": "\u0158\u00e1dkov\u00e9 zobrazen\u00ed (inline)",
"Blocks": "Blokov\u00e9 zobrazen\u00ed (block)",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Je zapnuto vkl\u00e1d\u00e1n\u00ed \u010dist\u00e9ho textu. Dokud nebude tato volba vypnuta, bude ve\u0161ker\u00fd obsah vlo\u017een jako \u010dist\u00fd text.",
"Fonts": "P\u00edsma",
"Font Sizes": "Velikost p\u00edsma",
"Class": "T\u0159\u00edda",
"Browse for an image": "Vybrat obr\u00e1zek",
"OR": "NEBO",
"Drop an image here": "P\u0159et\u00e1hn\u011bte obr\u00e1zek sem",
"Upload": "Nahr\u00e1t",
"Block": "Blok",
"Align": "Zarovnat",
"Default": "V\u00fdchoz\u00ed",
"Circle": "Kole\u010dko",
"Disc": "Punt\u00edk",
"Square": "\u010ctvere\u010dek",
"Lower Alpha": "Mal\u00e1 p\u00edsmena",
"Lower Greek": "\u0158eck\u00e1 p\u00edsmena",
"Lower Roman": "Mal\u00e9 \u0159\u00edmsl\u00e9 \u010d\u00edslice",
"Upper Alpha": "Velk\u00e1 p\u00edsmena",
"Upper Roman": "\u0158\u00edmsk\u00e9 \u010d\u00edslice",
"Anchor...": "Kotva",
"Name": "N\u00e1zev",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID by m\u011blo za\u010d\u00ednat p\u00edsmenem, n\u00e1sledovan\u00fdm pouze p\u00edsmeny, \u010d\u00edsly, poml\u010dkami, te\u010dkami, \u010d\u00e1rkami a nebo podtr\u017e\u00edtky.",
"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zm\u011bny. Opravdu chcete opustit str\u00e1nku?",
"Restore last draft": "Obnovit posledn\u00ed koncept.",
"Special character...": "Speci\u00e1ln\u00ed znak",
"Source code": "Zdrojov\u00fd k\u00f3d",
"Insert\/Edit code sample": "Vlo\u017eit\/Upravit uk\u00e1zku k\u00f3du",
"Language": "Jazyk",
"Code sample...": "Uk\u00e1zkov\u00fd k\u00f3d",
"Color Picker": "V\u00fdb\u011br barvy",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Zleva doprava",
"Right to left": "Zprava doleva",
"Emoticons": "Emotikony",
"Emoticons...": "Emotikony",
"Metadata and Document Properties": "Metadata a vlastnosti dokumentu",
"Title": "Titulek",
"Keywords": "Kl\u00ed\u010dov\u00e1 slova",
"Description": "Popis",
"Robots": "Roboti",
"Author": "Autor",
"Encoding": "K\u00f3dov\u00e1n\u00ed",
"Fullscreen": "Celk\u00e1 obrazovka",
"Action": "Akce",
"Shortcut": "Kl\u00e1vesov\u00e1 zkratka",
"Help": "N\u00e1pov\u011bda",
"Address": "Blok s po\u0161tovn\u00ed adresou",
"Focus to menubar": "P\u0159ej\u00edt do menu",
"Focus to toolbar": "P\u0159ej\u00edt na panel n\u00e1stroj\u016f",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "P\u0159ej\u00edt na kontextov\u00fd panel n\u00e1stroj\u016f",
"Insert link (if link plugin activated)": "Vlo\u017eit odkaz (pokud je aktivn\u00ed link plugin)",
"Save (if save plugin activated)": "Ulo\u017eit (pokud je aktivni save plugin)",
"Find (if searchreplace plugin activated)": "Hledat (pokud je aktivn\u00ed plugin searchreplace)",
"Plugins installed ({0}):": "Instalovan\u00e9 pluginy ({0}):",
"Premium plugins:": "Pr\u00e9miov\u00e9 pluginy:",
"Learn more...": "Zjistit v\u00edce...",
"You are using {0}": "Pou\u017e\u00edv\u00e1te {0}",
"Plugins": "Pluginy",
"Handy Shortcuts": "U\u017eite\u010dn\u00e9 kl\u00e1vesov\u00e9 zkratky",
"Horizontal line": "Vodorovn\u00e1 linka",
"Insert\/edit image": "Vlo\u017eit \/ upravit obr\u00e1zek",
"Alternative description": "Alternativn\u00ed text",
"Accessibility": "Bez alternativn\u00edho textu",
"Image is decorative": "(dekorativn\u00ed obr\u00e1zek bez alternativn\u00edho textu)",
"Source": "URL",
"Dimensions": "Rozm\u011bry",
"Constrain proportions": "Zachovat proporce",
"General": "Obecn\u00e9",
"Advanced": "Pokro\u010dil\u00e9",
"Style": "Styl",
"Vertical space": "Vertik\u00e1ln\u00ed mezera",
"Horizontal space": "Horizont\u00e1ln\u00ed mezera",
"Border": "R\u00e1me\u010dek",
"Insert image": "Vlo\u017eit obr\u00e1zek",
"Image...": "Obr\u00e1zek...",
"Image list": "Seznam obr\u00e1zk\u016f",
"Rotate counterclockwise": "Oto\u010dit doleva",
"Rotate clockwise": "Oto\u010dit doprava",
"Flip vertically": "P\u0159evr\u00e1tit svisle",
"Flip horizontally": "P\u0159evr\u00e1tit vodorovn\u011b",
"Edit image": "Upravit obr\u00e1zek",
"Image options": "Vlastnosti obr\u00e1zku",
"Zoom in": "P\u0159ibl\u00ed\u017eit",
"Zoom out": "Odd\u00e1lit",
"Crop": "O\u0159\u00edznout",
"Resize": "Zm\u011bnit velikost",
"Orientation": "Orientace",
"Brightness": "Jas",
"Sharpen": "Ostrost",
"Contrast": "Kontrast",
"Color levels": "\u00darovn\u011b barev",
"Gamma": "Gama",
"Invert": "Invertovat",
"Apply": "Pou\u017e\u00edt",
"Back": "Zp\u011bt",
"Insert date\/time": "Vlo\u017eit datum \/ \u010das",
"Date\/time": "Datum\/\u010das",
"Insert\/edit link": "Vlo\u017eit \/ upravit odkaz",
"Text to display": "Text odkazu",
"Url": "URL",
"Open link in...": "C\u00edlov\u00e9 okno URL",
"Current window": "Otev\u0159\u00edt v aktu\u00e1ln\u00edm okn\u011b",
"None": "\u017d\u00e1dn\u00fd",
"New window": "Nov\u00e9 okno",
"Open link": "C\u00edlov\u00e9 okno URL",
"Remove link": "Odstranit odkaz",
"Anchors": "Kotvy",
"Link...": "Odkaz...",
"Paste or type a link": "Vlo\u017ete nebo napi\u0161te adresu odkazu",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa. Chcete doplnit povinn\u00fd prefix mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1 jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix http:\/\/?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1 jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix https:\/\/?",
"Link list": "Seznam odkaz\u016f",
"Insert video": "Vlo\u017eit video",
"Insert\/edit video": "Vlo\u017eit \/ upravit video",
"Insert\/edit media": "Vlo\u017eit\/upravit m\u00e9dia",
"Alternative source": "Alternativn\u00ed zdroj",
"Alternative source URL": "Alternativn\u00ed zdrojov\u00e1 URL",
"Media poster (Image URL)": "URL n\u00e1hledu",
"Paste your embed code below:": "Vlo\u017ete k\u00f3d pro vlo\u017een\u00ed",
"Embed": "Vlo\u017een\u00fd",
"Media...": "M\u00e9dia",
"Nonbreaking space": "Pevn\u00e1 mezera",
"Page break": "Konec str\u00e1nky",
"Paste as text": "Vlo\u017eit jako \u010dist\u00fd text",
"Preview": "N\u00e1hled",
"Print...": "Tisk",
"Save": "Ulo\u017eit",
"Find": "Naj\u00edt",
"Replace with": "Nahradit za",
"Replace": "Nahradit",
"Replace all": "Nahradit v\u0161e",
"Previous": "P\u0159edchoz\u00ed",
"Next": "Dal\u0161\u00ed",
"Find and Replace": "Naj\u00edt a nahradit",
"Find and replace...": "Naj\u00edt a nahradit",
"Could not find the specified string.": "Zadan\u00fd \u0159et\u011bzec nebyl nalezen.",
"Match case": "Rozli\u0161ovat mal\u00e1 a velk\u00e1 p\u00edsmena",
"Find whole words only": "Pouze cel\u00e1 slova",
"Find in selection": "Ozna\u010den\u00fd text",
"Spellcheck": "Kontrola pravopisu",
"Spellcheck Language": "Jazyk kontroly pravopisu",
"No misspellings found.": "Nebyly nalezeny \u017e\u00e1dn\u00e9 p\u0159eklepy.",
"Ignore": "Ignorovat",
"Ignore all": "Ignorovat v\u0161e",
"Finish": "Dokon\u010dit",
"Add to Dictionary": "P\u0159idat do slovn\u00edku",
"Insert table": "Vlo\u017eit tabulku",
"Table properties": "Vlastnosti tabulky",
"Delete table": "Smazat tabulku",
"Cell": "Bu\u0148ka",
"Row": "\u0158\u00e1dek",
"Column": "Sloupec",
"Cell properties": "Vlastnosti bu\u0148ky",
"Merge cells": "Slou\u010dit bu\u0148ky",
"Split cell": "Rozd\u011blit bu\u0148ku",
"Insert row before": "Vlo\u017eit \u0159\u00e1dek p\u0159ed",
"Insert row after": "Vlo\u017eit \u0159\u00e1dek za",
"Delete row": "Smazat \u0159\u00e1dek",
"Row properties": "Vlastnosti \u0159\u00e1dku",
"Cut row": "Vyjmout \u0159\u00e1dek",
"Copy row": "Kop\u00edrovat \u0159\u00e1dek",
"Paste row before": "Vlo\u017eit \u0159\u00e1dek nad",
"Paste row after": "Vlo\u017eit \u0159\u00e1dek pod",
"Insert column before": "Vlo\u017eit sloupec vlevo",
"Insert column after": "Vlo\u017eit sloupec vpravo",
"Delete column": "Smazat sloupec",
"Cols": "Sloupce",
"Rows": "\u0158\u00e1dky",
"Width": "\u0160\u00ed\u0159ka",
"Height": "V\u00fd\u0161ka",
"Cell spacing": "Vn\u011bj\u0161\u00ed okraj bun\u011bk",
"Cell padding": "Vnit\u0159n\u00ed okraj bun\u011bk",
"Caption": "Titulek",
"Show caption": "Popisek pod obr\u00e1zkem",
"Left": "Vlevo",
"Center": "Na st\u0159ed",
"Right": "Vpravo",
"Cell type": "Typ bu\u0148ky",
"Scope": "Rozsah",
"Alignment": "Zarovn\u00e1n\u00ed",
"H Align": "Horizont\u00e1ln\u00ed zarovn\u00e1n\u00ed",
"V Align": "Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed",
"Top": "Nahoru",
"Middle": "Na st\u0159ed",
"Bottom": "Dol\u016f",
"Header cell": "Hlavi\u010dkov\u00e1 bu\u0148ka",
"Row group": "Skupina \u0159\u00e1dk\u016f",
"Column group": "Skupina sloupc\u016f",
"Row type": "Typ \u0159\u00e1dku",
"Header": "Hlavi\u010dka",
"Body": "T\u011blo",
"Footer": "Pati\u010dka",
"Border color": "Barva r\u00e1me\u010dku",
"Insert template...": "Vlo\u017eit \u0161ablonu...",
"Templates": "\u0160ablony",
"Template": "\u0160ablona",
"Text color": "Barva p\u00edsma",
"Background color": "Barva pozad\u00ed",
"Custom...": "Vlastn\u00ed",
"Custom color": "Vlastn\u00ed barva",
"No color": "Bez barvy",
"Remove color": "Odebrat barvu",
"Table of Contents": "Generovat obsah",
"Show blocks": "Uk\u00e1zat bloky",
"Show invisible characters": "Uk\u00e1zat skryt\u00e9 znaky",
"Word count": "Po\u010det slov",
"Count": "Po\u010det",
"Document": "Dokument",
"Selection": "V\u00fdb\u011br",
"Words": "Slova",
"Words: {0}": "Slova: {0}",
"{0} words": "{0} slov",
"File": "Soubor",
"Edit": "\u00dapravy",
"Insert": "Vlo\u017eit",
"View": "Zobrazit",
"Format": "Form\u00e1t",
"Table": "Tabulka",
"Tools": "N\u00e1stroje",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "RTF dokument. Stikn\u011bte ALT-F9 pro zobrazen\u00ed menu, ALT-F10 pro zobrazen\u00ed n\u00e1strojov\u00e9 li\u0161ty, ALT-0 pro n\u00e1pov\u011bdu.",
"Image title": "Titulek obr\u00e1zku",
"Border width": "\u0160\u00ed\u0159ka ohrani\u010den\u00ed",
"Border style": "Styl ohrani\u010den\u00ed",
"Error": "Chyba",
"Warn": "Varov\u00e1n\u00ed",
"Valid": "Platn\u00fd",
"To open the popup, press Shift+Enter": "Vyskakovac\u00ed okno otev\u0159ete stisknut\u00edm Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Oblast Rich Text, stiskn\u011bte ALT-0 pro n\u00e1pov\u011bdu.",
"System Font": "Syst\u00e9mov\u00e9 p\u00edsmo",
"Failed to upload image: {0}": "Nahr\u00e1n\u00ed obr\u00e1zku selhalo: {0}",
"Failed to load plugin: {0} from url {1}": "Na\u010dten\u00ed pluginu selhalo: {0} z URL {1}",
"Failed to load plugin url: {0}": "Na\u010dten\u00ed pluginu URL selhalo: {0}",
"Failed to initialize plugin: {0}": "Inicializace pluginu selhala:",
"example": "p\u0159\u00edklad",
"Search": "Hledat",
"All": "V\u0161e",
"Currency": "M\u011bna",
"Text": "Text",
"Quotations": "Citace",
"Mathematical": "Matematick\u00e9 symboly",
"Extended Latin": "Roz\u0161\u00ed\u0159en\u00e1 latinka",
"Symbols": "Symboly",
"Arrows": "\u0160ipky",
"User Defined": "Definovan\u00e9 u\u017eivatelem",
"dollar sign": "znak dolaru",
"currency sign": "znak m\u011bny",
"euro-currency sign": "znak euro",
"colon sign": "znak dvojte\u010dky",
"cruzeiro sign": "znak cruzeiro",
"french franc sign": "znak francouzsk\u00e9ho franku",
"lira sign": "znak liry",
"mill sign": "znak mill",
"naira sign": "znak nairy",
"peseta sign": "znak pesety",
"rupee sign": "znak rupie",
"won sign": "znak wonu",
"new sheqel sign": "znak nov\u00e9ho \u0161ekelu",
"dong sign": "znak dongu",
"kip sign": "znak kipu",
"tugrik sign": "znak tugriku",
"drachma sign": "znak drachmy",
"german penny symbol": "znak n\u011bmeck\u00e9ho feniku",
"peso sign": "znak pesa",
"guarani sign": "znak guaran\u00ed",
"austral sign": "znak austral",
"hryvnia sign": "znak h\u0159ivny",
"cedi sign": "znak cedi",
"livre tournois sign": "znak tournois libry",
"spesmilo sign": "znak spesmilo",
"tenge sign": "znak tenge",
"indian rupee sign": "znak indick\u00e9 rupie",
"turkish lira sign": "znak tureck\u00e9 liry",
"nordic mark sign": "znak norsk\u00e9 marky",
"manat sign": "znak manatu",
"ruble sign": "znak rublu",
"yen character": "znak jenu",
"yuan character": "znak juanu",
"yuan character, in hong kong and taiwan": "znak juanu v hongkongu a tchaj-wanu",
"yen\/yuan character variant one": "znak jenu\/juanu, varianta 1",
"Loading emoticons...": "Na\u010d\u00edt\u00e1n\u00ed emotikon\u016f...",
"Could not load emoticons": "Nelze na\u010d\u00edst emotikony",
"People": "Lid\u00e9",
"Animals and Nature": "Zv\u00ed\u0159ata a p\u0159\u00edroda",
"Food and Drink": "J\u00eddlo a pit\u00ed",
"Activity": "Aktivita",
"Travel and Places": "Cestov\u00e1n\u00ed a m\u00edsta",
"Objects": "Objekty",
"Flags": "Vlajky",
"Characters": "Znaky",
"Characters (no spaces)": "Znaky (bez mezer)",
"{0} characters": "{0} znak\u016f",
"Error: Form submit field collision.": "Chyba: Kolize odes\u00edlac\u00edho formul\u00e1\u0159ov\u00e9ho pole.",
"Error: No form element found.": "Chyba: Nebyl nalezen \u017e\u00e1dn\u00fd prvek formul\u00e1\u0159e.",
"Update": "Aktualizovat",
"Color swatch": "Vzorek barvy",
"Turquoise": "Tyrkysov\u00e1",
"Green": "Zelen\u00e1",
"Blue": "Modr\u00e1",
"Purple": "Fialov\u00e1",
"Navy Blue": "N\u00e1mo\u0159nick\u00e1 mod\u0159",
"Dark Turquoise": "Tmav\u011b tyrkysov\u00e1",
"Dark Green": "Tmav\u011b zelen\u00e1",
"Medium Blue": "St\u0159edn\u011b modr\u00e1",
"Medium Purple": "St\u0159edn\u011b fialov\u00e1",
"Midnight Blue": "P\u016flno\u010dn\u00ed modr\u00e1",
"Yellow": "\u017dlut\u00e1",
"Orange": "Oran\u017eov\u00e1",
"Red": "\u010cerven\u00e1",
"Light Gray": "Sv\u011btle \u0161ed\u00e1",
"Gray": "\u0160ed\u00e1",
"Dark Yellow": "Tmav\u011b \u017elut\u00e1",
"Dark Orange": "Tmav\u011b oran\u017eov\u00e1",
"Dark Red": "Tmav\u011b \u010derven\u00e1",
"Medium Gray": "St\u0159edn\u011b \u0161ed\u00e1",
"Dark Gray": "Tmav\u011b \u0161ed\u00e1",
"Light Green": "Sv\u011btle zelen\u00e1",
"Light Yellow": "Sv\u011btle \u017elut\u00e1",
"Light Red": "Sv\u011btle \u010derven\u00e1",
"Light Purple": "Sv\u011btle fialov\u00e1",
"Light Blue": "Sv\u011btle modr\u00e1",
"Dark Purple": "Tmav\u011b fialov\u00e1",
"Dark Blue": "Tmav\u011b modr\u00e1",
"Black": "\u010cern\u00e1",
"White": "B\u00edl\u00e1",
"Switch to or from fullscreen mode": "P\u0159ep\u00edn\u00e1n\u00ed mezi re\u017eimem cel\u00e9 obrazovky",
"Open help dialog": "Otev\u0159\u00edt okno n\u00e1pov\u011bdy",
"history": "historie",
"styles": "styly",
"formatting": "form\u00e1tov\u00e1n\u00ed",
"alignment": "zarovn\u00e1n\u00ed",
"indentation": "odsazen\u00ed",
"Font": "P\u00edsmo",
"Size": "Velikost",
"More...": "Dal\u0161\u00ed\u2026",
"Select...": "Vybrat",
"Preferences": "Preference",
"Yes": "Ano",
"No": "Ne",
"Keyboard Navigation": "Navigace pomoc\u00ed kl\u00e1vesnice",
"Version": "Verze",
"Code view": "Zobrazit k\u00f3d",
"Open popup menu for split buttons": "Otev\u0159ete vyskakovac\u00ed nab\u00eddku pro rozd\u011blen\u00e1 tla\u010d\u00edtka",
"List Properties": "Vlastnosti seznamu",
"List properties...": "Vlastnosti seznamu...",
"Start list at number": "Po\u010d\u00e1te\u010dn\u00ed \u010d\u00edslo seznamu",
"Line height": "V\u00fd\u0161ka \u0159\u00e1dku",
"comments": "koment\u00e1\u0159e",
"Format Painter": "Kop\u00edrovat form\u00e1t",
"Insert\/edit iframe": "Vlo\u017eit \/ upravit prvek iframe",
"Capitalization": "Velk\u00e1 p\u00edsmena",
"lowercase": "mal\u00e1 p\u00edsmena",
"UPPERCASE": "VELK\u00c1 P\u00cdSMENA",
"Title Case": "V\u0161echna Prvn\u00ed Velk\u00e1",
"permanent pen": "permanentn\u00ed pero",
"Permanent Pen Properties": "Vlastnosti permanentn\u00edho pera",
"Permanent pen properties...": "Vlastnosti permanentn\u00edho pera\u2026",
"case change": "Zm\u011bna velikosti p\u00edsma",
"page embed": "Vlo\u017een\u00ed str\u00e1nky",
"Advanced sort...": "Roz\u0161\u00ed\u0159en\u00e9 \u0159azen\u00ed...",
"Advanced Sort": "Roz\u0161\u00ed\u0159en\u00e9 \u0159azen\u00ed",
"Sort table by column ascending": "Se\u0159adit tabulku podle sloupce vzestupn\u011b",
"Sort table by column descending": "Se\u0159adit tabulku podle sloupce sestupn\u011b",
"Sort": "\u0158adit",
"Order": "\u0158azen\u00ed",
"Sort by": "\u0158adit dle",
"Ascending": "Vzestupn\u011b",
"Descending": "Sestupn\u011b",
"Column {0}": "Sloupec {0}",
"Row {0}": "\u0158\u00e1dek {0}",
"Spellcheck...": "Kontrola pravopisu",
"Misspelled word": "\u0160patn\u011b napsan\u00e9 slovo",
"Suggestions": "N\u00e1vrhy",
"Change": "Zm\u011bnit",
"Finding word suggestions": "Hled\u00e1n\u00ed n\u00e1vrh\u016f slov",
"Success": "\u00dasp\u011b\u0161n\u00e9",
"Repair": "Opraveno",
"Issue {0} of {1}": "Probl\u00e9m {0} z {1}",
"Images must be marked as decorative or have an alternative text description": "Obr\u00e1zky mus\u00ed b\u00fdt ozna\u010deny jako dekorativn\u00ed nebo mus\u00ed m\u00edt alternativn\u00ed textov\u00fd popis.",
"Images must have an alternative text description. Decorative images are not allowed.": "Obr\u00e1zky mus\u00ed m\u00edt alternativn\u00ed textov\u00fd popis. Dekorativn\u00ed obr\u00e1zky nejsou povoleny.",
"Or provide alternative text:": "Nebo zadejte alternativn\u00ed text:",
"Make image decorative:": "Nastavit obr\u00e1zek jako dekorativn\u00ed:",
"ID attribute must be unique": "ID atributu mus\u00ed b\u00fdt jedine\u010dn\u00e9",
"Make ID unique": "Nastavit ID jako jedine\u010dn\u00e9",
"Keep this ID and remove all others": "Ponechat toto ID a odstranit v\u0161echny ostatn\u00ed",
"Remove this ID": "Odebrat toto ID",
"Remove all IDs": "Odebrat v\u0161echna ID",
"Checklist": "Kontroln\u00ed seznam",
"Anchor": "Kotva",
"Special character": "Speci\u00e1ln\u00ed znak",
"Code sample": "Uk\u00e1zka k\u00f3du",
"Color": "Barva",
"Document properties": "Vlastnosti dokumentu",
"Image description": "Popis obr\u00e1zku",
"Image": "Obr\u00e1zek",
"Insert link": "Vlo\u017eit odkaz",
"Target": "C\u00edl",
"Link": "Odkaz",
"Poster": "Poster",
"Media": "M\u00e9dia",
"Print": "Tisk",
"Prev": "P\u0159edchoz\u00ed",
"Find and replace": "Naj\u00edt a nahradit",
"Whole words": "Pouze cel\u00e1 slova",
"Insert template": "Vlo\u017eit ze \u0161ablony"
});js/tinymce/langs/fi.js000064400000037445151727150350010713 0ustar00tinymce.addI18n('fi',{
"Redo": "Tee uudelleen",
"Undo": "Kumoa",
"Cut": "Leikkaa",
"Copy": "Kopioi",
"Paste": "Liit\u00e4",
"Select all": "Valitse kaikki",
"New document": "Uusi asiakirja",
"Ok": "Ok",
"Cancel": "Peruuta",
"Visual aids": "Visuaaliset neuvot",
"Bold": "Lihavoitu",
"Italic": "Kursivoitu",
"Underline": "Alleviivaus",
"Strikethrough": "Yliviivaus",
"Superscript": "Yl\u00e4indeksi",
"Subscript": "Alaindeksi",
"Clear formatting": "Poista muotoilu",
"Align left": "Tasaa vasemmalle",
"Align center": "Tasaa keskelle",
"Align right": "Tasaa oikealle",
"Justify": "Tasaus",
"Bullet list": "J\u00e4rjest\u00e4m\u00e4t\u00f6n lista",
"Numbered list": "J\u00e4rjestetty lista",
"Decrease indent": "Sisenn\u00e4",
"Increase indent": "Loitonna",
"Close": "Sulje",
"Formats": "Muotoilut",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Selaimesi ei tue leikep\u00f6yd\u00e4n suoraa k\u00e4ytt\u00e4mist\u00e4. Ole hyv\u00e4 ja k\u00e4yt\u00e4 n\u00e4pp\u00e4imist\u00f6n Ctrl+X\/C\/V n\u00e4pp\u00e4inyhdistelmi\u00e4.",
"Headers": "Otsikot",
"Header 1": "Otsikko 1",
"Header 2": "Otsikko 2",
"Header 3": "Otsikko 3",
"Header 4": "Otsikko 4",
"Header 5": "Otsikko 5",
"Header 6": "Otsikko 6",
"Headings": "Otsikot",
"Heading 1": "Otsikko 1",
"Heading 2": "Otsikko 2",
"Heading 3": "Otsikko 3",
"Heading 4": "Otsikko 4",
"Heading 5": "Otsikko 5",
"Heading 6": "Otsikko 6",
"Preformatted": "Esimuotoiltu",
"Div": "Div",
"Pre": "Pre",
"Code": "Koodi",
"Paragraph": "Kappale",
"Blockquote": "Lohkolainaus",
"Inline": "Samalla rivill\u00e4",
"Blocks": "Lohkot",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Liitt\u00e4minen on nyt pelk\u00e4n tekstin -tilassa. Sis\u00e4ll\u00f6t liitet\u00e4\u00e4n nyt pelkk\u00e4n\u00e4 tekstin\u00e4, kunnes otat vaihtoehdon pois k\u00e4yt\u00f6st\u00e4.",
"Fonts": "Fontti",
"Font Sizes": "Fonttikoko",
"Class": "Luokka",
"Browse for an image": "Selaa kuvia",
"OR": "TAI",
"Drop an image here": "Pudota kuva t\u00e4h\u00e4n",
"Upload": "Vie",
"Block": "Lohko",
"Align": "Tasaa",
"Default": "Oletus",
"Circle": "Pallo",
"Disc": "Ympyr\u00e4",
"Square": "Neli\u00f6",
"Lower Alpha": "pienet kirjaimet: a, b, c",
"Lower Greek": "pienet kirjaimet: \u03b1, \u03b2, \u03b3",
"Lower Roman": "pienet kirjaimet: i, ii, iii",
"Upper Alpha": "isot kirjaimet: A, B, C",
"Upper Roman": "isot kirjaimet: I, II, III",
"Anchor...": "Ankkuri...",
"Name": "Nimi",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id voi alkaa kirjaimella, sen j\u00e4lkeen voi k\u00e4ytt\u00e4\u00e4 kirjaimia, numeroja, viivoja, pisteit\u00e4, kaksoispistett\u00e4 ja alaviivausta",
"You have unsaved changes are you sure you want to navigate away?": "Sinulla on tallentamattomia muutoksia, haluatko varmasti siirty\u00e4 toiselle sivulle?",
"Restore last draft": "Palauta aiempi luonnos",
"Special character...": "Erikoismerkki...",
"Source code": "L\u00e4hdekoodi",
"Insert\/Edit code sample": "Lis\u00e4\u00e4\/muokkaa koodiesimerkki",
"Language": "Kieli",
"Code sample...": "Koodin\u00e4yte...",
"Color Picker": "V\u00e4rivalitsin",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Vasemmalta oikealle",
"Right to left": "Oikealta vasemmalle",
"Emoticons...": "Emoticonit...",
"Metadata and Document Properties": "Metadata ja asiakirjan ominaisuudet",
"Title": "Otsikko",
"Keywords": "Avainsanat",
"Description": "Kuvaus",
"Robots": "Robotit",
"Author": "Tekij\u00e4",
"Encoding": "Merkist\u00f6",
"Fullscreen": "Koko ruutu",
"Action": "Toiminto",
"Shortcut": "Oikotie",
"Help": "Ohje",
"Address": "Osoite",
"Focus to menubar": "Kohdistus valikkoon",
"Focus to toolbar": "Kohdistus ty\u00f6kalupalkkiin",
"Focus to element path": "Kohdistus elementtiin",
"Focus to contextual toolbar": "Kohdistus kontekstuaaliseen ty\u00f6kalupalkkiin",
"Insert link (if link plugin activated)": "Lis\u00e4\u00e4 linkki (jos linkki-liit\u00e4nn\u00e4inen aktiivinen)",
"Save (if save plugin activated)": "Tallenna (jos tallenna-liit\u00e4nn\u00e4inen aktiivinen)",
"Find (if searchreplace plugin activated)": "Etsi (jos etsikorvaa-liit\u00e4nn\u00e4inen aktiivinen)",
"Plugins installed ({0}):": "Asennetut liit\u00e4nn\u00e4iset ({0}):",
"Premium plugins:": "Premium liit\u00e4nn\u00e4iset:",
"Learn more...": "Lis\u00e4tietoja...",
"You are using {0}": "K\u00e4yt\u00e4t {0}",
"Plugins": "Liit\u00e4nn\u00e4iset",
"Handy Shortcuts": "K\u00e4tev\u00e4t pikan\u00e4pp\u00e4imet",
"Horizontal line": "Vaakasuora viiva",
"Insert\/edit image": "Lis\u00e4\u00e4\/muokkaa kuva",
"Image description": "Kuvaus",
"Source": "L\u00e4hde",
"Dimensions": "Mittasuhteet",
"Constrain proportions": "S\u00e4ilyt\u00e4 mittasuhteet",
"General": "Yleiset",
"Advanced": "Lis\u00e4asetukset",
"Style": "Tyyli",
"Vertical space": "Vertikaalinen tila",
"Horizontal space": "Horisontaalinen tila",
"Border": "Reunus",
"Insert image": "Lis\u00e4\u00e4 kuva",
"Image...": "Kuva...",
"Image list": "Kuvalista",
"Rotate counterclockwise": "Kierr\u00e4 vastap\u00e4iv\u00e4\u00e4n",
"Rotate clockwise": "Kierr\u00e4 my\u00f6t\u00e4p\u00e4iv\u00e4\u00e4n",
"Flip vertically": "K\u00e4\u00e4nn\u00e4 pystysuunnassa",
"Flip horizontally": "K\u00e4\u00e4nn\u00e4 vaakasuunnassa",
"Edit image": "Muokkaa kuvaa",
"Image options": "Kuvan asetukset",
"Zoom in": "L\u00e4henn\u00e4",
"Zoom out": "Loitonna",
"Crop": "Rajaa valintaan",
"Resize": "Kuvan koon muutos",
"Orientation": "Suunta",
"Brightness": "Kirkkaus",
"Sharpen": "Ter\u00e4vyys",
"Contrast": "Kontrasti",
"Color levels": "V\u00e4ritasot",
"Gamma": "Gamma",
"Invert": "K\u00e4\u00e4nteinen",
"Apply": "Aseta",
"Back": "Takaisin",
"Insert date\/time": "Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 tai aika",
"Date\/time": "P\u00e4iv\u00e4m\u00e4\u00e4r\u00e4\/aika",
"Insert\/Edit Link": "Lis\u00e4\u00e4 linkki\/muokkaa linkki\u00e4",
"Insert\/edit link": "Lis\u00e4\u00e4\/muokkaa linkki",
"Text to display": "N\u00e4ytett\u00e4v\u00e4 teksti",
"Url": "Osoite",
"Open link in...": "Avaa linkki...",
"Current window": "Nykyinen ikkuna",
"None": "Ei mit\u00e4\u00e4n",
"New window": "Uusi ikkuna",
"Remove link": "Poista linkki",
"Anchors": "Ankkurit",
"Link...": "Linkki...",
"Paste or type a link": "Sijoita tai kirjoita linkki",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun mailto: -etuliitteen?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan ulkoinen linkki. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun http:\/\/ -etuliitteen?",
"Link list": "Linkkilista",
"Insert video": "Lis\u00e4\u00e4 video",
"Insert\/edit video": "Lis\u00e4\u00e4\/muokkaa video",
"Insert\/edit media": "Lis\u00e4\u00e4\/muokkaa media",
"Alternative source": "Vaihtoehtoinen l\u00e4hde",
"Alternative source URL": "Vaihtoehtoinen l\u00e4hde-URL",
"Media poster (Image URL)": "Median julkaisija (kuvan URL)",
"Paste your embed code below:": "Liit\u00e4 upotuskoodisi alapuolelle:",
"Embed": "Upota",
"Media...": "Media...",
"Nonbreaking space": "Sitova v\u00e4lily\u00f6nti",
"Page break": "Sivunvaihto",
"Paste as text": "Liit\u00e4 tekstin\u00e4",
"Preview": "Esikatselu",
"Print...": "Tulosta",
"Save": "Tallenna",
"Find": "Etsi",
"Replace with": "Korvaa",
"Replace": "Korvaa",
"Replace all": "Korvaa kaikki",
"Previous": "Edellinen",
"Next": "Seur.",
"Find and replace...": "Etsi ja korvaa...",
"Could not find the specified string.": "Haettua merkkijonoa ei l\u00f6ytynyt.",
"Match case": "Erota isot ja pienet kirjaimet",
"Find whole words only": "Etsi vain kokonaisia sanoja",
"Spell check": "Oikeinkirjoituksen tarkistus",
"Ignore": "\u00c4l\u00e4 huomioi",
"Ignore all": "\u00c4l\u00e4 huomioi mit\u00e4\u00e4n",
"Finish": "Lopeta",
"Add to Dictionary": "Lis\u00e4\u00e4 sanakirjaan",
"Insert table": "Lis\u00e4\u00e4 taulukko",
"Table properties": "Taulukon ominaisuudet",
"Delete table": "Poista taulukko",
"Cell": "Solu",
"Row": "Rivi",
"Column": "Sarake",
"Cell properties": "Solun ominaisuudet",
"Merge cells": "Yhdist\u00e4 solut",
"Split cell": "Jaa solu",
"Insert row before": "Lis\u00e4\u00e4 rivi ennen",
"Insert row after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
"Delete row": "Poista rivi",
"Row properties": "Rivin ominaisuudet",
"Cut row": "Leikkaa rivi",
"Copy row": "Kopioi rivi",
"Paste row before": "Liit\u00e4 rivi ennen",
"Paste row after": "Liit\u00e4 rivi j\u00e4lkeen",
"Insert column before": "Lis\u00e4\u00e4 rivi ennen",
"Insert column after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
"Delete column": "Poista sarake",
"Cols": "Sarakkeet",
"Rows": "Rivit",
"Width": "Leveys",
"Height": "Korkeus",
"Cell spacing": "Solun v\u00e4li",
"Cell padding": "Solun tyhj\u00e4 tila",
"Show caption": "N\u00e4yt\u00e4 kuvateksti",
"Left": "Vasen",
"Center": "Keskell\u00e4",
"Right": "Oikea",
"Cell type": "Solun tyyppi",
"Scope": "Laajuus",
"Alignment": "Tasaus",
"H Align": "H tasaus",
"V Align": "V tasaus",
"Top": "Yl\u00e4reuna",
"Middle": "Keskikohta",
"Bottom": "Alareuna",
"Header cell": "Otsikkosolu",
"Row group": "Riviryhm\u00e4",
"Column group": "Sarakeryhm\u00e4",
"Row type": "Rivityyppi",
"Header": "Otsikko",
"Body": "Runko",
"Footer": "Alaosa",
"Border color": "Reunuksen v\u00e4ri",
"Insert template...": "Lis\u00e4\u00e4 malli...",
"Templates": "Pohjat",
"Template": "Pohja",
"Text color": "Tekstin v\u00e4ri",
"Background color": "Taustan v\u00e4ri",
"Custom...": "Mukauta...",
"Custom color": "Mukautettu v\u00e4ri",
"No color": "Ei v\u00e4ri\u00e4",
"Remove color": "Poista v\u00e4ri",
"Table of Contents": "Sis\u00e4llysluettelo",
"Show blocks": "N\u00e4yt\u00e4 lohkot",
"Show invisible characters": "N\u00e4yt\u00e4 n\u00e4kym\u00e4tt\u00f6m\u00e4t merkit",
"Word count": "Sanam\u00e4\u00e4r\u00e4",
"Count": "M\u00e4\u00e4r\u00e4",
"Document": "Tiedosto",
"Selection": "Valinta",
"Words": "Sanaa",
"Words: {0}": "Sanat: {0}",
"{0} words": "{0} sanaa",
"File": "Tiedosto",
"Edit": "Muokkaa",
"Insert": "Lis\u00e4\u00e4",
"View": "N\u00e4yt\u00e4",
"Format": "Muotoilu",
"Table": "Taulukko",
"Tools": "Ty\u00f6kalut",
"Powered by {0}": "Tehty {0}:ll\u00e4",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastetun tekstin alue. Paina ALT-F9 valikkoon. Paina ALT-F10 ty\u00f6kaluriviin. Paina ALT-0 ohjeeseen.",
"Image title": "Kuvan otsikko",
"Border width": "Reunuksen leveys",
"Border style": "Reunuksen tyyli",
"Error": "Virhe",
"Warn": "Varoitus",
"Valid": "Voimassa",
"To open the popup, press Shift+Enter": "Avaa ponnahdusikkuna painamalla Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Rikastetun tekstin alue. Avaa ohje painamalla ALT-0.",
"System Font": "J\u00e4rjestelm\u00e4fontti",
"Failed to upload image: {0}": "Kuvan lataus ep\u00e4onnistui: {0}",
"Failed to load plugin: {0} from url {1}": "Liit\u00e4nn\u00e4isen lataus ep\u00e4onnistui: {0} url:st\u00e4 {1}",
"Failed to load plugin url: {0}": "Liit\u00e4nn\u00e4isen url:n lataus ep\u00e4onnistui: {0}",
"Failed to initialize plugin: {0}": "Liit\u00e4nn\u00e4isen alustus ep\u00e4onnistui: {0}",
"example": "esimerkki",
"Search": "Etsi",
"All": "Kaikki",
"Currency": "Valuutta",
"Text": "Teksti",
"Quotations": "Lainaukset",
"Mathematical": "Matemaattiset",
"Extended Latin": "Laajennettu latina",
"Symbols": "Symbolit",
"Arrows": "Nuolet",
"User Defined": "K\u00e4ytt\u00e4j\u00e4m\u00e4\u00e4ritetty",
"dollar sign": "dollarimerkki",
"currency sign": "valuuttamerkki",
"euro-currency sign": "eurovaluuttamerkki",
"colon sign": "kaksoispisteen merkki",
"cruzeiro sign": "cruzeiro-merkki",
"french franc sign": "ranskalaisen frangin merkki",
"lira sign": "liiran merkki",
"mill sign": "millin merkki",
"naira sign": "nairan merkki",
"peseta sign": "pesetan merkki",
"rupee sign": "rupian merkki",
"won sign": "wonin merkki",
"new sheqel sign": "uuden sekelin merkki",
"dong sign": "dongin merkki",
"kip sign": "kipin merkki",
"tugrik sign": "tugrikin merkki",
"drachma sign": "drakman merkki",
"german penny symbol": "saksalaisen pennin merkki",
"peso sign": "peson merkki",
"guarani sign": "guaranin merkki",
"austral sign": "australin merkki",
"hryvnia sign": "hryvnian merkki",
"cedi sign": "cedin merkki",
"livre tournois sign": "livre tournoisin merkki",
"spesmilo sign": "spesmilon merkki",
"tenge sign": "tengen merkki",
"indian rupee sign": "intialaisen rupian merkki",
"turkish lira sign": "turkkilaisen liiran merkki",
"nordic mark sign": "pohjoismaisen markan merkki",
"manat sign": "manatin merkki",
"ruble sign": "ruplan merkki",
"yen character": "jenin merkki",
"yuan character": "juanin merkki",
"yuan character, in hong kong and taiwan": "juanin merkki, Hongkongissa ja Taiwanissa",
"yen\/yuan character variant one": "jenin\/juanin merkin variantti",
"Loading emoticons...": "Ladataan emoticoneja...",
"Could not load emoticons": "Emoticoneja ei voitu ladata",
"People": "Ihmiset",
"Animals and Nature": "El\u00e4imet ja luonto",
"Food and Drink": "Ruoka ja juoma",
"Activity": "Aktiviteetit",
"Travel and Places": "Matkailu ja paikat",
"Objects": "Esineet",
"Flags": "Liput",
"Characters": "Merkki\u00e4",
"Characters (no spaces)": "Merkki\u00e4 (ilman v\u00e4lily\u00f6ntej\u00e4)",
"{0} characters": "{0} merkki\u00e4",
"Error: Form submit field collision.": "Virhe: lomakkeen l\u00e4hetyskent\u00e4n t\u00f6rm\u00e4ys.",
"Error: No form element found.": "Virhe: muotoelementti\u00e4 ei l\u00f6ytynyt.",
"Update": "P\u00e4ivit\u00e4",
"Color swatch": "V\u00e4rin\u00e4yte",
"Turquoise": "Turkoosi",
"Green": "Vihre\u00e4",
"Blue": "Sininen",
"Purple": "Purppura",
"Navy Blue": "Laivastonsininen",
"Dark Turquoise": "Tumma turkoosi",
"Dark Green": "Tumma vihre\u00e4",
"Medium Blue": "Keskitumma sininen",
"Medium Purple": "Keskitumma purppura",
"Midnight Blue": "keskiy\u00f6n sininen",
"Yellow": "Keltainen",
"Orange": "Oranssi",
"Red": "Punainen",
"Light Gray": "Vaaleanharmaa",
"Gray": "Harmaa",
"Dark Yellow": "Tummankeltainen",
"Dark Orange": "Tumma oranssi",
"Dark Red": "Tumma punainen",
"Medium Gray": "Keskiharmaa",
"Dark Gray": "Tummanharmaa",
"Light Green": "Vaaleanvihre\u00e4",
"Light Yellow": "Vaaleankeltainen",
"Light Red": "Vaaleanpunainen",
"Light Purple": "Liila",
"Light Blue": "Vaaleansininen",
"Dark Purple": "Tummanvioletti",
"Dark Blue": "Tummansininen",
"Black": "Musta",
"White": "Valkoinen",
"Switch to or from fullscreen mode": "Vaihda kokon\u00e4ytt\u00f6\u00f6n tai kokon\u00e4yt\u00f6st\u00e4",
"Open help dialog": "Avaa ohjeen valintaikkuna",
"history": "historia",
"styles": "tyylit",
"formatting": "muotoiltu",
"alignment": "tasaus",
"indentation": "sisennys",
"permanent pen": "pysyv\u00e4 kyn\u00e4",
"comments": "kommentit",
"Format Painter": "Muotoilusivellin",
"Insert\/edit iframe": "Lis\u00e4\u00e4\/muokkaa iframe-kehyst\u00e4",
"Capitalization": "Kapitalisointi",
"lowercase": "pienaakkoset",
"UPPERCASE": "SUURAAKKOSET",
"Title Case": "Otsikon kapitalisointi",
"Permanent Pen Properties": "Pysyv\u00e4t kyn\u00e4n ominaisuudet",
"Permanent pen properties...": "Pysyv\u00e4t kyn\u00e4n ominaisuudet...",
"Font": "Fontti",
"Size": "Koko",
"More...": "Lis\u00e4\u00e4...",
"Spellcheck Language": "Oikoluvun kieli",
"Select...": "Valitse...",
"Preferences": "Asetukset",
"Yes": "Kyll\u00e4",
"No": "Ei",
"Keyboard Navigation": "Navigointi n\u00e4pp\u00e4imist\u00f6ll\u00e4",
"Version": "Versio",
"Anchor": "Ankkuri",
"Special character": "Erikoismerkki",
"Code sample": "Koodiesimerkki",
"Color": "V\u00e4ri",
"Emoticons": "Hymi\u00f6t",
"Document properties": "Dokumentin ominaisuudet",
"Image": "Kuva",
"Insert link": "Lis\u00e4\u00e4 linkki",
"Target": "Kohde",
"Link": "Linkki",
"Poster": "L\u00e4hett\u00e4j\u00e4",
"Media": "Media",
"Print": "Tulosta",
"Prev": "Edel.",
"Find and replace": "Etsi ja korvaa",
"Whole words": "Koko sanat",
"Spellcheck": "Oikolue",
"Caption": "Seloste",
"Insert template": "Lis\u00e4\u00e4 pohja"
});js/tinymce/langs/be.js000064400000062751151727150350010701 0ustar00tinymce.addI18n('be',{
"Redo": "\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c",
"Undo": "\u0412\u044f\u0440\u043d\u0443\u0446\u044c",
"Cut": "\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c",
"Copy": "\u041a\u0430\u043f\u0456\u0440\u0430\u0432\u0430\u0446\u044c",
"Paste": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",
"Select all": "\u0412\u044b\u043b\u0443\u0447\u044b\u0446\u044c \u0443\u0441\u0451",
"New document": "\u041d\u043e\u0432\u044b \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442",
"Ok": "Ok",
"Cancel": "\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c",
"Visual aids": "\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b",
"Bold": "\u0422\u043b\u0443\u0441\u0442\u044b",
"Italic": "\u041a\u0443\u0440\u0441\u0456\u045e",
"Underline": "\u041f\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",
"Strikethrough": "\u0417\u0430\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456 \u0456\u043d\u0434\u044d\u043a\u0441",
"Subscript": "\u041d\u0456\u0436\u043d\u0456 \u0456\u043d\u0434\u044d\u043a\u0441",
"Clear formatting": "\u0410\u0447\u044b\u0441\u0446\u0456\u0446\u044c \u0444\u0430\u0440\u043c\u0430\u0442",
"Align left": "\u041f\u0430 \u043b\u0435\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
"Align center": "\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",
"Align right": "\u041f\u0430 \u043f\u0440\u0430\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
"Justify": "\u041f\u0430 \u0448\u044b\u0440\u044b\u043d\u0456",
"Bullet list": "\u041c\u0430\u0440\u043a\u0456\u0440\u0430\u0432\u0430\u043d\u044b \u0441\u043f\u0456\u0441",
"Numbered list": "\u041d\u0443\u043c\u0430\u0440\u0430\u0432\u0430\u043d\u044b \u0441\u043f\u0456\u0441",
"Decrease indent": "\u041f\u0430\u043c\u0435\u043d\u0448\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Increase indent": "\u041f\u0430\u0432\u044f\u043b\u0456\u0447\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Close": "\u0417\u0430\u0447\u044b\u043d\u0456\u0446\u044c",
"Formats": "\u0424\u0430\u0440\u043c\u0430\u0442",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u045e\u0437\u044d\u0440 \u043d\u0435 \u043f\u0430\u0434\u0442\u0440\u044b\u043c\u043b\u0456\u0432\u0430\u0435 \u043f\u0440\u0430\u043c\u044b \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0430\u0431\u043c\u0435\u043d\u0443. \u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u043e\u045e\u0432\u0430\u0439\u0446\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u044b\u044f \u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448: Ctrl + X\/C\/V.",
"Headers": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0456",
"Header 1": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",
"Header 2": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",
"Header 3": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",
"Header 4": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",
"Header 5": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",
"Header 6": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",
"Headings": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0456",
"Heading 1": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",
"Heading 2": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",
"Heading 3": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",
"Heading 4": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",
"Heading 5": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",
"Heading 6": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",
"Preformatted": "\u0412\u044b\u0440\u0430\u045e\u043d\u0430\u0432\u0430\u043d\u044b",
"Div": "\u0411\u043b\u043e\u043a",
"Pre": "\u041f\u0440\u0430\u0434\u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u043d\u0435",
"Code": "\u041a\u043e\u0434",
"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
"Blockquote": "\u0426\u044b\u0442\u0430\u0442\u0430",
"Inline": "\u0420\u0430\u0434\u043a\u043e\u0432\u044b",
"Blocks": "\u0411\u043b\u043e\u043a\u0456",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0423\u0441\u0442\u0430\u045e\u043a\u0430 \u0437\u0434\u0437\u044f\u0439\u0441\u043d\u044f\u0435\u0446\u0446\u0430 \u045e \u0432\u044b\u0433\u043b\u044f\u0434\u0437\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0433\u0430 \u0442\u044d\u043a\u0441\u0442\u0443, \u043f\u0430\u043a\u0443\u043b\u044c \u043d\u0435 \u0430\u0434\u043a\u043b\u044e\u0447\u044b\u0446\u044c \u0434\u0430\u0434\u0437\u0435\u043d\u0443\u044e \u043e\u043f\u0446\u044b\u044e.",
"Font Family": "\u0428\u0440\u044b\u0444\u0442",
"Font Sizes": "\u041f\u0430\u043c\u0435\u0440 \u0448\u0440\u044b\u0444\u0442\u0430",
"Class": "\u041a\u043b\u0430\u0441",
"Browse for an image": "\u041f\u043e\u0448\u0443\u043a \u0432\u044b\u044f\u0432\u044b",
"OR": "\u0410\u0411\u041e",
"Drop an image here": "\u0410\u0434\u043a\u0456\u043d\u044c\u0446\u0435 \u0432\u044b\u044f\u0432\u0443 \u0442\u0443\u0442",
"Upload": "\u0417\u0430\u043f\u0430\u043c\u043f\u0430\u0432\u0430\u0446\u044c",
"Block": "\u0417\u0430\u0431\u043b\u0430\u043a\u0430\u0432\u0430\u0446\u044c",
"Align": "\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b",
"Circle": "\u0410\u043a\u0440\u0443\u0436\u043d\u0430\u0441\u0446\u0456",
"Disc": "\u041a\u0440\u0443\u0433\u0456",
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
"Lower Alpha": "\u041c\u0430\u043b\u044b\u044f \u043b\u0430\u0446\u0456\u043d\u0441\u043a\u0456\u044f \u043b\u0456\u0442\u0430\u0440\u044b",
"Lower Greek": "\u041c\u0430\u043b\u044b\u044f \u0433\u0440\u044d\u0447\u0430\u0441\u043a\u0456\u044f \u043b\u0456\u0442\u0430\u0440\u044b",
"Lower Roman": "\u041c\u0430\u043b\u044b\u044f \u0440\u044b\u043c\u0441\u043a\u0456\u044f \u043b\u0456\u0447\u0431\u044b",
"Upper Alpha": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043d\u044b\u044f \u043b\u0430\u0446\u0456\u043d\u0441\u043a\u0456\u044f \u043b\u0456\u0442\u0430\u0440\u044b",
"Upper Roman": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043d\u044b\u044f \u0440\u044b\u043c\u0441\u043a\u0456\u044f \u043b\u0456\u0447\u0431\u044b",
"Anchor": "\u042f\u043a\u0430\u0440",
"Name": "\u0406\u043c\u044f",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u043f\u0430\u0432\u0456\u043d\u0435\u043d \u043f\u0430\u0447\u044b\u043d\u0430\u0446\u0446\u0430 \u0437 \u043b\u0456\u0442\u0430\u0440\u044b, \u0430 \u043f\u043e\u0442\u044b\u043c \u0443\u0442\u0440\u044b\u043c\u043b\u0456\u0432\u0430\u0446\u044c \u0442\u043e\u043b\u044c\u043a\u0456 \u043b\u0456\u0442\u0430\u0440\u044b, \u043b\u0456\u0447\u0431\u044b, \u043f\u0440\u0430\u0446\u044f\u0436\u043d\u0456\u043a, \u043a\u0440\u043e\u043f\u043a\u0456, \u0434\u0432\u0443\u043a\u0440\u043e\u043f'\u044f \u0446\u0456 \u043f\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0456\u0432\u0430\u043d\u043d\u0456.",
"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0451\u0441\u0446\u044c \u043d\u0435\u0437\u0430\u0445\u0430\u0432\u0430\u043d\u044b\u044f \u0437\u043c\u0435\u043d\u044b. \u0412\u044b \u045e\u043f\u044d\u045e\u043d\u0435\u043d\u044b\u044f, \u0448\u0442\u043e \u0445\u043e\u0447\u0430\u0446\u0435 \u0432\u044b\u0439\u0441\u0446\u0456?",
"Restore last draft": "\u0410\u0434\u043d\u0430\u045e\u043b\u0435\u043d\u043d\u0435 \u0430\u043f\u043e\u0448\u043d\u044f\u0433\u0430 \u043f\u0440\u0430\u0435\u043a\u0442\u0430",
"Special character": "\u0421\u043f\u0435\u0446\u044b\u044f\u043b\u044c\u043d\u044b\u044f \u0441\u0456\u043c\u0432\u0430\u043b\u044b",
"Source code": "\u0417\u044b\u0445\u043e\u0434\u043d\u044b \u043a\u043e\u0434",
"Insert\/Edit code sample": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043a\u043e\u0434",
"Language": "\u041c\u043e\u0432\u0430",
"Code sample": "\u041f\u0440\u044b\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0430",
"Color": "\u041a\u043e\u043b\u0435\u0440",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0417\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",
"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u0430",
"Emoticons": "\u0414\u0430\u0434\u0430\u0446\u044c \u0441\u043c\u0430\u0439\u043b",
"Document properties": "\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
"Title": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
"Keywords": "\u041a\u043b\u044e\u0447\u0430\u0432\u044b\u044f \u0441\u043b\u043e\u0432\u044b",
"Description": "\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435",
"Robots": "\u0420\u043e\u0431\u0430\u0442\u044b",
"Author": "\u0410\u045e\u0442\u0430\u0440",
"Encoding": "\u041a\u0430\u0434\u044b\u0440\u043e\u045e\u043a\u0430",
"Fullscreen": "\u041f\u043e\u045e\u043d\u0430\u044d\u043a\u0440\u0430\u043d\u043d\u044b \u0440\u044d\u0436\u044b\u043c",
"Action": "\u0414\u0437\u0435\u044f\u043d\u043d\u0435",
"Shortcut": "\u0428\u043e\u0440\u0442\u043a\u0430\u0442",
"Help": "\u0414\u0430\u043f\u0430\u043c\u043e\u0433\u0430",
"Address": "\u0410\u0434\u0440\u0430\u0441",
"Focus to menubar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u0440\u0430\u0434\u043e\u043a \u043c\u0435\u043d\u044e",
"Focus to toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043f\u0430\u043d\u044d\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u045e",
"Focus to element path": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u0448\u043b\u044f\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430",
"Focus to contextual toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043a\u0430\u043d\u0442\u044d\u043a\u0441\u0442\u043d\u0443\u044e \u043f\u0430\u043d\u044d\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u045e",
"Insert link (if link plugin activated)": "\u040e\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443 (\u043a\u0430\u043b\u0456 \u043f\u043b\u0430\u0433\u0456\u043d \u0441\u043f\u0430\u0441\u044b\u043b\u0430\u043a \u0430\u043a\u0442\u044b\u0432\u0430\u0432\u0430\u043d\u044b)",
"Save (if save plugin activated)": "\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c (\u043a\u0430\u043b\u0456 \u043f\u043b\u0430\u0433\u0456\u043d \u0437\u0430\u0445\u0430\u0432\u0430\u043d\u043d\u044f \u0430\u043a\u0442\u044b\u0432\u0430\u0432\u0430\u043d\u044b)",
"Find (if searchreplace plugin activated)": "\u0428\u0443\u043a\u0430\u0446\u044c (\u043a\u0430\u043b\u0456 \u043f\u043b\u0430\u0433\u0456\u043d \u043f\u043e\u0448\u0443\u043a\u0443 \u0430\u043a\u0442\u044b\u0432\u0430\u0432\u0430\u043d\u044b)",
"Plugins installed ({0}):": "\u0423\u0441\u0442\u0430\u043b\u044f\u0432\u0430\u043d\u0430 \u043f\u043b\u0430\u0433\u0456\u043d\u0430\u045e ({0}):",
"Premium plugins:": "\u041f\u0440\u044d\u043c\u0456\u044f\u043b\u044c\u043d\u044b\u044f \u043f\u043b\u0430\u0433\u0456\u043d\u044b:",
"Learn more...": "\u041f\u0430\u0434\u0440\u0430\u0431\u044f\u0437\u043d\u0435\u0439 ...",
"You are using {0}": "\u0412\u044b \u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0435\u0446\u0435\u0441\u044f  {0}",
"Plugins": "\u041f\u043b\u0430\u0433\u0456\u043d\u044b",
"Handy Shortcuts": "\u0417\u0440\u0443\u0447\u043d\u044b\u044f \u0448\u043e\u0440\u0442\u043a\u0430\u0442\u044b",
"Horizontal line": "\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0456\u043d\u0456\u044f",
"Insert\/edit image": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0432\u044b\u044f\u0432\u0443",
"Image description": "\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435 \u0432\u044b\u044f\u0432\u044b",
"Source": "\u041a\u0440\u044b\u043d\u0456\u0446\u0430",
"Dimensions": "\u041f\u0430\u043c\u0435\u0440",
"Constrain proportions": "\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c \u043f\u0440\u0430\u043f\u043e\u0440\u0446\u044b\u0456",
"General": "\u0410\u0433\u0443\u043b\u044c\u043d\u0430\u0435",
"Advanced": "\u041f\u0430\u0448\u044b\u0440\u0430\u043d\u0430\u0435",
"Style": "\u0421\u0442\u044b\u043b\u044c",
"Vertical space": "\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u044b \u0456\u043d\u0442\u044d\u0440\u0432\u0430\u043b",
"Horizontal space": "\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b \u0456\u043d\u0442\u044d\u0440\u0432\u0430\u043b",
"Border": "\u041c\u044f\u0436\u0430",
"Insert image": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0432\u044b\u044f\u0432\u0443",
"Image": "\u0412\u044b\u044f\u0432\u0430",
"Image list": "\u0421\u043f\u0456\u0441 \u0432\u044b\u044f\u045e",
"Rotate counterclockwise": "\u041f\u0430\u0432\u044f\u0440\u043d\u0443\u0446\u044c counterclockwise",
"Rotate clockwise": "\u041f\u0430\u0432\u044f\u0440\u043d\u0443\u0446\u044c clockwise",
"Flip vertically": "\u0410\u0434\u043b\u044e\u0441\u0442\u0440\u0430\u0432\u0430\u0446\u044c \u0432\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u0430",
"Flip horizontally": "\u0410\u0434\u043b\u044e\u0441\u0442\u0440\u0430\u0432\u0430\u0446\u044c \u0433\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430",
"Edit image": "\u0420\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0432\u044b\u044f\u0432\u0443",
"Image options": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u044b\u044f\u0432\u044b",
"Zoom in": "\u041f\u0430\u0432\u044f\u043b\u0456\u0447\u044b\u0446\u044c",
"Zoom out": "\u041f\u0430\u043c\u0435\u043d\u0448\u044b\u0446\u044c",
"Crop": "\u0410\u0431\u0440\u044d\u0437\u0430\u0446\u044c",
"Resize": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c \u043f\u0430\u043c\u0435\u0440",
"Orientation": "\u0410\u0440\u044b\u0435\u043d\u0442\u0430\u0446\u044b\u044f",
"Brightness": "\u042f\u0440\u043a\u0430\u0441\u0446\u044c",
"Sharpen": "\u0412\u044b\u0440\u0430\u0437\u043d\u0430\u0441\u0446\u044c",
"Contrast": "\u041a\u0430\u043d\u0442\u0440\u0430\u0441\u0442",
"Color levels": "\u0423\u0437\u0440\u043e\u045e\u043d\u0456 \u043a\u043e\u043b\u0435\u0440\u0430\u045e",
"Gamma": "\u0413\u0430\u043c\u0430",
"Invert": "\u0406\u043d\u0432\u0435\u0440\u0442\u0430\u0432\u0430\u0446\u044c",
"Apply": "\u0423\u0436\u044b\u0446\u044c",
"Back": "\u041d\u0430\u0437\u0430\u0434",
"Insert date\/time": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
"Date\/time": "\u0414\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Insert link": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"Insert\/edit link": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"Text to display": "\u0422\u044d\u043a\u0441\u0442 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",
"Url": "\u0410\u0434\u0440\u0430\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",
"Target": "\u0410\u0434\u043a\u0440\u044b\u0432\u0430\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"None": "\u041d\u044f\u043c\u0430",
"New window": "\u0423 \u043d\u043e\u0432\u044b\u043c \u0430\u043a\u043d\u0435",
"Remove link": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"Anchors": "\u042f\u043a\u0430\u0440\u044b",
"Link": "\u0421\u043f\u0430\u0441\u044b\u043b\u043a\u0430",
"Paste or type a link": "\u0423\u0441\u0442\u0430\u045e\u0446\u0435 \u0430\u0431\u043e \u045e\u0432\u044f\u0434\u0437\u0456\u0446\u0435 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 \u0430\u0434\u0440\u0430\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0439 \u043f\u043e\u0448\u0442\u044b. \u0416\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043d\u0435\u0430\u0431\u0445\u043e\u0434\u043d\u044b mailto: \u043f\u0440\u044d\u0444\u0456\u043a\u0441?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 \u0437\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443. \u0416\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043d\u0435\u0430\u0431\u0445\u043e\u0434\u043d\u044b http:\/\/ \u043f\u0440\u044d\u0444\u0456\u043a\u0441?",
"Link list": "\u0421\u043f\u0456\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u0430\u043a",
"Insert video": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0432\u0456\u0434\u044d\u0430",
"Insert\/edit video": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0432\u0456\u0434\u044d\u0430",
"Insert\/edit media": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u043c\u0435\u0434\u044b\u044f",
"Alternative source": "\u0410\u043b\u044c\u0442\u044d\u0440\u043d\u0430\u0442\u044b\u045e\u043d\u0430\u044f \u043a\u0440\u044b\u043d\u0456\u0446\u0430",
"Poster": "\u0412\u044b\u044f\u0432\u0430",
"Paste your embed code below:": "\u0423\u0441\u0442\u0430\u045e\u0446\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0456\u0436\u044d\u0439:",
"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u045e\u0441\u0442\u0430\u045e\u043a\u0456",
"Media": "\u041c\u0435\u0434\u044b\u044f",
"Nonbreaking space": "\u041d\u0435\u043f\u0430\u0440\u044b\u045e\u043d\u044b \u043f\u0440\u0430\u0431\u0435\u043b",
"Page break": "\u0420\u0430\u0437\u0440\u044b\u045e \u0441\u0442\u0430\u0440\u043e\u043d\u043a\u0456",
"Paste as text": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u044f\u043a \u0442\u044d\u043a\u0441\u0442",
"Preview": "\u041f\u0440\u0430\u0434\u043f\u0440\u0430\u0433\u043b\u044f\u0434",
"Print": "\u0414\u0440\u0443\u043a",
"Save": "\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c",
"Find": "\u0417\u043d\u0430\u0439\u0441\u0446\u0456",
"Replace with": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c \u043d\u0430",
"Replace": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c",
"Replace all": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c \u0443\u0441\u0435",
"Prev": "\u0423\u0432\u0435\u0440\u0445",
"Next": "\u0423\u043d\u0456\u0437",
"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0435\u043d\u0430",
"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u0434\u0437\u0435\u043d\u044b \u0440\u0430\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u043e\u0439\u0434\u0437\u0435\u043d\u044b",
"Match case": "\u0423\u043b\u0456\u0447\u0432\u0430\u0446\u044c \u0440\u044d\u0433\u0456\u0441\u0442\u0440",
"Whole words": "\u0421\u043b\u043e\u0432\u044b \u0446\u0430\u043b\u043a\u0430\u043c",
"Spellcheck": "\u041f\u0440\u0430\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u0430\u043f\u0456\u0441\u0443",
"Ignore": "\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c",
"Ignore all": "\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c \u0443\u0441\u0435",
"Finish": "\u0421\u043a\u043e\u043d\u0447\u044b\u0446\u044c",
"Add to Dictionary": "\u0414\u0430\u0434\u0430\u0446\u044c \u0443 \u0441\u043b\u043e\u045e\u043d\u0456\u043a",
"Insert table": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0442\u0430\u0431\u043b\u0456\u0446\u0443",
"Table properties": "\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",
"Delete table": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0442\u0430\u0431\u043b\u0456\u0446\u0443",
"Cell": "\u042f\u0447\u044d\u0439\u043a\u0430",
"Row": "\u0420\u0430\u0434\u043e\u043a",
"Column": "\u0421\u043b\u0443\u043f\u043e\u043a",
"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u044d\u0439\u043a\u0456",
"Merge cells": "\u0410\u0431'\u044f\u0434\u043d\u0430\u0446\u044c \u044f\u0447\u044d\u0439\u043a\u0456",
"Split cell": "\u0420\u0430\u0437\u0431\u0456\u0446\u044c \u044f\u0447\u044d\u0439\u043a\u0443",
"Insert row before": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Insert row after": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u043d\u0456\u0437\u0443",
"Delete row": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a",
"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0434\u043a\u0430",
"Cut row": "\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a",
"Copy row": "\u041a\u0430\u043f\u0456\u044f\u0432\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a",
"Paste row before": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
"Paste row after": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u043d\u0456\u0437\u0443",
"Insert column before": "\u0414\u0430\u0434\u0430\u0446\u044c \u0441\u043b\u0443\u043f\u043e\u043a \u0437\u043b\u0435\u0432\u0430",
"Insert column after": "\u0414\u0430\u0434\u0430\u0446\u044c \u0441\u043b\u0443\u043f\u043e\u043a \u0441\u043f\u0440\u0430\u0432\u0430",
"Delete column": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0441\u043b\u0443\u043f\u043e\u043a",
"Cols": "\u0421\u043b\u0443\u043f\u043a\u0456",
"Rows": "\u0420\u0430\u0434\u043a\u0456",
"Width": "\u0428\u044b\u0440\u044b\u043d\u044f",
"Height": "\u0412\u044b\u0448\u044b\u043d\u044f",
"Cell spacing": "\u0417\u043d\u0435\u0448\u043d\u0456 \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Cell padding": "\u0423\u043d\u0443\u0442\u0440\u0430\u043d\u044b \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
"Caption": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
"Left": "\u041f\u0430 \u043b\u0435\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
"Center": "\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",
"Right": "\u041f\u0430 \u043f\u0440\u0430\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
"Cell type": "\u0422\u044b\u043f \u044f\u0447\u044d\u0439\u043a\u0456",
"Scope": "\u0421\u0444\u0435\u0440\u0430",
"Alignment": "\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"H Align": "\u0413\u0430\u0440. \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"V Align": "\u0412\u0435\u0440. \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
"Top": "\u0412\u0435\u0440\u0445",
"Middle": "\u0421\u044f\u0440\u044d\u0434\u0437\u0456\u043d\u0430",
"Bottom": "\u041d\u0456\u0437",
"Header cell": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u0430\u0434\u043a\u043e\u045e",
"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u043b\u0443\u043f\u043a\u043e\u045e",
"Row type": "\u0422\u044b\u043f \u0440\u0430\u0434\u043a\u0430",
"Header": "\u0428\u0430\u043f\u043a\u0430",
"Body": "\u0426\u0435\u043b\u0430",
"Footer": "\u041d\u0456\u0437",
"Border color": "\u041a\u043e\u043b\u0435\u0440 \u043c\u044f\u0436\u044b",
"Insert template": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0448\u0430\u0431\u043b\u043e\u043d",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
"Template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"Text color": "\u041a\u043e\u043b\u0435\u0440 \u0442\u044d\u043a\u0441\u0442\u0443",
"Background color": "\u041a\u043e\u043b\u0435\u0440 \u0444\u043e\u043d\u0443",
"Custom...": "\u041a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u043a\u0456...",
"Custom color": "\u041a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u043a\u0456 \u043a\u043e\u043b\u0435\u0440",
"No color": "\u0411\u0435\u0437 \u043a\u043e\u043b\u0435\u0440\u0443",
"Table of Contents": "\u0422\u0430\u0431\u043b\u0456\u0446\u0443 \u0437\u043c\u0435\u0441\u0442\u0443",
"Show blocks": "\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u0431\u043b\u043e\u043a\u0456",
"Show invisible characters": "\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u043d\u044f\u0431\u0430\u0447\u043d\u044b\u044f \u0441\u0456\u043c\u0432\u0430\u043b\u044b",
"Words: {0}": "\u041a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0441\u043b\u043e\u045e: {0}",
"{0} words": "{0} \u0441\u043b\u043e\u045e",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c",
"Insert": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",
"View": "\u0412\u044b\u0433\u043b\u044f\u0434",
"Format": "\u0424\u0430\u0440\u043c\u0430\u0442",
"Table": "\u0422\u0430\u0431\u043b\u0456\u0446\u0430",
"Tools": "\u041f\u0440\u044b\u043b\u0430\u0434\u044b",
"Powered by {0}": "\u041f\u0440\u0430\u0446\u0443\u0435 \u043d\u0430 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u044d\u043a\u0441\u0442\u0430\u0432\u0430\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0446\u0456\u0441\u043d\u0456\u0446\u0435 ALT-F9, \u043a\u0430\u0431 \u0432\u044b\u043a\u043b\u0456\u043a\u0430\u0446\u044c \u043c\u0435\u043d\u044e, ALT-F10 - \u043f\u0430\u043d\u044d\u043b\u044c \u043f\u0440\u044b\u043b\u0430\u0434\u0430\u045e, ALT-0 - \u0434\u043b\u044f \u0432\u044b\u043a\u043b\u0456\u043a\u0443 \u0434\u0430\u043f\u0430\u043c\u043e\u0433\u0456."
});js/tinymce/langs/ml_IN.js000064400000060437151727150350011310 0ustar00tinymce.addI18n('ml_IN',{
"Redo": "\u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
"Undo": "\u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d24\u0d4d \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Cut": "\u0d2e\u0d41\u0d31\u0d3f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15 ",
"Copy": "\u0d2a\u0d15\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Paste": "\u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Select all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02 \u0d24\u0d3f\u0d30\u0d1e\u0d4d\u0d1e\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15",
"New document": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d30\u0d1a\u0d28",
"Ok": "\u0d36\u0d30\u0d3f",
"Cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Visual aids": "\u0d26\u0d43\u0d36\u0d4d\u0d2f\u0d38\u0d39\u0d3e\u0d2f\u0d3f\u0d15\u0d33\u0d4d\u200d",
"Bold": "\u0d15\u0d28\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Italic": "\u0d1a\u0d46\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Underline": "\u0d05\u0d1f\u0d3f\u0d35\u0d30\u0d2f\u0d3f\u0d1f\u0d41\u0d15",
"Strikethrough": "\u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15",
"Superscript": "\u0d38\u0d42\u0d2a\u0d4d\u0d2a\u0d30\u0d4d\u200d\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d3f\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
"Subscript": "\u0d38\u0d2c\u0d4d\u200c\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d3f\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
"Clear formatting": "\u0d35\u0d46\u0d1f\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Align left": "\u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d \u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Align center": "\u0d28\u0d1f\u0d41\u0d35\u0d3f\u0d32\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d \u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Align right": "\u0d35\u0d32\u0d24\u0d4d\u0d24\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d \u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Justify": "\u0d38\u0d28\u0d4d\u0d24\u0d41\u0d32\u0d3f\u0d24\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Bullet list": "\u0d05\u0d1f\u0d2f\u0d3e\u0d33\u0d2e\u0d3f\u0d1f\u0d4d\u0d1f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
"Numbered list": "\u0d0e\u0d23\u0d4d\u0d23\u0d2e\u0d3f\u0d1f\u0d4d\u0d1f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
"Decrease indent": "\u0d35\u0d3f\u0d1f\u0d35\u0d41\u0d4d \u0d15\u0d41\u0d31\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15 ",
"Increase indent": "\u0d35\u0d3f\u0d1f\u0d35\u0d41\u0d4d \u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d41\u0d15",
"Close": "\u0d05\u0d1f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Formats": "\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d02\u0d2e\u0d1f\u0d4d\u0d1f\u0d41\u0d02",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d2c\u0d4d\u0d30\u0d4c\u0d38\u0d30\u0d4d\u200d \u0d15\u0d4d\u0d32\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d\u0d2c\u0d4b\u0d30\u0d4d\u200d\u0d21\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d2a\u0d4d\u0d30\u0d35\u0d47\u0d36\u0d28\u0d02 \u0d28\u0d32\u0d4d\u200d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32. \u0d26\u0d2f\u0d35\u0d41 \u0d1a\u0d46\u0d2f\u0d4d\u0d24 CTRL+X\/C\/V \u0d37\u0d4b\u0d30\u0d4d\u200d\u0d1f\u0d4d\u0d1f\u0d4d\u0d15\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d33\u0d4d\u200d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Headers": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d33\u0d4d\u200d",
"Header 1": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c1",
"Header 2": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c2",
"Header 3": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c3",
"Header 4": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c4",
"Header 5": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c5",
"Header 6": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c6",
"Headings": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d19\u0d4d\u0d19\u0d7e",
"Heading 1": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d02 1",
"Heading 2": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d02 2",
"Heading 3": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d02 3",
"Heading 4": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d02 4",
"Heading 5": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d02 5",
"Heading 6": "\u0d36\u0d40\u0d7c\u0d37\u0d15\u0d02 6",
"Preformatted": "\u0d2a\u0d42\u0d7c\u0d35\u0d4d\u0d35\u0d38\u0d02\u0d30\u0d1a\u0d3f\u0d24\u0d02",
"Div": "\u0d21\u0d3f\u0d35\u0d4d",
"Pre": "\u0d2a\u0d4d\u0d30\u0d40",
"Code": "\u0d15\u0d4b\u0d21\u0d4d",
"Paragraph": "\u0d16\u0d23\u0d4d\u200c\u0d21\u0d3f\u0d15",
"Blockquote": "\u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d09\u0d26\u0d4d\u0d27\u0d30\u0d23\u0d3f",
"Inline": "\u0d35\u0d30\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u200d",
"Blocks": "\u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d02",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d \u0d07\u0d2a\u0d4d\u0d2a\u0d4b\u0d33\u0d4d\u200d \u0d32\u0d33\u0d3f\u0d24\u0d2e\u0d3e\u0d2f \u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c  \u0d06\u0d2f\u0d3f\u0d1f\u0d4d\u0d1f\u0d3e\u0d23\u0d4d. \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d08 \u0d38\u0d57\u0d15\u0d30\u0d4d\u0d2f\u0d02 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d \u0d35\u0d30\u0d46 \u0d09\u0d33\u0d4d\u0d33\u0d1f\u0d15\u0d4d\u0d15\u0d02 \u0d32\u0d33\u0d3f\u0d24 \u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d06\u0d2f\u0d3f\u0d1f\u0d4d\u0d1f\u0d3e\u0d2f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d02 \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d. ",
"Font Family": "\u0d2b\u0d4b\u0d23\u0d4d\u0d1f\u0d4d \u0d15\u0d41\u0d1f\u0d41\u0d02\u0d2c\u0d02",
"Font Sizes": "\u0d2b\u0d4b\u0d23\u0d4d\u0d1f\u0d4d \u0d35\u0d32\u0d3f\u0d2a\u0d4d\u0d2a\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Class": "\u0d36\u0d4d\u0d30\u0d47\u0d23\u0d3f",
"Browse for an image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d24\u0d4d\u0d24\u0d3f\u0d28\u0d3e\u0d2f\u0d3f \u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15 ",
"OR": "\u0d05\u0d25\u0d35\u0d3e",
"Drop an image here": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d02 \u0d07\u0d35\u0d3f\u0d1f\u0d46 \u0d07\u0d1f\u0d41\u0d15",
"Upload": "\u0d05\u0d2a\u0d4d\u0d2a\u0d4d\u0d32\u0d4b\u0d21\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
"Block": "\u0d16\u0d23\u0d4d\u0d21\u0d02",
"Align": "\u0d35\u0d3f\u0d28\u0d4d\u0d2f\u0d38\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Default": "\u0d09\u0d2a\u0d47\u0d15\u0d4d\u0d37",
"Circle": "\u0d35\u0d1f\u0d4d\u0d1f\u0d02",
"Disc": "\u0d1a\u0d15\u0d4d\u0d30\u0d02",
"Square": "\u0d38\u0d2e\u0d1a\u0d24\u0d41\u0d30\u0d02",
"Lower Alpha": "\u0d1a\u0d46\u0d31\u0d3f\u0d2f \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Lower Greek": "\u0d1a\u0d46\u0d31\u0d3f\u0d2f \u0d17\u0d4d\u0d30\u0d40\u0d15\u0d4d\u0d15\u0d4d\u200c \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Lower Roman": "\u0d1a\u0d46\u0d31\u0d3f\u0d2f \u0d31\u0d4b\u0d2e\u0d28\u0d4d\u200d \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Upper Alpha": "\u0d35\u0d32\u0d3f\u0d2f \u0d06\u0d32\u0d4d\u0d2b\u0d3e \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Upper Roman": "\u0d35\u0d32\u0d3f\u0d2f \u0d31\u0d4b\u0d2e\u0d28\u0d4d\u200d \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Anchor": "\u0d28\u0d19\u0d4d\u0d15\u0d42\u0d30\u0d02",
"Name": "\u0d2a\u0d47\u0d30\u0d4d",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.",
"You have unsaved changes are you sure you want to navigate away?": "\u0d30\u0d15\u0d4d\u0d37\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d3e\u0d24\u0d4d\u0d24 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d28\u0d3f\u0d32\u0d28\u0d3f\u0d32\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41. \u0d2a\u0d41\u0d31\u0d24\u0d4d\u0d24\u0d41 \u0d15\u0d1f\u0d15\u0d4d\u0d15\u0d23\u0d4b?",
"Restore last draft": "\u0d2a\u0d34\u0d2f \u0d21\u0d4d\u0d30\u0d3e\u0d2b\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d41 \u0d15\u0d4a\u0d23\u0d4d\u0d1f\u0d4d \u0d35\u0d30\u0d3f\u0d15",
"Special character": "\u0d2a\u0d4d\u0d30\u0d24\u0d4d\u0d2f\u0d47\u0d15\u0d3e\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Source code": "\u0d38\u0d4b\u0d34\u0d4d\u0d38\u0d4d \u0d15\u0d4b\u0d21\u0d4d",
"Insert\/Edit code sample": "Insert\/Edit code sample",
"Language": "\u0d2d\u0d3e\u0d37",
"Code sample": "Code sample",
"Color": "\u0d28\u0d3f\u0d31\u0d02",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d4d \u0d28\u0d3f\u0d28\u0d4d\u0d28\u0d41\u0d02 \u0d35\u0d32\u0d24\u0d4d\u0d24\u0d47\u0d15\u0d4d\u0d15\u0d4d",
"Right to left": "\u0d35\u0d32\u0d24\u0d4d\u0d24\u0d41 \u0d28\u0d3f\u0d28\u0d4d\u0d28\u0d41\u0d02 \u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d47\u0d15\u0d4d\u0d15\u0d4d",
"Emoticons": "\u0d1a\u0d3f\u0d39\u0d4d\u0d28 \u0d2d\u0d3e\u0d37",
"Document properties": "\u0d21\u0d4b\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d4d \u0d17\u0d41\u0d23\u0d35\u0d3f\u0d36\u0d47\u0d37\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Title": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d",
"Keywords": "\u0d38\u0d42\u0d1a\u0d15\u0d2a\u0d26\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Description": "\u0d35\u0d3f\u0d35\u0d30\u0d23\u0d02",
"Robots": "\u0d2f\u0d28\u0d4d\u0d24\u0d4d\u0d30\u0d2e\u0d28\u0d41\u0d37\u0d4d\u0d2f\u0d28\u0d4d\u200d",
"Author": "\u0d32\u0d47\u0d16\u0d15\u0d28\u0d4d\u200d",
"Encoding": "\u0d0e\u0d7b\u0d15\u0d4b\u0d21\u0d3f\u0d02\u0d17\u0d4d",
"Fullscreen": "\u0d2b\u0d41\u0d33\u0d4d\u200d\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d40\u0d28\u0d4d\u200d",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "\u0d36\u0d3e\u0d16\u0d3e\u0d2a\u0d3e\u0d24",
"Insert\/edit image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15\/ \u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Image description": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30 \u0d35\u0d3f\u0d35\u0d30\u0d23\u0d02",
"Source": "\u0d09\u0d31\u0d35\u0d3f\u0d1f\u0d02",
"Dimensions": "\u0d05\u0d33\u0d35\u0d41\u0d15\u0d33\u0d4d\u200d",
"Constrain proportions": "\u0d28\u0d3f\u0d30\u0d4d\u200d\u0d2c\u0d28\u0d4d\u0d27\u0d3e\u0d28\u0d41\u0d2a\u0d3e\u0d24\u0d02",
"General": "\u0d2a\u0d4a\u0d24\u0d41\u0d35\u0d3e\u0d2f",
"Advanced": "\u0d2a\u0d41\u0d30\u0d47\u0d3e\u0d17\u0d2e\u0d3f\u0d1a\u0d4d\u0d1a",
"Style": "\u0d36\u0d48\u0d32\u0d3f",
"Vertical space": "\u0d32\u0d02\u0d2c\u0d2e\u0d3e\u0d28\u0d2e\u0d3e\u0d2f \u0d36\u0d42\u0d28\u0d4d\u0d2f\u0d38\u0d4d\u0d25\u0d32\u0d02",
"Horizontal space": "\u0d24\u0d3f\u0d30\u0d36\u0d4d\u0d1a\u0d40\u0d28\u0d2e\u0d3e\u0d2f \u0d36\u0d42\u0d28\u0d4d\u0d2f\u0d38\u0d4d\u0d25\u0d32\u0d02",
"Border": "\u0d05\u0d24\u0d3f\u0d30\u0d4d",
"Insert image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d02",
"Image list": "Image list",
"Rotate counterclockwise": "\u0d0e\u0d24\u0d3f\u0d7c \u0d18\u0d1f\u0d3f\u0d15\u0d3e\u0d30\u0d26\u0d3f\u0d36\u0d2f\u0d3f\u0d7d \u0d24\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Rotate clockwise": "\u0d18\u0d1f\u0d3f\u0d15\u0d3e\u0d30\u0d26\u0d3f\u0d36\u0d2f\u0d3f\u0d7d \u0d24\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Flip vertically": "\u0d32\u0d02\u0d2c\u0d2e\u0d3e\u0d2f\u0d3f \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d41\u0d15",
"Flip horizontally": "\u0d24\u0d3f\u0d30\u0d36\u0d4d\u0d1a\u0d40\u0d28\u0d2e\u0d3e\u0d2f\u0d3f \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d1f\u0d41\u0d15",
"Edit image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d02 \u0d0e\u0d21\u0d3f\u0d31\u0d4d\u0d31\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
"Image options": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30 \u0d38\u0d3e\u0d27\u0d4d\u0d2f\u0d24\u0d15\u0d7e",
"Zoom in": "\u0d38\u0d42\u0d15\u0d4d\u0d37\u0d4d\u0d2e \u0d35\u0d40\u0d15\u0d4d\u0d37\u0d23\u0d02",
"Zoom out": "\u0d38\u0d4d\u0d25\u0d42\u0d32 \u0d35\u0d40\u0d15\u0d4d\u0d37\u0d23\u0d02",
"Crop": "\u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d3f \u0d1a\u0d41\u0d30\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Resize": "\u0d05\u0d33\u0d35\u0d41\u0d15\u0d7e \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15",
"Orientation": "\u0d05\u0d2d\u0d3f\u0d35\u0d3f\u0d28\u0d4d\u0d2f\u0d3e\u0d38\u0d02",
"Brightness": "\u0d2e\u0d3f\u0d34\u0d3f\u0d35\u0d4d",
"Sharpen": "\u0d24\u0d46\u0d33\u0d3f\u0d2e \u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d41\u0d15 ",
"Contrast": "\u0d35\u0d4d\u0d2f\u0d24\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d24\u0d24",
"Color levels": "\u0d35\u0d7c\u0d23\u0d4d\u0d23 \u0d28\u0d3f\u0d32\u0d15\u0d7e",
"Gamma": "\u0d17\u0d3e\u0d2e\u0d3e",
"Invert": "\u0d07\u0d7b\u0d35\u0d46\u0d7c\u0d1f\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
"Apply": "\u0d2a\u0d4d\u0d30\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Back": "\u0d2a\u0d3f\u0d7b\u0d35\u0d3e\u0d19\u0d4d\u0d19\u0d41\u0d15",
"Insert date\/time": "\u0d38\u0d2e\u0d2f\u0d02\/\u0d24\u0d40\u0d2f\u0d24\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Date\/time": "Date\/time",
"Insert link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Insert\/edit link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15\/ \u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Text to display": "\u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d28\u0d41\u0d33\u0d4d\u0d33 \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Url": "\u0d2f\u0d42\u0d06\u0d30\u0d4d\u200d\u0d0e\u0d32\u0d4d\u200d",
"Target": "\u0d32\u0d15\u0d4d\u0d37\u0d4d\u0d2f\u0d02",
"None": "\u0d12\u0d28\u0d4d\u0d28\u0d41\u0d2e\u0d3f\u0d32\u0d4d\u0d32",
"New window": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1c\u0d3e\u0d32\u0d15\u0d02",
"Remove link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d12\u0d34\u0d3f\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Anchors": "\u0d28\u0d19\u0d4d\u0d15\u0d42\u0d30\u0d19\u0d4d\u0d19\u0d7e",
"Link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f ",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
"Link list": "Link list",
"Insert video": "\u0d35\u0d40\u0d21\u0d3f\u0d2f\u0d4b \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Insert\/edit video": "\u0d35\u0d40\u0d21\u0d3f\u0d2f\u0d4b \u0d1a\u0d46\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15\/\u0d35\u0d40\u0d21\u0d3f\u0d2f\u0d4b \u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Insert\/edit media": "Insert\/edit media",
"Alternative source": "\u0d07\u0d24\u0d30 \u0d38\u0d4d\u0d30\u0d4b\u0d24\u0d38\u0d4d\u0d38\u0d4d\u200c",
"Poster": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d02",
"Paste your embed code below:": "\u0d28\u0d3f\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d0e\u0d02\u0d2c\u0d21\u0d4d \u0d15\u0d4b\u0d21\u0d4d \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Embed": "\u0d0e\u0d02\u0d2c\u0d46\u0d21\u0d4d\u200c",
"Media": "Media",
"Nonbreaking space": "\u0d2d\u0d02\u0d17\u0d2e\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d36\u0d42\u0d28\u0d4d\u0d2f\u0d38\u0d4d\u0d25\u0d32\u0d02",
"Page break": "\u0d24\u0d3e\u0d33\u0d4d\u200d \u0d2d\u0d02\u0d17\u0d02",
"Paste as text": "\u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d06\u0d2f\u0d3f \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Preview": "\u0d15\u0d30\u0d1f\u0d41\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d",
"Print": "\u0d05\u0d1a\u0d4d\u0d1a\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Save": "\u0d30\u0d15\u0d4d\u0d37\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Find": "\u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15",
"Replace with": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d28\u0d4d\u0d28\u0d3f\u0d28\u0d4b\u0d1f\u0d4d \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Replace": "\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Replace all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Prev": "\u0d2a\u0d3f\u0d28\u0d4d\u0d28\u0d4b\u0d1f\u0d4d\u0d1f\u0d4d",
"Next": "\u0d2e\u0d41\u0d28\u0d4d\u0d28\u0d4b\u0d1f\u0d4d\u0d1f\u0d4d",
"Find and replace": "\u0d15\u0d23\u0d4d\u0d1f\u0d41\u0d2a\u0d3f\u0d1f\u0d3f\u0d1a\u0d4d\u0d1a\u0d41 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Could not find the specified string.": "\u0d09\u0d26\u0d4d\u0d26\u0d47\u0d36\u0d3f\u0d1a\u0d4d\u0d1a \u0d35\u0d3e\u0d1a\u0d15\u0d02 \u0d15\u0d23\u0d4d\u0d1f\u0d41\u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d28\u0d3e\u0d2f\u0d3f\u0d32\u0d4d\u0d32.",
"Match case": "\u0d24\u0d41\u0d32\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f\u0d24\u0d4d",
"Whole words": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e \u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d33\u0d41\u0d02",
"Spellcheck": "\u0d05\u0d15\u0d4d\u0d37\u0d30\u0d35\u0d3f\u0d28\u0d4d\u0d2f\u0d3e\u0d38\u0d02 \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Ignore": "\u0d05\u0d35\u0d17\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Ignore all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02 \u0d05\u0d35\u0d17\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Finish": "\u0d05\u0d35\u0d38\u0d3e\u0d28\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Add to Dictionary": "Add to Dictionary",
"Insert table": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15 \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Table properties": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d2f\u0d41\u0d1f\u0d46 \u0d38\u0d4d\u0d35\u0d2d\u0d3e\u0d35\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Delete table": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15 \u0d15\u0d33\u0d2f\u0d41\u0d15",
"Cell": "\u0d05\u0d31",
"Row": "\u0d28\u0d3f\u0d30",
"Column": "\u0d35\u0d30\u0d3f",
"Cell properties": "\u0d05\u0d31\u0d2f\u0d41\u0d1f\u0d46 \u0d38\u0d4d\u0d35\u0d2d\u0d3e\u0d35\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Merge cells": "\u0d05\u0d31\u0d15\u0d33\u0d4d\u200d \u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d4b\u0d1c\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Split cell": "\u0d05\u0d31\u0d15\u0d33\u0d4d\u200d \u0d35\u0d3f\u0d2d\u0d1c\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Insert row before": "\u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d28\u0d3f\u0d30 \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Insert row after": "\u0d2a\u0d3f\u0d31\u0d15\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d28\u0d3f\u0d30 \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Delete row": "\u0d28\u0d3f\u0d30 \u0d24\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d33\u0d2f\u0d41\u0d15",
"Row properties": "\u0d28\u0d3f\u0d30\u0d2f\u0d41\u0d1f\u0d46 \u0d38\u0d4d\u0d35\u0d2d\u0d3e\u0d35\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
"Cut row": "\u0d28\u0d3f\u0d30 \u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d3f\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15",
"Copy row": "\u0d28\u0d3f\u0d30 \u0d2a\u0d15\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Paste row before": "\u0d28\u0d3f\u0d30 \u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d3e\u0d2f\u0d3f \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Paste row after": "\u0d28\u0d3f\u0d30 \u0d36\u0d47\u0d37\u0d02 \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Insert column before": "\u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d35\u0d30\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Insert column after": "\u0d2a\u0d3f\u0d31\u0d15\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d35\u0d30\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Delete column": "\u0d35\u0d30\u0d3f \u0d24\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d33\u0d2f\u0d41\u0d15",
"Cols": "\u0d35\u0d30\u0d3f\u0d15\u0d33\u0d4d\u200d",
"Rows": "\u0d28\u0d3f\u0d30\u0d15\u0d33\u0d4d\u200d",
"Width": "\u0d28\u0d40\u0d33\u0d02",
"Height": "\u0d09\u0d2f\u0d30\u0d02",
"Cell spacing": "\u0d05\u0d31\u0d15\u0d33\u0d4d\u200d \u0d24\u0d2e\u0d4d\u0d2e\u0d3f\u0d32\u0d41\u0d33\u0d4d\u0d33 \u0d05\u0d15\u0d32\u0d02",
"Cell padding": "\u0d05\u0d31 \u0d2a\u0d3e\u0d21\u0d3f\u0d02\u0d17\u0d4d",
"Caption": "\u0d24\u0d32\u0d35\u0d3e\u0d1a\u0d15\u0d02",
"Left": "\u0d07\u0d1f\u0d24\u0d4d",
"Center": "\u0d28\u0d1f\u0d41\u0d35\u0d3f\u0d32\u0d4d\u200d",
"Right": "\u0d35\u0d32\u0d24\u0d4d",
"Cell type": "\u0d05\u0d31\u0d2f\u0d41\u0d1f\u0d46 \u0d2e\u0d3e\u0d24\u0d43\u0d15",
"Scope": "\u0d35\u0d4d\u0d2f\u0d3e\u0d2a\u0d4d\u200c\u0d24\u0d3f",
"Alignment": "\u0d05\u0d23\u0d3f\u0d28\u0d3f\u0d30\u0d24\u0d4d\u0d24\u0d41\u0d15",
"H Align": "H Align",
"V Align": "V Align",
"Top": "Top",
"Middle": "Middle",
"Bottom": "Bottom",
"Header cell": "\u0d24\u0d32 \u0d05\u0d31",
"Row group": "\u0d28\u0d3f\u0d30 \u0d17\u0d23\u0d02",
"Column group": "\u0d35\u0d30\u0d3f \u0d17\u0d23\u0d02",
"Row type": "\u0d28\u0d3f\u0d30 \u0d2e\u0d3e\u0d24\u0d43\u0d15",
"Header": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c",
"Body": "\u0d36\u0d30\u0d40\u0d30\u0d02",
"Footer": "\u0d05\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d31\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d\u200c",
"Border color": "Border color",
"Insert template": "\u0d05\u0d1a\u0d4d\u0d1a\u0d41\u0d15\u0d33\u0d4d\u200d \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Templates": "\u0d05\u0d1a\u0d4d\u0d1a\u0d41\u0d15\u0d33\u0d4d\u200d",
"Template": "Template",
"Text color": "\u0d05\u0d15\u0d4d\u0d37\u0d30 \u0d28\u0d3f\u0d31\u0d02",
"Background color": "\u0d2a\u0d36\u0d4d\u0d1a\u0d3e\u0d24\u0d4d\u0d24\u0d32 \u0d28\u0d3f\u0d31\u0d02",
"Custom...": "Custom...",
"Custom color": "Custom color",
"No color": "No color",
"Table of Contents": "Table of Contents",
"Show blocks": "\u0d2c\u0d4d\u0d32\u0d4b\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d33\u0d4d\u200d \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Show invisible characters": "\u0d05\u0d26\u0d43\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"Words: {0}": "\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d33\u0d4d\u200d: {0}",
"{0} words": "{0} words",
"File": "\u0d2b\u0d2f\u0d32\u0d4d\u200d",
"Edit": "\u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
"Insert": "\u0d2a\u0d24\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
"View": "\u0d26\u0d30\u0d4d\u200d\u0d36\u0d28\u0d02",
"Format": "\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d02\u0d2e\u0d1f\u0d4d\u0d1f\u0d41\u0d02",
"Table": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
"Tools": "\u0d09\u0d2a\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d ",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0d31\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d2e\u0d47\u0d16\u0d32.  \u0d35\u0d3f\u0d37\u0d2f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15 \u0d15\u0d4d\u0d15\u0d3e\u0d2f\u0d3f ALT-F9  \u0d05\u0d2e\u0d30\u0d4d\u0d24\u0d4d\u0d24\u0d41\u0d15. \u0d09\u0d2a\u0d15\u0d30\u0d23 \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d15\u0d4d\u0d15\u0d3e\u0d2f\u0d3f ALT-F10 \u0d05\u0d2e\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15.  \u0d38\u0d39\u0d3e\u0d2f\u0d24\u0d4d\u0d24\u0d3f\u0d28\u0d41 ALT-0 \u0d09\u0d02"
});js/tinymce/langs/fo.js000064400000017556151727150350010722 0ustar00tinymce.addI18n('fo',{
"Cut": "Klipp",
"Heading 5": "Yvirskrift 5",
"Header 2": "H\u00f8vd 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "T\u00edn kagi hevur ikki beinlei\u00f0is atgongd til setibor\u00f0i\u00f0. Vinarliga br\u00faka CTRL+X\/C\/V snarvegirnar \u00edsta\u00f0in.",
"Heading 4": "Yvirskrift 4",
"Div": "DIv",
"Heading 2": "Yvirskrift 2",
"Paste": "L\u00edma",
"Close": "Lat aftur",
"Font Family": "Stav familja",
"Pre": "Pre",
"Align right": "H\u00f8gra stilla",
"New document": "N\u00fdtt skjal",
"Blockquote": "Blokksitat",
"Numbered list": "Tal listi",
"Heading 1": "Yvirskrift 1",
"Headings": "Yvirskriftir",
"Increase indent": "Vaks inndr\u00e1tt",
"Formats": "Sni\u00f0",
"Headers": "H\u00f8vd",
"Select all": "Vel alt",
"Header 3": "H\u00f8vd 3",
"Blocks": "Blokkar",
"Undo": "Angra ger",
"Strikethrough": "Strika \u00edgj\u00f8gnum",
"Bullet list": "Punkt listi",
"Header 1": "H\u00f8vd 1",
"Superscript": "H\u00e1skrift",
"Clear formatting": "Strika sni\u00f0",
"Font Sizes": "Stav st\u00f8dd",
"Subscript": "L\u00e1gskrift",
"Header 6": "H\u00f8vd 6",
"Redo": "Ger aftur",
"Paragraph": "T\u00e1ttur",
"Ok": "Ok",
"Bold": "Feit",
"Code": "Kota",
"Italic": "Sk\u00e1ktekstur",
"Align center": "Mi\u00f0set",
"Header 5": "H\u00f8vd 5",
"Heading 6": "Yvirskrift 6",
"Heading 3": "Yvirskrift 3",
"Decrease indent": "Minka inndr\u00e1tt",
"Header 4": "H\u00f8vd 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Klistra er n\u00fa \u00ed vanligum tekst standi. Innihald ver\u00f0ur n\u00fa klistra sum vanligur tekstur, inntil t\u00fa sl\u00f8kkir hendan standin.",
"Underline": "Undirstrika",
"Cancel": "\u00d3gilda",
"Justify": "L\u00edka breddar",
"Inline": "\u00cd linju",
"Copy": "Avrita",
"Align left": "Vinstra stilla",
"Visual aids": "Sj\u00f3nhj\u00e1lp",
"Lower Greek": "L\u00edti Grikskt",
"Square": "Fj\u00f3rhyrningur",
"Default": "Forsettur",
"Lower Alpha": "L\u00edti Alfa",
"Circle": "Ringur",
"Disc": "Skiva",
"Upper Alpha": "St\u00f3rt Alfa",
"Upper Roman": "St\u00f3rt R\u00f3mverskt",
"Lower Roman": "L\u00edti R\u00f3mverskt",
"Name": "Navn",
"Anchor": "Akker",
"You have unsaved changes are you sure you want to navigate away?": "T\u00fa hevur broytingar, i\u00f0 ikki eru goymdar. Ert t\u00fa v\u00edsur \u00ed at t\u00fa vilt halda fram?",
"Restore last draft": "Endurskapa seinasta uppkast",
"Special character": "Serst\u00f8k tekn",
"Source code": "keldukota",
"B": "B",
"R": "R",
"G": "G",
"Color": "Litur",
"Right to left": "H\u00f8gra til vinstra",
"Left to right": "Vinstra til h\u00f8gra",
"Emoticons": "Emotikonur",
"Robots": "Robottar",
"Document properties": "Skjal eginleikar",
"Title": "Heiti",
"Keywords": "Leitior\u00f0",
"Encoding": "Koding",
"Description": "L\u00fdsing",
"Author": "H\u00f8vundur",
"Fullscreen": "Fullan sk\u00edggja",
"Horizontal line": "Vatnr\u00f8tt linja",
"Horizontal space": "Vatnr\u00e6tt fr\u00e1st\u00f8\u00f0a",
"Insert\/edit image": "Innset\/r\u00e6tta mynd",
"General": "Vanligt",
"Advanced": "Framkomi",
"Source": "Kelda",
"Border": "Rammi",
"Constrain proportions": "Var\u00f0veit lutfall",
"Vertical space": "Loddr\u00e6t fr\u00e1st\u00f8\u00f0a",
"Image description": "L\u00fdsing av mynd",
"Style": "St\u00edlur",
"Dimensions": "St\u00f8dd",
"Insert image": "Innset mynd",
"Zoom in": "Draga inn",
"Contrast": "M\u00f3tsetningur",
"Back": "Aftur",
"Gamma": "Gamma",
"Flip horizontally": "Vippa vatnr\u00e6tt",
"Resize": "Broyt st\u00f8dd",
"Sharpen": "Skerpa",
"Zoom out": "Draga \u00fat",
"Image options": "Mynda valm\u00f8guleikar",
"Apply": "Set \u00e1",
"Brightness": "Lj\u00f3s",
"Rotate clockwise": "Mal runt vi\u00f0 klokkuni",
"Rotate counterclockwise": "Mal runt \u00edm\u00f3ti klokkuni",
"Edit image": "R\u00e6tta mynd",
"Color levels": "Lit stig",
"Crop": "Klipp av",
"Orientation": "Helling",
"Flip vertically": "Vippa loddr\u00e6tt",
"Invert": "Vend \u00f8vut",
"Insert date\/time": "Innset dag\/t\u00ed\u00f0",
"Remove link": "Strika leinki",
"Url": "Url",
"Text to display": "Tekstur at v\u00edsa",
"Anchors": "Akker",
"Insert link": "Innset leinki",
"New window": "N\u00fdggjan glugga",
"None": "Eingin",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Tann URL t\u00fa skriva\u00f0i s\u00e6r \u00fat til at ver\u00f0a ein uttanh\u00fdsis adressa. Ynskir t\u00fa at seta ta\u00f0 kravda http:\/\/ forskoyti frammanfyri?",
"Target": "M\u00e1l",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Tann URL t\u00fa skriva\u00f0i s\u00e6r \u00fat til at vera ein teldupost adressa. Ynskir t\u00fa at seta ta\u00f0 kravda mailto: forskoyti frammanfyri?",
"Insert\/edit link": "Innset\/r\u00e6tta leinki",
"Insert\/edit video": "Innset\/r\u00e6tta kykmynd",
"Poster": "Uppslag",
"Alternative source": "Onnur kelda",
"Paste your embed code below:": "Innset ta\u00f0 kodu, sum skal leggjast inn \u00ed, ni\u00f0anfyri:",
"Insert video": "Innset kykmynd",
"Embed": "Legg inn \u00ed",
"Nonbreaking space": "Hart millumr\u00fam",
"Page break": "S\u00ed\u00f0uskift",
"Paste as text": "Klistra sum tekst",
"Preview": "V\u00eds frammanundan",
"Print": "Prenta",
"Save": "Goym",
"Could not find the specified string.": "Kundi ikki finna leititekst",
"Replace": "Skift \u00fat",
"Next": "N\u00e6sta",
"Whole words": "Heil or\u00f0",
"Find and replace": "Finn og skift \u00fat",
"Replace with": "Set \u00edsta\u00f0in",
"Find": "Finn",
"Replace all": "Skift alt \u00fat",
"Match case": "Samsvara st\u00f3rar og l\u00edtlar b\u00f3kstavir",
"Prev": "Fyrra",
"Spellcheck": "R\u00e6ttstavari",
"Finish": "Enda",
"Ignore all": "Leyp alt um",
"Ignore": "Leyp um",
"Add to Dictionary": "Legg til or\u00f0ab\u00f3k",
"Insert row before": "Innset ra\u00f0 \u00e1\u00f0renn",
"Rows": "R\u00f8\u00f0",
"Height": "H\u00e6dd",
"Paste row after": "L\u00edma ra\u00f0 aftan\u00e1",
"Alignment": "Stilling",
"Border color": "Kant litur",
"Column group": "Teig b\u00f3lkur",
"Row": "Ra\u00f0",
"Insert column before": "Innset teig \u00e1\u00f0renn",
"Split cell": "Syndra puntar",
"Cell padding": "Punt fylling",
"Cell spacing": "Punt fr\u00e1st\u00f8\u00f0a",
"Row type": "Ra\u00f0 slag",
"Insert table": "Innset talvu",
"Body": "Likam",
"Caption": "Tekstur",
"Footer": "F\u00f3tur",
"Delete row": "Skrika ra\u00f0",
"Paste row before": "L\u00edma ra\u00f0 \u00e1\u00f0renn",
"Scope": "N\u00fdtslu\u00f8ki",
"Delete table": "Strika talvu",
"H Align": "Vatnr\u00e6tt stilla",
"Top": "Ovast",
"Header cell": "H\u00f8vd puntur",
"Column": "Teigur",
"Row group": "Ra\u00f0 b\u00f3lkur",
"Cell": "Puntur",
"Middle": "\u00cd mi\u00f0juni",
"Cell type": "Punt slag",
"Copy row": "Avrita ra\u00f0",
"Row properties": "Ra\u00f0 eginleikar",
"Table properties": "Talvu eginleikar",
"Bottom": "Ni\u00f0ast",
"V Align": "Loddr\u00e6tt stilla",
"Header": "H\u00f8vd",
"Right": "H\u00f8gra",
"Insert column after": "Innset teig aftan\u00e1",
"Cols": "Teigar",
"Insert row after": "Innset ra\u00f0 aftan\u00e1",
"Width": "Breidd",
"Cell properties": "Punt eginleikar",
"Left": "Vinstra",
"Cut row": "Klipp ra\u00f0",
"Delete column": "Strika teig",
"Center": "Mi\u00f0a",
"Merge cells": "Fl\u00e6tta puntar",
"Insert template": "Innset form",
"Templates": "Formur",
"Background color": "Bakgrundslitur",
"Custom...": "Laga til...",
"Custom color": "Tillaga lit",
"No color": "Eingin litur",
"Text color": "Tekst litur",
"Show blocks": "V\u00eds blokkar",
"Show invisible characters": "V\u00eds \u00f3sj\u00f3nlig tekn",
"Words: {0}": "Or\u00f0: {0}",
"Insert": "Innset",
"File": "F\u00edla",
"Edit": "Ritstj\u00f3rna",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "R\u00edkt Tekst \u00d8ki. Tr\u00fdst ALT-F9 fyri valmynd. Tr\u00fdst ALT-F10 fyri ambo\u00f0slinju. Tr\u00fdst ALT-0 fyri hj\u00e1lp",
"Tools": "Ambo\u00f0",
"View": "V\u00eds",
"Table": "Talva",
"Format": "Sni\u00f0"
});js/tinymce/langs/ka_GE.js000064400000054426151727150360011262 0ustar00tinymce.addI18n('ka_GE',{
"Cut": "\u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
"Heading 5": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 5",
"Header 2": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e1 \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1 \u10d1\u10e3\u10e4\u10e0\u10e2\u10e8\u10d8 \u10e8\u10d4\u10ee\u10ec\u10d4\u10d5\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0. \u10d2\u10d7\u10ee\u10dd\u10d5\u10d7 \u10e1\u10d0\u10dc\u10d0\u10ea\u10d5\u10da\u10dd\u10d3 \u10d8\u10e1\u10d0\u10e0\u10d2\u10d4\u10d1\u10da\u10dd\u10d7 Ctrl+X\/C\/V \u10db\u10d0\u10da\u10e1\u10d0\u10ee\u10db\u10dd\u10d1\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d4\u10d1\u10d8\u10d7.",
"Heading 4": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 4",
"Div": "\u10d2\u10d0\u10dc\u10d0\u10ec\u10d8\u10da\u10d4\u10d1\u10d0",
"Heading 2": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 2",
"Paste": "\u10e9\u10d0\u10e1\u10db\u10d0",
"Close": "\u10d3\u10d0\u10ee\u10e3\u10e0\u10d5\u10d0",
"Font Family": "\u10e4\u10dd\u10dc\u10e2\u10d8",
"Pre": "\u10de\u10e0\u10d4\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8",
"Align right": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
"New document": "\u10d0\u10ee\u10d0\u10da\u10d8 \u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8",
"Blockquote": "\u10d1\u10da\u10dd\u10d9\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10ea\u10d8\u10e2\u10d0\u10e2\u10d0",
"Numbered list": "\u10d3\u10d0\u10dc\u10dd\u10db\u10e0\u10d8\u10da\u10d8 \u10e1\u10d8\u10d0",
"Heading 1": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 1",
"Headings": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",
"Increase indent": "\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1 \u10d2\u10d0\u10d6\u10e0\u10d3\u10d0",
"Formats": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8",
"Headers": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d4\u10d1\u10d8",
"Select all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10db\u10dd\u10e6\u10dc\u10d8\u10e8\u10d5\u10dc\u10d0",
"Header 3": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 3",
"Blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8",
"Undo": "\u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Strikethrough": "\u10e8\u10e3\u10d0 \u10ee\u10d0\u10d6\u10d8",
"Bullet list": "\u10d1\u10e3\u10da\u10d4\u10e2 \u10e1\u10d8\u10d0",
"Header 1": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 1",
"Superscript": "\u10d6\u10d4\u10d3\u10d0 \u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
"Clear formatting": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e1\u10e3\u10e4\u10d7\u10d0\u10d5\u10d4\u10d1\u10d0",
"Font Sizes": "\u10e4\u10dd\u10dc\u10e2\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0",
"Subscript": "\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
"Header 6": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 6",
"Redo": "\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",
"Paragraph": "\u10de\u10d0\u10e0\u10d0\u10d2\u10e0\u10d0\u10e4\u10d8",
"Ok": "\u10d9\u10d0\u10e0\u10d2\u10d8",
"Bold": "\u10db\u10d9\u10d5\u10d4\u10d7\u10e0\u10d8",
"Code": "\u10d9\u10dd\u10d3\u10d8",
"Italic": "\u10d3\u10d0\u10ee\u10e0\u10d8\u10da\u10d8",
"Align center": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
"Header 5": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 5",
"Heading 6": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 6",
"Heading 3": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 3",
"Decrease indent": "\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1 \u10e8\u10d4\u10db\u10ea\u10d8\u10e0\u10d4\u10d1\u10d0",
"Header 4": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0 \u10e9\u10d5\u10d4\u10e3\u10da\u10d4\u10d1\u10e0\u10d8\u10d5 \u10e0\u10d4\u10df\u10d8\u10db\u10e8\u10d8\u10d0. \u10e2\u10d4\u10e5\u10e1\u10e2\u10d8 \u10e9\u10d0\u10d8\u10e1\u10db\u10d4\u10d5\u10d0 \u10e3\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10dd\u10d7 \u10e1\u10d0\u10dc\u10d0\u10db \u10d0\u10db \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d0\u10e1 \u10d0\u10e0 \u10d2\u10d0\u10d7\u10d8\u10e8\u10d0\u10d5\u10d7.",
"Underline": "\u10e5\u10d5\u10d4\u10d3\u10d0 \u10ee\u10d0\u10d6\u10d8",
"Cancel": "\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0",
"Justify": "\u10d2\u10d0\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",
"Inline": "\u10ee\u10d0\u10d6\u10e8\u10d8\u10d3\u10d0",
"Copy": "\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
"Align left": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
"Visual aids": "\u10d5\u10d8\u10d6\u10e3\u10d0\u10da\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0",
"Lower Greek": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10d1\u10d4\u10e0\u10eb\u10dc\u10e3\u10da\u10d8",
"Square": "\u10d9\u10d5\u10d0\u10d3\u10e0\u10d0\u10e2\u10d8",
"Default": "\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8",
"Lower Alpha": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10d0\u10da\u10e4\u10d0",
"Circle": "\u10ec\u10e0\u10d4",
"Disc": "\u10d3\u10d8\u10e1\u10d9\u10d8",
"Upper Alpha": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8 \u10d0\u10da\u10e4\u10d0",
"Upper Roman": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8 \u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
"Lower Roman": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "id \u10e3\u10dc\u10d3\u10d0 \u10d8\u10ec\u10e7\u10d4\u10d1\u10dd\u10d3\u10d4\u10e1 \u10d0\u10e1\u10dd\u10d7\u10d8, \u10e0\u10dd\u10db\u10d4\u10da\u10e1\u10d0\u10ea \u10db\u10dd\u10e7\u10d5\u10d4\u10d1\u10d0 \u10db\u10ee\u10dd\u10da\u10dd\u10d3 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8, \u10ea\u10d8\u10e4\u10e0\u10d4\u10d1\u10d8, \u10e2\u10d8\u10e0\u10d4, \u10ec\u10d4\u10e0\u10e2\u10d8\u10da\u10d4\u10d1\u10d8, \u10dd\u10e0\u10d8 \u10ec\u10d4\u10e0\u10e2\u10d8\u10da\u10d8 \u10d0\u10dc \u10e5\u10d5\u10d4\u10d3\u10d0 \u10e2\u10d8\u10e0\u10d4. ",
"Name": "\u10e1\u10d0\u10ee\u10d4\u10da\u10d8",
"Anchor": "\u10e6\u10e3\u10d6\u10d0",
"Id": "id",
"You have unsaved changes are you sure you want to navigate away?": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10d2\u10d0\u10e5\u10d5\u10d7 \u10e8\u10d4\u10e3\u10dc\u10d0\u10ee\u10d0\u10d5\u10d8 \u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10d1\u10d8, \u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d4\u10d1\u10e3\u10da\u10d8 \u10ee\u10d0\u10d7 \u10e0\u10dd\u10db \u10e1\u10ee\u10d5\u10d0\u10d2\u10d0\u10dc \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0 \u10d2\u10e1\u10e3\u10e0\u10d7?",
"Restore last draft": "\u10d1\u10dd\u10da\u10dd\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10e3\u10da\u10d8\u10e1 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d0",
"Special character": "\u10e1\u10de\u10d4\u10ea\u10d8\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd",
"Source code": "\u10ec\u10e7\u10d0\u10e0\u10dd\u10e1 \u10d9\u10dd\u10d3\u10d8",
"Language": "\u10d4\u10dc\u10d0",
"Insert\/Edit code sample": "\u10e9\u10d0\u10e1\u10d5\u10d8\/\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10d9\u10dd\u10d3\u10d8\u10e1 \u10db\u10d0\u10d2\u10d0\u10da\u10d8\u10d7\u10d8",
"B": "\u10da",
"R": "\u10ec",
"G": "\u10db",
"Color": "\u10e4\u10d4\u10e0\u10d8",
"Right to left": "\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
"Left to right": "\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
"Emoticons": "\u10e1\u10db\u10d0\u10d8\u10da\u10d8\u10d9\u10d4\u10d1\u10d8",
"Robots": "\u10e0\u10dd\u10d1\u10dd\u10d4\u10d1\u10d8",
"Document properties": "\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Title": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",
"Keywords": "\u10e1\u10d0\u10d9\u10d5\u10d0\u10dc\u10eb\u10dd \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
"Encoding": "\u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",
"Description": "\u10d0\u10ee\u10ec\u10d4\u10e0\u10d0",
"Author": "\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8",
"Fullscreen": "\u10e1\u10d0\u10d5\u10e1\u10d4 \u10d4\u10d9\u10e0\u10d0\u10dc\u10d8",
"Horizontal line": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10ee\u10d0\u10d6\u10d8",
"Horizontal space": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
"Insert\/edit image": "\u10e9\u10d0\u10e1\u10d5\u10d8\/\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10e1\u10e3\u10e0\u10d0\u10d7\u10d8",
"General": "\u10db\u10d7\u10d0\u10d5\u10d0\u10e0\u10d8",
"Advanced": "\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8",
"Source": "\u10d1\u10db\u10e3\u10da\u10d8",
"Border": "\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",
"Constrain proportions": "\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d0\u10ea\u10d5\u10d0",
"Vertical space": "\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
"Image description": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10d3\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10d0",
"Style": "\u10e1\u10e2\u10d8\u10da\u10d8",
"Dimensions": "\u10d2\u10d0\u10dc\u10d6\u10dd\u10db\u10d8\u10da\u10d4\u10d1\u10d0",
"Insert image": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
"Image": "\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",
"Zoom in": "\u10d2\u10d0\u10d3\u10d8\u10d3\u10d8\u10d4\u10d1\u10d0",
"Contrast": "\u10d9\u10dd\u10dc\u10e2\u10e0\u10d0\u10e1\u10e2\u10d8",
"Back": "\u10e3\u10d9\u10d0\u10dc",
"Gamma": "\u10d2\u10d0\u10db\u10d0",
"Flip horizontally": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d0\u10d3 \u10e8\u10d4\u10e2\u10e0\u10d8\u10d0\u10da\u10d4\u10d1\u10d0",
"Resize": "\u10d6\u10dd\u10db\u10d8\u10e1 \u10e8\u10d4\u10ea\u10d5\u10da\u10d0",
"Sharpen": "\u10d2\u10d0\u10da\u10d4\u10e1\u10d5\u10d0",
"Zoom out": "\u10d3\u10d0\u10de\u10d0\u10e2\u10d0\u10e0\u10d0\u10d5\u10d4\u10d1\u10d0",
"Image options": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",
"Apply": "\u10db\u10d8\u10e6\u10d4\u10d1\u10d0",
"Brightness": "\u10e1\u10d8\u10d9\u10d0\u10e8\u10d9\u10d0\u10e8\u10d4",
"Rotate clockwise": "\u10e1\u10d0\u10d0\u10d7\u10d8\u10e1 \u10d8\u10e1\u10e0\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d8\u10d7 \u10db\u10dd\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Rotate counterclockwise": "\u10e1\u10d0\u10d0\u10d7\u10d8\u10e1 \u10d8\u10e1\u10e0\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d0\u10ec\u10d8\u10dc\u10d0\u10d0\u10e6\u10db\u10d3\u10d4\u10d2\u10dd\u10d2 \u10db\u10dd\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Edit image": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
"Color levels": "\u10e4\u10d4\u10e0\u10d8\u10e1 \u10d3\u10dd\u10dc\u10d4",
"Crop": "\u10db\u10dd\u10ed\u10e0\u10d0",
"Orientation": "\u10dd\u10e0\u10d8\u10d4\u10dc\u10e2\u10d0\u10ea\u10d8\u10d0",
"Flip vertically": "\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d0\u10d3 \u10d0\u10e2\u10e0\u10d8\u10d0\u10da\u10d4\u10d1\u10d0",
"Invert": "\u10e8\u10d4\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
"Date\/time": "\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\/\u10d3\u10e0\u10dd",
"Insert date\/time": "\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\/\u10d3\u10e0\u10dd\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
"Remove link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
"Url": "Url",
"Text to display": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",
"Anchors": "\u10e6\u10e3\u10d6\u10d0",
"Insert link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
"Link": "\u10d1\u10db\u10e3\u10da\u10d8",
"New window": "\u10d0\u10ee\u10d0\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8",
"None": "\u10d0\u10e0\u10ea\u10d4\u10e0\u10d7\u10d8",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u10d7\u10e5\u10d5\u10d4\u10dc\u10e1 \u10db\u10d8\u10d4\u10e0 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10ec\u10d0\u10e0\u10db\u10dd\u10d0\u10d3\u10d2\u10d4\u10dc\u10e1 \u10d2\u10d0\u10e0\u10d4 \u10d1\u10db\u10e3\u10da\u10e1. \u10d2\u10e1\u10e3\u10e0\u10d7, \u10e0\u10dd\u10db \u10db\u10d8\u10d5\u10d0\u10dc\u10d8\u10ed\u10dd http:\/\/ \u10e4\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8?",
"Paste or type a link": "\u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d0\u10dc \u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10d1\u10db\u10e3\u10da\u10d8",
"Target": "\u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10db\u10d8\u10e3\u10d7\u10d8\u10d7\u10d4\u10d7 \u10d4\u10da-\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10dc\u10d0\u10ea\u10d5\u10da\u10d0\u10d3 \u10d5\u10d4\u10d1-\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1\u10d0. \u10d2\u10e1\u10e3\u10e0\u10d7, \u10e0\u10dd\u10db \u10db\u10d8\u10d5\u10d0\u10dc\u10d8\u10ed\u10dd mailto: \u10e4\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8?",
"Insert\/edit link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d0",
"Insert\/edit video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
"Media": "\u10db\u10d4\u10d3\u10d8\u10d0",
"Alternative source": "\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd",
"Paste your embed code below:": "\u10d0\u10e5 \u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d9\u10dd\u10d3\u10d8:",
"Insert video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
"Poster": "\u10de\u10da\u10d0\u10d9\u10d0\u10e2\u10d8",
"Insert\/edit media": "\u10db\u10d4\u10d3\u10d8\u10d0\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
"Embed": "\u10e9\u10d0\u10e8\u10d4\u10dc\u10d4\u10d1\u10d0",
"Nonbreaking space": "\u10e3\u10ec\u10e7\u10d5\u10d4\u10e2\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
"Page break": "\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d2\u10d0\u10ec\u10e7\u10d5\u10d4\u10e2\u10d0",
"Paste as text": "\u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10e0\u10dd\u10d2\u10dd\u10e0\u10ea \u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",
"Preview": "\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0 \u10dc\u10d0\u10ee\u10d5\u10d0",
"Print": "\u10d0\u10db\u10dd\u10d1\u10d4\u10ed\u10d5\u10d3\u10d0",
"Save": "\u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",
"Could not find the specified string.": "\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e9\u10d0\u10dc\u10d0\u10ec\u10d4\u10e0\u10d8 \u10d5\u10d4\u10e0 \u10db\u10dd\u10d8\u10eb\u10d4\u10d1\u10dc\u10d0.",
"Replace": "\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Next": "\u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8",
"Whole words": "\u10e1\u10e0\u10e3\u10da\u10d8 \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
"Find and replace": "\u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d4 \u10d3\u10d0 \u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4",
"Replace with": "\u10e8\u10d4\u10e1\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10e1\u10d8\u10e2\u10e7\u10d5\u10d0",
"Find": "\u10eb\u10d4\u10d1\u10dc\u10d0",
"Replace all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Match case": "\u10d3\u10d0\u10d0\u10db\u10d7\u10ee\u10d5\u10d8\u10d4 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0",
"Prev": "\u10ec\u10d8\u10dc\u10d0",
"Spellcheck": "\u10db\u10d0\u10e0\u10d7\u10da\u10ec\u10d4\u10e0\u10d8\u10e1 \u10e8\u10d4\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0",
"Finish": "\u10d3\u10d0\u10e1\u10d0\u10e1\u10e0\u10e3\u10da\u10d8",
"Ignore all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
"Ignore": "\u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
"Add to Dictionary": "\u10da\u10d4\u10e5\u10e1\u10d8\u10d9\u10dd\u10dc\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Insert row before": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Rows": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",
"Height": "\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",
"Paste row after": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
"Alignment": "\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Border color": "\u10e1\u10d0\u10d6\u10d0\u10e0\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",
"Column group": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",
"Row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8",
"Insert column before": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Split cell": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e7\u10dd\u10e4\u10d0",
"Cell padding": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10e4\u10d0\u10e0\u10d7\u10dd\u10d1\u10d8",
"Cell spacing": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",
"Row type": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",
"Insert table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
"Body": "\u10e2\u10d0\u10dc\u10d8",
"Caption": "\u10ec\u10d0\u10e0\u10ec\u10d4\u10e0\u10d0",
"Footer": "\u10eb\u10d8\u10e0\u10d8",
"Delete row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
"Paste row before": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
"Scope": "\u10e9\u10d0\u10e0\u10e9\u10dd",
"Delete table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
"H Align": "H \u10e9\u10d0\u10db\u10ec\u10d9\u10e0\u10d8\u10d5\u10d4\u10d1\u10d0",
"Top": "\u10db\u10d0\u10e6\u10da\u10d0",
"Header cell": "\u10d7\u10d0\u10d5\u10d8\u10e1 \u10e3\u10ef\u10e0\u10d0",
"Column": "\u10e1\u10d5\u10d4\u10e2\u10d8",
"Row group": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",
"Cell": "\u10e3\u10ef\u10e0\u10d0",
"Middle": "\u10e8\u10e3\u10d0",
"Cell type": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",
"Copy row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
"Row properties": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Table properties": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Bottom": "\u10e5\u10d5\u10d4\u10d3\u10d0",
"V Align": "V \u10e9\u10d0\u10db\u10ec\u10d9\u10e0\u10d8\u10d5\u10d4\u10d1\u10d0",
"Header": "\u10d7\u10d0\u10d5\u10d8",
"Right": "\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
"Insert column after": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Cols": "\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",
"Insert row after": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
"Width": "\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",
"Cell properties": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
"Left": "\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
"Cut row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
"Delete column": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
"Center": "\u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
"Merge cells": "\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0",
"Insert template": "\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
"Templates": "\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d4\u10d1\u10d8",
"Background color": "\u10e3\u10d9\u10d0\u10dc\u10d0 \u10e4\u10d4\u10e0\u10d8",
"Custom...": "\u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8",
"Custom color": "\u10db\u10dd\u10e0\u10d2\u10d4\u10d1\u10e3\u10da\u10d8 \u10e4\u10d4\u10e0\u10d8",
"No color": "\u10e4\u10d4\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",
"Text color": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",
"Table of Contents": "\u10e1\u10d0\u10e0\u10e9\u10d4\u10d5\u10d8",
"Show blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
"Show invisible characters": "\u10e3\u10ee\u10d8\u10da\u10d0\u10d5\u10d8 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
"Words: {0}": "\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8: {0}",
"Insert": "\u10e9\u10d0\u10e1\u10db\u10d0",
"File": "\u10e4\u10d0\u10d8\u10da\u10d8",
"Edit": "\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d0\u10e0\u10d7\u10d8. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F9\u10e1 \u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10eb\u10d0\u10ee\u10d4\u10d1\u10da\u10d0\u10d3. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F10\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-0\u10e1 \u10d3\u10d0\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1",
"Tools": "\u10d8\u10d0\u10e0\u10d0\u10e6\u10d4\u10d1\u10d8",
"View": "\u10dc\u10d0\u10ee\u10d5\u10d0",
"Table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8",
"Format": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8"
});js/tinymce/langs/ta_IN.js000064400000143345151727150360011305 0ustar00tinymce.addI18n('ta_IN',{
"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Undo": "\u0b9a\u0bc6\u0baf\u0bb2\u0bcd\u0ba4\u0bb5\u0bbf\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Copy": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Select all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b86\u0bb5\u0ba3\u0bae\u0bcd",
"Ok": "\u0b9a\u0bb0\u0bbf",
"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Visual aids": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd \u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
"Underline": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
"Strikethrough": "\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
"Superscript": "\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
"Subscript": "\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
"Clear formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
"Align left": "\u0b87\u0b9f\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Align center": "\u0bae\u0bc8\u0baf \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Bullet list": "\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f  \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Numbered list": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Decrease indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
"Increase indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
"Formats": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf \u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0b86\u0b95\u0bb5\u0bc7 \u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9 Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
"Headers": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
"Headings": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Heading 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
"Heading 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
"Heading 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
"Heading 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
"Heading 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
"Heading 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
"Preformatted": "\u0bae\u0bc1\u0ba9\u0bcd\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
"Div": "\u0baa\u0bbf\u0bb0\u0bbf\u0bb5\u0bc1 (Div)",
"Pre": "\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1 (Pre)",
"Code": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
"Inline": "\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1. \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
"Fonts": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Font Sizes": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1 \u0b85\u0bb3\u0bb5\u0bc1\u0b95\u0bb3\u0bcd",
"Class": "Class",
"Browse for an image": "\u0b92\u0bb0\u0bc1 \u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0b89\u0bb2\u0bbe\u0bb5\u0bc1\u0b95",
"OR": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1",
"Drop an image here": "\u0b92\u0bb0\u0bc1 \u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b87\u0b99\u0bcd\u0b95\u0bc1 \u0b87\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd \u0baa\u0bcb\u0b9f\u0bb5\u0bc1\u0bae\u0bcd",
"Upload": "\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Block": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf",
"Align": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
"Default": "\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd \u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
"Anchor...": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd...",
"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u0b86\u0ba9\u0ba4\u0bc1 \u0b92\u0bb0\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd; \u0b87\u0ba4\u0ba9\u0bc8\u0ba4\u0bcd \u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bcd\u0ba4\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd, \u0b8e\u0ba3\u0bcd\u0b95\u0bb3\u0bcd, \u0b87\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc7\u0bbe\u0b9f\u0bc1\u0b95\u0bb3\u0bcd (-), \u0baa\u0bc1\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bb3\u0bcd (.), \u0bae\u0bc1\u0b95\u0bcd\u0b95\u0bbe\u0bb1\u0bcd\u0baa\u0bc1\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bb3\u0bcd (:) \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc7\u0bbe\u0b9f\u0bc1\u0b95\u0bb3\u0bcd (_) \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bc7 \u0b87\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd.",
"You have unsaved changes are you sure you want to navigate away?": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95 \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Special character...": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc1...",
"Source code": "\u0bae\u0bc2\u0bb2 \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
"Insert\/Edit code sample": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Language": "\u0bae\u0bca\u0bb4\u0bbf",
"Code sample...": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf...",
"Color Picker": "\u0ba8\u0bbf\u0bb1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0bb5\u0bc1",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb2\u0bae\u0bcd",
"Right to left": "\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b87\u0b9f\u0bae\u0bcd",
"Emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Emoticons...": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Metadata and Document Properties": "\u0bae\u0bc0\u0ba4\u0bcd\u0ba4\u0bb0\u0bb5\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b86\u0bb5\u0ba3\u0baa\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Keywords": "\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Robots": "\u0baa\u0bca\u0bb1\u0bbf\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd (Robots)",
"Author": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
"Encoding": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Fullscreen": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
"Action": "\u0b9a\u0bc6\u0baf\u0bb2\u0bcd",
"Shortcut": "\u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf",
"Help": "\u0b89\u0ba4\u0bb5\u0bbf",
"Address": "\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Focus to menubar": "\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Focus to toolbar": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Focus to element path": "\u0bae\u0bc2\u0bb2\u0b95\u0baa\u0bcd \u0baa\u0bbe\u0ba4\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Focus to contextual toolbar": "\u0b9a\u0bc2\u0bb4\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b95\u0bb5\u0ba9\u0bae\u0bcd \u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Insert link (if link plugin activated)": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95 (\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b9a\u0bc6\u0baf\u0bb2\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bbe\u0bb2\u0bcd)",
"Save (if save plugin activated)": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95 (\u0b9a\u0bc7\u0bae\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b9a\u0bc6\u0baf\u0bb2\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bbe\u0bb2\u0bcd)",
"Find (if searchreplace plugin activated)": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 (\u0ba4\u0bc7\u0b9f\u0bbf\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bb2\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b9a\u0bc6\u0baf\u0bb2\u0bbe\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0baf\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bbe\u0bb2\u0bcd)",
"Plugins installed ({0}):": "\u0ba8\u0bbf\u0bb1\u0bc1\u0bb5\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc1\u0bb3\u0bcd\u0bb3 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf\u0b95\u0bb3\u0bcd ({0}):",
"Premium plugins:": "\u0b89\u0baf\u0bb0\u0bcd\u0bae\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf\u0b95\u0bb3\u0bcd:",
"Learn more...": "\u0bae\u0bc7\u0bb2\u0bc1\u0bae\u0bcd \u0b85\u0bb1\u0bbf\u0b95...",
"You are using {0}": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb5\u0ba4\u0bc1 {0}",
"Plugins": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf\u0b95\u0bb3\u0bcd",
"Handy Shortcuts": "\u0b8e\u0bb3\u0bbf\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0bc8\u0baf\u0bbe\u0bb3\u0b95\u0bcd\u0b95\u0bc2\u0b9f\u0bbf\u0baf \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bcd",
"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8 \u0b95\u0bcb\u0b9f\u0bc1",
"Insert\/edit image": "\u0baa\u0b9f\u0bae\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Alternative description": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Accessibility": "\u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bcd\u0ba4\u0ba9\u0bcd\u0bae\u0bc8",
"Image is decorative": "\u0baa\u0b9f\u0bae\u0bcd \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0bae\u0bbe\u0ba9\u0ba4\u0bc1",
"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
"Dimensions": "\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Constrain proportions": "\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"General": "\u0baa\u0bca\u0ba4\u0bc1",
"Advanced": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Horizontal space": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Border": "\u0b95\u0bb0\u0bc8",
"Insert image": "\u0baa\u0b9f\u0bae\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Image...": "\u0baa\u0b9f\u0bae\u0bcd...",
"Image list": "\u0baa\u0b9f\u0baa\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Rotate counterclockwise": "\u0b95\u0b9f\u0bbf\u0b95\u0bbe\u0bb0 \u0b8e\u0ba4\u0bbf\u0bb0\u0bcd\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc1\u0bb4\u0bb1\u0bcd\u0bb1\u0bc1",
"Rotate clockwise": "\u0b95\u0b9f\u0bbf\u0b95\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc1\u0bb4\u0bb1\u0bcd\u0bb1\u0bc1",
"Flip vertically": "\u0b9a\u0bc6\u0b99\u0bcd\u0b95\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0b95 \u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bc1",
"Flip horizontally": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f\u0bae\u0bbe\u0b95 \u0baa\u0bc1\u0bb0\u0b9f\u0bcd\u0b9f\u0bc1",
"Edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0ba4\u0bca\u0b95\u0bc1",
"Image options": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Zoom in": "\u0baa\u0bc6\u0bb0\u0bbf\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Zoom out": "\u0b9a\u0bbf\u0bb1\u0bbf\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Crop": "\u0b9a\u0bc6\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bc1",
"Resize": "\u0bae\u0bb1\u0bc1\u0b85\u0bb3\u0bb5\u0bbf\u0b9f\u0bc1",
"Orientation": "\u0ba4\u0bbf\u0b9a\u0bc8\u0baf\u0bae\u0bc8\u0bb5\u0bc1",
"Brightness": "\u0b92\u0bb3\u0bbf\u0bb0\u0bcd\u0bb5\u0bc1",
"Sharpen": "\u0b95\u0bc2\u0bb0\u0bcd\u0bae\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bc1",
"Contrast": "\u0ba8\u0bbf\u0bb1\u0bae\u0bbe\u0bb1\u0bc1\u0baa\u0bbe\u0b9f\u0bc1",
"Color levels": "\u0bb5\u0ba3\u0bcd\u0ba3 \u0ba8\u0bbf\u0bb2\u0bc8\u0b95\u0bb3\u0bcd",
"Gamma": "Gamma",
"Invert": "\u0ba8\u0bc7\u0bb0\u0bcd\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1",
"Apply": "\u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Back": "\u0baa\u0bbf\u0ba9\u0bcd",
"Insert date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd",
"Insert\/edit link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Text to display": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
"Url": "\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Open link in...": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b87\u0ba4\u0bbf\u0bb2\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95...",
"Current window": "\u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc8\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
"None": "\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
"Open link": "\u0ba4\u0bbf\u0bb1\u0ba8\u0bcd\u0ba4 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Anchors": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Link...": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1...",
"Paste or type a link": "\u0b92\u0bb0\u0bc1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95 \u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0ba4\u0b9f\u0bcd\u0b9f\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bae\u0bbf\u0ba9\u0bcd-\u0b85\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 mailto: \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link) \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 http:\/\/ \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link) \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 https:\/\/ \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8 (prefix) \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bb3\u0bbe?",
"Link list": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0baa\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Insert\/edit media": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2\u0bae\u0bcd",
"Alternative source URL": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2 \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
"Media poster (Image URL)": "\u0b8a\u0b9f\u0b95 \u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf (\u0b89\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf)",
"Paste your embed code below:": "\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b95\u0bc0\u0bb4\u0bc7 \u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
"Media...": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd...",
"Nonbreaking space": "\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Page break": "\u0baa\u0b95\u0bcd\u0b95 \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Preview": "\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
"Print...": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95...",
"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
"Find": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Replace": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Replace all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Previous": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
"Find and Replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Find and replace...": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95...",
"Could not find the specified string.": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f \u0b9a\u0bb0\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"Match case": "\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Find whole words only": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Find in selection": "\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bbf\u0bb2\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Spellcheck": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Spellcheck Language": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1 \u0bae\u0bca\u0bb4\u0bbf",
"No misspellings found.": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0b95\u0bb3\u0bcd \u0b95\u0bbe\u0ba3\u0baa\u0bcd\u0baa\u0b9f\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.",
"Ignore": "\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
"Ignore all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
"Add to Dictionary": "\u0b85\u0b95\u0bb0\u0bbe\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Table properties": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
"Cell properties": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Merge cells": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Insert column before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Delete column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Cols": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
"Rows": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
"Caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Show caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Left": "\u0b87\u0b9f\u0bae\u0bcd",
"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0bb5\u0b95\u0bc8",
"Scope": "\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
"Alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
"H Align": "\u0b95\u0bbf (H) \u0b87\u0b9a\u0bc8\u0bb5\u0bc1",
"V Align": "\u0b9a\u0bc6 (V) \u0b87\u0b9a\u0bc8\u0bb5\u0bc1",
"Top": "\u0bae\u0bc7\u0bb2\u0bcd",
"Middle": "\u0ba8\u0b9f\u0bc1",
"Bottom": "\u0bae\u0bc7\u0bb2\u0bcd",
"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
"Column group": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0b95\u0bc8",
"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
"Footer": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Border color": "\u0b95\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Insert template...": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95...",
"Templates": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1",
"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Background color": "\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Custom...": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd...",
"Custom color": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"No color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
"Remove color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Table of Contents": "\u0baa\u0bca\u0bb0\u0bc1\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Show blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Show invisible characters": "\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
"Word count": "\u0b9a\u0bca\u0bb2\u0bcd \u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b95\u0bcd\u0b95\u0bc8",
"Count": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b95\u0bcd\u0b95\u0bc8",
"Document": "\u0b86\u0bb5\u0ba3\u0bae\u0bcd",
"Selection": "\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1",
"Words": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd: {0}",
"{0} words": "{0} \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Insert": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Format": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
"Tools": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
"Powered by {0}": "\u0bb5\u0bb2\u0bc1\u0bb5\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0ba4\u0bc1 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 , \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1 ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
"Image title": "\u0baa\u0b9f\u0ba4\u0bcd \u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Border width": "\u0b95\u0bb0\u0bc8 \u0b85\u0b95\u0bb2\u0bae\u0bcd",
"Border style": "\u0b95\u0bb0\u0bc8 \u0baa\u0bbe\u0ba3\u0bbf",
"Error": "\u0baa\u0bbf\u0bb4\u0bc8",
"Warn": "\u0b8e\u0b9a\u0bcd\u0b9a\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
"Valid": "\u0b9a\u0bc6\u0bb2\u0bcd\u0bb2\u0ba4\u0bcd\u0ba4\u0b95\u0bcd\u0b95\u0ba4\u0bc1",
"To open the popup, press Shift+Enter": "\u0bae\u0bc7\u0bb2\u0bcd\u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1-\u0bb5\u0bc8\u0ba4\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95 Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
"System Font": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Failed to upload image: {0}": "\u0baa\u0b9f\u0bae\u0bcd \u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0}",
"Failed to load plugin: {0} from url {1}": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0} - {1} \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf\u0baf\u0bbf\u0bb2\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1",
"Failed to load plugin url: {0}": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0b8f\u0bb1\u0bcd\u0bb1\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0}",
"Failed to initialize plugin: {0}": "\u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bbf \u0ba4\u0bc1\u0bb5\u0b99\u0bcd\u0b95\u0bc1\u0ba4\u0bb2\u0bcd \u0ba4\u0bcb\u0bb2\u0bcd\u0bb5\u0bbf\u0baf\u0bc1\u0bb1\u0bcd\u0bb1\u0ba4\u0bc1: {0}",
"example": "\u0b89\u0ba4\u0bbe\u0bb0\u0ba3\u0bae\u0bcd",
"Search": "\u0ba4\u0bc7\u0b9f\u0bc1\u0b95",
"All": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1\u0bae\u0bcd",
"Currency": "\u0b9a\u0bc6\u0bb2\u0bbe\u0bb5\u0ba3\u0bbf (Currency)",
"Text": "\u0b89\u0bb0\u0bc8",
"Quotations": "\u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bc7\u0bbe\u0bb3\u0bcd\u0b95\u0bb3\u0bcd",
"Mathematical": "\u0b95\u0ba3\u0b95\u0bcd\u0b95\u0bbf\u0baf\u0bb2\u0bcd",
"Extended Latin": "\u0ba8\u0bc0\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0b87\u0bb2\u0ba4\u0bcd\u0ba4\u0bc0\u0ba9\u0bcd",
"Symbols": "\u0b87\u0b9f\u0bc1\u0b95\u0bc1\u0bb1\u0bbf\u0b95\u0bb3\u0bcd",
"Arrows": "\u0b85\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"User Defined": "\u0baa\u0baf\u0ba9\u0bb0\u0bcd \u0bb5\u0bb0\u0bc8\u0baf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4",
"dollar sign": "dollar \u0b95\u0bc1\u0bb1\u0bbf",
"currency sign": "\u0b9a\u0bc6\u0bb2\u0bbe\u0bb5\u0ba3\u0bbf\u0b95\u0bcd \u0b95\u0bc1\u0bb1\u0bbf",
"euro-currency sign": "euro-currency \u0b95\u0bc1\u0bb1\u0bbf",
"colon sign": "colon \u0b95\u0bc1\u0bb1\u0bbf",
"cruzeiro sign": "cruzeiro \u0b95\u0bc1\u0bb1\u0bbf",
"french franc sign": "french franc \u0b95\u0bc1\u0bb1\u0bbf",
"lira sign": "lira \u0b95\u0bc1\u0bb1\u0bbf",
"mill sign": "mill \u0b95\u0bc1\u0bb1\u0bbf",
"naira sign": "naira \u0b95\u0bc1\u0bb1\u0bbf",
"peseta sign": "peseta \u0b95\u0bc1\u0bb1\u0bbf",
"rupee sign": "rupee \u0b95\u0bc1\u0bb1\u0bbf",
"won sign": "won \u0b95\u0bc1\u0bb1\u0bbf",
"new sheqel sign": "new sheqel \u0b95\u0bc1\u0bb1\u0bbf",
"dong sign": "dong \u0b95\u0bc1\u0bb1\u0bbf",
"kip sign": "kip \u0b95\u0bc1\u0bb1\u0bbf",
"tugrik sign": "tugrik \u0b95\u0bc1\u0bb1\u0bbf",
"drachma sign": "drachma \u0b95\u0bc1\u0bb1\u0bbf",
"german penny symbol": "german penny \u0b87\u0b9f\u0bc1\u0b95\u0bc1\u0bb1\u0bbf",
"peso sign": "peso \u0b95\u0bc1\u0bb1\u0bbf",
"guarani sign": "guarani \u0b95\u0bc1\u0bb1\u0bbf",
"austral sign": "austral \u0b95\u0bc1\u0bb1\u0bbf",
"hryvnia sign": "hryvnia \u0b95\u0bc1\u0bb1\u0bbf",
"cedi sign": "cedi \u0b95\u0bc1\u0bb1\u0bbf",
"livre tournois sign": "livre tournois \u0b95\u0bc1\u0bb1\u0bbf",
"spesmilo sign": "spesmilo \u0b95\u0bc1\u0bb1\u0bbf",
"tenge sign": "tenge \u0b95\u0bc1\u0bb1\u0bbf",
"indian rupee sign": "indian rupee \u0b95\u0bc1\u0bb1\u0bbf",
"turkish lira sign": "turkish lira \u0b95\u0bc1\u0bb1\u0bbf",
"nordic mark sign": "nordic mark \u0b95\u0bc1\u0bb1\u0bbf",
"manat sign": "manat \u0b95\u0bc1\u0bb1\u0bbf",
"ruble sign": "ruble \u0b95\u0bc1\u0bb1\u0bbf",
"yen character": "yen \u0b89\u0bb0\u0bc1",
"yuan character": "yuan \u0b89\u0bb0\u0bc1",
"yuan character, in hong kong and taiwan": "yuan \u0b89\u0bb0\u0bc1, \u0bb9\u0bbe\u0b99\u0bcd\u0b95\u0bbe\u0b99\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0ba4\u0bbe\u0baf\u0bcd\u0bb5\u0bbe\u0ba9\u0bcd \u0b87\u0bb2\u0bcd",
"yen\/yuan character variant one": "yen\/yuan \u0b89\u0bb0\u0bc1 \u0bae\u0bbe\u0bb1\u0bc1\u0baa\u0bbe\u0b9f\u0bc1",
"Loading emoticons...": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b8f\u0bb1\u0bcd\u0bb1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0b95\u0bbf\u0ba9\u0bcd\u0bb1\u0ba9...",
"Could not load emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bc8 \u0b8f\u0bb1\u0bcd\u0bb1 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
"People": "\u0bae\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Animals and Nature": "\u0bae\u0bbf\u0bb0\u0bc1\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b87\u0baf\u0bb1\u0bcd\u0b95\u0bc8",
"Food and Drink": "\u0b89\u0ba3\u0bb5\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0baa\u0bbe\u0ba9\u0bae\u0bcd",
"Activity": "\u0b9a\u0bc6\u0baf\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1",
"Travel and Places": "\u0baa\u0baf\u0ba3\u0bae\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b87\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Objects": "\u0baa\u0bca\u0bb0\u0bc1\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",
"Flags": "\u0b95\u0bca\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",
"Characters": "\u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Characters (no spaces)": "\u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd (\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf\u0b95\u0bb3\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8)",
"{0} characters": "{0} \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
"Error: Form submit field collision.": "\u0baa\u0bbf\u0bb4\u0bc8: \u0baa\u0b9f\u0bbf\u0bb5\u0bae\u0bcd \u0b9a\u0bae\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bbf\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd \u0baa\u0bc1\u0bb2\u0bae\u0bcd \u0bae\u0bcb\u0ba4\u0bb2\u0bcd.",
"Error: No form element found.": "\u0baa\u0bbf\u0bb4\u0bc8: \u0baa\u0bc1\u0bb2\u0bae\u0bcd \u0bae\u0bc2\u0bb2\u0b95\u0bae\u0bcd \u0b8e\u0ba4\u0bc1\u0bb5\u0bc1\u0bae\u0bcd \u0b95\u0bbe\u0ba3\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.",
"Update": "\u0baa\u0bc1\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95",
"Color swatch": "\u0ba8\u0bbf\u0bb1\u0b9a\u0bcd \u0b9a\u0bcb\u0ba4\u0ba9\u0bc8\u0b95\u0bcd\u0b95\u0bb2\u0bb5\u0bc8",
"Turquoise": "\u0ba8\u0bc0\u0bb2\u0baa\u0bcd\u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Green": "\u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Blue": "\u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Purple": "\u0b8a\u0ba4\u0bbe",
"Navy Blue": "\u0b95\u0b9f\u0bb1\u0bcd\u0baa\u0b9f\u0bc8 \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Dark Turquoise": "\u0b85\u0b9f\u0bb0\u0bcd \u0ba8\u0bc0\u0bb2\u0baa\u0bcd\u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Dark Green": "\u0b85\u0b9f\u0bb0\u0bcd \u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Medium Blue": "\u0ba8\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb0 \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Medium Purple": "\u0ba8\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb0 \u0b8a\u0ba4\u0bbe",
"Midnight Blue": "\u0ba8\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bb5\u0bc1 \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Yellow": "\u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Orange": "\u0b9a\u0bbf\u0bb5\u0ba8\u0bcd\u0ba4 \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Red": "\u0b9a\u0bbf\u0bb5\u0baa\u0bcd\u0baa\u0bc1",
"Light Gray": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Gray": "\u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Dark Yellow": "\u0b85\u0b9f\u0bb0\u0bcd \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Dark Orange": "\u0b85\u0b9f\u0bb0\u0bcd \u0b9a\u0bbf\u0bb5\u0ba8\u0bcd\u0ba4 \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Dark Red": "\u0b85\u0b9f\u0bb0\u0bcd \u0b9a\u0bbf\u0bb5\u0baa\u0bcd\u0baa\u0bc1",
"Medium Gray": "\u0ba8\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bb0 \u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Dark Gray": "\u0b85\u0b9f\u0bb0\u0bcd \u0b9a\u0bbe\u0bae\u0bcd\u0baa\u0bb2\u0bcd",
"Light Green": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0baa\u0b9a\u0bcd\u0b9a\u0bc8",
"Light Yellow": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0bae\u0b9e\u0bcd\u0b9a\u0bb3\u0bcd",
"Light Red": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd\u00a0\u0b9a\u0bbf\u0bb5\u0baa\u0bcd\u0baa\u0bc1",
"Light Purple": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0b8a\u0ba4\u0bbe",
"Light Blue": "\u0bb5\u0bc6\u0bb3\u0bbf\u0bb0\u0bcd \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Dark Purple": "\u0b85\u0b9f\u0bb0\u0bcd \u0b8a\u0ba4\u0bbe",
"Dark Blue": "\u0b85\u0b9f\u0bb0\u0bcd \u0ba8\u0bc0\u0bb2\u0bae\u0bcd",
"Black": "\u0b95\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
"White": "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bc8",
"Switch to or from fullscreen mode": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0bc1\/\u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bc1\u0b95",
"Open help dialog": "\u0b89\u0ba4\u0bb5\u0bbf \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b9f\u0bb2\u0bcd \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95",
"history": "\u0bb5\u0bb0\u0bb2\u0bbe\u0bb1\u0bc1",
"styles": "\u0baa\u0bbe\u0ba3\u0bbf\u0b95\u0bb3\u0bcd",
"formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd",
"alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
"indentation": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bcd",
"Font": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Size": "\u0b85\u0bb3\u0bb5\u0bc1",
"More...": "\u0bae\u0bc7\u0bb2\u0bc1\u0bae\u0bcd...",
"Select...": "\u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95...",
"Preferences": "\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
"Yes": "\u0b86\u0bae\u0bcd",
"No": "\u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
"Keyboard Navigation": "\u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0bb5\u0bb4\u0bbf\u0b9a\u0bcd\u0b9a\u0bc6\u0bb2\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd",
"Version": "\u0baa\u0ba4\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
"Code view": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
"Open popup menu for split buttons": "\u0baa\u0bbf\u0bb3\u0bb5\u0bc1 \u0baa\u0bca\u0ba4\u0bcd\u0ba4\u0bbe\u0ba9\u0bcd\u0b95\u0bb3\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0bae\u0bc7\u0bb2\u0bcd\u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bc8 \u0ba4\u0bbf\u0bb1\u0b95\u0bcd\u0b95",
"List Properties": "\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bbf\u0b9f\u0bc1\u0b95",
"List properties...": "\u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bbf\u0b9f\u0bc1\u0b95...",
"Start list at number": "\u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bc8 \u0b87\u0ba8\u0bcd\u0ba4 \u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0bb2\u0bcd \u0ba4\u0bca\u0b9f\u0b99\u0bcd\u0b95\u0bc1\u0b95",
"Line height": "\u0bb5\u0bb0\u0bbf \u0b89\u0baf\u0bb0\u0bae\u0bcd",
"comments": "\u0b95\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bb3\u0bcd",
"Format Painter": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0bc2\u0b9a\u0bbe\u0bb3\u0ba9\u0bcd",
"Insert\/edit iframe": "iframe \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
"Capitalization": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"lowercase": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bc6\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"UPPERCASE": "\u0baa\u0bc7\u0bb0\u0bc6\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
"Title Case": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bcd",
"permanent pen": "\u0ba8\u0bbf\u0bb0\u0ba8\u0bcd\u0ba4\u0bb0\u0baa\u0bcd \u0baa\u0bc7\u0ba9\u0bbe",
"Permanent Pen Properties": "\u0ba8\u0bbf\u0bb0\u0ba8\u0bcd\u0ba4\u0bb0\u0baa\u0bcd \u0baa\u0bc7\u0ba9\u0bbe \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Permanent pen properties...": "\u0ba8\u0bbf\u0bb0\u0ba8\u0bcd\u0ba4\u0bb0\u0baa\u0bcd \u0baa\u0bc7\u0ba9\u0bbe \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd...",
"case change": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bae\u0bcd",
"page embed": "\u0baa\u0b95\u0bcd\u0b95\u0bae\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd",
"Advanced sort...": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd...",
"Advanced Sort": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
"Sort table by column ascending": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b8f\u0bb1\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bbe\u0b95 \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Sort table by column descending": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b87\u0bb1\u0b99\u0bcd\u0b95\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bbe\u0b95 \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Sort": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Order": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0bae\u0bc1\u0bb1\u0bc8",
"Sort by": "\u0b87\u0ba4\u0ba9\u0bbe\u0bb2\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
"Ascending": "\u0b8f\u0bb1\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bcd",
"Descending": "\u0b87\u0bb1\u0b99\u0bcd\u0b95\u0bc1\u0bae\u0bc1\u0b95\u0bae\u0bcd",
"Column {0}": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 {0}",
"Row {0}": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 {0}",
"Spellcheck...": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95...",
"Misspelled word": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc1\u0bb3\u0bcd\u0bb3 \u0b9a\u0bca\u0bb2\u0bcd",
"Suggestions": "\u0baa\u0bb0\u0bbf\u0ba8\u0bcd\u0ba4\u0bc1\u0bb0\u0bc8\u0b95\u0bb3\u0bcd",
"Change": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Finding word suggestions": "\u0b9a\u0bca\u0bb2\u0bcd \u0baa\u0bb0\u0bbf\u0ba8\u0bcd\u0ba4\u0bc1\u0bb0\u0bc8\u0b95\u0bb3\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bb1\u0bbf\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1",
"Success": "\u0bb5\u0bc6\u0bb1\u0bcd\u0bb1\u0bbf",
"Repair": "\u0b9a\u0bb0\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
"Issue {0} of {1}": "\u0baa\u0bbf\u0bb0\u0b9a\u0bcd\u0b9a\u0bbf\u0ba9\u0bc8 {0} \/ {1}",
"Images must be marked as decorative or have an alternative text description": "\u0baa\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0bae\u0bbe\u0b95 \u0b95\u0bc1\u0bb1\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0b89\u0bb0\u0bc8 \u0bb5\u0bbf\u0bb3\u0b95\u0bcd\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bbf\u0bb0\u0bc1\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd",
"Images must have an alternative text description. Decorative images are not allowed.": "\u0baa\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0b89\u0bb0\u0bc8 \u0bb5\u0bbf\u0bb3\u0b95\u0bcd\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bbf\u0bb0\u0bc1\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd. \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0baa\u0bcd \u0baa\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0b85\u0ba9\u0bc1\u0bae\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.",
"Or provide alternative text:": "\u0b85\u0bb2\u0bcd\u0bb2\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bc8 \u0bb5\u0bb4\u0b99\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd",
"Make image decorative:": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b85\u0bb2\u0b99\u0bcd\u0b95\u0bbe\u0bb0\u0bae\u0bbe\u0ba9\u0ba4\u0bbe\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"ID attribute must be unique": "ID \u0baa\u0ba3\u0bcd\u0baa\u0bc1 \u0ba4\u0ba9\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1\u0bb5\u0bae\u0bbe\u0b95 \u0b87\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bb2\u0bcd \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd",
"Make ID unique": "ID-\u0baf\u0bc8 \u0ba4\u0ba9\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1\u0bb5\u0bae\u0bbe\u0b95\u0bcd\u0b95\u0bc1\u0b95",
"Keep this ID and remove all others": "\u0b87\u0ba8\u0bcd\u0ba4 ID-\u0baf\u0bc8 \u0bb5\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bc1 \u0bae\u0bb1\u0bcd\u0bb1 \u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bb5\u0bc1\u0bae\u0bcd",
"Remove this ID": "\u0b87\u0ba8\u0bcd\u0ba4 ID \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Remove all IDs": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc1 ID-\u0b95\u0bb3\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Checklist": "\u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
"Anchor": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
"Special character": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
"Code sample": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1 \u0bae\u0bbe\u0ba4\u0bbf\u0bb0\u0bbf",
"Color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
"Document properties": "\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
"Image description": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
"Image": "\u0baa\u0b9f\u0bae\u0bcd",
"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
"Link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
"Poster": "\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
"Media": "\u0b8a\u0b9f\u0b95\u0bae\u0bcd",
"Print": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
"Find and replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
"Insert template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1 \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95"
});js/tinymce/langs/ku_IQ.js000064400000052345151727150360011322 0ustar00tinymce.addI18n('ku_IQ',{
"Redo": "\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5",
"Undo": "\u06af\u06d5\u0695\u0627\u0646\u06d5\u0648\u06d5",
"Cut": "\u0628\u0695\u06cc\u0646",
"Copy": "\u0644\u06d5\u0628\u06d5\u0631\u06af\u0631\u062a\u0646\u06d5\u0648\u06d5",
"Paste": "\u0644\u06a9\u0627\u0646\u062f\u0646",
"Select all": "\u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u0646\u06cc \u0647\u06d5\u0645\u0648\u0648",
"New document": "\u0628\u06d5\u06b5\u06af\u06d5\u0646\u0627\u0645\u06d5\u06cc \u0646\u0648\u06ce",
"Ok": "\u0628\u0627\u0634\u06d5",
"Cancel": "\u067e\u0627\u0634\u06af\u06d5\u0632\u0628\u0648\u0648\u0646\u06d5\u0648\u06d5",
"Visual aids": "\u0647\u0627\u0648\u06a9\u0627\u0631\u06cc \u0628\u06cc\u0646\u06d5\u06cc\u06cc",
"Bold": "\u062a\u06c6\u062e\u06a9\u0631\u062f\u0646",
"Italic": "\u0644\u0627\u0631\u06a9\u0631\u062f\u0646",
"Underline": "\u0647\u06ce\u06b5 \u0628\u06d5\u0698\u06ce\u0631\u062f\u0627\u0646",
"Strikethrough": "\u0647\u06ce\u06b5 \u0628\u06d5\u0646\u0627\u0648\u062f\u0627\u0646",
"Superscript": "\u0633\u06d5\u0631\u0646\u0648\u0648\u0633",
"Subscript": "\u0698\u06ce\u0631\u0646\u0648\u0648\u0633",
"Clear formatting": "\u067e\u0627\u06a9\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u0634\u06ce\u0648\u0627\u0632\u06a9\u0631\u062f\u0646",
"Align left": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0686\u06d5\u067e",
"Align center": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0646\u0627\u0648\u06d5\u0695\u0627\u0633\u062a",
"Align right": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0695\u0627\u0633\u062a",
"Justify": "\u0647\u0627\u0648\u0695\u06ce\u06a9\u06cc ",
"Bullet list": "\u0644\u06cc\u0633\u062a\u06cc \u062e\u0627\u06b5",
"Numbered list": "\u0644\u06cc\u0633\u062a\u06cc \u0698\u0645\u0627\u0631\u06d5",
"Decrease indent": "\u06a9\u06d5\u0645\u06a9\u0631\u062f\u0646\u06cc \u0628\u06c6\u0634\u0627\u06cc\u06cc",
"Increase indent": "\u0632\u06cc\u0627\u062f\u06a9\u0631\u062f\u0646\u06cc \u0628\u06c6\u0634\u0627\u06cc\u06cc",
"Close": "\u062f\u0627\u062e\u0633\u062a\u0646",
"Formats": "\u0634\u06ce\u0648\u0627\u0632\u06a9\u0631\u062f\u0646\u06d5\u06a9\u0627\u0646",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0648\u06ce\u0628\u06af\u06d5\u0695\u06d5\u06a9\u06d5\u062a \u067e\u0627\u06b5\u067e\u0634\u062a\u06cc \u062f\u06d5\u0633\u062a\u06a9\u06d5\u0648\u062a\u0646\u06cc \u0695\u0627\u0633\u062a\u06d5\u0648\u062e\u06c6\u06cc \u06a9\u0644\u06cc\u067e\u0628\u06c6\u0631\u062f \u0646\u0627\u06a9\u0627\u062a. \u062a\u06a9\u0627\u06cc\u06d5 \u0644\u06d5\u062c\u06cc\u0627\u062a\u06cc \u06a9\u0648\u0631\u062a\u0628\u0695\u06d5\u06a9\u0627\u0646\u06cc Ctrl+X\/C\/V \u062a\u06d5\u062e\u062a\u06d5\u06a9\u0644\u06cc\u0644 \u0628\u06d5\u06a9\u0627\u0631\u0628\u06ce\u0646\u06d5.",
"Headers": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5\u06a9\u0627\u0646",
"Header 1": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 1",
"Header 2": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 2",
"Header 3": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 3",
"Header 4": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 4",
"Header 5": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 5",
"Header 6": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5 6",
"Headings": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a\u06d5\u06a9\u0627\u0646",
"Heading 1": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 1",
"Heading 2": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 2",
"Heading 3": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 3",
"Heading 4": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 4",
"Heading 5": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 5",
"Heading 6": "\u0633\u06d5\u0631\u0628\u0627\u0628\u06d5\u062a 6",
"Preformatted": "Preformatted",
"Div": "Div",
"Pre": "Pre",
"Code": "\u06a9\u06c6\u062f",
"Paragraph": "\u0628\u0695\u06af\u06d5",
"Blockquote": "Blockquote",
"Inline": "\u0644\u06d5\u0633\u06d5\u0631\u062f\u06ce\u0631",
"Blocks": "\u0628\u0644\u06c6\u06a9\u06d5\u06a9\u0627\u0646",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0644\u06a9\u0627\u0646\u062f\u0646 \u0626\u06ce\u0633\u062a\u0627 \u0644\u06d5 \u0628\u0627\u0631\u06cc \u062f\u06d5\u0642\u06cc \u0633\u0627\u062f\u06d5\u06cc\u06d5. \u0646\u0627\u0648\u06d5\u0695\u06c6\u06a9\u06d5\u06a9\u0627\u0646 \u062f\u06d5\u0644\u06a9\u06ce\u0646 \u0648\u06d5\u06a9 \u062f\u06d5\u0642\u06cc \u0633\u0627\u062f\u06d5 \u0647\u06d5\u062a\u0627 \u0626\u06d5\u0645 \u0647\u06d5\u06b5\u0628\u0698\u0627\u0631\u062f\u06d5 \u0646\u0627\u06a9\u0627\u0631\u0627 \u062f\u06d5\u06a9\u06d5\u06cc\u062a.",
"Font Family": "\u062c\u06c6\u0631\u06cc \u0641\u06c6\u0646\u062a",
"Font Sizes": "\u0642\u06d5\u0628\u0627\u0631\u06d5\u06cc \u0641\u06c6\u0646\u062a",
"Class": "\u06a9\u0644\u0627\u0633",
"Browse for an image": "\u0648\u06ce\u0646\u06d5 \u062f\u06cc\u0627\u0631\u06cc\u0628\u06a9\u06d5",
"OR": "\u06cc\u0627\u0646",
"Drop an image here": "\u0648\u06ce\u0646\u06d5 \u0628\u062e\u06d5 \u0633\u06d5\u0631\u0626\u06ce\u0631\u06d5",
"Upload": "\u0628\u0627\u0631\u06a9\u0631\u062f\u0646",
"Block": "\u0628\u0644\u06c6\u06a9",
"Align": "\u0626\u0627\u0695\u0627\u0633\u062a\u06d5",
"Default": "\u0628\u0646\u06d5\u0695\u06d5\u062a\u06cc",
"Circle": "\u0628\u0627\u0632\u0646\u06d5",
"Disc": "\u067e\u06d5\u067e\u06a9\u06d5",
"Square": "\u0686\u0648\u0627\u0631\u06af\u06c6\u0634\u06d5",
"Lower Alpha": "\u0626\u06d5\u0644\u0641\u0627\u06cc \u0628\u0686\u0648\u0648\u06a9",
"Lower Greek": "\u06cc\u06c6\u0646\u0627\u0646\u06cc \u0628\u0686\u0648\u0648\u06a9",
"Lower Roman": "\u0695\u06c6\u0645\u0627\u0646\u06cc \u0628\u0686\u0648\u0648\u06a9",
"Upper Alpha": "\u0626\u06d5\u0644\u0641\u0627\u06cc \u06af\u06d5\u0648\u0631\u06d5",
"Upper Roman": "\u0695\u06c6\u0645\u0627\u0646\u06cc \u06af\u06d5\u0648\u0631\u06d5",
"Anchor": "\u0644\u06d5\u0646\u06af\u06d5\u0631",
"Name": "\u0646\u0627\u0648",
"Id": "\u0646\u0627\u0633\u0646\u0627\u0645\u06d5",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u0646\u0627\u0633\u0646\u0627\u0645\u06d5 \u067e\u06ce\u0648\u06cc\u0633\u062a\u06d5 \u0628\u06d5 \u0646\u0648\u0633\u06cc\u0646 \u062f\u06d5\u0633\u062a \u067e\u06ce \u0628\u06a9\u0627\u062a\u060c \u06a9\u06d5 \u062a\u06d5\u0646\u0647\u0627 \u0646\u0648\u0633\u06cc\u0646\u060c \u0698\u0645\u0627\u0631\u06d5\u06a9\u0627\u0646\u060c \u062f\u0627\u0634\u060c \u0646\u0648\u06a9\u062a\u06d5\u060c \u06a9\u06c6\u06b5\u06c6\u0646\u06d5\u06a9\u0627\u0646 \u0648 \u0628\u0646\u0647\u06ce\u06b5\u06d5\u06a9\u0627\u0646 \u0695\u06ce\u06af\u06d5\u067e\u06ce\u062f\u0631\u0627\u0648\u0646.",
"You have unsaved changes are you sure you want to navigate away?": "\u062a\u06c6 \u06af\u06c6\u0695\u0627\u0646\u06a9\u0627\u0631\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u062a \u067e\u0627\u0634\u06d5\u06a9\u06d5\u0648\u062a \u0646\u06d5\u06a9\u0631\u062f\u0648\u0648\u06d5\u060c \u0626\u0627\u06cc\u0627 \u062f\u06b5\u0646\u06cc\u0627\u06cc\u062a \u0644\u06d5 \u062f\u06d5\u0631\u0686\u0648\u0648\u0646\u062a\u061f",
"Restore last draft": "\u06af\u06d5\u0695\u0627\u0646\u062f\u0646\u06d5\u0648\u06d5\u06cc \u062f\u0648\u0627\u06cc\u06cc\u0646 \u0695\u06d5\u0634\u0646\u0648\u0648\u0633",
"Special character": "\u0646\u0648\u0648\u0633\u06d5\u06cc \u062a\u0627\u06cc\u0628\u06d5\u062a",
"Source code": "\u06a9\u06c6\u062f\u06cc \u0633\u06d5\u0631\u0686\u0627\u0648\u06d5",
"Insert\/Edit code sample": "\u0632\u06cc\u0627\u062f\u06a9\u0631\u062f\u0646 \u0648 \u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc\u06a9\u0631\u062f\u0646\u06cc \u0646\u0645\u0648\u0648\u0646\u06d5\u06cc \u06a9\u06c6\u062f",
"Language": "\u0632\u0645\u0627\u0646",
"Code sample": "\u0646\u0645\u0648\u0648\u0646\u06d5\u06cc \u06a9\u06c6\u062f",
"Color": "\u0695\u06d5\u0646\u06af",
"R": "\u0633\u0648\u0631",
"G": "\u0633\u06d5\u0648\u0632",
"B": "\u0634\u06cc\u0646",
"Left to right": "\u0686\u06d5\u067e \u0628\u06c6 \u0695\u0627\u0633\u062a",
"Right to left": "\u0695\u0627\u0633\u062a \u0628\u06c6 \u0686\u06d5\u067e",
"Emoticons": "\u0648\u06ce\u0646\u06c6\u0686\u06a9\u06d5\u06a9\u0627\u0646\u06cc \u0647\u06d5\u0633\u062a",
"Document properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u0628\u06d5\u06b5\u06af\u06d5\u0646\u0627\u0645\u06d5",
"Title": "\u0646\u0627\u0648\u0646\u06cc\u0634\u0627\u0646",
"Keywords": "\u06a9\u0644\u06cc\u0644\u0647\u200c\u0648\u0634\u0647\u200c\u06a9\u0627\u0646",
"Description": "\u0628\u0627\u0633\u06a9\u0631\u062f\u0646",
"Robots": "\u0695\u06c6\u0628\u06c6\u062a\u06d5\u06a9\u0627\u0646",
"Author": "\u0646\u0648\u0648\u0633\u06d5\u0631",
"Encoding": "\u0628\u06d5\u06a9\u06c6\u062f\u06a9\u0631\u062f\u0646",
"Fullscreen": "\u0695\u0648\u0648\u067e\u0695\u06cc",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "\u0647\u06ce\u06b5\u06cc \u0626\u0627\u0633\u06c6\u06cc\u06cc",
"Insert\/edit image": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc \u0648\u06ce\u0646\u06d5",
"Image description": "\u0628\u0627\u0633\u06a9\u0631\u062f\u0646\u06cc \u0648\u06ce\u0646\u06d5",
"Source": "\u0633\u06d5\u0631\u0686\u0627\u0648\u06d5",
"Dimensions": "\u062f\u0648\u0648\u0631\u06cc\u06cc\u06d5\u06a9\u0627\u0646",
"Constrain proportions": "\u0695\u06d5\u0647\u06d5\u0646\u062f\u06cc \u0645\u06d5\u0631\u062c\u06d5\u06a9\u0627\u0646",
"General": "\u06af\u0634\u062a\u06cc",
"Advanced": "\u067e\u06ce\u0634\u06a9\u06d5\u0648\u062a\u0648\u0648",
"Style": "\u0634\u06ce\u0648\u0627\u0632",
"Vertical space": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u0633\u062a\u0648\u0648\u0646\u06cc",
"Horizontal space": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u0626\u0627\u0633\u06c6\u06cc\u06cc",
"Border": "\u0633\u0646\u0648\u0648\u0631",
"Insert image": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0648\u06ce\u0646\u06d5",
"Image": "\u0648\u06ce\u0646\u06d5",
"Image list": "\u0644\u06cc\u0633\u062a\u06cc \u0648\u06ce\u0646\u06d5",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Color levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0695\u06c6\u0698\/\u06a9\u0627\u062a",
"Date\/time": "Date\/time",
"Insert link": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Insert\/edit link": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Text to display": "\u062f\u06d5\u0642 \u0628\u06c6 \u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646",
"Url": "\u0628\u06d5\u0633\u062a\u06d5\u0631",
"Target": "\u0626\u0627\u0645\u0627\u0646\u062c",
"None": "\u0647\u06cc\u0686",
"New window": "\u067e\u06d5\u0646\u062c\u06d5\u0631\u06d5\u06cc \u0646\u0648\u06ce",
"Remove link": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u0628\u06d5\u0633\u062a\u06d5\u0631",
"Anchors": "\u0644\u06d5\u0646\u06af\u06d5\u0631\u06d5\u06a9\u0627\u0646",
"Link": "Link",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0626\u06d5\u0648 \u0628\u06d5\u0633\u062a\u06d5\u0631\u06d5\u06cc \u0646\u0648\u0648\u0633\u06cc\u0648\u062a\u06d5 \u0628\u06d5 \u067e\u06d5\u06cc\u0627\u0645\u06cc \u0626\u06d5\u0644\u06cc\u06a9\u062a\u0695\u06c6\u0646\u06cc \u062f\u06d5\u0686\u06ce\u062a. \u0626\u0627\u06cc\u0627 \u062f\u06d5\u062a\u06d5\u0648\u06ce\u062a mailto: prefix \u06cc \u0628\u06c6 \u0632\u06cc\u0627\u062f \u0628\u06a9\u06d5\u06cc\u062a\u061f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0626\u06d5\u0648 \u0628\u06d5\u0633\u062a\u06d5\u0631\u06d5\u06cc \u0646\u0648\u0648\u0633\u06cc\u0648\u062a\u06d5 \u0628\u06d5 \u0628\u06d5\u0633\u062a\u06d5\u0631\u06cc \u062f\u06d5\u0631\u06d5\u06a9\u06cc \u062f\u06d5\u0686\u06ce\u062a. \u0626\u0627\u06cc\u0627 \u062f\u06d5\u062a\u06d5\u0648\u06ce\u062a http:\/\/ prefix \u06cc \u0628\u06c6 \u0632\u06cc\u0627\u062f \u0628\u06a9\u06d5\u06cc\u062a\u061f",
"Link list": "Link list",
"Insert video": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u06a4\u06cc\u062f\u06cc\u06c6",
"Insert\/edit video": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc \u06a4\u06cc\u062f\u06cc\u06c6",
"Insert\/edit media": "\u0647\u06ce\u0627\u0646\u06d5\u0646\u0627\u0648\/\u062f\u06d5\u0633\u06a9\u0627\u0631\u06cc \u0645\u06cc\u062f\u06cc\u0627",
"Alternative source": "\u0633\u06d5\u0631\u0686\u0627\u0648\u06d5\u06cc \u062c\u06ce\u06af\u0631\u06d5\u0648\u06d5",
"Poster": "\u067e\u06c6\u0633\u062a\u06d5\u0631",
"Paste your embed code below:": "\u06a9\u06c6\u062f\u06cc \u062a\u06ce\u062e\u0633\u062a\u0646\u06d5\u06a9\u06d5\u062a \u0644\u06d5\u062e\u0648\u0627\u0631\u06d5\u0648\u06d5 \u0628\u0644\u06a9\u06ce\u0646\u06d5:",
"Embed": "\u062a\u06ce\u062e\u0633\u062a\u0646",
"Media": "\u0645\u06cc\u062f\u06cc\u0627",
"Nonbreaking space": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u0646\u06d5\u0628\u0695\u0627\u0648",
"Page break": "\u0628\u0695\u06cc\u0646\u06cc \u067e\u06d5\u0695\u06d5",
"Paste as text": "\u0644\u06a9\u0627\u0646\u062f\u0646 \u0648\u06d5\u06a9 \u062f\u06d5\u0642",
"Preview": "\u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646",
"Print": "\u0686\u0627\u067e\u06a9\u0631\u062f\u0646",
"Save": "\u067e\u0627\u0634\u06d5\u06a9\u06d5\u0648\u062a",
"Find": "\u062f\u06c6\u0632\u06cc\u0646\u06d5\u0648\u06d5",
"Replace with": "\u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646 \u0644\u06d5\u06af\u06d5\u06b5",
"Replace": "\u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646",
"Replace all": "\u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646\u06cc \u0647\u06d5\u0645\u0648\u0648",
"Prev": "\u067e\u06ce\u0634\u0648\u0648",
"Next": "\u062f\u0648\u0627\u062a\u0631",
"Find and replace": "\u062f\u06c6\u0632\u06cc\u0646\u06d5\u0648\u06d5 \u0648 \u062c\u06ce\u06af\u06c6\u0695\u06cc\u0646",
"Could not find the specified string.": "\u0695\u06cc\u0632\u0628\u06d5\u0646\u062f\u06cc \u062f\u06cc\u0627\u0631\u06cc\u06a9\u0631\u0627\u0648 \u0646\u0627\u062f\u06c6\u0632\u0631\u06ce\u062a\u06d5\u0648\u06d5.",
"Match case": "\u0647\u0627\u0648\u062a\u0627\u0628\u0648\u0648\u0646\u06cc \u0628\u0627\u0631",
"Whole words": "\u0647\u06d5\u0645\u0648\u0648 \u0648\u0634\u06d5\u06a9\u0627\u0646",
"Spellcheck": "\u067e\u0634\u06a9\u0646\u06cc\u0646\u06cc \u0695\u06ce\u0646\u0648\u0648\u0633",
"Ignore": "\u0644\u06d5\u0628\u06cc\u0631\u06a9\u0631\u062f\u0646",
"Ignore all": "\u0644\u06d5\u0628\u06cc\u0631\u06a9\u0631\u062f\u0646\u06cc \u0647\u06d5\u0645\u0648\u0648",
"Finish": "\u062a\u06d5\u0648\u0627\u0648",
"Add to Dictionary": "\u0632\u06cc\u0627\u062f\u06a9\u0631\u062f\u0646 \u0628\u06c6 \u0641\u06d5\u0631\u0647\u06d5\u0646\u06af",
"Insert table": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u062e\u0634\u062a\u06d5",
"Table properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u062e\u0634\u062a\u06d5",
"Delete table": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u062e\u0634\u062a\u06d5",
"Cell": "\u062e\u0627\u0646\u06d5",
"Row": "\u0695\u06cc\u0632",
"Column": "\u0633\u062a\u0648\u0648\u0646",
"Cell properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u062e\u0627\u0646\u06d5",
"Merge cells": "\u06cc\u06d5\u06a9\u062e\u0633\u062a\u0646\u06cc \u062e\u0627\u0646\u06d5\u06a9\u0627\u0646",
"Split cell": "\u062c\u06cc\u0627\u06a9\u0631\u062f\u0646\u06d5\u0648\u06d5\u06cc \u062e\u0627\u0646\u06d5",
"Insert row before": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0695\u06cc\u0632 \u0628\u06c6 \u067e\u06ce\u0634\u062a\u0631",
"Insert row after": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0695\u06cc\u0632 \u0628\u06c6 \u062f\u0648\u0627\u062a\u0631",
"Delete row": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u0695\u06cc\u0632",
"Row properties": "\u062a\u0627\u06cc\u0628\u0647\u200c\u062a\u0645\u0647\u200c\u0646\u062f\u06cc\u06cc\u06d5\u06a9\u0627\u0646\u06cc \u0695\u06cc\u0632",
"Cut row": "\u0628\u0695\u06cc\u0646\u06cc \u0695\u06cc\u0632",
"Copy row": "\u0644\u06d5\u0628\u06d5\u0631\u06af\u0631\u062a\u0646\u06d5\u0648\u06d5\u06cc \u0695\u06cc\u0632",
"Paste row before": "\u0644\u06a9\u0627\u0646\u062f\u0646\u06cc \u0695\u06cc\u0632 \u0644\u06d5 \u067e\u06ce\u0634\u062a\u0631",
"Paste row after": "\u0644\u06a9\u0627\u0646\u062f\u0646\u06cc \u0695\u06cc\u0632 \u0644\u06d5 \u062f\u0648\u0627\u062a\u0631",
"Insert column before": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0633\u062a\u0648\u0648\u0646 \u0628\u06c6 \u067e\u06ce\u0634\u062a\u0631",
"Insert column after": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u0633\u062a\u0648\u0648\u0646 \u0628\u06c6 \u062f\u0648\u0627\u062a\u0631",
"Delete column": "\u0633\u0695\u06cc\u0646\u06d5\u0648\u06d5\u06cc \u0633\u062a\u0648\u0648\u0646",
"Cols": "\u0633\u062a\u0648\u0648\u0646\u06d5\u06a9\u0627\u0646",
"Rows": "\u0695\u06cc\u0632\u06d5\u06a9\u0627\u0646",
"Width": "\u062f\u0631\u06ce\u0698\u06cc",
"Height": "\u0628\u06d5\u0631\u0632\u06cc",
"Cell spacing": "\u0628\u06c6\u0634\u0627\u06cc\u06cc \u062e\u0627\u0646\u06d5",
"Cell padding": "\u0646\u0627\u0648\u067e\u06c6\u0634\u06cc \u062e\u0627\u0646\u06d5",
"Caption": "\u0633\u06d5\u0631\u062f\u06ce\u0695",
"Left": "\u0686\u06d5\u067e",
"Center": "\u0646\u0627\u0648\u06d5\u0695\u0627\u0633\u062a",
"Right": "\u0695\u0627\u0633\u062a",
"Cell type": "\u062c\u06c6\u0631\u06cc \u062e\u0627\u0646\u06d5",
"Scope": "\u0628\u0648\u0627\u0631",
"Alignment": "\u0644\u0627\u06af\u0631\u062a\u0646",
"H Align": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0626\u0627\u0633\u06c6\u06cc\u06cc",
"V Align": "\u0644\u0627\u06af\u0631\u062a\u0646\u06cc \u0633\u062a\u0648\u0648\u0646\u06cc",
"Top": "\u0633\u06d5\u0631\u06d5\u0648\u06d5",
"Middle": "\u0646\u0627\u0648\u06d5\u0646\u062f",
"Bottom": "\u0698\u06ce\u0631\u06d5\u0648\u06d5",
"Header cell": "\u062e\u0627\u0646\u06d5\u06cc \u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5",
"Row group": "\u06a9\u06c6\u0645\u06d5\u06b5\u06d5 \u0695\u06cc\u0632",
"Column group": "\u06a9\u06c6\u0645\u06d5\u06b5\u06d5 \u0633\u062a\u0648\u0648\u0646",
"Row type": "\u062c\u06c6\u0631\u06cc \u0695\u06cc\u0632",
"Header": "\u0633\u06d5\u0631\u067e\u06d5\u0695\u06d5",
"Body": "\u0646\u0627\u0648\u06d5\u0695\u06c6\u06a9",
"Footer": "\u067e\u06ce\u067e\u06d5\u0695\u06d5",
"Border color": "\u0695\u06d5\u0646\u06af\u06cc \u0633\u0646\u0648\u0648\u0631",
"Insert template": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648\u06cc \u062f\u0627\u0695\u06ce\u0698\u06d5",
"Templates": "\u062f\u0627\u0695\u06ce\u0698\u06d5\u06a9\u0627\u0646",
"Template": "Template",
"Text color": "\u0695\u06d5\u0646\u06af\u06cc \u062f\u06d5\u0642",
"Background color": "\u0695\u06d5\u0646\u06af\u06cc \u067e\u0627\u0634\u0628\u0646\u06d5\u0645\u0627",
"Custom...": "\u062f\u0627\u0646\u0631\u0627\u0648...",
"Custom color": "\u0695\u06d5\u0646\u06af\u06cc \u062f\u0627\u0646\u0631\u0627\u0648",
"No color": "\u0628\u06d5\u0628\u06ce \u0695\u06d5\u0646\u06af",
"Table of Contents": "Table of Contents",
"Show blocks": "\u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646\u06cc \u0628\u0644\u06c6\u06a9\u06d5\u06a9\u0627\u0646",
"Show invisible characters": "\u067e\u06cc\u0634\u0627\u0646\u062f\u0627\u0646\u06cc \u0646\u0648\u0648\u0633\u06d5 \u0634\u0627\u0631\u0627\u0648\u06d5\u06a9\u0627\u0646",
"Words: {0}": "\u0648\u0634\u06d5\u06a9\u0627\u0646: {0}",
"{0} words": "{0} words",
"File": "\u067e\u06d5\u0695\u06af\u06d5",
"Edit": "\u062f\u06d5\u0633\u062a\u06a9\u0627\u0631\u06cc",
"Insert": "\u062e\u0633\u062a\u0646\u06d5\u0646\u0627\u0648",
"View": "\u0628\u06cc\u0646\u06cc\u0646",
"Format": "\u0634\u06ce\u0648\u0627\u0632",
"Table": "\u062e\u0634\u062a\u06d5",
"Tools": "\u0626\u0627\u0645\u0631\u0627\u0632\u06d5\u06a9\u0627\u0646",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0646\u0627\u0648\u0686\u06d5\u06cc \u062f\u06d5\u0642\u06cc \u062a\u06d5\u0648\u0627\u0648. ALT-F9 \u062f\u0627\u06af\u0631\u06d5 \u0628\u06c6 \u0644\u06cc\u0633\u062a\u06d5. ALT-F10 \u062f\u0627\u06af\u0631\u06d5 \u0628\u06c6 \u062a\u0648\u0648\u06b5\u0627\u0645\u0631\u0627\u0632. ALT-0 \u062f\u0627\u06af\u0631\u06d5 \u0628\u06c6 \u06cc\u0627\u0631\u0645\u06d5\u062a\u06cc"
});js/tinymce/langs/sk.js000064400000041760151727150360010726 0ustar00tinymce.addI18n('sk',{
"Redo": "Znova",
"Undo": "Sp\u00e4\u0165",
"Cut": "Vystrihn\u00fa\u0165",
"Copy": "Kop\u00edrova\u0165",
"Paste": "Prilepi\u0165",
"Select all": "Ozna\u010di\u0165 v\u0161etko",
"New document": "Nov\u00fd dokument",
"Ok": "Ok",
"Cancel": "Zru\u0161i\u0165",
"Visual aids": "Vizu\u00e1lne pom\u00f4cky",
"Bold": "Tu\u010dn\u00e9",
"Italic": "Kurz\u00edva",
"Underline": "Pod\u010diarknut\u00e9",
"Strikethrough": "Pre\u010diarknut\u00e9",
"Superscript": "Horn\u00fd index",
"Subscript": "Doln\u00fd index",
"Clear formatting": "Vymaza\u0165 form\u00e1tovanie",
"Align left": "Zarovna\u0165 v\u013eavo",
"Align center": "Zarovna\u0165 na stred",
"Align right": "Zarovna\u0165 vpravo",
"Justify": "Zarovna\u0165",
"Bullet list": "Zoznam s odr\u00e1\u017ekami",
"Numbered list": "\u010c\u00edslovan\u00fd zoznam",
"Decrease indent": "Zmen\u0161i\u0165 odsadenie",
"Increase indent": "Zv\u00e4\u010d\u0161i\u0165 odsadenie",
"Close": "Zatvori\u0165",
"Formats": "Form\u00e1ty",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prehliada\u010d nepodporuje priamy pr\u00edstup do schr\u00e1nky. Pou\u017eite kl\u00e1vesov\u00e9 skratky Ctrl+X\/C\/V.",
"Headers": "Z\u00e1hlavia",
"Header 1": "Z\u00e1hlavie 1",
"Header 2": "Z\u00e1hlavie 2",
"Header 3": "Z\u00e1hlavie 3",
"Header 4": "Z\u00e1hlavie 4",
"Header 5": "Z\u00e1hlavie 5",
"Header 6": "Z\u00e1hlavie 6",
"Headings": "Nadpisy",
"Heading 1": "Nadpis 1",
"Heading 2": "Nadpis 2",
"Heading 3": "Nadpis 3",
"Heading 4": "Nadpis 4",
"Heading 5": "Nadpis 5",
"Heading 6": "Nadpis 6",
"Preformatted": "Predform\u00e1tovan\u00e9",
"Div": "Div",
"Pre": "Pre",
"Code": "K\u00f3d",
"Paragraph": "Odstavec",
"Blockquote": "Blockquote",
"Inline": "Vlo\u017een\u00e9 \u0161t\u00fdly",
"Blocks": "Bloky",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Vkladanie je v m\u00f3de neform\u00e1tovan\u00e9ho textu. Vkladan\u00fd obsah bude vlo\u017een\u00fd ako neform\u00e1tovan\u00fd, a\u017e pok\u00fdm t\u00fato mo\u017enos\u0165 nevypnete.",
"Fonts": "Typy p\u00edsma",
"Font Sizes": "Ve\u013ekosti p\u00edsma",
"Class": "Trieda",
"Browse for an image": "N\u00e1js\u0165 obr\u00e1zok",
"OR": "ALEBO",
"Drop an image here": "Pretiahnite obr\u00e1zok sem",
"Upload": "Nahra\u0165",
"Block": "Blok",
"Align": "Zarovna\u0165",
"Default": "V\u00fdchodzie",
"Circle": "Kruh",
"Disc": "Disk",
"Square": "\u0160tvorec",
"Lower Alpha": "Mal\u00e9 p\u00edsmen\u00e1",
"Lower Greek": "Mal\u00e9 gr\u00e9cke p\u00edsmen\u00e1",
"Lower Roman": "Mal\u00e9 r\u00edmske \u010d\u00edslice",
"Upper Alpha": "Ve\u013ek\u00e9 p\u00edsmen\u00e1",
"Upper Roman": "Ve\u013ek\u00e9 r\u00edmske \u010d\u00edslice",
"Anchor...": "Kotva...",
"Name": "N\u00e1zov",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id by malo za\u010d\u00edna\u0165 p\u00edsmenom, nasledovan\u00e9 p\u00edsmenami, \u010d\u00edslami, pom\u013a\u010dkami, bodkami, dvojbodkami alebo podtr\u017en\u00edkmi.",
"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zmeny, naozaj chcete opusti\u0165 str\u00e1nku?",
"Restore last draft": "Obnovi\u0165 posledn\u00fd koncept",
"Special character...": "\u0160peci\u00e1lny znak...",
"Source code": "Zdrojov\u00fd k\u00f3d",
"Insert\/Edit code sample": "Vlo\u017ei\u0165\/upravi\u0165 vzorku k\u00f3du",
"Language": "Jazyk",
"Code sample...": "Vzorka k\u00f3du...",
"Color Picker": "V\u00fdber farieb",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Z\u013eava doprava",
"Right to left": "Sprava do\u013eava",
"Emoticons...": "Smajl\u00edky...",
"Metadata and Document Properties": "Meta\u00fadaje a vlastnosti dokumentu",
"Title": "Nadpis",
"Keywords": "K\u013e\u00fa\u010dov\u00e9 slov\u00e1",
"Description": "Popis",
"Robots": "Preh\u013ead\u00e1vacie roboty",
"Author": "Autor",
"Encoding": "K\u00f3dovanie",
"Fullscreen": "Na cel\u00fa obrazovku",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Pluginy",
"Handy Shortcuts": "U\u017eito\u010dn\u00e9 odkazy",
"Horizontal line": "Horizont\u00e1lna \u010diara",
"Insert\/edit image": "Vlo\u017ei\u0165\/upravi\u0165 obr\u00e1zok",
"Image description": "Popis obr\u00e1zku",
"Source": "Zdroj",
"Dimensions": "Rozmery",
"Constrain proportions": "Vymedzen\u00e9 proporcie",
"General": "Hlavn\u00e9",
"Advanced": "Pokro\u010dil\u00e9",
"Style": "\u0160t\u00fdl",
"Vertical space": "Vertik\u00e1lny priestor",
"Horizontal space": "Horizont\u00e1lny priestor",
"Border": "Or\u00e1movanie",
"Insert image": "Vlo\u017ei\u0165 obr\u00e1zok",
"Image...": "Obr\u00e1zok...",
"Image list": "Zoznam obr\u00e1zkov",
"Rotate counterclockwise": "Oto\u010di\u0165 proti smeru hodinov\u00fdch ru\u010di\u010diek",
"Rotate clockwise": "Oto\u010di\u0165 v smere hodinov\u00fdch ru\u010di\u010diek",
"Flip vertically": "Preklopi\u0165 vertik\u00e1lne",
"Flip horizontally": "Preklopi\u0165 horizont\u00e1lne",
"Edit image": "Upravi\u0165 obr\u00e1zok",
"Image options": "Mo\u017enosti obr\u00e1zku",
"Zoom in": "Pribl\u00ed\u017ei\u0165",
"Zoom out": "Oddiali\u0165",
"Crop": "Vyreza\u0165",
"Resize": "Zmeni\u0165 ve\u013ekos\u0165",
"Orientation": "Orient\u00e1cia",
"Brightness": "Jas",
"Sharpen": "Zaostri\u0165",
"Contrast": "Kontrast",
"Color levels": "\u00darovne farieb",
"Gamma": "Gama",
"Invert": "Invertova\u0165",
"Apply": "Pou\u017ei\u0165",
"Back": "Sp\u00e4\u0165",
"Insert date\/time": "Vlo\u017ei\u0165 d\u00e1tum\/\u010das",
"Date\/time": "D\u00e1tum\/\u010das",
"Insert\/Edit Link": "Vlo\u017ei\u0165\/Upravi\u0165 odkaz",
"Insert\/edit link": "Vlo\u017ei\u0165\/upravi\u0165 odkaz",
"Text to display": "Zobrazen\u00fd text",
"Url": "Url",
"Open link in...": "Otvori\u0165 odkaz v...",
"Current window": "Aktu\u00e1lne okno",
"None": "\u017diadne",
"New window": "Nov\u00e9 okno",
"Remove link": "Odstr\u00e1ni\u0165 odkaz",
"Anchors": "Kotvy",
"Link...": "Odkaz...",
"Paste or type a link": "Prilepte alebo nap\u00ed\u0161te odkaz",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, ktor\u00fa ste vlo\u017eili je pravdepodobne emailov\u00e1 adresa. \u017del\u00e1te si prida\u0165 vy\u017eadovan\u00fa mailto: predponu?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL adresa ktor\u00fa ste zadali vyzer\u00e1 ako extern\u00fd odkaz. Chcete prida\u0165 vy\u017eadovan\u00fa http:\/\/ predponu?",
"Link list": "Zoznam odkazov",
"Insert video": "Vlo\u017ei\u0165 video",
"Insert\/edit video": "Vlo\u017ei\u0165\/upravi\u0165 video",
"Insert\/edit media": "Vlo\u017ei\u0165\/upravi\u0165 m\u00e9di\u00e1",
"Alternative source": "Alternat\u00edvny zdroj",
"Alternative source URL": "Alternat\u00edvny zdroj URL",
"Media poster (Image URL)": "Obr\u00e1zok m\u00e9dia (URL obr\u00e1zka)",
"Paste your embed code below:": "Vlo\u017ete k\u00f3d pre vlo\u017eenie na str\u00e1nku:",
"Embed": "Vlo\u017een\u00e9",
"Media...": "M\u00e9di\u00e1...",
"Nonbreaking space": "Nedelite\u013en\u00e1 medzera",
"Page break": "Zalomenie str\u00e1nky",
"Paste as text": "Vlo\u017ei\u0165 ako text",
"Preview": "N\u00e1h\u013ead",
"Print...": "Tla\u010d...",
"Save": "Ulo\u017ei\u0165",
"Find": "H\u013eada\u0165",
"Replace with": "Nahradi\u0165 za",
"Replace": "Nahradi\u0165",
"Replace all": "Nahradi\u0165 v\u0161etko",
"Previous": "Predch\u00e1dzaj\u00face",
"Next": "Nasleduj\u00face",
"Find and replace...": "N\u00e1js\u0165 a nahradi\u0165...",
"Could not find the specified string.": "Zadan\u00fd re\u0165azec sa nena\u0161iel.",
"Match case": "Rozli\u0161ova\u0165 ve\u013ek\u00e9\/mal\u00e9",
"Find whole words only": "H\u013eada\u0165 len cel\u00e9 slov\u00e1",
"Spell check": "Kontrola pravopisu",
"Ignore": "Ignorova\u0165",
"Ignore all": "Ignorova\u0165 v\u0161etko",
"Finish": "Dokon\u010di\u0165",
"Add to Dictionary": "Prida\u0165 do slovn\u00edka",
"Insert table": "Vlo\u017ei\u0165 tabu\u013eku",
"Table properties": "Nastavenia tabu\u013eky",
"Delete table": "Zmaza\u0165 tabu\u013eku",
"Cell": "Bunka",
"Row": "Riadok",
"Column": "St\u013apec",
"Cell properties": "Vlastnosti bunky",
"Merge cells": "Spoji\u0165 bunky",
"Split cell": "Rozdeli\u0165 bunku",
"Insert row before": "Vlo\u017ei\u0165 nov\u00fd riadok pred",
"Insert row after": "Vlo\u017ei\u0165 nov\u00fd riadok za",
"Delete row": "Zmaza\u0165 riadok",
"Row properties": "Vlastnosti riadku",
"Cut row": "Vystrihn\u00fa\u0165 riadok",
"Copy row": "Kop\u00edrova\u0165 riadok",
"Paste row before": "Vlo\u017ei\u0165 riadok pred",
"Paste row after": "Vlo\u017ei\u0165 riadok za",
"Insert column before": "Prida\u0165 nov\u00fd st\u013apec pred",
"Insert column after": "Prida\u0165 nov\u00fd st\u013apec za",
"Delete column": "Vymaza\u0165 st\u013apec",
"Cols": "St\u013apce",
"Rows": "Riadky",
"Width": "\u0160\u00edrka",
"Height": "V\u00fd\u0161ka",
"Cell spacing": "Priestor medzi bunkami",
"Cell padding": "Odsadenie v bunk\u00e1ch",
"Show caption": "Zobrazi\u0165 popis",
"Left": "V\u013eavo",
"Center": "Na stred",
"Right": "Vpravo",
"Cell type": "Typ bunky",
"Scope": "Oblas\u0165",
"Alignment": "Zarovnanie",
"H Align": "Horizont\u00e1lne zarovnanie",
"V Align": "Vertik\u00e1lne zarovnanie",
"Top": "Vrch",
"Middle": "Stred",
"Bottom": "Spodok",
"Header cell": "Bunka z\u00e1hlavia",
"Row group": "Skupina riadkov",
"Column group": "Skupina st\u013apcov",
"Row type": "Typ riadku",
"Header": "Z\u00e1hlavie",
"Body": "Telo",
"Footer": "P\u00e4ti\u010dka",
"Border color": "Farba or\u00e1movania",
"Insert template...": "Vlo\u017ei\u0165 \u0161abl\u00f3nu...",
"Templates": "\u0160abl\u00f3ny",
"Template": "\u0160abl\u00f3na",
"Text color": "Farba textu",
"Background color": "Farba pozadia",
"Custom...": "Vlastn\u00e1...",
"Custom color": "Vlastn\u00e1 farba",
"No color": "Bez farby",
"Remove color": "Odstr\u00e1ni\u0165 farbu",
"Table of Contents": "Obsah",
"Show blocks": "Zobrazi\u0165 bloky",
"Show invisible characters": "Zobrazi\u0165 skryt\u00e9 znaky",
"Word count": "Po\u010det slov",
"Count": "Po\u010det",
"Document": "Dokument",
"Selection": "V\u00fdber",
"Words": "Slov\u00e1",
"Words: {0}": "Slov: {0}",
"{0} words": "{0} slov\u00e1\/slov",
"File": "S\u00fabor",
"Edit": "Upravi\u0165",
"Insert": "Vlo\u017ei\u0165",
"View": "Zobrazi\u0165",
"Format": "Form\u00e1t",
"Table": "Tabu\u013eka",
"Tools": "N\u00e1stroje",
"Powered by {0}": "Pou\u017e\u00edva {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textov\u00e9 pole. Stla\u010dte ALT-F9 pre zobrazenie menu, ALT-F10 pre zobrazenie panela n\u00e1strojov, ALT-0 pre n\u00e1povedu.",
"Image title": "N\u00e1zov obr\u00e1zka",
"Border width": "\u0160\u00edrka okraja",
"Border style": "\u0160t\u00fdl okraja",
"Error": "Chyba",
"Warn": "Upozornenie",
"Valid": "Platn\u00e9",
"To open the popup, press Shift+Enter": "Na otvorenie kontextovej ponuky stla\u010dte Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Oblas\u0165 pre text vo form\u00e1te RTF. Stla\u010dte ALT-0 pre n\u00e1povedu.",
"System Font": "Syst\u00e9mov\u00e9 p\u00edsmo",
"Failed to upload image: {0}": "Obr\u00e1zok sa nepodarilo nahra\u0165: {0}",
"Failed to load plugin: {0} from url {1}": "Plugin: {0} sa nepodarilo nahra\u0165 z url {1}",
"Failed to load plugin url: {0}": "Nepodarilo sa nahra\u0165 plugin url: {0}",
"Failed to initialize plugin: {0}": "Nepodarilo sa inicializova\u0165 plugin: {0}",
"example": "pr\u00edklad",
"Search": "Vyh\u013eada\u0165",
"All": "V\u0161etko",
"Currency": "Mena",
"Text": "Text",
"Quotations": "Kvot\u00e1cie",
"Mathematical": "Matematick\u00e9",
"Extended Latin": "Roz\u0161\u00edren\u00e1 latinka",
"Symbols": "Symboly",
"Arrows": "\u0160\u00edpky",
"User Defined": "Definovan\u00e9 pou\u017e\u00edvate\u013eom",
"dollar sign": "znak pre dol\u00e1r",
"currency sign": "znak meny",
"euro-currency sign": "znak eura",
"colon sign": "znak dvojbodky",
"cruzeiro sign": "znak pre cruzeiro",
"french franc sign": "znak pre franc\u00fazsky frank",
"lira sign": "znak pre l\u00edru",
"mill sign": "znak pre mill",
"naira sign": "znak pre nairu",
"peseta sign": "znak pre pesetu",
"rupee sign": "znak pre rupiu",
"won sign": "znak pre won",
"new sheqel sign": "znak pre nov\u00fd \u0161ekel",
"dong sign": "znak pre dong",
"kip sign": "znak pre kip",
"tugrik sign": "znak pre tugrik",
"drachma sign": "znak pre drachmu",
"german penny symbol": "znak pre nemeck\u00fd pfennig",
"peso sign": "znak pre peso",
"guarani sign": "znak pre guarani",
"austral sign": "znak pre austral",
"hryvnia sign": "znak pre hrivnu",
"cedi sign": "znak pre cedi",
"livre tournois sign": "znak pre livre tournois",
"spesmilo sign": "znak pre spesmilo",
"tenge sign": "znak pre tenge",
"indian rupee sign": "znak pre indick\u00fa rupiu",
"turkish lira sign": "znak pre tureck\u00fa l\u00edru",
"nordic mark sign": "znak pre nordick\u00fa marku",
"manat sign": "znak pre manat",
"ruble sign": "znak pre rube\u013e",
"yen character": "znak pre jen",
"yuan character": "znak pre j\u00fcan",
"yuan character, in hong kong and taiwan": "znak pre j\u00fcan, v Hongkongu a Taiwane",
"yen\/yuan character variant one": "znak pre jen\/j\u00fcan variant jedna",
"Loading emoticons...": "Na\u010d\u00edtavam smajl\u00edky...",
"Could not load emoticons": "Smajl\u00edky sa nepodarilo na\u010d\u00edta\u0165",
"People": "\u013dudia",
"Animals and Nature": "Zvierat\u00e1 a pr\u00edroda",
"Food and Drink": "Jedlo a n\u00e1poje",
"Activity": "Aktivity",
"Travel and Places": "Cestovanie a miesta",
"Objects": "Objekty",
"Flags": "Vlajky",
"Characters": "Znaky",
"Characters (no spaces)": "Znaky (bez medzier)",
"{0} characters": "Znaky: {0}",
"Error: Form submit field collision.": "Chyba: konflikt po\u013ea odosielania formul\u00e1ra.",
"Error: No form element found.": "Chyba: nena\u0161iel sa prvok formul\u00e1ra.",
"Update": "Aktualizova\u0165",
"Color swatch": "Vzorky farieb",
"Turquoise": "Tyrkysov\u00e1",
"Green": "Zelen\u00e1",
"Blue": "Modr\u00e1",
"Purple": "Fialov\u00e1",
"Navy Blue": "N\u00e1morn\u00edcka modr\u00e1",
"Dark Turquoise": "Tmavotyrkysov\u00e1",
"Dark Green": "Tmavozelen\u00e1",
"Medium Blue": "Stredn\u00e1 modr\u00e1",
"Medium Purple": "Stredn\u00e1 fialov\u00e1",
"Midnight Blue": "Polno\u010dn\u00e1 modr\u00e1",
"Yellow": "\u017dlt\u00e1",
"Orange": "Oran\u017eov\u00e1",
"Red": "\u010cerven\u00e1",
"Light Gray": "Svetlosiv\u00e1",
"Gray": "Siv\u00e1",
"Dark Yellow": "Tmavo\u017elt\u00e1",
"Dark Orange": "Tmavooran\u017eov\u00e1",
"Dark Red": "Tmavo\u010derven\u00e1",
"Medium Gray": "Stredn\u00e1 siv\u00e1",
"Dark Gray": "Tmavosiv\u00e1",
"Light Green": "Svetlozelen\u00e1",
"Light Yellow": "Svetlo\u017elt\u00e1",
"Light Red": "Svetlo\u010derven\u00e1",
"Light Purple": "Svetlofialov\u00e1",
"Light Blue": "Svetlomodr\u00e1",
"Dark Purple": "Tmavofialov\u00e1",
"Dark Blue": "Tmavomodr\u00e1",
"Black": "\u010cierna",
"White": "Biela",
"Switch to or from fullscreen mode": "Prepn\u00fa\u0165 do alebo z re\u017eimu plnej obrazovky",
"Open help dialog": "Otvori\u0165 okno n\u00e1povedy",
"history": "hist\u00f3ria",
"styles": "\u0161t\u00fdly",
"formatting": "form\u00e1tovanie",
"alignment": "zarovnanie",
"indentation": "odsadenie",
"permanent pen": "fixka",
"comments": "koment\u00e1re",
"Format Painter": "Kop\u00edrova\u0165 form\u00e1t",
"Insert\/edit iframe": "Vlo\u017ei\u0165\/upravi\u0165 iframe",
"Capitalization": "Ve\u013ek\u00e9 p\u00edsmen\u00e1",
"lowercase": "mal\u00e9 p\u00edsmen\u00e1",
"UPPERCASE": "V\u0160ETKY P\u00cdSMEN\u00c1 VE\u013dK\u00c9",
"Title Case": "Prv\u00e9 P\u00edsmen\u00e1 Ve\u013ek\u00e9",
"Permanent Pen Properties": "Vlastnosti fixky",
"Permanent pen properties...": "Vlastnosti fixky...",
"Font": "P\u00edsmo",
"Size": "Ve\u013ekos\u0165",
"More...": "Viac...",
"Spellcheck Language": "Jazyk kontroly pravopisu",
"Select...": "Vyberte...",
"Preferences": "Preferencie",
"Yes": "\u00c1no",
"No": "Nie",
"Keyboard Navigation": "Navig\u00e1cia pomocou kl\u00e1vesnice",
"Version": "Verzia",
"Anchor": "Odkaz",
"Special character": "\u0160peci\u00e1lny znak",
"Color": "Farba",
"Emoticons": "Smajl\u00edci",
"Document properties": "Vlastnosti dokumentu",
"Image": "Obr\u00e1zok",
"Insert link": "Vlo\u017ei\u0165 odkaz",
"Target": "Cie\u013e",
"Link": "Odkaz",
"Poster": "Uk\u00e1\u017eka",
"Media": "M\u00e9di\u00e1",
"Print": "Tla\u010di\u0165",
"Prev": "Predch\u00e1dzaj\u00face",
"Find and replace": "Vyh\u013eada\u0165 a nahradi\u0165",
"Whole words": "Cel\u00e9 slov\u00e1",
"Spellcheck": "Kontrola pravopisu",
"Caption": "Popisok",
"Insert template": "Vlo\u017ei\u0165 \u0161abl\u00f3nu"
});js/tinymce/langs/hr.js000064400000035537151727150360010727 0ustar00tinymce.addI18n('hr',{
"Redo": "Ponovi",
"Undo": "Poni\u0161ti",
"Cut": "Izre\u017ei",
"Copy": "Kopiraj",
"Paste": "Zalijepi",
"Select all": "Odaberi sve",
"New document": "Novi dokument",
"Ok": "U redu",
"Cancel": "Odustani",
"Visual aids": "Vizualna pomo\u0107",
"Bold": "Podebljano",
"Italic": "Kurziv",
"Underline": "Podcrtaj",
"Strikethrough": "Prekri\u017ei",
"Superscript": "Eksponent",
"Subscript": "Indeks",
"Clear formatting": "Izbri\u0161i oblikovanje",
"Align left": "Poravnaj lijevo",
"Align center": "Poravnaj po sredini",
"Align right": "Poravnaj desno",
"Justify": "Obostrano poravnanje",
"Bullet list": "Popis s oznakama",
"Numbered list": "Numerirani popis",
"Decrease indent": "Smanji uvla\u010denje",
"Increase indent": "Pove\u0107aj uvla\u010denje",
"Close": "Zatvori",
"Formats": "Formati",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 preglednik ne podr\u017eava izravan pristup me\u0111uspremniku. Umjesto toga upotrijebite tipkovni\u010dke pre\u010dace Ctrl\u00a0+\u00a0X\/C\/V.",
"Headers": "Zaglavlja",
"Header 1": "Zaglavlje 1",
"Header 2": "Zaglavlje 2",
"Header 3": "Zaglavlje 3",
"Header 4": "Zaglavlje 4",
"Header 5": "Zaglavlje 5",
"Header 6": "Zaglavlje 6",
"Headings": "Zaglavlja",
"Heading 1": "Zaglavlje 1",
"Heading 2": "Zaglavlje 2",
"Heading 3": "Zaglavlje 3",
"Heading 4": "Zaglavlje 4",
"Heading 5": "Zaglavlje 5",
"Heading 6": "Zaglavlje 6",
"Preformatted": "Prethodno oblikovano",
"Div": "Div",
"Pre": "Pre",
"Code": "Kod",
"Paragraph": "Odlomak",
"Blockquote": "Blockquote",
"Inline": "U retku",
"Blocks": "Blokovi",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Akcija zalijepi od sada lijepi \u010disti tekst. Sadr\u017eaj \u0107e biti zaljepljen kao \u010disti tekst sve dok ne isklju\u010dite ovu opciju.",
"Fonts": "Fontovi",
"Font Sizes": "Veli\u010dine fonta",
"Class": "Razred",
"Browse for an image": "Potra\u017eite sliku",
"OR": "ILI",
"Drop an image here": "Ispustite sliku ovdje",
"Upload": "U\u010ditaj",
"Block": "Blok",
"Align": "Poravnaj",
"Default": "Zadano",
"Circle": "Krug",
"Disc": "To\u010dka",
"Square": "Kvadrat",
"Lower Alpha": "Mala slova",
"Lower Greek": "Mala gr\u010dka slova",
"Lower Roman": "Mala rimska slova",
"Upper Alpha": "Velika slova",
"Upper Roman": "Velika rimska slova",
"Anchor...": "Fiksna to\u010dka...",
"Name": "Ime",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id treba po\u010dinjati slovom, a nakon toga slijede samo slova, brojevi, crtice, to\u010dke, dvoto\u010dke i podvlake.",
"You have unsaved changes are you sure you want to navigate away?": "Postoje ne pohranjene izmjene, jeste li sigurni da \u017eelite oti\u0107i?",
"Restore last draft": "Vrati posljednju skicu",
"Special character...": "Poseban znak...",
"Source code": "Izvorni kod",
"Insert\/Edit code sample": "Umetni\/Uredi primjer k\u00f4da",
"Language": "Jezik",
"Code sample...": "Primjerak k\u00f4da...",
"Color Picker": "Izabira\u010d boja",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "S lijeva na desno",
"Right to left": "S desna na lijevo",
"Emoticons...": "Emotikoni...",
"Metadata and Document Properties": "Metapodaci i svojstva dokumenta",
"Title": "Naslov",
"Keywords": "Klju\u010dne rije\u010di",
"Description": "Opis",
"Robots": "Roboti pretra\u017eiva\u010da",
"Author": "Autor",
"Encoding": "Kodna stranica",
"Fullscreen": "Cijeli ekran",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Dodaci",
"Handy Shortcuts": "Korisni pre\u010daci",
"Horizontal line": "Horizontalna linija",
"Insert\/edit image": "Umetni\/izmijeni sliku",
"Image description": "Opis slike",
"Source": "Izvor",
"Dimensions": "Dimenzije",
"Constrain proportions": "Zadr\u017ei proporcije",
"General": "Op\u0107enito",
"Advanced": "Napredno",
"Style": "Stil",
"Vertical space": "Okomit razmak",
"Horizontal space": "Horizontalan razmak",
"Border": "Rub",
"Insert image": "Umetni sliku",
"Image...": "Slika...",
"Image list": "Image list",
"Rotate counterclockwise": "Rotiraj lijevo",
"Rotate clockwise": "Rotiraj desno",
"Flip vertically": "Obrni vertikalno",
"Flip horizontally": "Obrni horizontalno",
"Edit image": "Uredi sliku",
"Image options": "Opcije slike",
"Zoom in": "Pove\u0107aj",
"Zoom out": "Smanji",
"Crop": "Obre\u017ei",
"Resize": "Promjeni veli\u010dinu",
"Orientation": "Orijentacija",
"Brightness": "Svjetlina",
"Sharpen": "Izo\u0161travanje",
"Contrast": "Kontrast",
"Color levels": "Razine boje",
"Gamma": "Gamma",
"Invert": "Invertiraj",
"Apply": "Primijeni",
"Back": "Natrag",
"Insert date\/time": "Umetni datum\/vrijeme",
"Date\/time": "Datum\/vrijeme",
"Insert\/Edit Link": "Umetni\/uredi poveznicu",
"Insert\/edit link": "Umetni\/izmijeni poveznicu",
"Text to display": "Tekst za prikaz",
"Url": "Url",
"Open link in...": "Otvori poveznicu u...",
"Current window": "Trenuta\u010dni prozor",
"None": "Ni\u0161ta",
"New window": "Novi prozor",
"Remove link": "Ukloni poveznicu",
"Anchors": "Kra\u0107e poveznice",
"Link...": "Poveznica...",
"Paste or type a link": "Zalijepi ili upi\u0161i link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Izgleda da je URL koji ste upisali e-mail adresa. \u017delite li dodati obavezan mailto: prefiks?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Izgleda da je URL koji ste upisali vanjski link. \u017delite li dodati obavezan http:\/\/ prefiks?",
"Link list": "Link list",
"Insert video": "Umetni video",
"Insert\/edit video": "Umetni\/izmijeni video",
"Insert\/edit media": "Umetni\/uredi mediju",
"Alternative source": "Alternativni izvor",
"Alternative source URL": "URL alternativnog izvora",
"Media poster (Image URL)": "Medijski poster (URL slike)",
"Paste your embed code below:": "Umetnite va\u0161 kod za ugradnju ispod:",
"Embed": "Ugradi",
"Media...": "Mediji...",
"Nonbreaking space": "Neprekidaju\u0107i razmak",
"Page break": "Prijelom stranice",
"Paste as text": "Zalijepi kao tekst",
"Preview": "Pregled",
"Print...": "Ispi\u0161i...",
"Save": "Spremi",
"Find": "Tra\u017ei",
"Replace with": "Zamijeni s",
"Replace": "Zamijeni",
"Replace all": "Zamijeni sve",
"Previous": "Prethodno",
"Next": "Slijede\u0107i",
"Find and replace...": "Prona\u0111i i zamijeni...",
"Could not find the specified string.": "Tra\u017eeni tekst nije prona\u0111en",
"Match case": "Pazi na mala i velika slova",
"Find whole words only": "Prona\u0111i samo cijele rije\u010di",
"Spell check": "Provjera pravopisa",
"Ignore": "Zanemari",
"Ignore all": "Zanemari sve",
"Finish": "Zavr\u0161i",
"Add to Dictionary": "Dodaj u rje\u010dnik",
"Insert table": "Umetni tablicu",
"Table properties": "Svojstva tablice",
"Delete table": "Izbri\u0161i tablicu",
"Cell": "Polje",
"Row": "Redak",
"Column": "Stupac",
"Cell properties": "Svojstva polja",
"Merge cells": "Spoji polja",
"Split cell": "Razdvoji polja",
"Insert row before": "Umetni redak prije",
"Insert row after": "Umetni redak nakon",
"Delete row": "Izbri\u0161i redak",
"Row properties": "Svojstva redka",
"Cut row": "Izre\u017ei redak",
"Copy row": "Kopiraj redak",
"Paste row before": "Zalijepi redak prije",
"Paste row after": "Zalijepi redak nakon",
"Insert column before": "Umetni stupac prije",
"Insert column after": "Umetni stupac nakon",
"Delete column": "Izbri\u0161i stupac",
"Cols": "Stupci",
"Rows": "Redci",
"Width": "\u0160irina",
"Height": "Visina",
"Cell spacing": "Razmak izme\u0111u polja",
"Cell padding": "Razmak unutar polja",
"Show caption": "Prika\u017ei natpis",
"Left": "Lijevo",
"Center": "Sredina",
"Right": "Desno",
"Cell type": "Vrsta polja",
"Scope": "Doseg",
"Alignment": "Poravnanje",
"H Align": "H Poravnavanje",
"V Align": "V Poravnavanje",
"Top": "Vrh",
"Middle": "Sredina",
"Bottom": "Dno",
"Header cell": "Polje zaglavlja",
"Row group": "Grupirani redci",
"Column group": "Grupirani stupci",
"Row type": "Vrsta redka",
"Header": "Zaglavlje",
"Body": "Sadr\u017eaj",
"Footer": "Podno\u017eje",
"Border color": "Boja ruba",
"Insert template...": "Umetni predlo\u017eak...",
"Templates": "Predlo\u0161ci",
"Template": "Predlo\u017eak",
"Text color": "Boja teksta",
"Background color": "Boja pozadine",
"Custom...": "Prilago\u0111eno...",
"Custom color": "Prilago\u0111ena boja",
"No color": "Bez boje",
"Remove color": "Ukloni boju",
"Table of Contents": "Sadr\u017eaj",
"Show blocks": "Prika\u017ei blokove",
"Show invisible characters": "Prika\u017ei nevidljive znakove",
"Word count": "Broj rije\u010di",
"Count": "Broj",
"Document": "Dokument",
"Selection": "Odabir",
"Words": "Rije\u010di",
"Words: {0}": "Rije\u010di: {0}",
"{0} words": "{0} rije\u010d(i)",
"File": "Datoteka",
"Edit": "Izmijeni",
"Insert": "Umetni",
"View": "Pogled",
"Format": "Oblikuj",
"Table": "Tablica",
"Tools": "Alati",
"Powered by {0}": "Omogu\u0107uje {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Pritisni ALT-F9 za izbornik. Pritisni ALT-F10 za alatnu traku. Pritisni ALT-0 za pomo\u0107",
"Image title": "Naslov slike",
"Border width": "\u0160irina granice",
"Border style": "Stil granice",
"Error": "Pogre\u0161ka",
"Warn": "Upozori",
"Valid": "Valjano",
"To open the popup, press Shift+Enter": "Da biste otvorili sko\u010dni prozor, pritisnite Shift\u00a0+\u00a0Enter",
"Rich Text Area. Press ALT-0 for help.": "Podru\u010dje oboga\u0107enog teksta. Pritisnite ALT-0 za pomo\u0107.",
"System Font": "Font sustava",
"Failed to upload image: {0}": "U\u010ditavanje slike nije uspjelo: {0}",
"Failed to load plugin: {0} from url {1}": "U\u010ditavanje dodatka nije uspjelo: {0} s URL-a {1}",
"Failed to load plugin url: {0}": "U\u010ditavanje dodatka nije uspjelo: {0}",
"Failed to initialize plugin: {0}": "Pokretanje dodatka nije uspjelo: {0}",
"example": "primjer",
"Search": "Tra\u017ei",
"All": "Svi",
"Currency": "Valuta",
"Text": "Tekst",
"Quotations": "Navodnici",
"Mathematical": "Matemati\u010dki",
"Extended Latin": "Pro\u0161ireni latinski",
"Symbols": "Simboli",
"Arrows": "Strelice",
"User Defined": "Korisni\u010dki definirano",
"dollar sign": "znak za dolar",
"currency sign": "znak za valutu",
"euro-currency sign": "znak za valutu \u2013 euro",
"colon sign": "znak za kolon",
"cruzeiro sign": "znak za cruzeiro",
"french franc sign": "znak za francuski franak",
"lira sign": "znak za liru",
"mill sign": "znak za mill",
"naira sign": "znak za nairu",
"peseta sign": "znak za pezetu",
"rupee sign": "znak za rupiju",
"won sign": "znak za von",
"new sheqel sign": "znak za novi \u0161ekel",
"dong sign": "znak za dong",
"kip sign": "znak za kip",
"tugrik sign": "znak za tugrik",
"drachma sign": "znak za drahmu",
"german penny symbol": "simbol za njema\u010dki peni",
"peso sign": "znak za pezo",
"guarani sign": "znak za gvarani",
"austral sign": "znak za austral",
"hryvnia sign": "znak za grivnju",
"cedi sign": "znak za cedi",
"livre tournois sign": "znak za livre tournois",
"spesmilo sign": "znak za spesmilo",
"tenge sign": "znak za tengu",
"indian rupee sign": "znak za indijsku rupiju",
"turkish lira sign": "znak za tursku liru",
"nordic mark sign": "znak za nordijsku marku",
"manat sign": "znak za manat",
"ruble sign": "znak za rubalj",
"yen character": "znak za jen",
"yuan character": "znak za juan",
"yuan character, in hong kong and taiwan": "znak za juan, u Hong Kongu i Tajvanu",
"yen\/yuan character variant one": "znak za jen\/juan, prva varijanta",
"Loading emoticons...": "U\u010ditavanje emotikona...",
"Could not load emoticons": "Nije mogu\u0107e u\u010ditati emotikone",
"People": "Osobe",
"Animals and Nature": "\u017divotinje i priroda",
"Food and Drink": "Hrana i pi\u0107e",
"Activity": "Aktivnosti",
"Travel and Places": "Putovanje i mjesta",
"Objects": "Predmeti",
"Flags": "Zastave",
"Characters": "Znakovi",
"Characters (no spaces)": "Znakovi (bez razmaka)",
"{0} characters": "{0} znakova",
"Error: Form submit field collision.": "Pogre\u0161ka: sukob polja za podno\u0161enje obrasca.",
"Error: No form element found.": "Pogre\u0161ka: nema elementa oblika.",
"Update": "A\u017euriraj",
"Color swatch": "Uzorak boje",
"Turquoise": "Tirkizna",
"Green": "Zelena",
"Blue": "Plava",
"Purple": "Ljubi\u010dasta",
"Navy Blue": "Mornarsko plava",
"Dark Turquoise": "Tamnotirkizna",
"Dark Green": "Tamnozelena",
"Medium Blue": "Srednje plava",
"Medium Purple": "Srednje ljubi\u010dasta",
"Midnight Blue": "Pono\u0107no plava",
"Yellow": "\u017duta",
"Orange": "Naran\u010dasta",
"Red": "Crvena",
"Light Gray": "Svijetlosiva",
"Gray": "Siva",
"Dark Yellow": "Tamno\u017euta",
"Dark Orange": "Tamnonaran\u010dasta",
"Dark Red": "Tamnocrvena",
"Medium Gray": "Srednje siva",
"Dark Gray": "Tamnosiva",
"Light Green": "Svjetlozelena",
"Light Yellow": "Svjetlo\u017euta",
"Light Red": "Svjetlocrvena",
"Light Purple": "Svjetloljubi\u010dasta",
"Light Blue": "Svjetloplava",
"Dark Purple": "Tamnoljubi\u010dasta",
"Dark Blue": "Tamnoplava",
"Black": "Crna",
"White": "Bijela",
"Switch to or from fullscreen mode": "Prebacivanje u prikaz preko cijelog zaslona ili iz njega",
"Open help dialog": "Otvori dijalo\u0161ki okvir za pomo\u0107",
"history": "povijest",
"styles": "stilovi",
"formatting": "oblikovanje",
"alignment": "poravnanje",
"indentation": "uvlaka",
"permanent pen": "trajna olovka",
"comments": "komentari",
"Format Painter": "Prenositelj oblikovanja",
"Insert\/edit iframe": "Umetni\/uredi iframe oznaku",
"Capitalization": "Velika slova",
"lowercase": "mala slova",
"UPPERCASE": "VELIKA SLOVA",
"Title Case": "Pisanje naslova",
"Permanent Pen Properties": "Trajna svojstva olovke",
"Permanent pen properties...": "Trajna svojstva olovke...",
"Font": "Font",
"Size": "Veli\u010dina",
"More...": "Vi\u0161e...",
"Spellcheck Language": "Jezik provjere pravopisa",
"Select...": "Odaberi...",
"Preferences": "Postavke",
"Yes": "Da",
"No": "Ne",
"Keyboard Navigation": "Navigacija na tipkovnici",
"Version": "Ina\u010dica",
"Anchor": "Sidro",
"Special character": "Poseban znak",
"Color": "Boja",
"Emoticons": "Emotikoni",
"Document properties": "Svojstva dokumenta",
"Image": "Slika",
"Insert link": "Umetni poveznicu",
"Target": "Meta",
"Link": "Link",
"Poster": "Poster",
"Media": "Media",
"Print": "Ispis",
"Prev": "Prethodni",
"Find and replace": "Prona\u0111i i zamijeni",
"Whole words": "Cijele rije\u010di",
"Spellcheck": "Provjeri pravopis",
"Caption": "Natpis",
"Insert template": "Umetni predlo\u017eak"
});js/tinymce/langs/gl.js000064400000034654151727150360010717 0ustar00tinymce.addI18n('gl',{
"Redo": "Refacer",
"Undo": "Desfacer",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Pegar",
"Select all": "Seleccionar todo",
"New document": "Novo documento",
"Ok": "Aceptar",
"Cancel": "Cancelar",
"Visual aids": "Axudas visuais",
"Bold": "Negra",
"Italic": "Cursiva",
"Underline": "Subli\u00f1ado",
"Strikethrough": "Riscado",
"Superscript": "Super\u00edndice",
"Subscript": "Sub\u00edndice",
"Clear formatting": "Limpar o formato",
"Align left": "Ali\u00f1ar \u00e1 esquerda",
"Align center": "Ali\u00f1ar ao centro",
"Align right": "Ali\u00f1ar \u00e1 dereita",
"Justify": "Xustificar",
"Bullet list": "Lista de vi\u00f1etas",
"Numbered list": "Lista numerada",
"Decrease indent": "Reducir a sangr\u00eda",
"Increase indent": "Aumentar a sangr\u00eda",
"Close": "Pechar",
"Formats": "Formatos",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador non admite o acceso directo ao portapapeis. Empregue os atallos de teclado Ctrl+X\/C\/V no seu canto.",
"Headers": "Cabeceiras",
"Header 1": "Cabeceira 1",
"Header 2": "Cabeceira 2",
"Header 3": "Cabeceira 3",
"Header 4": "Cabeceira 4",
"Header 5": "Cabeceira 5",
"Header 6": "Cabeceira 6",
"Headings": "T\u00edtulo",
"Heading 1": "T\u00edtulo 1",
"Heading 2": "T\u00edtulo 2",
"Heading 3": "T\u00edtulo 3",
"Heading 4": "T\u00edtulo 4",
"Heading 5": "T\u00edtulo 5",
"Heading 6": "T\u00edtulo 6",
"Preformatted": "Preformatado",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f3digo",
"Paragraph": "Par\u00e1grafo",
"Blockquote": "Bloque entre comi\u00f1as",
"Inline": "En li\u00f1a",
"Blocks": "Bloques",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Neste momento o pegado est\u00e1 definido en modo de texto simple. Os contidos p\u00e9garanse como texto sen formato ata que se active esta opci\u00f3n.",
"Fonts": "Tipos de letra",
"Font Sizes": "Tama\u00f1o da letra",
"Class": "Clase",
"Browse for an image": "Buscar unha imaxe",
"OR": "OU",
"Drop an image here": "Soltar unha imaxe",
"Upload": "Cargar",
"Block": "Bloque",
"Align": "Ali\u00f1amento",
"Default": "Predeterminada",
"Circle": "Circulo",
"Disc": "Disco",
"Square": "Cadrado",
"Lower Alpha": "Alfa min\u00fascula",
"Lower Greek": "Grega min\u00fascula",
"Lower Roman": "Romana min\u00fascula",
"Upper Alpha": "Alfa mai\u00fascula",
"Upper Roman": "Romana mai\u00fascula",
"Anchor...": "Ancoraxe...",
"Name": "Nome",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "O ID debe comezar cunha letra, seguida s\u00f3 por letras, n\u00fameros, gui\u00f3ns, puntos, dos puntos ou gui\u00f3ns baixos.",
"You have unsaved changes are you sure you want to navigate away?": "Ten cambios sen gardar. Confirma que quere sa\u00edr?",
"Restore last draft": "Restaurar o \u00faltimo borrador",
"Special characters...": "Caracteres especiais...",
"Source code": "C\u00f3digo fonte",
"Insert\/Edit code sample": "Inserir\/editar mostra de c\u00f3digo",
"Language": "Idioma",
"Code sample...": "Mostra de c\u00f3digo...",
"Color Picker": "Selector de cor",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "De esquerda a dereita",
"Right to left": "De dereita a esquerda",
"Emoticons...": "Emoticonas...",
"Metadata and Document Properties": "Metadatos e propiedades do documento",
"Title": "T\u00edtulo",
"Keywords": "Palabras clave",
"Description": "Descrici\u00f3n",
"Robots": "Robots",
"Author": "Autor",
"Encoding": "Codificaci\u00f3n",
"Fullscreen": "Pantalla completa",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Engadidos",
"Handy Shortcuts": "Atallos \u00fatiles",
"Horizontal line": "Li\u00f1a horizontal",
"Insert\/edit image": "Inserir\/editar imaxe",
"Image description": "Descrici\u00f3n da imaxe",
"Source": "Orixe",
"Dimensions": "Dimensi\u00f3ns",
"Constrain proportions": "Restrinxir as proporci\u00f3ns",
"General": "Xeral",
"Advanced": "Avanzado",
"Style": "Estilo",
"Vertical space": "Espazo vertical",
"Horizontal space": "Espazo horizontal",
"Border": "Bordo",
"Insert image": "Inserir imaxe",
"Image...": "Imaxe...",
"Image list": "Lista de imaxes",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Color levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "Inserir data\/hora",
"Date\/time": "Data\/hora",
"Insert\/Edit Link": "Inserir\/editar ligaz\u00f3n",
"Insert\/edit link": "Inserir\/editar ligaz\u00f3n",
"Text to display": "Texto que amosar",
"Url": "URL",
"Open link in...": "Abrir a ligaz\u00f3n en...",
"Current window": "Xanela actual",
"None": "Ning\u00fan",
"New window": "Nova xanela",
"Remove link": "Retirar a ligaz\u00f3n",
"Anchors": "Ancoraxes",
"Link...": "Ligaz\u00f3n...",
"Paste or type a link": "Pegue ou escriba unha ligaz\u00f3n",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "O URL que introduciu semella seren un enderezo de correo. Quere engadirlle o prefixo mailto: requirido?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "O URL que introduciu semella seren unha ligaz\u00f3n externa. Quere engadirlle o prefixo http:\/\/ requirido?",
"Link list": "Lista de ligaz\u00f3ns",
"Insert video": "Inserir v\u00eddeo",
"Insert\/edit video": "Inserir\/editar v\u00eddeo",
"Insert\/edit media": "Inserir\/editar medios",
"Alternative source": "Orixe alternativa",
"Alternative source URL": "URL da orixe alternativa",
"Media poster (Image URL)": "Cartel multimedia (URL da imaxe)",
"Paste your embed code below:": "Pegue embaixo o c\u00f3digo integrado:",
"Embed": "Integrado",
"Media...": "Multimedia...",
"Nonbreaking space": "Espazo irromp\u00edbel",
"Page break": "Quebra de p\u00e1xina",
"Paste as text": "Pegar como texto",
"Preview": "Vista previa",
"Print...": "Imprimir...",
"Save": "Gardar",
"Find": "Buscar",
"Replace with": "Substitu\u00edr con",
"Replace": "Substitu\u00edr",
"Replace all": "Substitu\u00edr todo",
"Previous": "Anterior",
"Next": "Seguinte",
"Find and replace...": "Atopar e substitu\u00edr...",
"Could not find the specified string.": "Non foi pos\u00edbel atopar a cadea de texto especificada.",
"Match case": "Distinguir mai\u00fasculas",
"Find whole words only": "Atopar unicamente as palabras enteiras",
"Spell check": "Corrector ortogr\u00e1fico",
"Ignore": "Ignorar",
"Ignore all": "Ignorar todo",
"Finish": "Rematar",
"Add to Dictionary": "Engadir ao dicionario",
"Insert table": "Inserir t\u00e1boa",
"Table properties": "Propiedades da t\u00e1boa",
"Delete table": "Eliminar t\u00e1boa",
"Cell": "Cela",
"Row": "Fila",
"Column": "Columna",
"Cell properties": "Propiedades da cela",
"Merge cells": "Combinar celas",
"Split cell": "Dividir celas",
"Insert row before": "Inserir unha fila enriba",
"Insert row after": "Inserir unha fila embaixo",
"Delete row": "Eliminar fila",
"Row properties": "Propiedades das filas",
"Cut row": "Cortar fila",
"Copy row": "Copiar fila",
"Paste row before": "Pegar fila embaixo",
"Paste row after": "Pegar fila enriba",
"Insert column before": "Inserir columna \u00e1 esquerda",
"Insert column after": "Inserir columna \u00e1 dereita",
"Delete column": "Eliminar columna",
"Cols": "Cols.",
"Rows": "Filas",
"Width": "Largo",
"Height": "Alto",
"Cell spacing": "Marxe entre celas",
"Cell padding": "Marxe interior da cela",
"Show caption": "Amosar subt\u00edtulo",
"Left": "Esquerda",
"Center": "Centro",
"Right": "Dereita",
"Cell type": "Tipo de cela",
"Scope": "\u00c1mbito",
"Alignment": "Ali\u00f1amento",
"H Align": "Ali\u00f1amento H",
"V Align": "Ali\u00f1amento V",
"Top": "Arriba",
"Middle": "Medio",
"Bottom": "Abaixo",
"Header cell": "Cela de cabeceira",
"Row group": "Grupo de filas",
"Column group": "Grupo de columnas",
"Row type": "Tipo de fila",
"Header": "Cabeceira",
"Body": "Corpo",
"Footer": "Rodap\u00e9",
"Border color": "Cor do bordo",
"Insert template...": "Inserir modelo...",
"Templates": "Modelos",
"Template": "Modelo",
"Text color": "Cor do texto",
"Background color": "Cor do fondo",
"Custom...": "Personalizado...",
"Custom color": "Cor personalizado",
"No color": "Sen cor",
"Remove color": "Retirar a cor",
"Table of Contents": "\u00cdndice de contidos",
"Show blocks": "Amosar os bloques",
"Show invisible characters": "Amosar caracteres invis\u00edbeis",
"Word count": "Reconto de palabras",
"Words: {0}": "Palabras: {0}",
"{0} words": "{0} palabras",
"File": "Ficheiro",
"Edit": "Editar",
"Insert": "Inserir",
"View": "Ver",
"Format": "Formato",
"Table": "T\u00e1boa",
"Tools": "Ferramentas",
"Powered by {0}": "Coa tecnolox\u00eda de {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto mellorado. Prema ALT-F9 para o men\u00fa. Prema ALT-F10 para a barra de ferramentas. Prema ALT-0 para a axuda",
"Image title": "T\u00edtulo da imaxe",
"Border width": "Largo do bordo",
"Border style": "Estilo do bordo",
"Error": "Erro",
"Warn": "Aviso",
"Valid": "V\u00e1lido",
"To open the popup, press Shift+Enter": "Para abrir a xanela emerxente, prema Mai\u00fas+Intro",
"Rich Text Area. Press ALT-0 for help.": "\u00c1rea de texto mellorado. PremaALT-0 para obter axuda.",
"System Font": "Tipo de letra do sistema",
"Failed to upload image: {0}": "Produciuse un fallo ao cargar a imaxe: {0}",
"Failed to load plugin: {0} from url {1}": "Produciuse un fallo ao cargar a o engadido: {0} dende o URL {1}",
"Failed to load plugin url: {0}": "Produciuse un fallo ao cargar a o URL do engadido: {0}",
"Failed to initialize plugin: {0}": "Produciuse un fallo ao iniciar o engadido: {0}",
"example": "exemplo",
"Search": "Buscar",
"All": "Todo",
"Currency": "Moeda",
"Text": "Texto",
"Quotations": "Citas",
"Mathematical": "Matem\u00e1tico",
"Extended Latin": "Latino extendido",
"Symbols": "S\u00edmbolos",
"Arrows": "Frechas",
"User Defined": "Definido polo usuario",
"dollar sign": "S\u00edmbolo do dolar",
"currency sign": "S\u00edmbolo de moeda",
"euro-currency sign": "S\u00edmbolo do euro",
"colon sign": "S\u00edmbolo do col\u00f3n",
"cruzeiro sign": "S\u00edmbolo do cruzeiro",
"french franc sign": "S\u00edmbolo do franco franc\u00e9s",
"lira sign": "S\u00edmbolo da lira",
"mill sign": "S\u00edmbolo do mill",
"naira sign": "S\u00edmbolo da naira",
"peseta sign": "S\u00edmbolo da peseta",
"rupee sign": "S\u00edmbolo da rupia",
"won sign": "S\u00edmbolo do won",
"new sheqel sign": "S\u00edmbolo do novo s\u00e9quel",
"dong sign": "S\u00edmbolo do dong",
"kip sign": "S\u00edmbolo do kip",
"tugrik sign": "S\u00edmbolo do tugrik",
"drachma sign": "S\u00edmbolo do dracma",
"german penny symbol": "S\u00edmbolo do penique alem\u00e1n",
"peso sign": "S\u00edmbolo do peso",
"guarani sign": "S\u00edmbolo do guaran\u00ed",
"austral sign": "S\u00edmbolo do austral",
"hryvnia sign": "S\u00edmbolo do grivna",
"cedi sign": "S\u00edmbolo do cedi",
"livre tournois sign": "S\u00edmbolo da libre tournois",
"spesmilo sign": "S\u00edmbolo do spesmilo",
"tenge sign": "S\u00edmbolo do tengue",
"indian rupee sign": "S\u00edmbolo da rupia india",
"turkish lira sign": "S\u00edmbolo da lira turca",
"nordic mark sign": "S\u00edmbolo do marco n\u00f3rdico",
"manat sign": "S\u00edmbolo do manat",
"ruble sign": "S\u00edmbolo do rublo",
"yen character": "Car\u00e1cter do ien",
"yuan character": "Car\u00e1cter do yuan",
"yuan character, in hong kong and taiwan": "Car\u00e1cter do yuan, en Hong Kong e Taiwan",
"yen\/yuan character variant one": "Variante  1 do car\u00e1cter do ien\/yuan",
"Loading emoticons...": "Cargando emoticonas...",
"Could not load emoticons": "Non foi pos\u00edbel cargar as emoticonas",
"People": "Xente",
"Animals and Nature": "Animais e natureza",
"Food and Drink": "Comida e bebida",
"Activity": "Actividade",
"Travel and Places": "Viaxes e lugares",
"Objects": "Obxectos",
"Flags": "Bandeiras",
"Characters": "Caracteres",
"Characters (no spaces)": "Caracteres (sen espazos)",
"Error: Form submit field collision.": "Erro: conflito de campo ao enviar o formulario ",
"Error: No form element found.": "Erro: non se atopou ning\u00fan elemento de formulario",
"Update": "Actualizar",
"Color swatch": "Mostra de cores",
"Turquoise": "Turquesa",
"Green": "Verde",
"Blue": "Azul",
"Purple": "P\u00farpura",
"Navy Blue": "Azul mari\u00f1o",
"Dark Turquoise": "Turquesa escuro",
"Dark Green": "Verde escuro",
"Medium Blue": "Azul medio",
"Medium Purple": "P\u00farpura medio",
"Midnight Blue": "Azul noite",
"Yellow": "Amarelo",
"Orange": "Laranxa",
"Red": "Vermello",
"Light Gray": "Gris claro",
"Gray": "Gris",
"Dark Yellow": "Amarelo escuro",
"Dark Orange": "Laranxa escuro",
"Dark Red": "Vermello escuro",
"Medium Gray": "Gris medio",
"Dark Gray": "Gris escuro",
"Black": "Negro",
"White": "Branco",
"Switch to or from fullscreen mode": "Activar ou desactivar o modo de pantalla completa",
"Open help dialog": "Abrir o di\u00e1logo de axuda",
"history": "historial",
"styles": "estilos",
"formatting": "formatado",
"alignment": "ali\u00f1amento",
"indentation": "sangrado",
"permanent pen": "rotulador permanente",
"comments": "comentarios",
"Anchor": "Ancoraxe",
"Special character": "Car\u00e1cter especial",
"Color": "Cor",
"Emoticons": "Emoticonas",
"Document properties": "Propiedades do documento",
"Image": "Imaxe",
"Insert link": "Inserir ligaz\u00f3n",
"Target": "Destino",
"Link": "Ligaz\u00f3n",
"Poster": "Cartel",
"Media": "Medios",
"Print": "Imprimir",
"Prev": "Anterior",
"Find and replace": "Buscar e substitu\u00edr",
"Whole words": "Palabras completas",
"Spellcheck": "Corrector ortogr\u00e1fico",
"Caption": "Subt\u00edtulo",
"Insert template": "Inserir modelo"
});js/tinymce/langs/it.js000064400000035734151727150370010732 0ustar00tinymce.addI18n('it',{
"Redo": "Ripristina",
"Undo": "Annulla",
"Cut": "Taglia",
"Copy": "Copia",
"Paste": "Incolla",
"Select all": "Seleziona tutto",
"New document": "Nuovo documento",
"Ok": "OK",
"Cancel": "Annulla",
"Visual aids": "Aiuti visivi",
"Bold": "Grassetto",
"Italic": "Corsivo",
"Underline": "Sottolineato",
"Strikethrough": "Barrato",
"Superscript": "Apice",
"Subscript": "Pedice",
"Clear formatting": "Cancella la formattazione",
"Align left": "Allinea a sinistra",
"Align center": "Allinea al centro",
"Align right": "Allinea a destra",
"Justify": "Giustifica",
"Bullet list": "Elenco puntato",
"Numbered list": "Elenco numerato",
"Decrease indent": "Riduci rientro",
"Increase indent": "Aumenta rientro",
"Close": "Chiudi",
"Formats": "Formati",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il browser non supporta l'accesso diretto alla cartella degli appunti. Usare i tasti di scelta rapida Ctrl+X\/C\/V.",
"Headers": "Intestazioni",
"Header 1": "Intestazione 1",
"Header 2": "Intestazione 2",
"Header 3": "Intestazione 3",
"Header 4": "Intestazione 4",
"Header 5": "Intestazione 5",
"Header 6": "Intestazione 6",
"Headings": "Titoli",
"Heading 1": "Titolo 1",
"Heading 2": "Titolo 2",
"Heading 3": "Titolo 3",
"Heading 4": "Titolo 4",
"Heading 5": "Titolo 5",
"Heading 6": "Titolo 6",
"Preformatted": "Preformattato",
"Div": "Div",
"Pre": "Pre",
"Code": "Codice",
"Paragraph": "Paragrafo",
"Blockquote": "Blockquote",
"Inline": "In linea",
"Blocks": "Blocchi",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.",
"Fonts": "Caratteri",
"Font Sizes": "Dimensioni caratteri",
"Class": "Classe",
"Browse for an image": "Cerca un'immagine",
"OR": "OPPURE",
"Drop an image here": "Rilasciare un'immagine qui",
"Upload": "Carica",
"Block": "Blocco",
"Align": "Allinea",
"Default": "Default",
"Circle": "Cerchio",
"Disc": "Disco",
"Square": "Quadrato",
"Lower Alpha": "Alpha Minore",
"Lower Greek": "Greek Minore",
"Lower Roman": "Roman Minore",
"Upper Alpha": "Alpha Superiore",
"Upper Roman": "Roman Superiore",
"Anchor...": "Ancoraggio...",
"Name": "Nome",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'id dovrebbe cominciare con una lettera, seguito solo da lettere, numeri, linee, punti, virgole.",
"You have unsaved changes are you sure you want to navigate away?": "Non hai salvato delle modifiche, sei sicuro di andartene?",
"Restore last draft": "Ripristina l'ultima bozza.",
"Special character...": "Carattere speciale...",
"Source code": "Codice Sorgente",
"Insert\/Edit code sample": "Inserisci\/Modifica esempio di codice",
"Language": "Lingua",
"Code sample...": "Esempio di codice...",
"Color Picker": "Selezione colori",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Da Sinistra a Destra",
"Right to left": "Da Destra a Sinistra",
"Emoticons...": "Emoticon...",
"Metadata and Document Properties": "Metadata e propriet\u00e0 del documento",
"Title": "Titolo",
"Keywords": "Parola Chiave",
"Description": "Descrizione",
"Robots": "Robot",
"Author": "Autore",
"Encoding": "Codifica",
"Fullscreen": "Schermo Intero",
"Action": "Azione",
"Shortcut": "Scorciatoia",
"Help": "Aiuto",
"Address": "Indirizzo",
"Focus to menubar": "Focus sulla barra del menu",
"Focus to toolbar": "Focus sulla barra degli strumenti",
"Focus to element path": "Focus sul percorso dell'elemento",
"Focus to contextual toolbar": "Focus sulla barra degli strumenti contestuale",
"Insert link (if link plugin activated)": "Inserisci link (se il plugin link \u00e8 attivato)",
"Save (if save plugin activated)": "Salva (se il plugin save \u00e8 attivato)",
"Find (if searchreplace plugin activated)": "Trova (se il plugin searchreplace \u00e8 attivato)",
"Plugins installed ({0}):": "Plugin installati ({0}):",
"Premium plugins:": "Plugin Premium:",
"Learn more...": "Per saperne di pi\u00f9...",
"You are using {0}": "Stai usando {0}",
"Plugins": "Plugin",
"Handy Shortcuts": "Scorciatoia pratica",
"Horizontal line": "Linea Orizzontale",
"Insert\/edit image": "Aggiungi\/Modifica Immagine",
"Image description": "Descrizione Immagine",
"Source": "Fonte",
"Dimensions": "Dimenzioni",
"Constrain proportions": "Mantieni Proporzioni",
"General": "Generale",
"Advanced": "Avanzato",
"Style": "Stile",
"Vertical space": "Spazio Verticale",
"Horizontal space": "Spazio Orizzontale",
"Border": "Bordo",
"Insert image": "Inserisci immagine",
"Image...": "Immagine...",
"Image list": "Elenco immagini",
"Rotate counterclockwise": "Ruota in senso antiorario",
"Rotate clockwise": "Ruota in senso orario",
"Flip vertically": "Rifletti verticalmente",
"Flip horizontally": "Rifletti orizzontalmente",
"Edit image": "Modifica immagine",
"Image options": "Opzioni immagine",
"Zoom in": "Ingrandisci",
"Zoom out": "Rimpicciolisci",
"Crop": "Taglia",
"Resize": "Ridimensiona",
"Orientation": "Orientamento",
"Brightness": "Luminosit\u00e0",
"Sharpen": "Contrasta",
"Contrast": "Contrasto",
"Color levels": "Livelli colore",
"Gamma": "Gamma",
"Invert": "Inverti",
"Apply": "Applica",
"Back": "Indietro",
"Insert date\/time": "Inserisci Data\/Ora",
"Date\/time": "Data\/Ora",
"Insert\/Edit Link": "Inserisci\/modifica collegamento",
"Insert\/edit link": "Inserisci\/Modifica Link",
"Text to display": "Testo da Visualizzare",
"Url": "Url",
"Open link in...": "Apri collegamento in...",
"Current window": "Finestra corrente",
"None": "No",
"New window": "Nuova Finestra",
"Remove link": "Rimuovi link",
"Anchors": "Anchors",
"Link...": "Collegamento...",
"Paste or type a link": "Incolla o digita un collegamento",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL inserito sembra essere un indirizzo email. Vuoi aggiungere il prefisso necessario mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL inserito sembra essere un collegamento esterno. Vuoi aggiungere il prefisso necessario http:\/\/?",
"Link list": "Elenco link",
"Insert video": "Inserisci Video",
"Insert\/edit video": "Inserisci\/Modifica Video",
"Insert\/edit media": "Inserisci\/Modifica Media",
"Alternative source": "Alternativo",
"Alternative source URL": "URL sorgente alternativa",
"Media poster (Image URL)": "Poster dell'oggetto multimediale (URL dell'immagine)",
"Paste your embed code below:": "Incolla il codice d'incorporamento qui:",
"Embed": "Incorporare",
"Media...": "Oggetto multimediale...",
"Nonbreaking space": "Spazio unificatore",
"Page break": "Interruzione di pagina",
"Paste as text": "incolla come testo",
"Preview": "Anteprima",
"Print...": "Stampa...",
"Save": "Salva",
"Find": "Trova",
"Replace with": "Sostituisci Con",
"Replace": "Sostituisci",
"Replace all": "Sostituisci Tutto",
"Previous": "Indietro",
"Next": "Successivo",
"Find and replace...": "Trova e sostituisci...",
"Could not find the specified string.": "Impossibile trovare la parola specifica.",
"Match case": "Maiuscole\/Minuscole ",
"Find whole words only": "Trova solo parole intere",
"Spell check": "Controllo ortografia",
"Ignore": "Ignora",
"Ignore all": "Ignora Tutto",
"Finish": "Termina",
"Add to Dictionary": "Aggiungi al Dizionario",
"Insert table": "Inserisci Tabella",
"Table properties": "Propiet\u00e0 della Tabella",
"Delete table": "Cancella Tabella",
"Cell": "Cella",
"Row": "Riga",
"Column": "Colonna",
"Cell properties": "Propiet\u00e0 della Cella",
"Merge cells": "Unisci Cella",
"Split cell": "Dividi Cella",
"Insert row before": "Inserisci una Riga Prima",
"Insert row after": "Inserisci una Riga Dopo",
"Delete row": "Cancella Riga",
"Row properties": "Propriet\u00e0 della Riga",
"Cut row": "Taglia Riga",
"Copy row": "Copia Riga",
"Paste row before": "Incolla una Riga Prima",
"Paste row after": "Incolla una Riga Dopo",
"Insert column before": "Inserisci una Colonna Prima",
"Insert column after": "Inserisci una Colonna Dopo",
"Delete column": "Cancella Colonna",
"Cols": "Colonne",
"Rows": "Righe",
"Width": "Larghezza",
"Height": "Altezza",
"Cell spacing": "Spaziatura della Cella",
"Cell padding": "Padding della Cella",
"Show caption": "Mostra didascalia",
"Left": "Sinistra",
"Center": "Centro",
"Right": "Destra",
"Cell type": "Tipo di Cella",
"Scope": "Campo",
"Alignment": "Allineamento",
"H Align": "Allineamento H",
"V Align": "Allineamento V",
"Top": "In alto",
"Middle": "In mezzo",
"Bottom": "In fondo",
"Header cell": "cella d'intestazione",
"Row group": "Gruppo di Righe",
"Column group": "Gruppo di Colonne",
"Row type": "Tipo di Riga",
"Header": "Header",
"Body": "Body",
"Footer": "Footer",
"Border color": "Colore bordo",
"Insert template...": "Inserisci modello...",
"Templates": "Template",
"Template": "Modello",
"Text color": "Colore Testo",
"Background color": "Colore Background",
"Custom...": "Personalizzato...",
"Custom color": "Colore personalizzato",
"No color": "Nessun colore",
"Remove color": "Rimuovi colore",
"Table of Contents": "Tabella dei contenuti",
"Show blocks": "Mostra Blocchi",
"Show invisible characters": "Mostra Caratteri Invisibili",
"Word count": "Conteggio parole",
"Count": "Conteggio",
"Document": "Documento",
"Selection": "Selezione",
"Words": "Parole",
"Words: {0}": "Parole: {0}",
"{0} words": "{0} parole",
"File": "File",
"Edit": "Modifica",
"Insert": "Inserisci",
"View": "Visualiza",
"Format": "Formato",
"Table": "Tabella",
"Tools": "Strumenti",
"Powered by {0}": "Fornito da {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Premi ALT-F9 per il men\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per l'aiuto.",
"Image title": "Titolo immagine",
"Border width": "Larghezza del bordo",
"Border style": "Stile del bordo",
"Error": "Errore",
"Warn": "Avviso",
"Valid": "Valido",
"To open the popup, press Shift+Enter": "Per aprire il popup, premere Shift+Invio",
"Rich Text Area. Press ALT-0 for help.": "Area di testo RTF. Premere ALT-0 per la guida.",
"System Font": "Carattere di sistema",
"Failed to upload image: {0}": "Caricamento immagine fallito: {0}",
"Failed to load plugin: {0} from url {1}": "Caricamento plugin fallito: {0} dall'URL {1}",
"Failed to load plugin url: {0}": "Caricamento URL plugin fallito: {0}",
"Failed to initialize plugin: {0}": "Inizializzazione plugin fallita: {0}",
"example": "esempio",
"Search": "Cerca",
"All": "Tutto",
"Currency": "Valuta",
"Text": "Testo",
"Quotations": "Citazioni",
"Mathematical": "Caratteri matematici",
"Extended Latin": "Latino esteso",
"Symbols": "Simboli",
"Arrows": "Frecce",
"User Defined": "Definito dall'utente",
"dollar sign": "simbolo del dollaro",
"currency sign": "simbolo di valuta",
"euro-currency sign": "simbolo dell'euro",
"colon sign": "simbolo del col\u00f3n",
"cruzeiro sign": "simbolo del cruzeiro",
"french franc sign": "simbolo del franco francese",
"lira sign": "simbolo della lira",
"mill sign": "simbolo del mill",
"naira sign": "simbolo della naira",
"peseta sign": "simbolo della peseta",
"rupee sign": "simbolo della rup\u00eca",
"won sign": "simbolo del won",
"new sheqel sign": "simbolo del nuovo shekel",
"dong sign": "simbolo del dong",
"kip sign": "simbolo del kip",
"tugrik sign": "simbolo del tugrik",
"drachma sign": "simbolo della dracma",
"german penny symbol": "simbolo del pfennig tedesco",
"peso sign": "simbolo del peso",
"guarani sign": "simbolo del guaran\u00ec",
"austral sign": "simbolo dell'austral",
"hryvnia sign": "simbolo della hryvnia",
"cedi sign": "simbolo del cedi",
"livre tournois sign": "simbolo della lira di Tours",
"spesmilo sign": "simbolo dello spesmilo",
"tenge sign": "simbolo del tenge",
"indian rupee sign": "simbolo della rup\u00eca indiana",
"turkish lira sign": "simbolo della lira turca",
"nordic mark sign": "simbolo del marco nordico",
"manat sign": "simbolo del manat",
"ruble sign": "simbolo del rublo",
"yen character": "simbolo dello yen",
"yuan character": "simbolo dello yuan",
"yuan character, in hong kong and taiwan": "simbolo dello yuan, Hong Kong e Taiwan",
"yen\/yuan character variant one": "simbolo yen\/yuan variante uno",
"Loading emoticons...": "Caricamento emoticon in corso",
"Could not load emoticons": "Impossibile caricare emoticon",
"People": "Persone",
"Animals and Nature": "Animali e natura",
"Food and Drink": "Cibi e bevande",
"Activity": "Attivit\u00e0",
"Travel and Places": "Viaggi e luoghi",
"Objects": "Oggetti",
"Flags": "Bandiere",
"Characters": "Caratteri",
"Characters (no spaces)": "Caratteri (senza spazi)",
"{0} characters": "{0} caratteri",
"Error: Form submit field collision.": "Errore: Conflitto di campi nel modulo inviato.",
"Error: No form element found.": "Errore: Nessun elemento di modulo trovato.",
"Update": "Aggiorna",
"Color swatch": "Campione di colore",
"Turquoise": "Turchese",
"Green": "Verde",
"Blue": "Blu",
"Purple": "Viola",
"Navy Blue": "Blu scuro",
"Dark Turquoise": "Turchese scuro",
"Dark Green": "Verde scuro",
"Medium Blue": "Blu medio",
"Medium Purple": "Viola medio",
"Midnight Blue": "Blu notte",
"Yellow": "Giallo",
"Orange": "Arancio",
"Red": "Rosso",
"Light Gray": "Grigio chiaro",
"Gray": "Grigio",
"Dark Yellow": "Giallo scuro",
"Dark Orange": "Arancio scuro",
"Dark Red": "Rosso scuro",
"Medium Gray": "Grigio medio",
"Dark Gray": "Grigio scuro",
"Light Green": "Verde chiaro",
"Light Yellow": "Giallo chiaro",
"Light Red": "Rosso chiaro",
"Light Purple": "Viola chiaro",
"Light Blue": "Azzurro",
"Dark Purple": "Viola scuro",
"Dark Blue": "Blu scuro",
"Black": "Nero",
"White": "Bianco",
"Switch to or from fullscreen mode": "Attiva\/disattiva la modalit\u00e0 schermo intero",
"Open help dialog": "Apri la finestra di aiuto",
"history": "cronologia",
"styles": "stili",
"formatting": "formattazione",
"alignment": "allineamento",
"indentation": "indentazione",
"permanent pen": "penna indelebile",
"comments": "commenti",
"Format Painter": "Copia formattazione",
"Insert\/edit iframe": "Inserisci\/modifica iframe",
"Capitalization": "Maiuscole\/minuscole",
"lowercase": "minuscole",
"UPPERCASE": "MAIUSCOLE",
"Title Case": "Iniziali Maiuscole",
"Permanent Pen Properties": "Propriet\u00e0 penna indelebile",
"Permanent pen properties...": "Propriet\u00e0 penna indelebile...",
"Font": "Carattere",
"Size": "Dimensione carattere",
"More...": "Altro\u2026",
"Spellcheck Language": "Lingua controllo ortografico",
"Select...": "Seleziona...",
"Preferences": "Preferenze",
"Yes": "S\u00ec",
"No": "No",
"Keyboard Navigation": "Navigazione tramite tastiera",
"Version": "Versione",
"Anchor": "Fissa",
"Special character": "Carattere Speciale",
"Code sample": "Esempio di codice",
"Color": "Colore",
"Emoticons": "Emoction",
"Document properties": "Propriet\u00e0 Documento",
"Image": "Immagine",
"Insert link": "Inserisci il Link",
"Target": "Target",
"Link": "Collegamento",
"Poster": "Anteprima",
"Media": "Media",
"Print": "Stampa",
"Prev": "Precedente",
"Find and replace": "Trova e Sostituisci",
"Whole words": "Parole Sbagliate",
"Spellcheck": "Controllo ortografico",
"Caption": "Didascalia",
"Insert template": "Inserisci Template"
});js/tinymce/langs/uk_UA.js000064400000063446151727150370011323 0ustar00tinymce.addI18n('uk_UA',{
"Redo": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438",
"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
"Select all": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0443\u0441\u0435",
"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
"Ok": "Ok",
"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
"Visual aids": "\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0456 \u0437\u0430\u0441\u043e\u0431\u0438",
"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
"Strikethrough": "\u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
"Subscript": "\u0406\u043d\u0434\u0435\u043a\u0441",
"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
"Align left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447",
"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Align right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044f\u0442\u0438",
"Bullet list": "\u041c\u0430\u0440\u043a\u0456\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Numbered list": "\u041f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0456\u043d\u0443. \u0417\u0430\u043c\u0456\u0441\u0442\u044c \u0446\u044c\u043e\u0433\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043f\u043e\u0454\u0434\u043d\u0430\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448 Ctrl + X\/C\/V.",
"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
"Preformatted": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e \u0432\u0456\u0434\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432\u0430\u043d\u0438\u0439",
"Div": "Div",
"Pre": "Pre",
"Code": "\u041a\u043e\u0434",
"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
"Inline": "\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0439",
"Blocks": "\u0411\u043b\u043e\u043a\u0438",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0430\u0440\u0430\u0437 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u0417\u043c\u0456\u0441\u0442 \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u044f\u043a \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0438 \u0412\u0438 \u043d\u0435 \u0432\u0438\u043c\u043a\u043d\u0435\u0442\u0435 \u0446\u044e \u043e\u043f\u0446\u0456\u044e.",
"Font Family": "\u0428\u0440\u0438\u0444\u0442",
"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",
"Class": "\u041a\u043b\u0430\u0441",
"Browse for an image": "\u0412\u0438\u0431\u0456\u0440 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"OR": "\u0410\u0411\u041e",
"Drop an image here": "\u041f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0456\u0442\u044c \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0441\u044e\u0434\u0438",
"Upload": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438",
"Block": "\u0411\u043b\u043e\u043a",
"Align": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Default": "\u0423\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f",
"Circle": "\u041a\u043e\u043b\u043e",
"Disc": "\u0414\u0438\u0441\u043a",
"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442",
"Lower Alpha": "\u041d\u0438\u0436\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u043b\u0456\u0442\u0435\u0440\u0438",
"Lower Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438 \u0443 \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456",
"Upper Alpha": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438 \u0443 \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456",
"Anchor": "\u041f\u0440\u0438\u0432'\u044f\u0437\u043a\u0430",
"Name": "\u0406\u043c'\u044f",
"Id": "\u041a\u043e\u0434",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u041a\u043e\u0434 \u043c\u0430\u0454 \u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0437 \u043b\u0456\u0442\u0435\u0440\u0438 \u0456 \u043c\u043e\u0436\u0435 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043b\u0438\u0448\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438 \u043b\u0456\u0442\u0435\u0440, \u0446\u0438\u0444\u0440, \u0434\u0435\u0444\u0456\u0441\u0443, \u043a\u0440\u0430\u043f\u043a\u0438, \u043a\u043e\u043c\u0438 \u0430\u0431\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u0433\u043e \u043f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f.",
"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438 ?",
"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u043f\u0440\u043e\u0435\u043a\u0442",
"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b",
"Source code": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
"Insert\/Edit code sample": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u043f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443",
"Language": "\u041c\u043e\u0432\u0430",
"Code sample": "\u041f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443",
"Color": "\u041a\u043e\u043b\u0456\u0440",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",
"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u0438",
"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443",
"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430",
"Description": "\u041e\u043f\u0438\u0441",
"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
"Author": "\u0410\u0432\u0442\u043e\u0440",
"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
"Fullscreen": "\u041d\u0430 \u0432\u0435\u0441\u044c \u0435\u043a\u0440\u0430\u043d",
"Action": "\u0414\u0456\u044f",
"Shortcut": "\u042f\u0440\u043b\u0438\u043a",
"Help": "\u0414\u043e\u043f\u043e\u043c\u043e\u0433\u0430",
"Address": "\u0410\u0434\u0440\u0435\u0441\u0430",
"Focus to menubar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043c\u0435\u043d\u044e",
"Focus to toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u0456\u043d\u0441\u0442\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445",
"Focus to element path": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u0448\u043b\u044f\u0445\u0443",
"Focus to contextual toolbar": "\u0424\u043e\u043a\u0443\u0441 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442",
"Insert link (if link plugin activated)": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f (\u044f\u043a\u0449\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e)",
"Save (if save plugin activated)": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438 (\u044f\u043a\u0449\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e)",
"Find (if searchreplace plugin activated)": "\u0417\u043d\u0430\u0439\u0442\u0438 (\u044f\u043a\u0449\u043e \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e)",
"Plugins installed ({0}):": "\u041d\u0430\u044f\u0432\u043d\u0456 \u0434\u043e\u0434\u0430\u0442\u043a\u0438 ({0}):",
"Premium plugins:": "\u041f\u0440\u0435\u043c\u0456\u0430\u043b\u044c\u043d\u0456 \u0434\u043e\u0434\u0430\u0442\u043a\u0438:",
"Learn more...": "\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e...",
"You are using {0}": "\u0423 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u0456 {0}",
"Plugins": "\u041f\u043b\u0430\u0433\u0456\u043d\u0438",
"Handy Shortcuts": "\u041a\u043e\u0440\u0438\u0441\u043d\u0456 \u044f\u0440\u043b\u0438\u043a\u0438",
"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f",
"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440",
"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",
"Advanced": "\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",
"Style": "\u0421\u0442\u0438\u043b\u044c",
"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
"Border": "\u041c\u0435\u0436\u0430",
"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image list": "\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c",
"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u043f\u0440\u043e\u0442\u0438 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u0457 \u0441\u0442\u0440\u0456\u043b\u043a\u0438",
"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u0437\u0430 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u044e \u0441\u0442\u0440\u0456\u043b\u043a\u043e\u044e",
"Flip vertically": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0456",
"Flip horizontally": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0456",
"Edit image": "\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Image options": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Zoom in": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438",
"Zoom out": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438",
"Crop": "\u041e\u0431\u0440\u0456\u0437\u0430\u0442\u0438",
"Resize": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440",
"Orientation": "\u041e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u044f",
"Brightness": "\u042f\u0441\u043a\u0440\u0430\u0432\u0456\u0441\u0442\u044c",
"Sharpen": "\u0427\u0456\u0442\u043a\u0456\u0441\u0442\u044c",
"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442",
"Color levels": "\u0420\u0456\u0432\u043d\u0456 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432",
"Gamma": "\u0413\u0430\u043c\u043c\u0430",
"Invert": "\u0406\u043d\u0432\u0435\u0440\u0441\u0456\u044f",
"Apply": "\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438",
"Back": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f",
"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
"Date\/time": "\u0414\u0430\u0442\u0430\/\u0447\u0430\u0441",
"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
"Url": "URL",
"Target": "\u041c\u0435\u0442\u0430",
"None": "\u041d\u0456",
"New window": "\u041d\u043e\u0432\u0435 \u0432\u0456\u043a\u043d\u043e",
"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Anchors": "\u042f\u043a\u043e\u0440\u044f",
"Link": "\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"Paste or type a link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0430\u0431\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 mailto:?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 http:\/\/?",
"Link list": "\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c",
"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
"Insert\/edit media": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043c\u0435\u0434\u0456\u0430\u0434\u0430\u043d\u0456",
"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
"Poster": "\u041f\u043b\u0430\u043a\u0430\u0442",
"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
"Embed": "\u0412\u043f\u0440\u043e\u0432\u0430\u0434\u0438\u0442\u0438",
"Media": "\u041c\u0435\u0434\u0456\u0430\u0434\u0430\u043d\u0456",
"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442",
"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
"Print": "\u0414\u0440\u0443\u043a",
"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",
"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435",
"Prev": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",
"Next": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",
"Find and replace": "\u0417\u043d\u0430\u0439\u0442\u0438 \u0456 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
"Could not find the specified string.": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u043d\u0430\u0439\u0442\u0438 \u0437\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a.",
"Match case": "\u0417 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443",
"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435",
"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438",
"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0432 \u0441\u043b\u043e\u0432\u043d\u0438\u043a",
"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",
"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430",
"Row": "\u0420\u044f\u0434\u043e\u043a",
"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
"Cell properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",
"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434",
"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f",
"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
"Row properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0430",
"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434",
"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f",
"Insert column before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0435\u0440\u0435\u0434",
"Insert column after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0456\u0441\u043b\u044f",
"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
"Rows": "\u0420\u044f\u0434\u043a\u0438",
"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
"Cell spacing": "\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",
"Cell padding": "\u0417\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a",
"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
"Left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447",
"Center": "\u0426\u0435\u043d\u0442\u0440",
"Right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
"Scope": "\u0423 \u043c\u0435\u0436\u0430\u0445",
"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Middle": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
"Bottom": "\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
"Header cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443",
"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432",
"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430",
"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
"Body": "\u0422\u0456\u043b\u043e",
"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
"Border color": "\u041a\u043e\u043b\u0456\u0440 \u043c\u0435\u0436\u0456",
"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d",
"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
"Template": "\u0428\u0430\u0431\u043b\u043e\u043d",
"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443",
"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",
"Custom...": "\u0406\u043d\u0448\u0438\u0439...",
"Custom color": "\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u043a\u043e\u043b\u0456\u0440",
"No color": "\u0411\u0435\u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u0443",
"Table of Contents": "\u0417\u043c\u0456\u0441\u0442",
"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438",
"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
"Words: {0}": "\u0421\u043b\u043e\u0432\u0430: {0}",
"{0} words": "{0} \u0441\u043b\u0456\u0432",
"File": "\u0424\u0430\u0439\u043b",
"Edit": "\u041f\u0440\u0430\u0432\u043a\u0430",
"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
"View": "\u0412\u0438\u0434",
"Format": "\u0424\u043e\u0440\u043c\u0430\u0442",
"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
"Powered by {0}": "\u0417\u0430 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0438\u043a\u0438 {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c Rich \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 - \u043c\u0435\u043d\u044e. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F10 - \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-0 - \u0434\u043e\u0432\u0456\u0434\u043a\u0430"
});js/tinymce/langs/de_AT.js000064400000023561151727150370011265 0ustar00tinymce.addI18n('de_AT',{
"Redo": "Wiederholen",
"Undo": "R\u00fcckg\u00e4ngig",
"Cut": "Ausschneiden",
"Copy": "Kopieren",
"Paste": "Einf\u00fcgen",
"Select all": "Alles ausw\u00e4hlen",
"New document": "Neues Dokument",
"Ok": "Ok",
"Cancel": "Abbrechen",
"Visual aids": "Hilfslinien und unsichtbare Elemente einblenden",
"Bold": "Fett",
"Italic": "Kursiv",
"Underline": "Unterstrichen",
"Strikethrough": "Durchgestrichen",
"Superscript": "Hochgestellt",
"Subscript": "Tiefgestellt",
"Clear formatting": "Formatierungen zur\u00fccksetzen",
"Align left": "Linksb\u00fcndig",
"Align center": "Zentriert",
"Align right": "Rechtsb\u00fcndig",
"Justify": "Blocksatz",
"Bullet list": "Unsortierte Liste",
"Numbered list": "Sortierte Liste",
"Decrease indent": "Ausr\u00fccken",
"Increase indent": "Einr\u00fccken",
"Close": "Schlie\u00dfen",
"Formats": "Formate",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt keinen direkten Zugriff auf die Zwischenablage. Bitte nutzen Sie die Tastaturk\u00fcrzel Strg+X\/C\/V stattdessen.",
"Headers": "\u00dcberschriften",
"Header 1": "\u00dcberschrift 1",
"Header 2": "\u00dcberschrift 2",
"Header 3": "\u00dcberschrift 3",
"Header 4": "\u00dcberschrift 4",
"Header 5": "\u00dcberschrift 5",
"Header 6": "\u00dcberschrift 6",
"Headings": "\u00dcberschriften",
"Heading 1": "\u00dcberschrift 1",
"Heading 2": "\u00dcberschrift 2",
"Heading 3": "\u00dcberschrift 3",
"Heading 4": "\u00dcberschrift 4",
"Heading 5": "\u00dcberschrift 5",
"Heading 6": "\u00dcberschrift 6",
"Preformatted": "Vorformatiert",
"Div": "Block (div)",
"Pre": "Vorformatierter Text (pre)",
"Code": "Code (code)",
"Paragraph": "Absatz (p)",
"Blockquote": "Zitat (blockquote)",
"Inline": "Inline",
"Blocks": "Bl\u00f6cke",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Alle Texte werden nun ohne Formatierung eingef\u00fcgt, bis diese Einstellung wieder ge\u00e4ndert wird.",
"Font Family": "Schriftart",
"Font Sizes": "Schriftgr\u00f6\u00dfen",
"Class": "Klasse",
"Browse for an image": "Bild...",
"OR": "oder",
"Drop an image here": "Bild hierher ziehen",
"Upload": "Hochladen",
"Block": "Block",
"Align": "Ausrichtung",
"Default": "Standard",
"Circle": "Kreis",
"Disc": "Gef\u00fcllter Kreis",
"Square": "Quadrat",
"Lower Alpha": "Kleinbuchstaben",
"Lower Greek": "Griechische Kleinbuchstaben",
"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
"Upper Alpha": "Gro\u00dfbuchstaben",
"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
"Anchor": "Anker",
"Name": "Name",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Eine ID f\u00e4ngt mit einem Buchstaben an, gefolgt von Buchstaben, Ziffern, Bindestrichen, Punkten, Doppelpunkten oder Unterstrichen.",
"You have unsaved changes are you sure you want to navigate away?": "Sie haben ungespeicherte \u00c4nderungen. Sind Sie sicher, dass Sie die Seite verlassen wollen?",
"Restore last draft": "Letzten Entwurf wiederherstellen.",
"Special character": "Sonderzeichen",
"Source code": "Quelltext",
"Insert\/Edit code sample": "Beispielcode einf\u00fcgen\/bearbeiten",
"Language": "Sprache",
"Code sample": "Code Beispiel",
"Color": "Farbe",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Links nach rechts",
"Right to left": "Rechts nach links",
"Emoticons": "Emoticons",
"Document properties": "Dokumenteigenschaften",
"Title": "Titel",
"Keywords": "Schl\u00fcsselw\u00f6rter",
"Description": "Beschreibung",
"Robots": "Suchmaschinen",
"Author": "Autor",
"Encoding": "Enkodierung",
"Fullscreen": "Vollbild",
"Action": "Aktion",
"Shortcut": "Tastenkombination",
"Help": "Hilfe",
"Address": "Adresse",
"Focus to menubar": "Fokus auf Men\u00fcleiste",
"Focus to toolbar": "Fokus auf Werkzeugleiste",
"Focus to element path": "Fokus auf Elementpfad",
"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste",
"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Plugin aktiv ist)",
"Save (if save plugin activated)": "Speichern (wenn Plugin aktiv ist)",
"Find (if searchreplace plugin activated)": "Suchen (wenn Plugin aktiv ist)",
"Plugins installed ({0}):": "Installierte Plugins ({0}):",
"Premium plugins:": "Premium Plugins:",
"Learn more...": "Mehr Informationen...",
"You are using {0}": "Sie verwenden {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Praktische Abk\u00fcrzungen",
"Horizontal line": "Horizontale Trennlinie",
"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
"Image description": "Bildbeschreibung",
"Source": "Adresse",
"Dimensions": "Ausma\u00dfe",
"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
"General": "Allgemein",
"Advanced": "Erweitert",
"Style": "Format",
"Vertical space": "Vertikaler Abstand",
"Horizontal space": "Horizontaler Abstand",
"Border": "Rahmen",
"Insert image": "Bild einf\u00fcgen",
"Image": "Bild",
"Image list": "Bilderliste",
"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
"Rotate clockwise": "Im Uhrzeigersinn drehen",
"Flip vertically": "Vertikal kippen",
"Flip horizontally": "Horizontal kippen",
"Edit image": "Bild bearbeiten",
"Image options": "Bildeinstellungen",
"Zoom in": "Einzoomen",
"Zoom out": "Auszoomen",
"Crop": "Zuschneiden",
"Resize": "Gr\u00f6\u00dfe \u00e4ndern",
"Orientation": "Orientierung",
"Brightness": "Helligkeit",
"Sharpen": "Sch\u00e4rfen",
"Contrast": "Kontrast",
"Color levels": "Farbwerte",
"Gamma": "Gamma",
"Invert": "Invertieren",
"Apply": "Anwenden",
"Back": "Zur\u00fcck",
"Insert date\/time": "Zeit\/Datum einf\u00fcgen",
"Date\/time": "Zeit\/Datum",
"Insert link": "Link einf\u00fcgen",
"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
"Text to display": "Angezeigter Text",
"Url": "Url",
"Target": "Ziel",
"None": "Keine",
"New window": "Neues Fenster",
"Remove link": "Link entfernen",
"Anchors": "Anker",
"Link": "Link",
"Paste or type a link": "Link einf\u00fcgen oder eintippen",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Die eingegebene URL scheint eine E-Mail-Adresse zu sein. Soll das notwendige \"mailto:\"-Pr\u00e4fix hinzugef\u00fcgt werden?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Die eingegebene URL scheint eine externe Web-Adresse zu sein. Soll das notwendige \"http:\/\/\"-Pr\u00e4fix hinzugef\u00fcgt werden?",
"Link list": "Linkliste",
"Insert video": "Video einf\u00fcgen",
"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten",
"Alternative source": "Alternative Quelle",
"Poster": "Poster",
"Paste your embed code below:": "F\u00fcgen unten Sie Ihren Quellcode zum einbetten ein",
"Embed": "Einbetten",
"Media": "Medien",
"Nonbreaking space": "gesch\u00fctztes Leerzeichen",
"Page break": "Seitenumbruch",
"Paste as text": "Als Text einf\u00fcgen",
"Preview": "Vorschau",
"Print": "Drucken",
"Save": "Speichern",
"Find": "Suchen",
"Replace with": "Ersetzen durch",
"Replace": "Ersetzen",
"Replace all": "Alle ersetzen",
"Prev": "Vorheriges",
"Next": "N\u00e4chstes",
"Find and replace": "Suchen und ersetzen",
"Could not find the specified string.": "Keine \u00dcbereinstimmung gefunden",
"Match case": "Gro\u00df-\/Kleinschreibung beachten",
"Whole words": "Vollst\u00e4ndige W\u00f6rter",
"Spellcheck": "Rechtschreibung \u00fcberpr\u00fcfen",
"Ignore": "Ignorieren",
"Ignore all": "Alle ignorieren",
"Finish": "Fertig",
"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
"Insert table": "Tabelle einf\u00fcgen",
"Table properties": "Tabelleneigenschaften",
"Delete table": "Tabelle l\u00f6schen",
"Cell": "Zelle",
"Row": "Zeile",
"Column": "Spalte",
"Cell properties": "Zelleneigenschaften",
"Merge cells": "Zellen vereinen",
"Split cell": "Verbundene Zellen trennen",
"Insert row before": "Neue Zeile oberhalb einf\u00fcgen",
"Insert row after": "Neue Zeile unterhalb einf\u00fcgen",
"Delete row": "Zeile l\u00f6schen",
"Row properties": "Zeileneigenschaften",
"Cut row": "Zeile ausschneiden",
"Copy row": "Zeile kopieren",
"Paste row before": "Zeile oberhalb einf\u00fcgen",
"Paste row after": "Zeile unterhalb einf\u00fcgen",
"Insert column before": "Neue Spalte links einf\u00fcgen",
"Insert column after": "Neue Spalte rechts einf\u00fcgen",
"Delete column": "Spalte l\u00f6schen",
"Cols": "Spalten",
"Rows": "Zeilen",
"Width": "Breite",
"Height": "H\u00f6he",
"Cell spacing": "Zellenabstand",
"Cell padding": "Abstand innerhalb der Zellen",
"Caption": "Beschriftung der Tabelle",
"Left": "Links",
"Center": "Zentriert",
"Right": "Rechts",
"Cell type": "Zellentyp",
"Scope": "Geltungsbereich",
"Alignment": "Ausrichtung",
"H Align": "Ausrichtung H",
"V Align": "Ausrichtung V",
"Top": "Oben",
"Middle": "Mitte",
"Bottom": "Unten",
"Header cell": "\u00dcberschrift",
"Row group": "Zeilengruppe",
"Column group": "Spaltengruppe",
"Row type": "Zeilentyp",
"Header": "Tabellen\u00fcberschrift",
"Body": "Tabellenk\u00f6rper",
"Footer": "Tabellenfu\u00df",
"Border color": "Rahmenfarbe",
"Insert template": "Vorlage einf\u00fcgen",
"Templates": "Vorlagen",
"Template": "Vorlage",
"Text color": "Textfarbe",
"Background color": "Hintergrundfarbe",
"Custom...": "Benutzerdefiniert...",
"Custom color": "Benutzerdefinierte Farbe",
"No color": "Keine Farbe",
"Table of Contents": "Inhaltsverzeichnis",
"Show blocks": "Blockelemente einblenden",
"Show invisible characters": "Unsichtbare Zeichen einblenden",
"Words: {0}": "W\u00f6rter: {0}",
"{0} words": "{0} W\u00f6rter",
"File": "Datei",
"Edit": "Bearbeiten",
"Insert": "Einf\u00fcgen",
"View": "Ansicht",
"Format": "Format",
"Table": "Tabelle",
"Tools": "Extras",
"Powered by {0}": "Betrieben von {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr die Werkzeugleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe"
});js/tinymce/langs/es_419.js000064400000040052151727150370011307 0ustar00tinymce.addI18n('es_419',{
"Redo": "Rehacer",
"Undo": "Deshacer",
"Cut": "Cortar",
"Copy": "Copiar",
"Paste": "Pegar",
"Select all": "Seleccionar todo",
"New document": "Nuevo documento",
"Ok": "Ok",
"Cancel": "Cancelar",
"Visual aids": "Ayudas visuales",
"Bold": "Negrita",
"Italic": "Cursiva",
"Underline": "Subrayado",
"Strikethrough": "Tachado",
"Superscript": "Super\u00edndice",
"Subscript": "Sub\u00edndice",
"Clear formatting": "Limpiar formato",
"Align left": "Alinear a la izquierda",
"Align center": "Centrar",
"Align right": "Alinear a la derecha",
"Justify": "Justificar",
"Bullet list": "Lista de vi\u00f1etas",
"Numbered list": "Lista numerada",
"Decrease indent": "Disminuir sangr\u00eda",
"Increase indent": "Aumentar sangr\u00eda",
"Close": "Cerrar",
"Formats": "Formatos",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tu navegador no soporta acceso directo al portapapeles. Favor usar los comandos de teclado Ctrl+X\/C\/V",
"Headers": "Encabezados",
"Header 1": "Encabezado 1",
"Header 2": "Encabezado 2",
"Header 3": "Encabezado 3",
"Header 4": "Encabezado 4",
"Header 5": "Encabezado 5",
"Header 6": "Encabezado 6",
"Headings": "T\u00edtulos",
"Heading 1": "T\u00edtulo 1",
"Heading 2": "T\u00edtulo 2",
"Heading 3": "T\u00edtulo 3",
"Heading 4": "T\u00edtulo 4",
"Heading 5": "T\u00edtulo 5",
"Heading 6": "T\u00edtulo 6",
"Preformatted": "Preformateado",
"Div": "Div",
"Pre": "Pre",
"Code": "C\u00f3digo",
"Paragraph": "P\u00e1rrafo",
"Blockquote": "Cita",
"Inline": "En l\u00ednea",
"Blocks": "Bloques",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
"Fonts": "Fonts",
"Font Sizes": "Tama\u00f1os de Fuente",
"Class": "Class",
"Browse for an image": "Examinar imagen",
"OR": "O",
"Drop an image here": "Arrastrar imagen aqu\u00ed",
"Upload": "Subir",
"Block": "Bloque",
"Align": "Alinear",
"Default": "Default",
"Circle": "Circle",
"Disc": "Disc",
"Square": "Square",
"Lower Alpha": "Lower Alpha",
"Lower Greek": "Lower Greek",
"Lower Roman": "Lower Roman",
"Upper Alpha": "Upper Alpha",
"Upper Roman": "Upper Roman",
"Anchor...": "Anchor...",
"Name": "Name",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.",
"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
"Restore last draft": "Restore last draft",
"Special character...": "Special character...",
"Source code": "Source code",
"Insert\/Edit code sample": "Insert\/Edit code sample",
"Language": "Language",
"Code sample...": "Code sample...",
"Color Picker": "Color Picker",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Left to right",
"Right to left": "Right to left",
"Emoticons": "Emoticons",
"Emoticons...": "Emoticons...",
"Metadata and Document Properties": "Metadata and Document Properties",
"Title": "Title",
"Keywords": "Keywords",
"Description": "Description",
"Robots": "Robots",
"Author": "Author",
"Encoding": "Encoding",
"Fullscreen": "Fullscreen",
"Action": "Action",
"Shortcut": "Shortcut",
"Help": "Help",
"Address": "Address",
"Focus to menubar": "Focus to menubar",
"Focus to toolbar": "Focus to toolbar",
"Focus to element path": "Focus to element path",
"Focus to contextual toolbar": "Focus to contextual toolbar",
"Insert link (if link plugin activated)": "Insert link (if link plugin activated)",
"Save (if save plugin activated)": "Save (if save plugin activated)",
"Find (if searchreplace plugin activated)": "Find (if searchreplace plugin activated)",
"Plugins installed ({0}):": "Plugins installed ({0}):",
"Premium plugins:": "Premium plugins:",
"Learn more...": "Learn more...",
"You are using {0}": "You are using {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Handy Shortcuts",
"Horizontal line": "Horizontal line",
"Insert\/edit image": "Insert\/edit image",
"Alternative description": "Descripci\u00f3n alternativa",
"Accessibility": "Accesibilidad",
"Image is decorative": "La imagen es decorativa",
"Source": "Source",
"Dimensions": "Dimensions",
"Constrain proportions": "Constrain proportions",
"General": "General",
"Advanced": "Advanced",
"Style": "Style",
"Vertical space": "Vertical space",
"Horizontal space": "Horizontal space",
"Border": "Border",
"Insert image": "Insert image",
"Image...": "Image...",
"Image list": "Image list",
"Rotate counterclockwise": "Rotate counterclockwise",
"Rotate clockwise": "Rotate clockwise",
"Flip vertically": "Flip vertically",
"Flip horizontally": "Flip horizontally",
"Edit image": "Edit image",
"Image options": "Image options",
"Zoom in": "Zoom in",
"Zoom out": "Zoom out",
"Crop": "Crop",
"Resize": "Resize",
"Orientation": "Orientation",
"Brightness": "Brightness",
"Sharpen": "Sharpen",
"Contrast": "Contrast",
"Color levels": "Color levels",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Apply",
"Back": "Back",
"Insert date\/time": "Insert date\/time",
"Date\/time": "Date\/time",
"Insert\/edit link": "Insert\/edit link",
"Text to display": "Text to display",
"Url": "Url",
"Open link in...": "Open link in...",
"Current window": "Current window",
"None": "None",
"New window": "New window",
"Open link": "Enlace abierto",
"Remove link": "Remove link",
"Anchors": "Anchors",
"Link...": "Link...",
"Paste or type a link": "Paste or type a link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "La URL que ingres\u00f3 parece ser un enlace externo. \u00bfDesea agregar el prefijo https:\/\/ requerido?",
"Link list": "Link list",
"Insert video": "Insert video",
"Insert\/edit video": "Insert\/edit video",
"Insert\/edit media": "Insert\/edit media",
"Alternative source": "Alternative source",
"Alternative source URL": "Alternative source URL",
"Media poster (Image URL)": "Media poster (Image URL)",
"Paste your embed code below:": "Paste your embed code below:",
"Embed": "Embed",
"Media...": "Media...",
"Nonbreaking space": "Nonbreaking space",
"Page break": "Page break",
"Paste as text": "Paste as text",
"Preview": "Preview",
"Print...": "Print...",
"Save": "Save",
"Find": "Find",
"Replace with": "Replace with",
"Replace": "Replace",
"Replace all": "Replace all",
"Previous": "Previous",
"Next": "Next",
"Find and Replace": "Encontrar y Reemplazar",
"Find and replace...": "Find and replace...",
"Could not find the specified string.": "Could not find the specified string.",
"Match case": "Match case",
"Find whole words only": "Find whole words only",
"Find in selection": "Encontrar en la selecci\u00f3n",
"Spellcheck": "Spellcheck",
"Spellcheck Language": "Spellcheck Language",
"No misspellings found.": "No se encontraron errores ortogr\u00e1ficos.",
"Ignore": "Ignore",
"Ignore all": "Ignore all",
"Finish": "Finish",
"Add to Dictionary": "Add to Dictionary",
"Insert table": "Insert table",
"Table properties": "Table properties",
"Delete table": "Delete table",
"Cell": "Cell",
"Row": "Row",
"Column": "Column",
"Cell properties": "Cell properties",
"Merge cells": "Merge cells",
"Split cell": "Split cell",
"Insert row before": "Insert row before",
"Insert row after": "Insert row after",
"Delete row": "Delete row",
"Row properties": "Row properties",
"Cut row": "Cut row",
"Copy row": "Copy row",
"Paste row before": "Paste row before",
"Paste row after": "Paste row after",
"Insert column before": "Insert column before",
"Insert column after": "Insert column after",
"Delete column": "Delete column",
"Cols": "Cols",
"Rows": "Rows",
"Width": "Width",
"Height": "Height",
"Cell spacing": "Cell spacing",
"Cell padding": "Cell padding",
"Caption": "Caption",
"Show caption": "Show caption",
"Left": "Left",
"Center": "Center",
"Right": "Right",
"Cell type": "Cell type",
"Scope": "Scope",
"Alignment": "Alignment",
"H Align": "H Align",
"V Align": "V Align",
"Top": "Top",
"Middle": "Middle",
"Bottom": "Bottom",
"Header cell": "Header cell",
"Row group": "Row group",
"Column group": "Column group",
"Row type": "Row type",
"Header": "Header",
"Body": "Body",
"Footer": "Footer",
"Border color": "Border color",
"Insert template...": "Insert template...",
"Templates": "Templates",
"Template": "Template",
"Text color": "Text color",
"Background color": "Background color",
"Custom...": "Custom...",
"Custom color": "Custom color",
"No color": "No color",
"Remove color": "Remove color",
"Table of Contents": "Table of Contents",
"Show blocks": "Show blocks",
"Show invisible characters": "Show invisible characters",
"Word count": "Word count",
"Count": "Count",
"Document": "Document",
"Selection": "Selection",
"Words": "Words",
"Words: {0}": "Words: {0}",
"{0} words": "{0} words",
"File": "File",
"Edit": "Edit",
"Insert": "Insert",
"View": "View",
"Format": "Format",
"Table": "Table",
"Tools": "Tools",
"Powered by {0}": "Powered by {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
"Image title": "Image title",
"Border width": "Border width",
"Border style": "Border style",
"Error": "Error",
"Warn": "Warn",
"Valid": "Valid",
"To open the popup, press Shift+Enter": "To open the popup, press Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Rich Text Area. Press ALT-0 for help.",
"System Font": "System Font",
"Failed to upload image: {0}": "Failed to upload image: {0}",
"Failed to load plugin: {0} from url {1}": "Failed to load plugin: {0} from url {1}",
"Failed to load plugin url: {0}": "Failed to load plugin url: {0}",
"Failed to initialize plugin: {0}": "Failed to initialize plugin: {0}",
"example": "example",
"Search": "Search",
"All": "All",
"Currency": "Currency",
"Text": "Text",
"Quotations": "Quotations",
"Mathematical": "Mathematical",
"Extended Latin": "Extended Latin",
"Symbols": "Symbols",
"Arrows": "Arrows",
"User Defined": "User Defined",
"dollar sign": "dollar sign",
"currency sign": "currency sign",
"euro-currency sign": "euro-currency sign",
"colon sign": "colon sign",
"cruzeiro sign": "cruzeiro sign",
"french franc sign": "french franc sign",
"lira sign": "lira sign",
"mill sign": "mill sign",
"naira sign": "naira sign",
"peseta sign": "peseta sign",
"rupee sign": "rupee sign",
"won sign": "won sign",
"new sheqel sign": "new sheqel sign",
"dong sign": "dong sign",
"kip sign": "kip sign",
"tugrik sign": "tugrik sign",
"drachma sign": "drachma sign",
"german penny symbol": "german penny symbol",
"peso sign": "peso sign",
"guarani sign": "guarani sign",
"austral sign": "austral sign",
"hryvnia sign": "hryvnia sign",
"cedi sign": "cedi sign",
"livre tournois sign": "livre tournois sign",
"spesmilo sign": "spesmilo sign",
"tenge sign": "tenge sign",
"indian rupee sign": "indian rupee sign",
"turkish lira sign": "turkish lira sign",
"nordic mark sign": "nordic mark sign",
"manat sign": "manat sign",
"ruble sign": "ruble sign",
"yen character": "yen character",
"yuan character": "yuan character",
"yuan character, in hong kong and taiwan": "yuan character, in hong kong and taiwan",
"yen\/yuan character variant one": "yen\/yuan character variant one",
"Loading emoticons...": "Loading emoticons...",
"Could not load emoticons": "Could not load emoticons",
"People": "People",
"Animals and Nature": "Animals and Nature",
"Food and Drink": "Food and Drink",
"Activity": "Activity",
"Travel and Places": "Travel and Places",
"Objects": "Objects",
"Flags": "Flags",
"Characters": "Characters",
"Characters (no spaces)": "Characters (no spaces)",
"{0} characters": "{0} characters",
"Error: Form submit field collision.": "Error: Form submit field collision.",
"Error: No form element found.": "Error: No form element found.",
"Update": "Update",
"Color swatch": "Color swatch",
"Turquoise": "Turquoise",
"Green": "Green",
"Blue": "Blue",
"Purple": "Purple",
"Navy Blue": "Navy Blue",
"Dark Turquoise": "Dark Turquoise",
"Dark Green": "Dark Green",
"Medium Blue": "Medium Blue",
"Medium Purple": "Medium Purple",
"Midnight Blue": "Midnight Blue",
"Yellow": "Yellow",
"Orange": "Orange",
"Red": "Red",
"Light Gray": "Light Gray",
"Gray": "Gray",
"Dark Yellow": "Dark Yellow",
"Dark Orange": "Dark Orange",
"Dark Red": "Dark Red",
"Medium Gray": "Medium Gray",
"Dark Gray": "Dark Gray",
"Light Green": "Light Green",
"Light Yellow": "Light Yellow",
"Light Red": "Light Red",
"Light Purple": "Light Purple",
"Light Blue": "Light Blue",
"Dark Purple": "Dark Purple",
"Dark Blue": "Dark Blue",
"Black": "Black",
"White": "White",
"Switch to or from fullscreen mode": "Switch to or from fullscreen mode",
"Open help dialog": "Open help dialog",
"history": "history",
"styles": "styles",
"formatting": "formatting",
"alignment": "alignment",
"indentation": "indentation",
"Font": "Font",
"Size": "Size",
"More...": "More...",
"Select...": "Select...",
"Preferences": "Preferences",
"Yes": "Yes",
"No": "No",
"Keyboard Navigation": "Keyboard Navigation",
"Version": "Version",
"Code view": "Vista de c\u00f3digo",
"Open popup menu for split buttons": "Abrir men\u00fa emergente para botones divididos",
"List Properties": "Propiedades de Lista",
"List properties...": "Propiedades de lista...",
"Start list at number": "Iniciar lista en el n\u00famero",
"Line height": "Altura de la l\u00ednea",
"comments": "comments",
"Format Painter": "Format Painter",
"Insert\/edit iframe": "Insert\/edit iframe",
"Capitalization": "Capitalization",
"lowercase": "lowercase",
"UPPERCASE": "UPPERCASE",
"Title Case": "Title Case",
"permanent pen": "permanent pen",
"Permanent Pen Properties": "Permanent Pen Properties",
"Permanent pen properties...": "Permanent pen properties...",
"case change": "Cambiar May\u00fasculas y Min\u00fasculas",
"page embed": "p\u00e1gina incrustada",
"Advanced sort...": "Orden avanzado...",
"Advanced Sort": "Orden Avanzado",
"Sort table by column ascending": "Ordenar tabla por columna ascendente",
"Sort table by column descending": "Ordenar tabla por columna descendente",
"Sort": "Ordenar",
"Order": "Orden",
"Sort by": "Ordenar por",
"Ascending": "Ascendente",
"Descending": "Descendiente",
"Column {0}": "Columna {0}",
"Row {0}": "Fila {0}",
"Spellcheck...": "Corrector...",
"Misspelled word": "Palabra mal escrita",
"Suggestions": "Sugerencias",
"Change": "Cambiar",
"Finding word suggestions": "Encontrar sugerencias de palabras",
"Success": "\u00c9xito",
"Repair": "Reparar",
"Issue {0} of {1}": "Problema {0} de {1}",
"Images must be marked as decorative or have an alternative text description": "Las im\u00e1genes deben estar marcadas como decorativas o tener una descripci\u00f3n de texto alternativa",
"Images must have an alternative text description. Decorative images are not allowed.": "Las im\u00e1genes deben tener una descripci\u00f3n de texto alternativa. No se permiten im\u00e1genes decorativas.",
"Or provide alternative text:": "O proporcione texto alternativo:",
"Make image decorative:": "Hacer la imagen decorativa:",
"ID attribute must be unique": "El atributo de ID debe ser \u00fanico",
"Make ID unique": "Hacer que ID sea \u00fanica",
"Keep this ID and remove all others": "Conserve esta ID y elimine todas las dem\u00e1s",
"Remove this ID": "Eliminar esta ID",
"Remove all IDs": "Eliminar todos los ID",
"Checklist": "Lista de Verificaci\u00f3n",
"Anchor": "Anchor",
"Special character": "Special character",
"Code sample": "Code sample",
"Color": "Color",
"Document properties": "Document properties",
"Image description": "Image description",
"Image": "Image",
"Insert link": "Insert link",
"Target": "Target",
"Link": "Link",
"Poster": "Poster",
"Media": "Media",
"Print": "Print",
"Prev": "Prev",
"Find and replace": "Find and replace",
"Whole words": "Whole words",
"Insert template": "Insert template"
});js/tinymce/langs/et.js000064400000036357151727150400010722 0ustar00tinymce.addI18n('et',{
"Redo": "Tee uuesti",
"Undo": "V\u00f5ta tagasi",
"Cut": "L\u00f5ika",
"Copy": "Kopeeri",
"Paste": "Kleebi",
"Select all": "Vali k\u00f5ik",
"New document": "Uus dokument",
"Ok": "Ok",
"Cancel": "Katkesta",
"Visual aids": "N\u00e4itevahendid",
"Bold": "Rasvane",
"Italic": "Kaldkiri",
"Underline": "Allakriipsutatud",
"Strikethrough": "L\u00e4bikriipsutatud",
"Superscript": "\u00dclaindeks",
"Subscript": "Alaindeks",
"Clear formatting": "Puhasta vorming",
"Align left": "Joonda vasakule",
"Align center": "Joonda keskele",
"Align right": "Joonda paremale",
"Justify": "Joonda r\u00f6\u00f6pselt",
"Bullet list": "J\u00e4rjestamata loend",
"Numbered list": "J\u00e4rjestatud loend",
"Decrease indent": "V\u00e4henda taanet",
"Increase indent": "Suurenda taanet",
"Close": "Sulge",
"Formats": "Vormingud",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Sinu veebilehitseja ei toeta otsest ligip\u00e4\u00e4su l\u00f5ikelauale. Palun kasuta selle asemel klaviatuuri kiirk\u00e4sklusi Ctrl+X\/C\/V.",
"Headers": "P\u00e4ised",
"Header 1": "Pealkiri 1",
"Header 2": "Pealkiri 2",
"Header 3": "Pealkiri 3",
"Header 4": "Pealkiri 4",
"Header 5": "Pealkiri 5",
"Header 6": "Pealkiri 6",
"Headings": "Pealkirjad",
"Heading 1": "Pealkiri 1",
"Heading 2": "Pealkiri 2",
"Heading 3": "Pealkiri 3",
"Heading 4": "Pealkiri 4",
"Heading 5": "Pealkiri 5",
"Heading 6": "Pealkiri 6",
"Preformatted": "Eelvormindaud",
"Div": "Sektsioon",
"Pre": "Eelvormindatud",
"Code": "Kood",
"Paragraph": "L\u00f5ik",
"Blockquote": "Plokktsitaat",
"Inline": "Reasisene",
"Blocks": "Plokid",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Asetamine on n\u00fc\u00fcd tekstire\u017eiimis. Sisu asetatakse n\u00fc\u00fcd lihttekstina, kuni sa l\u00fclitad selle valiku v\u00e4lja.",
"Fonts": "Fondid",
"Font Sizes": "Kirja suurused",
"Class": "Klass",
"Browse for an image": "Sirvi pilte",
"OR": "V\u00d5I",
"Drop an image here": "Kukuta pilt siia",
"Upload": "\u00dcles laadimine",
"Block": "Plokk",
"Align": "Joonda",
"Default": "Vaikimisi",
"Circle": "Ring",
"Disc": "Ketas",
"Square": "Ruut",
"Lower Alpha": "V\u00e4iket\u00e4hed (a, b, c)",
"Lower Greek": "Kreeka v\u00e4iket\u00e4hed (\u03b1, \u03b2, \u03b3)",
"Lower Roman": "Rooma v\u00e4iket\u00e4hed (i, ii, iii)",
"Upper Alpha": "Suurt\u00e4hed (A, B, C)",
"Upper Roman": "Rooma suurt\u00e4hed (I, II, III)",
"Anchor...": "Ankur ...",
"Name": "Nimi",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID peaks algama t\u00e4hega ning sellele peaks j\u00e4rgnema ainult t\u00e4hed, arvud, sidekriipsud, punktid, koolonid v\u00f5i alakriipsud.",
"You have unsaved changes are you sure you want to navigate away?": "Sul on salvestamata muudatusi. Oled Sa kindel, et soovid mujale navigeeruda?",
"Restore last draft": "Taasta viimane mustand",
"Special character...": "Eriline tegelane ...",
"Source code": "L\u00e4htekood",
"Insert\/Edit code sample": "Sisesta\/muuda koodin\u00e4idis",
"Language": "Keel",
"Code sample...": "Koodin\u00e4ide ...",
"Color Picker": "V\u00e4rvivalija",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Vasakult paremale",
"Right to left": "Paremalt vasakule",
"Emoticons...": "Emotikonid ...",
"Metadata and Document Properties": "Metaandmed ja dokumendi atribuudid",
"Title": "Pealkiri",
"Keywords": "M\u00e4rks\u00f5nad",
"Description": "Kirjeldus",
"Robots": "Robotid",
"Author": "Autor",
"Encoding": "M\u00e4rgistik",
"Fullscreen": "T\u00e4isekraan",
"Action": "Tegevus",
"Shortcut": "Otsetee",
"Help": "Abiinfo",
"Address": "Aadress",
"Focus to menubar": "Fookus men\u00fc\u00fcribale",
"Focus to toolbar": "Fookus t\u00f6\u00f6riistaribale",
"Focus to element path": "Fookus elemendi asukohale",
"Focus to contextual toolbar": "Fookus kontekstimen\u00fc\u00fcle",
"Insert link (if link plugin activated)": "Sisesta link (kui lingi plugin on aktiveeritud)",
"Save (if save plugin activated)": "Salvesta (kui salvestamise plugin on aktiveeritud)",
"Find (if searchreplace plugin activated)": "Otsi (kui plugin searchreplace on aktiveeritud)",
"Plugins installed ({0}):": "Pluginad on paigaldatud ({0}):",
"Premium plugins:": "Tasulised pluginad:",
"Learn more...": "Vaata lisainfot...",
"You are using {0}": "Sa kasutad {0}",
"Plugins": "Pluginad",
"Handy Shortcuts": "Mugavad otseteed",
"Horizontal line": "Horisontaaljoon",
"Insert\/edit image": "Lisa\/muuda pilt",
"Image description": "Pildi kirjeldus",
"Source": "Allikas",
"Dimensions": "M\u00f5\u00f5tmed",
"Constrain proportions": "S\u00e4ilita kuvasuhe",
"General": "\u00dcldine",
"Advanced": "T\u00e4iendavad seaded",
"Style": "Stiil",
"Vertical space": "P\u00fcstine vahe",
"Horizontal space": "Reavahe",
"Border": "\u00c4\u00e4ris",
"Insert image": "Lisa pilt",
"Image...": "Pilt ...",
"Image list": "Piltide nimekiri",
"Rotate counterclockwise": "P\u00f6\u00f6ra vastup\u00e4eva",
"Rotate clockwise": "P\u00f6\u00f6ra p\u00e4rip\u00e4eva",
"Flip vertically": "Peegelda vertikaalselt",
"Flip horizontally": "Peegelda horisontaalselt",
"Edit image": "Muuda pilti",
"Image options": "Pildi valikud",
"Zoom in": "Suumi sisse",
"Zoom out": "Suumi v\u00e4lja",
"Crop": "L\u00f5ika",
"Resize": "Muuda suurust",
"Orientation": "Suund",
"Brightness": "Heledus",
"Sharpen": "Teravamaks",
"Contrast": "Kontrast",
"Color levels": "V\u00e4rvi tasemed",
"Gamma": "Gamma",
"Invert": "P\u00f6\u00f6ra v\u00e4rvid",
"Apply": "Rakenda",
"Back": "Tagasi",
"Insert date\/time": "Lisa kuup\u00e4ev\/kellaaeg",
"Date\/time": "Kuup\u00e4ev\/kellaaeg",
"Insert\/Edit Link": "Lingi lisamine \/ muutmine",
"Insert\/edit link": "Lisa\/muuda link",
"Text to display": "Kuvatav tekst",
"Url": "Viide (url)",
"Open link in...": "Ava link saidil ...",
"Current window": "Praegune aken",
"None": "Puudub",
"New window": "Uus aken",
"Remove link": "Eemalda link",
"Anchors": "Ankrud",
"Link...": "Link...",
"Paste or type a link": "Aseta v\u00f5i sisesta link",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, mille sa sisestasid, n\u00e4ib olevat e-posti aadress. Kas sa soovid lisada sellele eesliite mailto: ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL, mille sa sisestasid, n\u00e4ib olevat v\u00e4line link. Kas sa soovid lisada sellele eesliite http:\/\/ ?",
"Link list": "Linkide nimekiri",
"Insert video": "Lisa video",
"Insert\/edit video": "Lisa\/muuda video",
"Insert\/edit media": "Lisa\/muuda multimeediat",
"Alternative source": "Teine allikas",
"Alternative source URL": "Alternatiivne allika URL",
"Media poster (Image URL)": "Meediaplakat (pildi URL)",
"Paste your embed code below:": "Kleebi oma manustamiskood siia alla:",
"Embed": "Manusta",
"Media...": "Meedia ...",
"Nonbreaking space": "T\u00fchim\u00e4rk (nbsp)",
"Page break": "Lehevahetus",
"Paste as text": "Aseta tekstina",
"Preview": "Eelvaade",
"Print...": "Prindi ...",
"Save": "Salvesta",
"Find": "Otsi",
"Replace with": "Asendus",
"Replace": "Asenda",
"Replace all": "Asenda k\u00f5ik",
"Previous": "Eelmine",
"Next": "J\u00e4rg",
"Find and replace...": "Leidke ja asendage ...",
"Could not find the specified string.": "Ei suutnud leida etteantud s\u00f5net.",
"Match case": "Erista suur- ja v\u00e4iket\u00e4hti",
"Find whole words only": "Leidke ainult terved s\u00f5nad",
"Spell check": "\u00d5igekirja kontroll",
"Ignore": "Eira",
"Ignore all": "Eira k\u00f5iki",
"Finish": "L\u00f5peta",
"Add to Dictionary": "Lisa s\u00f5naraamatusse",
"Insert table": "Lisa tabel",
"Table properties": "Tabeli omadused",
"Delete table": "Kustuta tabel",
"Cell": "Lahter",
"Row": "Rida",
"Column": "Tulp",
"Cell properties": "Lahtri omadused",
"Merge cells": "\u00dchenda lahtrid",
"Split cell": "T\u00fckelda lahter",
"Insert row before": "Lisa rida enne",
"Insert row after": "Lisa rida j\u00e4rele",
"Delete row": "Kustuta rida",
"Row properties": "Rea omadused",
"Cut row": "L\u00f5ika rida",
"Copy row": "Kopeeri rida",
"Paste row before": "Kleebi rida enne",
"Paste row after": "Kleebi rida j\u00e4rele",
"Insert column before": "Lisa tulp enne",
"Insert column after": "Lisa tulp j\u00e4rele",
"Delete column": "Kustuta tulp",
"Cols": "Veerud",
"Rows": "Read",
"Width": "Laius",
"Height": "K\u00f5rgus",
"Cell spacing": "Lahtrivahe",
"Cell padding": "Lahtri sisu ja tabeli \u00e4\u00e4rise vahe",
"Show caption": "Kuva pealdis",
"Left": "Vasakul",
"Center": "Keskel",
"Right": "Paremal",
"Cell type": "Lahtri t\u00fc\u00fcp",
"Scope": "Ulatus",
"Alignment": "Joondus",
"H Align": "H Joondus",
"V Align": "V Joondus",
"Top": "\u00dcleval",
"Middle": "Keskel",
"Bottom": "All",
"Header cell": "P\u00e4islahter",
"Row group": "Ridade r\u00fchm",
"Column group": "Veergude r\u00fchm",
"Row type": "Rea t\u00fc\u00fcp",
"Header": "P\u00e4is",
"Body": "P\u00f5hiosa",
"Footer": "Jalus",
"Border color": "Piirjoone v\u00e4rv",
"Insert template...": "Sisesta mall ...",
"Templates": "Mallid",
"Template": "Mall",
"Text color": "Teksti v\u00e4rv",
"Background color": "Tausta v\u00e4rv",
"Custom...": "Kohandatud...",
"Custom color": "Kohandatud v\u00e4rv",
"No color": "V\u00e4rvi pole",
"Remove color": "Eemaldage v\u00e4rv",
"Table of Contents": "Sisukord",
"Show blocks": "N\u00e4ita plokke",
"Show invisible characters": "N\u00e4ita peidetud m\u00e4rke",
"Word count": "S\u00f5nade arv",
"Count": "Krahv",
"Document": "Dokument",
"Selection": "Valik",
"Words": "S\u00f5nad",
"Words: {0}": "S\u00f5nu: {0}",
"{0} words": "{0} s\u00f5na",
"File": "Fail",
"Edit": "Muuda",
"Insert": "Sisesta",
"View": "Vaade",
"Format": "Vorming",
"Table": "Tabel",
"Tools": "T\u00f6\u00f6riistad",
"Powered by {0}": "Kasutatud tarkvara {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastatud teksti ala. Men\u00fc\u00fc jaoks vajuta ALT-F9. T\u00f6\u00f6riistariba jaoks vajuta ALT-F10. Abi saamiseks vajuta ALT-0.",
"Image title": "Pildi pealkiri",
"Border width": "\u00c4\u00e4rise laius",
"Border style": "Piiri stiil",
"Error": "Viga",
"Warn": "Hoiatage",
"Valid": "Kehtib",
"To open the popup, press Shift+Enter": "H\u00fcpikakna avamiseks vajutage t\u00f5stuklahvi + sisestusklahvi",
"Rich Text Area. Press ALT-0 for help.": "Rikasteksti ala. Abi saamiseks vajutage ALT-0.",
"System Font": "S\u00fcsteemi font",
"Failed to upload image: {0}": "Pildi \u00fcleslaadimine eba\u00f5nnestus: {0}",
"Failed to load plugin: {0} from url {1}": "Pistikprogrammi laadimine nurjus: {0} URL-ist {1}",
"Failed to load plugin url: {0}": "Pistikprogrammi URL-i laadimine nurjus: {0}",
"Failed to initialize plugin: {0}": "Pistikprogrammi l\u00e4htestamine eba\u00f5nnestus: {0}",
"example": "n\u00e4ide",
"Search": "Otsing",
"All": "K\u00f5ik",
"Currency": "Valuuta",
"Text": "Tekst",
"Quotations": "Tsitaadid",
"Mathematical": "Matemaatiline",
"Extended Latin": "Laiendatud ladina keel",
"Symbols": "S\u00fcmbolid",
"Arrows": "Nooled",
"User Defined": "Kasutaja m\u00e4\u00e4ratud",
"dollar sign": "dollari m\u00e4rk",
"currency sign": "v\u00e4\u00e4ringu m\u00e4rk",
"euro-currency sign": "euro v\u00e4\u00e4ringu m\u00e4rk",
"colon sign": "j\u00e4mesoole m\u00e4rk",
"cruzeiro sign": "cruzeiro m\u00e4rk",
"french franc sign": "Prantsuse frangi m\u00e4rk",
"lira sign": "liiri m\u00e4rk",
"mill sign": "veskim\u00e4rk",
"naira sign": "naira m\u00e4rk",
"peseta sign": "peseta m\u00e4rk",
"rupee sign": "ruupia m\u00e4rk",
"won sign": "v\u00f5itis m\u00e4rgi",
"new sheqel sign": "uus \u0161ekeli m\u00e4rk",
"dong sign": "dongi m\u00e4rk",
"kip sign": "kip m\u00e4rk",
"tugrik sign": "tugriku m\u00e4rk",
"drachma sign": "drahmam\u00e4rk",
"german penny symbol": "saksa senti s\u00fcmbol",
"peso sign": "peeso m\u00e4rk",
"guarani sign": "guarani m\u00e4rk",
"austral sign": "austraalne m\u00e4rk",
"hryvnia sign": "grivna m\u00e4rk",
"cedi sign": "cedi m\u00e4rk",
"livre tournois sign": "elav turniiri m\u00e4rk",
"spesmilo sign": "spesmilo m\u00e4rk",
"tenge sign": "tenge m\u00e4rk",
"indian rupee sign": "India ruupia m\u00e4rk",
"turkish lira sign": "t\u00fcrgi liiri m\u00e4rk",
"nordic mark sign": "p\u00f5hjam\u00e4rgi m\u00e4rk",
"manat sign": "manati m\u00e4rk",
"ruble sign": "rubla m\u00e4rk",
"yen character": "jeeni tegelaskuju",
"yuan character": "j\u00fcaani tegelaskuju",
"yuan character, in hong kong and taiwan": "j\u00fcaani tegelane, Hongkongis ja Taiwanis",
"yen\/yuan character variant one": "jeeni \/ j\u00fcaani t\u00e4hem\u00e4rgi variant \u00fcks",
"Loading emoticons...": "Emotikonide laadimine ...",
"Could not load emoticons": "Emotikonide laadimine nurjus",
"People": "Inimesed",
"Animals and Nature": "Loomad ja loodus",
"Food and Drink": "Toit ja jook",
"Activity": "Tegevus",
"Travel and Places": "Reisimine ja kohad",
"Objects": "Objektid",
"Flags": "Lipud",
"Characters": "Tegelased",
"Characters (no spaces)": "M\u00e4rgid (t\u00fchikud puuduvad)",
"{0} characters": "{0} t\u00e4hem\u00e4rki",
"Error: Form submit field collision.": "Viga: vormi esitamise v\u00e4lja kokkup\u00f5rge.",
"Error: No form element found.": "Viga: vormielementi ei leitud.",
"Update": "Uuenda",
"Color swatch": "V\u00e4rvivalik",
"Turquoise": "T\u00fcrkiis",
"Green": "Roheline",
"Blue": "Sinine",
"Purple": "Lilla",
"Navy Blue": "Merev\u00e4e sinine",
"Dark Turquoise": "Tume t\u00fcrkiissinine",
"Dark Green": "Tumeroheline",
"Medium Blue": "Keskmine sinine",
"Medium Purple": "Keskmine lilla",
"Midnight Blue": "Kesk\u00f6ine sinine",
"Yellow": "Kollane",
"Orange": "Oran\u017e",
"Red": "Punane",
"Light Gray": "Helehall",
"Gray": "Hall",
"Dark Yellow": "Tumekollane",
"Dark Orange": "Tumeoran\u017e",
"Dark Red": "Tumepunane",
"Medium Gray": "Keskmiselt hall",
"Dark Gray": "Tumehall",
"Light Green": "Heleroheline",
"Light Yellow": "Helekollane",
"Light Red": "Helepunane",
"Light Purple": "Helelilla",
"Light Blue": "Helesinine",
"Dark Purple": "Tumelilla",
"Dark Blue": "Tumesinine",
"Black": "Must",
"White": "Valge",
"Switch to or from fullscreen mode": "L\u00fclitumine t\u00e4isekraanre\u017eiimile v\u00f5i sellest v\u00e4lja",
"Open help dialog": "Ava dialoog",
"history": "ajalugu",
"styles": "stiilid",
"formatting": "vormindamine",
"alignment": "joondamine",
"indentation": "taane",
"permanent pen": "p\u00fcsiv pliiats",
"comments": "kommentaare",
"Format Painter": "Format Painter",
"Insert\/edit iframe": "Sisesta \/ redigeeri iframe",
"Capitalization": "Suurt\u00e4htede kasutamine",
"lowercase": "v\u00e4iket\u00e4hed",
"UPPERCASE": "\u00dcLEMINEK",
"Title Case": "Pealkirja juhtum",
"Permanent Pen Properties": "P\u00fcsivad pliiatsi omadused",
"Permanent pen properties...": "Pliiatsi p\u00fcsivad omadused ...",
"Font": "Font",
"Size": "Suurus",
"More...": "Veel ...",
"Spellcheck Language": "\u00d5igekirjakontroll",
"Select...": "Valige ...",
"Preferences": "Eelistused",
"Yes": "Jah",
"No": "Ei",
"Keyboard Navigation": "Klaviatuuril navigeerimine",
"Version": "Versioon",
"Anchor": "Ankur",
"Special character": "Erim\u00e4rk",
"Code sample": "Koodi n\u00e4idis",
"Color": "V\u00e4rv",
"Emoticons": "Emotikonid",
"Document properties": "Dokumendi omadused",
"Image": "Pilt",
"Insert link": "Lisa link",
"Target": "Sihtm\u00e4rk",
"Link": "Link",
"Poster": "Lisaja",
"Media": "Multimeedia",
"Print": "Tr\u00fcki",
"Prev": "Eelm",
"Find and replace": "Otsi ja asenda",
"Whole words": "Terviks\u00f5nad",
"Spellcheck": "\u00d5igekirja kontroll",
"Caption": "Alapealkiri",
"Insert template": "Lisa mall"
});js/tinymce/langs/nb_NO.js000064400000041036151727150400011273 0ustar00tinymce.addI18n('nb_NO',{
"Redo": "Gj\u00f8r om",
"Undo": "Angre",
"Cut": "Klipp ut",
"Copy": "Kopier",
"Paste": "Lim inn",
"Select all": "Marker alt",
"New document": "Nytt dokument",
"Ok": "Ok",
"Cancel": "Avbryt",
"Visual aids": "Visuelle hjelpemidler",
"Bold": "Fet",
"Italic": "Kursiv",
"Underline": "Understreking",
"Strikethrough": "Gjennomstreking",
"Superscript": "Hevet skrift",
"Subscript": "Senket skrift",
"Clear formatting": "Fjern formateringer",
"Align left": "Venstrejuster",
"Align center": "Midtstill",
"Align right": "H\u00f8yrejuster",
"Justify": "Blokkjuster",
"Bullet list": "Punktliste",
"Numbered list": "Nummerliste",
"Decrease indent": "Reduser innrykk",
"Increase indent": "\u00d8k innrykk",
"Close": "Lukk",
"Formats": "Stiler",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nettleseren din st\u00f8tter ikke direkte tilgang til utklippsboken. Bruk istedet tastatursnarveiene Ctrl+X\/C\/V.",
"Headers": "Overskrifter",
"Header 1": "Overskrift 1",
"Header 2": "Overskrift 2",
"Header 3": "Overskrift 3",
"Header 4": "Overskrift 4",
"Header 5": "Overskrift 5",
"Header 6": "Overskrift 6",
"Headings": "Overskrifter",
"Heading 1": "Overskrift 1",
"Heading 2": "Overskrift 2",
"Heading 3": "Overskrift 3",
"Heading 4": "Overskrift 4",
"Heading 5": "Overskrift 5",
"Heading 6": "Overskrift 6",
"Preformatted": "Forh\u00e5ndsformatert",
"Div": "Div",
"Pre": "Pre",
"Code": "Kode",
"Paragraph": "Avsnitt",
"Blockquote": "Blockquote",
"Inline": "Innkapslet",
"Blocks": "Blokker",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lim inn er n\u00e5 i ren-tekst modus. Kopiert innhold vil bli limt inn som ren tekst inntil du sl\u00e5r av dette valget.",
"Fonts": "Fonter",
"Font Sizes": "Fontst\u00f8rrelser",
"Class": "Klasse",
"Browse for an image": "S\u00f8k etter bilde",
"OR": "OR",
"Drop an image here": "Slipp et bilde her",
"Upload": "Last opp",
"Block": "Blokk",
"Align": "Juster",
"Default": "Normal",
"Circle": "\u00c5pen sirkel",
"Disc": "Fylt sirkel",
"Square": "Fylt firkant",
"Lower Alpha": "Minuskler",
"Lower Greek": "Greske minuskler",
"Lower Roman": "Romerske minuskler",
"Upper Alpha": "Versaler",
"Upper Roman": "Romerske versaler",
"Anchor...": "Lenke",
"Name": "Navn",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id burde starte med en bokstav, bare fulgt av bokstaver, nummer, streker, punktum, koloner eller understreker.",
"You have unsaved changes are you sure you want to navigate away?": "Du har ikke arkivert endringene. Vil du fortsette uten \u00e5 arkivere?",
"Restore last draft": "Gjenopprett siste utkast",
"Special character...": "Spesialtegn...",
"Source code": "Kildekode",
"Insert\/Edit code sample": "Sett inn\/endre kodeeksempel",
"Language": "Spr\u00e5k",
"Code sample...": "Kodeeksempel",
"Color Picker": "Fargevelger",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Venstre til h\u00f8yre",
"Right to left": "H\u00f8yre til venstre",
"Emoticons": "Hum\u00f8rfjes",
"Emoticons...": "Emoticons..",
"Metadata and Document Properties": "Metadata og dokumentverdier",
"Title": "Tittel",
"Keywords": "N\u00f8kkelord",
"Description": "Beskrivelse",
"Robots": "Roboter",
"Author": "Forfatter",
"Encoding": "Tegnkoding",
"Fullscreen": "Fullskjerm",
"Action": "Handling",
"Shortcut": "Snarvei",
"Help": "Hjelp",
"Address": "Adresse",
"Focus to menubar": "Fokus p\u00e5 menylinje",
"Focus to toolbar": "Fokus p\u00e5 verkt\u00f8ylinje",
"Focus to element path": "Fokus p\u00e5 elementsti",
"Focus to contextual toolbar": "Fokus p\u00e5 kontekstuell verkt\u00f8ylinje",
"Insert link (if link plugin activated)": "Sett inn lenke (dersom lenketillegg er aktivert)",
"Save (if save plugin activated)": "Lagre (dersom lagretillegg er aktivert)",
"Find (if searchreplace plugin activated)": "Finn (dersom tillegg for s\u00f8k og erstatt er aktivert)",
"Plugins installed ({0}):": "Installerte tillegg ({0}):",
"Premium plugins:": "Premiumtillegg:",
"Learn more...": "Les mer ...",
"You are using {0}": "Du bruker {0}",
"Plugins": "Tillegg",
"Handy Shortcuts": "Nyttige snarveier",
"Horizontal line": "Horisontal linje",
"Insert\/edit image": "Sett inn\/endre bilde",
"Alternative description": "Alternativ beskrivelse",
"Accessibility": "Tilgjengelighet",
"Image is decorative": "Bilde er dekorasjon",
"Source": "Bildelenke",
"Dimensions": "Dimensjoner",
"Constrain proportions": "Behold proporsjoner",
"General": "Generelt",
"Advanced": "Avansert",
"Style": "Stil",
"Vertical space": "Vertikal marg",
"Horizontal space": "Horisontal marg",
"Border": "Ramme",
"Insert image": "Sett inn bilde",
"Image...": "Bilde...",
"Image list": "Bildeliste",
"Rotate counterclockwise": "Roter mot venstre",
"Rotate clockwise": "Roter mot h\u00f8yre",
"Flip vertically": "Speilvend vertikalt",
"Flip horizontally": "Speilvend horisontalt",
"Edit image": "Rediger bilde",
"Image options": "Bilde innstillinger",
"Zoom in": "Zoom inn",
"Zoom out": "Zoom ut",
"Crop": "Beskj\u00e6r",
"Resize": "Skaler",
"Orientation": "Orientering",
"Brightness": "Lysstyrke",
"Sharpen": "Skarphet",
"Contrast": "Kontrast",
"Color levels": "Fargeniv\u00e5",
"Gamma": "Gamma",
"Invert": "Inverter",
"Apply": "Utf\u00f8r",
"Back": "Tilbake",
"Insert date\/time": "Sett inn dato\/tid",
"Date\/time": "Dato\/tid",
"Insert\/edit link": "Sett inn\/endre lenke",
"Text to display": "Tekst som skal vises",
"Url": "Url",
"Open link in...": "\u00c5pne lenke i..",
"Current window": "N\u00e5v\u00e6rende vindu",
"None": "Ingen",
"New window": "Nytt vindu",
"Open link": "\u00c5pne lenke",
"Remove link": "Fjern lenke",
"Anchors": "Anker",
"Link...": "Lenke...",
"Paste or type a link": "Lim inn eller skriv en lenke",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Oppgitte URL ser ut til \u00e5 v\u00e6re en epost-adresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevet mailto: prefiks forran epost-adressen?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Oppgitt URL ser ut til \u00e5 v\u00e6re en e-postadresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevd mailto:-prefiks foran e-postadressen?",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "Nettadressen du fylte inn ser ut til \u00e5 v\u00e6re en ekstern. \u00d8nsker du \u00e5 legge til p\u00e5krevd 'https:\/\/'-prefiks?",
"Link list": "Lenkeliste",
"Insert video": "Sett inn video",
"Insert\/edit video": "Sett inn\/rediger video",
"Insert\/edit media": "Sett inn\/endre media",
"Alternative source": "Alternativ kilde",
"Alternative source URL": "Alternativ kilde URL",
"Media poster (Image URL)": "Mediaposter (bilde-URL)",
"Paste your embed code below:": "Lim inn  inkluderings-koden nedenfor",
"Embed": "Inkluder",
"Media...": "Media..",
"Nonbreaking space": "Hardt mellomrom",
"Page break": "Sideskifte",
"Paste as text": "Lim inn som tekst",
"Preview": "Forh\u00e5ndsvisning",
"Print...": "Skriv ut...",
"Save": "Arkiver",
"Find": "Finn",
"Replace with": "Erstatt med",
"Replace": "Erstatt",
"Replace all": "Erstatt alle",
"Previous": "Forrige",
"Next": "Neste",
"Find and Replace": "Finn og erstatt",
"Find and replace...": "Finn og erstatt...",
"Could not find the specified string.": "Kunne ikke finne den spesifiserte teksten",
"Match case": "Match store og sm\u00e5 bokstaver",
"Find whole words only": "Finn kun hele ord",
"Find in selection": "Finn i utvalg",
"Spellcheck": "Stavekontroll",
"Spellcheck Language": "Stavekontroller spr\u00e5k",
"No misspellings found.": "Ingen feilstaving funnet",
"Ignore": "Ignorer",
"Ignore all": "Ignorer alle",
"Finish": "Avslutt",
"Add to Dictionary": "Legg til i ordliste",
"Insert table": "Sett inn tabell",
"Table properties": "Tabell egenskaper",
"Delete table": "Slett tabell",
"Cell": "Celle",
"Row": "Rad",
"Column": "Kolonne",
"Cell properties": "Celle egenskaper",
"Merge cells": "Sl\u00e5 sammen celler",
"Split cell": "Splitt celle",
"Insert row before": "Sett inn rad f\u00f8r",
"Insert row after": "Sett in rad etter",
"Delete row": "Slett rad",
"Row properties": "Rad egenskaper",
"Cut row": "Klipp ut rad",
"Copy row": "Kopier rad",
"Paste row before": "Lim inn rad f\u00f8r",
"Paste row after": "Lim inn rad etter",
"Insert column before": "Sett inn kolonne f\u00f8r",
"Insert column after": "Sett inn kolonne etter",
"Delete column": "Slett kolonne",
"Cols": "Kolonner",
"Rows": "Rader",
"Width": "Bredde",
"Height": "H\u00f8yde",
"Cell spacing": "Celleavstand",
"Cell padding": "Cellemarg",
"Caption": "Tittel",
"Show caption": "Vis bildetekst",
"Left": "Venstre",
"Center": "Midtstilt",
"Right": "H\u00f8yre",
"Cell type": "Celletype",
"Scope": "Omfang",
"Alignment": "Justering",
"H Align": "H Justering",
"V Align": "V Justering",
"Top": "Topp",
"Middle": "Midten",
"Bottom": "Bunn",
"Header cell": "Topptekst-celle",
"Row group": "Radgruppe",
"Column group": "Kolonnegruppe",
"Row type": "Rad-type",
"Header": "Topptekst",
"Body": "Br\u00f8dtekst",
"Footer": "Bunntekst",
"Border color": "Rammefarge",
"Insert template...": "Sett inn mal..",
"Templates": "Maler",
"Template": "Mal",
"Text color": "Tekstfarge",
"Background color": "Bakgrunnsfarge",
"Custom...": "Tilpass...",
"Custom color": "Tilpasset farge",
"No color": "Ingen farge",
"Remove color": "Fjern farge",
"Table of Contents": "Innholdsfortegnelse",
"Show blocks": "Vis blokker",
"Show invisible characters": "Vis skjulte tegn",
"Word count": "Ordtelling",
"Count": "Opptelling",
"Document": "Dokument",
"Selection": "Utvalg",
"Words": "Ord",
"Words: {0}": "Antall ord: {0}",
"{0} words": "{0} ord",
"File": "Arkiv",
"Edit": "Rediger",
"Insert": "Sett inn",
"View": "Vis",
"Format": "Format",
"Table": "Tabell",
"Tools": "Verkt\u00f8y",
"Powered by {0}": "Redigert med {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Tekstredigering. Tast ALT-F9 for meny. Tast ALT-F10 for verkt\u00f8ys-rader. Tast ALT-0 for hjelp.",
"Image title": "Bildetittel",
"Border width": "Bordbredde",
"Border style": "Bordstil",
"Error": "Feil",
"Warn": "Advarsel",
"Valid": "Gyldig",
"To open the popup, press Shift+Enter": "For \u00e5 \u00e5pne popup, trykk Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Rik-tekstomr\u00e5de. Trykk ALT-0 for hjelp.",
"System Font": "Systemfont",
"Failed to upload image: {0}": "Opplasting av bilde feilet: {0}",
"Failed to load plugin: {0} from url {1}": "Kunne ikke laste tillegg: {0} from url {1}",
"Failed to load plugin url: {0}": "Kunne ikke laste tillegg url: {0}",
"Failed to initialize plugin: {0}": "Kunne ikke initialisere tillegg: {0}",
"example": "eksempel",
"Search": "S\u00f8k",
"All": "Alle",
"Currency": "Valuta",
"Text": "Tekst",
"Quotations": "Sitater",
"Mathematical": "Matematisk",
"Extended Latin": "Utvidet latin",
"Symbols": "Symboler",
"Arrows": "Piler",
"User Defined": "Brukerdefinert",
"dollar sign": "dollartegn",
"currency sign": "valutasymbol",
"euro-currency sign": "Euro-valutasymbol",
"colon sign": "kolon-symbol",
"cruzeiro sign": "cruzeiro-symbol",
"french franc sign": "franske franc-symbol",
"lira sign": "lire-symbol",
"mill sign": "mill-symbol",
"naira sign": "naira-symbol",
"peseta sign": "peseta-symbol",
"rupee sign": "rupee-symbol",
"won sign": "won-symbol",
"new sheqel sign": "Ny sheqel-symbol",
"dong sign": "dong-symbol",
"kip sign": "kip-symbol",
"tugrik sign": "tugrik-symbol",
"drachma sign": "drachma-symbol",
"german penny symbol": "tysk penny-symbol",
"peso sign": "peso-symbol",
"guarani sign": "quarani-symbol",
"austral sign": "austral-symbol",
"hryvnia sign": "hryvina-symbol",
"cedi sign": "credi-symbol",
"livre tournois sign": "livre tournois-symbol",
"spesmilo sign": "spesmilo-symbol",
"tenge sign": "tenge-symbol",
"indian rupee sign": "indisk rupee-symbol",
"turkish lira sign": "tyrkisk lire-symbol",
"nordic mark sign": "nordisk mark-symbol",
"manat sign": "manat-symbol",
"ruble sign": "ruble-symbol",
"yen character": "yen-symbol",
"yuan character": "yuan-symbol",
"yuan character, in hong kong and taiwan": "yuan-symbol, i Hongkong og Taiwan",
"yen\/yuan character variant one": "yen\/yuan-symbol variant en",
"Loading emoticons...": "Laster emoticons..",
"Could not load emoticons": "Kunne ikke laste emoticons",
"People": "Mennesker",
"Animals and Nature": "Dyr og natur",
"Food and Drink": "Mat og drikke",
"Activity": "Aktivitet",
"Travel and Places": "Reise og steder",
"Objects": "Objekter",
"Flags": "Flagg",
"Characters": "Tegn",
"Characters (no spaces)": "Tegn (uten mellomrom)",
"{0} characters": "{0} tegn",
"Error: Form submit field collision.": "Feil: Skjemafelt innsendingskollisjon.",
"Error: No form element found.": "Feil: Intet skjemafelt funnet.",
"Update": "Oppdater",
"Color swatch": "Fargepalett",
"Turquoise": "Turkis",
"Green": "Gr\u00f8nn",
"Blue": "Bl\u00e5",
"Purple": "Lilla",
"Navy Blue": "Marinebl\u00e5",
"Dark Turquoise": "M\u00f8rk turkis",
"Dark Green": "M\u00f8rkegr\u00f8nn",
"Medium Blue": "Mellombl\u00e5",
"Medium Purple": "Medium lilla",
"Midnight Blue": "Midnattbl\u00e5",
"Yellow": "Gul",
"Orange": "Oransje",
"Red": "R\u00f8d",
"Light Gray": "Lys gr\u00e5",
"Gray": "Gr\u00e5",
"Dark Yellow": "M\u00f8rk gul",
"Dark Orange": "M\u00f8rk oransje",
"Dark Red": "M\u00f8rker\u00f8d",
"Medium Gray": "Medium gr\u00e5",
"Dark Gray": "M\u00f8rk gr\u00e5",
"Light Green": "Lys gr\u00f8nn",
"Light Yellow": "Lys gul",
"Light Red": "Lys r\u00f8d",
"Light Purple": "Lys lilla",
"Light Blue": "Lys bl\u00e5",
"Dark Purple": "M\u00f8rk lilla",
"Dark Blue": "M\u00f8rk bl\u00e5",
"Black": "Svart",
"White": "Hvit",
"Switch to or from fullscreen mode": "Bytt til eller fra fullskjermmodus",
"Open help dialog": "\u00c5pne hjelp-dialog",
"history": "historikk",
"styles": "stiler",
"formatting": "formatering",
"alignment": "justering",
"indentation": "innrykk",
"Font": "Skrift",
"Size": "St\u00f8rrelse",
"More...": "Mer...",
"Select...": "Velg...",
"Preferences": "Innstillinger",
"Yes": "Ja",
"No": "Nei",
"Keyboard Navigation": "Navigering med tastaturet",
"Version": "Versjon",
"Code view": "Kodevisning",
"Open popup menu for split buttons": "\u00c5pne sprettoppmeny for splitt-knapper",
"List Properties": "Listeegenskaper",
"List properties...": "Listeegenskaper ...",
"Start list at number": "Start liste p\u00e5 nummer",
"Line height": "Linjeh\u00f8yde",
"comments": "kommentarer",
"Format Painter": "Kopier format",
"Insert\/edit iframe": "Sett inn \/ rediger iframe",
"Capitalization": "Store\/sm\u00e5 bokstaver",
"lowercase": "sm\u00e5 bokstaver",
"UPPERCASE": "STORE BOKSTAVER",
"Title Case": "Tittelbokstav",
"permanent pen": "permanent penn",
"Permanent Pen Properties": "Permanente egenskaper for penn",
"Permanent pen properties...": "Permanente egenskaper for penn...",
"case change": "st\u00f8rrelseendring",
"page embed": "sideinnebygging",
"Advanced sort...": "Avansert sortering ...",
"Advanced Sort": "Avansert sortering",
"Sort table by column ascending": "Sorter tabell etter kolonne stigende",
"Sort table by column descending": "Sorter tabell etter kolonne synkende",
"Sort": "Sorter",
"Order": "Rekkef\u00f8lge",
"Sort by": "Sorter etter",
"Ascending": "Stigende",
"Descending": "Synkende",
"Column {0}": "Kolonne {0}",
"Row {0}": "Rad {0}",
"Spellcheck...": "Stavekontroll ...",
"Misspelled word": "Feilstavet ord",
"Suggestions": "Forslag",
"Change": "Endre",
"Finding word suggestions": "Finner ordforslag",
"Success": "Vellykket",
"Repair": "Reparer",
"Issue {0} of {1}": "Problem {0} av {1}",
"Images must be marked as decorative or have an alternative text description": "Bilder m\u00e5 markeres som dekorasjon eller ha en alternativ tekstbeskrivelse",
"Images must have an alternative text description. Decorative images are not allowed.": "Bilder m\u00e5 ha en alternativ tekstbeskrivelse. Dekorasjonbilder er ikke tillatt.",
"Or provide alternative text:": "Eller fyll inn en alternative tekst:",
"Make image decorative:": "Marker bilde som dekorasjon:",
"ID attribute must be unique": "'ID'-attributtet m\u00e5 v\u00e6re unikt",
"Make ID unique": "Gj\u00f8r 'ID' unik",
"Keep this ID and remove all others": "Behold denne 'ID'-en og fjern alle andre",
"Remove this ID": "Fjern denne 'ID'",
"Remove all IDs": "Fjern alle 'ID'-er",
"Checklist": "Avkryssingsliste",
"Anchor": "Anker",
"Special character": "Spesialtegn",
"Code sample": "Kodeeksempel",
"Color": "Farge",
"Document properties": "Dokumentegenskaper",
"Image description": "Bildebeskrivelse",
"Image": "Bilde",
"Insert link": "Sett inn lenke",
"Target": "M\u00e5l",
"Link": "Lenke",
"Poster": "Plakatbilde",
"Media": "Media",
"Print": "Skriv ut",
"Prev": "Forrige",
"Find and replace": "Finn og erstatt",
"Whole words": "Hele ord",
"Insert template": "Sett inn mal"
});js/tinymce/langs/zh_CN.js000064400000051406151727150410011304 0ustar00tinymce.addI18n('zh_CN',{
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u9500",
"Cut": "\u526a\u5207",
"Copy": "\u590d\u5236",
"Paste": "\u7c98\u8d34",
"Select all": "\u5168\u9009",
"New document": "\u65b0\u6587\u4ef6",
"Ok": "\u786e\u5b9a",
"Cancel": "\u53d6\u6d88",
"Visual aids": "\u7f51\u683c\u7ebf",
"Bold": "\u7c97\u4f53",
"Italic": "\u659c\u4f53",
"Underline": "\u4e0b\u5212\u7ebf",
"Strikethrough": "\u5220\u9664\u7ebf",
"Superscript": "\u4e0a\u6807",
"Subscript": "\u4e0b\u6807",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Align left": "\u5de6\u8fb9\u5bf9\u9f50",
"Align center": "\u4e2d\u95f4\u5bf9\u9f50",
"Align right": "\u53f3\u8fb9\u5bf9\u9f50",
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
"Numbered list": "\u7f16\u53f7\u5217\u8868",
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
"Close": "\u5173\u95ed",
"Formats": "\u683c\u5f0f",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002",
"Headers": "\u6807\u9898",
"Header 1": "\u6807\u98981",
"Header 2": "\u6807\u98982",
"Header 3": "\u6807\u98983",
"Header 4": "\u6807\u98984",
"Header 5": "\u6807\u98985",
"Header 6": "\u6807\u98986",
"Headings": "\u6807\u9898",
"Heading 1": "\u6807\u98981",
"Heading 2": "\u6807\u98982",
"Heading 3": "\u6807\u98983",
"Heading 4": "\u6807\u98984",
"Heading 5": "\u6807\u98985",
"Heading 6": "\u6807\u98986",
"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684",
"Div": "Div",
"Pre": "Pre",
"Code": "\u4ee3\u7801",
"Paragraph": "\u6bb5\u843d",
"Blockquote": "\u5f15\u6587\u533a\u5757",
"Inline": "\u6587\u672c",
"Blocks": "\u57fa\u5757",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
"Fonts": "\u5b57\u4f53",
"Font Sizes": "\u5b57\u53f7",
"Class": "\u7c7b\u578b",
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
"OR": "\u6216",
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
"Upload": "\u4e0a\u4f20",
"Block": "\u5757",
"Align": "\u5bf9\u9f50",
"Default": "\u9ed8\u8ba4",
"Circle": "\u7a7a\u5fc3\u5706",
"Disc": "\u5b9e\u5fc3\u5706",
"Square": "\u65b9\u5757",
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Anchor...": "\u951a\u70b9...",
"Name": "\u540d\u79f0",
"Id": "\u6807\u8bc6\u7b26",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
"Special character...": "\u7279\u6b8a\u5b57\u7b26...",
"Source code": "\u6e90\u4ee3\u7801",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
"Language": "\u8bed\u8a00",
"Code sample...": "\u793a\u4f8b\u4ee3\u7801...",
"Color Picker": "\u9009\u8272\u5668",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u4ece\u5de6\u5230\u53f3",
"Right to left": "\u4ece\u53f3\u5230\u5de6",
"Emoticons": "\u8868\u60c5",
"Emoticons...": "\u8868\u60c5\u7b26\u53f7...",
"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027",
"Title": "\u6807\u9898",
"Keywords": "\u5173\u952e\u8bcd",
"Description": "\u63cf\u8ff0",
"Robots": "\u673a\u5668\u4eba",
"Author": "\u4f5c\u8005",
"Encoding": "\u7f16\u7801",
"Fullscreen": "\u5168\u5c4f",
"Action": "\u64cd\u4f5c",
"Shortcut": "\u5feb\u6377\u952e",
"Help": "\u5e2e\u52a9",
"Address": "\u5730\u5740",
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
"Plugins": "\u63d2\u4ef6",
"Handy Shortcuts": "\u5feb\u6377\u952e",
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
"Alternative description": "\u66ff\u4ee3\u63cf\u8ff0",
"Accessibility": "\u8f85\u52a9\u529f\u80fd",
"Image is decorative": "\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684",
"Source": "\u5730\u5740",
"Dimensions": "\u5927\u5c0f",
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
"General": "\u666e\u901a",
"Advanced": "\u9ad8\u7ea7",
"Style": "\u6837\u5f0f",
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
"Border": "\u8fb9\u6846",
"Insert image": "\u63d2\u5165\u56fe\u7247",
"Image...": "\u56fe\u7247...",
"Image list": "\u56fe\u7247\u5217\u8868",
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
"Edit image": "\u7f16\u8f91\u56fe\u7247",
"Image options": "\u56fe\u7247\u9009\u9879",
"Zoom in": "\u653e\u5927",
"Zoom out": "\u7f29\u5c0f",
"Crop": "\u88c1\u526a",
"Resize": "\u8c03\u6574\u5927\u5c0f",
"Orientation": "\u65b9\u5411",
"Brightness": "\u4eae\u5ea6",
"Sharpen": "\u9510\u5316",
"Contrast": "\u5bf9\u6bd4\u5ea6",
"Color levels": "\u989c\u8272\u5c42\u6b21",
"Gamma": "\u4f3d\u9a6c\u503c",
"Invert": "\u53cd\u8f6c",
"Apply": "\u5e94\u7528",
"Back": "\u540e\u9000",
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Text to display": "\u663e\u793a\u6587\u5b57",
"Url": "\u5730\u5740",
"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...",
"Current window": "\u5f53\u524d\u7a97\u53e3",
"None": "\u65e0",
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
"Open link": "\u6253\u5f00\u94fe\u63a5",
"Remove link": "\u5220\u9664\u94fe\u63a5",
"Anchors": "\u951a\u70b9",
"Link...": "\u94fe\u63a5...",
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:\/\/ \u524d\u7f00\u5417\uff1f",
"Link list": "\u94fe\u63a5\u5217\u8868",
"Insert video": "\u63d2\u5165\u89c6\u9891",
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
"Alternative source": "\u955c\u50cf",
"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740",
"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)",
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
"Embed": "\u5185\u5d4c",
"Media...": "\u591a\u5a92\u4f53...",
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
"Page break": "\u5206\u9875\u7b26",
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
"Preview": "\u9884\u89c8",
"Print...": "\u6253\u5370...",
"Save": "\u4fdd\u5b58",
"Find": "\u67e5\u627e",
"Replace with": "\u66ff\u6362\u4e3a",
"Replace": "\u66ff\u6362",
"Replace all": "\u5168\u90e8\u66ff\u6362",
"Previous": "\u4e0a\u4e00\u4e2a",
"Next": "\u4e0b\u4e00\u4e2a",
"Find and Replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...",
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
"Find whole words only": "\u5168\u5b57\u5339\u914d",
"Find in selection": "\u5728\u9009\u533a\u4e2d\u67e5\u627e",
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00",
"No misspellings found.": "\u6ca1\u6709\u53d1\u73b0\u62fc\u5199\u9519\u8bef",
"Ignore": "\u5ffd\u7565",
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
"Finish": "\u5b8c\u6210",
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Table properties": "\u8868\u683c\u5c5e\u6027",
"Delete table": "\u5220\u9664\u8868\u683c",
"Cell": "\u5355\u5143\u683c",
"Row": "\u884c",
"Column": "\u5217",
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
"Delete row": "\u5220\u9664\u884c",
"Row properties": "\u884c\u5c5e\u6027",
"Cut row": "\u526a\u5207\u884c",
"Copy row": "\u590d\u5236\u884c",
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
"Delete column": "\u5220\u9664\u5217",
"Cols": "\u5217",
"Rows": "\u884c",
"Width": "\u5bbd",
"Height": "\u9ad8",
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
"Caption": "\u6807\u9898",
"Show caption": "\u663e\u793a\u6807\u9898",
"Left": "\u5de6\u5bf9\u9f50",
"Center": "\u5c45\u4e2d",
"Right": "\u53f3\u5bf9\u9f50",
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
"Scope": "\u8303\u56f4",
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
"V Align": "\u5782\u76f4\u5bf9\u9f50",
"Top": "\u9876\u90e8\u5bf9\u9f50",
"Middle": "\u5782\u76f4\u5c45\u4e2d",
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
"Row group": "\u884c\u7ec4",
"Column group": "\u5217\u7ec4",
"Row type": "\u884c\u7c7b\u578b",
"Header": "\u8868\u5934",
"Body": "\u8868\u4f53",
"Footer": "\u8868\u5c3e",
"Border color": "\u8fb9\u6846\u989c\u8272",
"Insert template...": "\u63d2\u5165\u6a21\u677f...",
"Templates": "\u6a21\u677f",
"Template": "\u6a21\u677f",
"Text color": "\u6587\u5b57\u989c\u8272",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u81ea\u5b9a\u4e49...",
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
"No color": "\u65e0",
"Remove color": "\u79fb\u9664\u989c\u8272",
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
"Word count": "\u5b57\u6570",
"Count": "\u8ba1\u6570",
"Document": "\u6587\u6863",
"Selection": "\u9009\u62e9",
"Words": "\u5355\u8bcd",
"Words: {0}": "\u5b57\u6570\uff1a{0}",
"{0} words": "{0} \u5b57",
"File": "\u6587\u4ef6",
"Edit": "\u7f16\u8f91",
"Insert": "\u63d2\u5165",
"View": "\u89c6\u56fe",
"Format": "\u683c\u5f0f",
"Table": "\u8868\u683c",
"Tools": "\u5de5\u5177",
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
"Image title": "\u56fe\u7247\u6807\u9898",
"Border width": "\u8fb9\u6846\u5bbd\u5ea6",
"Border style": "\u8fb9\u6846\u6837\u5f0f",
"Error": "\u9519\u8bef",
"Warn": "\u8b66\u544a",
"Valid": "\u6709\u6548",
"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846",
"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002",
"System Font": "\u7cfb\u7edf\u5b57\u4f53",
"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}",
"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}",
"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}",
"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}",
"example": "\u793a\u4f8b",
"Search": "\u641c\u7d22",
"All": "\u5168\u90e8",
"Currency": "\u8d27\u5e01",
"Text": "\u6587\u5b57",
"Quotations": "\u5f15\u7528",
"Mathematical": "\u6570\u5b66",
"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145",
"Symbols": "\u7b26\u53f7",
"Arrows": "\u7bad\u5934",
"User Defined": "\u81ea\u5b9a\u4e49",
"dollar sign": "\u7f8e\u5143\u7b26\u53f7",
"currency sign": "\u8d27\u5e01\u7b26\u53f7",
"euro-currency sign": "\u6b27\u5143\u7b26\u53f7",
"colon sign": "\u5192\u53f7",
"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7",
"french franc sign": "\u6cd5\u90ce\u7b26\u53f7",
"lira sign": "\u91cc\u62c9\u7b26\u53f7",
"mill sign": "\u5bc6\u5c14\u7b26\u53f7",
"naira sign": "\u5948\u62c9\u7b26\u53f7",
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7",
"rupee sign": "\u5362\u6bd4\u7b26\u53f7",
"won sign": "\u97e9\u5143\u7b26\u53f7",
"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7",
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7",
"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7",
"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7",
"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7",
"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7",
"peso sign": "\u6bd4\u7d22\u7b26\u53f7",
"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7",
"austral sign": "\u6fb3\u5143\u7b26\u53f7",
"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7",
"cedi sign": "\u585e\u5730\u7b26\u53f7",
"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7",
"spesmilo sign": "spesmilo\u7b26\u53f7",
"tenge sign": "\u575a\u6208\u7b26\u53f7",
"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4",
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9",
"nordic mark sign": "\u5317\u6b27\u9a6c\u514b",
"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7",
"ruble sign": "\u5362\u5e03\u7b26\u53f7",
"yen character": "\u65e5\u5143\u5b57\u6837",
"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837",
"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09",
"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09",
"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...",
"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7",
"People": "\u4eba\u7c7b",
"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136",
"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1",
"Activity": "\u6d3b\u52a8",
"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9",
"Objects": "\u7269\u4ef6",
"Flags": "\u65d7\u5e1c",
"Characters": "\u5b57\u7b26",
"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)",
"{0} characters": "{0} \u4e2a\u5b57\u7b26",
"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002",
"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002",
"Update": "\u66f4\u65b0",
"Color swatch": "\u989c\u8272\u6837\u672c",
"Turquoise": "\u9752\u7eff\u8272",
"Green": "\u7eff\u8272",
"Blue": "\u84dd\u8272",
"Purple": "\u7d2b\u8272",
"Navy Blue": "\u6d77\u519b\u84dd",
"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272",
"Dark Green": "\u6df1\u7eff\u8272",
"Medium Blue": "\u4e2d\u84dd\u8272",
"Medium Purple": "\u4e2d\u7d2b\u8272",
"Midnight Blue": "\u6df1\u84dd\u8272",
"Yellow": "\u9ec4\u8272",
"Orange": "\u6a59\u8272",
"Red": "\u7ea2\u8272",
"Light Gray": "\u6d45\u7070\u8272",
"Gray": "\u7070\u8272",
"Dark Yellow": "\u6697\u9ec4\u8272",
"Dark Orange": "\u6df1\u6a59\u8272",
"Dark Red": "\u6df1\u7ea2\u8272",
"Medium Gray": "\u4e2d\u7070\u8272",
"Dark Gray": "\u6df1\u7070\u8272",
"Light Green": "\u6d45\u7eff\u8272",
"Light Yellow": "\u6d45\u9ec4\u8272",
"Light Red": "\u6d45\u7ea2\u8272",
"Light Purple": "\u6d45\u7d2b\u8272",
"Light Blue": "\u6d45\u84dd\u8272",
"Dark Purple": "\u6df1\u7d2b\u8272",
"Dark Blue": "\u6df1\u84dd\u8272",
"Black": "\u9ed1\u8272",
"White": "\u767d\u8272",
"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f",
"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846",
"history": "\u5386\u53f2",
"styles": "\u6837\u5f0f",
"formatting": "\u683c\u5f0f\u5316",
"alignment": "\u5bf9\u9f50",
"indentation": "\u7f29\u8fdb",
"Font": "\u5b57\u4f53",
"Size": "\u5b57\u53f7",
"More...": "\u66f4\u591a...",
"Select...": "\u9009\u62e9...",
"Preferences": "\u9996\u9009\u9879",
"Yes": "\u662f",
"No": "\u5426",
"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15",
"Version": "\u7248\u672c",
"Code view": "\u4ee3\u7801\u89c6\u56fe",
"Open popup menu for split buttons": "\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae",
"List Properties": "\u5217\u8868\u5c5e\u6027",
"List properties...": "\u6807\u9898\u5b57\u4f53\u5c5e\u6027",
"Start list at number": "\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868",
"Line height": "\u884c\u9ad8",
"comments": "\u5907\u6ce8",
"Format Painter": "\u683c\u5f0f\u5237",
"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6",
"Capitalization": "\u5927\u5199",
"lowercase": "\u5c0f\u5199",
"UPPERCASE": "\u5927\u5199",
"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199",
"permanent pen": "\u8bb0\u53f7\u7b14",
"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027",
"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...",
"case change": "\u6848\u4f8b\u66f4\u6539",
"page embed": "\u9875\u9762\u5d4c\u5165",
"Advanced sort...": "\u9ad8\u7ea7\u6392\u5e8f...",
"Advanced Sort": "\u9ad8\u7ea7\u6392\u5e8f",
"Sort table by column ascending": "\u6309\u5217\u5347\u5e8f\u8868",
"Sort table by column descending": "\u6309\u5217\u964d\u5e8f\u8868",
"Sort": "\u6392\u5e8f",
"Order": "\u6392\u5e8f",
"Sort by": "\u6392\u5e8f\u65b9\u5f0f",
"Ascending": "\u5347\u5e8f",
"Descending": "\u964d\u5e8f",
"Column {0}": "\u5217{0}",
"Row {0}": "\u884c{0}",
"Spellcheck...": "\u62fc\u5199\u68c0\u67e5...",
"Misspelled word": "\u62fc\u5199\u9519\u8bef\u7684\u5355\u8bcd",
"Suggestions": "\u5efa\u8bae",
"Change": "\u66f4\u6539",
"Finding word suggestions": "\u67e5\u627e\u5355\u8bcd\u5efa\u8bae",
"Success": "\u6210\u529f",
"Repair": "\u4fee\u590d",
"Issue {0} of {1}": "\u5171\u8ba1{1}\u95ee\u9898{0}",
"Images must be marked as decorative or have an alternative text description": "\u56fe\u50cf\u5fc5\u987b\u6807\u8bb0\u4e3a\u88c5\u9970\u6027\u6216\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0",
"Images must have an alternative text description. Decorative images are not allowed.": "\u56fe\u50cf\u5fc5\u987b\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0\u3002\u4e0d\u5141\u8bb8\u4f7f\u7528\u88c5\u9970\u56fe\u50cf\u3002",
"Or provide alternative text:": "\u6216\u63d0\u4f9b\u5907\u9009\u6587\u672c\uff1a",
"Make image decorative:": "\u4f7f\u56fe\u50cf\u88c5\u9970\uff1a",
"ID attribute must be unique": "ID \u5c5e\u6027\u5fc5\u987b\u662f\u552f\u4e00\u7684",
"Make ID unique": "\u4f7f ID \u72ec\u4e00\u65e0\u4e8c",
"Keep this ID and remove all others": "\u4fdd\u7559\u6b64 ID \u5e76\u5220\u9664\u6240\u6709\u5176\u4ed6",
"Remove this ID": "\u5220\u9664\u6b64 ID",
"Remove all IDs": "\u6e05\u9664\u5168\u90e8IDs",
"Checklist": "\u6e05\u5355",
"Anchor": "\u951a\u70b9",
"Special character": "\u7279\u6b8a\u7b26\u53f7",
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
"Color": "\u989c\u8272",
"Document properties": "\u6587\u6863\u5c5e\u6027",
"Image description": "\u56fe\u7247\u63cf\u8ff0",
"Image": "\u56fe\u7247",
"Insert link": "\u63d2\u5165\u94fe\u63a5",
"Target": "\u6253\u5f00\u65b9\u5f0f",
"Link": "\u94fe\u63a5",
"Poster": "\u5c01\u9762",
"Media": "\u5a92\u4f53",
"Print": "\u6253\u5370",
"Prev": "\u4e0a\u4e00\u4e2a",
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Whole words": "\u5168\u5b57\u5339\u914d",
"Insert template": "\u63d2\u5165\u6a21\u677f"
});js/tinymce/langs/lt.js000064400000042321151727150410010716 0ustar00tinymce.addI18n('lt',{
"Redo": "Gr\u0105\u017einti",
"Undo": "Atstatyti",
"Cut": "I\u0161kirpti",
"Copy": "Kopijuoti",
"Paste": "\u012ed\u0117ti",
"Select all": "Pa\u017eym\u0117ti visk\u0105",
"New document": "Naujas dokumentas",
"Ok": "Gerai",
"Cancel": "Atsisakyti",
"Visual aids": "Vaizdin\u0117s priemon\u0117s",
"Bold": "Pary\u0161kintas",
"Italic": "Kursyvinis",
"Underline": "Pabrauktas",
"Strikethrough": "Perbrauktas",
"Superscript": "Vir\u0161utinis indeksas",
"Subscript": "Apatinis indeksas",
"Clear formatting": "Naikinti formatavim\u0105",
"Align left": "Lygiuoti kair\u0117je",
"Align center": "Centruoti",
"Align right": "Lygiuoti de\u0161in\u0117je",
"Justify": "I\u0161d\u0117styti per vis\u0105 plot\u012f",
"Bullet list": "\u017denklinimo s\u0105ra\u0161as",
"Numbered list": "Skaitmeninis s\u0105ra\u0161as",
"Decrease indent": "Ma\u017einti \u012ftrauk\u0105",
"Increase indent": "Didinti \u012ftrauk\u0105",
"Close": "U\u017edaryti",
"Formats": "Formatai",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nar\u0161ykl\u0117s nustatymai neleid\u017eia redaktoriui tiesiogiai pasiekti laikinosios atminties. Pra\u0161ome naudoti klaviat\u016bros klavi\u0161us Ctrl+X\/C\/V.",
"Headers": "Antra\u0161t\u0117s",
"Header 1": "Antra\u0161t\u0117 1",
"Header 2": "Antra\u0161t\u0117 2",
"Header 3": "Antra\u0161t\u0117 3",
"Header 4": "Antra\u0161t\u0117 4",
"Header 5": "Antra\u0161t\u0117 5",
"Header 6": "Antra\u0161t\u0117 6",
"Headings": "Antra\u0161t\u0117s",
"Heading 1": "Antra\u0161t\u0117 1",
"Heading 2": "Antra\u0161t\u0117 2",
"Heading 3": "Antra\u0161t\u0117 3",
"Heading 4": "Antra\u0161t\u0117 4",
"Heading 5": "Antra\u0161t\u0117 5",
"Heading 6": "Antra\u0161t\u0117 6",
"Preformatted": "Suformuotas i\u0161 anksto",
"Div": "Div",
"Pre": "Pre",
"Code": "Kodas",
"Paragraph": "Paragrafas",
"Blockquote": "Citata",
"Inline": "Inline",
"Blocks": "Blokai",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Dabar \u012fterpiama paprastojo teksto re\u017eimu. Kol \u0161i parinktis \u012fjungta, turinys bus \u012fterptas kaip paprastas tekstas.",
"Fonts": "\u0160riftai",
"Font Sizes": "\u0160rifto dyd\u017eiai",
"Class": "Klas\u0117",
"Browse for an image": "Ie\u0161koti paveiksl\u0117lio",
"OR": "ARBA",
"Drop an image here": "Tempkite paveiksl\u0117l\u012f \u010dia",
"Upload": "\u012ekelti",
"Block": "Blokas",
"Align": "Lygiavimas",
"Default": "Pagrindinis",
"Circle": "Apskritimas",
"Disc": "Diskas",
"Square": "Kvadratas",
"Lower Alpha": "Ma\u017eosios raid\u0117s",
"Lower Greek": "Ma\u017eosios graik\u0173",
"Lower Roman": "Ma\u017eosios rom\u0117n\u0173",
"Upper Alpha": "Did\u017eiosios raid\u0117s",
"Upper Roman": "Did\u017eiosios rom\u0117n\u0173",
"Anchor...": "Nuoroda...",
"Name": "Pavadinimas",
"Id": "ID",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID turi prasid\u0117ti raide, po kurios gali b\u016bti raid\u0117s, skai\u010diai, br\u016bk\u0161niai, ta\u0161kai, kabliata\u0161kiai ar apatiniai pabraukimai.",
"You have unsaved changes are you sure you want to navigate away?": "Turite nei\u0161saugot\u0173 pakeitim\u0173! Ar tikrai norite i\u0161eiti?",
"Restore last draft": "Atstatyti paskutin\u012f projekt\u0105",
"Special character...": "Specialieji simboliai...",
"Source code": "Pirminis \u0161altinis",
"Insert\/Edit code sample": "Prid\u0117ti \/ keisti kodo pavyzd\u012f",
"Language": "Kalba",
"Code sample...": "Kodo pavyzdys...",
"Color Picker": "Spalvos parinkimas",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "I\u0161 kair\u0117s \u012f de\u0161in\u0119",
"Right to left": "I\u0161 de\u0161in\u0117s \u012f kair\u0119",
"Emoticons...": "Jaustukai...",
"Metadata and Document Properties": "Meta duomenys ir dokumento ypatyb\u0117s",
"Title": "Pavadinimas",
"Keywords": "\u017dymos",
"Description": "Apra\u0161as",
"Robots": "Robotai",
"Author": "Autorius",
"Encoding": "Kodavimas",
"Fullscreen": "Visas ekranas",
"Action": "Veiksmas",
"Shortcut": "Nuoroda",
"Help": "Pagalba",
"Address": "Adresas",
"Focus to menubar": "Fokusuoti \u012f meniu",
"Focus to toolbar": "Fokusuoti \u012f \u012franki\u0173 juost\u0105",
"Focus to element path": "Fokusuoti \u012f elemento keli\u0105",
"Focus to contextual toolbar": "Fokusuoti \u012f kontekstin\u012f \u012franki\u0173 juost\u0105",
"Insert link (if link plugin activated)": "Prid\u0117ti nuorod\u0105 (jei link priedas aktyvuotas)",
"Save (if save plugin activated)": "I\u0161saugoti (jei save priedas aktyvuotas)",
"Find (if searchreplace plugin activated)": "Ie\u0161koti (jei searchreplace priedas aktyvuotas)",
"Plugins installed ({0}):": "\u012ediegti priedai ({0}):",
"Premium plugins:": "Mokami priedai:",
"Learn more...": "Su\u017einoti daugiau...",
"You are using {0}": "Naudojate {0}",
"Plugins": "Priedai",
"Handy Shortcuts": "Patogios nuorodos",
"Horizontal line": "Horizontali linija",
"Insert\/edit image": "\u012eterpti|Tvarkyti paveiksl\u0117l\u012f",
"Image description": "Paveiksl\u0117lio apra\u0161as",
"Source": "Pirmin\u0117 nuoroda",
"Dimensions": "Matmenys",
"Constrain proportions": "Laikytis proporcij\u0173",
"General": "Bendra",
"Advanced": "I\u0161pl\u0117stas",
"Style": "Stilius",
"Vertical space": "Vertikalus tarpas",
"Horizontal space": "Horizontalus tarpas",
"Border": "R\u0117melis",
"Insert image": "\u012eterpti paveiksl\u0117l\u012f",
"Image...": "Paveiksl\u0117lis...",
"Image list": "Paveiksl\u0117li\u0173 s\u0105ra\u0161as",
"Rotate counterclockwise": "Pasukti prie\u0161 laikrod\u017eio rodykl\u0119",
"Rotate clockwise": "Pasukti pagal laikrod\u017eio rodykl\u0119",
"Flip vertically": "Apversti vertikaliai",
"Flip horizontally": "Apversti horizontaliai",
"Edit image": "Redaguoti paveiksl\u0117l\u012f",
"Image options": "Paveiksl\u0117lio nustatymai",
"Zoom in": "Priartinti",
"Zoom out": "Atitolinti",
"Crop": "Atkarpyti",
"Resize": "Keisti dyd\u012f",
"Orientation": "Pasukimas",
"Brightness": "\u0160viesumas",
"Sharpen": "Ry\u0161kumas",
"Contrast": "Kontrastas",
"Color levels": "Spalv\u0173 lygiai",
"Gamma": "Gama",
"Invert": "Prie\u0161ingos spalvos",
"Apply": "Taikyti",
"Back": "Atgal",
"Insert date\/time": "\u012eterpti dat\u0105\/laik\u0105",
"Date\/time": "Data \/ laikas",
"Insert\/Edit Link": "Prid\u0117ti\/Keisti nuorod\u0105",
"Insert\/edit link": "\u012eterpti\/taisyti nuorod\u0105",
"Text to display": "Rodomas tekstas",
"Url": "Nuoroda",
"Open link in...": "Nuorod\u0105 atverti...",
"Current window": "Dabartiniame lange",
"None": "Nieko",
"New window": "Naujas langas",
"Remove link": "\u0160alinti nuorod\u0105",
"Anchors": "\u017dym\u0117",
"Link...": "Nuoroda...",
"Paste or type a link": "\u012eklijuokite arba \u012fra\u0161ykite nuorod\u0105",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Atrodo, kad \u012fvesta nuoroda yra elektroninio pa\u0161to adresas. Ar norite prie\u0161 j\u012f \u012fvesti reikalaujam\u0105 \u201emailto:\u201c?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Atrodo, kad \u012fved\u0117te nuotolin\u0119 nuorod\u0105. Ar norite prie\u0161 j\u0105 \u012fvesti reikalaujam\u0105 \u201ehttp:\/\/\u201c?",
"Link list": "Nuorod\u0173 s\u0105ra\u0161as",
"Insert video": "\u012eterpti video",
"Insert\/edit video": "\u012eterpti\/tvarkyti video",
"Insert\/edit media": "Prid\u0117ti \/ keisti medij\u0105",
"Alternative source": "Alternatyvus \u0161altinis",
"Alternative source URL": "Alternatyvus \u0161altinio URL adresas",
"Media poster (Image URL)": "medijos skelbiklis (paveiksl\u0117lio URL adresas)",
"Paste your embed code below:": "\u012eterpkite kod\u0105 \u017eemiau:",
"Embed": "\u012eterpti",
"Media...": "Medija...",
"Nonbreaking space": "Nepertraukiamos vietos",
"Page break": "Puslapio skirtukas",
"Paste as text": "\u012eklijuoti kaip tekst\u0105",
"Preview": "Per\u017ei\u016bra",
"Print...": "Spausdinti...",
"Save": "I\u0161saugoti",
"Find": "Ie\u0161koti",
"Replace with": "Kuo pakeisti",
"Replace": "Pakeisti",
"Replace all": "Pakeisti visk\u0105",
"Previous": "Ankstesnis",
"Next": "Sekantis",
"Find and replace...": "Ie\u0161koti ir pakeisti...",
"Could not find the specified string.": "Nepavyko rasti nurodytos eilut\u0117s.",
"Match case": "Atitinkamus",
"Find whole words only": "Ie\u0161koti tik vis\u0105 \u017eod\u012f",
"Spell check": "Klaid\u0173 tikrinimas",
"Ignore": "Ignoruoti",
"Ignore all": "Ignoruoti visk\u0105",
"Finish": "Baigti",
"Add to Dictionary": "Prid\u0117ti \u012f \u017dodyn\u0105",
"Insert table": "\u012eterpti lentel\u0119",
"Table properties": "Lentel\u0117s savyb\u0117s",
"Delete table": "\u0160alinti lentel\u0119",
"Cell": "Langeliai",
"Row": "Eilut\u0117s",
"Column": "Stulpelis",
"Cell properties": "Langelio savyb\u0117s",
"Merge cells": "Sujungti langelius",
"Split cell": "Skaidyti langelius",
"Insert row before": "\u012eterpti eilut\u0119 prie\u0161",
"Insert row after": "\u012eterpti eilut\u0119 po",
"Delete row": "Naikinti eilut\u0119",
"Row properties": "Eilut\u0117s savyb\u0117s",
"Cut row": "I\u0161kirpti eilut\u0119",
"Copy row": "Kopijuoti eilut\u0119",
"Paste row before": "\u012ed\u0117ti eilut\u0119 prie\u0161",
"Paste row after": "\u012ed\u0117ti eilut\u0119 po",
"Insert column before": "\u012eterpti stulpel\u012f prie\u0161",
"Insert column after": "\u012eterpti stulpel\u012f po",
"Delete column": "Naikinti stulpel\u012f",
"Cols": "Stulpeliai",
"Rows": "Eilut\u0117s",
"Width": "Plotis",
"Height": "Auk\u0161tis",
"Cell spacing": "Tarpas tarp langeli\u0173",
"Cell padding": "Tarpas nuo langelio iki teksto",
"Show caption": "Rodyti antra\u0161t\u0119",
"Left": "Kair\u0117",
"Center": "Centras",
"Right": "De\u0161in\u0117",
"Cell type": "Langelio tipas",
"Scope": "Strukt\u016bra",
"Alignment": "Lygiavimas",
"H Align": "H Lygiavimas",
"V Align": "V Lygiavimas",
"Top": "Vir\u0161uje",
"Middle": "Viduryje",
"Bottom": "Apa\u010dioje",
"Header cell": "Antra\u0161t\u0117s langelis",
"Row group": "Eilu\u010di\u0173 grup\u0117",
"Column group": "Stulpeli\u0173 grup\u0117",
"Row type": "Eilu\u010di\u0173 tipas",
"Header": "Antra\u0161t\u0117",
"Body": "Turinys",
"Footer": "Apa\u010dia",
"Border color": "R\u0117melio spalva",
"Insert template...": "Prid\u0117ti \u0161ablon\u0105...",
"Templates": "\u0160ablonai",
"Template": "\u0160ablonas",
"Text color": "Teksto spalva",
"Background color": "Fono spalva",
"Custom...": "Pasirinktinas...",
"Custom color": "Pasirinktina spalva",
"No color": "Jokios spalvos",
"Remove color": "Pa\u0161alinti spalv\u0105",
"Table of Contents": "Turinys",
"Show blocks": "Rodyti blokus",
"Show invisible characters": "Rodyti nematomus simbolius",
"Word count": "\u017dod\u017ei\u0173 kiekis",
"Count": "Skai\u010dius",
"Document": "Dokumentas",
"Selection": "Pasirinkimas",
"Words": "\u017dod\u017ei\u0173",
"Words: {0}": "\u017dod\u017eiai: {0}",
"{0} words": "{0} \u017eod\u017eiai",
"File": "Failas",
"Edit": "Redaguoti",
"Insert": "\u012eterpti",
"View": "Per\u017ei\u016bra",
"Format": "Formatas",
"Table": "Lentel\u0117",
"Tools": "\u012erankiai",
"Powered by {0}": "Sukurta {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Suformatuoto teksto laukas. D\u0117l meniu spauskite ALT-F9. U\u017eduo\u010di\u0173 juostos \u012fjungimui spauskite ALT-F10. Pagalbai - spauskite ALT-0.",
"Image title": "Paveiksl\u0117lio pavadinimas",
"Border width": "Kra\u0161tin\u0117s plotis",
"Border style": "Kra\u0161tin\u0117s stilius",
"Error": "Klaida",
"Warn": "\u012esp\u0117ti",
"Valid": "Tinkamas",
"To open the popup, press Shift+Enter": "Spustel\u0117j\u0119 Shift+Enter atversite i\u0161kylant\u012f lang\u0105",
"Rich Text Area. Press ALT-0 for help.": "Rai\u0161kiojo teksto vieta. Spustel\u0117j\u0119 Alt-0 gausite pagalbos.",
"System Font": "Sisteminiai \u0161riftai",
"Failed to upload image: {0}": "Paveiksl\u0117lio \u012fkelti nepavyko: {0}",
"Failed to load plugin: {0} from url {1}": "Priedo \u012fkelti nepavyko: {0} i\u0161 adreso {1}",
"Failed to load plugin url: {0}": "Priedo adreso \u012fkelti nepavyko: {0}",
"Failed to initialize plugin: {0}": "Priedo inicijuoti nepavyko: {0}",
"example": "pavyzdys",
"Search": "Ie\u0161koti",
"All": "Visi",
"Currency": "Valiuta",
"Text": "Tekstas",
"Quotations": "Citata",
"Mathematical": "Matematinis",
"Extended Latin": "Lotyn\u0173 i\u0161pl\u0117stin\u0117",
"Symbols": "Simboliai",
"Arrows": "Rodykl\u0117s",
"User Defined": "Vartotojo apibr\u0117\u017eta",
"dollar sign": "dolerio \u017eenklas",
"currency sign": "valiutos \u017eenklas",
"euro-currency sign": "euro \u017eenklas",
"colon sign": "dvita\u0161kio \u017eenklas",
"cruzeiro sign": "kruzeiro \u017eenklas",
"french franc sign": "Pranc\u016bz\u0173 franko \u017eenklas",
"lira sign": "lyros \u017eenklas",
"mill sign": "milo simbolis",
"naira sign": "nairos simbolis",
"peseta sign": "peseto \u017eenklas",
"rupee sign": "rupijos \u017eenklas",
"won sign": "vono \u017eenklas",
"new sheqel sign": "naujojo \u0161ekelio \u017eenklas",
"dong sign": "dongo \u017eenklas",
"kip sign": "kipo \u017eenklas",
"tugrik sign": "tugriko \u017eenklas",
"drachma sign": "drachmos \u017eenklas",
"german penny symbol": "Vokietijos fenigo \u017eenklas",
"peso sign": "peso \u017eenklas",
"guarani sign": "gvaranio \u017eenklas",
"austral sign": "australo \u017eenklas",
"hryvnia sign": "grivinos \u017eenklas",
"cedi sign": "sed\u017eio \u017eenklas",
"livre tournois sign": "toro svaro \u017eenklas",
"spesmilo sign": "spesmilo \u017eenklas",
"tenge sign": "teng\u0117s \u017eenklas",
"indian rupee sign": "Indijos rupijos \u017eenklas",
"turkish lira sign": "Turkijos lyros \u017eenklas",
"nordic mark sign": "\u0161iaur\u0117s \u0161ali\u0173 mark\u0117s \u017eenklas",
"manat sign": "manato \u017eenklas",
"ruble sign": "rublio \u017eenklas",
"yen character": "jienos simbolis",
"yuan character": "juanio simbolis",
"yuan character, in hong kong and taiwan": "juanio \u017eenklas, naudojamas Hongkonge ir Taivane",
"yen\/yuan character variant one": "jienos\/juanio vieningas \u017eenklas",
"Loading emoticons...": "\u012ekeliami jaustukai...",
"Could not load emoticons": "Nepavyko \u012fkelti jaustuk\u0173",
"People": "\u017dmon\u0117s",
"Animals and Nature": "Gyv\u016bnai ir gamta",
"Food and Drink": "Maistas ir g\u0117rimai",
"Activity": "Veikla",
"Travel and Places": "Kelion\u0117s ir vietos",
"Objects": "Objektai",
"Flags": "V\u0117liavos",
"Characters": "Simboli\u0173",
"Characters (no spaces)": "Simboli\u0173 (be tarp\u0173)",
"{0} characters": "{0} simboliai",
"Error: Form submit field collision.": "Klaida: formos lauk\u0173 nesuderinamumas.",
"Error: No form element found.": "Klaida: formos element\u0173 nerasta.",
"Update": "Naujinti",
"Color swatch": "Spalv\u0173 pavyzd\u017eiai",
"Turquoise": "\u017dalsvai m\u0117lyna",
"Green": "\u017dalia",
"Blue": "M\u0117lyna",
"Purple": "Ro\u017ein\u0117",
"Navy Blue": "Tamsiai m\u0117lyna",
"Dark Turquoise": "Tamsiai \u017ealsvai m\u0117lyna",
"Dark Green": "Tamsiai \u017ealia",
"Medium Blue": "Vidutini\u0161kai m\u0117lyna",
"Medium Purple": "Vidutini\u0161kai violetin\u0117",
"Midnight Blue": "Vidurnak\u010dio m\u0117lyna",
"Yellow": "Geltona",
"Orange": "Oran\u017ein\u0117",
"Red": "Raudona",
"Light Gray": "\u0160viesiai pilka",
"Gray": "Pilka",
"Dark Yellow": "Tamsiai geltona",
"Dark Orange": "Tamsiai oran\u017ein\u0117",
"Dark Red": "Tamsiai raudona",
"Medium Gray": "Vidutini\u0161kai pilka",
"Dark Gray": "Tamsiai pilka",
"Light Green": "\u0160viesiai \u017ealia",
"Light Yellow": "\u0160viesiai geltona",
"Light Red": "\u0160viesiai raudona",
"Light Purple": "\u0160viesiai violetin\u0117",
"Light Blue": "\u0160viesiai m\u0117lyna",
"Dark Purple": "Tamsiai violetin\u0117",
"Dark Blue": "Tamsiai m\u0117lyna",
"Black": "Juoda",
"White": "Balta",
"Switch to or from fullscreen mode": "Perjungti i\u0161\/\u012f viso ekrano rodym\u0105",
"Open help dialog": "Atverti pagalbos lang\u0105",
"history": "praeitis",
"styles": "stiliai",
"formatting": "formatavimas",
"alignment": "lygiavimas",
"indentation": "\u012ftrauka",
"permanent pen": "nuolatinis ra\u0161iklis",
"comments": "komentarai",
"Format Painter": "Formato kopijavimo priemon\u0117",
"Insert\/edit iframe": "Prid\u0117ti \/ keisti iframe",
"Capitalization": "Did\u017eiosios raid\u0117s",
"lowercase": "ma\u017eosios raid\u0117s",
"UPPERCASE": "VISOS DID\u017dIOSIOS",
"Title Case": "Pirmos Did\u017eiosios",
"Permanent Pen Properties": "Nuolatinio ra\u0161iklio nustatymai",
"Permanent pen properties...": "Nuolatinio ra\u0161iklio nustatymai...",
"Font": "\u0160riftas",
"Size": "Dydis",
"More...": "Daugiau...",
"Spellcheck Language": "Ra\u0161ybos tikrinimo kalba",
"Select...": "Pasirinkti...",
"Preferences": "Nustatymai",
"Yes": "Taip",
"No": "Ne",
"Keyboard Navigation": "Valdymas klaviat\u016bra",
"Version": "Versija",
"Anchor": "\u017dym\u0117",
"Special character": "Specialus simbolis",
"Code sample": "Kodo pavyzdys",
"Color": "Spalva",
"Emoticons": "Jaustukai",
"Document properties": "Dokumento savyb\u0117s",
"Image": "Paveiksl\u0117lis",
"Insert link": "\u012eterpti nuorod\u0105",
"Target": "Tikslin\u0117 nuoroda",
"Link": "Nuoroda",
"Poster": "Plakatas",
"Media": "Medija",
"Print": "Spausdinti",
"Prev": "Ankstesnis",
"Find and replace": "Surasti ir pakeisti",
"Whole words": "Visus \u017eod\u017eius",
"Spellcheck": "Ra\u0161ybos tikrinimas",
"Caption": "Antra\u0161t\u0117",
"Insert template": "\u012eterpti \u0161ablon\u0105"
});js/tinymce/langs/id.js000064400000033650151727150410010700 0ustar00tinymce.addI18n('id',{
"Redo": "Ulang",
"Undo": "Batalkan",
"Cut": "Potong",
"Copy": "Salin",
"Paste": "Rekat",
"Select all": "Pilih semua",
"New document": "Dokumen baru",
"Ok": "Ok",
"Cancel": "Batal",
"Visual aids": "Alat bantu visual",
"Bold": "Tebal",
"Italic": "Miring",
"Underline": "Garis bawah",
"Strikethrough": "Coret",
"Superscript": "Superskrip",
"Subscript": "Subskrip",
"Clear formatting": "Kosongkan format",
"Align left": "Rata kiri",
"Align center": "Rata tengah",
"Align right": "Rata kanan",
"Justify": "Rata penuh",
"Bullet list": "Daftar bersimbol",
"Numbered list": "Daftar bernomor",
"Decrease indent": "Kurangi inden",
"Increase indent": "Tambah inden",
"Close": "Tutup",
"Formats": "Format",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Browser anda tidak mendukung akses langsung ke papan klip. Silakan gunakan pintasan Ctrl+X\/C\/V dari keyboard.",
"Headers": "Judul",
"Header 1": "Judul 1",
"Header 2": "Judul 2",
"Header 3": "Judul 3",
"Header 4": "Judul 4",
"Header 5": "Judul 5",
"Header 6": "Judul 6",
"Headings": "Kepala",
"Heading 1": "Kepala 1",
"Heading 2": "Kepala 2",
"Heading 3": "Kepala 3",
"Heading 4": "Kepala 4",
"Heading 5": "Kepala 5",
"Heading 6": "Kepala 6",
"Preformatted": "Praformat",
"Div": "Div",
"Pre": "Pre",
"Code": "Kode",
"Paragraph": "Paragraf",
"Blockquote": "Kutipan",
"Inline": "Baris",
"Blocks": "Blok",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Penempelan sekarang dalam modus teks biasa. Konten sekarang akan disisipkan sebagai teks biasa sampai Anda memadamkan pilihan ini.",
"Fonts": "Huruf",
"Font Sizes": "Ukuran Huruf",
"Class": "Kelas",
"Browse for an image": "Jelajahi gambar",
"OR": "ATAU",
"Drop an image here": "Simpan gambar di sini",
"Upload": "Unggah",
"Block": "Blok",
"Align": "Sejajarkan",
"Default": "Bawaan",
"Circle": "Lingkaran",
"Disc": "Cakram",
"Square": "Kotak",
"Lower Alpha": "Huruf Kecil",
"Lower Greek": "Huruf Kecil Yunani",
"Lower Roman": "Huruf Kecil Romawi",
"Upper Alpha": "Huruf Besar",
"Upper Roman": "Huruf Besar Romawi",
"Anchor...": "Jangkar..",
"Name": "Nama",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id harus dimulai dengan huruf, dan hanya diikuti oleh huruf, angka, koma, titik, titik koma atau garis bawah.",
"You have unsaved changes are you sure you want to navigate away?": "Anda memiliki perubahan yang belum disimpan, yakin ingin beralih ?",
"Restore last draft": "Muat kembali draft sebelumnya",
"Special character...": "Karakter khusus...",
"Source code": "Kode sumber",
"Insert\/Edit code sample": "Tambah\/Edit contoh kode",
"Language": "Bahasa",
"Code sample...": "Sampel kode...",
"Color Picker": "Pemilih warna",
"R": "M",
"G": "H",
"B": "B",
"Left to right": "Kiri ke kanan",
"Right to left": "Kanan ke kiri",
"Emoticons...": "Emotikon...",
"Metadata and Document Properties": "Metadata dan Properti Dokumen",
"Title": "Judul",
"Keywords": "Kata kunci",
"Description": "Deskripsi",
"Robots": "Robot",
"Author": "Penulis",
"Encoding": "Enkoding",
"Fullscreen": "Layar penuh",
"Action": "Tindakan",
"Shortcut": "Pintasan",
"Help": "Bantuan",
"Address": "Alamat",
"Focus to menubar": "Fokus ke menubar",
"Focus to toolbar": "Fokus ke toolbar",
"Focus to element path": "Fokus ke jalur elemen",
"Focus to contextual toolbar": "Fokus ke toolbar kontekstual",
"Insert link (if link plugin activated)": "Masukan link (jika plugin diaktifkan)",
"Save (if save plugin activated)": "Simpan (jika plugin simpan diaktifkan)",
"Find (if searchreplace plugin activated)": "Cari (jika plugin searchplace diaktifkan)",
"Plugins installed ({0}):": "Plugin terpasang ({0})",
"Premium plugins:": "Plugin premium:",
"Learn more...": "Pelajari selengkapnya...",
"You are using {0}": "Anda menggunakan {0}",
"Plugins": "Plugin",
"Handy Shortcuts": "Pintasan Praktis",
"Horizontal line": "Garis horisontal",
"Insert\/edit image": "Sisip\/sunting gambar",
"Image description": "Deskripsi gambar",
"Source": "Sumber",
"Dimensions": "Dimensi",
"Constrain proportions": "Samakan proporsi",
"General": "Umum",
"Advanced": "Lanjutan",
"Style": "Gaya",
"Vertical space": "Spasi vertikal",
"Horizontal space": "Spasi horisontal",
"Border": "Batas",
"Insert image": "Sisipkan gambar",
"Image...": "Gambar...",
"Image list": "Daftar gambar",
"Rotate counterclockwise": "Putar berlawananjarumjam",
"Rotate clockwise": "Putar searahjarumjam",
"Flip vertically": "Balik vertikal",
"Flip horizontally": "Balik horisontal",
"Edit image": "Sunting gambar",
"Image options": "Opsi gambar",
"Zoom in": "Perbesar",
"Zoom out": "Perkecil",
"Crop": "Krop",
"Resize": "Ubah ukuran",
"Orientation": "Orientasi",
"Brightness": "Kecerahan",
"Sharpen": "Ketajaman",
"Contrast": "Kontras",
"Color levels": "Tingakt warna",
"Gamma": "Gamma",
"Invert": "Kebalikan",
"Apply": "Terapkan",
"Back": "Kembali",
"Insert date\/time": "Sisipkan tanggal\/waktu",
"Date\/time": "Tanggal\/waktu",
"Insert\/Edit Link": "Masukkan\/Edit Tautan",
"Insert\/edit link": "Sisip\/sunting tautan",
"Text to display": "Teks yang ditampilkan",
"Url": "Tautan",
"Open link in...": "Buka tautan dalam...",
"Current window": "Jendela saat ini",
"None": "Tidak ada",
"New window": "Jendela baru",
"Remove link": "Buang tautan",
"Anchors": "Jangkar",
"Link...": "Tautan...",
"Paste or type a link": "Tempel atau ketik sebuah tautan",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Tautan yang anda masukkan sepertinya adalah alamat email. Apakah Anda ingin menambahkan prefiks mailto: yang dibutuhkan?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Tautan yang anda masukkan sepertinya adalah tautan eksternal. Apakah Anda ingin menambahkan prefiks http:\/\/ yang dibutuhkan?",
"Link list": "Daftar tautan",
"Insert video": "Sisipkan video",
"Insert\/edit video": "Sisip\/sunting video",
"Insert\/edit media": "Sisip\/sunting media",
"Alternative source": "Sumber alternatif",
"Alternative source URL": "URL Sumber alternatif",
"Media poster (Image URL)": "Poster media (URL gambar)",
"Paste your embed code below:": "Tempel kode yang diembed dibawah ini:",
"Embed": "Embed",
"Media...": "Media...",
"Nonbreaking space": "Spasi",
"Page break": "Baris baru",
"Paste as text": "Tempel sebagai teks biasa",
"Preview": "Pratinjau",
"Print...": "Cetak...",
"Save": "Simpan",
"Find": "Cari",
"Replace with": "Ganti dengan",
"Replace": "Ganti",
"Replace all": "Ganti semua",
"Previous": "Sebelumnya",
"Next": "Berikutnya",
"Find and replace...": "Cari dan ganti...",
"Could not find the specified string.": "Tidak dapat menemukan string yang dimaksud.",
"Match case": "Samakan besar kecil huruf",
"Find whole words only": "Cari hanya kata utuh",
"Spell check": "Periksa ejaan",
"Ignore": "Abaikan",
"Ignore all": "Abaikan semua",
"Finish": "Selesai",
"Add to Dictionary": "Tambahkan ke kamus",
"Insert table": "Sisipkan tabel",
"Table properties": "Properti tabel",
"Delete table": "Hapus tabel",
"Cell": "Sel",
"Row": "Baris",
"Column": "Kolom",
"Cell properties": "Properti sel",
"Merge cells": "Gabung sel",
"Split cell": "Bagi sel",
"Insert row before": "Sisipkan baris sebelum",
"Insert row after": "Sisipkan baris setelah",
"Delete row": "Hapus baris",
"Row properties": "Properti baris",
"Cut row": "Penggal baris",
"Copy row": "Salin baris",
"Paste row before": "Tempel baris sebelum",
"Paste row after": "Tempel baris setelah",
"Insert column before": "Sisipkan kolom sebelum",
"Insert column after": "Sisipkan kolom setelah",
"Delete column": "Hapus kolom",
"Cols": "Kolom",
"Rows": "Baris",
"Width": "Lebar",
"Height": "Tinggi",
"Cell spacing": "Spasi sel ",
"Cell padding": "Lapisan sel",
"Show caption": "Perlihatkan keterangan",
"Left": "Kiri",
"Center": "Tengah",
"Right": "Kanan",
"Cell type": "Tipe sel",
"Scope": "Skup",
"Alignment": "Penjajaran",
"H Align": "Rata Samping",
"V Align": "Rata Atas",
"Top": "Atas",
"Middle": "Tengah",
"Bottom": "Bawah",
"Header cell": "Judul sel",
"Row group": "Kelompok baris",
"Column group": "Kelompok kolom",
"Row type": "Tipe baris",
"Header": "Judul",
"Body": "Body",
"Footer": "Footer",
"Border color": "Warna batas",
"Insert template...": "Masukkan template...",
"Templates": "Templat",
"Template": "Templat",
"Text color": "Warna teks",
"Background color": "Warna latar",
"Custom...": "Atur sendiri...",
"Custom color": "Warna sendiri",
"No color": "Tidak berwarna",
"Remove color": "Hapus warna",
"Table of Contents": "Daftar Isi",
"Show blocks": "Tampilkan blok",
"Show invisible characters": "Tampilkan karakter tak tampak",
"Word count": "Hitungan kata",
"Count": "Hitungan",
"Document": "Dokumen",
"Selection": "Pemilihan",
"Words": "Kata",
"Words: {0}": "Kata: {0}",
"{0} words": "{0} kata",
"File": "Berkas",
"Edit": "Sunting",
"Insert": "Sisip",
"View": "Tampilan",
"Format": "Format",
"Table": "Tabel",
"Tools": "Alat",
"Powered by {0}": "Didukung oleh {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Area teks kaya. Tekan ALT-F9 untuk menu. Tekan ALT-F10 untuk toolbar. Tekan ALT-0 untuk bantuan",
"Image title": "Judul gambar",
"Border width": "Lebar pinggiran",
"Border style": "Gaya pinggiran",
"Error": "Kesalahan",
"Warn": "Peringatkan",
"Valid": "Valid",
"To open the popup, press Shift+Enter": "Untuk membuka popup, tekan Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "Area Teks Kaya. Tekan ALT-0 untuk bantuan.",
"System Font": "Huruf Sistem",
"Failed to upload image: {0}": "Gagal mengunggah gambar: {0}",
"Failed to load plugin: {0} from url {1}": "Gagal memuat plugin: {0} dari url {1}",
"Failed to load plugin url: {0}": "Gagal memuat url plugin: {0}",
"Failed to initialize plugin: {0}": "Gagal memulai plugin: {0}",
"example": "contoh",
"Search": "Cari",
"All": "Semua",
"Currency": "Mata Uang",
"Text": "Teks",
"Quotations": "Kutipan",
"Mathematical": "Matematis",
"Extended Latin": "Latin Diperluas",
"Symbols": "Simbol",
"Arrows": "Panah",
"User Defined": "Ditentukan Pengguna",
"dollar sign": "tanda dolar",
"currency sign": "tanda mata uang",
"euro-currency sign": "tanda mata uang eropa",
"colon sign": "tanda titik dua",
"cruzeiro sign": "tanda cruzeiro",
"french franc sign": "tanda franc prancis",
"lira sign": "tanda lira",
"mill sign": "tanda mill",
"naira sign": "tanda naira",
"peseta sign": "tanda peseta",
"rupee sign": "tanda rupee",
"won sign": "tanda won",
"new sheqel sign": "tanda sheqel baru",
"dong sign": "tanda dong",
"kip sign": "tanda kip",
"tugrik sign": "tanda tugrik",
"drachma sign": "tanda drachma",
"german penny symbol": "simbol penny jerman",
"peso sign": "tanda peso",
"guarani sign": "tanda guarani",
"austral sign": "tanda austral",
"hryvnia sign": "tanda hryvnia",
"cedi sign": "tanda cedi",
"livre tournois sign": "tanda livre tournois",
"spesmilo sign": "tanda spesmilo",
"tenge sign": "tanda tenge",
"indian rupee sign": "tanda rupee india",
"turkish lira sign": "tanda lira turki",
"nordic mark sign": "tanda mark nordik",
"manat sign": "tanda manat",
"ruble sign": "tanda ruble",
"yen character": "karakter yen",
"yuan character": "karakter yuan",
"yuan character, in hong kong and taiwan": "karakter yuan, di hong kong dan taiwan",
"yen\/yuan character variant one": "varian satu karakter yen\/yuan",
"Loading emoticons...": "Memuat emotikon...",
"Could not load emoticons": "Tidak dapat memuat emotikon",
"People": "Orang",
"Animals and Nature": "Hewan dan Alam",
"Food and Drink": "Makanan dan Minuman",
"Activity": "Aktivitas",
"Travel and Places": "Perjalanan dan Lokasi",
"Objects": "Objek",
"Flags": "Bendera",
"Characters": "Karakter",
"Characters (no spaces)": "Karakter (tanpa spasi)",
"{0} characters": "{0} karakter",
"Error: Form submit field collision.": "Kesalahan: Benturan bidang pengiriman bentuk.",
"Error: No form element found.": "Kesalahan: tidak ditemukan elemen bentuk.",
"Update": "Perbarui",
"Color swatch": "Contoh warna",
"Turquoise": "Turquoise",
"Green": "Hijau",
"Blue": "Biru",
"Purple": "Ungu",
"Navy Blue": "Biru Navy",
"Dark Turquoise": "Turquoise Gelap",
"Dark Green": "Hijau Gelap",
"Medium Blue": "Biru Medium",
"Medium Purple": "Ungu Medium",
"Midnight Blue": "Biru Midnight",
"Yellow": "Kuning",
"Orange": "Jingga",
"Red": "Merah",
"Light Gray": "Abu Muda",
"Gray": "Abu-abu",
"Dark Yellow": "Kuning Gelap",
"Dark Orange": "Jingga Gelap",
"Dark Red": "Merah Gelap",
"Medium Gray": "Abu Medium",
"Dark Gray": "Abu Gelap",
"Light Green": "Hijau Muda",
"Light Yellow": "Kuning Muda",
"Light Red": "Merah Muda",
"Light Purple": "Ungu Muda",
"Light Blue": "Biru Muda",
"Dark Purple": "Ungu Gelap",
"Dark Blue": "Biru Gelap",
"Black": "Hitam",
"White": "Putih",
"Switch to or from fullscreen mode": "Alihkan ke atau dari mode layar penuh",
"Open help dialog": "Buka dialog bantuan",
"history": "riwayat",
"styles": "gaya",
"formatting": "pemformatan",
"alignment": "penyejajaran",
"indentation": "indentasi",
"permanent pen": "pena permanen",
"comments": "komentar",
"Format Painter": "Format Pelukis",
"Insert\/edit iframe": "Masukkan\/edit iframe",
"Capitalization": "Kapitalisasi",
"lowercase": "huruf kecil",
"UPPERCASE": "HURUF BESAR",
"Title Case": "Huruf Judul",
"Permanent Pen Properties": "Properti Pena Permanen",
"Permanent pen properties...": "Properti pena permanen...",
"Font": "Huruf",
"Size": "Ukuran",
"More...": "Lainnya...",
"Spellcheck Language": "Periksa Ejaan Bahasa",
"Select...": "Pilih...",
"Preferences": "Preferensi",
"Yes": "Ya",
"No": "Tidak",
"Keyboard Navigation": "Navigasi Keyboard",
"Version": "Versi",
"Anchor": "Jangkar",
"Special character": "Spesial karakter",
"Code sample": "Contoh kode",
"Color": "Warna",
"Emoticons": "Emotikon",
"Document properties": "Properti dokumwn",
"Image": "Gambar",
"Insert link": "Sisipkan tautan",
"Target": "Jendela tujuan",
"Link": "Tautan",
"Poster": "Penulis",
"Media": "Media",
"Print": "Cetak",
"Prev": "Sebelumnya",
"Find and replace": "Cari dan ganti",
"Whole words": "Semua kata",
"Spellcheck": "Periksa ejaan",
"Caption": "Caption",
"Insert template": "Sisipkan templat"
});js/tinymce/langs/README.md000064400000000227151727150420011220 0ustar00This is where language files should be placed.

Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
js/tinymce/langs/vi_VN.js000064400000030251151727150420011320 0ustar00tinymce.addI18n('vi_VN',{
"Redo": "Ho\u00e0n t\u00e1t",
"Undo": "Hu\u1ef7 thao t\u00e1c",
"Cut": "C\u1eaft",
"Copy": "Ch\u00e9p",
"Paste": "D\u00e1n",
"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
"Ok": "OK",
"Cancel": "Hu\u1ef7",
"Visual aids": "Hi\u1ec7n khung so\u1ea1n th\u1ea3o",
"Bold": "T\u00f4 \u0111\u1eadm",
"Italic": "In nghi\u00eang",
"Underline": "G\u1ea1ch d\u01b0\u1edbi",
"Strikethrough": "G\u1ea1ch ngang",
"Superscript": "Tr\u00ean d\u00f2ng",
"Subscript": "D\u01b0\u1edbi d\u00f2ng",
"Clear formatting": "Xo\u00e1 \u0111\u1ecbnh d\u1ea1ng",
"Align left": "Canh tr\u00e1i",
"Align center": "Canh gi\u1eefa",
"Align right": "Canh ph\u1ea3i",
"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
"Bullet list": "D\u1ea5u \u0111\u1ea7u d\u00f2ng",
"Numbered list": "Danh s\u00e1ch s\u1ed1",
"Decrease indent": "L\u00f9i ra",
"Increase indent": "L\u00f9i v\u00e0o",
"Close": "\u0110\u00f3ng",
"Formats": "\u0110\u1ecbnh d\u1ea1ng",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3 truy c\u1eadp clipboard, vui l\u00f2ng s\u1eed d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p Ctrl + X, C, V.",
"Headers": "\u0110\u1ea7u trang",
"Header 1": "Ti\u00eau \u0111\u1ec1 1",
"Header 2": "Ti\u00eau \u0111\u1ec1 2",
"Header 3": "Ti\u00eau \u0111\u1ec1 3",
"Header 4": "Ti\u00eau \u0111\u1ec1 4",
"Header 5": "Ti\u00eau \u0111\u1ec1 5",
"Header 6": "Ti\u00eau \u0111\u1ec1 6",
"Headings": "Ti\u00eau \u0111\u1ec1",
"Heading 1": "Ti\u00eau \u0111\u1ec1 1",
"Heading 2": "Ti\u00eau \u0111\u1ec1 2",
"Heading 3": "Ti\u00eau \u0111\u1ec1 3",
"Heading 4": "Ti\u00eau \u0111\u1ec1 4",
"Heading 5": "Ti\u00eau \u0111\u1ec1 5",
"Heading 6": "Ti\u00eau \u0111\u1ec1 6",
"Div": "Khung",
"Pre": "\u0110\u1ecbnh d\u1ea1ng",
"Code": "M\u00e3",
"Paragraph": "\u0110o\u1ea1n v\u0103n",
"Blockquote": "Tr\u00edch",
"Inline": "C\u00f9ng d\u00f2ng",
"Blocks": "Bao",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00e1n b\u00e2y gi\u1edd l\u00e0 \u1edf ch\u1ebf \u0111\u1ed9 v\u0103n b\u1ea3n \u0111\u01a1n gi\u1ea3n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n nh\u01b0 \u0111\u1ed3ng b\u1eb1ng v\u0103n b\u1ea3n cho \u0111\u1ebfn khi b\u1ea1n chuy\u1ec3n \u0111\u1ed5i t\u00f9y ch\u1ecdn n\u00e0y.",
"Font Family": "Ph\u00f4ng",
"Font Sizes": "K\u00edch th\u01b0\u1edbc ph\u00f4ng",
"Class": "L\u1edbp",
"Browse for an image": "Duy\u1ec7t \u1ea3nh",
"OR": "HO\u1eb6C",
"Drop an image here": "Th\u1ea3 h\u00ecnh \u1ea3nh \u1edf \u0111\u00e2y",
"Upload": "T\u1ea3i l\u00ean",
"Block": "Kh\u1ed1i",
"Align": "C\u0103n ch\u1ec9nh",
"Default": "Ng\u1ea7m \u0111\u1ecbnh",
"Circle": "H\u00ecnh tr\u00f2n",
"Disc": "H\u00ecnh tr\u00f2n m\u1ecfng",
"Square": "\u00d4 vu\u00f4ng",
"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
"Upper Alpha": "K\u00fd t\u1ef1 hoa",
"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
"Anchor": "Neo",
"Name": "T\u00ean",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id ph\u1ea3i b\u1eaft \u0111\u1ea7u b\u1eb1ng m\u1ed9t ch\u1eef c\u00e1i, ch\u1ec9 theo sau b\u1edfi c\u00e1c ch\u1eef c\u00e1i, s\u1ed1, d\u1ea5u g\u1ea1ch ngang, d\u1ea5u ch\u1ea5m, d\u1ea5u hai ch\u1ea5m ho\u1eb7c d\u1ea5u g\u1ea1ch d\u01b0\u1edbi.",
"You have unsaved changes are you sure you want to navigate away?": "B\u1ea1n ch\u01b0a l\u01b0u c\u00e1c thay \u0111\u1ed5i, b\u1ea1n c\u00f3 th\u1eadt s\u1ef1 mu\u1ed1n \u0111\u00f3ng ?",
"Restore last draft": "Ph\u1ee5c h\u1ed3i b\u1ea3n l\u01b0u g\u1ea7n nh\u1ea5t",
"Special character": "K\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t",
"Source code": "M\u00e3 ngu\u1ed3n",
"Insert\/Edit code sample": "Ch\u00e8n\/Ch\u1ec9nh s\u1eeda m\u1eabu",
"Language": "Ng\u00f4n ng\u1eef",
"Code sample": "\u0110o\u1ea1n m\u00e3 m\u1eabu",
"Color": "M\u00e0u",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Tr\u00e1i sang ph\u1ea3i",
"Right to left": "Ph\u1ea3i sang tr\u00e1i",
"Emoticons": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac",
"Document properties": "Thu\u1ed9c t\u00ednh t\u00e0i li\u1ec7u",
"Title": "Ti\u00eau \u0111\u1ec1",
"Keywords": "T\u1eeb kho\u00e1",
"Description": "Mi\u00eau t\u1ea3",
"Robots": "Robots",
"Author": "Neo",
"Encoding": "M\u00e3 ho\u00e1",
"Fullscreen": "\u0110\u1ea7y m\u00e0n h\u00ecnh",
"Action": "H\u00e0nh \u0111\u1ed9ng",
"Shortcut": "L\u1ed1i t\u1eaft",
"Help": "Tr\u1ee3 gi\u00fap",
"Address": "\u0110\u1ecba ch\u1ec9",
"Focus to menubar": "G\u1eafn l\u00ean thanh tr\u00ecnh \u0111\u01a1n",
"Focus to toolbar": "G\u1eafn l\u00ean thanh c\u00f4ng c\u1ee5",
"Focus to element path": "G\u1eafn v\u00e0o \u0111\u01b0\u1eddng d\u1eabn",
"Focus to contextual toolbar": "G\u1eafn v\u00e0o thanh c\u00f4ng c\u1ee5 ng\u1eef c\u1ea3nh",
"Insert link (if link plugin activated)": "Ch\u00e8n li\u00ean k\u1ebft (n\u1ebfu plugin li\u00ean k\u1ebft \u0111\u1ea3 k\u00edch ho\u1ea1t)",
"Save (if save plugin activated)": "L\u01b0u (n\u1ebfu plugin l\u01b0u \u0111\u1ea3 k\u00edch ho\u1ea1t)",
"Find (if searchreplace plugin activated)": "T\u00ecm (n\u1ebfu plugin t\u00ecm v\u00e0 thay th\u1ebf \u0111\u1ea3 k\u00edch ho\u1ea1t)",
"Plugins installed ({0}):": "Plugin \u0111\u00e3 c\u00e0i \u0111\u1eb7t ({0}):",
"Premium plugins:": "C\u00e1c Plugin tr\u1ea3 ph\u00ed:",
"Learn more...": "T\u00ecm hi\u1ec3u th\u00eam...",
"You are using {0}": "B\u1ea1n \u0111ang s\u1eed d\u1ee5ng {0}",
"Plugins": "Plugins",
"Handy Shortcuts": "Ph\u00edm t\u1eaft ti\u1ec7n d\u1ee5ng",
"Horizontal line": "G\u1ea1ch ngang",
"Insert\/edit image": "Th\u00eam \/ s\u1eeda h\u00ecnh \u1ea3nh",
"Image description": "Mi\u00eau t\u1ea3 h\u00ecnh \u1ea3nh",
"Source": "Ngu\u1ed3n",
"Dimensions": "K\u00edch th\u01b0\u1edbc",
"Constrain proportions": "H\u1ea1n ch\u1ebf t\u1ef7 l\u1ec7",
"General": "T\u1ed5ng h\u1ee3p",
"Advanced": "N\u00e2ng cao",
"Style": "Ki\u1ec3u",
"Vertical space": "Kho\u1ea3ng c\u00e1ch d\u1ecdc",
"Horizontal space": "Kho\u1ea3ng c\u00e1ch ngang",
"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
"Insert image": "Ch\u00e8n \u1ea3nh",
"Image": "H\u00ecnh \u1ea3nh",
"Image list": "Danh s\u00e1ch \u1ea3nh",
"Rotate counterclockwise": "Xoay ng\u01b0\u1ee3c chi\u1ec1u kim \u0111\u1ed3ng",
"Rotate clockwise": "Xoay theo chi\u1ec1u kim \u0111\u1ed3ng h\u1ed3",
"Flip vertically": "L\u1eadt d\u1ecdc",
"Flip horizontally": "L\u1eadt ngang",
"Edit image": "S\u1eeda \u1ea3nh",
"Image options": "T\u00f9y ch\u1ecdn h\u00ecnh \u1ea3nh",
"Zoom in": "Ph\u00f3ng to",
"Zoom out": "Thu nh\u1ecf",
"Crop": "X\u00e9n",
"Resize": "Thay \u0111\u1ed5i k\u00edch th\u01b0\u1edbc",
"Orientation": "\u0110\u1ecbnh h\u01b0\u1edbng",
"Brightness": "\u0110\u1ed9 s\u00e1ng",
"Sharpen": "\u0110\u1ed9 s\u1eafc n\u00e9t",
"Contrast": "\u0110\u1ed9 t\u01b0\u01a1ng ph\u1ea3n",
"Color levels": "M\u1ee9c \u0111\u1ed9 m\u00e0u s\u1eafc",
"Gamma": "M\u00e0u Gamma",
"Invert": "\u0110\u1ea3o ng\u01b0\u1ee3c",
"Apply": "\u00c1p d\u1ee5ng",
"Back": "Tr\u1edf l\u1ea1i",
"Insert date\/time": "Th\u00eam ng\u00e0y \/ gi\u1edd",
"Date\/time": "Ng\u00e0y\/gi\u1edd",
"Insert link": "Th\u00eam li\u00ean k\u1ebft",
"Insert\/edit link": "Th\u00eam \/ s\u1eeda li\u00ean k\u1ebft",
"Text to display": "Ch\u1eef hi\u1ec3n th\u1ecb",
"Url": "Li\u00ean k\u1ebft",
"Target": "M\u1ee5c ti\u00eau",
"None": "Kh\u00f4ng",
"New window": "C\u1eeda s\u1ed5 m\u1edbi",
"Remove link": "Xo\u00e1 li\u00ean k\u1ebft",
"Anchors": "Ghim",
"Link": "Li\u00ean k\u1ebft",
"Paste or type a link": "D\u00e1n ho\u1eb7c nh\u1eadp li\u00ean k\u1ebft",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL b\u1ea1n nh\u1eadp v\u00e0o c\u00f3 v\u1ebb l\u00e0 m\u1ed9t \u0111\u1ecba ch\u1ec9 email. B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam c\u00e1c y\u00eau c\u1ea7u mailto: ti\u1ec1n t\u1ed1?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL b\u1ea1n nh\u1eadp v\u00e0o c\u00f3 v\u1ebb l\u00e0 m\u1ed9t li\u00ean k\u1ebft b\u00ean ngo\u00e0i. B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 http:\/\/ c\u1ea7n thi\u1ebft?",
"Link list": "Danh s\u00e1ch li\u00ean k\u1ebft",
"Insert video": "Th\u00eam video",
"Insert\/edit video": "Th\u00eam \/ s\u1eeda video",
"Insert\/edit media": "Ch\u00e8n\/ch\u1ec9nh s\u1eeda ph\u01b0\u01a1ng ti\u1ec7n truy\u1ec1n th\u00f4ng",
"Alternative source": "Ngu\u1ed3n thay th\u1ebf",
"Poster": "Ng\u01b0\u1eddi \u0111\u0103ng",
"Paste your embed code below:": "D\u00e1n m\u00e3 embed v\u00e0o:",
"Embed": "Embed",
"Media": "Ph\u01b0\u01a1ng ti\u1ec7n truy\u1ec1n th\u00f4ng",
"Nonbreaking space": "Kh\u00f4ng ng\u1eaft kho\u1ea3ng",
"Page break": "Ng\u1eaft trang",
"Paste as text": "D\u00e1n nh\u01b0 v\u0103n b\u1ea3n",
"Preview": "Xem tr\u01b0\u1edbc",
"Print": "In",
"Save": "L\u01b0u",
"Find": "T\u00ecm",
"Replace with": "Thay th\u1ebf b\u1eb1ng",
"Replace": "Thay th\u1ebf",
"Replace all": "Thay th\u1ebf t\u1ea5t c\u1ea3",
"Prev": "Tr\u01b0\u1edbc",
"Next": "Sau",
"Find and replace": "T\u00ecm v\u00e0 thay th\u1ebf",
"Could not find the specified string.": "Kh\u00f4ng t\u00ecm th\u1ea5y chu\u1ed7i y\u00eau c\u1ea7u",
"Match case": "Ph\u00e2n bi\u1ec7t hoa th\u01b0\u1eddng",
"Whole words": "T\u1ea5t c\u1ea3 \u0111o\u1ea1n",
"Spellcheck": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
"Ignore": "L\u1edd qua",
"Ignore all": "L\u1edd t\u1ea5t c\u1ea3",
"Finish": "Ho\u00e0n t\u1ea5t",
"Add to Dictionary": "Th\u00eam v\u00e0o t\u1eeb \u0111i\u1ec3n",
"Insert table": "Th\u00eam b\u1ea3ng",
"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
"Delete table": "Xo\u00e1 b\u1ea3ng",
"Cell": "\u00d4",
"Row": "D\u00f2ng",
"Column": "C\u1ed9t",
"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
"Merge cells": "N\u1ed1i \u00f4",
"Split cell": "Chia \u00f4",
"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda tr\u00ean",
"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda d\u01b0\u1edbi",
"Delete row": "Xo\u00e1 d\u00f2ng",
"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
"Cut row": "C\u1eaft d\u00f2ng",
"Copy row": "Ch\u00e9p d\u00f2ng",
"Paste row before": "D\u00e1n v\u00e0o ph\u00eda tr\u01b0\u1edbc, tr\u00ean",
"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau, d\u01b0\u1edbi",
"Insert column before": "Th\u00eam c\u1ed9t b\u00ean tr\u00e1i",
"Insert column after": "Th\u00eam c\u1ed9t b\u00ean ph\u1ea3i",
"Delete column": "Xo\u00e1 c\u1ed9t",
"Cols": "C\u1ed9t",
"Rows": "D\u00f2ng",
"Width": "R\u1ed9ng",
"Height": "Cao",
"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
"Caption": "Ti\u00eau \u0111\u1ec1",
"Left": "Tr\u00e1i",
"Center": "Gi\u1eefa",
"Right": "Ph\u1ea3i",
"Cell type": "Lo\u1ea1i \u00f4",
"Scope": "Quy\u1ec1n",
"Alignment": "Canh ch\u1ec9nh",
"H Align": "X\u1ebfp ngang",
"V Align": "X\u1ebfp d\u1ecdc",
"Top": "\u0110\u1ec9nh",
"Middle": "Gi\u1eefa",
"Bottom": "\u0110\u00e1y",
"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
"Row group": "Nh\u00f3m d\u00f2ng",
"Column group": "Nh\u00f3m c\u1ed9t",
"Row type": "Lo\u1ea1i d\u00f2ng",
"Header": "Ti\u00eau \u0111\u1ec1",
"Body": "N\u1ed9i dung",
"Footer": "Ch\u00e2n",
"Border color": "M\u00e0u vi\u1ec1n",
"Insert template": "Th\u00eam m\u1eabu",
"Templates": "M\u1eabu",
"Template": "B\u1ea3n m\u1eabu",
"Text color": "M\u00e0u ch\u1eef",
"Background color": "M\u00e0u n\u1ec1n",
"Custom...": "T\u00f9y ch\u1ecdn...",
"Custom color": "M\u00e0u t\u00f9y ch\u1ecdn",
"No color": "Kh\u00f4ng m\u00e0u",
"Table of Contents": "M\u1ee5c l\u1ee5c",
"Show blocks": "Hi\u1ec3n th\u1ecb kh\u1ed1i",
"Show invisible characters": "Hi\u1ec3n th\u1ecb c\u00e1c k\u00fd t\u1ef1 \u1ea9n",
"Words: {0}": "T\u1eeb: {0}",
"{0} words": "{0} t\u1eeb",
"File": "T\u1eadp tin",
"Edit": "S\u1eeda",
"Insert": "Th\u00eam",
"View": "Xem",
"Format": "\u0110\u1ecbnh d\u1ea1ng",
"Table": "B\u1ea3ng",
"Tools": "C\u00f4ng c\u1ee5",
"Powered by {0}": "\u0110\u01b0\u1ee3c cung c\u1ea5p b\u1edfi {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Khu v\u1ef1c so\u1ea1n th\u1ea3o. Nh\u1ea5n ALT-F9 \u0111\u1ec3 hi\u1ec7n menu, ALT-F10 \u0111\u1ec3 hi\u1ec7n thanh c\u00f4ng c\u1ee5. C\u1ea7n tr\u1ee3 gi\u00fap nh\u1ea5n ALT-0"
});js/tinymce/langs/is_IS.js000064400000040255151727150420011312 0ustar00tinymce.addI18n('is_IS',{
"Redo": "Endurkalla",
"Undo": "Afturkalla",
"Cut": "Skera",
"Copy": "Afrita",
"Paste": "L\u00edma",
"Select all": "Velja allt",
"New document": "N\u00fdtt skjal",
"Ok": "Sta\u00f0festa",
"Cancel": "H\u00e6tta vi\u00f0",
"Visual aids": "Sj\u00f3nr\u00e6n hj\u00e1lp",
"Bold": "Feitletra\u00f0",
"Italic": "Skr\u00e1letra\u00f0",
"Underline": "Undirstrika\u00f0",
"Strikethrough": "Yfirstrika\u00f0",
"Superscript": "Uppskrift",
"Subscript": "Ni\u00f0urskrifa\u00f0",
"Clear formatting": "Hreinsa sni\u00f0",
"Align left": "Vinstrijafna",
"Align center": "Mi\u00f0jujafna",
"Align right": "H\u00e6grijafna",
"Justify": "Jafna",
"Bullet list": "K\u00falu listi",
"Numbered list": "N\u00famera\u00f0ur listi",
"Decrease indent": "Minnka inndr\u00e1tt",
"Increase indent": "Auka inndr\u00e1tt",
"Close": "Loka",
"Formats": "Sni\u00f0m\u00e1t",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Vafrinn \u00feinn sty\u00f0ur ekki beinann a\u00f0gang a\u00f0 klippibor\u00f0inu.  Nota\u00f0u Ctrl-X\/C\/V \u00e1 lyklabor\u00f0inu \u00ed sta\u00f0inn.",
"Headers": "Fyrirsagnir",
"Header 1": "Fyrirs\u00f6gn 1",
"Header 2": "Fyrirs\u00f6gn 2",
"Header 3": "Fyrirs\u00f6gn 3",
"Header 4": "Fyrirs\u00f6gn 4",
"Header 5": "Fyrirs\u00f6gn 5",
"Header 6": "Fyrirs\u00f6gn 6",
"Headings": "Fyrirsagnir",
"Heading 1": "Fyrirs\u00f6gn 1",
"Heading 2": "Fyrirs\u00f6gn 2",
"Heading 3": "Fyrirs\u00f6gn 3",
"Heading 4": "Fyrirs\u00f6gn 4",
"Heading 5": "Fyrirs\u00f6gn 5",
"Heading 6": "Fyrirs\u00f6gn 6",
"Preformatted": "Preformatted",
"Div": "Div",
"Pre": "\u00d3st\u00edla\u00f0",
"Code": "K\u00f3\u00f0i",
"Paragraph": "M\u00e1lsgrein",
"Blockquote": "Blokk",
"Inline": "Inndregi\u00f0",
"Blocks": "Blokkir",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "L\u00edming er \u00ed l\u00e1tlausum ham.  Innihald ver\u00f0ur l\u00edmt sem l\u00e1tlaus texti \u00feanga\u00f0 til \u00fe\u00fa afvirkjar \u00feennan m\u00f6guleika.",
"Fonts": "Leturger\u00f0ir",
"Font Sizes": "Leturst\u00e6r\u00f0",
"Class": "Tegund",
"Browse for an image": "Finna mynd \u00ed t\u00f6lvunni",
"OR": "E\u00d0A",
"Drop an image here": "Settu inn mynd h\u00e9r",
"Upload": "Hla\u00f0a upp",
"Block": "Blokka",
"Align": "Stilla",
"Default": "Sj\u00e1lfgefi\u00f0",
"Circle": "Hringur",
"Disc": "Diskur",
"Square": "Ferningur",
"Lower Alpha": "L\u00e1gstafir Alpha",
"Lower Greek": "L\u00e1gstafir Gr\u00edskir",
"Lower Roman": "L\u00e1gstafir R\u00f3mverskir",
"Upper Alpha": "H\u00e1stafir Alpha",
"Upper Roman": "H\u00e1stafir R\u00f3mverskir",
"Anchor...": "Anchor...",
"Name": "Nafn",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id \u00e6tti a\u00f0 byrja \u00e1 b\u00f3kstaf, og skal einungis innihalda b\u00f3kstafi, t\u00f6lustafi, bandstrik, punkta, kommur e\u00f0a strik ni\u00f0ri.",
"You have unsaved changes are you sure you want to navigate away?": "\u00dea\u00f0 eru \u00f3vista\u00f0ar breytingar, ertu viss um a\u00f0 \u00fe\u00fa viljir vafra \u00ed burtu?",
"Restore last draft": "Endurkalla s\u00ed\u00f0asta uppkast",
"Special character...": "S\u00e9rstakur stafur...",
"Source code": "Frumk\u00f3\u00f0i",
"Insert\/Edit code sample": "Setja inn\/breyta k\u00f3\u00f0ad\u00e6mi",
"Language": "Tungum\u00e1l",
"Code sample...": "K\u00f3\u00f0ad\u00e6mi...",
"Color Picker": "Litaval",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "Vinstri til h\u00e6gri",
"Right to left": "H\u00e6gri til vinstri",
"Emoticons...": "Tilfinningat\u00e1kn...",
"Metadata and Document Properties": "Metadata- og skjaleiginleikar",
"Title": "Titill",
"Keywords": "Lykilor\u00f0",
"Description": "L\u00fdsing",
"Robots": "Leitarv\u00e9lar",
"Author": "H\u00f6fundur",
"Encoding": "Umbreyting",
"Fullscreen": "Fylla skj\u00e1",
"Action": "A\u00f0ger\u00f0",
"Shortcut": "Fl\u00fdtilei\u00f0",
"Help": "Hj\u00e1lp",
"Address": "Address",
"Focus to menubar": "F\u00f3kus \u00e1 menubar",
"Focus to toolbar": "F\u00f3kus \u00e1 t\u00e6kjastiku",
"Focus to element path": "F\u00f3kus \u00e1 element path",
"Focus to contextual toolbar": "F\u00f3kus \u00e1 contextual toolbar",
"Insert link (if link plugin activated)": "Setja inn hlekk (ef link vi\u00f0b\u00f3t er virk)",
"Save (if save plugin activated)": "Vista (ef vistunar vi\u00f0b\u00f3t er virk)",
"Find (if searchreplace plugin activated)": "Leita (ef searchreplace vi\u00f0b\u00f3t er virk)",
"Plugins installed ({0}):": "Uppsettar vi\u00f0b\u00f3tir ({0}):",
"Premium plugins:": "Premium vi\u00f0b\u00e6tur:",
"Learn more...": "Sj\u00e1 meira...",
"You are using {0}": "\u00de\u00fa ert a\u00f0 nota {0}",
"Plugins": "Vi\u00f0b\u00e6tur",
"Handy Shortcuts": "Sni\u00f0ugar fl\u00fdtilei\u00f0ir",
"Horizontal line": "L\u00e1r\u00e9tt l\u00edna",
"Insert\/edit image": "Setja inn\/breyta mynd",
"Image description": "L\u00fdsing myndar",
"Source": "Sl\u00f3\u00f0i",
"Dimensions": "Hlutf\u00f6ll",
"Constrain proportions": "Halda hlutf\u00f6llum",
"General": "Almennt",
"Advanced": "\u00cdtarlegt",
"Style": "St\u00edll",
"Vertical space": "L\u00f3\u00f0r\u00e9tt bil",
"Horizontal space": "L\u00e1r\u00e9tt bil",
"Border": "Rammi",
"Insert image": "Setja inn mynd",
"Image...": "Mynd...",
"Image list": "Myndalisti",
"Rotate counterclockwise": "Sn\u00faa rangs\u00e6lis",
"Rotate clockwise": "Sn\u00faa r\u00e9tts\u00e6lis",
"Flip vertically": "Sn\u00faa l\u00f3\u00f0r\u00e9tt",
"Flip horizontally": "Sn\u00faa l\u00f3\u00f0r\u00e9tt",
"Edit image": "Breyta mynd",
"Image options": "Valm\u00f6guleikar myndar",
"Zoom in": "\u00deysja inn",
"Zoom out": "\u00deysja \u00fat",
"Crop": "Crop",
"Resize": "Breyta st\u00e6r\u00f0",
"Orientation": "Orientation",
"Brightness": "Birtustig",
"Sharpen": "Skerpa",
"Contrast": "Contrast",
"Color levels": "Litastu\u00f0lar",
"Gamma": "Gamma",
"Invert": "Invert",
"Apply": "Sta\u00f0festa",
"Back": "Til baka",
"Insert date\/time": "Setja inn dagsetningu\/t\u00edma",
"Date\/time": "Dagur\/t\u00edmi",
"Insert\/Edit Link": "Setja inn\/Breyta hlekk",
"Insert\/edit link": "Setja inn\/breyta hlekk",
"Text to display": "Texti til a\u00f0 s\u00fdna",
"Url": "Veffang",
"Open link in...": "Opna hlekk \u00ed...",
"Current window": "N\u00faverandi gluggi",
"None": "Ekkert",
"New window": "N\u00fdr gluggi",
"Remove link": "Fjarl\u00e6gja hlekk",
"Anchors": "Akkeri",
"Link...": "Hlekkur...",
"Paste or type a link": "L\u00edma e\u00f0a sl\u00e1 inn hlekk",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Hlekkurinn sem \u00fe\u00fa rita\u00f0ir inn l\u00fdtur \u00fat fyrir a\u00f0 vera netfang. Viltu b\u00e6ta vi\u00f0 forskeytinu mailto: ?",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Hlekkurinn sem \u00fe\u00fa rita\u00f0ir inn l\u00fdtur \u00fat fyrir a\u00f0 vera ytri hlekkur. Viltu b\u00e6ta vi\u00f0 forskeytinu http:\/\/ ?",
"Link list": "Listi hlekkja",
"Insert video": "Setja inn myndband",
"Insert\/edit video": "Setja inn\/fjarl\u00e6gja myndband",
"Insert\/edit media": "Setja inn\/breyta myndefni",
"Alternative source": "Valkv\u00e6\u00f0ur frumk\u00f3\u00f0i",
"Alternative source URL": "Alternative source URL",
"Media poster (Image URL)": "Media poster (mynd URL)",
"Paste your embed code below:": "L\u00edma frumk\u00f3\u00f0a fyrir ne\u00f0an:",
"Embed": "Hengja vi\u00f0",
"Media...": "Media...",
"Nonbreaking space": "Bil sem brotnar ekki",
"Page break": "S\u00ed\u00f0ubrot",
"Paste as text": "L\u00edma sem texta",
"Preview": "Forsko\u00f0un",
"Print...": "Prenta...",
"Save": "Vista",
"Find": "Finna",
"Replace with": "Skipta \u00fat me\u00f0",
"Replace": "Skipta \u00fat",
"Replace all": "Skipta \u00f6llum \u00fat",
"Previous": "Fyrri",
"Next": "N\u00e6sti",
"Find and replace...": "Find and replace...",
"Could not find the specified string.": "Fann ekki umbe\u00f0inn streng.",
"Match case": "Samanbur\u00f0ur",
"Find whole words only": "Finna einungis heil or\u00f0",
"Spell check": "Stafsetning",
"Ignore": "Hunsa",
"Ignore all": "Hunsa allt",
"Finish": "Lj\u00faka",
"Add to Dictionary": "B\u00e6ta vi\u00f0 or\u00f0ab\u00f3k",
"Insert table": "Setja inn t\u00f6flu",
"Table properties": "Stillingar t\u00f6flu",
"Delete table": "Ey\u00f0a t\u00f6flu",
"Cell": "Reitur",
"Row": "R\u00f6\u00f0",
"Column": "D\u00e1lkur",
"Cell properties": "Stillingar reits",
"Merge cells": "Sameina reiti",
"Split cell": "Deila reiti",
"Insert row before": "Setja inn r\u00f6\u00f0 fyrir framan",
"Insert row after": "Setja inn r\u00f6\u00f0 fyrir aftan",
"Delete row": "Ey\u00f0a r\u00f6\u00f0",
"Row properties": "Stillingar ra\u00f0ar",
"Cut row": "Klippa r\u00f6\u00f0",
"Copy row": "Afrita r\u00f6\u00f0",
"Paste row before": "L\u00edma r\u00f6\u00f0 fyrir framan",
"Paste row after": "L\u00edma r\u00f6\u00f0 fyrir aftan",
"Insert column before": "Setja inn d\u00e1lk fyrir framan",
"Insert column after": "Setja inn d\u00e1lk fyrir aftan",
"Delete column": "Ey\u00f0a d\u00e1lki",
"Cols": "D\u00e1lkar",
"Rows": "Ra\u00f0ir",
"Width": "Breidd",
"Height": "H\u00e6\u00f0",
"Cell spacing": "Bil \u00ed reit",
"Cell padding": "R\u00fdmi reits",
"Show caption": "S\u00fdna myndatexta",
"Left": "Vinstri",
"Center": "Mi\u00f0ja",
"Right": "H\u00e6gri",
"Cell type": "Tegund reits",
"Scope": "Gildissvi\u00f0",
"Alignment": "J\u00f6fnun",
"H Align": "L\u00e1r\u00e9tt j\u00f6fnun",
"V Align": "L\u00f3\u00f0r\u00e9tt j\u00f6fnun",
"Top": "Efst",
"Middle": "Mi\u00f0ja",
"Bottom": "Ne\u00f0st",
"Header cell": "Reitarhaus",
"Row group": "H\u00f3pur ra\u00f0ar",
"Column group": "H\u00f3pur d\u00e1lks",
"Row type": "Tegund ra\u00f0ar",
"Header": "Fyrirs\u00f6gn",
"Body": "Innihald",
"Footer": "Ne\u00f0anm\u00e1l",
"Border color": "Litur \u00e1 ramma",
"Insert template...": "Setja inn sni\u00f0m\u00e1t...",
"Templates": "Sni\u00f0m\u00e1t",
"Template": "Sni\u00f0m\u00e1t",
"Text color": "Litur texta",
"Background color": "Bakgrunnslitur",
"Custom...": "S\u00e9rsni\u00f0i\u00f0...",
"Custom color": "S\u00e9rsni\u00f0in litur",
"No color": "Enginn litur",
"Remove color": "Fjarl\u00e6gja lit",
"Table of Contents": "Efnisyfirlit",
"Show blocks": "S\u00fdna kubba",
"Show invisible characters": "S\u00fdna \u00f3s\u00fdnilega stafi",
"Word count": "Or\u00f0afj\u00f6ldi",
"Count": "Fj\u00f6ldi",
"Document": "Skjal",
"Selection": "Val",
"Words": "Or\u00f0",
"Words: {0}": "Or\u00f0:  {0}",
"{0} words": "{0} or\u00f0",
"File": "Skjal",
"Edit": "Breyta",
"Insert": "Setja inn",
"View": "Sko\u00f0a",
"Format": "Sni\u00f0",
"Table": "Tafla",
"Tools": "T\u00f3l",
"Powered by {0}": "Keyrt af {0}",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textasv\u00e6\u00f0i \u00ed \u00edtarham.  \u00ddttu \u00e1 ALT-F9 fyrir valmynd.  \u00ddttu \u00e1 ALT-F10 fyrir t\u00f3lastiku.  \u00ddttu \u00e1 ALT-0 fyrir a\u00f0sto\u00f0.",
"Image title": "Titill myndar",
"Border width": "Border width",
"Border style": "Border style",
"Error": "Villa",
"Warn": "A\u00f0vara",
"Valid": "Gilt",
"To open the popup, press Shift+Enter": "\u00ddttu \u00e1 Shift+Enter til a\u00f0 opna sprettiglugga",
"Rich Text Area. Press ALT-0 for help.": "Rich Text sv\u00e6\u00f0i. Smelltu \u00e1 Alt-0 fyrir hj\u00e1lp",
"System Font": "Kerfis leturger\u00f0",
"Failed to upload image: {0}": "Gat ekki hala\u00f0 upp mynd: {0}",
"Failed to load plugin: {0} from url {1}": "Gat ekki hla\u00f0i\u00f0 vi\u00f0b\u00f3t: {0} fr\u00e1 urli {1}",
"Failed to load plugin url: {0}": "Gat ekki hla\u00f0i\u00f0 vi\u00f0b\u00f3t url: {0}",
"Failed to initialize plugin: {0}": "Val",
"example": "d\u00e6mi",
"Search": "Leita",
"All": "Allt",
"Currency": "Gjaldmi\u00f0ill",
"Text": "Texti",
"Quotations": "Tilvitnanir",
"Mathematical": "St\u00e6r\u00f0fr\u00e6\u00f0i",
"Extended Latin": "Extended Latin",
"Symbols": "T\u00e1kn",
"Arrows": "\u00d6rvar",
"User Defined": "Stillt af notanda",
"dollar sign": "dollar t\u00e1kn",
"currency sign": "gjaldmi\u00f0ils t\u00e1kn",
"euro-currency sign": "evru-gjaldmi\u00f0ils t\u00e1kn",
"colon sign": "kommu t\u00e1kn",
"cruzeiro sign": "cruzeiro t\u00e1kn",
"french franc sign": "franskur franki t\u00e1kn",
"lira sign": "lira t\u00e1kn",
"mill sign": "mill t\u00e1kn",
"naira sign": "naira t\u00e1kn",
"peseta sign": "peseta t\u00e1kn",
"rupee sign": "rupee t\u00e1kn",
"won sign": "won t\u00e1kn",
"new sheqel sign": "new sheqel t\u00e1kn",
"dong sign": "dong t\u00e1kn",
"kip sign": "kip t\u00e1kn",
"tugrik sign": "tugrik t\u00e1kn",
"drachma sign": "drachma t\u00e1kn",
"german penny symbol": "german penny t\u00e1kn",
"peso sign": "peso t\u00e1kn",
"guarani sign": "guarani t\u00e1kn",
"austral sign": "austral t\u00e1kn",
"hryvnia sign": "hryvnia t\u00e1kn",
"cedi sign": "cedi t\u00e1kn",
"livre tournois sign": "livre tournois t\u00e1kn",
"spesmilo sign": "spesmilo t\u00e1kn",
"tenge sign": "tenge t\u00e1kn",
"indian rupee sign": "indverskt rupee t\u00e1kn",
"turkish lira sign": "tyrknesk l\u00edra t\u00e1kn",
"nordic mark sign": "nordic mark t\u00e1kn",
"manat sign": "manat t\u00e1kn",
"ruble sign": "ruble t\u00e1kn",
"yen character": "yen stafur",
"yuan character": "yuan stafur",
"yuan character, in hong kong and taiwan": "yuan stafur, \u00ed Hong Kong og Ta\u00edvan",
"yen\/yuan character variant one": "yen\/yuan t\u00e1kn afbrig\u00f0i eitt",
"Loading emoticons...": "Hle\u00f0 tilfinningat\u00e1kn...",
"Could not load emoticons": "Gat ekki hla\u00f0i\u00f0 tilfinningat\u00e1kn",
"People": "F\u00f3lk",
"Animals and Nature": "D\u00fdr og n\u00e1tt\u00fara",
"Food and Drink": "Matur og drykkur",
"Activity": "Virkni",
"Travel and Places": "Fer\u00f0al\u00f6g og sta\u00f0ir",
"Objects": "Hlutir",
"Flags": "F\u00e1nar",
"Characters": "Stafabil",
"Characters (no spaces)": "Stafabil (engin bil)",
"{0} characters": "{0} stafabil",
"Error: Form submit field collision.": "Villa: Form submit field collision.",
"Error: No form element found.": "Villa: Ekkert form element fannst.",
"Update": "Uppf\u00e6ra",
"Color swatch": "Litaval",
"Turquoise": "Gr\u00e6nbl\u00e1r",
"Green": "Gr\u00e6nn",
"Blue": "Bl\u00e1r",
"Purple": "Fj\u00f3lubl\u00e1r",
"Navy Blue": "D\u00f6kkbl\u00e1r",
"Dark Turquoise": "D\u00f6kk gr\u00e6nbl\u00e1r",
"Dark Green": "D\u00f6kkgr\u00e6nn",
"Medium Blue": "Mi\u00f0lungs bl\u00e1r",
"Medium Purple": "Mi\u00f0lungs fj\u00f3lubl\u00e1r",
"Midnight Blue": "N\u00e6turbl\u00e1r",
"Yellow": "Gulur",
"Orange": "Appels\u00ednugulur",
"Red": "Rau\u00f0ur",
"Light Gray": "Lj\u00f3sgr\u00e1r",
"Gray": "Gr\u00e1r",
"Dark Yellow": "D\u00f6kkgulur",
"Dark Orange": "D\u00f6kk appels\u00ednugulur",
"Dark Red": "D\u00f6kkrau\u00f0ur",
"Medium Gray": "Mi\u00f0lungs gr\u00e1r",
"Dark Gray": "D\u00f6kkgr\u00e1r",
"Light Green": "Lj\u00f3sgr\u00e6nn",
"Light Yellow": "Lj\u00f3sgulur",
"Light Red": "Lj\u00f3srau\u00f0ur",
"Light Purple": "Lj\u00f3s fj\u00f3lubl\u00e1r",
"Light Blue": "Lj\u00f3sbl\u00e1r",
"Dark Purple": "D\u00f6kk fj\u00f3lubl\u00e1r",
"Dark Blue": "D\u00f6kkbl\u00e1r",
"Black": "Svartur",
"White": "Hv\u00edtur",
"Switch to or from fullscreen mode": "Skipta \u00ed e\u00f0a \u00far fullum skj\u00e1",
"Open help dialog": "Opna hj\u00e1lparkassa",
"history": "saga",
"styles": "st\u00edlar",
"formatting": "formatting",
"alignment": "textastilling",
"indentation": "inndr\u00e1ttur",
"permanent pen": "varanlegur penni",
"comments": "umm\u00e6li",
"Format Painter": "Format Painter",
"Insert\/edit iframe": "Setja inn\/breyta iframe",
"Capitalization": "H\u00e1stafir",
"lowercase": "l\u00e1gstafir",
"UPPERCASE": "H\u00c1STAFIR",
"Title Case": "Title Case",
"Permanent Pen Properties": "Varanlegur penni stillingar",
"Permanent pen properties...": "Varanlegur penni stillingar...",
"Font": "Leturger\u00f0",
"Size": "St\u00e6r\u00f0",
"More...": "Meira...",
"Spellcheck Language": "Stafsetning tungum\u00e1ls",
"Select...": "Velja...",
"Preferences": "Stillingar",
"Yes": "J\u00e1",
"No": "Nei",
"Keyboard Navigation": "Lyklabor\u00f0 Navigation",
"Version": "\u00datg\u00e1fa",
"Anchor": "Akkeri",
"Special character": "S\u00e9rstakir stafir",
"Color": "Litur",
"Emoticons": "Tilfinningar",
"Document properties": "Eigindi skjals",
"Insert link": "Setja inn hlekk",
"Target": "Mi\u00f0",
"Poster": "Plakat",
"Print": "Prenta",
"Whole words": "Heil or\u00f0",
"Find and replace": "Finna og skipta \u00fat",
"Prev": "Fyrri",
"Spellcheck": "Villuleit",
"Caption": "Titill",
"Insert template": "Setja inn sni\u00f0m\u00e1t"
});js/tinymce/tinymce.min.js000064400001377731151727150430011450 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function r(e){if(null===e)return"null";if(void 0===e)return"undefined";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}function f(o){return m(function(e,t){if(e.length!==t.length)return!1;for(var n=e.length,r=0;r<n;r++)if(!o.eq(e[r],t[r]))return!1;return!0})}function d(l){return m(function(e,t){var n,r,o,i=Object.keys(e),a=Object.keys(t);if(r=f(g),o=function(e){return t=n,Array.prototype.slice.call(e).sort(t);var t},!m(function(e,t){return r.eq(o(e),o(t))}).eq(i,a))return!1;for(var u=i.length,s=0;s<u;s++){var c=i[s];if(!l.eq(e[c],t[c]))return!1}return!0})}function e(r){return function(e){return n=typeof(t=e),(null===t?"null":"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n)===r;var t,n}}function t(t){return function(e){return typeof e===t}}function n(t){return function(e){return t===e}}function K(e){return null==e}function V(e){return!K(e)}function te(){}function i(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}}function a(t,n){return function(e){return t(n(e))}}function J(e){return function(){return e}}function u(e){return e}function o(e,t){return e===t}var m=function(e){return{eq:e}},g=m(function(e,t){return e===t}),p=m(function(e,t){if(e===t)return!0;var n=r(e);return n===r(t)&&(-1!==["undefined","boolean","number","string","function","xml","null"].indexOf(n)?e===t:"array"===n?f(p).eq(e,t):"object"===n&&d(p).eq(e,t))}),X=e("string"),h=e("object"),S=e("array"),l=n(null),v=t("boolean"),b=n(void 0),y=t("function"),N=t("number");function R(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}function s(t){return function(e){return!t(e)}}function C(e){return e()}function x(e){e()}function c(){return E}var D=J(!1),w=J(!0),E={fold:function(e,t){return e()},isSome:D,isNone:w,getOr:u,getOrThunk:k,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:J(null),getOrUndefined:J(void 0),or:u,orThunk:k,map:c,each:te,bind:c,exists:D,forall:w,filter:function(){return E},toArray:function(){return[]},toString:J("none()")};function k(e){return e()}function _(e,t){return ye.call(e,t)}function T(e,t){return-1<_(e,t)}function F(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1}function A(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r}function Y(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)}function O(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}function B(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}}function U(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function P(e,n,r){return O(e,function(e,t){r=n(r,e,t)}),r}function L(e,n,r){return Y(e,function(e,t){r=n(r,e,t)}),r}function I(e,t,n){for(var r=0,o=e.length;r<o;r++){var i=e[r];if(t(i,r))return ve.some(i);if(n(i,r))break}return ve.none()}function M(e,t){return I(e,t,D)}function z(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return ve.some(n);return ve.none()}function H(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!S(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);Ce.apply(t,e[n])}return t}(A(e,t))}function j(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0}function q(e){var t=be.call(e,0);return t.reverse(),t}function $(e,t){return U(e,function(e){return!T(t,e)})}function W(e,t){var n=be.call(e,0);return n.sort(t),n}function G(e,t){return 0<=t&&t<e.length?ve.some(e[t]):ve.none()}function Q(e){return G(e,0)}function Z(e){return G(e,e.length-1)}function ee(e,t){for(var n=0;n<e.length;n++){var r=t(e[n],n);if(r.isSome())return r}return ve.none()}function ne(e,t){for(var n=we(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function re(e,n){return Ne(e,function(e,t){return{k:t,v:n(e,t)}})}function oe(n){return function(e,t){n[t]=e}}function ie(e,n,r,o){return ne(e,function(e,t){(n(e,t)?r:o)(e,t)}),1}function ae(e,t){var n={};return ie(e,t,oe(n),te),n}function ue(e,t){return Ee(e,t)?ve.from(e[t]):ve.none()}function se(e,t){return Ee(e,t)&&void 0!==e[t]&&null!==e[t]}function ce(e,t,n){var r,o;if(!e)return!1;if(n=n||e,void 0!==e.length){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return!1}else for(r in e)if(Ee(e,r)&&!1===t.call(n,e[r],r,e))return!1;return!0}function le(n,r){var o=[];return ce(n,function(e,t){o.push(r(e,t,n))}),o}function fe(n,r){var o=[];return ce(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o}function de(e,t){if(e)for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}function me(e,t,n,r){for(var o=b(n)?e[0]:n,i=0;i<e.length;i++)o=t.call(r,o,e[i],i);return o}function ge(e,t,n){for(var r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1}function pe(e){return e[e.length-1]}var he=function(n){function e(){return o}function t(e){return e(n)}var r=J(n),o={fold:function(e,t){return t(n)},isSome:w,isNone:D,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return he(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:E},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},ve={some:he,none:c,from:function(e){return null==e?E:he(e)}},be=Array.prototype.slice,ye=Array.prototype.indexOf,Ce=Array.prototype.push,xe=y(Array.from)?Array.from:function(e){return be.call(e)},we=Object.keys,Se=Object.hasOwnProperty,Ne=function(e,r){var o={};return ne(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},Ee=function(e,t){return Se.call(e,t)},ke=Array.isArray,_e=function(){return(_e=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function Ae(e,t,n){if(n||2===arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||((r=r||Array.prototype.slice.call(t,0,o))[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}function Re(n){var r,o=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o||(o=!0,r=n.apply(null,e)),r}}function De(e,t){var n=String(t).toLowerCase();return M(e,function(e){return e.search(n)})}function Te(e,t){return-1!==e.indexOf(t)}function Oe(t){return function(e){return e.replace(t,"")}}function Be(e){return 0<e.length}function Pe(e){return!Be(e)}function Le(t){return function(e){return Te(e,t)}}function Ie(e){return window.matchMedia(e).matches}function Me(e){return null==e?"":(""+e).replace(wt,"")}function Fe(e,t){return t?!("array"!==t||!ke(e))||typeof e===t:void 0!==e}function Ue(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n}function ze(e,t){var n=e.dom;if(1!==n.nodeType)return!1;var r=n;if(void 0!==r.matches)return r.matches(t);if(void 0!==r.msMatchesSelector)return r.msMatchesSelector(t);if(void 0!==r.webkitMatchesSelector)return r.webkitMatchesSelector(t);if(void 0!==r.mozMatchesSelector)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function He(e){return 1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount}function je(e,t){return e.dom===t.dom}function Ve(e,t){return dt().browser.isIE()?(n=e.dom,r=t.dom,o=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(n.compareDocumentPosition(r)&o)):(i=e.dom)!==(a=t.dom)&&i.contains(a);var n,r,o,i,a}function qe(){return Xe(0,0)}function $e(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isEdge:t("Edge"),isChrome:t("Chrome"),isIE:t("IE"),isOpera:t("Opera"),isFirefox:t(nt),isSafari:t("Safari")}}function We(e){function t(e){return function(){return n===e}}var n=e.current,r=e.version;return{current:n,version:r,isWindows:t(it),isiOS:t("iOS"),isAndroid:t(at),isOSX:t("OSX"),isLinux:t("Linux"),isSolaris:t(ut),isFreeBSD:t(st),isChromeOS:t(ct)}}function Ke(e){if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}}var Xe=function(e,t){return{major:e,minor:t}},Ye={nu:Xe,detect:function(e,t){var n,r,o=String(t).toLowerCase();return 0===e.length?qe():(r=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}}(e,n=o))?Xe(i(1),i(2)):{major:0,minor:0};function i(e){return Number(n.replace(r,"$"+e))}},unknown:qe},Ge=function(e,t){return""===(n=t)||e.length>=n.length&&e.substr(0,0+n.length)===n;var n},Je=Oe(/^\s+|\s+$/g),Qe=Oe(/^\s+/g),Ze=Oe(/\s+$/g),et=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,tt={browsers:J([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Te(e,"edge/")&&Te(e,"chrome")&&Te(e,"safari")&&Te(e,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,et],search:function(e){return Te(e,"chrome")&&!Te(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Te(e,"msie")||Te(e,"trident")}},{name:"Opera",versionRegexes:[et,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Le("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Le("firefox")},{name:"Safari",versionRegexes:[et,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Te(e,"safari")||Te(e,"mobile/"))&&Te(e,"applewebkit")}}]),oses:J([{name:"Windows",search:Le("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Te(e,"iphone")||Te(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Le("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Le("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Le("linux"),versionRegexes:[]},{name:"Solaris",search:Le("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Le("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:Le("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},nt="Firefox",rt=function(){return $e({current:void 0,version:Ye.unknown()})},ot=$e,it=(J("Edge"),J("Chrome"),J("IE"),J("Opera"),J(nt),J("Safari"),"Windows"),at="Android",ut="Solaris",st="FreeBSD",ct="ChromeOS",lt=function(){return We({current:void 0,version:Ye.unknown()})},ft=We,dt=(J(it),J("iOS"),J(at),J("Linux"),J("OSX"),J(ut),J(st),J(ct),Re(function(){return e=navigator.userAgent,t=ve.from(navigator.userAgentData),n=Ie,p=tt.browsers(),h=tt.oses(),v=t.bind(function(e){return r=p,ee(e.brands,function(t){var n=t.brand.toLowerCase();return M(r,function(e){var t;return n===(null===(t=e.brand)||void 0===t?void 0:t.toLowerCase())}).map(function(e){return{current:e.name,version:Ye.nu(parseInt(t.version,10),0)}})});var r}).orThunk(function(){return De(p,n=e).map(function(e){var t=Ye.detect(e.versionRegexes,n);return{current:e.name,version:t}});var n}).fold(rt,ot),b=De(h,r=e).map(function(e){var t=Ye.detect(e.versionRegexes,r);return{current:e.name,version:t}}).fold(lt,ft),{browser:v,os:b,deviceType:(i=v,a=e,u=n,s=(o=b).isiOS()&&!0===/ipad/i.test(a),c=o.isiOS()&&!s,f=(l=o.isiOS()||o.isAndroid())||u("(pointer:coarse)"),d=s||!c&&l&&u("(min-device-width:768px)"),m=c||l&&!d,g=i.isSafari()&&o.isiOS()&&!1===/safari/i.test(a),{isiPad:J(s),isiPhone:J(c),isTablet:J(d),isPhone:J(m),isTouch:J(f),isAndroid:o.isAndroid,isiOS:o.isiOS,isWebView:J(g),isDesktop:J(!m&&!d&&!g)})};var e,t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b})),mt=navigator.userAgent,gt=dt(),pt=gt.browser,ht=gt.os,vt=gt.deviceType,bt=/WebKit/.test(mt)&&!pt.isEdge(),yt="FormData"in window&&"FileReader"in window&&"URL"in window&&!!URL.createObjectURL,Ct=-1!==mt.indexOf("Windows Phone"),xt={opera:pt.isOpera(),webkit:bt,ie:!(!pt.isIE()&&!pt.isEdge())&&pt.version.major,gecko:pt.isFirefox(),mac:ht.isOSX()||ht.isiOS(),iOS:vt.isiPad()||vt.isiPhone(),android:ht.isAndroid(),contentEditable:!0,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:!0,range:window.getSelection&&"Range"in window,documentMode:pt.isIE()?document.documentMode||7:10,fileApi:yt,ceFalse:!0,cacheSuffix:null,container:null,experimentalShadowDom:!1,canHaveCSP:!pt.isIE(),desktop:vt.isDesktop(),windowsPhone:Ct,browser:{current:pt.current,version:pt.version,isChrome:pt.isChrome,isEdge:pt.isEdge,isFirefox:pt.isFirefox,isIE:pt.isIE,isOpera:pt.isOpera,isSafari:pt.isSafari},os:{current:ht.current,version:ht.version,isAndroid:ht.isAndroid,isChromeOS:ht.isChromeOS,isFreeBSD:ht.isFreeBSD,isiOS:ht.isiOS,isLinux:ht.isLinux,isOSX:ht.isOSX,isSolaris:ht.isSolaris,isWindows:ht.isWindows},deviceType:{isDesktop:vt.isDesktop,isiPad:vt.isiPad,isiPhone:vt.isiPhone,isPhone:vt.isPhone,isTablet:vt.isTablet,isTouch:vt.isTouch,isWebView:vt.isWebView}},wt=/^\s*|\s*$/g,St=function(e,n,r,o){o=o||this,e&&ce(e=r?e[r]:e,function(e,t){return!1!==n.call(o,e,t,r)&&void St(e,n,r,o)})},Nt={trim:Me,isArray:ke,is:Fe,toArray:function(e){if(ke(e))return e;for(var t=[],n=0,r=e.length;n<r;n++)t[n]=e[n];return t},makeMap:function(e,t,n){var r;for(t=t||",",n=n||{},r=(e="string"==typeof(e=e||[])?e.split(t):e).length;r--;)n[e[r]]={};return n},each:ce,map:le,grep:fe,inArray:de,hasOwn:Ee,extend:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0;r<t.length;r++){var o,i,a=t[r];for(o in a)!Ee(a,o)||void 0!==(i=a[o])&&(e[o]=i)}return e},create:function(e,t,n){var r,o,i,a=this,u=0,s=(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e))[3].match(/(^|\.)(\w+)$/i)[2],c=a.createNS(e[3].replace(/\.\w+$/,""),n);if(!c[s]){if("static"===e[2])return c[s]=t,void(this.onCreate&&this.onCreate(e[2],e[3],c[s]));t[s]||(t[s]=function(){},u=1),c[s]=t[s],a.extend(c[s].prototype,t),e[5]&&(r=a.resolve(e[5]).prototype,o=e[5].match(/\.(\w+)$/i)[1],i=c[s],c[s]=u?function(){return r[o].apply(this,arguments)}:function(){return this.parent=r[o],i.apply(this,arguments)},c[s].prototype[s]=c[s],a.each(r,function(e,t){c[s].prototype[t]=r[t]}),a.each(t,function(e,t){r[t]?c[s].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==s&&(c[s].prototype[t]=e)})),a.each(t.static,function(e,t){c[s][t]=e})}},walk:St,createNS:function(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Fe(e,"array")?e:le(e.split(t||","),Me)},_addCacheSuffix:function(e){var t=xt.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Et={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Ke(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return Ke(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return Ke(n)},fromDom:Ke,fromPoint:function(e,t,n){return ve.from(e.dom.elementFromPoint(t,n)).map(Ke)}};function kt(e){return e.dom.nodeName.toLowerCase()}function _t(e){return e.dom.nodeType}function At(t){return function(e){return _t(e)===t}}function Rt(e){return Et.fromDom(e.dom.ownerDocument)}function Dt(e){return Rn(e)?e:Rt(e)}function Tt(e){return Et.fromDom(Dt(e).dom.defaultView)}function Ot(e){return ve.from(e.dom.parentNode).map(Et.fromDom)}function Bt(e){return ve.from(e.dom.previousSibling).map(Et.fromDom)}function Pt(e){return ve.from(e.dom.nextSibling).map(Et.fromDom)}function Lt(e){return q(Ue(e,Bt))}function It(e){return Ue(e,Pt)}function Mt(e,t){var n=e.dom.childNodes;return ve.from(n[t]).map(Et.fromDom)}function Ft(e){return Mt(e,0)}function Ut(e){return Mt(e,e.dom.childNodes.length-1)}function zt(e){return e.dom.childNodes.length}function Ht(e){return Dn(e)&&V(e.dom.host)}function jt(t){return Ht(t)?t:function(){var e=Dt(t).dom.head;if(null==e)throw new Error("Head is not available yet");return Et.fromDom(e)}()}function Vt(e){return Et.fromDom(e.dom.host)}function qt(t,n){Ot(t).each(function(e){e.dom.insertBefore(n.dom,t.dom)})}function $t(e,t){Pt(e).fold(function(){Ot(e).each(function(e){Ln(e,t)})},function(e){qt(e,t)})}function Wt(t,n){Ft(t).fold(function(){Ln(t,n)},function(e){t.dom.insertBefore(n.dom,e.dom)})}function Kt(t,e){Y(e,function(e){Ln(t,e)})}function Xt(e){e.dom.textContent="",Y(Tn(e),function(e){In(e)})}function Yt(e){var t,n=Tn(e);0<n.length&&(t=e,Y(n,function(e){qt(t,e)})),In(e)}function Gt(e,t){return void 0!==e?e:void 0!==t?t:0}function Jt(e){var t=void 0!==e?e.dom:document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop;return Un(n,r)}function Qt(e,t,n){var r=(void 0!==n?n.dom:document).defaultView;r&&r.scrollTo(e,t)}function Zt(e,t){dt().browser.isSafari()&&y(e.dom.scrollIntoViewIfNeeded)?e.dom.scrollIntoViewIfNeeded(!1):e.dom.scrollIntoView(t)}function en(e,t,n,r){return{x:e,y:t,width:n,height:r,right:e+n,bottom:t+r}}function tn(e){var r=void 0===e?window:e,t=r.document,o=Jt(Et.fromDom(t)),n=void 0===r?window:r;return(dt().browser.isFirefox()?ve.none():ve.from(n.visualViewport)).fold(function(){var e=r.document.documentElement,t=e.clientWidth,n=e.clientHeight;return en(o.left,o.top,t,n)},function(e){return en(Math.max(e.pageLeft,o.left),Math.max(e.pageTop,o.top),e.width,e.height)})}function nn(t){return function(e){return!!e&&e.nodeType===t}}function rn(e){return e&&!Object.getPrototypeOf(e)}function on(e){var n=e.map(function(e){return e.toLowerCase()});return function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();return T(n,t)}return!1}}function an(r,e){var o=e.toLowerCase().split(" ");return function(e){if(Hn(e))for(var t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}}function un(t){return function(e){return Hn(e)&&e.hasAttribute(t)}}function sn(e){return Hn(e)&&e.hasAttribute("data-mce-bogus")}function cn(e){return Hn(e)&&"TABLE"===e.tagName}function ln(t){return function(e){if(Hn(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function fn(e,t,n){return void 0===n&&(n=o),e.exists(function(e){return n(e,t)})}function dn(e,t,n){return e.isSome()&&t.isSome()?ve.some(n(e.getOrDie(),t.getOrDie())):ve.none()}function mn(e){return void 0!==e.style&&y(e.style.getPropertyValue)}function gn(e,t,n){if(!(X(n)||v(n)||N(n)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}function pn(e,t,n){gn(e.dom,t,n)}function hn(e,t){var n=e.dom;ne(t,function(e,t){gn(n,t,e)})}function vn(e,t){var n=e.dom.getAttribute(t);return null===n?void 0:n}function bn(e,t){return ve.from(vn(e,t))}function yn(e,t){var n=e.dom;return n&&n.hasAttribute&&n.hasAttribute(t)}function Cn(e,t){e.dom.removeAttribute(t)}function xn(e,t){var n=e.dom;ne(t,function(e,t){!function(e,t,n){if(!X(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);mn(e)&&e.style.setProperty(t,n)}(n,t,e)})}function wn(e,t){var n=e.dom,r=window.getComputedStyle(n).getPropertyValue(t);return""!==r||Mn(e)?r:Zn(n,t)}function Sn(e,t){var n=e.dom,r=Zn(n,t);return ve.from(r).filter(function(e){return 0<e.length})}function Nn(e){var t={},n=e.dom;if(mn(n))for(var r=0;r<n.style.length;r++){var o=n.style.item(r);t[o]=n.style[o]}return t}function En(e){return M(e,_n)}function kn(e,t){return e.children&&T(e.children,t)}"undefined"!=typeof window||Function("return this;")();var _n=At(1),An=At(3),Rn=At(9),Dn=At(11),Tn=function(e){return A(e.dom.childNodes,Et.fromDom)},On=y(Element.prototype.attachShadow)&&y(Node.prototype.getRootNode),Bn=J(On),Pn=On?function(e){return Et.fromDom(e.dom.getRootNode())}:Dt,Ln=function(e,t){e.dom.appendChild(t.dom)},In=function(e){var t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)},Mn=function(e){var t=An(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;var n=t.ownerDocument,r=Et.fromDom(t),o=Pn(r);return(Ht(o)?ve.some(o):ve.none()).fold(function(){return n.body.contains(t)},a(Mn,Vt))},Fn=function(n,r){return{left:n,top:r,translate:function(e,t){return Fn(n+e,r+t)}}},Un=Fn,zn=function(e){var t,n=e.dom,r=n.ownerDocument.body;return r===n?Un(r.offsetLeft,r.offsetTop):Mn(e)?(t=n.getBoundingClientRect(),Un(t.left,t.top)):Un(0,0)},Hn=nn(1),jn=on(["textarea","input"]),Vn=nn(3),qn=nn(8),$n=nn(9),Wn=nn(11),Kn=on(["br"]),Xn=on(["img"]),Yn=ln("true"),Gn=ln("false"),Jn=on(["td","th"]),Qn=on(["video","audio","object","embed"]),Zn=function(e,t){return mn(e)?e.style.getPropertyValue(t):""},er=dt().browser,tr={},nr={exports:tr};function rr(e){setTimeout(function(){throw e},0)}!function(){var e=this,t=function(){var e,t,n,r={exports:{}};function o(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(e,this)}function a(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var e,t=1===n._state?r.onFulfilled:r.onRejected;if(null!==t){try{e=t(n._value)}catch(e){return void s(r.promise,e)}u(r.promise,e)}else(1===n._state?u:s)(r.promise,n._value)})):n._deferreds.push(r)}function u(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void c(t);if("function"==typeof n)return void f((r=n,o=e,function(){r.apply(o,arguments)}),t)}t._state=1,t._value=e,c(t)}catch(e){s(t,e)}var r,o}function s(e,t){e._state=2,e._value=t,c(e)}function c(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)a(e,e._deferreds[t]);e._deferreds=null}function l(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function f(e,t){var n=!1;try{e(function(e){n||(n=!0,u(t,e))},function(e){n||(n=!0,s(t,e))})}catch(e){if(n)return;n=!0,s(t,e)}}e=r,t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=setTimeout,i.prototype.catch=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(o);return a(this,new l(e,t,n)),n},i.all=function(e){var u=Array.prototype.slice.call(e);return new i(function(o,i){if(0===u.length)return o([]);for(var a=u.length,e=0;e<u.length;e++)!function t(n,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var r=e.then;if("function"==typeof r)return r.call(e,function(e){t(n,e)},i),0}u[n]=e,0==--a&&o(u)}catch(e){i(e)}}(e,u[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof setImmediate?function(e){setImmediate(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},e.exports?e.exports=i:t.Promise||(t.Promise=i);var d=r.exports;return{boltExport:("undefined"!=typeof window?window:Function("return this;")()).Promise||d}};"object"==typeof tr&&void 0!==nr?nr.exports=t():(e="undefined"!=typeof globalThis?globalThis:e||self).EphoxContactWrapper=t()}();function or(e){return cr(function(){return new ar(e)})}function ir(a){if(!S(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return Y(a,function(e,r){var t=we(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(void 0!==n[o])throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!S(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=n.length;if(t!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+t);return{fold:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(e.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+e.length);return e[r].apply(null,n)},match:function(e){var t=we(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!j(u,function(e){return T(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){console.log(e,{constructors:u,constructor:o,params:n})}}}}),n}var ar=nr.exports.boltExport,ur=function(e){function r(e){o()?i(e):t.push(e)}var n=ve.none(),t=[],o=function(){return n.isSome()},i=function(t){n.each(function(e){setTimeout(function(){t(e)},0)})};return e(function(e){o()||(n=ve.some(e),Y(t,i),t=[])}),{get:r,map:function(n){return ur(function(t){r(function(e){t(n(e))})})},isReady:o}},sr={nu:ur,pure:function(t){return ur(function(e){e(t)})}},cr=function(n){function e(e){n().then(e,rr)}return{map:function(e){return cr(function(){return n().then(e)})},bind:function(t){return cr(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return cr(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return sr.nu(e)},toCached:function(){var e=null;return cr(function(){return e=null===e?n():e})},toPromise:n,get:e}},lr=function(n){return{isValue:w,isError:D,getOr:J(n),getOrThunk:J(n),getOrDie:J(n),or:function(e){return lr(n)},orThunk:function(e){return lr(n)},fold:function(e,t){return t(n)},map:function(e){return lr(e(n))},mapError:function(e){return lr(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOptional:function(){return ve.some(n)}}},fr=function(n){return{isValue:D,isError:w,getOr:u,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:u,orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return fr(n)},mapError:function(e){return fr(e(n))},each:te,bind:function(e){return fr(n)},exists:D,forall:w,toOptional:ve.none}},dr={value:lr,error:fr,fromOption:function(e,t){return e.fold(function(){return fr(t)},lr)}};function mr(e){return e.fold(u,u)}function gr(e,t,n,r,o){return e(n,r)?ve.some(n):y(o)&&o(n)?ve.none():t(n,r,o)}function pr(e,t,n){for(var r=e.dom,o=y(n)?n:D;r.parentNode;){var r=r.parentNode,i=Et.fromDom(r);if(t(i))return ve.some(i);if(o(i))break}return ve.none()}function hr(e,t,n){return gr(function(e,t){return t(e)},pr,e,t,n)}function vr(e,t,n){return pr(e,function(e){return ze(e,t)},n)}function br(e,t){return n=t,He(r=void 0===e?document:e.dom)?ve.none():ve.from(r.querySelector(n)).map(Et.fromDom);var n,r}function yr(e,t,n){return gr(ze,vr,e,t,n)}function Cr(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)}function xr(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)}function wr(n,r){function e(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];clearTimeout(o),o=Cr(function(){n.apply(this,e)},r)}var o;return e.stop=function(){clearTimeout(o)},e}function Sr(m,g){function n(e,t,n){var r,o=Nt._addCacheSuffix(e),i=ue(h,o).getOrThunk(function(){return{id:"mce-u"+p++,passed:[],failed:[],count:0}});function a(e,t){for(var n=e.length;n--;)e[n]();i.status=t,i.passed=[],i.failed=[],r&&(r.onload=null,r.onerror=null,r=null)}function u(){return a(i.passed,2),0}function s(){return a(i.failed,3)}(h[o]=i).count++;var c,l,f,d=function(){var e=d;!function(){for(var e=m.styleSheets,t=e.length;t--;){var n=e[t].ownerNode;if(n&&n.id===r.id)return u(),1}}()&&(Date.now()-l<y?Ar.setTimeout(e):s())};t&&i.passed.push(t),n&&i.failed.push(n),1!==i.status&&(2!==i.status?3!==i.status?(i.status=1,hn(c=Et.fromTag("link",b.dom),{rel:"stylesheet",type:"text/css",id:i.id}),l=Date.now(),g.contentCssCors&&pn(c,"crossOrigin","anonymous"),g.referrerPolicy&&pn(c,"referrerpolicy",g.referrerPolicy),(r=c.dom).onload=d,r.onerror=s,f=c,Ln(jt(v),f),pn(c,"href",o)):s():u())}function o(t){return or(function(e){n(t,i(e,J(dr.value(t))),i(e,J(dr.error(t))))})}function t(e){var n=Nt._addCacheSuffix(e);ue(h,n).each(function(e){var t;0==--e.count&&(delete h[n],t=e.id,br(jt(v),"#"+t).each(In))})}void 0===g&&(g={});var p=0,h={},v=Et.fromDom(m),b=Dt(v),y=g.maxLoadTime||5e3;return{load:n,loadAll:function(e,n,r){var a,t=A(e,o);a=t,or(function(r){var o=[],i=0;0===a.length?r([]):Y(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})}).get(function(e){var t=B(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(mr)):n(t.pass.map(mr))})},unload:t,unloadAll:function(e){Y(e,function(e){t(e)})},_setReferrerPolicy:function(e){g.referrerPolicy=e}}}ir([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var Nr,Er,kr=function(e,t){return M(e.dom.childNodes,function(e){return t(Et.fromDom(e))}).map(Et.fromDom)},_r=window.Promise||ar,Ar={requestAnimationFrame:function(e,t){Nr?Nr.then(e):Nr=new _r(function(e){(function(e,t){for(var n=window.requestAnimationFrame,r=["ms","moz","webkit"],o=0;o<r.length&&!n;o++)n=window[r[o]+"RequestAnimationFrame"];(n=n||function(e){window.setTimeout(e,0)})(e,t)})(e,t=t||document.body)}).then(e)},setTimeout:Cr,setInterval:xr,setEditorTimeout:function(e,t,n){return Cr(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r=xr(function(){e.removed?clearInterval(r):t()},n);return r},debounce:wr,throttle:wr,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},Rr=(Er=new WeakMap,{forElement:function(e,t){var n=Pn(e).dom;return ve.from(Er.get(n)).getOrThunk(function(){var e=Sr(n,t);return Er.set(n,e),e})}}),Dr=(Tr.prototype.current=function(){return this.node},Tr.prototype.next=function(e){return this.node=this.findSibling(this.node,"firstChild","nextSibling",e),this.node},Tr.prototype.prev=function(e){return this.node=this.findSibling(this.node,"lastChild","previousSibling",e),this.node},Tr.prototype.prev2=function(e){return this.node=this.findPreviousNode(this.node,"lastChild","previousSibling",e),this.node},Tr.prototype.findSibling=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==this.rootNode){if(o=e[n])return o;for(i=e.parentNode;i&&i!==this.rootNode;i=i.parentNode)if(o=i[n])return o}}},Tr.prototype.findPreviousNode=function(e,t,n,r){var o,i,a;if(e&&(o=e[n],!this.rootNode||o!==this.rootNode)){if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}return(i=e.parentNode)&&i!==this.rootNode?i:void 0}},Tr);function Tr(e,t){this.node=e,this.rootNode=t,this.current=this.current.bind(this),this.next=this.next.bind(this),this.prev=this.prev.bind(this),this.prev2=this.prev2.bind(this)}function Or(t){var n;return function(e){return n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,w),Ee(n,kt(e))}}function Br(e){return _n(e)&&!go(e)}function Pr(e){return _n(e)&&"br"===kt(e)}function Lr(e){return _o(e)&&(e=e.parentNode),ko(e)&&e.hasAttribute("data-mce-caret")}function Ir(e){return _o(e)&&No(e.data)}function Mr(e){return Lr(e)||Ir(e)}function Fr(e){return e.firstChild!==e.lastChild||!Kn(e.firstChild)}function Ur(e){var t=e.container();return!!Vn(t)&&(t.data.charAt(e.offset())===So||e.isAtStart()&&Ir(t.previousSibling))}function zr(e){var t=e.container();return!!Vn(t)&&(t.data.charAt(e.offset()-1)===So||e.isAtEnd()&&Ir(t.nextSibling))}function Hr(e){return e&&e.hasAttribute("data-mce-caret")?(sn(n=(t=e.getElementsByTagName("br"))[t.length-1])&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n}function jr(e){return Lr(e.startContainer)}function Vr(e){return!Mo(e)&&(Bo(e)?!Po(e.parentNode):Lo(e)||Oo(e)||Io(e)||Fo(e))}function qr(e,t){return Vr(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Fo(e))return!1;if(Do(e))return!0}return!0}(e,t)}function $r(e){return Uo.test(e)}function Wr(e,t){return Vr(e)&&!1===(a=t,Vn(i=e)&&$r(i.data)&&!1===(n=i,r=Et.fromDom(a),vr(Et.fromDom(n),"pre,code",R(je,r)).isSome()))||Hn(o=e)&&"A"===o.nodeName&&!o.hasAttribute("href")&&(o.hasAttribute("name")||o.hasAttribute("id"))||zo(e);var n,r,o,i,a}function Kr(e,t){return function(e,t){var n=0;if(Wr(e,e))return!1;var r=e.firstChild;if(!r)return!0;var o=new Dr(r,e);do{if(t){if(jo(r)){r=o.next(!0);continue}if(Ho(r)){r=o.next();continue}}if(Kn(r))n++,r=o.next();else{if(Wr(r,e))return!1;r=o.next()}}while(r);return n<=1}(e.dom,t=void 0===t||t)}function Xr(e,t){return V(e)&&(Wr(e,t)||Br(Et.fromDom(e)))}function Yr(e){return"span"===e.nodeName.toLowerCase()&&"bookmark"===e.getAttribute("data-mce-type")}function Gr(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),Go[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}}function Jr(e,t){return e.replace(t?$o:Wo,function(e){return Go[e]||e})}function Qr(e,t){return e.replace(t?$o:Wo,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":Go[e]||"&#"+e.charCodeAt(0)+";"})}function Zr(e,t,n){return n=n||Qo,e.replace(t?$o:Wo,function(e){return Go[e]||n[e]||e})}function eo(e,t){return(e=Nt.trim(e))?e.split(t||" "):[]}function to(e,t){var n=ni(e," ",ni(e.toUpperCase()," "));return oi(n,t)}function no(e){return to("td th li dt dd figcaption caption details summary",e.getTextBlockElements())}function ro(e,n){var r;return e&&(r={},ri(e="string"==typeof e?{"*":e}:e,function(e,t){r[t]=r[t.toUpperCase()]=("map"===n?ni:ii)(e,/[, ]/)})),r}function oo(i){function e(e,t,n){var r=i[e];return r?r=ni(r,/[, ]/,ni(r.toUpperCase(),/[, ]/)):(r=ei[e])||(r=to(t,n),ei[e]=r),r}var t,s,n,r,o,a,u,c,S={},l={},N=[],f={},d={},m=(t=(i=i||{}).schema,c={},ei[t]||(s="id accesskey class dir lang style tabindex title role",n="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",r="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==t&&(s+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",n+=" article aside details dialog figure main header footer hgroup section nav",r+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==t&&(s+=" xml:lang",r=[r,u="acronym applet basefont big font strike tt"].join(" "),ri(eo(u),function(e){g(e,"",r)}),n=[n,a="center dir isindex noframes"].join(" "),o=[n,r].join(" "),ri(eo(a),function(e){g(e,"",o)})),o=o||[n,r].join(" "),g("html","manifest","head body"),g("head","","base command link meta noscript script style title"),g("title hr noscript br"),g("base","href target"),g("link","href rel media hreflang type sizes hreflang"),g("meta","name http-equiv content charset"),g("style","media type scoped"),g("script","src async defer type charset"),g("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",o),g("address dt dd div caption","",o),g("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",r),g("blockquote","cite",o),g("ol","reversed start type","li"),g("ul","","li"),g("li","value",o),g("dl","","dt dd"),g("a","href target rel media hreflang type",r),g("q","cite",r),g("ins del","cite datetime",o),g("img","src sizes srcset alt usemap ismap width height"),g("iframe","src name width height",o),g("embed","src type width height"),g("object","data type typemustmatch name usemap form width height",[o,"param"].join(" ")),g("param","name value"),g("map","name",[o,"area"].join(" ")),g("area","alt coords shape href target rel media hreflang type"),g("table","border","caption colgroup thead tfoot tbody tr"+("html4"===t?" col":"")),g("colgroup","span","col"),g("col","span"),g("tbody thead tfoot","","tr"),g("tr","","td th"),g("td","colspan rowspan headers",o),g("th","colspan rowspan headers scope abbr",o),g("form","accept-charset action autocomplete enctype method name novalidate target",o),g("fieldset","disabled form name",[o,"legend"].join(" ")),g("label","form for",r),g("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),g("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===t?o:r),g("select","disabled form multiple name required size","option optgroup"),g("optgroup","disabled label","option"),g("option","disabled label selected value"),g("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),g("menu","type label",[o,"li"].join(" ")),g("noscript","",o),"html4"!==t&&(g("wbr"),g("ruby","",[r,"rt rp"].join(" ")),g("figcaption","",o),g("mark rt rp summary bdi","",r),g("canvas","width height",o),g("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[o,"track source"].join(" ")),g("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[o,"track source"].join(" ")),g("picture","","img source"),g("source","src srcset type media sizes"),g("track","kind src srclang label default"),g("datalist","",[r,"option"].join(" ")),g("article section nav aside main header footer","",o),g("hgroup","","h1 h2 h3 h4 h5 h6"),g("figure","",[o,"figcaption"].join(" ")),g("time","datetime",r),g("dialog","open",o),g("command","type label icon disabled checked radiogroup command"),g("output","for form name",r),g("progress","value max",r),g("meter","value min max low high optimum",r),g("details","open",[o,"summary"].join(" ")),g("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==t&&(p("script","language xml:space"),p("style","xml:space"),p("object","declare classid code codebase codetype archive standby align border hspace vspace"),p("embed","align name hspace vspace"),p("param","valuetype type"),p("a","charset name rev shape coords"),p("br","clear"),p("applet","codebase archive code object alt name width height align hspace vspace"),p("img","name longdesc align border hspace vspace"),p("iframe","longdesc frameborder marginwidth marginheight scrolling align"),p("font basefont","size color face"),p("input","usemap align"),p("select"),p("textarea"),p("h1 h2 h3 h4 h5 h6 div p legend caption","align"),p("ul","type compact"),p("li","type"),p("ol dl menu dir","compact"),p("pre","width xml:space"),p("hr","align noshade size width"),p("isindex","prompt"),p("table","summary width frame rules cellspacing cellpadding align bgcolor"),p("col","width align char charoff valign"),p("colgroup","width align char charoff valign"),p("thead","align char charoff valign"),p("tr","align char charoff valign bgcolor"),p("th","axis align char charoff valign nowrap bgcolor width height"),p("form","accept"),p("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),p("tfoot","align char charoff valign"),p("tbody","align char charoff valign"),p("area","nohref"),p("body","background bgcolor text link vlink alink")),"html4"!==t&&(p("input button select textarea","autofocus"),p("input textarea","placeholder"),p("a","download"),p("link script img","crossorigin"),p("img","loading"),p("iframe","sandbox seamless allowfullscreen loading")),ri(eo("a form meter progress dfn"),function(e){c[e]&&delete c[e].children[e]}),delete c.caption.children.table,delete c.script,ei[t]=c));function g(e,t,n){function r(e,t){for(var n={},r=0,o=e.length;r<o;r++)n[e[r]]=t||{};return n}var o,i;t=t||"","string"==typeof(n=n||[])&&(n=eo(n));for(var a=eo(e),u=a.length;u--;)i={attributes:r(o=eo([s,t].join(" "))),attributesOrder:o,children:r(n,ti)},c[a[u]]=i}function p(e,t){for(var n,r,o,i=eo(e),a=i.length,u=eo(t);a--;)for(n=c[i[a]],r=0,o=u.length;r<o;r++)n.attributes[u[r]]={},n.attributesOrder.push(u[r])}!1===i.verify_html&&(i.valid_elements="*[*]");var h=ro(i.valid_styles),v=ro(i.invalid_styles,"map"),b=ro(i.valid_classes,"map"),y=e("whitespace_elements","pre script noscript style textarea video audio iframe object code"),C=e("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),x=e("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),w=e("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),E="td th iframe video audio object script code",k=e("non_empty_elements",E+" pre",x),_=e("move_caret_before_on_enter_elements",E+" table",x),A=e("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),R=e("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",A),D=e("text_inline_elements","span strong b em i font s strike u var cite dfn code mark q sup sub samp");function T(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function O(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/,C=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,x=/[*?+]/;if(e){var w=eo(e,",");for(S["@"]&&(h=S["@"].attributes,v=S["@"].attributesOrder),t=0,n=w.length;t<n;t++)if(i=y.exec(w[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h&&(ne(h,function(e,t){d[t]=e}),m.push.apply(m,v)),s)for(r=0,o=(s=eo(s,"|")).length;r<o;r++)(i=C.exec(s[r]))&&(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"!==f?(g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===g&&(u.validValues=ni(b,"?"))),x.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=T(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)):(delete d[l],m.splice(ai(m,l),1)));h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,S[p]=a),x.test(c)?(a.pattern=T(c),N.push(a)):S[c]=a}}}function B(e){S={},N=[],O(e),ri(m,function(e,t){l[t]=e.children})}function P(e){var a=/^(~)?(.+)$/;e&&(ei.text_block_elements=ei.block_elements=null,ri(eo(e,","),function(e){var t,n=a.exec(e),r="~"===n[1],o=r?"span":"div",i=n[2];l[i]=l[o],f[i]=o,r||(R[i.toUpperCase()]={},R[i]={}),S[i]||(t=S[o],delete(t=oi({},t)).removeEmptyAttrs,delete t.removeEmpty,S[i]=t),ri(l,function(e,t){e[o]&&(l[t]=e=oi({},l[t]),e[i]=e[o])})}))}function L(e){var o=/^([+\-]?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)\[([^\]]+)]$/;ei[i.schema]=null,e&&ri(eo(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?l[r[2]]:l[r[2]]={"#comment":{}},t=l[r[2]],ri(eo(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})}function I(e){var t,n=S[e];if(n)return n;for(t=N.length;t--;)if((n=N[t]).pattern.test(e))return n}ri((i.special||"script noscript iframe noframes noembed title style textarea xmp").split(" "),function(e){d[e]=new RegExp("</"+e+"[^>]*>","gi")}),i.valid_elements?B(i.valid_elements):(ri(m,function(e,t){S[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},l[t]=e.children}),"html5"!==i.schema&&ri(eo("strong/b em/i"),function(e){var t=eo(e,"/");S[t[1]].outputName=t[0]}),ri(D,function(e,t){S[t]&&(i.padd_empty_block_inline_children&&(S[t].paddInEmptyBlock=!0),S[t].removeEmpty=!0)}),ri(eo("ol ul blockquote a table tbody"),function(e){S[e]&&(S[e].removeEmpty=!0)}),ri(eo("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){S[e].paddEmpty=!0}),ri(eo("span"),function(e){S[e].removeEmptyAttrs=!0})),P(i.custom_elements),L(i.valid_children),O(i.extended_valid_elements),L("+ol[ul|ol],+ul[ul|ol]"),ri({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){S[t]&&(S[t].parentsRequired=eo(e))}),i.invalid_elements&&ri(ii(i.invalid_elements),function(e){S[e]&&delete S[e]}),I("span")||O("span[!data-mce-type|*]");var M=J(h),F=J(v),U=J(b),z=J(w),H=J(R),j=J(A),V=J(D),q=J(x),$=J(C),W=J(k),K=J(_),X=J(y),Y=J(d),G=J(f);return{children:l,elements:S,getValidStyles:M,getValidClasses:U,getBlockElements:H,getInvalidStyles:F,getShortEndedElements:q,getTextBlockElements:j,getTextInlineElements:V,getBoolAttrs:z,getElementRule:I,getSelfClosingElements:$,getNonEmptyElements:W,getMoveCaretBeforeOnEnterElements:K,getWhiteSpaceElements:X,getSpecialElements:Y,isValidChild:function(e,t){var n=l[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=I(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:G,addValidElements:O,setValidElements:B,addCustomElements:P,addValidChildren:L}}function io(e,t,n,r){function o(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+o(t)+o(n)+o(r)}function ao(b,e){var u,o,y=this,C=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,x=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,w=/\s*([^:]+):\s*([^;]+);?/g,S=/\s+$/,N={},E=xo;b=b||{},e&&(u=e.getValidStyles(),o=e.getInvalidStyles());for(var t=("\\\" \\' \\; \\: ; : "+E).split(" "),k=0;k<t.length;k++)N[t[k]]=E+k,N[E+k]=t[k];return{toHex:function(e){return e.replace(C,io)},parse:function(e){function t(e,t,n){var r=p[e+"-top"+t];if(r){var o=p[e+"-right"+t];if(o){var i=p[e+"-bottom"+t];if(i){var a=p[e+"-left"+t];if(a){var u=[r,o,i,a];for(k=u.length-1;k--&&u[k]===u[k+1];);-1<k&&n||(p[e+t]=-1===k?u[0]:u.join(" "),delete p[e+"-top"+t],delete p[e+"-right"+t],delete p[e+"-bottom"+t],delete p[e+"-left"+t])}}}}}function n(e){var t,n=p[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return;return p[e]=n[0],1}}function r(e){return f=!0,N[e]}function u(e,t){return f&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return N[e]})),t?e:e.replace(/\\([\'\";:])/g,"$1")}function o(e){return String.fromCharCode(parseInt(e.slice(1),16))}function i(e){return e.replace(/\\[0-9a-f]+/gi,o)}function a(e,t,n,r,o,i){if(o=o||i)return"'"+(o=u(o)).replace(/\'/g,"\\'")+"'";if(t=u(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return"url('"+(t=h?h.call(v,t,"style"):t).replace(/\'/g,"\\'")+"')"}var s,c,l,f,d,m,g,p={},h=b.url_converter,v=b.url_converter_scope||y;if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,r).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,r)});s=w.exec(e);)w.lastIndex=s.index+s[0].length,c=s[1].replace(S,"").toLowerCase(),l=s[2].replace(S,""),c&&l&&(c=i(c),l=i(l),-1===c.indexOf(E)&&-1===c.indexOf('"')&&(b.allow_script_urls||"behavior"!==c&&!/expression\s*\(|\/\*|\*\//.test(l))&&("font-weight"===c&&"700"===l?l="bold":"color"!==c&&"background-color"!==c||(l=l.toLowerCase()),l=(l=l.replace(C,io)).replace(x,a),p[c]=f?u(l,!0):l));t("border","",!0),t("border","-width"),t("border","-color"),t("border","-style"),t("padding",""),t("margin",""),m="border-style",g="border-color",n(d="border-width")&&n(m)&&n(g)&&(p.border=p[d]+" "+p[m]+" "+p[g],delete p[d],delete p[m],delete p[g]),"medium none"===p.border&&delete p.border,"none"===p["border-image"]&&delete p["border-image"]}return p},serialize:function(i,r){function e(e){var t,n=u[e];if(n)for(var r=0,o=n.length;r<o;r++)e=n[r],(t=i[e])&&(a+=(0<a.length?" ":"")+e+": "+t+";")}var a="";return r&&u?(e("*"),e(r)):ne(i,function(e,t){var n;!e||o&&((n=o["*"])&&n[t]||(n=o[r])&&n[t])||(a+=(0<a.length?" ":"")+t+": "+e+";")}),a}}}function uo(e){return e instanceof Event||y(e.initEvent)}function so(e,t,n,r){var o,i,a=function(e){var t,n=null!=r?r:{};for(t in e)Ee(ui,t)||(n[t]=e[t]);return V(n.composedPath)&&(n.composedPath=function(){return e.composedPath()}),n}(t);return a.type=e,K(a.target)&&(a.target=null!==(o=a.srcElement)&&void 0!==o?o:n),(K((i=t).preventDefault)||uo(i))&&(a.preventDefault=function(){a.defaultPrevented=!0,a.isDefaultPrevented=w,y(t.preventDefault)?t.preventDefault():uo(t)&&(t.returnValue=!1)},a.stopPropagation=function(){a.cancelBubble=!0,a.isPropagationStopped=w,y(t.stopPropagation)?t.stopPropagation():uo(t)&&(t.cancelBubble=!0)},a.stopImmediatePropagation=function(){a.isImmediatePropagationStopped=w,a.stopPropagation()},a.isDefaultPrevented!==w&&a.isDefaultPrevented!==D&&(a.isDefaultPrevented=!0===a.defaultPrevented?w:D,a.isPropagationStopped=!0===a.cancelBubble?w:D,a.isImmediatePropagationStopped=D)),a}function co(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function lo(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function fo(e,t){var n,r,o,i,a=so(e.type,e,document,t);return V(i=e)&&si.test(i.type)&&b(e.pageX)&&!b(e.clientX)&&(r=(n=a.target.ownerDocument||document).documentElement,o=n.body,a.pageX=e.clientX+(r&&r.scrollLeft||o&&o.scrollLeft||0)-(r&&r.clientLeft||o&&o.clientLeft||0),a.pageY=e.clientY+(r&&r.scrollTop||o&&o.scrollTop||0)-(r&&r.clientTop||o&&o.clientTop||0)),b(a.metaKey)&&(a.metaKey=!1),a}var mo=Or(["h1","h2","h3","h4","h5","h6"]),go=Or(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),po=Or(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),ho=Or(["ul","ol","dl"]),vo=Or(["li","dd","dt"]),bo=Or(["thead","tbody","tfoot"]),yo=Or(["td","th"]),Co=Or(["pre","script","textarea","style"]),xo="\ufeff",wo="\xa0",So=xo,No=function(e){return e===xo},Eo=function(e){return e.replace(/\uFEFF/g,"")},ko=Hn,_o=Vn,Ao=function(e){return _o(e)&&e.data[0]===So},Ro=function(e){return _o(e)&&e.data[e.data.length-1]===So},Do=Yn,To=Gn,Oo=Kn,Bo=Vn,Po=on(["script","style","textarea"]),Lo=on(["img","input","textarea","hr","iframe","video","audio","object","embed"]),Io=on(["table"]),Mo=Mr,Fo=function(e){return!1===(Hn(t=e)&&"true"===t.getAttribute("unselectable"))&&To(e);var t},Uo=/^[ \t\r\n]*$/,zo=un("data-mce-bookmark"),Ho=un("data-mce-bogus"),jo=function(e){return Hn(e)&&"all"===e.getAttribute("data-mce-bogus")},Vo=function(e,t,n){var r=n||t;if(Hn(t)&&Yr(t))return t;for(var o,i,a,u,s,c,l,f,d,m,g,p=t.childNodes,h=p.length-1;0<=h;h--)Vo(e,p[h],r);return!Hn(t)||1===(o=t.childNodes).length&&Yr(o[0])&&t.parentNode.insertBefore(o[0],t),Wn(a=t)||$n(a)||Wr(t,r)||Hn(i=t)&&0<i.childNodes.length||(s=r,Vn(u=t)&&0<u.data.length&&(f=new Dr(c=u,l=s).prev(!1),d=new Dr(c,l).next(!1),m=b(f)||Xr(f,l),g=b(d)||Xr(d,l),m&&g))||e.remove(t),t},qo=Nt.makeMap,$o=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Wo=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Ko=/[<>&\"\']/g,Xo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Yo={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"},Go={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},Jo={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},Qo=Gr("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32),Zo={encodeRaw:Jr,encodeAllRaw:function(e){return(""+e).replace(Ko,function(e){return Go[e]||e})},encodeNumeric:Qr,encodeNamed:Zr,getEncodeFunc:function(e,t){var n=Gr(t)||Qo,r=qo(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?$o:Wo,function(e){return void 0!==Go[e]?Go[e]:void 0!==n[e]?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return Zr(e,t,n)}:Zr:r.numeric?Qr:Jr},decode:function(e){return e.replace(Xo,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):Yo[t]||String.fromCharCode(t):Jo[e]||Qo[e]||(n=e,(r=Et.fromTag("div").dom).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},ei={},ti={},ni=Nt.makeMap,ri=Nt.each,oi=Nt.extend,ii=Nt.explode,ai=Nt.inArray,ui={keyLocation:!0,layerX:!0,layerY:!0,returnValue:!0,webkitMovementX:!0,webkitMovementY:!0,keyIdentifier:!0,mozPressure:!0},si=/^(?:mouse|contextmenu)|click/,ci=(li.prototype.bind=function(e,t,n,r){function o(e){f.executeHandlers(fo(e||d.event),i)}var i,a,u,s,c,l,f=this,d=window;if(e&&3!==e.nodeType&&8!==e.nodeType){e[f.expando]?i=e[f.expando]:(i=f.count++,e[f.expando]=i,f.events[i]={}),r=r||e;for(var m=t.split(" "),g=m.length;g--;)c=o,s=l=!1,"DOMContentLoaded"===(u=m[g])&&(u="ready"),f.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,fo({type:u})):(f.hasMouseEnterLeave||(s=f.mouseEnterLeave[u])&&(c=function(e){var t=e.currentTarget,n=e.relatedTarget;if(n&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=fo(e||d.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,f.executeHandlers(e,i))}),f.hasFocusIn||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=fo(e||d.event)).type="focus"===e.type?"focusin":"focusout",f.executeHandlers(e,i)}),(a=f.events[i][u])?"ready"===u&&f.domLoaded?n(fo({type:u})):a.push({func:n,scope:r}):(f.events[i][u]=a=[{func:n,scope:r}],a.fakeName=s,a.capture=l,a.nativeHandler=c,"ready"===u?function(e,t,n){var r,o=e.document,i={type:"ready"};n.domLoaded?t(i):(r=function(){lo(e,"DOMContentLoaded",r),lo(e,"load",r),n.domLoaded||(n.domLoaded=!0,t(i)),e=null},"complete"===o.readyState||"interactive"===o.readyState&&o.body?r():co(e,"DOMContentLoaded",r),n.domLoaded||co(e,"load",r))}(e,c,f):co(e,s||u,c,l)));return e=a=null,n}},li.prototype.unbind=function(n,e,t){var r,o,i;if(!n||3===n.nodeType||8===n.nodeType)return this;var a=n[this.expando];if(a){if(i=this.events[a],e){for(var u,s,c,l,f=e.split(" "),d=f.length;d--;)if(l=i[o=f[d]]){if(t)for(r=l.length;r--;)l[r].func===t&&(u=l.nativeHandler,s=l.fakeName,c=l.capture,(l=l.slice(0,r).concat(l.slice(r+1))).nativeHandler=u,l.fakeName=s,l.capture=c,i[o]=l);t&&0!==l.length||(delete i[o],lo(n,l.fakeName||o,l.nativeHandler,l.capture))}}else ne(i,function(e,t){lo(n,e.fakeName||t,e.nativeHandler,e.capture)}),i={};for(o in i)if(Ee(i,o))return this;delete this.events[a];try{delete n[this.expando]}catch(e){n[this.expando]=null}}return this},li.prototype.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return this;for(var o=fo({type:t,target:e},n);(r=e[this.expando])&&this.executeHandlers(o,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!o.isPropagationStopped(););return this},li.prototype.clean=function(e){var t,n;if(!e||3===e.nodeType||8===e.nodeType)return this;if(e[this.expando]&&this.unbind(e),(e=e.getElementsByTagName?e:e.document)&&e.getElementsByTagName)for(this.unbind(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[this.expando]&&this.unbind(e);return this},li.prototype.destroy=function(){this.events={}},li.prototype.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1},li.prototype.executeHandlers=function(e,t){var n=this.events[t],r=n&&n[e.type];if(r)for(var o=0,i=r.length;o<i;o++){var a=r[o];if(a&&!1===a.func.call(a.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return}},li.Event=new li,li);function li(){this.domLoaded=!1,this.events={},this.count=1,this.expando="mce-data-"+(+new Date).toString(32),this.hasMouseEnterLeave="onmouseenter"in document.documentElement,this.hasFocusIn="onfocusin"in document.documentElement,this.count=1}function fi(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}var di,mi,gi,pi,hi,vi,bi,yi,Ci,xi,wi,Si,Ni,Ei,ki,_i,Ai,Ri="sizzle"+-new Date,Di=window.document,Ti=0,Oi=0,Bi=la(),Pi=la(),Li=la(),Ii=function(e,t){return e===t&&(xi=!0),0},Mi="undefined",Fi={}.hasOwnProperty,Ui=[],zi=Ui.pop,Hi=Ui.push,ji=Ui.push,Vi=Ui.slice,qi=Ui.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},$i="[\\x20\\t\\r\\n\\f]",Wi="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",Ki="\\["+$i+"*("+Wi+")(?:"+$i+"*([*^$|!~]?=)"+$i+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+Wi+"))|)"+$i+"*\\]",Xi=":("+Wi+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+Ki+")*)|.*)\\)|)",Yi=new RegExp("^"+$i+"+|((?:^|[^\\\\])(?:\\\\.)*)"+$i+"+$","g"),Gi=new RegExp("^"+$i+"*,"+$i+"*"),Ji=new RegExp("^"+$i+"*([>+~]|"+$i+")"+$i+"*"),Qi=new RegExp("="+$i+"*([^\\]'\"]*?)"+$i+"*\\]","g"),Zi=new RegExp(Xi),ea=new RegExp("^"+Wi+"$"),ta={ID:new RegExp("^#("+Wi+")"),CLASS:new RegExp("^\\.("+Wi+")"),TAG:new RegExp("^("+Wi+"|[*])"),ATTR:new RegExp("^"+Ki),PSEUDO:new RegExp("^"+Xi),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+$i+"*(even|odd|(([+-]|)(\\d*)n|)"+$i+"*(?:([+-]|)"+$i+"*(\\d+)|))"+$i+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+$i+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+$i+"*((?:-\\d)?\\d*)"+$i+"*\\)|)(?=[^-]|$)","i")},na=/^(?:input|select|textarea|button)$/i,ra=/^h\d$/i,oa=/^[^{]+\{\s*\[native \w/,ia=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ua=/'|\\/g,sa=new RegExp("\\\\([\\da-f]{1,6}"+$i+"?|("+$i+")|.)","ig");try{ji.apply(Ui=Vi.call(Di.childNodes),Di.childNodes),Ui[Di.childNodes.length].nodeType}catch(e){ji={apply:Ui.length?function(e,t){Hi.apply(e,Vi.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var ca=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:Di)!==Si&&wi(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Si).nodeType)&&9!==u)return[];if(Ei&&!r){if(o=ia.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&Ai(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return ji.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&di.getElementsByClassName)return ji.apply(n,t.getElementsByClassName(a)),n}if(di.qsa&&(!ki||!ki.test(e))){if(f=l=Ri,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=hi(e),(l=t.getAttribute("id"))?f=l.replace(ua,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+ha(c[s]);d=aa.test(e)&&ga(t.parentNode)||t,m=c.join(",")}if(m)try{return ji.apply(n,d.querySelectorAll(m)),n}catch(e){}finally{l||t.removeAttribute("id")}}}return bi(e.replace(Yi,"$1"),t,n,r)};function la(){var n=[];function r(e,t){return n.push(e+" ")>mi.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function fa(e){return e[Ri]=!0,e}function da(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ma(a){return fa(function(i){return i=+i,fa(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function ga(e){return e&&typeof e.getElementsByTagName!=Mi&&e}function pa(){}function ha(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function va(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Oi++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Ti,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[Ri]||(e[Ri]={}))[u])&&r[0]===Ti&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function ba(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function ya(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Ca(e){return void 0!==e}function xa(e){return"string"==typeof e}function wa(e,t){var n,r=(t=t||Ra).createElement("div"),o=t.createDocumentFragment();for(r.innerHTML=e;n=r.firstChild;)o.appendChild(n);return o}function Sa(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function Na(e,t,n){var r,o;return t=Ya(t)[0],e.each(function(){n&&r===this.parentNode||(r=this.parentNode,o=t.cloneNode(!1),this.parentNode.insertBefore(o,this)),o.appendChild(this)}),e}function Ea(e,t){return new Ya.fn.init(e,t)}function ka(e){return null==e?"":(""+e).replace(ja,"")}function _a(e,t){var n,r,o,i;if(e)if(void 0===(n=e.length)){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e}function Aa(e,n){var r=[];return _a(e,function(e,t){n(t,e)&&r.push(t)}),r}di=ca.support={},pi=ca.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},wi=ca.setDocument=function(e){var t,s=e?e.ownerDocument||e:Di,n=s.defaultView;return s!==Si&&9===s.nodeType&&s.documentElement?(Ni=(Si=s).documentElement,Ei=!pi(s),n&&n!==function(e){try{return e.top}catch(e){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){wi()},!1):n.attachEvent&&n.attachEvent("onunload",function(){wi()})),di.attributes=!0,di.getElementsByTagName=!0,di.getElementsByClassName=oa.test(s.getElementsByClassName),di.getById=!0,mi.find.ID=function(e,t){if(typeof t.getElementById!=Mi&&Ei){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},mi.filter.ID=function(e){var t=e.replace(sa,fi);return function(e){return e.getAttribute("id")===t}},mi.find.TAG=di.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!=Mi)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},mi.find.CLASS=di.getElementsByClassName&&function(e,t){if(Ei)return t.getElementsByClassName(e)},_i=[],ki=[],di.disconnectedMatch=!0,ki=ki.length&&new RegExp(ki.join("|")),_i=_i.length&&new RegExp(_i.join("|")),t=oa.test(Ni.compareDocumentPosition),Ai=t||oa.test(Ni.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Ii=t?function(e,t){return e===t?(xi=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!di.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Di&&Ai(Di,e)?-1:t===s||t.ownerDocument===Di&&Ai(Di,t)?1:Ci?qi.call(Ci,e)-qi.call(Ci,t):0:4&n?-1:1);var n}:function(e,t){if(e===t)return xi=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Ci?qi.call(Ci,e)-qi.call(Ci,t):0;if(o===i)return da(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?da(a[r],u[r]):a[r]===Di?-1:u[r]===Di?1:0},s):Si},ca.matches=function(e,t){return ca(e,null,null,t)},ca.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Si&&wi(e),t=t.replace(Qi,"='$1']"),di.matchesSelector&&Ei&&(!_i||!_i.test(t))&&(!ki||!ki.test(t)))try{var n=(void 0).call(e,t);if(n||di.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ca(t,Si,null,[e]).length},ca.contains=function(e,t){return(e.ownerDocument||e)!==Si&&wi(e),Ai(e,t)},ca.attr=function(e,t){(e.ownerDocument||e)!==Si&&wi(e);var n=mi.attrHandle[t.toLowerCase()],r=n&&Fi.call(mi.attrHandle,t.toLowerCase())?n(e,t,!Ei):void 0;return void 0!==r?r:di.attributes||!Ei?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},ca.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ca.uniqueSort=function(e){var t,n=[],r=0,o=0;if(xi=!di.detectDuplicates,Ci=!di.sortStable&&e.slice(0),e.sort(Ii),xi){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Ci=null,e},gi=ca.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=gi(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=gi(t);return n},(mi=ca.selectors={cacheLength:50,createPseudo:fa,match:ta,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(sa,fi),e[3]=(e[3]||e[4]||e[5]||"").replace(sa,fi),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ca.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ca.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return ta.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&Zi.test(n)&&(t=hi(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(sa,fi).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Bi[e+" "];return t||(t=new RegExp("(^|"+$i+")"+e+"("+$i+"|$)"))&&Bi(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!=Mi&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=ca.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),b="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!=v?"nextSibling":"previousSibling",l=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b;if(l){if(h){for(;c;){for(i=e;i=i[c];)if(b?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[Ri]||(l[Ri]={}))[m]||[])[0]===Ti&&r[1],a=r[0]===Ti&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[Ti,u,a];break}}else if(d&&(r=(e[Ri]||(e[Ri]={}))[m])&&r[0]===Ti)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((b?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[Ri]||(i[Ri]={}))[m]=[Ti,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=mi.pseudos[e]||mi.setFilters[e.toLowerCase()]||ca.error("unsupported pseudo: "+e);return a[Ri]?a(i):1<a.length?(t=[e,e,"",i],mi.setFilters.hasOwnProperty(e.toLowerCase())?fa(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=qi.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:fa(function(e){var r=[],o=[],u=vi(e.replace(Yi,"$1"));return u[Ri]?fa(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),r[0]=null,!o.pop()}}),has:fa(function(t){return function(e){return 0<ca(t,e).length}}),contains:fa(function(t){return t=t.replace(sa,fi),function(e){return-1<(e.textContent||e.innerText||gi(e)).indexOf(t)}}),lang:fa(function(n){return ea.test(n||"")||ca.error("unsupported lang: "+n),n=n.replace(sa,fi).toLowerCase(),function(e){var t;do{if(t=Ei?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===Ni},focus:function(e){return e===Si.activeElement&&(!Si.hasFocus||Si.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!mi.pseudos.empty(e)},header:function(e){return ra.test(e.nodeName)},input:function(e){return na.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ma(function(){return[0]}),last:ma(function(e,t){return[t-1]}),eq:ma(function(e,t,n){return[n<0?n+t:n]}),even:ma(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ma(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ma(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:ma(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=mi.pseudos.eq,Y(["radio","checkbox","file","password","image"],function(e){var t;mi.pseudos[e]=(t=e,function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t})}),Y(["submit","reset"],function(e){var n;mi.pseudos[e]=(n=e,function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n})}),pa.prototype=mi.filters=mi.pseudos,mi.setFilters=new pa,hi=ca.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Pi[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=mi.preFilter;a;){for(i in n&&!(r=Gi.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=Ji.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(Yi," ")}),a=a.slice(n.length)),mi.filter)mi.filter.hasOwnProperty(i)&&(!(r=ta[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length)));if(!n)break}return t?a.length:a?ca.error(e):Pi(e,u).slice(0)},vi=ca.compile=function(e,t){var n,h,v,b,y,r=[],o=[],i=Li[e+" "];if(!i){for(n=(t=t||hi(e)).length;n--;)((i=function e(t){for(var o,n,r,i=t.length,a=mi.relative[t[0].type],u=a||mi.relative[" "],s=a?1:0,c=va(function(e){return e===o},u,!0),l=va(function(e){return-1<qi.call(o,e)},u,!0),f=[function(e,t,n){var r=!a&&(n||t!==yi)||((o=t).nodeType?c:l)(e,t,n);return o=null,r}];s<i;s++)if(n=mi.relative[t[s].type])f=[va(ba(f),n)];else{if((n=mi.filter[t[s].type].apply(null,t[s].matches))[Ri]){for(r=++s;r<i&&!mi.relative[t[r].type];r++);return function e(m,g,p,h,v,t){return h&&!h[Ri]&&(h=e(h)),v&&!v[Ri]&&(v=e(v,t)),fa(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)ca(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:ya(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=ya(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=v?qi.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=ya(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):ji.apply(t,d)})}(1<s&&ba(f),1<s&&ha(t.slice(0,s-1).concat({value:" "===t[s-2].type?"*":""})).replace(Yi,"$1"),n,s<r&&e(t.slice(s,r)),r<i&&e(t=t.slice(r)),r<i&&ha(t))}f.push(n)}return ba(f)}(t[n]))[Ri]?r:o).push(i);(i=Li(e,(h=o,b=0<(v=r).length,y=0<h.length,b?fa(a):a))).selector=e}function a(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=yi,m=e||y&&mi.find.TAG("*",o),g=Ti+=null==d?1:Math.random()||.1,p=m.length;for(o&&(yi=t!==Si&&t);c!==p&&null!=(i=m[c]);c++){if(y&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&&(Ti=g)}b&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,b&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=zi.call(r));f=ya(f)}ji.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&ca.uniqueSort(r)}return o&&(Ti=g,yi=d),l}return i},bi=ca.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&hi(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&di.getById&&9===t.nodeType&&Ei&&mi.relative[i[1].type]){if(!(t=(mi.find.ID(a.matches[0].replace(sa,fi),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=ta.needsContext.test(e)?0:i.length;o--&&(a=i[o],!mi.relative[u=a.type]);)if((s=mi.find[u])&&(r=s(a.matches[0].replace(sa,fi),aa.test(i[0].type)&&ga(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&ha(i)))return ji.apply(n,r),n;break}}return(c||vi(e,l))(r,t,!Ei,n,aa.test(e)&&ga(t.parentNode)||t),n},di.sortStable=Ri.split("").sort(Ii).join("")===Ri,di.detectDuplicates=!!xi,wi(),di.sortDetached=!0;var Ra=document,Da=Array.prototype.push,Ta=Array.prototype.slice,Oa=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,Ba=ci.Event,Pa=Nt.makeMap("children,contents,next,prev"),La=function(e,t,n,r){var o;if(xa(t))t=wa(t,Va(e[0]));else if(t.length&&!t.nodeType){if(t=Ya.makeArray(t),r)for(o=t.length-1;0<=o;o--)La(e,t[o],n,r);else for(o=0;o<t.length;o++)La(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},Ia=Nt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),Ma=Nt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),Fa={for:"htmlFor",class:"className",readonly:"readOnly"},Ua={float:"cssFloat"},za={},Ha={},ja=/^\s*|\s*$/g,Va=function(e){return e?9===e.nodeType?e:e.ownerDocument:Ra};function qa(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof Ya&&(n=n[0]);o&&9!==o.nodeType;){if(void 0!==n){if(o===n)break;if("string"==typeof n&&Ya(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r}function $a(e,t,n,r){var o=[];for(r instanceof Ya&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(void 0!==r){if(e===r)break;if("string"==typeof r&&Ya(e).is(r))break}o.push(e)}return o}function Wa(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null}function Ka(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName)||null;t.attr("data-mce-style",r)}function Xa(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o}Ea.fn=Ea.prototype={constructor:Ea,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return Ya(e).attr(t);o.context=t=document}if(xa(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Oa.exec(e)))return Ya(t).find(e);if(n[1])for(r=wa(e,Va(t)).firstChild;r;)Da.call(o,r),r=r.nextSibling;else{if(!(r=Va(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Nt.toArray(this)},add:function(e,t){var n,r;if(xa(e))return this.add(Ya(e));if(!1!==t)for(n=Ya.unique(this.toArray().concat(Ya.makeArray(e))),this.length=n.length,r=0;r<n.length;r++)this[r]=n[r];else Da.apply(this,Ya.makeArray(e));return this},attr:function(t,n){var e,r=this;if("object"==typeof t)_a(t,function(e,t){r.attr(e,t)});else{if(!Ca(n)){if(r[0]&&1===r[0].nodeType){if((e=za[t])&&e.get)return e.get(r[0],t);if(Ma[t])return r.prop(t)?t:void 0;null===(n=r[0].getAttribute(t,2))&&(n=void 0)}return n}this.each(function(){var e;1===this.nodeType&&((e=za[t])&&e.set?e.set(this,n):null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2))})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=Fa[e]||e))_a(e,function(e,t){n.prop(e,t)});else{if(!Ca(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(t,n){function e(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var o,i,a=this;if("object"==typeof t)_a(t,function(e,t){a.css(e,t)});else if(Ca(n))t=e(t),"number"!=typeof n||Ia[t]||(n=n.toString()+"px"),a.each(function(){var e=this.style;if((i=Ha[t])&&i.set)i.set(this,n);else{try{this.style[Ua[t]||t]=n}catch(e){}null!==n&&""!==n||(e.removeProperty?e.removeProperty(r(t)):e.removeAttribute(t))}});else{if(o=a[0],(i=Ha[t])&&i.get)return i.get(o);if(!o.ownerDocument.defaultView)return o.currentStyle?o.currentStyle[e(t)]:"";try{return o.ownerDocument.defaultView.getComputedStyle(o,null).getPropertyValue(r(t))}catch(e){return}}return a},remove:function(){for(var e,t=this.length;t--;)e=this[t],Ba.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(t){var n;if(Ca(t)){n=this.length;try{for(;n--;)this[n].innerHTML=t}catch(e){Ya(this[n]).empty().append(t)}return this}return this[0]?this[0].innerHTML:""},text:function(e){var t;if(Ca(e)){for(t=this.length;t--;)"innerText"in this[t]?this[t].innerText=e:this[0].textContent=e;return this}return this[0]?this[0].innerText||this[0].textContent:""},append:function(){return La(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return La(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?La(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?La(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return Ya(e).append(this),this},prependTo:function(e){return Ya(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return Na(this,e)},wrapAll:function(e){return Na(this,e,!0)},wrapInner:function(e){return this.each(function(){Ya(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){Ya(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),Ya(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?_a(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r=Sa(t,o);r!==i&&(n=t.className,r?t.className=ka((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return Sa(this[0],e)},each:function(e){return _a(this,e)},on:function(e,t){return this.each(function(){Ba.bind(this,e,t)})},off:function(e,t){return this.each(function(){Ba.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?Ba.fire(this,e.type,e):Ba.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return Ya(Ta.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){for(var t=[],n=0,r=this.length;n<r;n++)Ya.find(e,this[n],t);return Ya(t)},filter:function(n){return Ya("function"==typeof n?Aa(this.toArray(),function(e,t){return n(t,e)}):Ya.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof Ya&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&Ya(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),Ya(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Da,sort:Array.prototype.sort,splice:Array.prototype.splice},Nt.extend(Ea,{extend:Nt.extend,makeArray:function(e){return e&&e===e.window||e.nodeType?[e]:Nt.toArray(e)},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Nt.isArray,each:_a,trim:ka,grep:Aa,find:ca,expr:ca.selectors,unique:ca.uniqueSort,text:ca.getText,contains:ca.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return 1===t.length?Ya.find.matchesSelector(t[0],e)?[t[0]]:[]:Ya.find.matches(e,t)}}),_a({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return qa(e,"parentNode")},next:function(e){return Wa(e,"nextSibling",1)},prev:function(e){return Wa(e,"previousSibling",1)},children:function(e){return $a(e.firstChild,"nextSibling",1)},contents:function(e){return Nt.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(r,o){Ea.fn[r]=function(t){var n=[];this.each(function(){var e=o.call(n,this,t,n);e&&(Ya.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(Pa[r]||(n=Ya.unique(n)),0===r.indexOf("parents")&&(n=n.reverse()));var e=Ya(n);return t?e.filter(t):e}}),_a({parentsUntil:function(e,t){return qa(e,"parentNode",t)},nextUntil:function(e,t){return $a(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return $a(e,"previousSibling",1,t).slice(1)}},function(o,i){Ea.fn[o]=function(t,e){var n=[];this.each(function(){var e=i.call(n,this,t,n);e&&(Ya.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=Ya.unique(n),0!==o.indexOf("parents")&&"prevUntil"!==o||(n=n.reverse()));var r=Ya(n);return e?r.filter(e):r}}),Ea.fn.is=function(e){return!!e&&0<this.filter(e).length},Ea.fn.init.prototype=Ea.fn,Ea.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t=t||r.context,new o.fn.init(e,t)};return Ya.extend(o,this),o},Ea.attrHooks=za,Ea.cssHooks=Ha;var Ya=Ea,Ga=Nt.each,Ja=Nt.grep,Qa=xt.ie,Za=/^([a-z0-9],?)+$/i,eu=function(a,u){function s(e){return e&&a&&X(e)?a.getElementById(e):e}function c(e){return H("string"==typeof e?s(e):e)}function r(e,t,n){var r,o,i=c(e);return void 0===(o=i.length?(r=W[t])&&r.get?r.get(i,t):i.attr(t):o)?n||"":o}function o(e){var t=s(e);return t?t.attributes:[]}function i(e,t,n){""===n&&(n=null);var r,o=c(e),i=o.attr(t);o.length&&((r=W[t])&&r.set?r.set(o,n,t):o.attr(t,n),i!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:o,attrName:t,attrValue:n}))}function l(){return u.root_element||a.body}function f(e,t){return function(e,t,n){var r,o=0,i=0,a=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===wn(Et.fromDom(e),"position")){var u=t.getBoundingClientRect();return{x:o=u.left+(a.documentElement.scrollLeft||e.scrollLeft)-a.documentElement.clientLeft,y:i=u.top+(a.documentElement.scrollTop||e.scrollTop)-a.documentElement.clientTop}}for(var s=t;s&&s!==n&&s.nodeType&&!kn(s,n);){var c=s;o+=c.offsetLeft||0,i+=c.offsetTop||0,s=c.offsetParent}for(s=t.parentNode;s&&s!==n&&s.nodeType&&!kn(s,n);)o-=s.scrollLeft||0,i-=s.scrollTop||0,s=s.parentNode;i+=(r=Et.fromDom(t),er.isFirefox()&&"table"===kt(r)?En(Tn(r)).filter(function(e){return"caption"===kt(e)}).bind(function(o){return En(It(o)).map(function(e){var t=e.dom.offsetTop,n=o.dom.offsetTop,r=o.dom.offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:o,y:i}}(a.body,s(e),t)}function d(e,t,n){var r=c(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=xt.browser.isIE()?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:void 0)}function m(e){var t=d(e=s(e),"width"),n=d(e,"height");return-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}}function g(e,t){if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(Za.test(t)){for(var n=t.toLowerCase().split(/,/),r=e.nodeName.toLowerCase(),o=n.length-1;0<=o;o--)if(n[o]===r)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<ca(t,i[0].ownerDocument||i[0],null,i).length}function p(e,t,n,r){var o,i=[],a=s(e);for(r=void 0===r,n=n||("BODY"!==l().nodeName?l().parentNode:null),Nt.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return g(e,o)});a&&!(a===n||K(a.nodeType)||$n(a)||Wn(a));){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null}function n(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return g(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null}function h(e,n,r){var o,t="string"==typeof e?s(e):e;return!!t&&(Nt.isArray(t)&&(t.length||0===t.length)?(o=[],Ga(t,function(e,t){e&&o.push(n.call(r,"string"==typeof e?s(e):e,t))}),o):n.call(r||this,t))}function v(e,t){c(e).each(function(e,n){Ga(t,function(e,t){i(n,t,e)})})}function b(e,n){var t=c(e);Qa?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+n,t.removeChild(t.firstChild)}catch(e){Ya("<div></div>").html("<br>"+n).contents().slice(1).appendTo(t)}return n}}):t.html(n)}function y(e,n,r,o,i){return h(e,function(e){var t="string"==typeof n?a.createElement(n):n;return v(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&b(t,o)),i?t:e.appendChild(t)})}function C(e,t,n){return y(a.createElement(e),e,t,n,!0)}function x(e,t){var n=c(e);return(t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}):n).remove(),1<n.length?n.toArray():n[0]}function w(e,t,n){c(e).toggleClass(t,n).each(function(){""===this.className&&Ya(this).attr("class",null)})}function S(t,e,n){return h(e,function(e){return Nt.is(e,"array")&&(t=t.cloneNode(!0)),n&&Ga(Ja(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})}function N(e){if(Hn(e)){var t="a"===e.nodeName.toLowerCase()&&!r(e,"href")&&r(e,"id");return r(e,"name")||r(e,"data-mce-bookmark")||t?1:void 0}}function E(){return a.createRange()}function k(e){if(e&&Hn(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null}void 0===u&&(u={});var _,A,R,D,e,t,T={},O=window,B={},P=0,L=Rr.forElement(Et.fromDom(a),{contentCssCors:u.contentCssCors,referrerPolicy:u.referrerPolicy}),I=[],M=u.schema||oo({}),F=ao({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),U=u.ownEvents?new ci:ci.Event,z=M.getBlockElements(),H=Ya.overrideDefaults(function(){return{context:a,element:$.getRoot()}}),j=Zo.encodeAllRaw,V=function(e,t,n,r){if(Nt.isArray(e)){for(var o=e.length,i=[];o--;)i[o]=V(e[o],t,n,r);return i}return!u.collect||e!==a&&e!==O||I.push([e,t,n,r]),U.bind(e,t,n,r||$)},q=function(e,t,n){if(Nt.isArray(e)){for(var r=e.length,o=[];r--;)o[r]=q(e[r],t,n);return o}if(0<I.length&&(e===a||e===O))for(r=I.length;r--;){var i=I[r];e!==i[0]||t&&t!==i[1]||n&&n!==i[2]||U.unbind(i[0],i[1],i[2])}return U.unbind(e,t,n)},$={doc:a,settings:u,win:O,files:B,stdMode:!0,boxModel:!0,styleSheetLoader:L,boundEvents:I,styles:F,schema:M,events:U,isBlock:function(e){if("string"==typeof e)return!!z[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!z[e.nodeName])}return!1},$:H,$$:c,root:null,clone:function(t,e){if(!Qa||1!==t.nodeType||e)return t.cloneNode(e);var n=a.createElement(t.nodeName);return Ga(o(t),function(e){i(n,e.nodeName,r(t,e.nodeName))}),n},getRoot:l,getViewPort:function(e){var t=tn(e);return{x:t.x,y:t.y,w:t.width,h:t.height}},getRect:function(e){var t=f(e=s(e)),n=m(e);return{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:m,getParent:function(e,t,n){var r=p(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:p,get:s,getNext:function(e,t){return n(e,t,"nextSibling")},getPrev:function(e,t){return n(e,t,"previousSibling")},select:function(e,t){return ca(e,s(t)||u.root_element||a,[])},is:g,add:y,create:C,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)se(t,r)&&(o+=" "+r+'="'+j(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(r.appendChild(n),e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r.removeChild(n),r},remove:x,setStyle:function(e,t,n){var r=X(t)?c(e).css(t,n):c(e).css(t);u.update_styles&&Ka(F,r)},getStyle:d,setStyles:function(e,t){var n=c(e).css(t);u.update_styles&&Ka(F,n)},removeAllAttribs:function(e){return h(e,function(e){for(var t=e.attributes,n=t.length-1;0<=n;n--)e.removeAttributeNode(t.item(n))})},setAttrib:i,setAttribs:v,getAttrib:r,getPos:f,parseStyle:function(e){return F.parse(e)},serializeStyle:function(e,t){return F.serialize(e,t)},addStyle:function(e){var t,n;if($!==eu.DOM&&a===document){if(T[e])return;T[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){Y((e=e||"").split(","),function(e){B[e]=!0,L.load(e,te)})},addClass:function(e,t){c(e).addClass(t)},removeClass:function(e,t){w(e,t,!1)},hasClass:function(e,t){return c(e).hasClass(t)},toggleClass:w,show:function(e){c(e).show()},hide:function(e){c(e).hide()},isHidden:function(e){return"none"===c(e).css("display")},uniqueId:function(e){return(e||"mce_")+P++},setHTML:b,getOuterHTML:function(e){var t="string"==typeof e?s(e):e;return Hn(t)?t.outerHTML:Ya("<div></div>").append(Ya(t).clone()).html()},setOuterHTML:function(e,t){c(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}x(Ya(this).html(t),!0)})},decode:Zo.decode,encode:j,insertAfter:function(e,t){var r=s(t);return h(e,function(e){var t=r.parentNode,n=r.nextSibling;return n?t.insertBefore(e,n):t.appendChild(e),e})},replace:S,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=C(e),Ga(o(t),function(e){i(n,e.nodeName,r(t,e.nodeName))}),S(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return F.toHex(Nt.trim(e))},run:h,getAttribs:o,isEmpty:function(e,t){var n,r,o=0;if(N(e))return!1;if(e=e.firstChild){var i=new Dr(e,e.parentNode),a=M?M.getWhiteSpaceElements():{};t=t||(M?M.getNonEmptyElements():null);do{if(n=e.nodeType,Hn(e)){var u=e.getAttribute("data-mce-bogus");if(u){e=i.next("all"===u);continue}if(r=e.nodeName.toLowerCase(),t&&t[r]){if("br"!==r)return!1;o++,e=i.next();continue}if(N(e))return!1}if(8===n)return!1;if(3===n&&!$r(e.nodeValue))return!1;if(3===n&&e.parentNode&&a[e.parentNode.nodeName]&&$r(e.nodeValue))return!1;e=i.next()}while(e)}return o<=1},createRng:E,nodeIndex:Xa,split:function(e,t,n){var r,o,i,a=E();if(e&&t)return a.setStart(e.parentNode,Xa(e)),a.setEnd(t.parentNode,Xa(t)),r=a.extractContents(),(a=E()).setStart(t.parentNode,Xa(t)+1),a.setEnd(e.parentNode,Xa(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Vo($,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Vo($,o),e),x(e),n||t},bind:V,unbind:q,fire:function(e,t,n){return U.fire(e,t,n)},getContentEditable:k,getContentEditableParent:function(e){for(var t=l(),n=null;e&&e!==t&&null===(n=k(e));e=e.parentNode);return n},destroy:function(){if(0<I.length)for(var e=I.length;e--;){var t=I[e];U.unbind(t[0],t[1],t[2])}ne(B,function(e,t){L.unload(t),delete B[t]}),ca.setDocument&&ca.setDocument()},isChildOf:function(e,t){if(Qa){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}return e===t||t.contains(e)},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}},W=(_=F,R=J($),e={set:function(e,t,n){A.url_converter&&null!==t&&(t=A.url_converter.call(A.url_converter_scope||R(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},t={style:{set:function(e,t){null===t||"object"!=typeof t?(D&&e.attr("data-mce-style",t),null!==t&&"string"==typeof t?(e.removeAttr("style"),e.css(_.parse(t))):e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return _.serialize(_.parse(t),e[0].nodeName)}}},(D=(A=u).keep_values)&&(t.href=t.src=e),t);return $};eu.DOM=eu(document),eu.nodeIndex=Xa;var tu=eu.DOM,nu=Nt.each,ru=Nt.grep,ou=(iu.prototype._setReferrerPolicy=function(e){this.settings.referrerPolicy=e},iu.prototype.loadScript=function(e,t,n){function r(){o.remove(i),a&&(a.onerror=a.onload=a=null)}var o=tu,i=o.uniqueId(),a=document.createElement("script");a.id=i,a.type="text/javascript",a.src=Nt._addCacheSuffix(e),this.settings.referrerPolicy&&o.setAttrib(a,"referrerpolicy",this.settings.referrerPolicy),a.onload=function(){r(),t()},a.onerror=function(){r(),y(n)?n():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+e)},(document.getElementsByTagName("head")[0]||document.body).appendChild(a)},iu.prototype.isDone=function(e){return 2===this.states[e]},iu.prototype.markDone=function(e){this.states[e]=2},iu.prototype.add=function(e,t,n,r){var o=this.states[e];this.queue.push(e),void 0===o&&(this.states[e]=0),t&&(this.scriptLoadedCallbacks[e]||(this.scriptLoadedCallbacks[e]=[]),this.scriptLoadedCallbacks[e].push({success:t,failure:r,scope:n||this}))},iu.prototype.load=function(e,t,n,r){return this.add(e,t,n,r)},iu.prototype.remove=function(e){delete this.states[e],delete this.scriptLoadedCallbacks[e]},iu.prototype.loadQueue=function(e,t,n){this.loadScripts(this.queue,e,t,n)},iu.prototype.loadScripts=function(n,e,t,r){function o(t,e){nu(i.scriptLoadedCallbacks[e],function(e){y(e[t])&&e[t].call(e.scope)}),i.scriptLoadedCallbacks[e]=void 0}var i=this,a=[];i.queueLoadedCallbacks.push({success:e,failure:r,scope:t||this});var u=function(){var e,t=ru(n);n.length=0,nu(t,function(e){2!==i.states[e]?3!==i.states[e]?1!==i.states[e]&&(i.states[e]=1,i.loading++,i.loadScript(e,function(){i.states[e]=2,i.loading--,o("success",e),u()},function(){i.states[e]=3,i.loading--,a.push(e),o("failure",e),u()})):o("failure",e):o("success",e)}),i.loading||(e=i.queueLoadedCallbacks.slice(0),i.queueLoadedCallbacks.length=0,nu(e,function(e){0===a.length?y(e.success)&&e.success.call(e.scope):y(e.failure)&&e.failure.call(e.scope,a)}))};u()},iu.ScriptLoader=new iu,iu);function iu(e){void 0===e&&(e={}),this.states={},this.queue=[],this.scriptLoadedCallbacks={},this.queueLoadedCallbacks=[],this.loading=0,this.settings=e}function au(e){var t=e;return{get:function(){return t},set:function(e){t=e}}}function uu(){return ue(su,cu.get())}var su={},cu=au("en"),lu={getData:function(){return re(su,function(e){return _e({},e)})},setCode:function(e){e&&cu.set(e)},getCode:function(){return cu.get()},add:function(e,t){var n=su[e];n||(su[e]=n={}),ne(t,function(e,t){n[t.toLowerCase()]=e})},translate:function(e){function n(e){return y(e)?Object.prototype.toString.call(e):u(e)?"":""+e}function t(e){var t=n(e);return ue(a,t.toLowerCase()).map(n).getOr(t)}function r(e){return e.replace(/{context:\w+}$/,"")}var o,i,a=uu().getOr({}),u=function(e){return""===e||null==e};if(u(e))return"";if(h(o=e)&&Ee(o,"raw"))return n(e.raw);if(S(i=e)&&1<i.length){var s=e.slice(1);return r(t(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Ee(s,t)?n(s[t]):e}))}return r(t(e))},isRtl:function(){return uu().bind(function(e){return ue(e,"_dir")}).exists(function(e){return"rtl"===e})},hasCode:function(e){return Ee(su,e)}},fu=function(){function u(t,n){Y(U(r,function(e){return e.name===t&&e.state===n}),function(e){return e.callback()})}function s(e){var t;return(f[e]?f[e].dependencies:t)||[]}function c(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}}function e(e,t,n){void 0===n&&(n="added"),Ee(f,e)&&"added"===n||Ee(l,e)&&"loaded"===n?t():r.push({name:e,state:n,callback:t})}var o=[],l={},f={},r=[],d=function(r,o,i,a,e){var t,n;l[r]||(0!==(t="string"==typeof o?o:o.prefix+o.resource+o.suffix).indexOf("/")&&-1===t.indexOf("://")&&(t=fu.baseURL+"/"+t),l[r]=t.substring(0,t.lastIndexOf("/")),n=function(){var n,e,t;u(r,"loaded"),n=o,e=i,t=a,Y(s(r),function(e){var t=c(n,e);d(t.resource,t,void 0,void 0)}),e&&(t?e.call(t):e.call(ou))},f[r]?n():ou.ScriptLoader.add(t,n,a,e))};return{items:o,urls:l,lookup:f,_listeners:r,get:function(e){if(f[e])return f[e].instance},dependencies:s,requireLangPack:function(t,n){!1!==fu.languageLoad&&e(t,function(){var e=lu.getCode();!e||n&&-1===(","+(n||"")+",").indexOf(","+e+",")||ou.ScriptLoader.add(l[t]+"/langs/"+e+".js")},"loaded")},add:function(e,t,n){var r=t;return o.push(r),f[e]={instance:r,dependencies:n},u(e,"added"),r},remove:function(e){delete l[e],delete f[e]},createUrl:c,addComponents:function(e,t){var n=l[e];Y(t,function(e){ou.ScriptLoader.add(n+"/"+e)})},load:d,waitFor:e}};function du(){var e,t,n=(e=te,t=au(ve.none()),{clear:function(){r(),t.set(ve.none())},isSet:function(){return t.get().isSome()},get:function(){return t.get()},set:function(e){r(),t.set(ve.some(e))}});function r(){return t.get().each(e)}return _e(_e({},n),{on:function(e){return n.get().each(e)}})}function mu(n,r){var o=null;return{cancel:function(){l(o)||(clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];l(o)&&(o=setTimeout(function(){o=null,n.apply(null,e)},r))}}}function gu(n,r){function o(){l(i)||(clearTimeout(i),i=null)}var i=null;return{cancel:o,throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o(),i=setTimeout(function(){i=null,n.apply(null,e)},r)}}}function pu(e,t){var n=vn(e,t);return void 0===n||""===n?[]:n.split(" ")}function hu(e){return void 0!==e.dom.classList}function vu(e,t){var n,r,o;hu(e)?e.dom.classList.add(t):(r=t,o=pu(n=e,"class").concat([r]),pn(n,"class",o.join(" ")))}function bu(e,t){return hu(e)&&e.dom.classList.contains(t)}function yu(e,t){return He(n=void 0===e?document:e.dom)?[]:A(n.querySelectorAll(t),Et.fromDom);var n}function Cu(r,e){function t(e,t){return yn(e,t)?ve.some(vn(e,t)):ve.none()}var n=r.selection.getRng(),o=Et.fromDom(n.startContainer),i=Et.fromDom(r.getBody()),a=e.fold(function(){return"."+$u()},function(e){return"["+Wu()+'="'+e+'"]'});return yr(Mt(o,n.startOffset).getOr(o),a,function(e){return je(e,i)}).bind(function(e){return t(e,""+Ku()).bind(function(n){return t(e,""+Wu()).map(function(e){var t=Xu(r,n);return{uid:n,name:e,elements:t}})})})}function xu(t){function o(){return{listeners:[],previous:du()}}function c(e,t){n(e,function(e){return t(e),e})}function n(e,t){var n=i.get(),r=t(ue(n,e).getOrThunk(o));n[e]=r,i.set(n)}var i=au({}),e=gu(function(){var e=i.get();Y(W(we(e)),function(e){n(e,function(u){var s=u.previous.get();return Cu(t,ve.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){Y(e.listeners,function(e){return e(!1,t)})}),u.previous.clear())},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;fn(s,o)||(n=o,r=a,c(t=i,function(e){Y(e.listeners,function(e){return e(!0,t,{uid:n,nodes:A(r,function(e){return e.dom})})})}),u.previous.set(o))}),{previous:u.previous,listeners:u.listeners}})})},30);return t.on("remove",function(){e.cancel()}),t.on("NodeChange",function(){e.throttle()}),{addListener:function(e,t){n(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}}function wu(e){var t=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++Yu+String(t)}function Su(e,t){var n,r,o=Rt(e).dom,i=Et.fromDom(o.createDocumentFragment());Kt(i,(n=t,(r=(o||document).createElement("div")).innerHTML=n,Tn(Et.fromDom(r)))),Xt(e),Ln(e,i)}function Nu(e,t){return Et.fromDom(e.dom.cloneNode(t))}function Eu(e){return Nu(e,!1)}function ku(e){return Nu(e,!0)}function _u(e,t,n){function r(e){for(var t;(t=o[e]())&&!Vn(t)&&!n(t););return ve.from(t).filter(Vn)}void 0===n&&(n=D);var o=new Dr(e,t);return{current:function(){return ve.from(o.current()).filter(Vn)},next:function(){return r("next")},prev:function(){return r("prev")},prev2:function(){return r("prev2")}}}function Au(t,e){var i=e||function(e){return t.isBlock(e)||Kn(e)||Gn(e)},a=function(e,t,n,r){if(Vn(e)){var o=r(e,t,e.data);if(-1!==o)return ve.some({container:e,offset:o})}return n().bind(function(e){return a(e.container,e.offset,n,r)})};return{backwards:function(e,t,n,r){var o=_u(e,r,i);return a(e,t,function(){return o.prev().map(function(e){return{container:e,offset:e.length}})},n).getOrNull()},forwards:function(e,t,n,r){var o=_u(e,r,i);return a(e,t,function(){return o.next().map(function(e){return{container:e,offset:0}})},n).getOrNull()}}}function Ru(e){return e?{left:Gu(e.left),top:Gu(e.top),bottom:Gu(e.bottom),right:Gu(e.right),width:Gu(e.width),height:Gu(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function Du(e,t){return e=Ru(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e}function Tu(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2}function Ou(e,t){var n=Math.min(t.height/2,e.height/2);return e.bottom-n<t.top||!(e.top>t.bottom)&&Tu(t.top-e.bottom,e,t)}function Bu(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Tu(t.bottom-e.top,e,t)}function Pu(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}function Lu(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null}function Iu(e,t){if(Hn(e)&&e.hasChildNodes()){var n=e.childNodes;return n[r=n.length-1,Math.min(Math.max(t,0),r)]}return e;var r}function Mu(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&Ju.test(e)}function Fu(e){return"createRange"in e?e.createRange():eu.DOM.createRng()}function Uu(e){return e&&/[\r\n\t ]/.test(e)}function zu(e){return e.setStart&&e.setEnd}function Hu(e){var t=e.startContainer,n=e.startOffset;if(Uu(e.toString())&&rs(t.parentNode)&&Vn(t)){var r=t.data;return Uu(r[n-1])||Uu(r[n+1])?1:void 0}}function ju(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom}function Vu(e,t){var n=Du(e,t);return n.width=1,n.right=n.left+1,n}fu.languageLoad=!0,fu.baseURL="",fu.PluginManager=fu(),fu.ThemeManager=fu();var qu=function(e,t){var n=[];return Y(Tn(e),function(e){n=(n=t(e)?n.concat([e]):n).concat(qu(e,t))}),n},$u=J("mce-annotation"),Wu=J("data-mce-annotation"),Ku=J("data-mce-annotation-uid"),Xu=function(e,t){return yu(Et.fromDom(e.getBody()),"["+Ku()+'="'+t+'"]')},Yu=0,Gu=Math.round,Ju=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),Qu=Hn,Zu=Vr,es=an("display","block table"),ts=an("float","left right"),ns=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}}(Qu,Zu,s(ts)),rs=s(an("white-space","pre pre-line pre-wrap")),os=Vn,is=Kn,as=eu.nodeIndex,us=function(e,t){if(!(t<0&&Hn(e)&&e.hasChildNodes()))return Iu(e,t)},ss=function(e){var t=e.getClientRects(),n=0<t.length?Ru(t[0]):Ru(e.getBoundingClientRect());return!zu(e)&&is(e)&&ju(n)?function(e){var t=e.ownerDocument,n=Fu(t),r=t.createTextNode(wo),o=e.parentNode;o.insertBefore(r,e),n.setStart(r,0),n.setEnd(r,1);var i=Ru(n.getBoundingClientRect());return o.removeChild(r),i}(e):ju(n)&&zu(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Vn(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),ss(i)}return null}(e):n},cs=function(t,n,e){function r(){return e=e||function(e){function r(e){var t;0!==e.height&&(0<o.length&&(t=o[o.length-1],e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right)||o.push(e))}function t(e,t){var n=Fu(e.ownerDocument);if(t<e.data.length){if(Mu(e.data[t]))return o;if(Mu(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!Hu(n)))return r(Vu(ss(n),!1)),o}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),Hu(n)||r(Vu(ss(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),Hu(n)||r(Vu(ss(n),!0)))}var o=[],n=e.container(),i=e.offset();if(os(n))return t(n,i),o;if(Qu(n))if(e.isAtEnd()){var a=us(n,i);os(a)&&t(a,a.data.length),ns(a)&&!is(a)&&r(Vu(ss(a),!1))}else{if(a=us(n,i),os(a)&&t(a,0),ns(a)&&e.isAtEnd())return r(Vu(ss(a),!1)),o;var u=us(e.container(),e.offset()-1);ns(u)&&!is(u)&&(!es(u)&&!es(a)&&ns(a)||r(Vu(ss(u),!1))),ns(a)&&r(Vu(ss(a),!0))}return o}(cs(t,n))}return{container:J(t),offset:J(n),toRange:function(){var e=Fu(t.ownerDocument);return e.setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return os(t),0===n},isAtEnd:function(){return os(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return us(t,e?n-1:n)}}};function ls(e,t){Vn(t)&&0===t.data.length&&e.remove(t)}function fs(e,t,n){var r,o,i,a,u,s,c;Wn(n)?(i=e,a=t,s=ve.from((u=n).firstChild),c=ve.from(u.lastChild),a.insertNode(u),s.each(function(e){return ls(i,e.previousSibling)}),c.each(function(e){return ls(i,e.nextSibling)})):(r=e,t.insertNode(o=n),ls(r,o.previousSibling),ls(r,o.nextSibling))}function ds(t){return function(e){return t===e}}function ms(e){var t,r,n,o;return(lc(e)?"text()":e.nodeName.toLowerCase())+"["+(r=gc(mc(t=e)),n=ge(r,ds(t),t),o=me(r=r.slice(0,n+1),function(e,t,n){return lc(t)&&lc(r[n-1])&&e++,e},0),ge(r=fe(r,on([t.nodeName])),ds(t),t)-o)+"]"}function gs(e,t){var n,r,o,i=[],a=t.container(),u=t.offset();return lc(a)?n=function(e,t){for(;(e=e.previousSibling)&&lc(e);)t+=e.data.length;return t}(a,u):(u>=(r=a.childNodes).length?(n="after",u=r.length-1):n="before",a=r[u]),i.push(ms(a)),o=fe(function(e,t){var n=[];for(t=t.parentNode;t!==e;t=t.parentNode)n.push(t);return n}(e,a),s(sn)),(i=i.concat(le(o,ms))).reverse().join("/")+","+n}function ps(e,t){if(!t)return null;var n=t.split(","),r=n[0].split("/"),o=1<n.length?n[1]:"before",i=me(r,function(e,t){var n,r,o,i,a=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t);return a?("text()"===a[1]&&(a[1]="#text"),n=e,r=a[1],o=parseInt(a[2],10),i=fe(i=gc(n),function(e,t){return!lc(e)||!lc(i[t-1])}),(i=fe(i,on([r])))[o]):null},e);return i?lc(i)?function(e,t){for(var n,r=e,o=0;lc(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!lc(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return lc(e)&&t>e.data.length&&(t=e.data.length),cs(e,t)}(i,parseInt(o,10)):(o="after"===o?dc(i)+1:dc(i),cs(i.parentNode,o)):null}function hs(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Vn(a)?s.push(n?function(e,t,n){for(var r=e(t.data.slice(0,n)).length,o=t.previousSibling;o&&Vn(o);o=o.previousSibling)r+=e(o.data).length;return r}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s}function vs(e,t,n){var r=0;return Nt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r}function bs(e,t){var n,r=t?"start":"end",o=e[r+"Container"],i=e[r+"Offset"];Hn(o)&&"TR"===o.nodeName&&(o=(n=o.childNodes)[Math.min(t?i:i-1,n.length-1)])&&(i=t?0:o.childNodes.length,e["set"+(t?"Start":"End")](o,i))}function ys(e){return bs(e,!0),bs(e,!1),e}function Cs(e,t){var n;return Hn(e)&&(e=Iu(e,t),pc(e))?e:Mr(e)?(n=(e=Vn(e)&&Lr(e)?e.parentNode:e).previousSibling,pc(n)?n:(n=e.nextSibling,pc(n)?n:void 0)):void 0}function xs(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(pc(r)||"IMG"===o)return{name:o,index:vs(n.dom,o,r)};var a,u,s,c,l,f,d,m=Cs((a=i).startContainer,a.startOffset)||Cs(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:vs(n.dom,o,m)}:(f=(s=n).dom,(d={}).start=hs(f,u=e,c=t,l=i,!0),s.isCollapsed()||(d.end=hs(f,u,c,l,!1)),jr(l)&&(d.isFakeCaret=!0),d)}function ws(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)}function Ss(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:vs(n,u,a)};var s=ys(r.cloneRange());return i||(s.collapse(!1),fs(n,s,ws(n,o+"_end",t))),(r=ys(r)).collapse(!0),fs(n,r,ws(n,o+"_start",t)),e.moveToBookmark({id:o,keep:!0}),{id:o}}function Ns(e,t,n){var r=e.getParam(t,n);return-1===r.indexOf("=")?r:ue(e.getParam(t,"","hash"),e.id).getOr(n)}function Es(e){return e.getParam("content_security_policy","")}function ks(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":!0===t?"p":t}function _s(e){return e.getParam("forced_root_block_attrs",{})}function As(e){return e.getParam("automatic_uploads",!0,"boolean")}function Rs(e){return e.getParam("icons","","string")}function Ds(e){return e.getParam("referrer_policy","","string")}function Ts(e){return e.getParam("language","en","string")}function Os(e){return e.getParam("indent_use_margin",!1)}function Bs(e){var t=e.getParam("font_css",[]);return S(t)?t:A(t.split(","),Je)}function Ps(e){var t=e.getParam("object_resizing");return!1!==t&&!xt.iOS&&(X(t)?t:"table,img,figure.image,div,video,iframe")}function Ls(e){return e.getParam("event_root")}function Is(e){return e.getParam("theme")}function Ms(e){return!1!==e.getParam("inline_boundaries")}function Fs(e){return e.getParam("plugins","","string")}function Us(e){var t=e.parentNode;t&&t.removeChild(e)}function zs(e){var t=Eo(e);return{count:e.length-t.length,text:t}}function Hs(e){for(var t;-1!==(t=e.data.lastIndexOf(So));)e.deleteData(t,1)}function js(e,t){return Cc(e),t}function Vs(e,t){var n,r=t.container(),o=(-1===(n=_(xe(r.childNodes),e))?ve.none():ve.some(n)).map(function(e){return e<t.offset()?cs(r,t.offset()-1):t}).getOr(t);return Cc(e),o}function qs(e,t){return cs.isTextPosition(t)?(r=t,yc(n=e)&&r.container()===n?(a=zs((o=n).data.substr(0,(i=r).offset())),u=zs(o.data.substr(i.offset())),0<(a.text+u.text).length?(Hs(o),cs(o,i.offset()-a.count)):i):js(n,r)):(s=e,((c=t).container()===s.parentNode?Vs:js)(s,c));var n,r,o,i,a,u,s,c}function $s(e,t,n){var r,o,i,a=Du(t.getBoundingClientRect(),n),u="BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,e.scrollTop||r.scrollTop):(i=e.getBoundingClientRect(),o=e.scrollLeft-i.left,e.scrollTop-i.top);a.left+=o,a.right+=o,a.top+=u,a.bottom+=u,a.width=1;var s=t.offsetWidth-t.clientWidth;return 0<s&&(n&&(s*=-1),a.left+=s,a.right+=s),a}function Ws(e,i,a,u){function s(){!function(){for(var e=yu(Et.fromDom(i),"*[contentEditable=false],video,audio,embed,object"),t=0;t<e.length;t++){var n,r=e[t].dom,o=r.previousSibling;Ro(o)&&(1===(n=o.data).length?o.parentNode.removeChild(o):o.deleteData(n.length-1,1)),o=r.nextSibling,Ao(o)&&(1===(n=o.data).length?o.parentNode.removeChild(o):o.deleteData(0,1))}}(),l&&(Cc(l),l=null),f.on(function(e){Ya(e.caret).remove(),f.clear()}),c&&(Ar.clearInterval(c),c=void 0)}var c,l,f=du(),t=ks(e),d=0<t.length?t:"p";return{show:function(e,t){var n;if(s(),Nc(t))return null;if(!a(t))return l=function(e,t){var n=e.ownerDocument.createTextNode(So),r=e.parentNode;if(t){if(o=e.previousSibling,_o(o)){if(Mr(o))return o;if(Ro(o))return o.splitText(o.data.length-1)}r.insertBefore(n,e)}else{var o=e.nextSibling;if(_o(o)){if(Mr(o))return o;if(Ao(o))return o.splitText(1),o}e.nextSibling?r.insertBefore(n,e.nextSibling):r.appendChild(n)}return n}(t,e),n=t.ownerDocument.createRange(),Ec(l.nextSibling)?(n.setStart(l,0),n.setEnd(l,0)):(n.setStart(l,1),n.setEnd(l,1)),n;l=function(e,t,n){var r,o=t.ownerDocument.createElement(e);o.setAttribute("data-mce-caret",n?"before":"after"),o.setAttribute("data-mce-bogus","all"),o.appendChild(((r=document.createElement("br")).setAttribute("data-mce-bogus","1"),r));var i=t.parentNode;return n?i.insertBefore(o,t):t.nextSibling?i.insertBefore(o,t.nextSibling):i.appendChild(o),o}(d,t,e);var r=$s(i,t,e);Ya(l).css("top",r.top);var o=Ya('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(_e({},r)).appendTo(i)[0];return f.set({caret:o,element:t,before:e}),e&&Ya(o).addClass("mce-visual-caret-before"),c=Ar.setInterval(function(){u()?Ya("div.mce-visual-caret",i).toggleClass("mce-visual-caret-hidden"):Ya("div.mce-visual-caret",i).addClass("mce-visual-caret-hidden")},500),(n=t.ownerDocument.createRange()).setStart(l,0),n.setEnd(l,0),n},hide:s,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){f.on(function(e){var t=$s(i,e.element,e.before);Ya(e.caret).css(_e({},t))})},destroy:function(){return Ar.clearInterval(c)}}}function Ks(){return xc.isIE()||xc.isEdge()||xc.isFirefox()}function Xs(e){return Ec(e)||cn(e)&&Ks()}function Ys(e,t){for(var n;n=e(t);)if(!Dc(n))return n;return null}function Gs(e,t,n,r,o){var i=new Dr(e,r),a=kc(e)||Dc(e);if(t<0){if(a&&n(e=Ys(i.prev.bind(i),!0)))return e;for(;e=Ys(i.prev.bind(i),o);)if(n(e))return e}if(0<t){if(a&&n(e=Ys(i.next.bind(i),!0)))return e;for(;e=Ys(i.next.bind(i),o);)if(n(e))return e}return null}function Js(e,t){for(;e&&e!==t;){if(Ac(e))return e;e=e.parentNode}return null}function Qs(e,t,n){return Js(e.container(),n)===Js(t.container(),n)}function Zs(e,t){if(!t)return null;var n=t.container(),r=t.offset();return Tc(n)?n.childNodes[r+e]:null}function ec(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function tc(e,t,n){for(var r,o,i=e?"previousSibling":"nextSibling";n&&n!==t;){var a=n[i];if(Rc(a)&&(a=a[i]),kc(a)||_c(a)){if(o=n,Js(a,r=t)===Js(o,r))return a;break}if(Oc(a))break;n=n.parentNode}return null}function nc(e,t,n){var r,o=R(tc,!0,t),i=R(tc,!1,t),a=n.startContainer,u=n.startOffset;if(Lr(a)){var s=(a=Tc(a)?a:a.parentNode).getAttribute("data-mce-caret");if("before"===s&&Xs(r=a.nextSibling))return Bc(r);if("after"===s&&Xs(r=a.previousSibling))return Pc(r)}if(!n.collapsed)return n;if(Vn(a)){if(Rc(a)){if(1===e){if(r=i(a))return Bc(r);if(r=o(a))return Pc(r)}if(-1===e){if(r=o(a))return Pc(r);if(r=i(a))return Bc(r)}return n}if(Ro(a)&&u>=a.data.length-1)return 1===e&&(r=i(a))?Bc(r):n;if(Ao(a)&&u<=1)return-1===e&&(r=o(a))?Pc(r):n;if(u===a.data.length)return(r=i(a))?Bc(r):n;if(0===u)return(r=o(a))?Pc(r):n}return n}function rc(e,t){return ve.from(Zs(e?0:-1,t)).filter(kc)}function oc(e,t,n){var r=nc(e,t,n);return-1===e?cs.fromRangeStart(r):cs.fromRangeEnd(r)}function ic(e){return ve.from(e.getNode()).map(Et.fromDom)}function ac(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function uc(e,t){var n=Qs(e,t);return!(n||!Kn(e.getNode()))||n}cs.fromRangeStart=function(e){return cs(e.startContainer,e.startOffset)},cs.fromRangeEnd=function(e){return cs(e.endContainer,e.endOffset)},cs.after=function(e){return cs(e.parentNode,as(e)+1)},cs.before=function(e){return cs(e.parentNode,as(e))},cs.isAbove=function(e,t){return dn(Q(t.getClientRects()),Z(e.getClientRects()),Ou).getOr(!1)},cs.isBelow=function(e,t){return dn(Z(t.getClientRects()),Q(e.getClientRects()),Bu).getOr(!1)},cs.isAtStart=function(e){return!!e&&e.isAtStart()},cs.isAtEnd=function(e){return!!e&&e.isAtEnd()},cs.isTextPosition=function(e){return!!e&&Vn(e.container())},cs.isElementPosition=function(e){return!1===cs.isTextPosition(e)};var sc,cc,lc=Vn,fc=sn,dc=eu.nodeIndex,mc=function(e){var t=e.parentNode;return fc(t)?mc(t):t},gc=function(e){return e?me(e.childNodes,function(e,t){return fc(t)&&"BR"!==t.nodeName?e=e.concat(gc(t)):e.push(t),e},[]):[]},pc=Gn,hc=R(xs,u,!0),vc=eu.DOM,bc=Hn,yc=Vn,Cc=function(e){bc(e)&&Mr(e)&&(Fr(e)?e.removeAttribute("data-mce-caret"):Us(e)),yc(e)&&(Hs(e),0===e.data.length&&Us(e))},xc=dt().browser,wc=Gn,Sc=Qn,Nc=Jn,Ec=function(e){return wc(e)||Sc(e)},kc=Gn,_c=Qn,Ac=an("display","block table table-cell table-caption list-item"),Rc=Mr,Dc=Lr,Tc=Hn,Oc=Vr,Bc=R(ec,!0),Pc=R(ec,!1);function Lc(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function Ic(e,t){if(0<e){if(Gl(t.previousSibling)&&!Kl(t.previousSibling))return cs.before(t);if(Kl(t))return cs(t,0)}if(e<0){if(Gl(t.nextSibling)&&!Kl(t.nextSibling))return cs.after(t);if(Kl(t))return cs(t,t.data.length)}return e<0&&!Yl(t)?cs.after(t):cs.before(t)}function Mc(t){return{next:function(e){return Ql(sc.Forwards,e,t)},prev:function(e){return Ql(sc.Backwards,e,t)}}}function Fc(e){return cs.isTextPosition(e)?0===e.offset():Vr(e.getNode())}function Uc(e){if(cs.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return Vr(e.getNode(!0))}function zc(e,t){return!cs.isTextPosition(e)&&!cs.isTextPosition(t)&&e.getNode()===t.getNode(!0)}function Hc(o,i,a){return Zl(o,i,a).bind(function(e){return Qs(a,e,i)&&(t=a,n=e,o?!zc(t,n)&&(cs.isTextPosition(r=t)||!Kn(r.getNode()))&&Uc(t)&&Fc(n):!zc(n,t)&&Fc(t)&&Uc(n))?Zl(o,i,e):ve.some(e);var t,n,r})}function jc(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return Vn(u)?ve.some(cs(u,e?0:u.data.length)):u?Vr(u)?ve.some(e?cs.before(u):Kn(a=u)?cs.before(a):cs.after(a)):(r=t,o=u,i=(n=e)?cs.before(o):cs.after(o),Zl(n,r,i)):ve.none()}function Vc(e){return Hn(e)&&e.id===af}function qc(e,t){for(;t&&t!==e;){if(t.id===af)return t;t=t.parentNode}return null}function $c(e){return Nt.isArray(e.start)}function Wc(e,t){return Hn(t)&&e.isBlock(t)&&!t.innerHTML&&!xt.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t}function Kc(e,t,n){return!1===t.hasChildNodes()&&qc(e,t)&&(o=n,i=(r=t).ownerDocument.createTextNode(So),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),1);var r,o,i}function Xc(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,Kc(c,i,r))return 1;if(s[o]>u.length-1)return Kc(c,i,r)||function(t){return of(i).fold(D,function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})}(r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return 1}function Yc(e){return Vn(e)&&0<e.data.length}function Gc(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,o="start"===t?l?c.hasChildNodes()?(r=c.firstChild,1):Yc(c.nextSibling)?(r=c.nextSibling,0):Yc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)+1):e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,1):Yc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)):e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,i=c.nextSibling,Nt.each(Nt.grep(c.childNodes),function(e){Vn(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Vn(a)&&!xt.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return ve.some(cs(u,s))}return ve.none()}function Jc(t,e){!function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g=e.dom;if(t){if($c(t))return d=t,m=(f=g).createRng(),Xc(f,!0,d,m)&&Xc(f,!1,d,m)?ve.some(m):ve.none();if(X(t.start))return ve.some((s=t,c=(u=g).createRng(),l=ps(u.getRoot(),s.start),c.setStart(l.container(),l.offset()),l=ps(u.getRoot(),s.end),c.setEnd(l.container(),l.offset()),c));if(Ee(t,"id"))return dn(a=Gc(o=g,"start",i=t),Gc(o,"end",i).or(a),function(e,t){var n=o.createRng();return n.setStart(Wc(o,e.container()),e.offset()),n.setEnd(Wc(o,t.container()),t.offset()),n});if(Ee(t,"name"))return n=g,ve.from(n.select((r=t).name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(Ee(t,"rng"))return ve.some(t.rng)}return ve.none()}(t,e).each(function(e){t.setRng(e)})}function Qc(e){return Hn(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")}function Zc(e){return""!==e&&-1!==" \f\n\r\t\v".indexOf(e)}function el(e){return!Zc(e)&&!sf(e)}function tl(e){return e.nodeType}function nl(e,t,n){var r,o=n.startOffset,i=n.startContainer;if((i!==n.endContainer||!(r=i.childNodes[o])||!/^(IMG)$/.test(r.nodeName))&&Hn(i)){var a=i.childNodes,u=void 0;o<a.length?(i=a[o],u=new Dr(i,e.getParent(i,e.isBlock))):(i=a[a.length-1],(u=new Dr(i,e.getParent(i,e.isBlock))).next(!0));for(var s=u.current();s;s=u.next())if(Vn(s)&&!cf(s))return n.setStart(s,0),t.setRng(n),0}}function rl(e,t,n){if(e){var r=t?"nextSibling":"previousSibling";for(e=n?e:e[r];e;e=e[r])if(Hn(e)||!cf(e))return e}}function ol(e,t){return tl(t)&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]}function il(e,t,n){return e.schema.isValidChild(t,n)}function al(e,n){return y(e)?e=e(n):V(n)&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e}function ul(e,t){return e=""+((e=e||"").nodeName||e),t=""+((t=t||"").nodeName||t),e.toLowerCase()===t.toLowerCase()}function sl(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),""+("fontFamily"===n?t.replace(/[\'\"]/g,"").replace(/,\s+/g,","):t)}function cl(e,t,n){return sl(e,e.getStyle(t,n),n)}function ll(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n}function fl(e,t,n){return e.getParents(t,n,e.getRoot())}function dl(e,t){return F(e.formatter.get(t),function(t){function o(e){return 1<e.length&&"%"===e.charAt(0)}return F(["styles","attributes"],function(e){return ue(t,e).exists(function(e){var n,r;return F(S(e)?e:(n=u,r=[],ne(e,function(e,t){r.push(n(e,t))}),r),o)})})})}function ml(e){return se(e,"block")}function gl(e){return se(e,"selector")}function pl(e){return se(e,"inline")}function hl(e){return gl(e)&&!1!==e.expand&&!pl(e)}function vl(e,t){for(var n=t;n;){if(Hn(n)&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t}function bl(e,t,n,r){for(var o=t.data,i=n;e?0<=i:i<o.length;e?i--:i++)if(r(o.charAt(i)))return e?i+1:i;return-1}function yl(e,t,n){return bl(e,t,n,function(e){return sf(e)||Zc(e)})}function Cl(e,t,n){return bl(e,t,n,el)}function xl(i,e,t,n,a,r){function o(e,t,n){var r=Au(i),o=a?r.backwards:r.forwards;return ve.from(o(e,t,function(e,t){return lf(e.parentNode)?-1:n(a,u=e,t)},s))}var u,s=i.getParent(t,i.isBlock)||e;return o(t,n,yl).bind(function(e){return r?o(e.container,e.offset+(a?-1:0),Cl):ve.some(e)}).orThunk(function(){return u?ve.some({container:u,offset:a?0:u.length}):ve.none()})}function wl(e,t,n,r,o){Vn(r)&&Pe(r.data)&&r[o]&&(r=r[o]);for(var i=ff(e,r),a=0;a<i.length;a++)for(var u=0;u<t.length;u++){var s=t[u];if((!V(s.collapsed)||s.collapsed===n.collapsed)&&gl(s)&&e.is(i[a],s.selector))return i[a]}return r}function Sl(t,e,n,r){var o,i=n,a=t.dom,u=a.getRoot(),s=e[0];if((i=ml(s)?s.wrapper?null:a.getParent(n,s.block,u):i)||(o=a.getParent(n,"LI,TD,TH"),i=a.getParent(Vn(n)?n.parentNode:n,function(e){return e!==u&&mf(t,e)},o)),!(i=i&&ml(s)&&s.wrapper&&ff(a,i,"ul,ol").reverse()[0]||i))for(i=n;i[r]&&!a.isBlock(i[r])&&!ul(i=i[r],"br"););return i||n}function Nl(e,t,n,r,o){var i,a=n,u=o?"previousSibling":"nextSibling",s=e.getRoot();if(Vn(n)&&!df(n)&&(o?0<r:r<n.data.length))return n;for(;;){if(!t[0].block_expand&&e.isBlock(a))return a;for(var c=a[u];c;c=c[u]){var l=Vn(c)&&!gf(e,s,c,u);if(!lf(c)&&(!Kn(i=c)||!i.getAttribute("data-mce-bogus")||i.nextSibling)&&!df(c,l))return a}if(a===s||a.parentNode===s){n=a;break}a=a.parentNode}return n}function El(e){return lf(e.parentNode)||lf(e)}function kl(e,t,n,r){void 0===r&&(r=!1);var o=t.startContainer,i=t.startOffset,a=t.endContainer,u=t.endOffset,s=e.dom,c=n[0];return Hn(o)&&o.hasChildNodes()&&(o=Iu(o,i),Vn(o)&&(i=0)),Hn(a)&&a.hasChildNodes()&&(a=Iu(a,t.collapsed?u:u-1),Vn(a)&&(u=a.nodeValue.length)),o=vl(s,o),a=vl(s,a),El(o)&&(o=lf(o)?o:o.parentNode,o=t.collapsed?o.previousSibling||o:o.nextSibling||o,Vn(o)&&(i=t.collapsed?o.length:0)),El(a)&&(a=lf(a)?a:a.parentNode,a=t.collapsed?a.nextSibling||a:a.previousSibling||a,Vn(a)&&(u=t.collapsed?0:a.length)),t.collapsed&&(xl(s,e.getBody(),o,i,!0,r).each(function(e){var t=e.container,n=e.offset;o=t,i=n}),xl(s,e.getBody(),a,u,!1,r).each(function(e){var t=e.container,n=e.offset;a=t,u=n})),(pl(c)||c.block_expand)&&(pl(c)&&Vn(o)&&0!==i||(o=Nl(s,n,o,i,!0)),pl(c)&&Vn(a)&&u!==a.nodeValue.length||(a=Nl(s,n,a,u,!1))),hl(c)&&(o=wl(s,n,t,o,"previousSibling"),a=wl(s,n,t,a,"nextSibling")),(ml(c)||gl(c))&&(o=Sl(e,n,o,"previousSibling"),a=Sl(e,n,a,"nextSibling"),ml(c)&&(s.isBlock(o)||(o=Nl(s,n,o,i,!0)),s.isBlock(a)||(a=Nl(s,n,a,u,!1)))),Hn(o)&&(i=s.nodeIndex(o),o=o.parentNode),Hn(a)&&(u=s.nodeIndex(a)+1,a=a.parentNode),{startContainer:o,startOffset:i,endContainer:a,endOffset:u}}function _l(n,e,u){function s(e){var t=e[0];Vn(t)&&t===i&&o>=t.data.length&&e.splice(0,1);var n=e[e.length-1];return 0===a&&0<e.length&&n===l&&Vn(n)&&e.splice(e.length-1,1),e}function c(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r}function t(e,t){return n.getParent(e,function(e){return e.parentNode===t},t)}function r(e,t,n){var r=n?"nextSibling":"previousSibling",o=e;for(o.parentNode;o&&o!==t;o=i){var i=o.parentNode,a=c(o===e?o:o[r],r);a.length&&(n||a.reverse(),u(s(a)))}}var o=e.startOffset,i=Iu(e.startContainer,o),a=e.endOffset,l=Iu(e.endContainer,a-1);if(i===l)return u(s([i]));var f=n.findCommonAncestor(i,l);if(n.isChildOf(i,l))return r(i,f,!0);if(n.isChildOf(l,i))return r(l,f);var d=t(i,f)||i,m=t(l,f)||l;r(i,d,!0);var g=c(d===i?d:d.nextSibling,"nextSibling",m===l?m.nextSibling:m);g.length&&u(s(g)),r(l,m)}function Al(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t}function Rl(e,t){var n=yu(t,"td[data-mce-selected],th[data-mce-selected]");return 0<n.length?n:U(H(e,function(e){var t=Lu(e);return t?[Et.fromDom(t)]:[]}),yo)}function Dl(e){return Rl(Al(e.selection.getSel()),Et.fromDom(e.getBody()))}function Tl(e,t){return vr(e,"table",t)}function Ol(o,e){return dn((r=e.startContainer,i=e.startOffset,Vn(r)?0===i?ve.some(Et.fromDom(r)):ve.none():ve.from(r.childNodes[i]).map(Et.fromDom)),(t=e.endContainer,n=e.endOffset,Vn(t)?n===t.data.length?ve.some(Et.fromDom(t)):ve.none():ve.from(t.childNodes[n-1]).map(Et.fromDom)),function(e,t){var n=M(pf(o),R(je,e)),r=M(hf(o),R(je,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i}function Bl(e,t,n,r){var o=n,i=new Dr(n,o),a=ae(e.schema.getMoveCaretBeforeOnEnterElements(),function(e,t){return!T(["td","th","table"],t.toLowerCase())});do{if(Vn(n)&&0!==Nt.trim(n.nodeValue).length)return r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length),0;if(a[n.nodeName])return r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n),0}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))}function Pl(e){var t=e.selection.getSel();return t&&0<t.rangeCount}function Ll(r,o){var e=Dl(r);0<e.length?Y(e,function(e){var t=e.dom,n=r.dom.createRng();n.setStartBefore(t),n.setEndAfter(t),o(n,!0)}):o(r.selection.getRng(),!1)}function Il(e,t,n){var r=Ss(e,t);n(r),e.moveToBookmark(r)}function Ml(e){return vf.get(e)}function Fl(e,t,n,r){var o=t.uid,i=void 0===o?wu("mce-annotation"):o,a=function(e,t){var n={};for(o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]]);return n}(t,["uid"]),u=Et.fromTag("span",e);vu(u,$u()),pn(u,""+Ku(),i),pn(u,""+Wu(),n);var s,c=r(i,a),l=c.attributes,f=c.classes,d=void 0===f?[]:f;return hn(u,void 0===l?{}:l),s=u,Y(d,function(e){vu(s,e)}),u}function Ul(u,e,t,n,r){function s(){d.clear()}function c(e){Y(e,o)}var l=[],f=Fl(u.getDoc(),r,t,n),d=du(),o=function(e){var t,n,r,o,i,a;switch(r=u,i="span",a=kt(o=e),Ot(o).fold(function(){return"skipping"},function(e){return"br"===a||An(n=o)&&Ml(n)===So?"valid":_n(t=o)&&bu(t,$u())?"existing":Vc(o.dom)?"caret":il(r,i,a)&&il(r,kt(e),i)?"valid":"invalid-child";var t,n})){case"invalid-child":s(),c(Tn(e)),s();break;case"valid":qt(t=e,n=d.get().getOrThunk(function(){var e=Eu(f);return l.push(e),d.set(e),e})),Ln(n,t)}};return _l(u.dom,e,function(e){s(),c(A(e,Et.fromDom))}),l}function zl(o){var n,e,r,i=(n={},{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return ue(n,e).map(function(e){return e.settings})}});r=i,(e=o).on("init",function(){e.serializer.addNodeFilter("span",function(e){Y(e,function(t){ve.from(t.attr(Wu())).bind(r.lookup).each(function(e){!1===e.persistent&&t.unwrap()})})})});var a=xu(o);return{register:function(e,t){i.register(e,t)},annotate:function(t,n){i.lookup(t).each(function(e){var u,s,c,l;s=t,c=e,l=n,(u=o).undoManager.transact(function(){var e,t,n,r,o=u.selection,i=o.getRng(),a=0<Dl(u).length;i.collapsed&&!a&&(n=kl(e=u,t=i,[{inline:"span"}]),t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset),e.selection.setRng(t)),o.getRng().collapsed&&!a?(Su(r=Fl(u.getDoc(),l,s,c.decorate),wo),o.getRng().insertNode(r.dom),o.select(r.dom)):Il(o,!1,function(){Ll(u,function(e){Ul(u,e,s,c.decorate,l)})})})})},annotationChanged:function(e,t){a.addListener(e,t)},remove:function(e){Cu(o,ve.some(e)).each(function(e){Y(e.elements,Yt)})},getAll:function(e){var t,n,r;return re((t=e,n=yu(Et.fromDom(o.getBody()),"["+Wu()+'="'+t+'"]'),r={},Y(n,function(e){var t=vn(e,Ku()),n=ue(r,t).getOr([]);r[t]=n.concat([e])}),r),function(e){return A(e,function(e){return e.dom})})}}}function Hl(e){return{getBookmark:R(uf,e),moveToBookmark:R(Jc,e)}}(cc=sc=sc||{})[cc.Backwards=-1]="Backwards",cc[cc.Forwards=1]="Forwards";function jl(e){return Lo(e)||!!Fo(t=e)&&!0!==L(xe(t.getElementsByTagName("*")),function(e,t){return e||Do(t)},!1);var t}var Vl,ql,$l,Wl=Gn,Kl=Vn,Xl=Hn,Yl=Kn,Gl=Vr,Jl=qr,Ql=function(e,t,n){var r,o,i;if(!Xl(n)||!t)return null;if(t.isEqual(cs.after(n))&&n.lastChild){if(i=cs.after(n.lastChild),e<0&&Gl(n.lastChild)&&Xl(n.lastChild))return Yl(n.lastChild)?cs.before(n.lastChild):i}else i=t;var a,u,s,c=i.container(),l=i.offset();if(Kl(c)){if(e<0&&0<l)return cs(c,--l);if(0<e&&l<c.length)return cs(c,++l);r=c}else{if(e<0&&0<l&&(f=Lc(c,l-1),Gl(f)))return!jl(f)&&(o=Gs(f,e,Jl,f))?Kl(o)?cs(o,o.data.length):cs.after(o):Kl(f)?cs(f,f.data.length):cs.before(f);if(0<e&&l<c.childNodes.length&&(f=Lc(c,l),Gl(f)))return Yl(f)?(a=n,(s=(u=f).nextSibling)&&Gl(s)?Kl(s)?cs(s,0):cs.before(s):Ql(sc.Forwards,cs.after(u),a)):!jl(f)&&(o=Gs(f,e,Jl,f))?Kl(o)?cs(o,0):cs.before(o):Kl(f)?cs(f,0):cs.after(f);r=f||i.getNode()}if((0<e&&i.isAtEnd()||e<0&&i.isAtStart())&&(r=Gs(r,e,w,n,!0),Jl(r,n)))return Ic(e,r);var f=Gs(r,e,Jl,n),d=pe(U(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(c,n),Wl));return!d||f&&d.contains(f)?f?Ic(e,f):null:0<e?cs.after(d):cs.before(d)},Zl=function(e,t,n){var r=Mc(t);return ve.from(e?r.next(n):r.prev(n))},ef=function(t,n,e,r){return Hc(t,n,e).bind(function(e){return r(e)?ef(t,n,e,r):ve.some(e)})},tf=R(Zl,!0),nf=R(Zl,!1),rf=R(jc,!0),of=R(jc,!1),af="_mce_caret",uf=function(e,t,n){return 2===t?xs(Eo,n,e):3===t?(o=(r=e).getRng(),{start:gs(r.dom.getRoot(),cs.fromRangeStart(o)),end:gs(r.dom.getRoot(),cs.fromRangeEnd(o))}):t?{rng:e.getRng()}:Ss(e,!1);var r,o},sf=(Vl=wo,function(e){return Vl===e}),cf=function(e,t){return void 0===t&&(t=!1),!(!V(e)||!Vn(e))&&$r(t?e.data.replace(/ /g,"\xa0"):e.data)},lf=Qc,ff=fl,df=cf,mf=ol,gf=function(e,t,n,r){var o=n.parentNode;return!V(n[r])&&(!(o!==t&&!K(o)&&!e.isBlock(o))||gf(e,t,o,r))},pf=function(t){return Ft(t).fold(J([t]),function(e){return[t].concat(pf(e))})},hf=function(t){return Ut(t).fold(J([t]),function(e){return"br"===kt(e)?Bt(e).map(function(e){return[t].concat(hf(e))}).getOr([]):[t].concat(hf(e))})},vf=(ql=An,{get:function(e){if(!ql(e))throw new Error("Can only get text value of a text node");return $l(e).getOr("")},getOption:$l=function(e){return ql(e)?ve.from(e.dom.nodeValue):ve.none()},set:function(e,t){if(!ql(e))throw new Error("Can only set raw text value of a text node");e.dom.nodeValue=t}});function bf(e,t){for(;t&&t!==e;){if(Yn(t)||Gn(t))return t;t=t.parentNode}return null}function yf(t,n,e){if(!e.collapsed){if(xt.browser.isIE()&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(Hn(r))return F(r.getClientRects(),function(e){return Pu(e,t,n)})}return F(e.getClientRects(),function(e){return Pu(e,t,n)})}}function Cf(e,t,n){return e.fire(t,n)}function xf(e,t,n,r){return e.fire("FormatApply",{format:t,node:n,vars:r})}function wf(e,t,n,r){return e.fire("FormatRemove",{format:t,node:n,vars:r})}function Sf(r,l){function c(e){return e&&("IMG"===e.nodeName||l.dom.is(e,"figure.image"))}function f(e){return Qn(e)||T.hasClass(e,"mce-preview-object")}function n(e){var t=e.target;!function(e,t){if("longpress"!==e.type&&0!==e.type.indexOf("touch"))return c(e.target)&&!yf(e.clientX,e.clientY,t);var n=e.touches[0];return c(e.target)&&!yf(n.clientX,n.clientY,t)}(e,l.selection.getRng())||e.isDefaultPrevented()||l.selection.select(t)}function d(e){return T.is(e,"figure.image")?[e.querySelector("img")]:T.hasClass(e,"mce-preview-object")&&V(e.firstElementChild)?[e,e.firstElementChild]:[e]}function i(e){var t=Ps(l);return!!t&&"false"!==e.getAttribute("data-mce-resize")&&e!==l.getBody()&&(T.hasClass(e,"mce-preview-object")?ze(Et.fromDom(e.firstElementChild),t):ze(Et.fromDom(e),t))}function a(e,t,n){V(n)&&Y(d(e),function(e){e.style[t]||!l.schema.isValid(e.nodeName.toLowerCase(),t)?T.setStyle(e,t,n):T.setAttrib(e,t,""+n)})}function m(e,t,n){a(e,"width",t),a(e,"height",n)}function g(e){var t,n,r,o,i,a,u=e.screenX-C,s=e.screenY-x;k=u*b[2]+w,_=s*b[3]+S,k=k<5?5:k,_=_<5?5:_,((c(p)||f(p))&&!1!==l.getParam("resize_img_proportional",!0,"boolean")?!If.modifierPressed(e):If.modifierPressed(e))&&(L(u)>L(s)?(_=I(k*N),k=I(_/N)):(k=I(_/N),_=I(k*N))),m(h,k,_),t=b.startPos.x+u,n=b.startPos.y+s,T.setStyles(v,{left:t=0<t?t:0,top:n=0<n?n:0,display:"block"}),v.innerHTML=k+" &times; "+_,b[2]<0&&h.clientWidth<=k&&T.setStyle(h,"left",void 0+(w-k)),b[3]<0&&h.clientHeight<=_&&T.setStyle(h,"top",void 0+(S-_)),(u=M.scrollWidth-A)+(s=M.scrollHeight-R)!=0&&T.setStyles(v,{left:t-u,top:n-s}),E||(r=p,o=w,i=S,a="corner-"+b.name,l.fire("ObjectResizeStart",{target:r,width:o,height:i,origin:a}),E=!0)}function o(e){function t(e,t){if(e)do{if(e===t)return 1}while(e=e.parentNode)}var n;E||l.removed||(O(T.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute(D)}),n="mousedown"===e.type?e.target:r.getNode(),t(n=T.$(n).closest("table,img,figure.image,hr,video,span.mce-preview-object")[0],M)&&(s(),t(r.getStart(!0),n)&&t(r.getEnd(!0),n))?z(n):H())}function u(e){return Mf(bf(l.getBody(),e))}function s(){try{l.getDoc().execCommand("enableObjectResizing",!1,"false")}catch(e){}}var p,h,v,b,y,C,x,w,S,N,E,k,_,A,R,D="data-mce-selected",T=l.dom,O=Nt.each,B=l.getDoc(),P=document,L=Math.abs,I=Math.round,M=l.getBody(),F={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]},U=function(){var e,t,n,r,o=E;E=!1,o&&(a(p,"width",k),a(p,"height",_)),T.unbind(B,"mousemove",g),T.unbind(B,"mouseup",U),P!==B&&(T.unbind(P,"mousemove",g),T.unbind(P,"mouseup",U)),T.remove(h),T.remove(v),T.remove(y),z(p),o&&(e=p,t=k,n=_,r="corner-"+b.name,l.fire("ObjectResized",{target:e,width:t,height:n,origin:r}),T.setAttrib(p,"style",T.getAttrib(p,"style"))),l.nodeChanged()},z=function(e){j();var t=T.getPos(e,M),a=t.x,u=t.y,n=e.getBoundingClientRect(),s=n.width||n.right-n.left,c=n.height||n.bottom-n.top;p!==e&&(H(),p=e,k=_=0);var r=l.fire("ObjectSelected",{target:e}),o=T.getAttrib(p,D,"1");i(e)&&!r.isDefaultPrevented()?O(F,function(o,i){var e=T.get("mceResizeHandle"+i);e&&T.remove(e),e=T.add(M,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all",class:"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),11===xt.ie&&(e.contentEditable=!1),T.bind(e,"mousedown",function(e){var t,n,r;e.stopImmediatePropagation(),e.preventDefault(),t=e,r=d(p)[0],C=t.screenX,x=t.screenY,w=r.clientWidth,S=r.clientHeight,N=S/w,(b=o).name=i,b.startPos={x:s*o[0]+a,y:c*o[1]+u},A=M.scrollWidth,R=M.scrollHeight,y=T.add(M,"div",{class:"mce-resize-backdrop","data-mce-bogus":"all"}),T.setStyles(y,{position:"fixed",left:"0",top:"0",width:"100%",height:"100%"}),h=f(n=p)?T.create("img",{src:xt.transparentSrc}):n.cloneNode(!0),T.addClass(h,"mce-clonedresizable"),T.setAttrib(h,"data-mce-bogus","all"),h.contentEditable="false",T.setStyles(h,{left:a,top:u,margin:0}),m(h,s,c),h.removeAttribute(D),M.appendChild(h),T.bind(B,"mousemove",g),T.bind(B,"mouseup",U),P!==B&&(T.bind(P,"mousemove",g),T.bind(P,"mouseup",U)),v=T.add(M,"div",{class:"mce-resize-helper","data-mce-bogus":"all"},w+" &times; "+S)}),o.elm=e,T.setStyles(e,{left:s*o[0]+a-e.offsetWidth/2,top:c*o[1]+u-e.offsetHeight/2})}):H(),T.getAttrib(p,D)||p.setAttribute(D,o)},H=function(){j(),p&&p.removeAttribute(D),ne(F,function(e,t){var n=T.get("mceResizeHandle"+t);n&&(T.unbind(n),T.remove(n))})},j=function(){ne(F,function(e){e.elm&&(T.unbind(e.elm),delete e.elm)})};return l.on("init",function(){var e;s(),(xt.browser.isIE()||xt.browser.isEdge())&&(l.on("mousedown click",function(e){var t=e.target,n=t.nodeName;E||!/^(TABLE|IMG|HR)$/.test(n)||u(t)||(2!==e.button&&l.selection.select(t,"TABLE"===n),"mousedown"===e.type&&l.nodeChanged())}),T.bind(M,"mscontrolselect",e=function(e){function t(e){Ar.setEditorTimeout(l,function(){return l.selection.select(e)})}if(u(e.target)||Qn(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}),l.on("remove",function(){return T.unbind(M,"mscontrolselect",e)}));var t=Ar.throttle(function(e){l.composing||o(e)});l.on("NodeChange ResizeEditor ResizeWindow ResizeContent drop",t),l.on("keyup compositionend",function(e){p&&"TABLE"===p.nodeName&&t(e)}),l.on("hide blur",H),l.on("contextmenu longpress",n,!0)}),l.on("remove",j),{isResizable:i,showResizeRect:z,hideResizeRect:H,updateResizeRect:o,destroy:function(){p=h=y=null}}}function Nf(e){return Yn(e)||Gn(e)}function Ef(t,n,r){var o,e,i,a,u,s=r;if(s.caretPositionFromPoint)(e=s.caretPositionFromPoint(t,n))&&((o=r.createRange()).setStart(e.offsetNode,e.offset),o.collapse(!0));else if(s.caretRangeFromPoint)o=s.caretRangeFromPoint(t,n);else if(s.body.createTextRange){o=s.body.createTextRange();try{o.moveToPoint(t,n),o.collapse(!0)}catch(e){o=function(e,n,t){var r,o=t.elementFromPoint(e,n),i=t.body.createTextRange();if(o&&"HTML"!==o.tagName||(o=t.body),i.moveToElementText(o),0<(r=(r=Nt.toArray(i.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-Math.abs(Math.max(t.top-n,t.bottom-n))})).length){n=(r[0].bottom+r[0].top)/2;try{return i.moveToPoint(e,n),i.collapse(!0),i}catch(e){}}return null}(t,n,r)}return i=o,a=r.body,u=i&&i.parentElement?i.parentElement():null,Gn(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,Nf))?null:i}return o}function kf(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset}function _f(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)}function Af(e){return e&&"TABLE"===e.nodeName}function Rf(e,t,n){for(var r=new Dr(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Kn(t))return 1}function Df(e,t,n,r,o){var i,a,u=e.getRoot(),s=e.schema.getNonEmptyElements(),c=e.getParent(o.parentNode,e.isBlock)||u;if(r&&Kn(o)&&t&&e.isEmpty(c))return ve.some(cs(o.parentNode,e.nodeIndex(o)));for(var l,f,d=new Dr(o,c);a=d[r?"prev":"next"]();){if("false"===e.getContentEditableParent(a)||(f=u,Mr(l=a)&&!1===_f(l,f,Vc)))return ve.none();if(Vn(a)&&0<a.nodeValue.length)return!1===_f(a,u,function(e){return"A"===e.nodeName})?ve.some(cs(a,r?a.nodeValue.length:0)):ve.none();if(e.isBlock(a)||s[a.nodeName.toLowerCase()])return ve.none();i=a}return n&&i?ve.some(cs(i,0)):ve.none()}function Tf(e,t,n,r){var o,i=e.getRoot(),a=!1,u=r[(n?"start":"end")+"Container"],s=r[(n?"start":"end")+"Offset"],c=Hn(u)&&s===u.childNodes.length,l=e.schema.getNonEmptyElements(),f=n;if(Mr(u))return ve.none();if(Hn(u)&&s>u.childNodes.length-1&&(f=!1),$n(u)&&(u=i,s=0),u===i){if(f&&(d=u.childNodes[0<s?s-1:0])){if(Mr(d))return ve.none();if(l[d.nodeName]||Af(d))return ve.none()}if(u.hasChildNodes()){if(s=Math.min(!f&&0<s?s-1:s,u.childNodes.length-1),u=u.childNodes[s],s=Vn(u)&&c?u.data.length:0,!t&&u===i.lastChild&&Af(u))return ve.none();if(function(e,t){for(;t&&t!==e;){if(Gn(t))return 1;t=t.parentNode}}(i,u)||Mr(u))return ve.none();if(u.hasChildNodes()&&!1===Af(u)){var d=u,m=new Dr(u,i);do{if(Gn(d)||Mr(d)){a=!1;break}if(Vn(d)&&0<d.nodeValue.length){s=f?0:d.nodeValue.length,u=d,a=!0;break}if(l[d.nodeName.toLowerCase()]&&(!(o=d)||!/^(TD|TH|CAPTION)$/.test(o.nodeName))){s=e.nodeIndex(d),u=d.parentNode,f||s++,a=!0;break}}while(d=f?m.next():m.prev())}}}return t&&(Vn(u)&&0===s&&Df(e,c,t,!0,u).each(function(e){u=e.container(),s=e.offset(),a=!0}),Hn(u)&&(!(d=(d=u.childNodes[s])||u.childNodes[s-1])||!Kn(d)||d.previousSibling&&"A"===d.previousSibling.nodeName||Rf(e,d,!1)||Rf(e,d,!0)||Df(e,c,t,!0,d).each(function(e){u=e.container(),s=e.offset(),a=!0}))),f&&!t&&Vn(u)&&s===u.nodeValue.length&&Df(e,c,t,!1,u).each(function(e){u=e.container(),s=e.offset(),a=!0}),a?ve.some(cs(u,s)):ve.none()}function Of(e,t){var n=t.collapsed,r=t.cloneRange(),o=cs.fromRangeStart(t);return Tf(e,n,!0,r).each(function(e){n&&cs.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Tf(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),kf(t,r)?ve.none():ve.some(r)}function Bf(e,t){return e.splitText(t)}function Pf(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Vn(t)?0<n&&n<t.nodeValue.length&&(t=(r=Bf(t,n)).previousSibling,n<o?(t=r=Bf(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Vn(t)&&0<n&&n<t.nodeValue.length&&(t=Bf(t,n),n=0),Vn(r)&&0<o&&o<r.nodeValue.length&&(o=(r=Bf(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}}function Lf(n){return{walk:function(e,t){return _l(n,e,t)},split:Pf,normalize:function(t){return Of(n,t).fold(D,function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}Hl.isBookmarkNode=Qc;var If={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,ESC:27,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||If.metaKeyPressed(e)},metaKeyPressed:function(e){return xt.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Mf=Gn;Lf.compareRanges=kf,Lf.getCaretRangeFromPoint=Ef,Lf.getSelectedNode=Lu,Lf.getNode=Iu;var Ff,Uf,zf=(Ff="height",Uf=function(e){var t=e.dom;return Mn(e)?t.getBoundingClientRect().height:t.offsetHeight},{set:function(e,t){if(!N(t)&&!t.match(/^[0-9]+$/))throw new Error(Ff+".set accepts only positive integer values. Value was "+t);var n=e.dom;mn(n)&&(n.style[Ff]=t+"px")},get:Hf,getOuter:Hf,aggregate:jf,max:function(e,t,n){var r=jf(e,n);return r<t?t-r:0}});function Hf(e){var t=Uf(e);if(t<=0||null===t){var n=wn(e,Ff);return parseFloat(n)||0}return t}function jf(o,e){return L(e,function(e,t){var n=wn(o,t),r=void 0===n?0:parseInt(n,10);return isNaN(r)?e:e+r},0)}function Vf(e){return"textarea"===kt(e)}function qf(e,t){var n=function(e){var t=e.dom.ownerDocument,n=t.body,r=t.defaultView,o=t.documentElement;if(n===e.dom)return Un(n.offsetLeft,n.offsetTop);var i=Gt(null==r?void 0:r.pageYOffset,o.scrollTop),a=Gt(null==r?void 0:r.pageXOffset,o.scrollLeft),u=Gt(o.clientTop,n.clientTop),s=Gt(o.clientLeft,n.clientLeft);return zn(e).translate(a-s,i-u)}(e),r=zf.get(e);return{element:e,bottom:n.top+r,height:r,pos:n,cleanup:t}}function $f(n,r,o,i){Od(n,function(e,t){return Td(n,r,o,i)},o)}function Wf(e,t,n,r,o){var i={elm:r.element.dom,alignToTop:o};e.fire("ScrollIntoView",i).isDefaultPrevented()||(n(t,Jt(t).top,r,o),e.fire("AfterScrollIntoView",i))}function Kf(e,t,n,r){var o=Et.fromDom(e.getDoc());Wf(e,o,n,qf(Et.fromDom(t),te),r)}function Xf(e,t,n,r){var o,i=e.pos;n?Qt(i.left,i.top,r):(o=i.top-t+e.height,Qt(i.left,o,r))}function Yf(e,t,n,r,o){var i=n+t,a=r.pos.top,u=r.bottom,s=n<=u-a;a<t?Xf(r,n,!1!==o,e):i<a?Xf(r,n,s?!1!==o:!0===o,e):i<u&&!s&&Xf(r,n,!0===o,e)}function Gf(e,t,n,r){Yf(e,t,e.dom.defaultView.innerHeight,n,r)}function Jf(e,t,n,r){Yf(e,t,e.dom.defaultView.innerHeight,n,r);var o,i,a,u,s,c,l,f=(o=n.element,u=Jt(Et.fromDom(document)),a=(i=Dd).owner(o),s=Rd(i,a),c=zn(o),l=P(s,function(e,t){var n=zn(t);return{left:e.left+n.left,top:e.top+n.top}},{left:0,top:0}),Un(l.left+c.left+u.left,l.top+c.top+u.top)),d=tn(window);f.top<d.y?Zt(n.element,!1!==r):f.top>d.bottom&&Zt(n.element,!0===r)}function Qf(e,t,n){return $f(e,Gf,t,n)}function Zf(e,t,n){return Kf(e,t,Gf,n)}function ed(e,t,n){return $f(e,Jf,t,n)}function td(e,t,n){return Kf(e,t,Jf,n)}function nd(e,t,n){(e.inline?Qf:ed)(e,t,n)}function rd(e){var t=Pn(e).dom;return e.dom===t.activeElement}function od(e){return void 0===e&&(e=Et.fromDom(document)),ve.from(e.dom.activeElement).map(Et.fromDom)}function id(e,t){var n=An(t)?Ml(t).length:Tn(t).length+1;return n<e?n:e<0?0:e}function ad(e){return Id.range(e.start,id(e.soffset,e.start),e.finish,id(e.foffset,e.finish))}function ud(e,t){return!rn(t.dom)&&(Ve(e,t)||je(e,t))}function sd(t){return function(e){return ud(t,e.start)&&ud(t,e.finish)}}function cd(e){return!0===e.inline||Md.isIE()}function ld(e){return Id.range(Et.fromDom(e.startContainer),e.startOffset,Et.fromDom(e.endContainer),e.endOffset)}function fd(e){var t=document.createRange();try{return t.setStart(e.start.dom,e.soffset),t.setEnd(e.finish.dom,e.foffset),ve.some(t)}catch(e){return ve.none()}}function dd(e){var t,n,r=cd(e)?(t=Et.fromDom(e.getBody()),((n=Tt(t).dom.getSelection())&&0!==n.rangeCount?ve.from(n.getRangeAt(0)):ve.none()).map(ld).filter(sd(t))):ve.none();e.bookmark=r.isSome()?r:e.bookmark}function md(n){return(n.bookmark||ve.none()).bind(function(e){return t=Et.fromDom(n.getBody()),ve.from(e).filter(sd(t)).map(ad);var t}).bind(fd)}function gd(u){var s=mu(function(){dd(u)},0);u.on("init",function(){function e(){n.throttle()}var t,n,r,o,i,a;u.inline&&(t=u,n=s,eu.DOM.bind(document,"mouseup",e),t.on("remove",function(){eu.DOM.unbind(document,"mouseup",e)})),r=u,o=s,dt().browser.isIE()?(a=r).on("focusout",function(){dd(a)}):(i=o,r.on("mouseup touchend",function(e){i.throttle()})),r.on("keyup NodeChange",function(e){"nodechange"===e.type&&e.selectionChange||dd(r)})}),u.on("remove",function(){s.cancel()})}function pd(t,e){var n=t.getParam("custom_ui_selector","","string");return null!==Ud.getParent(e,function(e){return Fd.isEditorUIElement(e)||!!n&&t.dom.is(e,n)})}function hd(n,e){var t=e.editor;gd(t),t.on("focusin",function(){var e=n.focusedEditor;e!==t&&(e&&e.fire("blur",{focusedEditor:t}),n.setActive(t),(n.focusedEditor=t).fire("focus",{blurredEditor:e}),t.focus(!0))}),t.on("focusout",function(){Ar.setEditorTimeout(t,function(){var e=n.focusedEditor;pd(t,function(e){try{return od(Pn(Et.fromDom(e.getElement()))).fold(function(){return document.body},function(e){return e.dom})}catch(e){return document.body}}(t))||e!==t||(t.fire("blur",{focusedEditor:null}),n.focusedEditor=null)})}),Ad||(Ad=function(e){var t=n.activeEditor;t&&!function(e){if(Bn()&&V(e.target)){var t=Et.fromDom(e.target);if(_n(t)&&V(t.dom.shadowRoot)&&e.composed&&e.composedPath){var n=e.composedPath();if(n)return Q(n)}}return ve.from(e.target)}(e).each(function(e){e.ownerDocument===document&&(e===document.body||pd(t,e)||n.focusedEditor!==t||(t.fire("blur",{focusedEditor:null}),n.focusedEditor=null))})},Ud.bind(document,"focusin",Ad))}function vd(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(Ud.unbind(document,"focusin",Ad),Ad=null)}function bd(t,e){var n,r;n=Et.fromDom(t.getBody()),((r=e).collapsed?ve.from(Iu(r.startContainer,r.startOffset)).map(Et.fromDom):ve.none()).bind(function(e){return bo(e)?ve.some(e):!1===Ve(n,e)?ve.some(n):ve.none()}).bind(function(e){return rf(e.dom)}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})}function yd(t){if(t.setActive)try{t.setActive()}catch(e){t.focus()}else t.focus()}function Cd(e){return e.inline?(r=e.getBody())&&(rd(t=Et.fromDom(r))||od(Pn(n=t)).filter(function(e){return n.dom.contains(e.dom)}).isSome()):e.iframeElement&&rd(Et.fromDom(e.iframeElement));var t,n,r}function xd(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return ve.from(i).map(Et.fromDom).map(function(e){return r&&t.collapsed?e:Mt(e,o(e,a)).getOr(e)}).bind(function(e){return _n(e)?ve.some(e):Ot(e).filter(_n)}).map(function(e){return e.dom}).getOr(e)}function wd(e,t,n){return xd(e,t,!0,n,function(e,t){return Math.min(zt(e),t)})}function Sd(e,t,n){return xd(e,t,!1,n,function(e,t){return 0<t?t-1:t})}function Nd(e,t){for(var n=e;e&&Vn(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}function Ed(n,e){return A(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})}function kd(e,t,n){var r=n?"lastChild":"firstChild",o=n?"prev":"next";if(e[r])return e[r];if(e!==t){var i=e[o];if(i)return i;for(var a=e.parent;a&&a!==t;a=a.parent)if(i=a[o])return i}}function _d(e){var t="a"===e.name&&!e.attr("href")&&e.attr("id");return e.attr("name")||e.attr("id")&&!e.firstChild||e.attr("data-mce-bookmark")||t}var Ad,Rd=function(r,e){return r.view(e).fold(J([]),function(e){var t=r.owner(e),n=Rd(r,t);return[e].concat(n)})},Dd=Object.freeze({__proto__:null,view:function(e){var t;return(e.dom===document?ve.none():ve.from(null===(t=e.dom.defaultView)||void 0===t?void 0:t.frameElement)).map(Et.fromDom)},owner:Dt}),Td=function(e,t,n,r){var o=Et.fromDom(e.getBody()),i=Et.fromDom(e.getDoc());o.dom.offsetWidth;var a,u,s,c,l=(a=Et.fromDom(n.startContainer),u=n.startOffset,s=function(e,t){var n=Tn(e);if(0===n.length||Vf(e))return{element:e,offset:t};if(t<n.length&&!Vf(n[t]))return{element:n[t],offset:0};var r=n[n.length-1];return Vf(r)?{element:e,offset:t}:"img"===kt(r)?{element:r,offset:1}:An(r)?{element:r,offset:Ml(r).length}:{element:r,offset:Tn(r).length}}(a,u),c=Et.fromHtml('<span data-mce-bogus="all" style="display: inline-block;">\ufeff</span>'),qt(s.element,c),qf(c,function(){return In(c)}));Wf(e,i,t,l,r),l.cleanup()},Od=function(e,t,n){var r=n.startContainer,o=n.startOffset,i=n.endContainer,a=n.endOffset;t(Et.fromDom(r),Et.fromDom(i));var u=e.dom.createRng();u.setStart(r,o),u.setEnd(i,a),e.selection.setRng(n)},Bd=ir([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Pd=(Bd.before,Bd.on,Bd.after,function(e){return e.fold(u,u,u)}),Ld=ir([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Id={domRange:Ld.domRange,relative:Ld.relative,exact:Ld.exact,exactFromRange:function(e){return Ld.exact(e.start,e.soffset,e.finish,e.foffset)},getWin:function(e){return Tt(e.match({domRange:function(e){return Et.fromDom(e.startContainer)},relative:function(e,t){return Pd(e)},exact:function(e,t,n,r){return e}}))},range:function(e,t,n,r){return{start:e,soffset:t,finish:n,foffset:r}}},Md=dt().browser,Fd={isEditorUIElement:function(e){var t=e.className.toString();return-1!==t.indexOf("tox-")||-1!==t.indexOf("mce-")}},Ud=eu.DOM,zd=function(e){return e.editorManager.setActive(e)},Hd={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},jd=(Vd.create=function(e,t){var n=new Vd(e,Hd[e]||1);return t&&ne(t,function(e,t){n.attr(t,e)}),n},Vd.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},Vd.prototype.attr=function(e,t){var n,r=this;if("string"!=typeof e)return null!=e&&ne(e,function(e,t){r.attr(t,e)}),r;if(n=r.attributes){if(void 0===t)return n.map[e];if(null===t){if(e in n.map){delete n.map[e];for(var o=n.length;o--;)if(n[o].name===e)return n.splice(o,1),r}return r}if(e in n.map){for(o=n.length;o--;)if(n[o].name===e){n[o].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,r}},Vd.prototype.clone=function(){var e,t=new Vd(this.name,this.type);if(e=this.attributes){var n=[];n.map={};for(var r=0,o=e.length;r<o;r++){var i=e[r];"id"!==i.name&&(n[n.length]={name:i.name,value:i.value},n.map[i.name]=i.value)}t.attributes=n}return t.value=this.value,t.shortEnded=this.shortEnded,t},Vd.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},Vd.prototype.unwrap=function(){for(var e=this.firstChild;e;){var t=e.next;this.insert(e,this,!0),e=t}this.remove()},Vd.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},Vd.prototype.append=function(e){e.parent&&e.remove();var t=this.lastChild;return t?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},Vd.prototype.insert=function(e,t,n){e.parent&&e.remove();var r=t.parent||this;return n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},Vd.prototype.getAll=function(e){for(var t=[],n=this.firstChild;n;n=kd(n,this))n.name===e&&t.push(n);return t},Vd.prototype.children=function(){for(var e=[],t=this.firstChild;t;t=t.next)e.push(t);return e},Vd.prototype.empty=function(){if(this.firstChild){for(var e=[],t=this.firstChild;t;t=kd(t,this))e.push(t);for(var n=e.length;n--;)(t=e[n]).parent=t.firstChild=t.lastChild=t.next=t.prev=null}return this.firstChild=this.lastChild=null,this},Vd.prototype.isEmpty=function(e,t,n){void 0===t&&(t={});var r=this.firstChild;if(_d(this))return!1;if(r)do{if(1===r.type){if(r.attr("data-mce-bogus"))continue;if(e[r.name])return!1;if(_d(r))return!1}if(8===r.type)return!1;if(3===r.type&&!function(e){if($r(e.value)){var t=e.parent;return!t||"span"===t.name&&!t.attr("style")||!/^[ ]+$/.test(e.value)}}(r))return!1;if(3===r.type&&r.parent&&t[r.parent.name]&&$r(r.value))return!1;if(n&&n(r))return!1}while(r=kd(r,this));return!0},Vd.prototype.walk=function(e){return kd(this,null,e)},Vd);function Vd(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}function qd(e){return X(e.nodeValue)&&Te(e.nodeValue,So)}function $d(e){return(0===e.length?"":A(e,function(e){return"["+e+"]"}).join(",")+",")+'[data-mce-bogus="all"]'}function Wd(e,t,n){return document.createTreeWalker(e,t,n,!1)}function Kd(e){return Wd(e,NodeFilter.SHOW_COMMENT,function(e){return qd(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}function Xd(e){return Wd(e,NodeFilter.SHOW_TEXT,function(e){if(qd(e)){var t=e.parentNode;return t&&Ee(om,t.nodeName)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}return NodeFilter.FILTER_SKIP})}function Yd(e){return null!==Kd(e).nextNode()}function Gd(e){return null!==Xd(e).nextNode()}function Jd(e,t){return null!==t.querySelector($d(e))}function Qd(n,e){Y(e.querySelectorAll($d(n)),function(e){var t=Et.fromDom(e);"all"===vn(t,"data-mce-bogus")?In(t):Y(n,function(e){yn(t,e)&&Cn(t,e)})})}function Zd(e){for(var t=e.nextNode();null!==t;)t.nodeValue=null,t=e.nextNode()}function em(r,e){var t=[{condition:R(Jd,e),action:R(Qd,e)},{condition:Yd,action:im},{condition:Gd,action:am}],o=r,i=!1;return Y(t,function(e){var t=e.condition,n=e.action;t(o)&&(i||(o=r.cloneNode(!0),i=!0),n(o))}),o}function tm(o){return{compare:function(e,t){return e.nodeName===t.nodeName&&!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||Qc(e)||Qc(t));function n(n){var r={};return um(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r}function r(e,t){var n,r;for(r in e)if(Ee(e,r)){if(void 0===(n=t[r]))return;if(e[r]!==n)return;delete t[r]}for(r in t)if(Ee(t,r))return;return 1}}}}function nm(e){var u=[],s=(e=e||{}).indent,c=sm(e.indent_before||""),l=sm(e.indent_after||""),f=Zo.getEncodeFunc(e.entity_encoding||"raw",e.entities),d="html"===e.element_format;return{start:function(e,t,n){var r,o,i,a;if(s&&c[e]&&0<u.length&&0<(a=u[u.length-1]).length&&"\n"!==a&&u.push("\n"),u.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],u.push(" ",i.name,'="',f(i.value,!0),'"');u[u.length]=!n||d?">":" />",n&&s&&l[e]&&0<u.length&&0<(a=u[u.length-1]).length&&"\n"!==a&&u.push("\n")},end:function(e){var t;u.push("</",e,">"),s&&l[e]&&0<u.length&&0<(t=u[u.length-1]).length&&"\n"!==t&&u.push("\n")},text:function(e,t){0<e.length&&(u[u.length]=t?e:f(e))},cdata:function(e){u.push("<![CDATA[",e,"]]>")},comment:function(e){u.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?u.push("<?",e," ",f(t),"?>"):u.push("<?",e,"?>"),s&&u.push("\n")},doctype:function(e){u.push("<!DOCTYPE",e,">",s?"\n":"")},reset:function(){u.length=0},getContent:function(){return u.join("").replace(/\n$/,"")}}}function rm(t,g){void 0===g&&(g=oo());var p=nm(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f=t.validate,d={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}};p.reset();var m=function(e){var t=d[e.type];if(t)t(e);else{var n=e.name,r=e.shortEnded,o=e.attributes;if(f&&o&&1<o.length){var i=[];i.map={};var a=g.getElementRule(e.name);if(a){for(var u=0,s=a.attributesOrder.length;u<s;u++)(c=a.attributesOrder[u])in o.map&&(l=o.map[c],i.map[c]=l,i.push({name:c,value:l}));for(var c,l,u=0,s=o.length;u<s;u++)(c=o[u].name)in i.map||(l=o.map[c],i.map[c]=l,i.push({name:c,value:l}));o=i}}if(p.start(e.name,o,r),!r){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(n)}}};return 1!==e.type||t.inner?d[11](e):m(e),p.getContent()}}}var om=Nt.makeMap("NOSCRIPT STYLE SCRIPT XMP IFRAME NOEMBED NOFRAMES PLAINTEXT"," "),im=i(Zd,Kd),am=i(Zd,Xd),um=Nt.each,sm=Nt.makeMap,cm=new Set;function lm(e,t){return we(e.parseStyle(e.getAttrib(t,"style")))}function fm(n,r,o){return ve.from(o.container()).filter(Vn).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})}function dm(e){var t=e.container();return Vn(t)&&(0===t.data.length||No(t.data)&&Hl.isBookmarkNode(t.parentNode))}function mm(t,n){return function(e){return ve.from(Zs(t?0:-1,e)).filter(n).isSome()}}function gm(e){return Xn(e)&&"block"===wn(Et.fromDom(e),"display")}function pm(e){return Gn(e)&&!(Hn(t=e)&&"all"===t.getAttribute("data-mce-bogus"));var t}function hm(e){Xt(e),Ln(e,Et.fromHtml('<br data-mce-bogus="1">'))}function vm(n){Ut(n).each(function(t){Bt(t).each(function(e){go(n)&&Pr(t)&&go(e)&&In(t)})})}function bm(e,t){return o=D,Ve(r=t,n=e)?function(e,t){for(var n=y(t)?t:D,r=e.dom,o=[];null!==r.parentNode&&void 0!==r.parentNode;){var i=r.parentNode,a=Et.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(n,function(e){return o(e)||je(e,r)}).slice(0,-1):[];var n,r,o}function ym(e,t){return[e].concat(bm(e,t))}function Cm(e,t,n){return ef(e,t,n,dm)}function xm(e,t){return M(ym(Et.fromDom(t.container()),e),go)}function wm(e,n,r){return Cm(e,n.dom,r).forall(function(t){return xm(n,r).fold(function(){return!1===Qs(t,r,n.dom)},function(e){return!1===Qs(t,r,n.dom)&&Ve(e,Et.fromDom(t.container()))})})}function Sm(t,n,r){return xm(n,r).fold(function(){return Cm(t,n.dom,r).forall(function(e){return!1===Qs(e,r,n.dom)})},function(e){return Cm(t,e.dom,r).isNone()})}function Nm(e){return ic(e).exists(Pr)}function Em(e,t,n){var r=Q(U(ym(Et.fromDom(n.container()),t),go)).getOr(t);return Zl(e,r.dom,n).filter(Nm)}function km(e,t){return ic(t).exists(Pr)||Em(!0,e,t).isSome()}function _m(e,t){return ve.from(t.getNode(!0)).map(Et.fromDom).exists(Pr)||Em(!1,e,t).isSome()}function Am(e){return cs.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()}function Rm(e,t){return Q(U(ym(Et.fromDom(t.container()),e),go)).getOr(e)}function Dm(e,t){return Am(t)?Gg(t):Gg(t)||nf(Rm(e,t).dom,t).exists(Gg)}function Tm(e,t){return Am(t)?Yg(t):Yg(t)||tf(Rm(e,t).dom,t).exists(Yg)}function Om(e){return ic(e).bind(function(e){return hr(e,_n)}).exists(function(e){return T(["pre","pre-wrap"],wn(e,"white-space"))})}function Bm(e,t){return!Om(t)&&(ip(e,t)||up(e,t)||_m(e,t)||Dm(e,t))}function Pm(e,t){return!Om(t)&&(ap(e,t)||sp(e,t)||km(e,t)||Tm(e,t))}function Lm(e,t){return Bm(e,t)||Pm(e,(r=(n=t).container(),o=n.offset(),Vn(r)&&o<r.data.length?cs(r,o+1):n));var n,r,o}function Im(e,t){return sf(e.charAt(t))}function Mm(e){var t=e.container();return Vn(t)&&Te(t.data,wo)}function Fm(g,e){return ve.some(e).filter(Mm).bind(function(e){var t,n,r,o,i,a,u,s,c,l=e.container(),f=g,d=(i=l).data,m=cs(i,0);return(!Im(d,0)||Lm(f,m)?(s=(a=l).data,(c=A(u=s.split(""),function(e,t){return sf(e)&&0<t&&t<u.length-1&&el(u[t-1])&&el(u[t+1])?" ":e}).join(""))!==s&&(a.data=c,1)):(i.data=" "+d.slice(1),1))||(t=g,r=(n=l).data,o=cs(n,r.length-1),Im(r,r.length-1)&&!Lm(t,o)&&(n.data=r.slice(0,-1)+" ",1))?ve.some(e):ve.none()})}function Um(t){var e=Et.fromDom(t.getBody());t.selection.isCollapsed()&&Fm(e,cs.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})}function zm(e,t,n){var r,o,i,a,u,s,c,l;0!==n&&(o=pr(r=Et.fromDom(e),go).getOr(r),i=e.data.slice(t,t+n),a=t+n>=e.data.length&&Pm(o,cs(e,e.data.length)),u=0===t&&Bm(o,cs(e,0)),e.replaceData(t,n,(c=u,l=a,L(s=i,function(e,t){return Zc(t)||sf(t)?e.previousCharIsSpace||""===e.str&&c||e.str.length===s.length-1&&l?{previousCharIsSpace:!1,str:e.str+wo}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str)))}function Hm(e,t){var n=e.data.slice(t);zm(e,t,n.length-Qe(n).length)}function jm(e,t){var n=e.data.slice(0,t),r=n.length-Ze(n).length;zm(e,t-r,r)}function Vm(e,t,n,r){void 0===r&&(r=!0);var o=Ze(e.data).length,i=r?e:t,a=r?t:e;return r?i.appendData(a.data):i.insertData(0,a.data),In(Et.fromDom(a)),n&&Hm(i,o),i}function qm(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===cs.isTextPosition(n)&&o===r.parentNode&&i>cs.before(r).offset()?cs(t.container(),t.offset()-1):t;var n,r,o,i}function $m(e){return Vr(e.previousSibling)?ve.some((t=e.previousSibling,Vn(t)?cs(t,t.data.length):cs.after(t))):e.previousSibling?of(e.previousSibling):ve.none();var t}function Wm(e){return Vr(e.nextSibling)?ve.some((t=e.nextSibling,Vn(t)?cs(t,0):cs.before(t))):e.nextSibling?rf(e.nextSibling):ve.none();var t}function Km(r,o){return $m(o).orThunk(function(){return Wm(o)}).orThunk(function(){return e=r,n=cs.before((t=o).previousSibling||t.parentNode),nf(e,n).fold(function(){return tf(e,cs.after(t))},ve.some);var e,t,n})}function Xm(n,r){return Wm(r).orThunk(function(){return $m(r)}).orThunk(function(){return tf(e=n,cs.after(t=r)).fold(function(){return nf(e,cs.before(t))},ve.some);var e,t})}function Ym(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})}function Gm(e,t){return t&&Ee(e.schema.getBlockElements(),kt(t))}function Jm(e){if(Kr(e)){var t=Et.fromHtml('<br data-mce-bogus="1">');return Xt(e),Ln(e,t),ve.some(cs.before(t.dom))}return ve.none()}function Qm(t,n,e,r){void 0===r&&(r=!0);var o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=(p=n,h=t.getBody(),v=e.dom,(p?Xm:Km)(h,v).map(R(qm,v))),y=pr(e,R(Gm,t),(o=t.getBody(),function(e){return e.dom===o})),C=(u=b,i=a=e,s=Ee(t.schema.getTextInlineElements(),kt(i)),m=Bt(a).filter(An),g=Pt(a).filter(An),In(a),l=g,f=u,d=function(e,t,n){var r=e.dom,o=t.dom,i=r.data.length;return Vm(r,o,s),n.container()===o?cs(r,i):n},((c=m).isSome()&&l.isSome()&&f.isSome()?ve.some(d(c.getOrDie(),l.getOrDie(),f.getOrDie())):ve.none()).orThunk(function(){return s&&(m.each(function(e){return jm(e.dom,e.dom.length)}),g.each(function(e){return Hm(e.dom,0)})),u}));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):y.bind(Jm).fold(function(){r&&Ym(t,n,C)},function(e){r&&Ym(t,n,ve.some(e))})}function Zm(e){return yu(e,"td,th")}function eg(e,t){return{start:e,end:t}}function tg(e,t){return yr(Et.fromDom(e),"td,th",t)}function ng(e){return!je(e.start,e.end)}function rg(e,n){return Tl(e.start,n).bind(function(t){return Tl(e.end,n).bind(function(e){return je(t,e)?ve.some(t):ve.none()})})}function og(e){return function(t){return rg(t,e).map(function(e){return{rng:t,table:e,cells:Zm(e)}})}}function ig(e,t,n,r){if(n.collapsed||!e.forall(ng))return ve.none();if(t.isSameTable){var o=e.bind(og(r));return ve.some({start:o,end:o})}var i,a,u=tg(n.startContainer,r),s=tg(n.endContainer,r),c=u.bind((a=r,function(t){return Tl(t,a).bind(function(e){return Z(Zm(e)).map(function(e){return eg(t,e)})})})).bind(og(r)),l=s.bind((i=r,function(t){return Tl(t,i).bind(function(e){return Q(Zm(e)).map(function(e){return eg(e,t)})})})).bind(og(r));return ve.some({start:c,end:l})}function ag(e,t){return z(e,function(e){return je(e,t)})}function ug(n){return dn(ag(n.cells,n.rng.start),ag(n.cells,n.rng.end),function(e,t){return n.cells.slice(e,t+1)})}function sg(e,t){var n=t.startTable,r=t.endTable,o=e.cloneRange();return n.each(function(e){return o.setStartAfter(e.dom)}),r.each(function(e){return o.setEndBefore(e.dom)}),o}function cg(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=(n=e,function(e){return je(n,e)}),y=dn(tg((r=t).startContainer,o=b),tg(r.endContainer,o),eg),C=(l=b,f=x((c=t).startContainer),d=x(c.endContainer),m=f.isSome(),g=d.isSome(),p=dn(f,d,je).getOr(!1),{startTable:f,endTable:d,isStartInTable:m,isEndInTable:g,isSameTable:p,isMultiTable:!p&&m&&g});function x(e){return Tl(Et.fromDom(e),l)}return h=t,v=b,y.exists(function(e){return!ng(t=e)&&rg(t,v).exists(function(e){var t=e.dom.rows;return 1===t.length&&1===t[0].cells.length})&&Ol(e.start,h);var t})?y.map(function(e){return fp.singleCellTable(t,e.start)}):C.isMultiTable?ig(y,u=C,s=t,b).bind(function(e){var t=e.start,n=e.end,r=t.bind(ug).getOr([]),o=n.bind(ug).getOr([]);if(0<r.length&&0<o.length){var i=sg(s,u);return ve.some(fp.multiTable(r,o,i))}return ve.none()}):ig(y,i=C,a=t,b).bind(function(e){var t=e.start,n=e.end;return t.or(n)}).bind(function(e){var t=i.isSameTable,n=ug(e).getOr([]);if(t&&e.cells.length===n.length)return ve.some(fp.fullTable(e.table));if(0<n.length){if(t)return ve.some(fp.partialTable(n,ve.none()));var r=sg(a,i);return ve.some(fp.partialTable(n,ve.some(_e(_e({},i),{rng:r}))))}return ve.none()})}function lg(e){return Y(e,function(e){Cn(e,"contenteditable"),hm(e)}),0}function fg(e,t,n,r){var o=n.cloneRange();r?(o.setStart(n.startContainer,n.startOffset),o.setEndAfter(t.dom.lastChild)):(o.setStartBefore(t.dom.firstChild),o.setEnd(n.endContainer,n.endOffset)),mp(e,o,t,!1)}function dg(e){var t=Dl(e),n=Et.fromDom(e.selection.getNode());Jn(n.dom)&&Kr(n)?e.selection.setCursorLocation(n.dom,0):e.selection.collapse(!0),1<t.length&&F(t,function(e){return je(e,n)})&&pn(n,"data-mce-selected","1")}function mg(s,c,e){var l=s.selection.getRng();return lg(e.bind(function(e){var t,n,r,o=e.rng,i=e.isStartInTable,a=(t=i?o.endContainer:o.startContainer,ve.from(s.dom.getParent(t,s.dom.isBlock)).map(Et.fromDom));o.deleteContents(),n=s,r=i,a.filter(Kr).each(function(e){r?In(e):(hm(e),n.selection.setCursorLocation(e.dom,0))});var u=i?c[0]:c[c.length-1];return fg(s,u,l,i),Kr(u)?ve.none():ve.some(i?c.slice(1):c.slice(0,-1))}).getOr(c)),dg(s),!0}function gg(e,t,n,r){var o=e.selection.getRng(),i=t[0],a=n[n.length-1];fg(e,i,o,!0),fg(e,a,o,!1);var u=Kr(i)?t:t.slice(1),s=Kr(a)?n:n.slice(0,-1);return lg(u.concat(s)),r.deleteContents(),dg(e),!0}function pg(e,t){return Qm(e,!1,t),!0}function hg(e,t){return M(ym(t,e),yo)}function vg(e,t){return(e?tp:np)(t)}function bg(f,d,s){var m=Et.fromDom(f.getBody());return gp(m,s).fold(function(){return o=f,i=d,a=m,e=s,u=cs.fromRangeStart(o.selection.getRng()),hg(a,e).bind(function(e){return Kr(e)?pp(o,e):(t=a,n=e,r=u,Hc(i,o.getBody(),r).bind(function(e){return hg(t,Et.fromDom(e.getNode())).map(function(e){return!1===je(e,n)})}));var t,n,r}).getOr(!1)||(n=d,r=cs.fromRangeStart((t=f).selection.getRng()),vg(n,r)||Zl(n,t.getBody(),r).exists(function(e){return vg(n,e)}));var o,i,a,e,u,t,n,r},function(e){return n=d,r=m,o=e,i=cs.fromRangeStart((t=f).selection.getRng()),(Kr(o)?pp(t,o):(u=r,c=o,l=i,Hc(s=n,(a=t).getBody(),l).bind(function(e){return r=s,o=l,i=e,rf((n=c).dom).bind(function(t){return of(n.dom).map(function(e){return r?o.isEqual(t)&&i.isEqual(e):o.isEqual(e)&&i.isEqual(t)})}).getOr(!0)?pp(a,c):(t=c,gp(u,Et.fromDom(e.getNode())).map(function(e){return!1===je(e,t)}));var t,n,r,o,i}).or(ve.some(!0)))).getOr(!1);var a,u,s,c,l,t,n,r,o,i})}function yg(e,t){var n,r,o,i,a,u,s,c,l=Et.fromDom(e.selection.getStart(!0)),f=Dl(e);return e.selection.isCollapsed()&&0===f.length?bg(e,t,l):(r=l,o=f,i=Et.fromDom((n=e).getBody()),a=n.selection.getRng(),0!==o.length?mg(n,o,ve.none()):(u=n,c=a,gp(s=i,r).fold(function(){return t=u,cg(s,c).map(function(e){return e.fold(R(mp,t),R(pg,t),R(mg,t),R(gg,t))});var t},function(e){return pp(u,e)}).getOr(!1)))}function Cg(e){return e.collapsed?e:(a=e,u=cs.fromRangeStart(a),s=cs.fromRangeEnd(a),c=a.commonAncestorContainer,Zl(!1,c,s).map(function(e){return!Qs(u,s,c)&&Qs(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a));var a,u,s,c}function xg(e,t){var n,r,o,i,a,u=t.firstChild,s=t.lastChild;return u&&"meta"===u.name&&(u=u.next),r=s=s&&"mce_marker"===s.attr("id")?s.prev:s,o=(n=e).getNonEmptyElements(),r&&(r.isEmpty(o)||(i=r,n.getBlockElements()[i.name]&&i.firstChild&&i.firstChild===i.lastChild&&("br"===(a=i.firstChild).name||a.value===wo)))&&(s=s.prev),u&&u===s&&("ul"===u.name||"ol"===u.name)}function wg(e){return 0<e.length&&(!(r=e[e.length-1]).firstChild||(t=r)&&t.firstChild&&t.firstChild===t.lastChild&&((n=t.firstChild).data===wo||Kn(n)))?e.slice(0,-1):e;var t,n,r}function Sg(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null}function Ng(e,t){var n=cs.after(e),r=Mc(t).prev(n);return r?r.toRange():null}function Eg(e,o,i,t){function n(e){var t=cs.fromRangeStart(i),n=Mc(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||Sg(o,r.getNode())!==R}var r,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x,w,S,N,E,k,_,A=(r=o,c=e.serialize(t),u=(a=r.createFragment(c)).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),R=Sg(o,i.startContainer),D=wg(U(A.firstChild.childNodes,function(e){return"LI"===e.nodeName})),T=o.getRoot();return n(1)?(S=T,_=(w=R).parentNode,Nt.each(D,function(e){_.insertBefore(e,w)}),N=S,E=cs.before(w),(k=Mc(N).next(E))?k.toRange():null):n(2)?(l=R,d=T,o.insertAfter((f=D).reverse(),l),Ng(f[0],d)):(g=D,p=T,h=m=R,b=(v=i).cloneRange(),y=v.cloneRange(),b.setStartBefore(h),y.setEndAfter(h),C=[b.cloneContents(),y.cloneContents()],(x=m.parentNode).insertBefore(C[0],m),Nt.each(g,function(e){x.insertBefore(e,m)}),x.insertBefore(C[1],m),x.removeChild(m),Ng(g[g.length-1],p))}function kg(e,t,n){var r,o,i,a,u=e.selection,s=e.dom;/^ | $/.test(t)&&(r=s,o=u.getRng(),i=t,i=Bm(a=Et.fromDom(r.getRoot()),cs.fromRangeStart(o))?i.replace(/^ /,"&nbsp;"):i.replace(/^&nbsp;/," "),t=i=Pm(a,cs.fromRangeEnd(o))?i.replace(/(&nbsp;| )(<br( \/)>)?$/,"&nbsp;"):i.replace(/&nbsp;(<br( \/)?>)?$/," "));var c=e.parser,l=n.merge,f=rm({validate:e.getParam("validate")},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;</span>',m=e.fire("BeforeSetContent",{content:t,format:"html",selection:!0,paste:n.paste});if(m.isDefaultPrevented())e.fire("SetContent",{content:m.content,format:"html",selection:!0,paste:n.paste});else{t=m.content,-1===(t=n.preserve_zwsp?t:Eo(t)).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var g,p,h=(g=u.getRng()).startContainer||(g.parentElement?g.parentElement():null),v=e.getBody();h===v&&u.isCollapsed()&&s.isBlock(v.firstChild)&&((p=v.firstChild)&&!e.schema.getShortEndedElements()[p.nodeName])&&s.isEmpty(v.firstChild)&&((g=s.createRng()).setStart(v.firstChild,0),g.setEnd(v.firstChild,0),u.setRng(g)),u.isCollapsed()||function(e){var t=e.dom,n=Cg(e.selection.getRng());e.selection.setRng(n);var r,o=t.getParent(n.startContainer,hp),i=n;null!==(r=o)&&r===t.getParent(i.endContainer,hp)&&Ol(Et.fromDom(r),i)?mp(e,n,Et.fromDom(o)):e.getDoc().execCommand("Delete",!1,null)}(e);var b,y,C,x,w,S,N,E,k,_,A,R,D,T,O={context:(I=u.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0},B=c.parse(t,O);if(!0===n.paste&&xg(e.schema,B)&&Sg(s,I))return g=Eg(f,s,u.getRng(),B),u.setRng(g),void e.fire("SetContent",m);if(function(){for(var e=B;e=e.walk();)1===e.type&&e.attr("data-mce-fragment","1")}(),"mce_marker"===(L=B.lastChild).attr("id"))for(var P=L,L=L.prev;L;L=L.walk(!0))if(3===L.type||!s.isBlock(L.name)){e.schema.isValidChild(L.parent.name,"span")&&L.parent.insert(P,L,"br"===L.name);break}if(e._selectionOverrides.showBlockCaretContainer(I),O.invalid){e.selection.setContent(d);var I=u.getNode(),M=e.getBody();for(9===I.nodeType?I=L=M:L=I;L!==M;)L=(I=L).parentNode;t=I===M?M.innerHTML:s.getOuterHTML(I),t=f.serialize(c.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return f.serialize(B)}))),I===M?s.setHTML(M,t):s.setOuterHTML(I,t)}else b=e,y=t=f.serialize(B),"all"===(C=I).getAttribute("data-mce-bogus")?C.parentNode.insertBefore(b.dom.createFragment(y),C):(x=C.firstChild,w=C.lastChild,!x||x===w&&"BR"===x.nodeName?b.dom.setHTML(C,y):b.selection.setContent(y));N=l,_=(S=e).schema.getTextInlineElements(),A=S.dom,N&&(E=S.getBody(),k=tm(A),Nt.each(A.select("*[data-mce-fragment]"),function(e){if(V(_[e.nodeName.toLowerCase()])&&j(lm(A,e),function(e){return!cm.has(e)}))for(var t=e.parentNode;V(t)&&t!==E&&!function(r,o,i){function a(e){var t=r.getStyle(o,e),n=r.getStyle(i,e);return Be(t)&&Be(n)&&t!==n}var e=lm(r,o),u=lm(r,i);return F(e,function(t){function e(e){return F(e,function(e){return e===t})}if(e(u)||!e(Xg))return a(t);var n=U(u,function(t){return F(Xg,function(e){return Ge(t,e)})});return F(n,a)})}(A,e,t);t=t.parentNode)if(k.compare(t,e)){A.remove(e,!0);break}})),function(n,e){var t,r=n.dom,o=n.selection;if(e){o.scrollIntoView(e);var i=bf(n.getBody(),e);if("false"===r.getContentEditable(i))return r.remove(e),o.select(i);var a,u=r.createRng(),s=e.previousSibling;Vn(s)?(u.setStart(s,s.nodeValue.length),xt.ie||(a=e.nextSibling,Vn(a)&&(s.appendData(a.data),a.parentNode.removeChild(a)))):(u.setStartBefore(e),u.setEndBefore(e));var c=r.getParent(e,r.isBlock);r.remove(e),c&&r.isEmpty(c)&&(n.$(c).empty(),u.setStart(c,0),u.setEnd(c,0),hp(c)||c.getAttribute("data-mce-fragment")||!(t=function(e){var t=cs.fromRangeStart(e);if(t=Mc(n.getBody()).next(t))return t.toRange()}(u))?r.add(c,r.create("br",{"data-mce-bogus":"1"})):(u=t,r.remove(c))),o.setRng(u)}}(e,s.get("mce_marker")),R=e.getBody(),Nt.each(R.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),D=s,T=u.getStart(),ve.from(D.getParent(T,"td,th")).map(Et.fromDom).each(vm),e.fire("SetContent",m),e.addVisual()}}function _g(e){return e instanceof jd}function Ag(e,t,n){var r;e.dom.setHTML(e.getBody(),t),!0!==n&&Cd(r=e)&&rf(r.getBody()).each(function(e){var t=e.getNode(),n=cn(t)?rf(t).getOr(e):e;r.selection.setRng(n.toRange())})}function Rg(u,s,e){var t,n=(t=s,_e(_e({format:"html"},e),{set:!0,content:_g(t)?"":t})),c=e.no_events?n:u.fire("BeforeSetContent",n);return _g(s)||(s=c.content),ve.from(u.getBody()).fold(J(s),function(e){return _g(s)?function(e,t,n,r){var o,i,u,a;o=e.parser.getNodeFilters(),i=e.parser.getAttributeFilters(),u=n,a=function(e,n){var t,r,o={},i={},a=[];for(t in u.firstChild&&vp(u.firstChild,function(t){Y(e,function(e){e.name===t.name&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})}),Y(n,function(e){"string"==typeof t.attr(e.name)&&(i[e.name]?i[e.name].nodes.push(t):i[e.name]={filter:e,nodes:[t]})})}),o)Ee(o,t)&&a.push(o[t]);for(r in i)Ee(i,r)&&a.push(i[r]);return a}(o,i),Y(a,function(t){Y(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})});var s=rm({validate:e.validate},e.schema).serialize(n);return r.content=Eo(Co(Et.fromDom(t))?s:Nt.trim(s)),Ag(e,r.content,r.no_selection),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=Eo(r=s)).length||/^\s+$/.test(r)?(i='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+i+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&(r="<li>"+i+"</li>"),r=(a=ks(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),a.toLowerCase())?(r=i,t.dom.createHTML(a,_s(t),r)):r||'<br data-mce-bogus="1">',Ag(t,r,o.no_selection),t.fire("SetContent",o)):("raw"!==o.format&&(r=rm({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=Co(Et.fromDom(n))?r:Nt.trim(r),Ag(t,o.content,o.no_selection),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})}function Dg(e){return y(e)?e:D}function Tg(i,e,t){var n=e(i),a=Dg(t);return n.orThunk(function(){return a(i)?ve.none():function(e){for(var t=i.dom,n=Dg(a);t.parentNode;){var t=t.parentNode,r=Et.fromDom(t),o=e(r);if(o.isSome())return o;if(n(r))break}return ve.none()}(e)})}function Og(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++){var i=r[o];if(gl(i)&&!1===i.inherit&&e.dom.is(t,i.selector))return 1}}function Bg(t,e,n,r,o){var i=t.dom.getRoot();return e!==i&&(e=t.dom.getParent(e,function(e){return!!Og(t,e,n)||e.parentNode===i||!!yp(t,e,n,r,!0)}),!!yp(t,e,n,r,o))}function Pg(e,t,n){return!!bp(t,n.inline)||!!bp(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)}function Lg(e,t,n,r,o,i){var a=n[r];if(y(n.onmatch))return n.onmatch(t,n,r);if(a)if(b(a.length)){for(var u in a)if(Ee(a,u)){var s="attributes"===r?e.getAttrib(t,u):cl(e,t,u),c=al(a[u],i),l=K(s)||Pe(s);if(!l||!K(c)){if(o&&l&&!n.exact)return;if((!o||n.exact)&&!bp(s,sl(e,c,u)))return}}}else for(var f=0;f<a.length;f++)if("attributes"===r?e.getAttrib(t,a[f]):cl(e,t,a[f]))return 1;return 1}function Ig(e,t,n,r,o){if(r)return Bg(e,r,t,n,o);if(r=e.selection.getNode(),Bg(e,r,t,n,o))return!0;var i=e.selection.getStart();return!(i===r||!Bg(e,i,t,n,o))}function Mg(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==Cp||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length}function Fg(e){if(e){var t=new Dr(e,e);for(e=t.current();e;e=t.next())if(Vn(e))return e}return null}function Ug(e){var t=Et.fromTag("span");return hn(t,{id:xp,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Ln(t,Et.fromText(Cp)),t}function zg(e,t,n){void 0===n&&(n=!0);var r,o,i,a,u,s,c,l,f=e.dom,d=e.selection;Mg(t)?Qm(e,!1,Et.fromDom(t),n):(r=d.getRng(),o=f.getParent(t,f.isBlock),i=r.startContainer,a=r.startOffset,u=r.endContainer,s=r.endOffset,(l=Fg(t))&&l.nodeValue.charAt(0)===Cp&&l.deleteData(0,1),c=l,f.remove(t,!0),i===c&&0<a&&r.setStart(c,a-1),u===c&&0<s&&r.setEnd(c,s-1),o&&f.isEmpty(o)&&hm(Et.fromDom(o)),d.setRng(r))}function Hg(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)zg(e,t,n);else if(!(t=qc(e.getBody(),o.getStart())))for(;t=r.get(xp);)zg(e,t,!1)}function jg(e,t){return e.appendChild(t),t}function Vg(e,t){var n=P(e,function(e,t){return jg(e,t.cloneNode(!1))},t);return jg(n,n.ownerDocument.createTextNode(Cp))}function qg(o,e,t,i,n,r){var a,u,s=o.formatter,c=o.dom,l=U(we(s.get()),function(e){return e!==i&&!Te(e,"removeformat")});if(0<U((a=o,u=t,L(l,function(e,t){var n=dl(a,t);return a.formatter.matchNode(u,t,{},n)?e.concat([t]):e},[])),function(e){return n=i,r=["inline","block","selector","attributes","styles","classes"],!F((t=o).formatter.get(e),function(e){var i=a(e);return F(t.formatter.get(n),function(e){var t,n=a(e),r=i,o=n;return d(t=void 0===t?p:t).eq(r,o)})});function a(e){return ae(e,function(e,t){return F(r,function(e){return e===t})})}var t,n,r}).length){var f=t.cloneNode(!1);return c.add(e,f),s.remove(i,n,f,r),c.remove(f),ve.some(f)}return ve.none()}function $g(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=e.dom,C=e.selection,x=[],w=C.getRng(),S=w.startContainer,N=w.startOffset,E=S;for(3===S.nodeType&&(N!==S.nodeValue.length&&(o=!0),E=E.parentNode);E;){if(yp(e,E,t,n,r)){i=E;break}E.nextSibling&&(o=!0),x.push(E),E=E.parentNode}i&&(o?(a=C.getBookmark(),w.collapse(!0),u=Pf(kl(e,w,e.formatter.get(t),!0)),e.formatter.remove(t,n,u,r),C.moveToBookmark(a)):(s=qc(e.getBody(),i),d=c=Ug(!1).dom,(p=(g=e.dom).getParent(m=null!==s?s:i,R(ol,e)))&&g.isEmpty(p)?m.parentNode.replaceChild(d,m):(h=Et.fromDom(m),v=yu(h,"br"),b=U(function(){for(var e=[],t=h.dom;t;)e.push(Et.fromDom(t)),t=t.lastChild;return e}().slice(-1),Pr),v.length===b.length&&Y(b,In),g.isEmpty(m)?m.parentNode.replaceChild(d,m):g.insertAfter(d,m)),l=qg(e,c,i,t,n,r),f=Vg(x.concat(l.toArray()),c),zg(e,s,!1),C.setCursorLocation(f,1),y.isEmpty(i)&&y.remove(i)))}function Wg(e,t){var n=e.schema.getTextInlineElements();return Ee(n,kt(t))&&!Vc(t.dom)&&!sn(t.dom)}Y(["margin","margin-left","margin-right","margin-top","margin-bottom","padding","padding-left","padding-right","padding-top","padding-bottom","border","border-width","border-style","border-color","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","float","position","left","right","top","bottom","z-index","display","transform","width","max-width","min-width","height","max-height","min-height","overflow","overflow-x","overflow-y","text-overflow","vertical-align","transition","transition-delay","transition-duration","transition-property","transition-timing-function"],function(e){cm.add(e)});var Kg,Xg=["font","text-decoration","text-emphasis"],Yg=R(fm,!0,Zc),Gg=R(fm,!1,Zc),Jg=mm(!0,gm),Qg=mm(!1,gm),Zg=mm(!0,Qn),ep=mm(!1,Qn),tp=mm(!0,cn),np=mm(!1,cn),rp=mm(!0,pm),op=mm(!1,pm),ip=R(Sm,!1),ap=R(Sm,!0),up=R(wm,!1),sp=R(wm,!0),cp=R(Em,!1),lp=R(Em,!0),fp=ir([{singleCellTable:["rng","cell"]},{fullTable:["table"]},{partialTable:["cells","outsideDetails"]},{multiTable:["startTableCells","endTableCells","betweenRng"]}]),dp=function(e){var t;return(8===_t(t=e)||"#comment"===kt(t)?Bt:Ut)(e).bind(dp).orThunk(function(){return ve.some(e)})},mp=function(e,t,n,r){void 0===r&&(r=!0),t.deleteContents();var o,i=dp(n).getOr(n),a=Et.fromDom(e.dom.getParent(i.dom,e.dom.isBlock));return Kr(a)&&(hm(a),r&&e.selection.setCursorLocation(a.dom,0)),je(n,a)||Y((fn(Ot(a),n)?[]:Ot(o=a).map(Tn).map(function(e){return U(e,function(e){return!je(o,e)})}).getOr([])).concat(Tn(n)),function(e){je(e,a)||Ve(e,a)||!Kr(e)||In(e)}),!0},gp=function(e,t){return M(ym(t,e),function(e){return _n(e)&&"caption"===kt(e)})},pp=function(e,t){return hm(t),e.selection.setCursorLocation(t.dom,0),ve.some(!0)},hp=Jn,vp=function(e,t){t(e),e.firstChild&&vp(e.firstChild,t),e.next&&vp(e.next,t)},bp=ul,yp=function(e,t,n,r,o){var i=e.formatter.get(n),a=e.dom;if(i&&t)for(var u=0;u<i.length;u++){var s=i[u];if(Pg(e.dom,t,s)&&Lg(a,t,s,"attributes",o,r)&&Lg(a,t,s,"styles",o,r)){var c=s.classes;if(c)for(var l=0;l<c.length;l++)if(!e.dom.hasClass(t,al(c[l],r)))return;return s}}},Cp=So,xp="_mce_caret",wp={},Sp=fe,Np=ce;function Ep(e){return Hn(e)&&!Qc(e)&&!Vc(e)&&!sn(e)}function kp(e,t){for(var n=e;n;n=n[t]){if(Vn(n)&&Be(n.data))return e;if(Hn(n)&&!Qc(n))return n}return e}function _p(e,t,n){var r=tm(e);if(t&&n&&(t=kp(t,"previousSibling"),n=kp(n,"nextSibling"),r.compare(t,n))){for(var o=t.nextSibling;o&&o!==n;){var i=o,o=o.nextSibling;t.appendChild(i)}return e.remove(n),Nt.each(Nt.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n}function Ap(e,t,n,r){var o;r&&!1!==t.merge_siblings&&(o=_p(e,rl(r),r),_p(e,o,rl(o,!0)))}function Rp(t,n){return function(e){return!(!e||!cl(t,e,n))}}function Dp(r,o,i){return function(e){var t,n;r.setStyle(e,o,i),""===e.getAttribute("style")&&e.removeAttribute("style"),t=r,"SPAN"===(n=e).nodeName&&0===t.getAttribs(n).length&&t.remove(n,!0)}}function Tp(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)}function Op(e,t,n){var r,o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"];return Hn(o)&&(r=o.childNodes.length-1,!n&&i&&i--,o=o.childNodes[r<i?r:i]),Vn(o)&&n&&i>=o.nodeValue.length&&(o=new Dr(o,e.getBody()).next()||o),Vn(o)&&!n&&0===i&&new Dr(o,e.getBody()).prev()||o}function Bp(e,t){var n=t?"firstChild":"lastChild";if(/^(TR|TH|TD)$/.test(e.nodeName)&&e[n]){var r=e[n];return"TR"===e.nodeName&&r[n]||r}return e}function Pp(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o}function Lp(e,t,n,r,o){var i=Et.fromDom(t),a=Et.fromDom(e.create(r,o));return Kt(a,(n?It:Lt)(i)),n?(qt(i,a),Wt(a,i)):($t(i,a),Ln(a,i)),a.dom}function Ip(e,t,n,r){var o=rl(t,n,r);return K(o)||"BR"===o.nodeName||e.isBlock(o)}function Mp(e,r,o,t,i){var n,a,u=e.dom,s=u,c=t;if(!(pl(a=r)&&Rh(c,a.inline)||ml(a)&&Rh(c,a.block)||gl(a)&&(Hn(c)&&s.is(c,a.selector))||r.links&&"A"===t.nodeName))return kh.keep();var l,f,d,m,g,p,h,v,b=t;if(pl(r)&&"all"===r.remove&&S(r.preserve_attributes)){var y=U(u.getAttribs(b),function(e){return T(r.preserve_attributes,e.name.toLowerCase())});if(u.removeAllAttribs(b),Y(y,function(e){return u.setAttrib(b,e.name,e.value)}),0<y.length)return kh.rename("span")}if("all"!==r.remove){Ah(r.styles,function(e,t){e=sl(u,al(e,o),t+""),N(t)&&(t=e,i=null),!r.remove_similar&&i&&!Rh(cl(u,i,t),e)||u.setStyle(b,t,""),n=!0}),n&&""===u.getAttrib(b,"style")&&(b.removeAttribute("style"),b.removeAttribute("data-mce-style")),Ah(r.attributes,function(e,t){var n;if(e=al(e,o),N(t)&&(t=e,i=null),r.remove_similar||!i||Rh(u.getAttrib(i,t),e))if("class"===t&&(e=u.getAttrib(b,t))&&(n="",Y(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))u.setAttrib(b,t,n);else{if(_h.test(t)&&b.removeAttribute("data-mce-"+t),"style"===t&&on(["li"])(b)&&"none"===u.getStyle(b,"list-style-type"))return b.removeAttribute(t),void u.setStyle(b,"list-style-type","none");"class"===t&&b.removeAttribute("className"),b.removeAttribute(t)}}),Ah(r.classes,function(e){e=al(e,o),i&&!u.hasClass(i,e)||u.removeClass(b,e)});for(var C=u.getAttribs(b),x=0;x<C.length;x++){var w=C[x].nodeName;if(0!==w.indexOf("_")&&0!==w.indexOf("data-"))return kh.keep()}}return"none"!==r.remove?(l=e,d=r,p=(f=b).parentNode,h=l.dom,v=ks(l),ml(d)&&(v?p===h.getRoot()&&(d.list_block&&Rh(f,d.list_block)||Y(xe(f.childNodes),function(e){il(l,v,e.nodeName.toLowerCase())?m?m.appendChild(e):(m=Pp(h,e,v),h.setAttribs(m,l.settings.forced_root_block_attrs)):m=null})):h.isBlock(f)&&!h.isBlock(p)&&(Ip(h,f,!1)||Ip(h,f.firstChild,!0,!0)||f.insertBefore(h.create("br"),f.firstChild),Ip(h,f,!0)||Ip(h,f.lastChild,!1,!0)||f.appendChild(h.create("br")))),gl(g=d)&&pl(g)&&fn(ue(g,"mixed"),!0)&&!Rh(d.inline,f)||h.remove(f,!0),kh.removed()):kh.keep()}function Fp(t,e,n,r,o){return Mp(t,e,n,r,o).fold(D,function(e){return t.dom.rename(r,e),!0},w)}function Up(u,s,c,e,l){function a(e){var n,r,o,i,a,t=(r=s,o=c,i=l,Y(fl((n=u).dom,e.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=yp(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l=e.dom;if(n){for(var f=n.parentNode,d=r.parentNode;d&&d!==f;d=d.parentNode){for(var m=l.clone(d,!1),g=0;g<t.length&&null!==(m=function(t,e,n){return Mp(t,e,u,n,n).fold(J(n),function(e){return t.dom.createFragment().appendChild(n),t.dom.rename(n,e)},J(null))}(e,t[g],m));g++);m&&(s&&m.appendChild(s),c=c||m,s=m)}!i||a.mixed&&l.isBlock(n)||(r=l.split(n,r)),s&&(o.parentNode.insertBefore(s,o),c.appendChild(o),pl(a)&&Ap(l,a,0,s))}return r}(u,m,t,e,e,!0,g,c)}function f(t){return F(m,function(e){return Fp(u,e,c,t,t)})}function d(e){var t,n=h.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChild"];return Qc(t=r)&&Hn(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),Vn(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),h.remove(n,!0),r}function t(e){var t=kl(u,e,m,e.collapsed);if(g.split){if(t=Pf(t),(r=Op(u,t,!0))!==(o=Op(u,t))){if(r=Bp(r,!0),o=Bp(o,!1),Tp(h,r,o)){var n=ve.from(r.firstChild).getOr(r);return a(Lp(h,n,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void d(!0)}if(Tp(h,o,r))return n=ve.from(o.lastChild).getOr(o),a(Lp(h,n,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void d(!1);var r=Pp(h,r,"span",{id:"_start","data-mce-type":"bookmark"}),o=Pp(h,o,"span",{id:"_end","data-mce-type":"bookmark"}),i=h.createRng();i.setStartAfter(r),i.setEndBefore(o),_l(h,i,function(e){Y(e,function(e){Qc(e)||Qc(e.parentNode)||a(e)})}),a(r),a(o),r=d(!0),o=d()}else r=o=a(r);t.startContainer=r.parentNode||r,t.startOffset=h.nodeIndex(r),t.endContainer=o.parentNode||o,t.endOffset=h.nodeIndex(o)+1}_l(h,t,function(e){Y(e,v)})}var n,m=u.formatter.get(s),g=m[0],p=!0,h=u.dom,r=u.selection,v=function(t){var e=!0,n=!1;Hn(t)&&h.getContentEditable(t)&&(e=p,p="true"===h.getContentEditable(t),n=!0);var r,o,i=xe(t.childNodes);if(p&&!n&&(r=f(t)||F(m,function(e){return Pg(h,t,e)}),o=t.parentNode,!r&&V(o)&&hl(g)&&f(o)),g.deep&&i.length){for(var a=0;a<i.length;a++)v(i[a]);n&&(p=e)}Y(["underline","line-through","overline"],function(e){Hn(t)&&u.dom.getStyle(t,"text-decoration")===e&&t.parentNode&&ll(h,t.parentNode)===e&&Fp(u,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:e}},null,t)})};if(e)return tl(e)?((n=h.createRng()).setStartBefore(e),n.setEndAfter(e),t(n)):t(e),void wf(u,s,e,c);if("false"!==h.getContentEditable(r.getNode()))r.isCollapsed()&&pl(g)&&!Dl(u).length?$g(u,s,c,l):(Il(r,!0,function(){Ll(u,t)}),pl(g)&&Ig(u,s,c,r.getStart())&&nl(h,r,r.getRng()),u.nodeChanged()),wf(u,s,e,c);else{e=r.getNode();for(var o=0;o<m.length&&(!m[o].ceFalseOverride||!Fp(u,m[o],c,e,e));o++);wf(u,s,e,c)}}function zp(e){return Hn(e)&&!Qc(e)&&!Vc(e)&&!sn(e)}function Hp(e){return Ee(e,"vars")}function jp(n,e,r,o,i){return I(e,function(e){var t=n.formatter.matchNode(e,r,null!=i?i:{},o);return!b(t)},function(e){return Og(n,e,r)||!o&&V(n.formatter.matchNode(e,r,i,!0))})}function Vp(e,t){var n=null!=t?t:Bh(e);return U(fl(e.dom,n),function(e){return Hn(e)&&!sn(e)})}function qp(e,o,i,a,t,n){var r,u,s,c,l,f,d,m,g;return null===o.get()&&(u=e,(r=o).set({}),u.on("NodeChange",function(e){Ph(u,e.element,r.get())}),u.on("FormatApply FormatRemove",function(e){var t=ve.from(e.node).map(function(e){return tl(e)?e:e.startContainer}).bind(function(e){return Hn(e)?ve.some(e):ve.from(e.parentElement)}).getOrThunk(function(){return Bh(u)});Ph(u,t,r.get())})),s=e,l=i,f=a,d=t,m=n,g=(c=o).get(),Y(l.split(","),function(t){function e(){var e=Vp(s);return jp(s,e,t,d,m).isSome()}var n,r=ue(g,t).getOrThunk(function(){var e={withSimilar:{state:au(!1),similar:!0,callbacks:[]},withoutSimilar:{state:au(!1),similar:!1,callbacks:[]},withVars:[]};return g[t]=e});b(m)?((n=d?r.withSimilar:r.withoutSimilar).callbacks.push(f),1===n.callbacks.length&&n.state.set(e())):r.withVars.push({state:au(e()),similar:d,vars:m,callback:f})}),c.set(g),{unbind:function(){var e,t=i,n=a,r=(e=o).get();Y(t.split(","),function(t){return ue(r,t).each(function(e){r[t]={withSimilar:_e(_e({},e.withSimilar),{callbacks:U(e.withSimilar.callbacks,function(e){return e!==n})}),withoutSimilar:_e(_e({},e.withoutSimilar),{callbacks:U(e.withoutSimilar.callbacks,function(e){return e!==n})}),withVars:U(e.withVars,function(e){return e.callback!==n})}})}),e.set(r)}}}function $p(e,t){var n=(t||document).createDocumentFragment();return Y(e,function(e){n.appendChild(e.dom)}),Et.fromDom(n)}function Wp(e,t,n){return{element:e,width:t,rows:n}}function Kp(e,t){return{element:e,cells:t}}function Xp(e,t){var n=parseInt(vn(e,t),10);return isNaN(n)?1:n}function Yp(e){return L(e,function(e,t){return t.cells.length>e?t.cells.length:e},0)}function Gp(e,t){for(var n=e.rows,r=0;r<n.length;r++)for(var o=n[r].cells,i=0;i<o.length;i++)if(je(o[i],t))return ve.some({x:i,y:r});return ve.none()}function Jp(e,t,n,r,o){for(var i=[],a=e.rows,u=n;u<=o;u++){var s=a[u].cells,c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Kp(a[u].element,c))}return i}function Qp(e){var o=Wp(Eu(e),0,[]);return Y(yu(e,"tr"),function(n,r){Y(yu(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=Xp(o,"rowspan"),a=Xp(o,"colspan"),u=e.rows,s=n;s<n+i;s++){u[s]||(u[s]=Kp(ku(r),[]));for(var c=t;c<t+a;c++)u[s].cells[c]=s===n&&c===t?o:Eu(o)}}(o,function(e,t,n){for(;r=t,((o=e.rows)[n]?o[n].cells:[])[r];)t++;var r,o;return t}(o,t,r),r,n,e)})}),Wp(o.element,Yp(o.rows),o.rows)}function Zp(e,t){var n,r,o,i=Et.fromDom(t.commonAncestorContainer),a=ym(i,e),u=U(a,function(e){return Br(e)||mo(e)}),s=(o=t,M(r=a,function(e){return"li"===kt(e)&&Ol(e,o)}).fold(J([]),function(e){return M(r,function(e){return"ul"===kt(e)||"ol"===kt(e)}).map(function(e){var t=Et.fromTag(kt(e));return xn(t,ae(Nn(e),function(e,t){return Ge(t,"list-style")})),[Et.fromTag("li"),t]}).getOr([])}));return A(u.concat(s.length?s:vo(n=i)?Ot(n).filter(ho).fold(J([]),function(e){return[n,e]}):ho(n)?[n]:[]),Eu)}function eh(){return $p([])}function th(e,i){return vr(i[0],"table",R(je,e)).bind(function(e){var s,t,n=i[0],r=i[i.length-1],o=Qp(e);return t=r,Gp(s=o,n).bind(function(u){return Gp(s,t).map(function(e){return t=s,n=u.x,r=u.y,o=e.x,a=r<(i=e.y)?Jp(t,n,r,o,i):Jp(t,n,i,o,r),Wp(t.element,Yp(a),a);var t,n,r,o,i,a})}).map(function(e){return $p([(n=A((t=e).rows,function(e){var t=A(e.cells,function(e){var t=ku(e);return Cn(t,"colspan"),Cn(t,"rowspan"),t}),n=Eu(e.element);return Kt(n,t),n}),r=Eu(t.element),Kt(o=Et.fromTag("tbody"),n),Ln(r,o),r)]);var t,n,r,o})}).getOrThunk(eh)}function nh(e,t){var n,r,o,i,a,u,s,c=Rl(t,e);return 0<c.length?th(e,c):(n=e,0<(r=t).length&&r[0].collapsed?eh():(o=n,i=r[0],a=Et.fromDom(i.cloneContents()),s=L(u=Zp(o,i),function(e,t){return Ln(t,e),t},a),0<u.length?$p([s]):s))}function rh(e,t){return 0<=t&&t<e.length&&Zc(e.charAt(t))}function oh(e,t){var n=Eo(e.innerText);return t?n.replace(/^[ \f\n\r\t\v]+/,""):n}function ih(e){return Hn(e)?e.outerHTML:Vn(e)?Zo.encodeRaw(e.data,!1):qn(e)?"\x3c!--"+e.data+"--\x3e":""}function ah(e,c){var l=0;Y(e,function(e){var t,n,r,o,i,a,u,s;0===e[0]?l++:1===e[0]?(o=c,i=e[1],a=l,s=function(e){var t,n=document.createElement("div"),r=document.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r}(i),o.hasChildNodes()&&a<o.childNodes.length?(u=o.childNodes[a]).parentNode.insertBefore(s,u):o.appendChild(s),l++):2===e[0]&&(n=l,(t=c).hasChildNodes()&&n<t.childNodes.length&&(r=t.childNodes[n]).parentNode.removeChild(r))})}function uh(e){var t=e.serializer.getTempAttrs(),n=em(e.getBody(),t);return null!==n.querySelector("iframe")?{type:"fragmented",fragments:U(A(xe(n.childNodes),i(Eo,ih)),function(e){return 0<e.length}),content:"",bookmark:null,beforeBookmark:null}:{type:"complete",fragments:null,content:Eo(n.innerHTML),bookmark:null,beforeBookmark:null}}function sh(e,t,n){var r,o,i,g,p,a,h,v,c,l,u,s=n?t.beforeBookmark:t.bookmark;function b(e,t,n,r){for(var o=e;o-t<r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}}"fragmented"===t.type?(r=t.fragments,o=e.getBody(),i=A(xe(o.childNodes),ih),ah((p=r,a=(g=i).length+p.length+2,h=new Array(a),v=new Array(a),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0==o||0==i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:1+d)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&v[s-f]<=h[s])return b(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return b(v[s],u+e-n,t,r)}}},u=[],c(0,g.length,0,p.length,u),u),o)):e.setContent(t.content,{format:"raw",no_selection:!V(s)||!$c(s)||!s.isFakeCaret}),e.selection.moveToBookmark(s)}function ch(e){return"fragmented"===e.type?e.fragments.join(""):e.content}function lh(e){var t=Et.fromTag("body",Lh());return Su(t,ch(e)),Y(yu(t,"*[data-mce-bogus]"),Yt),t.dom.innerHTML}function fh(e,t){return!(!e||!t)&&(r=t,ch(e)===ch(r)||(n=t,lh(e)===lh(n)));var n,r}function dh(e){return 0===e.get()}function mh(e,t,n){dh(n)&&(e.typing=t)}function gh(e,t){e.typing&&(mh(e,!1,t),e.add())}function ph(c){return{undoManager:{beforeChange:function(e,t){var n=c,r=t;dh(e)&&r.set(hc(n.selection))},add:function(e,t,n,r,o,i){return function(e,t,n,r,o,i,a){var u=uh(e);if(i=Nt.extend(i=i||{},u),!1===dh(r)||e.removed)return null;var s=t.data[n.get()];if(e.fire("BeforeAddUndo",{level:i,lastLevel:s,originalEvent:a}).isDefaultPrevented())return null;if(s&&fh(s,i))return null;t.data[n.get()]&&o.get().each(function(e){t.data[n.get()].beforeBookmark=e});var c=e.getParam("custom_undo_redo_levels",0,"number");if(c&&t.data.length>c){for(var l=0;l<t.data.length-1;l++)t.data[l]=t.data[l+1];t.data.length--,n.set(t.data.length)}i.bookmark=hc(e.selection),n.get()<t.data.length-1&&(t.data.length=n.get()+1),t.data.push(i),n.set(t.data.length-1);var f={level:i,lastLevel:s,originalEvent:a};return 0<n.get()?(e.setDirty(!0),e.fire("AddUndo",f),e.fire("change",f)):e.fire("AddUndo",f),i}(c,e,t,n,r,o,i)},undo:function(e,t,n){return r=c,i=t,a=n,(o=e).typing&&(o.add(),o.typing=!1,mh(o,!1,i)),0<a.get()&&(a.set(a.get()-1),sh(r,u=o.data[a.get()],!0),r.setDirty(!0),r.fire("Undo",{level:u})),u;var r,o,i,a,u},redo:function(e,t){return n=c,o=t,(r=e).get()<o.length-1&&(r.set(r.get()+1),sh(n,i=o[r.get()],!1),n.setDirty(!0),n.fire("Redo",{level:i})),i;var n,r,o,i},clear:function(e,t){var n,r=c,o=t;(n=e).data=[],o.set(0),n.typing=!1,r.fire("ClearUndos")},reset:function(e){var t;(t=e).clear(),t.add()},hasUndo:function(e,t){return n=c,r=e,0<t.get()||r.typing&&r.data[0]&&!fh(uh(n),r.data[0]);var n,r},hasRedo:function(e,t){return n=e,t.get()<n.data.length-1&&!n.typing;var n},transact:function(e,t,n){return o=n,gh(r=e,t),r.beforeChange(),r.ignore(o),r.add();var r,o},ignore:function(e,t){try{e.set(e.get()+1),t()}finally{e.set(e.get()-1)}},extra:function(e,t,n,r){var o,i,a=c,u=t,s=r;(o=e).transact(n)&&(i=o.data[u.get()].bookmark,sh(a,o.data[u.get()-1],!0),o.transact(s)&&(o.data[u.get()-1].beforeBookmark=i))}},formatter:{match:function(e,t,n,r){return Ig(c,e,t,n,r)},matchAll:function(e,t){return o=e,i=t,a=[],u={},n=(r=c).selection.getStart(),r.dom.getParent(n,function(e){for(var t=0;t<o.length;t++){var n=o[t];!u[n]&&yp(r,e,n,i)&&(u[n]=!0,a.push(n))}},r.dom.getRoot()),a;var r,o,i,a,u,n},matchNode:function(e,t,n,r){return yp(c,e,t,n,r)},canApply:function(u){return function(e){var t=e.formatter.get(u),n=e.dom;if(t)for(var r=fl(n,e.selection.getStart()),o=t.length-1;0<=o;o--){var i=t[o];if(!gl(i)||V(i.defaultBlock))return!0;for(var a=r.length-1;0<=a;a--)if(n.is(r[a],i.selector))return!0}return!1}(c)},closest:function(e){return r=c,o=e,ve.from(r.selection.getStart(!0)).bind(function(e){return Tg(Et.fromDom(e),function(n){return ee(o,function(e){return yp(r,n.dom,t=e)?ve.some(t):ve.none();var t})},t)}).getOrNull();function t(e){return je(e,Et.fromDom(r.getBody()))}var r,o},apply:function(e,t,n){return Oh(c,e,t,n)},remove:function(e,t,n,r){return Up(c,e,t,n,r)},toggle:function(e,t,n){var r,o=e,i=t,a=n,u=(r=c).formatter.get(o);(!Ig(r,o,i,a)||"toggle"in u[0]&&!u[0].toggle?Oh:Up)(r,o,i,a)},formatChanged:function(e,t,n,r,o){return qp(c,e,t,n,r,o)}},editor:{getContent:function(e,t){return d=c,m=e,g=t,ve.from(d.getBody()).fold(J("tree"===m.format?new jd("body",11):""),function(e){return t=d,r=e,o=g,c=_e(_e({},n=m),{format:o,get:!0,getInner:!0}),l=n.no_events?c:t.fire("BeforeGetContent",c),f="raw"===l.format?Nt.trim(Eo(em(r,t.serializer.getTempAttrs()).innerHTML)):"text"===l.format?t.dom.isEmpty(r)?"":Eo(r.innerText||r.textContent):"tree"===l.format?t.serializer.serialize(r,l):(a=(i=t).serializer.serialize(r,l),u=ks(i),s=new RegExp("^(<"+u+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+u+">[\r\n]*|<br \\/>[\r\n]*)$"),a.replace(s,"")),T(["text","tree"],l.format)||Co(Et.fromDom(r))?l.content=f:l.content=Nt.trim(f),(l.no_events?l:t.fire("GetContent",l)).content;var t,n,r,o,i,a,u,s,c,l,f});var d,m,g},setContent:function(e,t){return Rg(c,e,t)},insertContent:function(e,t){return kg(c,e,t)},addVisual:function(e){var i,t=e,a=(i=c).dom,n=V(t)?t:i.getBody();b(i.hasVisual)&&(i.hasVisual=i.getParam("visual",!0,"boolean")),Y(a.select("table,a",n),function(e){switch(e.nodeName){case"TABLE":var t=i.getParam("visual_table_class","mce-item-table","string"),n=a.getAttrib(e,"border");n&&"0"!==n||!i.hasVisual?a.removeClass(e,t):a.addClass(e,t);break;case"A":var r,o;a.getAttrib(e,"href")||(r=a.getAttrib(e,"name")||e.id,o=i.getParam("visual_anchor_class","mce-item-anchor","string"),r&&i.hasVisual?a.addClass(e,o):a.removeClass(e,o))}}),i.fire("VisualAid",{element:t,hasVisual:i.hasVisual})}},selection:{getContent:function(e,t){return function(e,t,n){var r,o=(r=t,_e(_e({},n=void 0===n?{}:n),{format:r,get:!0,selection:!0})),i=e.fire("BeforeGetContent",o);if(i.isDefaultPrevented())return e.fire("GetContent",i),i.content;if("text"===i.format)return m=e,ve.from(m.selection.getRng()).map(function(e){var t=ve.from(m.dom.getParent(e.commonAncestorContainer,m.dom.isBlock)),n=m.getBody(),r=t.map(function(e){return e.nodeName}).getOr("div").toLowerCase(),o=xt.browser.isIE()&&"pre"!==r,i=m.dom.add(n,r,{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),a=oh(i,o),u=Eo(i.textContent);if(m.dom.remove(i),rh(u,0)||rh(u,u.length-1)){var s=oh(t.getOr(n),o),c=s.indexOf(a);return-1===c?a:(rh(s,c-1)?" ":"")+a+(rh(s,c+a.length)?" ":"")}return a}).getOr("");i.getInner=!0;var a,u,s,c,l,f,d,m,g=(u=i,s=(a=e).selection.getRng(),c=a.dom.create("body"),l=a.selection.getSel(),f=Ed(a,Al(l)),(d=u.contextual?nh(Et.fromDom(a.getBody()),f).dom:s.cloneContents())&&c.appendChild(d),a.selection.serializer.serialize(c,u));return"tree"===i.format?g:(i.content=e.selection.isCollapsed()?"":g,e.fire("GetContent",i),i.content)}(c,e,t)}},raw:{getModel:function(){return ve.none()}}}}function hh(e){return Ee(e.plugins,"rtc")}function vh(e){var u=e;return ue(e.plugins,"rtc").bind(function(e){return ve.from(e.setup)}).fold(function(){return u.rtcInstance=ph(e),ve.none()},function(e){var t,n;return u.rtcInstance=(t=J(null),n=J(""),{undoManager:{beforeChange:te,add:t,undo:t,redo:t,clear:te,reset:te,hasUndo:D,hasRedo:D,transact:t,ignore:te,extra:te},formatter:{match:D,matchAll:J([]),matchNode:J(void 0),canApply:D,closest:n,apply:te,remove:te,toggle:te,formatChanged:J({unbind:te})},editor:{getContent:n,setContent:n,insertContent:te,addVisual:te},selection:{getContent:n},raw:{getModel:J(ve.none())}}),ve.some(function(){return e().then(function(e){return u.rtcInstance=(i=e.undoManager,a=e.formatter,n=e.editor,r=e.selection,t=e.raw,{undoManager:{beforeChange:i.beforeChange,add:i.add,undo:i.undo,redo:i.redo,clear:i.clear,reset:i.reset,hasUndo:i.hasUndo,hasRedo:i.hasRedo,transact:function(e,t,n){return i.transact(n)},ignore:function(e,t){return i.ignore(t)},extra:function(e,t,n,r){return i.extra(n,r)}},formatter:{match:function(e,t,n,r){return a.match(e,o(t),r)},matchAll:a.matchAll,matchNode:a.matchNode,canApply:function(e){return a.canApply(e)},closest:function(e){return a.closest(e)},apply:function(e,t,n){return a.apply(e,o(t))},remove:function(e,t,n,r){return a.remove(e,o(t))},toggle:function(e,t,n){return a.toggle(e,o(t))},formatChanged:function(e,t,n,r,o){return a.formatChanged(t,n,r,o)}},editor:{getContent:function(e,t){return n.getContent(e)},setContent:function(e,t){return n.setContent(e,t)},insertContent:function(e,t){return n.insertContent(e)},addVisual:n.addVisual},selection:{getContent:function(e,t){return r.getContent(t)}},raw:{getModel:function(){return ve.some(t.getRawModel())}}}),e.rtc.isRemote;function o(e){return h(e)?e:{}}var i,a,n,r,t})})})}function bh(e){return e.rtcInstance||ph(e)}function yh(e){var t=e.rtcInstance;if(t)return t;throw new Error("Failed to get RTC instance not yet initialized.")}function Ch(e){return 0===e.dom.length?(In(e),ve.none()):ve.some(e)}function xh(e,t,u,s){e.bind(function(a){return(s?jm:Hm)(a.dom,s?a.dom.length:0),t.filter(An).map(function(e){var t=u,n=s,r=a.dom,o=e.dom,i=(n?r:o).length;n?(Vm(r,o,!1,!n),t.setStart(o,i)):(Vm(o,r,!1,!n),t.setEnd(o,i))})}).orThunk(function(){var e=s;return t.filter(function(e){return Hl.isBookmarkNode(e.dom)}).bind(e?Pt:Bt).or(t).filter(An).map(function(e){var n,r=s;Ot(n=e).each(function(e){var t=n.dom;r&&Bm(e,cs(t,0))?Hm(t,0):!r&&Pm(e,cs(t,t.length))&&jm(t,t.length)})})})}function wh(e,t,n){var r,o=(r=t,_e(_e({format:"html"},n=void 0===n?{}:n),{set:!0,selection:!0,content:r})),i=o;if(!o.no_events){var a=e.fire("BeforeSetContent",o);if(a.isDefaultPrevented())return void e.fire("SetContent",a);i=a}i.content=function(e,t){if("raw"===t.format)return t.content;var n=e.selection.getRng(),r=e.dom.getParent(n.commonAncestorContainer,e.dom.isBlock),o=r?{context:r.nodeName.toLowerCase()}:{},i=e.parser.parse(t.content,_e(_e({isRootContent:!0,forced_root_block:!1},o),t));return rm({validate:e.validate},e.schema).serialize(i)}(e,i);var u=e.selection.getRng();!function(e,t){var n=ve.from(t.firstChild).map(Et.fromDom),r=ve.from(t.lastChild).map(Et.fromDom);e.deleteContents(),e.insertNode(t);var o=n.bind(Bt).filter(An).bind(Ch),i=r.bind(Pt).filter(An).bind(Ch);xh(o,n,e,!0),xh(i,r,e,!1),e.collapse(!1)}(u,u.createContextualFragment(i.content)),e.selection.setRng(u),nd(e,u),i.no_events||e.fire("SetContent",i)}function Sh(e,t,n){var r;e&&Ee(e,t)&&(0===(r=U(e[t],function(e){return e!==n})).length?delete e[t]:e[t]=r)}Kg=function(e){var t,n=e.selection.getRng(),r=on(["pre"]);n.collapsed||(t=e.selection.getSelectedBlocks(),Np(Sp(Sp(t,r),function(e){return r(e.previousSibling)&&-1!==de(t,e.previousSibling)}),function(e){var t,n=e.previousSibling;Ya(t=e).remove(),Ya(n).append("<br><br>").append(t.childNodes)}))},wp["pre"]||(wp.pre=[]),wp.pre.push(Kg);var Nh=Nt.each,Eh=function(e,t,n){Nh(e.childNodes,function(e){Ep(e)&&(t(e)&&n(e),e.hasChildNodes()&&Eh(e,t,n))})},kh=ir([{keep:[]},{rename:["name"]},{removed:[]}]),_h=/^(src|href|style)$/,Ah=Nt.each,Rh=ul,Dh=Nt.each,Th=Nt.each,Oh=function(S,N,E,r){function k(n,e){var t;y((e=void 0===e?A:e).onformat)&&e.onformat(n,e,E,r),Th(e.styles,function(e,t){u.setStyle(n,t,al(e,E))}),!e.styles||(t=u.getAttrib(n,"style"))&&u.setAttrib(n,"data-mce-style",t),Th(e.attributes,function(e,t){u.setAttrib(n,t,al(e,E))}),Th(e.classes,function(e){e=al(e,E),u.hasClass(n,e)||u.addClass(n,e)})}function g(e,t){var n=!1;return Th(e,function(e){return!!gl(e)&&(V(e.collapsed)&&e.collapsed!==a||!u.is(t,e.selector)||Vc(t)?void 0:(k(t,e),!(n=!0)))}),n}function o(x,e,l){var w=[],f=!0,d=A.inline||A.block,m=function(e){if(X(e)){var t=u.create(e);return k(t),t}return null}(d);_l(x,e,function(e){var s,c=function(e){var t=!1,n=f,r=e.nodeName.toLowerCase(),o=e.parentNode,i=o.nodeName.toLowerCase();if(Hn(e)&&x.getContentEditable(e)&&(n=f,f="true"===x.getContentEditable(e),t=!0),Kn(e)&&!function(e,t,n,r){if(e.getParam("format_empty_lines",!1,"boolean")&&pl(t)){var o=no(e.schema),i=(a=Et.fromDom(n),s=function(e){return Vc(e.dom)},((c=(u=a).dom).parentNode?kr(Et.fromDom(c.parentNode),function(e){return!je(u,e)&&s(e)}):ve.none()).isSome());return se(o,r)&&Kr(Et.fromDom(n.parentNode),!1)&&!i}var a,u,s,c}(S,A,e,i))return s=null,void(ml(A)&&x.remove(e));if(ml(A)&&A.wrapper&&yp(S,e,N,E))s=null;else{if(f&&!t&&ml(A)&&!A.wrapper&&ol(S,r)&&il(S,i,d)){var a=x.rename(e,d);return k(a),w.push(a),void(s=null)}if(gl(A)){var u=g(_,e);if(!u&&V(o)&&hl(A)&&(u=g(_,o)),!pl(A)||u)return void(s=null)}!f||t||!il(S,d,r)||!il(S,i,d)||!l&&Vn(e)&&No(e.data)||Vc(e)||pl(A)&&x.isBlock(e)?(s=null,Y(xe(e.childNodes),c),t&&(f=n),s=null):(s||(s=x.clone(m,!1),e.parentNode.insertBefore(s,e),w.push(s)),s.appendChild(e))}};Y(e,c)}),!0===A.links&&Y(w,function(e){var t=function(e){"A"===e.nodeName&&k(e,A),Y(xe(e.childNodes),t)};t(e)}),Y(w,function(e){var n,t,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y=(n=0,Y(e.childNodes,function(e){var t;V(t=e)&&Vn(t)&&0===t.length||Qc(e)||n++}),n);function C(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=ll(m,e.parentNode),m.getStyle(e,"color")&&t?m.setStyle(e,"text-decoration",t):m.getStyle(e,"text-decoration")===t&&m.setStyle(e,"text-decoration",null))}!(1<w.length)&&x.isBlock(e)||0!==y?(pl(A)||ml(A)&&A.wrapper)&&(A.exact||1!==y||(e=M((d=e).childNodes,zp).filter(function(e){return Pg(x,e,A)}).map(function(e){var t=x.clone(e,!1);return k(t),x.replace(t,d,!0),x.remove(e,!0),t}).getOr(d)),h=S,v=E,b=e,Dh(_,function(t){var r,e,n;pl(t)&&Dh(h.dom.select(t.inline,b),function(e){Ep(e)&&Fp(h,t,v,e,t.exact?e:null)}),r=h.dom,(e=t).clear_child_styles&&(n=e.links?"*:not(a)":"*",Nh(r.select(n,b),function(n){Ep(n)&&Nh(e.styles,function(e,t){r.setStyle(n,t,"")})}))}),s=A,yp(u=S,(f=e).parentNode,c=N,l=E)&&Fp(u,s,l,f)||s.merge_with_parents&&u.dom.getParent(f.parentNode,function(e){if(yp(u,e,c,l))return Fp(u,s,l,f),!0}),a=e,(i=A).styles&&i.styles.backgroundColor&&Eh(a,Rp(x,"fontSize"),Dp(x,"backgroundColor",al(i.styles.backgroundColor,E))),m=x,p=e,(g=A).styles&&(g.styles.color||g.styles.textDecoration)&&(Nt.walk(p,C,"childNodes"),C(p)),t=x,o=e,!pl(r=A)||"sub"!==r.inline&&"sup"!==r.inline||(Eh(o,Rp(t,"fontSize"),Dp(t,"fontSize","")),t.remove(t.select("sup"===r.inline?"sub":"sup",o),!0)),Ap(x,A,0,e)):x.remove(e,!0)})}var e,t,n,i,_=S.formatter.get(N),A=_[0],a=!r&&S.selection.isCollapsed(),u=S.dom,s=S.selection;if("false"!==u.getContentEditable(s.getNode()))A&&(r?tl(r)?g(_,r)||((e=u.createRng()).setStartBefore(r),e.setEndAfter(r),o(u,kl(S,e,_),!0)):o(u,r,!0):a&&pl(A)&&!Dl(S).length?function(e,t,n){var r,o=e.selection,i=o.getRng(),a=i.startOffset,u=i.startContainer.nodeValue,s=qc(e.getBody(),o.getStart());s&&(r=Fg(s));var c,l,f,d,m=/[^\s\u00a0\u00ad\u200b\ufeff]/;u&&0<a&&a<u.length&&m.test(u.charAt(a))&&m.test(u.charAt(a-1))?(c=o.getBookmark(),i.collapse(!0),l=Pf(kl(e,i,e.formatter.get(t))),e.formatter.apply(t,n,l),o.moveToBookmark(c)):(s&&r.nodeValue===Cp||(f=e.getDoc(),d=Ug(!0).dom,r=(s=f.importNode(d,!0)).firstChild,i.insertNode(s),a=1),e.formatter.apply(t,n,s),o.setCursorLocation(r,a))}(S,N,E):(t=s.getNode(),n=_[0],S.settings.forced_root_block||!n.defaultBlock||u.getParent(t,u.isBlock)||Oh(S,n.defaultBlock),s.setRng(Cg(s.getRng())),Il(s,!0,function(){Ll(S,function(e,t){var n=t?e:kl(S,e,_);o(u,n,!1)})}),nl(u,s,s.getRng()),S.nodeChanged()),i=S,Np(wp[N],function(e){e(i)})),xf(S,N,r,E);else{r=s.getNode();for(var c=0,l=_.length;c<l;c++){var f=_[c];if(f.ceFalseOverride&&gl(f)&&u.is(r,f.selector)){k(r,f);break}}xf(S,N,r,E)}},Bh=function(e){return e.selection.getStart()},Ph=function(i,a,e){var u=Vp(i,a);ne(e,function(e,o){function t(e){var t,n=jp(i,u,o,e.similar,Hp(e)?e.vars:void 0),r=n.isSome();e.state.get()!==r&&(e.state.set(r),t=n.getOr(a),Hp(e)?e.callback(r,{node:t,format:o,parents:u}):Y(e.callbacks,function(e){return e(r,{node:t,format:o,parents:u})}))}Y([e.withSimilar,e.withoutSimilar],t),Y(e.withVars,t)})},Lh=Re(function(){return document.implementation.createHTMLDocument("undo")});function Ih(e){return e.select}function Mh(e){return e&&e.ownerDocument&&Ve(Et.fromDom(e.ownerDocument),Et.fromDom(e))}function Fh(a,u,e,s){function t(e,t){return wh(s,e,t)}function n(){var e=c(),t=null==e?void 0:e.anchorNode,n=null==e?void 0:e.focusNode;if(!e||!t||!n||rn(t)||rn(n))return!0;var r=a.createRng();r.setStart(t,e.anchorOffset),r.collapse(!0);var o=a.createRng();return o.setStart(n,e.focusOffset),o.collapse(!0),r.compareBoundaryPoints(r.START_TO_START,o)<=0}function r(e){var t=p();t.collapse(!!e),h(t)}function c(){return u.getSelection?u.getSelection():u.document.selection}var l,f,o,i,d,m,g=function(e,t){return d||(d={},m={},i.on("NodeChange",function(e){var n=e.element,r=x(n),o={};Nt.each(d,function(e,n){C(n,r).each(function(t){m[n]||(Y(e,function(e){e(!0,{node:t,selector:n,parents:r})}),m[n]=e),o[n]=e})}),Nt.each(m,function(e,t){o[t]||(delete m[t],Nt.each(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),d[e]||(d[e]=[]),d[e].push(t),C(e,x(i.selection.getStart())).each(function(){m[e]=d[e]}),{unbind:function(){Sh(d,e,t),Sh(m,e,t)}}},p=function(){function e(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(e){return-1}}var t,n,r,o=u.document;if(void 0!==s.bookmark&&!1===Cd(s)){var i=md(s);if(i.isSome())return i.map(function(e){return Ed(s,[e])[0]}).getOr(o.createRange())}try{(t=c())&&!rn(t.anchorNode)&&(n=0<t.rangeCount?t.getRangeAt(0):(t.createRange?t:o).createRange(),n=Ed(s,[n])[0])}catch(e){}return(n=n||(o.createRange?o.createRange():o.body.createTextRange())).setStart&&9===n.startContainer.nodeType&&n.collapsed&&(r=a.getRoot(),n.setStart(r,0),n.setEnd(r,0)),l&&f&&(0===e(n.START_TO_START,n,l)&&0===e(n.END_TO_END,n,l)?n=f:f=l=null),n},h=function(e,t){var n;if((r=e)&&(Ih(r)||Mh(r.startContainer)&&Mh(r.endContainer))){var r,o=Ih(e)?e:null;if(o){f=null;try{o.select()}catch(e){}}else{var i=c();if(e=s.fire("SetSelectionRange",{range:e,forward:t}).range,i){f=e;try{i.removeAllRanges(),i.addRange(e)}catch(e){}!1===t&&i.extend&&(i.collapse(e.endContainer,e.endOffset),i.extend(e.startContainer,e.startOffset)),l=0<i.rangeCount?i.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!i.setBaseAndExtent||xt.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(n=e.startContainer.childNodes[e.startOffset])&&"IMG"===n.tagName&&(i.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),i.anchorNode===e.startContainer&&i.focusNode===e.endContainer||i.setBaseAndExtent(n,0,n,1)),s.fire("AfterSetSelectionRange",{range:e,forward:t})}}},v={bookmarkManager:null,controlSelection:null,dom:o=a,win:u,serializer:e,editor:i=s,collapse:r,setCursorLocation:function(e,t){var n=a.createRng();V(e)&&V(t)?(n.setStart(e,t),n.setEnd(e,t),h(n),r(!1)):(Bl(a,n,s.getBody(),!0),h(n))},getContent:function(e){return n=(t=void 0===(t=e)?{}:t).format||"html",r=t,yh(s).selection.getContent(n,r);var t,n,r},setContent:t,getBookmark:function(e,t){return b.getBookmark(e,t)},moveToBookmark:function(e){return b.moveToBookmark(e)},select:function(e,t){var r=a,o=t;return ve.from(e).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Bl(r,n,e,!0),Bl(r,n,e,!1)),n}).each(h),e},isCollapsed:function(){var e=p(),t=c();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:n,setNode:function(e){return t(a.getOuterHTML(e)),e},getNode:function(){return function(e,t){if(!t)return e;var n=t.startContainer,r=t.endContainer,o=t.startOffset,i=t.endOffset,a=t.commonAncestorContainer;return!t.collapsed&&(n===r&&i-o<2&&n.hasChildNodes()&&(a=n.childNodes[o]),3===n.nodeType&&3===r.nodeType&&(n=n.length===o?Nd(n.nextSibling,!0):n.parentNode,r=0===i?Nd(r.previousSibling,!1):r.parentNode,n&&n===r))?n:a&&3===a.nodeType?a.parentNode:a}(s.getBody(),p())},getSel:c,setRng:h,getRng:p,getStart:function(e){return wd(s.getBody(),p(),e)},getEnd:function(e){return Sd(s.getBody(),p(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o=[],i=e.getRoot();if(n=e.getParent(n||wd(i,t,t.collapsed),e.isBlock),r=e.getParent(r||Sd(i,t,t.collapsed),e.isBlock),n&&n!==i&&o.push(n),n&&r&&n!==r)for(var a,u=new Dr(n,i);(a=u.next())&&a!==r;)e.isBlock(a)&&o.push(a);return r&&n!==r&&r!==i&&o.push(r),o}(a,p(),e,t)},normalize:function(){var e=p();if(1<Al(c()).length||!Pl(s))return e;var t=Of(a,e);return t.each(function(e){h(e,n())}),t.getOr(e)},selectorChanged:function(e,t){return g(e,t),v},selectorChangedWithUnbind:g,getScrollContainer:function(){for(var e,t=a.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){V(e)?(s.inline?Zf:td)(s,e,t):nd(s,p(),t)},placeCaretAt:function(e,t){return h(Ef(e,t,s.getDoc()))},getBoundingClientRect:function(){var e=p();return e.collapsed?cs.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){u=l=f=null,y.destroy()}},b=Hl(v),y=Sf(v,s);function C(t,e){return M(e,function(e){return o.is(e,t)})}function x(e){return o.getParents(e,null,o.getRoot())}return v.bookmarkManager=b,v.controlSelection=y,v}function Uh(e,t){var n,r,a,u,o=ao();t.convert_fonts_to_spans&&(r=e,a=o,u=Nt.explode(t.font_size_legacy_values),r.addNodeFilter("font",function(e){Y(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,Y(["color","face","size"],function(e){t.attr(e,null)})})})),n=o,e.addNodeFilter("strike",function(e){Y(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})}function zh(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return{type:t=r?r[1]:t,data:n[1]}}function Hh(e,t){var n;try{n=atob(t)}catch(e){return ve.none()}for(var r=new Uint8Array(n.length),o=0;o<r.length;o++)r[o]=n.charCodeAt(o);return ve.some(new Blob([r],{type:e}))}function jh(e){return 0===e.indexOf("blob:")?(o=e,new _r(function(e,t){function n(){t("Cannot convert "+o+" to Blob. Resource might not exist or is inaccessible.")}try{var r=new XMLHttpRequest;r.open("GET",o,!0),r.responseType="blob",r.onload=function(){200===r.status?e(r.response):n()},r.onerror=n,r.send()}catch(e){n()}})):0===e.indexOf("data:")?(n=e,new _r(function(e){var t=zh(n);Hh(t.type,t.data).fold(function(){return e(new Blob([]))},e)})):null;var o,n}function Vh(e){return(e||"blobid")+Yh++}function qh(r,d){var o={};return{findAll:function(e,n){n=n||w;var t=A(U(e?xe(e.getElementsByTagName("img")):[],function(e){var t=e.src;return xt.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&&t&&t!==xt.transparentSrc&&(0===t.indexOf("blob:")?!r.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))}),function(f){if(void 0!==o[f.src])return new _r(function(t){o[f.src].then(function(e){return"string"==typeof e?e:void t({image:f,blobInfo:e.blobInfo})})});var e=new _r(function(e,t){var r,o,i,n,a,u,s,c,l;r=d,i=e,n=t,0!==(o=f).src.indexOf("blob:")?(u=(a=zh(o.src)).data,s=a.type,c=u,(l=r.getByData(c,s))?i({image:o,blobInfo:l}):jh(o.src).then(function(e){l=r.create(Vh(),e,c),r.add(l),i({image:o,blobInfo:l})},function(e){n(e)})):(l=r.getByUri(o.src))?i({image:o,blobInfo:l}):jh(o.src).then(function(t){var n=t;new _r(function(e){var t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)}).then(function(e){c=zh(e).data,l=r.create(Vh(),t,c),r.add(l),i({image:o,blobInfo:l})})},function(e){n(e)})}).then(function(e){return delete o[e.image.src],e}).catch(function(e){return delete o[f.src],e});return o[f.src]=e});return _r.all(t)}}}function $h(e,t){return e.replace(t.re,function(e){return ue(t.uris,e).getOr(e)})}function Wh(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new jd("br",1)).shortEnded=!0:r.empty().append(new jd("#text",3)).value=wo}function Kh(n,e,t,r){return r.isEmpty(e,t,function(e){return(t=n.getElementRule(e.name))&&t.paddEmpty;var t})}function Xh(e,p){var t,o,i,h=e.schema;function n(t){var e,n,r=t.attr("src");(e=t).attr("src")===xt.transparentSrc||V(e.attr("data-mce-placeholder"))||V(t.attr("data-mce-bogus"))||((n=/data:([^;]+);base64,([a-z0-9\+\/=\s]+)/i.exec(r))?ve.some({type:n[1],data:decodeURIComponent(n[2])}):ve.none()).filter(function(){return function(e,t){if(t.images_dataimg_filter){var n=new Image;return n.src=e.attr("src"),ne(e.attributes.map,function(e,t){n.setAttribute(t,e)}),t.images_dataimg_filter(n)}return!0}(t,o)}).bind(function(e){var t=e.type,n=e.data;return ve.from(i.getByData(n,t)).orThunk(function(){return Hh(t,n).map(function(e){var t=i.create(Vh(),e,n);return i.add(t),t})})}).each(function(e){t.attr("src",e.blobUri())})}p.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Nt.extend({},h.getBlockElements()),m=h.getNonEmptyElements(),g=h.getWhiteSpaceElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){"br"===s&&(o=null);break}u=u.prev}o&&(o.remove(),Kh(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&Wh(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new jd("#text",3)).value=wo,o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r=e.length;if(!p.allow_unsafe_link_target)for(;r--;){var o=e[r];"a"===o.name&&"_blank"===o.attr("target")&&o.attr("rel",(n=void 0,n=(t=o.attr("rel"))?Nt.trim(t):"",/\b(noopener)\b/g.test(n)?n:n.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r,o=e.length;o--;)"ul"!==(r=(n=e[o]).parent).name&&"ol"!==r.name||(n.prev&&"li"===n.prev.name?n.prev.append(n):((t=new jd("li",1)).attr("style","list-style-type: none"),n.wrap(t)))}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t=h.getValidClasses(),n=e.length;n--;){for(var r=e[n],o=r.attr("class").split(" "),i="",a=0;a<o.length;a++){var u=o[a],s=!1,c=t["*"];c&&c[u]&&(s=!0),c=t[r.name],(s=!(s||!c||!c[u])||s)&&(i&&(i+=" "),i+=u)}i.length||(i=null),r.attr("class",i)}}),t=e,(i=(o=p).blob_cache)&&t.addAttributeFilter("src",function(e){return Y(e,n)})}var Yh=0,Gh=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Jh=Nt.each,Qh=Nt.trim,Zh="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),ev={ftp:21,http:80,https:443,mailto:25},tv=["img","video"],nv=(rv.parseDataUri=function(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return{type:t=r?r[1]:t,data:n[1]}},rv.isDomSafe=function(e,t,n){if((n=void 0===n?{}:n).allow_script_urls)return!0;var r,o,i,a,u=Zo.decode(e).replace(/[\s\u0000-\u001F]+/g,"");try{u=decodeURIComponent(u)}catch(e){u=unescape(u)}return!(/((java|vb)script|mhtml):/i.test(u)||(o=u,i=t,!(r=n).allow_html_data_urls&&(/^data:image\//i.test(o)?(V(a=r.allow_svg_data_urls)?!a:!V(i)||!T(tv,i))&&/^data:image\/svg\+xml/i.test(o):/^data:/i.test(o))))},rv.getDocumentBaseUrl=function(e){var t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname;return/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},rv.prototype.setPath=function(e){var t=/^(.*?)\/?(\w+)?$/.exec(e);this.path=t[0],this.directory=t[1],this.file=t[2],this.source="",this.getURI()},rv.prototype.toRelative=function(e){var t;if("./"===e)return e;var n=new rv(e,{base_uri:this});if("mce_host"!==n.host&&this.host!==n.host&&n.host||this.port!==n.port||this.protocol!==n.protocol&&""!==n.protocol)return n.getURI();var r=this.getURI(),o=n.getURI();return r===o||"/"===r.charAt(r.length-1)&&r.substr(0,r.length-1)===o?r:(t=this.toRelPath(this.path,n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),t)},rv.prototype.toAbsolute=function(e,t){var n=new rv(e,{base_uri:this});return n.getURI(t&&this.isSameOrigin(n))},rv.prototype.isSameOrigin=function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=ev[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},rv.prototype.toRelPath=function(e,t){var n,r,o=0,i="",a=e.substring(0,e.lastIndexOf("/")).split("/"),u=t.split("/");if(a.length>=u.length)for(n=0,r=a.length;n<r;n++)if(n>=u.length||a[n]!==u[n]){o=n+1;break}if(a.length<u.length)for(n=0,r=u.length;n<r;n++)if(n>=a.length||a[n]!==u[n]){o=n+1;break}if(1===o)return t;for(n=0,r=a.length-(o-1);n<r;n++)i+="../";for(n=o-1,r=u.length;n<r;n++)i+=n!==o-1?"/"+u[n]:u[n];return i},rv.prototype.toAbsPath=function(e,t){var n,r,o=0,i=[],a=/\/$/.test(t)?"/":"",u=e.split("/"),s=t.split("/");for(Jh(u,function(e){e&&i.push(e)}),u=i,n=s.length-1,i=[];0<=n;n--)0!==s[n].length&&"."!==s[n]&&(".."!==s[n]?0<o?o--:i.push(s[n]):o++);return 0!==(r=(n=u.length-o)<=0?q(i).join("/"):u.slice(0,n).join("/")+"/"+q(i).join("/")).indexOf("/")&&(r="/"+r),a&&r.lastIndexOf("/")!==r.length-1&&(r+=a),r},rv.prototype.getURI=function(e){var t;return void 0===e&&(e=!1),this.source&&!e||(t="",e||(this.protocol?t+=this.protocol+"://":t+="//",this.userInfo&&(t+=this.userInfo+"@"),this.host&&(t+=this.host),this.port&&(t+=":"+this.port)),this.path&&(t+=this.path),this.query&&(t+="?"+this.query),this.anchor&&(t+="#"+this.anchor),this.source=t),this.source},rv);function rv(e,t){e=Qh(e),this.settings=t||{};var n,r,o,i,a=this.settings.base_uri,u=this;/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)?u.source=e:(n=0===e.indexOf("//"),0!==e.indexOf("/")||n||(e=(a&&a.protocol||"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(r=this.settings.base_uri?this.settings.base_uri.path:new rv(document.location.href).directory,e=this.settings.base_uri&&""==this.settings.base_uri.protocol?"//mce_host"+u.toAbsPath(r,e):(o=/([^#?]*)([#?]?.*)/.exec(e),(a&&a.protocol||"http")+"://mce_host"+u.toAbsPath(r,o[1])+o[2])),e=e.replace(/@@/g,"(mce_at)"),i=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?(\[[a-zA-Z0-9:.%]+\]|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),Jh(Zh,function(e,t){var n=(n=i[t])&&n.replace(/\(mce_at\)/g,"@@");u[e]=n}),a&&(u.protocol||(u.protocol=a.protocol),u.userInfo||(u.userInfo=a.userInfo),u.port||"mce_host"!==u.host||(u.port=a.port),u.host&&"mce_host"!==u.host||(u.host=a.host),u.source=""),n&&(u.protocol=""))}function ov(e,t,n){for(var r=/<([!?\/])?([A-Za-z0-9\-_:.]+)/g,o=/(?:\s(?:[^'">]+(?:"[^"]*"|'[^']*'))*[^"'>]*(?:"[^">]*|'[^'>]*)?|\s*|\/)>/g,i=e.getShortEndedElements(),a=1,u=n;0!==a;)for(r.lastIndex=u;;){var s=r.exec(t);if(null===s)return u;if("!"===s[1]){u=Ge(s[2],"--")?sv(t,!1,s.index+"!--".length):sv(t,!0,s.index+1);break}o.lastIndex=r.lastIndex;var c=o.exec(t);if(!l(c)&&c.index===r.lastIndex){"/"===s[1]?--a:Ee(i,s[2])||(a+=1),u=r.lastIndex+c[0].length;break}}return u}function iv(q,$){void 0===$&&($=oo()),q=q||{};var W=uv(),K=W.createElement("form");function n(s,e){void 0===e&&(e="html");for(var t,i,n,c,r,o,a,l,u,f,d,m,g,p,h,v,b,y,C,x=s.html,w=0,S=[],N=0,E=Zo.decode,k=Nt.makeMap("src,href,data,background,action,formaction,poster,xlink:href"),_="html"===e?0:1,A=function(e){for(var t,n=S.length;n--&&S[n].name!==e;);if(0<=n){for(t=S.length-1;n<=t;t--)(e=S[t]).valid&&Q(e.name);S.length=n}},R=function(e,t){return G($h(e,s),t)},D=function(e){""!==e&&(">"===e.charAt(0)&&(e=" "+e),q.allow_conditional_comments||"[if"!==e.substr(0,3).toLowerCase()||(e=" "+e),X($h(e,s)))},T=function(e,t){var n=e||"",r=!Ge(n,"--"),o=sv(x,r,t);return e=x.substr(t,o-t),D(r?n+e:e),o+1},O=new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:![Dd][Oo][Cc][Tt][Yy][Pp][Ee]([\\w\\W]*?)>)|(?:!(--)?)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_:.]*)(\\s(?:[^'\">]+(?:\"[^\"]*\"|'[^']*'))*[^\"'>]*(?:\"[^\">]*|'[^'>]*)?|\\s*|\\/)>))","g"),B=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,P=$.getShortEndedElements(),L=q.self_closing_elements||$.getSelfClosingElements(),I=$.getBoolAttrs(),M=q.validate,F=q.remove_internals,U=q.fix_self_closing,z=$.getSpecialElements(),H=x+">";t=O.exec(H);){var j=t[0];if(w<t.index&&R(E(x.substr(w,t.index-w))),i=t[7])A(i=":"===(i=i.toLowerCase()).charAt(0)?i.substr(1):i);else if(i=t[8]){if(t.index+j.length>x.length){R(E(x.substr(t.index))),w=t.index+j.length;continue}u=(i=":"===(i=i.toLowerCase()).charAt(0)?i.substr(1):i)in P,U&&L[i]&&0<S.length&&S[S.length-1].name===i&&A(i);var V=function(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null}(B,t[9]);if(null!==V){if("all"===V){w=ov($,x,O.lastIndex),O.lastIndex=w;continue}d=!1}if(!M||(f=$.getElementRule(i))){if(d=!0,M&&(p=f.attributes,h=f.attributePatterns),(g=t[9])?((l=-1!==g.indexOf("data-mce-type"))&&F&&(d=!1),(c=[]).map={},g.replace(B,function(e,t,n,r,o){return function(e,t,n,r,o){var i;if(n=$h((t=t.toLowerCase())in I?t:E(n||r||o||""),s),M&&!l&&0==(0===(i=t).indexOf("data-")||0===i.indexOf("aria-"))){var a=p[t];if(!a&&h){for(var u=h.length;u--&&!(a=h[u]).pattern.test(t););-1===u&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}("name"===t||"id"===t)&&e in av&&(n in W||n in K)||k[t]&&!nv.isDomSafe(n,e,q)||l&&(t in k||0===t.indexOf("on"))||(c.map[t]=n,c.push({name:t,value:n}))}(i,t,n,r,o),""})):(c=[]).map={},M&&!l){if(v=f.attributesRequired,b=f.attributesDefault,y=f.attributesForced,f.removeEmptyAttrs&&!c.length&&(d=!1),y)for(r=y.length;r--;)a=(m=y[r]).name,"{$uid}"===(C=m.value)&&(C="mce_"+N++),c.map[a]=C,c.push({name:a,value:C});if(b)for(r=b.length;r--;)(a=(m=b[r]).name)in c.map||("{$uid}"===(C=m.value)&&(C="mce_"+N++),c.map[a]=C,c.push({name:a,value:C}));if(v){for(r=v.length;r--&&!(v[r]in c.map););-1===r&&(d=!1)}if(m=c.map["data-mce-bogus"]){if("all"===m){w=ov($,x,O.lastIndex),O.lastIndex=w;continue}d=!1}}d&&J(i,c,u)}else d=!1;if(n=z[i]){n.lastIndex=w=t.index+j.length,w=(t=n.exec(x))?(d&&(o=x.substr(w,t.index-w)),t.index+t[0].length):(o=x.substr(w),x.length),d&&(0<o.length&&R(o,!0),Q(i)),O.lastIndex=w;continue}u||(g&&g.indexOf("/")===g.length-1?d&&Q(i):S.push({name:i,valid:d}))}else if(i=t[1])D(i);else if(i=t[2]){if(!(1==_||q.preserve_cdata||0<S.length&&$.isValidChild(S[S.length-1].name,"#cdata"))){w=T("",t.index+2),O.lastIndex=w;continue}Y(i)}else if(i=t[3])ee(i);else{if((i=t[4])||"<!"===j){w=T(i,t.index+j.length),O.lastIndex=w;continue}if(i=t[5]){if(1!=_){w=T("?",t.index+2),O.lastIndex=w;continue}Z(i,t[6])}}w=t.index+j.length}for(w<x.length&&R(E(x.substr(w))),r=S.length-1;0<=r;r--)(i=S[r]).valid&&Q(i.name)}!1!==q.fix_self_closing&&(q.fix_self_closing=!0);var X=q.comment||te,Y=q.cdata||te,G=q.text||te,J=q.start||te,Q=q.end||te,Z=q.pi||te,ee=q.doctype||te;return{parse:function(e,t){void 0===t&&(t="html"),n(function(e){for(var t,n=/data:[^;<"'\s]+;base64,([a-z0-9\+\/=\s]+)/gi,r=[],o={},i=wu("img"),a=0,u=0;t=n.exec(e);){var s=t[0],c=i+"_"+u++;o[c]=s,a<t.index&&r.push(e.substr(a,t.index-a)),r.push(c),a=t.index+s.length}var l=new RegExp(i+"_[0-9]+","g");return 0===a?{prefix:i,uris:o,html:e,re:l}:(a<e.length&&r.push(e.substr(a)),{prefix:i,uris:o,html:r.join(""),re:l})}(e),t)}}}var av=Nt.makeMap("button,fieldset,form,iframe,img,image,input,object,output,select,textarea"),uv=Re(function(){return document.implementation.createHTMLDocument("parser")}),sv=function(e,t,n){void 0===n&&(n=0);var r=e.toLowerCase();if(-1!==r.indexOf("[if ",n)&&(u=n,/^\s*\[if [\w\W]+\]>.*<!\[endif\](--!?)?>/.test(r.substr(u)))){var o=r.indexOf("[endif]",n);return r.indexOf(">",o)}if(t){var i=r.indexOf(">",n);return-1!==i?i:r.length}var a=/--!?>/g;a.lastIndex=n;var u,s=a.exec(e);return s?s.index+s[0].length:r.length};function cv(A,R){void 0===R&&(R=oo());var D={},T=[],O={},B={};(A=A||{}).validate=!("validate"in A)||A.validate,A.root_name=A.root_name||"body";function P(e){var t=e.name;t in D&&((r=O[t])?r.push(e):O[t]=[e]);for(var n=T.length;n--;){var r,o=T[n].name;o in e.attributes.map&&((r=B[o])?r.push(e):B[o]=[e])}return e}var e={schema:R,addAttributeFilter:function(e,n){Rv(Dv(e),function(e){for(var t=0;t<T.length;t++)if(T[t].name===e)return void T[t].callbacks.push(n);T.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(T)},addNodeFilter:function(e,n){Rv(Dv(e),function(e){var t=D[e];t||(D[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e,t=[];for(e in D)Ee(D,e)&&t.push({name:e,callbacks:D[e]});return t},filterNode:P,parse:function(e,s){var t,n,r,o,i,c,a,l,f=[];function d(e){for(var t=R.getBlockElements(),n=e.prev;n&&3===n.type;){var r=n.value.replace(w,"");if(0<r.length)return n.value=r,0;var o=n.next;if(o){if(3===o.type&&o.value.length){n=n.prev;continue}if(!t[o.name]&&"script"!==o.name&&"style"!==o.name){n=n.prev;continue}}var i=n.prev;n.remove(),n=i}}s=s||{},O={},B={};function m(e,t){var n,r=new jd(e,t);return e in D&&((n=O[e])?n.push(r):O[e]=[r]),r}var g=Tv(Av("script,style,head,html,body,title,meta,param"),R.getBlockElements()),p=no(R),h=R.getNonEmptyElements(),v=R.children,b=A.validate,u=("forced_root_block"in s?s:A).forced_root_block,y=!1===u?"":!0===u?"p":u,C=R.getWhiteSpaceElements(),x=/^[ \t\r\n]+/,w=/[ \t\r\n]+$/,S=/[ \t\r\n]+/g,N=/^[ \t\r\n]+$/,E=Ee(C,s.context)||Ee(C,A.root_name),k=iv({validate:b,document:A.document,allow_html_data_urls:A.allow_html_data_urls,allow_svg_data_urls:A.allow_svg_data_urls,allow_script_urls:A.allow_script_urls,allow_conditional_comments:A.allow_conditional_comments,preserve_cdata:A.preserve_cdata,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(R.getSelfClosingElements()),cdata:function(e){l.append(m("#cdata",4)).value=e},text:function(e,t){var n,r;E||(e=e.replace(S," "),(r=l.lastChild)&&(Ee(g,r.name)||"br"===r.name)&&(e=e.replace(x,""))),0!==e.length&&((n=m("#text",3)).raw=!!t,l.append(n).value=e)},comment:function(e){l.append(m("#comment",8)).value=e},pi:function(e,t){l.append(m(e,7)).value=t,d(l)},doctype:function(e){l.append(m("#doctype",10)).value=e,d(l)},start:function(e,t,n){var r=b?R.getElementRule(e):{};if(r){var o=m(r.outputName||e,1);o.attributes=t,o.shortEnded=n,l.append(o);var i=v[l.name];i&&v[o.name]&&!i[o.name]&&f.push(o);for(var a=T.length;a--;){var u=T[a].name;u in t.map&&((c=B[u])?c.push(o):B[u]=[o])}g[e]&&d(o),n||(l=o),!E&&C[e]&&(E=!0)}},end:function(e){var t,n,r,o,i=b?R.getElementRule(e):{};if(i){if(g[e]&&!E){if((t=l.firstChild)&&3===t.type)if(0<(n=t.value.replace(x,"")).length)t.value=n,t=t.next;else for(r=t.next,t.remove(),t=r;t&&3===t.type;)n=t.value,r=t.next,0!==n.length&&!N.test(n)||(t.remove(),t=r),t=r;if((t=l.lastChild)&&3===t.type)if(0<(n=t.value.replace(w,"")).length)t.value=n,t=t.prev;else for(r=t.prev,t.remove(),t=r;t&&3===t.type;)n=t.value,r=t.prev,0!==n.length&&!N.test(n)||(t.remove(),t=r),t=r}E&&C[e]&&(E=!1);var a=Kh(R,h,C,l),u=l.parent;i.paddInEmptyBlock&&a&&function(){for(var e=l;V(e);){if(e.name in p)return Kh(R,h,C,e);e=e.parent}}()?Wh(A,s,g,l):i.removeEmpty&&a?g[l.name]?l.empty().remove():l.unwrap():i.paddEmpty&&(Gh(o=l,"#text")&&o.firstChild.value===wo||a)&&Wh(A,s,g,l),l=u}}},R),_=l=new jd(s.context||A.root_name,11);if(k.parse(e,s.format),b&&f.length&&(s.context?s.invalid=!0:function(e){for(var t=Av("tr,td,th,tbody,thead,tfoot,table"),n=R.getNonEmptyElements(),r=R.getWhiteSpaceElements(),o=R.getTextBlockElements(),i=R.getSpecialElements(),a=function(e,t){if(void 0===t&&(t=e.parent),i[e.name])e.empty().remove();else{for(var n=0,r=e.children();n<r.length;n++){var o=r[n];R.isValidChild(t.name,o.name)||a(o,t)}e.unwrap()}},u=0;u<e.length;u++){var s,c=e[u],l=void 0,f=void 0;if(c.parent&&!c.fixed)if(o[c.name]&&"li"===c.parent.name){for(var d=c.next;d&&o[d.name];)d.name="li",d.fixed=!0,c.parent.insert(d,c.parent),d=d.next;c.unwrap()}else{for(var m=[c],l=c.parent;l&&!R.isValidChild(l.name,c.name)&&!t[l.name];l=l.parent)m.push(l);if(l&&1<m.length)if(R.isValidChild(l.name,c.name)){m.reverse();for(var g=s=P(m[0].clone()),p=0;p<m.length-1;p++){R.isValidChild(g.name,m[p].name)?(f=P(m[p].clone()),g.append(f)):f=g;for(var h=m[p].firstChild;h&&h!==m[p+1];){var v=h.next;f.append(h),h=v}g=f}Kh(R,n,r,s)?l.insert(c,m[0],!0):(l.insert(s,m[0],!0),l.insert(c,s)),l=m[0],(Kh(R,n,r,l)||Gh(l,"br"))&&l.empty().remove()}else a(c);else c.parent&&("li"!==c.name?R.isValidChild(c.parent.name,"div")&&R.isValidChild("div",c.name)?c.wrap(P(new jd("div",1))):a(c):!(d=c.prev)||"ul"!==d.name&&"ol"!==d.name?!(d=c.next)||"ul"!==d.name&&"ol"!==d.name?c.wrap(P(new jd("ul",1))):d.insert(c,d.firstChild,!0):d.append(c))}}}(f)),y&&("body"===_.name||s.isRootContent)&&function(){function e(e){e&&((t=e.firstChild)&&3===t.type&&(t.value=t.value.replace(x,"")),(t=e.lastChild)&&3===t.type&&(t.value=t.value.replace(w,"")))}var t=_.firstChild,n=null;if(R.isValidChild(_.name,y.toLowerCase())){for(;t;){var r=t.next;3===t.type||1===t.type&&"p"!==t.name&&!g[t.name]&&!t.attr("data-mce-type")?(n||((n=m(y,1)).attr(A.forced_root_block_attrs),_.insert(n,t)),n.append(t)):(e(n),n=null),t=r}e(n)}}(),!s.invalid){for(a in O)if(Ee(O,a)){for(c=D[a],o=(t=O[a]).length;o--;)t[o].parent||t.splice(o,1);for(n=0,r=c.length;n<r;n++)c[n](t,a,s)}for(n=0,r=T.length;n<r;n++)if((c=T[n]).name in B){for(o=(t=B[c.name]).length;o--;)t[o].parent||t.splice(o,1);for(o=0,i=c.callbacks.length;o<i;o++)c.callbacks[o](t,c.name,s)}}return _}};return Xh(e,A),A.inline_styles&&Uh(e,A),e}function lv(e,t,n){-1===Nt.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))}function fv(L,I){var e=["data-mce-selected"],M=I&&I.dom?I.dom:eu.DOM,F=I&&I.schema?I.schema:oo(L);L.entity_encoding=L.entity_encoding||"named",L.remove_trailing_brs=!("remove_trailing_brs"in L)||L.remove_trailing_brs;var t,U=cv(L,F),s=L,c=M;return(t=U).addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length;n--;){var r=e[n];r.attr("tabindex",r.attr("data-mce-tabindex")),r.attr(t,null)}}),t.addAttributeFilter("src,href,style",function(e,t){for(var n="data-mce-"+t,r=s.url_converter,o=s.url_converter_scope,i=e.length;i--;){var a=e[i],u=a.attr(n);void 0!==u?(a.attr(t,0<u.length?u:null),a.attr(n,null)):(u=a.attr(t),"style"===t?u=c.serializeStyle(c.parseStyle(u),a.name):r&&(u=r.call(o,u,t,a.name)),a.attr(t,0<u.length?u:null))}}),t.addAttributeFilter("class",function(e){for(var t=e.length;t--;){var n,r=e[t];r.attr("class")&&(n=r.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),r.attr("class",0<n.length?n:null))}}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length;r--;){var o=e[r];"bookmark"!==o.attr("data-mce-type")||n.cleanup||(ve.from(o.firstChild).exists(function(e){return!No(e.value)})?o.unwrap():o.remove())}}),t.addNodeFilter("noscript",function(e){for(var t=e.length;t--;){var n=e[t].firstChild;n&&(n.value=Zo.decode(n.value))}}),t.addNodeFilter("script,style",function(e,t){for(var n=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")},r=e.length;r--;){var o,i=e[r],a=i.firstChild?i.firstChild.value:"";"script"===t?((o=i.attr("type"))&&i.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<a.length&&(i.firstChild.value="// <![CDATA[\n"+n(a)+"\n// ]]>")):"xhtml"===s.element_format&&0<a.length&&(i.firstChild.value="\x3c!--\n"+n(a)+"\n--\x3e")}}),t.addNodeFilter("#comment",function(e){for(var t=e.length;t--;){var n=e[t];s.preserve_cdata&&0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=c.decode(n.value.replace(/^\[CDATA\[|\]\]$/g,""))):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length;n--;){var r=e[n];7===r.type?r.remove():1===r.type&&("input"!==t||r.attr("type")||r.attr("type","text"))}}),t.addAttributeFilter("data-mce-type",function(e){Y(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize,data-mce-placeholder",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:F,addNodeFilter:U.addNodeFilter,addAttributeFilter:U.addAttributeFilter,serialize:function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x,w,S,N,E,k,_,A,R,D,T=_e({format:"html"},t=void 0===t?{}:t),O=(n=(m=e,N=g=T,(d=I)&&d.hasEventListeners("PreProcess")&&!N.no_events?(h=g,x=(p=d).dom,w=m.cloneNode(!0),(S=document.implementation).createHTMLDocument&&(b=S.createHTMLDocument(""),Nt.each("BODY"===w.nodeName?w.childNodes:[w],function(e){b.body.appendChild(b.importNode(e,!0))}),w="BODY"!==w.nodeName?b.body.firstChild:b.body,v=x.doc,x.doc=b),y=p,C=_e(_e({},h),{node:w}),y.fire("PreProcess",C),v&&(x.doc=v),w):m),o=Eo((r=T).getInner?n.innerHTML:M.getOuterHTML(n)),r.selection||Co(Et.fromDom(n))?o:Nt.trim(o)),B=(i=U,a=O,s=(u=T).selection?_e({forced_root_block:!1},u):u,c=i.parse(a,s),!P(f=c.lastChild)||P(l=f.prev)&&(f.remove(),l.remove()),c);function P(e){return e&&"br"===e.name}return"tree"===T.format?B:(E=I,k=T,_=B,D=rm(L,F).serialize(_),k.no_events||!E?D:(A=E,R=_e(_e({},k),{content:D}),A.fire("PostProcess",R).content))},addRules:F.addValidElements,setRules:F.setValidElements,addTempAttr:R(lv,U,e),getTempAttrs:J(e),getNodeFilters:U.getNodeFilters,getAttributeFilters:U.getAttributeFilters}}function dv(e,t){var n=fv(e,t);return{schema:n.schema,addNodeFilter:n.addNodeFilter,addAttributeFilter:n.addAttributeFilter,serialize:n.serialize,addRules:n.addRules,setRules:n.setRules,addTempAttr:n.addTempAttr,getTempAttrs:n.getTempAttrs,getNodeFilters:n.getNodeFilters,getAttributeFilters:n.getAttributeFilters}}function mv(e,t,n){return r=n=void 0===n?{}:n,bh(e).editor.setContent(t,r);var r}function gv(e){return ve.from(e).each(function(e){return e.destroy()})}function pv(e,t){var n,r,o,i,a,u,s,c=(n=e,r=U(Pv,function(e){return Ee(n,e)}),!1!==(o=n.forced_root_block)&&""!==o||r.push("forced_root_block (false only)"),W(r)),l=(s=Nt.makeMap(t.plugins," "),W(Ae(Ae([],U(Lv,g),!0),H(Iv,function(e){return g(e)?[e+" (moving to premium)"]:[]}),!0))),f=0<l.length,d=0<c.length,m="mobile"===t.theme;function g(e){return Ee(s,e)}(f||d||m)&&(i=m?"\n\nThemes:\n- mobile":"",a=f?"\n\nPlugins:\n- "+l.join("\n- "):"",u=d?"\n\nSettings:\n- "+c.join("\n- "):"",console.warn("The following deprecated features are currently enabled, these will be removed in TinyMCE 6.0. See https://www.tiny.cloud/docs/release-notes/6.0-upcoming-changes/ for more information."+i+a+u))}function hv(e){var t=S(e)?e.join(" "):e;return U(A(X(t)?t.split(" "):[],Je),function(e){return 0<e.length})}function vv(e,t){return Ee(e.sections(),t)}function bv(e,t){return ue(e,"toolbar_mode").orThunk(function(){return ue(e,"toolbar_drawer").map(function(e){return!1===e?"wrap":e})}).getOr(t)}function yv(e,t,n,r){var o,i,a,u,s,c,l,f,d=hv(n.forced_plugins),m=hv(r.plugins),g=vv(o=t,"mobile")?o.sections().mobile:{},p=g.plugins?hv(g.plugins):m,h=(i=(u=t,s=m,c=p,(a=e)&&(0,f=(l=u).sections(),vv(l,"mobile")&&"mobile"===f.mobile.theme)?U(c,R(T,Hv)):a&&vv(u,"mobile")?c:s),[].concat(hv(d)).concat(hv(i)));if(xt.browser.isIE()&&T(h,"rtc"))throw new Error("RTC plugin is not supported on IE 11.");return Nt.extend(r,{plugins:h.join(" ")})}function Cv(e,t,n,r,o){var i,a,u,s,c,l,f,d,m=e?{mobile:(i=t,a={resize:!1,toolbar_mode:bv(o.mobile||{},"scrolling"),toolbar_sticky:!1},_e(_e(_e({},jv),a),i?{menubar:!1}:{}))}:{},g=(c=["mobile"],ie(Bv(m,o),function(e,t){return T(c,t)},oe(l={}),oe(f={})),{sections:J((d={t:l,f:f}).t),settings:J(d.f)}),p=Nt.extend(n,r,g.settings(),e&&vv(g,"mobile")?function(e){void 0===e&&(e={});var t=ue(g.sections(),"mobile").getOr({});return Nt.extend({},e,t)}():{},{validate:!0,external_plugins:(u=r,s=g.settings().external_plugins||{},u&&u.external_plugins?Nt.extend({},u.external_plugins,s):s)});return yv(e,g,r,p)}function xv(e,t,n){return ve.from(t.settings[n]).filter(e)}function wv(e,t){return t.dom[e]}function Sv(e,t){return parseInt(wn(t,e),10)}function Nv(e,t,n){var r,o,i,a,u,s,c=Et.fromDom(e.getBody()),l=e.inline?c:Et.fromDom(Dt(c).dom.documentElement),f=(r=e.inline,i=t,a=n,u=(o=l).dom.getBoundingClientRect(),{x:i-(r?u.left+o.dom.clientLeft+Kv(o):0),y:a-(r?u.top+o.dom.clientTop+Wv(o):0)}),d=f.x,m=f.y,g=qv(s=l),p=$v(s);return 0<=d&&0<=m&&d<=g&&m<=p}function Ev(o){function i(){var e=o.theme;return e&&e.getNotificationManagerImpl?e.getNotificationManagerImpl():{open:t,close:t,reposition:t,getArgs:t};function t(){throw new Error("Theme did not provide a NotificationManager implementation.")}}function a(){return ve.from(c[0])}function u(){0<c.length&&i().reposition(c)}function s(t){z(c,function(e){return e===t}).each(function(e){c.splice(e,1)})}function t(n,e){if(void 0===e&&(e=!0),!o.removed&&(r=(t=o).inline?t.getBody():t.getContentAreaContainer(),ve.from(r).map(Et.fromDom).map(Mn).getOr(!1)))return e&&o.fire("BeforeOpenNotification",{notification:n}),M(c,function(e){return!((t=i().getArgs(e)).type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t}).getOrThunk(function(){o.editorManager.setActive(o);var e=i().open(n,function(){s(e),u(),a().fold(function(){return o.focus()},function(e){return Et.fromDom(e.getEl()).dom.focus()})});return c.push(e),u(),o.fire("OpenNotification",{notification:_e({},e)}),e});var t,r}var n,c=[],e=J(c);return(n=o).on("SkinLoaded",function(){var e=n.getParam("service_message");e&&t({text:e,type:"warning",timeout:0},!1),u()}),n.on("show ResizeEditor ResizeWindow NodeChange",function(){Ar.requestAnimationFrame(u)}),n.on("remove",function(){Y(c.slice(),function(e){i().close(e)})}),{open:t,close:function(){a().each(function(e){i().close(e),s(e),u()})},getNotifications:e}}iv.findEndTag=ov;var kv,_v,Av=Nt.makeMap,Rv=Nt.each,Dv=Nt.explode,Tv=Nt.extend,Ov=eu.DOM,Bv=(kv=function(e,t){return h(e)&&h(t)?Bv(e,t):t},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o,i=e[r];for(o in i)Ee(i,o)&&(n[o]=kv(n[o],i[o]))}return n}),Pv="autoresize_on_init,content_editable_state,convert_fonts_to_spans,inline_styles,padd_empty_with_br,block_elements,boolean_attributes,editor_deselector,editor_selector,elements,file_browser_callback_types,filepicker_validator_handler,force_hex_style_colors,force_p_newlines,gecko_spellcheck,images_dataimg_filter,media_scripts,mode,move_caret_before_on_enter_elements,non_empty_elements,self_closing_elements,short_ended_elements,special,spellchecker_select_languages,spellchecker_whitelist,tab_focus,table_responsive_width,text_block_elements,text_inline_elements,toolbar_drawer,types,validate,whitespace_elements,paste_word_valid_elements,paste_retain_style_properties,paste_convert_word_fake_lists".split(","),Lv="bbcode,colorpicker,contextmenu,fullpage,legacyoutput,spellchecker,textcolor".split(","),Iv="imagetools,toc".split(","),Mv=dt().deviceType,Fv=Mv.isTouch(),Uv=Mv.isPhone(),zv=Mv.isTablet(),Hv=["lists","autolink","autosave"],jv={table_grid:!1,object_resizing:!1,resize:!1},Vv=(_v={},{add:function(e,t){_v[e]=t},get:function(e){return _v[e]||{icons:{}}},has:function(e){return Ee(_v,e)}}),qv=R(wv,"clientWidth"),$v=R(wv,"clientHeight"),Wv=R(Sv,"margin-top"),Kv=R(Sv,"margin-left"),Xv=fu.PluginManager,Yv=fu.ThemeManager;function Gv(r){function o(){var e=r.theme;return e&&e.getWindowManagerImpl?e.getWindowManagerImpl():{open:t,openUrl:t,alert:t,confirm:t,close:t,getParams:t,setParams:t};function t(){throw new Error("Theme did not provide a WindowManager implementation.")}}function i(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r?r.apply(n,e):void 0}}function n(t){r.fire("CloseWindow",{dialog:t}),0===(u=U(u,function(e){return e!==t})).length&&r.focus()}function a(e){r.editorManager.setActive(r),dd(r);var t,n=e();return t=n,u.push(t),r.fire("OpenWindow",{dialog:t}),n}var u=[];return r.on("remove",function(){Y(u,function(e){o().close(e)})}),{open:function(e,t){return a(function(){return o().open(e,t,n)})},openUrl:function(e){return a(function(){return o().openUrl(e,n)})},alert:function(e,t,n){var r=o();r.alert(e,i(n||r,t))},confirm:function(e,t,n){var r=o();r.confirm(e,i(n||r,t))},close:function(){ve.from(u[u.length-1]).each(function(e){o().close(e),n(e)})}}}function Jv(e,t){e.notificationManager.open({type:"error",text:t})}function Qv(e,t){e._skinLoaded?Jv(e,t):e.on("SkinLoaded",function(){Jv(e,t)})}function Zv(e,t,n){Cf(e,t,{message:n}),console.error(n)}function eb(e,t,n){return n?"Failed to load "+e+": "+n+" from url "+t:"Failed to load "+e+" url: "+t}function tb(e,t,n){Zv(e,"PluginLoadError",eb("plugin",t,n))}function nb(e){var t,n;e.contentCSS=e.contentCSS.concat(Ey(e,(n=(t=e).getParam("content_css"),X(n)?A(n.split(","),Je):S(n)?n:!1===n||t.inline?[]:["default"])),Ey(e,Bs(e)))}function rb(){function n(e,t){return{status:e,resultUri:t}}function t(e){return e in r}var r={};return{hasBlobUri:t,getResultUri:function(e){var t=r[e];return t?t.resultUri:null},isPending:function(e){return!!t(e)&&1===r[e].status},isUploaded:function(e){return!!t(e)&&2===r[e].status},markPending:function(e){r[e]=n(1,null)},markUploaded:function(e,t){r[e]=n(2,t)},removeFailed:function(e){delete r[e]},destroy:function(){r={}}}}function ob(e){return e+ky+++("s"+(new Date).getTime().toString(36)+t()+t()+t());function t(){return Math.round(4294967295*Math.random()).toString(36)}}function ib(){function e(e){return M(n,e).getOrUndefined()}function i(e){if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");var t=e.id||ob("blobid"),n=e.name||t,r=e.blob;return{id:J(t),name:J(n),filename:J(e.filename||n+"."+({"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png","image/apng":"apng","image/avif":"avif","image/svg+xml":"svg","image/webp":"webp","image/bmp":"bmp","image/tiff":"tiff"}[r.type.toLowerCase()]||"dat")),blob:J(r),base64:J(e.base64),blobUri:J(e.blobUri||URL.createObjectURL(r)),uri:J(e.uri)}}function t(t){return e(function(e){return e.id()===t})}var n=[];return{create:function(e,t,n,r,o){if(X(e))return i({id:e,name:r,filename:o,blob:t,base64:n});if(h(e))return i(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t,getByUri:function(t){return e(function(e){return e.blobUri()===t})},getByData:function(t,n){return e(function(e){return e.base64()===t&&e.blob().type===n})},findFirst:e,removeByUri:function(t){n=U(n,function(e){return e.blobUri()!==t||void URL.revokeObjectURL(e.blobUri())})},destroy:function(){Y(n,function(e){URL.revokeObjectURL(e.blobUri())}),n=[]}}}function ab(u,s){function o(e,r,o,t){var i=new XMLHttpRequest;i.open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"string"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)};var n=new FormData;n.append("file",e.blob(),e.filename()),i.send(n)}function c(e,t){return{url:t,blobInfo:e,status:!0}}function l(e,t,n){return{url:"",blobInfo:e,status:!1,error:{message:t,options:n}}}function f(e,t){Nt.each(d[e],function(e){e(t)}),delete d[e]}var d={};return!1===y(s.handler)&&(s.handler=o),{upload:function(e,t){return s.url||s.handler!==o?(n=e,r=t,n=Nt.grep(e,function(e){return!u.isUploaded(e.blobUri())}),_r.all(Nt.map(n,function(e){return u.isPending(e.blobUri())?(n=e.blobUri(),new _r(function(e){d[n]=d[n]||[],d[n].push(e)})):(i=e,t=s.handler,a=r,u.markPending(i.blobUri()),new _r(function(r){var n;try{var o=function(){n&&n.close()};t(i,function(e){o(),u.markUploaded(i.blobUri(),e),f(i.blobUri(),c(i,e)),r(c(i,e))},function(e,t){var n=t||{};o(),u.removeFailed(i.blobUri()),f(i.blobUri(),l(i,e,n)),r(l(i,e,n))},function(t){t<0||100<t||ve.from(n).orThunk(function(){return ve.from(a).map(C)}).each(function(e){(n=e).progressBar.value(t)})})}catch(e){r(l(i,e.message,{}))}}));var i,t,a,n}))):new _r(function(e){e([])});var n,r}}}function ub(e){return function(){return e.notificationManager.open({text:e.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}}function sb(e,t){return ab(t,{url:e.getParam("images_upload_url","","string"),basePath:e.getParam("images_upload_base_path","","string"),credentials:e.getParam("images_upload_credentials",!1,"boolean"),handler:e.getParam("images_upload_handler",null,"function")})}function cb(l){function t(t){return function(e){return l.selection?t(e):[]}}function r(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e}function o(e,t,n){return e=r(e,'src="'+t+'"','src="'+n+'"'+(n===xt.transparentSrc?' data-mce-placeholder="1"':"")),r(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function f(t,n){Y(l.undoManager.data,function(e){"fragmented"===e.type?e.fragments=A(e.fragments,function(e){return o(e,t,n)}):e.content=o(e.content,t,n)})}function n(n){return u=u||sb(l,g),v().then(t(function(c){var e=A(c,function(e){return e.blobInfo});return u.upload(e,ub(l)).then(t(function(e){var s=[],t=A(e,function(e,t){var n,r,o,i,a=c[t].blobInfo,u=c[t].image;return e.status&&l.getParam("images_replace_blob_uris",!0,"boolean")?(m.removeByUri(u.src),hh(l)||(r=u,o=e.url,i=l.convertURL(o,"src"),f(r.src,o),l.$(r).attr({src:l.getParam("images_reuse_filename",!1,"boolean")?o+(-1===o.indexOf("?")?"?":"&")+(new Date).getTime():o,"data-mce-src":i}))):e.error&&(e.error.options.remove&&(f(u.getAttribute("src"),xt.transparentSrc),s.push(u)),n=e.error.message,Qv(l,lu.translate(["Failed to upload image: {0}",n]))),{element:u,status:e.status,uploadUri:e.url,blobInfo:a}});return 0<t.length&&h.fireIfChanged(),0<s.length&&(hh(l)?console.error("Removing images on failed uploads is currently unsupported for RTC"):l.undoManager.transact(function(){Y(s,function(e){l.dom.remove(e),m.removeByUri(e.src)})})),n&&n(t),t}))}))}function e(e){if(As(l))return n(e)}function i(t){return!1!==j(p,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||l.getParam("images_dataimg_filter",w,"function")(t))}function a(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=g.getResultUri(n);if(t)return'src="'+t+'"';var r=(r=m.getByUri(n))||L(l.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null);return r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})}var u,s,c,d,m=ib(),g=rb(),p=[],h=(d=au(null),(c=l).on("change AddUndo",function(e){d.set(_e({},e.level))}),{fireIfChanged:function(){var t=c.undoManager.data;Z(t).filter(function(e){return!fh(d.get(),e)}).each(function(e){c.setDirty(!0),c.fire("change",{level:e,lastLevel:G(t,t.length-2).getOrNull()})})}}),v=function(){return(s=s||qh(g,m)).findAll(l.getBody(),i).then(t(function(e){return e=U(e,function(e){return"string"!=typeof e||void Qv(l,e)}),hh(l)||Y(e,function(e){f(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))};return l.on("SetContent",function(){(As(l)?e:v)()}),l.on("RawSaveContent",function(e){e.content=a(e.content)}),l.on("GetContent",function(e){e.source_view||"raw"===e.format||"tree"===e.format||(e.content=a(e.content))}),l.on("PostRender",function(){l.parser.addNodeFilter("img",function(e){Y(e,function(e){var t,n=e.attr("src");m.getByUri(n)||(t=g.getResultUri(n))&&e.attr("src",t)})})}),{blobCache:m,addFilter:function(e){p.push(e)},uploadImages:n,uploadImagesAuto:e,scanForImages:v,destroy:function(){m.destroy(),g.destroy(),s=u=null}}}function lb(e,t){function m(e){o="string"==typeof e?{name:e,classes:[],attrs:{}}:e;var t,n=Ay.create(o.name),r=n;return(t=o).classes.length&&Ay.addClass(r,t.classes.join(" ")),Ay.setAttribs(r,t.attrs),n}var n,o,r,g=t&&t.schema||oo({}),p=function(n,e,t){var r,o,i,a,u,s,c,l=0<e.length&&e[0],f=l&&l.name,d=(a=f,u="string"!=typeof(i=n)?i.nodeName.toLowerCase():i,!(!(c=(s=g.getElementRule(u))&&s.parentsRequired)||!c.length)&&(a&&-1!==Nt.inArray(c,a)?a:c[0]));if(d)f===d?(o=e[0],e=e.slice(1)):o=d;else if(l)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=m(o)).appendChild(n),t&&(r||(r=Ay.create("div")).appendChild(n),Nt.each(t,function(e){var t=m(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(n=m(o=e[0]),(r=Ay.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""}function fb(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Nt.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Nt.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}var i;return"["!==r||(i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/))&&(a.attrs[i[1]]=i[2]),""})),a.name=t||"div",a}function db(n,e){var r,t,o="",i=(t=n.getParam("preview_styles","font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),X(t)?t:"");if(""===i)return"";function a(e){return e.replace(/%(\w+)/g,"")}if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}if("preview"in e){var u=ue(e,"preview");if(fn(u,!1))return"";i=u.getOr(i)}var s,c=e.block||e.inline||"span",l=(s=e.selector)&&"string"==typeof s?(s=(s=s.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Nt.map(s.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Nt.map(e.split(/(?:~\+|~|\+)/),fb),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[],f=l.length?(l[0].name||(l[0].name=c),c=e.selector,lb(l,n)):lb([c],n),d=Ay.select(c,f)[0]||f.firstChild;return _y(e.styles,function(e,t){var n=a(e);n&&Ay.setStyle(d,t,n)}),_y(e.attributes,function(e,t){var n=a(e);n&&Ay.setAttrib(d,t,n)}),_y(e.classes,function(e){var t=a(e);Ay.hasClass(d,t)||Ay.addClass(d,t)}),n.fire("PreviewFormats"),Ay.setStyles(f,{position:"absolute",left:-65535}),n.getBody().appendChild(f),r=Ay.getStyle(n.getBody(),"fontSize",!0),r=/px$/.test(r)?parseInt(r,10):0,_y(i.split(" "),function(e){var t=Ay.getStyle(d,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Ay.getStyle(n.getBody(),e,!0),"#ffffff"===Ay.toHex(t).toLowerCase())||"color"===e&&"#000000"===Ay.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===r)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*r+"px"}"border"===e&&t&&(o+="padding:0 2px;"),o+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Ay.remove(f),o}function mb(c){var e,r,t,n,o,i,a=(n={},(o=function(e,t){e&&(X(e)?(Y(t=!S(t)?[t]:t,function(e){b(e.deep)&&(e.deep=!gl(e)),b(e.split)&&(e.split=!gl(e)||pl(e)),b(e.remove)&&gl(e)&&!pl(e)&&(e.remove="none"),gl(e)&&pl(e)&&(e.mixed=!0,e.block_expand=!0),X(e.classes)&&(e.classes=e.classes.split(/\s+/))}),n[e]=t):ne(e,function(e,t){o(t,e)}))})((r=(e=c).dom,t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table,audio,video",collapsed:!1,styles:{float:"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img,audio,video",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table,audio,video",collapsed:!1,styles:{float:"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all",preserve_attributes:["class","style"]}],italic:[{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all",preserve_attributes:["class","style"]}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all",preserve_attributes:["class","style"]}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"s",remove:"all",preserve_attributes:["class","style"]}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},lineheight:{selector:"h1,h2,h3,h4,h5,h6,p,li,td,th,div",defaultBlock:"p",styles:{lineHeight:"%value"}},fontsize_class:{inline:"span",attributes:{class:"%value"}},blockquote:{block:"blockquote",wrapper:!0,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(e,t,n){return Hn(e)&&e.hasAttribute("href")},onformat:function(n,e,t){Nt.each(t,function(e,t){r.setAttrib(n,t,e)})}},lang:{inline:"span",clear_child_styles:!0,remove_similar:!0,attributes:{lang:"%value","data-mce-lang":function(e){var t;return null!==(t=null==e?void 0:e.customValue)&&void 0!==t?t:null}}},removeformat:[{selector:"b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]},Nt.each("p h1 h2 h3 h4 h5 h6 div address pre dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t)),o(e.getParam("formats")),{get:function(e){return V(e)?n[e]:n},has:function(e){return Ee(n,e)},register:o,unregister:function(e){return e&&n[e]&&delete n[e],n}}),l=au(null);return function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])}(c),(i=c).on("mouseup keydown",function(e){var t=i,n=e.keyCode,r=t.selection,o=t.getBody();Hg(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==Cp||Hg(t,qc(o,r.getStart())),37!==n&&39!==n||Hg(t,qc(o,r.getStart()))}),{get:a.get,has:a.has,register:a.register,unregister:a.unregister,apply:function(e,t,n){var r=e,o=t,i=n;yh(c).formatter.apply(r,o,i)},remove:function(e,t,n,r){var o=e,i=t,a=n,u=r;yh(c).formatter.remove(o,i,a,u)},toggle:function(e,t,n){var r=e,o=t,i=n;yh(c).formatter.toggle(r,o,i)},match:function(e,t,n,r){return o=e,i=t,a=n,u=r,yh(c).formatter.match(o,i,a,u);var o,i,a,u},closest:function(e){return t=e,yh(c).formatter.closest(t);var t},matchAll:function(e,t){return n=e,r=t,yh(c).formatter.matchAll(n,r);var n,r},matchNode:function(e,t,n,r){return o=e,i=t,a=n,u=r,yh(c).formatter.matchNode(o,i,a,u);var o,i,a,u},canApply:function(e){return t=e,yh(c).formatter.canApply(t);var t},formatChanged:function(e,t,n,r){return o=l,i=e,a=t,u=n,s=r,yh(c).formatter.formatChanged(o,i,a,u,s);var o,i,a,u,s},getCssText:R(db,c)}}function gb(e){switch(e.toLowerCase()){case"undo":case"redo":case"mcerepaint":case"mcefocus":return 1;default:return}}function pb(s){var e,n,r,o,i,c=du(),l=au(0),f=au(0),d={data:[],typing:!1,beforeChange:function(){var e=l,t=c;yh(s).undoManager.beforeChange(e,t)},add:function(e,t){return n=d,r=f,o=l,i=c,a=e,u=t,yh(s).undoManager.add(n,r,o,i,a,u);var n,r,o,i,a,u},undo:function(){return e=d,t=l,n=f,yh(s).undoManager.undo(e,t,n);var e,t,n},redo:function(){return e=f,t=d.data,yh(s).undoManager.redo(e,t);var e,t},clear:function(){var e=d,t=f;yh(s).undoManager.clear(e,t)},reset:function(){var e=d;yh(s).undoManager.reset(e)},hasUndo:function(){return e=d,t=f,yh(s).undoManager.hasUndo(e,t);var e,t},hasRedo:function(){return e=d,t=f,yh(s).undoManager.hasRedo(e,t);var e,t},transact:function(e){return t=d,n=l,r=e,yh(s).undoManager.transact(t,n,r);var t,n,r},ignore:function(e){var t=l,n=e;yh(s).undoManager.ignore(t,n)},extra:function(e,t){var n=d,r=f,o=e,i=t;yh(s).undoManager.extra(n,r,o,i)}};return hh(s)||(r=d,o=l,i=au(!1),(n=s).on("init",function(){r.add()}),n.on("BeforeExecCommand",function(e){gb(e.command)||(gh(r,o),r.beforeChange())}),n.on("ExecCommand",function(e){gb(e.command)||a(e)}),n.on("ObjectResizeStart cut",function(){r.beforeChange()}),n.on("SaveContent ObjectResized blur",a),n.on("dragend",a),n.on("keyup",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),n.nodeChanged()),46!==t&&8!==t||n.nodeChanged(),i.get()&&r.typing&&!1===fh(uh(n),r.data[0])&&(!1===n.isDirty()&&(n.setDirty(!0),n.fire("change",{level:r.data[0],lastLevel:null})),n.fire("TypingUndo"),i.set(!1),n.nodeChanged()))}),n.on("keydown",function(e){var t,n=e.keyCode;e.isDefaultPrevented()||(33<=n&&n<=36||37<=n&&n<=40||45===n?r.typing&&a(e):(t=e.ctrlKey&&!e.altKey||e.metaKey,!(n<16||20<n)||224===n||91===n||r.typing||t||(r.beforeChange(),mh(r,!0,o),r.add({},e),i.set(!0))))}),n.on("mousedown",function(e){r.typing&&a(e)}),n.on("input",function(e){e.inputType&&("insertReplacementText"===e.inputType||"insertText"===e.inputType&&null===e.data||"insertFromPaste"===e.inputType||"insertFromDrop"===e.inputType)&&a(e)}),n.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||n.nodeChanged()})),(e=s).addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),d;function a(e){mh(r,!1,o),r.add({},e)}}function hb(e){return"keydown"===e.type||"keyup"===e.type}function vb(e){var t=e.keyCode;return t===If.BACKSPACE||t===If.DELETE}function bb(e,t){return ze(Et.fromDom(t),e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string"))}function yb(e,t,n){var r,o,i=(r=e,o=t,U(eu.DOM.getParents(n.container(),"*",o),r));return ve.from(i[i.length-1])}function Cb(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Ir(n)?Vn(n.nextSibling)?cs(n.nextSibling,0):cs.after(n):Ur(t)?cs(n,r+1):t:Ir(n)?Vn(n.previousSibling)?cs(n.previousSibling,n.previousSibling.data.length):cs.before(n):zr(t)?cs(n,r-1):t}function xb(e){return po(e)||vo(e)}function wb(e,t){return Ve(e,t)?hr(t,xb,(n=e,function(e){return je(n,Et.fromDom(e.dom.parentNode))})):ve.none();var n}function Sb(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),r=(n=(t=e).getBody()).firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))}function Nb(e,t){return{from:e,to:t}}function Eb(e,t){return wb(Et.fromDom(e),Et.fromDom(t.container())).map(function(e){return{block:e,position:t}})}function kb(e){var t,n=z(t=Tn(e),go).fold(J(t),function(e){return t.slice(0,e)});return Y(n,In),n}function _b(e,t){return M(ym(t,e).reverse(),function(e){return Kr(e)}).each(In)}function Ab(e,t,n,r){if(Kr(n))return hm(n),rf(n.dom);0===U(Lt(r),function(e){return!Kr(e)}).length&&Kr(t)&&qt(r,Et.fromTag("br"));var o=nf(n.dom,cs.before(r.dom));return Y(kb(t),function(e){qt(r,e)}),_b(e,t),o}function Rb(e,t,n){if(Kr(n))return In(n),Kr(t)&&hm(t),rf(t.dom);var r=of(n.dom);return Y(kb(t),function(e){Ln(n,e)}),_b(e,t),r}function Db(e,t){jc(e,t.dom).map(function(e){return e.getNode()}).map(Et.fromDom).filter(Pr).each(In)}function Tb(e,t,n){return Db(!0,t),Db(!1,n),(Ve(o=n,r=t)?(i=ym(r,o),ve.from(i[i.length-1])):ve.none()).fold(R(Rb,e,t,n),R(Ab,e,t,n));var r,o,i}function Ob(e,t,n,r){return t?Tb(e,r,n):Tb(e,n,r)}function Bb(t,n){var e,r,o,i,a,u,s,c=Et.fromDom(t.getBody()),l=(e=c.dom,r=n,((o=t.selection.getRng()).collapsed?(a=r,u=Eb(i=e,cs.fromRangeStart(o)),s=u.bind(function(e){return Zl(a,i,e.position).bind(function(e){return Eb(i,e).map(function(e){return t=i,n=a,Kn((r=e).position.getNode())&&!1===Kr(r.block)?jc(!1,r.block.dom).bind(function(e){return e.isEqual(r.position)?Zl(n,t,e).bind(function(e){return Eb(t,e)}):ve.some(r)}).getOr(r):r;var t,n,r})})}),dn(u,s,Nb).filter(function(e){return!1===je(e.from.block,e.to.block)&&Ot((n=e).from.block).bind(function(t){return Ot(n.to.block).filter(function(e){return je(t,e)})}).isSome()&&!1===Gn((t=e).from.block.dom)&&!1===Gn(t.to.block.dom);var t,n})):ve.none()).bind(function(e){return Ob(c,n,e.from.block,e.to.block)}));return l.each(function(e){t.selection.setRng(e.toRange())}),l.isSome()}function Pb(e,t){var n=Et.fromDom(t),r=R(je,e);return pr(n,yo,r).isSome()}function Lb(e){var n,r,o,t,i,a,u,s,c,l,f=Et.fromDom(e.getBody()),d=e.selection.getRng();return a=d,c=nf((i=f).dom,cs.fromRangeStart(a)).isNone(),l=tf(i.dom,cs.fromRangeEnd(a)).isNone(),!Pb(u=i,(s=a).startContainer)&&!Pb(u,s.endContainer)&&c&&l?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=f,r=e.selection,o=r.getRng(),dn(wb(n,Et.fromDom(o.startContainer)),wb(n,Et.fromDom(o.endContainer)),function(e,t){return!1===je(e,t)&&(o.deleteContents(),Ob(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))}function Ib(e,t){return!e.selection.isCollapsed()&&Lb(e)}function Mb(e,t,n,r,o){return ve.from(t._selectionOverrides.showCaret(e,n,r,o))}function Fb(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?ve.none():ve.some(((r=(n=t).ownerDocument.createRange()).selectNode(n),r))}function Ub(e,t,n){var r=nc(1,e.getBody(),t),o=cs.fromRangeStart(r),i=o.getNode();if(Ec(i))return Mb(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(Ec(a))return Mb(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return Ly(e)||Py(e)});return Ec(u)?Mb(1,e,u,!1,n):ve.none()}function zb(e,t,n){return t.collapsed?Ub(e,t,n).getOr(t):t}function Hb(e){return rp(e)||Zg(e)}function jb(e){return op(e)||ep(e)}function Vb(n,r,e,t,o,i){var a,u;return Mb(t,n,i.getNode(!o),o,!0).each(function(e){var t;r.collapsed?(t=r.cloneRange(),o?t.setEnd(e.startContainer,e.startOffset):t.setStart(e.endContainer,e.endOffset),t.deleteContents()):r.deleteContents(),n.selection.setRng(e)}),a=n.dom,Vn(u=e)&&0===u.data.length&&a.remove(u),!0}function qb(e,t){var n=e.selection.getRng();if(!Vn(n.commonAncestorContainer))return!1;var r=t?sc.Forwards:sc.Backwards,o=Mc(e.getBody()),i=R(ac,t?o.next:o.prev),a=t?Hb:jb,u=oc(r,e.getBody(),n),s=Cb(t,i(u));if(!s||!uc(u,s))return!1;if(a(s))return Vb(e,n,u.getNode(),r,t,s);var c=i(s);return!!(c&&a(c)&&uc(s,c))&&Vb(e,n,u.getNode(),r,t,c)}function $b(l,f,d){return Zl(f,l,d).bind(function(e){return s=e.getNode(),yo(Et.fromDom(s))||vo(Et.fromDom(s))||(o=l,u=e,rc(!(i=f),a=d).fold(function(){return rc(i,u).fold(D,c)},c))?ve.none():f&&Gn(e.getNode())||!1===f&&Gn(e.getNode(!0))?(t=l,n=d,r=e.getNode(!1===f),wb(Et.fromDom(t),Et.fromDom(n.getNode())).map(function(e){return Kr(e)?Iy.remove(e.dom):Iy.moveToElement(r)}).orThunk(function(){return ve.some(Iy.moveToElement(r))})):f&&op(d)||!1===f&&rp(d)?ve.some(Iy.moveToPosition(e)):ve.none();var t,n,r,o,i,a,u,s;function c(e){return Br(Et.fromDom(e))&&!Qs(a,u,o)}})}function Wb(e,t){return ve.from(bf(e.getBody(),t))}function Kb(m,g){var e=m.selection.getNode();return Wb(m,e).filter(Gn).fold(function(){return s=m.getBody(),l=nc((c=g)?1:-1,s,m.selection.getRng()),f=cs.fromRangeStart(l),d=Et.fromDom(s),(!1===c&&op(f)?ve.some(Iy.remove(f.getNode(!0))):c&&rp(f)?ve.some(Iy.remove(f.getNode())):!1===c&&rp(f)&&_m(d,f)?cp(d,f).map(function(e){return Iy.remove(e.getNode())}):c&&op(f)&&km(d,f)?lp(d,f).map(function(e){return Iy.remove(e.getNode())}):(r=s,e=c,a=(o=f).getNode(!1===(i=e)),u=i?"after":"before",Hn(a)&&a.getAttribute("data-mce-caret")===u?(n=o.getNode(!1===(t=e)),(t&&Gn(n.nextSibling)?ve.some(Iy.moveToElement(n.nextSibling)):!1===t&&Gn(n.previousSibling)?ve.some(Iy.moveToElement(n.previousSibling)):ve.none()).fold(function(){return $b(r,e,o)},ve.some)):$b(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return ve.some(Iy.remove(e))},function(e){return ve.some(Iy.moveToElement(e))},function(e){return Qs(n,e,t)?ve.none():ve.some(Iy.moveToPosition(e))});var t,n}))).exists(function(e){return e.fold(function(e){return o._selectionOverrides.hideFakeCaret(),Qm(o,i,Et.fromDom(e)),!0},(r=i=g,function(e){var t=r?cs.before(e):cs.after(e);return n.selection.setRng(t.toRange()),!0}),(t=n=o=m,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i});var r,e,o,t,n,i,a,u,s,c,l,f,d},w)}function Xb(e,t){var n=e.selection.getNode();return!(!Gn(n)||Jn(n))&&Wb(e,n.parentNode).filter(Gn).fold(function(){return Y(yu(Et.fromDom(e.getBody()),".mce-offscreen-selection"),In),Qm(e,t,Et.fromDom(e.selection.getNode())),Sb(e),!0},w)}function Yb(e){var t,n=e.dom,r=e.selection,o=bf(e.getBody(),r.getNode());return Yn(o)&&n.isBlock(o)&&n.isEmpty(o)&&(t=n.create("br",{"data-mce-bogus":"1"}),n.setHTML(o,""),o.appendChild(t),r.setRng(cs.before(t).toRange())),!0}function Gb(e,t){return(e.selection.isCollapsed()?Kb:Xb)(e,t)}function Jb(e,t){return!!e.selection.isCollapsed()&&(n=e,r=t,o=cs.fromRangeStart(n.selection.getRng()),Zl(r,n.getBody(),o).filter(function(e){return(r?Jg:Qg)(e)}).bind(function(e){return ve.from(Zs(r?0:-1,e))}).exists(function(e){return n.selection.select(e),!0}));var n,r,o}function Qb(e){return My(e)&&e.data[0]===So}function Zb(e){return My(e)&&e.data[e.data.length-1]===So}function ey(e){return e.ownerDocument.createTextNode(So)}function ty(e,t){return(e?function(e){if(My(e.previousSibling))return Zb(e.previousSibling)||e.previousSibling.appendData(So),e.previousSibling;if(My(e))return Qb(e)||e.insertData(0,So),e;var t=ey(e);return e.parentNode.insertBefore(t,e),t}:function(e){if(My(e.nextSibling))return Qb(e.nextSibling)||e.nextSibling.insertData(0,So),e.nextSibling;if(My(e))return Zb(e)||e.appendData(So),e;var t=ey(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t})(t)}function ny(e,t){return Vn(e.container())?ty(t,e.container()):ty(t,e.getNode())}function ry(e,t){var n=t.get();return n&&e.container()===n&&Ir(n)}function oy(n,e){return e.fold(function(e){Cc(n.get());var t=Fy(e);return n.set(t),ve.some(cs(t,t.length-1))},function(e){return rf(e).map(function(e){if(ry(e,n))return cs(n.get(),1);Cc(n.get());var t=ny(e,!0);return n.set(t),cs(t,1)})},function(e){return of(e).map(function(e){if(ry(e,n))return cs(n.get(),n.get().length-1);Cc(n.get());var t=ny(e,!1);return n.set(t),cs(t,t.length-1)})},function(e){Cc(n.get());var t=Uy(e);return n.set(t),ve.some(cs(t,1))})}function iy(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return ve.none()}function ay(e,t){return Js(t,e)||e}function uy(e,t,n){var r=Oy(n),o=ay(t,r.container());return yb(e,o,r).fold(function(){return tf(o,r).bind(R(yb,e,o)).map(function(e){return zy.before(e)})},ve.none)}function sy(e,t){return null===qc(e,t)}function cy(e,t,n){return yb(e,t,n).filter(R(sy,t))}function ly(e,t,n){var r=By(n);return cy(e,t,r).bind(function(e){return nf(e,r).isNone()?ve.some(zy.start(e)):ve.none()})}function fy(e,t,n){var r=Oy(n);return cy(e,t,r).bind(function(e){return tf(e,r).isNone()?ve.some(zy.end(e)):ve.none()})}function dy(e,t,n){var r=By(n),o=ay(t,r.container());return yb(e,o,r).fold(function(){return nf(o,r).bind(R(yb,e,o)).map(function(e){return zy.after(e)})},ve.none)}function my(e){return!1===(t=Hy(e),"rtl"===eu.DOM.getStyle(t,"direction",!0)||(n=t.textContent,Ty.test(n)));var t,n}function gy(e,t,n){return iy([uy,ly,fy,dy],[e,t,n]).filter(my)}function py(e){return e.fold(J("before"),J("start"),J("end"),J("after"))}function hy(e){return e.fold(zy.before,zy.before,zy.after,zy.after)}function vy(e){return e.fold(zy.start,zy.start,zy.end,zy.end)}function by(a,e,u,t,n,s){return dn(yb(e,u,t),yb(e,u,n),function(e,t){return e!==t&&(r=t,o=Js(e,n=u),i=Js(r,n),o&&o===i)?zy.after(a?e:t):s;var n,r,o,i}).getOr(s)}function yy(e,r){return e.fold(w,function(e){return n=r,!(py(t=e)===py(n)&&Hy(t)===Hy(n));var t,n})}function Cy(e,t){return e?t.fold(i(ve.some,zy.start),ve.none,i(ve.some,zy.after),ve.none):t.fold(ve.none,i(ve.some,zy.before),ve.none,i(ve.some,zy.end))}function xy(e,a,u,s){var t=Cb(e,s),c=gy(a,u,t);return gy(a,u,t).bind(R(Cy,e)).orThunk(function(){return n=a,r=u,o=c,i=Cb(t=e,s),Zl(t,r,i).map(R(Cb,t)).fold(function(){return o.map(hy)},function(e){return gy(n,r,e).map(R(by,t,n,r,i,e)).filter(R(yy,o))}).filter(my);var t,n,r,o,i})}function wy(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=window.console;r&&(r.error||r.log).apply(r,Ae([e],t,!1))}var Sy,Ny,Ey=function(t,e){var n=t.editorManager.baseURL+"/skins/content",r="content"+t.editorManager.suffix+".css",o=!0===t.inline;return A(e,function(e){return/^[a-z0-9\-]+$/i.test(e)&&!o?n+"/"+e+"/"+r:t.documentBaseURI.toAbsolute(e)})},ky=0,_y=Nt.each,Ay=eu.DOM,Ry=[9,27,If.HOME,If.END,19,20,44,144,145,33,34,45,16,17,18,91,92,93,If.DOWN,If.UP,If.LEFT,If.RIGHT].concat(xt.browser.isFirefox()?[224]:[]),Dy="data-mce-placeholder",Ty=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,Oy=R(Cb,!0),By=R(Cb,!1),Py=Yn,Ly=Gn,Iy=ir([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),My=Vn,Fy=R(ty,!0),Uy=R(ty,!1),zy=ir([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Hy=function(e){return e.fold(u,u,u,u)};function jy(e,t,n){var r=e?1:-1;return t.setRng(cs(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0}function Vy(e,t){return e===sc.Backwards?q(t):t}function qy(e,t,n,r){for(var o,i,a,u,s=Mc(n),c=r,l=[];c;){var f=(a=s,u=c,t===sc.Forwards?a.next(u):a.prev(u));if(!f)break;if(Kn(f.getNode(!1)))return t===sc.Forwards?{positions:Vy(t,l).concat([f]),breakType:Sy.Br,breakAt:ve.some(f)}:{positions:Vy(t,l),breakType:Sy.Br,breakAt:ve.some(f)};if(f.isVisible()){if(e(c,f)){var d=(o=c,Kn((i=f).getNode(t===sc.Forwards))?Sy.Br:!1===Qs(o,i)?Sy.Block:Sy.Wrap);return{positions:Vy(t,l),breakType:d,breakAt:ve.some(f)}}l.push(f),c=f}else c=f}return{positions:Vy(t,l),breakType:Sy.Eol,breakAt:ve.none()}}function $y(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===sc.Backwards?t.concat(e):[e].concat(t)}).getOr([])}function Wy(e,i){return L(e,function(e,o){return e.fold(function(){return ve.some(o)},function(r){return dn(Q(r.getClientRects()),Q(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},ve.none())}function Ky(t,e){return Q(e.getClientRects()).bind(function(e){return Wy(t,e.left)})}function Xy(n){function e(e){return A(e,function(e){var t=Ru(e);return t.node=n,t})}if(Hn(n))return e(n.getClientRects());if(Vn(n)){var t=n.ownerDocument.createRange();return t.setStart(n,0),t.setEnd(n,n.data.length),e(t.getClientRects())}}function Yy(e){return H(e,Xy)}R(xy,!1),R(xy,!0),(Ny=Sy={})[Ny.Br=0]="Br",Ny[Ny.Block=1]="Block",Ny[Ny.Wrap=2]="Wrap",Ny[Ny.Eol=3]="Eol";var Gy,Jy,Qy=R(qy,cs.isAbove,-1),Zy=R(qy,cs.isBelow,1),e0=R($y,-1,Qy),t0=R($y,1,Zy);function n0(o,i,a,e,u,t){function n(e){var t=Yy([e]);-1===o&&(t=t.reverse());for(var n=0;n<t.length;n++){var r=t[n];if(!a(r,l)){if(0<c.length&&i(r,pe(c))&&s++,r.line=s,u(r))return!0;c.push(r)}}}var s=0,c=[],l=pe(t.getClientRects());if(!l)return c;var r=t.getNode();return n(r),function(e,t,n,r){for(;r=Gs(r,e,qr,t);)if(n(r))return}(o,e,n,r),c}function r0(t){return function(e){return e.line>t}}function o0(t){return function(e){return e.line===t}}function i0(e,t){return Math.abs(e.left-t)}function a0(e,t){return Math.abs(e.right-t)}function u0(e,t){return e>=t.left&&e<=t.right}function s0(e,t){return e>=t.top&&e<=t.bottom}function c0(e,o,i){return void 0===i&&(i=w),me(e,function(e,t){if(u0(o,t))return i(t)?t:e;if(u0(o,e))return i(e)?e:t;var n=Math.min(i0(e,o),a0(e,o)),r=Math.min(i0(t,o),a0(t,o));return r===n&&se(t,"node")&&ZC(t.node)||r<n?t:e})}function l0(e,t,n,r,o){var i=e1(r,e,qr,t,!o);do{if(!i||n(i))return}while(i=e1(i,e,qr,t))}function f0(e,t,n){function r(e){return!cn(e.node)&&!Qn(e.node)}var o,i,a,u=Yy(U(xe(e.getElementsByTagName("*")),Xs)),s=U(u,R(s0,n));if((a=c0(s,t,r))&&((a=c0(function(e,r,t){function n(t,e){var n=U(Yy([e]),function(e){return!t(e,r)});return o=o.concat(n),0===n.length}void 0===t&&(t=!0);var o=[];return o.push(r),l0(Gy.Up,e,R(n,Ou),r.node,t),l0(Gy.Down,e,R(n,Bu),r.node,t),o}(e,a,r(a)),t,r))&&Xs(a.node)))return{node:(o=a).node,before:i0(o,i=t)<a0(o,i)};return null}function d0(e,t){e.selection.setRng(t),nd(e,e.selection.getRng())}function m0(e,t,n){return ve.some(zb(e,t,n))}function g0(e,t,n,r,o,i){var a=t===sc.Forwards,u=Mc(e.getBody()),s=R(ac,a?u.next:u.prev),c=a?r:o;if(!n.collapsed){var l=Lu(n);if(i(l))return Mb(t,e,l,t===sc.Backwards,!1)}var f=oc(t,e.getBody(),n);if(c(f))return Fb(e,f.getNode(!a));var d=Cb(a,s(f)),m=jr(n);if(!d)return m?ve.some(n):ve.none();if(c(d))return Mb(t,e,d.getNode(!a),a,!1);var g=s(d);return g&&c(g)&&uc(d,g)?Mb(t,e,g.getNode(!a),a,!1):m?m0(e,d.toRange(),!1):ve.none()}function p0(t,e,n,r,o,i){var a=oc(e,t.getBody(),n),u=pe(a.getClientRects()),s=e===Gy.Down;if(!u)return ve.none();var c,l=U((s?QC:JC)(t.getBody(),r0(1),a),o0(1)),f=u.left,d=c0(l,f);if(d&&i(d.node)){var m=Math.abs(f-d.left),g=Math.abs(f-d.right);return Mb(e,t,d.node,m<g,!1)}if(c=r(a)?a.getNode():o(a)?a.getNode(!0):Lu(n)){var p=function(e,t,n,r){function o(e){return pe(e.getClientRects())}var i,a,u,s=Mc(t),c=[],l=0,f=1===e?(i=s.next,a=Bu,u=Ou,cs.after(r)):(i=s.prev,a=Ou,u=Bu,cs.before(r)),d=o(f);do{if(f.isVisible()){var m=o(f);if(!u(m,d)){0<c.length&&a(m,pe(c))&&l++;var g=Ru(m);if(g.position=f,g.line=l,n(g))return c;c.push(g)}}}while(f=i(f));return c}(e,t.getBody(),r0(1),c),h=c0(U(p,o0(1)),f);if(h)return m0(t,h.position.toRange(),!1);if(h=pe(U(p,o0(0))))return m0(t,h.position.toRange(),!1)}return 0===l.length?t1(t,s).filter(s?o:r).map(function(e){return zb(t,e.toRange(),!1)}):ve.none()}function h0(t,e,n){return t1(t,e).filter(n).exists(function(e){return t.selection.setRng(e.toRange()),!0})}function v0(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)}function b0(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")}function y0(t,e,n){return oy(e,n).map(function(e){return v0(t,e),n})}function C0(e,t,n){return!!Ms(e)&&(o=t,i=n,a=(r=e).getBody(),u=cs.fromRangeStart(r.selection.getRng()),xy(i,R(bb,r),a,u).bind(function(e){return y0(r,o,e)}).isSome());var r,o,i,a,u}function x0(e,t,n){return!!Ms(t)&&(r=e,i=(o=t).selection.getRng(),a=r?cs.fromRangeEnd(i):cs.fromRangeStart(i),!!y(o.selection.getSel().modify)&&(r&&Ur(a)?jy(!0,o.selection,a):!(r||!zr(a))&&jy(!1,o.selection,a)));var r,o,i,a}function w0(g){var p=au(null),h=R(bb,g);return g.on("NodeChange",function(e){var n,r,o,t,i,a,u,s,c,l,f,d,m;!Ms(g)||xt.browser.isIE()&&e.initial||(i=h,a=g.dom,u=e.parents,Y($(s=U(A(yu(Et.fromDom(a.getRoot()),'*[data-mce-selected="inline-boundary"]'),function(e){return e.dom}),i),c=U(u,i)),R(b0,!1)),Y($(c,s),R(b0,!0)),f=p,(l=g).selection.isCollapsed()&&!0!==l.composing&&f.get()&&(d=cs.fromRangeStart(l.selection.getRng()),cs.isTextPosition(d)&&!1===(Ur(m=d)||zr(m))&&(v0(l,qs(f.get(),d)),f.set(null))),n=h,r=g,o=p,t=e.parents,r.selection.isCollapsed()&&Y(U(t,n),function(e){var t=cs.fromRangeStart(r.selection.getRng());gy(n,r.getBody(),t).bind(function(e){return y0(r,o,e)})}))}),p}function S0(n,t,r){if(Ms(n)){var e=t1(n,t).getOrThunk(function(){var e=n.selection.getRng();return t?cs.fromRangeEnd(e):cs.fromRangeStart(e)});return gy(R(bb,n),n.getBody(),e).exists(function(e){var t=hy(e);return oy(r,t).exists(function(e){return v0(n,e),!0})})}return!1}function N0(t,n){return function(e){return oy(n,e).exists(function(e){return v0(t,e),!0})}}function E0(r,o,i,a){var u=r.getBody(),s=R(bb,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),gy(s,u,cs.fromRangeStart(r.selection.getRng())).map(vy).map(N0(r,o))}),r.nodeChanged()}function k0(e,t,n){if(e.selection.isCollapsed()&&Ms(e)){var r=cs.fromRangeStart(e.selection.getRng());return o=t,a=n,u=r,s=(i=e).getBody(),c=Js(u.container(),s)||s,l=R(bb,i),(f=gy(l,c,u)).bind(function(e){return a?e.fold(J(ve.some(vy(e))),ve.none,J(ve.some(hy(e))),ve.none):e.fold(ve.none,J(ve.some(hy(e))),ve.none,J(ve.some(vy(e))))}).map(N0(i,o)).getOrThunk(function(){var t=Hc(a,c,u),e=t.bind(function(e){return gy(l,c,e)});return dn(f,e,function(){return yb(l,c,u).exists(function(e){return!!dn(rf(o=e),of(o),function(e,t){var n=Cb(!0,e),r=Cb(!1,t);return tf(o,n).forall(function(e){return e.isEqual(r)})}).getOr(!0)&&(Qm(i,a,Et.fromDom(e)),!0);var o})}).orThunk(function(){return e.bind(function(e){return t.map(function(e){return a?E0(i,o,u,e):E0(i,o,e,u),!0})})}).getOr(!1)})}var i,o,a,u,s,c,l,f;return!1}function _0(e){return 1===zt(e)}function A0(g,p){var t,e=Et.fromDom(g.getBody()),n=Et.fromDom(g.selection.getStart()),h=U(z(t=ym(n,e),go).fold(J(t),function(e){return t.slice(0,e)}),_0);return Z(h).exists(function(e){var t,n,r,o,i,a,u,s,c,l=cs.fromRangeStart(g.selection.getRng()),f=p,d=l,m=e.dom;return!(!dn(rf(m),of(m),function(e,t){var n=Cb(!0,e),r=Cb(!1,t),o=Cb(!1,d);return f?tf(m,o).exists(function(e){return e.isEqual(r)&&d.isEqual(n)}):nf(m,o).exists(function(e){return e.isEqual(n)&&d.isEqual(r)})}).getOr(!0)||Vc((t=e).dom)&&Mg(t.dom)||(n=p,o=e,0===(c=A(U(h,R(Wg,r=g)),function(e){return e.dom})).length?Qm(r,n,o):(a=o.dom,s=Vg(c,(u=Ug(!1)).dom),qt(Et.fromDom(a),u),In(Et.fromDom(a)),i=cs(s,0),r.selection.setRng(i.toRange())),0))})}function R0(e,t){return!!e.selection.isCollapsed()&&A0(e,t)}function D0(e,t,n){return e._selectionOverrides.hideFakeCaret(),Qm(e,t,Et.fromDom(n)),!0}function T0(e,t){return e.selection.isCollapsed()?(i=e,u=(a=t)?Zg:ep,s=a?sc.Forwards:sc.Backwards,c=oc(s,i.getBody(),i.selection.getRng()),u(c)?D0(i,a,c.getNode(!a)):ve.from(Cb(a,c)).filter(function(e){return u(e)&&uc(c,e)}).exists(function(e){return D0(i,a,e.getNode(!a))})):(r=t,o=(n=e).selection.getNode(),!!Qn(o)&&D0(n,r,o));var n,r,o,i,a,u,s,c}function O0(e){var t=parseInt(e,10);return isNaN(t)?0:t}function B0(e,t){return(e||"table"===kt(t)?"margin":"padding")+("rtl"===wn(t,"direction")?"-right":"-left")}function P0(e){var n,t=o1(e);return!e.mode.isReadOnly()&&(1<t.length||(n=e,j(t,function(e){var t=Sn(e,B0(Os(n),e)).map(O0).getOr(0);return"false"!==n.dom.getContentEditable(e.dom)&&0<t})))}function L0(e){return ho(e)||vo(e)}function I0(e,s){var c=e.dom,t=e.selection,n=e.formatter,r=e.getParam("indentation","40px","string"),l=/[a-z%]+$/i.exec(r)[0],f=parseInt(r,10),d=Os(e),o=ks(e);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||""!==o||c.getParent(t.getNode(),c.isBlock)||n.apply("div"),Y(o1(e),function(e){var t,n=c,r=s,o=f,i=l,a=e.dom,u=B0(d,Et.fromDom(a));"outdent"===r?(t=Math.max(0,O0(a.style[u])-o),n.setStyle(a,u,t?t+i:"")):(t=O0(a.style[u])+o+i,n.setStyle(a,u,t))})}function M0(e,t){if(e.selection.isCollapsed()&&P0(e)){var n=e.dom,r=e.selection.getRng(),o=cs.fromRangeStart(r),i=n.getParent(r.startContainer,n.isBlock);if(null!==i&&ip(Et.fromDom(i),o))return I0(e,"outdent"),!0}return!1}function F0(e,t){e.getDoc().execCommand(t,!1,null)}function U0(e){return void 0===e.touches||1!==e.touches.length?ve.none():ve.some(e.touches[0])}function z0(e,t){return Ee(e,t.nodeName)}function H0(e){var t,n,r,o=e.dom,i=e.selection,a=e.schema,u=a.getBlockElements(),s=i.getStart(),c=e.getBody(),l=ks(e);if(s&&Hn(s)&&l){var f=c.nodeName.toLowerCase();if(a.isValidChild(f,l.toLowerCase())&&(d=u,m=c,g=s,!F(bm(Et.fromDom(g),Et.fromDom(m)),function(e){return z0(d,e.dom)}))){for(var d,m,g,p,h,v=i.getRng(),b=v.startContainer,y=v.startOffset,C=v.endContainer,x=v.endOffset,w=Cd(e),s=c.firstChild;s;)p=u,Vn(h=s)||Hn(h)&&!z0(p,h)&&!Qc(h)?function(e,t){if(Vn(t)){if(0===t.nodeValue.length)return 1;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||z0(e,t.nextSibling)))return 1}}(u,s)?(s=(n=s).nextSibling,o.remove(n)):(t||(t=o.create(l,_s(e)),s.parentNode.insertBefore(t,s),r=!0),s=(n=s).nextSibling,t.appendChild(n)):(t=null,s=s.nextSibling);r&&w&&(v.setStart(b,y),v.setEnd(C,x),i.setRng(v),e.nodeChanged())}}}function j0(e,t){t.hasAttribute("data-mce-caret")&&(Hr(t),e.selection.setRng(e.selection.getRng()),e.selection.scrollIntoView(t))}function V0(e,t){var n=br(Et.fromDom(e.getBody()),"*[data-mce-caret]").map(function(e){return e.dom}).getOrNull();if(n)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void j0(e,n)):void(Fr(n)&&(j0(e,n),e.undoManager.add()))}function q0(e,t,n){var r,o,i,a=Mc(e.getBody()),u=R(ac,1===t?a.next:a.prev);!n.collapsed||""===ks(e)||(r=e.dom.getParent(n.startContainer,"PRE"))&&(u(cs.fromRangeStart(n))||(i=e.dom.create(ks(e)),(!xt.ie||11<=xt.ie)&&(i.innerHTML='<br data-mce-bogus="1">'),o=i,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse()))}function $0(t,e){return n=t,r=e?sc.Forwards:sc.Backwards,o=n.selection.getRng(),g0(n,r,o,rp,op,i1).orThunk(function(){return q0(n,r,o),ve.none()}).exists(function(e){return d0(t,e),!0});var n,r,o}function W0(t,e){return r=e?1:-1,o=(n=t).selection.getRng(),p0(n,r,o,function(e){return rp(e)||tp(e)},function(e){return op(e)||np(e)},i1).orThunk(function(){return q0(n,r,o),ve.none()}).exists(function(e){return d0(t,e),!0});var n,r,o}function K0(e,t){return h0(e,t,t?op:rp)}function X0(e){return T(["figcaption"],kt(e))}function Y0(e){var t=document.createRange();return t.setStartBefore(e.dom),t.setEndBefore(e.dom),t}function G0(e,t,n){(n?Ln:Wt)(e,t)}function J0(h,v){var b=Et.fromDom(h.getBody()),y=cs.fromRangeStart(h.selection.getRng()),C=ks(h),x=_s(h),e=y,t=R(je,b);return hr(Et.fromDom(e.container()),go,t).filter(X0).exists(function(){if(d=b,m=y,v?(p=d.dom,Zy(p,m).breakAt.isNone()):(g=d.dom,Qy(g,m).breakAt.isNone())){var e=(t=b,r=x,o=v,""===(n=C)?(l=o,G0(t,f=Et.fromTag("br"),l),Y0(f)):(i=t,a=o,u=r,s=Et.fromTag(n),c=Et.fromTag("br"),hn(s,u),Ln(s,c),G0(i,s,a),Y0(c)));return h.selection.setRng(e),!0}var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p;return!1})}function Q0(e,t){return!!e.selection.isCollapsed()&&J0(e,t)}function Z0(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){return e.apply(null,t)}}function eC(e,t){return M((n=t,H(A(e,function(e){return _e({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:te},e)}),function(e){return n.keyCode===e.keyCode&&n.shiftKey===e.shiftKey&&n.altKey===e.altKey&&n.ctrlKey===e.ctrlKey&&n.metaKey===e.metaKey?[e]:[]})),function(e){return e.action()});var n}function tC(t,e){var n=e?sc.Forwards:sc.Backwards,r=t.selection.getRng();return g0(t,n,r,Zg,ep,Qn).exists(function(e){return d0(t,e),!0})}function nC(t,e){var n=e?1:-1,r=t.selection.getRng();return p0(t,n,r,Zg,ep,Qn).exists(function(e){return d0(t,e),!0})}function rC(e,t){return h0(e,t,t?ep:Zg)}function oC(e,t,n,r,o){var i,a=yu(Et.fromDom(n),"td,th,caption").map(function(e){return e.dom}),u=U((i=e,H(a,function(e){var t,n={left:(t=Ru(e.getBoundingClientRect())).left- -1,top:t.top- -1,right:t.right+-2,bottom:t.bottom+-2,width:t.width+-1,height:t.height+-1};return[{x:n.left,y:i(n),cell:e},{x:n.right,y:i(n),cell:e}]})),function(e){return t(e,o)}),s=r,c=o;return L(u,function(e,r){return e.fold(function(){return ve.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-s)+Math.abs(e.y-c)),n=Math.sqrt(Math.abs(r.x-s)+Math.abs(r.y-c));return ve.some(n<t?r:e)})},ve.none()).map(function(e){return e.cell})}function iC(e,t,n){var r,o,i=e(t,n);return i.breakType===Sy.Wrap&&0===i.positions.length||!Kn(n.getNode())&&i.breakType===Sy.Br&&1===i.positions.length?(r=e,o=t,!i.breakAt.exists(function(e){return r(o,e).breakAt.isSome()})):i.breakAt.isNone()}function aC(t,e,n,r){var o,i,a,u=t.selection.getRng(),s=e?1:-1;return!(!Ks()||(o=e,i=n,a=cs.fromRangeStart(u),!jc(!o,i).exists(function(e){return e.isEqual(a)}))||(Mb(s,t,n,!e,!1).each(function(e){d0(t,e)}),0))}function uC(u,s,c){var e,t,n=(e=!!s,t=c.getNode(e),Hn(t)&&"TABLE"===t.nodeName?ve.some(t):ve.none()),r=!1===s;n.fold(function(){return d0(u,c.toRange())},function(a){return jc(r,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return d0(u,c.toRange())},function(e){var n,r,o=s,i=a,t=c;(r=ks(n=u))?n.undoManager.transact(function(){var e=Et.fromTag(r);hn(e,_s(n)),Ln(e,Et.fromTag("br")),(o?$t:qt)(Et.fromDom(i),e);var t=n.dom.createRng();t.setStart(e.dom,0),t.setEnd(e.dom,0),d0(n,t)}):d0(n,t.toRange())})})}function sC(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.selection.getRng(),p=cs.fromRangeStart(g),h=e.getBody();if(t||!s1(r,p))return!(!t||!c1(r,p))&&(o=h,d=i=n,uC(e,t,v=Z((m=a=p).getClientRects()).bind(function(e){return u1(d,e.left,e.top)}).bind(function(e){return Ky(rf(t=e).map(function(e){return[e].concat(Zy(t,e).positions)}).getOr([]),m);var t}).orThunk(function(){return Q(a.getClientRects()).bind(function(e){return Wy(t0(o,cs.after(i)),e.left)})}).getOr(cs.after(i))),!0);var v=(u=h,l=s=n,Q((f=c=p).getClientRects()).bind(function(e){return a1(l,e.left,e.top)}).bind(function(e){return Ky(of(t=e).map(function(e){return Qy(t,e).positions.concat(e)}).getOr([]),f);var t}).orThunk(function(){return Q(c.getClientRects()).bind(function(e){return Wy(e0(u,cs.before(s)),e.left)})}).getOr(cs.before(s)));return uC(e,t,v),!0}function cC(n,r,o){return ve.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return ve.from(n.dom.getParent(t,"table")).map(function(e){return o(n,r,e,t)})}).getOr(!1)}function lC(e,t){return cC(e,t,aC)}function fC(e,t){return cC(e,t,sC)}function dC(e,t){var n,r,o=t,i=e.dom,a=e.schema.getMoveCaretBeforeOnEnterElements();if(t){!/^(LI|DT|DD)$/.test(t.nodeName)||(r=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild))&&/^(UL|OL|DL)$/.test(r.nodeName)&&t.insertBefore(i.doc.createTextNode(wo),t.firstChild);var u=i.createRng();if(t.normalize(),t.hasChildNodes()){for(var s=new Dr(t,t);n=s.current();){if(Vn(n)){u.setStart(n,0),u.setEnd(n,0);break}if(a[n.nodeName.toLowerCase()]){u.setStartBefore(n),u.setEndBefore(n);break}o=n,n=s.next()}n||(u.setStart(o,0),u.setEnd(o,0))}else Kn(t)?t.nextSibling&&i.isBlock(t.nextSibling)?(u.setStartBefore(t),u.setEndBefore(t)):(u.setStartAfter(t),u.setEndAfter(t)):(u.setStart(t,0),u.setEnd(t,0));e.selection.setRng(u),nd(e,u)}}function mC(e){return ve.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))}function gC(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t}function pC(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)}function hC(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e}function vC(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Hn(r);)r=r[n?"nextSibling":"previousSibling"];return r===t}function bC(e){e.innerHTML='<br data-mce-bogus="1">'}function yC(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t}function CC(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)}function xC(e,t,n){return!1===Vn(t)?n:e?1===n&&t.data.charAt(n-1)===So?0:n:n===t.data.length-1&&t.data.charAt(n)===So?t.data.length:n}function wC(e,t){for(var n,r=e.getRoot(),o=t;o!==r&&"false"!==e.getContentEditable(o);)"true"===e.getContentEditable(o)&&(n=o),o=o.parentNode;return o!==r?n:r}function SC(e,t){var n=ks(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&function(e,o,t){var i=e.dom;ve.from(t.style).map(i.parseStyle).each(function(e){var t=Nn(Et.fromDom(o)),n=_e(_e({},t),e);i.setStyles(o,n)}),dn(ve.from(t.class).map(function(e){return e.split(/\s+/)}),ve.from(o.className).map(function(e){return U(e.split(/\s+/),function(e){return""!==e})}),function(t,e){var n=U(e,function(e){return!T(t,e)}),r=Ae(Ae([],t,!0),n,!0);i.setAttrib(o,"class",r.join(" "))});var n=["style","class"],r=ae(t,function(e,t){return!T(n,t)});i.setAttribs(o,r)}(e,t,_s(e))}function NC(a,e){function t(e){var t,n=m,r=l.getTextInlineElements(),o=e||"TABLE"===C||"HR"===C?c.create(e||p):b.cloneNode(!1),i=o;if(!1===a.getParam("keep_styles",!0))c.setAttrib(o,"style",null),c.setAttrib(o,"class",null);else for(;r[n.nodeName]&&(Vc(n)||Qc(n)||(t=n.cloneNode(!1),c.setAttrib(t,"id",""),o.hasChildNodes()?t.appendChild(o.firstChild):i=t,o.appendChild(t))),(n=n.parentNode)&&n!==F;);return SC(a,o),bC(i),o}function n(e){var t,n,r=xC(e,m,g);if(!Vn(m)||!(e?0<r:r<m.nodeValue.length)){if(m.parentNode===b&&s&&!e)return 1;if(e&&Hn(m)&&m===b.firstChild)return 1;if(yC(m,"TABLE")||yC(m,"HR"))return s&&!e||!s&&e;var o=new Dr(m,b);for(Vn(m)&&(e&&0===r?o.prev():e||r!==m.nodeValue.length||o.next());t=o.current();){if(Hn(t)){if(!t.getAttribute("data-mce-bogus")&&(n=t.nodeName.toLowerCase(),f[n]&&"br"!==n))return}else if(Vn(t)&&!$r(t.nodeValue))return;e?o.prev():o.next()}return 1}}function r(){u=/^(H[1-6]|PRE|FIGURE)$/.test(C)&&"HGROUP"!==x?t(p):t(),a.getParam("end_container_on_empty_block",!1)&&CC(c,y)&&c.isEmpty(b)?u=c.split(y,b):c.insertAfter(u,b),dC(a,u)}var o,u,i,s,c=a.dom,l=a.schema,f=l.getNonEmptyElements(),d=a.selection.getRng();Of(c,d).each(function(e){d.setStart(e.startContainer,e.startOffset),d.setEnd(e.endContainer,e.endOffset)});var m=d.startContainer,g=d.startOffset,p=ks(a),h=!(!e||!e.shiftKey),v=!(!e||!e.ctrlKey);Hn(m)&&m.hasChildNodes()&&(s=g>m.childNodes.length-1,m=m.childNodes[Math.min(g,m.childNodes.length-1)]||m,g=s&&Vn(m)?m.nodeValue.length:0);var b,y,C,x,w,S,p,N,E,k,_,A,R,D,T,O,B,P,L,I,M,F=wC(c,m);F&&((p&&!h||!p&&h)&&(m=function(e,t,n,r){var o,i,a,u,s,c,l=p||"P",f=e.dom,d=wC(f,n),m=f.getParent(n,f.isBlock);if(!m||!CC(f,m)){if(s=((m=m||d)===e.getBody()||(c=m)&&/^(TD|TH|CAPTION)$/.test(c.nodeName)?m:m.parentNode).nodeName.toLowerCase(),!m.hasChildNodes())return SC(e,o=f.create(l)),m.appendChild(o),t.setStart(o,0),t.setEnd(o,0),o;for(a=n;a.parentNode!==m;)a=a.parentNode;for(;a&&!f.isBlock(a);)a=(i=a).previousSibling;if(i&&e.schema.isValidChild(s,l.toLowerCase())){for(SC(e,o=f.create(l)),i.parentNode.insertBefore(o,i),a=i;a&&!f.isBlock(a);)u=a.nextSibling,o.appendChild(a),a=u;t.setStart(n,r),t.setEnd(n,r)}}return n}(a,d,m,g)),y=(b=c.getParent(m,c.isBlock))?c.getParent(b.parentNode,c.isBlock):null,C=b?b.nodeName.toUpperCase():"","LI"!==(x=y?y.nodeName.toUpperCase():"")||v||(y=(b=y).parentNode,C=x),/^(LI|DT|DD)$/.test(C)&&c.isEmpty(b)?(E=t,k=y,_=b,A=p,I=(N=a).dom,M=N.selection.getRng(),k!==N.getBody()&&(D=(A=pC(R=k)&&pC(R.parentNode)?"LI":A)?E(A):I.create("BR"),vC(k,_,!0)&&vC(k,_,!1)?gC(k,"LI")?(T=hC(k),I.insertAfter(D,T),(null===(L=(P=k).parentNode)||void 0===L?void 0:L.firstChild)===P?I.remove(T):I.remove(k)):I.replace(D,k):(vC(k,_,!0)?gC(k,"LI")?(I.insertAfter(D,hC(k)),D.appendChild(I.doc.createTextNode(" ")),D.appendChild(k)):k.parentNode.insertBefore(D,k):vC(k,_,!1)?I.insertAfter(D,hC(k)):(k=hC(k),(O=M.cloneRange()).setStartAfter(_),O.setEndAfter(k),B=O.extractContents(),"LI"===A&&(B.firstChild&&"LI"===B.firstChild.nodeName)?(D=B.firstChild,I.insertAfter(B,k)):(I.insertAfter(B,k),I.insertAfter(D,k))),I.remove(_)),dC(N,D))):p&&b===a.getBody()||(p=p||"P",Lr(b)?(u=Hr(b),c.isEmpty(b)&&bC(b),SC(a,u),dC(a,u)):n()?r():n(!0)?(u=b.parentNode.insertBefore(t(),b),dC(a,yC(b,"HR")?u:b)):((S=(w=d).cloneRange()).setStart(w.startContainer,xC(!0,w.startContainer,w.startOffset)),S.setEnd(w.endContainer,xC(!1,w.endContainer,w.endOffset)),(o=S.cloneRange()).setEndAfter(b),i=o.extractContents(),Y(qu(Et.fromDom(i),An),function(e){var t=e.dom;t.nodeValue=Eo(t.nodeValue)}),function(e){for(;Vn(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(i),u=i.firstChild,c.insertAfter(i,b),function(e,t){var n,r,o=u,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Hn(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(n=i.length;n--;)!(o=i[n]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(r=o)&&"A"===r.nodeName&&e.isEmpty(r)&&e.remove(o)}}(c,f),function(e,t){t.normalize();var n=t.lastChild;n&&!/^(left|right)$/gi.test(e.getStyle(n,"float",!0))||e.add(t,"br")}(c,b),c.isEmpty(b)&&bC(b),u.normalize(),c.isEmpty(u)?(c.remove(u),r()):(SC(a,u),dC(a,u))),c.setAttrib(u,"id",""),a.fire("NewBlock",{newBlock:u})))}function EC(e,t,n){var r=e.dom.createRng();n?(r.setStartBefore(t),r.setEndBefore(t)):(r.setStartAfter(t),r.setEndAfter(t)),e.selection.setRng(r),nd(e,r)}function kC(e,t){var n=Et.fromTag("br");qt(Et.fromDom(t),n),e.undoManager.add()}function _C(e,t){l1(e.getBody(),t)||$t(Et.fromDom(t),Et.fromTag("br"));var n=Et.fromTag("br");$t(Et.fromDom(t),n),EC(e,n.dom,!1),e.undoManager.add()}function AC(e){return e&&"A"===e.nodeName&&"href"in e}function RC(e){return e.fold(D,AC,AC,D)}function DC(e,t){t.fold(te,R(kC,e),R(_C,e),te)}function TC(e,t){var n,r,o,i=(r=R(bb,n=e),o=cs.fromRangeStart(n.selection.getRng()),gy(r,n.getBody(),o).filter(RC));i.isSome()?i.each(R(DC,e)):function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();Of(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u,s=a.startOffset,c=a.startContainer;1===c.nodeType&&c.hasChildNodes()&&(u=s>c.childNodes.length-1,c=c.childNodes[Math.min(s,c.childNodes.length-1)]||c,s=u&&3===c.nodeType?c.nodeValue.length:0);var l=i.getParent(c,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=!(!t||!t.ctrlKey);"LI"!==d||m||(l=f),c&&3===c.nodeType&&s>=c.nodeValue.length&&!function(e){for(var t,n=new Dr(c,l),r=e.getNonEmptyElements();t=n.next();)if(r[t.nodeName.toLowerCase()]||0<t.length)return 1}(e.schema)&&(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0),n=i.create("br"),fs(i,a,n),EC(e,n,r),e.undoManager.add()}(e,t)}function OC(e,t){return mC(e).filter(function(e){return 0<t.length&&ze(Et.fromDom(e),t)}).isSome()}function BC(e,t){return OC(e,e.getParam("no_newline_selector",""))}function PC(n){return function(e,t){return""===ks(e)===n}}function LC(n){return function(e,t){return mC(e).filter(function(e){return vo(Et.fromDom(e))}).isSome()===n}}function IC(n,r){return function(e,t){return mC(e).fold(J(""),function(e){return e.nodeName.toUpperCase()})===n.toUpperCase()===r}}function MC(e){return IC("pre",e)}function FC(n){return function(e,t){return e.getParam("br_in_pre",!0)===n}}function UC(e,t){return OC(e,e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption"))}function zC(e,t){return t}function HC(e){var t=ks(e),n=function(e,t){for(var n,r=e.getRoot(),o=t;o!==r&&"false"!==e.getContentEditable(o);)"true"===e.getContentEditable(o)&&(n=o),o=o.parentNode;return o!==r?n:r}(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")}function jC(e,t){return function(n,r){return L(e,function(e,t){return e&&t(n,r)},!0)?ve.some(t):ve.none()}}function VC(e,t){var n,r;n=e,r=t,iy([jC([BC],f1.none()),jC([IC("summary",!0)],f1.br()),jC([MC(!0),FC(!1),zC],f1.br()),jC([MC(!0),FC(!1)],f1.block()),jC([MC(!0),FC(!0),zC],f1.block()),jC([MC(!0),FC(!0)],f1.br()),jC([LC(!0),zC],f1.br()),jC([LC(!0)],f1.block()),jC([PC(!0),zC,HC],f1.block()),jC([PC(!0)],f1.br()),jC([UC],f1.br()),jC([PC(!1),zC],f1.br()),jC([HC],f1.block())],[n,!(!r||!r.shiftKey)]).getOr(f1.none()).fold(function(){TC(e,t)},function(){NC(e,t)},te)}function qC(e){return e.stopImmediatePropagation()}function $C(e){return e.keyCode===If.PAGE_UP||e.keyCode===If.PAGE_DOWN}function WC(e,t,n){n&&!e.get()?t.on("NodeChange",qC,!0):!n&&e.get()&&t.off("NodeChange",qC),e.set(n)}function KC(n,r){var e=r.container(),t=r.offset();return Vn(e)?(e.insertData(t,n),ve.some(cs(e,t+n.length))):ic(r).map(function(e){var t=Et.fromText(n);return(r.isAtEnd()?$t:qt)(e,t),cs(t.dom,n.length)})}function XC(i,a){return function(e){return r=i,(!Om(o=e)&&(n=o,nf((t=r).dom,n).isNone()||tf(t.dom,n).isNone()||ip(t,n)||ap(t,n)||_m(t,n)||km(t,n)||Dm(r,o)||Tm(r,o))?g1:p1)(a);var t,n,r,o}}function YC(e){var t,n,r=cs.fromRangeStart(e.selection.getRng()),o=Et.fromDom(e.getBody());if(e.selection.isCollapsed()){var i=R(bb,e),a=cs.fromRangeStart(e.selection.getRng());return gy(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return nf(n.dom,cs.before(e))},function(e){return rf(e)},function(e){return of(e)},function(e){return tf(n.dom,cs.after(e))})})).bind(XC(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1}function GC(e){var o,i,a,u,s,t,n,r,c,l,f,d,m,g,p=w0(e);return e.on("keyup compositionstart",R(V0,e)),g=p,(m=e).on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=m,n=g,r=e,o=dt().os,eC([{keyCode:If.RIGHT,action:Z0($0,t,!0)},{keyCode:If.LEFT,action:Z0($0,t,!1)},{keyCode:If.UP,action:Z0(W0,t,!1)},{keyCode:If.DOWN,action:Z0(W0,t,!0)},{keyCode:If.RIGHT,action:Z0(lC,t,!0)},{keyCode:If.LEFT,action:Z0(lC,t,!1)},{keyCode:If.UP,action:Z0(fC,t,!1)},{keyCode:If.DOWN,action:Z0(fC,t,!0)},{keyCode:If.RIGHT,action:Z0(tC,t,!0)},{keyCode:If.LEFT,action:Z0(tC,t,!1)},{keyCode:If.UP,action:Z0(nC,t,!1)},{keyCode:If.DOWN,action:Z0(nC,t,!0)},{keyCode:If.RIGHT,action:Z0(C0,t,n,!0)},{keyCode:If.LEFT,action:Z0(C0,t,n,!1)},{keyCode:If.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:Z0(n1,t,n)},{keyCode:If.LEFT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:Z0(r1,t,n)},{keyCode:If.UP,action:Z0(Q0,t,!1)},{keyCode:If.DOWN,action:Z0(Q0,t,!0)}],r).each(function(e){r.preventDefault()}))}),d=p,(f=e).on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(n=d,r=e,eC([{keyCode:If.BACKSPACE,action:Z0(M0,t=f,!1)},{keyCode:If.BACKSPACE,action:Z0(Gb,t,!1)},{keyCode:If.DELETE,action:Z0(Gb,t,!0)},{keyCode:If.BACKSPACE,action:Z0(qb,t,!1)},{keyCode:If.DELETE,action:Z0(qb,t,!0)},{keyCode:If.BACKSPACE,action:Z0(k0,t,n,!1)},{keyCode:If.DELETE,action:Z0(k0,t,n,!0)},{keyCode:If.BACKSPACE,action:Z0(yg,t,!1)},{keyCode:If.DELETE,action:Z0(yg,t,!0)},{keyCode:If.BACKSPACE,action:Z0(Jb,t,!1)},{keyCode:If.DELETE,action:Z0(Jb,t,!0)},{keyCode:If.BACKSPACE,action:Z0(T0,t,!1)},{keyCode:If.DELETE,action:Z0(T0,t,!0)},{keyCode:If.BACKSPACE,action:Z0(Ib,t,!1)},{keyCode:If.DELETE,action:Z0(Ib,t,!0)},{keyCode:If.BACKSPACE,action:Z0(Bb,t,!1)},{keyCode:If.DELETE,action:Z0(Bb,t,!0)},{keyCode:If.BACKSPACE,action:Z0(R0,t,!1)},{keyCode:If.DELETE,action:Z0(R0,t,!0)}],r).each(function(e){r.preventDefault()}))}),f.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(n=e,eC([{keyCode:If.BACKSPACE,action:Z0(Yb,t=f)},{keyCode:If.DELETE,action:Z0(Yb,t)}],n))}),(l=e).on("keydown",function(e){var t,n,r;e.keyCode===If.ENTER&&(t=l,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),VC(t,n)})))}),(c=e).on("keydown",function(e){var t;!1===e.isDefaultPrevented()&&(t=e,eC([{keyCode:If.SPACEBAR,action:Z0(YC,c)}],t).each(function(e){t.preventDefault()}))}),n=t=e,r=mu(function(){n.composing||Um(n)},0),d1.isIE()&&(n.on("keypress",function(e){r.throttle()}),n.on("remove",function(e){r.cancel()})),t.on("input",function(e){!1===e.isComposing&&Um(t)}),s=p,(u=e).on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(n=s,r=e,eC([{keyCode:If.END,action:Z0(K0,t=u,!0)},{keyCode:If.HOME,action:Z0(K0,t,!1)},{keyCode:If.END,action:Z0(rC,t,!0)},{keyCode:If.HOME,action:Z0(rC,t,!1)},{keyCode:If.END,action:Z0(S0,t,!0,n)},{keyCode:If.HOME,action:Z0(S0,t,!1,n)}],r).each(function(e){r.preventDefault()}))}),o=e,i=p,m1.os.isOSX()||(a=au(!1),o.on("keydown",function(e){$C(e)&&WC(a,o,!0)}),o.on("keyup",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(r=e,eC([{keyCode:If.PAGE_UP,action:Z0(S0,t=o,!1,n=i)},{keyCode:If.PAGE_DOWN,action:Z0(S0,t,!0,n)}],r)),$C(e)&&a.get()&&(WC(a,o,!1),o.nodeChanged())})),p}(Jy=Gy=Gy||{})[Jy.Up=-1]="Up",Jy[Jy.Down=1]="Down";var JC=R(n0,Gy.Up,Ou,Bu),QC=R(n0,Gy.Down,Bu,Ou),ZC=Gn,e1=Gs,t1=function(e,t){var n=e.selection.getRng(),r=e.getBody();if(t){var o=cs.fromRangeEnd(n),i=Zy(r,o);return Z(i.positions)}return o=cs.fromRangeStart(n),Q((i=Qy(r,o)).positions)},n1=R(x0,!0),r1=R(x0,!1),o1=function(e){return U(A(e.selection.getSelectedBlocks(),Et.fromDom),function(e){return!L0(e)&&!Ot(e).exists(L0)&&hr(e,function(e){return Yn(e.dom)||Gn(e.dom)}).exists(function(e){return Yn(e.dom)})})},i1=Gn,a1=R(oC,function(e){return e.bottom},function(e,t){return e.y<t}),u1=R(oC,function(e){return e.top},function(e,t){return e.y>t}),s1=R(iC,Qy),c1=R(iC,Zy),l1=function(e,t){return n=cs.after(t),!!Kn(n.getNode())||tf(e,cs.after(t)).map(function(e){return Kn(e.getNode())}).getOr(!1);var n},f1=ir([{br:[]},{block:[]},{none:[]}]),d1=dt().browser,m1=dt(),g1=R(KC,wo),p1=R(KC," "),h1=(v1.prototype.nodeChanged=function(e){var t,n,r,o=this.editor.selection;this.editor.initialized&&o&&!this.editor.getParam("disable_nodechange")&&!this.editor.mode.isReadOnly()&&(r=this.editor.getBody(),(t=o.getStart(!0)||r).ownerDocument===this.editor.getDoc()&&this.editor.dom.isChildOf(t,r)||(t=r),n=[],this.editor.dom.getParent(t,function(e){return e===r||void n.push(e)}),(e=e||{}).element=t,e.parents=n,this.editor.fire("NodeChange",e))},v1.prototype.isSameElementPath=function(e){var t,n=this.editor.$(e).parentsUntil(this.editor.getBody()).add(e);if(n.length===this.lastPath.length){for(t=n.length;0<=t&&n[t]===this.lastPath[t];t--);if(-1===t)return this.lastPath=n,!0}return this.lastPath=n,!1},v1);function v1(r){var o;this.lastPath=[],this.editor=r;var t=this;"onselectionchange"in r.getDoc()||r.on("NodeChange click mouseup keyup focus",function(e){var t=r.selection.getRng(),n={startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset};"nodechange"!==e.type&&kf(n,o)||r.fire("SelectionChange"),o=n}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!e||!xt.range&&r.selection.isCollapsed()||Pl(r)&&!t.isSameElementPath(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("mouseup",function(e){!e.isDefaultPrevented()&&Pl(r)&&("IMG"===r.selection.getNode().nodeName?Ar.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())})}function b1(e){return Hn(e)&&po(Et.fromDom(e))}function y1(e){var t=e.getBoundingClientRect(),n=e.ownerDocument,r=n.documentElement,o=n.defaultView;return{top:t.top+o.pageYOffset-r.clientTop,left:t.left+o.pageXOffset-r.clientLeft}}function C1(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function x1(e,S){var N=Ar.throttle(function(e,t){S._selectionOverrides.hideFakeCaret(),S.selection.placeCaretAt(e,t)},0);return S.on("remove",N.stop),function(w){return e.on(function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x=Math.max(Math.abs(w.screenX-e.screenX),Math.abs(w.screenY-e.screenY));if(!e.dragging&&10<x){if(S.fire("dragstart",{target:e.element}).isDefaultPrevented())return;e.dragging=!0,S.focus()}e.dragging&&(d=e,t={pageX:(p=w,h=(g=S).inline?y1(g.getBody()):{left:0,top:0},C=(y=g).getBody(),v=y.inline?{left:C.scrollLeft,top:C.scrollTop}:{left:0,top:0},(m={pageX:(b=function(e,t){if(t.target.ownerDocument===e.getDoc())return{left:t.pageX,top:t.pageY};var n,r,o,i,a,u=y1(e.getContentAreaContainer()),s=(r=(n=e).getBody(),o=n.getDoc().documentElement,i={left:r.scrollLeft,top:r.scrollTop},a={left:r.scrollLeft||o.scrollLeft,top:r.scrollTop||o.scrollTop},n.inline?i:a);return{left:t.pageX-u.left+s.left,top:t.pageY-u.top+s.top}}(g,p)).left-h.left+v.left,pageY:b.top-h.top+v.top}).pageX-d.relX),pageY:m.pageY+5},l=e.ghost,f=S.getBody(),l.parentNode!==f&&f.appendChild(l),n=e.ghost,o=e.width,i=e.height,a=e.maxX,u=e.maxY,c=s=0,n.style.left=(r=t).pageX+"px",n.style.top=r.pageY+"px",u<r.pageY+i&&(c=r.pageY+i-u),n.style.width=o-(s=a<r.pageX+o?r.pageX+o-a:s)+"px",n.style.height=i-c+"px",N(w.clientX,w.clientY))})}}function w1(e){function t(e){var t,n,r,o,i,a;0===e.button&&(t=M(c.dom.getParents(e.target),function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}}(K1,X1)).getOr(null),i=c.getBody(),K1(a=t)&&a!==i&&(n=c.dom.getPos(t),r=c.getBody(),o=c.getDoc().documentElement,u.set({element:t,dragging:!1,screenX:e.screenX,screenY:e.screenY,maxX:(c.inline?r.scrollWidth:o.offsetWidth)-2,maxY:(c.inline?r.scrollHeight:o.offsetHeight)-2,relX:e.pageX-n.x,relY:e.pageY-n.y,width:t.offsetWidth,height:t.offsetHeight,ghost:function(e,t,n){var r=c.dom,o=e.cloneNode(!0);r.setStyles(o,{width:t,height:n}),r.setAttrib(o,"data-mce-selected",null);var i=r.create("div",{class:"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return r.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:t,height:n}),r.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(t,t.offsetWidth,t.offsetHeight)})))}function n(u){i.on(function(e){var t,n,r,o,i,a;e.dragging&&((o=3===(a=(r=s).selection.getSel().getRangeAt(0).startContainer).nodeType?a.parentNode:a)===(i=e.element)||r.dom.isChildOf(o,i)||K1(o)||((n=e.element.cloneNode(!0)).removeAttribute("data-mce-selected"),t=n,s.fire("drop",{clientX:u.clientX,clientY:u.clientY}).isDefaultPrevented()||s.undoManager.transact(function(){C1(e.element),s.insertContent(s.dom.getOuterHTML(t)),s._selectionOverrides.hideFakeCaret()})),s.fire("dragend"))}),Y1(i)}var r,o,i,s,u,c,a=du(),l=eu.DOM,f=document,d=x1(u=a,c=e),m=(r=i=a,function(){r.on(function(e){e.dragging&&o.fire("dragend")}),Y1(r)});(o=s=e).on("mousedown",t),e.on("mousemove",d),e.on("mouseup",n),l.bind(f,"mousemove",d),l.bind(f,"mouseup",m),e.on("remove",function(){l.unbind(f,"mousemove",d),l.unbind(f,"mouseup",m)}),e.on("keydown",function(e){e.keyCode===If.ESC&&m()})}function S1(e){var n,i;function a(e){var t;e.isDefaultPrevented()||(t=e.dataTransfer)&&(T(t.types,"Files")||0<t.files.length)&&(e.preventDefault(),"drop"===e.type&&Qv(i,"Dropped file type is not supported"))}function u(e){pd(i,e.target)&&a(e)}function t(){var t=eu.DOM,n=i.dom,r=document,o=i.inline?i.getBody():i.getDoc(),e=["drop","dragover"];Y(e,function(e){t.bind(r,e,u),n.bind(o,e,a)}),i.on("remove",function(){Y(e,function(e){t.unbind(r,e,u),n.unbind(o,e,a)})})}w1(e),(n=e).on("drop",function(e){var t=void 0!==e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;!K1(t)&&"false"!==n.dom.getContentEditableParent(t)||e.preventDefault()}),e.getParam("block_unsupported_drop",!0,"boolean")&&(i=e).on("init",function(){Ar.setEditorTimeout(i,t,0)})}function N1(e,t){return bf(e.getBody(),t)}function E1(l){function f(e){return e!==x&&(J1(e)||Qn(e))&&y.isChildOf(e,x)}function c(e){return rp(e)||op(e)||Zg(e)||ep(e)}function d(e){e&&b.setRng(e)}function m(e,t,n,r){return void 0===r&&(r=!0),l.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&b.scrollIntoView(t,-1===e),i.show(n,t))}function t(e){return Mr(e)||Ao(e)||Ro(e)}function g(e){return t(e.startContainer)||t(e.endContainer)}function p(e,t){if(!e)return null;if(e.collapsed){if(!g(e)){var n=t?1:-1,r=oc(n,x,e),o=r.getNode(!t);if(Xs(o))return m(n,o,!!t&&!r.isAtEnd(),!1);var i=r.getNode(t);if(Xs(i))return m(n,i,!t&&!r.isAtEnd(),!1)}return null}var a=e.startContainer,u=e.startOffset,s=e.endOffset;if(3===a.nodeType&&0===u&&J1(a.parentNode)&&(a=a.parentNode,u=y.nodeIndex(a),a=a.parentNode),1!==a.nodeType)return null;if(s===u+1&&a===e.endContainer){var c=a.childNodes[u];if(f(c))return function(e){var t=e.cloneNode(!0),n=l.fire("ObjectSelected",{target:e,targetClone:t});if(n.isDefaultPrevented())return null;var r=function(e,t,n){var r=l.$,o=br(Et.fromDom(l.getBody()),"#"+w).fold(function(){return r([])},function(e){return r([e.dom])});0===o.length&&(o=r('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",w)).appendTo(l.getBody());var i=y.createRng();t===n&&xt.ie?(o.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(t),i.setStartAfter(o[0].firstChild.firstChild),i.setEndAfter(t)):(o.empty().append(wo).append(t).append(wo),i.setStart(o[0].firstChild,1),i.setEnd(o[0].lastChild,0)),o.css({top:y.getPos(e,l.getBody()).y}),o[0].focus();var a=b.getSel();return a.removeAllRanges(),a.addRange(i),i}(e,n.targetClone,t),o=Et.fromDom(e);return Y(yu(Et.fromDom(l.getBody()),"*[data-mce-selected]"),function(e){je(o,e)||Cn(e,S)}),y.getAttrib(e,S)||e.setAttribute(S,"1"),v=e,N(),r}(c)}return null}function h(){v&&v.removeAttribute(S),br(Et.fromDom(l.getBody()),"#"+w).each(In),v=null}var v,n,e,o,b=l.selection,y=l.dom,C=y.isBlock,x=l.getBody(),i=Ws(l,x,C,function(){return Cd(l)}),w="sel-"+y.uniqueId(),S="data-mce-selected",r=b.getRng,N=function(){i.hide()};return xt.ceFalse&&!hh(l)&&(l.on("mouseup",function(e){var t=r();t.collapsed&&Nv(l,e.clientX,e.clientY)&&Ub(l,t,!1).each(d)}),l.on("click",function(e){var t=N1(l,e.target);t&&(J1(t)&&(e.preventDefault(),l.focus()),G1(t)&&y.isChildOf(t,b.getNode())&&h())}),l.on("blur NewBlock",h),l.on("ResizeWindow FullscreenStateChanged",i.reposition),l.on("tap",function(e){var t=e.target,n=N1(l,t);J1(n)?(e.preventDefault(),Fb(l,n).each(p)):f(t)&&Fb(l,t).each(p)},!0),l.on("mousedown",function(e){var t,n,r,o,i,a,u,s=e.target;s!==x&&"HTML"!==s.nodeName&&!y.isChildOf(s,x)||!1===Nv(l,e.clientX,e.clientY)||((t=N1(l,s))?J1(t)?(e.preventDefault(),Fb(l,t).each(p)):(h(),G1(t)&&e.shiftKey||yf(e.clientX,e.clientY,b.getRng())||(N(),b.placeCaretAt(e.clientX,e.clientY))):f(s)?Fb(l,s).each(p):!1===Xs(s)&&(h(),N(),(n=f0(x,e.clientX,e.clientY))&&(r=s,o=n.node,a=y.getParent(r,C),u=y.getParent(o,C),!K(a)&&(r!==u&&y.isChildOf(a,u)&&!1===J1(N1(l,a))||!y.isChildOf(u,a)&&(i=u,y.getParent(a,C)!==y.getParent(i,C))&&function(e){var t=e.firstChild;if(!K(t)){var n=cs.before(t);if(Kn(n.getNode())&&1===e.childNodes.length)return!c(n);var r=Mc(e).next(n);return r&&!c(r)}}(a))||(e.preventDefault(),d(m(1,n.node,n.before,!1)),l.getBody().focus()))))}),l.on("keypress",function(e){If.modifierPressed(e)||J1(b.getNode())&&e.preventDefault()}),l.on("GetSelectionRange",function(e){var t=e.range;v&&(v.parentNode?((t=t.cloneRange()).selectNode(v),e.range=t):v=null)}),l.on("SetSelectionRange",function(e){var t,n,r,o,i,a,u;e.range=(t=e.range,n=l.schema.getShortEndedElements(),r=y.createRng(),o=t.startContainer,i=t.startOffset,a=t.endContainer,u=t.endOffset,Ee(n,o.nodeName.toLowerCase())?0===i?r.setStartBefore(o):r.setStartAfter(o):r.setStart(o,i),Ee(n,a.nodeName.toLowerCase())?0===u?r.setEndBefore(a):r.setEndAfter(a):r.setEnd(a,u),r);var s=p(e.range,e.forward);s&&(e.range=s)}),l.on("AfterSetSelectionRange",function(e){var t=e.range,n=t.startContainer.parentNode;g(t)||"mcepastebin"===n.id||N(),y.hasClass(n,"mce-offscreen-selection")||h()}),l.on("copy",function(e){var t,n,r=e.clipboardData;e.isDefaultPrevented()||!e.clipboardData||xt.ie||(t=(n=y.get(w))&&n.getElementsByTagName("*")[0])&&(e.preventDefault(),r.clearData(),r.setData("text/html",t.outerHTML),r.setData("text/plain",t.outerText||t.innerText))}),S1(l),e=mu(function(){var e,t;n.removed||!n.getBody().contains(document.activeElement)||(e=n.selection.getRng()).collapsed&&(t=zb(n,e,!1),n.selection.setRng(t))},0),(n=l).on("focus",function(){e.throttle()}),n.on("blur",function(){e.cancel()}),(o=l).on("init",function(){o.on("focusin",function(e){var t,n,r=e.target;Qn(r)&&(t=bf(o.getBody(),r),n=Gn(t)?t:r,o.selection.getNode()!==n&&Fb(o,n).each(function(e){return o.selection.setRng(e)}))})})),{showCaret:m,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Hr(e),d(r()),b.scrollIntoView(e))},hideFakeCaret:N,destroy:function(){i.destroy(),v=null}}}function k1(a){function e(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(e){}}function u(e){return e.isDefaultPrevented()}function t(){a.shortcuts.add("meta+a",null,"SelectAll")}function n(){a.inline||b.bind(a.getDoc(),"mousedown mouseup",function(e){var t;e.target===a.getDoc().documentElement&&(t=y.getRng(),a.getBody().focus(),"mousedown"===e.type?Mr(t.startContainer)||y.placeCaretAt(e.clientX,e.clientY):y.setRng(t))})}function r(){Range.prototype.getClientRects||a.on("mousedown",function(e){var t;u(e)||"HTML"!==e.target.nodeName||((t=a.getBody()).blur(),Ar.setEditorTimeout(a,function(){t.focus()}))})}function o(){a.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==b.getContentEditableParent(t)&&(e.preventDefault(),a.selection.select(t),a.nodeChanged()),"A"===t.nodeName&&b.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),y.select(t))})}function i(){a.on("keydown",function(e){if(!u(e)&&e.keyCode===h&&y.isCollapsed()&&0===y.getRng().startOffset){var t=y.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function s(){a.getParam("readonly")||a.on("BeforeExecCommand mousedown",function(){e("StyleWithCSS",!1),e("enableInlineTableEditing",!1),Ps(a)||e("enableObjectResizing",!1)})}function c(){a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function l(){a.inline||a.on("keydown",function(){document.activeElement===document.body&&a.getWin().focus()})}function f(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){var t;"HTML"===e.target.nodeName&&(11<xt.ie?a.getBody().focus():(t=a.selection.getRng(),a.getBody().focus(),a.selection.setRng(t),a.selection.normalize(),a.nodeChanged()))}))}function d(){xt.mac&&a.on("keydown",function(e){!If.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),a.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))})}function m(){a.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function g(){a.on("init",function(){a.dom.bind(a.getBody(),"submit",function(e){e.preventDefault()})})}var p=Nt.each,h=If.BACKSPACE,v=If.DELETE,b=a.dom,y=a.selection,C=a.parser,x=xt.gecko,w=xt.ie,S=xt.webkit,N="data:text/mce-internal,",E=w?"Text":"URL",k=te;return hh(a)?(S&&(n(),o(),g(),t(),xt.iOS&&(l(),f(),m())),x&&(r(),s(),c(),d())):(a.on("keydown",function(e){if(!u(e)&&e.keyCode===If.BACKSPACE){var t,n=(t=y.getRng()).startContainer,r=t.startOffset,o=b.getRoot(),i=n;if(t.collapsed&&0===r){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(a.formatter.toggle("blockquote",null,i),(t=b.createRng()).setStart(n,0),t.setEnd(n,0),y.setRng(t))}}}),a.on("keydown",function(e){var t,n,r,o,i=e.keyCode;u(e)||i!==v&&i!==h||(t=a.selection.isCollapsed(),n=a.getBody(),t&&!b.isEmpty(n)||!t&&(r=R(a.selection.getRng()),(o=b.createRng()).selectNode(a.getBody()),r!==R(o))||(e.preventDefault(),a.setContent(""),n.firstChild&&b.isBlock(n.firstChild)?a.selection.setCursorLocation(n.firstChild,0):a.selection.setCursorLocation(n,0),a.nodeChanged()))}),xt.windowsPhone||a.on("keyup focusin mouseup",function(e){If.modifierPressed(e)||y.normalize()},!0),S&&(n(),o(),ks(a)&&a.on("init",function(){e("DefaultParagraphSeparator",ks(a))}),g(),i(),C.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),xt.iOS?(l(),f(),m()):t()),11<=xt.ie&&(f(),i()),xt.ie&&(t(),e("AutoUrlDetect",!1),a.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(a.selection.isCollapsed()&&"IMG"===t.target.tagName&&y.select(t.target),0<(n=a.selection.getContent()).length&&(r=N+escape(a.id)+","+escape(n),t.dataTransfer.setData(E,r)))}),a.on("drop",function(e){var t,n,r,o;u(e)||(t=e.dataTransfer&&(o=e.dataTransfer.getData(E))&&0<=o.indexOf(N)?(o=o.substr(N.length).split(","),{id:unescape(o[0]),html:unescape(o[1])}):null)&&t.id!==a.id&&(e.preventDefault(),n=Ef(e.x,e.y,a.getDoc()),y.setRng(n),r=t.html,a.queryCommandSupported("mceInsertClipboardContent")?a.execCommand("mceInsertClipboardContent",!1,{content:r,internal:!0}):a.execCommand("mceInsertContent",!1,r))})),x&&(a.on("keydown",function(e){if(!u(e)&&e.keyCode===h&&a.getBody().getElementsByTagName("hr").length&&y.isCollapsed()&&0===y.getRng().startOffset){var t=y.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return b.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(b.remove(n),e.preventDefault())}}),r(),a.on("keypress",function(e){var t;if(!u(e)&&(8===e.keyCode||46===e.keyCode)&&A())return t=_(),a.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),b.bind(a.getDoc(),"cut",function(e){var t;!u(e)&&A()&&(t=_(),Ar.setEditorTimeout(a,function(){t()}))}),s(),a.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||p(b.select("a"),function(e){var t=e.parentNode,n=b.getRoot();if(t.lastChild===e){for(;t&&!b.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}b.add(t,"br",{"data-mce-bogus":1})}})}),c(),d(),i())),{refreshContentEditable:k,isHidden:function(){if(!x||a.removed)return!1;var e=a.selection.getSel();return!e||!e.rangeCount||0===e.rangeCount}};function _(){var e=b.getAttribs(y.getStart().cloneNode(!1));return function(){var t=y.getStart();t!==a.getBody()&&(b.setAttrib(t,"style",null),p(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function A(){return!y.isCollapsed()&&b.getParent(y.getStart(),b.isBlock)!==b.getParent(y.getEnd(),b.isBlock)}function R(e){var t=b.create("body"),n=e.cloneContents();return t.appendChild(n),y.serializer.serialize(t,{format:"html"})}}function _1(e){return ae(e,function(e){return!1===b(e)})}function A1(e){var t=e.settings;return _1({block_elements:t.block_elements,boolean_attributes:t.boolean_attributes,custom_elements:t.custom_elements,extended_valid_elements:t.extended_valid_elements,invalid_elements:t.invalid_elements,invalid_styles:t.invalid_styles,move_caret_before_on_enter_elements:t.move_caret_before_on_enter_elements,non_empty_elements:t.non_empty_elements,schema:t.schema,self_closing_elements:t.self_closing_elements,short_ended_elements:t.short_ended_elements,special:t.special,text_block_elements:t.text_block_elements,text_inline_elements:t.text_inline_elements,valid_children:t.valid_children,valid_classes:t.valid_classes,valid_elements:t.valid_elements,valid_styles:t.valid_styles,verify_html:t.verify_html,whitespace_elements:t.whitespace_elements,padd_empty_block_inline_children:t.format_empty_lines})}function R1(e){var t=e.settings,n=e.editorUpload.blobCache;return _1({allow_conditional_comments:t.allow_conditional_comments,allow_html_data_urls:t.allow_html_data_urls,allow_svg_data_urls:t.allow_svg_data_urls,allow_html_in_named_anchor:t.allow_html_in_named_anchor,allow_script_urls:t.allow_script_urls,allow_unsafe_link_target:t.allow_unsafe_link_target,convert_fonts_to_spans:t.convert_fonts_to_spans,fix_list_elements:t.fix_list_elements,font_size_legacy_values:t.font_size_legacy_values,forced_root_block:t.forced_root_block,forced_root_block_attrs:t.forced_root_block_attrs,padd_empty_with_br:t.padd_empty_with_br,preserve_cdata:t.preserve_cdata,remove_trailing_brs:t.remove_trailing_brs,inline_styles:t.inline_styles,root_name:e.inline?e.getElement().nodeName.toLowerCase():void 0,validate:!0,blob_cache:n,document:e.getDoc(),images_dataimg_filter:t.images_dataimg_filter})}function D1(e){var t,u,n;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("Init"),e.focus(!0),n=(u=e).dom.getRoot(),u.inline||Pl(u)&&u.selection.getStart(!0)!==n||rf(n).each(function(e){var t,n,r,o,i=e.getNode(),a=cn(i)?rf(i).getOr(e):e;xt.browser.isIE()?(t=u,n=a.toRange(),r=Et.fromDom(t.getBody()),o=(cd(t)?ve.from(n):ve.none()).map(ld).filter(sd(r)),t.bookmark=o.isSome()?o:t.bookmark):u.selection.setRng(a.toRange())}),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e).settings.auto_focus&&Ar.setEditorTimeout(t,function(){var e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus);e.destroyed||e.focus()},100)}function T1(e){return(e.inline?e.ui:e.dom).styleSheetLoader}function O1(e){function t(){o.unloadAll(a),e.inline||e.ui.styleSheetLoader.unloadAll(i)}function n(){e.removed?t():e.on("remove",t)}var r,o=T1(e),i=Bs(e),a=e.contentCSS;0<e.contentStyles.length&&(r="",Nt.each(e.contentStyles,function(e){r+=e+"\r\n"}),e.dom.addStyle(r));var u,s,c,l,f,d,m,g,p,h=_r.all((u=e,s=a,c=i,l=[new _r(function(e,t){return T1(u).loadAll(s,e,t)})],u.inline?l:l.concat([new _r(function(e,t){return u.ui.styleSheetLoader.loadAll(c,e,t)})]))).then(n).catch(n);return e.settings.content_style&&(d=(f=e).settings.content_style,m=Et.fromDom(f.getBody()),g=jt(Pn(m)),pn(p=Et.fromTag("style"),"type","text/css"),Ln(p,Et.fromText(d)),Ln(g,p),f.on("remove",function(){In(p)})),h}function B1(e){var t;!0!==e.removed&&(hh(t=e)||t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),D1(e))}function P1(t,e){var n=t.settings,r=t.getElement(),o=t.getDoc();n.inline||(t.getElement().style.visibility=t.orgVisibility),e||t.inline||(o.open(),o.write(t.iframeHTML),o.close()),t.inline&&(Q1.addClass(r,"mce-content-body"),t.contentDocument=o=document,t.contentWindow=window,t.bodyElement=r,t.contentAreaContainer=r);var u,i,a,s,c,l,f,d,m,g,p,h,v=t.getBody();v.disabled=!0,t.readonly=!!n.readonly,t.readonly||(t.inline&&"static"===Q1.getStyle(v,"position",!0)&&(v.style.position="relative"),v.contentEditable=t.getParam("content_editable_state",!0)),v.disabled=!1,t.editorUpload=cb(t),t.schema=oo(A1(t)),t.dom=eu(o,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:n.force_hex_style_colors,update_styles:!0,root_element:t.inline?t.getBody():null,collect:function(){return t.inline},schema:t.schema,contentCssCors:t.getParam("content_css_cors",!1,"boolean"),referrerPolicy:Ds(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((i=cv(R1(u=t),u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o=e.length,i=u.dom,a="data-mce-"+t;o--;)(r=(n=e[o]).attr(t))&&!n.attr(a)&&0!==r.indexOf("data:")&&0!==r.indexOf("blob:")&&("style"===t?((r=i.serializeStyle(i.parseStyle(r),n.name)).length||(r=null),n.attr(a,r),n.attr(t,r)):"tabindex"===t?(n.attr(a,r),n.attr(t,null)):n.attr(a,u.convertURL(r,t,n.name)))}),i.addNodeFilter("script",function(e){for(var t=e.length;t--;){var n=e[t],r=n.attr("type")||"no/type";0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}}),u.settings.preserve_cdata&&i.addNodeFilter("#cdata",function(e){for(var t=e.length;t--;){var n=e[t];n.type=8,n.name="#comment",n.value="[CDATA["+u.dom.encode(n.value)+"]]"}}),i.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,n=u.schema.getNonEmptyElements();t--;){var r=e[t];r.isEmpty(n)&&0===r.getAll("br").length&&(r.append(new jd("br",1)).shortEnded=!0)}}),i),t.serializer=dv((s=(a=t).settings,_e(_e(_e({},R1(a)),A1(a)),_1({url_converter:s.url_converter,url_converter_scope:s.url_converter_scope,element_format:s.element_format,entities:s.entities,entity_encoding:s.entity_encoding,indent:s.indent,indent_after:s.indent_after,indent_before:s.indent_before}))),t),t.selection=Fh(t.dom,t.getWin(),t.serializer,t),t.annotator=zl(t),t.formatter=mb(t),t.undoManager=pb(t),t._nodeChangeDispatcher=new h1(t),t._selectionOverrides=E1(t),m=t,g=du(),p=au(!1),h=gu(function(e){m.fire("longpress",_e(_e({},e),{type:"longpress"})),p.set(!0)},400),m.on("touchstart",function(n){U0(n).each(function(e){h.cancel();var t={x:e.clientX,y:e.clientY,target:n.target};h.throttle(n),p.set(!1),g.set(t)})},!0),m.on("touchmove",function(e){h.cancel(),U0(e).each(function(i){g.on(function(e){var t=i,n=e,r=Math.abs(t.clientX-n.x),o=Math.abs(t.clientY-n.y);(5<r||5<o)&&(g.clear(),p.set(!1),m.fire("longpresscancel"))})})},!0),m.on("touchend touchcancel",function(t){h.cancel(),"touchcancel"!==t.type&&g.get().filter(function(e){return e.target.isEqualNode(t.target)}).each(function(){p.get()?t.preventDefault():m.fire("tap",_e(_e({},t),{type:"tap"}))})},!0),(f=l=t).on("click",function(e){f.dom.getParent(e.target,"details")&&e.preventDefault()}),(d=l).parser.addNodeFilter("details",function(e){Y(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),d.serializer.addNodeFilter("details",function(e){Y(e,function(e){var t=e.attr("data-mce-open");e.attr("open",X(t)?t:null),e.attr("data-mce-open",null)})}),hh(t)||(c=t).on("click",function(e){var t,n,r,o,i;3<=e.detail&&(r=(t=c).selection.getRng(),o=cs.fromRangeStart(r),i=cs.fromRangeEnd(r),!cs.isElementPosition(o)||b1(n=o.container())&&rf(n).each(function(e){return r.setStart(e.container(),e.offset())}),!cs.isElementPosition(i)||b1(n=o.container())&&of(n).each(function(e){return r.setEnd(e.container(),e.offset())}),t.selection.setRng(Cg(r)))});var b,y,C,x,w,S,N,E,k,_=hh(b=t)?au(null):GC(b);k=_,(E=t).addCommand("delete",function(){var e,t=k;M0(e=E)||Gb(e,!1)||qb(e,!1)||k0(e,t,!1)||Bb(e,!1)||yg(e)||Jb(e,!1)||T0(e,!1)||Ib(e)||R0(e,!1)||(F0(e,"Delete"),Sb(e))}),E.addCommand("forwardDelete",function(){var e,t=k;Gb(e=E,!0)||qb(e,!0)||k0(e,t,!0)||Bb(e,!0)||yg(e)||Jb(e,!0)||T0(e,!0)||Ib(e)||R0(e,!0)||F0(e,"ForwardDelete")}),ks(y=t)&&y.on("NodeChange",R(H0,y)),x=(C=t).dom,w=ks(C),S=C.getParam("placeholder",vc.getAttrib(C.getElement(),"placeholder"),"string"),N=function(e,t){var n,r,o;!function(e){if(hb(e)){var t=e.keyCode;return!vb(e)&&(If.metaKeyPressed(e)||e.altKey||112<=t&&t<=123||T(Ry,t))}}(e)&&(n=C.getBody(),r=!(hb(o=e)&&!(vb(o)||"keyup"===o.type&&229===o.keyCode))&&function(e,t,n){if(Kr(Et.fromDom(t),!1)){var r=""===n,o=t.firstElementChild;return!o||!e.getStyle(t.firstElementChild,"padding-left")&&!e.getStyle(t.firstElementChild,"padding-right")&&(r?!e.isBlock(o):n===o.nodeName.toLowerCase())}return!1}(x,n,w),""!==x.getAttrib(n,Dy)===r&&!t||(x.setAttrib(n,Dy,r?S:null),x.setAttrib(n,"aria-placeholder",r?S:null),C.fire("PlaceholderToggle",{state:r}),C.on(r?"keydown":"keyup",N),C.off(r?"keyup":"keydown",N)))},S&&C.on("init",function(e){N(e,!0),C.on("change SetContent ExecCommand",N),C.on("paste",function(e){return Ar.setEditorTimeout(C,function(){return N(e)})})});var A=vh(t);(function(t){var e=t.settings,n=t.getDoc(),r=t.getBody();t.fire("PreInit"),e.browser_spellcheck||e.gecko_spellcheck||(n.body.spellcheck=!1,Q1.setAttrib(r,"spellcheck","false")),t.quirks=k1(t),t.fire("PostRender");var o=t.getParam("directionality",lu.isRtl()?"rtl":void 0);void 0!==o&&(r.dir=o),e.protect&&t.on("BeforeSetContent",function(t){Nt.each(e.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type})})(t),A.fold(function(){O1(t).then(function(){return B1(t)})},function(e){t.setProgressState(!0),O1(t).then(function(){e().then(function(e){t.setProgressState(!1),B1(t)},function(e){t.notificationManager.open({type:"error",text:String(e)}),B1(t)})})})}function L1(e,t){var n,r,o,i,a=e.translate("Rich Text Area"),u=(n=e.id,r=a,t.height,o=e.getParam("iframe_attrs",{}),hn(i=Et.fromTag("iframe"),o),hn(i,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),vu(i,"tox-edit-area__iframe"),i.dom);u.onload=function(){u.onload=null,e.fire("load")};var s=function(e,t){if(document.domain!==window.location.hostname&&xt.browser.isIE()){var n=ob("mce");e[n]=function(){P1(e)};var r='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return Z1.setAttrib(t,"src",r),!0}return!1}(e,u);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=u,e.iframeHTML=function(e){var t=e.getParam("doctype","<!DOCTYPE html>")+"<html><head>";e.getParam("document_base_url","")!==e.documentBaseUrl&&(t+='<base href="'+e.documentBaseURI.getURI()+'" />'),t+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';var n=Ns(e,"body_id","tinymce"),r=Ns(e,"body_class",""),o=e.translate(e.getParam("iframe_aria_text","Rich Text Area. Press ALT-0 for help.","string"));return Es(e)&&(t+='<meta http-equiv="Content-Security-Policy" content="'+Es(e)+'" />'),t+('</head><body id="'+n+'" class="mce-content-body '+r+'" data-id="'+e.id)+'" aria-label="'+o+'"><br></body></html>'}(e),Z1.add(t.iframeContainer,u),s}function I1(e){return e.replace(/^\-/,"")}function M1(e){return{editorContainer:e,iframeContainer:e,api:{}}}function F1(e){var t,n,r,o,i,a,u,s=e.getElement();return e.orgDisplay=s.style.display,X(Is(e))?e.theme.renderUI():y(Is(e))?(n=(t=e).getElement(),(r=Is(t)(t,n)).editorContainer.nodeType&&(r.editorContainer.id=r.editorContainer.id||t.id+"_parent"),r.iframeContainer&&r.iframeContainer.nodeType&&(r.iframeContainer.id=r.iframeContainer.id||t.id+"_iframecontainer"),r.height=r.iframeHeight||n.offsetHeight,r):(u=(o=e).getElement(),o.inline?M1(null):(i=u,a=ex.create("div"),ex.insertAfter(a,i),M1(a)))}function U1(e){var n,t,r,o,i,a,u,s;e.fire("ScriptsLoaded"),n=e,t=Nt.trim(Rs(n)),r=n.ui.registry.getAll().icons,ne(_e(_e({},Vv.get("default").icons),Vv.get(t).icons),function(e,t){Ee(r,t)||n.ui.registry.addIcon(t,e)}),a=Is(o=e),X(a)?(o.settings.theme=I1(a),i=Yv.get(a),o.theme=new i(o,Yv.urls[a]),o.theme.init&&o.theme.init(o,Yv.urls[a]||o.documentBaseUrl.replace(/\/$/,""),o.$)):o.theme={},s=[],Nt.each(Fs(u=e).split(/[ ,]/),function(e){tx(u,s,I1(e))});var c=F1(e),l=e,f=ve.from(c.api).getOr({}),d={show:ve.from(f.show).getOr(te),hide:ve.from(f.hide).getOr(te),disable:ve.from(f.disable).getOr(te),isDisabled:ve.from(f.isDisabled).getOr(D),enable:function(){l.mode.isReadOnly()||ve.from(f.enable).map(x)}};l.ui=_e(_e({},l.ui),d);var m,g,p,h={editorContainer:c.editorContainer,iframeContainer:c.iframeContainer};return e.editorContainer=h.editorContainer||null,nb(e),e.inline?P1(e):(p=L1(m=e,g=h),g.editorContainer&&(Z1.get(g.editorContainer).style.display=m.orgDisplay,m.hidden=Z1.isHidden(g.editorContainer)),m.getElement().style.display="none",Z1.setAttrib(m.id,"aria-hidden","true"),void(p||P1(m)))}function z1(e){return"-"===e.charAt(0)}function H1(t,e,n){return ve.from(e).filter(function(e){return 0<e.length&&!Vv.has(e)}).map(function(e){return{url:t.editorManager.baseURL+"/icons/"+e+"/icons"+n+".js",name:ve.some(e)}})}function j1(c,l){var e,t,f=ou.ScriptLoader,n=f,r=l,o=function(){var r,o,t,n,e,i,a,u,s;e=f,u=Ts(i=c),s=i.getParam("language_url","","string"),!1===lu.hasCode(u)&&"en"!==u&&(a=""!==s?s:i.editorManager.baseURL+"/langs/"+u+".js",e.add(a,te,void 0,function(){Zv(i,"LanguageLoadError",eb("language",a,u))})),t=f,Y(function(e){for(var t=[],n=function(e){t.push(e)},r=0;r<e.length;r++)e[r].each(n);return t}([H1(n=c,"default",l),ve.from(n.getParam("icons_url","","string")).filter(function(e){return 0<e.length}).map(function(e){return{url:e,name:ve.none()}}).orThunk(function(){return H1(n,Rs(n),"")})]),function(e){t.add(e.url,te,void 0,function(){Zv(n,"IconsLoadError",eb("icons",e.url,e.name.getOrUndefined()))})}),r=c,o=l,Nt.each(r.getParam("external_plugins"),function(e,t){Xv.load(t,e,te,void 0,function(){tb(r,e,t)}),r.settings.plugins+=" "+t}),Nt.each(Fs(r).split(/[ ,]/),function(e){var t,n;(e=Nt.trim(e))&&!Xv.urls[e]&&(z1(e)?(e=e.substr(1,e.length),t=Xv.dependencies(e),Nt.each(t,function(e){var t=Xv.createUrl({prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"},e);Xv.load(t.resource,t,te,void 0,function(){tb(r,t.prefix+t.resource+t.suffix,t.resource)})})):(n={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"},Xv.load(e,n,te,void 0,function(){tb(r,n.prefix+n.resource+n.suffix,e)})))}),f.loadQueue(function(){c.removed||U1(c)},c,function(){c.removed||U1(c)})},i=Is(e=c);X(i)?(z1(i)||Ee(Yv.urls,i)||((t=e.getParam("theme_url"))?Yv.load(i,e.documentBaseURI.toAbsolute(t)):Yv.load(i,"themes/"+i+"/theme"+r+".js")),n.loadQueue(function(){Yv.waitFor(i,o)})):o()}function V1(a){return function(i,e){return ve.from(e).map(Et.fromDom).filter(_n).bind(function(e){return n=a,t=i,r=e.dom,Tg(Et.fromDom(r),function(e){return Sn(t=e,n).orThunk(function(){return"font"===kt(t)?ue(rx,n).bind(function(e){return bn(t,e)}):ve.none()});var t},function(e){return je(Et.fromDom(t),e)}).or((o=e.dom,ve.from(eu.DOM.getStyle(o,a,!0))));var n,t,r,o}).getOr("")}}function q1(e){return rf(e.getBody()).map(function(e){var t=e.container();return Vn(t)?t.parentNode:t})}function $1(e,t){return n=e,r=a(ve.some,t),o=n,ve.from(o.selection.getRng()).bind(function(e){var t=o.getBody();return e.startContainer===t&&0===e.startOffset?ve.none():ve.from(o.selection.getStart(!0))}).orThunk(R(q1,n)).map(Et.fromDom).filter(_n).bind(r);var n,r,o}function W1(e,t){if(/^[0-9.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=Nt.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),o=Nt.explode(e.getParam("font_size_classes",""));return o?o[n-1]||t:r[n-1]||t}return t}return t}var K1=Gn,X1=Yn,Y1=function(e){e.on(function(e){C1(e.ghost)}),e.clear()},G1=Yn,J1=Gn,Q1=eu.DOM,Z1=eu.DOM,ex=eu.DOM,tx=function(t,n,r){var o,i,a,u,e=Xv.get(r),s=Xv.urls[r]||t.documentBaseUrl.replace(/\/$/,"");if(r=Nt.trim(r),e&&-1===Nt.inArray(n,r)&&(Nt.each(Xv.dependencies(r),function(e){tx(t,n,e)}),!t.plugins[r]))try{var c=new e(t,s,t.$);(t.plugins[r]=c).init&&(c.init(t,s),n.push(r))}catch(e){i=r,a=e,Cf(o=t,"PluginLoadError",{message:u=lu.translate(["Failed to initialize plugin: {0}",i])}),wy(u,a),Qv(o,u)}},nx=eu.DOM,rx={"font-size":"size","font-family":"face"},ox=V1("font-size"),ix=i(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},V1("font-family")),ax=Nt.each,ux=Nt.map,sx=Nt.inArray,cx=(lx.prototype.execCommand=function(t,n,r,e){var o,i,a=!1,u=this;if(!u.editor.removed){if("mcefocus"!==t.toLowerCase()&&(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?md(i=u.editor).each(function(e){return i.selection.setRng(e)}):u.editor.focus()),(e=u.editor.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;var s=t.toLowerCase();if(o=u.commands.exec[s])return o(s,n,r),u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(ax(this.editor.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(u.editor.theme&&u.editor.theme.execCommand&&u.editor.theme.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=u.editor.getDoc().execCommand(t,n,r)}catch(e){}return!!a&&(u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},lx.prototype.queryCommandState=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.state[e])return t(e);try{return this.editor.getDoc().queryCommandState(e)}catch(e){}return!1}},lx.prototype.queryCommandValue=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.value[e])return t(e);try{return this.editor.getDoc().queryCommandValue(e)}catch(e){}}},lx.prototype.addCommands=function(e,n){void 0===n&&(n="exec");var r=this;ax(e,function(t,e){ax(e.toLowerCase().split(","),function(e){r.commands[n][e]=t})})},lx.prototype.addCommand=function(e,o,i){var a=this;e=e.toLowerCase(),this.commands.exec[e]=function(e,t,n,r){return o.call(i||a.editor,t,n,r)}},lx.prototype.queryCommandSupported=function(e){if(e=e.toLowerCase(),this.commands.exec[e])return!0;try{return this.editor.getDoc().queryCommandSupported(e)}catch(e){}return!1},lx.prototype.addQueryStateHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.state[e]=function(){return t.call(n||r.editor)}},lx.prototype.addQueryValueHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.value[e]=function(){return t.call(n||r.editor)}},lx.prototype.hasCustomCommand=function(e){return e=e.toLowerCase(),!!this.commands.exec[e]},lx.prototype.execNativeCommand=function(e,t,n){return void 0===t&&(t=!1),void 0===n&&(n=null),this.editor.getDoc().execCommand(e,t,n)},lx.prototype.isFormatMatch=function(e){return this.editor.formatter.match(e)},lx.prototype.toggleFormat=function(e,t){this.editor.formatter.toggle(e,t),this.editor.nodeChanged()},lx.prototype.storeSelection=function(e){this.selectionBookmark=this.editor.selection.getBookmark(e)},lx.prototype.restoreSelection=function(){this.editor.selection.moveToBookmark(this.selectionBookmark)},lx.prototype.setupCommands=function(u){var o=this;function e(r){return function(){var e=u.selection,t=e.isCollapsed()?[u.dom.getParent(e.getNode(),u.dom.isBlock)]:e.getSelectedBlocks(),n=ux(t,function(e){return!!u.formatter.matchNode(e,r)});return-1!==sx(n,!0)}}this.addCommands({"mceResetDesignMode,mceBeginUndoLevel":te,"mceEndUndoLevel,mceAddUndoLevel":function(){u.undoManager.add()},mceFocus:function(e,t,n){var r,o;o=n,(r=u).removed||(o?zd:function(t){var e=t.selection,n=t.getBody(),r=e.getRng();t.quirks.refreshContentEditable(),void 0!==t.bookmark&&!1===Cd(t)&&md(t).each(function(e){t.selection.setRng(e),r=e});var o,i,a=(o=t,i=e.getNode(),o.dom.getParent(i,function(e){return"true"===o.dom.getContentEditable(e)}));if(t.$.contains(n,a))return yd(a),bd(t,r),zd(t);t.inline||(xt.opera||yd(n),t.getWin().focus()),(xt.gecko||t.inline)&&(yd(n),bd(t,r)),zd(t)})(r)},"Cut,Copy,Paste":function(e){var t,n,r=u.getDoc();try{o.execNativeCommand(e)}catch(e){t=!0}!(t="paste"===e&&!r.queryCommandEnabled(e)||t)&&r.queryCommandSupported(e)||(n=u.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."),xt.mac&&(n=n.replace(/Ctrl\+/g,"\u2318+")),u.notificationManager.open({text:n,type:"error"}))},unlink:function(){var e;u.selection.isCollapsed()?(e=u.dom.getParent(u.selection.getStart(),"a"))&&u.dom.remove(e,!0):u.formatter.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),ax("left,center,right,justify".split(","),function(e){t!==e&&u.formatter.remove("align"+e)}),"none"!==t&&o.toggleFormat("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t;o.execNativeCommand(e);var n=u.dom.getParent(u.selection.getNode(),"ol,ul");n&&(t=n.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(t.nodeName)&&(o.storeSelection(),u.dom.split(t,n),o.restoreSelection()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){o.toggleFormat(e)},"ForeColor,HiliteColor":function(e,t,n){o.toggleFormat(e,{value:n})},FontName:function(e,t,n){var r,o;o=W1(r=u,n),r.formatter.toggle("fontname",{value:A(o.split(/\s*,\s*/),function(e){return-1===e.indexOf(" ")||Ge(e,'"')||Ge(e,"'")?e:"'"+e+"'"}).join(",")}),r.nodeChanged()},FontSize:function(e,t,n){var r;(r=u).formatter.toggle("fontsize",{value:W1(r,n)}),r.nodeChanged()},LineHeight:function(e,t,n){var r;(r=u).formatter.toggle("lineheight",{value:String(n)}),r.nodeChanged()},Lang:function(e,t,n){o.toggleFormat(e,{value:n.code,customValue:n.customCode})},RemoveFormat:function(e){u.formatter.remove(e)},mceBlockQuote:function(){o.toggleFormat("blockquote")},FormatBlock:function(e,t,n){return o.toggleFormat(n||"p")},mceCleanup:function(){var e=u.selection.getBookmark();u.setContent(u.getContent()),u.selection.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||u.selection.getNode();r!==u.getBody()&&(o.storeSelection(),u.dom.remove(r,!0),o.restoreSelection())},mceSelectNodeDepth:function(e,t,n){var r=0;u.dom.getParent(u.selection.getNode(),function(e){if(1===e.nodeType&&r++===n)return u.selection.select(e),!1},u.getBody())},mceSelectNode:function(e,t,n){u.selection.select(n)},mceInsertContent:function(e,t,n){var r,o,i,a;r=u,o=function(e){if("string"==typeof e)return{content:e,details:{}};var t=Nt.extend({paste:e.paste,data:{paste:e.paste}},e);return{content:e.content,details:t}}(n),i=o.content,a=o.details,bh(r).editor.insertContent(i,a)},mceInsertRawHTML:function(e,t,n){u.selection.setContent("tiny_mce_marker");var r=u.getContent();u.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceInsertNewLine:function(e,t,n){VC(u,n)},mceToggleFormat:function(e,t,n){o.toggleFormat(n)},mceSetContent:function(e,t,n){u.setContent(n)},"Indent,Outdent":function(e){I0(u,e)},mceRepaint:te,InsertHorizontalRule:function(){u.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){u.hasVisual=!u.hasVisual,u.addVisual()},mceReplaceContent:function(e,t,n){u.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,u.selection.getContent({format:"text"})))},mceInsertLink:function(e,t,n){"string"==typeof n&&(n={href:n});var r=u.dom.getParent(u.selection.getNode(),"a");n.href=n.href.replace(/ /g,"%20"),r&&n.href||u.formatter.remove("link"),n.href&&u.formatter.apply("link",n,r)},selectAll:function(){var e,t=u.dom.getParent(u.selection.getStart(),Yn);t&&((e=u.dom.createRng()).selectNodeContents(t),u.selection.setRng(e))},mceNewDocument:function(){u.setContent("")},InsertLineBreak:function(e,t,n){return TC(u,n),!0}}),o.addCommands({JustifyLeft:e("alignleft"),JustifyCenter:e("aligncenter"),JustifyRight:e("alignright"),JustifyFull:e("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return o.isFormatMatch(e)},mceBlockQuote:function(){return o.isFormatMatch("blockquote")},Outdent:function(){return P0(u)},"InsertUnorderedList,InsertOrderedList":function(e){var t=u.dom.getParent(u.selection.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),o.addCommands({Undo:function(){u.undoManager.undo()},Redo:function(){u.undoManager.redo()}}),o.addQueryValueHandler("FontName",function(){return $1(t=u,function(e){return ix(t.getBody(),e.dom)}).getOr("");var t},this),o.addQueryValueHandler("FontSize",function(){return $1(t=u,function(e){return ox(t.getBody(),e.dom)}).getOr("");var t},this),o.addQueryValueHandler("LineHeight",function(){return $1(t=u,function(n){var e=Et.fromDom(t.getBody());return Tg(n,function(e){return Sn(e,"line-height")},R(je,e)).getOrThunk(function(){var e=parseFloat(wn(n,"line-height")),t=parseFloat(wn(n,"font-size"));return String(e/t)})}).getOr("");var t},this)},lx);function lx(e){this.commands={state:{},exec:{},value:{}},this.editor=e,this.setupCommands(e)}function fx(e,t,n){var r,o,i,a,u,s;bu(e,t)&&!1===n?(o=t,hu(r=e)?r.dom.classList.remove(o):(u=o,0<(s=U(pu(a=r,"class"),function(e){return e!==u})).length?pn(a,"class",s.join(" ")):Cn(a,"class")),0===(hu(i=r)?i.dom.classList:pu(i,"class")).length&&Cn(i,"class")):n&&vu(e,t)}function dx(e,t,n){try{e.getDoc().execCommand(t,!1,String(n))}catch(e){}}function mx(e,t){e.dom.contentEditable=t?"true":"false"}function gx(e,t){var n,r,o=Et.fromDom(e.getBody());fx(o,"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e._selectionOverrides.hideFakeCaret(),ve.from(e.selection.getNode()).each(function(e){e.removeAttribute("data-mce-selected")}),mx(o,!(e.readonly=!0)),Y(yu(o,'*[contenteditable="true"]'),function(e){pn(e,vx,"true"),mx(e,!1)})):(mx(o,!(e.readonly=!1)),Y(yu(o,"*["+vx+'="true"]'),function(e){Cn(e,vx),mx(e,!0)}),dx(e,"StyleWithCSS",!1),dx(e,"enableInlineTableEditing",!1),dx(e,"enableObjectResizing",!1),(Cd(n=e)||(r=n,od(Pn(Et.fromDom(r.getElement()))).filter(function(e){return!(void 0!==(t=e.dom.classList)&&(t.contains("tox-edit-area")||t.contains("tox-edit-area__iframe")||t.contains("mce-content-body")))&&pd(r,e.dom);var t}).isSome()))&&e.focus(),e.selection.setRng(e.selection.getRng()),e.nodeChanged())}function px(e){return e.readonly}function hx(t){t.parser.addAttributeFilter("contenteditable",function(e){px(t)&&Y(e,function(e){e.attr(vx,e.attr("contenteditable")),e.attr("contenteditable","false")})}),t.serializer.addAttributeFilter(vx,function(e){px(t)&&Y(e,function(e){e.attr("contenteditable",e.attr(vx))})}),t.serializer.addTempAttr(vx)}var vx="data-mce-contenteditable",bx=Nt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel"," "),yx=(Cx.isNative=function(e){return!!bx[e.toLowerCase()]},Cx.prototype.fire=function(e,t){var n=e.toLowerCase(),r=so(n,t||{},this.scope);this.settings.beforeFire&&this.settings.beforeFire(r);var o=this.bindings[n];if(o)for(var i=0,a=o.length;i<a;i++){var u=o[i];if(!u.removed){if(u.once&&this.off(n,u.func),r.isImmediatePropagationStopped())return r;if(!1===u.func.call(this.scope,r))return r.preventDefault(),r}}return r},Cx.prototype.on=function(e,t,n,r){if(t=!1===t?D:t){var o={func:t,removed:!1};r&&Nt.extend(o,r);for(var i=e.toLowerCase().split(" "),a=i.length;a--;){var u=i[a],s=this.bindings[u];s||(s=[],this.toggleEvent(u,!0)),s=n?Ae([o],s,!0):Ae(Ae([],s,!0),[o],!1),this.bindings[u]=s}}return this},Cx.prototype.off=function(e,t){var n=this;if(e)for(var r=e.toLowerCase().split(" "),o=r.length;o--;){var i,a=r[o],u=this.bindings[a];if(!a)return ne(this.bindings,function(e,t){n.toggleEvent(t,!1),delete n.bindings[t]}),this;u&&(t?(u=(i=B(u,function(e){return e.func===t})).fail,this.bindings[a]=u,Y(i.pass,function(e){e.removed=!0})):u.length=0,u.length||(this.toggleEvent(e,!1),delete this.bindings[a]))}else ne(this.bindings,function(e,t){n.toggleEvent(t,!1)}),this.bindings={};return this},Cx.prototype.once=function(e,t,n){return this.on(e,t,n,{once:!0})},Cx.prototype.has=function(e){return e=e.toLowerCase(),!(!this.bindings[e]||0===this.bindings[e].length)},Cx);function Cx(e){this.bindings={},this.settings=e||{},this.scope=this.settings.scope||this,this.toggleEvent=this.settings.toggleEvent||D}function xx(n){return n._eventDispatcher||(n._eventDispatcher=new yx({scope:n,toggleEvent:function(e,t){yx.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher}function wx(e,t){if("selectionchange"===t)return e.getDoc();if(!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t))return e.getDoc().documentElement;var n=Ls(e);return n?(e.eventRoot||(e.eventRoot=Rx.select(n)[0]),e.eventRoot):e.getBody()}function Sx(e,t,n){var r,o,i,a;e.hidden||px(e)?px(e)&&(r=e,"click"!==(o=n).type||If.metaKeyPressed(o)||(i=Et.fromDom(o.target),a=r,yr(i,"a",function(e){return je(e,Et.fromDom(a.getBody()))}).bind(function(e){return bn(e,"href")}).each(function(e){var t,n;o.preventDefault(),/^#/.test(e)?(t=r.dom.select(e+',[name="'+(Ge(n=e,"#")?n.substring("#".length):n)+'"]')).length&&r.selection.scrollIntoView(t[0],!0):window.open(e,"_blank","rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes")}))):e.fire(t,n)}function Nx(i,a){var e,t;i.delegates||(i.delegates={}),i.delegates[a]||i.removed||(t=wx(i,a),Ls(i)?(_x||(_x={},i.editorManager.on("removeEditor",function(){i.editorManager.activeEditor||_x&&(ne(_x,function(e,t){i.dom.unbind(wx(i,t))}),_x=null)})),_x[a]||(_x[a]=e=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();o!==t&&!Rx.isChildOf(t,o)||Sx(n[r],a,e)}},Rx.bind(t,a,e))):(Rx.bind(t,a,e=function(e){Sx(i,a,e)}),i.delegates[a]=e))}function Ex(e,t,n,r){var o=n[t.get()],i=n[r];try{i.activate()}catch(e){return void console.error("problem while activating editor mode "+r+":",e)}o.deactivate(),o.editorReadOnly!==i.editorReadOnly&&gx(e,i.editorReadOnly),t.set(r),e.fire("SwitchMode",{mode:r})}function kx(e){var t,n={};Ox(Bx(e.toLowerCase(),"+"),function(e){e in Lx?n[e]=!0:/^[0-9]{2,}$/.test(e)?n.keyCode=parseInt(e,10):(n.charCode=e.charCodeAt(0),n.keyCode=Px[e]||e.toUpperCase().charCodeAt(0))});var r=[n.keyCode];for(t in Lx)n[t]?r.push(t):n[t]=!1;return n.id=r.join(","),n.access&&(n.alt=!0,xt.mac?n.ctrl=!0:n.shift=!0),n.meta&&(xt.mac?n.meta=!0:(n.ctrl=!0,n.meta=!1)),n}var _x,Ax={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;var r=xx(this).fire(e,t);if(!1!==n&&this.parent)for(var o=this.parent();o&&!r.isPropagationStopped();)o.fire(e,r,!1),o=o.parent();return r},on:function(e,t,n){return xx(this).on(e,t,n)},off:function(e,t){return xx(this).off(e,t)},once:function(e,t){return xx(this).once(e,t)},hasEventListeners:function(e){return xx(this).has(e)}},Rx=eu.DOM,Dx=_e(_e({},Ax),{bindPendingEventDelegates:function(){var t=this;Nt.each(t._pendingNativeEvents,function(e){Nx(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(n.removed||(t?n.initialized?Nx(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(wx(n,e),e,n.delegates[e]),delete n.delegates[e])))},unbindAllNativeEvents:function(){var n=this,e=n.getBody(),t=n.dom;n.delegates&&(ne(n.delegates,function(e,t){n.dom.unbind(wx(n,t),t,e)}),delete n.delegates),!n.inline&&e&&t&&(e.onload=null,t.unbind(n.getWin()),t.unbind(n.getDoc())),t&&(t.unbind(e),t.unbind(n.getContainer()))}}),Tx=["design","readonly"],Ox=Nt.each,Bx=Nt.explode,Px={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},Lx=Nt.makeMap("alt,ctrl,shift,meta,access"),Ix=(Mx.prototype.add=function(e,n,t,r){var o=this,i=o.normalizeCommandFunc(t);return Ox(Bx(Nt.trim(e)),function(e){var t=o.createShortcut(e,n,i,r);o.shortcuts[t.id]=t}),!0},Mx.prototype.remove=function(e){var t=this.createShortcut(e);return!!this.shortcuts[t.id]&&(delete this.shortcuts[t.id],!0)},Mx.prototype.normalizeCommandFunc=function(e){var t=this,n=e;return"string"==typeof n?function(){t.editor.execCommand(n,!1,null)}:Nt.isArray(n)?function(){t.editor.execCommand(n[0],n[1],n[2])}:n},Mx.prototype.createShortcut=function(e,t,n,r){var o=Nt.map(Bx(e,">"),kx);return o[o.length-1]=Nt.extend(o[o.length-1],{func:n,scope:r||this.editor}),Nt.extend(o[0],{desc:this.editor.translate(t),subpatterns:o.slice(1)})},Mx.prototype.hasModifier=function(e){return e.altKey||e.ctrlKey||e.metaKey},Mx.prototype.isFunctionKey=function(e){return"keydown"===e.type&&112<=e.keyCode&&e.keyCode<=123},Mx.prototype.matchShortcut=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},Mx.prototype.executeShortcutAction=function(e){return e.func?e.func.call(e.scope):null},Mx);function Mx(e){this.shortcuts={},this.pendingPatterns=[],this.editor=e;var n=this;e.on("keyup keypress keydown",function(t){!n.hasModifier(t)&&!n.isFunctionKey(t)||t.isDefaultPrevented()||(Ox(n.shortcuts,function(e){if(n.matchShortcut(t,e))return n.pendingPatterns=e.subpatterns.slice(0),"keydown"===t.type&&n.executeShortcutAction(e),!0}),n.matchShortcut(t,n.pendingPatterns[0])&&(1===n.pendingPatterns.length&&"keydown"===t.type&&n.executeShortcutAction(n.pendingPatterns[0]),n.pendingPatterns.shift()))})}var Fx=eu.DOM,Ux=Nt.extend,zx=Nt.each,Hx=Nt.resolve,jx=xt.ie,Vx=(qx.prototype.render=function(){!function(t){var e=t.id;lu.setCode(Ts(t));var n,r,o,i,a=function(){nx.unbind(window,"ready",a),t.render()};ci.Event.domLoaded?t.getElement()&&xt.contentEditable&&(n=Et.fromDom(t.getElement()),r=L(n.dom.attributes,function(e,t){return e[t.name]=t.value,e},{}),t.on("remove",function(){O(n.dom.attributes,function(e){return Cn(n,e.name),0}),hn(n,r)}),t.ui.styleSheetLoader=Rr.forElement(n,{contentCssCors:(o=t).getParam("content_css_cors"),referrerPolicy:Ds(o)}),t.getParam("inline")?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden"),(i=t.getElement().form||nx.getParent(e,"form"))&&(t.formElement=i,t.getParam("hidden_input")&&!jn(t.getElement())&&(nx.insertAfter(nx.create("input",{type:"hidden",name:e}),e),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},nx.bind(i,"submit reset",t.formEventDelegate),t.on("reset",function(){t.resetContent()}),!t.getParam("submit_patch")||i.submit.nodeType||i.submit.length||i._mceOldSubmit||(i._mceOldSubmit=i.submit,i.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),i._mceOldSubmit(i)})),t.windowManager=Gv(t),t.notificationManager=Ev(t),"xml"===t.getParam("encoding")&&t.on("GetContent",function(e){e.save&&(e.content=nx.encode(e.content))}),t.getParam("add_form_submit_trigger")&&t.on("submit",function(){t.initialized&&t.save()}),t.getParam("add_unload_trigger")&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),j1(t,t.suffix)):nx.bind(window,"ready",a)}(this)},qx.prototype.focus=function(e){this.execCommand("mceFocus",!1,e)},qx.prototype.hasFocus=function(){return Cd(this)},qx.prototype.execCallback=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?Hx(r):0,o=Hx(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,t)},qx.prototype.translate=function(e){return lu.translate(e)},qx.prototype.getParam=function(e,t,n){return i=t,a=n,l=(o=e)in(r=this).settings?r.settings[o]:i,"hash"===a?(c={},"string"==typeof(s=l)?Y(0<s.indexOf("=")?s.split(/[;,](?![^=;,]*(?:[;,]|$))/):s.split(","),function(e){var t=e.split("=");1<t.length?c[Nt.trim(t[0])]=Nt.trim(t[1]):c[Nt.trim(t[0])]=Nt.trim(t[0])}):c=s,c):"string"===a?xv(X,r,o).getOr(i):"number"===a?xv(N,r,o).getOr(i):"boolean"===a?xv(v,r,o).getOr(i):"object"===a?xv(h,r,o).getOr(i):"array"===a?xv(S,r,o).getOr(i):"string[]"===a?xv((u=X,function(e){return S(e)&&j(e,u)}),r,o).getOr(i):"function"===a?xv(y,r,o).getOr(i):l;var r,o,i,a,u,s,c,l},qx.prototype.hasPlugin=function(e,t){return!(!T(Fs(this).split(/[ ,]/),e)||t&&void 0===Xv.get(e))},qx.prototype.nodeChanged=function(e){this._nodeChangeDispatcher.nodeChanged(e)},qx.prototype.addCommand=function(e,t,n){this.editorCommands.addCommand(e,t,n)},qx.prototype.addQueryStateHandler=function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},qx.prototype.addQueryValueHandler=function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},qx.prototype.addShortcut=function(e,t,n,r){this.shortcuts.add(e,t,n,r)},qx.prototype.execCommand=function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},qx.prototype.queryCommandState=function(e){return this.editorCommands.queryCommandState(e)},qx.prototype.queryCommandValue=function(e){return this.editorCommands.queryCommandValue(e)},qx.prototype.queryCommandSupported=function(e){return this.editorCommands.queryCommandSupported(e)},qx.prototype.show=function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable="true":(Fx.show(this.getContainer()),Fx.hide(this.id)),this.load(),this.fire("show"))},qx.prototype.hide=function(){var e=this,t=e.getDoc();e.hidden||(jx&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable="false",e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(Fx.hide(e.getContainer()),Fx.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},qx.prototype.isHidden=function(){return!!this.hidden},qx.prototype.setProgressState=function(e,t){this.fire("ProgressState",{state:e,time:t})},qx.prototype.load=function(e){var t=this.getElement();if(this.removed)return"";if(t){(e=e||{}).load=!0;var n=jn(t)?t.value:t.innerHTML,r=this.setContent(n,e);return e.element=t,e.no_events||this.fire("LoadContent",e),e.element=t=null,r}},qx.prototype.save=function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,jn(o)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Fx.getParent(r.id,"form"))&&zx(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},qx.prototype.setContent=function(e,t){return mv(this,e,t)},qx.prototype.getContent=function(e){return t=this,r=(n=void 0===(n=e)?{}:n).format||"html",o=n,bh(t).editor.getContent(o,r);var t,n,r,o},qx.prototype.insertContent=function(e,t){t&&(e=Ux({content:e},t)),this.execCommand("mceInsertContent",!1,e)},qx.prototype.resetContent=function(e){void 0===e?mv(this,this.startContent,{format:"raw"}):mv(this,e),this.undoManager.reset(),this.setDirty(!1),this.nodeChanged()},qx.prototype.isDirty=function(){return!this.isNotDirty},qx.prototype.setDirty=function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},qx.prototype.getContainer=function(){return this.container||(this.container=Fx.get(this.editorContainer||this.id+"_parent")),this.container},qx.prototype.getContentAreaContainer=function(){return this.contentAreaContainer},qx.prototype.getElement=function(){return this.targetElm||(this.targetElm=Fx.get(this.id)),this.targetElm},qx.prototype.getWin=function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},qx.prototype.getDoc=function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},qx.prototype.getBody=function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},qx.prototype.convertURL=function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):this.documentBaseURI.toAbsolute(e,r.remove_script_host)},qx.prototype.addVisual=function(e){var t;t=e,yh(this).editor.addVisual(t)},qx.prototype.remove=function(){var e,t,n,r,o;(e=this).removed||(t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement(),r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&Ov.remove(o.nextSibling),e.fire("remove"),e.editorManager.remove(e),!e.inline&&r&&Ov.setStyle(e.id,"display",e.orgDisplay),e.fire("detach"),Ov.remove(e.getContainer()),gv(t),gv(n),e.destroy())},qx.prototype.destroy=function(e){var t,n,r,o,i,a,u;n=e,a=(t=this).selection,u=t.dom,t.destroyed||(n||t.removed?(n||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),gv(a),gv(u)),(o=(r=t).formElement)&&(o._mceOldSubmit&&(o.submit=o._mceOldSubmit,o._mceOldSubmit=null),Ov.unbind(o,"submit reset",r.formEventDelegate)),(i=t).contentAreaContainer=i.formElement=i.container=i.editorContainer=null,i.bodyElement=i.contentDocument=i.contentWindow=null,i.iframeElement=i.targetElm=null,i.selection&&(i.selection=i.selection.win=i.selection.dom=i.selection.dom.doc=null),t.destroyed=!0):t.remove())},qx.prototype.uploadImages=function(e){return this.editorUpload.uploadImages(e)},qx.prototype._scanForImages=function(){return this.editorUpload.scanForImages()},qx.prototype.addButton=function(){throw new Error("editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead")},qx.prototype.addSidebar=function(){throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead")},qx.prototype.addMenuItem=function(){throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead")},qx.prototype.addContextToolbar=function(){throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead")},qx);function qx(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x=this;function w(n,r){return function(e,t){return n[e.toLowerCase()]=_e(_e({},t),{type:r})}}this.plugins={},this.contentCSS=[],this.contentStyles=[],this.loadedCSS={},this.isNotDirty=!1,this.editorManager=n,this.documentBaseUrl=n.documentBaseURL,Ux(this,Dx),this.settings=(d=(f=this).documentBaseUrl,m=n.defaultSettings,p=d,h=Fv,v=f,b={id:e,theme:"silver",toolbar_mode:bv(g=t,"floating"),plugins:"",document_base_url:p,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,inline_styles:!0,convert_fonts_to_spans:!0,indent:!0,indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:v.convertURL,url_converter_scope:v},y=_e(_e({},b),h?jv:{}),!1!==(C=Cv(Uv||zv,Uv,y,m,g)).deprecation_warnings&&pv(g,C),C),this.settings.suffix&&(n.suffix=this.settings.suffix),this.suffix=n.suffix,this.settings.base_url&&n._setBaseUrl(this.settings.base_url),this.baseUri=n.baseURI,this.settings.referrer_policy&&(ou.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy),eu.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)),fu.languageLoad=this.settings.language_load,fu.baseURL=n.baseURL,this.id=e,this.setDirty(!1),this.documentBaseURI=new nv(this.settings.document_base_url,{base_uri:this.baseUri}),this.baseURI=this.baseUri,this.inline=!!this.settings.inline,this.shortcuts=new Ix(this),this.editorCommands=new cx(this),this.settings.cache_suffix&&(xt.cacheSuffix=this.settings.cache_suffix.replace(/^[\?\&]+/,"")),this.ui={registry:{addAutocompleter:(u={},(r={addButton:w(o={},"button"),addGroupToolbarButton:w(o,"grouptoolbarbutton"),addToggleButton:w(o,"togglebutton"),addMenuButton:w(o,"menubutton"),addSplitButton:w(o,"splitbutton"),addMenuItem:w(i={},"menuitem"),addNestedMenuItem:w(i,"nestedmenuitem"),addToggleMenuItem:w(i,"togglemenuitem"),addAutocompleter:w(a={},"autocompleter"),addContextMenu:w(s={},"contextmenu"),addContextToolbar:w(c={},"contexttoolbar"),addContextForm:w(c,"contextform"),addSidebar:w(l={},"sidebar"),addIcon:function(e,t){return u[e.toLowerCase()]=t},getAll:function(){return{buttons:o,menuItems:i,icons:u,popups:a,contextMenus:s,contextToolbars:c,sidebars:l}}}).addAutocompleter),addButton:r.addButton,addContextForm:r.addContextForm,addContextMenu:r.addContextMenu,addContextToolbar:r.addContextToolbar,addIcon:r.addIcon,addMenuButton:r.addMenuButton,addMenuItem:r.addMenuItem,addNestedMenuItem:r.addNestedMenuItem,addSidebar:r.addSidebar,addSplitButton:r.addSplitButton,addToggleButton:r.addToggleButton,addGroupToolbarButton:r.addGroupToolbarButton,addToggleMenuItem:r.addToggleMenuItem,getAll:r.getAll},styleSheetLoader:void 0,show:te,hide:te,enable:te,disable:te,isDisabled:D};var S,N,E,k,_,A=(k=au("design"),_=au({design:{activate:te,deactivate:te,editorReadOnly:!1},readonly:{activate:te,deactivate:te,editorReadOnly:!0}}),(N=S=this).serializer?hx(N):N.on("PreInit",function(){hx(N)}),(E=S).on("ShowCaret",function(e){px(E)&&e.preventDefault()}),E.on("ObjectSelected",function(e){px(E)&&e.preventDefault()}),{isReadOnly:function(){return px(S)},set:function(e){return function(e,t,n,r){if(r!==n.get()){if(!Ee(t,r))throw new Error("Editor mode '"+r+"' is invalid");e.initialized?Ex(e,n,t,r):e.on("init",function(){return Ex(e,n,t,r)})}}(S,_.get(),k,e)},get:function(){return k.get()},register:function(e,t){_.set(function(e,t,n){var r;if(T(Tx,t))throw new Error("Cannot override default mode "+t);return _e(_e({},e),((r={})[t]=_e(_e({},n),{deactivate:function(){try{n.deactivate()}catch(e){console.error("problem while deactivating editor mode "+t+":",e)}}}),r))}(_.get(),e,t))}});this.mode=A,this.setMode=A.set,n.fire("SetupEditor",{editor:this}),this.execCallback("setup",this),this.$=Ya.overrideDefaults(function(){return{context:x.inline?x.getBody():x.getDoc(),element:x.getBody()}})}function $x(t){var n=t.type;Jx(ow.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})}function Wx(e){e!==ew&&(e?Ya(window).on("resize scroll",$x):Ya(window).off("resize scroll",$x),ew=e)}function Kx(t){var e=nw;delete tw[t.id];for(var n=0;n<tw.length;n++)if(tw[n]===t){tw.splice(n,1);break}return nw=U(nw,function(e){return t!==e}),ow.activeEditor===t&&(ow.activeEditor=0<nw.length?nw[0]:null),ow.focusedEditor===t&&(ow.focusedEditor=null),e.length!==nw.length}var Xx,Yx=eu.DOM,Gx=Nt.explode,Jx=Nt.each,Qx=Nt.extend,Zx=0,ew=!1,tw=[],nw=[],rw="CSS1Compat"!==document.compatMode,ow=_e(_e({},Ax),{baseURI:null,baseURL:null,defaultSettings:{},documentBaseURL:null,suffix:null,$:Ya,majorVersion:"5",minorVersion:"10.9",releaseDate:"2023-11-15",editors:tw,i18n:lu,activeEditor:null,focusedEditor:null,settings:{},setup:function(){var e,t="",n=nv.getDocumentBaseUrl(document.location);/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,t=r.suffix;else{for(var o,i=document.getElementsByTagName("script"),a=0;a<i.length;a++)if(""!==(o=i[a].src||"")){var u=o.substring(o.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(o)){-1!==u.indexOf(".min")&&(t=".min"),e=o.substring(0,o.lastIndexOf("/"));break}}!e&&document.currentScript&&(-1!==(o=document.currentScript.src).indexOf(".min")&&(t=".min"),e=o.substring(0,o.lastIndexOf("/")))}this.baseURL=new nv(n).toAbsolute(e),this.documentBaseURL=n,this.baseURI=new nv(this.baseURL),this.suffix=t,this.on("AddEditor",R(hd,this)),this.on("RemoveEditor",R(vd,this))},overrideDefaults:function(e){var t=e.base_url;t&&this._setBaseUrl(t);var n=e.suffix;e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;void 0!==r&&ne(r,function(e,t){fu.PluginManager.urls[t]=e})},init:function(r){function u(e){var t=e.id;return t||(t=ue(e,"name").filter(function(e){return!Yx.get(e)}).getOrThunk(Yx.uniqueId),e.setAttribute("id",t)),t}function s(e,t){return t.constructor===RegExp?t.test(e.className):Yx.hasClass(e,t)}var n,c=this,l=Nt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu"," "),f=function(e){n=e},t=function(){function n(e,t,n){var r=new Vx(e,t,c);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()}var o,e,i=0,a=[];Yx.unbind(window,"ready",t),(e=r.onpageload)&&e.apply(c,[]),o=Ya.unique(function(t){var n=[];if(xt.browser.isIE()&&xt.browser.version.major<11)return wy("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(rw)return wy("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."),[];if(t.types)return Jx(t.types,function(e){n=n.concat(Yx.select(e.selector))}),n;if(t.selector)return Yx.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":var e=t.elements||"";0<e.length&&Jx(Gx(e),function(t){var e=Yx.get(t);e?n.push(e):Jx(document.forms,function(e){Jx(e.elements,function(e){e.name===t&&(t="mce_editor_"+Zx++,Yx.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":Jx(Yx.select("textarea"),function(e){t.editor_deselector&&s(e,t.editor_deselector)||t.editor_selector&&!s(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?Jx(r.types,function(t){Nt.each(o,function(e){return!Yx.is(e,t.selector)||(n(u(e),Qx({},r,t),e),!1)})}):(Nt.each(o,function(e){var t;(t=c.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(Kx(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0)}),0===(o=Nt.grep(o,function(e){return!c.get(e.id)})).length?f([]):Jx(o,function(e){var t=e;r.inline&&t.tagName.toLowerCase()in l?wy("Could not initialize inline editor on invalid inline target element",e):n(u(e),r,e)}))};return c.settings=r,Yx.bind(window,"ready",t),new _r(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?nw.slice(0):X(t)?M(nw,function(e){return e.id===t}).getOr(null):N(t)&&nw[t]||null},add:function(e){var n=this;return tw[e.id]===e||(null===n.get(e.id)&&("length"!==e.id&&(tw[e.id]=e),tw.push(e),nw.push(e)),Wx(!0),n.activeEditor=e,n.fire("AddEditor",{editor:e}),Xx||(Xx=function(e){var t=n.fire("BeforeUnload");if(t.returnValue)return e.preventDefault(),e.returnValue=t.returnValue,t.returnValue},window.addEventListener("beforeunload",Xx))),e},createEditor:function(e,t){return this.add(new Vx(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!X(e))return n=e,l(r.get(n.id))?null:(Kx(n)&&r.fire("RemoveEditor",{editor:n}),0===nw.length&&window.removeEventListener("beforeunload",Xx),n.remove(),Wx(0<nw.length),n);Jx(Yx.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=nw.length-1;0<=t;t--)r.remove(nw[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new Vx(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",!1,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){Jx(nw,function(e){e.save()})},addI18n:function(e,t){lu.add(e,t)},translate:function(e){return lu.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e},_setBaseUrl:function(e){this.baseURL=new nv(this.documentBaseURL).toAbsolute(e.replace(/\/+$/,"")),this.baseURI=new nv(this.baseURL)}});function iw(e,t,n){var r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,c=(n||"").split("");return"b"===c[0]&&(o+=s),"r"===c[1]&&(r+=u),"c"===c[0]&&(o+=gw(s/2)),"c"===c[1]&&(r+=gw(u/2)),"b"===c[3]&&(o-=a),"r"===c[4]&&(r-=i),"c"===c[3]&&(o-=gw(a/2)),"c"===c[4]&&(r-=gw(i/2)),uw(r,o,i,a)}function aw(){}ow.setup();function uw(e,t,n,r){return{x:e,y:t,w:n,h:r}}var sw,cw,lw,fw,dw=Math.min,mw=Math.max,gw=Math.round,pw={inflate:function(e,t,n){return uw(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:iw,findBestRelativePosition:function(e,t,n,r){for(var o,i=0;i<r.length;i++)if((o=iw(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n=mw(e.x,t.x),r=mw(e.y,t.y),o=dw(e.x+e.w,t.x+t.w),i=dw(e.y+e.h,t.y+t.h);return o-n<0||i-r<0?null:uw(n,r,o-n,i-r)},clamp:function(e,t,n){var r=e.x,o=e.y,i=e.x+e.w,a=e.y+e.h,u=t.x+t.w,s=t.y+t.h,c=mw(0,t.x-r),l=mw(0,t.y-o),f=mw(0,i-u),d=mw(0,a-s);return r+=c,o+=l,n&&(i+=c,a+=l,r-=f,o-=d),uw(r,o,(i-=f)-r,(a-=d)-o)},create:uw,fromClientRect:function(e){return uw(e.left,e.top,e.width,e.height)}},hw=(sw={},cw={},{load:function(r,o){var i='Script at URL "'+o+'" failed to load',a='Script at URL "'+o+"\" did not call `tinymce.Resource.add('"+r+"', data)` within 1 second";if(void 0!==sw[r])return sw[r];var e=new _r(function(e,t){var n=function(e,t,n){function r(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||(o=!0,null!==i&&(clearTimeout(i),i=null),n.apply(null,e))}}void 0===n&&(n=1e3);var o=!1,i=null,a=r(e),u=r(t);return{start:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||null!==i||(i=setTimeout(function(){return u.apply(null,e)},n))},resolve:a,reject:u}}(e,t);cw[r]=n.resolve,ou.ScriptLoader.loadScript(o,function(){return n.start(a)},function(){return n.reject(i)})});return sw[r]=e},add:function(e,t){void 0!==cw[e]&&(cw[e](t),delete cw[e]),sw[e]=_r.resolve(t)}}),vw=Nt.each,bw=Nt.extend;aw.extend=lw=function(n){function r(){var e,t,n;if(!fw&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)}function t(){return this}var o=this.prototype;fw=!0;var i=new this;return fw=!1,n.Mixins&&(vw(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&vw(n.Methods.split(","),function(e){n[e]=t}),n.Properties&&vw(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return void 0!==e?(this[t]=e,this):this[t]}}),n.Statics&&vw(n.Statics,function(e,t){r[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=bw({},o.Defaults,n.Defaults)),ne(n,function(e,t){var n,r;"function"==typeof e&&o[t]?i[t]=(n=t,r=e,function(){var e=this._super;this._super=o[n];var t=r.apply(this,arguments);return this._super=e,t}):i[t]=e}),r.prototype=i,(r.constructor=r).extend=lw,r};var yw,Cw,xw,ww=Math.min,Sw=Math.max,Nw=Math.round,Ew={serialize:function(e){var t=JSON.stringify(e);return X(t)?t.replace(/[\u0080-\uFFFF]/g,function(e){var t=e.charCodeAt(0).toString(16);return"\\u"+"0000".substring(t.length)+t}):t},parse:function(e){try{return JSON.parse(e)}catch(e){}}},kw={callbacks:{},count:0,send:function(t){var n=this,r=eu.DOM,o=(void 0!==t.count?t:n).count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},_w=_e(_e({},Ax),{send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):Ar.setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",_w.fire("beforeInitialize",{settings:e}),(t=new XMLHttpRequest).overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Nt.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=_w.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();Ar.setTimeout(r,10)}}),Aw=Nt.extend,Rw=(Dw.sendRPC=function(e){return(new Dw).send(e)},Dw.prototype.send=function(e){var n=e.error,r=e.success,o=Aw(this.settings,e);o.success=function(e,t){(e=void 0===(e=Ew.parse(e))?{error:"JSON Parse error."}:e).error?n.call(o.error_scope||o.scope,e.error,t):r.call(o.success_scope||o.scope,e.result)},o.error=function(e,t){n&&n.call(o.error_scope||o.scope,e,t)},o.data=Ew.serialize({id:e.id||"c"+this.count++,method:e.method,params:e.params}),o.content_type="application/json",_w.send(o)},Dw);function Dw(e){this.settings=Aw({},e),this.count=0}try{var Tw,Ow="__storage_test__";(Tw=window.localStorage).setItem(Ow,Ow),Tw.removeItem(Ow)}catch(e){yw={},Cw=[],xw={getItem:function(e){return yw[e]||null},setItem:function(e,t){Cw.push(e),yw[e]=String(t)},key:function(e){return Cw[e]},removeItem:function(t){Cw=Cw.filter(function(e){return e===t}),delete yw[t]},clear:function(){Cw=[],yw={}},length:0},Object.defineProperty(xw,"length",{get:function(){return Cw.length},configurable:!1,enumerable:!1}),Tw=xw}var Bw={geom:{Rect:pw},util:{Promise:_r,Delay:Ar,Tools:Nt,VK:If,URI:nv,Class:aw,EventDispatcher:yx,Observable:Ax,I18n:lu,XHR:_w,JSON:Ew,JSONRequest:Rw,JSONP:kw,LocalStorage:Tw,Color:function(e){function t(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=Sw(0,ww(t,1)),n=Sw(0,ww(n,1)),0!==t){var r=e/60,o=n*t,i=o*(1-Math.abs(r%2-1)),a=n-o;switch(Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=Nw(255*(u+a)),s=Nw(255*(s+a)),c=Nw(255*(c+a))}else u=s=c=Nw(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n}var n={},u=0,s=0,c=0;return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=ww(e/=255,ww(t/=255,n/=255)))===(a=Sw(e,Sw(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:Nw(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:Nw(100*r),v:Nw(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){function e(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+e(u)+e(s)+e(c)},n.parse=t,n},ImageUploader:function(n){var e=rb(),r=sb(n,e);return{upload:function(e,t){return r.upload(e,(t=void 0===t||t)?ub(n):void 0)}}}},dom:{EventUtils:ci,Sizzle:ca,DomQuery:Ya,TreeWalker:Dr,TextSeeker:Au,DOMUtils:eu,ScriptLoader:ou,RangeUtils:Lf,Serializer:dv,StyleSheetLoader:Sr,ControlSelection:Sf,BookmarkManager:Hl,Selection:Fh,Event:ci.Event},html:{Styles:ao,Entities:Zo,Node:jd,Schema:oo,SaxParser:iv,DomParser:cv,Writer:nm,Serializer:rm},Env:xt,AddOnManager:fu,Annotator:zl,Formatter:mb,UndoManager:pb,EditorCommands:cx,WindowManager:Gv,NotificationManager:Ev,EditorObservable:Dx,Shortcuts:Ix,Editor:Vx,FocusManager:Fd,EditorManager:ow,DOM:eu.DOM,ScriptLoader:ou.ScriptLoader,PluginManager:Xv,ThemeManager:Yv,IconManager:Vv,Resource:hw,trim:Nt.trim,isArray:Nt.isArray,is:Nt.is,toArray:Nt.toArray,makeMap:Nt.makeMap,each:Nt.each,map:Nt.map,grep:Nt.grep,inArray:Nt.inArray,extend:Nt.extend,create:Nt.create,walk:Nt.walk,createNS:Nt.createNS,resolve:Nt.resolve,explode:Nt.explode,_addCacheSuffix:Nt._addCacheSuffix,isOpera:xt.opera,isWebKit:xt.webkit,isIE:xt.ie,isGecko:xt.gecko,isMac:xt.mac},Pw=Nt.extend(ow,Bw),Lw=Pw;window.tinymce=Lw,window.tinyMCE=Lw,function(e){if("object"==typeof module)try{module.exports=e}catch(e){}}(Pw)}();js/tinymce/icons/default/icons.min.js000064400000174626151727150430013647 0ustar00tinymce.IconManager.add("default",{icons:{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 012 2 2 2 0 01-2 2 2 2 0 01-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 01-1-1v-5c0-.6-.4-1-1-1a1 1 0 00-1 1v5c0 .6-.4 1-1 1a1 1 0 01-1-1V9H4a1 1 0 110-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 00-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 10-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 001.4-1.4L12 6.6l-7.7 7.7a1 1 0 001.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 110-2h9.2zm4 0h.8a1 1 0 010 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h6.8zm4 0H19a1 1 0 010 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 010-2h4.4zm4 0H19a1 1 0 010 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 010-2h2zm4 0h8a1 1 0 010 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 001.4-1V6a1 1 0 00-1.4-.9l-12 6a1 1 0 000 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 015 18V6a1 1 0 011.4-.9l12 6a1 1 0 010 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 01-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 00-1 1z" fill-rule="nonzero"/></svg>',"border-style":'<svg width="24" height="24"><g fill-rule="evenodd"><rect width="18" height="2" x="3" y="6" rx="1"/><rect width="2.8" height="2" x="3" y="16" rx="1"/><rect width="2.8" height="2" x="6.8" y="16" rx="1"/><rect width="2.8" height="2" x="10.6" y="16" rx="1"/><rect width="2.8" height="2" x="14.4" y="16" rx="1"/><rect width="2.8" height="2" x="18.2" y="16" rx="1"/><rect width="8" height="2" x="3" y="11" rx="1"/><rect width="8" height="2" x="13" y="11" rx="1"/></g></svg>',"border-width":'<svg width="24" height="24"><g fill-rule="evenodd"><rect width="18" height="5" x="3" y="5" rx="1"/><rect width="18" height="3.5" x="3" y="11.5" rx="1"/><rect width="18" height="2" x="3" y="17" rx="1"/></g></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 01-.7-.3A1 1 0 0111 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 01-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3h-1a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 01-.7.3H5a1 1 0 01-.7-.3A1 1 0 014 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 01-.8.3 1 1 0 01-.6-.3l-.8-.7a1 1 0 01-.3-.8c0-.2.1-.5.3-.7a1 1 0 011.4 0zm-10-7l-.7-.8a1 1 0 01-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.8-.3zm10 0a1 1 0 01-.8.3 1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 010 1.4l-.8.8a1 1 0 01-.6.3 1 1 0 01-.8-.3 1 1 0 01-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 013.7 2.4 4 4 0 010 3.2A4 4 0 0112 16a4 4 0 01-3.7-2.4 4 4 0 010-3.2A4 4 0 0112 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 11-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 01-1.4 1.4L13 13.4V20a1 1 0 01-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 110 14.8 7.4 7.4 0 010-14.8zM12 3a9 9 0 100 18 9 9 0 000-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"cell-background-color":'<svg width="24" height="24"><path d="M15.7 2l1.6 1.6-2.7 2.6 5.9 5.8c.7.7.7 1.7 0 2.4l-6.3 6.1a1.7 1.7 0 01-2.4 0l-6.3-6.1c-.7-.7-.7-1.7 0-2.4L15.7 2zM18 12l-4.5-4L9 12h9zM4 16s2 2.4 2 3.8C6 21 5.1 22 4 22s-2-1-2-2.2C2 18.4 4 16 4 16z"/></svg>',"cell-border-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M5 13v5h2v2H5a2 2 0 01-2-2v-5h2zm8-7V4h6a2 2 0 012 2h-8z" opacity=".2"/><path fill-rule="nonzero" d="M13 4v2H5v7H3V6c0-1.1.9-2 2-2h8zm-2.6 14.1l.1-.1.1.1.2.3.2.2.2.2c.4.6.8 1.2.8 1.7 0 .8-.7 1.5-1.5 1.5S9 21.3 9 20.5c0-.5.4-1.1.8-1.7l.2-.2.2-.2.2-.3z"/><path d="M13 11l-2 2H5v-2h6V6h2z"/><path fill-rule="nonzero" d="M18.4 8l1 1-1.8 1.9 4 4c.5.4.5 1.1 0 1.6l-4.3 4.2a1.2 1.2 0 01-1.6 0l-4.4-4.2c-.4-.5-.4-1.2 0-1.7l7-6.8zm1.6 7l-3-3-3 3h6z"/></g></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 01-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 01-1 .7h-.2a.7.7 0 01-.7-1l4-12a1 1 0 012 0l4 12a.7.7 0 01-.8 1h-.2a1 1 0 01-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 01-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 00-.5-.1 1 1 0 00-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 00-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 001.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 00-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 00-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 01-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 01-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 110-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8a1 1 0 010 2h-8a1 1 0 010-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 010-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 011.6 1.2l-8 12a1 1 0 01-1.5.1l-5-5a1 1 0 111.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 010-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 010-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 010-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 010-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 010-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 01-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 01-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 011.5-1.5l3.8 3.9 3.8-3.9a1 1 0 011.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 01-.8 2 2.8 2.8 0 01.8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 01-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 01-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 01.8-2 2.8 2.8 0 01-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 01-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 01-.5-.5V17a3 3 0 001-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0118 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 01-3.7 3 5.7 5.7 0 01-3.2 0A5.9 5.9 0 017.6 18a6.2 6.2 0 01-1.4-2.6 6.7 6.7 0 010-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 012.3-4A20 20 0 0112 4a26.4 26.4 0 013.2 3.4 18.2 18.2 0 012.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 00-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 01-1.3 3 5.3 5.3 0 01-2.3 1.5 4.9 4.9 0 01-2 .1 4.3 4.3 0 002.4.8 4 4 0 002-.6 4 4 0 001.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 000 18 1.5 1.5 0 001.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 005-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3-4a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm5 0a1.5 1.5 0 110-3 1.5 1.5 0 010 3zm3 4a1.5 1.5 0 110-3 1.5 1.5 0 010 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 010 2h-2v2a1 1 0 01-2 0v-2H9a1 1 0 010-2h2V8a1 1 0 012 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 00-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 01-3-3V6a3 3 0 013-3h14a3 3 0 013 3v10a3 3 0 01-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-6 8a6 6 0 006 6V6a6 6 0 00-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 00-2 2v11h2V5h10V3zm1 4a2 2 0 012 2v10a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 01-1-1v-2H7V9H5a1 1 0 110-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',"cut-column":'<svg width="24" height="24"><path fill-rule="evenodd" d="M7.2 4.5c.9 0 1.6.4 2.2 1A3.7 3.7 0 0110.5 8v.5l1 1 4-4 1-.5a3.3 3.3 0 012 0c.4 0 .7.3 1 .5L17 8h4v13h-6V10l-1.5 1.5.5.5v4l-2.5-2.5-1 1v.5c0 .4 0 .8-.3 1.2-.2.5-.4.9-.8 1.2-.6.7-1.3 1-2.2 1-.8.2-1.5 0-2-.6l-.5-.8-.2-1c0-.4 0-.8.3-1.2A3.9 3.9 0 017 12.7c.5-.2 1-.3 1.5-.2l1-1-1-1c-.5 0-1 0-1.5-.2-.5-.1-1-.4-1.4-.9-.4-.3-.6-.7-.8-1.2L4.5 7c0-.4 0-.7.2-1 0-.3.3-.6.5-.8.5-.5 1.2-.8 2-.7zm12.3 5h-3v10h3v-10zM8 13.8h-.3l-.4.2a2.8 2.8 0 00-.7.4v.1a2.8 2.8 0 00-.6.8l-.1.4v.7l.2.5.5.2h.7a2.6 2.6 0 00.8-.3 2.4 2.4 0 00.7-.7 2.5 2.5 0 00.3-.8 1.5 1.5 0 000-.8 1 1 0 00-.2-.4 1 1 0 00-.5-.2H8zm3.5-3.7c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zM7 5.8h-.4a1 1 0 00-.5.3 1 1 0 00-.2.5v.7a2.5 2.5 0 00.3.8l.2.3h.1l.4.4.4.2.4.1h.7L9 9l.2-.4a1.6 1.6 0 000-.8 2.6 2.6 0 00-.3-.8A2.5 2.5 0 007.7 6l-.4-.1H7z"/></svg>',"cut-row":'<svg width="24" height="24"><path fill-rule="evenodd" d="M22 3v5H9l3 3 2-2h4l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8.7.6 1 1.3 1 2.2.2.8 0 1.5-.6 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l2 2V3h14zM8.5 15.3h-.3a2.6 2.6 0 00-.8.4 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3L9 18V18l.4-.4.2-.4.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2h-.5zm7 0H15a1 1 0 00-.4.3 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4a2.8 2.8 0 00.5.7h.1a2.8 2.8 0 00.8.6l.4.1h.7l.5-.2.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3h-.3zM12 11.6c-.4 0-.7.1-1 .4-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4s.7-.1 1-.4c.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4zm8.5-7.1h-11v2h11v-2z"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 01-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 018.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 010-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 010 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 00-.2-.5 1 1 0 00-.4-.2 1.6 1.6 0 00-.8 0 2.6 2.6 0 00-.8.3 2.5 2.5 0 00-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 00.8-.3 2.8 2.8 0 001-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 00-.3-.8 2.4 2.4 0 00-.7-.7 2.5 2.5 0 00-.8-.3 1.5 1.5 0 00-.8 0 1 1 0 00-.4.2 1 1 0 00-.2.5 1.5 1.5 0 000 .7v.4l.3.4.3.4a2.8 2.8 0 00.8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',"duplicate-column":'<svg width="24" height="24"><path d="M17 6v16h-7V6h7zm-2 2h-3v12h3V8zm-2-6v2H8v15H6V2h7z"/></svg>',"duplicate-row":'<svg width="24" height="24"><path d="M22 11v7H6v-7h16zm-2 2H8v3h12v-3zm-1-6v2H4v5H2V7h17z"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 01-2 2h-7a2 2 0 01-2-2V9c0-1.2.9-2 2-2h7a2 2 0 012 2v2z"/><path d="M17 14h1a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1h-1a1 1 0 010-2h1v-1a1 1 0 012 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 00-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 00-2-2H7v2h11v9zM6 17h15a1 1 0 010 2h-1v1a1 1 0 01-2 0v-1H6a2 2 0 01-2-2V7H3a1 1 0 110-2h1V4a1 1 0 112 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0119 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 008 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 00-4 4.5h2.2zm-3.4 0a12 12 0 012.8-4 12 12 0 00-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 010 .8l-5.6 4A.5.5 0 019 16V8a.5.5 0 01.8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 00-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 100 16 8 8 0 000-16zm0 14.5a6.5 6.5 0 110-13 6.5 6.5 0 010 13z" fill-rule="nonzero"/></svg>',export:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M14.4 3L18 7v1h-5V5H7v14h9a1 1 0 012 0c0 1-.8 2-1.9 2H7c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2h7.5z"/><path d="M18.1 12c.5 0 .9.4.9 1 0 .5-.3 1-.8 1h-7.3c-.5 0-.9-.4-.9-1 0-.5.3-1 .8-1h7.3z"/><path d="M16.4 9.2a1 1 0 011.4.2l2.4 3.6-2.4 3.6a1 1 0 01-1.7-1v-.2l1.7-2.4-1.6-2.4a1 1 0 01.2-1.4z"/></g></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 002.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 002-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 00-2 2zm14-2v2h2a2 2 0 00-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 002-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 00-2 2v3h2V6h10v3h2V6a2 2 0 00-2-2zm2 14h-2v2a2 2 0 002-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 00-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',format:'<svg width="24" height="24"><path fill-rule="evenodd" d="M17 5a1 1 0 010 2h-4v11a1 1 0 01-2 0V7H7a1 1 0 110-2h10z"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 110-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 11-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 111.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 110-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 110 1.7H5a.9.9 0 01-.9-.9v-4.4a.9.9 0 111.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 01-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 010 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 01-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 110-4 2 2 0 010 4zM4.5 4h15a.5.5 0 110 1h-15a.5.5 0 010-1zm2-2h11a.5.5 0 110 1h-11a.5.5 0 010-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 00-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 01.6.5l.1.3a8.5 8.5 0 01.3.6l1.9 4.6 2-5.2a1 1 0 011-.6.5.5 0 01.5.6L13 14v2.8a.7.7 0 01-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 00-6 9 6.3 6.3 0 001.4 2l1 1a6.3 6.3 0 003.6 1 6.5 6.5 0 006-9 6.3 6.3 0 00-1.4-2l-1-1a6.3 6.3 0 00-3.6-1zM12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4z"/><path d="M9.6 9.7a.7.7 0 01-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 00-.8.8.8.8 0 01-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 012.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 01-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 100-4 2 2 0 000 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 015.7 2.3A8 8 0 1112 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 001.8-2.9 6.3 6.3 0 00-.1-4.1 5.8 5.8 0 00-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 00-3.9 1.8 6.3 6.3 0 00-1.3 6 6.2 6.2 0 001.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 014 11c0-1 .2-1.9.6-2.7A7 7 0 016.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 015.7 2 7 7 0 011.7 2.3 6 6 0 01.2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 01-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 100-14 7 7 0 000 14zm0 2a9 9 0 110-18 9 9 0 010 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 00-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 01-3.1 1.9 6.1 6.1 0 01-5.5-1.6A5.8 5.8 0 016 14v-.3l.1-1.2A13.9 13.9 0 017.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 00.2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 00-3-4.2L12 6a26.1 26.1 0 00-2.2 2.5l-1-1a20.9 20.9 0 012.9-3.3L12 4l1 .8a22.2 22.2 0 014 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',language:'<svg width="24" height="24"><path d="M12 3a9 9 0 110 18 9 9 0 010-18zm4.3 13.3c-.5 1-1.2 2-2 2.9a7.5 7.5 0 003.2-2.1l-.2-.2a6 6 0 00-1-.6zm-8.6 0c-.5.2-.9.5-1.2.8.9 1 2 1.7 3.2 2a10 10 0 01-2-2.8zm3.6-.8c-.8 0-1.6.1-2.2.3.5 1 1.2 1.9 2.1 2.7zm1.5 0v3c.9-.8 1.6-1.7 2.1-2.7-.6-.2-1.4-.3-2.1-.3zm-6-2.7H4.5c.2 1 .5 2.1 1 3h.3l1.3-1a10 10 0 01-.3-2zm12.7 0h-2.3c0 .7-.1 1.4-.3 2l1.6 1.1c.5-1 .9-2 1-3.1zm-3.8 0h-3V14c1 0 2 .1 2.7.4.2-.5.3-1 .3-1.6zm-4.4 0h-3l.3 1.6c.8-.3 1.7-.4 2.7-.4v-1.3zm-5.5-5c-.7 1-1.1 2.2-1.3 3.5h2.3c0-1 .2-1.8.5-2.6l-1.5-1zm2.9 1.4v.1c-.2.6-.4 1.3-.4 2h3V9.4c-1 0-1.8-.1-2.6-.3zm6.6 0h-.1l-2.4.3v1.8h3l-.5-2.1zm3-1.4l-.3.1-1.3.8c.3.8.5 1.6.5 2.6h2.3a7.5 7.5 0 00-1.3-3.5zm-9 0l2 .2V5.5a9 9 0 00-2 2.2zm3.5-2.3V8c.6 0 1.3 0 1.9-.2a9 9 0 00-2-2.3zm-3-.7h-.1c-1.1.4-2.1 1-3 1.8l1.2.7a10 10 0 011.9-2.5zm4.4 0l.1.1a10 10 0 011.8 2.4l1.1-.7a7.5 7.5 0 00-3-1.8z"/></svg>',"line-height":'<svg width="24" height="24"><path d="M21 5a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zm0 4a1 1 0 01.1 2H13a1 1 0 01-.1-2H21zM7 3.6l3.7 3.7a1 1 0 01-1.3 1.5h-.1L8 7.3v9.2l1.3-1.3a1 1 0 011.3 0h.1c.4.4.4 1 0 1.3v.1L7 20.4l-3.7-3.7a1 1 0 011.3-1.5h.1L6 16.7V7.4L4.7 8.7a1 1 0 01-1.3 0h-.1a1 1 0 010-1.3v-.1L7 3.6z"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2.1 2a2 2 0 102.7 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2-2a2 2 0 10-2.6-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 26a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6zM11 36a2 2 0 100-4 2 2 0 000 4zm0 1a3 3 0 110-6 3 3 0 010 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 00-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 00-.3-.7A1 1 0 0013 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 017.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 011.2-1.6l3 2a1 1 0 010 1.6l-3 2a1 1 0 11-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm12 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2zm-6 0a2 2 0 00-2 2c0 1.1.9 2 2 2a2 2 0 002-2 2 2 0 00-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 00-2 2v14c0 1.1.9 2 2 2h10a2 2 0 002-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 110-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 01-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 010-2zm0-6h8a1 1 0 010 2H6a1 1 0 110-2zm13-1v3.5a.5.5 0 11-1 0V5h-.5a.5.5 0 110-1H19zm-1 8.8l.2.2h1.3a.5.5 0 110 1h-1.6a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2h-1.3a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 010-1h1.2a.3.3 0 100-.6h-1.3a.4.4 0 110-.8h1.3a.3.3 0 000-.6h-1.2a.5.5 0 110-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 110-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 01-.5-.5V5h-.5a.5.5 0 010-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 01-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 00-.2-.2H4.5a.5.5 0 01-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 010-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 110-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 110-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 010-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 11-4.3 16.9l1.5-1.5A7 7 0 1013 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 110-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 010-2zm-5 4h12a1 1 0 010 2H7a1 1 0 010-2zm1.6-3.8a1 1 0 01-1.2 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 011.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 010-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 01-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 01-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',paragraph:'<svg width="24" height="24"><path fill-rule="evenodd" d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z"/></svg>',"paste-column-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h7v2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm8 7v12h-6V8h6zm-1.5 1.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-column-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V18c0 1-.8 2-1.9 2H11v-2h7V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v2H4V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm-2 7v12H4V8h6zM8.5 9.5h-3v9h3v-9zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-after":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V11h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h14c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 11v5H8v-5h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-row-before":'<svg width="24" height="24"><path fill-rule="evenodd" d="M12 1a3 3 0 012.8 2H18c1 0 2 .8 2 1.9V7h-2V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h12v-4h2v4c0 1-.8 2-1.9 2H6c-1 0-2-.8-2-1.9V5c0-1 .8-2 1.9-2H9.2A3 3 0 0112 1zm10 7v5H8V8h14zm-1.5 1.5h-11v2h11v-2zM12 3a1 1 0 100 2 1 1 0 000-2z"/></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 01-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 01-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0112 1a3 3 0 012.8 2H18a2 2 0 012 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 00-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 010-3L14 3l1 1-7.3 7.3a1 1 0 000 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 01-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><path d="M12 4c.5 0 1 .4 1 .9V11h6a1 1 0 01.1 2H13v6a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H11V5c0-.6.4-1 1-1z"/></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 01-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 01-1.4 0l-1.5-1.2a6.2 6.2 0 01-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 01-1-.9l-.2-1.9a5.8 5.8 0 01-1.5-.6l-1.5 1.2a1 1 0 01-1.4 0l-.7-.7a1 1 0 010-1.4l1.2-1.5a6.2 6.2 0 01-.6-1.5l-1.9-.2a1 1 0 01-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 01.6-1.5L5.2 7.3a1 1 0 010-1.4l.7-.7a1 1 0 011.4 0l1.5 1.2a6.2 6.2 0 011.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 011.5.6l1.5-1.2a1 1 0 011.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 01.6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 100-6 3 3 0 000 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 002.1-2.8 15.7 15.7 0 00-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 00-6.7 3.2A16.2 16.2 0 003.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 012.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 01-2.8-3.7 1 1 0 010-1zm12-3.3a2 2 0 102.7 2.6 4 4 0 11-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 00-3 3v6h2v3h14v-3h2v-6a3 3 0 00-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 00-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 00.8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 11-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 111.4-1.4l5 5a1 1 0 010 1.4l-5 5a1 1 0 01-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 011-1l5 .4a1 1 0 11-.2 2l-2.2-.2a7.8 7.8 0 008.4.2 7.5 7.5 0 003.5-6.4 1 1 0 112 0 9.5 9.5 0 01-4.5 8 9.9 9.9 0 01-10.2 0l.4 1.4a1 1 0 11-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 00-9.5-1 7.5 7.5 0 00-3.6 7 1 1 0 01-2 0 9.5 9.5 0 014.5-8.6 10 10 0 0110.9.3l-.3-1a1 1 0 012-.5l1.1 4.8a1 1 0 01-1 1.2l-5-.4a1 1 0 01-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 010 .2l-2.6 10a1 1 0 01-1 .8h-.2a.8.8 0 01-.8-1l2.6-10H8a1 1 0 110-2h9a1 1 0 010 2h-3.8zM5 18h7a1 1 0 010 2H5a1 1 0 010-2zm13 1.5L16.5 18 15 19.5a.7.7 0 01-1-1l1.5-1.5-1.5-1.5a.7.7 0 011-1l1.5 1.5 1.5-1.5a.7.7 0 011 1L17.5 17l1.5 1.5a.7.7 0 01-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 010 2h-1v9a3 3 0 01-3 3H9a3 3 0 01-3-3V9H5a1 1 0 110-2h3V6a3 3 0 013-3h2a3 3 0 013 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 00-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 012 0v4a1 1 0 01-2 0v-4zm4 0a1 1 0 012 0v4a1 1 0 01-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 119 2l-7 7A.5.5 0 111 8l7-7zM8.1 5.1A.5.5 0 119 6l-3 3A.5.5 0 115 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 01-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-6a1 1 0 01-.7-.3 1 1 0 01-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 01-.7.3 1 1 0 01-.7-.3A1 1 0 014 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 010 2H3a1 1 0 01-1-1V5a1 1 0 112 0v3l2.5-2.4a9.2 9.2 0 0110.8-1.5A9 9 0 0113.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 111.3-1.5 7.2 7.2 0 0011.6-3.7 7 7 0 00-3.5-7.7A7.2 7.2 0 008 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 012 0v6c0 .6-.4 1-1 1h-6a1 1 0 010-2h4.3L16 7A7.2 7.2 0 007.7 6a7 7 0 003 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 011.4 1.5A9.2 9.2 0 012.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 014.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L8 5zm12 11.2a1 1 0 11-1 1.6l-3-2a1 1 0 010-1.6l3-2a1 1 0 111 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 012 2v2a2 2 0 01-2 2H5a2 2 0 01-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 10-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 10-1.4-1.4L13 11.6V4a1 1 0 00-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 00-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 00-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 002-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 00-1 1L9.6 17 18 8.6a.7.7 0 000-1 .7.7 0 00-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V8H5a1 1 0 110-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V13H5a1 1 0 010-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6V18H5a1 1 0 010-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 010-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 00-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 01-.7-.3 1 1 0 01-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 01-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 017 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 010 2H5a1 1 0 010-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 00-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 01-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-caption":'<svg width="24" height="24"><g fill-rule="nonzero"><rect width="12" height="2" x="3" y="4" rx="1"/><path d="M19 8a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2v-8c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></g></svg>',"table-cell-classes":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M13 4v9H3V6c0-1.1.9-2 2-2h8zm-2 2H5v5h6V6z"/><path fill-rule="nonzero" d="M13 4h6a2 2 0 012 2v7h-8v-2h6V6h-6V4z" opacity=".2"/><path d="M18 20l-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3 .2-2.3 2 .7 3z"/><path fill-rule="nonzero" d="M3 13v5c0 1.1.9 2 2 2h8v-7h-2v5H5v-5H3z" opacity=".2"/></g></svg>',"table-cell-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8 0h-6v5h6v-5zm-8-7H5v5h6V6z"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z" opacity=".2"/></g></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v12h14V6z" opacity=".2"/><path d="M13 6v5h6v2h-6v5h-2v-5H5v-2h6V6h2z"/></g></svg>',"table-classes":'<svg width="24" height="24"><g fill-rule="evenodd"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v7h-8v7H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 9H5v5h6v-5zm8-7h-6v5h6V6zm-8 0H5v5h6V6z"/><path d="M18 20l-2.6 1.6.7-3-2.4-2 3.1-.2 1.2-2.9 1.2 2.9 3 .2-2.3 2 .7 3z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-4 4h-2V6h-2v2H9V6H5v12h4v-2h2v2h2v-2h2v2h4V6h-4v2zm.3.5l1 1.2-3 2.3 3 2.3-1 1.2L12 13l-3.3 2.6-1-1.2 3-2.3-3-2.3 1-1.2L12 11l3.3-2.5z"/></svg>',"table-delete-row":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 2H5v3h2.5v2H5v2h2.5v2H5v3h14v-3h-2.5v-2H19v-2h-2.5V9H19V6zm-4.7 1.8l1.2 1L13 12l2.6 3.3-1.2 1-2.3-3-2.3 3-1.2-1L11 12 8.5 8.7l1.2-1 2.3 3 2.3-3z"/></svg>',"table-delete-table":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 6v12h14V6H5z"/><path d="M14.4 8.6l1 1-2.3 2.4 2.3 2.4-1 1-2.4-2.3-2.4 2.3-1-1 2.3-2.4-2.3-2.4 1-1 2.4 2.3z"/></g></svg>',"table-insert-column-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M20 4c.6 0 1 .4 1 1v2a1 1 0 01-2 0V6h-8v12h8v-1a1 1 0 012 0v2c0 .5-.4 1-.9 1H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h15zM9 13H5v5h4v-5zm7-5c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H17v2a1 1 0 01-2 .1V13h-2a1 1 0 01-.1-2H15V9c0-.6.4-1 1-1zM9 6H5v5h4V6z"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H4a1 1 0 01-1-1v-2a1 1 0 012 0v1h8V6H5v1a1 1 0 11-2 0V5c0-.6.4-1 1-1h15zm0 9h-4v5h4v-5zM8 8c.5 0 1 .4 1 .9V11h2a1 1 0 01.1 2H9v2a1 1 0 01-2 .1V13H5a1 1 0 01-.1-2H7V9c0-.6.4-1 1-1zm11-2h-4v5h4V6z"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4a1 1 0 110 2H5v6h14V6h-1a1 1 0 010-2h2c.6 0 1 .4 1 1v13a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-.6.4-1 1-1h2zm5 10H5v4h6v-4zm8 0h-6v4h6v-4zM12 3c.5 0 1 .4 1 .9V6h2a1 1 0 010 2h-2v2a1 1 0 01-2 .1V8H9a1 1 0 010-2h2V4c0-.6.4-1 1-1z"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path fill-rule="nonzero" d="M12 13c.5 0 1 .4 1 .9V16h2a1 1 0 01.1 2H13v2a1 1 0 01-2 .1V18H9a1 1 0 01-.1-2H11v-2c0-.6.4-1 1-1zm6 7a1 1 0 010-2h1v-6H5v6h1a1 1 0 010 2H4a1 1 0 01-1-1V6c0-1.1.9-2 2-2h14a2 2 0 012 2v13c0 .5-.4 1-.9 1H18zM11 6H5v4h6V6zm8 0h-6v4h6V6z"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm0 9h-4v5h4v-5zm-6 0H9v5h4v-5zm0-7H9v5h4V6zm6 0h-4v5h4V6z"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15.5V18h3v-2.5H5zm14-5h-9V18h9v-7.5zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6zm-8 7.5h3v-3H5v3z"/></svg>',"table-row-numbering-rtl":'<svg width="24" height="24"><path d="M6 4a2 2 0 00-2 2v13c0 1.1.9 2 2 2h12a2 2 0 002-2V6a2 2 0 00-2-2H6zm0 12h8v3H6v-3zm11 0c.6 0 1 .4 1 1v1a1 1 0 01-2 0v-1c0-.6.4-1 1-1zM6 11h8v3H6v-3zm11 0c.6 0 1 .4 1 1v1a1 1 0 01-2 0v-1c0-.6.4-1 1-1zM6 6h8v3H6V6zm11 0c.6 0 1 .4 1 1v1a1 1 0 11-2 0V7c0-.6.4-1 1-1z"/></svg>',"table-row-numbering":'<svg width="24" height="24"><path d="M18 4a2 2 0 012 2v13a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2h12zm0 12h-8v3h8v-3zM7 16a1 1 0 00-1 1v1a1 1 0 002 0v-1c0-.6-.4-1-1-1zm11-5h-8v3h8v-3zM7 11a1 1 0 00-1 1v1a1 1 0 002 0v-1c0-.6-.4-1-1-1zm11-5h-8v3h8V6zM7 6a1 1 0 00-1 1v1a1 1 0 102 0V7c0-.6-.4-1-1-1z"/></svg>',"table-row-properties":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 15v3h6v-3H5zm14 0h-6v3h6v-3zm0-9h-6v3h6V6zM5 9h6V6H5v3z"/></svg>',"table-split-cells":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM8 15.5H5V18h3v-2.5zm11-5h-9V18h9v-7.5zm-2.5 1l1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2zm-8.5-1H5v3h3v-3zM19 6h-4v2.5h4V6zM8 6H5v2.5h3V6zm5 0h-3v2.5h3V6z"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zm-8 11H5v3h6v-3zm8 0h-6v3h6v-3zm0-5h-6v3h6v-3zM5 13h6v-3H5v3z"/></svg>',table:'<svg width="24" height="24"><path fill-rule="nonzero" d="M19 4a2 2 0 012 2v12a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h14zM5 14v4h6v-4H5zm14 0h-6v4h6v-4zm0-6h-6v4h6V8zM5 12h6V8H5v4z"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 116 0v4h4a2 2 0 012 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 10-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 111 0V6H15v1.6a8 8 0 11-6 0zm-2.6 5.3a.5.5 0 00.3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 013.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 00-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 01-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 01-.5.6h-.8a.5.5 0 01-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 00.5.6h1.6a.5.5 0 00.5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 110-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 110-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 010-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 010-1l3.1-3A12.4 12.4 0 016.7 9H8a10.1 10.1 0 001.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 110-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 01-1 2.4 13.5 13.5 0 01-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 01-.4.7 1 1 0 01-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 01-1 .7.5.5 0 01-.4-.7l2.7-7.4a1 1 0 012 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 01-.4 1.8l-1 1.4a5.3 5.3 0 01-5.5 1 5 5 0 01-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 01-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 002.2.8 3.4 3.4 0 002.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 010-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 01-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 11-1.4 1.4l-5-5a1 1 0 010-1.4l5-5a1 1 0 011.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 011.4 1.4l-2 2a2 2 0 102.6 2.8l4.8-4.8a1 1 0 000-1.4 1 1 0 111.4-1.3 2.9 2.9 0 010 4L9.6 20a3.9 3.9 0 01-5.5-5.5l2-2zm11.6-.6a1 1 0 01-1.4-1.4l2.1-2a2 2 0 10-2.7-2.8L11 10.3a1 1 0 000 1.4A1 1 0 119.6 13a2.9 2.9 0 010-4L14.4 4a3.9 3.9 0 015.5 5.5l-2 2zM7.6 6.3a.8.8 0 01-1 1.1L3.3 4.2a.7.7 0 111-1l3.2 3.1zM5.1 8.6a.8.8 0 010 1.5H3a.8.8 0 010-1.5H5zm5-3.5a.8.8 0 01-1.5 0V3a.8.8 0 011.5 0V5zm6 11.8a.8.8 0 011-1l3.2 3.2a.8.8 0 01-1 1L16 17zm-2.2 2a.8.8 0 011.5 0V21a.8.8 0 01-1.5 0V19zm5-3.5a.7.7 0 110-1.5H21a.8.8 0 010 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 00-.3-.7A1 1 0 0016 7h-2a1 1 0 00-.7.3 1 1 0 00-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 01-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 010-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 00-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 012 0v3c0 .6-.4 1-1 1H5a1 1 0 01-1-1v-3a1 1 0 012 0v2h12zM11 6.4L8.7 8.7a1 1 0 01-1.4-1.4l4-4a1 1 0 011.4 0l4 4a1 1 0 11-1.4 1.4L13 6.4V16a1 1 0 01-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm-8.7-5.3a11 11 0 0017.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',"vertical-align":'<svg width="24" height="24"><g fill-rule="nonzero"><rect width="18" height="2" x="3" y="11" rx="1"/><path d="M12 2c.6 0 1 .4 1 1v4l2-1.3a1 1 0 011.2 1.5l-.1.1-4.1 3-4-3a1 1 0 011-1.7l2 1.5V3c0-.6.4-1 1-1zm0 11.8l4 2.9a1 1 0 01-1 1.7l-2-1.5V21c0 .5-.4 1-.9 1H12a1 1 0 01-1-1v-4l-2 1.3a1 1 0 01-1.2-.1l-.1-.1a1 1 0 01.1-1.3l.1-.1 4.1-3z"/></g></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 01-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 01-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 010 2v7a1 1 0 01-2 0V9h-1v7a1 1 0 01-2 0v-4a2.5 2.5 0 01-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 012 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 010 2h-1v11a1 1 0 01-2 0V7h-2v11a1 1 0 01-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 016.8 10a3.3 3.3 0 010-2.8 3.4 3.4 0 011.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 00-.3-.7 1 1 0 00-.7-.3 1 1 0 00-.7.3 1 1 0 00-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-1-9a1 1 0 012 0v6a1 1 0 01-2 0V8zm-2 4a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 111.4-1.4l4.3 4.4a1 1 0 01-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 100-12 6 6 0 000 12zm-3-5a1 1 0 010-2h6a1 1 0 010 2H8z" fill-rule="nonzero"/></svg>'}});js/tinymce/themes/silver/theme.min.js000064400001473346151727150430013672 0ustar00/**
 * Copyright (c) Tiny Technologies, Inc. All rights reserved.
 * Licensed under the LGPL or a commercial license.
 * For LGPL see License.txt in the project root for license information.
 * For commercial licenses see https://www.tiny.cloud/
 *
 * Version: 5.10.9 (2023-11-15)
 */
!function(){"use strict";function t(o){return function(t){return n=typeof(e=t),(null===e?"null":"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n)===o;var e,n}}function e(e){return function(t){return typeof t===e}}function n(e){return function(t){return e===t}}function g(t){return null==t}function f(t,e){if(c(t)){for(var n=0,o=t.length;n<o;++n)if(!e(t[n]))return;return 1}}function st(){}function r(n,o){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n(o.apply(null,t))}}function rt(t){return function(){return t}}function h(t){return t}function v(t,e){return t===e}var y=t("string"),x=t("object"),c=t("array"),b=n(null),w=e("boolean"),E=n(void 0),k=function(t){return!g(t)},S=e("function"),u=e("number");function C(o){for(var r=[],t=1;t<arguments.length;t++)r[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=r.concat(t);return o.apply(null,n)}}function O(e){return function(t){return!e(t)}}function _(t){return function(){throw new Error(t)}}var T=rt(!1),D=rt(!0),o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),lt=function(){return(lt=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)};function A(t,e){var n={};for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]]);return n}function V(t,e,n){if(n||2===arguments.length)for(var o,r=0,i=e.length;r<i;r++)!o&&r in e||((o=o||Array.prototype.slice.call(e,0,r))[r]=e[r]);return t.concat(o||Array.prototype.slice.call(e))}function i(){return a}var a={fold:function(t,e){return t()},isSome:T,isNone:D,getOr:h,getOrThunk:s,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:rt(null),getOrUndefined:rt(void 0),or:h,orThunk:s,map:i,each:st,bind:i,exists:T,forall:D,filter:function(){return a},toArray:function(){return[]},toString:rt("none()")};function s(t){return t()}function l(t,e){return yt.call(t,e)}function d(t,e){for(var n=0,o=t.length;n<o;n++)if(e(t[n],n))return!0;return!1}function m(t,e){for(var n=[],o=0;o<t;o++)n.push(e(o));return n}function p(t,e){for(var n=[],o=0;o<t.length;o+=e){var r=bt.call(t,o,o+e);n.push(r)}return n}function B(t,e){for(var n=t.length,o=new Array(n),r=0;r<n;r++){var i=t[r];o[r]=e(i,r)}return o}function M(t,e){for(var n=[],o=[],r=0,i=t.length;r<i;r++){var u=t[r];(e(u,r)?n:o).push(u)}return{pass:n,fail:o}}function F(t,e){for(var n=[],o=0,r=t.length;o<r;o++){var i=t[o];e(i,o)&&n.push(i)}return n}function I(t,o,r){return function(t){for(var e,n=t.length-1;0<=n;n--)e=t[n],r=o(r,e,n)}(t),r}function R(t,n,o){return St(t,function(t,e){o=n(o,t,e)}),o}function N(t,e){return function(t,e,n){for(var o=0,r=t.length;o<r;o++){var i=t[o];if(e(i,o))return vt.some(i);if(n(i,o))break}return vt.none()}(t,e,T)}function P(t,e){for(var n=0,o=t.length;n<o;n++)if(e(t[n],n))return vt.some(n);return vt.none()}function ft(t){for(var e=[],n=0,o=t.length;n<o;++n){if(!c(t[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+t);xt.apply(e,t[n])}return e}function H(t,e){return ft(B(t,e))}function L(t,e){for(var n=0,o=t.length;n<o;++n)if(!0!==e(t[n],n))return!1;return!0}function z(t){var e=bt.call(t,0);return e.reverse(),e}function U(t,e){return F(t,function(t){return!wt(e,t)})}function j(t,e){for(var n={},o=0,r=t.length;o<r;o++){var i=t[o];n[String(i)]=e(i,o)}return n}function W(t){return[t]}function G(t,e){var n=bt.call(t,0);return n.sort(e),n}function X(t,e){return 0<=e&&e<t.length?vt.some(t[e]):vt.none()}function Y(t){return X(t,0)}function q(t){return X(t,t.length-1)}function K(t,e){for(var n=0;n<t.length;n++){var o=e(t[n],n);if(o.isSome())return o}return vt.none()}function J(t,e){for(var n=Ct(t),o=0,r=n.length;o<r;o++){var i=n[o];e(t[i],i)}}function dt(t,n){return _t(t,function(t,e){return{k:e,v:n(t,e)}})}function $(t,n){var o=[];return J(t,function(t,e){o.push(n(t,e))}),o}function Q(t,e){for(var n=Ct(t),o=0,r=n.length;o<r;o++){var i=n[o],u=t[i];if(e(u,i,t))return vt.some(u)}return vt.none()}function Z(t){return $(t,h)}function tt(t,e){return Tt(t,e)?vt.from(t[e]):vt.none()}function et(t,e){return Tt(t,e)&&void 0!==t[e]&&null!==t[e]}function mt(t,e,n){return void 0===n&&(n=v),t.exists(function(t){return n(t,e)})}function nt(t){for(var e=[],n=function(t){e.push(t)},o=0;o<t.length;o++)t[o].each(n);return e}function ot(t,e){return t?vt.some(e):vt.none()}function it(t,e,n){return""===e||t.length>=e.length&&t.substr(n,n+e.length)===e}function ut(t,e){return-1!==t.indexOf(e)}function at(t){return 0<t.length}function ct(t){return void 0!==t.style&&S(t.style.getPropertyValue)}function gt(t){if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}}var pt,ht=function(n){function t(){return r}function e(t){return t(n)}var o=rt(n),r={fold:function(t,e){return e(n)},isSome:D,isNone:T,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:t,orThunk:t,map:function(t){return ht(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?r:a},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return r},vt={some:ht,none:i,from:function(t){return null==t?a:ht(t)}},bt=Array.prototype.slice,yt=Array.prototype.indexOf,xt=Array.prototype.push,wt=function(t,e){return-1<l(t,e)},St=function(t,e){for(var n=0,o=t.length;n<o;n++)e(t[n],n)},kt=S(Array.from)?Array.from:function(t){return bt.call(t)},Ct=Object.keys,Ot=Object.hasOwnProperty,_t=function(t,o){var r={};return J(t,function(t,e){var n=o(t,e);r[n.k]=n.v}),r},Tt=function(t,e){return Ot.call(t,e)},Et=function(t,e,n){return t.isSome()&&e.isSome()?vt.some(n(t.getOrDie(),e.getOrDie())):vt.none()},Dt=function(t,e){return it(t,e,0)},At=function(t,e){return it(t,e,t.length-e.length)},Bt=(pt=/^\s+|\s+$/g,function(t){return t.replace(pt,"")}),Mt={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||1<n.childNodes.length)throw console.error("HTML does not have a single root node",t),new Error("HTML must have a single root node");return gt(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);return gt(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return gt(n)},fromDom:gt,fromPoint:function(t,e,n){return vt.from(t.dom.elementFromPoint(e,n)).map(gt)}};function Ft(t){return t.dom.nodeName.toLowerCase()}function It(e){return function(t){return t.dom.nodeType===e}}function Rt(n){var o,r=!1;return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return r||(r=!0,o=n.apply(null,t)),o}}function Nt(t,e){var n=String(e).toLowerCase();return N(t,function(t){return t.search(n)})}function Pt(e){return function(t){return ut(t,e)}}function Vt(t){return window.matchMedia(t).matches}function Ht(t,e){var n=t.dom;if(1!==n.nodeType)return!1;var o=n;if(void 0!==o.matches)return o.matches(e);if(void 0!==o.msMatchesSelector)return o.msMatchesSelector(e);if(void 0!==o.webkitMatchesSelector)return o.webkitMatchesSelector(e);if(void 0!==o.mozMatchesSelector)return o.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function Lt(t){return 1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType||0===t.childElementCount}function zt(t,e){return t.dom===e.dom}function Ut(t,e){return ln().browser.isIE()?(n=t.dom,o=e.dom,r=Node.DOCUMENT_POSITION_CONTAINED_BY,0!=(n.compareDocumentPosition(o)&r)):(i=t.dom)!==(u=e.dom)&&i.contains(u);var n,o,r,i,u}function jt(t){return Mt.fromDom(t.dom.ownerDocument)}function Wt(t){return Ye(t)?t:jt(t)}function Gt(t){return Mt.fromDom(Wt(t).dom.documentElement)}function Xt(t){return Mt.fromDom(Wt(t).dom.defaultView)}function Yt(t){return vt.from(t.dom.parentNode).map(Mt.fromDom)}function qt(t){return vt.from(t.dom.offsetParent).map(Mt.fromDom)}function Kt(t){return B(t.dom.childNodes,Mt.fromDom)}function Jt(t,e){var n=t.dom.childNodes;return vt.from(n[e]).map(Mt.fromDom)}function $t(t,e){return{element:t,offset:e}}function Qt(t,e){var n=Kt(t);return 0<n.length&&e<n.length?$t(n[e],0):$t(t,e)}function Zt(t){return qe(t)&&k(t.dom.host)}function te(t){return Zt(t)?t:Mt.fromDom(Wt(t).dom.body)}function ee(t){return Mt.fromDom(t.dom.host)}function ne(t,e,n){if(!(y(n)||w(n)||u(n)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",n,":: Element ",t),new Error("Attribute value was not simple");t.setAttribute(e,n+"")}function oe(t,e,n){ne(t.dom,e,n)}function re(t,e){var n=t.dom;J(e,function(t,e){ne(n,e,t)})}function ie(t,e){var n=t.dom.getAttribute(e);return null===n?void 0:n}function ue(t,e){return vt.from(ie(t,e))}function ae(t,e){var n=t.dom;return!(!n||!n.hasAttribute)&&n.hasAttribute(e)}function ce(t,e){t.dom.removeAttribute(e)}function se(t,e,n){if(!y(n))throw console.error("Invalid call to CSS.set. Property ",e,":: Value ",n,":: Element ",t),new Error("CSS value must be a string: "+n);ct(t)&&t.style.setProperty(e,n)}function le(t,e){ct(t)&&t.style.removeProperty(e)}function fe(t,e,n){se(t.dom,e,n)}function de(t,e){var n=t.dom;J(e,function(t,e){se(n,e,t)})}function me(t,e){var n=t.dom;J(e,function(t,e){t.fold(function(){le(n,e)},function(t){se(n,e,t)})})}function ge(t,e){var n=t.dom,o=window.getComputedStyle(n).getPropertyValue(e);return""!==o||vn(t)?o:xn(n,e)}function pe(t,e){var n=t.dom,o=xn(n,e);return vt.from(o).filter(function(t){return 0<t.length})}function he(t,e,n){var o=Mt.fromTag(t);return fe(o,e,n),pe(o,e).isSome()}function ve(t,e){le(t.dom,e),mt(ue(t,"style").map(Bt),"")&&ce(t,"style")}function be(t){return t.dom.offsetWidth}function ye(o,r){function t(t){var e=r(t);if(e<=0||null===e){var n=ge(t,o);return parseFloat(n)||0}return e}function i(r,t){return R(t,function(t,e){var n=ge(r,e),o=void 0===n?0:parseInt(n,10);return isNaN(o)?t:t+o},0)}return{set:function(t,e){if(!u(e)&&!e.match(/^[0-9]+$/))throw new Error(o+".set accepts only positive integer values. Value was "+e);var n=t.dom;ct(n)&&(n.style[o]=e+"px")},get:t,getOuter:t,aggregate:i,max:function(t,e,n){var o=i(t,n);return o<e?e-o:0}}}function xe(t){return wn.get(t)}function we(t){return wn.getOuter(t)}function Se(t,e){return void 0!==t?t:void 0!==e?e:0}function ke(t){var e=t.dom.ownerDocument,n=e.body,o=e.defaultView,r=e.documentElement;if(n===t.dom)return kn(n.offsetLeft,n.offsetTop);var i=Se(null==o?void 0:o.pageYOffset,r.scrollTop),u=Se(null==o?void 0:o.pageXOffset,r.scrollLeft),a=Se(r.clientTop,n.clientTop),c=Se(r.clientLeft,n.clientLeft);return Cn(t).translate(u-c,i-a)}function Ce(t){return On.get(t)}function Oe(t){return On.getOuter(t)}function _e(t){function e(){return t.stopPropagation()}function n(){return t.preventDefault()}var o=r(n,e);return{target:Mt.fromDom(function(t){if(mn()&&k(t.target)){var e=Mt.fromDom(t.target);if(Ge(e)&&hn(e)&&t.composed&&t.composedPath){var n=t.composedPath();if(n)return Y(n)}}return vt.from(t.target)}(t).getOr(t.target)),x:t.clientX,y:t.clientY,stop:e,prevent:n,kill:o,raw:t}}function Te(t,e,n,o,r){var i,u,a=(i=n,u=o,function(t){i(t)&&u(_e(t))});return t.dom.addEventListener(e,a,r),{unbind:C(_n,t,e,a,r)}}function Ee(e,n){Yt(e).each(function(t){t.dom.insertBefore(n.dom,e.dom)})}function De(t,e){vt.from(t.dom.nextSibling).map(Mt.fromDom).fold(function(){Yt(t).each(function(t){Tn(t,e)})},function(t){Ee(t,e)})}function Ae(e,n){Jt(e,0).fold(function(){Tn(e,n)},function(t){e.dom.insertBefore(n.dom,t.dom)})}function Be(e,t){St(t,function(t){Tn(e,t)})}function Me(t){t.dom.textContent="",St(Kt(t),function(t){En(t)})}function Fe(t){var e,n=Kt(t);0<n.length&&(e=t,St(n,function(t){Ee(e,t)})),En(t)}function Ie(t){var e=void 0!==t?t.dom:document,n=e.body.scrollLeft||e.documentElement.scrollLeft,o=e.body.scrollTop||e.documentElement.scrollTop;return kn(n,o)}function Re(t,e,n){var o=(void 0!==n?n.dom:document).defaultView;o&&o.scrollTo(t,e)}function Ne(t,e,n,o){return{x:t,y:e,width:n,height:o,right:t+n,bottom:e+o}}function Pe(t){var o=void 0===t?window:t,e=o.document,r=Ie(Mt.fromDom(e)),n=void 0===o?window:o;return(ln().browser.isFirefox()?vt.none():vt.from(n.visualViewport)).fold(function(){var t=o.document.documentElement,e=t.clientWidth,n=t.clientHeight;return Ne(r.left,r.top,e,n)},function(t){return Ne(Math.max(t.pageLeft,r.left),Math.max(t.pageTop,r.top),t.width,t.height)})}function Ve(o){var t,r=Ie(Mt.fromDom(document)),e=(t=An).owner(o),n=Dn(t,e);return vt.some(n).fold(C(ke,o),function(t){var e=Cn(o),n=I(t,function(t,e){var n=Cn(e);return{left:t.left+n.left,top:t.top+n.top}},{left:0,top:0});return kn(n.left+e.left+r.left,n.top+e.top+r.top)})}function He(t){var e=Ve(t),n=Oe(t),o=we(t);return Bn(e.left,e.top,n,o)}"undefined"!=typeof window||Function("return this;")();function Le(){return Ke(0,0)}function ze(t){function e(t){return function(){return n===t}}var n=t.current,o=t.version;return{current:n,version:o,isEdge:e("Edge"),isChrome:e("Chrome"),isIE:e("IE"),isOpera:e("Opera"),isFirefox:e(Ze),isSafari:e("Safari")}}function Ue(t){function e(t){return function(){return n===t}}var n=t.current,o=t.version;return{current:n,version:o,isWindows:e(nn),isiOS:e("iOS"),isAndroid:e(on),isOSX:e("OSX"),isLinux:e("Linux"),isSolaris:e(rn),isFreeBSD:e(un),isChromeOS:e(an)}}var je,We,Ge=It(1),Xe=It(3),Ye=It(9),qe=It(11),Ke=function(t,e){return{major:t,minor:e}},Je={nu:Ke,detect:function(t,e){var n,o,r=String(e).toLowerCase();return 0===t.length?Le():(o=function(t,e){for(var n=0;n<t.length;n++){var o=t[n];if(o.test(e))return o}}(t,n=r))?Ke(i(1),i(2)):{major:0,minor:0};function i(t){return Number(n.replace(o,"$"+t))}},unknown:Le},$e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Qe={browsers:rt([{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return ut(t,"edge/")&&ut(t,"chrome")&&ut(t,"safari")&&ut(t,"applewebkit")}},{name:"Chrome",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,$e],search:function(t){return ut(t,"chrome")&&!ut(t,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return ut(t,"msie")||ut(t,"trident")}},{name:"Opera",versionRegexes:[$e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Pt("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Pt("firefox")},{name:"Safari",versionRegexes:[$e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(ut(t,"safari")||ut(t,"mobile/"))&&ut(t,"applewebkit")}}]),oses:rt([{name:"Windows",search:Pt("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return ut(t,"iphone")||ut(t,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Pt("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Pt("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Pt("linux"),versionRegexes:[]},{name:"Solaris",search:Pt("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Pt("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:Pt("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}])},Ze="Firefox",tn=function(){return ze({current:void 0,version:Je.unknown()})},en=ze,nn=(rt("Edge"),rt("Chrome"),rt("IE"),rt("Opera"),rt(Ze),rt("Safari"),"Windows"),on="Android",rn="Solaris",un="FreeBSD",an="ChromeOS",cn=function(){return Ue({current:void 0,version:Je.unknown()})},sn=Ue,ln=(rt(nn),rt("iOS"),rt(on),rt("Linux"),rt("OSX"),rt(rn),rt(un),rt(an),Rt(function(){return t=navigator.userAgent,e=vt.from(navigator.userAgentData),n=Vt,p=Qe.browsers(),h=Qe.oses(),v=e.bind(function(t){return o=p,K(t.brands,function(e){var n=e.brand.toLowerCase();return N(o,function(t){var e;return n===(null===(e=t.brand)||void 0===e?void 0:e.toLowerCase())}).map(function(t){return{current:t.name,version:Je.nu(parseInt(e.version,10),0)}})});var o}).orThunk(function(){return Nt(p,n=t).map(function(t){var e=Je.detect(t.versionRegexes,n);return{current:t.name,version:e}});var n}).fold(tn,en),b=Nt(h,o=t).map(function(t){var e=Je.detect(t.versionRegexes,o);return{current:t.name,version:e}}).fold(cn,sn),{browser:v,os:b,deviceType:(i=v,u=t,a=n,c=(r=b).isiOS()&&!0===/ipad/i.test(u),s=r.isiOS()&&!c,f=(l=r.isiOS()||r.isAndroid())||a("(pointer:coarse)"),d=c||!s&&l&&a("(min-device-width:768px)"),m=s||l&&!d,g=i.isSafari()&&r.isiOS()&&!1===/safari/i.test(u),{isiPad:rt(c),isiPhone:rt(s),isTablet:rt(d),isPhone:rt(m),isTouch:rt(f),isAndroid:r.isAndroid,isiOS:r.isiOS,isWebView:rt(g),isDesktop:rt(!m&&!d&&!g)})};var t,e,n,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b})),fn=Yt,dn=S(Element.prototype.attachShadow)&&S(Node.prototype.getRootNode),mn=rt(dn),gn=dn?function(t){return Mt.fromDom(t.dom.getRootNode())}:Wt,pn=function(t){var e=gn(t);return Zt(e)?vt.some(e):vt.none()},hn=function(t){return k(t.dom.shadowRoot)},vn=function(t){var e=Xe(t)?t.dom.parentNode:t.dom;if(null==e||null===e.ownerDocument)return!1;var n,o,r=e.ownerDocument;return pn(Mt.fromDom(e)).fold(function(){return r.body.contains(e)},(n=vn,o=ee,function(t){return n(o(t))}))},bn=function(){return yn(Mt.fromDom(document))},yn=function(t){var e=t.dom.body;if(null==e)throw new Error("Body is not available yet");return Mt.fromDom(e)},xn=function(t,e){return ct(t)?t.style.getPropertyValue(e):""},wn=ye("height",function(t){var e=t.dom;return vn(t)?e.getBoundingClientRect().height:e.offsetHeight}),Sn=function(n,o){return{left:n,top:o,translate:function(t,e){return Sn(n+t,o+e)}}},kn=Sn,Cn=function(t){var e,n=t.dom,o=n.ownerDocument.body;return o===n?kn(o.offsetLeft,o.offsetTop):vn(t)?(e=n.getBoundingClientRect(),kn(e.left,e.top)):kn(0,0)},On=ye("width",function(t){return t.dom.offsetWidth}),_n=function(t,e,n,o){t.dom.removeEventListener(e,n,o)},Tn=function(t,e){t.dom.appendChild(e.dom)},En=function(t){var e=t.dom;null!==e.parentNode&&e.parentNode.removeChild(e)},Dn=function(o,t){return o.view(t).fold(rt([]),function(t){var e=o.owner(t),n=Dn(o,e);return[t].concat(n)})},An=Object.freeze({__proto__:null,view:function(t){var e;return(t.dom===document?vt.none():vt.from(null===(e=t.dom.defaultView)||void 0===e?void 0:e.frameElement)).map(Mt.fromDom)},owner:jt}),Bn=function(t,e,n,o){return{x:t,y:e,width:n,height:o,right:t+n,bottom:e+o}},Mn=function(t){var e=ke(t),n=Oe(t),o=we(t);return Bn(e.left,e.top,n,o)},Fn=function(){return Pe(window)},In=function(n){return{isValue:D,isError:T,getOr:rt(n),getOrThunk:rt(n),getOrDie:rt(n),or:function(t){return In(n)},orThunk:function(t){return In(n)},fold:function(t,e){return e(n)},map:function(t){return In(t(n))},mapError:function(t){return In(n)},each:function(t){t(n)},bind:function(t){return t(n)},exists:function(t){return t(n)},forall:function(t){return t(n)},toOptional:function(){return vt.some(n)}}},Rn=function(n){return{isValue:T,isError:D,getOr:h,getOrThunk:function(t){return t()},getOrDie:function(){return _(String(n))()},or:h,orThunk:function(t){return t()},fold:function(t,e){return t(n)},map:function(t){return Rn(n)},mapError:function(t){return Rn(t(n))},each:st,bind:function(t){return Rn(n)},exists:T,forall:D,toOptional:vt.none}},Nn={value:In,error:Rn,fromOption:function(t,e){return t.fold(function(){return Rn(e)},In)}};function Pn(t,e,n){return t.stype===je.Error?e(t.serror):n(t.svalue)}function Vn(t){return{stype:je.Value,svalue:t}}function Hn(t){return{stype:je.Error,serror:t}}function Ln(t,e,n,o){return{tag:"field",key:t,newKey:e,presence:n,prop:o}}function zn(t,e,n){switch(t.tag){case"field":return e(t.key,t.newKey,t.presence,t.prop);case"custom":return n(t.newKey,t.instantiator)}}function Un(u){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},o=0;o<t.length;o++){var r,i=t[o];for(r in i)Tt(i,r)&&(n[r]=u(n[r],i[r]))}return n}}function jn(){return{tag:"required",process:{}}}function Wn(t){return{tag:"defaultedThunk",process:t}}function Gn(t){return Wn(rt(t))}function Xn(){return{tag:"option",process:{}}}function Yn(t){return{tag:"mergeWithThunk",process:t}}function qn(t){return x(t)&&100<Ct(t).length?" removed due to size":JSON.stringify(t,null,2)}function Kn(t,e){return zo([{path:t,getErrorInfo:e}])}function Jn(n){return{extract:function(e,t){return jo(n(t),function(t){return Kn(e,rt(t))})},toString:rt("val")}}function $n(t,e,n,o){return o(tt(t,e).getOrThunk(function(){return n(t)}))}function Qn(e,n,o,r,i){function u(t){return i.extract(n.concat([r]),t)}function t(t){return t.fold(function(){return Lo(vt.none())},function(t){var e=i.extract(n.concat([r]),t);return Wo(e,vt.some)})}var a,c,s,l,f,d;switch(e.tag){case"required":return s=n,d=u,tt(l=o,f=r).fold(function(){return t=f,e=l,Kn(s,function(){return'Could not find valid *required* value for "'+t+'" in '+qn(e)});var t,e},d);case"defaultedThunk":return $n(o,r,e.process,u);case"option":return t(tt(o,r));case"defaultedOptionThunk":return c=e.process,t(tt(a=o,r).map(function(t){return!0===t?c(a):t}));case"mergeWithThunk":return $n(o,r,rt({}),function(t){return u(Yo(e.process(o),t))})}}function Zn(n){return{extract:function(t,e){return n().extract(t,e)},toString:function(){return n().toString()}}}function to(t){var s=$o(t),l=I(t,function(n,t){return zn(t,function(t){var e;return Yo(n,((e={})[t]=!0,e))},rt(n))},{});return{extract:function(t,e){var n,o,r,i,u,a,c=F(w(e)?[]:Ct((r=k,i=o={},u=function(t,e){i[e]=t},a=st,J(e,function(t,e){(r(t,e)?u:a)(t,e)}),o)),function(t){return!et(l,t)});return 0===c.length?s.extract(t,e):(n=c,Kn(t,function(){return"There are unsupported fields: ["+n.join(", ")+"] specified"}))},toString:s.toString}}function eo(o){return{extract:function(n,t){var e=B(t,function(t,e){return o.extract(n.concat(["["+e+"]"]),t)});return Ko(e)},toString:function(){return"array("+o.toString()+")"}}}function no(u){return{extract:function(t,e){for(var n=[],o=0,r=u;o<r.length;o++){var i=r[o].extract(t,e);if(i.stype===je.Value)return i;n.push(i)}return Ko(n)},toString:function(){return"oneOf("+B(u,function(t){return t.toString()}).join(", ")+")"}}}function oo(n,o){return Jn(function(t){var e=typeof t;return n(t)?Lo(t):zo("Expected type: "+o+" but got: "+e)})}function ro(e,a){return{extract:function(i,u){return tt(u,e).fold(function(){return t=e,Kn(i,function(){return'Choice schema did not contain choice key: "'+t+'"'});var t},function(t){return n=i,e=u,tt(o=a,r=t).fold(function(){return t=o,e=r,Kn(n,function(){return'The chosen schema: "'+e+'" did not exist in branches: '+qn(t)});var t,e},function(t){return t.extract(n.concat(["branch: "+r]),e)});var n,e,o,r})},toString:function(){return"chooseOn("+e+"). Possible values: "+Ct(a)}}}function io(e){return Jn(function(t){return e(t).fold(zo,Lo)})}function uo(e,t){return r=function(t){return e(t).fold(Hn,Vn)},i=t,{extract:function(n,o){var t=Ct(o),e=eo(Jn(r)).extract(n,t);return Uo(e,function(t){var e=B(t,function(t){return Ln(t,t,jn(),i)});return $o(e).extract(n,o)})},toString:function(){return"setOf("+i.toString()+")"}};var r,i}function ao(t,e,n){return Ho((r=e.extract([t],o=n),Go(r,function(t){return{input:o,errors:t}})));var o,r}function co(t){return t.fold(function(t){throw new Error(ur(t))},h)}function so(t,e,n){return co(ao(t,e,n))}function lo(t,e){return ro(t,dt(e,$o))}function fo(e){return io(function(t){return wt(e,t)?Nn.value(t):Nn.error('Unsupported value: "'+t+'", choose one of "'+e.join(", ")+'".')})}function mo(t){return ar(t,t,jn(),Zo())}function go(t,e){return ar(t,t,jn(),e)}function po(t){return go(t,er)}function ho(t,e){return ar(t,t,jn(),fo(e))}function vo(t){return go(t,or)}function bo(t,e){return ar(t,t,jn(),$o(e))}function yo(t,e){return ar(t,t,jn(),Qo(e))}function xo(t,e){return ar(t,t,jn(),eo(e))}function wo(t){return ar(t,t,Xn(),Zo())}function So(t,e){return ar(t,t,Xn(),e)}function ko(t){return So(t,tr)}function Co(t){return So(t,er)}function Oo(t){return So(t,or)}function _o(t,e){return So(t,eo(e))}function To(t,e){return So(t,$o(e))}function Eo(t,e){return ar(t,t,Gn(e),Zo())}function Do(t,e,n){return ar(t,t,Gn(e),n)}function Ao(t,e){return Do(t,e,tr)}function Bo(t,e){return Do(t,e,er)}function Mo(t,e,n){return Do(t,e,fo(n))}function Fo(t,e){return Do(t,e,nr)}function Io(t,e){return Do(t,e,or)}function Ro(t,e,n){return Do(t,e,eo(n))}function No(t,e,n){return Do(t,e,$o(n))}function Po(t){var e=t;return{get:function(){return e},set:function(t){e=t}}}(We=je={})[We.Error=0]="Error",We[We.Value=1]="Value";function Vo(u){if(!c(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],n={};return St(u,function(t,o){var e=Ct(t);if(1!==e.length)throw new Error("one and only one name per case");var r=e[0],i=t[r];if(void 0!==n[r])throw new Error("duplicate key detected:"+r);if("cata"===r)throw new Error("cannot have a case named cata (sorry)");if(!c(i))throw new Error("case arguments must be an array");a.push(r),n[r]=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=n.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+r+". Expected "+i.length+" ("+i+"), got "+e);return{fold:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(t.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+t.length);return t[o].apply(null,n)},match:function(t){var e=Ct(t);if(a.length!==e.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+e.join(","));if(!L(a,function(t){return wt(e,t)}))throw new Error("Not all branches were specified when using match. Specified: "+e.join(", ")+"\nRequired: "+a.join(", "));return t[r].apply(null,n)},log:function(t){console.log(t,{constructors:a,constructor:r,params:n})}}}}),n}var Ho=function(t){return Pn(t,Nn.error,Nn.value)},Lo=Vn,zo=Hn,Uo=function(t,e){return t.stype===je.Value?e(t.svalue):t},jo=function(t,e){return t.stype===je.Error?e(t.serror):t},Wo=function(t,e){return t.stype===je.Value?{stype:je.Value,svalue:e(t.svalue)}:t},Go=function(t,e){return t.stype===je.Error?{stype:je.Error,serror:e(t.serror)}:t},Xo=Pn,Yo=Un(function(t,e){return x(t)&&x(e)?Yo(t,e):e}),qo=Un(function(t,e){return e}),Ko=function(t){var e,n,o=(e=[],n=[],St(t,function(t){Pn(t,function(t){return n.push(t)},function(t){return e.push(t)})}),{values:e,errors:n});return 0<o.errors.length?r(zo,ft)(o.errors):Lo(o.values)},Jo=Jn(Lo),$o=function(n){return{extract:function(i,u){for(var a={},c=[],t=0,e=n;t<e.length;t++)zn(e[t],function(t,e,n,o){var r=Qn(n,i,u,t,o);Xo(r,function(t){c.push.apply(c,t)},function(t){a[e]=t})},function(t,e){a[t]=e(u)});return 0<c.length?zo(c):Lo(a)},toString:function(){return"obj{\n"+B(n,function(t){return zn(t,function(t,e,n,o){return t+" -> "+o.toString()},function(t,e){return"state("+t+")"})}).join("\n")+"}"}}},Qo=r(eo,$o),Zo=rt(Jo),tr=oo(u,"number"),er=oo(y,"string"),nr=oo(w,"boolean"),or=oo(S,"function"),rr=function(e){if(Object(e)!==e)return!0;switch({}.toString.call(e).slice(8,-1)){case"Boolean":case"Number":case"String":case"Date":case"RegExp":case"Blob":case"FileList":case"ImageData":case"ImageBitmap":case"ArrayBuffer":return!0;case"Array":case"Object":return Object.keys(e).every(function(t){return rr(e[t])});default:return!1}},ir=Jn(function(t){return rr(t)?Lo(t):zo("Expected value to be acceptable for sending via postMessage")}),ur=function(t){return"Errors: \n"+B(10<(e=t.errors).length?e.slice(0,10).concat([{path:[],getErrorInfo:rt("... (only showing first ten failures)")}]):e,function(t){return"Failed path: ("+t.path.join(" > ")+")\n"+t.getErrorInfo()}).join("\n")+"\n\nInput object: "+qn(t.input);var e},ar=Ln,cr=function(t,e){return{tag:"custom",newKey:t,instantiator:e}};function sr(t,e){return(n={})[t]=e,n;var n}function lr(t){return e={},St(t,function(t){e[t.key]=t.value}),e;var e}function fr(t){return S(t)?t:T}function dr(t,e,n){for(var o=t.dom,r=fr(n);o.parentNode;){var o=o.parentNode,i=Mt.fromDom(o),u=e(i);if(u.isSome())return u;if(r(i))break}return vt.none()}function mr(t,e,n){var o=e(t),r=fr(n);return o.orThunk(function(){return r(t)?vt.none():dr(t,e,r)})}function gr(t,e){return zt(t.element,e.event.target)}function pr(t){if(!et(t,"can")&&!et(t,"abort")&&!et(t,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(t,null,2)+" does not have can, abort, or run!");return lt(lt({},ai),t)}function hr(t){return rt("alloy."+t)}function vr(t,e){eu(t,t.element,e,{})}function br(t,e,n){eu(t,t.element,e,n)}function yr(t){vr(t,Ii())}function xr(t,e,n){eu(t,e,n,{})}function wr(t,e,n,o){t.getSystem().triggerEvent(n,e,o.event)}function Sr(t,e){return{key:t,value:pr({abort:e})}}function kr(t){return{key:t,value:pr({run:function(t,e){e.event.prevent()}})}}function Cr(t,e){return{key:t,value:pr({run:e})}}function Or(t,n,o){return{key:t,value:pr({run:function(t,e){n.apply(void 0,[t,e].concat(o))}})}}function _r(t){return function(n){return{key:t,value:pr({run:function(t,e){gr(t,e)&&n(t,e)}})}}}function Tr(t,e,n){var o,r=e.partUids[n];return Cr(o=t,function(t,e){t.getSystem().getByUid(r).each(function(t){wr(t,t.element,o,e)})})}function Er(t,r){return Cr(t,function(e,t){var n=t.event,o=e.getSystem().getByDom(n.target).getOrThunk(function(){return mr(n.target,function(t){return e.getSystem().getByDom(t).toOptional()},T).getOr(e)});r(e,o,t)})}function Dr(t){return Cr(t,function(t,e){e.cut()})}function Ar(t,e){return _r(t)(e)}function Br(t){return t.dom.innerHTML}function Mr(t,e){var n,o,r=jt(t).dom,i=Mt.fromDom(r.createDocumentFragment());Be(i,(n=e,(o=(r||document).createElement("div")).innerHTML=n,Kt(Mt.fromDom(o)))),Me(t),Tn(t,i)}function Fr(t){if(Zt(t))return"#shadow-root";var e=Mt.fromDom(t.dom.cloneNode(!1)),n=Mt.fromTag("div"),o=Mt.fromDom(e.dom.cloneNode(!0));return Tn(n,o),Br(n)}function Ir(t){var e=(new Date).getTime();return t+"_"+Math.floor(1e9*Math.random())+ ++su+String(e)}function Rr(t){var e=Ge(t)?t.dom[mu]:null;return vt.from(e)}function Nr(e){function n(t){return"The component must be in a context to execute: "+t+(e?"\n"+Fr(e().element)+" is not in context.":"")}function t(t){return function(){throw new Error(n(t))}}function o(t){return function(){console.warn(n(t))}}return{debugInfo:rt("fake"),triggerEvent:o("triggerEvent"),triggerFocus:o("triggerFocus"),triggerEscape:o("triggerEscape"),broadcast:o("broadcast"),broadcastOn:o("broadcastOn"),broadcastEvent:o("broadcastEvent"),build:t("build"),addToWorld:t("addToWorld"),removeFromWorld:t("removeFromWorld"),addToGui:t("addToGui"),removeFromGui:t("removeFromGui"),getByUid:t("getByUid"),getByDom:t("getByDom"),isConnected:T}}function Pr(t,e){var n=t.toString(),o=n.indexOf(")")+1,r=n.indexOf("("),i=n.substring(r+1,o-1).split(/,\s*/);return t.toFunctionAnnotation=function(){return{name:e,parameters:bu(i)}},t}function Vr(t){return sr(yu,t)}function Hr(o){return t=function(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return o.apply(void 0,V([t.getApis(),t],e,!1))},n=(e=o.toString()).indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,n-1).split(/,\s*/),t.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:bu(i.slice(1))}},t;var t,e,n,r,i}function Lr(t,r){var i={};return J(t,function(t,o){J(t,function(t,e){var n=tt(i,e).getOr([]);i[e]=n.concat([r(o,t)])})}),i}function zr(t){return{classes:E(t.classes)?[]:t.classes,attributes:E(t.attributes)?{}:t.attributes,styles:E(t.styles)?{}:t.styles}}function Ur(t){return t.cHandler}function jr(t,e){return{name:t,handler:e}}function Wr(t,e,n){var o=e[n];return o?function(u,t,a){try{var e=G(t,function(t,e){var n=t.name,o=e.name,r=a.indexOf(n),i=a.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+n+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(a,null,2));return r<i?-1:i<r?1:0});return Nn.value(e)}catch(t){return Nn.error([t])}}("Event: "+n,t,o).map(function(t){var n,e,o,r,i=B(t,function(t){return t.handler});return{can:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return R(e,function(t,e){return t&&e.can.apply(void 0,n)},!0)},abort:(o=e=n=i,r=function(t){return t.abort},function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return R(o,function(t,e){return t||r(e).apply(void 0,n)},!1)}),run:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];St(n,function(t){t.run.apply(void 0,e)})}}}):Nn.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(B(t,function(t){return t.name}),null,2)])}function Gr(t,e){var n=ie(t,e);return void 0===n||""===n?[]:n.split(" ")}function Xr(t){return void 0!==t.dom.classList}function Yr(t,e){var n,o,r;Xr(t)?t.dom.classList.add(e):(o=e,r=Gr(n=t,"class").concat([o]),oe(n,"class",r.join(" ")))}function qr(t,e){var n,o,r,i;Xr(t)?t.dom.classList.remove(e):(r=e,0<(i=F(Gr(o=t,"class"),function(t){return t!==r})).length?oe(o,"class",i.join(" ")):ce(o,"class")),0===(Xr(n=t)?n.dom.classList:Gr(n,"class")).length&&ce(n,"class")}function Kr(t,e){return Xr(t)&&t.dom.classList.contains(e)}function Jr(e,t){St(t,function(t){Yr(e,t)})}function $r(e,t){St(t,function(t){qr(e,t)})}function Qr(t){return t.dom.value}function Zr(t,e){if(void 0===e)throw new Error("Value.set was undefined");t.dom.value=e}function ti(t){var n,e,o,r,i=(n=tt(t,"behaviours").getOr({}),H(Ct(n),function(t){var e=n[t];return k(e)?[e.me]:[]}));return e=t,r=B(o=i,function(t){return To(t.name(),[mo("config"),Eo("state",xu)])}),{list:o,data:dt(ao("component.behaviours",$o(r),e.behaviours).fold(function(t){throw new Error(ur(t)+"\nComplete spec:\n"+JSON.stringify(e,null,2))},h),function(t){return rt(t.map(function(t){return{config:t.config,state:t.state.init(t.config)}}))})}}function ei(t,e,n){var o,r,i=lt(lt({},(o=t).dom),{uid:o.uid,domChildren:B(o.components,function(t){return t.element})}),u=t.domModification.fold(function(){return zr({})},zr),a=0<e.length?function(e,t,n,o){var r=lt({},t);function i(t){return I(t,function(t,e){return lt(lt({},e.modification),t)},{})}St(n,function(t){r[t.name()]=t.exhibit(e,o)});var u=Lr(r,function(t,e){return{name:t,modification:e}});return zr({classes:I(u.classes,function(t,e){return e.modification.concat(t)},[]),attributes:i(u.attributes),styles:i(u.styles)})}(n,{"alloy.base.modification":u},e,i):u;return lt(lt({},r=i),{attributes:lt(lt({},r.attributes),a.attributes),styles:lt(lt({},r.styles),a.styles),classes:r.classes.concat(a.classes)})}function ni(t,e,n){var o,r,i,u,a,c={"alloy.base.behaviour":t.events},s=t.eventOrder;return r=n,i=e,o=Lr(lt(lt({},c),(u=r,a={},St(i,function(t){a[t.name()]=t.handlers(u)}),a)),jr),Su(o,s).getOrDie()}function oi(t){var n,e,o,r,i,u,a,c,s,l,f=hu(t),d=f.events,m=A(f,["events"]),g=B(tt(m,"components").getOr([]),Tu),p=lt(lt({},m),{events:lt(lt({},cu),d),components:g});return Nn.value((e=Po(vu),o=co(ao("custom.definition",Cu,n=p)),r=ti(n),i=r.list,u=r.data,a=function(t){var e=Mt.fromTag(t.tag);re(e,t.attributes),Jr(e,t.classes),de(e,t.styles),t.innerHtml.each(function(t){return Mr(e,t)});var n=t.domChildren;return Be(e,n),t.value.each(function(t){Zr(e,t)}),t.uid,gu(e,t.uid),e}(ei(o,i,u)),c=ni(o,i,u),s=Po(o.components),l={uid:n.uid,getSystem:e.get,config:function(t){var e=u;return(S(e[t.name()])?e[t.name()]:function(){throw new Error("Could not find "+t.name()+" in "+JSON.stringify(n,null,2))})()},hasConfigured:function(t){return S(u[t.name()])},spec:n,readState:function(t){return u[t]().map(function(t){return t.state.readState()}).getOr("not enabled")},getApis:function(){return o.apis},connect:function(t){e.set(t)},disconnect:function(){e.set(Nr(h))},element:a,syncComponents:function(){var t=H(Kt(a),function(t){return e.get().getByDom(t).fold(function(){return[]},W)});s.set(t)},components:s.get,events:c}));function h(){return l}}function ri(t){var e=Mt.fromText(t);return Ou({element:e})}Vo([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]);var ii,ui,ai={can:D,abort:T,run:st},ci=rt,si=ci("touchstart"),li=ci("touchmove"),fi=ci("touchend"),di=ci("touchcancel"),mi=ci("mousedown"),gi=ci("mousemove"),pi=ci("mouseout"),hi=ci("mouseup"),vi=ci("mouseover"),bi=ci("focusin"),yi=ci("focusout"),xi=ci("keydown"),wi=ci("keyup"),Si=ci("input"),ki=ci("change"),Ci=ci("click"),Oi=ci("transitioncancel"),_i=ci("transitionend"),Ti=ci("transitionstart"),Ei=ci("selectstart"),Di={tap:hr("tap")},Ai=hr("focus"),Bi=hr("blur.post"),Mi=hr("paste.post"),Fi=hr("receive"),Ii=hr("execute"),Ri=hr("focus.item"),Ni=Di.tap,Pi=hr("longpress"),Vi=hr("sandbox.close"),Hi=hr("typeahead.cancel"),Li=hr("system.init"),zi=hr("system.touchmove"),Ui=hr("system.touchend"),ji=hr("system.scroll"),Wi=hr("system.resize"),Gi=hr("system.attached"),Xi=hr("system.detached"),Yi=hr("system.dismissRequested"),qi=hr("system.repositionRequested"),Ki=hr("focusmanager.shifted"),Ji=hr("slotcontainer.visibility"),$i=hr("change.tab"),Qi=hr("dismiss.tab"),Zi=hr("highlight"),tu=hr("dehighlight"),eu=function(t,e,n,o){var r=lt({target:e},o);t.getSystem().triggerEvent(n,e,r)},nu=lr,ou=_r(Gi()),ru=_r(Xi()),iu=_r(Li()),uu=(ii=Ii(),function(t){return Cr(ii,t)}),au=nu([{key:Ai(),value:pr({can:function(t,e){var n,o=e.event,r=o.originator,i=o.target;return!(zt(n=r,t.element)&&!zt(n,i)&&(console.warn(Ai()+" did not get interpreted by the desired target. \nOriginator: "+Fr(r)+"\nTarget: "+Fr(i)+"\nCheck the "+Ai()+" event handlers"),1))}})}]),cu=Object.freeze({__proto__:null,events:au}),su=0,lu=rt("alloy-id-"),fu=rt("data-alloy-id"),du=lu(),mu=fu(),gu=function(t,e){Object.defineProperty(t.dom,mu,{value:e,writable:!0})},pu=Ir,hu=h,vu=Nr(),bu=function(t){return B(t,function(t){return At(t,"/*")?t.substring(0,t.length-"/*".length):t})},yu=Ir("alloy-premade"),xu={init:function(){return wu({readState:rt("No State required")})}},wu=function(t){return t},Su=function(t,a){var e,n,o,r,i,u,c=$(t,function(r,u){return(1===r.length?Nn.value(r[0].handler):Wr(r,a,u)).map(function(t){var e,i,n=(i=S(e=t)?{can:D,abort:T,run:e}:e,function(t,e){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var r=[t,e].concat(n);i.abort.apply(void 0,r)?e.stop():i.can.apply(void 0,r)&&i.run.apply(void 0,r)}),o=1<r.length?F(a[u],function(e){return d(r,function(t){return t.name===e})}).join(" > "):r[0].name;return sr(u,{handler:n,purpose:o})})});return e={},n=[],o=[],St(c,function(t){t.fold(function(t){n.push(t)},function(t){o.push(t)})}),0<(u={errors:n,values:o}).errors.length?Nn.error(ft(u.errors)):(i=e,0===(r=u.values).length?Nn.value(i):Nn.value(Yo(i,qo.apply(void 0,r))))},ku="alloy.base.behaviour",Cu=$o([ar("dom","dom",jn(),$o([mo("tag"),Eo("styles",{}),Eo("classes",[]),Eo("attributes",{}),wo("value"),wo("innerHtml")])),mo("components"),mo("uid"),Eo("events",{}),Eo("apis",{}),ar("eventOrder","eventOrder",((ui={})[Ii()]=["disabling",ku,"toggling","typeaheadevents"],ui[Ai()]=[ku,"focusing","keying"],ui[Li()]=[ku,"disabling","toggling","representing"],ui[Si()]=[ku,"representing","streaming","invalidating"],ui[Xi()]=[ku,"representing","item-events","tooltipping"],ui[mi()]=["focusing",ku,"item-type-events"],ui[si()]=["focusing",ku,"item-type-events"],ui[vi()]=["item-type-events","tooltipping"],ui[Fi()]=["receiving","reflecting","tooltipping"],Yn(rt(ui))),Zo()),wo("domModification")]),Ou=function(t){var e=so("external.component",to([mo("element"),wo("uid")]),t),n=Po(Nr()),o=e.uid.getOrThunk(function(){return pu("external")});gu(e.element,o);var r={uid:o,getSystem:n.get,config:vt.none,hasConfigured:T,connect:function(t){n.set(t)},disconnect:function(){n.set(Nr(function(){return r}))},getApis:function(){return{}},element:e.element,spec:t,readState:rt("No state"),syncComponents:st,components:rt([]),events:{}};return Vr(r)},_u=pu,Tu=function(t){return tt(t,yu).getOrThunk(function(){return oi(Tt(t,"uid")?t:lt({uid:_u("")},t)).getOrDie()})},Eu=Vr;function Du(t,e,n,o,r){return t(n,o)?vt.some(n):S(r)&&r(n)?vt.none():e(n,o,r)}function Au(t,e,n){for(var o=t.dom,r=S(n)?n:T;o.parentNode;){var o=o.parentNode,i=Mt.fromDom(o);if(e(i))return vt.some(i);if(r(i))break}return vt.none()}function Bu(t,e,n){return Du(function(t,e){return e(t)},Au,t,e,n)}function Mu(t,e,n){return Bu(t,e,n).isSome()}function Fu(t,e,n){return Au(t,function(t){return Ht(t,e)},n)}function Iu(t,e){return n=e,Lt(o=void 0===t?document:t.dom)?vt.none():vt.from(o.querySelector(n)).map(Mt.fromDom);var n,o}function Ru(t,e,n){return Du(Ht,Fu,t,e,n)}function Nu(){var e=Ir("aria-owns");return{id:e,link:function(t){oe(t,"aria-owns",e)},unlink:function(t){ce(t,"aria-owns")}}}var Pu,Vu,Hu=function(e,t){return Mu(t,function(t){return zt(t,e.element)},T)||(n=e,Bu(t,function(t){if(!Ge(t))return!1;var e=ie(t,"id");return void 0!==e&&-1<e.indexOf("aria-owns")}).bind(function(t){var e=ie(t,"id");return Iu(gn(t),'[aria-owns="'+e+'"]')}).exists(function(t){return Hu(n,t)}));var n},Lu="unknown";function zu(e,t,n){var o,r,i,u;switch(tt(Uu.get(),e).orThunk(function(){return K(Ct(Uu.get()),function(t){return-1<e.indexOf(t)?vt.some(Uu.get()[t]):vt.none()})}).getOr(Pu.NORMAL)){case Pu.NORMAL:return n(Wu());case Pu.LOGGING:var a=(o=e,r=t,i=[],u=(new Date).getTime(),{logEventCut:function(t,e,n){i.push({outcome:"cut",target:e,purpose:n})},logEventStopped:function(t,e,n){i.push({outcome:"stopped",target:e,purpose:n})},logNoParent:function(t,e,n){i.push({outcome:"no-parent",target:e,purpose:n})},logEventNoHandlers:function(t,e){i.push({outcome:"no-handlers-left",target:e})},logEventResponse:function(t,e,n){i.push({outcome:"response",purpose:n,target:e})},write:function(){var t=(new Date).getTime();wt(["mousemove","mouseover","mouseout",Li()],o)||console.log(o,{event:o,time:t-u,target:r.dom,sequence:B(i,function(t){return wt(["cut","stopped","response"],t.outcome)?"{"+t.purpose+"} "+t.outcome+" at ("+Fr(t.target)+")":t.outcome})})}}),c=n(a);return a.write(),c;case Pu.STOP:return!0}}(Vu=Pu=Pu||{})[Vu.STOP=0]="STOP",Vu[Vu.NORMAL=1]="NORMAL",Vu[Vu.LOGGING=2]="LOGGING";var Uu=Po({}),ju=["alloy/data/Fields","alloy/debugging/Debugging"],Wu=rt({logEventCut:st,logEventStopped:st,logNoParent:st,logEventNoHandlers:st,logEventResponse:st,write:st}),Gu=rt([mo("menu"),mo("selectedMenu")]),Xu=rt([mo("item"),mo("selectedItem")]);function Yu(){return bo("markers",[mo("backgroundMenu")].concat(Gu()).concat(Xu()))}function qu(t){return bo("markers",B(t,mo))}function Ku(t,e,n){return void 0!==(o=new Error).stack&&N(o.stack.split("\n"),function(e){return 0<e.indexOf("alloy")&&!d(ju,function(t){return-1<e.indexOf(t)})}).getOr(Lu),ar(e,e,n,io(function(n){return Nn.value(function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return n.apply(void 0,t)})}));var o}function Ju(t){return Ku(0,t,Gn(st))}function $u(t){return Ku(0,t,Gn(vt.none))}function Qu(t){return Ku(0,t,jn())}function Zu(t){return Ku(0,t,jn())}function ta(t,e){return cr(t,rt(e))}function ea(t){return cr(t,h)}function na(t,e,n,o,r,i,u,a){return{x:t,y:e,bubble:n,direction:o,placement:r,restriction:i,label:u+"-"+r,alwaysFit:a=void 0!==a&&a}}function oa(t,e,n,o){var r=t+e;return o<r?n:r<n?o:r}function ra(n,e){return j(["left","right","top","bottom"],function(t){return tt(e,t).map(function(e){return function(t){switch(e){case 1:return t.x;case 0:return t.x+t.width;case 2:return t.y;case 3:return t.y+t.height}}(n)})})}function ia(t,e){return t.x+t.width/2-e.width/2}function ua(t,e){return t.x+t.width-e.width}function aa(t,e){return t.y-e.height}function ca(t){return t.y+t.height}function sa(t,e){return t.y+t.height/2-e.height/2}function la(t,e,n){return na(t.x+t.width,sa(t,e),n.east(),Ua(),"east",ra(t,{left:0}),Ga)}function fa(t,e,n){return na(t.x-e.width,sa(t,e),n.west(),ja(),"west",ra(t,{right:1}),Ga)}function da(){return[Xa,Ya,qa,Ka,$a,Ja,la,fa]}function ma(){return[Ya,Xa,Ka,qa,$a,Ja,la,fa]}function ga(){return[qa,Ka,Xa,Ya,Ja,$a]}function pa(){return[Ka,qa,Ya,Xa,Ja,$a]}function ha(){return[Xa,Ya,qa,Ka,$a,Ja]}function va(){return[Ya,Xa,Ka,qa,$a,Ja]}function ba(n,o,r){return iu(function(t,e){r(t,n,o)})}function ya(t){return{key:t,value:void 0}}function xa(t){var e,n,o,r,i,u,a,c,s=so("Creating behaviour: "+t.name,nc,t);return e=s.fields,n=s.name,o=s.active,r=s.apis,i=s.extra,u=s.state,a=to(e),c=To(n,[So("config",to(e))]),tc(a,c,n,o,r,i,u)}function wa(t){var e,n=so("Creating behaviour: "+t.name,oc,t),o=lo(n.branchKey,n.branches),r=n.name,i=n.active,u=n.apis,a=n.extra,c=n.state,s=To(r,[So("config",e=o)]);return tc(e,s,r,i,u,a,c)}function Sa(){return Mt.fromDom(document)}function ka(t){return t.dom.focus()}function Ca(t){var e=gn(t).dom;return t.dom===e.activeElement}function Oa(t){return void 0===t&&(t=Sa()),vt.from(t.dom.activeElement).map(Mt.fromDom)}function _a(e){return Oa(gn(e)).filter(function(t){return e.dom.contains(t.dom)})}function Ta(t,n){var o=gn(n),e=Oa(o).bind(function(e){function t(t){return zt(e,t)}var r,i;return t(n)?vt.some(n):(r=t,(i=function(t){for(var e=0;e<t.childNodes.length;e++){var n=Mt.fromDom(t.childNodes[e]);if(r(n))return vt.some(n);var o=i(t.childNodes[e]);if(o.isSome())return o}return vt.none()})(n.dom))}),r=t(n);return e.each(function(e){Oa(o).filter(function(t){return zt(t,e)}).fold(function(){ka(e)},st)}),r}function Ea(t,e,n,o,r){function i(t){return t+"px"}return{position:t,left:e.map(i),top:n.map(i),right:o.map(i),bottom:r.map(i)}}function Da(t,e){var n;me(t,lt(lt({},n=e),{position:vt.some(n.position)}))}function Aa(t,e,n,o,r,i){var u=e.rect,a=u.x-n,c=u.y-o,s=r-(a+u.width),l=i-(c+u.height),f=vt.some(a),d=vt.some(c),m=vt.some(s),g=vt.some(l),p=vt.none();return e.direction.fold(function(){return Ea(t,f,d,p,p)},function(){return Ea(t,p,d,m,p)},function(){return Ea(t,f,p,p,g)},function(){return Ea(t,p,p,m,g)},function(){return Ea(t,f,d,p,p)},function(){return Ea(t,f,p,p,g)},function(){return Ea(t,f,d,p,p)},function(){return Ea(t,p,d,m,p)})}function Ba(t,r){return t.fold(function(){var t=r.rect;return Ea("absolute",vt.some(t.x),vt.some(t.y),vt.none(),vt.none())},function(t,e,n,o){return Aa("absolute",r,t,e,n,o)},function(t,e,n,o){return Aa("fixed",r,t,e,n,o)})}function Ma(t,e){var n=C(Ve,e),o=t.fold(n,n,function(){var t=Ie();return Ve(e).translate(-t.left,-t.top)}),r=Oe(e),i=we(e);return Bn(o.left,o.top,r,i)}rt($o(Xu().concat(Gu())));var Fa=rt($o(Xu())),Ia=rt(bo("initSize",[mo("numColumns"),mo("numRows")])),Ra=Vo([{southeast:[]},{southwest:[]},{northeast:[]},{northwest:[]},{south:[]},{north:[]},{east:[]},{west:[]}]),Na=Ra.southeast,Pa=Ra.southwest,Va=Ra.northeast,Ha=Ra.northwest,La=Ra.south,za=Ra.north,Ua=Ra.east,ja=Ra.west,Wa=function(t,e,n){return Math.min(Math.max(t,e),n)},Ga="layout",Xa=function(t,e,n){return na(t.x,ca(t),n.southeast(),Na(),"southeast",ra(t,{left:1,top:3}),Ga)},Ya=function(t,e,n){return na(ua(t,e),ca(t),n.southwest(),Pa(),"southwest",ra(t,{right:0,top:3}),Ga)},qa=function(t,e,n){return na(t.x,aa(t,e),n.northeast(),Va(),"northeast",ra(t,{left:1,bottom:2}),Ga)},Ka=function(t,e,n){return na(ua(t,e),aa(t,e),n.northwest(),Ha(),"northwest",ra(t,{right:0,bottom:2}),Ga)},Ja=function(t,e,n){return na(ia(t,e),aa(t,e),n.north(),za(),"north",ra(t,{bottom:2}),Ga)},$a=function(t,e,n){return na(ia(t,e),ca(t),n.south(),La(),"south",ra(t,{top:3}),Ga)},Qa=Object.freeze({__proto__:null,events:function(a){return nu([Cr(Fi(),function(r,t){var e,i=a.channels,n=Ct(i),u=t,o=(e=u).universal?n:F(n,function(t){return wt(e.channels,t)});St(o,function(t){var e=i[t],n=e.schema,o=so("channel["+t+"] data\nReceiver: "+Fr(r.element),n,u.data);e.onReceive(r,o)})})])}}),Za=[go("channels",uo(Nn.value,to([Qu("onReceive"),Eo("schema",Zo())])))],tc=function(n,t,f,e,o,r,i){function u(t){return et(t,f)?t[f]():vt.none()}var a=dt(o,function(t,e){return r=f,n=function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];var o=[n].concat(t);return n.config({name:rt(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+u)},function(t){var e=Array.prototype.slice.call(o,1);return i.apply(void 0,[n,t.config,t.state].concat(e))})},o=u=e,a=(i=t).toString(),c=a.indexOf(")")+1,s=a.indexOf("("),l=a.substring(s+1,c-1).split(/,\s*/),n.toFunctionAnnotation=function(){return{name:o,parameters:bu(l.slice(0,1).concat(l.slice(3)))}},n;var r,i,u,n,o,a,c,s,l}),c=dt(r,Pr),s=lt(lt(lt({},c),a),{revoke:C(ya,f),config:function(t){var e=so(f+"-config",n,t);return{key:f,value:{config:e,me:s,configAsRaw:Rt(function(){return so(f+"-config",n,t)}),initialConfig:t,state:i}}},schema:rt(t),exhibit:function(t,n){return Et(u(t),tt(e,"exhibit"),function(t,e){return e(n,t.config,t.state)}).getOrThunk(function(){return zr({})})},name:rt(f),handlers:function(t){return u(t).map(function(t){return tt(e,"events").getOr(function(){return{}})(t.config,t.state)}).getOr({})}});return s},ec=lr,nc=to([mo("fields"),mo("name"),Eo("active",{}),Eo("apis",{}),Eo("state",xu),Eo("extra",{})]),oc=to([mo("branchKey"),mo("branches"),mo("name"),Eo("active",{}),Eo("apis",{}),Eo("state",xu),Eo("extra",{})]),rc=rt(void 0),ic=xa({fields:Za,name:"receiving",active:Qa}),uc=Object.freeze({__proto__:null,exhibit:function(t,e){return zr({classes:[],styles:e.useFixed()?{}:{position:"relative"}})}}),ac=Vo([{none:[]},{relative:["x","y","width","height"]},{fixed:["x","y","width","height"]}]),cc=function(t,e,n){var o=kn(e,n);return t.fold(rt(o),rt(o),function(){var t=Ie();return o.translate(-t.left,-t.top)})};function sc(t){return ue(t,Dc)}function lc(t,e,n,o){var r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_,T,E,D,A,B,M,F,I,R,N,P,V,H,L,z,U,j=t.bubble,W=j.offset,G=(N=o,P=t.restriction,V=W,H=ot("left",N.x),L=ot("top",N.y),z=ot("right",N.right),U=ot("bottom",N.bottom),Bn(H,L,z-H,U-L)),X=t.x+W.left,Y=t.y+W.top,q=Bn(X,Y,e,n),K=(r=G.x,i=G.y,u=G.right,a=G.bottom,c=q.x,s=q.y,l=q.right,f=q.bottom,d=q.width,m=q.height,{originInBounds:r<=c&&c<=u&&i<=s&&s<=a,sizeInBounds:l<=u&&r<=l&&f<=a&&i<=f,visibleW:Math.min(d,r<=c?u-c:l-r),visibleH:Math.min(m,i<=s?a-s:f-i)}),J=K.visibleW,$=K.visibleH,Q=K.originInBounds&&K.sizeInBounds,Z=Q?q:(g=G.x,p=G.y,h=G.right,v=G.bottom,b=q.x,y=q.y,x=q.width,w=q.height,S=Math.max(g,h-x),k=Math.max(p,v-w),C=Wa(b,g,S),O=Wa(y,p,k),_=Math.min(C+x,h)-C,T=Math.min(O+w,v)-O,Bn(C,O,_,T)),tt=0<Z.width&&0<Z.height,et=(E=t.direction,B=rt((D=Z).bottom-(A=o).y),M=rt(A.bottom-D.y),F=E.fold(M,M,B,B,M,B,M,M),I=rt(D.right-A.x),R=rt(A.right-D.x),{maxWidth:E.fold(R,I,R,I,R,R,R,I),maxHeight:F}),nt={rect:Z,maxHeight:et.maxHeight,maxWidth:et.maxWidth,direction:t.direction,placement:t.placement,classes:{on:j.classesOn,off:j.classesOff},layout:t.label,testY:Y};function ot(r,i){return P[r].map(function(t){var e="top"===r||"bottom"===r,n=e?V.top:V.left,o=("left"===r||"top"===r?Math.max:Math.min)(t,i)+n;return e?Wa(o,N.y,N.bottom):Wa(o,N.x,N.right)}).getOr(i)}return Q||t.alwaysFit?Ac.fit(nt):Ac.nofit(nt,J,$,tt)}function fc(t){function e(){return n.get().each(t)}var n=Po(vt.none());return{clear:function(){e(),n.set(vt.none())},isSet:function(){return n.get().isSome()},get:function(){return n.get()},set:function(t){e(),n.set(vt.some(t))}}}function dc(){return fc(function(t){return t.destroy()})}function mc(){return fc(function(t){return t.unbind()})}function gc(){var e=fc(st);return lt(lt({},e),{on:function(t){return e.get().each(t)}})}function pc(t,e,n){return Te(t,e,Bc,n,!1)}function hc(t,e,n){return Te(t,e,Bc,n,!0)}function vc(o,n){function r(t){var e,n=null!==(e=t.raw.pseudoElement)&&void 0!==e?e:"";return zt(t.target,o)&&!at(n)&&wt(Fc,t.raw.propertyName)}function t(t){var e;(g(t)||r(t))&&(a.clear(),c.clear(),!g(e=null==t?void 0:t.raw.type)&&e!==_i()||(clearTimeout(i),ce(o,Ic),$r(o,n.classes)))}function e(){a.set(pc(o,_i(),t)),c.set(pc(o,Oi(),t))}var i,u,a=mc(),c=mc();"ontransitionstart"in o.dom?u=pc(o,Ti(),function(t){r(t)&&(u.unbind(),e())}):e();var s,l,f=(s=o,l=d("transition-delay"),R(d("transition-duration"),function(t,e,n){var o=m(l[n])+m(e);return Math.max(t,o)},0));function d(t){var e=ge(s,t);return F(y(e)?e.split(/\s*,\s*/):[],at)}function m(t){if(y(t)&&/^[\d.]+/.test(t)){var e=parseFloat(t);return At(t,"ms")?e:1e3*e}return 0}requestAnimationFrame(function(){i=setTimeout(t,f+17),oe(o,Ic,i)})}function bc(t,e,n,o,r,i){var u,a,c,s,l,f,d,m,g,p=(u=o,a=r,i.exists(function(t){var e=u.mode;return"all"===e||t[e]!==a[e]}));function h(t){return parseFloat(t).toFixed(3)}p||(g=t,L(o.classes,function(t){return Kr(g,t)}))?(fe(t,"position",n.position),c=Ma(e,t),s=Ba(e,lt(lt({},r),{rect:c})),l=j(Fc,function(t){return s[t]}),m=n,Q(l,function(t,e){var n,o,r,i=m[e].map(h),u=t.map(h);return!Et(n=i,o=u,r=void 0===r?v:r).getOr(n.isNone()&&o.isNone())}).isSome()&&(me(t,l),p&&(Jr(f=t,(d=o).classes),ue(f,Ic).each(function(t){clearTimeout(parseInt(t,10)),ce(f,Ic)}),vc(f,d)),be(t))):$r(t,o.classes)}function yc(t,e,n,o){ve(e,"max-height"),ve(e,"max-width");var r,s,i,l,f,d,m,g,p,u={width:Oe(r=e),height:we(r)};return s=e,i=o.preference,l=t,f=u,d=n,m=o.bounds,g=f.width,p=f.height,R(i,function(t,e){var n=C(a,e);return t.fold(rt(t),n)},Ac.nofit({rect:l,maxHeight:f.height,maxWidth:f.width,direction:Na(),placement:"southeast",classes:{on:[],off:[]},layout:"none",testY:l.y},-1,-1,!1)).fold(h,h);function a(t,r,i,u,a){var c=lc(t(l,f,d,s,m),g,p,m);return c.fold(rt(c),function(t,e,n,o){return(a===o?u<n||i<e:!a&&o)?c:Ac.nofit(r,i,u,a)})}}function xc(t,e){var n=t,o=Math.floor(e);fe(n,"max-height",wn.max(n,o,["margin-top","border-top-width","padding-top","padding-bottom","border-bottom-width","margin-bottom"])+"px")}function wc(t,e,n){return void 0===t[e]?n:t[e]}function Sc(t,e,n,o){function r(t){return tt(n,t).getOr([])}function i(t,e,n){var o=U(Vc,n);return{offset:kn(t,e),classesOn:H(n,r),classesOff:H(o,r)}}var u=t*(o=void 0===o?1:o),a=e*o;return{southeast:function(){return i(-t,e,["top","alignLeft"])},southwest:function(){return i(t,e,["top","alignRight"])},south:function(){return i(-t/2,e,["top","alignCentre"])},northeast:function(){return i(-t,-e,["bottom","alignLeft"])},northwest:function(){return i(t,-e,["bottom","alignRight"])},north:function(){return i(-t/2,-e,["bottom","alignCentre"])},east:function(){return i(t,-e/2,["valignCentre","left"])},west:function(){return i(-t,-e/2,["valignCentre","right"])},insetNortheast:function(){return i(u,a,["top","alignLeft","inset"])},insetNorthwest:function(){return i(-u,a,["top","alignRight","inset"])},insetNorth:function(){return i(-u/2,a,["top","alignCentre","inset"])},insetSoutheast:function(){return i(u,-a,["bottom","alignLeft","inset"])},insetSouthwest:function(){return i(-u,-a,["bottom","alignRight","inset"])},insetSouth:function(){return i(-u/2,-a,["bottom","alignCentre","inset"])},insetEast:function(){return i(-u,-a/2,["valignCentre","right","inset"])},insetWest:function(){return i(u,-a/2,["valignCentre","left","inset"])}}}function kc(){return Sc(0,0,{})}function Cc(e,n){return function(t){return"rtl"===Lc(t)?n:e}}ac.none;var Oc,_c,Tc=ac.relative,Ec=ac.fixed,Dc="data-alloy-placement",Ac=Vo([{fit:["reposition"]},{nofit:["reposition","visibleW","visibleH","isVisible"]}]),Bc=D,Mc=_e,Fc=["top","bottom","right","left"],Ic="data-alloy-transition-timer",Rc=rt(function(t,e){xc(t,e),de(t,{"overflow-x":"hidden","overflow-y":"auto"})}),Nc=rt(function(t,e){xc(t,e)}),Pc=function(t,e,n,o){var r,i,u,a,c=yc(t,e,n,o),s=e,l=c,f=Ba((r=o).origin,l);return r.transition.each(function(t){bc(s,r.origin,f,t,l,r.lastPlacement)}),Da(s,f),a=c.placement,oe(e,Dc,a),$r(i=e,(u=c.classes).off),Jr(i,u.on),(0,o.maxHeightFunction)(e,c.maxHeight),(0,o.maxWidthFunction)(e,c.maxWidth),{layout:c.layout,placement:c.placement}},Vc=["valignCentre","alignLeft","alignRight","alignCentre","top","bottom","left","right","inset"],Hc=h,Lc=function(t){return"rtl"===ge(t,"direction")?"rtl":"ltr"};function zc(t){return Mu(t,function(t){return Ge(t)&&ie(t,"data-alloy-vertical-dir")===Oc.BottomToTop})}function Uc(){return To("layouts",[mo("onLtr"),mo("onRtl"),wo("onBottomLtr"),wo("onBottomRtl")])}function jc(e,t,n,o,r,i,u){var a=u.map(zc).getOr(!1),c=t.layouts.map(function(t){return t.onLtr(e)}),s=t.layouts.map(function(t){return t.onRtl(e)});return Cc(a?t.layouts.bind(function(t){return t.onBottomLtr.map(function(t){return t(e)})}).or(c).getOr(r):c.getOr(n),a?t.layouts.bind(function(t){return t.onBottomRtl.map(function(t){return t(e)})}).or(s).getOr(i):s.getOr(o))(e)}function Wc(t){return t.fold(h,function(t,e,n){return t.translate(-e,-n)})}function Gc(t){return t.fold(h,h)}function Xc(t){return R(t,function(t,e){return t.translate(e.left,e.top)},kn(0,0))}function Yc(t){return Xc(B(t,Gc))}function qc(t,e,n){var o,r,i=Ie(jt(t.element)),u=(o=t,r=Xt(n.root).dom,vt.from(r.frameElement).map(Mt.fromDom).filter(function(t){return zt(jt(t),jt(o.element))}).map(ke).getOr(i));return as(u,i.left,i.top)}function Kc(t,e,n,o){var r=us(kn(t,e));return vt.some({point:r,width:n,height:o})}function Jc(t,a,c,s,l){return t.map(function(t){var e=[a,t.point],n=s.fold(function(){return Yc(e)},function(){return Yc(e)},function(){return Xc(B(e,Wc))}),o={x:n.left,y:n.top,width:t.width,height:t.height},r=(c.showAbove?ga:ha)(),i=(c.showAbove?pa:va)(),u=jc(l,c,r,i,r,i,vt.none());return Hc({anchorBox:o,bubble:c.bubble.getOr(kc()),overrides:c.overrides,layouts:u,placer:vt.none()})})}function $c(t,e,n){var o,r=t.document.createRange(),i=r;return e.fold(function(t){i.setStartBefore(t.dom)},function(t,e){i.setStart(t.dom,e)},function(t){i.setStartAfter(t.dom)}),o=r,n.fold(function(t){o.setEndBefore(t.dom)},function(t,e){o.setEnd(t.dom,e)},function(t){o.setEndAfter(t.dom)}),r}function Qc(t,e,n,o,r){var i=t.document.createRange();return i.setStart(e.dom,n),i.setEnd(o.dom,r),i}function Zc(t){return{left:t.left,top:t.top,right:t.right,bottom:t.bottom,width:t.width,height:t.height}}function ts(t,e,n){return e(Mt.fromDom(n.startContainer),n.startOffset,Mt.fromDom(n.endContainer),n.endOffset)}function es(i,t){return r=i,o=t.match({domRange:function(t){return{ltr:rt(t),rtl:vt.none}},relative:function(t,e){return{ltr:Rt(function(){return $c(r,t,e)}),rtl:Rt(function(){return vt.some($c(r,e,t))})}},exact:function(t,e,n,o){return{ltr:Rt(function(){return Qc(r,t,e,n,o)}),rtl:Rt(function(){return vt.some(Qc(r,n,o,t,e))})}}}),((n=(e=o).ltr()).collapsed?e.rtl().filter(function(t){return!1===t.collapsed}).map(function(t){return gs.rtl(Mt.fromDom(t.endContainer),t.endOffset,Mt.fromDom(t.startContainer),t.startOffset)}).getOrThunk(function(){return ts(0,gs.ltr,n)}):ts(0,gs.ltr,n)).match({ltr:function(t,e,n,o){var r=i.document.createRange();return r.setStart(t.dom,e),r.setEnd(n.dom,o),r},rtl:function(t,e,n,o){var r=i.document.createRange();return r.setStart(n.dom,o),r.setEnd(t.dom,e),r}});var r,e,n,o}(Oc=Oc||{}).TopToBottom="toptobottom",Oc.BottomToTop="bottomtotop";var ns="data-alloy-vertical-dir",os=[mo("hotspot"),wo("bubble"),Eo("overrides",{}),Uc(),ta("placement",function(t,e,n){var o=Ma(n,e.hotspot.element),r=jc(t.element,e,ha(),va(),ga(),pa(),vt.some(e.hotspot.element));return vt.some(Hc({anchorBox:o,bubble:e.bubble.getOr(kc()),overrides:e.overrides,layouts:r,placer:vt.none()}))})],rs=[mo("x"),mo("y"),Eo("height",0),Eo("width",0),Eo("bubble",kc()),Eo("overrides",{}),Uc(),ta("placement",function(t,e,n){var o=cc(n,e.x,e.y),r=Bn(o.left,o.top,e.width,e.height),i=jc(t.element,e,da(),ma(),da(),ma(),vt.none());return vt.some(Hc({anchorBox:r,bubble:e.bubble,overrides:e.overrides,layouts:i,placer:vt.none()}))})],is=Vo([{screen:["point"]},{absolute:["point","scrollLeft","scrollTop"]}]),us=is.screen,as=is.absolute,cs=[mo("node"),mo("root"),wo("bubble"),Uc(),Eo("overrides",{}),Eo("showAbove",!1),ta("placement",function(r,i,u){var a=qc(r,0,i);return i.node.filter(vn).bind(function(t){var e=t.dom.getBoundingClientRect(),n=Kc(e.left,e.top,e.width,e.height),o=i.node.getOr(r.element);return Jc(n,a,i,u,o)})})],ss=function(t,e,n,o){return{start:t,soffset:e,finish:n,foffset:o}},ls=Vo([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),fs=(ls.before,ls.on,ls.after,function(t){return t.fold(h,h,h)}),ds=Vo([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),ms={domRange:ds.domRange,relative:ds.relative,exact:ds.exact,exactFromRange:function(t){return ds.exact(t.start,t.soffset,t.finish,t.foffset)},getWin:function(t){return Xt(t.match({domRange:function(t){return Mt.fromDom(t.startContainer)},relative:function(t,e){return fs(t)},exact:function(t,e,n,o){return t}}))},range:ss},gs=Vo([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function ps(t){return ef.getOption(t)}function hs(t){return ps(t).filter(function(t){return 0!==t.trim().length||-1<t.indexOf("\xa0")}).isSome()||wt(nf,Ft(t))}function vs(t,e){return Lt(n=void 0===t?document:t.dom)?[]:B(n.querySelectorAll(e),Mt.fromDom);var n}function bs(t){if(0<t.rangeCount){var e=t.getRangeAt(0),n=t.getRangeAt(t.rangeCount-1);return vt.some(ss(Mt.fromDom(e.startContainer),e.startOffset,Mt.fromDom(n.endContainer),n.endOffset))}return vt.none()}function ys(t){if(null===t.anchorNode||null===t.focusNode)return bs(t);var e,n,o,r,i,u,a,c,s,l,f,d=Mt.fromDom(t.anchorNode),m=Mt.fromDom(t.focusNode);return e=d,n=t.anchorOffset,o=m,r=t.focusOffset,u=n,a=o,c=r,(s=jt(i=e).dom.createRange()).setStart(i.dom,u),s.setEnd(a.dom,c),l=s,f=zt(e,o)&&n===r,l.collapsed&&!f?vt.some(ss(d,t.anchorOffset,m,t.focusOffset)):bs(t)}function xs(t,e){var n,o,r=(n=es(t,e)).getClientRects();return 0<(o=0<r.length?r[0]:n.getBoundingClientRect()).width||0<o.height?vt.some(o).map(Zc):vt.none()}function ws(t,e){return{element:t,offset:e}}function Ss(t,e){return(Xe(t)?ws:function(t,e){var n=Kt(t);if(0===n.length)return ws(t,e);if(e<n.length)return ws(n[e],0);var o=n[n.length-1];return ws(o,(Xe(o)?ef.get(o):Kt(o)).length)})(t,e)}function ks(t,e){return e.getSelection.getOrThunk(function(){return function(){return vt.from(t.getSelection()).filter(function(t){return 0<t.rangeCount}).bind(ys)}})().map(function(t){var e=Ss(t.start,t.soffset),n=Ss(t.finish,t.foffset);return ms.range(e.element,e.offset,n.element,n.offset)})}function Cs(t){return t.x+t.width}function Os(t,e){return t.x-e.width}function _s(t,e){return t.y-e.height+t.height}function Ts(t,e,n){return na(Cs(t),t.y,n.southeast(),Na(),"southeast",ra(t,{left:0,top:2}),rf)}function Es(t,e,n){return na(Os(t,e),t.y,n.southwest(),Pa(),"southwest",ra(t,{right:1,top:2}),rf)}function Ds(t,e,n){return na(Cs(t),_s(t,e),n.northeast(),Va(),"northeast",ra(t,{left:0,bottom:3}),rf)}function As(t,e,n){return na(Os(t,e),_s(t,e),n.northwest(),Ha(),"northwest",ra(t,{right:1,bottom:3}),rf)}function Bs(){return[Ts,Es,Ds,As]}function Ms(){return[Es,Ts,As,Ds]}function Fs(t,e,n,o,r,i,u){var a,c,s,l,f,d,m,g,p,h,v,b,y,x,w={anchorBox:n.anchorBox,origin:e};return a=w,c=r.element,s=n.bubble,l=n.layouts,f=i,d=o,m=n.overrides,g=u,h=wc(m,"maxHeightFunction",Rc()),v=wc(m,"maxWidthFunction",st),b=a.anchorBox,y=a.origin,x={bounds:(p=y,d.fold(function(){return p.fold(Fn,Fn,Bn)},function(n){return p.fold(n,n,function(){var t=n(),e=cc(p,t.x,t.y);return Bn(e.left,e.top,t.width,t.height)})})),origin:y,preference:l,maxHeightFunction:h,maxWidthFunction:v,lastPlacement:f,transition:g},Pc(b,c,s,x)}function Is(t,e){Tn(t.element,e.element)}function Rs(e,t){var n,o=e.components();St((n=e).components(),function(t){return En(t.element)}),Me(n.element),n.syncComponents();var r=U(o,t);St(r,function(t){df(t),e.getSystem().removeFromWorld(t)}),St(t,function(t){t.getSystem().isConnected()?Is(e,t):(e.getSystem().addToWorld(t),Is(e,t),vn(e.element)&&mf(t)),e.syncComponents()})}function Ns(t,e){gf(t,e,Tn)}function Ps(t){df(t),En(t.element),t.getSystem().removeFromWorld(t)}function Vs(e){var t=Yt(e.element).bind(function(t){return e.getSystem().getByDom(t).toOptional()});Ps(e),t.each(function(t){t.syncComponents()})}function Hs(t){var e=t.components();St(e,Ps),Me(t.element),t.syncComponents()}function Ls(t,e){pf(t,e,Tn)}function zs(e){var t=Kt(e.element);St(t,function(t){e.getByDom(t).each(df)}),En(e.element)}function Us(e,t,n,o){n.get().each(function(t){Hs(e)}),Ns(t.getAttachPoint(e),e);var r=e.getSystem().build(o);return Ns(e,r),n.set(r),r}function js(t,e,n,o){var r=Us(t,e,n,o);return e.onOpen(t,r),r}function Ws(e,n,o){o.get().each(function(t){Hs(e),Vs(e),n.onClose(e,t),o.clear()})}function Gs(t,e,n){return n.isOpen()}function Xs(t){var n=so("Dismissal",Sf,t),e={};return e[yf()]={schema:to([mo("target")]),onReceive:function(e,t){bf.isOpen(e)&&(bf.isPartOf(e,t.target)||n.isExtraPart(e,t.target)||n.fireEventInstead.fold(function(){return bf.close(e)},function(t){return vr(e,t.event)}))}},e}function Ys(t){var n=so("Reposition",kf,t),e={};return e[xf()]={onReceive:function(e){bf.isOpen(e)&&n.fireEventInstead.fold(function(){return n.doReposition(e)},function(t){return vr(e,t.event)})}},e}function qs(t,e,n){e.store.manager.onLoad(t,e,n)}function Ks(t,e,n){e.store.manager.onUnload(t,e,n)}function Js(){var t=Po(null);return wu({set:t.set,get:t.get,isNotSet:function(){return null===t.get()},clear:function(){t.set(null)},readState:function(){return{mode:"memory",value:t.get()}}})}function $s(){var i=Po({}),u=Po({});return wu({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(t){return tt(i.get(),t).orThunk(function(){return tt(u.get(),t)})},update:function(t){var e=i.get(),n=u.get(),o={},r={};St(t,function(e){tt(o[e.value]=e,"meta").each(function(t){tt(t,"text").each(function(t){r[t]=e})})}),i.set(lt(lt({},e),o)),u.set(lt(lt({},n),r))},clear:function(){i.set({}),u.set({})}})}function Qs(t,e,n,o){var r=e.store;n.update([o]),r.setValue(t,o),e.onSetValue(t,o)}function Zs(o,t){return No(o,{},B(t,function(t){return e=t.name(),n="Cannot configure "+t.name()+" for "+o,ar(e,e,Xn(),Jn(function(t){return zo("The field: "+e+" is forbidden. "+n)}));var e,n}).concat([cr("dump",h)]))}function tl(t){return t.dump}function el(t,e){return lt(lt({},ec(e)),t.dump)}function nl(t){return Tt(t,"uiType")}function ol(t){return t.fold(vt.some,vt.none,vt.some,vt.some)}function rl(t){function e(t){return t.name}return t.fold(e,e,e,e)}function il(n,o){return function(t){var e=so("Converting part type",o,t);return n(e)}}function ul(t,e,n,o){return Yo(e.defaults(t,n,o),n,{uid:t.partUids[e.name]},e.overrides(t,n,o))}function al(r,t){var e={};return St(t,function(t){ol(t).each(function(n){var o=nd(r,n.pname);e[n.name]=function(t){var e=so("Part: "+n.name+" in "+r,$o(n.schema),t);return lt(lt({},o),{config:t,validated:e})}})}),e}function cl(t,e,n){return{uiType:Pf(),owner:t,name:e,config:n,validated:{}}}function sl(t){return H(t,function(t){return t.fold(vt.none,vt.some,vt.none,vt.none).map(function(t){return bo(t.name,t.schema.concat([ea(td())]))}).toArray()})}function ll(t){return B(t,rl)}function fl(t,e,n){return o=e,r={},i={},St(n,function(t){t.fold(function(o){r[o.pname]=Rf(!0,function(t,e,n){return o.factory.sketch(ul(t,o,e,n))})},function(t){var e=o.parts[t.name];i[t.name]=rt(t.factory.sketch(ul(o,t,e[td()]),e))},function(o){r[o.pname]=Rf(!1,function(t,e,n){return o.factory.sketch(ul(t,o,e,n))})},function(o){r[o.pname]=Nf(!0,function(e,t,n){return B(e[o.name],function(t){return o.factory.sketch(Yo(o.defaults(e,t,n),t,o.overrides(e,t)))})})})}),{internals:rt(r),externals:rt(i)};var o,r,i}function dl(t,e,n){return o=vt.some(t),i=(r=e).components,s=dt(n,function(t,e){return o=t,r=!1,{name:rt(n=e),required:function(){return o.fold(function(t,e){return t},function(t,e){return t})},used:function(){return r},replace:function(){if(r)throw new Error("Trying to use the same placeholder more than once: "+n);return r=!0,o}};var n,o,r}),u=o,a=r,c=s,l=H(i,function(t){return If(u,a,t,c)}),J(s,function(t){if(!1===t.used()&&t.required())throw new Error("Placeholder: "+t.name()+" was not found in components list\nNamespace: "+o.getOr("none")+"\nComponents: "+JSON.stringify(r.components,null,2))}),l;var o,r,i,u,a,c,s,l}function ml(t,e,n){var o=e.partUids[n];return t.getSystem().getByUid(o).toOptional()}function gl(t,e,n){return ml(t,e,n).getOrDie("Could not find part: "+n)}function pl(t,e,n){var o={},r=e.partUids,i=t.getSystem();return St(n,function(t){o[t]=rt(i.getByUid(r[t]))}),o}function hl(t,e){var n=t.getSystem();return dt(e.partUids,function(t,e){return rt(n.getByUid(t))})}function vl(t){return Ct(t.partUids)}function bl(t,e,n){var o={},r=e.partUids,i=t.getSystem();return St(n,function(t){o[t]=rt(i.getByUid(r[t]).getOrDie())}),o}function yl(e,t){return lr(B(ll(t),function(t){return{key:t,value:e+"-"+t}}))}function xl(e){return ar("partUids","partUids",Yn(function(t){return yl(t.uid,e)}),Zo())}function wl(t,e,n,o,r){var i;return so(t+" [SpecSchema]",to((i=r,(0<o.length?[bo("parts",o)]:[]).concat([mo("uid"),Eo("dom",{}),Eo("components",[]),ea("originalSpec"),Eo("debug.sketcher",{})]).concat(i)).concat(e)),n)}function Sl(t,e,n,o,r){var i=rd(r),u=wl(t,e,i,sl(n),[xl(n)]),a=fl(0,u,n);return o(u,dl(t,u,a.internals()),i,a.externals())}function kl(t){var r=so("Sketcher for "+t.name,id,t),e=dt(r.apis,Hr),n=dt(r.extraApis,Pr);return lt(lt({name:r.name,configFields:r.configFields,sketch:function(t){return e=r.name,n=r.configFields,(0,r.factory)(wl(e,n,o=rd(t),[],[]),o);var e,n,o}},e),n)}function Cl(t){var e=so("Sketcher for "+t.name,ud,t),n=al(e.name,e.partFields),o=dt(e.apis,Hr),r=dt(e.extraApis,Pr);return lt(lt({name:e.name,partFields:e.partFields,configFields:e.configFields,sketch:function(t){return Sl(e.name,e.configFields,e.partFields,e.factory,t)},parts:n},o),r)}function Ol(t){return"input"===Ft(t)&&"radio"!==ie(t,"type")||"textarea"===Ft(t)}function _l(t,e,n){(e.disabled()?ld:fd)(t,e)}function Tl(t,e){return!0===e.useNative&&wt(sd,Ft(t.element))}function El(t,e){return Tl(t,e)?ae(t.element,"disabled"):"true"===ie(t.element,"aria-disabled")}function Dl(n,o,t,r){var e=vs(n.element,"."+o.highlightClass);St(e,function(e){d(r,function(t){return t.element===e})||(qr(e,o.highlightClass),n.getSystem().getByDom(e).each(function(t){o.onDehighlight(n,t),vr(t,tu())}))})}function Al(t,e,n,o){Dl(t,e,0,[o]),Yl(0,e,0,o)||(Yr(o.element,e.highlightClass),e.onHighlight(t,o),vr(o,Zi()))}function Bl(n,e,t,o){var r=vs(n.element,"."+e.itemClass);return P(r,function(t){return Kr(t,e.highlightClass)}).bind(function(t){var e=oa(t,o,0,r.length-1);return n.getSystem().getByDom(r[e]).toOptional()})}function Ml(t,e,n){var o=z(t.slice(0,e)),r=z(t.slice(e+1));return N(o.concat(r),n)}function Fl(t,e,n){return N(z(t.slice(0,e)),n)}function Il(t,e,n){var o=t.slice(0,e);return N(t.slice(e+1).concat(o),n)}function Rl(t,e,n){return N(t.slice(e+1),n)}function Nl(n){return function(t){var e=t.raw;return wt(n,e.which)}}function Pl(t){return function(e){return L(t,function(t){return t(e)})}}function Vl(t){return!0===t.raw.shiftKey}function Hl(t){return!0===t.raw.ctrlKey}function Ll(t,e){return{matches:t,classification:e}}function zl(t,e,n){e.exists(function(e){return n.exists(function(t){return zt(t,e)})})||br(t,Ki(),{prevFocus:e,newFocus:n})}function Ul(){function o(t){return _a(t.element)}return{get:o,set:function(t,e){var n=o(t);t.getSystem().triggerFocus(e,t.element),zl(t,n,o(t))}}}function jl(){function r(t){return hd.getHighlighted(t).map(function(t){return t.element})}return{get:r,set:function(e,t){var n=r(e);e.getSystem().getByDom(t).fold(st,function(t){hd.highlight(e,t)});var o=r(e);zl(e,n,o)}}}gs.ltr,gs.rtl;function Wl(t,e,n,o,r,i){var u=i.map(Mn);return lf(t,e,n,o,r,u)}function Gl(t,e,n){var o,r,i,u=e.getAttachPoint(t);fe(t.element,"position",ff.getMode(u)),i=e.cloakVisibilityAttr,pe((o=t).element,r="visibility").fold(function(){ce(o.element,i)},function(t){oe(o.element,i,t)}),fe(o.element,r,"hidden")}function Xl(t,e,n){var o,r,i,u=t.element;d(["top","left","right","bottom"],function(t){return pe(u,t).isSome()})||ve(t.element,"position"),r="visibility",i=e.cloakVisibilityAttr,ue((o=t).element,i).fold(function(){return ve(o.element,r)},function(t){return fe(o.element,r,t)})}function Yl(t,e,n,o){return Kr(o.element,e.highlightClass)}function ql(e,t,n){return Iu(e.element,"."+t.itemClass).bind(function(t){return e.getSystem().getByDom(t).toOptional()})}function Kl(e,t,n){var o=vs(e.element,"."+t.itemClass);return(0<o.length?vt.some(o[o.length-1]):vt.none()).bind(function(t){return e.getSystem().getByDom(t).toOptional()})}function Jl(e,t,n){return nt(B(vs(e.element,"."+t.itemClass),function(t){return e.getSystem().getByDom(t).toOptional()}))}var $l,Ql,Zl,tf,ef=($l=Xe,{get:function(t){if(!$l(t))throw new Error("Can only get text value of a text node");return Ql(t).getOr("")},getOption:Ql=function(t){return $l(t)?vt.from(t.dom.nodeValue):vt.none()},set:function(t,e){if(!$l(t))throw new Error("Can only set raw text value of a text node");t.dom.nodeValue=e}}),nf=["img","br"],of=[wo("getSelection"),mo("root"),wo("bubble"),Uc(),Eo("overrides",{}),Eo("showAbove",!1),ta("placement",function(t,e,n){var r=Xt(e.root).dom,o=qc(t,0,e);return Jc(ks(r,e).bind(function(n){return t=r,e=ms.exactFromRange(n),(0<(o=es(t,e).getBoundingClientRect()).width||0<o.height?vt.some(o).map(Zc):vt.none()).orThunk(function(){var t=Mt.fromText("\ufeff");Ee(n.start,t);var e=xs(r,ms.exact(t,0,t,1));return En(t),e}).bind(function(t){return Kc(t.left,t.top,t.width,t.height)});var t,e,o}),o,e,n,ks(r,e).bind(function(t){return Ge(t.start)?vt.some(t.start):fn(t.start)}).getOr(t.element))})],rf="link-layout",uf=lo("type",{selection:of,node:cs,hotspot:os,submenu:[mo("item"),Uc(),Eo("overrides",{}),ta("placement",function(t,e,n){var o=Ma(n,e.item.element),r=jc(t.element,e,Bs(),Ms(),Bs(),Ms(),vt.none());return vt.some(Hc({anchorBox:o,bubble:kc(),overrides:e.overrides,layouts:r,placer:vt.none()}))})],makeshift:rs}),af=[xo("classes",er),Mo("mode","all",["all","layout","placement"])],cf=[Eo("useFixed",T),wo("getBounds")],sf=[go("anchor",uf),To("transition",af)],lf=function(c,s,l,f,t,d){var m=so("placement.info",$o(sf),t),g=m.anchor,p=f.element,h=l.get(f.uid);Ta(function(){fe(p,"position","fixed");var t=pe(p,"visibility");fe(p,"visibility","hidden");var e,n,o,r,i=s.useFixed()?(r=document.documentElement,Ec(0,0,r.clientWidth,r.clientHeight)):(n=ke((e=c).element),o=e.element.dom.getBoundingClientRect(),Tc(n.left,n.top,o.width,o.height)),u=g.placement,a=d.map(rt).or(s.getBounds);u(c,g,i).each(function(t){var e=t.placer.getOr(Fs)(c,i,t,a,f,h,m.transition);l.set(f.uid,e)}),t.fold(function(){ve(p,"visibility")},function(t){fe(p,"visibility",t)}),pe(p,"left").isNone()&&pe(p,"top").isNone()&&pe(p,"right").isNone()&&pe(p,"bottom").isNone()&&mt(pe(p,"position"),"fixed")&&ve(p,"position")},p)},ff=xa({fields:cf,name:"positioning",active:uc,apis:Object.freeze({__proto__:null,position:function(t,e,n,o,r){Wl(t,e,n,o,r,vt.none())},positionWithin:Wl,positionWithinBounds:lf,getMode:function(t,e,n){return e.useFixed()?"fixed":"absolute"},reset:function(t,e,n,o){var r=o.element;St(["position","left","right","top","bottom"],function(t){return ve(r,t)}),ce(r,Dc),n.clear(o.uid)}}),state:Object.freeze({__proto__:null,init:function(){var n={};return wu({readState:function(){return n},clear:function(t){k(t)?delete n[t]:n={}},set:function(t,e){n[t]=e},get:function(t){return tt(n,t)}})}})}),df=function(t){vr(t,Xi());var e=t.components();St(e,df)},mf=function(t){var e=t.components();St(e,mf),vr(t,Gi())},gf=function(t,e,n){t.getSystem().addToWorld(e),n(t.element,e.element),vn(t.element)&&mf(e),t.syncComponents()},pf=function(t,e,n){n(t,e.element);var o=Kt(e.element);St(o,function(t){e.getByDom(t).each(mf)})},hf=Object.freeze({__proto__:null,cloak:Gl,decloak:Xl,open:js,openWhileCloaked:function(t,e,n,o,r){Gl(t,e),js(t,e,n,o),r(),Xl(t,e)},close:Ws,isOpen:Gs,isPartOf:function(e,n,t,o){return Gs(0,0,t)&&t.get().exists(function(t){return n.isPartOf(e,t,o)})},getState:function(t,e,n){return n.get()},setContent:function(t,e,n,o){return n.get().map(function(){return Us(t,e,n,o)})}}),vf=Object.freeze({__proto__:null,events:function(n,o){return nu([Cr(Vi(),function(t,e){Ws(t,n,o)})])}}),bf=xa({fields:[Ju("onOpen"),Ju("onClose"),mo("isPartOf"),mo("getAttachPoint"),Eo("cloakVisibilityAttr","data-precloak-visibility")],name:"sandboxing",active:vf,apis:hf,state:Object.freeze({__proto__:null,init:function(){var t=gc(),e=rt("not-implemented");return wu({readState:e,isOpen:t.isSet,clear:t.clear,set:t.set,get:t.get})}})}),yf=rt("dismiss.popups"),xf=rt("reposition.popups"),wf=rt("mouse.released"),Sf=to([Eo("isExtraPart",T),To("fireEventInstead",[Eo("event",Yi())])]),kf=to([To("fireEventInstead",[Eo("event",qi())]),vo("doReposition")]),Cf=Object.freeze({__proto__:null,onLoad:qs,onUnload:Ks,setValue:function(t,e,n,o){e.store.manager.setValue(t,e,n,o)},getValue:function(t,e,n){return e.store.manager.getValue(t,e,n)},getState:function(t,e,n){return n}}),Of=Object.freeze({__proto__:null,events:function(n,o){var t=n.resetOnDom?[ou(function(t,e){qs(t,n,o)}),ru(function(t,e){Ks(t,n,o)})]:[ba(n,o,qs)];return nu(t)}}),_f=Object.freeze({__proto__:null,memory:Js,dataset:$s,manual:function(){return wu({readState:st})},init:function(t){return t.store.manager.state(t)}}),Tf=[wo("initialValue"),mo("getFallbackEntry"),mo("getDataKey"),mo("setValue"),ta("manager",{setValue:Qs,getValue:function(t,e,n){var o=e.store,r=o.getDataKey(t);return n.lookup(r).getOrThunk(function(){return o.getFallbackEntry(r)})},onLoad:function(e,n,o){n.store.initialValue.each(function(t){Qs(e,n,o,t)})},onUnload:function(t,e,n){n.clear()},state:$s})],Ef=[mo("getValue"),Eo("setValue",st),wo("initialValue"),ta("manager",{setValue:function(t,e,n,o){e.store.setValue(t,o),e.onSetValue(t,o)},getValue:function(t,e,n){return e.store.getValue(t)},onLoad:function(e,n,t){n.store.initialValue.each(function(t){n.store.setValue(e,t)})},onUnload:st,state:xu.init})],Df=xa({fields:[Do("store",{mode:"memory"},lo("mode",{memory:[wo("initialValue"),ta("manager",{setValue:function(t,e,n,o){n.set(o),e.onSetValue(t,o)},getValue:function(t,e,n){return n.get()},onLoad:function(t,e,n){e.store.initialValue.each(function(t){n.isNotSet()&&n.set(t)})},onUnload:function(t,e,n){n.clear()},state:Js})],manual:Ef,dataset:Tf})),Ju("onSetValue"),Eo("resetOnDom",!1)],name:"representing",active:Of,apis:Cf,extra:{setValueFrom:function(t,e){var n=Df.getValue(e);Df.setValue(t,n)}},state:_f}),Af=Zs,Bf=el,Mf="placeholder",Ff=Vo([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),If=function(r,i,u,a){return t=r,n=a,(nl(e=u)&&e.uiType===Mf?(c=e,s=n,(o=t).exists(function(t){return t!==c.owner})?Ff.single(!0,rt(c)):tt(s,c.name).fold(function(){throw new Error("Unknown placeholder component: "+c.name+"\nKnown: ["+Ct(s)+"]\nNamespace: "+o.getOr("none")+"\nSpec: "+JSON.stringify(c,null,2))},function(t){return t.replace()})):Ff.single(!1,rt(e))).fold(function(t,e){var n=nl(u)?e(i,u.config,u.validated):e(i),o=H(tt(n,"components").getOr([]),function(t){return If(r,i,t,a)});return[lt(lt({},n),{components:o})]},function(t,e){if(nl(u)){var n=e(i,u.config,u.validated);return u.validated.preprocess.getOr(h)(n)}return e(i)});var t,e,n,o,c,s},Rf=Ff.single,Nf=Ff.multiple,Pf=rt(Mf),Vf=Vo([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Hf=Eo("factory",{sketch:h}),Lf=Eo("schema",[]),zf=mo("name"),Uf=ar("pname","pname",Wn(function(t){return"<alloy."+Ir(t.name)+">"}),Zo()),jf=cr("schema",function(){return[wo("preprocess")]}),Wf=Eo("defaults",rt({})),Gf=Eo("overrides",rt({})),Xf=$o([Hf,Lf,zf,Uf,Wf,Gf]),Yf=$o([Hf,Lf,zf,Wf,Gf]),qf=$o([Hf,Lf,zf,Uf,Wf,Gf]),Kf=$o([Hf,jf,zf,mo("unit"),Uf,Wf,Gf]),Jf=il(Vf.required,Xf),$f=il(Vf.external,Yf),Qf=il(Vf.optional,qf),Zf=il(Vf.group,Kf),td=rt("entirety"),ed=Object.freeze({__proto__:null,required:Jf,external:$f,optional:Qf,group:Zf,asNamedPart:ol,name:rl,asCommon:function(t){return t.fold(h,h,h,h)},original:td}),nd=function(t,e){return{uiType:Pf(),owner:t,name:e}},od=Object.freeze({__proto__:null,generate:al,generateOne:cl,schemas:sl,names:ll,substitutes:fl,components:dl,defaultUids:yl,defaultUidsSchema:xl,getAllParts:hl,getAllPartNames:vl,getPart:ml,getPartOrDie:gl,getParts:pl,getPartsOrDie:bl}),rd=function(t){return Tt(t,"uid")?t:lt(lt({},t),{uid:pu("uid")})},id=to([mo("name"),mo("factory"),mo("configFields"),Eo("apis",{}),Eo("extraApis",{})]),ud=to([mo("name"),mo("factory"),mo("configFields"),mo("partFields"),Eo("apis",{}),Eo("extraApis",{})]),ad=Object.freeze({__proto__:null,getCurrent:function(t,e,n){return e.find(t)}}),cd=xa({fields:[mo("find")],name:"composing",apis:ad}),sd=["input","button","textarea","select"],ld=function(e,t,n){t.disableClass.each(function(t){Yr(e.element,t)}),(Tl(e,t)?function(t){oe(t.element,"disabled","disabled")}:function(t){oe(t.element,"aria-disabled","true")})(e),t.onDisabled(e)},fd=function(e,t,n){t.disableClass.each(function(t){qr(e.element,t)}),(Tl(e,t)?function(t){ce(t.element,"disabled")}:function(t){oe(t.element,"aria-disabled","false")})(e),t.onEnabled(e)},dd=Object.freeze({__proto__:null,enable:fd,disable:ld,isDisabled:El,onLoad:_l,set:function(t,e,n,o){(o?ld:fd)(t,e)}}),md=Object.freeze({__proto__:null,exhibit:function(t,e){return zr({classes:e.disabled()?e.disableClass.toArray():[]})},events:function(n,t){return nu([Sr(Ii(),function(t,e){return El(t,n)}),ba(n,t,_l)])}}),gd=xa({fields:[Io("disabled",T),Eo("useNative",!0),wo("disableClass"),Ju("onDisabled"),Ju("onEnabled")],name:"disabling",active:md,apis:dd}),pd=Object.freeze({__proto__:null,dehighlightAll:function(t,e,n){return Dl(t,e,0,[])},dehighlight:function(t,e,n,o){Yl(0,e,0,o)&&(qr(o.element,e.highlightClass),e.onDehighlight(t,o),vr(o,tu()))},highlight:Al,highlightFirst:function(e,n,t){ql(e,n).each(function(t){Al(e,n,0,t)})},highlightLast:function(e,n,t){Kl(e,n).each(function(t){Al(e,n,0,t)})},highlightAt:function(e,n,t,o){var r,i,u;i=o,u=vs((r=e).element,"."+n.itemClass),vt.from(u[i]).fold(function(){return Nn.error(new Error("No element found with index "+i))},r.getSystem().getByDom).fold(function(t){throw t},function(t){Al(e,n,0,t)})},highlightBy:function(e,n,t,o){N(Jl(e,n),o).each(function(t){Al(e,n,0,t)})},isHighlighted:Yl,getHighlighted:function(e,t,n){return Iu(e.element,"."+t.highlightClass).bind(function(t){return e.getSystem().getByDom(t).toOptional()})},getFirst:ql,getLast:Kl,getPrevious:function(t,e,n){return Bl(t,e,0,-1)},getNext:function(t,e,n){return Bl(t,e,0,1)},getCandidates:Jl}),hd=xa({fields:[mo("highlightClass"),mo("itemClass"),Ju("onHighlight"),Ju("onDehighlight")],name:"highlighting",apis:pd}),vd=[8],bd=[9],yd=[13],xd=[27],wd=[32],Sd=[37],kd=[38],Cd=[39],Od=[40],_d=O(Vl);function Td(t,e,n,o,a){function c(e,n,t,o,r){var i=t(e,n,o,r),u=n.event;return N(i,function(t){return t.matches(u)}).map(function(t){return t.classification}).bind(function(t){return t(e,n,o,r)})}var r={schema:function(){return t.concat([Eo("focusManager",Ul()),Do("focusInside","onFocus",io(function(t){return wt(["onFocus","onEnterOrSpace","onApi"],t)?Nn.value(t):Nn.error("Invalid value for focusInside")})),ta("handler",r),ta("state",e),ta("sendFocusIn",a)])},processKey:c,toEvents:function(i,u){var t=i.focusInside!==Zl.OnFocusMode?vt.none():a(i).map(function(n){return Cr(Ai(),function(t,e){n(t,i,u),e.stop()})}),e=[Cr(xi(),function(o,r){c(o,r,n,i,u).fold(function(){var e=o,n=r,t=Nl(wd.concat(yd))(n.event);i.focusInside===Zl.OnEnterOrSpaceMode&&t&&gr(e,n)&&a(i).each(function(t){t(e,i,u),n.stop()})},function(t){r.stop()})}),Cr(wi(),function(t,e){c(t,e,o,i,u).each(function(t){e.stop()})})];return nu(t.toArray().concat(e))}};return r}function Ed(t){function a(t,e){return 0<xe(t.visibilitySelector.bind(function(t){return Ru(e,t)}).getOr(e))}function e(e,n,t){var o=n,r=F(vs(e.element,o.selector),function(t){return a(o,t)});vt.from(r[o.firstTabstop]).each(function(t){n.focusManager.set(e,t)})}function o(n,t,r,i){var e,u=vs(n.element,r.selector);return(e=r).focusManager.get(n).bind(function(t){return Ru(t,e.selector)}).bind(function(t){return P(u,C(zt,t)).bind(function(t){return e=n,o=r,i(u,t,function(t){return a(e=o,n=t)&&e.useTabstopAt(n);var e,n}).fold(function(){return o.cyclic?vt.some(!0):vt.none()},function(t){return o.focusManager.set(e,t),vt.some(!0)});var e,o})})}var n=[wo("onEscape"),wo("onEnter"),Eo("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),Eo("firstTabstop",0),Eo("useTabstopAt",D),wo("visibilitySelector")].concat([t]),r=rt([Ll(Pl([Vl,Nl(bd)]),function(t,e,n){return o(t,0,n,n.cyclic?Ml:Fl)}),Ll(Nl(bd),function(t,e,n){return o(t,0,n,n.cyclic?Il:Rl)}),Ll(Nl(xd),function(e,n,t){return t.onEscape.bind(function(t){return t(e,n)})}),Ll(Pl([_d,Nl(yd)]),function(e,n,t){return t.onEnter.bind(function(t){return t(e,n)})})]),i=rt([]);return Td(n,xu.init,r,i,function(){return vt.some(e)})}function Dd(t,e,n){return Ol(n)&&Nl(wd)(e.event)?vt.none():(xr(t,n,Ii()),vt.some(!0))}function Ad(t,e){return vt.some(!0)}function Bd(t,e,n){return n.execute(t,e,t.element)}function Md(){var n=gc();return wu({readState:function(){return n.get().map(function(t){return{numRows:String(t.numRows),numColumns:String(t.numColumns)}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(t,e){n.set({numRows:t,numColumns:e})},getNumRows:function(){return n.get().map(function(t){return t.numRows})},getNumColumns:function(){return n.get().map(function(t){return t.numColumns})}})}function Fd(i){return function(t,e,n,o){var r=i(t.element);return qm(r,t,e,n,o)}}function Id(t,e){return Fd(Cc(t,e))}function Rd(t,e){return Fd(Cc(e,t))}function Nd(r){return function(t,e,n,o){return qm(r,t,e,n,o)}}function Pd(t){return!((e=t.dom).offsetWidth<=0&&e.offsetHeight<=0);var e}function Vd(t,e,n){var o,r=F(vs(t,n),Pd);return P(o=r,function(t){return zt(t,e)}).map(function(t){return{index:t,candidates:o}})}function Hd(t,e){return P(t,function(t){return zt(e,t)})}function Ld(n,t,o,e){return e(Math.floor(t/o),t%o).bind(function(t){var e=t.row*o+t.column;return 0<=e&&e<n.length?vt.some(n[e]):vt.none()})}function zd(r,t,i,u,a){return Ld(r,t,u,function(t,e){var n=t===i-1?r.length-t*u:u,o=oa(e,a,0,n-1);return vt.some({row:t,column:o})})}function Ud(i,t,u,a,c){return Ld(i,t,a,function(t,e){var n=oa(t,c,0,u-1),o=n===u-1?i.length-n*a:a,r=Wa(e,0,o-1);return vt.some({row:n,column:r})})}function jd(e,n,t){Iu(e.element,n.selector).each(function(t){n.focusManager.set(e,t)})}function Wd(r){return function(t,e,n,o){return Vd(t,e,n.selector).bind(function(t){return r(t.candidates,t.index,o.getNumRows().getOr(n.initSize.numRows),o.getNumColumns().getOr(n.initSize.numColumns))})}}function Gd(t,e,n){return n.captureTab?vt.some(!0):vt.none()}function Xd(t,e,n,i){var u=function(t,e,n){var o,r=oa(e,i,0,n.length-1);return r===t?vt.none():"button"===Ft(o=n[r])&&"disabled"===ie(o,"disabled")?u(t,r,n):vt.from(n[r])};return Vd(t,n,e).bind(function(t){var e=t.index,n=t.candidates;return u(e,e,n)})}function Yd(e,n,o){return(r=o).focusManager.get(e).bind(function(t){return Ru(t,r.selector)}).bind(function(t){return o.execute(e,n,t)});var r}function qd(e,n,t){n.getInitial(e).orThunk(function(){return Iu(e.element,n.selector)}).each(function(t){n.focusManager.set(e,t)})}function Kd(t,e,n){return Xd(t,n.selector,e,-1)}function Jd(t,e,n){return Xd(t,n.selector,e,1)}function $d(r){return function(t,e,n,o){return r(t,e,n,o).bind(function(){return n.executeOnMove?Yd(t,e,n):vt.some(!0)})}}function Qd(t,e,n){return n.onEscape(t,e)}function Zd(t,e,n){return vt.from(t[e]).bind(function(t){return vt.from(t[n]).map(function(t){return{rowIndex:e,columnIndex:n,cell:t}})})}function tm(t,e,n,o){return Zd(t,e,oa(n,o,0,t[e].length-1))}function em(t,e,n,o){var r=oa(n,o,0,t.length-1),i=t[r].length;return Zd(t,r,Wa(e,0,i-1))}function nm(t,e,n,o){var r=t[e].length;return Zd(t,e,Wa(n+o,0,r-1))}function om(t,e,n,o){var r=Wa(n+o,0,t.length-1),i=t[r].length;return Zd(t,r,Wa(e,0,i-1))}function rm(e,n,t){n.previousSelector(e).orThunk(function(){var t=n.selectors;return Iu(e.element,t.cell)}).each(function(t){n.focusManager.set(e,t)})}function im(t,o){return function(e,n,i){var u=i.cycles?t:o;return Ru(n,i.selectors.row).bind(function(t){return Hd(vs(t,i.selectors.cell),n).bind(function(o){var r=vs(e,i.selectors.row);return Hd(r,t).bind(function(t){var e,n=(e=i,B(r,function(t){return vs(t,e.selectors.cell)}));return u(n,t,o).map(function(t){return t.cell})})})})}}function um(e,n,o){return o.focusManager.get(e).bind(function(t){return o.execute(e,n,t)})}function am(e,n,t){Iu(e.element,n.selector).each(function(t){n.focusManager.set(e,t)})}function cm(t,e,n){return Xd(t,n.selector,e,-1)}function sm(t,e,n){return Xd(t,n.selector,e,1)}function lm(t,e,n,o){var r=t.getSystem().build(o);gf(t,r,n)}function fm(t,e,n,o){N(Eg(t),function(t){return zt(o.element,t.element)}).each(Vs)}function dm(e,t,n,r,o){var i=Eg(e);return vt.from(i[r]).map(function(t){return fm(e,0,0,t),o.each(function(t){lm(e,0,function(t,e){var n,o=e;Jt(n=t,r).fold(function(){Tn(n,o)},function(t){Ee(t,o)})},t)}),t})}function mm(t,e){var n,o;return{key:t,value:{config:{},me:(n=t,o=nu(e),xa({fields:[mo("enabled")],name:n,active:{events:rt(o)}})),configAsRaw:rt({}),initialConfig:{},state:xu}}}function gm(t,e){e.ignore||(ka(t.element),e.onFocus(t))}function pm(t,e,n){var o=e.aria;o.update(t,o,n.get())}function hm(e,t,n){t.toggleClass.each(function(t){(n.get()?Yr:qr)(e.element,t)})}function vm(t,e,n){zm(t,e,n,!n.get())}function bm(t,e,n){n.set(!0),hm(t,e,n),pm(t,e,n)}function ym(t,e,n){n.set(!1),hm(t,e,n),pm(t,e,n)}function xm(t,e,n){zm(t,e,n,e.selected)}function wm(){function t(t,e){e.stop(),yr(t)}return[Cr(Ci(),t),Cr(Ni(),t),Dr(si()),Dr(mi())]}function Sm(t){return nu(ft([t.map(function(n){return uu(function(t,e){n(t),e.stop()})}).toArray(),wm()]))}function km(t){(_a(t.element).isNone()||Mg.isFocused(t))&&(Mg.isFocused(t)||Mg.focus(t),br(t,Ng,{item:t}))}function Cm(t){br(t,Pg,{item:t})}function Om(t,e){return t.x+t.width/2-e.width/2}function _m(t,e){return t.x+t.width-e.width}function Tm(t,e){return t.y+t.height-e.height}function Em(t,e){return t.y+t.height/2-e.height/2}function Dm(t,e,n){return na(_m(t,e),Tm(t,e),n.insetSouthwest(),Ha(),"southwest",ra(t,{right:0,bottom:3}),ep)}function Am(t,e,n){return na(t.x,Tm(t,e),n.insetSoutheast(),Va(),"southeast",ra(t,{left:1,bottom:3}),ep)}function Bm(t,e,n){return na(_m(t,e),t.y,n.insetNorthwest(),Pa(),"northwest",ra(t,{right:0,top:2}),ep)}function Mm(t,e,n){return na(t.x,t.y,n.insetNortheast(),Na(),"northeast",ra(t,{left:1,top:2}),ep)}function Fm(t,e,n){return na(_m(t,e),Em(t,e),n.insetEast(),ja(),"east",ra(t,{right:0}),ep)}function Im(t,e,n){return na(t.x,Em(t,e),n.insetWest(),Ua(),"west",ra(t,{left:1}),ep)}function Rm(t){switch(t){case"north":return np;case"northeast":return Mm;case"northwest":return Bm;case"south":return op;case"southeast":return Am;case"southwest":return Dm;case"east":return Fm;case"west":return Im}}function Nm(t,e,n,o,r){return sc(o).map(Rm).getOr(np)(t,e,n,o,r)}function Pm(t){switch(t){case"north":return op;case"northeast":return Am;case"northwest":return Dm;case"south":return np;case"southeast":return Mm;case"southwest":return Bm;case"east":return Im;case"west":return Fm}}function Vm(t,e,n,o,r){return sc(o).map(Pm).getOr(np)(t,e,n,o,r)}function Hm(t){var e=Mt.fromHtml(t),n=Kt(e),o=R(void 0!==e.dom.attributes?e.dom.attributes:[],function(t,e){var n;return"class"===e.name?t:lt(lt({},t),((n={})[e.name]=e.value,n))},{}),r=Array.prototype.slice.call(e.dom.classList,0),i=0===n.length?{}:{innerHtml:Br(e)};return lt({tag:Ft(e),classes:r,attributes:o},i)}function Lm(t){var e=void 0!==t.uid&&et(t,"uid")?t.uid:pu("memento");return{get:function(t){return t.getSystem().getByUid(e).getOrDie()},getOpt:function(t){return t.getSystem().getByUid(e).toOptional()},asSpec:function(){return lt(lt({},t),{uid:e})}}}(tf=Zl=Zl||{}).OnFocusMode="onFocus",tf.OnEnterOrSpaceMode="onEnterOrSpace",tf.OnApiMode="onApi";function zm(t,e,n,o){(o?bm:ym)(t,e,n)}function Um(t,e,n){oe(t.element,"aria-expanded",n)}function jm(t){return"prepared"===t.type?vt.some(t.menu):vt.none()}var Wm=Ed(cr("cyclic",T)),Gm=Ed(cr("cyclic",D)),Xm=Td([Eo("execute",Dd),Eo("useSpace",!1),Eo("useEnter",!0),Eo("useControlEnter",!1),Eo("useDown",!1)],xu.init,function(t,e,n,o){var r=n.useSpace&&!Ol(t.element)?wd:[],i=n.useEnter?yd:[],u=n.useDown?Od:[];return[Ll(Nl(r.concat(i).concat(u)),Bd)].concat(n.useControlEnter?[Ll(Pl([Hl,Nl(yd)]),Bd)]:[])},function(t,e,n,o){return n.useSpace&&!Ol(t.element)?[Ll(Nl(wd),Ad)]:[]},function(){return vt.none()}),Ym=Object.freeze({__proto__:null,flatgrid:Md,init:function(t){return t.state(t)}}),qm=function(e,n,t,o,r){return o.focusManager.get(n).bind(function(t){return e(n.element,t,o,r)}).map(function(t){return o.focusManager.set(n,t),!0})},Km=Nd,Jm=Nd,$m=Nd,Qm=Wd(function(t,e,n,o){return zd(t,e,n,o,-1)}),Zm=Wd(function(t,e,n,o){return zd(t,e,n,o,1)}),tg=Wd(function(t,e,n,o){return Ud(t,e,n,o,-1)}),eg=Wd(function(t,e,n,o){return Ud(t,e,n,o,1)}),ng=Td([mo("selector"),Eo("execute",Dd),$u("onEscape"),Eo("captureTab",!1),Ia()],Md,rt([Ll(Nl(Sd),Id(Qm,Zm)),Ll(Nl(Cd),Rd(Qm,Zm)),Ll(Nl(kd),Km(tg)),Ll(Nl(Od),Jm(eg)),Ll(Pl([Vl,Nl(bd)]),Gd),Ll(Pl([_d,Nl(bd)]),Gd),Ll(Nl(xd),function(t,e,n){return n.onEscape(t,e)}),Ll(Nl(wd.concat(yd)),function(e,n,o,t){return(r=o).focusManager.get(e).bind(function(t){return Ru(t,r.selector)}).bind(function(t){return o.execute(e,n,t)});var r})]),rt([Ll(Nl(wd),Ad)]),function(){return vt.some(jd)}),og=[mo("selector"),Eo("getInitial",vt.none),Eo("execute",Dd),$u("onEscape"),Eo("executeOnMove",!1),Eo("allowVertical",!0)],rg=rt([Ll(Nl(wd),Ad)]),ig=Td(og,xu.init,function(t,e,n,o){var r=Sd.concat(n.allowVertical?kd:[]),i=Cd.concat(n.allowVertical?Od:[]);return[Ll(Nl(r),$d(Id(Kd,Jd))),Ll(Nl(i),$d(Rd(Kd,Jd))),Ll(Nl(yd),Yd),Ll(Nl(wd),Yd),Ll(Nl(xd),Qd)]},rg,function(){return vt.some(qd)}),ug=[bo("selectors",[mo("row"),mo("cell")]),Eo("cycles",!0),Eo("previousSelector",vt.none),Eo("execute",Dd)],ag=im(function(t,e,n){return tm(t,e,n,-1)},function(t,e,n){return nm(t,e,n,-1)}),cg=im(function(t,e,n){return tm(t,e,n,1)},function(t,e,n){return nm(t,e,n,1)}),sg=im(function(t,e,n){return em(t,n,e,-1)},function(t,e,n){return om(t,n,e,-1)}),lg=im(function(t,e,n){return em(t,n,e,1)},function(t,e,n){return om(t,n,e,1)}),fg=rt([Ll(Nl(Sd),Id(ag,cg)),Ll(Nl(Cd),Rd(ag,cg)),Ll(Nl(kd),Km(sg)),Ll(Nl(Od),Jm(lg)),Ll(Nl(wd.concat(yd)),function(e,n,o){return _a(e.element).bind(function(t){return o.execute(e,n,t)})})]),dg=rt([Ll(Nl(wd),Ad)]),mg=Td(ug,xu.init,fg,dg,function(){return vt.some(rm)}),gg=[mo("selector"),Eo("execute",Dd),Eo("moveOnTab",!1)],pg=rt([Ll(Nl(kd),$m(cm)),Ll(Nl(Od),$m(sm)),Ll(Pl([Vl,Nl(bd)]),function(t,e,n,o){return n.moveOnTab?$m(cm)(t,e,n,o):vt.none()}),Ll(Pl([_d,Nl(bd)]),function(t,e,n,o){return n.moveOnTab?$m(sm)(t,e,n,o):vt.none()}),Ll(Nl(yd),um),Ll(Nl(wd),um)]),hg=rt([Ll(Nl(wd),Ad)]),vg=Td(gg,xu.init,pg,hg,function(){return vt.some(am)}),bg=Td([$u("onSpace"),$u("onEnter"),$u("onShiftEnter"),$u("onLeft"),$u("onRight"),$u("onTab"),$u("onShiftTab"),$u("onUp"),$u("onDown"),$u("onEscape"),Eo("stopSpaceKeyup",!1),wo("focusIn")],xu.init,function(t,e,n){return[Ll(Nl(wd),n.onSpace),Ll(Pl([_d,Nl(yd)]),n.onEnter),Ll(Pl([Vl,Nl(yd)]),n.onShiftEnter),Ll(Pl([Vl,Nl(bd)]),n.onShiftTab),Ll(Pl([_d,Nl(bd)]),n.onTab),Ll(Nl(kd),n.onUp),Ll(Nl(Od),n.onDown),Ll(Nl(Sd),n.onLeft),Ll(Nl(Cd),n.onRight),Ll(Nl(wd),n.onSpace),Ll(Nl(xd),n.onEscape)]},function(t,e,n){return n.stopSpaceKeyup?[Ll(Nl(wd),Ad)]:[]},function(t){return t.focusIn}),yg=Wm.schema(),xg=Gm.schema(),wg=ig.schema(),Sg=ng.schema(),kg=mg.schema(),Cg=Xm.schema(),Og=vg.schema(),_g=bg.schema(),Tg=wa({branchKey:"mode",branches:Object.freeze({__proto__:null,acyclic:yg,cyclic:xg,flow:wg,flatgrid:Sg,matrix:kg,execution:Cg,menu:Og,special:_g}),name:"keying",active:{events:function(t,e){return t.handler.toEvents(t,e)}},apis:{focusIn:function(e,n,o){n.sendFocusIn(n).fold(function(){e.getSystem().triggerFocus(e.element,e.element)},function(t){t(e,n,o)})},setGridSize:function(t,e,n,o,r){et(n,"setGridSize")?n.setGridSize(o,r):console.error("Layout does not support setGridSize")}},state:Ym}),Eg=function(t,e){return t.components()},Dg=xa({fields:[],name:"replacing",apis:Object.freeze({__proto__:null,append:function(t,e,n,o){lm(t,0,Tn,o)},prepend:function(t,e,n,o){lm(t,0,Ae,o)},remove:fm,replaceAt:dm,replaceBy:function(e,t,n,o,r){return P(Eg(e),o).bind(function(t){return dm(e,0,0,t,r)})},set:function(e,t,n,o){Ta(function(){var t=B(o,e.getSystem().build);Rs(e,t)},e.element)},contents:Eg})}),Ag=Object.freeze({__proto__:null,focus:gm,blur:function(t,e){e.ignore||t.element.dom.blur()},isFocused:function(t){return Ca(t.element)}}),Bg=Object.freeze({__proto__:null,exhibit:function(t,e){return zr(e.ignore?{}:{attributes:{tabindex:"-1"}})},events:function(n){return nu([Cr(Ai(),function(t,e){gm(t,n),e.stop()})].concat(n.stopMousedown?[Cr(mi(),function(t,e){e.event.prevent()})]:[]))}}),Mg=xa({fields:[Ju("onFocus"),Eo("stopMousedown",!1),Eo("ignore",!1)],name:"focusing",active:Bg,apis:Ag}),Fg=Object.freeze({__proto__:null,onLoad:xm,toggle:vm,isOn:function(t,e,n){return n.get()},on:bm,off:ym,set:zm}),Ig=Object.freeze({__proto__:null,exhibit:function(){return zr({})},events:function(t,e){var n,o,r,i=(n=t,o=e,r=vm,uu(function(t){r(t,n,o)})),u=ba(t,e,xm);return nu(ft([t.toggleOnExecute?[i]:[],[u]]))}}),Rg=xa({fields:[Eo("selected",!1),wo("toggleClass"),Eo("toggleOnExecute",!0),Do("aria",{mode:"none"},lo("mode",{pressed:[Eo("syncWithExpanded",!1),ta("update",function(t,e,n){oe(t.element,"aria-pressed",n),e.syncWithExpanded&&Um(t,0,n)})],checked:[ta("update",function(t,e,n){oe(t.element,"aria-checked",n)})],expanded:[ta("update",Um)],selected:[ta("update",function(t,e,n){oe(t.element,"aria-selected",n)})],none:[ta("update",st)]}))],name:"toggling",active:Ig,apis:Fg,state:{init:function(){var e=Po(!1);return{get:function(){return e.get()},set:function(t){return e.set(t)},clear:function(){return e.set(!1)},readState:function(){return e.get()}}}}}),Ng="alloy.item-hover",Pg="alloy.item-focus",Vg=rt(Ng),Hg=rt(Pg),Lg=[mo("data"),mo("components"),mo("dom"),Eo("hasSubmenu",!1),wo("toggling"),Af("itemBehaviours",[Rg,Mg,Tg,Df]),Eo("ignoreFocus",!1),Eo("domModification",{}),ta("builder",function(t){return{dom:t.dom,domModification:lt(lt({},t.domModification),{attributes:lt(lt(lt({role:t.toggling.isSome()?"menuitemcheckbox":"menuitem"},t.domModification.attributes),{"aria-haspopup":t.hasSubmenu}),t.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:Bf(t.itemBehaviours,[t.toggling.fold(Rg.revoke,function(t){return Rg.config(lt({aria:{mode:"checked"}},t))}),Mg.config({ignore:t.ignoreFocus,stopMousedown:t.ignoreFocus,onFocus:function(t){Cm(t)}}),Tg.config({mode:"execution"}),Df.config({store:{mode:"memory",initialValue:t.data}}),mm("item-type-events",V(V([],wm(),!0),[Cr(vi(),km),Cr(Ri(),Mg.focus)],!1))]),components:t.components,eventOrder:t.eventOrder}}),Eo("eventOrder",{})],zg=[mo("dom"),mo("components"),ta("builder",function(t){return{dom:t.dom,components:t.components,events:nu([Cr(Ri(),function(t,e){e.stop()})])}})],Ug=rt("item-widget"),jg=rt([Jf({name:"widget",overrides:function(e){return{behaviours:ec([Df.config({store:{mode:"manual",getValue:function(t){return e.data},setValue:st}})])}}})]),Wg=lo("type",{widget:[mo("uid"),mo("data"),mo("components"),mo("dom"),Eo("autofocus",!1),Eo("ignoreFocus",!1),Af("widgetBehaviours",[Df,Mg,Tg]),Eo("domModification",{}),xl(jg()),ta("builder",function(n){function o(t){return ml(t,n,"widget").map(function(t){return Tg.focusIn(t),t})}function t(t,e){return Ol(e.event.target)||n.autofocus&&e.setSource(t.element),vt.none()}var e=fl(Ug(),n,jg()),r=dl(Ug(),n,e.internals());return{dom:n.dom,components:r,domModification:n.domModification,events:nu([uu(function(t,e){o(t).each(function(t){e.stop()})}),Cr(vi(),km),Cr(Ri(),function(t,e){n.autofocus?o(t):Mg.focus(t)})]),behaviours:Bf(n.widgetBehaviours,[Df.config({store:{mode:"memory",initialValue:n.data}}),Mg.config({ignore:n.ignoreFocus,onFocus:function(t){Cm(t)}}),Tg.config({mode:"special",focusIn:n.autofocus?function(t){o(t)}:rc(),onLeft:t,onRight:t,onEscape:function(t,e){return Mg.isFocused(t)||n.autofocus?(n.autofocus&&e.setSource(t.element),vt.none()):(Mg.focus(t),vt.some(!0))}})])}})],item:Lg,separator:zg}),Gg=rt([Zf({factory:{sketch:function(t){var e=so("menu.spec item",Wg,t);return e.builder(e)}},name:"items",unit:"item",defaults:function(t,e){return Tt(e,"uid")?e:lt(lt({},e),{uid:pu("item")})},overrides:function(t,e){return{type:e.type,ignoreFocus:t.fakeFocus,domModification:{classes:[t.markers.item]}}}})]),Xg=rt([mo("value"),mo("items"),mo("dom"),mo("components"),Eo("eventOrder",{}),Zs("menuBehaviours",[hd,Df,cd,Tg]),Do("movement",{mode:"menu",moveOnTab:!0},lo("mode",{grid:[Ia(),ta("config",function(t,e){return{mode:"flatgrid",selector:"."+t.markers.item,initSize:{numColumns:e.initSize.numColumns,numRows:e.initSize.numRows},focusManager:t.focusManager}})],matrix:[ta("config",function(t,e){return{mode:"matrix",selectors:{row:e.rowSelector,cell:"."+t.markers.item},focusManager:t.focusManager}}),mo("rowSelector")],menu:[Eo("moveOnTab",!0),ta("config",function(t,e){return{mode:"menu",selector:"."+t.markers.item,moveOnTab:e.moveOnTab,focusManager:t.focusManager}})]})),go("markers",Fa()),Eo("fakeFocus",!1),Eo("focusManager",Ul()),Ju("onHighlight")]),Yg=rt("alloy.menu-focus"),qg=Cl({name:"Menu",configFields:Xg(),partFields:Gg(),factory:function(t,e,n,o){return{uid:t.uid,dom:t.dom,markers:t.markers,behaviours:el(t.menuBehaviours,[hd.config({highlightClass:t.markers.selectedItem,itemClass:t.markers.item,onHighlight:t.onHighlight}),Df.config({store:{mode:"memory",initialValue:t.value}}),cd.config({find:vt.some}),Tg.config(t.movement.config(t,t.movement))]),events:nu([Cr(Hg(),function(e,n){var t=n.event;e.getSystem().getByDom(t.target).each(function(t){hd.highlight(e,t),n.stop(),br(e,Yg(),{menu:e,item:t})})}),Cr(Vg(),function(t,e){var n=e.event.item;hd.highlight(t,n)})]),components:e,eventOrder:t.eventOrder,domModification:{attributes:{role:"menu"}}}}}),Kg=function(n,o,r,t){return tt(r,t).bind(function(t){return tt(n,t).bind(function(t){var e=Kg(n,o,r,t);return vt.some([t].concat(e))})}).getOr([])},Jg=function(){function a(t){return e(t).bind(jm)}function n(t){return tt(c.get(),t)}var c=Po({}),i=Po({}),s=Po({}),l=gc(),u=Po({}),e=function(t){return tt(i.get(),t)};return{setMenuBuilt:function(t,e){var n;i.set(lt(lt({},i.get()),((n={})[t]={type:"prepared",menu:e},n)))},setContents:function(t,e,n,o){l.set(t),c.set(n),i.set(e),u.set(o);var r=function(t,e){var n={};J(t,function(t,e){St(t,function(t){n[t]=e})});var o=e,r=_t(e,function(t,e){return{k:t,v:e}}),i=dt(r,function(t,e){return[e].concat(Kg(n,o,r,e))});return dt(n,function(t){return tt(i,t).getOr([t])})}(o,n);s.set(r)},expand:function(n){return tt(c.get(),n).map(function(t){var e=tt(s.get(),n).getOr([]);return[t].concat(e)})},refresh:function(t){return tt(s.get(),t)},collapse:function(t){return tt(s.get(),t).bind(function(t){return 1<t.length?vt.some(t.slice(1)):vt.none()})},lookupMenu:e,lookupItem:n,otherMenus:function(t){var e=u.get();return U(Ct(e),t)},getPrimary:function(){return l.get().bind(a)},getMenus:function(){return i.get()},clear:function(){c.set({}),i.set({}),s.set({}),l.clear()},isClear:function(){return l.get().isNone()},getTriggeringPath:function(t,u){var e=F(n(t).toArray(),function(t){return a(t).isSome()});return tt(s.get(),t).bind(function(t){var n=z(e.concat(t));return function(t){for(var e=[],n=0;n<t.length;n++){var o=t[n];if(!o.isSome())return vt.none();e.push(o.getOrDie())}return vt.some(e)}(H(n,function(t,e){return o=t,r=u,i=n.slice(0,e+1),a(o).bind(function(e){return n=o,Q(c.get(),function(t,e){return t===n}).bind(function(t){return r(t).map(function(t){return{triggeredMenu:e,triggeringItem:t,triggeringPath:i}})});var n}).fold(function(){return mt(l.get(),t)?[]:[vt.none()]},function(t){return[vt.some(t)]});var o,r,i}))})}}},$g=jm,Qg=rt("collapse-item"),Zg=kl({name:"TieredMenu",configFields:[Zu("onExecute"),Zu("onEscape"),Qu("onOpenMenu"),Qu("onOpenSubmenu"),Ju("onRepositionMenu"),Ju("onCollapseMenu"),Eo("highlightImmediately",!0),bo("data",[mo("primary"),mo("menus"),mo("expansions")]),Eo("fakeFocus",!1),Ju("onHighlight"),Ju("onHover"),Yu(),mo("dom"),Eo("navigateOnHover",!0),Eo("stayInDom",!1),Zs("tmenuBehaviours",[Tg,hd,cd,Dg]),Eo("eventOrder",{})],apis:{collapseMenu:function(t,e){t.collapseMenu(e)},highlightPrimary:function(t,e){t.highlightPrimary(e)},repositionMenus:function(t,e){t.repositionMenus(e)}},factory:function(a,t){function n(t){var o,r,e=(o=t,r=a.data.primary,dt(a.data.menus,function(t,e){function n(){return qg.sketch(lt(lt({},t),{value:e,markers:a.markers,fakeFocus:a.fakeFocus,onHighlight:a.onHighlight,focusManager:(a.fakeFocus?jl:Ul)()}))}return e===r?{type:"prepared",menu:o.getSystem().build(n())}:{type:"notbuilt",nbMenu:n}})),n=dt(a.data.menus,function(t,e){return H(t.items,function(t){return"separator"===t.type?[]:[t.data.value]})});return g.setContents(a.data.primary,e,a.data.expansions,n),g.getPrimary()}function c(t){return Df.getValue(t).value}function u(e,t){hd.highlight(e,t),hd.getHighlighted(t).orThunk(function(){return hd.getFirst(t)}).each(function(t){xr(e,t.element,Ri())})}function s(e,t){return nt(B(t,function(t){return e.lookupMenu(t).bind(function(t){return"prepared"===t.type?vt.some(t.menu):vt.none()})}))}function l(e,t,n){var o=s(t,t.otherMenus(n));St(o,function(t){$r(t.element,[a.markers.backgroundMenu]),a.stayInDom||Dg.remove(e,t)})}function f(t,o){var e;J((e=t,r.get().getOrThunk(function(){var n={},t=F(vs(e.element,"."+a.markers.item),function(t){return"true"===ie(t,"aria-haspopup")});return St(t,function(t){e.getSystem().getByDom(t).each(function(t){var e=c(t);n[e]=t})}),r.set(n),n})),function(t,e){var n=wt(o,e);oe(t.element,"aria-expanded",n)})}function d(o,r,i){return vt.from(i[0]).bind(function(t){return r.lookupMenu(t).bind(function(t){if("notbuilt"===t.type)return vt.none();var e=t.menu,n=s(r,i.slice(1));return St(n,function(t){Yr(t.element,a.markers.backgroundMenu)}),vn(e.element)||Dg.append(o,Eu(e)),$r(e.element,[a.markers.backgroundMenu]),u(o,e),l(o,r,i),vt.some(e)})})}var m,e,r=gc(),g=Jg();function i(r,i,u){if(void 0===u&&(u=m.HighlightSubmenu),i.hasConfigured(gd)&&gd.isDisabled(i))return vt.some(i);var t=c(i);return g.expand(t).bind(function(o){return f(r,o),vt.from(o[0]).bind(function(n){return g.lookupMenu(n).bind(function(t){var e=function(t,e,n){if("notbuilt"!==n.type)return n.menu;var o=t.getSystem().build(n.nbMenu());return g.setMenuBuilt(e,o),o}(r,n,t);return vn(e.element)||Dg.append(r,Eu(e)),a.onOpenSubmenu(r,i,e,z(o)),u===m.HighlightSubmenu?(hd.highlightFirst(e),d(r,g,o)):(hd.dehighlightAll(e),vt.some(i))})})})}function o(e,n){var t=c(n);return g.collapse(t).bind(function(t){return f(e,t),d(e,g,t).map(function(t){return a.onCollapseMenu(e,n,t),t})})}function p(n){return function(e,t){return Ru(t.getSource(),"."+a.markers.item).bind(function(t){return e.getSystem().getByDom(t).toOptional().bind(function(t){return n(e,t).map(D)})})}}function h(t){return hd.getHighlighted(t).bind(hd.getHighlighted)}(e=m={})[e.HighlightSubmenu=0]="HighlightSubmenu",e[e.HighlightParent=1]="HighlightParent";var v=nu([Cr(Yg(),function(n,o){var t=o.event.item;g.lookupItem(c(t)).each(function(){var t=o.event.menu;hd.highlight(n,t);var e=c(o.event.item);g.refresh(e).each(function(t){return l(n,g,t)})})}),uu(function(e,t){var n=t.event.target;e.getSystem().getByDom(n).each(function(t){0===c(t).indexOf("collapse-item")&&o(e,t),i(e,t,m.HighlightSubmenu).fold(function(){a.onExecute(e,t)},st)})}),ou(function(e,t){n(e).each(function(t){Dg.append(e,Eu(t)),a.onOpenMenu(e,t),a.highlightImmediately&&u(e,t)})})].concat(a.navigateOnHover?[Cr(Vg(),function(t,e){var n=e.event.item,o=t,r=c(n);g.refresh(r).bind(function(t){return f(o,t),d(o,g,t)}),i(t,n,m.HighlightParent),a.onHover(t,n)})]:[])),b={collapseMenu:function(e){h(e).each(function(t){o(e,t)})},highlightPrimary:function(e){g.getPrimary().each(function(t){u(e,t)})},repositionMenus:function(o){g.getPrimary().bind(function(e){return h(o).bind(function(t){var e=c(t),n=nt(B(Z(g.getMenus()),$g));return g.getTriggeringPath(e,function(t){return e=t,K(n,function(t){return t.getSystem().isConnected()?N(hd.getCandidates(t),function(t){return c(t)===e}):vt.none()});var e})}).map(function(t){return{primary:e,triggeringPath:t}})}).fold(function(){vt.from(o.components()[0]).filter(function(t){return"menu"===ie(t.element,"role")}).each(function(t){a.onRepositionMenu(o,t,[])})},function(t){var e=t.primary,n=t.triggeringPath;a.onRepositionMenu(o,e,n)})}};return{uid:a.uid,dom:a.dom,markers:a.markers,behaviours:el(a.tmenuBehaviours,[Tg.config({mode:"special",onRight:p(function(t,e){return Ol(e.element)?vt.none():i(t,e,m.HighlightSubmenu)}),onLeft:p(function(t,e){return Ol(e.element)?vt.none():o(t,e)}),onEscape:p(function(t,e){return o(t,e).orThunk(function(){return a.onEscape(t,e).map(function(){return t})})}),focusIn:function(e,t){g.getPrimary().each(function(t){xr(e,t.element,Ri())})}}),hd.config({highlightClass:a.markers.selectedMenu,itemClass:a.markers.menu}),cd.config({find:function(t){return hd.getHighlighted(t)}}),Dg.config({})]),eventOrder:a.eventOrder,apis:b,events:v}},extraApis:{tieredData:function(t,e,n){return{primary:t,menus:e,expansions:n}},singleData:function(t,e){return{primary:t,menus:sr(t,e),expansions:{}}},collapseItem:function(t){return{value:Ir(Qg()),meta:{text:t}}}}}),tp=kl({name:"InlineView",configFields:[mo("lazySink"),Ju("onShow"),Ju("onHide"),Oo("onEscape"),Zs("inlineBehaviours",[bf,Df,ic]),To("fireDismissalEventInstead",[Eo("event",Yi())]),To("fireRepositionEventInstead",[Eo("event",qi())]),Eo("getRelated",vt.none),Eo("isExtraPart",T),Eo("eventOrder",vt.none)],factory:function(d,t){function e(n){bf.isOpen(n)&&Df.getValue(n).each(function(t){switch(t.mode){case"menu":bf.getState(n).each(Zg.repositionMenus);break;case"position":var e=d.lazySink(n).getOrDie();ff.positionWithinBounds(e,n,t.config,t.getBounds())}})}function o(t,e,n,o){i(t,e,n,function(){return o.map(function(t){return Mn(t)})})}function r(t,e,n,o){var r,i,u,a,c,s=(r=d,i=t,u=e,a=o,c="horizontal"===n.type?{layouts:{onLtr:ha,onRtl:va}}:{},Zg.sketch({dom:{tag:"div"},data:n.data,markers:n.menu.markers,highlightImmediately:n.menu.highlightImmediately,onEscape:function(){return bf.close(i),r.onEscape.map(function(t){return t(i)}),vt.some(!0)},onExecute:function(){return vt.some(!0)},onOpenMenu:function(t,e){ff.positionWithinBounds(l().getOrDie(),e,u,a())},onOpenSubmenu:function(t,e,n,o){var r=l().getOrDie();ff.position(r,n,{anchor:lt({type:"submenu",item:e},f(o))})},onRepositionMenu:function(t,e,n){var o=l().getOrDie();ff.positionWithinBounds(o,e,u,a()),St(n,function(t){var e=f(t.triggeringPath);ff.position(o,t.triggeredMenu,{anchor:lt({type:"submenu",item:t.triggeringItem},e)})})}}));function l(){return r.lazySink(i)}function f(t){return 2===t.length?c:{}}bf.open(t,s),Df.setValue(t,vt.some({mode:"menu",menu:s}))}var i=function(t,e,n,o){var r=d.lazySink(t).getOrDie();bf.openWhileCloaked(t,e,function(){return ff.positionWithinBounds(r,t,n,o())}),Df.setValue(t,vt.some({mode:"position",config:n,getBounds:o}))},n={setContent:function(t,e){bf.setContent(t,e)},showAt:function(t,e,n){o(t,e,n,vt.none())},showWithin:o,showWithinBounds:i,showMenuAt:function(t,e,n){r(t,e,n,vt.none)},showMenuWithinBounds:r,hide:function(t){bf.isOpen(t)&&(Df.setValue(t,vt.none()),bf.close(t))},getContent:function(t){return bf.getState(t)},reposition:e,isOpen:bf.isOpen};return{uid:d.uid,dom:d.dom,behaviours:el(d.inlineBehaviours,[bf.config({isPartOf:function(t,e,n){return Hu(e,n)||(o=n,d.getRelated(t).exists(function(t){return Hu(t,o)}));var o},getAttachPoint:function(t){return d.lazySink(t).getOrDie()},onOpen:function(t){d.onShow(t)},onClose:function(t){d.onHide(t)}}),Df.config({store:{mode:"memory",initialValue:vt.none()}}),ic.config({channels:lt(lt({},Xs(lt({isExtraPart:t.isExtraPart},d.fireDismissalEventInstead.map(function(t){return{fireEventInstead:{event:t.event}}}).getOr({})))),Ys(lt(lt({},d.fireRepositionEventInstead.map(function(t){return{fireEventInstead:{event:t.event}}}).getOr({})),{doReposition:e})))})]),eventOrder:d.eventOrder,apis:n}},apis:{showAt:function(t,e,n,o){t.showAt(e,n,o)},showWithin:function(t,e,n,o,r){t.showWithin(e,n,o,r)},showWithinBounds:function(t,e,n,o,r){t.showWithinBounds(e,n,o,r)},showMenuAt:function(t,e,n,o){t.showMenuAt(e,n,o)},showMenuWithinBounds:function(t,e,n,o,r){t.showMenuWithinBounds(e,n,o,r)},hide:function(t,e){t.hide(e)},isOpen:function(t,e){return t.isOpen(e)},getContent:function(t,e){return t.getContent(e)},setContent:function(t,e,n){t.setContent(e,n)},reposition:function(t,e){t.reposition(e)}}}),ep="layout-inset",np=function(t,e,n){return na(Om(t,e),t.y,n.insetNorth(),La(),"north",ra(t,{top:2}),ep)},op=function(t,e,n){return na(Om(t,e),Tm(t,e),n.insetSouth(),za(),"south",ra(t,{bottom:3}),ep)},rp=tinymce.util.Tools.resolve("tinymce.util.Delay"),ip=kl({name:"Button",factory:function(t){function n(e){return tt(t.dom,"attributes").bind(function(t){return tt(t,e)})}var e=Sm(t.action),o=t.dom.tag;return{uid:t.uid,dom:t.dom,components:t.components,events:e,behaviours:Bf(t.buttonBehaviours,[Mg.config({}),Tg.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==o)return{role:n("role").getOr("button")};var t=n("type").getOr("button"),e=n("role").map(function(t){return{role:t}}).getOr({});return lt({type:t},e)}()},eventOrder:t.eventOrder}},configFields:[Eo("uid",void 0),mo("dom"),Eo("components",[]),Af("buttonBehaviours",[Mg,Tg]),wo("action"),wo("role"),Eo("eventOrder",{})]});function up(t){return(up="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ap(t,e){return(ap=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function cp(t,e,n){return(cp=function(){if("undefined"!=typeof Reflect&&Reflect.construct&&!Reflect.construct.sham){if("function"==typeof Proxy)return 1;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),1}catch(t){return}}}()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var r=new(Function.bind.apply(t,o));return n&&ap(r,n.prototype),r}).apply(null,arguments)}function sp(t){return function(t){if(Array.isArray(t))return lp(t)}(t)||function(){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}()||function(t){if(t){if("string"==typeof t)return lp(t,void 0);var e=Object.prototype.toString.call(t).slice(8,-1);return"Map"===(e="Object"===e&&t.constructor?t.constructor.name:e)||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?lp(t,void 0):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function lp(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}var fp,dp=Object.hasOwnProperty,mp=Object.setPrototypeOf,gp=Object.isFrozen,pp=Object.getPrototypeOf,hp=Object.getOwnPropertyDescriptor,vp=Object.freeze,bp=Object.seal,yp=Object.create,xp="undefined"!=typeof Reflect&&Reflect,wp=xp.apply||function(t,e,n){return t.apply(e,n)},vp=vp||function(t){return t},bp=bp||function(t){return t},Sp=xp.construct||function(t,e){return cp(t,sp(e))},kp=Fp(Array.prototype.forEach),Cp=Fp(Array.prototype.pop),Op=Fp(Array.prototype.push),_p=Fp(String.prototype.toLowerCase),Tp=Fp(String.prototype.match),Ep=Fp(String.prototype.replace),Dp=Fp(String.prototype.indexOf),Ap=Fp(String.prototype.trim),Bp=Fp(RegExp.prototype.test),Mp=(fp=TypeError,function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return Sp(fp,e)});function Fp(r){return function(t){for(var e=arguments.length,n=new Array(1<e?e-1:0),o=1;o<e;o++)n[o-1]=arguments[o];return wp(r,t,n)}}function Ip(t,e){mp&&mp(t,null);for(var n=e.length;n--;){var o,r=e[n];"string"!=typeof r||(o=_p(r))!==r&&(gp(e)||(e[n]=o),r=o),t[r]=!0}return t}function Rp(t){var e,n=yp(null);for(e in t)wp(dp,t,[e])&&(n[e]=t[e]);return n}function Np(t,e){for(;null!==t;){var n=hp(t,e);if(n){if(n.get)return Fp(n.get);if("function"==typeof n.value)return Fp(n.value)}t=pp(t)}return function(t){return console.warn("fallback value for",t),null}}var Pp=vp(["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","dialog","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","picture","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"]),Vp=vp(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","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","view","vkern"]),Hp=vp(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Lp=vp(["animate","color-profile","cursor","discard","fedropshadow","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),zp=vp(["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"]),Up=vp(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),jp=vp(["#text"]),Wp=vp(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","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","translate","type","usemap","valign","value","width","xmlns","slot"]),Gp=vp(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","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","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","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"]),Xp=vp(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","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"]),Yp=vp(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),qp=bp(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Kp=bp(/<%[\w\W]*|[\w\W]*%>/gm),Jp=bp(/^data-[\-\w.\u00B7-\uFFFF]/),$p=bp(/^aria-[\-\w]+$/),Qp=bp(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Zp=bp(/^(?:\w+script|data):/i),th=bp(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),eh=bp(/^html$/i);function nh(t){return lh().sanitize(t)}function oh(t){return function(){return tt(t,mh).getOr("!not found!")}}function rh(t,e){var n,o=t.toLowerCase();if(fh.isRtl()){var r=At(n=o,"-rtl")?n:n+"-rtl";return Tt(e,r)?r:o}return o}function ih(t,e){return tt(e,rh(t,e))}function uh(t,e){var n=e();return ih(t,n).getOrThunk(oh(n))}function ah(){return mm("add-focusable",[ou(function(t){var e,n,o;e=t.element,n="svg",o=function(t){return Ht(t,n)},N(e.dom.childNodes,function(t){return o(Mt.fromDom(t))}).map(Mt.fromDom).each(function(t){return oe(t,"focusable","false")})})])}function ch(t,e,n,o){var r,i,u,a=(u=e,fh.isRtl()&&Tt(dh,u)?["tox-icon--flip"]:[]),c=tt(n,rh(e,n)).or(o).getOrThunk(oh(n));return{dom:{tag:t.tag,attributes:null!==(r=t.attributes)&&void 0!==r?r:{},classes:t.classes.concat(a),innerHtml:c},behaviours:ec(V(V([],null!==(i=t.behaviours)&&void 0!==i?i:[],!0),[ah()],!1))}}function sh(t,e,n,o){return void 0===o&&(o=vt.none()),ch(e,t,n(),o)}var lh=function e(t){function l(t){return e(t)}var f=0<arguments.length&&void 0!==t?t:"undefined"==typeof window?null:window;if(l.version="2.3.8",l.removed=[],!f||!f.document||9!==f.document.nodeType)return l.isSupported=!1,l;var n,d=f.document,u=f.document,m=f.DocumentFragment,o=f.HTMLTemplateElement,g=f.Node,a=f.Element,r=f.NodeFilter,i=f.NamedNodeMap,c=void 0===i?f.NamedNodeMap||f.MozNamedAttrMap:i,s=f.HTMLFormElement,p=f.DOMParser,h=f.trustedTypes,v=a.prototype,b=Np(v,"cloneNode"),y=Np(v,"nextSibling"),x=Np(v,"childNodes"),w=Np(v,"parentNode");"function"!=typeof o||(n=u.createElement("template")).content&&n.content.ownerDocument&&(u=n.content.ownerDocument);var S=function(t,e){if("object"!==up(t)||"function"!=typeof t.createPolicy)return null;var n=null,o="data-tt-policy-suffix",r="dompurify"+((n=e.currentScript&&e.currentScript.hasAttribute(o)?e.currentScript.getAttribute(o):n)?"#"+n:"");try{return t.createPolicy(r,{createHTML:function(t){return t}})}catch(t){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(h,d),k=S?S.createHTML(""):"",C=u,O=C.implementation,_=C.createNodeIterator,T=C.createDocumentFragment,E=C.getElementsByTagName,D=d.importNode,A={};try{A=Rp(u).documentMode?u.documentMode:{}}catch(t){}var B={};function M(t){return t instanceof RegExp||t instanceof Function}function F(t){St&&St===t||(t=Rp(t=t&&"object"===up(t)?t:{}),G="ALLOWED_TAGS"in t?Ip({},t.ALLOWED_TAGS):X,Y="ALLOWED_ATTR"in t?Ip({},t.ALLOWED_ATTR):q,pt="ADD_URI_SAFE_ATTR"in t?Ip(Rp(ht),t.ADD_URI_SAFE_ATTR):ht,mt="ADD_DATA_URI_TAGS"in t?Ip(Rp(gt),t.ADD_DATA_URI_TAGS):gt,ft="FORBID_CONTENTS"in t?Ip({},t.FORBID_CONTENTS):dt,J="FORBID_TAGS"in t?Ip({},t.FORBID_TAGS):{},$="FORBID_ATTR"in t?Ip({},t.FORBID_ATTR):{},I="USE_PROFILES"in t&&t.USE_PROFILES,Q=!1!==t.ALLOW_ARIA_ATTR,Z=!1!==t.ALLOW_DATA_ATTR,tt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,et=t.SAFE_FOR_TEMPLATES||!1,nt=t.WHOLE_DOCUMENT||!1,it=t.RETURN_DOM||!1,ut=t.RETURN_DOM_FRAGMENT||!1,at=t.RETURN_TRUSTED_TYPE||!1,rt=t.FORCE_BODY||!1,ct=!1!==t.SANITIZE_DOM,st=!1!==t.KEEP_CONTENT,lt=t.IN_PLACE||!1,W=t.ALLOWED_URI_REGEXP||W,xt=t.NAMESPACE||yt,t.CUSTOM_ELEMENT_HANDLING&&M(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(K.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&M(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(K.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(K.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),R=-1===wt.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,N="application/xhtml+xml"===R?function(t){return t}:_p,et&&(Z=!1),ut&&(it=!0),I&&(G=Ip({},sp(jp)),Y=[],!0===I.html&&(Ip(G,Pp),Ip(Y,Wp)),!0===I.svg&&(Ip(G,Vp),Ip(Y,Gp),Ip(Y,Yp)),!0===I.svgFilters&&(Ip(G,Hp),Ip(Y,Gp),Ip(Y,Yp)),!0===I.mathMl&&(Ip(G,zp),Ip(Y,Xp),Ip(Y,Yp))),t.ADD_TAGS&&Ip(G=G===X?Rp(G):G,t.ADD_TAGS),t.ADD_ATTR&&Ip(Y=Y===q?Rp(Y):Y,t.ADD_ATTR),t.ADD_URI_SAFE_ATTR&&Ip(pt,t.ADD_URI_SAFE_ATTR),t.FORBID_CONTENTS&&Ip(ft=ft===dt?Rp(ft):ft,t.FORBID_CONTENTS),st&&(G["#text"]=!0),nt&&Ip(G,["html","head","body"]),G.table&&(Ip(G,["tbody"]),delete J.tbody),vp&&vp(t),St=t)}l.isSupported="function"==typeof w&&O&&void 0!==O.createHTMLDocument&&9!==A;var I,R,N,P,V=qp,H=Kp,L=Jp,z=$p,U=Zp,j=th,W=Qp,G=null,X=Ip({},[].concat(sp(Pp),sp(Vp),sp(Hp),sp(zp),sp(jp))),Y=null,q=Ip({},[].concat(sp(Wp),sp(Gp),sp(Xp),sp(Yp))),K=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),J=null,$=null,Q=!0,Z=!0,tt=!1,et=!1,nt=!1,ot=!1,rt=!1,it=!1,ut=!1,at=!1,ct=!0,st=!0,lt=!1,ft=null,dt=Ip({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),mt=null,gt=Ip({},["audio","video","img","source","image","track"]),pt=null,ht=Ip({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),vt="http://www.w3.org/1998/Math/MathML",bt="http://www.w3.org/2000/svg",yt="http://www.w3.org/1999/xhtml",xt=yt,wt=["application/xhtml+xml","text/html"],St=null,kt=u.createElement("form"),Ct=Ip({},["mi","mo","mn","ms","mtext"]),Ot=Ip({},["foreignobject","desc","title","annotation-xml"]),_t=Ip({},["title","style","font","a","script"]),Tt=Ip({},Vp);Ip(Tt,Hp),Ip(Tt,Lp);var Et=Ip({},zp);function Dt(e){Op(l.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=k}catch(t){e.remove()}}}function At(t,e){try{Op(l.removed,{attribute:e.getAttributeNode(t),from:e})}catch(t){Op(l.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t&&!Y[t])if(it||ut)try{Dt(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}}function Bt(t){var e,n,o;rt?t="<remove></remove>"+t:o=(n=Tp(t,/^[\r\n\t ]+/))&&n[0],"application/xhtml+xml"===R&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");var r=S?S.createHTML(t):t;if(xt===yt)try{e=(new p).parseFromString(r,R)}catch(t){}if(!e||!e.documentElement){e=O.createDocument(xt,"template",null);try{e.documentElement.innerHTML=P?"":r}catch(t){}}var i=e.body||e.documentElement;return t&&o&&i.insertBefore(u.createTextNode(o),i.childNodes[0]||null),xt===yt?E.call(e,nt?"html":"body")[0]:nt?e.documentElement:i}function Mt(t){return _.call(t.ownerDocument||t,t,r.SHOW_ELEMENT|r.SHOW_COMMENT|r.SHOW_TEXT,null,!1)}function Ft(t){return"object"===up(g)?t instanceof g:t&&"object"===up(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName}function It(t,e,n){B[t]&&kp(B[t],function(t){t.call(l,e,n,St)})}function Rt(t){var e;if(It("beforeSanitizeElements",t,null),t instanceof s&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof c)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore))return Dt(t),1;if(Bp(/[\u0080-\uFFFF]/,t.nodeName))return Dt(t),1;var n=N(t.nodeName);if(It("uponSanitizeElement",t,{tagName:n,allowedTags:G}),t.hasChildNodes()&&!Ft(t.firstElementChild)&&(!Ft(t.content)||!Ft(t.content.firstElementChild))&&Bp(/<[/\w]/g,t.innerHTML)&&Bp(/<[/\w]/g,t.textContent))return Dt(t),1;if("select"===n&&Bp(/<template/i,t.innerHTML))return Dt(t),1;if(G[n]&&!J[n])return t instanceof a&&!function(t){var e=w(t);e&&e.tagName||(e={namespaceURI:yt,tagName:"template"});var n=_p(t.tagName),o=_p(e.tagName);return t.namespaceURI===bt?e.namespaceURI===yt?"svg"===n:e.namespaceURI===vt?"svg"===n&&("annotation-xml"===o||Ct[o]):Boolean(Tt[n]):t.namespaceURI===vt?e.namespaceURI===yt?"math"===n:e.namespaceURI===bt?"math"===n&&Ot[o]:Boolean(Et[n]):t.namespaceURI===yt&&(e.namespaceURI!==bt||Ot[o])&&(e.namespaceURI!==vt||Ct[o])&&!Et[n]&&(_t[n]||!Tt[n])}(t)||("noscript"===n||"noembed"===n)&&Bp(/<\/no(script|embed)/i,t.innerHTML)?(Dt(t),1):(et&&3===t.nodeType&&(e=t.textContent,e=Ep(e,V," "),e=Ep(e,H," "),t.textContent!==e&&(Op(l.removed,{element:t.cloneNode()}),t.textContent=e)),It("afterSanitizeElements",t,null),0);if(!J[n]&&Vt(n)){if(K.tagNameCheck instanceof RegExp&&Bp(K.tagNameCheck,n))return;if(K.tagNameCheck instanceof Function&&K.tagNameCheck(n))return}if(st&&!ft[n]){var o=w(t)||t.parentNode,r=x(t)||t.childNodes;if(r&&o)for(var i=r.length-1;0<=i;--i)o.insertBefore(b(r[i],!0),y(t))}return Dt(t),1}function Nt(t,e,n){if(ct&&("id"===e||"name"===e)&&(n in u||n in kt))return!1;if((!Z||$[e]||!Bp(L,e))&&(!Q||!Bp(z,e)))if(!Y[e]||$[e]){if(!(Vt(t)&&(K.tagNameCheck instanceof RegExp&&Bp(K.tagNameCheck,t)||K.tagNameCheck instanceof Function&&K.tagNameCheck(t))&&(K.attributeNameCheck instanceof RegExp&&Bp(K.attributeNameCheck,e)||K.attributeNameCheck instanceof Function&&K.attributeNameCheck(e))||"is"===e&&K.allowCustomizedBuiltInElements&&(K.tagNameCheck instanceof RegExp&&Bp(K.tagNameCheck,n)||K.tagNameCheck instanceof Function&&K.tagNameCheck(n))))return!1}else if(!pt[e]&&!Bp(W,Ep(n,j,""))&&("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==Dp(n,"data:")||!mt[t])&&(!tt||Bp(U,Ep(n,j,"")))&&n)return!1;return!0}function Pt(t){It("beforeSanitizeAttributes",t,null);var e=t.attributes;if(e){for(var n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Y},o=e.length;o--;){var r,i=(r=e[o]).name,u=r.namespaceURI,a="value"===i?r.value:Ap(r.value),c=N(i);if(n.attrName=c,n.attrValue=a,n.keepAttr=!0,n.forceKeepAttr=void 0,It("uponSanitizeAttribute",t,n),a=n.attrValue,!n.forceKeepAttr&&(At(i,t),n.keepAttr))if(Bp(/\/>/i,a))At(i,t);else if(et&&(a=Ep(a,V," "),a=Ep(a,H," ")),Nt(N(t.nodeName),c,a))try{u?t.setAttributeNS(u,i,a):t.setAttribute(i,a),Cp(l.removed)}catch(t){}}It("afterSanitizeAttributes",t,null)}}Ip(Et,Up);var Vt=function(t){return 0<t.indexOf("-")};return l.sanitize=function(t,e){var n,o,r,i,u;if("string"!=typeof(t=(P=!t)?"\x3c!--\x3e":t)&&!Ft(t)){if("function"!=typeof t.toString)throw Mp("toString is not a function");if("string"!=typeof(t=t.toString()))throw Mp("dirty is not a string, aborting")}if(!l.isSupported){if("object"===up(f.toStaticHTML)||"function"==typeof f.toStaticHTML){if("string"==typeof t)return f.toStaticHTML(t);if(Ft(t))return f.toStaticHTML(t.outerHTML)}return t}if(ot||F(e),l.removed=[],lt="string"!=typeof t&&lt){if(t.nodeName){var a=N(t.nodeName);if(!G[a]||J[a])throw Mp("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof g)1===(o=(n=Bt("\x3c!----\x3e")).ownerDocument.importNode(t,!0)).nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?n=o:n.appendChild(o);else{if(!it&&!et&&!nt&&-1===t.indexOf("<"))return S&&at?S.createHTML(t):t;if(!(n=Bt(t)))return it?null:at?k:""}n&&rt&&Dt(n.firstChild);for(var c=Mt(lt?t:n);r=c.nextNode();)3===r.nodeType&&r===i||Rt(r)||(r.content instanceof m&&function t(e){var n,o=Mt(e);for(It("beforeSanitizeShadowDOM",e,null);n=o.nextNode();)It("uponSanitizeShadowNode",n,null),Rt(n)||(n.content instanceof m&&t(n.content),Pt(n));It("afterSanitizeShadowDOM",e,null)}(r.content),Pt(r),i=r);if(i=null,lt)return t;if(it){if(ut)for(u=T.call(n.ownerDocument);n.firstChild;)u.appendChild(n.firstChild);else u=n;return Y.shadowroot?D.call(d,u,!0):u}var s=nt?n.outerHTML:n.innerHTML;return nt&&G["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&Bp(eh,n.ownerDocument.doctype.name)&&(s="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+s),et&&(s=Ep(s,V," "),s=Ep(s,H," ")),S&&at?S.createHTML(s):s},l.setConfig=function(t){F(t),ot=!0},l.clearConfig=function(){St=null,ot=!1},l.isValidAttribute=function(t,e,n){return St||F({}),Nt(N(t),N(e),n)},l.addHook=function(t,e){"function"==typeof e&&(B[t]=B[t]||[],Op(B[t],e))},l.removeHook=function(t){if(B[t])return Cp(B[t])},l.removeHooks=function(t){B[t]&&(B[t]=[])},l.removeAllHooks=function(){B={}},l}(),fh=tinymce.util.Tools.resolve("tinymce.util.I18n"),dh={indent:!0,outdent:!0,"table-insert-column-after":!0,"table-insert-column-before":!0,"paste-column-after":!0,"paste-column-before":!0,"unordered-list":!0,"list-bull-circle":!0,"list-bull-default":!0,"list-bull-square":!0},mh="temporary-placeholder",gh={success:"checkmark",error:"warning",err:"error",warning:"warning",warn:"warning",info:"info"},ph=kl({name:"Notification",factory:function(e){function n(t){return{dom:{tag:"div",classes:["tox-bar"],attributes:{style:"width: "+t+"%"}}}}function o(t){return{dom:{tag:"div",classes:["tox-text"],innerHtml:t+"%"}}}var t,r,i,u,a=Lm({dom:Hm("<p>"+nh(e.translationProvider(e.text))+"</p>"),behaviours:ec([Dg.config({})])}),c=Lm({dom:{tag:"div",classes:e.progress?["tox-progress-bar","tox-progress-indicator"]:["tox-progress-bar"]},components:[{dom:{tag:"div",classes:["tox-bar-container"]},components:[n(0)]},o(0)],behaviours:ec([Dg.config({})])}),s={updateProgress:function(t,e){t.getSystem().isConnected()&&c.getOpt(t).each(function(t){Dg.set(t,[{dom:{tag:"div",classes:["tox-bar-container"]},components:[n(e)]},o(e)])})},updateText:function(t,e){var n;t.getSystem().isConnected()&&(n=a.get(t),Dg.set(n,[ri(e)]))}},l=ft([e.icon.toArray(),e.level.toArray(),e.level.bind(function(t){return vt.from(gh[t])}).toArray()]),f=Lm(ip.sketch({dom:{tag:"button",classes:["tox-notification__dismiss","tox-button","tox-button--naked","tox-button--icon"]},components:[sh("close",{tag:"div",classes:["tox-icon"],attributes:{"aria-label":e.translationProvider("Close")}},e.iconProvider)],action:function(t){e.onAction(t)}})),d=[(t=l,r={tag:"div",classes:["tox-notification__icon"]},i=e.iconProvider,u=i(),ch(r,N(t,function(t){return Tt(u,rh(t,u))}).getOr(mh),u,vt.none())),{dom:{tag:"div",classes:["tox-notification__body"]},components:[a.asSpec()],behaviours:ec([Dg.config({})])}];return{uid:e.uid,dom:{tag:"div",attributes:{role:"alert"},classes:e.level.map(function(t){return["tox-notification","tox-notification--in","tox-notification--"+t]}).getOr(["tox-notification","tox-notification--in"])},behaviours:ec([Mg.config({}),mm("notification-events",[Cr(bi(),function(t){f.getOpt(t).each(Mg.focus)})])]),components:d.concat(e.progress?[c.asSpec()]:[]).concat(e.closeButton?[f.asSpec()]:[]),apis:s}},configFields:[wo("level"),mo("progress"),mo("icon"),mo("onAction"),mo("text"),mo("iconProvider"),mo("translationProvider"),Fo("closeButton",!0)],apis:{updateProgress:function(t,e,n){t.updateProgress(e,n)},updateText:function(t,e,n){t.updateText(e,n)}}});function hh(n,o){function r(){b(i)||(clearTimeout(i),i=null)}var i=null;return{cancel:r,throttle:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];r(),i=setTimeout(function(){i=null,n.apply(null,t)},o)}}}function vh(o,t,e,n,r){var i=Dh(o,function(t){return(e=o).isBlock(n=t)||wt(["BR","IMG","HR","INPUT"],n.nodeName)||"false"===e.getContentEditable(n);var e,n});return vt.from(i.backwards(t,e,n,r))}function bh(n,e){return Ah(Mt.fromDom(n.selection.getNode())).getOrThunk(function(){var i,u,t=Mt.fromHtml('<span data-mce-autocompleter="1" data-mce-bogus="1"></span>',n.getDoc());return Tn(t,Mt.fromDom(e.extractContents())),e.insertNode(t.dom),Yt(t).each(function(t){return t.dom.normalize()}),i=hs,(u=function(t){for(var e=Kt(t),n=e.length-1;0<=n;n--){var o=e[n];if(i(o))return vt.some(o);var r=u(o);if(r.isSome())return r}return vt.none()})(t).map(function(t){var e;n.selection.setCursorLocation(t.dom,"img"===Ft(e=t)?1:ps(e).fold(function(){return Kt(e).length},function(t){return t.length}))}),t})}function yh(t){return t.toString().replace(/\u00A0/g," ").replace(/\uFEFF/g,"")}function xh(t){return""!==t&&-1!==" \xa0\f\n\r\t\v".indexOf(t)}function wh(t,e){return t.substring(e.length)}function Sh(o,t,r,e){return void 0===e&&(e=0),Ah(Mt.fromDom(t.startContainer)).fold(function(){return function(t,o,i,r){if(void 0===r&&(r=0),!o.collapsed||3!==o.startContainer.nodeType)return vt.none();var e=t.getParent(o.startContainer,t.isBlock)||t.getRoot();return vh(t,o.startContainer,o.startOffset,function(t,r,e){return function(t,e){for(var n=r-1;0<=n;n--){var o=t.charAt(n);if(xh(o))return vt.none();if(o===e)break}return vt.some(n)}(e,i).getOr(r)},e).bind(function(t){var e=o.cloneRange();if(e.setStart(t.container,t.offset),e.setEnd(o.endContainer,o.endOffset),e.collapsed)return vt.none();var n=yh(e);return 0!==n.lastIndexOf(i)||wh(n,i).length<r?vt.none():vt.some({text:wh(n,i),range:e,triggerChar:i})})}(o,t,r,e)},function(t){var e=o.createRng();e.selectNode(t.dom);var n=yh(e);return vt.some({range:e,text:wh(n,r),triggerChar:r})})}function kh(t,e){return{container:t,offset:e}}function Ch(t){return ao("toolbarbutton",Vh,t)}function Oh(t){return ao("ToggleButton",Lh,t)}function _h(e,t,n,o){void 0===o&&(o={});var r=t(),i=e.selection.getRng().startContainer.nodeValue,u=F(r.lookupByChar(n.triggerChar),function(t){return n.text.length>=t.minChars&&t.matches.getOrThunk(function(){return n=e.dom,function(t){var e=Fh(t.startContainer,t.startOffset);return!vh(n,e.container,e.offset,function(t,e){return 0===e?-1:e},n.getRoot()).filter(function(t){return!xh(t.container.data.charAt(t.offset-1))}).isSome()};var n})(n.range,i,n.text)});if(0===u.length)return vt.none();var a=Bh.all(B(u,function(e){return e.fetch(n.text,e.maxResults,o).then(function(t){return{matchText:n.text,items:t,columns:e.columns,onAction:e.onAction,highlightOn:e.highlightOn}})}));return vt.some({lookupData:a,context:n})}var Th,Eh,Dh=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker"),Ah=function(t){return Ru(t,"[data-mce-autocompleter]")},Bh=tinymce.util.Tools.resolve("tinymce.util.Promise"),Mh=function(t){if(3===t.nodeType)return kh(t,t.data.length);var e=t.childNodes;return 0<e.length?Mh(e[e.length-1]):kh(t,e.length)},Fh=function(t,e){var n=t.childNodes;return 0<n.length&&e<n.length?Fh(n[e],0):0<n.length&&1===t.nodeType&&n.length===e?Mh(n[n.length-1]):kh(t,e)},Ih=$o([po("type"),Co("text")]),Rh=$o([Eo("type","autocompleteitem"),Eo("active",!1),Eo("disabled",!1),Eo("meta",{}),po("value"),Co("text"),Co("icon")]),Nh=$o([po("type"),po("ch"),Ao("minChars",1),Eo("columns",1),Ao("maxResults",10),Oo("matches"),vo("fetch"),vo("onAction"),Ro("highlightOn",[],er)]),Ph=[Fo("disabled",!1),Co("tooltip"),Co("icon"),Co("text"),Io("onSetup",function(){return st})],Vh=$o([po("type"),vo("onAction")].concat(Ph)),Hh=[Fo("active",!1)].concat(Ph),Lh=$o(Hh.concat([po("type"),vo("onAction")])),zh=[Io("predicate",T),Mo("scope","node",["node","editor"]),Mo("position","selection",["node","selection","line"])],Uh=Ph.concat([Eo("type","contextformbutton"),Eo("primary",!1),vo("onAction"),cr("original",h)]),jh=Hh.concat([Eo("type","contextformbutton"),Eo("primary",!1),vo("onAction"),cr("original",h)]),Wh=Ph.concat([Eo("type","contextformbutton")]),Gh=Hh.concat([Eo("type","contextformtogglebutton")]),Xh=lo("type",{contextformbutton:Uh,contextformtogglebutton:jh}),Yh=$o([Eo("type","contextform"),Io("initValue",rt("")),Co("label"),xo("commands",Xh),So("launch",lo("type",{contextformbutton:Wh,contextformtogglebutton:Gh}))].concat(zh)),qh=$o([Eo("type","contexttoolbar"),po("items")].concat(zh));function Kh(t){return tt(Ov,t).getOr(Sv)}function Jh(t){return{backgroundMenu:"tox-background-menu",selectedMenu:"tox-selected-menu",selectedItem:"tox-collection__item--active",hasIcons:"tox-menu--has-icons",menu:"color"===t?"tox-swatches":"tox-menu",tieredMenu:"tox-tiered-menu"}}function $h(t){var e=Jh(t);return{backgroundMenu:e.backgroundMenu,selectedMenu:e.selectedMenu,menu:e.menu,selectedItem:e.selectedItem,item:Kh(t)}}function Qh(t,e,n){return{dom:{tag:"div",classes:ft([[Jh(n).tieredMenu]])},markers:$h(n)}}function Zh(e,n){return function(t){return B(p(t,n),function(t){return{dom:e,components:t}})}}function tv(t,n){var o=[],r=[];return St(t,function(t,e){n(t,e)?(0<r.length&&o.push(r),r=[],Tt(t.dom,"innerHtml")&&r.push(t)):r.push(t)}),0<r.length&&o.push(r),B(o,function(t){return{dom:{tag:"div",classes:["tox-collection__group"]},components:t}})}function ev(e,n){return{dom:{tag:"div",classes:["tox-menu","tox-collection"].concat(1===e?["tox-collection--list"]:["tox-collection--grid"])},components:[qg.parts.items({preprocess:function(t){return"auto"!==e&&1<e?Zh({tag:"div",classes:["tox-collection__group"]},e)(t):tv(t,function(t,e){return"separator"===n[e].type})}})]}}function nv(t){return d(t,function(t){return"icon"in t&&void 0!==t.icon})}function ov(t){return console.error(ur(t)),console.log(t),vt.none()}function rv(t,e,n,o,r){var i,u=(i=n,{dom:{tag:"div",classes:["tox-collection","tox-collection--horizontal"]},components:[qg.parts.items({preprocess:function(t){return tv(t,function(t,e){return"separator"===i[e].type})}})]});return{value:t,dom:u.dom,components:u.components,items:n}}function iv(t,e,n,o,r){var i,u;return"color"===r?{value:t,dom:(i={dom:{tag:"div",classes:["tox-menu","tox-swatches-menu"]},components:[{dom:{tag:"div",classes:["tox-swatches"]},components:[qg.parts.items({preprocess:"auto"!==o?Zh({tag:"div",classes:["tox-swatches__row"]},o):h})]}]}).dom,components:i.components,items:n}:"normal"===r&&"auto"===o?{value:t,dom:(i=ev(o,n)).dom,components:i.components,items:n}:"normal"===r&&1===o?{value:t,dom:(i=ev(1,n)).dom,components:i.components,items:n}:"normal"===r?{value:t,dom:(i=ev(o,n)).dom,components:i.components,items:n}:"listpreview"!==r||"auto"===o?{value:t,dom:{tag:"div",classes:ft([[(u=Jh(r)).menu,"tox-menu-"+o+"-column"],e?[u.hasIcons]:[]])},components:Fv,items:n}:{value:t,dom:(i={dom:{tag:"div",classes:["tox-menu","tox-collection","tox-collection--toolbar","tox-collection--toolbar-lg"]},components:[qg.parts.items({preprocess:Zh({tag:"div",classes:["tox-collection__group"]},o)})]}).dom,components:i.components,items:n}}function uv(t,o,e){var r=vs(t.element,"."+e);if(0<r.length){var n=P(r,function(t){var e=t.dom.getBoundingClientRect().top,n=r[0].dom.getBoundingClientRect().top;return Math.abs(e-n)>o}).getOr(r.length);return vt.some({numColumns:n,numRows:Math.ceil(r.length/n)})}return vt.none()}function av(t,e,n){t.getSystem().broadcastOn([Kv],{})}function cv(t){return t.getParam("height",Math.max(t.getElement().offsetHeight,200))}function sv(t){return t.getParam("width",eb.DOM.getStyle(t.getElement(),"width"))}function lv(t){return vt.from(t.getParam("min_width")).filter(u)}function fv(t){return vt.from(t.getParam("min_height")).filter(u)}function dv(t){return vt.from(t.getParam("max_width")).filter(u)}function mv(t){return vt.from(t.getParam("max_height")).filter(u)}function gv(t){return!1!==t.getParam("menubar",!0,"boolean")}function pv(t){var e=t.getParam("toolbar",!0),n=!0===e,o=y(e),r=c(e)&&0<e.length;return!ob(t)&&(r||o||n)}function hv(e){var t=F(m(9,function(t){return e.getParam("toolbar"+(t+1),!1,"string")}),function(t){return"string"==typeof t});return 0<t.length?vt.some(t):vt.none()}(Eh=Th={})[Eh.CLOSE_ON_EXECUTE=0]="CLOSE_ON_EXECUTE",Eh[Eh.BUBBLE_TO_SANDBOX=1]="BUBBLE_TO_SANDBOX";var vv,bv,yv,xv,wv=Th,Sv="tox-menu-nav__js",kv="tox-collection__item",Cv="tox-swatch",Ov={normal:Sv,color:Cv},_v="tox-collection__item--enabled",Tv="tox-collection__item-icon",Ev="tox-collection__item-label",Dv="tox-collection__item-caret",Av="tox-collection__item--active",Bv="tox-collection__item-container",Mv="tox-collection__item-container--row",Fv=[qg.parts.items({})],Iv=[po("type"),po("src"),Co("alt"),Ro("classes",[],er)],Rv=$o(Iv),Nv=[po("type"),po("text"),Co("name"),Ro("classes",["tox-collection__item-label"],er)],Pv=$o(Nv),Vv=Zn(function(){return ro("type",{cardimage:Rv,cardtext:Pv,cardcontainer:Hv})}),Hv=$o([po("type"),Bo("direction","horizontal"),Bo("align","left"),Bo("valign","middle"),xo("items",Vv)]),Lv=[Fo("disabled",!1),Co("text"),Co("shortcut"),ar("value","value",Wn(function(){return Ir("menuitem-value")}),Zo()),Eo("meta",{})],zv=$o([po("type"),Co("label"),xo("items",Vv),Io("onSetup",function(){return st}),Io("onAction",st)].concat(Lv)),Uv=$o([po("type"),Fo("active",!1),Co("icon")].concat(Lv)),jv=[po("type"),po("fancytype"),Io("onAction",st)],Wv=lo("fancytype",{inserttable:[Eo("initData",{})].concat(jv),colorswatch:[No("initData",{},[Fo("allowCustomColors",!0),_o("colors",Zo())])].concat(jv)}),Gv=$o([po("type"),Io("onSetup",function(){return st}),Io("onAction",st),Co("icon")].concat(Lv)),Xv=$o([po("type"),vo("getSubmenuItems"),Io("onSetup",function(){return st}),Co("icon")].concat(Lv)),Yv=$o([po("type"),Co("icon"),Fo("active",!1),Io("onSetup",function(){return st}),vo("onAction")].concat(Lv)),qv=function(t){return e=Ir("unnamed-events"),ec([mm(e,t)]);var e},Kv=Ir("tooltip.exclusive"),Jv=Ir("tooltip.show"),$v=Ir("tooltip.hide"),Qv=Object.freeze({__proto__:null,hideAllExclusive:av,setComponents:function(t,e,n,o){n.getTooltip().each(function(t){t.getSystem().isConnected()&&Dg.set(t,o)})}}),Zv=Object.freeze({__proto__:null,events:function(r,i){function n(e){i.getTooltip().each(function(t){Vs(t),r.onHide(e,t),i.clearTooltip()}),i.clearTimer()}return nu(ft([[Cr(Jv,function(o){i.resetTimer(function(){var t,e,n=o;i.isShowing()||(av(n),t=r.lazySink(n).getOrDie(),e=n.getSystem().build({dom:r.tooltipDom,components:r.tooltipComponents,events:nu("normal"===r.mode?[Cr(vi(),function(t){vr(n,Jv)}),Cr(pi(),function(t){vr(n,$v)})]:[]),behaviours:ec([Dg.config({})])}),i.setTooltip(e),Ns(t,e),r.onShow(n,e),ff.position(t,e,{anchor:r.anchor(n)}))},r.delay)}),Cr($v,function(t){i.resetTimer(function(){n(t)},r.delay)}),Cr(Fi(),function(t,e){e.universal||wt(e.channels,Kv)&&n(t)}),ru(function(t){n(t)})],"normal"===r.mode?[Cr(bi(),function(t){vr(t,Jv)}),Cr(Bi(),function(t){vr(t,$v)}),Cr(vi(),function(t){vr(t,Jv)}),Cr(pi(),function(t){vr(t,$v)})]:[Cr(Zi(),function(t,e){vr(t,Jv)}),Cr(tu(),function(t){vr(t,$v)})]]))}}),tb=xa({fields:[mo("lazySink"),mo("tooltipDom"),Eo("exclusive",!0),Eo("tooltipComponents",[]),Eo("delay",300),Mo("mode","normal",["normal","follow-highlight"]),Eo("anchor",function(t){return{type:"hotspot",hotspot:t,layouts:{onLtr:rt([$a,Ja,Xa,qa,Ya,Ka]),onRtl:rt([$a,Ja,Xa,qa,Ya,Ka])}}}),Ju("onHide"),Ju("onShow")],name:"tooltipping",active:Zv,state:Object.freeze({__proto__:null,init:function(){function n(){o.on(clearTimeout)}var o=gc(),t=gc(),e=rt("not-implemented");return wu({getTooltip:t.get,isShowing:t.isSet,setTooltip:t.set,clearTooltip:t.clear,clearTimer:n,resetTimer:function(t,e){n(),o.set(setTimeout(t,e))},readState:e})}}),apis:Qv}),eb=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),nb=tinymce.util.Tools.resolve("tinymce.EditorManager"),ob=function(t){return hv(t).fold(function(){return 0<t.getParam("toolbar",[],"string[]").length},D)};function rb(t){return t.getParam("toolbar_mode","","string")}function ib(t){return t.getParam("toolbar_location",yv.auto,"string")}function ub(t){return ib(t)===yv.bottom}function ab(t){if(!t.inline)return vt.none();var e=t.getParam("fixed_toolbar_container","","string");if(0<e.length)return Iu(bn(),e);var n=t.getParam("fixed_toolbar_container_target");return k(n)?vt.some(Mt.fromDom(n)):vt.none()}function cb(t){return t.inline&&ab(t).isSome()}function sb(t){return ab(t).getOrThunk(function(){return te(gn(Mt.fromDom(t.getElement())))})}function lb(t){return t.inline&&!gv(t)&&!pv(t)&&!ob(t)}function fb(t){return(t.getParam("toolbar_sticky",!1,"boolean")||t.inline)&&!cb(t)&&!lb(t)}function db(t,e){var n=t.outerContainer.element;e&&(t.mothership.broadcastOn([yf()],{target:n}),t.uiMothership.broadcastOn([yf()],{target:n})),t.mothership.broadcastOn([qb],{readonly:e}),t.uiMothership.broadcastOn([qb],{readonly:e})}function mb(t,e){t.on("init",function(){t.mode.isReadOnly()&&db(e,!0)}),t.on("SwitchMode",function(){return db(e,t.mode.isReadOnly())}),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly")}function gb(){var t;return ic.config({channels:((t={})[qb]={schema:Kb,onReceive:function(t,e){gd.set(t,e.readonly)}},t)})}function pb(t,e){var n=t.getApi(e);return function(t){t(n)}}function hb(n,o){return ou(function(t){pb(n,t)(function(t){var e=n.onSetup(t);S(e)&&o.set(e)})})}function vb(e,n){return ru(function(t){return pb(e,t)(n.get())})}function bb(t,e,n,o){var r,i,u=Po(st);return{type:"item",dom:e.dom,components:Zb(e.optComponents),data:t.data,eventOrder:Qb,hasSubmenu:t.triggersSubmenu,itemBehaviours:ec([mm("item-events",[(r=t,i=n,uu(function(t,e){pb(r,t)(r.onAction),r.triggersSubmenu||i!==wv.CLOSE_ON_EXECUTE||(vr(t,Vi()),e.stop())})),hb(t,u),vb(t,u)]),gd.config({disabled:function(){return t.disabled||o.isDisabled()},disableClass:"tox-collection__item--state-disabled"}),gb(),Dg.config({})].concat(t.itemBehaviours))}}function yb(t){return{value:t.value,meta:lt({text:t.text.getOr("")},t.meta)}}function xb(t,e,n){return sh(t,{tag:"div",classes:n=void 0===n?[Tv]:n},e)}function wb(t){return{dom:{tag:"div",classes:[Ev]},components:[ri(fh.translate(t))]}}function Sb(t,e){return{dom:{tag:"div",classes:e,innerHtml:t}}}function kb(t,e){return{dom:{tag:"div",classes:[Ev]},components:[{dom:{tag:t.tag,styles:t.styles},components:[ri(fh.translate(e))]}]}}function Cb(t){return{dom:{tag:"div",classes:["tox-collection__item-accessory"],innerHtml:(n=ty.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl",access:"Shift+Alt"},e=B(t.split("+"),function(t){var e=t.toLowerCase().trim();return Tt(n,e)?n[e]:t}),ty.mac?e.join(""):e.join("+"))}};var n,e}function Ob(t){return xb("checkmark",t,["tox-collection__item-checkmark"])}function _b(t){var e=t.map(function(t){return{attributes:{title:fh.translate(t)}}}).getOr({});return lt({tag:"div",classes:[Sv,kv]},e)}function Tb(t,e,n,o){return void 0===o&&(o=vt.none()),"color"===t.presets?(r=e,i=o,c=t.ariaLabel,s=t.value,{dom:(u=t.iconContent.map(function(t){return e=r.icons,n=i,ih(t,o=e()).or(n).getOrThunk(oh(o));var e,n,o}).getOr(""),a={tag:"div",attributes:c.map(function(t){return{title:r.translate(t)}}).getOr({}),classes:["tox-swatch"]},lt(lt({},a),"custom"===s?{tag:"button",classes:V(V([],a.classes,!0),["tox-swatches__picker-btn"],!1),innerHtml:u}:"remove"===s?{classes:V(V([],a.classes,!0),["tox-swatch--remove"],!1),innerHtml:u}:{attributes:lt(lt({},a.attributes),{"data-mce-color":s}),styles:{"background-color":s}})),optComponents:[]}):(l=t,f=e,d=o,m={tag:"div",classes:[Tv]},g=n?l.iconContent.map(function(t){return sh(t,m,f.icons,d)}).orThunk(function(){return vt.some({dom:m})}):vt.none(),p=l.checkMark,h=vt.from(l.meta).fold(function(){return wb},function(t){return Tt(t,"style")?C(kb,t.style):wb}),v=l.htmlContent.fold(function(){return l.textContent.map(h)},function(t){return vt.some(Sb(t,[Ev]))}),{dom:_b(l.ariaLabel),optComponents:[g,v,l.shortcutContent.map(Cb),p,l.caret]});var r,i,u,a,c,s,l,f,d,m,g,p,h,v}function Eb(t,e){return tt(t,"tooltipWorker").map(function(n){return[tb.config({lazySink:e.getSink,tooltipDom:{tag:"div",classes:["tox-tooltip-worker-container"]},tooltipComponents:[],anchor:function(t){return{type:"submenu",item:t,overrides:{maxHeightFunction:Nc}}},mode:"follow-highlight",onShow:function(e,t){n(function(t){tb.setComponents(e,[Ou({element:Mt.fromDom(t)})])})}})]}).getOr([])}function Db(t,e){var n=fh.translate(t),o=eb.DOM.encode(n);if(0<e.length){var r=new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"gi");return o.replace(r,function(t){return'<span class="tox-autocompleter-highlight">'+t+"</span>"})}return o}function Ab(t){return{value:t}}function Bb(t){return oy.test(t)||ry.test(t)}function Mb(t){var e=t.toString(16);return(1===e.length?"0"+e:e).toUpperCase()}function Fb(t){return Ab(Mb(t.red)+Mb(t.green)+Mb(t.blue))}function Ib(t,e,n,o){return{red:t,green:e,blue:n,alpha:o}}function Rb(t){var e=parseInt(t,10);return e.toString()===t&&0<=e&&e<=255}function Nb(t){var e,n,o,r=(t.hue||0)%360,i=t.saturation/100,u=t.value/100,i=uy(0,iy(i,1)),u=uy(0,iy(u,1));if(0===i)return Ib(e=n=o=ay(255*u),n,o,1);var a=r/60,c=u*i,s=c*(1-Math.abs(a%2-1)),l=u-c;switch(Math.floor(a)){case 0:e=c,n=s,o=0;break;case 1:e=s,n=c,o=0;break;case 2:e=0,n=c,o=s;break;case 3:e=0,n=s,o=c;break;case 4:e=s,n=0,o=c;break;case 5:e=c,n=0,o=s;break;default:e=n=o=0}return Ib(e=ay(255*(e+l)),n=ay(255*(n+l)),o=ay(255*(o+l)),1)}function Pb(t){var e,n,o=(e={value:t.value.replace(oy,function(t,e,n,o){return e+e+n+n+o+o})},null===(n=ry.exec(e.value))?["FFFFFF","FF","FF","FF"]:n);return Ib(parseInt(o[1],16),parseInt(o[2],16),parseInt(o[3],16),1)}function Vb(t,e,n,o){return Ib(parseInt(t,10),parseInt(e,10),parseInt(n,10),parseFloat(o))}function Hb(t){if("transparent"===t)return vt.some(Ib(0,0,0,0));var e=cy.exec(t);if(null!==e)return vt.some(Vb(e[1],e[2],e[3],"1"));var n=sy.exec(t);return null!==n?vt.some(Vb(n[1],n[2],n[3],n[4])):vt.none()}function Lb(t){return"rgba("+t.red+","+t.green+","+t.blue+","+t.alpha+")"}function zb(t,e){return t.fire("ResizeContent",e)}function Ub(t,e,n){return{hue:t,saturation:e,value:n}}function jb(t){var e,n,o=0,r=t.red/255,i=t.green/255,u=t.blue/255,a=Math.min(r,Math.min(i,u)),c=Math.max(r,Math.max(i,u));return a===c?Ub(0,0,100*(o=a)):(n=60*((r===a?3:u===a?1:5)-(r===a?i-u:u===a?r-i:u-r)/(c-a)),e=(c-a)/c,o=c,Ub(Math.round(n),Math.round(100*e),Math.round(100*o)))}function Wb(t){return Fb(Nb(t))}function Gb(o){return(Bb(e=o)?vt.some({value:(Dt(t=e,"#")?t.substring("#".length):t).toUpperCase()}):vt.none()).orThunk(function(){return Hb(o).map(Fb)}).getOrThunk(function(){var t=document.createElement("canvas");t.height=1,t.width=1;var e=t.getContext("2d");e.clearRect(0,0,t.width,t.height),e.fillStyle="#FFFFFF",e.fillStyle=o,e.fillRect(0,0,1,1);var n=e.getImageData(0,0,1,1).data;return Fb(Ib(n[0],n[1],n[2],n[3]))});var t,e}(bv=vv=vv||{}).default="wrap",bv.floating="floating",bv.sliding="sliding",bv.scrolling="scrolling",(xv=yv=yv||{}).auto="auto",xv.top="top",xv.bottom="bottom";function Xb(t){return gd.config({disabled:t,disableClass:"tox-tbtn--disabled"})}var Yb,qb="silver.readonly",Kb=$o([go("readonly",nr)]),Jb=function(t){return gd.config({disabled:t})},$b=function(t){return gd.config({disabled:t,disableClass:"tox-tbtn--disabled",useNative:!1})},Qb=((Yb={})[Ii()]=["disabling","alloy.base.behaviour","toggling","item-events"],Yb),Zb=nt,ty=tinymce.util.Tools.resolve("tinymce.Env"),ey=function(t,a){return B(t,function(t){switch(t.type){case"cardcontainer":return r=ey((o=t).items,a),i="vertical"===o.direction?"tox-collection__item-container--column":Mv,u="left"===o.align?"tox-collection__item-container--align-left":"tox-collection__item-container--align-right",{dom:{tag:"div",classes:[Bv,i,u,function(){switch(o.valign){case"top":return"tox-collection__item-container--valign-top";case"middle":return"tox-collection__item-container--valign-middle";case"bottom":return"tox-collection__item-container--valign-bottom"}}()]},components:r};case"cardimage":return n=t.src,{dom:{tag:"img",classes:t.classes,attributes:{src:n,alt:t.alt.getOr("")}}};case"cardtext":var e=t.name.exists(function(t){return wt(a.cardText.highlightOn,t)})?vt.from(a.cardText.matchText).getOr(""):"";return Sb(Db(t.text,e),t.classes)}var n,o,r,i,u})},ny=al(Ug(),jg()),oy=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,ry=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,iy=Math.min,uy=Math.max,ay=Math.round,cy=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,sy=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,ly=Ib(255,0,0,1),fy=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),dy="tinymce-custom-colors";function my(t){return!1!==t.getParam("custom_colors")}function gy(t){var e=t.getParam("color_map");return void 0!==e?function(t){for(var e=[],n=0;n<t.length;n+=2)e.push({text:t[n+1],value:"#"+Gb(t[n]).value,type:"choiceitem"});return e}(e):Ay}function py(t){By.add(t)}function hy(t){var e,n=(e=gy(t).length,Math.max(5,Math.ceil(Math.sqrt(e))));return t.getParam("color_cols",n,"number")}function vy(t){var e="choiceitem",n={type:e,text:"Remove color",icon:"color-swatch-remove-color",value:"remove"};return t?[n,{type:e,text:"Custom color",icon:"color-picker",value:"custom"}]:[n]}function by(e,n,t,o){"custom"===t?Fy(e)(function(t){t.each(function(t){py(t),e.execCommand("mceApplyTextcolor",n,t),o(t)})},My):"remove"===t?(o(""),e.execCommand("mceRemoveTextcolor",n)):(o(t),e.execCommand("mceApplyTextcolor",n,t))}function yy(t,e){return t.concat(B(By.state(),function(t){return{type:Dy,text:t,value:t}}).concat(vy(e)))}function xy(e,n){return function(t){t(yy(e,n))}}function wy(t,e,n){t.setIconFill("forecolor"===e?"tox-icon-text-color__color":"tox-icon-highlight-bg-color__color",n)}function Sy(i,n,u,t,o){i.ui.registry.addSplitButton(n,{tooltip:t,presets:"color",icon:"forecolor"===n?"text-color":"highlight-bg-color",select:function(n){var o,r=u;return i.dom.getParents(i.selection.getStart(),function(t){var e;(e=t.style["forecolor"===r?"color":"background-color"])&&(o=o||e)}),vt.from(o).bind(function(t){return Hb(t).map(function(t){var e=Fb(t).value;return ut(n.toLowerCase(),e)})}).getOr(!1)},columns:hy(i),fetch:xy(gy(i),my(i)),onAction:function(t){by(i,u,o.get(),st)},onItemAction:function(t,e){by(i,u,e,function(t){o.set(t),i.fire("TextColorChange",{name:n,color:t})})},onSetup:function(e){function t(t){t.name===n&&wy(e,t.name,t.color)}return wy(e,n,o.get()),i.on("TextColorChange",t),function(){i.off("TextColorChange",t)}}})}function ky(e,t,n,o){e.ui.registry.addNestedMenuItem(t,{text:o,icon:"forecolor"===t?"text-color":"highlight-bg-color",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"colorswatch",onAction:function(t){by(e,n,t.value,st)}}]}})}function Cy(t,e,n,o,r,i,u,a){return iv(t,nv(e),Iy(e,n,o,"color"!==r?"normal":"color",i,u,a),o,r)}function Oy(t,e){var n=$h(e);return 1===t?{mode:"menu",moveOnTab:!0}:"auto"===t?{mode:"grid",selector:"."+n.item,initSize:{numColumns:1,numRows:1}}:{mode:"matrix",rowSelector:"."+("color"===e?"tox-swatches__row":"tox-collection__group")}}function _y(t,e){return ri(e+"x"+t)}var Ty,Ey,Dy="choiceitem",Ay=[{type:Dy,text:"Light Green",value:"#BFEDD2"},{type:Dy,text:"Light Yellow",value:"#FBEEB8"},{type:Dy,text:"Light Red",value:"#F8CAC6"},{type:Dy,text:"Light Purple",value:"#ECCAFA"},{type:Dy,text:"Light Blue",value:"#C2E0F4"},{type:Dy,text:"Green",value:"#2DC26B"},{type:Dy,text:"Yellow",value:"#F1C40F"},{type:Dy,text:"Red",value:"#E03E2D"},{type:Dy,text:"Purple",value:"#B96AD9"},{type:Dy,text:"Blue",value:"#3598DB"},{type:Dy,text:"Dark Turquoise",value:"#169179"},{type:Dy,text:"Orange",value:"#E67E23"},{type:Dy,text:"Dark Red",value:"#BA372A"},{type:Dy,text:"Dark Purple",value:"#843FA1"},{type:Dy,text:"Dark Blue",value:"#236FA1"},{type:Dy,text:"Light Gray",value:"#ECF0F1"},{type:Dy,text:"Medium Gray",value:"#CED4D9"},{type:Dy,text:"Gray",value:"#95A5A6"},{type:Dy,text:"Dark Gray",value:"#7E8C8D"},{type:Dy,text:"Navy Blue",value:"#34495E"},{type:Dy,text:"Black",value:"#000000"},{type:Dy,text:"White",value:"#ffffff"}],By=function(n){void 0===n&&(n=10);function o(t){i.splice(t,1)}var t,e=fy.getItem(dy),r=y(e)?JSON.parse(e):[],i=n-(t=r).length<0?t.slice(0,n):t;return{add:function(t){var e;(-1===(e=l(i,t))?vt.none():vt.some(e)).each(o),i.unshift(t),i.length>n&&i.pop(),fy.setItem(dy,JSON.stringify(i))},state:function(){return i.slice(0)}}}(10),My="#000000",Fy=function(r){return function(n,t){var o=!1;r.windowManager.open({title:"Color Picker",size:"normal",body:{type:"panel",items:[{type:"colorpicker",name:"colorpicker",label:"Color"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{colorpicker:t},onAction:function(t,e){"hex-valid"===e.name&&(o=e.value)},onSubmit:function(t){var e=t.getData().colorpicker;o?(n(vt.from(e)),t.close()):r.windowManager.alert(r.translate(["Invalid hex color code: {0}",e]))},onClose:st,onCancel:function(){n(vt.none())}})}},Iy=function(n,o,r,i,u,a,c){return nt(B(n,function(e){return"choiceitem"===e.type?ao("choicemenuitem",Uv,e).fold(ov,function(t){return vt.some(function(e,t,n,o,r,i,u,a){void 0===a&&(a=!0);var c=Tb({presets:n,textContent:t?e.text:vt.none(),htmlContent:vt.none(),ariaLabel:e.text,iconContent:e.icon,shortcutContent:t?e.shortcut:vt.none(),checkMark:t?vt.some(Ob(u.icons)):vt.none(),caret:vt.none(),value:e.value},u,a);return Yo(bb({data:yb(e),disabled:e.disabled,getApi:function(e){return{setActive:function(t){Rg.set(e,t)},isActive:function(){return Rg.isOn(e)},isDisabled:function(){return gd.isDisabled(e)},setDisabled:function(t){return gd.set(e,t)}}},onAction:function(t){return o(e.value)},onSetup:function(t){return t.setActive(r),st},triggersSubmenu:!1,itemBehaviours:[]},c,i,u),{toggling:{toggleClass:_v,toggleOnExecute:!1,selected:e.active}})}(t,1===r,i,o,a(e.value),u,c,nv(n)))}):vt.none()}))},Ry=Ir("cell-over"),Ny=Ir("cell-execute"),Py={inserttable:function(u){var t=Ir("size-label"),a=function(t){for(var e=[],n=0;n<10;n++){for(var o=[],r=0;r<10;r++)o.push(function(e,n,t){function o(t){return br(t,Ny,{row:e,col:n})}function r(t,e){e.stop(),o(t)}var i;return Tu({dom:{tag:"div",attributes:((i={role:"button"})["aria-labelledby"]=t,i)},behaviours:ec([mm("insert-table-picker-cell",[Cr(vi(),Mg.focus),Cr(Ii(),o),Cr(Ci(),r),Cr(Ni(),r)]),Rg.config({toggleClass:"tox-insert-table-picker__selected",toggleOnExecute:!1}),Mg.config({onFocus:function(t){return br(t,Ry,{row:e,col:n})}})])})}(n,r,t));e.push(o)}return e}(t),e=_y(0,0),c=Lm({dom:{tag:"span",classes:["tox-insert-table-picker__label"],attributes:{id:t}},components:[e],behaviours:ec([Dg.config({})])});return{type:"widget",data:{value:Ir("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[ny.widget({dom:{tag:"div",classes:["tox-insert-table-picker"]},components:H(a,function(t){return B(t,Eu)}).concat(c.asSpec()),behaviours:ec([mm("insert-table-picker",[ou(function(t){Dg.set(c.get(t),[e])}),Er(Ry,function(t,e,n){var o=n.event,r=o.row,i=o.col;!function(t,e,n){for(var o=0;o<10;o++)for(var r=0;r<10;r++)Rg.set(t[o][r],o<=e&&r<=n)}(a,r,i),Dg.set(c.get(t),[_y(r+1,i+1)])}),Er(Ny,function(t,e,n){var o=n.event,r=o.row,i=o.col;u.onAction({numRows:r+1,numColumns:i+1}),vr(t,Vi())})]),Tg.config({initSize:{numRows:10,numColumns:10},mode:"flatgrid",selector:'[role="button"]'})])})]}},colorswatch:function(e,t){var n,o,r,i=(o=t,r=(n=e).initData.allowCustomColors&&o.colorinput.hasCustomColors(),n.initData.colors.fold(function(){return yy(o.colorinput.getColors(),r)},function(t){return t.concat(vy(r))})),u=t.colorinput.getColorCols(),a=Cy(Ir("menu-value"),i,function(t){e.onAction({value:t})},u,"color",wv.CLOSE_ON_EXECUTE,T,t.shared.providers),c=lt(lt({},a),{markers:$h("color"),movement:Oy(u,"color")});return{type:"widget",data:{value:Ir("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[ny.widget(qg.sketch(c))]}}},Vy=function(t){var e=t.text.fold(function(){return{}},function(t){return{innerHtml:t}});return{type:"separator",dom:lt({tag:"div",classes:[kv,"tox-collection__group-heading"]},e),components:[]}},Hy=function(t,e,n,o){void 0===o&&(o=!0);var r=Tb({presets:"normal",iconContent:t.icon,textContent:t.text,htmlContent:vt.none(),ariaLabel:t.text,caret:vt.none(),checkMark:vt.none(),shortcutContent:t.shortcut},n,o);return bb({data:yb(t),getApi:function(e){return{isDisabled:function(){return gd.isDisabled(e)},setDisabled:function(t){return gd.set(e,t)}}},disabled:t.disabled,onAction:t.onAction,onSetup:t.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,e,n)},Ly=function(t,e,n,o,r){void 0===o&&(o=!0);var i=(r=void 0!==r&&r)?xb("chevron-down",n.icons,[Dv]):xb("chevron-right",n.icons,[Dv]),u=Tb({presets:"normal",iconContent:t.icon,textContent:t.text,htmlContent:vt.none(),ariaLabel:t.text,caret:vt.some(i),checkMark:vt.none(),shortcutContent:t.shortcut},n,o);return bb({data:yb(t),getApi:function(e){return{isDisabled:function(){return gd.isDisabled(e)},setDisabled:function(t){return gd.set(e,t)}}},disabled:t.disabled,onAction:st,onSetup:t.onSetup,triggersSubmenu:!0,itemBehaviours:[]},u,e,n)},zy=function(t,e,n,o){void 0===o&&(o=!0);var r=Tb({iconContent:t.icon,textContent:t.text,htmlContent:vt.none(),ariaLabel:t.text,checkMark:vt.some(Ob(n.icons)),caret:vt.none(),shortcutContent:t.shortcut,presets:"normal",meta:t.meta},n,o);return Yo(bb({data:yb(t),disabled:t.disabled,getApi:function(e){return{setActive:function(t){Rg.set(e,t)},isActive:function(){return Rg.isOn(e)},isDisabled:function(){return gd.isDisabled(e)},setDisabled:function(t){return gd.set(e,t)}}},onAction:t.onAction,onSetup:t.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,e,n),{toggling:{toggleClass:_v,toggleOnExecute:!1,selected:t.active}})},Uy=function(e,n){return tt(Py,e.fancytype).map(function(t){return t(e,n)})};function jy(t,u,a,e,c,s,l){var n=1===e,o=!n||nv(t);return nt(B(t,function(t){switch(t.type){case"separator":return ao("Autocompleter.Separator",Ih,t).fold(ov,function(t){return vt.some(Vy(t))});case"cardmenuitem":return ao("cardmenuitem",zv,t).fold(ov,function(e){return vt.some((t=lt(lt({},e),{onAction:function(t){e.onAction(t),a(e.value,e.meta)}}),n=c,o=s,r={itemBehaviours:Eb(e.meta,s),cardText:{matchText:u,highlightOn:l}},i={dom:_b(t.label),optComponents:[vt.some({dom:{tag:"div",classes:[Bv,Mv]},components:ey(t.items,r)})]},bb({data:yb(lt({text:vt.none()},t)),disabled:t.disabled,getApi:function(n){return{isDisabled:function(){return gd.isDisabled(n)},setDisabled:function(e){gd.set(n,e),St(vs(n.element,"*"),function(t){n.getSystem().getByDom(t).each(function(t){t.hasConfigured(gd)&&gd.set(t,e)})})}}},onAction:t.onAction,onSetup:t.onSetup,triggersSubmenu:!1,itemBehaviours:vt.from(r.itemBehaviours).getOr([])},i,n,o.providers)));var t,n,o,r,i});default:return ao("Autocompleter.Item",Rh,t).fold(ov,function(t){return vt.some(function(e,n,t,o,r,i,u,a){void 0===a&&(a=!0);var c=Tb({presets:o,textContent:vt.none(),htmlContent:t?e.text.map(function(t){return Db(t,n)}):vt.none(),ariaLabel:e.text,iconContent:e.icon,shortcutContent:vt.none(),checkMark:vt.none(),caret:vt.none(),value:e.value},u.providers,a,e.icon);return bb({data:yb(e),disabled:e.disabled,getApi:rt({}),onAction:function(t){return r(e.value,e.meta)},onSetup:rt(st),triggersSubmenu:!1,itemBehaviours:Eb(e.meta,u)},c,i,u.providers)}(t,u,n,"normal",a,c,s,o))})}}))}function Wy(t,e,n,o,r){var i=nv(e),u=nt(B(e,function(t){function e(t){return function(t,e,n,o,r){function i(t){return r?lt(lt({},t),{shortcut:vt.none(),icon:t.text.isSome()?vt.none():t.icon}):t}var u=n.shared.providers;switch(t.type){case"menuitem":return ao("menuitem",Gv,t).fold(ov,function(t){return vt.some(Hy(i(t),e,u,o))});case"nestedmenuitem":return ao("nestedmenuitem",Xv,t).fold(ov,function(t){return vt.some(Ly(i(t),e,u,o,r))});case"togglemenuitem":return ao("togglemenuitem",Yv,t).fold(ov,function(t){return vt.some(zy(i(t),e,u,o))});case"separator":return ao("separatormenuitem",Ih,t).fold(ov,function(t){return vt.some(Vy(t))});case"fancymenuitem":return ao("fancymenuitem",Wv,t).fold(ov,function(t){return Uy(i(t),n)});default:return console.error("Unknown item in general menu",t),vt.none()}}(t,n,o,r?!Tt(t,"text"):i,r)}return"nestedmenuitem"===t.type&&t.getSubmenuItems().length<=0?e(lt(lt({},t),{disabled:!0})):e(t)}));return(r?rv:iv)(t,i,u,1,"normal")}function Gy(t){return Zg.singleData(t.value,t)}function Xy(t,e,n){return Ru(t,e,n).isSome()}function Yy(n,o){var r=null;return{cancel:function(){null!==r&&(clearTimeout(r),r=null)},schedule:function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];r=setTimeout(function(){n.apply(null,t),r=null},o)}}}function qy(t){var e=t.raw;return void 0===e.touches||1!==e.touches.length?vt.none():vt.some(e.touches[0])}function Ky(){return ln().browser.isFirefox()}function Jy(e,t){var n,o,r,i,u,a,c,s,l,f=lt({stopBackspace:!0},t),d=(u=f,a=gc(),c=Po(!1),s=Yy(function(t){u.triggerEvent(Pi(),t),c.set(!0)},400),l=lr([{key:si(),value:function(n){return qy(n).each(function(t){s.cancel();var e={x:t.clientX,y:t.clientY,target:n.target};s.schedule(n),c.set(!1),a.set(e)}),vt.none()}},{key:li(),value:function(t){return s.cancel(),qy(t).each(function(i){a.on(function(t){var e=i,n=t,o=Math.abs(e.clientX-n.x),r=Math.abs(e.clientY-n.y);(5<o||5<r)&&a.clear()})}),vt.none()}},{key:fi(),value:function(e){return s.cancel(),a.get().filter(function(t){return zt(t.target,e.target)}).map(function(t){return c.get()?(e.prevent(),!1):u.triggerEvent(Ni(),e)})}}]),{fireIfReady:function(e,t){return tt(l,t).bind(function(t){return t(e)})}}),m=B(["touchstart","touchmove","touchend","touchcancel","gesturestart","mousedown","mouseup","mouseover","mousemove","mouseout","click"].concat(["selectstart","input","contextmenu","change","transitionend","transitioncancel","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(t){return pc(e,t,function(e){d.fireIfReady(e,t).each(function(t){t&&e.kill()}),f.triggerEvent(t,e)&&e.kill()})}),g=gc(),p=pc(e,"paste",function(e){d.fireIfReady(e,"paste").each(function(t){t&&e.kill()}),f.triggerEvent("paste",e)&&e.kill(),g.set(setTimeout(function(){f.triggerEvent(Mi(),e)},0))}),h=pc(e,"keydown",function(t){var e;f.triggerEvent("keydown",t)?t.kill():!f.stopBackspace||(e=t).raw.which!==vd[0]||wt(["input","textarea"],Ft(e.target))||Xy(e.target,'[contenteditable="true"]')||t.prevent()}),v=(n=e,o=function(t){f.triggerEvent("focusin",t)&&t.kill()},Ky()?hc(n,"focus",o):pc(n,"focusin",o)),b=gc(),y=(r=e,i=function(t){f.triggerEvent("focusout",t)&&t.kill(),b.set(setTimeout(function(){f.triggerEvent(Bi(),t)},0))},Ky()?hc(r,"blur",i):pc(r,"focusout",i));return{unbind:function(){St(m,function(t){t.unbind()}),h.unbind(),v.unbind(),y.unbind(),p.unbind(),g.on(clearTimeout),b.on(clearTimeout)}}}function $y(t,e){return Po(tt(t,"target").getOr(e))}function Qy(t,o,e,n,r,i){var u,a,c=t(o,n),s=(u=Po(!1),a=Po(!1),{stop:function(){u.set(!0)},cut:function(){a.set(!0)},isStopped:u.get,isCut:a.get,event:e,setSource:r.set,getSource:r.get});return c.fold(function(){return i.logEventNoHandlers(o,n),ux.complete()},function(e){var n=e.descHandler;return Ur(n)(s),s.isStopped()?(i.logEventStopped(o,e.element,n.purpose),ux.stopped()):s.isCut()?(i.logEventCut(o,e.element,n.purpose),ux.complete()):Yt(e.element).fold(function(){return i.logNoParent(o,e.element,n.purpose),ux.complete()},function(t){return i.logEventResponse(o,e.element,n.purpose),ux.resume(t)})})}function Zy(){function r(t){Rr(t.element).each(function(t){delete a[t],i.unregisterId(t)})}var u,i=(u={},{registerId:function(r,i,t){J(t,function(t,e){var n,o=void 0!==u[e]?u[e]:{};o[i]={cHandler:C.apply(void 0,[(n=t).handler].concat(r)),purpose:n.purpose},u[e]=o})},unregisterId:function(n){J(u,function(t,e){Tt(t,n)&&delete t[n]})},filterByType:function(t){return tt(u,t).map(function(t){return $(t,function(t,e){return{id:e,descHandler:t}})}).getOr([])},find:function(t,e,n){return tt(u,e).bind(function(o){return mr(n,function(t){return e=o,Rr(n=t).bind(function(t){return tt(e,t)}).map(function(t){return{element:n,descHandler:t}});var e,n},t)})}}),a={};return{find:function(t,e,n){return i.find(t,e,n)},filter:function(t){return i.filterByType(t)},register:function(t){var n,o=Rr((n=t).element).getOrThunk(function(){return t=n.element,e=Ir(du+"uid-"),gu(t,e),e;var t,e});et(a,o)&&function(t){var e=a[o];if(e!==t)throw new Error('The tagId "'+o+'" is already used by: '+Fr(e.element)+"\nCannot use it for: "+Fr(t.element)+"\nThe conflicting element is"+(vn(e.element)?" ":" not ")+"already in the DOM");r(t)}(t),i.registerId([t],o,t.events),a[o]=t},unregister:r,getById:function(t){return tt(a,t)}}}function tx(n){function o(e){return Yt(n.element).fold(D,function(t){return zt(e,t)})}function s(t,e){return i.find(o,t,e)}function r(e){var t=i.filter(Fi());St(t,function(t){Ur(t.descHandler)(e)})}var i=Zy(),t=Jy(n.element,{triggerEvent:function(e,n){return zu(e,n.target,function(t){return cx(s,e,n,n.target,t)})}}),u={debugInfo:rt("real"),triggerEvent:function(e,n,o){zu(e,n,function(t){return cx(s,e,o,n,t)})},triggerFocus:function(a,c){Rr(a).fold(function(){ka(a)},function(t){zu(Ai(),a,function(t){var e,n,o=s,r=Ai(),i=t,u=$y(e={originator:c,kill:st,prevent:st,target:a},n=a);return Qy(o,r,e,n,u,i),!1})})},triggerEscape:function(t,e){u.triggerEvent("keydown",t.element,e.event)},getByUid:function(t){return g(t)},getByDom:function(t){return p(t)},build:Tu,addToGui:function(t){c(t)},removeFromGui:function(t){l(t)},addToWorld:function(t){e(t)},removeFromWorld:function(t){a(t)},broadcast:function(t){f(t)},broadcastOn:function(t,e){d(t,e)},broadcastEvent:function(t,e){m(t,e)},isConnected:D},e=function(t){t.connect(u),Xe(t.element)||(i.register(t),St(t.components(),e),u.triggerEvent(Li(),t.element,{target:t.element}))},a=function(t){Xe(t.element)||(St(t.components(),a),i.unregister(t)),t.disconnect()},c=function(t){Ns(n,t)},l=function(t){Vs(t)},f=function(t){r({universal:!0,data:t})},d=function(t,e){r({universal:!1,channels:t,data:e})},m=function(t,e){var n,o,r=i.filter(t);return o={stop:function(){n.set(!0)},cut:st,isStopped:(n=Po(!1)).get,isCut:T,event:e,setSource:_("Cannot set source of a broadcasted event"),getSource:_("Cannot get source of a broadcasted event")},St(r,function(t){Ur(t.descHandler)(o)}),o.isStopped()},g=function(t){return i.getById(t).fold(function(){return Nn.error(new Error('Could not find component with uid: "'+t+'" in system.'))},Nn.value)},p=function(t){var e=Rr(t).getOr("not found");return g(e)};return e(n),{root:n,element:n.element,destroy:function(){t.unbind(),En(n.element)},add:c,remove:l,getByUid:g,getByDom:p,addToWorld:e,removeFromWorld:a,broadcast:f,broadcastOn:d,broadcastEvent:m}}function ex(t,e,n,o){var r=hx(t,e,n,o);return dx.sketch(r)}function nx(t,e){return dx.parts.label({dom:{tag:"label",classes:["tox-label"],innerHtml:e.translate(t)}})}function ox(t){return ec([Mg.config({onFocus:t.selectOnFocus?function(t){var e=t.element,n=Qr(e);e.dom.setSelectionRange(0,n.length)}:st})])}function rx(t){return{tag:t.tag,attributes:lt({type:"text"},t.inputAttributes),styles:t.inputStyles,classes:t.inputClasses}}(Ey=Ty={})[Ey.ContentFocus=0]="ContentFocus",Ey[Ey.UiFocus=1]="UiFocus";function ix(f,c){function n(){return r.get().isSome()}function s(){n()&&tp.hide(d)}var o,t,r=gc(),l=Po(!1),d=Tu(tp.sketch({dom:{tag:"div",classes:["tox-autocompleter"]},components:[],fireDismissalEventInstead:{},inlineBehaviours:ec([mm("dismissAutocompleter",[Cr(Yi(),function(){return m()})])]),lazySink:c.getSink})),m=function(){var t;n()&&(t=r.get().map(function(t){return t.element}),Ah(t.getOr(Mt.fromDom(f.selection.getNode()))).each(Fe),s(),r.clear(),l.set(!1))},u=Rt(function(){return n=dt(f.ui.registry.getAll().popups,function(t){return ao("Autocompleter",Nh,t).fold(function(t){throw new Error(ur(t))},h)}),t=$(n,function(t){return t.ch}),e={},St(t,function(t){e[t]={}}),o=Ct(e),r=Z(n),{dataset:n,triggerChars:o,lookupByChar:function(e){return F(r,function(t){return t.ch===e})}};var t,e,n,o,r}),g=function(t){var e=t;r.get().map(function(t){return Sh(f.dom,f.selection.getRng(),t.triggerChar).bind(function(t){return _h(f,u,t,e)})}).getOrThunk(function(){return e=f,t=(n=u)(),o=e.selection.getRng(),r=e.dom,i=o,K(t.triggerChars,function(t){return Sh(r,i,t)}).bind(function(t){return _h(e,n,t)});var e,n,t,o,r,i}).fold(m,function(a){var t,e=a.context;n()||(t=bh(f,e.range),r.set({triggerChar:e.triggerChar,element:t,matchLength:e.text.length}),l.set(!1)),a.lookupData.then(function(u){r.get().map(function(t){var e,n,o,r,i=a.context;t.triggerChar===i.triggerChar&&(n=i.triggerChar,r=K(o=u,function(t){return vt.from(t.columns)}).getOr(1),0<(e=H(o,function(i){return jy(i.items,i.matchText,function(o,r){var t=f.selection.getRng();Sh(f.dom,t,n).fold(function(){return console.error("Lost context. Cursor probably moved")},function(t){var e=t.range,n={hide:function(){m()},reload:function(t){s(),g(t)}};l.set(!0),i.onAction(n,e,o,r),l.set(!1)})},r,wv.BUBBLE_TO_SANDBOX,c,i.highlightOn)})).length?function(t,e,n,o){t.matchLength=e.text.length;var r,i,u,a,c,s,l=K(n,function(t){return vt.from(t.columns)}).getOr(1);tp.showAt(d,qg.sketch((r=iv("autocompleter-value",!0,o,l,"normal"),i=l,a=((u=Ty.ContentFocus)===Ty.ContentFocus?jl:Ul)(),c=Oy(i,"normal"),s=$h("normal"),{dom:r.dom,components:r.components,items:r.items,value:r.value,markers:{selectedItem:s.selectedItem,item:s.item},movement:c,fakeFocus:u===Ty.ContentFocus,focusManager:a,menuBehaviours:qv("auto"!==i?[]:[ou(function(o,t){uv(o,4,s.item).each(function(t){var e=t.numColumns,n=t.numRows;Tg.setGridSize(o,n,e)})})])})),{anchor:{type:"node",root:Mt.fromDom(f.getBody()),node:vt.from(t.element)}}),tp.getContent(d).each(hd.highlightFirst)}(t,i,u,e):(10<=i.text.length-t.matchLength?m:s)())})})})},e={onKeypress:hh(function(t){27!==t.which&&g()},50),cancelIfNecessary:m,isMenuOpen:function(){return tp.isOpen(d)},isActive:n,isProcessingAction:l.get,getView:function(){return tp.getContent(d)}};function i(t,e){br(t,xi(),{raw:e})}!1===f.hasPlugin("rtc")&&(o=e,(t=f).on("keypress compositionend",o.onKeypress.throttle),t.on("remove",o.onKeypress.cancel),t.on("keydown",function(e){function t(){return o.getView().bind(hd.getHighlighted)}8===e.which&&o.onKeypress.throttle(e),o.isActive()&&(27===e.which&&o.cancelIfNecessary(),o.isMenuOpen()?13===e.which?(t().each(yr),e.preventDefault()):40===e.which?(t().fold(function(){o.getView().each(hd.highlightFirst)},function(t){i(t,e)}),e.preventDefault(),e.stopImmediatePropagation()):37!==e.which&&38!==e.which&&39!==e.which||t().each(function(t){i(t,e),e.preventDefault(),e.stopImmediatePropagation()}):13!==e.which&&38!==e.which&&40!==e.which||o.cancelIfNecessary())}),t.on("NodeChange",function(t){o.isActive()&&!o.isProcessingAction()&&Ah(Mt.fromDom(t.element)).isNone()&&o.cancelIfNecessary()}))}var ux=Vo([{stopped:[]},{resume:["element"]},{complete:[]}]),ax=function(e,n,o,t,r,i){return Qy(e,n,o,t,r,i).fold(D,function(t){return ax(e,n,o,t,r,i)},T)},cx=function(t,e,n,o,r){var i=$y(n,o);return ax(t,e,n,o,i,r)},sx=kl({name:"Container",factory:function(t){var e=t.dom,n=e.attributes,o=A(e,["attributes"]);return{uid:t.uid,dom:lt({tag:"div",attributes:lt({role:"presentation"},n)},o),components:t.components,behaviours:tl(t.containerBehaviours),events:t.events,domModification:t.domModification,eventOrder:t.eventOrder}},configFields:[Eo("components",[]),Zs("containerBehaviours",[]),Eo("events",{}),Eo("domModification",{}),Eo("eventOrder",{})]}),lx=rt([Eo("prefix","form-field"),Zs("fieldBehaviours",[cd,Df])]),fx=rt([Qf({schema:[mo("dom")],name:"label"}),Qf({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:t.text}}}},schema:[mo("text")],name:"aria-descriptor"}),Jf({factory:{sketch:function(t){var n,o,e=(n=["factory"],o={},J(t,function(t,e){wt(n,e)||(o[e]=t)}),o);return t.factory.sketch(e)}},schema:[mo("factory")],name:"field"})]),dx=Cl({name:"FormField",configFields:lx(),partFields:fx(),factory:function(r,t,e,n){var o=el(r.fieldBehaviours,[cd.config({find:function(t){return ml(t,r,"field")}}),Df.config({store:{mode:"manual",getValue:function(t){return cd.getCurrent(t).bind(Df.getValue)},setValue:function(t,e){cd.getCurrent(t).each(function(t){Df.setValue(t,e)})}}})]),i=nu([ou(function(t,e){var o=pl(t,r,["label","field","aria-descriptor"]);o.field().each(function(n){var e=Ir(r.prefix);o.label().each(function(t){oe(t.element,"for",e),oe(n.element,"id",e)}),o["aria-descriptor"]().each(function(t){var e=Ir(r.prefix);oe(t.element,"id",e),oe(n.element,"aria-describedby",e)})})})]);return{uid:r.uid,dom:r.dom,components:t,behaviours:o,events:i,apis:{getField:function(t){return ml(t,r,"field")},getLabel:function(t){return ml(t,r,"label")}}}},apis:{getField:function(t,e){return t.getField(e)},getLabel:function(t,e){return t.getLabel(e)}}}),mx=Object.freeze({__proto__:null,exhibit:function(t,e){return zr({attributes:lr([{key:e.tabAttr,value:"true"}])})}}),gx=xa({fields:[Eo("tabAttr","data-alloy-tabstop")],name:"tabstopping",active:mx}),px=tinymce.util.Tools.resolve("tinymce.html.Entities"),hx=function(t,e,n,o){return{dom:vx(n),components:t.toArray().concat([e]),fieldBehaviours:ec(o)}},vx=function(t){return{tag:"div",classes:["tox-form__group"].concat(t)}},bx=Ir("form-component-change"),yx=Ir("form-close"),xx=Ir("form-cancel"),wx=Ir("form-action"),Sx=Ir("form-submit"),kx=Ir("form-block"),Cx=Ir("form-unblock"),Ox=Ir("form-tabchange"),_x=Ir("form-resize"),Tx=rt([wo("data"),Eo("inputAttributes",{}),Eo("inputStyles",{}),Eo("tag","input"),Eo("inputClasses",[]),Ju("onSetValue"),Eo("styles",{}),Eo("eventOrder",{}),Zs("inputBehaviours",[Df,Mg]),Eo("selectOnFocus",!0)]),Ex=kl({name:"Input",configFields:Tx(),factory:function(t,e){return{uid:t.uid,dom:rx(t),components:[],behaviours:lt(lt({},ox(n=t)),el(n.inputBehaviours,[Df.config({store:lt(lt({mode:"manual"},n.data.map(function(t){return{initialValue:t}}).getOr({})),{getValue:function(t){return Qr(t.element)},setValue:function(t,e){Qr(t.element)!==e&&Zr(t.element,e)}}),onSetValue:n.onSetValue})])),eventOrder:t.eventOrder};var n}}),Dx={},Ax={exports:Dx};function Bx(t){setTimeout(function(){throw t},0)}function Mx(t){var e=Ft(t);return wt(Gx,e)}function Fx(t,e){qr(e.getRoot(t).getOr(t.element),e.invalidClass),e.notify.each(function(e){Mx(t.element)&&oe(t.element,"aria-invalid",!1),e.getContainer(t).each(function(t){Mr(t,e.validHtml)}),e.onValid(t)})}function Ix(e,t,n,o){Yr(t.getRoot(e).getOr(e.element),t.invalidClass),t.notify.each(function(t){Mx(e.element)&&oe(e.element,"aria-invalid",!0),t.getContainer(e).each(function(t){Mr(t,o)}),t.onInvalid(e,o)})}function Rx(e,t,n){return t.validator.fold(function(){return Wx(Nn.value(!0))},function(t){return t.validate(e)})}function Nx(e,n,t){return n.notify.each(function(t){t.onValidate(e)}),Rx(e,n).map(function(t){return e.getSystem().isConnected()?t.fold(function(t){return Ix(e,n,0,t),Nn.error(t)},function(t){return Fx(e,n),Nn.value(t)}):Nn.error("No longer in system")})}!function(){var t=this,e=function(){var t,e,n,o={exports:{}};function r(){}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(t,this)}function u(n,o){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var t,e=1===n._state?o.onFulfilled:o.onRejected;if(null!==e){try{t=e(n._value)}catch(t){return void c(o.promise,t)}a(o.promise,t)}else(1===n._state?a:c)(o.promise,n._value)})):n._deferreds.push(o)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void f((o=n,r=t,function(){o.apply(r,arguments)}),e)}e._state=1,e._value=t,s(e)}catch(t){c(e,t)}var o,r}function c(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)u(t,t._deferreds[e]);t._deferreds=null}function l(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function f(t,e){var n=!1;try{t(function(t){n||(n=!0,a(e,t))},function(t){n||(n=!0,c(e,t))})}catch(t){if(n)return;n=!0,c(e,t)}}t=o,e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=setTimeout,i.prototype.catch=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(r);return u(this,new l(t,e,n)),n},i.all=function(t){var a=Array.prototype.slice.call(t);return new i(function(r,i){if(0===a.length)return r([]);for(var u=a.length,t=0;t<a.length;t++)!function e(n,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var o=t.then;if("function"==typeof o)return o.call(t,function(t){e(n,t)},i),0}a[n]=t,0==--u&&r(a)}catch(t){i(t)}}(t,a[t])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(n){return new i(function(t,e){e(n)})},i.race=function(r){return new i(function(t,e){for(var n=0,o=r.length;n<o;n++)r[n].then(t,e)})},i._immediateFn="function"==typeof setImmediate?function(t){setImmediate(t)}:function(t){n(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},t.exports?t.exports=i:e.Promise||(e.Promise=i);var d=o.exports;return{boltExport:("undefined"!=typeof window?window:Function("return this;")()).Promise||d}};"object"==typeof Dx&&void 0!==Ax?Ax.exports=e():(t="undefined"!=typeof globalThis?globalThis:t||self).EphoxContactWrapper=e()}();var Px,Vx,Hx=Ax.exports.boltExport,Lx=function(t){function o(t){r()?i(t):e.push(t)}var n=vt.none(),e=[],r=function(){return n.isSome()},i=function(e){n.each(function(t){setTimeout(function(){e(t)},0)})};return t(function(t){r()||(n=vt.some(t),St(e,i),e=[])}),{get:o,map:function(n){return Lx(function(e){o(function(t){e(n(t))})})},isReady:r}},zx={nu:Lx,pure:function(e){return Lx(function(t){t(e)})}},Ux=function(n){function t(t){n().then(t,Bx)}return{map:function(t){return Ux(function(){return n().then(t)})},bind:function(e){return Ux(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return Ux(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return zx.nu(t)},toCached:function(){var t=null;return Ux(function(){return t=null===t?n():t})},toPromise:n,get:t}},jx=function(t){return Ux(function(){return new Hx(t)})},Wx=function(t){return Ux(function(){return Hx.resolve(t)})},Gx=["input","textarea"],Xx=Object.freeze({__proto__:null,markValid:Fx,markInvalid:Ix,query:Rx,run:Nx,isInvalid:function(t,e){return Kr(e.getRoot(t).getOr(t.element),e.invalidClass)}}),Yx=Object.freeze({__proto__:null,events:function(e,t){return e.validator.map(function(t){return nu([Cr(t.onEvent,function(t){Nx(t,e).get(h)})].concat(t.validateOnLoad?[ou(function(t){Nx(t,e).get(st)})]:[]))}).getOr({})}}),qx=xa({fields:[mo("invalidClass"),Eo("getRoot",vt.none),To("notify",[Eo("aria","alert"),Eo("getContainer",vt.none),Eo("validHtml",""),Ju("onValid"),Ju("onInvalid"),Ju("onValidate")]),To("validator",[mo("validate"),Eo("onEvent","input"),Eo("validateOnLoad",!0)])],name:"invalidating",active:Yx,apis:Xx,extra:{validation:function(n){return function(t){var e=Df.getValue(t);return Wx(n(e))}}}}),Kx=Object.freeze({__proto__:null,getCoupled:function(t,e,n,o){return n.getOrCreate(t,e,o)}}),Jx=xa({fields:[go("others",uo(Nn.value,Zo()))],name:"coupling",apis:Kx,state:Object.freeze({__proto__:null,init:function(){var i={},t=rt({});return wu({readState:t,getOrCreate:function(n,o,r){var t=Ct(o.others);if(t)return tt(i,r).getOrThunk(function(){var t=tt(o.others,r).getOrDie("No information found for coupled component: "+r)(n),e=n.getSystem().build(t);return i[r]=e});throw new Error("Cannot find coupled component: "+r+". Known coupled components: "+JSON.stringify(t,null,2))}})}})}),$x=rt("sink"),Qx=rt(Qf({name:$x(),overrides:rt({dom:{tag:"div"},behaviours:ec([ff.config({useFixed:D})]),events:nu([Dr(xi()),Dr(mi()),Dr(Ci())])})}));function Zx(t,e){var n=t.getHotspot(e).getOr(e),o=t.getAnchorOverrides();return t.layouts.fold(function(){return{type:"hotspot",hotspot:n,overrides:o}},function(t){return{type:"hotspot",hotspot:n,overrides:o,layouts:t}})}function t0(t,e,n,o,r,i,u){var a,c=Zx(t,n),s=n,l=o,f=r,d=u,m=e,g=(0,(a=t).fetch)(s).map(m),p=dS(s,a);return g.map(function(t){return t.bind(function(t){return vt.from(Zg.sketch(lt(lt({},f.menu()),{uid:pu(""),data:t,highlightImmediately:d===Px.HighlightFirst,onOpenMenu:function(t,e){var n=p().getOrDie();ff.position(n,e,{anchor:c}),bf.decloak(l)},onOpenSubmenu:function(t,e,n){var o=p().getOrDie();ff.position(o,n,{anchor:{type:"submenu",item:e}}),bf.decloak(l)},onRepositionMenu:function(t,e,n){var o=p().getOrDie();ff.position(o,e,{anchor:c}),St(n,function(t){ff.position(o,t.triggeredMenu,{anchor:{type:"submenu",item:t.triggeringItem}})})},onEscape:function(){return Mg.focus(s),bf.close(l),vt.some(!0)}})))})}).map(function(t){return t.fold(function(){bf.isOpen(o)&&bf.close(o)},function(t){bf.cloak(o),bf.open(o,t),i(o)}),o})}function e0(t,e,n,o,r,i){var u=Jx.getCoupled(n,"sandbox");return(bf.isOpen(u)?function(t,e,n,o,r,i,u){return bf.close(o),Wx(o)}:t0)(t,e,n,u,o,r,i)}function n0(t){bf.getState(t).each(function(t){Zg.repositionMenus(t)})}function o0(s,l,f){var d=Nu(),t=dS(l,s);return{dom:{tag:"div",classes:s.sandboxClasses,attributes:{id:d.id,role:"listbox"}},behaviours:Bf(s.sandboxBehaviours,[Df.config({store:{mode:"memory",initialValue:l}}),bf.config({onOpen:function(t,e){var n,o,r,i,u,a,c=Zx(s,l);d.link(l.element),s.matchWidth&&(n=c.hotspot,o=e,r=s.useMinWidth,u=cd.getCurrent(o).getOr(o),a=Ce(n.element),r?fe(u.element,"min-width",a+"px"):(i=u.element,On.set(i,a))),s.onOpen(c,t,e),void 0!==f&&void 0!==f.onOpen&&f.onOpen(t,e)},onClose:function(t,e){d.unlink(l.element),void 0!==f&&void 0!==f.onClose&&f.onClose(t,e)},isPartOf:function(t,e,n){return Hu(e,n)||Hu(l,n)},getAttachPoint:function(){return t().getOrDie()}}),cd.config({find:function(t){return bf.getState(t).bind(function(t){return cd.getCurrent(t)})}}),ic.config({channels:lt(lt({},Xs({isExtraPart:T})),Ys({doReposition:n0}))})])}}function r0(t){n0(Jx.getCoupled(t,"sandbox"))}function i0(){return[Eo("sandboxClasses",[]),Af("sandboxBehaviours",[cd,ic,bf,Df])]}function u0(e){return Qf({name:e+"-edge",overrides:function(t){return t.model.manager.edgeActions[e].fold(function(){return{}},function(o){return{events:nu([Or(si(),function(t,e,n){return o(t,n)},[t]),Or(mi(),function(t,e,n){return o(t,n)},[t]),Or(gi(),function(t,e,n){n.mouseIsDown.get()&&o(t,n)},[t])])}})}})}function a0(t){var e=t.event.raw;return-1===e.type.indexOf("touch")?void 0!==e.clientX?vt.some(e).map(function(t){return kn(t.clientX,t.clientY)}):vt.none():void 0!==e.touches&&1===e.touches.length?vt.some(e.touches[0]).map(function(t){return kn(t.clientX,t.clientY)}):vt.none()}function c0(t){return t.model.minX}function s0(t){return t.model.minY}function l0(t){return t.model.minX-1}function f0(t){return t.model.minY-1}function d0(t){return t.model.maxX}function m0(t){return t.model.maxY}function g0(t){return t.model.maxX+1}function p0(t){return t.model.maxY+1}function h0(t,e,n){return e(t)-n(t)}function v0(t){return h0(t,d0,c0)}function b0(t){return h0(t,m0,s0)}function y0(t){return v0(t)/2}function x0(t){return b0(t)/2}function w0(t){return t.stepSize}function S0(t){return t.snapToGrid}function k0(t){return t.snapStart}function C0(t){return t.rounded}function O0(t,e){return void 0!==t[e+"-edge"]}function _0(t){return O0(t,"left")}function T0(t){return O0(t,"right")}function E0(t){return O0(t,"top")}function D0(t){return O0(t,"bottom")}function A0(t){return t.model.value.get()}function B0(t,e){return{x:t,y:e}}function M0(t,e){br(t,DS(),{value:e})}function F0(t,e,n,o){return t<e?t:n<t?n:t===e?e-1:Math.max(e,t-o)}function I0(t,e,n,o){return n<t?t:t<e?e:t===n?n+1:Math.min(n,t+o)}function R0(t,e,n){return Math.max(e,Math.min(n,t))}function N0(t){var e=t.min,n=t.max,o=t.range,r=t.value,i=t.step,u=t.snap,a=t.snapStart,c=t.rounded,s=t.hasMinEdge,l=t.hasMaxEdge,f=t.minBound,d=t.maxBound,m=t.screenRange,g=s?e-1:e,p=l?n+1:n;if(r<f)return g;if(d<r)return p;var h,v,b,y,x,w=R0((x=f,Math.min(d,Math.max(r,x))-x)/m*o+e,g,p);return u&&e<=w&&w<=n?(h=w,v=e,b=n,y=i,a.fold(function(){var t=Math.round((h-v)/y)*y;return R0(v+t,v-1,b+1)},function(t){var e=Math.round((h-t)%y/y),n=Math.floor((h-t)/y),o=Math.floor((b-t)/y),r=Math.min(o,n+e);return Math.max(t,t+r*y)})):c?Math.round(w):w}function P0(t){var e=t.min,n=t.max,o=t.range,r=t.value,i=t.hasMinEdge,u=t.hasMaxEdge,a=t.maxBound,c=t.maxOffset,s=t.centerMinEdge,l=t.centerMaxEdge;return r<e?i?0:s:n<r?u?a:l:(r-e)/o*c}function V0(t){return t.element.dom.getBoundingClientRect()}function H0(t){return V0(t)[AS]}function L0(t){return V0(t).right}function z0(t){return V0(t).top}function U0(t){return V0(t).bottom}function j0(t){return V0(t).width}function W0(t){return V0(t).height}function G0(t,e){var n=V0(t),o=V0(e);return(n[AS]+n.right)/2-o[AS]}function X0(t,e){var n=V0(t),o=V0(e);return(n.top+n.bottom)/2-o.top}function Y0(t,e){br(t,DS(),{value:e})}function q0(t,e,n){return N0({min:c0(e),max:d0(e),range:v0(e),value:n,step:w0(e),snap:S0(e),snapStart:k0(e),rounded:C0(e),hasMinEdge:_0(e),hasMaxEdge:T0(e),minBound:H0(t),maxBound:L0(t),screenRange:j0(t)})}function K0(r){return function(t,e){return Y0(t,{x:o=(0<r?I0:F0)(A0(n=e).x,c0(n),d0(n),w0(n))}),vt.some(o).map(D);var n,o}}function J0(t,e,n,o,r,i){var u,a,c,s,l,f,d,m,g=(a=i,c=n,s=o,l=r,f=j0(u=e),d=s.bind(function(t){return vt.some(G0(t,u))}).getOr(0),m=l.bind(function(t){return vt.some(G0(t,u))}).getOr(f),P0({min:c0(a),max:d0(a),range:v0(a),value:c,hasMinEdge:_0(a),hasMaxEdge:T0(a),minBound:H0(u),minOffset:0,maxBound:L0(u),maxOffset:f,centerMinEdge:d,centerMaxEdge:m}));return H0(e)-H0(t)+g}function $0(t,e){br(t,DS(),{value:e})}function Q0(t,e,n){return N0({min:s0(e),max:m0(e),range:b0(e),value:n,step:w0(e),snap:S0(e),snapStart:k0(e),rounded:C0(e),hasMinEdge:E0(e),hasMaxEdge:D0(e),minBound:z0(t),maxBound:U0(t),screenRange:W0(t)})}function Z0(r){return function(t,e){return $0(t,{y:o=(0<r?I0:F0)(A0(n=e).y,s0(n),m0(n),w0(n))}),vt.some(o).map(D);var n,o}}function tw(t,e,n,o,r,i){var u,a,c,s,l,f,d,m,g=(a=i,c=n,s=o,l=r,f=W0(u=e),d=s.bind(function(t){return vt.some(X0(t,u))}).getOr(0),m=l.bind(function(t){return vt.some(X0(t,u))}).getOr(f),P0({min:s0(a),max:m0(a),range:b0(a),value:c,hasMinEdge:E0(a),hasMaxEdge:D0(a),minBound:z0(u),minOffset:0,maxBound:U0(u),maxOffset:f,centerMinEdge:d,centerMaxEdge:m}));return z0(e)-z0(t)+g}function ew(t,e){br(t,DS(),{value:e})}function nw(t,e){return{x:t,y:e}}function ow(u,a){return function(t,e){return o=e,r=0<u?I0:F0,ew(t,nw(i=(n=a)?A0(o).x:r(A0(o).x,c0(o),d0(o),w0(o)),n?r(A0(o).y,s0(o),m0(o),w0(o)):A0(o).y)),vt.some(i).map(D);var n,o,r,i}}function rw(t){return"<alloy.field."+t+">"}function iw(f,d,m,g){function p(t,e,n,o,r){var i,u,a=f(ik+"range"),c=[dx.parts.label({dom:{tag:"label",innerHtml:n,attributes:{"aria-label":o}}}),dx.parts.field({data:r,factory:Ex,inputAttributes:lt({type:"text"},"hex"===e?{"aria-live":"polite"}:{}),inputClasses:[d("textfield")],inputBehaviours:ec([(i=e,u=t,qx.config({invalidClass:d("invalid"),notify:{onValidate:function(t){br(t,rk,{type:i})},onValid:function(t){br(t,nk,{type:i,value:Df.getValue(t)})},onInvalid:function(t){br(t,ok,{type:i,value:Df.getValue(t)})}},validator:{validate:function(t){var e=Df.getValue(t),n=u(e)?Nn.value(!0):Nn.error(f("aria.input.invalid"));return Wx(n)},validateOnLoad:!1}})),gx.config({})]),onSetValue:function(t){qx.isInvalid(t)&&qx.run(t).get(st)}})],s="hex"!==e?[dx.parts["aria-descriptor"]({text:a})]:[];return{dom:{tag:"div",attributes:{role:"presentation"}},components:c.concat(s)}}function h(t,e){var n=e.red,o=e.green,r=e.blue;Df.setValue(t,{red:n,green:o,blue:r})}function v(t,e){b.getOpt(t).each(function(t){fe(t.element,"background-color","#"+e.value)})}var b=Lm({dom:{tag:"div",classes:[d("rgba-preview")],styles:{"background-color":"white"},attributes:{role:"presentation"}}});return kl({factory:function(){function a(t){return o[t].get()}function c(t,e){o[t].set(e)}function e(t,e){var n=e.event;"hex"!==n.type?c(n.type,vt.none()):g(t)}function n(t,e){var r,n,o,i,u=e.event;"hex"===u.type?function(t,e){m(t);var n=Ab(e);c("hex",vt.some(e));var o=Pb(n);h(t,o),s(o),br(t,$S,{hex:n}),v(t,n)}(t,u.value):(r=t,n=u.type,o=u.value,i=parseInt(o,10),c(n,vt.some(i)),a("red").bind(function(n){return a("green").bind(function(e){return a("blue").map(function(t){return Ib(n,e,t,1)})})}).each(function(t){var e,n,o=(e=r,n=Fb(t),ek.getField(e,"hex").each(function(t){Mg.isFocused(t)||Df.setValue(e,{hex:n.value})}),n);br(r,$S,{hex:o}),v(r,o)}))}function t(t){return{label:f(ik+t+".label"),description:f(ik+t+".description")}}function s(t){var e=t.red,n=t.green,o=t.blue;c("red",vt.some(e)),c("green",vt.some(n)),c("blue",vt.some(o))}var o={red:Po(vt.some(255)),green:Po(vt.some(255)),blue:Po(vt.some(255)),hex:Po(vt.some("ffffff"))},r=t("red"),i=t("green"),u=t("blue"),l=t("hex");return Yo(ek.sketch(function(t){return{dom:{tag:"form",classes:[d("rgb-form")],attributes:{"aria-label":f("aria.color.picker")}},components:[t.field("red",dx.sketch(p(Rb,"red",r.label,r.description,255))),t.field("green",dx.sketch(p(Rb,"green",i.label,i.description,255))),t.field("blue",dx.sketch(p(Rb,"blue",u.label,u.description,255))),t.field("hex",dx.sketch(p(Bb,"hex",l.label,l.description,"ffffff"))),b.asSpec()],formBehaviours:ec([qx.config({invalidClass:d("form-invalid")}),mm("rgb-form-events",[Cr(nk,n),Cr(ok,e),Cr(rk,e)])])}}),{apis:{updateHex:function(t,e){var n;Df.setValue(t,{hex:e.value}),h(t,n=Pb(e)),s(n),v(t,e)}}})},name:"RgbForm",configFields:[],apis:{updateHex:function(t,e,n){t.updateHex(e,n)}},extraApis:{}})}function uw(x,w){return kl({name:"ColourPicker",configFields:[mo("dom"),Eo("onValidHex",st),Eo("onInvalidHex",st)],factory:function(t){function e(t,e,n){v.getOpt(t).each(function(t){g.setHue(t,n)})}function n(t,e){b.getOpt(t).each(function(t){m.updateHex(t,e)})}function r(e,n,o,t){var r=o,i=Pb(n);p.paletteRgba.set(i),p.paletteHue.set(r),St(t,function(t){t(e,n,o)})}var o,i,u,a,c,s,l,f,d,m=iw(x,w,t.onValidHex,t.onInvalidHex),g=(l=w,f=JS.parts.spectrum({dom:{tag:"canvas",attributes:{role:"presentation"},classes:[l("sv-palette-spectrum")]}}),d=JS.parts.thumb({dom:{tag:"div",attributes:{role:"presentation"},classes:[l("sv-palette-thumb")],innerHtml:"<div class="+l("sv-palette-inner-thumb")+' role="presentation"></div>'}}),kl({factory:function(t){var e=rt({x:0,y:0}),n=ec([cd.config({find:vt.some}),Mg.config({})]);return JS.sketch({dom:{tag:"div",attributes:{role:"presentation"},classes:[l("sv-palette")]},model:{mode:"xy",getInitialValue:e},rounded:!1,components:[f,d],onChange:function(t,e,n){br(t,ZS,{value:n})},onInit:function(t,e,n,o){y(n.element.dom,Lb(ly))},sliderBehaviours:n})},name:"SaturationBrightnessPalette",configFields:[],apis:{setHue:function(t,e,n){var o=n;y(e.components()[0].element.dom,Lb(Nb(Ub(o,100,100))))},setThumb:function(t,e,n){var o=e,r=jb(Pb(n));JS.setValue(o,{x:r.saturation,y:100-r.value})}},extraApis:{}})),p={paletteRgba:Po(ly),paletteHue:Po(0)},h=Lm((i=JS.parts.spectrum({dom:{tag:"div",classes:[(o=w)("hue-slider-spectrum")],attributes:{role:"presentation"}}}),u=JS.parts.thumb({dom:{tag:"div",classes:[o("hue-slider-thumb")],attributes:{role:"presentation"}}}),JS.sketch({dom:{tag:"div",classes:[o("hue-slider")],attributes:{role:"presentation"}},rounded:!1,model:{mode:"y",getInitialValue:rt({y:0})},components:[i,u],sliderBehaviours:ec([Mg.config({})]),onChange:function(t,e,n){br(t,QS,{value:n})}}))),v=Lm(g.sketch({})),b=Lm(m.sketch({}));function y(t,e){var n,o,r=t.width,i=t.height,u=t.getContext("2d");null!==u&&(u.fillStyle=e,u.fillRect(0,0,r,i),(n=u.createLinearGradient(0,0,r,0)).addColorStop(0,"rgba(255,255,255,1)"),n.addColorStop(1,"rgba(255,255,255,0)"),u.fillStyle=n,u.fillRect(0,0,r,i),(o=u.createLinearGradient(0,0,0,i)).addColorStop(0,"rgba(0,0,0,0)"),o.addColorStop(1,"rgba(0,0,0,1)"),u.fillStyle=o,u.fillRect(0,0,r,i))}return{uid:t.uid,dom:t.dom,components:[v.asSpec(),h.asSpec(),b.asSpec()],behaviours:ec([mm("colour-picker-events",[Cr($S,(s=[e,function(t,e,n){h.getOpt(t).each(function(t){JS.setValue(t,{y:100-n/360*100})})},function(t,e){v.getOpt(t).each(function(t){g.setThumb(t,e)})}],function(t,e){var n=e.event.hex;r(t,n,jb(Pb(n)).hue,s)})),Cr(ZS,(c=[n],function(t,e){var n=e.event.value,o=p.paletteHue.get();r(t,Wb(Ub(o,n.x,100-n.y)),o,c)})),Cr(QS,(a=[e,n],function(t,e){var n=(100-e.event.value.y)/100*360,o=jb(p.paletteRgba.get());r(t,Wb(Ub(n,o.saturation,o.value)),n,a)}))]),cd.config({find:function(t){return b.getOpt(t)}}),Tg.config({mode:"acyclic"})])}}})}function aw(t){return ck[t]}function cw(t,e,n){return Df.config(Yo({store:{mode:"manual",getValue:e,setValue:n}},t.map(function(t){return{store:{initialValue:t}}}).getOr({})))}function sw(r,i){function e(t,e){e.stop()}function n(t){return function(e,n){St(t,function(t){t(e,n)})}}function o(t,e){var n;gd.isDisabled(t)||(n=e.event.raw,a(t,n.dataTransfer.files))}function u(t,e){var n=e.event.raw.target;a(t,n.files)}function a(t,e){var n,o;Df.setValue(t,(n=e,o=lk.explode(i.getSetting("images_file_types","jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp","string")),F(kt(n),function(e){return d(o,function(t){return At(e.name.toLowerCase(),"."+t.toLowerCase())})}))),br(t,bx,{name:r.name})}var c=Lm({dom:{tag:"input",attributes:{type:"file",accept:"image/*"},styles:{display:"none"}},behaviours:ec([mm("input-file-events",[Dr(Ci()),Dr(Ni())])])});return ex(r.label.map(function(t){return nx(t,i)}),dx.parts.field({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"div",classes:["tox-dropzone-container"]},behaviours:ec([gk([]),uS(),gd.config({}),Rg.config({toggleClass:"dragenter",toggleOnExecute:!1}),mm("dropzone-events",[Cr("dragenter",n([e,Rg.toggle])),Cr("dragleave",n([e,Rg.toggle])),Cr("dragover",e),Cr("drop",n([e,o])),Cr(ki(),u)])]),components:[{dom:{tag:"div",classes:["tox-dropzone"],styles:{}},components:[{dom:{tag:"p",innerHtml:i.translate("Drop an image here")}},ip.sketch({dom:{tag:"button",innerHtml:i.translate("Browse for an image"),styles:{position:"relative"},classes:["tox-button","tox-button--secondary"]},components:[c.asSpec()],action:function(t){c.get(t).element.dom.click()},buttonBehaviours:ec([gx.config({}),Jb(i.isDisabled),gb()])})]}]}}}}),["tox-form__group--stretched"],[])}function lw(t){return{dom:{tag:"div",styles:{width:"1px",height:"1px",outline:"none"},attributes:{tabindex:"0"},classes:t},behaviours:ec([Mg.config({ignore:!0}),gx.config({})])}}function fw(t){return{dom:{tag:"div",classes:["tox-navobj"]},components:[lw([pk]),t,lw([hk])],behaviours:ec([ak(1)])}}function dw(t,e){br(t,xi(),{raw:{which:9,shiftKey:e}})}function mw(t,e){var n=e.element;Kr(n,pk)?dw(t,!0):Kr(n,hk)&&dw(t,!1)}function gw(t){return Xy(t,["."+pk,"."+hk].join(","),T)}function pw(t,e){return yk(document.createElement("canvas"),t,e)}function hw(t){var e=pw(t.width,t.height);return bk(e).drawImage(t,0,0),e}function vw(t){return t.naturalWidth||t.width}function bw(t){return t.naturalHeight||t.height}function yw(t,o,r){return o=o||"image/png",S(HTMLCanvasElement.prototype.toBlob)?new Hx(function(e,n){t.toBlob(function(t){t?e(t):n()},o,r)}):(g=t.toDataURL(o,r),new Hx(function(t,e){!function(){var t=g.split(","),e=/data:([^;]+)/.exec(t[0]);if(!e)return vt.none();for(var n=e[1],o=t[1],r=atob(o),i=r.length,u=Math.ceil(i/1024),a=new Array(u),c=0;c<u;++c){for(var s=1024*c,l=Math.min(1024+s,i),f=new Array(l-s),d=s,m=0;d<l;++m,++d)f[m]=r[d].charCodeAt(0);a[c]=new Uint8Array(f)}return vt.some(new Blob(a,{type:n}))}().fold(function(){e("uri is not base64: "+g)},t)}));var g}function xw(t,e,n){function o(e,n){return t.then(function(t){return t.toDataURL(e||"image/png",n)})}return{getType:rt(e.type),toBlob:function(){return Hx.resolve(e)},toDataURL:rt(n),toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return yw(t,e,n)})},toAdjustedDataURL:o,toAdjustedBase64:function(t,e){return o(t,e).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(hw)}}}function ww(e,t){return yw(e,t).then(function(t){return xw(Hx.resolve(e),t,e.toDataURL())})}function Sw(e){return n=e,new Hx(function(t){var e=new FileReader;e.onloadend=function(){t(e.result)},e.readAsDataURL(n)}).then(function(t){return xw((a=e,new Hx(function(t,e){function n(){r.removeEventListener("load",i),r.removeEventListener("error",u)}var o=URL.createObjectURL(a),r=new Image,i=function(){n(),t(r)},u=function(){n(),e("Unable to load data of type "+a.type+": "+o)};r.addEventListener("load",i),r.addEventListener("error",u),r.src=o,r.complete&&setTimeout(i,0)}).then(function(t){xk(t);var e=pw(vw(t),bw(t));return bk(e).drawImage(t,0,0),e})),e,t);var a});var n}function kw(t,e,n){var o="string"==typeof t?parseFloat(t):t;return n<o?o=n:o<e&&(o=e),o}function Cw(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function Ow(t,e){for(var n=[],o=new Array(25),r=0;r<5;r++){for(var i=0;i<5;i++)n[i]=e[i+5*r];for(i=0;i<5;i++){for(var u=0,a=0;a<5;a++)u+=t[i+5*a]*n[a];o[i+5*r]=u}}return o}function _w(e,n){return e.toCanvas().then(function(t){return Sk(t,e.getType(),n)})}function Tw(n){return function(t,e){return _w(t,n(Cw(),e))}}function Ew(t,e){void 0===e&&(e=2);var n=Math.pow(10,e),o=Math.round(t*n);return Math.ceil(o/n)}function Dw(t){return kk(t)}function Aw(t){return _k(t)}function Bw(t,e){return Tk(t,e)}function Mw(t,e){return Ck(t,e)}function Fw(t,e){return Ok(t,e)}function Iw(t,e){return o=e,(n=t).toCanvas().then(function(t){return Bk(t,n.getType(),o)});var n,o}function Rw(t,e){return o=e,(n=t).toCanvas().then(function(t){return Ak(t,n.getType(),o)});var n,o}function Nw(t,e,n){return sh(t,{tag:"span",classes:["tox-icon","tox-tbtn__icon-wrap"],behaviours:n},e)}function Pw(t,e){return Nw(t,e,[])}function Vw(t,e){return Nw(t,e,[Dg.config({})])}function Hw(t,e,n){return{dom:{tag:"span",innerHtml:n.translate(t),classes:[e+"__select-label"]},behaviours:ec([Dg.config({})])}}function Lw(e,n,o){function t(t,e){var n=Df.getValue(t);return Mg.focus(n),br(n,"keydown",{raw:e.event.raw}),pS.close(n),vt.some(!0)}var r=Po(st),i=e.text.map(function(t){return Lm(Hw(t,n,o.providers))}),u=e.icon.map(function(t){return Lm(Vw(t,o.providers.icons))}),a=e.role.fold(function(){return{}},function(t){return{role:t}}),c=e.tooltip.fold(function(){return{}},function(t){var e=o.providers.translate(t);return{title:e,"aria-label":e}}),s=sh("chevron-down",{tag:"div",classes:[n+"__select-chevron"]},o.providers.icons);return Lm(pS.sketch(lt(lt(lt({},e.uid?{uid:e.uid}:{}),a),{dom:{tag:"button",classes:[n,n+"--select"].concat(B(e.classes,function(t){return n+"--"+t})),attributes:lt({},c)},components:Zb([u.map(function(t){return t.asSpec()}),i.map(function(t){return t.asSpec()}),vt.some(s)]),matchWidth:!0,useMinWidth:!0,dropdownBehaviours:ec(V(V([],e.dropdownBehaviours,!0),[Jb(function(){return e.disabled||o.providers.isDisabled()}),gb(),hS.config({}),Dg.config({}),mm("dropdown-events",[hb(e,r),vb(e,r)]),mm("menubutton-update-display-text",[Cr(Rk,function(e,n){i.bind(function(t){return t.getOpt(e)}).each(function(t){Dg.set(t,[ri(o.providers.translate(n.event.text))])})}),Cr(Nk,function(e,n){u.bind(function(t){return t.getOpt(e)}).each(function(t){Dg.set(t,[Vw(n.event.icon,o.providers.icons)])})})])],!1)),eventOrder:Yo(Ik,{mousedown:["focusing","alloy.base.behaviour","item-type-events","normal-dropdown-events"]}),sandboxBehaviours:ec([Tg.config({mode:"special",onLeft:t,onRight:t})]),lazySink:o.getSink,toggleClass:n+"--active",parts:{menu:Qh(0,e.columns,e.presets)},fetch:function(t){return jx(C(e.fetch,t))}}))).asSpec()}function zw(t){return"separator"===t.type}function Uw(t,n,o,e){var r=Ir("primary-menu"),i=Vk(t,o.shared.providers.menuItems());if(0===i.items.length)return vt.none();var u=Wy(r,i.items,n,o,e),a=dt(i.menus,function(t,e){return Wy(e,t,n,o,!1)}),c=Yo(a,sr(r,u));return vt.from(Zg.tieredData(r,c,i.expansions))}function jw(n){return{isDisabled:function(){return gd.isDisabled(n)},setDisabled:function(t){return gd.set(n,t)},setActive:function(t){var e=n.element;t?(Yr(e,"tox-tbtn--enabled"),oe(e,"aria-pressed",!0)):(qr(e,"tox-tbtn--enabled"),ce(e,"aria-pressed"))},isActive:function(){return Kr(n.element,"tox-tbtn--enabled")}}}function Ww(n,t,o,e){return Lw({text:n.text,icon:n.icon,tooltip:n.tooltip,role:e,fetch:function(t,e){n.fetch(function(t){e(Uw(t,wv.CLOSE_ON_EXECUTE,o,!1))})},onSetup:n.onSetup,getApi:jw,columns:1,presets:"normal",classes:[],dropdownBehaviours:[gx.config({})]},t,o.shared)}function Gw(t,e,n,o,r,i){void 0===n&&(n=[]);var u=e.fold(function(){return{}},function(t){return{action:t}}),a=lt({buttonBehaviours:ec([Jb(function(){return t.disabled||i.isDisabled()}),gb(),gx.config({}),mm("button press",[kr("click"),kr("mousedown")])].concat(n)),eventOrder:{click:["button press","alloy.base.behaviour"],mousedown:["button press","alloy.base.behaviour"]}},u),c=Yo(a,{dom:o});return Yo(c,{components:r})}function Xw(t,e,n,o){void 0===o&&(o=[]);var r={tag:"button",classes:["tox-tbtn"],attributes:t.tooltip.map(function(t){return{"aria-label":n.translate(t),title:n.translate(t)}}).getOr({})},i=t.icon.map(function(t){return Pw(t,n.icons)});return Gw(t,e,o,r,Zb([i]),n)}function Yw(t,e,n,o){void 0===o&&(o=[]);var r=Xw(t,vt.some(e),n,o);return ip.sketch(r)}function qw(t,e,n,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=n.translate(t.text),u=t.icon?t.icon.map(function(t){return Pw(t,n.icons)}):vt.none(),a=u.isSome()?Zb([u]):[],c=u.isSome()?{}:{innerHtml:i},s=V(V(V(V([],t.primary||t.borderless?["tox-button"]:["tox-button","tox-button--secondary"],!0),u.isSome()?["tox-button--icon"]:[],!0),t.borderless?["tox-button--naked"]:[],!0),r,!0);return Gw(t,e,o,lt(lt({tag:"button",classes:s},c),{attributes:{title:i}}),a,n)}function Kw(t,e,n,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=qw(t,vt.some(e),n,o,r);return ip.sketch(i)}function Jw(e,n){return function(t){"custom"===n?br(t,wx,{name:e,value:{}}):"submit"===n?vr(t,Sx):"cancel"===n?vr(t,xx):console.error("Unknown button type: ",n)}}function $w(e,t,n){if("menu"===t){var o=e,r=Lm(Ww(lt(lt({},e),{onSetup:function(t){return t.setDisabled(e.disabled),st},fetch:(i=o.items,u=function(){return r},a=n,function(t){t(B(i,function(t){var e,n,o=t.text.fold(function(){return{}},function(t){return{text:t}});return lt(lt({type:t.type,active:!1},o),{onAction:function(t){var e=!t.isActive();t.setActive(e),n.storage.set(e),a.shared.getSink().each(function(t){u().getOpt(t).each(function(t){ka(t.element),br(t,wx,{name:n.name,value:n.storage.get()})})})},onSetup:(e=n=t,function(t){t.setActive(e.storage.get())})})}))})}),"tox-tbtn",n,vt.none()));return r.asSpec()}var i,u,a;if("custom"===t||"cancel"===t||"submit"===t){var c=Jw(e.name,t);return Kw(lt(lt({},e),{borderless:!1}),c,n.shared.providers,[])}console.error("Unknown footer button type: ",t)}function Qw(t,e){return Jf({factory:dx,name:t,overrides:function(o){return{fieldBehaviours:ec([mm("coupled-input-behaviour",[Cr(Si(),function(n){ml(n,o,e).bind(cd.getCurrent).each(function(e){ml(n,o,"lock").each(function(t){Rg.isOn(t)&&o.onLockedChange(n,e,t)})})})])])}}})}function Zw(t){var e=/^\s*(\d+(?:\.\d+)?)\s*(|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)\s*$/.exec(t);if(null===e)return Nn.error(t);var n=parseFloat(e[1]),o=e[2];return Nn.value({value:n,unit:o})}function tS(t,e){function n(t){return Tt(o,t)}var o={"":96,px:96,pt:72,cm:2.54,pc:12,mm:25.4,in:1};return t.unit===e?vt.some(t.value):n(t.unit)&&n(e)?o[t.unit]===o[e]?vt.some(t.value):vt.some(t.value/o[t.unit]*o[e]):vt.none()}function eS(t){return vt.none()}function nS(o,e){function t(t){return sh(t,{tag:"span",classes:["tox-icon","tox-lock-icon__"+t]},e.icons)}function n(t){return{dom:{tag:"div",classes:["tox-form__group"]},components:t}}function r(n){return dx.parts.field({factory:Ex,inputClasses:["tox-textfield"],inputBehaviours:ec([gd.config({disabled:function(){return o.disabled||e.isDisabled()}}),gb(),gx.config({}),mm("size-input-events",[Cr(bi(),function(t,e){br(t,u,{isField1:n})}),Cr(ki(),function(t,e){br(t,bx,{name:o.name})})])]),selectOnFocus:!1})}function i(t){return{dom:{tag:"label",classes:["tox-label"],innerHtml:e.translate(t)}}}var l=eS,u=Ir("ratio-event"),a=zk.parts.lock({dom:{tag:"button",classes:["tox-lock","tox-button","tox-button--naked","tox-button--icon"],attributes:{title:e.translate(o.label.getOr("Constrain proportions"))}},components:[t("lock"),t("unlock")],buttonBehaviours:ec([gd.config({disabled:function(){return o.disabled||e.isDisabled()}}),gb(),gx.config({})])}),c=zk.parts.field1(n([dx.parts.label(i("Width")),r(!0)])),s=zk.parts.field2(n([dx.parts.label(i("Height")),r(!1)]));return zk.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:[{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:[c,s,n([i("&nbsp;"),a])]}],field1Name:"width",field2Name:"height",locked:!0,markers:{lockClass:"tox-locked"},onLockedChange:function(t,i,e){Zw(Df.getValue(t)).each(function(t){l(t).each(function(t){var e,n,o,r;Df.setValue(i,(r=-1!==(r=(e=t).value.toFixed((n=e.unit)in(o={"":0,px:0,pt:1,mm:1,pc:2,ex:2,em:2,ch:2,rem:2,cm:3,in:4,"%":4})?o[n]:1)).indexOf(".")?r.replace(/\.?0*$/,""):r)+e.unit)})})},coupledFieldBehaviours:ec([gd.config({disabled:function(){return o.disabled||e.isDisabled()},onDisabled:function(t){zk.getField1(t).bind(dx.getField).each(gd.disable),zk.getField2(t).bind(dx.getField).each(gd.disable),zk.getLock(t).each(gd.disable)},onEnabled:function(t){zk.getField1(t).bind(dx.getField).each(gd.enable),zk.getField2(t).bind(dx.getField).each(gd.enable),zk.getLock(t).each(gd.enable)}}),gb(),mm("size-input-events2",[Cr(u,function(t,e){var n,o,r,i=e.event.isField1,u=i?zk.getField1(t):zk.getField2(t),a=i?zk.getField2(t):zk.getField1(t),c=u.map(Df.getValue).getOr(""),s=a.map(Df.getValue).getOr("");n=s,o=Zw(c).toOptional(),r=Zw(n).toOptional(),l=Et(o,r,function(t,o){return tS(t,o.unit).map(function(t){return o.value/t}).map(function(t){return e=t,n=o.unit,function(t){return tS(t,n).map(function(t){return{value:t*e,unit:n}})};var e,n}).getOr(eS)}).getOr(eS)})])])})}function oS(f,c){function t(t,e,n,o){return Lm(Kw({name:t,text:t,disabled:n,primary:o,icon:vt.none(),borderless:!1},e,c))}function e(t,e,n,o){return Lm(Yw({name:t,icon:vt.some(t),tooltip:vt.some(e),disabled:o,primary:!1,borderless:!1},n,c))}function d(t,n){t.map(function(t){var e=t.get(n);e.hasConfigured(gd)&&gd.disable(e)})}function m(t,n){t.map(function(t){var e=t.get(n);e.hasConfigured(gd)&&gd.enable(e)})}function r(t,e,n){br(t,e,n)}function i(t){return vr(t,Xk.disable()),0}function u(t){return vr(t,Xk.enable()),0}function g(t,e){i(t),r(t,Uk.transform(),{transform:e}),u(t)}function n(t){return function(){q.getOpt(t).each(function(t){Dg.set(t,[Y])})}}function s(t,e){i(t),r(t,Uk.transformApply(),{transform:e,swap:n(t)}),u(t)}function p(){return t("Back",function(t){return r(t,Uk.back(),{swap:n(t)})},!1,!1)}function o(){return Lm({dom:{tag:"div",classes:["tox-spacer"]},behaviours:ec([gd.config({})])})}function h(){return t("Apply",function(t){return r(t,Uk.apply(),{swap:n(t)})},!0,!0)}function v(e,n){return function(t){return e(t,n)}}function a(t,e){var n,o=e;i(n=t),r(n,Uk.tempTransform(),{transform:o}),u(n)}function b(t,e,n,o,r){var i=JS.parts.label({dom:{tag:"label",classes:["tox-label"],innerHtml:c.translate(t)}}),u=JS.parts.spectrum({dom:{tag:"div",classes:["tox-slider__rail"],attributes:{role:"presentation"}}}),a=JS.parts.thumb({dom:{tag:"div",classes:["tox-slider__handle"],attributes:{role:"presentation"}}});return Lm(JS.sketch({dom:{tag:"div",classes:["tox-slider"],attributes:{role:"presentation"}},model:{mode:"x",minX:n,maxX:r,getInitialValue:rt({x:o})},components:[i,u,a],sliderBehaviours:ec([Mg.config({})]),onChoose:e}))}function l(t,e,n,o,r){var i,u,a,c,s,l,f=(i=t,u=e,a=n,c=o,s=r,[p(),(l=u,b(i,function(t,e,n){g(t,v(l,n.x/100))},a,c,s)),h()]);return sx.sketch({dom:w,components:f.map(function(t){return t.asSpec()}),containerBehaviours:ec([mm("image-tools-filter-panel-buttons-events",[Cr(Xk.disable(),function(t,e){d(f,t)}),Cr(Xk.enable(),function(t,e){m(f,t)})])])})}function y(t){return b(t,function(l,t,e){var n=H.getOpt(l),o=z.getOpt(l),r=L.getOpt(l);n.each(function(s){o.each(function(c){r.each(function(t){var o,r,i,e=Df.getValue(s).x/100,n=Df.getValue(t).x/100,u=Df.getValue(c).x/100,a=(o=e,r=n,i=u,function(t){return _w(t,(e=r,n=i,Ow(Cw(),[kw(o,0,2),0,0,0,0,0,kw(e,0,2),0,0,0,0,0,kw(n,0,2),0,0,0,0,0,1,0,0,0,0,0,1])));var e,n});g(l,a)})})})},0,100,200)}function x(e,n,o){return function(t){r(t,Uk.swap(),{transform:n,swap:function(){q.getOpt(t).each(function(t){Dg.set(t,[e]),o(t)})}})}}var w={tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools-edit-panel"]},S=st,k=[p(),o(),t("Apply",function(t){s(t,function(t){var e,n,o,r,i,u,a,c,s,l=f.getRect();return e=l.x,n=l.y,o=l.w,r=l.h,u=e,a=n,c=o,s=r,(i=t).toCanvas().then(function(t){return Mk(t,i.getType(),u,a,c,s)})}),f.hideCrop()},!1,!0)],C=sx.sketch({dom:w,components:k.map(function(t){return t.asSpec()}),containerBehaviours:ec([mm("image-tools-crop-buttons-events",[Cr(Xk.disable(),function(t,e){d(k,t)}),Cr(Xk.enable(),function(t,e){m(k,t)})])])}),O=Lm(nS({name:"size",label:vt.none(),constrain:!0,disabled:!1},c)),_=[p(),o(),O,o(),t("Apply",function(a){O.getOpt(a).each(function(t){var r,i,e=Df.getValue(t),n=parseInt(e.width,10),o=parseInt(e.height,10),u=(r=n,i=o,function(t){return n=r,o=i,(e=t).toCanvas().then(function(t){return Ek(t,n,o).then(function(t){return ww(t,e.getType())})});var e,n,o});s(a,u)})},!1,!0)],T=sx.sketch({dom:w,components:_.map(function(t){return t.asSpec()}),containerBehaviours:ec([mm("image-tools-resize-buttons-events",[Cr(Xk.disable(),function(t,e){d(_,t)}),Cr(Xk.enable(),function(t,e){m(_,t)})])])}),E=v(Iw,"h"),D=v(Iw,"v"),A=v(Rw,-90),B=v(Rw,90),M=[p(),o(),e("flip-horizontally","Flip horizontally",function(t){a(t,E)},!1),e("flip-vertically","Flip vertically",function(t){a(t,D)},!1),e("rotate-left","Rotate counterclockwise",function(t){a(t,A)},!1),e("rotate-right","Rotate clockwise",function(t){a(t,B)},!1),o(),h()],F=sx.sketch({dom:w,components:M.map(function(t){return t.asSpec()}),containerBehaviours:ec([mm("image-tools-fliprotate-buttons-events",[Cr(Xk.disable(),function(t,e){d(M,t)}),Cr(Xk.enable(),function(t,e){m(M,t)})])])}),I=[p(),o(),h()],R=sx.sketch({dom:w,components:I.map(function(t){return t.asSpec()})}),N=l("Brightness",Mw,-100,0,100),P=l("Contrast",Fw,-100,0,100),V=l("Gamma",Bw,-100,0,100),H=y("R"),L=y("G"),z=y("B"),U=[p(),H,L,z,h()],j=sx.sketch({dom:w,components:U.map(function(t){return t.asSpec()})}),W=vt.some(Aw),G=vt.some(Dw),X=[e("crop","Crop",x(C,vt.none(),function(t){f.showCrop()}),!1),e("resize","Resize",x(T,vt.none(),function(t){O.getOpt(t).each(function(t){var e=f.getMeasurements(),n=e.width,o=e.height;Df.setValue(t,{width:n,height:o})})}),!1),e("orientation","Orientation",x(F,vt.none(),S),!1),e("brightness","Brightness",x(N,vt.none(),S),!1),e("sharpen","Sharpen",x(R,W,S),!1),e("contrast","Contrast",x(P,vt.none(),S),!1),e("color-levels","Color levels",x(j,vt.none(),S),!1),e("gamma","Gamma",x(V,vt.none(),S),!1),e("invert","Invert",x(R,G,S),!1)],Y=sx.sketch({dom:w,components:X.map(function(t){return t.asSpec()})}),q=Lm(sx.sketch({dom:{tag:"div"},components:[Y],containerBehaviours:ec([Dg.config({})])}));return{memContainer:q,getApplyButton:function(t){return q.getOpt(t).map(function(t){var e=t.components()[0];return e.components()[e.components().length-1]})}}}function rS(t){if(k(t.changedTouches))for(var e="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<e.length;n++)t[e[n]]=t.changedTouches[0][e[n]]}(Vx=Px=Px||{})[Vx.HighlightFirst=0]="HighlightFirst",Vx[Vx.HighlightNone=1]="HighlightNone";function iS(o,t){return{uid:o.uid,dom:o.dom,components:t,behaviours:el(o.formBehaviours,[Df.config({store:{mode:"manual",getValue:function(t){return dt(hl(t,o),function(t,o){return t().bind(function(t){var e=cd.getCurrent(t),n=new Error("Cannot find a current component to extract the value from for form part '"+o+"': "+Fr(t.element));return e.fold(function(){return Nn.error(n)},Nn.value)}).map(Df.getValue)})},setValue:function(n,t){J(t,function(e,t){ml(n,o,t).each(function(t){cd.getCurrent(t).each(function(t){Df.setValue(t,e)})})})}}})]),apis:{getField:function(t,e){return ml(t,o,e).bind(cd.getCurrent)}}}}function uS(){return cd.config({find:vt.some})}function aS(t){return e=Br,n=Mr,cw(t,function(t){return e(t.element)},function(t,e){return n(t.element,e)});var e,n}var cS,sS,lS,fS,dS=function(e,t){return e.getSystem().getByUid(t.uid+"-"+$x()).map(function(t){return function(){return Nn.value(t)}}).getOrThunk(function(){return t.lazySink.fold(function(){return function(){return Nn.error(new Error("No internal sink is specified, nor could an external sink be found"))}},function(t){return function(){return t(e)}})})},mS=rt([mo("dom"),mo("fetch"),Ju("onOpen"),$u("onExecute"),Eo("getHotspot",vt.some),Eo("getAnchorOverrides",rt({})),Uc(),Zs("dropdownBehaviours",[Rg,Jx,Tg,Mg]),mo("toggleClass"),Eo("eventOrder",{}),wo("lazySink"),Eo("matchWidth",!1),Eo("useMinWidth",!1),wo("role")].concat(i0())),gS=rt([$f({schema:[Yu()],name:"menu",defaults:function(t){return{onExecute:t.onExecute}}}),Qx()]),pS=Cl({name:"Dropdown",configFields:mS(),partFields:gS(),factory:function(e,t,n,o){function r(t){bf.getState(t).each(function(t){Zg.highlightPrimary(t)})}function i(t,e){return yr(t),vt.some(!0)}var u,a={expand:function(t){Rg.isOn(t)||e0(e,h,t,o,st,Px.HighlightNone).get(st)},open:function(t){Rg.isOn(t)||e0(e,h,t,o,st,Px.HighlightFirst).get(st)},isOpen:Rg.isOn,close:function(t){Rg.isOn(t)&&e0(e,h,t,o,st,Px.HighlightFirst).get(st)},repositionMenus:function(t){Rg.isOn(t)&&r0(t)}};return{uid:e.uid,dom:e.dom,components:t,behaviours:el(e.dropdownBehaviours,[Rg.config({toggleClass:e.toggleClass,aria:{mode:"expanded"}}),Jx.config({others:{sandbox:function(t){return o0(e,t,{onOpen:function(){return Rg.on(t)},onClose:function(){return Rg.off(t)}})}}}),Tg.config({mode:"special",onSpace:i,onEnter:i,onDown:function(t,e){return pS.isOpen(t)?r(Jx.getCoupled(t,"sandbox")):pS.open(t),vt.some(!0)},onEscape:function(t,e){return pS.isOpen(t)?(pS.close(t),vt.some(!0)):vt.none()}}),Mg.config({})]),events:Sm(vt.some(function(t){e0(e,h,t,o,r,Px.HighlightFirst).get(st)})),eventOrder:lt(lt({},e.eventOrder),((u={})[Ii()]=["disabling","toggling","alloy.base.behaviour"],u)),apis:a,domModification:{attributes:lt(lt({"aria-haspopup":"true"},e.role.fold(function(){return{}},function(t){return{role:t}})),"button"===e.dom.tag?{type:tt(e.dom,"attributes").bind(function(t){return tt(t,"type")}).getOr("button")}:{})}}},apis:{open:function(t,e){return t.open(e)},expand:function(t,e){return t.expand(e)},close:function(t,e){return t.close(e)},isOpen:function(t,e){return t.isOpen(e)},repositionMenus:function(t,e){return t.repositionMenus(e)}}}),hS=xa({fields:[],name:"unselecting",active:Object.freeze({__proto__:null,events:function(){return nu([Sr(Ei(),D)])},exhibit:function(){return zr({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),vS=Ir("color-input-change"),bS=Ir("color-swatch-change"),yS=Ir("color-picker-cancel"),xS=Qf({schema:[mo("dom")],name:"label"}),wS=u0("top-left"),SS=u0("top"),kS=u0("top-right"),CS=u0("right"),OS=u0("bottom-right"),_S=u0("bottom"),TS=u0("bottom-left"),ES=[xS,u0("left"),CS,SS,_S,wS,kS,TS,OS,Jf({name:"thumb",defaults:rt({dom:{styles:{position:"absolute"}}}),overrides:function(t){return{events:nu([Tr(si(),t,"spectrum"),Tr(li(),t,"spectrum"),Tr(fi(),t,"spectrum"),Tr(mi(),t,"spectrum"),Tr(gi(),t,"spectrum"),Tr(hi(),t,"spectrum")])}}}),Jf({schema:[cr("mouseIsDown",function(){return Po(!1)})],name:"spectrum",overrides:function(n){function o(e,t){return r.getValueFromEvent(t).map(function(t){return r.setValueFrom(e,n,t)})}var r=n.model.manager;return{behaviours:ec([Tg.config({mode:"special",onLeft:function(t){return r.onLeft(t,n)},onRight:function(t){return r.onRight(t,n)},onUp:function(t){return r.onUp(t,n)},onDown:function(t){return r.onDown(t,n)}}),Mg.config({})]),events:nu([Cr(si(),o),Cr(li(),o),Cr(mi(),o),Cr(gi(),function(t,e){n.mouseIsDown.get()&&o(t,e)})])}}})],DS=rt("slider.change.value"),AS="left",BS=K0(-1),MS=K0(1),FS=vt.none,IS=vt.none,RS={"top-left":vt.none(),top:vt.none(),"top-right":vt.none(),right:vt.some(function(t,e){M0(t,{x:g0(e)})}),"bottom-right":vt.none(),bottom:vt.none(),"bottom-left":vt.none(),left:vt.some(function(t,e){M0(t,{x:l0(e)})})},NS=Object.freeze({__proto__:null,setValueFrom:function(t,e,n){var o=q0(t,e,n);return Y0(t,{x:o}),o},setToMin:function(t,e){Y0(t,{x:c0(e)})},setToMax:function(t,e){Y0(t,{x:d0(e)})},findValueOfOffset:q0,getValueFromEvent:function(t){return a0(t).map(function(t){return t.left})},findPositionOfValue:J0,setPositionFromValue:function(t,e,n,o){var r=A0(n),i=J0(t,o.getSpectrum(t),r.x,o.getLeftEdge(t),o.getRightEdge(t),n),u=Ce(e.element)/2;fe(e.element,"left",i-u+"px")},onLeft:BS,onRight:MS,onUp:FS,onDown:IS,edgeActions:RS}),PS=vt.none,VS=vt.none,HS=Z0(-1),LS=Z0(1),zS={"top-left":vt.none(),top:vt.some(function(t,e){M0(t,{y:f0(e)})}),"top-right":vt.none(),right:vt.none(),"bottom-right":vt.none(),bottom:vt.some(function(t,e){M0(t,{y:p0(e)})}),"bottom-left":vt.none(),left:vt.none()},US=Object.freeze({__proto__:null,setValueFrom:function(t,e,n){var o=Q0(t,e,n);return $0(t,{y:o}),o},setToMin:function(t,e){$0(t,{y:s0(e)})},setToMax:function(t,e){$0(t,{y:m0(e)})},findValueOfOffset:Q0,getValueFromEvent:function(t){return a0(t).map(function(t){return t.top})},findPositionOfValue:tw,setPositionFromValue:function(t,e,n,o){var r=A0(n),i=tw(t,o.getSpectrum(t),r.y,o.getTopEdge(t),o.getBottomEdge(t),n),u=xe(e.element)/2;fe(e.element,"top",i-u+"px")},onLeft:PS,onRight:VS,onUp:HS,onDown:LS,edgeActions:zS}),jS=a0,WS=ow(-1,!1),GS=ow(1,!1),XS=ow(-1,!0),YS=ow(1,!0),qS={"top-left":vt.some(function(t,e){M0(t,B0(l0(e),f0(e)))}),top:vt.some(function(t,e){M0(t,B0(y0(e),f0(e)))}),"top-right":vt.some(function(t,e){M0(t,B0(g0(e),f0(e)))}),right:vt.some(function(t,e){M0(t,B0(g0(e),x0(e)))}),"bottom-right":vt.some(function(t,e){M0(t,B0(g0(e),p0(e)))}),bottom:vt.some(function(t,e){M0(t,B0(y0(e),p0(e)))}),"bottom-left":vt.some(function(t,e){M0(t,B0(l0(e),p0(e)))}),left:vt.some(function(t,e){M0(t,B0(l0(e),x0(e)))})},KS=Object.freeze({__proto__:null,setValueFrom:function(t,e,n){var o=nw(q0(t,e,n.left),Q0(t,e,n.top));return ew(t,o),o},setToMin:function(t,e){ew(t,nw(c0(e),s0(e)))},setToMax:function(t,e){ew(t,nw(d0(e),m0(e)))},getValueFromEvent:jS,setPositionFromValue:function(t,e,n,o){var r=A0(n),i=J0(t,o.getSpectrum(t),r.x,o.getLeftEdge(t),o.getRightEdge(t),n),u=tw(t,o.getSpectrum(t),r.y,o.getTopEdge(t),o.getBottomEdge(t),n),a=Ce(e.element)/2,c=xe(e.element)/2;fe(e.element,"left",i-a+"px"),fe(e.element,"top",u-c+"px")},onLeft:WS,onRight:GS,onUp:XS,onDown:YS,edgeActions:qS}),JS=Cl({name:"Slider",configFields:[Eo("stepSize",1),Eo("onChange",st),Eo("onChoose",st),Eo("onInit",st),Eo("onDragStart",st),Eo("onDragEnd",st),Eo("snapToGrid",!1),Eo("rounded",!0),wo("snapStart"),go("model",lo("mode",{x:[Eo("minX",0),Eo("maxX",100),cr("value",function(t){return Po(t.mode.minX)}),mo("getInitialValue"),ta("manager",NS)],y:[Eo("minY",0),Eo("maxY",100),cr("value",function(t){return Po(t.mode.minY)}),mo("getInitialValue"),ta("manager",US)],xy:[Eo("minX",0),Eo("maxX",100),Eo("minY",0),Eo("maxY",100),cr("value",function(t){return Po({x:t.mode.minX,y:t.mode.minY})}),mo("getInitialValue"),ta("manager",KS)]})),Zs("sliderBehaviours",[Tg,Df]),cr("mouseIsDown",function(){return Po(!1)})],partFields:ES,factory:function(i,t,e,n){function u(t){return gl(t,i,"thumb")}function a(t){return gl(t,i,"spectrum")}function o(t){return ml(t,i,"left-edge")}function r(t){return ml(t,i,"right-edge")}function c(t){return ml(t,i,"top-edge")}function s(t){return ml(t,i,"bottom-edge")}function l(t,e){v.setPositionFromValue(t,e,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:c,getBottomEdge:s,getSpectrum:a})}function f(t,e){h.value.set(e),l(t,u(t))}function d(n){var t=i.mouseIsDown.get();i.mouseIsDown.set(!1),t&&ml(n,i,"thumb").each(function(t){var e=h.value.get();i.onChoose(n,t,e)})}function m(t,e){e.stop(),i.mouseIsDown.set(!0),i.onDragStart(t,u(t))}function g(t,e){e.stop(),i.onDragEnd(t,u(t)),d(t)}var p,h=i.model,v=h.manager;return{uid:i.uid,dom:i.dom,components:t,behaviours:el(i.sliderBehaviours,[Tg.config({mode:"special",focusIn:function(t){return ml(t,i,"spectrum").map(Tg.focusIn).map(D)}}),Df.config({store:{mode:"manual",getValue:function(t){return h.value.get()}}}),ic.config({channels:((p={})[wf()]={onReceive:d},p)})]),events:nu([Cr(DS(),function(t,e){!function(t,e){f(t,e);var n=u(t);i.onChange(t,n,e),vt.some(!0)}(t,e.event.value)}),ou(function(t,e){var n=h.getInitialValue();h.value.set(n);var o=u(t);l(t,o);var r=a(t);i.onInit(t,o,r,h.value.get())}),Cr(si(),m),Cr(fi(),g),Cr(mi(),m),Cr(hi(),g)]),apis:{resetToMin:function(t){v.setToMin(t,i)},resetToMax:function(t){v.setToMax(t,i)},setValue:f,refresh:l},domModification:{styles:{position:"relative"}}}},apis:{setValue:function(t,e,n){t.setValue(e,n)},resetToMin:function(t,e){t.resetToMin(e)},resetToMax:function(t,e){t.resetToMax(e)},refresh:function(t,e){t.refresh(e)}}}),$S=Ir("rgb-hex-update"),QS=Ir("slider-update"),ZS=Ir("palette-update"),tk=[Zs("formBehaviours",[Df])],ek={getField:Hr(function(t,e,n){return t.getField(e,n)}),sketch:function(t){var n,e={field:function(t,e){return n.push(t),cl("form",rw(t),e)},record:rt(n=[])},o=t(e),r=B(e.record(),function(t){return Jf({name:t,pname:rw(t)})});return Sl("form",tk,r,iS,o)}},nk=Ir("valid-input"),ok=Ir("invalid-input"),rk=Ir("validating-input"),ik="colorcustom.rgb.",uk=function(t){return cd.config({find:t.getOpt})},ak=function(t){return cd.config({find:function(e){return Jt(e.element,t).bind(function(t){return e.getSystem().getByDom(t).toOptional()})}})},ck={"colorcustom.rgb.red.label":"R","colorcustom.rgb.red.description":"Red component","colorcustom.rgb.green.label":"G","colorcustom.rgb.green.description":"Green component","colorcustom.rgb.blue.label":"B","colorcustom.rgb.blue.description":"Blue component","colorcustom.rgb.hex.label":"#","colorcustom.rgb.hex.description":"Hex color code","colorcustom.rgb.range":"Range 0 to 255","colorcustom.sb.saturation":"Saturation","colorcustom.sb.brightness":"Brightness","colorcustom.sb.picker":"Saturation and Brightness Picker","colorcustom.sb.palette":"Saturation and Brightness Palette","colorcustom.sb.instructions":"Use arrow keys to select saturation and brightness, on x and y axes","colorcustom.hue.hue":"Hue","colorcustom.hue.slider":"Hue Slider","colorcustom.hue.palette":"Hue Palette","colorcustom.hue.instructions":"Use arrow keys to select a hue","aria.color.picker":"Color Picker","aria.input.invalid":"Invalid input"},sk=tinymce.util.Tools.resolve("tinymce.Resource"),lk=tinymce.util.Tools.resolve("tinymce.util.Tools"),fk=$o([Eo("preprocess",h),Eo("postprocess",h)]),dk=function(r,t){var i=so("RepresentingConfigs.memento processors",fk,t);return Df.config({store:{mode:"manual",getValue:function(t){var e=r.get(t),n=Df.getValue(e);return i.postprocess(n)},setValue:function(t,e){var n=i.preprocess(e),o=r.get(t);Df.setValue(o,n)}}})},mk=cw,gk=function(t){return Df.config({store:{mode:"memory",initialValue:t}})},pk=Ir("alloy-fake-before-tabstop"),hk=Ir("alloy-fake-after-tabstop"),vk=!(ln().browser.isIE()||ln().browser.isEdge()),bk=function(t){return t.getContext("2d")},yk=function(t,e,n){return t.width=e,t.height=n,t},xk=function(t){URL.revokeObjectURL(t.src)},wk=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10],Sk=function(t,e,T){var n=bk(t),o=function(t){for(var e,n,o,r,i=t.data,u=T[0],a=T[1],c=T[2],s=T[3],l=T[4],f=T[5],d=T[6],m=T[7],g=T[8],p=T[9],h=T[10],v=T[11],b=T[12],y=T[13],x=T[14],w=T[15],S=T[16],k=T[17],C=T[18],O=T[19],_=0;_<i.length;_+=4)e=i[_],n=i[_+1],o=i[_+2],r=i[_+3],i[_]=e*u+n*a+o*c+r*s+l,i[_+1]=e*f+n*d+o*m+r*g+p,i[_+2]=e*h+n*v+o*b+r*y+x,i[_+3]=e*w+n*S+o*k+r*C+O;return t}(n.getImageData(0,0,t.width,t.height));return n.putImageData(o,0,0),ww(t,e)},kk=(cS=[-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0,0,0,0,0,1],function(t){return _w(t,cS)}),Ck=Tw(function(t,e){return Ow(t,[1,0,0,0,e=kw(255*e,-255,255),0,1,0,0,e,0,0,1,0,e,0,0,0,1,0,0,0,0,0,1])}),Ok=Tw(function(t,e){var n;return e=kw(e,-1,1),Ow(t,[(n=(e*=100)<0?127+e/100*127:127*(0==(n=e%1)?wk[e]:wk[Math.floor(e)]*(1-n)+wk[Math.floor(e)+1]*n)+127)/127,0,0,0,.5*(127-n),0,n/127,0,0,.5*(127-n),0,0,n/127,0,.5*(127-n),0,0,0,1,0,0,0,0,0,1])}),_k=(sS=[0,-1,0,-1,5,-1,0,-1,0],function(t){return a=sS,(u=t).toCanvas().then(function(t){return e=t,n=u.getType(),o=a,r=bk(e),i=function(t,e,n){for(var o=function(t,e,n){return n<t?t=n:t<e&&(t=e),t},r=Math.round(Math.sqrt(n.length)),i=Math.floor(r/2),u=t.data,a=e.data,c=t.width,s=t.height,l=0;l<s;l++)for(var f=0;f<c;f++){for(var d=0,m=0,g=0,p=0;p<r;p++)for(var h=0;h<r;h++){var v=o(f+h-i,0,c-1),b=4*(o(l+p-i,0,s-1)*c+v),y=n[p*r+h];d+=u[b]*y,m+=u[1+b]*y,g+=u[2+b]*y}var x=4*(l*c+f);a[x]=o(d,0,255),a[1+x]=o(m,0,255),a[2+x]=o(g,0,255)}return e}(r.getImageData(0,0,e.width,e.height),r.getImageData(0,0,e.width,e.height),o),r.putImageData(i,0,0),ww(e,n);var e,n,o,r,i});var u,a}),Tk=(lS=function(t,e){return 255*Math.pow(t/255,1-e)},function(e,n){return e.toCanvas().then(function(t){return function(t,e,n){for(var o=bk(t),r=new Array(256),i=0;i<r.length;i++)r[i]=lS(i,n);var u=function(t,e){for(var n=t.data,o=0;o<n.length;o+=4)n[o]=e[n[o]],n[o+1]=e[n[o+1]],n[o+2]=e[n[o+2]];return t}(o.getImageData(0,0,t.width,t.height),r);return o.putImageData(u,0,0),ww(t,e)}(t,e.getType(),n)})}),Ek=function(t,e,n){var o=vw(t),r=bw(t),i=e/o,u=n/r,a=!1;(i<.5||2<i)&&(i=i<.5?.5:2,a=!0),(u<.5||2<u)&&(u=u<.5?.5:2,a=!0);var c=Dk(t,i,u);return a?c.then(function(t){return Ek(t,e,n)}):c},Dk=function(u,a,c){return new Hx(function(t){var e=vw(u),n=bw(u),o=Math.floor(e*a),r=Math.floor(n*c),i=pw(o,r);bk(i).drawImage(u,0,0,e,n,0,0,o,r),t(i)})},Ak=function(t,e,n){var o=(n<0?360+n:n)*Math.PI/180,r=t.width,i=t.height,u=Math.sin(o),a=Math.cos(o),c=Ew(Math.abs(r*a)+Math.abs(i*u)),s=Ew(Math.abs(r*u)+Math.abs(i*a)),l=pw(c,s),f=bk(l);return f.translate(c/2,s/2),f.rotate(o),f.drawImage(t,-r/2,-i/2),ww(l,e)},Bk=function(t,e,n){var o=pw(t.width,t.height),r=bk(o);return"v"===n?(r.scale(1,-1),r.drawImage(t,0,-o.height)):(r.scale(-1,1),r.drawImage(t,-o.width,0)),ww(o,e)},Mk=function(t,e,n,o,r,i){var u=pw(r,i);return bk(u).drawImage(t,-n,-o),ww(u,e)},Fk=Ir("toolbar.button.execute"),Ik=((fS={})[Ii()]=["disabling","alloy.base.behaviour","toggling","toolbar-button-events"],fS),Rk=Ir("update-menu-text"),Nk=Ir("update-menu-icon"),Pk={type:"separator"},Vk=function(t,l){var e,n,o;return I((e=y(t)?t.split(" "):t,n=l,0<(o=R(e,function(t,e){return y(e)?""===e?t:"|"===e?0<t.length&&!zw(t[t.length-1])?t.concat([Pk]):t:Tt(n,e.toLowerCase())?t.concat([n[e.toLowerCase()]]):t:t.concat([e])},[])).length&&zw(o[o.length-1])&&o.pop(),o),function(t,e){var n,o,r,i,u,a,c=function(t){if(zw(t))return t;var e=tt(t,"value").getOrThunk(function(){return Ir("generated-menu-item")});return Yo({value:e},t)}(e),s=(o=l,Tt(n=c,"getSubmenuItems")?(i=o,u=(r=n).getSubmenuItems(),a=Vk(u,i),{item:r,menus:Yo(a.menus,sr(r.value,a.items)),expansions:Yo(a.expansions,sr(r.value,r.value))}):{item:n,menus:{},expansions:{}});return{menus:Yo(t.menus,s.menus),items:[s.item].concat(t.items),expansions:Yo(t.expansions,s.expansions)}},{menus:{},expansions:{},items:[]})},Hk=rt([Eo("field1Name","field1"),Eo("field2Name","field2"),Qu("onLockedChange"),qu(["lockClass"]),Eo("locked",!1),Af("coupledFieldBehaviours",[cd,Df])]),Lk=rt([Qw("field1","field2"),Qw("field2","field1"),Jf({factory:ip,schema:[mo("dom")],name:"lock",overrides:function(t){return{buttonBehaviours:ec([Rg.config({selected:t.locked,toggleClass:t.markers.lockClass,aria:{mode:"pressed"}})])}}})]),zk=Cl({name:"FormCoupledInputs",configFields:Hk(),partFields:Lk(),factory:function(o,t,e,n){return{uid:o.uid,dom:o.dom,components:t,behaviours:Bf(o.coupledFieldBehaviours,[cd.config({find:vt.some}),Df.config({store:{mode:"manual",getValue:function(t){var e=bl(t,o,["field1","field2"]),n={};return n[o.field1Name]=Df.getValue(e.field1()),n[o.field2Name]=Df.getValue(e.field2()),n},setValue:function(t,e){var n=bl(t,o,["field1","field2"]);et(e,o.field1Name)&&Df.setValue(n.field1(),e[o.field1Name]),et(e,o.field2Name)&&Df.setValue(n.field2(),e[o.field2Name])}}})]),apis:{getField1:function(t){return ml(t,o,"field1")},getField2:function(t){return ml(t,o,"field2")},getLock:function(t){return ml(t,o,"lock")}}}},apis:{getField1:function(t,e){return t.getField1(e)},getField2:function(t,e){return t.getField2(e)},getLock:function(t,e){return t.getLock(e)}}}),Uk={undo:rt(Ir("undo")),redo:rt(Ir("redo")),zoom:rt(Ir("zoom")),back:rt(Ir("back")),apply:rt(Ir("apply")),swap:rt(Ir("swap")),transform:rt(Ir("transform")),tempTransform:rt(Ir("temp-transform")),transformApply:rt(Ir("transform-apply"))},jk=rt("save-state"),Wk=rt("disable"),Gk=rt("enable"),Xk={formActionEvent:wx,saveState:jk,disable:Wk,enable:Gk},Yk=tinymce.util.Tools.resolve("tinymce.geom.Rect"),qk=tinymce.util.Tools.resolve("tinymce.util.Observable"),Kk=tinymce.util.Tools.resolve("tinymce.util.VK");function Jk(t,d){function e(t){var e,n,o,r,i,u,a,c,s=t.raw,l=(e=Math.max,n=y.documentElement,o=y.body,r=e(n.scrollWidth,o.scrollWidth),i=e(n.clientWidth,o.clientWidth),u=e(n.offsetWidth,o.offsetWidth),a=e(n.scrollHeight,o.scrollHeight),c=e(n.clientHeight,o.clientHeight),{width:r<u?i:r,height:a<e(n.offsetHeight,o.offsetHeight)?c:a});rS(s),t.prevent(),p=s.button,h=s.screenX,v=s.screenY;var f=ge(w,"cursor");de(g=Mt.fromTag("div",y),{position:"absolute",top:"0",left:"0",width:l.width+"px",height:l.height+"px","z-index":"2147483647",opacity:"0.0001",cursor:f}),Tn(yn(x),g),b.push(pc(x,"mousemove",m),pc(x,"touchmove",m),pc(x,"mouseup",S),pc(x,"touchend",S)),d.start(s)}function m(t){var e=t.raw;if(rS(e),e.button!==p)return S(t);e.deltaX=e.screenX-h,e.deltaY=e.screenY-v,t.prevent(),d.drag(e)}var n,o,r,g,p,h,v,i=[],b=[],y=null!==(n=d.document)&&void 0!==n?n:document,u=null!==(o=d.root)&&void 0!==o?o:y,x=Mt.fromDom(y),w=Mt.fromDom(u.getElementById(null!==(r=d.handle)&&void 0!==r?r:t)),S=function(t){rS(t.raw),St(b,function(t){return t.unbind()}),b=[],En(g),d.stop&&d.stop(t.raw)};return i.push(pc(w,"mousedown",e),pc(w,"touchstart",e)),{destroy:function(){St(b.concat(i),function(t){return t.unbind()}),b=[],i=[],k(g)&&En(g)}}}function $k(t,e,n,o,r){return Yw({name:t,icon:vt.some(e),disabled:n,tooltip:vt.some(t),primary:!1,borderless:!1},o,r)}function Qk(t,e){e?gd.enable(t):gd.disable(t)}var Zk=0,tC=function(s,e,l,t,n){function f(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function u(t,e,n,o){var r=e.x+n*t.deltaX,i=e.y+o*t.deltaY,u=Math.max(20,e.w+n*t.deltaW),a=Math.max(20,e.h+o*t.deltaH),c=(s=Yk.clamp({x:r,y:i,w:u,h:a},l,"move"===t.name),f(l,s));b.fire("updateRect",{rect:c}),h(c)}function o(t){r(s=t)}function r(n){function t(t,e){Iu(m,"#"+d+"-"+t).each(function(t){de(t,{left:e.x+"px",top:e.y+"px",width:Math.max(0,e.w)+"px",height:Math.max(0,e.h)+"px"})})}St(g,function(e){Iu(m,"#"+d+"-"+e.name).each(function(t){de(t,{left:n.w*e.xMul+n.x+"px",top:n.h*e.yMul+n.y+"px"})})}),t("top",{x:e.x,y:e.y,w:e.w,h:n.y-e.y}),t("right",{x:n.x+n.w,y:n.y,w:e.w-n.x-n.w+e.x,h:n.h}),t("bottom",{x:e.x,y:n.y+n.h,w:e.w,h:e.h-n.y-n.h+e.y}),t("left",{x:e.x,y:n.y,w:n.x-e.x,h:n.h}),t("move",n)}var i,a,c=[],d="tox-crid-"+Zk++,m=Mt.fromDom(t),g=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],p=["top","right","bottom","left"],h=function(t){var e;o((e=l,{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}))};function v(t){oe(t.target,"aria-grabbed","focus"===t.raw.type?"true":"false")}re(a=Mt.fromTag("div"),{id:d,class:"tox-croprect-container",role:"grid","aria-dropeffect":"execute"}),Tn(m,a),St(p,function(n){Iu(m,"#"+d).each(function(t){var e=Mt.fromTag("div");re(e,{id:d+"-"+n,class:"tox-croprect-block","data-mce-bogus":"all"}),fe(e,"display","none"),Tn(t,e)})}),St(g,function(n){Iu(m,"#"+d).each(function(t){var e=Mt.fromTag("div");re(e,{id:d+"-"+n.name,"aria-label":n.label,"aria-grabbed":"false","data-mce-bogus":"all",role:"gridcell",tabindex:"-1",title:n.label}),Jr(e,["tox-croprect-handle","tox-croprect-handle-"+n.name]),fe(e,"display","none"),Tn(t,e)})}),i=B(g,function(e){var n;return Jk(d,{document:t.ownerDocument,root:gn(m).dom,handle:d+"-"+e.name,start:function(){n=s},drag:function(t){u(e,n,t.deltaX,t.deltaY)}})}),r(s),c.push(pc(m,"focusin",v),pc(m,"focusout",v),pc(m,"keydown",function(e){var i;function t(t,e,n,o,r){t.stopPropagation(),t.preventDefault(),u(i,n,o,r)}switch(St(g,function(t){if(ie(e.target,"id")===d+"-"+t.name)return i=t,!1}),e.raw.keyCode){case Kk.LEFT:t(e,0,s,-10,0);break;case Kk.RIGHT:t(e,0,s,10,0);break;case Kk.UP:t(e,0,s,0,-10);break;case Kk.DOWN:t(e,0,s,0,10);break;case Kk.ENTER:case Kk.SPACEBAR:e.prevent(),n()}}));var b=lt(lt({},qk),{toggleVisibility:function(t){var e=V(V([],B(g,function(t){return"#"+d+"-"+t.name}),!0),B(p,function(t){return"#"+d+"-"+t}),!0).join(","),n=vs(m,e);St(n,t?function(t){return ve(t,"display")}:function(t){return fe(t,"display","none")})},setClampRect:function(t){l=t,r(s)},setRect:o,getInnerRect:function(){return f(l,s)},setInnerRect:h,setViewPortRect:function(t){e=t,r(s)},destroy:function(){St(i,function(t){return t.destroy()}),i=[],St(c,function(t){return t.unbind()}),c=[]}});return b};function eC(t){var n,o,e,r,i=Po(t),u=gc(),a=(o=-1,{data:n=[],add:function(t){var e=n.splice(++o);return n.push(t),{state:t,removed:e}},undo:function(){if(e())return n[--o]},redo:function(){if(r())return n[++o]},canUndo:e=function(){return 0<o},canRedo:r=function(){return-1!==o&&o<n.length-1}});function c(t){i.set(t)}function s(t){URL.revokeObjectURL(t.url)}function l(t){var e=f(t);c(e);var n=a.add(e).removed;return lk.each(n,s),e.url}a.add(t);function f(t){return{blob:t,url:URL.createObjectURL(t)}}function d(){u.on(s),u.clear()}return{getBlobState:function(){return i.get()},setBlobState:c,addBlobState:l,getTempState:function(){return u.get().getOrThunk(i.get)},updateTempState:function(t){var e=f(t);return d(),u.set(e),e.url},addTempState:function(t){var e=f(t);return u.set(e),e.url},applyTempState:function(e){return u.get().fold(st,function(t){l(t.blob),e()})},destroyTempState:d,undo:function(){var t=a.undo();return c(t),t.url},redo:function(){var t=a.redo();return c(t),t.url},getHistoryStates:function(){return{undoEnabled:a.canUndo(),redoEnabled:a.canRedo()}}}}function nC(t,e){function i(t){var e=y.getHistoryStates();k.updateButtonUndoStates(t,e.undoEnabled,e.redoEnabled),br(t,Xk.formActionEvent,{name:Xk.saveState(),value:e.undoEnabled})}function u(t){return t.toBlob()}function a(t){br(t,Xk.formActionEvent,{name:Xk.disable(),value:{}})}function c(e,t,n,o,r){a(e),Sw(t).then(n).then(u).then(o).then(function(t){return w(e,t)}).then(function(){i(e),r(),x(e)}).catch(function(t){console.log(t),e.getSystem().isConnected()&&x(e)})}function r(t,e,n){c(t,y.getBlobState().blob,e,function(t){return y.updateTempState(t)},n)}function s(t){var e=y.getBlobState().url;return y.destroyTempState(),i(t),e}var n,o,l,f,d,m,g,p,h,v,b,y=eC(t.currentState),x=function(t){C.getApplyButton(t).each(function(t){gd.enable(t)}),br(t,Xk.formActionEvent,{name:Xk.enable(),value:{}})},w=function(t,e){return a(t),S.updateSrc(t,e)},S=(f=t.currentState.url,m=Lm({dom:{tag:"div",classes:["tox-image-tools__image-bg"],attributes:{role:"presentation"}}}),g=Po(1),d=dc(),p=lt(lt({},d),{run:function(t){return d.get().each(t)}}),h=Po({x:0,y:0,w:1,h:1}),v=Po({x:0,y:0,w:1,h:1}),{memContainer:b=Lm(sx.sketch({dom:{tag:"div",classes:["tox-image-tools__image"]},components:[m.asSpec(),{dom:{tag:"img",attributes:{src:f}}},{dom:{tag:"div"},behaviours:ec([mm("image-panel-crop-events",[ou(function(t){b.getOpt(t).each(function(t){var e=t.element.dom,n=tC({x:10,y:10,w:100,h:100},{x:0,y:0,w:200,h:200},{x:0,y:0,w:200,h:200},e,st);n.toggleVisibility(!1),n.on("updateRect",function(t){var e=t.rect,n=g.get(),o={x:Math.round(e.x/n),y:Math.round(e.y/n),w:Math.round(e.w/n),h:Math.round(e.h/n)};h.set(o)}),p.set(n)})}),ru(function(){p.clear()})])])}],containerBehaviours:ec([Dg.config({}),mm("image-panel-events",[ou(function(t){_(t,f)})])])})),updateSrc:_,zoom:function(t,e){var n=g.get(),o=0<e?Math.min(2,n+.1):Math.max(.1,n-.1);g.set(o),b.getOpt(t).each(function(t){var e=t.components()[1].element;O(t,e)})},showCrop:function(){p.run(function(t){t.toggleVisibility(!0)})},hideCrop:function(){p.run(function(t){t.toggleVisibility(!1)})},getRect:function(){return h.get()},getMeasurements:function(){var t=v.get();return{width:t.w,height:t.h}}}),k=(o=Lm($k("Undo","undo",!0,function(t){br(t,Uk.undo(),{direction:1})},n=e)),l=Lm($k("Redo","redo",!0,function(t){br(t,Uk.redo(),{direction:1})},n)),{container:sx.sketch({dom:{tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools__sidebar"]},components:[o.asSpec(),l.asSpec(),$k("Zoom in","zoom-in",!1,function(t){br(t,Uk.zoom(),{direction:1})},n),$k("Zoom out","zoom-out",!1,function(t){br(t,Uk.zoom(),{direction:-1})},n)]}),updateButtonUndoStates:function(t,e,n){o.getOpt(t).each(function(t){Qk(t,e)}),l.getOpt(t).each(function(t){Qk(t,n)})}}),C=oS(S,e);function O(t,s){b.getOpt(t).each(function(t){var n=g.get(),o=Ce(t.element),r=xe(t.element),i=s.dom.naturalWidth*n,u=s.dom.naturalHeight*n,a=Math.max(0,o/2-i/2),c=Math.max(0,r/2-u/2),e={left:a.toString()+"px",top:c.toString()+"px",width:i.toString()+"px",height:u.toString()+"px",position:"absolute"};de(s,e),m.getOpt(t).each(function(t){de(t.element,e)}),p.run(function(t){var e=h.get();t.setRect({x:e.x*n+a,y:e.y*n+c,w:e.w*n,h:e.h*n}),t.setClampRect({x:a,y:c,w:i,h:u}),t.setViewPortRect({x:0,y:0,w:o,h:r})})})}function _(t,e){var n,i=Mt.fromTag("img");return oe(i,"src",e),n=i.dom,new Bh(function(t){var e=function(){n.removeEventListener("load",e),t(n)};n.complete?t(n):n.addEventListener("load",e)}).then(function(){t.getSystem().isConnected()&&b.getOpt(t).map(function(t){var e=Ou({element:i});Dg.replaceAt(t,1,vt.some(e));var n=v.get(),o={x:0,y:0,w:i.dom.naturalWidth,h:i.dom.naturalHeight};v.set(o);var u,r=Yk.inflate(o,-20,-20);h.set(r),n.w===o.w&&n.h===o.h||(u=i,b.getOpt(t).each(function(t){var e=Ce(t.element),n=xe(t.element),o=u.dom.naturalWidth,r=u.dom.naturalHeight,i=Math.min(e/o,n/r);1<=i?g.set(1):g.set(i)})),O(t,i)})})}return{dom:{tag:"div",attributes:{role:"presentation"}},components:[C.memContainer.asSpec(),S.memContainer.asSpec(),k.container],behaviours:ec([Df.config({store:{mode:"manual",getValue:function(){return y.getBlobState()}}}),mm("image-tools-events",[Cr(Uk.undo(),function(e,t){var n=y.undo();w(e,n).then(function(t){x(e),i(e)})}),Cr(Uk.redo(),function(e,t){var n=y.redo();w(e,n).then(function(t){x(e),i(e)})}),Cr(Uk.zoom(),function(t,e){var n=e.event.direction;S.zoom(t,n)}),Cr(Uk.back(),function(t,e){var n,o=s(n=t);w(n,o).then(function(t){x(n)}),(0,e.event.swap)(),S.hideCrop()}),Cr(Uk.apply(),function(t,e){y.applyTempState(function(){s(t),(0,e.event.swap)()})}),Cr(Uk.transform(),function(t,e){return r(t,e.event.transform,st)}),Cr(Uk.tempTransform(),function(t,e){var n=e.event.transform;c(t,y.getTempState().blob,n,function(t){return y.addTempState(t)},st)}),Cr(Uk.transformApply(),function(t,e){var n=t,o=e.event.transform,r=e.event.swap,i=y.getBlobState().blob;c(n,i,o,function(t){var e=y.addBlobState(t);return s(n),e},r)}),Cr(Uk.swap(),function(e,t){k.updateButtonUndoStates(e,!1,!1);var n=t.event.transform,o=t.event.swap;n.fold(function(){o()},function(t){r(e,t,o)})})]),uS()])}}function oC(t){return!Tt(t,"items")}function rC(t,e){function n(t){return{dom:{tag:"td",innerHtml:e.translate(t)}}}return{dom:{tag:"table",classes:["tox-dialog__table"]},components:[{dom:{tag:"thead"},components:[{dom:{tag:"tr"},components:B(t.header,function(t){return{dom:{tag:"th",innerHtml:e.translate(t)}}})}]},{dom:{tag:"tbody"},components:B(t.cells,function(t){return{dom:{tag:"tr"},components:B(t,n)}})}],behaviours:ec([gx.config({}),Mg.config({})])}}function iC(n,e){var t=n.label.map(function(t){return nx(t,e)}),o=[gd.config({disabled:function(){return n.disabled||e.isDisabled()}}),gb(),Tg.config({mode:"execution",useEnter:!0!==n.multiline,useControlEnter:!0===n.multiline,execute:function(t){return vr(t,Sx),vt.some(!0)}}),mm("textfield-change",[Cr(Si(),function(t,e){br(t,bx,{name:n.name})}),Cr(Mi(),function(t,e){br(t,bx,{name:n.name})})]),gx.config({})],r=n.validation.map(function(o){return qx.config({getRoot:function(t){return Yt(t.element)},invalidClass:"tox-invalid",validator:{validate:function(t){var e=Df.getValue(t),n=o.validator(e);return Wx(!0===n?Nn.value(e):Nn.error(n))},validateOnLoad:o.validateOnLoad}})}).toArray(),i=n.placeholder.fold(rt({}),function(t){return{placeholder:e.translate(t)}}),u=n.inputMode.fold(rt({}),function(t){return{inputmode:t}}),a=lt(lt({},i),u);return ex(t,dx.parts.field({tag:!0===n.multiline?"textarea":"input",inputAttributes:a,inputClasses:[n.classname],inputBehaviours:ec(ft([o,r])),selectOnFocus:!1,factory:Ex}),(n.flex?["tox-form__group--stretched"]:[]).concat(n.maximized?["tox-form-group--maximize"]:[]),[gd.config({disabled:function(){return n.disabled||e.isDisabled()},onDisabled:function(t){dx.getField(t).each(gd.disable)},onEnabled:function(t){dx.getField(t).each(gd.enable)}}),gb()])}function uC(t){var e=Po(null);return wu({readState:function(){return{timer:null!==e.get()?"set":"unset"}},setTimer:function(t){e.set(t)},cancel:function(){var t=e.get();null!==t&&t.cancel()}})}function aC(t,e,n){var o=Df.getValue(n);Df.setValue(e,o),aO(e)}function cC(t,e){var n=t.element,o=Qr(n),r=n.dom;"number"!==ie(n,"type")&&e(r,o)}function sC(t){return{type:"menuitem",value:t.url,text:t.title,meta:{attach:t.attach},onAction:st}}function lC(t,e){return{type:"menuitem",value:e,text:t,meta:{attach:void 0},onAction:st}}function fC(t,e){return n=t,B(F(e,function(t){return t.type===n}),sC);var n}function dC(t,e){var n=t.toLowerCase();return F(e,function(t){return ut((void 0!==t.meta&&void 0!==t.meta.text?t.meta:t).text.toLowerCase(),n)||ut(t.value.toLowerCase(),n)})}function mC(u,a,c){function r(t){var e=Df.getValue(t);c.addToHistory(e.value,u.filetype)}var t,e,n,o,i=a.shared.providers,s=dx.parts.field({factory:fO,dismissOnBlur:!0,inputClasses:["tox-textfield"],sandboxClasses:["tox-dialog__popups"],inputAttributes:{"aria-errormessage":pO,type:"url"},minChars:0,responseTime:0,fetch:function(t){var n,o,e,r,i=Uw((n=u.filetype,o=c,e=Df.getValue(t),r=void 0!==e.meta.text?e.meta.text:e.value,o.getLinkInformation().fold(function(){return[]},function(t){var e=dC(r,B(o.getHistory(n),function(t){return lC(t,t)}));return"file"===n?R([e,dC(r,fC("header",t.targets)),dC(r,ft([vt.from(t.anchorTop).map(function(t){return lC("<top>",t)}).toArray(),fC("anchor",t.targets),vt.from(t.anchorBottom).map(function(t){return lC("<bottom>",t)}).toArray()]))],function(t,e){return 0===t.length||0===e.length?t.concat(e):t.concat(gO,e)},[]):e})),wv.BUBBLE_TO_SANDBOX,a,!1);return Wx(i)},getHotspot:function(t){return p.getOpt(t)},onSetValue:function(t,e){t.hasConfigured(qx)&&qx.run(t).get(st)},typeaheadBehaviours:ec(ft([c.getValidationHandler().map(function(n){return qx.config({getRoot:function(t){return Yt(t.element)},invalidClass:"tox-control-wrap--status-invalid",notify:{onInvalid:function(t,e){f.getOpt(t).each(function(t){oe(t.element,"title",i.translate(e))})}},validator:{validate:function(t){var e=Df.getValue(t);return mO(function(o){n({type:u.filetype,url:e.value},function(t){var e,n;"invalid"===t.status?(e=Nn.error(t.message),o(e)):(n=Nn.value(t.message),o(n))})})},validateOnLoad:!1}})}).toArray(),[gd.config({disabled:function(){return u.disabled||i.isDisabled()}}),gx.config({}),mm("urlinput-events",ft(["file"===u.filetype?[Cr(Si(),function(t){br(t,bx,{name:u.name})})]:[],[Cr(ki(),function(t){br(t,bx,{name:u.name}),r(t)}),Cr(Mi(),function(t){br(t,bx,{name:u.name}),r(t)})]]))]])),eventOrder:((t={})[Si()]=["streaming","urlinput-events","invalidating"],t),model:{getDisplayText:function(t){return t.value},selectsOver:!1,populateFromBrowse:!1},markers:{openClass:"tox-textfield--popup-open"},lazySink:a.shared.getSink,parts:{menu:Qh(0,0,"normal")},onExecute:function(t,e,n){br(e,Sx,{})},onItemExecute:function(t,e,n,o){r(t),br(t,bx,{name:u.name})}}),l=u.label.map(function(t){return nx(t,i)}),f=Lm((e="invalid",n=vt.some(pO),sh("warning",{tag:"div",classes:["tox-icon","tox-control-wrap__status-icon-"+e],attributes:lt({title:i.translate(o=void 0===o?e:o),"aria-live":"polite"},n.fold(function(){return{}},function(t){return{id:t}}))},i.icons))),d=Lm({dom:{tag:"div",classes:["tox-control-wrap__status-icon-wrap"]},components:[f.asSpec()]}),m=c.getUrlPicker(u.filetype),g=Ir("browser.url.event"),p=Lm({dom:{tag:"div",classes:["tox-control-wrap"]},components:[s,d.asSpec()],behaviours:ec([gd.config({disabled:function(){return u.disabled||i.isDisabled()}})])}),h=Lm(Kw({name:u.name,icon:vt.some("browse"),text:u.label.getOr(""),disabled:u.disabled,primary:!1,borderless:!0},function(t){return vr(t,g)},i,[],["tox-browse-url"]));return dx.sketch({dom:vx([]),components:l.toArray().concat([{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:ft([[p.asSpec()],m.map(function(){return h.asSpec()}).toArray()])}]),fieldBehaviours:ec([gd.config({disabled:function(){return u.disabled||i.isDisabled()},onDisabled:function(t){dx.getField(t).each(gd.disable),h.getOpt(t).each(gd.disable)},onEnabled:function(t){dx.getField(t).each(gd.enable),h.getOpt(t).each(gd.enable)}}),gb(),mm("url-input-events",[Cr(g,function(o){cd.getCurrent(o).each(function(e){var t=Df.getValue(e),n=lt({fieldname:u.name},t);m.each(function(t){t(n).get(function(t){Df.setValue(e,t),br(o,bx,{name:u.name})})})})})])])})}function gC(r){return function(e,n,o){return tt(n,"name").fold(function(){return r(n,o)},function(t){return e.field(t,r(n,o))})}}function pC(e,t,n){var o=Yo(n,{shared:{interpreter:function(t){return bO(e,t,o)}}});return bO(e,t,o)}function hC(t,e,n){function o(){return Mt.fromDom(t.getContentAreaContainer())}function r(){return p||!n()}var i,u,a,c,s,l,f,d,m,g,p=cb(t);return{inlineDialog:(f=o,d=e,m=r,g={maxHeightFunction:Nc()},function(){return m()?{type:"node",root:te(f()),node:vt.from(f()),bubble:Sc(12,12,yO),layouts:{onRtl:function(){return[Mm]},onLtr:function(){return[Bm]}},overrides:g}:{type:"hotspot",hotspot:d(),bubble:Sc(-12,12,yO),layouts:{onRtl:function(){return[Xa]},onLtr:function(){return[Ya]}},overrides:g}}),banner:(c=o,s=e,l=r,function(){return l()?{type:"node",root:te(c()),node:vt.from(c()),layouts:{onRtl:function(){return[np]},onLtr:function(){return[np]}}}:{type:"hotspot",hotspot:s(),layouts:{onRtl:function(){return[$a]},onLtr:function(){return[$a]}}}}),cursor:(u=t,function(){return{type:"selection",root:a(),getSelection:function(){var t=u.selection.getRng();return vt.some(ms.range(Mt.fromDom(t.startContainer),t.startOffset,Mt.fromDom(t.endContainer),t.endOffset))}}}),node:(i=a=function(){return Mt.fromDom(t.getBody())},function(t){return{type:"node",root:i(),node:t}})}}function vC(i){return vt.from(i.getParam("style_formats")).filter(c).map(function(t){var e,n,o=(e=i,n=wO(t),e.formatter?r(n.customFormats):e.on("init",function(){r(n.customFormats)}),n.formats);function r(t){St(t,function(t){e.formatter.has(t.name)||e.formatter.register(t.name,t.format)})}return i.getParam("style_formats_merge",!1,"boolean")?xO.concat(o):o}).getOr(xO)}function bC(t,e,n){var o={type:"formatter",isSelected:e(t.format),getStylePreview:n(t.format)};return Yo(t,o)}function yC(c,t,s,l){var f=function(t){return B(t,function(t){var e,n,o,r,i,u=Ct(t);if(et(t,"items")){var a=f(t.items);return Yo(Yo(t,{type:"submenu"}),{getStyleItems:rt(a)})}return et(t,"format")?bC(t,s,l):1===u.length&&wt(u,"title")?Yo(t,{type:"separator"}):(r={type:"formatter",format:o="custom-"+(n=y((e=t).name)?e.name:Ir(e.title)),isSelected:s(o),getStylePreview:l(o)},i=Yo(e,r),c.formatter.register(n,i),i)})};return f(t)}function xC(n){return function(t){if(k(e=t)&&1===e.nodeType){if(t.contentEditable===n)return!0;if(t.getAttribute("data-mce-contenteditable")===n)return!0}var e;return!1}}function wC(t,e,n,o,r){return{type:t,title:e,url:n,level:o,attach:r}}function SC(t){return t.innerText||t.textContent}function kC(t){return t&&"A"===t.nodeName&&void 0!==(t.id||t.name)&&q1(t)}function CC(t){return t&&/^(H[1-6])$/.test(t.nodeName)}function OC(t){return CC(t)&&q1(t)}function _C(t){var e,n=t.id||Ir("h");return wC("header",SC(t),"#"+n,CC(e=t)?parseInt(e.nodeName.substr(1),10):0,function(){t.id=n})}function TC(t){var e=t.id||t.name;return wC("anchor",SC(t)||"#"+e,"#"+e,0,st)}function EC(t){return 0<SO(t.title).length}function DC(t){return y(t)&&/^https?/.test(t)}function AC(t){return x(t)&&Q(t,function(t){return!(c(e=t)&&e.length<=5&&L(e,DC));var e}).isNone()}function BC(){var t,e=fy.getItem(_O);if(null===e)return{};try{t=JSON.parse(e)}catch(t){if(t instanceof SyntaxError)return console.log("Local storage "+_O+" was not valid JSON",t),{};throw t}return AC(t)?t:(console.log("Local storage "+_O+" was not valid format",t),{})}function MC(t){return tt(BC(),t).getOr([])}function FC(e,t){var n,o;DC(e)&&(o=F(tt(n=BC(),t).getOr([]),function(t){return t!==e}),n[t]=[e].concat(o).slice(0,5),function(t){if(!AC(t))throw new Error("Bad format for history:\n"+JSON.stringify(t));fy.setItem(_O,JSON.stringify(t))}(n))}function IC(t){return!!t}function RC(t){return dt(lk.makeMap(t,/[, ]/),IC)}function NC(t){return vt.from(t.getParam("file_picker_callback")).filter(S)}function PC(t){return vt.from(t).filter(y).getOrUndefined()}function VC(l){return{getHistory:MC,addToHistory:FC,getLinkInformation:function(){return!1===(t=l).getParam("typeahead_urls")?vt.none():vt.some({targets:OO(t.getBody()),anchorTop:PC(t.getParam("anchor_top","#top")),anchorBottom:PC(t.getParam("anchor_bottom","#bottom"))});var t},getValidationHandler:function(){return vt.from(void 0===(e=(t=l).getParam("file_picker_validator_handler",void 0,"function"))?t.getParam("filepicker_validator_handler",void 0,"function"):e);var t,e},getUrlPicker:function(t){return e=c=l,n=s=t,r=vt.some((o=e).getParam("file_picker_types")).filter(IC),i=vt.some(o.getParam("file_browser_callback_types")).filter(IC),u=r.or(i).map(RC),a=NC(o).fold(T,function(t){return u.fold(D,function(t){return 0<Ct(t).length&&t})}),(w(a)?a?NC(e):vt.none():a[n]?NC(e):vt.none()).map(function(o){return function(e){return jx(function(n){var t=lt({filetype:s,fieldname:e.fieldname},vt.from(e.meta).getOr({}));o.call(c,function(t,e){if(!y(t))throw new Error("Expected value to be string");if(void 0!==e&&!x(e))throw new Error("Expected meta to be a object");n({value:t,meta:e})},e.value,t)})}});var e,n,o,r,i,u,a,c,s}}}function HC(t,e,n){var o,r,i,u,a,c,s,l,f,d,m,g,p,h=Po(!1),v={isPositionedAtTop:function(){return"top"===o.get()},getDockingMode:(o=Po(ub(e)?"bottom":"top")).get,setDockingMode:o.set},b={shared:{providers:{icons:function(){return e.ui.registry.getAll().icons},menuItems:function(){return e.ui.registry.getAll().menuItems},translate:fh.translate,isDisabled:function(){return e.mode.isReadOnly()||e.ui.isDisabled()},getSetting:e.getParam.bind(e)},interpreter:function(t){return bO(vO,t,b)},anchors:hC(e,n,v.isPositionedAtTop),header:v,getSink:function(){return Nn.value(t)}},urlinput:VC(e),styleselect:(f=Po([]),d=Po([]),m=Po([]),g=Po([]),p=Po(!(l=function(t){var e=t.items;return void 0!==e&&0<e.length?H(e,l):[t.format]})),(s=e).on("PreInit",function(t){var e=vC(s),n=yC(s,e,y,x);f.set(n),d.set(H(n,l))}),s.on("addStyleModifications",function(t){var e=yC(s,t.items,y,x);m.set(e),p.set(t.replace),g.set(H(e,l))}),{getData:function(){var t=p.get()?[]:f.get(),e=m.get();return t.concat(e)},getFlattenedKeys:function(){var t=p.get()?[]:d.get(),e=g.get();return t.concat(e)}}),colorinput:{colorPicker:function(t,e){Fy(c)(t,e)},hasCustomColors:function(){return my(a)},getColors:function(){return gy(u)},getColorCols:(i=u=a=c=e,function(){return hy(i)})},dialog:{isDraggableModal:(r=e,function(){return r.getParam("draggable_modal",!1,"boolean")})},isContextMenuOpen:function(){return h.get()},setContextMenuState:function(t){return h.set(t)}};function y(t){return function(){return s.formatter.match(t)}}function x(e){return function(){var t=s.formatter.get(e);return void 0!==t?vt.some({tag:0<t.length&&(t[0].inline||t[0].block)||"div",styles:s.dom.parseStyle(s.formatter.getCssText(e))}):vt.none()}}return b}function LC(t){return(mt(pe(t,"position"),"fixed")?vt.none():qt(t)).orThunk(function(){var n=Mt.fromTag("span");return Yt(t).bind(function(t){Tn(t,n);var e=qt(n);return En(n),e})})}function zC(t){return LC(t).map(ke).getOrThunk(function(){return kn(0,0)})}function UC(t,e){var n=t.element;Yr(n,e.transitionClass),qr(n,e.fadeOutClass),Yr(n,e.fadeInClass),e.onShow(t)}function jC(t,e){var n=t.element;Yr(n,e.transitionClass),qr(n,e.fadeInClass),Yr(n,e.fadeOutClass),e.onHide(t)}function WC(t,e,n){return L(t,function(t){switch(t){case"bottom":return e.bottom<=n.bottom;case"top":return e.y>=n.y}})}function GC(e,t){return t.getInitialPos().map(function(t){return Bn(t.bounds.x,t.bounds.y,Ce(e),xe(e))})}function XC(n,o,r){return r.getInitialPos().bind(function(t){switch(r.clearInitialPos(),t.position){case"static":return vt.some(PO.static());case"absolute":var e=LC(n).map(Mn).getOrThunk(function(){return Mn(bn())});return vt.some(PO.absolute(Ea("absolute",tt(t.style,"left").map(function(t){return o.x-e.x}),tt(t.style,"top").map(function(t){return o.y-e.y}),tt(t.style,"right").map(function(t){return e.right-o.right}),tt(t.style,"bottom").map(function(t){return e.bottom-o.bottom}))));default:return vt.none()}})}function YC(t,e,n){var o,r,i,u=t.element;return mt(pe(u,"position"),"fixed")?(r=e,GC(o=u,i=n).filter(function(t){return WC(i.getModes(),t,r)}).bind(function(t){return XC(o,t,i)})):function(t,e,n){var r,o,i=Mn(t);if(WC(n.getModes(),i,e))return vt.none();r=t,o=i,n.setInitialPos({style:function(){var t={},e=r.dom;if(ct(e))for(var n=0;n<e.style.length;n++){var o=e.style.item(n);t[o]=e.style[o]}return t}(),position:ge(r,"position")||"static",bounds:o});var u=Fn(),a=i.x-u.x,c=e.y-u.y,s=u.bottom-e.bottom,l=i.y<=e.y;return vt.some(PO.fixed(Ea("fixed",vt.some(a),l?vt.some(c):vt.none(),vt.none(),l?vt.none():vt.some(s))))}(u,e,n)}function qC(e,t,n){n.setDocked(!1),St(["left","right","top","bottom","position"],function(t){return ve(e.element,t)}),t.onUndocked(e)}function KC(t,e,n,o){var r="fixed"===o.position;n.setDocked(r),Da(t.element,o),(r?e.onDocked:e.onUndocked)(t)}function JC(o,t,r,i,u){void 0===u&&(u=!1),t.contextual.each(function(n){n.lazyContext(o).each(function(t){var e=t.y<i.bottom&&t.bottom>i.y;e!==r.isVisible()&&(r.setVisible(e),u&&!e?(Jr(o.element,[n.fadeOutClass]),n.onHide(o)):(e?UC:jC)(o,n))})})}function $C(t,e,n){var o,r,i,u,a,c;n.isDocked()&&(r=e,i=n,c=(o=t).element,i.setDocked(!1),GC(a=o.element,u=i).bind(function(t){return XC(a,t,u)}).each(function(t){t.fold(function(){return qC(o,r,i)},function(t){return KC(o,r,i,t)},st)}),i.setVisible(!0),r.contextual.each(function(t){$r(c,[t.fadeInClass,t.fadeOutClass,t.transitionClass]),t.onShow(o)}),VO(o,r,i))}function QC(t,e){return wt(zO.getModes(t),e)}function ZC(r){var i=r.element;Yt(i).each(function(t){var e,n,o="padding-"+zO.getModes(r)[0];zO.isDocked(r)?(e=Ce(t),fe(i,"width",e+"px"),fe(t,o,we(n=i)+(parseInt(ge(n,"margin-top"),10)||0)+(parseInt(ge(n,"margin-bottom"),10)||0)+"px")):(ve(i,"width"),ve(t,o))})}function t1(t,e){e?(qr(t,jO.fadeOutClass),Jr(t,[jO.transitionClass,jO.fadeInClass])):(qr(t,jO.fadeInClass),Jr(t,[jO.fadeOutClass,jO.transitionClass]))}function e1(t,e){var n=Mt.fromDom(t.getContainer());e?(Yr(n,WO),qr(n,GO)):(Yr(n,GO),qr(n,WO))}function n1(u,t){function o(e){r().each(function(t){return e(t.element)})}function e(t){u.inline||ZC(t),e1(u,zO.isDocked(t)),t.getSystem().broadcastOn([xf()],{}),r().each(function(t){return t.getSystem().broadcastOn([xf()],{})})}var n,i=gc(),r=t.getSink,a=u.inline?[]:[ic.config({channels:((n={})[UO()]={onReceive:ZC},n)})];return V([Mg.config({}),zO.config({contextual:lt({lazyContext:function(t){var e=we(t.element),n=u.inline?u.getContentAreaContainer():u.getContainer(),o=Mn(Mt.fromDom(n)),r=o.height-e,i=o.y+(QC(t,"top")?0:e);return vt.some(Bn(o.x,i,o.width,r))},onShow:function(){o(function(t){return t1(t,!0)})},onShown:function(r){o(function(t){return $r(t,[jO.transitionClass,jO.fadeInClass])}),i.get().each(function(t){var e,n=r.element,o=jt(e=t);Oa(o).filter(function(t){return!zt(e,t)}).filter(function(t){return zt(t,Mt.fromDom(o.dom.body))||Ut(n,t)}).each(function(){return ka(e)}),i.clear()})},onHide:function(t){var e=t.element,n=r;_a(e).orThunk(function(){return n().toOptional().bind(function(t){return _a(t.element)})}).fold(i.clear,i.set),o(function(t){return t1(t,!1)})},onHidden:function(){o(function(t){return $r(t,[jO.transitionClass])})}},jO),lazyViewport:function(t){var e=Fn(),n=u.getParam("toolbar_sticky_offset",0,"number"),o=e.y+(QC(t,"top")?n:0),r=e.height-(QC(t,"bottom")?n:0);return Bn(e.x,o,e.width,r)},modes:[t.header.getDockingMode()],onDocked:e,onUndocked:e})],a,!0)}function o1(t){return ao("menubutton",KO,t)}function r1(e,t){return t.getAnimationRoot.fold(function(){return e.element},function(t){return t(e)})}function i1(t){return t.dimension.property}function u1(t,e){return t.dimension.getDimension(e)}function a1(t,e){$r(r1(t,e),[e.shrinkingClass,e.growingClass])}function c1(t,e){qr(t.element,e.openClass),Yr(t.element,e.closedClass),fe(t.element,i1(e),"0px"),be(t.element)}function s1(t,e){qr(t.element,e.closedClass),Yr(t.element,e.openClass),ve(t.element,i1(e))}function l1(t,e,n,o){n.setCollapsed(),fe(t.element,i1(e),u1(e,t.element)),be(t.element),a1(t,e),c1(t,e),e.onStartShrink(t),e.onShrunk(t)}function f1(t,e,n){var o=u1(e,t.element);("0px"===o?l1:function(t,e,n,o){var r=o.getOrThunk(function(){return u1(e,t.element)});n.setCollapsed(),fe(t.element,i1(e),r),be(t.element);var i=r1(t,e);qr(i,e.growingClass),Yr(i,e.shrinkingClass),c1(t,e),e.onStartShrink(t)})(t,e,n,vt.some(o))}function d1(t,e,n){var o=r1(t,e),r=Kr(o,e.shrinkingClass),i=u1(e,t.element);s1(t,e);var u=u1(e,t.element);(r?function(){fe(t.element,i1(e),i),be(t.element)}:function(){c1(t,e)})(),qr(o,e.shrinkingClass),Yr(o,e.growingClass),s1(t,e),fe(t.element,i1(e),u),n.setExpanded(),e.onStartGrow(t)}function m1(t,e,n){return!0===Kr(r1(t,e),e.growingClass)}function g1(t,e,n){return!0===Kr(r1(t,e),e.shrinkingClass)}function p1(t){return"<alloy.field."+t+">"}function h1(t){return{element:function(){return t.element.dom}}}function v1(t,n){cd.getCurrent(t).each(function(t){return Dg.set(t,[(e=n,r_.sketch(function(t){return{dom:{tag:"div",classes:["tox-sidebar__pane-container"]},components:(n=t,r=B(Ct(o=e),function(t){var e=o[t],n=co(ao("sidebar",i_,e));return{name:t,getApi:h1,onSetup:n.onSetup,onShow:n.onShow,onHide:n.onHide}}),B(r,function(t){var e=Po(st);return n.slot(t.name,{dom:{tag:"div",classes:["tox-sidebar__pane"]},behaviours:qv([hb(t,e),vb(t,e),Cr(Ji(),function(e,t){var n=t.event;N(r,function(t){return t.name===n.name}).each(function(t){(n.visible?t.onShow:t.onHide)(t.getApi(e))})})])})})),slotBehaviours:qv([ou(function(t){return r_.hideAllSlots(t)})])};var n,o,r}))]);var e})}function b1(t){return cd.getCurrent(t).bind(function(t){return t_.isGrowing(t)||t_.hasGrown(t)?cd.getCurrent(t).bind(function(e){return N(r_.getSlotNames(e),function(t){return r_.isShowing(e,t)})}):vt.none()})}function y1(t){return cd.getCurrent(t).each(function(t){return ka(t.element)})}function x1(f,d,m){function e(t){var e;!g.get()||"focusin"===(e=t).type&&(e.composed?Y(e.composedPath()):vt.from(e.target)).map(Mt.fromDom).filter(Ge).exists(function(t){return Kr(t,"mce-pastebin")})||(t.preventDefault(),y1(d()),f.editorManager.setActive(f))}var g=Po(!1),n=gc();function o(t){var e,n,o,r,i,u,a,c,s,l;t!==g.get()&&(g.set(t),e=f,n=d(),o=t,r=m.providers,c=n.element,s=o,l="data-mce-"+(i="tabindex"),vt.from(e.iframeElement).map(Mt.fromDom).each(function(e){s?(ue(e,i).each(function(t){return oe(e,l,t)}),oe(e,i,-1)):(ce(e,i),ue(e,l).each(function(t){oe(e,i,t),ce(e,l)}))}),o?(s_.block(n,(a=r,function(t,e){return{dom:{tag:"div",attributes:{"aria-label":a.translate("Loading..."),tabindex:"0"},classes:["tox-throbber__busy-spinner"]},components:[{dom:Hm('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}})),ve(c,"display"),ce(c,"aria-hidden"),e.hasFocus()&&y1(n)):(u=cd.getCurrent(n).exists(function(t){return Ca(t.element)}),s_.unblock(n),fe(c,"display","none"),oe(c,"aria-hidden","true"),u&&e.focus()),f.fire("AfterProgressState",{state:t}))}f.inline||f.on("PreInit",function(){f.dom.bind(f.getWin(),"focusin",e),f.on("BeforeExecCommand",function(t){"mcefocus"===t.command.toLowerCase()&&!0!==t.value&&e(t)})}),f.on("ProgressState",function(t){var e;n.on(rp.clearTimeout),u(t.time)?(e=rp.setEditorTimeout(f,function(){return o(t.state)},t.time),n.set(e)):(o(t.state),n.clear())})}function w1(t,e,n){return{within:t,extra:e,withinWidth:n}}function S1(t,e,o){var n,r=(n=function(t,e){var n=o(t);return vt.some({element:t,start:e,finish:e+n,width:n})},R(t,function(e,t){return n(t,e.len).fold(rt(e),function(t){return{len:t.finish,list:e.list.concat([t])}})},{len:0,list:[]}).list),i=F(r,function(t){return t.finish<=e}),u=I(i,function(t,e){return t+e.width},0);return{within:i,extra:r.slice(i.length),withinWidth:u}}function k1(t){return B(t,function(t){return t.element})}function C1(t,e){var n=B(e,function(t){return Eu(t)});IO.setGroups(t,n)}function O1(t,e,n){var o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k=e.builtGroups.get();0!==k.length&&(o=gl(t,e,"primary"),r=Jx.getCoupled(t,"overflowGroup"),fe(o.element,"visibility","hidden"),u=K(i=k.concat([r]),function(e){return _a(e.element).bind(function(t){return e.getSystem().getByDom(t).toOptional()})}),n([]),C1(o,i),a=Ce(o.element),0===(s=a,l=e.builtGroups.get(),d=r,y=(0===(m=S1(l,s,f=function(t){return Ce(t.element)})).extra.length?vt.some(m):vt.none()).getOrThunk(function(){return S1(l,s-f(d),f)}),x=y.within,w=y.extra,S=y.withinWidth,(c=1===w.length&&w[0].width<=f(d)?(b=S,w1(k1(x.concat(w)),[],b)):1<=w.length?(p=w,h=d,v=S,w1(k1(x).concat([h]),k1(p),v)):(g=S,w1(k1(x),[],g))).extra.length)?(Dg.remove(o,r),n([])):(C1(o,c.within),n(c.extra)),ve(o.element,"visibility"),be(o.element),u.each(Mg.focus))}function _1(t,e){var n=Jx.getCoupled(t,"toolbarSandbox");bf.isOpen(n)?bf.close(n):bf.open(n,e.toolbar())}function T1(t,e,n,o){var r=n.getBounds.map(function(t){return t()}),i=n.lazySink(t).getOrDie();ff.positionWithinBounds(i,e,{anchor:{type:"hotspot",hotspot:t,layouts:o,overrides:{maxWidthFunction:m_()}}},r)}function E1(t,e,n,o,r){IO.setGroups(e,r),T1(t,e,n,o),Rg.on(t)}function D1(t){return B(t,function(t){return Eu(t)})}function A1(t,n,o){O1(t,o,function(e){o.overflowGroups.set(e),n.getOpt(t).each(function(t){h_.setGroups(t,D1(e))})})}function B1(e,n){ml(e,n,"overflow-button").bind(function(){return ml(e,n,"overflow")}).each(function(t){J1(e,n),t_.toggleGrow(t)})}function M1(t){var e=t.title.fold(function(){return{}},function(t){return{attributes:{title:t}}});return{dom:lt({tag:"div",classes:["tox-toolbar__group"]},e),components:[y_.parts.items({})],items:t.items,markers:{itemSelector:"*:not(.tox-split-button) > .tox-tbtn:not([disabled]), .tox-split-button:not([disabled]), .tox-toolbar-nav-js:not([disabled])"},tgroupBehaviours:ec([gx.config({}),Mg.config({})])}}function F1(t){return y_.sketch(M1(t))}function I1(n,t){var e=ou(function(t){var e=B(n.initGroups,F1);IO.setGroups(t,e)});return ec([$b(n.providers.isDisabled),gb(),Tg.config({mode:t,onEscape:n.onEscape,selector:".tox-toolbar__group"}),mm("toolbar-events",[e])])}function R1(t){var e=t.cyclicKeying?"cyclic":"acyclic";return{uid:t.uid,dom:{tag:"div",classes:["tox-toolbar-overlord"]},parts:{"overflow-group":M1({title:vt.none(),items:[]}),"overflow-button":Xw({name:"more",icon:vt.some("more-drawer"),disabled:!1,tooltip:vt.some("More..."),primary:!1,borderless:!1},vt.none(),t.providers)},splitToolbarBehaviours:I1(t,e)}}function N1(t){var e=t.cyclicKeying?"cyclic":"acyclic";return IO.sketch({uid:t.uid,dom:{tag:"div",classes:["tox-toolbar"].concat(t.type===vv.scrolling?["tox-toolbar--scrolling"]:[])},components:[IO.parts.groups({})],toolbarBehaviours:I1(t,e)})}function P1(t){return"string"==typeof t?t.split(" "):t}function V1(i,u){var a=lt(lt({},M_),u.menus),n=0<Ct(u.menus).length,t=F(void 0===u.menubar||!0===u.menubar?P1("file edit view insert format tools table help"):P1(!1===u.menubar?"":u.menubar),function(t){var e=Tt(M_,t);return n?e||tt(u.menus,t).exists(function(t){return Tt(t,"items")}):e});return F(B(t,function(t){var e=a[t],n={title:e.title,items:P1(e.items)},o=u,r=i.getParam("removed_menuitems","").split(/[ ,]/);return{text:n.title,getItems:function(){return H(n.items,function(t){var e=t.toLowerCase();return 0===e.trim().length||d(r,function(t){return t===e})?[]:"separator"===e||"|"===e?[{type:"separator"}]:o.menuItems[e]?[o.menuItems[e]]:[]})}}}),function(t){return 0<t.getItems().length&&d(t.getItems(),function(t){return"separator"!==t.type})})}function H1(t){function e(){t._skinLoaded=!0,t.fire("SkinLoaded")}return function(){t.initialized?e():t.on("init",e)}}function L1(n,o,r){return new Bh(function(t,e){r.load(o,t,e),n.on("remove",function(){return r.unload(o)})})}function z1(t,e){var n,o,r,i,u,a,c,s,l,f=(r=(n=e).getParam("skin"),i=n.getParam("skin_url"),!1!==r&&(o=r||"oxide",i=i?n.documentBaseURI.toAbsolute(i):nb.baseURL+"/skins/ui/"+o),i);f&&e.contentCSS.push(f+(t?"/content.inline":"/content")+".min.css"),!1===e.getParam("skin")==0&&y(f)?Bh.all([L1(e,f+"/skin.min.css",e.ui.styleSheetLoader),(c=e,s=f,l=Mt.fromDom(c.getElement()),pn(l).isSome()?L1(c,s+"/skin.shadowdom.min.css",eb.DOM.styleSheetLoader):Bh.resolve())]).then(H1(e),(u=e,a="Skin could not be loaded",function(){return u.fire("SkinLoadError",{message:a})})):H1(e)()}function U1(o,r){return function(e){function t(){e.setActive(o.formatter.match(r));var t=o.formatter.formatChanged(r,e.setActive);n.set(t)}var n=mc();return o.initialized?t():o.once("init",t),function(){o.off("init",t),n.clear()}}}function j1(o,r,i){return function(t){function e(){return i(t)}function n(){i(t),o.on(r,e)}return o.initialized?n():o.once("init",n),function(){o.off("init",n),o.off(r,e)}}}function W1(e){return function(t){return function(){e.undoManager.transact(function(){e.focus(),e.execCommand("mceToggleFormat",!1,t.format)})}}}function G1(t,e){return function(){return t.execCommand(e)}}function X1(t,e,n){var u,a,c,o=n.dataset,r="basic"===o.type?function(){return B(o.data,function(t){return bC(t,n.isSelectedFor,n.getPreviewFor)})}:o.getData;return{items:(u=e,a=n,c=function(t,e,n){var o="formatter"===t.type&&a.isInvalid(t);return 0===e?o?[]:i(t,e,!1,n).toArray():i(t,e,o,n).toArray()},{validateItems:s,getFetch:function(n,o){return function(t,e){e(Uw(s(o()),wv.CLOSE_ON_EXECUTE,n,!1))}}}),getStyleItems:r};function i(t,e,n,o){var r=u.shared.providers.translate(t.title);if("separator"===t.type)return vt.some({type:"separator",text:r});if("submenu"!==t.type)return vt.some(lt({type:"togglemenuitem",text:r,icon:t.icon,active:t.isSelected(o),disabled:n,onAction:a.onAction(t)},t.getStylePreview().fold(function(){return{}},function(t){return{meta:{style:t}}})));var i=H(t.getStyleItems(),function(t){return c(t,e,o)});return 0===e&&i.length<=0?vt.none():vt.some({type:"nestedmenuitem",text:r,disabled:i.length<=0,getSubmenuItems:function(){return H(t.getStyleItems(),function(t){return c(t,e,o)})}})}function s(t){var e=a.getCurrentValue(),n=a.shouldHide?0:1;return H(t,function(t){return c(t,n,e)})}}function Y1(t,e,n){var o=X1(0,e,n),r=o.items,i=o.getStyleItems,u=j1(t,"NodeChange",function(t){var e=t.getComponent();n.updateText(e)});return Lw({text:n.icon.isSome()?vt.none():n.text,icon:n.icon,tooltip:vt.from(n.tooltip),role:vt.none(),fetch:r.getFetch(e,i),onSetup:u,getApi:function(t){return{getComponent:rt(t)}},columns:1,presets:"normal",classes:n.icon.isSome()?[]:["bespoke"],dropdownBehaviours:[]},"tox-tbtn",e.shared)}function q1(t){return function(t){for(;t=t.parentNode;){var e=t.contentEditable;if(e&&"inherit"!==e)return kO(t)}return!1}(t)&&!CO(t)}function K1(r,t){function e(t){return vl(r)}function n(n,o){return function(t,e){return ml(t,r,e).map(function(t){return n(t,e)}).getOr(o)}}function o(t,e){return"true"!==ie(t.element,"aria-hidden")}var i,u=n(o,!1),a=n(function(t,e){var n;o(t)&&(fe(n=t.element,"display","none"),oe(n,"aria-hidden","true"),br(t,Ji(),{name:e,visible:!1}))}),c=(i=a,function(e,t){St(t,function(t){return i(e,t)})}),s=n(function(t,e){var n;o(t)||(ve(n=t.element,"display"),ce(n,"aria-hidden"),br(t,Ji(),{name:e,visible:!0}))});return{uid:r.uid,dom:r.dom,components:t,behaviours:tl(r.slotBehaviours),apis:{getSlotNames:e,getSlot:function(t,e){return ml(t,r,e)},isShowing:u,hideSlot:a,hideAllSlots:function(t){return c(t,e())},showSlot:s}}}function J1(t,e){ml(t,e,"overflow").each(function(n){O1(t,e,function(t){var e=B(t,function(t){return Eu(t)});IO.setGroups(n,e)}),ml(t,e,"overflow-button").each(function(t){t_.hasGrown(n)&&Rg.on(t)}),t_.refresh(n)})}var $1,Q1,Z1,tO="data-value",eO=function(e,n,t,o){return B(t,function(t){return oC(t)?{type:"togglemenuitem",text:t.text,value:t.value,active:t.value===o,onAction:function(){Df.setValue(e,t.value),br(e,bx,{name:n}),Mg.focus(e)}}:{type:"nestedmenuitem",text:t.text,getSubmenuItems:function(){return eO(e,n,t.items,o)}}})},nO=function(t,e){return K(t,function(t){return oC(t)?ot(t.value===e,t):nO(t.items,e)})},oO=kl({name:"HtmlSelect",configFields:[mo("options"),Zs("selectBehaviours",[Mg,Df]),Eo("selectClasses",[]),Eo("selectAttributes",{}),wo("data")],factory:function(n,t){var e=B(n.options,function(t){return{dom:{tag:"option",value:t.value,innerHtml:t.text}}}),o=n.data.map(function(t){return sr("initialValue",t)}).getOr({});return{uid:n.uid,dom:{tag:"select",classes:n.selectClasses,attributes:n.selectAttributes},components:e,behaviours:el(n.selectBehaviours,[Mg.config({}),Df.config({store:lt({mode:"manual",getValue:function(t){return Qr(t.element)},setValue:function(t,e){N(n.options,function(t){return t.value===e}).isSome()&&Zr(t.element,e)}},o)})])}}}),rO=Object.freeze({__proto__:null,events:function(t,e){var n=t.stream.streams.setup(t,e);return nu([Cr(t.event,n),ru(function(){return e.cancel()})].concat(t.cancelEvent.map(function(t){return[Cr(t,function(){return e.cancel()})]}).getOr([])))}}),iO=Object.freeze({__proto__:null,throttle:uC,init:function(t){return t.stream.streams.state(t)}}),uO=xa({fields:[go("stream",lo("mode",{throttle:[mo("delay"),Eo("stopEvent",!0),ta("streams",{setup:function(t,e){var n=t.stream,o=hh(t.onStream,n.delay);return e.setTimer(o),function(t,e){o.throttle(t,e),n.stopEvent&&e.stop()}},state:uC})]})),Eo("event","input"),wo("cancelEvent"),Qu("onStream")],name:"streaming",active:rO,state:iO}),aO=function(t){cC(t,function(t,e){return t.setSelectionRange(e.length,e.length)})},cO=rt("alloy.typeahead.itemexecute"),sO=rt([wo("lazySink"),mo("fetch"),Eo("minChars",5),Eo("responseTime",1e3),Ju("onOpen"),Eo("getHotspot",vt.some),Eo("getAnchorOverrides",rt({})),Eo("layouts",vt.none()),Eo("eventOrder",{}),No("model",{},[Eo("getDisplayText",function(t){return void 0!==t.meta&&void 0!==t.meta.text?t.meta.text:t.value}),Eo("selectsOver",!0),Eo("populateFromBrowse",!0)]),Ju("onSetValue"),$u("onExecute"),Ju("onItemExecute"),Eo("inputClasses",[]),Eo("inputAttributes",{}),Eo("inputStyles",{}),Eo("matchWidth",!0),Eo("useMinWidth",!1),Eo("dismissOnBlur",!0),qu(["openClass"]),wo("initialData"),Zs("typeaheadBehaviours",[Mg,Df,uO,Tg,Rg,Jx]),cr("previewing",function(){return Po(!0)})].concat(Tx()).concat(i0())),lO=rt([$f({schema:[Yu()],name:"menu",overrides:function(o){return{fakeFocus:!0,onHighlight:function(e,n){o.previewing.get()?e.getSystem().getByUid(o.uid).each(function(t){!function(t,e,o){if(t.selectsOver){var n=Df.getValue(e),r=t.getDisplayText(n),i=Df.getValue(o);return 0===t.getDisplayText(i).indexOf(r)?vt.some(function(){var n;aC(0,e,o),n=r.length,cC(e,function(t,e){return t.setSelectionRange(n,e.length)})}):vt.none()}return vt.none()}(o.model,t,n).fold(function(){return hd.dehighlight(e,n)},function(t){return t()})}):e.getSystem().getByUid(o.uid).each(function(t){o.model.populateFromBrowse&&aC(o.model,t,n)}),o.previewing.set(!1)},onExecute:function(t,e){return t.getSystem().getByUid(o.uid).toOptional().map(function(t){return br(t,cO(),{item:e}),!0})},onHover:function(t,e){o.previewing.set(!1),t.getSystem().getByUid(o.uid).each(function(t){o.model.populateFromBrowse&&aC(o.model,t,e)})}}}})]),fO=Cl({name:"Typeahead",configFields:sO(),partFields:lO(),factory:function(r,t,e,i){function n(t,e,n){r.previewing.set(!1);var o=Jx.getCoupled(t,"sandbox");bf.isOpen(o)?cd.getCurrent(o).each(function(t){hd.getHighlighted(t).fold(function(){n(t)},function(){wr(o,t.element,"keydown",e)})}):t0(r,u(t),t,o,i,function(t){cd.getCurrent(t).each(n)},Px.HighlightFirst).get(st)}function u(n){return function(t){return t.map(function(t){var e=H(Z(t.menus),function(t){return F(t.items,function(t){return"item"===t.type})});return Df.getState(n).update(B(e,function(t){return t.data})),t})}}var o=ox(r),a=[Mg.config({}),Df.config({onSetValue:r.onSetValue,store:lt({mode:"dataset",getDataKey:function(t){return Qr(t.element)},getFallbackEntry:function(t){return{value:t,meta:{}}},setValue:function(t,e){Zr(t.element,r.model.getDisplayText(e))}},r.initialData.map(function(t){return sr("initialValue",t)}).getOr({}))}),uO.config({stream:{mode:"throttle",delay:r.responseTime,stopEvent:!1},onStream:function(t,e){var n,o=Jx.getCoupled(t,"sandbox");Mg.isFocused(t)&&Qr(t.element).length>=r.minChars&&(n=cd.getCurrent(o).bind(function(t){return hd.getHighlighted(t).map(Df.getValue)}),r.previewing.set(!0),t0(r,u(t),t,o,i,function(t){cd.getCurrent(o).each(function(t){n.fold(function(){r.model.selectsOver&&hd.highlightFirst(t)},function(e){hd.highlightBy(t,function(t){return Df.getValue(t).value===e.value}),hd.getHighlighted(t).orThunk(function(){return hd.highlightFirst(t),vt.none()})})})},Px.HighlightFirst).get(st))},cancelEvent:Hi()}),Tg.config({mode:"special",onDown:function(t,e){return n(t,e,hd.highlightFirst),vt.some(!0)},onEscape:function(t){var e=Jx.getCoupled(t,"sandbox");return bf.isOpen(e)?(bf.close(e),vt.some(!0)):vt.none()},onUp:function(t,e){return n(t,e,hd.highlightLast),vt.some(!0)},onEnter:function(e){var t=Jx.getCoupled(e,"sandbox"),n=bf.isOpen(t);if(n&&!r.previewing.get())return cd.getCurrent(t).bind(function(t){return hd.getHighlighted(t)}).map(function(t){return br(e,cO(),{item:t}),!0});var o=Df.getValue(e);return vr(e,Hi()),r.onExecute(t,e,o),n&&bf.close(t),vt.some(!0)}}),Rg.config({toggleClass:r.markers.openClass,aria:{mode:"expanded"}}),Jx.config({others:{sandbox:function(t){return o0(r,t,{onOpen:function(){return Rg.on(t)},onClose:function(){return Rg.off(t)}})}}}),mm("typeaheadevents",[uu(function(t){e0(r,u(t),t,i,st,Px.HighlightFirst).get(st)}),Cr(cO(),function(t,e){var n=Jx.getCoupled(t,"sandbox");aC(r.model,t,e.event.item),vr(t,Hi()),r.onItemExecute(t,n,e.event.item,Df.getValue(t)),bf.close(n),aO(t)})].concat(r.dismissOnBlur?[Cr(Bi(),function(t){var e=Jx.getCoupled(t,"sandbox");_a(e.element).isNone()&&bf.close(e)})]:[]))];return{uid:r.uid,dom:rx(Yo(r,{inputAttributes:{role:"combobox","aria-autocomplete":"list","aria-haspopup":"true"}})),behaviours:lt(lt({},o),el(r.typeaheadBehaviours,a)),eventOrder:r.eventOrder}}}),dO=function(i){return lt(lt({},i),{toCached:function(){return dO(i.toCached())},bindFuture:function(e){return dO(i.bind(function(t){return t.fold(function(t){return Wx(Nn.error(t))},function(t){return e(t)})}))},bindResult:function(e){return dO(i.map(function(t){return t.bind(e)}))},mapResult:function(e){return dO(i.map(function(t){return t.map(e)}))},mapError:function(e){return dO(i.map(function(t){return t.mapError(e)}))},foldResult:function(e,n){return i.map(function(t){return t.fold(e,n)})},withTimeout:function(t,r){return dO(jx(function(e){var n=!1,o=setTimeout(function(){n=!0,e(Nn.error(r()))},t);i.get(function(t){n||(clearTimeout(o),e(t))})}))}})},mO=function(t){return dO(jx(t))},gO={type:"separator"},pO=Ir("aria-invalid"),hO={bar:gC(function(t,e){return n=e.shared,{dom:{tag:"div",classes:["tox-bar","tox-form__controls-h-stack"]},components:B(t.items,n.interpreter)};var n}),collection:gC(function(t,e){return u=t,a=e.shared.providers,c=u.label.map(function(t){return nx(t,a)}),s=n(function(t,e,n,o){e.stop(),a.isDisabled()||br(t,wx,{name:u.name,value:o})}),l=[Cr(vi(),n(function(t,e,n){ka(n)})),Cr(Ci(),s),Cr(Ni(),s),Cr(bi(),n(function(t,e,n){Iu(t.element,"."+Av).each(function(t){qr(t,Av)}),Yr(n,Av)})),Cr(yi(),n(function(t){Iu(t.element,"."+Av).each(function(t){qr(t,Av)})})),uu(n(function(t,e,n,o){br(t,wx,{name:u.name,value:o})}))],ex(c,dx.parts.field({dom:{tag:"div",classes:["tox-collection"].concat(1!==u.columns?["tox-collection--grid"]:["tox-collection--list"])},components:[],factory:{sketch:h},behaviours:ec([gd.config({disabled:a.isDisabled,onDisabled:function(t){o(t,function(t){Yr(t,"tox-collection__item--state-disabled"),oe(t,"aria-disabled",!0)})},onEnabled:function(t){o(t,function(t){qr(t,"tox-collection__item--state-disabled"),ce(t,"aria-disabled")})}}),gb(),Dg.config({}),Df.config({store:{mode:"memory",initialValue:[]},onSetValue:function(o,t){var e=o,n=B(t,function(t){var e=fh.translate(t.text),n=1===u.columns?'<div class="tox-collection__item-label">'+e+"</div>":"",o='<div class="tox-collection__item-icon">'+t.icon+"</div>",r={_:" "," - ":" ","-":" "},i=e.replace(/\_| \- |\-/g,function(t){return r[t]});return'<div class="tox-collection__item'+(a.isDisabled()?" tox-collection__item--state-disabled":"")+'" tabindex="-1" data-collection-item-value="'+px.encodeAllRaw(t.value)+'" title="'+i+'" aria-label="'+i+'">'+o+n+"</div>"}),r=B("auto"!==u.columns&&1<u.columns?p(n,u.columns):[n],function(t){return'<div class="tox-collection__group">'+t.join("")+"</div>"});Mr(e.element,r.join("")),"auto"===u.columns&&uv(o,5,"tox-collection__item").each(function(t){var e=t.numRows,n=t.numColumns;Tg.setGridSize(o,e,n)}),vr(o,_x)}}),gx.config({}),Tg.config(1===(i=u.columns)?{mode:"menu",moveOnTab:!1,selector:".tox-collection__item"}:"auto"===i?{mode:"flatgrid",selector:".tox-collection__item",initSize:{numColumns:1,numRows:1}}:{mode:"matrix",selectors:{row:".tox-collection__group",cell:"."+kv}}),mm("collection-events",l)]),eventOrder:((r={})[Ii()]=["disabling","alloy.base.behaviour","collection-events"],r)}),["tox-form__group--collection"],[]);function n(o){return function(e,n){Ru(n.event.target,"[data-collection-item-value]").each(function(t){o(e,n,t,ie(t,"data-collection-item-value"))})}}function o(t,e){return B(vs(t.element,".tox-collection__item"),e)}var u,a,r,i,c,s,l}),alertbanner:gC(function(t,e){return o=e.shared.providers,sx.sketch({dom:{tag:"div",attributes:{role:"alert"},classes:["tox-notification","tox-notification--in","tox-notification--"+(n=t).level]},components:[{dom:{tag:"div",classes:["tox-notification__icon"]},components:[ip.sketch({dom:{tag:"button",classes:["tox-button","tox-button--naked","tox-button--icon"],innerHtml:uh(n.icon,o.icons),attributes:{title:o.translate(n.iconTooltip)}},action:function(t){br(t,wx,{name:"alert-banner",value:n.url})},buttonBehaviours:ec([ah()])})]},{dom:{tag:"div",classes:["tox-notification__body"],innerHtml:o.translate(n.text)}}]});var n,o}),input:gC(function(t,e){return o=e.shared.providers,iC({name:(n=t).name,multiline:!1,label:n.label,inputMode:n.inputMode,placeholder:n.placeholder,flex:!1,disabled:n.disabled,classname:"tox-textfield",validation:vt.none(),maximized:n.maximized},o);var n,o}),textarea:gC(function(t,e){return o=e.shared.providers,iC({name:(n=t).name,multiline:!0,label:n.label,inputMode:vt.none(),placeholder:n.placeholder,flex:!0,disabled:n.disabled,classname:"tox-textarea",validation:vt.none(),maximized:n.maximized},o);var n,o}),label:gC(function(t,e){return r={dom:{tag:"label",innerHtml:(o=e.shared).providers.translate((n=t).label),classes:["tox-label"]}},i=B(n.items,o.interpreter),{dom:{tag:"div",classes:["tox-form__group"]},components:[r].concat(i),behaviours:ec([uS(),Dg.config({}),aS(vt.none()),Tg.config({mode:"acyclic"})])};var n,o,r,i}),iframe:($1=function(t,e){return n=t,o=e.shared.providers,u=vk&&n.sandboxed,a=lt(lt({},n.label.map(function(t){return{title:t}}).getOr({})),u?{sandbox:"allow-scripts allow-same-origin"}:{}),r=u,i=Po(""),c={getValue:function(t){return i.get()},setValue:function(t,e){var n;r?oe(t.element,"srcdoc",e):(oe(t.element,"src","javascript:''"),(n=t.element.dom.contentWindow.document).open(),n.write(e),n.close()),i.set(e)}},ex(n.label.map(function(t){return nx(t,o)}),dx.parts.field({factory:{sketch:function(t){return fw({uid:t.uid,dom:{tag:"iframe",attributes:a},behaviours:ec([gx.config({}),Mg.config({}),mk(vt.none(),c.getValue,c.setValue)])})}}}),["tox-form__group--stretched"],[]);var n,o,r,i,u,a,c},function(t,e,n){var o=Yo(e,{source:"dynamic"});return gC($1)(t,o,n)}),button:gC(function(t,e){return n=t,o=e.shared.providers,r=Jw(n.name,"custom"),ex(vt.none(),dx.parts.field(lt({factory:ip},qw(n,vt.some(r),o,[gk(""),uS()]))),[],[]);var n,o,r}),checkbox:gC(function(t,e){return r=t,i=e.shared.providers,u=Df.config({store:{mode:"manual",getValue:function(t){return t.element.dom.checked},setValue:function(t,e){t.element.dom.checked=e}}}),a=dx.parts.field({factory:{sketch:h},dom:{tag:"input",classes:["tox-checkbox__input"],attributes:{type:"checkbox"}},behaviours:ec([uS(),gd.config({disabled:function(){return r.disabled||i.isDisabled()}}),gx.config({}),Mg.config({}),u,Tg.config({mode:"special",onEnter:n,onSpace:n,stopSpaceKeyup:!0}),mm("checkbox-events",[Cr(ki(),function(t,e){br(t,bx,{name:r.name})})])])}),c=dx.parts.label({dom:{tag:"span",classes:["tox-checkbox__label"],innerHtml:i.translate(r.label)},behaviours:ec([hS.config({})])}),s=Lm({dom:{tag:"div",classes:["tox-checkbox__icons"]},components:[o("checked"),o("unchecked")]}),dx.sketch({dom:{tag:"label",classes:["tox-checkbox"]},components:[a,s.asSpec(),c],fieldBehaviours:ec([gd.config({disabled:function(){return r.disabled||i.isDisabled()},disableClass:"tox-checkbox--disabled",onDisabled:function(t){dx.getField(t).each(gd.disable)},onEnabled:function(t){dx.getField(t).each(gd.enable)}}),gb()])});function n(t){return t.element.dom.click(),vt.some(!0)}function o(t){return sh("checked"===t?"selected":"unselected",{tag:"span",classes:["tox-icon","tox-checkbox-icon__"+t]},i.icons)}var r,i,u,a,c,s}),colorinput:gC(function(t,e){return n=t,r=e.shared,i=e.colorinput,c=dx.parts.field({factory:Ex,inputClasses:["tox-textfield"],onSetValue:function(t){return qx.run(t).get(st)},inputBehaviours:ec([gd.config({disabled:r.providers.isDisabled}),gb(),gx.config({}),qx.config({invalidClass:"tox-textbox-field-invalid",getRoot:function(t){return Yt(t.element)},notify:{onValid:function(t){var e=Df.getValue(t);br(t,vS,{color:e})}},validator:{validateOnLoad:!1,validate:function(t){var e=Df.getValue(t);if(0===e.length)return Wx(Nn.value(!0));var n=Mt.fromTag("span");fe(n,"background-color",e);var o=pe(n,"background-color").fold(function(){return Nn.error("blah")},function(t){return Nn.value(e)});return Wx(o)}}})]),selectOnFocus:!1}),s=n.label.map(function(t){return nx(t,r.providers)}),l=Lm((u={dom:{tag:"span",attributes:{"aria-label":r.providers.translate("Color swatch")}},layouts:{onRtl:function(){return[Ya,Xa,$a]},onLtr:function(){return[Xa,Ya,$a]}},components:[],fetch:xy(i.getColors(),i.hasCustomColors()),columns:i.getColorCols(),presets:"color",onItemAction:function(t,n){l.getOpt(t).each(function(e){"custom"===n?i.colorPicker(function(t){t.fold(function(){return vr(e,yS)},function(t){o(e,t),py(t)})},"#ffffff"):o(e,"remove"===n?"":n)})}},pS.sketch({dom:u.dom,components:u.components,toggleClass:"mce-active",dropdownBehaviours:ec([Jb((a=r).providers.isDisabled),gb(),hS.config({}),gx.config({})]),layouts:u.layouts,sandboxClasses:["tox-dialog__popups"],lazySink:a.getSink,fetch:function(e){return jx(function(t){return u.fetch(t)}).map(function(t){return vt.from(Gy(Yo(Cy(Ir("menu-value"),t,function(t){u.onItemAction(e,t)},u.columns,u.presets,wv.CLOSE_ON_EXECUTE,T,a.providers),{movement:Oy(u.columns,u.presets)})))})},parts:{menu:Qh(0,0,u.presets)}}))),dx.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:s.toArray().concat([{dom:{tag:"div",classes:["tox-color-input"]},components:[c,l.asSpec()]}]),fieldBehaviours:ec([mm("form-field-events",[Cr(vS,function(t,e){l.getOpt(t).each(function(t){fe(t.element,"background-color",e.event.color)}),br(t,bx,{name:n.name})}),Cr(bS,function(e,n){dx.getField(e).each(function(t){Df.setValue(t,n.event.value),cd.getCurrent(e).each(Mg.focus)})}),Cr(yS,function(e,t){dx.getField(e).each(function(t){cd.getCurrent(e).each(Mg.focus)})})])])});function o(t,e){br(t,bS,{value:e})}var n,r,i,u,a,c,s,l}),colorpicker:gC(function(t){var r=Lm(uw(aw,function(t){return"tox-"+t}).sketch({dom:{tag:"div",classes:["tox-color-picker-container"],attributes:{role:"presentation"}},onValidHex:function(t){br(t,wx,{name:"hex-valid",value:!0})},onInvalidHex:function(t){br(t,wx,{name:"hex-valid",value:!1})}}));return{dom:{tag:"div"},components:[r.asSpec()],behaviours:ec([Df.config({store:{mode:"manual",getValue:function(t){var e=r.get(t);return cd.getCurrent(e).bind(function(t){return Df.getValue(t).hex}).map(function(t){return"#"+t}).getOr("")},setValue:function(t,e){var n=/^#([a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?)/.exec(e),o=r.get(t);cd.getCurrent(o).fold(function(){console.log("Can not find form")},function(t){Df.setValue(t,{hex:vt.from(n[1]).getOr("")}),ek.getField(t,"hex").each(function(t){vr(t,Si())})})}}}),uS()])}}),dropzone:gC(function(t,e){return sw(t,e.shared.providers)}),grid:gC(function(t,e){return n=e.shared,{dom:{tag:"div",classes:["tox-form__grid","tox-form__grid--"+t.columns+"col"]},components:B(t.items,n.interpreter)};var n}),listbox:gC(function(t,e){return n=t,r=(o=e).shared.providers,i=Y(n.items).filter(oC),u=n.label.map(function(t){return nx(t,r)}),a={dom:{tag:"div",classes:["tox-listboxfield"]},components:[dx.parts.field({dom:{},factory:{sketch:function(t){return Lw({uid:t.uid,text:i.map(function(t){return t.text}),icon:vt.none(),tooltip:n.label,role:vt.none(),fetch:function(t,e){e(Uw(eO(t,n.name,n.items,Df.getValue(t)),wv.CLOSE_ON_EXECUTE,o,!1))},onSetup:rt(st),getApi:rt({}),columns:1,presets:"normal",classes:[],dropdownBehaviours:[gx.config({}),Df.config({store:{mode:"manual",initialValue:i.map(function(t){return t.value}).getOr(""),getValue:function(t){return ie(t.element,tO)},setValue:function(e,t){nO(n.items,t).each(function(t){oe(e.element,tO,t.value),br(e,Rk,{text:t.text})})}}})]},"tox-listbox",o.shared)}}})]},dx.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:ft([u.toArray(),[a]]),fieldBehaviours:ec([gd.config({disabled:rt(n.disabled),onDisabled:function(t){dx.getField(t).each(gd.disable)},onEnabled:function(t){dx.getField(t).each(gd.enable)}})])});var n,o,r,i,u,a}),selectbox:gC(function(t,e){return n=t,o=e.shared.providers,r=B(n.items,function(t){return{text:o.translate(t.text),value:t.value}}),i=n.label.map(function(t){return nx(t,o)}),u={dom:{tag:"div",classes:["tox-selectfield"]},components:ft([[dx.parts.field({dom:{},selectAttributes:{size:n.size},options:r,factory:oO,selectBehaviours:ec([gd.config({disabled:function(){return n.disabled||o.isDisabled()}}),gx.config({}),mm("selectbox-change",[Cr(ki(),function(t,e){br(t,bx,{name:n.name})})])])})],(1<n.size?vt.none():vt.some(sh("chevron-down",{tag:"div",classes:["tox-selectfield__icon-js"]},o.icons))).toArray()])},dx.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:ft([i.toArray(),[u]]),fieldBehaviours:ec([gd.config({disabled:function(){return n.disabled||o.isDisabled()},onDisabled:function(t){dx.getField(t).each(gd.disable)},onEnabled:function(t){dx.getField(t).each(gd.enable)}}),gb()])});var n,o,r,i,u}),sizeinput:gC(function(t,e){return nS(t,e.shared.providers)}),urlinput:gC(function(t,e){return mC(t,e,e.urlinput)}),customeditor:gC(function(n){var o=gc(),e=Lm({dom:{tag:n.tag}}),r=gc();return{dom:{tag:"div",classes:["tox-custom-editor"]},behaviours:ec([mm("custom-editor-events",[ou(function(t){e.getOpt(t).each(function(e){(Tt(n,"init")?n.init(e.element.dom):sk.load(n.scriptId,n.scriptUrl).then(function(t){return t(e.element.dom,n.settings)})).then(function(e){r.on(function(t){e.setValue(t)}),r.clear(),o.set(e)})})})]),Df.config({store:{mode:"manual",getValue:function(){return o.get().fold(function(){return r.get().getOr("")},function(t){return t.getValue()})},setValue:function(t,e){o.get().fold(function(){r.set(e)},function(t){return t.setValue(e)})}}}),uS()]),components:[e.asSpec()]}}),htmlpanel:gC(function(t){return"presentation"===t.presets?sx.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:t.html}}):sx.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:t.html,attributes:{role:"document"}},containerBehaviours:ec([gx.config({}),Mg.config({})])})}),imagetools:gC(function(t,e){return nC(t,e.shared.providers)}),table:gC(function(t,e){return rC(t,e.shared.providers)}),panel:gC(function(t,e){return{dom:{tag:"div",classes:t.classes},components:B(t.items,e.shared.interpreter)}})},vO={field:function(t,e){return e}},bO=function(e,n,o){return tt(hO,n.type).fold(function(){return console.error('Unknown factory type "'+n.type+'", defaulting to container: ',n),n},function(t){return t(e,n,o)})},yO={valignCentre:[],alignCentre:[],alignLeft:[],alignRight:[],right:[],left:[],bottom:[],top:[]},xO=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",format:"bold"},{title:"Italic",format:"italic"},{title:"Underline",format:"underline"},{title:"Strikethrough",format:"strikethrough"},{title:"Superscript",format:"superscript"},{title:"Subscript",format:"subscript"},{title:"Code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Align",items:[{title:"Left",format:"alignleft"},{title:"Center",format:"aligncenter"},{title:"Right",format:"alignright"},{title:"Justify",format:"alignjustify"}]}],wO=function(t){return R(t,function(t,e){if(Tt(e,"items")){var n=wO(e.items);return{customFormats:t.customFormats.concat(n.customFormats),formats:t.formats.concat([{title:e.title,items:n.formats}])}}if(Tt(e,"inline")||Tt(e,"block")||Tt(e,"selector")){var o="custom-"+(y(e.name)?e.name:e.title.toLowerCase());return{customFormats:t.customFormats.concat([{name:o,format:e}]),formats:t.formats.concat([{title:e.title,format:o,icon:e.icon}])}}return lt(lt({},t),{formats:t.formats.concat(e)})},{customFormats:[],formats:[]})},SO=lk.trim,kO=xC("true"),CO=xC("false"),OO=function(t){var e=B(vs(Mt.fromDom(t),"h1,h2,h3,h4,h5,h6,a:not([href])"),function(t){return t.dom});return F(B(F(e,OC),_C).concat(B(F(e,kC),TC)),EC)},_O="tinymce-url-history",TO=od,EO=ed,DO=rt([Eo("shell",!1),mo("makeItem"),Eo("setupItem",st),Af("listBehaviours",[Dg])]),AO=rt([Qf({name:"items",overrides:function(){return{behaviours:ec([Dg.config({})])}}})]),BO=Cl({name:rt("CustomList")(),configFields:DO(),partFields:AO(),factory:function(s,t,e,n){var o=s.shell?{behaviours:[Dg.config({})],components:[]}:{behaviours:[],components:t};return{uid:s.uid,dom:s.dom,components:o.components,behaviours:el(s.listBehaviours,o.behaviours),apis:{setItems:function(a,c){var t;t=a,(s.shell?vt.some(t):ml(t,s,"items")).fold(function(){throw console.error("Custom List was defined to not be a shell, but no item container was specified in components"),new Error("Custom List was defined to not be a shell, but no item container was specified in components")},function(e){var t=Dg.contents(e),n=c.length,o=n-t.length,r=0<o?m(o,function(){return s.makeItem()}):[],i=t.slice(n);St(i,function(t){return Dg.remove(e,t)}),St(r,function(t){return Dg.append(e,t)});var u=Dg.contents(e);St(u,function(t,e){s.setupItem(a,t,c[e],e)})})}}}},apis:{setItems:function(t,e,n){t.setItems(e,n)}}}),MO=rt([mo("dom"),Eo("shell",!0),Zs("toolbarBehaviours",[Dg])]),FO=rt([Qf({name:"groups",overrides:function(){return{behaviours:ec([Dg.config({})])}}})]),IO=Cl({name:"Toolbar",configFields:MO(),partFields:FO(),factory:function(o,t,e,n){var r=o.shell?{behaviours:[Dg.config({})],components:[]}:{behaviours:[],components:t};return{uid:o.uid,dom:o.dom,components:r.components,behaviours:el(o.toolbarBehaviours,r.behaviours),apis:{setGroups:function(t,e){var n;n=t,(o.shell?vt.some(n):ml(n,o,"groups")).fold(function(){throw console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(t){Dg.set(t,e)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(t,e,n){t.setGroups(e,n)}}}),RO=rt([]),NO=Object.freeze({__proto__:null,setup:st,isDocked:T,getBehaviours:RO}),PO=Vo([{static:[]},{absolute:["positionCss"]},{fixed:["positionCss"]}]),VO=function(t,e,n){var o,r,i,u;t.getSystem().isConnected()&&(i=n,u=(r=e).lazyViewport(o=t),i.isDocked()&&JC(o,r,i,u),YC(o,u,i).each(function(t){t.fold(function(){return qC(o,r,i)},function(t){return KC(o,r,i,t)},function(t){JC(o,r,i,u,!0),KC(o,r,i,t)})}))},HO=Object.freeze({__proto__:null,refresh:VO,reset:$C,isDocked:function(t,e,n){return n.isDocked()},getModes:function(t,e,n){return n.getModes()},setModes:function(t,e,n,o){return n.setModes(o)}}),LO=Object.freeze({__proto__:null,events:function(o,r){return nu([Ar(_i(),function(e,n){o.contextual.each(function(t){Kr(e.element,t.transitionClass)&&($r(e.element,[t.transitionClass,t.fadeInClass]),(r.isVisible()?t.onShown:t.onHidden)(e)),n.stop()})}),Cr(ji(),function(t,e){VO(t,o,r)}),Cr(Wi(),function(t,e){$C(t,o,r)})])}}),zO=xa({fields:[To("contextual",[po("fadeInClass"),po("fadeOutClass"),po("transitionClass"),vo("lazyContext"),Ju("onShow"),Ju("onShown"),Ju("onHide"),Ju("onHidden")]),Io("lazyViewport",Fn),Ro("modes",["top","bottom"],er),Ju("onDocked"),Ju("onUndocked")],name:"docking",active:LO,apis:HO,state:Object.freeze({__proto__:null,init:function(t){var e=Po(!1),n=Po(!0),o=gc(),r=Po(t.modes);return wu({isDocked:e.get,setDocked:e.set,getInitialPos:o.get,setInitialPos:o.set,clearInitialPos:o.clear,isVisible:n.get,setVisible:n.set,getModes:r.get,setModes:r.set,readState:function(){return"docked:  "+e.get()+", visible: "+n.get()+", modes: "+r.get().join(",")}})}})}),UO=rt(Ir("toolbar-height-change")),jO={fadeInClass:"tox-editor-dock-fadein",fadeOutClass:"tox-editor-dock-fadeout",transitionClass:"tox-editor-dock-transition"},WO="tox-tinymce--toolbar-sticky-on",GO="tox-tinymce--toolbar-sticky-off",XO=Object.freeze({__proto__:null,setup:function(t,e,n){t.inline||(e.header.isPositionedAtTop()||t.on("ResizeEditor",function(){n().each(zO.reset)}),t.on("ResizeWindow ResizeEditor",function(){n().each(ZC)}),t.on("SkinLoaded",function(){n().each(function(t){zO.isDocked(t)?zO.reset(t):zO.refresh(t)})}),t.on("FullscreenStateChanged",function(){n().each(zO.reset)})),t.on("AfterScrollIntoView",function(b){n().each(function(t){zO.refresh(t);var e,n,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v=t.element;Pd(v)&&(e=b,r=(o=jt(n=v)).dom.defaultView.innerHeight,i=Ie(o),a=He(u=Mt.fromDom(e.elm)),c=xe(u),l=(s=a.y)+c,f=ke(n),d=xe(n),g=(m=f.top)+d,p=Math.abs(m-i.top)<2,h=Math.abs(g-(i.top+r))<2,p&&s<g?Re(i.left,s-d,o):h&&m<l&&Re(i.left,s-r+c+d,o))})}),t.on("PostRender",function(){e1(t,!1)})},isDocked:function(t){return t().map(zO.isDocked).getOr(!1)},getBehaviours:n1}),YO=$o([po("type"),go("items",no([Qo([po("name"),xo("items",er)]),er]))].concat(Ph)),qO=[Co("text"),Co("tooltip"),Co("icon"),vo("fetch"),Io("onSetup",function(){return st})],KO=$o(V([po("type")],qO,!0)),JO=$o([po("type"),Co("tooltip"),Co("icon"),Co("text"),Oo("select"),vo("fetch"),Io("onSetup",function(){return st}),Mo("presets","normal",["normal","color","listpreview"]),Eo("columns",1),vo("onAction"),vo("onItemAction")]),$O=kl({factory:function(e,o){var t={focus:Tg.focusIn,setMenus:function(t,e){var n=B(e,function(e){return Ww(o1({type:"menubutton",text:e.text,fetch:function(t){t(e.getItems())}}).mapError(function(t){return ur(t)}).getOrDie(),"tox-mbtn",o.backstage,vt.some("menuitem"))});Dg.set(t,n)}};return{uid:e.uid,dom:e.dom,components:[],behaviours:ec([Dg.config({}),mm("menubar-events",[ou(function(t){e.onSetup(t)}),Cr(vi(),function(n,t){Iu(n.element,".tox-mbtn--active").each(function(e){Ru(t.event.target,".tox-mbtn").each(function(t){zt(e,t)||n.getSystem().getByDom(e).each(function(e){n.getSystem().getByDom(t).each(function(t){pS.expand(t),pS.close(e),Mg.focus(t)})})})})}),Cr(Ki(),function(n,t){t.event.prevFocus.bind(function(t){return n.getSystem().getByDom(t).toOptional()}).each(function(e){t.event.newFocus.bind(function(t){return n.getSystem().getByDom(t).toOptional()}).each(function(t){pS.isOpen(e)&&(pS.expand(t),pS.close(e))})})})]),Tg.config({mode:"flow",selector:".tox-mbtn",onEscape:function(t){return e.onEscape(t),vt.some(!0)}}),gx.config({})]),apis:t,domModification:{attributes:{role:"menubar"}}}},name:"silver.Menubar",configFields:[mo("dom"),mo("uid"),mo("onEscape"),mo("backstage"),Eo("onSetup",st)],apis:{focus:function(t,e){t.focus(e)},setMenus:function(t,e,n){t.setMenus(e,n)}}}),QO=Object.freeze({__proto__:null,refresh:function(t,e,n){var o;n.isExpanded()&&(ve(t.element,i1(e)),o=u1(e,t.element),fe(t.element,i1(e),o))},grow:function(t,e,n){n.isExpanded()||d1(t,e,n)},shrink:function(t,e,n){n.isExpanded()&&f1(t,e,n)},immediateShrink:function(t,e,n){n.isExpanded()&&l1(t,e,n)},hasGrown:function(t,e,n){return n.isExpanded()},hasShrunk:function(t,e,n){return n.isCollapsed()},isGrowing:m1,isShrinking:g1,isTransitioning:function(t,e,n){return m1(t,e)||g1(t,e)},toggleGrow:function(t,e,n){(n.isExpanded()?f1:d1)(t,e,n)},disableTransitions:a1}),ZO=Object.freeze({__proto__:null,exhibit:function(t,e,n){return zr(e.expanded?{classes:[e.openClass],styles:{}}:{classes:[e.closedClass],styles:sr(e.dimension.property,"0px")})},events:function(n,o){return nu([Ar(_i(),function(t,e){e.event.raw.propertyName===n.dimension.property&&(a1(t,n),o.isExpanded()&&ve(t.element,n.dimension.property),(o.isExpanded()?n.onGrown:n.onShrunk)(t))})])}}),t_=xa({fields:[mo("closedClass"),mo("openClass"),mo("shrinkingClass"),mo("growingClass"),wo("getAnimationRoot"),Ju("onShrunk"),Ju("onStartShrink"),Ju("onGrown"),Ju("onStartGrow"),Eo("expanded",!1),go("dimension",lo("property",{width:[ta("property","width"),ta("getDimension",function(t){return Ce(t)+"px"})],height:[ta("property","height"),ta("getDimension",function(t){return xe(t)+"px"})]}))],name:"sliding",active:ZO,apis:QO,state:Object.freeze({__proto__:null,init:function(t){var e=Po(t.expanded);return wu({isExpanded:function(){return!0===e.get()},isCollapsed:function(){return!1===e.get()},setCollapsed:C(e.set,!1),setExpanded:C(e.set,!0),readState:function(){return"expanded: "+e.get()}})}})}),e_="container",n_=[Zs("slotBehaviours",[])],o_=dt({getSlotNames:function(t,e){return t.getSlotNames(e)},getSlot:function(t,e,n){return t.getSlot(e,n)},isShowing:function(t,e,n){return t.isShowing(e,n)},hideSlot:function(t,e,n){return t.hideSlot(e,n)},hideAllSlots:function(t,e){return t.hideAllSlots(e)},showSlot:function(t,e,n){return t.showSlot(e,n)}},Hr),r_=lt(lt({},o_),{sketch:function(t){var n,e={slot:function(t,e){return n.push(t),cl(e_,p1(t),e)},record:rt(n=[])},o=t(e),r=B(e.record(),function(t){return Jf({name:t,pname:p1(t)})});return Sl(e_,n_,r,K1,o)}}),i_=$o([Co("icon"),Co("tooltip"),Io("onShow",st),Io("onHide",st),Io("onSetup",function(){return st})]),u_=Ir("FixSizeEvent"),a_=Ir("AutoSizeEvent"),c_=Object.freeze({__proto__:null,block:function(t,e,n,o){oe(t.element,"aria-busy",!0);var r=e.getRoot(t).getOr(t),i=ec([Tg.config({mode:"special",onTab:function(){return vt.some(!0)},onShiftTab:function(){return vt.some(!0)}}),Mg.config({})]),u=o(r,i),a=r.getSystem().build(u);Dg.append(r,Eu(a)),a.hasConfigured(Tg)&&e.focus&&Tg.focusIn(a),n.isBlocked()||e.onBlock(t),n.blockWith(function(){return Dg.remove(r,a)})},unblock:function(t,e,n){ce(t.element,"aria-busy"),n.isBlocked()&&e.onUnblock(t),n.clear()}}),s_=xa({fields:[Io("getRoot",vt.none),Fo("focus",!0),Ju("onBlock"),Ju("onUnblock")],name:"blocking",apis:c_,state:Object.freeze({__proto__:null,init:function(){var e=dc();return wu({readState:e.isSet,blockWith:function(t){e.set({destroy:t})},clear:e.clear,isBlocked:e.isSet})}})}),l_=rt([Zs("splitToolbarBehaviours",[Jx]),cr("builtGroups",function(){return Po([])})]),f_=rt([qu(["overflowToggledClass"]),Oo("getOverflowBounds"),mo("lazySink"),cr("overflowGroups",function(){return Po([])})].concat(l_())),d_=rt([Jf({factory:IO,schema:MO(),name:"primary"}),$f({schema:MO(),name:"overflow"}),$f({name:"overflow-button"}),$f({name:"overflow-group"})]),m_=rt(function(t,e){var n=t,o=Math.floor(e);fe(n,"max-width",On.max(n,o,["margin-left","border-left-width","padding-left","padding-right","border-right-width","margin-right"])+"px")}),g_=rt([qu(["toggledClass"]),mo("lazySink"),vo("fetch"),Oo("getBounds"),To("fireDismissalEventInstead",[Eo("event",Yi())]),Uc()]),p_=rt([$f({name:"button",overrides:function(t){return{dom:{attributes:{"aria-haspopup":"true"}},buttonBehaviours:ec([Rg.config({toggleClass:t.markers.toggledClass,aria:{mode:"expanded"},toggleOnExecute:!1})])}}}),$f({factory:IO,schema:MO(),name:"toolbar",overrides:function(e){return{toolbarBehaviours:ec([Tg.config({mode:"cyclic",onEscape:function(t){return ml(t,e,"button").each(Mg.focus),vt.none()}})])}}})]),h_=Cl({name:"FloatingToolbarButton",factory:function(u,t,a,e){return lt(lt({},ip.sketch(lt(lt({},e.button()),{action:function(t){_1(t,e)},buttonBehaviours:Bf({dump:e.button().buttonBehaviours},[Jx.config({others:{toolbarSandbox:function(t){return o=t,n=a,r=u,{dom:{tag:"div",attributes:{id:(i=Nu()).id}},behaviours:ec([Tg.config({mode:"special",onEscape:function(t){return bf.close(t),vt.some(!0)}}),bf.config({onOpen:function(t,e){r.fetch().get(function(t){E1(o,e,r,n.layouts,t),i.link(o.element),Tg.focusIn(e)})},onClose:function(){Rg.off(o),Mg.focus(o),i.unlink(o.element)},isPartOf:function(t,e,n){return Hu(e,n)||Hu(o,n)},getAttachPoint:function(){return r.lazySink(o).getOrDie()}}),ic.config({channels:lt(lt({},Xs(lt({isExtraPart:T},r.fireDismissalEventInstead.map(function(t){return{fireEventInstead:{event:t.event}}}).getOr({})))),Ys({doReposition:function(){bf.getState(Jx.getCoupled(o,"toolbarSandbox")).each(function(t){T1(o,t,r,n.layouts)})}}))})])};var o,n,r,i}}})])}))),{apis:{setGroups:function(e,n){bf.getState(Jx.getCoupled(e,"toolbarSandbox")).each(function(t){E1(e,t,u,a.layouts,n)})},reposition:function(e){bf.getState(Jx.getCoupled(e,"toolbarSandbox")).each(function(t){T1(e,t,u,a.layouts)})},toggle:function(t){_1(t,e)},getToolbar:function(t){return bf.getState(Jx.getCoupled(t,"toolbarSandbox"))},isOpen:function(t){return bf.isOpen(Jx.getCoupled(t,"toolbarSandbox"))}}})},configFields:g_(),partFields:p_(),apis:{setGroups:function(t,e,n){t.setGroups(e,n)},reposition:function(t,e){t.reposition(e)},toggle:function(t,e){t.toggle(e)},getToolbar:function(t,e){return t.getToolbar(e)},isOpen:function(t,e){return t.isOpen(e)}}}),v_=rt([mo("items"),qu(["itemSelector"]),Zs("tgroupBehaviours",[Tg])]),b_=rt([Zf({name:"items",unit:"item"})]),y_=Cl({name:"ToolbarGroup",configFields:v_(),partFields:b_(),factory:function(t,e,n,o){return{uid:t.uid,dom:t.dom,components:e,behaviours:el(t.tgroupBehaviours,[Tg.config({mode:"flow",selector:t.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),x_=Cl({name:"SplitFloatingToolbar",configFields:f_(),partFields:d_(),factory:function(n,t,e,o){var r=Lm(h_.sketch({fetch:function(){return jx(function(t){t(D1(n.overflowGroups.get()))})},layouts:{onLtr:function(){return[Ya,Xa]},onRtl:function(){return[Xa,Ya]},onBottomLtr:function(){return[Ka,qa]},onBottomRtl:function(){return[qa,Ka]}},getBounds:e.getOverflowBounds,lazySink:n.lazySink,fireDismissalEventInstead:{},markers:{toggledClass:n.markers.overflowToggledClass},parts:{button:o["overflow-button"](),toolbar:o.overflow()}}));return{uid:n.uid,dom:n.dom,components:t,behaviours:el(n.splitToolbarBehaviours,[Jx.config({others:{overflowGroup:function(){return y_.sketch(lt(lt({},o["overflow-group"]()),{items:[r.asSpec()]}))}}})]),apis:{setGroups:function(t,e){n.builtGroups.set(B(e,t.getSystem().build)),A1(t,r,n)},refresh:function(t){return A1(t,r,n)},toggle:function(t){r.getOpt(t).each(function(t){h_.toggle(t)})},isOpen:function(t){return r.getOpt(t).map(h_.isOpen).getOr(!1)},reposition:function(t){r.getOpt(t).each(function(t){h_.reposition(t)})},getOverflow:function(t){return r.getOpt(t).bind(h_.getToolbar)}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(t,e,n){t.setGroups(e,n)},refresh:function(t,e){t.refresh(e)},reposition:function(t,e){t.reposition(e)},toggle:function(t,e){t.toggle(e)},isOpen:function(t,e){return t.isOpen(e)},getOverflow:function(t,e){return t.getOverflow(e)}}}),w_=rt([qu(["closedClass","openClass","shrinkingClass","growingClass","overflowToggledClass"]),Ju("onOpened"),Ju("onClosed")].concat(l_())),S_=rt([Jf({factory:IO,schema:MO(),name:"primary"}),Jf({factory:IO,schema:MO(),name:"overflow",overrides:function(e){return{toolbarBehaviours:ec([t_.config({dimension:{property:"height"},closedClass:e.markers.closedClass,openClass:e.markers.openClass,shrinkingClass:e.markers.shrinkingClass,growingClass:e.markers.growingClass,onShrunk:function(t){ml(t,e,"overflow-button").each(function(t){Rg.off(t),Mg.focus(t)}),e.onClosed(t)},onGrown:function(t){Tg.focusIn(t),e.onOpened(t)},onStartGrow:function(t){ml(t,e,"overflow-button").each(Rg.on)}}),Tg.config({mode:"acyclic",onEscape:function(t){return ml(t,e,"overflow-button").each(Mg.focus),vt.some(!0)}})])}}}),$f({name:"overflow-button",overrides:function(t){return{buttonBehaviours:ec([Rg.config({toggleClass:t.markers.overflowToggledClass,aria:{mode:"pressed"},toggleOnExecute:!1})])}}}),$f({name:"overflow-group"})]),k_=Cl({name:"SplitSlidingToolbar",configFields:w_(),partFields:S_(),factory:function(o,t,e,n){var r="alloy.toolbar.toggle";return{uid:o.uid,dom:o.dom,components:t,behaviours:el(o.splitToolbarBehaviours,[Jx.config({others:{overflowGroup:function(e){return y_.sketch(lt(lt({},n["overflow-group"]()),{items:[ip.sketch(lt(lt({},n["overflow-button"]()),{action:function(t){vr(e,r)}}))]}))}}}),mm("toolbar-toggle-events",[Cr(r,function(t){B1(t,o)})])]),apis:{setGroups:function(t,e){var n=B(e,t.getSystem().build);o.builtGroups.set(n),J1(t,o)},refresh:function(t){return J1(t,o)},toggle:function(t){return B1(t,o)},isOpen:function(t){return ml(t,o,"overflow").map(t_.hasGrown).getOr(!1)}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(t,e,n){t.setGroups(e,n)},refresh:function(t,e){t.refresh(e)},toggle:function(t,e){t.toggle(e)},isOpen:function(t,e){return t.isOpen(e)}}}),C_=EO.optional({factory:$O,name:"menubar",schema:[mo("backstage")]}),O_=EO.optional({factory:{sketch:function(t){return BO.sketch({uid:t.uid,dom:t.dom,listBehaviours:ec([Tg.config({mode:"acyclic",selector:".tox-toolbar"})]),makeItem:function(){return N1({type:t.type,uid:Ir("multiple-toolbar-item"),cyclicKeying:!1,initGroups:[],providers:t.providers,onEscape:function(){return t.onEscape(),vt.some(!0)}})},setupItem:function(t,e,n,o){IO.setGroups(e,n)},shell:!0})}},name:"multiple-toolbar",schema:[mo("dom"),mo("onEscape")]}),__=EO.optional({factory:{sketch:function(t){return(t.type===vv.sliding?function(t){var e=k_.parts.primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}}),n=k_.parts.overflow({dom:{tag:"div",classes:["tox-toolbar__overflow"]}}),o=R1(t);return k_.sketch(lt(lt({},o),{components:[e,n],markers:{openClass:"tox-toolbar__overflow--open",closedClass:"tox-toolbar__overflow--closed",growingClass:"tox-toolbar__overflow--growing",shrinkingClass:"tox-toolbar__overflow--shrinking",overflowToggledClass:"tox-tbtn--enabled"},onOpened:function(t){t.getSystem().broadcastOn([UO()],{type:"opened"})},onClosed:function(t){t.getSystem().broadcastOn([UO()],{type:"closed"})}}))}:t.type===vv.floating?function(i){var t=R1(i),e=x_.parts.primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}});return x_.sketch(lt(lt({},t),{lazySink:i.getSink,getOverflowBounds:function(){var t=i.moreDrawerData.lazyHeader().element,e=He(t),n=Gt(t),o=He(n),r=Math.max(n.dom.scrollHeight,o.height);return Bn(e.x+4,o.y,e.width-8,r)},parts:lt(lt({},t.parts),{overflow:{dom:{tag:"div",classes:["tox-toolbar__overflow"],attributes:i.attributes}}}),components:[e],markers:{overflowToggledClass:"tox-tbtn--enabled"}}))}:N1)({type:t.type,uid:t.uid,onEscape:function(){return t.onEscape(),vt.some(!0)},cyclicKeying:!1,initGroups:[],getSink:t.getSink,providers:t.providers,moreDrawerData:{lazyToolbar:t.lazyToolbar,lazyMoreButton:t.lazyMoreButton,lazyHeader:t.lazyHeader},attributes:t.attributes})}},name:"toolbar",schema:[mo("dom"),mo("onEscape"),mo("getSink")]}),T_=EO.optional({factory:{sketch:function(t){var e=t.editor,n=t.sticky?n1:RO;return{uid:t.uid,dom:t.dom,components:t.components,behaviours:ec(n(e,t.sharedBackstage))}}},name:"header",schema:[mo("dom")]}),E_=EO.optional({name:"socket",schema:[mo("dom")]}),D_=EO.optional({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"div",classes:["tox-sidebar"],attributes:{role:"complementary"}},components:[{dom:{tag:"div",classes:["tox-sidebar__slider"]},components:[],behaviours:ec([gx.config({}),Mg.config({}),t_.config({dimension:{property:"width"},closedClass:"tox-sidebar--sliding-closed",openClass:"tox-sidebar--sliding-open",shrinkingClass:"tox-sidebar--sliding-shrinking",growingClass:"tox-sidebar--sliding-growing",onShrunk:function(t){cd.getCurrent(t).each(r_.hideAllSlots),vr(t,a_)},onGrown:function(t){vr(t,a_)},onStartGrow:function(t){br(t,u_,{width:pe(t.element,"width").getOr("")})},onStartShrink:function(t){br(t,u_,{width:Ce(t.element)+"px"})}}),Dg.config({}),cd.config({find:function(t){return Y(Dg.contents(t))}})])}],behaviours:ec([ak(0),mm("sidebar-sliding-events",[Cr(u_,function(t,e){fe(t.element,"width",e.event.width)}),Cr(a_,function(t,e){ve(t.element,"width")})])])}}},name:"sidebar",schema:[mo("dom")]}),A_=EO.optional({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"div",attributes:{"aria-hidden":"true"},classes:["tox-throbber"],styles:{display:"none"}},behaviours:ec([Dg.config({}),s_.config({focus:!1}),cd.config({find:function(t){return Y(t.components())}})]),components:[]}}},name:"throbber",schema:[mo("dom")]}),B_=Cl({name:"OuterContainer",factory:function(n,t,e){return{uid:n.uid,dom:n.dom,components:t,apis:{getSocket:function(t){return TO.getPart(t,n,"socket")},setSidebar:function(t,e){TO.getPart(t,n,"sidebar").each(function(t){return v1(t,e)})},toggleSidebar:function(t,e){TO.getPart(t,n,"sidebar").each(function(t){var n=e;cd.getCurrent(t).each(function(e){cd.getCurrent(e).each(function(t){t_.hasGrown(e)?r_.isShowing(t,n)?t_.shrink(e):(r_.hideAllSlots(t),r_.showSlot(t,n)):(r_.hideAllSlots(t),r_.showSlot(t,n),t_.grow(e))})})})},whichSidebar:function(t){return TO.getPart(t,n,"sidebar").bind(b1).getOrNull()},getHeader:function(t){return TO.getPart(t,n,"header")},getToolbar:function(t){return TO.getPart(t,n,"toolbar")},setToolbar:function(t,e){TO.getPart(t,n,"toolbar").each(function(t){t.getApis().setGroups(t,e)})},setToolbars:function(t,e){TO.getPart(t,n,"multiple-toolbar").each(function(t){BO.setItems(t,e)})},refreshToolbar:function(t){TO.getPart(t,n,"toolbar").each(function(t){return t.getApis().refresh(t)})},toggleToolbarDrawer:function(t){TO.getPart(t,n,"toolbar").each(function(e){var t=e.getApis().toggle;null!=t?vt.some(function(t){return t(e)}(t)):vt.none()})},isToolbarDrawerToggled:function(t){return TO.getPart(t,n,"toolbar").bind(function(e){return vt.from(e.getApis().isOpen).map(function(t){return t(e)})}).getOr(!1)},getThrobber:function(t){return TO.getPart(t,n,"throbber")},focusToolbar:function(t){TO.getPart(t,n,"toolbar").orThunk(function(){return TO.getPart(t,n,"multiple-toolbar")}).each(function(t){Tg.focusIn(t)})},setMenubar:function(t,e){TO.getPart(t,n,"menubar").each(function(t){$O.setMenus(t,e)})},focusMenubar:function(t){TO.getPart(t,n,"menubar").each(function(t){$O.focus(t)})}},behaviours:n.behaviours}},configFields:[mo("dom"),mo("behaviours")],partFields:[T_,C_,__,O_,E_,D_,A_],apis:{getSocket:function(t,e){return t.getSocket(e)},setSidebar:function(t,e,n){t.setSidebar(e,n)},toggleSidebar:function(t,e,n){t.toggleSidebar(e,n)},whichSidebar:function(t,e){return t.whichSidebar(e)},getHeader:function(t,e){return t.getHeader(e)},getToolbar:function(t,e){return t.getToolbar(e)},setToolbar:function(t,e,n){var o=B(n,F1);t.setToolbar(e,o)},setToolbars:function(t,e,n){var o=B(n,function(t){return B(t,F1)});t.setToolbars(e,o)},refreshToolbar:function(t,e){return t.refreshToolbar(e)},toggleToolbarDrawer:function(t,e){t.toggleToolbarDrawer(e)},isToolbarDrawerToggled:function(t,e){return t.isToolbarDrawerToggled(e)},getThrobber:function(t,e){return t.getThrobber(e)},setMenubar:function(t,e,n){t.setMenubar(e,n)},focusMenubar:function(t,e){t.focusMenubar(e)},focusToolbar:function(t,e){t.focusToolbar(e)}}}),M_={file:{title:"File",items:"newdocument restoredraft | preview | export print | deleteallconversations"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall | searchreplace"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments"},insert:{title:"Insert",items:"image link media addcomment pageembed template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align lineheight | forecolor backcolor | language | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code wordcount"},table:{title:"Table",items:"inserttable | cell row column | advtablesort | tableprops deletetable"},help:{title:"Help",items:"help"}},F_=C(z1,!1),I_=C(z1,!0);function R_(t,e,n,o){var r;return{type:"basic",data:(r=t.getParam(e,n,"string"),B(o===Q1.SemiColon?r.replace(/;$/,"").split(";"):r.split(" "),function(t){var e=t,n=t,o=t.split("=");return 1<o.length&&(e=o[0],n=o[1]),{title:e,format:n}}))}}function N_(n){var t={type:"basic",data:pT};return{tooltip:"Align",text:vt.none(),icon:vt.some("align-left"),isSelectedFor:function(t){return function(){return n.formatter.match(t)}},getCurrentValue:vt.none,getPreviewFor:function(t){return vt.none},onAction:function(e){return function(){return N(pT,function(t){return t.format===e.format}).each(function(t){return n.execCommand(t.command)})}},updateText:function(t){var e=N(pT,function(t){return n.formatter.match(t.format)}).fold(rt("left"),function(t){return t.title.toLowerCase()});br(t,Nk,{icon:"align-"+e})},dataset:t,shouldHide:!1,isInvalid:function(t){return!n.formatter.canApply(t.format)}}}function P_(t){return B(t.split(/\s*,\s*/),function(t){return t.replace(/^['"]+|['"]+$/g,"")})}function V_(r){function i(){function n(t){return t?P_(t)[0]:""}var t=r.queryCommandValue("FontName"),e=a.data,o=t?t.toLowerCase():"";return{matchOpt:N(e,function(t){var e=t.format;return e.toLowerCase()===o||n(e).toLowerCase()===n(o).toLowerCase()}).orThunk(function(){return ot(0===(t=o).indexOf("-apple-system")&&(e=P_(t.toLowerCase()),L(hT,function(t){return-1<e.indexOf(t.toLowerCase())})),{title:u,format:o});var t,e}),font:t}}var u="System Font",a=R_(r,"font_formats","Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",Q1.SemiColon);return{tooltip:"Fonts",text:vt.some(u),icon:vt.none(),isSelectedFor:function(e){return function(t){return t.exists(function(t){return t.format===e})}},getCurrentValue:function(){return i().matchOpt},getPreviewFor:function(t){return function(){return vt.some({tag:"div",styles:-1===t.indexOf("dings")?{"font-family":t}:{}})}},onAction:function(t){return function(){r.undoManager.transact(function(){r.focus(),r.execCommand("FontName",!1,t.format)})}},updateText:function(t){var e=i(),n=e.matchOpt,o=e.font,r=n.fold(rt(o),function(t){return t.title});br(t,Rk,{text:r})},dataset:a,shouldHide:!1,isInvalid:T}}function H_(n){function i(){var a=vt.none(),c=o.data,s=n.queryCommandValue("FontSize");if(s)for(var t=function(t){var e,n,o,r,i=(n=t,/[0-9.]+px$/.test(e=s)?(o=72*parseInt(e,10)/96,r=Math.pow(10,n||0),Math.round(o*r)/r+"pt"):tt(bT,e).getOr(e)),u=tt(vT,i).getOr("");a=N(c,function(t){return t.format===s||t.format===i||t.format===u})},e=3;a.isNone()&&0<=e;e--)t(e);return{matchOpt:a,size:s}}var t=rt(vt.none),o=R_(n,"fontsize_formats","8pt 10pt 12pt 14pt 18pt 24pt 36pt",Q1.Space);return{tooltip:"Font sizes",text:vt.some("12pt"),icon:vt.none(),isSelectedFor:function(e){return function(t){return t.exists(function(t){return t.format===e})}},getPreviewFor:t,getCurrentValue:function(){return i().matchOpt},onAction:function(t){return function(){n.undoManager.transact(function(){n.focus(),n.execCommand("FontSize",!1,t.format)})}},updateText:function(t){var e=i(),n=e.matchOpt,o=e.size,r=n.fold(rt(o),function(t){return t.title});br(t,Rk,{text:r})},dataset:o,shouldHide:!1,isInvalid:T}}function L_(t,e){var n=e(),o=B(n,function(t){return t.format});return vt.from(t.formatter.closest(o)).bind(function(e){return N(n,function(t){return t.format===e})}).orThunk(function(){return ot(t.formatter.match("p"),{title:"Paragraph",format:"p"})})}function z_(n){var o=R_(n,"block_formats","Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre",Q1.SemiColon);return{tooltip:"Blocks",text:vt.some("Paragraph"),icon:vt.none(),isSelectedFor:function(t){return function(){return n.formatter.match(t)}},getCurrentValue:vt.none,getPreviewFor:function(e){return function(){var t=n.formatter.get(e);return vt.some({tag:0<t.length&&(t[0].inline||t[0].block)||"div",styles:n.dom.parseStyle(n.formatter.getCssText(e))})}},onAction:W1(n),updateText:function(t){var e=L_(n,function(){return o.data}).fold(rt("Paragraph"),function(t){return t.title});br(t,Rk,{text:e})},dataset:o,shouldHide:!1,isInvalid:function(t){return!n.formatter.canApply(t.format)}}}function U_(r,t){return{tooltip:"Formats",text:vt.some("Paragraph"),icon:vt.none(),isSelectedFor:function(t){return function(){return r.formatter.match(t)}},getCurrentValue:vt.none,getPreviewFor:function(e){return function(){var t=r.formatter.get(e);return void 0!==t?vt.some({tag:0<t.length&&(t[0].inline||t[0].block)||"div",styles:r.dom.parseStyle(r.formatter.getCssText(e))}):vt.none()}},onAction:W1(r),updateText:function(t){var n=function(t){var e=t.items;return void 0!==e&&0<e.length?H(e,n):[{title:t.title,format:t.format}]},e=H(vC(r),n),o=L_(r,rt(e)).fold(rt("Paragraph"),function(t){return t.title});br(t,Rk,{text:o})},shouldHide:r.getParam("style_formats_autohide",!1,"boolean"),isInvalid:function(t){return!r.formatter.canApply(t.format)},dataset:t}}function j_(e){return{isDisabled:function(){return gd.isDisabled(e)},setDisabled:function(t){return gd.set(e,t)}}}function W_(e){return{setActive:function(t){Rg.set(e,t)},isActive:function(){return Rg.isOn(e)},isDisabled:function(){return gd.isDisabled(e)},setDisabled:function(t){return gd.set(e,t)}}}function G_(t,e){return t.map(function(t){return{"aria-label":e.translate(t),title:e.translate(t)}}).getOr({})}function X_(e,n,t,o,r,i){var u;return{dom:{tag:"button",classes:["tox-tbtn"].concat(n.isSome()?["tox-tbtn--select"]:[]),attributes:G_(t,i)},components:Zb([e.map(function(t){return Pw(t,i.icons)}),n.map(function(t){return Hw(t,"tox-tbtn",i)})]),eventOrder:((u={})[mi()]=["focusing","alloy.base.behaviour","common-button-display-events"],u),buttonBehaviours:ec([$b(i.isDisabled),gb(),mm("common-button-display-events",[Cr(mi(),function(t,e){e.event.prevent(),vr(t,OT)})])].concat(o.map(function(t){return wT.config({channel:t,initialData:{icon:e,text:n},renderComponents:function(t,e){return Zb([t.icon.map(function(t){return Pw(t,i.icons)}),t.text.map(function(t){return Hw(t,"tox-tbtn",i)})])}})}).toArray()).concat(r.getOr([])))}}function Y_(t,e,n){var o,r=Po(st),i=X_(t.icon,t.text,t.tooltip,vt.none(),vt.none(),n);return ip.sketch({dom:i.dom,components:i.components,eventOrder:Ik,buttonBehaviours:ec([mm("toolbar-button-events",[(o={onAction:t.onAction,getApi:e.getApi},uu(function(e,t){pb(o,e)(function(t){br(e,Fk,{buttonApi:t}),o.onAction(t)})})),hb(e,r),vb(e,r)]),$b(function(){return t.disabled||n.isDisabled()}),gb()].concat(e.toolbarButtonBehaviours))})}function q_(r,i){return function(t,e,n){var o=r(t).mapError(function(t){return ur(t)}).getOrDie();return i(o,e,n)}}function K_(n,t,o,r){var e,i=t.outerContainer,u=o.toolbar,a=o.buttons;f(u,y)?(e=u.map(function(t){var e={toolbar:t,buttons:a,allowToolbarGroups:o.allowToolbarGroups};return BT(n,e,{backstage:r},vt.none())}),B_.setToolbars(i,e)):B_.setToolbar(i,BT(n,o,{backstage:r},vt.none()))}function J_(t){return/^[0-9\.]+(|px)$/i.test(""+t)?vt.some(parseInt(""+t,10)):vt.none()}function $_(t){return u(t)?t+"px":t}function Q_(e,t,n){var o=t.filter(function(t){return e<t}),r=n.filter(function(t){return t<e});return o.or(r).getOr(e)}function Z_(t){var e=sv(t),n=lv(t),o=dv(t);return J_(e).map(function(t){return Q_(t,n,o)})}function tT(u,a,t,e,c){function s(){return x.get()&&!u.removed}function l(t){return y?t.fold(rt(0),function(t){return 1<t.components().length?xe(t.components()[1].element):0}):0}function f(){r.broadcastOn([xf()],{})}function o(t){var e,n,o,r,i;void 0===t&&(t=!1),s()&&(m||(e=p.getOrThunk(function(){var t=J_(ge(bn(),"margin-left")).getOr(0);return Ce(bn())-ke(a).left+t}),fe(c.get().element,"max-width",e+"px")),y&&B_.refreshToolbar(d),m||(n=l(B_.getToolbar(d)),o=Mn(a),r=v()?Math.max(o.y-xe(c.get().element)+n,0):o.bottom,de(d.element,{position:"absolute",top:Math.round(r)+"px",left:Math.round(o.x)+"px"})),g&&(i=c.get(),t?zO.reset(i):zO.refresh(i)),f())}function n(t){var e,n;void 0===t&&(t=!0),!m&&g&&s()&&(e=h.getDockingMode(),(n=function(t){switch(ib(u)){case yv.auto:var e=l(B_.getToolbar(d)),n=xe(t.element)-e,o=Mn(a);if(o.y>n)return"top";var r=Gt(a),i=Math.max(r.dom.scrollHeight,xe(r));return o.bottom<i-n||Fn().bottom<o.bottom-n?"bottom":"top";case yv.bottom:return"bottom";default:return yv.top,"top"}}(c.get()))!==e&&(function(t){var e=c.get();zO.setModes(e,[t]),h.setDockingMode(t);var n=v()?Oc.TopToBottom:Oc.BottomToTop;oe(e.element,ns,n)}(n),t&&o(!0)))}var r=t.uiMothership,d=t.outerContainer,i=eb.DOM,m=cb(u),g=fb(u),p=dv(u).or(Z_(u)),h=e.shared.header,v=h.isPositionedAtTop,b=rb(u),y=b===vv.sliding||b===vv.floating,x=Po(!1);return{isVisible:s,isPositionedAtTop:v,show:function(){x.set(!0),fe(d.element,"display","flex"),i.addClass(u.getBody(),"mce-edit-focus"),ve(r.element,"display"),n(!1),o()},hide:function(){x.set(!1),t.outerContainer&&(fe(d.element,"display","none"),i.removeClass(u.getBody(),"mce-edit-focus")),fe(r.element,"display","none")},update:o,updateMode:n,repositionPopups:f}}function eT(t,e){var n=Mn(t);return{pos:e?n.y:n.bottom,bounds:n}}function nT(i,u){return Cr(Fk,function(t,e){var n,o=i.get(t),r=(n=o,{hide:function(){return vr(n,Vi())},getValue:function(){return Df.getValue(n)}});u.onAction(r,e.event.buttonApi)})}function oT(t,e,n){return e.bottom-t.y>=(n=void 0===n?.01:n)&&t.bottom-e.y>=n}function rT(t){var e=function(t){var e=t.getBoundingClientRect();if(e.height<=0&&e.width<=0){var n=Qt(Mt.fromDom(t.startContainer),t.startOffset).element;return(Xe(n)?Yt(n):vt.some(n)).filter(Ge).map(function(t){return t.dom.getBoundingClientRect()}).getOr(e)}return e}(t.selection.getRng());if(t.inline){var n=Ie();return Bn(n.left+e.left,n.top+e.top,e.width,e.height)}var o=He(Mt.fromDom(t.getBody()));return Bn(o.x+e.left,o.y+e.top,e.width,e.height)}function iT(t,e,n,o){void 0===o&&(o=0);var r,i,u,a,c=Pe(window),s=Mn(Mt.fromDom(t.getContentAreaContainer())),l=gv(t)||pv(t)||ob(t),f=(r=s,i=c,u=o,{x:a=Math.max(r.x+u,i.x),width:Math.min(r.right-u,i.right)-a}),d=f.x,m=f.width;if(t.inline&&!l)return Bn(d,c.y,m,c.height);var g=function(t,e,n,o,r,i){var u=Mt.fromDom(t.getContainer()),a=Iu(u,".tox-editor-header").getOr(u),c=Mn(a),s=c.y>=e.bottom,l=o&&!s;if(t.inline&&l)return{y:Math.max(c.bottom+i,n.y),bottom:n.bottom};if(t.inline&&!l)return{y:n.y,bottom:Math.min(c.y-i,n.bottom)};var f="line"===r?Mn(u):e;return l?{y:Math.max(c.bottom+i,n.y),bottom:Math.min(f.bottom-i,n.bottom)}:{y:Math.max(f.y+i,n.y),bottom:Math.min(c.y-i,n.bottom)}}(t,s,c,e.header.isPositionedAtTop(),n,o),p=g.y,h=g.bottom;return Bn(d,p,m,h-p)}function uT(t){return"node"===t}function aT(t,r,e,i,n){var u=rT(t),o=i.lastElement().exists(function(t){return zt(e,t)}),a=e,c=t.selection.getRng(),s=Qt(Mt.fromDom(c.startContainer),c.startOffset);return c.startContainer===c.endContainer&&c.startOffset===c.endOffset-1&&zt(s.element,a)?o?Nm:np:o?function(e,t){var n=pe(e,"position");fe(e,"position",t);var o=oT(u,Mn(r))&&!i.isReposition()?Vm:Nm;return n.each(function(t){return fe(e,"position",t)}),o}(r,i.getMode()):("fixed"===i.getMode()?n.y+Ie().top:n.y)+(xe(r)+12)<=u.y?np:op}function cT(e,t){var n=M(F(t,function(t){return t.predicate(e.dom)}),function(t){return"contexttoolbar"===t.type});return{contextToolbars:n.pass,contextForms:n.fail}}function sT(n,t){function o(t){return zt(t,r)}var e,r=Mt.fromDom(t.getBody()),i=Mt.fromDom(t.selection.getNode());return o(e=i)||Ut(r,e)?function(t,e,n){var o=cT(t,e);if(0<o.contextForms.length)return vt.some({elem:t,toolbars:[o.contextForms[0]]});var r=cT(t,n);if(0<r.contextForms.length)return vt.some({elem:t,toolbars:[r.contextForms[0]]});if(0<o.contextToolbars.length||0<r.contextToolbars.length){var i=function(t){if(t.length<=1)return t;function e(e){return d(t,function(t){return t.position===e})}function n(e){return F(t,function(t){return t.position===e})}var o=e("selection"),r=e("node");if(o||r){if(r&&o){var i=n("node"),u=B(n("selection"),function(t){return lt(lt({},t),{position:"node"})});return i.concat(u)}return n(o?"selection":"node")}return n("line")}(o.contextToolbars.concat(r.contextToolbars));return vt.some({elem:t,toolbars:i})}return vt.none()}(i,n.inNodeScope,n.inEditorScope).orThunk(function(){return a=n,(t=o)(e=i)?vt.none():dr(e,function(t){if(Ge(t)){var e=cT(t,a.inNodeScope),n=e.contextToolbars,o=e.contextForms,r=0<o.length?o:(u=n).length<=1?u:i("selection").orThunk(function(){return i("node")}).orThunk(function(){return i("line")}).map(function(t){return t.position}).fold(function(){return[]},function(e){return F(u,function(t){return t.position===e})});return 0<r.length?vt.some({elem:t,toolbars:r}):vt.none()}function i(e){return N(u,function(t){return t.position===e})}var u;return vt.none()},t);var t,e,a}):vt.none()}function lT(a,c){var s={},l=[],f=[],d={},m={},t=Ct(a);return St(t,function(t){var e,n,o,r,i,u=a[t];"contextform"===u.type?(o=t,i=co(ao("ContextForm",Yh,r=u)),(s[o]=i).launch.map(function(t){d["form:"+o]=lt(lt({},r.launch),{type:"contextformtogglebutton"===t.type?"togglebutton":"button",onAction:function(){c(i)}})}),("editor"===i.scope?f:l).push(i),m[o]=i):"contexttoolbar"===u.type&&(e=t,ao("ContextToolbar",qh,n=u).each(function(t){("editor"===n.scope?f:l).push(t),m[e]=t}))}),{forms:s,inNodeScope:l,inEditorScope:f,lookupTable:m,formNavigators:d}}function fT(d,t,m,u){function a(){var t=y.get().getOr("node"),e=uT(t)?1:0;return iT(d,p,t,e)}function c(){return!(d.removed||h()&&g.isContextMenuOpen())}function s(){if(c()){var t=a(),e=mt(y.get(),"node")?(n=d,v.get().filter(vn).map(He).getOrThunk(function(){return rT(n)})):rT(d);return t.height<=0||!oT(e,t)}return 1;var n}function e(){v.clear(),b.clear(),y.clear(),tp.hide(x)}function n(){var t;tp.isOpen(x)&&(ve(t=x.element,"display"),s()?fe(t,"display","none"):(b.set(0),tp.reposition(x)))}function l(t){return{dom:{tag:"div",classes:["tox-pop__dialog"]},components:[t],behaviours:ec([Tg.config({mode:"acyclic"}),mm("pop-dialog-wrap-events",[ou(function(t){d.shortcuts.add("ctrl+F9","focus statusbar",function(){return Tg.focusIn(t)})}),ru(function(t){d.shortcuts.remove("ctrl+F9")})])])}}function f(t,e){var n,o,r,i,c,s,u,a="node"===t?p.anchors.node(e):p.anchors.cursor(),l=(n=d,o=t,r=h(),i={lastElement:v.get,isReposition:function(){return mt(b.get(),0)},getMode:function(){return ff.getMode(m)}},"line"===o?{bubble:Sc(12,0,VT),layouts:{onLtr:function(){return[la]},onRtl:function(){return[fa]}},overrides:HT}:{bubble:Sc(0,12,VT,1/12),layouts:(c=n,s=i,u=o,r?{onLtr:function(t){return[$a,Xa,Ya,qa,Ka,Ja].concat(f(t))},onRtl:function(t){return[$a,Ya,Xa,Ka,qa,Ja].concat(f(t))}}:{onLtr:function(t){return[Ja,$a,qa,Xa,Ka,Ya].concat(f(t))},onRtl:function(t){return[Ja,$a,Ka,Ya,qa,Xa].concat(f(t))}}),overrides:HT});function f(t){return uT(u)?[(a=t,function(t,e,n,o,r){var i=aT(c,o,a,s,r),u=lt(lt({},t),{y:r.y,height:r.height});return lt(lt({},i(u,e,n,o,r)),{alwaysFit:!0})})]:[];var a}return Yo(a,l)}function o(t,e){var n,o,r,i;k.cancel(),c()&&(n=S(t),r=f(o=t[0].position,e),y.set(o),b.set(1),ve(i=x.element,"display"),mt(Et(e,v.get(),zt),!0)||(qr(i,WT),ff.reset(m,x)),tp.showWithinBounds(x,l(n),{anchor:r,transition:{classes:[WT],mode:"placement"}},function(){return vt.some(a())}),e.fold(v.clear,v.set),s()&&fe(i,"display","none"))}var r,i,g=u.backstage,p=g.shared,h=ln().deviceType.isTouch,v=gc(),b=gc(),y=gc(),x=Tu((r={sink:m,onEscape:function(){return d.focus(),vt.some(!0)}},i=Po([]),tp.sketch({dom:{tag:"div",classes:["tox-pop"]},fireDismissalEventInstead:{event:"doNotDismissYet"},onShow:function(t){i.set([]),tp.getContent(t).each(function(t){ve(t.element,"visibility")}),qr(t.element,jT),ve(t.element,"width")},inlineBehaviours:ec([mm("context-toolbar-events",[Ar(_i(),function(t,e){"width"===e.event.raw.propertyName&&(qr(t.element,jT),ve(t.element,"width"))}),Cr(UT,function(t,e){var n=t.element;ve(n,"width");var o=Ce(n);tp.setContent(t,e.event.contents),Yr(n,jT);var r=Ce(n);fe(n,"width",o+"px"),tp.getContent(t).each(function(t){e.event.focus.bind(function(t){return ka(t),_a(n)}).orThunk(function(){return Tg.focusIn(t),Oa(gn(n))})}),rp.setTimeout(function(){fe(t.element,"width",r+"px")},0)}),Cr(LT,function(e,t){tp.getContent(e).each(function(t){i.set(i.get().concat([{bar:t,focus:Oa(gn(e.element))}]))}),br(e,UT,{contents:t.event.forwardContents,focus:vt.none()})}),Cr(zT,function(e,t){q(i.get()).each(function(t){i.set(i.get().slice(0,i.get().length-1)),br(e,UT,{contents:Eu(t.bar),focus:t.focus})})})]),Tg.config({mode:"special",onEscape:function(e){return q(i.get()).fold(function(){return r.onEscape()},function(t){return vr(e,zT),vt.some(!0)})}})]),lazySink:function(){return Nn.value(r.sink)}}))),w=Rt(function(){return lT(t,function(t){var e=S([t]);br(x,LT,{forwardContents:l(e)})})}),S=function(t){var e=d.ui.registry.getAll().buttons,n=w(),o=lt(lt({},e),n.formNavigators),r=rb(d)===vv.scrolling?vv.scrolling:vv.default,i=ft(B(t,function(t){return"contexttoolbar"===t.type?BT(d,{buttons:o,toolbar:t.items,allowToolbarGroups:!1},u,vt.some(["form:"])):(e=p.providers,PT(t,e));var e}));return N1({type:r,uid:Ir("context-toolbar"),initGroups:i,onEscape:vt.none,cyclicKeying:!0,providers:p.providers})},k=hh(function(){d.hasFocus()&&!d.removed&&(Kr(x.element,WT)?k.throttle():sT(w(),d).fold(e,function(t){o(t.toolbars,vt.some(t.elem))}))},17);d.on("init",function(){d.on("remove",e),d.on("ScrollContent ScrollWindow ObjectResized ResizeEditor longpress",n),d.on("click keyup focus SetContent",k.throttle),d.on(NT,e),d.on("contexttoolbar-show",function(e){tt(w().lookupTable,e.toolbarKey).each(function(t){o([t],ot(e.target!==d,e.target)),tp.getContent(x).each(Tg.focusIn)})}),d.on("focusout",function(t){rp.setEditorTimeout(d,function(){_a(m.element).isNone()&&_a(x.element).isNone()&&e()},0)}),d.on("SwitchMode",function(){d.mode.isReadOnly()&&e()}),d.on("AfterProgressState",function(t){t.state?e():d.hasFocus()&&k.throttle()}),d.on("NodeChange",function(t){_a(x.element).fold(k.throttle,st)})})}(Z1=Q1=Q1||{})[Z1.SemiColon=0]="SemiColon",Z1[Z1.Space=1]="Space";var dT,mT,gT,pT=[{title:"Left",icon:"align-left",format:"alignleft",command:"JustifyLeft"},{title:"Center",icon:"align-center",format:"aligncenter",command:"JustifyCenter"},{title:"Right",icon:"align-right",format:"alignright",command:"JustifyRight"},{title:"Justify",icon:"align-justify",format:"alignjustify",command:"JustifyFull"}],hT=["-apple-system","Segoe UI","Roboto","Helvetica Neue","sans-serif"],vT={"8pt":"1","10pt":"2","12pt":"3","14pt":"4","18pt":"5","24pt":"6","36pt":"7"},bT={"xx-small":"7pt","x-small":"8pt",small:"10pt",medium:"12pt",large:"14pt","x-large":"18pt","xx-large":"24pt"},yT=Object.freeze({__proto__:null,events:function(r,i){function u(n,o){r.updateState.each(function(t){var e=t(n,o);i.set(e)}),r.renderComponents.each(function(t){var e=B(t(o,i.get()),n.getSystem().build);Rs(n,e)})}return nu([Cr(Fi(),function(t,e){var n,o=e;o.universal||(n=r.channel,wt(o.channels,n)&&u(t,o.data))}),ou(function(e,t){r.initialData.each(function(t){u(e,t)})})])}}),xT=Object.freeze({__proto__:null,getState:function(t,e,n){return n}}),wT=xa({fields:[mo("channel"),wo("renderComponents"),wo("updateState"),wo("initialData")],name:"reflecting",active:yT,apis:xT,state:Object.freeze({__proto__:null,init:function(){var t=Po(vt.none());return{readState:function(){return t.get().getOr("none")},get:t.get,set:t.set,clear:function(){return t.set(vt.none())}}}})}),ST=rt([mo("toggleClass"),mo("fetch"),Qu("onExecute"),Eo("getHotspot",vt.some),Eo("getAnchorOverrides",rt({})),Uc(),Qu("onItemExecute"),wo("lazySink"),mo("dom"),Ju("onOpen"),Zs("splitDropdownBehaviours",[Jx,Tg,Mg]),Eo("matchWidth",!1),Eo("useMinWidth",!1),Eo("eventOrder",{}),wo("role")].concat(i0())),kT=rt([Jf({factory:ip,schema:[mo("dom")],name:"arrow",defaults:function(){return{buttonBehaviours:ec([Mg.revoke()])}},overrides:function(e){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(t){t.getSystem().getByUid(e.uid).each(yr)},buttonBehaviours:ec([Rg.config({toggleOnExecute:!1,toggleClass:e.toggleClass})])}}}),Jf({factory:ip,schema:[mo("dom")],name:"button",defaults:function(){return{buttonBehaviours:ec([Mg.revoke()])}},overrides:function(n){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(e){e.getSystem().getByUid(n.uid).each(function(t){n.onExecute(t,e)})}}}}),Qf({factory:{sketch:function(t){return{uid:t.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:t.text}}}},schema:[mo("text")],name:"aria-descriptor"}),$f({schema:[Yu()],name:"menu",defaults:function(o){return{onExecute:function(e,n){e.getSystem().getByUid(o.uid).each(function(t){o.onItemExecute(t,e,n)})}}}}),Qx()]),CT=Cl({name:"SplitDropdown",configFields:ST(),partFields:kT(),factory:function(o,t,e,n){function r(t){cd.getCurrent(t).each(function(t){hd.highlightFirst(t),Tg.focusIn(t)})}function i(t){e0(o,h,t,n,r,Px.HighlightFirst).get(st)}function u(t){return yr(gl(t,o,"button")),vt.some(!0)}var a,c=lt(lt({},nu([ou(function(n,t){ml(n,o,"aria-descriptor").each(function(t){var e=Ir("aria");oe(t.element,"id",e),oe(n.element,"aria-describedby",e)})})])),Sm(vt.some(i))),s={repositionMenus:function(t){Rg.isOn(t)&&r0(t)}};return{uid:o.uid,dom:o.dom,components:t,apis:s,eventOrder:lt(lt({},o.eventOrder),((a={})[Ii()]=["disabling","toggling","alloy.base.behaviour"],a)),events:c,behaviours:el(o.splitDropdownBehaviours,[Jx.config({others:{sandbox:function(t){var e=gl(t,o,"arrow");return o0(o,t,{onOpen:function(){Rg.on(e),Rg.on(t)},onClose:function(){Rg.off(e),Rg.off(t)}})}}}),Tg.config({mode:"special",onSpace:u,onEnter:u,onDown:function(t){return i(t),vt.some(!0)}}),Mg.config({}),Rg.config({toggleOnExecute:!1,aria:{mode:"expanded"}})]),domModification:{attributes:{role:o.role.getOr("button"),"aria-haspopup":!0}}}},apis:{repositionMenus:function(t,e){return t.repositionMenus(e)}}}),OT=Ir("focus-button"),_T=function(t,e,n){return Y_(t,{toolbarButtonBehaviours:[].concat(0<n.length?[mm("toolbarButtonWith",n)]:[]),getApi:j_,onSetup:t.onSetup},e)},TT=function(t,e,n){return Yo(Y_(t,{toolbarButtonBehaviours:[Dg.config({}),Rg.config({toggleClass:"tox-tbtn--enabled",aria:{mode:"pressed"},toggleOnExecute:!1})].concat(0<n.length?[mm("toolbarToggleButtonWith",n)]:[]),getApi:W_,onSetup:t.onSetup},e))},ET=[{name:"history",items:["undo","redo"]},{name:"styles",items:["styleselect"]},{name:"formatting",items:["bold","italic"]},{name:"alignment",items:["alignleft","aligncenter","alignright","alignjustify"]},{name:"indentation",items:["outdent","indent"]},{name:"permanent pen",items:["permanentpen"]},{name:"comments",items:["addcomment"]}],DT={button:q_(Ch,function(t,e){return n=e.backstage.shared.providers,_T(t,n,[]);var n}),togglebutton:q_(Oh,function(t,e){return n=e.backstage.shared.providers,TT(t,n,[]);var n}),menubutton:q_(o1,function(t,e){return Ww(t,"tox-tbtn",e.backstage,vt.none())}),splitbutton:q_(function(t){return ao("SplitButton",JO,t)},function(t,e){return o=t,r=e.backstage.shared,s=Ir("channel-update-split-dropdown-display"),l=Po(st),f={getApi:n,onSetup:o.onSetup},CT.sketch({dom:{tag:"div",classes:["tox-split-button"],attributes:lt({"aria-pressed":!1},G_(o.tooltip,r.providers))},onExecute:function(t){o.onAction(n(t))},onItemExecute:function(t,e,n){},splitDropdownBehaviours:ec([Xb(r.providers.isDisabled),gb(),mm("split-dropdown-events",[Cr(OT,Mg.focus),hb(f,l),vb(f,l)]),hS.config({})]),eventOrder:((i={})[Gi()]=["alloy.base.behaviour","split-dropdown-events"],i),toggleClass:"tox-tbtn--enabled",lazySink:r.getSink,fetch:(u=n,a=o,c=r.providers,function(e){return jx(function(t){return a.fetch(t)}).map(function(t){return vt.from(Gy(Yo(Cy(Ir("menu-value"),t,function(t){a.onItemAction(u(e),t)},a.columns,a.presets,wv.CLOSE_ON_EXECUTE,a.select.getOr(T),c),{movement:Oy(a.columns,a.presets),menuBehaviours:qv("auto"!==a.columns?[]:[ou(function(o,t){uv(o,4,Kh(a.presets)).each(function(t){var e=t.numRows,n=t.numColumns;Tg.setGridSize(o,e,n)})})])})))})}),parts:{menu:Qh(0,o.columns,o.presets)},components:[CT.parts.button(X_(o.icon,o.text,vt.none(),vt.some(s),vt.some([Rg.config({toggleClass:"tox-tbtn--enabled",toggleOnExecute:!1})]),r.providers)),CT.parts.arrow({dom:{tag:"button",classes:["tox-tbtn","tox-split-button__chevron"],innerHtml:uh("chevron-down",r.providers.icons)},buttonBehaviours:ec([Xb(r.providers.isDisabled),gb(),ah()])}),CT.parts["aria-descriptor"]({text:r.providers.translate("To open the popup, press Shift+Enter")})]});function n(n){return{isDisabled:function(){return gd.isDisabled(n)},setDisabled:function(t){return gd.set(n,t)},setIconFill:function(t,e){Iu(n.element,'svg path[id="'+t+'"], rect[id="'+t+'"]').each(function(t){oe(t,"fill",e)})},setIconStroke:function(t,e){Iu(n.element,'svg path[id="'+t+'"], rect[id="'+t+'"]').each(function(t){oe(t,"stroke",e)})},setActive:function(e){oe(n.element,"aria-pressed",e),Iu(n.element,"span").each(function(t){n.getSystem().getByDom(t).each(function(t){return Rg.set(t,e)})})},isActive:function(){return Iu(n.element,"span").exists(function(t){return n.getSystem().getByDom(t).exists(Rg.isOn)})}}}var o,r,i,u,a,c,s,l,f}),grouptoolbarbutton:q_(function(t){return ao("GroupToolbarButton",YO,t)},function(t,e,n){var o,r,i,u,a,c,s=n.ui.registry.getAll().buttons,l=((o={})[ns]=e.backstage.shared.header.isPositionedAtTop()?Oc.TopToBottom:Oc.BottomToTop,o);if(rb(n)!==vv.floating)throw new Error("Toolbar groups are only supported when using floating toolbar mode");return i=e.backstage,u=function(t){return BT(n,{buttons:s,toolbar:t,allowToolbarGroups:!1},e,vt.none())},a=l,c=i.shared,h_.sketch({lazySink:c.getSink,fetch:function(){return jx(function(t){t(B(u(r.items),F1))})},markers:{toggledClass:"tox-tbtn--enabled"},parts:{button:X_((r=t).icon,r.text,r.tooltip,vt.none(),vt.none(),c.providers),toolbar:{dom:{tag:"div",classes:["tox-toolbar__overflow"],attributes:a}}}})}),styleSelectButton:function(t,e){return Y1(t,n=e.backstage,U_(t,lt({type:"advanced"},n.styleselect)));var n},fontsizeSelectButton:function(t,e){return Y1(t,e.backstage,H_(t))},fontSelectButton:function(t,e){return Y1(t,e.backstage,V_(t))},formatButton:function(t,e){return Y1(t,e.backstage,z_(t))},alignMenuButton:function(t,e){return Y1(t,e.backstage,N_(t))}},AT={styleselect:DT.styleSelectButton,fontsizeselect:DT.fontsizeSelectButton,fontselect:DT.fontSelectButton,formatselect:DT.formatButton,align:DT.alignMenuButton},BT=function(o,c,s,l){var n,t,e,r,i=(e=c.toolbar,r=c.buttons,!1===e?[]:void 0===e||!0===e?(n=r,t=B(ET,function(t){var e=F(t.items,function(t){return Tt(n,t)||Tt(AT,t)});return{name:t.name,items:e}}),F(t,function(t){return 0<t.items.length})):y(e)?B(e.split("|"),function(t){return{items:t.trim().split(" ")}}):f(e,function(t){return Tt(t,"name")&&Tt(t,"items")})?e:(console.error("Toolbar type should be string, string[], boolean or ToolbarGroup[]"),[]));return F(B(i,function(t){var e=H(t.items,function(t){return 0===t.trim().length?[]:(r=o,e=c.buttons,i=t,u=c.allowToolbarGroups,a=s,n=l,tt(e,i.toLowerCase()).orThunk(function(){return n.bind(function(t){return K(t,function(t){return tt(e,t+i.toLowerCase())})})}).fold(function(){return tt(AT,i.toLowerCase()).map(function(t){return t(r,a)}).orThunk(function(){return vt.none()})},function(t){return"grouptoolbarbutton"!==t.type||u?(n=a,o=r,tt(DT,(e=t).type).fold(function(){return console.error("skipping button defined by",e),vt.none()},function(t){return vt.some(t(e,n,o))})):(console.warn("Ignoring the '"+i+"' toolbar button. Group toolbar buttons are only supported when using floating toolbar mode and cannot be nested."),vt.none());var e,n,o}).toArray());var r,e,i,u,a,n});return{title:vt.from(o.translate(t.name)),items:e}}),function(t){return 0<t.items.length})},MT=ln(),FT=MT.os.isiOS()&&MT.os.version.major<=12,IT=Object.freeze({__proto__:null,render:function(n,e,t,o,r){var i=Po(0),u=e.outerContainer;F_(n);var a=Mt.fromDom(r.targetNode),c=te(gn(a)),s=e.mothership;pf(a,s,De),Ls(c,e.uiMothership),n.on("PostRender",function(){K_(n,e,t,o),i.set(n.getWin().innerWidth),B_.setMenubar(u,V1(n,t)),B_.setSidebar(u,t.sidebar),function(n,t){function e(){var t=c.get();t.left===u.innerWidth&&t.top===u.innerHeight||(c.set(kn(u.innerWidth,u.innerHeight)),zb(n))}function o(){var t=n.getDoc().documentElement,e=s.get();e.left===t.offsetWidth&&e.top===t.offsetHeight||(s.set(kn(t.offsetWidth,t.offsetHeight)),zb(n))}function r(t){return n.fire("ScrollContent",t)}var i=n.dom,u=n.getWin(),a=n.getDoc().documentElement,c=Po(kn(u.innerWidth,u.innerHeight)),s=Po(kn(a.offsetWidth,a.offsetHeight));i.bind(u,"resize",e),i.bind(u,"scroll",r);var l=hc(Mt.fromDom(n.getBody()),"load",o),f=t.uiMothership.element;n.on("hide",function(){fe(f,"display","none")}),n.on("show",function(){ve(f,"display")}),n.on("NodeChange",o),n.on("remove",function(){l.unbind(),i.unbind(u,"resize",e),i.unbind(u,"scroll",r),u=null})}(n,e)});var l,f,d,m,g=B_.getSocket(u).getOrDie("Could not find expected socket element");FT&&(de(g.element,{overflow:"scroll","-webkit-overflow-scrolling":"touch"}),f=function(){n.fire("ScrollContent")},d=null,m=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];b(d)&&(d=setTimeout(function(){d=null,f.apply(null,t)},20))},l=pc(g.element,"scroll",m),n.on("remove",l.unbind)),mb(n,e),n.addCommand("ToggleSidebar",function(t,e){B_.toggleSidebar(u,e),n.fire("ToggleSidebar")}),n.addQueryValueHandler("ToggleSidebar",function(){return B_.whichSidebar(u)});var p=rb(n);p!==vv.sliding&&p!==vv.floating||n.on("ResizeWindow ResizeEditor ResizeContent",function(){var t=n.getWin().innerWidth;t!==i.get()&&(B_.refreshToolbar(e.outerContainer),i.set(t))});var h={enable:function(){db(e,!1)},disable:function(){db(e,!0)},isDisabled:function(){return gd.isDisabled(u)}};return{iframeContainer:g.element.dom,editorContainer:u.element.dom,api:h}}}),RT=Object.freeze({__proto__:null,render:function(e,n,o,r,t){var i=n.mothership,u=n.uiMothership,a=n.outerContainer,c=Po(null),s=Mt.fromDom(t.targetNode),l=tT(e,s,n,r,c),f=e.getParam("toolbar_persist",!1,"boolean");function d(){var t;c.get()?l.show():(c.set(B_.getHeader(a).getOrDie()),Ls(t=sb(e),i),Ls(t,u),K_(e,n,o,r),B_.setMenubar(a,V1(e,o)),l.show(),function(c,s,l,t){function e(t){var e=eT(s,l.isPositionedAtTop()),n=e.pos,o=e.bounds,r=f.get(),i=r.pos,u=r.bounds,a=o.height!==u.height||o.width!==u.width;f.set({pos:n,bounds:o}),a&&zb(c,t),l.isVisible()&&(i!==n?l.update(!0):a&&(l.updateMode(),l.repositionPopups()))}var f=Po(eT(s,l.isPositionedAtTop()));t||(c.on("activate",l.show),c.on("deactivate",l.hide)),c.on("SkinLoaded ResizeWindow",function(){return l.update(!0)}),c.on("NodeChange keydown",function(t){rp.requestAnimationFrame(function(){return e(t)})}),c.on("ScrollWindow",function(){return l.updateMode()});var n=mc();n.set(hc(Mt.fromDom(c.getBody()),"load",e)),c.on("remove",function(){n.clear()})}(e,s,l,f),e.nodeChanged())}I_(e),e.on("show",d),e.on("hide",l.hide),f||(e.on("focus",d),e.on("blur",l.hide)),e.on("init",function(){(e.hasFocus()||f)&&d()}),mb(e,n);var m={show:function(){l.show()},hide:function(){l.hide()},enable:function(){db(n,!1)},disable:function(){db(n,!0)},isDisabled:function(){return gd.isDisabled(a)}};return{editorContainer:a.element.dom,api:m}}}),NT="contexttoolbar-hide",PT=function(t,e){var n,o,r,i,u=t.label.fold(function(){return{}},function(t){return{"aria-label":t}}),a=Lm(Ex.sketch({inputClasses:["tox-toolbar-textfield","tox-toolbar-nav-js"],data:t.initValue(),inputAttributes:u,selectOnFocus:!0,inputBehaviours:ec([Tg.config({mode:"special",onEnter:function(t){return c.findPrimary(t).map(function(t){return yr(t),!0})},onLeft:function(t,e){return e.cut(),vt.none()},onRight:function(t,e){return e.cut(),vt.none()}})])})),c=(n=a,o=t.commands,r=e,i=B(o,function(t){return Lm(("contextformtogglebutton"===t.type?function(t,e,n){var o=e.original;o.primary;var r=A(o,["primary"]),i=co(Oh(lt(lt({},r),{type:"togglebutton",onAction:st})));return TT(i,n.backstage.shared.providers,[nT(t,e)])}:function(t,e,n){var o=e.original;o.primary;var r=A(o,["primary"]),i=co(Ch(lt(lt({},r),{type:"button",onAction:st})));return _T(i,n.backstage.shared.providers,[nT(t,e)])})(n,t,{backstage:{shared:{providers:r}}}))}),{asSpecs:function(){return B(i,function(t){return t.asSpec()})},findPrimary:function(n){return K(o,function(t,e){return t.primary?vt.from(i[e]).bind(function(t){return t.getOpt(n)}).filter(O(gd.isDisabled)):vt.none()})}});return[{title:vt.none(),items:[a.asSpec()]},{title:vt.none(),items:c.asSpecs()}]},VT={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"],inset:["tox-pop--inset"]},HT={maxHeightFunction:Nc(),maxWidthFunction:m_()},LT=Ir("forward-slide"),zT=Ir("backward-slide"),UT=Ir("change-slide-event"),jT="tox-pop--resizing",WT="tox-pop--transition",GT={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},XT=(gT=["Infinity",(dT="[0-9]+")+"\\."+YT(dT)+YT(mT="[eE][+-]?[0-9]+"),"\\."+dT+YT(mT),dT+YT(mT)].join("|"),new RegExp("^([+-]?(?:"+gT+"))(.*)$"));function YT(t){return"(?:"+t+")?"}function qT(u,a){function e(){var t=a.getOptions(u),r=a.getCurrent(u).map(a.hash),i=gc();return B(t,function(o){return{type:"togglemenuitem",text:a.display(o),onSetup:function(e){function t(t){t&&(i.on(function(t){return t.setActive(!1)}),i.set(e)),e.setActive(t)}t(mt(r,a.hash(o)));var n=a.watcher(u,o,t);return function(){i.clear(),n()}},onAction:function(){return a.setCurrent(u,o)}}})}u.ui.registry.addMenuButton(a.name,{tooltip:a.text,icon:a.icon,fetch:function(t){return t(e())},onSetup:a.onToolbarSetup}),u.ui.registry.addNestedMenuItem(a.name,{type:"nestedmenuitem",text:a.text,getSubmenuItems:e,onSetup:a.onMenuSetup})}function KT(t,e){return function(){t.execCommand("mceToggleFormat",!1,e)}}function JT(t){var e,n;!function(n){lk.each([{name:"bold",text:"Bold",icon:"bold"},{name:"italic",text:"Italic",icon:"italic"},{name:"underline",text:"Underline",icon:"underline"},{name:"strikethrough",text:"Strikethrough",icon:"strike-through"},{name:"subscript",text:"Subscript",icon:"subscript"},{name:"superscript",text:"Superscript",icon:"superscript"}],function(t,e){n.ui.registry.addToggleButton(t.name,{tooltip:t.text,icon:t.icon,onSetup:U1(n,t.name),onAction:KT(n,t.name)})});for(var t=1;t<=6;t++){var e="h"+t;n.ui.registry.addToggleButton(e,{text:e.toUpperCase(),tooltip:"Heading "+t,onSetup:U1(n,e),onAction:KT(n,e)})}}(t),e=t,lk.each([{name:"cut",text:"Cut",action:"Cut",icon:"cut"},{name:"copy",text:"Copy",action:"Copy",icon:"copy"},{name:"paste",text:"Paste",action:"Paste",icon:"paste"},{name:"help",text:"Help",action:"mceHelp",icon:"help"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all"},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document"},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting"},{name:"remove",text:"Remove",action:"Delete",icon:"remove"}],function(t){e.ui.registry.addButton(t.name,{tooltip:t.text,icon:t.icon,onAction:G1(e,t.action)})}),n=t,lk.each([{name:"blockquote",text:"Blockquote",action:"mceBlockQuote",icon:"quote"}],function(t){n.ui.registry.addToggleButton(t.name,{tooltip:t.text,icon:t.icon,onAction:G1(n,t.action),onSetup:U1(n,t.name)})})}function $T(e,n){return j1(e,"Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(t){t.setDisabled(e.mode.isReadOnly()||!e.undoManager[n]())})}function QT(t){var e;t.ui.registry.addButton("visualaid",{tooltip:"Visual aids",text:"Visual aids",onAction:G1(t,"mceToggleVisualAid")}),t.ui.registry.addToggleMenuItem("visualaid",{text:"Visual aids",onSetup:j1(e=t,"VisualAid",function(t){t.setActive(e.hasVisual)}),onAction:G1(t,"mceToggleVisualAid")})}function ZT(t,e){var n,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_,T=t;St([{name:"alignleft",text:"Align left",cmd:"JustifyLeft",icon:"align-left"},{name:"aligncenter",text:"Align center",cmd:"JustifyCenter",icon:"align-center"},{name:"alignright",text:"Align right",cmd:"JustifyRight",icon:"align-right"},{name:"alignjustify",text:"Justify",cmd:"JustifyFull",icon:"align-justify"}],function(t){T.ui.registry.addToggleButton(t.name,{tooltip:t.text,icon:t.icon,onAction:G1(T,t.cmd),onSetup:U1(T,t.name)})}),T.ui.registry.addButton("alignnone",{tooltip:"No alignment",icon:"align-none",onAction:G1(T,"JustifyNone")}),JT(O=t),_=O,lk.each([{name:"bold",text:"Bold",action:"Bold",icon:"bold",shortcut:"Meta+B"},{name:"italic",text:"Italic",action:"Italic",icon:"italic",shortcut:"Meta+I"},{name:"underline",text:"Underline",action:"Underline",icon:"underline",shortcut:"Meta+U"},{name:"strikethrough",text:"Strikethrough",action:"Strikethrough",icon:"strike-through",shortcut:""},{name:"subscript",text:"Subscript",action:"Subscript",icon:"subscript",shortcut:""},{name:"superscript",text:"Superscript",action:"Superscript",icon:"superscript",shortcut:""},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting",shortcut:""},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document",shortcut:""},{name:"cut",text:"Cut",action:"Cut",icon:"cut",shortcut:"Meta+X"},{name:"copy",text:"Copy",action:"Copy",icon:"copy",shortcut:"Meta+C"},{name:"paste",text:"Paste",action:"Paste",icon:"paste",shortcut:"Meta+V"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all",shortcut:"Meta+A"}],function(t){_.ui.registry.addMenuItem(t.name,{text:t.text,icon:t.icon,shortcut:t.shortcut,onAction:G1(_,t.action)})}),_.ui.registry.addMenuItem("codeformat",{text:"Code",icon:"sourcecode",onAction:KT(_,"code")}),C=X1(0,d=l=e,N_(f=s=t)),f.ui.registry.addNestedMenuItem("align",{text:d.shared.providers.translate("Align"),getSubmenuItems:function(){return C.items.validateItems(C.getStyleItems())}}),p=X1(0,g=l,V_(m=s)),m.ui.registry.addNestedMenuItem("fontformats",{text:g.shared.providers.translate("Fonts"),getSubmenuItems:function(){return p.items.validateItems(p.getStyleItems())}}),h=s,b=lt({type:"advanced"},(v=l).styleselect),y=X1(0,v,U_(h,b)),h.ui.registry.addNestedMenuItem("formats",{text:"Formats",getSubmenuItems:function(){return y.items.validateItems(y.getStyleItems())}}),w=X1(0,l,z_(x=s)),x.ui.registry.addNestedMenuItem("blockformats",{text:"Blocks",getSubmenuItems:function(){return w.items.validateItems(w.getStyleItems())}}),k=X1(0,l,H_(S=s)),S.ui.registry.addNestedMenuItem("fontsizes",{text:"Font sizes",getSubmenuItems:function(){return k.items.validateItems(k.getStyleItems())}}),(a=u=t).ui.registry.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onSetup:$T(a,"hasUndo"),onAction:G1(a,"undo")}),a.ui.registry.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onSetup:$T(a,"hasRedo"),onAction:G1(a,"redo")}),(c=u).ui.registry.addButton("undo",{tooltip:"Undo",icon:"undo",disabled:!0,onSetup:$T(c,"hasUndo"),onAction:G1(c,"undo")}),c.ui.registry.addButton("redo",{tooltip:"Redo",icon:"redo",disabled:!0,onSetup:$T(c,"hasRedo"),onAction:G1(c,"redo")}),function(t){var i;(i=t).addCommand("mceApplyTextcolor",function(t,e){var n,o=t,r=e;(n=i).undoManager.transact(function(){n.focus(),n.formatter.apply(o,{value:r}),n.nodeChanged()})}),i.addCommand("mceRemoveTextcolor",function(t){var e,n=t;(e=i).undoManager.transact(function(){e.focus(),e.formatter.remove(n,{value:null},null,!0),e.nodeChanged()})});var e=Po(My),n=Po(My);Sy(t,"forecolor","forecolor","Text color",e),Sy(t,"backcolor","hilitecolor","Background color",n),ky(t,"forecolor","forecolor","Text color"),ky(t,"backcolor","hilitecolor","Background color")}(t),QT(t),(r=t).ui.registry.addButton("outdent",{tooltip:"Decrease indent",icon:"outdent",onSetup:j1(i=r,"NodeChange",function(t){t.setDisabled(!i.queryCommandState("outdent"))}),onAction:G1(r,"outdent")}),r.ui.registry.addButton("indent",{tooltip:"Increase indent",icon:"indent",onAction:G1(r,"indent")}),qT(n=t,VE),o=n,vt.from(o.getParam("content_langs",void 0,"array")).map(function(t){return{name:"language",text:"Language",icon:"language",getOptions:rt(t),hash:function(t){return E(t.customCode)?t.code:t.code+"/"+t.customCode},display:function(t){return t.title},watcher:function(t,e,n){return t.formatter.formatChanged("lang",n,!1,{value:e.code,customValue:e.customCode}).unbind},getCurrent:function(t){return mr(Mt.fromDom(t.selection.getNode()),function(t){return vt.some(t).filter(Ge).bind(function(e){return ue(e,"lang").map(function(t){return{code:t,customCode:ue(e,"data-mce-lang").getOrUndefined(),title:""}})})})},setCurrent:function(t,e){return t.execCommand("Lang",!1,e)},onToolbarSetup:function(t){var e=mc();return t.setActive(o.formatter.match("lang",{},void 0,!0)),e.set(o.formatter.formatChanged("lang",t.setActive,!0)),e.clear}}}).each(function(t){return qT(n,t)})}function tE(t,e){return{type:"makeshift",x:t,y:e}}function eE(t){return"longpress"===t.type||0===t.type.indexOf("touch")}function nE(t,e){return"contextmenu"===e.type||"longpress"===e.type?t.inline?function(t){if(eE(t)){var e=t.touches[0];return tE(e.pageX,e.pageY)}return tE(t.pageX,t.pageY)}(e):(n=t.getContentAreaContainer(),o=function(t){if(eE(t)){var e=t.touches[0];return tE(e.clientX,e.clientY)}return tE(t.clientX,t.clientY)}(e),r=eb.DOM.getPos(n),i=r.x,u=r.y,tE(o.x+i,o.y+u)):HE(t);var n,o,r,i,u}function oE(t,e,n){switch(n){case"node":return{type:"node",node:vt.some(Mt.fromDom((o=t).selection.getNode())),root:Mt.fromDom(o.getBody())};case"point":return nE(t,e);case"selection":return HE(t)}var o}function rE(f,d,m,g,p,h){function t(){var e,n,t,o,r,i,u,a,c,s,l=m();t=l,o=g,r=p,u=!(y||v||b&&x),c=oE(e=f,n=d,a=i=h),s=lt({bubble:Sc(0,"point"===a?12:0,zE),layouts:LE,overrides:{maxWidthFunction:m_(),maxHeightFunction:Nc()}},c),Uw(t,wv.CLOSE_ON_EXECUTE,o,!0).map(function(t){n.preventDefault(),tp.showMenuWithinBounds(r,{anchor:s},{menu:{markers:$h("normal"),highlightImmediately:u},data:t,type:"horizontal"},function(){return vt.some(iT(e,o.shared,"node"===i?"node":"selection"))}),e.fire(NT)})}var e,n=ln(),v=n.os.isiOS(),b=n.os.isOSX(),y=n.os.isAndroid(),x=n.deviceType.isTouch();(b||v)&&"node"!==h?(e=function(){(function(t){function e(){rp.setEditorTimeout(t,function(){t.selection.setRng(n)},10),i()}var n=t.selection.getRng();function o(t){t.preventDefault(),t.stopImmediatePropagation()}function r(){return i()}t.once("touchend",e),t.on("mousedown",o,!0),t.once("longpresscancel",r);var i=function(){t.off("touchend",e),t.off("longpresscancel",r),t.off("mousedown",o)}})(f),t()},function(t,e){var n=t.selection;if(!(n.isCollapsed()||e.touches.length<1)){var o=e.touches[0],r=n.getRng();return xs(t.getWin(),ms.domRange(r)).exists(function(t){return t.left<=o.clientX&&t.right>=o.clientX&&t.top<=o.clientY&&t.bottom>=o.clientY})}}(f,d)?e():(f.once("selectionchange",e),f.once("touchend",function(){return f.off("selectionchange",e)}))):t()}function iE(t){return"string"==typeof t?t.split(/[ ,]/):t}function uE(t){return t.getParam("contextmenu_never_use_native",!1,"boolean")}function aE(t){return y(t)?"|"===t:"separator"===t.type}function cE(t,e){if(0===e.length)return t;var n=q(t).filter(function(t){return!aE(t)}).fold(function(){return[]},function(t){return[UE]});return t.concat(n).concat(e).concat([UE])}function sE(t,e){return"longpress"!==e.type&&(2!==e.button||e.target===t.getBody()&&""===e.pointerType)}function lE(t,e){return sE(t,e)?t.selection.getStart(!0):e.target}function fE(s,t,e){function n(t){return tp.hide(i)}function o(c){var t;uE(s)&&c.preventDefault(),c.ctrlKey&&!uE(s)||!1===s.getParam("contextmenu")||(t=function(t,e){var n=t.getParam("contextmenu_avoid_overlap","","string"),o=sE(t,e)?"selection":"point";if(at(n)){var r=lE(t,e);return Xy(Mt.fromDom(r),n)?"node":o}return o}(s,c),(r()?rE:function(t,e,n,o,r,i){var u=n(),a=oE(t,e,i);Uw(u,wv.CLOSE_ON_EXECUTE,o,!1).map(function(t){e.preventDefault(),tp.showMenuAt(r,{anchor:a},{menu:{markers:$h("normal")},data:t})})})(s,c,function(){var t,e,n,o=lE(s,c),r=s.ui.registry.getAll(),i=(n=(e=s).ui.registry.getAll().contextMenus,vt.from(e.getParam("contextmenu")).map(iE).getOrThunk(function(){return F(iE("link linkchecker image imagetools table spellchecker configurepermanentpen"),function(t){return Tt(n,t)})})),u=r.contextMenus,a=o;return 0<(t=R(i,function(o,t){return tt(u,t.toLowerCase()).map(function(t){var e=t.update(a);if(y(e))return cE(o,e.split(" "));if(0<e.length){var n=B(e,jE);return cE(o,n)}return o}).getOrThunk(function(){return o.concat([t])})},[])).length&&aE(t[t.length-1])&&t.pop(),t},e,i,t))}var r=ln().deviceType.isTouch,i=Tu(tp.sketch({dom:{tag:"div"},lazySink:t,onEscape:function(){return s.focus()},onShow:function(){return e.setContextMenuState(!0)},onHide:function(){return e.setContextMenuState(!1)},fireDismissalEventInstead:{},inlineBehaviours:ec([mm("dismissContextMenu",[Cr(Yi(),function(t,e){bf.close(t),s.focus()})])])}));s.on("init",function(){var t="ResizeEditor ScrollContent ScrollWindow longpresscancel"+(r()?"":" ResizeWindow");s.on(t,n),s.on("longpress contextmenu",o)})}function dE(e){return function(t){return t.translate(-e.left,-e.top)}}function mE(e){return function(t){return t.translate(e.left,e.top)}}function gE(n){return function(t,e){return R(n,function(t,e){return e(t)},kn(t,e))}}function pE(t,e,n){return t.fold(gE([mE(n),dE(e)]),gE([dE(e)]),gE([]))}function hE(t,e,n){return t.fold(gE([mE(n)]),gE([]),gE([mE(e)]))}function vE(t,e,n){return t.fold(gE([]),gE([dE(n)]),gE([mE(e),dE(n)]))}function bE(t,e,n){var o=t.fold(function(t,e){return{position:vt.some("absolute"),left:vt.some(t+"px"),top:vt.some(e+"px")}},function(t,e){return{position:vt.some("absolute"),left:vt.some(t-n.left+"px"),top:vt.some(e-n.top+"px")}},function(t,e){return{position:vt.some("fixed"),left:vt.some(t+"px"),top:vt.some(e+"px")}});return lt({right:vt.none(),bottom:vt.none()},o)}function yE(t,i,u,a){function e(o,r){return function(t,e){var n=o(i,u,a);return r(t.getOr(n.left),e.getOr(n.top))}}return t.fold(e(vE,GE),e(hE,XE),e(pE,YE))}function xE(t,e){var n=ie(t,e);return E(n)?NaN:parseInt(n,10)}function wE(t,e,n,o,r,i){var u,a,c,s,l,f,d=(u=n,a=o,l=xE(s=t.element,(c=e).leftAttr),f=xE(s,c.topAttr),(isNaN(l)||isNaN(f)?vt.none():vt.some(kn(l,f))).fold(function(){return u},function(t){return YE(t.left+a.left,t.top+a.top)})),m=(e.mustSnap?qE:KE)(t,e,d,r,i),g=pE(d,r,i),p=e,h=g,v=t.element;return oe(v,p.leftAttr,h.left+"px"),oe(v,p.topAttr,h.top+"px"),m.fold(function(){return{coord:YE(g.left,g.top),extra:vt.none()}},function(t){return{coord:t.output,extra:t.extra}})}function SE(t,c,s,l){return K(t,function(t){var e,n,o=t.sensor,r=t.range.left,i=t.range.top,u=hE(c,e=s,n=l),a=hE(o,e,n);return Math.abs(u.left-a.left)<=r&&Math.abs(u.top-a.top)<=i?vt.some({output:yE(t.output,c,s,l),extra:t.extra}):vt.none()})}function kE(t,e){var n;t.getSystem().addToGui(e),Yt((n=e).element).filter(Ge).each(function(e){pe(e,"z-index").each(function(t){oe(e,$E,t)}),fe(e,"z-index",ge(n.element,"z-index"))})}function CE(t){Yt(t.element).filter(Ge).each(function(e){ue(e,$E).fold(function(){return ve(e,"z-index")},function(t){return fe(e,"z-index",t)}),ce(e,$E)}),t.getSystem().removeFromGui(t)}function OE(t,e,n){return t.getSystem().build(sx.sketch({dom:{styles:{left:"0px",top:"0px",width:"100%",height:"100%",position:"fixed","z-index":"1000000000000000"},classes:[e]},events:n}))}function _E(t,e){return{bounds:t.getBounds(),height:we(e.element),width:Oe(e.element)}}function TE(A,B,t,e,n){var o=t.update(e,n),M=t.getStartData().getOrThunk(function(){return _E(B,A)});o.each(function(t){var e,n,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_=A,T=M,E=t,D=(e=B).getTarget(_.element);e.repositionTarget&&(n=Ie(jt(_.element)),o=zC(D),S=pe(w=D,"left"),k=pe(w,"top"),C=pe(w,"position"),O=function(t,e,n){return("fixed"===n?YE:GE)(parseInt(t,10),parseInt(e,10))},r=(S.isSome()&&k.isSome()&&C.isSome()?vt.some(O(S.getOrDie(),k.getOrDie(),C.getOrDie())):vt.none()).getOrThunk(function(){var t=ke(w);return XE(t.left,t.top)}),i=_,u=e.snaps,a=r,c=n,s=o,l=E,f=T,m=u.fold(function(){var n,o,t=pE((n=l.left,o=l.top,a.fold(function(t,e){return GE(t+n,e+o)},function(t,e){return XE(t+n,e+o)},function(t,e){return YE(t+n,e+o)})),c,s);return YE(t.left,t.top)},function(e){var t=wE(i,e,a,l,c,s);return t.extra.each(function(t){e.onSensor(i,t)}),t.coord}),g=c,p=s,h=(d=f).bounds,v=hE(m,g,p),b=Wa(v.left,h.x,h.x+h.width-d.width),y=Wa(v.top,h.y,h.y+h.height-d.height),x=XE(b,y),me(D,bE(m.fold(function(){var t=vE(x,g,p);return GE(t.left,t.top)},rt(x),function(){var t=pE(x,g,p);return YE(t.left,t.top)}),0,o))),e.onDrag(_,D,E)})}function EE(o,t,e,n){t.each(CE),e.snaps.each(function(t){var e,n;e=t,ce(n=o.element,e.leftAttr),ce(n,e.topAttr)});var r=e.getTarget(o.element);n.reset(),e.onDrop(o,r)}function DE(t){return function(e,n){function o(t){n.setStartData(_E(e,t))}return nu(V([Cr(ji(),function(t){n.getStartData().each(function(){return o(t)})})],t(e,n,o),!0))}}function AE(a,c,s){return[Cr(mi(),function(e,t){var n,o,r,i,u;0===t.event.raw.button&&(t.stop(),r={drop:n=function(){return EE(e,vt.some(i),a,c)},delayDrop:(o=Yy(n,200)).schedule,forceDrop:n,move:function(t){o.cancel(),TE(e,a,c,tD,t)}},i=OE(e,a.blockerClass,(u=r,nu([Cr(mi(),u.forceDrop),Cr(hi(),u.drop),Cr(gi(),function(t,e){u.move(e.event)}),Cr(pi(),u.delayDrop)]))),s(e),kE(e,i))})]}function BE(a,c,s){function l(t){EE(t,f.get(),a,c),f.clear()}var f=gc();return[Cr(si(),function(e,t){function n(){return l(e)}t.stop();var o,r,i,u=OE(e,a.blockerClass,(r=o=n,i=function(t){TE(e,a,c,nD,t)},nu([Cr(si(),r),Cr(fi(),o),Cr(di(),o),Cr(li(),function(t,e){i(e.event)})])));f.set(u),s(e),kE(e,u)}),Cr(li(),function(t,e){e.stop(),TE(t,a,c,nD,e.event)}),Cr(fi(),function(t,e){e.stop(),l(t)}),Cr(di(),l)]}function ME(t,r,i,u,e,n){return t.fold(function(){return iD.snap({sensor:XE(i-20,u-20),range:kn(e,n),output:XE(vt.some(i),vt.some(u)),extra:{td:r}})},function(t){var e=i-20,n=u-20,o=t.element.dom.getBoundingClientRect();return iD.snap({sensor:XE(e,n),range:kn(40,40),output:XE(vt.some(i-o.width/2),vt.some(u-o.height/2)),extra:{td:r}})})}function FE(t,i,u){return{getSnapPoints:t,leftAttr:"data-drag-left",topAttr:"data-drag-top",onSensor:function(t,e){var n=e.td,o=i.get(),r=n;o.exists(function(t){return zt(t,r)})||(i.set(n),u(n))},mustSnap:!0}}function IE(t){return Lm(ip.sketch({dom:{tag:"div",classes:["tox-selector"]},buttonBehaviours:ec([iD.config({mode:"mouseOrTouch",blockerClass:"blocker",snaps:t}),hS.config({})]),eventOrder:{mousedown:["dragging","alloy.base.behaviour"],touchstart:["dragging","alloy.base.behaviour"]}}))}function RE(a,n){function e(t){var e=He(t);return ME(g.getOpt(n),t,e.x,e.y,e.width,e.height)}function o(t){var e=He(t);return ME(p.getOpt(n),t,e.right,e.bottom,e.width,e.height)}function r(t,i,e,u){var n=e(i);iD.snapTo(t,n),function(t){var e=i.dom.getBoundingClientRect();ve(t.element,"display");var n=Xt(Mt.fromDom(a.getBody())).dom.innerHeight,o=e[u]<0,r=e[u]>n;(o||r)&&fe(t.element,"display","none")}(t)}function i(t){return r(h,t,e,"top")}function u(t){return r(v,t,o,"bottom")}var c=Po([]),s=Po([]),t=Po(!1),l=gc(),f=gc(),d=FE(function(){return B(c.get(),e)},l,function(e){f.get().each(function(t){a.fire("TableSelectorChange",{start:e,finish:t})})}),m=FE(function(){return B(s.get(),o)},f,function(e){l.get().each(function(t){a.fire("TableSelectorChange",{start:t,finish:e})})}),g=IE(d),p=IE(m),h=Tu(g.asSpec()),v=Tu(p.asSpec());ln().deviceType.isTouch()&&(a.on("TableSelectionChange",function(e){t.get()||(Ns(n,h),Ns(n,v),t.set(!0)),l.set(e.start),f.set(e.finish),e.otherCells.each(function(t){c.set(t.upOrLeftCells),s.set(t.downOrRightCells),i(e.start),u(e.finish)})}),a.on("ResizeEditor ResizeWindow ScrollContent",function(){l.get().each(i),f.get().each(u)}),a.on("TableSelectionClear",function(){t.get()&&(Vs(h),Vs(v),t.set(!1)),l.clear(),f.clear()}))}var NE,PE,VE={name:"lineheight",text:"Line height",icon:"line-height",getOptions:function(t){return t.getParam("lineheight_formats","1 1.1 1.2 1.3 1.4 1.5 2","string").split(" ")},hash:function(t){return r=["fixed","relative","empty"],vt.from(XT.exec(t)).bind(function(t){var e=Number(t[1]),n=t[2],o=n;return d(r,function(t){return d(GT[t],function(t){return o===t})})?vt.some({value:e,unit:n}):vt.none()}).map(function(t){return t.value+t.unit}).getOr(t);var r},display:h,watcher:function(t,e,n){return t.formatter.formatChanged("lineheight",n,!1,{value:e}).unbind},getCurrent:function(t){return vt.from(t.queryCommandValue("LineHeight"))},setCurrent:function(t,e){return t.execCommand("LineHeight",!1,e)}},HE=function(t){return{type:"selection",root:Mt.fromDom(t.selection.getNode())}},LE={onLtr:function(){return[$a,Xa,Ya,qa,Ka,Ja,np,op,Mm,Am,Bm,Dm]},onRtl:function(){return[$a,Ya,Xa,Ka,qa,Ja,np,op,Bm,Dm,Mm,Am]}},zE={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},UE={type:"separator"},jE=function(e){function t(t){return{text:t.text,icon:t.icon,disabled:t.disabled,shortcut:t.shortcut}}var n;if(y(e))return e;switch(e.type){case"separator":return UE;case"submenu":return lt(lt({type:"nestedmenuitem"},t(e)),{getSubmenuItems:function(){var t=e.getSubmenuItems();return y(t)?t:B(t,jE)}});default:return lt(lt({type:"menuitem"},t(e)),{onAction:(n=e.onAction,function(){return n()})})}},WE=Vo([{offset:["x","y"]},{absolute:["x","y"]},{fixed:["x","y"]}]),GE=WE.offset,XE=WE.absolute,YE=WE.fixed,qE=function(t,e,l,f,d){var n=e.getSnapPoints(t);return SE(n,l,f,d).orThunk(function(){return R(n,function(e,n){var t,o,r,i,u,a,c,s=(t=n.sensor,n.range.left,n.range.top,i=hE(l,o=f,r=d),u=hE(t,o,r),a=Math.abs(i.left-u.left),c=Math.abs(i.top-u.top),kn(a,c));return e.deltas.fold(function(){return{deltas:vt.some(s),snap:vt.some(n)}},function(t){return(s.left+s.top)/2<=(t.left+t.top)/2?{deltas:vt.some(s),snap:vt.some(n)}:e})},{deltas:vt.none(),snap:vt.none()}).snap.map(function(t){return{output:yE(t.output,l,f,d),extra:t.extra}})})},KE=function(t,e,n,o,r){return SE(e.getSnapPoints(t),n,o,r)},JE=Object.freeze({__proto__:null,snapTo:function(t,e,n,o){var r,i,u,a=e.getTarget(t.element);e.repositionTarget&&(r=Ie(jt(t.element)),i=zC(a),me(a,bE({coord:yE((u=o).output,u.output,r,i),extra:u.extra}.coord,0,i)))}}),$E="data-initial-z-index",QE=To("snaps",[mo("getSnapPoints"),Ju("onSensor"),mo("leftAttr"),mo("topAttr"),Eo("lazyViewport",Fn),Eo("mustSnap",!1)]),ZE=[Eo("useFixed",T),mo("blockerClass"),Eo("getTarget",h),Eo("onDrag",st),Eo("repositionTarget",!0),Eo("onDrop",st),Io("getBounds",Fn),QE],tD=Object.freeze({__proto__:null,getData:function(t){return vt.from(kn(t.x,t.y))},getDelta:function(t,e){return kn(e.left-t.left,e.top-t.top)}}),eD=V(V([],ZE,!0),[ta("dragger",{handlers:DE(AE)})],!1),nD=Object.freeze({__proto__:null,getData:function(t){var e,n=t.raw.touches;return 1===n.length?(e=n[0],vt.some(kn(e.clientX,e.clientY))):vt.none()},getDelta:function(t,e){return kn(e.left-t.left,e.top-t.top)}}),oD=V(V([],ZE,!0),[ta("dragger",{handlers:DE(BE)})],!1),rD=V(V([],ZE,!0),[ta("dragger",{handlers:DE(function(t,e,n){return V(V([],AE(t,e,n),!0),BE(t,e,n),!0)})})],!1),iD=wa({branchKey:"mode",branches:Object.freeze({__proto__:null,mouse:eD,touch:oD,mouseOrTouch:rD}),name:"dragging",active:{events:function(t,e){return t.dragger.handlers(t,e)}},extra:{snap:function(t){return{sensor:t.sensor,range:t.range,output:t.output,extra:vt.from(t.extra)}}},state:Object.freeze({__proto__:null,init:function(){var i=vt.none(),e=vt.none(),t=rt({});return wu({readState:t,reset:function(){i=vt.none(),e=vt.none()},update:function(r,t){return r.getData(t).bind(function(t){return e=r,n=t,o=i.map(function(t){return e.getDelta(t,n)}),i=vt.some(n),o;var e,n,o})},getStartData:function(){return e},setStartData:function(t){e=vt.some(t)}})}}),apis:JE});function uD(t,e,n){var o,r,i,u,a,c,s=Mt.fromDom(t.getContainer());J((o=t,r=e,i=n,u=xe(s),a=Ce(s),(c={}).height=Q_(u+r.top,fv(o),mv(o)),i===NE.Both&&(c.width=Q_(a+r.left,lv(o),dv(o))),c),function(t,e){return fe(s,e,$_(t)),0}),t.fire("ResizeEditor")}function aD(t,e,n,o){return uD(t,kn(20*n,20*o),e),vt.some(!0)}function cD(t,e){var n,o,r,i,u,a,c,s,l,f,d,m,g,p,h,v;return{dom:{tag:"div",classes:["tox-statusbar"]},components:(v=[],t.getParam("elementpath",!0,"boolean")&&v.push((g=t,h=e,(p={}).delimiter||(p.delimiter="\xbb"),{dom:{tag:"div",classes:["tox-statusbar__path"],attributes:{role:"navigation"}},behaviours:ec([Tg.config({mode:"flow",selector:"div[role=button]"}),gd.config({disabled:h.isDisabled}),gb(),gx.config({}),Dg.config({}),mm("elementPathEvents",[ou(function(r,t){g.shortcuts.add("alt+F11","focus statusbar elementpath",function(){return Tg.focusIn(r)}),g.on("NodeChange",function(t){var e,o,n=function(t){for(var e=[],n=t.length;0<n--;){var o=t[n];if(1===o.nodeType&&!function(t){if(1===t.nodeType){if("BR"===t.nodeName||t.getAttribute("data-mce-bogus"))return 1;if("bookmark"===t.getAttribute("data-mce-type"))return 1}}(o)){var r=g.fire("ResolveName",{name:o.nodeName.toLowerCase(),target:o});if(r.isDefaultPrevented()||e.push({name:r.name,element:o}),r.isPropagationStopped())break}}return e}(t.parents);0<n.length?Dg.set(r,(e=B(n||[],function(e,t){return ip.sketch({dom:{tag:"div",classes:["tox-statusbar__path-item"],attributes:{role:"button","data-index":t,"tab-index":-1,"aria-level":t+1},innerHtml:e.name},action:function(t){g.focus(),g.selection.select(e.element),g.nodeChanged()},buttonBehaviours:ec([Jb(h.isDisabled),gb()])})}),o={dom:{tag:"div",classes:["tox-statusbar__path-divider"],attributes:{"aria-hidden":!0},innerHtml:" "+p.delimiter+" "}},R(e.slice(1),function(t,e){var n=t;return n.push(o),n.push(e),n},[e[0]]))):Dg.set(r,[])})})])]),components:[]})),t.hasPlugin("wordcount")&&v.push((f=t,d=e,ip.sketch({dom:{tag:"button",classes:["tox-statusbar__wordcount"]},components:[],buttonBehaviours:ec([Jb(d.isDisabled),gb(),gx.config({}),Dg.config({}),Df.config({store:{mode:"memory",initialValue:{mode:"words",count:{words:0,characters:0}}}}),mm("wordcount-events",[uu(function(t){var e=Df.getValue(t),n="words"===e.mode?"characters":"words";Df.setValue(t,{mode:n,count:e.count}),b(t,e.count,n)}),ou(function(n){f.on("wordCountUpdate",function(t){var e=Df.getValue(n).mode;Df.setValue(n,{mode:e,count:t.wordCount}),b(n,t.wordCount,e)})})])]),eventOrder:((m={})[Ii()]=["disabling","alloy.base.behaviour","wordcount-events"],m)}))),t.getParam("branding",!0,"boolean")&&v.push({dom:{tag:"span",classes:["tox-statusbar__branding"],innerHtml:'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce&amp;utm_content=v5" rel="noopener" target="_blank" tabindex="-1" aria-label="'+(l=fh.translate(["Powered by {0}","Tiny"]))+'">'+l+"</a>"}}),n=0<v.length?[{dom:{tag:"div",classes:["tox-statusbar__text-container"]},components:v}]:[],i=e,a=!(u=r=t).hasPlugin("autoresize"),o=(s=!1===(c=u.getParam("resize",a))?NE.None:"both"===c?NE.Both:NE.Vertical)===NE.None?vt.none():vt.some(sh("resize-handle",{tag:"div",classes:["tox-statusbar__resize-handle"],attributes:{title:i.translate("Resize")},behaviours:[iD.config({mode:"mouse",repositionTarget:!1,onDrag:function(t,e,n){return uD(r,n,s)},blockerClass:"tox-blocker"}),Tg.config({mode:"special",onLeft:function(){return aD(r,s,-1,0)},onRight:function(){return aD(r,s,1,0)},onUp:function(){return aD(r,s,0,-1)},onDown:function(){return aD(r,s,0,1)}}),gx.config({}),Mg.config({})]},i.icons)),n.concat(o.toArray()))};function b(t,e,n){return Dg.set(t,[ri(d.translate(["{0} "+n,e[n]]))])}}function sD(d){function m(){return i.bind(B_.getHeader)}function g(){return Nn.value(y)}function p(){return i.bind(function(t){return B_.getThrobber(t)}).getOrDie("Could not find throbber element")}var t,e,n,o,r=d.inline,h=r?RT:IT,v=fb(d)?XO:NO,i=vt.none(),u=ln(),a=u.browser.isIE()?["tox-platform-ie"]:[],c=u.deviceType.isTouch()?["tox-platform-touch"]:[],s=ub(d),l=sb(d),f=fh.isRtl()?{attributes:{dir:"rtl"}}:{},b={attributes:((t={})[ns]=s?Oc.BottomToTop:Oc.TopToBottom,t)},y=Tu((e=zt(bn(),l)&&"grid"===ge(l,"display"),n={dom:lt({tag:"div",classes:["tox","tox-silver-sink","tox-tinymce-aux"].concat(a).concat(c)},f),behaviours:ec([ff.config({useFixed:function(){return v.isDocked(m)}})])},o={dom:{styles:{width:document.body.clientWidth+"px"}},events:nu([Cr(Wi(),function(){fe(J.element,"width",document.body.clientWidth+"px")})])},Yo(n,e?o:{}))),x=Lm({dom:{tag:"div",classes:["tox-anchorbar"]}}),w=HC(y,d,function(){return i.bind(function(t){return x.getOpt(t)}).getOrDie("Could not find a anchor bar element")}),S=B_.parts.menubar({dom:{tag:"div",classes:["tox-menubar"]},backstage:w,onEscape:function(){d.focus()}}),k=rb(d),C=B_.parts.toolbar(lt({dom:{tag:"div",classes:["tox-toolbar"]},getSink:g,providers:w.shared.providers,onEscape:function(){d.focus()},type:k,lazyToolbar:function(){return i.bind(function(t){return B_.getToolbar(t)}).getOrDie("Could not find more toolbar element")},lazyHeader:function(){return m().getOrDie("Could not find header element")}},b)),O=B_.parts["multiple-toolbar"]({dom:{tag:"div",classes:["tox-toolbar-overlord"]},providers:w.shared.providers,onEscape:function(){d.focus()},type:k}),_=B_.parts.socket({dom:{tag:"div",classes:["tox-edit-area"]}}),T=B_.parts.sidebar({dom:{tag:"div",classes:["tox-sidebar"]}}),E=B_.parts.throbber({dom:{tag:"div",classes:["tox-throbber"]},backstage:w}),D=d.getParam("statusbar",!0,"boolean")&&!r?vt.some(cD(d,w.shared.providers)):vt.none(),A={dom:{tag:"div",classes:["tox-sidebar-wrap"]},components:[_,T]},B=ob(d),M=pv(d),F=gv(d),I=B_.parts.header({dom:lt({tag:"div",classes:["tox-editor-header"]},b),components:ft([F?[S]:[],B?[O]:M?[C]:[],cb(d)?[]:[x.asSpec()]]),sticky:fb(d),editor:d,sharedBackstage:w.shared}),R=ft([s?[]:[I],r?[]:[A],s?[I]:[]]),N=ft([[{dom:{tag:"div",classes:["tox-editor-container"]},components:R}],r?[]:D.toArray(),[E]]),P=lb(d),V=lt(lt({role:"application"},fh.isRtl()?{dir:"rtl"}:{}),P?{"aria-hidden":"true"}:{}),H=Tu(B_.sketch({dom:{tag:"div",classes:["tox","tox-tinymce"].concat(r?["tox-tinymce-inline"]:[]).concat(s?["tox-tinymce--toolbar-bottom"]:[]).concat(c).concat(a),styles:lt({visibility:"hidden"},P?{opacity:"0",border:"0"}:{}),attributes:V},components:N,behaviours:ec([gb(),gd.config({disableClass:"tox-tinymce--disabled"}),Tg.config({mode:"cyclic",selector:".tox-menubar, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow--open, .tox-sidebar__overflow--open, .tox-statusbar__path, .tox-statusbar__wordcount, .tox-statusbar__branding a, .tox-statusbar__resize-handle"})])})),i=vt.some(H);d.shortcuts.add("alt+F9","focus menubar",function(){B_.focusMenubar(H)}),d.shortcuts.add("alt+F10","focus toolbar",function(){B_.focusToolbar(H)}),d.addCommand("ToggleToolbarDrawer",function(){B_.toggleToolbarDrawer(H)}),d.addQueryStateHandler("ToggleToolbarDrawer",function(){return B_.isToolbarDrawerToggled(H)});var L,z,U,j,W,G,X,Y,q,K=tx(H),J=tx(y);function $(){var t,e,n,o,r,i,u=$_((o=cv(n=e=d),r=fv(n),i=mv(n),J_(o).map(function(t){return Q_(t,r,i)}).getOr(cv(e)))),a=$_(Z_(t=d).getOr(sv(t)));return d.inline||(he("div","width",a)&&fe(H.element,"width",a),he("div","height",u)?fe(H.element,"height",u):fe(H.element,"height","200px")),u}return L=d,z=K,U=J,j=Sa(),W=pc(j,"touchstart",tt),G=pc(j,"touchmove",function(t){return Q(zi(),t)}),X=pc(j,"touchend",function(t){return Q(Ui(),t)}),Y=pc(j,"mousedown",tt),q=pc(j,"mouseup",function(t){0===t.raw.button&&Z(wf(),{target:t.target})}),L.on("PostRender",function(){L.on("click",et),L.on("tap",et),L.on("mouseup",nt),L.on("mousedown",ot),L.on("ScrollWindow",rt),L.on("ResizeWindow",it),L.on("ResizeEditor",ut),L.on("AfterProgressState",at),L.on("DismissPopups",ct)}),L.on("remove",function(){L.off("click",et),L.off("tap",et),L.off("mouseup",nt),L.off("mousedown",ot),L.off("ScrollWindow",rt),L.off("ResizeWindow",it),L.off("ResizeEditor",ut),L.off("AfterProgressState",at),L.off("DismissPopups",ct),Y.unbind(),W.unbind(),G.unbind(),X.unbind(),q.unbind()}),L.on("detach",function(){zs(z),zs(U),z.destroy(),U.destroy()}),{mothership:K,uiMothership:J,backstage:w,renderUI:function(){var o,r;v.setup(d,w.shared,m),ZT(d,w),fE(d,g,w),r=(o=d).ui.registry.getAll().sidebars,St(Ct(r),function(e){function n(){return mt(vt.from(o.queryCommandValue("ToggleSidebar")),e)}var t=r[e];o.ui.registry.addToggleButton(e,{icon:t.icon,tooltip:t.tooltip,onAction:function(t){o.execCommand("ToggleSidebar",!1,e),t.setActive(n())},onSetup:function(t){function e(){return t.setActive(n())}return o.on("ToggleSidebar",e),function(){o.off("ToggleSidebar",e)}}})}),x1(d,p,w.shared),dt(d.getParam("toolbar_groups",{},"object"),function(t,e){d.ui.registry.addGroupToolbarButton(e,t)});var t,e=d.ui.registry.getAll(),n=e.buttons,i=e.menuItems,u=e.contextToolbars,a=e.sidebars,c=hv(d),s={menuItems:i,menus:(t=d.getParam("menu"))?dt(t,function(t){return lt(lt({},t),{items:t.items})}):{},menubar:d.getParam("menubar"),toolbar:c.getOrThunk(function(){return d.getParam("toolbar",!0)}),allowToolbarGroups:k===vv.floating,buttons:n,sidebar:a};fT(d,u,y,{backstage:w}),RE(d,y);var l=d.getElement(),f=$();return h.render(d,{mothership:K,uiMothership:J,outerContainer:H},s,w,{targetNode:l,height:f})},getUi:function(){return{channels:{broadcastAll:J.broadcast,broadcastOn:J.broadcastOn,register:st}}}};function Q(e,n){St([z,U],function(t){t.broadcastEvent(e,n)})}function Z(e,n){St([z,U],function(t){t.broadcastOn([e],n)})}function tt(t){return Z(yf(),{target:t.target})}function et(t){return Z(yf(),{target:Mt.fromDom(t.target)})}function nt(t){0===t.button&&Z(wf(),{target:Mt.fromDom(t.target)})}function ot(){St(L.editorManager.get(),function(t){L!==t&&t.fire("DismissPopups",{relatedTarget:L})})}function rt(t){return Q(ji(),Mc(t))}function it(t){Z(xf(),{}),Q(Wi(),Mc(t))}function ut(){return Z(xf(),{})}function at(t){t.state&&Z(yf(),{target:Mt.fromDom(L.getContainer())})}function ct(t){Z(yf(),{target:Mt.fromDom(t.relatedTarget.getContainer())})}}function lD(e){return ar("items","items",jn(),eo(io(function(t){return ao("Checking item of "+e,ZA,t).fold(function(t){return Nn.error(ur(t))},function(t){return Nn.value(t)})})))}function fD(t){return y(t.type)&&y(t.name)}function dD(t){return{internalDialog:co(ao("dialog",aB,t)),dataValidator:(e=H(F(lB(t),fD),function(e){return vt.from(fB[e.type]).fold(function(){return[]},function(t){return[go(e.name,t)]})}),$o(e)),initialData:t.initialData};var e}function mD(t){var n=[],o={};return J(t,function(t,e){t.fold(function(){n.push(e)},function(t){o[e]=t})}),0<n.length?Nn.error(n):Nn.value(o)}function gD(t,e){fe(t,"height",e+"px"),ln().browser.isIE()?ve(t,"flex-basis"):fe(t,"flex-basis",e+"px")}function pD(t,d,e){Fu(t,'[role="dialog"]').each(function(f){Iu(f,'[role="tablist"]').each(function(l){e.get().map(function(t){return fe(d,"height","0"),fe(d,"flex-basis","0"),Math.min(t,(n=d,o=l,r=Gt(e=f).dom,i="fixed"===ge(Fu(e,".tox-dialog-wrap").getOr(e),"position")?Math.max(r.clientHeight,window.innerHeight):Math.max(r.offsetHeight,r.scrollHeight),u=xe(n),a=n.dom.offsetLeft>=o.dom.offsetLeft+Ce(o)?Math.max(xe(o),u):u,c=parseInt(ge(e,"margin-top"),10)||0,s=parseInt(ge(e,"margin-bottom"),10)||0,i-(xe(e)+c+s-a)));var e,n,o,r,i,u,a,c,s}).each(function(t){gD(d,t)})})})}function hD(t){return Iu(t,'[role="tabpanel"]')}function vD(t,n){function o(t){var e=mD(Df.getValue(t)).getOr({}),n=i.get(),o=Yo(n,e);i.set(o)}function r(t){var e=i.get();Df.setValue(t,e)}var u,a,i=Po({}),c=Po(null),e=B(t.tabs,function(t){return{value:t.name,dom:{tag:"div",classes:["tox-dialog__body-nav-item"],innerHtml:n.shared.providers.translate(t.title)},view:function(){return[ek.sketch(function(e){return{dom:{tag:"div",classes:["tox-form"]},components:B(t.items,function(t){return pC(e,t,n)}),formBehaviours:ec([Tg.config({mode:"acyclic",useTabstopAt:O(gw)}),mm("TabView.form.events",[ou(r),ru(o)]),ic.config({channels:lr([{key:wB,value:{onReceive:o}},{key:SB,value:{onReceive:r}}])})])}})]}}}),s=(u=e,a=gc(),{extraEvents:[ou(function(t){var o=t.element;hD(o).each(function(e){var n;fe(e,"visibility","hidden"),t.getSystem().getByDom(e).toOptional().each(function(t){var o,r,i;Y(G((r=e,i=t,B(o=u,function(t,e){Dg.set(i,o[e].view());var n=r.dom.getBoundingClientRect();return Dg.set(i,[]),n.height})),function(t,e){return e<t?-1:t<e?1:0})).fold(a.clear,a.set)}),pD(o,e,a),ve(e,"visibility"),n=t,Y(u).each(function(t){return xB.showTab(n,t.value)}),rp.requestAnimationFrame(function(){pD(o,e,a)})})}),Cr(Wi(),function(t){var e=t.element;hD(e).each(function(t){pD(e,t,a)})}),Cr(_x,function(t,e){var r=t.element;hD(r).each(function(e){var t=Oa(gn(e));fe(e,"visibility","hidden");var n=pe(e,"height").map(function(t){return parseInt(t,10)});ve(e,"height"),ve(e,"flex-basis");var o=e.dom.getBoundingClientRect().height;n.forall(function(t){return t<o})?(a.set(o),pD(r,e,a)):n.each(function(t){gD(e,t)}),ve(e,"visibility"),t.each(ka)})})],selectFirst:!1});return xB.sketch({dom:{tag:"div",classes:["tox-dialog__body"]},onChangeTab:function(t,e,n){var o=Df.getValue(e);br(t,Ox,{name:o,oldName:c.get()}),c.set(o)},tabs:e,components:[xB.parts.tabbar({dom:{tag:"div",classes:["tox-dialog__body-nav"]},components:[hB.parts.tabs({})],markers:{tabClass:"tox-tab",selectedClass:"tox-dialog__body-nav-item--active"},tabbarBehaviours:ec([gx.config({})])}),xB.parts.tabview({dom:{tag:"div",classes:["tox-dialog__body-content"]}})],selectFirst:s.selectFirst,tabSectionBehaviours:ec([mm("tabpanel",s.extraEvents),Tg.config({mode:"acyclic"}),cd.config({find:function(t){return Y(xB.getViewItems(t))}}),Df.config({store:{mode:"manual",getValue:function(t){return t.getSystem().broadcastOn([wB],{}),i.get()},setValue:function(t,e){i.set(e),t.getSystem().broadcastOn([SB],{})}}})])})}function bD(t,e,r,n){return{dom:{tag:"div",classes:["tox-dialog__content-js"],attributes:lt(lt({},e.map(function(t){return{id:t}}).getOr({})),n?{"aria-live":"polite"}:{})},components:[],behaviours:ec([ak(0),wT.config({channel:OB,updateState:function(t,e){return vt.some({isTabPanel:function(){return"tabpanel"===e.body.type}})},renderComponents:function(t){return"tabpanel"!==t.body.type?[(n=t.body,o=r,{dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[(e=Lm(ek.sketch(function(e){return{dom:{tag:"div",classes:["tox-form"].concat(n.classes)},components:B(n.items,function(t){return pC(e,t,o)})}}))).asSpec()]}],behaviours:ec([Tg.config({mode:"acyclic",useTabstopAt:O(gw)}),uk(e),dk(e,{postprocess:function(t){return mD(t).fold(function(t){return console.error(t),{}},h)}})])})]:[vD(t.body,r)];var n,o,e},initialData:t})])}}function yD(t,e){return{dom:{tag:"div",styles:{display:"none"},classes:["tox-dialog__header"]},components:[t,e]}}function xD(t,e){return qD.parts.close(ip.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":e.translate("Close")}},action:t,buttonBehaviours:ec([gx.config({})])}))}function wD(){return qD.parts.title({dom:{tag:"div",classes:["tox-dialog__title"],innerHtml:"",styles:{display:"none"}}})}function SD(t,e){return qD.parts.body({dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[{dom:Hm("<p>"+nh(e.translate(t))+"</p>")}]}]})}function kD(t){return qD.parts.footer({dom:{tag:"div",classes:["tox-dialog__footer"]},components:t})}function CD(t,e){return[sx.sketch({dom:{tag:"div",classes:["tox-dialog__footer-start"]},components:t}),sx.sketch({dom:{tag:"div",classes:["tox-dialog__footer-end"]},components:e})]}function OD(e){var t,n="tox-dialog",o=n+"-wrap",r=o+"__backdrop",i=n+"__disable-scroll";return qD.sketch({lazySink:e.lazySink,onEscape:function(t){return e.onEscape(t),vt.some(!0)},useTabstopAt:function(t){return!gw(t)},dom:{tag:"div",classes:[n].concat(e.extraClasses),styles:lt({position:"relative"},e.extraStyles)},components:V([e.header,e.body],e.footer.toArray(),!0),parts:{blocker:{dom:Hm('<div class="'+o+'"></div>'),components:[{dom:{tag:"div",classes:EB?[r,r+"--opaque"]:[r]}}]}},dragBlockClass:o,modalBehaviours:ec(V([Mg.config({}),mm("dialog-events",e.dialogEvents.concat([Ar(bi(),function(t,e){Tg.focusIn(t)})])),mm("scroll-lock",[ou(function(){Yr(bn(),i)}),ru(function(){qr(bn(),i)})])],e.extraBehaviours,!0)),eventOrder:lt(((t={})[Ii()]=["dialog-events"],t[Gi()]=["scroll-lock","dialog-events","alloy.base.behaviour"],t[Xi()]=["alloy.base.behaviour","dialog-events","scroll-lock"],t),e.eventOrder)})}function _D(t){return ip.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":t.translate("Close"),title:t.translate("Close")}},components:[sh("close",{tag:"div",classes:["tox-icon"]},t.icons)],action:function(t){vr(t,xx)}})}function TD(t,e,n){function o(t){return[ri(n.translate(t.title))]}return{dom:{tag:"div",classes:["tox-dialog__title"],attributes:lt({},e.map(function(t){return{id:t}}).getOr({}))},components:o(t),behaviours:ec([wT.config({channel:CB,renderComponents:o})])}}function ED(){return{dom:Hm('<div class="tox-dialog__draghandle"></div>')}}function DD(t,e){return n={title:e.shared.providers.translate(t),draggable:e.dialog.isDraggableModal()},o=e.shared.providers,r=qD.parts.title(TD(n,vt.none(),o)),i=qD.parts.draghandle(ED()),u=qD.parts.close(_D(o)),a=[r].concat(n.draggable?[i]:[]).concat([u]),sx.sketch({dom:Hm('<div class="tox-dialog__header"></div>'),components:a});var n,o,r,i,u,a}function AD(t,e,n){return{dom:{tag:"div",classes:["tox-dialog__busy-spinner"],attributes:{"aria-label":n.translate(t)},styles:{left:"0px",right:"0px",bottom:"0px",top:"0px",position:"absolute"}},behaviours:e,components:[{dom:Hm('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}}function BD(t,o,e){return{onClose:function(){return e.closeWindow()},onBlock:function(n){qD.setBusy(t(),function(t,e){return AD(n.message,e,o)})},onUnblock:function(){qD.setIdle(t())}}}function MD(t,e,n,o){var r;return Tu(OD(lt(lt({},t),{lazySink:o.shared.getSink,extraBehaviours:V([wT.config({channel:kB,updateState:function(t,e){return vt.some(e)},initialData:e}),gk({})],t.extraBehaviours,!0),onEscape:function(t){vr(t,xx)},dialogEvents:n,eventOrder:((r={})[Fi()]=[wT.name(),ic.name()],r[Gi()]=["scroll-lock",wT.name(),"messages","dialog-events","alloy.base.behaviour"],r[Xi()]=["alloy.base.behaviour","dialog-events","messages",wT.name(),"scroll-lock"],r)})))}function FD(t){return B(t,function(t){return"menu"===t.type?(n=B((e=t).items,function(t){var e=Po(!1);return lt(lt({},t),{storage:e})}),lt(lt({},e),{items:n})):t;var e,n})}function ID(t){return R(t,function(t,e){return"menu"!==e.type?t:R(e.items,function(t,e){return t[e.name]=e.storage,t},t)},{})}function RD(t,n){return[Er(bi(),mw),t(yx,function(t,e){n.onClose(),e.onClose()}),t(xx,function(t,e,n,o){e.onCancel(t),vr(o,yx)}),Cr(Cx,function(t,e){return n.onUnblock()}),Cr(kx,function(t,e){return n.onBlock(e.event)})]}function ND(t,e){function n(t,e){return sx.sketch({dom:{tag:"div",classes:["tox-dialog__footer-"+t]},components:B(e,function(t){return t.memento.asSpec()})})}var o=M(e.map(function(t){return t.footerButtons}).getOr([]),function(t){return"start"===t.align});return[n("start",o.pass),n("end",o.fail)]}function PD(t,n){return{dom:Hm('<div class="tox-dialog__footer"></div>'),components:[],behaviours:ec([wT.config({channel:_B,initialData:t,updateState:function(t,e){var r=B(e.buttons,function(t){var e=Lm($w(t,t.type,n));return{name:t.name,align:t.align,memento:e}});return vt.some({lookupByName:function(t,e){return n=t,o=e,N(r,function(t){return t.name===o}).bind(function(t){return t.memento.getOpt(n)});var n,o},footerButtons:r})},renderComponents:ND})])}}function VD(t,e){return qD.parts.footer(PD(t,e))}function HD(e,n){if(e.getRoot().getSystem().isConnected()){var o=cd.getCurrent(e.getFormWrapper()).getOr(e.getFormWrapper());return ek.getField(o,n).fold(function(){var t=e.getFooter();return wT.getState(t).get().bind(function(t){return t.lookupByName(o,n)})},function(t){return vt.some(t)})}return vt.none()}function LD(c,o,s){function t(t){var e=c.getRoot();e.getSystem().isConnected()&&t(e)}var l={getData:function(){var t=c.getRoot(),e=t.getSystem().isConnected()?c.getFormWrapper():t,n=Df.getValue(e),o=dt(s,function(t){return t.get()});return lt(lt({},n),o)},setData:function(a){t(function(t){var e,n,o=l.getData(),r=lt(lt({},o),a),i=(e=r,n=c.getRoot(),wT.getState(n).get().map(function(t){return co(ao("data",t.dataValidator,e))}).getOr(e)),u=c.getFormWrapper();Df.setValue(u,i),J(s,function(t,e){Tt(r,e)&&t.set(r[e])})})},disable:function(t){HD(c,t).each(gd.disable)},enable:function(t){HD(c,t).each(gd.enable)},focus:function(t){HD(c,t).each(Mg.focus)},block:function(e){if(!y(e))throw new Error("The dialogInstanceAPI.block function should be passed a blocking message of type string as an argument");t(function(t){br(t,kx,{message:e})})},unblock:function(){t(function(t){vr(t,Cx)})},showTab:function(n){t(function(t){var e=c.getBody();wT.getState(e).get().exists(function(t){return t.isTabPanel()})&&cd.getCurrent(e).each(function(t){xB.showTab(t,n)})})},redial:function(n){t(function(t){var e=o(n);t.getSystem().broadcastOn([kB],e),t.getSystem().broadcastOn([CB],e.internalDialog),t.getSystem().broadcastOn([OB],e.internalDialog),t.getSystem().broadcastOn([_B],e.internalDialog),l.setData(e.initialData)})},close:function(){t(function(t){vr(t,yx)})}};return l}function zD(t){return x(t)&&-1!==FB.indexOf(t.mceAction)}function UD(o,t,r,e){var n,i,u,a=DD(o.title,e),c=(i={dom:{tag:"div",classes:["tox-dialog__content-js"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-iframe"]},components:[fw({dom:{tag:"iframe",attributes:{src:o.url}},behaviours:ec([gx.config({}),Mg.config({})])})]}],behaviours:ec([Tg.config({mode:"acyclic",useTabstopAt:O(gw)})])},qD.parts.body(i)),s=o.buttons.bind(function(t){return 0===t.length?vt.none():vt.some(VD({buttons:t},e))}),l=DB(function(){return v},BD(function(){return h},e.shared.providers,t)),f=lt(lt({},o.height.fold(function(){return{}},function(t){return{height:t+"px","max-height":t+"px"}})),o.width.fold(function(){return{}},function(t){return{width:t+"px","max-width":t+"px"}})),d=o.width.isNone()&&o.height.isNone()?["tox-dialog--width-lg"]:[],m=new MB(o.url,{base_uri:new MB(window.location.href)}),g=m.protocol+"://"+m.host+(m.port?":"+m.port:""),p=mc(),h=MD({header:a,body:c,footer:s,extraClasses:d,extraBehaviours:[mm("messages",[ou(function(){var t=pc(Mt.fromDom(window),"message",function(t){var e,n;m.isSameOrigin(new MB(t.raw.origin))&&(zD(e=t.raw.data)?function(t,e,n){switch(n.mceAction){case"insertContent":t.insertContent(n.content);break;case"setContent":t.setContent(n.content);break;case"execCommand":var o=!!w(n.ui)&&n.ui;t.execCommand(n.cmd,o,n.value);break;case"close":e.close();break;case"block":e.block(n.message);break;case"unblock":e.unblock()}}(r,v,e):!zD(n=e)&&x(n)&&Tt(n,"mceAction")&&o.onMessage(v,e))});p.set(t)}),ru(p.clear)]),ic.config({channels:((n={})[TB]={onReceive:function(t,e){Iu(t.element,"iframe").each(function(t){t.dom.contentWindow.postMessage(e,g)})}},n)})],extraStyles:f},o,l,e),v={block:function(e){if(!y(e))throw new Error("The urlDialogInstanceAPI.block function should be passed a blocking message of type string as an argument");b(function(t){br(t,kx,{message:e})})},unblock:function(){b(function(t){vr(t,Cx)})},close:function(){b(function(t){vr(t,yx)})},sendMessage:function(e){b(function(t){t.getSystem().broadcastOn([TB],e)})}};function b(t){u.getSystem().isConnected()&&t(u)}return{dialog:u=h,instanceApi:v}}function jD(t){function o(t,y){return dB.open(function(t,e,n){var o,r,i,u,a,c,s,l,f,d,m,g,p,h,v=e,b=(r={redial:dB.redial,closeWindow:function(){qD.hide(b.dialog),y(b.instanceApi)}},i=R,c=DD((o={dataValidator:n,initialData:v,internalDialog:t}).internalDialog.title,i),u=i,a=bD({body:o.internalDialog.body},vt.none(),u,!1),s=qD.parts.body(a),l=FD(o.internalDialog.buttons),f=ID(l),d=VD({buttons:l},i),m=AB(function(){return h},BD(function(){return p},i.shared.providers,r),i.shared.getSink),g=function(){switch(o.internalDialog.size){case"large":return["tox-dialog--width-lg"];case"medium":return["tox-dialog--width-md"];default:return[]}}(),p=MD({header:c,body:s,footer:vt.some(d),extraClasses:g,extraBehaviours:[],extraStyles:{}},o,m,i),h=LD({getRoot:rt(p),getBody:function(){return qD.getBody(p)},getFooter:function(){return qD.getFooter(p)},getFormWrapper:function(){var t=qD.getBody(p);return cd.getCurrent(t).getOr(t)}},r.redial,f),{dialog:p,instanceApi:h});return qD.show(b.dialog),b.instanceApi.setData(v),b.instanceApi},t)}function r(t,M,F,I){return dB.open(function(t,e,n){function o(){return E.on(function(t){tp.reposition(t),zO.refresh(t)})}var r,i,u,a,c,s,l,f,d,m,g,p,h,v,b,y,x,w,S,k,C,O,_,T=co(ao("data",n,e)),E=gc(),D=R.shared.header.isPositionedAtTop(),A=(i={dataValidator:n,initialData:T,internalDialog:t},u={redial:dB.redial,closeWindow:function(){E.on(tp.hide),N.off("ResizeEditor",o),E.clear(),F(A.instanceApi)}},a=R,c=I,v=Ir("dialog-label"),b=Ir("dialog-content"),y=Lm((f={title:i.internalDialog.title,draggable:!0},d=v,m=a.shared.providers,sx.sketch({dom:Hm('<div class="tox-dialog__header"></div>'),components:[TD(f,vt.some(d),m),ED(),_D(m)],containerBehaviours:ec([iD.config({mode:"mouse",blockerClass:"blocker",getTarget:function(t){return Ru(t,'[role="dialog"]').getOrDie()},snaps:{getSnapPoints:function(){return[]},leftAttr:"data-drag-left",topAttr:"data-drag-top"}})])}))),x=Lm((g={body:i.internalDialog.body},p=a,h=c,bD(g,vt.some(b),p,h))),w=FD(i.internalDialog.buttons),S=ID(w),k=Lm(BB({buttons:w},a)),C=AB(function(){return _},{onBlock:function(n){s_.block(O,function(t,e){return AD(n.message,e,a.shared.providers)})},onUnblock:function(){s_.unblock(O)},onClose:function(){return u.closeWindow()}},a.shared.getSink),O=Tu({dom:{tag:"div",classes:["tox-dialog","tox-dialog-inline"],attributes:((s={role:"dialog"})["aria-labelledby"]=v,s["aria-describedby"]=b,s)},eventOrder:((l={})[Fi()]=[wT.name(),ic.name()],l[Ii()]=["execute-on-form"],l[Gi()]=["reflecting","execute-on-form"],l),behaviours:ec([Tg.config({mode:"cyclic",onEscape:function(t){return vr(t,yx),vt.some(!0)},useTabstopAt:function(t){return!gw(t)&&("button"!==Ft(t)||"disabled"!==ie(t,"disabled"))}}),wT.config({channel:kB,updateState:function(t,e){return vt.some(e)},initialData:i}),Mg.config({}),mm("execute-on-form",C.concat([Ar(bi(),function(t,e){Tg.focusIn(t)})])),s_.config({getRoot:function(){return vt.some(O)}}),Dg.config({}),gk({})]),components:[y.asSpec(),x.asSpec(),k.asSpec()]}),_=LD({getRoot:rt(O),getFooter:function(){return k.get(O)},getBody:function(){return x.get(O)},getFormWrapper:function(){var t=x.get(O);return cd.getCurrent(t).getOr(t)}},u.redial,S),{dialog:O,instanceApi:_}),B=Tu(tp.sketch(lt(lt({lazySink:R.shared.getSink,dom:{tag:"div",classes:[]},fireDismissalEventInstead:{}},D?{}:{fireRepositionEventInstead:{}}),{inlineBehaviours:ec(V([mm("window-manager-inline-events",[Cr(Yi(),function(t,e){vr(A.dialog,xx)})])],(r=N,P&&D?[]:[zO.config({contextual:{lazyContext:function(){return vt.some(Mn(Mt.fromDom(r.getContentAreaContainer())))},fadeInClass:"tox-dialog-dock-fadein",fadeOutClass:"tox-dialog-dock-fadeout",transitionClass:"tox-dialog-dock-transition"},modes:["top"]})]),!0)),isExtraPart:function(t,e){return Xy(n=e,".tox-alert-dialog")||Xy(n,".tox-confirm-dialog");var n}})));return E.set(B),tp.showWithin(B,Eu(A.dialog),{anchor:M},vt.some(bn())),P&&D||(zO.refresh(B),N.on("ResizeEditor",o)),A.instanceApi.setData(T),Tg.focusIn(A.dialog),A.instanceApi},t)}var c,s,l,f,R=t.backstage,N=t.editor,P=fb(N),n=(s=(c=t).backstage.shared,{open:function(t,e){function n(){qD.hide(u),e()}var o=Lm($w({name:"close-alert",text:"OK",primary:!0,align:"end",disabled:!1,icon:vt.none()},"cancel",c.backstage)),r=wD(),i=xD(n,s.providers),u=Tu(OD({lazySink:function(){return s.getSink()},header:yD(r,i),body:SD(t,s.providers),footer:vt.some(kD(CD([],[o.asSpec()]))),onEscape:n,extraClasses:["tox-alert-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[Cr(xx,n)],eventOrder:{}}));qD.show(u);var a=o.get(u);Mg.focus(a)}}),i=(f=(l=t).backstage.shared,{open:function(t,e){function n(t){qD.hide(a),e(t)}var o=Lm($w({name:"yes",text:"Yes",primary:!0,align:"end",disabled:!1,icon:vt.none()},"submit",l.backstage)),r=$w({name:"no",text:"No",primary:!1,align:"end",disabled:!1,icon:vt.none()},"cancel",l.backstage),i=wD(),u=xD(function(){return n(!1)},f.providers),a=Tu(OD({lazySink:function(){return f.getSink()},header:yD(i,u),body:SD(t,f.providers),footer:vt.some(kD(CD([],[r,o.asSpec()]))),onEscape:function(){return n(!1)},extraClasses:["tox-confirm-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[Cr(xx,function(){return n(!1)}),Cr(Sx,function(){return n(!0)})],eventOrder:{}}));qD.show(a);var c=o.get(a);Mg.focus(c)}});return{open:function(t,e,n){return void 0!==e&&"toolbar"===e.inline?r(t,R.shared.anchors.inlineDialog(),n,e.ariaAttrs):void 0!==e&&"cursor"===e.inline?r(t,R.shared.anchors.cursor(),n,e.ariaAttrs):o(t,n)},openUrl:function(t,e){return n=e,dB.openUrl(function(t){var e=UD(t,{closeWindow:function(){qD.hide(e.dialog),n(e.instanceApi)}},N,R);return qD.show(e.dialog),e.instanceApi},t);var n},alert:function(t,e){n.open(t,function(){e()})},close:function(t){t.close()},confirm:function(t,e){i.open(t,function(t){e(t)})}}}(PE=NE=NE||{})[PE.None=0]="None",PE[PE.Both=1]="Both",PE[PE.Vertical=2]="Vertical";var WD,GD=rt([mo("lazySink"),wo("dragBlockClass"),Io("getBounds",Fn),Eo("useTabstopAt",D),Eo("eventOrder",{}),Zs("modalBehaviours",[Tg]),$u("onExecute"),Zu("onEscape")]),XD={sketch:h},YD=rt([Qf({name:"draghandle",overrides:function(t,e){return{behaviours:ec([iD.config({mode:"mouse",getTarget:function(t){return Fu(t,'[role="dialog"]').getOr(t)},blockerClass:t.dragBlockClass.getOrDie(new Error("The drag blocker class was not specified for a dialog with a drag handle: \n"+JSON.stringify(e,null,2)).message),getBounds:t.getDragBounds})])}}}),Jf({schema:[mo("dom")],name:"title"}),Jf({factory:XD,schema:[mo("dom")],name:"close"}),Jf({factory:XD,schema:[mo("dom")],name:"body"}),Qf({factory:XD,schema:[mo("dom")],name:"footer"}),$f({factory:{sketch:function(t,e){return lt(lt({},t),{dom:e.dom,components:e.components})}},schema:[Eo("dom",{tag:"div",styles:{position:"fixed",left:"0px",top:"0px",right:"0px",bottom:"0px"}}),Eo("components",[])],name:"blocker"})]),qD=Cl({name:"ModalDialog",configFields:GD(),partFields:YD(),factory:function(a,t,e,r){var n,i=gc(),o=Ir("modal-events"),u=lt(lt({},a.eventOrder),((n={})[Gi()]=[o].concat(a.eventOrder["alloy.system.attached"]||[]),n));return{uid:a.uid,dom:a.dom,components:t,apis:{show:function(t){i.set(t);var e=a.lazySink(t).getOrDie(),n=r.blocker(),o=e.getSystem().build(lt(lt({},n),{components:n.components.concat([Eu(t)]),behaviours:ec([Mg.config({}),mm("dialog-blocker-events",[Ar(bi(),function(){Tg.focusIn(t)})])])}));Ns(e,o),Tg.focusIn(t)},hide:function(e){i.clear(),Yt(e.element).each(function(t){e.getSystem().getByDom(t).each(function(t){Vs(t)})})},getBody:function(t){return gl(t,a,"body")},getFooter:function(t){return gl(t,a,"footer")},setIdle:function(t){s_.unblock(t)},setBusy:function(t,e){s_.block(t,e)}},eventOrder:u,domModification:{attributes:{role:"dialog","aria-modal":"true"}},behaviours:el(a.modalBehaviours,[Dg.config({}),Tg.config({mode:"cyclic",onEnter:a.onExecute,onEscape:a.onEscape,useTabstopAt:a.useTabstopAt}),s_.config({getRoot:i.get}),mm(o,[ou(function(t){var e,n,o,r=t.element,i=gl(t,a,"title").element,u=ue(r,"id").fold(function(){var t=Ir("dialog-label");return oe(i,"id",t),t},h);oe(r,"aria-labelledby",u),e=t.element,n=gl(t,a,"body").element,o=vt.from(ie(e,"id")).fold(function(){var t=Ir("dialog-describe");return oe(n,"id",t),t},h),oe(e,"aria-describedby",o)})])])}},apis:{show:function(t,e){t.show(e)},hide:function(t,e){t.hide(e)},getBody:function(t,e){return t.getBody(e)},getFooter:function(t,e){return t.getFooter(e)},setBusy:function(t,e,n){t.setBusy(e,n)},setIdle:function(t,e){t.setIdle(e)}}}),KD=$o([po("type"),po("name")].concat(Lv)),JD=nr,$D=[ar("name","name",Wn(function(){return Ir("button-name")}),er),Co("icon"),Mo("align","end",["start","end"]),Fo("primary",!1),Fo("disabled",!1)],QD=V(V([],$D,!0),[po("text")],!1),ZD=V([ho("type",["submit","cancel","custom"])],QD,!0),tA=lo("type",{submit:ZD,cancel:ZD,custom:ZD,menu:V([ho("type",["menu"]),Co("text"),Co("tooltip"),Co("icon"),xo("items",KD)],$D,!0)}),eA=[po("type"),po("text"),ho("level",["info","warn","error","success"]),po("icon"),Eo("url","")],nA=$o(eA),oA=[po("type"),po("text"),Fo("disabled",!1),Fo("primary",!1),ar("name","name",Wn(function(){return Ir("button-name")}),er),Co("icon"),Fo("borderless",!1)],rA=$o(oA),iA=[po("type"),po("name"),po("label"),Fo("disabled",!1)],uA=$o(iA),aA=nr,cA=[po("type"),po("name")],sA=cA.concat([Co("label")]),lA=sA.concat([Eo("columns","auto")]),fA=$o(lA),dA=Qo([po("value"),po("text"),po("icon")]),mA=$o(sA),gA=er,pA=$o(sA),hA=er,vA=cA.concat([Bo("tag","textarea"),po("scriptId"),po("scriptUrl"),Do("settings",void 0,ir)]),bA=cA.concat([Bo("tag","textarea"),vo("init")]),yA=io(function(t){return ao("customeditor.old",to(bA),t).orThunk(function(){return ao("customeditor.new",to(vA),t)})}),xA=er,wA=$o(sA),SA=eo(Jo),kA=[po("type"),po("html"),Mo("presets","presentation",["presentation","document"])],CA=$o(kA),OA=sA.concat([Fo("sandboxed",!0)]),_A=$o(OA),TA=er,EA=sA.concat([go("currentState",$o([mo("blob"),po("url")]))]),DA=$o(EA),AA=sA.concat([Co("inputMode"),Co("placeholder"),Fo("maximized",!1),Fo("disabled",!1)]),BA=$o(AA),MA=er,FA=[po("text"),po("value")],IA=[po("text"),xo("items",(WD=Rt(function(){return RA}),{extract:function(t,e){return WD().extract(t,e)},toString:function(){return WD().toString()}}))],RA=no([$o(FA),$o(IA)]),NA=sA.concat([xo("items",RA),Fo("disabled",!1)]),PA=$o(NA),VA=er,HA=sA.concat([yo("items",[po("text"),po("value")]),Ao("size",1),Fo("disabled",!1)]),LA=$o(HA),zA=er,UA=sA.concat([Fo("constrain",!0),Fo("disabled",!1)]),jA=$o(UA),WA=$o([po("width"),po("height")]),GA=[po("type"),xo("header",er),xo("cells",eo(er))],XA=$o(GA),YA=sA.concat([Co("placeholder"),Fo("maximized",!1),Fo("disabled",!1)]),qA=$o(YA),KA=er,JA=sA.concat([Mo("filetype","file",["image","media","file"]),Eo("disabled",!1)]),$A=$o(JA),QA=$o([po("value"),Eo("meta",{})]),ZA=Zn(function(){return ro("type",{alertbanner:nA,bar:$o((n=lD("bar"),[po("type"),n])),button:rA,checkbox:uA,colorinput:mA,colorpicker:pA,dropzone:wA,grid:$o((t=lD("grid"),[po("type"),go("columns",tr),t])),iframe:_A,input:BA,listbox:PA,selectbox:LA,sizeinput:jA,textarea:qA,urlinput:$A,customeditor:yA,htmlpanel:CA,imagetools:DA,collection:fA,label:$o((e=lD("label"),[po("type"),po("label"),e])),table:XA,panel:eB});var t,e,n}),tB=[po("type"),Eo("classes",[]),xo("items",ZA)],eB=$o(tB),nB=[ar("name","name",Wn(function(){return Ir("tab-name")}),er),po("title"),xo("items",ZA)],oB=[po("type"),yo("tabs",nB)],rB=$o(oB),iB=QD,uB=tA,aB=$o([po("title"),go("body",ro("type",{panel:eB,tabpanel:rB})),Bo("size","normal"),xo("buttons",uB),Eo("initialData",{}),Io("onAction",st),Io("onChange",st),Io("onSubmit",st),Io("onClose",st),Io("onCancel",st),Eo("onTabChange",st)]),cB=$o(V([ho("type",["cancel","custom"])],iB,!0)),sB=$o([po("title"),po("url"),ko("height"),ko("width"),_o("buttons",cB),Io("onAction",st),Io("onCancel",st),Io("onClose",st),Io("onMessage",st)]),lB=function(t){return x(t)?[t].concat(H(Z(t),lB)):c(t)?H(t,lB):[]},fB={checkbox:aA,colorinput:gA,colorpicker:hA,dropzone:SA,input:MA,iframe:TA,sizeinput:WA,selectbox:zA,listbox:VA,size:WA,textarea:KA,urlinput:QA,customeditor:xA,collection:dA,togglemenuitem:JD},dB={open:function(t,e){var n=dD(e);return t(n.internalDialog,n.initialData,n.dataValidator)},openUrl:function(t,e){return t(co(ao("dialog",sB,e)))},redial:dD},mB=kl({name:"TabButton",configFields:[Eo("uid",void 0),mo("value"),ar("dom","dom",Yn(function(){return{attributes:{role:"tab",id:Ir("aria"),"aria-selected":"false"}}}),Zo()),wo("action"),Eo("domModification",{}),Zs("tabButtonBehaviours",[Mg,Tg,Df]),mo("view")],factory:function(t,e){return{uid:t.uid,dom:t.dom,components:t.components,events:Sm(t.action),behaviours:el(t.tabButtonBehaviours,[Mg.config({}),Tg.config({mode:"execution",useSpace:!0,useEnter:!0}),Df.config({store:{mode:"memory",initialValue:t.value}})]),domModification:t.domModification}}}),gB=rt([mo("tabs"),mo("dom"),Eo("clickToDismiss",!1),Zs("tabbarBehaviours",[hd,Tg]),qu(["tabClass","selectedClass"])]),pB=rt([Zf({factory:mB,name:"tabs",unit:"tab",overrides:function(o){return{action:function(t){var e=t.getSystem().getByUid(o.uid).getOrDie(),n=hd.isHighlighted(e,t);(n&&o.clickToDismiss?function(t,e){hd.dehighlight(t,e),br(t,Qi(),{tabbar:t,button:e})}:n?st:function(t,e){hd.highlight(t,e),br(t,$i(),{tabbar:t,button:e})})(e,t)},domModification:{classes:[o.markers.tabClass]}}}})]),hB=Cl({name:"Tabbar",configFields:gB(),partFields:pB(),factory:function(t,e,n,o){return{uid:t.uid,dom:t.dom,components:e,"debug.sketcher":"Tabbar",domModification:{attributes:{role:"tablist"}},behaviours:el(t.tabbarBehaviours,[hd.config({highlightClass:t.markers.selectedClass,itemClass:t.markers.tabClass,onHighlight:function(t,e){oe(e.element,"aria-selected","true")},onDehighlight:function(t,e){oe(e.element,"aria-selected","false")}}),Tg.config({mode:"flow",getInitial:function(t){return hd.getHighlighted(t).map(function(t){return t.element})},selector:"."+t.markers.tabClass,executeOnMove:!0})])}}}),vB=kl({name:"Tabview",configFields:[Zs("tabviewBehaviours",[Dg])],factory:function(t,e){return{uid:t.uid,dom:t.dom,behaviours:el(t.tabviewBehaviours,[Dg.config({})]),domModification:{attributes:{role:"tabpanel"}}}}}),bB=rt([Eo("selectFirst",!0),Ju("onChangeTab"),Ju("onDismissTab"),Eo("tabs",[]),Zs("tabSectionBehaviours",[])]),yB=rt([Jf({factory:hB,schema:[mo("dom"),bo("markers",[mo("tabClass"),mo("selectedClass")])],name:"tabbar",defaults:function(t){return{tabs:t.tabs}}}),Jf({factory:vB,name:"tabview"})]),xB=Cl({name:"TabSection",configFields:bB(),partFields:yB(),factory:function(i,t,e,n){function o(t,e){ml(t,i,"tabbar").each(function(t){e(t).each(yr)})}return{uid:i.uid,dom:i.dom,components:t,behaviours:tl(i.tabSectionBehaviours),events:nu(ft([i.selectFirst?[ou(function(t,e){o(t,hd.getFirst)})]:[],[Cr($i(),function(t,e){var o=e.event.button,r=Df.getValue(o);ml(o,i,"tabview").each(function(n){N(i.tabs,function(t){return t.value===r}).each(function(t){var e=t.view();ue(o.element,"id").each(function(t){oe(n.element,"aria-labelledby",t)}),Dg.set(n,e),i.onChangeTab(n,o,e)})})}),Cr(Qi(),function(t,e){var n=e.event.button;i.onDismissTab(t,n)})]])),apis:{getViewItems:function(t){return ml(t,i,"tabview").map(function(t){return Dg.contents(t)}).getOr([])},showTab:function(t,n){o(t,function(e){return N(hd.getCandidates(e),function(t){return Df.getValue(t)===n}).filter(function(t){return!hd.isHighlighted(e,t)})})}}}},apis:{getViewItems:function(t,e){return t.getViewItems(e)},showTab:function(t,e,n){t.showTab(e,n)}}}),wB="send-data-to-section",SB="send-data-to-view",kB=Ir("update-dialog"),CB=Ir("update-title"),OB=Ir("update-body"),_B=Ir("update-footer"),TB=Ir("body-send-message"),EB=ty.deviceType.isTouch(),DB=function(u,t){function e(t,i){return Cr(t,function(n,o){var e,r;e=n,r=function(t,e){i(u(),t,o.event,n)},wT.getState(e).get().each(function(t){r(t,e)})})}return V(V([],RD(e,t),!0),[e(wx,function(t,e,n){e.onAction(t,{name:n.name})})],!1)},AB=function(u,t,c){function e(t,i){return Cr(t,function(n,o){var e,r;e=n,r=function(t,e){i(u(),t,o.event,n)},wT.getState(e).get().each(function(t){r(t.internalDialog,e)})})}return V(V([],RD(e,t),!0),[e(Sx,function(t,e){return e.onSubmit(t)}),e(bx,function(t,e,n){e.onChange(t,{name:n.name})}),e(wx,function(t,e,n,o){function r(){return Tg.focusIn(o)}function i(t){return ae(t,"disabled")||ue(t,"aria-disabled").exists(function(t){return"true"===t})}var u=gn(o.element),a=Oa(u);e.onAction(t,{name:n.name,value:n.value}),Oa(u).fold(r,function(e){i(e)||a.exists(function(t){return Ut(e,t)&&i(t)})?r():c().toOptional().filter(function(t){return!Ut(t.element,e)}).each(r)})}),e(Ox,function(t,e,n){e.onTabChange(t,{newTabName:n.name,oldTabName:n.oldName})}),ru(function(t){var e=u();Df.setValue(t,e.getData())})],!1)},BB=PD,MB=tinymce.util.Tools.resolve("tinymce.util.URI"),FB=["insertContent","setContent","execCommand","close","block","unblock"];o.add("silver",function(t){var e=sD(t),n=e.uiMothership,o=e.backstage,r=e.renderUI,i=e.getUi;return ix(t,o.shared),{renderUI:r,getWindowManagerImpl:rt(jD({editor:t,backstage:o})),getNotificationManagerImpl:function(){return u=t,r=n,l={backstage:o}.backstage.shared,{open:function(t,e){function n(){e(),tp.hide(c)}var o=!t.closeButton&&t.timeout&&(0<t.timeout||t.timeout<0),a=Tu(ph.sketch({text:t.text,level:wt(["success","error","warning","warn","info"],t.type)?t.type:void 0,progress:!0===t.progressBar,icon:vt.from(t.icon),closeButton:!o,onAction:n,iconProvider:l.providers.icons,translationProvider:l.providers.translate})),c=Tu(tp.sketch(lt({dom:{tag:"div",classes:["tox-notifications-container"]},lazySink:l.getSink,fireDismissalEventInstead:{}},l.header.isPositionedAtTop()?{}:{fireRepositionEventInstead:{}})));function s(){var t=Mn(Mt.fromDom(u.getContentAreaContainer())),e=Fn(),n=Wa(e.x,t.x,t.right),o=Wa(e.y,t.y,t.bottom),r=Math.max(t.right,e.right),i=Math.max(t.bottom,e.bottom);return vt.some(Bn(n,o,r-n,i-o))}return r.add(c),0<t.timeout&&rp.setTimeout(function(){n()},t.timeout),{close:n,moveTo:function(t,e){tp.showAt(c,Eu(a),{anchor:{type:"makeshift",x:t,y:e}})},moveRel:function(t,e){var n,o,r,i=Eu(a),u={maxHeightFunction:Nc()};"banner"!==e&&k(t)?(n=function(){switch(e){case"bc-bc":return op;case"tc-tc":return np;case"tc-bc":return Ja;default:return $a}}(),o={type:"node",root:bn(),node:vt.some(Mt.fromDom(t)),overrides:u,layouts:{onRtl:function(){return[n]},onLtr:function(){return[n]}}},tp.showWithinBounds(c,i,{anchor:o},s)):(r=lt(lt({},l.anchors.banner()),{overrides:u}),tp.showWithinBounds(c,i,{anchor:r},s))},text:function(t){ph.updateText(a,t)},settings:t,getEl:function(){return a.element.dom},progressBar:{value:function(t){ph.updateProgress(a,t)}}}},close:function(t){t.close()},reposition:function(n){0<n.length&&St(n,function(t,e){0===e?t.moveRel(null,"banner"):t.moveRel(n[e-1].getEl(),"bc-tc")})},getArgs:function(t){return t.settings}};var u,r,l},ui:i()}})}();js/common.min.js000064400000030725151727150440007605 0ustar00/**
 * Roundcube common js library
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 */
var CONTROL_KEY=1,SHIFT_KEY=2,CONTROL_SHIFT_KEY=3;function roundcube_browser(){var e=navigator;this.agent=e.userAgent,this.agent_lc=e.userAgent.toLowerCase(),this.name=e.appName,this.vendor=e.vendor||"",this.vendver=e.vendorSub?parseFloat(e.vendorSub):0,this.product=e.product||"",this.platform=String(e.platform).toLowerCase(),this.lang=e.language?e.language.substring(0,2):e.browserLanguage?e.browserLanguage.substring(0,2):e.systemLanguage?e.systemLanguage.substring(0,2):"en",this.win=0<=this.platform.indexOf("win"),this.mac=0<=this.platform.indexOf("mac"),this.linux=0<=this.platform.indexOf("linux"),this.unix=0<=this.platform.indexOf("unix"),this.dom=!!document.getElementById,this.dom2=document.addEventListener&&document.removeEventListener,this.edge=0<this.agent_lc.indexOf(" edge/")||0<this.agent_lc.indexOf(" edg/"),this.webkit=!this.edge&&0<this.agent_lc.indexOf("applewebkit"),this.ie=document.all&&!window.opera||this.win&&0<this.agent_lc.indexOf("trident/"),window.opera?(this.opera=!0,this.vendver=opera.version()):this.ie||this.edge||(this.chrome=0<this.agent_lc.indexOf("chrome"),this.opera=this.webkit&&0<this.agent.indexOf(" OPR/"),this.safari=!this.chrome&&!this.opera&&(this.webkit||0<this.agent_lc.indexOf("safari")),this.konq=0<this.agent_lc.indexOf("konqueror"),this.mz=this.dom&&!this.chrome&&!this.safari&&!this.konq&&!this.opera&&0<=this.agent.indexOf("Mozilla"),this.iphone=this.safari&&(0<this.agent_lc.indexOf("iphone")||0<this.agent_lc.indexOf("ipod")||"ipod"==this.platform||"iphone"==this.platform),this.ipad=this.safari&&(0<this.agent_lc.indexOf("ipad")||"ipad"==this.platform)),this.vendver||(pattern=this.ie?/(msie|rv)(\s|:)([0-9\.]+)/:this.edge?/(edge?)(\/)([0-9\.]+)/:this.opera?/(opera|opr)(\/)([0-9\.]+)/:this.konq?/(konqueror)(\/)([0-9\.]+)/:this.safari?/(version)(\/)([0-9\.]+)/:this.chrome?/(chrome)(\/)([0-9\.]+)/:this.mz?/(firefox)(\/)([0-9\.]+)/:/(khtml|safari|applewebkit|rv)(\s|\/|:)([0-9\.]+)/,this.vendver=pattern.test(this.agent_lc)?parseFloat(RegExp.$3):0),this.safari&&/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)&&(this.lang=RegExp.$1),this.mobile=/iphone|ipod|blackberry|iemobile|opera mini|opera mobi|mobile/i.test(this.agent_lc),this.tablet=!this.mobile&&/ipad|android|xoom|sch-i800|playbook|tablet|kindle/i.test(this.agent_lc),this.touch=this.mobile||this.tablet,this.pointer="function"==typeof window.PointerEvent,this.cookies=e.cookieEnabled,this.set_html_class=function(){var e=" js";this.ie?e+=" ms ie ie"+parseInt(this.vendver):this.edge&&74<this.vendver?e+=" chrome":this.edge?e+=" ms edge":this.opera?e+=" opera":this.konq?e+=" konqueror":this.safari||this.chrome?e+=" chrome":this.mz&&(e+=" mozilla"),this.iphone?e+=" iphone":this.ipad?e+=" ipad":this.webkit&&(e+=" webkit"),this.mobile&&(e+=" mobile"),this.tablet&&(e+=" tablet"),document.documentElement&&(document.documentElement.className+=e)}}var rcube_event={get_target:function(e){return(e=e||window.event)&&e.target?e.target:e.srcElement||document},get_keycode:function(e){return(e=e||window.event)&&e.keyCode?e.keyCode:e&&e.which?e.which:0},get_button:function(e){return(e=e||window.event)&&void 0!==e.button?e.button:e&&e.which?e.which:0},get_modifier:function(e){var t=0;return e=e||window.event,bw.mac&&e?t+=(e.metaKey&&CONTROL_KEY)+(e.shiftKey&&SHIFT_KEY):e&&(t+=(e.ctrlKey&&CONTROL_KEY)+(e.shiftKey&&SHIFT_KEY)),t},get_mouse_pos:function(e){var t=(e=e||window.event).pageX||e.clientX,n=e.pageY||e.clientY;return document.body&&document.all&&(t+=document.body.scrollLeft,n+=document.body.scrollTop),e._offset&&(t+=e._offset.left,n+=e._offset.top),{x:t,y:n}},add_listener:function(t){var e;t.object&&t.method&&(t.element||(t.element=document),t.object._rc_events||(t.object._rc_events={}),e=t.event+"*"+t.method,t.object._rc_events[e]||(t.object._rc_events[e]=function(e){return t.object[t.method](e)}),t.element.addEventListener?t.element.addEventListener(t.event,t.object._rc_events[e],!1):t.element.attachEvent?(t.element.detachEvent("on"+t.event,t.object._rc_events[e]),t.element.attachEvent("on"+t.event,t.object._rc_events[e])):t.element["on"+t.event]=t.object._rc_events[e])},remove_listener:function(e){e.element||(e.element=document);var t=e.event+"*"+e.method;e.object&&e.object._rc_events&&e.object._rc_events[t]&&(e.element.removeEventListener?e.element.removeEventListener(e.event,e.object._rc_events[t],!1):e.element.detachEvent?e.element.detachEvent("on"+e.event,e.object._rc_events[t]):e.element["on"+e.event]=null)},cancel:function(e){e=e||window.event;return e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),!(e.cancelBubble=!0)},is_keyboard:function(e){return!!e&&(e.type?!!e.type.match(/^key/)||"click"==e.type&&!e.clientX:!e.pageX&&(e.pageY||0)<=0&&!e.clientX&&(e.clientY||0)<=0)},keyboard_only:function(e){return!!rcube_event.is_keyboard(e)||rcube_event.cancel(e)},touchevent:function(e){return{pageX:e.pageX,pageY:e.pageY,offsetX:e.pageX-e.target.offsetLeft,offsetY:e.pageY-e.target.offsetTop,target:e.target,istouch:!0}}};function rcube_event_engine(){this._events={}}function rcube_check_email(e,t,n,i){if(!e)return!!n&&0;n&&(t=!0);var i=i?"([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)":"[^\\u0000-\\u0020\\u002e\\u00a0\\u0040\\u007f\\u2028\\u2029]+",o="[,;\\s\\n]",i="(("+(i+"(\\x2e"+i+")*")+"\\x40(((\\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\\])|(\\[IPv6:[0-9a-f:.]+\\]))|(([^@.]+\\.)+([^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|s|xn--[a-z0-9]{2,}))))|("+("mailtest\\x40("+["\\u0645\\u062b\\u0627\\u0644\\x2e\\u0625\\u062e\\u062a\\u0628\\u0627\\u0631","\\u4f8b\\u5b50\\x2e\\u6d4b\\u8bd5","\\u4f8b\\u5b50\\x2e\\u6e2c\\u8a66","\\u03c0\\u03b1\\u03c1\\u03ac\\u03b4\\u03b5\\u03b9\\u03b3\\u03bc\\u03b1\\x2e\\u03b4\\u03bf\\u03ba\\u03b9\\u03bc\\u03ae","\\u0909\\u0926\\u093e\\u0939\\u0930\\u0923\\x2e\\u092a\\u0930\\u0940\\u0915\\u094d\\u0937\\u093e","\\u4f8b\\u3048\\x2e\\u30c6\\u30b9\\u30c8","\\uc2e4\\ub840\\x2e\\ud14c\\uc2a4\\ud2b8","\\u0645\\u062b\\u0627\\u0644\\x2e\\u0622\\u0632\\u0645\\u0627\\u06cc\\u0634\\u06cc","\\u043f\\u0440\\u0438\\u043c\\u0435\\u0440\\x2e\\u0438\\u0441\\u043f\\u044b\\u0442\\u0430\\u043d\\u0438\\u0435","\\u0b89\\u0ba4\\u0bbe\\u0bb0\\u0ba3\\u0bae\\u0bcd\\x2e\\u0baa\\u0bb0\\u0bbf\\u0b9f\\u0bcd\\u0b9a\\u0bc8","\\u05d1\\u05f2\\u05b7\\u05e9\\u05e4\\u05bc\\u05d9\\u05dc\\x2e\\u05d8\\u05e2\\u05e1\\u05d8"].join("|")+")")+"))",t=t?new RegExp("(^|<|"+o+")"+i+"($|>|"+o+")",n?"ig":"i"):new RegExp("^"+i+"$","i");return n?(o=e.match(t))?o.length:0:t.test(e)}function rcube_clone_object(e){var t,n={};for(t in e)e[t]&&"object"==typeof e[t]?n[t]=rcube_clone_object(e[t]):n[t]=e[t];return n}function urlencode(e){return encodeURIComponent(e).replace("*","%2A").replace("(","%28").replace(")","%29").replace("!","%21").replace("'","%27")}function rcube_find_object(e,t){var n,i,o,r;if(!(t=t||document).getElementById||!(o=t.getElementById(e))){if(!(o=!(o=!(o=!o&&t.getElementsByName&&(r=t.getElementsByName(e))?r[0]:o)&&t.all?t.all[e]:o)&&t.images.length?t.images[e]:o)&&t.forms.length)for(i=0;i<t.forms.length;i++)t.forms[i].name==e?o=t.forms[i]:t.forms[i].elements[e]&&(o=t.forms[i].elements[e]);if(!o&&t.layers)for(t.layers[e]&&(o=t.layers[e]),n=0;!o&&n<t.layers.length;n++)o=rcube_find_object(e,t.layers[n].document)}return o}function rcube_mouse_is_over(e,t){var e=rcube_event.get_mouse_pos(e),n=$(t).offset();return e.x>=n.left&&e.x<n.left+t.offsetWidth&&e.y>=n.top&&e.y<n.top+t.offsetHeight}function setCookie(e,t,n,i,o,r){e=e+"="+escape(t)+(n?"; expires="+n.toGMTString():"")+(i?"; path="+i:"")+(o?"; domain="+o:"")+(r?"; secure":"")+"; SameSite=Lax";document.cookie=e}function getCookie(e){var t=document.cookie,e=e+"=",n=t.indexOf("; "+e);if(-1==n){if(0!=(n=t.indexOf(e)))return null}else n+=2;var i=t.indexOf(";",n);return-1==i&&(i=t.length),unescape(t.substring(n+e.length,i))}rcube_event_engine.prototype={addEventListener:function(e,t,n){return this._events||(this._events={}),this._events[e]||(this._events[e]=[]),this._events[e].push({func:t,obj:n||window}),this},removeEventListener:function(e,t,n){void 0===n&&(n=window);for(var i,o=0;this._events&&this._events[e]&&o<this._events[e].length;o++)(i=this._events[e][o])&&i.func==t&&i.obj==n&&(this._events[e][o]=null)},triggerEvent:function(e,t){function n(e){try{e&&e.event&&delete e.event}catch(e){}}var i,o;if(void 0===t?t=this:"object"==typeof t&&(t.event=e),this._event_exec||(this._event_exec={}),this._events&&this._events[e]&&!this._event_exec[e]){this._event_exec[e]=!0;for(var r=0;r<this._events[e].length&&(!(o=this._events[e][r])||("function"==typeof o.func?i=o.func.call?o.func.call(o.obj,t):o.func(t):"function"==typeof o.obj[o.func]&&(i=o.obj[o.func](t)),void 0===i)||i);r++);n(i)}return delete this._event_exec[e],n(t),i}},roundcube_browser.prototype.set_cookie=setCookie,roundcube_browser.prototype.get_cookie=getCookie;var bw=new roundcube_browser,rcube_parse_query=(bw.set_html_class(),RegExp.escape=function(e){return String(e).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")},Date.prototype.getStdTimezoneOffset=function(){for(var e=12,t=new Date(null,e,1),n=t.getTimezoneOffset();--e;)if(t.setUTCMonth(e),n!=t.getTimezoneOffset())return Math.max(n,t.getTimezoneOffset());return n},String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return this.slice(t=t||0,e.length)===e}),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){var n=this.toString(),n=(("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>n.length)&&(t=n.length),t-=e.length,n.lastIndexOf(e,t));return-1!==n&&n===t}),jQuery.last=function(e){return e&&e.length?e[e.length-1]:void 0},jQuery.fn.placeholder=function(e){return this.each(function(){$(this).prop({title:e,placeholder:e})})},function(e){if(!e)return{};function t(e){return decodeURIComponent(e.replace(s," "))}var n,i,o={},r=/([^&=]+)=?([^&]*)/g,s=/\+/g;for(e=e.replace(/\?/,"");i=r.exec(e);)n=t(i[1]),i=t(i[2]),"[]"===n.substring(n.length-2)?(o[n=n.substring(0,n.length-2)]||(o[n]=[])).push(i):o[n]=i;return o}),Base64=function(){function h(e){for(var t,n,i=0,o="",r=0;i<e.length;)(t=e.charCodeAt(i))<128?(o+=String.fromCharCode(t),i++):191<t&&t<224?(r=e.charCodeAt(i+1),o+=String.fromCharCode((31&t)<<6|63&r),i+=2):(r=e.charCodeAt(i+1),n=e.charCodeAt(i+2),o+=String.fromCharCode((15&t)<<12|(63&r)<<6|63&n),i+=3);return o}var f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{encode:function(e){if(e=function(e){e=e.replace(/\r\n/g,"\n");for(var t="",n=0;n<e.length;n++){var i=e.charCodeAt(n);i<128?t+=String.fromCharCode(i):t=127<i&&i<2048?(t+=String.fromCharCode(i>>6|192))+String.fromCharCode(63&i|128):(t=(t+=String.fromCharCode(i>>12|224))+String.fromCharCode(i>>6&63|128))+String.fromCharCode(63&i|128)}return t}(e),"function"==typeof window.btoa)try{return btoa(e)}catch(e){}for(var t,n,i,o,r,s,u=0,a="",c=e.length;u<c;)i=(t=e.charCodeAt(u++))>>2,o=(3&t)<<4|(t=e.charCodeAt(u++))>>4,r=(15&t)<<2|(n=e.charCodeAt(u++))>>6,s=63&n,isNaN(t)?r=s=64:isNaN(n)&&(s=64),a=a+f.charAt(i)+f.charAt(o)+f.charAt(r)+f.charAt(s);return a},decode:function(e){if("function"==typeof window.atob)try{return h(atob(e))}catch(e){}for(var t,n,i,o,r,s,u=0,a="",c=(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length;u<c;)i=f.indexOf(e.charAt(u++)),t=(15&(o=f.indexOf(e.charAt(u++))))<<4|(r=f.indexOf(e.charAt(u++)))>>2,n=(3&r)<<6|(s=f.indexOf(e.charAt(u++))),a+=String.fromCharCode(i<<2|o>>4),64!=r&&(a+=String.fromCharCode(t)),64!=s&&(a+=String.fromCharCode(n));return h(a)}}}();
js/publickey.min.js000064400000013451151727150440010301 0ustar00/**
 * PublicKey.js - v0e011cb1
 *
 * @source https://github.com/diafygi/publickeyjs/blob/master/publickey.js
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) 2015 Daniel Roesler
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 */
"use strict";!function(e){function t(e){this.keyservers=e||i}var i=["https://keys.fedoraproject.org/","https://keybase.io/"];t.prototype.get=function(t,i,n,e){if((n=void 0===n?0:n)>=this.keyservers.length)return i(null,e||404);var s,e=this.keyservers[n],r=this;0===e.indexOf("https://keybase.io/")?(0===t.indexOf("0x")&&(t=t.substr(2)),(s=new XMLHttpRequest).open("get","https://keybase.io/_/api/1.0/user/lookup.json?fields=public_keys&key_fingerprint="+t),s.onload=function(){var e;return 200===s.status?0!==(e=JSON.parse(s.responseText)).status.code?r.get(t,i,n+1,e.status.code):0===e.them.length?r.get(t,i,n+1,404):(e=e.them[0].public_keys.primary.bundle,i(e,null)):r.get(t,i,n+1,s.status)}):(0!==t.indexOf("0x")&&(t="0x"+t),(s=new XMLHttpRequest).open("get",e+"pks/lookup?op=get&options=mr&search="+t),s.onload=function(){return 200===s.status?i(s.responseText,null):r.get(t,i,n+1,s.status)}),s.send()},t.prototype.search=function(o,d,a,u,e){if(void 0===u&&(u=[]),(a=void 0===a?0:a)>=this.keyservers.length){if(0===u.length)return d(null,e||404);for(var t={},i=0;i<u.length;i++)if(void 0!==t[(l=u[i]).keyid])for(var n=0;n<l.uids.length;n++){for(var s=!1,r=0;r<t[l.keyid].uids.length;r++)if(t[l.keyid].uids[r].uid===l.uids[n]){s=!0;break}s||t[l.keyid].uids.push(l.uids[n])}else t[l.keyid]=l;for(var l,p=[],i=0;i<u.length;i++)void 0!==t[(l=u[i]).keyid]&&(p.push(t[l.keyid]),delete t[l.keyid]);return d(p,null)}var h,c=this.keyservers[a],v=this;0===c.indexOf("https://keybase.io/")?((h=new XMLHttpRequest).open("get","https://keybase.io/_/api/1.0/user/autocomplete.json?q="+encodeURIComponent(o)),h.onload=function(){if(200!==h.status)return v.search(o,d,a+1,u,h.status);var e=JSON.parse(h.responseText);if(0!==e.status.code)return v.search(o,d,a+1,u,e.status.code);if(0===e.completions.length)return v.search(o,d,a+1,u,404);for(var t=[],i=0;i<e.completions.length;i++){var n=e.completions[i].components;if(void 0!==n.key_fingerprint){var s={keyid:n.key_fingerprint.val.toUpperCase(),href:"https://keybase.io/"+n.username.val+"/key.asc",info:"https://keybase.io/"+n.username.val,algo:n.key_fingerprint.algo,keylen:n.key_fingerprint.nbits,creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1,uids:[{uid:n.username.val+" on Keybase <https://keybase.io/"+n.username.val+">",creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}]};if(void 0!==n.full_name&&s.uids.push({uid:"Full Name: "+n.full_name.val,creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}),void 0!==n.twitter&&s.uids.push({uid:n.twitter.val+" on Twitter <https://twitter.com/"+n.twitter.val+">",creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}),void 0!==n.github&&s.uids.push({uid:n.github.val+" on Github <https://github.com/"+n.github.val+">",creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}),void 0!==n.reddit&&s.uids.push({uid:n.reddit.val+" on Github <https://reddit.com/u/"+n.reddit.val+">",creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}),void 0!==n.hackernews&&s.uids.push({uid:n.hackernews.val+" on Hacker News <https://news.ycombinator.com/user?id="+n.hackernews.val+">",creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}),void 0!==n.coinbase&&s.uids.push({uid:n.coinbase.val+" on Coinbase <https://www.coinbase.com/"+n.coinbase.val+">",creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1}),void 0!==n.websites)for(var r=0;r<n.websites.length;r++)s.uids.push({uid:"Owns "+n.websites[r].val,creationdate:null,expirationdate:null,revoked:!1,disabled:!1,expired:!1});t.push(s)}}return u=u.concat(t),v.search(o,d,a+1,u,null)}):((h=new XMLHttpRequest).open("get",c+"pks/lookup?op=index&options=mr&fingerprint=on&search="+encodeURIComponent(o)),h.onload=function(){if(200!==h.status)return v.search(o,d,a+1,u,h.status);for(var e=[],t=h.responseText.split("\n"),i=void 0,n=0;n<t.length;n++){var s,r=t[n].trim();0==r.indexOf("pub:")&&(void 0!==i&&e.push(i),i={keyid:(s=r.split(":"))[1],href:c+"pks/lookup?op=get&options=mr&search=0x"+s[1],info:c+"pks/lookup?op=vindex&search=0x"+s[1],algo:""===s[2]?null:parseInt(s[2]),keylen:""===s[3]?null:parseInt(s[3]),creationdate:""===s[4]?null:parseInt(s[4]),expirationdate:""===s[5]?null:parseInt(s[5]),revoked:-1!==s[6].indexOf("r"),disabled:-1!==s[6].indexOf("d"),expired:-1!==s[6].indexOf("e"),uids:[]}),0==r.indexOf("uid:")&&(s=r.split(":"),i.uids.push({uid:decodeURIComponent(s[1]),creationdate:""===s[2]?null:parseInt(s[2]),expirationdate:""===s[3]?null:parseInt(s[3]),revoked:-1!==s[4].indexOf("r"),disabled:-1!==s[4].indexOf("d"),expired:-1!==s[4].indexOf("e")}))}return e.push(i),u=u.concat(e),v.search(o,d,a+1,u,null)}),h.send()},e.PublicKey=t}("undefined"==typeof exports?this:exports);
js/googiespell.js000064400000070040151727150440010036 0ustar00/**
 * Roundcube SpellCheck script
 *
 * jQuery'fied spell checker based on GoogieSpell 4.0
 * (which was published under GPL "version 2 or any later version")
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (C) 2006 Amir Salihefendic
 * Copyright (C) The Roundcube Dev Team
 * Copyright (C) Kolab Systems AG
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author 4mir Salihefendic <amix@amix.dk>
 * @author Aleksander Machniak - <alec [at] alec.pl>
 */

var GOOGIE_CUR_LANG,
    GOOGIE_DEFAULT_LANG = 'en';

function GoogieSpell(img_dir, server_url, has_dict)
{
    var ref = this,
        cookie_value = rcmail.get_cookie('language');

    GOOGIE_CUR_LANG = cookie_value != null ? cookie_value : GOOGIE_DEFAULT_LANG;

    this.array_keys = function(arr) {
        var res = [];
        for (var key in arr) { res.push([key]); }
        return res;
    }

    this.img_dir = img_dir;
    this.server_url = server_url;

    this.org_lang_to_word = {
        "da": "Dansk", "de": "Deutsch", "en": "English",
        "es": "Español", "fr": "Français", "it": "Italiano",
        "nl": "Nederlands", "pl": "Polski", "pt": "Português",
        "ru": "Русский", "fi": "Suomi", "sv": "Svenska"
    };
    this.lang_to_word = this.org_lang_to_word;
    this.langlist_codes = this.array_keys(this.lang_to_word);
    this.show_change_lang_pic = false; // roundcube mod.
    this.change_lang_pic_placement = 'right';
    this.report_state_change = true;

    this.ta_scroll_top = 0;
    this.el_scroll_top = 0;

    this.lang_chck_spell = "Check spelling";
    this.lang_revert = "Revert to";
    this.lang_close = "Close";
    this.lang_rsm_edt = "Resume editing";
    this.lang_no_error_found = "No spelling errors found";
    this.lang_no_suggestions = "No suggestions";
    this.lang_learn_word = "Add to dictionary";

    this.use_ok_pic = false; // added by roundcube
    this.show_spell_img = false; // roundcube mod.
    this.decoration = true;
    this.use_close_btn = false;
    this.edit_layer_dbl_click = true;
    this.report_ta_not_found = true;

    // Extensions
    this.custom_ajax_error = null;
    this.custom_no_spelling_error = null;
    this.extra_menu_items = [];
    this.custom_spellcheck_starter = null;
    this.main_controller = true;
    this.has_dictionary = has_dict;

    // Observers
    this.lang_state_observer = null;
    this.spelling_state_observer = null;
    this.show_menu_observer = null;
    this.all_errors_fixed_observer = null;

    // Focus links - used to give the text box focus
    this.use_focus = false;
    this.focus_link_t = null;
    this.focus_link_b = null;

    // Counters
    this.cnt_errors = 0;
    this.cnt_errors_fixed = 0;

    // Set document's onclick to hide the language and error menu
    $(document).click(function(e) {
        var target = $(e.target);
        if (target.attr('googie_action_btn') != '1' && ref.isErrorWindowShown())
            ref.hideErrorWindow();
    });


this.decorateTextarea = function(id)
{
    this.text_area = typeof id === 'string' ? document.getElementById(id) : id;

    if (this.text_area) {
        if (!this.spell_container && this.decoration) {
            var table = document.createElement('table'),
                tbody = document.createElement('tbody'),
                tr = document.createElement('tr'),
                spell_container = document.createElement('td'),
                r_width = this.isDefined(this.force_width) ? this.force_width : this.text_area.offsetWidth,
                r_height = this.isDefined(this.force_height) ? this.force_height : 16;

            tr.appendChild(spell_container);
            tbody.appendChild(tr);
            $(table).append(tbody).insertBefore(this.text_area).width('100%').height(r_height);
            $(spell_container).height(r_height).width(r_width).css('text-align', 'right');

            this.spell_container = spell_container;
        }

        this.checkSpellingState();
    }
    else if (this.report_ta_not_found) {
        rcmail.alert_dialog('Text area not found');
    }
};

//////
// API Functions (the ones that you can call)
/////
this.setSpellContainer = function(id)
{
    this.spell_container = typeof id === 'string' ? document.getElementById(id) : id;
};

this.setLanguages = function(lang_dict)
{
    this.lang_to_word = lang_dict;
    this.langlist_codes = this.array_keys(lang_dict);
};

this.setCurrentLanguage = function(lan_code)
{
    GOOGIE_CUR_LANG = lan_code;

    //Set cookie
    rcmail.set_cookie('language', lan_code, false);
};

this.setForceWidthHeight = function(width, height)
{
    // Set to null if you want to use one of them
    this.force_width = width;
    this.force_height = height;
};

this.setDecoration = function(bool)
{
    this.decoration = bool;
};

this.dontUseCloseButtons = function()
{
    this.use_close_btn = false;
};

this.appendNewMenuItem = function(name, call_back_fn, checker)
{
    this.extra_menu_items.push([name, call_back_fn, checker]);
};

this.setFocus = function()
{
    try {
        this.focus_link_b.focus();
        this.focus_link_t.focus();
        return true;
    }
    catch(e) {
        return false;
    }
};


//////
// Set functions (internal)
/////
this.setStateChanged = function(current_state)
{
    this.state = current_state;
    if (this.spelling_state_observer != null && this.report_state_change)
        this.spelling_state_observer(current_state, this);
};

this.setReportStateChange = function(bool)
{
    this.report_state_change = bool;
};


//////
// Request functions
/////
this.getUrl = function()
{
    return this.server_url + GOOGIE_CUR_LANG;
};

this.escapeSpecial = function(val)
{
    return val ? val.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;") : '';
};

this.createXMLReq = function (text)
{
    return '<?xml version="1.0" encoding="utf-8" ?>'
        + '<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">'
        + '<text>' + text + '</text></spellrequest>';
};

this.spellCheck = function(ignore)
{
    this.prepare(ignore);

    var req_text = this.escapeSpecial(this.original_text),
        ref = this;

    $.ajax({ type: 'POST', url: this.getUrl(), data: this.createXMLReq(req_text), dataType: 'text',
        error: function(o) {
            if (ref.custom_ajax_error) {
                ref.custom_ajax_error(ref);
            }
            else {
                rcmail.alert_dialog('An error was encountered on the server. Please try again later.');
            }
            if (ref.main_controller) {
                $(ref.spell_span).remove();
                ref.removeIndicator();
            }
            ref.checkSpellingState();
        },
        success: function(data) {
            ref.processData(data);
            if (!ref.results.length) {
                if (!ref.custom_no_spelling_error)
                    ref.flashNoSpellingErrorState();
                else
                    ref.custom_no_spelling_error(ref);
            }
            ref.removeIndicator();
        }
    });
};

this.learnWord = function(word, id)
{
    word = this.escapeSpecial(word.innerHTML);

    var ref = this,
        req_text = '<?xml version="1.0" encoding="utf-8" ?><learnword><text>' + word + '</text></learnword>';

    $.ajax({ type: 'POST', url: this.getUrl(), data: req_text, dataType: 'text',
        error: function(o) {
            if (ref.custom_ajax_error) {
                ref.custom_ajax_error(ref);
            }
            else {
                rcmail.alert_dialog('An error was encountered on the server. Please try again later.');
            }
        },
        success: function(data) {
        }
    });
};


//////
// Spell checking functions
/////
this.prepare = function(ignore, no_indicator)
{
    this.cnt_errors_fixed = 0;
    this.cnt_errors = 0;
    this.setStateChanged('checking_spell');
    this.original_text = '';

    if (!no_indicator && this.main_controller)
        this.appendIndicator(this.spell_span);

    this.error_links = [];
    this.ta_scroll_top = this.text_area.scrollTop;
    this.ignore = ignore;

    var area = $(this.text_area);

    if (area.val() == '' || ignore) {
        if (!this.custom_no_spelling_error)
            this.flashNoSpellingErrorState();
        else
            this.custom_no_spelling_error(this);
        this.removeIndicator();
        return;
    }

    var height = $(area).css('box-sizing') == 'border-box' ? this.text_area.offsetHeight : $(area).height();

    this.createEditLayer(area.width(), height);
    this.createErrorWindow();

    $('body').append(this.error_window);

    if (this.main_controller)
        $(this.spell_span).off('click');

    this.original_text = area.val();
};

this.parseResult = function(r_text)
{
    // Returns an array: result[item] -> ['attrs'], ['suggestions']
    var re_split_attr_c = /\w+="(\d+|true)"/g,
        re_split_text = /\t/g,
        matched_c = r_text.match(/<c[^>]*>[^<]*<\/c>/g),
        results = [];

    if (matched_c == null)
        return results;

    for (var i=0, len=matched_c.length; i < len; i++) {
        var item = [];
        this.errorFound();

        // Get attributes
        item['attrs'] = [];
        var c_attr, val,
            split_c = matched_c[i].match(re_split_attr_c);
        for (var j=0; j < split_c.length; j++) {
            c_attr = split_c[j].split(/=/);
            val = c_attr[1].replace(/"/g, '');
            item['attrs'][c_attr[0]] = val != 'true' ? parseInt(val) : val;
        }

        // Get suggestions
        item['suggestions'] = [];
        var only_text = matched_c[i].replace(/<[^>]*>/g, ''),
            split_t = only_text.split(re_split_text);
        for (var k=0; k < split_t.length; k++) {
            if(split_t[k] != '')
            item['suggestions'].push(split_t[k]);
        }
        results.push(item);
    }

    return results;
};

this.processData = function(data)
{
    this.results = this.parseResult(data);
    if (this.results.length) {
        this.showErrorsInIframe();
        this.resumeEditingState();
    }
};

//////
// Error menu functions
/////
this.createErrorWindow = function()
{
    this.error_window = document.createElement('div');
    $(this.error_window).addClass('googie_window popupmenu').attr('googie_action_btn', '1');
};

this.isErrorWindowShown = function()
{
    return $(this.error_window).is(':visible');
};

this.hideErrorWindow = function()
{
    $(this.error_window).hide();
    $(this.error_window_iframe).hide();
};

this.updateOriginalText = function(offset, old_value, new_value, id)
{
    var part_1 = this.original_text.substring(0, offset),
        part_2 = this.original_text.substring(offset+old_value.length),
        add_2_offset = new_value.length - old_value.length;

    this.original_text = part_1 + new_value + part_2;
    $(this.text_area).val(this.original_text);
    for (var j=0, len=this.results.length; j<len; j++) {
        // Don't edit the offset of the current item
        if (j != id && j > id)
            this.results[j]['attrs']['o'] += add_2_offset;
    }
};

this.saveOldValue = function(elm, old_value) {
    elm.is_changed = true;
    elm.old_value = old_value;
};

this.createListSeparator = function()
{
    return $('<li>').html('&nbsp;').attr('googie_action_btn', '1')
        .css({'cursor': 'default', 'font-size': '3px', 'border-top': '1px solid #ccc', 'padding-top': '3px'})
        .get(0);
};

this.correctError = function(id, elm, l_elm, rm_pre_space)
{
    var old_value = elm.innerHTML,
        new_value = l_elm.nodeType == 3 ? l_elm.nodeValue : l_elm.innerHTML,
        offset = this.results[id]['attrs']['o'];

    if (rm_pre_space) {
        var pre_length = elm.previousSibling.innerHTML;
        elm.previousSibling.innerHTML = pre_length.slice(0, pre_length.length-1);
        old_value = " " + old_value;
        offset--;
    }

    this.hideErrorWindow();
    this.updateOriginalText(offset, old_value, new_value, id);

    $(elm).html(new_value).css('color', 'green').attr('is_corrected', true);

    this.results[id]['attrs']['l'] = new_value.length;

    if (!this.isDefined(elm.old_value))
        this.saveOldValue(elm, old_value);

    this.errorFixed();
};

this.ignoreError = function(elm, id)
{
    // @TODO: ignore all same words
    $(elm).removeAttr('class').css('color', '').off();
    this.hideErrorWindow();
};

this.showErrorWindow = function(elm, id)
{
    if (this.show_menu_observer)
        this.show_menu_observer(this);

    var ref = this,
        pos = $(elm).offset(),
        list = document.createElement('ul');

    $(this.error_window).html('');
    $(list).addClass('googie_list toolbarmenu').attr('googie_action_btn', '1');

    // Build up the result list
    var suggestions = this.results[id]['suggestions'],
        offset = this.results[id]['attrs']['o'],
        len = this.results[id]['attrs']['l'],
        item, dummy;

    // [Add to dictionary] button
    if (this.has_dictionary && !$(elm).attr('is_corrected')) {
        dummy = $('<a>').text(this.lang_learn_word).addClass('googie_add_to_dict active');

        $('<li>').attr('googie_action_btn', '1').css('cursor', 'default')
            .mouseover(ref.item_onmouseover)
            .mouseout(ref.item_onmouseout)
            .click(function(e) {
                ref.learnWord(elm, id);
                ref.ignoreError(elm, id);
            })
            .append(dummy)
            .appendTo(list);
    }

    for (var i=0, len=suggestions.length; i < len; i++) {
        dummy = $('<a>').html(suggestions[i]).addClass('active');

        $('<li>').mouseover(this.item_onmouseover).mouseout(this.item_onmouseout)
            .click(function(e) { ref.correctError(id, elm, e.target.firstChild); })
            .append(dummy)
            .appendTo(list);
    }

    // The element is changed, append the revert
    if (elm.is_changed && elm.innerHTML != elm.old_value) {
        var old_value = elm.old_value;

        dummy = $('<a>').addClass('googie_list_revert active').html(this.lang_revert + ' ' + old_value);

        $('<li>').mouseover(this.item_onmouseover).mouseout(this.item_onmouseout)
            .click(function(e) {
                ref.updateOriginalText(offset, elm.innerHTML, old_value, id);
                $(elm).removeAttr('is_corrected').css('color', '#b91414').html(old_value);
                ref.hideErrorWindow();
            })
            .append(dummy)
            .appendTo(list);
    }

    // Append the edit box
    var edit_row = document.createElement('li'),
        edit_input = document.createElement('input'),
        ok_pic = document.createElement('button'),
        edit_form = document.createElement('form');

    var onsub = function () {
        if (edit_input.value != '') {
            if (!ref.isDefined(elm.old_value))
                ref.saveOldValue(elm, elm.innerHTML);

            ref.updateOriginalText(offset, elm.innerHTML, edit_input.value, id);
            $(elm).attr('is_corrected', true).css('color', 'green').text(edit_input.value);
            ref.hideErrorWindow();
        }
        return false;
    };

    $(edit_input).width(120).val($(elm).text()).attr('googie_action_btn', '1');
    $(edit_row).css('cursor', 'default').attr('googie_action_btn', '1')
        .on('click', function() { return false; });

    // roundcube modified image use
    if (this.use_ok_pic) {
        $('<img>').attr('src', this.img_dir + 'ok.gif')
            .width(32).height(16)
            .css({cursor: 'pointer', 'margin-left': '2px', 'margin-right': '2px'})
            .appendTo(ok_pic);
    }
    else {
        $(ok_pic).text('OK');
    }

    $(ok_pic).addClass('mainaction save googie_ok_button btn-sm').click(onsub);

    $(edit_form).attr('googie_action_btn', '1')
        .css({'cursor': 'default', 'white-space': 'nowrap'})
        .submit(onsub)
        .append(edit_input)
        .append(ok_pic)
        .appendTo(edit_row);

    list.appendChild(edit_row);

    // Append extra menu items
    if (this.extra_menu_items.length > 0)
        list.appendChild(this.createListSeparator());

    var loop = function(i) {
        if (i < ref.extra_menu_items.length) {
            var e_elm = ref.extra_menu_items[i];

            if (!e_elm[2] || e_elm[2](elm, ref)) {
                var e_row = document.createElement('tr'),
                  e_col = document.createElement('td');

                $(e_col).html(e_elm[0])
                    .mouseover(ref.item_onmouseover)
                    .mouseout(ref.item_onmouseout)
                    .click(function() { return e_elm[1](elm, ref) });

                e_row.appendChild(e_col);
                list.appendChild(e_row);
            }
            loop(i+1);
        }
    };

    loop(0);
    loop = null;

    //Close button
    if (this.use_close_btn) {
        list.appendChild(this.createCloseButton(this.hideErrorWindow));
    }

    this.error_window.appendChild(list);

    // roundcube plugin api hook
    rcmail.triggerEvent('googiespell_create', {obj: this.error_window});

    // calculate and set position
    var height = $(this.error_window).height(),
        width = $(this.error_window).width(),
        pageheight = $(document).height(),
        pagewidth = $(document).width(),
        top = pos.top + height + 20 < pageheight ? pos.top + 20 : pos.top - height,
        left = pos.left + width < pagewidth ? pos.left : pos.left - width;

    if (left < 0) left = 0;
    if (top < 0) top = 0;

    $(this.error_window).css({'top': top+'px', 'left': left+'px', position: 'absolute'}).show();

    // Dummy for IE - dropdown bug fix
    if (document.all && !window.opera) {
        if (!this.error_window_iframe) {
            var iframe = $('<iframe>').css({'position': 'absolute', 'z-index': -1});
            $('body').append(iframe);
            this.error_window_iframe = iframe;
        }

        $(this.error_window_iframe)
            .css({'top': this.error_window.offsetTop, 'left': this.error_window.offsetLeft,
                'width': this.error_window.offsetWidth, 'height': this.error_window.offsetHeight})
            .show();
    }
};


//////
// Edit layer (the layer where the suggestions are stored)
//////
this.createEditLayer = function(width, height)
{
    this.edit_layer = document.createElement('div');
    $(this.edit_layer).addClass('googie_edit_layer').attr('id', 'googie_edit_layer')
        .width(width).height(height);

    if (this.text_area.nodeName.toLowerCase() != 'input' || $(this.text_area).val() == '') {
        $(this.edit_layer).css('overflow', 'auto');
    } else {
        $(this.edit_layer).css('overflow', 'hidden');
    }

    var ref = this;

    if (this.edit_layer_dbl_click) {
        $(this.edit_layer).dblclick(function(e) {
            if (e.target.className != 'googie_link' && !ref.isErrorWindowShown()) {
                ref.resumeEditing();
                var fn1 = function() {
                    $(ref.text_area).focus();
                    fn1 = null;
                };
                setTimeout(fn1, 10);
            }
            return false;
        });
    }
};

this.resumeEditing = function()
{
    this.setStateChanged('ready');

    if (this.edit_layer)
        this.el_scroll_top = this.edit_layer.scrollTop;

    this.hideErrorWindow();

    if (this.main_controller)
        $(this.spell_span).removeClass().addClass('googie_no_style');

    if (!this.ignore) {
        if (this.use_focus) {
            $(this.focus_link_t).remove();
            $(this.focus_link_b).remove();
        }

        $(this.edit_layer).remove();
        $(this.text_area).show();

        if (this.el_scroll_top != undefined)
            this.text_area.scrollTop = this.el_scroll_top;
    }
    this.checkSpellingState(false);
};

this.createErrorLink = function(text, id)
{
    var elm = document.createElement('span'),
        ref = this,
        d = function (e) {
            ref.showErrorWindow(elm, id);
            d = null;
            return false;
        };

    $(elm).html(text).addClass('googie_link').click(d).removeAttr('is_corrected')
        .attr({'googie_action_btn' : '1', 'g_id' : id});

    return elm;
};

this.createPart = function(txt_part)
{
    if (txt_part == " ")
        return document.createTextNode(" ");

    txt_part = this.escapeSpecial(txt_part);
    txt_part = txt_part.replace(/\n/g, "<br>");
    txt_part = txt_part.replace(/    /g, " &nbsp;");
    txt_part = txt_part.replace(/^ /g, "&nbsp;");
    txt_part = txt_part.replace(/ $/g, "&nbsp;");

    var span = document.createElement('span');
    $(span).html(txt_part);
    return span;
};

this.showErrorsInIframe = function()
{
    var output = document.createElement('div'),
        pointer = 0,
        results = this.results;

    if (results.length > 0) {
        for (var i=0, length=results.length; i < length; i++) {
            var offset = results[i]['attrs']['o'],
                len = results[i]['attrs']['l'],
                part_1_text = this.original_text.substring(pointer, offset),
                part_1 = this.createPart(part_1_text);

            output.appendChild(part_1);
            pointer += offset - pointer;

            // If the last child was an error, then insert some space
            var err_link = this.createErrorLink(this.original_text.substr(offset, len), i);
            this.error_links.push(err_link);
            output.appendChild(err_link);
            pointer += len;
        }

        // Insert the rest of the original text
        var part_2_text = this.original_text.substr(pointer, this.original_text.length),
            part_2 = this.createPart(part_2_text);

        output.appendChild(part_2);
    }
    else
        output.innerHTML = this.original_text;

    $(output).css('text-align', 'left');

    var me = this;
    if (this.custom_item_evaluator)
        $.map(this.error_links, function(elm){me.custom_item_evaluator(me, elm)});

    $(this.edit_layer).append(output);

    // Hide text area and show edit layer
    $(this.text_area).hide();
    $(this.edit_layer).insertBefore(this.text_area);

    if (this.use_focus) {
        this.focus_link_t = this.createFocusLink('focus_t');
        this.focus_link_b = this.createFocusLink('focus_b');

        $(this.focus_link_t).insertBefore(this.edit_layer);
        $(this.focus_link_b).insertAfter(this.edit_layer);
    }

//    this.edit_layer.scrollTop = this.ta_scroll_top;
};

this.deHighlightCurSel = function()
{
    $(this.lang_cur_elm).removeClass().addClass('googie_list_onout');
};

this.highlightCurSel = function()
{
    if (GOOGIE_CUR_LANG == null)
        GOOGIE_CUR_LANG = GOOGIE_DEFAULT_LANG;
    for (var i=0; i < this.lang_elms.length; i++) {
        if ($(this.lang_elms[i]).attr('googieId') == GOOGIE_CUR_LANG) {
            this.lang_elms[i].className = 'googie_list_selected';
            this.lang_cur_elm = this.lang_elms[i];
        }
        else {
            this.lang_elms[i].className = 'googie_list_onout';
        }
    }
};

this.createSpellDiv = function()
{
    var span = document.createElement('span');

    $(span).addClass('googie_check_spelling_link').text(this.lang_chck_spell);

    if (this.show_spell_img) {
        $(span).append(' ').append($('<img>').attr('src', this.img_dir + 'spellc.gif'));
    }
    return span;
};


//////
// State functions
/////
this.flashNoSpellingErrorState = function(on_finish)
{
    this.setStateChanged('no_error_found');

    var ref = this;
    if (this.main_controller) {
        var no_spell_errors;
        if (on_finish) {
            var fn = function() {
                on_finish();
                ref.checkSpellingState();
            };
            no_spell_errors = fn;
        }
        else
            no_spell_errors = function () { ref.checkSpellingState() };

        var rsm = $('<span>').text(this.lang_no_error_found);

        $(this.switch_lan_pic).hide();
        $(this.spell_span).empty().append(rsm)
        .removeClass().addClass('googie_check_spelling_ok');

        setTimeout(no_spell_errors, 1000);
    }
};

this.resumeEditingState = function()
{
    this.setStateChanged('resume_editing');

    //Change link text to resume
    if (this.main_controller) {
        var rsm = $('<span>').text(this.lang_rsm_edt);
    var ref = this;

        $(this.switch_lan_pic).hide();
        $(this.spell_span).empty().off().append(rsm)
            .click(function() { ref.resumeEditing(); })
            .removeClass().addClass('googie_resume_editing');
    }

    try { this.edit_layer.scrollTop = this.ta_scroll_top; }
    catch (e) {};
};

this.checkSpellingState = function(fire)
{
    if (fire)
        this.setStateChanged('ready');

    this.switch_lan_pic = document.createElement('span');

    var span_chck = this.createSpellDiv(),
        ref = this;

    if (this.custom_spellcheck_starter)
        $(span_chck).click(function(e) { ref.custom_spellcheck_starter(); });
    else {
        $(span_chck).click(function(e) { ref.spellCheck(); });
    }

    if (this.main_controller) {
        if (this.change_lang_pic_placement == 'left') {
            $(this.spell_container).empty().append(this.switch_lan_pic).append(' ').append(span_chck);
        } else {
            $(this.spell_container).empty().append(span_chck).append(' ').append(this.switch_lan_pic);
        }
    }

    this.spell_span = span_chck;
};


//////
// Misc. functions
/////
this.isDefined = function(o)
{
    return (o !== undefined && o !== null)
};

this.errorFixed = function()
{
    this.cnt_errors_fixed++;
    if (this.all_errors_fixed_observer)
        if (this.cnt_errors_fixed == this.cnt_errors) {
            this.hideErrorWindow();
            this.all_errors_fixed_observer();
        }
};

this.errorFound = function()
{
    this.cnt_errors++;
};

this.createCloseButton = function(c_fn)
{
    return this.createButton(this.lang_close, 'googie_list_close', c_fn);
};

this.createButton = function(name, css_class, c_fn)
{
    var btn_row = document.createElement('tr'),
        btn = document.createElement('td'),
        spn_btn;

    if (css_class) {
        spn_btn = document.createElement('span');
        $(spn_btn).addClass(css_class).html(name);
    } else {
        spn_btn = document.createTextNode(name);
    }

    $(btn).click(c_fn)
        .mouseover(this.item_onmouseover)
        .mouseout(this.item_onmouseout);

    btn.appendChild(spn_btn);
    btn_row.appendChild(btn);

    return btn_row;
};

this.removeIndicator = function(elm)
{
    //$(this.indicator).remove();
    // roundcube mod.
    if (window.rcmail)
        rcmail.set_busy(false, null, this.rc_msg_id);
};

this.appendIndicator = function(elm)
{
    // modified by roundcube
    if (window.rcmail)
        this.rc_msg_id = rcmail.set_busy(true, 'checking');
/*
    this.indicator = document.createElement('img');
    $(this.indicator).attr('src', this.img_dir + 'indicator.gif')
        .css({'margin-right': '5px', 'text-decoration': 'none'}).width(16).height(16);

    if (elm)
        $(this.indicator).insertBefore(elm);
    else
        $('body').append(this.indicator);
*/
}

this.createFocusLink = function(name)
{
    var link = document.createElement('a');
    $(link).attr({'href': 'javascript:;', 'name': name});
    return link;
};

this.item_onmouseover = function(e)
{
    if (this.className != 'googie_list_revert' && this.className != 'googie_list_close')
        this.className = 'googie_list_onhover';
    else
        this.parentNode.className = 'googie_list_onhover';
};

this.item_onmouseout = function(e)
{
    if (this.className != 'googie_list_revert' && this.className != 'googie_list_close')
        this.className = 'googie_list_onout';
    else
        this.parentNode.className = 'googie_list_onout';
};


};
js/list.js000064400000142064151727150440006506 0ustar00/**
 * Roundcube List Widget
 *
 * This file is part of the Roundcube Webmail client
 *
 * @licstart  The following is the entire license notice for the
 * JavaScript code in this file.
 *
 * Copyright (c) The Roundcube Dev Team
 *
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 *
 * @licend  The above is the entire license notice
 * for the JavaScript code in this file.
 *
 * @author Thomas Bruederli <roundcube@gmail.com>
 * @author Charles McNulty <charles@charlesmcnulty.com>
 *
 * @requires jquery.js, common.js
 */


/**
 * Roundcube List Widget class
 * @constructor
 */
function rcube_list_widget(list, p)
{
  // static constants
  this.ENTER_KEY = 13;
  this.DELETE_KEY = 46;
  this.BACKSPACE_KEY = 8;

  this.list = list ? list : null;
  this.tagname = this.list ? this.list.nodeName.toLowerCase() : 'table';
  this.id_regexp = /^rcmrow([a-z0-9\-_=\+\/]+)/i;
  this.rows = {};
  this.selection = [];
  this.rowcount = 0;
  this.colcount = 0;

  this.subject_col = 0;
  this.modkey = 0;
  this.multiselect = false;
  this.multiexpand = false;
  this.multi_selecting = false;
  this.draggable = false;
  this.column_movable = false;
  this.keyboard = false;
  this.toggleselect = false;
  this.aria_listbox = false;
  this.parent_focus = true;
  this.checkbox_selection = false;

  this.drag_active = false;
  this.col_drag_active = false;
  this.column_fixed = null;
  this.last_selected = null;
  this.shift_start = null;
  this.focused = false;
  this.drag_mouse_start = null;
  this.dblclick_time = 500; // default value on MS Windows is 500
  this.row_init = function(){};  // @deprecated; use list.addEventListener('initrow') instead

  this.touch_start_time = 0; // start time of the touch event
  this.touch_event_time = 500; // maximum time a touch should be considered a left mouse button event, after this its something else (eg contextmenu event)

  // overwrite default parameters
  if (p && typeof p === 'object')
    for (var n in p)
      this[n] = p[n];

  // register this instance
  rcube_list_widget._instances.push(this);
};


rcube_list_widget.prototype = {


/**
 * get all message rows from HTML table and init each row
 */
init: function()
{
  if (this.tagname == 'table' && this.list && this.list.tBodies[0]) {
    this.thead = this.list.tHead;
    this.tbody = this.list.tBodies[0];
  }
  else if (this.tagname != 'table' && this.list) {
    this.tbody = this.list;
  }

  if ($(this.list).attr('role') == 'listbox') {
    this.aria_listbox = true;
    if (this.multiselect)
      $(this.list).attr('aria-multiselectable', 'true');
  }

  var me = this;

  if (this.tbody) {
    this.rows = {};
    this.rowcount = 0;

    var r, len, rows = this.tbody.childNodes;

    for (r=0, len=rows.length; r<len; r++) {
      if (rows[r].nodeType == 1)
        this.rowcount += this.init_row(rows[r]) ? 1 : 0;
    }

    this.init_header();
    this.frame = this.list.parentNode;

    // set body events
    if (this.keyboard) {
      rcube_event.add_listener({event:'keydown', object:this, method:'key_press'});

      // allow the table element to receive focus.
      $(this.list).attr('tabindex', '0')
        .on('focus', function(e) { me.focus(e); });
    }
  }

  if (this.parent_focus) {
    this.list.parentNode.onclick = function(e) { me.focus(); };
  }

  rcmail.triggerEvent('initlist', { obj: this.list });

  return this;
},


/**
 * Init list row and set mouse events on it
 */
init_row: function(row)
{
  row.uid = this.get_row_uid(row);

  // make references in internal array and set event handlers
  if (row && row.uid) {
    var self = this, uid = row.uid;
    this.rows[uid] = {uid:uid, id:row.id, obj:row};

    $(row).data('uid', uid)
      // set eventhandlers to table row (only left-button-clicks in mouseup)
      .mousedown(function(e) { return self.drag_row(e, this.uid); })
      .mouseup(function(e) {
        if (e.which == 1 && !self.drag_active && !$(e.currentTarget).is('.ui-droppable-active'))
          return self.click_row(e, this.uid);
        else
          return true;
      });

    // for IE and Edge (Trident) differentiate between touch, touch+hold using pointer events rather than touch
    if ((bw.ie || (bw.edge && bw.vendver < 75)) && bw.pointer) {
      $(row).on('pointerdown', function(e) {
          if (e.pointerType == 'touch') {
            self.touch_start_time = new Date().getTime();
            return false;
          }
        })
        .on('pointerup', function(e) {
          if (e.pointerType == 'touch') {
            var duration = (new Date().getTime() - self.touch_start_time);
            if (duration <= self.touch_event_time) {
              self.drag_row(e, this.uid);
              return self.click_row(e, this.uid);
            }
          }
        });
    }
    else if (bw.touch && row.addEventListener) {
      row.addEventListener('touchstart', function(e) {
        if (e.touches.length == 1) {
          self.touchmoved = false;
          self.drag_row(rcube_event.touchevent(e.touches[0]), this.uid);
          self.touch_start_time = new Date().getTime();
        }
      }, false);
      row.addEventListener('touchend', function(e) {
        if (e.changedTouches.length == 1) {
          var duration = (new Date().getTime() - self.touch_start_time);
          if (!self.touchmoved && duration <= self.touch_event_time && !self.click_row(rcube_event.touchevent(e.changedTouches[0]), this.uid))
            e.preventDefault();
        }
      }, false);
      row.addEventListener('touchmove', function(e) {
        if (e.changedTouches.length == 1) {
          self.touchmoved = true;
          if (self.drag_active)
            e.preventDefault();
        }
      }, false);
    }

    // label the list row with the subject col as descriptive label
    if (this.aria_listbox) {
      var lbl_id = 'l:' + row.id;
      $(row)
        .attr('role', 'option')
        .attr('aria-labelledby', lbl_id)
        .find(this.col_tagname()).eq(this.subject_column()).attr('id', lbl_id);
    }

    if (document.all)
      row.onselectstart = function() { return false; };

    this.row_init(this.rows[uid]);  // legacy support
    this.triggerEvent('initrow', this.rows[uid]);

    return true;
  }
},


/**
 * Init list column headers and set mouse events on them
 */
init_header: function()
{
  if (this.thead) {
    this.colcount = 0;

    if (this.fixed_header) {  // copy (modified) fixed header back to the actual table
      $(this.list.tHead).replaceWith($(this.fixed_header).find('thead').clone());
      $(this.list.tHead).find('th,td').attr('style', '').find('a').attr('tabindex', '-1');  // remove fixed widths
    }
    else if (!bw.touch && this.list.className.indexOf('fixedheader') >= 0) {
      this.init_fixed_header();
    }

    var col, r, p = this;
    // add events for list columns moving
    if (this.column_movable && this.thead && this.thead.rows) {
      for (r=0; r<this.thead.rows[0].cells.length; r++) {
        if (this.column_fixed == r)
          continue;
        col = this.thead.rows[0].cells[r];
        col.onmousedown = function(e) { return p.drag_column(e, this); };
        this.colcount++;
      }
    }
  }
},

/**
 * Set the scrollable parent object for the table's fixed header
 */
container: window,

init_fixed_header: function()
{
  var clone = $(this.list.tHead).clone();

  if (!this.fixed_header) {
    this.fixed_header = $('<table>')
      .attr('id', this.list.id + '-fixedcopy')
      .attr('class', this.list.className + ' fixedcopy')
      .attr('role', 'presentation')
      .css({ position:'fixed' })
      .append(clone)
      .append('<tbody></tbody>');
    $(this.list).before(this.fixed_header);

    var me = this;
    $(window).on('resize', function() { me.resize(); });
    $(this.container).on('scroll', function() {
        var w = $(this);
        me.fixed_header.css({
          marginLeft: -w.scrollLeft() + 'px',
          marginTop: -w.scrollTop() + 'px'
        });
      });
  }
  else {
    $(this.fixed_header).find('thead').replaceWith(clone);
  }

  // avoid scrolling header links being focused
  $(this.list.tHead).find('a.sortcol').attr('tabindex', '-1');

  // set tabindex to fixed header sort links
  clone.find('a.sortcol').attr('tabindex', '0');

  this.thead = clone.get(0);
  this.resize();
},

resize: function()
{
    if (!this.fixed_header)
      return;

    var column_widths = [];

    // get column widths from original thead
    $(this.tbody).parent().find('thead th,thead td').each(function(index) {
      column_widths[index] = $(this).width();
    });

    // apply fixed widths to fixed table header
    $(this.thead).parent().width($(this.tbody).parent().width());
    $(this.thead).find('th,td').each(function(index) {
      $(this).width(column_widths[index]);
    });

    $(window).scroll();
},

/**
 * Remove all list rows
 */
clear: function(sel)
{
  if (this.tagname == 'table') {
    var tbody = document.createElement('tbody');
    this.list.insertBefore(tbody, this.tbody);
    this.list.removeChild(this.list.tBodies[1]);
    this.tbody = tbody;
  }
  else {
    $(this.row_tagname() + ':not(.thead)', this.tbody).remove();
  }

  this.rows = {};
  this.rowcount = 0;
  this.last_selected = null;

  if (sel)
    this.clear_selection();

  // reset scroll position (in Opera)
  if (this.frame)
    this.frame.scrollTop = 0;

  // fix list header after removing any rows
  this.resize();
},


/**
 * 'remove' message row from list (just hide it)
 */
remove_row: function(uid, sel_next)
{
  var self = this, node = this.rows[uid] ? this.rows[uid].obj : null;

  if (!node)
    return;

  node.style.display = 'none';

  // Select next row before deletion, because we need the reference
  if (sel_next)
    this.select_next(uid);

  delete this.rows[uid];
  this.rowcount--;

  // fix list header after removing any rows
  clearTimeout(this.resize_timeout)
  this.resize_timeout = setTimeout(function() { self.resize(); }, 50);
},


/**
 * Add row to the list and initialize it
 */
insert_row: function(row, before)
{
  var self = this, tbody = this.tbody;

  // create a real dom node first
  if (row.nodeName === undefined) {
    // for performance reasons use DOM instead of jQuery here
    var i, e, domcell, col,
      domrow = document.createElement(this.row_tagname());

    if (row.id) domrow.id = row.id;
    if (row.uid) domrow.uid = row.uid;
    if (row.className) domrow.className = row.className;
    if (row.style) $.extend(domrow.style, row.style);

    for (i=0; row.cols && i < row.cols.length; i++) {
      col = row.cols[i];
      domcell = col.dom;
      if (!domcell) {
        domcell = document.createElement(this.col_tagname());
        if (col.className) domcell.className = col.className;
        if (col.innerHTML) domcell.innerHTML = col.innerHTML;
        for (e in col.events)
          domcell['on' + e] = col.events[e];
      }
      domrow.appendChild(domcell);
    }

    row = domrow;
  }

  if (this.checkbox_selection) {
    this.insert_checkbox(row);
  }

  if (before && tbody.childNodes.length)
    tbody.insertBefore(row, (typeof before == 'object' && before.parentNode == tbody) ? before : tbody.firstChild);
  else
    tbody.appendChild(row);

  this.init_row(row);
  this.rowcount++;

  // fix list header after adding any rows
  clearTimeout(this.resize_timeout)
  this.resize_timeout = setTimeout(function() { self.resize(); }, 50);
},

/**
 * Update existing record
 */
update_row: function(id, cols, newid, select)
{
  var row = this.rows[id];
  if (!row) return false;

  var i, domrow = row.obj;
  for (i = 0; cols && i < cols.length; i++) {
    this.get_cell(domrow, i).html(cols[i]);
  }

  if (newid) {
    delete this.rows[id];
    domrow.uid = newid;
    domrow.id = 'rcmrow' + newid;
    this.init_row(domrow);

    if (select)
      this.selection[0] = newid;

    if (this.last_selected == id)
      this.last_selected = newid;
  }
},

/**
 * Add selection checkbox to the list record
 */
insert_checkbox: function(row, tag_name)
{
  var key, self = this,
    cell = document.createElement(this.col_tagname(tag_name)),
    chbox = document.createElement('input');

  chbox.type = 'checkbox';
  chbox.tabIndex = -1;
  chbox.onchange = function(e) {
    self.select_row(row.uid, key || CONTROL_KEY, true);
    e.stopPropagation();
    key = null;
  };
  chbox.onmousedown = function(e) {
    key = rcube_event.get_modifier(e);
  };

  cell.className = 'selection';
  // make the whole cell "touchable" for touch devices
  cell.onclick = function(e) {
    if (!$(e.target).is('input')) {
      key = rcube_event.get_modifier(e);
      $(chbox).prop('checked', !chbox.checked).change();
    }
    e.stopPropagation();
  };

  cell.appendChild(chbox);

  row.insertBefore(cell, row.firstChild);
},

/**
 * Enable checkbox selection
 */
enable_checkbox_selection: function()
{
  this.checkbox_selection = true;

  // Add checkbox to existing records if any
  var r, len, cell, rows,
    row_tag = this.row_tagname().toUpperCase();

  if (this.thead) {
    rows = this.thead.childNodes;
    for (r=0, len=rows.length; r<len; r++) {
      if (rows[r].nodeName == row_tag && (cell = rows[r].firstChild)) {
        if (cell.className == 'selection')
          break;
        this.insert_checkbox(rows[r], 'thead');
      }
    }
  }

  rows = this.tbody.childNodes;
  for (r=0, len=rows.length; r<len; r++) {
    if (rows[r].nodeName == row_tag && (cell = rows[r].firstChild)) {
      if (cell.className == 'selection')
        break;
      this.insert_checkbox(rows[r], 'tbody');
    }
  }
},

/**
 * Set focus to the list
 */
focus: function(e)
{
  if (this.focused)
    return;

  this.focused = true;

  if (e)
    rcube_event.cancel(e);

  var focus_elem = null;

  if (this.last_selected && this.rows[this.last_selected]) {
    focus_elem = $(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_column()).attr('tabindex', '0');
  }

  // Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620)
  if (focus_elem && focus_elem.length) {
    // We now fix this by explicitly assigning focus to a dedicated link element
    this.focus_noscroll(focus_elem);
  }
  else {
    // It looks that window.focus() does the job for all browsers, but not Firefox (#1489058)
    $('iframe,:focus:not(body)').blur();
    window.focus();
  }

  $(this.list).addClass('focus').removeAttr('tabindex');

  // set internal focus pointer to first row
  if (!this.last_selected)
    this.select_first(CONTROL_KEY);
},


/**
 * remove focus from the list
 */
blur: function(e)
{
  this.focused = false;

  // avoid the table getting focus right again (on Shift+Tab)
  var me = this;
  setTimeout(function() { $(me.list).attr('tabindex', '0'); }, 20);

  if (this.last_selected && this.rows[this.last_selected]) {
    $(this.rows[this.last_selected].obj)
      .find(this.col_tagname()).eq(this.subject_column()).removeAttr('tabindex');
  }

  $(this.list).removeClass('focus');
},

/**
 * Focus the given element without scrolling the list container
 */
focus_noscroll: function(elem)
{
  var y = this.frame.scrollTop || this.frame.scrollY;
  elem.focus();
  this.frame.scrollTop = y;
},


/**
 * Set/unset the given column as hidden
 */
hide_column: function(col, hide)
{
  var method = hide ? 'addClass' : 'removeClass';

  if (this.fixed_header)
    $(this.row_tagname()+' '+this.col_tagname()+'.'+col, this.fixed_header)[method]('hidden');

  $(this.row_tagname()+' '+this.col_tagname()+'.'+col, this.list)[method]('hidden');
},


/**
 * onmousedown-handler of message list column
 */
drag_column: function(e, col)
{
  if (this.colcount > 1) {
    this.drag_start = true;
    this.drag_mouse_start = rcube_event.get_mouse_pos(e);

    rcube_event.add_listener({event:'mousemove', object:this, method:'column_drag_mouse_move'});
    rcube_event.add_listener({event:'mouseup', object:this, method:'column_drag_mouse_up'});

    // enable dragging over iframes
    this.add_dragfix();

    // find selected column number
    for (var i=0; i<this.thead.rows[0].cells.length; i++) {
      if (col == this.thead.rows[0].cells[i]) {
        this.selected_column = i;
        break;
      }
    }
  }

  return false;
},


/**
 * onmousedown-handler of message list row
 */
drag_row: function(e, id)
{
  // don't do anything (another action processed before)
  if (!this.is_event_target(e))
    return true;

  // handle only left-clicks
  if (rcube_event.get_button(e) != 0)
    return true;

  this.in_selection_before = e && e.istouch || this.in_selection(id) ? id : false;

  // selects currently unselected row
  if (!this.in_selection_before) {
    var mod_key = rcube_event.get_modifier(e);
    this.select_row(id, mod_key, true);
  }

  if (this.draggable && this.selection.length && this.in_selection(id)) {
    this.drag_start = true;
    this.drag_mouse_start = rcube_event.get_mouse_pos(e);

    rcube_event.add_listener({event:'mousemove', object:this, method:'drag_mouse_move'});
    rcube_event.add_listener({event:'mouseup', object:this, method:'drag_mouse_up'});

    if (bw.touch) {
      rcube_event.add_listener({event:'touchmove', object:this, method:'drag_mouse_move'});
      rcube_event.add_listener({event:'touchend', object:this, method:'drag_mouse_up'});
    }

    // enable dragging over iframes
    this.add_dragfix();
    this.focus();
  }

  return false;
},


/**
 * onmouseup-handler of message list row
 */
click_row: function(e, id)
{
  // sanity check
  if (!id || !this.rows[id])
    return false;

  // don't do anything (another action processed before)
  if (!this.is_event_target(e))
    return true;

  var now = new Date().getTime(),
    dblclicked = now - this.rows[id].clicked < this.dblclick_time;

  // unselects currently selected row
  if (!this.drag_active && !dblclicked && this.in_selection_before == id)
    this.select_row(id, rcube_event.get_modifier(e), true);

  this.drag_start = false;
  this.in_selection_before = false;

  // row was double clicked
  if (this.rowcount && dblclicked && this.in_selection(id)) {
    this.triggerEvent('dblclick');
    now = 0;
  }
  else
    this.triggerEvent('click');

  if (!this.drag_active) {
    // remove temp divs
    this.del_dragfix();
    rcube_event.cancel(e);
  }

  this.rows[id].clicked = now;
  this.focus();

  return false;
},


/**
 * Check target of the current event
 */
is_event_target: function(e)
{
  var target = rcube_event.get_target(e),
    tagname = target.tagName.toLowerCase();

  return !(target && (tagname == 'input' || tagname == 'img' || (tagname != 'a' && target.onclick) || $(target).data('action-link')));
},


/*
 * Returns thread root ID for specified row ID
 */
find_root: function(uid)
{
   var r = this.rows[uid];

   if (r && r.parent_uid)
     return this.find_root(r.parent_uid);
   else
     return uid;
},


expand_row: function(e, id)
{
  var row = this.rows[id],
    evtarget = rcube_event.get_target(e),
    mod_key = rcube_event.get_modifier(e),
    action = (row.expanded ? 'collapse' : 'expand') + (mod_key == CONTROL_KEY || this.multiexpand ? '_all' : '');

  // Don't treat double click on the expando as double click on the message.
  row.clicked = 0;

  this[action](row);
},

collapse: function(row)
{
  var r, depth = row.depth,
    new_row = row ? row.obj.nextSibling : null;

  row.expanded = false;
  this.update_expando(row.id);
  this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });

  while (new_row) {
    if (new_row.nodeType == 1) {
      r = this.rows[new_row.uid];
      if (r && r.depth <= depth)
        break;

      $(new_row).css('display', 'none');
      if (r.expanded) {
        r.expanded = false;
        this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
      }
    }
    new_row = new_row.nextSibling;
  }

  this.resize();
  this.triggerEvent('listupdate');

  return false;
},

expand: function(row)
{
  var r, p, depth, new_row, last_expanded_parent_depth;

  if (row) {
    row.expanded = true;
    depth = row.depth;
    new_row = row.obj.nextSibling;
    this.update_expando(row.id, true);
    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
  }
  else {
    var tbody = this.tbody;
    new_row = tbody.firstChild;
    depth = 0;
    last_expanded_parent_depth = 0;
  }

  while (new_row) {
    if (new_row.nodeType == 1) {
      r = this.rows[new_row.uid];
      if (r) {
        if (row && (!r.depth || r.depth <= depth))
          break;

        if (r.parent_uid) {
          p = this.rows[r.parent_uid];
          if (p && p.expanded) {
            if ((row && p == row) || last_expanded_parent_depth >= p.depth - 1) {
              last_expanded_parent_depth = p.depth;
              $(new_row).css('display', '');
              r.expanded = true;
              this.update_expando(r.id, true);
              this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
            }
          }
          else
            if (row && (! p || p.depth <= depth))
              break;
        }
      }
    }
    new_row = new_row.nextSibling;
  }

  this.resize();
  this.triggerEvent('listupdate');

  return false;
},


collapse_all: function(row)
{
  var depth, new_row, r;

  if (row) {
    row.expanded = false;
    depth = row.depth;
    new_row = row.obj.nextSibling;
    this.update_expando(row.id);
    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });

    // don't collapse sub-root tree in multiexpand mode
    if (depth && this.multiexpand)
      return false;
  }
  else {
    new_row = this.tbody.firstChild;
    depth = 0;
  }

  while (new_row) {
    if (new_row.nodeType == 1) {
      if (r = this.rows[new_row.uid]) {
        if (row && (!r.depth || r.depth <= depth))
          break;

        if (row || r.depth)
          $(new_row).css('display', 'none');
        if (r.expanded) {
          r.expanded = false;
          if (r.has_children) {
            this.update_expando(r.id);
            this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
          }
        }
      }
    }
    new_row = new_row.nextSibling;
  }

  this.resize();
  this.triggerEvent('listupdate');

  return false;
},


expand_all: function(row)
{
  var depth, new_row, r;

  if (row) {
    row.expanded = true;
    depth = row.depth;
    new_row = row.obj.nextSibling;
    this.update_expando(row.id, true);
    this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
  }
  else {
    new_row = this.tbody.firstChild;
    depth = 0;
  }

  while (new_row) {
    if (new_row.nodeType == 1) {
      if (r = this.rows[new_row.uid]) {
        if (row && r.depth <= depth)
          break;

        $(new_row).css('display', '');
        if (!r.expanded) {
          r.expanded = true;
          if (r.has_children) {
            this.update_expando(r.id, true);
            this.triggerEvent('expandcollapse', { uid:r.uid, expanded:r.expanded, obj:new_row });
          }
        }
      }
    }
    new_row = new_row.nextSibling;
  }

  this.resize();
  this.triggerEvent('listupdate');

  return false;
},


update_expando: function(id, expanded)
{
  var expando = document.getElementById('rcmexpando' + id);
  if (expando)
    expando.className = expanded ? 'expanded' : 'collapsed';
},

get_row_uid: function(row)
{
  if (!row)
    return;

  if (!row.uid) {
    var uid = $(row).data('uid');
    if (uid)
      row.uid = uid;
    else if (String(row.id).match(this.id_regexp))
      row.uid = RegExp.$1;
  }

  return row.uid;
},

/**
 * get first/next/previous/last rows that are not hidden
 */
get_next_row: function(uid)
{
  if (!this.rowcount)
    return false;

  var last_selected_row = this.rows[uid || this.last_selected],
    new_row = last_selected_row ? last_selected_row.obj.nextSibling : null;

  while (new_row && (new_row.nodeType != 1 || new_row.style.display == 'none'))
    new_row = new_row.nextSibling;

  return new_row;
},

get_prev_row: function(uid)
{
  if (!this.rowcount)
    return false;

  var last_selected_row = this.rows[uid || this.last_selected],
    new_row = last_selected_row ? last_selected_row.obj.previousSibling : null;

  while (new_row && (new_row.nodeType != 1 || new_row.style.display == 'none'))
    new_row = new_row.previousSibling;

  return new_row;
},

get_first_row: function()
{
  if (this.rowcount) {
    var i, uid, rows = this.tbody.childNodes;

    for (i=0; i<rows.length; i++)
      if (rows[i].id && (uid = this.get_row_uid(rows[i])) && this.rows[uid])
        return uid;
  }

  return null;
},

get_last_row: function()
{
  if (this.rowcount) {
    var i, uid, rows = this.tbody.childNodes;

    for (i=rows.length-1; i>=0; i--)
      if (rows[i].id && (uid = this.get_row_uid(rows[i])) && this.rows[uid])
        return uid;
  }

  return null;
},

get_next: function()
{
  var row;
  if (row = this.get_next_row()) {
    return row.uid;
  }
},

get_prev: function()
{
  var row;
  if (row = this.get_prev_row()) {
    return row.uid;
  }
},

row_tagname: function()
{
  var row_tagnames = { table:'tr', ul:'li', '*':'div' };
  return row_tagnames[this.tagname] || row_tagnames['*'];
},

col_tagname: function(tagname)
{
  var col_tagnames = { table:'td', thead:'th', tbody:'td', '*':'span' };
  return col_tagnames[tagname || this.tagname] || col_tagnames['*'];
},

get_cell: function(row, index)
{
  return $(this.col_tagname(), row).eq(index + (this.checkbox_selection ? 1 : 0));
},

/**
 * selects or unselects the proper row depending on the modifier key pressed
 */
select_row: function(id, mod_key, with_mouse)
{
  var select_before = this.selection.join(','),
    in_selection_before = this.in_selection(id);

  if (!this.multiselect && with_mouse)
    mod_key = 0;

  if (!this.shift_start)
    this.shift_start = id

  if (!mod_key) {
    this.shift_start = id;
    this.highlight_row(id, false);
    this.multi_selecting = false;
  }
  else {
    switch (mod_key) {
      case SHIFT_KEY:
        this.shift_select(id, false);
        break;

      case CONTROL_KEY:
        if (with_mouse) {
          this.shift_start = id;
          this.highlight_row(id, true);
        }
        break;

      case CONTROL_SHIFT_KEY:
        this.shift_select(id, true);
        break;

      default:
        this.highlight_row(id, false);
        break;
    }

    this.multi_selecting = true;
  }

  if (this.last_selected && this.rows[this.last_selected]) {
    $(this.rows[this.last_selected].obj).removeClass('focused')
      .find(this.col_tagname()).eq(this.subject_column()).removeAttr('tabindex');
  }

  // unselect if toggleselect is active and the same row was clicked again
  if (this.toggleselect && in_selection_before && !mod_key) {
    this.clear_selection();
  }
  // trigger event if selection changed
  else if (this.selection.join(',') != select_before) {
    this.triggerEvent('select');
  }

  if (this.rows[id]) {
    $(this.rows[id].obj).addClass('focused');
    // set cursor focus to link inside selected row
    if (this.focused)
      this.focus_noscroll($(this.rows[id].obj).find(this.col_tagname()).eq(this.subject_column()).attr('tabindex', '0'));
  }

  if (!this.selection.length)
    this.shift_start = null;

  this.last_selected = id;
},


/**
 * Alias method for select_row
 */
select: function(id)
{
  this.select_row(id, false);
  this.scrollto(id);
},


/**
 * Select row next to the specified or last selected one
 * Either below or above.
 */
select_next: function(uid)
{
  var new_row = this.get_next_row(uid) || this.get_prev_row(uid);
  if (new_row)
    this.select_row(new_row.uid, false, false);
},


/**
 * Select first row
 */
select_first: function(mod_key, noscroll)
{
  var row = this.get_first_row();
  if (row) {
    this.select_row(row, mod_key, false);

    if (!noscroll)
      this.scrollto(row);
  }
},


/**
 * Select last row
 */
select_last: function(mod_key, noscroll)
{
  var row = this.get_last_row();
  if (row) {
    this.select_row(row, mod_key, false);

    if (!noscroll)
      this.scrollto(row);
  }
},


/**
 * Add all children of the given row to selection
 */
select_children: function(uid)
{
  var i, children = this.row_children(uid), len = children.length;

  for (i=0; i<len; i++)
    if (!this.in_selection(children[i]))
      this.select_row(children[i], CONTROL_KEY, true);
},


/**
 * Perform selection when shift key is pressed
 */
shift_select: function(id, control)
{
  if (!this.rows[this.shift_start] || !this.selection.length)
    this.shift_start = id;

  var n, i, j, to_row = this.rows[id],
    from_rowIndex = this._rowIndex(this.rows[this.shift_start].obj),
    to_rowIndex = this._rowIndex(to_row.obj);

  // if we're going down the list, and we hit a thread, and it's closed, select the whole thread
  if (from_rowIndex < to_rowIndex && !to_row.expanded && to_row.has_children)
    if (to_row = this.rows[(this.row_children(id)).pop()])
      to_rowIndex = this._rowIndex(to_row.obj);

  i = ((from_rowIndex < to_rowIndex) ? from_rowIndex : to_rowIndex),
  j = ((from_rowIndex > to_rowIndex) ? from_rowIndex : to_rowIndex);

  // iterate through the entire message list
  for (n in this.rows) {
    if (this._rowIndex(this.rows[n].obj) >= i && this._rowIndex(this.rows[n].obj) <= j) {
      if (!this.in_selection(n)) {
        this.highlight_row(n, true);
      }
    }
    else {
      if (this.in_selection(n) && !control) {
        this.highlight_row(n, true);
      }
    }
  }
},


/**
 * Helper method to emulate the rowIndex property of non-tr elements
 */
_rowIndex: function(obj)
{
  return (obj.rowIndex !== undefined) ? obj.rowIndex : $(obj).prevAll().length;
},

/**
 * Check if given id is part of the current selection
 */
in_selection: function(id, index)
{
  for (var n in this.selection)
    if (this.selection[n] == id)
      return index ? parseInt(n) : true;

  return false;
},


/**
 * Select each row in list
 */
select_all: function(filter)
{
  if (!this.rowcount)
    return false;

  // reset but remember selection first
  var n, select_before = this.selection.join(',');
  this.selection = [];

  for (n in this.rows) {
    if (!filter || this.rows[n][filter] == true) {
      this.last_selected = n;
      this.highlight_row(n, true, true);
    }
    else {
      $(this.rows[n].obj).removeClass('selected').removeAttr('aria-selected');
    }
  }

  // trigger event if selection changed
  if (this.selection.join(',') != select_before)
    this.triggerEvent('select');

  this.focus();

  return true;
},


/**
 * Invert selection
 */
invert_selection: function()
{
  if (!this.rowcount)
    return false;

  // remember old selection
  var n, select_before = this.selection.join(',');

  for (n in this.rows)
    this.highlight_row(n, true);

  // trigger event if selection changed
  if (this.selection.join(',') != select_before)
    this.triggerEvent('select');

  this.focus();

  return true;
},


/**
 * Unselect selected row(s)
 */
clear_selection: function(id, no_event)
{
  var n, num_select = this.selection.length;

  // one row
  if (id) {
    for (n in this.selection)
      if (this.selection[n] == id) {
        this.selection.splice(n,1);
        break;
      }
  }
  // all rows
  else {
    for (n in this.selection)
      if (this.rows[this.selection[n]]) {
        $(this.rows[this.selection[n]].obj).removeClass('selected').removeAttr('aria-selected');
      }

    this.selection = [];
  }

  if (this.checkbox_selection)
    $(this.row_tagname() + ':not(.selected) > .selection > input:checked', this.list).prop('checked', false);

  if (num_select && !this.selection.length && !no_event) {
    this.triggerEvent('select');
    this.last_selected = null;
  }
},


/**
 * Getter for the selection array
 */
get_selection: function(deep)
{
  var res = $.merge([], this.selection);

  var props = {deep: deep, res: res};
  if (this.triggerEvent('getselection', props) === false)
    return props.res;

  // return children of selected threads even if only root is selected
  if (deep !== false && res.length) {
    for (var uid, uids, i=0, len=res.length; i<len; i++) {
      uid = res[i];
      if (this.rows[uid] && this.rows[uid].has_children && !this.rows[uid].expanded) {
        uids = this.row_children(uid);
        for (var j=0, uids_len=uids.length; j<uids_len; j++) {
          uid = uids[j];
          if (!this.in_selection(uid))
            res.push(uid);
        }
      }
    }
  }

  return res;
},


/**
 * Return the ID if only one row is selected
 */
get_single_selection: function()
{
  var selection = this.get_selection(false);

  if (selection.length == 1)
    return selection[0];
  else
    return null;
},


/**
 * Highlight/unhighlight a row
 */
highlight_row: function(id, multiple, norecur)
{
  if (!this.rows[id])
    return;

  if (!multiple) {
    if (this.selection.length > 1 || !this.in_selection(id)) {
      this.clear_selection(null, true);
      this.selection[0] = id;
      $(this.rows[id].obj).addClass('selected').attr('aria-selected', 'true');

      if (this.checkbox_selection)
        $('.selection > input', this.rows[id].obj).prop('checked', true);
    }
  }
  else {
    var pre, post, p = this.in_selection(id, true);

    if (p === false) { // select row
      this.selection.push(id);
      $(this.rows[id].obj).addClass('selected').attr('aria-selected', 'true');

      if (this.checkbox_selection)
        $('.selection > input', this.rows[id].obj).prop('checked', true);

      if (!norecur && !this.rows[id].expanded)
        this.highlight_children(id, true);
    }
    else { // unselect row
      pre = this.selection.slice(0, p);
      post = this.selection.slice(p+1, this.selection.length);

      this.selection = pre.concat(post);
      $(this.rows[id].obj).removeClass('selected').removeAttr('aria-selected');

      if (this.checkbox_selection)
        $('.selection > input', this.rows[id].obj).prop('checked', false);

      if (!norecur && !this.rows[id].expanded)
        this.highlight_children(id, false);
    }
  }
},


/**
 * Highlight/unhighlight all children of the given row
 */
highlight_children: function(id, status)
{
  var i, selected,
    children = this.row_children(id), len = children.length;

  for (i=0; i<len; i++) {
    selected = this.in_selection(children[i]);
    if ((status && !selected) || (!status && selected))
      this.highlight_row(children[i], true, true);
  }
},


/**
 * Handler for keyboard events
 */
key_press: function(e)
{
  if (!this.focused || $(e.target).is('input,textarea,select'))
    return true;

  var keyCode = rcube_event.get_keycode(e),
    mod_key = rcube_event.get_modifier(e);

  switch (keyCode) {
    case 37:    // Left arrow
    case 39:    // Right arrow
    case 40:    // Up arrow
    case 38:    // Down arrow
    case 63233: // "down" in Safari keypress
    case 63232: // "up" in Safari keypress
      // Stop propagation so that the browser doesn't scroll
      rcube_event.cancel(e);
      return this.use_arrow_key(keyCode, mod_key);

    case 32: // Space
      rcube_event.cancel(e);
      return this.select_row(this.last_selected, mod_key, true);

    case 36: // Home
      this.select_first(mod_key);
      return rcube_event.cancel(e);

    case 35: // End
      this.select_last(mod_key);
      return rcube_event.cancel(e);

    case 65: // Ctrl + A
      if (mod_key == CONTROL_KEY && this.multiselect) {
        this.select_first(null, true);
        this.select_last(SHIFT_KEY, true);
        return rcube_event.cancel(e);
      }
      break;

    case 27: // Esc
      if (this.drag_active)
        return this.drag_mouse_up(e);

      if (this.col_drag_active) {
        this.selected_column = null;
        return this.column_drag_mouse_up(e);
      }

      return rcube_event.cancel(e);

    case 9: // Tab
      this.blur();
      break;

    case 13: // Enter
      if (!this.selection.length)
        this.select_row(this.last_selected, mod_key, false);

    default:
      this.key_pressed = keyCode;
      this.modkey = mod_key;
      this.triggerEvent('keypress');
      this.modkey = 0;

      if (this.key_pressed == this.BACKSPACE_KEY)
        return rcube_event.cancel(e);
  }

  return true;
},


/**
 * Special handling method for arrow keys
 */
use_arrow_key: function(keyCode, mod_key)
{
  var new_row, selected_row = this.rows[this.last_selected];

  if (!selected_row) {
    // select the first row if none selected yet
    this.select_first(CONTROL_KEY);
  }
  // Safari uses the non-standard keycodes 63232/63233 for up/down, if we're
  // using the keypress event (but not the keydown or keyup event).
  else if (keyCode == 40 || keyCode == 63233) // Down arrow
    new_row = this.get_next_row();
  else if (keyCode == 38 || keyCode == 63232) // Up arrow
    new_row = this.get_prev_row();
  else if (keyCode == 39 && selected_row.has_children) { // Right arrow
    if (!selected_row.expanded)
      this.expand_all(selected_row);
    else {
      // jump to the first child
      new_row = this.get_next_row();
      mod_key = null;
    }
  }
  else if (keyCode == 37) { // Left arrow
    if (selected_row.expanded && selected_row.has_children && (!selected_row.parent_uid || !this.multiexpand))
      this.collapse_all(selected_row);
    else if (selected_row.parent_uid) {
      // jump to the top-most or closest parent
      if (mod_key == CONTROL_KEY)
        new_row = this.rows[this.find_root(selected_row.uid)];
      else
        new_row = this.rows[selected_row.parent_uid];

      mod_key = null;
    }
  }

  if (new_row) {
    // simulate ctr-key if no rows are selected
    if (!mod_key && !this.selection.length)
      mod_key = CONTROL_KEY;

    this.select_row(new_row.uid, mod_key, false);
    this.scrollto(new_row.uid);
  }

  return false;
},


/**
 * Try to scroll the list to make the specified row visible
 */
scrollto: function(id)
{
  var row = this.rows[id] ? this.rows[id].obj : null;

  if (row && this.frame) {
    var scroll_to = Number(row.offsetTop),
      head_offset = 0;

    // expand thread if target row is hidden (collapsed)
    if (!scroll_to && this.rows[id].parent_uid) {
      var parent = this.find_root(this.rows[id].uid);
      this.expand_all(this.rows[parent]);
      scroll_to = Number(row.offsetTop);
    }

    if (this.fixed_header)
      head_offset = Number(this.thead.offsetHeight);

    // if row is above the frame (or behind header)
    if (scroll_to < Number(this.frame.scrollTop) + head_offset) {
      // scroll window so that row isn't behind header
      this.frame.scrollTop = scroll_to - head_offset;
    }
    else if (scroll_to + Number(row.offsetHeight) > Number(this.frame.scrollTop) + Number(this.frame.offsetHeight))
      this.frame.scrollTop = (scroll_to + Number(row.offsetHeight)) - Number(this.frame.offsetHeight);
  }
},


/**
 * Handler for mouse move events
 */
drag_mouse_move: function(e)
{
  // convert touch event
  if (e.type == 'touchmove') {
    if (e.touches.length == 1 && e.changedTouches.length == 1)
      e = rcube_event.touchevent(e.changedTouches[0]);
    else
      return rcube_event.cancel(e);
  }

  if (this.drag_start) {
    // check mouse movement, of less than 3 pixels, don't start dragging
    var m = rcube_event.get_mouse_pos(e),
      limit = 10, selection = [], self = this;

    if (!this.drag_mouse_start || (Math.abs(m.x - this.drag_mouse_start.x) < 3 && Math.abs(m.y - this.drag_mouse_start.y) < 3))
      return false;

    // remember dragging start position
    this.drag_start_pos = {left: m.x, top: m.y};

    // initialize drag layer
    if (!this.draglayer)
      this.draglayer = $('<div>').attr('id', 'rcmdraglayer')
        .css({position: 'absolute', display: 'none', 'z-index': 2000})
        .appendTo(document.body);
    else
      this.draglayer.html('');

    // get selected rows (in display order), don't use this.selection here
    $(this.row_tagname() + '.selected', this.tbody).each(function() {
      var uid = self.get_row_uid(this), row = self.rows[uid];

      if (!row || $.inArray(uid, selection) > -1)
        return;

      selection.push(uid);

      // also handle children of (collapsed) trees for dragging (they might be not selected)
      if (row.has_children && !row.expanded)
        $.each(self.row_children(uid), function() {
          if ($.inArray(this, selection) > -1)
            return;
          selection.push(this);
        });

      // break the loop asap
      if (selection.length > limit + 1)
        return false;
    });

    var row, subject,
      subject_col = self.subject_column(),
      subject_func = function(cell) {
        if (cell) {
          // remove elements marked with "skip-on-drag" class
          cell = $(cell).clone();
          $(cell).find('.skip-on-drag').remove();
        }
        return cell ? cell.text() : '';
      };

    // append subject (of every row up to the limit) to the drag layer
    $.each(selection, function(i, uid) {
      if (i > limit) {
        self.draglayer.append($('<div>').text('...'));
        return false;
      }

      row = self.rows[uid].obj;
      subject = '';

      $(row).children(self.col_tagname()).each(function(n, cell) {
        if (subject_col < 0 || (subject_col >= 0 && subject_col == n)) {
          if (subject = subject_func(cell)) {
            return false;
          }
        }
      });

      // Subject column might be wrong, fallback to .subject
      if (!subject.length) {
        subject = subject_func($(row).children('.subject').first());
      }

      if (subject.length) {
        // remove leading spaces
        subject = subject.trim();
        // truncate line to 50 characters
        subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject);

        self.draglayer.append($('<div>').text(subject));
      }
    });

    this.draglayer.show();
    this.drag_active = true;
    this.triggerEvent('dragstart');
  }

  if (this.drag_active && this.draglayer) {
    var pos = rcube_event.get_mouse_pos(e);
    this.draglayer.css({ left:(pos.x+20)+'px', top:(pos.y-5 + (bw.ie ? document.documentElement.scrollTop : 0))+'px' });
    this.triggerEvent('dragmove', e?e:window.event);
  }

  this.drag_start = false;

  return false;
},


/**
 * Handler for mouse up events
 */
drag_mouse_up: function(e)
{
  document.onmousemove = null;

  if (e.type == 'touchend') {
    if (e.changedTouches.length != 1)
      return rcube_event.cancel(e);
  }

  if (this.draglayer && this.draglayer.is(':visible')) {
    if (this.drag_start_pos)
      this.draglayer.animate(this.drag_start_pos, 300, 'swing').hide(20);
    else
      this.draglayer.hide();
  }

  if (this.drag_active)
    this.focus();
  this.drag_active = false;

  rcube_event.remove_listener({event:'mousemove', object:this, method:'drag_mouse_move'});
  rcube_event.remove_listener({event:'mouseup', object:this, method:'drag_mouse_up'});

  if (bw.touch) {
    rcube_event.remove_listener({event:'touchmove', object:this, method:'drag_mouse_move'});
    rcube_event.remove_listener({event:'touchend', object:this, method:'drag_mouse_up'});
  }

  // remove temp divs
  this.del_dragfix();

  this.triggerEvent('dragend', e);

  return rcube_event.cancel(e);
},


/**
 * Handler for mouse move events for dragging list column
 */
column_drag_mouse_move: function(e)
{
  if (this.drag_start) {
    // check mouse movement, of less than 3 pixels, don't start dragging
    var i, m = rcube_event.get_mouse_pos(e);

    if (!this.drag_mouse_start || (Math.abs(m.x - this.drag_mouse_start.x) < 3 && Math.abs(m.y - this.drag_mouse_start.y) < 3))
      return false;

    if (!this.col_draglayer) {
      var lpos = $(this.list).offset(),
        cells = this.thead.rows[0].cells;

      // fix layer position when list is scrolled
      lpos.top += this.list.scrollTop + this.list.parentNode.scrollTop;

      // create dragging layer
      this.col_draglayer = $('<div>').attr('id', 'rcmcoldraglayer')
        .css(lpos).css({ position:'absolute', 'z-index':2001,
           'background-color':'white', opacity:0.75,
           height: (this.frame.offsetHeight-2)+'px', width: (this.frame.offsetWidth-2)+'px' })
        .appendTo(document.body)
        // ... and column position indicator
       .append($('<div>').attr('id', 'rcmcolumnindicator')
          .css({ position:'absolute', 'border-right':'2px dotted #555', 
          'z-index':2002, height: (this.frame.offsetHeight-2)+'px' }));

      this.cols = [];
      this.list_pos = this.list_min_pos = lpos.left;
      // save columns positions
      for (i=0; i<cells.length; i++) {
        this.cols[i] = cells[i].offsetWidth;
        if (this.column_fixed !== null && i <= this.column_fixed) {
          this.list_min_pos += this.cols[i];
        }
      }
    }

    this.col_draglayer.show();
    this.col_drag_active = true;
    this.triggerEvent('column_dragstart');
  }

  // set column indicator position
  if (this.col_drag_active && this.col_draglayer) {
    var i, cpos = 0, pos = rcube_event.get_mouse_pos(e);

    for (i=0; i<this.cols.length; i++) {
      if (pos.x >= this.cols[i]/2 + this.list_pos + cpos)
        cpos += this.cols[i];
      else
        break;
    }

    // handle fixed columns on left
    if (i == 0 && this.list_min_pos > pos.x)
      cpos = this.list_min_pos - this.list_pos;
    // empty list needs some assignment
    else if (!this.list.rowcount && i == this.cols.length)
      cpos -= 2;
    $('#rcmcolumnindicator').css({ width: cpos+'px'});
    this.triggerEvent('column_dragmove', e?e:window.event);
  }

  this.drag_start = false;

  return false;
},


/**
 * Handler for mouse up events for dragging list columns
 */
column_drag_mouse_up: function(e)
{
  document.onmousemove = null;

  if (this.col_draglayer) {
    (this.col_draglayer).remove();
    this.col_draglayer = null;
  }

  rcube_event.remove_listener({event:'mousemove', object:this, method:'column_drag_mouse_move'});
  rcube_event.remove_listener({event:'mouseup', object:this, method:'column_drag_mouse_up'});

  // remove temp divs
  this.del_dragfix();

  if (this.col_drag_active) {
    this.col_drag_active = false;
    this.focus();
    this.triggerEvent('column_dragend', e);

    if (this.selected_column !== null && this.cols && this.cols.length) {
      var i, cpos = 0, pos = rcube_event.get_mouse_pos(e);

      // find destination position
      for (i=0; i<this.cols.length; i++) {
        if (pos.x >= this.cols[i]/2 + this.list_pos + cpos)
          cpos += this.cols[i];
        else
          break;
      }

      if (i != this.selected_column && i != this.selected_column+1) {
        this.column_replace(this.selected_column, i);
      }
    }
  }

  return rcube_event.cancel(e);
},


/**
 * Returns IDs of all rows in a thread (except root) for specified root
 */
row_children: function(uid)
{
  if (!this.rows[uid] || !this.rows[uid].has_children)
    return [];

  var res = [], depth = this.rows[uid].depth,
    row = this.rows[uid].obj.nextSibling;

  while (row) {
    if (row.nodeType == 1) {
      if (r = this.rows[row.uid]) {
        if (!r.depth || r.depth <= depth)
          break;
        res.push(r.uid);
      }
    }
    row = row.nextSibling;
  }

  return res;
},


/**
 * Creates a layer for drag&drop over iframes
 */
add_dragfix: function()
{
  $('iframe').each(function() {
    $('<div class="iframe-dragdrop-fix"></div>')
      .css({background: '#fff',
        width: this.offsetWidth+'px', height: this.offsetHeight+'px',
        position: 'absolute', opacity: '0.001', zIndex: 1000
      })
      .css($(this).offset())
      .appendTo(document.body);
  });
},


/**
 * Removes the layer for drag&drop over iframes
 */
del_dragfix: function()
{
  $('div.iframe-dragdrop-fix').remove();
},


/**
 * Replaces two columns
 */
column_replace: function(from, to)
{
  // only supported for <table> lists
  if (!this.thead || !this.thead.rows)
    return;

  var len, cells = this.thead.rows[0].cells,
    elem = cells[from],
    before = cells[to],
    td = document.createElement('td');

  // replace header cells
  if (before)
    cells[0].parentNode.insertBefore(td, before);
  else
    cells[0].parentNode.appendChild(td);
  cells[0].parentNode.replaceChild(elem, td);

  // replace list cells
  for (r=0, len=this.tbody.rows.length; r<len; r++) {
    row = this.tbody.rows[r];

    elem = row.cells[from];
    before = row.cells[to];
    td = document.createElement('td');

    if (before)
      row.insertBefore(td, before);
    else
      row.appendChild(td);
    row.replaceChild(elem, td);
  }

  // update subject column position
  if (this.subject_col == from)
    this.subject_col = to > from ? to - 1 : to;
  else if (this.subject_col < from && to <= this.subject_col)
    this.subject_col++;
  else if (this.subject_col > from && to >= this.subject_col)
    this.subject_col--;

  if (this.fixed_header)
    this.init_header();

  this.triggerEvent('column_replace');
},

subject_column: function()
{
  return this.subject_col + (this.checkbox_selection ? 1 : 0);
}

};

rcube_list_widget.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
rcube_list_widget.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;
rcube_list_widget.prototype.triggerEvent = rcube_event_engine.prototype.triggerEvent;

// static
rcube_list_widget._instances = [];
include/rcmail_attachment_handler.php000064400000031256151727150440014071 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Unified access to attachment properties and body                    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Unified access to attachment properties and body
 * Unified for message parts as well as uploaded attachments
 *
 * @package Webmail
 */
class rcmail_attachment_handler
{
    public $filename;
    public $size;
    public $mimetype;
    public $ident;
    public $charset = RCUBE_CHARSET;

    private $message;
    private $part;
    private $upload;
    private $body;
    private $body_file;
    private $download = false;

    /**
     * Class constructor.
     * Reads request parameters and initializes attachment/part props.
     */
    public function __construct()
    {
        ob_end_clean();

        $part_id    = rcube_utils::get_input_string('_part', rcube_utils::INPUT_GET);
        $file_id    = rcube_utils::get_input_string('_file', rcube_utils::INPUT_GET);
        $compose_id = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GET);
        $uid        = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GET);
        $rcube      = rcube::get_instance();

        $this->download = !empty($_GET['_download']);

        // similar code as in program/steps/mail/show.inc
        if (!empty($uid)) {
            $rcube->config->set('prefer_html', true);
            $this->message = new rcube_message($uid, null, !empty($_GET['_safe']));
            $this->part = $this->message->mime_parts[$part_id] ?? null;

            if ($this->part) {
                $this->filename = rcmail_action_mail_index::attachment_name($this->part);
                $this->mimetype = $this->part->mimetype;
                $this->size     = $this->part->size;
                $this->ident    = $this->message->headers->messageID . ':' . $this->part->mime_id . ':' . $this->size . ':' . $this->mimetype;
                $this->charset  = $this->part->charset ?: RCUBE_CHARSET;

                if (empty($_GET['_frame'])) {
                    // allow post-processing of the attachment body
                    $plugin = $rcube->plugins->exec_hook('message_part_get', [
                            'uid'      => $uid,
                            'id'       => $this->part->mime_id,
                            'mimetype' => $this->mimetype,
                            'part'     => $this->part,
                            'download' => $this->download,
                    ]);

                    if ($plugin['abort']) {
                        exit;
                    }

                    // overwrite modified vars from plugin
                    $this->mimetype = $plugin['mimetype'];

                    if (!empty($plugin['body'])) {
                        $this->body = $plugin['body'];
                        $this->size = strlen($this->body);
                    }
                }
            }
        }
        else if ($file_id && $compose_id) {
            $file_id = preg_replace('/^rcmfile/', '', $file_id);
            $compose = $_SESSION['compose_data_' . $compose_id] ?? null;

            if ($compose && ($this->upload = $compose['attachments'][$file_id])) {
                $this->filename = $this->upload['name'];
                $this->mimetype = $this->upload['mimetype'];
                $this->size     = $this->upload['size'];
                $this->ident    = sprintf('%s:%s%s', $compose_id, $file_id, $this->size);
                $this->charset  = !empty($this->upload['charset']) ? $this->upload['charset'] : RCUBE_CHARSET;
            }
        }

        if (empty($this->part) && empty($this->upload)) {
            header('HTTP/1.1 404 Not Found');
            exit;
        }

        // check connection status
        self::check_storage_status();

        $this->mimetype = rcube_mime::fix_mimetype($this->mimetype);
    }

    /**
     * Remove temp files, etc.
     */
    public function __destruct()
    {
        if ($this->body_file) {
            @unlink($this->body_file);
        }
    }

    /**
     * Check if the object is a message part not uploaded file
     *
     * @return bool True if the object is a message part
     */
    public function is_message_part()
    {
        return !empty($this->message);
    }

    /**
     * Object/request status
     *
     * @return bool Status
     */
    public function is_valid()
    {
        return !empty($this->part) || !empty($this->upload);
    }

    /**
     * Return attachment/part mimetype if this is an image
     * of supported type.
     *
     * @return string Image mimetype
     */
    public function image_type()
    {
        $part = (object) [
            'filename' => $this->filename,
            'mimetype' => $this->mimetype,
        ];

        return rcmail_action_mail_index::part_image_type($part);
    }

    /**
     * Formatted attachment/part size (with units)
     *
     * @return string Attachment/part size (with units)
     */
    public function size()
    {
        $part = $this->part ?: ((object) ['size' => $this->size, 'exact_size' => true]);
        return rcmail_action::message_part_size($part);
    }

    /**
     * Returns, prints or saves the attachment/part body
     */
    public function body($size = null, $fp = null)
    {
        // we may have the body in memory or file already
        if ($this->body !== null) {
            if ($fp == -1) {
                echo $size ? substr($this->body, 0, $size) : $this->body;
            }
            else if ($fp) {
                $result = fwrite($fp, $size ? substr($this->body, $size) : $this->body) !== false;
            }
            else {
                $result = $size ? substr($this->body, 0, $size) : $this->body;
            }
        }
        else if ($this->body_file) {
            if ($size) {
                $result = file_get_contents($this->body_file, false, null, 0, $size);
            }
            else {
                $result = file_get_contents($this->body_file);
            }

            if ($fp == -1) {
                echo $result;
            }
            else if ($fp) {
                $result = fwrite($fp, $result) !== false;
            }
        }
        else if ($this->message) {
            $result = $this->message->get_part_body($this->part->mime_id, false, 0, $fp);

            // check connection status
            if (!$fp && $this->size && empty($result)) {
                self::check_storage_status();
            }
        }
        else if ($this->upload) {
            // This hook retrieves the attachment contents from the file storage backend
            $attachment = rcube::get_instance()->plugins->exec_hook('attachment_get', $this->upload);

            if ($fp && $fp != -1) {
                if ($attachment['data']) {
                    $result = fwrite($fp, $size ? substr($attachment['data'], 0, $size) : $attachment['data']) !== false;
                }
                else if ($attachment['path']) {
                    if ($fh = fopen($attachment['path'], 'rb')) {
                        $result = stream_copy_to_stream($fh, $fp, $size ? $size : -1);
                    }
                }
            }
            else {
                $data = $attachment['data'] ?? '';
                if (!$data && $attachment['path']) {
                    $data = file_get_contents($attachment['path']);
                }

                if ($fp == -1) {
                    echo $size ? substr($data, 0, $size) : $data;
                }
                else {
                    $result = $size ? substr($data, 0, $size) : $data;
                }
            }
        }

        return $result ?? null;
    }

    /**
     * Save the body to a file
     *
     * @param string $filename File name with path
     *
     * @return bool True on success, False on failure
     */
    public function body_to_file($filename)
    {
        if ($filename && $this->size && ($fp = fopen($filename, 'w'))) {
            $this->body(0, $fp);
            $this->body_file = $filename;
            fclose($fp);
            @chmod($filename, 0600);

            return true;
        }

        return false;
    }

    /**
     * Output attachment body with content filtering
     */
    public function output($mimetype)
    {
        if (!$this->size) {
            return false;
        }

        $secure = stripos($mimetype, 'image/') === false || $this->download;

        // Remove <script> in SVG images
        if (!$secure && stripos($mimetype, 'image/svg') === 0) {
            if (!$this->body) {
                $this->body = $this->body();
                if (empty($this->body)) {
                    return false;
                }
            }

            echo self::svg_filter($this->body);
            return true;
        }

        if ($this->body !== null && !$this->download) {
            header("Content-Length: " . strlen($this->body));
            echo $this->body;
            return true;
        }

        // Don't be tempted to set Content-Length to $part->d_parameters['size'] (#1490482)
        // RFC2183 says "The size parameter indicates an approximate size"

        return $this->body(0, -1);
    }

    /**
     * Returns formatted HTML if the attachment is HTML
     */
    public function html()
    {
        list($type, $subtype) = explode('/', $this->mimetype);
        $part = (object) [
            'charset'         => $this->charset,
            'ctype_secondary' => $subtype,
        ];

        // get part body if not available
        // fix formatting and charset
        $body = rcube_message::format_part_body($this->body(), $part);

        // show images?
        $is_safe = $this->is_safe();

        return rcmail_action_mail_index::wash_html($body, ['safe' => $is_safe, 'inline_html' => false]);
    }

    /**
     * Remove <script> in SVG images
     */
    public static function svg_filter($body)
    {
        // clean SVG with washtml
        $wash_opts = [
            'show_washed'   => false,
            'allow_remote'  => false,
            'charset'       => RCUBE_CHARSET,
            'html_elements' => ['title'],
        ];

        // initialize HTML washer
        $washer = new rcube_washtml($wash_opts);

        // allow CSS styles, will be sanitized by rcmail_washtml_callback()
        $washer->add_callback('style', 'rcmail_action_mail_index::washtml_callback');

        return $washer->wash($body);
    }

    /**
     * Handles nicely storage connection errors
     */
    public static function check_storage_status()
    {
        $error = rcmail::get_instance()->storage->get_error_code();

        // Check if we have a connection error
        if ($error == rcube_imap_generic::ERROR_BAD) {
            ob_end_clean();

            // Get action is often executed simultaneously.
            // Some servers have MAXPERIP or other limits.
            // To workaround this we'll wait for some time
            // and try again (once).
            // Note: Random sleep interval is used to minimize concurrency
            // in getting message parts

            if (!isset($_GET['_redirected'])) {
                usleep(rand(10, 30) * 100000); // 1-3 sec.
                header('Location: ' . $_SERVER['REQUEST_URI'] . '&_redirected=1');
            }
            else {
                rcube::raise_error([
                        'code' => 500, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => 'Unable to get/display message part. IMAP connection error'
                    ],
                    true, true
                );
            }

            // Don't kill session, just quit (#1486995)
            exit;
        }
    }

    public function is_safe()
    {
        if ($this->message) {
            return rcmail_action_mail_index::check_safe($this->message);
        }

        return !empty($_GET['_safe']);
    }
}
include/rcmail_resend_mail.php000064400000014103151727150440012516 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Bounce/resend an email message                                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Mail_mime wrapper to handle mail resend/bounce
 *
 * @package Webmail
 */
class rcmail_resend_mail extends Mail_mime
{
    protected $orig_head;
    protected $orig_body;


    /**
     * Object constructor.
     *
     * @param array $params Class parameters derived from Mail_mime plus
     *                      'bounce_message' - rcube_message object of the original message
     *                      'bounce_headers' - An array of headers to be added to the original message
     */
    public function __construct($params = [])
    {
        // To make the code simpler always use delay_file_io=true
        $params['delay_file_io'] = true;
        $params['eol']           = "\r\n";

        if (!isset($params['bounce_headers'])) {
            $params['bounce_headers'] = [];
        }

        parent::__construct($params);
    }

    /**
     * Returns/Sets message headers
     */
    public function headers($headers = [], $overwrite = false, $skip_content = false)
    {
        // headers() wrapper that returns Resent-Cc, Resent-Bcc instead of Cc,Bcc
        // it's also called to re-add Resent-Bcc after it has been sent (to store in Sent)

        if (array_key_exists('Bcc', $headers)) {
            $this->build_params['bounce_headers']['Resent-Bcc'] = $headers['Bcc'];
        }

        foreach ($this->build_params['bounce_headers'] as $key => $val) {
            $headers[str_replace('Resent-', '', $key)] = $val;
        }

        return $headers;
    }

    /**
     * Returns all message headers as string
     */
    public function txtHeaders($headers = [], $overwrite = false, $skip_content = false)
    {
        // i.e. add Resent-* headers on top of the original message head
        $this->init_message();

        $result = [];

        foreach ($this->build_params['bounce_headers'] as $name => $value) {
            $key = str_replace('Resent-', '', $name);

            // txtHeaders() can be used to unset Bcc header
            if (array_key_exists($key, $headers)) {
                $value = $headers[$key];
                $this->build_params['bounce_headers']['Resent-'.$key] = $value;
            }

            if ($value) {
                $result[] = "$name: $value";
            }
        }

        $result = implode($this->build_params['eol'], $result);

        if (strlen($this->orig_head)) {
            $result .= $this->build_params['eol'] . $this->orig_head;
        }

        return $result;
    }

    /**
     * Save the message body to a file (if delay_file_io=true)
     */
    public function saveMessageBody($file, $params = null)
    {
        $this->init_message();

        // this will be called only once, so let just move the file
        rename($this->orig_body, $file);

        $this->orig_head = null;
    }

    /**
     * Initialize the internal message. Fetches the message from the storage.
     */
    protected function init_message()
    {
        if ($this->orig_head !== null) {
            return;
        }

        $rcmail   = rcmail::get_instance();
        $storage  = $rcmail->get_storage();
        $message  = $this->build_params['bounce_message'];
        $path     = rcube_utils::temp_filename('bounce');

        // We'll write the body to the file and the headers to a variable
        if ($fp = fopen($path, 'w')) {
            stream_filter_register('bounce_source', 'rcmail_bounce_stream_filter');
            stream_filter_append($fp, 'bounce_source');

            // message part
            if ($message->context) {
                $message->get_part_body($message->context, false, 0, $fp);
            }
            // complete message
            else {
                $storage->set_folder($message->folder);
                $storage->get_raw_body($message->uid, $fp);
            }

            fclose($fp);

            $this->orig_head = rcmail_bounce_stream_filter::$headers;
            $this->orig_body = $path;
        }
    }
}

/**
 * Stream filter to remove message headers from the streamed
 * message source (and store them in a variable)
 *
 * @package Webmail
 */
class rcmail_bounce_stream_filter extends php_user_filter
{
    public static $headers;

    protected $in_body = false;

    public function onCreate(): bool
    {
        self::$headers = '';

        return true;
    }

    #[ReturnTypeWillChange]
    public function filter($in, $out, &$consumed, $closing)
    {
        while ($bucket = stream_bucket_make_writeable($in)) {
            if (!$this->in_body) {
                self::$headers .= $bucket->data;
                if (($pos = strpos(self::$headers, "\r\n\r\n")) === false) {
                    continue;
                }

                $bucket->data    = substr(self::$headers, $pos + 4);
                $bucket->datalen = strlen($bucket->data);

                self::$headers = substr(self::$headers, 0, $pos);
                $this->in_body = true;
            }

            $consumed += $bucket->datalen;
            stream_bucket_append($out, $bucket);
        }

        return PSFS_PASS_ON;
    }
}
include/rcmail.php000064400000206253151727150440010165 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Application class providing core functions and holding              |
 |   instances of all 'global' objects like db- and imap-connections     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Application class of Roundcube Webmail
 * implemented as singleton
 *
 * @package Webmail
 */
class rcmail extends rcube
{
    /**
     * Main tasks.
     *
     * @var array
     */
    public static $main_tasks = ['mail','settings','addressbook','login','logout','utils','oauth','dummy'];

    /**
     * Current task.
     *
     * @var string
     */
    public $task;

    /**
     * Current action.
     *
     * @var string
     */
    public $action    = '';

    public $comm_path = './';
    public $filename  = '';
    public $default_skin;
    public $login_error;
    public $oauth;

    /** @var ?string Temporary user email (set on user creation only) */
    public $user_email;

    /** @var ?string Temporary user password (set on user creation only) */
    public $password;

    private $address_books = [];
    private $action_map    = [];
    private $action_args   = [];

    const ERROR_STORAGE          = -2;
    const ERROR_INVALID_REQUEST  = 1;
    const ERROR_INVALID_HOST     = 2;
    const ERROR_COOKIES_DISABLED = 3;
    const ERROR_RATE_LIMIT       = 4;


    /**
     * This implements the 'singleton' design pattern
     *
     * @param int    $mode Ignored rcube::get_instance() argument
     * @param string $env  Environment name to run (e.g. live, dev, test)
     *
     * @return rcmail The one and only instance
     */
    static function get_instance($mode = 0, $env = '')
    {
        if (!self::$instance || !is_a(self::$instance, 'rcmail')) {
            // In cli-server mode env=test
            if ($env === null && php_sapi_name() == 'cli-server') {
                $env = 'test';
            }

            self::$instance = new rcmail($env);
            // init AFTER object was linked with self::$instance
            self::$instance->startup();
        }

        return self::$instance;
    }

    /**
     * Initial startup function
     * to register session, create database and imap connections
     */
    protected function startup()
    {
        $this->init(self::INIT_WITH_DB | self::INIT_WITH_PLUGINS);

        // set filename if not index.php
        if (($basename = basename($_SERVER['SCRIPT_FILENAME'])) && $basename != 'index.php') {
            $this->filename = $basename;
        }

        // load all configured plugins
        $plugins          = (array) $this->config->get('plugins', []);
        $required_plugins = ['filesystem_attachments', 'jqueryui'];
        $this->plugins->load_plugins($plugins, $required_plugins);

        // start session
        $this->session_init();

        // Remember default skin, before it's replaced by user prefs
        $this->default_skin = $this->config->get('skin');

        // create user object
        $this->set_user(new rcube_user($_SESSION['user_id'] ?? null));

        // set task and action properties
        $this->set_task(rcube_utils::get_input_string('_task', rcube_utils::INPUT_GPC));
        $this->action = asciiwords(rcube_utils::get_input_string('_action', rcube_utils::INPUT_GPC));

        // reset some session parameters when changing task
        if ($this->task != 'utils') {
            // we reset list page when switching to another task
            // but only to the main task interface - empty action (#1489076, #1490116)
            // this will prevent from unintentional page reset on cross-task requests
            if ($this->session && empty($this->action)
                && (empty($_SESSION['task']) || $_SESSION['task'] != $this->task)
            ) {
                $this->session->remove('page');

                // set current task to session
                $_SESSION['task'] = $this->task;
            }
        }

        // init output class
        if (php_sapi_name() == 'cli') {
            $this->output = new rcmail_output_cli();
        }
        else if (!empty($_REQUEST['_remote'])) {
            $this->json_init();
        }
        else if (!empty($_SERVER['REMOTE_ADDR'])) {
            $this->load_gui(!empty($_REQUEST['_framed']));
        }

        // load oauth manager
        $this->oauth = rcmail_oauth::get_instance();

        // run init method on all the plugins
        $this->plugins->init($this, $this->task);
    }

    /**
     * Setter for application task
     *
     * @param string $task Task to set
     */
    public function set_task($task)
    {
        if (php_sapi_name() == 'cli') {
            $task = 'cli';
        }
        else if (!$this->user || !$this->user->ID) {
            $task = 'login';
        }
        else {
            $task = asciiwords($task, true) ?: 'mail';
        }

        // Re-initialize plugins if task is changing
        if (!empty($this->task) && $this->task != $task) {
            $this->plugins->init($this, $task);
        }

        $this->task      = $task;
        $this->comm_path = $this->url(['task' => $this->task]);

        if (!empty($_REQUEST['_framed'])) {
            $this->comm_path .= '&_framed=1';
        }

        if ($this->output) {
            $this->output->set_env('task', $this->task);
            $this->output->set_env('comm_path', $this->comm_path);
        }
    }

    /**
     * Setter for system user object
     *
     * @param rcube_user $user Current user instance
     */
    public function set_user($user)
    {
        parent::set_user($user);

        $session_lang = $_SESSION['language'] ?? null;
        $lang = $this->language_prop($this->config->get('language', $session_lang));
        $_SESSION['language'] = $this->user->language = $lang;

        // set localization
        setlocale(LC_ALL, $lang . '.utf8', $lang . '.UTF-8', 'en_US.utf8', 'en_US.UTF-8');

        // Workaround for http://bugs.php.net/bug.php?id=18556
        // Also strtoupper/strtolower and other methods are locale-aware
        // for these locales it is problematic (#1490519)
        if (in_array($lang, ['tr_TR', 'ku', 'az_AZ'])) {
            setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8', 'C');
        }
    }

    /**
     * Handle the request. All request pre-checks are NOT done here.
     */
    public function action_handler()
    {
        // we're ready, user is authenticated and the request is safe
        $plugin = $this->plugins->exec_hook('ready', ['task' => $this->task, 'action' => $this->action]);

        $this->set_task($plugin['task']);
        $this->action = $plugin['action'];

        // handle special actions
        if ($this->action == 'keep-alive') {
            $this->output->reset();
            $this->plugins->exec_hook('keep_alive', []);
            $this->output->send();
        }

        $task       = $this->action == 'save-pref' ? 'utils' : $this->task;
        $task       = $task == 'addressbook' ? 'contacts' : $task;
        $task_class = "rcmail_action_{$task}_index";

        // execute the action index handler
        if (class_exists($task_class)) {
            $task_handler = new $task_class;
            $task_handler->run();
        }

        // allow 5 "redirects" to another action
        $redirects = 0;
        while ($redirects < 5) {
            // execute a plugin action
            if (preg_match('/^plugin\./', $this->action)) {
                $this->plugins->exec_action($this->action);
                break;
            }

            // execute action registered to a plugin task
            if ($this->plugins->is_plugin_task($task)) {
                if (!$this->action) $this->action = 'index';
                $this->plugins->exec_action("{$task}.{$this->action}");
                break;
            }

            $action = !empty($this->action) ? $this->action : 'index';

            // handle deprecated action names
            if (!empty($task_handler) && !empty($task_handler::$aliases[$action])) {
                $action = $task_handler::$aliases[$action];
            }

            $action = str_replace('-', '_', $action);
            $class  = "rcmail_action_{$task}_{$action}";

            // Run the action (except the index)
            if ($class != $task_class && class_exists($class)) {
                $handler = new $class;
                if (!$handler->checks()) {
                    break;
                }
                $handler->run($this->action_args);
                $redirects++;
            }
            else {
                break;
            }
        }

        if ($this->action == 'refresh') {
            $last = intval(rcube_utils::get_input_value('_last', rcube_utils::INPUT_GPC));
            $this->plugins->exec_hook('refresh', ['last' => $last]);
        }

        // parse main template (default)
        $this->output->send($this->task);

        // if we arrive here, something went wrong
        $error = ['code' => 404, 'line' => __LINE__, 'file' => __FILE__, 'message' => "Invalid request"];
        rcmail::raise_error($error, true, true);
    }

    /**
     * Return instance of the internal address book class
     *
     * @param string $id        Address book identifier. It accepts also special values:
     *                          - rcube_addressbook::TYPE_CONTACT (or 'sql') for the SQL addressbook
     *                          - rcube_addressbook::TYPE_DEFAULT for the default addressbook
     * @param bool   $writeable True if the address book needs to be writeable
     * @param bool   $fallback  Fallback to the first existing source, if the configured default wasn't found
     *
     * @return rcube_contacts|null Address book object
     */
    public function get_address_book($id, $writeable = false, $fallback = true)
    {
        $contacts    = null;
        $ldap_config = (array) $this->config->get('ldap_public');
        $default     = false;

        $id = (string) $id;

        // 'sql' is the alias for '0' used by autocomplete
        if ($id == 'sql') {
            $id = (string) rcube_addressbook::TYPE_CONTACT;
        }
        else if ($id === strval(rcube_addressbook::TYPE_DEFAULT) || $id === '-1') { // -1 for BC
            $id = $this->config->get('default_addressbook');
            $default = true;
        }

        // use existing instance
        if (isset($this->address_books[$id]) && ($this->address_books[$id] instanceof rcube_addressbook)) {
            $contacts = $this->address_books[$id];
        }
        else if ($id && !empty($ldap_config[$id])) {
            $domain   = $this->config->mail_domain($_SESSION['storage_host']);
            $contacts = new rcube_ldap($ldap_config[$id], $this->config->get('ldap_debug'), $domain);
        }
        else if ($id === (string) rcube_addressbook::TYPE_CONTACT) {
            $contacts = new rcube_contacts($this->db, $this->get_user_id());
        }
        else if ($id === (string) rcube_addressbook::TYPE_RECIPIENT || $id === (string) rcube_addressbook::TYPE_TRUSTED_SENDER) {
            $contacts = new rcube_addresses($this->db, $this->get_user_id(), (int) $id);
        }
        else {
            $plugin = $this->plugins->exec_hook('addressbook_get', ['id' => $id, 'writeable' => $writeable]);

            // plugin returned instance of a rcube_addressbook
            if (!empty($plugin['instance']) && $plugin['instance'] instanceof rcube_addressbook) {
                $contacts = $plugin['instance'];
            }
        }

        // when user requested default writeable addressbook
        // we need to check if default is writeable, if not we
        // will return first writeable book (if any exist)
        if ($contacts && $default && $contacts->readonly && $writeable) {
            $contacts = null;
        }

        // Get first addressbook from the list if configured default doesn't exist
        // This can happen when user deleted the addressbook (e.g. Kolab folder)
        if ($fallback && !$contacts && (!$id || $default)) {
            $source = $this->get_address_sources($writeable, !$default);
            $source = reset($source);

            if (!empty($source)) {
                // Note: No fallback here to prevent from an infinite loop
                $contacts = $this->get_address_book($source['id'], false, false);
                if ($contacts) {
                    $id = $source['id'];
                }
            }
        }

        if (!$contacts) {
            // there's no default, just return
            if ($default) {
                return null;
            }

            self::raise_error([
                    'code'    => 700,
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                    'message' => "Addressbook source ($id) not found!"
                ],
                true, true);
        }

        // add to the 'books' array for shutdown function
        $this->address_books[$id] = $contacts;

        if ($writeable && $contacts->readonly) {
            return null;
        }

        // set configured sort order
        if ($sort_col = $this->config->get('addressbook_sort_col')) {
            $contacts->set_sort_order($sort_col);
        }

        return $contacts;
    }

    /**
     * Return identifier of the address book object
     *
     * @param rcube_addressbook $object Addressbook source object
     *
     * @return string|null Source identifier
     */
    public function get_address_book_id($object)
    {
        foreach ($this->address_books as $index => $book) {
            if ($book === $object) {
                return $index;
            }
        }
    }

    /**
     * Return address books list
     *
     * @param bool $writeable   True if the address book needs to be writeable
     * @param bool $skip_hidden True if the address book needs to be not hidden
     *
     * @return array Address books array
     */
    public function get_address_sources($writeable = false, $skip_hidden = false)
    {
        $abook_type   = strtolower((string) $this->config->get('address_book_type', 'sql'));
        $ldap_config  = (array) $this->config->get('ldap_public');
        $list         = [];

        // SQL-based (built-in) address book
        if ($abook_type === 'sql') {
            $list[rcube_addressbook::TYPE_CONTACT] = [
                'id'       => (string) rcube_addressbook::TYPE_CONTACT,
                'name'     => $this->gettext('personaladrbook'),
                'groups'   => true,
                'readonly' => false,
                'undelete' => $this->config->get('undo_timeout') > 0,
            ];
        }

        // LDAP address book(s)
        if (!empty($ldap_config)) {
            foreach ($ldap_config as $id => $prop) {
                // handle misconfiguration
                if (empty($prop) || !is_array($prop)) {
                    continue;
                }

                $list[$id] = [
                    'id'       => $id,
                    'name'     => html::quote($prop['name']),
                    'groups'   => !empty($prop['groups']) || !empty($prop['group_filters']),
                    'readonly' => empty($prop['writable']),
                    'hidden'   => !empty($prop['hidden']),
                ];
            }
        }

        $collected_recipients = $this->config->get('collected_recipients');
        $collected_senders    = $this->config->get('collected_senders');

        if ($collected_recipients === (string) rcube_addressbook::TYPE_RECIPIENT) {
            $list[rcube_addressbook::TYPE_RECIPIENT] = [
                'id'       => (string) rcube_addressbook::TYPE_RECIPIENT,
                'name'     => $this->gettext('collectedrecipients'),
                'groups'   => false,
                'readonly' => true,
                'undelete' => false,
                'deletable' => true,
            ];
        }

        if ($collected_senders === (string) rcube_addressbook::TYPE_TRUSTED_SENDER) {
            $list[rcube_addressbook::TYPE_TRUSTED_SENDER] = [
                'id'       => (string) rcube_addressbook::TYPE_TRUSTED_SENDER,
                'name'     => $this->gettext('trustedsenders'),
                'groups'   => false,
                'readonly' => true,
                'undelete' => false,
                'deletable' => true,
            ];
        }

        // Plugins can also add address books, or re-order the list
        $plugin = $this->plugins->exec_hook('addressbooks_list', ['sources' => $list]);
        $list   = $plugin['sources'];

        foreach ($list as $idx => $item) {
            // remove from list if not writeable as requested
            if ($writeable && $item['readonly']) {
                unset($list[$idx]);
            }
            // remove from list if hidden as requested
            else if ($skip_hidden && !empty($item['hidden'])) {
                unset($list[$idx]);
            }
        }

        return $list;
    }

    /**
     * Getter for compose responses.
     *
     * @param bool $user_only True to exclude additional static responses
     *
     * @return array List of the current user's stored responses
     */
    public function get_compose_responses($user_only = false)
    {
        $responses = $this->user->list_responses();

        if (!$user_only) {
            $additional = [];
            foreach ($this->config->get('compose_responses_static', []) as $response) {
                $additional[$response['name']] = [
                    'id'      => 'static-' . substr(md5($response['name']), 0, 16),
                    'name'    => $response['name'],
                    'static'  => true,
                ];
            }

            if (!empty($additional)) {
                ksort($additional, SORT_LOCALE_STRING);
                $responses = array_merge(array_values($additional), $responses);
            }
        }

        $hook = $this->plugins->exec_hook('get_compose_responses', [
                'list'      => $responses,
                'user_only' => $user_only,
        ]);

        return $hook['list'];
    }

    /**
     * Getter for compose response data.
     *
     * @param int|string $id Response ID
     *
     * @return array|null Response data, Null if not found
     */
    public function get_compose_response($id)
    {
        $record = null;

        // Static response
        if (strpos((string) $id, 'static-') === 0) {
            foreach ($this->config->get('compose_responses_static', []) as $response) {
                $rid = 'static-' . substr(md5($response['name']), 0, 16);
                if ($id === $rid) {
                    $record = [
                        'id'      => $rid,
                        'name'    => $response['name'],
                        'data'    => !empty($response['html']) ? $response['html'] : $response['text'],
                        'is_html' => !empty($response['html']),
                        'static'  => true,
                    ];
                    break;
                }
            }
        }

        // User owned response
        if (empty($record) && is_numeric($id)) {
            $record = $this->user->get_response($id);
        }

        // Plugin-provided response or other modifications
        $hook = $this->plugins->exec_hook('get_compose_response', [
                'id'     => $id,
                'record' => $record,
        ]);

        return $hook['record'];
    }

    /**
     * Init output object for GUI and add common scripts.
     * This will instantiate a rcmail_output_html object and set
     * environment vars according to the current session and configuration
     *
     * @param bool $framed True if this request is loaded in a (i)frame
     *
     * @return rcube_output Reference to HTML output object
     */
    public function load_gui($framed = false)
    {
        // init output page
        if (!($this->output instanceof rcmail_output_html)) {
            $this->output = new rcmail_output_html($this->task, $framed);
        }

        // set refresh interval
        $this->output->set_env('refresh_interval', $this->config->get('refresh_interval', 0));
        $this->output->set_env('session_lifetime', $this->config->get('session_lifetime', 0) * 60);

        if ($framed) {
            $this->comm_path .= '&_framed=1';
            $this->output->set_env('framed', true);
        }

        $this->output->set_env('task', $this->task);
        $this->output->set_env('action', $this->action);
        $this->output->set_env('comm_path', $this->comm_path);
        $this->output->set_charset(RCUBE_CHARSET);

        if ($this->user && $this->user->ID) {
            $this->output->set_env('user_id', $this->user->get_hash());
        }

        // set compose mode for all tasks (message compose step can be triggered from everywhere)
        $this->output->set_env('compose_extwin', $this->config->get('compose_extwin',false));

        // add some basic labels to client
        $this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout',
            'refreshing', 'windowopenerror', 'uploadingmany', 'uploading', 'close', 'save', 'cancel',
            'alerttitle', 'confirmationtitle', 'delete', 'continue', 'ok');

        return $this->output;
    }

    /**
     * Create an output object for JSON responses
     *
     * @return rcube_output Reference to JSON output object
     */
    public function json_init()
    {
        if (!($this->output instanceof rcmail_output_json)) {
            $this->output = new rcmail_output_json();
        }

        return $this->output;
    }

    /**
     * Create session object and start the session.
     */
    public function session_init()
    {
        parent::session_init();

        // set initial session vars
        if (empty($_SESSION['user_id'])) {
            $_SESSION['temp'] = true;
        }
    }

    /**
     * Perform login to the mail server and to the webmail service.
     * This will also create a new user entry if auto_create_user is configured.
     *
     * @param string $username    Mail storage (IMAP) user name
     * @param string $password    Mail storage (IMAP) password
     * @param string $host        Mail storage (IMAP) host
     * @param bool   $cookiecheck Enables cookie check
     *
     * @return bool True on success, False on failure
     */
    function login($username, $password, $host = null, $cookiecheck = false)
    {
        $this->login_error = null;

        if (empty($username)) {
            return false;
        }

        if ($cookiecheck && empty($_COOKIE)) {
            $this->login_error = self::ERROR_COOKIES_DISABLED;
            return false;
        }

        $imap_host       = $this->config->get('imap_host', 'localhost:143');
        $username_domain = $this->config->get('username_domain');
        $login_lc        = $this->config->get('login_lc', 2);

        // check username input validity
        if (!$this->login_input_checks($username, $password)) {
            $this->login_error = self::ERROR_INVALID_REQUEST;
            return false;
        }

        // host is validated in rcmail::autoselect_host(), so here
        // we'll only handle unset host (if possible)
        if (!$host && !empty($imap_host)) {
            if (is_array($imap_host)) {
                $key  = key($imap_host);
                $host = is_numeric($key) ? $imap_host[$key] : $key;
            }
            else {
                $host = $imap_host;
            }
        }

        $host = rcube_utils::parse_host($host);

        if (!$host) {
            $this->login_error = self::ERROR_INVALID_HOST;
            return false;
        }

        // parse $host URL
        list($host, $scheme, $port) = rcube_utils::parse_host_uri($host, 143, 993);

        $ssl = in_array($scheme, ['ssl', 'imaps', 'tls']) ? $scheme : false;

        // Check if we need to add/force domain to username
        if (!empty($username_domain)) {
            $domain = '';
            if (is_array($username_domain)) {
                if (!empty($username_domain[$host])) {
                    $domain = $username_domain[$host];
                }
            }
            else {
                $domain = $username_domain;
            }

            if ($domain = rcube_utils::parse_host((string) $domain, $host)) {
                $pos = strpos($username, '@');

                // force configured domains
                if ($pos !== false && $this->config->get('username_domain_forced')) {
                    $username = substr($username, 0, $pos) . '@' . $domain;
                }
                // just add domain if not specified
                else if ($pos === false) {
                    $username .= '@' . $domain;
                }
            }
        }

        // Convert username to lowercase. If storage backend
        // is case-insensitive we need to store always the same username (#1487113)
        if ($login_lc) {
            if ($login_lc == 2 || $login_lc === true) {
                $username = mb_strtolower($username);
            }
            else if (strpos($username, '@')) {
                // lowercase domain name
                list($local, $domain) = rcube_utils::explode('@', $username);
                $username = $local . '@' . mb_strtolower($domain);
            }
        }

        // try to resolve email address from virtuser table
        if (strpos($username, '@') && ($virtuser = rcube_user::email2user($username))) {
            $username = $virtuser;
        }

        // Here we need IDNA ASCII
        // Only rcube_contacts class is using domain names in Unicode
        $host = rcube_utils::idn_to_ascii($host);
        if (strpos($username, '@')) {
            $username = rcube_utils::idn_to_ascii($username);
        }

        // user already registered -> overwrite username
        if ($user = rcube_user::query($username, $host)) {
            $username = $user->data['username'];

            // Brute-force prevention
            if ($user->is_locked()) {
                $this->login_error = self::ERROR_RATE_LIMIT;
                return false;
            }
        }

        $storage = $this->get_storage();

        // try to log in
        if (!$storage->connect($host, $username, $password, $port, $ssl)) {
            if ($user) {
                $user->failed_login();
            }

            // Wait a second to slow down brute-force attacks (#1490549)
            sleep(1);
            return false;
        }

        // user already registered -> update user's record
        if (is_object($user)) {
            // update last login timestamp
            $user->touch();
        }
        // create new system user
        else if ($this->config->get('auto_create_user')) {
            // Temporarily set user email and password, so plugins can use it
            // this way until we set it in session later. This is required e.g.
            // by the user-specific LDAP operations from new_user_identity plugin.
            $domain = $this->config->mail_domain($host);
            $this->user_email = strpos($username, '@') ? $username : sprintf('%s@%s', $username, $domain);
            $this->password   = $password;

            $user = rcube_user::create($username, $host);

            $this->user_email = null;
            $this->password   = null;

            if (!$user) {
                self::raise_error([
                        'code'    => 620,
                        'file'    => __FILE__,
                        'line'    => __LINE__,
                        'message' => "Failed to create a user record. Maybe aborted by a plugin?"
                    ],
                    true, false
                );
            }
        }
        else {
            self::raise_error([
                    'code'    => 621,
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                    'message' => "Access denied for new user $username. 'auto_create_user' is disabled"
                ],
                true, false
            );
        }

        // login succeeded
        if (is_object($user) && $user->ID) {
            // Configure environment
            $this->set_user($user);
            $this->set_storage_prop();

            // set session vars
            $_SESSION['user_id']      = $user->ID;
            $_SESSION['username']     = $user->data['username'];
            $_SESSION['storage_host'] = $host;
            $_SESSION['storage_port'] = $port;
            $_SESSION['storage_ssl']  = $ssl;
            $_SESSION['password']     = $this->encrypt($password);
            $_SESSION['login_time']   = time();

            $timezone = rcube_utils::get_input_string('_timezone', rcube_utils::INPUT_GPC);
            if ($timezone && $timezone != '_default_') {
                $_SESSION['timezone'] = $timezone;
            }

            // fix some old settings according to namespace prefix
            $this->fix_namespace_settings($user);

            // set/create special folders
            $this->set_special_folders();

            // clear all mailboxes related cache(s)
            $storage->clear_cache('mailboxes', true);

            return true;
        }

        return false;
    }

    /**
     * Returns error code of last login operation
     *
     * @return int|null Error code
     */
    public function login_error()
    {
        if ($this->login_error) {
            return $this->login_error;
        }

        if ($this->storage && $this->storage->get_error_code() < -1) {
            return self::ERROR_STORAGE;
        }
    }

    /**
     * Validate username input
     *
     * @param string $username User name
     * @param string $password User password
     *
     * @return bool True if valid, False otherwise
     */
    private function login_input_checks($username, $password)
    {
        $username_filter = $this->config->get('login_username_filter');
        $username_maxlen = $this->config->get('login_username_maxlen', 1024);
        $password_maxlen = $this->config->get('login_password_maxlen', 1024);

        if ($username_maxlen && strlen($username) > $username_maxlen) {
            return false;
        }

        if ($password_maxlen && strlen($password) > $password_maxlen) {
            return false;
        }

        if ($username_filter) {
            $is_email = strtolower($username_filter) == 'email';

            if ($is_email && !rcube_utils::check_email($username, false)) {
                return false;
            }

            if (!$is_email && !preg_match($username_filter, $username)) {
                return false;
            }
        }

        return true;
    }

    /**
     * Detects session errors
     *
     * @return string|null Error label
     */
    public function session_error()
    {
        // log session failures
        $task = rcube_utils::get_input_string('_task', rcube_utils::INPUT_GPC);

        if ($task && !in_array($task, ['login', 'logout']) && !empty($_COOKIE[ini_get('session.name')])) {
            $sess_id = $_COOKIE[ini_get('session.name')];
            $log     = "Aborted session $sess_id; no valid session data found";
            $error   = 'sessionerror';

            // In rare cases web browser might end up with multiple cookies of the same name
            // but different params, e.g. domain (webmail.domain.tld and .webmail.domain.tld).
            // In such case browser will send both cookies in the request header
            // problem is that PHP session handler can use only one and if that one session
            // does not exist we'll end up here
            $cookie          = rcube_utils::request_header('Cookie');
            $cookie_sessid   = $this->config->get('session_name') ?: 'roundcube_sessid';
            $cookie_sessauth = $this->config->get('session_auth_name') ?: 'roundcube_sessauth';

            if (substr_count($cookie, $cookie_sessid.'=') > 1 || substr_count($cookie, $cookie_sessauth.'=') > 1) {
                $log .= ". Cookies mismatch";
                $error = 'cookiesmismatch';
            }

            $this->session->log($log);

            return $error;
        }
    }

    /**
     * Auto-select IMAP host based on the posted login information
     *
     * @return string Selected IMAP host
     */
    public function autoselect_host()
    {
        $default_host = $this->config->get('imap_host');
        $host         = null;

        if (is_array($default_host)) {
            $post_host = rcube_utils::get_input_string('_host', rcube_utils::INPUT_POST);
            $post_user = rcube_utils::get_input_string('_user', rcube_utils::INPUT_POST);

            list(, $domain) = rcube_utils::explode('@', $post_user);

            // direct match in default_host array
            if (!empty($default_host[$post_host]) || in_array($post_host, array_values($default_host))) {
                $host = $post_host;
            }
            // try to select host by mail domain
            else if (!empty($domain)) {
                foreach ($default_host as $storage_host => $mail_domains) {
                    if (is_array($mail_domains) && in_array_nocase($domain, $mail_domains)) {
                        $host = $storage_host;
                        break;
                    }
                    else if (stripos($storage_host, $domain) !== false || stripos(strval($mail_domains), $domain) !== false) {
                        $host = is_numeric($storage_host) ? $mail_domains : $storage_host;
                        break;
                    }
                }
            }

            // take the first entry if $host is still not set
            if (empty($host)) {
                $key  = key($default_host);
                $host = is_numeric($key) ? $default_host[$key] : $key;
            }
        }
        else if (empty($default_host)) {
            $host = rcube_utils::get_input_string('_host', rcube_utils::INPUT_POST);
        }
        else {
            $host = rcube_utils::parse_host($default_host);
        }

        return $host;
    }

    /**
     * Destroy session data and remove cookie
     */
    public function kill_session()
    {
        $this->plugins->exec_hook('session_destroy');

        $this->session->kill();
        $_SESSION = ['language' => $this->user->language, 'temp' => true];
        $this->user->reset();

        if ($this->config->get('skin') != $this->default_skin && method_exists($this->output, 'set_skin')) {
            $this->output->set_skin($this->default_skin);
        }
    }

    /**
     * Do server side actions on logout
     */
    public function logout_actions()
    {
        $storage        = $this->get_storage();
        $logout_expunge = $this->config->get('logout_expunge');
        $logout_purge   = $this->config->get('logout_purge');
        $trash_mbox     = $this->config->get('trash_mbox');

        if ($logout_purge && !empty($trash_mbox)) {
            $getMessages = function ($folder) use ($logout_purge, $storage) {
                if (is_numeric($logout_purge)) {
                    $now      = new DateTime('now');
                    $interval = new DateInterval('P' . intval($logout_purge) . 'D');

                    return $storage->search_once($folder, 'BEFORE ' . $now->sub($interval)->format('j-M-Y'));
                }

                return '*';
            };

            $storage->delete_message($getMessages($trash_mbox), $trash_mbox);

            // Trash subfolders
            $delimiter  = $storage->get_hierarchy_delimiter();
            $subfolders = array_reverse($storage->list_folders($trash_mbox . $delimiter, '*'));
            $last       = '';

            foreach ($subfolders as $folder) {
                $messages = $getMessages($folder);

                // Delete the folder if in all-messages mode, or all existing messages are to-be-removed,
                // but not if there's a subfolder
                if (
                    ($messages === '*' || $messages->count() == $storage->count($folder, 'ALL', false, false))
                    && strpos($last, $folder . $delimiter) !== 0
                ) {
                    $storage->delete_folder($folder);
                }
                else {
                    $storage->delete_message($messages, $folder);
                    $last = $folder;
                }
            }
        }

        if ($logout_expunge) {
            $storage->expunge_folder('INBOX');
        }

        // Try to save unsaved user preferences
        if (!empty($_SESSION['preferences'])) {
            $this->user->save_prefs(unserialize($_SESSION['preferences']));
        }
    }

    /**
     * Build a valid URL to this instance of Roundcube
     *
     * @param mixed $p        Either a string with the action or
     *                        url parameters as key-value pairs
     * @param bool  $absolute Build a URL absolute to document root
     * @param bool  $full     Create fully qualified URL including http(s):// and hostname
     * @param bool  $secure   Return absolute URL in secure location
     *
     * @return string Valid application URL
     */
    public function url($p, $absolute = false, $full = false, $secure = false)
    {
        if (!is_array($p)) {
            if (preg_match('#^https?://#', $p)) {
                return $p;
            }

            $p = ['_action' => $p];
        }

        $task = $this->task;

        if (!empty($p['_task'])) {
            $task = $p['_task'];
        }
        else if (!empty($p['task'])) {
            $task = $p['task'];
        }

        unset($p['task'], $p['_task']);

        $pre  = ['_task' => $task];
        $url  = $this->filename;
        $delm = '?';

        foreach (array_merge($pre, $p) as $key => $val) {
            if ($val !== '' && $val !== null) {
                $par  = $key[0] == '_' ? $key : ('_' . $key);
                $url .= $delm . urlencode($par) . '=' . urlencode($val);
                $delm = '&';
            }
        }

        $base_path = $this->get_request_path();

        if ($secure && ($token = $this->get_secure_url_token(true))) {
            // add token to the url
            $url = $token . '/' . $url;

            // remove old token from the path
            $base_path = rtrim($base_path, '/');
            $base_path = preg_replace('/\/[a-zA-Z0-9]{' . strlen($token) . '}$/', '', $base_path);

            // this need to be full url to make redirects work
            $absolute = true;
        }
        else if ($secure && ($token = $this->get_request_token())) {
            $url .= $delm . '_token=' . urlencode($token);
        }

        if ($absolute || $full) {
            // add base path to this Roundcube installation
            $prefix = $base_path ?: '/';

            // prepend protocol://hostname:port
            if ($full) {
                $prefix = rcube_utils::resolve_url($prefix);
            }

            $prefix = rtrim($prefix, '/') . '/';
        }
        else {
            $prefix = $base_path ?: './';
        }

        return $prefix . $url;
    }

    /**
     * Get the the request path
     */
    protected function get_request_path()
    {
        $path = $this->config->get('request_path');

        if ($path && isset($_SERVER[$path])) {
            // HTTP headers need to come from a trusted proxy host
            if (strpos($path, 'HTTP_') === 0 && !rcube_utils::check_proxy_whitelist_ip()) {
                return '/';
            }

            $path = $_SERVER[$path];
        }
        else if (empty($path)) {
            foreach (['REQUEST_URI', 'REDIRECT_SCRIPT_URL', 'SCRIPT_NAME'] as $name) {
                if (!empty($_SERVER[$name])) {
                    $path = $_SERVER[$name];
                    break;
                }
            }
        }
        else {
            return rtrim($path, '/') . '/';
        }

        $path = preg_replace('/index\.php.*$/', '', (string) $path);
        $path = preg_replace('/[?&].*$/', '', $path);
        $path = preg_replace('![^/]+$!', '', $path);

        return rtrim($path, '/') . '/';
    }

    /**
     * Function to be executed in script shutdown
     */
    public function shutdown()
    {
        parent::shutdown();

        foreach ($this->address_books as $book) {
            if (is_a($book, 'rcube_addressbook')) {
                $book->close();
            }
        }

        $this->address_books = [];

        // In CLI stop here, prevent from errors when the console.log might exist,
        // but be not accessible
        if (php_sapi_name() == 'cli') {
            return;
        }

        // write performance stats to logs/console
        if ($this->config->get('devel_mode') || $this->config->get('performance_stats')) {
            // we have to disable per_user_logging to make sure stats end up in the main console log
            $this->config->set('per_user_logging', false);

            // make sure logged numbers use unified format
            setlocale(LC_NUMERIC, 'en_US.utf8', 'en_US.UTF-8', 'en_US', 'C');

            if (function_exists('memory_get_usage')) {
                $mem = round(memory_get_usage() / 1024 /1024, 1);

                if (function_exists('memory_get_peak_usage')) {
                    $mem .= '/'. round(memory_get_peak_usage() / 1024 / 1024, 1);
                }
            }

            $log = $this->task . ($this->action ? '/'.$this->action : '') . (isset($mem) ? " [$mem]" : '');

            if (defined('RCMAIL_START')) {
                self::print_timer(RCMAIL_START, $log);
            }
            else {
                self::console($log);
            }
        }
    }

    /**
     * CSRF attack prevention code. Raises error when check fails.
     *
     * @param int $mode Request mode
     */
    public function request_security_check($mode = rcube_utils::INPUT_POST)
    {
        // check request token
        if (!$this->check_request($mode)) {
            $error = ['code' => 403, 'message' => "Request security check failed"];
            self::raise_error($error, false, true);
        }
    }

    /**
     * Fixes some user preferences according to namespace handling change.
     * Old Roundcube versions were using folder names with removed namespace prefix.
     * Now we need to add the prefix on servers where personal namespace has prefix.
     *
     * @param rcube_user $user User object
     */
    private function fix_namespace_settings($user)
    {
        $prefix     = (string) $this->storage->get_namespace('prefix');
        $prefix_len = strlen($prefix);

        if (!$prefix_len) {
            return;
        }

        if ($this->config->get('namespace_fixed')) {
            return;
        }

        $prefs = [];

        // Build namespace prefix regexp
        $ns     = $this->storage->get_namespace();
        $regexp = [];

        foreach ($ns as $entry) {
            if (!empty($entry)) {
                foreach ($entry as $item) {
                    if (isset($item[0]) && strlen($item[0])) {
                        $regexp[] = preg_quote($item[0], '/');
                    }
                }
            }
        }
        $regexp = '/^(' . implode('|', $regexp) . ')/';

        // Fix preferences
        $opts = ['drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox', 'archive_mbox'];
        foreach ($opts as $opt) {
            if ($value = $this->config->get($opt)) {
                if ($value != 'INBOX' && !preg_match($regexp, $value)) {
                    $prefs[$opt] = $prefix . $value;
                }
            }
        }

        if (($search_mods = $this->config->get('search_mods')) && !empty($search_mods)) {
            $folders = [];
            foreach ($search_mods as $idx => $value) {
                if ($idx != 'INBOX' && $idx != '*' && !preg_match($regexp, $idx)) {
                    $idx = $prefix . $idx;
                }
                $folders[$idx] = $value;
            }

            $prefs['search_mods'] = $folders;
        }

        if (($threading = $this->config->get('message_threading')) && !empty($threading)) {
            $folders = [];
            foreach ($threading as $idx => $value) {
                if ($idx != 'INBOX' && !preg_match($regexp, $idx)) {
                    $idx = $prefix . $idx;
                }
                $folders[$idx] = $value;
            }

            $prefs['message_threading'] = $folders;
        }

        if ($collapsed = $this->config->get('collapsed_folders')) {
            $folders     = explode('&&', $collapsed);
            $count       = count($folders);
            $folders_str = '';

            if ($count) {
                $folders[0]        = substr($folders[0], 1);
                $folders[$count-1] = substr($folders[$count-1], 0, -1);
            }

            foreach ($folders as $value) {
                if ($value != 'INBOX' && !preg_match($regexp, $value)) {
                    $value = $prefix . $value;
                }
                $folders_str .= '&' . $value . '&';
            }

            $prefs['collapsed_folders'] = $folders_str;
        }

        $prefs['namespace_fixed'] = true;

        // save updated preferences and reset imap settings (default folders)
        $user->save_prefs($prefs);
        $this->set_storage_prop();
    }

    /**
     * Overwrite action variable
     *
     * @param string $action New action value
     * @param array  $args   Arguments to be passed to the next action
     */
    public function overwrite_action($action, $args = [])
    {
        $this->action      = $action;
        $this->action_args = array_merge($this->action_args, $args);
        $this->output->set_env('action', $action);
    }

    /**
     * Set environment variables for specified config options
     *
     * @param array $options List of configuration option names
     *
     * @deprecated since 1.5-beta, use rcmail_action::set_env_config()
     */
    public function set_env_config($options)
    {
        rcmail_action::set_env_config($options);
    }

    /**
     * Insert a contact to specified addressbook.
     *
     * @param array             $contact Contact data
     * @param rcube_addressbook $source  The addressbook object
     * @param string            $error   Filled with an error message/label on error
     *
     * @return int|string|bool Contact ID on success, False otherwise
     */
    public function contact_create($contact, $source, &$error = null)
    {
        $contact['email'] = rcube_utils::idn_to_utf8($contact['email']);

        $contact = $this->plugins->exec_hook('contact_displayname', $contact);

        if (empty($contact['name'])) {
            $contact['name'] = rcube_addressbook::compose_display_name($contact);
        }

        // validate the contact
        if (!$source->validate($contact, true)) {
            if ($error = $source->get_error()) {
                $error = $error['message'];
            }

            return false;
        }

        $plugin = $this->plugins->exec_hook('contact_create', [
                'record' => $contact,
                'source' => $this->get_address_book_id($source),
        ]);

        $contact = $plugin['record'];

        if (!empty($plugin['abort'])) {
            if (!empty($plugin['message'])) {
                $error = $plugin['message'];
            }

            return $plugin['result'];
        }

        return $source->insert($contact);
    }

    /**
     * Find an email address in user addressbook(s)
     *
     * @param string $email Email address
     * @param int    $type  Addressbook type (see rcube_addressbook::TYPE_* constants)
     *
     * @return bool True if the address exists in specified addressbook(s), False otherwise
     */
    public function contact_exists($email, $type)
    {
        if (empty($email) || !is_string($email) || !strpos($email, '@')) {
            return false;
        }

        $email = rcube_utils::idn_to_utf8($email);

        // TODO: Support TYPE_READONLY filter
        $sources = [];

        if ($type & rcube_addressbook::TYPE_WRITEABLE) {
            foreach ($this->get_address_sources(true, true) as $book) {
                $sources[] = $book['id'];
            }
        }

        if ($type & rcube_addressbook::TYPE_DEFAULT) {
            if ($default = $this->get_address_book(rcube_addressbook::TYPE_DEFAULT, true)) {
                $book_id = $this->get_address_book_id($default);
                if (!in_array($book_id, $sources)) {
                    $sources[] = $book_id;
                }
            }
        }

        if ($type & rcube_addressbook::TYPE_RECIPIENT) {
            $collected_recipients = $this->config->get('collected_recipients');
            if (strlen($collected_recipients) && !in_array($collected_recipients, $sources)) {
                array_unshift($sources, $collected_recipients);
            }
        }

        if ($type & rcube_addressbook::TYPE_TRUSTED_SENDER) {
            $collected_senders = $this->config->get('collected_senders');
            if (strlen($collected_senders) && !in_array($collected_senders, $sources)) {
                array_unshift($sources, $collected_senders);
            }
        }

        $plugin = $this->plugins->exec_hook('contact_exists', [
                'email'   => $email,
                'type'    => $type,
                'sources' => $sources,
        ]);

        if (!empty($plugin['abort'])) {
            return $plugin['result'];
        }

        foreach ($plugin['sources'] as $source) {
            $contacts = $this->get_address_book($source);

            if (!$contacts) {
                continue;
            }

            $result = $contacts->search('email', $email, rcube_addressbook::SEARCH_STRICT, false);

            if ($result->count) {
                return true;
            }
        }

        return false;
    }

    /**
     * Returns RFC2822 formatted current date in user's timezone
     *
     * @return string Date
     */
    public function user_date()
    {
        // get user's timezone
        try {
            $tz   = new DateTimeZone($this->config->get('timezone'));
            $date = new DateTime('now', $tz);
        }
        catch (Exception $e) {
            $date = new DateTime();
        }

        return $date->format('r');
    }

    /**
     * Write login data (name, ID, IP address) to the 'userlogins' log file.
     */
    public function log_login($user = null, $failed_login = false, $error_code = 0)
    {
        if (!$this->config->get('log_logins')) {
            return;
        }

        // don't log full session id for security reasons
        $session_id = session_id();
        $session_id = $session_id ? substr($session_id, 0, 16) : 'no-session';

        // failed login
        if ($failed_login) {
            // don't fill the log with complete input, which could
            // have been prepared by a hacker
            if (strlen($user) > 256) {
                $user = substr($user, 0, 256) . '...';
            }

            $message = sprintf('Failed login for %s from %s in session %s (error: %d)',
                $user, rcube_utils::remote_ip(), $session_id, $error_code);
        }
        // successful login
        else {
            $user_name = $this->get_user_name();
            $user_id   = $this->get_user_id();

            if (!$user_id) {
                return;
            }

            $message = sprintf('Successful login for %s (ID: %d) from %s in session %s',
                $user_name, $user_id, rcube_utils::remote_ip(), $session_id);
        }

        // log login
        self::write_log('userlogins', $message);
    }

    /**
     * Check if specified asset file exists
     *
     * @param string $path     Asset path
     * @param bool   $minified Fallback to minified version of the file
     *
     * @return string|null Asset path if found (modified if minified file found)
     */
    public function find_asset($path, $minified = true)
    {
        if (empty($path)) {
            return;
        }

        $assets_dir = $this->config->get('assets_dir');
        $root_path  = unslashify($assets_dir ?: INSTALL_PATH) . '/';
        $full_path  = $root_path . trim($path, '/');

        if (file_exists($full_path)) {
            return $path;
        }

        if ($minified && preg_match('/(?<!\.min)\.(js|css)$/', $path)) {
            $path      = preg_replace('/\.(js|css)$/', '.min.\\1', $path);
            $full_path = $root_path . trim($path, '/');

            if (file_exists($full_path)) {
                return $path;
            }
        }
    }

    /**
     * Create a HTML table based on the given data
     *
     * @param array  $attrib     Named table attributes
     * @param mixed  $table_data Table row data. Either a two-dimensional array
     *                           or a valid SQL result set
     * @param array  $show_cols  List of cols to show
     * @param string $id_col     Name of the identifier col
     *
     * @return string HTML table code
     * @deprecated since 1.5-beta, use rcmail_action::table_output()
     */
    public function table_output($attrib, $table_data, $show_cols, $id_col)
    {
        return rcmail_action::table_output($attrib, $table_data, $show_cols, $id_col);
    }

    /**
     * Convert the given date to a human readable form
     * This uses the date formatting properties from config
     *
     * @param mixed  $date    Date representation (string, timestamp or DateTimeInterface)
     * @param string $format  Date format to use
     * @param bool   $convert Enables date conversion according to user timezone
     *
     * @return string Formatted date string
     */
    public function format_date($date, $format = null, $convert = true)
    {
        if ($date instanceof DateTimeInterface) {
            $timestamp = $date->format('U');
        }
        else {
            if (!empty($date)) {
                $timestamp = rcube_utils::strtotime($date);
            }

            if (empty($timestamp)) {
                return '';
            }

            try {
                $date = new DateTime("@".$timestamp);
            }
            catch (Exception $e) {
                return '';
            }
        }

        if ($convert) {
            try {
                // convert to the right timezone
                $stz = date_default_timezone_get();
                $tz = new DateTimeZone($this->config->get('timezone'));
                $date->setTimezone($tz);
                date_default_timezone_set($tz->getName());

                $timestamp = $date->format('U');
            }
            catch (Exception $e) {
            }
        }

        // define date format depending on current time
        if (!$format) {
            $now         = time();
            $now_date    = getdate($now);
            $today_limit = mktime(0, 0, 0, $now_date['mon'], $now_date['mday'], $now_date['year']);
            $week_limit  = mktime(0, 0, 0, $now_date['mon'], $now_date['mday']-6, $now_date['year']);
            $pretty_date = $this->config->get('prettydate');

            if ($pretty_date && $timestamp > $today_limit && $timestamp <= $now) {
                $format = $this->config->get('date_today', $this->config->get('time_format', 'H:i'));
                $today  = true;
            }
            else if ($pretty_date && $timestamp > $week_limit && $timestamp <= $now) {
                $format = $this->config->get('date_short', 'D H:i');
            }
            else {
                $format = $this->config->get('date_long', 'Y-m-d H:i');
            }
        }

        // parse format string manually in order to provide localized weekday and month names
        $out = '';
        for ($i = 0; $i < strlen($format); $i++) {
            if ($format[$i] == "\\") {  // skip escape chars
                continue;
            }

            // write char "as-is"
            if ($format[$i] == ' ' || ($i > 0 && $format[$i-1] == "\\")) {
                $out .= $format[$i];
            }
            // weekday (short)
            else if ($format[$i] == 'D') {
                $out .= $this->gettext(strtolower(date('D', $timestamp)));
            }
            // weekday long
            else if ($format[$i] == 'l') {
                $out .= $this->gettext(strtolower(date('l', $timestamp)));
            }
            // month name (short)
            else if ($format[$i] == 'M') {
                $out .= $this->gettext(strtolower(date('M', $timestamp)));
            }
            // month name (long)
            else if ($format[$i] == 'F') {
                $out .= $this->gettext('long'.strtolower(date('M', $timestamp)));
            }
            else if ($format[$i] == 'x') {
                $formatter = new IntlDateFormatter(setlocale(LC_ALL, '0'), IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);
                $out .= $formatter->format($timestamp);
            }
            else {
                $out .= date($format[$i], $timestamp);
            }
        }

        if (!empty($today)) {
            $label = $this->gettext('today');
            // replace $ character with "Today" label (#1486120)
            if (strpos($out, '$') !== false) {
                $out = preg_replace('/\$/', $label, $out, 1);
            }
            else {
                $out = $label . ' ' . $out;
            }
        }

        if (isset($stz)) {
            date_default_timezone_set($stz);
        }

        return $out;
    }

    /**
     * Return folders list in HTML
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML code for the gui object
     * @deprecated since 1.5-beta, use rcmail_action::folder_list()
     */
    public function folder_list($attrib)
    {
        return rcmail_action::folder_list($attrib);
    }

    /**
     * Return folders list as html_select object
     *
     * @param array $p Named parameters
     *
     * @return html_select HTML drop-down object
     * @deprecated since 1.5-beta, use rcmail_action::folder_selector()
     */
    public function folder_selector($p = [])
    {
        return rcmail_action::folder_selector($p);
    }

    /**
     * Returns class name for the given folder if it is a special folder
     * (including shared/other users namespace roots).
     *
     * @param string $folder_id IMAP Folder name
     *
     * @return string|null CSS class name
     * @deprecated since 1.5-beta, use rcmail_action::folder_classname()
     */
    public function folder_classname($folder_id)
    {
        return rcmail_action::folder_classname($folder_id);
    }

    /**
     * Try to localize the given IMAP folder name.
     * UTF-7 decode it in case no localized text was found
     *
     * @param string $name        Folder name
     * @param bool   $with_path   Enable path localization
     * @param bool   $path_remove Remove the path
     *
     * @return string Localized folder name in UTF-8 encoding
     * @deprecated since 1.5-beta, use rcmail_action::localize_foldername()
     */
    public function localize_foldername($name, $with_path = false, $path_remove = false)
    {
        return rcmail_action::localize_foldername($name, $with_path, $path_remove);
    }

    /**
     * Localize folder path
     *
     * @deprecated since 1.5-beta, use rcmail_action::localize_folderpath()
     */
    public function localize_folderpath($path)
    {
        return rcmail_action::localize_folderpath($path);
    }

    /**
     * Return HTML for quota indicator object
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML code for the quota indicator object
     * @deprecated since 1.5-beta, use rcmail_action::quota_display()
     */
    public static function quota_display($attrib)
    {
        return rcmail_action::quota_display($attrib);
    }

    /**
     * Return (parsed) quota information
     *
     * @param array $attrib Named parameters
     * @param array $folder Current folder
     *
     * @return array Quota information
     * @deprecated since 1.5-beta, use rcmail_action::quota_content()
     */
    public function quota_content($attrib = null, $folder = null)
    {
        return rcmail_action::quota_content($attrib, $folder);
    }

    /**
     * Outputs error message according to server error/response codes
     *
     * @param string $fallback      Fallback message label
     * @param array  $fallback_args Fallback message label arguments
     * @param string $suffix        Message label suffix
     * @param array  $params        Additional parameters (type, prefix)
     *
     * @deprecated since 1.5-beta, use rcmail_action::display_server_error()
     */
    public function display_server_error($fallback = null, $fallback_args = null, $suffix = '', $params = [])
    {
        rcmail_action::display_server_error($fallback, $fallback_args, $suffix, $params);
    }

    /**
     * Displays an error message on storage fatal errors
     *
     * @deprecated since 1.5-beta, use rcmail_action::storage_fatal_error()
     */
    public function storage_fatal_error()
    {
        rcmail_action::storage_fatal_error();
    }

    /**
     * Output HTML editor scripts
     *
     * @param string $mode Editor mode
     *
     * @deprecated since 1.5-beta, use rcmail_action::html_editor()
     */
    public function html_editor($mode = '')
    {
        rcmail_action::html_editor($mode);
    }

    /**
     * File upload progress handler.
     *
     * @deprecated We're using HTML5 upload progress
     */
    public function upload_progress()
    {
        // NOOP
        $this->output->send();
    }

    /**
     * Initializes file uploading interface.
     *
     * @param int $max_size Optional maximum file size in bytes
     *
     * @return string Human-readable file size limit
     * @deprecated since 1.5-beta, use rcmail_action::upload_init()
     */
    public function upload_init($max_size = null)
    {
        return rcmail_action::upload_init($max_size);
    }

    /**
     * Upload form object
     *
     * @param array  $attrib     Object attributes
     * @param string $name       Form object name
     * @param string $action     Form action name
     * @param array  $input_attr File input attributes
     * @param int    $max_size   Maximum upload size
     *
     * @return string HTML output
     * @deprecated since 1.5-beta, use rcmail_action::upload_form()
     */
    public function upload_form($attrib, $name, $action, $input_attr = [], $max_size = null)
    {
        return rcmail_action::upload_form($attrib, $name, $action, $input_attr, $max_size);
    }

    /**
     * Outputs uploaded file content (with image thumbnails support
     *
     * @param array $file Upload file data
     *
     * @deprecated since 1.5-beta, use rcmail_action::display_uploaded_file()
     */
    public function display_uploaded_file($file)
    {
        rcmail_action::display_uploaded_file($file);
    }

    /**
     * Initializes client-side autocompletion.
     *
     * @deprecated since 1.5-beta, use rcmail_action::autocomplete_init()
     */
    public function autocomplete_init()
    {
        rcmail_action::autocomplete_init();
    }

    /**
     * Returns supported font-family specifications
     *
     * @param string $font Font name
     *
     * @return string|array Font-family specification array or string (if $font is used)
     * @deprecated since 1.5-beta, use rcmail_action::autocomplete_init()
     */
    public static function font_defs($font = null)
    {
        return rcmail_action::font_defs($font);
    }

    /**
     * Create a human readable string for a number of bytes
     *
     * @param int    $bytes Number of bytes
     * @param string &$unit Size unit
     *
     * @return string Byte string
     * @deprecated since 1.5-beta, use rcmail_action::show_bytes()
     */
    public function show_bytes($bytes, &$unit = null)
    {
        return rcmail_action::show_bytes($bytes, $unit);
    }

    /**
     * Returns real size (calculated) of the message part
     *
     * @param rcube_message_part $part Message part
     *
     * @return string Part size (and unit)
     * @deprecated since 1.5-beta, use rcmail_action::message_part_size()
     */
    public function message_part_size($part)
    {
        return rcmail_action::message_part_size($part);
    }

    /**
     * Returns message UID(s) and IMAP folder(s) from GET/POST data
     *
     * @param string $uids           UID value to decode
     * @param string $mbox           Default mailbox value (if not encoded in UIDs)
     * @param bool   $is_multifolder Will be set to True if multi-folder request
     * @param int    $mode           Request mode. Default: rcube_utils::INPUT_GPC.
     *
     * @return array  List of message UIDs per folder
     * @deprecated since 1.5-beta, use rcmail_action::get_uids()
     */
    public static function get_uids($uids = null, $mbox = null, &$is_multifolder = false, $mode = null)
    {
        return rcmail_action::get_uids($uids, $mbox, $is_multifolder, $mode);
    }

    /**
     * Get resource file content (with assets_dir support)
     *
     * @param string $name File name
     *
     * @return string File content
     * @deprecated since 1.5-beta, use rcmail_action::get_resource_content()
     */
    public function get_resource_content($name)
    {
        return rcmail_action::get_resource_content($name);
    }

    /**
     * Converts HTML content into plain text
     *
     * @param string $html    HTML content
     * @param array  $options Conversion parameters (width, links, charset)
     *
     * @return string Plain text
     */
    public function html2text($html, $options = [])
    {
        $default_options = [
            'links'   => $this->config->get('html2text_links', rcube_html2text::LINKS_DEFAULT),
            'width'   => $this->config->get('html2text_width') ?: 75,
            'body'    => $html,
            'charset' => RCUBE_CHARSET,
        ];

        $options = array_merge($default_options, (array) $options);

        // Plugins may want to modify HTML in another/additional way
        $options = $this->plugins->exec_hook('html2text', $options);

        // Convert to text
        if (empty($options['abort'])) {
            $converter = new rcube_html2text($options['body'],
                false, $options['links'], $options['width'], $options['charset']);

            $options['body'] = rtrim($converter->get_text());
        }

        return $options['body'];
    }

    /**
     * Connect to the mail storage server with stored session data
     *
     * @return bool True on success, False on error
     */
    public function storage_connect()
    {
        $storage = $this->get_storage();

        if (!empty($_SESSION['storage_host']) && !$storage->is_connected()) {
            $host = $_SESSION['storage_host'];
            $user = $_SESSION['username'];
            $port = $_SESSION['storage_port'];
            $ssl  = $_SESSION['storage_ssl'];
            $pass = $this->decrypt($_SESSION['password']);

            if (!$storage->connect($host, $user, $pass, $port, $ssl)) {
                if (is_object($this->output)) {
                    $this->output->show_message('storageerror', 'error');
                }
            }
            else {
                $this->set_storage_prop();
            }
        }

        return $storage->is_connected();
    }
}
include/rcmail_install.php000064400000075651151727150440011721 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Roundcube Installer                                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to control the installation process of the Roundcube Webmail package
 *
 * @category Install
 * @package  Webmail
 */
class rcmail_install
{
    public $step;
    public $last_error;
    public $is_post           = false;
    public $failures          = 0;
    public $config            = [];
    public $defaults          = [];
    public $comments          = [];
    public $configured        = false;
    public $legacy_config     = false;
    public $email_pattern     = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9])';

    public $bool_config_props = ['ip_check', 'enable_spellcheck', 'auto_create_user', 'smtp_log', 'prefer_html'];
    public $local_config    = ['db_dsnw', 'imap_host', 'support_url', 'des_key', 'plugins'];
    public $obsolete_config = ['db_backend', 'db_max_length', 'double_auth', 'preview_pane', 'debug_level', 'referer_check'];
    public $replaced_config = [
        'skin_path'            => 'skin',
        'locale_string'        => 'language',
        'multiple_identities'  => 'identities_level',
        'addrbook_show_images' => 'show_images',
        'imap_root'            => 'imap_ns_personal',
        'pagesize'             => 'mail_pagesize',
        'top_posting'          => 'reply_mode',
        'keep_alive'           => 'refresh_interval',
        'min_keep_alive'       => 'min_refresh_interval',
        'default_host'         => 'imap_host',
        'smtp_server'          => 'smtp_host',
    ];

    // List of configuration options supported by the Installer
    public $supported_config = [
        'product_name', 'support_url', 'temp_dir', 'des_key', 'ip_check', 'enable_spellcheck',
        'spellcheck_engine', 'identities_level', 'log_driver', 'log_dir', 'syslog_id',
        'syslog_facility', 'db_dsnw', 'db_prefix', 'imap_host', 'username_domain',
        'auto_create_user', 'sent_mbox', 'trash_mbox', 'drafts_mbox', 'junk_mbox',
        'smtp_host', 'smtp_user', 'smtp_pass', 'smtp_log', 'language', 'skin', 'mail_pagesize',
        'addressbook_pagesize', 'prefer_html', 'htmleditor', 'draft_autosave', 'mdn_requests',
        'mime_param_folding', 'plugins',
    ];

    // list of supported database drivers
    public $supported_dbs = [
        'MySQL'               => 'pdo_mysql',
        'PostgreSQL'          => 'pdo_pgsql',
        'SQLite'              => 'pdo_sqlite',
        'SQLite (v2)'         => 'pdo_sqlite2',
        'SQL Server (SQLSRV)' => 'pdo_sqlsrv',
        'SQL Server (DBLIB)'  => 'pdo_dblib',
        'Oracle'              => 'oci8',
    ];

    /** @var array List of config options with default value change per-release */
    public $defaults_changes = [
        '1.4.0' => ['skin', 'smtp_port', 'smtp_user', 'smtp_pass'],
        '1.4.1' => ['jquery_ui_skin_map'],
    ];

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->step    = isset($_REQUEST['_step']) ? intval($_REQUEST['_step']) : 0;
        $this->is_post = isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST';
    }

    /**
     * Singleton getter
     */
    public static function get_instance()
    {
        static $inst;

        if (!$inst) {
            $inst = new rcmail_install();
        }

        return $inst;
    }

    /**
     * Read the local config files and store properties
     */
    public function load_config()
    {
        if ($this->configured) {
            return;
        }

        // defaults
        if ($config = $this->load_config_file(RCUBE_CONFIG_DIR . 'defaults.inc.php')) {
            $this->config   = (array) $config;
            $this->defaults = $this->config;
        }

        $config = null;

        // config
        if ($config = $this->load_config_file(RCUBE_CONFIG_DIR . 'config.inc.php')) {
            $this->config = array_merge($this->config, $config);
        }
        else {
            if ($config = $this->load_config_file(RCUBE_CONFIG_DIR . 'main.inc.php')) {
                $this->config        = array_merge($this->config, $config);
                $this->legacy_config = true;
            }

            if ($config = $this->load_config_file(RCUBE_CONFIG_DIR . 'db.inc.php')) {
                $this->config        = array_merge($this->config, $config);
                $this->legacy_config = true;
            }
        }

        $this->configured = !empty($config);
    }

    /**
     * Read the default config file and store properties
     *
     * @param string $file File name with path
     */
    public function load_config_file($file)
    {
        if (!is_readable($file)) {
            return;
        }

        $config        = [];
        $rcmail_config = []; // deprecated var name

        include $file;

        // read comments from config file
        if (function_exists('token_get_all')) {
            $tokens    = token_get_all(file_get_contents($file));
            $in_config = false;
            $buffer    = '';

            for ($i = 0; $i < count($tokens); $i++) {
                $token = $tokens[$i];
                if ($token[0] == T_VARIABLE && ($token[1] == '$config' || $token[1] == '$rcmail_config')) {
                    $in_config = true;
                    if ($buffer && $tokens[$i+1] == '[' && $tokens[$i+2][0] == T_CONSTANT_ENCAPSED_STRING) {
                        $propname = trim($tokens[$i+2][1], "'\"");
                        $this->comments[$propname] = preg_replace('/\n\n/', "\n", $buffer);
                        $buffer = '';
                        $i += 3;
                    }
                }
                else if ($in_config && $token[0] == T_COMMENT) {
                    $buffer .= strtr($token[1], ['\n' => "\n"]) . "\n";
                }
            }
        }

        return array_merge((array) $rcmail_config, (array) $config);
    }

    /**
     * Getter for a certain config property
     *
     * @param string $name    Property name
     * @param string $default Default value
     *
     * @return mixed The property value
     */
    public function getprop($name, $default = '')
    {
        $value = $this->config[$name] ?? null;

        if ($name == 'des_key' && !$this->configured && !isset($_REQUEST["_$name"])) {
            $value = rcube_utils::random_bytes(24);
        }

        return $value !== null && $value !== '' ? $value : $default;
    }

    /**
     * Create configuration file that contains parameters
     * that differ from default values.
     *
     * @param bool $use_post Use POSTed configuration values (of supported options)
     *
     * @return string The complete config file content
     */
    public function create_config($use_post = true)
    {
        $config = [];

        foreach ($this->config as $prop => $default) {
            $post_value = $_POST["_$prop"] ?? null;
            $value      = $default;

            if ($use_post && in_array($prop, $this->supported_config)
                && ($post_value !== null || in_array($prop, $this->bool_config_props))
            ) {
                $value = $post_value;
            }

            // always disable installer
            if ($prop == 'enable_installer') {
                $value = false;
            }

            // generate new encryption key, never use the default value
            if ($prop == 'des_key' && $value == $this->defaults[$prop]) {
                $value = rcube_utils::random_bytes(24);
            }

            // convert some form data
            if ($prop == 'db_dsnw' && !empty($_POST['_dbtype'])) {
                if ($_POST['_dbtype'] == 'sqlite') {
                    $value = sprintf('%s://%s?mode=0646', $_POST['_dbtype'],
                        $_POST['_dbname'][0] == '/' ? '/' . $_POST['_dbname'] : $_POST['_dbname']);
                }
                else if ($_POST['_dbtype']) {
                    $value = sprintf('%s://%s:%s@%s/%s', $_POST['_dbtype'],
                        rawurlencode($_POST['_dbuser']), rawurlencode($_POST['_dbpass']), $_POST['_dbhost'], $_POST['_dbname']);
                }
            }
            else if ($prop == 'imap_host' && is_array($value)) {
                $value = self::_clean_array($value);
                if (count($value) <= 1) {
                    $value = $value[0];
                }
            }
            else if ($prop == 'mail_pagesize' || $prop == 'addressbook_pagesize') {
                $value = max(2, intval($value));
            }
            else if ($prop == 'smtp_user' && !empty($_POST['_smtp_user_u'])) {
                $value = '%u';
            }
            else if ($prop == 'smtp_pass' && !empty($_POST['_smtp_user_u'])) {
                $value = '%p';
            }
            else if (is_bool($default)) {
                $value = (bool) $value;
            }
            else if (is_numeric($value)) {
                $value = intval($value);
            }
            else if ($prop == 'plugins' && !empty($_POST['submit'])) {
                $value = [];
                foreach (array_keys($_POST) as $key) {
                    if (preg_match('/^_plugins_*/', $key)) {
                        array_push($value, $_POST[$key]);
                    }
                }
            }

            // skip this property
            if ($value == ($this->defaults[$prop] ?? null)
                && (!in_array($prop, $this->local_config)
                    || in_array($prop, array_merge($this->obsolete_config, array_keys($this->replaced_config)))
                    || preg_match('/^db_(table|sequence)_/', $prop)
                )
            ) {
                continue;
            }

            // save change
            $this->config[$prop] = $value;
            $config[$prop]       = $value;
        }

        $out = "<?php\n\n";
        $out .= "/* Local configuration for Roundcube Webmail */\n\n";

        foreach ($config as $prop => $value) {
            // copy option descriptions from existing config or defaults.inc.php
            $out .= $this->comments[$prop] ?? '';
            $out .= "\$config['$prop'] = " . self::_dump_var($value, $prop) . ";\n\n";
        }

        return $out;
    }

    /**
     * save generated config file in RCUBE_CONFIG_DIR
     *
     * @return bool True if the file was saved successfully, false if not
     */
    public function save_configfile($config)
    {
        if (is_writable(RCUBE_CONFIG_DIR)) {
            return file_put_contents(RCUBE_CONFIG_DIR . 'config.inc.php', $config);
        }

        return false;
    }

    /**
     * Check the current configuration for missing properties
     * and deprecated or obsolete settings
     *
     * @param string $version Previous version on upgrade
     *
     * @return array List with problems detected
     */
    public function check_config($version = null)
    {
        $this->load_config();

        if (!$this->configured) {
            return;
        }

        $seen = [];
        $out = ['defaults' => [], 'obsolete' => [], 'replaced' => [], 'dependencies' => [], 'missing' => []];

        // iterate over the current configuration
        foreach (array_keys($this->config) as $prop) {
            if (!empty($this->replaced_config[$prop])) {
                $replacement = $this->replaced_config[$prop];
                $out['replaced'][]  = ['prop' => $prop, 'replacement' => $replacement];
                $seen[$replacement] = true;
            }
            else if (empty($seen[$prop]) && in_array($prop, $this->obsolete_config)) {
                $out['obsolete'][] = ['prop' => $prop];
                $seen[$prop]       = true;
            }
        }

        // the old default mime_magic reference is obsolete
        if (isset($this->config['mime_magic']) && $this->config['mime_magic'] == '/usr/share/misc/magic') {
            $out['obsolete'][] = [
                'prop'    => 'mime_magic',
                'explain' => "Set value to null in order to use system default"
            ];
        }

        // check config dependencies and contradictions
        if (!empty($this->config['enable_spellcheck']) && $this->config['spellcheck_engine'] == 'pspell') {
            if (!extension_loaded('pspell')) {
                $out['dependencies'][] = [
                    'prop'    => 'spellcheck_engine',
                    'explain' => "This requires the <tt>pspell</tt> extension which could not be loaded."
                ];
            }
            else if (!empty($this->config['spellcheck_languages'])) {
                foreach ($this->config['spellcheck_languages'] as $lang => $descr) {
                    if (!@pspell_new($lang)) {
                        $out['dependencies'][] = [
                            'prop'    => 'spellcheck_languages',
                            'explain' => "You are missing pspell support for language $lang ($descr)"
                        ];
                    }
                }
            }
        }

        if (isset($this->config['log_driver']) && $this->config['log_driver'] == 'syslog') {
            if (!function_exists('openlog')) {
                $out['dependencies'][] = [
                    'prop'    => 'log_driver',
                    'explain' => "This requires the <tt>syslog</tt> extension which could not be loaded."
                ];
            }

            if (empty($this->config['syslog_id'])) {
                $out['dependencies'][] = [
                    'prop'    => 'syslog_id',
                    'explain' => "Using <tt>syslog</tt> for logging requires a syslog ID to be configured"
                ];
            }
        }

        // check ldap_public sources having global_search enabled
        if (!empty($this->config['ldap_public'])
            && is_array($this->config['ldap_public'])
            && !is_array($this->config['autocomplete_addressbooks'])
        ) {
            foreach ($this->config['ldap_public'] as $ldap_public) {
                if ($ldap_public['global_search']) {
                    $out['replaced'][] = [
                        'prop'        => 'ldap_public::global_search',
                        'replacement' => 'autocomplete_addressbooks'
                    ];
                    break;
                }
            }
        }

        if ($version) {
            foreach ($this->defaults_changes as $v => $opts) {
                if (version_compare($v, $version, '>')) {
                    $out['defaults'] = array_merge($out['defaults'], $opts);
                }
            }

            $out['defaults'] = array_unique($out['defaults']);
        }

        return $out;
    }

    /**
     * Merge the current configuration with the defaults
     * and copy replaced values to the new options.
     */
    public function merge_config()
    {
        $current      = $this->config;
        $this->config = [];

        foreach ($this->replaced_config as $prop => $replacement) {
            if (isset($current[$prop])) {
                if ($prop == 'skin_path') {
                    $this->config[$replacement] = preg_replace('#skins/(\w+)/?$#', '\\1', $current[$prop]);
                }
                else if ($prop == 'multiple_identities') {
                    $this->config[$replacement] = $current[$prop] ? 2 : 0;
                }
                else {
                    $this->config[$replacement] = $current[$prop];
                }

                unset($current[$prop]);
                unset($current[$replacement]);
            }
        }

        // Merge old *_port options into the new *_host options, where possible
        foreach (['default' => 'imap', 'smtp' => 'smtp'] as $prop => $type) {
            $old_prop = "{$prop}_port";
            $new_prop = "{$type}_host";
            if (!empty($current[$old_prop]) && !empty($this->config[$new_prop])
                && is_string($this->config[$new_prop])
                && !preg_match('/:[0-9]+$/', $this->config[$new_prop])
            ) {
                $this->config[$new_prop] .= ':' . $current[$old_prop];
            }

            unset($current[$old_prop]);
        }

        foreach ($this->obsolete_config as $prop) {
            unset($current[$prop]);
        }

        // add all ldap_public sources having global_search enabled to autocomplete_addressbooks
        if (!empty($current['ldap_public']) && is_array($current['ldap_public'])) {
            foreach ($current['ldap_public'] as $key => $ldap_public) {
                if (!empty($ldap_public['global_search'])) {
                    $this->config['autocomplete_addressbooks'][] = $key;
                    unset($current['ldap_public'][$key]['global_search']);
                }
            }
        }

        $this->config = array_merge($this->config, $current);
    }

    /**
     * Compare the local database schema with the reference schema
     * required for this version of Roundcube
     *
     * @param rcube_db $db Database object
     *
     * @return bool True if the schema is up-to-date, false if not or an error occurred
     */
    public function db_schema_check($db)
    {
        if (!$this->configured) {
            return false;
        }

        // read reference schema from mysql.initial.sql
        $engine    = $db->db_provider;
        $db_schema = $this->db_read_schema(INSTALL_PATH . "SQL/$engine.initial.sql", $schema_version);
        $errors    = [];

        // Just check the version
        if ($schema_version) {
            $version = rcmail_utils::db_version();

            if (empty($version)) {
                $errors[] = "Schema version not found";
            }
            else if ($schema_version != $version) {
                $errors[] = "Schema version: {$version} (required: {$schema_version})";
            }

            return !empty($errors) ? $errors : false;
        }

        // check list of tables
        $existing_tables = $db->list_tables();

        foreach ($db_schema as $table => $cols) {
            $table = $this->config['db_prefix'] . $table;

            if (!in_array($table, $existing_tables)) {
                $errors[] = "Missing table '".$table."'";
            }
            else {  // compare cols
                $db_cols = $db->list_cols($table);
                $diff    = array_diff(array_keys($cols), $db_cols);

                if (!empty($diff)) {
                    $errors[] = "Missing columns in table '$table': " . implode(',', $diff);
                }
            }
        }

        return !empty($errors) ? $errors : false;
    }

    /**
     * Utility function to read database schema from an .sql file
     */
    private function db_read_schema($schemafile, &$version = null)
    {
        $lines      = file($schemafile);
        $schema     = [];
        $keywords   = ['PRIMARY','KEY','INDEX','UNIQUE','CONSTRAINT','REFERENCES','FOREIGN'];
        $table_name = null;

        foreach ($lines as $line) {
            if (preg_match('/^\s*create table ([\S]+)/i', $line, $m)) {
                $table_name = explode('.', $m[1]);
                $table_name = end($table_name);
                $table_name = preg_replace('/[`"\[\]]/', '', $table_name);
            }
            else if (preg_match('/insert into/i', $line) && preg_match('/\'roundcube-version\',\s*\'([0-9]+)\'/', $line, $m)) {
                $version = $m[1];
            }
            else if ($table_name && ($line = trim($line))) {
                if ($line == 'GO' || $line[0] == ')' || $line[strlen($line)-1] == ';') {
                    $table_name = null;
                }
                else {
                    $items = explode(' ', $line);
                    $col   = $items[0];
                    $col   = preg_replace('/[`"\[\]]/', '', $col);

                    if (!in_array(strtoupper($col), $keywords)) {
                        $type = strtolower($items[1]);
                        $type = preg_replace('/[^a-zA-Z0-9()]/', '', $type);

                        $schema[$table_name][$col] = $type;
                    }
                }
            }
        }

        return $schema;
    }

    /**
     * Try to detect some file's mimetypes to test the correct behavior of fileinfo
     */
    public function check_mime_detection()
    {
        $errors = [];
        $files  = [
            'program/resources/tinymce/video.png' => 'image/png',
            'program/resources/blank.tiff'        => 'image/tiff',
            'program/resources/blocked.gif'       => 'image/gif',
        ];

        foreach ($files as $path => $expected) {
            $mimetype = rcube_mime::file_content_type(INSTALL_PATH . $path, basename($path));
            if ($mimetype != $expected) {
                $errors[] = [$path, $mimetype, $expected];
            }
        }

        return $errors;
    }

    /**
     * Check the correct configuration of the 'mime_types' mapping option
     */
    public function check_mime_extensions()
    {
        $errors = [];
        $types  = [
            'application/zip'   => 'zip',
            'text/css'          => 'css',
            'application/pdf'   => 'pdf',
            'image/gif'         => 'gif',
            'image/svg+xml'     => 'svg',
        ];

        foreach ($types as $mimetype => $expected) {
            $ext = rcube_mime::get_mime_extensions($mimetype);
            if (!in_array($expected, (array) $ext)) {
                $errors[] = [$mimetype, $ext, $expected];
            }
        }

        return $errors;
    }

    /**
     * Getter for the last error message
     *
     * @return string Error message or null if none exists
     */
    public function get_error()
    {
        return $this->last_error['message'] ?? null;
    }

    /**
     * Return a list with all imap/smtp hosts configured
     *
     * @return array Clean list with imap/smtp hosts
     */
    public function get_hostlist($prop = 'imap_host')
    {
        $hosts     = (array) $this->getprop($prop);
        $out       = [];
        $imap_host = '';

        if ($prop == 'smtp_host') {
            // Set the imap host name for the %h macro
            $default_hosts = $this->get_hostlist();
            $imap_host = !empty($default_hosts) ? $default_hosts[0] : '';
        }

        foreach ($hosts as $key => $name) {
            if (!empty($name)) {
                if ($prop == 'smtp_host') {
                    // SMTP host array uses `IMAP host => SMTP host` format
                    $host = $name;
                }
                else {
                    $host = is_numeric($key) ? $name : $key;
                }

                $out[] = rcube_utils::parse_host($host, $imap_host);
            }
        }

        return $out;
    }

    /**
     * Create a HTML dropdown to select a previous version of Roundcube
     */
    public function versions_select($attrib = [])
    {
        $select = new html_select($attrib);
        $select->add([
                '0.1-stable', '0.1.1',
                '0.2-alpha', '0.2-beta', '0.2-stable',
                '0.3-stable', '0.3.1',
                '0.4-beta', '0.4.2',
                '0.5-beta', '0.5', '0.5.1', '0.5.2', '0.5.3', '0.5.4',
                '0.6-beta', '0.6',
                '0.7-beta', '0.7', '0.7.1', '0.7.2', '0.7.3', '0.7.4',
                '0.8-beta', '0.8-rc', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6',
                '0.9-beta', '0.9-rc', '0.9-rc2',
                // Note: Do not add newer versions here
        ]);

        return $select;
    }

    /**
     * Return a list with available subfolders of the skin directory
     *
     * @return array List of available skins
     */
    public function list_skins()
    {
        $skins   = [];
        $skindir = INSTALL_PATH . 'skins/';

        foreach (glob($skindir . '*') as $path) {
            if (is_dir($path) && is_readable($path)) {
                $skins[] = substr($path, strlen($skindir));
            }
        }

        return $skins;
    }

    /**
     * Return a list with available subfolders of the plugins directory
     * (with their associated description in composer.json)
     *
     * @return array List of available plugins
     */
    public function list_plugins()
    {
        $plugins    = [];
        $plugin_dir = INSTALL_PATH . 'plugins/';
        $enabled    = isset($this->config['plugins']) ? (array) $this->config['plugins'] : [];

        foreach (glob($plugin_dir . '*') as $path) {
            if (!is_dir($path)) {
                continue;
            }

            if (is_readable($path . '/composer.json')) {
                $file_json   = json_decode(file_get_contents($path . '/composer.json'));
                $plugin_desc = $file_json->description ?: 'N/A';
            }
            else {
                $plugin_desc = 'N/A';
            }

            $name      = substr($path, strlen($plugin_dir));
            $plugins[] = [
                'name'    => $name,
                'desc'    => $plugin_desc,
                'enabled' => in_array($name, $enabled)
            ];
        }

        return $plugins;
    }

    /**
     * Display OK status
     *
     * @param string $name    Test name
     * @param string $message Confirm message
     */
    public function pass($name, $message = '')
    {
        echo rcube::Q($name) . ':&nbsp; <span class="success">OK</span>';
        $this->_showhint($message);
    }

    /**
     * Display an error status and increase failure count
     *
     * @param string $name     Test name
     * @param string $message  Error message
     * @param string $url      URL for details
     * @param bool   $optional Do not count this failure
     */
    public function fail($name, $message = '', $url = '', $optional = false)
    {
        if (!$optional) {
            $this->failures++;
        }

        echo rcube::Q($name) . ':&nbsp; <span class="fail">NOT OK</span>';
        $this->_showhint($message, $url);
    }

    /**
     * Display an error status for optional settings/features
     *
     * @param string $name    Test name
     * @param string $message Error message
     * @param string $url     URL for details
     */
    public function optfail($name, $message = '', $url = '')
    {
        echo rcube::Q($name) . ':&nbsp; <span class="na">NOT OK</span>';
        $this->_showhint($message, $url);
    }

    /**
     * Display warning status
     *
     * @param string $name    Test name
     * @param string $message Warning message
     * @param string $url     URL for details
     */
    public function na($name, $message = '', $url = '')
    {
        echo rcube::Q($name) . ':&nbsp; <span class="na">NOT AVAILABLE</span>';
        $this->_showhint($message, $url);
    }

    private function _showhint($message, $url = '')
    {
        $hint = rcube::Q($message);

        if ($url) {
            $hint .= ($hint ? '; ' : '') . 'See <a href="' . rcube::Q($url) . '" target="_blank">' . rcube::Q($url) . '</a>';
        }

        if ($hint) {
            echo '<span class="indent">(' . $hint . ')</span>';
        }
    }

    private static function _clean_array($arr)
    {
        $out = [];

        foreach (array_unique($arr) as $k => $val) {
            if (!empty($val)) {
                if (is_numeric($k)) {
                    $out[] = $val;
                }
                else {
                    $out[$k] = $val;
                }
            }
        }

        return $out;
    }

    private static function _dump_var($var, $name = null)
    {
        // special values
        switch ($name) {
        case 'syslog_facility':
            $list = [
                32 => 'LOG_AUTH', 80 => 'LOG_AUTHPRIV', 72 => ' LOG_CRON',
                24 => 'LOG_DAEMON', 0 => 'LOG_KERN', 128 => 'LOG_LOCAL0',
                136 => 'LOG_LOCAL1', 144 => 'LOG_LOCAL2', 152 => 'LOG_LOCAL3',
                160 => 'LOG_LOCAL4', 168 => 'LOG_LOCAL5', 176 => 'LOG_LOCAL6',
                184 => 'LOG_LOCAL7', 48 => 'LOG_LPR', 16 => 'LOG_MAIL',
                56 => 'LOG_NEWS', 40 => 'LOG_SYSLOG', 8 => 'LOG_USER', 64 => 'LOG_UUCP'
            ];

            if (!empty($list[$var])) {
                return $list[$var];
            }

            break;
        }

        if (is_array($var)) {
            if (empty($var)) {
                return '[]';
            }
            // check if all keys are numeric
            $isnum = true;
            foreach (array_keys($var) as $key) {
                if (!is_numeric($key)) {
                    $isnum = false;
                    break;
                }
            }

            if ($isnum) {
                return '[' . implode(', ', array_map(['rcmail_install', '_dump_var'], $var)) . ']';
            }
        }

        return var_export($var, true);
    }

    /**
     * Initialize the database with the according schema
     *
     * @param rcube_db $db Database connection
     *
     * @return bool True on success, False on error
     */
    public function init_db($db)
    {
        $engine = $db->db_provider;

        // read schema file from /SQL/*
        $fname = INSTALL_PATH . "SQL/$engine.initial.sql";
        if ($sql = @file_get_contents($fname)) {
            $db->set_option('table_prefix', $this->config['db_prefix']);
            $db->exec_script($sql);
        }
        else {
            $this->fail('DB Schema', "Cannot read the schema file: $fname");
            return false;
        }

        if ($err = $this->get_error()) {
            $this->fail('DB Schema', "Error creating database schema: $err");
            return false;
        }

        return true;
    }

    /**
     * Update database schema
     *
     * @param string $version Version to update from
     *
     * @return boolean True on success, False on error
     */
    public function update_db($version)
    {
        return rcmail_utils::db_update(INSTALL_PATH . 'SQL', 'roundcube', $version, ['quiet' => true]);
    }

    /**
     * Handler for Roundcube errors
     */
    public function raise_error($p)
    {
        $this->last_error = $p;
    }

    /**
     * Check if vendor/autoload.php was created by Roundcube and left untouched
     *
     * @param string $target_dir The target installation dir
     * @return string
     */
    public static function vendor_dir_untouched($target_dir)
    {
        system('grep -q "generated by Roundcube" ' . escapeshellarg($target_dir . '/vendor/autoload.php') . ' 2>/dev/null', $exit_code);
        return $exit_code === 0;
    }
}
include/rcmail_output.php000064400000010523151727150450011577 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | CONTENTS:                                                             |
 |   Abstract class for output generation                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for output generation
 *
 * @package    Webmail
 * @subpackage View
 */
abstract class rcmail_output extends rcube_output
{
    const JS_OBJECT_NAME = 'rcmail';
    const BLANK_GIF      = 'R0lGODlhDwAPAIAAAMDAwAAAACH5BAEAAAAALAAAAAAPAA8AQAINhI+py+0Po5y02otnAQA7';

    public $type      = 'html';
    public $ajax_call = false;
    public $framed    = false;

    protected $pagetitle       = '';
    protected $object_handlers = [];
    protected $devel_mode      = false;


    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();

        $this->devel_mode = (bool) $this->config->get('devel_mode');
    }

    /**
     * Setter for page title
     *
     * @param string $title Page title
     */
    public function set_pagetitle($title)
    {
        $this->pagetitle = $title;
    }

    /**
     * Getter for the current skin path property
     */
    public function get_skin_path()
    {
        return $this->config->get('skin_path');
    }

    /**
     * Delete all stored env variables and commands
     */
    public function reset()
    {
        parent::reset();

        $this->object_handlers = [];
        $this->pagetitle = '';
    }

    /**
     * Call a client method
     *
     * @param string $cmd     Method to call
     * @param mixed  ...$args Method arguments
     */
    abstract function command($cmd, ...$args);

    /**
     * Add a localized label(s) to the client environment
     *
     * @param mixed ...$args Labels (an array of strings, or many string arguments)
     */
    abstract function add_label(...$args);

    /**
     * Register a template object handler
     *
     * @param string $name Object name
     * @param callable $func Function name to call
     *
     * @return void
     */
    public function add_handler($name, $func)
    {
        $this->object_handlers[$name] = $func;
    }

    /**
     * Register a list of template object handlers
     *
     * @param array $handlers Hash array with object=>handler pairs
     *
     * @return void
     */
    public function add_handlers($handlers)
    {
        $this->object_handlers = array_merge($this->object_handlers, $handlers);
    }

    /**
     * A wrapper for header() function, so it can be replaced for automated tests
     *
     * @param string $header  The header string
     * @param bool   $replace Replace previously set header?
     *
     * @return void
     */
    public function header($header, $replace = true)
    {
        header($header, $replace);
    }

    /**
     * A helper to send output to the browser and exit
     *
     * @param string $body    The output body
     * @param array  $headers Headers
     *
     * @return void
     */
    public function sendExit($body = '', $headers = [])
    {
        foreach ($headers as $header) {
            header($header);
        }

        print $body;
        exit;
    }

    /**
     * A helper to send HTTP error code and message to the browser, and exit.
     *
     * @param int    $code    The HTTP error code
     * @param string $message The HTTP error message
     *
     * @return void
     */
    public function sendExitError($code, $message = '')
    {
        http_response_code($code);
        exit($message);
    }
}
include/rcmail_string_replacer.php000064400000004606151727150450013427 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Turn URLs and email addresses into clickable links                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Helper class for turning URLs and email addresses in plaintext content
 * into clickable links.
 *
 * @package    Webmail
 * @subpackage Utils
 */
class rcmail_string_replacer extends rcube_string_replacer
{
    /**
     * Callback function used to build mailto: links around e-mail strings
     *
     * This also adds an onclick-handler to open the Roundcube compose message screen on such links
     *
     * @param array $matches Matches result from preg_replace_callback
     *
     * @return int Index of saved string value
     * @see rcube_string_replacer::mailto_callback()
     */
    protected function mailto_callback($matches)
    {
        $href   = $matches[1];
        $suffix = $this->parse_url_brackets($href);
        $email  = $href;

        if (strpos($email, '?')) {
            list($email,) = explode('?', $email);
        }

        // skip invalid emails
        if (!rcube_utils::check_email($email, false)) {
            return $matches[1];
        }

        $attribs = [
            'href'    => 'mailto:' . $href,
            'onclick' => sprintf("return %s.command('compose','%s',this)",
                rcmail_output::JS_OBJECT_NAME,
                rcube::JQ($href)
            ),
        ];

        $i = $this->add(html::a($attribs, rcube::Q($href)) . $suffix);

        return $i >= 0 ? $this->get_replacement($i) : '';
    }
}
include/rcmail_output_json.php000064400000020013151727150450012623 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Class to handle JSON (AJAX) output                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * View class to produce JSON responses
 *
 * @package    Webmail
 * @subpackage View
 */
class rcmail_output_json extends rcmail_output
{
    protected $texts     = [];
    protected $commands  = [];
    protected $callbacks = [];
    protected $message   = null;
    protected $header_sent = false;

    public $type      = 'js';
    public $ajax_call = true;


    /**
     * Object constructor
     */
    public function __construct()
    {
        parent::__construct();

        if (!empty($_SESSION['skin_config'])) {
            foreach ($_SESSION['skin_config'] as $key => $value) {
                $this->config->set($key, $value, true);
            }

            $value = array_merge((array) $this->config->get('dont_override'), array_keys($_SESSION['skin_config']));
            $this->config->set('dont_override', $value, true);
        }
    }

    /**
     * Issue command to set page title
     *
     * @param string $title New page title
     */
    public function set_pagetitle($title)
    {
        if ($this->config->get('devel_mode') && !empty($_SESSION['username'])) {
            $name = $_SESSION['username'];
        }
        else {
            $name = $this->config->get('product_name');
        }

        $this->command('set_pagetitle', empty($name) ? $title : $name . ' :: ' . $title);
    }

    /**
     * Register a template object handler
     *
     * @param string $obj  Object name
     * @param callable $func Function name to call
     */
    public function add_handler($obj, $func)
    {
        // ignore
    }

    /**
     * Register a list of template object handlers
     *
     * @param array $arr Hash array with object=>handler pairs
     */
    public function add_handlers($arr)
    {
        // ignore
    }

    /**
     * Call a client method
     *
     * @param string $cmd    Method to call
     * @param mixed ...$args Additional arguments
     */
    public function command($cmd, ...$args)
    {
        array_unshift($args, $cmd);

        if (strpos($args[0], 'plugin.') === 0) {
            $this->callbacks[] = $args;
        }
        else {
            $this->commands[] = $args;
        }
    }

    /**
     * Add a localized label(s) to the client environment
     *
     * @param mixed ...$args Labels (an array of strings, or many string arguments)
     */
    public function add_label(...$args)
    {
        if (count($args) == 1 && is_array($args[0])) {
            $args = $args[0];
        }

        foreach ($args as $name) {
            $this->texts[$name] = $this->app->gettext($name);
        }
    }

    /**
     * Invoke display_message command
     *
     * @param string $message  Message to display
     * @param string $type     Message type [notice|confirm|error]
     * @param array  $vars     Key-value pairs to be replaced in localized text
     * @param bool   $override Override last set message
     * @param int    $timeout  Message displaying time in seconds
     *
     * @uses self::command()
     */
    public function show_message($message, $type = 'notice', $vars = null, $override = true, $timeout = 0)
    {
        if ($override || !$this->message) {
            if ($this->app->text_exists($message)) {
                if (!empty($vars)) {
                    $vars = array_map(['rcmail', 'Q'], $vars);
                }
                $msgtext = $this->app->gettext(['name' => $message, 'vars' => $vars]);
            }
            else {
                $msgtext = $message;
            }

            $this->message = $message;
            $this->command('display_message', $msgtext, $type, $timeout * 1000);
        }
    }

    /**
     * Delete all stored env variables and commands
     */
    public function reset()
    {
        parent::reset();
        $this->texts    = [];
        $this->commands = [];
    }

    /**
     * Redirect to a certain url
     *
     * @param mixed $p     Either a string with the action or url parameters as key-value pairs
     * @param int   $delay Delay in seconds
     *
     * @see rcmail::url()
     */
    public function redirect($p = [], $delay = 1)
    {
        $location = $this->app->url($p);
        $this->remote_response(sprintf("window.setTimeout(function(){ %s.redirect('%s',true); }, %d);",
            self::JS_OBJECT_NAME, $location, $delay));
        exit;
    }

    /**
     * Send an AJAX response to the client.
     */
    public function send()
    {
        $this->remote_response();
        exit;
    }

    /**
     * Show error page and terminate script execution
     *
     * @param int    $code    Error code
     * @param string $message Error message
     */
    public function raise_error($code, $message)
    {
        if ($code == 403) {
            $this->header('HTTP/1.1 403 Forbidden');
            die("Invalid Request");
        }

        $this->show_message("Application Error ($code): $message", 'error');
        $this->remote_response();
        exit;
    }

    /**
     * Send an AJAX response with executable JS code
     *
     * @param string $add Additional JS code
     */
    protected function remote_response($add = '')
    {
        if (!$this->header_sent) {
            $this->header_sent = true;
            $this->nocacheing_headers();
            $this->header('Content-Type: application/json; charset=' . $this->get_charset());
        }

        // unset default env vars
        unset($this->env['task'], $this->env['action'], $this->env['comm_path']);

        $rcmail = rcmail::get_instance();
        $response['action'] = $rcmail->action;

        if ($unlock = rcube_utils::get_input_string('_unlock', rcube_utils::INPUT_GPC)) {
            $response['unlock'] = $unlock;
        }

        if (!empty($this->env)) {
            $response['env'] = $this->env;
        }

        if (!empty($this->texts)) {
            $response['texts'] = $this->texts;
        }

        // send function calls
        $response['exec'] = $this->get_js_commands() . $add;

        if (!empty($this->callbacks)) {
            $response['callbacks'] = $this->callbacks;
        }

        // trigger generic hook where plugins can put additional content to the response
        $hook = $this->app->plugins->exec_hook("render_response", ['response' => $response]);

        // save some memory
        $response = $hook['response'];
        unset($hook['response']);

        echo self::json_serialize($response, $this->devel_mode, false);
    }

    /**
     * Return executable javascript code for all registered commands
     */
    protected function get_js_commands()
    {
        $out = '';

        foreach ($this->commands as $i => $args) {
            $method = array_shift($args);
            foreach ($args as $i => $arg) {
                $args[$i] = self::json_serialize($arg, $this->devel_mode, false);
            }

            $out .= sprintf(
                "this.%s(%s);\n",
                preg_replace('/^parent\./', '', $method),
                implode(',', $args)
            );
        }

        return $out;
    }
}
include/iniset.php000064400000010766151727150450010214 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Setup the application environment required to process               |
 |   any request.                                                        |
 +-----------------------------------------------------------------------+
 | Author: Till Klampaeckel <till@php.net>                               |
 |         Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

if (PHP_VERSION_ID < 70300) {
    die("Unsupported PHP version. Required PHP >= 7.3.");
}

// application constants
define('RCMAIL_VERSION', '1.6.7');
define('RCMAIL_START', microtime(true));

if (!defined('INSTALL_PATH')) {
    define('INSTALL_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');
}

if (!defined('RCMAIL_CONFIG_DIR')) {
    define('RCMAIL_CONFIG_DIR', getenv('ROUNDCUBE_CONFIG_DIR') ?: (INSTALL_PATH . 'config'));
}

if (!defined('RCUBE_LOCALIZATION_DIR')) {
    define('RCUBE_LOCALIZATION_DIR', INSTALL_PATH . 'program/localization/');
}

define('RCUBE_INSTALL_PATH', INSTALL_PATH);
define('RCUBE_CONFIG_DIR',  RCMAIL_CONFIG_DIR.'/');

// Show basic error message on fatal PHP error
register_shutdown_function('rcmail_error_handler');

// RC include folders MUST be included FIRST to avoid other
// possible not compatible libraries (i.e PEAR) to be included
// instead the ones provided by RC
$include_path = INSTALL_PATH . 'program/lib' . PATH_SEPARATOR;
$include_path.= ini_get('include_path');

if (set_include_path($include_path) === false) {
    die("Fatal error: ini_set/set_include_path does not work.");
}

// increase maximum execution time for php scripts
// (does not work in safe mode)
@set_time_limit(120);

// include composer autoloader (if available)
if (@file_exists(INSTALL_PATH . 'vendor/autoload.php')) {
    require INSTALL_PATH . 'vendor/autoload.php';
}

// translate PATH_INFO to _task and _action GET parameters
if (!empty($_SERVER['PATH_INFO']) && preg_match('!^/([a-z]+)/([a-z]+)$!', $_SERVER['PATH_INFO'], $m)) {
    if (!isset($_GET['_task'])) {
        $_GET['_task'] = $m[1];
    }
    if (!isset($_GET['_action'])) {
        $_GET['_action'] = $m[2];
    }
}

// include Roundcube Framework
require_once 'Roundcube/bootstrap.php';

// register autoloader for rcmail app classes
spl_autoload_register('rcmail_autoload');

/**
 * PHP5 autoloader routine for dynamic class loading
 */
function rcmail_autoload($classname)
{
    if (strpos($classname, 'rcmail') === 0) {
        if (preg_match('/^rcmail_action_([^_]+)_(.*)$/', $classname, $matches)) {
            $filepath = INSTALL_PATH . "program/actions/{$matches[1]}/{$matches[2]}.php";
        }
        else {
            $filepath = INSTALL_PATH . "program/include/$classname.php";
        }

        if (is_readable($filepath)) {
            include_once $filepath;
            return true;
        }
    }

    return false;
}

/**
 * Show a generic error message on fatal PHP error
 */
function rcmail_error_handler()
{
    $error = error_get_last();

    if ($error && ($error['type'] === E_ERROR || $error['type'] === E_PARSE)) {
        rcmail_fatal_error();
    }
}

/**
 * Raise a generic error message on error
 */
function rcmail_fatal_error()
{
    if (php_sapi_name() === 'cli') {
        echo "Fatal error: Please check the Roundcube error log and/or server error logs for more information.\n";
    }
    elseif (!empty($_REQUEST['_remote'])) {
        // Ajax request from UI
        header('Content-Type: application/json; charset=UTF-8');
        echo json_encode(['code' => 500, 'message' => "Internal Server Error"]);
    }
    else {
        if (!defined('RCUBE_FATAL_ERROR_MSG')) {
            define('RCUBE_FATAL_ERROR_MSG', INSTALL_PATH . 'program/resources/error.html');
        }

        echo file_get_contents(RCUBE_FATAL_ERROR_MSG);
    }

    exit;
}
include/rcmail_action.php000064400000146072151727150460011526 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   An abstract for HTTP request handlers with some helpers.            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * An abstract for HTTP request handlers with some helpers.
 *
 * @package Webmail
 */
abstract class rcmail_action
{
    const MODE_AJAX = 1;
    const MODE_HTTP = 2;

    /**
     * Mode of operation supported by the action. Use MODE_* constants.
     * By default all modes are allowed.
     *
     * @var int
     */
    protected static $mode;

    /**
     * A name of a initialized common form
     *
     * @var string
     */
    protected static $edit_form;

    /**
     * Deprecated action aliases.
     *
     * @todo Get rid of these (but it will be a big BC break)
     * @var array
     */
    public static $aliases = [];

    /**
     * Request handler. The only abstract method.
     *
     * @param array $args Arguments from the previous step(s)
     */
    abstract public function run($args = []);

    /**
     * Request sanity checks, e.g. supported request mode
     *
     * @return bool
     */
    public function checks()
    {
        $rcmail = rcmail::get_instance();

        if (static::$mode) {
            if (!(static::$mode & self::MODE_HTTP) && empty($rcmail->output->ajax_call)) {
                return false;
            }

            if (!(static::$mode & self::MODE_AJAX) && !empty($rcmail->output->ajax_call)) {
                return false;
            }
        }

        return true;
    }

    /**
     * Set environment variables for specified config boolean options
     *
     * @param array $options List of configuration option names
     */
    public static function set_env_config($options)
    {
        $rcmail = rcmail::get_instance();

        foreach ((array) $options as $option) {
            if ($rcmail->config->get($option)) {
                $rcmail->output->set_env($option, true);
            }
        }
    }

    /**
     * Create a HTML table based on the given data
     *
     * @param array  $attrib     Named table attributes
     * @param mixed  $table_data Table row data. Either a two-dimensional array
     *                           or a valid SQL result set
     * @param array  $show_cols  List of cols to show
     * @param string $id_col     Name of the identifier col
     *
     * @return string HTML table code
     */
    public static function table_output($attrib, $table_data, $show_cols, $id_col)
    {
        $rcmail = rcmail::get_instance();
        $table  = new html_table($attrib);

        // add table header
        if (empty($attrib['noheader'])) {
            foreach ($show_cols as $col) {
                $table->add_header($col, rcube::Q($rcmail->gettext($col)));
            }
        }

        if (!is_array($table_data)) {
            $db = $rcmail->get_dbh();
            while ($table_data && ($sql_arr = $db->fetch_assoc($table_data))) {
                $table->add_row(['id' => 'rcmrow' . rcube_utils::html_identifier($sql_arr[$id_col])]);

                // format each col
                foreach ($show_cols as $col) {
                    $table->add($col, rcube::Q($sql_arr[$col]));
                }
            }
        }
        else {
            foreach ($table_data as $row_data) {
                $class = !empty($row_data['class']) ? $row_data['class'] : null;
                if (!empty($attrib['rowclass'])) {
                    $class = trim($class . ' ' . $attrib['rowclass']);
                }

                $rowid = 'rcmrow' . rcube_utils::html_identifier($row_data[$id_col]);

                $table->add_row(['id' => $rowid, 'class' => $class]);

                // format each col
                foreach ($show_cols as $col) {
                    $val = is_array($row_data[$col]) ? $row_data[$col][0] : $row_data[$col];
                    $table->add($col, empty($attrib['ishtml']) ? rcube::Q($val) : $val);
                }
            }
        }

        return $table->show($attrib);
    }

    /**
     * Return HTML for quota indicator object
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML code for the quota indicator object
     */
    public static function quota_display($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmquotadisplay';
        }

        $_SESSION['quota_display'] = !empty($attrib['display']) ? $attrib['display'] : 'text';

        $quota = self::quota_content($attrib);

        $rcmail->output->add_gui_object('quotadisplay', $attrib['id']);
        $rcmail->output->add_script('rcmail.set_quota('.rcube_output::json_serialize($quota).');', 'docready');

        return html::span($attrib, '&nbsp;');
    }

    /**
     * Return (parsed) quota information
     *
     * @param array $attrib Named parameters
     * @param array $folder Current folder
     *
     * @return array Quota information
     */
    public static function quota_content($attrib = null, $folder = null)
    {
        $rcmail = rcmail::get_instance();
        $quota  = $rcmail->storage->get_quota($folder);
        $quota  = $rcmail->plugins->exec_hook('quota', $quota);

        $quota_result           = (array) $quota;
        $quota_result['type']   = $_SESSION['quota_display'] ?? '';
        $quota_result['folder'] = $folder !== null && $folder !== '' ? $folder : 'INBOX';

        if (!empty($quota['total']) && $quota['total'] > 0) {
            if (!isset($quota['percent'])) {
                $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100));
            }

            $title = $rcmail->gettext('quota') . ': ' . sprintf('%s / %s (%.0f%%)',
                self::show_bytes($quota['used'] * 1024),
                self::show_bytes($quota['total'] * 1024),
                $quota_result['percent']
            );

            $quota_result['title'] = $title;

            if (!empty($attrib['width'])) {
                $quota_result['width'] = $attrib['width'];
            }
            if (!empty($attrib['height'])) {
                $quota_result['height'] = $attrib['height'];
            }

            // build a table of quota types/roots info
            if (($root_cnt = count($quota_result['all'])) > 1 || count($quota_result['all'][key($quota_result['all'])]) > 1) {
                $table = new html_table(['cols' => 3, 'class' => 'quota-info']);

                $table->add_header(null, rcube::Q($rcmail->gettext('quotatype')));
                $table->add_header(null, rcube::Q($rcmail->gettext('quotatotal')));
                $table->add_header(null, rcube::Q($rcmail->gettext('quotaused')));

                foreach ($quota_result['all'] as $root => $data) {
                    if ($root_cnt > 1 && $root) {
                        $table->add(['colspan' => 3, 'class' => 'root'], rcube::Q($root));
                    }

                    if ($storage = ($data['storage'] ?? null)) {
                        $percent = min(100, round(($storage['used'] / max(1, $storage['total'])) * 100));

                        $table->add('name', rcube::Q($rcmail->gettext('quotastorage')));
                        $table->add(null, self::show_bytes($storage['total'] * 1024));
                        $table->add(null, sprintf('%s (%.0f%%)', self::show_bytes($storage['used'] * 1024), $percent));
                    }
                    if ($message = ($data['message'] ?? null)) {
                        $percent = min(100, round(($message['used'] / max(1, $message['total'])) * 100));

                        $table->add('name', rcube::Q($rcmail->gettext('quotamessage')));
                        $table->add(null, intval($message['total']));
                        $table->add(null, sprintf('%d (%.0f%%)', $message['used'], $percent));
                    }
                }

                $quota_result['table'] = $table->show();
            }
        }
        else {
            $unlimited               = $rcmail->config->get('quota_zero_as_unlimited');
            $quota_result['title']   = $rcmail->gettext($unlimited ? 'unlimited' : 'unknown');
            $quota_result['percent'] = 0;
        }

        // cleanup
        unset($quota_result['abort']);
        if (empty($quota_result['table'])) {
            unset($quota_result['all']);
        }

        return $quota_result;
    }

    /**
     * Outputs error message according to server error/response codes
     *
     * @param string $fallback      Fallback message label
     * @param array  $fallback_args Fallback message label arguments
     * @param string $suffix        Message label suffix
     * @param array  $params        Additional parameters (type, prefix)
     */
    public static function display_server_error($fallback = null, $fallback_args = null, $suffix = '', $params = [])
    {
        $rcmail   = rcmail::get_instance();
        $storage  = $rcmail->get_storage();
        $err_code = $storage->get_error_code();
        $res_code = $storage->get_response_code();
        $args     = [];

        if ($res_code == rcube_storage::NOPERM) {
            $error = 'errornoperm';
        }
        else if ($res_code == rcube_storage::READONLY) {
            $error = 'errorreadonly';
        }
        else if ($res_code == rcube_storage::OVERQUOTA) {
            $error = 'erroroverquota';
        }
        else if ($err_code && ($err_str = $storage->get_error_str())) {
            // try to detect access rights problem and display appropriate message
            if (stripos($err_str, 'Permission denied') !== false) {
                $error = 'errornoperm';
            }
            // try to detect full mailbox problem and display appropriate message
            // there can be e.g. "Quota exceeded" / "quotum would exceed" / "Over quota"
            else if (stripos($err_str, 'quot') !== false && preg_match('/exceed|over/i', $err_str)) {
                $error = 'erroroverquota';
            }
            else {
                $error = 'servererrormsg';
                $args  = ['msg' => rcube::Q($err_str)];
            }
        }
        else if ($err_code < 0) {
            $error = 'storageerror';
        }
        else if ($fallback) {
            $error = $fallback;
            $args  = $fallback_args;
            $params['prefix'] = false;
        }

        if (!empty($error)) {
            if ($suffix && $rcmail->text_exists($error . $suffix)) {
                $error .= $suffix;
            }

            $msg = $rcmail->gettext(['name' => $error, 'vars' => $args]);

            if (!empty($params['prefix']) && $fallback) {
                $msg = $rcmail->gettext(['name' => $fallback, 'vars' => $fallback_args]) . ' ' . $msg;
            }

            $rcmail->output->show_message($msg, !empty($params['type']) ? $params['type'] : 'error');
        }
    }

    /**
     * Displays an error message on storage fatal errors
     */
    public static function storage_fatal_error()
    {
        $rcmail   = rcmail::get_instance();
        $err_code = $rcmail->storage->get_error_code();

        switch ($err_code) {
        // Not all are really fatal, but these should catch
        // connection/authentication errors the best we can
        case rcube_imap_generic::ERROR_NO:
        case rcube_imap_generic::ERROR_BAD:
        case rcube_imap_generic::ERROR_BYE:
            self::display_server_error();
        }
    }

    /**
     * Output HTML editor scripts
     *
     * @param string  $mode     Editor mode
     * @param ?string $editorId Editor textarea element ID
     */
    public static function html_editor($mode = '', $editorId = null)
    {
        $rcmail           = rcmail::get_instance();
        $spellcheck       = intval($rcmail->config->get('enable_spellcheck'));
        $spelldict        = intval($rcmail->config->get('spellcheck_dictionary'));
        $disabled_plugins = [];
        $disabled_buttons = [];
        $extra_plugins    = [];
        $extra_buttons    = [];

        if (!$spellcheck) {
            $disabled_plugins[] = 'spellchecker';
        }

        $hook = $rcmail->plugins->exec_hook('html_editor', [
                'mode'             => $mode,
                'disabled_plugins' => $disabled_plugins,
                'disabled_buttons' => $disabled_buttons,
                'extra_plugins'    => $extra_plugins,
                'extra_buttons'    => $extra_buttons,
        ]);

        if (!empty($hook['abort'])) {
            return;
        }

        $lang_codes = [$_SESSION['language']];
        $assets_dir = $rcmail->config->get('assets_dir') ?: INSTALL_PATH;
        $skin_path  = $rcmail->output->get_skin_path();

        if ($pos = strpos($_SESSION['language'], '_')) {
            $lang_codes[] = substr($_SESSION['language'], 0, $pos);
        }

        foreach ($lang_codes as $code) {
            if (file_exists("$assets_dir/program/js/tinymce/langs/$code.js")) {
                $lang = $code;
                break;
            }
        }

        if (empty($lang)) {
            $lang = 'en';
        }

        $config = [
            'mode'       => $mode,
            'lang'       => $lang,
            'skin_path'  => $skin_path,
            'spellcheck' => $spellcheck, // deprecated
            'spelldict'  => $spelldict,
            'content_css'      => 'program/resources/tinymce/content.css',
            'disabled_plugins' => $hook['disabled_plugins'],
            'disabled_buttons' => $hook['disabled_buttons'],
            'extra_plugins'    => $hook['extra_plugins'],
            'extra_buttons'    => $hook['extra_buttons'],
        ];

        if ($path = $rcmail->config->get('editor_css_location')) {
            if ($path = $rcmail->find_asset($skin_path . $path)) {
                $config['content_css'] = $path;
            }
        }

        $font_family = $rcmail->output->get_env('default_font');
        $font_size   = $rcmail->output->get_env('default_font_size');
        $style       = [];

        if ($font_family) {
            $style[] = "font-family: $font_family;";
        }
        if ($font_size) {
            $style[] = "font-size: $font_size;";
        }
        if (!empty($style)) {
            $config['content_style'] = "body {" . implode(' ', $style) . "}";
        }

        $rcmail->output->set_env('editor_config', $config);
        $rcmail->output->add_label('selectimage', 'addimage', 'selectmedia', 'addmedia', 'close');

        if ($path = $rcmail->config->get('media_browser_css_location', 'program/resources/tinymce/browser.css')) {
            if ($path != 'none' && ($path = $rcmail->find_asset($path))) {
                $rcmail->output->include_css($path);
            }
        }

        if (!empty($editorId)) {
            $script = rcmail_output::JS_OBJECT_NAME . ".enable_command('toggle-editor', true);"
                . rcmail_output::JS_OBJECT_NAME . ".editor_init(null, '$editorId');";

            $rcmail->output->add_script($script, 'docready');
        }

        $rcmail->output->include_script('tinymce/tinymce.min.js');
        $rcmail->output->include_script('editor.js');
    }

    /**
     * File upload progress handler.
     *
     * @deprecated We're using HTML5 upload progress
     */
    public static function upload_progress()
    {
        // NOOP
        rcmail::get_instance()->output->send();
    }

    /**
     * Initializes file uploading interface.
     *
     * @param int $max_size Optional maximum file size in bytes
     *
     * @return string Human-readable file size limit
     */
    public static function upload_init($max_size = null)
    {
        $rcmail = rcmail::get_instance();

        // find max filesize value
        $max_filesize = rcube_utils::max_upload_size();
        if ($max_size && $max_size < $max_filesize) {
            $max_filesize = $max_size;
        }

        $max_filesize_txt = self::show_bytes($max_filesize);
        $rcmail->output->set_env('max_filesize', $max_filesize);
        $rcmail->output->set_env('filesizeerror', $rcmail->gettext([
            'name' => 'filesizeerror', 'vars' => ['size' => $max_filesize_txt]]));

        if ($max_filecount = ini_get('max_file_uploads')) {
            $rcmail->output->set_env('max_filecount', $max_filecount);
            $rcmail->output->set_env('filecounterror', $rcmail->gettext([
                'name' => 'filecounterror', 'vars' => ['count' => $max_filecount]]));
        }

        $rcmail->output->add_label('uploadprogress', 'GB', 'MB', 'KB', 'B');

        return $max_filesize_txt;
    }

    /**
     * Upload form object
     *
     * @param array  $attrib     Object attributes
     * @param string $name       Form object name
     * @param string $action     Form action name
     * @param array  $input_attr File input attributes
     * @param int    $max_size   Maximum upload size
     *
     * @return string HTML output
     */
    public static function upload_form($attrib, $name, $action, $input_attr = [], $max_size = null)
    {
        $rcmail = rcmail::get_instance();

        // Get filesize, enable upload progress bar
        $max_filesize = self::upload_init($max_size);

        $hint = html::div('hint', $rcmail->gettext(['name' => 'maxuploadsize', 'vars' => ['size' => $max_filesize]]));

        if (!empty($attrib['mode']) && $attrib['mode'] == 'hint') {
            return $hint;
        }

        // set defaults
        $attrib += ['id' => 'rcmUploadbox', 'buttons' => 'yes'];

        $event   = rcmail_output::JS_OBJECT_NAME . ".command('$action', this.form)";
        $form_id = $attrib['id'] . 'Frm';

        // Default attributes of file input and form
        $input_attr += [
            'id'   => $attrib['id'] . 'Input',
            'type' => 'file',
            'name' => '_attachments[]',
            'class' => 'form-control',
        ];

        $form_attr = [
            'id'      => $form_id,
            'name'    => $name,
            'method'  => 'post',
            'enctype' => 'multipart/form-data'
        ];

        if (!empty($attrib['mode']) && $attrib['mode'] == 'smart') {
            unset($attrib['buttons']);
            $form_attr['class'] = 'smart-upload';
            $input_attr = array_merge($input_attr, [
                // #5854: Chrome does not execute onchange when selecting the same file.
                //        To fix this we reset the input using null value.
                'onchange' => "$event; this.value=null",
                'class'    => 'smart-upload',
                'tabindex' => '-1',
            ]);
        }

        $input   = new html_inputfield($input_attr);
        $content = ($attrib['prefix'] ?? '') . $input->show();

        if (empty($attrib['mode']) || $attrib['mode'] != 'smart') {
            $content = html::div(null, $content . $hint);
        }

        if (self::get_bool_attr($attrib, 'buttons')) {
            $button   = new html_inputfield(['type' => 'button']);
            $content .= html::div('buttons',
                $button->show($rcmail->gettext('close'), ['class' => 'button', 'onclick' => "$('#{$attrib['id']}').hide()"])
                . ' ' .
                $button->show($rcmail->gettext('upload'), ['class' => 'button mainaction', 'onclick' => $event])
            );
        }

        $rcmail->output->add_gui_object($name, $form_id);

        return html::div($attrib, $rcmail->output->form_tag($form_attr, $content));
    }

    /**
     * Common file upload error handler
     *
     * @param int    $php_error  PHP error from $_FILES
     * @param array  $attachment Attachment data from attachment_upload hook
     * @param string $add_error  Additional error label (highest prio)
     */
    public static function upload_error($php_error, $attachment = null, $add_error = null)
    {
        $rcmail = rcmail::get_instance();

        if ($add_error) {
            $msg = $rcmail->gettext($add_error);
        }
        else if ($attachment && !empty($attachment['error'])) {
            $msg = $attachment['error'];
        }
        else if ($php_error == UPLOAD_ERR_INI_SIZE || $php_error == UPLOAD_ERR_FORM_SIZE) {
            $post_size = self::show_bytes(rcube_utils::max_upload_size());
            $msg = $rcmail->gettext(['name' => 'filesizeerror', 'vars' => ['size' => $post_size]]);
        }
        else {
            $msg = $rcmail->gettext('fileuploaderror');
        }

        $rcmail->output->command('display_message', $msg, 'error');
    }

    /**
     * Common POST file upload error handler
     *
     * @return bool True if it was a POST request, False otherwise
     */
    public static function upload_failure()
    {
        if (!isset($_SERVER['REQUEST_METHOD']) || $_SERVER['REQUEST_METHOD'] != 'POST') {
            return false;
        }

        $rcmail = rcmail::get_instance();

        // if filesize exceeds post_max_size then $_FILES array is empty,
        // show filesizeerror instead of fileuploaderror
        if ($maxsize = ini_get('post_max_size')) {
            $msg = $rcmail->gettext([
                    'name' => 'filesizeerror',
                    'vars' => ['size' => self::show_bytes(parse_bytes($maxsize))]
            ]);
        }
        else {
            $msg = $rcmail->gettext('fileuploaderror');
        }

        $rcmail->output->command('display_message', $msg, 'error');

        return true;
    }

    /**
     * Outputs uploaded file content (with image thumbnails support
     *
     * @param array $file Uploaded file data
     */
    public static function display_uploaded_file($file)
    {
        if (empty($file)) {
            return;
        }

        $rcmail = rcmail::get_instance();

        $file = $rcmail->plugins->exec_hook('attachment_display', $file);

        if (!empty($file['status'])) {
            if (empty($file['size'])) {
                $file['size'] = !empty($file['data']) ? strlen($file['data']) : @filesize($file['path']);
            }

            // generate image thumbnail for file browser in HTML editor
            if (!empty($_GET['_thumbnail'])) {
                $thumbnail_size = 80;
                $mimetype       = $file['mimetype'];
                $file_ident     = $file['id'] . ':' . $file['mimetype'] . ':' . $file['size'];
                $thumb_name     = 'thumb' . md5($file_ident . ':' . $rcmail->user->ID . ':' . $thumbnail_size);
                $cache_file     = rcube_utils::temp_filename($thumb_name, false, false);

                // render thumbnail image if not done yet
                if (!is_file($cache_file)) {
                    if (!$file['path']) {
                        $orig_name = $filename = $cache_file . '.tmp';
                        file_put_contents($orig_name, $file['data']);
                    }
                    else {
                        $filename = $file['path'];
                    }

                    $image = new rcube_image($filename);
                    if ($imgtype = $image->resize($thumbnail_size, $cache_file, true)) {
                        $mimetype = 'image/' . $imgtype;

                        if (!empty($orig_name)) {
                            unlink($orig_name);
                        }
                    }
                }

                if (is_file($cache_file)) {
                    // cache for 1h
                    $rcmail->output->future_expire_header(3600);
                    header('Content-Type: ' . $mimetype);
                    header('Content-Length: ' . filesize($cache_file));

                    readfile($cache_file);
                    exit;
                }
            }

            header('Content-Type: ' . $file['mimetype']);
            header('Content-Length: ' . $file['size']);

            if (isset($file['data']) && is_string($file['data'])) {
                echo $file['data'];
            }
            else if (!empty($file['path'])) {
                readfile($file['path']);
            }
        }
    }

    /**
     * Initializes client-side autocompletion.
     */
    public static function autocomplete_init()
    {
        static $init;

        if ($init) {
            return;
        }

        $init   = 1;
        $rcmail = rcmail::get_instance();

        if (($threads = (int) $rcmail->config->get('autocomplete_threads')) > 0) {
            $book_types = (array) $rcmail->config->get('autocomplete_addressbooks', 'sql');
            if (count($book_types) > 1) {
                $rcmail->output->set_env('autocomplete_threads', $threads);
                $rcmail->output->set_env('autocomplete_sources', $book_types);
            }
        }

        $rcmail->output->set_env('autocomplete_max', (int) $rcmail->config->get('autocomplete_max', 15));
        $rcmail->output->set_env('autocomplete_min_length', $rcmail->config->get('autocomplete_min_length'));
        $rcmail->output->add_label('autocompletechars', 'autocompletemore');
    }

    /**
     * Returns supported font-family specifications
     *
     * @param string $font Font name
     *
     * @return string|array Font-family specification array or string (if $font is used)
     */
    public static function font_defs($font = null)
    {
        $fonts = [
            'Andale Mono'   => '"Andale Mono",Times,monospace',
            'Arial'         => 'Arial,Helvetica,sans-serif',
            'Arial Black'   => '"Arial Black","Avant Garde",sans-serif',
            'Book Antiqua'  => '"Book Antiqua",Palatino,serif',
            'Courier New'   => '"Courier New",Courier,monospace',
            'Georgia'       => 'Georgia,Palatino,serif',
            'Helvetica'     => 'Helvetica,Arial,sans-serif',
            'Impact'        => 'Impact,Chicago,sans-serif',
            'Tahoma'        => 'Tahoma,Arial,Helvetica,sans-serif',
            'Terminal'      => 'Terminal,Monaco,monospace',
            'Times New Roman' => '"Times New Roman",Times,serif',
            'Trebuchet MS'  => '"Trebuchet MS",Geneva,sans-serif',
            'Verdana'       => 'Verdana,Geneva,sans-serif',
        ];

        if ($font) {
            return !empty($fonts[$font]) ? $fonts[$font] : null;
        }

        return $fonts;
    }

    /**
     * Create a human readable string for a number of bytes
     *
     * @param int    $bytes Number of bytes
     * @param string &$unit Size unit
     *
     * @return string Byte string
     */
    public static function show_bytes($bytes, &$unit = null)
    {
        $rcmail = rcmail::get_instance();

        // Plugins may want to display different units
        $plugin = $rcmail->plugins->exec_hook('show_bytes', ['bytes' => $bytes, 'unit' => null]);

        $unit = $plugin['unit'];

        if (isset($plugin['result'])) {
            return $plugin['result'];
        }

        if ($bytes >= 1073741824) {
            $unit = 'GB';
            $gb   = $bytes/1073741824;
            $str  = sprintf($gb >= 10 ? "%d " : "%.1f ", $gb) . $rcmail->gettext($unit);
        }
        else if ($bytes >= 1048576) {
            $unit = 'MB';
            $mb   = $bytes/1048576;
            $str  = sprintf($mb >= 10 ? "%d " : "%.1f ", $mb) . $rcmail->gettext($unit);
        }
        else if ($bytes >= 1024) {
            $unit = 'KB';
            $str  = sprintf("%d ",  round($bytes/1024)) . $rcmail->gettext($unit);
        }
        else {
            $unit = 'B';
            $str  = sprintf('%d ', $bytes) . $rcmail->gettext($unit);
        }

        return $str;
    }

    /**
     * Returns real size (calculated) of the message part
     *
     * @param rcube_message_part $part Message part
     *
     * @return string Part size (and unit)
     */
    public static function message_part_size($part)
    {
        if (isset($part->d_parameters['size'])) {
            $size = self::show_bytes((int) $part->d_parameters['size']);
        }
        else {
            $size = $part->size;

            if ($size === 0) {
                $part->exact_size = true;
            }

            if (isset($part->encoding) && $part->encoding == 'base64') {
                $size = $size / 1.33;
            }

            $size = self::show_bytes($size);
        }

        if (empty($part->exact_size)) {
            $size = '~' . $size;
        }

        return $size;
    }

    /**
     * Returns message UID(s) and IMAP folder(s) from GET/POST data
     *
     * @param string $uids           UID value to decode
     * @param string $mbox           Default mailbox value (if not encoded in UIDs)
     * @param bool   $is_multifolder Will be set to True if multi-folder request
     * @param int    $mode           Request mode. Default: rcube_utils::INPUT_GPC.
     *
     * @return array  List of message UIDs per folder
     */
    public static function get_uids($uids = null, $mbox = null, &$is_multifolder = false, $mode = null)
    {
        // message UID (or comma-separated list of IDs) is provided in
        // the form of <ID>-<MBOX>[,<ID>-<MBOX>]*

        $_uid  = $uids ?: rcube_utils::get_input_value('_uid', $mode ?: rcube_utils::INPUT_GPC, true);
        $_mbox = $mbox ?: rcube_utils::get_input_string('_mbox', $mode ?: rcube_utils::INPUT_GPC, true);

        // already a hash array
        if (is_array($_uid) && !isset($_uid[0])) {
            return $_uid;
        }

        $is_multifolder = false;
        $result = [];

        // special case: *
        if ($_uid == '*' && !empty($_SESSION['search'][1]) && !empty($_SESSION['search'][1]->multi)) {
            $is_multifolder = true;
            // extract the full list of UIDs per folder from the search set
            foreach ($_SESSION['search'][1]->sets as $subset) {
                $mbox = $subset->get_parameters('MAILBOX');
                $result[$mbox] = $subset->get();
            }
        }
        else {
            if (is_string($_uid)) {
                $_uid = explode(',', $_uid);
            }

            // create a per-folder UIDs array
            foreach ((array) $_uid as $uid) {
                $tokens = explode('-', $uid, 2);
                $uid    = $tokens[0];

                if (!isset($tokens[1]) || !strlen($tokens[1])) {
                    $mbox = $_mbox;
                }
                else {
                    $mbox = $tokens[1];
                    $is_multifolder = true;
                }

                if ($uid == '*') {
                    $result[$mbox] = $uid;
                }
                else if (preg_match('/^[0-9:.]+$/', $uid)) {
                    $result[$mbox][] = $uid;
                }
            }
        }

        return $result;
    }

    /**
     * Get resource file content (with assets_dir support)
     *
     * @param string $name File name
     *
     * @return string File content
     */
    public static function get_resource_content($name)
    {
        if (strpos($name, '/') !== 0) {
            $name = "program/resources/$name";
        }

        $assets_dir = rcmail::get_instance()->config->get('assets_dir');

        if ($assets_dir) {
            $path = slashify($assets_dir) . $name;
            if (@file_exists($path)) {
                $name = $path;
            }
        }
        else {
            $name = INSTALL_PATH . $name;
        }

        return file_get_contents($name, false);
    }

    /**
     * Prepare a common edit form.
     *
     * @param array  $attrib Form attributes
     * @param string $action Action name
     * @param string $id     An extra index for the form key
     * @param array  $hidden Additional hidden fields
     *
     * @return array Start and end tags, Empty if the farm was initialized before
     */
    public static function get_form_tags($attrib, $action, $id = null, $hidden = [])
    {
        $rcmail = rcmail::get_instance();

        $form_start = $form_end = '';

        if (empty(self::$edit_form)) {
            $request_key = $action . (isset($id) ? '.'.$id : '');
            $form_start = $rcmail->output->request_form([
                    'name'    => 'form',
                    'method'  => 'post',
                    'task'    => $rcmail->task,
                    'action'  => $action,
                    'request' => $request_key,
                    'noclose' => true
                ] + $attrib
            );

            if (!empty($hidden) && is_array($hidden)) {
                $hiddenfields = new html_hiddenfield($hidden);
                $form_start .= $hiddenfields->show();
            }

            $form_end  = empty($attrib['form']) ? '</form>' : '';
            self::$edit_form = !empty($attrib['form']) ? $attrib['form'] : 'form';

            $rcmail->output->add_gui_object('editform', self::$edit_form);
        }

        return [$form_start, $form_end];
    }

    /**
     * Return folders list in HTML
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML code for the gui object
     */
    public static function folder_list($attrib)
    {
        static $a_mailboxes;

        $attrib += ['maxlength' => 100, 'realnames' => false, 'unreadwrap' => ' (%s)'];

        $type = !empty($attrib['type']) ? $attrib['type'] : 'ul';
        unset($attrib['type']);

        if ($type == 'ul' && empty($attrib['id'])) {
            $attrib['id'] = 'rcmboxlist';
        }

        if (empty($attrib['folder_name'])) {
            $attrib['folder_name'] = '*';
        }

        // get current folder
        $rcmail    = rcmail::get_instance();
        $storage   = $rcmail->get_storage();
        $mbox_name = $storage->get_folder();
        $delimiter = $storage->get_hierarchy_delimiter();

        // build the folders tree
        if (empty($a_mailboxes)) {
            // get mailbox list
            $a_mailboxes = [];
            $a_folders   = $storage->list_folders_subscribed(
                '',
                $attrib['folder_name'],
                $attrib['folder_filter'] ?? null
            );

            foreach ($a_folders as $folder) {
                self::build_folder_tree($a_mailboxes, $folder, $delimiter);
            }
        }

        // allow plugins to alter the folder tree or to localize folder names
        $hook = $rcmail->plugins->exec_hook('render_mailboxlist', [
                'list'      => $a_mailboxes,
                'delimiter' => $delimiter,
                'type'      => $type,
                'attribs'   => $attrib,
        ]);

        $a_mailboxes = $hook['list'];
        $attrib      = $hook['attribs'];

        if ($type == 'select') {
            $attrib['is_escaped'] = true;
            $select = new html_select($attrib);

            // add no-selection option
            if (!empty($attrib['noselection'])) {
                $select->add(html::quote($rcmail->gettext($attrib['noselection'])), '');
            }

            $maxlength = $attrib['maxlength'] ?? null;
            $realnames = $attrib['realnames'] ?? null;
            $default   = $attrib['default'] ?? null;

            self::render_folder_tree_select($a_mailboxes, $mbox_name, $maxlength, $select, $realnames);
            $out = $select->show($default);
        }
        else {
            $out = '';
            $js_mailboxlist = [];
            $tree = self::render_folder_tree_html($a_mailboxes, $mbox_name, $js_mailboxlist, $attrib);

            if ($type != 'js') {
                $out = html::tag('ul', $attrib, $tree, html::$common_attrib);

                $rcmail->output->include_script('treelist.js');
                $rcmail->output->add_gui_object('mailboxlist', $attrib['id']);
                $rcmail->output->set_env('unreadwrap', $attrib['unreadwrap'] ?? false);
                $rcmail->output->set_env('collapsed_folders', (string) $rcmail->config->get('collapsed_folders'));
            }

            $rcmail->output->set_env('mailboxes', $js_mailboxlist);

            // we can't use object keys in javascript because they are unordered
            // we need sorted folders list for folder-selector widget
            $rcmail->output->set_env('mailboxes_list', array_keys($js_mailboxlist));
        }

        // add some labels to client
        $rcmail->output->add_label('purgefolderconfirm', 'deletemessagesconfirm');

        return $out;
    }

    /**
     * Return folders list as html_select object
     *
     * @param array $p Named parameters
     *
     * @return html_select HTML drop-down object
     */
    public static function folder_selector($p = [])
    {
        $rcmail    = rcmail::get_instance();
        $storage   = $rcmail->get_storage();
        $realnames = $rcmail->config->get('show_real_foldernames');
        $p += ['maxlength' => 100, 'realnames' => $realnames, 'is_escaped' => true];
        $a_mailboxes = [];

        if (empty($p['folder_name'])) {
            $p['folder_name'] = '*';
        }

        $f_filter = $p['folder_filter'] ?? null;
        $f_rights = $p['folder_rights'] ?? null;

        if (!empty($p['unsubscribed'])) {
            $list = $storage->list_folders('', $p['folder_name'], $f_filter, $f_rights);
        }
        else {
            $list = $storage->list_folders_subscribed('', $p['folder_name'], $f_filter, $f_rights);
        }

        $delimiter = $storage->get_hierarchy_delimiter();

        if (!empty($p['exceptions'])) {
            $list = array_diff($list, (array) $p['exceptions']);
        }

        if (!empty($p['additional'])) {
            foreach ($p['additional'] as $add_folder) {
                $add_items = explode($delimiter, $add_folder);
                $folder    = '';
                while (count($add_items)) {
                    $folder .= array_shift($add_items);

                    // @TODO: sorting
                    if (!in_array($folder, $list)) {
                        $list[] = $folder;
                    }

                    $folder .= $delimiter;
                }
            }
        }

        foreach ($list as $folder) {
            self::build_folder_tree($a_mailboxes, $folder, $delimiter);
        }

        // allow plugins to alter the folder tree or to localize folder names
        $hook = $rcmail->plugins->exec_hook('render_folder_selector', [
                'list'      => $a_mailboxes,
                'delimiter' => $delimiter,
                'attribs'   => $p,
        ]);

        $a_mailboxes = $hook['list'];
        $p           = $hook['attribs'];

        $select = new html_select($p);

        if (!empty($p['noselection'])) {
            $select->add(html::quote($p['noselection']), '');
        }

        self::render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames'], 0, $p);

        return $select;
    }

    /**
     * Create a hierarchical array of the mailbox list
     */
    protected static function build_folder_tree(&$arrFolders, $folder, $delm = '/', $path = '')
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        // Handle namespace prefix
        $prefix = '';

        if (!$path) {
            $n_folder = $folder;
            $folder   = $storage->mod_folder($folder);

            if ($n_folder != $folder) {
                $prefix = substr($n_folder, 0, -strlen($folder));
            }
        }

        $pos = strpos($folder, $delm);

        if ($pos !== false) {
            $subFolders    = substr($folder, $pos+1);
            $currentFolder = substr($folder, 0, $pos);

            // sometimes folder has a delimiter as the last character
            if (!strlen($subFolders)) {
                $virtual = false;
            }
            else if (!isset($arrFolders[$currentFolder])) {
                $virtual = true;
            }
            else {
                $virtual = $arrFolders[$currentFolder]['virtual'];
            }
        }
        else {
            $subFolders    = false;
            $currentFolder = $folder;
            $virtual       = false;
        }

        $path .= $prefix . $currentFolder;

        if (!isset($arrFolders[$currentFolder])) {
            $arrFolders[$currentFolder] = [
                'id'      => $path,
                'name'    => rcube_charset::convert($currentFolder, 'UTF7-IMAP'),
                'virtual' => $virtual,
                'folders' => []
            ];
        }
        else {
            $arrFolders[$currentFolder]['virtual'] = $virtual;
        }

        if (strlen($subFolders)) {
            self::build_folder_tree($arrFolders[$currentFolder]['folders'], $subFolders, $delm, $path.$delm);
        }
    }

    /**
     * Return html for a structured list &lt;ul&gt; for the mailbox tree
     */
    protected static function render_folder_tree_html(&$arrFolders, &$mbox_name, &$jslist, $attrib, $nestLevel = 0)
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        $maxlength = intval($attrib['maxlength']);
        $realnames = (bool) $attrib['realnames'];
        $msgcounts = $storage->get_cache('messagecount');
        $collapsed = (string) $rcmail->config->get('collapsed_folders');
        $realnames = (bool) $rcmail->config->get('show_real_foldernames');

        $out = '';
        foreach ($arrFolders as $folder) {
            $title        = null;
            $folder_class = self::folder_classname($folder['id'], $folder['class'] ?? null);
            $is_collapsed = strpos($collapsed, '&'.rawurlencode($folder['id']).'&') !== false;
            $unread       = 0;
            $realname     = $folder['realname'] ?? $realnames;

            if ($msgcounts && !empty($msgcounts[$folder['id']]['UNSEEN'])) {
                $unread = intval($msgcounts[$folder['id']]['UNSEEN']);
            }

            if ($folder_class && !$realname && $rcmail->text_exists($folder_class)) {
                $foldername = $rcmail->gettext($folder_class);
            }
            else {
                $foldername = $folder['name'];

                // shorten the folder name to a given length
                if ($maxlength && $maxlength > 1) {
                    $fname = abbreviate_string($foldername, $maxlength);
                    if ($fname != $foldername) {
                        $title = $foldername;
                    }
                    $foldername = $fname;
                }
            }

            // make folder name safe for ids and class names
            $folder_id = rcube_utils::html_identifier($folder['id'], true);
            $classes   = ['mailbox'];

            // set special class for Sent, Drafts, Trash and Junk
            if ($folder_class) {
                $classes[] = $folder_class;
            }

            if ($folder['id'] == $mbox_name) {
                $classes[] = 'selected';
            }

            if ($folder['virtual']) {
                $classes[] = 'virtual';
            }
            else if ($unread) {
                $classes[] = 'unread';
            }

            $js_name     = rcube::JQ($folder['id']);
            $html_name   = rcube::Q($foldername) . ($unread ? html::span('unreadcount skip-content', sprintf($attrib['unreadwrap'], $unread)) : '');
            $link_attrib = $folder['virtual'] ? [] : [
                'href'    => $rcmail->url(['_mbox' => $folder['id']]),
                'onclick' => sprintf("return %s.command('list','%s',this,event)", rcmail_output::JS_OBJECT_NAME, $js_name),
                'rel'     => $folder['id'],
                'title'   => $title,
            ];

            $out .= html::tag('li', [
                    'id'      => "rcmli" . $folder_id,
                    'class'   => implode(' ', $classes),
                    'noclose' => true
                ],
                html::a($link_attrib, $html_name)
            );

            if (!empty($folder['folders'])) {
                $out .= html::div('treetoggle ' . ($is_collapsed ? 'collapsed' : 'expanded'), '&nbsp;');
            }

            $jslist[$folder['id']] = [
                'id'      => $folder['id'],
                'name'    => $foldername,
                'virtual' => $folder['virtual'],
            ];

            if (!empty($folder_class)) {
                $jslist[$folder['id']]['class'] = $folder_class;
            }

            if (!empty($folder['folders'])) {
                $out .= html::tag('ul', ['style' => $is_collapsed ? "display:none;" : null],
                    self::render_folder_tree_html($folder['folders'], $mbox_name, $jslist, $attrib, $nestLevel+1));
            }

            $out .= "</li>\n";
        }

        return $out;
    }

    /**
     * Return html for a flat list <select> for the mailbox tree
     */
    protected static function render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames = false, $nestLevel = 0, $opts = [])
    {
        $out     = '';
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        foreach ($arrFolders as $folder) {
            // skip exceptions (and its subfolders)
            if (!empty($opts['exceptions']) && in_array($folder['id'], $opts['exceptions'])) {
                continue;
            }

            // skip folders in which it isn't possible to create subfolders
            if (!empty($opts['skip_noinferiors'])) {
                $attrs = $storage->folder_attributes($folder['id']);
                if ($attrs && in_array_nocase('\\Noinferiors', $attrs)) {
                    continue;
                }
            }

            $folder_class = self::folder_classname($folder['id'], $folder['class'] ?? null);
            $realname     = $folder['realname'] ?? $realnames;

            if ($folder_class && !$realname && $rcmail->text_exists($folder_class)) {
                $foldername = $rcmail->gettext($folder_class);
            }
            else {
                $foldername = $folder['name'];

                // shorten the folder name to a given length
                if ($maxlength && $maxlength > 1) {
                    $foldername = abbreviate_string($foldername, $maxlength);
                }
            }

            $select->add(str_repeat('&nbsp;', $nestLevel*4) . html::quote($foldername), $folder['id']);

            if (!empty($folder['folders'])) {
                $out .= self::render_folder_tree_select($folder['folders'], $mbox_name, $maxlength,
                    $select, $realnames, $nestLevel+1, $opts);
            }
        }

        return $out;
    }

    /**
     * Returns class name for the given folder if it is a special folder
     * (including shared/other users namespace roots).
     *
     * @param string $folder_id IMAP Folder name
     * @param string $fallback  Fallback Folder CSS class name
     *
     * @return string|null CSS class name
     */
    public static function folder_classname($folder_id, $fallback = null)
    {
        static $classes;

        if ($classes === null) {
            $rcmail  = rcmail::get_instance();
            $storage = $rcmail->get_storage();
            $classes = ['INBOX' => 'inbox'];

            // for these mailboxes we have css classes
            foreach (['sent', 'drafts', 'trash', 'junk'] as $type) {
                if (($mbox = $rcmail->config->get($type . '_mbox')) && !isset($classes[$mbox])) {
                    $classes[$mbox] = $type;
                }
            }

            // add classes for shared/other user namespace roots
            foreach (['other', 'shared'] as $ns_name) {
                if ($ns = $storage->get_namespace($ns_name)) {
                    foreach ($ns as $root) {
                        $root = substr($root[0], 0, -1);
                        if (strlen($root) && !isset($classes[$root])) {
                            $classes[$root] = "ns-$ns_name";
                        }
                    }
                }
            }
        }

        return !empty($classes[$folder_id]) ? $classes[$folder_id] : $fallback;
    }

    /**
     * Try to localize the given IMAP folder name.
     * UTF-7 decode it in case no localized text was found
     *
     * @param string $name        Folder name
     * @param bool   $with_path   Enable path localization
     * @param bool   $path_remove Remove the path
     *
     * @return string Localized folder name in UTF-8 encoding
     */
    public static function localize_foldername($name, $with_path = false, $path_remove = false)
    {
        $rcmail    = rcmail::get_instance();
        $realnames = $rcmail->config->get('show_real_foldernames');

        if (!$realnames && ($folder_class = self::folder_classname($name)) && $rcmail->text_exists($folder_class)) {
            return $rcmail->gettext($folder_class);
        }

        $storage   = $rcmail->get_storage();
        $delimiter = $storage->get_hierarchy_delimiter();

        // Remove the path
        if ($path_remove) {
            if (strpos($name, $delimiter)) {
                $path = explode($delimiter, $name);
                $name = array_pop($path);
            }
        }
        // try to localize path of the folder
        else if ($with_path && !$realnames) {
            $path  = explode($delimiter, $name);
            $count = count($path);

            if ($count > 1) {
                for ($i = 1; $i < $count; $i++) {
                    $folder       = implode($delimiter, array_slice($path, 0, -$i));
                    $folder_class = self::folder_classname($folder);

                    if ($folder_class && $rcmail->text_exists($folder_class)) {
                        $name = implode($delimiter, array_slice($path, $count - $i));
                        $name = rcube_charset::convert($name, 'UTF7-IMAP');

                        return $rcmail->gettext($folder_class) . $delimiter . $name;
                    }
                }
            }
        }

        return rcube_charset::convert($name, 'UTF7-IMAP');
    }

    /**
     * Localize folder path
     */
    public static function localize_folderpath($path)
    {
        $rcmail          = rcmail::get_instance();
        $protect_folders = $rcmail->config->get('protect_default_folders');
        $delimiter       = $rcmail->storage->get_hierarchy_delimiter();
        $path            = explode($delimiter, $path);
        $result          = [];

        foreach ($path as $idx => $dir) {
            $directory = implode($delimiter, array_slice($path, 0, $idx+1));
            if ($protect_folders && $rcmail->storage->is_special_folder($directory)) {
                unset($result);
                $result[] = self::localize_foldername($directory);
            }
            else {
                $result[] = rcube_charset::convert($dir, 'UTF7-IMAP');
            }
        }

        return implode($delimiter, $result);
    }

    /**
     * Gets a value of a boolean attribute from template object attributes
     *
     * @param array  $attributes Template object attributes
     * @param string $name       Attribute name
     */
    public static function get_bool_attr($attributes, $name)
    {
        if (!isset($attributes[$name])) {
            return false;
        }

        return rcube_utils::get_boolean($attributes[$name]);
    }
}
include/rcmail_sendmail.php000064400000174723151727150460012051 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Common code for generating and saving/sending mail message          |
 |   with support for common user interface elements                     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Common code for generating and saving/sending mail message
 * with support for common user interface elements.
 *
 * @package Webmail
 */
class rcmail_sendmail
{
    public $data    = [];
    public $options = [];

    protected $parse_data = [];
    protected $message_form;
    protected $rcmail;
    protected $temp_files = [];

    // define constants for message compose mode
    const MODE_NONE    = 'none';
    const MODE_REPLY   = 'reply';
    const MODE_FORWARD = 'forward';
    const MODE_DRAFT   = 'draft';
    const MODE_EDIT    = 'edit';


    /**
     * Object constructor
     *
     * @param array $data    Compose data
     * @param array $options Operation options:
     *    savedraft (bool) - Enable save-draft mode
     *    sendmail (bool) - Enable send-mail mode
     *    saveonly (bool) - Enable save-only mode
     *    message (object) - Message object to get some data from
     *    error_handler (callback) - Error handler
     *    dsn_enabled (bool) - Enable DSN
     */
    public function __construct($data = [], $options = [])
    {
        $this->rcmail  = rcube::get_instance();
        $this->data    = (array) $data;
        $this->options = (array) $options;

        $this->options['sendmail_delay'] = (int) $this->rcmail->config->get('sendmail_delay');

        if (empty($options['error_handler'])) {
            $this->options['error_handler'] = function() { return false; };
        }

        if (empty($this->data['mode'])) {
            $this->data['mode'] = self::MODE_NONE;
        }

        if (!empty($this->options['message'])) {
            $this->compose_init($this->options['message']);
        }
    }

    /**
     * Object destructor to cleanup temporary files
     */
    public function __destruct()
    {
        foreach ($this->temp_files as $file) {
            @unlink($file);
        }
    }

    /**
     * Collect input data for message headers
     *
     * @return array Message headers
     */
    public function headers_input()
    {
        if (!empty($this->options['sendmail']) && $this->options['sendmail_delay']) {
            $last_time = $this->rcmail->config->get('last_message_time');
            $wait_sec  = time() - $this->options['sendmail_delay'] - intval($last_time);

            if ($wait_sec < 0) {
                return $this->options['error_handler']('senttooquickly', 'error', ['sec' => $wait_sec * -1]);
            }
        }

        // set default charset
        if (empty($this->options['charset'])) {
            $charset = rcube_utils::get_input_string('_charset', rcube_utils::INPUT_POST) ?: $this->rcmail->output->get_charset();
            $this->options['charset'] = $charset;
        }

        $charset = $this->options['charset'];

        $this->parse_data = [];

        $mailto  = $this->email_input_format(rcube_utils::get_input_string('_to', rcube_utils::INPUT_POST, true, $charset), true);
        $mailcc  = $this->email_input_format(rcube_utils::get_input_string('_cc', rcube_utils::INPUT_POST, true, $charset), true);
        $mailbcc = $this->email_input_format(rcube_utils::get_input_string('_bcc', rcube_utils::INPUT_POST, true, $charset), true);

        if (!empty($this->parse_data['INVALID_EMAIL']) && empty($this->options['savedraft'])) {
            return $this->options['error_handler']('emailformaterror', 'error', ['email' => $this->parse_data['INVALID_EMAIL']]);
        }

        if (($max_recipients = (int) $this->rcmail->config->get('max_recipients')) > 0) {
            if ($this->parse_data['RECIPIENT_COUNT'] > $max_recipients) {
                return $this->options['error_handler']('toomanyrecipients', 'error', ['max' => $max_recipients]);
            }
        }

        if (empty($mailto) && !empty($mailcc)) {
            $mailto = $mailcc;
            $mailcc = null;
        }
        else if (empty($mailto)) {
            $mailto = 'undisclosed-recipients:;';
        }

        $dont_override = (array) $this->rcmail->config->get('dont_override');
        $mdn_enabled   = in_array('mdn_default', $dont_override) ? $this->rcmail->config->get('mdn_default') : !empty($_POST['_mdn']);
        $dsn_enabled   = in_array('dsn_default', $dont_override) ? $this->rcmail->config->get('dsn_default') : !empty($_POST['_dsn']);
        $subject       = rcube_utils::get_input_string('_subject', rcube_utils::INPUT_POST, true, $charset);
        $from          = rcube_utils::get_input_string('_from', rcube_utils::INPUT_POST, true, $charset);
        $replyto       = rcube_utils::get_input_string('_replyto', rcube_utils::INPUT_POST, true, $charset);
        $followupto    = rcube_utils::get_input_string('_followupto', rcube_utils::INPUT_POST, true, $charset);
        $from_string   = '';

        // Get sender name and address from identity...
        if (is_numeric($from)) {
            if (is_array($identity_arr = $this->get_identity($from))) {
                if ($identity_arr['mailto']) {
                    $from = $identity_arr['mailto'];
                }
                if ($identity_arr['string']) {
                    $from_string = $identity_arr['string'];
                }
            }
            else {
                $from = null;
            }
        }
        else {
            // ... if there is no identity record, this might be a custom from
            $from_addresses = rcube_mime::decode_address_list($from, null, true, $charset);

            if (count($from_addresses) == 1) {
                $from        = $from_addresses[1]['mailto'];
                $from_string = $from_addresses[1]['string'];
            }
            // ... otherwise it's empty or invalid
            else {
                $from = null;
            }
        }

        // check 'From' address (identity may be incomplete)
        if (empty($this->options['savedraft']) && empty($this->options['saveonly']) && empty($from)) {
            return $this->options['error_handler']('nofromaddress', 'error');
        }

        if (!$from_string && $from) {
            $from_string = $from;
        }

        $from_string = rcube_charset::convert($from_string, RCUBE_CHARSET, $charset);

        if (!empty($this->data['param']['message-id'])) {
            $message_id  = $this->data['param']['message-id'];
        }
        else {
            $message_id = $this->rcmail->gen_message_id($from);
        }

        // Don't allow CRLF in subject (#8404)
        $subject = trim(preg_replace('|\r?\n|', ' ', $subject));

        $this->options['dsn_enabled'] = $dsn_enabled;
        $this->options['from']        = $from;
        $this->options['mailto']      = $mailto;

        // compose headers array
        $headers = [
            'Received'         => $this->header_received(),
            'Date'             => $this->rcmail->user_date(),
            'From'             => $from_string,
            'To'               => $mailto,
            'Cc'               => $mailcc,
            'Bcc'              => $mailbcc,
            'Subject'          => $subject,
            'Reply-To'         => $this->email_input_format($replyto),
            'Mail-Reply-To'    => $this->email_input_format($replyto),
            'Mail-Followup-To' => $this->email_input_format($followupto),
            'In-Reply-To'      => $this->data['reply_msgid'] ?? null,
            'References'       => $this->data['references'] ?? null,
            'User-Agent'       => $this->rcmail->config->get('useragent'),
            'Message-ID'       => $message_id,
            'X-Sender'         => $from,
        ];

        if (!empty($identity_arr['organization'])) {
            $headers['Organization'] = $identity_arr['organization'];
        }

        if ($mdn_enabled) {
            $headers['Disposition-Notification-To'] = $from_string;
        }

        if (!empty($_POST['_priority'])) {
            $priority     = intval($_POST['_priority']);
            $a_priorities = [1 => 'highest', 2 => 'high', 4 => 'low', 5 => 'lowest'];

            if (!empty($a_priorities[$priority])) {
                $headers['X-Priority'] = sprintf("%d (%s)", $priority, ucfirst($a_priorities[$priority]));
            }
        }

        // remember reply/forward UIDs in special headers
        if (!empty($this->options['savedraft'])) {
            $draft_info = [];

            // Note: We ignore <UID>.<PART> forwards/replies here
            if (
                !empty($this->data['reply_uid'])
                && ($uid = $this->data['reply_uid'])
                && !preg_match('/^\d+\.[0-9.]+$/', $uid)
            ) {
                $draft_info['type']   = 'reply';
                $draft_info['uid']    = $uid;
                $draft_info['folder'] = $this->data['mailbox'];
            }
            else if (
                !empty($this->data['forward_uid'])
                && ($uid = rcube_imap_generic::compressMessageSet($this->data['forward_uid']))
                && !preg_match('/^\d+[0-9.]+$/', $uid)
            ) {
                $draft_info['type']   = 'forward';
                $draft_info['uid']    = $uid;
                $draft_info['folder'] = $this->data['mailbox'];
            }

            if ($dsn_enabled) {
                $draft_info['dsn'] = 'on';
            }

            if (!empty($draft_info)) {
                $headers['X-Draft-Info'] = $this->draftinfo_encode($draft_info);
            }
        }

        return array_filter($headers);
    }

    /**
     * Set charset and transfer encoding on the message
     *
     * @param Mail_mime $message Message object
     * @param bool      $flowed  Enable format=flowed
     */
    public function set_message_encoding($message, $flowed = false)
    {
        $text_charset      = $this->options['charset'];
        $transfer_encoding = '7bit';
        $head_encoding     = 'quoted-printable';

        // choose encodings for plain/text body and message headers
        if (preg_match('/ISO-2022/i', $text_charset)) {
            $head_encoding = 'base64'; // RFC1468
        }
        else if (preg_match('/[^\x00-\x7F]/', $message->getTXTBody())) {
            $transfer_encoding = $this->rcmail->config->get('force_7bit') ? 'quoted-printable' : '8bit';
        }
        else if ($this->options['charset'] == 'UTF-8') {
            $text_charset = 'US-ASCII';
        }

        if ($flowed) {
            $text_charset .= ";\r\n format=flowed";
        }

        // encoding settings for mail composing
        $message->setParam('text_encoding', $transfer_encoding);
        $message->setParam('html_encoding', 'quoted-printable');
        $message->setParam('head_encoding', $head_encoding);
        $message->setParam('head_charset', $this->options['charset']);
        $message->setParam('html_charset', $this->options['charset']);
        $message->setParam('text_charset', $text_charset);
    }

    /**
     * Create a message to be saved/sent
     *
     * @param array  $headers     Message headers
     * @param string $body        Message body
     * @param bool   $isHtml      The body is HTML or not
     * @param array  $attachments Optional message attachments array
     *
     * @return Mail_mime Message object
     */
    public function create_message($headers, $body, $isHtml = false, $attachments = [])
    {
        $charset = $this->options['charset'];

        if (!empty($this->options['keepformatting'])) {
            $flowed = false;
        } else {
            $flowed = !empty($this->options['savedraft']) || $this->rcmail->config->get('send_format_flowed', true);
        }

        // create PEAR::Mail_mime instance
        $MAIL_MIME = new Mail_mime("\r\n");

        // Check if we have enough memory to handle the message in it
        // It's faster than using files, so we'll do this if we only can
        if (is_array($attachments)) {
            $memory = 0;
            foreach ($attachments as $attachment) {
                $memory += $attachment['size'];
            }

            // Yeah, Net_SMTP needs up to 12x more memory, 1.33 is for base64
            if (!rcube_utils::mem_check($memory * 1.33 * 12)) {
                $MAIL_MIME->setParam('delay_file_io', true);
            }
        }

        $plugin = $this->rcmail->plugins->exec_hook('message_outgoing_body', [
                'body'    => $body,
                'type'    => $isHtml ? 'html' : 'plain',
                'message' => $MAIL_MIME
        ]);

        // For HTML-formatted messages, construct the MIME message with both
        // the HTML part and the plain-text part
        if ($isHtml) {
            $MAIL_MIME->setHTMLBody($plugin['body']);

            $plain_body = $this->rcmail->html2text($plugin['body'], ['width' => 0, 'charset' => $charset]);
            $plain_body = $this->format_plain_body($plain_body, $flowed);

            // There's no sense to use multipart/alternative if the text/plain
            // part would be blank. Completely blank text/plain part may confuse
            // some mail clients (#5283)
            if (strlen(trim($plain_body)) > 0) {
                $plugin = $this->rcmail->plugins->exec_hook('message_outgoing_body', [
                        'body'    => $plain_body,
                        'type'    => 'alternative',
                        'message' => $MAIL_MIME
                ]);

                // add a plain text version of the e-mail as an alternative part.
                $MAIL_MIME->setTXTBody($plugin['body']);
            }

            // Extract image Data URIs into message attachments (#1488502)
            $this->extract_inline_images($MAIL_MIME, $this->options['from']);
        }
        else {
            $body = $this->format_plain_body($plugin['body'], $flowed);

            $MAIL_MIME->setTXTBody($body, false, true);
        }

        // encoding settings for mail composing
        $this->set_message_encoding($MAIL_MIME, $flowed);

        // pass headers to message object
        $MAIL_MIME->headers($headers);

        return $MAIL_MIME;
    }

    /**
     * Prepare plain text content for the message (format=flowed and wrapping)
     *
     * @param string $body   Plain text message body
     * @param bool   $flowed Enable format=flowed formatting
     *
     * @return string Formatted content
     */
    protected function format_plain_body($body, $flowed = false)
    {
        if (empty($this->options['keepformatting'])) {
            // set line length for body wrapping
            $line_length = $this->rcmail->config->get('line_length', 72);
            $charset     = $this->options['charset'];

            if ($flowed) {
                $body = rcube_mime::format_flowed($body, min($line_length + 2, 79), $charset);
            }
            else {
                $body = rcube_mime::wordwrap($body, $line_length, "\r\n", false, $charset);
            }

            $body = wordwrap($body, 998, "\r\n", true);
        }

        // make sure all line endings are CRLF (#1486712)
        $body = preg_replace('/\r?\n/', "\r\n", $body);

        return $body;
    }

    /**
     * Message delivery, and setting Replied/Forwarded flag on success
     *
     * @param Mail_mime $message    Message object
     * @param bool      $disconnect Close SMTP connection after delivery
     *
     * @return bool True on success, False on failure
     */
    public function deliver_message($message, $disconnect = true)
    {
        // Handle Delivery Status Notification request
        $smtp_opts     = ['dsn' => $this->options['dsn_enabled']];
        $smtp_error    = null;
        $mailbody_file = null;

        $sent = $this->rcmail->deliver_message($message,
            $this->options['from'],
            $this->options['mailto'],
            $smtp_error, $mailbody_file, $smtp_opts, $disconnect
        );

        // return to compose page if sending failed
        if (!$sent) {
            // remove temp file
            if ($mailbody_file) {
                unlink($mailbody_file);
            }

            if ($smtp_error && is_string($smtp_error)) {
                $this->options['error_handler']($smtp_error, 'error');
            }
            else if ($smtp_error && !empty($smtp_error['label'])) {
                $this->options['error_handler']($smtp_error['label'], 'error', $smtp_error['vars']);
            }
            else {
                $this->options['error_handler']('sendingfailed', 'error');
            }

            return false;
        }

        if ($mailbody_file) {
            $this->temp_files[$message->headers()['Message-ID']] = $mailbody_file;
        }

        // save message sent time
        if ($this->options['sendmail_delay']) {
            $this->rcmail->user->save_prefs(['last_message_time' => time()]);
        }

        // Collect recipients' addresses
        $this->collect_recipients($message);

        // set replied/forwarded flag
        if (!empty($this->data['reply_uid'])) {
            foreach (rcmail::get_uids($this->data['reply_uid'], $this->data['mailbox']) as $mbox => $uids) {
                // skip <UID>.<PART> replies
                if (!preg_match('/^\d+\.[0-9.]+$/', implode(',', (array) $uids))) {
                    $this->rcmail->storage->set_flag($uids, 'ANSWERED', $mbox);
                }
            }
        }
        else if (!empty($this->data['forward_uid'])) {
            foreach (rcmail::get_uids($this->data['forward_uid'], $this->data['mailbox']) as $mbox => $uids) {
                // skip <UID>.<PART> forwards
                if (!preg_match('/^\d+\.[0-9.]+$/', implode(',', (array) $uids))) {
                    $this->rcmail->storage->set_flag($uids, 'FORWARDED', $mbox);
                }
            }
        }

        return true;
    }

    /**
     * Save the message into Drafts folder (in savedraft mode)
     * or in Sent mailbox if specified/configured
     *
     * @param Mail_mime $message Message object
     *
     * @return mixed Operation status
     */
    public function save_message($message)
    {
        $store_folder = false;
        $store_target = null;
        $saved        = false;

        // Determine which folder to save message
        if (!empty($this->options['savedraft'])) {
            $store_target = $this->rcmail->config->get('drafts_mbox');
        }
        else if (!$this->rcmail->config->get('no_save_sent_messages')) {
            if (isset($_POST['_store_target'])) {
                $store_target = rcube_utils::get_input_string('_store_target', rcube_utils::INPUT_POST, true);
            }
            else {
                $store_target = $this->rcmail->config->get('sent_mbox');
            }
        }

        if ($store_target) {
            $storage = $this->rcmail->get_storage();

            // check if folder is subscribed
            if ($storage->folder_exists($store_target, true)) {
                $store_folder = true;
            }
            // folder may be existing but not subscribed (#1485241)
            else if (!$storage->folder_exists($store_target)) {
                $store_folder = $storage->create_folder($store_target, true);
            }
            else if ($storage->subscribe($store_target)) {
                $store_folder = true;
            }

            // append message to sent box
            if ($store_folder) {
                // message body in file
                $msg_id = $message->headers()['Message-ID'];

                if ($message->getParam('delay_file_io') && empty($this->temp_files[$msg_id])) {
                    $msg_file = rcube_utils::temp_filename('msg');
                    $msg = $message->saveMessageBody($msg_file);

                    if (!is_a($msg, 'PEAR_Error')) {
                        $this->temp_files[$msg_id] = $msg_file;
                    }
                }

                if (!empty($this->temp_files[$msg_id])) {
                    $msg     = $this->temp_files[$msg_id];
                    $headers = $message->txtHeaders();
                }
                else if (empty($msg)) {
                    $msg     = $message->getMessage();
                    $headers = '';
                }

                if (is_a($msg, 'PEAR_Error')) {
                    rcube::raise_error([
                        'code' => 650, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => "Could not create message: ".$msg->getMessage()],
                        true, false);
                }
                else {
                    $is_file = !empty($this->temp_files[$msg_id]);
                    $saved   = $storage->save_message($store_target, $msg, $headers, $is_file, ['SEEN']);
                }
            }

            // raise error if saving failed
            if (!$saved) {
                rcube::raise_error(['code' => 800, 'type' => 'imap',
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Could not save message in $store_target"], true, false);
            }
        }

        $this->options['store_target'] = $store_target;
        $this->options['store_folder'] = $store_folder;

        return $saved;
    }

    /**
     * If enabled, returns Received header content to be prepended
     * to message headers
     *
     * @return string|null Received header content
     */
    public function header_received()
    {
        if ($this->rcmail->config->get('http_received_header')) {
            $nldlm       = "\r\n\t";
            $http_header = 'from ';

            // FROM/VIA
            if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                $hosts        = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'], 2);
                $http_header .= $this->received_host($hosts[0]) . $nldlm . ' via ';
            }

            $http_header .= $this->received_host($_SERVER['REMOTE_ADDR']);

            // BY
            $http_header .= $nldlm . 'by ' . rcube_utils::server_name('HTTP_HOST');

            // WITH
            $http_header .= $nldlm . 'with HTTP (' . $_SERVER['SERVER_PROTOCOL']
                . ' ' . $_SERVER['REQUEST_METHOD'] . '); ' . date('r');

            return wordwrap($http_header, 69, $nldlm);
        }
    }

    /**
     * Converts host address into host spec. for Received header
     */
    protected function received_host($host)
    {
        $hostname = gethostbyaddr($host);
        $result   = $this->encrypt_host($hostname);

        if ($host != $hostname) {
            $result .= ' (' . $this->encrypt_host($host) . ')';
        }

        return $result;
    }

    /**
     * Encrypt host IP or hostname for Received header
     */
    protected function encrypt_host($host)
    {
        if ($this->rcmail->config->get('http_received_header_encrypt')) {
            return $this->rcmail->encrypt($host);
        }

        if (!preg_match('/[^0-9:.]/', $host)) {
            return "[$host]";
        }

        return $host;
    }

    /**
     * Returns user identity record
     *
     * @param int $id Identity ID
     *
     * @return array|false User identity data, False if there's no such identity
     */
    public function get_identity($id)
    {
        if ($sql_arr = $this->rcmail->user->get_identity($id)) {
            $out = $sql_arr;

            if (!empty($this->options['charset']) && $this->options['charset'] != RCUBE_CHARSET) {
                foreach ($out as $k => $v) {
                    $out[$k] = rcube_charset::convert($v, RCUBE_CHARSET, $this->options['charset']);
                }
            }

            $out['mailto'] = $sql_arr['email'];
            $out['string'] = format_email_recipient($sql_arr['email'], $sql_arr['name']);

            return $out;
        }

        return false;
    }

    /**
     * Extract image attachments from HTML message (data URIs)
     *
     * @param Mail_mime $message Message object
     * @param string    $from    Sender email address
     */
    public static function extract_inline_images($message, $from)
    {
        $body   = $message->getHTMLBody();
        $offset = 0;
        $list   = [];
        $domain = 'localhost';
        $regexp = '#img[^>]+src=[\'"](data:([^;]*);base64,([a-z0-9+/=\r\n]+))([\'"])#i';

        if (preg_match_all($regexp, $body, $matches, PREG_OFFSET_CAPTURE)) {
            // get domain for the Content-ID, must be the same as in Mail_Mime::get()
            if (preg_match('#@([0-9a-zA-Z\-\.]+)#', $from, $m)) {
                $domain = $m[1];
            }

            foreach ($matches[1] as $idx => $m) {
                $data = preg_replace('/\r\n/', '', $matches[3][$idx][0]);
                $data = base64_decode($data);

                if (empty($data)) {
                    continue;
                }

                $hash      = md5($data) . '@' . $domain;
                $mime_type = $matches[2][$idx][0];

                if (empty($mime_type)) {
                    $mime_type = rcube_mime::image_content_type($data);
                }

                // add the image to the MIME message
                if (empty($list[$hash])) {
                    $ext         = preg_replace('#^[^/]+/#', '', $mime_type);
                    $name        = substr($hash, 0, 8) . '.' . $ext;
                    $list[$hash] = $name;

                    $message->addHTMLImage($data, $mime_type, $name, false, $hash);
                }

                $name = $list[$hash];
                $body = substr_replace($body, $name, $m[1] + $offset, strlen($m[0]));
                $offset += strlen($name) - strlen($m[0]);
            }
        }

        $message->setHTMLBody($body);
    }

    /**
     * Parse and cleanup email address input (and count addresses)
     *
     * @param string $mailto Address input
     * @param bool   $count  Do count recipients (count saved in $this->parse_data['RECIPIENT_COUNT'])
     * @param bool   $check  Validate addresses (errors saved in $this->parse_data['INVALID_EMAIL'])
     *
     * @return string Canonical recipients string (comma separated)
     */
    public function email_input_format($mailto, $count = false, $check = true)
    {
        if (!isset($this->parse_data['RECIPIENT_COUNT'])) {
            $this->parse_data['RECIPIENT_COUNT'] = 0;
        }

        if (empty($mailto)) {
            return '';
        }

        // convert to UTF-8 to preserve \x2c(,) and \x3b(;) used in ISO-2022-JP;
        if ($charset = $this->options['charset']) {
            if ($charset != RCUBE_CHARSET) {
                $mailto = rcube_charset::convert($mailto, $charset, RCUBE_CHARSET);
            }
            if (preg_match('/ISO-2022/i', $charset)) {
                $use_base64 = true;
            }
        }

        // simplified email regexp, supporting quoted local part
        $email_regexp = '(\S+|("[^"]+"))@\S+';

        $delim   = ',;';
        $regexp  = ["/[$delim]\s*[\r\n]+/", '/[\r\n]+/', "/[$delim]\s*\$/m", '/;/', '/(\S{1})(<'.$email_regexp.'>)/U'];
        $replace = [', ', ', ', '', ',', '\\1 \\2'];

        // replace new lines and strip ending ', ', make address input more valid
        $mailto = trim(preg_replace($regexp, $replace, $mailto));
        $items  = rcube_utils::explode_quoted_string("[$delim]", $mailto);
        $result = [];

        foreach ($items as $item) {
            $item = trim($item);
            // address in brackets without name (do nothing)
            if (preg_match('/^<'.$email_regexp.'>$/', $item)) {
                $item     = rcube_utils::idn_to_ascii(trim($item, '<>'));
                $result[] = $item;
            }
            // address without brackets and without name (add brackets)
            else if (preg_match('/^'.$email_regexp.'$/', $item)) {
                // Remove trailing non-letter characters (#7899)
                $item     = preg_replace('/[^[:alnum:]]+$/u', '', $item);
                $item     = rcube_utils::idn_to_ascii($item);
                $result[] = $item;
            }
            // address with name (handle name)
            else if (preg_match('/<*'.$email_regexp.'>*$/', $item, $matches)) {
                $address = $matches[0];
                $name    = trim(str_replace($address, '', $item));
                if ($name[0] == '"' && $name[strlen($name)-1] == '"') {
                    $name = substr($name, 1, -1);
                }

                // encode "name" field
                if (!empty($use_base64)) {
                    $name = rcube_charset::convert($name, RCUBE_CHARSET, $charset);
                    $name = Mail_mimePart::encodeMB($name, $charset, 'base64');
                }
                else {
                    $name = stripcslashes($name);
                }

                $address  = rcube_utils::idn_to_ascii(trim($address, '<>'));
                $result[] = format_email_recipient($address, $name);
                $item     = $address;
            }

            // check address format
            $item = trim($item, '<>');
            if ($item && $check && !rcube_utils::check_email($item)) {
                $this->parse_data['INVALID_EMAIL'] = $item;
                return;
            }
        }

        if ($count) {
            $this->parse_data['RECIPIENT_COUNT'] += count($result);
        }

        return implode(', ', $result);
    }

    /**
     * Returns configured generic message footer
     *
     * @param bool $isHtml Return HTML or Plain text version of the footer?
     *
     * @return string|null Footer content
     */
    public function generic_message_footer($isHtml)
    {
        if ($isHtml && ($file = $this->rcmail->config->get('generic_message_footer_html'))) {
            $html_footer = true;
        }
        else {
            $file = $this->rcmail->config->get('generic_message_footer');
            $html_footer = false;
        }

        if ($file && realpath($file)) {
            // sanity check
            if (!preg_match('/\.(php|ini|conf)$/', $file) && strpos($file, '/etc/') === false) {
                $footer = file_get_contents($file);
                if ($isHtml && !$html_footer) {
                    $t2h    = new rcube_text2html($footer, false);
                    $footer = $t2h->get_html();
                }

                if (!empty($this->options['charset']) && $this->options['charset'] != RCUBE_CHARSET) {
                    $footer = rcube_charset::convert($footer, RCUBE_CHARSET, $this->options['charset']);
                }

                return $footer;
            }
        }
    }

    /**
     * Encode data array into a string for use in X-Draft-Info header
     *
     * @param array $data Data array
     *
     * @return string Decoded data as a string
     */
    public static function draftinfo_encode($data)
    {
        $parts = [];

        foreach ($data as $key => $val) {
            $encode  = $key == 'folder' || strpos($val, ';') !== false;
            $parts[] = $key . '=' . ($encode ? 'B::' . base64_encode($val) : $val);
        }

        return implode('; ', $parts);
    }

    /**
     * Decode X-Draft-Info header value into an array
     *
     * @param string $str Encoded data string (see self::draftinfo_encode())
     *
     * @return array Decoded data
     */
    public static function draftinfo_decode($str)
    {
        $info = [];

        foreach (preg_split('/;\s+/', $str) as $part) {
            list($key, $val) = explode('=', $part, 2);
            if (strpos($val, 'B::') === 0) {
                $val = base64_decode(substr($val, 3));
            }
            else if ($key == 'folder') {
                $val = base64_decode($val);
            }

            $info[$key] = $val;
        }

        return $info;
    }

    /**
     * Header (From, To, Cc, etc.) input object for templates
     */
    public function headers_output($attrib)
    {
        list($form_start,) = $this->form_tags($attrib);

        $out          = '';
        $part         = strtolower($attrib['part']);
        $fname        = null;
        $field_type   = null;
        $allow_attrib = [];
        $param        = $part;

        switch ($part) {
        case 'from':
            return $form_start . $this->compose_header_from($attrib);

        case 'to':
        case 'cc':
        case 'bcc':
            $fname  = '_' . $part;

            $allow_attrib = ['id', 'class', 'style', 'cols', 'rows', 'tabindex'];
            $field_type   = 'html_textarea';
            break;

        case 'replyto':
        case 'reply-to':
            $fname  = '_replyto';
            $param  = 'replyto';

        case 'followupto':
        case 'followup-to':
            if (!$fname) {
                $fname  = '_followupto';
                $param  = 'followupto';
            }

            $allow_attrib = ['id', 'class', 'style', 'size', 'tabindex'];
            $field_type   = 'html_inputfield';
            break;
        }

        if ($fname && $field_type) {
            // pass the following attributes to the form class
            $field_attrib = ['name' => $fname, 'spellcheck' => 'false'];
            foreach ($attrib as $attr => $value) {
                if (stripos($attr, 'data-') === 0 || in_array($attr, $allow_attrib)) {
                    $field_attrib[$attr] = $value;
                }
            }

            $mode = $this->data['mode'] ?? null;

            // create textarea object
            $input = new $field_type($field_attrib);
            $out   = $input->show($this->compose_header_value($param, $mode));
        }

        if ($form_start) {
            $out = $form_start . $out;
        }

        // configure autocompletion
        rcmail_action::autocomplete_init();

        return $out;
    }

    /**
     * Returns From header input element
     */
    protected function compose_header_from($attrib)
    {
        // pass the following attributes to the form class
        $field_attrib = ['name' => '_from'];
        foreach ($attrib as $attr => $value) {
            if (in_array($attr, ['id', 'class', 'style', 'size', 'tabindex'])) {
                $field_attrib[$attr] = $value;
            }
        }

        if (!empty($this->data['identities'])) {
            $a_signatures = [];
            $identities   = [];
            $top_posting  = intval($this->rcmail->config->get('reply_mode')) > 0
                && !$this->rcmail->config->get('sig_below')
                && ($this->data['mode'] == self::MODE_REPLY || $this->data['mode'] == self::MODE_FORWARD);

            $separator     = $top_posting ? '---' : '-- ';
            $add_separator = (bool) $this->rcmail->config->get('sig_separator');

            $field_attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . ".change_identity(this)";
            $select_from = new html_select($field_attrib);

            // create SELECT element
            foreach ($this->data['identities'] as $sql_arr) {
                $identity_id = $sql_arr['identity_id'];
                $select_from->add(format_email_recipient($sql_arr['email'], $sql_arr['name']), $identity_id);

                // add signature to array
                if (!empty($sql_arr['signature']) && empty($this->data['param']['nosig'])) {
                    $text = $html = $sql_arr['signature'];

                    if ($sql_arr['html_signature']) {
                        $text = $this->rcmail->html2text($html, ['links' => false]);
                        $text = trim($text, "\r\n");
                    }
                    else {
                        $t2h  = new rcube_text2html($text, false);
                        $html = $t2h->get_html();
                    }

                    if ($add_separator && !preg_match('/^--[ -]\r?\n/m', $text)) {
                        $text = $separator . "\n" . ltrim($text, "\r\n");
                        $html = $separator . "<br>" . $html;
                    }

                    $a_signatures[$identity_id]['text'] = $text;
                    $a_signatures[$identity_id]['html'] = $html;
                }

                // add bcc and reply-to
                if (!empty($sql_arr['reply-to'])) {
                    $identities[$identity_id]['replyto'] = $sql_arr['reply-to'];
                }
                if (!empty($sql_arr['bcc'])) {
                    $identities[$identity_id]['bcc'] = $sql_arr['bcc'];
                }

                $identities[$identity_id]['email'] = $sql_arr['email'];
            }

            $out = $select_from->show($this->data['from'] ?? null);

            // add signatures to client
            $this->rcmail->output->set_env('signatures', $a_signatures);
            $this->rcmail->output->set_env('identities', $identities);
        }
        // no identities, display text input field
        else {
            $field_attrib['class'] = 'from_address';
            $input_from = new html_inputfield($field_attrib);
            $out = $input_from->show($this->data['from'] ?? null);
        }

        return $out;
    }

    /**
     * Set the value of specified header depending on compose mode
     */
    protected function compose_header_value($header, $mode)
    {
        $fvalue        = '';
        $decode_header = true;
        $message       = $this->options['message'];
        $charset       = !empty($message->headers) ? $message->headers->charset : RCUBE_CHARSET;
        $separator     = ', ';

        if (!isset($this->data['recipients'])) {
            $this->data['recipients'] = [];
        }

        // we have a set of recipients stored is session
        if (
            $header == 'to'
            && !empty($this->data['param']['mailto'])
            && ($mailto_id = $this->data['param']['mailto'])
            && !empty($_SESSION['mailto'][$mailto_id])
        ) {
            $fvalue        = urldecode($_SESSION['mailto'][$mailto_id]);
            $decode_header = false;
            $charset       = $this->rcmail->output->charset;

            // make session to not grow up too much
            $this->rcmail->session->remove("mailto.$mailto_id");
        }
        else if (!empty($_POST['_' . $header])) {
            $fvalue  = rcube_utils::get_input_string('_' . $header, rcube_utils::INPUT_POST, true);
            $charset = $this->rcmail->output->charset;
        }
        else if (!empty($this->data['param'][$header])) {
            $fvalue  = $this->data['param'][$header];
            $charset = $this->rcmail->output->charset;
        }
        else if ($mode == self::MODE_REPLY) {
            // get recipient address(es) out of the message headers
            if ($header == 'to') {
                $mailfollowup = $message->headers->others['mail-followup-to'] ?? [];
                $mailreplyto  = $message->headers->others['mail-reply-to'] ?? [];
                $reply_all    = $this->data['reply_all'] ?? null;

                // Reply to mailing list...
                if ($reply_all == 'list' && $mailfollowup) {
                    $fvalue = $mailfollowup;
                }
                else if ($reply_all == 'list'
                    && preg_match('/<mailto:([^>]+)>/i', $message->headers->others['list-post'], $m)
                ) {
                    $fvalue = $m[1];
                }
                // Reply to...
                else if ($reply_all && $mailfollowup) {
                    $fvalue = $mailfollowup;
                }
                else if ($mailreplyto) {
                    $fvalue = $mailreplyto;
                }
                else if (!empty($message->headers->replyto)) {
                    $fvalue  = $message->headers->replyto;
                    $replyto = true;
                }
                else if (!empty($message->headers->from)) {
                    $fvalue = $message->headers->from;
                }

                // Reply to message sent by yourself (#1487074, #1489230, #1490439)
                // Reply-To address need to be unset (#1490233)
                if (!empty($this->data['ident']) && empty($replyto)) {
                    foreach ([$fvalue, $message->get_header('from')] as $sender) {
                        $senders = rcube_mime::decode_address_list($sender, null, false, $charset, true);

                        if (in_array($this->data['ident']['email_ascii'], $senders)) {
                            $fvalue = $message->headers->to;
                            break;
                        }
                    }
                }
            }
            // add recipient of original message if reply to all
            else if ($header == 'cc' && !empty($this->data['reply_all']) && $this->data['reply_all'] != 'list') {
                if ($v = $message->headers->to) {
                    $fvalue .= $v;
                }
                if ($v = $message->headers->cc) {
                    $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
                }

                // Deliberately ignore 'Sender' header (#6506)

                // When To: and Reply-To: are the same we add From: address to the list (#1489037)
                if ($v = $message->headers->from) {
                    $to      = $message->headers->to;
                    $replyto = $message->headers->replyto;
                    $from    = rcube_mime::decode_address_list($v, null, false, $charset, true);
                    $to      = rcube_mime::decode_address_list($to, null, false, $charset, true);
                    $replyto = rcube_mime::decode_address_list($replyto, null, false, $charset, true);

                    if (!empty($replyto) && !count(array_diff($to, $replyto)) && count(array_diff($from, $to))) {
                        $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
                    }
                }
            }
        }
        else if (in_array($mode, [self::MODE_DRAFT, self::MODE_EDIT])) {
            // get drafted headers
            if ($header == 'to' && !empty($message->headers->to)) {
                $fvalue = $message->get_header('to', true);
            }
            else if ($header == 'cc' && !empty($message->headers->cc)) {
                $fvalue = $message->get_header('cc', true);
            }
            else if ($header == 'bcc' && !empty($message->headers->bcc)) {
                $fvalue = $message->get_header('bcc', true);
            }
            else if ($header == 'replyto' && !empty($message->headers->others['mail-reply-to'])) {
                $fvalue = $message->get_header('mail-reply-to');
            }
            else if ($header == 'replyto' && !empty($message->headers->replyto)) {
                $fvalue = $message->get_header('reply-to');
            }
            else if ($header == 'followupto' && !empty($message->headers->others['mail-followup-to'])) {
                $fvalue = $message->get_header('mail-followup-to');
            }
        }

        // split recipients and put them back together in a unique way
        if (!empty($fvalue) && in_array($header, ['to', 'cc', 'bcc'])) {
            $from_email   = !empty($this->data['ident']['email']) ? mb_strtolower($this->data['ident']['email']) : '';
            $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $charset);
            $fvalue       = [];

            foreach ($to_addresses as $addr_part) {
                if (empty($addr_part['mailto'])) {
                    continue;
                }

                // According to RFC5321 local part of email address is case-sensitive
                // however, here it is better to compare addresses in case-insensitive manner
                $mailto    = format_email(rcube_utils::idn_to_utf8($addr_part['mailto']));
                $mailto_lc = mb_strtolower($addr_part['mailto']);

                if (
                    ($header == 'to' || $mode != self::MODE_REPLY || $mailto_lc != $from_email)
                    && !in_array($mailto_lc, $this->data['recipients'])
                ) {
                    if ($addr_part['name'] && $mailto != $addr_part['name']) {
                        $mailto = format_email_recipient($mailto, $addr_part['name']);
                    }

                    $fvalue[] = $mailto;
                    $this->data['recipients'][] = $mailto_lc;
                }
            }

            $fvalue = implode($separator, $fvalue);
        }

        return $fvalue;
    }

    /**
     * Creates reply subject by removing common subject
     * prefixes/suffixes from the original message subject
     *
     * @param string $subject Subject string
     *
     * @return string Modified subject string
     */
    public static function reply_subject($subject)
    {
        $subject = trim($subject);

        //  Add config options for subject prefixes (#7929) 
        $subject = rcube_utils::remove_subject_prefix($subject, 'reply');
        $subject = rcmail::get_instance()->config->get('response_prefix', 'Re:') . ' ' . $subject;

        return trim($subject);
    }

    /**
     * Subject input object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public function compose_subject($attrib)
    {
        list($form_start, $form_end) = $this->form_tags($attrib);
        unset($attrib['form']);

        $attrib['name']       = '_subject';
        $attrib['spellcheck'] = 'true';

        $textfield = new html_inputfield($attrib);
        $subject   = '';

        // use subject from post
        if (isset($_POST['_subject'])) {
            $subject = rcube_utils::get_input_string('_subject', rcube_utils::INPUT_POST, TRUE);
        }
        else if (!empty($this->data['param']['subject'])) {
            $subject = $this->data['param']['subject'];
        }
        // create a reply-subject
        else if ($this->data['mode'] == self::MODE_REPLY) {
            $subject = self::reply_subject($this->options['message']->subject);
        }
        // create a forward-subject
        else if ($this->data['mode'] == self::MODE_FORWARD) {
            //  Add config options for subject prefixes (#7929) 
            $subject = rcube_utils::remove_subject_prefix($this->options['message']->subject, 'forward');
            $subject = trim($this->rcmail->config->get('forward_prefix', 'Fwd:') . ' ' . $subject);
        }
        // create a draft-subject
        else if ($this->data['mode'] == self::MODE_DRAFT || $this->data['mode'] == self::MODE_EDIT) {
            $subject = $this->options['message']->subject;
        }

        $out = $form_start ? "$form_start\n" : '';
        $out .= $textfield->show($subject);
        $out .= $form_end ? "\n$form_end" : '';

        return $out;
    }

    /**
     * Returns compose form tag (if not used already)
     *
     * @param array $attrib Form attributes
     */
    public function form_tags($attrib)
    {
        if (isset($attrib['noform']) && rcube_utils::get_boolean((string) $attrib['noform'])) {
            return ['', ''];
        }

        $form_start = '';
        if (!$this->message_form) {
            $hiddenfields = new html_hiddenfield(['name' => '_task', 'value' => $this->rcmail->task]);
            $hiddenfields->add(['name' => '_action', 'value' => 'send']);
            $hiddenfields->add(['name' => '_id', 'value' => $this->data['id'] ?? '']);
            $hiddenfields->add(['name' => '_attachments']);

            if (empty($attrib['form'])) {
                $form_attr  = [
                    'name'   => 'form',
                    'method' => 'post',
                    'class'  => !empty($attrib['class']) ? $attrib['class'] : '',
                ];
                $form_start = $this->rcmail->output->form_tag($form_attr);
            }

            $form_start .= $hiddenfields->show();
        }

        $form_end  = ($this->message_form && empty($attrib['form'])) ? '</form>' : '';
        $form_name = !empty($attrib['form']) ? $attrib['form'] : 'form';

        if (!$this->message_form) {
            $this->rcmail->output->add_gui_object('messageform', $form_name);
        }

        $this->message_form = $form_name;

        return [$form_start, $form_end];
    }

    /**
     * Returns compose form "head"
     */
    public function form_head($attrib)
    {
        list($form_start,) = $this->form_tags($attrib);

        return $form_start;
    }

    /**
     * Folder selector object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public function folder_selector($attrib)
    {
        if (isset($_POST['_store_target'])) {
            $mbox = $_POST['_store_target'];
        }
        else {
            $mbox = $this->data['param']['sent_mbox'] ?? null;
        }

        $params = [
            'noselection'   => '- ' . $this->rcmail->gettext('dontsave') . ' -',
            'folder_filter' => 'mail',
            'folder_rights' => 'w',
        ];

        $attrib['name'] = '_store_target';
        $select = rcmail_action::folder_selector(array_merge($attrib, $params));

        return $select->show($mbox, $attrib);
    }

    /**
     * Mail Disposition Notification checkbox object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public function mdn_checkbox($attrib)
    {
        list($form_start, $form_end) = $this->form_tags($attrib);
        unset($attrib['form']);

        if (empty($attrib['id'])) {
            $attrib['id'] = 'receipt';
        }

        $attrib['name']  = '_mdn';
        $attrib['value'] = '1';

        $checkbox = new html_checkbox($attrib);

        if (isset($_POST['_mdn'])) {
            $mdn_default = $_POST['_mdn'];
        }
        else if (in_array($this->data['mode'], [self::MODE_DRAFT, self::MODE_EDIT])) {
            $mdn_default = !empty($this->options['message']->headers->mdn_to);
        }
        else {
            $mdn_default = $this->rcmail->config->get('mdn_default');
        }

        $out = $form_start ? "$form_start\n" : '';
        $out .= $checkbox->show($mdn_default);
        $out .= $form_end ? "\n$form_end" : '';

        return $out;
    }

    /**
     * Delivery Status Notification checkbox object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public function dsn_checkbox($attrib)
    {
        list($form_start, $form_end) = $this->form_tags($attrib);
        unset($attrib['form']);

        if (empty($attrib['id'])) {
            $attrib['id'] = 'dsn';
        }

        $attrib['name']  = '_dsn';
        $attrib['value'] = '1';

        $checkbox = new html_checkbox($attrib);

        if (!empty($_POST['_dsn']) || !empty($this->options['dsn_enabled'])) {
            $dsn_value = 1;
        }
        else {
            $dsn_value = $this->rcmail->config->get('dsn_default');
        }

        $out = $form_start ? "$form_start\n" : '';
        $out .= $checkbox->show($dsn_value);
        $out .= $form_end ? "\n$form_end" : '';

        return $out;
    }

    /**
     * "Keep formatting" checkbox object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public function keep_formatting_checkbox($attrib)
    {
        list($form_start, $form_end) = $this->form_tags($attrib);
        unset($attrib['form']);

        if (empty($attrib['id'])) {
            $attrib['id'] = '_keepformatting';
        }

        $attrib['name']  = '_keepformatting';
        $attrib['value'] = '1';

        $checkbox = new html_checkbox($attrib);

        $out = $form_start ? "$form_start\n" : '';
        $out .= $checkbox->show();
        $out .= $form_end ? "\n$form_end" : '';

        return $out;
    }

    /**
     * Priority selector object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public function priority_selector($attrib)
    {
        list($form_start, $form_end) = $this->form_tags($attrib);
        unset($attrib['form']);

        $attrib['name'] = '_priority';
        $prio_list = [
            $this->rcmail->gettext('lowest')  => 5,
            $this->rcmail->gettext('low')     => 4,
            $this->rcmail->gettext('normal')  => 0,
            $this->rcmail->gettext('high')    => 2,
            $this->rcmail->gettext('highest') => 1,
        ];

        $selector = new html_select($attrib);
        $selector->add(array_keys($prio_list), array_values($prio_list));

        if (isset($_POST['_priority'])) {
            $sel = (int) $_POST['_priority'];
        }
        else if (isset($this->options['message']->headers->priority)
            && intval($this->options['message']->headers->priority) != 3
        ) {
            $sel = (int) $this->options['message']->headers->priority;
        }
        else {
            $sel = 0;
        }

        $out = $form_start ? "$form_start\n" : '';
        $out .= $selector->show((int) $sel);
        $out .= $form_end ? "\n$form_end" : '';

        return $out;
    }

    /**
     * Helper to create Sent folder if it does not exists
     *
     * @param string $folder Folder name to check
     * @param bool   $create Create if does not exist
     *
     * @return bool True if the folder exists, False otherwise
     */
    public static function check_sent_folder($folder, $create = false)
    {
        $rcmail = rcmail::get_instance();

        // we'll not save the message, so it doesn't matter
        if ($rcmail->config->get('no_save_sent_messages')) {
            return true;
        }

        if ($rcmail->storage->folder_exists($folder, true)) {
            return true;
        }

        // folder may exist but isn't subscribed (#1485241)
        if ($create) {
            if (!$rcmail->storage->folder_exists($folder)) {
                return $rcmail->storage->create_folder($folder, true);
            }
            else {
                return $rcmail->storage->subscribe($folder);
            }
        }

        return false;
    }

    /**
     * Initialize mail compose UI elements
     */
    protected function compose_init($message)
    {
        // get user's identities
        $this->data['identities'] = $this->rcmail->user->list_identities(null, true);

        // Set From field value
        if (!empty($_POST['_from'])) {
            $this->data['from'] = rcube_utils::get_input_string('_from', rcube_utils::INPUT_POST);
        }
        else if (!empty($this->data['param']['from'])) {
            $this->data['from'] = $this->data['param']['from'];
        }
        else if (!empty($this->data['identities'])) {
            $ident = self::identity_select($message, $this->data['identities'], $this->data['mode']);

            $this->data['from']  = $ident['identity_id'];
            $this->data['ident'] = $ident;
        }

        $this->rcmail->output->add_handlers([
                'storetarget'      => [$this, 'folder_selector'],
                'composeheaders'   => [$this, 'headers_output'],
                'composesubject'   => [$this, 'compose_subject'],
                'priorityselector' => [$this, 'priority_selector'],
                'mdncheckbox'      => [$this, 'mdn_checkbox'],
                'dsncheckbox'      => [$this, 'dsn_checkbox'],
                'keepformattingcheckbox' => [$this, 'keep_formatting_checkbox'],
                'composeformhead'  => [$this, 'form_head'],
        ]);

        // add some labels to client
        $this->rcmail->output->add_label('nosubject', 'nosenderwarning', 'norecipientwarning',
            'nosubjectwarning', 'cancel', 'nobodywarning', 'notsentwarning', 'savingmessage',
            'sendingmessage', 'searching', 'disclosedrecipwarning', 'disclosedreciptitle',
            'bccinstead', 'nosubjecttitle', 'sendmessage');

        $this->rcmail->output->set_env('max_disclosed_recipients', (int) $this->rcmail->config->get('max_disclosed_recipients', 5));
    }

    /**
     * Detect recipient identity from specified message
     *
     * @param rcube_message $message    Message object
     * @param array         $identities User identities (if NULL all user identities will be used)
     * @param string        $mode       Composing mode (see self::MODE_*)
     *
     * @return array Selected user identity (or the default identity) data
     */
    public static function identity_select($message, $identities = null, $mode = null)
    {
        $a_recipients = [];
        $a_names      = [];

        if ($identities === null) {
            $identities = rcmail::get_instance()->user->list_identities(null, true);
        }

        if (!$mode) {
            $mode = self::MODE_REPLY;
        }

        // extract all recipients of the reply-message
        if (!empty($message->headers)) {
            $charset = $message->headers->charset;

            if (in_array($mode, [self::MODE_REPLY, self::MODE_FORWARD])) {
                $a_to = rcube_mime::decode_address_list($message->headers->to, null, true, $charset);
                foreach ($a_to as $addr) {
                    if (!empty($addr['mailto'])) {
                        $a_recipients[] = strtolower($addr['mailto']);
                        $a_names[]      = $addr['name'];
                    }
                }

                if (!empty($message->headers->cc)) {
                    $a_cc = rcube_mime::decode_address_list($message->headers->cc, null, true, $charset);
                    foreach ($a_cc as $addr) {
                        if (!empty($addr['mailto'])) {
                            $a_recipients[] = strtolower($addr['mailto']);
                            $a_names[]      = $addr['name'];
                        }
                    }
                }
            }

            // decode From: address
            if (!empty($message->headers)) {
                $from = array_first(rcube_mime::decode_address_list($message->headers->from, null, true, $charset));
                $from['mailto'] = isset($from['mailto']) ? strtolower($from['mailto']) : '';
            }
        }

        if (empty($from)) {
            $from = ['mailto' => ''];
        }

        $from_idx   = null;
        $found_idx  = ['to' => null, 'from' => null];
        $check_from = in_array($mode, [self::MODE_DRAFT, self::MODE_EDIT, self::MODE_REPLY]);

        // Select identity
        foreach ($identities as $idx => $ident) {
            // use From: header when in edit/draft or reply-to-self
            if ($check_from && $from['mailto'] == strtolower($ident['email_ascii'])) {
                // remember first matching identity address
                if ($found_idx['from'] === null) {
                    $found_idx['from'] = $idx;
                }
                // match identity name
                if ($from['name'] && $ident['name'] && $from['name'] == $ident['name']) {
                    $from_idx = $idx;
                    break;
                }
            }

            // use replied/forwarded message recipients
            if (($found = array_search(strtolower($ident['email_ascii']), $a_recipients)) !== false) {
                // remember first matching identity address
                if ($found_idx['to'] === null) {
                    $found_idx['to'] = $idx;
                }
                // match identity name
                if ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name']) {
                    $from_idx = $idx;
                    break;
                }
            }
        }

        // If matching by name+address didn't find any matches,
        // get first found identity (address) if any
        if ($from_idx === null) {
            $from_idx = $found_idx['to'] !== null ? $found_idx['to'] : $found_idx['from'];
        }

        // Try Return-Path
        if ($from_idx === null && !empty($message->headers->others['return-path'])) {
            $return_path = $message->headers->others['return-path'];
            $return_path = array_map('strtolower', (array) $return_path);

            foreach ($identities as $idx => $ident) {
                // Return-Path header contains an email address, but on some mailing list
                // it can be e.g. <pear-dev-return-55250-local=domain.tld@lists.php.net>
                // where local@domain.tld is the address we're looking for (#1489241)
                $ident1 = strtolower($ident['email_ascii']);
                $ident2 = str_replace('@', '=', $ident1);
                $ident1 = '<' . $ident1 . '>';
                $ident2 = '-' . $ident2 . '@';

                foreach ($return_path as $path) {
                    if ($path == $ident1 || stripos($path, $ident2)) {
                        $from_idx = $idx;
                        break 2;
                    }
                }
            }
        }

        // See identity_select plugin for example usage of this hook
        $plugin = rcmail::get_instance()->plugins->exec_hook('identity_select', [
                'message'    => $message,
                'identities' => $identities,
                'selected'   => $from_idx
        ]);

        $selected = $plugin['selected'];

        // default identity is always first on the list
        if ($selected === null) {
            $selected = 0;
        }

        return $identities[$selected] ?? null;
    }

    /**
     * Collect message recipients' addresses
     *
     * @param Mail_Mime $message The email message
     */
    public static function collect_recipients($message)
    {
        $rcmail = rcube::get_instance();

        // Find the addressbook source
        $collected_recipients = $rcmail->config->get('collected_recipients');

        if (!strlen($collected_recipients)) {
            return;
        }

        $source = $rcmail->get_address_book($collected_recipients);

        if (!$source) {
            return;
        }

        $headers = $message->headers();

        // extract recipients
        $recipients = (array) $headers['To'];

        if (!empty($headers['Cc'])) {
            $recipients[] = $headers['Cc'];
        }

        if (!empty($headers['Bcc'])) {
            $recipients[] = $headers['Bcc'];
        }

        $addresses = rcube_mime::decode_address_list($recipients);
        $type      = rcube_addressbook::TYPE_DEFAULT | rcube_addressbook::TYPE_RECIPIENT;

        foreach ($addresses as $address) {
            $contact = [
                'name'  => $address['name'],
                'email' => $address['mailto'],
            ];

            if (!$rcmail->contact_exists($contact['email'], $type)) {
                $rcmail->contact_create($contact, $source);
            }
        }
    }
}
include/rcmail_output_cli.php000064400000004273151727150460012434 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | CONTENTS:                                                             |
 |   Abstract class for output generation                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for output generation
 *
 * @package    Webmail
 * @subpackage View
 */
class rcmail_output_cli extends rcmail_output
{
    public $type = 'cli';


    /**
     * Call a client method
     *
     * @see rcube_output::command()
     */
    function command($cmd, ...$args)
    {
        // NOP
    }

    /**
     * Add a localized label to the client environment
     *
     * @see rcube_output::add_label()
     */
    function add_label(...$args)
    {
        // NOP
    }

    /**
     * Invoke display_message command
     *
     * @see rcube_output::show_message()
     */
    function show_message($message, $type = 'notice', $vars = null, $override = true, $timeout = 0)
    {
        if ($this->app->text_exists($message)) {
            $message = $this->app->gettext(['name' => $message, 'vars' => $vars]);
        }

        printf("[%s] %s\n", strtoupper($type), $message);
    }

    /**
     * Redirect to a certain url.
     *
     * @see rcube_output::redirect()
     */
    function redirect($p = [], $delay = 1)
    {
        // NOP
    }

    /**
     * Send output to the client.
     */
    function send()
    {
        // NOP
    }
}
include/rcmail_output_html.php000064400000303260151727150470012630 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Class to handle HTML page output using a skin template.             |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to create HTML page output using a skin template
 *
 * @package    Webmail
 * @subpackage View
 */
class rcmail_output_html extends rcmail_output
{
    public $type = 'html';

    protected $message;
    protected $template_name;
    protected $objects      = [];
    protected $js_env       = [];
    protected $js_labels    = [];
    protected $js_commands  = [];
    protected $skin_paths   = [];
    protected $skin_name    = '';
    protected $scripts_path = '';
    protected $script_files = [];
    protected $css_files    = [];
    protected $scripts      = [];
    protected $meta_tags    = [];
    protected $link_tags    = ['shortcut icon' => ''];
    protected $header       = '';
    protected $footer       = '';
    protected $body         = '';
    protected $base_path    = '';
    protected $assets_path;
    protected $assets_dir   = RCUBE_INSTALL_PATH;
    protected $devel_mode   = false;
    protected $default_template = "<html>\n<head><meta name='generator' content='Roundcube'></head>\n<body></body>\n</html>";

    // deprecated names of templates used before 0.5
    protected $deprecated_templates = [
        'contact'      => 'showcontact',
        'contactadd'   => 'addcontact',
        'contactedit'  => 'editcontact',
        'identityedit' => 'editidentity',
        'messageprint' => 'printmessage',
    ];

    // deprecated names of template objects used before 1.4
    protected $deprecated_template_objects = [
        'addressframe'        => 'contentframe',
        'messagecontentframe' => 'contentframe',
        'prefsframe'          => 'contentframe',
        'folderframe'         => 'contentframe',
        'identityframe'       => 'contentframe',
        'responseframe'       => 'contentframe',
        'keyframe'            => 'contentframe',
        'filterframe'         => 'contentframe',
    ];

    /**
     * Constructor
     */
    public function __construct($task = null, $framed = false)
    {
        parent::__construct();

        $this->devel_mode = $this->config->get('devel_mode');

        $this->set_env('task', $task);
        $this->set_env('standard_windows', (bool) $this->config->get('standard_windows'));
        $this->set_env('locale', !empty($_SESSION['language']) ? $_SESSION['language'] : 'en_US');
        $this->set_env('devel_mode', $this->devel_mode);

        // Version number e.g. 1.4.2 will be 10402
        $version = explode('.', preg_replace('/[^0-9.].*/', '', RCMAIL_VERSION));
        $this->set_env('rcversion', $version[0] * 10000 + $version[1] * 100 + ($version[2] ?? 0));

        // add cookie info
        $this->set_env('cookie_domain', ini_get('session.cookie_domain'));
        $this->set_env('cookie_path', ini_get('session.cookie_path'));
        $this->set_env('cookie_secure', filter_var(ini_get('session.cookie_secure'), FILTER_VALIDATE_BOOLEAN));

        // Easy way to change skin via GET argument, for developers
        if ($this->devel_mode && !empty($_GET['skin']) && preg_match('/^[a-z0-9-_]+$/i', $_GET['skin'])) {
            if ($this->check_skin($_GET['skin'])) {
                $this->set_skin($_GET['skin']);
                $this->app->user->save_prefs(['skin' => $_GET['skin']]);
            }
        }

        // load and setup the skin
        $this->set_skin($this->config->get('skin'));
        $this->set_assets_path($this->config->get('assets_path'), $this->config->get('assets_dir'));

        if (!empty($_REQUEST['_extwin'])) {
            $this->set_env('extwin', 1);
        }

        if ($this->framed || $framed) {
            $this->set_env('framed', 1);
        }

        $lic = <<<EOF
/*
        @licstart  The following is the entire license notice for the 
        JavaScript code in this page.

        Copyright (C) The Roundcube Dev Team

        The JavaScript code in this page is free software: you can redistribute
        it and/or modify it under the terms of the GNU General Public License
        as published by the Free Software Foundation, either version 3 of
        the License, or (at your option) any later version.

        The code is distributed WITHOUT ANY WARRANTY; without even the implied
        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
        See the GNU GPL for more details.

        @licend  The above is the entire license notice
        for the JavaScript code in this page.
*/
EOF;
        // add common javascripts
        $this->add_script($lic, 'head_top');
        $this->add_script('var '.self::JS_OBJECT_NAME.' = new rcube_webmail();', 'head_top');

        // don't wait for page onload. Call init at the bottom of the page (delayed)
        $this->add_script(self::JS_OBJECT_NAME.'.init();', 'docready');

        $this->scripts_path = 'program/js/';
        $this->include_script('jquery.min.js');
        $this->include_script('common.js');
        $this->include_script('app.js');

        // register common UI objects
        $this->add_handlers([
                'loginform'       => [$this, 'login_form'],
                'preloader'       => [$this, 'preloader'],
                'username'        => [$this, 'current_username'],
                'message'         => [$this, 'message_container'],
                'charsetselector' => [$this, 'charset_selector'],
                'aboutcontent'    => [$this, 'about_content'],
        ]);

        // set blankpage (watermark) url
        $blankpage = $this->config->get('blankpage_url', '/watermark.html');
        $this->set_env('blankpage', $blankpage);
    }

    /**
     * Set environment variable
     *
     * @param string $name    Property name
     * @param mixed  $value   Property value
     * @param bool   $addtojs True if this property should be added
     *                        to client environment
     */
    public function set_env($name, $value, $addtojs = true)
    {
        $this->env[$name] = $value;

        if ($addtojs || isset($this->js_env[$name])) {
            $this->js_env[$name] = $value;
        }
    }

    /**
     * Parse and set assets path
     *
     * @param string $path   Assets path URL (relative or absolute)
     * @param string $fs_dir Assets path in filesystem
     */
    public function set_assets_path($path, $fs_dir = null)
    {
        // set absolute path for assets if /index.php/foo/bar url is used
        if (empty($path) && !empty($_SERVER['PATH_INFO'])) {
            $path = preg_replace('/\?_task=[a-z]+/', '', $this->app->url([], true));
        }

        if (empty($path)) {
            return;
        }

        $path = rtrim($path, '/') . '/';

        // handle relative assets path
        if (!preg_match('|^https?://|', $path) && $path[0] != '/') {
            // save the path to search for asset files later
            $this->assets_dir = $path;

            $base = preg_replace('/[?#&].*$/', '', $_SERVER['REQUEST_URI']);
            $base = rtrim($base, '/');

            // remove url token if exists
            if ($len = intval($this->config->get('use_secure_urls'))) {
                $_base  = explode('/', $base);
                $last   = count($_base) - 1;
                $length = $len > 1 ? $len : 16; // as in rcube::get_secure_url_token()

                // we can't use real token here because it
                // does not exists in unauthenticated state,
                // hope this will not produce false-positive matches
                if ($last > -1 && preg_match('/^[a-f0-9]{' . $length . '}$/', $_base[$last])) {
                    $path = '../' . $path;
                }
            }
        }

        // set filesystem path for assets
        if ($fs_dir) {
            if ($fs_dir[0] != '/') {
                $fs_dir = realpath(RCUBE_INSTALL_PATH . $fs_dir);
            }
            // ensure the path ends with a slash
            $this->assets_dir = rtrim($fs_dir, '/') . '/';
        }

        $this->assets_path = $path;
        $this->set_env('assets_path', $path);
    }

    /**
     * Getter for the current page title
     *
     * @param bool $full Prepend title with product/user name
     *
     * @return string The page title
     */
    protected function get_pagetitle($full = true)
    {
        if (!empty($this->pagetitle)) {
            $title = $this->pagetitle;
        }
        else if (isset($this->env['task'])) {
            if ($this->env['task'] == 'login') {
                $title = $this->app->gettext([
                        'name' => 'welcome',
                        'vars' => ['product' => $this->config->get('product_name')]
                ]);
            }
            else {
                $title = ucfirst($this->env['task']);
            }
        }
        else {
            $title = '';
        }

        if ($full && $title) {
            if ($this->devel_mode && !empty($_SESSION['username'])) {
                $title = $_SESSION['username'] . ' :: ' . $title;
            }
            else if ($prod_name = $this->config->get('product_name')) {
                $title = $prod_name . ' :: ' . $title;
            }
        }

        return $title;
    }

    /**
     * Getter for the current skin path property
     */
    public function get_skin_path()
    {
        return $this->skin_paths[0];
    }

    /**
     * Set skin
     *
     * @param string $skin Skin name
     */
    public function set_skin($skin)
    {
        if (!$this->check_skin($skin)) {
            // If the skin does not exist (could be removed or invalid),
            // fallback to the skin set in the system configuration (#7271)
            $skin = $this->config->system_skin;
        }

        $skin_path = 'skins/' . $skin;

        $this->config->set('skin_path', $skin_path);
        $this->base_path = $skin_path;

        // register skin path(s)
        $this->skin_paths = [];
        $this->skins      = [];
        $this->load_skin($skin_path);

        $this->skin_name = $skin;
        $this->set_env('skin', $skin);
    }

    /**
     * Check skin validity/existence
     *
     * @param string $skin Skin name
     *
     * @return bool True if the skin exist and is readable, False otherwise
     */
    public function check_skin($skin)
    {
        // Sanity check to prevent from path traversal vulnerability (#1490620)
        if (!is_string($skin) || strpos($skin, '/') !== false || strpos($skin, "\\") !== false) {
            rcube::raise_error([
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                    'message' => 'Invalid skin name'
                ], true, false);

            return false;
        }

        $skins_allowed = $this->config->get('skins_allowed');

        if (!empty($skins_allowed) && !in_array($skin, (array) $skins_allowed)) {
            return false;
        }

        $path = RCUBE_INSTALL_PATH . 'skins/';

        return !empty($skin) && is_dir($path . $skin) && is_readable($path . $skin);
    }

    /**
     * Helper method to recursively read skin meta files and register search paths
     */
    private function load_skin($skin_path)
    {
        $this->skin_paths[] = $skin_path;

        // read meta file and check for dependencies
        $meta = @file_get_contents(RCUBE_INSTALL_PATH . $skin_path . '/meta.json');
        $meta = @json_decode($meta, true);

        $meta['path']  = $skin_path;
        $path_elements = explode('/', $skin_path);
        $skin_id       = end($path_elements);

        if (empty($meta['name'])) {
            $meta['name'] = $skin_id;
        }

        $this->skins[$skin_id] = $meta;

        // Keep skin config for ajax requests (#6613)
        $_SESSION['skin_config'] = [];

        if (!empty($meta['extends'])) {
            $path = RCUBE_INSTALL_PATH . 'skins/';
            if (is_dir($path . $meta['extends']) && is_readable($path . $meta['extends'])) {
                $_SESSION['skin_config'] = $this->load_skin('skins/' . $meta['extends']);
            }
        }

        if (!empty($meta['config'])) {
            foreach ($meta['config'] as $key => $value) {
                $this->config->set($key, $value, true);
                $_SESSION['skin_config'][$key] = $value;
            }

            $value = array_merge((array) $this->config->get('dont_override'), array_keys($meta['config']));
            $this->config->set('dont_override', $value, true);
        }

        if (!empty($meta['localization'])) {
            $locdir = $meta['localization'] === true ? 'localization' : $meta['localization'];
            if ($texts = $this->app->read_localization(RCUBE_INSTALL_PATH . $skin_path . '/' . $locdir)) {
                $this->app->load_language($_SESSION['language'], $texts);
            }
        }

        // Use array_merge() here to allow for global default and extended skins
        if (!empty($meta['meta'])) {
            $this->meta_tags = array_merge($this->meta_tags, (array) $meta['meta']);
        }
        if (!empty($meta['links'])) {
            $this->link_tags = array_merge($this->link_tags, (array) $meta['links']);
        }

        $this->set_env('dark_mode_support', (bool) $this->config->get('dark_mode_support'));

        return $_SESSION['skin_config'];
    }

    /**
     * Check if a specific template exists
     *
     * @param string $name Template name
     *
     * @return bool True if template exists, False otherwise
     */
    public function template_exists($name)
    {
        foreach ($this->skin_paths as $skin_path) {
            $filename = RCUBE_INSTALL_PATH . $skin_path . '/templates/' . $name . '.html';
            if (
                (is_file($filename) && is_readable($filename))
                || (!empty($this->deprecated_templates[$name]) && $this->template_exists($this->deprecated_templates[$name]))
            ) {
                return true;
            }
        }

        return false;
    }

    /**
     * Find the given file in the current skin path stack
     *
     * @param string $file       File name/path to resolve (starting with /)
     * @param string &$skin_path Reference to the base path of the matching skin
     * @param string $add_path   Additional path to search in
     * @param bool   $minified   Fallback to a minified version of the file
     *
     * @return string|false Relative path to the requested file or False if not found
     */
    public function get_skin_file($file, &$skin_path = null, $add_path = null, $minified = false)
    {
        $skin_paths = $this->skin_paths;

        if ($add_path) {
            array_unshift($skin_paths, $add_path);
            $skin_paths = array_unique($skin_paths);
        }

        if ($file[0] != '/') {
            $file = '/' . $file;
        }

        if ($skin_path = $this->find_file_path($file, $skin_paths)) {
            return $skin_path . $file;
        }

        if ($minified && preg_match('/(?<!\.min)\.(js|css)$/', $file)) {
            $file = preg_replace('/\.(js|css)$/', '.min.\\1', $file);

            if ($skin_path = $this->find_file_path($file, $skin_paths)) {
                return $skin_path . $file;
            }
        }

        return false;
    }

    /**
     * Find path of the asset file
     */
    protected function find_file_path($file, $skin_paths)
    {
        foreach ($skin_paths as $skin_path) {
            if ($this->assets_dir != RCUBE_INSTALL_PATH) {
                if (realpath($this->assets_dir . $skin_path . $file)) {
                    return $skin_path;
                }
            }

            if (realpath(RCUBE_INSTALL_PATH . $skin_path . $file)) {
                return $skin_path;
            }
        }
    }

    /**
     * Register a GUI object to the client script
     *
     * @param string $obj Object name
     * @param string $id  Object ID
     */
    public function add_gui_object($obj, $id)
    {
        $this->add_script(self::JS_OBJECT_NAME.".gui_object('$obj', '$id');");
    }

    /**
     * Call a client method
     *
     * @param string $cmd    Method to call
     * @param mixed ...$args Method arguments
     */
    public function command($cmd, ...$args)
    {
        if (strpos($cmd, 'plugin.') !== false) {
            $this->js_commands[] = ['triggerEvent', $cmd, $args[0]];
        }
        else {
            array_unshift($args, $cmd);

            $this->js_commands[] = $args;
        }
    }

    /**
     * Add a localized label to the client environment
     *
     * @param mixed ...$args Labels (an array of strings, or many string arguments)
     */
    public function add_label(...$args)
    {
        if (count($args) == 1 && is_array($args[0])) {
            $args = $args[0];
        }

        foreach ($args as $name) {
            $this->js_labels[$name] = $this->app->gettext($name);
        }
    }

    /**
     * Invoke display_message command
     *
     * @param string  $message  Message to display
     * @param string  $type     Message type [notice|confirm|error]
     * @param array   $vars     Key-value pairs to be replaced in localized text
     * @param bool    $override Override last set message
     * @param int     $timeout  Message display time in seconds
     *
     * @uses self::command()
     */
    public function show_message($message, $type = 'notice', $vars = null, $override = true, $timeout = 0)
    {
        if ($override || !$this->message) {
            if ($this->app->text_exists($message)) {
                if (!empty($vars)) {
                    $vars = array_map(['rcube','Q'], $vars);
                }

                $msgtext = $this->app->gettext(['name' => $message, 'vars' => $vars]);
            }
            else {
                $msgtext = $message;
            }

            $this->message = $message;
            $this->command('display_message', $msgtext, $type, $timeout * 1000);
        }
    }

    /**
     * Delete all stored env variables and commands
     *
     * @param bool $all Reset all env variables (including internal)
     */
    public function reset($all = false)
    {
        $framed = $this->framed;
        $task   = $this->env['task'] ?? '';
        $env    = $all ? null : array_intersect_key($this->env, ['extwin' => 1, 'framed' => 1]);

        // keep jQuery-UI files
        $css_files = $script_files = [];

        foreach ($this->css_files as $file) {
            if (strpos($file, 'plugins/jqueryui') === 0) {
                $css_files[] = $file;
            }
        }

        foreach ($this->script_files as $position => $files) {
            foreach ($files as $file) {
                if (strpos($file, 'plugins/jqueryui') === 0) {
                    $script_files[$position][] = $file;
                }
            }
        }

        parent::reset();

        // let some env variables survive
        $this->env          = $this->js_env = $env;
        $this->framed       = $framed || !empty($this->env['framed']);
        $this->js_labels    = [];
        $this->js_commands  = [];
        $this->scripts      = [];
        $this->header       = '';
        $this->footer       = '';
        $this->body         = '';
        $this->css_files    = [];
        $this->script_files = [];

        // load defaults
        if (!$all) {
            $this->__construct();
        }

        // Note: we merge jQuery-UI scripts after jQuery...
        $this->css_files    = array_merge($this->css_files, $css_files);
        $this->script_files = array_merge_recursive($this->script_files, $script_files);

        $this->set_env('orig_task', $task);
    }

    /**
     * Redirect to a certain url
     *
     * @param mixed $p      Either a string with the action or url parameters as key-value pairs
     * @param int   $delay  Delay in seconds
     * @param bool  $secure Redirect to secure location (see rcmail::url())
     */
    public function redirect($p = [], $delay = 1, $secure = false)
    {
        if (!empty($this->env['extwin']) && !(is_string($p) && preg_match('#^https?://#', $p))) {
            if (!is_array($p)) {
                $p = ['_action' => $p];
            }

            $p['_extwin'] = 1;
        }

        $location = $this->app->url($p, false, false, $secure);
        $this->header('Location: ' . $location);
        exit;
    }

    /**
     * Send the request output to the client.
     * This will either parse a skin template.
     *
     * @param string $templ Template name
     * @param bool   $exit  True if script should terminate (default)
     */
    public function send($templ = null, $exit = true)
    {
        if ($templ != 'iframe') {
            // prevent from endless loops
            if ($exit != 'recur' && $this->app->plugins->is_processing('render_page')) {
                rcube::raise_error([
                        'code'    => 505,
                        'file'    => __FILE__,
                        'line'    => __LINE__,
                        'message' => 'Recursion alert: ignoring output->send()'
                    ], true, false
                );

                return;
            }

            $this->parse($templ, false);
        }
        else {
            $this->framed = true;
            $this->write();
        }

        // set output asap
        ob_flush();
        flush();

        if ($exit) {
            exit;
        }
    }

    /**
     * Process template and write to stdOut
     *
     * @param string $template HTML template content
     */
    public function write($template = '')
    {
        if (!empty($this->script_files)) {
            $this->set_env('request_token', $this->app->get_request_token());
        }

        // Fix assets path on blankpage
        if (!empty($this->js_env['blankpage'])) {
            $this->js_env['blankpage'] = $this->asset_url($this->js_env['blankpage'], true);
        }

        $commands = $this->get_js_commands($framed);

        // if all js commands go to parent window we can ignore all
        // script files and skip rcube_webmail initialization (#1489792)
        // but not on error pages where skins may need jQuery, etc.
        if ($framed && empty($this->js_env['server_error'])) {
            $this->scripts      = [];
            $this->script_files = [];
            $this->header       = '';
            $this->footer       = '';
        }

        // write all javascript commands
        if (!empty($commands)) {
            $this->add_script($commands, 'head_top');
        }

        $this->page_headers();

        // call super method
        $this->_write($template);
    }

    /**
     * Send common page headers
     * For now it only (re)sets X-Frame-Options when needed
     */
    public function page_headers()
    {
        if (headers_sent()) {
            return;
        }

        // allow (legal) iframe content to be loaded
        $framed = $this->framed || !empty($this->env['framed']);
        if ($framed && ($xopt = $this->app->config->get('x_frame_options', 'sameorigin'))) {
            if (strtolower($xopt) === 'deny') {
                $this->header('X-Frame-Options: sameorigin', true);
            }
        }
    }

    /**
     * Parse a specific skin template and deliver to stdout (or return)
     *
     * @param string $name  Template name
     * @param bool   $exit  Exit script
     * @param bool   $write Don't write to stdout, return parsed content instead
     *
     * @link http://php.net/manual/en/function.exit.php
     */
    function parse($name = 'main', $exit = true, $write = true)
    {
        $plugin   = false;
        $realname = $name;
        $skin_dir = '';
        $plugin_skin_paths = [];

        $this->template_name = $realname;

        $temp = explode('.', $name, 2);
        if (count($temp) > 1) {
            $plugin   = $temp[0];
            $name     = $temp[1];
            $skin_dir = $plugin . '/skins/' . $this->config->get('skin');

            // apply skin search escalation list to plugin directory
            foreach ($this->skin_paths as $skin_path) {
                // skin folder in plugin dir
                $plugin_skin_paths[] = $this->app->plugins->url . $plugin . '/' . $skin_path;
                // plugin folder in skin dir
                $plugin_skin_paths[] = $skin_path . '/plugins/' . $plugin;
            }

            // prepend plugin skin paths to search list
            $this->skin_paths = array_merge($plugin_skin_paths, $this->skin_paths);
        }

        // find skin template
        $path = false;
        foreach ($this->skin_paths as $skin_path) {
            // when requesting a plugin template ignore global skin path(s)
            if ($plugin && strpos($skin_path, $this->app->plugins->url) === false) {
                continue;
            }

            $path = RCUBE_INSTALL_PATH . "$skin_path/templates/$name.html";

            // fallback to deprecated template names
            if (!is_readable($path) && !empty($this->deprecated_templates[$realname])) {
                $dname = $this->deprecated_templates[$realname];
                $path  = RCUBE_INSTALL_PATH . "$skin_path/templates/$dname.html";

                if (is_readable($path)) {
                    rcube::raise_error([
                            'code' => 502, 'file' => __FILE__, 'line' => __LINE__,
                            'message' => "Using deprecated template '$dname' in $skin_path/templates. Please rename to '$realname'"
                        ], true, false
                    );
                }
            }

            if (is_readable($path)) {
                $this->config->set('skin_path', $skin_path);
                // set base_path to core skin directory (not plugin's skin)
                $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path);
                $skin_dir        = preg_replace('!^plugins/!', '', $skin_path);
                break;
            }
            else {
                $path = false;
            }
        }

        // read template file
        if (!$path || ($templ = @file_get_contents($path)) === false) {
            rcube::raise_error([
                    'code' => 404,
                    'line' => __LINE__,
                    'file' => __FILE__,
                    'message' => 'Error loading template for '.$realname
                ], true, $write);

            $this->skin_paths = array_slice($this->skin_paths, count($plugin_skin_paths));
            return false;
        }

        // replace all path references to plugins/... with the configured plugins dir
        // and /this/ to the current plugin skin directory
        if ($plugin) {
            $templ = preg_replace(
                ['/\bplugins\//', '/(["\']?)\/this\//'],
                [$this->app->plugins->url, '\\1' . $this->app->plugins->url . $skin_dir . '/'],
                $templ
            );
        }

        // parse for special tags
        $output = $this->parse_conditions($templ);
        $output = $this->parse_xml($output);

        // trigger generic hook where plugins can put additional content to the page
        $hook = $this->app->plugins->exec_hook("render_page", [
                'template' => $realname,
                'content'  => $output,
                'write'    => $write
        ]);

        // save some memory
        $output = $hook['content'];
        unset($hook['content']);

        // remove plugin skin paths from current context
        $this->skin_paths = array_slice($this->skin_paths, count($plugin_skin_paths));

        if (!$write) {
            return $this->postrender($output);
        }

        $this->write(trim($output));

        if ($exit) {
            exit;
        }
    }

    /**
     * Return executable javascript code for all registered commands
     */
    protected function get_js_commands(&$framed = null)
    {
        $out             = '';
        $parent_commands = 0;
        $parent_prefix   = '';
        $top_commands    = [];

        // these should be always on top,
        // e.g. hide_message() below depends on env.framed
        if (!$this->framed && !empty($this->js_env)) {
            $top_commands[] = ['set_env', $this->js_env];
        }
        if (!empty($this->js_labels)) {
            $top_commands[] = ['add_label', $this->js_labels];
        }

        // unlock interface after iframe load
        $unlock = isset($_REQUEST['_unlock']) ? preg_replace('/[^a-z0-9]/i', '', $_REQUEST['_unlock']) : 0;
        if ($this->framed) {
            $top_commands[] = ['iframe_loaded', $unlock];
        }
        else if ($unlock) {
            $top_commands[] = ['hide_message', $unlock];
        }

        $commands = array_merge($top_commands, $this->js_commands);

        foreach ($commands as $i => $args) {
            $method = array_shift($args);
            $parent = $this->framed || preg_match('/^parent\./', $method);

            foreach ($args as $i => $arg) {
                $args[$i] = self::json_serialize($arg, $this->devel_mode);
            }

            if ($parent) {
                $parent_commands++;
                $method        = preg_replace('/^parent\./', '', $method);
                $parent_prefix = 'if (window.parent && parent.' . self::JS_OBJECT_NAME . ') parent.';
                $method        = $parent_prefix . self::JS_OBJECT_NAME . '.' . $method;
            }
            else {
                $method = self::JS_OBJECT_NAME . '.' . $method;
            }

            $out .= sprintf("%s(%s);\n", $method, implode(',', $args));
        }

        $framed = $parent_prefix && $parent_commands == count($commands);

        // make the output more compact if all commands go to parent window
        if ($framed) {
            $out = "if (window.parent && parent." . self::JS_OBJECT_NAME . ") {\n"
                . str_replace($parent_prefix, "\tparent.", $out)
                . "}\n";
        }

        return $out;
    }

    /**
     * Make URLs starting with a slash point to skin directory
     *
     * @param string $str         Input string
     * @param bool   $search_path True if URL should be resolved using the current skin path stack
     *
     * @return string URL
     */
    public function abs_url($str, $search_path = false)
    {
        if (isset($str[0]) && $str[0] == '/') {
            if ($search_path && ($file_url = $this->get_skin_file($str))) {
                return $file_url;
            }

            return $this->base_path . $str;
        }

        return $str;
    }

    /**
     * Show error page and terminate script execution
     *
     * @param int    $code    Error code
     * @param string $message Error message
     */
    public function raise_error($code, $message)
    {
        $args = [
            'code'    => $code,
            'message' => $message,
        ];

        $page = new rcmail_action_utils_error;
        $page->run($args);
    }

    /**
     * Modify path by adding URL prefix if configured
     *
     * @param string $path    Asset path
     * @param bool   $abs_url Pass to self::abs_url() first
     *
     * @return string Asset path
     */
    public function asset_url($path, $abs_url = false)
    {
        // iframe content can't be in a different domain
        // @TODO: check if assets are on a different domain

        if ($abs_url) {
            $path = $this->abs_url($path, true);
        }

        if (!$this->assets_path || in_array($path[0], ['?', '/', '.']) || strpos($path, '://')) {
            return $path;
        }

        return $this->assets_path . $path;
    }


    /*****  Template parsing methods  *****/

    /**
     * Replace all strings ($varname)
     * with the content of the according global variable.
     */
    protected function parse_with_globals($input)
    {
        $GLOBALS['__version']   = html::quote(RCMAIL_VERSION);
        $GLOBALS['__comm_path'] = html::quote($this->app->comm_path);
        $GLOBALS['__skin_path'] = html::quote($this->base_path);

        return preg_replace_callback('/\$(__[a-z0-9_\-]+)/', [$this, 'globals_callback'], $input);
    }

    /**
     * Callback function for preg_replace_callback() in parse_with_globals()
     */
    protected function globals_callback($matches)
    {
        return $GLOBALS[$matches[1]];
    }

    /**
     * Correct absolute paths in images and other tags (add cache busters)
     */
    protected function fix_paths($output)
    {
        $regexp = '!(src|href|background|data-src-[a-z]+)=(["\']?)([a-z0-9/_.-]+)(["\'\s>])!i';

        return preg_replace_callback($regexp, [$this, 'file_callback'], $output);
    }

    /**
     * Callback function for preg_replace_callback in fix_paths()
     *
     * @return string Parsed string
     */
    protected function file_callback($matches)
    {
        $file = $matches[3];
        $file = preg_replace('!^/this/!', '/', $file);

        // correct absolute paths
        if ($file[0] == '/') {
            $this->get_skin_file($file, $skin_path, $this->base_path);
            $file = ($skin_path ?: $this->base_path) . $file;
        }

        // add file modification timestamp
        if (preg_match('/\.(js|css|less|ico|png|svg|jpeg)$/', $file)) {
            $file = $this->file_mod($file);
        }

        return $matches[1] . '=' . $matches[2] . $file . $matches[4];
    }

    /**
     * Correct paths of asset files according to assets_path
     */
    protected function fix_assets_paths($output)
    {
        $regexp = '!(src|href|background)=(["\']?)([a-z0-9/_.?=-]+)(["\'\s>])!i';

        return preg_replace_callback($regexp, [$this, 'assets_callback'], $output);
    }

    /**
     * Callback function for preg_replace_callback in fix_assets_paths()
     *
     * @return string Parsed string
     */
    protected function assets_callback($matches)
    {
        $file = $this->asset_url($matches[3]);

        return $matches[1] . '=' . $matches[2] . $file . $matches[4];
    }

    /**
     * Modify file by adding mtime indicator
     */
    protected function file_mod($file)
    {
        $fs  = false;
        $ext = substr($file, strrpos($file, '.') + 1);

        // use minified file if exists (not in development mode)
        if (!$this->devel_mode && !preg_match('/\.min\.' . $ext . '$/', $file)) {
            $minified_file = substr($file, 0, strlen($ext) * -1) . 'min.' . $ext;
            if ($fs = @filemtime($this->assets_dir . $minified_file)) {
                return $minified_file . '?s=' . $fs;
            }
        }

        if ($fs = @filemtime($this->assets_dir . $file)) {
            $file .= '?s=' . $fs;
        }

        return $file;
    }

    /**
     * Public wrapper to dip into template parsing.
     *
     * @param string $input Template content
     *
     * @return string
     * @uses   rcmail_output_html::parse_xml()
     * @since  0.1-rc1
     */
    public function just_parse($input)
    {
        $input = $this->parse_conditions($input);
        $input = $this->parse_xml($input);
        $input = $this->postrender($input);

        return $input;
    }

    /**
     * Parse for conditional tags
     */
    protected function parse_conditions($input)
    {
        $regexp1 = '/<roundcube:if\s+([^>]+)>/is';
        $regexp2 = '/<roundcube:(if|elseif|else|endif)\s*([^>]*)>/is';

        $pos = 0;

        // Find IF tags and process them
        while ($pos < strlen($input) && preg_match($regexp1, $input, $conditions, PREG_OFFSET_CAPTURE, $pos)) {
            $pos = $start = $conditions[0][1];

            // Process the 'condition' attribute
            $attrib  = html::parse_attrib_string($conditions[1][0]);
            $condmet = isset($attrib['condition']) && $this->check_condition($attrib['condition']);

            // Define start/end position of the content to pass into the output
            $content_start = $condmet ? $pos + strlen($conditions[0][0]) : null;
            $content_end   = null;

            $level = 0;
            $endif = null;
            $n = $pos + 1;

            // Process the code until the closing tag (for the processed IF tag)
            while (preg_match($regexp2, $input, $matches, PREG_OFFSET_CAPTURE, $n)) {
                $tag_start = $matches[0][1];
                $tag_end   = $tag_start + strlen($matches[0][0]);
                $tag_name  = strtolower($matches[1][0]);

                switch ($tag_name) {
                case 'if':
                    $level++;
                    break;

                case 'endif':
                    if (!$level--) {
                        $endif = $tag_end;
                        if ($content_end === null) {
                            $content_end = $tag_start;
                        }
                        break 2;
                    }
                    break;

                case 'elseif':
                    if (!$level) {
                        if ($condmet) {
                            if ($content_end === null) {
                                $content_end = $tag_start;
                            }
                        }
                        else {
                            // Process the 'condition' attribute
                            $attrib  = html::parse_attrib_string($matches[2][0]);
                            $condmet = isset($attrib['condition']) && $this->check_condition($attrib['condition']);

                            if ($condmet) {
                                $content_start = $tag_end;
                            }
                        }
                    }
                    break;

                case 'else':
                    if (!$level) {
                        if ($condmet) {
                            if ($content_end === null) {
                                $content_end = $tag_start;
                            }
                        }
                        else {
                            $content_start = $tag_end;
                        }
                    }
                    break;
                }

                $n = $tag_end;
            }

            // No ending tag found
            if ($endif === null) {
                $pos = strlen($input);
                if ($content_end === null) {
                    $content_end = $pos;
                }
            }

            if ($content_start === null) {
                $content = '';
            }
            else {
                $content = substr($input, $content_start, $content_end - $content_start);
            }

            // Replace the whole IF statement with the output content
            $input = substr_replace($input, $content, $start, max($endif, $content_end, $pos) - $start);
            $pos   = $start;
        }

        return $input;
    }

    /**
     * Determines if a given condition is met
     *
     * @param string $condition Condition statement
     *
     * @return bool True if condition is met, False if not
     * @todo Extend this to allow real conditions, not just "set"
     */
    protected function check_condition($condition)
    {
        return $this->eval_expression($condition);
    }

    /**
     * Inserts hidden field with CSRF-prevention-token into POST forms
     */
    protected function alter_form_tag($matches)
    {
        $out    = $matches[0];
        $attrib = html::parse_attrib_string($matches[1]);

        if (!empty($attrib['method']) && strtolower($attrib['method']) == 'post') {
            $hidden = new html_hiddenfield(['name' => '_token', 'value' => $this->app->get_request_token()]);
            $out .= "\n" . $hidden->show();
        }

        return $out;
    }

    /**
     * Parse & evaluate a given expression and return its result.
     *
     * @param string $expression Expression statement
     *
     * @return mixed Expression result
     */
    protected function eval_expression($expression)
    {
        $expression = preg_replace(
            [
                '/session:([a-z0-9_]+)/i',
                '/config:([a-z0-9_]+)(:([a-z0-9_]+))?/i',
                '/env:([a-z0-9_]+)/i',
                '/request:([a-z0-9_]+)/i',
                '/cookie:([a-z0-9_]+)/i',
                '/browser:([a-z0-9_]+)/i',
                '/template:name/i',
            ],
            [
                "(\$_SESSION['\\1'] ?? null)",
                "\$this->app->config->get('\\1',rcube_utils::get_boolean('\\3'))",
                "(\$this->env['\\1'] ?? null)",
                "rcube_utils::get_input_value('\\1', rcube_utils::INPUT_GPC)",
                "(\$_COOKIE['\\1'] ?? null)",
                "(\$this->browser->{'\\1'} ?? null)",
                "'{$this->template_name}'",
            ],
            $expression
        );

        // Note: We used create_function() before but it's deprecated in PHP 7.2
        //       and really it was just a wrapper on eval().
        return eval("return ($expression);");
    }

    /**
     * Parse variable strings
     *
     * @param string $type Variable type (env, config etc)
     * @param string $name Variable name
     *
     * @return mixed Variable value
     */
    protected function parse_variable($type, $name)
    {
        $value = '';

        switch ($type) {
            case 'env':
                $value = $this->env[$name] ?? null;
                break;
            case 'config':
                $value = $this->config->get($name);
                if (is_array($value) && !empty($value[$_SESSION['storage_host']])) {
                    $value = $value[$_SESSION['storage_host']];
                }
                break;
            case 'request':
                $value = rcube_utils::get_input_value($name, rcube_utils::INPUT_GPC);
                break;
            case 'session':
                $value = $_SESSION[$name] ?? '';
                break;
            case 'cookie':
                $value = htmlspecialchars($_COOKIE[$name], ENT_COMPAT | ENT_HTML401, RCUBE_CHARSET);
                break;
            case 'browser':
                $value = $this->browser->{$name} ?? '';
                break;
        }

        return $value;
    }

    /**
     * Search for special tags in input and replace them
     * with the appropriate content
     *
     * @param string $input Input string to parse
     *
     * @return string Altered input string
     * @todo   Use DOM-parser to traverse template HTML
     * @todo   Maybe a cache.
     */
    protected function parse_xml($input)
    {
        $regexp = '/<roundcube:([-_a-z]+)\s+((?:[^>]|\\\\>)+)(?<!\\\\)>/Ui';

        return preg_replace_callback($regexp, [$this, 'xml_command'], $input);
    }

    /**
     * Callback function for parsing an xml command tag
     * and turn it into real html content
     *
     * @param array $matches Matches array of preg_replace_callback
     *
     * @return string Tag/Object content
     */
    protected function xml_command($matches)
    {
        $command = strtolower($matches[1]);
        $attrib  = html::parse_attrib_string($matches[2]);

        // empty output if required condition is not met
        if (!empty($attrib['condition']) && !$this->check_condition($attrib['condition'])) {
            return '';
        }

        // localize title and summary attributes
        if ($command != 'button' && !empty($attrib['title']) && $this->app->text_exists($attrib['title'])) {
            $attrib['title'] = $this->app->gettext($attrib['title']);
        }
        if ($command != 'button' && !empty($attrib['summary']) && $this->app->text_exists($attrib['summary'])) {
            $attrib['summary'] = $this->app->gettext($attrib['summary']);
        }

        // execute command
        switch ($command) {
            // return a button
            case 'button':
                if (!empty($attrib['name']) || !empty($attrib['command'])) {
                    return $this->button($attrib);
                }
                break;

            // frame
            case 'frame':
                return $this->frame($attrib);
                break;

            // show a label
            case 'label':
                if (!empty($attrib['expression'])) {
                    $attrib['name'] = $this->eval_expression($attrib['expression']);
                }

                if (!empty($attrib['name']) || !empty($attrib['command'])) {
                    $vars = $attrib + ['product' => $this->config->get('product_name')];
                    unset($vars['name'], $vars['command']);

                    $label   = $this->app->gettext($attrib + ['vars' => $vars]);
                    $quoting = null;

                    if (!empty($attrib['quoting'])) {
                        $quoting = strtolower($attrib['quoting']);
                    }
                    else if (isset($attrib['html'])) {
                        $quoting = rcube_utils::get_boolean((string) $attrib['html']) ? 'no' : '';
                    }

                    // 'noshow' can be used in skins to define new labels
                    if (!empty($attrib['noshow'])) {
                        return '';
                    }

                    switch ($quoting) {
                        case 'no':
                        case 'raw':
                            break;
                        case 'javascript':
                        case 'js':
                            $label = rcube::JQ($label);
                            break;
                        default:
                            $label = html::quote($label);
                            break;
                    }

                    return $label;
                }
                break;

            case 'add_label':
                $this->add_label($attrib['name']);
                break;

            // include a file
            case 'include':
                if (!empty($attrib['condition']) && !$this->check_condition($attrib['condition'])) {
                    break;
                }

                if ($attrib['file'][0] != '/') {
                    $attrib['file'] = '/templates/' . $attrib['file'];
                }

                $old_base_path   = $this->base_path;
                $include         = '';
                $attr_skin_path = !empty($attrib['skinpath']) ? $attrib['skinpath'] : null;

                if (!empty($attrib['skin_path'])) {
                    $attr_skin_path = $attrib['skin_path'];
                }

                if ($path = $this->get_skin_file($attrib['file'], $skin_path, $attr_skin_path)) {
                    // set base_path to core skin directory (not plugin's skin)
                    $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path);
                    $path = realpath(RCUBE_INSTALL_PATH . $path);
                }

                if (is_readable($path)) {
                    $allow_php = $this->config->get('skin_include_php');
                    $include   = $allow_php ? $this->include_php($path) : file_get_contents($path);
                    $include   = $this->parse_conditions($include);
                    $include   = $this->parse_xml($include);
                    $include   = $this->fix_paths($include);
                }

                $this->base_path = $old_base_path;

                return $include;

            case 'plugin.include':
                $hook = $this->app->plugins->exec_hook("template_plugin_include", $attrib + ['content' => '']);
                return $hook['content'];

            // define a container block
            case 'container':
                if (!empty($attrib['name']) && !empty($attrib['id'])) {
                    $this->command('gui_container', $attrib['name'], $attrib['id']);
                    // let plugins insert some content here
                    $hook = $this->app->plugins->exec_hook("template_container", $attrib + ['content' => '']);
                    return $hook['content'];
                }
                break;

            // return code for a specific application object
            case 'object':
                $object  = strtolower($attrib['name']);
                $content = '';
                $handler = null;

                // correct deprecated object names
                if (!empty($this->deprecated_template_objects[$object])) {
                    $object = $this->deprecated_template_objects[$object];
                }

                if (!empty($this->object_handlers[$object])) {
                    $handler = $this->object_handlers[$object];
                }

                // execute object handler function
                if (is_callable($handler)) {
                    $this->prepare_object_attribs($attrib);

                    // We assume that objects with src attribute are internal (in most
                    // cases this is a watermark frame). We need this to make sure assets_path
                    // is added to the internal assets paths
                    $external = empty($attrib['src']);
                    $content  = call_user_func($handler, $attrib);
                }
                else if ($object == 'doctype') {
                    $content = html::doctype($attrib['value']);
                }
                else if ($object == 'logo') {
                    $attrib += ['alt' => $this->xml_command(['', 'object', 'name="productname"'])];

                    // 'type' attribute added in 1.4 was renamed 'logo-type' in 1.5
                    // check both for backwards compatibility
                    $logo_type  = !empty($attrib['logo-type']) ? $attrib['logo-type'] : null;
                    $logo_match = !empty($attrib['logo-match']) ? $attrib['logo-match'] : null;
                    if (!empty($attrib['type']) && empty($logo_type)) {
                        $logo_type = $attrib['type'];
                    }

                    if (($template_logo = $this->get_template_logo($logo_type, $logo_match)) !== null) {
                        $attrib['src'] = $template_logo;
                    }

                    if (($link = $this->get_template_logo('link')) !== null) {
                        $attrib['onclick'] = "location.href='$link';";
                        $attrib['style'] = 'cursor:pointer;';
                    }

                    $additional_logos = [];
                    $logo_types       = (array) $this->config->get('additional_logo_types');

                    foreach ($logo_types as $type) {
                        if (($template_logo = $this->get_template_logo($type)) !== null) {
                            $additional_logos[$type] = $this->abs_url($template_logo);
                        }
                        else if (!empty($attrib['data-src-' . $type])) {
                            $additional_logos[$type] = $this->abs_url($attrib['data-src-' . $type]);
                        }
                    }

                    if (!empty($additional_logos)) {
                        $this->set_env('additional_logos', $additional_logos);
                    }

                    if (!empty($attrib['src'])) {
                        $content = html::img($attrib);
                    }
                }
                else if ($object == 'productname') {
                    $name    = $this->config->get('product_name', 'Roundcube Webmail');
                    $content = html::quote($name);
                }
                else if ($object == 'version') {
                    $ver = (string) RCMAIL_VERSION;
                    if (is_file(RCUBE_INSTALL_PATH . '.svn/entries')) {
                        if (preg_match('/Revision:\s(\d+)/', (string) @shell_exec('svn info'), $regs))
                          $ver .= ' [SVN r'.$regs[1].']';
                    }
                    else if (is_file(RCUBE_INSTALL_PATH . '.git/index')) {
                        if (preg_match('/Date:\s+([^\n]+)/', (string) @shell_exec('git log -1'), $regs)) {
                            if ($date = date('Ymd.Hi', strtotime($regs[1]))) {
                                $ver .= ' [GIT '.$date.']';
                            }
                        }
                    }
                    $content = html::quote($ver);
                }
                else if ($object == 'steptitle') {
                    $content = html::quote($this->get_pagetitle(false));
                }
                else if ($object == 'pagetitle') {
                    // Deprecated, <title> will be added automatically
                    $content = html::quote($this->get_pagetitle());
                }
                else if ($object == 'contentframe') {
                    if (empty($attrib['id'])) {
                        $attrib['id'] = 'rcm' . $this->env['task'] . 'frame';
                    }

                    // parse variables
                    if (preg_match('/^(config|env):([a-z0-9_]+)$/i', $attrib['src'], $matches)) {
                        $attrib['src'] = $this->parse_variable($matches[1], $matches[2]);
                    }

                    $content = $this->frame($attrib, true);
                }
                else if ($object == 'meta' || $object == 'links') {
                    if ($object == 'meta') {
                        $source = 'meta_tags';
                        $tag    = 'meta';
                        $key    = 'name';
                        $param  = 'content';
                    }
                    else {
                        $source = 'link_tags';
                        $tag    = 'link';
                        $key    = 'rel';
                        $param  = 'href';
                    }

                    foreach ($this->$source as $name => $vars) {
                        // $vars can be in many forms:
                        // - string
                        // - ['key' => 'val']
                        // - [string, string]
                        // - [[], string]
                        // - [['key' => 'val'], ['key' => 'val']]
                        // normalise this for processing by checking for string array keys
                        $vars = is_array($vars) ? (count(array_filter(array_keys($vars), 'is_string')) > 0 ? [$vars] : $vars) : [$vars];

                        foreach ($vars as $args) {
                            // skip unset headers e.g. when extending a skin and removing a header defined in the parent
                            if ($args === false) {
                                continue;
                            }

                            $args = is_array($args) ? $args : [$param => $args];

                            // special handling for favicon
                            if ($object == 'links' && $name == 'shortcut icon' && empty($args[$param])) {
                                if ($href = $this->get_template_logo('favicon')) {
                                    $args[$param] = $href;
                                }
                                else if ($href = $this->config->get('favicon', '/images/favicon.ico')) {
                                    $args[$param] = $href;
                                }
                            }

                            $content .= html::tag($tag, [$key => $name, 'nl' => true] + $args);
                        }
                    }
                }

                // exec plugin hooks for this template object
                $hook = $this->app->plugins->exec_hook("template_object_$object", $attrib + ['content' => (string) $content]);

                if (strlen($hook['content']) && !empty($external)) {
                    $object_id                 = uniqid('TEMPLOBJECT:', true);
                    $this->objects[$object_id] = $hook['content'];
                    $hook['content']           = $object_id;
                }

                return $hook['content'];

            // return <link> element
            case 'link':
                if ($attrib['condition'] && !$this->check_condition($attrib['condition'])) {
                    break;
                }

                unset($attrib['condition']);

                return html::tag('link', $attrib);


            // return code for a specified eval expression
            case 'exp':
                return html::quote($this->eval_expression($attrib['expression']));

            // return variable
            case 'var':
                $var = explode(':', $attrib['name']);
                $value = $this->parse_variable($var[0], $var[1]);

                if (is_array($value)) {
                    $value = implode(', ', $value);
                }

                return html::quote($value);

            case 'form':
                return $this->form_tag($attrib);
        }

        return '';
    }

    /**
     * Prepares template object attributes
     *
     * @param array &$attribs Attributes
     */
    protected function prepare_object_attribs(&$attribs)
    {
        foreach ($attribs as $key => &$value) {
            if (strpos($key, 'data-label-') === 0) {
                // Localize data-label-* attributes
                $value = $this->app->gettext($value);
            }
            elseif ($key[0] == ':') {
                // Evaluate attributes with expressions and remove special character from attribute name
                $attribs[substr($key, 1)] = $this->eval_expression($value);
                unset($attribs[$key]);
            }
        }
    }

    /**
     * Include a specific file and return it's contents
     *
     * @param string $file File path
     *
     * @return string Contents of the processed file
     */
    protected function include_php($file)
    {
        ob_start();
        include $file;
        $out = ob_get_contents();
        ob_end_clean();

        return $out;
    }

    /**
     * Put objects' content back into template output
     */
    protected function postrender($output)
    {
        // insert objects' contents
        foreach ($this->objects as $key => $val) {
            $output = str_replace($key, (string) $val, $output, $count);
            if ($count) {
                $this->objects[$key] = null;
            }
        }

        // make sure all <form> tags have a valid request token
        $output = preg_replace_callback('/<form\s+([^>]+)>/Ui', [$this, 'alter_form_tag'], $output);

        return $output;
    }

    /**
     * Create and register a button
     *
     * @param array $attrib Named button attributes
     *
     * @return string HTML button
     * @todo   Remove all inline JS calls and use jQuery instead.
     * @todo   Remove all sprintf()'s - they are pretty, but also slow.
     */
    public function button($attrib)
    {
        static $s_button_count = 100;

        // these commands can be called directly via url
        $a_static_commands = ['compose', 'list', 'preferences', 'folders', 'identities'];

        if (empty($attrib['command']) && empty($attrib['name']) && empty($attrib['href'])) {
            return '';
        }

        $command = !empty($attrib['command']) ? $attrib['command'] : null;
        $action  = $command ?: (!empty($attrib['name']) ? $attrib['name'] : null);

        if (!empty($attrib['task'])) {
            $command = $attrib['task'] . '.' . $command;
            $element = $attrib['task'] . '.' . $action;
        }
        else {
            $element = (!empty($this->env['task']) ? $this->env['task'] . '.' : '') . $action;
        }

        $disabled_actions = (array) $this->config->get('disabled_actions');

        // remove buttons for disabled actions
        if (in_array($element, $disabled_actions) || in_array($action, $disabled_actions)) {
            return '';
        }

        // try to find out the button type
        if (!empty($attrib['type'])) {
            $attrib['type'] = strtolower($attrib['type']);
            if (strpos($attrib['type'], '-menuitem')) {
                $attrib['type'] = substr($attrib['type'], 0, -9);
                $menuitem = true;
            }
        }
        else if (!empty($attrib['image']) || !empty($attrib['imagepas']) || !empty($attrib['imageact'])) {
            $attrib['type'] = 'image';
        }
        else {
            $attrib['type'] = 'button';
        }

        if (empty($attrib['image'])) {
            if (!empty($attrib['imagepas'])) {
                $attrib['image'] = $attrib['imagepas'];
            }
            else if (!empty($attrib['imageact'])) {
                $attrib['image'] = $attrib['imageact'];
            }
        }

        if (empty($attrib['id'])) {
            // ensure auto generated IDs are unique between main window and content frame
            // Elastic skin duplicates buttons between the two on smaller screens (#7618)
            $prefix       = ($this->framed || !empty($this->env['framed'])) ? 'frm' : '';
            $attrib['id'] = sprintf('rcmbtn%s%d', $prefix, $s_button_count++);
        }

        // get localized text for labels and titles
        $domain = !empty($attrib['domain']) ? $attrib['domain'] : null;
        if (!empty($attrib['title'])) {
            $attrib['title'] = html::quote($this->app->gettext($attrib['title'], $domain));
        }
        if (!empty($attrib['label'])) {
            $attrib['label'] = html::quote($this->app->gettext($attrib['label'], $domain));
        }
        if (!empty($attrib['alt'])) {
            $attrib['alt'] = html::quote($this->app->gettext($attrib['alt'], $domain));
        }

        // set accessibility attributes
        if (empty($attrib['role'])) {
            $attrib['role'] = 'button';
        }

        if (!empty($attrib['class']) && !empty($attrib['classact']) || !empty($attrib['imagepas']) && !empty($attrib['imageact'])) {
            if (array_key_exists('tabindex', $attrib)) {
                $attrib['data-tabindex'] = $attrib['tabindex'];
            }
            $attrib['tabindex']      = '-1';  // disable button by default
            $attrib['aria-disabled'] = 'true';
        }

        // set title to alt attribute for IE browsers
        if ($this->browser->ie && empty($attrib['title']) && !empty($attrib['alt'])) {
            $attrib['title'] = $attrib['alt'];
        }

        // add empty alt attribute for XHTML compatibility
        if (!isset($attrib['alt'])) {
            $attrib['alt'] = '';
        }

        // register button in the system
        if (!empty($attrib['command'])) {
            $this->add_script(sprintf(
                "%s.register_button('%s', '%s', '%s', '%s', '%s', '%s');",
                self::JS_OBJECT_NAME,
                $command,
                $attrib['id'],
                $attrib['type'],
                !empty($attrib['imageact']) ? $this->abs_url($attrib['imageact']) : (!empty($attrib['classact']) ? $attrib['classact'] : ''),
                !empty($attrib['imagesel']) ? $this->abs_url($attrib['imagesel']) : (!empty($attrib['classsel']) ? $attrib['classsel'] : ''),
                !empty($attrib['imageover']) ? $this->abs_url($attrib['imageover']) : ''
            ));

            // make valid href to specific buttons
            if (in_array($attrib['command'], rcmail::$main_tasks)) {
                $attrib['href']    = $this->app->url(['task' => $attrib['command']]);
                $attrib['onclick'] = sprintf("return %s.command('switch-task','%s',this,event)", self::JS_OBJECT_NAME, $attrib['command']);
            }
            else if (!empty($attrib['task']) && in_array($attrib['task'], rcmail::$main_tasks)) {
                $attrib['href'] = $this->app->url(['action' => $attrib['command'], 'task' => $attrib['task']]);
            }
            else if (in_array($attrib['command'], $a_static_commands)) {
                $attrib['href'] = $this->app->url(['action' => $attrib['command']]);
            }
            else if (($attrib['command'] == 'permaurl' || $attrib['command'] == 'extwin') && !empty($this->env['permaurl'])) {
              $attrib['href'] = $this->env['permaurl'];
            }
        }

        // overwrite attributes
        if (empty($attrib['href'])) {
            $attrib['href'] = '#';
        }

        if (!empty($attrib['task'])) {
            if (!empty($attrib['classact'])) {
                $attrib['class'] = $attrib['classact'];
            }
        }
        else if ($command && empty($attrib['onclick'])) {
            $attrib['onclick'] = sprintf(
                "return %s.command('%s','%s',this,event)",
                self::JS_OBJECT_NAME,
                $command,
                !empty($attrib['prop']) ? $attrib['prop'] : ''
            );
        }

        $out         = '';
        $btn_content = null;
        $link_attrib = [];

        // generate image tag
        if ($attrib['type'] == 'image') {
            $attrib_str = html::attrib_string(
                $attrib,
                [
                    'style', 'class', 'id', 'width', 'height', 'border', 'hspace',
                    'vspace', 'align', 'alt', 'tabindex', 'title'
                ]
            );
            $btn_content = sprintf('<img src="%s"%s />', $this->abs_url($attrib['image']), $attrib_str);
            if (!empty($attrib['label'])) {
                $btn_content .= ' '.$attrib['label'];
            }
            $link_attrib = ['href', 'onclick', 'onmouseover', 'onmouseout', 'onmousedown', 'onmouseup', 'target'];
        }
        else if ($attrib['type'] == 'link') {
            $btn_content = $attrib['content'] ?? (!empty($attrib['label']) ? $attrib['label'] : $attrib['command']);
            $link_attrib = array_merge(html::$common_attrib, ['href', 'onclick', 'tabindex', 'target', 'rel']);
            if (!empty($attrib['innerclass'])) {
                $btn_content = html::span($attrib['innerclass'], $btn_content);
            }
        }
        else if ($attrib['type'] == 'input') {
            $attrib['type'] = 'button';

            if (!empty($attrib['label'])) {
                $attrib['value'] = $attrib['label'];
            }
            if (!empty($attrib['command'])) {
                $attrib['disabled'] = 'disabled';
            }

            $out = html::tag('input', $attrib, null, ['type', 'value', 'onclick', 'id', 'class', 'style', 'tabindex', 'disabled']);
        }
        else {
            if (!empty($attrib['label'])) {
                $attrib['value'] = $attrib['label'];
            }
            if (!empty($attrib['command'])) {
                $attrib['disabled'] = 'disabled';
            }

            $content = $attrib['content'] ?? $attrib['label'];
            $out = html::tag('button', $attrib, $content, ['type', 'value', 'onclick', 'id', 'class', 'style', 'tabindex', 'disabled']);
        }

        // generate html code for button
        if ($btn_content) {
            $attrib_str = html::attrib_string($attrib, $link_attrib);
            $out = sprintf('<a%s>%s</a>', $attrib_str, $btn_content);
        }

        if (!empty($attrib['wrapper'])) {
            $out = html::tag($attrib['wrapper'], null, $out);
        }

        if (!empty($menuitem)) {
            $class = !empty($attrib['menuitem-class']) ? ' class="' . $attrib['menuitem-class'] . '"' : '';
            $out   = '<li role="menuitem"' . $class . '>' . $out . '</li>';
        }

        return $out;
    }

    /**
     * Link an external script file
     *
     * @param string $file     File URL
     * @param string $position Target position [head|head_bottom|foot]
     */
    public function include_script($file, $position = 'head', $add_path = true)
    {
        if ($add_path && !preg_match('|^https?://|i', $file) && $file[0] != '/') {
            $file = $this->file_mod($this->scripts_path . $file);
        }

        if (!isset($this->script_files[$position]) || !is_array($this->script_files[$position])) {
            $this->script_files[$position] = [];
        }

        if (!in_array($file, $this->script_files[$position])) {
            $this->script_files[$position][] = $file;
        }
    }

    /**
     * Add inline javascript code
     *
     * @param string $script   JS code snippet
     * @param string $position Target position [head|head_top|foot|docready]
     */
    public function add_script($script, $position = 'head')
    {
        if (!isset($this->scripts[$position])) {
            $this->scripts[$position] = rtrim($script);
        }
        else {
            $this->scripts[$position] .= "\n" . rtrim($script);
        }
    }

    /**
     * Link an external css file
     *
     * @param string $file File URL
     */
    public function include_css($file)
    {
        $this->css_files[] = $file;
    }

    /**
     * Add HTML code to the page header
     *
     * @param string $str HTML code
     */
    public function add_header($str)
    {
        $this->header .= "\n" . $str;
    }

    /**
     * Add HTML code to the page footer
     * To be added right before </body>
     *
     * @param string $str HTML code
     */
    public function add_footer($str)
    {
        $this->footer .= "\n" . $str;
    }

    /**
     * Process template and write to stdOut
     *
     * @param string $output HTML output
     */
    protected function _write($output = '')
    {
        $output = trim($output);

        if (empty($output)) {
            $output   = html::doctype('html5') . "\n" . $this->default_template;
            $is_empty = true;
        }

        $merge_script_files = function($output, $script) {
            return $output . html::script($script);
        };

        $merge_scripts = function($output, $script) {
            return $output . html::script([], $script);
        };

        // put docready commands into page footer
        if (!empty($this->scripts['docready'])) {
            $this->add_script("\$(function() {\n" . $this->scripts['docready'] . "\n});", 'foot');
        }

        $page_header = '';
        $page_footer = '';
        $meta        = '';

        // declare page language
        if (!empty($_SESSION['language'])) {
            $lang   = substr($_SESSION['language'], 0, 2);
            $output = preg_replace('/<html/', '<html lang="' . html::quote($lang) . '"', $output, 1);

            if (!headers_sent()) {
                $this->header('Content-Language: ' . $lang);
            }
        }

        // include meta tag with charset
        if (!empty($this->charset)) {
            if (!headers_sent()) {
                $this->header('Content-Type: text/html; charset=' . $this->charset);
            }

            $meta .= html::tag('meta', [
                    'http-equiv' => 'content-type',
                    'content'    => "text/html; charset={$this->charset}",
                    'nl'         => true
            ]);
        }

        // include page title (after charset specification)
        $meta .= '<title>' . html::quote($this->get_pagetitle()) . "</title>\n";

        $output = preg_replace('/(<head[^>]*>)\n*/i', "\\1\n{$meta}", $output, 1, $count);
        if (!$count) {
            $page_header .= $meta;
        }

        // include scripts into header/footer
        if (!empty($this->script_files['head'])) {
            $page_header .= array_reduce((array) $this->script_files['head'], $merge_script_files);
        }

        $head  = $this->scripts['head_top'] ?? '';
        $head .= $this->scripts['head'] ?? '';

        $page_header .= array_reduce((array) $head, $merge_scripts);
        $page_header .= $this->header . "\n";

        if (!empty($this->script_files['head_bottom'])) {
            $page_header .= array_reduce((array) $this->script_files['head_bottom'], $merge_script_files);
        }

        if (!empty($this->script_files['foot'])) {
            $page_footer .= array_reduce((array) $this->script_files['foot'], $merge_script_files);
        }

        $page_footer .= $this->footer . "\n";

        if (!empty($this->scripts['foot'])) {
            $page_footer .= array_reduce((array) $this->scripts['foot'], $merge_scripts);
        }

        // find page header
        if ($hpos = stripos($output, '</head>')) {
            $page_header .= "\n";
        }
        else {
            if (!is_numeric($hpos)) {
                $hpos = stripos($output, '<body');
            }
            if (!is_numeric($hpos) && ($hpos = stripos($output, '<html'))) {
                while ($output[$hpos] != '>') {
                    $hpos++;
                }
                $hpos++;
            }
            $page_header = "<head>\n$page_header\n</head>\n";
        }

        // add page header
        if ($hpos) {
            $output = substr_replace($output, $page_header, $hpos, 0);
        }
        else {
            $output = $page_header . $output;
        }

        // add page footer
        if (($fpos = strripos($output, '</body>')) || ($fpos = strripos($output, '</html>'))) {
            // for Elastic: put footer content before "footer scripts"
            while (($npos = strripos($output, "\n", -strlen($output) + $fpos - 1))
                && $npos != $fpos
                && ($chunk = substr($output, $npos, $fpos - $npos)) !== ''
                && (trim($chunk) === '' || preg_match('/\s*<script[^>]+><\/script>\s*/', $chunk))
            ) {
                $fpos = $npos;
            }

            $output = substr_replace($output, $page_footer."\n", $fpos, 0);
        }
        else {
            $output .= "\n".$page_footer;
        }

        // add css files in head, before scripts, for speed up with parallel downloads
        if (!empty($this->css_files) && empty($is_empty)
            && (($pos = stripos($output, '<script ')) || ($pos = stripos($output, '</head>')))
        ) {
            $css = '';
            foreach ($this->css_files as $file) {
                $is_less = substr_compare($file, '.less', -5, 5, true) === 0;
                $css    .= html::tag('link', [
                        'rel'  => $is_less ? 'stylesheet/less' : 'stylesheet',
                        'type' => 'text/css',
                        'href' => $file,
                        'nl'   => true,
                ]);
            }
            $output = substr_replace($output, $css, $pos, 0);
        }

        $output = $this->parse_with_globals($this->fix_paths($output));

        if ($this->assets_path) {
            $output = $this->fix_assets_paths($output);
        }

        $output = $this->postrender($output);

        // trigger hook with final HTML content to be sent
        $hook = $this->app->plugins->exec_hook("send_page", ['content' => $output]);
        if (!$hook['abort']) {
            if ($this->charset != RCUBE_CHARSET) {
                echo rcube_charset::convert($hook['content'], RCUBE_CHARSET, $this->charset);
            }
            else {
                echo $hook['content'];
            }
        }
    }

    /**
     * Returns iframe object, registers some related env variables
     *
     * @param array $attrib          HTML attributes
     * @param bool  $is_contentframe Register this iframe as the 'contentframe' gui object
     *
     * @return string IFRAME element
     */
    public function frame($attrib, $is_contentframe = false)
    {
        static $idcount = 0;

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmframe' . ++$idcount;
        }

        $attrib['name'] = $attrib['id'];
        $attrib['src']  = !empty($attrib['src']) ? $this->abs_url($attrib['src'], true) : 'javascript:false;';

        // register as 'contentframe' object
        if ($is_contentframe || !empty($attrib['contentframe'])) {
            $this->set_env('contentframe', !empty($attrib['contentframe']) ? $attrib['contentframe'] : $attrib['name']);
        }

        return html::iframe($attrib);
    }


    /*  ************* common functions delivering gui objects **************  */

    /**
     * Create a form tag with the necessary hidden fields
     *
     * @param array  $attrib  Named tag parameters
     * @param string $content HTML content of the form
     *
     * @return string HTML code for the form
     */
    public function form_tag($attrib, $content = null)
    {
        $hidden = '';

        if (!empty($this->env['extwin'])) {
            $hiddenfield = new html_hiddenfield(['name' => '_extwin', 'value' => '1']);
            $hidden = $hiddenfield->show();
        }
        else if ($this->framed || !empty($this->env['framed'])) {
            $hiddenfield = new html_hiddenfield(['name' => '_framed', 'value' => '1']);
            $hidden = $hiddenfield->show();
        }

        if (!$content) {
            $attrib['noclose'] = true;
        }

        return html::tag('form',
            $attrib + ['action' => $this->app->comm_path, 'method' => 'get'],
            $hidden . $content,
            ['id', 'class', 'style', 'name', 'method', 'action', 'enctype', 'onsubmit']
        );
    }

    /**
     * Build a form tag with a unique request token
     *
     * @param array  $attrib  Named tag parameters including 'action' and 'task' values
     *                        which will be put into hidden fields
     * @param string $content Form content
     *
     * @return string HTML code for the form
     */
    public function request_form($attrib, $content = '')
    {
        $hidden = new html_hiddenfield();

        if (!empty($attrib['task'])) {
            $hidden->add(['name' => '_task', 'value' => $attrib['task']]);
        }

        if (!empty($attrib['action'])) {
            $hidden->add(['name' => '_action', 'value' => $attrib['action']]);
        }

        // we already have a <form> tag
        if (!empty($attrib['form'])) {
            if ($this->framed || !empty($this->env['framed'])) {
                $hidden->add(['name' => '_framed', 'value' => '1']);
            }

            return $hidden->show() . $content;
        }

        unset($attrib['task'], $attrib['request']);
        $attrib['action'] = './';

        return $this->form_tag($attrib, $hidden->show() . $content);
    }

    /**
     * GUI object 'username'
     * Showing IMAP username of the current session
     *
     * @param array $attrib Named tag parameters (currently not used)
     *
     * @return string HTML code for the gui object
     */
    public function current_username($attrib)
    {
        static $username;

        // already fetched
        if (!empty($username)) {
            return $username;
        }

        // Current username is an e-mail address
        if (isset($_SESSION['username']) && strpos($_SESSION['username'], '@')) {
            $username = $_SESSION['username'];
        }
        // get e-mail address from default identity
        else if ($sql_arr = $this->app->user->get_identity()) {
            $username = $sql_arr['email'];
        }
        else {
            $username = $this->app->user->get_username();
        }

        $username = rcube_utils::idn_to_utf8($username);

        return html::quote($username);
    }

    /**
     * GUI object 'loginform'
     * Returns code for the webmail login form
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML code for the gui object
     */
    protected function login_form($attrib)
    {
        $default_host     = $this->config->get('imap_host');
        $autocomplete     = (int) $this->config->get('login_autocomplete');
        $username_filter  = $this->config->get('login_username_filter');
        $_SESSION['temp'] = true;

        // save original url
        $url = rcube_utils::get_input_string('_url', rcube_utils::INPUT_POST);
        if (
            empty($url)
            && !empty($_SERVER['QUERY_STRING'])
            && !preg_match('/_(task|action)=logout/', $_SERVER['QUERY_STRING'])
        ) {
            $url = $_SERVER['QUERY_STRING'];
        }

        // Disable autocapitalization on iPad/iPhone (#1488609)
        $attrib['autocapitalize'] = 'off';

        $form_name = !empty($attrib['form']) ? $attrib['form'] : 'form';

        // set autocomplete attribute
        $user_attrib = $autocomplete > 0 ? [] : ['autocomplete' => 'off'];
        $host_attrib = $autocomplete > 0 ? [] : ['autocomplete' => 'off'];
        $pass_attrib = $autocomplete > 1 ? [] : ['autocomplete' => 'off'];

        if ($username_filter && strtolower($username_filter) == 'email') {
            $user_attrib['type'] = 'email';
        }

        $input_task   = new html_hiddenfield(['name' => '_task', 'value' => 'login']);
        $input_action = new html_hiddenfield(['name' => '_action', 'value' => 'login']);
        $input_tzone  = new html_hiddenfield(['name' => '_timezone', 'id' => 'rcmlogintz', 'value' => '_default_']);
        $input_url    = new html_hiddenfield(['name' => '_url', 'id' => 'rcmloginurl', 'value' => $url]);
        $input_user   = new html_inputfield(['name' => '_user', 'id' => 'rcmloginuser', 'required' => 'required']
            + $attrib + $user_attrib);
        $input_pass   = new html_passwordfield(['name' => '_pass', 'id' => 'rcmloginpwd', 'required' => 'required']
            + $attrib + $pass_attrib);
        $input_host   = null;

        $form_content = [
            'hidden' => [
                'task'   => $input_task->show(),
                'action' => $input_action->show(),
                'tzone'  => $input_tzone->show(),
                'url'    => $input_url->show(),
            ],
            'inputs' => [
                'user' => [
                    'title'   => html::label('rcmloginuser', html::quote($this->app->gettext('username'))),
                    'content' => $input_user->show(rcube_utils::get_input_string('_user', rcube_utils::INPUT_GPC))
                ],
                'password' => [
                    'title'   => html::label('rcmloginpwd', html::quote($this->app->gettext('password'))),
                    'content' => $input_pass->show()
                ],
            ],
            'buttons' => []
        ];

        if (is_array($default_host) && count($default_host) > 1) {
            $input_host = new html_select(['name' => '_host', 'id' => 'rcmloginhost', 'class' => 'custom-select']);

            foreach ($default_host as $key => $value) {
                if (!is_array($value)) {
                    $input_host->add($value, (is_numeric($key) ? $value : $key));
                }
                else {
                    $input_host = null;
                    break;
                }
            }
        }
        else if (is_array($default_host) && ($host = key($default_host)) !== null) {
            $val = is_numeric($host) ? $default_host[$host] : $host;
            $input_host = new html_hiddenfield(['name' => '_host', 'id' => 'rcmloginhost', 'value' => $val] + $attrib);

            $form_content['hidden']['host'] = $input_host->show();
            $input_host = null;
        }
        else if (empty($default_host)) {
            $input_host = new html_inputfield(['name' => '_host', 'id' => 'rcmloginhost', 'class' => 'form-control']
                + $attrib + $host_attrib);
        }

        // add host selection row
        if (is_object($input_host)) {
            $form_content['inputs']['host'] = [
                'title'   => html::label('rcmloginhost', html::quote($this->app->gettext('server'))),
                'content' => $input_host->show(rcube_utils::get_input_string('_host', rcube_utils::INPUT_GPC))
            ];
        }

        if (rcube_utils::get_boolean($attrib['submit'])) {
            $button_attr = ['type' => 'submit', 'id' => 'rcmloginsubmit', 'class' => 'button mainaction submit'];
            $button      = html::tag('button', $button_attr, $this->app->gettext('login'));

            $form_content['buttons']['submit'] = ['outterclass' => 'formbuttons', 'content' => $button];
        }

        // add oauth login button
        if ($this->config->get('oauth_auth_uri') && $this->config->get('oauth_provider')) {
            // hide login form fields when `oauth_login_redirect` is configured
            if ($this->config->get('oauth_login_redirect')) {
                $form_content['hidden']  = [];
                $form_content['inputs']  = [];
                $form_content['buttons'] = [];
            }

            $link_attr = [
                'href'  => $this->app->url(['action' => 'oauth']),
                'id'    => 'rcmloginoauth',
                'class' => 'button oauth ' . $this->config->get('oauth_provider')
            ];

            $provider = $this->config->get('oauth_provider_name', 'OAuth');
            $button   = html::a($link_attr, $this->app->gettext(['name' => 'oauthlogin', 'vars' => ['provider' => $provider]]));

            $form_content['buttons']['oauthlogin'] = ['outterclass' => 'oauthlogin', 'content' => $button];
        }

        $data = $this->app->plugins->exec_hook('loginform_content', $form_content);

        $this->add_gui_object('loginform', $form_name);

        // output login form contents
        $out = implode('', $data['hidden']);

        if (count($data['inputs']) > 0) {
            // create HTML table with two cols
            $table = new html_table(['cols' => 2]);

            foreach ($data['inputs'] as $input) {
                if (isset($input['title'])) {
                    $table->add('title', $input['title']);
                    $table->add('input', $input['content']);
                }
                else {
                    $table->add(['colspan' => 2, 'class' => 'input'], $input['content']);
                }
            }

            $out .= $table->show();
        }

        foreach ($data['buttons'] as $button) {
            $out .= html::p($button['outterclass'], $button['content']);
        }

        // surround html output with a form tag
        if (empty($attrib['form'])) {
            $out = $this->form_tag(['name' => $form_name, 'method' => 'post'], $out);
        }

        // include script for timezone detection
        $this->include_script('jstz.min.js');

        return $out;
    }

    /**
     * GUI object 'preloader'
     * Loads javascript code for images preloading
     *
     * @param array $attrib Named parameters
     * @return void
     */
    protected function preloader($attrib)
    {
        $images = preg_split('/[\s\t\n,]+/', $attrib['images'], -1, PREG_SPLIT_NO_EMPTY);
        $images = array_map([$this, 'abs_url'], $images);
        $images = array_map([$this, 'asset_url'], $images);

        if (empty($images) || (isset($_REQUEST['_task']) && $_REQUEST['_task'] == 'logout')) {
            return;
        }

        $this->add_script('var images = ' . self::json_serialize($images, $this->devel_mode) .';
            for (var i=0; i<images.length; i++) {
                img = new Image();
                img.src = images[i];
            }', 'docready');
    }

    /**
     * GUI object 'searchform'
     * Returns code for search function
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML code for the gui object
     */
    public function search_form($attrib)
    {
        // add some labels to client
        $this->add_label('searching');

        $attrib['name']  = '_q';
        $attrib['class'] = trim((!empty($attrib['class']) ? $attrib['class'] : '') . ' no-bs');

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmqsearchbox';
        }
        if (isset($attrib['type']) && $attrib['type'] == 'search' && !$this->browser->khtml) {
            unset($attrib['type'], $attrib['results']);
        }
        if (empty($attrib['placeholder'])) {
            $attrib['placeholder'] = $this->app->gettext('searchplaceholder');
        }

        $label   = html::label(['for' => $attrib['id'], 'class' => 'voice'], rcube::Q($this->app->gettext('arialabelsearchterms')));
        $input_q = new html_inputfield($attrib);
        $out     = $label . $input_q->show();
        $name    = 'qsearchbox';

        // Support for multiple searchforms on the same page
        if (isset($attrib['gui-object']) && $attrib['gui-object'] !== false && $attrib['gui-object'] !== 'false') {
            $name = $attrib['gui-object'];
        }

        $this->add_gui_object($name, $attrib['id']);

        // add form tag around text field
        if (empty($attrib['form']) && empty($attrib['no-form'])) {
            $out = $this->form_tag([
                    'name'     => !empty($attrib['form-name']) ? $attrib['form-name'] : 'rcmqsearchform',
                    'onsubmit' => sprintf(
                        "%s.command('%s'); return false",
                        self::JS_OBJECT_NAME,
                        !empty($attrib['command']) ? $attrib['command'] : 'search'
                    ),
                    // 'style'    => "display:inline"
                ], $out);
        }

        if (!empty($attrib['wrapper'])) {
            $options_button = '';

            $ariatag = !empty($attrib['ariatag']) ? $attrib['ariatag'] : 'h2';
            $domain  = !empty($attrib['label-domain']) ? $attrib['label-domain'] : null;
            $options = !empty($attrib['options']) ? $attrib['options'] : null;

            $header_label = $this->app->gettext('arialabel' . $attrib['label'], $domain);
            $header_attrs = [
                'id'    => 'aria-label-' . $attrib['label'],
                'class' => 'voice'
            ];

            $header = html::tag($ariatag, $header_attrs, rcube::Q($header_label));

            if (!empty($attrib['options'])) {
                $options_button = $this->button([
                        'type'       => 'link',
                        'href'       => '#search-filter',
                        'class'      => 'button options',
                        'label'      => 'options',
                        'title'      => 'options',
                        'tabindex'   => '0',
                        'innerclass' => 'inner',
                        'data-target' => $options
                ]);
            }

            $search_button = $this->button([
                    'type'       => 'link',
                    'href'       => '#search',
                    'class'      => 'button search',
                    'label'      => $attrib['buttontitle'],
                    'title'      => $attrib['buttontitle'],
                    'tabindex'   => '0',
                    'innerclass' => 'inner',
            ]);

            $reset_button = $this->button([
                    'type'       => 'link',
                    'command'    => !empty($attrib['reset-command']) ? $attrib['reset-command'] : 'reset-search',
                    'class'      => 'button reset',
                    'label'      => 'resetsearch',
                    'title'      => 'resetsearch',
                    'tabindex'   => '0',
                    'innerclass' => 'inner',
            ]);

            $out = html::div([
                    'role'            => 'search',
                    'aria-labelledby' => !empty($attrib['label']) ? 'aria-label-' . $attrib['label'] : null,
                    'class'           => $attrib['wrapper'],
                ],
                "$header$out\n$reset_button\n$options_button\n$search_button"
            );
        }

        return $out;
    }

    /**
     * Builder for GUI object 'message'
     *
     * @param array $attrib Named tag parameters
     * @return string HTML code for the gui object
     */
    protected function message_container($attrib)
    {
        if (isset($attrib['id']) === false) {
            $attrib['id'] = 'rcmMessageContainer';
        }

        $this->add_gui_object('message', $attrib['id']);

        return html::div($attrib, '');
    }

    /**
     * GUI object 'charsetselector'
     *
     * @param array $attrib Named parameters for the select tag
     *
     * @return string HTML code for the gui object
     */
    public function charset_selector($attrib)
    {
        // pass the following attributes to the form class
        $field_attrib = ['name' => '_charset'];
        foreach ($attrib as $attr => $value) {
            if (in_array($attr, ['id', 'name', 'class', 'style', 'size', 'tabindex'])) {
                $field_attrib[$attr] = $value;
            }
        }

        $charsets = [
            'UTF-8'        => 'UTF-8 ('.$this->app->gettext('unicode').')',
            'US-ASCII'     => 'ASCII ('.$this->app->gettext('english').')',
            'ISO-8859-1'   => 'ISO-8859-1 ('.$this->app->gettext('westerneuropean').')',
            'ISO-8859-2'   => 'ISO-8859-2 ('.$this->app->gettext('easterneuropean').')',
            'ISO-8859-4'   => 'ISO-8859-4 ('.$this->app->gettext('baltic').')',
            'ISO-8859-5'   => 'ISO-8859-5 ('.$this->app->gettext('cyrillic').')',
            'ISO-8859-6'   => 'ISO-8859-6 ('.$this->app->gettext('arabic').')',
            'ISO-8859-7'   => 'ISO-8859-7 ('.$this->app->gettext('greek').')',
            'ISO-8859-8'   => 'ISO-8859-8 ('.$this->app->gettext('hebrew').')',
            'ISO-8859-9'   => 'ISO-8859-9 ('.$this->app->gettext('turkish').')',
            'ISO-8859-10'  => 'ISO-8859-10 ('.$this->app->gettext('nordic').')',
            'ISO-8859-11'  => 'ISO-8859-11 ('.$this->app->gettext('thai').')',
            'ISO-8859-13'  => 'ISO-8859-13 ('.$this->app->gettext('baltic').')',
            'ISO-8859-14'  => 'ISO-8859-14 ('.$this->app->gettext('celtic').')',
            'ISO-8859-15'  => 'ISO-8859-15 ('.$this->app->gettext('westerneuropean').')',
            'ISO-8859-16'  => 'ISO-8859-16 ('.$this->app->gettext('southeasterneuropean').')',
            'WINDOWS-1250' => 'Windows-1250 ('.$this->app->gettext('easterneuropean').')',
            'WINDOWS-1251' => 'Windows-1251 ('.$this->app->gettext('cyrillic').')',
            'WINDOWS-1252' => 'Windows-1252 ('.$this->app->gettext('westerneuropean').')',
            'WINDOWS-1253' => 'Windows-1253 ('.$this->app->gettext('greek').')',
            'WINDOWS-1254' => 'Windows-1254 ('.$this->app->gettext('turkish').')',
            'WINDOWS-1255' => 'Windows-1255 ('.$this->app->gettext('hebrew').')',
            'WINDOWS-1256' => 'Windows-1256 ('.$this->app->gettext('arabic').')',
            'WINDOWS-1257' => 'Windows-1257 ('.$this->app->gettext('baltic').')',
            'WINDOWS-1258' => 'Windows-1258 ('.$this->app->gettext('vietnamese').')',
            'ISO-2022-JP'  => 'ISO-2022-JP ('.$this->app->gettext('japanese').')',
            'ISO-2022-KR'  => 'ISO-2022-KR ('.$this->app->gettext('korean').')',
            'ISO-2022-CN'  => 'ISO-2022-CN ('.$this->app->gettext('chinese').')',
            'EUC-JP'       => 'EUC-JP ('.$this->app->gettext('japanese').')',
            'EUC-KR'       => 'EUC-KR ('.$this->app->gettext('korean').')',
            'EUC-CN'       => 'EUC-CN ('.$this->app->gettext('chinese').')',
            'BIG5'         => 'BIG5 ('.$this->app->gettext('chinese').')',
            'GB2312'       => 'GB2312 ('.$this->app->gettext('chinese').')',
            'KOI8-R'       => 'KOI8-R ('.$this->app->gettext('cyrillic').')',
        ];

        if ($post = rcube_utils::get_input_string('_charset', rcube_utils::INPUT_POST)) {
            $set = $post;
        }
        else if (!empty($attrib['selected'])) {
            $set = $attrib['selected'];
        }
        else {
            $set = $this->get_charset();
        }

        $set = strtoupper($set);
        if (!isset($charsets[$set]) && preg_match('/^[A-Z0-9-]+$/', $set)) {
            $charsets[$set] = $set;
        }

        $select = new html_select($field_attrib);
        $select->add(array_values($charsets), array_keys($charsets));

        return $select->show($set);
    }

    /**
     * Include content from config/about.<LANG>.html if available
     */
    protected function about_content($attrib)
    {
        $content = '';
        $filenames = [
            'about.' . $_SESSION['language'] . '.html',
            'about.' . substr($_SESSION['language'], 0, 2) . '.html',
            'about.html',
        ];

        foreach ($filenames as $file) {
            $fn = RCUBE_CONFIG_DIR . $file;
            if (is_readable($fn)) {
                $content = file_get_contents($fn);
                $content = $this->parse_conditions($content);
                $content = $this->parse_xml($content);
                break;
            }
        }

        return $content;
    }

    /**
     * Get logo URL for current template based on skin_logo config option
     *
     * @param string $type   Type of the logo to check for (e.g. 'print' or 'small')
     *                       default is null (no special type)
     * @param string $match  (optional) 'all' = type, template or wildcard, 'template' = type or template
     *                       Note: when type is specified matches are limited to type only unless $match is defined
     *
     * @return string image URL
     */
    protected function get_template_logo($type = null, $match = null)
    {
        $template_logo = null;

        if ($logo = $this->config->get('skin_logo')) {
            if (is_array($logo)) {
                $template_names = [
                    $this->skin_name . ':' . $this->template_name . '[' . $type . ']',
                    $this->skin_name . ':' . $this->template_name,
                    $this->skin_name . ':*[' . $type . ']',
                    $this->skin_name . ':[' . $type . ']',
                    $this->skin_name . ':*',
                    '*:' . $this->template_name . '[' . $type . ']',
                    '*:' . $this->template_name,
                    '*:*[' . $type . ']',
                    '*:[' . $type . ']',
                    $this->template_name . '[' . $type . ']',
                    $this->template_name,
                    '*[' . $type . ']',
                    '[' . $type . ']',
                    '*',
                ];

                if (empty($type)) {
                    // If no type provided then remove those options from the list
                    $template_names = preg_grep("/\]$/", $template_names, PREG_GREP_INVERT);
                }
                elseif ($match === null) {
                    // Type specified with no special matching requirements so remove all none type specific options from the list
                    $template_names = preg_grep("/\]$/", $template_names);
                }

                if ($match == 'template') {
                    // Match only specific type or template name
                    $template_names = preg_grep("/\*$/", $template_names, PREG_GREP_INVERT);
                }

                foreach ($template_names as $key) {
                    if (isset($logo[$key])) {
                        $template_logo = $logo[$key];
                        break;
                    }
                }
            }
            else if ($type != 'link') {
                $template_logo = $logo;
            }
        }

        return $template_logo;
    }
}
include/rcmail_oauth.php000064400000047550151727150470011373 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | CONTENTS:                                                             |
 |   Roundcube OAuth2 utilities                                          |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

use GuzzleHttp\Client;
use GuzzleHttp\MessageFormatter;
use GuzzleHttp\Exception\RequestException;

/**
 * Roundcube OAuth2 utilities
 *
 * @package    Webmail
 * @subpackage Utils
 */
class rcmail_oauth
{
    /** @var rcmail */
    protected $rcmail;

    /** @var array */
    protected $options = [];

    /** @var string */
    protected $last_error = null;

    /** @var bool */
    protected $no_redirect = false;

    /** @var rcmail_oauth */
    static protected $instance;

    /**
     * Singleton factory
     *
     * @return rcmail_oauth The one and only instance
     */
    static function get_instance($options = [])
    {
        if (!self::$instance) {
            self::$instance = new rcmail_oauth($options);
            self::$instance->init();
        }

        return self::$instance;
    }

    /**
     * Object constructor
     *
     * @param array $options Config options:
     */
    public function __construct($options = [])
    {
        $this->rcmail  = rcmail::get_instance();
        $this->options = (array) $options + [
            'provider'        => $this->rcmail->config->get('oauth_provider'),
            'auth_uri'        => $this->rcmail->config->get('oauth_auth_uri'),
            'token_uri'       => $this->rcmail->config->get('oauth_token_uri'),
            'client_id'       => $this->rcmail->config->get('oauth_client_id'),
            'client_secret'   => $this->rcmail->config->get('oauth_client_secret'),
            'identity_uri'    => $this->rcmail->config->get('oauth_identity_uri'),
            'identity_fields' => $this->rcmail->config->get('oauth_identity_fields', ['email']),
            'scope'           => $this->rcmail->config->get('oauth_scope'),
            'verify_peer'     => $this->rcmail->config->get('oauth_verify_peer', true),
            'auth_parameters' => $this->rcmail->config->get('oauth_auth_parameters', []),
            'login_redirect'  => $this->rcmail->config->get('oauth_login_redirect', false),
        ];
    }

    /**
     * Initialize this instance
     *
     * @return void
     */
    protected function init()
    {
        // subscribe to storage and smtp init events
        if ($this->is_enabled()) {
            $this->rcmail->plugins->register_hook('storage_init', [$this, 'storage_init']);
            $this->rcmail->plugins->register_hook('smtp_connect', [$this, 'smtp_connect']);
            $this->rcmail->plugins->register_hook('managesieve_connect', [$this, 'managesieve_connect']);
            $this->rcmail->plugins->register_hook('logout_after', [$this, 'logout_after']);
            $this->rcmail->plugins->register_hook('login_failed', [$this, 'login_failed']);
            $this->rcmail->plugins->register_hook('unauthenticated', [$this, 'unauthenticated']);
            $this->rcmail->plugins->register_hook('refresh', [$this, 'refresh']);
        }
    }

    /**
     * Check if OAuth is generally enabled in config
     *
     * @return bool
     */
    public function is_enabled()
    {
        return !empty($this->options['provider']) &&
            !empty($this->options['token_uri']) &&
            !empty($this->options['client_id']);
    }

    /**
     * Compose a fully qualified redirect URI for auth requests
     *
     * @return string
     */
    public function get_redirect_uri()
    {
        $url = $this->rcmail->url([], true, true);

        // rewrite redirect URL to not contain query parameters because some providers do not support this
        $url = preg_replace('/\?.*/', '', $url);

        return slashify($url) . 'index.php/login/oauth';
    }

    /**
     * Getter for the last error occurred
     *
     * @return mixed
     */
    public function get_last_error()
    {
        return $this->last_error;
    }

    /**
     * Helper method to decode a JWT
     * 
     * @param string $jwt
     * @return array Hash array with decoded body
     */
    public function jwt_decode($jwt)
    {
        list($headb64, $bodyb64, $cryptob64) = explode('.', strtr($jwt, '-_', '+/'));

        $header = json_decode(base64_decode($headb64), true);
        $body   = json_decode(base64_decode($bodyb64), true);

        if (isset($body['azp']) && $body['azp'] !== $this->options['client_id']) {
            throw new RuntimeException('Failed to validate JWT: invalid azp value');
        }
        else if (isset($body['aud']) && !in_array($this->options['client_id'], (array) $body['aud'])) {
            throw new RuntimeException('Failed to validate JWT: invalid aud value');
        }
        else if (!isset($body['azp']) && !isset($body['aud'])) {
            throw new RuntimeException('Failed to validate JWT: missing aud/azp value');
        }

        return $body;
    }

    /**
     * Login action: redirect to `oauth_auth_uri`
     *
     * @return void
     */
    public function login_redirect()
    {
        if (!empty($this->options['auth_uri']) && !empty($this->options['client_id'])) {
            // create a secret string
            $_SESSION['oauth_state'] = rcube_utils::random_bytes(12);

            // compose full oauth login uri
            $delimiter = strpos($this->options['auth_uri'], '?') > 0 ? '&' : '?';
            $query = http_build_query([
                'response_type' => 'code',
                'client_id'     => $this->options['client_id'],
                'scope'         => $this->options['scope'],
                'redirect_uri'  => $this->get_redirect_uri(),
                'state'         => $_SESSION['oauth_state'],
            ] + (array) $this->options['auth_parameters']);
            $this->rcmail->output->redirect($this->options['auth_uri'] . $delimiter . $query);  // exit
        }
        else {
            // log error about missing config options
            rcube::raise_error([
                    'message' => "Missing required OAuth config options 'oauth_auth_uri', 'oauth_client_id'",
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                ], true, false
            );
        }
    }

    /**
     * Request access token with auth code returned from oauth login
     *
     * @param string $auth_code
     * @param string $state
     *
     * @return array Authorization data as hash array with entries
     *   `username` as the authentication user name
     *   `authorization` as the oauth authorization string "<type> <access-token>"
     *   `token` as the complete oauth response to be stored in session
     */
    public function request_access_token($auth_code, $state = null)
    {
        $oauth_token_uri     = $this->options['token_uri'];
        $oauth_client_id     = $this->options['client_id'];
        $oauth_client_secret = $this->options['client_secret'];
        $oauth_identity_uri  = $this->options['identity_uri'];

        if (!empty($oauth_token_uri) && !empty($oauth_client_secret)) {
            try {
                // validate state parameter against $_SESSION['oauth_state']
                if (!empty($_SESSION['oauth_state']) && $_SESSION['oauth_state'] !== $state) {
                    throw new RuntimeException('Invalid state parameter');
                }

                // send token request to get a real access token for the given auth code
                $client = new Client([
                    'timeout' => 10.0,
                    'verify' => $this->options['verify_peer'],
                ]);

                $response = $client->post($oauth_token_uri, [
                        'form_params'       => [
                            'code'          => $auth_code,
                            'client_id'     => $oauth_client_id,
                            'client_secret' => $oauth_client_secret,
                            'redirect_uri'  => $this->get_redirect_uri(),
                            'grant_type'    => 'authorization_code',
                        ],
                ]);

                $data = \GuzzleHttp\json_decode($response->getBody(), true);

                // auth success
                if (!empty($data['access_token'])) {
                    $username = null;
                    $identity = null;
                    $authorization = sprintf('%s %s', $data['token_type'], $data['access_token']);

                    // decode JWT id_token if provided
                    if (!empty($data['id_token'])) {
                        try {
                            $identity = $this->jwt_decode($data['id_token']);
                            foreach ($this->options['identity_fields'] as $field) {
                                if (isset($identity[$field])) {
                                    $username = $identity[$field];
                                    break;
                                }
                            }
                        } catch (\Exception $e) {
                            // log error
                            rcube::raise_error([
                                    'message' => $e->getMessage(),
                                    'file'    => __FILE__,
                                    'line'    => __LINE__,
                                ], true, false
                            );
                        }
                    }

                    // request user identity (email)
                    if (empty($username) && !empty($oauth_identity_uri)) {
                        $identity_response = $client->get($oauth_identity_uri, [
                                'headers' => [
                                    'Authorization' => $authorization,
                                    'Accept' => 'application/json',
                                ],
                        ]);

                        $identity = \GuzzleHttp\json_decode($identity_response->getBody(), true);

                        foreach ($this->options['identity_fields'] as $field) {
                            if (isset($identity[$field])) {
                                $username = $identity[$field];
                                break;
                            }
                        }
                    }

                    $data['identity'] = $username;
                    $this->mask_auth_data($data);

                    $this->rcmail->session->remove('oauth_state');

                    $this->rcmail->plugins->exec_hook('oauth_login', array_merge($data, [
                        'username' => $username,
                        'identity' => $identity,
                    ]));

                    // remove some data we don't want to store in session
                    unset($data['id_token']);

                    // return auth data
                    return [
                        'username'      => $username,
                        'authorization' => $authorization,
                        'token'         => $data,
                    ];
                }
                else {
                    throw new Exception('Unexpected response from OAuth service');
                }
            }
            catch (RequestException $e) {
                $this->last_error = "OAuth token request failed: " . $e->getMessage();
                $this->no_redirect = true;
                $formatter = new MessageFormatter();

                rcube::raise_error([
                        'message' => $this->last_error . '; ' . $formatter->format($e->getRequest(), $e->getResponse()),
                        'file'    => __FILE__,
                        'line'    => __LINE__,
                    ], true, false
                );

                return false;
            }
            catch (Exception $e) {
                $this->last_error = "OAuth token request failed: " . $e->getMessage();
                $this->no_redirect = true;

                rcube::raise_error([
                        'message' => $this->last_error,
                        'file'    => __FILE__,
                        'line'    => __LINE__,
                    ], true, false
                );

                return false;
            }
        }
        else {
            $this->last_error = "Missing required OAuth config options 'oauth_token_uri', 'oauth_client_id', 'oauth_client_secret'";

            rcube::raise_error([
                    'message' => $this->last_error,
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                ], true, false
            );

            return false;
        }
    }

    /**
     * Obtain a new access token using the refresh_token grant type
     *
     * If successful, this will update the `oauth_token` entry in
     * session data.
     *
     *
     * @return array Updated authorization data
     */
    public function refresh_access_token(array $token)
    {
        $oauth_token_uri     = $this->options['token_uri'];
        $oauth_client_id     = $this->options['client_id'];
        $oauth_client_secret = $this->options['client_secret'];

        // send token request to get a real access token for the given auth code
        try {
            $client = new Client([
                'timeout' => 10.0,
                'verify' => $this->options['verify_peer'],
            ]);
            $response = $client->post($oauth_token_uri, [
                    'form_params' => [
                        'client_id'     => $oauth_client_id,
                        'client_secret' => $oauth_client_secret,
                        'refresh_token' => $this->rcmail->decrypt($token['refresh_token']),
                        'grant_type'    => 'refresh_token',
                    ],
            ]);
            $data = \GuzzleHttp\json_decode($response->getBody(), true);

            // auth success
            if (!empty($data['access_token'])) {
                // update access token stored as password
                $authorization = sprintf('%s %s', $data['token_type'], $data['access_token']);
                $_SESSION['password'] = $this->rcmail->encrypt($authorization);

                $this->mask_auth_data($data);

                // update session data
                $_SESSION['oauth_token'] = array_merge($token, $data);

                $this->rcmail->plugins->exec_hook('oauth_refresh_token', $data);

                return [
                    'token' => $data,
                    'authorization' => $authorization,
                ];
            }
        }
        catch (RequestException $e) {
            $this->last_error = "OAuth refresh token request failed: " . $e->getMessage();
            $formatter = new MessageFormatter();
            rcube::raise_error([
                    'message' => $this->last_error . '; ' . $formatter->format($e->getRequest(), $e->getResponse()),
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                ], true, false
            );

            // refrehsing token failed, mark session as expired
            if ($e->getCode() >= 400 && $e->getCode() < 500) {
                $this->rcmail->kill_session();
            }

            return false;
        }
        catch (Exception $e) {
            $this->last_error = "OAuth refresh token request failed: " . $e->getMessage();
            rcube::raise_error([
                    'message' => $this->last_error,
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                ], true, false
            );

            return false;
        }
    }

    /**
     * Modify some properties of the received auth response
     *
     * @param array $data
     * @return void
     */
    protected function mask_auth_data(&$data)
    {
        // compute absolute token expiration date
        $data['expires'] = time() + $data['expires_in'] - 10;

        // encrypt refresh token if provided
        if (isset($data['refresh_token'])) {
            $data['refresh_token'] = $this->rcmail->encrypt($data['refresh_token']);
        }
    }

    /**
     * Check the given access token data if still valid
     *
     * ... and attempt to refresh if possible.
     *
     * @param array $token
     * @return bool
     */
    protected function check_token_validity($token)
    {
        if ($token['expires'] < time() && isset($token['refresh_token']) && empty($this->last_error)) {
            return $this->refresh_access_token($token) !== false;
        }
        return false;
    }

    /**
     * Callback for 'storage_init' hook
     *
     * @param array $options
     * @return array
     */
    public function storage_init($options)
    {
        if (isset($_SESSION['oauth_token']) && $options['driver'] === 'imap') {
            // check token validity
            if ($this->check_token_validity($_SESSION['oauth_token'])) {
                $options['password'] = $this->rcmail->decrypt($_SESSION['password']);
            }

            // enforce XOAUTH2 authorization type
            $options['auth_type'] = 'XOAUTH2';
        }

        return $options;
    }

    /**
     * Callback for 'smtp_connect' hook
     *
     * @param array $options
     * @return array
     */
    public function smtp_connect($options)
    {
        if (isset($_SESSION['oauth_token'])) {
            // check token validity
            $this->check_token_validity($_SESSION['oauth_token']);

            // enforce XOAUTH2 authorization type
            $options['smtp_user'] = '%u';
            $options['smtp_pass'] = '%p';
            $options['smtp_auth_type'] = 'XOAUTH2';
        }

        return $options;
    }

    /**
     * Callback for 'managesieve_connect' hook
     *
     * @param array $options
     * @return array
     */
    public function managesieve_connect($options)
    {
        if (isset($_SESSION['oauth_token'])) {
            // check token validity
            $this->check_token_validity($_SESSION['oauth_token']);

            // enforce XOAUTH2 authorization type
            $options['auth_type'] = 'XOAUTH2';
        }

        return $options;
    }

    /**
     * Callback for 'logout_after' hook
     *
     * @param array $options
     * @return array
     */
    public function logout_after($options)
    {
        $this->no_redirect = true;
    }

    /**
     * Callback for 'login_failed' hook
     *
     * @param array $options
     * @return array
     */
    public function login_failed($options)
    {
        // no redirect on imap login failures
        $this->no_redirect = true;
        return $options;
    }

    /**
     * Callback for 'unauthenticated' hook
     *
     * @param array $options
     * @return array
     */
    public function unauthenticated($options)
    {
        if (
            $this->options['login_redirect']
            && !$this->rcmail->output->ajax_call
            && !$this->no_redirect
            && empty($options['error'])
            && $options['http_code'] === 200
        ) {
            $this->login_redirect();
        }

        return $options;
    }


    /**
     * Callback for 'refresh' hook
     *
     * @param array $options
     * @return void
     */
    public function refresh($options)
    {
        if (isset($_SESSION['oauth_token'])) {
            $this->check_token_validity($_SESSION['oauth_token']);
        }
    }
}
include/rcmail_html_page.php000064400000006460151727150500012200 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Render a simple HTML page with the given contents                   |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to create an empty HTML page with some default styles
 *
 * @package    Webmail
 * @subpackage View
 */
class rcmail_html_page extends rcmail_output_html
{
    protected $inline_warning;

    /**
     * Process the page content and write to stdOut
     *
     * @param string $contents HTML page content
     */
    public function write($contents = '')
    {
        self::reset(true);

        // load embed.css from skin folder (if exists)
        $embed_css = $this->config->get('embed_css_location', '/embed.css');
        if ($embed_css = $this->get_skin_file($embed_css, $path, null, true)) {
            $this->include_css($embed_css);
        }
        else {  // set default styles for warning blocks inside the attachment part frame
            $this->add_header(html::tag('style', ['type' => 'text/css'],
                ".rcmail-inline-message { font-family: sans-serif; border:2px solid #ffdf0e;"
                                        . "background:#fef893; padding:0.6em 1em; margin-bottom:0.6em }\n" .
                ".rcmail-inline-buttons { margin-bottom:0 }"
            ));
        }

        if (empty($contents)) {
            $contents = '<html><body></body></html>';
        }

        if ($this->inline_warning) {
            $body_start = 0;
            if ($body_pos = strpos($contents, '<body')) {
                $body_start = strpos($contents, '>', $body_pos) + 1;
            }

            $contents = substr_replace($contents, $this->inline_warning, $body_start, 0);
        }

        parent::write($contents);
    }

    /**
     * Add inline warning with optional button
     *
     * @param string $text         Warning content
     * @param string $button_label Button label
     * @param string $button_url   Button URL
     */
    public function register_inline_warning($text, $button_label = null, $button_url = null)
    {
        $text = html::span(null, $text);

        if ($button_label) {
            $onclick = "location.href = '$button_url'";
            $button  = html::tag('button', ['onclick' => $onclick], rcube::Q($button_label));
            $text   .= html::p(['class' => 'rcmail-inline-buttons'], $button);
        }

        $this->inline_warning = html::div(['class' => 'rcmail-inline-message rcmail-inline-warning'], $text);
    }
}
include/clisetup.php000064400000002570151727150500010537 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Setup the command line environment and provide some utility         |
 |   functions.                                                          |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

if (php_sapi_name() != 'cli') {
    die('Not on the "shell" (php-cli).');
}

require_once INSTALL_PATH . 'program/include/iniset.php';

// Unset max. execution time limit, set to 120 seconds in iniset.php
@set_time_limit(0);

$rcmail = rcmail::get_instance();
resources/blank.gif000064400000000066151727150510010342 0ustar00GIF89a����!�,@
��������ڋg;resources/blank.tiff000064400000000416151727150510010524 0ustar00II*�?�O��
)�@�(/home/alec/trunk/roundcubemail/empty.tifHHresources/dummy.pdf000064400000002042151727150510010406 0ustar00%PDF-1.4
%����
2 0 obj
<</Type /Catalog
/Pages 1 0 R
>>
endobj
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources <</ProcSets [/PDF /Text /ImageB /ImageC /ImageI]
/ExtGState <</G0 4 0 R
>>
/XObject <</X0 5 0 R
>>
>>
/MediaBox [0 0 612 792]
/Contents 6 0 R
>>
endobj
6 0 obj
<</Filter /FlateDecode
/Length 131
>> stream
x�3T0B]C ani����U�134�r�+���M�j��ZCrW�0�ҹ��
ҋ�FX�)����H�4
�R@�XŁa1C�zbt}c�.�6��X����#\����9T
endstream
endobj
4 0 obj
<</Type /ExtGState
/CA 1
/ca 1
/LC 0
/LJ 0
/LW 0
/ML 4
/SA true
/BM /Normal
>>
endobj
5 0 obj
<</Type /XObject
/Subtype /Image
/Width 60
/Height 60
/ColorSpace /DeviceRGB
/BitsPerComponent 8
/Filter /FlateDecode
/Length 78
>> stream
x��α	ð��tzD�T�g�̤S�ޘ����������������������.���������������������-���
endstream
endobj
1 0 obj
<</Type /Pages
/Count 1
/Kids [3 0 R]
>>
endobj
xref
0 7
0000000000 65535 f 
0000000801 00000 n 
0000000015 00000 n 
0000000063 00000 n 
0000000464 00000 n 
0000000558 00000 n 
0000000262 00000 n 
trailer
<</Size 7
/Root 2 0 R
>>
startxref
857
%%EOFresources/error.html000064400000001172151727150510010602 0ustar00<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Internal Error</title>
<style>
div {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-family: sans-serif;
}
p.admin {
  font-style: italic;
  font-size: 0.8em;
  color: #888;
}
</style>
</head>
<body>
<div>
  <h1>Oops... something went wrong!</h1>
  <p>An internal error has occurred. Your request cannot be processed at this time.</p>
  <p class="admin">For administrators: Please check the application and/or server error logs for more information.</p>
</div>
</body>
</html>
resources/blank.webp000064400000000126151727150520010530 0ustar00RIFFNWEBPVP8X
ALPH������VP8 0�*%�p��Ѐresources/blocked.gif000064400000000166151727150520010660 0ustar00GIF89ad2����!�,d2M��������ڋ�޼���H�扦�ʶ���L�����
�Ģ�L*�̦�	�J�Ԫ���j�ܮ����l+;resources/tinymce/video.png000064400000000717151727150520012054 0ustar00�PNG


IHDR00W���IDATx�ERCAE�6�a����%�4 �`lwwww�1��}v��^��NՉ���n>B�q��������%geeE�����S�;�1UY(#�Sf�~�=�Y�	��@��i�,�@�{`��+ 4 ��@h+d�
`Wp��S�,j-12F�tdgg�����Ϲ;���B����6��'ssskeP~�݀h7L���u(�f
XdYT�A�����q3����0	ti' ��_�6{�
iiiAhWn��A�H̑F|~8U�j��I�2O@
$��o��UY(#c?����M�>�F��y^���f@��lFw,�̘�������=/�fl0��%Fh�,��u �̺*e4��F����Xc��F�wBÀBs����?�7��J�r���IEND�B`�resources/tinymce/browser.css000064400000002561151727150520012434 0ustar00/* This file contains the CSS data for media file selector of TinyMCE */

#image-selector {
	padding-bottom: 85px;
	border: 1px solid transparent;
}

#image-selector.droptarget.hover,
#image-selector.droptarget.active {
	border: 1px solid #019bc6;
}

#image-selector.droptarget.hover {
	background-color: #d9ecf4;
}

#image-selector form {
	position: absolute;
	top: 0;
}

#image-selector .hint {
	line-height: 25px;
	color: #666;
	font-size: 11px;
	text-align: center;
}

#image-selector .upload-form {
	text-align: center;
	margin-bottom: 1rem;
}

#image-selector-list {
	overflow-x: hidden;
	overflow-y: auto;
	padding: 0;
	height: 250px;
}

#image-selector-list li {
	line-height: 80px;
	padding: 3px;
	padding-left: 5px;
	cursor: pointer;
	overflow: hidden;
	text-overflow: ellipsis;
	background: none;
	display:flex;
	align-items: center;
	margin-bottom: 1px;
}

#image-selector-list li:hover,
#image-selector-list li:focus {
	background-color: #F0F0F0;
}

#image-selector-list li img {
	vertical-align: middle;
	max-height: 80px;
}

#image-selector-list li span.name {
	font-weight: bold;
	padding-left: 10px;
}

#image-selector-list li span.img {
	height: 80px;
	width: 80px;
	min-width: 80px;
	text-align: center;
	overflow: hidden;
	line-height: 80px;
	border-radius: 5px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	border: 1px solid #ddd;
}
resources/tinymce/content.css000064400000000573151727150520012424 0ustar00/* This file contains the CSS data for the editable area(iframe) of TinyMCE */

body, td, pre {
	font-family: "Lucida Grande", Verdana,  Arial, Helvetica, sans-serif;
	font-size: 12px;
}

body {
	background-color: #fff;
	margin: 4px;
}

div.pre {
	margin: 0;
	padding: 0;
	font-family: monospace;
}

blockquote
{
	border-left: #1010ff 2px solid;
	margin: 0;
	padding: 0 0.4em;
}
localization/id_ID/timezones.inc000064400000047202151727150530012727 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaika';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktika';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damaskus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Yerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kalkuta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Makau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapura';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Eropa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athena';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussels';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Vienna';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warsawa';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/id_ID/labels.inc000064400000066325151727150530012163 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Selamat datang di $product';
$labels['username'] = 'Username';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Masuk';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Keluar';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Pengaturan';
$labels['addressbook'] = 'Buku Alamat';
$labels['inbox'] = 'Kotak Masuk';
$labels['drafts'] = 'Konsep';
$labels['sent'] = 'Terkirim';
$labels['trash'] = 'Surat Terhapus';
$labels['junk'] = 'Sampah';
$labels['show_real_foldernames'] = 'Tampilkan nama asli untuk folder spesial';
$labels['subject'] = 'Judul';
$labels['from'] = 'Pengirim';
$labels['sender'] = 'Pengirim';
$labels['to'] = 'Penerima';
$labels['cc'] = 'Lampiran';
$labels['bcc'] = 'Lampiran tersembunyi';
$labels['replyto'] = 'Balas kepada';
$labels['followupto'] = 'Surat Tindak Lanjut Untuk';
$labels['date'] = 'Tanggal';
$labels['size'] = 'Ukuran';
$labels['priority'] = 'Prioritas';
$labels['organization'] = 'Organisasi';
$labels['readstatus'] = 'Status Terbaca';
$labels['listoptions'] = 'Daftar Pilihan...';
$labels['mailboxlist'] = 'Semua Folder';
$labels['messagesfromto'] = 'Pesan dari $from sampai $to dari total $count';
$labels['threadsfromto'] = 'Untaian dari $from sampai $to dari total $count';
$labels['messagenrof'] = 'Pesan $nr dari total $count';
$labels['fromtoshort'] = '$from - $to dari total $count';
$labels['copy'] = 'Salin';
$labels['move'] = 'Pindahkan';
$labels['moveto'] = 'Pindahkan ke...';
$labels['copyto'] = 'Salin ke...';
$labels['download'] = 'Unduh';
$labels['open'] = 'Buka';
$labels['showattachment'] = 'Tampilkan';
$labels['showanyway'] = 'Tampilkan saja';
$labels['filename'] = 'Nama berkas';
$labels['filesize'] = 'Ukuran berkas';
$labels['addtoaddressbook'] = 'Tambah ke buku alamat';
$labels['sun'] = 'Min';
$labels['mon'] = 'Sen';
$labels['tue'] = 'Sel';
$labels['wed'] = 'Rab';
$labels['thu'] = 'Kam';
$labels['fri'] = 'Jum';
$labels['sat'] = 'Sab';
$labels['sunday'] = 'Minggu';
$labels['monday'] = 'Senin';
$labels['tuesday'] = 'Selasa';
$labels['wednesday'] = 'Rabu';
$labels['thursday'] = 'Kamis';
$labels['friday'] = 'Jumat';
$labels['saturday'] = 'Sabtu';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mei';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Ags';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
$labels['longjan'] = 'Januari';
$labels['longfeb'] = 'Februari';
$labels['longmar'] = 'Maret';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mei';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'Agustus';
$labels['longsep'] = 'Spetember';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Desember';
$labels['today'] = 'Hari ini';
$labels['refresh'] = 'Segarkan';
$labels['checkmail'] = 'Periksa pesan baru';
$labels['compose'] = 'Tulis sebuah pesan';
$labels['writenewmessage'] = 'Buat pesan baru';
$labels['reply'] = 'Balas';
$labels['replytomessage'] = 'Balas ke pengirim';
$labels['replytoallmessage'] = 'Balas ke pengirim dan yang lain';
$labels['replyall'] = 'Balas ke semua';
$labels['replylist'] = 'Balas ke milis';
$labels['forward'] = 'Teruskan';
$labels['forwardinline'] = 'Teruskan bersama surat';
$labels['forwardattachment'] = 'Teruskan sebagai sisipan';
$labels['forwardmessage'] = 'Teruskan pesan';
$labels['deletemessage'] = 'Hapus pesan';
$labels['movemessagetotrash'] = 'Pindahkan pesan ke tong sampah';
$labels['printmessage'] = 'Cetak pesan ini';
$labels['previousmessage'] = 'Perlihatkan pesan sebelumnya';
$labels['firstmessage'] = 'Perlihatkan pesan pertama';
$labels['nextmessage'] = 'Perlihatkan pesan berikutnya';
$labels['lastmessage'] = 'Perlihatkan pesan terakhir';
$labels['backtolist'] = 'Kembali ke daftar pesan';
$labels['viewsource'] = 'Perlihatkan kode sumber';
$labels['mark'] = 'Tandai';
$labels['markmessages'] = 'Tandai Pesan';
$labels['markread'] = 'Terbaca';
$labels['markunread'] = 'Belum Terbaca';
$labels['markflagged'] = 'Sudah ditandai';
$labels['markunflagged'] = 'Belum ditandai';
$labels['moreactions'] = 'Tindakan lain..';
$labels['markallread'] = 'Tandai semua telah dibaca';
$labels['folders-cur'] = 'Hanya pilih folder';
$labels['folders-sub'] = 'Pilih folder dan subfoldernya';
$labels['folders-all'] = 'Semua folder';
$labels['more'] = 'Berikutnya';
$labels['back'] = 'Kembali';
$labels['options'] = 'Pilihan';
$labels['actions'] = 'Tindakan';
$labels['first'] = 'Pertama';
$labels['last'] = 'Terakhir';
$labels['previous'] = 'Sebelumnya';
$labels['next'] = 'Selanjutnya';
$labels['select'] = 'Pilih';
$labels['all'] = 'Semua';
$labels['none'] = 'Tidak ada';
$labels['currpage'] = 'Halaman sekarang';
$labels['isread'] = 'Baca';
$labels['unread'] = 'Belum terbaca';
$labels['flagged'] = 'Ditandai';
$labels['unflagged'] = 'Tidak ditandai';
$labels['unanswered'] = 'Belum terjawab';
$labels['withattachment'] = 'Dengan lampiran';
$labels['deleted'] = 'Terhapus';
$labels['undeleted'] = 'Tidak terhapus';
$labels['replied'] = 'Sudah dibalas';
$labels['forwarded'] = 'Diteruskan';
$labels['invert'] = 'Sebaliknya';
$labels['filter'] = 'Penyaringan';
$labels['list'] = 'Daftar';
$labels['threads'] = 'Untaian';
$labels['expand-all'] = 'Bentangkan Semua';
$labels['expand-unread'] = 'Bentangkan yang Belum Terbaca';
$labels['collapse-all'] = 'Lipat Semua';
$labels['threaded'] = 'Teruntai';
$labels['autoexpand_threads'] = 'Bentangkan pesan teruntai';
$labels['do_expand'] = 'semua untaian';
$labels['expand_only_unread'] = 'hanya pesan yang belum terbaca';
$labels['fromto'] = 'Pengirim/Penerima';
$labels['flag'] = 'Bendera';
$labels['attachment'] = 'Lampiran';
$labels['nonesort'] = 'Tidak ada';
$labels['sentdate'] = 'Tanggal kirim';
$labels['arrival'] = 'Tanggal masuk';
$labels['asc'] = 'menaik';
$labels['desc'] = 'menurun';
$labels['listcolumns'] = 'Perlihatkan kolom';
$labels['listsorting'] = 'Mengurutkan kolom';
$labels['listorder'] = 'Mengurutkan susunan';
$labels['listmode'] = 'Perlihatkan mode tinjauan';
$labels['layout'] = 'Tata Letak';
$labels['layoutwidescreen'] = 'Layar Lebar';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Daftar';
$labels['folderactions'] = 'Tindakan pada folder...';
$labels['compact'] = 'Rampingkan';
$labels['empty'] = 'Kosong';
$labels['importmessages'] = 'Impor pesan';
$labels['quota'] = 'Penggunaan ruang';
$labels['unknown'] = 'Tidak dikenal';
$labels['unlimited'] = 'Tidak terbatas';
$labels['quotatype'] = 'Tipe kuota';
$labels['quotatotal'] = 'Batas';
$labels['quotaused'] = 'Dipakai';
$labels['quotastorage'] = 'Ruang disk';
$labels['quotamessage'] = 'Cacah pesan';
$labels['quicksearch'] = 'Pencarian cepat';
$labels['resetsearch'] = 'Atur ulang pencarian';
$labels['searchmod'] = 'Peubah pencarian';
$labels['msgtext'] = 'Seluruh pesan';
$labels['body'] = 'Badan';
$labels['type'] = 'Tipe';
$labels['namex'] = 'Nama';
$labels['searchscope'] = 'Jangkauan';
$labels['currentfolder'] = 'Folder sekarang';
$labels['subfolders'] = 'Ini adalah subfolder';
$labels['allfolders'] = 'Semua folder';
$labels['searchinterval-1W'] = 'lebih dari seminggu';
$labels['searchinterval-1M'] = 'lebih dari sebulan';
$labels['searchinterval-1Y'] = 'lebih dari setahun';
$labels['searchinterval1W'] = 'kurang dari seminggu';
$labels['searchinterval1M'] = 'kurang dari sebulan';
$labels['searchinterval1Y'] = 'kurang dari setahun';
$labels['openinextwin'] = 'Buka dalam jendela baru';
$labels['emlsave'] = 'Unduh (.eml)';
$labels['changeformattext'] = 'Tampilkan dalam format text biasa';
$labels['changeformathtml'] = 'Tampilkan dalam format HTML';
$labels['editasnew'] = 'Sunting sebagai pesan baru';
$labels['send'] = 'Kirim';
$labels['sendmessage'] = 'Kirim pesan';
$labels['savemessage'] = 'Simpan sebagai konsep';
$labels['addattachment'] = 'Sisipkan sebuah berkas';
$labels['charset'] = 'Set karakter';
$labels['editortype'] = 'Tipe penyunting';
$labels['returnreceipt'] = 'Tanda terima kembali';
$labels['dsn'] = 'Pemberitahuan status terkirim';
$labels['mailreplyintro'] = 'Pada $date, $sender menulis:';
$labels['originalmessage'] = 'Pesan Asli';
$labels['selectimage'] = 'Pilih gambar';
$labels['addimage'] = 'Tambah gambar';
$labels['selectmedia'] = 'Pilih film';
$labels['addmedia'] = 'Tambah film';
$labels['encrypt'] = 'Enkripsi';
$labels['encryptmessage'] = 'Enkripsi pesan';
$labels['encryptmessagemailvelope'] = 'Enkripsi pesan dengan Mailvelope';
$labels['importpubkeys'] = 'Impor kunci publik';
$labels['encryptedsendialog'] = 'Mengirim pesan terenkripsi';
$labels['keyid'] = 'ID Kunci';
$labels['keylength'] = 'Bit';
$labels['keyexpired'] = 'Kedaluarsa';
$labels['keyrevoked'] = 'Dicabut';
$labels['bccinstead'] = 'Gunakan Bcc';
$labels['insert'] = 'Sisipkan';
$labels['recipient'] = 'Penerima';
$labels['editidents'] = 'Ubah identitas';
$labels['spellcheck'] = 'Ejaan';
$labels['checkspelling'] = 'Pemeriksaan ejaan';
$labels['resumeediting'] = 'Lanjutkan menyunting';
$labels['revertto'] = 'Kembalikan ke';
$labels['restore'] = 'Kembalikan';
$labels['restoremessage'] = 'Kembalikan pesan ?';
$labels['ignore'] = 'Abaikan';
$labels['responses'] = 'Respon';
$labels['insertresponse'] = 'Masukkan respon';
$labels['manageresponses'] = 'Atur respon';
$labels['newresponse'] = 'Buat respon baru';
$labels['addresponse'] = 'Tambah respon';
$labels['editresponse'] = 'Ubah respon';
$labels['editresponses'] = 'Ubah respon';
$labels['responsename'] = 'Nama';
$labels['responsetext'] = 'Teks Respon';
$labels['attach'] = 'Lampirkan';
$labels['attachments'] = 'Sisipan';
$labels['upload'] = 'Unggah';
$labels['uploadprogress'] = '$percent ($current dari $total)';
$labels['close'] = 'Tutup';
$labels['messageoptions'] = 'Pilihan pesan...';
$labels['togglecomposeoptions'] = 'Jungkitkan opsi penyusunan';
$labels['attachmentrename'] = 'Ubah nama lampiran';
$labels['low'] = 'Rendah';
$labels['lowest'] = 'Paling Rendah';
$labels['normal'] = 'Normal';
$labels['high'] = 'Tinggi';
$labels['highest'] = 'Paling tinggi';
$labels['nosubject'] = '(tanpa judul)';
$labels['showimages'] = 'Tampilkan gambar';
$labels['alwaysshow'] = 'Selalu tampilkan gambar dari $sender';
$labels['isdraft'] = 'Ini adalah konsep surat.';
$labels['andnmore'] = '$nr lagi...';
$labels['togglemoreheaders'] = 'Tampilkan kepala pesan lebih lanjut';
$labels['togglefullheaders'] = 'Beralih kepala pesan penuh';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Teks murni';
$labels['savesentmessagein'] = 'Simpan pesan terkirim di';
$labels['dontsave'] = 'Jangan disimpan';
$labels['maxuploadsize'] = 'Ukuran file maksimal adalah $size';
$labels['addcc'] = 'Tambah Cc';
$labels['addbcc'] = 'Tambah Bcc';
$labels['addreplyto'] = 'Tambah Balas Ke';
$labels['addfollowupto'] = 'Tambahkan Tindak-Lanjut-Ke';
$labels['mdnrequest'] = 'Pengirim pesan ini telah meminta untuk diberitahu ketika Anda membaca pesan ini. Apakah anda ingin memberitahu pengirim?';
$labels['receiptread'] = 'Tanda Terima (baca)';
$labels['yourmessage'] = 'Ini adalah Tanda Terima untuk pesan Anda';
$labels['receiptnote'] = 'Catatan: Tanda Terima ini hanya mengesahkan bahwa pesan telah diperlihatkan pada komputer penerima. Tidak ada jaminan bahwa penerima telah membaca atau mengerti isi pesan.';
$labels['name'] = 'Nama yang ditampilkan';
$labels['firstname'] = 'Nama depan';
$labels['surname'] = 'Nama belakang';
$labels['middlename'] = 'Nama tengah';
$labels['nameprefix'] = 'awalan';
$labels['namesuffix'] = 'sisipan';
$labels['nickname'] = 'nama panggilan';
$labels['jobtitle'] = 'Jabatan';
$labels['department'] = 'Departemen';
$labels['gender'] = 'Jenis kelamin';
$labels['maidenname'] = 'Nama asli';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telepon';
$labels['address'] = 'Alamat';
$labels['street'] = 'Jalan';
$labels['locality'] = 'Kota';
$labels['zipcode'] = 'Kode pos';
$labels['region'] = 'Provinsi';
$labels['country'] = 'Negara';
$labels['birthday'] = 'Tanggal lahir';
$labels['anniversary'] = 'Hari jadi';
$labels['website'] = 'Laman web';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Catatan';
$labels['male'] = 'pria';
$labels['female'] = 'wanita';
$labels['manager'] = 'Menejer';
$labels['assistant'] = 'Asisten';
$labels['spouse'] = 'Suami/Istri';
$labels['allfields'] = 'Semua isian';
$labels['search'] = 'Cari';
$labels['searchresult'] = 'Hasil pencarian';
$labels['advsearch'] = 'Pencarian Lebih Lanjut';
$labels['advanced'] = 'Tingkat lanjut';
$labels['other'] = 'Lainnya';
$labels['printcontact'] = 'Cetak kontak';
$labels['qrcode'] = 'Kode QR';
$labels['typehome'] = 'Rumah';
$labels['typework'] = 'Kantor';
$labels['typeother'] = 'Lainnya';
$labels['typemobile'] = 'HP';
$labels['typemain'] = 'Utama';
$labels['typehomefax'] = 'Faks Rumah';
$labels['typeworkfax'] = 'Faks Kantor';
$labels['typecar'] = 'Mobil';
$labels['typepager'] = 'Pejer';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asisten';
$labels['typehomepage'] = 'Laman Web';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Tambah kolom isian';
$labels['addcontact'] = 'Tambah kontak';
$labels['editcontact'] = 'Ubah kontak';
$labels['contacts'] = 'Daftar kontak';
$labels['contactproperties'] = 'Properti kontak';
$labels['contactnameandorg'] = 'Nama dan Organisasi';
$labels['personalinfo'] = 'Informasi pribadi';
$labels['personal'] = 'Pribadi';
$labels['contactphoto'] = 'Foto kontak';
$labels['edit'] = 'Ubah';
$labels['cancel'] = 'Batal';
$labels['save'] = 'Simpan';
$labels['delete'] = 'Hapus';
$labels['discard'] = 'Buang';
$labels['ok'] = 'OK';
$labels['rename'] = 'Ganti nama';
$labels['addphoto'] = 'Tambah';
$labels['replacephoto'] = 'Ganti';
$labels['uploadphoto'] = 'Unggah foto';
$labels['newcontact'] = 'Buat kontak baru';
$labels['deletecontact'] = 'Hapus kontak terpilih';
$labels['composeto'] = 'Tulis surat kepada';
$labels['contactsfromto'] = 'Kontak $from sampai $to dari total $count';
$labels['print'] = 'Cetak';
$labels['export'] = 'Ekspor';
$labels['exportall'] = 'Ekspor semua';
$labels['exportsel'] = 'Ekspor pilihan';
$labels['exportvcards'] = 'Ekspor kontak dalam format vCard';
$labels['newgroup'] = 'Buat grup baru';
$labels['addgroup'] = 'Tambah grup';
$labels['grouprename'] = 'Ganti nama grup';
$labels['groupdelete'] = 'Hapus grup';
$labels['groupremoveselected'] = 'Hapus kontak terpilih dari grup';
$labels['uponelevel'] = 'Naik satu tingkat';
$labels['previouspage'] = 'Perlihatkan himpunan sebelumnya';
$labels['firstpage'] = 'Perlihatkan himpunan pertama';
$labels['nextpage'] = 'Perlihatkan himpunan selanjutnya';
$labels['lastpage'] = 'Perlihatkan himpunan terakhir';
$labels['group'] = 'Kelompok';
$labels['groups'] = 'Kelompok';
$labels['listgroup'] = 'Daftar anggota grup';
$labels['personaladrbook'] = 'Alamat pribadi';
$labels['searchsave'] = 'Simpan pencarian';
$labels['searchdelete'] = 'Hapus pencarian';
$labels['import'] = 'Impor';
$labels['importcontacts'] = 'Impor kontak';
$labels['importfromfile'] = 'Impor dari berkas';
$labels['importtarget'] = 'Tambah kontak ke';
$labels['importreplace'] = 'Ganti seluruh buku alamat';
$labels['importgroups'] = 'Impor pengaturan grup';
$labels['importgroupsall'] = 'Semua (buat grup jika diperlukan)';
$labels['importgroupsexisting'] = 'Hanya untuk grup yang telah ada';
$labels['done'] = 'Selesai';
$labels['settingsfor'] = 'Pengaturan untuk';
$labels['about'] = 'Informasi program';
$labels['preferences'] = 'Pilihan';
$labels['userpreferences'] = 'Pilihan pengguna';
$labels['editpreferences'] = 'Ubah pilihan pengguna';
$labels['identities'] = 'Identitas';
$labels['manageidentities'] = 'Kelola identitas';
$labels['newidentity'] = 'Buat identitas baru';
$labels['addidentity'] = 'Tambah identitas';
$labels['editidentity'] = 'Sunting identitas';
$labels['identityencryption'] = 'Enkripsi';
$labels['preferhtml'] = 'Lebih suka HTML';
$labels['defaultcharset'] = 'Default Character';
$labels['htmlmessage'] = 'Pesan HTML';
$labels['messagepart'] = 'Bagian';
$labels['digitalsig'] = 'Tanda tangan digital';
$labels['dateformat'] = 'Format tanggal';
$labels['timeformat'] = 'Format waktu';
$labels['prettydate'] = 'Tanggal Cantik';
$labels['setdefault'] = 'Pengaturan Awal';
$labels['autodetect'] = 'Otomatis';
$labels['language'] = 'Bahasa';
$labels['timezone'] = 'Daerah Waktu';
$labels['pagesize'] = 'Baris per halaman';
$labels['signature'] = 'Tanda tangan';
$labels['dstactive'] = 'Waktu Musim Panas';
$labels['showinextwin'] = 'Buka pesan di jendela baru';
$labels['composeextwin'] = 'Buat pesan di jendela baru';
$labels['htmleditor'] = 'Tulis pesan HTML';
$labels['htmlonreply'] = 'balasan untuk pesan HTML saja';
$labels['htmlonreplyandforward'] = 'ketika meneruskan atau membalas pesan HTML';
$labels['htmlsignature'] = 'Tandatangan HTML';
$labels['showemail'] = 'Tampilkan alamat email dengan nama';
$labels['previewpane'] = 'Unjuk pratinjau';
$labels['skin'] = 'Tampilan antarmuka';
$labels['logoutclear'] = 'Bersihkan Tong Sampah saat keluar';
$labels['logoutcompact'] = 'Mampatkan Kotak Masuk saat keluar';
$labels['uisettings'] = 'Antarmuka pengguna';
$labels['serversettings'] = 'Pengaturan Server';
$labels['mailboxview'] = 'Tampilan Kotak Surat';
$labels['mdnrequests'] = 'Sedang dimintakan tanda terima kembali';
$labels['askuser'] = 'tanya pengguna';
$labels['autosend'] = 'kirim otomatis';
$labels['autosendknown'] = 'kirim tanda terima kepada kontak saya, selain itu tanyai saya';
$labels['autosendknownignore'] = 'kirim tanda terima kepada kontak saya, selain acuhkan';
$labels['ignorerequest'] = 'abaikan permintaan';
$labels['readwhendeleted'] = 'Tandai pesan sebagai terbaca saat dihapus';
$labels['flagfordeletion'] = 'Tandai pesan untuk penghapusan daripada dihapus';
$labels['skipdeleted'] = 'Jangan tampilkan pesan terhapus';
$labels['deletealways'] = 'Jika gagal memindakan ke tempat sampah, langsung hapus';
$labels['deletejunk'] = 'Langsung hapus pesan di kotak sampah';
$labels['showremoteimages'] = 'Tampilkan remote inline images';
$labels['fromknownsenders'] = 'dari pengirim yang dikenal';
$labels['always'] = 'selalu';
$labels['alwaysbutplain'] = 'selalu, kecuali saat membalas ke teks polos';
$labels['showinlineimages'] = 'Tampilkan gambar terlampir dibawah pesan';
$labels['autosavedraft'] = 'Otomatis menyimpan konsep';
$labels['everynminutes'] = 'setiap $n menit';
$labels['refreshinterval'] = 'Refresh (memeriksa pesan baru, dsb)';
$labels['never'] = 'tidak pernah';
$labels['immediately'] = 'secepatnya';
$labels['messagesdisplaying'] = 'Penampilan Pesan';
$labels['messagescomposition'] = 'Pengaturan Pesan';
$labels['mimeparamfolding'] = 'Nama lampiran';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Gunakan MIME encoding untuk karakter 8-bit';
$labels['savelocalstorage'] = "Simpan dalam penyimpanan lokal peramban (secara sementara)";
$labels['advancedoptions'] = 'Pilihan lanjut';
$labels['toggleadvancedoptions'] = 'Jungkitkan opsi tingkat lanjut';
$labels['focusonnewmessage'] = 'Pusatkan jendela broswer saat ada pesan baru';
$labels['checkallfolders'] = 'Periksa semua folder untuk pesan baru';
$labels['displaynext'] = 'Tampilkan entri daftar selanjutnya setelah menghapus/memindah';
$labels['defaultfont'] = 'Huruf standar untuk pesan HTML';
$labels['mainoptions'] = 'Pilihan Utama';
$labels['browseroptions'] = 'Pilihan peramban web';
$labels['section'] = 'Bagian';
$labels['maintenance'] = 'Perbaikan';
$labels['newmessage'] = 'Pesan baru';
$labels['signatureoptions'] = 'Opsi tanda tangan';
$labels['whenreplying'] = 'Ketika membalas';
$labels['replyempty'] = 'jangan kutip pesan asli';
$labels['replytopposting'] = 'Tulis pesan baru diatas pesan asli';
$labels['replytoppostingnoindent'] = 'mulai pesan baru di atas tanda kutip (tanpa indentasi)';
$labels['replybottomposting'] = 'Tulis pesan baru dibawah pesan asli';
$labels['replyremovesignature'] = 'ketika membalas pesan hapus tanda tangan dari pesan';
$labels['autoaddsignature'] = 'Otomatis tambahkan tanda tangan';
$labels['newmessageonly'] = 'Hanya untuk pesan baru';
$labels['replyandforwardonly'] = 'Hanya untuk dijawab dan diteruskan';
$labels['insertsignature'] = 'Isi tanda tangan';
$labels['sigbelow'] = 'Tempatkan tanda tangan di bawah pesan yang dikutip';
$labels['sigseparator'] = 'Paksakan pemisah standar dalam tanda tangan';
$labels['afternseconds'] = 'setelah $n detik';
$labels['reqmdn'] = 'Selalu meminta tanda terima kembali';
$labels['reqdsn'] = 'Selalu meminta pemberitahuan status terkirim';
$labels['replysamefolder'] = 'Taruh balasan di folder yang sama dengan pesan yang dibalas';
$labels['defaultabook'] = 'Buku alamat utama';
$labels['autocompletesingle'] = 'Lewatkan alamat email alternatif pada pelengkapan otomatis';
$labels['listnamedisplay'] = 'Daftar kontak sebagai';
$labels['spellcheckbeforesend'] = 'Periksa ejaan sebelum mengirimkan pesan';
$labels['spellcheckoptions'] = 'Pilihan Ejaan';
$labels['spellcheckignoresyms'] = 'Abaikan kata-kata yang bersimbol';
$labels['spellcheckignorenums'] = 'Abaikan kata-kata yang bernomor';
$labels['spellcheckignorecaps'] = 'Abaikan kata-kata dengan huruf besar semua';
$labels['addtodict'] = 'Tambahkan ke kamus';
$labels['mailtoprotohandler'] = 'Daftarkan pengampu protokol untuk link mailto:';
$labels['standardwindows'] = 'Kelola popup sebagai standar window';
$labels['forwardmode'] = 'Meneruskan pesan';
$labels['inline'] = 'dalam surat';
$labels['asattachment'] = 'sebagai sisipan';
$labels['replyallmode'] = 'Aksi dasar dari tombol [Jawab semua]';
$labels['replyalldefault'] = 'jawab ke semua';
$labels['replyalllist'] = 'jawab hanya ke daftar alamat email (jika ditemukan)';
$labels['allmessages'] = 'semua pesan';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Semua Folder';
$labels['foldername'] = 'Nama folder';
$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Pesan-pesan';
$labels['create'] = 'Buat';
$labels['createfolder'] = 'Buat folder baru';
$labels['managefolders'] = 'Atur folder';
$labels['specialfolders'] = 'Folder Khusus';
$labels['properties'] = 'Atribut';
$labels['folderproperties'] = 'Atribut folder';
$labels['parentfolder'] = 'Folder induk';
$labels['location'] = 'Lokasi';
$labels['info'] = 'Informasi';
$labels['getfoldersize'] = 'Klik untuk mendapatkan ukuran folder';
$labels['changesubscription'] = 'Klik untuk mengubah langganan';
$labels['foldertype'] = 'Jenis folder';
$labels['personalfolder'] = 'Folder pribadi';
$labels['otherfolder'] = 'Folder pengguna lain';
$labels['sharedfolder'] = 'Folder publik';
$labels['findfolders'] = 'Cari folder';
$labels['namespace.personal'] = 'Pribadi';
$labels['namespace.other'] = 'Pengguna lain';
$labels['namespace.shared'] = 'Bersama';
$labels['encryptioncreatekey'] = 'Buat pasangan kunci baru';
$labels['encryption'] = 'Enkripsi';
$labels['sortby'] = 'Urut berdasarkan';
$labels['sortasc'] = 'Urut menaik';
$labels['sortdesc'] = 'Urut menurun';
$labels['undo'] = 'Batalkan';
$labels['installedplugins'] = 'Plugin terpasang';
$labels['plugin'] = 'Pengaya';
$labels['version'] = 'Versi';
$labels['source'] = 'Sumber';
$labels['license'] = 'Lisensi';
$labels['support'] = 'Dukungan';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inggris';
$labels['westerneuropean'] = 'Eropa Barat';
$labels['easterneuropean'] = 'Eropa Timur';
$labels['southeasterneuropean'] = 'Eropa Tenggara';
$labels['baltic'] = 'Balkan';
$labels['cyrillic'] = 'Rusia';
$labels['arabic'] = 'Arab';
$labels['greek'] = 'Yunani';
$labels['hebrew'] = 'Yahudi';
$labels['turkish'] = 'Turki';
$labels['nordic'] = 'Nordik';
$labels['thai'] = 'Thailand';
$labels['celtic'] = 'Keltik';
$labels['vietnamese'] = 'Vietnam';
$labels['japanese'] = 'Jepang';
$labels['korean'] = 'Korea';
$labels['chinese'] = 'Cina';
$labels['arialabeltopnav'] = 'Kendali jendela';
$labels['arialabeltasknav'] = 'Tugas aplikasi';
$labels['arialabeltoolbar'] = 'Bilah alat aplikasi';
$labels['arialabelactivetask'] = 'Tugas aktif';
$labels['arialabelmessagessearchfilter'] = 'Penyaring senarai surel';
$labels['arialabelmailsearchform'] = 'Formulir pencarian pesan surel';
$labels['arialabelcontactsearchform'] = 'Formulir pencarian kontak';
$labels['arialabelmailquicksearchbox'] = 'Masukan pencarian surel';
$labels['arialabelquicksearchbox'] = 'Masukan pencarian';
$labels['arialabelfoldersearchfilter'] = 'Penyaring senarai folder';
$labels['arialabelfoldersearchform'] = 'Formulir pencarian folder';
$labels['arialabelfolderlist'] = 'Pilihan folder surel';
$labels['arialabelmessagelist'] = 'Daftar Pesan Surel';
$labels['arialabelmailpreviewframe'] = 'Pratinjau pesan';
$labels['arialabelmailboxmenu'] = 'Menu aksi folder';
$labels['arialabellistselectmenu'] = 'Menu pemilihan senarai';
$labels['arialabelthreadselectmenu'] = 'Menu daftar thread';
$labels['arialabelmessagelistoptions'] = 'Opsi penampilan dan pengurutan senarai pesan';
$labels['arialabelmailimportdialog'] = 'Dialog impor pesan';
$labels['arialabelmessagenav'] = 'Navigasi pesan';
$labels['arialabelmessagebody'] = 'Tubuh Pesan';
$labels['arialabelmessageactions'] = 'Aksi pesan';
$labels['arialabelcontactquicksearch'] = 'Formulir pencarian kontak';
$labels['arialabelcontactsearchbox'] = 'Masukan pencarian kontak';
$labels['arialabelmessageheaders'] = 'Kepala pesan';
$labels['arialabelforwardingoptions'] = 'Opsi penerusan';
$labels['arialabelreplyalloptions'] = 'Opsi balas-ke-semua';
$labels['arialabelmoremessageactions'] = 'Aksi pesan lainnya';
$labels['arialabelmarkmessagesas'] = 'Tandai pesan yang dipilih sebagai...';
$labels['arialabelcomposeoptions'] = 'Opsi penyusunan pesan';
$labels['arialabelresponsesmenu'] = 'Menu respon siap pakai';
$labels['arialabelattachmentuploadform'] = 'Formulir pengunggahan lampiran';
$labels['arialabelattachmentpreview'] = 'Pratinjau lampiran';
$labels['ariasummarycomposecontacts'] = 'Daftar kontak dan grup untuk dipilih sebagai penerima';
$labels['arialabelcontactexportoptions'] = 'Opsi ekspor kontak';
$labels['arialabelabookgroupoptions'] = 'Opsi buku alamat/grup';
$labels['arialabelpreferencesform'] = 'Formulir preferensi';
$labels['arialabelidentityeditfrom'] = 'Formulir sunting identitas';
$labels['arialabelresponseeditfrom'] = 'Formulir sunting respon';
$labels['arialabelsearchterms'] = 'Istilah pencarian';
$labels['helplistnavigation'] = 'Navigasi papan tik senarai';
$labels['helplistkeyboardnavigation'] = "Panah turun/naik: Pindah baris fokus/pilihan
Spasi: Pilih baris yang terfokus.
Shift + turun/naik: Pilih baris tambahan di atas/bawah.
Ctrl + Spasi: Tambahkan baris terfokus ke pilihan/hapus dari pilihan.";
$labels['helplistkeyboardnavmessages'] = "Panah kanan/kiri: kembangkan/mampatkan thread pesan (hanya dalam mode thread).
Enter: Buka pesan yang dipilih/difokuskan.
Delete: Pindahkan pesan yang dipilih ke Tong Sampah.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Buka kontak yang dipilih/terfokus.";
localization/id_ID/messages.inc000064400000040205151727150530012515 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Terjadi error!';
$messages['loginfailed']  = 'Login gagal.';
$messages['cookiesdisabled'] = 'Browser Anda tidak menerima cookies.';
$messages['sessionerror'] = 'Session Anda invalid atau kadaluwarsa.';
$messages['cookiesmismatch'] = 'Ketidakcocokan cookie terdeteksi. Harap bersihkan cookie peramban Anda.';
$messages['storageerror'] = 'Koneksi ke server penyimpanan gagal';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
$messages['accountlocked'] = 'Terlalu banyak mencoba login yang gagal. Coba lagi nanti.';
$messages['connerror'] = 'Kesalahan sambungan (Gagal menghubungi server)!';
$messages['dberror'] = 'Basis data Error!';
$messages['windowopenerror'] = 'Jendela popup terblokir!';
$messages['requesttimedout'] = 'Permintaan melewati batas waktu';
$messages['errorreadonly'] = 'Tidak bisa melakukan operasi. Folder hanya bisa dibaca.';
$messages['errornoperm'] = 'Tidak bisa melakukan operasi. Ijin ditolak.';
$messages['erroroverquota'] = 'Tidak dapat melakukan operasi. Disk penuh.';
$messages['erroroverquotadelete'] = 'Disk penuh. Tekan SHIFT + DEL untuk menghapus pesan';
$messages['invalidrequest'] = 'Permintaan tidak valid! Tidak ada data yang tersimpan.';
$messages['invalidhost'] = 'Nama server invalid.';
$messages['nomessagesfound'] = 'Surat tidak ditemukan di kotak masuk ini';
$messages['loggedout'] = 'Anda telah sukses mengakhiri sesi. Selamat tinggal!';
$messages['mailboxempty'] = 'Kotak masuk kosong';
$messages['nomessages'] = 'Tidak ada pesan';
$messages['refreshing'] = 'Menyegarkan...';
$messages['loading'] = 'Memuat...';
$messages['uploading'] = 'Menggungah berkas ...';
$messages['attaching'] = 'Melampirkan berkas...';
$messages['uploadingmany'] = 'Mengunggah berkas-berkas...';
$messages['loadingdata'] = 'Memuat data...';
$messages['checkingmail'] = 'Memeriksa pesan baru...';
$messages['sendingmessage'] = 'Mengirim pesan...';
$messages['messagesent'] = 'Pesan berhasil dikirim.';
$messages['savingmessage'] = 'Menyimpan pesan...';
$messages['messagesaved'] = 'Pesan tersimpan kedalam Konsep';
$messages['successfullysaved'] = 'Berhasil disimpan';
$messages['savingresponse'] = 'Meyimpan pesan tanggapan....';
$messages['deleteresponseconfirm'] = 'Anda yakin ingin menghapus pesan tanggapan ini?';
$messages['nocontactselected'] = 'Anda belum memilih suatu kontak.';
$messages['addedsuccessfully'] = 'Kontak berhasil ditambahkan ke buku alamat';
$messages['contactexists'] = 'Kontak dengan alamat email yang sama sudah ada.';
$messages['contactnameexists'] = 'Kontak dengan nama yang sama sudah ada.';
$messages['blockedimages'] = 'Untuk melindungi privasi Anda, gambar-gambar diluar server diblok pada pesan ini.';
$messages['blockedresources'] = 'Untuk melindungi privasi Anda, sumber daya remote telah diblokir.';
$messages['encryptedmessage'] = 'Pesan ini terenkripsi dan tidak bisa ditampilkan. Maaf!';
$messages['externalmessagedecryption'] = 'Ini adalah pesan terenkripsi dan dapat didekripsi dengan ekstensi browser Anda.';
$messages['nopubkeyfor'] = 'Tak ada kunci publik yang ditemukan bagi $email';
$messages['nopubkeyforsender'] = 'Tidak ada kunci publik yang valid bagi identitas pengirim Anda. Apakah Anda hendak mengenkripsi pesan hanya bagi para penerima saja?';
$messages['encryptnoattachments'] = 'Lampiran yang telah diunggah tidak dapat dienkripsi. Harap tambahkan ulang lampiran dalam penyunting enkripsi.';
$messages['searchpubkeyservers'] = 'Apakah Anda ingin mencari di server kunci publik untuk kunci yang kurang?';
$messages['encryptpubkeysfound'] = 'Kunci publik berikut telah ditemukan:';
$messages['keyservererror'] = 'Gagal mendapat kunci dari server kunci.';
$messages['keyimportsuccess'] = 'Kunci publik $key sukses diimpor ke ring kunci Anda.';
$messages['nocontactsfound'] = 'Kontak tidak ditemukan';
$messages['contactnotfound'] = 'Kontak yang diminta tidak ditemukan';
$messages['contactsearchonly'] = 'Anda mesti memakai suatu formulir pencarian untuk melihat kontak dari buku alamat yang dipilih.';
$messages['sendingfailed'] = 'Gagal mengirim pesan.';
$messages['senttooquickly'] = 'Mohon tunggu $sec detik sebelum mengirim pesan ini.';
$messages['errorsavingsent'] = 'Kesalahan ketika menyimpan pesan terkirim.';
$messages['errorsaving'] = 'Kesalahan terjadi ketika menyimpan.';
$messages['errormoving'] = 'Pesan tidak bisa dipindahkan';
$messages['errorcopying'] = 'Pesan tidak dapat disalin';
$messages['errordeleting'] = 'Pesan tidak bisa dihapus';
$messages['errormarking'] = 'Tidak dapat menandai pesan';
$messages['alerttitle'] = 'Perhatian';
$messages['confirmationtitle'] = 'Apa Anda yakin...';
$messages['deletecontactconfirm']  = 'Apakah anda yakin untuk menghapus kontak terpilih?';
$messages['deletegroupconfirm']  = 'Yakinkah Anda ingin menhapus grup terpilih?';
$messages['deletemessagesconfirm'] = 'Yakin menghapus pesan terpilih?';
$messages['deletefolderconfirm']  = 'Apakah anda benar-benar ingin menghapus folder ini?';
$messages['movefolderconfirm']  = 'Apakah Anda benar-benar ingin memindah folder ini?';
$messages['purgefolderconfirm']  = 'Yakin menghapus semua pesan pada folder ini?';
$messages['contactdeleting'] = 'Menghapus kontak...';
$messages['groupdeleting'] = 'Menghapus grup...';
$messages['folderdeleting'] = 'Menghapus map...';
$messages['foldermoving'] = 'Memindahkan folder...';
$messages['foldersubscribing'] = 'Melanggankan folder';
$messages['folderunsubscribing'] = 'Berhenti melanggankan folder';
$messages['formincomplete'] = 'Formulir tidak terisi semua';
$messages['noemailwarning'] = 'Tolong masukkan alamat email yang valid';
$messages['nonamewarning']  = 'Tolong masukkan nama';
$messages['nopagesizewarning'] = 'Tolong masukkan ukuran halaman';
$messages['nosenderwarning'] = 'Harap masukkan alamat email pengirim.';
$messages['recipientsadded'] = 'Penerima telah ditambahkan.';
$messages['norecipientwarning'] = 'Tolong masukkan sedikitnya satu penerima';
$messages['disclosedrecipwarning'] = 'Semua penerima akan saling tahu alamat surel pihak lain. Untuk mencegah hal ini dan melindungi privasi mereka Anda dapat memakai ruas Bcc.';
$messages['disclosedreciptitle'] = 'Terlalu banyak penerima publik';
$messages['nosubjectwarning']  = '"Judul" kosong. Isi judul sekarang?';
$messages['nosubjecttitle']  = 'Tanpa subjek';
$messages['nobodywarning'] = 'Kirim pesan ini tanpa teks?';
$messages['notsentwarning'] = 'Pesan belum terkirim dan tersimpan. Apakah kamu ingin membuang pengubahan?';
$messages['restoresavedcomposedata'] = 'Sebelumnya disimpan tetapi pesan tidak terkirim ditemukan.\n\nJudul: $subject\nDisimpan: $date\n\nAnda yakin mengembalikan pesan ini?';
$messages['nosearchname'] = 'Tolong masukkan nama kontak atau alamat email';
$messages['notuploadedwarning'] = 'Proses upload belum selesai. Silahkan tunggu atau batalkan proses upload.';
$messages['searchsuccessful'] = '$nr pesan ditemukan';
$messages['contactsearchsuccessful'] = 'Ditemukan $nr  kontak';
$messages['searchnomatch'] = 'Pencarian hasilnya nihil';
$messages['searching'] = 'Mencari...';
$messages['checking'] = 'Memeriksa...';
$messages['stillsearching'] = 'Sedang mencari....';
$messages['nospellerrors'] = 'Tidak ditemukan kesalahan ejaan';
$messages['folderdeleted'] = 'Folder berhasil dihapus';
$messages['foldersubscribed'] = 'Folder berhasil dilanggankan';
$messages['folderunsubscribed'] = 'Folder berhasil berhenti dilanggankan';
$messages['deletedsuccessfully'] = 'Berhasil dihapus';
$messages['converting'] = 'Mengembalikan pesan ke format awal...';
$messages['messageopenerror'] = 'Tidak dapat mengambil pesan dari server';
$messages['filelinkerror'] = 'Gagal melampirkan berkas.';
$messages['fileuploaderror'] = 'Gagal mengunggah berkas';
$messages['filesizeerror'] = 'Berkas terunggah mencapai ukuran maksimal dari $size';
$messages['filecounterror'] = 'Anda dapat mengunggah maksimum $count berkas sekaligus.';
$messages['msgsizeerror'] = 'Gagal melampirkan sebuah berkas. Ukuran maksimum suatu pesan ($size) terlampaui.';
$messages['msgsizeerrorfwd'] = 'Ukuran maksimum suatu pesan ($size) terlampaui. $num pesan belum dilampirkan.';
$messages['copysuccess'] = 'Berhasil menyalin kontak $nr';
$messages['movesuccess'] = 'Berhasil memindahkan kontak $nr';
$messages['copyerror'] = 'Tidak dapat menyalin kontak';
$messages['moveerror'] = 'Tidak dapat memindahkan kontak';
$messages['sourceisreadonly'] = 'Sumber dari alamat ini hanya dapat dibaca';
$messages['errorsavingcontact'] = 'Tidak bisa menyimpan alamat kontak';
$messages['movingmessage'] = 'Memindahkan pesan...';
$messages['copyingmessage'] = 'Menyalin pesan...';
$messages['copyingcontact'] = 'Menyalin kontak...';
$messages['movingcontact'] = 'Memindahkan kontak(s)...';
$messages['deletingmessage'] = 'Menghapus pesan...';
$messages['markingmessage'] = 'Menandai Pesan...';
$messages['addingmember'] = 'Menambahkan kontak ke grup...';
$messages['removingmember'] = 'Menyingkirkan kontak dari grup...';
$messages['receiptsent'] = 'Berhasil mengirim pemberitahuan tanda terima telah terbaca';
$messages['errorsendingreceipt'] = 'Tidak dapat mengirim tanda terima';
$messages['deleteidentityconfirm'] = 'Yakin untuk menghapus identitas ini?';
$messages['nodeletelastidentity'] = 'Anda tidak bida mengapus identitas ini, ini identitas yang terakhir';
$messages['forbiddencharacter'] = 'Nama folder mengandung karakter terlarang';
$messages['selectimportfile'] = 'Mohon pilih sebuah berkas untuk diunggah';
$messages['addresswriterror'] = 'Buku alamat terpilih tidak dapat ditulisi';
$messages['contactaddedtogroup'] = 'Berhasil menambahkan kontak kedalam grup ini';
$messages['contactremovedfromgroup'] = 'Berhasil menghapus kontak dari grup ini';
$messages['nogroupassignmentschanged'] = 'Tidak ada perubahan tugas grup.';
$messages['importwait'] = 'Sedang mengimpor, harap menunggu...';
$messages['importformaterror'] = 'Proses import gagal. File yang di upload bukan file import yang valid.';
$messages['importconfirm'] = '<b>Berhasil mengimpor $inserted kontak</b>';
$messages['importconfirmskipped'] = '<b>$skipped entri yang sudah ada dilewatkan</b>';
$messages['importmessagesuccess'] = 'Berhasil mengimport $nr pesan';
$messages['importmessageerror'] = 'Gagal mengimport! File yang di upload buka pesan yang valid atau file mailbox';
$messages['opnotpermitted'] = 'Operasi tidak diperbolehkan!';
$messages['nofromaddress'] = 'Kurang alamat email dalam identitas yang dipilih.';
$messages['editorwarning'] = 'Mengubah tipe penyunting dapat menyebabkan pemformatan teks hilang. Apakah Anda hendak melanjutkan?';
$messages['httpreceivedencrypterror'] = 'Terjadi sebuah kesalahan pengaturan fatal. Segera hubungi administrator Anda. <b> Pesan Anda tidak bisa terkirim.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Koneksi ke server gagal';
$messages['smtpautherror'] = 'SMTP Error ($code): Otentifikasi gagal';
$messages['smtpfromerror'] = 'SMTP Error ($code): Gagal mengatur pengirim "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): Gagal menambah penerima "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error ($code): Tidak dapat menguraikan daftar penerima';
$messages['smtputf8error'] = 'Galat SMTP: Server tidak mendukung Unicode dalam alamat surel.';
$messages['smtpsizeerror'] = 'Galat SMTP: Ukuran pesan melampaui batas server ($limit)';
$messages['smtperror'] = 'SMTP Error : $msg';
$messages['emailformaterror'] = 'Alamat email tidak valid:$email';
$messages['toomanyrecipients'] = 'Terlalu banyak penerima. Batas maksimal penerima adalah $max';
$messages['maxgroupmembersreached'] = 'Jumlah grup melebihi jumlah maksimum $max';
$messages['internalerror'] = 'Terjadi kesalahan dari dalam. Silahkan coba kembali.';
$messages['contactdelerror'] = 'Kontak tidak bisa dihapus';
$messages['contactdeleted'] = 'Kontak berhasil dihapus';
$messages['contactrestoreerror'] = 'Tidak bisa mengembalikan kontak yang terhapus.';
$messages['contactrestored'] = 'Kontak berhasil dikembalikan.';
$messages['groupdeleted'] = 'Grup berhasil dihapus';
$messages['grouprenamed'] = 'Nama grup berhasil dirubah.';
$messages['groupcreated'] = 'Grup berhasil dibuat';
$messages['savedsearchdeleted'] = 'Pencarian tersimpan berhasil dihapus.';
$messages['savedsearchdeleteerror'] = 'Tidak bisa menghapus pencarian tersimpan.';
$messages['savedsearchcreated'] = 'Pencarian tersimpan berhasil dibuat.';
$messages['savedsearchcreateerror'] = 'Tidak bisa membuat pencarian tersimpan.';
$messages['messagedeleted'] = 'Pesan berhasil dihapus';
$messages['messagemoved'] = 'Pesan berhasil dipindahkan';
$messages['messagemovedtotrash'] = 'Pesan sukses dipindah ke Tong sampah.';
$messages['messagecopied'] = 'Pesan berhasil disalin';
$messages['messagemarked'] = 'Pesan berhasil ditandai';
$messages['autocompletechars'] = 'Masukkan setidaknya $min karakter untuk pelengkapan otomatis.';
$messages['autocompletemore'] = 'Ada banyak entri yang ditemukan. Tolong ketikkan lebih banyak karakter.';
$messages['namecannotbeempty'] = 'Nama tidak boleh kosong';
$messages['nametoolong'] = 'Nama terlalu panjang';
$messages['namedotforbidden'] = 'Nama folder tidak boleh diawali dengan titik.';
$messages['folderupdated'] = 'Folder berhasil diperbarui';
$messages['foldercreated'] = 'Folder berhasil dibuat';
$messages['invalidimageformat'] = 'Bukan format gambar yang valid';
$messages['mispellingsfound'] = 'Terdapat kesalahan ejaan pada pesan.';
$messages['parentnotwritable'] = 'Tidak bisa membuat/memindahkan map ke map induk. Tidak memiliki hak akses.';
$messages['messagetoobig'] = 'Pesan terlalu besar untuk diproses.';
$messages['attachmentvalidationerror'] = 'Lampiran ini mencurigakan karena tipenya tidak cocok dengan tipe yang dinyatakan dalam pesan. Bila Anda tidak mempercayai si pengirim, Anda jangan membukanya dalam peramban karena itu mungkin memuat isi yang jahat. <br/> <br/> <em> Diharapkan: $expected; ditemukan: $detected </em>';
$messages['noscriptwarning'] = 'Peringatan: Layanan ini membutuhkan Javascript! Untuk menggunakannya silahkan aktifkan Javascript di pengaturan browser Anda.';
$messages['messageissent'] = 'Pesan telah terkirim, tapi belum disimpan. Apakah Anda hendak menyimpannya sekarang?';
$messages['errnotfound'] = 'Berkas Tak Ditemukan';
$messages['errnotfoundexplain'] = 'Sumber daya yang diminta tidak ditemukan!';
$messages['errfailedrequest'] = 'Permintaan gagal';
$messages['errauthorizationfailed'] = 'Otorisasi Gagal';
$messages['errunauthorizedexplain'] = 'Tidak bisa verifikasi bahwa Anda punya hak untuk mengakses layanan ini!';
$messages['errrequestcheckfailed'] = 'Pemeriksaan Permintaan Gagal';
$messages['errcsrfprotectionexplain'] = "Untuk perlindungan Anda, akses ke sumber daya ini diamankan dari CSRF.\nBila Anda melihat ini, barangkali Anda tidak log out sebelum meninggalkan aplikasi web.\n\nInteraksi pengguna kini diperlukan untuk melanjutkan.";
$messages['errcontactserveradmin'] = 'Harap hubungi administrator server Anda.';
$messages['clicktoresumesession'] = 'Klik di sini untuk melanjutkan sesi Anda sebelumnya';
$messages['errcomposesession'] = 'Kesalahan sesi menulis surat';
$messages['errcomposesessionexplain'] = 'Sesi penulisan surat yang diminta tidak ditemukan.';
$messages['clicktocompose'] = 'Klik di sini untuk menulis pesan baru';
$messages['nosupporterror'] = 'Fitur ini tidak didukung oleh peramban web Anda.';
$messages['siginserted'] = 'Tanda tangan sukses disisipkan.';
$messages['responseinserted'] = 'Respons sukses disisipkan.';
$messages['listempty'] = 'Daftar ini kosong.';
$messages['listusebutton'] = 'Pakai tombol Buat untuk menambahkan sebuah record baru. ';
$messages['keypaircreatesuccess'] = 'Sebuah pasangan kunci baru telah sukses dibuat untuk $identity.';
localization/ro_RO/timezones.inc000064400000005267151727150530013004 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Africa';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:america'] = 'America';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:jerusalem'] = 'Ierusalim';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscova';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:prague'] = 'Praga';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Roma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Viena';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:tahiti'] = 'Tahiti';
localization/ro_RO/labels.inc000064400000065336151727150540012235 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bine aţi venit la $product';
$labels['username'] = 'Utilizator';
$labels['password'] = 'Parolă';
$labels['server'] = 'Server';
$labels['login'] = 'Autentificare';
$labels['menu'] = 'Meniu';
$labels['logout'] = 'Deconectare';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Setări personale';
$labels['addressbook'] = 'Agendă';
$labels['inbox'] = 'Primite';
$labels['drafts'] = 'Ciorne';
$labels['sent'] = 'Trimise';
$labels['trash'] = 'Gunoi';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Arata numele reale pentru folderele speciale';
$labels['subject'] = 'Subiect';
$labels['from'] = 'Expeditor';
$labels['sender'] = 'Expeditor';
$labels['to'] = 'Destinatar';
$labels['cc'] = 'Copie (CC)';
$labels['bcc'] = 'Copie oarbă (BCC)';
$labels['replyto'] = 'Răspunde la';
$labels['followupto'] = 'Followup La';
$labels['date'] = 'Data';
$labels['size'] = 'Mărime';
$labels['priority'] = 'Prioritate';
$labels['organization'] = 'Organizaţie';
$labels['readstatus'] = 'Citit/Necitit';
$labels['listoptions'] = 'Listează opţiunile...';
$labels['listoptionstitle'] = 'Listează opţiunile...';
$labels['mailboxlist'] = 'Dosare';
$labels['messagesfromto'] = 'Mesaje de la $from până la $to din $count';
$labels['threadsfromto'] = 'Grupuri de la $from până la $to din $count';
$labels['messagenrof'] = 'Mesajul $nr din $count';
$labels['fromtoshort'] = '$from - $to din $count';
$labels['copy'] = 'Copiază';
$labels['move'] = 'Mută';
$labels['moveto'] = 'Mută in...';
$labels['copyto'] = 'Copiază în...';
$labels['download'] = 'Descarcă';
$labels['open'] = 'Deschide';
$labels['showattachment'] = 'Arată';
$labels['showanyway'] = 'Arată oricum';
$labels['filename'] = 'Nume fişier';
$labels['filesize'] = 'Mărime fişier';
$labels['addtoaddressbook'] = 'Adaugă în agendă';
$labels['sun'] = 'Dum';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mie';
$labels['thu'] = 'Joi';
$labels['fri'] = 'Vin';
$labels['sat'] = 'Sâm';
$labels['sunday'] = 'Duminică';
$labels['monday'] = 'Luni';
$labels['tuesday'] = 'Marţi';
$labels['wednesday'] = 'Miercuri';
$labels['thursday'] = 'Joi';
$labels['friday'] = 'Vineri';
$labels['saturday'] = 'Sâmbătă';
$labels['jan'] = 'Ian';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Iun';
$labels['jul'] = 'Iul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Noi';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Ianuarie';
$labels['longfeb'] = 'Februarie';
$labels['longmar'] = 'Martie';
$labels['longapr'] = 'Aprilie';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Iunie';
$labels['longjul'] = 'Iulie';
$labels['longaug'] = 'August';
$labels['longsep'] = 'Septembrie';
$labels['longoct'] = 'Octombrie';
$labels['longnov'] = 'Noiembrie';
$labels['longdec'] = 'Decembrie';
$labels['today'] = 'Astăzi';
$labels['refresh'] = 'Actualizează';
$labels['checkmail'] = 'Verifică mesaje noi';
$labels['compose'] = 'Scrie un mesaj';
$labels['writenewmessage'] = 'Scrie mesaj nou';
$labels['reply'] = 'Răspunde';
$labels['replytomessage'] = 'Răspunde expeditorului';
$labels['replytoallmessage'] = 'Răspunde la toţi';
$labels['replyall'] = 'Răspunde la toţi';
$labels['replylist'] = 'Răspunde listei';
$labels['forward'] = 'Înaintează';
$labels['forwardinline'] = 'Înaintează ca citat';
$labels['forwardattachment'] = 'Înaintează ca ataşament';
$labels['forwardmessage'] = 'Trimite mesajul mai departe';
$labels['bouncemsg'] = 'Retrimite (returnat)';
$labels['bounce'] = 'Retrimite';
$labels['deletemessage'] = 'Șterge mesajul';
$labels['movemessagetotrash'] = 'Mută mesajul la gunoi';
$labels['printmessage'] = 'Listează mesajul';
$labels['previousmessage'] = 'Afişează mesajul anterior';
$labels['firstmessage'] = 'Afişează primul mesaj';
$labels['nextmessage'] = 'Afişează următorul mesaj';
$labels['lastmessage'] = 'Afişează ultimul mesaj';
$labels['backtolist'] = 'Înapoi la mesaje';
$labels['viewsource'] = 'Afişează sursa';
$labels['mark'] = 'Marchează';
$labels['markmessages'] = 'Marchează mesajele';
$labels['markread'] = 'Ca citit';
$labels['markunread'] = 'Ca necitit';
$labels['markflagged'] = 'Ca marcat';
$labels['markunflagged'] = 'Ca nemarcat';
$labels['moreactions'] = 'Mai multe acțiuni...';
$labels['markallread'] = 'Marchează tot ca citit';
$labels['folders-cur'] = 'Doar dosarul selectat';
$labels['folders-sub'] = 'Dosarul selectat și subdosarele acestuia';
$labels['folders-all'] = 'Toate dosarele';
$labels['more'] = 'Mai multe';
$labels['back'] = 'Înapoi';
$labels['options'] = 'Opţiuni';
$labels['first'] = 'Primul';
$labels['last'] = 'Ultimul';
$labels['previous'] = 'Precedentul';
$labels['next'] = 'Următorul';
$labels['select'] = 'Selectează';
$labels['all'] = 'Toate';
$labels['none'] = 'Niciunul';
$labels['currpage'] = 'Pagina curentă';
$labels['isread'] = 'Citit';
$labels['unread'] = 'Necitite';
$labels['flagged'] = 'Marcat';
$labels['unflagged'] = 'Nemarcat';
$labels['unanswered'] = 'Fără răspuns';
$labels['withattachment'] = 'Cu atașament';
$labels['deleted'] = 'Şterse';
$labels['undeleted'] = 'Nu a fost șters';
$labels['forwarded'] = 'Redirecționat';
$labels['invert'] = 'Inversează';
$labels['filter'] = 'Filtru';
$labels['list'] = 'Listă';
$labels['threads'] = 'Grupare după subiect';
$labels['expand-all'] = 'Extinde toate';
$labels['expand-unread'] = 'Extinde necitite';
$labels['collapse-all'] = 'Compactează toate';
$labels['threaded'] = 'Grupate';
$labels['autoexpand_threads'] = 'Extinde mesajele grupate';
$labels['do_expand'] = 'toate grupările';
$labels['expand_only_unread'] = 'doar pe cele cu mesaje necitite';
$labels['fromto'] = 'Expeditor/Destinatar';
$labels['flag'] = 'Marcaj';
$labels['attachment'] = 'Ataşament';
$labels['nonesort'] = 'Fără sortare';
$labels['sentdate'] = 'Data trimiterii';
$labels['arrival'] = 'Data primirii';
$labels['asc'] = 'ascendent';
$labels['desc'] = 'descendent';
$labels['listcolumns'] = 'Arată coloane';
$labels['listsorting'] = 'Sortează după';
$labels['listorder'] = 'Ordinea de sortare';
$labels['listmode'] = 'Mod de vizualizare';
$labels['layout'] = 'Aspect';
$labels['layoutwidescreen'] = 'Ecran panoramic';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Listă';
$labels['layoutwidescreendesc'] = 'Ecran panoramic (vizualizare pe 3 coloane)';
$labels['layoutlistdesc'] = 'Listă (fără previzualizare mail)';
$labels['folderactions'] = 'Acțiuni dosar...';
$labels['compact'] = 'Compactează';
$labels['empty'] = 'Goleşte';
$labels['importmessages'] = 'Import mesaje';
$labels['quota'] = 'Spaţiu folosit';
$labels['unknown'] = 'necunoscut';
$labels['unlimited'] = 'nelimitat';
$labels['quotatype'] = 'Tip cotă';
$labels['quotatotal'] = 'Limită';
$labels['quotaused'] = 'Folosit';
$labels['quotastorage'] = 'Spațiu disc';
$labels['quotamessage'] = 'Număr mesaje';
$labels['quicksearch'] = 'Căutare rapidă';
$labels['searchplaceholder'] = 'Caută...';
$labels['resetsearch'] = 'Anulează căutarea';
$labels['searchmod'] = 'Parametrii de căutare';
$labels['msgtext'] = 'Tot mesajul';
$labels['body'] = 'Corp';
$labels['type'] = 'Tip';
$labels['namex'] = 'Nume';
$labels['currentfolder'] = 'Dosarul curent';
$labels['allfolders'] = 'Toate dosarele';
$labels['searchinterval-1W'] = 'mai vechi de o săptămână';
$labels['searchinterval-1M'] = 'mai vechi de o lună';
$labels['searchinterval-1Y'] = 'mai vechi de un an';
$labels['searchinterval1W'] = 'mai nou de o săptămână';
$labels['searchinterval1M'] = 'mai nou de o lună';
$labels['searchinterval1Y'] = 'mai nou de un an';
$labels['openinextwin'] = 'Deschide în fereastră nouă';
$labels['emlsave'] = 'Salvează în format .eml';
$labels['changeformattext'] = 'Afișează în format text';
$labels['changeformathtml'] = 'Afișează în format HTML';
$labels['editasnew'] = 'Editează ca nou';
$labels['send'] = 'Trimite';
$labels['sendmessage'] = 'Trimite mesaj';
$labels['savemessage'] = 'Salvează ciornă';
$labels['addattachment'] = 'Ataşează fişier';
$labels['charset'] = 'Set de caractere';
$labels['editortype'] = 'Tip de editor';
$labels['returnreceipt'] = 'Returnează confirmare de primire';
$labels['dsn'] = 'Notificare despre starea trimiterii';
$labels['mailreplyintro'] = 'În $date, $sender a scris:';
$labels['originalmessage'] = 'Mesaj original';
$labels['selectimage'] = 'Alege imagine';
$labels['addimage'] = 'Adaugă imagine';
$labels['selectmedia'] = 'Alege videoclip';
$labels['addmedia'] = 'Adaugă videoclip';
$labels['encrypt'] = 'Criptează';
$labels['encryptmessage'] = 'Criptează mesaj';
$labels['encryptmessagemailvelope'] = 'Criptează mesajul cu Mailvelope';
$labels['importpubkeys'] = 'Importă chei publice';
$labels['encryptedsendialog'] = 'Se trimite mesaj criptat';
$labels['keyid'] = 'ID Cheie';
$labels['keylength'] = 'Biți';
$labels['keyexpired'] = 'Expirat';
$labels['keyrevoked'] = 'Revocat';
$labels['bccinstead'] = 'Folosește Bcc';
$labels['insert'] = 'Inserează';
$labels['recipient'] = 'Destinatar';
$labels['editidents'] = 'Editează identităţi';
$labels['spellcheck'] = 'Ortografie';
$labels['checkspelling'] = 'Verifică ortografie';
$labels['resumeediting'] = 'Reia editarea';
$labels['revertto'] = 'Revino la';
$labels['restore'] = 'Restaurează';
$labels['restoremessage'] = 'Restaurezi mesajul?';
$labels['ignore'] = 'Ignoră';
$labels['responses'] = 'Răspunsuri';
$labels['insertresponse'] = 'Adaugă un răspuns';
$labels['manageresponses'] = 'Administrează răspunsurile';
$labels['newresponse'] = 'Creează răspuns nou';
$labels['addresponse'] = 'Adaugă răspuns';
$labels['editresponse'] = 'Modifică răspunsul';
$labels['editresponses'] = 'Modifică răspunsurile';
$labels['responsename'] = 'Nume';
$labels['responsetext'] = 'Textul răspunsului';
$labels['attach'] = 'Ataşează';
$labels['attachments'] = 'Ataşamente';
$labels['upload'] = 'Încarcă';
$labels['uploadprogress'] = '$percent ($current din $total)';
$labels['close'] = 'Închide';
$labels['messageoptions'] = 'Opţiuni mesaj...';
$labels['attachmentrename'] = 'Redenumește atașament';
$labels['low'] = 'Mică';
$labels['lowest'] = 'Cea mai mică';
$labels['normal'] = 'Normală';
$labels['high'] = 'Mare';
$labels['highest'] = 'Cea mai mare';
$labels['nosubject'] = '(fără subiect)';
$labels['showimages'] = 'Afişează imagini';
$labels['alwaysshow'] = 'Afişează întotdeauna imaginile de la $sender';
$labels['isdraft'] = 'Acest mesaj este o ciornă.';
$labels['andnmore'] = '$nr mai multe...';
$labels['togglemoreheaders'] = 'Arată mai mult din antet';
$labels['togglefullheaders'] = 'Arată mai puțin din antet';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Text simplu';
$labels['savesentmessagein'] = 'Salvează mesajele trimise în';
$labels['dontsave'] = 'Nu salva';
$labels['maxuploadsize'] = 'Mărimea maxim admisă a fişierului este $size';
$labels['addcc'] = 'Adaugă CC';
$labels['addbcc'] = 'Adaugă BCC';
$labels['addreplyto'] = 'Adaugă Raspunde-La';
$labels['addfollowupto'] = 'Adaugă Followup-La';
$labels['mdnrequest'] = 'Expeditorul acestui mesaj a solicitat să fie notificat la cititrea mesajului. Doriţi să notificaţi expeditorul?';
$labels['receiptread'] = 'Returnează confirmare (citit)';
$labels['yourmessage'] = 'Aceasta este o confirmare de primire a mesajului dumneavoastră.';
$labels['receiptnote'] = 'Notă: Această confirmare doar vă informează că mesajul a fost afişat pe calculatorul destinatarului. Nu există nici o garanţie că destinatarul a citit sau a inţeles conţinutul mesajului.';
$labels['name'] = 'Numele Contact';
$labels['firstname'] = 'Nume';
$labels['surname'] = 'Prenume';
$labels['middlename'] = 'Iniţiala tatălui';
$labels['nameprefix'] = 'Prefix';
$labels['namesuffix'] = 'Sufix';
$labels['nickname'] = 'Poreclă';
$labels['jobtitle'] = 'Funcția';
$labels['department'] = 'Departament';
$labels['gender'] = 'Sex';
$labels['maidenname'] = 'Nume de fată';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresă';
$labels['street'] = 'Strada';
$labels['locality'] = 'Oraș';
$labels['zipcode'] = 'Cod poştal';
$labels['region'] = 'Stat/Judeţ';
$labels['country'] = 'Țara';
$labels['birthday'] = 'Ziua de naştere:';
$labels['anniversary'] = 'Aniversare';
$labels['website'] = 'Pagină web';
$labels['instantmessenger'] = 'IM (Mesaj Instant)';
$labels['notes'] = 'Notițe';
$labels['male'] = 'masculin';
$labels['female'] = 'feminin';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Soț/soție';
$labels['allfields'] = 'Toate câmpurile';
$labels['search'] = 'Căutare';
$labels['searchresult'] = 'Rezultate căutare';
$labels['advsearch'] = 'Căutare avansată';
$labels['advanced'] = 'Avansat';
$labels['other'] = 'Altele';
$labels['printcontact'] = 'Imprimă contact';
$labels['qrcode'] = 'Cod QR';
$labels['typehome'] = 'Acasă';
$labels['typework'] = 'Serviciu';
$labels['typeother'] = 'Altele';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax acasă';
$labels['typeworkfax'] = 'Fax serviciu';
$labels['typecar'] = 'Mașină';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Pagină de pornire';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Adaugă câmp...';
$labels['addcontact'] = 'Adaugă contact';
$labels['editcontact'] = 'Modifică contact';
$labels['contacts'] = 'Contacte';
$labels['contactproperties'] = 'Proprietăţile contactului...';
$labels['contactnameandorg'] = 'Nume și Organizație';
$labels['personalinfo'] = 'Informații personale';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Poză contact';
$labels['edit'] = 'Editează';
$labels['cancel'] = 'Renunţă';
$labels['save'] = 'Salvează';
$labels['delete'] = 'Şterge';
$labels['discard'] = 'Renunță';
$labels['rename'] = 'Redenumeşte';
$labels['addphoto'] = 'Adaugă';
$labels['replacephoto'] = 'Înlocuiește';
$labels['uploadphoto'] = 'Încarcă imagine';
$labels['newcontact'] = 'Creează contact nou';
$labels['deletecontact'] = 'Şterge contactul selectat';
$labels['composeto'] = 'Compune e-mail pentru';
$labels['contactsfromto'] = 'Contacte de la $from până la $to din $count';
$labels['print'] = 'Listează';
$labels['export'] = 'Exportă';
$labels['exportall'] = 'Exportă tot';
$labels['exportsel'] = 'Exportă partea selectată';
$labels['exportvcards'] = 'Exportă contactele în format vCard';
$labels['newgroup'] = 'Creează grup nou';
$labels['addgroup'] = 'Adaugă grup';
$labels['grouprename'] = 'Redenumește grupul';
$labels['groupdelete'] = 'Șterge grupul';
$labels['groupremoveselected'] = 'Șterge contactele selectate din grup';
$labels['uponelevel'] = 'Mai sus cu un nivel';
$labels['previouspage'] = 'Pagina anterioară';
$labels['firstpage'] = 'Prima pagină';
$labels['nextpage'] = 'Pagina următoare';
$labels['lastpage'] = 'Ultima pagină';
$labels['group'] = 'Grup';
$labels['groups'] = 'Grupuri';
$labels['listgroup'] = 'Lista membrii grupului';
$labels['personaladrbook'] = 'Adrese personale';
$labels['searchsave'] = 'Salvează căutarea';
$labels['searchdelete'] = 'Şterge căutarea';
$labels['import'] = 'Importă';
$labels['importcontacts'] = 'Importă contacte';
$labels['importfromfile'] = 'Importă din fișier';
$labels['importtarget'] = 'Adaugă contactele la';
$labels['importreplace'] = 'Înlocuieşte întreaga agendă';
$labels['importgroups'] = 'Importă atribuirile în grup';
$labels['importgroupsall'] = 'Toate (creează grupurile dacă este necesar)';
$labels['importgroupsexisting'] = 'Doar pentru grupurile existente';
$labels['done'] = 'Finalizat';
$labels['settingsfor'] = 'Setări pentru';
$labels['about'] = 'Despre';
$labels['preferences'] = 'Preferinţe';
$labels['userpreferences'] = 'Preferinţe utilizator';
$labels['editpreferences'] = 'Modifică preferinţe utilizator';
$labels['identities'] = 'Identităţi';
$labels['manageidentities'] = 'Administrează identități';
$labels['newidentity'] = 'Creează identitate nouă';
$labels['addidentity'] = 'Adaugă identitate';
$labels['editidentity'] = 'Modifică identitate';
$labels['identityencryption'] = 'Criptare';
$labels['preferhtml'] = 'Format HTML';
$labels['defaultcharset'] = 'Set implicit de caractere';
$labels['htmlmessage'] = 'Mesaj HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Semnătură digitală';
$labels['dateformat'] = 'Format dată';
$labels['timeformat'] = 'Format oră';
$labels['prettydate'] = 'Dată formatată';
$labels['setdefault'] = 'Setează implicit';
$labels['autodetect'] = 'Automat';
$labels['language'] = 'Limba';
$labels['timezone'] = 'Fus orar';
$labels['pagesize'] = 'Rânduri pe pagină';
$labels['signature'] = 'Semnătură';
$labels['dstactive'] = 'Reglare ora de vară';
$labels['showinextwin'] = 'Deschide mesajul în fereastră nouă';
$labels['composeextwin'] = 'Compune mesajul în fereastră nouă';
$labels['htmleditor'] = 'Scrie mesaje HTML';
$labels['htmlonreply'] = 'la răspunsul doar către un mesaj HTML';
$labels['htmlonreplyandforward'] = 'la trimitere mai departe sau la răspuns la mesaj HTML';
$labels['htmlsignature'] = 'Semnatură HTML';
$labels['showemail'] = 'Arată adresa email alături de nume afișat';
$labels['previewpane'] = 'Previzualizare mail';
$labels['skin'] = 'Temă interfaţă';
$labels['logoutclear'] = 'Goleşte Coşul de Gunoi la deconectare';
$labels['logoutcompact'] = 'Compactează dosarul Primite la deconectare';
$labels['uisettings'] = 'Interfaţă utilizator';
$labels['serversettings'] = 'Configuraţii server';
$labels['mailboxview'] = 'Afişare căsuţă poştală';
$labels['mdnrequests'] = 'Notificări expeditor';
$labels['askuser'] = 'întreabă-mă';
$labels['autosend'] = 'trimite automat';
$labels['autosendknown'] = 'trimite confirmarea de primire către contactele mele, în rest întreabă-mă';
$labels['autosendknownignore'] = 'trimite confirmarea de primire către contactele mele, în rest ignoră';
$labels['ignorerequest'] = 'ignoră solicitare';
$labels['readwhendeleted'] = 'Marchează mesajul ca citit la ştergere';
$labels['flagfordeletion'] = 'Marchează mesajul pentru ştergere în loc de a-l şterge direct';
$labels['skipdeleted'] = 'Nu arăta mesajele şterse';
$labels['deletealways'] = 'Dacă mutarea mesajelor în Coş eşuează, șterge-le';
$labels['deletejunk'] = 'Șterge direct mesajele în Junk';
$labels['showremoteimages'] = 'Arată imaginile care nu fac parte din e-mail';
$labels['fromknownsenders'] = 'de la expeditori cunoscuţi';
$labels['always'] = 'întotdeauna';
$labels['showinlineimages'] = 'Arată imaginile ataşate sub mesaj';
$labels['autosavedraft'] = 'Salvează ciorna automat';
$labels['everynminutes'] = 'la fiecare $n minut(e)';
$labels['refreshinterval'] = 'Actualizare (verificare mesaje noi, etc.)';
$labels['never'] = 'niciodată';
$labels['immediately'] = 'imediat';
$labels['messagesdisplaying'] = 'Afişarea mesajelor';
$labels['messagescomposition'] = 'Compunerea mesajelor';
$labels['mimeparamfolding'] = 'Nume ataşamente';
$labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (Altele)';
$labels['force7bit'] = 'Foloseşte encodarea MIME pentru caracterele cu 8 biţi';
$labels['advancedoptions'] = 'Opţiuni avansate';
$labels['focusonnewmessage'] = 'Focalizare pe fereastra browser-ului la mesaje noi';
$labels['checkallfolders'] = 'Verifică toate dosarele pentru mesaje noi';
$labels['defaultfont'] = 'Font-ul implicit al mesajului HTML';
$labels['mainoptions'] = 'Opţiuni principale';
$labels['browseroptions'] = 'Opțiuni browser';
$labels['section'] = 'Secţiune';
$labels['maintenance'] = 'Mentenanţă';
$labels['newmessage'] = 'Mesaj nou';
$labels['signatureoptions'] = 'Opţiuni semnătură';
$labels['whenreplying'] = 'Când răspundeţi';
$labels['replyempty'] = 'nu cita mesajul original';
$labels['replytopposting'] = 'începeţi mesajul nou deasupra originalului';
$labels['replytoppostingnoindent'] = 'Porniți un mesaj nou deasupra citatului (fără indentare)';
$labels['replybottomposting'] = 'începeţi mesajul nou dedesubtul originalului';
$labels['replyremovesignature'] = 'Când răspundeţi, se şterge semnătura originală din mesaj';
$labels['autoaddsignature'] = 'Adăugarea automată a semnăturii';
$labels['newmessageonly'] = 'numai la mesajele noi';
$labels['replyandforwardonly'] = 'numai la răspunsuri si cele trimise mai departe';
$labels['insertsignature'] = 'Introduce o semnătură';
$labels['sigbelow'] = 'Plasați semnătura sub mesajul citat';
$labels['sigseparator'] = 'Forțează separator standard în semnături';
$labels['afternseconds'] = 'după $n secunde';
$labels['reqmdn'] = 'Cere întotdeauna o confirmare de primire';
$labels['reqdsn'] = 'Cere întotdeauna o notificare a stării de trimitere';
$labels['replysamefolder'] = 'Pune răspunsurile în folder-ul mesajului la care se răspunde';
$labels['defaultabook'] = 'Agenda implicită';
$labels['autocompletesingle'] = 'Sari peste adresele e-mail alternative la autocompletare';
$labels['listnamedisplay'] = 'Listează contactele ca';
$labels['spellcheckbeforesend'] = 'Verifică ortografia înainte de a trimite un mesaj';
$labels['spellcheckoptions'] = 'Opţiuni verificare ortografie';
$labels['spellcheckignoresyms'] = 'Ignoră cuvintele cu simboluri';
$labels['spellcheckignorenums'] = 'Ignoră cuvintele cu numere';
$labels['spellcheckignorecaps'] = 'Ignoră cuvintele din litere mari';
$labels['addtodict'] = 'Adaugă la dicţionar';
$labels['mailtoprotohandler'] = 'Îregistrează handler protocol pentru mailto: link-uri';
$labels['standardwindows'] = 'Trateaza popupsurile ca ferestre standard';
$labels['forwardmode'] = 'Trimitere mai departe mesaj';
$labels['inline'] = 'într-e linii';
$labels['asattachment'] = 'ca atașament';
$labels['replyallmode'] = 'Acțiunea implicită pentru butonul [Răspunde la toți]';
$labels['replyalldefault'] = 'răspunde la toți';
$labels['replyalllist'] = 'răspunde listei (dacă este găsită)';
$labels['allmessages'] = 'toate mesajele';
$labels['folder'] = 'Dosar';
$labels['folders'] = 'Dosare';
$labels['foldername'] = 'Nume dosar';
$labels['subscribed'] = 'Înscris';
$labels['messagecount'] = 'Mesaje';
$labels['create'] = 'Creează';
$labels['createfolder'] = 'Creează dosar nou';
$labels['managefolders'] = 'Administrează dosare';
$labels['specialfolders'] = 'Dosare speciale';
$labels['properties'] = 'Proprietăți';
$labels['folderproperties'] = 'Proprietăţile folder-ului';
$labels['parentfolder'] = 'Dosar părinte';
$labels['location'] = 'Locație';
$labels['info'] = 'Informații';
$labels['getfoldersize'] = 'Click pentru dimensiunea dosarului';
$labels['changesubscription'] = 'Click pentru a modifica abonarea';
$labels['foldertype'] = 'Tip dosar';
$labels['personalfolder'] = 'Dosar privat';
$labels['otherfolder'] = 'Dosarul altui utilizator';
$labels['sharedfolder'] = 'Dosar public';
$labels['findfolders'] = 'Găsește dosare';
$labels['findcontacts'] = 'Găsește contacte';
$labels['findmail'] = 'Găsește mesaje';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Alți utilizatori';
$labels['namespace.shared'] = 'Partajat';
$labels['dualuselabel'] = 'Poate conține doar';
$labels['dualusemail'] = 'mesaje';
$labels['dualusefolder'] = 'dosare';
$labels['encryptioncreatekey'] = 'Creează cheie pereche nouă';
$labels['encryption'] = 'Criptare';
$labels['sortby'] = 'Sortează după';
$labels['sortasc'] = 'Sortează ascendent';
$labels['sortdesc'] = 'Sortează descendent';
$labels['undo'] = 'Anulaţi/Revocați';
$labels['installedplugins'] = 'Instalare module';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versiune';
$labels['source'] = 'Sursă';
$labels['license'] = 'Licență';
$labels['support'] = 'Cere asistenţă';
$labels['savedsearches'] = 'Căutări salvate';
$labels['B'] = 'O';
$labels['KB'] = 'KO';
$labels['MB'] = 'MO';
$labels['GB'] = 'GO';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englezesc';
$labels['westerneuropean'] = 'Europa de Vest';
$labels['easterneuropean'] = 'Europa de Est';
$labels['southeasterneuropean'] = 'Europa de Sud-Est';
$labels['baltic'] = 'Baltic';
$labels['cyrillic'] = 'Chirilic';
$labels['arabic'] = 'Arab';
$labels['greek'] = 'Grecesc';
$labels['hebrew'] = 'Evreiesc';
$labels['turkish'] = 'Turcesc';
$labels['nordic'] = 'Ţările Nordice';
$labels['thai'] = 'Tailandez';
$labels['celtic'] = 'Celtic';
$labels['vietnamese'] = 'Vietnamez';
$labels['japanese'] = 'Japonez';
$labels['korean'] = 'Coreean';
$labels['chinese'] = 'Chinezesc';
$labels['arialabeltopnav'] = 'Controlul ferestrelor';
$labels['arialabeltasknav'] = 'Sarcini aplicații';
$labels['arialabeltoolbar'] = 'Bară instrumente aplicații';
$labels['arialabelactivetask'] = 'Sarcină activă';
$labels['arialabelmailsearchform'] = 'Formulare căutare mesaj email';
$labels['arialabelcontactsearchform'] = 'Formular căutare contacte';
$labels['arialabelfoldersearchform'] = 'Formular căutare dosar';
$labels['arialabelmailpreviewframe'] = 'Previzualizare mesaj';
$labels['arialabelmailboxmenu'] = 'Meniu acțiuni dosar';
$labels['arialabelmessagebody'] = 'Corp mesaj';
$labels['arialabelmessageactions'] = 'Acțiuni mesaj';
$labels['arialabelcontactquicksearch'] = 'Formular căutare contacte';
$labels['arialabelmessageheaders'] = 'Antete mesaj';
$labels['arialabelforwardingoptions'] = 'Opțiuni redirecționare';
$labels['arialabelreplyalloptions'] = 'Opțiuni Răspunde la toți';
$labels['arialabelmoremessageactions'] = 'Mai multe acțiuni mesaj';
$labels['arialabelmarkmessagesas'] = 'Marchează mesajele selectate ca și...';
$labels['arialabelattachmentuploadform'] = 'Formular încărcare atașament';
$labels['arialabelattachmentmenu'] = 'Opțiuni atașament';
$labels['arialabelattachmentpreview'] = 'Previzualizare atașament';
$labels['arialabelcontactexportoptions'] = 'Opțiuni export contact';
$labels['arialabelabookgroupoptions'] = 'Opțiuni Agendă/Grup';
$labels['arialabelpreferencesform'] = 'Formular preferințe';
$labels['arialabelidentityeditfrom'] = 'Formular modificare identitate';
$labels['arialabelresponseeditfrom'] = 'Formular modificare răspuns';
$labels['arialabelsearchterms'] = 'Termenii căutării';
$labels['arialabeldropactionmenu'] = 'Meniu acțiune Drag-n-Drop';
localization/ro_RO/messages.inc000064400000037110151727150540012567 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'A avut loc o EROARE!';
$messages['loginfailed']  = 'Autentificare eşuată';
$messages['cookiesdisabled'] = 'Browserul dumneavoastră nu acceptă cookies';
$messages['sessionerror'] = 'Sesiunea dumneavoastră este invalidă sau a expirat';
$messages['storageerror'] = 'Conectarea la serverul IMAP a eşuat';
$messages['servererror'] = 'Eroare de server!';
$messages['servererrormsg'] = 'Eroare Server: $msg';
$messages['accountlocked'] = 'Prea multe încercări de conectare nereușite. Încearcați mai târziu.';
$messages['connerror'] = 'Eroare de conexiune (Serverul nu a fost găsit)!';
$messages['dberror'] = 'Eroare bază de date!';
$messages['windowopenerror'] = 'Fereastra nouă a fost blocată!';
$messages['requesttimedout'] = 'Timpul alocat cererii a expirat';
$messages['errorreadonly'] = 'Nu se poate efectua operaţiunea. Dosarul este disponibil doar pentru citire.';
$messages['errornoperm'] = 'Nu se poate efectua operaţiunea. Acces interzis.';
$messages['erroroverquota'] = 'Nu se poate efectua operația. Nu există spațiu liber.';
$messages['erroroverquotadelete'] = 'Nu există spațiu liber. Folosiți SHIFT+DEL pentru a șterge un mesaj.';
$messages['invalidrequest'] = 'Solicitare invalidă! Datele nu au fost salvate.';
$messages['invalidhost'] = 'Nume server invalid.';
$messages['nomessagesfound'] = 'Nu a fost găsit nici un mesaj în această căsuţă poştală';
$messages['mailboxempty'] = 'Căsuţa poştală este goală';
$messages['nomessages'] = 'Nici un mesaj';
$messages['refreshing'] = 'Reîmprospătare...';
$messages['loading'] = 'Se încarcă...';
$messages['uploading'] = 'Fişierul se încarcă...';
$messages['attaching'] = 'Fișierul se atașează....';
$messages['uploadingmany'] = 'Încarc fişierele...';
$messages['loadingdata'] = 'Se încarcă informaţiile...';
$messages['checkingmail'] = 'Se verifică pentru mesaje noi...';
$messages['sendingmessage'] = 'Trimitere mesaj...';
$messages['messagesent'] = 'Mesajul a fost trimis cu succes!';
$messages['savingmessage'] = 'Salvare mesaj...';
$messages['messagesaved'] = 'Mesajul a fost salvat în Ciorne';
$messages['successfullysaved'] = 'Salvat cu succes.';
$messages['savingresponse'] = 'Se salvează textul pentru răspuns...';
$messages['deleteresponseconfirm'] = 'Chiar vrei să ștergi acest text pentru răspuns?';
$messages['addedsuccessfully'] = 'Contactul a fost adăugat cu succes în agendă';
$messages['contactexists'] = 'Există deja un contact cu aceeași adresă de e-mail.';
$messages['contactnameexists'] = 'Există deja un contact cu acelaşi nume.';
$messages['blockedimages'] = 'Pentru a vă proteja intimitatea, imaginile externe au fost blocate.';
$messages['encryptedmessage'] = 'Acesta este un mesaj criptat şi nu poate fi afişat. Ne pare rău.';
$messages['externalmessagedecryption'] = 'Acesta este un mesaj criptat și poate fi decriptat cu extensia dvs. de browser.';
$messages['nopubkeyfor'] = 'Nu a fost găsită nici o cheie publică validă pentru $email';
$messages['nopubkeyforsender'] = 'Nu a fost găsită nici o cheie publică validă pentru identitatea expeditorului dvs. Doriți să criptați mesajul doar pentru destinatari?';
$messages['encryptnoattachments'] = 'Atașamentele deja încărcate nu pot fi criptate. Vă rugăm re-adăugați-le în editorul de criptare.';
$messages['searchpubkeyservers'] = 'Doriți să căutați în servere de chei publice pentru cheile care lipsesc?';
$messages['encryptpubkeysfound'] = 'Au fost găsite următoarele chei publice:';
$messages['nocontactsfound'] = 'Nu s-a găsit nici un contact';
$messages['contactnotfound'] = 'Contactul solicitat nu a fost găsit.';
$messages['sendingfailed'] = 'Nu s-a reuşit trimiterea mesajului';
$messages['senttooquickly'] = 'Vă rugăm aşteptaţi $sec sec. înainte de a trimite acest mesaj';
$messages['errorsavingsent'] = 'A intervenit o eroare în timp ce se efectua salvarea mesajului trimis.';
$messages['errorsaving'] = 'A intervenit o eroare în timp ce se efectua salvarea.';
$messages['errormoving'] = 'Nu am putut muta mesajul (mesajele).';
$messages['errorcopying'] = 'Nu am putut copia mesajul (mesajele).';
$messages['errordeleting'] = 'Nu am putut şterge mesajul (mesajele).';
$messages['errormarking'] = 'Nu am putut marca mesajul (mesajele)';
$messages['deletecontactconfirm']  = 'Sunteţi sigur că doriţi să ştergeţi contactul/ele selectat(e)?';
$messages['deletegroupconfirm']  = 'Sunteţi sigur că doriţi să ştergeţi grupul selectat?';
$messages['deletemessagesconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi mesajul (mesajele) selectate ?';
$messages['deletefolderconfirm']  = 'Sunteţi sigur că doriţi să ştergeţi acest dosar?';
$messages['purgefolderconfirm']  = 'Sunteţi sigur că doriţi să ştergeţi toate mesajele din acest dosar?';
$messages['contactdeleting'] = 'Şterg contactul (ele)...';
$messages['groupdeleting'] = 'Şterg grupul...';
$messages['folderdeleting'] = 'Se şterge dosarul...';
$messages['foldermoving'] = 'Se mută dosarul...';
$messages['foldersubscribing'] = 'Abonez dosarul...';
$messages['folderunsubscribing'] = 'Dezabonez dosarul...';
$messages['formincomplete'] = 'Formularul nu a fost completat corect';
$messages['noemailwarning'] = 'Vă rugăm să introduceţi o adresă de e-mail validă';
$messages['nonamewarning']  = 'Vă rugăm să introduceţi un nume';
$messages['nopagesizewarning'] = 'Vă rugăm să introduceţi mărimea paginii';
$messages['nosenderwarning'] = 'Vă rugăm introduceți adresa de e-mail a expeditorului.';
$messages['norecipientwarning'] = 'Vă rugăm să introduceţi cel puţin un destinatar';
$messages['disclosedrecipwarning'] = 'Toți destinatarii vor vedea adresele email ale celorlalți. Pentru a preveni acest lucru și pentru a le proteja confidențialitatea, puteți folosi câmpul Bcc.';
$messages['disclosedreciptitle'] = 'Prea mulți destinatari';
$messages['nosubjectwarning']  = 'Mesajul nu are subiect. Vreţi să introduceţi unul acum?';
$messages['nosubjecttitle']  = 'Fără subiect';
$messages['nobodywarning'] = 'Trimiteţi acest mesaj fără text?';
$messages['notsentwarning'] = 'Mesajul nu a fost trimis și are modificări nesalvate. Doriți să renunțați la modificările dvs.?';
$messages['restoresavedcomposedata'] = 'Un mesaj compus anterior a fost găsit.\n\nSubiect:$subject\nSalvat: $date\n\nDoriţi restaurarea acestuia ?';
$messages['nosearchname'] = 'Vă rugăm să introduceţi un nume de contact sau adresă de e-mail';
$messages['notuploadedwarning'] = 'Nu toate fişierele au fost ataşate. Vă rugăm să aşteptaţi sau să anulaţi încărcarea acestora.';
$messages['searchsuccessful'] = '$nr mesaje găsite';
$messages['contactsearchsuccessful'] = '$nr contact(e) găsit(e).';
$messages['searchnomatch'] = 'Căutarea nu a returnat niciun rezultat';
$messages['searching'] = 'Se caută...';
$messages['checking'] = 'Se verifică...';
$messages['stillsearching'] = 'Se caută...';
$messages['nospellerrors'] = 'Nu s-a găsit nicio greşeală de ortografie';
$messages['folderdeleted'] = 'Dosarul a fost şters cu succes';
$messages['foldersubscribed'] = 'Dosarul a fost abonat cu succes.';
$messages['folderunsubscribed'] = 'Dosarul a fost dezabonat cu succes.';
$messages['deletedsuccessfully'] = 'Mesaj şters cu succes !';
$messages['converting'] = 'Resetez mesajul la parametrii iniţiali...';
$messages['messageopenerror'] = 'Nu s-a putut încărca mesajul din server';
$messages['filelinkerror'] = 'Atașarea fișierului a eșuat.';
$messages['fileuploaderror'] = 'Încărcarea pe server a eşuat';
$messages['filesizeerror'] = 'Fişierul încărcat depăşeşte dimensiunea de $size';
$messages['filecounterror'] = 'Puteți încărca maxim $count fișiere simultan.';
$messages['msgsizeerror'] = 'Nu s-a atașat un fișier. Dimensiunea maximă a unui mesaj ($size) a fost depășită.';
$messages['copysuccess'] = 'Am copiat cu succes $nr contacte.';
$messages['movesuccess'] = 'Am mutat cu succes $nr contacte.';
$messages['copyerror'] = 'Nu am putut copia nici un contact.';
$messages['moveerror'] = 'Nu am putut muta nici un contact.';
$messages['sourceisreadonly'] = 'Sursa acestei adrese este "read-only" (se poate doar citi)';
$messages['errorsavingcontact'] = 'Nu s-a putut salva adresa de contact';
$messages['movingmessage'] = 'Mutare mesaj....';
$messages['copyingmessage'] = 'Copiere mesaj...';
$messages['copyingcontact'] = 'Copiez contact(ele)...';
$messages['movingcontact'] = 'Se muta contactul (contactele) ...';
$messages['deletingmessage'] = 'Şterg mesaj(ele)...';
$messages['markingmessage'] = 'Marchez mesaj(ele)...';
$messages['addingmember'] = 'Adaug contact(ele) la grup...';
$messages['removingmember'] = 'Şterg contact(ele) din grup...';
$messages['receiptsent'] = 'Confirmarea de citire a fost trimisă cu succes';
$messages['errorsendingreceipt'] = 'Confirmarea nu a putut fi trimisă';
$messages['deleteidentityconfirm'] = 'Chiar vrei să ştergi aceasă identitate?';
$messages['nodeletelastidentity'] = 'Nu puteţi şterge această identitate, este ultima.';
$messages['forbiddencharacter'] = 'Numele dosarului conţine un caracter nepermis.';
$messages['selectimportfile'] = 'Va rugăm să selectaţi fişierul pentru încărcare';
$messages['addresswriterror'] = 'Agenda selectată nu poate fi actualizată, aceasta fiind disponibila doar pentru citire.';
$messages['contactaddedtogroup'] = 'Contactele au fost adăugate cu succes la acest grup';
$messages['contactremovedfromgroup'] = 'Contactele au fost şterse cu succes din acest grup';
$messages['nogroupassignmentschanged'] = 'Atribuirile la grupuri nu au fost modificate.';
$messages['importwait'] = 'Datele sunt importate, vă rugăm să aşteptaţi...';
$messages['importformaterror'] = 'Importul a eșuat! Fișierul încărcat nu este un fișier valid pentru import de date.';
$messages['importconfirm'] = '<b>$inserted contacte au fost importate cu succes, $skipped intrări au fost ignorate deoarece ele există deja: $names</b>';
$messages['importconfirmskipped'] = '<b>Am sărit peste $skipped înregistrări</b>';
$messages['importmessagesuccess'] = 'Am importat cu succes $nr mesaje.';
$messages['importmessageerror'] = 'Importarea a esuat. Fisierul incarca nu este un mesaj valid pentru email.';
$messages['opnotpermitted'] = 'Operaţiunea nu este permisă!';
$messages['nofromaddress'] = 'Lipsește adresa de email în identitatea selectată.';
$messages['editorwarning'] = 'Trecerea în mod text a editorului va cauza pierderea formatării textului. Doriţi să continuaţi?';
$messages['httpreceivedencrypterror'] = 'Vă rugăm să luaţi legătura cu administratorul serverului de mail, deoarece există o eroare în configuraţia acestuia. <b>Mesajul d-voastră nu a fost trimis.</b>';
$messages['smtpconnerror'] = 'Eroare SMTP ($code): Conexiunea cu serverul a eşuat';
$messages['smtpautherror'] = 'Eroare SMTP ($code): Autentificare eşuată';
$messages['smtpfromerror'] = 'Eroare SMTP ($code): Nu s-a putut seta expeditorul "$from" ($msg)';
$messages['smtptoerror'] = 'Eroare SMTP ($code): Nu s-a putut adăuga destinatarul "$to" ($msg)';
$messages['smtprecipientserror'] = 'Eroare SMTP: Nu s-a putut procesa lista cu destinatari';
$messages['smtperror'] = 'Eroare SMTP: $msg';
$messages['emailformaterror'] = 'Adresă email nevalidă: $email';
$messages['toomanyrecipients'] = 'Prea mulţi destinatari. Reduceţi numărul de destinatari la $max.';
$messages['maxgroupmembersreached'] = 'Numărul de membri ai grupului depăşeşte maximul de $max.';
$messages['internalerror'] = 'A avut loc o eroare internă. Te rog încearcă din nou.';
$messages['contactdelerror'] = 'Nu am putut şterge contact(ele).';
$messages['contactdeleted'] = 'Contact(ele) au fost şterse cu succes.';
$messages['contactrestoreerror'] = 'Nu am putut restaura contact(ele) şterse.';
$messages['contactrestored'] = 'Contact(ele) au fost restaurate cu succes.';
$messages['groupdeleted'] = 'Grupul a fost şters cu succes.';
$messages['grouprenamed'] = 'Grupul a fost redenumit cu succes.';
$messages['groupcreated'] = 'Grupul a fost creat cu succes.';
$messages['savedsearchdeleted'] = 'Căutarea salvată a fost ştearsă cu succes.';
$messages['savedsearchdeleteerror'] = 'Nu am putut şterge căutarea salvată.';
$messages['savedsearchcreated'] = 'Căutarea a fost salvată cu succes.';
$messages['savedsearchcreateerror'] = 'Nu am putut salva căutarea.';
$messages['messagedeleted'] = 'Mesajul (ele) a (u) fost şters (e) cu succes.';
$messages['messagemoved'] = 'Mesajul (ele) a (u) fost mutat (e) cu succes.';
$messages['messagemovedtotrash'] = 'Mesaj(e) mutat(e) cu succes în Coșul de Gunoi';
$messages['messagecopied'] = 'Mesajul (ele) a (u) fost copiat (e) cu succes.';
$messages['messagemarked'] = 'Mesajul (ele) a (u) fost marcat (e) cu succes.';
$messages['autocompletechars'] = 'Introdu măcar $min caractere pentru autocompletare.';
$messages['autocompletemore'] = 'Au fost găsite mai multe înregistrări. Introdu mai multe caractere.';
$messages['namecannotbeempty'] = '"Nume" nu poate fi gol.';
$messages['nametoolong'] = 'Numele este prea lung.';
$messages['namedotforbidden'] = 'Numele dosarului nu poate începe cu punct.';
$messages['folderupdated'] = 'Dosar actualizat cu succes.';
$messages['foldercreated'] = 'Dosar creat cu succes.';
$messages['invalidimageformat'] = 'Tip invalid de imagine.';
$messages['mispellingsfound'] = 'Au fost găsite greşeli de ortografie în mesaj.';
$messages['parentnotwritable'] = 'Nu pot crea/muta dosarul în dosarul părinte selectat. Fără drepturi de acces.';
$messages['messagetoobig'] = 'Partea de mesaj este prea mare pentru a o procesa.';
$messages['noscriptwarning'] = 'Atenție: Serviciul de webmail necesită Javascript! Pentru a-l utiliza vă rugăm activați Javascript în setările browserului.';
$messages['messageissent'] = 'Mesajul a fost deja trimis, dar încă nu a fost salvat.
Vreți să îl salvați acum?';
$messages['errnotfound'] = 'Fișierul nu a fost găsit';
$messages['errnotfoundexplain'] = 'Resursa solicitată nu a fost găsită!';
$messages['errfailedrequest'] = 'Solicitare eșuată';
$messages['errauthorizationfailed'] = 'Autorizarea nu a reușit';
$messages['errunauthorizedexplain'] = 'Nu s-a putut verifica dacă sunteți autorizat să accesați acest serviciu!';
$messages['errrequestcheckfailed'] = 'Verificarea solicitării a eșuat';
$messages['errcsrfprotectionexplain'] = "Pentru protecția dvs., accesul la această resursă este protejat împotriva CSRF.\nDacă vedeți acest lucru, probabil că nu v-ați deconectat înainte de a părăsi aplicația web.\n\nInteracțiunea umană este necesară acum pentru a continua.";
$messages['errcontactserveradmin'] = 'Vă rugăm contactați administratorul de server.';
$messages['clicktoresumesession'] = 'Faceți clic aici pentru a vă relua sesiunea anterioară';
$messages['errcomposesession'] = 'Eroare sesiune de compunere';
$messages['errcomposesessionexplain'] = 'Sesiunea de compunere solicitată nu a fost găsită.';
$messages['clicktocompose'] = 'Clic aici pentru a compune un mesaj nou';
localization/ja_JP/timezones.inc000064400000056020151727150540012741 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = '協定世界時';
$labels['tz:africa'] = 'アフリカ';
$labels['tz:africa:abidjan'] = 'アビジャン';
$labels['tz:africa:accra'] = 'アクラ';
$labels['tz:africa:addis_ababa'] = 'アディス・アベバ';
$labels['tz:africa:algiers'] = 'アルジェ';
$labels['tz:africa:asmara'] = 'アスマラ';
$labels['tz:africa:bamako'] = 'バマコ';
$labels['tz:africa:bangui'] = 'バンギ';
$labels['tz:africa:banjul'] = 'バンジュール';
$labels['tz:africa:bissau'] = 'ビサウ';
$labels['tz:africa:blantyre'] = 'ブランタイヤ';
$labels['tz:africa:brazzaville'] = 'ブラザヴィル';
$labels['tz:africa:bujumbura'] = 'ブジュンブラ';
$labels['tz:africa:cairo'] = 'カイロ';
$labels['tz:africa:casablanca'] = 'カサブランカ';
$labels['tz:africa:ceuta'] = 'セウタ';
$labels['tz:africa:conakry'] = 'コナクリ';
$labels['tz:africa:dakar'] = 'ダカール';
$labels['tz:africa:dar_es_salaam'] = 'ダルエスサラーム';
$labels['tz:africa:djibouti'] = 'ジブチ';
$labels['tz:africa:douala'] = 'ドゥアラ';
$labels['tz:africa:el_aaiun'] = 'アイウン';
$labels['tz:africa:freetown'] = 'フリータウン';
$labels['tz:africa:gaborone'] = 'ハボローネ';
$labels['tz:africa:harare'] = 'ハラレ';
$labels['tz:africa:johannesburg'] = 'ヨハネスブルグ';
$labels['tz:africa:juba'] = 'ジュバ';
$labels['tz:africa:kampala'] = 'カンパラ';
$labels['tz:africa:khartoum'] = 'ハルツーム';
$labels['tz:africa:kigali'] = 'キガリ';
$labels['tz:africa:kinshasa'] = 'キンシャサ';
$labels['tz:africa:lagos'] = 'ラゴス';
$labels['tz:africa:libreville'] = 'リーブルヴィル';
$labels['tz:africa:lome'] = 'ロメ';
$labels['tz:africa:luanda'] = 'ルアンダ';
$labels['tz:africa:lubumbashi'] = 'ルブンバシ';
$labels['tz:africa:lusaka'] = 'ルサカ';
$labels['tz:africa:malabo'] = 'マラボ';
$labels['tz:africa:maputo'] = 'マプト';
$labels['tz:africa:maseru'] = 'マセル';
$labels['tz:africa:mbabane'] = 'ムババーネ';
$labels['tz:africa:mogadishu'] = 'モガディシュ';
$labels['tz:africa:monrovia'] = 'モンロビア';
$labels['tz:africa:nairobi'] = 'ナイロビ';
$labels['tz:africa:ndjamena'] = 'ンジャメナ';
$labels['tz:africa:niamey'] = 'ニアメ';
$labels['tz:africa:nouakchott'] = 'ヌアクショット';
$labels['tz:africa:ouagadougou'] = 'ワガドゥグー';
$labels['tz:africa:porto-novo'] = 'ポルトノボ';
$labels['tz:africa:sao_tome'] = 'サントメ';
$labels['tz:africa:tripoli'] = 'トリポリ';
$labels['tz:africa:tunis'] = 'チュニス';
$labels['tz:africa:windhoek'] = 'ウィントフック';
$labels['tz:america'] = 'アメリカ';
$labels['tz:america:adak'] = 'アダック';
$labels['tz:america:anchorage'] = 'アンカレッジ';
$labels['tz:america:anguilla'] = 'アンギラ';
$labels['tz:america:antigua'] = 'アンティグア';
$labels['tz:america:araguaina'] = 'アラグァイーナ';
$labels['tz:america:argentina'] = 'アルゼンチン';
$labels['tz:america:argentina:buenos_aires'] = 'ブエノスアイレス';
$labels['tz:america:argentina:catamarca'] = 'カタマルカ';
$labels['tz:america:argentina:cordoba'] = 'コルドバ';
$labels['tz:america:argentina:jujuy'] = 'フフイ';
$labels['tz:america:argentina:la_rioja'] = 'ラ・リオハ';
$labels['tz:america:argentina:mendoza'] = 'メンドーサ';
$labels['tz:america:argentina:rio_gallegos'] = 'リオ・ガジェーゴス';
$labels['tz:america:argentina:salta'] = 'サルタ';
$labels['tz:america:argentina:san_juan'] = 'サン・フアン';
$labels['tz:america:argentina:san_luis'] = 'サン・ルイス';
$labels['tz:america:argentina:tucuman'] = 'トゥクマン';
$labels['tz:america:argentina:ushuaia'] = 'ウシュアイア';
$labels['tz:america:aruba'] = 'アルバ';
$labels['tz:america:asuncion'] = 'アスンシオン';
$labels['tz:america:atikokan'] = 'アティコーカン';
$labels['tz:america:bahia'] = 'バイーア';
$labels['tz:america:bahia_banderas'] = 'バイーア・デ・バンデラス';
$labels['tz:america:barbados'] = 'バルバドス';
$labels['tz:america:belem'] = 'ベレン';
$labels['tz:america:belize'] = 'ベリーズ';
$labels['tz:america:blanc-sablon'] = 'ブラン・サブロン';
$labels['tz:america:boa_vista'] = 'ボア・ヴィスタ';
$labels['tz:america:bogota'] = 'ボゴタ';
$labels['tz:america:boise'] = 'ボイシ';
$labels['tz:america:cambridge_bay'] = 'ケンブリッジ・ベイ';
$labels['tz:america:campo_grande'] = 'カンポ・グランデ';
$labels['tz:america:cancun'] = 'カンクン';
$labels['tz:america:caracas'] = 'カラカス';
$labels['tz:america:cayenne'] = 'カイエンヌ';
$labels['tz:america:cayman'] = 'ケイマン諸島';
$labels['tz:america:chicago'] = 'シカゴ';
$labels['tz:america:chihuahua'] = 'チワワ';
$labels['tz:america:costa_rica'] = 'コスタリカ';
$labels['tz:america:creston'] = 'クレストン';
$labels['tz:america:cuiaba'] = 'クイアバ';
$labels['tz:america:curacao'] = 'キュラソー島';
$labels['tz:america:danmarkshavn'] = 'デンマークシャン';
$labels['tz:america:dawson'] = 'ドーソン';
$labels['tz:america:dawson_creek'] = 'ドーソン・クリーク';
$labels['tz:america:denver'] = 'デンバー';
$labels['tz:america:detroit'] = 'デトロイト';
$labels['tz:america:dominica'] = 'ドミニカ';
$labels['tz:america:edmonton'] = 'エドモントン';
$labels['tz:america:eirunepe'] = 'エイルネペ';
$labels['tz:america:el_salvador'] = 'エルサルバドル';
$labels['tz:america:fort_nelson'] = 'フォートネルソン ';
$labels['tz:america:fortaleza'] = 'フォルタレザ';
$labels['tz:america:glace_bay'] = 'グレースベイ';
$labels['tz:america:godthab'] = 'ゴートホープ';
$labels['tz:america:goose_bay'] = 'グースベイ';
$labels['tz:america:grand_turk'] = 'グランドターク';
$labels['tz:america:grenada'] = 'グレナダ';
$labels['tz:america:guadeloupe'] = 'グアドループ';
$labels['tz:america:guatemala'] = 'グアテマラ';
$labels['tz:america:guayaquil'] = 'グアヤキル';
$labels['tz:america:guyana'] = 'ガイアナ';
$labels['tz:america:halifax'] = 'ハリファックス';
$labels['tz:america:havana'] = 'ハバナ';
$labels['tz:america:hermosillo'] = 'エルモシージョ';
$labels['tz:america:indiana'] = 'インディアナ';
$labels['tz:america:indiana:indianapolis'] = 'インディアナポリス';
$labels['tz:america:indiana:knox'] = 'ノックス';
$labels['tz:america:indiana:marengo'] = 'マレンゴ';
$labels['tz:america:indiana:petersburg'] = 'ピーターズバーグ';
$labels['tz:america:indiana:tell_city'] = 'テル・シティ';
$labels['tz:america:indiana:vevay'] = 'ベベイ';
$labels['tz:america:indiana:vincennes'] = 'ヴィンセンス';
$labels['tz:america:indiana:winamac'] = 'ウィナマク';
$labels['tz:america:inuvik'] = 'イヌヴィック';
$labels['tz:america:iqaluit'] = 'イカルイト';
$labels['tz:america:jamaica'] = 'ジャマイカ';
$labels['tz:america:juneau'] = 'ジュノー';
$labels['tz:america:kentucky'] = 'ケンタッキー';
$labels['tz:america:kentucky:louisville'] = 'ルイビル';
$labels['tz:america:kentucky:monticello'] = 'モンティチェロ';
$labels['tz:america:kralendijk'] = 'クラレンダイク';
$labels['tz:america:la_paz'] = 'ラパス';
$labels['tz:america:lima'] = 'リマ';
$labels['tz:america:los_angeles'] = ' ロサンゼルス';
$labels['tz:america:lower_princes'] = 'ローワー・プリンセズ';
$labels['tz:america:maceio'] = 'マセイオ';
$labels['tz:america:managua'] = 'マナグア';
$labels['tz:america:manaus'] = 'マナウス';
$labels['tz:america:marigot'] = 'マリゴ';
$labels['tz:america:martinique'] = 'マルティニーク';
$labels['tz:america:matamoros'] = 'マタモロス';
$labels['tz:america:mazatlan'] = 'マサトラン';
$labels['tz:america:menominee'] = 'メノミニー';
$labels['tz:america:merida'] = 'メリダ';
$labels['tz:america:metlakatla'] = 'メトラカトラ';
$labels['tz:america:mexico_city'] = 'メキシコ市';
$labels['tz:america:miquelon'] = 'ミクロン島';
$labels['tz:america:moncton'] = 'モンクトン';
$labels['tz:america:monterrey'] = 'モンテレイ';
$labels['tz:america:montevideo'] = 'モンテビデオ';
$labels['tz:america:montserrat'] = 'モントセラト';
$labels['tz:america:nassau'] = 'ナッソー';
$labels['tz:america:new_york'] = 'ニューヨーク';
$labels['tz:america:nipigon'] = 'ニピゴン';
$labels['tz:america:nome'] = 'ノーム';
$labels['tz:america:noronha'] = 'ノローニャ';
$labels['tz:america:north_dakota'] = 'ノースダコタ';
$labels['tz:america:north_dakota:beulah'] = 'ビューラー';
$labels['tz:america:north_dakota:center'] = 'センター';
$labels['tz:america:north_dakota:new_salem'] = 'ニューセーラム';
$labels['tz:america:ojinaga'] = 'オヒナガ';
$labels['tz:america:panama'] = 'パナマ';
$labels['tz:america:pangnirtung'] = 'パングナータング';
$labels['tz:america:paramaribo'] = 'パラマリボ';
$labels['tz:america:phoenix'] = 'フェニックス';
$labels['tz:america:port-au-prince'] = 'ポルトープランス';
$labels['tz:america:port_of_spain'] = 'ポートオブスペイン';
$labels['tz:america:porto_velho'] = 'ポルト・ヴェーリョ';
$labels['tz:america:puerto_rico'] = 'プエルトリコ';
$labels['tz:america:rainy_river'] = 'レイニーリバー';
$labels['tz:america:rankin_inlet'] = 'ランキン・インレット';
$labels['tz:america:recife'] = 'レシフェ';
$labels['tz:america:regina'] = 'レジャイナ';
$labels['tz:america:resolute'] = 'レゾリュート';
$labels['tz:america:rio_branco'] = 'リオ・ブランコ';
$labels['tz:america:santarem'] = 'サンタレン';
$labels['tz:america:santiago'] = 'サンティアゴ';
$labels['tz:america:santo_domingo'] = 'サントドミンゴ';
$labels['tz:america:sao_paulo'] = 'サンパウロ';
$labels['tz:america:scoresbysund'] = 'スコルズビスーン';
$labels['tz:america:sitka'] = 'シトカ';
$labels['tz:america:st_barthelemy'] = 'サン・バルテルミー島';
$labels['tz:america:st_johns'] = "セント・ジョンズ";
$labels['tz:america:st_kitts'] = 'セントキッツ島';
$labels['tz:america:st_lucia'] = 'セントルシア';
$labels['tz:america:st_thomas'] = 'セント・トーマス島';
$labels['tz:america:st_vincent'] = 'セントビンセント島';
$labels['tz:america:swift_current'] = 'スウィフトカレント';
$labels['tz:america:tegucigalpa'] = 'テグシガルパ';
$labels['tz:america:thule'] = 'チューレ';
$labels['tz:america:thunder_bay'] = 'サンダーベイ';
$labels['tz:america:tijuana'] = 'ティフアナ';
$labels['tz:america:toronto'] = 'トロント';
$labels['tz:america:tortola'] = 'トルトラ島';
$labels['tz:america:vancouver'] = 'バンクーバー';
$labels['tz:america:whitehorse'] = 'ホワイトホース';
$labels['tz:america:winnipeg'] = 'ウィニペグ';
$labels['tz:america:yakutat'] = 'ヤクタト';
$labels['tz:america:yellowknife'] = ' イエローナイフ';
$labels['tz:antarctica'] = '南極大陸';
$labels['tz:antarctica:casey'] = 'ケーシー基地';
$labels['tz:antarctica:davis'] = 'デービス基地';
$labels['tz:antarctica:dumontdurville'] = "デュモン・デュルヴィル基地";
$labels['tz:antarctica:macquarie'] = 'マッコーリー島';
$labels['tz:antarctica:mawson'] = 'モーソン基地';
$labels['tz:antarctica:mcmurdo'] = 'マクマード';
$labels['tz:antarctica:palmer'] = 'パーマー基地';
$labels['tz:antarctica:rothera'] = 'ロゼラ基地';
$labels['tz:antarctica:syowa'] = '昭和基地';
$labels['tz:antarctica:troll'] = 'トロル基地';
$labels['tz:antarctica:vostok'] = 'ボストーク基地';
$labels['tz:arctic'] = '北極圏';
$labels['tz:arctic:longyearbyen'] = 'ロングイェールビーン';
$labels['tz:asia'] = 'アジア';
$labels['tz:asia:aden'] = 'アデン';
$labels['tz:asia:almaty'] = 'アルマトイ';
$labels['tz:asia:amman'] = 'アンマン';
$labels['tz:asia:anadyr'] = 'アナディリ';
$labels['tz:asia:aqtau'] = 'アクタウ';
$labels['tz:asia:aqtobe'] = 'アクトベ';
$labels['tz:asia:ashgabat'] = 'アシガバート';
$labels['tz:asia:atyrau'] = 'アティラウ';
$labels['tz:asia:baghdad'] = 'バグダード';
$labels['tz:asia:bahrain'] = 'バーレーン';
$labels['tz:asia:baku'] = 'バクー';
$labels['tz:asia:bangkok'] = 'バンコク';
$labels['tz:asia:barnaul'] = 'バルナウル';
$labels['tz:asia:beirut'] = 'ベイルート';
$labels['tz:asia:bishkek'] = 'ビシュケク';
$labels['tz:asia:brunei'] = 'ブルネイ';
$labels['tz:asia:chita'] = 'チタ';
$labels['tz:asia:choibalsan'] = 'チョイバルサン';
$labels['tz:asia:colombo'] = 'コロンボ';
$labels['tz:asia:damascus'] = 'ダマスカス';
$labels['tz:asia:dhaka'] = 'ダッカ';
$labels['tz:asia:dili'] = 'ディリ';
$labels['tz:asia:dubai'] = 'ドバイ';
$labels['tz:asia:dushanbe'] = 'ドゥシャンベ';
$labels['tz:asia:famagusta'] = 'ファマグスタ';
$labels['tz:asia:gaza'] = 'ガザ';
$labels['tz:asia:hebron'] = 'ヘブロン';
$labels['tz:asia:ho_chi_minh'] = 'ホーチミン';
$labels['tz:asia:hong_kong'] = '香港';
$labels['tz:asia:hovd'] = 'ホブド';
$labels['tz:asia:irkutsk'] = 'イルクーツク';
$labels['tz:asia:jakarta'] = 'ジャカルタ';
$labels['tz:asia:jayapura'] = 'ジャヤプラ';
$labels['tz:asia:jerusalem'] = 'エルサレム';
$labels['tz:asia:kabul'] = 'カーブル';
$labels['tz:asia:kamchatka'] = 'カムチャツカ';
$labels['tz:asia:karachi'] = 'カラチ';
$labels['tz:asia:kathmandu'] = 'カトマンズ';
$labels['tz:asia:khandyga'] = 'ハンドゥイガ';
$labels['tz:asia:kolkata'] = 'コルカタ';
$labels['tz:asia:krasnoyarsk'] = 'クラスノヤルスク';
$labels['tz:asia:kuala_lumpur'] = 'クアラルンプール';
$labels['tz:asia:kuching'] = 'クチン';
$labels['tz:asia:kuwait'] = 'クウェート';
$labels['tz:asia:macau'] = 'マカオ';
$labels['tz:asia:magadan'] = 'マガダン';
$labels['tz:asia:makassar'] = 'マカッサル';
$labels['tz:asia:manila'] = 'マニラ';
$labels['tz:asia:muscat'] = 'マスカット';
$labels['tz:asia:nicosia'] = 'ニコシア';
$labels['tz:asia:novokuznetsk'] = 'ノヴォクズネツク';
$labels['tz:asia:novosibirsk'] = 'ノヴォシビルスク';
$labels['tz:asia:omsk'] = 'オムスク';
$labels['tz:asia:oral'] = 'オラル';
$labels['tz:asia:phnom_penh'] = 'プノンペン';
$labels['tz:asia:pontianak'] = 'ポンティアナック';
$labels['tz:asia:pyongyang'] = 'ピョンヤン';
$labels['tz:asia:qatar'] = 'カタール';
$labels['tz:asia:qyzylorda'] = 'クズロルダ';
$labels['tz:asia:riyadh'] = 'リヤド';
$labels['tz:asia:sakhalin'] = 'サハリン';
$labels['tz:asia:samarkand'] = 'サマルカンド';
$labels['tz:asia:seoul'] = 'ソウル';
$labels['tz:asia:shanghai'] = '上海';
$labels['tz:asia:singapore'] = 'シンガポール';
$labels['tz:asia:srednekolymsk'] = 'スレドネコリムスク';
$labels['tz:asia:taipei'] = '台北';
$labels['tz:asia:tashkent'] = 'タシュケント';
$labels['tz:asia:tbilisi'] = 'トビリシ';
$labels['tz:asia:tehran'] = 'テヘラン';
$labels['tz:asia:thimphu'] = 'ティンプー';
$labels['tz:asia:tokyo'] = '東京';
$labels['tz:asia:tomsk'] = 'トムスク';
$labels['tz:asia:ulaanbaatar'] = 'ウランバートル';
$labels['tz:asia:urumqi'] = 'ウルムチ';
$labels['tz:asia:ust-nera'] = 'ウスチ=ネラ';
$labels['tz:asia:vientiane'] = 'ヴィエンチャン';
$labels['tz:asia:vladivostok'] = 'ウラジオストク';
$labels['tz:asia:yakutsk'] = 'ヤクーツク';
$labels['tz:asia:yangon'] = 'ヤンゴン';
$labels['tz:asia:yekaterinburg'] = 'エカテリンブルク';
$labels['tz:asia:yerevan'] = 'エレバン';
$labels['tz:atlantic'] = '大西洋';
$labels['tz:atlantic:azores'] = 'アゾレス諸島';
$labels['tz:atlantic:bermuda'] = 'バミューダ諸島';
$labels['tz:atlantic:canary'] = 'カナリア諸島';
$labels['tz:atlantic:cape_verde'] = 'カーボベルデ';
$labels['tz:atlantic:faroe'] = 'フェロー諸島';
$labels['tz:atlantic:madeira'] = 'マデイラ諸島';
$labels['tz:atlantic:reykjavik'] = 'レイキャヴィーク';
$labels['tz:atlantic:south_georgia'] = 'サウスジョージア島';
$labels['tz:atlantic:st_helena'] = 'セントヘレナ';
$labels['tz:atlantic:stanley'] = 'スタンリー';
$labels['tz:australia'] = 'オーストラリア';
$labels['tz:australia:adelaide'] = 'アデレード';
$labels['tz:australia:brisbane'] = 'ブリスベン';
$labels['tz:australia:broken_hill'] = 'ブロークンヒル';
$labels['tz:australia:currie'] = 'カレー ';
$labels['tz:australia:darwin'] = 'ダーウィン';
$labels['tz:australia:eucla'] = 'ユークラ';
$labels['tz:australia:hobart'] = 'ホバート';
$labels['tz:australia:lindeman'] = 'リンデマン島';
$labels['tz:australia:lord_howe'] = 'ロード・ハウ島';
$labels['tz:australia:melbourne'] = 'メルボルン';
$labels['tz:australia:perth'] = 'パース';
$labels['tz:australia:sydney'] = 'シドニー';
$labels['tz:europe'] = 'ヨーロッパ';
$labels['tz:europe:amsterdam'] = 'アムステルダム';
$labels['tz:europe:andorra'] = 'アンドラ';
$labels['tz:europe:astrakhan'] = 'アストラハン';
$labels['tz:europe:athens'] = 'アテナ';
$labels['tz:europe:belgrade'] = 'ベオグラード';
$labels['tz:europe:berlin'] = 'ベルリン';
$labels['tz:europe:bratislava'] = 'ブラチスラヴァ';
$labels['tz:europe:brussels'] = 'ブリュッセル';
$labels['tz:europe:bucharest'] = 'ブカレスト';
$labels['tz:europe:budapest'] = 'ブダペスト';
$labels['tz:europe:busingen'] = 'ビュージンゲン';
$labels['tz:europe:chisinau'] = 'キシナウ';
$labels['tz:europe:copenhagen'] = 'コペンハーゲン';
$labels['tz:europe:dublin'] = 'ダブリン';
$labels['tz:europe:gibraltar'] = 'ジブラルタル';
$labels['tz:europe:guernsey'] = 'ガーンジー島';
$labels['tz:europe:helsinki'] = 'ヘルシンキ';
$labels['tz:europe:isle_of_man'] = 'マン島';
$labels['tz:europe:istanbul'] = 'イスタンブール';
$labels['tz:europe:jersey'] = 'ジャージー';
$labels['tz:europe:kaliningrad'] = 'カリーニングラード';
$labels['tz:europe:kiev'] = 'キエフ';
$labels['tz:europe:kirov'] = 'キーロフ';
$labels['tz:europe:lisbon'] = 'リスボン';
$labels['tz:europe:ljubljana'] = 'リュブリャナ';
$labels['tz:europe:london'] = 'ロンドン';
$labels['tz:europe:luxembourg'] = 'ルクセンブルク';
$labels['tz:europe:madrid'] = 'マドリード';
$labels['tz:europe:malta'] = 'マルタ';
$labels['tz:europe:mariehamn'] = 'マリエハムン';
$labels['tz:europe:minsk'] = 'ミンスク';
$labels['tz:europe:monaco'] = 'モナコ';
$labels['tz:europe:moscow'] = 'モスクワ';
$labels['tz:europe:oslo'] = 'オスロ';
$labels['tz:europe:paris'] = 'パリ';
$labels['tz:europe:podgorica'] = 'ポドゴリツァ';
$labels['tz:europe:prague'] = 'プラハ';
$labels['tz:europe:riga'] = 'リガ';
$labels['tz:europe:rome'] = 'ローマ';
$labels['tz:europe:samara'] = 'サマーラ';
$labels['tz:europe:san_marino'] = 'サンマリノ';
$labels['tz:europe:sarajevo'] = 'サラエヴォ';
$labels['tz:europe:saratov'] = 'サラトフ';
$labels['tz:europe:simferopol'] = 'シンフェローポリ';
$labels['tz:europe:skopje'] = 'スコピエ';
$labels['tz:europe:sofia'] = 'ソフィア';
$labels['tz:europe:stockholm'] = 'ストックホルム';
$labels['tz:europe:tallinn'] = 'タリン';
$labels['tz:europe:tirane'] = 'ティラナ';
$labels['tz:europe:ulyanovsk'] = 'ウリヤノフスク';
$labels['tz:europe:uzhgorod'] = 'ウージュホロド';
$labels['tz:europe:vaduz'] = 'ファドゥーツ';
$labels['tz:europe:vatican'] = 'バチカン';
$labels['tz:europe:vienna'] = 'ウィーン ';
$labels['tz:europe:vilnius'] = 'ヴィリニュス';
$labels['tz:europe:volgograd'] = 'ヴォルゴグラード';
$labels['tz:europe:warsaw'] = 'ワルシャワ';
$labels['tz:europe:zagreb'] = 'ザグレブ';
$labels['tz:europe:zaporozhye'] = 'ザポリージャ';
$labels['tz:europe:zurich'] = 'チューリッヒ';
$labels['tz:indian'] = 'インド洋';
$labels['tz:indian:antananarivo'] = 'アンタナナリボ';
$labels['tz:indian:chagos'] = 'チャゴス諸島';
$labels['tz:indian:christmas'] = 'クリスマス諸島';
$labels['tz:indian:cocos'] = 'ココス諸島';
$labels['tz:indian:comoro'] = 'コモロ諸島';
$labels['tz:indian:kerguelen'] = 'ケルゲレン諸島 ';
$labels['tz:indian:mahe'] = 'マーヒ';
$labels['tz:indian:maldives'] = 'モルディブ';
$labels['tz:indian:mauritius'] = 'モーリシャス';
$labels['tz:indian:mayotte'] = 'マヨット';
$labels['tz:indian:reunion'] = 'レユニオン';
$labels['tz:pacific'] = '太平洋';
$labels['tz:pacific:apia'] = 'アピア';
$labels['tz:pacific:auckland'] = 'オークランド';
$labels['tz:pacific:bougainville'] = 'ブーゲンビル島';
$labels['tz:pacific:chatham'] = 'チャタム諸島';
$labels['tz:pacific:chuuk'] = 'チューク諸島';
$labels['tz:pacific:easter'] = 'イースター島';
$labels['tz:pacific:efate'] = 'エファテ島';
$labels['tz:pacific:enderbury'] = 'エンダーベリー島';
$labels['tz:pacific:fakaofo'] = 'ファカオフォ島';
$labels['tz:pacific:fiji'] = 'フィジー';
$labels['tz:pacific:funafuti'] = 'フナフティ島';
$labels['tz:pacific:galapagos'] = 'ガラパゴス島';
$labels['tz:pacific:gambier'] = 'ガンビエ諸島';
$labels['tz:pacific:guadalcanal'] = 'ガダルカナル島';
$labels['tz:pacific:guam'] = 'グアム';
$labels['tz:pacific:honolulu'] = 'ホノルル';
$labels['tz:pacific:johnston'] = 'ジョンストン島';
$labels['tz:pacific:kiritimati'] = 'キリスィマスィ島';
$labels['tz:pacific:kosrae'] = 'コスラエ';
$labels['tz:pacific:kwajalein'] = 'クェゼリン環礁';
$labels['tz:pacific:majuro'] = 'マジュロ';
$labels['tz:pacific:marquesas'] = 'マルキーズ諸島';
$labels['tz:pacific:midway'] = 'ミッドウェー島';
$labels['tz:pacific:nauru'] = 'ナウル';
$labels['tz:pacific:niue'] = 'ニウエ';
$labels['tz:pacific:norfolk'] = 'ノーフォーク島';
$labels['tz:pacific:noumea'] = 'ヌメア';
$labels['tz:pacific:pago_pago'] = 'パゴパゴ';
$labels['tz:pacific:palau'] = 'パラオ';
$labels['tz:pacific:pitcairn'] = 'ピトケアン諸島';
$labels['tz:pacific:pohnpei'] = 'ポンペイ島';
$labels['tz:pacific:port_moresby'] = 'ポートモレスビー';
$labels['tz:pacific:rarotonga'] = 'ラロトンガ島';
$labels['tz:pacific:saipan'] = 'サイパン島';
$labels['tz:pacific:tahiti'] = 'タヒチ';
$labels['tz:pacific:tarawa'] = 'タラワ';
$labels['tz:pacific:tongatapu'] = 'トンガタプ島';
$labels['tz:pacific:wake'] = 'ウェーク島';
$labels['tz:pacific:wallis'] = 'ウォリス島';
localization/ja_JP/labels.inc000064400000111203151727150540012161 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$productにようこそ';
$labels['username'] = 'ユーザー名';
$labels['password'] = 'パスワード';
$labels['server'] = 'サーバー';
$labels['login'] = 'ログイン';
$labels['oauthlogin'] = '$provider でログイン';
$labels['menu'] = 'メニュー';
$labels['logout'] = 'ログアウト';
$labels['mail'] = '電子メール';
$labels['settings'] = '設定';
$labels['addressbook'] = 'アドレス帳';
$labels['darkmode'] = 'ダークモード';
$labels['lightmode'] = 'ライトモード';
$labels['inbox'] = '受信箱';
$labels['drafts'] = '下書き';
$labels['sent'] = '送信済み';
$labels['trash'] = 'ごみ箱';
$labels['junk'] = '迷惑メール';
$labels['show_real_foldernames'] = '特殊フォルダーの実際の名前を表示';
$labels['subject'] = '件名';
$labels['from'] = '発信者';
$labels['sender'] = '送信者';
$labels['to'] = '宛先';
$labels['cc'] = '写し(Cc)';
$labels['bcc'] = '隠した写し(Bcc)';
$labels['replyto'] = '返信先';
$labels['followupto'] = 'Followup-To';
$labels['date'] = '日付';
$labels['size'] = '大きさ';
$labels['priority'] = '優先度';
$labels['organization'] = '企業名';
$labels['readstatus'] = '閲覧の状態';
$labels['listoptions'] = '一覧のオプション...';
$labels['listoptionstitle'] = '一覧のオプション';
$labels['mailboxlist'] = 'フォルダー';
$labels['messagesfromto'] = '$count通の$from通目から$to通目のメッセージ';
$labels['threadsfromto'] = '$count通の$from通目から$to通目のスレッド';
$labels['messagenrof'] = '$count通の$nr通目のメッセージ';
$labels['fromtoshort'] = '$count通の$from通目から$to通目';
$labels['copy'] = 'コピー';
$labels['move'] = '移動';
$labels['moveto'] = 'フォルダーに移動';
$labels['copyto'] = 'コピー...';
$labels['download'] = 'ダウンロード';
$labels['open'] = '開く';
$labels['showattachment'] = '表示';
$labels['showanyway'] = 'とにかく表示';
$labels['filename'] = 'ファイル名';
$labels['filesize'] = 'ファイルの大きさ';
$labels['addtoaddressbook'] = 'アドレス帳に追加';
$labels['sun'] = '日';
$labels['mon'] = '月';
$labels['tue'] = '火';
$labels['wed'] = '水';
$labels['thu'] = '木';
$labels['fri'] = '金';
$labels['sat'] = '土';
$labels['sunday'] = '日曜日';
$labels['monday'] = '月曜日';
$labels['tuesday'] = '火曜日';
$labels['wednesday'] = '水曜日';
$labels['thursday'] = '木曜日';
$labels['friday'] = '金曜日';
$labels['saturday'] = '土曜日';
$labels['jan'] = '1月';
$labels['feb'] = '2月';
$labels['mar'] = '3月';
$labels['apr'] = '4月';
$labels['may'] = '5月';
$labels['jun'] = '6月';
$labels['jul'] = '7月';
$labels['aug'] = '8月';
$labels['sep'] = '9月';
$labels['oct'] = '10月';
$labels['nov'] = '11月';
$labels['dec'] = '12月';
$labels['longjan'] = '1月';
$labels['longfeb'] = '2月';
$labels['longmar'] = '3月';
$labels['longapr'] = '4月';
$labels['longmay'] = '5月';
$labels['longjun'] = '6月';
$labels['longjul'] = '7月';
$labels['longaug'] = '8月';
$labels['longsep'] = '9月';
$labels['longoct'] = '10月';
$labels['longnov'] = '11月';
$labels['longdec'] = '12月';
$labels['today'] = '今日';
$labels['refresh'] = '再読込み';
$labels['checkmail'] = '新しく届いたメッセージを確認';
$labels['compose'] = '新規作成';
$labels['writenewmessage'] = '新しいメッセージを作成';
$labels['reply'] = '返信';
$labels['replytomessage'] = '送信者に返信';
$labels['replytoallmessage'] = 'メーリングリスト、または送信者とすべての宛先に返信';
$labels['replyall'] = '全員に返信';
$labels['replylist'] = 'メーリングリストに返信';
$labels['forward'] = '転送';
$labels['forwardinline'] = '本文に挿入して転送';
$labels['forwardattachment'] = '添付ファイルとして転送';
$labels['forwardmessage'] = 'メッセージを転送';
$labels['bouncemsg'] = '再送(送り直し)';
$labels['bounce'] = '再送';
$labels['deletemessage'] = 'メッセージを削除';
$labels['movemessagetotrash'] = 'ごみ箱に移動';
$labels['printmessage'] = 'メッセージを印刷';
$labels['previousmessage'] = '前のメッセージを表示';
$labels['firstmessage'] = '最初のメッセージを表示';
$labels['nextmessage'] = '次のメッセージを表示';
$labels['lastmessage'] = '最後のメッセージを表示';
$labels['backtolist'] = 'メッセージの一覧に戻る';
$labels['viewsource'] = 'ソースを表示';
$labels['mark'] = 'マーク';
$labels['markmessages'] = 'マークを付ける';
$labels['markread'] = '既読に設定';
$labels['markunread'] = '未読に設定';
$labels['markflagged'] = 'フラグを設定';
$labels['markunflagged'] = 'フラグを解除';
$labels['markundeleted'] = '削除を解除';
$labels['moreactions'] = 'その他の操作...';
$labels['markallread'] = 'すべてを既読に設定';
$labels['folders-cur'] = '選択したフォルダーだけ';
$labels['folders-sub'] = '選択したフォルダーとその下位のフォルダー';
$labels['folders-all'] = 'すべてのフォルダー';
$labels['more'] = '続く';
$labels['back'] = '戻る';
$labels['options'] = 'オプション';
$labels['composeoptions'] = '作成のオプション';
$labels['optionsandattachments'] = 'オプションと添付ファイル';
$labels['actions'] = '動作';
$labels['first'] = '最初';
$labels['last'] = '最後';
$labels['previous'] = '前';
$labels['next'] = '次';
$labels['select'] = '選択';
$labels['selection'] = '選択範囲';
$labels['all'] = 'すべて';
$labels['none'] = 'なし';
$labels['currpage'] = '現在のページ';
$labels['isread'] = '既読';
$labels['unread'] = '未読';
$labels['flagged'] = 'フラグ付き';
$labels['unflagged'] = 'フラッグなし';
$labels['unanswered'] = '未返信';
$labels['withattachment'] = '添付ファイルあり';
$labels['deleted'] = '削除済み';
$labels['undeleted'] = '削除済みでない';
$labels['replied'] = '返信済み';
$labels['forwarded'] = '転送済み';
$labels['invert'] = '反転';
$labels['filter'] = 'フィルター';
$labels['list'] = '一覧';
$labels['threads'] = 'スレッド';
$labels['expand-all'] = 'すべて展開';
$labels['expand-unread'] = '未開封のメッセージを展開';
$labels['collapse-all'] = 'すべて折りたたむ';
$labels['threaded'] = 'スレッド化';
$labels['showunread'] = '未読のメッセージを表示';
$labels['autoexpand_threads'] = 'メッセージのスレッドを展開';
$labels['do_expand'] = 'すべてのスレッド';
$labels['expand_only_unread'] = '未読のメッセージだけ';
$labels['fromto'] = '発信者/宛先';
$labels['flag'] = 'フラグ';
$labels['attachment'] = '添付ファイル';
$labels['nonesort'] = 'なし';
$labels['sentdate'] = '送信日';
$labels['arrival'] = '受信日';
$labels['asc'] = '昇順';
$labels['desc'] = '降順';
$labels['listcolumns'] = '列を一覧';
$labels['listsorting'] = '並べ替える列';
$labels['listorder'] = '並べ替える順序';
$labels['listmode'] = '一覧表示モード';
$labels['lmode'] = '一覧モード';
$labels['layout'] = '配置';
$labels['layoutwidescreen'] = 'ワイド画面';
$labels['layoutdesktop'] = 'デスクトップ';
$labels['layoutlist'] = '一覧';
$labels['layoutwidescreendesc'] = 'ワイドスクリーン (3列の表示)';
$labels['layoutdesktopdesc'] = 'デスクトップ (広いリストと下にメールのプレビュー)';
$labels['layoutlistdesc'] = '一覧 (メールのプレビューなし)';
$labels['folderactions'] = 'フォルダーの操作...';
$labels['compact'] = '圧縮';
$labels['empty'] = '空';
$labels['importmessages'] = 'メッセージをインポート';
$labels['mailimportdesc'] = '<a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a>または<a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>形式を使用してメールをアップロードできます。';
$labels['mailimportzip'] = '複数のファイルをzipアーカイブに圧縮できます。';
$labels['quota'] = 'ディスクの使用状況';
$labels['unknown'] = '不明';
$labels['unlimited'] = '無制限';
$labels['quotatype'] = 'クォータの種類';
$labels['quotatotal'] = '限度';
$labels['quotaused'] = '使用';
$labels['quotastorage'] = 'ディスク容量';
$labels['quotamessage'] = 'メッセージ数';
$labels['shortheaderdate'] = '$date';
$labels['shortheaderto'] = '$date に $to 宛て';
$labels['shortheaderfrom'] = '$date に $from から';
$labels['quicksearch'] = '高速検索';
$labels['searchplaceholder'] = '検索...';
$labels['resetsearch'] = '検索を解除';
$labels['searchmod'] = '検索の条件';
$labels['msgtext'] = 'メッセージ全体';
$labels['body'] = '本文';
$labels['type'] = '種類';
$labels['namex'] = '名前';
$labels['searchscope'] = 'スコープ';
$labels['currentfolder'] = '現在のフォルダー';
$labels['subfolders'] = 'このフォルダーと下位のフォルダー';
$labels['allfolders'] = 'すべてのフォルダー';
$labels['searchinterval-1W'] = '1週間より前';
$labels['searchinterval-1M'] = '1か月より前';
$labels['searchinterval-1Y'] = '1年より前';
$labels['searchinterval1W'] = '1週間以内';
$labels['searchinterval1M'] = '1か月以内';
$labels['searchinterval1Y'] = '1年以内';
$labels['openinextwin'] = '新しいウィンドウで開く';
$labels['emlsave'] = 'ダウンロード(.eml形式)';
$labels['changeformattext'] = 'テキスト形式で表示';
$labels['changeformathtml'] = 'HTML形式で表示';
$labels['editasnew'] = '新しいメッセージとして編集';
$labels['send'] = '送信';
$labels['sendmessage'] = 'メッセージを送信';
$labels['savemessage'] = '下書きとして保存';
$labels['addattachment'] = 'ファイルを添付';
$labels['charset'] = '文字セット';
$labels['editortype'] = 'エディターの種類';
$labels['returnreceipt'] = '開封確認';
$labels['dsn'] = '配送状態通知';
$labels['keepformatting'] = '書式設定を保持';
$labels['mailreplyintro'] = '$date に $sender さんは書きました:';
$labels['originalmessage'] = '元のメッセージ';
$labels['selectimage'] = '画像を選択';
$labels['addimage'] = '画像を追加';
$labels['selectmedia'] = '動画を選択';
$labels['addmedia'] = '動画を追加';
$labels['encrypt'] = '暗号化';
$labels['encryptmessage'] = 'メッセージを暗号化';
$labels['encryptmessagemailvelope'] = 'Mailvelopeでメッセージを暗号化';
$labels['importpubkeys'] = '公開鍵をインポート';
$labels['encryptedsendialog'] = '暗号化したメッセージを送信中';
$labels['encryptandsign'] = '暗号化と署名';
$labels['keyid'] = 'キーID';
$labels['keylength'] = 'ビット';
$labels['keyexpired'] = '期限切れ';
$labels['keyrevoked'] = '取り消し済み';
$labels['bccinstead'] = 'Bccを使用';
$labels['addheader'] = '宛先を追加(ヘッダー)';
$labels['insert'] = '挿入';
$labels['insertcontact'] = '連絡先を挿入';
$labels['recipient'] = '宛先';
$labels['recipientedit'] = '宛先編集';
$labels['editidents'] = '識別情報を編集';
$labels['spellcheck'] = 'スペル';
$labels['checkspelling'] = 'スペルチェック';
$labels['resumeediting'] = '編集を再開';
$labels['revertto'] = '元に戻す';
$labels['restore'] = '回復';
$labels['restoremessage'] = 'メッセージを回復しますか?';
$labels['ignore'] = '無視';
$labels['responses'] = '回答';
$labels['insertresponse'] = '回答を挿入';
$labels['manageresponses'] = '回答を管理';
$labels['newresponse'] = '新しい回答を作成';
$labels['addresponse'] = '回答を追加';
$labels['editresponse'] = '回答を編集';
$labels['editresponses'] = '回答を編集';
$labels['responsename'] = '名前';
$labels['responsetext'] = '回答の文章';
$labels['attach'] = '添付';
$labels['attachments'] = '添付ファイル';
$labels['upload'] = 'アップロード';
$labels['uploadprogress'] = '$percent ($totalの$current)';
$labels['close'] = '閉じる';
$labels['messageoptions'] = 'メッセージのオプション...';
$labels['togglecomposeoptions'] = '作成のオプションを切り替え';
$labels['attachmentrename'] = '添付ファイルの名前を変更';
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '通常';
$labels['high'] = '高';
$labels['highest'] = '最高';
$labels['nosubject'] = '(件名なし)';
$labels['showimages'] = '画像を表示';
$labels['allow'] = '許可';
$labels['alwaysshow'] = '$sender から届いた画像は常に表示';
$labels['alwaysallow'] = '$sender からは常に許可';
$labels['isdraft'] = 'これは下書きのメッセージです。';
$labels['andnmore'] = 'さらに$nr件...';
$labels['details'] = '詳細';
$labels['summary'] = '要約';
$labels['headers'] = 'ヘッダー';
$labels['allheaders'] = 'すべてのヘッダー...';
$labels['togglemoreheaders'] = 'さらにメッセージのヘッダーを表示';
$labels['togglefullheaders'] = 'メッセージヘッダーの生の表示と切り替え';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'テキスト';
$labels['savesentmessagein'] = '送信したメッセージの保存先';
$labels['dontsave'] = '保存しない';
$labels['maxuploadsize'] = '添付可能なファイルは最大で$sizeです。';
$labels['addcc'] = '写し(Cc)を追加';
$labels['addbcc'] = '隠した写し(Bcc)を追加';
$labels['addreplyto'] = '返信先(Reply-To)を追加';
$labels['addfollowupto'] = 'フォロー先(Followup-Toを追加';
$labels['sendreceipt'] = '開封確認を送信しますか?';
$labels['mdnrequest'] = 'このメッセージを読んだときに、送信者が通知を受けたいと依頼しています。開封確認の通知を送信しますか?';
$labels['receiptread'] = '開封確認(表示済み)';
$labels['yourmessage'] = 'これはあなたが送信したメッセージに対する開封確認です。';
$labels['receiptnote'] = '注意: この開封確認は、メッセージが宛先のコンピューターで表示されたことだけを知らせるものです。受信者がメッセージを読んだり、内容を理解したと保証するものではありません。';
$labels['sendalwaysto'] = '常に $emailに送信';
$labels['zoomin'] = 'ズームイン';
$labels['zoomout'] = 'ズームアウト';
$labels['rotate'] = '回転';
$labels['increaseimage'] = '画像のサイズを増やす';
$labels['decreaseimage'] = '画像のサイズを減らす';
$labels['rotateimage'] = '画像を回転';
$labels['showtools'] = '画像ツールを表示';
$labels['hidetools'] = '画像ツールを非表示';
$labels['name'] = '表示名';
$labels['firstname'] = '名';
$labels['surname'] = '姓';
$labels['middlename'] = 'ミドルネーム';
$labels['nameprefix'] = '敬称(名前の前)';
$labels['namesuffix'] = '敬称(名前の後)';
$labels['nickname'] = 'ニックネーム';
$labels['jobtitle'] = '職名';
$labels['department'] = '部署名';
$labels['gender'] = '性別';
$labels['maidenname'] = '旧姓';
$labels['email'] = '電子メール';
$labels['phone'] = '電話番号';
$labels['address'] = '住所';
$labels['street'] = '住所';
$labels['locality'] = '都市';
$labels['zipcode'] = '郵便番号';
$labels['region'] = '都道府県';
$labels['country'] = '国';
$labels['birthday'] = '誕生日';
$labels['anniversary'] = '記念日';
$labels['website'] = 'ウェブサイト';
$labels['instantmessenger'] = 'インスタントメッセージ';
$labels['notes'] = '注釈';
$labels['male'] = '男性';
$labels['female'] = '女性';
$labels['manager'] = '管理者';
$labels['assistant'] = 'アシスタント';
$labels['spouse'] = '配偶者';
$labels['allfields'] = 'すべての項目';
$labels['search'] = '検索';
$labels['searchresult'] = '検索の結果';
$labels['advsearch'] = '高度な検索';
$labels['advanced'] = '高度';
$labels['other'] = 'その他';
$labels['printcontact'] = '連絡先を印刷';
$labels['qrcode'] = 'QRコード';
$labels['typehome'] = '自宅';
$labels['typework'] = '職場';
$labels['typeother'] = 'その他';
$labels['typemobile'] = 'モバイル';
$labels['typemain'] = '主回線';
$labels['typehomefax'] = '自宅ファクス';
$labels['typeworkfax'] = '職場のFax';
$labels['typecar'] = '車';
$labels['typepager'] = 'ページャー(ポケットベル)';
$labels['typevideo'] = '動画';
$labels['typeassistant'] = 'アシスタント';
$labels['typehomepage'] = 'ホームページ';
$labels['typeblog'] = 'ブログ';
$labels['typeprofile'] = 'プロフィール';
$labels['addfield'] = '項目を追加...';
$labels['addcontact'] = '連絡先を追加';
$labels['editcontact'] = '連絡先を編集';
$labels['contacts'] = '連絡先';
$labels['contactproperties'] = '連絡先の属性';
$labels['contactnameandorg'] = '名前と組織';
$labels['personalinfo'] = '個人情報';
$labels['personal'] = '個人';
$labels['contactphoto'] = '連絡先の写真';
$labels['edit'] = '編集';
$labels['cancel'] = '取り止め';
$labels['save'] = '保存';
$labels['delete'] = '削除';
$labels['discard'] = '破棄';
$labels['continue'] = '継続';
$labels['ok'] = 'OK';
$labels['rename'] = '名前を変更';
$labels['addphoto'] = '追加';
$labels['replacephoto'] = '置き換え';
$labels['uploadphoto'] = '写真をアップロード';
$labels['choosefile'] = 'ファイルを選択...';
$labels['choosefiles'] = 'ファイルを選択...';
$labels['browse'] = '閲覧';
$labels['newcontact'] = '新しい連絡先を作成';
$labels['deletecontact'] = '選択した連絡先を削除';
$labels['composeto'] = 'この連絡先宛にメッセージを作成';
$labels['contactsfromto'] = '$count件の連絡先の$from件目から$to件目';
$labels['print'] = '印刷';
$labels['export'] = 'エクスポート';
$labels['exportall'] = 'すべてエクスポート';
$labels['exportsel'] = '選択した連絡先をエクスポート';
$labels['exportvcards'] = 'vCard形式でエクスポート';
$labels['newgroup'] = '新しいグループを作成';
$labels['addgroup'] = 'グループを追加';
$labels['grouprename'] = 'グループ名を変更';
$labels['groupdelete'] = 'グループを削除';
$labels['groupassign'] = 'グループに割り当て...';
$labels['groupremove'] = 'グループから削除';
$labels['groupremoveselected'] = '選択した連絡先をグループから削除';
$labels['uponelevel'] = '1つ上のレベル';
$labels['previouspage'] = '前のページを表示';
$labels['firstpage'] = '最初のページを表示';
$labels['nextpage'] = '次のページを表示';
$labels['lastpage'] = '最後のページを表示';
$labels['group'] = 'グループ';
$labels['groups'] = 'グループ';
$labels['listgroup'] = 'グループのメンバーを一覧';
$labels['personaladrbook'] = '個人の住所';
$labels['searchsave'] = '検索情報を保存';
$labels['searchdelete'] = '検索情報を削除';
$labels['import'] = 'インポート';
$labels['importcontacts'] = '連絡先をインポート';
$labels['importfromfile'] = 'ファイルからインポート';
$labels['importtarget'] = '次に連絡先を追加';
$labels['importreplace'] = 'アドレス帳全体と置き換え';
$labels['importgroups'] = 'グループの割り当てをインポート';
$labels['importgroupsall'] = 'すべて (必要ならグループを作成)';
$labels['importgroupsexisting'] = '存在するグループだけ';
$labels['importdesc'] = '既存のアドレス帳から連絡先をアップロードできます。<br/>現在、<a href="https://en.wikipedia.org/wiki/VCard">vCard</a>またはCSV(コンマ区切り)のデータ形式からのアドレスの取り込みをサポートしています。';
$labels['importmapdesc'] = 'CSV(コンマ区切り)のデータのインポートを進める前に、以下の列の対応情報を確認してください。';
$labels['fieldnotmapped'] = '列の対応なし(無視)';
$labels['skipheader'] = '最初の行(ヘッダー)を無視';
$labels['done'] = '完了';
$labels['settingsfor'] = '次の設定:';
$labels['about'] = 'このプログラムについて';
$labels['preferences'] = '設定';
$labels['userpreferences'] = 'ユーザー設定';
$labels['editpreferences'] = 'ユーザー設定を変更';
$labels['identities'] = '識別情報';
$labels['manageidentities'] = '識別情報を管理';
$labels['newidentity'] = '新しい識別情報を作成';
$labels['addidentity'] = '識別情報を追加';
$labels['editidentity'] = '識別情報を編集';
$labels['identityencryption'] = '暗号化';
$labels['preferhtml'] = 'HTMLを表示';
$labels['defaultcharset'] = '初期設定の文字セット';
$labels['htmlmessage'] = 'HTMLメッセージ';
$labels['messagepart'] = 'パート';
$labels['digitalsig'] = 'デジタル署名';
$labels['dateformat'] = '日付の書式';
$labels['timeformat'] = '時刻の書式';
$labels['prettydate'] = '短い日付で表示';
$labels['setdefault'] = '初期値を設定';
$labels['autodetect'] = '自動識別';
$labels['language'] = '言語';
$labels['timezone'] = 'タイムゾーン';
$labels['pagesize'] = '1ページの表示件数';
$labels['signature'] = '署名';
$labels['dstactive'] = 'サマータイムを適用';
$labels['showinextwin'] = '新しいウィンドウでメッセージを表示';
$labels['composeextwin'] = '新しいウィンドウでメッセージを作成';
$labels['htmleditor'] = '作成時にHTMLメッセージを使用';
$labels['htmlonreply'] = '返信時にHTMLメッセージを使用';
$labels['htmlonreplyandforward'] = '転送またはHTMLメッセージへの返信';
$labels['htmlsignature'] = 'HTMLの署名';
$labels['showemail'] = '電子メールアドレスを表示名と共に表示';
$labels['previewpane'] = 'プレビュー枠の表示';
$labels['skin'] = 'インターフェイスのスキン';
$labels['logoutclear'] = 'ログアウト時にごみ箱の内容を消去';
$labels['logoutcompact'] = 'ログアウト時にフォルダーを整理';
$labels['uisettings'] = 'ユーザーインターフェイス';
$labels['serversettings'] = 'サーバーの設定';
$labels['mailboxview'] = '受信箱';
$labels['mdnrequests'] = '開封確認の要求の処理';
$labels['askuser'] = '開封確認の送信を確認';
$labels['autosend'] = '開封確認を送信';
$labels['autosendknown'] = '送信者が連絡先に登録されているなら開封確認を送信、そうでなければ確認';
$labels['autosendknownignore'] = '送信者が連絡先に登録されているなら開封確認を送信、そうでなければ無視';
$labels['autosendtrusted'] = '受信確認を信頼する送信者に送信、そうでなければ確認';
$labels['autosendtrustedignore'] = '受信確認を信頼する送信者に送信、そうでなければ無視';
$labels['ignorerequest'] = '要求を無視';
$labels['readwhendeleted'] = '削除したメッセージを既読に設定';
$labels['flagfordeletion'] = '削除する代わりに削除済みフラグを設定';
$labels['skipdeleted'] = '削除済みのメッセージを表示しない';
$labels['deletealways'] = 'ごみ箱への移動できなかったメッセージは削除';
$labels['deletejunk'] = '迷惑メールのメッセージを直接削除';
$labels['showremoteimages'] = '外部のインライン画像を表示';
$labels['allowremoteresources'] = 'リモートのリソース(画像、スタイル)を許可';
$labels['fromknownsenders'] = '送信者が知人の場合';
$labels['fromtrustedsenders'] = '信頼した送信者から';
$labels['frommycontacts'] = '連絡先のアドレスから';
$labels['always'] = '常時';
$labels['alwaysbutplain'] = 'テキスト形式で返信するときを除いて常時';
$labels['showinlineimages'] = 'メッセージに添付された画像を下に表示';
$labels['autosavedraft'] = '自動的に下書きを保存';
$labels['everynminutes'] = '$n分毎';
$labels['refreshinterval'] = '再表示 (新しいメッセージの確認等)';
$labels['never'] = 'しない';
$labels['immediately'] = '即時';
$labels['messagesdisplaying'] = 'メッセージの表示';
$labels['messagescomposition'] = 'メッセージの作成';
$labels['mimeparamfolding'] = '添付ファイルの名前';
$labels['2231folding'] = 'RFC 2231に完全準拠(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231(MS Outlook)';
$labels['2047folding'] = 'RFC 2047に完全準拠(その他)';
$labels['force7bit'] = '8ビット文字列にMIMEエンコードを使用';
$labels['savelocalstorage'] = "ブラウザのローカルストレージに(一時的に)保存";
$labels['advancedoptions'] = '高度な設定';
$labels['toggleadvancedoptions'] = '詳細なオプションの表示を切り替え';
$labels['focusonnewmessage'] = '新しいメッセージが届いたらブラウザーをアクティブ';
$labels['checkallfolders'] = 'すべてのフォルダーで新着メールを表示';
$labels['displaynext'] = '削除・移動した後で次の項目を表示';
$labels['defaultfont'] = 'HTMLメッセージの初期フォント';
$labels['mainoptions'] = '基本的な設定';
$labels['browseroptions'] = 'ブラウザーのオプション';
$labels['section'] = '設定項目';
$labels['maintenance'] = '保守';
$labels['newmessage'] = '新しいメッセージ';
$labels['signatureoptions'] = '署名の設定';
$labels['whenreplying'] = '返信時の本文';
$labels['replyempty'] = '元のメッセージを引用しない';
$labels['replytopposting'] = '元のメッセージを引用した前に本文を作成';
$labels['replytoppostingnoindent'] = '(字下げなしで)元のメッセージを引用した前に本文を作成';
$labels['replybottomposting'] = '元のメッセージを引用した後に本文を作成';
$labels['replyremovesignature'] = '返信時に元の署名をメッセージから削除';
$labels['autoaddsignature'] = '自動的に署名を付加';
$labels['newmessageonly'] = '新しいメッセージだけ';
$labels['replyandforwardonly'] = '返信と転送だけ';
$labels['insertsignature'] = '署名を挿入';
$labels['sigbelow'] = '引用したメッセージの後に署名を置く';
$labels['sigseparator'] = '強制的に署名に標準の分離記号を使用';
$labels['automarkread'] = 'メッセージを既読に設定';
$labels['afternseconds'] = '$n秒後';
$labels['reqmdn'] = '常に開封確認通知を要求';
$labels['reqdsn'] = '常に配送状態通知を要求';
$labels['replysamefolder'] = '返信したメッセージを元のメールと同じフォルダに保存';
$labels['defaultabook'] = '初期状態で使用するアドレス帳';
$labels['autocompletesingle'] = '自動補完で代替のメールアドレスを飛ばして進める';
$labels['listnamedisplay'] = '連絡先の一覧表示';
$labels['contactformmode'] = '次の連絡先から:';
$labels['privatemode'] = '私用(自宅)';
$labels['businessmode'] = '業務(仕事)';
$labels['collectedaddresses'] = '収集したアドレス';
$labels['collectedrecipients'] = '収集した宛先';
$labels['collectedrecipientsopt'] = '送信する電子メールの宛先の保存先';
$labels['collectedsendersopt'] = '信頼する送信者の保存先';
$labels['trustedsenders'] = '信頼する送信者';
$labels['spellcheckbeforesend'] = 'メッセージを送信する前にスペルチェック';
$labels['spellcheckoptions'] = 'スペルチェックのオプション';
$labels['spellcheckignoresyms'] = '記号を含む単語を無視';
$labels['spellcheckignorenums'] = '数字を含む単語を無視';
$labels['spellcheckignorecaps'] = 'すべて大文字の単語を無視';
$labels['addtodict'] = '辞書に追加';
$labels['mailtoprotohandler'] = 'mailto: のリンクを扱うプロトコル処理の登録';
$labels['standardwindows'] = 'ポップアップを通常のウィンドウとして処理';
$labels['forwardmode'] = 'メッセージの転送形式';
$labels['inline'] = 'インライン';
$labels['asattachment'] = '添付ファイル';
$labels['replyallmode'] = '「全員に返信」ボタンの既定の動作';
$labels['replyalldefault'] = '全員に返信';
$labels['replyalllist'] = 'メーリングリスト(とわかれば)だけに返信';
$labels['allmessages'] = 'すべてのメッセージ';
$labels['olderxdays'] = '$x日より前';
$labels['folder'] = 'フォルダー';
$labels['folders'] = 'フォルダー';
$labels['foldername'] = 'フォルダー名';
$labels['subscribed'] = '購読済み';
$labels['messagecount'] = 'メッセージ';
$labels['create'] = '作成';
$labels['createfolder'] = '新しいフォルダーを作成';
$labels['managefolders'] = 'フォルダーを管理';
$labels['specialfolders'] = '特殊なフォルダー';
$labels['properties'] = '属性';
$labels['folderproperties'] = 'フォルダーの属性';
$labels['parentfolder'] = '親のフォルダー';
$labels['location'] = '場所';
$labels['info'] = '情報';
$labels['getfoldersize'] = 'クリックしてフォルダーの大きさを取得';
$labels['changesubscription'] = 'クリックして購読状態を変更';
$labels['foldertype'] = 'フォルダーの種類';
$labels['personalfolder'] = '個人フォルダー';
$labels['otherfolder'] = '他のユーザーのフォルダー';
$labels['sharedfolder'] = '公開フォルダー';
$labels['findfolders'] = 'フォルダーを探す';
$labels['findcontacts'] = '連絡先を探す';
$labels['findmail'] = 'メールメッセージを探す';
$labels['namespace.personal'] = '個人';
$labels['namespace.other'] = '他のユーザー';
$labels['namespace.shared'] = '共有した';
$labels['dualuselabel'] = 'これだけ含められる';
$labels['dualusemail'] = 'メッセージ';
$labels['dualusefolder'] = 'フォルダー';
$labels['generate'] = '生成';
$labels['encryptioncreatekey'] = '新しい鍵ペアを作成';
$labels['openmailvelopesettings'] = 'Mailvelopeの設定を表示';
$labels['encryptionprivkeysinmailvelope'] = 'Mailvelopeのキーリングに$nr個の一致する秘密鍵:';
$labels['encryptionnoprivkeysinmailvelope'] = 'この送信者の識別情報へのPGP秘密鍵がMailvelope拡張にまだありません。メッセージの暗号化を有効にするためにPGP秘密鍵を作成しますか?';
$labels['encryption'] = '暗号化';
$labels['mailvelopeoptions'] = 'Mailvelopeのオプション';
$labels['mailvelopemainkeyring'] = 'Mailvelopeをメインのキーリングに使用';
$labels['mailvelopenotfound'] = 'ブラウザーでMailvelope拡張が無効またはインストールされていません。';
$labels['sortby'] = '並べ替え';
$labels['sortasc'] = '昇順で並べ替え';
$labels['sortdesc'] = '降順で並べ替え';
$labels['undo'] = '取り消し';
$labels['installedplugins'] = 'インストールしているプラグイン';
$labels['plugin'] = 'プラグイン';
$labels['version'] = 'バージョン';
$labels['source'] = 'ソース';
$labels['destination'] = '宛先';
$labels['license'] = 'ライセンス';
$labels['support'] = 'サポートを依頼';
$labels['savedsearches'] = '検索を保存';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'バイト';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = '英語';
$labels['westerneuropean'] = '西ヨーロッパ言語';
$labels['easterneuropean'] = '東ヨーロッパ言語';
$labels['southeasterneuropean'] = '南東ヨーロッパ言語';
$labels['baltic'] = 'バルト諸語';
$labels['cyrillic'] = 'キリル文字';
$labels['arabic'] = 'アラビア語';
$labels['greek'] = 'ギリシャ語';
$labels['hebrew'] = 'ヘブライ語';
$labels['turkish'] = 'トルコ語';
$labels['nordic'] = '北欧言語';
$labels['thai'] = 'タイ語';
$labels['celtic'] = 'ケルト語';
$labels['vietnamese'] = 'ベトナム語';
$labels['japanese'] = '日本語';
$labels['korean'] = '韓国語';
$labels['chinese'] = '中国語';
$labels['arialabeltopnav'] = 'ウィンドウ制御';
$labels['arialabeltasknav'] = 'アプリケーションのタスク';
$labels['arialabeltoolbar'] = 'アプリケーションのツールバー';
$labels['arialabellistnav'] = 'ナビゲーションを一覧';
$labels['arialabelactivetask'] = '活動中のタスク';
$labels['arialabelmessagessearchfilter'] = '電子メールの一覧のフィルター';
$labels['arialabelmailsearchform'] = '電子メールの検索欄';
$labels['arialabelcontactsearchform'] = '連絡先の検索欄';
$labels['arialabelmailquicksearchbox'] = '電子メールの検索を入力';
$labels['arialabelquicksearchbox'] = '検索を入力';
$labels['arialabelfoldersearchfilter'] = 'フォルダーの一覧のフィルター';
$labels['arialabelfoldersearchform'] = 'フォルダーの検索欄';
$labels['arialabelfolderlist'] = '電子メールのフォルダーの選択';
$labels['arialabelmessagelist'] = '電子メールのメッセージの一覧';
$labels['arialabelmailpreviewframe'] = 'メッセージのプレビュー';
$labels['arialabelmailboxmenu'] = 'フォルダーの操作メニュー';
$labels['arialabellistselectmenu'] = '一覧の選択メニュー';
$labels['arialabelthreadselectmenu'] = 'スレッドの一覧メニュー';
$labels['arialabelmessagelistoptions'] = 'メッセージの一覧の表示と並べ替えのオプション';
$labels['arialabelmailimportdialog'] = 'メッセージを取り込むダイアログ';
$labels['arialabelmessagenav'] = 'メッセージのナビゲーション';
$labels['arialabelmessagebody'] = 'メッセージの本文';
$labels['arialabelmessageactions'] = 'メッセージの操作';
$labels['arialabelcontactquicksearch'] = '連絡先の検索欄';
$labels['arialabelcontactsearchbox'] = '連絡先を入力';
$labels['arialabelmessageheaders'] = 'メッセージのヘッダー';
$labels['arialabelforwardingoptions'] = '転送のオプション';
$labels['arialabelreplyalloptions'] = '全員に返信のオプション';
$labels['arialabelmoremessageactions'] = 'さらにメッセージを操作';
$labels['arialabelmorecontactactions'] = 'さらに連絡先を操作';
$labels['arialabelmarkmessagesas'] = '選択したメッセージに次のマーク...';
$labels['arialabelcomposeoptions'] = '作成のオプション';
$labels['arialabelresponsesmenu'] = '回答テンプレートメニュー';
$labels['arialabelattachmentuploadform'] = '添付ファイルのアップロードフォーム';
$labels['arialabelattachmentmenu'] = '添付ファイルのオプション';
$labels['arialabelmailtomenu'] = '電子メールアドレスのオプション';
$labels['arialabelattachmentpreview'] = '添付ファイルのプレビュー';
$labels['ariasummarycomposecontacts'] = '宛先として選択する連絡先とグループの一覧';
$labels['arialabelcontactexportoptions'] = '連絡先のエクスポートのオプション';
$labels['arialabelabookgroupoptions'] = 'アドレス帳・グループのオプション';
$labels['arialabelpreferencesform'] = '設定のフォーム';
$labels['arialabelidentityeditfrom'] = '識別情報のフォーム';
$labels['arialabelresponseeditfrom'] = '回答のフォーム';
$labels['arialabelsearchterms'] = '検索語';
$labels['arialabeldropactionmenu'] = 'ドラッグ・アンド・ドロップの動作メニュー';
$labels['arialabelheadersmenu'] = '宛先(ヘッダー)を追加するメニュー';
$labels['arialabelimagetools'] = '画像ツール';
$labels['helplistnavigation'] = 'キーボードのナビゲーションの一覧';
$labels['helplistkeyboardnavigation'] = "上矢印・下矢印: 選択する行を移動します。
スペース: 現在の行を選択します。
シフトキーを押しながら上矢印・下矢印: 上・下の行を選択に追加します。
コントロールきーを押しながらスペース: 現在の行を選択に追加または削除します。";
$labels['helplistkeyboardnavmessages'] = "右矢印・左矢印: メッセージのスレッドを展開・折り畳みします。(スレッドモードだけ)
改行: 現在・選択しているメッセージを開きます。
削除: 選択しているメッセージをゴミ箱に移動します。";
$labels['helplistkeyboardnavcontacts'] = "改行: 現在・選択中の連絡先を開きます。";
localization/ja_JP/messages.inc000064400000051757151727150540012547 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'エラーが発生しました!';
$messages['loginfailed']  = 'ログインできませんでした。';
$messages['cookiesdisabled'] = 'ブラウザーがCookieを受け付けません。';
$messages['sessionerror'] = 'セッションが正しくないか期限が切れています。';
$messages['cookiesmismatch'] = 'クッキーの不一致を検出しました。ブラウザーのクッキを消去してください。';
$messages['storageerror'] = 'IMAP サーバーへの接続に失敗しました。';
$messages['servererror'] = 'サーバーでエラーです!';
$messages['servererrormsg'] = 'サーバーエラー: $msg';
$messages['accountlocked'] = 'ログインを失敗し過ぎです、後で再び試してください。';
$messages['connerror'] = '接続エラー(サーバーに到達できません)!';
$messages['dberror'] = 'データベースのエラーです!';
$messages['dbconnerror'] = 'データベースに接続できません!';
$messages['windowopenerror'] = 'ポップアップウィンドウがブロックされました!';
$messages['requesttimedout'] = 'リクエストのタイムアウト';
$messages['errorreadonly'] = '操作を実行できませんでした。フォルダーは読み込み専用です。';
$messages['errornoperm'] = '操作を実行できませんでした。権限がありません。';
$messages['erroroverquota'] = '操作を実行できませんでした。空きディスク容量がありません。';
$messages['erroroverquotadelete'] = '空きディスク容量がありません。メッセージを削除するには SHIFT+DEL を使用してください。';
$messages['invalidrequest'] = '不正なリクエストです!  データは保存していません。';
$messages['invalidhost'] = '正しくないサーバー名です。';
$messages['nomessagesfound'] = 'このフォルダーにはメッセージはありません。';
$messages['loggedout'] = 'セッションを正しく終了しました。さようなら!';
$messages['mailboxempty'] = 'メールボックスは空です。';
$messages['nomessages'] = 'メッセージなし';
$messages['refreshing'] = '再表示中...';
$messages['loading'] = '読み込み中...';
$messages['uploading'] = 'ファイルをアップロード中...';
$messages['attaching'] = 'ファイルを添付...';
$messages['uploadingmany'] = 'ファイルをアップロード中...';
$messages['loadingdata'] = 'データを読み込み中...';
$messages['checkingmail'] = '新しいメッセージを確認中...';
$messages['sendingmessage'] = 'メッセージを送信中...';
$messages['messagesent'] = 'メッセージを送信しました。';
$messages['savingmessage'] = 'メッセージを保存中...';
$messages['messagesaved'] = 'メッセージを下書きに保存しました。';
$messages['successfullysaved'] = '保存しました。';
$messages['savingresponse'] = '回答の文章を保存中...';
$messages['deleteresponseconfirm'] = 'この回答の文章を本当に削除しますか?';
$messages['nocontactselected'] = 'まだ連絡先を選択していません。';
$messages['addedsuccessfully'] = '連絡先をアドレス帳に追加しました。';
$messages['contactexists'] = '同じ電子メールアドレスの連絡先が既に存在します。';
$messages['contactnameexists'] = '同じ名前の連絡先が既に存在します。';
$messages['blockedimages'] = 'あなたのプライバシーを守るため、このメッセージに含まれる外部画像を遮断しました。';
$messages['blockedresources'] = 'あなたのプライバシーを守るためリモートのリソースを遮断しました。';
$messages['suspiciousemail'] = 'このメッセージは詐欺等と思われる不審なメールアドレスを含んでいます。';
$messages['bccemail'] = '転送されたメッセージは機密の宛先(Bcc)を含んでいます。';
$messages['bouncehint'] = 'メッセージを無修整で送信します、すなわち元の本文、ヘッダー、宛先を使用します。';
$messages['encryptedmessage'] = 'このメッセージは暗号化されていて表示できません、ごめんなさい!';
$messages['externalmessagedecryption'] = 'このメッセージは暗号化されていて、ブラウザーの拡張で復号できるでしょう。';
$messages['nopubkeyfor'] = '$email への有効な公開鍵がありません。';
$messages['nopubkeyforsender'] = 'あなたの送信者としての有効な公開鍵がありません。メッセージを宛て先だけが復号できるように暗号化しますか?';
$messages['encryptnoattachments'] = '既にアップロードした添付ファイルは暗号化できません。暗号化のエディター内で再度追加してください。';
$messages['searchpubkeyservers'] = '欠けている鍵を公開なキーサーバーで検索しますか?';
$messages['encryptpubkeysfound'] = '以下のキーサーバーが見つかりました:';
$messages['keyservererror'] = 'キーサーバーからキーを取得できませんでした。';
$messages['keyimportsuccess'] = '公開鍵: $keyをキーリングにインポートしました。';
$messages['nocontactsfound'] = '連絡先がありません。';
$messages['contactnotfound'] = '連絡先が見つかりません。';
$messages['contactsearchonly'] = '選択したアドレス帳の連絡先を見るには検索欄を使用しなければなりません。';
$messages['sendingfailed'] = 'メッセージを送信できませんでした。';
$messages['senttooquickly'] = 'このメッセージを送信するまで、$sec秒お待ちください。';
$messages['errorsavingsent'] = '送信したメッセージの保存中にエラーが発生しました。';
$messages['errorsaving'] = '保存中にエラーが発生しました。';
$messages['errormoving'] = 'メッセージを移動できません。';
$messages['errorcopying'] = 'メッセージをコピーできません。';
$messages['errordeleting'] = 'メッセージを削除できません。';
$messages['errormarking'] = 'メッセージにマークを設定できません。';
$messages['alerttitle'] = '注意';
$messages['confirmationtitle'] = '本当に...';
$messages['deletecontactconfirm']  = '選択した連絡先を本当に削除しますか?';
$messages['deletegroupconfirm']  = 'このグループを本当に削除しますか?';
$messages['deletemessagesconfirm'] = '選択したメールを本当に削除しますか?';
$messages['deletefolderconfirm']  = 'このフォルダーを本当に削除しますか?';
$messages['movefolderconfirm']  = 'このフォルダーを本当に移動しますか?';
$messages['purgefolderconfirm']  = 'このフォルダーのすべてのメールを本当に削除しますか?';
$messages['contactdeleting'] = '連絡先を削除中...';
$messages['groupdeleting'] = 'グループを削除中...';
$messages['folderdeleting'] = 'フォルダーを削除中...';
$messages['foldermoving'] = 'フォルダーを移動中...';
$messages['foldersubscribing'] = 'フォルダーを購読中...';
$messages['folderunsubscribing'] = 'フォルダーの購読を解除中...';
$messages['formincomplete'] = 'フォームに未記入の項目があります。';
$messages['noemailwarning'] = '正しい電子メールアドレスを入力してください。';
$messages['nonamewarning']  = '名前を入力してください。';
$messages['nopagesizewarning'] = 'ページのサイズを入力してください。';
$messages['nosenderwarning'] = '送信者の電子メールアドレスを入力してください。';
$messages['recipientsadded'] = '宛先を追加しました。';
$messages['norecipientwarning'] = '少なくとも1つ宛先を入力してください。';
$messages['disclosedrecipwarning'] = 'すべての宛て先は互いに他のメールアドレスを見ることになります。これを防いで、それぞれのプライバシーを守るにはBcc欄を使用します。';
$messages['disclosedreciptitle'] = '宛て先が多すぎます。';
$messages['nosubjectwarning']  = '件名(Subject)の欄が空です。今、入力しますか?';
$messages['nosubjecttitle']  = '件名なし';
$messages['nobodywarning'] = '本文の無いメッセージを送信しますか?';
$messages['notsentwarning'] = 'まだメッセージを送信していなくて、保存していない変更もあります。変更した内容を破棄しますか?';
$messages['restoresavedcomposedata'] = '以前に作成して未送信のメッセージがあります。\n\n件名: $subject\n保存日: $date\n\nこのメッセージを回復しますか?';
$messages['nosearchname'] = '連絡先の名前か電子メールアドレスを入力してください。';
$messages['notuploadedwarning'] = 'すべての添付ファイルのアップロードを完了していません。今しばらく待つか、取り消ししてください。';
$messages['searchsuccessful'] = '$nr通のメッセージが見つかりました。';
$messages['contactsearchsuccessful'] = '$nr件の連絡先が見つかりました。';
$messages['searchnomatch'] = '一致するものが見つかりませんでした。';
$messages['searching'] = '検索中...';
$messages['checking'] = '確認中...';
$messages['stillsearching'] = 'さらに検索中...';
$messages['nospellerrors'] = 'スペルミスは見つかりませんでした。';
$messages['folderdeleted'] = 'フォルダーを削除しました。';
$messages['foldersubscribed'] = 'フォルダーを購読しました。';
$messages['folderunsubscribed'] = 'フォルダーの購読を解除しました。';
$messages['folderpurged'] = 'フォルダーを空にしました。';
$messages['folderexpunged'] = 'フォルダーの整理を完了しました。';
$messages['deletedsuccessfully'] = '削除しました。';
$messages['converting'] = 'メールから書式を削除中...';
$messages['messageopenerror'] = 'サーバーからメールを読み込めません。';
$messages['filelinkerror'] = 'ファイルを添付できませんでした。';
$messages['fileuploaderror'] = 'ファイルをアップロードできませんでした。';
$messages['csvfilemismatch'] = '列の異なる複数のCSVファイルのアップロードはサポートしていません。';
$messages['filesizeerror'] = 'アップロードするファイルのサイズが上限($size)を超えました。';
$messages['filecounterror'] = '一度に最大で$count個のファイルをアップロードできます。';
$messages['msgsizeerror'] = 'ファイルを添付できませんでした。メッセージの最大サイズ($size)を超えています。';
$messages['msgsizeerrorfwd'] = 'メッセージの最大サイズ($size)を超過しました。$num個のメッセージを添付していません。';
$messages['copysuccess'] = '$nr個の連絡先をコピーしました。';
$messages['movesuccess'] = '$nr個の連絡先を移動しました。';
$messages['copyerror'] = 'どの連絡先もコピーできませんでした。';
$messages['moveerror'] = 'どの連絡先も移動できませんでした。';
$messages['sourceisreadonly'] = 'このアドレスソースは読み込み専用です。';
$messages['errorsavingcontact'] = '連絡先のアドレスを保存できません。';
$messages['movingmessage'] = 'メッセージを移動中...';
$messages['copyingmessage'] = 'メッセージをコピー中...';
$messages['copyingcontact'] = '連絡先をコピー中...';
$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'メッセージを削除中...';
$messages['markingmessage'] = 'メッセージにマークを設定中...';
$messages['addingmember'] = 'グループに連絡先をコピー中...';
$messages['removingmember'] = 'グループから連絡先を削除中...';
$messages['receiptsent'] = '開封通知を送信しました。';
$messages['errorsendingreceipt'] = '開封通知を送信ができませんでした。';
$messages['deleteidentityconfirm'] = 'この識別情報を本当に削除しますか?';
$messages['nodeletelastidentity'] = 'この識別情報は最後の1つなので削除できません。';
$messages['forbiddencharacter'] = 'フォルダー名に使用できない文字が含まれています。';
$messages['selectimportfile'] = 'アップロードするファイルを選択してください。';
$messages['addresswriterror'] = '選択したアドレス帳は書き込みできないアドレス帳です。';
$messages['contactaddedtogroup'] = 'このグループに連絡先を追加しました。';
$messages['contactremovedfromgroup'] = 'このグループから連絡先を削除しました。';
$messages['nogroupassignmentschanged'] = 'グループの割り当てを変更しませんでした。';
$messages['importwait'] = 'インポート中です。しばらくお待ちください...';
$messages['importformaterror'] = 'インポートできませんでした!  アップロードしたファイルは正しいデータをインポートするファイルではありません。';
$messages['importconfirm'] = '<b>$inserted件の連絡先をインポートしました。</b>';
$messages['importconfirmskipped'] = '<b>$skipped件の既存する項目を飛ばした。</b>';
$messages['importmessagesuccess'] = '$nr件のメッセージをインポートしました。';
$messages['importmessageerror'] = 'インポートできませんでした!  アップロードしたファイルは有効なメッセージやメールボックスのファイルではありません。';
$messages['opnotpermitted'] = '許可されていない操作です。';
$messages['nofromaddress'] = '選択した識別情報には電子メールアドレスがありません。';
$messages['editorwarning'] = 'エディターの種類を切り替えるとテキストの書式を失うかもしれません。本当に続けますか?';
$messages['httpreceivedencrypterror'] = '致命的な設定エラーが発生しました。システム管理者に至急連絡してください。<b>メッセージを送信できません。</b>';
$messages['smtpconnerror'] = 'SMTPエラー ($code): サーバーへの接続に失敗しました。';
$messages['smtpautherror'] = 'SMTPエラー ($code): 認証に失敗しました。';
$messages['smtpfromerror'] = 'SMTPエラー ($code): 差出人 "$from" を設定できません ($msg)';
$messages['smtptoerror'] = 'SMTPエラー ($code): 宛先 "$to" を追加できません ($msg)';
$messages['smtprecipientserror'] = 'SMTPエラー: 宛先の一覧を解析できません。';
$messages['smtputf8error'] = 'SMTPエラー: サーバーは電子メールアドレスにUnicodeをサポートしていません。';
$messages['smtpsizeerror'] = 'SMTPエラー: メッセージの大きさがサーバーの制限($limit)を超過';
$messages['smtperror'] = 'SMTP エラー: $msg';
$messages['emailformaterror'] = '誤った電子メールアドレス: $email';
$messages['toomanyrecipients'] = '宛先が多すぎます。$max件以内にしてください。';
$messages['maxgroupmembersreached'] = 'グループのメンバーが多すぎます。$max 件以内にしてください。';
$messages['internalerror'] = '内部エラーが発生しました。もう一度試してください。';
$messages['contactdelerror'] = '連絡先を削除できませんでした。';
$messages['contactdeleted'] = '連絡先を削除しました。';
$messages['contactrestoreerror'] = '削除した連絡先を復元できませんでした。';
$messages['contactrestored'] = '連絡先を復元しました。';
$messages['groupdeleted'] = 'グループを削除しました。';
$messages['grouprenamed'] = 'グループ名を変更しました.';
$messages['groupcreated'] = 'グループを作成しました。';
$messages['savedsearchdeleted'] = '保存した検索情報を削除しました。';
$messages['savedsearchdeleteerror'] = '保存した検索情報を削除できません。';
$messages['savedsearchcreated'] = '検索情報を作成しました。';
$messages['savedsearchcreateerror'] = '検索情報を削除できませんでした。';
$messages['messagedeleted'] = 'メッセージを削除しました。';
$messages['messagemoved'] = 'メッセージを移動しました。';
$messages['messagemovedtotrash'] = 'メッセージをゴミ箱に移動しました。';
$messages['messagecopied'] = 'メッセージをコピーしました。';
$messages['messagemarked'] = 'メッセージにマークを設定しました。';
$messages['autocompletechars'] = '自動補完には少なくとも$min文字入力してください。';
$messages['autocompletemore'] = '多くのエントリーが見つかりました。もっと入力してください。';
$messages['namecannotbeempty'] = '名前は空にできません。';
$messages['nametoolong'] = '名前が長すぎます。';
$messages['namedotforbidden'] = 'フォルダー名はドットで始められません。';
$messages['folderupdated'] = 'フォルダーを更新しました。';
$messages['foldercreated'] = 'フォルダーを作成しました。';
$messages['invalidimageformat'] = '画像の形式が正しくありません。';
$messages['mispellingsfound'] = 'メッセージにスペルミスを見つけました。';
$messages['parentnotwritable'] = '選択した親フォルダーに作成または移動をできませんでした。アクセス権限がありません。';
$messages['messagetoobig'] = 'その処理をするにはメッセージ部分が大きすぎます。';
$messages['attachmentvalidationerror'] = 'ファイルの型とメッセージ中で宣言した型が一致していない、不審な添付ファイルです。送信者を信頼できない場合は、悪意のある内容を含んでいるかもしれないのでブラウザーで開くべきではありません。<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = '警告: このウェブメールサービスにはJavascriptが必要です!  使用するにはJavascriptをブラウザーの設定で有効にしてください。';
$messages['messageissent'] = '既にメッセージを送信しましたが、まだ保存していません。今すぐ保存しますか?';
$messages['errnotfound'] = 'ファイルが見つかりません';
$messages['errnotfoundexplain'] = '要求したリソースはみつかりませんでした!';
$messages['errfailedrequest'] = 'リクエストに失敗';
$messages['errauthorizationfailed'] = '認証に失敗';
$messages['errunauthorizedexplain'] = 'このサーバーへのアクセスを認可されていることを検証できませんでした!';
$messages['errrequestcheckfailed'] = 'リクエストの検査に失敗';
$messages['errcsrfprotectionexplain'] = "安全確保のため、このリソースへのアクセスはCSRFに対して保護しています。\nこのメッセージを見た場合は、おそらくウェブ・アプリケーションを終える前にログアウトしていなかったのでしょう。\n続けるには人的な対処が必要です。";
$messages['errcontactserveradmin'] = 'システム管理者に連絡してください。';
$messages['clicktoresumesession'] = 'ここをクリックすると以前のセッションを回復します。';
$messages['errcomposesession'] = 'メッセージを作成するセッションのエラー';
$messages['errcomposesessionexplain'] = 'メッセージを作成するセッションが見つかりません。';
$messages['clicktocompose'] = 'クリックして新しいメッセージを作成';
$messages['nosupporterror'] = 'この機能を使用しているブラウザーはサポートしていません。';
$messages['siginserted'] = '署名を挿入しました。';
$messages['responseinserted'] = '応答を挿入しました。';
$messages['noresponsesavailable'] = '応答なし';
$messages['listempty'] = 'このリストは空です。';
$messages['listusebutton'] = '新しいレコードを追加するには作成のボタンを使用してください。';
$messages['keypaircreatesuccess'] = '$identity用の新しい鍵ペアを作成しました。';
$messages['emptyattachment'] = 'この添付ファイルは空の様です。<br>送信した方に確認をお願いします。';
$messages['oauthloginfailed'] = 'OAuthでログインできませんでした。もう一度試してください。';
localization/sl_SI/timezones.inc000064400000003520151727150540012764 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
localization/sl_SI/labels.inc000064400000075610151727150540012222 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Dobrodošli v $product';
$labels['username'] = 'Uporabniško ime';
$labels['password'] = 'Geslo';
$labels['server'] = 'Strežnik';
$labels['login'] = 'Prijava';
$labels['menu'] = 'Meni';
$labels['logout'] = 'Odjava';
$labels['mail'] = 'E-Pošta';
$labels['settings'] = 'Osebne nastavitve';
$labels['addressbook'] = 'Stiki';
$labels['inbox'] = 'Prejeto';
$labels['drafts'] = 'Osnutki';
$labels['sent'] = 'Poslano';
$labels['trash'] = 'Smeti';
$labels['junk'] = 'Neželena sporočila';
$labels['show_real_foldernames'] = 'Prikaži prava imena za posebne mape';
$labels['subject'] = 'Zadeva';
$labels['from'] = 'Od';
$labels['sender'] = 'Pošiljatelj';
$labels['to'] = 'Za';
$labels['cc'] = 'Kp';
$labels['bcc'] = 'Skp';
$labels['replyto'] = 'Odgovor na';
$labels['followupto'] = 'Odgovor na';
$labels['date'] = 'Datum';
$labels['size'] = 'Velikost';
$labels['priority'] = 'Prioriteta';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Status';
$labels['listoptions'] = 'Možnosti prikaza...';
$labels['listoptionstitle'] = 'Prikaži možnosti';
$labels['mailboxlist'] = 'Mape';
$labels['messagesfromto'] = 'Sporočila $from do $to od $count';
$labels['threadsfromto'] = 'Nit $from do $to od $count';
$labels['messagenrof'] = 'Sporočilo $nr od $count';
$labels['fromtoshort'] = '$from – $to od $count';
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premakni';
$labels['moveto'] = 'Premakni v...';
$labels['copyto'] = 'Kopiraj v...';
$labels['download'] = 'Prenesi';
$labels['open'] = 'Odpri';
$labels['showattachment'] = 'Prikaži';
$labels['showanyway'] = 'Prikaži';
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'Velikost datoteke';
$labels['addtoaddressbook'] = 'Dodaj med stike';
$labels['sun'] = 'ned';
$labels['mon'] = 'pon';
$labels['tue'] = 'tor';
$labels['wed'] = 'sre';
$labels['thu'] = 'čet';
$labels['fri'] = 'pet';
$labels['sat'] = 'sob';
$labels['sunday'] = 'nedelja';
$labels['monday'] = 'ponedeljek';
$labels['tuesday'] = 'torek';
$labels['wednesday'] = 'sreda';
$labels['thursday'] = 'četrtek';
$labels['friday'] = 'petek';
$labels['saturday'] = 'sobota';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'apr';
$labels['may'] = 'maj';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'avg';
$labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
$labels['longjan'] = 'januar';
$labels['longfeb'] = 'februar';
$labels['longmar'] = 'marec';
$labels['longapr'] = 'april';
$labels['longmay'] = 'maj';
$labels['longjun'] = 'junij';
$labels['longjul'] = 'julij';
$labels['longaug'] = 'avgust';
$labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
$labels['today'] = 'Danes';
$labels['refresh'] = 'Osveži';
$labels['checkmail'] = 'Poglej za nova sporočila';
$labels['compose'] = 'Sestavi sporočilo';
$labels['writenewmessage'] = 'Novo sporočilo';
$labels['reply'] = 'Odgovori';
$labels['replytomessage'] = 'Odgovori';
$labels['replytoallmessage'] = 'Odgovori listi ali vsem prejemnikom';
$labels['replyall'] = 'Odgovori vsem';
$labels['replylist'] = 'Odgovori listi';
$labels['forward'] = 'Posreduj';
$labels['forwardinline'] = 'Posreduj kot besedilo';
$labels['forwardattachment'] = 'Posreduj kot priponko';
$labels['forwardmessage'] = 'Posreduj';
$labels['bouncemsg'] = 'Preusmeri (prepošlji)';
$labels['bounce'] = 'Preusmeri';
$labels['deletemessage'] = 'Izbriši';
$labels['movemessagetotrash'] = 'Premakni v smeti';
$labels['printmessage'] = 'Natisni';
$labels['previousmessage'] = 'Prikaži prejšnje sporočilo';
$labels['firstmessage'] = 'Prikaži prvo sporočilo';
$labels['nextmessage'] = 'Prikaži naslednje sporočilo';
$labels['lastmessage'] = 'Prikaži zadnje sporočilo';
$labels['backtolist'] = 'Nazaj na seznam sporočil';
$labels['viewsource'] = 'Prikaži izvorno kodo';
$labels['mark'] = 'Označi';
$labels['markmessages'] = 'Označi sporočilo';
$labels['markread'] = 'Kot prebrano';
$labels['markunread'] = 'Kot neprebrano';
$labels['markflagged'] = 'Kot označeno';
$labels['markunflagged'] = 'Kot neoznačeno';
$labels['moreactions'] = 'Več možnosti...';
$labels['markallread'] = 'Označi vse kot prebrano';
$labels['folders-cur'] = 'Samo označeno mapo';
$labels['folders-sub'] = 'Označeno mapo in njene podmape';
$labels['folders-all'] = 'Vse mape';
$labels['more'] = 'Več';
$labels['back'] = 'Nazaj';
$labels['options'] = 'Možnosti';
$labels['composeoptions'] = 'Možnosti sestavljanja sporočil';
$labels['optionsandattachments'] = 'Možnosti in priponke';
$labels['actions'] = 'Možnosti';
$labels['first'] = 'Prvo';
$labels['last'] = 'Zadnje';
$labels['previous'] = 'Prejšnje';
$labels['next'] = 'Naslednje';
$labels['select'] = 'Izberi';
$labels['selection'] = 'Izbor';
$labels['all'] = 'Vse';
$labels['none'] = 'Brez';
$labels['currpage'] = 'Trenutna stran';
$labels['isread'] = 'Prebrano';
$labels['unread'] = 'Neprebrano';
$labels['flagged'] = 'Označeno';
$labels['unflagged'] = 'Ni označeno';
$labels['unanswered'] = 'Neoznačeno';
$labels['withattachment'] = 'S priponko';
$labels['deleted'] = 'Izbrisano';
$labels['undeleted'] = 'Ni izbrisano';
$labels['replied'] = 'Odgovorjeno';
$labels['forwarded'] = 'Posredovano';
$labels['invert'] = 'Zamenjaj';
$labels['filter'] = 'Prikaži';
$labels['list'] = 'Seznam';
$labels['threads'] = 'Niti';
$labels['expand-all'] = 'Razširi vse';
$labels['expand-unread'] = 'Razširi neprebrano';
$labels['collapse-all'] = 'Zloži vse';
$labels['threaded'] = 'Nitno';
$labels['showunread'] = 'Pokaži neprebrana sporočila';
$labels['autoexpand_threads'] = 'Razširi niti';
$labels['do_expand'] = 'vse niti';
$labels['expand_only_unread'] = 'samo niti z neprebranimi sporočili';
$labels['fromto'] = 'Od/Za';
$labels['flag'] = 'Oznaka';
$labels['attachment'] = 'Priponka';
$labels['nonesort'] = 'Brez';
$labels['sentdate'] = 'Datum pošiljanja';
$labels['arrival'] = 'Datum prejema';
$labels['asc'] = 'naraščajoče';
$labels['desc'] = 'padajoče';
$labels['listcolumns'] = 'Seznam stolpcev';
$labels['listsorting'] = 'Urejanje stolpcev';
$labels['listorder'] = 'Vrstni red';
$labels['listmode'] = 'Način prikaza seznama';
$labels['lmode'] = 'Način prikaza seznama';
$labels['layout'] = 'Postavitev';
$labels['layoutwidescreen'] = 'Širok zaslon';
$labels['layoutdesktop'] = 'Namizje';
$labels['layoutlist'] = 'Seznam';
$labels['layoutwidescreendesc'] = 'Širok zaslon (pogled v 3 stolpcih)';
$labels['layoutdesktopdesc'] = 'Namizje (širok seznam in spodaj predogled sporočila)';
$labels['layoutlistdesc'] = 'Seznam sporočil (brez predogleda)';
$labels['folderactions'] = 'Upravljanje map...';
$labels['compact'] = 'Stisni';
$labels['empty'] = 'Izprazni';
$labels['importmessages'] = 'Uvozi sporočila';
$labels['mailimportdesc'] = 'Naložite lahko sporočila v formatu <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ali <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Več dokumentov lahko skrčite v arhiv zip.';
$labels['quota'] = 'Poraba prostora';
$labels['unknown'] = 'neznana';
$labels['unlimited'] = 'neomejena';
$labels['quotatype'] = 'Tip kvote';
$labels['quotatotal'] = 'Omejitev';
$labels['quotaused'] = 'Porabljeno';
$labels['quotastorage'] = 'Prostor na disku';
$labels['quotamessage'] = 'Število sporočil';
$labels['shortheaderdate'] = 'Dne $date';
$labels['shortheaderto'] = 'Za $to dne $date';
$labels['shortheaderfrom'] = 'Od $from dne $date';
$labels['quicksearch'] = 'Hitri iskalnik';
$labels['searchplaceholder'] = 'Iskanje...';
$labels['resetsearch'] = 'Prekliči iskanje';
$labels['searchmod'] = 'Spremembe iskanja';
$labels['msgtext'] = 'Celotno sporočilo';
$labels['body'] = 'Vsebina sporočila';
$labels['type'] = 'Tip';
$labels['namex'] = 'Ime';
$labels['searchscope'] = 'Obseg';
$labels['currentfolder'] = 'Trenutna mapa';
$labels['subfolders'] = 'To in podmape';
$labels['allfolders'] = 'Vse mape';
$labels['searchinterval-1W'] = 'starejše od enega tedna';
$labels['searchinterval-1M'] = 'starejše od enega meseca';
$labels['searchinterval-1Y'] = 'starejše od enega leta';
$labels['searchinterval1W'] = 'novejše od enega tedna';
$labels['searchinterval1M'] = 'novejše od enega meseca';
$labels['searchinterval1Y'] = 'novejše od enega leta';
$labels['openinextwin'] = 'Odpri v novem oknu';
$labels['emlsave'] = 'Prenos datoteke (.eml)';
$labels['changeformattext'] = 'Prikaži kot golo besedilo';
$labels['changeformathtml'] = 'Prikaži v formatu HTML';
$labels['editasnew'] = 'Uredi kot novo';
$labels['send'] = 'Pošlji';
$labels['sendmessage'] = 'Pošlji sporočilo';
$labels['savemessage'] = 'Shrani kot osnutek';
$labels['addattachment'] = 'Pripni datoteko';
$labels['charset'] = 'Nabor znakov';
$labels['editortype'] = 'Vrsta urejevalnika';
$labels['returnreceipt'] = 'Potrdilo prejemnika';
$labels['dsn'] = 'Status dostave sporočila';
$labels['mailreplyintro'] = '$date, je $sender napisal';
$labels['originalmessage'] = 'Izvorno sporočilo';
$labels['selectimage'] = 'Izberi sliko';
$labels['addimage'] = 'Dodaj sliko';
$labels['selectmedia'] = 'Izberi film';
$labels['addmedia'] = 'Dodaj film';
$labels['encrypt'] = 'Šifriraj';
$labels['encryptmessage'] = 'Šifriraj sporočilo';
$labels['encryptmessagemailvelope'] = 'Šifriraj sporočilo z Mailvelope';
$labels['importpubkeys'] = 'Uvozi javne ključe';
$labels['encryptedsendialog'] = 'Pošilji šifrirano sporočilo';
$labels['encryptandsign'] = 'Šifriraj in podpiši';
$labels['keyid'] = 'ID ključa';
$labels['keylength'] = 'Bitov';
$labels['keyexpired'] = 'Pretečen';
$labels['keyrevoked'] = 'Preklican';
$labels['bccinstead'] = 'Uporabi Skp';
$labels['addheader'] = 'Dodaj prejemnika (glava sporočila)';
$labels['insert'] = 'Vstavi';
$labels['insertcontact'] = 'Vstavi stik(e)';
$labels['recipient'] = 'Prejemnik';
$labels['recipientedit'] = 'Uredi prejemnika';
$labels['editidents'] = 'Uredi identitete';
$labels['spellcheck'] = 'Črkovanje';
$labels['checkspelling'] = 'Preglej pravopis';
$labels['resumeediting'] = 'Nadaljuj z urejanjem';
$labels['revertto'] = 'Razveljavi';
$labels['restore'] = 'Obnovi';
$labels['restoremessage'] = 'Obnovi sporočilo';
$labels['ignore'] = 'Prezri';
$labels['responses'] = 'Odgovori';
$labels['insertresponse'] = 'Vnesi odgovor';
$labels['manageresponses'] = 'Uredi odgovore';
$labels['newresponse'] = 'Ustvari nov odgovor';
$labels['addresponse'] = 'Dodaj odgovor';
$labels['editresponse'] = 'Uredi odgovor';
$labels['editresponses'] = 'Uredi odgovore';
$labels['responsename'] = 'Ime';
$labels['responsetext'] = 'Tekst za odgovor';
$labels['attach'] = 'Pripni';
$labels['attachments'] = 'Priponke';
$labels['upload'] = 'Naloži';
$labels['uploadprogress'] = '$percent ($current od $total)';
$labels['close'] = 'Zapri';
$labels['messageoptions'] = 'Možnosti';
$labels['togglecomposeoptions'] = 'Preklopi med možnostmi sestavljanja';
$labels['attachmentrename'] = 'Preimenuj priponko';
$labels['low'] = 'Nizka';
$labels['lowest'] = 'Najnižja';
$labels['normal'] = 'Običajna';
$labels['high'] = 'Visoka';
$labels['highest'] = 'Najvišja';
$labels['nosubject'] = '(brez naslova)';
$labels['showimages'] = 'Prikaži slike';
$labels['allow'] = 'Dovoli';
$labels['alwaysshow'] = 'Vedno prikaži slike od $sender';
$labels['alwaysallow'] = 'Vedno dovoli pošiljatelju $sender';
$labels['isdraft'] = 'To je osnutek sporočila.';
$labels['andnmore'] = '$nr več...';
$labels['details'] = 'Podrobnosti';
$labels['headers'] = 'Glave sporočil';
$labels['allheaders'] = 'Vse glave...';
$labels['togglemoreheaders'] = 'Prikaži več glav sporočila';
$labels['togglefullheaders'] = 'Preklopi na neobdelan zapis glave sporočila';
$labels['htmltoggle'] = 'Obogateno besedilo (HTML)';
$labels['plaintoggle'] = 'Samo besedilo';
$labels['savesentmessagein'] = 'Shrani poslana sporočila v';
$labels['dontsave'] = 'Ne shrani';
$labels['maxuploadsize'] = 'Največja dovoljena velikost datoteke je $size';
$labels['addcc'] = 'Dodaj Kp';
$labels['addbcc'] = 'Dodaj Skp';
$labels['addreplyto'] = 'Dodaj naslov za odgovor';
$labels['addfollowupto'] = 'Dodaj naslov za odgovor';
$labels['mdnrequest'] = 'Pošiljatelj tega sporočila je zaprosil za potrdilo o branju. Želite o tem obvestiti pošiljatelja?';
$labels['receiptread'] = 'Potrdilo o branju';
$labels['yourmessage'] = 'To je potrdilo o branju.';
$labels['receiptnote'] = 'Pozor: to je samo potrdilo, da je bilo vaše sporočilo prikazano na prejemnikovem računalniku. To še ne pomeni, da je prejemnik prebral ali razumel vsebino vašega sporočila.';
$labels['zoomin'] = 'Povečaj';
$labels['zoomout'] = 'Pomanjšaj';
$labels['rotate'] = 'Zasukaj';
$labels['increaseimage'] = 'Povečaj velikost slike';
$labels['decreaseimage'] = 'Zmanjšaj velikost slike';
$labels['rotateimage'] = 'Zasukaj sliko';
$labels['showtools'] = 'Prikaži orodja za urejanje slik';
$labels['hidetools'] = 'Skrij orodja za urejanje slik';
$labels['name'] = 'Ime za prikaz';
$labels['firstname'] = 'Ime';
$labels['surname'] = 'Priimek';
$labels['middlename'] = 'Drugo ime';
$labels['nameprefix'] = 'Predpona';
$labels['namesuffix'] = 'Pripona';
$labels['nickname'] = 'Vzdevek';
$labels['jobtitle'] = 'Naziv';
$labels['department'] = 'Oddelek';
$labels['gender'] = 'Spol';
$labels['maidenname'] = 'Dekliški priimek';
$labels['email'] = 'E-Pošta';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Naslov';
$labels['street'] = 'Ulica';
$labels['locality'] = 'Mesto';
$labels['zipcode'] = 'Poštna številka';
$labels['region'] = 'Regija';
$labels['country'] = 'Država';
$labels['birthday'] = 'Rojstni dan';
$labels['anniversary'] = 'Rojstni dan';
$labels['website'] = 'Spletna stran';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Opombe';
$labels['male'] = 'moški';
$labels['female'] = 'ženska';
$labels['manager'] = 'Vodja';
$labels['assistant'] = 'Pomoč';
$labels['spouse'] = 'Zakonec';
$labels['allfields'] = 'Vsa polja';
$labels['search'] = 'Iskanje';
$labels['searchresult'] = 'Rezultat iskanja';
$labels['advsearch'] = 'Napredno iskanje';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
$labels['printcontact'] = 'Natisni stik';
$labels['qrcode'] = 'QR-koda';
$labels['typehome'] = 'Doma';
$labels['typework'] = 'Služba';
$labels['typeother'] = 'Ostalo';
$labels['typemobile'] = 'Mobilni telefon';
$labels['typemain'] = 'Osnovno';
$labels['typehomefax'] = 'Domači fax';
$labels['typeworkfax'] = 'Službeni fax';
$labels['typecar'] = 'Avto';
$labels['typepager'] = 'Pozivnik';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Pomoč';
$labels['typehomepage'] = 'Domača stran';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj polje...';
$labels['addcontact'] = 'Dodaj stik';
$labels['editcontact'] = 'Uredi vizitko';
$labels['contacts'] = 'Stiki';
$labels['contactproperties'] = 'Lastnosti stika';
$labels['contactnameandorg'] = 'Ime in Organizacija';
$labels['personalinfo'] = 'Osebni podatki';
$labels['personal'] = 'Osebno';
$labels['contactphoto'] = 'Kontaktna slika';
$labels['edit'] = 'Uredi';
$labels['cancel'] = 'Prekliči';
$labels['save'] = 'Shrani';
$labels['delete'] = 'Izbriši';
$labels['discard'] = 'Zavrzi';
$labels['continue'] = 'Nadaljuj';
$labels['ok'] = 'V redu';
$labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamenjaj';
$labels['uploadphoto'] = 'Naloži sliko';
$labels['choosefile'] = 'Izberi dokument...';
$labels['choosefiles'] = 'Izberi dokumente..';
$labels['browse'] = 'Prebrskaj';
$labels['newcontact'] = 'Ustvari nov stik';
$labels['deletecontact'] = 'Izbriši izbrane vizitke';
$labels['composeto'] = 'Sestavi sporočilo za';
$labels['contactsfromto'] = 'Vizitke $from od $to do $count';
$labels['print'] = 'Natisni';
$labels['export'] = 'Izvozi';
$labels['exportall'] = 'Izvozi vse';
$labels['exportsel'] = 'Izvozi označeno';
$labels['exportvcards'] = 'Izvozi stike v formatu vCard';
$labels['newgroup'] = 'Ustvari novo skupino';
$labels['addgroup'] = 'Dodaj skupino';
$labels['grouprename'] = 'Preimenuj skupino';
$labels['groupdelete'] = 'Izbriši skupino';
$labels['groupassign'] = 'Dodeli skupini';
$labels['groupremove'] = 'Odstrani iz skupine';
$labels['groupremoveselected'] = 'Odstrani izbrane stike iz skupine';
$labels['uponelevel'] = 'Nivo višje';
$labels['previouspage'] = 'Prejšnja stran';
$labels['firstpage'] = 'Prva stran';
$labels['nextpage'] = 'Naslednja stran';
$labels['lastpage'] = 'Zadnja stran';
$labels['group'] = 'Skupina';
$labels['groups'] = 'Skupine';
$labels['listgroup'] = 'Izpiši seznam članov skupine';
$labels['personaladrbook'] = 'Stiki';
$labels['searchsave'] = 'Shrani iskanje';
$labels['searchdelete'] = 'Izbriši iskanje';
$labels['import'] = 'Uvozi';
$labels['importcontacts'] = 'Uvozi stike';
$labels['importfromfile'] = 'Uvozi iz dokumenta';
$labels['importtarget'] = 'Dodaj stike v';
$labels['importreplace'] = 'Zamenjaj celoten imenik';
$labels['importgroups'] = 'Vnesi skupinske zadolžitve';
$labels['importgroupsall'] = 'Vse (ustvari skupine, če je potrebno)';
$labels['importgroupsexisting'] = 'Samo za obstoječe skupine';
$labels['importdesc'] = 'Stike lahko naložite iz obstoječega imenika. <br/>Trenutno je podprt uvoz stikov v zapisu <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ali v CSV (z vejico ločene vrednosti) zapisu. ';
$labels['done'] = 'Dokončano';
$labels['settingsfor'] = 'Nastavitve za';
$labels['about'] = 'Vizitka';
$labels['preferences'] = 'Nastavitve';
$labels['userpreferences'] = 'Uporabniške nastavitve';
$labels['editpreferences'] = 'Uredi uporabniške nastavitve';
$labels['identities'] = 'Identitete';
$labels['manageidentities'] = 'Upravljaj identitete';
$labels['newidentity'] = 'Ustvari novo identiteto';
$labels['addidentity'] = 'Dodaj identiteto';
$labels['editidentity'] = 'Uredi identiteto';
$labels['identityencryption'] = 'Šifriranje';
$labels['preferhtml'] = 'Prednostno HTML';
$labels['defaultcharset'] = 'Privzeto kodiranje znakov';
$labels['htmlmessage'] = 'HTML sporočilo';
$labels['messagepart'] = 'Del';
$labels['digitalsig'] = 'Digitalni podpis';
$labels['dateformat'] = 'Prikaz datuma';
$labels['timeformat'] = 'Prikaz časa';
$labels['prettydate'] = 'Bolj čitljivi datumi';
$labels['setdefault'] = 'Nastavi privzeto';
$labels['autodetect'] = 'Samodejno';
$labels['language'] = 'Jezik';
$labels['timezone'] = 'Časovni pas';
$labels['pagesize'] = 'Vrstic na stran';
$labels['signature'] = 'Podpis';
$labels['dstactive'] = 'Samodejna nastavitev zimskega/letnega časa';
$labels['showinextwin'] = 'Odpri v novem oknu';
$labels['composeextwin'] = 'Sestavi sporočilo v novem oknu';
$labels['htmleditor'] = 'Sestavi sporočila z obogatenim besedilom';
$labels['htmlonreply'] = 'le pri odgovoru na sporočila z obogatenim besedilom';
$labels['htmlonreplyandforward'] = 'le pri posredovanju ali odgovoru na sporočila z obogatenim besedilom';
$labels['htmlsignature'] = 'Podpis z obogatenim besedilom';
$labels['showemail'] = 'Prikaži e-naslove poleg imen';
$labels['previewpane'] = 'Prikaži predogled';
$labels['skin'] = 'Tema uporabniškega vmesnika';
$labels['logoutclear'] = 'Izprazni mapo Smeti ob odjavi';
$labels['logoutcompact'] = 'Stisni sporočila v mapi Inbox ob odjavi';
$labels['uisettings'] = 'Uporabniški vmesnik';
$labels['serversettings'] = 'Nastavitve strežnika';
$labels['mailboxview'] = 'Pogled poštnega predala';
$labels['mdnrequests'] = 'Obvestila pošiljatelja';
$labels['askuser'] = 'vprašaj uporabnika';
$labels['autosend'] = 'pošlji povratnico samodejno';
$labels['autosendknown'] = 'samodejno pošlji povratnico samo mojim stikom';
$labels['autosendknownignore'] = 'pošlji potrdilo le mojim stikom';
$labels['ignorerequest'] = 'prezri zahtevo';
$labels['readwhendeleted'] = 'Označi izbrisano sporočilo kot prebrano';
$labels['flagfordeletion'] = 'Ne izbriši sporočila, le označi kot izbrisano';
$labels['skipdeleted'] = 'Ne prikaži izbrisanih sporočil';
$labels['deletealways'] = 'Če premikanje sporočil v Smeti spodleti, naj bodo izbrisana.';
$labels['deletejunk'] = 'Neposredno izbriši sporočila v mapi Nezaželena sporočila';
$labels['showremoteimages'] = 'Prikaži slike iz oddaljenih strežnikov';
$labels['allowremoteresources'] = 'Dovoli zunanje vire (slike, stile)';
$labels['fromknownsenders'] = 'od znanih pošiljateljev';
$labels['always'] = 'vedno';
$labels['alwaysbutplain'] = 'vedno, razen ko odgovarjam v golem besedilu';
$labels['showinlineimages'] = 'Prikaži priponke na dnu sporočila';
$labels['autosavedraft'] = 'Samodejno shrani osnutke';
$labels['everynminutes'] = '$n minut';
$labels['refreshinterval'] = 'Osveži (preglej nova sporočila)';
$labels['never'] = 'nikoli';
$labels['immediately'] = 'takoj';
$labels['messagesdisplaying'] = 'Prikazovanje sporočil';
$labels['messagescomposition'] = 'Sestavljanje sporočil';
$labels['mimeparamfolding'] = 'Imena priponk';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (ostali)';
$labels['force7bit'] = 'Uporabi MIME kodiranje za 8-bitne znake';
$labels['savelocalstorage'] = "Shrani v lokalni pomnilnik brskalnika (začasno)";
$labels['advancedoptions'] = 'Dodatne možnosti';
$labels['toggleadvancedoptions'] = 'Preklopi napredne nastavitve';
$labels['focusonnewmessage'] = 'Usmeri okno brskalnika na novo sporočilo';
$labels['checkallfolders'] = 'Preglej nova sporočila za vse mape';
$labels['displaynext'] = 'Po brisanju/premikanju prikaži naslednji element seznama';
$labels['defaultfont'] = 'Privzeta pisava HTML sporočil';
$labels['mainoptions'] = 'Osnovne nastavitve';
$labels['browseroptions'] = 'Možnosti brskalnika';
$labels['section'] = 'Nastavitve';
$labels['maintenance'] = 'Vzdrževanje';
$labels['newmessage'] = 'Novo sporočilo';
$labels['signatureoptions'] = 'Nastavitve podpisa';
$labels['whenreplying'] = 'Pri odgovoru';
$labels['replyempty'] = 'ne navajaj izvornega sporočila v odgovoru';
$labels['replytopposting'] = 'začni z novim sporočilom nad izvornim sporočilom';
$labels['replytoppostingnoindent'] = 'začni z novim sporočilom nad izvornim sporočilom (brez zamika)';
$labels['replybottomposting'] = 'začni z novim sporočilom pod izvornim sporočilom';
$labels['replyremovesignature'] = 'Pri odgovoru na sporočilo odstrani izvorni podpis iz sporočila';
$labels['autoaddsignature'] = 'Samodejno dodaj podpis';
$labels['newmessageonly'] = 'samo novim sporočilom';
$labels['replyandforwardonly'] = 'samo k odgovorom in posredovanim sporočilom';
$labels['insertsignature'] = 'Vstavi podpis';
$labels['sigbelow'] = 'Prikaži podpis pod citirano sporočilo';
$labels['sigseparator'] = 'V podpisu uporabi standardni razmejevalnik';
$labels['automarkread'] = 'Označi sporočila kot prebrana';
$labels['afternseconds'] = 'po $n sekundah';
$labels['reqmdn'] = 'Vedno zahtevaj povratnico';
$labels['reqdsn'] = 'Vedno zahtevaj obvestilo o statusu dostave';
$labels['replysamefolder'] = 'Shrani odgovore na sporočilo v mapo izvornega sporočila';
$labels['defaultabook'] = 'Privzeti stiki';
$labels['autocompletesingle'] = 'Preskoči nadomestni e-naslov pri samodejnem dokončanju';
$labels['listnamedisplay'] = 'Prikaži seznam stikov kot';
$labels['spellcheckbeforesend'] = 'Preveri črkovanje pred pošiljanjem sporočila';
$labels['spellcheckoptions'] = 'Možnosti črkovanja';
$labels['spellcheckignoresyms'] = 'Ne upoštevaj besed, ki vsebujejo simbole';
$labels['spellcheckignorenums'] = 'Ne upoštevaj besed, ki vsebujejo številke';
$labels['spellcheckignorecaps'] = 'Ne upoštevaj besed, ki vsebujejo samo velike črke';
$labels['addtodict'] = 'Dodaj v slovar';
$labels['mailtoprotohandler'] = 'Določi stran kot privzeti poštni odjemalec.';
$labels['standardwindows'] = 'Prikaži pojavna okna kot običajna';
$labels['forwardmode'] = 'Posredovanje sporočil';
$labels['inline'] = 'medvrstično';
$labels['asattachment'] = 'Kot priponka';
$labels['replyallmode'] = 'Privzete možnosti gumba [Odgovori vsem]';
$labels['replyalldefault'] = 'odgovori vsem';
$labels['replyalllist'] = 'odgovori na dopisni seznam (če ta obstaja)';
$labels['allmessages'] = 'pogoj velja za vsa sporočila';
$labels['folder'] = 'Mapa';
$labels['folders'] = 'Mape';
$labels['foldername'] = 'Ime mape';
$labels['subscribed'] = 'Vpisan';
$labels['messagecount'] = 'Sporočila';
$labels['create'] = 'Ustvari';
$labels['createfolder'] = 'Ustvari novo mapo';
$labels['managefolders'] = 'Uredi mape';
$labels['specialfolders'] = 'Posebne mape';
$labels['properties'] = 'Lastnosti';
$labels['folderproperties'] = 'Lastnosti mape';
$labels['parentfolder'] = 'Glavna mapa';
$labels['location'] = 'Lokacija';
$labels['info'] = 'Podatki';
$labels['getfoldersize'] = 'Klikni za prikaz velikosti mape';
$labels['changesubscription'] = 'Klikni za spremembo prijave mape';
$labels['foldertype'] = 'Tip mape';
$labels['personalfolder'] = 'Zasebna mapa';
$labels['otherfolder'] = 'Mapa drugega uporabnika';
$labels['sharedfolder'] = 'Javna mapa';
$labels['findfolders'] = 'Najdi mape';
$labels['findcontacts'] = 'Poišči stik';
$labels['findmail'] = 'Poišči sporočilo';
$labels['namespace.personal'] = 'Osebno';
$labels['namespace.other'] = 'Drugi uporabniki';
$labels['namespace.shared'] = 'V skupni rabi';
$labels['dualuselabel'] = 'Vsebuje lahko samo';
$labels['dualusemail'] = 'sporočila';
$labels['dualusefolder'] = 'mape';
$labels['generate'] = 'Generiraj';
$labels['encryptioncreatekey'] = 'Ustvari nov par ključev';
$labels['openmailvelopesettings'] = 'Odpri nastavitve za Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'V Mailvelope imate shranjenih $nr zasebnih ključev';
$labels['encryptionnoprivkeysinmailvelope'] = 'Ta identiteta pošiljatelja v Mailvelope še nima shranjenega zasebnega ključa GPG. Želite ključ ustvariti in s tem omogočiti pošiljanje šifriranih sporočil?';
$labels['encryption'] = 'Šifriranje';
$labels['sortby'] = 'Uredi po';
$labels['sortasc'] = 'Uredi naraščajoče';
$labels['sortdesc'] = 'Uredi padajoče';
$labels['undo'] = 'Prekliči';
$labels['installedplugins'] = 'Nameščeni vtičniki';
$labels['plugin'] = 'Vtičnik';
$labels['version'] = 'Različica';
$labels['source'] = 'Vir';
$labels['license'] = 'Licenca';
$labels['support'] = 'Podpora';
$labels['savedsearches'] = 'Shranjena iskanja';
$labels['dateformatY'] = 'LLLL';
$labels['dateformaty'] = 'LL';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angleško';
$labels['westerneuropean'] = 'Zahodnoevropsko';
$labels['easterneuropean'] = 'Vzhodnoevropsko';
$labels['southeasterneuropean'] = 'JV Evropsko';
$labels['baltic'] = 'Baltsko';
$labels['cyrillic'] = 'Cirilica';
$labels['arabic'] = 'Arabsko';
$labels['greek'] = 'Grško';
$labels['hebrew'] = 'Hebrejsko';
$labels['turkish'] = 'Turško';
$labels['nordic'] = 'Nordijsko';
$labels['thai'] = 'Tajsko';
$labels['celtic'] = 'Keltsko';
$labels['vietnamese'] = 'Vietnamsko';
$labels['japanese'] = 'Japonsko';
$labels['korean'] = 'Korejsko';
$labels['chinese'] = 'Kitajsko';
$labels['arialabeltopnav'] = 'Upravljanje oken';
$labels['arialabeltasknav'] = 'Opravila programa';
$labels['arialabeltoolbar'] = 'Opravilna vrstica programa';
$labels['arialabelactivetask'] = 'Aktivna opravila';
$labels['arialabelmessagessearchfilter'] = 'Filter seznama sporočil';
$labels['arialabelmailsearchform'] = 'Iskalnik sporočil';
$labels['arialabelcontactsearchform'] = 'Iskalnik stikov';
$labels['arialabelmailquicksearchbox'] = 'Vnos iskanja sporočil';
$labels['arialabelquicksearchbox'] = 'Vnos iskanja';
$labels['arialabelfoldersearchfilter'] = 'Filter seznama map';
$labels['arialabelfoldersearchform'] = 'Iskalnik map';
$labels['arialabelfolderlist'] = 'Izbor map sporočil';
$labels['arialabelmessagelist'] = 'Seznam sporočil';
$labels['arialabelmailpreviewframe'] = 'Predogled sporočila';
$labels['arialabelmailboxmenu'] = 'Meni operacij mape';
$labels['arialabellistselectmenu'] = 'Prikaži meni za izbiro';
$labels['arialabelthreadselectmenu'] = 'Meni za izpis niti';
$labels['arialabelmessagelistoptions'] = 'Možnosti prikaza in razvrščanja sporočil';
$labels['arialabelmailimportdialog'] = 'Dialog za uvoz sporočil';
$labels['arialabelmessagenav'] = 'Krmarjenje po sporočilu';
$labels['arialabelmessagebody'] = 'Vsebina sporočila';
$labels['arialabelmessageactions'] = 'Operacije za sporočila';
$labels['arialabelcontactquicksearch'] = 'Iskalnik stikov';
$labels['arialabelcontactsearchbox'] = 'Vnesi stik za iskanje';
$labels['arialabelmessageheaders'] = 'Glave sporočil';
$labels['arialabelforwardingoptions'] = 'Možnosti posredovanja';
$labels['arialabelreplyalloptions'] = 'Možnost Odgovori vsem';
$labels['arialabelmoremessageactions'] = 'Več opravil za sporočila';
$labels['arialabelmorecontactactions'] = 'Več možnosti za stike';
$labels['arialabelmarkmessagesas'] = 'Označi izbrana sporočila kot ...';
$labels['arialabelcomposeoptions'] = 'Možnosti sestavljanja sporočil';
$labels['arialabelresponsesmenu'] = 'Meni v naprej pripravljenih odgovorov';
$labels['arialabelattachmentuploadform'] = 'Priponka naložena iz';
$labels['arialabelattachmentmenu'] = 'Možnosti za priponke';
$labels['arialabelmailtomenu'] = 'Možnosti za elektronske naslove';
$labels['arialabelattachmentpreview'] = 'Predogled priponke';
$labels['ariasummarycomposecontacts'] = 'Seznam stikov in skupin za izbor prejemnikov';
$labels['arialabelcontactexportoptions'] = 'Možnosti izvoza stika';
$labels['arialabelabookgroupoptions'] = 'Možnosti imenika';
$labels['arialabelpreferencesform'] = 'Nastavitve';
$labels['arialabelidentityeditfrom'] = 'Urejanje identitete';
$labels['arialabelresponseeditfrom'] = 'Urejanje odgovora';
$labels['arialabelsearchterms'] = 'Iskalni pogoji';
$labels['arialabeldropactionmenu'] = 'Meni operacij povleci in spusti';
$labels['arialabelheadersmenu'] = 'Meni za dodajanje naslovnika (glava sporočila)';
$labels['arialabelimagetools'] = 'Orodja za slike';
$labels['helplistnavigation'] = 'Izpiši možnosti krmarjenja s tipkovnico';
$labels['helplistkeyboardnavigation'] = "Puščica gor/dol: Premakni fokus/izbor vrstice
Presledek: Izberi označeno vrstico.
Shift + gor/dol: Izberi dodatne vrstice zgoraj/spodaj
Ctrl + presledek: Dodaj označeno vrstico v izbor/odstrani iz izbora";
$labels['helplistkeyboardnavmessages'] = "Puščice desno/levo: razširi/skrči nit sporočil (samo v nitnem načinu)
Enter: Odpri izbrano sporočilo
Delete: Premakni izbrana sporočila v Smeti.";
$labels['helplistkeyboardnavcontacts'] = "Odpri izbran stik.";
localization/sl_SI/messages.inc000064400000036365151727150540012573 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Prišlo je do napake!';
$messages['loginfailed']  = 'Prijava ni uspela';
$messages['cookiesdisabled'] = 'Vaš spletni brskalnik ne sprejema piškotkov.';
$messages['sessionerror'] = 'Seja je neveljavna ali je potekla.';
$messages['storageerror'] = 'Povezava z IMAP strežnikom je spodletela.';
$messages['servererror'] = 'Napaka strežnika!';
$messages['servererrormsg'] = 'Napaka strežnika $msg';
$messages['accountlocked'] = 'Preveliko število napačnih prijav. Poskusite znova kasneje.';
$messages['connerror'] = 'Napaka pri povezavi do strežnika.';
$messages['dberror'] = 'Napaka v bazi';
$messages['windowopenerror'] = 'Onemogočen prikaz pojavnih oken.';
$messages['requesttimedout'] = 'Zahteva je potekla';
$messages['errorreadonly'] = 'Operacije ni bilo mogoče izvršiti. Mapa je na voljo samo za branje.';
$messages['errornoperm'] = 'Operacije ni bilo mogoče izvršiti. Dostop zavrnjen.';
$messages['erroroverquota'] = 'Operacije ni mogoče izvršiti. Diskovni prostor je zaseden.';
$messages['erroroverquotadelete'] = 'Zmanjkalo je diskovnega prostora. Za izbris sporočila uporabite tipki SHIFT+DEL.';
$messages['invalidrequest'] = 'Neveljavna zahteva. Podatki niso bili shranjeni.';
$messages['invalidhost'] = 'Nepravilno ime strežnika';
$messages['nomessagesfound'] = 'V poštnem predalu ni sporočil.';
$messages['loggedout'] = 'Uspešno ste zaključili sejo. Nasvidenje!';
$messages['mailboxempty'] = 'Poštni predal je prazen.';
$messages['nomessages'] = 'Ni sporočil';
$messages['refreshing'] = 'Osvežujem...';
$messages['loading'] = 'Nalaganje...';
$messages['uploading'] = 'Prenos dokumenta na strežnik...';
$messages['attaching'] = 'Pripenjanje dokumenta...';
$messages['uploadingmany'] = 'Nalaganje dokumentov..';
$messages['loadingdata'] = 'Nalaganje podatkov...';
$messages['checkingmail'] = 'Preverjanje novih sporočil...';
$messages['sendingmessage'] = 'Pošiljanje sporočil...';
$messages['messagesent'] = 'Sporočilo je bilo uspešno poslano.';
$messages['savingmessage'] = 'Shranjevanje sporočila...';
$messages['messagesaved'] = 'Sporočilo je bilo shranjeno v Osnutke';
$messages['successfullysaved'] = 'Uspešno shranjeno.';
$messages['savingresponse'] = 'Shranjevanje odgovora...';
$messages['deleteresponseconfirm'] = 'Ste prepričani, da želite izbrisati ta odgovor?';
$messages['addedsuccessfully'] = 'Stik je bil uspešno dodan v imenik.';
$messages['contactexists'] = 'Stik s tem elektronskim naslovom že obstaja';
$messages['contactnameexists'] = 'Stik s tem imenom že obstaja';
$messages['blockedimages'] = 'Zaradi zaščite zasebnosti je prikaz slik v sporočilu onemogočen.';
$messages['encryptedmessage'] = 'Sporočilo je šifrirano in ne more biti prikazano.';
$messages['externalmessagedecryption'] = 'To je šifrirano sporočilo, ki ga lahko odšifrirate s pomočjo brskalnika.';
$messages['nopubkeyfor'] = 'V $email ni bilo mogoče najti javnega ključa';
$messages['nopubkeyforsender'] = 'Veljavnega javnega ključa za pošiljatelja ni bilo mogoče najti. Ali želite šifrirati sporočila samo za naslovnike?';
$messages['encryptnoattachments'] = 'Priponke, ki ste jih že naložili, ne morejo biti šifrirane. Dodajte jih znova v urejevalnik.';
$messages['searchpubkeyservers'] = 'Ali želite manjkajoče javne ključe poiskati na javno dostopnih strežnikih?';
$messages['encryptpubkeysfound'] = 'Najdeni so bili naslednji javni ključi:';
$messages['nocontactsfound'] = 'Ni stikov.';
$messages['contactnotfound'] = 'Iskanega stika ni bilo mogoče najti.';
$messages['sendingfailed'] = 'Sporočila ni bilo mogoče poslati.';
$messages['senttooquickly'] = 'Počakajte $sec sekund in nato znova poskusite s pošiljanjem sporočila.';
$messages['errorsavingsent'] = 'Pri shranjevanju poslanega sporočila je prišlo do napake.';
$messages['errorsaving'] = 'Pri shranjevanju je prišlo do napake.';
$messages['errormoving'] = 'Sporočila ni bilo mogoče premakniti.';
$messages['errorcopying'] = 'Sporočila ni bilo mogoče kopirati.';
$messages['errordeleting'] = 'Sporočila ni bilo mogoče izbrisati.';
$messages['errormarking'] = 'Sporočila ni bilo mogoče označiti.';
$messages['deletecontactconfirm']  = 'Ste prepričani, da želite izbrisati označen(e) stik(e)?';
$messages['deletegroupconfirm']  = 'Ste prepričani, da želite izbrisati izbrano skupino?';
$messages['deletemessagesconfirm'] = 'Ste prepričani, da želite izbrisati označeno(a) sporočilo(a)?';
$messages['deletefolderconfirm']  = 'Ste prepričani, da želite to mapo izbrisati?';
$messages['purgefolderconfirm']  = 'Ste prepričani, da želite izbrisati vsa sporočila v mapi?';
$messages['contactdeleting'] = 'Brisanje stika/ov...';
$messages['groupdeleting'] = 'Brisanje skupine...';
$messages['folderdeleting'] = 'Brisanje mape...';
$messages['foldermoving'] = 'Premikanje mape...';
$messages['foldersubscribing'] = 'Prijavljanje mape...';
$messages['folderunsubscribing'] = 'Odjavljanje mape...';
$messages['formincomplete'] = 'Obrazec ni v celoti izpolnjen';
$messages['noemailwarning'] = 'Vnesite veljaven elektronski naslov';
$messages['nonamewarning']  = 'Vnesite ime';
$messages['nopagesizewarning'] = 'Vnesite velikost strani';
$messages['nosenderwarning'] = 'Vnesite elektronski naslov pošiljatelja.';
$messages['recipientsadded'] = 'Naslovnik[i] uspešno dodan[i]';
$messages['norecipientwarning'] = 'Vnesite vsaj enega prejemnika sporočila';
$messages['disclosedrecipwarning'] = 'Vsi prejemniki bodo videli naslove drugih prejemnikov sporočila. Uporabite polje Skp, da zaščitite njihovo zasebnost.';
$messages['disclosedreciptitle'] = 'Preveliko število javnih naslovov prejemnikov';
$messages['nosubjectwarning']  = 'Polje "Zadeva" je prazno. Želite dodati besedilo v to polje?';
$messages['nosubjecttitle']  = 'Brez naslova';
$messages['nobodywarning'] = 'Želite poslati sporočilo brez besedila?';
$messages['notsentwarning'] = 'Sporočilo ni bilo poslano in vsebuje neshranjene spremembe. Želite spremembe zavreči?';
$messages['restoresavedcomposedata'] = 'Ali želite nadaljevati z urejanjem še neodposlanega osnutka:\n\nZadeva: $subject\nShranjeno dne: $date\n\n ';
$messages['nosearchname'] = 'Vnesite ime ali elektronski naslov stika';
$messages['notuploadedwarning'] = 'Priponke se še nalagajo na strežnik. Počakajte ali prekinite prenos.';
$messages['searchsuccessful'] = '$nr najdenih sporočil';
$messages['contactsearchsuccessful'] = '$nr najdenih stikov.';
$messages['searchnomatch'] = 'Ni zadetkov';
$messages['searching'] = 'Iskanje...';
$messages['checking'] = 'Preverjanje...';
$messages['stillsearching'] = 'Iskanje v teku...';
$messages['nospellerrors'] = 'V tekstu ni bilo nobenih pravopisnih napak';
$messages['folderdeleted'] = 'Mapa je bila uspešno izbrisana.';
$messages['foldersubscribed'] = 'Mapa je bila uspešno prijavljena.';
$messages['folderunsubscribed'] = 'Mapa je bila uspešno odjavljena.';
$messages['deletedsuccessfully'] = 'Uspešno izbrisano';
$messages['converting'] = 'Odstranjevanje nastavitev oblikovanja...';
$messages['messageopenerror'] = 'Sporočila ni bilo mogoče prenesti iz strežnika';
$messages['filelinkerror'] = 'Pripenjanje dokumenta je spodletelo.';
$messages['fileuploaderror'] = 'Prenos datoteke je spodletel';
$messages['filesizeerror'] = 'Naložena datoteka presega največjo dovoljeno velikost $size';
$messages['filecounterror'] = 'Na strežnik lahko prenesete največ $count dokumentov naenkrat.';
$messages['msgsizeerror'] = 'Datoteke ni bilo mogoče dodati. Največja dovoljena velikost sporočila ($size) je bila presežena.';
$messages['copysuccess'] = 'Uspešno ste kopirali $nr stikov.';
$messages['movesuccess'] = 'Uspešno ste premaknili $nr stikov.';
$messages['copyerror'] = 'Stikov ni bilo mogoče kopirati.';
$messages['moveerror'] = 'Stikov ni bilo mogoče premakniti.';
$messages['sourceisreadonly'] = 'Ta naslov je na voljo samo za branje';
$messages['errorsavingcontact'] = 'Stika ni bilo mogoče shraniti';
$messages['movingmessage'] = 'Premikanje sporočila...';
$messages['copyingmessage'] = 'Kopiranje sporočila...';
$messages['copyingcontact'] = 'Kopiranje stika/ov';
$messages['movingcontact'] = 'Premikanje stika(ov)...';
$messages['deletingmessage'] = 'Brisanje sporočil/a';
$messages['markingmessage'] = 'Označevanje sporočil/a';
$messages['addingmember'] = 'Dodajanje stika/ov v skupino...';
$messages['removingmember'] = 'Odstranjevanje stika/ov iz skupine..';
$messages['receiptsent'] = 'Sporočilo o branju je bilo uspešno poslano';
$messages['errorsendingreceipt'] = 'Sporočila o branju ni bilo mogoče poslati';
$messages['deleteidentityconfirm'] = 'Ste prepričani, da želite izbrisati to identiteto?';
$messages['nodeletelastidentity'] = 'Te identitete ni mogoče izbrisati, saj je edina.';
$messages['forbiddencharacter'] = 'Ime mape vsebuje nedovoljen znak';
$messages['selectimportfile'] = 'Izberite datoteko, ki jo želite prenesti';
$messages['addresswriterror'] = 'Izbran imenik ni zapisljiv';
$messages['contactaddedtogroup'] = 'Stik je bil uspešno dodan v skupino';
$messages['contactremovedfromgroup'] = 'Stik je bil uspešno izbrisan iz skupine';
$messages['nogroupassignmentschanged'] = 'Dodeljevanje skupini ni bilo spremenjeno.';
$messages['importwait'] = 'Uvažanje poteka...';
$messages['importformaterror'] = 'Uvoz ni uspel! Uvožena datoteka ni pravega formata.';
$messages['importconfirm'] = '<b>Uspešno uvoženi $inserted stiki, $skipped stikov že obstaja v imeniku</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Preskočeni že obstoječi vnosi $skipped </b>';
$messages['importmessagesuccess'] = 'Upešno ste uvozili $nr sporočil.';
$messages['importmessageerror'] = 'Uvoz je spodletel. Naložena datoteka ni veljavno sporočilo ali poštna datoteka';
$messages['opnotpermitted'] = 'Operacija ni dovoljena.';
$messages['nofromaddress'] = 'V izbrani identiteti manjka elektronski naslov.';
$messages['editorwarning'] = 'Preklop med urejevalniki besedila lahko povzroči izgubo oblikovanja besedila. Želite nadaljevati?';
$messages['httpreceivedencrypterror'] = 'Prišlo je do večje napake v konfiguraciji. Obrnite se na skrbnika sistema.  <b>Sporočila ni bilo mogoče poslati.</b>';
$messages['smtpconnerror'] = 'Napaka pri pošiljanju ($code): Povezava s strežnikom je spodletela';
$messages['smtpautherror'] = 'Napaka pri pošiljanju($code): Avtentikacija je spodletela';
$messages['smtpfromerror'] = 'Napaka pri pošiljanju ($code): Neveljaven elektronski naslov pošiljatelja "$from" ($msg)';
$messages['smtptoerror'] = 'Napaka pri pošiljanju ($code): Neveljaven elektronski naslov prejemnika "$to" ($msg)';
$messages['smtprecipientserror'] = 'Napaka pri pošiljanju: Seznama prejemnikov ni bilo mogoče razčleniti';
$messages['smtperror'] = 'Napaka pri pošiljanju:$msg';
$messages['emailformaterror'] = 'Neveljaven elektronski naslov: $email';
$messages['toomanyrecipients'] = 'Navedli ste preveč prejemnikov. Zmanjšajte število prejemnikov na $max';
$messages['maxgroupmembersreached'] = 'Število članov skupine presega največje dovoljeno število $max.';
$messages['internalerror'] = 'Prišlo je do napake. Poskusite znova.';
$messages['contactdelerror'] = 'Stika/ov ni bilo mogoče izbrisati';
$messages['contactdeleted'] = 'Stik/i so bili uspešno izbrisani';
$messages['contactrestoreerror'] = 'Ni bilo mogoče obnoviti izbrisanih stikov.';
$messages['contactrestored'] = 'Stiki so bili uspešno obnovljeni.';
$messages['groupdeleted'] = 'Skupina je bila uspešno izbrisana';
$messages['grouprenamed'] = 'Skupina je bila uspešno preimenovana';
$messages['groupcreated'] = 'Skupina je bila uspešno ustvarjena';
$messages['savedsearchdeleted'] = 'Shranjeno iskanje je bilo uspešno izbrisano.';
$messages['savedsearchdeleteerror'] = 'Ni bilo mogoče izbrisati shranjenega iskanja.';
$messages['savedsearchcreated'] = 'Iskanje je bilo uspešno shranjeno.';
$messages['savedsearchcreateerror'] = 'Iskanja ni bilo mogoče shraniti.';
$messages['messagedeleted'] = 'Sporočila so bila uspešno izbrisana';
$messages['messagemoved'] = 'Sporočila so bila uspešno premaknjena';
$messages['messagemovedtotrash'] = 'Sporočilo(a) so bila uspešno premaknjena v Smeti.';
$messages['messagecopied'] = 'Sporočila so bila uspešno kopirana';
$messages['messagemarked'] = 'Sporočila so bila uspešno označena';
$messages['autocompletechars'] = 'Vnesite vsaj $min znakov za samodejno dokončanje';
$messages['autocompletemore'] = 'Z iskanjem se ujema več vnosov. Vnesite dodatne črke.';
$messages['namecannotbeempty'] = 'Imena ni mogoče izbrisati';
$messages['nametoolong'] = 'Ime je predolgo';
$messages['namedotforbidden'] = 'Ime mape se ne more začeti s piko.';
$messages['folderupdated'] = 'Mapa je bila uspešno posodobljena';
$messages['foldercreated'] = 'Mapa je bila uspešno ustvarjena';
$messages['invalidimageformat'] = 'Neveljaven format slike';
$messages['mispellingsfound'] = 'V sporočilu so bile najdene napake v črkovanju';
$messages['parentnotwritable'] = 'Podmape v tej mapi ni bilo mogoče ustvariti/premakniti. Nimate pravic.';
$messages['messagetoobig'] = 'Sporočilo je preveliko za obdelavo.';
$messages['noscriptwarning'] = 'Opozorilo: Ta spletna stran zahteva Javascript! Za uporabo ga vključite v nastavitvah vašega brskalnika.';
$messages['messageissent'] = 'Sporočilo je bilo uspešno poslano, a ni bilo shranjeno. Ga želite shraniti?';
$messages['errnotfound'] = 'Datoteke ni bilo mogoče najti';
$messages['errnotfoundexplain'] = 'Zahtevanega vira ni bilo mogoče najti!';
$messages['errfailedrequest'] = 'Zahteva je spodletela';
$messages['errauthorizationfailed'] = 'Avtorizacija je spodletela';
$messages['errunauthorizedexplain'] = 'Ni bilo mogoče preveriti, ali ste avtorizirani za uporabo te storitve!';
$messages['errrequestcheckfailed'] = 'Preverjanje zahteve je spodletelo.';
$messages['errcsrfprotectionexplain'] = "Zaradi zagotavljanja varnosti je dostop do tega vira zaščiten proti CSRF.\n Če vidite to sporočilo, se verjetno niste odjavili, preden ste zapustili spletni brskalnik.\n\nZa nadaljevanje je potrebna vaša interakcija. ";
$messages['errcontactserveradmin'] = 'Obrnite se na skrbnika strežnika.';
$messages['clicktoresumesession'] = 'Kliknite tukaj za obnovitev prejšnje seje';
$messages['errcomposesession'] = 'Napaka v seji sestavljanja sporočila';
$messages['errcomposesessionexplain'] = 'Zahtevane seje za sestavljanje sporočila ni bilo mogoče najti.';
$messages['clicktocompose'] = 'Kliknite tukaj, če želite ustvariti novo sporočilo';
$messages['listempty'] = 'Seznam je prazen.';
$messages['listusebutton'] = 'Uporabite gumb »Ustvari« za dodajanje novega zapisa.';
$messages['emptyattachment'] = 'Ta priponka je videti prazna.<br>Prosimo, posvetujte se s pošiljateljem.';
localization/ur_PK/labels.inc000064400000010337151727150540012224 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = ' $product میں خوش آمدید';
$labels['username'] = 'صارف';
$labels['password'] = 'پاسورڈ';
$labels['server'] = 'سَروَر';
$labels['login'] = 'فولڈرز کا اصلی نام';
$labels['menu'] = 'مینو';
$labels['logout'] = 'لاگ آؤٹ';
$labels['mail'] = 'میل';
$labels['settings'] = 'ترتیبات';
$labels['addressbook'] = 'ایڈریس بک';
$labels['inbox'] = 'ان باکس';
$labels['drafts'] = 'ڈرافٹ';
$labels['sent'] = 'بھیجا ہوا میل';
$labels['trash'] = 'ردی کی ٹوکری';
$labels['junk'] = 'جنک میل';
$labels['show_real_foldernames'] = 'فولڈرز کا اصلی نام';
$labels['subject'] = 'مضمون';
$labels['from'] = 'از';
$labels['sender'] = 'بھیجنے والا';
$labels['date'] = 'تاریخ';
$labels['size'] = 'سائز';
$labels['mailboxlist'] = 'فولڈرز';
$labels['move'] = 'منتقل کریں';
$labels['download'] = 'ڈاؤن لوڈ';
$labels['open'] = 'کھولیں';
$labels['showattachment'] = 'دیکھایں';
$labels['showanyway'] = 'جیسا بھی ہے ظاہر کر دیں';
$labels['sun'] = 'اتوار';
$labels['mon'] = 'پیر';
$labels['tue'] = 'منگل';
$labels['wed'] = 'بدھ';
$labels['thu'] = 'جمرات';
$labels['fri'] = 'جمہ';
$labels['sat'] = 'ہفتہ';
$labels['sunday'] = 'اتوار';
$labels['monday'] = 'پیر';
$labels['tuesday'] = 'منگل';
$labels['wednesday'] = 'بدھ';
$labels['thursday'] = 'جمرات';
$labels['friday'] = 'جمہ';
$labels['saturday'] = 'ہفتہ';
$labels['jan'] = 'جنوری';
$labels['feb'] = 'فروری';
$labels['mar'] = 'مارچ';
$labels['apr'] = 'اپریل';
$labels['may'] = 'مئی';
$labels['jun'] = 'جون';
$labels['jul'] = 'جولائی';
$labels['aug'] = 'ٓآ گست';
$labels['sep'] = 'ستمبر';
$labels['oct'] = 'اُکتوبر';
$labels['nov'] = 'نومبر';
$labels['dec'] = 'دسمبر';
$labels['longjan'] = 'جنوری';
$labels['longfeb'] = 'فروری';
$labels['longmar'] = 'مارچ';
$labels['longapr'] = 'اپریل';
$labels['longmay'] = 'مئی';
$labels['longjun'] = 'جون';
$labels['longjul'] = 'جولائی';
$labels['longaug'] = 'ٓآگست';
$labels['longsep'] = 'ستمبر';
$labels['longoct'] = 'اکتوبر';
$labels['longnov'] = 'نومبر';
$labels['longdec'] = 'دسمبر';
$labels['today'] = 'آج ';
$labels['refresh'] = 'تازہ';
$labels['checkmail'] = 'نیا میسج دیکھیں';
$labels['compose'] = 'نیا میسج ';
$labels['writenewmessage'] = 'نیا میسج لکھیں';
$labels['reply'] = 'میسج کا جواب';
$labels['replytomessage'] = 'بھیجنے والے کو جواب دیں';
$labels['replyall'] = 'سب کو جواب دیں';
$labels['forward'] = 'آگےبھجوائیں';
$labels['markread'] = 'جیسے پڑھ لیا ہو';
$labels['markunread'] = 'جیسے ابھی نہ پڑھا ہو';
$labels['more'] = 'مزید';
$labels['back'] = 'واپس';
$labels['select'] = 'مۃنتخب کریں';
$labels['all'] = 'تمام';
$labels['none'] = 'کوئی نہیں';
$labels['currpage'] = 'موجودہ حفحہ';
$labels['unread'] = 'نہیں پڑھا';
$labels['deleted'] = 'ختم ہو گیا';
$labels['undeleted'] = 'ختم نہیں ہُوا';
$labels['invert'] = 'شکل تبدیل کریں';
$labels['list'] = 'لِسٹ';
$labels['expand-all'] = 'تمام کھولیں';
$labels['attachment'] = 'مُنسلَک شُدہ';
$labels['nonesort'] = 'کوئی نہیں';
$labels['layoutlist'] = 'لِسٹ';
$labels['folders'] = 'فولڈرز';
localization/ta_IN/labels.inc000064400000043254151727150540012202 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'நல்வரவு';
$labels['username'] = 'பயனர்';
$labels['password'] = 'கடவுச்சொல்';
$labels['server'] = 'சேவையகம்';
$labels['login'] = 'நுழை';
$labels['logout'] = 'வெளியேறு';
$labels['mail'] = 'மின்னஞ்சல்';
$labels['settings'] = 'அமைப்புகள்';
$labels['addressbook'] = 'தொடர்புகள்';
$labels['inbox'] = 'அகப்பெட்டி';
$labels['drafts'] = 'வரைவுகள்';
$labels['sent'] = 'அனுப்பிய அஞ்சல்';
$labels['trash'] = 'குப்பை';
$labels['junk'] = 'எரிதம்';
$labels['subject'] = 'தலைப்பு';
$labels['from'] = 'அனுப்புனர்';
$labels['to'] = 'பெறுனர்';
$labels['cc'] = 'நகல்';
$labels['bcc'] = 'மறை நகல்';
$labels['replyto'] = 'பதிலளி';
$labels['date'] = 'தேதி';
$labels['size'] = 'அளவு';
$labels['priority'] = 'முக்கியத்துவம்';
$labels['organization'] = 'நிறுவனம்';
$labels['mailboxlist'] = 'அடைவுகள்';
$labels['messagesfromto'] = 'செய்திகள் $countல் $from லிருந்து $to வரை';
$labels['messagenrof'] = '$countல் $nr வது செய்தி';
$labels['copy'] = 'நகல்';
$labels['moveto'] = 'இதற்கு அனுப்பு...';
$labels['download'] = 'பதிவிறக்கு';
$labels['filename'] = 'கோப்பு பெயர்';
$labels['filesize'] = 'கோப்பு அளவு';
$labels['addtoaddressbook'] = 'தொடர்புகளுக்கு சேர்க்கவும்';
$labels['sun'] = 'ஞாயிறு';
$labels['mon'] = 'திங்கள்';
$labels['tue'] = 'செவ்வாய்';
$labels['wed'] = 'புதன்';
$labels['thu'] = 'வியாழன்';
$labels['fri'] = 'வெள்ளி';
$labels['sat'] = 'சனி';
$labels['sunday'] = 'ஞாயிறு';
$labels['monday'] = 'திங்கள்';
$labels['tuesday'] = 'செவ்வாய்';
$labels['wednesday'] = 'புதன்';
$labels['thursday'] = 'வியாழன்';
$labels['friday'] = 'வெள்ளி';
$labels['saturday'] = 'சனி';
$labels['jan'] = 'சனவரி';
$labels['feb'] = 'பிப்ரவரி';
$labels['mar'] = 'மார்ச்';
$labels['apr'] = 'ஏப்ரல்';
$labels['may'] = 'மே';
$labels['jun'] = 'சூன்';
$labels['jul'] = 'சூலை';
$labels['aug'] = 'ஆகஸ்ட்';
$labels['sep'] = 'செப்டம்பர்';
$labels['oct'] = 'அக்டோபர்';
$labels['nov'] = 'நவம்பர்';
$labels['dec'] = 'டிசம்பர்';
$labels['longjan'] = 'சனவரி';
$labels['longfeb'] = 'பிப்ரவரி';
$labels['longmar'] = 'மார்ச்';
$labels['longapr'] = 'ஏப்ரல்';
$labels['longmay'] = 'மே';
$labels['longjun'] = 'சூன்';
$labels['longjul'] = 'சூலை';
$labels['longaug'] = 'ஆகஸ்ட்';
$labels['longsep'] = 'செப்டம்பர்';
$labels['longoct'] = 'அக்டோபர்';
$labels['longnov'] = 'நவம்பர்';
$labels['longdec'] = 'டிசம்பர்';
$labels['today'] = 'இன்று';
$labels['checkmail'] = 'புது அஞ்சல்களை பார்க்கவும்';
$labels['compose'] = 'அஞ்சல் எழுது';
$labels['writenewmessage'] = 'புது அஞ்சல் எழுதவும்';
$labels['replytomessage'] = 'அனுப்புனருக்கு பதிலளி';
$labels['replytoallmessage'] = 'அனுப்புனர் மற்றும் எல்லா பெறுனர்களுக்கும் பதிலளி';
$labels['forwardmessage'] = 'செய்தியை முன்அனுப்பு';
$labels['deletemessage'] = 'செய்தியை நீக்கு';
$labels['movemessagetotrash'] = 'செய்தியை குப்பைக்கு நகர்த்து';
$labels['printmessage'] = 'செய்தியை அச்சிடவும்';
$labels['previousmessage'] = 'முந்திய செய்தியை காட்டவும்';
$labels['firstmessage'] = 'முதல் செய்தியை காட்டவும்';
$labels['nextmessage'] = 'அடுத்த செய்தியை காட்டு';
$labels['lastmessage'] = 'கடைசி செய்தியை காட்டு';
$labels['backtolist'] = 'செய்தி பட்டியலுக்கு செல்லவும்';
$labels['viewsource'] = 'மூலத்தை காட்டு';
$labels['markmessages'] = 'செய்திகளை குறியிடு';
$labels['markread'] = 'படித்ததாக குறியிடு';
$labels['markunread'] = 'படிக்காததாக குறியிடு';
$labels['markflagged'] = 'நட்சத்திரமிட்டதாக குறியிடு';
$labels['markunflagged'] = 'நட்சத்திரமிடாததாக குறியிடு';
$labels['select'] = 'தேர்ந்தெடு';
$labels['all'] = 'எல்லாம்';
$labels['none'] = 'எதுவுமில்லை';
$labels['unread'] = 'படிக்காதது';
$labels['flagged'] = 'நட்சத்திரமிட்டது';
$labels['unanswered'] = 'பதிலளிக்காதது';
$labels['deleted'] = 'நீக்கியது';
$labels['invert'] = 'தலைகீழ்';
$labels['filter'] = 'வடிப்பான்';
$labels['nonesort'] = 'எதுவுமில்லை';
$labels['compact'] = 'குறுகிய';
$labels['empty'] = 'காலி';
$labels['quota'] = 'பயன்பாட்டு அளவு';
$labels['unknown'] = 'தெரியாத';
$labels['unlimited'] = 'அளவில்லா';
$labels['quicksearch'] = 'விரைவு தேடல்';
$labels['resetsearch'] = 'தேடலை மறுஅமை';
$labels['searchmod'] = 'மாற்றிகளை தேடு';
$labels['msgtext'] = 'முழு செய்தி';
$labels['openinextwin'] = 'புது சாளரத்தில் திற';
$labels['emlsave'] = 'பதிவிறக்கு (.eml)';
$labels['editasnew'] = 'புதியதாக திருத்து';
$labels['sendmessage'] = 'இப்போது அனுப்பு';
$labels['savemessage'] = 'இந்த வரைவை சேமி';
$labels['addattachment'] = 'ஒரு கோப்பை இணைக்கவும்';
$labels['charset'] = 'எழுத்து குறிமுறை';
$labels['editortype'] = 'திருத்தும் வகை';
$labels['returnreceipt'] = 'திரும்பு சீட்டு';
$labels['checkspelling'] = 'எழுத்துப்பிழை சரிபார்';
$labels['resumeediting'] = 'திருத்துவதை தொடரவும்';
$labels['revertto'] = 'முந்திய நிலைக்கு திரும்பவும்';
$labels['attachments'] = 'கோப்பு இணைப்புகள்';
$labels['upload'] = 'பதிவேற்று';
$labels['close'] = 'மூடு';
$labels['low'] = 'குறைந்த';
$labels['lowest'] = 'மிக குறைந்த';
$labels['normal'] = 'சாதாரண';
$labels['high'] = 'அதிக';
$labels['highest'] = 'மிக அதிக';
$labels['nosubject'] = '(தலைப்பில்லா)';
$labels['showimages'] = 'படங்களை காட்டு';
$labels['alwaysshow'] = '$-னிடமிருந்து வரும் படங்களை காட்டு';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'எளிய உரை';
$labels['savesentmessagein'] = 'அனுப்பிய அஞ்சலை இங்கு சேமிக்கவும்';
$labels['dontsave'] = 'சேமிக்காதே';
$labels['maxuploadsize'] = 'அனுமதிக்கப்படும் அதிகபட்ச கோப்பு அளவு $';
$labels['addcc'] = 'நகல் சேர்';
$labels['addbcc'] = 'மறை நகல் சேர்';
$labels['addreplyto'] = 'பதிலளிக்க வேண்டியவர்களை சேர்';
$labels['mdnrequest'] = 'இந்த செய்தியின் அனுப்புனர் இதை படித்தவுடன் அறிவிக்கும்படி கேட்டார். அறிவிக்க விரும்புகிறீர்களா ?';
$labels['receiptread'] = 'திரும்பு சீட்டு (படி)';
$labels['yourmessage'] = 'இது உங்கள் செய்தியின் திரும்பு சீட்டு';
$labels['receiptnote'] = 'குறிப்பு: இந்த ஒப்புகை பெறுனரிடம் செய்தியை காட்டியதற்காக வருகிறது. அவர் அதை படித்ததற்கு எந்த உத்திரவாதமும் இல்லை';
$labels['name'] = 'காட்சி பெயர்';
$labels['firstname'] = 'முதற் பெயர்';
$labels['surname'] = 'கடைசி பெயர்';
$labels['email'] = 'மின்னஞ்சல்';
$labels['editcontact'] = 'தொடர்பை திருத்து';
$labels['edit'] = 'திருத்து';
$labels['cancel'] = 'ரத்து';
$labels['save'] = 'சேமி';
$labels['delete'] = 'நீக்கு';
$labels['deletecontact'] = 'தேர்ந்தெடுத்த தொடர்புகளை நீக்கு';
$labels['composeto'] = 'இவர்-கு அஞ்சல் எழுது';
$labels['contactsfromto'] = 'தொடர்புகள் $countல் $from லிருந்து $to வரை';
$labels['print'] = 'அச்சிடு';
$labels['export'] = 'ஏற்றுமதி';
$labels['exportvcards'] = 'தொடர்புகளை vCard வடிவத்தில் ஏற்றுமதி செய்யவும்';
$labels['previouspage'] = 'முந்திய குழுவை காட்டு';
$labels['firstpage'] = 'முதல் குழுவை காட்டு';
$labels['nextpage'] = 'அடுத்த குழுவை காட்டு';
$labels['lastpage'] = 'கடைசி குழுவை காட்டு';
$labels['groups'] = 'குழுக்கள்';
$labels['personaladrbook'] = 'சுய முகவரி';
$labels['import'] = 'இறக்குமதி';
$labels['importcontacts'] = 'தொடர்புகளை இறக்குமதி செய்யவும்';
$labels['importreplace'] = 'எல்லா தொடர்புகளையும் மாற்றி அமை';
$labels['done'] = 'முடிந்தது';
$labels['settingsfor'] = 'இதற்கான அமைப்புகள்';
$labels['preferences'] = 'விருப்பங்கள்';
$labels['userpreferences'] = 'பயனர் விருப்பங்கள்';
$labels['editpreferences'] = 'பயனர் விருப்பங்களை திருத்து';
$labels['identities'] = 'அடையாளங்கள்';
$labels['preferhtml'] = 'HTML காட்டு';
$labels['htmlmessage'] = 'HTML செய்தி';
$labels['prettydate'] = 'நல்ல தேதி';
$labels['setdefault'] = 'இயல்பை அமை';
$labels['autodetect'] = 'தானியங்கி';
$labels['language'] = 'மொழி';
$labels['timezone'] = 'நேர மண்டலம்';
$labels['pagesize'] = 'ஒரு பக்கத்திற்கான வரிகள்';
$labels['signature'] = 'கையொப்பம்';
$labels['dstactive'] = 'பகல் ஒளி சேமிப்பு நேரம்';
$labels['htmleditor'] = 'HTML செய்திகளை எழுது';
$labels['htmlsignature'] = 'HTML கையொப்பம்';
$labels['previewpane'] = 'முந்திய பாத்தியை காட்டு';
$labels['skin'] = 'முகப்பு தோற்றம்';
$labels['logoutclear'] = 'வெளியேறும் போது குப்பையை காலி செய்';
$labels['logoutcompact'] = 'வெளியேறும் போது இன்பாக்ஸை குறுக்கவும்';
$labels['uisettings'] = 'பயனர் முகப்பு';
$labels['serversettings'] = 'சேவையகம் அமைப்புகள்';
$labels['mailboxview'] = 'அஞ்சல் பெட்டி காட்சி';
$labels['mdnrequests'] = 'அனுப்புனர் அறிவிப்புகள்';
$labels['askuser'] = 'பயனரை கேள்';
$labels['autosend'] = 'தானாக அனுப்பு';
$labels['readwhendeleted'] = 'செய்தியை நீக்கும் போது படித்ததாக குறி';
$labels['flagfordeletion'] = 'நீக்குவதற்கு பதிலாக நீக்குவதாக நட்சத்திரமிடு';
$labels['skipdeleted'] = 'நீக்கிய செய்திகளை காட்டாதே';
$labels['showremoteimages'] = 'தொலை தூர துணை படங்களை காட்டு';
$labels['fromknownsenders'] = 'தெரிந்த அனுப்புனரிடமிருந்து';
$labels['always'] = 'எப்போதும்';
$labels['showinlineimages'] = 'இணைத்த படங்களை செய்திகளுக்கு கீழே காட்டவும்';
$labels['autosavedraft'] = 'தானாக வரைவுகளை சேமி';
$labels['everynminutes'] = 'ஒவ்வொரு $n நிமிடங்களுக்கும்';
$labels['never'] = 'எப்போதுமில்லை';
$labels['messagesdisplaying'] = 'செய்திகளை காட்டுகிறது';
$labels['messagescomposition'] = 'செய்திகளை எழுதுகிறது';
$labels['mimeparamfolding'] = 'இணைப்பு பெயர்கள்';
$labels['2231folding'] = 'முழு RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'முழு RFC 2047 (மற்ற)';
$labels['advancedoptions'] = 'மேம்பட்ட விருப்பங்கள்';
$labels['focusonnewmessage'] = 'உலாவி சாளரத்தை புது செய்திக்காக கவனி';
$labels['checkallfolders'] = 'புது செய்திகளுக்காக எல்லா அடைவுகளையும் சரிபார்';
$labels['mainoptions'] = 'முக்கிய விருப்பங்கள்';
$labels['section'] = 'பிரிவு';
$labels['maintenance'] = 'பராமரிப்பு';
$labels['newmessage'] = 'புது செய்தி';
$labels['signatureoptions'] = 'கையொப்ப விருப்பங்கள்';
$labels['whenreplying'] = 'பதிலளிக்கும் போது';
$labels['replytopposting'] = 'புது செய்தியை அசலின் மேல் துவக்கு';
$labels['replybottomposting'] = 'புது செய்தியை அசலின் கீழ் துவக்கு';
$labels['replyremovesignature'] = 'பதிலளிக்கும் போது அசல் கையெழுத்தை செய்தியிலிருந்து நீக்கவும்';
$labels['autoaddsignature'] = 'தானாக கையொப்பத்தை சேர்';
$labels['newmessageonly'] = 'புது செய்தி மட்டும்';
$labels['replyandforwardonly'] = 'பதிலளிப்பு முன்அனுப்பு மட்டும்';
$labels['insertsignature'] = 'கையோப்பமிடு';
$labels['folder'] = 'அடைவு';
$labels['folders'] = 'அடைவுகள்';
$labels['foldername'] = 'அடைவு பெயர்';
$labels['subscribed'] = 'சந்தா';
$labels['messagecount'] = 'செய்திகள்';
$labels['create'] = 'உருவாக்கு';
$labels['createfolder'] = 'புது அடைவு உருவாக்கு';
$labels['managefolders'] = 'அடைவுகளை நிற்வகி';
$labels['specialfolders'] = 'சிறப்பு அடைவுகள்';
$labels['sortby'] = 'வாரியாக அடுக்கு';
$labels['sortasc'] = 'ஏறு வரிசையாக அடுக்கு';
$labels['sortdesc'] = 'இறங்கு வரிசையாக அடுக்கு';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
localization/ta_IN/messages.inc000064400000026100151727150540012536 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'பிழை ஏற்பட்டது!';
$messages['loginfailed']  = 'நுழைவு தோல்வியடைந்தது';
$messages['cookiesdisabled'] = 'உங்கள் உலாவி நினைவிகளை அனுமதிப்பதில்லை';
$messages['sessionerror'] = 'உங்கள் அமர்வு செல்லாது அல்லது முடிவுற்றது';
$messages['storageerror'] = 'IMAP சேவையகத்திற்கான இணைப்பு தோல்வியடைந்தது';
$messages['servererror'] = 'சேவையக பிழை!';
$messages['servererrormsg'] = 'சேவையக பிழை: $msg';
$messages['invalidrequest'] = 'செல்லாத வேண்டுகோள்! எந்த தரவும் சேமிக்கப்படவில்லை.';
$messages['nomessagesfound'] = 'இந்த தபால் பெட்டியில் எந்த தரவும் சேமிக்கப்படவில்லை';
$messages['mailboxempty'] = 'தபால் பெட்டி காலியாக உள்ளது';
$messages['loading'] = 'ஏற்றுகிறது...';
$messages['uploading'] = 'கோப்பை ஏற்றுகிறது...';
$messages['loadingdata'] = 'தரவை ஏற்றுகிறது...';
$messages['checkingmail'] = 'புது செய்திகளை சரிபார்க்கிறது...';
$messages['sendingmessage'] = 'செய்தியை அனுப்புகிறது...';
$messages['messagesent'] = 'செய்தி வெற்றிகரமாக அனுப்பப்பட்டது';
$messages['savingmessage'] = 'செய்தியை சேமிக்கிறது...';
$messages['messagesaved'] = 'செய்தி வரைவில் சேமிக்கப்பட்டது';
$messages['successfullysaved'] = 'வெற்றிகரமாக சேமிக்கப்பட்டது';
$messages['addedsuccessfully'] = 'தொடர்பு சேமிக்கப்பட்டது';
$messages['blockedimages'] = 'உங்கள் தனிப்பட்ட தகவலை பாதுகாக்க, தொலை தூரப் படங்கள் இந்த செய்தியில் தடுக்கப்பட்டது';
$messages['encryptedmessage'] = 'மன்னிக்கவும்! இந்த செய்தி குறிமுறையாக்கப்பட்டது அதனால் காட்ட முடியாது.';
$messages['nocontactsfound'] = 'எந்த தொடர்புகளும் காணப்படவில்லை';
$messages['contactnotfound'] = 'நீங்கள் வேண்டிய தொடர்பு காணப்படவில்லை';
$messages['sendingfailed'] = 'செய்தி அனுப்புவது தோல்வியுற்றது';
$messages['senttooquickly'] = 'இந்த செய்தி அனுப்புவதற்கு முன்பு தயவு செய்து $sec வினாடி(கள்) காத்திருக்கவும்.';
$messages['errormoving'] = 'செய்தியை நகர்த்த முடியவில்லை';
$messages['errordeleting'] = 'செய்தியை நீக்க முடியவில்லை';
$messages['errormarking'] = 'செய்தியை நட்சத்திரமிட முடியவில்லை';
$messages['deletecontactconfirm']  = 'நீங்கள் தேர்ந்தெடுத்த தொடர்புகளை நீக்க விரும்புகிறீர்களா ?';
$messages['deletemessagesconfirm'] = 'நீங்கள் தேர்ந்தெடுத்த செய்திகளை நீக்க விரும்புகிறீர்களா ?';
$messages['deletefolderconfirm']  = 'நீங்கள் இந்த அடைவை நீக்க விரும்புகிறீர்களா ?';
$messages['purgefolderconfirm']  = 'நீங்கள் இந்த அடைவிலிருக்கும் எல்லா செய்திகளையும் நீக்க விரும்புகிறீர்களா ?';
$messages['folderdeleting'] = 'அடைவை நீக்குகிறது...';
$messages['foldermoving'] = 'அடைவை நகர்த்துகிறது...';
$messages['formincomplete'] = 'விண்ணப்பத்தை முழுமையாக நிறைவு செய்யவில்லை';
$messages['noemailwarning'] = 'தயவு செய்து உண்மையான மின்னஞ்சலை எழுதுங்கள்';
$messages['nonamewarning']  = 'தயவு செய்து பெயரை எழுதுங்கள்';
$messages['nopagesizewarning'] = 'தயவு செய்து தாழின் அளவை எழுதுங்கள்';
$messages['norecipientwarning'] = 'தயவு செய்து ஒரு பெறுனரையாவது எழுதுங்கள்';
$messages['nosubjectwarning']  = 'தலைப்பு காலியாக உள்ளது. இப்போது எழுத விரும்புகிறீர்களா?';
$messages['nobodywarning'] = 'உரையில்லாமல் இந்த செய்தியை அனுப்ப வேண்டுமா?';
$messages['nosearchname'] = 'தயவு செய்து தொடர்பின் பெயரோ மின்னஞ்சல் முகவரியோ எழுதுங்கள்';
$messages['notuploadedwarning'] = 'எல்லா இணைப்புகளும் ஏற்றப்படவில்லை. தயவு செய்து காத்திருங்கள் அல்லது ஏற்றத்தை ரத்து செய்யுங்கள்.';
$messages['searchsuccessful'] = '$nr செய்திகள் கண்டுபிடிக்கப்பட்டது';
$messages['searchnomatch'] = 'தேடுதல் எந்த பொருத்தத்தையும் அனுப்பவில்லை';
$messages['searching'] = 'தேடுகிறது...';
$messages['checking'] = 'சரி பார்க்கிறது...';
$messages['nospellerrors'] = 'எழுத்து பிழைகள் இல்லை';
$messages['folderdeleted'] = 'அடைவு வெற்றிகரமாக நீக்கப்பட்டது';
$messages['deletedsuccessfully'] = 'வெற்றிகரமாக நீக்கப்பட்டது';
$messages['converting'] = 'வடிவத்தை நீக்குகிறது...';
$messages['messageopenerror'] = 'சேவையகத்திலிருந்து செய்தியை ஏற்ற முடியவில்லை';
$messages['fileuploaderror'] = 'கோப்பு ஏற்றம் தோல்வியடாந்தது';
$messages['filesizeerror'] = 'ஏற்றிய கோப்பு அதிகபட்ச அளவான $size-ஐ மீறியது';
$messages['sourceisreadonly'] = 'இந்த முகவரியின் மூலத்தை படிக்க மட்டும்தான் முடியும்';
$messages['errorsavingcontact'] = 'தொடர்பு முகவரியை சேமிக்க முடியவில்லை';
$messages['movingmessage'] = 'செய்தியை நகர்த்துகிறது...';
$messages['receiptsent'] = 'படித்த சீட்டு வெற்றிகரமாக அனுப்பப்பட்டது';
$messages['errorsendingreceipt'] = 'சீட்டை அனுப்ப முடியவில்லை';
$messages['nodeletelastidentity'] = 'நீங்கள் இந்த அடையாளத்தை நீக்க முடியாது இது தான் கடைசி';
$messages['forbiddencharacter'] = 'அடைவு பெயரில் தடை செய்யப்பட்ட எழுத்துக்கள் உள்ளது';
$messages['selectimportfile'] = 'தயவு செய்து ஏற்றுவதற்கு ஒரு கோப்பை தேர்ந்தெடுங்கள்';
$messages['addresswriterror'] = 'நீங்கள் தேர்ந்தெடுத்த தொடர்புகளில் எழுத முடியாது';
$messages['importwait'] = 'ஏற்றுகிறது, தயவு செய்து காத்திருங்கள்...';
$messages['importconfirm'] = '<b>வெற்றிகரமாக $inserted தொடர்புகள் ஏற்றப்பட்டது, ஏற்கனவே உள்ள $skipped தொடர்புகள் தவிர்க்கப்பட்டது</b>: <p><em>$names</em></p>';
$messages['opnotpermitted'] = 'பணி அனுமதிக்கப்படவில்லை!';
$messages['httpreceivedencrypterror'] = 'அமைப்பில் பெரிய பிழை ஏற்பட்டது. உங்கள் நிர்வாகியை உடனே தொடர்பு கொள்ளவும். <b>உங்கள் செய்தியை அனுப்ப முடியாது.</b>';
$messages['smtpconnerror'] = 'SMTP பிழை ($code): சேவையகத்தின் இணைப்பு தோல்வியடைந்தது';
$messages['smtpautherror'] = 'SMTP பிழை ($code): நம்பகத்தன்மை தோல்வியடைந்தது';
$messages['smtpfromerror'] = 'SMTP பிழை ($code): அனுப்புனரை "$from" ஆக வைப்பதில் தோல்வி';
$messages['smtptoerror'] = 'SMTP பிழை ($code): "$to" பெறுனரை சேர்பதில் தோல்வி';
$messages['smtprecipientserror'] = 'SMTP பிழை : பெறுனர் பட்டியலை பிரிக்க முடியவில்லை';
$messages['smtperror'] = 'SMTP பிழை: $msg';
localization/ru_RU/timezones.inc000064400000055701151727150540013017 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Африка';
$labels['tz:africa:abidjan'] = 'Абиджан';
$labels['tz:africa:accra'] = 'Аккра';
$labels['tz:africa:addis_ababa'] = 'Аддис-Абеба';
$labels['tz:africa:algiers'] = 'Алжир';
$labels['tz:africa:asmara'] = 'Асмара';
$labels['tz:africa:bamako'] = 'Бамако';
$labels['tz:africa:bangui'] = 'Банги';
$labels['tz:africa:banjul'] = 'Банджул';
$labels['tz:africa:bissau'] = 'Бисау';
$labels['tz:africa:blantyre'] = 'Блантайр';
$labels['tz:africa:brazzaville'] = 'Браззавиль';
$labels['tz:africa:bujumbura'] = 'Бужумбура';
$labels['tz:africa:cairo'] = 'Каир';
$labels['tz:africa:casablanca'] = 'Касабланка';
$labels['tz:africa:ceuta'] = 'Сеута';
$labels['tz:africa:conakry'] = 'Конакри';
$labels['tz:africa:dakar'] = 'Дакар';
$labels['tz:africa:dar_es_salaam'] = 'Дар-эс-Салам';
$labels['tz:africa:djibouti'] = 'Джибути';
$labels['tz:africa:douala'] = 'Дуала';
$labels['tz:africa:el_aaiun'] = 'Эль-Аюн';
$labels['tz:africa:freetown'] = 'Фритаун';
$labels['tz:africa:gaborone'] = 'Габороне';
$labels['tz:africa:harare'] = 'Хараре';
$labels['tz:africa:johannesburg'] = 'Йоханнесбург';
$labels['tz:africa:juba'] = 'Джуба';
$labels['tz:africa:kampala'] = 'Кампала';
$labels['tz:africa:khartoum'] = 'Хартум';
$labels['tz:africa:kigali'] = 'Кигали';
$labels['tz:africa:kinshasa'] = 'Киншаса';
$labels['tz:africa:lagos'] = 'Лагос';
$labels['tz:africa:libreville'] = 'Либревиль';
$labels['tz:africa:lome'] = 'Ломе';
$labels['tz:africa:luanda'] = 'Луанда';
$labels['tz:africa:lubumbashi'] = 'Лубумбаши';
$labels['tz:africa:lusaka'] = 'Лусака';
$labels['tz:africa:malabo'] = 'Малабо';
$labels['tz:africa:maputo'] = 'Мапуту';
$labels['tz:africa:maseru'] = 'Масеру';
$labels['tz:africa:mbabane'] = 'Мбабане';
$labels['tz:africa:mogadishu'] = 'Могадишо';
$labels['tz:africa:monrovia'] = 'Монровия';
$labels['tz:africa:nairobi'] = 'Найроби';
$labels['tz:africa:ndjamena'] = 'Нджамена';
$labels['tz:africa:niamey'] = 'Ниамей';
$labels['tz:africa:nouakchott'] = 'Нуакшот';
$labels['tz:africa:ouagadougou'] = 'Уагадугу';
$labels['tz:africa:porto-novo'] = 'Порто-Ново';
$labels['tz:africa:sao_tome'] = 'Сан-Томе';
$labels['tz:africa:tripoli'] = 'Триполи';
$labels['tz:africa:tunis'] = 'Тунис';
$labels['tz:africa:windhoek'] = 'Виндхук';
$labels['tz:america'] = 'Америка';
$labels['tz:america:adak'] = 'Адак';
$labels['tz:america:anchorage'] = 'Анкоридж';
$labels['tz:america:anguilla'] = 'Ангилья';
$labels['tz:america:antigua'] = 'Антигуа';
$labels['tz:america:araguaina'] = 'Арагуаина';
$labels['tz:america:argentina'] = 'Аргентина';
$labels['tz:america:argentina:buenos_aires'] = 'Буэнос-Айрес';
$labels['tz:america:argentina:catamarca'] = 'Кэйтамарка';
$labels['tz:america:argentina:cordoba'] = 'Кордова';
$labels['tz:america:argentina:jujuy'] = 'Жужуй';
$labels['tz:america:argentina:la_rioja'] = 'Ла-Риоха';
$labels['tz:america:argentina:mendoza'] = 'Мендоса';
$labels['tz:america:argentina:rio_gallegos'] = 'Рио-Гальегос';
$labels['tz:america:argentina:salta'] = 'Сальта';
$labels['tz:america:argentina:san_juan'] = 'Сан-Хуан';
$labels['tz:america:argentina:san_luis'] = 'Сан-Луис';
$labels['tz:america:argentina:tucuman'] = 'Тукуман';
$labels['tz:america:argentina:ushuaia'] = 'Ушуайя';
$labels['tz:america:aruba'] = 'Аруба';
$labels['tz:america:asuncion'] = 'Асунсьон';
$labels['tz:america:atikokan'] = 'Атикокан';
$labels['tz:america:bahia'] = 'Баия';
$labels['tz:america:bahia_banderas'] = 'Баия-де-Бандерас';
$labels['tz:america:barbados'] = 'Барбадос';
$labels['tz:america:belem'] = 'Белен';
$labels['tz:america:belize'] = 'Белиз';
$labels['tz:america:blanc-sablon'] = 'Блан Саблон';
$labels['tz:america:boa_vista'] = 'Боа-Виста';
$labels['tz:america:bogota'] = 'Богота';
$labels['tz:america:boise'] = 'Бойсе';
$labels['tz:america:cambridge_bay'] = 'Кеймбридж-Бей';
$labels['tz:america:campo_grande'] = 'Кампу-Гранди';
$labels['tz:america:cancun'] = 'Канкун';
$labels['tz:america:caracas'] = 'Каракас';
$labels['tz:america:cayenne'] = 'Кайенна';
$labels['tz:america:cayman'] = 'Острова Кайман';
$labels['tz:america:chicago'] = 'Чикаго';
$labels['tz:america:chihuahua'] = 'Чихуахуа';
$labels['tz:america:costa_rica'] = 'Коста-Рика';
$labels['tz:america:creston'] = 'Крестон';
$labels['tz:america:cuiaba'] = 'Куяба';
$labels['tz:america:curacao'] = 'Кюрасао';
$labels['tz:america:danmarkshavn'] = 'Данмарксхавн';
$labels['tz:america:dawson'] = 'Доусон';
$labels['tz:america:dawson_creek'] = 'Доусон-Крик';
$labels['tz:america:denver'] = 'Денвер';
$labels['tz:america:detroit'] = 'Детройт';
$labels['tz:america:dominica'] = 'Доминика';
$labels['tz:america:edmonton'] = 'Эдмонтон';
$labels['tz:america:eirunepe'] = 'Эйрунепе';
$labels['tz:america:el_salvador'] = 'Сальвадор';
$labels['tz:america:fort_nelson'] = 'Форт Нельсон';
$labels['tz:america:fortaleza'] = 'Форталеза';
$labels['tz:america:glace_bay'] = 'Глейс-Бей';
$labels['tz:america:godthab'] = 'Готхоб';
$labels['tz:america:goose_bay'] = 'Гус-Бей';
$labels['tz:america:grand_turk'] = 'Гранд-Терк';
$labels['tz:america:grenada'] = 'Гренада';
$labels['tz:america:guadeloupe'] = 'Гваделупа';
$labels['tz:america:guatemala'] = 'Гватемала';
$labels['tz:america:guayaquil'] = 'Гуаякиль';
$labels['tz:america:guyana'] = 'Гайана';
$labels['tz:america:halifax'] = 'Галифакс';
$labels['tz:america:havana'] = 'Гавана';
$labels['tz:america:hermosillo'] = 'Эрмосильо';
$labels['tz:america:indiana'] = 'Индиана';
$labels['tz:america:indiana:indianapolis'] = 'Индианаполис';
$labels['tz:america:indiana:knox'] = 'Нокс';
$labels['tz:america:indiana:marengo'] = 'Маренго';
$labels['tz:america:indiana:petersburg'] = 'Петербург';
$labels['tz:america:indiana:tell_city'] = 'Телл-Сити';
$labels['tz:america:indiana:vevay'] = 'Вивей';
$labels['tz:america:indiana:vincennes'] = 'Венсен';
$labels['tz:america:indiana:winamac'] = 'Уинамак';
$labels['tz:america:inuvik'] = 'Инувик';
$labels['tz:america:iqaluit'] = 'Икалуит';
$labels['tz:america:jamaica'] = 'Ямайка';
$labels['tz:america:juneau'] = 'Джуно';
$labels['tz:america:kentucky'] = 'Кентукки';
$labels['tz:america:kentucky:louisville'] = 'Луисвилл';
$labels['tz:america:kentucky:monticello'] = 'Монтиселло';
$labels['tz:america:kralendijk'] = 'Кралендейк';
$labels['tz:america:la_paz'] = 'Ла-Пас';
$labels['tz:america:lima'] = 'Лима';
$labels['tz:america:los_angeles'] = 'Лос-Анджелес';
$labels['tz:america:lower_princes'] = 'Лоуэр-Принс';
$labels['tz:america:maceio'] = 'Масейо';
$labels['tz:america:managua'] = 'Манагуа';
$labels['tz:america:manaus'] = 'Манаус';
$labels['tz:america:marigot'] = 'Мариго';
$labels['tz:america:martinique'] = 'Мартиника';
$labels['tz:america:matamoros'] = 'Матаморос';
$labels['tz:america:mazatlan'] = 'Масатлан';
$labels['tz:america:menominee'] = 'Меномини';
$labels['tz:america:merida'] = 'Мерида';
$labels['tz:america:metlakatla'] = 'Метлакатла';
$labels['tz:america:mexico_city'] = 'Мехико';
$labels['tz:america:miquelon'] = 'Микелон';
$labels['tz:america:moncton'] = 'Монктон';
$labels['tz:america:monterrey'] = 'Монтеррей';
$labels['tz:america:montevideo'] = 'Монтевидео';
$labels['tz:america:montserrat'] = 'Монтсеррат';
$labels['tz:america:nassau'] = 'Нассау';
$labels['tz:america:new_york'] = 'Нью-Йорк';
$labels['tz:america:nipigon'] = 'Нипигон';
$labels['tz:america:nome'] = 'Ном';
$labels['tz:america:noronha'] = 'Фернанду-ди-Норонья';
$labels['tz:america:north_dakota'] = 'Северная Дакота';
$labels['tz:america:north_dakota:beulah'] = 'Беула';
$labels['tz:america:north_dakota:center'] = 'Сентр';
$labels['tz:america:north_dakota:new_salem'] = 'Нью Салем';
$labels['tz:america:ojinaga'] = 'Охинага';
$labels['tz:america:panama'] = 'Панама';
$labels['tz:america:pangnirtung'] = 'Пангниртанг';
$labels['tz:america:paramaribo'] = 'Парамарибо';
$labels['tz:america:phoenix'] = 'Феникс';
$labels['tz:america:port-au-prince'] = 'Порт-о-Пренс';
$labels['tz:america:port_of_spain'] = 'Порт-оф-Спейн';
$labels['tz:america:porto_velho'] = 'Порту-Велью';
$labels['tz:america:puerto_rico'] = 'Пуэрто-Рико';
$labels['tz:america:rainy_river'] = 'Рейни-Ривер';
$labels['tz:america:rankin_inlet'] = 'Ранкин-Инлет';
$labels['tz:america:recife'] = 'Ресифи';
$labels['tz:america:regina'] = 'Реджайна';
$labels['tz:america:resolute'] = 'Ризолют';
$labels['tz:america:rio_branco'] = 'Риу-Бранку';
$labels['tz:america:santarem'] = 'Сантарен';
$labels['tz:america:santiago'] = 'Сантьяго';
$labels['tz:america:santo_domingo'] = 'Санто-Доминго';
$labels['tz:america:sao_paulo'] = 'Сан-Паулу';
$labels['tz:america:scoresbysund'] = 'Иллоккортоормиут';
$labels['tz:america:sitka'] = 'Ситка';
$labels['tz:america:st_barthelemy'] = 'Сен-Бартелеми';
$labels['tz:america:st_johns'] = "Сент-Джонс";
$labels['tz:america:st_kitts'] = 'Сент-Китс';
$labels['tz:america:st_lucia'] = 'Сент-Люсия';
$labels['tz:america:st_thomas'] = 'Сент-Томас';
$labels['tz:america:st_vincent'] = 'Сент-Винсент';
$labels['tz:america:swift_current'] = 'Суифт-Карент';
$labels['tz:america:tegucigalpa'] = 'Тегусигальпа';
$labels['tz:america:thule'] = 'Туле';
$labels['tz:america:thunder_bay'] = 'Тандер-Бей';
$labels['tz:america:tijuana'] = 'Тихуана';
$labels['tz:america:toronto'] = 'Торонто';
$labels['tz:america:tortola'] = 'Тортола';
$labels['tz:america:vancouver'] = 'Ванкувер';
$labels['tz:america:whitehorse'] = 'Уайтхорс';
$labels['tz:america:winnipeg'] = 'Виннипег';
$labels['tz:america:yakutat'] = 'Якутат';
$labels['tz:america:yellowknife'] = 'Йеллоунайф';
$labels['tz:antarctica'] = 'Антарктида';
$labels['tz:antarctica:casey'] = 'Кейси';
$labels['tz:antarctica:davis'] = 'Дейвис';
$labels['tz:antarctica:dumontdurville'] = "Дюмон- д' Юрвиль";
$labels['tz:antarctica:macquarie'] = 'Маккуори';
$labels['tz:antarctica:mawson'] = 'Моусон';
$labels['tz:antarctica:mcmurdo'] = 'Мак-Мердо';
$labels['tz:antarctica:palmer'] = 'Палмер';
$labels['tz:antarctica:rothera'] = 'Ротера';
$labels['tz:antarctica:syowa'] = 'Сёва';
$labels['tz:antarctica:troll'] = 'Тролл';
$labels['tz:antarctica:vostok'] = 'Восток';
$labels['tz:arctic'] = 'Арктика';
$labels['tz:arctic:longyearbyen'] = 'Лонгйир';
$labels['tz:asia'] = 'Азия';
$labels['tz:asia:aden'] = 'Аден';
$labels['tz:asia:almaty'] = 'Алма-Ата';
$labels['tz:asia:amman'] = 'Амман';
$labels['tz:asia:anadyr'] = 'Анадырь';
$labels['tz:asia:aqtau'] = 'Актау';
$labels['tz:asia:aqtobe'] = 'Актобе';
$labels['tz:asia:ashgabat'] = 'Ашхабад';
$labels['tz:asia:atyrau'] = 'Атырау';
$labels['tz:asia:baghdad'] = 'Багдад';
$labels['tz:asia:bahrain'] = 'Бахрейн';
$labels['tz:asia:baku'] = 'Баку';
$labels['tz:asia:bangkok'] = 'Бангкок';
$labels['tz:asia:barnaul'] = 'Барнаул';
$labels['tz:asia:beirut'] = 'Бейрут';
$labels['tz:asia:bishkek'] = 'Бишкек';
$labels['tz:asia:brunei'] = 'Бруней';
$labels['tz:asia:chita'] = 'Чита';
$labels['tz:asia:choibalsan'] = 'Чойбалсан';
$labels['tz:asia:colombo'] = 'Коломбо';
$labels['tz:asia:damascus'] = 'Дамаск';
$labels['tz:asia:dhaka'] = 'Дакка';
$labels['tz:asia:dili'] = 'Дили';
$labels['tz:asia:dubai'] = 'Дубай';
$labels['tz:asia:dushanbe'] = 'Душанбе';
$labels['tz:asia:famagusta'] = 'Фамагуста';
$labels['tz:asia:gaza'] = 'Газа';
$labels['tz:asia:hebron'] = 'Хеврон';
$labels['tz:asia:ho_chi_minh'] = 'Хошимин';
$labels['tz:asia:hong_kong'] = 'Гонконг';
$labels['tz:asia:hovd'] = 'Ховд';
$labels['tz:asia:irkutsk'] = 'Иркутск';
$labels['tz:asia:jakarta'] = 'Джакарта';
$labels['tz:asia:jayapura'] = 'Джакарта';
$labels['tz:asia:jerusalem'] = 'Иерусалим';
$labels['tz:asia:kabul'] = 'Кабул';
$labels['tz:asia:kamchatka'] = 'Камчатка';
$labels['tz:asia:karachi'] = 'Карачи';
$labels['tz:asia:kathmandu'] = 'Катманду';
$labels['tz:asia:khandyga'] = 'Хандыга';
$labels['tz:asia:kolkata'] = 'Калькутта';
$labels['tz:asia:krasnoyarsk'] = 'Красноярск';
$labels['tz:asia:kuala_lumpur'] = 'Куала-Лумпур';
$labels['tz:asia:kuching'] = 'Кучинг';
$labels['tz:asia:kuwait'] = 'Кувейт';
$labels['tz:asia:macau'] = 'Макао';
$labels['tz:asia:magadan'] = 'Магадан';
$labels['tz:asia:makassar'] = 'Макассар';
$labels['tz:asia:manila'] = 'Манила';
$labels['tz:asia:muscat'] = 'Маскат';
$labels['tz:asia:nicosia'] = 'Никосия';
$labels['tz:asia:novokuznetsk'] = 'Новокузнецк';
$labels['tz:asia:novosibirsk'] = 'Новосибирск';
$labels['tz:asia:omsk'] = 'Омск';
$labels['tz:asia:oral'] = 'Екатеринбургское время';
$labels['tz:asia:phnom_penh'] = 'Пномпень';
$labels['tz:asia:pontianak'] = 'Понтианак';
$labels['tz:asia:pyongyang'] = 'Пхеньян';
$labels['tz:asia:qatar'] = 'Катар';
$labels['tz:asia:qyzylorda'] = 'Кызылорда';
$labels['tz:asia:riyadh'] = 'Эр-Рияд';
$labels['tz:asia:sakhalin'] = 'Сахалин';
$labels['tz:asia:samarkand'] = 'Самарканд';
$labels['tz:asia:seoul'] = 'Сеул';
$labels['tz:asia:shanghai'] = 'Шанхай';
$labels['tz:asia:singapore'] = 'Сингапур';
$labels['tz:asia:srednekolymsk'] = 'Среднеколымск';
$labels['tz:asia:taipei'] = 'Тайбэй';
$labels['tz:asia:tashkent'] = 'Ташкент';
$labels['tz:asia:tbilisi'] = 'Тбилиси';
$labels['tz:asia:tehran'] = 'Тегеран';
$labels['tz:asia:thimphu'] = 'Тхимпху';
$labels['tz:asia:tokyo'] = 'Токио';
$labels['tz:asia:tomsk'] = 'Томск';
$labels['tz:asia:ulaanbaatar'] = 'Улан-Батор';
$labels['tz:asia:urumqi'] = 'Урумчи';
$labels['tz:asia:ust-nera'] = 'Усть-Нера';
$labels['tz:asia:vientiane'] = 'Вьентьян';
$labels['tz:asia:vladivostok'] = 'Владивосток';
$labels['tz:asia:yakutsk'] = 'Якутск';
$labels['tz:asia:yangon'] = 'Янгон';
$labels['tz:asia:yekaterinburg'] = 'Екатеринбург';
$labels['tz:asia:yerevan'] = 'Ереван';
$labels['tz:atlantic'] = 'Атлантическое время';
$labels['tz:atlantic:azores'] = 'Азорские острова';
$labels['tz:atlantic:bermuda'] = 'Бермудские острова';
$labels['tz:atlantic:canary'] = 'Канарские острова';
$labels['tz:atlantic:cape_verde'] = 'Кабо-Верде';
$labels['tz:atlantic:faroe'] = 'Фареры';
$labels['tz:atlantic:madeira'] = 'Мадейра';
$labels['tz:atlantic:reykjavik'] = 'Рейкьявик';
$labels['tz:atlantic:south_georgia'] = 'Южная Георгия';
$labels['tz:atlantic:st_helena'] = 'Остров Святой Елены';
$labels['tz:atlantic:stanley'] = 'Стэнли';
$labels['tz:australia'] = 'Австралия';
$labels['tz:australia:adelaide'] = 'Аделаида';
$labels['tz:australia:brisbane'] = 'Брисбен';
$labels['tz:australia:broken_hill'] = 'Брокен-Хилл';
$labels['tz:australia:currie'] = 'Карри';
$labels['tz:australia:darwin'] = 'Дарвин';
$labels['tz:australia:eucla'] = 'Эукла';
$labels['tz:australia:hobart'] = 'Хобарт';
$labels['tz:australia:lindeman'] = 'Линдеман';
$labels['tz:australia:lord_howe'] = 'Лорд-Хау';
$labels['tz:australia:melbourne'] = 'Мельбурн';
$labels['tz:australia:perth'] = 'Перт';
$labels['tz:australia:sydney'] = 'Сидней';
$labels['tz:europe'] = 'Европа';
$labels['tz:europe:amsterdam'] = 'Амстердам';
$labels['tz:europe:andorra'] = 'Андорра';
$labels['tz:europe:astrakhan'] = 'Астрахань';
$labels['tz:europe:athens'] = 'Афины';
$labels['tz:europe:belgrade'] = 'Белград';
$labels['tz:europe:berlin'] = 'Берлин';
$labels['tz:europe:bratislava'] = 'Братислава';
$labels['tz:europe:brussels'] = 'Брюссель';
$labels['tz:europe:bucharest'] = 'Бухарест';
$labels['tz:europe:budapest'] = 'Будапешт';
$labels['tz:europe:busingen'] = 'Бюзинген';
$labels['tz:europe:chisinau'] = 'Кишинёв';
$labels['tz:europe:copenhagen'] = 'Копенгаген';
$labels['tz:europe:dublin'] = 'Дублин';
$labels['tz:europe:gibraltar'] = 'Гибралтар';
$labels['tz:europe:guernsey'] = 'Гернси';
$labels['tz:europe:helsinki'] = 'Хельсинки';
$labels['tz:europe:isle_of_man'] = 'Остров Мэн';
$labels['tz:europe:istanbul'] = 'Стамбул';
$labels['tz:europe:jersey'] = 'Джерси';
$labels['tz:europe:kaliningrad'] = 'Калининград';
$labels['tz:europe:kiev'] = 'Киев';
$labels['tz:europe:kirov'] = 'Киров';
$labels['tz:europe:lisbon'] = 'Лиссабон';
$labels['tz:europe:ljubljana'] = 'Любляна';
$labels['tz:europe:london'] = 'Лондон';
$labels['tz:europe:luxembourg'] = 'Люксембург';
$labels['tz:europe:madrid'] = 'Мадрид';
$labels['tz:europe:malta'] = 'Мальта';
$labels['tz:europe:mariehamn'] = 'Мариехамн';
$labels['tz:europe:minsk'] = 'Минск';
$labels['tz:europe:monaco'] = 'Монако';
$labels['tz:europe:moscow'] = 'Москва';
$labels['tz:europe:oslo'] = 'Осло';
$labels['tz:europe:paris'] = 'Париж';
$labels['tz:europe:podgorica'] = 'Подгорица';
$labels['tz:europe:prague'] = 'Прага';
$labels['tz:europe:riga'] = 'Рига';
$labels['tz:europe:rome'] = 'Рим';
$labels['tz:europe:samara'] = 'Самара';
$labels['tz:europe:san_marino'] = 'Сан-Марино';
$labels['tz:europe:sarajevo'] = 'Сараево';
$labels['tz:europe:saratov'] = 'Саратов';
$labels['tz:europe:simferopol'] = 'Симферополь';
$labels['tz:europe:skopje'] = 'Скопье';
$labels['tz:europe:sofia'] = 'София';
$labels['tz:europe:stockholm'] = 'Стокгольм';
$labels['tz:europe:tallinn'] = 'Таллин';
$labels['tz:europe:tirane'] = 'Тирана';
$labels['tz:europe:ulyanovsk'] = 'Ульяновск';
$labels['tz:europe:uzhgorod'] = 'Ужгород';
$labels['tz:europe:vaduz'] = 'Вадуц';
$labels['tz:europe:vatican'] = 'Ватикан';
$labels['tz:europe:vienna'] = 'Вена';
$labels['tz:europe:vilnius'] = 'Вильнюс';
$labels['tz:europe:volgograd'] = 'Волгоград';
$labels['tz:europe:warsaw'] = 'Варшава';
$labels['tz:europe:zagreb'] = 'Загреб';
$labels['tz:europe:zaporozhye'] = 'Запорожье';
$labels['tz:europe:zurich'] = 'Цюрих';
$labels['tz:indian'] = 'Восточноафриканское время';
$labels['tz:indian:antananarivo'] = 'Антананариву';
$labels['tz:indian:chagos'] = 'Чагос';
$labels['tz:indian:christmas'] = 'Остров Рождества';
$labels['tz:indian:cocos'] = 'Остров Кокос';
$labels['tz:indian:comoro'] = 'Коморы';
$labels['tz:indian:kerguelen'] = 'Кергелен';
$labels['tz:indian:mahe'] = 'Маэ';
$labels['tz:indian:maldives'] = 'Мальдивские острова';
$labels['tz:indian:mauritius'] = 'Маврикий';
$labels['tz:indian:mayotte'] = 'Майотта';
$labels['tz:indian:reunion'] = 'Реюньон';
$labels['tz:pacific'] = 'Североамериканское тихоокеанское время';
$labels['tz:pacific:apia'] = 'Апиа';
$labels['tz:pacific:auckland'] = 'Окленд';
$labels['tz:pacific:bougainville'] = 'Бугенвиль';
$labels['tz:pacific:chatham'] = 'Чатем';
$labels['tz:pacific:chuuk'] = 'Чуук';
$labels['tz:pacific:easter'] = 'Остров Пасхи';
$labels['tz:pacific:efate'] = 'Эфате';
$labels['tz:pacific:enderbury'] = 'Эндербери';
$labels['tz:pacific:fakaofo'] = 'Факаофо';
$labels['tz:pacific:fiji'] = 'Фиджи';
$labels['tz:pacific:funafuti'] = 'Фунафути';
$labels['tz:pacific:galapagos'] = 'Галапагос';
$labels['tz:pacific:gambier'] = 'Гамбье';
$labels['tz:pacific:guadalcanal'] = 'Гуадалканал';
$labels['tz:pacific:guam'] = 'Гуам';
$labels['tz:pacific:honolulu'] = 'Гонолулу';
$labels['tz:pacific:johnston'] = 'Джонстон';
$labels['tz:pacific:kiritimati'] = 'Киритимати';
$labels['tz:pacific:kosrae'] = 'Кусаие';
$labels['tz:pacific:kwajalein'] = 'Кваджалейн';
$labels['tz:pacific:majuro'] = 'Маджуро';
$labels['tz:pacific:marquesas'] = 'Маркизские острова';
$labels['tz:pacific:midway'] = 'Мидуэй';
$labels['tz:pacific:nauru'] = 'Науру';
$labels['tz:pacific:niue'] = 'Ниуэ';
$labels['tz:pacific:norfolk'] = 'Норфолк';
$labels['tz:pacific:noumea'] = 'Нумеа';
$labels['tz:pacific:pago_pago'] = 'Паго-Паго';
$labels['tz:pacific:palau'] = 'Палау';
$labels['tz:pacific:pitcairn'] = 'Питкэрн';
$labels['tz:pacific:pohnpei'] = 'Понпеи';
$labels['tz:pacific:port_moresby'] = 'Порт-Морсби';
$labels['tz:pacific:rarotonga'] = 'Раротонга';
$labels['tz:pacific:saipan'] = 'Сайпан';
$labels['tz:pacific:tahiti'] = 'Таити';
$labels['tz:pacific:tarawa'] = 'Тарава';
$labels['tz:pacific:tongatapu'] = 'Тонгатапу';
$labels['tz:pacific:wake'] = 'Уэйк';
$labels['tz:pacific:wallis'] = 'Уоллис и Футуна';
localization/ru_RU/csv2vcard.inc000064400000004530151727150540012671 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/ru_RU/csv2vcard.inc                                      |
 |                                                                       |
 | Language file of the Roundcube Webmail client                         |
 | Copyright (C) 2005-2014, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map['birth_day'] = "День рождения";
$map['birth_month'] = "Месяц рождения";
$map['birth_year'] = "Год рождения";
$map['display_name'] = "Отображаемое имя";
$map['fax_number'] = "Номер факса";
$map['home_address'] = "Адрес";
$map['home_city_short'] = "Город";
$map['home_state_short'] = "Штат";
$map['home_country'] = "Страна";
$map['home_zipcode'] = "Почтовый индекс";
$map['mobile_number'] = "Номер сотового телефона";
$map['nickname'] = "Псевдоним";
$map['organization'] = "Организация";
$map['pager_number'] = "Номер пейджера";
$map['primary_email'] = "Адрес электронной почты";
$map['secondary_email'] = "Альтернативный адрес электронной почты";
$map['web_page_1'] = "Веб-страница 1";
$map['web_page_2'] = "Веб-страница 2";
$map['web_page'] = "Веб-страница";
$map['notes'] = "Заметки";
$map['work_phone'] = "Рабочий телефон";
$map['work_address'] = "Адрес (раб.)";
$map['work_country'] = "Страна (раб.)";
$map['work_zipcode'] = "Почтовый индекс (раб.)";
$map['last'] = "Фамилия";
$map['first'] = "Имя";
$map['work_city'] = "Город (раб.)";
$map['work_state_short'] = "Штат (раб.)";
localization/ru_RU/labels.inc000064400000130775151727150540012251 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Добро пожаловать в $product!';
$labels['username'] = 'Имя пользователя';
$labels['password'] = 'Пароль';
$labels['server'] = 'Сервер';
$labels['login'] = 'Войти';
$labels['oauthlogin'] = 'Войти используя $provider';
$labels['menu'] = 'Меню';
$labels['logout'] = 'Выход';
$labels['mail'] = 'Почта';
$labels['settings'] = 'Настройки';
$labels['addressbook'] = 'Контакты';
$labels['darkmode'] = 'Темный режим';
$labels['lightmode'] = 'Светлый режим';
$labels['inbox'] = 'Входящие';
$labels['drafts'] = 'Черновики';
$labels['sent'] = 'Отправленные';
$labels['trash'] = 'Корзина';
$labels['junk'] = 'СПАМ';
$labels['show_real_foldernames'] = 'Показывать настоящие названия специальных папок';
$labels['subject'] = 'Тема';
$labels['from'] = 'От';
$labels['sender'] = 'Отправитель';
$labels['to'] = 'Кому';
$labels['cc'] = 'Копия';
$labels['bcc'] = 'Скрытая';
$labels['replyto'] = 'Ответить';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Дата';
$labels['size'] = 'Размер';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организация';
$labels['readstatus'] = 'Статус прочтения';
$labels['listoptions'] = 'Настройки списка...';
$labels['listoptionstitle'] = 'Настройки списка';
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'Сообщения с $from по $to из $count';
$labels['threadsfromto'] = 'Обсуждения с $from по $to из $count';
$labels['messagenrof'] = 'Сообщение $nr из $count';
$labels['fromtoshort'] = '$from – $to из $count';
$labels['copy'] = 'Копировать';
$labels['move'] = 'Переместить';
$labels['moveto'] = 'Переместить в...';
$labels['copyto'] = 'Копировать в...';
$labels['download'] = 'Загрузить';
$labels['open'] = 'Открыть';
$labels['showattachment'] = 'Показать';
$labels['showanyway'] = 'Все равно показать';
$labels['filename'] = 'Имя файла';
$labels['filesize'] = 'Размер файла';
$labels['addtoaddressbook'] = 'Добавить в контакты';
$labels['sun'] = 'Вс';
$labels['mon'] = 'Пн';
$labels['tue'] = 'Вт';
$labels['wed'] = 'Ср';
$labels['thu'] = 'Чт';
$labels['fri'] = 'Пт';
$labels['sat'] = 'Сб';
$labels['sunday'] = 'Воскресенье';
$labels['monday'] = 'Понедельник';
$labels['tuesday'] = 'Вторник';
$labels['wednesday'] = 'Среда';
$labels['thursday'] = 'Четверг';
$labels['friday'] = 'Пятница';
$labels['saturday'] = 'Суббота';
$labels['jan'] = 'Янв';
$labels['feb'] = 'Фев';
$labels['mar'] = 'Мар';
$labels['apr'] = 'Апр';
$labels['may'] = 'Май';
$labels['jun'] = 'Июн';
$labels['jul'] = 'Июл';
$labels['aug'] = 'Авг';
$labels['sep'] = 'Сен';
$labels['oct'] = 'Окт';
$labels['nov'] = 'Ноя';
$labels['dec'] = 'Дек';
$labels['longjan'] = 'Январь';
$labels['longfeb'] = 'Февраль';
$labels['longmar'] = 'Март';
$labels['longapr'] = 'Апрель';
$labels['longmay'] = 'Май';
$labels['longjun'] = 'Июнь';
$labels['longjul'] = 'Июль';
$labels['longaug'] = 'Август';
$labels['longsep'] = 'Сентябрь';
$labels['longoct'] = 'Октябрь';
$labels['longnov'] = 'Ноябрь';
$labels['longdec'] = 'Декабрь';
$labels['today'] = 'Сегодня';
$labels['refresh'] = 'Обновить';
$labels['checkmail'] = 'Доставить почту';
$labels['compose'] = 'Написать сообщение';
$labels['writenewmessage'] = 'Новое сообщение';
$labels['reply'] = 'Ответить';
$labels['replytomessage'] = 'Ответить';
$labels['replytoallmessage'] = 'Ответить по списку или отправителю и всем получателям';
$labels['replyall'] = 'Ответить всем';
$labels['replylist'] = 'Ответить в список рассылки';
$labels['forward'] = 'Переслать';
$labels['forwardinline'] = 'Переслать в теле письма';
$labels['forwardattachment'] = 'Переслать как вложение';
$labels['forwardmessage'] = 'Переслать';
$labels['bouncemsg'] = 'Повторить отправку (недоставлено)';
$labels['bounce'] = 'Отправить повторно';
$labels['deletemessage'] = 'В корзину';
$labels['movemessagetotrash'] = 'Переместить сообщение в корзину';
$labels['printmessage'] = 'Печать';
$labels['previousmessage'] = 'Показать предыдущее сообщение';
$labels['firstmessage'] = 'Показать первое сообщение';
$labels['nextmessage'] = 'Показать следующее сообщение';
$labels['lastmessage'] = 'Показать последнее сообщение';
$labels['backtolist'] = 'К списку сообщений';
$labels['viewsource'] = 'Исходный текст';
$labels['mark'] = 'Пометить';
$labels['markmessages'] = 'Пометить сообщения';
$labels['markread'] = 'Как прочитанное';
$labels['markunread'] = 'Как непрочитанное';
$labels['markflagged'] = 'Установить флаг';
$labels['markunflagged'] = 'Снять флаг';
$labels['markundeleted'] = 'Как не удаленное';
$labels['moreactions'] = 'Дополнительные действия...';
$labels['markallread'] = 'Отметить все как прочтённые';
$labels['folders-cur'] = 'Только выбранная папка';
$labels['folders-sub'] = 'Выбранная папка и её подпапки';
$labels['folders-all'] = 'Все папки';
$labels['more'] = 'Еще';
$labels['back'] = 'Назад';
$labels['options'] = 'Параметры';
$labels['composeoptions'] = 'Параметры создания';
$labels['optionsandattachments'] = 'Параметры и вложения';
$labels['actions'] = 'Действия';
$labels['first'] = 'Первое';
$labels['last'] = 'Последнее';
$labels['previous'] = 'Предыдущее';
$labels['next'] = 'Следующее';
$labels['select'] = 'Выбрать';
$labels['selection'] = 'Выбор';
$labels['all'] = 'Все';
$labels['none'] = 'Отсутствует';
$labels['currpage'] = 'Текущая страница';
$labels['isread'] = 'Прочтенные';
$labels['unread'] = 'Непрочитанные';
$labels['flagged'] = 'Помеченные';
$labels['unflagged'] = 'Не помеченные';
$labels['unanswered'] = 'Неотвеченные';
$labels['withattachment'] = 'С вложением';
$labels['deleted'] = 'Удаленные';
$labels['undeleted'] = 'Не удаленные';
$labels['replied'] = 'Отвечено';
$labels['forwarded'] = 'Пересланные';
$labels['invert'] = 'Инвертировать';
$labels['filter'] = 'Фильтр';
$labels['list'] = 'Список';
$labels['threads'] = 'Обсуждения';
$labels['expand-all'] = 'Развернуть все';
$labels['expand-unread'] = 'Развернуть непрочитанные';
$labels['collapse-all'] = 'Свернуть все';
$labels['threaded'] = 'Обсуждения';
$labels['showunread'] = 'Показать непрочитанные сообщения';
$labels['autoexpand_threads'] = 'Развернуть обсуждения';
$labels['do_expand'] = 'все обсуждения';
$labels['expand_only_unread'] = 'только с непрочитанными сообщениями';
$labels['fromto'] = 'Отправитель/Получатель';
$labels['flag'] = 'Флаг';
$labels['attachment'] = 'Вложение';
$labels['nonesort'] = 'Отсутствует';
$labels['sentdate'] = 'Дата отправки';
$labels['arrival'] = 'Дата получения';
$labels['asc'] = 'по возрастанию';
$labels['desc'] = 'по убыванию';
$labels['listcolumns'] = 'Колонки';
$labels['listsorting'] = 'Сортировать по';
$labels['listorder'] = 'Порядок сортировки';
$labels['listmode'] = 'Режим просмотра';
$labels['lmode'] = 'В виде списка';
$labels['layout'] = 'Размещение';
$labels['layoutwidescreen'] = 'Широкоэкранное';
$labels['layoutdesktop'] = 'Рабочий стол';
$labels['layoutlist'] = 'Список';
$labels['layoutwidescreendesc'] = 'Широкоэкранный (три колонки)';
$labels['layoutdesktopdesc'] = 'Настольный (список сообщений и окно предпросмотра под ним)';
$labels['layoutlistdesc'] = 'Список (без предпросмотра писем)';
$labels['folderactions'] = 'Операции над папкой...';
$labels['compact'] = 'Сжать';
$labels['empty'] = 'Опустошить';
$labels['importmessages'] = 'Импорт сообщений';
$labels['mailimportdesc'] = 'Вы можете загрузить почту используя файлы в формате <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> или <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Несколько файлов могут быть сжаты в zip-архивы.';
$labels['quota'] = 'Квота';
$labels['unknown'] = 'неизвестно';
$labels['unlimited'] = 'без ограничений';
$labels['quotatype'] = 'Тип квоты';
$labels['quotatotal'] = 'Лимит';
$labels['quotaused'] = 'Использовано';
$labels['quotastorage'] = 'Дисковое пространство';
$labels['quotamessage'] = 'Количество сообщений';
$labels['shortheaderdate'] = 'За $date';
$labels['shortheaderto'] = '$to за $date';
$labels['shortheaderfrom'] = 'От $from за $date';
$labels['quicksearch'] = 'Быстрый поиск';
$labels['searchplaceholder'] = 'Поиск...';
$labels['resetsearch'] = 'Сброс';
$labels['searchmod'] = 'Варианты поиска';
$labels['msgtext'] = 'Всё сообщение';
$labels['body'] = 'Тело письма';
$labels['type'] = 'Тип';
$labels['namex'] = 'Имя';
$labels['searchscope'] = 'Область';
$labels['currentfolder'] = 'Текущая папка';
$labels['subfolders'] = 'Эта и вложенные папки';
$labels['allfolders'] = 'Все папки';
$labels['searchinterval-1W'] = 'больше недели';
$labels['searchinterval-1M'] = 'больше месяца';
$labels['searchinterval-1Y'] = 'больше года';
$labels['searchinterval1W'] = 'меньше недели';
$labels['searchinterval1M'] = 'меньше месяца';
$labels['searchinterval1Y'] = 'меньше года';
$labels['openinextwin'] = 'Открыть в новом окне';
$labels['emlsave'] = 'Сохранить (.eml)';
$labels['changeformattext'] = 'Показать в формате обычного текста';
$labels['changeformathtml'] = 'Показать в HTML формате';
$labels['editasnew'] = 'Редактировать как новое';
$labels['send'] = 'Отправить';
$labels['sendmessage'] = 'Отправить сейчас';
$labels['savemessage'] = 'Сохранить черновик';
$labels['addattachment'] = 'Добавить вложение';
$labels['charset'] = 'Кодировка';
$labels['editortype'] = 'Редактор';
$labels['returnreceipt'] = 'Запрос ответа';
$labels['dsn'] = 'Уведомление о состоянии доставки';
$labels['keepformatting'] = 'Сохранить форматирование';
$labels['mailreplyintro'] = '$sender писал(а) $date:';
$labels['originalmessage'] = 'Исходное сообщение';
$labels['selectimage'] = 'Выбрать изображение';
$labels['addimage'] = 'Добавить изображение';
$labels['selectmedia'] = 'Выбрать видео';
$labels['addmedia'] = 'Добавить видео';
$labels['encrypt'] = 'Зашифровать';
$labels['encryptmessage'] = 'Зашифровать сообщение';
$labels['encryptmessagemailvelope'] = 'Зашифровать сообщение с  помощью Mailvelope';
$labels['importpubkeys'] = 'Импортировать открытые ключи';
$labels['encryptedsendialog'] = 'Отправка зашифрованного сообщения';
$labels['encryptandsign'] = 'Зашифровать и подписать';
$labels['keyid'] = 'ID ключа';
$labels['keylength'] = 'Бит';
$labels['keyexpired'] = 'С истёкщим сроком';
$labels['keyrevoked'] = 'Отозван';
$labels['bccinstead'] = 'Использовать BCC';
$labels['addheader'] = 'Добавить получателя (заголовок)';
$labels['insert'] = 'Вставить';
$labels['insertcontact'] = 'Вставить контакт(ы)';
$labels['recipient'] = 'Получатель';
$labels['recipientedit'] = 'Изменить получателя';
$labels['editidents'] = 'Изменить данные';
$labels['spellcheck'] = 'Орфография';
$labels['checkspelling'] = 'Проверить орфографию';
$labels['resumeediting'] = 'Продолжить редактирование';
$labels['revertto'] = 'Отменить правки';
$labels['restore'] = 'Восстановить';
$labels['restoremessage'] = 'Восстановить сообщение?';
$labels['ignore'] = 'Пропустить';
$labels['responses'] = 'Ответы';
$labels['insertresponse'] = 'Вставить ответ';
$labels['manageresponses'] = 'Управление ответами';
$labels['newresponse'] = 'Создать новый ответ';
$labels['addresponse'] = 'Добавить ответ';
$labels['editresponse'] = 'Редактировать ответ';
$labels['editresponses'] = 'Редактировать ответы';
$labels['responsename'] = 'Название';
$labels['responsetext'] = 'Текста ответа';
$labels['attach'] = 'Вложить';
$labels['attachments'] = 'Вложения';
$labels['upload'] = 'Загрузить';
$labels['uploadprogress'] = '$percent ($current из $total)';
$labels['close'] = 'Закрыть';
$labels['messageoptions'] = 'Настройки сообщений...';
$labels['togglecomposeoptions'] = 'Параметры создания';
$labels['attachmentrename'] = 'Переименовать вложения';
$labels['low'] = 'Низкий';
$labels['lowest'] = 'Низший';
$labels['normal'] = 'Норм.';
$labels['high'] = 'Высокий';
$labels['highest'] = 'Высоч.';
$labels['nosubject'] = '(без темы)';
$labels['showimages'] = 'Показать изображения';
$labels['allow'] = 'Разрешить';
$labels['alwaysshow'] = 'Всегда показывать изображенияв письмах от $sender';
$labels['alwaysallow'] = 'Всегда разрешать от $sender';
$labels['isdraft'] = 'Это черновик.';
$labels['andnmore'] = 'ещё $nr...';
$labels['details'] = 'Подробности';
$labels['summary'] = 'Итог';
$labels['headers'] = 'Заголовки';
$labels['allheaders'] = 'Все заголовки...';
$labels['togglemoreheaders'] = 'Загрузить ещё заголовки сообщений';
$labels['togglefullheaders'] = 'Показать оригинальные заголовки сообщения';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Текст';
$labels['savesentmessagein'] = 'Сохранить в';
$labels['dontsave'] = 'не сохранять';
$labels['maxuploadsize'] = 'Максимальный размер файла $size';
$labels['addcc'] = 'Копия';
$labels['addbcc'] = 'Скрытая копия';
$labels['addreplyto'] = 'Кому ответить';
$labels['addfollowupto'] = 'Добавить Followup-To';
$labels['sendreceipt'] = 'Отправить уведомление о прочтении?';
$labels['mdnrequest'] = 'Отправитель этого сообщения запросил уведомление о прочтении. Отправить уведомление?';
$labels['receiptread'] = 'Уведомление о прочтении';
$labels['yourmessage'] = 'Это уведомление о прочтении вашего сообщения';
$labels['receiptnote'] = 'Это уведомление означает только, что сообщение было открыто получателем, и не гарантирует того, что оно было прочитано и (или) понято.';
$labels['sendalwaysto'] = 'Всегда отправлять на $email';
$labels['zoomin'] = 'Увеличить';
$labels['zoomout'] = 'Уменьшить';
$labels['rotate'] = 'Вращать';
$labels['increaseimage'] = 'Увеличить изображение';
$labels['decreaseimage'] = 'Уменьшить изображение';
$labels['rotateimage'] = 'Повернуть изображение';
$labels['showtools'] = 'Показать инструменты';
$labels['hidetools'] = 'Скрыть инструменты';
$labels['name'] = 'Отображаемое имя';
$labels['firstname'] = 'Имя';
$labels['surname'] = 'Фамилия';
$labels['middlename'] = 'Отчество';
$labels['nameprefix'] = 'Префикс';
$labels['namesuffix'] = 'Суффикс';
$labels['nickname'] = 'Прозвище';
$labels['jobtitle'] = 'Должность';
$labels['department'] = 'Отдел';
$labels['gender'] = 'Пол';
$labels['maidenname'] = 'Девичья фамилия';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Телефон';
$labels['address'] = 'Адрес';
$labels['street'] = 'Улица';
$labels['locality'] = 'Город';
$labels['zipcode'] = 'Индекс';
$labels['region'] = 'Область';
$labels['country'] = 'Страна';
$labels['birthday'] = 'День рождения';
$labels['anniversary'] = 'Годовщина';
$labels['website'] = 'Веб-сайт';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Заметки';
$labels['male'] = 'мужской';
$labels['female'] = 'женский';
$labels['manager'] = 'Менеджер';
$labels['assistant'] = 'Помощник';
$labels['spouse'] = 'Супруг';
$labels['allfields'] = 'Все поля';
$labels['search'] = 'Поиск';
$labels['searchresult'] = 'Результаты поиска';
$labels['advsearch'] = 'Расширенный поиск';
$labels['advanced'] = 'Дополнительно';
$labels['other'] = 'Другое';
$labels['printcontact'] = 'Печатать контакт';
$labels['qrcode'] = 'QR код';
$labels['typehome'] = 'Дом';
$labels['typework'] = 'Работа';
$labels['typeother'] = 'Другое';
$labels['typemobile'] = 'Мобильный';
$labels['typemain'] = 'Основной';
$labels['typehomefax'] = 'Домашний факс';
$labels['typeworkfax'] = 'Рабочий факс';
$labels['typecar'] = 'Автомобиль';
$labels['typepager'] = 'Пэйджер';
$labels['typevideo'] = 'Видео';
$labels['typeassistant'] = 'Помощник';
$labels['typehomepage'] = 'Домашняя страница';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профиль';
$labels['addfield'] = 'Добавить поле...';
$labels['addcontact'] = 'Добавить контакт';
$labels['editcontact'] = 'Редактировать контакт';
$labels['contacts'] = 'Контакты';
$labels['contactproperties'] = 'Свойства контакта';
$labels['contactnameandorg'] = 'Имя и организация';
$labels['personalinfo'] = 'Личная информация';
$labels['personal'] = 'Персональные';
$labels['contactphoto'] = 'Фото контакта';
$labels['edit'] = 'Правка';
$labels['cancel'] = 'Отмена';
$labels['save'] = 'Сохранить';
$labels['delete'] = 'Удалить';
$labels['discard'] = 'Удалить';
$labels['continue'] = 'Продолжить';
$labels['ok'] = 'ОК';
$labels['rename'] = 'Переименовать';
$labels['addphoto'] = 'Добавить';
$labels['replacephoto'] = 'Заменить';
$labels['uploadphoto'] = 'Загрузить фотографию';
$labels['choosefile'] = 'Выберите файл...';
$labels['choosefiles'] = 'Выберите файлы...';
$labels['browse'] = 'Обзор';
$labels['newcontact'] = 'Создать новый контакт';
$labels['deletecontact'] = 'Удалить выбранные контакты';
$labels['composeto'] = 'Создать сообщение для выбранных контактов';
$labels['contactsfromto'] = 'Контакты с $from по $to из $count';
$labels['print'] = 'Печать';
$labels['export'] = 'Экспорт';
$labels['exportall'] = 'Экспортировать все';
$labels['exportsel'] = 'Экспортировать выделенные';
$labels['exportvcards'] = 'Экспортировать контакты в формате vCard';
$labels['newgroup'] = 'Создать новую группу';
$labels['addgroup'] = 'Добавить группу';
$labels['grouprename'] = 'Переименовать группу';
$labels['groupdelete'] = 'Удалить группу';
$labels['groupassign'] = 'Добавить в группу...';
$labels['groupremove'] = 'Удалить из группы';
$labels['groupremoveselected'] = 'Удалить выбранные контакты из группы';
$labels['uponelevel'] = 'Вверх на уровень';
$labels['previouspage'] = 'Показать предыдущую страницу';
$labels['firstpage'] = 'Показать первую страницу';
$labels['nextpage'] = 'Показать следующую страницу';
$labels['lastpage'] = 'Показать последнюю страницу';
$labels['group'] = 'Группа';
$labels['groups'] = 'Группы';
$labels['listgroup'] = 'Список членов группы';
$labels['personaladrbook'] = 'Персональные адреса';
$labels['searchsave'] = 'Сохранить запрос';
$labels['searchdelete'] = 'Удалить запрос';
$labels['import'] = 'Импортировать';
$labels['importcontacts'] = 'Импортировать контакты';
$labels['importfromfile'] = 'Импортировать из файла';
$labels['importtarget'] = 'Добавить контакты в';
$labels['importreplace'] = 'Заменить всю адресную книгу';
$labels['importgroups'] = 'Распределение по группам при импорте.';
$labels['importgroupsall'] = 'Все (создать группы при необходимости)';
$labels['importgroupsexisting'] = 'Только для существующих групп';
$labels['importdesc'] = 'Вы можете загрузить контакты из существующей адресной книги. <br/>В настоящее время мы поддерживаем импорт адресов в формате визитной карточки <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> или CSV (данные разделённые запятой).';
$labels['importmapdesc'] = 'Перед тем, как продолжить импорт данных CSV (разделенных запятыми), убедитесь, что приведенная ниже информация о сопоставлении полей верна.';
$labels['fieldnotmapped'] = 'Поле не сопоставлено (не импортировать)';
$labels['skipheader'] = 'Не импортировать первую строку (заголовки)';
$labels['done'] = 'Завершено';
$labels['settingsfor'] = 'Настройки для';
$labels['about'] = 'О программе';
$labels['preferences'] = 'Настройки';
$labels['userpreferences'] = 'Настройки пользователя';
$labels['editpreferences'] = 'Редактировать настройки пользователя';
$labels['identities'] = 'Профили';
$labels['manageidentities'] = 'Управление профилями';
$labels['newidentity'] = 'Создать новый профиль';
$labels['addidentity'] = 'Добавить профиль';
$labels['editidentity'] = 'Изменить профиль';
$labels['identityencryption'] = 'Шифрование';
$labels['preferhtml'] = 'Предпочитать HTML';
$labels['defaultcharset'] = 'Набор символов по-умолчанию';
$labels['htmlmessage'] = 'Сообщение HTML';
$labels['messagepart'] = 'Часть';
$labels['digitalsig'] = 'Цифровая подпись';
$labels['dateformat'] = 'Формат даты';
$labels['timeformat'] = 'Формат времени';
$labels['prettydate'] = 'Красивые даты';
$labels['setdefault'] = 'Использовать по умолчанию';
$labels['autodetect'] = 'Определять автоматически';
$labels['language'] = 'Язык';
$labels['timezone'] = 'Часовой пояс';
$labels['pagesize'] = 'Строк на странице';
$labels['signature'] = 'Подпись';
$labels['dstactive'] = 'Летнее время';
$labels['showinextwin'] = 'Открыть сообщение в новом окне';
$labels['composeextwin'] = 'Создать в новом окне';
$labels['htmleditor'] = 'Создавать сообщения в HTML';
$labels['htmlonreply'] = 'только в ответ на сообщение в HTML';
$labels['htmlonreplyandforward'] = 'при пересылке или ответе на HTML сообщение';
$labels['htmlsignature'] = 'Подпись в HTML';
$labels['showemail'] = 'Показывать адрес электронной почты и имя адресата';
$labels['previewpane'] = 'Показать панель превью';
$labels['skin'] = 'Стиль оформления';
$labels['logoutclear'] = 'Очищать корзину при выходе';
$labels['logoutcompact'] = 'Сжать Входящие при выходе';
$labels['uisettings'] = 'Пользовательский интерфейс';
$labels['serversettings'] = 'Настройки сервера';
$labels['mailboxview'] = 'Вид почтового ящика';
$labels['mdnrequests'] = 'Уведомления о прочтении';
$labels['askuser'] = 'спросить перед отправкой';
$labels['autosend'] = 'отправлять автоматически';
$labels['autosendknown'] = 'отправлять уведомления контактам из адресной книги, в противном случае спросить';
$labels['autosendknownignore'] = 'отправлять уведомления только контактам из адресной книги, остальных игнорировать';
$labels['autosendtrusted'] = 'отправить квитанцию доверенным отправителям, в противном случае спросите меня';
$labels['autosendtrustedignore'] = 'отправить квитанцию доверенным отправителям, в противном случае игнорировать';
$labels['ignorerequest'] = 'пропустить запрос';
$labels['readwhendeleted'] = 'Помечать как прочитанное при удалении';
$labels['flagfordeletion'] = 'Помечать для удаления вместо удаления';
$labels['skipdeleted'] = 'Не показывать удаленные сообщения';
$labels['deletealways'] = 'Удалять сообщения, если не получается поместить их в корзину';
$labels['deletejunk'] = 'Удалять сообщения из папки СПАМ минуя Корзину';
$labels['showremoteimages'] = 'Показывать удаленные изображения';
$labels['allowremoteresources'] = 'Разрешить внешние ресурсы (изображения, стили)';
$labels['fromknownsenders'] = 'от известных отправителей';
$labels['fromtrustedsenders'] = 'от доверенных отправителей';
$labels['frommycontacts'] = 'от моих контактов';
$labels['always'] = 'всегда';
$labels['alwaysbutplain'] = 'всегда, кроме тех случаев, когда, ответ составлен обычным текстом';
$labels['showinlineimages'] = 'Показывать вложенные изображения внизу сообщения';
$labels['autosavedraft'] = 'Автосохранение черновика';
$labels['everynminutes'] = 'каждые $n минут';
$labels['refreshinterval'] = 'Обновить (проверить новые сообщения и т.п.)';
$labels['never'] = 'никогда';
$labels['immediately'] = 'немедленно';
$labels['messagesdisplaying'] = 'Отображение сообщений';
$labels['messagescomposition'] = 'Создание сообщений';
$labels['mimeparamfolding'] = 'Имена вложений';
$labels['2231folding'] = 'RFC 2231 (только для новейших программ)';
$labels['miscfolding'] = 'RFC 2047/2231  (наибольшая совместимость)';
$labels['2047folding'] = 'RFC 2047  (для старых программ)';
$labels['force7bit'] = 'Использовать MIME для 8-битных символов';
$labels['savelocalstorage'] = "Сохранить в локальном хранилище веб-обозревателя (временно)";
$labels['advancedoptions'] = 'Дополнительные настройки';
$labels['toggleadvancedoptions'] = 'Дополнительные параметры';
$labels['focusonnewmessage'] = 'Фокусировать окно браузера при новом сообщении';
$labels['checkallfolders'] = 'Проверять новые сообщения во всех папках';
$labels['displaynext'] = 'Показать следующую запись списка после удаления/перемещения';
$labels['defaultfont'] = 'Шрифт по умолчанию HTML сообщения';
$labels['mainoptions'] = 'Основные настройки';
$labels['browseroptions'] = 'Настройки обозревателя';
$labels['section'] = 'Раздел';
$labels['maintenance'] = 'Обслуживание';
$labels['newmessage'] = 'Новое сообщение';
$labels['signatureoptions'] = 'Опции подписи';
$labels['whenreplying'] = 'При ответе';
$labels['replyempty'] = 'не цитировать оригинальное сообщение';
$labels['replytopposting'] = 'начать новое сообщение перед цитируемым';
$labels['replytoppostingnoindent'] = 'начать новое сообщение перед цитируемым (без отступа)';
$labels['replybottomposting'] = 'начать новое сообщение после цитируемого';
$labels['replyremovesignature'] = 'Удалить подпись при ответе';
$labels['autoaddsignature'] = 'Автоматически добавлять подпись';
$labels['newmessageonly'] = 'только в новых сообщениях';
$labels['replyandforwardonly'] = 'только в ответах и пересылках';
$labels['insertsignature'] = 'Вставить подпись';
$labels['sigbelow'] = 'Поместить подпись после цитируемого сообщения';
$labels['sigseparator'] = 'Добавлять стандартный разделитель в подписи';
$labels['automarkread'] = 'Отметить сообщения как прочитанные';
$labels['afternseconds'] = 'через $n секунд';
$labels['reqmdn'] = 'Всегда запрашивать уведомление о доставке';
$labels['reqdsn'] = 'Всегда запрашивать уведомление о состоянии доставки';
$labels['replysamefolder'] = 'Помещать ответы в ту же папку, где находится оригинал';
$labels['defaultabook'] = 'Адресная книга по умолчанию';
$labels['autocompletesingle'] = 'Пропускать дополнительные адреса в автозавершении';
$labels['listnamedisplay'] = 'Выводить список контактов как';
$labels['contactformmode'] = 'Режим формы Контакта';
$labels['privatemode'] = 'Личный (домашний)';
$labels['businessmode'] = 'Бизнес (рабочий)';
$labels['collectedaddresses'] = 'Собранные контакты';
$labels['collectedrecipients'] = 'Собранные получатели';
$labels['collectedrecipientsopt'] = 'Сохранять получателей исходящей электронной почты в';
$labels['collectedsendersopt'] = 'Сохранять доверенных отправителей в';
$labels['trustedsenders'] = 'Надежные отправители';
$labels['spellcheckbeforesend'] = 'Проверять орфографию перед отправкой';
$labels['spellcheckoptions'] = 'Параметры проверки орфографии';
$labels['spellcheckignoresyms'] = 'Пропускать слова с символами';
$labels['spellcheckignorenums'] = 'Пропускать слова с цифрами';
$labels['spellcheckignorecaps'] = 'Пропускать слова из прописных букв';
$labels['addtodict'] = 'Добавить в словарь';
$labels['mailtoprotohandler'] = 'Зарегистрировать обработчик для ссылок mailto:';
$labels['standardwindows'] = 'Обрабатывать всплывающие окна как обычные';
$labels['forwardmode'] = 'Пересылка сообщений';
$labels['inline'] = 'в тексте';
$labels['asattachment'] = 'как вложение';
$labels['replyallmode'] = 'Действие по умолчанию кнопки [Ответить всем]';
$labels['replyalldefault'] = 'ответить всем';
$labels['replyalllist'] = 'ответить только в список рассылки (если найден)';
$labels['allmessages'] = 'все сообщения';
$labels['olderxdays'] = 'старше чем $x дней';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Имя папки';
$labels['subscribed'] = 'Подписан';
$labels['messagecount'] = 'Сообщения';
$labels['create'] = 'Создать';
$labels['createfolder'] = 'Создать новую папку';
$labels['managefolders'] = 'Управление папками';
$labels['specialfolders'] = 'Особые папки';
$labels['properties'] = 'Свойства';
$labels['folderproperties'] = 'Свойства папки';
$labels['parentfolder'] = 'Родительская папка';
$labels['location'] = 'Расположение';
$labels['info'] = 'Информация';
$labels['getfoldersize'] = 'Показать размер папки';
$labels['changesubscription'] = 'Изменить подписку';
$labels['foldertype'] = 'Тип каталога';
$labels['personalfolder'] = 'Приватный каталог';
$labels['otherfolder'] = 'Каталог другого пользователя';
$labels['sharedfolder'] = 'Совместный каталог';
$labels['findfolders'] = 'Найти папки';
$labels['findcontacts'] = 'Поиск контактаов';
$labels['findmail'] = 'Поиск сообщений';
$labels['namespace.personal'] = 'Персональные';
$labels['namespace.other'] = 'Других пользователей';
$labels['namespace.shared'] = 'Общие';
$labels['dualuselabel'] = 'Может содержать только';
$labels['dualusemail'] = 'сообщения';
$labels['dualusefolder'] = 'папки';
$labels['generate'] = 'Создать';
$labels['encryptioncreatekey'] = 'Создать новую пару ключей';
$labels['openmailvelopesettings'] = 'Открыть настройки Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'У вас есть $nr подходящих закрытых PGP ключей, хранящиеся на вашей связке ключей Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'У этого идентификатора отправителя еще нет закрытого ключа PGP, хранящегося расширении Mailvelope. Вы хотите создать ключ для того, чтобы включить зашифрованный обмен сообщениями?';
$labels['encryption'] = 'Шифрование';
$labels['mailvelopeoptions'] = 'Mailvelope опции';
$labels['mailvelopemainkeyring'] = 'Использовать шифрование Mailvelope';
$labels['mailvelopenotfound'] = 'Расширение Mailvelope не включено / не установлено в вашем браузере.';
$labels['sortby'] = 'Сортировать по';
$labels['sortasc'] = 'Возрастанию';
$labels['sortdesc'] = 'Убыванию';
$labels['undo'] = 'Отмена';
$labels['installedplugins'] = 'Установленные дополнения';
$labels['plugin'] = 'Дополнение';
$labels['version'] = 'Версия';
$labels['source'] = 'Источник';
$labels['destination'] = 'Назначение';
$labels['license'] = 'Лицензия';
$labels['support'] = 'Поддержка';
$labels['savedsearches'] = 'Сохранённые запросы';
$labels['dateformatY'] = 'ГГГГ';
$labels['dateformaty'] = 'ГГ';
$labels['dateformatm'] = 'ММ';
$labels['dateformatd'] = 'ДД';
$labels['dateformatj'] = 'Д';
$labels['dateformatn'] = 'М';
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Английский';
$labels['westerneuropean'] = 'Западноевропейский';
$labels['easterneuropean'] = 'Восточноевропейский';
$labels['southeasterneuropean'] = 'Юго-Восточноевропейский';
$labels['baltic'] = 'Прибалтийский';
$labels['cyrillic'] = 'Кириллица';
$labels['arabic'] = 'Арабский';
$labels['greek'] = 'Греческий';
$labels['hebrew'] = 'Иврит';
$labels['turkish'] = 'Турецкий';
$labels['nordic'] = 'Скандинавский';
$labels['thai'] = 'Тайский';
$labels['celtic'] = 'Кельтский';
$labels['vietnamese'] = 'Вьетнамский';
$labels['japanese'] = 'Японский';
$labels['korean'] = 'Корейский';
$labels['chinese'] = 'Китайский';
$labels['arialabeltopnav'] = 'Управление окном';
$labels['arialabeltasknav'] = 'Задачи приложения';
$labels['arialabeltoolbar'] = 'Панель инструментов приложения';
$labels['arialabellistnav'] = 'Навигация по списку';
$labels['arialabelactivetask'] = 'Активная задача';
$labels['arialabelmessagessearchfilter'] = 'Фильтр перечня сообщений';
$labels['arialabelmailsearchform'] = 'Форма поиска в сообщении';
$labels['arialabelcontactsearchform'] = 'Форма поиска контактов';
$labels['arialabelmailquicksearchbox'] = 'Ввод поискового запроса адресов эл.почты';
$labels['arialabelquicksearchbox'] = 'Поисковый запрос';
$labels['arialabelfoldersearchfilter'] = 'Фильтр перечня папок';
$labels['arialabelfoldersearchform'] = 'Форма поиска папок';
$labels['arialabelfolderlist'] = 'Выбор папки эл.почты';
$labels['arialabelmessagelist'] = 'Перечень сообщений эл.почты';
$labels['arialabelmailpreviewframe'] = 'Предпросмотр сообщений';
$labels['arialabelmailboxmenu'] = 'Меню действий над папкой';
$labels['arialabellistselectmenu'] = 'Меню выделения списка';
$labels['arialabelthreadselectmenu'] = 'Меню списка обсуждений';
$labels['arialabelmessagelistoptions'] = 'Параметры отображение списка сообщений и упорядочивания';
$labels['arialabelmailimportdialog'] = 'Диалог импорта сообщения';
$labels['arialabelmessagenav'] = 'Навигация по сообщениям';
$labels['arialabelmessagebody'] = 'Тело сообщения';
$labels['arialabelmessageactions'] = 'Действия над сообщением';
$labels['arialabelcontactquicksearch'] = 'Форма поиска контактов';
$labels['arialabelcontactsearchbox'] = 'Ввод поискового запроса контакта';
$labels['arialabelmessageheaders'] = 'Заголовки сообщений';
$labels['arialabelforwardingoptions'] = 'Опции пересылки';
$labels['arialabelreplyalloptions'] = 'Параметры ответа всем';
$labels['arialabelmoremessageactions'] = 'Дополнительные действия с сообщением';
$labels['arialabelmorecontactactions'] = 'Дополнительные действия с контактом';
$labels['arialabelmarkmessagesas'] = 'Отметить выделенные сообщения как...';
$labels['arialabelcomposeoptions'] = 'Параметры создания';
$labels['arialabelresponsesmenu'] = 'Меню заранее подготовленных ответов';
$labels['arialabelattachmentuploadform'] = 'Форма выгрузки вложения';
$labels['arialabelattachmentmenu'] = 'Настройки вложений';
$labels['arialabelmailtomenu'] = 'Параметры адреса';
$labels['arialabelattachmentpreview'] = 'Предпросмотр вложений';
$labels['ariasummarycomposecontacts'] = 'Список контактов и групп для выбора в качестве получателей';
$labels['arialabelcontactexportoptions'] = 'Параметры экспорта контактов';
$labels['arialabelabookgroupoptions'] = 'Параметры адресной книги/группы';
$labels['arialabelpreferencesform'] = 'Форма настроек';
$labels['arialabelidentityeditfrom'] = 'Форма редактирования личных данных';
$labels['arialabelresponseeditfrom'] = 'Форма редактирования ответа';
$labels['arialabelsearchterms'] = 'Поисковый запросы';
$labels['arialabeldropactionmenu'] = 'Меню действий при перетаскивании';
$labels['arialabelheadersmenu'] = 'Меню добавления получателя (Заголовок)';
$labels['arialabelimagetools'] = 'Инструменты работы с изображениями';
$labels['helplistnavigation'] = 'Клавиши навигации по списку';
$labels['helplistkeyboardnavigation'] = "Стрелки вверх/вниз: Перемещает фокус по строкам/выделение.
Пробел: Выделяет строку на которой находится фокус.
Shift + вверх/вниз: Выделяет дополнительную строку выше/ниже.
Ctrl + пробел: Добавляет/удаляет строку на которой находится фокус в/из выделения.";
$labels['helplistkeyboardnavmessages'] = "Стрелки вправо/влево: раскрыть/свернуть сообщения обсуждения (только в режиме просмотра обсуждений).
Enter: Открыть выделенное сообщение.
Delete: Переместить выбранные сообщения в Корзину.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Открыть выбранный контакт.";
localization/ru_RU/messages.inc000064400000061005151727150540012603 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Произошла ошибка!';
$messages['loginfailed']  = 'Неудачная попытка входа.';
$messages['cookiesdisabled'] = 'Ваш браузер не принимает cookie.';
$messages['sessionerror'] = 'Ваша сессия устарела.';
$messages['cookiesmismatch'] = 'Обнаружено несоответствие cookie. Очистите их в браузере.';
$messages['storageerror'] = 'Неудачное соединение с IMAP сервером';
$messages['servererror'] = 'Ошибка сервера!';
$messages['servererrormsg'] = 'Ошибка сервера: $msg';
$messages['accountlocked'] = 'Слишком много неудачных попыток входа. Попробуйте позже.';
$messages['connerror'] = 'Ошибка соединения (Сбой подключения к серверу)!';
$messages['dberror'] = 'Ошибка базы данных!';
$messages['dbconnerror'] = 'Невозможно подключиться к базе данных.';
$messages['windowopenerror'] = 'Всплывающее окно было заблокировано!';
$messages['requesttimedout'] = 'Превышено время ожидания запроса';
$messages['errorreadonly'] = 'Невозможно выполнить операцию. Папка доступна только для чтения.';
$messages['errornoperm'] = 'Невозможно выполнить операцию. Доступ запрещён.';
$messages['erroroverquota'] = 'Невозможно выполнить операцию. Нет свободного места на диске.';
$messages['erroroverquotadelete'] = 'Нет свободного места на диске. Используйте SHIFT+DEL для удаления сообщения.';
$messages['invalidrequest'] = 'Неверный запрос! Информация не сохранена.';
$messages['invalidhost'] = 'Неверное имя сервера.';
$messages['nomessagesfound'] = 'Сообщений не найдено';
$messages['loggedout'] = 'Ваша сессия успешно завершена. Всего доброго!';
$messages['mailboxempty'] = 'Почтовый ящик пуст';
$messages['nomessages'] = 'Сообщения отсутствуют';
$messages['refreshing'] = 'Обновление...';
$messages['loading'] = 'Загрузка...';
$messages['uploading'] = 'Файл загружается…';
$messages['attaching'] = 'Добавление вложения...';
$messages['uploadingmany'] = 'Загрузка файлов...';
$messages['loadingdata'] = 'Загрузка данных...';
$messages['checkingmail'] = 'Проверка новых сообщений...';
$messages['sendingmessage'] = 'Отправка сообщения...';
$messages['messagesent'] = 'Сообщение отправлено.';
$messages['savingmessage'] = 'Сохранение сообщения...';
$messages['messagesaved'] = 'Сохранено в Черновиках.';
$messages['successfullysaved'] = 'Сохранено.';
$messages['savingresponse'] = 'Сохранение текста ответа...';
$messages['deleteresponseconfirm'] = 'Вы действительно хотите удалить этот текст ответа?';
$messages['nocontactselected'] = 'Вы не выбрали контакт.';
$messages['addedsuccessfully'] = 'Контакт добавлен в адресную книгу.';
$messages['contactexists'] = 'Контакт с этим адресом e-mail уже существует.';
$messages['contactnameexists'] = 'Контакт с таким именем уже существует.';
$messages['blockedimages'] = 'В целях безопасности загрузка изображений заблокирована.';
$messages['blockedresources'] = 'В целях безопасности загрузка внешних ресурсов заблокирована.';
$messages['suspiciousemail'] = 'Это сообщение содержит подозрительные адреса электронной почты, которые могут быть мошенническими.';
$messages['bccemail'] = 'Переадресованное сообщение(я) содержит конфиденциальных получателей (Bcc).';
$messages['bouncehint'] = 'Сообщение будет отправлено без каких-либо изменений, то есть с использованием исходного текста, заголовков и получателей.';
$messages['encryptedmessage'] = 'Сообщение зашифровано и не может быть показано. Обратитесь к администратору сервера.';
$messages['externalmessagedecryption'] = 'Это зашифрованное сообщение, оно может быть расшифровано с помощью расширением вашего браузера.';
$messages['nopubkeyfor'] = 'Не найден действительный открытый ключ для $email';
$messages['nopubkeyforsender'] = 'Отсутствует действительный открытый ключ для удостоверения вашей личности отправителя. Вы хотите зашифровать сообщение только для получателей?';
$messages['encryptnoattachments'] = 'Уже загруженные вложения не могут быть зашифрованы. Пожалуйста, повторно добавьте их в редакторе шифрования.';
$messages['searchpubkeyservers'] = 'Вы хотите выполнить поиск серверов открытых ключей для отсутствующих ключей?';
$messages['encryptpubkeysfound'] = 'Следующие открытые ключи были найдены:';
$messages['keyservererror'] = 'Не удалось получить ключ от сервера ключей.';
$messages['keyimportsuccess'] = 'Открытый ключ $key успешно импортирован в хранилище ключей.';
$messages['nocontactsfound'] = 'Контакты не найдены.';
$messages['contactnotfound'] = 'Требуемый контакт не найден.';
$messages['contactsearchonly'] = 'Для просмотра контактов из выбранной адресной книги необходимо использовать форму поиска.';
$messages['sendingfailed'] = 'Не удалось отправить сообщение.';
$messages['senttooquickly'] = 'Вы должны подождать $sec сек. для отправки сообщения.';
$messages['errorsavingsent'] = 'Произошла ошибка при сохранении отправленного сообщения.';
$messages['errorsaving'] = 'В процессе сохранения произошла ошибка.';
$messages['errormoving'] = 'Не удалось переместить сообщение(я).';
$messages['errorcopying'] = 'Не удалось скопировать сообщение(я).';
$messages['errordeleting'] = 'Не удалось удалить сообщение(я).';
$messages['errormarking'] = 'Не удалось пометить сообщение(я).';
$messages['alerttitle'] = 'Внимание';
$messages['confirmationtitle'] = 'Внимание';
$messages['deletecontactconfirm']  = 'Вы действительно хотите удалить выделенные контакты?';
$messages['deletegroupconfirm']  = 'Вы действительно хотите удалить выделенную группу?';
$messages['deletemessagesconfirm'] = 'Вы действительно хотите удалить выбранные сообщения?';
$messages['deletefolderconfirm']  = 'Вы действительно хотите удалить эту папку?';
$messages['movefolderconfirm']  = 'Вы действительно хотите удалить эту папку?';
$messages['purgefolderconfirm']  = 'Вы действительно хотите удалить все сообщения в этой папке?';
$messages['contactdeleting'] = 'Удаление контакта(ов)...';
$messages['groupdeleting'] = 'Удаление группы...';
$messages['folderdeleting'] = 'Удаление папки...';
$messages['foldermoving'] = 'Перемещение папки...';
$messages['foldersubscribing'] = 'Подписать папку...';
$messages['folderunsubscribing'] = 'Отписать папку...';
$messages['formincomplete'] = 'Заполнены не все поля формы.';
$messages['noemailwarning'] = 'Пожалуйста, введите корректный адрес электронной почты.';
$messages['nonamewarning']  = 'Пожалуйста, введите имя.';
$messages['nopagesizewarning'] = 'Пожалуйста, введите размер страницы.';
$messages['nosenderwarning'] = 'Пожалуйста, введите адрес электронной почты отправителя.';
$messages['recipientsadded'] = 'Получатель(и) успешно добавлен.';
$messages['norecipientwarning'] = 'Пожалуйста, введите хотя бы одного получателя.';
$messages['disclosedrecipwarning'] = 'Все получатели будут видеть адреса друг друга. Чтобы избежать этого и защитить свою частную жизнь, вы можете использовать поле BCC.';
$messages['disclosedreciptitle'] = 'Слишком много внешних получателей';
$messages['nosubjectwarning']  = 'Поле Тема не заполнено. Хотите заполнить его сейчас?';
$messages['nosubjecttitle']  = 'Без темы';
$messages['nobodywarning'] = 'Отправить сообщение без текста?';
$messages['notsentwarning'] = 'Текущее сообщение не отправлено и не сохранено. Удалить его?';
$messages['restoresavedcomposedata'] = 'Найдено ранее составленное, но неотправленное сообщение.\n\nТема: $subject\nСохранено: $date\n\nХотите восстановить это сообщение?';
$messages['nosearchname'] = 'Пожалуйста, введите имя или адрес E-Mail';
$messages['notuploadedwarning'] = 'Вложения загружены не полностью. Подождите или отмените загрузку.';
$messages['searchsuccessful'] = 'Найденных сообщений - $nr';
$messages['contactsearchsuccessful'] = '$nr контактов найдено.';
$messages['searchnomatch'] = 'Ничего не найдено.';
$messages['searching'] = 'Поиск...';
$messages['checking'] = 'Проверка...';
$messages['stillsearching'] = 'Поиск...';
$messages['nospellerrors'] = 'Орфографических ошибок не найдено.';
$messages['folderdeleted'] = 'Папка удалена.';
$messages['foldersubscribed'] = 'Папка подписана';
$messages['folderunsubscribed'] = 'Папка отписана';
$messages['folderpurged'] = 'Папка очищена.';
$messages['folderexpunged'] = 'Папка сжата.';
$messages['deletedsuccessfully'] = 'Удалено.';
$messages['converting'] = 'Удаление форматирования сообщения...';
$messages['messageopenerror'] = 'Невозможно загрузить сообщение с сервера.';
$messages['filelinkerror'] = 'Сбой добавления вложения.';
$messages['fileuploaderror'] = 'Ошибка загрузки файла.';
$messages['csvfilemismatch'] = 'Импорт нескольких файлов CSV с разными полями не поддерживается.';
$messages['filesizeerror'] = 'Загруженный файл больше максимального размера в $size.';
$messages['filecounterror'] = 'Вы можете загрузить максимум $count файлов одновременно.';
$messages['msgsizeerror'] = 'Не удалось прикрепить файл. Превышен максимальный размер сообщения: ($size).';
$messages['msgsizeerrorfwd'] = 'Превышен максимальный размер сообщения ($size). $num сообщение(й) не было(и) прикреплено(ы).';
$messages['copysuccess'] = 'Успешно скопировано $nr контактов.';
$messages['movesuccess'] = 'Успешно перемещено $nr контактов.';
$messages['copyerror'] = 'Контакты не скопированы.';
$messages['moveerror'] = 'Контакты не перемещены.';
$messages['sourceisreadonly'] = 'Данный источник адресов только для чтения.';
$messages['errorsavingcontact'] = 'Невозможно сохранить адрес контакта.';
$messages['movingmessage'] = 'Перемещение сообщения(й)…';
$messages['copyingmessage'] = 'Копирование сообщения(й)...';
$messages['copyingcontact'] = 'Копирование контакта(ов)...';
$messages['movingcontact'] = 'Перемещение контакта(ов)...';
$messages['deletingmessage'] = 'Удаление сообщения(й)...';
$messages['markingmessage'] = 'Выделение сообщения(й)...';
$messages['addingmember'] = 'Добавление контакта(ов) в группу...';
$messages['removingmember'] = 'Удаление контакта(ов) из группы...';
$messages['receiptsent'] = 'Уведомление о прочтении отправлено.';
$messages['errorsendingreceipt'] = 'Уведомление о прочтении не отправлено.';
$messages['deleteidentityconfirm'] = 'Вы на самом деле хотите удалить эту сущность?';
$messages['nodeletelastidentity'] = 'Вы не можете удалить этот профиль, он у вас последний.';
$messages['forbiddencharacter'] = 'Имя папки содержит недопустимые символы.';
$messages['selectimportfile'] = 'Выберите файл для загрузки.';
$messages['addresswriterror'] = 'Выбранная адресная книга недоступна для записи.';
$messages['contactaddedtogroup'] = 'Контакты добавлены в эту группу.';
$messages['contactremovedfromgroup'] = 'Контакты удалены из этой группы.';
$messages['nogroupassignmentschanged'] = 'Распределение по группам не изменено.';
$messages['importwait'] = 'Импортирование, пожалуйста, подождите...';
$messages['importformaterror'] = 'Ошибка импорта! Загруженный файл имеет неизвестный  формат данных.';
$messages['importconfirm'] = '<b>Успешно импортировано $inserted контактов</b>';
$messages['importconfirmskipped'] = '<b>Пропущено $skipped существующих записей</b>';
$messages['importmessagesuccess'] = '$nr сообщений успешно импортировано.';
$messages['importmessageerror'] = 'Сбой импорта! Загруженный файл не является файлом сообщения или почтового ящика';
$messages['opnotpermitted'] = 'Действие запрещено!';
$messages['nofromaddress'] = 'В выбранном профиле не хватает адреса электронной почты.';
$messages['editorwarning'] = 'Переключение типа редактора может привести к потере  форматирования текста. Продолжить?';
$messages['httpreceivedencrypterror'] = 'На сервере возникла неизбежная ошибка. Срочно свяжитесь с Вашим администратором. <b>Ваше сообщение не может быть отправлено.</b>';
$messages['smtpconnerror'] = 'SMTP ошибка ($code): Сбой соединения с сервером.';
$messages['smtpautherror'] = 'SMTP ошибка ($code): Ошибка авторизации.';
$messages['smtpfromerror'] = 'SMTP ошибка ($code): Невозможно установить отправителя "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP ошибка ($code): Невозможно добавить получателя "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP ошибка: Невозможно обработать список получателей.';
$messages['smtputf8error'] = 'Ошибка SMTP: сервер не поддерживает Unicode в адресе электронной почты.';
$messages['smtpsizeerror'] = 'Ошибка SMTP: Размер сообщения превышает ограничения сервера ($limit)';
$messages['smtperror'] = 'SMTP ошибка: $msg';
$messages['emailformaterror'] = 'Неверный адрес: $email';
$messages['toomanyrecipients'] = 'Слишком много получателей. Уменьшите их количество до $max.';
$messages['maxgroupmembersreached'] = 'Размер группы больше максимально разрешенного - $max.';
$messages['internalerror'] = 'Произошла внутренняя ошибка. Попробуйте ещё раз.';
$messages['contactdelerror'] = 'Не возможно удалить контакт(ы).';
$messages['contactdeleted'] = 'Контакт(ы) успешно удален(ы).';
$messages['contactrestoreerror'] = 'Не удалось восстановить удалённый(е) контакт(ы).';
$messages['contactrestored'] = 'Контакт(ы) успешно восстановлен(ы).';
$messages['groupdeleted'] = 'Группа успешно удалена.';
$messages['grouprenamed'] = 'Группа успешно переименована.';
$messages['groupcreated'] = 'Группа успешно создана.';
$messages['savedsearchdeleted'] = 'Сохранённый запрос успешно удалён.';
$messages['savedsearchdeleteerror'] = 'Не удалось удалить сохранённый запрос.';
$messages['savedsearchcreated'] = 'Сохранённый запрос успешно создан.';
$messages['savedsearchcreateerror'] = 'Не удалось создать сохранённый запрос.';
$messages['messagedeleted'] = 'Сообщение(я) успешно удалено(ы).';
$messages['messagemoved'] = 'Сообщение(я) успешно перемещено(ы).';
$messages['messagemovedtotrash'] = 'Сообщение(я) успешно перемещено в корзину.';
$messages['messagecopied'] = 'Сообщение(я) успешно скопировано(ы).';
$messages['messagemarked'] = 'Сообщение(я) успешно выделено(ы).';
$messages['autocompletechars'] = 'Введите, как минимум, $min символов для автодополнения.';
$messages['autocompletemore'] = 'Поиск возвратил слишком много результатов. Пожалуйста, уточните.';
$messages['namecannotbeempty'] = 'Имя не может быть пустым.';
$messages['nametoolong'] = 'Слишком длинное имя.';
$messages['namedotforbidden'] = 'Имя папки не может начинаться с точки';
$messages['folderupdated'] = 'Папка обновлена.';
$messages['foldercreated'] = 'Папка создана.';
$messages['invalidimageformat'] = 'Неверный формат изображения.';
$messages['mispellingsfound'] = 'В сообщении обнаружены орфографические ошибки.';
$messages['parentnotwritable'] = 'Не удается создать/переместить папку в выбранную родительскую папку. Нет прав доступа.';
$messages['messagetoobig'] = 'Часть сообщения слишком велика для обработки.';
$messages['attachmentvalidationerror'] = 'Это вложение подозрительно, потому что его тип не соответствует типу, объявленному в сообщении. Если Вы не доверяете отправителю, Вы не должны открывать его в браузере, потому что оно может содержать вредоносное содержимое.<br/><br/><em>Ожидаемое: $expected; найденое: $detected</em>';
$messages['noscriptwarning'] = 'Внимание: Данному сервису веб-почты требуется Javascript! Для того, чтобы его использовать необходимо включить поддержку Javascript в настройках вашего браузера.';
$messages['messageissent'] = 'Сообщение уже отправлено, но еще не сохранено. Вы хотите сохранить его?';
$messages['errnotfound'] = 'Файл не найден';
$messages['errnotfoundexplain'] = 'Требуемый ресурс не найден';
$messages['errfailedrequest'] = 'Неудавшийся запрос';
$messages['errauthorizationfailed'] = 'Сбой авторизации';
$messages['errunauthorizedexplain'] = 'Не удалось проверить, что вы имеете право доступа к этой услуге!';
$messages['errrequestcheckfailed'] = 'Запрос не прошел проверку';
$messages['errcsrfprotectionexplain'] = "Для вашей безопасности, доступ к этому ресурсу защищен от CSRF.\nЕсли вы видите это, вы, вероятно, не вышли, прежде чем покинуть веб-приложения.\n\nДля продолжения теперь потребуется действия человека.";
$messages['errcontactserveradmin'] = 'Обратитесь к администратору сервера.';
$messages['clicktoresumesession'] = 'Нажмите здесь, чтобы возобновить предыдущий сеанс';
$messages['errcomposesession'] = 'Ошибка сеанса написания письма';
$messages['errcomposesessionexplain'] = 'Требуемый сеанс написания письма не найден.';
$messages['clicktocompose'] = 'Нажмите для создания нового сообщения';
$messages['nosupporterror'] = 'Эта функция не поддерживается Вашим веб-браузером.';
$messages['siginserted'] = 'Подпись вставлена успешно.';
$messages['responseinserted'] = 'Ответ успешно вставлен.';
$messages['noresponsesavailable'] = 'Нет доступных ответов';
$messages['listempty'] = 'Список пуст.';
$messages['listusebutton'] = 'Используйте кнопку Создать, чтобы добавить новую запись.';
$messages['keypaircreatesuccess'] = 'Новая пара ключей была создана для $identity.';
$messages['emptyattachment'] = 'Это вложение похоже на пустое <br>Пожалуйста свяжитесь с отправителем для уточнения.';
$messages['oauthloginfailed'] = 'Ошибка OAuth авторизации. Пожалуйста, попробуйте еще раз.';
localization/ku/labels.inc000064400000034572151727150540011632 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bi xêr hatî $product\'ê';
$labels['username'] = 'Bikarhêner';
$labels['password'] = 'Nasnav';
$labels['server'] = 'Pêşkêşkar';
$labels['login'] = 'Têkevê';
$labels['logout'] = 'Derkeve';
$labels['mail'] = 'E-Peyam';
$labels['settings'] = 'Mîhengên Takekesî';
$labels['addressbook'] = 'Lênûska Navnîşanan';
$labels['inbox'] = 'Hatî';
$labels['drafts'] = 'Hilanînî';
$labels['sent'] = 'Şandî';
$labels['trash'] = 'Çop';
$labels['junk'] = 'Biikêrnehatî';
$labels['show_real_foldernames'] = 'Ji bo dosyeyên taybet navên rast bide nîşan';
$labels['subject'] = 'Mijar';
$labels['from'] = 'Şandyar';
$labels['sender'] = 'Şandyar';
$labels['to'] = 'Standyar';
$labels['cc'] = 'Kopiya Karbon';
$labels['bcc'] = 'Kopiya karbon a Veşartî';
$labels['replyto'] = 'Navnîşanên Standyar';
$labels['date'] = 'Dîrok';
$labels['size'] = 'Mezinahî';
$labels['priority'] = 'Girîngî';
$labels['organization'] = 'Sazî';
$labels['readstatus'] = 'Rewşê bixwîne';
$labels['listoptions'] = 'Vebijêrk tên rêzkirin...';
$labels['mailboxlist'] = 'Peldank';
$labels['messagesfromto'] = 'Peyam $count ên di navbera $from - $to';
$labels['messagenrof'] = '$nr a peyama $count';
$labels['fromtoshort'] = '$from – $to ji $count';
$labels['copy'] = 'Kopiya Karbon';
$labels['move'] = 'Bibe';
$labels['moveto'] = 'bibe...';
$labels['copyto'] = 'Kopyayek çêke li ser ...';
$labels['download'] = 'Daxîne';
$labels['open'] = 'Veke';
$labels['showattachment'] = 'Bide nîşan';
$labels['showanyway'] = 'Her çawa be nîşan bide';
$labels['filename'] = 'Navê pelê';
$labels['filesize'] = 'Mezinahiya pelê';
$labels['addtoaddressbook'] = 'Têxe lênûska navnîşanan';
$labels['sun'] = 'Yş';
$labels['mon'] = 'Dş';
$labels['tue'] = 'Sş';
$labels['wed'] = 'Çş';
$labels['thu'] = 'Pş';
$labels['fri'] = 'În';
$labels['sat'] = 'Şe';
$labels['sunday'] = 'Yekşem';
$labels['monday'] = 'Duşem';
$labels['tuesday'] = 'Sêşem';
$labels['wednesday'] = 'Çarşem';
$labels['thursday'] = 'Pêncşem';
$labels['friday'] = 'În';
$labels['saturday'] = 'Şemî';
$labels['jan'] = 'Çile';
$labels['feb'] = 'Reş';
$labels['mar'] = 'Adar';
$labels['apr'] = 'Avr';
$labels['may'] = 'Gul';
$labels['jun'] = 'Pûş';
$labels['jul'] = 'Tîr';
$labels['aug'] = 'Gel';
$labels['sep'] = 'Rez';
$labels['oct'] = 'Cotm';
$labels['nov'] = 'Serm';
$labels['dec'] = 'Berf';
$labels['longjan'] = 'Rêbendan';
$labels['longfeb'] = 'Reşemî';
$labels['longmar'] = 'Adar';
$labels['longapr'] = 'Avrêl';
$labels['longmay'] = 'Gulan';
$labels['longjun'] = 'Pûşper';
$labels['longjul'] = 'Tîrmeh';
$labels['longaug'] = 'Tebax';
$labels['longsep'] = 'Rezber';
$labels['longoct'] = 'Kewçêr';
$labels['longnov'] = 'Sermawez';
$labels['longdec'] = 'Berfanbar';
$labels['today'] = 'Îro';
$labels['refresh'] = 'Tezekirin';
$labels['checkmail'] = 'Li peyamên nû venihêre';
$labels['compose'] = 'Peyamekê biafirîne';
$labels['writenewmessage'] = 'Peyameke nû biafirîne';
$labels['reply'] = 'Bersivê bide';
$labels['replytomessage'] = 'Bersivê bide peyamê';
$labels['replytoallmessage'] = 'Bersivê ji bo hemû kesên ku ev peyan standine bişîne';
$labels['replyall'] = 'Hemûyan bibersivîne';
$labels['replylist'] = 'Lîsteyê bibersivîne';
$labels['forward'] = 'Pêşde';
$labels['forwardmessage'] = 'Bersivê bide peyamê';
$labels['deletemessage'] = 'Peyamê jê bibe';
$labels['movemessagetotrash'] = 'Peyamê dake çopê';
$labels['printmessage'] = 'Vê peyamê çap bike';
$labels['previousmessage'] = 'Peyama berê nîşan bide';
$labels['firstmessage'] = 'Peyama yekemîn nîşan bide';
$labels['nextmessage'] = 'Peyama di rêzê de nîşan bide';
$labels['lastmessage'] = 'Peyama dawî nîşan bide';
$labels['backtolist'] = 'Vegere lîsteya peyaman';
$labels['viewsource'] = 'Çavkaniyê nîşan bide';
$labels['mark'] = 'Nîşan bike';
$labels['markmessages'] = 'Peyamê nîşan bike';
$labels['markread'] = 'Wekî xwendî';
$labels['markunread'] = 'Wekî nexwendî';
$labels['markflagged'] = 'Wek alakirî';
$labels['markunflagged'] = 'Wek nealakirî';
$labels['moreactions'] = 'Bêhtir tevger...';
$labels['folders-all'] = 'Hemû dosye';
$labels['more'] = 'Bêhtir';
$labels['back'] = 'Paşve';
$labels['options'] = 'Vebijêrk';
$labels['first'] = 'Pêşîn';
$labels['last'] = 'Dawîn';
$labels['previous'] = 'Pêşde';
$labels['next'] = 'Piştde';
$labels['select'] = 'Hilbijêre';
$labels['all'] = 'Hemû';
$labels['none'] = 'Ne yek jî';
$labels['currpage'] = 'Rûpela niha';
$labels['isread'] = 'Bixwîne';
$labels['unread'] = 'Nexwendî';
$labels['flagged'] = 'Bialakirî';
$labels['unflagged'] = 'Nealakirî';
$labels['unanswered'] = 'Bersivnedayî';
$labels['withattachment'] = 'Bi pêvek';
$labels['deleted'] = 'Jêbirî';
$labels['undeleted'] = 'Nê jêbirî';
$labels['replied'] = 'Bersivdayî';
$labels['filter'] = 'Parzûn';
$labels['list'] = 'Lîste';
$labels['expand-all'] = 'Hemûyan fireh bike';
$labels['expand-unread'] = 'Ên nexwendî veke';
$labels['expand_only_unread'] = 'tenê bi peyamên nexwendî';
$labels['fromto'] = 'Ji/Jê re';
$labels['flag'] = 'Ala';
$labels['attachment'] = 'Pêvek';
$labels['nonesort'] = 'Ne yek jî';
$labels['sentdate'] = 'Dema şandinê';
$labels['arrival'] = 'Dema hatinê';
$labels['asc'] = 'ber bi jor ve';
$labels['desc'] = 'ber bi jêr ve';
$labels['listcolumns'] = 'Stûnan lîste bike';
$labels['listsorting'] = 'Stûna parzûnkirinê';
$labels['listorder'] = 'Rêza parzûnkirinê';
$labels['layoutlist'] = 'Lîste';
$labels['folderactions'] = 'Tevgerên dosyeyê...';
$labels['compact'] = 'Kompakt';
$labels['empty'] = 'Vala Bike';
$labels['quota'] = 'Bikaranîna dîskê';
$labels['unknown'] = 'nayê zanîn';
$labels['unlimited'] = 'bêsînor';
$labels['quotatotal'] = 'Lîmît';
$labels['quotaused'] = 'Bikarhatî';
$labels['quotastorage'] = 'Valahiya dîskê';
$labels['quotamessage'] = 'Hejmara peyaman';
$labels['quicksearch'] = 'Lêgerîna bilez';
$labels['resetsearch'] = 'Lêgerînê reset bike';
$labels['msgtext'] = 'Hemû peyam';
$labels['type'] = 'Cûre';
$labels['namex'] = 'Nav';
$labels['currentfolder'] = 'Dosyeya niha';
$labels['subfolders'] = 'Ev û bindosye';
$labels['allfolders'] = 'Hemû dosye';
$labels['openinextwin'] = 'Di pencereyeke nû de veke';
$labels['emlsave'] = 'Daxîne (.eml)';
$labels['changeformathtml'] = 'Di forma HTMLê de nîşan bide';
$labels['editasnew'] = 'Wek nû sererast bike';
$labels['send'] = 'Bişîne';
$labels['sendmessage'] = 'Peyamê niha bişîne';
$labels['savemessage'] = 'Hilîne';
$labels['addattachment'] = 'Pelekê lê zêde bike';
$labels['charset'] = 'Curetîp';
$labels['editortype'] = 'Cureyê serastkat';
$labels['returnreceipt'] = 'Rapora Vegerînê';
$labels['mailreplyintro'] = 'Di $date de, şandyar nivîsî:';
$labels['originalmessage'] = 'Peyama orîjînal';
$labels['selectimage'] = 'Wêne bibijêre';
$labels['addimage'] = 'Wêne tev bike';
$labels['selectmedia'] = 'Fîlmekê bibijêre';
$labels['addmedia'] = 'Fîlmekê tev bike';
$labels['insert'] = 'Tev bike';
$labels['checkspelling'] = 'Kontrola rastnivîsê';
$labels['resumeediting'] = 'Serastkirinê bidomîne';
$labels['revertto'] = 'Şûnde bîne';
$labels['responses'] = 'Bersivgel';
$labels['insertresponse'] = 'Bersivekê têxê';
$labels['manageresponses'] = 'Bersivan bi rê ve bibe';
$labels['newresponse'] = 'Bersiveke nê biafirîne';
$labels['addresponse'] = 'Bersivê tev bike';
$labels['editresponse'] = 'Bersivê sererast bike';
$labels['editresponses'] = 'Bersivan sererast bike';
$labels['responsename'] = 'Nav';
$labels['responsetext'] = 'Teksta Bersivê';
$labels['attach'] = 'Pêvek';
$labels['attachments'] = 'Pêvek';
$labels['upload'] = 'Bar bike';
$labels['uploadprogress'] = '$percent ($current ji $total)';
$labels['close'] = 'Bigire';
$labels['messageoptions'] = 'Vebijêrkên peyamê...';
$labels['low'] = 'Nizm';
$labels['lowest'] = 'Nizmtirîn';
$labels['normal'] = 'Asayî';
$labels['high'] = 'Bilind';
$labels['highest'] = 'Bilintirîn';
$labels['nosubject'] = '(bê mijar)';
$labels['showimages'] = 'Xuyakirina wêneyan';
$labels['alwaysshow'] = 'Her tim dîmenên ji $sender nîşan bide';
$labels['andnmore'] = '$nr bêhtir...';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Deqa tazî';
$labels['savesentmessagein'] = 'Peyama şandî tomar bike di ';
$labels['dontsave'] = 'tomar neke';
$labels['addcc'] = 'Cc Têxê';
$labels['addbcc'] = 'Bcc Têxê';
$labels['addreplyto'] = 'Bibersivîne têxê';
$labels['mdnrequest'] = 'Şandyarê/a vê peyamê xwest dema ku tu vê peyamê bixwînî ew were agahdarkirin. Tu dixwazî wî/ê agahdar bikî?';
$labels['receiptread'] = 'Rapora Vegerînê (xwendî)';
$labels['yourmessage'] = 'Ev rapora vegerîna peyama te ye';
$labels['receiptnote'] = 'Nîşe: Ev dide zanîn ka peyama te şand hat xwendin an na. Naveroka peyamê bi mîgogerî nayê zanîn.';
$labels['name'] = 'Navê xuya dibe';
$labels['firstname'] = 'Nav';
$labels['surname'] = 'Paşnav';
$labels['middlename'] = 'Navê navîn';
$labels['nameprefix'] = 'Pêşgir';
$labels['namesuffix'] = 'Paşgir';
$labels['nickname'] = 'Nûçik';
$labels['jobtitle'] = 'Şana Kar';
$labels['department'] = 'Beş';
$labels['gender'] = 'Zayend';
$labels['email'] = 'E-Peyam';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Navnîşan';
$labels['street'] = 'Kolan';
$labels['locality'] = 'Bajar';
$labels['zipcode'] = 'ZIP Code';
$labels['region'] = 'Eyalet';
$labels['country'] = 'Welat';
$labels['birthday'] = 'Rojbûn';
$labels['anniversary'] = 'Sersal';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Nîşegel';
$labels['male'] = 'mêr';
$labels['female'] = 'jin';
$labels['manager'] = 'Birêvebir';
$labels['assistant'] = 'Alîkar';
$labels['spouse'] = 'Heval';
$labels['allfields'] = 'Hemû qad';
$labels['search'] = 'Lêgerîn';
$labels['searchresult'] = 'Encama lêgerînê';
$labels['advsearch'] = 'Lêgerîna pêşketî';
$labels['advanced'] = 'Pêşketî';
$labels['other'] = 'A din';
$labels['typehome'] = 'Mal';
$labels['typework'] = 'Kar';
$labels['typeother'] = 'A din';
$labels['typemobile'] = 'Mobîl';
$labels['typemain'] = 'Sereke';
$labels['typehomefax'] = 'Faksa Malê';
$labels['typeworkfax'] = 'Faksa Kar';
$labels['typecar'] = 'Otomobîl';
$labels['typevideo'] = 'Bînûdeng';
$labels['typeassistant'] = 'Alîkar';
$labels['typehomepage'] = 'Malper';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Berg';
$labels['addfield'] = 'Qadekî zêde bike';
$labels['addcontact'] = 'Kesekî zêde bike';
$labels['editcontact'] = 'Têkiliyê serast bike';
$labels['contacts'] = 'Kes';
$labels['contactproperties'] = 'Taybetmendiyên Kesan';
$labels['contactnameandorg'] = 'Nav û rêxistin';
$labels['personalinfo'] = 'Agahiyên kesane';
$labels['contactphoto'] = 'Wêneyê Kes';
$labels['edit'] = 'Serast bike';
$labels['cancel'] = 'Betal';
$labels['save'] = 'Tomar bike';
$labels['delete'] = 'Jê Bibe';
$labels['rename'] = 'Dîsa navek lê bike';
$labels['addphoto'] = 'Tev bike';
$labels['replacephoto'] = 'Dîsa bi cih bike';
$labels['uploadphoto'] = 'Fotoyek bar bike';
$labels['newcontact'] = 'Kesekî nû biafirîne';
$labels['deletecontact'] = 'Têkiliyên hilbijartî jê bibe';
$labels['composeto'] = 'Ji têkiliya hilbijartî re peyam bişîne';
$labels['contactsfromto'] = 'Têkiliyên $count ên di navbera $from - $to de';
$labels['print'] = 'çap bike';
$labels['export'] = 'Derxe';
$labels['exportall'] = 'Hemûyan derxe';
$labels['exportsel'] = 'A bijartî derxe';
$labels['newgroup'] = 'Komeke nû çêke';
$labels['addgroup'] = 'Komek tev bike';
$labels['grouprename'] = 'Dîsa navekî li komê bike';
$labels['groupdelete'] = 'Komê rake';
$labels['uponelevel'] = 'Astek jor';
$labels['previouspage'] = 'Seta berê nîşan bide';
$labels['firstpage'] = 'Seta yekemîn nîşan bide';
$labels['nextpage'] = 'Seta di rêzê de nîşan bide';
$labels['lastpage'] = 'Seta dawî nîşan bide';
$labels['group'] = 'Kom';
$labels['groups'] = 'Kom';
$labels['personaladrbook'] = 'Navnîşanên Takekesî';
$labels['searchsave'] = 'Lêgerînê tomar bike';
$labels['searchdelete'] = 'Lêgerînê jê bibe';
$labels['import'] = 'Derhîne';
$labels['done'] = 'Qediya';
$labels['settingsfor'] = 'Mîheng ji bo';
$labels['about'] = 'Derbar';
$labels['preferences'] = 'Vebijêrk';
$labels['userpreferences'] = 'Vebijêrkên bikarhêner';
$labels['editpreferences'] = 'Vebijêrkên bikarhêner serast bike';
$labels['identities'] = 'Nasname';
$labels['preferhtml'] = 'Wekî HTML nîşan bide';
$labels['htmlmessage'] = 'Peyama HTML';
$labels['messagepart'] = 'Parçe';
$labels['digitalsig'] = 'Îmzeya Dîjîtal';
$labels['prettydate'] = 'Kurtenivîsa Dîrokê';
$labels['setdefault'] = 'Wekî standard tomar bike';
$labels['language'] = 'Ziman';
$labels['timezone'] = 'Herêma demê';
$labels['pagesize'] = 'Hejmara peyamên her rûpelekê';
$labels['signature'] = 'Şanenav';
$labels['dstactive'] = 'Demjimêra havînî';
$labels['htmleditor'] = 'Peyameke HTML biafirîne';
$labels['htmlsignature'] = 'Şanenava HTML';
$labels['previewpane'] = 'Panela berê nîşan bide';
$labels['askuser'] = 'bipirse min';
$labels['skipdeleted'] = 'Peyamên jêbirî nîşan nede';
$labels['always'] = 'Her tim';
$labels['autosavedraft'] = 'Xweber hilîne';
$labels['everynminutes'] = 'Her $n saniye(yan)';
$labels['never'] = 'qet';
$labels['immediately'] = 'a niha';
$labels['allmessages'] = 'hemû peyam';
$labels['folder'] = 'Peldank';
$labels['folders'] = 'Peldank';
$labels['foldername'] = 'Navê peldankê';
$labels['subscribed'] = 'Ni şanenav';
$labels['messagecount'] = 'Peyam';
$labels['create'] = 'Biafirîne';
$labels['createfolder'] = 'Peldankeke nû biafirîne';
$labels['managefolders'] = 'Rêveberiya peldankan';
$labels['sortby'] = 'Şêweyê rêzkirinê';
$labels['sortasc'] = 'Wekî zêde dibe';
$labels['sortdesc'] = 'Wekî kêm dibe';
$labels['license'] = 'Lîsans';
localization/ku/messages.inc000064400000014117151727150540012170 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Çewtiyek pêk hat!';
$messages['loginfailed']  = 'Têketin têk çû';
$messages['cookiesdisabled'] = 'Geroka te destûrê nade çerezan';
$messages['sessionerror'] = 'Danişîna te çewt e an jî bi dawî bûye';
$messages['storageerror'] = 'Girêdana pêşkêşkara IMAP têk çû';
$messages['servererror'] = 'Çewtiya pêşkêş!';
$messages['servererrormsg'] = 'Çewtiya Pêşkêş: $msg';
$messages['connerror'] = 'Çewtiya Girêdanê (Negihîşte pêşkêş)!';
$messages['dberror'] = 'Çewtiya Danegehê!';
$messages['requesttimedout'] = 'Dema xwestinê hat derbaskirin';
$messages['errorreadonly'] = 'Ev kar pêk nehat. Dosya tenê tê xwendin.';
$messages['errornoperm'] = 'Ev kar pêk nehat. Destûr nehat dayîn.';
$messages['erroroverquota'] = 'Ev kara pêk nehat. Di dîskê de cihê vala nîn e.';
$messages['erroroverquotadelete'] = 'Di dîskê de cihê vala nîn e. SHIFT+DELê bi kar bîne da ku peyamekê jê bibî.';
$messages['invalidrequest'] = 'Dawxaza nederbasdar! Tu dane nehat tomarkirin.';
$messages['invalidhost'] = 'Navê pêşkêş ê nederbasdar.';
$messages['nomessagesfound'] = 'Di vê peyamdankê de tu peyam nehat dîtin';
$messages['mailboxempty'] = 'Cihê peyamên hatî vala ye';
$messages['nomessages'] = 'Peyam nîn in';
$messages['refreshing'] = 'Tê tezekirin...';
$messages['loading'] = 'Tê barkirin...';
$messages['uploading'] = 'Pel tê barkirin...';
$messages['uploadingmany'] = 'Pel tên barkirin...';
$messages['loadingdata'] = 'Dane tên barkirin...';
$messages['checkingmail'] = 'Li peyamên nû vedinihêre...';
$messages['sendingmessage'] = 'Peyamê dişîne...';
$messages['messagesent'] = 'Peyam hate şandin';
$messages['savingmessage'] = 'Peyam tê hilanîn...';
$messages['messagesaved'] = 'Peyam di Hilanînî de hat hilanîn';
$messages['successfullysaved'] = 'Hat hilanîn';
$messages['savingresponse'] = 'Bersiva nivîsê tê tomarkirin...';
$messages['deleteresponseconfirm'] = 'Tu bi rastî dixwazî vê nivîsa bersivê jê bibî?';
$messages['addedsuccessfully'] = 'Têkilî li navnîşanan hat zêdekirin';
$messages['contactnameexists'] = 'Jixwe kesekî bi heman navî heye.';
$messages['blockedimages'] = 'Ji bo ewlekariya te wêneyên cuda yên vê peyamê hatin astenkirin.';
$messages['encryptedmessage'] = 'Ev peyamenek şîfrekirî ye, bibore, nayê vekirin!';
$messages['nocontactsfound'] = 'Tu têkiliyek nehat dîtin';
$messages['contactnotfound'] = 'Têkiliya dihat xwestin nehat dîtin';
$messages['sendingfailed'] = 'Peyam nehat şandin';
$messages['senttooquickly'] = 'Ji kerema xwe, bo $ saniyek saniye(yan) bisekine beriya şandina vê peyamê.';
$messages['errorsavingsent'] = 'Dema ku peyama şandî hat tomarkirin çewtiyek pêk hat.';
$messages['errorsaving'] = 'Wextê tomarkirinê çewtiyek çêbû. ';
$messages['errormoving'] = 'Ciyê peyamê nehat guherandin';
$messages['errorcopying'] = 'Peyam(gel) nehat(in) hemankirin. ';
$messages['errordeleting'] = 'Peyam nehat jêbirin';
$messages['deletecontactconfirm']  = 'Ji dil dixwazî têkiliya/ên nîşankirî jê bibî?';
$messages['deletemessagesconfirm'] = 'Ji dil dixwazî peya/ên nîşankirî jê bibî?';
$messages['deletefolderconfirm']  = 'Ji dil dixwazî vê peldankê jê bibî?';
$messages['purgefolderconfirm']  = 'Ji dil dixwazî hemû peyamên di vê peldankê de jê bibî?';
$messages['groupdeleting'] = 'Kom tê rakirin...';
$messages['folderdeleting'] = 'Dosye tê rakirin...';
$messages['foldermoving'] = 'Dosye tê kêşandin...';
$messages['formincomplete'] = 'Form bi temamî nehat tijekirin';
$messages['noemailwarning'] = 'Tika ye, navnîşaneke rast têkevê';
$messages['nonamewarning']  = 'Tika ye, navekî têkevê';
$messages['nopagesizewarning'] = 'Tika ye, mezinahiyeke pelê têkevê';
$messages['norecipientwarning'] = 'Tika ye, herî kêm standyarekê têkevê';
$messages['nosubjectwarning']  = 'Qada "Mijar"ê vala ye. Dixwazî niha tiştekî lê binivîsî?';
$messages['nobodywarning'] = 'Peyamê bê nivîs bişeyînî?';
$messages['nosearchname'] = 'Tika ye, nav an jî navnîşaneke têkiliyê têkevê';
$messages['searchsuccessful'] = '$nr peyam hat(in) dîtin';
$messages['searchnomatch'] = 'Di lêgerînê de tu tişt nehat dîtin';
$messages['searching'] = 'Digere...';
$messages['checking'] = 'Vedinihêre...';
$messages['stillsearching'] = 'Hin lê digere...';
$messages['nospellerrors'] = 'Tu şaşiyeke rastnivîsê nehat dîtin';
$messages['folderdeleted'] = 'Peldank hat jêbirin';
$messages['deletedsuccessfully'] = 'Hat jêbirin';
$messages['converting'] = 'Formatkirin ji peyamê tê birin...';
$messages['messageopenerror'] = 'Peyam ji pêşkêşkar nehat barkirin';
$messages['fileuploaderror'] = 'Barkirina pelê têk çû';
$messages['filesizeerror'] = 'Pel pir mezin e. Herî zêde divê $size be';
$messages['sourceisreadonly'] = 'Çavkaniya vê navnîşanê tenê-xwendin e';
$messages['errorsavingcontact'] = 'Navnîşana têkiliyê nehat barkirin';
$messages['movingmessage'] = 'Ciyê peyamê tê guhertin...';
$messages['copyingmessage'] = 'Peyam(gel) tên kopîkirin... ';
$messages['deletingmessage'] = 'Peyam(gel) tê jêbirin...';
$messages['receiptsent'] = 'Rapora şandina serkeftî';
$messages['errorsendingreceipt'] = 'Rapor nehat şandin';
$messages['nodeletelastidentity'] = 'Nikarî vê nasnameyê jê bibî. Ew ya dawî ye.';
$messages['groupcreated'] = 'Kom bi serkeftin hat afirandin.';
localization/fa_IR/timezones.inc000064400000001524151727150540012735 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'آفریقا';
localization/fa_IR/labels.inc000064400000076063151727150540012174 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'به $product خوش آمدید';
$labels['username'] = 'نام‌کاربری';
$labels['password'] = 'گذرواژه';
$labels['server'] = 'سرور';
$labels['login'] = 'ورود';
$labels['menu'] = 'فهرست';
$labels['logout'] = 'خروج';
$labels['mail'] = 'پست';
$labels['settings'] = 'تنظیمات';
$labels['addressbook'] = 'دفتر نشانی';
$labels['inbox'] = 'صندوق ورودی';
$labels['drafts'] = 'پیش‌نویس‌ها';
$labels['sent'] = 'ارسال شده';
$labels['trash'] = 'زباله‌دان';
$labels['junk'] = 'بنجل';
$labels['show_real_foldernames'] = 'نمایش نام‌های واقعی برای پوشه‌های ویژه';
$labels['subject'] = 'موضوع';
$labels['from'] = 'از';
$labels['sender'] = 'فرستنده';
$labels['to'] = 'به';
$labels['cc'] = 'رونوشت';
$labels['bcc'] = 'رونوشت مخفی';
$labels['replyto'] = 'پاسخ-به';
$labels['followupto'] = 'پیگیری-در';
$labels['date'] = 'تاریخ';
$labels['size'] = 'اندازه';
$labels['priority'] = 'اولویت';
$labels['organization'] = 'سازمان';
$labels['readstatus'] = 'وضعیت خوانده شدن';
$labels['listoptions'] = 'فهرست گزینه‌ها...';
$labels['listoptionstitle'] = 'گزینه‌های لیست';
$labels['mailboxlist'] = 'پوشه‌ها';
$labels['messagesfromto'] = 'پیغام‌های $from تا $to از $count';
$labels['threadsfromto'] = 'رشته‌های $from تا $to از $count';
$labels['messagenrof'] = 'پیغام $nr از $count';
$labels['fromtoshort'] = '$from - $to از $count';
$labels['copy'] = 'رونوشت';
$labels['move'] = 'انتقال';
$labels['moveto'] = 'انتقال به...';
$labels['copyto'] = 'رونوشت به...';
$labels['download'] = 'بارگیری';
$labels['open'] = 'باز کردن';
$labels['showattachment'] = 'نمایش';
$labels['showanyway'] = 'نمایش آن در هر صورت';
$labels['filename'] = 'نام پرونده';
$labels['filesize'] = 'اندازه پرونده';
$labels['addtoaddressbook'] = 'افزودن به دفتر نشانی‌ها';
$labels['sun'] = 'یک‌شنبه';
$labels['mon'] = 'دوشنبه';
$labels['tue'] = 'سه‌شنبه';
$labels['wed'] = 'چهارشنبه';
$labels['thu'] = 'پنج‌شنبه';
$labels['fri'] = 'جمعه';
$labels['sat'] = 'شنبه';
$labels['sunday'] = 'یک‌شنبه';
$labels['monday'] = 'دوشنبه';
$labels['tuesday'] = 'سه‌شنبه';
$labels['wednesday'] = 'چهارشنبه';
$labels['thursday'] = 'پنج‌شنبه';
$labels['friday'] = 'جمعه';
$labels['saturday'] = 'شنبه';
$labels['jan'] = 'ژان';
$labels['feb'] = 'فور';
$labels['mar'] = 'مار';
$labels['apr'] = 'آور';
$labels['may'] = 'مه';
$labels['jun'] = 'ژون';
$labels['jul'] = 'ژوی';
$labels['aug'] = 'اوت';
$labels['sep'] = 'سپت';
$labels['oct'] = 'اُکت';
$labels['nov'] = 'نوا';
$labels['dec'] = 'دسا';
$labels['longjan'] = 'ژانویه';
$labels['longfeb'] = 'فوریه';
$labels['longmar'] = 'مارس';
$labels['longapr'] = 'آوریل';
$labels['longmay'] = 'می';
$labels['longjun'] = 'ژوئن';
$labels['longjul'] = 'جولای';
$labels['longaug'] = 'آگوست';
$labels['longsep'] = 'سپتامبر';
$labels['longoct'] = 'اکتبر';
$labels['longnov'] = 'نوامبر';
$labels['longdec'] = 'دسامبر';
$labels['today'] = 'امروز';
$labels['refresh'] = 'نوسازی';
$labels['checkmail'] = 'بررسی برای پیام‌های جدید';
$labels['compose'] = 'نوشتن پیام';
$labels['writenewmessage'] = 'ایجاد پیام جدید';
$labels['reply'] = 'پاسخ';
$labels['replytomessage'] = 'پاسخ به فرستنده';
$labels['replytoallmessage'] = 'پاسخ به فهرست یا به فرستنده و تمام گیرنده‌ها';
$labels['replyall'] = 'پاسخ به همه';
$labels['replylist'] = 'پاسخ به فهرست';
$labels['forward'] = 'ارجاع';
$labels['forwardinline'] = 'ارجاع خطی';
$labels['forwardattachment'] = 'ارجاع به صورت پیوست';
$labels['forwardmessage'] = 'ارجاع پیام';
$labels['bouncemsg'] = 'ارسال مجدد (پرش)';
$labels['bounce'] = 'ارسال مجدد';
$labels['deletemessage'] = 'حذف پیغام';
$labels['movemessagetotrash'] = 'انتقال پیغام به زباله‌دان';
$labels['printmessage'] = 'چاپ این پیغام';
$labels['previousmessage'] = 'نمایش پیغام قبلی';
$labels['firstmessage'] = 'نمایش پیغام اول';
$labels['nextmessage'] = 'نمایش پیغام بعدی';
$labels['lastmessage'] = 'نمایش پیغام آخر';
$labels['backtolist'] = 'بازگشت به فهرست پیغام';
$labels['viewsource'] = 'نمایش منبع';
$labels['mark'] = 'نشانه‌گذاری';
$labels['markmessages'] = 'نشانه‌گذاری پیغام‌ها';
$labels['markread'] = 'به عنوان خوانده‌شده';
$labels['markunread'] = 'به عنوان خوانده‌نشده';
$labels['markflagged'] = 'به عنوان پرچم‌دار';
$labels['markunflagged'] = 'به عنوان بدون پرچم';
$labels['moreactions'] = 'کارهای دیگر...';
$labels['markallread'] = 'علامت‌گذاری همه به عنوان خوانده‌شده';
$labels['folders-cur'] = 'فقط پوشه‌های انتخاب‌شده';
$labels['folders-sub'] = 'پوشه‌ی انتخاب‌شده و زیرپوشه‌های‌ آن';
$labels['folders-all'] = 'همه پوشه‌ها';
$labels['more'] = 'بيشتر';
$labels['back'] = 'بازگشت';
$labels['options'] = 'گزینه‌ها';
$labels['composeoptions'] = 'تنظیمات نوشتن';
$labels['optionsandattachments'] = 'گزینه‌ها و پیوست‌ها';
$labels['actions'] = 'اقدام‌ها';
$labels['first'] = 'اول';
$labels['last'] = 'آخر';
$labels['previous'] = 'قبل';
$labels['next'] = 'بعد';
$labels['select'] = 'انتخاب';
$labels['selection'] = 'انتخاب';
$labels['all'] = 'همه';
$labels['none'] = 'هیچ‌کدام';
$labels['currpage'] = 'صفحه جاری';
$labels['isread'] = 'خوانده شده';
$labels['unread'] = 'خوانده‌نشده';
$labels['flagged'] = 'پرچم‌دار';
$labels['unflagged'] = 'بدون پرچم';
$labels['unanswered'] = 'پاسخ داده نشده';
$labels['withattachment'] = 'با پیوست';
$labels['deleted'] = 'حذف شده';
$labels['undeleted'] = 'حذف نشده';
$labels['replied'] = 'پاسخ داده شده';
$labels['forwarded'] = 'ارجاع داده شده';
$labels['invert'] = 'وارونه';
$labels['filter'] = 'صافی';
$labels['list'] = 'فهرست';
$labels['threads'] = 'رشته‌ها';
$labels['expand-all'] = 'باز کردن همه';
$labels['expand-unread'] = 'بازکردن خوانده نشده‌ها';
$labels['collapse-all'] = 'جمع کردن همه';
$labels['threaded'] = 'رشته شده';
$labels['autoexpand_threads'] = 'باز کردن رشته‌های پیام';
$labels['do_expand'] = 'همه رشته‌ها';
$labels['expand_only_unread'] = 'فقط با پیام‌های خوانده نشده';
$labels['fromto'] = 'از/به';
$labels['flag'] = 'پرچم';
$labels['attachment'] = 'پیوست';
$labels['nonesort'] = 'هیچ‌کدام';
$labels['sentdate'] = 'تاریخ ارسال';
$labels['arrival'] = 'تاریخ ورود';
$labels['asc'] = 'صعودی';
$labels['desc'] = 'نزولی';
$labels['listcolumns'] = 'ستون‌های فهرست';
$labels['listsorting'] = 'ستون مرتب‌سازی';
$labels['listorder'] = 'ترتیب مرتب‌سازی';
$labels['listmode'] = 'نوع مشاهده فهرست';
$labels['lmode'] = 'حالت لیست';
$labels['layout'] = 'چیدمان';
$labels['layoutwidescreen'] = 'عریض';
$labels['layoutdesktop'] = 'رومیزی';
$labels['layoutlist'] = 'لیست';
$labels['layoutwidescreendesc'] = 'صفحه‌ی عریض (نمایش ۳ ستونی)';
$labels['layoutdesktopdesc'] = 'رومیزی (لیست عریض و پیش‌نمایش ایمیل در زیر)';
$labels['layoutlistdesc'] = 'لیست (بدون پیش‌نمایش ایمیل)';
$labels['folderactions'] = 'اعمال پوشه...';
$labels['compact'] = 'فشرده';
$labels['empty'] = 'خالی';
$labels['importmessages'] = 'وارد کردن پیام‌ها';
$labels['quota'] = 'فضای استفاده شده';
$labels['unknown'] = 'ناشناخته';
$labels['unlimited'] = 'نامحدود';
$labels['quotatype'] = 'نوع سهمیه';
$labels['quotatotal'] = 'محدود کردن';
$labels['quotaused'] = 'استفاده شده';
$labels['quotastorage'] = 'فضای دیسک';
$labels['quotamessage'] = 'تعداد پیغام‌ها';
$labels['shortheaderdate'] = 'در $date';
$labels['shortheaderto'] = 'به $to در $date';
$labels['shortheaderfrom'] = 'از $from در $date';
$labels['quicksearch'] = 'جستجوی سریع';
$labels['searchplaceholder'] = 'جستجو...';
$labels['resetsearch'] = 'جستجوی دوباره';
$labels['searchmod'] = 'اصلاحات جستجو';
$labels['msgtext'] = 'کل پیام';
$labels['body'] = 'بدنه';
$labels['type'] = 'نوع';
$labels['namex'] = 'نام';
$labels['searchscope'] = 'حوزه';
$labels['currentfolder'] = 'پوشه جاری';
$labels['subfolders'] = 'این و زیرپوشه‌ها';
$labels['allfolders'] = 'همه پوشه‌ها';
$labels['searchinterval-1W'] = 'قدیمی‌تر از یک هفته';
$labels['searchinterval-1M'] = 'قدیمی‌تر از یک ماه';
$labels['searchinterval-1Y'] = 'قدیمی‌تر از یک سال';
$labels['searchinterval1W'] = 'جدیدتر از یک هفته';
$labels['searchinterval1M'] = 'جدیدتر از یک ماه';
$labels['searchinterval1Y'] = 'جدیدتر از یک سال';
$labels['openinextwin'] = 'باز کردن در پنجره‌ی جدید';
$labels['emlsave'] = 'بارگیری (.eml)';
$labels['changeformattext'] = 'نمایش در قالب متنی';
$labels['changeformathtml'] = 'نمایش در قالب اچ‌تی‌ام‌ال';
$labels['editasnew'] = 'ویرایش به عنوان جدید';
$labels['send'] = 'ارسال';
$labels['sendmessage'] = 'ارسال پیغام';
$labels['savemessage'] = 'ذخیره پیش‌نویس';
$labels['addattachment'] = 'پیوست کردن یک پرونده';
$labels['charset'] = 'مجموعه‌نمایه';
$labels['editortype'] = 'نوع ویرایش‌گر';
$labels['returnreceipt'] = 'رسید دریافت';
$labels['dsn'] = 'اعلام وضعیت دریافت';
$labels['mailreplyintro'] = 'در $date، $sender نوشته است:';
$labels['originalmessage'] = 'پیام اصلی';
$labels['selectimage'] = 'انتخاب تصویر';
$labels['addimage'] = 'افزودن تصویر';
$labels['selectmedia'] = 'انتخاب فیلم';
$labels['addmedia'] = 'افزودن رسانه';
$labels['encrypt'] = 'رمزگذاری';
$labels['encryptmessage'] = 'رمزگذاری پیغام';
$labels['keyid'] = 'کلید شناسه';
$labels['keylength'] = 'بیت‌ها';
$labels['keyexpired'] = 'منقضی شده';
$labels['insert'] = 'جاگذارى';
$labels['recipient'] = 'گیرنده';
$labels['editidents'] = 'ویرایش شناسه‌ها';
$labels['spellcheck'] = 'املاء';
$labels['checkspelling'] = 'بررسی املایی';
$labels['resumeediting'] = 'ادامه‌ی ویرایش';
$labels['revertto'] = 'برگرداندن به';
$labels['restore'] = 'بازیابی';
$labels['restoremessage'] = 'بازیابی پیام؟';
$labels['ignore'] = 'نادیده گرفتن';
$labels['responses'] = 'پاسخ‌ها';
$labels['insertresponse'] = 'درج پاسخ';
$labels['manageresponses'] = 'مدیریت پاسخ‌ها';
$labels['addresponse'] = 'افزودن پاسخ';
$labels['editresponse'] = 'ویرایش پاسخ';
$labels['editresponses'] = 'ویرایش پاسخ‌ها';
$labels['responsename'] = 'نام';
$labels['responsetext'] = 'متن پاسخ';
$labels['attach'] = 'پیوست کردن';
$labels['attachments'] = 'پیوست‌ها';
$labels['upload'] = 'بارگذاری';
$labels['uploadprogress'] = '$percent ($current از $total)';
$labels['close'] = 'بستن';
$labels['messageoptions'] = 'گزینه‌های پیام...';
$labels['low'] = 'کم';
$labels['lowest'] = 'کم‌ترین';
$labels['normal'] = 'معمولی';
$labels['high'] = 'زیاد';
$labels['highest'] = 'بیش‌ترین';
$labels['nosubject'] = '(بدون موضوع)';
$labels['showimages'] = 'نمایش عکس‌ها';
$labels['allow'] = 'اجازه دادن';
$labels['alwaysshow'] = 'همیشه عکس‌های دریافتی از $sender را نمایش داده شود';
$labels['isdraft'] = 'این یک پیغام پیش‌نویس است.';
$labels['andnmore'] = '$nr بیشتر...';
$labels['details'] = 'جزییات';
$labels['headers'] = 'سربرگ‌ها';
$labels['togglemoreheaders'] = 'نمایش سربرگ‌های بیشتر پیام';
$labels['togglefullheaders'] = 'تعویض سربرگ‌های پیام خام';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'متن ساده';
$labels['savesentmessagein'] = 'ذخیره پیام ارسالی در';
$labels['dontsave'] = 'ذخیره نکن';
$labels['maxuploadsize'] = 'حجم پرونده حداکثر تا میزان $size می‌باشد';
$labels['addcc'] = 'افزودن رونوشت';
$labels['addbcc'] = 'افزودن رونوشت مخفی';
$labels['addreplyto'] = 'افزودن پاسخ-به';
$labels['addfollowupto'] = 'افزودن پیگیری-به';
$labels['mdnrequest'] = 'فرستنده‌ی این پیام خواسته است که وقتی شما این پیام را می‌خوانید، آگاه شود. آیا مایلید فرستنده را آگاه سازید؟';
$labels['receiptread'] = 'رسید دریافت (خواندن)';
$labels['yourmessage'] = 'این یک رسید دریافت برای پیام شماست';
$labels['receiptnote'] = 'تذکر: این رسید فقط تصدیق می‌کند که پیام، روی رایانه گیرنده نمایش داده شده است. هیچ تضمینی نیست که گیرنده، محتوای پیام را خوانده یا فهمیده باشد.';
$labels['zoomin'] = 'بزرگنمایی';
$labels['zoomout'] = 'کوچکنمایی';
$labels['name'] = 'نمایش نام';
$labels['firstname'] = 'نام';
$labels['surname'] = 'نام خانوادگی';
$labels['middlename'] = 'نام وسط';
$labels['nameprefix'] = 'پیشوند';
$labels['namesuffix'] = 'پسوند';
$labels['nickname'] = 'نام مستعار';
$labels['jobtitle'] = 'عنوان شغل';
$labels['department'] = 'بخش';
$labels['gender'] = 'جنسیت';
$labels['maidenname'] = 'نام خانوادگی زن قبل از ازدواج';
$labels['email'] = 'پست‌الکترونیک';
$labels['phone'] = 'تلفن';
$labels['address'] = 'نشانی';
$labels['street'] = 'خیابان';
$labels['locality'] = 'شهر';
$labels['zipcode'] = 'کدپستی';
$labels['region'] = 'ایالت/استان';
$labels['country'] = 'کشور';
$labels['birthday'] = 'زادروز';
$labels['anniversary'] = 'سالگرد';
$labels['website'] = 'وب‌سایت';
$labels['instantmessenger'] = 'پیام‌رسان';
$labels['notes'] = 'یادداشت‌ها';
$labels['male'] = 'مرد';
$labels['female'] = 'زن';
$labels['manager'] = 'مدیر';
$labels['assistant'] = 'دستیار';
$labels['spouse'] = 'همسر';
$labels['allfields'] = 'همه زمینه‌ها';
$labels['search'] = 'جستجو';
$labels['searchresult'] = 'نتیجه جستجو';
$labels['advsearch'] = 'جستجوی پیشرفته';
$labels['advanced'] = 'پیشرفته';
$labels['other'] = 'سایر';
$labels['qrcode'] = 'کد کیوآر';
$labels['typehome'] = 'خانه';
$labels['typework'] = 'کار';
$labels['typeother'] = 'سایر';
$labels['typemobile'] = 'تلفن همراه';
$labels['typemain'] = 'اصلی';
$labels['typehomefax'] = 'فاکس خانگی';
$labels['typeworkfax'] = 'فاکس کاری';
$labels['typecar'] = 'اتومبیل';
$labels['typepager'] = 'پیجر';
$labels['typevideo'] = 'ویدئو';
$labels['typeassistant'] = 'دستیار';
$labels['typehomepage'] = 'صفحه خانگی';
$labels['typeblog'] = 'بلاگ';
$labels['typeprofile'] = 'نمایه';
$labels['addfield'] = 'افزودن زمینه...';
$labels['addcontact'] = 'افزودن تماس';
$labels['editcontact'] = 'ویرایش تماس';
$labels['contacts'] = 'تماس‌ها';
$labels['contactproperties'] = 'خصوصیات تماس';
$labels['personalinfo'] = 'اطلاعات شخصی';
$labels['personal'] = 'شخصی';
$labels['contactphoto'] = 'تصویر تماس';
$labels['edit'] = 'ویرایش';
$labels['cancel'] = 'لغو';
$labels['save'] = 'ذخیره';
$labels['delete'] = 'حذف';
$labels['discard'] = 'دور انداختن';
$labels['continue'] = 'ادامه';
$labels['ok'] = 'بسیارخوب';
$labels['rename'] = 'تغییر نام';
$labels['addphoto'] = 'افزودن';
$labels['replacephoto'] = 'جایگزینی';
$labels['uploadphoto'] = 'بارگذاری تصویر';
$labels['browse'] = 'مرور';
$labels['deletecontact'] = 'حذف تماس‌های انتخاب شده';
$labels['composeto'] = 'نوشتن پست به';
$labels['contactsfromto'] = 'تماس‌های $from تا $to از $count';
$labels['print'] = 'چاپ';
$labels['export'] = 'صدور';
$labels['exportall'] = 'خارج کردن همه';
$labels['exportsel'] = 'خارج کردن انتخاب شده‌ها';
$labels['exportvcards'] = 'صدور اطلاعات تماس‌ها با فرمت vCard';
$labels['newgroup'] = 'ایجاد گروه جدید';
$labels['addgroup'] = 'افزودن گروه';
$labels['grouprename'] = 'تغییر نام گروه';
$labels['groupdelete'] = 'حذف گروه';
$labels['groupremoveselected'] = 'حذف نشانی‌های انتخاب شده از گروه';
$labels['previouspage'] = 'نمایش صفحه قبلی';
$labels['firstpage'] = 'نمایش صفحه اول';
$labels['nextpage'] = 'نمایش صفحه بعدی';
$labels['lastpage'] = 'نمایش صفحه آخر';
$labels['group'] = 'گروه';
$labels['groups'] = 'گروه‌ها';
$labels['listgroup'] = 'فهرست اعضاء گروه';
$labels['personaladrbook'] = 'نشانی‌های شخصی';
$labels['searchsave'] = 'ذخیره جستجو';
$labels['searchdelete'] = 'حذف جستجو';
$labels['import'] = 'وارد کردن';
$labels['importcontacts'] = 'وارد کردن تماس‌ها';
$labels['importtarget'] = 'افزودن تماس‌ها به';
$labels['importreplace'] = 'جایگیزینی کامل دفتر نشانی';
$labels['importgroups'] = 'وارد کردن وظایف گروه';
$labels['importgroupsall'] = 'همه (ایجاد گروه‌ها در صورت نیاز)';
$labels['importgroupsexisting'] = 'فقط برای گروه‌های موجود';
$labels['done'] = 'انجام شد';
$labels['settingsfor'] = 'تنظیمات برای';
$labels['about'] = 'درباره';
$labels['preferences'] = 'ترجیحات';
$labels['userpreferences'] = 'ترجیحات کاربر';
$labels['editpreferences'] = 'ویرایش ترجیحات کاربر';
$labels['identities'] = 'شناسه‌ها';
$labels['addidentity'] = 'افزودن هویت';
$labels['editidentity'] = 'ویرایش شناسه';
$labels['identityencryption'] = 'رمزگذاری';
$labels['preferhtml'] = 'HTML نمایش';
$labels['defaultcharset'] = 'مجموعه نمایه پیش‌فرض';
$labels['htmlmessage'] = 'پیغام HTML';
$labels['messagepart'] = 'قسمت';
$labels['digitalsig'] = 'امضای دیجیتال';
$labels['dateformat'] = 'قالب تاریخ';
$labels['timeformat'] = 'قالب زمان';
$labels['prettydate'] = 'تاریخ‌های زیبا';
$labels['setdefault'] = 'پیش‌فرض کن';
$labels['autodetect'] = 'خودکار';
$labels['language'] = 'زبان';
$labels['timezone'] = 'محدوده‌ی زمانی';
$labels['pagesize'] = 'سطر در صفحه';
$labels['signature'] = 'امضاء';
$labels['dstactive'] = 'ساعت تابستانی';
$labels['showinextwin'] = 'نمایش پیام در پنجره جدید';
$labels['composeextwin'] = 'نوشتن پیام  در پنجره جدید';
$labels['htmleditor'] = 'نوشتن پیام‌های HTML';
$labels['htmlonreply'] = 'فقط در پاسخ به پیام HTML';
$labels['htmlonreplyandforward'] = 'در بازگردانی یا پاسخ به پیام‌های HTML';
$labels['htmlsignature'] = 'امضای HTML';
$labels['showemail'] = 'نمایش نشانی رایانامه با نام نمایشی';
$labels['previewpane'] = 'نمایش قاب پیش‌نمایش';
$labels['skin'] = 'پوسته ظاهری';
$labels['logoutclear'] = 'تمیز کردن زباله دان هنگام برون‌رفت';
$labels['logoutcompact'] = 'فشرده‌سازی صندوق در هنگام خروچ';
$labels['uisettings'] = 'محیط کاربری';
$labels['serversettings'] = 'تنظیمات سرور';
$labels['mailboxview'] = 'نمای صندوق پستی';
$labels['mdnrequests'] = 'تاییدهای فرستنده';
$labels['askuser'] = 'پرسش از کاربر';
$labels['autosend'] = 'ارسال رسید';
$labels['autosendknown'] = 'ارسال رسید به تماس‌های من، در غیر این صورت سوال کن';
$labels['autosendknownignore'] = 'ارسال رسید به تماس‌های من، درغیر این صورت چشم‌پوشی کن';
$labels['readwhendeleted'] = 'در هنگام پاک کردن، پیام را به عنوان خوانده شده علامت بزن';
$labels['flagfordeletion'] = 'پیام را به جای پاک کردن، با پرچم نشانه‌گذاری کن';
$labels['skipdeleted'] = 'پیام‌های حذف شده را نمایش نده';
$labels['deletealways'] = 'اگر انتقال پیام به زباله‌دان ناموفق بود، آن‌ها را حذف کن';
$labels['deletejunk'] = 'حذف مستقیم پیام‌های زباله';
$labels['showremoteimages'] = 'تصاویر پیوند شده را نمایش بده';
$labels['fromknownsenders'] = 'از فرستنده شناس';
$labels['always'] = 'همواره';
$labels['showinlineimages'] = 'نمایش عکس‌های پیوست شده در پایین پیام';
$labels['autosavedraft'] = 'ذخیره‌ی خودکار پیش‌نویس';
$labels['everynminutes'] = 'در هر $n دقیقه';
$labels['refreshinterval'] = 'تازه کردن (بررسی برای پیام‌های جدید، مثلا)';
$labels['never'] = 'هرگز';
$labels['immediately'] = 'بلافاصله';
$labels['messagesdisplaying'] = 'نمای پیام‌ها';
$labels['messagescomposition'] = 'نوشتن پیام‌ها';
$labels['mimeparamfolding'] = 'عناوین پیوستی';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (سایر)';
$labels['force7bit'] = 'از MIME encoding برای کارکترهای ۸-بیتی استفاده کن';
$labels['advancedoptions'] = 'گزینه‌های پیشرفته';
$labels['focusonnewmessage'] = 'مشخص نمودن پیام جدید';
$labels['checkallfolders'] = 'همه پوشه‌ها را برای مشاهده پیام‌های جدید بررسی کن';
$labels['defaultfont'] = 'فونت پیش فرض برای پیام HTML';
$labels['mainoptions'] = 'گزینه‌های اصلی';
$labels['browseroptions'] = 'گزینه‌‌های مرورگر';
$labels['section'] = 'بخش';
$labels['maintenance'] = 'نگهداشت';
$labels['newmessage'] = 'پیام جدید';
$labels['signatureoptions'] = 'گزینه‌های امضاء';
$labels['whenreplying'] = 'هنگام پاسخ';
$labels['replyempty'] = 'نقل قول نکردن پیام اصلی';
$labels['replytopposting'] = 'شروع پیام جدید بالای اصلی';
$labels['replybottomposting'] = 'شروع پیام جدید پایین اصلی';
$labels['replyremovesignature'] = 'هنگام پاسخ امضاء اصلی را از پیام پاک کن';
$labels['autoaddsignature'] = 'اضافه کردن خودکار امضاء';
$labels['newmessageonly'] = 'فقط پیام جدید';
$labels['replyandforwardonly'] = 'فقط پاسخ‌ها و ارجاع‌ها';
$labels['insertsignature'] = 'درج امضاء';
$labels['afternseconds'] = 'بعد از $s ثانیه';
$labels['reqmdn'] = 'درخواست همیشگی رسید برگشت';
$labels['reqdsn'] = 'درخواست همیشگی تذکر وضعیت تحویل';
$labels['replysamefolder'] = 'پاسخ‌ها را در پوشه‌ای پیام‌هایی که باید پاسخ داده شود گرفته بده.';
$labels['defaultabook'] = 'دفترچه نشانی پیش‌فرض';
$labels['autocompletesingle'] = 'رد کردن نشانی‌های رایانامه دیگر در تکمیل خودکار';
$labels['listnamedisplay'] = 'فهرست تماس‌ها به عنوان';
$labels['spellcheckbeforesend'] = 'بررسی املایی قبل از ارسال پیام';
$labels['spellcheckoptions'] = 'گزینه‌های بررسی املاء';
$labels['spellcheckignoresyms'] = 'نادیده گرفتن کلمات دارای نماد';
$labels['spellcheckignorenums'] = 'نادیده گرفتن کلمات دارای عدد';
$labels['spellcheckignorecaps'] = 'نادیده گرفتن کلمات با حروف بزرگ';
$labels['addtodict'] = 'اضافه کردن به واژه‌نامه';
$labels['mailtoprotohandler'] = 'ثبت نگه‌دارنده پروتوکل برای mailto: پیوندها';
$labels['standardwindows'] = 'بکار بردن پاپ‌آپ‌ها به صورت پنجره‌ی استاندارد';
$labels['forwardmode'] = 'بازگردانی پیام';
$labels['inline'] = 'خطی';
$labels['asattachment'] = 'به عنوان پیوست';
$labels['replyallmode'] = 'عمل پیش‌فرض برای دکمه [پاسخ به همه]';
$labels['replyalldefault'] = 'پاسخ به همه';
$labels['replyalllist'] = 'پاسخ به فقط لیست پستی (در صورت یافتن)';
$labels['allmessages'] = 'همه پیام ها';
$labels['folder'] = 'پوشه';
$labels['folders'] = 'پوشه‌ها';
$labels['foldername'] = 'نام پوشه';
$labels['subscribed'] = 'مشترک شد';
$labels['messagecount'] = 'پیام‌ها';
$labels['create'] = 'ایجاد';
$labels['createfolder'] = 'ایجاد پوشه‌ی جدید';
$labels['managefolders'] = 'مدیریت پوشه‌ها';
$labels['specialfolders'] = 'پوشه‌های ویژه';
$labels['properties'] = 'خصوصیات';
$labels['folderproperties'] = 'خصوصیات پوشه';
$labels['parentfolder'] = 'پوشه والد';
$labels['location'] = 'موقعیت';
$labels['info'] = 'اطلاعات';
$labels['getfoldersize'] = 'برای فهمیدن حجم پوشه کلیک کنید';
$labels['changesubscription'] = 'برای تغییر اشتراک کلیک کنید';
$labels['foldertype'] = 'نوع پوشه';
$labels['personalfolder'] = 'پوشه خصوصی';
$labels['otherfolder'] = 'پوشه کاربران دیگر';
$labels['sharedfolder'] = 'پوشه عمومی';
$labels['findfolders'] = 'پیدا کردن پوشه';
$labels['namespace.personal'] = 'شخصی';
$labels['dualusemail'] = 'پیغام‌ها';
$labels['dualusefolder'] = 'پوشه‌ها';
$labels['encryption'] = 'رمزگذاری';
$labels['sortby'] = 'مرتب‌سازی بر اساس';
$labels['sortasc'] = 'مرتب‌سازی صعودی';
$labels['sortdesc'] = 'مرتب‌سازی نزولی';
$labels['undo'] = 'برگردان';
$labels['installedplugins'] = 'افزونه‌های نصب شده';
$labels['plugin'] = 'افزونه';
$labels['version'] = 'نسخه';
$labels['source'] = 'منبع';
$labels['license'] = 'گواهینامه';
$labels['support'] = 'پشتیبانی';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'یونیکد';
$labels['english'] = 'انگلیسی';
$labels['westerneuropean'] = 'اروپای غربی';
$labels['easterneuropean'] = 'اروپای شرقی';
$labels['southeasterneuropean'] = 'اروپای جنوب شرقی';
$labels['baltic'] = 'بالتیک';
$labels['cyrillic'] = 'سیریلیک';
$labels['arabic'] = 'عربی';
$labels['greek'] = 'یونانی';
$labels['hebrew'] = 'عبری';
$labels['turkish'] = 'ترکی استانبولی';
$labels['nordic'] = 'شمالی';
$labels['thai'] = 'تایلندی';
$labels['celtic'] = 'سلتی';
$labels['vietnamese'] = 'ویتنامی';
$labels['japanese'] = 'ژاپنی';
$labels['korean'] = 'کره‌ای';
$labels['chinese'] = 'چینی';
$labels['arialabeltopnav'] = 'کنترل پنجره';
$labels['arialabelactivetask'] = 'وظیفه فعال';
$labels['arialabelmessagessearchfilter'] = 'پالایه فهرست‌گیری رایانامه';
$labels['arialabelmailsearchform'] = 'فرم جستجوی پیام رایانامه';
$labels['arialabelcontactsearchform'] = 'فرم جستجوی تماس‌ها';
$labels['arialabelmailquicksearchbox'] = 'ورودی جستجوی رایانامه';
$labels['arialabelquicksearchbox'] = 'وردوی جستجو';
$labels['arialabelfoldersearchfilter'] = 'پالایه فهرست‌گیری پوشه';
$labels['arialabelfoldersearchform'] = 'فرم جستجوی پوشه';
$labels['arialabelfolderlist'] = 'انتخاب پوشه رایانامه';
$labels['arialabelmessagelist'] = 'فهرست‌گیری پیام‌های رایانامه';
$labels['arialabelmailpreviewframe'] = 'پیش‌نمایش پیام';
$labels['arialabelmessagenav'] = 'ناوبری پیام';
$labels['arialabelmessagebody'] = 'بدنه پیام';
$labels['arialabelmessageactions'] = 'کنش‌های پیام';
$labels['arialabelcontactquicksearch'] = 'فرم جستجوی تماس‌ها';
$labels['arialabelcontactsearchbox'] = 'ورودی جستجوی تماس';
$labels['arialabelmessageheaders'] = 'سربرگ‌های پیام';
$labels['arialabelforwardingoptions'] = 'گزینه‌های بازگردانی';
$labels['arialabelreplyalloptions'] = 'گزینه‌های پاسخ به همه';
$labels['arialabelcomposeoptions'] = 'گزینه‌های انشاء';
$labels['arialabelattachmentuploadform'] = 'فرم بارگذاری پیوست';
$labels['arialabelattachmentpreview'] = 'پیش‌نمایش پیوست';
$labels['arialabelabookgroupoptions'] = 'گزینه‌های دفترنشانی/گروه';
$labels['arialabelpreferencesform'] = 'فرم تنظیمات';
$labels['arialabelidentityeditfrom'] = 'فرم ویرایش هویت';
$labels['arialabelresponseeditfrom'] = 'فرم ویرایش واکنش‌گرا';
$labels['arialabelsearchterms'] = 'شرایط جستجو';
$labels['arialabelimagetools'] = 'ابزار تصویر';
localization/fa_IR/messages.inc000064400000036517151727150540012541 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'خطایی رخ داد!';
$messages['loginfailed']  = 'ورود ناموفق بود.';
$messages['cookiesdisabled'] = 'مرورگر شما کوکی‌ها را قبول نمی‌کند.';
$messages['sessionerror'] = 'نشست شما معتبر نیست، یا منقضی شده است.';
$messages['storageerror'] = 'اتصال به سرور مخزن ناموفق بود.';
$messages['servererror'] = 'خطای سرور!';
$messages['servererrormsg'] = 'خطای سرور: $msg';
$messages['connerror'] = 'خطای ارتباط (عدم دسترسی به سرور)!';
$messages['dberror'] = 'خطای پایگاه داده!';
$messages['windowopenerror'] = 'پنجره پاپ‌آپ مسدود شده است!';
$messages['requesttimedout'] = 'زمان درخواست تمام شد';
$messages['errorreadonly'] = ' عمل مورد نظر انجام نشد. پوشه فقط خواندنی است.';
$messages['errornoperm'] = ' عمل مورد نظر انجام نشد. دسترسی وجود ندارد.';
$messages['erroroverquota'] = 'عملیات انجام نشد. دیسک فضای خالی ندارد.';
$messages['erroroverquotadelete'] = 'دیسک فضای خالی ندارد. برای حذف پیام از SHIFT+DEL استفاده کنید.';
$messages['invalidrequest'] = 'درخواست نامعتبر! هیچ داده‌ای ذخیره نشد.';
$messages['invalidhost'] = 'نام سرور غیرمعتبر.';
$messages['nomessagesfound'] = 'هیچ پیغامی در این صندوق‌پستی پیدا نشد.';
$messages['mailboxempty'] = 'صندوق پستی خالی است';
$messages['nomessages'] = 'بدون پیام';
$messages['refreshing'] = 'نوسازی...';
$messages['loading'] = 'بارگذاری...';
$messages['uploading'] = 'بارگذاری پرونده...';
$messages['attaching'] = 'پیوست کردن پرونده...';
$messages['uploadingmany'] = 'بارگذاری پرونده‌ها...';
$messages['loadingdata'] = 'بارگذاری داده‌ها...';
$messages['checkingmail'] = 'بررسی برای پیام‌های جدید...';
$messages['sendingmessage'] = 'ارسال پیغام...';
$messages['messagesent'] = 'پیغام با موفقیت فرستاده شد.';
$messages['savingmessage'] = 'ذخیره‌ی پیام...';
$messages['messagesaved'] = 'پیغام در پیش‌نویس‌ها ذخیره شد.';
$messages['successfullysaved'] = 'با موفقیت ذخیره شد.';
$messages['savingresponse'] = 'ذخیره متن پاسخ...';
$messages['deleteresponseconfirm'] = 'آیا واقعا می‌خواهید این متن پاسخ را حذف نمایید؟';
$messages['addedsuccessfully'] = 'مخاطب با موفقیت به دفتر نشانی‌ها اضافه شد.';
$messages['contactexists'] = 'مخاطبی با آدرس ایمیل مشابه وجود دارد.';
$messages['contactnameexists'] = 'در حال حاضر مخاطبی با نام یکسان وجود دارد.';
$messages['blockedimages'] = 'برای حفاظت از حریم شخصی شما، عکس‌های خارجی در این پیام مسدود شده‌اند.';
$messages['encryptedmessage'] = 'این یک پیام رمزنگاری شده است و قابل نمایش نیست. با عرض پوزش!';
$messages['nocontactsfound'] = 'مخاطبی پیدا نشد.';
$messages['contactnotfound'] = 'مخاطب درخواست شده پیدا نشد.';
$messages['sendingfailed'] = 'ارسال پیغام ناموفق بود.';
$messages['senttooquickly'] = 'لطفا قبل از ارسال این پیام $sec ثانیه صبر کنید.';
$messages['errorsavingsent'] = 'خطایی رخ داده است پیام ارسالی ذخیره می گردد.';
$messages['errorsaving'] = 'خطایی در ذخیره کردن رخ داده است.';
$messages['errormoving'] = 'پیام(ها) منتقل نشدند.';
$messages['errorcopying'] = 'پیام(ها) کپی نشدند.';
$messages['errordeleting'] = 'پیام(ها) حذف نشدند.';
$messages['errormarking'] = 'پیام(ها) نشانه‌گذاری نشدند.';
$messages['deletecontactconfirm']  = 'آیا واقعاً می‌خواهید مخاطب(های) انتخاب شده را حذف کنید؟';
$messages['deletegroupconfirm']  = 'آیا واقعا می‌خواهید گروه انتخاب شده را حذف کنید؟';
$messages['deletemessagesconfirm'] = 'آیا واقعاً می‌خواهید پیام(های) انتخاب شده را حذف کنید؟';
$messages['deletefolderconfirm']  = 'آیا واقعاً می‌خواهید این پوشه را حذف کنید؟';
$messages['purgefolderconfirm']  = 'آیا واقعاً می‌خواهید همه‌ی پیام‌های داخل این پوشه را حذف کنید؟';
$messages['contactdeleting'] = 'حذف مخاطب(ها)...';
$messages['groupdeleting'] = 'حذف گروه...';
$messages['folderdeleting'] = 'حذف پوشه...';
$messages['foldermoving'] = 'جابجایی پوشه...';
$messages['foldersubscribing'] = 'اشتراک پوشه...';
$messages['folderunsubscribing'] = 'لغو اشتراک پوشه...';
$messages['formincomplete'] = 'فرم کامل پر نشده بود.';
$messages['noemailwarning'] = 'لطفا یک نشانی رایانامه معتبر وارد کنید.';
$messages['nonamewarning']  = 'لطفا یک نام وارد کنید.';
$messages['nopagesizewarning'] = 'لطفا اندازه‌ی صفحه را وارد کنید.';
$messages['nosenderwarning'] = 'لطفا آدرس ایمیل فرستنده را وارد کنید.';
$messages['norecipientwarning'] = 'لطفاً حداقل یک گیرنده وارد کنید.';
$messages['nosubjectwarning']  = 'قسمت "موضوع" خالی است. می‌خواهید اکنون وارد کنید؟';
$messages['nosubjecttitle']  = 'بدون موضوع';
$messages['nobodywarning'] = 'این پیام بدون متن ارسال شود؟';
$messages['restoresavedcomposedata'] = 'نامه قبلا نوشته و نفرستاده یافت شد.\n\nموضوع: $subject\n
ذخیره شده: $date\n\nآیا می‌خواهید این پیام را بازیابی نمایید؟';
$messages['nosearchname'] = 'لطفا یک نام مخاطب یا نشانی رایانامه وارد نمایید.';
$messages['notuploadedwarning'] = 'همه پیوست ها هنوز بارگذاری نشده‌اند. لطفا صبر کرده یا بارگذاری را لغو کنید.';
$messages['searchsuccessful'] = '$nr پیام پیدا شد.';
$messages['contactsearchsuccessful'] = '$nr مخاطب ییدا شد.';
$messages['searchnomatch'] = 'جست‌و‌جو هیچ نتیجه‌ای نداشت.';
$messages['searching'] = 'در حال جست‌و‌جو...';
$messages['checking'] = 'در حال بررسی...';
$messages['stillsearching'] = 'هنور در حال جستجو...';
$messages['nospellerrors'] = 'هیچ اشکال املایی پیدا نشد.';
$messages['folderdeleted'] = 'پوشه با کام‌یابی حذف شد.';
$messages['foldersubscribed'] = 'اشتراک پوشه با کام‌یابی انجام شد.';
$messages['folderunsubscribed'] = 'اشتراک پوشه با کام‌یابی لغو شد.';
$messages['deletedsuccessfully'] = 'با کام‌یابی حذف شد.';
$messages['converting'] = 'در حال حذف قالب‌بندی...';
$messages['messageopenerror'] = 'بارگذاری پیام از روی سرور انجام نشد.';
$messages['fileuploaderror'] = 'بارگذاری پرونده ناموفق بود.';
$messages['filesizeerror'] = 'اندازه‌ی پرونده‌ی بارگذاری شده از بیشینه اندازه‌ی $size بیشتر است.';
$messages['copysuccess'] = '$nr مخاطب با کام‌یابی کپی شد.';
$messages['movesuccess'] = '$nr مخاطب با کام‌یابی جابجا شد.';
$messages['copyerror'] = 'مخاطب‌ها کپی نشدند.';
$messages['moveerror'] = 'مخاطب‌ها جابجا نشدند.';
$messages['sourceisreadonly'] = 'این منبع نشانی فقط خواندنی است.';
$messages['errorsavingcontact'] = 'ذخیره‌ی نشانی مخاطب ناموفق بود.';
$messages['movingmessage'] = 'در حال انتقال پیام(ها)...';
$messages['copyingmessage'] = 'در حال کپی‌برداری از پیام(ها)...';
$messages['copyingcontact'] = 'در حال کپی‌برداری مخاطب(ها)...';
$messages['movingcontact'] = 'در حال جابجایی مخاطب(ها)...';
$messages['deletingmessage'] = 'در حال حذف پیام(ها)...';
$messages['markingmessage'] = 'در حال نشانه‌گذاری پیام(ها)...';
$messages['addingmember'] = 'در حال افزودن مخاطب(ها) به گروه...';
$messages['removingmember'] = 'در حال حذف مخاطب(ها) از گروه...';
$messages['receiptsent'] = 'رسید خواندن با کام‌یابی ارسال شد.';
$messages['errorsendingreceipt'] = 'ارسال رسید انجام نشد.';
$messages['deleteidentityconfirm'] = 'آیا از حذف این شناسه مطمئن هستید؟';
$messages['nodeletelastidentity'] = 'این شناسه را نمی‌توانید حذف کنید، زیرا آخرین شناسه شما است.';
$messages['forbiddencharacter'] = 'نام پوشه شامل یک کاراکتر غیر مجاز است.';
$messages['selectimportfile'] = 'لطفاً پرونده‌ای را برای بارگذاری انتخاب کنید.';
$messages['addresswriterror'] = 'دفترچه نشانی انتخابی قابل نوشتن نیست.';
$messages['contactaddedtogroup'] = 'مخاطب‌ها با کام‌یابی به این گروه اضافه شدند.';
$messages['contactremovedfromgroup'] = 'مخاطب‌ها با کام‌یابی از این گروه حذف شدند.';
$messages['nogroupassignmentschanged'] = 'هیچ تکلیف گروهی تغییر نکرده است.';
$messages['importwait'] = 'در حال وارد کردن، لطفا صبر کنید...';
$messages['importformaterror'] = 'وارد کردن ناموفق! فایل بارگذاری شده یک فایل اطلاعات معتبر نیست.';
$messages['importconfirm'] = '<b>$inserted مخاطب با کام‌یابی وارد شدند</b>';
$messages['importconfirmskipped'] = '<b>$skipped ورودی موجود نادیده گرفته شدند</b>';
$messages['importmessagesuccess'] = 'با کام‌یابی $nr پیام وارد شد.';
$messages['importmessageerror'] = 'وارد کردن ناموفق! فایل بارگذاری شده یک پیام یا صندوق‌پستی معتبر نیست.';
$messages['opnotpermitted'] = 'عملیات مجاز نیست!';
$messages['editorwarning'] = 'تعویض به ویرایشگر متن ساده باعث از دست رفتن قالب‌بندی همه متن‌ها می‌شود، آیا می‌خواهید عملیات را ادامه بدهید؟';
$messages['httpreceivedencrypterror'] = 'یک خطای پیکربندی خطرناک رخ داده است. سریعا با سرپرست یا مسئول خود تماس بگیرید. <b>امکان ارسال  پیام شما وجود ندارد.</b>';
$messages['smtpconnerror'] = 'خطای SMTP ($code): اتصال به سرور ناموفق بود.';
$messages['smtpautherror'] = 'خطای SMTP ($code): تصدیق هویت ناموفق بود.';
$messages['smtpfromerror'] = 'خطای SMTP ($code): ناموفق در تنظیم فرستنده "$from" ($msg).';
$messages['smtptoerror'] = 'خطای SMTP ($code): نام موفق در افزودن گیرنده "$to" ($msg).';
$messages['smtprecipientserror'] = 'خطای SMTP: ناتوان در تجزیه فهرست گیرنده‌ها.';
$messages['smtperror'] = 'خطای SMTP: $msg';
$messages['toomanyrecipients'] = 'گیرنده‌های بیش از اندازه: تعداد گیرنده ها را به $max کاهش دهید.';
$messages['maxgroupmembersreached'] = 'تعداد اعضای گروه بیشتر از $max است.';
$messages['internalerror'] = 'یک خطای داخلی رخ داده است. لطفا دوباره سعی کنید.';
$messages['contactdelerror'] = 'حذف مخاطب(ها) انجام شد.';
$messages['contactdeleted'] = 'مخاطب(ها) با کام‌یابی حذف شدند.';
$messages['contactrestoreerror'] = 'مخاطب(های) حذف شده بازگردانی نخواهند شد.';
$messages['contactrestored'] = 'مخاطب(ها) با کام‌یابی بازگردانده شدند.';
$messages['groupdeleted'] = 'گروه با کام‌یابی حذف شد.';
$messages['grouprenamed'] = 'نام گروه با کام‌یابی تغییر داده شد.';
$messages['groupcreated'] = 'گروه با کام‌یابی ایجاد شد.';
$messages['savedsearchdeleted'] = 'جستجوی ذخیره شده با کام‌یابی حذف شد.';
$messages['savedsearchdeleteerror'] = 'حذف جستجوی ذخیره شده انجام نشد.';
$messages['savedsearchcreated'] = 'جستجوی حذف شده با کام‌یابی ایجاد شد.';
$messages['savedsearchcreateerror'] = 'ساخت جستجوی ذخیره شده انجام نشد.';
$messages['messagedeleted'] = 'پیام(ها) با کام‌یابی حذف شدند.';
$messages['messagemoved'] = 'پیام(ها) با کام‌یابی منتقل شدند.';
$messages['messagecopied'] = 'پیام(ها) با کام‌یابی کپی شدند.';
$messages['messagemarked'] = 'پیام(ها) با کام‌یابی نشانه‌گذاری شدند.';
$messages['autocompletechars'] = 'حداقل $min حرف برای تکمیل خودکار وارد نمایید.';
$messages['autocompletemore'] = 'نتایج زیادی یافت شد. لطفا حروف بیشتری وارد نمایید.';
$messages['namecannotbeempty'] = 'نام نمی‌تواند خالی باشد.';
$messages['nametoolong'] = 'نام خیلی طولانی است.';
$messages['folderupdated'] = 'پوشه با کام‌یابی به‌روز شد.';
$messages['foldercreated'] = 'پوشه با کام‌یابی افزوده شد.';
$messages['invalidimageformat'] = 'فرمت تصویر نامعتبر است.';
$messages['mispellingsfound'] = 'خطای املایی در پیام شناسایی شد.';
$messages['parentnotwritable'] = 'به دلیل نداشتن حق دسترسی، ایجاد/انتقال پوشه به پوشه والد انتخاب شده، انجام نشد.';
$messages['messagetoobig'] = 'بخش پیام برای پردازش آن خیلی بزرگ است.';
$messages['noscriptwarning'] = 'هشدار: این برنامه به جاوااسکریپت نیاز دارد! برای استفاده از این برنامه لطفا جاوااسکریپت را در تنظیمات مرورگر خود فعال نمایید.';
$messages['errnotfound'] = 'پرونده پیدا نشد';
localization/lt_LT/timezones.inc000064400000016417151727150540013002 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC (Pasaulinis koordinuotasis laikas)';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidžanas';
$labels['tz:africa:accra'] = 'Akra';
$labels['tz:africa:addis_ababa'] = 'Adis Abeba';
$labels['tz:africa:algiers'] = 'Alžyras';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamakas';
$labels['tz:africa:bangui'] = 'Bangis';
$labels['tz:africa:banjul'] = 'Bandžulis';
$labels['tz:africa:bissau'] = 'Bisau';
$labels['tz:africa:blantyre'] = 'Blantairas';
$labels['tz:africa:brazzaville'] = 'Brazavilis';
$labels['tz:africa:bujumbura'] = 'Bužumbūra';
$labels['tz:africa:cairo'] = 'Kairas';
$labels['tz:africa:casablanca'] = 'Kasablanka';
$labels['tz:africa:ceuta'] = 'Seuta';
$labels['tz:africa:conakry'] = 'Konakris';
$labels['tz:africa:dakar'] = 'Dakaras';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salamas';
$labels['tz:africa:djibouti'] = 'Džibutis';
$labels['tz:africa:douala'] = 'Duala';
$labels['tz:africa:el_aaiun'] = 'Al Ajunas';
$labels['tz:africa:freetown'] = 'Fritaunas';
$labels['tz:africa:gaborone'] = 'Gaboronas';
$labels['tz:africa:harare'] = 'Hararė';
$labels['tz:africa:johannesburg'] = 'Johanesburgas';
$labels['tz:africa:juba'] = 'Džuba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Chartumas';
$labels['tz:africa:kigali'] = 'Kigalis';
$labels['tz:africa:kinshasa'] = 'Kinšasa';
$labels['tz:africa:lagos'] = 'Lagosas';
$labels['tz:africa:libreville'] = 'Librevilis';
$labels['tz:africa:lome'] = 'Lomė';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbašis';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabas';
$labels['tz:africa:maputo'] = 'Maputu';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabanė';
$labels['tz:africa:mogadishu'] = 'Mogadišas';
$labels['tz:africa:monrovia'] = 'Monrovija';
$labels['tz:africa:nairobi'] = 'Nairobis';
$labels['tz:africa:ndjamena'] = 'Ndžamena';
$labels['tz:africa:niamey'] = 'Niamėjus';
$labels['tz:africa:nouakchott'] = 'Nuakšotas';
$labels['tz:africa:ouagadougou'] = 'Uagadugu';
$labels['tz:africa:porto-novo'] = 'Porto Novas';
$labels['tz:africa:sao_tome'] = 'San Tomė';
$labels['tz:africa:tripoli'] = 'Tripolis';
$labels['tz:africa:tunis'] = 'Tunisas';
$labels['tz:africa:windhoek'] = 'Vindhukas';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adakas';
$labels['tz:america:anchorage'] = 'Ankoridžas';
$labels['tz:america:anguilla'] = 'Angilija';
$labels['tz:america:antigua'] = 'Antigva';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Airės';
$labels['tz:america:argentina:catamarca'] = 'Katamarka';
$labels['tz:america:argentina:cordoba'] = 'Kordoba';
$labels['tz:america:argentina:jujuy'] = 'Chuchujus';
$labels['tz:america:argentina:la_rioja'] = 'La Riocha';
$labels['tz:america:argentina:mendoza'] = 'Mendosa';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Galjegosas';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Chuanas';
$labels['tz:america:argentina:san_luis'] = 'San Luisas';
$labels['tz:america:argentina:tucuman'] = 'Tukumanas';
$labels['tz:america:argentina:ushuaia'] = 'Ušuaja';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunsjonas';
$labels['tz:america:atikokan'] = 'Atikokanas';
$labels['tz:america:bahia'] = 'Bahija';
$labels['tz:america:barbados'] = 'Barbadosas';
$labels['tz:america:belize'] = 'Belizas';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boizis';
$labels['tz:america:cambridge_bay'] = 'Kembridž Bėjus';
$labels['tz:america:campo_grande'] = 'Kampo Grandė';
$labels['tz:america:cancun'] = 'Kankunas';
$labels['tz:america:caracas'] = 'Karakasas';
$labels['tz:america:cayenne'] = 'Kajena';
$labels['tz:america:chicago'] = 'Čikaga';
$labels['tz:america:chihuahua'] = 'Čihuahua';
$labels['tz:america:costa_rica'] = 'Kosta Rika';
$labels['tz:america:creston'] = 'Krestonas';
$labels['tz:america:cuiaba'] = 'Kujaba';
$labels['tz:america:curacao'] = 'Kiurasao';
$labels['tz:america:dawson'] = 'Dosonas';
$labels['tz:america:dawson_creek'] = 'Dosono įlanka';
$labels['tz:america:denver'] = 'Denveris';
$labels['tz:america:detroit'] = 'Detroitas';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmontonas';
$labels['tz:america:eirunepe'] = 'Eirunepė';
$labels['tz:america:el_salvador'] = 'Salvadoras';
$labels['tz:america:fort_nelson'] = 'Fort Nelsonas';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:godthab'] = 'Nukas';
$labels['tz:america:grand_turk'] = 'Grand Terkas';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Gvadelupa';
$labels['tz:america:guatemala'] = 'Gvatemala';
$labels['tz:america:guayaquil'] = 'Gvajakilis';
$labels['tz:america:guyana'] = 'Gajana';
$labels['tz:america:halifax'] = 'Halifaksas';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosiljas';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:marengo'] = 'Marengas';
$labels['tz:america:iqaluit'] = 'Ikaluitas';
$labels['tz:america:jamaica'] = 'Jamaika';
$labels['tz:america:juneau'] = 'Džunas';
$labels['tz:america:kentucky'] = 'Kentukis';
$labels['tz:america:kentucky:louisville'] = 'Luisvilis';
$labels['tz:america:kralendijk'] = 'Kralendeikas';
$labels['tz:america:la_paz'] = 'La Pasas';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Andželas';
$labels['tz:america:maceio'] = 'Masejas';
$labels['tz:america:managua'] = 'Managva';
$labels['tz:america:manaus'] = 'Manausas';
$labels['tz:america:marigot'] = 'Marigo';
$labels['tz:america:martinique'] = 'Martinika';
$labels['tz:america:matamoros'] = 'Matamorosas';
$labels['tz:america:mazatlan'] = 'Masatlanas';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Meksikas';
$labels['tz:america:miquelon'] = 'Mikelonas';
$labels['tz:america:moncton'] = 'Monktonas';
$labels['tz:america:monterrey'] = 'Monterėjus';
$labels['tz:america:montevideo'] = 'Montevidėjas';
$labels['tz:america:nassau'] = 'Nasau';
$labels['tz:america:new_york'] = 'Niujorkas';
$labels['tz:america:nome'] = 'Nomas';
$labels['tz:asia'] = 'Azija';
$labels['tz:australia'] = 'Australija';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:vilnius'] = 'Vilnius';
localization/lt_LT/labels.inc000064400000103644151727150540012226 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Sveiki! Čia $product';
$labels['username'] = 'Naudotojo vardas';
$labels['password'] = 'Slaptažodis';
$labels['server'] = 'Serveris';
$labels['login'] = 'Prisijungti';
$labels['oauthlogin'] = 'Prisijungti per $provider';
$labels['menu'] = 'Meniu';
$labels['logout'] = 'Atsijungti';
$labels['mail'] = 'El. paštas';
$labels['settings'] = 'Nuostatos';
$labels['addressbook'] = 'Adresų knyga';
$labels['darkmode'] = 'Tamsi veiksena';
$labels['lightmode'] = 'Šviesi veiksena';
$labels['inbox'] = 'Gauti laiškai';
$labels['drafts'] = 'Juodraščiai';
$labels['sent'] = 'Išsiųsti laiškai';
$labels['trash'] = 'Šiukšlinė';
$labels['junk'] = 'Brukalas';
$labels['show_real_foldernames'] = 'Rodyti tikrus specialiųjų aplankų vardus';
$labels['subject'] = 'Tema';
$labels['from'] = 'Siuntėjas';
$labels['sender'] = 'Siuntėjas';
$labels['to'] = 'Gavėjas';
$labels['cc'] = 'Kopija';
$labels['bcc'] = 'Slaptoji kopija';
$labels['replyto'] = 'Atsakymą gaus';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Dydis';
$labels['priority'] = 'Prioritetas';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Neskaitytas';
$labels['listoptions'] = 'Sąrašo nuostatos…';
$labels['listoptionstitle'] = 'Sąrašo nuostatos';
$labels['mailboxlist'] = 'Aplankai';
$labels['messagesfromto'] = 'Laiškai nuo $from iki $to iš $count';
$labels['threadsfromto'] = 'Gijos nuo $from iki $to iš $count';
$labels['messagenrof'] = 'Laiškas $nr iš $count';
$labels['fromtoshort'] = '$from – $to iš $count';
$labels['copy'] = 'Kopijuoti';
$labels['move'] = 'Perkelti';
$labels['moveto'] = 'Perkelti į…';
$labels['copyto'] = 'Kopijuoti į...';
$labels['download'] = 'Parsisiųsti';
$labels['open'] = 'Atverti';
$labels['showattachment'] = 'Rodyti';
$labels['showanyway'] = 'Vistiek rodyti';
$labels['filename'] = 'Failo vardas';
$labels['filesize'] = 'Failo dydis';
$labels['addtoaddressbook'] = 'Įtraukti į adresų knygą';
$labels['sun'] = 'Sek';
$labels['mon'] = 'Pir';
$labels['tue'] = 'Ant';
$labels['wed'] = 'Tre';
$labels['thu'] = 'Ket';
$labels['fri'] = 'Pen';
$labels['sat'] = 'Šeš';
$labels['sunday'] = 'Sekmadienis';
$labels['monday'] = 'Pirmadienis';
$labels['tuesday'] = 'Antradienis';
$labels['wednesday'] = 'Trečiadienis';
$labels['thursday'] = 'Ketvirtadienis';
$labels['friday'] = 'Penktadienis';
$labels['saturday'] = 'Šeštadienis';
$labels['jan'] = 'Sau';
$labels['feb'] = 'Vas';
$labels['mar'] = 'Kov';
$labels['apr'] = 'Bal';
$labels['may'] = 'Gegužė';
$labels['jun'] = 'Bir';
$labels['jul'] = 'Lie';
$labels['aug'] = 'Rgp';
$labels['sep'] = 'Rgs';
$labels['oct'] = 'Spl';
$labels['nov'] = 'Lap';
$labels['dec'] = 'Grd';
$labels['longjan'] = 'Sausis';
$labels['longfeb'] = 'Vasaris';
$labels['longmar'] = 'Kovas';
$labels['longapr'] = 'Balandis';
$labels['longmay'] = 'Gegužė';
$labels['longjun'] = 'Biržėlis';
$labels['longjul'] = 'Liepa';
$labels['longaug'] = 'Rugpjūtis';
$labels['longsep'] = 'Rugsėjis';
$labels['longoct'] = 'Spalis';
$labels['longnov'] = 'Lapkritis';
$labels['longdec'] = 'Gruodis';
$labels['today'] = 'Šiandien';
$labels['refresh'] = 'Atnaujinti';
$labels['checkmail'] = 'Tikrinti, ar yra naujų laiškų';
$labels['compose'] = 'Rašyti';
$labels['writenewmessage'] = 'Rašyti naują laišką';
$labels['reply'] = 'Atsakyti';
$labels['replytomessage'] = 'Atsakyti siuntėjui';
$labels['replytoallmessage'] = 'Atsakyti el. pašto grupei arba laiško siuntėjui ir visiems jo gavėjams';
$labels['replyall'] = 'Atsakyti visiems';
$labels['replylist'] = 'Atsakyti el. pašto grupei';
$labels['forward'] = 'Persiųsti';
$labels['forwardinline'] = 'Persiųsti cituojant';
$labels['forwardattachment'] = 'Persiųsti priedu';
$labels['forwardmessage'] = 'Persiųsti laišką';
$labels['bouncemsg'] = 'Siųsti iš naujo (grąžinimas)';
$labels['bounce'] = 'Siųsti iš naujo';
$labels['deletemessage'] = 'Pašalinti laišką';
$labels['movemessagetotrash'] = 'Perkelti laišką į šiukšlinę';
$labels['printmessage'] = 'Atspausdinti laišką';
$labels['previousmessage'] = 'Rodyti ankstesnį laišką';
$labels['firstmessage'] = 'Rodyti pirmąjį laišką';
$labels['nextmessage'] = 'Rodyti tolesnį laišką';
$labels['lastmessage'] = 'Rodyti paskutinį laišką';
$labels['backtolist'] = 'Grižti į laiškų sarašą';
$labels['viewsource'] = 'Rodyti pirminį tekstą';
$labels['mark'] = 'Pažymėti';
$labels['markmessages'] = 'Pažymėti laiškus';
$labels['markread'] = 'Kaip skaitytus';
$labels['markunread'] = 'Kaip neskaitytus';
$labels['markflagged'] = 'Pažymėti gairele';
$labels['markunflagged'] = 'Pašalinti gairelę';
$labels['markundeleted'] = 'Kaip nepašalintus';
$labels['moreactions'] = 'Kiti veiksmai…';
$labels['markallread'] = 'Žymėti visus kaip skaitytus';
$labels['folders-cur'] = 'Tik pasirinktas aplankas';
$labels['folders-sub'] = 'Pasirinktas aplankas ir jo poaplankiai';
$labels['folders-all'] = 'Visi aplankai';
$labels['more'] = 'Kita';
$labels['back'] = 'Grįžti';
$labels['options'] = 'Nuostatos';
$labels['composeoptions'] = 'Laiško kūrimo nuostatos';
$labels['optionsandattachments'] = 'Nuostatos ir priedai';
$labels['actions'] = 'Veiksmai';
$labels['first'] = 'Pirmas';
$labels['last'] = 'Paskutinis';
$labels['previous'] = 'Ankstesnis';
$labels['next'] = 'Sekantis';
$labels['select'] = 'Pažymėti';
$labels['selection'] = 'Žymėjimas';
$labels['all'] = 'visus';
$labels['none'] = 'Nieko';
$labels['currpage'] = 'matomus šiame puslapyje';
$labels['isread'] = 'Skaityti';
$labels['unread'] = 'neskaitytus';
$labels['flagged'] = 'su gairele';
$labels['unflagged'] = 'Nepažymėti vėliavėle';
$labels['unanswered'] = 'neatsakytus';
$labels['withattachment'] = 'Su priedu';
$labels['deleted'] = 'pašalintus';
$labels['undeleted'] = 'Neištrintas';
$labels['replied'] = 'Atsakytieji';
$labels['forwarded'] = 'Persiųstieji';
$labels['invert'] = 'invertuoti';
$labels['filter'] = 'Rodyti';
$labels['list'] = 'Sąrašas';
$labels['threads'] = 'Gijos';
$labels['expand-all'] = 'išskleisti visas';
$labels['expand-unread'] = 'išskleisti turinčias neskaitytų laiškų';
$labels['collapse-all'] = 'suskleisti visas';
$labels['threaded'] = 'Rodyti gijas';
$labels['showunread'] = 'Rodyti neskaitytus laiškus';
$labels['autoexpand_threads'] = 'Išskleisti gijas';
$labels['do_expand'] = 'visas';
$labels['expand_only_unread'] = 'tik turinčias neskaitytų laiškų';
$labels['fromto'] = 'Siuntėjas/Gavėjas';
$labels['flag'] = 'Gairelė';
$labels['attachment'] = 'Priedas';
$labels['nonesort'] = 'Nerūšiuoti';
$labels['sentdate'] = 'Išsiuntimo laikas';
$labels['arrival'] = 'Gavimo laikas';
$labels['asc'] = 'didėjančiai';
$labels['desc'] = 'mažėjančiai';
$labels['listcolumns'] = 'Stulpelių sąrašas';
$labels['listsorting'] = 'Stulpelis rikiavimui';
$labels['listorder'] = 'Rikiavimo tvarka';
$labels['listmode'] = 'Sąrašo rodymo veiksena';
$labels['lmode'] = 'Sąrašo veiksena';
$labels['layout'] = 'Išdėstymas';
$labels['layoutwidescreen'] = 'Platus ekranas';
$labels['layoutdesktop'] = 'Darbalaukis';
$labels['layoutlist'] = 'Sąrašas';
$labels['layoutwidescreendesc'] = 'Plačiaekranis (3 stulpelių rodymas)';
$labels['layoutdesktopdesc'] = 'Darbalaukis (platus sąrašas, o žemiau pašto peržiūra)';
$labels['layoutlistdesc'] = 'Sąrašas (be pašto peržiūros)';
$labels['folderactions'] = 'Veiksmai su aplankais…';
$labels['compact'] = 'Suglaudinti';
$labels['empty'] = 'Ištuštinti';
$labels['importmessages'] = 'Importuoti laiškus';
$labels['mailimportdesc'] = 'Jūs galite įkelti paštą, naudodami failus <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ar <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> formatu.';
$labels['mailimportzip'] = 'Keli failai gali būti suglaudinti į zip archyvus.';
$labels['quota'] = 'Disko naudojimas';
$labels['unknown'] = 'nežinomas';
$labels['unlimited'] = 'neribotas';
$labels['quotatype'] = 'Kvotos tipas';
$labels['quotatotal'] = 'Limitas';
$labels['quotaused'] = 'Išnaudota';
$labels['quotastorage'] = 'Disko talpa';
$labels['quotamessage'] = 'Laiškų skaičius';
$labels['shortheaderdate'] = 'Ties $date';
$labels['shortheaderto'] = 'Skirtas $to ties $date';
$labels['shortheaderfrom'] = 'Nuo $from ties $date';
$labels['quicksearch'] = 'Sparčioji paieška';
$labels['searchplaceholder'] = 'Ieškoti...';
$labels['resetsearch'] = 'Atšaukti paiešką';
$labels['searchmod'] = 'Paieškos modifikatoriai';
$labels['msgtext'] = 'Visas laiškas';
$labels['body'] = 'Laiško tekstas';
$labels['type'] = 'Tipas';
$labels['namex'] = 'Vardas';
$labels['searchscope'] = 'Sritis';
$labels['currentfolder'] = 'Šis aplankas';
$labels['subfolders'] = 'Šis ir poaplankiai';
$labels['allfolders'] = 'Visi aplankai';
$labels['searchinterval-1W'] = 'senesni nei savaitės';
$labels['searchinterval-1M'] = 'senesni nei mėnesio';
$labels['searchinterval-1Y'] = 'senesni nei metų';
$labels['searchinterval1W'] = 'ne senesni nei savaitės';
$labels['searchinterval1M'] = 'ne senesni nei mėnesio';
$labels['searchinterval1Y'] = 'ne senesni nei metų';
$labels['openinextwin'] = 'Atverti naujame lange';
$labels['emlsave'] = 'Parsisiųsti (.eml)';
$labels['changeformattext'] = 'Rodyti grynojo teksto formatu';
$labels['changeformathtml'] = 'Rodyti HTML formatu';
$labels['editasnew'] = 'Redaguoti kaip naują';
$labels['send'] = 'Siųsti';
$labels['sendmessage'] = 'Išsiųsti laiską';
$labels['savemessage'] = 'Išsaugoti šį juodraštį';
$labels['addattachment'] = 'Pridėti failą';
$labels['charset'] = 'Koduotė';
$labels['editortype'] = 'Laiško tipas';
$labels['returnreceipt'] = 'Prašyti pristatymo pažymos';
$labels['dsn'] = 'Laiško pristatymo pažyma';
$labels['mailreplyintro'] = '$date, $sender rašė:';
$labels['originalmessage'] = 'Originalus laiškas';
$labels['selectimage'] = 'Pažymėti paveikslą';
$labels['addimage'] = 'Pridėti paveikslą';
$labels['selectmedia'] = 'Pažymėti vaizdo įrašą';
$labels['addmedia'] = 'Pridėti vaizdo įrašą';
$labels['encrypt'] = 'Šifruoti';
$labels['encryptmessage'] = 'Šifruoti laišką';
$labels['encryptmessagemailvelope'] = 'Šifruoti laišką, naudojant „Mailvelope“ naršyklės plėtinį';
$labels['importpubkeys'] = 'Importuoti viešuosius raktus';
$labels['encryptedsendialog'] = 'Siunčiamas šifruotas laiškas';
$labels['encryptandsign'] = 'Šifruoti ir pasirašyti';
$labels['keyid'] = 'Rakto ID';
$labels['keylength'] = 'Bitai';
$labels['keyexpired'] = 'Nebegalioja';
$labels['keyrevoked'] = 'Atšauktas';
$labels['bccinstead'] = 'Naudoti Bcc';
$labels['addheader'] = 'Pridėti gavėją (antraštė)';
$labels['insert'] = 'Įterpti';
$labels['insertcontact'] = 'Įterpti adresatą(-us)';
$labels['recipient'] = 'Gavėjas';
$labels['recipientedit'] = 'Gavėjo taisymas';
$labels['editidents'] = 'Tvarkyti tapatybes';
$labels['spellcheck'] = 'Tikrinti rašybą';
$labels['checkspelling'] = 'Tikrinti rašybą';
$labels['resumeediting'] = 'Tęsti redagavimą';
$labels['revertto'] = 'Atstatyti į';
$labels['restore'] = 'Atkurti';
$labels['restoremessage'] = 'Atkurti pranešimus?';
$labels['ignore'] = 'Ignoruoti';
$labels['responses'] = 'Atsakymai';
$labels['insertresponse'] = 'Įterpti atsakymą';
$labels['manageresponses'] = 'Tvarkyti atsakymus';
$labels['newresponse'] = 'Kurti naują atsakymą';
$labels['addresponse'] = 'Pridėti atsakymą';
$labels['editresponse'] = 'Taisyti atsakymą';
$labels['editresponses'] = 'Taisyti atsakymus';
$labels['responsename'] = 'Pavadinimas';
$labels['responsetext'] = 'Atsakymo tekstas';
$labels['attach'] = 'Pridėti failą';
$labels['attachments'] = 'Pridėti failai';
$labels['upload'] = 'Įkelti';
$labels['uploadprogress'] = '$percent ($current iš $total)';
$labels['close'] = 'Užverti';
$labels['messageoptions'] = 'Laiško savybės…';
$labels['togglecomposeoptions'] = 'Rodyti/slėpti nustatymus';
$labels['attachmentrename'] = 'Pervardinti priedą';
$labels['low'] = 'Žemas';
$labels['lowest'] = 'Žemiausias';
$labels['normal'] = 'Normalus';
$labels['high'] = 'Aukštas';
$labels['highest'] = 'Aukščiausias';
$labels['nosubject'] = '(tema nenurodyta)';
$labels['showimages'] = 'Rodyti paveikslėlius';
$labels['allow'] = 'Leisti';
$labels['alwaysshow'] = 'Visada rodyti paveikslėlius $sender laiškuose';
$labels['alwaysallow'] = 'Visada leisti nuo $sender';
$labels['isdraft'] = 'Tai – laiško juodraštis.';
$labels['andnmore'] = '$nr daugiau...';
$labels['details'] = 'Išsamiau';
$labels['summary'] = 'Santrauka';
$labels['headers'] = 'Antraštės';
$labels['allheaders'] = 'Visos antraštės...';
$labels['togglemoreheaders'] = 'Rodyti daugiau antraščių';
$labels['togglefullheaders'] = 'Įjungti/išjungti neapdorotas laiškų antraštes';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Grynasis tekstas';
$labels['savesentmessagein'] = 'Išsiųstus laiškus įrašyti į';
$labels['dontsave'] = 'neįrašyti';
$labels['maxuploadsize'] = 'Maksimalus leistinas failo dydis yra $size';
$labels['addcc'] = 'Pridėti Cc';
$labels['addbcc'] = 'Pridėti Bcc';
$labels['addreplyto'] = 'Pridėti Reply-To';
$labels['addfollowupto'] = 'Pridėti Followup-To';
$labels['mdnrequest'] = 'Šio laiško siuntėjas paprašė patvirtinti, kad jūs jį perskaitėte. Ar išsiųsti tai patvirtinančią pažymą?';
$labels['receiptread'] = 'Patvirtinimas (laiškas perskaitytas)';
$labels['yourmessage'] = 'Tai – pažyma, patvirtinanti, jog buvo perskaitytas Jūsų laiškas';
$labels['receiptnote'] = 'Pastaba: šia pažyma patvirtinamas tik faktas, jog laiškas buvo parodytas gavėjui. Ja negarantuojama, jog gavėjas perskaitė ir suprato laiško turinį.';
$labels['zoomin'] = 'Didinti';
$labels['zoomout'] = 'Mažinti';
$labels['rotate'] = 'Pasukti';
$labels['increaseimage'] = 'Padidinti paveikslo dydį';
$labels['decreaseimage'] = 'Sumažinti paveikslo dydį';
$labels['rotateimage'] = 'Pasukti paveikslą';
$labels['showtools'] = 'Rodyti paveikslų įrankius';
$labels['hidetools'] = 'Slėpti paveikslų įrankius';
$labels['name'] = 'Rodomas vardas';
$labels['firstname'] = 'Vardas';
$labels['surname'] = 'Pavardė';
$labels['middlename'] = 'Kiti vardai';
$labels['nameprefix'] = 'Titulas';
$labels['namesuffix'] = 'Sufiksas';
$labels['nickname'] = 'Pravardė';
$labels['jobtitle'] = 'Pareigos';
$labels['department'] = 'Padalinys';
$labels['gender'] = 'Lytis';
$labels['maidenname'] = 'Mergautinė pavardė';
$labels['email'] = 'El. paštas';
$labels['phone'] = 'Telefono numeris';
$labels['address'] = 'Adresas';
$labels['street'] = 'Gatvė, namas ir butas';
$labels['locality'] = 'Miestas';
$labels['zipcode'] = 'Pašto kodas';
$labels['region'] = 'Regionas';
$labels['country'] = 'Valstybė';
$labels['birthday'] = 'Gimimo data';
$labels['anniversary'] = 'Jubiliejus';
$labels['website'] = 'Svetainė';
$labels['instantmessenger'] = 'Tikralaikiai pokalbiai';
$labels['notes'] = 'Pastabos';
$labels['male'] = 'vyras';
$labels['female'] = 'moteris';
$labels['manager'] = 'Vadybininkas(-ė)';
$labels['assistant'] = 'Padėjėjo(-os)';
$labels['spouse'] = 'Sutuoktinis';
$labels['allfields'] = 'Visi laukai';
$labels['search'] = 'Paieška';
$labels['searchresult'] = 'Paieškos rezultatas';
$labels['advsearch'] = 'Išplėstinė paieška';
$labels['advanced'] = 'Išsamiau';
$labels['other'] = 'Kitas';
$labels['printcontact'] = 'Spausdinti kontakto duomenis';
$labels['qrcode'] = 'QR kodas';
$labels['typehome'] = 'Namų';
$labels['typework'] = 'Darbo';
$labels['typeother'] = 'Kitas';
$labels['typemobile'] = 'Mobilusis';
$labels['typemain'] = 'Pagrindinis';
$labels['typehomefax'] = 'Namų faksas';
$labels['typeworkfax'] = 'Darbo faksas';
$labels['typecar'] = 'Automobilyje';
$labels['typepager'] = 'Pranešimų gaviklis';
$labels['typevideo'] = 'Vaizdo';
$labels['typeassistant'] = 'Padėjėjo(-os)';
$labels['typehomepage'] = 'Tinklalapis';
$labels['typeblog'] = 'Tinklaraštis';
$labels['typeprofile'] = 'Profilis';
$labels['addfield'] = 'Pridėti lauką…';
$labels['addcontact'] = 'Pridėti adresatą';
$labels['editcontact'] = 'Taisyti adresatą';
$labels['contacts'] = 'Adresatai';
$labels['contactproperties'] = 'Adresato savybės';
$labels['contactnameandorg'] = 'Vardas ir organizacija';
$labels['personalinfo'] = 'Asmeniniai duomenys';
$labels['personal'] = 'Asmeninis';
$labels['contactphoto'] = 'Adresato nuotrauka';
$labels['edit'] = 'Redaguoti';
$labels['cancel'] = 'Atsisakyti';
$labels['save'] = 'Įrašyti';
$labels['delete'] = 'Pašalinti';
$labels['discard'] = 'Panaikinti';
$labels['continue'] = 'Tęsti';
$labels['ok'] = 'Gerai';
$labels['rename'] = 'Pervardinti';
$labels['addphoto'] = 'Pridėti';
$labels['replacephoto'] = 'Pakeisti';
$labels['uploadphoto'] = 'Įkelti nuotrauką';
$labels['choosefile'] = 'Pasirinkti failą...';
$labels['choosefiles'] = 'Pasirinkti failus...';
$labels['browse'] = 'Naršyti';
$labels['newcontact'] = 'Sukurti naują adresatą';
$labels['deletecontact'] = 'Ištrinti pažymėtus adresatus';
$labels['composeto'] = 'Rašyti laišką';
$labels['contactsfromto'] = 'Adresatai nuo $from iki $to iš $count';
$labels['print'] = 'Spausdinti';
$labels['export'] = 'Eksportuoti';
$labels['exportall'] = 'Eksportuoti visus';
$labels['exportsel'] = 'Eksportuoti pažymėtus';
$labels['exportvcards'] = 'Eksportuoti adresatus  „vCard“ formatu';
$labels['newgroup'] = 'Kurti naują grupę';
$labels['addgroup'] = 'Pridėti grupę';
$labels['grouprename'] = 'Pervardinti grupę';
$labels['groupdelete'] = 'Pašalinti grupę';
$labels['groupassign'] = 'Priskirti grupei...';
$labels['groupremove'] = 'Šalinti iš grupės';
$labels['groupremoveselected'] = 'Pašalinti pažymėtus adresatus iš grupės';
$labels['uponelevel'] = 'Į viršų per vieną';
$labels['previouspage'] = 'Rodyti ankstesnį puslapį';
$labels['firstpage'] = 'Rodyti pirmąjį puslapį';
$labels['nextpage'] = 'Rodyti tolesnį puslapį';
$labels['lastpage'] = 'Rodyti paskutinį puslapį';
$labels['group'] = 'Grupė';
$labels['groups'] = 'Grupės';
$labels['listgroup'] = 'Išvardinti grupės narius';
$labels['personaladrbook'] = 'Asmeniniai adresai';
$labels['searchsave'] = 'Įrašyti kaip radinių aplanką';
$labels['searchdelete'] = 'Pašalinti radinių aplanką';
$labels['import'] = 'Importuoti';
$labels['importcontacts'] = 'Importuoti adresatus';
$labels['importfromfile'] = 'Importuoti iš failo';
$labels['importtarget'] = 'Pridėti adresatus į';
$labels['importreplace'] = 'Perrašyti visą adresų knygą';
$labels['importgroups'] = 'Importuoti priskyrimus grupėms';
$labels['importgroupsall'] = 'Visus (sukurti trūkstamas grupes)';
$labels['importgroupsexisting'] = 'Tik esamoms grupėms';
$labels['importdesc'] = 'Galite įkelti kontaktus iš jau turimos adresų knygos.<br/>Šiuo metu galima importuoti kontaktus iš <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ar CSV (comma-separated) duomenų formatų.';
$labels['done'] = 'Baigta';
$labels['settingsfor'] = 'Nuostatos';
$labels['about'] = 'Apie';
$labels['preferences'] = 'Nuostatos';
$labels['userpreferences'] = 'Naudotojo nuostatos';
$labels['editpreferences'] = 'Keisti naudotojo nuostatas';
$labels['identities'] = 'Tapatybės';
$labels['manageidentities'] = 'Tvarkyti tapatybes';
$labels['newidentity'] = 'Sukurti naują tapatybę';
$labels['addidentity'] = 'Pridėti tapatybę';
$labels['editidentity'] = 'Tvarkyti tapatybę';
$labels['identityencryption'] = 'Šifravimas';
$labels['preferhtml'] = 'Rodyti HTML';
$labels['defaultcharset'] = 'Numatytoji koduotė';
$labels['htmlmessage'] = 'HTML laiškas';
$labels['messagepart'] = 'Dalis';
$labels['digitalsig'] = 'Skaitmeninis parašas';
$labels['dateformat'] = 'Datos formatas';
$labels['timeformat'] = 'Laiko formatas';
$labels['prettydate'] = 'Dailios datos';
$labels['setdefault'] = 'Laikyti numatytąja';
$labels['autodetect'] = 'Aptikti automatiškai';
$labels['language'] = 'Kalba';
$labels['timezone'] = 'Laiko juosta';
$labels['pagesize'] = 'Eilučių skaičius puslapyje';
$labels['signature'] = 'Parašas';
$labels['dstactive'] = 'Vasaros laikas skiriasi';
$labels['showinextwin'] = 'Atidaryti pranešimą naujame lange';
$labels['composeextwin'] = 'Rašyti naujame lange';
$labels['htmleditor'] = 'Laiškus kurti HTML formatu';
$labels['htmlonreply'] = 'tik atsakymus į HTML formato laiškus';
$labels['htmlonreplyandforward'] = 'atsakant į HTML laišką arba jį persiunčiant';
$labels['htmlsignature'] = 'HTML parašas';
$labels['showemail'] = 'Rodyti el. pašto adresą ir asmenvardį';
$labels['previewpane'] = 'Rodyti laiško peržiūros polangį';
$labels['skin'] = 'Grafinis apvalkalas';
$labels['logoutclear'] = 'Išvalyti Šiukšlinę atsijungiant';
$labels['logoutcompact'] = 'Suglaudinti gautųjų laiškų aplanką atsijungiant';
$labels['uisettings'] = 'Naudotojo sąsaja';
$labels['serversettings'] = 'Serverio nuostatos';
$labels['mailboxview'] = 'Pašto dėžutės rodymas';
$labels['mdnrequests'] = 'Gavus prašymą patvirtinti, jog laiškas perskaitytas';
$labels['askuser'] = 'visuomet klausti, ar siųsti patvirtinimą';
$labels['autosend'] = 'visuomet siųsti patvirtinimą automatiškai';
$labels['autosendknown'] = 'automatiškai siųsti patvirtinimą adresų knygoje esantiems adresatams, kitu atveju klausti';
$labels['autosendknownignore'] = 'automatiškai siųsti patvirtinimą adresų knygoje esantiems adresatams, kitu atveju nesiųsti';
$labels['autosendtrusted'] = 'automatiškai siųsti patvirtinimą patikimiems siuntėjams, kitu atveju klausti';
$labels['ignorerequest'] = 'Ignoruoti prašymą';
$labels['readwhendeleted'] = 'Pažymėti laišką kaip skaitytą prieš šalinant';
$labels['flagfordeletion'] = 'Pažymėti laišką šalinimui užuot šalinus';
$labels['skipdeleted'] = 'Nerodyti pašalintų laiškų';
$labels['deletealways'] = 'Pašalinti laiškus, jeigu nepavyksta jų perkelti į Šiukšlinę';
$labels['deletejunk'] = 'Pašalinti Brukalo aplanke esančius laiškus';
$labels['showremoteimages'] = 'Įkelti paveikslėlius iš interneto serverių';
$labels['allowremoteresources'] = 'Leisti nuotolinius išteklius (paveikslėlius, stilius)';
$labels['fromknownsenders'] = 'tik žinomų siuntėjų laiškuose';
$labels['always'] = 'visada';
$labels['alwaysbutplain'] = 'visuomet, išskyrus atsakant į grynojo teksto laiškus';
$labels['showinlineimages'] = 'Rodyti pridėtus paveikslėlius žemiau laiško';
$labels['autosavedraft'] = 'Automatiškai įrašyti juodraščius';
$labels['everynminutes'] = 'kas $n min.';
$labels['refreshinterval'] = 'Atnaujinti (patikrinti, ar nėra naujų laiškų ir pan.)';
$labels['never'] = 'niekada';
$labels['immediately'] = 'nedelsiant';
$labels['messagesdisplaying'] = 'Laiškų rodymas';
$labels['messagescomposition'] = 'Laiškų rašymas';
$labels['mimeparamfolding'] = 'Prisegtų failų vardų kodavimas';
$labels['2231folding'] = 'visiškas RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'visiškas RFC 2047 (kitos programos)';
$labels['force7bit'] = 'Naudoti MIME kodavimą 8 bitų simboliams';
$labels['savelocalstorage'] = "Išsaugoti naršyklės laikinoje saugykloje (keše)";
$labels['advancedoptions'] = 'Papildomos nuostatos';
$labels['toggleadvancedoptions'] = 'Rodyti/slėpti papildomus nustatymus';
$labels['focusonnewmessage'] = 'Fokusuoti naršyklės langą gavus naują laišką';
$labels['checkallfolders'] = 'Naujų laiškų ieškoti visuose aplankuose';
$labels['displaynext'] = 'Rodyti kitą sąrašo įrašą ištrinus/perkėlus';
$labels['defaultfont'] = 'Numatytasis HTML laiškų šriftas';
$labels['mainoptions'] = 'Pagrindinės nuostatos';
$labels['browseroptions'] = 'Naršyklės nuostatos';
$labels['section'] = 'Sekcija';
$labels['maintenance'] = 'Priežiūra';
$labels['newmessage'] = 'Naujas laiškas';
$labels['signatureoptions'] = 'Parašo nuostatos';
$labels['whenreplying'] = 'Kuriant atsakymą';
$labels['replyempty'] = 'necituoti originalaus laiško';
$labels['replytopposting'] = 'rašyti atsakymą virš cituojamo laiško';
$labels['replytoppostingnoindent'] = 'rašyti atsakymą virš cituojamo laiško (be įtraukos)';
$labels['replybottomposting'] = 'rašyti atsakymą po cituojamu laišku';
$labels['replyremovesignature'] = 'Pašalinti cituojamame laiške esantį parašą';
$labels['autoaddsignature'] = 'Automatiškai pridėti parašą';
$labels['newmessageonly'] = 'tik naujuose laiškuose';
$labels['replyandforwardonly'] = 'tik atsakymuose ir persiunčiamuose laiškuose';
$labels['insertsignature'] = 'Pridėti parašą';
$labels['sigbelow'] = 'Įterpti parašą žemiau kabutėmis išskirto laiško turinio';
$labels['sigseparator'] = 'Priverstinai naudoti standartinį skyriklį parašuose';
$labels['automarkread'] = 'Pažymėti laiškus kaip skaitytus';
$labels['afternseconds'] = 'praėjus $n sek.';
$labels['reqmdn'] = 'Visuomet prašyti patvirtinimo, jog laiškas perskaitytas';
$labels['reqdsn'] = 'Visuomet prašyti laiško pristatymo pažymos';
$labels['replysamefolder'] = 'Atsakymus talpinti į tą patį aplanką, kuriame yra pirminis laiškas';
$labels['defaultabook'] = 'Numatytoji adresų knyga';
$labels['autocompletesingle'] = 'Užbaigiant adresus, praleisti antrinius';
$labels['listnamedisplay'] = 'Rodyti adresatus kaip';
$labels['collectedaddresses'] = 'Surinkti adresai';
$labels['collectedrecipients'] = 'Surinkti gavėjai';
$labels['collectedrecipientsopt'] = 'Laikyti išsiunčiamų el. laiškų gavėjus ties';
$labels['collectedsendersopt'] = 'Laikyti patikimus siuntėjus ties';
$labels['trustedsenders'] = 'Patikimi siuntėjai';
$labels['spellcheckbeforesend'] = 'Tikrinti rašybą prieš išsiunčiant laišką';
$labels['spellcheckoptions'] = 'Rašybos tikrinimo nuostatos';
$labels['spellcheckignoresyms'] = 'Nepaisyti žodžių su spec. simboliais';
$labels['spellcheckignorenums'] = 'Nepaisyti žodžių su skaitmenimis';
$labels['spellcheckignorecaps'] = 'Nepaisyti žodžių vien iš didžiųjų raidžių';
$labels['addtodict'] = 'Įtraukti į žodyną';
$labels['mailtoprotohandler'] = 'Užregistruoti svetainę kaip dirbančią su „mailto:“ saitais';
$labels['standardwindows'] = 'Iškylančiuosius langus traktuoti kaip įprastus';
$labels['forwardmode'] = 'Laiškų persiuntimo būdas';
$labels['inline'] = 'kaip citatą';
$labels['asattachment'] = 'kaip priedas';
$labels['replyallmode'] = 'Numatytasis mygtuko „Atsakyti visiems“ veiksmas';
$labels['replyalldefault'] = 'atsakyti visiems';
$labels['replyalllist'] = 'atsakyti el. pašto grupei (jei aptikta)';
$labels['allmessages'] = 'visi laiškai';
$labels['folder'] = 'Aplankas';
$labels['folders'] = 'Aplankai';
$labels['foldername'] = 'Aplanko vardas';
$labels['subscribed'] = 'Užsakytas';
$labels['messagecount'] = 'Laiškai';
$labels['create'] = 'Sukurti';
$labels['createfolder'] = 'Sukurti naują aplanką';
$labels['managefolders'] = 'Tvarkyti aplankus';
$labels['specialfolders'] = 'Specialieji aplankai';
$labels['properties'] = 'Savybės';
$labels['folderproperties'] = 'Aplanko savybės';
$labels['parentfolder'] = 'Tėvinis aplankas';
$labels['location'] = 'Vieta';
$labels['info'] = 'Informacija';
$labels['getfoldersize'] = 'Spustelėkite, norėdami sužinoti aplanko dydį';
$labels['changesubscription'] = 'Spustelėkite, norėdami keisti prenumeratos nuostatas';
$labels['foldertype'] = 'Aplanko tipas';
$labels['personalfolder'] = 'Asmeninis aplankas';
$labels['otherfolder'] = 'Kito naudotojo aplankas';
$labels['sharedfolder'] = 'Viešas aplankas';
$labels['findfolders'] = 'Ieškoti aplankų';
$labels['findcontacts'] = 'Rasti adresatus';
$labels['findmail'] = 'Rasti el. laiškus';
$labels['namespace.personal'] = 'Asmeninis';
$labels['namespace.other'] = 'Kito naudotojo';
$labels['namespace.shared'] = 'Bendrinamas';
$labels['dualuselabel'] = 'Savyje gali turėti tik';
$labels['dualusemail'] = 'laiškai';
$labels['dualusefolder'] = 'aplankai';
$labels['generate'] = 'Generuoti';
$labels['encryptioncreatekey'] = 'Kurti naują raktų porą';
$labels['openmailvelopesettings'] = 'Atverti Mailvelope nustatymus';
$labels['encryptionprivkeysinmailvelope'] = 'Turite $nr atitinkančius privačiuosius raktus, saugomus jūsų Mailvelope raktinėje:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Šio siuntėjo tapatybė kol kas neturi jūsų Mailvelope priede saugomo PGP privačiojo rakto. Ar norėtumėte jį sukurti, kad būtų įjungtas šifruotas susirašinėjimas?';
$labels['encryption'] = 'Šifravimas';
$labels['mailvelopeoptions'] = 'Mailvelope nuostatos';
$labels['mailvelopemainkeyring'] = 'Naudoti Mailvelope pagrindinę raktinę';
$labels['mailvelopenotfound'] = 'Jūsų naršyklėje nėra įjungtas/įdiegtas Mailvelope priedas.';
$labels['sortby'] = 'Rikiuoti pagal';
$labels['sortasc'] = 'Rikiuoti didėjančiai';
$labels['sortdesc'] = 'Rikiuoti mažėjančiai';
$labels['undo'] = 'Atšaukti';
$labels['installedplugins'] = 'Įdiegti įskiepiai';
$labels['plugin'] = 'Papildinys';
$labels['version'] = 'Versija';
$labels['source'] = 'Šaltinis';
$labels['destination'] = 'Paskirtis';
$labels['license'] = 'Licencija';
$labels['support'] = 'Gauti pagalbos';
$labels['savedsearches'] = 'Įrašytos paieškos';
$labels['dateformatY'] = 'MMMM';
$labels['dateformaty'] = 'MM';
$labels['dateformatm'] = 'mm';
$labels['dateformatd'] = 'dd';
$labels['dateformatj'] = 'd';
$labels['dateformatn'] = 'm';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unikodas';
$labels['english'] = 'Anglų';
$labels['westerneuropean'] = 'Vakarų Europos';
$labels['easterneuropean'] = 'Rytų Europos';
$labels['southeasterneuropean'] = 'Pietryčių Europos';
$labels['baltic'] = 'Baltijos šalių';
$labels['cyrillic'] = 'Kirilica';
$labels['arabic'] = 'Arabų';
$labels['greek'] = 'Graikų';
$labels['hebrew'] = 'Hebrajų';
$labels['turkish'] = 'Turkų';
$labels['nordic'] = 'Šiaurės šalių';
$labels['thai'] = 'Tajų';
$labels['celtic'] = 'Keltų';
$labels['vietnamese'] = 'Vietnamiečių';
$labels['japanese'] = 'Japonų';
$labels['korean'] = 'Korėjiečių';
$labels['chinese'] = 'Kinų';
$labels['arialabeltopnav'] = 'Lango valdymas';
$labels['arialabeltasknav'] = 'Aplikacijos užduotys';
$labels['arialabeltoolbar'] = 'Aplikacijos įrankių juosta';
$labels['arialabellistnav'] = 'Naršymas sąraše';
$labels['arialabelactivetask'] = 'Aktyvi užduotis';
$labels['arialabelmessagessearchfilter'] = 'Laiškų sąrašo filtras';
$labels['arialabelmailsearchform'] = 'El. laiško paieškos forma';
$labels['arialabelcontactsearchform'] = 'Adresatų paieškos forma';
$labels['arialabelmailquicksearchbox'] = 'El. pašto paieškos įvestis';
$labels['arialabelquicksearchbox'] = 'Paieškos įvestis';
$labels['arialabelfoldersearchfilter'] = 'Aplankų sąrašo filtras';
$labels['arialabelfoldersearchform'] = 'Aplanko paieškos forma';
$labels['arialabelfolderlist'] = 'Laiškų aplanko pasirinkimas';
$labels['arialabelmessagelist'] = 'Elektroninių laiškų sąrašas';
$labels['arialabelmailpreviewframe'] = 'Laiško peržiūra';
$labels['arialabelmailboxmenu'] = 'Veiksmų su aplankais meniu';
$labels['arialabellistselectmenu'] = 'Sąrašo pasirinkimo meniu';
$labels['arialabelthreadselectmenu'] = 'Gijų sąrašo meniu';
$labels['arialabelmessagelistoptions'] = 'Laiškų rodymo ir rikiavimo nustatymai';
$labels['arialabelmailimportdialog'] = 'Laiškų importavimo dialogas';
$labels['arialabelmessagenav'] = 'Navigacija tarp laiškų';
$labels['arialabelmessagebody'] = 'Laiško turinys';
$labels['arialabelmessageactions'] = 'Veiksmai su laišku';
$labels['arialabelcontactquicksearch'] = 'Adresatų paieškos forma';
$labels['arialabelcontactsearchbox'] = 'Kontaktų paieškos įvestis';
$labels['arialabelmessageheaders'] = 'Laiško antraštės';
$labels['arialabelforwardingoptions'] = 'Persiuntimo nustatymai';
$labels['arialabelreplyalloptions'] = 'Atsakyti visiems nustatymai';
$labels['arialabelmoremessageactions'] = 'Daugiau laiškų veiksmų';
$labels['arialabelmorecontactactions'] = 'Daugiau adresatų veiksmų';
$labels['arialabelmarkmessagesas'] = 'Pažymėti pasirinktus laiškus kaip...';
$labels['arialabelcomposeoptions'] = 'Laiško kūrimo nustatymai';
$labels['arialabelresponsesmenu'] = 'Atsakymų meniu';
$labels['arialabelattachmentuploadform'] = 'Priedo įkėlimo forma';
$labels['arialabelattachmentmenu'] = 'Priedo nuostatos';
$labels['arialabelmailtomenu'] = 'El. pašto adreso nuostatos';
$labels['arialabelattachmentpreview'] = 'Priedo peržiūra';
$labels['ariasummarycomposecontacts'] = 'Sąrašas adresatų ir grupių, kuriuos galima pasirinkti kaip gavėją';
$labels['arialabelcontactexportoptions'] = 'Adresatų eksportavimo nustymai';
$labels['arialabelabookgroupoptions'] = 'Adresų knygos/grupių nustatymai';
$labels['arialabelpreferencesform'] = 'Nustatymų forma';
$labels['arialabelidentityeditfrom'] = 'Tapatybės redagavimo forma';
$labels['arialabelresponseeditfrom'] = 'Atsakymo redagavimo forma';
$labels['arialabelsearchterms'] = 'Paieškos žodžiai';
$labels['arialabeldropactionmenu'] = 'Vilkimo veiksmo meniu';
$labels['arialabelheadersmenu'] = 'Gavėjo (antraštė) pridėjimo meniu';
$labels['arialabelimagetools'] = 'Paveikslų įrankiai';
$labels['helplistnavigation'] = 'Navigacija klaviatūra sąraše';
$labels['helplistkeyboardnavigation'] = "Rodyklė aukštyn / žemyn: fokusuoti / pasirinkti kitą eilutę.
Tarpas: pasirinkti sufokusuoą eilutę.
Lyg2 + rodyklė aukštyn / žemyn: pasirinkti papildomą eilutę viršuje / apačioje.
Vald + tarpas: įtraukti sufokusuotą eilutę į pasirinktų sąrašą / pašalinti ją iš jo.";
$labels['helplistkeyboardnavmessages'] = "Rodyklė dešinėn / kairėn: išskleisti / suskleisti laiškų giją (esant gijų veiksenoje).
Įvesti: atverti pasirinktą / sufokusuotą laišką.
Šalinti: perkelti pasirinktus laiškus į Šiukšlinę.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Atidaryti pasirinktą adresatą";
localization/lt_LT/messages.inc000064400000043205151727150540012567 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Įvyko klaida!';
$messages['loginfailed']  = 'Prisijungti nepavyko.';
$messages['cookiesdisabled'] = 'Jūsų naršyklė nepriima slapukų.';
$messages['sessionerror'] = 'Jūsų sesija negaliojanti.';
$messages['cookiesmismatch'] = 'Aptiktas slapukų neatitikimas. Prašome išvalyti savo naršyklės slapukus.';
$messages['storageerror'] = 'Nepavyko prisijungti prie IMAP serverio.';
$messages['servererror'] = 'Serverio klaida!';
$messages['servererrormsg'] = 'Serverio klaida: $msg';
$messages['accountlocked'] = 'Per daug nesėkmingų bandymų prisijungti. Bandykite jungtis vėliau.';
$messages['connerror'] = 'Ryšio klaida (nepavyko susijungti su serveriu)!';
$messages['dberror'] = 'Duomenų bazės klaida!';
$messages['dbconnerror'] = 'Nepavyko prisijungti prie duomenų bazės!';
$messages['windowopenerror'] = 'Buvo užblokuotas iššokantis langas!';
$messages['requesttimedout'] = 'Baigėsi užklausai skirtas laikas';
$messages['errorreadonly'] = 'Nepavyko atlikti veiksmo – aplankas prieinamas tik skaitymui.';
$messages['errornoperm'] = 'Nepavyko atlikti veiksmo – nepakanka teisių.';
$messages['erroroverquota'] = 'Nepavyko atlikti veiksmo. Diske trūksta laisvos vietos.';
$messages['erroroverquotadelete'] = 'Diske trūksta laisvos vietos. Laiškui pašalinti naudokite Lyg2+Šal (Shift+Del) klavišų kombinaciją.';
$messages['invalidrequest'] = 'Netinkama užklausa! Duomenys neišsaugoti.';
$messages['invalidhost'] = 'Negalimas serverio vardas.';
$messages['nomessagesfound'] = 'Šioje pašto dėžutėje laiškų nėra.';
$messages['loggedout'] = 'Jūs sėkmingai užbaigėte sesiją. Viso gero!';
$messages['mailboxempty'] = 'Pašto dėžutė tuščia.';
$messages['nomessages'] = 'Laiškų nėra';
$messages['refreshing'] = 'Atnaujinama…';
$messages['loading'] = 'Įkeliama…';
$messages['uploading'] = 'Įkeliamas failas…';
$messages['attaching'] = 'Įkeliamas failas…';
$messages['uploadingmany'] = 'Įkeliami failai…';
$messages['loadingdata'] = 'Įkeliami duomenys…';
$messages['checkingmail'] = 'Tikrinama ar nėra naujų pranešimų…';
$messages['sendingmessage'] = 'Siunčiamas laiškas…';
$messages['messagesent'] = 'Laiškas sėkmingai nusiųstas.';
$messages['savingmessage'] = 'Laiškas įrašomas…';
$messages['messagesaved'] = 'Laiškas įrašytas į Juodraščių aplanką.';
$messages['successfullysaved'] = 'Sėkmingai įrašyta.';
$messages['savingresponse'] = 'Įrašomas atsakymo tekstas…';
$messages['deleteresponseconfirm'] = 'Ar tikrai norite pašalinti šį atsakymo tekstą?';
$messages['nocontactselected'] = 'Kol kas nesate pasirinkę adresato.';
$messages['addedsuccessfully'] = 'Asmuo įtrauktas į adresų knygą.';
$messages['contactexists'] = 'Adresatas, turintis šį el. pašto adresą, jau egzistuoja.';
$messages['contactnameexists'] = 'Adresatas tokiu vardu jau egzistuoja.';
$messages['blockedimages'] = 'Siekiant apsaugoti Jūsų privatumą, paveikslėliai iš interneto neįkelti.';
$messages['blockedresources'] = 'Siekiant apsaugoti jūsų privatumą, nuotoliniai ištekliai buvo užblokuoti.';
$messages['suspiciousemail'] = 'Šiame laiške yra įtartinų el. pašto adresų, kurie gali būti apgaulingi.';
$messages['encryptedmessage'] = 'Apgailestaujame, tačiau šis laiškas užšifruotas ir negali būti parodytas.';
$messages['externalmessagedecryption'] = 'Šis laiškas šifruotas. Jį iššifruoti galima jūsų naršyklės priedo pagalba.';
$messages['nopubkeyfor'] = 'Adresui $email nerastas galiojantis viešasis raktas. Ar norite šifruoti laišką tiktai gavėjams?';
$messages['nopubkeyforsender'] = 'Jūsų tapatybei nerastas galiojantis viešasis raktas. Ar norite užšifruoti laišką tiktai gavėjams?';
$messages['encryptnoattachments'] = 'Jau įkeltų priedų užšifruoti negalima. Jei norite tai padaryti, įkelkite juos iš naujo šifravimo redaktoriuje.';
$messages['searchpubkeyservers'] = 'Ar norite ieškoti trūkstamų raktų viešuosiuose raktų serveriuose?';
$messages['encryptpubkeysfound'] = 'Aptikti šie viešieji raktai:';
$messages['keyservererror'] = 'Nepavyko gauti rakto iš raktų serverio.';
$messages['keyimportsuccess'] = 'Viešasis raktas $key sėkmingai įtrauktas į jūsų raktinę.';
$messages['nocontactsfound'] = 'Adresatų nerasta.';
$messages['contactnotfound'] = 'Ieškotas adresatas nerastas.';
$messages['contactsearchonly'] = 'Turite naudoti paieškos formą, norėdami pamatyti adresatus iš pasirinktos adresų knygos.';
$messages['sendingfailed'] = 'Laiško išsiųsti nepavyko.';
$messages['senttooquickly'] = 'Turite luktelėti $sec sek., kad galėtumėte išsiųsti laišką.';
$messages['errorsavingsent'] = 'Įrašant išsiųstą laišką, įvyko klaida.';
$messages['errorsaving'] = 'Įvyko klaida įrašant.';
$messages['errormoving'] = 'Laiško(-ų) perkelti nepavyko.';
$messages['errorcopying'] = 'Laiško(-ų) nukopijuoti nepavyko.';
$messages['errordeleting'] = 'Laiško(-ų) pašalinti nepavyko.';
$messages['errormarking'] = 'Laiško(-ų) pažymėti nepavyko.';
$messages['alerttitle'] = 'Dėmėsio';
$messages['confirmationtitle'] = 'Ar tikrai...';
$messages['deletecontactconfirm']  = 'Ar tikrai pašalinti pažymėtą(-us) adresatą(-us)?';
$messages['deletegroupconfirm']  = 'Ar tikrai pašalinti pažymėtą grupę?';
$messages['deletemessagesconfirm'] = 'Ar tikrai pašalinti pažymėtą(-us) laišką(-us)?';
$messages['deletefolderconfirm']  = 'Ar tikrai pašalinti šį aplanką?';
$messages['movefolderconfirm']  = 'Ar tikrai norite perkelti šį aplanką?';
$messages['purgefolderconfirm']  = 'Ar tikrai pašalinti visus šiame aplanke esančius laiškus?';
$messages['contactdeleting'] = 'Adresatas(-ai) šalinamas(-i)…';
$messages['groupdeleting'] = 'Grupė šalinama…';
$messages['folderdeleting'] = 'Aplankas šalinamas…';
$messages['foldermoving'] = 'Aplankas perkeliamas…';
$messages['foldersubscribing'] = 'Aplankas prenumeruojamas…';
$messages['folderunsubscribing'] = 'Atsisakoma aplanko prenumeratos…';
$messages['formincomplete'] = 'Forma nepilnai užpildyta.';
$messages['noemailwarning'] = 'Prašom įvesti teisingą el. pašto adresą.';
$messages['nonamewarning']  = 'Prašom įvesti vardą.';
$messages['nopagesizewarning'] = 'Prašom įvesti puslapio dydį.';
$messages['nosenderwarning'] = 'Prašom įvesti siuntėjo el. pašto adresą.';
$messages['recipientsadded'] = 'Gavėjas(-ai) sėkmingai pridėtas(-i).';
$messages['norecipientwarning'] = 'Prašom įvesti bent vieną gavėją.';
$messages['disclosedrecipwarning'] = 'Visi gavėjai matys vieni kitų el. pašto adresus. Tam, kad to neleistumėte ir apsaugotumėte jų privatumą, galite naudoti Bcc lauką.';
$messages['disclosedreciptitle'] = 'Per daug viešų gavėjų';
$messages['nosubjectwarning']  = 'Temos laukelis tuščias. Ar norite temą įvesti dabar?';
$messages['nosubjecttitle']  = 'Nenurodyta tema';
$messages['nobodywarning'] = 'Išsiųsti šį laišką be teksto?';
$messages['notsentwarning'] = 'Laiškas nebuvo išsiųstas ir jame yra neišsaugotų pakeitimų. Ar norite panaikinti savo pakeitimus?';
$messages['restoresavedcomposedata'] = 'Buvo rastas anksčiau pradėtas rašyti, bet neišsiųstas laiškas.\n\nTema:$subject\nIšsaugotas: $date\n\nAr norite šį laišką atkurti?';
$messages['nosearchname'] = 'Prašom įvesti vardą arba el. pašto adresą.';
$messages['notuploadedwarning'] = 'Įkelti dar ne visi priedai. Prašom palaukti arba atšaukti jų įkėlimą.';
$messages['searchsuccessful'] = 'Rasta laiškų: $nr.';
$messages['contactsearchsuccessful'] = 'Rasta adresatų: $nr.';
$messages['searchnomatch'] = 'Paiešką atitinkančių rezultatų nėra.';
$messages['searching'] = 'Ieškoma…';
$messages['checking'] = 'Tikrinama…';
$messages['stillsearching'] = 'Dar ieškoma...';
$messages['nospellerrors'] = 'Rašybos klaidų nerasta.';
$messages['folderdeleted'] = 'Aplankas sėkmingai pašalintas.';
$messages['foldersubscribed'] = 'Aplankas sėkmingai užprenumeruotas.';
$messages['folderunsubscribed'] = 'Aplanko prenumeratos sėkmingai atsisakyta.';
$messages['deletedsuccessfully'] = 'Sėkmingai pašalinta.';
$messages['converting'] = 'Šalinamas laiško formatavimas…';
$messages['messageopenerror'] = 'Nepavyko įkelti laiško iš serverio.';
$messages['filelinkerror'] = 'Failo įkelti nepavyko.';
$messages['fileuploaderror'] = 'Nepavyko įkelti failo.';
$messages['csvfilemismatch'] = 'Kelių CSV failų su skirtingais laukais importavimas yra nepalaikomas.';
$messages['filesizeerror'] = 'Įkeltas failas viršija maksimalų leistiną dydį – $size.';
$messages['filecounterror'] = 'Jūs daugiausiai vienu metu galite įkelti $count failų(-us).';
$messages['msgsizeerror'] = 'Nepavyko pridėti failo. Viršytas maksimalus leistinas laiko dydis ($size).';
$messages['msgsizeerrorfwd'] = 'Viršytas maksimalus laiško dydis ($size). $num laiškai(-ų) nebuvo pridėti.';
$messages['copysuccess'] = 'Nukopijuota adresatų: $nr.';
$messages['movesuccess'] = 'Perkelta adresatų: $nr.';
$messages['copyerror'] = 'Adresatų nukopijuoti nepavyko.';
$messages['moveerror'] = 'Adresatų perkelti nepavyko.';
$messages['sourceisreadonly'] = 'Šis adresų šaltinis prieinamas tik skaitymui.';
$messages['errorsavingcontact'] = 'Asmens adreso įrašyti nepavyko.';
$messages['movingmessage'] = 'Laiškas(-ai) perkeliamas(-i)…';
$messages['copyingmessage'] = 'Laiškas(-ai) kopijuojamas(-i)…';
$messages['copyingcontact'] = 'Adresatas(-ai) kopijuojamas(-i)…';
$messages['movingcontact'] = 'Adresatas(-ai) perkeliamas(-i)…';
$messages['deletingmessage'] = 'Laiškas(-ai) šalinamas(-i)…';
$messages['markingmessage'] = 'Laiškas(-ai) žymimas(-i)…';
$messages['addingmember'] = 'Adresatas(-ai) įtraukiamas(-i) į grupę…';
$messages['removingmember'] = 'Adresatas(-ai) šalinamas(-i) iš grupės…';
$messages['receiptsent'] = 'Laiško perskaitymo pažyma sėkmingai išsiųsta.';
$messages['errorsendingreceipt'] = 'Laiško perskaitymo pažymos išsiųsti nepavyko.';
$messages['deleteidentityconfirm'] = 'Ar tikrai norite pašalinti šią tapatybę?';
$messages['nodeletelastidentity'] = 'Šios tapatybės šalinti negalima, nes ji vienintelė likusi.';
$messages['forbiddencharacter'] = 'Aplanko varde aptikta neleistinų simbolių.';
$messages['selectimportfile'] = 'Parinkite norimą įkelti failą.';
$messages['addresswriterror'] = 'Pasirinktoji adresų knyga prieinama tik skaitymui.';
$messages['contactaddedtogroup'] = 'Adresatai sėkmingai įtraukti į šią grupę.';
$messages['contactremovedfromgroup'] = 'Adresatai sėkmingai pašalinti iš šios grupės.';
$messages['nogroupassignmentschanged'] = 'Grupių priskyrimai nepakeisti.';
$messages['importwait'] = 'Importuojama, prašome palaukti…';
$messages['importformaterror'] = 'Importas nepavyko! Įkeltasis failas nėra tinkamas importavimui duomenų failas.';
$messages['importconfirm'] = '<b>Sėkmingai importuoti $inserted adresatai(-ų)</b>';
$messages['importconfirmskipped'] = '<b>Praleisti $skipped jau egzistuojantys adresatai(-ų)</b>';
$messages['importmessagesuccess'] = 'Importuota laiškų: $nr';
$messages['importmessageerror'] = 'Importas nepavyko! Įkeltasis failas nėra tinkamas importavimui laiško arba pašto dėžutės failas';
$messages['opnotpermitted'] = 'Veiksmas neleistinas!';
$messages['nofromaddress'] = 'Nenurodytas pasirinktosios tapatybės el. pašto adresas.';
$messages['editorwarning'] = 'Keičiant redaktorių gali būti prarastas teksto formatavimas. Ar norite tęsti?';
$messages['httpreceivedencrypterror'] = 'Įvyko lemtinga konfigūracijos klaida. Nedelsiant susisiekite su administratoriumi. <b>Jūsų laiškas negali būti išsiųstas.</b>';
$messages['smtpconnerror'] = 'SMTP klaida ($code): nepavyko prisijungti prie serverio.';
$messages['smtpautherror'] = 'SMTP klaida ($code): nepavyko autentikuotis.';
$messages['smtpfromerror'] = 'SMTP klaida ($code): nepavyko nurodyti siuntėjo „$from“ ($msg).';
$messages['smtptoerror'] = 'SMTP klaida ($code): nepavyko pridėti gavėjo „$to“ ($msg).';
$messages['smtprecipientserror'] = 'SMTP klaida: nepavyko apdoroti gavėjų sąrašo.';
$messages['smtputf8error'] = 'SMTP klaida: Serveris nepalaiko unikodo el. pašto adrese.';
$messages['smtpsizeerror'] = 'SMTP klaida: Laiško dydis viršija serverio nustatytą ribą ($limit)';
$messages['smtperror'] = 'SMTP klaida: $msg';
$messages['emailformaterror'] = 'Netinkamas el. pašto adresas: $email';
$messages['toomanyrecipients'] = 'Per daug gavėjų. Sumažinkite jų bent iki $max.';
$messages['maxgroupmembersreached'] = 'Grupės narių skaičius viršijo maksimalų leistiną ($max).';
$messages['internalerror'] = 'Įvyko klaida. Prašom bandyti iš naujo.';
$messages['contactdelerror'] = 'Nepavyko pašalinti adresato(-ų).';
$messages['contactdeleted'] = 'Adresatas(-ai) sėkmingai pašalintas(-i).';
$messages['contactrestoreerror'] = 'Nepavyko atkurti pašalinto(-ų) adresato(-ų).';
$messages['contactrestored'] = 'Adresatas(-ai) sėkmingai atkurtas(-i).';
$messages['groupdeleted'] = 'Grupė sėkmingai pašalinta.';
$messages['grouprenamed'] = 'Grupė sėkmingai pervardinta.';
$messages['groupcreated'] = 'Grupė sėkmingai sukurta.';
$messages['savedsearchdeleted'] = 'Radinių aplankas sėkmingai pašalintas.';
$messages['savedsearchdeleteerror'] = 'Radinių aplanko pašalinti nepavyko.';
$messages['savedsearchcreated'] = 'Radinių aplankas sėkmingai sukurtas.';
$messages['savedsearchcreateerror'] = 'Radinių aplanko sukurti nepavyko.';
$messages['messagedeleted'] = 'Laiškas(-ai) sėkmingai pašalintas(-i).';
$messages['messagemoved'] = 'Laiškas(-ai) sėkmingai perkeltas(-i).';
$messages['messagemovedtotrash'] = 'Laiškas(-ai) sėkmingai perkeltas(-i) į Šiukšlinę.';
$messages['messagecopied'] = 'Laiškas(-ai) sėkmingai nukopijuotas(-i).';
$messages['messagemarked'] = 'Laiškas(-ai) sėkmingai pažymėtas(-i).';
$messages['autocompletechars'] = 'Automatiniam užbaigimui būtini bent $min simboliai.';
$messages['autocompletemore'] = 'Rasta daugiau atitikmenų. Įveskite dar porą simbolių.';
$messages['namecannotbeempty'] = 'Vardas negali būti tuščias.';
$messages['nametoolong'] = 'Vardas yra per ilgas.';
$messages['namedotforbidden'] = 'Aplanko vardas negali prasidėti tašku.';
$messages['folderupdated'] = 'Aplanko savybės sėkmingai atnaujintos.';
$messages['foldercreated'] = 'Aplankas sėkmingai sukurtas.';
$messages['invalidimageformat'] = 'Paveikslo formatas netinkamas.';
$messages['mispellingsfound'] = 'Laiške rasta rašybos klaidų.';
$messages['parentnotwritable'] = 'Nepavyko sukurti arba perkelti aplanko į parinktą tėvinį aplanką. Trūksta prieigos teisių.';
$messages['messagetoobig'] = 'Laiško dalis yra per didelė, kad galėtų būti apdorota.';
$messages['attachmentvalidationerror'] = 'Šis priedas yra įtartinas, nes jo tipas neatitinka laiške deklaruoto tipo. Jeigu nepasitikite siuntėju, tuomet jūs neturėtumėte naršyklėje atverti šio priedo, nes jame gali būti kenkėjiškas turinys.<br/><br/><em>Tikėtasi: $expected; rasta: $detected</em>';
$messages['noscriptwarning'] = 'Dėmesio: šiai saityno el. pašto sistemai veikti būtini „JavaScript“ scenarijai! Norėdami ja naudotis, įjunkite „JavaScript“ savo naršyklės nuostatose.';
$messages['messageissent'] = 'Laiškas jau buvo išsiųstas, bet dar neišsaugotas. Ar norite jį išsaugoti?';
$messages['errnotfound'] = 'Failas nerastas';
$messages['errnotfoundexplain'] = 'Ieškomas šaltinis nerastas';
$messages['errfailedrequest'] = 'Nesėkminga užklausa';
$messages['errauthorizationfailed'] = 'Autorizacija nepavyko';
$messages['errunauthorizedexplain'] = 'Nepavyko patvirtinti ar jums leista naudotis šia paslauga.';
$messages['errrequestcheckfailed'] = 'Patikrinimas nepavyko';
$messages['errcsrfprotectionexplain'] = "Jūsų saugumui, prieiga prie šio išteklio yra apsaugota nuo CSRF.\nlfJeigu jūs tai matote, tai reiškia, kad taisyklingai neatsijungėte prieš baigdamas darbąsu programa.\n\nNorint tęsti reikalingas žmogaus įsikišimas.";
$messages['errcontactserveradmin'] = 'Susisiekite su serverio administratoriumi.';
$messages['clicktoresumesession'] = 'Spauskite čia, tam kad tęstumėte ankstesnę sesiją';
$messages['errcomposesession'] = 'Laiško rašymo sesijos klaida.';
$messages['errcomposesessionexplain'] = 'Ieškoma pranešimo kūrimo sesija nerasta.';
$messages['clicktocompose'] = 'Spausk čia, norėdamas pradėti rašyti naują laišką';
$messages['nosupporterror'] = 'Jūsų saityno naršyklė nepalaiko šios ypatybės.';
$messages['siginserted'] = 'Parašas sėkmingai įterptas.';
$messages['responseinserted'] = 'Atsakymas sėkmingai įterptas.';
$messages['noresponsesavailable'] = 'Nėra prieinamų atsakymų';
$messages['listempty'] = 'Sąrašas tuščias.';
$messages['listusebutton'] = 'Norėdami sukurti naują įrašą, naudokite mygtuką "Sukurti".';
$messages['keypaircreatesuccess'] = 'Nauja raktų pora buvo sėkmingai sukurta tapatybei $identity.';
$messages['emptyattachment'] = 'Atrodo, kad šis priedas yra tuščias.<br>Pasiteiraukite asmens, kuris atsiuntė jums šį priedą.';
$messages['oauthloginfailed'] = 'OAuth prisijungimas nepavyko. Bandykite dar kartą.';
localization/fr_FR/timezones.inc000064400000047265151727150540012767 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'TUC';
$labels['tz:africa'] = 'Afrique';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis-Abeba';
$labels['tz:africa:algiers'] = 'Alger';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Le Caire';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaína';
$labels['tz:america:argentina'] = 'Argentine';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbade';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Bélize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Détroit';
$labels['tz:america:dominica'] = 'Dominique';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenade';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyane';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havane';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaïque';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Mérida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montévidéo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Dakota du Nord';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Centre';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Saint-Domingue';
$labels['tz:america:sao_paulo'] = 'São Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John’s";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Sainte-Lucie';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctique';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d’Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctique';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asie';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beyrouth';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damas';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubaï';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hébron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jérusalem';
$labels['tz:asia:kabul'] = 'Kaboul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Koweït';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manille';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Séoul';
$labels['tz:asia:shanghai'] = 'Shanghaï';
$labels['tz:asia:singapore'] = 'Singapour';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Téhéran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantique';
$labels['tz:atlantic:azores'] = 'Açores';
$labels['tz:atlantic:bermuda'] = 'Bermudes';
$labels['tz:atlantic:canary'] = 'Canaries';
$labels['tz:atlantic:cape_verde'] = 'Cap Vert';
$labels['tz:atlantic:faroe'] = 'Féroé';
$labels['tz:atlantic:madeira'] = 'Madère';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'Géorgie du Sud';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australie';
$labels['tz:australia:adelaide'] = 'Adélaïde';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europe';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorre';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athènes';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Bruxelles';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen ';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'île de Man';
$labels['tz:europe:istanbul'] = 'Istamboul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbonne';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'Londres';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malte';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscow ';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'Saint-Marin';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Vienne';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varsovie';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indien';
$labels['tz:indian:antananarivo'] = 'Tananarive';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comores';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Maurice';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Réunion';
$labels['tz:pacific'] = 'Pacifique';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Pâques';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquises';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Nouméa';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/fr_FR/csv2vcard.inc000064400000007306151727150540012637 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/<lang>/csv2vcard.inc                                     |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2013, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Anniversaire de mariage ou fête";
$map['assistants_name'] = "Nom de l''assistant(e)";
$map['assistants_phone'] = "Téléphone de l''assistant(e)";
$map['birthday'] = "Anniversaire";
$map['business_city'] = "Ville (bureau)";
$map['business_countryregion'] = "Pays/Région (bureau)";
$map['business_fax'] = "Télécopie (bureau)";
$map['business_phone'] = "Téléphone (bureau)";
$map['business_phone_2'] = "Téléphone 2 (bureau)";
$map['business_postal_code'] = "Code postal (bureau)";
$map['business_state'] = "Dép/Région (bureau)";
$map['business_street'] = "Rue (bureau)";
$map['car_phone'] = "Téléphone (voiture)";
$map['categories'] = "Catégories";
$map['company'] = "Société";
$map['department'] = "Service";
$map['email_address'] = "Adresse de messagerie";
$map['first_name'] = "Prénom";
$map['gender'] = "Sexe";
$map['home_city'] = "Ville (domicile)";
$map['home_countryregion'] = "Pays/Région (domicile)";
$map['home_fax'] = "Télécopie (domicile)";
$map['home_phone'] = "Téléphone (domicile)";
$map['home_phone_2'] = "Téléphone 2 (domicile)";
$map['home_postal_code'] = "Code postal (domicile)";
$map['home_state'] = "Dép/Région (domicile)";
$map['home_street'] = "Rue (domicile)";
$map['job_title'] = "Profession";
$map['last_name'] = "Nom";
$map['managers_name'] = "Manager's Name";
$map['middle_name'] = "Deuxième prénom";
$map['mobile_phone'] = "Tél. mobile";
$map['notes'] = "Notes";
$map['other_city'] = "Ville (autre)";
$map['other_countryregion'] = "Pays/Région (autre)";
$map['other_fax'] = "Télécopie (autre)";
$map['other_phone'] = "Téléphone (autre)";
$map['other_postal_code'] = "Code postal (autre)";
$map['other_state'] = "Dép/Région (autre)";
$map['other_street'] = "Rue (autre)";
$map['pager'] = "Récepteur de radiomessagerie";
$map['primary_phone'] = "Téléphone principal";
$map['spouse'] = "Conjoint(e)";
$map['suffix'] = "Suffixe";
$map['title'] = "Titre";
$map['web_page'] = "Page Web";
$map['birth_day'] = "Jour";
$map['birth_month'] = "Mois";
$map['birth_year'] = "Année de naissance";
$map['display_name'] = "Nom à afficher";
$map['fax_number'] = "Fax";
$map['home_address'] = "Adresse privée";
$map['home_country'] = "Région";
$map['home_zipcode'] = "Code postal";
$map['mobile_number'] = "Portable";
$map['nickname'] = "Surnom";
$map['organization'] = "Société";
$map['pager_number'] = "Pager";
$map['primary_email'] = "Adresse électronique principale";
$map['secondary_email'] = "Adresse électronique secondaire";
$map['web_page_1'] = "Site Web 1";
$map['web_page_2'] = "Site Web 2";
$map['work_phone'] = "Tél. professionnel";
$map['work_address'] = "Adresse professionnelle";
$map['work_country'] = "Région";
$map['work_zipcode'] = "Code postal";
$map['_home_city'] = "Ville";
localization/fr_FR/labels.inc000064400000107005151727150540012201 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bienvenue à $product';
$labels['username'] = 'Nom d’utilisateur';
$labels['password'] = 'Mot de passe';
$labels['server'] = 'Serveur';
$labels['login'] = 'Connexion';
$labels['oauthlogin'] = 'Connexion à $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Déconnexion';
$labels['mail'] = 'Courriel';
$labels['settings'] = 'Paramètres';
$labels['addressbook'] = 'Carnet d’adresses';
$labels['darkmode'] = 'Mode sombre';
$labels['lightmode'] = 'Mode clair';
$labels['inbox'] = 'Boîte de réception';
$labels['drafts'] = 'Brouillons';
$labels['sent'] = 'Envoyés';
$labels['trash'] = 'Corbeille';
$labels['junk'] = 'Pourriels';
$labels['show_real_foldernames'] = 'Montrer les noms réels des dossiers spéciaux';
$labels['subject'] = 'Objet';
$labels['from'] = 'De';
$labels['sender'] = 'Expéditeur';
$labels['to'] = 'À';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Cci';
$labels['replyto'] = 'Répondre à';
$labels['followupto'] = 'Faire suivre à';
$labels['date'] = 'Date';
$labels['size'] = 'Taille';
$labels['priority'] = 'Priorité';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'État de lecture';
$labels['listoptions'] = 'Options de liste…';
$labels['listoptionstitle'] = 'Options de liste';
$labels['mailboxlist'] = 'Dossiers';
$labels['messagesfromto'] = 'Courriels de $from à $to sur $count';
$labels['threadsfromto'] = 'Fils de $from à $to sur $count';
$labels['messagenrof'] = 'Courriel $nr sur $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copier';
$labels['move'] = 'Déplacer';
$labels['moveto'] = 'Déplacer vers…';
$labels['copyto'] = 'Copier vers…';
$labels['download'] = 'Télécharger';
$labels['open'] = 'Ouvrir';
$labels['showattachment'] = 'Afficher';
$labels['showanyway'] = 'Afficher quand même';
$labels['filename'] = 'Nom du fichier';
$labels['filesize'] = 'Taille du fichier';
$labels['addtoaddressbook'] = 'Ajouter au carnet d’adresses';
$labels['sun'] = 'Dim';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mer';
$labels['thu'] = 'Jeu';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sam';
$labels['sunday'] = 'Dimanche';
$labels['monday'] = 'Lundi';
$labels['tuesday'] = 'Mardi';
$labels['wednesday'] = 'Mercredi';
$labels['thursday'] = 'Jeudi';
$labels['friday'] = 'Vendredi';
$labels['saturday'] = 'Samedi';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Fév';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Avr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aoû';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Déc';
$labels['longjan'] = 'Janvier';
$labels['longfeb'] = 'Février';
$labels['longmar'] = 'Mars';
$labels['longapr'] = 'Avril';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Juin';
$labels['longjul'] = 'Juillet';
$labels['longaug'] = 'Août';
$labels['longsep'] = 'Septembre';
$labels['longoct'] = 'Octobre';
$labels['longnov'] = 'Novembre';
$labels['longdec'] = 'Décembre';
$labels['today'] = 'Aujourd’hui';
$labels['refresh'] = 'Actualiser';
$labels['checkmail'] = 'Relever les nouveaux courriels';
$labels['compose'] = 'Rédiger';
$labels['writenewmessage'] = 'Créer un nouveau courriel';
$labels['reply'] = 'Répondre';
$labels['replytomessage'] = 'Répondre à l’expéditeur';
$labels['replytoallmessage'] = 'Répondre à la liste ou à l’expéditeur et à tous les destinataires';
$labels['replyall'] = 'Répondre à tous';
$labels['replylist'] = 'Répondre à la liste';
$labels['forward'] = 'Transférer';
$labels['forwardinline'] = 'Transférer dans le courriel';
$labels['forwardattachment'] = 'Transférer comme pièce jointe';
$labels['forwardmessage'] = 'Transférer le courriel';
$labels['bouncemsg'] = 'Renvoyer (retourné)';
$labels['bounce'] = 'Renvoyer';
$labels['deletemessage'] = 'Supprimer le courriel';
$labels['movemessagetotrash'] = 'Déplacer le courriel vers la corbeille';
$labels['printmessage'] = 'Imprimer ce courriel';
$labels['previousmessage'] = 'Afficher le courriel précédent';
$labels['firstmessage'] = 'Afficher le premier courriel';
$labels['nextmessage'] = 'Afficher le courriel suivant';
$labels['lastmessage'] = 'Afficher le dernier courriel';
$labels['backtolist'] = 'Retourner à la liste des courriels';
$labels['viewsource'] = 'Afficher la source';
$labels['mark'] = 'Marquer';
$labels['markmessages'] = 'Marquer les courriels';
$labels['markread'] = 'Comme lu';
$labels['markunread'] = 'Comme non lu';
$labels['markflagged'] = 'Comme signalé';
$labels['markunflagged'] = 'Comme non signalé';
$labels['markundeleted'] = 'Comme non supprimé';
$labels['moreactions'] = 'Plus d’actions…';
$labels['markallread'] = 'Tout marquer comme lu';
$labels['folders-cur'] = 'Dossier sélectionné seulement';
$labels['folders-sub'] = 'Dossier sélectionné et ses sous-dossiers';
$labels['folders-all'] = 'Tous les dossiers';
$labels['more'] = 'Plus';
$labels['back'] = 'Retour';
$labels['options'] = 'Options';
$labels['composeoptions'] = 'Options de rédaction';
$labels['optionsandattachments'] = 'Options et pièces jointes';
$labels['actions'] = 'Actions';
$labels['first'] = 'Premier';
$labels['last'] = 'Dernier';
$labels['previous'] = 'Précédent';
$labels['next'] = 'Suivant';
$labels['select'] = 'Sélectionner';
$labels['selection'] = 'Sélection';
$labels['all'] = 'Tous';
$labels['none'] = 'Aucun';
$labels['currpage'] = 'Page courante';
$labels['isread'] = 'Lu';
$labels['unread'] = 'Non lu';
$labels['flagged'] = 'Signalé';
$labels['unflagged'] = 'Non signalé';
$labels['unanswered'] = 'Sans réponse';
$labels['withattachment'] = 'Avec pièce jointe';
$labels['deleted'] = 'Supprimé';
$labels['undeleted'] = 'Non supprimé';
$labels['replied'] = 'Réponse faite';
$labels['forwarded'] = 'Transféré';
$labels['invert'] = 'Inverser';
$labels['filter'] = 'Filtrer';
$labels['list'] = 'Liste';
$labels['threads'] = 'Fils';
$labels['expand-all'] = 'Tout afficher';
$labels['expand-unread'] = 'Afficher les non lus';
$labels['collapse-all'] = 'Fermer tous';
$labels['threaded'] = 'Par fil';
$labels['showunread'] = 'Afficher les courriels non lus';
$labels['autoexpand_threads'] = 'Développer les fils de courriel';
$labels['do_expand'] = 'Tous les fils';
$labels['expand_only_unread'] = 'seulement avec des courriels non lus';
$labels['fromto'] = 'De/À';
$labels['flag'] = 'Signaler';
$labels['attachment'] = 'Pièce jointe';
$labels['nonesort'] = 'Aucun';
$labels['sentdate'] = 'Date d’envoi';
$labels['arrival'] = 'Date d’arrivée';
$labels['asc'] = 'ascendant';
$labels['desc'] = 'descendant';
$labels['listcolumns'] = 'Colonnes de la liste';
$labels['listsorting'] = 'Colonne de tri';
$labels['listorder'] = 'Ordre de tri';
$labels['listmode'] = 'Mode d’affichage en liste';
$labels['lmode'] = 'Mode de listage';
$labels['layout'] = 'Disposition';
$labels['layoutwidescreen'] = 'Écran large';
$labels['layoutdesktop'] = 'Bureau';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Écran large (vue sur 3 colonnes)';
$labels['layoutdesktopdesc'] = 'Bureau (liste large et aperçu des courriels dessous)';
$labels['layoutlistdesc'] = 'Liste (pas d’aperçu des courriels)';
$labels['folderactions'] = 'Actions sur les dossiers…';
$labels['compact'] = 'Compacter';
$labels['empty'] = 'Vider';
$labels['importmessages'] = 'Importer des courriels';
$labels['mailimportdesc'] = 'Vous pouvez téléverser des courriels en utilisant des fichiers au format <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ou <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Les fichiers multiples peuvent être compressés en fichiers zip.';
$labels['quota'] = 'Utilisation du disque';
$labels['unknown'] = 'inconnue';
$labels['unlimited'] = 'illimitée';
$labels['quotatype'] = 'Type de quota';
$labels['quotatotal'] = 'Limite';
$labels['quotaused'] = 'Utilisé';
$labels['quotastorage'] = 'Espace disque';
$labels['quotamessage'] = 'Nombre de courriels';
$labels['shortheaderdate'] = 'Le $date';
$labels['shortheaderto'] = 'À $to, le $date';
$labels['shortheaderfrom'] = 'De $from, le $date';
$labels['quicksearch'] = 'Recherche rapide';
$labels['searchplaceholder'] = 'Recherche…';
$labels['resetsearch'] = 'Réinitialiser la recherche';
$labels['searchmod'] = 'Modificateurs de recherche';
$labels['msgtext'] = 'Courriel entier';
$labels['body'] = 'Corps';
$labels['type'] = 'Type';
$labels['namex'] = 'Nom';
$labels['searchscope'] = 'Portée';
$labels['currentfolder'] = 'Répertoire actuel';
$labels['subfolders'] = 'Ceci et les sous-dossiers';
$labels['allfolders'] = 'Tous les dossiers';
$labels['searchinterval-1W'] = 'plus d’une semaine';
$labels['searchinterval-1M'] = 'plus d’un mois';
$labels['searchinterval-1Y'] = 'plus d’une année';
$labels['searchinterval1W'] = 'moins d’une semaine';
$labels['searchinterval1M'] = 'moins d’un mois';
$labels['searchinterval1Y'] = 'moins d’une année';
$labels['openinextwin'] = 'Ouvrir dans une nouvelle fenêtre';
$labels['emlsave'] = 'Télécharger (.eml)';
$labels['changeformattext'] = 'Afficher au format texte en clair';
$labels['changeformathtml'] = 'Afficher au format HTML';
$labels['editasnew'] = 'Éditer comme nouveau';
$labels['send'] = 'Envoyer';
$labels['sendmessage'] = 'Envoyer un courriel';
$labels['savemessage'] = 'Enregistrer comme brouillon';
$labels['addattachment'] = 'Joindre un fichier';
$labels['charset'] = 'Jeu de caractères';
$labels['editortype'] = 'Type d’éditeur';
$labels['returnreceipt'] = 'Avis d’ouverture du courriel';
$labels['dsn'] = 'Notification d’état de distribution';
$labels['keepformatting'] = 'Garder le format';
$labels['mailreplyintro'] = 'Le $date, $sender a écrit :';
$labels['originalmessage'] = 'Courriel original';
$labels['selectimage'] = 'Sélectionner l’image';
$labels['addimage'] = 'Ajouter une image';
$labels['selectmedia'] = 'Choisir un film';
$labels['addmedia'] = 'Ajouter un film';
$labels['encrypt'] = 'Chiffrer';
$labels['encryptmessage'] = 'Chiffrer le message';
$labels['encryptmessagemailvelope'] = 'Chiffrer le message avec Mailvelope';
$labels['importpubkeys'] = 'Importer des clés publiques';
$labels['encryptedsendialog'] = 'Envoi du message chiffré';
$labels['encryptandsign'] = 'Chiffrer et signer';
$labels['keyid'] = 'ID de la clé';
$labels['keylength'] = 'bits';
$labels['keyexpired'] = 'Expirée';
$labels['keyrevoked'] = 'Révoquée';
$labels['bccinstead'] = 'Utiliser la Cci';
$labels['addheader'] = 'Ajouter un destinataire (en-tête)';
$labels['insert'] = 'Insérer';
$labels['insertcontact'] = 'Insérer des contacts';
$labels['recipient'] = 'Destinataire';
$labels['recipientedit'] = 'Modification du destinataire';
$labels['editidents'] = 'Éditer les identités';
$labels['spellcheck'] = 'Orthographe';
$labels['checkspelling'] = 'Vérification de l’orthographe';
$labels['resumeediting'] = 'Retourner à l’édition';
$labels['revertto'] = 'Revenir à';
$labels['restore'] = 'Restaurer';
$labels['restoremessage'] = 'Restaurer le courriel ?';
$labels['ignore'] = 'Ignorer';
$labels['responses'] = 'Réponses';
$labels['insertresponse'] = 'Insérer une réponse';
$labels['manageresponses'] = 'Gérer les réponses';
$labels['newresponse'] = 'Créer une nouvelle réponse';
$labels['addresponse'] = 'Ajouter une réponse';
$labels['editresponse'] = 'Éditer la réponse';
$labels['editresponses'] = 'Éditer les réponses';
$labels['responsename'] = 'Nom';
$labels['responsetext'] = 'Texte de la réponse';
$labels['attach'] = 'Joindre';
$labels['attachments'] = 'Pièces jointes';
$labels['upload'] = 'Téléverser';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fermer';
$labels['messageoptions'] = 'Options de courriel…';
$labels['togglecomposeoptions'] = 'Activer/désactiver les options de rédaction';
$labels['attachmentrename'] = 'Renommer la pièce jointe';
$labels['low'] = 'Basse';
$labels['lowest'] = 'La plus basse';
$labels['normal'] = 'Normale';
$labels['high'] = 'Élevée';
$labels['highest'] = 'La plus élevée';
$labels['nosubject'] = '(pas d’objet)';
$labels['showimages'] = 'Afficher les images';
$labels['allow'] = 'Autoriser';
$labels['alwaysshow'] = 'Toujours afficher les images de $sender';
$labels['alwaysallow'] = 'Toujours autoriser de $sender';
$labels['isdraft'] = 'Ceci est un brouillon.';
$labels['andnmore'] = '$nr de plus…';
$labels['details'] = 'Détails';
$labels['summary'] = 'Résumé';
$labels['headers'] = 'En-têtes';
$labels['allheaders'] = 'Tous les en-têtes…';
$labels['togglemoreheaders'] = 'Afficher plus d’en-têtes de courriels';
$labels['togglefullheaders'] = 'Afficher/masquer les en-têtes brutes de courriels';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texte en clair';
$labels['savesentmessagein'] = 'Enregistrer le courriel envoyé dans';
$labels['dontsave'] = 'ne pas enregistrer';
$labels['maxuploadsize'] = 'La taille de fichier maximum autorisée est $size';
$labels['addcc'] = 'Ajouter Cc';
$labels['addbcc'] = 'Ajouter une Cci';
$labels['addreplyto'] = 'Ajouter Répondre à';
$labels['addfollowupto'] = 'Ajouter Transférer à';
$labels['sendreceipt'] = 'Envoyer un avis de lecture ?';
$labels['mdnrequest'] = 'L’expéditeur de ce courriel a demandé d’être prévenu quand vous le lirez. Voulez-vous prévenir l’expéditeur ?';
$labels['receiptread'] = 'Avis d’ouverture du courriel (lu)';
$labels['yourmessage'] = 'Ceci est un avis d’ouverture de votre courriel';
$labels['receiptnote'] = 'Note : Cet avis indique seulement que le courriel a été affiché sur l’ordinateur du destinataire. Il n’y a aucune garantie que le destinataire ait lu ou compris le contenu du courriel.';
$labels['sendalwaysto'] = 'Toujours envoyer à $email';
$labels['zoomin'] = 'Zoom avant';
$labels['zoomout'] = 'Zoom arrière';
$labels['rotate'] = 'Rotation';
$labels['increaseimage'] = 'Augmenter la taille de l’image';
$labels['decreaseimage'] = 'Diminuer la taille de l’image';
$labels['rotateimage'] = 'Pivoter l’image';
$labels['showtools'] = 'Afficher les outils de manipulation des images';
$labels['hidetools'] = 'Cacher les outils de manipulation des images';
$labels['name'] = 'Nom d’affichage';
$labels['firstname'] = 'Prénom';
$labels['surname'] = 'Nom de famille';
$labels['middlename'] = 'Second prénom';
$labels['nameprefix'] = 'Préfixe';
$labels['namesuffix'] = 'Suffixe';
$labels['nickname'] = 'Surnom';
$labels['jobtitle'] = 'Appellation d’emploi';
$labels['department'] = 'Service';
$labels['gender'] = 'Sexe';
$labels['maidenname'] = 'Nom de jeune fille';
$labels['email'] = 'Courriel';
$labels['phone'] = 'Téléphone';
$labels['address'] = 'Adresse';
$labels['street'] = 'Rue';
$labels['locality'] = 'Ville';
$labels['zipcode'] = 'Code postal';
$labels['region'] = 'État/province/région';
$labels['country'] = 'Pays';
$labels['birthday'] = 'Date de naissance';
$labels['anniversary'] = 'Anniversaire';
$labels['website'] = 'Site Web';
$labels['instantmessenger'] = 'MI';
$labels['notes'] = 'Notes';
$labels['male'] = 'homme';
$labels['female'] = 'femme';
$labels['manager'] = 'Gestionnaire';
$labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Conjoint/conjointe';
$labels['allfields'] = 'Tous les champs';
$labels['search'] = 'Recherche';
$labels['searchresult'] = 'Résultat de la recherche';
$labels['advsearch'] = 'Recherche avancée';
$labels['advanced'] = 'Détails';
$labels['other'] = 'Autre';
$labels['printcontact'] = 'Imprimer le contact';
$labels['qrcode'] = 'Code QR';
$labels['typehome'] = 'Domicile';
$labels['typework'] = 'Travail';
$labels['typeother'] = 'Autre';
$labels['typemobile'] = 'Téléphone mobile';
$labels['typemain'] = 'Principale';
$labels['typehomefax'] = 'Fax personnel';
$labels['typeworkfax'] = 'Fax professionnel';
$labels['typecar'] = 'Voiture';
$labels['typepager'] = 'Téléavertisseur';
$labels['typevideo'] = 'Vidéo';
$labels['typeassistant'] = 'Assistant';
$labels['typehomepage'] = 'Page d’accueil';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Ajouter un champ…';
$labels['addcontact'] = 'Ajouter un contact';
$labels['editcontact'] = 'Modifier le contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Propriétés du contact';
$labels['contactnameandorg'] = 'Nom et organisation';
$labels['personalinfo'] = 'Renseignements personnels';
$labels['personal'] = 'Personnel';
$labels['contactphoto'] = 'Photo du contact';
$labels['edit'] = 'Modifier';
$labels['cancel'] = 'Annuler';
$labels['save'] = 'Enregistrer';
$labels['delete'] = 'Supprimer';
$labels['discard'] = 'Supprimer';
$labels['continue'] = 'Continuer';
$labels['ok'] = 'OK';
$labels['rename'] = 'Renommer';
$labels['addphoto'] = 'Ajouter';
$labels['replacephoto'] = 'Remplacer';
$labels['uploadphoto'] = 'Téléverser une photo';
$labels['choosefile'] = 'Choisir un fichier…';
$labels['choosefiles'] = 'Choisir des fichiers…';
$labels['browse'] = 'Parcourir';
$labels['newcontact'] = 'Créer un nouveau contact';
$labels['deletecontact'] = 'Supprimer les contacts sélectionnés';
$labels['composeto'] = 'Rédiger un courriel à';
$labels['contactsfromto'] = 'Contacts de $from à $to sur $count';
$labels['print'] = 'Imprimer';
$labels['export'] = 'Exporter';
$labels['exportall'] = 'Tout exporter';
$labels['exportsel'] = 'Exporter la sélection';
$labels['exportvcards'] = 'Exporter les contacts au format vCard';
$labels['newgroup'] = 'Créer un nouveau groupe';
$labels['addgroup'] = 'Ajouter un groupe';
$labels['grouprename'] = 'Renommer le groupe';
$labels['groupdelete'] = 'Supprimer le groupe';
$labels['groupassign'] = 'Affecter au groupe…';
$labels['groupremove'] = 'Supprimer du groupe';
$labels['groupremoveselected'] = 'Retirer les contacts sélectionnés du groupe';
$labels['uponelevel'] = 'Monter d’un niveau';
$labels['previouspage'] = 'Afficher page précédente';
$labels['firstpage'] = 'Afficher la première page';
$labels['nextpage'] = 'Afficher la page suivante';
$labels['lastpage'] = 'Afficher la dernière page';
$labels['group'] = 'Groupe';
$labels['groups'] = 'Groupes';
$labels['listgroup'] = 'Lister les membres du groupe';
$labels['personaladrbook'] = 'Adresses personnelles';
$labels['searchsave'] = 'Enregistrer la recherche';
$labels['searchdelete'] = 'Supprimer la recherche';
$labels['import'] = 'Importer';
$labels['importcontacts'] = 'Importer les contacts';
$labels['importfromfile'] = 'Importer d’un fichier';
$labels['importtarget'] = 'Ajouter les contacts à';
$labels['importreplace'] = 'Remplacer le carnet d’adresses entier';
$labels['importgroups'] = 'Importer les affectations de groupe';
$labels['importgroupsall'] = 'Tous (créer les groupes si nécessaire)';
$labels['importgroupsexisting'] = 'Seulement pour les groupes existants';
$labels['importdesc'] = 'Vous pouvez téléverser des contacts à partir d’un carnet d’adresses existant.<br/>Nous prenons actuellement en charge l’importation d’adresses à partir des format de données <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (séparé par des virgules).';
$labels['importmapdesc'] = 'Confirmez que les renseignements de mappage des champs ci-dessous sont justes avant de poursuivre avec l’importation de données séparées par des virgules (CSV)';
$labels['fieldnotmapped'] = 'Le champ n’est pas mappé (ne pas importer)';
$labels['skipheader'] = 'Ne pas importer la première ligne (en-têtes)';
$labels['done'] = 'Terminé';
$labels['settingsfor'] = 'Paramètres pour';
$labels['about'] = 'À propos de';
$labels['preferences'] = 'Préférences';
$labels['userpreferences'] = 'Préférences utilisateur';
$labels['editpreferences'] = 'Modifier les préférences utilisateur';
$labels['identities'] = 'Identités';
$labels['manageidentities'] = 'Gérer les identités';
$labels['newidentity'] = 'Créer une nouvelle identité';
$labels['addidentity'] = 'Ajouter une identité';
$labels['editidentity'] = 'Modifier l’identité';
$labels['identityencryption'] = 'Chiffrement';
$labels['preferhtml'] = 'Afficher en HTML';
$labels['defaultcharset'] = 'Jeu de caractère par défaut';
$labels['htmlmessage'] = 'Courriel HTML';
$labels['messagepart'] = 'Partie';
$labels['digitalsig'] = 'Signature numérique';
$labels['dateformat'] = 'Format de date';
$labels['timeformat'] = 'Format horaire';
$labels['prettydate'] = 'Jolies dates';
$labels['setdefault'] = 'Définir par défaut';
$labels['autodetect'] = 'Automatique';
$labels['language'] = 'Langue';
$labels['timezone'] = 'Fuseau horaire';
$labels['pagesize'] = 'Lignes par page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Heure avancée';
$labels['showinextwin'] = 'Ouvrir le courriel dans une nouvelle fenêtre';
$labels['composeextwin'] = 'Rédiger dans une nouvelle fenêtre';
$labels['htmleditor'] = 'Rédiger des courriels HTML';
$labels['htmlonreply'] = 'en réponse à un courriel en HTML';
$labels['htmlonreplyandforward'] = 'lors d’un transfert ou en réponse à un courriel en HTML';
$labels['htmlsignature'] = 'Signature HTML';
$labels['showemail'] = 'Montrer l’adresse courriel avec le nom d’affichage';
$labels['previewpane'] = 'Montrer le volet de prévisualisation';
$labels['skin'] = 'Habillage de l’interface';
$labels['logoutclear'] = 'Vider la corbeille à la déconnexion';
$labels['logoutcompact'] = 'Compacter la boîte de réception à la déconnexion';
$labels['uisettings'] = 'Interface utilisateur';
$labels['serversettings'] = 'Paramètres du serveur';
$labels['mailboxview'] = 'Vue de la boîte de courriel';
$labels['mdnrequests'] = 'À la demande d’avis d’ouverture du courriel';
$labels['askuser'] = 'me demander';
$labels['autosend'] = 'envoyer un avis';
$labels['autosendknown'] = 'envoyer un avis à mes contacts, sinon me demander';
$labels['autosendknownignore'] = 'envoyer un avis à mes contacts, sinon ignorer';
$labels['autosendtrusted'] = 'envoyer un avis aux expéditeurs de confiance, sinon me demander';
$labels['autosendtrustedignore'] = 'envoyer un avis aux expéditeurs de confiance, sinon ignorer';
$labels['ignorerequest'] = 'ignorer la demande';
$labels['readwhendeleted'] = 'Marquer le courriel comme lu lors de la suppression';
$labels['flagfordeletion'] = 'Signaler le courriel pour la suppression au lieu de le supprimer';
$labels['skipdeleted'] = 'Ne pas montrer les courriels supprimés';
$labels['deletealways'] = 'Si le déplacement des courriels à la corbeille échoue, les supprimer';
$labels['deletejunk'] = 'Supprimer directement les pourriels';
$labels['showremoteimages'] = 'Afficher les images distantes des courriels';
$labels['allowremoteresources'] = 'Autoriser les ressources distantes (images, styles)';
$labels['fromknownsenders'] = 'd’expéditeurs connus';
$labels['fromtrustedsenders'] = 'd’expéditeurs de confiance';
$labels['frommycontacts'] = 'de mes contacts';
$labels['always'] = 'toujours';
$labels['alwaysbutplain'] = 'toujours, sauf lors d’une réponse à un texte en clair';
$labels['showinlineimages'] = 'Afficher les images jointes sous le courriel';
$labels['autosavedraft'] = 'Enregistrer automatiquement un brouillon';
$labels['everynminutes'] = 'toutes les $n minute(s)';
$labels['refreshinterval'] = 'Actualiser (relever les nouveaux courriels, etc.)';
$labels['never'] = 'jamais';
$labels['immediately'] = 'Immédiatement';
$labels['messagesdisplaying'] = 'Affichage des courriels';
$labels['messagescomposition'] = 'Rédaction de courriels';
$labels['mimeparamfolding'] = 'Noms des pièces jointes';
$labels['2231folding'] = 'RFC 2231 complet (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 complet (autre)';
$labels['force7bit'] = 'Utiliser l’encodage MIME pour les caractères 8 bits';
$labels['savelocalstorage'] = "Enregistrer dans le stockage local du navigateur (temporaire)";
$labels['advancedoptions'] = 'Options avancées';
$labels['toggleadvancedoptions'] = 'Activer/désactiver les options avancées';
$labels['focusonnewmessage'] = 'Cibler la fenêtre du navigateur quand un nouveau courriel arrive';
$labels['checkallfolders'] = 'Vérifier les nouveaux courriels dans tous les dossiers';
$labels['displaynext'] = 'Afficher la prochaine entrée de la liste après suppression ou déplacement';
$labels['defaultfont'] = 'Police par défaut des courriels HTML';
$labels['mainoptions'] = 'Options principales';
$labels['browseroptions'] = 'Options du navigateur';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'Nouveau courriel';
$labels['signatureoptions'] = 'Options de signature';
$labels['whenreplying'] = 'Lors d’une réponse';
$labels['replyempty'] = 'ne pas citer le courriel original';
$labels['replytopposting'] = 'commencer le nouveau courriel au-dessus de la citation';
$labels['replytoppostingnoindent'] = 'commencer le nouveau courriel au-dessus de la citation (sans indentation)';
$labels['replybottomposting'] = 'commencer le nouveau courriel en-dessous de la citation';
$labels['replyremovesignature'] = 'Lors de la réponse, supprimer la signature originale du courriel ';
$labels['autoaddsignature'] = 'Ajouter la signature automatiquement';
$labels['newmessageonly'] = 'nouveau courriel seulement';
$labels['replyandforwardonly'] = 'réponses et transferts seulement';
$labels['insertsignature'] = 'Insérer la signature';
$labels['sigbelow'] = 'Placer la signature sous le message cité';
$labels['sigseparator'] = 'Forcer le séparateur standard dans les signatures';
$labels['automarkread'] = 'Marquer les courriels comme lus';
$labels['afternseconds'] = 'après $n secondes';
$labels['reqmdn'] = 'Toujours demander un avis d’ouverture du courriel';
$labels['reqdsn'] = 'Toujours demander une notification d’état de distribution';
$labels['replysamefolder'] = 'Placer les réponses dans le dossier du courriel auquel on répond';
$labels['defaultabook'] = 'Carnet d’adresses par défaut';
$labels['autocompletesingle'] = 'Ignorer les adresses de courriel alternatives pour le remplissage automatique';
$labels['listnamedisplay'] = 'Lister les contacts en tant que';
$labels['contactformmode'] = 'Mode du formulaire de contact';
$labels['privatemode'] = 'Privé (domicile)';
$labels['businessmode'] = 'Entreprise (travail)';
$labels['collectedaddresses'] = 'Adresses recueillies';
$labels['collectedrecipients'] = 'Destinataires recueillis';
$labels['collectedrecipientsopt'] = 'Enregistrer les destinataires des courriels sortants dans';
$labels['collectedsendersopt'] = 'Enregistrer les expéditeurs de confiance dans';
$labels['trustedsenders'] = 'Expéditeurs de confiance';
$labels['spellcheckbeforesend'] = 'Vérifier l’orthographe avant d’envoyer un courriel';
$labels['spellcheckoptions'] = 'Options du vérificateur d’orthographe';
$labels['spellcheckignoresyms'] = 'Ignorer les mots avec des symboles';
$labels['spellcheckignorenums'] = 'Ignorer les mots avec des nombres';
$labels['spellcheckignorecaps'] = 'Ignorer les mots entièrement en majuscule';
$labels['addtodict'] = 'Ajouter au dictionnaire';
$labels['mailtoprotohandler'] = 'Enregistrer le gestionnaire de protocole pour les liens mailto:';
$labels['standardwindows'] = 'Gérer les fenêtres surgissantes comme les autres';
$labels['forwardmode'] = 'Transfert de courriels';
$labels['inline'] = 'dans le courriel';
$labels['asattachment'] = 'en pièce jointe';
$labels['replyallmode'] = 'Action par défaut du bouton [Répondre à tous]';
$labels['replyalldefault'] = 'répondre à tous';
$labels['replyalllist'] = 'répondre seulement à la liste de diffusion (si trouvée)';
$labels['allmessages'] = 'tous les courriels';
$labels['olderxdays'] = 'de plus de $x jours';
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossiers';
$labels['foldername'] = 'Nom du dossier';
$labels['subscribed'] = 'Abonné';
$labels['messagecount'] = 'Courriels';
$labels['create'] = 'Créer';
$labels['createfolder'] = 'Créer un nouveau dossier';
$labels['managefolders'] = 'Gérer les dossiers';
$labels['specialfolders'] = 'Dossiers spéciaux';
$labels['properties'] = 'Propriétés';
$labels['folderproperties'] = 'Propriétés du dossier';
$labels['parentfolder'] = 'Dossier parent';
$labels['location'] = 'Emplacement';
$labels['info'] = 'Renseignements';
$labels['getfoldersize'] = 'Cliquer pour obtenir la taille de dossier';
$labels['changesubscription'] = 'Cliquer pour modifier l’abonnement';
$labels['foldertype'] = 'Type de dossier';
$labels['personalfolder'] = 'Dossier privé';
$labels['otherfolder'] = 'Dossier d’autres utilisateurs';
$labels['sharedfolder'] = 'Dossier public';
$labels['findfolders'] = 'Trouver des dossiers';
$labels['findcontacts'] = 'Trouver des contacts';
$labels['findmail'] = 'Trouver des courriels';
$labels['namespace.personal'] = 'Personnel';
$labels['namespace.other'] = 'Autres utilisateurs';
$labels['namespace.shared'] = 'Partagé';
$labels['dualuselabel'] = 'Peut seulement contenir des';
$labels['dualusemail'] = 'messages';
$labels['dualusefolder'] = 'dossiers';
$labels['generate'] = 'Générer';
$labels['encryptioncreatekey'] = 'Créer une nouvelle biclé';
$labels['openmailvelopesettings'] = 'Ouvrir les paramètres de Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Vous avez $nr clés PGP privées correspondantes enregistrées dans votre trousseau Mailvelope :';
$labels['encryptionnoprivkeysinmailvelope'] = 'Cette identité d’expéditeur n’a pas encore de clé PGP privée enregistrée dans votre trousseau Mailvelope. Voulez-vous en créer une afin de permettre l’envoi de courriel chiffré ?';
$labels['encryption'] = 'Chiffrement';
$labels['mailvelopeoptions'] = 'Options de Mailvelope';
$labels['mailvelopemainkeyring'] = 'Utiliser le trousseau principal de Mailvelope';
$labels['mailvelopenotfound'] = 'L’extension Mailvelope n’est pas activée ou installée dans votre navigateur.';
$labels['sortby'] = 'Trier par';
$labels['sortasc'] = 'Tri ascendant';
$labels['sortdesc'] = 'Tri descendant';
$labels['undo'] = 'Annuler';
$labels['installedplugins'] = 'Plugiciels installés';
$labels['plugin'] = 'Plugiciel';
$labels['version'] = 'Version';
$labels['source'] = 'Source';
$labels['destination'] = 'Destination';
$labels['license'] = 'Licence';
$labels['support'] = 'Obtenir du soutien';
$labels['savedsearches'] = 'Recherches enregistrées';
$labels['dateformatY'] = 'AAAA';
$labels['dateformaty'] = 'AA';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'JJ';
$labels['dateformatj'] = 'J';
$labels['dateformatn'] = 'M';
$labels['B'] = 'o';
$labels['KB'] = 'ko';
$labels['MB'] = 'Mo';
$labels['GB'] = 'Go';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Anglais';
$labels['westerneuropean'] = 'Europe de l’Ouest';
$labels['easterneuropean'] = 'Europe de l’Est';
$labels['southeasterneuropean'] = 'Europe du Sud-Est';
$labels['baltic'] = 'Baltique';
$labels['cyrillic'] = 'Cyrillique';
$labels['arabic'] = 'Arabe';
$labels['greek'] = 'Grec';
$labels['hebrew'] = 'Hébreu';
$labels['turkish'] = 'Turc';
$labels['nordic'] = 'Nordique';
$labels['thai'] = 'Thaï';
$labels['celtic'] = 'Celtique';
$labels['vietnamese'] = 'Vietnamien';
$labels['japanese'] = 'Japonais';
$labels['korean'] = 'Coréen';
$labels['chinese'] = 'Chinois';
$labels['arialabeltopnav'] = 'Contrôle de la fenêtre';
$labels['arialabeltasknav'] = 'Tâches de l’application';
$labels['arialabeltoolbar'] = 'Barre d’outils de l’application';
$labels['arialabellistnav'] = 'Navigation dans la liste';
$labels['arialabelactivetask'] = 'Tâche active';
$labels['arialabelmessagessearchfilter'] = 'Filtre de listage des courriels';
$labels['arialabelmailsearchform'] = 'Formulaire de recherche de courriels';
$labels['arialabelcontactsearchform'] = 'Formulaire de recherche des contacts';
$labels['arialabelmailquicksearchbox'] = 'Saisie de la recherche de courriels';
$labels['arialabelquicksearchbox'] = 'Saisie de la recherche';
$labels['arialabelfoldersearchfilter'] = 'Filtre de listage des dossiers';
$labels['arialabelfoldersearchform'] = 'Formulaire de recherche de dossiers';
$labels['arialabelfolderlist'] = 'Sélection du dossier des courriels';
$labels['arialabelmessagelist'] = 'Listage de courriels';
$labels['arialabelmailpreviewframe'] = 'Prévisualisation des courriels';
$labels['arialabelmailboxmenu'] = 'Menu d’actions sur les dossiers';
$labels['arialabellistselectmenu'] = 'Menu de sélection de la liste';
$labels['arialabelthreadselectmenu'] = 'Menu de listage des fils';
$labels['arialabelmessagelistoptions'] = 'Options d’affichage et de tri des listes de courriels';
$labels['arialabelmailimportdialog'] = 'Fenêtre d’importation des courriels';
$labels['arialabelmessagenav'] = 'Parcourir les courriels';
$labels['arialabelmessagebody'] = 'Corps du courriel';
$labels['arialabelmessageactions'] = 'Actions sur les courriels';
$labels['arialabelcontactquicksearch'] = 'Formulaire de recherche de contacts';
$labels['arialabelcontactsearchbox'] = 'Saisie de la recherche de contacts';
$labels['arialabelmessageheaders'] = 'En-tête des courriels';
$labels['arialabelforwardingoptions'] = 'Options de transfert';
$labels['arialabelreplyalloptions'] = 'Options de réponse à tous';
$labels['arialabelmoremessageactions'] = 'Actions de courriel supplémentaires';
$labels['arialabelmorecontactactions'] = 'Autres actions de contact';
$labels['arialabelmarkmessagesas'] = 'Marquer les courriels sélectionnés comme…';
$labels['arialabelcomposeoptions'] = 'Options de rédaction';
$labels['arialabelresponsesmenu'] = 'Menu des réponses prédéterminées';
$labels['arialabelattachmentuploadform'] = 'Formulaire de téléversement de pièce jointe';
$labels['arialabelattachmentmenu'] = 'Options des pièces jointes';
$labels['arialabelmailtomenu'] = 'Options d’adresse courriel';
$labels['arialabelattachmentpreview'] = 'Prévisualisation des pièces jointes';
$labels['ariasummarycomposecontacts'] = 'Liste des contacts et des groupes à sélectionner comme destinataires';
$labels['arialabelcontactexportoptions'] = 'Options d’exportation des contacts';
$labels['arialabelabookgroupoptions'] = 'Options du carnet d’adresses, de groupes';
$labels['arialabelpreferencesform'] = 'Formulaire des préférences';
$labels['arialabelidentityeditfrom'] = 'Formulaire de modification de l’identité';
$labels['arialabelresponseeditfrom'] = 'Formulaire de modification des réponses';
$labels['arialabelsearchterms'] = 'Termes de recherche';
$labels['arialabeldropactionmenu'] = 'Menu d’action coller-déposer';
$labels['arialabelheadersmenu'] = 'Menu d’ajout de destinataires (en-tête)';
$labels['arialabelimagetools'] = 'Outils de manipulation des images';
$labels['helplistnavigation'] = 'Navigation au clavier dans la liste';
$labels['helplistkeyboardnavigation'] = "Flèche haut/bas : déplacer la cible de sélection.
Espace : sélectionner la rangée ciblée.
Maj + haut/bas : Sélectionner des rangées supplémentaires
au dessus/en dessous.
Ctl + espace : ajouter la rangée ciblée à la sélection/enlever la rangée ciblée de la sélection.";
$labels['helplistkeyboardnavmessages'] = "Flèche droite/gauche : déplier/replier les fils de courriel (en mode fils seulement).
Entrée : ouvrir le courriel sélectionné/cible.
Suppr : déplacer les courriels sélectionnés vers la corbeille.";
$labels['helplistkeyboardnavcontacts'] = "Entrée : ouvrir le contact sélectionné/cible.";
localization/fr_FR/messages.inc000064400000046602151727150540012553 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Une erreur est survenue';
$messages['loginfailed']  = 'La connexion a échoué.';
$messages['cookiesdisabled'] = 'Votre navigateur n’accepte pas les témoins.';
$messages['sessionerror'] = 'Votre session est invalide ou a expiré.';
$messages['cookiesmismatch'] = 'Une non-concordance de témoin a été détectée. Veuillez effacer les témoins de votre navigateur.';
$messages['storageerror'] = 'Erreur de connexion au serveur de stockage.';
$messages['servererror'] = 'Erreur de serveur';
$messages['servererrormsg'] = 'Erreur de serveur : $msg';
$messages['accountlocked'] = 'Trop de tentatives de connexion infructueuses. Réessayez ultérieurement.';
$messages['connerror'] = 'Erreur de connexion (n’a pu atteindre le serveur)';
$messages['dberror'] = 'Erreur de base de données';
$messages['dbconnerror'] = 'La connexion à la base de données n’aboutit pas';
$messages['windowopenerror'] = 'La fenêtre surgissante a été bloquée';
$messages['requesttimedout'] = 'Délai de la requête expiré';
$messages['errorreadonly'] = 'Impossible d’effectuer l’opération. Le dossier est en lecture seule.';
$messages['errornoperm'] = 'Impossible d’effectuer l’opération. Permission refusée.';
$messages['erroroverquota'] = 'Impossible d’effectuer l’opération. L’espace disque est saturé.';
$messages['erroroverquotadelete'] = 'L’espace disque est saturé. Utilisez Maj+Suppr pour supprimer un courriel.';
$messages['invalidrequest'] = 'La requête est invalide. Aucune donnée n’a été enregistrée.';
$messages['invalidhost'] = 'Nom du serveur invalide.';
$messages['nomessagesfound'] = 'Aucun courriel n’a été trouvé dans cette boîte de courriel';
$messages['loggedout'] = 'Vous avez mis fin à cette session avec succès. Au revoir.';
$messages['mailboxempty'] = 'La boîte de courriel est vide';
$messages['nomessages'] = 'Aucun courriel';
$messages['refreshing'] = 'Actualisation…';
$messages['loading'] = 'Chargement…';
$messages['uploading'] = 'Téléversement du fichier…';
$messages['attaching'] = 'Ajout du fichier…';
$messages['uploadingmany'] = 'Téléversement des fichiers…';
$messages['loadingdata'] = 'Chargement des données…';
$messages['checkingmail'] = 'Relève des nouveaux courriels…';
$messages['sendingmessage'] = 'Envoi du courriel…';
$messages['messagesent'] = 'Le courriel a été envoyé avec succès.';
$messages['savingmessage'] = 'Enregistrement du courriel…';
$messages['messagesaved'] = 'Courriel sauvegardé dans Brouillons.';
$messages['successfullysaved'] = 'Enregistré avec succès.';
$messages['savingresponse'] = 'Enregistrement du texte de réponse…';
$messages['deleteresponseconfirm'] = 'Voulez-vous vraiment supprimer ce texte de réponse ?';
$messages['nocontactselected'] = 'Vous n’avez pas encore choisi un contact.';
$messages['addedsuccessfully'] = 'Le contact a été ajouté avec succès au carnet d’adresses.';
$messages['contactexists'] = 'Un contact avec la même adresse courriel existe déjà.';
$messages['contactnameexists'] = 'Un contact avec le même nom existe déjà.';
$messages['blockedimages'] = 'Pour protéger votre confidentialité, les images distantes sont bloquées dans ce courriel.';
$messages['blockedresources'] = 'Pour protéger votre confidentialité, les ressources distantes ont été bloquées.';
$messages['suspiciousemail'] = 'Ce message comprend des adresses courriel suspectes qui pourraient être frauduleuses.';
$messages['bccemail'] = 'Les messages transférés comprennent des destinataires confidentiels (Cci).';
$messages['bouncehint'] = 'Le message sera envoyé sans aucune modification, c’est-à-dire avec le corps, les en-têtes et les destinataires originaux.';
$messages['encryptedmessage'] = 'Ce courriel est chiffré et ne peut pas être affiché. Désolé.';
$messages['externalmessagedecryption'] = 'Ce courriel est chiffré et peut être déchiffré grâce au module complémentaire de votre navigateur.';
$messages['nopubkeyfor'] = 'Aucune clé publique valide n’a été trouvée pour $email';
$messages['nopubkeyforsender'] = 'Aucune clé publique valide n’a été trouvée pour votre identité d’expéditeur. Voulez-vous chiffrer le courriel pour les destinataires seulement ?';
$messages['encryptnoattachments'] = 'Les pièces jointes déjà téléversées ne peuvent pas être chiffrées.  Veuillez les ajouter de nouveau dans l’éditeur de chiffrement.';
$messages['searchpubkeyservers'] = 'Voulez-vous chercher les clés manquantes sur les serveurs de clés publiques ?';
$messages['encryptpubkeysfound'] = 'Les clés publiques suivantes ont été trouvées :';
$messages['keyservererror'] = 'Échec d’obtention de la clé sur le serveur de clés.';
$messages['keyimportsuccess'] = 'La clé publique $key a été importée dans le trousseau avec succès.';
$messages['nocontactsfound'] = 'Aucun contact n’a été trouvé.';
$messages['contactnotfound'] = 'Le contact demandé n’a pas été trouvé.';
$messages['contactsearchonly'] = 'Vous devez utiliser un formulaire de recherche pour voir les contacts du carnet d’adresses sélectionné.';
$messages['sendingfailed'] = 'Échec d’envoi du courriel.';
$messages['senttooquickly'] = 'Veuillez patienter $sec s avant d’envoyer ce courriel.';
$messages['errorsavingsent'] = 'Une erreur est survenue durant l’enregistrement du courriel envoyé.';
$messages['errorsaving'] = 'Une erreur est survenue durant l’enregistrement.';
$messages['errormoving'] = 'Impossible de déplacer les courriels.';
$messages['errorcopying'] = 'Impossible de copier les courriels.';
$messages['errordeleting'] = 'Impossible de supprimer les courriels.';
$messages['errormarking'] = 'Impossible de marquer les courriels.';
$messages['alerttitle'] = 'Attention';
$messages['confirmationtitle'] = 'Êtes-vous certain…';
$messages['deletecontactconfirm']  = 'Voulez-vous vraiment supprimer les contacts sélectionnés ?';
$messages['deletegroupconfirm']  = 'Voulez-vous vraiment supprimer le groupe sélectionné ?';
$messages['deletemessagesconfirm'] = 'Voulez-vous vraiment supprimer les courriels sélectionnés ?';
$messages['deletefolderconfirm']  = 'Voulez-vous vraiment supprimer ce dossier ?';
$messages['movefolderconfirm']  = 'Voulez-vous vraiment déplacer ce dossier ?';
$messages['purgefolderconfirm']  = 'Voulez-vous vraiment supprimer tous les courriels dans ce dossier ?';
$messages['contactdeleting'] = 'Suppression des contacts…';
$messages['groupdeleting'] = 'Suppression du groupe…';
$messages['folderdeleting'] = 'Suppression du dossier…';
$messages['foldermoving'] = 'Déplacement du dossier…';
$messages['foldersubscribing'] = 'Abonnement au dossier…';
$messages['folderunsubscribing'] = 'Désabonnement au dossier…';
$messages['formincomplete'] = 'Le formulaire n’a pas été entièrement rempli.';
$messages['noemailwarning'] = 'Veuillez saisir une adresse courriel valide.';
$messages['nonamewarning']  = 'Veuillez saisir un nom.';
$messages['nopagesizewarning'] = 'Veuillez saisir une taille de page.';
$messages['nosenderwarning'] = 'Veuillez saisir l’adresse courriel de l’expéditeur.';
$messages['recipientsadded'] = 'Les destinataires ont été ajoutés avec succès.';
$messages['norecipientwarning'] = 'Veuillez saisir au moins un destinataire.';
$messages['disclosedrecipwarning'] = 'Tous les destinataires verront réciproquement leur adresse courriel. Afin d’empêcher cela et de protéger la confidentialité, vous pouvez utiliser le champ Cci.';
$messages['disclosedreciptitle'] = 'Trop de destinataires publics';
$messages['nosubjectwarning']  = 'Le champ « Objet » est vide. Voulez-vous le remplir maintenant ?';
$messages['nosubjecttitle']  = 'Aucun objet';
$messages['nobodywarning'] = 'Envoyer ce courriel sans texte ?';
$messages['notsentwarning'] = 'Le courriel n’a pas été envoyé et contient des changements non enregistrés. Voulez-vous rejeter vos changements ?';
$messages['restoresavedcomposedata'] = 'Un courriel rédigé précédemment mais non envoyé a été trouvé.\n\nObjet : $subject\nEnregistré le : $date\n\nSouhaitez-vous restaurer ce courriel ?';
$messages['nosearchname'] = 'Veuillez saisir un nom de contact ou une adresse de courriel.';
$messages['notuploadedwarning'] = 'Toutes les pièces jointes n’ont pas encore été téléversées. Veuillez patienter ou annuler le téléversement.';
$messages['searchsuccessful'] = '$nr courriels trouvés.';
$messages['contactsearchsuccessful'] = '$nr contacts trouvés.';
$messages['searchnomatch'] = 'La recherche n’a retourné aucun résultat.';
$messages['searching'] = 'Recherche…';
$messages['checking'] = 'Relève…';
$messages['stillsearching'] = 'Recherche toujours en cours…';
$messages['nospellerrors'] = 'Aucune faute d’orthographe n’a été trouvée.';
$messages['folderdeleted'] = 'Le dossier a été effacé avec succès.';
$messages['foldersubscribed'] = 'L’abonnement au dossier a réussi.';
$messages['folderunsubscribed'] = 'Le désabonnement au dossier a réussi.';
$messages['folderpurged'] = 'Le dossier a été vidé avec succès.';
$messages['folderexpunged'] = 'Le dossier a été compacté avec succès.';
$messages['deletedsuccessfully'] = 'Supprimé avec succès.';
$messages['converting'] = 'Suppression de la mise en forme…';
$messages['messageopenerror'] = 'Impossible de charger le courriel depuis le serveur.';
$messages['filelinkerror'] = 'Échec d’ajout du fichier.';
$messages['fileuploaderror'] = 'Échec de téléversement du fichier.';
$messages['csvfilemismatch'] = 'L’importation de plusieurs fichiers CSV avec différents champs n’est pas prise en charge.';
$messages['filesizeerror'] = 'Le fichier téléversé dépasse la taille maximale de $size.';
$messages['filecounterror'] = 'Vous pouvez téléverser un maximum de $count fichiers à la fois.';
$messages['msgsizeerror'] = 'Échec d’ajout de fichier. La taille maximale d’un fichier ($size) a été dépassée.';
$messages['msgsizeerrorfwd'] = 'La taille maximale d’un message ($size) a été dépassée. $num message(s) n’ont pas été joints.';
$messages['copysuccess'] = '$nr contacts copiés avec succès.';
$messages['movesuccess'] = '$nr contacts déplacés avec succès.';
$messages['copyerror'] = 'Impossible de copier des contacts.';
$messages['moveerror'] = 'Aucun contact n’a pu être déplacé.';
$messages['sourceisreadonly'] = 'Cette source d’adresse est en lecture seule.';
$messages['errorsavingcontact'] = 'Impossible d’enregistrer l’adresse du contact.';
$messages['movingmessage'] = 'Déplacement des courriels…';
$messages['copyingmessage'] = 'Copie des courriels…';
$messages['copyingcontact'] = 'Copie des contacts…';
$messages['movingcontact'] = 'Déplacement des contacts…';
$messages['deletingmessage'] = 'Suppression des courriels…';
$messages['markingmessage'] = 'Marquage des courriels…';
$messages['addingmember'] = 'Ajout des contacts au groupe…';
$messages['removingmember'] = 'Suppression des contacts du groupe…';
$messages['receiptsent'] = 'Un avis de lecture a été envoyé avec succès.';
$messages['errorsendingreceipt'] = 'Impossible d’envoyer l’avis.';
$messages['deleteidentityconfirm'] = 'Voulez-vous vraiment supprimer cette identité ?';
$messages['nodeletelastidentity'] = 'Vous ne pouvez pas effacer cette identité, c’est votre dernière.';
$messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit.';
$messages['selectimportfile'] = 'Veuillez choisir un fichier à téléverser.';
$messages['addresswriterror'] = 'Impossible d’écrire dans le carnet d’adresse choisi.';
$messages['contactaddedtogroup'] = 'Les contacts ont été ajoutés à ce groupe avec succès.';
$messages['contactremovedfromgroup'] = 'Les contacts ont été supprimés de ce groupe avec succès.';
$messages['nogroupassignmentschanged'] = 'Aucune affection de groupe n’a été changée.';
$messages['importwait'] = 'Importation, veuillez patienter…';
$messages['importformaterror'] = 'Échec d’importation. Le fichier téléversé n’est pas un fichier d’importation de données valide.';
$messages['importconfirm'] = '<b>Les $inserted contacts ont été importés avec succès</b>';
$messages['importconfirmskipped'] = '<b>Les $skipped entrées existantes ont été ignorées</b>';
$messages['importmessagesuccess'] = '$nr courriels importés avec succès';
$messages['importmessageerror'] = 'Échec d’importation. Le fichier téléversé n’est ni un courriel valide ni un fichier de boîte de courriel';
$messages['opnotpermitted'] = 'L’opération n’est pas permise';
$messages['nofromaddress'] = 'Adresse courriel manquante dans l’identité choisie.';
$messages['editorwarning'] = 'Changer de type d’éditeur pourrait causer la perte du formatage du texte. Voulez-vous continuer ?';
$messages['httpreceivedencrypterror'] = 'Une erreur fatale de configuration est survenue. Contactez votre administrateur immédiatement. <b>Votre courriel ne peut pas être envoyé.</b>';
$messages['smtpconnerror'] = 'Erreur SMTP ($code) : échec de connexion au serveur.';
$messages['smtpautherror'] = 'Erreur SMTP ($code) : échec d’authentification.';
$messages['smtpfromerror'] = 'Erreur SMTP ($code) : impossible de définir l’expéditeur « $from » ($msg)';
$messages['smtptoerror'] = 'Erreur SMTP ($code) : échec d’ajout du destinataire « $to » ($msg)';
$messages['smtprecipientserror'] = 'Erreur SMTP : impossible d’analyser la liste des destinataires.';
$messages['smtputf8error'] = 'Erreur SMTP : le serveur ne prend pas en charge Unicode dans l’adresse courriel.';
$messages['smtpsizeerror'] = 'Erreur SMTP : la taille du message dépasse la limite du serveur ($limit)';
$messages['smtperror'] = 'Erreur SMTP : $msg';
$messages['emailformaterror'] = 'Adresse courriel invalide : $email';
$messages['toomanyrecipients'] = 'Trop de destinataires. Réduire leur nombre à $max.';
$messages['maxgroupmembersreached'] = 'Le nombre de membres du groupe dépasse le maximum de $max.';
$messages['internalerror'] = 'Une erreur interne est survenue. Veuillez réessayer.';
$messages['contactdelerror'] = 'Impossible de supprimer les contacts.';
$messages['contactdeleted'] = 'Contacts supprimés avec succès.';
$messages['contactrestoreerror'] = 'Impossible de restaurer les contacts supprimés.';
$messages['contactrestored'] = 'Contacts restaurés avec succès.';
$messages['groupdeleted'] = 'Groupe supprimé avec succès.';
$messages['grouprenamed'] = 'Groupe renommé avec succès.';
$messages['groupcreated'] = 'Groupe créé avec succès.';
$messages['savedsearchdeleted'] = 'Recherche enregistrée supprimée avec succès.';
$messages['savedsearchdeleteerror'] = 'Impossible de supprimer la recherche enregistrée.';
$messages['savedsearchcreated'] = 'Recherche enregistrée créée avec succès.';
$messages['savedsearchcreateerror'] = 'Impossible de créer la recherche enregistrée.';
$messages['messagedeleted'] = 'Courriels supprimés avec succès.';
$messages['messagemoved'] = 'Courriels déplacés avec succès.';
$messages['messagemovedtotrash'] = 'Les courriels ont été déplacés vers la corbeille avec succès.';
$messages['messagecopied'] = 'Courriels copiés avec succès.';
$messages['messagemarked'] = 'Courriels marqués avec succès.';
$messages['autocompletechars'] = 'Saisir au moins $min caractères pour le remplissage automatique.';
$messages['autocompletemore'] = 'Plusieurs entrées concordantes trouvées. Veuillez taper plus de caractères.';
$messages['namecannotbeempty'] = 'Le nom ne peut pas être vide.';
$messages['nametoolong'] = 'Le nom est trop long.';
$messages['namedotforbidden'] = 'Un nom de dossier ne peut pas commencer par un point.';
$messages['folderupdated'] = 'Dossier mis à jour avec succès.';
$messages['foldercreated'] = 'Dossier créé avec succès.';
$messages['invalidimageformat'] = 'N’est pas un format d’image valide.';
$messages['mispellingsfound'] = 'Fautes d’orthographe détectées dans le courriel.';
$messages['parentnotwritable'] = 'Impossible de créer ni déplacer le dossier dans le dossier parent sélectionné. Aucun droit d’accès.';
$messages['messagetoobig'] = 'La partie message est trop grosse pour être traitée.';
$messages['attachmentvalidationerror'] = 'Cette pièce jointe est suspecte, car son type ne correspond pas au type déclaré dans le courriel. Si vous ne faites pas confiance à l’expéditeur, vous ne devriez pas l’ouvrir dans le navigateur, car son contenu pourrait être malveillant.<br/><br/><em>Attendu : $expected ; trouvé : $detected</em>';
$messages['noscriptwarning'] = 'Avertissement : Ce service de courriel Web exige JavaScript. Afin de l’utiliser, veuillez activer JavaScript dans les paramètres de votre navigateur.';
$messages['messageissent'] = 'Le courriel a déjà été envoyé, mais n’a pas encore été enregistré. Voulez-vous l’enregistrer maintenant ?';
$messages['errnotfound'] = 'Ficher introuvable';
$messages['errnotfoundexplain'] = 'La ressource demandée n’a pas été trouvée';
$messages['errfailedrequest'] = 'Échec de la demande';
$messages['errauthorizationfailed'] = 'Échec d’autorisation';
$messages['errunauthorizedexplain'] = 'Impossible de vérifier que vous êtes autorisé à accéder à ce service';
$messages['errrequestcheckfailed'] = 'Échec de vérification de la demande';
$messages['errcsrfprotectionexplain'] = "Pour votre protection, l’accès à cette ressource est protégé contre les attaques CSRF.\nSi vous voyez ceci, vous ne vous êtes probablement pas déconnecté avant de quitter l’application Web.\n\nUne interaction humaine est maintenant exigé afin de continuer.";
$messages['errcontactserveradmin'] = 'Veuillez contacter l’administrateur de votre serveur.';
$messages['clicktoresumesession'] = 'Cliquez ici afin de reprendre votre session précédente.';
$messages['errcomposesession'] = 'Erreur de session de rédaction';
$messages['errcomposesessionexplain'] = 'La session de rédaction demandée est introuvable.';
$messages['clicktocompose'] = 'Cliquer ici pour rédiger un nouveau courriel';
$messages['nosupporterror'] = 'Cette fonction n’est pas prise en charge par votre navigateur Web.';
$messages['siginserted'] = 'La signature a été insérée avec succès.';
$messages['responseinserted'] = 'La réponse a été insérée avec succès.';
$messages['noresponsesavailable'] = 'Aucune réponse n’est proposée';
$messages['listempty'] = 'La liste est vide.';
$messages['listusebutton'] = 'Utiliser le bouton Créer pour ajouter un nouvel enregistrement.';
$messages['keypaircreatesuccess'] = 'Une nouvelle biclé a été créée avec succès pour $identity.';
$messages['emptyattachment'] = 'Votre fichier joint semble vide.<br>Veuillez vérifier auprès de la personne qui l’a envoyé.';
$messages['oauthloginfailed'] = 'Échec de connexion OAuth. Veuillez réessayer.';
localization/ast/labels.inc000064400000062015151727150540011773 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bienllegáu a $product';
$labels['username'] = 'Usuariu';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Sirvidor';
$labels['login'] = 'Aniciar sesión';
$labels['logout'] = 'Zarrar sesión';
$labels['mail'] = 'Corréu';
$labels['settings'] = 'Axustes';
$labels['addressbook'] = 'Llibreta de direiciones';
$labels['inbox'] = 'Bandexa d\'entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Unviaos';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'Puxarra';
$labels['show_real_foldernames'] = 'Amosar nomes reales pa carpetes especiales';
$labels['subject'] = 'Asuntu';
$labels['from'] = 'De';
$labels['sender'] = 'Remitente';
$labels['to'] = 'Pa';
$labels['cc'] = 'Copia';
$labels['bcc'] = 'Cct';
$labels['replyto'] = 'Contestar a';
$labels['followupto'] = 'Responder-a';
$labels['date'] = 'Data';
$labels['size'] = 'Tamañu';
$labels['priority'] = 'Prioridá';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Lleer estáu';
$labels['listoptions'] = 'Llista d\'opciones...';
$labels['mailboxlist'] = 'Carpetes';
$labels['messagesfromto'] = 'Mensaxes $from a $to de $count';
$labels['threadsfromto'] = 'Filos $from a $to de $count';
$labels['messagenrof'] = 'Mensaxe $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copia';
$labels['move'] = 'Mover';
$labels['moveto'] = 'mover a...';
$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Amosar';
$labels['showanyway'] = 'Amosar de toes formes';
$labels['filename'] = 'Nome del ficheru';
$labels['filesize'] = 'Tamañu del ficheru';
$labels['addtoaddressbook'] = 'Amestar a la llibreta de direiciones';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Llu';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mie';
$labels['thu'] = 'Xue';
$labels['fri'] = 'Vie';
$labels['sat'] = 'Sab';
$labels['sunday'] = 'Domingu';
$labels['monday'] = 'Llunes';
$labels['tuesday'] = 'Martes';
$labels['wednesday'] = 'Miércoles';
$labels['thursday'] = 'Xueves';
$labels['friday'] = 'Vienres';
$labels['saturday'] = 'Sábadu';
$labels['jan'] = 'Xin';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Abr';
$labels['may'] = 'Mayu';
$labels['jun'] = 'Xun';
$labels['jul'] = 'Xnt';
$labels['aug'] = 'Ago';
$labels['sep'] = 'Set';
$labels['oct'] = 'Och';
$labels['nov'] = 'Pay';
$labels['dec'] = 'Avi';
$labels['longjan'] = 'Xineru';
$labels['longfeb'] = 'Febreru';
$labels['longmar'] = 'Marzu';
$labels['longapr'] = 'Abril';
$labels['longmay'] = 'Mayu';
$labels['longjun'] = 'Xunu';
$labels['longjul'] = 'Xunetu';
$labels['longaug'] = 'Agostu';
$labels['longsep'] = 'Setiembre';
$labels['longoct'] = 'Ochobre';
$labels['longnov'] = 'Payares';
$labels['longdec'] = 'Avientu';
$labels['today'] = 'Güei';
$labels['refresh'] = 'Refrescar';
$labels['checkmail'] = 'Comprobar mensaxes nuevos';
$labels['compose'] = 'Redactar';
$labels['writenewmessage'] = 'Redactar un mensaxe nuevu';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder al remitente';
$labels['replytoallmessage'] = 'Responder a la llista o al remitente y tolos destinatarios';
$labels['replyall'] = 'Responder a toos';
$labels['replylist'] = 'Responder a la llista';
$labels['forward'] = 'Reunviar';
$labels['forwardinline'] = 'Reunviar direutamente';
$labels['forwardattachment'] = 'Reunviar como axuntu';
$labels['forwardmessage'] = 'Reunviar el mensaxe';
$labels['deletemessage'] = 'Desaniciar mensaxe';
$labels['movemessagetotrash'] = 'Mover mensaxe a la papelera';
$labels['printmessage'] = 'Imprentar esti mensaxe';
$labels['previousmessage'] = 'Amosar el mensaxe anterior';
$labels['firstmessage'] = 'Amosar primer mensaxe';
$labels['nextmessage'] = 'Amosar mensaxe siguiente';
$labels['lastmessage'] = 'Amosar mensaxe caberu';
$labels['backtolist'] = 'Tornar a la llista de mensaxes';
$labels['viewsource'] = 'Amosar fonte';
$labels['mark'] = 'Conseñar';
$labels['markmessages'] = 'Conseñar mensaxes';
$labels['markread'] = 'Como lleíu';
$labels['markunread'] = 'Como non lleíu';
$labels['markflagged'] = 'Como etiquetáu';
$labels['markunflagged'] = 'Como non etiquetáu';
$labels['moreactions'] = 'Más aiciones...';
$labels['folders-all'] = 'Toles carpetes';
$labels['more'] = 'Más';
$labels['back'] = 'Tornar';
$labels['options'] = 'Opciones';
$labels['first'] = 'Primeru';
$labels['last'] = 'Caberu';
$labels['previous'] = 'Postreru';
$labels['next'] = 'Siguiente';
$labels['select'] = 'Esbillar';
$labels['all'] = 'Toos';
$labels['none'] = 'Dengún';
$labels['currpage'] = 'Páxina actual';
$labels['isread'] = 'Lleer';
$labels['unread'] = 'Ensin lleer';
$labels['flagged'] = 'Etiquetaos';
$labels['unanswered'] = 'Ensin contestar';
$labels['withattachment'] = 'Con axuntu';
$labels['deleted'] = 'Desaniciáu';
$labels['undeleted'] = 'Non desaniciáu';
$labels['replied'] = 'Respondíu';
$labels['forwarded'] = 'Reunviáu';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtru';
$labels['list'] = 'Llista';
$labels['threads'] = 'Filos';
$labels['expand-all'] = 'Espander toos';
$labels['expand-unread'] = 'Espander non lleíos';
$labels['collapse-all'] = 'Contrayer toos';
$labels['threaded'] = 'Encadenaos';
$labels['autoexpand_threads'] = 'Espander filos de mensaxes';
$labels['do_expand'] = 'tolos filos';
$labels['expand_only_unread'] = 'namái con mensaxes non lleíos';
$labels['fromto'] = 'De/a';
$labels['flag'] = 'Bandera';
$labels['attachment'] = 'Axuntu';
$labels['nonesort'] = 'Dengún';
$labels['sentdate'] = 'Data d\'unviu';
$labels['arrival'] = 'Data de llegada';
$labels['asc'] = 'ascendente';
$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Llistar columnes';
$labels['listsorting'] = 'Columna de llistáu';
$labels['listorder'] = 'Orde de llistáu';
$labels['listmode'] = 'Mou de vista de llista';
$labels['layoutlist'] = 'Llista';
$labels['folderactions'] = 'Aiciones de carpeta...';
$labels['compact'] = 'Compautar';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensaxes';
$labels['quota'] = 'Usu de discu';
$labels['unknown'] = 'desconocíu';
$labels['unlimited'] = 'ensin llende';
$labels['quotatotal'] = 'Llímite';
$labels['quotaused'] = 'Usáu';
$labels['quotastorage'] = 'Espaciu en discu';
$labels['quicksearch'] = 'Gueta rápida';
$labels['resetsearch'] = 'Reaniciar la gueta';
$labels['searchmod'] = 'Guetar modificadores';
$labels['msgtext'] = 'Mensaxe enteru';
$labels['body'] = 'Cuerpu';
$labels['type'] = 'Triba';
$labels['namex'] = 'Nome';
$labels['searchscope'] = 'Algame';
$labels['currentfolder'] = 'Carpeta actual';
$labels['subfolders'] = 'Esta y les subcarpetes';
$labels['allfolders'] = 'Toles carpetes';
$labels['openinextwin'] = 'Abrir nuna ventana nueva';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Amosar en formatu de testu planu';
$labels['changeformathtml'] = 'Amosar en formatu HTML';
$labels['editasnew'] = 'Editar como nuevu';
$labels['send'] = 'Unviar';
$labels['sendmessage'] = 'Unviar el mensaxe yá';
$labels['savemessage'] = 'Guardar como borrador';
$labels['addattachment'] = 'Axuntar un ficheru';
$labels['charset'] = 'Codificación';
$labels['editortype'] = 'Triba d\'editor';
$labels['returnreceipt'] = 'Devolver avisu de recibu';
$labels['dsn'] = 'Notificación d\'estáu d\'entrega';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaxe orixinal';
$labels['selectimage'] = 'Esbillar imaxe';
$labels['addimage'] = 'Amestar imaxe';
$labels['selectmedia'] = 'Esbillar película';
$labels['addmedia'] = 'Amestar película';
$labels['insert'] = 'Inxertar';
$labels['editidents'] = 'Editar identidaes';
$labels['spellcheck'] = 'Correutor ortográficu';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Siguir cola edición';
$labels['revertto'] = 'Revertir a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = '¿Restaurar mensaxe?';
$labels['responses'] = 'Rempuestes';
$labels['insertresponse'] = 'Inxertar una rempuesta';
$labels['manageresponses'] = 'Alministrar rempuestes';
$labels['newresponse'] = 'Crear resmpuesta nueva';
$labels['addresponse'] = 'Amestar rempuesta';
$labels['editresponse'] = 'Editar rempuesta';
$labels['editresponses'] = 'Editar rempuestes';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Testu de la rempuesta';
$labels['attach'] = 'Axuntar';
$labels['attachments'] = 'Axuntos';
$labels['upload'] = 'Xubir';
$labels['close'] = 'Zarrar';
$labels['messageoptions'] = 'Opciones de mensaxe...';
$labels['togglecomposeoptions'] = 'Camudar opciones de composición';
$labels['low'] = 'Baxu';
$labels['lowest'] = 'Mui baxu';
$labels['normal'] = 'Normal';
$labels['high'] = 'Altu';
$labels['highest'] = 'Mui altu';
$labels['nosubject'] = '(ensin asuntu)';
$labels['showimages'] = 'Amosar imáxenes';
$labels['alwaysshow'] = 'Amosar siempres les imáxenes de $sender';
$labels['isdraft'] = 'Esti mensaxe ye un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['togglemoreheaders'] = 'Amosar más testeres del mensaxe';
$labels['togglefullheaders'] = 'Amosar o anubrir testeres de mensaxes';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testu planu';
$labels['savesentmessagein'] = 'Guardar mensaxe unviáu en';
$labels['dontsave'] = 'nun guardar';
$labels['maxuploadsize'] = 'El tamañu másimu pa un ficheru ye $size';
$labels['addcc'] = 'Amestar Cc';
$labels['addbcc'] = 'Amestar Cct';
$labels['addreplyto'] = 'Amestar Rempuesta pa';
$labels['addfollowupto'] = 'Amestar Siguir a';
$labels['mdnrequest'] = 'El remitente d\'esti mensaxe entrugó pa ser notificáu cuando lleas esti mensaxe. ¿Deseyes notificá-ylo al remitente?';
$labels['receiptread'] = 'Devolver avisu de recibu (lleíu)';
$labels['yourmessage'] = 'Esto ye una devolución del avisu de recibu pal to mensaxe';
$labels['receiptnote'] = 'Nota: Esti avisu de recibu namái reconoz que\'l mensaxe amosóse nel ordenador del destinatariu. Nun hai garantía de que\'l destinatariu lleera o entendiera\'l conteníu del mensaxe.';
$labels['name'] = 'Nome completu';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Apellíu';
$labels['middlename'] = 'Segundu nome';
$labels['nameprefix'] = 'Prefixu';
$labels['namesuffix'] = 'Sufixu';
$labels['nickname'] = 'Nomatu';
$labels['jobtitle'] = 'Tratamientu';
$labels['department'] = 'Departamentu';
$labels['gender'] = 'Xéneru';
$labels['maidenname'] = 'Apellíu de soltera';
$labels['email'] = 'Corréu';
$labels['phone'] = 'Teléfonu';
$labels['address'] = 'Direición';
$labels['street'] = 'Cai';
$labels['locality'] = 'Ciudá';
$labels['zipcode'] = 'Códigu postal';
$labels['region'] = 'Estáu/Provincia';
$labels['country'] = 'País';
$labels['birthday'] = 'Cumpleaños';
$labels['anniversary'] = 'Aniversariu';
$labels['website'] = 'Páxina web';
$labels['instantmessenger'] = 'Mensaxería nel intre';
$labels['notes'] = 'Notes';
$labels['male'] = 'home';
$labels['female'] = 'muyer';
$labels['manager'] = 'Alministrador';
$labels['assistant'] = 'Auxiliar';
$labels['spouse'] = 'Casáu con';
$labels['allfields'] = 'Tolos campos';
$labels['search'] = 'Guetar';
$labels['advsearch'] = 'Gueta avanzada';
$labels['advanced'] = 'Avanzáu';
$labels['other'] = 'Otru';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabayu';
$labels['typeother'] = 'Otru';
$labels['typemobile'] = 'Móvil';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax de casa';
$labels['typeworkfax'] = 'Fax del trabayu';
$labels['typecar'] = 'Coche';
$labels['typepager'] = 'Buscapersones';
$labels['typevideo'] = 'Videu';
$labels['typeassistant'] = 'Auxiliar';
$labels['typehomepage'] = 'Páxina d\'aniciu';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Amestar campu...';
$labels['addcontact'] = 'Amestar contautu';
$labels['editcontact'] = 'Editar contautu';
$labels['contacts'] = 'Contautos';
$labels['contactproperties'] = 'Propiedaes del contautu';
$labels['contactnameandorg'] = 'Nome y organización';
$labels['personalinfo'] = 'Información personal';
$labels['contactphoto'] = 'Semeya de contautu';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Encaboxar';
$labels['save'] = 'Guardar';
$labels['delete'] = 'Desaniciar';
$labels['rename'] = 'Renomar';
$labels['addphoto'] = 'Amestar';
$labels['replacephoto'] = 'Trocar';
$labels['uploadphoto'] = 'Xubir semeya';
$labels['newcontact'] = 'Crear contautu nuevu';
$labels['deletecontact'] = 'Desaniciar los contautos esbillaos';
$labels['composeto'] = 'Redactar mensaxe a';
$labels['contactsfromto'] = 'Contautos $from a $to de $count';
$labels['print'] = 'Imprentar';
$labels['export'] = 'Esportar';
$labels['exportall'] = 'Esportar too';
$labels['exportsel'] = 'Esportar lo esbillao';
$labels['exportvcards'] = 'Esportar contautos en formatu vCard';
$labels['newgroup'] = 'Crear grupu nuevu';
$labels['grouprename'] = 'Renomar grupu';
$labels['groupdelete'] = 'Desaniciar grupu';
$labels['groupremoveselected'] = 'Desaniciar los contautos esbillaos del grupu';
$labels['uponelevel'] = 'Xunir un nivel';
$labels['previouspage'] = 'Amosar páxina postrera';
$labels['firstpage'] = 'Amosar primer páxina';
$labels['nextpage'] = 'Amosar páxina siguiente';
$labels['lastpage'] = 'Amosar páxina cabera';
$labels['group'] = 'Grupu';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Llistar miembros del grupu';
$labels['personaladrbook'] = 'Direiciones personales';
$labels['searchsave'] = 'Guardar gueta';
$labels['searchdelete'] = 'Desaniciar gueta';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contautos';
$labels['importtarget'] = 'Amestar contautos a';
$labels['importreplace'] = 'Trocar el llibru de direiciones enteru';
$labels['importgroups'] = 'Importar asignaciones de grupu';
$labels['importgroupsall'] = 'Toos (crear grupos si ye necesario)';
$labels['importgroupsexisting'] = 'Namái pa los grupos esistentes';
$labels['done'] = 'Fecho';
$labels['settingsfor'] = 'Axustes pa';
$labels['about'] = 'Tocante a';
$labels['preferences'] = 'Preferencies';
$labels['userpreferences'] = 'Preferencies d\'usuariu';
$labels['editpreferences'] = 'Editar preferencies d\'usuariu';
$labels['identities'] = 'Identidaes';
$labels['manageidentities'] = 'Almisnitrar identidaes';
$labels['newidentity'] = 'Crear identidá nueva';
$labels['addidentity'] = 'Amestar identidça';
$labels['editidentity'] = 'Editar identidá';
$labels['preferhtml'] = 'Amosar HTML';
$labels['defaultcharset'] = 'Xuegu de caráuteres predetermináu';
$labels['htmlmessage'] = 'Mensaxe HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Robla dixital';
$labels['dateformat'] = 'Formatu de data';
$labels['timeformat'] = 'Formatu d\'hora';
$labels['prettydate'] = 'Dates prestoses';
$labels['setdefault'] = 'Reafitar';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Llingua';
$labels['timezone'] = 'Estaya horaria';
$labels['pagesize'] = 'Fileres per páxina';
$labels['signature'] = 'Robla';
$labels['dstactive'] = 'Cambéu horariu';
$labels['showinextwin'] = 'Abrir mensaxe nuna ventana nueva';
$labels['composeextwin'] = 'Redactar nuna ventana nueva';
$labels['htmleditor'] = 'Redactar el mensaxe en HTML';
$labels['htmlonreply'] = 'en rempuesta a mensaxe HTML';
$labels['htmlonreplyandforward'] = 'en reunviu o rempuesta al mensaxe HTML';
$labels['htmlsignature'] = 'Robla HTML';
$labels['showemail'] = 'Amosar direición de corréu-e al amosar el nome';
$labels['previewpane'] = 'Amosar panel de previsualización';
$labels['skin'] = 'Tema de la interfaz';
$labels['logoutclear'] = 'Vaciar la papelera al zarrar la sesión';
$labels['logoutcompact'] = 'Compautar la bandexa d\'entrada al zarrar la sesión';
$labels['uisettings'] = 'Interfaz d\'usuariu';
$labels['serversettings'] = 'Axustes del sirvidor';
$labels['mailboxview'] = 'Vista del buzón';
$labels['mdnrequests'] = 'En petición de devolución del recibíu';
$labels['askuser'] = 'entrúgame';
$labels['autosend'] = 'unviar recibu';
$labels['autosendknown'] = 'unviar recibu a los mios contautos, d\'otramiente entrúgame';
$labels['autosendknownignore'] = 'unviar recibu a los mios contautos, d\'otramiente inorar';
$labels['readwhendeleted'] = 'Conseñar el mensaxe como lleíu al desanicialu';
$labels['flagfordeletion'] = 'Conseñar el mensaxe pal desaniu en cuantes de desanicialu';
$labels['skipdeleted'] = 'Nun amosar los mensaxes desaniciaos';
$labels['deletealways'] = 'Si falla\'l treslláu de los mensaxes a la Papelera, desanicialos';
$labels['deletejunk'] = 'Desaniciar direutamente el correú en Puxarra';
$labels['showremoteimages'] = 'Amosar imáxenes en llinia remotes';
$labels['fromknownsenders'] = 'de remitentes conocíos';
$labels['always'] = 'siempres';
$labels['showinlineimages'] = 'Amosar les imáxenes axuntaes embaxo\'l mensaxe';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minutu/os';
$labels['refreshinterval'] = 'Refrescar (comprobación de mensaxes nuevos, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'de secute';
$labels['messagesdisplaying'] = 'Vista de mensaxes';
$labels['messagescomposition'] = 'Redaición de mensaxes';
$labels['mimeparamfolding'] = 'Nomes d\'axuntos';
$labels['2231folding'] = 'RFC 2231 completu (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 completu (otros)';
$labels['force7bit'] = 'Usar codificación MIME pa caráuteres de 8 bits';
$labels['advancedoptions'] = 'Opciones avanzaes';
$labels['toggleadvancedoptions'] = 'Camudar opciones avanzaes';
$labels['focusonnewmessage'] = 'Enfocar la ventana de restolación en mensaxes nuevos';
$labels['checkallfolders'] = 'Comprobar en toles carpetes mensaxes nuevos';
$labels['defaultfont'] = 'Triba de fonte por defeutu del mensaxe HTML';
$labels['mainoptions'] = 'Opciones principales';
$labels['browseroptions'] = 'Opciones del restolador';
$labels['section'] = 'Seición';
$labels['maintenance'] = 'Caltenimientu';
$labels['newmessage'] = 'Mensaxe nuevu';
$labels['signatureoptions'] = 'Opciones de robla';
$labels['whenreplying'] = 'Cuando se respuenda';
$labels['replyempty'] = 'nun citar el mensaxe orixinal';
$labels['replytopposting'] = 'aniciar un mensaxe nuevu enriba l\'orixinal';
$labels['replybottomposting'] = 'aniciar un mensaxe nuevu embaxo l\'orixinal';
$labels['replyremovesignature'] = 'Desaniciar la robla orixinal del mensaxe cuando se respuenda';
$labels['autoaddsignature'] = 'Amestar robla automáticamente';
$labels['newmessageonly'] = 'namái mensaxe nuevu';
$labels['replyandforwardonly'] = 'namái rempuestes y reunvios';
$labels['insertsignature'] = 'Inxertar robla';
$labels['afternseconds'] = 'dempués de $n segundos';
$labels['reqmdn'] = 'Solicitar siempres un recibu';
$labels['reqdsn'] = 'Solicitar siempres la notificación d\'estáu d\'entrega';
$labels['replysamefolder'] = 'Allugar les rempuestes na carpeta del mensaxe que tea respondiéndose';
$labels['defaultabook'] = 'Llibreta de direiciones por defeutu';
$labels['autocompletesingle'] = 'Saltar direiciones de corréu alternatives nel autocompletáu';
$labels['listnamedisplay'] = 'Llistar contautos como';
$labels['spellcheckbeforesend'] = 'Comprobar ortografía enantes d\'unviar un mensaxe';
$labels['spellcheckoptions'] = 'Opciones d\'ortografía';
$labels['spellcheckignoresyms'] = 'Inorar pallabres con símbolos';
$labels['spellcheckignorenums'] = 'Inorar pallabres con númberos';
$labels['spellcheckignorecaps'] = 'Inorar pallabres con too mayúscules';
$labels['addtodict'] = 'Amestar al diccionariu';
$labels['mailtoprotohandler'] = 'Rexistrar xestor de protocolu pa enllaces \'mailto:\'';
$labels['standardwindows'] = 'Remanar ventanos emerxentes como ventanes estándar';
$labels['forwardmode'] = 'Reunviu de mensaxes';
$labels['inline'] = 'en llinia';
$labels['asattachment'] = 'como axuntu';
$labels['replyallmode'] = 'Aición por defeutu del botón [Responder too]';
$labels['replyalldefault'] = 'responder a toos';
$labels['replyalllist'] = 'responder namái a la llista de Corréu (si s\'alcuentra)';
$labels['allmessages'] = 'tolos mensaxes';
$labels['folder'] = 'Carpeta';
$labels['folders'] = 'Carpetes';
$labels['foldername'] = 'Nome de carpeta';
$labels['subscribed'] = 'Soscrita';
$labels['messagecount'] = 'Mensaxes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear una carpeta nueva';
$labels['managefolders'] = 'Alministrar carpetes';
$labels['specialfolders'] = 'Carpetes especiales';
$labels['properties'] = 'Propiedaes';
$labels['folderproperties'] = 'Propiedaes de la carpeta';
$labels['parentfolder'] = 'Carpeta pá';
$labels['location'] = 'Llocalización';
$labels['info'] = 'Información';
$labels['getfoldersize'] = 'Primi pa saber el tamañu de la carpeta';
$labels['changesubscription'] = 'Primi pa camudar la soscripción';
$labels['foldertype'] = 'Triba de carpeta';
$labels['personalfolder'] = 'Carpeta privada';
$labels['otherfolder'] = 'Carpeta d\'otru usuariu';
$labels['sharedfolder'] = 'Carpeta pública';
$labels['sortby'] = 'Ordenar per';
$labels['sortasc'] = 'Orde ascendente';
$labels['sortdesc'] = 'Orde descendente';
$labels['undo'] = 'Desfacer';
$labels['installedplugins'] = 'Complementos instalaos';
$labels['plugin'] = 'Complementu';
$labels['version'] = 'Versión';
$labels['source'] = 'Fonte';
$labels['license'] = 'Llicencia';
$labels['support'] = 'Consiguir sofitu';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Européu occidental';
$labels['easterneuropean'] = 'Européu oriental';
$labels['southeasterneuropean'] = 'Européu suroriental';
$labels['baltic'] = 'Bálticu';
$labels['cyrillic'] = 'Cirílicu';
$labels['arabic'] = 'Árabe';
$labels['greek'] = 'Griegu';
$labels['hebrew'] = 'Hebréu';
$labels['turkish'] = 'Turcu';
$labels['nordic'] = 'Nórdicu';
$labels['thai'] = 'Tailandés';
$labels['celtic'] = 'Celta';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Xaponés';
$labels['korean'] = 'Coreanu';
$labels['chinese'] = 'Chinu';
$labels['arialabeltopnav'] = 'Control de ventana';
$labels['arialabeltasknav'] = 'Xeres d\'aplicación';
$labels['arialabeltoolbar'] = 'Barra de ferramientes d\'aplicación';
$labels['arialabelactivetask'] = 'Xera activa';
$labels['arialabelmessagessearchfilter'] = 'Flitru de llistáy de correos';
$labels['arialabelmailsearchform'] = 'Formulariu de gueta de mensaxe de corréu';
$labels['arialabelcontactsearchform'] = 'Formulariu de gueta de contautos';
$labels['arialabelmailquicksearchbox'] = 'Entrada de gueta de correos';
$labels['arialabelquicksearchbox'] = 'Entrada de gueta';
$labels['arialabelfolderlist'] = 'Esbilla de carpeta de corréu';
$labels['arialabelmessagelist'] = 'Llistáu de mensaxes de corréu';
$labels['arialabelmailpreviewframe'] = 'Vista previa de mensaxe';
$labels['arialabelmailboxmenu'] = 'Menú d\'aiciones de carpeta';
$labels['arialabellistselectmenu'] = 'Menú d\'esbilla de llista';
$labels['arialabelthreadselectmenu'] = 'Menú de llistáu de filos';
$labels['arialabelmailimportdialog'] = 'Diálogu d\'impotación de mensaxe';
$labels['arialabelmessagenav'] = 'Restolación de mensaxe';
$labels['arialabelmessagebody'] = 'Cuerpu de mensaxe';
$labels['arialabelmessageactions'] = 'Aiciones de mensaxe';
$labels['arialabelcontactquicksearch'] = 'Formulariu de gueta de contautos';
$labels['arialabelcontactsearchbox'] = 'Entrada de gueta de contautu';
$labels['arialabelmessageheaders'] = 'Testeres de mensaxe';
$labels['arialabelforwardingoptions'] = 'Opciones de reunviu';
$labels['arialabelreplyalloptions'] = 'Opciones de responder a toos';
$labels['arialabelmoremessageactions'] = 'Aiciones de más mensaxes';
$labels['arialabelmarkmessagesas'] = 'Conseñar los mensaxes esbillaos como...';
$labels['arialabelcomposeoptions'] = 'Opciones de redaición';
$labels['arialabelresponsesmenu'] = 'Menú de rempuestes conservaes';
$labels['arialabelattachmentuploadform'] = 'Formulariu de xuba d\'axuntu';
$labels['arialabelattachmentpreview'] = 'Vista previa d\'axuntu';
$labels['ariasummarycomposecontacts'] = 'Llista de contutos y grupos pa esbillar como destinatarios';
$labels['arialabelcontactexportoptions'] = 'Opciones d\'esportación de contautu';
$labels['arialabelabookgroupoptions'] = 'Opciones de llibru de direiciones/grupu';
$labels['arialabelpreferencesform'] = 'Formulariu de preferencies';
$labels['arialabelidentityeditfrom'] = 'Formulariu d\'edición d\'identidá';
$labels['arialabelresponseeditfrom'] = 'Formulariu d\'edición de rempuesta';
$labels['helplistnavigation'] = 'Restolación de tecláu de llista';
$labels['helplistkeyboardnavcontacts'] = "Enter: Abrir el contautu esbilláu/enfocáu.";
localization/ast/messages.inc000064400000027670151727150550012351 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '¡Hebo un fallu!';
$messages['loginfailed']  = 'Contraseña o nome d\'usuariu incorreutu.';
$messages['cookiesdisabled'] = 'El to restolador nun aceuta cookies.';
$messages['sessionerror'] = 'La to sesión nun val o caducó.';
$messages['storageerror'] = 'Fallu de conexón col sirvidor IMAP';
$messages['servererror'] = '¡Fallu del sirvidor!';
$messages['servererrormsg'] = 'Fallu de sirvidor: $msg';
$messages['connerror'] = '¡Fallu de conexón (Fallu al algamar el sirvidor)!';
$messages['dberror'] = '¡Fallu na base de datos!';
$messages['windowopenerror'] = '¡Bloquióse\'l ventanu emerxente!';
$messages['requesttimedout'] = 'Caducó\'l tiempu de rempuesta.';
$messages['errorreadonly'] = 'Imposible facer la operación. La bandexa ye de namái-llectura.';
$messages['errornoperm'] = 'Imposible facer la operación. Denegóse\'l permisu.';
$messages['erroroverquota'] = 'Nun pudo completase la operación. Nun queda espaciu nel discu.';
$messages['erroroverquotadelete'] = 'Nun queda espaciu nel discu. Usa Shift+Supr pa desaniciar un mensaxe.';
$messages['invalidrequest'] = 'Fallu de la solicitú. Nun se guardaron datos.';
$messages['invalidhost'] = 'Nome de sirvidor inválidu.';
$messages['nomessagesfound'] = 'Nun s\'atoparon mensaxes na bandexa';
$messages['mailboxempty'] = 'La bandexa de corréu ta balera';
$messages['nomessages'] = 'Nun hai mensaxes';
$messages['refreshing'] = 'Anovando...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Xubiendo ficheru';
$messages['uploadingmany'] = 'Xubiendo ficheros...';
$messages['loadingdata'] = 'Cargando datos...';
$messages['checkingmail'] = 'A la gueta de mensaxes nuevos...';
$messages['sendingmessage'] = 'Unviando mensaxe...';
$messages['messagesent'] = 'Unvióse\'l mensaxe.';
$messages['savingmessage'] = 'Guardar mensaxe...';
$messages['messagesaved'] = 'El mensaxe guardóse en borradores';
$messages['successfullysaved'] = 'Guardóse correchamente';
$messages['savingresponse'] = 'Guardando mensaxe de rempuesta...';
$messages['deleteresponseconfirm'] = '¿De xuru quies desaniciar esti testu de rempuesta?';
$messages['addedsuccessfully'] = 'El contautu amestóse correchamente a la llibreta de direiciones';
$messages['contactnameexists'] = 'Yá esiste un contautu col mesmu nome.';
$messages['blockedimages'] = 'Pa protexer la to privacidá, torgáronse les imáxenes esternes nesti mensaxe.';
$messages['encryptedmessage'] = 'Esti ye un mensaxe cifráu y nun soi a amosalu. ¡Sentímoslo!';
$messages['nocontactsfound'] = 'Nun doi con dengún contautu';
$messages['contactnotfound'] = 'Nun s\'atopa\'l contautu solicitáu.';
$messages['sendingfailed'] = 'Falló l\'unviu del mensaxe';
$messages['senttooquickly'] = 'Por favor espera $sec segundu/os enantes d\'unviar esti mensaxe.';
$messages['errorsavingsent'] = 'Hebo un fallu al guardar el mensaxe unviáu.';
$messages['errorsaving'] = 'Hebo un fallu al guardar.';
$messages['errormoving'] = 'Nun pudo movese el/los mensaxe(s).';
$messages['errorcopying'] = 'Nun pudo copiase el/los mensaxe(s).';
$messages['errordeleting'] = 'Nun pudo desaniciase el/los mensaxe(s)';
$messages['errormarking'] = 'Nun pudo marcase el/los mensaxe(s)';
$messages['deletecontactconfirm']  = '¿Daveres que quies desaniciar el contautu(os) seleicionáu(os)?';
$messages['deletegroupconfirm']  = '¿Daveres que quies desaniciar el grupu seleicionáu?';
$messages['deletemessagesconfirm'] = '¿Tas seguru de desaniciar los mensaxes que marcaste?';
$messages['deletefolderconfirm']  = '¿Daveres que quies desaniciar esta bandexa?';
$messages['purgefolderconfirm']  = '¿Daveres que quies desaniciar tolos mensaxes d\'esta bandexa?';
$messages['contactdeleting'] = 'Desaniciando contautu(os)...';
$messages['groupdeleting'] = 'Desaniciando grupu...';
$messages['folderdeleting'] = 'Desaniciando la bandexa...';
$messages['foldermoving'] = 'Moviendo la bandexa...';
$messages['foldersubscribing'] = 'Soscribiendo bandexa...';
$messages['folderunsubscribing'] = 'Desoscribiendo bandexa...';
$messages['formincomplete'] = 'Tienes de rellenar tolos campos del formulariu.';
$messages['noemailwarning'] = 'Por favor, introduz un corréu válidu.';
$messages['nonamewarning']  = 'Por favor, introduz un nome.';
$messages['nopagesizewarning'] = 'Por favor, introduz un tamañu de páxina.';
$messages['norecipientwarning'] = 'Por favor, introduz polo menos un destinatariu';
$messages['nosubjectwarning']  = 'El campo "Asuntu" ta vacíu. ¿Quies rellenalu agora?';
$messages['nobodywarning'] = '¿Quies unviar esti mensaxe ensin testu?';
$messages['restoresavedcomposedata'] = 'Alcontróse un mensaxe redactáu anterior ensin unviar.n\nAsuntu: $subject\nGuardáu: $date\n\n¿Quies restaurar esti mensaxe?';
$messages['nosearchname'] = 'Por favor, introduz un nome o una direición de corréu-e.';
$messages['notuploadedwarning'] = 'Entá nun se xubieron tolos axuntos. Por favor, espera o encaboxa la xuba.';
$messages['searchsuccessful'] = 'Atopáronse $nr mensaxes.';
$messages['contactsearchsuccessful'] = 'Atopáronse $nr contautos.';
$messages['searchnomatch'] = 'Nun s\'atopó dengún resultáu';
$messages['searching'] = 'A la gueta...';
$messages['checking'] = 'Comprobando...';
$messages['stillsearching'] = 'Guetando entá...';
$messages['nospellerrors'] = 'Nun s\'atoparon errores ortográficos';
$messages['folderdeleted'] = 'Desanicióse la bandexa correchamente';
$messages['foldersubscribed'] = 'Soscritu a bandexa correchamente.';
$messages['folderunsubscribed'] = 'Soscripción a bandexa anulada correchamente.';
$messages['deletedsuccessfully'] = 'Desanicióse correchamente';
$messages['converting'] = 'Desaniciando\'l formatu del mensaxe...';
$messages['messageopenerror'] = 'Nun pue descargase\'l mensaxe del sirvidor.';
$messages['fileuploaderror'] = 'Fallu al xubir ficheros.';
$messages['filesizeerror'] = 'El ficheru ye más grande de lo permitío ($size)';
$messages['copysuccess'] = '$nr contautos copiaos correchamente.';
$messages['movesuccess'] = '$nr contautos movíos correchamente.';
$messages['copyerror'] = 'Nun pudo copiase dengún contautu.';
$messages['moveerror'] = 'Nun pudo movese dengún contautu.';
$messages['sourceisreadonly'] = 'Esta direición ye de namái-llectura';
$messages['errorsavingcontact'] = 'Nun pudo guardase la direición del contautu';
$messages['movingmessage'] = 'Moviendo mensaxe(s)...';
$messages['copyingmessage'] = 'Copiando mensaxe(s)...';
$messages['copyingcontact'] = 'Copiando contautu(os)...';
$messages['movingcontact'] = 'Moviendo contautu(os)...';
$messages['deletingmessage'] = 'Desaniciando mensaxe(s)...';
$messages['markingmessage'] = 'Marcando mensaxe(s)...';
$messages['addingmember'] = 'Amestando contautu(os) al grupu...';
$messages['removingmember'] = 'Quitando contautu(os) del grupu...';
$messages['receiptsent'] = 'Unvióse correchamente l\'avisu de llectura.';
$messages['errorsendingreceipt'] = 'Nun pudo unviase l\'avisu de llectura.';
$messages['deleteidentityconfirm'] = '¿Daveres que quies desaniciar esta identidá?';
$messages['nodeletelastidentity'] = 'Nun pue desaniciase esa identidá porque ye la última.';
$messages['forbiddencharacter'] = 'El nome de la bandexa tien un caráuter non validu.';
$messages['selectimportfile'] = 'Por favor escueyi\'l ficheru que quies xubir';
$messages['addresswriterror'] = 'Nun pue escribise na llibreta de direiciones seleicionada.';
$messages['contactaddedtogroup'] = 'Amestáronse correutamente los contautos a esti grupu.';
$messages['contactremovedfromgroup'] = 'Desaniciáronse correutamente los contautos a esti grupu.';
$messages['nogroupassignmentschanged'] = 'Nun hai cambeos n\'asignación de grupos.';
$messages['importwait'] = 'Importando, dame un minutín...';
$messages['importformaterror'] = '¡La importación falló! El ficheru unviáu nun ye un ficheru válidu d\'importación.';
$messages['importconfirm'] = '<b>Importáronse correchamente $inserted contautos</b>';
$messages['importconfirmskipped'] = '<b>Inoraes $skipped entraes esistentes</b>';
$messages['importmessagesuccess'] = '$nr mensaxes importaos con éxitu';
$messages['importmessageerror'] = '¡Falló la importación! El ficheru xubíu nun ye un ficheru válidu de mensaxe o buzón de corréu';
$messages['opnotpermitted'] = '¡Nun tienes permisu pa facelo!';
$messages['editorwarning'] = 'Cambear la triba d\'editor pue causar perda del formatu del testu. ¿Deseyes continuar?';
$messages['httpreceivedencrypterror'] = 'Hai un fallu grave de configuración. Contauta col alministrador de secute. <b>Nun pue unviase\'l mensaxe</b>';
$messages['smtpconnerror'] = 'Fallu SMTP ($code): Fallu de conexón col sirvidor';
$messages['smtpautherror'] = 'Fallu SMTP ($code): Fallu d\'autorización';
$messages['smtpfromerror'] = 'Fallu SMTP ($code): Fallu al afitar l\'emisor "$from" ($msg)';
$messages['smtptoerror'] = 'Fallu SMTP ($code): Fallu al amestar el destinatariu "$to" ($msg)';
$messages['smtprecipientserror'] = 'Fallu SMTP: Nun pue amosase la llista de destinatarios.';
$messages['smtperror'] = 'Fallu SMTP: $msg';
$messages['toomanyrecipients'] = 'Hai munchos destinatarios. Amenorga\'l númberu de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'El númberu de miembros del grupu perpasa\'l máximu de $max.';
$messages['internalerror'] = 'Hebo un fallu internu. Por favor, vuelvi intentalo.';
$messages['contactdelerror'] = 'Nun pudo desaniciase el/los contautu(os).';
$messages['contactdeleted'] = 'Contautu(os) desaniciáu(os) correchamente.';
$messages['contactrestoreerror'] = 'Nun pudieron restaurase los contautos desaniciaos.';
$messages['contactrestored'] = 'Los contautos restauráronse con éxitu.';
$messages['groupdeleted'] = 'Grupu desaniciáu correchamente.';
$messages['grouprenamed'] = 'Grupu renomáu correchamente.';
$messages['groupcreated'] = 'Grupu creáu correchamente.';
$messages['savedsearchdeleted'] = 'La busca guardada, desanicióse con éxitu.';
$messages['savedsearchdeleteerror'] = 'Nun pudo desaniciase la busca guardada.';
$messages['savedsearchcreated'] = 'Guardóse correchamente la busca.';
$messages['savedsearchcreateerror'] = 'Nun pudo guardase la busca.';
$messages['messagedeleted'] = 'Mensaxe(s) desaniciaos correchamente.';
$messages['messagemoved'] = 'Mensaxe(s) movíos correchamente.';
$messages['messagecopied'] = 'Mensaxe(s) copiaos correchamente.';
$messages['messagemarked'] = 'Mensaxe(s) marcaos correchamente.';
$messages['autocompletechars'] = 'Introduz a lo menso $min caráuteres p\'autocompletar.';
$messages['autocompletemore'] = 'Atopáronse más coincidencies. Por favor, escribi más caráuteres.';
$messages['namecannotbeempty'] = 'Hai que poner el nome.';
$messages['nametoolong'] = 'El nome ye abondo llargu.';
$messages['folderupdated'] = 'Bandexa anovada correchamente.';
$messages['foldercreated'] = 'Bandexa creada correchamente.';
$messages['invalidimageformat'] = 'Nun ye un formatu d\'imaxe válidu.';
$messages['mispellingsfound'] = 'Deteutáronse fallos ortográficos nel mensaxe.';
$messages['parentnotwritable'] = 'Nun puede crease/movese la carpeta a la carpeta superior elexida. Nun tienes permisos d\'accesu.';
$messages['messagetoobig'] = 'Esta parte del mensaxe ye enforma grande pa procesala';
$messages['noscriptwarning'] = 'Avisu: ¡esti serviciu de webmail necesita Javascript! Pa poder usalu, habilita\'l soporte de Javascript nel to navegador, por favor.';
localization/lv_LV/timezones.inc000064400000015032151727150560013000 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Āfrika';
$labels['tz:africa:abidjan'] = 'Abidžana';
$labels['tz:africa:accra'] = 'Akra';
$labels['tz:africa:addis_ababa'] = 'Adisabeba';
$labels['tz:africa:algiers'] = 'Alžīra';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangi';
$labels['tz:africa:banjul'] = 'Bandžula';
$labels['tz:africa:bissau'] = 'Bisava';
$labels['tz:africa:cairo'] = 'Kaira';
$labels['tz:africa:casablanca'] = 'Kasablanka';
$labels['tz:africa:dakar'] = 'Dakāra';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:lagos'] = 'Lagosa';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:maputo'] = 'Maputu';
$labels['tz:africa:tripoli'] = 'Tripole';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:argentina'] = 'Argentīna';
$labels['tz:america:barbados'] = 'Barbadosa';
$labels['tz:america:chicago'] = 'Čikāga';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:mexico_city'] = 'Mehiko';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'Ņujorka';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:phoenix'] = 'Fēniksa';
$labels['tz:america:santiago'] = 'Santjago';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:vancouver'] = 'Vankūvera';
$labels['tz:antarctica'] = 'Antarktika';
$labels['tz:arctic'] = 'Arktika';
$labels['tz:asia'] = 'Āzija';
$labels['tz:asia:baghdad'] = 'Bagdāde';
$labels['tz:asia:bahrain'] = 'Bahreina';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bankoka';
$labels['tz:asia:beirut'] = 'Beiruta';
$labels['tz:asia:brunei'] = 'Bruneja';
$labels['tz:asia:chita'] = 'Čita';
$labels['tz:asia:colombo'] = 'Kolombo';
$labels['tz:asia:dubai'] = 'Dubaja';
$labels['tz:asia:dushanbe'] = 'Dušanbe';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hong_kong'] = 'Honkonga';
$labels['tz:asia:irkutsk'] = 'Irkutska';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jerusalem'] = 'Jeruzaleme';
$labels['tz:asia:kabul'] = 'Kabula';
$labels['tz:asia:kamchatka'] = 'Kamčatka';
$labels['tz:asia:karachi'] = 'Karāči';
$labels['tz:asia:kuwait'] = 'Kuveita';
$labels['tz:asia:macau'] = 'Makau';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muskata';
$labels['tz:asia:nicosia'] = 'Nikosija';
$labels['tz:asia:novosibirsk'] = 'Novosibirska';
$labels['tz:asia:omsk'] = 'Omska';
$labels['tz:asia:qatar'] = 'Kvatara';
$labels['tz:asia:seoul'] = 'Seula';
$labels['tz:asia:shanghai'] = 'Šanhaja';
$labels['tz:asia:singapore'] = 'Singapūra';
$labels['tz:asia:taipei'] = 'Taipeja';
$labels['tz:asia:tashkent'] = 'Taškenta';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teherāna';
$labels['tz:asia:tokyo'] = 'Tokija';
$labels['tz:asia:tomsk'] = 'Tomska';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanārijas';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reikjavika';
$labels['tz:atlantic:south_georgia'] = 'Dienviddžordžija';
$labels['tz:australia'] = 'Austrālija';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:melbourne'] = 'Melburna';
$labels['tz:australia:sydney'] = 'Sidneja';
$labels['tz:europe'] = 'Eiropa';
$labels['tz:europe:amsterdam'] = 'Amsterdama';
$labels['tz:europe:andorra'] = 'Andora';
$labels['tz:europe:athens'] = 'Atēnas';
$labels['tz:europe:belgrade'] = 'Belgrada';
$labels['tz:europe:berlin'] = 'Berlīne';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brisele';
$labels['tz:europe:bucharest'] = 'Buhareste';
$labels['tz:europe:budapest'] = 'Budapešta';
$labels['tz:europe:copenhagen'] = 'Kopenhāgena';
$labels['tz:europe:dublin'] = 'Dublina';
$labels['tz:europe:gibraltar'] = 'Gibraltārs';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Mana sala';
$labels['tz:europe:istanbul'] = 'Stambula';
$labels['tz:europe:jersey'] = 'Džersija';
$labels['tz:europe:kaliningrad'] = 'Kaļiņingrada';
$labels['tz:europe:kiev'] = 'Kijeva';
$labels['tz:europe:kirov'] = 'Kirova';
$labels['tz:europe:lisbon'] = 'Lisabona';
$labels['tz:europe:ljubljana'] = 'Lubļana';
$labels['tz:europe:london'] = 'Londona';
$labels['tz:europe:luxembourg'] = 'Luksemburga';
$labels['tz:europe:madrid'] = 'Madride';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:minsk'] = 'Minska';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Maskava';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Parīze';
$labels['tz:europe:prague'] = 'Prāga';
$labels['tz:europe:riga'] = 'Rīga';
$labels['tz:europe:rome'] = 'Roma';
$labels['tz:europe:samara'] = 'Samāra';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajeva';
$labels['tz:europe:saratov'] = 'Saratova';
$labels['tz:europe:simferopol'] = 'Simferopole';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofija';
$labels['tz:europe:stockholm'] = 'Stokholma';
$labels['tz:europe:tallinn'] = 'Tallina';
$labels['tz:europe:vatican'] = 'Vatikāns';
$labels['tz:europe:vienna'] = 'Vīne';
$labels['tz:europe:vilnius'] = 'Viļņa';
$labels['tz:europe:volgograd'] = 'Volgograda';
$labels['tz:europe:warsaw'] = 'Varšava';
$labels['tz:europe:zagreb'] = 'Zagreba';
$labels['tz:europe:zurich'] = 'Cīrihe';
$labels['tz:indian'] = 'Indiana';
$labels['tz:indian:comoro'] = 'Komoro';
$labels['tz:indian:maldives'] = 'Maldivas';
$labels['tz:indian:mauritius'] = 'Maurīcija';
$labels['tz:pacific'] = 'Klusā okeāna valstis';
$labels['tz:pacific:fiji'] = 'Fidži';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:port_moresby'] = 'Portmorsbija';
$labels['tz:pacific:saipan'] = 'Spānija';
$labels['tz:pacific:tahiti'] = 'taiti';
localization/lv_LV/labels.inc000064400000104402151727150560012225 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Esiet laipni lūgti $product';
$labels['username'] = 'Lietotājvārds';
$labels['password'] = 'Parole';
$labels['server'] = 'Serveris';
$labels['login'] = 'Autorizēties';
$labels['oauthlogin'] = 'Autorizēties ar $provider';
$labels['menu'] = 'Izvēlne';
$labels['logout'] = 'Iziet';
$labels['mail'] = 'E-pasts';
$labels['settings'] = 'Iestatījumi';
$labels['addressbook'] = 'Adrešu grāmata';
$labels['darkmode'] = 'Tumšais režīms';
$labels['lightmode'] = 'Gaišais režīms';
$labels['inbox'] = 'Ienākošās';
$labels['drafts'] = 'Uzmetumi';
$labels['sent'] = 'Nosūtītās';
$labels['trash'] = 'Papīrgrozs';
$labels['junk'] = 'Mēstules';
$labels['show_real_foldernames'] = 'Sistēmas mapēm rādīt īstos nosaukumus';
$labels['subject'] = 'Temats';
$labels['from'] = 'No';
$labels['sender'] = 'Sūtītājs';
$labels['to'] = 'Kam';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Atbildēt-Uz';
$labels['followupto'] = 'Sekot-Uz';
$labels['date'] = 'Datums';
$labels['size'] = 'Izmērs';
$labels['priority'] = 'Prioritāte';
$labels['organization'] = 'Uzņēmums';
$labels['readstatus'] = 'Izlasīšanas statuss';
$labels['listoptions'] = 'Vēstuļu saraksta attēlošanas iestatījumi...';
$labels['listoptionstitle'] = 'Saraksta parametri';
$labels['mailboxlist'] = 'Mapes';
$labels['messagesfromto'] = 'Vēstules $from līdz $to no $count';
$labels['threadsfromto'] = 'Vijumi $from līdz $to no $count';
$labels['messagenrof'] = '$nr. vēstule no $count';
$labels['fromtoshort'] = '$from – $to no $count';
$labels['copy'] = 'Kopēt';
$labels['move'] = 'Pārvietot';
$labels['moveto'] = 'Pārvietot uz...';
$labels['copyto'] = 'Kopēt uz ...';
$labels['download'] = 'lejupielādēt';
$labels['open'] = 'Atvērt';
$labels['showattachment'] = 'Rādīt';
$labels['showanyway'] = 'Vienalga rādīt';
$labels['filename'] = 'Faila nosaukums';
$labels['filesize'] = 'Faila izmērs';
$labels['addtoaddressbook'] = 'Pievienot adrešu grāmatai';
$labels['sun'] = 'Sv';
$labels['mon'] = 'P';
$labels['tue'] = 'O';
$labels['wed'] = 'T';
$labels['thu'] = 'C';
$labels['fri'] = 'P';
$labels['sat'] = 'Se';
$labels['sunday'] = 'Svētdiena';
$labels['monday'] = 'Pirmdiena';
$labels['tuesday'] = 'Otrdiena';
$labels['wednesday'] = 'Trešdiena';
$labels['thursday'] = 'Ceturtdiena';
$labels['friday'] = 'Piektdiena';
$labels['saturday'] = 'Sestdiena';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Maijs';
$labels['jun'] = 'Jūn';
$labels['jul'] = 'Jūl';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Janvāris';
$labels['longfeb'] = 'Februāris';
$labels['longmar'] = 'Marts';
$labels['longapr'] = 'Aprīlis';
$labels['longmay'] = 'Maijs';
$labels['longjun'] = 'Jūnijs';
$labels['longjul'] = 'Jūlijs';
$labels['longaug'] = 'Augusts';
$labels['longsep'] = 'Septembris';
$labels['longoct'] = 'Oktobris';
$labels['longnov'] = 'Novembris';
$labels['longdec'] = 'Decembris';
$labels['today'] = 'Šodien';
$labels['refresh'] = 'Atjaunot';
$labels['checkmail'] = 'Pārbaudīt e-pastu';
$labels['compose'] = 'Rakstīt vēstuli';
$labels['writenewmessage'] = 'Rakstīt jaunu vēstuli';
$labels['reply'] = 'Atbildēt';
$labels['replytomessage'] = 'Atbildēt sūtītājam';
$labels['replytoallmessage'] = 'Atbildēt sūtītājam vai listei un visiem adresātiem';
$labels['replyall'] = 'Atbildēt visiem';
$labels['replylist'] = 'Atbildēt listei';
$labels['forward'] = 'Pārsūtīt';
$labels['forwardinline'] = 'Pārsūtīt iekļaujot vēstulē';
$labels['forwardattachment'] = 'Pārsūtīt kā pielikumu';
$labels['forwardmessage'] = 'Pārsūtīt vēstuli';
$labels['bouncemsg'] = 'Sūtīt atkārtoti (bounce)';
$labels['bounce'] = 'Sūtīt atkārtoti';
$labels['deletemessage'] = 'Dzēst vēstuli';
$labels['movemessagetotrash'] = 'Pārvietot vēstuli uz papīrgrozu';
$labels['printmessage'] = 'Izdrukāt šo vēstuli';
$labels['previousmessage'] = 'Parādīt iepriekšējo vēstuli';
$labels['firstmessage'] = 'Parādīt pirmo vēstuli';
$labels['nextmessage'] = 'Parādīt nākamo vēstuli';
$labels['lastmessage'] = 'Parādīt pēdējo vēstuli';
$labels['backtolist'] = 'Atpakaļ uz vēstuļu sarakstu';
$labels['viewsource'] = 'Parādīt pirmtekstu';
$labels['mark'] = 'Atzīmēt';
$labels['markmessages'] = 'Atzīmēt vēstules:';
$labels['markread'] = 'kā lasītas';
$labels['markunread'] = 'kā nelasītas';
$labels['markflagged'] = 'kā atīmētas';
$labels['markunflagged'] = 'kā neatzīmētas';
$labels['moreactions'] = 'Papildus darbības...';
$labels['markallread'] = 'Atzīmēt visus kā izlasītus';
$labels['folders-cur'] = 'Tikai atzīmēto mapi';
$labels['folders-sub'] = 'Atzīmēt mapi un tās apakšmapes';
$labels['folders-all'] = 'Visas mapes';
$labels['more'] = 'Vairāk';
$labels['back'] = 'Atpakaļ';
$labels['options'] = 'Opcijas';
$labels['composeoptions'] = 'Rakstīšanas iestatījumi';
$labels['optionsandattachments'] = 'Opcijas un pielikumi';
$labels['actions'] = 'Darbību saraksts';
$labels['first'] = 'Pirmā';
$labels['last'] = 'Pēdējā';
$labels['previous'] = 'Iepriekšējā';
$labels['next'] = 'Nākošā';
$labels['select'] = 'Atzīmēt';
$labels['selection'] = 'Atlase';
$labels['all'] = 'Visas';
$labels['none'] = 'Nevienu';
$labels['currpage'] = 'Pašreizējā lapa';
$labels['isread'] = 'Lasīt';
$labels['unread'] = 'Nelasītās';
$labels['flagged'] = 'Atzīmētās';
$labels['unflagged'] = 'Nav atzīmēta';
$labels['unanswered'] = 'Neatbildētās';
$labels['withattachment'] = 'Ar pielikumu';
$labels['deleted'] = 'Dzēstās';
$labels['undeleted'] = 'Nav izdzēstas';
$labels['replied'] = 'Atbildēta';
$labels['forwarded'] = 'Pārsūtīta';
$labels['invert'] = 'Pretēji';
$labels['filter'] = 'Filtrēt';
$labels['list'] = 'Rādīt kā sarakstu';
$labels['threads'] = 'Rādīt kā vijumus';
$labels['expand-all'] = 'Izvērst visus';
$labels['expand-unread'] = 'Izvērst neizlasītās';
$labels['collapse-all'] = 'Sakļaut visas';
$labels['threaded'] = 'Rādīt vijumus';
$labels['showunread'] = 'Parādīt neizlasītās vēstules';
$labels['autoexpand_threads'] = 'Izvērst vēstuļu vijumus';
$labels['do_expand'] = 'visus vijumus';
$labels['expand_only_unread'] = 'tikai ar neizlasītām vēstulēm';
$labels['fromto'] = 'No/Kam';
$labels['flag'] = 'Atzīmēt';
$labels['attachment'] = 'Pielikums';
$labels['nonesort'] = 'Neviena';
$labels['sentdate'] = 'Nosūtīšanas datums';
$labels['arrival'] = 'Pienākšanas datums';
$labels['asc'] = 'augoša';
$labels['desc'] = 'dilstoša';
$labels['listcolumns'] = 'Saraksta kolonnas';
$labels['listsorting'] = 'Kārtošanas kolonnas';
$labels['listorder'] = 'Kārtošanas secība';
$labels['listmode'] = 'Attēlošanas veids';
$labels['lmode'] = 'Attēlošanas veids';
$labels['layout'] = 'Izklājums';
$labels['layoutwidescreen'] = 'Platekrāns';
$labels['layoutdesktop'] = 'Darba virsma';
$labels['layoutlist'] = 'Saraksts';
$labels['layoutwidescreendesc'] = 'Platekrāna (3 kolonnu skats)';
$labels['layoutdesktopdesc'] = 'Datorskats (plats skats ar e-pasta priekšskatījumu apakšā)';
$labels['layoutlistdesc'] = 'Saraksts (bez e-pasta prieksškatīšanas)';
$labels['folderactions'] = 'Darbības ar mapēm...';
$labels['compact'] = 'Saspiest';
$labels['empty'] = 'Iztukšot';
$labels['importmessages'] = 'Importēt vēstules';
$labels['mailimportdesc'] = 'Jūs varat augšupielādēt e-pastu izmantojot <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> vai <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> formāta failus.';
$labels['mailimportzip'] = 'Vairāki faili var tikt sakompresēti zip arhīvos.';
$labels['quota'] = 'Kvota';
$labels['unknown'] = 'nezināms';
$labels['unlimited'] = 'neierobežots';
$labels['quotatype'] = 'Kvotas tips';
$labels['quotatotal'] = 'Limits';
$labels['quotaused'] = 'Izlietots';
$labels['quotastorage'] = 'Kvota';
$labels['quotamessage'] = 'Vēstuļu skaits';
$labels['shortheaderdate'] = 'Datums $date';
$labels['shortheaderto'] = 'Adresāts $to datumā $date';
$labels['shortheaderfrom'] = 'No $from datumā $date';
$labels['quicksearch'] = 'Ārtā meklēšana';
$labels['searchplaceholder'] = 'Meklēt...';
$labels['resetsearch'] = 'Atstatīt meklēšanu';
$labels['searchmod'] = 'Meklēšanas modifikatori:';
$labels['msgtext'] = 'Visā vēstulē';
$labels['body'] = 'Pamatteksts';
$labels['type'] = 'Tips';
$labels['namex'] = 'Vārds';
$labels['searchscope'] = 'Kur meklēt';
$labels['currentfolder'] = 'Pašreizējā mape';
$labels['subfolders'] = 'Šī un apakšmapes';
$labels['allfolders'] = 'Visas mapes';
$labels['searchinterval-1W'] = 'vecākas par nedēļu';
$labels['searchinterval-1M'] = 'vecākas par mēnesi';
$labels['searchinterval-1Y'] = 'vecākas par gadu';
$labels['searchinterval1W'] = 'nedēļu vecas';
$labels['searchinterval1M'] = 'mēnesi vecas';
$labels['searchinterval1Y'] = 'gadu vecas';
$labels['openinextwin'] = 'Atvērt jaunā logā';
$labels['emlsave'] = 'lejupielādēt (.eml)';
$labels['changeformattext'] = 'Rādīt kā neformatētu tekstu';
$labels['changeformathtml'] = 'Rādīt kā HTML formatētu';
$labels['editasnew'] = 'Rediģēt kā jaunu';
$labels['send'] = 'Sūtīt';
$labels['sendmessage'] = 'Sūtīt vēstuli';
$labels['savemessage'] = 'Saglabāt kā uzmetumu';
$labels['addattachment'] = 'Pievienot failu';
$labels['charset'] = 'Rakstzīmju kopa';
$labels['editortype'] = 'Redaktora tips';
$labels['returnreceipt'] = 'Saņemšanas apstiprinājums';
$labels['dsn'] = 'Piegādes atskaite';
$labels['mailreplyintro'] = '$sender @ $date rakstīja:';
$labels['originalmessage'] = 'Sākotnējā vēstule';
$labels['selectimage'] = 'Atzīmēt attēlu';
$labels['addimage'] = 'Pievienot attēlu';
$labels['selectmedia'] = 'Atzīmēt video';
$labels['addmedia'] = 'Pievienot video';
$labels['encrypt'] = 'Šifrēt';
$labels['encryptmessage'] = 'Šifrēt vēstuli';
$labels['encryptmessagemailvelope'] = 'Šifrēt vēstuli ar "Mailenvelope"';
$labels['importpubkeys'] = 'Importēt publiskās atslēgas';
$labels['encryptedsendialog'] = 'Sūta šifrēto vēstuli';
$labels['encryptandsign'] = 'Šifrēt un parakstīt';
$labels['keyid'] = 'Atslēgas ID';
$labels['keylength'] = 'Biti';
$labels['keyexpired'] = 'Beidzies termiņš';
$labels['keyrevoked'] = 'Atsaukta';
$labels['bccinstead'] = 'Lietot Bcc';
$labels['addheader'] = 'Pievienot adresātu (galvenē)';
$labels['insert'] = 'Ievietot';
$labels['insertcontact'] = 'Pievienot kontaktu(s)';
$labels['recipient'] = 'Saņēmējs';
$labels['recipientedit'] = 'Rediģēt saņēmēju';
$labels['editidents'] = 'Rediģēt identitātes';
$labels['spellcheck'] = 'Izrunāt';
$labels['checkspelling'] = 'Pārbaudīt pareizrakstību';
$labels['resumeediting'] = 'Turpināt rediģēšanu';
$labels['revertto'] = 'Atgriezt uz';
$labels['restore'] = 'Atjaunot';
$labels['restoremessage'] = 'Atjaunot vēstuli?';
$labels['ignore'] = 'Ignorēt';
$labels['responses'] = 'Atbildes';
$labels['insertresponse'] = 'Ievietot atbildi';
$labels['manageresponses'] = 'Pārvaldīt atbildes';
$labels['newresponse'] = 'Izveidot jaunu atbildi';
$labels['addresponse'] = 'Pievienot atbildi';
$labels['editresponse'] = 'Rediģēt atbildi';
$labels['editresponses'] = 'Rediģēt atbildes';
$labels['responsename'] = 'Vārds';
$labels['responsetext'] = 'Atbildes teksts';
$labels['attach'] = 'Pievienot';
$labels['attachments'] = 'Pielikumi';
$labels['upload'] = 'Augšupielādēt';
$labels['uploadprogress'] = '$percent ($current no $total)';
$labels['close'] = 'Aizvērt';
$labels['messageoptions'] = 'Vēstuļu iestatījumi...';
$labels['togglecomposeoptions'] = 'Parādīt rakstīšanas iestatījumus';
$labels['attachmentrename'] = 'Pārsaukt pielikumu';
$labels['low'] = 'Zema';
$labels['lowest'] = 'Zemākā';
$labels['normal'] = 'Normāla';
$labels['high'] = 'Augsta';
$labels['highest'] = 'Augstākā';
$labels['nosubject'] = '(bez tēmas)';
$labels['showimages'] = 'Rādīt attēlus';
$labels['allow'] = 'Atļaut';
$labels['alwaysshow'] = 'Vienmēr rādīt attēlus vēstulēs, kuras sūtījis $sender';
$labels['alwaysallow'] = 'Vienmēr atļaut no sūtītāja $sender';
$labels['isdraft'] = 'Šis ir melnraksts.';
$labels['andnmore'] = '$nr vairāk...';
$labels['details'] = 'Detaļas';
$labels['summary'] = 'Kopsavilkums';
$labels['headers'] = 'Galvene';
$labels['allheaders'] = 'Visas galvenes';
$labels['togglemoreheaders'] = 'Rādīt galvenes papildus informāciju';
$labels['togglefullheaders'] = 'Slēpt galvenes papildus informāciju';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Vienkāršs teksts';
$labels['savesentmessagein'] = 'Saglabāt nosūtīto vēstuli mapē';
$labels['dontsave'] = 'nesaglabāt';
$labels['maxuploadsize'] = 'Maksimālais atļautais faila izmērs ir $size';
$labels['addcc'] = 'Pievienot Cc';
$labels['addbcc'] = 'Pievienot Bcc';
$labels['addreplyto'] = 'Pievienot Atbildēt-Uz';
$labels['addfollowupto'] = 'Pievienot Followup-To';
$labels['sendreceipt'] = 'Vai nosūtīt izlasīšanas paziņojumu?';
$labels['mdnrequest'] = 'Šīs vēstules sūtītājs vēlas redzēt vēstules saņemšanas apstiprinājumu. Vai Jūs vēlaties nosūtīt šo apstiprinājumu?';
$labels['receiptread'] = 'Saņemšanas apstiprinājums';
$labels['yourmessage'] = 'Šis ir Jūsu nosūtītās vēstules saņemšanas apstiprinājums';
$labels['receiptnote'] = 'Piezīme: Šis apsiprinājums nozīmē tikai to, ka vēstule tika parādīta uz saņēmāja datora. Tas nenozīmē, ka saņēmējs ir izlasījis vai sapratis vēstules saturu.';
$labels['sendalwaysto'] = 'Vienmēr sūtīt uz $email';
$labels['zoomin'] = 'Pietuvināt';
$labels['zoomout'] = 'Attālināt';
$labels['rotate'] = 'Pagriezt';
$labels['increaseimage'] = 'Palielināt attēla izmēru';
$labels['decreaseimage'] = 'Samazināt attēla izmēru';
$labels['rotateimage'] = 'Pagriezt attēlu';
$labels['showtools'] = 'Rādīt attēla rīkus';
$labels['hidetools'] = 'Paslēpt attēla rīkus';
$labels['name'] = 'Uzrādītais vārds';
$labels['firstname'] = 'Vārds';
$labels['surname'] = 'Uzvārds';
$labels['middlename'] = 'Otrais vārds';
$labels['nameprefix'] = 'Prefikss';
$labels['namesuffix'] = 'Sufikss';
$labels['nickname'] = 'Segvārds';
$labels['jobtitle'] = 'Amats';
$labels['department'] = 'Nodaļa';
$labels['gender'] = 'Dzimums';
$labels['maidenname'] = 'Pirmslaulības uzvārds';
$labels['email'] = 'E-pasts';
$labels['phone'] = 'Tālrunis';
$labels['address'] = 'Adrese';
$labels['street'] = 'Iela';
$labels['locality'] = 'Pilsēta';
$labels['zipcode'] = 'Pasta indekss';
$labels['region'] = 'Novads';
$labels['country'] = 'Pilsēta';
$labels['birthday'] = 'Dzimšanas diena';
$labels['anniversary'] = 'Gadadiena';
$labels['website'] = 'Mājaslapa';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Piezīmes';
$labels['male'] = 'vīrietis';
$labels['female'] = 'sieviete';
$labels['manager'] = 'Menedžeris';
$labels['assistant'] = 'Asistents';
$labels['spouse'] = 'Laulātais';
$labels['allfields'] = 'Visi lauki';
$labels['search'] = 'Meklēt';
$labels['searchresult'] = 'Meklēšanas rezultāts';
$labels['advsearch'] = 'Paplašinātā meklēšana';
$labels['advanced'] = 'Paplašinātie iestatījumi';
$labels['other'] = 'Cits';
$labels['printcontact'] = 'Drukāt kontaktu';
$labels['qrcode'] = 'QR kods';
$labels['typehome'] = 'Mājas';
$labels['typework'] = 'Darbs';
$labels['typeother'] = 'Cits';
$labels['typemobile'] = 'Mobilais tālrunis';
$labels['typemain'] = 'Galvenais';
$labels['typehomefax'] = 'Fakss mājās';
$labels['typeworkfax'] = 'Fakss darbā';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Peidžeris';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistents';
$labels['typehomepage'] = 'Mājaslapa';
$labels['typeblog'] = 'Blogs';
$labels['typeprofile'] = 'Profils';
$labels['addfield'] = 'Pievienot lauku...';
$labels['addcontact'] = 'Pievienot kontaktu';
$labels['editcontact'] = 'Rediģēt kontaktu';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Kontakta īpašības';
$labels['contactnameandorg'] = 'Vārds un organizācija';
$labels['personalinfo'] = 'Personīgā informācija';
$labels['personal'] = 'Personīgās';
$labels['contactphoto'] = 'Kontakta attēls';
$labels['edit'] = 'Rediģēt';
$labels['cancel'] = 'Atcelt';
$labels['save'] = 'Saglabāt';
$labels['delete'] = 'Dzēst';
$labels['discard'] = 'Nesaglabāt';
$labels['continue'] = 'Turpināt';
$labels['ok'] = 'LABI';
$labels['rename'] = 'Pārdēvēt';
$labels['addphoto'] = 'Pievienot';
$labels['replacephoto'] = 'Aizvietot';
$labels['uploadphoto'] = 'Augšupielādēt fotogrāfiju';
$labels['choosefile'] = 'Norādīt failu...';
$labels['choosefiles'] = 'Norādīt failus...';
$labels['browse'] = 'Pārlūkot';
$labels['newcontact'] = 'Izveidot jaunu kontaktu';
$labels['deletecontact'] = 'Dzēst atzīmētos kontaktus';
$labels['composeto'] = 'Rakstīt vēstuli';
$labels['contactsfromto'] = 'Ieraksti no $from līdz $to - kopā $count';
$labels['print'] = 'Drukāt';
$labels['export'] = 'Eksportēt';
$labels['exportall'] = 'Eksportēt visu';
$labels['exportsel'] = 'Eksportēt atzīmēto';
$labels['exportvcards'] = 'Eksportēt kontaktus vCard formātā';
$labels['newgroup'] = 'Izveidot jaunu grupu';
$labels['addgroup'] = 'Pievienot grupu';
$labels['grouprename'] = 'Pārdēvēt grupu';
$labels['groupdelete'] = 'Izdzēst grupu';
$labels['groupassign'] = 'Pievienot grupai...';
$labels['groupremove'] = 'Dzēst no grupas...';
$labels['groupremoveselected'] = 'Dzēst atzīmētos kontaktus no grupas';
$labels['uponelevel'] = 'Vienu līmeni uz augšu';
$labels['previouspage'] = 'Parādīt iepriekšējo lapu';
$labels['firstpage'] = 'Parādīt pirmo lapu';
$labels['nextpage'] = 'Parādīt nākamo lapu';
$labels['lastpage'] = 'Parādīt pēdējo lapu';
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupas';
$labels['listgroup'] = 'Rādīt grupas kontaktus';
$labels['personaladrbook'] = 'Personīgās adreses';
$labels['searchsave'] = 'Saglabāt meklēšanas pieprasījumu';
$labels['searchdelete'] = 'Dzēst saglabāto meklēšanas pieprasījumu';
$labels['import'] = 'Importēt';
$labels['importcontacts'] = 'Importēt kontaktus';
$labels['importfromfile'] = 'Importēt no faila';
$labels['importtarget'] = 'Kontaktus pievienot';
$labels['importreplace'] = 'Aizvietot visu adrešu grāmatu';
$labels['importgroups'] = 'Importēt grupu piesaistes';
$labels['importgroupsall'] = 'Visus (ja nepieciešams, izveidojiet grupas)';
$labels['importgroupsexisting'] = 'Tikai esošām grupām';
$labels['importdesc'] = 'Jūs varat augšupielādēt kontaktus no jau esošas adrešu grāmatas.<br/>Tiek atbalstīta adrešu importēšana no <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (ar komatu-dalīta) datu formāta.';
$labels['importmapdesc'] = 'Pirms turpināt CSV (komatiem atdalītu) datu importēšanu, pārliecinieties, ka zemāk esošā lauku kartēšanas informācija ir pareiza.';
$labels['fieldnotmapped'] = 'Lauks nav kartēts (neimportēt)';
$labels['skipheader'] = 'Neimportēt pirmo rindu (galvenes)';
$labels['done'] = 'Pabeigts';
$labels['settingsfor'] = 'Iestatījumi';
$labels['about'] = 'Par';
$labels['preferences'] = 'Iestatījumi';
$labels['userpreferences'] = 'Lietotāja iestatījumi';
$labels['editpreferences'] = 'Rediģēt iestatījumus';
$labels['identities'] = 'Identitātes';
$labels['manageidentities'] = 'Rediģēt identitātes';
$labels['newidentity'] = 'Izveidot jaunu identitāti';
$labels['addidentity'] = 'Pievienot identitāti';
$labels['editidentity'] = 'Rediģēt identitāti';
$labels['identityencryption'] = 'Šifrēšana';
$labels['preferhtml'] = 'Rādīt HTML formatētās vēstules';
$labels['defaultcharset'] = 'Noklusētā rakstzīmju kopa';
$labels['htmlmessage'] = 'HTML formatēta vēstule';
$labels['messagepart'] = 'Daļa';
$labels['digitalsig'] = 'Digitālais paraksts';
$labels['dateformat'] = 'Datuma formāts';
$labels['timeformat'] = 'Laika formāts';
$labels['prettydate'] = 'Rādīt īsos datumus';
$labels['setdefault'] = 'Uzlikt kā noklusēto';
$labels['autodetect'] = 'Automātiska';
$labels['language'] = 'Valoda';
$labels['timezone'] = 'Laika zona';
$labels['pagesize'] = 'Rindas lapā';
$labels['signature'] = 'Paraksts';
$labels['dstactive'] = 'Vasaras/ziemas laiks';
$labels['showinextwin'] = 'Vēstules atvērt jaunā logā';
$labels['composeextwin'] = 'Vēstuli rakstīt jaunā logā';
$labels['htmleditor'] = 'Rakstīt HTML formatētas vēstules';
$labels['htmlonreply'] = 'tikai atbildot uz HTML formatētām vēstulēm';
$labels['htmlonreplyandforward'] = 'tikai pārsūtot vai atbildot uz HTML formatētu vēstuli';
$labels['htmlsignature'] = 'HTML formatēts paraksts';
$labels['showemail'] = 'Pie vārda rādīt arī e-pasta adresi';
$labels['previewpane'] = 'Rādīt priekšskatījuma paneli';
$labels['skin'] = 'Saskarnes izskats';
$labels['logoutclear'] = 'Izejot no e-pasta, iztīrīt papīrgrozu';
$labels['logoutcompact'] = 'Izejot no e-pasta, saspiest iesūtni';
$labels['uisettings'] = 'Lietotāja saskarne';
$labels['serversettings'] = 'Servera iestatījumi';
$labels['mailboxview'] = 'Pastkastes skats';
$labels['mdnrequests'] = 'Vēstules izlasīšanas atskaites sūtīšana';
$labels['askuser'] = 'jautāt man vai sūtīt';
$labels['autosend'] = 'sūtīt automātiski';
$labels['autosendknown'] = 'automātiski sūtīt ja pieprasītājs ir manos kontaktos, par citiem jautāt';
$labels['autosendknownignore'] = 'automātiski sūtīt ja pieprasītājs ir manos kontaktos, citiem ignorēt un nesūtīt';
$labels['autosendtrusted'] = 'sūtīt saņemšanas apstiprinājumu uzticamiem sūtītājiem, pretējā gadījumā jautāt man';
$labels['autosendtrustedignore'] = 'sūtīt saņemšanas apstiprinājumu uzticamajiem sūtītājiem, pretējā gadījumā ignorēt';
$labels['ignorerequest'] = 'ignorēt pieprasījumu';
$labels['readwhendeleted'] = 'Dzēšot vēstules tās atzīmēt kā izlasītas';
$labels['flagfordeletion'] = 'Dzēšot vēstules tās nedzēst, bet marķēt kā dzēšamas';
$labels['skipdeleted'] = 'Nerādīt dzēstās vēstules';
$labels['deletealways'] = 'Izdzēst vēstules, ja tās neizdodas pārvietot uz papīrgrozu';
$labels['deletejunk'] = 'Automātiski dzēst vēstules no mēstuļu mapītes';
$labels['showremoteimages'] = 'Rādīt vēstulēs attēlus, kuri atrodas uz cita servera';
$labels['allowremoteresources'] = 'Atļaut ārējus resursus (attēli, stili)';
$labels['fromknownsenders'] = 'tikai no zināmiem sūtītājiem';
$labels['fromtrustedsenders'] = 'no uzticamajiem sūtītājiem';
$labels['frommycontacts'] = 'no maniem kontaktiem';
$labels['always'] = 'vienmēr';
$labels['alwaysbutplain'] = 'vienmēr, izņemot gadījumus, kad tiek atbildēts "parastā teksta" vēstulēm';
$labels['showinlineimages'] = 'Rādīt pielikuma attēlus zem vēstules';
$labels['autosavedraft'] = 'Automātiski saglabāt vēstules uzmetumu';
$labels['everynminutes'] = 'ik pēc $n minūtes(ēm)';
$labels['refreshinterval'] = 'Pārbaudīt jaunās vēstules';
$labels['never'] = 'nekad';
$labels['immediately'] = 'nekavējoties';
$labels['messagesdisplaying'] = 'Vēstuļu attēlošana';
$labels['messagescomposition'] = 'Vēstuļu rakstīšana';
$labels['mimeparamfolding'] = 'Pielikumu nosaukumi';
$labels['2231folding'] = 'Pilns RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Pilns RFC 2047 (citi)';
$labels['force7bit'] = 'Izmantot MIME kodējumu 8-bitu simboliem';
$labels['savelocalstorage'] = "Saglabāt pārlūka atmiņā (pagaidu)";
$labels['advancedoptions'] = 'Paplašinātie iestatījumi';
$labels['toggleadvancedoptions'] = 'Parādīt paplašinātos iestatījumus';
$labels['focusonnewmessage'] = 'Uzstādīt pārlūka fokusu uz jaunu vēstuli';
$labels['checkallfolders'] = 'Meklēt visās mapēs jaunās vēstules';
$labels['displaynext'] = 'Pēc vēstules dzēšanas/pārvietošanas rādīt nākamo vēstuli';
$labels['defaultfont'] = 'Noklusētais fonts vēstulēm HTML formātā';
$labels['mainoptions'] = 'Galvenie iestatījumi';
$labels['browseroptions'] = 'Pārlūka iestatījumi';
$labels['section'] = 'Sadaļa';
$labels['maintenance'] = 'Uzturēšana';
$labels['newmessage'] = 'Vēstuļu pienākšana';
$labels['signatureoptions'] = 'Paraksta iestatījumi';
$labels['whenreplying'] = 'Atbildot';
$labels['replyempty'] = 'neiekļaut vēstules sākotnējo tekstu';
$labels['replytopposting'] = 'sākt jaunu vēstuli virs oriģināla';
$labels['replytoppostingnoindent'] = 'sākt jaunu ziņu virs citēšanas (bez identācijas)';
$labels['replybottomposting'] = 'sākt jaunu vēstuli zem oriģināla';
$labels['replyremovesignature'] = 'Atbildot izņemt oriģinālo parakstu no vēstules';
$labels['autoaddsignature'] = 'Automātiski pievienot parakstu';
$labels['newmessageonly'] = 'tikai jaunām vēstulēm';
$labels['replyandforwardonly'] = 'tikai atbildēm un pārsūtījumiem';
$labels['insertsignature'] = 'Ievietot parakstu';
$labels['sigbelow'] = 'Parakstu novietot zem sūtītās vēstules oriģinālā';
$labels['sigseparator'] = 'Parakstam obligāti izmantot standarta dalītāju';
$labels['automarkread'] = 'Atzīmēt vēstules kā lasītas';
$labels['afternseconds'] = 'pēc $n sekundēm';
$labels['reqmdn'] = 'Vienmēr pieprasīt saņemšanas apstiprinājumu';
$labels['reqdsn'] = 'Vienmēr pieprasīt atskati par piegādi';
$labels['replysamefolder'] = 'Glabāt atbildes tajā pašā mapē, kurā ir vēstule, uz kuru tika atbildēts';
$labels['defaultabook'] = 'Noklusētā adrešu grāmata';
$labels['autocompletesingle'] = 'Automātiski aizpildot, nerādīt alternatīvās e-pasta adreses';
$labels['listnamedisplay'] = 'Rādīt kontaktus kā';
$labels['contactformmode'] = 'Kontaktu formas režīms';
$labels['privatemode'] = 'Privāts (Mājas)';
$labels['businessmode'] = 'Biznesa (Darba)';
$labels['collectedaddresses'] = 'Uzkrātās adreses';
$labels['collectedrecipients'] = 'Uzkrātie saņēmēji';
$labels['collectedrecipientsopt'] = 'Uzkrāt izejošo e-pastu adresātus iekš';
$labels['collectedsendersopt'] = 'Uzkrāt uzticamos sūtītājus iekš';
$labels['trustedsenders'] = 'Uzticamie sūtītāji';
$labels['spellcheckbeforesend'] = 'Pirms vēstules nosūtīšanas pārbaudīt pareizrakstību';
$labels['spellcheckoptions'] = 'Pareizrakstības iestatījumi';
$labels['spellcheckignoresyms'] = 'Ignorēt vārdus, kuri satur simbolus';
$labels['spellcheckignorenums'] = 'Ignorēt vārdus, kuri satur skaitļus';
$labels['spellcheckignorecaps'] = 'Ignorēt vārdus, kuri rakstīti ar lielajiem burtiem';
$labels['addtodict'] = 'Pievienot vārdnīcai';
$labels['mailtoprotohandler'] = 'Atverot mailto: saites, lietot šo e-pasta programmu';
$labels['standardwindows'] = 'Izlēcošie logi kā parasti logi';
$labels['forwardmode'] = 'Vēstuļu pārsūtīšana';
$labels['inline'] = 'iekļaujot';
$labels['asattachment'] = 'kā pielikumu';
$labels['replyallmode'] = '[Atbildēt visiem] pogas noklusētā darbība';
$labels['replyalldefault'] = 'atbildēt visiem';
$labels['replyalllist'] = 'atbildēt tikai sarakstei (ja tāda tiek atrasta)';
$labels['allmessages'] = 'visām vēstulēm';
$labels['folder'] = 'Mapi';
$labels['folders'] = 'Mapes';
$labels['foldername'] = 'Mapes nosaukums';
$labels['subscribed'] = 'Abonēta';
$labels['messagecount'] = 'Vēstules';
$labels['create'] = 'Izveidot';
$labels['createfolder'] = 'Izveidot jaunu mapi';
$labels['managefolders'] = 'Rediģēt mapes';
$labels['specialfolders'] = 'Īpašās mapes';
$labels['properties'] = 'Īpašības';
$labels['folderproperties'] = 'Mapes īpašības';
$labels['parentfolder'] = 'Virsmape';
$labels['location'] = 'Atrašanās vieta';
$labels['info'] = 'Informācija';
$labels['getfoldersize'] = 'Uzklikšķiniet, lai uzzinātu mapes izmēru';
$labels['changesubscription'] = 'Uzklikšķiniet, lai mainītu abonēšanas iestatījumus';
$labels['foldertype'] = 'Mapes tips';
$labels['personalfolder'] = 'Privāta mape';
$labels['otherfolder'] = 'Cita lietotāja mape';
$labels['sharedfolder'] = 'Publiska mape';
$labels['findfolders'] = 'Meklēt mapes';
$labels['findcontacts'] = 'Atrast kontaktus';
$labels['findmail'] = 'Atrast epastus';
$labels['namespace.personal'] = 'Personīgās';
$labels['namespace.other'] = 'Citi lietotāji';
$labels['namespace.shared'] = 'Koplietota';
$labels['dualuselabel'] = 'Drīkst saturēt tikai';
$labels['dualusemail'] = 'vēstules';
$labels['dualusefolder'] = 'mapes';
$labels['generate'] = 'Ģenerēt';
$labels['encryptioncreatekey'] = 'Izveidot jaunu atslēgu pāri';
$labels['openmailvelopesettings'] = 'Parādīt "Mailvelope" iestatījumus';
$labels['encryption'] = 'Šifrēšana';
$labels['mailvelopeoptions'] = 'Mailvelope opcijas';
$labels['mailvelopemainkeyring'] = 'Izmantojiet Mailvelope galveno "keyring"';
$labels['mailvelopenotfound'] = 'Mailvelope paplašinājums Jūsu interneta pārlūkā nav iespējots/uzinstalēts.';
$labels['sortby'] = 'Kārtot pēc';
$labels['sortasc'] = 'Kārtot augošā secībā';
$labels['sortdesc'] = 'Kārtot dilstošā secībā';
$labels['undo'] = 'Atsaukt';
$labels['installedplugins'] = 'Uzstādītie spraudņi';
$labels['plugin'] = 'Spraudnis';
$labels['version'] = 'Versija';
$labels['source'] = 'Oriģināls';
$labels['destination'] = 'Galamērķis';
$labels['license'] = 'Licence';
$labels['support'] = 'Atbalsts';
$labels['savedsearches'] = 'Saglabātie mekkējumi';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'kB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unikods';
$labels['english'] = 'Angļu';
$labels['westerneuropean'] = 'Rietumeiropas';
$labels['easterneuropean'] = 'Austrumeiropas';
$labels['southeasterneuropean'] = 'Dienvidaustrumu Eiropas';
$labels['baltic'] = 'Baltijas';
$labels['cyrillic'] = 'Kirilicas';
$labels['arabic'] = 'Arābu';
$labels['greek'] = 'Grieķu';
$labels['hebrew'] = 'Ebreju';
$labels['turkish'] = 'Turku';
$labels['nordic'] = 'Ziemeļvalstu';
$labels['thai'] = 'Taizemes';
$labels['celtic'] = 'Ķeltu';
$labels['vietnamese'] = 'Vjetnamiešu';
$labels['japanese'] = 'Japāņu';
$labels['korean'] = 'Korejiešu';
$labels['chinese'] = 'Ķīniešu';
$labels['arialabeltopnav'] = 'Loga kontorle';
$labels['arialabeltasknav'] = 'Programmas uzdevumi';
$labels['arialabeltoolbar'] = 'Programmas rīkjosla';
$labels['arialabellistnav'] = 'Saraksta navigācija';
$labels['arialabelactivetask'] = 'Aktīvā darbība';
$labels['arialabelmessagessearchfilter'] = 'Epastu saraksta filtrs';
$labels['arialabelmailsearchform'] = 'Epastu meklēšanas forma';
$labels['arialabelcontactsearchform'] = 'Kontaktu meklēšanas forma';
$labels['arialabelmailquicksearchbox'] = 'Epastu meklēšanas ievadlauks';
$labels['arialabelquicksearchbox'] = 'Meklēšanas ievadlauks';
$labels['arialabelfoldersearchfilter'] = 'Mapju saraksta filtrs';
$labels['arialabelfoldersearchform'] = 'Mapju meklēšanas forma';
$labels['arialabelfolderlist'] = 'Epastu mapju atzīmēšana';
$labels['arialabelmessagelist'] = 'Epastu saraksts';
$labels['arialabelmailpreviewframe'] = 'Ziņojuma priekšskats';
$labels['arialabelmailboxmenu'] = 'Izvēlne darbībām ar mapēm';
$labels['arialabellistselectmenu'] = 'Izvēlne sarakstu atzīmēšanai';
$labels['arialabelthreadselectmenu'] = 'Vēstuļu vijumu saraksta izvēlne';
$labels['arialabelmessagelistoptions'] = 'Vēstuļu attēlošanas un šķirošanas iestatījumi';
$labels['arialabelmailimportdialog'] = 'Vēstuļu importēšanas dialogs';
$labels['arialabelmessagenav'] = 'Vēstuļu navigācija';
$labels['arialabelmessagebody'] = 'Vēstules teksts';
$labels['arialabelmessageactions'] = 'Darbības ar vēstuli';
$labels['arialabelcontactquicksearch'] = 'Kontaktu meklēšanas forma';
$labels['arialabelcontactsearchbox'] = 'Kontaktu meklēšanas ievadlauks';
$labels['arialabelmessageheaders'] = 'Ziņojuma galvenes';
$labels['arialabelforwardingoptions'] = 'Pārsūtīšanas iestatījumi';
$labels['arialabelreplyalloptions'] = 'Atbildēt-visiem iestatījumi';
$labels['arialabelmoremessageactions'] = 'Citas darbības ar vēstulēm';
$labels['arialabelmorecontactactions'] = 'Citas darbības ar kontaktiem';
$labels['arialabelmarkmessagesas'] = 'Atzīmēt norādītās vēstules kā ...';
$labels['arialabelcomposeoptions'] = 'Rakstīšanas iestatījumi';
$labels['arialabelresponsesmenu'] = 'Gatavo atbilžu izvēlne';
$labels['arialabelattachmentuploadform'] = 'Pielikuma augšupielādes forma';
$labels['arialabelattachmentmenu'] = 'Pielikuma parametri';
$labels['arialabelmailtomenu'] = 'E-pasta adreses opcijas';
$labels['arialabelattachmentpreview'] = 'Pielikuma priekšskats';
$labels['ariasummarycomposecontacts'] = 'Kontaktu un grupu saraksts ko norādīt kā saņēmējus';
$labels['arialabelcontactexportoptions'] = 'Kontaktu eksportēšanas iestatījumi';
$labels['arialabelabookgroupoptions'] = 'Adrešu grāmatas/grupas iestatījumi';
$labels['arialabelpreferencesform'] = 'Iestatījumu forma';
$labels['arialabelidentityeditfrom'] = 'Identitātes rediģēšanas forma';
$labels['arialabelresponseeditfrom'] = 'Atbildes rediģēšanas forma';
$labels['arialabelsearchterms'] = 'Meklēšanas termini';
$labels['arialabeldropactionmenu'] = '"Velc un Noliec" darbības izvēlne';
$labels['arialabelheadersmenu'] = 'Adresāta (galvenē) pievienošanas izvēlne';
$labels['arialabelimagetools'] = 'Attēla rīki';
$labels['helplistnavigation'] = 'Parādīt klaviatūras īsos taustiņus';
$labels['helplistkeyboardnavigation'] = "Bultiņas augšup/lejup: Mainīt rindas izsgaismošanu/atzīmēšanu.
Garais taustiņš: Atzīmēt izgaismoto rindu.
Shift + augšup/lejup: Atzīmēt papildus rindas augšup/lejup.
Ctrl + Garais taustiņš: Pievienot vai noņemt izgaismoto rindu no atzīmēto saraksta.";
$labels['helplistkeyboardnavmessages'] = "Bultiņas pa labi/kreisi: atvērt vai aizvērt vēstules vijumu (tikai vijumu režīmā)
Enter: Atvērt atzīmēto/izgaismoto vēstuli.
Dzēst: Pārvietot atzīmēto vēstuli uz papīrgrozu.";
$labels['helplistkeyboardnavcontacts'] = "Enter: atvērt iezīmētos/izgaismotos kontaktus.";
localization/lv_LV/messages.inc000064400000044500151727150560012574 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Radās kļūda!';
$messages['loginfailed']  = 'Pieslēgties neizdevās';
$messages['cookiesdisabled'] = 'Jūsu pārlūkprogramma neatbalsta sīkdatnes (cookies)';
$messages['sessionerror'] = 'Jūsu sessija ir beigusies.';
$messages['cookiesmismatch'] = 'Konstatēta sīkfailu neatbilstība. Lūdzu, notīriet Jūsu interneta pārlūkprogrammas sīkfailus.';
$messages['storageerror'] = 'Neizdevās pieslēgties IMAP serverim';
$messages['servererror'] = 'Servera kļūda!';
$messages['servererrormsg'] = 'Servera kļūda: $msg';
$messages['accountlocked'] = 'Pārāk daudz neveiksmīgu autorizēšanās mēģinājumu. Mēģiniet atkārtoti vēlāk.';
$messages['connerror'] = 'Savienojuma kļūda - nav iespējams pieslēgties serverim!';
$messages['dberror'] = 'Datubāzes kļūda!';
$messages['dbconnerror'] = 'Neizdevās pieslēgties datubāzei!';
$messages['windowopenerror'] = 'Izlēcošais logs tika bloķēts!';
$messages['requesttimedout'] = 'Pieprasījumam iestājās noilgums';
$messages['errorreadonly'] = 'Neizdevās veikt darbību: mape ir tikai lasāma (read only)';
$messages['errornoperm'] = 'Neizdevās veikt darbību: piekļuve liegta';
$messages['erroroverquota'] = 'Operāciju veikt nav iespējams. Uz diska nav brīvas veitas.';
$messages['erroroverquotadelete'] = 'Uz diska nav brīvas vietas. Lai dzēstu vēstuli, lietojiet SHIFT+DEL.';
$messages['invalidrequest'] = 'Nederīgs pieprasījums! Dati netika saglabāti ...';
$messages['invalidhost'] = 'Nederīgs servera nosaukums';
$messages['nomessagesfound'] = 'Šajā pastkastē nav vēstuļu';
$messages['loggedout'] = 'Jūs veiksmīgi pārtraucāt sesiju. Uz redzēšanos!';
$messages['mailboxempty'] = 'Pastkaste ir tukša';
$messages['nomessages'] = 'Nav nevienas vēstules';
$messages['refreshing'] = 'Atjauno...';
$messages['loading'] = 'Notiek ielāde...';
$messages['uploading'] = 'Augšupielāde failu...';
$messages['attaching'] = 'Pievieno failu...';
$messages['uploadingmany'] = 'Augšupielādē failus...';
$messages['loadingdata'] = 'Ielādē datus...';
$messages['checkingmail'] = 'Notiek pasta pārbaude ...';
$messages['sendingmessage'] = 'Tiek sūtīta vēstule ...';
$messages['messagesent'] = 'Vēstule nosūtīta veiksmīgi';
$messages['savingmessage'] = 'Vēstule tiek saglabāta ...';
$messages['messagesaved'] = 'Vēstule saglabāta Uzmetumos';
$messages['successfullysaved'] = 'Veiksmīgi saglabāts.';
$messages['savingresponse'] = 'Tiek saglabāts atbildes teksts ...';
$messages['deleteresponseconfirm'] = 'Vai Jūs tiešām gribat dzēst šo atbildes tekstu?';
$messages['nocontactselected'] = 'Jūs vēl neesat norādījuši nevienu kontaktu.';
$messages['addedsuccessfully'] = 'Kontakts veiksmīgi pievienots adrešu grāmatai';
$messages['contactexists'] = 'Kontakts ar šādu e-pasta adresi jau eksistē';
$messages['contactnameexists'] = 'Kontakts ar šādu vārdu jau eksistē.';
$messages['blockedimages'] = 'Drošības nolūkos attēli, kuri tiek ielādēti no cita servera, šajā vēstulē ir bloķēti';
$messages['blockedresources'] = 'Lai aizsargātu Jūsu privātumu, attālinātie reursi tika nobloķēti.';
$messages['suspiciousemail'] = 'Šajā e-pasta ziņojumā ir aizdomīgas e-pasta adreses, kuras, iespējams, ir krāpnieciskas.';
$messages['bccemail'] = 'Pārsūtītajā (-os) ziņojumā (-os) ir konfidenciāli saņēmēji (BCC).';
$messages['bouncehint'] = 'Ziņojums tiks nosūtīts bez jebkādām izmaiņām, t.i., izmantojot sākotnējo pamattekstu, galvenes un adresātus.';
$messages['encryptedmessage'] = 'Atvainojiet - šī ir šifrēta vēstule un diemžēl nevar tikt parādīta ...';
$messages['externalmessagedecryption'] = 'Šis e-pasts ir šifrēts un var tikt atšifrēts izmantojot interneta pārlūka paplašinājumu.';
$messages['nopubkeyfor'] = 'E-pastam $email netika atrasta neviena publiskā atslēga';
$messages['nopubkeyforsender'] = 'Jūsu sūtīšanas identitātei nav iespējams atrast publisko atslēgu. Vai e-pastu šifrēt tikai saņēmējiem?';
$messages['encryptnoattachments'] = 'Jau augšupielādētu pielikumu nav iespējams nošifrēt. Lūdzu pievienojiet to atkārtoti, izmantojot šifrēšanas redakrotu.';
$messages['searchpubkeyservers'] = 'Vai Jūs gribat lai trūkstošās atslēgas tiek sameklēt publiskajos atslēgu serveros?';
$messages['encryptpubkeysfound'] = 'Tika atrastas sekojošās publiskās atslēgas:';
$messages['keyservererror'] = 'Neizdevās iegūt atslēgu no atslēgu servera.';
$messages['keyimportsuccess'] = 'Publiskā atslēga $key veiksmīgi ieimportēta Jūsu atslēgu sarakstā.';
$messages['nocontactsfound'] = 'Kontakti netika atrasti';
$messages['contactnotfound'] = 'Pieprasītais kontakts nav atrasts';
$messages['contactsearchonly'] = 'Lai atrastu kontaktus no atzīmētās adrešu grāmatas, Jums ir jāizmanto meklēšanas forma.';
$messages['sendingfailed'] = 'Vēstule netika nosūtīta';
$messages['senttooquickly'] = 'Lūdzu uzgaidiet $sec sekundi(-es) pirms sūtiet šo vēstuli';
$messages['errorsavingsent'] = 'Saglabājot nosūtīto vēstuli notika kļūda - vēstule netika saglabāta';
$messages['errorsaving'] = 'Saglabājot vēstuli notika kļūda - vēstule netika saglabāta';
$messages['errormoving'] = 'Vēstule(s) netika pārvietota(s)';
$messages['errorcopying'] = 'Vēstules pārkopēt neizdevās';
$messages['errordeleting'] = 'Vēstules izdzēst neizdevās';
$messages['errormarking'] = 'Iezīmēt vēstules nebija iespējams';
$messages['alerttitle'] = 'Uzmanību';
$messages['confirmationtitle'] = 'Vai Jūs esat pārliecināts...';
$messages['deletecontactconfirm']  = 'Vai tiešām vēlaties dzēst iezīmētās kontaktpersonas?';
$messages['deletegroupconfirm']  = 'Vai tiešām vēlaties dzēst atzīmēto grupu?';
$messages['deletemessagesconfirm'] = 'Vai tiešām vēlaties dzēst iezīmētās vēstules?';
$messages['deletefolderconfirm']  = 'Vai tiešām vēlaties dzēst šo mapi?';
$messages['movefolderconfirm']  = 'Vai Jūs tiešām gribat pārvietot šo mapi?';
$messages['purgefolderconfirm']  = 'Vai tiešām vēlaties dzēst visas vēstules, kuras atrodas šajā mapē?';
$messages['contactdeleting'] = 'Dzēš kontaktus...';
$messages['groupdeleting'] = 'Dzēš grupu...';
$messages['folderdeleting'] = 'Dzēš mapi...';
$messages['foldermoving'] = 'Pārvieto mapi...';
$messages['foldersubscribing'] = 'Pieslēdz mapi...';
$messages['folderunsubscribing'] = 'Atslēdz mapi...';
$messages['formincomplete'] = 'Forma nav pilnībā aizpildīta';
$messages['noemailwarning'] = 'Lūdzu ievadiet korektu e-pasta adresi';
$messages['nonamewarning']  = 'Lūdzu ievadiet vārdu';
$messages['nopagesizewarning'] = 'Lūdzu ievadiet lapas izmēru';
$messages['nosenderwarning'] = 'Lūdzu ievadiet sūtītāja e-pasta adresi';
$messages['recipientsadded'] = 'Adresāti pievienoti veiksmīgi.';
$messages['norecipientwarning'] = 'Lūdzu ievadiet vismaz vienu saņēmēju';
$messages['disclosedrecipwarning'] = 'Katrs adresāts redzēs pārējos adresātus. Lai to novērstu un nodrošinātu adresātu privātumu, lūdzu izmantojiet Bcc lauku.';
$messages['disclosedreciptitle'] = 'Pārāk daudz publisku adresātu';
$messages['nosubjectwarning']  = 'Lauks "temats" ir tukšs. Vai vēlaties to aizpildīt tagad?';
$messages['nosubjecttitle']  = 'Bez tēmas';
$messages['nobodywarning'] = 'Sūtīt vēstuli bez teksta?';
$messages['notsentwarning'] = 'Vēstule netika nosūtīta un tā satur nesaglabātas izmaiņas. Vai gribat atcelt šīs izmaiņas?';
$messages['restoresavedcomposedata'] = 'Ir atrasta pirms kāda laika uzrakstīta, bet nenosūtīta vēstule.\n\nTēma: $subject\nSaglabāta:$date\n\nVai atjaunot šo vēstuli?';
$messages['nosearchname'] = 'Lūdzu ievadiet kontaktpersonas vārdu vai e-pasta adresi';
$messages['notuploadedwarning'] = 'Visi pielikumi vēl nav augšupielādēti - lūdzu uzgaidiet vai atceļiet augšupielādi';
$messages['searchsuccessful'] = 'Atrastas $nr vēstules';
$messages['contactsearchsuccessful'] = 'Atrasti $nr kontakti';
$messages['searchnomatch'] = 'Meklējot nekas netika atrasts';
$messages['searching'] = 'Meklē...';
$messages['checking'] = 'Pārbauda...';
$messages['stillsearching'] = 'Joprojām meklē ...';
$messages['nospellerrors'] = 'Pareizrakstības kļūdas netika atrastas';
$messages['folderdeleted'] = 'Mape veiksmīgi izdzēsta';
$messages['foldersubscribed'] = 'Mape veiksmīgi pieslēgta.';
$messages['folderunsubscribed'] = 'Mape veiksmīgi atslēgta.';
$messages['folderpurged'] = 'Mape veiksmīgi iztukšota.';
$messages['folderexpunged'] = 'Mape veiksmīgi saspiesta.';
$messages['deletedsuccessfully'] = 'Veiksmīgi izdzēsts';
$messages['converting'] = 'Tiek noņemts vēstules formatējums...';
$messages['messageopenerror'] = 'Nevarēja ielādēt vēstuli no servera';
$messages['filelinkerror'] = 'Neizdevās faila pievienošana.';
$messages['fileuploaderror'] = 'Faila augšupielāde neveiksmīga';
$messages['csvfilemismatch'] = 'Vairāku CSV failu importēšana ar dažādiem datu laukiem nav iespējama.';
$messages['filesizeerror'] = 'Augšupielādētais fails pārsniedz pieļaujamo $size izmēru.';
$messages['filecounterror'] = 'Vienā reizē Jūs varat augšupielādēt maksimums $count failus.';
$messages['msgsizeerror'] = 'Neizdevās pievienot failu. Vēstules izmērs nedrīkst pārsniegt maksimālo pieļaujamo - $size .';
$messages['msgsizeerrorfwd'] = 'Pārsniegts maksimālais ziņojuma izmērs ($size). $num ziņojumi netika pievienoti..';
$messages['copysuccess'] = '$nr kontakti tika veiksmīgi pārkopēti.';
$messages['movesuccess'] = '$nr kontakti tika veiksmīgi pārvietoti.';
$messages['copyerror'] = 'Kontaktus pārkopēt neizdevās.';
$messages['moveerror'] = 'Kontaktus pārvietot neizdevās.';
$messages['sourceisreadonly'] = 'Adreses avots ir lasīšanas režīmā tikai';
$messages['errorsavingcontact'] = 'Kontakta adresi nevarēja saglabāt.';
$messages['movingmessage'] = 'Pārvieto vēstules...';
$messages['copyingmessage'] = 'Kopē vēstules...';
$messages['copyingcontact'] = 'Kopē kontaktus...';
$messages['movingcontact'] = 'Pārvieto kontaktu(s)...';
$messages['deletingmessage'] = 'Dzēš vēstules...';
$messages['markingmessage'] = 'Atzīmē vēstules...';
$messages['addingmember'] = 'Kontaktus pievieno grupai...';
$messages['removingmember'] = 'Kontaktus atvieno no grupas...';
$messages['receiptsent'] = 'Saņemšanas apstiprinājums nosūtīts veiksmīgi.';
$messages['errorsendingreceipt'] = 'Neizdevās nosūtīt saņemšanas apstiprinājumu.';
$messages['deleteidentityconfirm'] = 'Vai Jūs tiešām vēlaties dzēst šo identitāti?';
$messages['nodeletelastidentity'] = 'Šo identitāti nav iespējams izdzēst, jo tā ir pati pēdējā.';
$messages['forbiddencharacter'] = 'Mapes nosaukums satur aizliegtus simbolus.';
$messages['selectimportfile'] = 'Lūdzu norādiet failu, kuru vēlaties augšupielādēt.';
$messages['addresswriterror'] = 'Izvēlētās adrešu grāmatas datus nav iespējams rediģēt.';
$messages['contactaddedtogroup'] = 'Kontakti tika veiksmīgi pievienoti šai grupai.';
$messages['contactremovedfromgroup'] = 'Kontakti tika veiksmīgi atvienoti no šīs grupas.';
$messages['nogroupassignmentschanged'] = 'Grupā nekas netika mainīts.';
$messages['importwait'] = 'Importēju, lūdzu uzgaidiet...';
$messages['importformaterror'] = 'Imports neizdevās! Augšupielādētais fails nav derīgs importam.';
$messages['importconfirm'] = '<b>Veiksmīgi ieimportēti $inserted kontakti</b>';
$messages['importconfirmskipped'] = '<b>Izlaida $skipped jau eksistējošus ierakstus</b>';
$messages['importmessagesuccess'] = 'Veiksmīgi ieimportētas $nr vēstules';
$messages['importmessageerror'] = 'Importēšanas kļūda! Augšupielādētā datne satur nekorektus datus';
$messages['opnotpermitted'] = 'Darbība nav atļauta!';
$messages['nofromaddress'] = 'Izvēlētajai identitātei nav norādīta e-pasta adrese.';
$messages['editorwarning'] = 'Pārslēdzot redaktora veidus var tikt pazaudēts teksta formatējums. Vai turpināt?';
$messages['httpreceivedencrypterror'] = 'Notika kritiska kļūme. Lūdzu nekavējoties sazinieties ar Jūsu administratoru. <b>Jūsu vēstuli nosūtīt nav iespējams.</b>';
$messages['smtpconnerror'] = 'SMTP kļūme ($code): Neizdevās pieslēgties serverim';
$messages['smtpautherror'] = 'SMTP kļūda ($code): Neizdevās autorizēties.';
$messages['smtpfromerror'] = 'SMTP kļūda ($code): Neizdevās iestatīt sūtītāju "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP kļūda ($code): Neizdevās pievienot saņēmēju "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP kļūda: Nav iespējams aptrādāt saņēmēju sarakstu.';
$messages['smtputf8error'] = 'SMTP kļūda: serveris neatbalsta unikodu epasta adresē.';
$messages['smtpsizeerror'] = 'SMTP kļūda: Vēstules izmērs pārsniedz serverī noteikto limitu ($limit)';
$messages['smtperror'] = 'SMTP kļūda: $msg';
$messages['emailformaterror'] = 'Nepareiza e-pasta adrese: $email';
$messages['toomanyrecipients'] = 'Pārāk daudz saņēmēju. Samaziniet skaitu līdz $max.';
$messages['maxgroupmembersreached'] = 'Grupas dalībnieku skaits pārsniedz limitu $max.';
$messages['internalerror'] = 'Atgadījās servera iekšējā kļūda. Lūdzu mēģiniet vēlreiz.';
$messages['contactdelerror'] = 'Kontaktus izdzēst neizdevās.';
$messages['contactdeleted'] = 'Kontakti izdzēsti veiksmīgi.';
$messages['contactrestoreerror'] = 'Izdzēstos kontaktus atjaunot neizdevās.';
$messages['contactrestored'] = 'Kontakti atjaunoti veiksmīgi.';
$messages['groupdeleted'] = 'Grupa izdzēsta veiksmīgi.';
$messages['grouprenamed'] = 'Grupa pārdēvēta veiksmīgi.';
$messages['groupcreated'] = 'Grupa izveidota veiksmīgi.';
$messages['savedsearchdeleted'] = 'Saglabātais meklēšanas pieprasījums izdzēsts veiksmīgi.';
$messages['savedsearchdeleteerror'] = 'Saglabāto meklēšanas pieprasījumu izdzēst neizdevās.';
$messages['savedsearchcreated'] = 'Saglabātais meklēšanas pieprasījums saglabāts veiksmīgi.';
$messages['savedsearchcreateerror'] = 'Meklēšanas pieprasījumu izveidot neizdevās.';
$messages['messagedeleted'] = 'Vēstule(s) veiksmīgi izdzēsta(s).';
$messages['messagemoved'] = 'Vēstule(s) veiksmīgi pārvietota(s).';
$messages['messagemovedtotrash'] = 'Vēstule(s) veiksmīgi iemesta(s) papīrgrozā.';
$messages['messagecopied'] = 'Vēstule(s) veiksmīgi pārkopēta(s).';
$messages['messagemarked'] = 'Vēstule(s) veiksmīgi atzīmēta(s).';
$messages['autocompletechars'] = 'Lai automātiski meklētu, ievadiet vismaz $min burtus.';
$messages['autocompletemore'] = 'Atrasti vairāki ieraksti. Papildiniet meklēšanas kritēriju ar vairāk burtiem.';
$messages['namecannotbeempty'] = 'Lūdzu ievadiet vārdu.';
$messages['nametoolong'] = 'Vārds ir pārāk garš.';
$messages['namedotforbidden'] = 'Mapes nosaukums nedrīkst sākties ar punktu.';
$messages['folderupdated'] = 'Mape vieksmīgi atjaunota.';
$messages['foldercreated'] = 'Mape veiksmīgi izveidota.';
$messages['invalidimageformat'] = 'Nederīgs attēla formāts.';
$messages['mispellingsfound'] = 'Vēstulē atrastas pareizrakstības kļūdas.';
$messages['parentnotwritable'] = 'Neizdevās izveidot/pārvietot mapi atzīmētajā virsmapē. Nav piekļuves tiesību.';
$messages['messagetoobig'] = 'Vēstule daļa ir pārāk liela, lai to varētu apstrādāt.';
$messages['attachmentvalidationerror'] = 'Šis e-pasta pielikums ir aizdomīgs, jo tā tips neatbilst tam, kurš norādīts pašā epasta ziņojumā. Ja Jūs neuzticaties sūtītājam, vai tas ir nepazīstams, Jums labāk nevērt vaļā šo e-pasta pielikumu, jo tas var saturēt ļaundabīgu kodu. <br/><br/><em>Norādīts: $expected; Atrasts: $detected3</em>';
$messages['noscriptwarning'] = 'Uzmanību: lai lasītu e-pastus, Jūsu pārlūkprogrammā jābūt ieslēgtiem JavaScript.';
$messages['messageissent'] = 'E-pasts jau ir nosūtīts, bet nav saglabāts. Vai Jūs vēlaties to tagad saglabāt?';
$messages['errnotfound'] = 'Fails netika atrasts';
$messages['errnotfoundexplain'] = 'Pieprasītais avots netika atrasts!';
$messages['errfailedrequest'] = 'Pieprasījums neizdevās';
$messages['errauthorizationfailed'] = 'Neveiksmīga autorizācija';
$messages['errunauthorizedexplain'] = 'Nevar pārbaudīt vai Jūs esat autorizēts izmantot šo servisu!';
$messages['errrequestcheckfailed'] = 'Pieprasījuma pārbaude neizdevās.';
$messages['errcsrfprotectionexplain'] = "Jūsu drošībai pieeja šim resursam ir aizsargāta pret vairāku vietņu pieprasījuma viltošanu (CSRF ).\nJa Jūs redzat šo ziņojumu, iespējams Jūs iepriekš nebijāt izgājuši ārā no šī e-pasta pārlūka.\n\nLai turpinātu, ir nepieciešams veikt lietotāja darbības.";
$messages['errcontactserveradmin'] = 'Lūdzu kontaktējieties ar servera administratoru.';
$messages['clicktoresumesession'] = 'Lai atjaunotu Jūsu iepriekšējo sessiju, spiest šeit.';
$messages['errcomposesession'] = 'Rakstot vēstuli radās autorizācijas sessijas kļūda';
$messages['errcomposesessionexplain'] = 'Pieprasītā sessija, vēstules rakstīšanai, netika atrasta.';
$messages['clicktocompose'] = 'Lai rakstītu jaunu vēstuli, spiest šeit';
$messages['nosupporterror'] = 'Šī iespēja Jūsu interneta pārlūkā nav atbalstīta.';
$messages['siginserted'] = 'Paraksts ievietots veiksmīgi.';
$messages['responseinserted'] = 'Atbilde ievietota veiksmīgi.';
$messages['noresponsesavailable'] = 'Nav pieejama neviena atbilde.';
$messages['listempty'] = 'Saraksts ir tukšs.';
$messages['listusebutton'] = 'Lai pievienotu jaunu ierakstu, izmantojiet pogu "Izveidot".';
$messages['keypaircreatesuccess'] = 'Jauns atslēgu pāris identitātei $identity tika veiksmīgi izveidots.';
$messages['emptyattachment'] = 'Izskatās, ka šis pielikums ir tukšs.<br>Lūdzu, sazinaties ar personu, kura to nosūtīja.';
$messages['oauthloginfailed'] = 'OAuth autorizācija neizdevās. Lūdzu mēģiniet vēlreiz.';
localization/mk_MK/timezones.inc000064400000055361151727150560012765 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'Координирано универзално време';
$labels['tz:africa'] = 'Африка';
$labels['tz:africa:abidjan'] = 'Абиџан';
$labels['tz:africa:accra'] = 'Акра';
$labels['tz:africa:addis_ababa'] = 'Адис Абеба';
$labels['tz:africa:algiers'] = 'Алжир';
$labels['tz:africa:asmara'] = 'Асмара';
$labels['tz:africa:bamako'] = 'Бамако';
$labels['tz:africa:bangui'] = 'Банги';
$labels['tz:africa:banjul'] = 'Банџул';
$labels['tz:africa:bissau'] = 'Бисао';
$labels['tz:africa:blantyre'] = 'Блантир';
$labels['tz:africa:brazzaville'] = 'Бразавил';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Каиро';
$labels['tz:africa:casablanca'] = 'Казабланка';
$labels['tz:africa:ceuta'] = 'Сеута';
$labels['tz:africa:conakry'] = 'Конакри';
$labels['tz:africa:dakar'] = 'Дакар';
$labels['tz:africa:dar_es_salaam'] = 'Дар ес Салам';
$labels['tz:africa:djibouti'] = 'Џибути';
$labels['tz:africa:douala'] = 'Дуала';
$labels['tz:africa:el_aaiun'] = 'Ел Ајун';
$labels['tz:africa:freetown'] = 'Фритаун';
$labels['tz:africa:gaborone'] = 'Габороне';
$labels['tz:africa:harare'] = 'Хараре';
$labels['tz:africa:johannesburg'] = 'Јоханесбург';
$labels['tz:africa:juba'] = 'Јуба';
$labels['tz:africa:kampala'] = 'Кампала';
$labels['tz:africa:khartoum'] = 'Картум';
$labels['tz:africa:kigali'] = 'Кигали';
$labels['tz:africa:kinshasa'] = 'Киншаса';
$labels['tz:africa:lagos'] = 'Лагос';
$labels['tz:africa:libreville'] = 'Либревил';
$labels['tz:africa:lome'] = 'Ломе';
$labels['tz:africa:luanda'] = 'Луанда';
$labels['tz:africa:lubumbashi'] = 'Лубумбаши';
$labels['tz:africa:lusaka'] = 'Лусака';
$labels['tz:africa:malabo'] = 'Малабо';
$labels['tz:africa:maputo'] = 'Мапуто';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Мбабане';
$labels['tz:africa:mogadishu'] = 'Могадишу';
$labels['tz:africa:monrovia'] = 'Монровија';
$labels['tz:africa:nairobi'] = 'Најроби';
$labels['tz:africa:ndjamena'] = 'Нџамена';
$labels['tz:africa:niamey'] = 'Нимеј';
$labels['tz:africa:nouakchott'] = 'Нуакшот';
$labels['tz:africa:ouagadougou'] = 'Уагадугу';
$labels['tz:africa:porto-novo'] = 'Порто Ново';
$labels['tz:africa:sao_tome'] = 'Сао Томе';
$labels['tz:africa:tripoli'] = 'Триполи';
$labels['tz:africa:tunis'] = 'Тунис';
$labels['tz:africa:windhoek'] = 'Виндхук';
$labels['tz:america'] = 'Америка';
$labels['tz:america:adak'] = 'Адак';
$labels['tz:america:anchorage'] = 'Енкориџ';
$labels['tz:america:anguilla'] = 'Ангилја';
$labels['tz:america:antigua'] = 'Антигва';
$labels['tz:america:araguaina'] = 'Арагвајана';
$labels['tz:america:argentina'] = 'Аргентина';
$labels['tz:america:argentina:buenos_aires'] = 'Буенос Аирес';
$labels['tz:america:argentina:catamarca'] = 'Катамарка';
$labels['tz:america:argentina:cordoba'] = 'Кордоба';
$labels['tz:america:argentina:jujuy'] = 'Хухуј';
$labels['tz:america:argentina:la_rioja'] = 'Риоха';
$labels['tz:america:argentina:mendoza'] = 'Мендоза';
$labels['tz:america:argentina:rio_gallegos'] = 'Рио Галегос';
$labels['tz:america:argentina:salta'] = 'Салта';
$labels['tz:america:argentina:san_juan'] = 'Сан Хуан';
$labels['tz:america:argentina:san_luis'] = 'Сан Луис';
$labels['tz:america:argentina:tucuman'] = 'Тукуман';
$labels['tz:america:argentina:ushuaia'] = 'Ушуаја';
$labels['tz:america:aruba'] = 'Аруба';
$labels['tz:america:asuncion'] = 'Асунсион';
$labels['tz:america:atikokan'] = 'Атикокан';
$labels['tz:america:bahia'] = 'Баија';
$labels['tz:america:bahia_banderas'] = 'Баија Бандерас';
$labels['tz:america:barbados'] = 'Барбадос';
$labels['tz:america:belem'] = 'Белем';
$labels['tz:america:belize'] = 'Белизе';
$labels['tz:america:blanc-sablon'] = 'Бланк Саблон';
$labels['tz:america:boa_vista'] = 'Боа Виста';
$labels['tz:america:bogota'] = 'Богота';
$labels['tz:america:boise'] = 'Боис';
$labels['tz:america:cambridge_bay'] = 'Кембрич беј ';
$labels['tz:america:campo_grande'] = 'Камп Гранде';
$labels['tz:america:cancun'] = 'Канкун';
$labels['tz:america:caracas'] = 'Каракас';
$labels['tz:america:cayenne'] = 'Кајен ';
$labels['tz:america:cayman'] = 'Кајман';
$labels['tz:america:chicago'] = 'Чикаго';
$labels['tz:america:chihuahua'] = 'Чивава';
$labels['tz:america:costa_rica'] = 'Коста Рика';
$labels['tz:america:creston'] = 'Крестон';
$labels['tz:america:cuiaba'] = 'Кујаба';
$labels['tz:america:curacao'] = 'Курасао';
$labels['tz:america:danmarkshavn'] = 'Данмарксхаун';
$labels['tz:america:dawson'] = 'Давсон';
$labels['tz:america:dawson_creek'] = 'Давсон Крек';
$labels['tz:america:denver'] = 'Денвер';
$labels['tz:america:detroit'] = 'Детроит ';
$labels['tz:america:dominica'] = 'Доминика';
$labels['tz:america:edmonton'] = 'Едмонтон';
$labels['tz:america:eirunepe'] = 'Ернепе';
$labels['tz:america:el_salvador'] = 'Ел Салвадор';
$labels['tz:america:fort_nelson'] = 'Форт Нелсон';
$labels['tz:america:fortaleza'] = 'Форталеза';
$labels['tz:america:glace_bay'] = 'Глас беј';
$labels['tz:america:godthab'] = 'Нук';
$labels['tz:america:goose_bay'] = 'Гус беј ';
$labels['tz:america:grand_turk'] = 'Гранд Турк ';
$labels['tz:america:grenada'] = 'Гренада ';
$labels['tz:america:guadeloupe'] = 'Гвадалупе';
$labels['tz:america:guatemala'] = 'Гватемала';
$labels['tz:america:guayaquil'] = 'Гвајакил';
$labels['tz:america:guyana'] = 'Француска Гвајана';
$labels['tz:america:halifax'] = 'Халифакс';
$labels['tz:america:havana'] = 'Хавана';
$labels['tz:america:hermosillo'] = 'Хермосило';
$labels['tz:america:indiana'] = 'Индијана';
$labels['tz:america:indiana:indianapolis'] = 'Индијанаполис';
$labels['tz:america:indiana:knox'] = 'Нокс';
$labels['tz:america:indiana:marengo'] = 'Маренго';
$labels['tz:america:indiana:petersburg'] = 'Питерсбург';
$labels['tz:america:indiana:tell_city'] = 'Тел';
$labels['tz:america:indiana:vevay'] = 'Вевај';
$labels['tz:america:indiana:vincennes'] = 'Венсен';
$labels['tz:america:indiana:winamac'] = 'Винкам';
$labels['tz:america:inuvik'] = 'Инувик';
$labels['tz:america:iqaluit'] = 'Икалуит';
$labels['tz:america:jamaica'] = 'Јамајка';
$labels['tz:america:juneau'] = 'Џуно';
$labels['tz:america:kentucky'] = 'Кентаки';
$labels['tz:america:kentucky:louisville'] = 'Луисвил';
$labels['tz:america:kentucky:monticello'] = 'Монтисело';
$labels['tz:america:kralendijk'] = 'Краленџик';
$labels['tz:america:la_paz'] = 'Ла Паз';
$labels['tz:america:lima'] = 'Лима';
$labels['tz:america:los_angeles'] = 'Лос Анџелес';
$labels['tz:america:lower_princes'] = 'Долни принцови';
$labels['tz:america:maceio'] = 'Масејо';
$labels['tz:america:managua'] = 'Манагва';
$labels['tz:america:manaus'] = 'Манаус';
$labels['tz:america:marigot'] = 'Маригот';
$labels['tz:america:martinique'] = 'Мартиник';
$labels['tz:america:matamoros'] = 'Матаморос';
$labels['tz:america:mazatlan'] = 'Масатлан';
$labels['tz:america:menominee'] = 'Меномин';
$labels['tz:america:merida'] = 'Мерида';
$labels['tz:america:metlakatla'] = 'Матлаката';
$labels['tz:america:mexico_city'] = 'Мексико Сити';
$labels['tz:america:miquelon'] = 'Микелон';
$labels['tz:america:moncton'] = 'Монктон';
$labels['tz:america:monterrey'] = 'Монтереј';
$labels['tz:america:montevideo'] = 'Монтевидео';
$labels['tz:america:montserrat'] = 'Монтсерат';
$labels['tz:america:nassau'] = 'Насау';
$labels['tz:america:new_york'] = 'Њујорк';
$labels['tz:america:nipigon'] = 'Нипигон';
$labels['tz:america:nome'] = 'Ном';
$labels['tz:america:noronha'] = 'Нороња';
$labels['tz:america:north_dakota'] = 'Северна Дакота';
$labels['tz:america:north_dakota:beulah'] = 'Бјула';
$labels['tz:america:north_dakota:center'] = 'Центар';
$labels['tz:america:north_dakota:new_salem'] = 'Њу Сејлем';
$labels['tz:america:ojinaga'] = 'Оџинага';
$labels['tz:america:panama'] = 'Панама';
$labels['tz:america:pangnirtung'] = 'Пангниртунг';
$labels['tz:america:paramaribo'] = 'Парамарибо';
$labels['tz:america:phoenix'] = 'Феникс';
$labels['tz:america:port-au-prince'] = 'Порт-о-Пренс';
$labels['tz:america:port_of_spain'] = 'Пристаништето на Шпанија';
$labels['tz:america:porto_velho'] = 'Порто Вељо';
$labels['tz:america:puerto_rico'] = 'Порто Рико';
$labels['tz:america:rainy_river'] = 'Рејни Ривер ';
$labels['tz:america:rankin_inlet'] = 'Ранкин инлет ';
$labels['tz:america:recife'] = 'Ресифе';
$labels['tz:america:regina'] = 'Регина';
$labels['tz:america:resolute'] = 'Резолут';
$labels['tz:america:rio_branco'] = 'Рио Бранко ';
$labels['tz:america:santarem'] = 'Сантарем';
$labels['tz:america:santiago'] = 'Сантијаго';
$labels['tz:america:santo_domingo'] = 'Санто Доминго';
$labels['tz:america:sao_paulo'] = 'Сао Паоло';
$labels['tz:america:scoresbysund'] = 'Скорсбисунд';
$labels['tz:america:sitka'] = 'Ситка';
$labels['tz:america:st_barthelemy'] = 'Свети Бартелеми';
$labels['tz:america:st_johns'] = "Свети Јован";
$labels['tz:america:st_kitts'] = 'Сент Китс';
$labels['tz:america:st_lucia'] = 'Сент Лусија';
$labels['tz:america:st_thomas'] = 'Свети Тома';
$labels['tz:america:st_vincent'] = 'Свети Винсент';
$labels['tz:america:swift_current'] = 'Свифт Курент';
$labels['tz:america:tegucigalpa'] = 'Тегусигалпа';
$labels['tz:america:thule'] = 'Туле ';
$labels['tz:america:thunder_bay'] = 'Тандер беј ';
$labels['tz:america:tijuana'] = 'Тихуана';
$labels['tz:america:toronto'] = 'Торонто';
$labels['tz:america:tortola'] = 'Тортола';
$labels['tz:america:vancouver'] = 'Ванкувер';
$labels['tz:america:whitehorse'] = 'Вајтхорс ';
$labels['tz:america:winnipeg'] = 'Винипег';
$labels['tz:america:yakutat'] = 'Јокутат';
$labels['tz:america:yellowknife'] = 'Јелоунајф';
$labels['tz:antarctica'] = 'Антарктикот';
$labels['tz:antarctica:casey'] = 'Кејси';
$labels['tz:antarctica:davis'] = 'Дејвис';
$labels['tz:antarctica:dumontdurville'] = "Думонт Дурвиј ";
$labels['tz:antarctica:macquarie'] = 'Маскери';
$labels['tz:antarctica:mawson'] = 'Мејсон';
$labels['tz:antarctica:mcmurdo'] = 'МекМурдо';
$labels['tz:antarctica:palmer'] = 'Палмер';
$labels['tz:antarctica:rothera'] = 'Ротера';
$labels['tz:antarctica:syowa'] = 'Сиова';
$labels['tz:antarctica:troll'] = 'Трол';
$labels['tz:antarctica:vostok'] = 'Восток';
$labels['tz:arctic'] = 'Арктикот';
$labels['tz:arctic:longyearbyen'] = 'Лонгјиарбјен';
$labels['tz:asia'] = 'Азија';
$labels['tz:asia:aden'] = 'Аден';
$labels['tz:asia:almaty'] = 'Алмати';
$labels['tz:asia:amman'] = 'Аман';
$labels['tz:asia:anadyr'] = 'Анадир';
$labels['tz:asia:aqtau'] = 'Актау';
$labels['tz:asia:aqtobe'] = 'Актобе';
$labels['tz:asia:ashgabat'] = 'Ашхабад';
$labels['tz:asia:atyrau'] = 'Атирау';
$labels['tz:asia:baghdad'] = 'Багдад';
$labels['tz:asia:bahrain'] = 'Бахраин';
$labels['tz:asia:baku'] = 'Баку';
$labels['tz:asia:bangkok'] = 'Бангкок';
$labels['tz:asia:barnaul'] = 'Барнаул';
$labels['tz:asia:beirut'] = 'Бејрут';
$labels['tz:asia:bishkek'] = 'Бишкек';
$labels['tz:asia:brunei'] = 'Брунеи';
$labels['tz:asia:chita'] = 'Чита';
$labels['tz:asia:choibalsan'] = 'Чојбалсан';
$labels['tz:asia:colombo'] = 'Коломбо';
$labels['tz:asia:damascus'] = 'Дамаск';
$labels['tz:asia:dhaka'] = 'Дака';
$labels['tz:asia:dili'] = 'Дили';
$labels['tz:asia:dubai'] = 'Дубаи';
$labels['tz:asia:dushanbe'] = 'Душанбе';
$labels['tz:asia:famagusta'] = 'Фамагуста';
$labels['tz:asia:gaza'] = 'Газа';
$labels['tz:asia:hebron'] = 'Хеброн';
$labels['tz:asia:ho_chi_minh'] = 'Хо Ши Мин';
$labels['tz:asia:hong_kong'] = 'Хонг Конг';
$labels['tz:asia:hovd'] = 'Ховд';
$labels['tz:asia:irkutsk'] = 'Иркутск';
$labels['tz:asia:jakarta'] = 'Џакарта';
$labels['tz:asia:jayapura'] = 'Џајапура';
$labels['tz:asia:jerusalem'] = 'Ерусалим';
$labels['tz:asia:kabul'] = 'Кабул';
$labels['tz:asia:kamchatka'] = 'Камчатка';
$labels['tz:asia:karachi'] = 'Карачи';
$labels['tz:asia:kathmandu'] = 'Катманду';
$labels['tz:asia:khandyga'] = 'Кандуга';
$labels['tz:asia:kolkata'] = 'Калкута';
$labels['tz:asia:krasnoyarsk'] = 'Краснојарск';
$labels['tz:asia:kuala_lumpur'] = 'Куала Лумпур';
$labels['tz:asia:kuching'] = 'Кочинг';
$labels['tz:asia:kuwait'] = 'Кувајт';
$labels['tz:asia:macau'] = 'Макао';
$labels['tz:asia:magadan'] = 'Магадан';
$labels['tz:asia:makassar'] = 'Макасар';
$labels['tz:asia:manila'] = 'Манила';
$labels['tz:asia:muscat'] = 'Мускат';
$labels['tz:asia:nicosia'] = 'Никозија';
$labels['tz:asia:novokuznetsk'] = 'Новокузнецк';
$labels['tz:asia:novosibirsk'] = 'Новосибирск';
$labels['tz:asia:omsk'] = 'Омск';
$labels['tz:asia:oral'] = 'Орал';
$labels['tz:asia:phnom_penh'] = 'Пном Пен';
$labels['tz:asia:pontianak'] = 'Понтианак';
$labels['tz:asia:pyongyang'] = 'Пјонгјанг';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Кизилорда';
$labels['tz:asia:riyadh'] = 'Ријад';
$labels['tz:asia:sakhalin'] = 'Сахалин';
$labels['tz:asia:samarkand'] = 'Самарканд';
$labels['tz:asia:seoul'] = 'Сеул';
$labels['tz:asia:shanghai'] = 'Шангај';
$labels['tz:asia:singapore'] = 'Сингапур';
$labels['tz:asia:srednekolymsk'] = 'Средњеколимск';
$labels['tz:asia:taipei'] = 'Тајпеј';
$labels['tz:asia:tashkent'] = 'Ташкент';
$labels['tz:asia:tbilisi'] = 'Тбилиси';
$labels['tz:asia:tehran'] = 'Техеран';
$labels['tz:asia:thimphu'] = 'Тимпу';
$labels['tz:asia:tokyo'] = 'Токио';
$labels['tz:asia:tomsk'] = 'Томск';
$labels['tz:asia:ulaanbaatar'] = 'Улан Батор';
$labels['tz:asia:urumqi'] = 'Урумки';
$labels['tz:asia:ust-nera'] = 'Уст-Нера';
$labels['tz:asia:vientiane'] = 'Виентиан';
$labels['tz:asia:vladivostok'] = 'Владивосток';
$labels['tz:asia:yakutsk'] = 'Јакутск';
$labels['tz:asia:yangon'] = 'Јангон';
$labels['tz:asia:yekaterinburg'] = 'Екатеринбург';
$labels['tz:asia:yerevan'] = 'Ереван';
$labels['tz:atlantic'] = 'Атлантскиот';
$labels['tz:atlantic:azores'] = 'Азорските Острови';
$labels['tz:atlantic:bermuda'] = 'Бермуда';
$labels['tz:atlantic:canary'] = 'Канарските Острови ';
$labels['tz:atlantic:cape_verde'] = 'Зелено\'ртски Острови';
$labels['tz:atlantic:faroe'] = 'Фарските';
$labels['tz:atlantic:madeira'] = 'Мадеира';
$labels['tz:atlantic:reykjavik'] = 'Рејкјавик';
$labels['tz:atlantic:south_georgia'] = 'Јужна Џорџија';
$labels['tz:atlantic:st_helena'] = 'Света Елена';
$labels['tz:atlantic:stanley'] = 'Стенли';
$labels['tz:australia'] = 'Австралија';
$labels['tz:australia:adelaide'] = 'Аделаида';
$labels['tz:australia:brisbane'] = 'Бризбејн';
$labels['tz:australia:broken_hill'] = 'Скршен рид ';
$labels['tz:australia:currie'] = 'Кјури ';
$labels['tz:australia:darwin'] = 'Дарвин';
$labels['tz:australia:eucla'] = 'Укла ';
$labels['tz:australia:hobart'] = 'Хобарт';
$labels['tz:australia:lindeman'] = 'Линдеман';
$labels['tz:australia:lord_howe'] = 'Лорд Хове ';
$labels['tz:australia:melbourne'] = 'Мелбурн';
$labels['tz:australia:perth'] = 'Перт';
$labels['tz:australia:sydney'] = 'Сиднеј';
$labels['tz:europe'] = 'Европа';
$labels['tz:europe:amsterdam'] = 'Амстердам';
$labels['tz:europe:andorra'] = 'Андора';
$labels['tz:europe:astrakhan'] = 'Астрахан';
$labels['tz:europe:athens'] = 'Атина';
$labels['tz:europe:belgrade'] = 'Белград';
$labels['tz:europe:berlin'] = 'Берлин';
$labels['tz:europe:bratislava'] = 'Братислава';
$labels['tz:europe:brussels'] = 'Брисел';
$labels['tz:europe:bucharest'] = 'Букурешт';
$labels['tz:europe:budapest'] = 'Будимпешта';
$labels['tz:europe:busingen'] = 'Бисинген ам Хохрајн';
$labels['tz:europe:chisinau'] = 'Кишињев';
$labels['tz:europe:copenhagen'] = 'Копенхаген';
$labels['tz:europe:dublin'] = 'Даблин';
$labels['tz:europe:gibraltar'] = 'Гибралтар';
$labels['tz:europe:guernsey'] = 'Гернзи';
$labels['tz:europe:helsinki'] = 'Хелсинки';
$labels['tz:europe:isle_of_man'] = 'Остров на Човекот';
$labels['tz:europe:istanbul'] = 'Истанбул';
$labels['tz:europe:jersey'] = 'Џерси';
$labels['tz:europe:kaliningrad'] = 'Калининград';
$labels['tz:europe:kiev'] = 'Киев';
$labels['tz:europe:kirov'] = 'Киров';
$labels['tz:europe:lisbon'] = 'Лисабон';
$labels['tz:europe:ljubljana'] = 'Љубљана';
$labels['tz:europe:london'] = 'Лондон';
$labels['tz:europe:luxembourg'] = 'Луксембург';
$labels['tz:europe:madrid'] = 'Мадрид';
$labels['tz:europe:malta'] = 'Малта';
$labels['tz:europe:mariehamn'] = 'Маријехамн';
$labels['tz:europe:minsk'] = 'Минск';
$labels['tz:europe:monaco'] = 'Монако';
$labels['tz:europe:moscow'] = 'Москва';
$labels['tz:europe:oslo'] = 'Осло';
$labels['tz:europe:paris'] = 'Париз';
$labels['tz:europe:podgorica'] = 'Подгорица';
$labels['tz:europe:prague'] = 'Прага';
$labels['tz:europe:riga'] = 'Рига';
$labels['tz:europe:rome'] = 'Рим';
$labels['tz:europe:samara'] = 'Самара';
$labels['tz:europe:san_marino'] = 'Сан Марино';
$labels['tz:europe:sarajevo'] = 'Сараево';
$labels['tz:europe:saratov'] = 'Саратов';
$labels['tz:europe:simferopol'] = 'Симферопол';
$labels['tz:europe:skopje'] = 'Скопје';
$labels['tz:europe:sofia'] = 'Софија';
$labels['tz:europe:stockholm'] = 'Стокхолм';
$labels['tz:europe:tallinn'] = 'Талин';
$labels['tz:europe:tirane'] = 'Тирана';
$labels['tz:europe:ulyanovsk'] = 'Улјановск';
$labels['tz:europe:uzhgorod'] = 'Ужгород';
$labels['tz:europe:vaduz'] = 'Вадуз';
$labels['tz:europe:vatican'] = 'Ватикан';
$labels['tz:europe:vienna'] = 'Виена';
$labels['tz:europe:vilnius'] = 'Вилнус';
$labels['tz:europe:volgograd'] = 'Волгоград';
$labels['tz:europe:warsaw'] = 'Варшава';
$labels['tz:europe:zagreb'] = 'Загреб';
$labels['tz:europe:zaporozhye'] = 'Запорожје';
$labels['tz:europe:zurich'] = 'Цирих';
$labels['tz:indian'] = 'Иднијан';
$labels['tz:indian:antananarivo'] = 'Антананариво';
$labels['tz:indian:chagos'] = 'Чагос';
$labels['tz:indian:christmas'] = 'Божиќ';
$labels['tz:indian:cocos'] = 'Кокос';
$labels['tz:indian:comoro'] = 'Коморските острови ';
$labels['tz:indian:kerguelen'] = 'Кергелен';
$labels['tz:indian:mahe'] = 'Махе';
$labels['tz:indian:maldives'] = 'Малдивите';
$labels['tz:indian:mauritius'] = 'Маврициус';
$labels['tz:indian:mayotte'] = 'Мајот';
$labels['tz:indian:reunion'] = 'Обединување';
$labels['tz:pacific'] = 'Пацифик';
$labels['tz:pacific:apia'] = 'Апија';
$labels['tz:pacific:auckland'] = 'Окленд';
$labels['tz:pacific:bougainville'] = 'Бугенвилеја';
$labels['tz:pacific:chatham'] = 'Чатам';
$labels['tz:pacific:chuuk'] = 'Чук';
$labels['tz:pacific:easter'] = 'Велигден';
$labels['tz:pacific:efate'] = 'Ефате';
$labels['tz:pacific:enderbury'] = 'Ендербери';
$labels['tz:pacific:fakaofo'] = 'Факаофо';
$labels['tz:pacific:fiji'] = 'Фиџи';
$labels['tz:pacific:funafuti'] = 'Фунафути';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Гамбиер';
$labels['tz:pacific:guadalcanal'] = 'Гвадалканал';
$labels['tz:pacific:guam'] = 'Гуам';
$labels['tz:pacific:honolulu'] = 'Хонолулу';
$labels['tz:pacific:johnston'] = 'Џонстон';
$labels['tz:pacific:kiritimati'] = 'Киритимати';
$labels['tz:pacific:kosrae'] = 'Косрае';
$labels['tz:pacific:kwajalein'] = 'Кваџалејн';
$labels['tz:pacific:majuro'] = 'Маџуро';
$labels['tz:pacific:marquesas'] = 'Маркизки';
$labels['tz:pacific:midway'] = 'Мидвеј';
$labels['tz:pacific:nauru'] = 'Науру';
$labels['tz:pacific:niue'] = 'Ниуе';
$labels['tz:pacific:norfolk'] = 'Норфолк';
$labels['tz:pacific:noumea'] = 'Норфолк';
$labels['tz:pacific:pago_pago'] = 'Паго Паго';
$labels['tz:pacific:palau'] = 'Палау';
$labels['tz:pacific:pitcairn'] = 'Питкерн';
$labels['tz:pacific:pohnpei'] = 'Понпеј';
$labels['tz:pacific:port_moresby'] = 'Порт Морсби';
$labels['tz:pacific:rarotonga'] = 'Раротонга';
$labels['tz:pacific:saipan'] = 'Сајпан';
$labels['tz:pacific:tahiti'] = 'Тахити';
$labels['tz:pacific:tarawa'] = 'Тарава';
$labels['tz:pacific:tongatapu'] = 'Тонгатапу';
$labels['tz:pacific:wake'] = 'Островот Вејк';
$labels['tz:pacific:wallis'] = 'Валис';
localization/mk_MK/labels.inc000064400000107262151727150560012210 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Добредојдовте во $product';
$labels['username'] = 'Корисничко име';
$labels['password'] = 'Лозинка';
$labels['server'] = 'Сервер';
$labels['login'] = 'Најава';
$labels['logout'] = 'Одјава';
$labels['mail'] = 'Е-пошта';
$labels['settings'] = 'Нагодувања';
$labels['addressbook'] = 'Именик';
$labels['inbox'] = 'Примени';
$labels['drafts'] = 'Непратени';
$labels['sent'] = 'Пратени';
$labels['trash'] = 'Корпа';
$labels['junk'] = 'Ѓубре';
$labels['show_real_foldernames'] = 'Прикажи ги вистинските имиња за специјалните папки ';
$labels['subject'] = 'Наслов';
$labels['from'] = 'Од';
$labels['sender'] = 'Праќач';
$labels['to'] = 'Примач';
$labels['cc'] = 'Копирај';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Препрати на';
$labels['followupto'] = 'Проследи до';
$labels['date'] = 'Датум';
$labels['size'] = 'Големина';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организација';
$labels['readstatus'] = 'Прочитај статус ';
$labels['listoptions'] = 'Опции на листа...';
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'Писма од $from до $to од $count';
$labels['threadsfromto'] = 'Теми $од до $до на $брои';
$labels['messagenrof'] = 'Писмо $nr од $count';
$labels['fromtoshort'] = '$од - $до на $брои';
$labels['copy'] = 'Копирај';
$labels['move'] = 'Премести';
$labels['moveto'] = 'Премести во...';
$labels['copyto'] = 'Копирај во ...';
$labels['download'] = 'Преземи';
$labels['open'] = 'Отвори';
$labels['showattachment'] = 'Прикажи';
$labels['showanyway'] = 'Прикажи го во секој случај';
$labels['filename'] = 'Име на податотеката';
$labels['filesize'] = 'Големина на податотеката';
$labels['addtoaddressbook'] = 'Додај во именик';
$labels['sun'] = 'Нед';
$labels['mon'] = 'Пон';
$labels['tue'] = 'Вто';
$labels['wed'] = 'Сре';
$labels['thu'] = 'Чет';
$labels['fri'] = 'Пет';
$labels['sat'] = 'Саб';
$labels['sunday'] = 'Недела';
$labels['monday'] = 'Понеделник';
$labels['tuesday'] = 'Вторник';
$labels['wednesday'] = 'Среда';
$labels['thursday'] = 'Четврток';
$labels['friday'] = 'Петок';
$labels['saturday'] = 'Сабота';
$labels['jan'] = 'Јан';
$labels['feb'] = 'Фев';
$labels['mar'] = 'Мар';
$labels['apr'] = 'Апр';
$labels['may'] = 'Мај';
$labels['jun'] = 'Јун';
$labels['jul'] = 'Јул';
$labels['aug'] = 'Авг';
$labels['sep'] = 'Сеп';
$labels['oct'] = 'Окт';
$labels['nov'] = 'Ное';
$labels['dec'] = 'Дек';
$labels['longjan'] = 'Јануари';
$labels['longfeb'] = 'Февруари';
$labels['longmar'] = 'Март';
$labels['longapr'] = 'Април';
$labels['longmay'] = 'Мај';
$labels['longjun'] = 'Јуни';
$labels['longjul'] = 'Јули';
$labels['longaug'] = 'Август';
$labels['longsep'] = 'Септември';
$labels['longoct'] = 'Октомври';
$labels['longnov'] = 'Ноември';
$labels['longdec'] = 'Декември';
$labels['today'] = 'Денес';
$labels['refresh'] = 'Освежи';
$labels['checkmail'] = 'Провери пошта';
$labels['compose'] = 'Пиши ново писмо';
$labels['writenewmessage'] = 'Ново писмо';
$labels['reply'] = 'Врати ';
$labels['replytomessage'] = 'Одговори на испраќачот';
$labels['replytoallmessage'] = 'Одговори на испраќачот и сите примачи';
$labels['replyall'] = 'Одговори на сите';
$labels['replylist'] = 'Листа за одговарање';
$labels['forward'] = 'Препрати ';
$labels['forwardinline'] = 'Препрати во линија ';
$labels['forwardattachment'] = 'Препрати како ';
$labels['forwardmessage'] = 'Препрати писмо';
$labels['deletemessage'] = 'Избриши писмо';
$labels['movemessagetotrash'] = 'Премести ги писмата во Корпа';
$labels['printmessage'] = 'Испечати писмо';
$labels['previousmessage'] = 'Прикажи го претходното писмо';
$labels['firstmessage'] = 'Прикажи го првото писмо';
$labels['nextmessage'] = 'Прикажи го следното писмо';
$labels['lastmessage'] = 'Прикажи го последното писмо';
$labels['backtolist'] = 'Назад кон листа на писма';
$labels['viewsource'] = 'Покажи го изворот на писмото';
$labels['mark'] = 'Означи ';
$labels['markmessages'] = 'Обележи ги писмата';
$labels['markread'] = 'Како прочитани';
$labels['markunread'] = 'Како непрочитани';
$labels['markflagged'] = 'Како обележано';
$labels['markunflagged'] = 'Како необележано';
$labels['moreactions'] = 'Повекје акции...';
$labels['markallread'] = 'Означи ги сите како прочитани ';
$labels['folders-cur'] = 'Означи ја само папката ';
$labels['folders-sub'] = 'Означи ја папката и нејзините подпапки ';
$labels['folders-all'] = 'Сите папки';
$labels['more'] = 'Повеќе';
$labels['back'] = 'Назад';
$labels['options'] = 'Опции ';
$labels['first'] = 'Прво';
$labels['last'] = 'Последно';
$labels['previous'] = 'Претходно';
$labels['next'] = 'Следно';
$labels['select'] = 'Одбери';
$labels['all'] = 'Сите';
$labels['none'] = 'Ниедно';
$labels['currpage'] = 'Моменталната страница';
$labels['isread'] = 'Читај';
$labels['unread'] = 'Непрочитани';
$labels['flagged'] = 'Обележано';
$labels['unflagged'] = 'Не обележано';
$labels['unanswered'] = 'Неодговорено';
$labels['withattachment'] = 'Со додатоци';
$labels['deleted'] = 'Избришано';
$labels['undeleted'] = 'Не избришано ';
$labels['replied'] = 'Одговорено';
$labels['forwarded'] = 'Препратено';
$labels['invert'] = 'Обратно';
$labels['filter'] = 'Филтер';
$labels['list'] = 'Листа ';
$labels['threads'] = 'Теми ';
$labels['expand-all'] = 'Прошири ги сите ';
$labels['expand-unread'] = 'Прошири ги непрочитаните ';
$labels['collapse-all'] = 'Намали ги сите ';
$labels['threaded'] = 'Навојни ';
$labels['autoexpand_threads'] = 'Прошири ги теми пораките ';
$labels['do_expand'] = 'сите теми ';
$labels['expand_only_unread'] = 'само со непрочитани теми ';
$labels['fromto'] = 'Од/до ';
$labels['flag'] = 'Облежи';
$labels['attachment'] = 'Прилог';
$labels['nonesort'] = 'Ниедно';
$labels['sentdate'] = 'Дата на праќање ';
$labels['arrival'] = 'Дата на пристигање ';
$labels['asc'] = 'Растечки';
$labels['desc'] = 'Опаѓачки';
$labels['listcolumns'] = 'Список со колони ';
$labels['listsorting'] = 'Сортирање колони';
$labels['listorder'] = 'Ред на сортирање ';
$labels['listmode'] = 'Начин на преглед - листа ';
$labels['layout'] = 'Распоред ';
$labels['layoutwidescreen'] = 'Широк екран';
$labels['layoutdesktop'] = 'Работната површина';
$labels['layoutlist'] = 'Список';
$labels['folderactions'] = 'Акции на папка ';
$labels['compact'] = 'Компактно';
$labels['empty'] = 'Испразни';
$labels['importmessages'] = 'Внеси пораки';
$labels['quota'] = 'Искористен простор';
$labels['unknown'] = 'непознато';
$labels['unlimited'] = 'неограничено';
$labels['quotatype'] = 'Тип на квота ';
$labels['quotatotal'] = 'Лимит';
$labels['quotaused'] = 'Користени';
$labels['quotastorage'] = 'Простор на дискот';
$labels['quotamessage'] = 'Број пораки';
$labels['quicksearch'] = 'Брзо пребарување';
$labels['resetsearch'] = 'Ново пребарување';
$labels['searchmod'] = 'Модификатори на пребарувањето';
$labels['msgtext'] = 'Цело писмо';
$labels['body'] = 'Тело';
$labels['type'] = 'Тип';
$labels['namex'] = 'Име';
$labels['searchscope'] = 'Опсег';
$labels['currentfolder'] = 'Моментална папка ';
$labels['subfolders'] = 'Ова ги затвара подпапките ';
$labels['allfolders'] = 'Сите под папки ';
$labels['searchinterval-1W'] = 'постари од една недела ';
$labels['searchinterval-1M'] = 'постари од еден месец ';
$labels['searchinterval-1Y'] = 'постари од една година ';
$labels['searchinterval1W'] = 'помлади од една недела ';
$labels['searchinterval1M'] = 'помлади од еден месец ';
$labels['searchinterval1Y'] = 'помлади од една година ';
$labels['openinextwin'] = 'Отвори во нов прозорец';
$labels['emlsave'] = 'Преземи (.eml)';
$labels['changeformattext'] = 'Прикажи во обичен формат на текс ';
$labels['changeformathtml'] = 'Прикажи во HTML формат';
$labels['editasnew'] = 'Уреди како ново';
$labels['send'] = 'Прати';
$labels['sendmessage'] = 'Испрати сега';
$labels['savemessage'] = 'Зачувај го писмото во Непратени';
$labels['addattachment'] = 'Приложи податотека';
$labels['charset'] = 'Збир од знаци';
$labels['editortype'] = 'Тип на уредник';
$labels['returnreceipt'] = 'Врати';
$labels['dsn'] = 'известување за статусот на испорака';
$labels['mailreplyintro'] = 'На $дата,$праќач напиша:';
$labels['originalmessage'] = 'Оригинална порака';
$labels['selectimage'] = 'Селектирај слика ';
$labels['addimage'] = 'Додај слика ';
$labels['selectmedia'] = 'Селектирај филм';
$labels['addmedia'] = 'Додај филм ';
$labels['encrypt'] = 'Енкриптирај ';
$labels['encryptmessage'] = 'Енкриптирај порака ';
$labels['encryptmessagemailvelope'] = 'Енкриптирај порака  со Mailvelope ';
$labels['importpubkeys'] = 'Внеси јавни клучови ';
$labels['encryptedsendialog'] = 'Праќање енкриптирана порака ';
$labels['keyid'] = 'Клуч ID';
$labels['keylength'] = 'Битови ';
$labels['keyexpired'] = 'Истечено';
$labels['keyrevoked'] = 'Отповикан';
$labels['bccinstead'] = 'Користи Bcc';
$labels['insert'] = 'Внеси ';
$labels['recipient'] = 'Примач';
$labels['editidents'] = 'Уреди идентитети ';
$labels['spellcheck'] = 'Правопис';
$labels['checkspelling'] = 'Провери правопис';
$labels['resumeediting'] = 'Продолжи со уредување';
$labels['revertto'] = 'Врати на';
$labels['restore'] = 'Врати';
$labels['restoremessage'] = 'Врати порака?';
$labels['ignore'] = 'Игнорирај';
$labels['responses'] = 'Одговори';
$labels['insertresponse'] = 'Внеси одговор';
$labels['manageresponses'] = 'Менаџирај одговор';
$labels['newresponse'] = 'Создај нов одговор';
$labels['addresponse'] = 'додај одговор';
$labels['editresponse'] = 'Уреди одговор';
$labels['editresponses'] = 'Уреди одговори ';
$labels['responsename'] = 'Име ';
$labels['responsetext'] = 'Текст за одговор';
$labels['attach'] = 'Прикчи ';
$labels['attachments'] = 'Приложено';
$labels['upload'] = 'Подигни';
$labels['uploadprogress'] = '$процент($моментално од $вкупно)';
$labels['close'] = 'Затвори';
$labels['messageoptions'] = 'Опции на порака ';
$labels['togglecomposeoptions'] = 'Вклучи ги опциите за состав';
$labels['attachmentrename'] = 'Преименувај приврзување';
$labels['low'] = 'Низок';
$labels['lowest'] = 'Најнизок';
$labels['normal'] = 'Нормален';
$labels['high'] = 'Висок';
$labels['highest'] = 'Највисок';
$labels['nosubject'] = '(без наслов)';
$labels['showimages'] = 'Прикажи слики';
$labels['alwaysshow'] = 'Секогаш прикажувај ги сликите од $sender';
$labels['isdraft'] = 'Ова е нацрт-порака.';
$labels['andnmore'] = '$nr повеќе...';
$labels['togglemoreheaders'] = 'Прикажи повеќе заглавија на пораки';
$labels['togglefullheaders'] = 'Вклучи необработени заглавја на пораки ';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Обичен текст';
$labels['savesentmessagein'] = 'Сними го пратеното писмо во';
$labels['dontsave'] = 'не зачувувај';
$labels['maxuploadsize'] = 'Максималната дозволена големина за податотеката е $size';
$labels['addcc'] = 'Додај Cc';
$labels['addbcc'] = 'Додај Bcc';
$labels['addreplyto'] = 'Додај Одговори-на';
$labels['addfollowupto'] = 'Додај следење-до';
$labels['mdnrequest'] = 'Праќачот на оваа порака сака да биде известен кога ќе го прочитате писмото. Дали сакате да го известите?';
$labels['receiptread'] = 'Извести (прочитано)';
$labels['yourmessage'] = 'Ова е известување за вашата порака';
$labels['receiptnote'] = 'Напомена: Ова известување само потврдува дека писмото кое сте го пратиле е отворено. Не е гаранција дека примачот го прочитал или разбрал истото.';
$labels['name'] = 'Име за приказ';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Презиме';
$labels['middlename'] = 'Средно име ';
$labels['nameprefix'] = 'Префикс ';
$labels['namesuffix'] = 'Суфикс ';
$labels['nickname'] = 'Прекар';
$labels['jobtitle'] = 'Назив на работа ';
$labels['department'] = 'Оддел';
$labels['gender'] = 'Пол';
$labels['maidenname'] = 'Моминско име';
$labels['email'] = 'Е-пошта';
$labels['phone'] = 'Телефон';
$labels['address'] = 'Адреса ';
$labels['street'] = 'Улица ';
$labels['locality'] = 'Град ';
$labels['zipcode'] = 'Поштенски код';
$labels['region'] = 'Држава / Провинција';
$labels['country'] = 'Земја';
$labels['birthday'] = 'Роденден';
$labels['anniversary'] = 'Годишнина';
$labels['website'] = 'Веб страна ';
$labels['instantmessenger'] = 'ИМ';
$labels['notes'] = 'Белешки';
$labels['male'] = 'Машки';
$labels['female'] = 'Зенски';
$labels['manager'] = 'Менаџер';
$labels['assistant'] = 'Асистент ';
$labels['spouse'] = 'Сопруг';
$labels['allfields'] = 'Сите полиња ';
$labels['search'] = 'Барај';
$labels['searchresult'] = 'Резултати од пребарување ';
$labels['advsearch'] = 'Напредно Пребарување';
$labels['advanced'] = 'Напредно';
$labels['other'] = 'Друго';
$labels['printcontact'] = 'Испринтај контакт ';
$labels['qrcode'] = 'QR Код';
$labels['typehome'] = 'Дома';
$labels['typework'] = 'Работа';
$labels['typeother'] = 'Друго';
$labels['typemobile'] = 'Мобилен ';
$labels['typemain'] = 'Главен ';
$labels['typehomefax'] = 'Домашен факс ';
$labels['typeworkfax'] = 'Службен факс ';
$labels['typecar'] = 'Кола ';
$labels['typepager'] = 'Пејџер';
$labels['typevideo'] = 'Видео ';
$labels['typeassistant'] = 'Асистент ';
$labels['typehomepage'] = 'Домашна страна ';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил ';
$labels['addfield'] = 'Додај поле';
$labels['addcontact'] = 'Додај контакт ';
$labels['editcontact'] = 'Уреди контакт';
$labels['contacts'] = 'Контакти ';
$labels['contactproperties'] = 'Својства ан контакти ';
$labels['contactnameandorg'] = 'Име и организација ';
$labels['personalinfo'] = 'Лични информаци';
$labels['personal'] = 'Лично';
$labels['contactphoto'] = 'Слика на контакт';
$labels['edit'] = 'Уреди';
$labels['cancel'] = 'Откажи';
$labels['save'] = 'Зачувај';
$labels['delete'] = 'Избриши';
$labels['discard'] = 'Отфрли';
$labels['rename'] = 'Преименувај';
$labels['addphoto'] = 'Додај';
$labels['replacephoto'] = 'Замени';
$labels['uploadphoto'] = 'Прикачи слика ';
$labels['newcontact'] = 'Креирај нов контакт ';
$labels['deletecontact'] = 'Избриши ги следните имиња';
$labels['composeto'] = 'Напиши порака за';
$labels['contactsfromto'] = 'Имиња од $from до $to од $count';
$labels['print'] = 'Испечати';
$labels['export'] = 'Извези како';
$labels['exportall'] = 'Премести се ';
$labels['exportsel'] = 'Премести селектирани ';
$labels['exportvcards'] = 'Извези ги контактите во vCard формат';
$labels['newgroup'] = 'Создај нова група ';
$labels['addgroup'] = 'Додај група ';
$labels['grouprename'] = 'Преименувај група ';
$labels['groupdelete'] = 'Ибриши група ';
$labels['groupremoveselected'] = 'Избриши селектирани контакти од групата';
$labels['uponelevel'] = 'Едно ниво горе';
$labels['previouspage'] = 'Прикажи претходна страна';
$labels['firstpage'] = 'Прикажи ја првата страна';
$labels['nextpage'] = 'Прикажи ја следната страна';
$labels['lastpage'] = 'Прикажи ја последната страна';
$labels['group'] = 'Група ';
$labels['groups'] = 'Групи';
$labels['listgroup'] = 'Листа на членови на групата ';
$labels['personaladrbook'] = 'Лични адреси';
$labels['searchsave'] = 'Зачувај пребарување ';
$labels['searchdelete'] = 'Избриши пребарување ';
$labels['import'] = 'Увези';
$labels['importcontacts'] = 'Увези контакти';
$labels['importtarget'] = 'Додај контакти во ';
$labels['importreplace'] = 'Замени го целиот именик';
$labels['importgroups'] = 'Внеси задачи за група ';
$labels['importgroupsall'] = 'Сите (создај групи ако е потребно)';
$labels['importgroupsexisting'] = 'Само за постоечки групи ';
$labels['done'] = 'Завршено';
$labels['settingsfor'] = 'Нагодувања за';
$labels['about'] = 'За ';
$labels['preferences'] = 'Нагодувања';
$labels['userpreferences'] = 'Кориснички нагодувања';
$labels['editpreferences'] = 'Промени кориснички нагодувања';
$labels['identities'] = 'Идентитети';
$labels['manageidentities'] = 'Менаџирај идентитети ';
$labels['newidentity'] = 'Создај нов идентитет ';
$labels['addidentity'] = 'Додај нов идентитет';
$labels['editidentity'] = 'Уреди идентитет';
$labels['preferhtml'] = 'Прикажи во HTML';
$labels['defaultcharset'] = 'Стандарден сет на карактери ';
$labels['htmlmessage'] = 'HTML писмо';
$labels['messagepart'] = 'Дел ';
$labels['digitalsig'] = 'Дигитален потпис ';
$labels['dateformat'] = 'Дата формат ';
$labels['timeformat'] = 'Формат на време ';
$labels['prettydate'] = 'Убави датуми';
$labels['setdefault'] = 'Постави за основно';
$labels['autodetect'] = 'Автоматски';
$labels['language'] = 'Јазик';
$labels['timezone'] = 'Часовна зона';
$labels['pagesize'] = 'Редови по страна';
$labels['signature'] = 'Потпис';
$labels['dstactive'] = 'Промени на времето';
$labels['showinextwin'] = 'Отвори порака во нов прозорец ';
$labels['composeextwin'] = 'Компонирај во нов прозорец';
$labels['htmleditor'] = 'Пиши HTML порака';
$labels['htmlonreply'] = 'на одговор до HTML порака ';
$labels['htmlonreplyandforward'] = 'на препраќање или одговор до HTML порака ';
$labels['htmlsignature'] = 'HTML потпис';
$labels['showemail'] = 'Покажи email адреса со име на екран ';
$labels['previewpane'] = 'Прикажи прозорец за преглед';
$labels['skin'] = 'Модел на изгледот';
$labels['logoutclear'] = 'Исчисти ја Кантата при излез';
$labels['logoutcompact'] = 'Подреди ги примените при излез';
$labels['uisettings'] = 'Кориснички изглед';
$labels['serversettings'] = 'Нагодувања на серверот';
$labels['mailboxview'] = 'Приказ на поштенското сандаче';
$labels['mdnrequests'] = 'Известувања за праќачот';
$labels['askuser'] = 'прашај го корисникот';
$labels['autosend'] = 'испрати автоматски';
$labels['autosendknown'] = 'прати примач до моите контакти, инаку прашај ме ';
$labels['autosendknownignore'] = 'прати примач до моите контакти, инаку игнорирај ';
$labels['ignorerequest'] = 'игнорирај барање ';
$labels['readwhendeleted'] = 'Обележи го писмото како прочитано при бришење';
$labels['flagfordeletion'] = 'Обележи го писмото за бришење наместо да го избришеш';
$labels['skipdeleted'] = 'Не ги прикажувај избришаните писма';
$labels['deletealways'] = 'Ака преместувањето на пораките до ѓубрето не успее, избриши ги ';
$labels['deletejunk'] = 'Дирктно избриши пораки во ѓубре';
$labels['showremoteimages'] = 'Прикажи вметнати слики';
$labels['fromknownsenders'] = 'од познати праќачи';
$labels['always'] = 'секогаш';
$labels['alwaysbutplain'] = 'секогаш, освен при одговарање на обичен текст ';
$labels['showinlineimages'] = 'Прикажи приложени слики под писмото';
$labels['autosavedraft'] = 'Авоматски зачувувај во Непратени';
$labels['everynminutes'] = 'секои $n минути';
$labels['refreshinterval'] = 'Освежи(провери за нови пораки, и сл.)';
$labels['never'] = 'никогаш';
$labels['immediately'] = 'Веднаш';
$labels['messagesdisplaying'] = 'Прикажување на писма';
$labels['messagescomposition'] = 'Пишување на писма';
$labels['mimeparamfolding'] = 'Име на прикачените податотеки';
$labels['2231folding'] = 'Полн RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Полн RFC 2047 (друго)';
$labels['force7bit'] = 'Користи MIME кодирање за 8-битни карактери ';
$labels['savelocalstorage'] = "Зачувајте во локалното складирање на прелистувачот (привремено)";
$labels['advancedoptions'] = 'Напредни можности';
$labels['toggleadvancedoptions'] = 'Вклучи напредни опции ';
$labels['focusonnewmessage'] = 'Фокусирај го прозорецот на прелистувачот на новото писмо';
$labels['checkallfolders'] = 'Провери ги сите папки за нови писма';
$labels['defaultfont'] = 'Стандарден фонд на  HTML пораки ';
$labels['mainoptions'] = 'Главни можности';
$labels['browseroptions'] = 'Опции на прелистувач';
$labels['section'] = 'Заглавие';
$labels['maintenance'] = 'Одржување';
$labels['newmessage'] = 'Ново писмо';
$labels['signatureoptions'] = 'Можности за потписот';
$labels['whenreplying'] = 'При одговарање';
$labels['replyempty'] = 'Не ја цитирајте оригиналната порака';
$labels['replytopposting'] = 'новото писмо започни го над оригиналот';
$labels['replytoppostingnoindent'] = 'почни нова порака над цитатот (без вовлекување)';
$labels['replybottomposting'] = 'новото писмо започни го под оригиналот';
$labels['replyremovesignature'] = 'При одговарање отстрани го изворниот потпис од писмото';
$labels['autoaddsignature'] = 'Автоматски додавај потпис';
$labels['newmessageonly'] = 'само нови писма';
$labels['replyandforwardonly'] = 'само одгорови и препраќања';
$labels['insertsignature'] = 'Вметни потпис';
$labels['sigbelow'] = 'Стави потпис под цитираната порака ';
$labels['sigseparator'] = 'Форсирај стандарден одделувач во потписите';
$labels['afternseconds'] = 'после $n секунди ';
$labels['reqmdn'] = 'Секогаш побарај повратна порака ';
$labels['reqdsn'] = 'Секогаш барајте известување за статусот на испорака';
$labels['replysamefolder'] = 'Поставете ги одговорите во папката на пораката на која е одговорено';
$labels['defaultabook'] = 'Стандардна книга на адреси';
$labels['autocompletesingle'] = 'Сконки алтернативни email адреси во автоматско довршување ';
$labels['listnamedisplay'] = 'Листа на контакти како ';
$labels['spellcheckbeforesend'] = 'Провери правопис пред испраќање на порака ';
$labels['spellcheckoptions'] = 'Опции за проверка на правопис';
$labels['spellcheckignoresyms'] = 'Игнорирај зборови со симболи';
$labels['spellcheckignorenums'] = 'Игнорирај зборови со броеви ';
$labels['spellcheckignorecaps'] = 'Игнорирај зборови со сите големи букви';
$labels['addtodict'] = 'Додај во речник';
$labels['mailtoprotohandler'] = 'Регистрирај управувач на протокол за mailto: линкови';
$labels['standardwindows'] = 'Справи се со скокачки прозори како обични прозори ';
$labels['forwardmode'] = 'пораката се препраќа';
$labels['inline'] = 'во линија';
$labels['asattachment'] = 'како додаток';
$labels['replyallmode'] = 'Стандардна акција од [Одговори на сите] копче ';
$labels['replyalldefault'] = 'одговори на сите ';
$labels['replyalllist'] = 'Одговори само на мејлинг листа (ако е пронајдена)';
$labels['allmessages'] = 'Сите пораки ';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Име на папката';
$labels['subscribed'] = 'Претплатен';
$labels['messagecount'] = 'Пораки';
$labels['create'] = 'Создај';
$labels['createfolder'] = 'Создај нова папка';
$labels['managefolders'] = 'Организирање на папки';
$labels['specialfolders'] = 'Специјални папки';
$labels['properties'] = 'Својства ';
$labels['folderproperties'] = 'Својства на папка ';
$labels['parentfolder'] = 'Родител папка ';
$labels['location'] = 'Локација ';
$labels['info'] = 'Информација ';
$labels['getfoldersize'] = 'Кликни за да ја добиеш големината на папката';
$labels['changesubscription'] = 'Кликни за да сменисх претплата ';
$labels['foldertype'] = 'Тип на папка ';
$labels['personalfolder'] = 'Приватна папка ';
$labels['otherfolder'] = 'Папка на други корисници';
$labels['sharedfolder'] = 'Јавна папка ';
$labels['findfolders'] = 'Најди папки ';
$labels['namespace.personal'] = 'Лично';
$labels['namespace.other'] = 'Други корисници';
$labels['namespace.shared'] = 'Споделено';
$labels['sortby'] = 'Сортирај по';
$labels['sortasc'] = 'Сортирај нагорно';
$labels['sortdesc'] = 'Сортирај надолно';
$labels['undo'] = 'Врати ';
$labels['installedplugins'] = 'Инсталирани прикличоци ';
$labels['plugin'] = 'Прикличоци ';
$labels['version'] = 'Верзии ';
$labels['source'] = 'Извор';
$labels['license'] = 'Лиценца';
$labels['support'] = 'Добиј подршка ';
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
$labels['unicode'] = 'Уникод';
$labels['english'] = 'Англиски ';
$labels['westerneuropean'] = 'Западно европски';
$labels['easterneuropean'] = 'Источно европски ';
$labels['southeasterneuropean'] = 'Југо-источно европски';
$labels['baltic'] = 'Балтички ';
$labels['cyrillic'] = 'Кириличен';
$labels['arabic'] = 'Арапски';
$labels['greek'] = 'Грчки';
$labels['hebrew'] = 'Еврејски';
$labels['turkish'] = 'Турски';
$labels['nordic'] = 'Нордиски';
$labels['thai'] = 'Тајландски';
$labels['celtic'] = 'Селтик';
$labels['vietnamese'] = 'Виетнамски';
$labels['japanese'] = 'Јапонски';
$labels['korean'] = 'Корејски';
$labels['chinese'] = 'Кинески';
$labels['arialabeltopnav'] = 'Контрола на прозорец ';
$labels['arialabeltasknav'] = 'Задачи на апликацијата ';
$labels['arialabeltoolbar'] = 'Лента со алатки на апликацијата ';
$labels['arialabelactivetask'] = 'Активни задачи ';
$labels['arialabelmessagessearchfilter'] = 'Филтер за прелистување на е-пошта';
$labels['arialabelmailsearchform'] = 'Форма на пребарување на е-пошта ';
$labels['arialabelcontactsearchform'] = 'Форма на пребарување контакти ';
$labels['arialabelmailquicksearchbox'] = 'Внес на е-пошта пребарување';
$labels['arialabelquicksearchbox'] = 'Пребарување влез';
$labels['arialabelfoldersearchfilter'] = 'Филтер за листата со папки';
$labels['arialabelfoldersearchform'] = 'Форма за пребарување папки ';
$labels['arialabelfolderlist'] = 'Селекција на е-маил папки ';
$labels['arialabelmessagelist'] = 'Листа на пораки за е-пошта';
$labels['arialabelmailpreviewframe'] = 'Преглед на порака';
$labels['arialabelmailboxmenu'] = 'Мени за дејства на папките';
$labels['arialabellistselectmenu'] = 'Мени за избор на листа';
$labels['arialabelthreadselectmenu'] = 'Мени за листа на теми';
$labels['arialabelmessagelistoptions'] = 'Приказ на листа на пораки и опции за сортирање ';
$labels['arialabelmailimportdialog'] = 'Дијалог за внес на порака ';
$labels['arialabelmessagenav'] = 'Навигација за пораки';
$labels['arialabelmessagebody'] = 'Тело на порака';
$labels['arialabelmessageactions'] = 'Акции за порака';
$labels['arialabelcontactquicksearch'] = 'Форма за барање контакти ';
$labels['arialabelcontactsearchbox'] = 'Влез за пребарување контакти ';
$labels['arialabelmessageheaders'] = 'Заглавја на порака ';
$labels['arialabelforwardingoptions'] = 'Опции за препраќање ';
$labels['arialabelreplyalloptions'] = 'Опции за Врати на сите ';
$labels['arialabelmoremessageactions'] = 'Повеке акции за порака ';
$labels['arialabelmarkmessagesas'] = 'Означи ги селектираните пораки како...';
$labels['arialabelcomposeoptions'] = 'Опции за композиција';
$labels['arialabelresponsesmenu'] = 'Мени за одобрени одговори';
$labels['arialabelattachmentuploadform'] = 'Форма за прикачени додатоци ';
$labels['arialabelattachmentpreview'] = 'Преглед на додатоци ';
$labels['ariasummarycomposecontacts'] = 'Листа на контакти и групи  за да се селектираат како примачи  ';
$labels['arialabelcontactexportoptions'] = 'опции за изнес на контакти ';
$labels['arialabelabookgroupoptions'] = 'Опции за Адресар/група';
$labels['arialabelpreferencesform'] = 'Форма на преференции';
$labels['arialabelidentityeditfrom'] = 'Форма за едитирање идентитети ';
$labels['arialabelresponseeditfrom'] = 'Форма за едитирање на одговори ';
$labels['arialabelsearchterms'] = 'Термини за пребарување';
$labels['helplistnavigation'] = 'Листа со навигација на тастатура ';
$labels['helplistkeyboardnavigation'] = "Стрелки горе/доле: Помести фокус на ред/селекција.
Спејс: Селектирај фокусиран ред.
Шифт + горе/доле: Селектирај додатен ред над/под.
Цтрл + Спејс: Додај го фокусираниот ред во селекцијата/тргни го од селекцијата.";
$labels['helplistkeyboardnavmessages'] = "Стрелки десно/лево: прошири/собери теми на порака (само во теми модул).
Ентер: Отвори ја селектираната/фокусираната порака.
Избриши: Премести ја селектираната порака во ѓубрето.";
$labels['helplistkeyboardnavcontacts'] = "Ентер: Отвори го селектираниот/фокусираниот контакт.";
localization/mk_MK/messages.inc000064400000051655151727150560012561 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Настана грешка!';
$messages['loginfailed']  = 'Најавата не успеа';
$messages['cookiesdisabled'] = 'Вашиот прелистувач не прифаќа колачиња';
$messages['sessionerror'] = 'Сесијата е неважечка или е истечена';
$messages['storageerror'] = 'Поврзувањето со IMAP не успеа';
$messages['servererror'] = 'Грешка во серверот!';
$messages['servererrormsg'] = 'Грешка со серверот: $msg';
$messages['accountlocked'] = 'Премногу обиди за најава. Пробајте повторно подоцна.';
$messages['connerror'] = 'Грешка со конекција (Неуспешно конектирање со серверот)!';
$messages['dberror'] = 'Грешка со датабазата!';
$messages['windowopenerror'] = 'Popup прозорецот беше блокиран!';
$messages['requesttimedout'] = 'Сесијата за барањето истече';
$messages['errorreadonly'] = 'Операцијата неможе да се изврши. Папката може само да се прегледува.';
$messages['errornoperm'] = 'Операцијата неможе да се изврши. Немате доволно пермисии.';
$messages['erroroverquota'] = 'Операцијата неможе да се изврши. Нема слободно место.';
$messages['erroroverquotadelete'] = 'Немате повеќе слободно место. Користете SHIFT+DEL да избришете порака.';
$messages['invalidrequest'] = 'Неважечко барање! Податоците не се зачувани.';
$messages['invalidhost'] = 'Името на серверот не е валидно.';
$messages['nomessagesfound'] = 'Немате писма во ова сандаче';
$messages['mailboxempty'] = 'Поштенското сандаче е празно.';
$messages['nomessages'] = 'Нема пораки';
$messages['refreshing'] = 'Освежување...';
$messages['loading'] = 'Вчитувам...';
$messages['uploading'] = 'Ја подигам податотеката...';
$messages['attaching'] = 'Датотеката се прикачува...';
$messages['uploadingmany'] = 'Датотеките се прикачуваат...';
$messages['loadingdata'] = 'Ги вчитувам податоците...';
$messages['checkingmail'] = 'Проверувам нова пошта...';
$messages['sendingmessage'] = 'Ја испраќам пораката...';
$messages['messagesent'] = 'Пораката е успешно испратена';
$messages['savingmessage'] = 'Ја зачувувам пораката...';
$messages['messagesaved'] = 'Пораката е зачувана во Непратени';
$messages['successfullysaved'] = 'Успешно зачувано';
$messages['savingresponse'] = 'Одговорот се снима...';
$messages['deleteresponseconfirm'] = 'Избриши го одговорот?';
$messages['addedsuccessfully'] = 'Името е успешно додадено во Именикот';
$messages['contactexists'] = 'Контакт со иста адреса на Е-пошта веќе постои.';
$messages['contactnameexists'] = 'Контакт со истото име веќе постои.';
$messages['blockedimages'] = 'За да се заштити вашата приватност, сликите во оваа порака не се прикажани.';
$messages['encryptedmessage'] = 'Оваа порака е кодирана и не може да се прикаже. Жалиме!';
$messages['externalmessagedecryption'] = 'Ова е енкриптирана порака и може да се декриптира со вашата ехтензија.';
$messages['nopubkeyfor'] = 'Не е пронајден јавен клуч за $email';
$messages['nopubkeyforsender'] = 'Не е пронајден валиден јавен сертификат за идентитетот на испараќачот. Дали сакате да ја енкриптирате пораката само за примачите ?';
$messages['encryptnoattachments'] = 'Веќе прикачени додатоци не може да се енкриптираат. Ве молиме додадете ги повторно во уредникот за енкрипција.';
$messages['searchpubkeyservers'] = 'Дали сакате да ги пребарувате јавните клуч сервери за клучевите што недостасуваат?';
$messages['encryptpubkeysfound'] = 'Следниот јавен клуч е пронајден:';
$messages['nocontactsfound'] = 'Нема пронајдено имиња.';
$messages['contactnotfound'] = 'Бараното име не е пронајдено';
$messages['sendingfailed'] = 'Не упеав да го испратам писмото';
$messages['senttooquickly'] = 'Почекајте $sec секунда/и пред да го испратите писмото';
$messages['errorsavingsent'] = 'Се случи грешка при снимањето на испратената порака.';
$messages['errorsaving'] = 'Се случи грешка при снимањето.';
$messages['errormoving'] = 'Не можев да го преместам писмото';
$messages['errorcopying'] = 'Пораката (пораките) не е успешно ископрана.';
$messages['errordeleting'] = 'Не можев да го избришам писмото';
$messages['errormarking'] = 'Не можев да го обележам писмото';
$messages['deletecontactconfirm']  = 'Дали сте сигурни дека сакате да го избришете одбраното(те) име(ња)?';
$messages['deletegroupconfirm']  = 'Избриши ја изберената група?';
$messages['deletemessagesconfirm'] = 'Дали сте сигурни дека сакате да го(и) избришете обележаниот(те) писмо(а)?';
$messages['deletefolderconfirm']  = 'Дали сте сигурни дека сакате да ја избришете оваа папка?';
$messages['purgefolderconfirm']  = 'Дали сте сигурни дека сакате да ги избршете сите писма во оваа папка?';
$messages['contactdeleting'] = 'Контактот (контактите) се брише....';
$messages['groupdeleting'] = 'Бришење група...';
$messages['folderdeleting'] = 'Ја бришам папката...';
$messages['foldermoving'] = 'Ја преместувам папката...';
$messages['foldersubscribing'] = 'Претплатување папка...';
$messages['folderunsubscribing'] = 'Отпишување папка...';
$messages['formincomplete'] = 'Имате изоставено непополнети информации';
$messages['noemailwarning'] = 'Внесете валидна е-поштенска адреса';
$messages['nonamewarning']  = 'Внесете име';
$messages['nopagesizewarning'] = 'Внесете големина на страницата';
$messages['nosenderwarning'] = 'Ве молиме внесете е-пошта на праќач';
$messages['norecipientwarning'] = 'Внесете барем еден примач';
$messages['disclosedrecipwarning'] = 'Сите приматели ке ги разгледуваат емаил адресите. За да го спречите ова и да ја заштитите нивната приватност, можете да го користите полето Bcc.';
$messages['disclosedreciptitle'] = 'Бремногу јавни приматели';
$messages['nosubjectwarning']  = 'Немате внесено „Наслов“. Дали сакате да внесете?';
$messages['nosubjecttitle']  = 'Нема предмет';
$messages['nobodywarning'] = 'Писмото нема текст во него. Дали сакате да го испратите?';
$messages['notsentwarning'] = 'Пораката не е пратена и има незачувани промени. Дали сакате да ги отфрлите промените?';
$messages['restoresavedcomposedata'] = 'Претходно компонирана но не испратена порака е пронајдена.\n\n$предмет\nЗачувано: $дата\n\n Дали сакате да ја вратите оваа порака?';
$messages['nosearchname'] = 'Внесете име или е-поштенска адреса';
$messages['notuploadedwarning'] = 'Сè уште нема подигнати прилози. Почекајте или откажете го подигањето';
$messages['searchsuccessful'] = 'Пронајадени се $nr пораки';
$messages['contactsearchsuccessful'] = '$nr контакти пронајдено.';
$messages['searchnomatch'] = 'Пребарувањето не даде резлутати';
$messages['searching'] = 'Пребарувам....';
$messages['checking'] = 'Проверувам...';
$messages['stillsearching'] = 'Пребарувањето трае уште...';
$messages['nospellerrors'] = 'Нема грешки во спелувањето';
$messages['folderdeleted'] = 'Папката е успешно избришана';
$messages['foldersubscribed'] = 'Успешно претплатена папка.';
$messages['folderunsubscribed'] = 'Успешно отпишана папк.';
$messages['deletedsuccessfully'] = 'Успешно избришано';
$messages['converting'] = 'Форматирањето на писмото е отстрането...';
$messages['messageopenerror'] = 'Не можев да го вчитам писното од серверот';
$messages['filelinkerror'] = 'Прикачувањето на дадотеката е неуспешно.';
$messages['fileuploaderror'] = 'Прикачувањето е неуспешно';
$messages['filesizeerror'] = 'Подигнатата податотека го надминува ограничувањето од $size';
$messages['filecounterror'] = 'Мозе да прикачиш максимум $count датотеки одеднаш.';
$messages['msgsizeerror'] = 'Не успеа да прикачувањето на датотекта.Максималната големина на пораката ($size) е надмината.';
$messages['copysuccess'] = 'Успешно копирани $nr контакти.';
$messages['movesuccess'] = 'успешно преместени $nr контакти.';
$messages['copyerror'] = 'Не можеше да се копираат контакти.';
$messages['moveerror'] = 'Не можеше да се преместат контакти.';
$messages['sourceisreadonly'] = 'Изворот на оваа адреса неможе да се промени';
$messages['errorsavingcontact'] = 'Името неможе да се сними';
$messages['movingmessage'] = 'Пораката се преместува...';
$messages['copyingmessage'] = 'Копирање порака(и)...';
$messages['copyingcontact'] = 'Копирање контакт(и)...';
$messages['movingcontact'] = 'Преместување контакт(и)...';
$messages['deletingmessage'] = 'Бришање порака(и)...';
$messages['markingmessage'] = 'Обележување порака(и)...';
$messages['addingmember'] = 'Додавање контакт(и) во групата...';
$messages['removingmember'] = 'Отстранување контакт(и) оф групата...';
$messages['receiptsent'] = 'Известувањето е успешно пратено';
$messages['errorsendingreceipt'] = 'Известувањето не е пратено';
$messages['deleteidentityconfirm'] = 'Дали навистина сакаш да го избришеш овој идентитет?';
$messages['nodeletelastidentity'] = 'Овој идентитет неможе да се избрише, тој е последниот.';
$messages['forbiddencharacter'] = 'Името на папката содржи несоодветен формат';
$messages['selectimportfile'] = 'Изберете ја податотеката која сакате да ја прикачите';
$messages['addresswriterror'] = 'Одбраниот именик не може да се менува';
$messages['contactaddedtogroup'] = 'Успешно дададени контакти во групата.';
$messages['contactremovedfromgroup'] = 'Успешно отстранети контакти од групата.';
$messages['nogroupassignmentschanged'] = 'Не се промениле групните задачи.';
$messages['importwait'] = 'Убезувам,, почекајте...';
$messages['importformaterror'] = 'Внесувањето не успеа! Пркачената датотека не е валидна датотека за внес.';
$messages['importconfirm'] = '<b>Успешно се увезени $inserted имиња, $skipped веќе постојат и се прескокнати</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Скокнато $skipped постоечки записи</b>';
$messages['importmessagesuccess'] = 'Успешно внесени $nr пораки';
$messages['importmessageerror'] = 'Внесувањето не успеа! Прикачената датотека не е валидна порака или датотека од сандаче';
$messages['opnotpermitted'] = 'Операцијата не е дозволена';
$messages['nofromaddress'] = 'Недостасува емиал адреса во селектираниот идентитет.';
$messages['editorwarning'] = 'Менување на типот на едитор може да предизвика губење на текс форматирањето.  Дали сакате да продолжите? ';
$messages['httpreceivedencrypterror'] = 'Се појави фатална конфигурациска грешка. Веднаш контактирајте го администраторот. <b>Вашето писмо не мож.</b>';
$messages['smtpconnerror'] = 'SMTP грешка ($code): Не успеав да се поврзам со серверот';
$messages['smtpautherror'] = 'SMTP грешка: Не успееа потврдувањето';
$messages['smtpfromerror'] = 'SMTP грешка ($code): Не успеав да го поставам испраќачот „$from“ ($msg)';
$messages['smtptoerror'] = 'SMTP грешка ($code): Не успеав да го поставам примачот „$yo“ ($msg)';
$messages['smtprecipientserror'] = 'SMTP грешка: Не успеав да ја испарсирам листата на примачи';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Невалидна емаил адреса: $email ';
$messages['toomanyrecipients'] = 'Премногу примачи. Намалете го бројот на примачи на $max.';
$messages['maxgroupmembersreached'] = 'Бројот на членови на групата го надминува максимумот од $max.';
$messages['internalerror'] = 'настана внатрешна грешка. Ве молиме обидете се повторно.';
$messages['contactdelerror'] = 'Не можеше да се избришат контакт(и).';
$messages['contactdeleted'] = 'Контакт(и) беа успешно избришани.';
$messages['contactrestoreerror'] = 'Избришаниот контакт(и) не може да се врати.';
$messages['contactrestored'] = 'Контактот(ите) се успешно вратени.';
$messages['groupdeleted'] = 'Групата е успешно избришана.';
$messages['grouprenamed'] = 'Групата е успешно преименувана.';
$messages['groupcreated'] = 'Групата е успешно создадена.';
$messages['savedsearchdeleted'] = 'Зачуваните пребарувања се успешно избришани.';
$messages['savedsearchdeleteerror'] = 'Не можеше на се избришат зачуваните пребарувања ';
$messages['savedsearchcreated'] = 'Зачувани пребарувања беа успешно креирани.';
$messages['savedsearchcreateerror'] = 'Не можеше да е креираат зачувани пребарувања.';
$messages['messagedeleted'] = 'Порака(ите) беа успешно избришани.';
$messages['messagemoved'] = 'Порака(ите) беа успешно преместени.';
$messages['messagemovedtotrash'] = 'Порака(ите) беа успешно преместени во ѓубрето.';
$messages['messagecopied'] = 'Порака(ите) беа успешно копирани.';
$messages['messagemarked'] = 'Порака(ите) беа успешно обележани.';
$messages['autocompletechars'] = 'Внесете барем $min карактери за автоматско завршување.';
$messages['autocompletemore'] = 'Пронајдени се повеќе исти внесови. Ве молиме внесете повеќе знаци.';
$messages['namecannotbeempty'] = 'Името не може да биде празно.';
$messages['nametoolong'] = 'Името е предолго.';
$messages['namedotforbidden'] = 'Името на папката не може да почнува со точка.';
$messages['folderupdated'] = 'Папката е успешно ажурирана.';
$messages['foldercreated'] = 'Папката е успешно креирана.';
$messages['invalidimageformat'] = 'Невалиден формат на слика.';
$messages['mispellingsfound'] = 'Детектирана е правописна грешка во пораката.';
$messages['parentnotwritable'] = 'Невозможно да се креира/премести папката во селектираната папка родител. Нема права на пристап.';
$messages['messagetoobig'] = 'Делот со пораката е преголем за да се процесира.';
$messages['noscriptwarning'] = 'Прдупредување: Овој webmail сервис бара Javascript! За да го користите ве молиме вклучете го Javascript во поставувањата на вашиот пребарувач.';
$messages['messageissent'] = 'Оваа порака беше пратена, но сеуште не е зачувана. Дали сакате да ја зачувате сега ? ';
$messages['errnotfound'] = 'Датотеката не е најдена';
$messages['errnotfoundexplain'] = 'Бараниот ресурс не беше пронајден!';
$messages['errfailedrequest'] = 'Неуспешно барање';
$messages['errauthorizationfailed'] = 'Овластувањето не успеа';
$messages['errunauthorizedexplain'] = 'Не може да се потврди дали вие се обвластени да пристапите до овој сервис! ';
$messages['errrequestcheckfailed'] = 'Барањето за проверка не успеа';
$messages['errcsrfprotectionexplain'] = "За ваша заштита, пристапот до овој ресурс е обезбеден против CSRF.\n ако го видите ова, вие најверојатно не сте се одјавиле пред напуштање на веб апликацијата. \n\n Сега е потребна човечка интеракција за да продолжите.";
$messages['errcontactserveradmin'] = 'Ве молиме контактирајте го вашиот сервер администратор.';
$messages['clicktoresumesession'] = 'Кликнете овде за да продолжите со претходната сесија';
$messages['errcomposesession'] = 'Грешка при компонирање сесија';
$messages['errcomposesessionexplain'] = 'Бараната композиција на сесија не е најдена.';
$messages['clicktocompose'] = 'Кликнете овде за да компонирате нова порака';
localization/sk_SK/timezones.inc000064400000047433151727150560013002 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Akkra';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Alžír';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Káhira';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Konakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salám';
$labels['tz:africa:djibouti'] = 'Džibuti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El-Aaiún';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Džúbá';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Chartúm';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadišo';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'N´Djamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto Novo';
$labels['tz:africa:sao_tome'] = 'Svätý Tomáš';
$labels['tz:africa:tripoli'] = 'Tripolis';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentína';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Córdoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancún';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Kajmanie ostrovy';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Kostarika';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepé';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamajka';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinik';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Severná Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarém';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Svätý Bartolomej';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Svätý Krištof';
$labels['tz:america:st_lucia'] = 'Svätá Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Svätý Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktída';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Ázia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Alma-Ata';
$labels['tz:asia:amman'] = 'Ammán';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrajn';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Bejrút';
$labels['tz:asia:bishkek'] = 'Biškek';
$labels['tz:asia:brunei'] = 'Brunej';
$labels['tz:asia:chita'] = 'Čita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Kolombo';
$labels['tz:asia:damascus'] = 'Damask';
$labels['tz:asia:dhaka'] = 'Dháka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubaj';
$labels['tz:asia:dushanbe'] = 'Dušanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Hočiminovo Mesto';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jeruzalem';
$labels['tz:asia:kabul'] = 'Kábul';
$labels['tz:asia:kamchatka'] = 'Kamčatka';
$labels['tz:asia:karachi'] = 'Karáči';
$labels['tz:asia:kathmandu'] = 'Káthmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kalkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnojarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuvajt';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Maskat';
$labels['tz:asia:nicosia'] = 'Nikózia';
$labels['tz:asia:novokuznetsk'] = 'Novokuzneck';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pchjongjang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Rijád';
$labels['tz:asia:sakhalin'] = 'Sachalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Soul';
$labels['tz:asia:shanghai'] = 'Šanghaj';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Tchaj-pej';
$labels['tz:asia:tashkent'] = 'Taškent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teherán';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulanbátar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientian';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Jakutsk';
$labels['tz:asia:yangon'] = 'Rangún';
$labels['tz:asia:yekaterinburg'] = 'Jekaterinburg';
$labels['tz:asia:yerevan'] = 'Jerevan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azory';
$labels['tz:atlantic:bermuda'] = 'Bermudy';
$labels['tz:atlantic:canary'] = 'Kanárske ostrovy';
$labels['tz:atlantic:cape_verde'] = 'Kapverdy';
$labels['tz:atlantic:faroe'] = 'Faerské ostrovy';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavík';
$labels['tz:atlantic:south_georgia'] = 'Južná Georgia';
$labels['tz:atlantic:st_helena'] = 'Sv. Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Austrália';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Európa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrachán';
$labels['tz:europe:athens'] = 'Atény';
$labels['tz:europe:belgrade'] = 'Belehrad';
$labels['tz:europe:berlin'] = 'Berlín';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brusel';
$labels['tz:europe:bucharest'] = 'Bukurešť';
$labels['tz:europe:budapest'] = 'Budapešť';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Kišiňov';
$labels['tz:europe:copenhagen'] = 'Kodaň';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltár';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Ostrov Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kyjev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisabon';
$labels['tz:europe:ljubljana'] = 'Ľubľana';
$labels['tz:europe:london'] = 'Londýn';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Moskva';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paríž';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praha';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rím';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Štokholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Ulianovsk';
$labels['tz:europe:uzhgorod'] = 'Užhorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikán';
$labels['tz:europe:vienna'] = 'Viedeň';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varšava';
$labels['tz:europe:zagreb'] = 'Záhreb';
$labels['tz:europe:zaporozhye'] = 'Záporožie';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'Indický oceán';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Čagoské ostrovy';
$labels['tz:indian:christmas'] = 'Vianočný ostrov';
$labels['tz:indian:cocos'] = 'Kokosový ostrov';
$labels['tz:indian:comoro'] = 'Komory';
$labels['tz:indian:kerguelen'] = 'Kergueleny';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maldivy';
$labels['tz:indian:mauritius'] = 'Maurícius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Réunion';
$labels['tz:pacific'] = 'Tichomorie';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Veľkonočný ostrov';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fidži';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapágy';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Sajpan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/sk_SK/csv2vcard.inc000064400000007062151727150560012654 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/<lang>/csv2vcard.inc                                     |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2013, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Marek Mečiar <mmmeciar@gmail.com>                             |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Výročie";
$map['assistants_name'] = "Meno asistenta";
$map['assistants_phone'] = "Telefón asistenta";
$map['birthday'] = "Narodeniny";
$map['business_city'] = "Mesto (práca)";
$map['business_countryregion'] = "Krajina/oblasť (práca)";
$map['business_fax'] = "Fax do práce";
$map['business_phone'] = "Telefón do práce";
$map['business_phone_2'] = "Telefón do práce 2";
$map['business_postal_code'] = "PSČ (práca)";
$map['business_state'] = "Okres (práca)";
$map['business_street'] = "Ulica (práca)";
$map['car_phone'] = "Autotelefón";
$map['categories'] = "Kategórie";
$map['company'] = "Spoločnosť";
$map['department'] = "Oddelenie";
$map['email_address'] = "E-mailová adresa";
$map['first_name'] = "Krstné meno";
$map['gender'] = "Pohlavie";
$map['home_city'] = "Mesto (domov)";
$map['home_countryregion'] = "Krajina/oblasť (domov)";
$map['home_fax'] = "Fax domov";
$map['home_phone'] = "Telefón domov";
$map['home_phone_2'] = "Telefón domov 2";
$map['home_postal_code'] = "PSČ (domov)";
$map['home_state'] = "Okres (domov)";
$map['home_street'] = "Ulica (domov)";
$map['job_title'] = "Funkcia";
$map['last_name'] = "Priezvisko";
$map['managers_name'] = "Meno manažéra";
$map['middle_name'] = "Ďalšie meno";
$map['mobile_phone'] = "Mobilný telefón";
$map['notes'] = "Poznámky";
$map['other_city'] = "Iné mesto";
$map['other_countryregion'] = "Krajina/oblasť (iné)";
$map['other_fax'] = "Iný fax";
$map['other_phone'] = "Iný telefón";
$map['other_postal_code'] = "Iné PSČ";
$map['other_state'] = "Krajina/oblasť (iné)";
$map['other_street'] = "Iná ulica";
$map['pager'] = "Operátor";
$map['primary_phone'] = "Primárny telefón";
$map['spouse'] = "Manžel(ka)";
$map['suffix'] = "Prípona";
$map['title'] = "Titul";
$map['web_page'] = "Webová stránka";
$map['birth_day'] = "Deň narodenia";
$map['birth_month'] = "Mesiac narodenia";
$map['birth_year'] = "Rok narodenia";
$map['display_name'] = "Zobrazované meno";
$map['fax_number'] = "Fax";
$map['home_address'] = "Adresa domov";
$map['home_country'] = "Štát domov";
$map['home_zipcode'] = "PSČ domov";
$map['mobile_number'] = "Mobil";
$map['nickname'] = "Prezývka";
$map['organization'] = "Organizácia";
$map['pager_number'] = "Pager";
$map['primary_email'] = "E-mailová adresa";
$map['secondary_email'] = "Ďalšia e-mailová adresa";
$map['web_page_1'] = "Webová stránka 1";
$map['web_page_2'] = "Webová stránka 2";
$map['work_phone'] = "Telefón do zamestnania";
$map['work_address'] = "Pracovná adresa";
$map['work_country'] = "Štát zamestnania";
$map['work_zipcode'] = "PSČ zamestnania";
localization/sk_SK/labels.inc000064400000105474151727150560012227 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Vitajte v $product';
$labels['username'] = 'Meno používateľa';
$labels['password'] = 'Heslo';
$labels['server'] = 'Server';
$labels['login'] = 'Prihlásiť';
$labels['oauthlogin'] = 'Prihlásenie cez $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Odhlásiť';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Nastavenia';
$labels['addressbook'] = 'Adresár kontaktov';
$labels['darkmode'] = 'Tmavý režim';
$labels['lightmode'] = 'Svetlý režim';
$labels['inbox'] = 'Doručená pošta';
$labels['drafts'] = 'Koncepty';
$labels['sent'] = 'Odoslané';
$labels['trash'] = 'Kôš';
$labels['junk'] = 'Nevyžiadaná pošta';
$labels['show_real_foldernames'] = 'Pri osobitných priečinkoch zobrazovať skutočné názvy';
$labels['subject'] = 'Predmet';
$labels['from'] = 'Od';
$labels['sender'] = 'Odosielateľ';
$labels['to'] = 'Komu';
$labels['cc'] = 'Kópia';
$labels['bcc'] = 'Skrytá kópia';
$labels['replyto'] = 'Odpovedať na';
$labels['followupto'] = 'Preposlať na';
$labels['date'] = 'Dátum';
$labels['size'] = 'Veľkosť';
$labels['priority'] = 'Priorita';
$labels['organization'] = 'Organizácia';
$labels['readstatus'] = 'Prečítať stav';
$labels['listoptions'] = 'Nastavenia zoznamu...';
$labels['listoptionstitle'] = 'Nastavenia zoznamu';
$labels['mailboxlist'] = 'Priečinky';
$labels['messagesfromto'] = 'Správy: $from – $to, z $count';
$labels['threadsfromto'] = 'Konverzácie: $from – $to, z $count';
$labels['messagenrof'] = 'Správa č. $nr z $count';
$labels['fromtoshort'] = '$from – $to z $count';
$labels['copy'] = 'Kopírovať';
$labels['move'] = 'Presunúť';
$labels['moveto'] = 'Presunúť do...';
$labels['copyto'] = 'Kopírovať do...';
$labels['download'] = 'Stiahnuť';
$labels['open'] = 'Otvoriť';
$labels['showattachment'] = 'Zobraziť';
$labels['showanyway'] = 'Zobraziť aj napriek tomu';
$labels['filename'] = 'Názov súboru';
$labels['filesize'] = 'Veľkosť súboru';
$labels['addtoaddressbook'] = 'Pridať do adresára';
$labels['sun'] = 'Ne';
$labels['mon'] = 'Po';
$labels['tue'] = 'Ut';
$labels['wed'] = 'St';
$labels['thu'] = 'Št';
$labels['fri'] = 'Pi';
$labels['sat'] = 'So';
$labels['sunday'] = 'Nedeľa';
$labels['monday'] = 'Pondelok';
$labels['tuesday'] = 'Utorok';
$labels['wednesday'] = 'Streda';
$labels['thursday'] = 'Štvrtok';
$labels['friday'] = 'Piatok';
$labels['saturday'] = 'Sobota';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Máj';
$labels['jun'] = 'Jún';
$labels['jul'] = 'Júl';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Január';
$labels['longfeb'] = 'Február';
$labels['longmar'] = 'Marec';
$labels['longapr'] = 'Apríl';
$labels['longmay'] = 'Máj';
$labels['longjun'] = 'Jún';
$labels['longjul'] = 'Júl';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Október';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
$labels['today'] = 'Dnes';
$labels['refresh'] = 'Obnoviť';
$labels['checkmail'] = 'Skontrolovať nové správy';
$labels['compose'] = 'Vytvoriť správu';
$labels['writenewmessage'] = 'Vytvoriť novú správu';
$labels['reply'] = 'Odpovedať';
$labels['replytomessage'] = 'Odpovedať na správu';
$labels['replytoallmessage'] = 'Odpovedať do zoznamu alebo odosielateľovi a všetkým príjemcom';
$labels['replyall'] = 'Odpovedať všetkým';
$labels['replylist'] = 'Zoznam pre odpovedanie';
$labels['forward'] = 'Poslať ďalej';
$labels['forwardinline'] = 'Poslať ďalej v správe';
$labels['forwardattachment'] = 'Poslať ďalej ako prílohu';
$labels['forwardmessage'] = 'Poslať správu ďalej';
$labels['bouncemsg'] = 'Opätovne odoslať (odrazenie)';
$labels['bounce'] = 'Opätovne odoslať';
$labels['deletemessage'] = 'Vymazať správu';
$labels['movemessagetotrash'] = 'Presunúť správu do koša';
$labels['printmessage'] = 'Vytlačiť túto správu';
$labels['previousmessage'] = 'Zobraziť predchádzajúcu správu';
$labels['firstmessage'] = 'Zobraziť prvú správu';
$labels['nextmessage'] = 'Zobraziť ďalšiu správu';
$labels['lastmessage'] = 'Zobraziť poslednú správu';
$labels['backtolist'] = 'Naspäť na zoznam správ';
$labels['viewsource'] = 'Zobraziť zdrojový text';
$labels['mark'] = 'Označiť';
$labels['markmessages'] = 'Označiť správy';
$labels['markread'] = 'Ako prečítané';
$labels['markunread'] = 'Ako neprečítané';
$labels['markflagged'] = 'Ako označené značkou';
$labels['markunflagged'] = 'Ako neoznačené značkou';
$labels['markundeleted'] = 'Ako nevymazané';
$labels['moreactions'] = 'Viac akcií...';
$labels['markallread'] = 'Označiť všetko ako prečítané';
$labels['folders-cur'] = 'Vybraný len priečinok';
$labels['folders-sub'] = 'Vybraný priečinok a jeho podpriečinky';
$labels['folders-all'] = 'Všetky priečinky';
$labels['more'] = 'Viac';
$labels['back'] = 'Dozadu';
$labels['options'] = 'Možnosti';
$labels['composeoptions'] = 'Možnosti zostavovania';
$labels['optionsandattachments'] = 'Možnosti a prílohy';
$labels['actions'] = 'Akcie';
$labels['first'] = 'Prvá/prvý';
$labels['last'] = 'Posledná/-ý';
$labels['previous'] = 'Predchádzajúca/-i';
$labels['next'] = 'Ďalšia/-í';
$labels['select'] = 'Výber';
$labels['selection'] = 'Výber';
$labels['all'] = 'Všetko';
$labels['none'] = 'Nič';
$labels['currpage'] = 'Aktuálna stránka';
$labels['isread'] = 'Prečítané';
$labels['unread'] = 'Neprečítané';
$labels['flagged'] = 'Označené značkou';
$labels['unflagged'] = 'Neoznačené značkou';
$labels['unanswered'] = 'Bez odpovede';
$labels['withattachment'] = 'S prílohou';
$labels['deleted'] = 'Vymazané';
$labels['undeleted'] = 'Nevymazané';
$labels['replied'] = 'Odpovedané';
$labels['forwarded'] = 'Preposlané';
$labels['invert'] = 'Obrátiť';
$labels['filter'] = 'Filter';
$labels['list'] = 'Zoznam';
$labels['threads'] = 'Konverzácie';
$labels['expand-all'] = 'Rozbaliť všetko';
$labels['expand-unread'] = 'Rozbaliť neprečítané';
$labels['collapse-all'] = 'Zbaliť všetko';
$labels['threaded'] = 'Spojené do konverzácií';
$labels['showunread'] = 'Zobraziť neprečítané správy';
$labels['autoexpand_threads'] = 'Rozbaliť konverzácie';
$labels['do_expand'] = 'všetky';
$labels['expand_only_unread'] = 'len s neprečítanými správami';
$labels['fromto'] = 'Od/Komu';
$labels['flag'] = 'Značka';
$labels['attachment'] = 'Príloha';
$labels['nonesort'] = 'Žiadne';
$labels['sentdate'] = 'Dátum odoslania';
$labels['arrival'] = 'Dátum prijatia';
$labels['asc'] = 'vzostupne';
$labels['desc'] = 'zostupne';
$labels['listcolumns'] = 'Stĺpce';
$labels['listsorting'] = 'Zoraďovanie';
$labels['listorder'] = 'Systém zoraďovania';
$labels['listmode'] = 'Režim zobrazenia zoznamu';
$labels['lmode'] = 'Režim zoznamu';
$labels['layout'] = 'Rozloženie';
$labels['layoutwidescreen'] = 'Na šírku obrazovky';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Zoznam';
$labels['layoutwidescreendesc'] = 'Na šírku obrazovky (zobrazenie 3 stĺpcov)';
$labels['layoutdesktopdesc'] = 'Plocha (široký zoznam a dole náhľad na správu)';
$labels['layoutlistdesc'] = 'Zoznam (žiadny náhľad na správu)';
$labels['folderactions'] = 'Akcie pre priečinky...';
$labels['compact'] = 'Zhustiť';
$labels['empty'] = 'Vyprázdniť';
$labels['importmessages'] = 'Importovať správy';
$labels['mailimportdesc'] = 'E-mail môžete nahrať s použitím súborov vo formáte <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> alebo <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Viaceré súbory je možné skomprimovať do archívov ZIP.';
$labels['quota'] = 'Úložné miesto';
$labels['unknown'] = 'neznáme';
$labels['unlimited'] = 'neobmedzené';
$labels['quotatype'] = 'Typ kvóty';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Použité';
$labels['quotastorage'] = 'Priestor na disku';
$labels['quotamessage'] = 'Počet správ';
$labels['shortheaderdate'] = 'Dňa: $date';
$labels['shortheaderto'] = 'Komu: $to dňa $date';
$labels['shortheaderfrom'] = 'Od: $from dňa $date';
$labels['quicksearch'] = 'Rýchle vyhľadávanie';
$labels['searchplaceholder'] = 'Vyhľadať...';
$labels['resetsearch'] = 'Reset vyhľadávania';
$labels['searchmod'] = 'Zmeniť kritériá vyhľadávania';
$labels['msgtext'] = 'Celá správa';
$labels['body'] = 'Telo (obsah)';
$labels['type'] = 'Typ';
$labels['namex'] = 'Meno';
$labels['searchscope'] = 'Rozsah';
$labels['currentfolder'] = 'Aktuálny priečinok';
$labels['subfolders'] = 'Tento a podpriečinky';
$labels['allfolders'] = 'Všetky priečinky';
$labels['searchinterval-1W'] = 'staršie ako týždeň';
$labels['searchinterval-1M'] = 'staršie ako mesiac';
$labels['searchinterval-1Y'] = 'staršie ako rok';
$labels['searchinterval1W'] = 'nie staršie ako týždeň';
$labels['searchinterval1M'] = 'nie staršie ako mesiac';
$labels['searchinterval1Y'] = 'nie staršie ako rok';
$labels['openinextwin'] = 'Otvoriť v novom okne';
$labels['emlsave'] = 'Stiahnuť (.eml)';
$labels['changeformattext'] = 'Zobraziť vo formáte čistého textu';
$labels['changeformathtml'] = 'Zobraziť vo formáte HTML';
$labels['editasnew'] = 'Upraviť ako novú správu';
$labels['send'] = 'Odoslať';
$labels['sendmessage'] = 'Odoslať správu';
$labels['savemessage'] = 'Uložiť správu ako koncept';
$labels['addattachment'] = 'Priložiť súbor';
$labels['charset'] = 'Znaková sada';
$labels['editortype'] = 'Typ editora';
$labels['returnreceipt'] = 'Potvrdenie o doručení';
$labels['dsn'] = 'Oznámenie o stave doručenia';
$labels['keepformatting'] = 'Zachovať formátovanie';
$labels['mailreplyintro'] = 'Dňa $date $sender napísal(a):';
$labels['originalmessage'] = 'Pôvodná správa';
$labels['selectimage'] = 'Vybrať obrázok';
$labels['addimage'] = 'Pridať obrázok';
$labels['selectmedia'] = 'Vybrať film';
$labels['addmedia'] = 'Pridať film';
$labels['encrypt'] = 'Zašifrovať';
$labels['encryptmessage'] = 'Zašifrovať správu';
$labels['encryptmessagemailvelope'] = 'Zašifrovať správu pomocou Mailvelope';
$labels['importpubkeys'] = 'Importovať verejné kľúče';
$labels['encryptedsendialog'] = 'Odosielanie zašifrovanej správy';
$labels['encryptandsign'] = 'Zašifrovať a podpísať';
$labels['keyid'] = 'ID kľúča';
$labels['keylength'] = 'Bity';
$labels['keyexpired'] = 'Expirované';
$labels['keyrevoked'] = 'Odvolané';
$labels['bccinstead'] = 'Použiť skrytú kópiu';
$labels['addheader'] = 'Pridať príjemcu (hlavička)';
$labels['insert'] = 'Vložiť';
$labels['insertcontact'] = 'Vložiť kontakt(y)';
$labels['recipient'] = 'Príjemca';
$labels['recipientedit'] = 'Úprava príjemcu';
$labels['editidents'] = 'Upraviť identitu odosielateľa';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Skontrolovať pravopis';
$labels['resumeediting'] = 'Pokračovať v úpravách';
$labels['revertto'] = 'Vrátiť sa na';
$labels['restore'] = 'Obnoviť';
$labels['restoremessage'] = 'Obnoviť správu?';
$labels['ignore'] = 'Ignorovať';
$labels['responses'] = 'Odpovede';
$labels['insertresponse'] = 'Vložiť odpoveď';
$labels['manageresponses'] = 'Spravovať odpovede';
$labels['newresponse'] = 'Vytvoriť novú odpoveď';
$labels['addresponse'] = 'Pridať odpoveď';
$labels['editresponse'] = 'Upraviť odpoveď';
$labels['editresponses'] = 'Upraviť odpovede';
$labels['responsename'] = 'Meno';
$labels['responsetext'] = 'Text odpovede';
$labels['attach'] = 'Priložiť';
$labels['attachments'] = 'Prílohy';
$labels['upload'] = 'Nahrať';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zatvoriť';
$labels['messageoptions'] = 'Nastavenia správy...';
$labels['togglecomposeoptions'] = 'Prepnúť možnosti kompozície';
$labels['attachmentrename'] = 'Premenovať prílohu';
$labels['low'] = 'Nízka';
$labels['lowest'] = 'Najnižšia';
$labels['normal'] = 'Normálna';
$labels['high'] = 'Vysoká';
$labels['highest'] = 'Najvyššia';
$labels['nosubject'] = '(bez predmetu)';
$labels['showimages'] = 'Zobraziť obrázky';
$labels['allow'] = 'Povoliť';
$labels['alwaysshow'] = 'Vždy zobraziť obrázky od odosielateľa $sender';
$labels['alwaysallow'] = 'Vždy povoliť od $sender';
$labels['isdraft'] = 'Toto je koncept';
$labels['andnmore'] = 'Počet ďalších: $nr...';
$labels['details'] = 'Podrobnosti';
$labels['summary'] = 'Zhrnutie';
$labels['headers'] = 'Hlavičky';
$labels['allheaders'] = 'Všetky hlavičky...';
$labels['togglemoreheaders'] = 'Zobraziť viac hlavičiek správ';
$labels['togglefullheaders'] = 'Prepnúť zobrazenie úplných hlavičiek správ';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Čistý text';
$labels['savesentmessagein'] = 'Uložiť odoslanú správu do';
$labels['dontsave'] = 'neukladať';
$labels['maxuploadsize'] = 'Maximálna povolená veľkosť súboru je $size';
$labels['addcc'] = 'Pridať kópiu';
$labels['addbcc'] = 'Pridať skrytú kopiu';
$labels['addreplyto'] = 'Pridať pole Odpovedať na';
$labels['addfollowupto'] = 'Pridať pole Preposlať na';
$labels['sendreceipt'] = 'Odoslať potvrdenie o prečítaní?';
$labels['mdnrequest'] = 'Odosielateľ tejto správy chce byť informovaný o tom, že ste túto správu čítali. Chcete mu potvrdiť prijatie správy?';
$labels['receiptread'] = 'Potvrdenie o doručení (a prečítaní) správy';
$labels['yourmessage'] = 'Toto je potvrdenie o doručení vašej správy';
$labels['receiptnote'] = 'Poznámka: Toto potvrdenie znamená len to, že správa sa zobrazila na počítači príjemcu. Nie je však zaručené, že príjemca správu čítal a porozumel jej obsahu.';
$labels['sendalwaysto'] = 'Vždy odoslať na $email';
$labels['zoomin'] = 'Priblížiť';
$labels['zoomout'] = 'Oddialiť';
$labels['rotate'] = 'Otočiť';
$labels['increaseimage'] = 'Zväčšiť veľkosť obrázka';
$labels['decreaseimage'] = 'Zmenšiť veľkosť obrázka';
$labels['rotateimage'] = 'Otočiť obrázok';
$labels['showtools'] = 'Zobraziť nástroje pre obrázok';
$labels['hidetools'] = 'Skryť nástroje pre obrázok';
$labels['name'] = 'Zobrazované meno';
$labels['firstname'] = 'Meno';
$labels['surname'] = 'Priezvisko';
$labels['middlename'] = 'Stredná časť mena';
$labels['nameprefix'] = 'Titul';
$labels['namesuffix'] = 'Dodatok za menom';
$labels['nickname'] = 'Prezývka';
$labels['jobtitle'] = 'Označenie povolania';
$labels['department'] = 'Oddelenie/firma/zastúpenie';
$labels['gender'] = 'Pohlavie';
$labels['maidenname'] = 'Rodné priezvisko';
$labels['email'] = 'E-mail';
$labels['phone'] = 'Telefón';
$labels['address'] = 'Adresa';
$labels['street'] = 'Ulica';
$labels['locality'] = 'Mesto';
$labels['zipcode'] = 'PSČ';
$labels['region'] = 'Región';
$labels['country'] = 'Krajina';
$labels['birthday'] = 'Narodeniny';
$labels['anniversary'] = 'Výročie';
$labels['website'] = 'Internetová stránka';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Poznámky';
$labels['male'] = 'muž';
$labels['female'] = 'žena';
$labels['manager'] = 'Manažér';
$labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Partner/ka';
$labels['allfields'] = 'Všetky polia';
$labels['search'] = 'Hľadať';
$labels['searchresult'] = 'Výsledok vyhľadávania';
$labels['advsearch'] = 'Rozšírené vyhľadávanie';
$labels['advanced'] = 'Rozšírené';
$labels['other'] = 'Ostatné';
$labels['printcontact'] = 'Vytlačiť kontakt';
$labels['qrcode'] = 'QR kód';
$labels['typehome'] = 'Domov';
$labels['typework'] = 'Práca';
$labels['typeother'] = 'Iné';
$labels['typemobile'] = 'Mobilný telefón';
$labels['typemain'] = 'Hlavné číslo';
$labels['typehomefax'] = 'Fax - domov';
$labels['typeworkfax'] = 'Fax - práca';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Domovská stránka';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Pridať pole...';
$labels['addcontact'] = 'Pridať kontakt';
$labels['editcontact'] = 'Upraviť kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Vlastnosti kontaktu';
$labels['contactnameandorg'] = 'Názov a organizácia';
$labels['personalinfo'] = 'Osobné informácie';
$labels['personal'] = 'Osobné';
$labels['contactphoto'] = 'Fotografia kontaktu';
$labels['edit'] = 'Upraviť';
$labels['cancel'] = 'Zrušiť';
$labels['save'] = 'Uložiť';
$labels['delete'] = 'Vymazať';
$labels['discard'] = 'Vyhodiť';
$labels['continue'] = 'Pokračovať';
$labels['ok'] = 'OK';
$labels['rename'] = 'Premenovať';
$labels['addphoto'] = 'Pridať fotografiu';
$labels['replacephoto'] = 'Nahradiť fotografiu';
$labels['uploadphoto'] = 'Nahrať fotografiu';
$labels['choosefile'] = 'Vybrať súbor...';
$labels['choosefiles'] = 'Vybrať súbory...';
$labels['browse'] = 'Prehľadávať';
$labels['newcontact'] = 'Vytvoriť nový kontakt';
$labels['deletecontact'] = 'Vymazať vybrané kontakty';
$labels['composeto'] = 'Vytvoriť správu pre';
$labels['contactsfromto'] = 'Kontakty: $from – $to, z $count';
$labels['print'] = 'Tlač';
$labels['export'] = 'Exportovať';
$labels['exportall'] = 'Exportovať všetko';
$labels['exportsel'] = 'Exportovať vybrané';
$labels['exportvcards'] = 'Exportovať kontakty vo formáte vCard';
$labels['newgroup'] = 'Vytvoriť novú skupinu';
$labels['addgroup'] = 'Pridať skupinu';
$labels['grouprename'] = 'Premenovať skupinu';
$labels['groupdelete'] = 'Vymazať skupinu';
$labels['groupassign'] = 'Prideliť k skupine...';
$labels['groupremove'] = 'Odstrániť zo skupiny';
$labels['groupremoveselected'] = 'Odstrániť vybrané kontakty zo skupiny';
$labels['uponelevel'] = 'O jednu úroveň nahor';
$labels['previouspage'] = 'Zobraziť predchádzajúcu stranu';
$labels['firstpage'] = 'Zobraziť prvú stranu';
$labels['nextpage'] = 'Zobraziť nasledujúcu stranu';
$labels['lastpage'] = 'Zobraziť poslednú stranu';
$labels['group'] = 'Skupina';
$labels['groups'] = 'Skupiny';
$labels['listgroup'] = 'Zoznam členov skupiny';
$labels['personaladrbook'] = 'Osobné adresy';
$labels['searchsave'] = 'Uložiť výsledky vyhľadávania';
$labels['searchdelete'] = 'Vymazať výsledky vyhľadávania';
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Importovať kontakty';
$labels['importfromfile'] = 'Importovať zo súboru';
$labels['importtarget'] = 'Pridať kontakty do';
$labels['importreplace'] = 'Nahradiť celý adresár kontaktov';
$labels['importgroups'] = 'Importovať priradenia do skupín';
$labels['importgroupsall'] = 'Všetky (vytvoriť skupiny ak je to potrebné)';
$labels['importgroupsexisting'] = 'Len pre existujúce skupiny';
$labels['importdesc'] = 'Môžete nahrať kontakty z existujúceho adresára. <br/>Momentálne podporujeme import adries z formátu <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> alebo CSV (údaje oddeľované čiarkou).';
$labels['importmapdesc'] = 'Skôr než budete pokračovať v importovaní údajov vo formáte CSV (údaje oddeľované čiarkou), potvrďte správnosť informácie o priradení polí.';
$labels['fieldnotmapped'] = 'Pole nie je priradené (neimportuje sa)';
$labels['skipheader'] = 'Neimportovať prvý riadok (hlavičky)';
$labels['done'] = 'Hotovo';
$labels['settingsfor'] = 'Nastavenia pre';
$labels['about'] = 'O systéme';
$labels['preferences'] = 'Nastavenia';
$labels['userpreferences'] = 'Používateľské nastavenia';
$labels['editpreferences'] = 'Upraviť používateľské nastavenia';
$labels['identities'] = 'Identity';
$labels['manageidentities'] = 'Spravovať identity';
$labels['newidentity'] = 'Vytvoriť novú identitu';
$labels['addidentity'] = 'Pridať identitu';
$labels['editidentity'] = 'Upraviť identitu';
$labels['identityencryption'] = 'Šifrovanie';
$labels['preferhtml'] = 'Zobraziť HTML';
$labels['defaultcharset'] = 'Predvolené kódovanie';
$labels['htmlmessage'] = 'HTML správa';
$labels['messagepart'] = 'Časť';
$labels['digitalsig'] = 'Digitálny podpis';
$labels['dateformat'] = 'Formát dátumu';
$labels['timeformat'] = 'Formát času';
$labels['prettydate'] = 'Krátke formáty dátumov';
$labels['setdefault'] = 'Nastaviť ako štandardné';
$labels['autodetect'] = 'Automaticky';
$labels['language'] = 'Jazyk';
$labels['timezone'] = 'Časová zóna';
$labels['pagesize'] = 'Počet záznamov na stránku';
$labels['signature'] = 'Podpis';
$labels['dstactive'] = 'Letný čas';
$labels['showinextwin'] = 'Otvoriť správu v novom okne';
$labels['composeextwin'] = 'Písať v novom okne';
$labels['htmleditor'] = 'Vytvárať HTML správy';
$labels['htmlonreply'] = 'len v odpovedi na HTML správu';
$labels['htmlonreplyandforward'] = 'pri odosielaní ďalej alebo pri odpovedi na HTML správu';
$labels['htmlsignature'] = 'HTML podpis';
$labels['showemail'] = 'Zobrazovať e-mailovú adresu so zobrazovaným menom';
$labels['previewpane'] = 'Zobraziť panel s náhľadom na správu';
$labels['skin'] = 'Vzhľad rozhrania';
$labels['logoutclear'] = 'Vyprázdniť kôš pri odhlásení';
$labels['logoutcompact'] = 'Zhustiť priečinok Doručená pošta pri odhlásení';
$labels['uisettings'] = 'Používateľské rozhranie';
$labels['serversettings'] = 'Nastavenia servera';
$labels['mailboxview'] = 'Zobrazenie schránky';
$labels['mdnrequests'] = 'Pri žiadosti o potvrdenie o doručení';
$labels['askuser'] = 'opýtať sa používateľa';
$labels['autosend'] = 'odoslať potvrdenie';
$labels['autosendknown'] = 'odoslať potvrdenie iba mojim kontaktom';
$labels['autosendknownignore'] = 'odoslať potvrdenie známym odosielateľom, inak ignorovať';
$labels['autosendtrusted'] = 'odoslať potvrdenie dôveryhodným odosielateľom, inak sa ma opýtať';
$labels['autosendtrustedignore'] = 'odoslať potvrdenie dôveryhodným odosielateľom, inak ignorovať';
$labels['ignorerequest'] = 'ignorovať požiadavku';
$labels['readwhendeleted'] = 'Označiť správu ako prečítanú pri jej vymazávaní';
$labels['flagfordeletion'] = 'Namiesto vymazania správy ju iba označiť ako vymazanú';
$labels['skipdeleted'] = 'Nezobrazovať vymazané správy';
$labels['deletealways'] = 'Vymazať správy, ak zlyhá ich presun do koša';
$labels['deletejunk'] = 'Hneď vymazávať správy v priečinku Nevyžiadaná pošta (spam)';
$labels['showremoteimages'] = 'Zobrazovať obrázky uložené mimo správy';
$labels['allowremoteresources'] = 'Povoliť vzdialené zdroje (obrázky, štýly)';
$labels['fromknownsenders'] = 'pri známych odosielateľoch';
$labels['fromtrustedsenders'] = 'od dôveryhodných odosielateľov';
$labels['frommycontacts'] = 'od mojich kontaktov';
$labels['always'] = 'vždy';
$labels['alwaysbutplain'] = 'vždy, okrem odpovedí na správy v čistom texte';
$labels['showinlineimages'] = 'Zobrazovať priložené obrázky pod správou';
$labels['autosavedraft'] = 'Automaticky uložiť koncept';
$labels['everynminutes'] = 'každých $n minút';
$labels['refreshinterval'] = 'Obnoviť (skontrolovať nové správy atď.)';
$labels['never'] = 'nikdy';
$labels['immediately'] = 'ihneď';
$labels['messagesdisplaying'] = 'Zobrazovanie správ';
$labels['messagescomposition'] = 'Vytváranie správ';
$labels['mimeparamfolding'] = 'Názvy príloh';
$labels['2231folding'] = 'Úplné RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Úplné RFC 2047 (iné)';
$labels['force7bit'] = 'Použiť kódovanie MIME pre 8-bitové znaky';
$labels['savelocalstorage'] = "Uložiť v lokálnom úložisku prehliadača (dočasne)";
$labels['advancedoptions'] = 'Rozšírené nastavenia';
$labels['toggleadvancedoptions'] = 'Prepnúť pokročilé nastavenia';
$labels['focusonnewmessage'] = 'Aktivovať okno prehliadača pri novej správe';
$labels['checkallfolders'] = 'Kontrolovať nové správy vo všetkých priečinkoch';
$labels['displaynext'] = 'Po vymazaní/presune zobraziť ďalší záznam v zozname';
$labels['defaultfont'] = 'Predvolené písmo pre HTML správu';
$labels['mainoptions'] = 'Hlavné nastavenia';
$labels['browseroptions'] = 'Nastavenia prehliadania';
$labels['section'] = 'Sekcia';
$labels['maintenance'] = 'Údržba';
$labels['newmessage'] = 'Nová správa';
$labels['signatureoptions'] = 'Nastavenia podpísania';
$labels['whenreplying'] = 'Pri odpovedi';
$labels['replyempty'] = 'necitovať pôvodnú správu';
$labels['replytopposting'] = 'začať odpoveď nad citovanou správou';
$labels['replytoppostingnoindent'] = 'začať odpoveď nad citovanou správou (bez odsadenia)';
$labels['replybottomposting'] = 'začať odpoveď pod citovanou správou';
$labels['replyremovesignature'] = 'Pri odpovedaní odstrániť zo správy pôvodný podpis';
$labels['autoaddsignature'] = 'Automaticky pridať podpis';
$labels['newmessageonly'] = 'iba k novým správam';
$labels['replyandforwardonly'] = 'iba k odpovediam a preposielaným správam';
$labels['insertsignature'] = 'Vložiť podpis';
$labels['sigbelow'] = 'Podpis umiestniť pod citovanú správu';
$labels['sigseparator'] = 'Vynútiť si štandardné oddeľovače v podpisoch';
$labels['automarkread'] = 'Označiť správy ako prečítané';
$labels['afternseconds'] = 'po $n sekundách';
$labels['reqmdn'] = 'Vždy vyžadovať potvrdenie o doručení';
$labels['reqdsn'] = 'Vždy vyžadovať oznámenie o stave doručenia';
$labels['replysamefolder'] = 'Umiestňovať odpovede do rovnakého priečinka ako pôvodnú správu';
$labels['defaultabook'] = 'Predvolený adresár kontaktov';
$labels['autocompletesingle'] = 'Vynechať alternatívne e-mailové adresy pri automatickom dopĺňaní';
$labels['listnamedisplay'] = 'Zobraziť kontakty ako';
$labels['contactformmode'] = 'Režim kontaktného formulára';
$labels['privatemode'] = 'Súkromný (doma)';
$labels['businessmode'] = 'Biznisový (práca)';
$labels['collectedaddresses'] = 'Zozbierané adresy';
$labels['collectedrecipients'] = 'Zozbieraní príjemcovia';
$labels['collectedrecipientsopt'] = 'Ukladať príjemcov odchádzajúcich e-mailov do';
$labels['collectedsendersopt'] = 'Ukladať dôveryhodných odosielateľov do';
$labels['trustedsenders'] = 'Dôveryhodní odosielatelia';
$labels['spellcheckbeforesend'] = 'Skontrolovať pravopis pred odoslaním správy';
$labels['spellcheckoptions'] = 'Nastavenia kontroly pravopisu';
$labels['spellcheckignoresyms'] = 'Ignorovať slová so symbolmi';
$labels['spellcheckignorenums'] = 'Ignorovať slová s číslami';
$labels['spellcheckignorecaps'] = 'Ignorovať slová písané iba veľkými písmenami';
$labels['addtodict'] = 'Pridať do slovníka';
$labels['mailtoprotohandler'] = 'Zaregistrovať priradenie pre odkazy typu „mailto:“';
$labels['standardwindows'] = 'S vyskakovacími oknami pracovať ako so štandardnými oknami';
$labels['forwardmode'] = 'Odosielanie správ ďalej';
$labels['inline'] = 'vo vnútri správy';
$labels['asattachment'] = 'ako príloha';
$labels['replyallmode'] = 'Predvolená akcia pre tlačidlo [Odpovedať všetkým]';
$labels['replyalldefault'] = 'odpovedať všetkým';
$labels['replyalllist'] = 'odpovedať len do mailing-listu (ak bol nájdený)';
$labels['allmessages'] = 'všetky správy';
$labels['olderxdays'] = 'staršie ako $x dní';
$labels['folder'] = 'Priečinok';
$labels['folders'] = 'Priečinky';
$labels['foldername'] = 'Názov priečinka';
$labels['subscribed'] = 'Odber aktívny';
$labels['messagecount'] = 'Správy';
$labels['create'] = 'Vytvoriť';
$labels['createfolder'] = 'Vytvoriť nový priečinok';
$labels['managefolders'] = 'Spravovať priečinky';
$labels['specialfolders'] = 'Špeciálne priečinky';
$labels['properties'] = 'Vlastnosti';
$labels['folderproperties'] = 'Vlastnosti priečinka';
$labels['parentfolder'] = 'Rodičovský priečinok';
$labels['location'] = 'Umiestnenie';
$labels['info'] = 'Informácia';
$labels['getfoldersize'] = 'Na zistenie veľkosti priečinka kliknite sem';
$labels['changesubscription'] = 'Na zmenu odberu kliknite sem';
$labels['foldertype'] = 'Typ priečinka';
$labels['personalfolder'] = 'Súkromný priečinok';
$labels['otherfolder'] = 'Iné priečinky používateľa';
$labels['sharedfolder'] = 'Verejný priečinok';
$labels['findfolders'] = 'Hľadať priečinky';
$labels['findcontacts'] = 'Nájsť kontakty';
$labels['findmail'] = 'Nájsť e-mailové správy';
$labels['namespace.personal'] = 'Osobné';
$labels['namespace.other'] = 'Iní používatelia';
$labels['namespace.shared'] = 'Zdieľané';
$labels['dualuselabel'] = 'Môže obsahovať len';
$labels['dualusemail'] = 'spr.';
$labels['dualusefolder'] = 'prieč.';
$labels['generate'] = 'Vygenerovať';
$labels['encryptioncreatekey'] = 'Vytvoriť nový pár kľúčov';
$labels['openmailvelopesettings'] = 'Otvoriť nastavenia Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Vo vašej súprave kľúčov Mailvelope máte uložených $nr zodpovedajúcich súkromných kľúčov.';
$labels['encryptionnoprivkeysinmailvelope'] = 'Pre túto identitu odosielateľa ešte nemáte v rozšírení Mailvelope uložený žiadny súkromný kľúč PGP. Chcete nejaký vytvoriť, aby bolo možné aktivovať posielanie zašifrovaných správ?';
$labels['encryption'] = 'Šifrovanie';
$labels['mailvelopeoptions'] = 'Možnosti Mailvelope';
$labels['mailvelopemainkeyring'] = 'Použiť hlavnú kľúčenku Mailvelope';
$labels['mailvelopenotfound'] = 'Vo vašom prehliadači nie je zapnuté/nainštalovať rozšírenie Mailvelope.';
$labels['sortby'] = 'Zoradiť podľa';
$labels['sortasc'] = 'Zoradiť vzostupne';
$labels['sortdesc'] = 'Zoradiť zostupne';
$labels['undo'] = 'Späť';
$labels['installedplugins'] = 'Nainštalované prídavné moduly';
$labels['plugin'] = 'Zásuvný modul';
$labels['version'] = 'Verzia';
$labels['source'] = 'Zdrojový kód';
$labels['destination'] = 'Cieľ';
$labels['license'] = 'Licencia';
$labels['support'] = 'Podpora';
$labels['savedsearches'] = 'Uložené vyhľadávania';
$labels['dateformatY'] = 'RRRR';
$labels['dateformaty'] = 'RR';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angličtina';
$labels['westerneuropean'] = 'Západoeurópske';
$labels['easterneuropean'] = 'Východoeurópske';
$labels['southeasterneuropean'] = 'Juho-východná Európa';
$labels['baltic'] = 'Baltština';
$labels['cyrillic'] = 'Cyrilika';
$labels['arabic'] = 'Arabsky';
$labels['greek'] = 'Grécky';
$labels['hebrew'] = 'Hebrejsky';
$labels['turkish'] = 'Turecky';
$labels['nordic'] = 'Nórsky';
$labels['thai'] = 'Thajsky';
$labels['celtic'] = 'Keltština';
$labels['vietnamese'] = 'Vietnamčina';
$labels['japanese'] = 'Japonsky';
$labels['korean'] = 'Kórejsky';
$labels['chinese'] = 'Čínsky';
$labels['arialabeltopnav'] = 'Ovládanie okna';
$labels['arialabeltasknav'] = 'Úlohy aplikácie';
$labels['arialabeltoolbar'] = 'Panel nástrojov aplikácie';
$labels['arialabellistnav'] = 'Zoznam navigovania';
$labels['arialabelactivetask'] = 'Aktívna úloha';
$labels['arialabelmessagessearchfilter'] = 'Filter zoznamu e-mailov';
$labels['arialabelmailsearchform'] = 'Formulár pre vyhľadanie e-mailu';
$labels['arialabelcontactsearchform'] = 'Formulár pre vyhľadávanie kontaktov';
$labels['arialabelmailquicksearchbox'] = 'Vstup pre vyhľadávanie e-mailu';
$labels['arialabelquicksearchbox'] = 'Vstup pre vyhľadávanie';
$labels['arialabelfoldersearchfilter'] = 'Filter pre zoznam priečinkov';
$labels['arialabelfoldersearchform'] = 'Formulár pre vyhľadávanie priečinkov';
$labels['arialabelfolderlist'] = 'Výber priečinka s e-mailovými správami';
$labels['arialabelmessagelist'] = 'Zoznam e-mailových správ';
$labels['arialabelmailpreviewframe'] = 'Náhľad správy';
$labels['arialabelmailboxmenu'] = 'Menu akcií pre priečinok';
$labels['arialabellistselectmenu'] = 'Menu pre výber zoznamu';
$labels['arialabelthreadselectmenu'] = 'Menu pre zoznam vlákien';
$labels['arialabelmessagelistoptions'] = 'Nastavenia zobrazenia a triedenia zoznamu správ';
$labels['arialabelmailimportdialog'] = 'Dialóg pre import správy';
$labels['arialabelmessagenav'] = 'Navigácia správy';
$labels['arialabelmessagebody'] = 'Telo správy';
$labels['arialabelmessageactions'] = 'Akcie správy';
$labels['arialabelcontactquicksearch'] = 'Formulár pre vyhľadanie kontaktov';
$labels['arialabelcontactsearchbox'] = 'Vstup pre vyhľadávanie kontaktov';
$labels['arialabelmessageheaders'] = 'Hlavičky správ';
$labels['arialabelforwardingoptions'] = 'Nastavenia preposielania';
$labels['arialabelreplyalloptions'] = 'Nastavenia pre „Odpovedať všetkým“';
$labels['arialabelmoremessageactions'] = 'Viac akcií so správou';
$labels['arialabelmorecontactactions'] = 'Viac akcií pre kontakt';
$labels['arialabelmarkmessagesas'] = 'Označiť vybrané správy ako';
$labels['arialabelcomposeoptions'] = 'Nastavenia kompozície';
$labels['arialabelresponsesmenu'] = 'Menu pre preddefinované odpovede';
$labels['arialabelattachmentuploadform'] = 'Formulár pre odoslanie prílohy';
$labels['arialabelattachmentmenu'] = 'Nastavenia prílohy';
$labels['arialabelmailtomenu'] = 'Možnosti pre e-mailovú adresu';
$labels['arialabelattachmentpreview'] = 'Náhľad prílohy';
$labels['ariasummarycomposecontacts'] = 'Zoznam kontaktov a skupín pre výber príjemcov';
$labels['arialabelcontactexportoptions'] = 'Nastavenia exportu kontaktov';
$labels['arialabelabookgroupoptions'] = 'Nastavenia adresára/skupiny';
$labels['arialabelpreferencesform'] = 'Formulár s nastaveniami';
$labels['arialabelidentityeditfrom'] = 'Formulár pre úpravu identity';
$labels['arialabelresponseeditfrom'] = 'Formulár pre úpravu odpovede';
$labels['arialabelsearchterms'] = 'Vyhľadávanie položiek';
$labels['arialabeldropactionmenu'] = 'Menu akcií typu Ťahaj a pusť';
$labels['arialabelheadersmenu'] = 'Menu pre pridanie príjemcu (hlavičky)';
$labels['arialabelimagetools'] = 'Nástroje pre obrázok';
$labels['helplistnavigation'] = 'Zoznam navigovania pomocou klávesnice';
$labels['helplistkeyboardnavigation'] = "Šípky nahor/nadol: presunúť zvýraznenie/výber.
Medzerník: vybrať zvýraznený riadok.
Shift + nahor/nadol: vybrať ďalší riadok hore/dole.
Ctrl + medzerník: pridať zvýraznený riadok do výberu/odstrániť ho z výberu.";
$labels['helplistkeyboardnavmessages'] = "Šípky doprava/doľava: rozbaliť/zbaliť vlákno správy (len v režime pre vlákna).
Enter: otvoriť vybranú/zvýraznenú správu.
Delete: presunúť vybrané správy do koša.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Otvoriť vybraný/zvýraznený kontakt.";
localization/sk_SK/messages.inc000064400000045146151727150560012573 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Vyskytla sa chyba!';
$messages['loginfailed']  = 'Prihlasovanie bolo neúspešné.';
$messages['cookiesdisabled'] = 'Váš internetový prehliadač nepodporuje cookies, ktoré sú potrebné na prihlásenie.';
$messages['sessionerror'] = 'Vaša relácia nie je platná alebo vypršala jej platnosť.';
$messages['cookiesmismatch'] = 'Bola zistená nezhoda cookie. Prosím vyčistite súbory cookies vo vašom prehliadači.';
$messages['storageerror'] = 'Nepodarilo sa spojiť s úložným serverom.';
$messages['servererror'] = 'Chyba servera!';
$messages['servererrormsg'] = 'Chyba servera: $msg';
$messages['accountlocked'] = 'Bolo vykonaných príliš veľa neúspešných pokusov o prihlásenie. Skúste to prosím neskôr.';
$messages['connerror'] = 'Chyba pri pripájaní (nepodarilo sa spojiť so serverom)!';
$messages['dberror'] = 'Chyba databázy!';
$messages['dbconnerror'] = 'Nemožno sa pripojiť k databáze!';
$messages['windowopenerror'] = 'Bolo zablokované vyskakovacie okno!';
$messages['requesttimedout'] = 'Čas na vykonanie požiadavky uplynul';
$messages['errorreadonly'] = 'Akciu nemožno vykonať. Priečinok je určený len na čítanie.';
$messages['errornoperm'] = 'Akciu nemožno vykonať. Prístup bol odmietnutý.';
$messages['erroroverquota'] = 'Akciu nemožno vykonať. Nie je dostatok voľného miesta.';
$messages['erroroverquotadelete'] = 'Nie je dostatok voľného miesta. Vymažte nejakú správu pomocou klávesov SHIFT+DEL.';
$messages['invalidrequest'] = 'Neplatná požiadavka! Neuložili sa žiadne údaje.';
$messages['invalidhost'] = 'Neplatný názov servera.';
$messages['nomessagesfound'] = 'V tomto priečinku nie je žiadna správa.';
$messages['loggedout'] = 'Relácia bola úspešne prerušená. Dovidenia!';
$messages['mailboxempty'] = 'Schránka je prázdna';
$messages['nomessages'] = 'Žiadne správy';
$messages['refreshing'] = 'Obnovuje sa...';
$messages['loading'] = 'Načítava sa...';
$messages['uploading'] = 'Nahráva sa súbor...';
$messages['attaching'] = 'Prikladá sa súbor...';
$messages['uploadingmany'] = 'Nahrávajú sa súbory...';
$messages['loadingdata'] = 'Načítavajú sa údaje...';
$messages['checkingmail'] = 'Kontrolujú sa nové správy...';
$messages['sendingmessage'] = 'Správa sa odosiela...';
$messages['messagesent'] = 'Správa bola úspešne odoslaná.';
$messages['savingmessage'] = 'Správa sa ukladá...';
$messages['messagesaved'] = 'Správa bola uložená ako koncept.';
$messages['successfullysaved'] = 'Ukladanie bolo úspešne dokončené.';
$messages['savingresponse'] = 'Ukladanie textu odpovede...';
$messages['deleteresponseconfirm'] = 'Naozaj chcete vymazať text odpovede?';
$messages['nocontactselected'] = 'Ešte ste nevybrali žiadny kontakt.';
$messages['addedsuccessfully'] = 'Kontakt bol pridaný do adresára.';
$messages['contactexists'] = 'Kontakt s takouto e-mailovou adresou už existuje.';
$messages['contactnameexists'] = 'Kontakt s takýmto menom už existuje.';
$messages['blockedimages'] = 'Kvôli ochrane vášho súkromia boli v tejto správe zablokované vzdialené obrázky.';
$messages['blockedresources'] = 'Kvôli ochrane vášho súkromia boli zablokované vzdialené zdroje údajov.';
$messages['suspiciousemail'] = 'Táto správa obsahuje podozrivé e-mailové adresy, ktoré môžu byť podvodné.';
$messages['bccemail'] = 'Správy odoslané ďalej obsahujú utajených príjemcov (skrytú kópiu).';
$messages['bouncehint'] = 'Správa sa odošle bez akýchkoľvek úprav, napríklad s použitím pôvodného tela, hlavičiek a príjemcov.';
$messages['encryptedmessage'] = 'Táto správa je zašifrovaná, a nie je možné ju zobraziť. Prepáčte!';
$messages['externalmessagedecryption'] = 'Táto správa je zašifrovaná a dešifrovať ju môžete pomocou rozšírenia vášho prehliadača.';
$messages['nopubkeyfor'] = 'Pre $email sa nenašiel žiadny platný verejný kľúč';
$messages['nopubkeyforsender'] = 'Pre vašu identitu odosielateľa sa nenašiel žiadny platný verejný kľúč. Chcete správu iba zašifrovať pre príjemcov?';
$messages['encryptnoattachments'] = 'Prílohy, ktoré ste už uložili na server, nie je možné zašifrovať. Prosím pridajte ich znovu, v editore pre šifrovanie.';
$messages['searchpubkeyservers'] = 'Chcete vyhľadať servery s verejným kľúčom pre chýbajúce kľúče?';
$messages['encryptpubkeysfound'] = 'Našli sa nasledujúce verejné kľúče:';
$messages['keyservererror'] = 'Nepodarilo sa získať kľúč zo servera pre kľúče.';
$messages['keyimportsuccess'] = 'Verejný kľúč $key bol úspešne importovaný do okruhu vašich kľúčov.';
$messages['nocontactsfound'] = 'Nenašli sa žiadne kontakty.';
$messages['contactnotfound'] = 'Požadovaný kontakt sa nenašiel.';
$messages['contactsearchonly'] = 'Ak chcete vidieť kontakty z vybraného adresára, musíte použiť vyhľadávací formulár.';
$messages['sendingfailed'] = 'Nepodarilo sa odoslať správu.';
$messages['senttooquickly'] = 'Počkajte $sec sekúnd pred odoslaním tejto správy.';
$messages['errorsavingsent'] = 'Počas ukladania odoslanej správy sa vyskytla chyba.';
$messages['errorsaving'] = 'Počas ukladania sa vyskytla chyba.';
$messages['errormoving'] = 'Správu/správy nemožno presunúť.';
$messages['errorcopying'] = 'Správu/správy nemožno skopírovať,';
$messages['errordeleting'] = 'Správu/správy nemožno vymazať.';
$messages['errormarking'] = 'Nemožno označiť správu/správy.';
$messages['alerttitle'] = 'Pozor';
$messages['confirmationtitle'] = 'Naozaj...';
$messages['deletecontactconfirm']  = 'Naozaj chcete vymazať vybrané kontakty?';
$messages['deletegroupconfirm']  = 'Naozaj chcete vymazať vybranú skupinu?';
$messages['deletemessagesconfirm'] = 'Naozaj chcete vymazať vybrané správy?';
$messages['deletefolderconfirm']  = 'Naozaj chcete vymazať tento priečinok?';
$messages['movefolderconfirm']  = 'Naozaj chcete presunúť tento priečinok?';
$messages['purgefolderconfirm']  = 'Naozaj chcete vyprázdniť tento priečinok?';
$messages['contactdeleting'] = 'Vymazávajú sa kontakty...';
$messages['groupdeleting'] = 'Vymazáva sa skupina...';
$messages['folderdeleting'] = 'Vymazáva sa priečinok ...';
$messages['foldermoving'] = 'Presúva sa priečinok...';
$messages['foldersubscribing'] = 'Prebieha prihlasovanie k priečinku...';
$messages['folderunsubscribing'] = 'Prebieha odhlasovanie z priečinka...';
$messages['formincomplete'] = 'Formulár nie je kompletne vyplnený.';
$messages['noemailwarning'] = 'Prosím zadajte platnú e-mailovú adresu.';
$messages['nonamewarning']  = 'Prosím zadajte meno.';
$messages['nopagesizewarning'] = 'Prosím zadajte počet záznamov na stranu.';
$messages['nosenderwarning'] = 'Prosím zadajte e-mailovú adresu odosielateľa.';
$messages['recipientsadded'] = 'Pridanie príjemcu/príjemcov bolo úspešné.';
$messages['norecipientwarning'] = 'Prosím zadajte aspoň jedného príjemcu.';
$messages['disclosedrecipwarning'] = 'Všetci používatelia navzájom uvidia svoje e-mailové adresy. Ak si to neželáte a chcete chrániť ich súkromie, použite pole Skrytá kópia.';
$messages['disclosedreciptitle'] = 'Priveľa verejných príjemcov';
$messages['nosubjectwarning']  = '"Predmet" správy je prázdny. Chcete ho teraz zadať?';
$messages['nosubjecttitle']  = 'Bez predmetu';
$messages['nobodywarning'] = 'Chcete odoslať správu bez textu?';
$messages['notsentwarning'] = 'Správa nebola odoslaná a obsahuje neuložené zmeny. Chcete vykonané zmeny zrušiť?';
$messages['restoresavedcomposedata'] = 'Našla sa staršia správa, ktorú ste napísali ale neodoslali.\n\nPredmet: $subject\nUložené: $date\n\nChcete túto správu obnoviť?';
$messages['nosearchname'] = 'Prosím zadajte meno alebo e-mailovú adresu kontaktu.';
$messages['notuploadedwarning'] = 'Ešte neboli nahrané všetky súbory. Prosím čakajte alebo nahrávanie zrušte.';
$messages['searchsuccessful'] = 'Nájdené správy: $nr.';
$messages['contactsearchsuccessful'] = 'Nájdené kontakty: $nr.';
$messages['searchnomatch'] = 'Hľadaný výraz sa nenašiel.';
$messages['searching'] = 'Vyhľadáva sa...';
$messages['checking'] = 'Kontroluje sa...';
$messages['stillsearching'] = 'Vyhľadávanie stále prebieha...';
$messages['nospellerrors'] = 'Pri kontrole pravopisu neboli nájdené chyby.';
$messages['folderdeleted'] = 'Priečinok bol úspešne vymazaný.';
$messages['foldersubscribed'] = 'Prihlásenie k priečinku bolo úspešné.';
$messages['folderunsubscribed'] = 'Odhlásenie z priečinka bolo úspešné.';
$messages['folderpurged'] = 'Priečinok bol úspešne vyprázdnený.';
$messages['folderexpunged'] = 'Priečinok bol úspešne skomprimovaný.';
$messages['deletedsuccessfully'] = 'Vymazanie bolo úspešné.';
$messages['converting'] = 'Odstraňuje sa formátovanie...';
$messages['messageopenerror'] = 'Správu nemožno načítať zo servera.';
$messages['filelinkerror'] = 'Nepodarilo sa priložiť súbor.';
$messages['fileuploaderror'] = 'Nahrávanie súboru bolo neúspešné.';
$messages['csvfilemismatch'] = 'Import viacerých súborov CSV s rôznymi poliami nie je podporovaný.';
$messages['filesizeerror'] = 'Nahraný súbor prekročil maximálnu veľkosť $size.';
$messages['filecounterror'] = 'Naraz je možné vykonať upload max. $count súborov.';
$messages['msgsizeerror'] = 'Nepodarilo sa pripojiť súbor. Bola prekročená max. veľkosť správy ($size).';
$messages['msgsizeerrorfwd'] = 'Došlo k prekročeniu maximálnej veľkosti správy ($size). Počet správ, ktoré neboli pripojené: $num.';
$messages['copysuccess'] = 'Počet úspešne skopírovaných kontaktov: $nr.';
$messages['movesuccess'] = 'Počet úspešne presunutých kontaktov: $nr.';
$messages['copyerror'] = 'Kontakty nemožno kopírovať.';
$messages['moveerror'] = 'Kontakty nemožno presúvať.';
$messages['sourceisreadonly'] = 'Tento zdroj adries je určený len na čítanie.';
$messages['errorsavingcontact'] = 'Zmeny nebolo možné uložiť.';
$messages['movingmessage'] = 'Prebieha presúvanie správ(y)...';
$messages['copyingmessage'] = 'Prebieha kopírovanie správ(y)...';
$messages['copyingcontact'] = 'Prebieha kopírovanie kontaktov...';
$messages['movingcontact'] = 'Presúvanie kontaktov...';
$messages['deletingmessage'] = 'Prebieha vymazávanie správ(y)...';
$messages['markingmessage'] = 'Prebieha označovanie správ(y)...';
$messages['addingmember'] = 'Prebieha pridávanie kontaktov do skupiny...';
$messages['removingmember'] = 'Prebieha odstraňovanie kontaktov zo skupiny...';
$messages['receiptsent'] = 'Potvrdenie o prečítaní bolo odoslané.';
$messages['errorsendingreceipt'] = 'Potvrdenie nemožno odoslať.';
$messages['deleteidentityconfirm'] = 'Naozaj chcete vymazať túto identitu?';
$messages['nodeletelastidentity'] = 'Túto identitu nemožno vymazať, pretože je posledná.';
$messages['forbiddencharacter'] = 'Názov priečinka obsahuje nepovolený znak.';
$messages['selectimportfile'] = 'Zvoľte súbor, ktorý chcete importovať na server.';
$messages['addresswriterror'] = 'Do vybraného adresára nie je možné zapisovať údaje.';
$messages['contactaddedtogroup'] = 'Kontakty boli úspešne pridané do tejto skupiny.';
$messages['contactremovedfromgroup'] = 'Kontakty boli úspešne odstránené z tejto skupiny.';
$messages['nogroupassignmentschanged'] = 'Priradenia do skupín sa nezmenili.';
$messages['importwait'] = 'Prebieha importovanie, prosím čakajte...';
$messages['importformaterror'] = 'Importovanie nebolo úspešné! Nahraný súbor nie je platným súborom údajov pre importovanie.';
$messages['importconfirm'] = '<b>Počet úspešne naimportovaných kontaktov: $inserted</b>';
$messages['importconfirmskipped'] = '<b>Počet preskočených existujúcich záznamov: $skipped</b>';
$messages['importmessagesuccess'] = 'Počet úspešne naimportovaných správ: $nr';
$messages['importmessageerror'] = 'Importovanie bolo neúspešné! Odoslaný súbor nie je platným súborom pre importovanie';
$messages['opnotpermitted'] = 'Táto operácia nie je povolená!';
$messages['nofromaddress'] = 'Vo vybranej identite chýba e-mailová adresa.';
$messages['editorwarning'] = 'Prepnutie druhu editora môže spôsobiť stratu formátovania. Naozaj chcete pokračovať?';
$messages['httpreceivedencrypterror'] = 'Vyskytla sa vážna chyba v konfigurácii. Ihneď kontaktujte administrátora. <b>Vašu správu nemožno odoslať.</b>';
$messages['smtpconnerror'] = 'Chyba SMTP ($code): Neúspešné pripojenie k serveru.';
$messages['smtpautherror'] = 'Chyba SMTP ($code): Neúspešná autentifikácia.';
$messages['smtpfromerror'] = 'Chyba SMTP ($code): Nemožno nastaviť odosielateľa "$from" ($msg).';
$messages['smtptoerror'] = 'Chyba SMTP ($code): Nemožno pridať príjemcu "$to" ($msg).';
$messages['smtprecipientserror'] = 'Chyba SMTP: Nemožno spracovať zoznam príjemcov.';
$messages['smtputf8error'] = 'Chyba SMTP: server nepodporuje Unicode v e-mailovej adrese.';
$messages['smtpsizeerror'] = 'Chyba SMTP: veľkosť správy presahuje limit servera ($limit)';
$messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
$messages['toomanyrecipients'] = 'Príliš veľa príjemcov. Zredukujte počet príjemcov na $max.';
$messages['maxgroupmembersreached'] = 'Počet členov skupiny prekračuje maximum: $max';
$messages['internalerror'] = 'Došlo k internej chybe systému. Prosím skúste to ešte raz.';
$messages['contactdelerror'] = 'Nemožno vymazať kontakt(y).';
$messages['contactdeleted'] = 'Kontakty boli úspešne vymazané.';
$messages['contactrestoreerror'] = 'Nemožno obnoviť vymazané kontakty.';
$messages['contactrestored'] = 'Kontakty boli úspešne obnovené.';
$messages['groupdeleted'] = 'Skupina bola úspešne vymazaná.';
$messages['grouprenamed'] = 'Skupina bola úspešne premenovaná.';
$messages['groupcreated'] = 'Skupina bola úspešne vytvorená.';
$messages['savedsearchdeleted'] = 'Uložené výsledky vyhľadávania boli úspešne vymazané.';
$messages['savedsearchdeleteerror'] = 'Nemožno vymazať uložené výsledky vyhľadávania.';
$messages['savedsearchcreated'] = 'Uložené výsledky vyhľadávania boli úspešne vytvorené.';
$messages['savedsearchcreateerror'] = 'Nemožno vytvoriť uložené výsledky vyhľadávania.';
$messages['messagedeleted'] = 'Vymazanie správ(y) bolo úspešné.';
$messages['messagemoved'] = 'Presunutie správ(y) bolo úspešné.';
$messages['messagemovedtotrash'] = 'Presun správ(y) do koša bol úspešný.';
$messages['messagecopied'] = 'Kopírovanie správ(y) bolo úspešné.';
$messages['messagemarked'] = 'Označovanie správ(y) bolo úspešné.';
$messages['autocompletechars'] = 'Zadajte najmenej $min znakov pre automatické dopĺňanie.';
$messages['autocompletemore'] = 'Našlo sa viacero záznamov. Zadajte prosím viac znakov.';
$messages['namecannotbeempty'] = 'Meno nemôže byť prázdne.';
$messages['nametoolong'] = 'Meno je príliš dlhé.';
$messages['namedotforbidden'] = 'Názov priečinka nemôže začínať bodkou.';
$messages['folderupdated'] = 'Priečinok bol úspešne aktualizovaný.';
$messages['foldercreated'] = 'Priečinok bol úspešne vytvorený.';
$messages['invalidimageformat'] = 'Neplatný formát obrázka';
$messages['mispellingsfound'] = 'V správe boli nájdené pravopisné chyby.';
$messages['parentnotwritable'] = 'Nemožno vytvoriť/presunúť priečinok do vybraného rodičovského priečinka. Nemáte prístupové oprávnenia.';
$messages['messagetoobig'] = 'Časť správy je príliš veľká na spracovanie.';
$messages['attachmentvalidationerror'] = 'Táto príloha je podozrivá, pretože jej typ sa nezhoduje s typom deklarovaným v správe. Ak odosielateľovi nedôverujete, nemali by ste ju otvárať v prehliadači, pretože môže mať škodlivý obsah.<br/><br/><em>Očakávalo sa: $expected; našlo sa: $detected</em>';
$messages['noscriptwarning'] = 'Upozornenie: Táto webmailová služba vyžaduje Javascript! Ak ju chcete používať, prosím aktivujte Javascript v nastaveniach svojho prehliadača.';
$messages['messageissent'] = 'Správa už bola odoslaná, ešte však nebola uložená. Chcete ju uložiť teraz?';
$messages['errnotfound'] = 'Súbor sa nenašiel';
$messages['errnotfoundexplain'] = 'Požadovaný zdroj nebol nájdený!';
$messages['errfailedrequest'] = 'Neúspešná požiadavka';
$messages['errauthorizationfailed'] = 'Autorizácia bola neúspešná';
$messages['errunauthorizedexplain'] = 'Nebolo možné overiť vašu autorizáciu na prístup k tejto službe!';
$messages['errrequestcheckfailed'] = 'Kontrola požiadavky bola neúspešná';
$messages['errcsrfprotectionexplain'] = "Kvôli vašej bezpečnosti je prístup k tomuto zdroju zabezpečený proti útokom typu CSRF.\nAk vidíte túto správu, pravdepodobne ste sa neodhlásili pred opustením webovej aplikácie.\n\nPre pokračovanie je teraz potrebný zásah človeka.";
$messages['errcontactserveradmin'] = 'Prosím kontaktujte administrátora servera.';
$messages['clicktoresumesession'] = 'Ak chcete pokračovať v predchádzajúcej relácii, prosím kliknite sem';
$messages['errcomposesession'] = 'Chyba relácie pre vytváranie správy';
$messages['errcomposesessionexplain'] = 'Požadovaná relácia pre vytvorenie správy sa nenašla';
$messages['clicktocompose'] = 'Ak chcete vytvoriť novú správu, kliknite sem';
$messages['nosupporterror'] = 'Táto funkcia nie je podporovaná vaším webovým prehliadačom.';
$messages['siginserted'] = 'Podpis bol úspešne vložený.';
$messages['responseinserted'] = 'Odpoveď bola úspešne vložená.';
$messages['noresponsesavailable'] = 'Nie sú dostupné žiadne odpovede';
$messages['listempty'] = 'Zoznam je prázdny.';
$messages['listusebutton'] = 'Na pridanie nového záznamu použite tlačidlo Vytvoriť.';
$messages['keypaircreatesuccess'] = 'Pre identitu $identity bol úspešne vytvorený nový pár kľúčov.';
$messages['emptyattachment'] = 'Zdá sa, že táto príloha je prázdna.<br>Prosím overte to u osoby, ktorá ju odoslala.';
$messages['oauthloginfailed'] = 'Prihlásenie OAuth bolo neúspešné. Prosím skúste to znovu.';
localization/ml_IN/labels.inc000064400000041043151727150560012202 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product ലേയ്ക്ക് സ്വാഗതം';
$labels['username'] = 'ഉപയോക്തൃനാമം';
$labels['password'] = 'രഹസ്യവാക്ക്';
$labels['server'] = 'സേവകന്‍';
$labels['login'] = 'പ്രവേശിക്കുക';
$labels['logout'] = 'പുറത്ത് കടക്കുക';
$labels['mail'] = 'തപാല്‍';
$labels['settings'] = 'ക്രമീകരണങ്ങള്‍';
$labels['addressbook'] = 'വിലാസ പുസ്തകം';
$labels['inbox'] = 'ഇന്‍ബോക്സ്';
$labels['drafts'] = 'പൂര്‍ത്തിയാകാത്തവ';
$labels['sent'] = 'അയച്ചവ';
$labels['trash'] = 'ചവറ്റുകുട്ട';
$labels['junk'] = 'ആവശ്യമില്ലാത്തവ';
$labels['subject'] = 'വിഷയം';
$labels['from'] = 'പ്രേഷിതന്‍';
$labels['sender'] = 'അയചയാള്‍';
$labels['to'] = 'സ്വീകര്‍ത്താവ്';
$labels['date'] = 'തീയതി';
$labels['size'] = 'വലിപ്പം';
$labels['priority'] = 'മുന്‍ഗണന';
$labels['readstatus'] = 'അവസ്ഥ വായിക്കുക';
$labels['mailboxlist'] = 'ഫോള്‍ഡറുകള്‍';
$labels['copy'] = 'പകര്‍ത്തുക';
$labels['move'] = 'നീക്കുക';
$labels['download'] = 'ഡൗണ്‍ലോഡ്';
$labels['showattachment'] = 'പ്രദർശിപ്പിക്കുക';
$labels['filename'] = 'ഫയല്‍ നാമം';
$labels['filesize'] = 'ഫയലിന്റെ വലിപ്പം';
$labels['addtoaddressbook'] = 'മേല്‍വിലാസങ്ങളില്‍ ചേര്‍ക്കുക.';
$labels['sun'] = 'ഞാ';
$labels['mon'] = 'തി';
$labels['tue'] = 'ചൊ';
$labels['wed'] = 'ബു';
$labels['thu'] = 'വ്യാ';
$labels['fri'] = 'വെ';
$labels['sat'] = 'ശ';
$labels['sunday'] = 'ഞായര്‍';
$labels['monday'] = 'തിങ്കള്‍';
$labels['tuesday'] = 'ചൊവ്വ';
$labels['wednesday'] = 'ബുധന്‍';
$labels['thursday'] = 'വ്യാഴം';
$labels['friday'] = 'വെള്ളി';
$labels['saturday'] = 'ശനി';
$labels['jan'] = 'ജനു';
$labels['feb'] = 'ഫെബ്';
$labels['mar'] = 'മാര്‍';
$labels['apr'] = 'ഏപ്ര';
$labels['may'] = 'മെ';
$labels['jun'] = 'ജൂണ്‍';
$labels['jul'] = 'ജൂലൈ';
$labels['aug'] = 'ആഗസ്റ്റ്';
$labels['sep'] = 'സെപ്റ്റംബര്‍';
$labels['oct'] = 'ഒക്ടോബര്‍';
$labels['nov'] = 'നവംബര്‍';
$labels['dec'] = 'ഡിസംബര്‍';
$labels['longjan'] = 'ജനുവരി';
$labels['longfeb'] = 'ഫെബ്രുവരി';
$labels['longmar'] = 'മാര്‍ച്ച്';
$labels['longapr'] = 'ഏപ്രില്‍';
$labels['longmay'] = 'മെ';
$labels['longjun'] = 'ജൂണ്‍';
$labels['longjul'] = 'ജൂലൈ';
$labels['longaug'] = 'ആഗസ്റ്റ്';
$labels['longsep'] = 'സെപ്തംബ‌ര്‍';
$labels['longoct'] = 'ഒക്ടോബര്‍';
$labels['longnov'] = 'നവംബ‌ര്‍';
$labels['longdec'] = 'ഡിസംബ‌ര്‍';
$labels['today'] = 'ഇന്ന്';
$labels['refresh'] = 'പുതുക്കുക';
$labels['checkmail'] = 'പുതിയ സന്ദേശത്തിനായി തിരയുക';
$labels['compose'] = 'രചന';
$labels['reply'] = 'മറുപടി';
$labels['forward'] = 'കൈമാറുക';
$labels['forwardmessage'] = 'സന്ദേശം കൈമാറുക';
$labels['deletemessage'] = 'സന്ദേശം മായ്ക്കുക';
$labels['movemessagetotrash'] = 'സന്ദേശം ചവറ്റുകുട്ടയിലേക്ക് നീക്കുക';
$labels['printmessage'] = 'ഈ സന്ദേശം അച്ചടിക്കുക';
$labels['previousmessage'] = 'മുന്‍പുളള സന്ദേശം കാണിക്കുക.';
$labels['firstmessage'] = 'ആദ്യത്തെ സന്ദേശം കാണിക്കുക.';
$labels['nextmessage'] = 'അടുത്ത സന്ദേശം കാണിക്കുക.';
$labels['lastmessage'] = 'അവസാനത്തെ സന്ദേശം കാണിക്കുക.';
$labels['viewsource'] = 'ഉറവിടം കാണിക്കുക.';
$labels['mark'] = 'അടയാളപ്പെടുത്തു';
$labels['markmessages'] = 'സന്തേശങ്ങള്‍ അടയാളപ്പെടുത്തു';
$labels['markread'] = 'വായിച്ചതായി';
$labels['markunread'] = 'വായിക്കാത്തതായി';
$labels['moreactions'] = 'കൂടുതല്‍ ചെയ്തികള്‍...';
$labels['more'] = 'കൂടുതല്‍';
$labels['back'] = 'പിന്നോട്ട്';
$labels['options'] = 'ഐച്ഛികങ്ങള്‍‌';
$labels['select'] = 'തെരഞ്ഞെടുക്കുക';
$labels['all'] = 'എല്ലാം';
$labels['none'] = 'ഒന്നുമില്ല';
$labels['currpage'] = 'നിലവിലുളള പേജ്';
$labels['isread'] = 'വായിച്ചവ';
$labels['unread'] = 'വായിക്കാത്തത്';
$labels['flagged'] = 'അടയാളപ്പെടുത്തിയവ';
$labels['unanswered'] = 'മറുപടി കൊടുക്കാത്ത';
$labels['deleted'] = 'മായ്ച്ചവ';
$labels['invert'] = 'തലതിരിക്കുക';
$labels['filter'] = 'അരിപ്പ';
$labels['list'] = 'പട്ടിക';
$labels['expand-all'] = 'എല്ലാം വികസിപ്പിക്കുക';
$labels['expand-unread'] = 'വായിക്കാത്തവ വികസിപ്പിക്കുക';
$labels['collapse-all'] = 'എല്ലാം അടയ്ക്കുക';
$labels['fromto'] = 'എവിടുന്ന് /എങ്ങൊട്ടു';
$labels['nonesort'] = 'ഒന്നുമില്ല';
$labels['sentdate'] = 'അയച്ച തീയതി';
$labels['arrival'] = 'വന്ന തീയതി';
$labels['asc'] = 'ആരോഹണം';
$labels['desc'] = 'അവരോഹണം';
$labels['listorder'] = 'തരംതിരിക്കണ്ട രീതി';
$labels['layoutlist'] = 'പട്ടിക';
$labels['compact'] = 'ചുരുക്കു';
$labels['empty'] = 'ശൂന്യം';
$labels['quota'] = 'ഡിസ്ക്ക് ഉപയോഗം';
$labels['unknown'] = 'അറിയാത്ത';
$labels['unlimited'] = 'പരിമിതികളില്ലാത്ത';
$labels['quicksearch'] = 'പെട്ടെന്ന് തെരയു';
$labels['msgtext'] = 'മുഴുവന്‍ സന്ദേശവും';
$labels['body'] = 'ഉള്ളടക്കം';
$labels['openinextwin'] = 'പുതിയ വിന്‍ഡോയില്‍ തുറക്കുക';
$labels['editasnew'] = 'പുതിയതായി തിരുത്തുക';
$labels['sendmessage'] = 'സന്ദേശം അയയ്ക്കുക';
$labels['savemessage'] = 'പൂര്‍ത്തിയാകാത്തവ ആയി സൂക്ഷിക്കുക';
$labels['addattachment'] = 'ഒരു ഫയല്‍ മെയിലിനൊപ്പം ചേര്‍ക്കുക';
$labels['editortype'] = 'തിരുത്തല്‍ രീതി';
$labels['originalmessage'] = 'യഥാര്‍ഥ സന്ദേശം';
$labels['recipient'] = 'സ്വീകര്‍ത്താവ്';
$labels['checkspelling'] = 'അക്ഷരത്തെറ്റു് പരിശോധിക്കുക';
$labels['resumeediting'] = 'തിരുത്തല്‍ തുടരുക';
$labels['attach'] = 'സംയോജിപ്പിക്കു';
$labels['attachments'] = 'അറ്റാച്ച്മെന്റുകള്‍';
$labels['upload'] = 'അപ്‌ലോഡ് ചെയ്യുക';
$labels['close'] = 'അടയ്ക്കുക';
$labels['messageoptions'] = 'സന്ദേശ ​ഐച്ഛികങ്ങള്‍...';
$labels['low'] = 'കുറഞ്ഞ';
$labels['lowest'] = 'ഏറ്റവും കുറഞ്ഞ';
$labels['normal'] = 'സാധാരണ';
$labels['high'] = 'കൂടിയ';
$labels['highest'] = 'ഏറ്റവും കൂടിയത്';
$labels['nosubject'] = '(വിഷയം ഇല്ല)';
$labels['showimages'] = 'ചിത്രങ്ങള്‍ കാണിക്കുക';
$labels['isdraft'] = 'ഇതൊരു കരടുരൂപമാണ്.';
$labels['htmltoggle'] = 'HTML';
$labels['dontsave'] = 'സുക്ഷിക്കരുത്';
$labels['maxuploadsize'] = '$size ആണ് പരമാവധി  ഫയല്‍ വലിപ്പം';
$labels['firstname'] = 'ആദ്യ നാമം';
$labels['surname'] = 'അവസാന നാമം';
$labels['nickname'] = 'ചെല്ലപേര്';
$labels['jobtitle'] = 'ജോലിയുടെ പേര്';
$labels['department'] = 'വകുപ്പ്';
$labels['gender'] = 'ലിംഗം';
$labels['maidenname'] = 'കന്യകാനാമം';
$labels['email'] = 'ഇമെയില്‍';
$labels['phone'] = 'ഫോണ്‍';
$labels['address'] = 'മേല്‍വിലാസം';
$labels['street'] = 'തെരുവ്';
$labels['locality'] = 'നഗരം';
$labels['zipcode'] = 'പിന്‍ കോഡ്';
$labels['region'] = 'സംസ്ഥാനം / പ്രദേശം';
$labels['country'] = 'രാജ്യം';
$labels['birthday'] = 'പിറന്നാള്‍';
$labels['anniversary'] = 'വാര്‍ഷികം';
$labels['website'] = 'വെബ്സൈറ്റ്';
$labels['notes'] = 'കുറിപ്പുകള്‍';
$labels['male'] = 'പുരുഷന്‍';
$labels['female'] = 'സ്‌ത്രീ';
$labels['manager'] = 'പരിപാലകന്‍';
$labels['assistant'] = 'സഹായി';
$labels['spouse'] = 'ഭാര്യ/ഭര്‍ത്താവ്';
$labels['search'] = 'തെരയുക';
$labels['advsearch'] = 'വിപുലമായ തിരച്ചില്‍';
$labels['advanced'] = 'സങ്കീര്‍ണ്ണം';
$labels['other'] = 'മറ്റുള്ളത്';
$labels['typehome'] = 'ആസ്ഥാനം';
$labels['typework'] = 'ജോലി';
$labels['typeother'] = 'മറ്റുള്ളത്';
$labels['typemobile'] = 'മോബൈല്‍';
$labels['typemain'] = 'പ്രധാനപ്പെട്ട';
$labels['typehomefax'] = 'വീട്ടിലെ ഫാക്സ്';
$labels['typeworkfax'] = 'കാര്യാലയത്തിലെ ഫാക്സ്';
$labels['typecar'] = 'കാര്‍';
$labels['typepager'] = 'പേജര്‍';
$labels['typevideo'] = 'ചലച്ചിത്രം';
$labels['typeassistant'] = 'സഹായി';
$labels['typehomepage'] = 'ഹോം പേജ്';
$labels['typeblog'] = 'ബ്ലോഗ്';
$labels['typeprofile'] = 'പ്രൊഫൈല്‍';
$labels['personalinfo'] = 'സ്വകാര്യ വിവരങ്ങള്‍';
$labels['edit'] = 'തിരുത്തുക';
$labels['cancel'] = 'റദ്ദാക്കുക';
$labels['save'] = 'സൂക്ഷിക്കുക';
$labels['delete'] = 'നീക്കം ചെയ്യുക';
$labels['rename'] = 'പേരുമാറ്റുക';
$labels['addphoto'] = 'ചേര്‍ക്കുക';
$labels['replacephoto'] = 'പകരം വയ്ക്കുക';
$labels['print'] = 'അച്ചടി';
$labels['export'] = 'പുറത്തെടുക്കുക';
$labels['grouprename'] = 'കുട്ടത്തിന്റെ പേര് മാറ്റുക';
$labels['groupdelete'] = 'കൂട്ടം മായ്ക്കുക';
$labels['previouspage'] = 'മുമ്പുളള താള്‍ കാണിയ്ക്കുക';
$labels['group'] = 'കൂട്ടം';
$labels['groups'] = 'കൂട്ടങ്ങള്‍';
$labels['personaladrbook'] = 'സ്വകാര്യ വിലാസങ്ങള്‍';
$labels['searchsave'] = 'തിരയല്‍ സൂക്ഷിക്കുക';
$labels['searchdelete'] = 'തിരയല്‍ നീക്കംചെയ്യുക';
$labels['import'] = 'പ്രോഗ്രമ്മിലേക്ക് എടുക്കുക';
$labels['done'] = 'പൂര്‍ത്തീകരിച്ചു';
$labels['about'] = 'വിവരം';
$labels['userpreferences'] = 'ഉപയൊക്ത മുന്‍ഗണനകള്‍';
$labels['preferhtml'] = 'HTML കാണിക്കുക';
$labels['language'] = 'ഭാഷ';
$labels['timezone'] = 'സമയ മേഖല';
$labels['pagesize'] = 'ഒരു താളിലെ വരികള്‍';
$labels['signature'] = 'ഒപ്പ്';
$labels['htmleditor'] = 'HTML സന്ദേശങ്ങള്‍ രചിക്കുക';
$labels['serversettings'] = 'സേവകന്റെ ക്രമീകരണങ്ങള്‍';
$labels['askuser'] = 'എന്നൊടു ചോദിക്കുക';
$labels['always'] = 'എപ്പോഴും';
$labels['never'] = 'ഒരിക്കലുമില്ല';
$labels['immediately'] = 'ഉടനടി';
$labels['2231folding'] = 'Full RFC 2231 (തണ്ടര്‍ബേട് )';
$labels['miscfolding'] = 'Full RFC 2231 ( മൈക്രൊസൊഫ്റ്റ് ഔട്ട്ലൂക്കു് )';
$labels['2047folding'] = 'Full RFC 2047 (മറ്റുള്ളവ)';
$labels['force7bit'] = '8-bit അക്ഷരങ്ങള്‍ക്കു "MIME encoding" ഉപയോഗിക്കുക';
$labels['advancedoptions'] = 'വിപുലീക്രിതമായ ക്രമീകരണങ്ങള്‍';
$labels['defaultfont'] = 'HTML സന്ദേശത്തിന്റെ തനതായ ലിപി';
$labels['section'] = 'വിഭാഗം';
$labels['newmessage'] = 'പുതിയ സന്ദേശം';
$labels['newmessageonly'] = 'പുതിയ സന്ദേശം മാത്രം';
$labels['afternseconds'] = '$n നിമിഷങ്ങള്‍ കഴിഞ്ഞു്';
$labels['spellcheckignorenums'] = 'അക്കങ്ങള്‍ ഉള്ള വാക്കുകളെ അവഗണിക്കുക';
$labels['addtodict'] = 'നിഘണ്ടുവില്‍ ചേര്‍ക്കുക';
$labels['allmessages'] = 'എല്ലാ സന്ദേശങ്ങളും';
$labels['folders'] = 'ഫോള്‍ഡറുകള്‍';
$labels['properties'] = 'സവിശേഷതകള്‍';
$labels['info'] = 'വിവരം';
$labels['getfoldersize'] = 'അറയുടെ വലുപ്പം അരിയാന്‍ ക്ലിക്ക് ചെയ്യുക';
$labels['personalfolder'] = 'സ്വകാര്യ അറ';
$labels['sharedfolder'] = 'പൊതു - അറ';
$labels['license'] = 'അനുമതി';
$labels['support'] = 'സഹായം തേടുക';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'യൂണിക്കോഡ്';
$labels['english'] = 'ഇംഗ്ലീഷ്';
$labels['westerneuropean'] = 'പടിഞ്ഞാറന്‍ യൂറോപ്യന്‍';
$labels['easterneuropean'] = 'കിഴക്കന്‍ യൂറോപ്യന്‍';
$labels['baltic'] = 'ബാള്‍ട്ടിക്ക്';
$labels['cyrillic'] = 'സിറില്ലിക്ക്';
$labels['arabic'] = 'അറബിക്ക്';
$labels['greek'] = 'ഗ്രീക്ക്';
$labels['hebrew'] = 'ഹീബ്രു';
$labels['turkish'] = 'ടര്‍ക്കിഷ്';
$labels['nordic'] = 'നോര്‍ഡിക്ക്';
$labels['thai'] = 'തായ്';
$labels['celtic'] = 'സെല്‍റ്റിക്ക്';
$labels['vietnamese'] = 'വിയറ്റ്നാമീസ്';
$labels['japanese'] = 'ജാപ്പനീസ്';
$labels['korean'] = 'കൊറിയന്‍';
$labels['chinese'] = 'ചൈനീസ്‌';
localization/ml_IN/messages.inc000064400000007564151727150560012561 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'ഒരു പിഴവ് സംഭവിച്ചിരിക്കുന്നു';
$messages['loginfailed']  = 'പ്രവേശനം പരാജയപ്പെട്ടിയിക്കുന്നു';
$messages['cookiesdisabled'] = 'താങ്കളുടെ ബ്രൗസർ കുക്കികൾ സ്വീകരിക്കുന്നതല്ല';
$messages['sessionerror'] = 'താങ്കളുടെ സെഷൻ അസാധുവാണ് അല്ലെങ്കിൽ കാലഹരണപ്പെട്ടിരിക്കുന്നു';
$messages['storageerror'] = 'സൂക്ഷിക്കുന്നതിനുള്ള സെർവറുമായി ബന്ധിപ്പിക്കാൻ സാധിച്ചില്ല';
$messages['servererror'] = 'സെർവർ പിഴവ്!';
$messages['servererrormsg'] = 'സെർവർ പിഴവ്: $msg';
$messages['connerror'] = 'ബന്ധിപ്പിക്കുന്നതിൽ പിഴവ് (സെർവറിൽ എത്താനായില്ല)!';
$messages['dberror'] = 'ഡാറ്റാബേസ് പിഴവ്';
$messages['windowopenerror'] = 'പോപ്പപ്പ് ജാലകം തടയപ്പെട്ടിരുന്നു';
$messages['requesttimedout'] = 'അപേക്ഷയുടെ കാലാവധി കഴിഞ്ഞു';
$messages['errorreadonly'] = 'പ്രവൃത്തി നടത്താനായില്ല. ഫോൾഡർ വായിക്കാൻ മാത്രമുള്ളതാണ്';
$messages['errornoperm'] = 'പ്രവര്‍ത്തനം നടത്താനായില്ല . അനുമതി നിഷേധിക്കപെട്ടിരിക്കുന്നു.';
$messages['erroroverquota'] = 'പ്രവര്‍ത്തനം നടത്താനായില്ല . ഡിസ്കിൽ സ്ഥലമില്ല.';
$messages['erroroverquotadelete'] = 'ഡിസ്കിൽ സ്ഥലമില്ല. ഒരു സന്ദേശം നീക്കം ചെയ്യാൻ SHIFT+DEL ഉപയോഗിക്കുക';
$messages['invalidrequest'] = 'അസാധുവായ അപേക്ഷ ! ഒരു ഡാറ്റയും സൂക്ഷിച്ചിട്ടില്ല.';
$messages['invalidhost'] = 'അസാധുവായ സെർവർ നാമം';
$messages['nomessagesfound'] = 'ഈ മെയിൽബോക്സിൽ സന്ദേശമൊന്നും കണ്ടെത്തിയില്ല';
$messages['loading'] = 'തുറക്കുന്നു...';
$messages['checkingmail'] = 'പുതിയ സന്ദേസങ്ങള്‍കുവേണ്ടി തിരയുന്നു...';
$messages['sendingmessage'] = 'സന്ദേശം അയക്കുന്നു...';
$messages['sendingfailed'] = 'സന്ദേശം അയക്കാന്‍ സാധിച്ചില്ല.';
$messages['senttooquickly'] = 'സന്ദേശം അയക്കുന്നതിനു മുന്പു ദയവായ്  $sec കാത്തിരിക്കൂ';
localization/pt_BR/timezones.inc000064400000047207151727150560012775 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'África';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Acra';
$labels['tz:africa:addis_ababa'] = 'Adis Abeba';
$labels['tz:africa:algiers'] = 'Argel';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Joanesburgo';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Cartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Córdoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belém';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantic';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europe';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athens';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussels';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Ulianovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhhorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vaticano';
$labels['tz:europe:vienna'] = 'Viena';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgogrado';
$labels['tz:europe:warsaw'] = 'Varsóvia';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporizhzhya';
$labels['tz:europe:zurich'] = 'Zurique';
$labels['tz:indian'] = 'indiano';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Natal';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comores';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maldivas';
$labels['tz:indian:mauritius'] = 'Maurícia';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunião';
$labels['tz:pacific'] = 'Pacífico';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/pt_BR/csv2vcard.inc000064400000010213151727150560012640 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/<lang>/csv2vcard.inc                                     |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2015, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Aniversário";
$map['assistants_name'] = "Nome do Assistente";
$map['assistants_phone'] = "Fone do Assistente";
$map['birthday'] = "Aniversário";
$map['business_city'] = "Cidade comercial";
$map['business_countryregion'] = "Região/País comercial";
$map['business_fax'] = "Fax comercial";
$map['business_phone'] = "Fone comercial";
$map['business_phone_2'] = "Fone comercial 2";
$map['business_postal_code'] = "Código postal comercial";
$map['business_state'] = "Estado comercial";
$map['business_street'] = "Rua comercial";
$map['car_phone'] = "Fone do carro";
$map['categories'] = "Categorias";
$map['company'] = "Empresa";
$map['department'] = "Departamento";
$map['email_address'] = "Endereço de E-mail";
$map['email_2_address'] = "Endereço de E-mail 2";
$map['email_3_address'] = "Endereço de E-mail 3";
$map['first_name'] = "Primeiro nome";
$map['gender'] = "Gênero";
$map['home_city'] = "Cidade de casa";
$map['home_countryregion'] = "Região/País de casa";
$map['home_fax'] = "Fax de casa";
$map['home_phone'] = "Fone de casa";
$map['home_phone_2'] = "Fone de casa 2";
$map['home_postal_code'] = "Código Postal de casa";
$map['home_state'] = "Estado de casa";
$map['home_street'] = "Rua de casa";
$map['job_title'] = "Cargo";
$map['last_name'] = "Último nome";
$map['managers_name'] = "Nome do gerente";
$map['middle_name'] = "Nome do meio";
$map['mobile_phone'] = "Celular";
$map['notes'] = "Notas";
$map['other_city'] = "Outra cidade";
$map['other_countryregion'] = "Outro País/Região";
$map['other_fax'] = "Outro Fax";
$map['other_phone'] = "Outro Fone";
$map['other_postal_code'] = "Outro Código Postal";
$map['other_state'] = "Outro Estado";
$map['other_street'] = "Outra Rua";
$map['pager'] = "Pager";
$map['primary_phone'] = "Fone Primario";
$map['spouse'] = "Spouse";
$map['suffix'] = "Sufixo";
$map['title'] = "Título";
$map['web_page'] = "Página Web";
$map['birth_day'] = "Dia de nascimento";
$map['birth_month'] = "Mês de nascimento";
$map['birth_year'] = "Ano de nascimento";
$map['display_name'] = "Mostrar nome";
$map['fax_number'] = "Número de Fax";
$map['home_address'] = "Endereço de casa";
$map['home_country'] = "País de casa";
$map['home_zipcode'] = "CEP de casa";
$map['mobile_number'] = "Celular";
$map['nickname'] = "Apelido";
$map['organization'] = "Organização";
$map['pager_number'] = "Número do Pager";
$map['primary_email'] = "E-mail primário";
$map['secondary_email'] = "E-mail secundário";
$map['web_page_1'] = "Web Page 1";
$map['web_page_2'] = "Web Page 2";
$map['work_phone'] = "Fone de trabalho";
$map['work_address'] = "Endereço de trabalho";
$map['work_country'] = "País de trabalho";
$map['work_zipcode'] = "CEP de trabalho";
$map['date_of_birth'] = "Data de nascimento";
$map['email'] = "E-mail";
$map['home_mobile'] = "Celular pessoal";
$map['home_zip'] = "CEP pessoal";
$map['info'] = "Informações";
$map['user_photo'] = "Foto do Usuário";
$map['url'] = "URL";
$map['work_city'] = "Cidade de trabalho";
$map['work_company'] = "Empresa";
$map['work_dept'] = "Departamento";
$map['work_fax'] = "Fax";
$map['work_mobile'] = "Celular de trabalho";
$map['work_state'] = "Estado";
$map['work_title'] = "Cargo";
$map['work_zip'] = "CEP";
localization/pt_BR/labels.inc000064400000104562151727150560012220 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bem-vindo ao $product';
$labels['username'] = 'Usuário';
$labels['password'] = 'Senha';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entrar';
$labels['oauthlogin'] = 'Login com $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Sair';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Configurações';
$labels['addressbook'] = 'Catálogo de endereços';
$labels['darkmode'] = 'Modo escuro';
$labels['lightmode'] = 'Modo claro';
$labels['inbox'] = 'Caixa de entrada';
$labels['drafts'] = 'Rascunhos';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Lixeira';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Exibir o nome real das pastas de sistema';
$labels['subject'] = 'Assunto';
$labels['from'] = 'De';
$labels['sender'] = 'Remetente';
$labels['to'] = 'Para';
$labels['cc'] = 'Cópia';
$labels['bcc'] = 'Cópia Oculta (Cco)';
$labels['replyto'] = 'Responder para';
$labels['followupto'] = 'Encaminhar para';
$labels['date'] = 'Data';
$labels['size'] = 'Tamanho';
$labels['priority'] = 'Prioridade';
$labels['organization'] = 'Organização';
$labels['readstatus'] = 'Status de leitura';
$labels['listoptions'] = 'Lista de opções...';
$labels['listoptionstitle'] = 'Lista de opções';
$labels['mailboxlist'] = 'Pastas';
$labels['messagesfromto'] = 'Mensagens $from - $to de $count';
$labels['threadsfromto'] = 'Tópicos $from - $to de $count';
$labels['messagenrof'] = 'Mensagem $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover para...';
$labels['copyto'] = 'Copiar para...';
$labels['download'] = 'Baixar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Exibir';
$labels['showanyway'] = 'Exibir mesmo assim';
$labels['filename'] = 'Nome do arquivo';
$labels['filesize'] = 'Tamanho';
$labels['addtoaddressbook'] = 'Incluir no catálogo de endereços';
$labels['sun'] = 'Dom.';
$labels['mon'] = 'Seg.';
$labels['tue'] = 'Ter.';
$labels['wed'] = 'Qua.';
$labels['thu'] = 'Qui.';
$labels['fri'] = 'Sex.';
$labels['sat'] = 'Sáb.';
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Segunda-feira';
$labels['tuesday'] = 'Terça-feira';
$labels['wednesday'] = 'Quarta-feira';
$labels['thursday'] = 'Quinta-feira';
$labels['friday'] = 'Sexta-feira';
$labels['saturday'] = 'Sábado';
$labels['jan'] = 'Jan.';
$labels['feb'] = 'Fev.';
$labels['mar'] = 'Mar.';
$labels['apr'] = 'Abr.';
$labels['may'] = 'Mai.';
$labels['jun'] = 'Jun.';
$labels['jul'] = 'Jul.';
$labels['aug'] = 'Ago.';
$labels['sep'] = 'Set.';
$labels['oct'] = 'Out.';
$labels['nov'] = 'Nov.';
$labels['dec'] = 'Dez.';
$labels['longjan'] = 'Janeiro';
$labels['longfeb'] = 'Fevereiro';
$labels['longmar'] = 'Março';
$labels['longapr'] = 'Abril';
$labels['longmay'] = 'Maio';
$labels['longjun'] = 'Junho';
$labels['longjul'] = 'Julho';
$labels['longaug'] = 'Agosto';
$labels['longsep'] = 'Setembro';
$labels['longoct'] = 'Outubro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Dezembro';
$labels['today'] = 'Hoje';
$labels['refresh'] = 'Atualizar';
$labels['checkmail'] = 'Verificar se há novas mensagens';
$labels['compose'] = 'Criar email';
$labels['writenewmessage'] = 'Criar nova mensagem';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder para o remetente';
$labels['replytoallmessage'] = 'Responder para o remetente e todos destinatários';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder para a lista';
$labels['forward'] = 'Encaminhar';
$labels['forwardinline'] = 'Encaminhar junto ao corpo da mensagem';
$labels['forwardattachment'] = 'Encaminhar como anexo';
$labels['forwardmessage'] = 'Encaminhar a mensagem';
$labels['bouncemsg'] = 'Re-enviar (voltou)';
$labels['bounce'] = 'Re-enviar';
$labels['deletemessage'] = 'Excluir a mensagem';
$labels['movemessagetotrash'] = 'Mover a mensagem para a Lixeira';
$labels['printmessage'] = 'Imprimir a mensagem';
$labels['previousmessage'] = 'Mensagem Anterior';
$labels['firstmessage'] = 'Primeira Mensagem';
$labels['nextmessage'] = 'Próxima Mensagem';
$labels['lastmessage'] = 'Última Mensagem';
$labels['backtolist'] = 'Voltar para a lista de mensagens';
$labels['viewsource'] = 'Exibir código-fonte';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar mensagens';
$labels['markread'] = 'Como lidas';
$labels['markunread'] = 'Como não lidas';
$labels['markflagged'] = 'Como sinalizada(s)';
$labels['markunflagged'] = 'Como não sinalizada(s)';
$labels['markundeleted'] = 'Como não deletado';
$labels['moreactions'] = 'Mais ações...';
$labels['markallread'] = 'Marcar tudo como lido';
$labels['folders-cur'] = 'Somente a pasta selecionada';
$labels['folders-sub'] = 'Selecionada pasta e subpastas';
$labels['folders-all'] = 'Todas pastas';
$labels['more'] = 'Mais';
$labels['back'] = 'Voltar';
$labels['options'] = 'Opções';
$labels['composeoptions'] = 'Opções de composição';
$labels['optionsandattachments'] = 'Opções e anexos';
$labels['actions'] = 'Ações';
$labels['first'] = 'Primeiro';
$labels['last'] = 'Último';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Próximo';
$labels['select'] = 'Selecionar';
$labels['selection'] = 'Seleção';
$labels['all'] = 'Todas';
$labels['none'] = 'Nenhuma';
$labels['currpage'] = 'Página atual';
$labels['isread'] = 'Lido';
$labels['unread'] = 'Não lidas';
$labels['flagged'] = 'Sinalizada(s)';
$labels['unflagged'] = 'Não Sinalizada';
$labels['unanswered'] = 'Não respondidas';
$labels['withattachment'] = 'Com anexo';
$labels['deleted'] = 'Excluídas';
$labels['undeleted'] = 'Não excluídas';
$labels['replied'] = 'Respondido';
$labels['forwarded'] = 'Encaminhado';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
$labels['threads'] = 'Agrupamento por assunto';
$labels['expand-all'] = 'Expandir Tudo';
$labels['expand-unread'] = 'Expandir Não Lidas';
$labels['collapse-all'] = 'Recolher Tudo';
$labels['threaded'] = 'Agrupado';
$labels['showunread'] = 'Mostrar mensagens não lidas';
$labels['autoexpand_threads'] = 'Expandir mensagens agrupadas';
$labels['do_expand'] = 'todos os grupos';
$labels['expand_only_unread'] = 'somente com mensagem(s) não lidas';
$labels['fromto'] = 'De/Para';
$labels['flag'] = 'Sinalizador';
$labels['attachment'] = 'Anexo';
$labels['nonesort'] = 'Nenhuma';
$labels['sentdate'] = 'Data de envio';
$labels['arrival'] = 'Data de recebimento';
$labels['asc'] = 'crescente';
$labels['desc'] = 'decrescente';
$labels['listcolumns'] = 'Lista de colunas';
$labels['listsorting'] = 'Coluna para ordenação';
$labels['listorder'] = 'Ordem da classificação';
$labels['listmode'] = 'Visualização em lista';
$labels['lmode'] = 'Modo lista';
$labels['layout'] = 'Leiaute';
$labels['layoutwidescreen'] = 'Panorâmica';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Panorâmica (visão de 3 colunas)';
$labels['layoutdesktopdesc'] = 'Desktop (lista ampla e visualização de mensagens abaixo)';
$labels['layoutlistdesc'] = 'Lista (sem visualização de mensagens)';
$labels['folderactions'] = 'Ações para as pastas...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Esvaziar';
$labels['importmessages'] = 'Importar mensagens';
$labels['mailimportdesc'] = 'Você pode fazer upload de mail usando arquivos no formato <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ou <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Múltiplos arquivos podem ser comprimidos para arquivos zip.';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconhecido';
$labels['unlimited'] = 'ilimitado';
$labels['quotatype'] = 'Tipo de quota';
$labels['quotatotal'] = 'Limite';
$labels['quotaused'] = 'Usado';
$labels['quotastorage'] = 'Espaço em disco';
$labels['quotamessage'] = 'Quantidade de mensagens';
$labels['shortheaderdate'] = 'Em $date';
$labels['shortheaderto'] = 'Para $to em $date';
$labels['shortheaderfrom'] = 'De $from em $date';
$labels['quicksearch'] = 'Pesquisa rápida';
$labels['searchplaceholder'] = 'Pesquisar...';
$labels['resetsearch'] = 'Limpar pesquisa';
$labels['searchmod'] = 'Opções da pesquisa';
$labels['msgtext'] = 'Mensagem inteira';
$labels['body'] = 'Conteúdo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
$labels['searchscope'] = 'Escopo';
$labels['currentfolder'] = 'Pasta atual';
$labels['subfolders'] = 'Esta e subpastas';
$labels['allfolders'] = 'Todas pastas';
$labels['searchinterval-1W'] = 'com mais de uma semana';
$labels['searchinterval-1M'] = 'com mais de um mês';
$labels['searchinterval-1Y'] = 'com mais de um ano';
$labels['searchinterval1W'] = 'com menos de uma semana';
$labels['searchinterval1M'] = 'com menos de um mês';
$labels['searchinterval1Y'] = 'com menos de um ano';
$labels['openinextwin'] = 'Abrir em nova janela';
$labels['emlsave'] = 'Baixar (formato .eml)';
$labels['changeformattext'] = 'Exibir em formato de texto simples';
$labels['changeformathtml'] = 'Exibir com formatação HTML';
$labels['editasnew'] = 'Editar como novo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar agora';
$labels['savemessage'] = 'Salvar como rascunho';
$labels['addattachment'] = 'Anexar um arquivo';
$labels['charset'] = 'Codificação';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Confirmação de recebimento';
$labels['dsn'] = 'Recibo de entrega';
$labels['keepformatting'] = 'Manter formatação';
$labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
$labels['originalmessage'] = 'Mensagem original';
$labels['selectimage'] = 'Selecionar imagem';
$labels['addimage'] = 'Adicionar imagem';
$labels['selectmedia'] = 'Selecionar vídeo';
$labels['addmedia'] = 'Adicionar vídeo';
$labels['encrypt'] = 'Criptografar';
$labels['encryptmessage'] = 'Criptografar mensagem';
$labels['encryptmessagemailvelope'] = 'Criptografar mensagem com Mailvelope';
$labels['importpubkeys'] = 'Importar chaves públicas';
$labels['encryptedsendialog'] = 'Enviando mensagem criptografada';
$labels['encryptandsign'] = 'Cifrar e assinar';
$labels['keyid'] = 'ID da chave';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expirado';
$labels['keyrevoked'] = 'Revogado';
$labels['bccinstead'] = 'Usar Cco';
$labels['addheader'] = 'Adicionar destinatário (cabeçalho)';
$labels['insert'] = 'Inserir';
$labels['insertcontact'] = 'Inserir contato(s)';
$labels['recipient'] = 'Destinatário';
$labels['recipientedit'] = 'Editar destinatário';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Revisar';
$labels['checkspelling'] = 'Verificar ortografia';
$labels['resumeediting'] = 'Continuar a edição';
$labels['revertto'] = 'Reverter para';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = 'Restaurar mensagem?';
$labels['ignore'] = 'Ignorar';
$labels['responses'] = 'Respostas';
$labels['insertresponse'] = 'Inserir uma resposta';
$labels['manageresponses'] = 'Gerenciar respostas';
$labels['newresponse'] = 'Criar nova resposta pré-configurada';
$labels['addresponse'] = 'Adicionar resposta pré-configurada';
$labels['editresponse'] = 'Editar resposta pré-configurada';
$labels['editresponses'] = 'Editar respostas pré-configuradas';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Texto da resposta pré-configurada';
$labels['attach'] = 'Anexar';
$labels['attachments'] = 'Anexos';
$labels['upload'] = 'Enviar arquivo';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fechar';
$labels['messageoptions'] = 'Opções da mensagem...';
$labels['togglecomposeoptions'] = 'Exibir opções de composição da mensagem';
$labels['attachmentrename'] = 'Renomear anexo';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'Mais baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'Mais alta';
$labels['nosubject'] = '(sem assunto)';
$labels['showimages'] = 'Exibir imagens';
$labels['allow'] = 'Permitir';
$labels['alwaysshow'] = 'Sempre exibir imagens de $sender';
$labels['alwaysallow'] = 'Sempre permitir de $sender';
$labels['isdraft'] = 'Esta é uma mensagem salva como rascunho.';
$labels['andnmore'] = '$nr mais...';
$labels['details'] = 'Detalhes';
$labels['summary'] = 'Resumo';
$labels['headers'] = 'Cabeçalhos';
$labels['allheaders'] = 'Todos os cabeçalhos...';
$labels['togglemoreheaders'] = 'Exibir informações adicionais da mensagem (cabeçalhos)';
$labels['togglefullheaders'] = 'Exibir cabeçalho original da mensagem';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto simples';
$labels['savesentmessagein'] = 'Salvar mensagens enviadas em';
$labels['dontsave'] = 'não salvar';
$labels['maxuploadsize'] = 'Tamanho máximo permitido do arquivo é $size';
$labels['addcc'] = 'Adicionar Cópia';
$labels['addbcc'] = 'Adicionar Cópia Oculta';
$labels['addreplyto'] = 'Adicionar Endereço de Resposta';
$labels['addfollowupto'] = 'Adicionar Endereço de Encaminhamento';
$labels['sendreceipt'] = 'Enviar confirmação de leitura?';
$labels['mdnrequest'] = 'O remetente desta mensagem deseja ser notificado quando você ler esta mensagem. Você permite o envio desta notificação?';
$labels['receiptread'] = 'Confirmação de Leitura (exibida)';
$labels['yourmessage'] = 'Esta é uma confirmação de leitura da sua mensagem';
$labels['receiptnote'] = 'Nota: Esta confirmação de leitura somente informa que a mensagem foi aberta no computador do destinatário. Não há garantia que o destinatário tenha lido ou compreendido o conteúdo da mensagem.';
$labels['sendalwaysto'] = 'Sempre envie para $email';
$labels['zoomin'] = 'Aumentar o Zoom';
$labels['zoomout'] = 'Diminuir o Zoom';
$labels['rotate'] = 'Rotacionar';
$labels['increaseimage'] = 'Aumentar tamanho da imagem';
$labels['decreaseimage'] = 'Diminuir tamanho da imagem';
$labels['rotateimage'] = 'Rotacionar imagem';
$labels['showtools'] = 'Mostrar ferramentas de imagem';
$labels['hidetools'] = 'Esconder ferramentas de imagem';
$labels['name'] = 'Nome';
$labels['firstname'] = 'Primeiro Nome';
$labels['surname'] = 'Sobrenome';
$labels['middlename'] = 'Segundo Nome';
$labels['nameprefix'] = 'Prefixo';
$labels['namesuffix'] = 'Sufixo';
$labels['nickname'] = 'Apelido';
$labels['jobtitle'] = 'Ocupação';
$labels['department'] = 'Departamento';
$labels['gender'] = 'Sexo';
$labels['maidenname'] = 'Nome de solteira';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefone';
$labels['address'] = 'Endereço';
$labels['street'] = 'Rua';
$labels['locality'] = 'Cidade';
$labels['zipcode'] = 'CEP';
$labels['region'] = 'Estado';
$labels['country'] = 'País';
$labels['birthday'] = 'Data de nascimento';
$labels['anniversary'] = 'Aniversário';
$labels['website'] = 'Site';
$labels['instantmessenger'] = 'Mensagem instantânea (IM)';
$labels['notes'] = 'Anotações';
$labels['male'] = 'masculino';
$labels['female'] = 'feminino';
$labels['manager'] = 'Gerente';
$labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Cônjuge';
$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Pesquisar';
$labels['searchresult'] = 'Resultado da pesquisa';
$labels['advsearch'] = 'Pesquisa Avançada';
$labels['advanced'] = 'Avançado';
$labels['other'] = 'Outro';
$labels['printcontact'] = 'Imprimir contato';
$labels['qrcode'] = 'QR Code';
$labels['typehome'] = 'Residencial';
$labels['typework'] = 'Trabalho';
$labels['typeother'] = 'Outro';
$labels['typemobile'] = 'Celular';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax Residencial';
$labels['typeworkfax'] = 'Fax do Trabalho';
$labels['typecar'] = 'Carro';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Página pessoal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Adicionar campo...';
$labels['addcontact'] = 'Adicionar contato';
$labels['editcontact'] = 'Editar contato';
$labels['contacts'] = 'Contatos';
$labels['contactproperties'] = 'Propriedades do contato';
$labels['contactnameandorg'] = 'Nome e Organização';
$labels['personalinfo'] = 'Informações pessoais';
$labels['personal'] = 'Pessoal';
$labels['contactphoto'] = 'Foto do contato';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Salvar';
$labels['delete'] = 'Excluir';
$labels['discard'] = 'Descartar';
$labels['continue'] = 'Continuar';
$labels['ok'] = 'OK';
$labels['rename'] = 'Renomear';
$labels['addphoto'] = 'Adicionar';
$labels['replacephoto'] = 'Substituir';
$labels['uploadphoto'] = 'Enviar foto';
$labels['choosefile'] = 'Escolher arquivo...';
$labels['choosefiles'] = 'Escolher arquivos...';
$labels['browse'] = 'Procurar';
$labels['newcontact'] = 'Adicionar novo contato';
$labels['deletecontact'] = 'Exclui os contatos selecionados';
$labels['composeto'] = 'Compor mensagem para';
$labels['contactsfromto'] = 'Contatos $from - $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todos';
$labels['exportsel'] = 'Exportar selecionados';
$labels['exportvcards'] = 'Exportar os contatos em formato vCard';
$labels['newgroup'] = 'Criar novo grupo';
$labels['addgroup'] = 'Adicionar grupo';
$labels['grouprename'] = 'Renomear grupo';
$labels['groupdelete'] = 'Excluir grupo';
$labels['groupassign'] = 'Atribuir ao grupo...';
$labels['groupremove'] = 'Remover do grupo';
$labels['groupremoveselected'] = 'Remover os contatos selecionados do grupo';
$labels['uponelevel'] = 'Subir um nível';
$labels['previouspage'] = 'Página Anterior';
$labels['firstpage'] = 'Primeira Página';
$labels['nextpage'] = 'Próxima Página';
$labels['lastpage'] = 'Última Página';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Listar membros do grupo';
$labels['personaladrbook'] = 'Endereços pessoais';
$labels['searchsave'] = 'Salvar pesquisa';
$labels['searchdelete'] = 'Excluir pesquisa';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contatos';
$labels['importfromfile'] = 'Importar do arquivo';
$labels['importtarget'] = 'Adicionar contatos para';
$labels['importreplace'] = 'Substituir o catálogo de endereços atual';
$labels['importgroups'] = 'Importar atribuições do grupo';
$labels['importgroupsall'] = 'Todos (criar grupo se necessário)';
$labels['importgroupsexisting'] = 'Somente para grupos existentes';
$labels['importdesc'] = 'Você pode enviar contatos de um catálogo de endereços existente.<br/>Os contatos devem ser enviados no formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (valores separados por vírgula).';
$labels['importmapdesc'] = 'Confirme se a informação de mapeamento dos campos abaixo estão corretas antes de prosseguir com a importação de dados CSV (separado por vírgula).';
$labels['fieldnotmapped'] = 'Campo não mapeado (não importar)';
$labels['skipheader'] = 'Não importar a primeira linha (cabeçalhos)';
$labels['done'] = 'Concluído';
$labels['settingsfor'] = 'Configurações para';
$labels['about'] = 'Sobre';
$labels['preferences'] = 'Preferências';
$labels['userpreferences'] = 'Preferências do usuário';
$labels['editpreferences'] = 'Editar preferências do usuário';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Gerenciar identidades';
$labels['newidentity'] = 'Criar nova identidade';
$labels['addidentity'] = 'Adicionar identidade';
$labels['editidentity'] = 'Editar identidade';
$labels['identityencryption'] = 'Criptografia';
$labels['preferhtml'] = 'Exibir em HTML';
$labels['defaultcharset'] = 'Conjunto padrão de caracteres';
$labels['htmlmessage'] = 'Mensagem HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Assinatura Digital';
$labels['dateformat'] = 'Formato da data';
$labels['timeformat'] = 'Formato da hora';
$labels['prettydate'] = 'Exibir datas amigáveis';
$labels['setdefault'] = 'Definir como padrão';
$labels['autodetect'] = 'Automático';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Fuso horário';
$labels['pagesize'] = 'Mensagens por página';
$labels['signature'] = 'Assinatura';
$labels['dstactive'] = 'Horário de verão';
$labels['showinextwin'] = 'Abrir mensagem em uma nova janela';
$labels['composeextwin'] = 'Compor em uma nova janela';
$labels['htmleditor'] = 'Criar mensagens em HTML';
$labels['htmlonreply'] = 'em resposta à mensagem em HTML somente';
$labels['htmlonreplyandforward'] = 'em resposta ou encaminhamento de mensagem em HTML';
$labels['htmlsignature'] = 'Assinatura em HTML';
$labels['showemail'] = 'Exibir o endereço de email junto ao nome de exibição';
$labels['previewpane'] = 'Exibir pré-visualização';
$labels['skin'] = 'Aparência da interface (tema)';
$labels['logoutclear'] = 'Esvaziar a Lixeira ao sair';
$labels['logoutcompact'] = 'Compactar a Caixa de Entrada ao sair';
$labels['uisettings'] = 'Interface de usuário';
$labels['serversettings'] = 'Configurações do Servidor';
$labels['mailboxview'] = 'Exibição da Caixa de Correio';
$labels['mdnrequests'] = 'Envio de Confirmação de Leitura para o remetente';
$labels['askuser'] = 'solicite minha confirmação';
$labels['autosend'] = 'enviar confirmação';
$labels['autosendknown'] = 'enviar confirmação para os meus contatos, caso contrário, pergunte-me';
$labels['autosendknownignore'] = 'enviar confirmação para os meus contatos, caso contrário, ignore';
$labels['autosendtrusted'] = 'enviar recibo para remetentes confiáveis, caso contrário, pergunte-me';
$labels['autosendtrustedignore'] = 'enviar recibo para remetentes confiáveis, caso contrário, ignorar';
$labels['ignorerequest'] = 'ignorar solicitação';
$labels['readwhendeleted'] = 'Marcar a mensagem como lida ao excluir';
$labels['flagfordeletion'] = 'Marcar a mensagem para exclusão ao invés de excluir';
$labels['skipdeleted'] = 'Não exibir mensagens excluídas';
$labels['deletealways'] = 'Excluir as mensagens se movê-las para a lixeira falhar';
$labels['deletejunk'] = 'Apagar as mensagens da pasta de SPAM sem movê-las para a lixeira';
$labels['showremoteimages'] = 'Exibir imagens externas';
$labels['allowremoteresources'] = 'Permitir recursos remotos (imagens, estilos)';
$labels['fromknownsenders'] = 'de remetentes conhecidos';
$labels['fromtrustedsenders'] = 'de remetentes confiáveis';
$labels['frommycontacts'] = 'dos meus contatos';
$labels['always'] = 'sempre';
$labels['alwaysbutplain'] = 'sempre, exceto quando respondendo a mensagem de texto simples';
$labels['showinlineimages'] = 'Exibir imagens anexadas abaixo da mensagem';
$labels['autosavedraft'] = 'Salvar rascunho automaticamente';
$labels['everynminutes'] = 'a cada $n minuto(s)';
$labels['refreshinterval'] = 'Atualização (verificação de novas mensagens, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'imediatamente';
$labels['messagesdisplaying'] = 'Exibição de mensagens';
$labels['messagescomposition'] = 'Redigir mensagens';
$labels['mimeparamfolding'] = 'Nomes de anexos';
$labels['2231folding'] = 'RFC 2231 Integral (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 Integral (outro)';
$labels['force7bit'] = 'Usar codificação MIME para caracteres 8-bit';
$labels['savelocalstorage'] = "Salvar no armazenamento local do navegador (temporariamente)";
$labels['advancedoptions'] = 'Opções avançadas';
$labels['toggleadvancedoptions'] = 'Ativar opções avançadas';
$labels['focusonnewmessage'] = 'Focar janela do navegador ao receber nova mensagem';
$labels['checkallfolders'] = 'Verificar se há novas mensagens em todas as pastas';
$labels['displaynext'] = 'Mostrar próximo item da lista após excluir/mover';
$labels['defaultfont'] = 'Fonte padrão para mensagens HTML';
$labels['mainoptions'] = 'Opções Principais';
$labels['browseroptions'] = 'Opções do navegador';
$labels['section'] = 'Seção';
$labels['maintenance'] = 'Manutenção';
$labels['newmessage'] = 'Nova Mensagem';
$labels['signatureoptions'] = 'Opções de Assinatura';
$labels['whenreplying'] = 'Quando responder';
$labels['replyempty'] = 'Não incluir a mensagem original';
$labels['replytopposting'] = 'iniciar nova mensagem acima da original';
$labels['replytoppostingnoindent'] = 'Começar nova mensagem acima da citação (sem indentação)';
$labels['replybottomposting'] = 'iniciar nova mensagem abaixo da original';
$labels['replyremovesignature'] = 'Remover assinatura original da mensagem ao respondê-la';
$labels['autoaddsignature'] = 'Adicionar assinatura automaticamente';
$labels['newmessageonly'] = 'somente em novas mensagens';
$labels['replyandforwardonly'] = 'somente em respostas e encaminhamentos';
$labels['insertsignature'] = 'Inserir assinatura';
$labels['sigbelow'] = 'Colocar assinatura após a mensagem citada';
$labels['sigseparator'] = 'Forçar separador padrão nas assinaturas';
$labels['automarkread'] = 'Marcar mensagens como lidas';
$labels['afternseconds'] = 'depois de $n segundos';
$labels['reqmdn'] = 'Sempre pedir confirmação de leitura';
$labels['reqdsn'] = 'Sempre pedir confirmação de entrega';
$labels['replysamefolder'] = 'Colocar as respostas na mesma pasta da mensagem original';
$labels['defaultabook'] = 'Catálogo de endereços padrão';
$labels['autocompletesingle'] = 'Ignorar endereços alternativos no autocompletar';
$labels['listnamedisplay'] = 'Listar contatos como';
$labels['contactformmode'] = 'Modo de formulário de contato';
$labels['privatemode'] = 'Privado (Casa)';
$labels['businessmode'] = 'Empresarial (Trabalho)';
$labels['collectedaddresses'] = 'Endereços coletados';
$labels['collectedrecipients'] = 'Destinatários coletados';
$labels['collectedrecipientsopt'] = 'Armazenar destinatários de email em';
$labels['collectedsendersopt'] = 'Armazenar remetentes confiáveis em';
$labels['trustedsenders'] = 'Remetentes confiáveis';
$labels['spellcheckbeforesend'] = 'Verificar ortografia antes de enviar uma mensagem';
$labels['spellcheckoptions'] = 'Opções do Verificador Ortográfico';
$labels['spellcheckignoresyms'] = 'Ignorar palavras com símbolos';
$labels['spellcheckignorenums'] = 'Ignorar palavras com números';
$labels['spellcheckignorecaps'] = 'Ignorar palavras com todas letras maiúsculas';
$labels['addtodict'] = 'Adicionar ao dicionário';
$labels['mailtoprotohandler'] = 'Associar links de e-mail (mailto:) para envio de mensagem através do webmail';
$labels['standardwindows'] = 'Usar popups como janelas do navegador';
$labels['forwardmode'] = 'Encaminhamento de mensagens';
$labels['inline'] = 'Em linha (no corpo da mensagem)';
$labels['asattachment'] = 'como anexo';
$labels['replyallmode'] = 'Ação padrão do botão [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder somente à lista de discussão (se identificada)';
$labels['allmessages'] = 'todas as mensagens';
$labels['olderxdays'] = 'com mais de $x dias';
$labels['folder'] = 'Pasta';
$labels['folders'] = 'Pastas';
$labels['foldername'] = 'Nome da pasta';
$labels['subscribed'] = 'Inscrito';
$labels['messagecount'] = 'Mensagens';
$labels['create'] = 'Criar';
$labels['createfolder'] = 'Criar nova pasta';
$labels['managefolders'] = 'Gerenciar pastas';
$labels['specialfolders'] = 'Pastas de sistema';
$labels['properties'] = 'Propriedades';
$labels['folderproperties'] = 'Propriedades da pasta';
$labels['parentfolder'] = 'Pasta pai';
$labels['location'] = 'Localização';
$labels['info'] = 'Informação';
$labels['getfoldersize'] = 'Exibir o tamanho da pasta';
$labels['changesubscription'] = 'Clique para ativar/desativar';
$labels['foldertype'] = 'Tipo de Pasta';
$labels['personalfolder'] = 'Pasta Particular';
$labels['otherfolder'] = 'Pasta de outro Usuário';
$labels['sharedfolder'] = 'Pasta Pública';
$labels['findfolders'] = 'Pesquisar pastas';
$labels['findcontacts'] = 'Encontrar contatos';
$labels['findmail'] = 'Encontrar e-mails';
$labels['namespace.personal'] = 'Pessoal';
$labels['namespace.other'] = 'Outros usuários';
$labels['namespace.shared'] = 'Compartilhada';
$labels['dualuselabel'] = 'Pode conter apenas';
$labels['dualusemail'] = 'mensagens';
$labels['dualusefolder'] = 'pastas';
$labels['generate'] = 'Gerar';
$labels['encryptioncreatekey'] = 'Criar novo par de chaves';
$labels['openmailvelopesettings'] = 'Abrir Configurações de Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Você tem $nr chaves privadas compatíveis armazanadas no keyring do seu Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'A identidade do remetente ainda não possui uma chave privada PGP armazanada em sua extensão do Mailvelope. Gostaria de criar uma para poder habilitar mensagem criptografada?';
$labels['encryption'] = 'Criptografia';
$labels['mailvelopeoptions'] = 'Opções do Mailvelope';
$labels['mailvelopemainkeyring'] = 'Usar chaveiro principal do Mailvelope';
$labels['mailvelopenotfound'] = 'A extensão do Mailvelope não está ativada/instalada no seu navegador.';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ascendente';
$labels['sortdesc'] = 'Descendente';
$labels['undo'] = 'Desfazer';
$labels['installedplugins'] = 'Plugins instalados';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versão';
$labels['source'] = 'Fonte';
$labels['destination'] = 'Destinação';
$labels['license'] = 'Licença';
$labels['support'] = 'Obter suporte';
$labels['savedsearches'] = 'Pesquisas salvas';
$labels['dateformatY'] = 'AAAA';
$labels['dateformaty'] = 'AA';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglês';
$labels['westerneuropean'] = 'Oeste Europeu';
$labels['easterneuropean'] = 'Leste Europeu';
$labels['southeasterneuropean'] = 'Sudeste Europeu';
$labels['baltic'] = 'Báltico';
$labels['cyrillic'] = 'Cirílico';
$labels['arabic'] = 'Árabe';
$labels['greek'] = 'Grego';
$labels['hebrew'] = 'Hebraico';
$labels['turkish'] = 'Turco';
$labels['nordic'] = 'Nórdico';
$labels['thai'] = 'Tailandês';
$labels['celtic'] = 'Celta';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
$labels['arialabeltopnav'] = 'Controle da janela';
$labels['arialabeltasknav'] = 'Tarefas da aplicação';
$labels['arialabeltoolbar'] = 'Barra de ferramentas da aplicação';
$labels['arialabellistnav'] = 'Navegação por lista';
$labels['arialabelactivetask'] = 'Tarefa ativa';
$labels['arialabelmessagessearchfilter'] = 'Filtros da listagem de e-mails';
$labels['arialabelmailsearchform'] = 'Formulário de pesquisa de e-mails';
$labels['arialabelcontactsearchform'] = 'Formulário de pesquisa de contatos';
$labels['arialabelmailquicksearchbox'] = 'Campo de pesquisa de e-mails';
$labels['arialabelquicksearchbox'] = 'Campo de pesquisa';
$labels['arialabelfoldersearchfilter'] = 'Filtros da listagem de pastas';
$labels['arialabelfoldersearchform'] = 'Formulário de pesquisa de pastas';
$labels['arialabelfolderlist'] = 'Seleção de pastas de e-mail';
$labels['arialabelmessagelist'] = 'Listagem dos e-mails';
$labels['arialabelmailpreviewframe'] = 'Pré-visualização de mensagem';
$labels['arialabelmailboxmenu'] = 'Menu de ações da pasta';
$labels['arialabellistselectmenu'] = 'Menu de seleção de mensagens';
$labels['arialabelthreadselectmenu'] = 'Menu de listagem por assunto';
$labels['arialabelmessagelistoptions'] = 'Listagem dos e-mails e opções de ordenação';
$labels['arialabelmailimportdialog'] = 'Janela de importação de mensagens';
$labels['arialabelmessagenav'] = 'Navegação das mensagens';
$labels['arialabelmessagebody'] = 'Corpo da Mensagem';
$labels['arialabelmessageactions'] = 'Ações para as mensagens';
$labels['arialabelcontactquicksearch'] = 'Formulário de pesquisa de contatos';
$labels['arialabelcontactsearchbox'] = 'Campo de pesquisa de contatos';
$labels['arialabelmessageheaders'] = 'Cabeçalhos da mensagem';
$labels['arialabelforwardingoptions'] = 'Opções de encaminhamento';
$labels['arialabelreplyalloptions'] = 'Opções de responder a todos';
$labels['arialabelmoremessageactions'] = 'Mais ações para as mensagens';
$labels['arialabelmorecontactactions'] = 'Mais ações de contato';
$labels['arialabelmarkmessagesas'] = 'Marcar a mensagem selecionada como...';
$labels['arialabelcomposeoptions'] = 'Opções para compor a mensagem';
$labels['arialabelresponsesmenu'] = 'Menu de respostas pré-configuradas';
$labels['arialabelattachmentuploadform'] = 'Formulário de upload de anexos';
$labels['arialabelattachmentmenu'] = 'Opções de anexos';
$labels['arialabelmailtomenu'] = 'Opções de endereço de e-mail';
$labels['arialabelattachmentpreview'] = 'Pré-visualização de anexos';
$labels['ariasummarycomposecontacts'] = 'Lista de contatos e grupos para selecionar como destinatários';
$labels['arialabelcontactexportoptions'] = 'Opções de exportação dos contatos';
$labels['arialabelabookgroupoptions'] = 'Opções de catálogo de endereços/grupos';
$labels['arialabelpreferencesform'] = 'Formulário de preferências';
$labels['arialabelidentityeditfrom'] = 'Formulário de edição de identidade';
$labels['arialabelresponseeditfrom'] = 'Formulário de edição de resposta';
$labels['arialabelsearchterms'] = 'Termos de pesquisa';
$labels['arialabeldropactionmenu'] = 'Menu de ações arrastar-e-largar';
$labels['arialabelheadersmenu'] = 'Menu para adicionar destinatário (cabeçalho)';
$labels['arialabelimagetools'] = 'Ferramentas para imagens';
$labels['helplistnavigation'] = 'Lista de navegação pelo teclado';
$labels['helplistkeyboardnavigation'] = "Setas para cima/baixo: Move o foco/seleção da linha.
Espaço: Seleciona a linha em foco.
Shift + seta para cima/baixo: Seleciona linhas adicionais acima/abaixo.
Ctrl + Espaço: Adiciona linha em foco à seleção/remove da seleção.";
$labels['helplistkeyboardnavmessages'] = "Setas para direita/esquerda: expande/recolhe agrupamento do assunto (somente com modo de agrupamento por assunto ativo).
Enter: Abre a mensagem selecionada/em foco.
Delete: Move a mensagem selecionada para a Lixeira.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Abre o contato selecionado";
localization/pt_BR/messages.inc000064400000043667151727150560012575 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ocorreu um erro!';
$messages['loginfailed']  = 'Falha no login';
$messages['cookiesdisabled'] = 'Seu navegador não aceita cookies.';
$messages['sessionerror'] = 'A sessão do seu navegador é inválida ou expirou';
$messages['cookiesmismatch'] = 'Cookie imcompatível detectado. Por favor, limpar os cookies de seu navegador.';
$messages['storageerror'] = 'Falha na conexão com o servidor. Verifique se informou os dados corretamente.';
$messages['servererror'] = 'Erro no Servidor!';
$messages['servererrormsg'] = 'Erro no Servidor: $msg';
$messages['accountlocked'] = 'Muitas tentativas de login inválidas. Tente novamente depois.';
$messages['connerror'] = 'Erro de conexão (Falha na comunicação com o servidor)!';
$messages['dberror'] = 'Erro no banco de dados!';
$messages['dbconnerror'] = 'Não foi possível conectar à base de dados!';
$messages['windowopenerror'] = 'A janela popup foi bloqueada!';
$messages['requesttimedout'] = 'Tempo da requisição esgotado';
$messages['errorreadonly'] = 'Não foi possível realizar a operação. Pasta somente leitura';
$messages['errornoperm'] = 'Não foi possível realizar a operação. Acesso negado';
$messages['erroroverquota'] = 'Não foi possível realizar a operação. Não há espaço disponível.';
$messages['erroroverquotadelete'] = 'Não há espaço disponível. Utilize SHIFT+DEL para apagar a mensagem.';
$messages['invalidrequest'] = 'Requisição inválida! Nenhum dado foi salvo.';
$messages['invalidhost'] = 'Endereço de servidor inválido.';
$messages['nomessagesfound'] = 'Nenhuma mensagem encontrada nessa caixa de mensagens';
$messages['loggedout'] = 'Sua sessão foi finalizada. Até logo!';
$messages['mailboxempty'] = 'A caixa de mensagens está vazia';
$messages['nomessages'] = 'Sem mensagens';
$messages['refreshing'] = 'Atualizando...';
$messages['loading'] = 'Carregando...';
$messages['uploading'] = 'Enviando arquivo...';
$messages['attaching'] = 'Anexando arquivo...';
$messages['uploadingmany'] = 'Enviando arquivos...';
$messages['loadingdata'] = 'Carregando dados...';
$messages['checkingmail'] = 'Verificando se há novas mensagens...';
$messages['sendingmessage'] = 'Enviando mensagem...';
$messages['messagesent'] = 'Mensagem enviada com sucesso';
$messages['savingmessage'] = 'Salvando Mensagem...';
$messages['messagesaved'] = 'Mensagem salva em Rascunhos';
$messages['successfullysaved'] = 'Salvo com sucesso';
$messages['savingresponse'] = 'Salvando resposta pré-definida...';
$messages['deleteresponseconfirm'] = 'Você realmente deseja apagar esta resposta pré-definida?';
$messages['nocontactselected'] = 'Você ainda não selecionou um contato.';
$messages['addedsuccessfully'] = 'Contato incluído com sucesso no catálogo de endereços.';
$messages['contactexists'] = 'Já existe um contato com esse mesmo e-mail.';
$messages['contactnameexists'] = 'Já existe um contato com o mesmo nome.';
$messages['blockedimages'] = 'Para proteger sua privacidade, as imagens remotas desta mensagem foram bloqueadas.';
$messages['blockedresources'] = 'Para proteger sua privacidade recursos remotos foram bloqueados.';
$messages['suspiciousemail'] = 'Esta mensagem contém endereços de email suspeitos que podem ser fraudulentos.';
$messages['bccemail'] = 'A(s) mensagem(ns) encaminhada(s) contêm destinatários confidenciais (Bcc).';
$messages['bouncehint'] = 'A mensagem será enviada sem nenhuma alteração, ou seja, usando o corpo, cabeçalhos e destinatários originais.';
$messages['encryptedmessage'] = 'Esta é uma mensagem criptografada e não pode ser exibida. Desculpe.';
$messages['externalmessagedecryption'] = 'Esta é uma mensagem criptografada e pode ser descriptografado com  extensão do seu navegador.';
$messages['nopubkeyfor'] = 'Nenhuma chave publica encontrada para $email';
$messages['nopubkeyforsender'] = 'Nenhuma chave pública válida encontrada para sua identidade. Você quer criptografar a mensagem apenas para os destinatários?';
$messages['encryptnoattachments'] = 'Anexos já carregados não podem ser criptografados. Adicione-os novamente no editor com criptografia.';
$messages['searchpubkeyservers'] = 'Você deseja procurar as chaves faltantes nos servidores de chaves públicas?';
$messages['encryptpubkeysfound'] = 'As seguintes chaves públicas foram localizadas:';
$messages['keyservererror'] = 'Falha ao obter a chave de seu servidor de chaves.';
$messages['keyimportsuccess'] = 'Chave Pública $key importada com sucesso ao seu chaveiro.';
$messages['nocontactsfound'] = 'Nenhum contato encontrado.';
$messages['contactnotfound'] = 'O contato solicitado não foi encontrado.';
$messages['contactsearchonly'] = 'Você tem que usar o formulário de busca para ver os contatos do catálogo de endereço selecionado.';
$messages['sendingfailed'] = 'Falha no envio da mensagem.';
$messages['senttooquickly'] = 'Aguarde $sec s para enviar a mensagem.';
$messages['errorsavingsent'] = 'Ocorreu um erro ao salvar a mensagem enviada.';
$messages['errorsaving'] = 'Ocorreu um erro ao salvar.';
$messages['errormoving'] = 'Não foi possível mover a(s) mensagem(ns).';
$messages['errorcopying'] = 'Não foi possível copiar a(s) mensagem(ns).';
$messages['errordeleting'] = 'Não foi possível apagar a(s) mensagem(ns).';
$messages['errormarking'] = 'Não foi possível marcar a(s) mensagem(ns).';
$messages['alerttitle'] = 'Atenção';
$messages['confirmationtitle'] = 'Você está seguro...';
$messages['deletecontactconfirm']  = 'Deseja realmente excluir o(s) contato(s) selecionado(s)?';
$messages['deletegroupconfirm']  = 'Deseja realmente excluir o grupo selecionado?';
$messages['deletemessagesconfirm'] = 'Deseja realmente excluir a(s) mensagem(s) selecionada(s)?';
$messages['deletefolderconfirm']  = 'Deseja realmente excluir esta pasta?';
$messages['movefolderconfirm']  = 'Você realmente quer mover esta pasta?';
$messages['purgefolderconfirm']  = 'Deseja realmente excluir todas mensagens desta pasta?';
$messages['contactdeleting'] = 'Excluindo contato(s)...';
$messages['groupdeleting'] = 'Excluindo grupo...';
$messages['folderdeleting'] = 'Excluindo pasta...';
$messages['foldermoving'] = 'Movendo pasta...';
$messages['foldersubscribing'] = 'Ativando pasta...';
$messages['folderunsubscribing'] = 'Desativando pasta...';
$messages['formincomplete'] = 'Os campos não foram completamente preenchidos';
$messages['noemailwarning'] = 'Por favor, informe um endereço de e-mail válido';
$messages['nonamewarning']  = 'Por favor, informe o nome';
$messages['nopagesizewarning'] = 'Por favor, informe o tamanho da página';
$messages['nosenderwarning'] = 'Por favor, informe o e-mail do remetente';
$messages['recipientsadded'] = 'Destinatário(s) adicionado(s) com sucesso.';
$messages['norecipientwarning'] = 'Por favor, informe pelo menos um destinatário';
$messages['disclosedrecipwarning'] = 'Todos os destinatários verão os endereços de e-mail uns dos outros. Para prevenir isto e proteger a privacidade deles, você deve usar o campo Cópia Oculta (Cco).';
$messages['disclosedreciptitle'] = 'Há muitos destinatários públicos';
$messages['nosubjectwarning']  = 'O campo "Assunto" está vazio. Deseja incluí-lo agora?';
$messages['nosubjecttitle']  = 'Sem assunto';
$messages['nobodywarning'] = 'Enviar a mensagem sem texto?';
$messages['notsentwarning'] = 'A mensagem não foi enviada e tem alterações não salvas. Deseja descartar as alterações?';
$messages['restoresavedcomposedata'] = 'Uma mensagem criada anteriormente, mas não enviada, foi localizada.\n\nTítulo: $subject\nSalva em: $date\n\nDeseja restaurar esta mensagem?';
$messages['nosearchname'] = 'Por favor, informe o nome do contato ou seu endereço de e-mail.';
$messages['notuploadedwarning'] = 'Há anexos ainda não enviados. Aguarde ou cancele o envio.';
$messages['searchsuccessful'] = '$nr mensagens encontradas.';
$messages['contactsearchsuccessful'] = '$nr contatos encontrados.';
$messages['searchnomatch'] = 'A pesquisa não encontrou resultados';
$messages['searching'] = 'Pesquisando...';
$messages['checking'] = 'Verificando...';
$messages['stillsearching'] = 'Ainda procurando...';
$messages['nospellerrors'] = 'Nenhum erro ortográfico encontrado';
$messages['folderdeleted'] = 'Pasta excluída com sucesso';
$messages['foldersubscribed'] = 'Pasta ativada com sucesso';
$messages['folderunsubscribed'] = 'Pasta desativada com sucesso';
$messages['folderpurged'] = 'Pasta esvaziada com sucesso.';
$messages['folderexpunged'] = 'Pasta compactada com sucesso.';
$messages['deletedsuccessfully'] = 'Excluído com sucesso';
$messages['converting'] = 'Removendo formatação...';
$messages['messageopenerror'] = 'Não foi possível carregar a mensagem do servidor';
$messages['filelinkerror'] = 'Falha ao anexar o arquivo.';
$messages['fileuploaderror'] = 'Falha ao enviar o arquivo';
$messages['csvfilemismatch'] = 'A importação de vários arquivos CSV com campos diferentes não é suportada.';
$messages['filesizeerror'] = 'O arquivo enviado excede o tamanho máximo de $size';
$messages['filecounterror'] = 'Você pode enviar no máximo $count arquivos por vez.';
$messages['msgsizeerror'] = 'Falha ao anexar o arquivo. Tamanho máximo da mensagem ($size) excedido.';
$messages['msgsizeerrorfwd'] = 'Tamanho máximo de uma mensagem ($size) excedido. $num mensagens não foram anexadas.';
$messages['copysuccess'] = '$nr contato(s) copiado(s) com sucesso.';
$messages['movesuccess'] = '$nr contato(s) movido(s) com sucesso.';
$messages['copyerror'] = 'Não foi possível copiar os contatos.';
$messages['moveerror'] = 'Não foi possível mover os contatos.';
$messages['sourceisreadonly'] = 'Esta fonte de endereço é somente leitura';
$messages['errorsavingcontact'] = 'Não foi possível salvar o endereço de contato';
$messages['movingmessage'] = 'Movendo mensagem(ns)...';
$messages['copyingmessage'] = 'Copiando mensagem(ns)...';
$messages['copyingcontact'] = 'Copiando contato(s)...';
$messages['movingcontact'] = 'Movendo contato(s)...';
$messages['deletingmessage'] = 'Excluindo mensagem(ns)...';
$messages['markingmessage'] = 'Marcando mensagem(ns)...';
$messages['addingmember'] = 'Adicionando contato(s) para o grupo...';
$messages['removingmember'] = 'Removendo contato(s) do grupo...';
$messages['receiptsent'] = 'Confirmação de recebimento enviada com sucesso';
$messages['errorsendingreceipt'] = 'Não foi possível enviar a confirmação de recebimento';
$messages['deleteidentityconfirm'] = 'Você realmente deseja excluir esta identidade?';
$messages['nodeletelastidentity'] = 'Você não pode excluir sua única identidade';
$messages['forbiddencharacter'] = 'O nome da pasta contém um caractere não permitido';
$messages['selectimportfile'] = 'Selecione o arquivo a ser enviado.';
$messages['addresswriterror'] = 'O catálogo de endereços selecionado não tem permissão de modificação';
$messages['contactaddedtogroup'] = 'Contatos adicionados a este grupo com sucesso.';
$messages['contactremovedfromgroup'] = 'Contatos removidos deste grupo com sucesso.';
$messages['nogroupassignmentschanged'] = 'Nenhuma atribuição do grupo foi alterada.';
$messages['importwait'] = 'Importando, aguarde por favor...';
$messages['importformaterror'] = 'Falha na importação! O arquivo enviado não está em um formato válido.';
$messages['importconfirm'] = '<b>Foram importados com sucesso $inserted contatos</b>';
$messages['importconfirmskipped'] = '<b>Ignorado(s) $skipped registro(s) já existente(s)</b>';
$messages['importmessagesuccess'] = 'Importação de $nr mensagens com sucesso';
$messages['importmessageerror'] = 'Falha na importação! O arquivo enviado não é uma mensagem ou caixa postal válida';
$messages['opnotpermitted'] = 'Operação não permitida!';
$messages['nofromaddress'] = 'Falta o e-mail na identidade selecionada.';
$messages['editorwarning'] = 'A mudança do tipo de editor pode causar perda de formatação do texto. Deseja continuar?';
$messages['httpreceivedencrypterror'] = 'Ocorreu um erro de configuração. Informe ao administrador do sistema imediatamente. <b>Sua mensagem não pode ser enviada.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): Conexão ao servidor falhou.';
$messages['smtpautherror'] = 'Erro SMTP ($code): Falha na autenticação.';
$messages['smtpfromerror'] = 'Erro SMTP ($code): Falha ao definir o remetente "$from" ($msg).';
$messages['smtptoerror'] = 'Erro SMTP ($code): Falha ao adicionar o destinatário "$to" ($msg).';
$messages['smtprecipientserror'] = 'Erro SMTP: Não é possível processar a lista destinatários.';
$messages['smtputf8error'] = 'Erro de SMTP: Servidor não suporta Unicode em endereço de email.';
$messages['smtpsizeerror'] = 'Erro de SMTP: Tamanho da mensagem excede o limite do servidor ($limit)';
$messages['smtperror'] = 'Erro SMTP: $msg';
$messages['emailformaterror'] = 'Endereço de e-mail inválido: $email';
$messages['toomanyrecipients'] = 'Há muitos destinatários. Reduza o número de destinatários para $max.';
$messages['maxgroupmembersreached'] = 'O número de membros do grupo excede o máximo de $max';
$messages['internalerror'] = 'Ocorreu um erro interno. Por favor tente novamente.';
$messages['contactdelerror'] = 'Não foi possível excluir o(s) contato(s).';
$messages['contactdeleted'] = 'Contato(s) excluído(s) com sucesso.';
$messages['contactrestoreerror'] = 'Não foi possivel recuperar o(s) contato(s) excluído(s).';
$messages['contactrestored'] = 'Contato(s) recuperado(s) com sucesso.';
$messages['groupdeleted'] = 'Grupo excluído com sucesso';
$messages['grouprenamed'] = 'Grupo renomeado com sucesso.';
$messages['groupcreated'] = 'Grupo criado com sucesso.';
$messages['savedsearchdeleted'] = 'Pesquisa excluída com sucesso.';
$messages['savedsearchdeleteerror'] = 'Não foi possível excluir a pesquisa.';
$messages['savedsearchcreated'] = 'Pesquisa criada com sucesso.';
$messages['savedsearchcreateerror'] = 'Não foi possível criar a pesquisa.';
$messages['messagedeleted'] = 'Mensagem(s) excluída(s) com sucesso';
$messages['messagemoved'] = 'Mensagem(s) movida(s) com sucesso';
$messages['messagemovedtotrash'] = 'Mensagem(s) movida(s) para a Lixeira com sucesso.';
$messages['messagecopied'] = 'Mensagem(s) copiada(s) com sucesso';
$messages['messagemarked'] = 'Mensagem(s) marcada(s) com sucesso';
$messages['autocompletechars'] = 'Digite pelo menos $min caractere(s) para auto-completar';
$messages['autocompletemore'] = 'Mais registros foram encontrados. Por favor, digite mais caracteres.';
$messages['namecannotbeempty'] = 'Nome não pode ser vazio';
$messages['nametoolong'] = 'Nome é muito longo';
$messages['namedotforbidden'] = 'Nome de pasta não pode começar com um ponto.';
$messages['folderupdated'] = 'Pasta atualizada com sucesso';
$messages['foldercreated'] = 'Pasta criada com sucesso';
$messages['invalidimageformat'] = 'Formato de imagem inválido.';
$messages['mispellingsfound'] = 'Foram detectados erros de ortografia na mensagem.';
$messages['parentnotwritable'] = 'Sem permissão para criar/mover a pasta dentro da pasta selecionada.';
$messages['messagetoobig'] = 'A mensagem é muito grande para ser processada.';
$messages['attachmentvalidationerror'] = 'Este anexo é suspeito porque seu tipo não combina com o tipo declarado na mensagem. Se você não confia no remetente, não o abra no navegador porque pode conter conteúdo maicioso.<br/><br/><em>Esperado: $expected; encontrado: $detected</em>';
$messages['noscriptwarning'] = 'Aviso: Este webmail utiliza Javascript, habilite-o nas configurações de seu navegador.';
$messages['messageissent'] = 'A mensagem já foi enviada, mas ainda não foi salva. Deseja salvar agora?';
$messages['errnotfound'] = 'Arquivo não encontrado';
$messages['errnotfoundexplain'] = 'O recurso solicitado não foi encontrado!';
$messages['errfailedrequest'] = 'Requisição falhou';
$messages['errauthorizationfailed'] = 'Autorização Falhou';
$messages['errunauthorizedexplain'] = 'Não é possível verificar se você está autorizado a acessar este serviço!';
$messages['errrequestcheckfailed'] = 'Falha na verificação da requisição';
$messages['errcsrfprotectionexplain'] = "Para sua proteção, o acesso a este serviço está seguro contra CSRF.\nSe você está vendo isto, provavelmente não utilizou a opção de sair antes de encerrar a utilização.\n\nSerá necessária interação humana para continuar.";
$messages['errcontactserveradmin'] = 'Por favor contate o administrador do servidor.';
$messages['clicktoresumesession'] = 'Clique aqui para continuar sua sessão anterior';
$messages['errcomposesession'] = 'Erro na sessão de composição';
$messages['errcomposesessionexplain'] = 'A sessão de composição solicitada não foi encontrada.';
$messages['clicktocompose'] = 'Clique aqui para compor uma nova mensagem';
$messages['nosupporterror'] = 'Esta característica não é suportada pelo seu navegador.';
$messages['siginserted'] = 'Assinatura inserida com sucesso.';
$messages['responseinserted'] = 'Resposta inserida com sucesso.';
$messages['noresponsesavailable'] = 'Sem respostas disponíveis';
$messages['listempty'] = 'A lista está vazia.';
$messages['listusebutton'] = 'Use o botão Criar para adicionar um novo registro.';
$messages['keypaircreatesuccess'] = 'Um novo par de chaves foi criado com sucesso para $identity.';
$messages['emptyattachment'] = 'Este anexo parece estar vazio.<br>Por favor, verifique com a pessoa que o enviou.';
$messages['oauthloginfailed'] = 'Login do OAuth falhou. Por favor, tente novamente.';
localization/ko_KR/timezones.inc000064400000052150151727150560012765 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = '아프리카';
$labels['tz:africa:abidjan'] = '아비장';
$labels['tz:africa:accra'] = '아크라';
$labels['tz:africa:addis_ababa'] = '아디스아바바';
$labels['tz:africa:algiers'] = '알제';
$labels['tz:africa:asmara'] = '아스마라';
$labels['tz:africa:bamako'] = '바마코';
$labels['tz:africa:bangui'] = '방기';
$labels['tz:africa:banjul'] = '반줄';
$labels['tz:africa:bissau'] = '비사우';
$labels['tz:africa:blantyre'] = '블랜타이어';
$labels['tz:africa:brazzaville'] = '브라자빌';
$labels['tz:africa:bujumbura'] = '부줌부라';
$labels['tz:africa:cairo'] = '카이로';
$labels['tz:africa:casablanca'] = '카사블랑카';
$labels['tz:africa:ceuta'] = '세우타';
$labels['tz:africa:conakry'] = '코나크리';
$labels['tz:africa:dakar'] = '다카르';
$labels['tz:africa:dar_es_salaam'] = '다르에스살람';
$labels['tz:africa:djibouti'] = '지부티';
$labels['tz:africa:douala'] = '두알라';
$labels['tz:africa:el_aaiun'] = '엘아이운';
$labels['tz:africa:freetown'] = '프리타운';
$labels['tz:africa:gaborone'] = '가보로네';
$labels['tz:africa:harare'] = '하라레';
$labels['tz:africa:johannesburg'] = '요하네스버그';
$labels['tz:africa:juba'] = '주바';
$labels['tz:africa:kampala'] = '캄팔라';
$labels['tz:africa:khartoum'] = '하르툼';
$labels['tz:africa:kigali'] = '키갈리';
$labels['tz:africa:kinshasa'] = '킨샤사';
$labels['tz:africa:lagos'] = '라고스';
$labels['tz:africa:libreville'] = '리브르빌';
$labels['tz:africa:lome'] = '로메';
$labels['tz:africa:luanda'] = '루안다';
$labels['tz:africa:lubumbashi'] = '루붐바시';
$labels['tz:africa:lusaka'] = '루사카';
$labels['tz:africa:malabo'] = '말라보';
$labels['tz:africa:maputo'] = '마푸토';
$labels['tz:africa:maseru'] = '마세루';
$labels['tz:africa:mbabane'] = '음바바네';
$labels['tz:africa:mogadishu'] = '모가디슈';
$labels['tz:africa:monrovia'] = '몬로비아';
$labels['tz:africa:nairobi'] = '나이로비';
$labels['tz:africa:ndjamena'] = '은자메나';
$labels['tz:africa:niamey'] = '니아메';
$labels['tz:africa:nouakchott'] = '뉴악쇼트';
$labels['tz:africa:ouagadougou'] = '와가두구';
$labels['tz:africa:porto-novo'] = '포르토노보';
$labels['tz:africa:sao_tome'] = '상투메';
$labels['tz:africa:tripoli'] = '트리폴리';
$labels['tz:africa:tunis'] = '튀니스';
$labels['tz:africa:windhoek'] = '빈트후크';
$labels['tz:america'] = '아메리카';
$labels['tz:america:adak'] = '에이댁';
$labels['tz:america:anchorage'] = '앵커리지';
$labels['tz:america:anguilla'] = '앙귈라';
$labels['tz:america:antigua'] = '안티과';
$labels['tz:america:araguaina'] = '아라구아이나';
$labels['tz:america:argentina'] = '아르헨티나';
$labels['tz:america:argentina:buenos_aires'] = '부에노스아이레스';
$labels['tz:america:argentina:catamarca'] = '카타마르카';
$labels['tz:america:argentina:cordoba'] = '코르도바';
$labels['tz:america:argentina:jujuy'] = '후후이';
$labels['tz:america:argentina:la_rioja'] = '라리오하';
$labels['tz:america:argentina:mendoza'] = '멘도자';
$labels['tz:america:argentina:rio_gallegos'] = '리오가제고스';
$labels['tz:america:argentina:salta'] = '살타';
$labels['tz:america:argentina:san_juan'] = '산후안';
$labels['tz:america:argentina:san_luis'] = '산루이';
$labels['tz:america:argentina:tucuman'] = '투쿠만';
$labels['tz:america:argentina:ushuaia'] = '우수아이아';
$labels['tz:america:aruba'] = '아루바';
$labels['tz:america:asuncion'] = '아순시온';
$labels['tz:america:atikokan'] = '아티코칸';
$labels['tz:america:bahia'] = '바이아';
$labels['tz:america:bahia_banderas'] = '바이아반데라스';
$labels['tz:america:barbados'] = '바베이도스';
$labels['tz:america:belem'] = '벨렘';
$labels['tz:america:belize'] = '벨리즈';
$labels['tz:america:blanc-sablon'] = '블랑사블롱';
$labels['tz:america:boa_vista'] = '보아비스타';
$labels['tz:america:bogota'] = '보고타';
$labels['tz:america:boise'] = '보이시';
$labels['tz:america:cambridge_bay'] = '케임브리지베이';
$labels['tz:america:campo_grande'] = '캄포그란데';
$labels['tz:america:cancun'] = '칸쿤';
$labels['tz:america:caracas'] = '카라카스';
$labels['tz:america:cayenne'] = '카옌';
$labels['tz:america:cayman'] = '케이맨';
$labels['tz:america:chicago'] = '시카고';
$labels['tz:america:chihuahua'] = '치와와';
$labels['tz:america:costa_rica'] = '코스타리카';
$labels['tz:america:creston'] = '크레스턴';
$labels['tz:america:cuiaba'] = '쿠이아바';
$labels['tz:america:curacao'] = '쿠라사우';
$labels['tz:america:danmarkshavn'] = '덴마크샤븐';
$labels['tz:america:dawson'] = '도슨';
$labels['tz:america:dawson_creek'] = '도슨크릭';
$labels['tz:america:denver'] = '덴버';
$labels['tz:america:detroit'] = '디트로이트';
$labels['tz:america:dominica'] = '도미니카';
$labels['tz:america:edmonton'] = '에드먼턴';
$labels['tz:america:eirunepe'] = '에이루네페';
$labels['tz:america:el_salvador'] = '엘살바도르';
$labels['tz:america:fort_nelson'] = '포트넬슨';
$labels['tz:america:fortaleza'] = '포르탈레자';
$labels['tz:america:glace_bay'] = '글레이스베이';
$labels['tz:america:godthab'] = '고드홉';
$labels['tz:america:goose_bay'] = '구스베이';
$labels['tz:america:grand_turk'] = '그랜드터크';
$labels['tz:america:grenada'] = '그레나다';
$labels['tz:america:guadeloupe'] = '과들루프';
$labels['tz:america:guatemala'] = '과테말라';
$labels['tz:america:guayaquil'] = '과야킬';
$labels['tz:america:guyana'] = '가이아나';
$labels['tz:america:halifax'] = '핼리팩스';
$labels['tz:america:havana'] = '아바나';
$labels['tz:america:hermosillo'] = '에르모시요';
$labels['tz:america:indiana'] = '인디애나';
$labels['tz:america:indiana:indianapolis'] = '인디애나폴리스';
$labels['tz:america:indiana:knox'] = '녹스';
$labels['tz:america:indiana:marengo'] = '마렝고';
$labels['tz:america:indiana:petersburg'] = '피터즈버그';
$labels['tz:america:indiana:tell_city'] = '텔시티';
$labels['tz:america:indiana:vevay'] = '베바이';
$labels['tz:america:indiana:vincennes'] = '빈센즈';
$labels['tz:america:indiana:winamac'] = '위너맥';
$labels['tz:america:inuvik'] = '이누빅';
$labels['tz:america:iqaluit'] = '이칼루이트';
$labels['tz:america:jamaica'] = '자메이카';
$labels['tz:america:juneau'] = '주노';
$labels['tz:america:kentucky'] = '켄터키';
$labels['tz:america:kentucky:louisville'] = '루이스빌';
$labels['tz:america:kentucky:monticello'] = '몬티셀로';
$labels['tz:america:kralendijk'] = '크랄렌데이크';
$labels['tz:america:la_paz'] = '라파스';
$labels['tz:america:lima'] = '리마';
$labels['tz:america:los_angeles'] = '로스앤젤레스';
$labels['tz:america:lower_princes'] = '로어 프린스';
$labels['tz:america:maceio'] = '마세이오';
$labels['tz:america:managua'] = '마나과';
$labels['tz:america:manaus'] = '마나우스';
$labels['tz:america:marigot'] = '마리고';
$labels['tz:america:martinique'] = '마르티니크';
$labels['tz:america:matamoros'] = '마타모로스';
$labels['tz:america:mazatlan'] = '마사틀란';
$labels['tz:america:menominee'] = '메노미니';
$labels['tz:america:merida'] = '메리다';
$labels['tz:america:metlakatla'] = '메틀라카틀라';
$labels['tz:america:mexico_city'] = '멕시코시티';
$labels['tz:america:miquelon'] = '미클롱';
$labels['tz:america:moncton'] = '몽크턴';
$labels['tz:america:monterrey'] = '몬테레이';
$labels['tz:america:montevideo'] = '몬테비데오';
$labels['tz:america:montserrat'] = '몬트세라트';
$labels['tz:america:nassau'] = '나소';
$labels['tz:america:new_york'] = '뉴욕';
$labels['tz:america:nipigon'] = '니피곤';
$labels['tz:america:nome'] = '놈';
$labels['tz:america:noronha'] = '노로냐';
$labels['tz:america:north_dakota'] = '노스다코타';
$labels['tz:america:north_dakota:beulah'] = '뷸라';
$labels['tz:america:north_dakota:center'] = '센터';
$labels['tz:america:north_dakota:new_salem'] = '뉴살렘';
$labels['tz:america:ojinaga'] = '오지나가';
$labels['tz:america:panama'] = '파나마';
$labels['tz:america:pangnirtung'] = '팽니텅';
$labels['tz:america:paramaribo'] = '파라마리보';
$labels['tz:america:phoenix'] = '피닉스';
$labels['tz:america:port-au-prince'] = '포르토프랭스';
$labels['tz:america:port_of_spain'] = '포트오브스페인';
$labels['tz:america:porto_velho'] = '포르토벨료';
$labels['tz:america:puerto_rico'] = '푸에르토리코';
$labels['tz:america:rainy_river'] = '레이니리버';
$labels['tz:america:rankin_inlet'] = '랭킨 인라잇';
$labels['tz:america:recife'] = '레시페';
$labels['tz:america:regina'] = '리자이나';
$labels['tz:america:resolute'] = '레졸루트';
$labels['tz:america:rio_branco'] = '리오브랑쿠';
$labels['tz:america:santarem'] = '산타렘';
$labels['tz:america:santiago'] = '산티아고';
$labels['tz:america:santo_domingo'] = '산토도밍고';
$labels['tz:america:sao_paulo'] = '상파울루';
$labels['tz:america:scoresbysund'] = '스코레스비순드';
$labels['tz:america:sitka'] = '시트카';
$labels['tz:america:st_barthelemy'] = '세인트바르텔레미';
$labels['tz:america:st_johns'] = "세인트존스";
$labels['tz:america:st_kitts'] = '세인트키츠';
$labels['tz:america:st_lucia'] = '세인트루시아';
$labels['tz:america:st_thomas'] = '세인트토머스';
$labels['tz:america:st_vincent'] = '세인트빈센트';
$labels['tz:america:swift_current'] = '스위프트커런트';
$labels['tz:america:tegucigalpa'] = '테구시갈파';
$labels['tz:america:thule'] = '툴레';
$labels['tz:america:thunder_bay'] = '선더베이';
$labels['tz:america:tijuana'] = '티화나';
$labels['tz:america:toronto'] = '토론토';
$labels['tz:america:tortola'] = '토르톨라';
$labels['tz:america:vancouver'] = '밴쿠버';
$labels['tz:america:whitehorse'] = '화이트호스';
$labels['tz:america:winnipeg'] = '위니페그';
$labels['tz:america:yakutat'] = '야쿠타트';
$labels['tz:america:yellowknife'] = '옐로나이프';
$labels['tz:antarctica'] = '남극';
$labels['tz:antarctica:casey'] = '케이시';
$labels['tz:antarctica:davis'] = '데이비스';
$labels['tz:antarctica:dumontdurville'] = "뒤몽뒤르빌";
$labels['tz:antarctica:macquarie'] = '맥코리';
$labels['tz:antarctica:mawson'] = '모손';
$labels['tz:antarctica:mcmurdo'] = '맥머도';
$labels['tz:antarctica:palmer'] = '팔머';
$labels['tz:antarctica:rothera'] = '로세라';
$labels['tz:antarctica:syowa'] = '쇼와';
$labels['tz:antarctica:troll'] = '트롤';
$labels['tz:antarctica:vostok'] = '보스토크';
$labels['tz:arctic'] = '북극';
$labels['tz:arctic:longyearbyen'] = '롱위에아르뷔엔';
$labels['tz:asia'] = '아시아';
$labels['tz:asia:aden'] = '아덴';
$labels['tz:asia:almaty'] = '알마티';
$labels['tz:asia:amman'] = '암만';
$labels['tz:asia:anadyr'] = '아나디리';
$labels['tz:asia:aqtau'] = '악타우';
$labels['tz:asia:aqtobe'] = '아크토베';
$labels['tz:asia:ashgabat'] = '아시가바트';
$labels['tz:asia:atyrau'] = '아티라우';
$labels['tz:asia:baghdad'] = '바그다드';
$labels['tz:asia:bahrain'] = '바레인';
$labels['tz:asia:baku'] = '바쿠';
$labels['tz:asia:bangkok'] = '방콕';
$labels['tz:asia:barnaul'] = '바르나울';
$labels['tz:asia:beirut'] = '베이루트';
$labels['tz:asia:bishkek'] = '비슈케크';
$labels['tz:asia:brunei'] = '브루나이';
$labels['tz:asia:chita'] = '치타';
$labels['tz:asia:choibalsan'] = '처이발상';
$labels['tz:asia:colombo'] = '콜롬보';
$labels['tz:asia:damascus'] = '다마스쿠스';
$labels['tz:asia:dhaka'] = '다카';
$labels['tz:asia:dili'] = '딜리';
$labels['tz:asia:dubai'] = '두바이';
$labels['tz:asia:dushanbe'] = '두샨베';
$labels['tz:asia:famagusta'] = '파마구스타';
$labels['tz:asia:gaza'] = '가자';
$labels['tz:asia:hebron'] = '헤브론';
$labels['tz:asia:ho_chi_minh'] = '호치민';
$labels['tz:asia:hong_kong'] = '홍콩';
$labels['tz:asia:hovd'] = '허브드';
$labels['tz:asia:irkutsk'] = '이르쿠츠크';
$labels['tz:asia:jakarta'] = '자카르타';
$labels['tz:asia:jayapura'] = '자야푸라';
$labels['tz:asia:jerusalem'] = '예루살렘';
$labels['tz:asia:kabul'] = '카불';
$labels['tz:asia:kamchatka'] = '캄차카';
$labels['tz:asia:karachi'] = '카라치';
$labels['tz:asia:kathmandu'] = '카트만두';
$labels['tz:asia:khandyga'] = '칸디가';
$labels['tz:asia:kolkata'] = '콜카타';
$labels['tz:asia:krasnoyarsk'] = '크라스노야르스크';
$labels['tz:asia:kuala_lumpur'] = '콸라룸푸르';
$labels['tz:asia:kuching'] = '쿠칭';
$labels['tz:asia:kuwait'] = '쿠웨이트';
$labels['tz:asia:macau'] = '마카오';
$labels['tz:asia:magadan'] = '마가단';
$labels['tz:asia:makassar'] = '마카사르';
$labels['tz:asia:manila'] = '마닐라';
$labels['tz:asia:muscat'] = '무스카트';
$labels['tz:asia:nicosia'] = '니코시아';
$labels['tz:asia:novokuznetsk'] = '노보쿠즈네츠크';
$labels['tz:asia:novosibirsk'] = '노보시비르스크';
$labels['tz:asia:omsk'] = '옴스크';
$labels['tz:asia:oral'] = '오랄';
$labels['tz:asia:phnom_penh'] = '프놈펜';
$labels['tz:asia:pontianak'] = '폰티아낙';
$labels['tz:asia:pyongyang'] = '평양';
$labels['tz:asia:qatar'] = '카타르';
$labels['tz:asia:qyzylorda'] = '키질로르다';
$labels['tz:asia:riyadh'] = '리야드';
$labels['tz:asia:sakhalin'] = '사할린';
$labels['tz:asia:samarkand'] = '사마르칸트';
$labels['tz:asia:seoul'] = '서울';
$labels['tz:asia:shanghai'] = '상하이';
$labels['tz:asia:singapore'] = '싱가포르';
$labels['tz:asia:srednekolymsk'] = '스레드네콜림스크';
$labels['tz:asia:taipei'] = '타이페이';
$labels['tz:asia:tashkent'] = '타슈켄트';
$labels['tz:asia:tbilisi'] = '트빌리시';
$labels['tz:asia:tehran'] = '테헤란';
$labels['tz:asia:thimphu'] = '팀부';
$labels['tz:asia:tokyo'] = '도쿄';
$labels['tz:asia:tomsk'] = '톰스크';
$labels['tz:asia:ulaanbaatar'] = '울란바토르';
$labels['tz:asia:urumqi'] = '우루무치';
$labels['tz:asia:ust-nera'] = '우스네라';
$labels['tz:asia:vientiane'] = '비엔티안';
$labels['tz:asia:vladivostok'] = '블라디보스토크';
$labels['tz:asia:yakutsk'] = '야쿠츠크';
$labels['tz:asia:yangon'] = '양곤';
$labels['tz:asia:yekaterinburg'] = '에카테린부르크';
$labels['tz:asia:yerevan'] = '예레반';
$labels['tz:atlantic'] = '대서양';
$labels['tz:atlantic:azores'] = '아조레스';
$labels['tz:atlantic:bermuda'] = '버뮤다';
$labels['tz:atlantic:canary'] = '카나리아';
$labels['tz:atlantic:cape_verde'] = '카보베르데';
$labels['tz:atlantic:faroe'] = '페로';
$labels['tz:atlantic:madeira'] = '마데이라';
$labels['tz:atlantic:reykjavik'] = '레이캬비크';
$labels['tz:atlantic:south_georgia'] = '사우스조지아';
$labels['tz:atlantic:st_helena'] = '세인트헬레나';
$labels['tz:atlantic:stanley'] = '스탠리';
$labels['tz:australia'] = '오스트레일리아';
$labels['tz:australia:adelaide'] = '애들레이드';
$labels['tz:australia:brisbane'] = '브리즈번';
$labels['tz:australia:broken_hill'] = '브로컨힐';
$labels['tz:australia:currie'] = '커리';
$labels['tz:australia:darwin'] = '다윈';
$labels['tz:australia:eucla'] = '유클라';
$labels['tz:australia:hobart'] = '호바트';
$labels['tz:australia:lindeman'] = '린드만';
$labels['tz:australia:lord_howe'] = '로드하우';
$labels['tz:australia:melbourne'] = '멜버른';
$labels['tz:australia:perth'] = '퍼스';
$labels['tz:australia:sydney'] = '시드니';
$labels['tz:europe'] = '유럽';
$labels['tz:europe:amsterdam'] = '암스테르담';
$labels['tz:europe:andorra'] = '안도라';
$labels['tz:europe:astrakhan'] = '아스트라칸';
$labels['tz:europe:athens'] = '아테네';
$labels['tz:europe:belgrade'] = '베오그라드';
$labels['tz:europe:berlin'] = '베를린';
$labels['tz:europe:bratislava'] = '브라티슬라바';
$labels['tz:europe:brussels'] = '브뤼셀';
$labels['tz:europe:bucharest'] = '부쿠레슈티';
$labels['tz:europe:budapest'] = '부다페스트';
$labels['tz:europe:busingen'] = '뷔징겐';
$labels['tz:europe:chisinau'] = '키시나우';
$labels['tz:europe:copenhagen'] = '코펜하겐';
$labels['tz:europe:dublin'] = '더블린';
$labels['tz:europe:gibraltar'] = '지브롤터';
$labels['tz:europe:guernsey'] = '건지';
$labels['tz:europe:helsinki'] = '헬싱키';
$labels['tz:europe:isle_of_man'] = '맨섬';
$labels['tz:europe:istanbul'] = '이스탄불';
$labels['tz:europe:jersey'] = '저지';
$labels['tz:europe:kaliningrad'] = '칼리닌그라드';
$labels['tz:europe:kiev'] = '키예프';
$labels['tz:europe:kirov'] = '키로프';
$labels['tz:europe:lisbon'] = '리스본';
$labels['tz:europe:ljubljana'] = '류블랴나';
$labels['tz:europe:london'] = '런던';
$labels['tz:europe:luxembourg'] = '룩셈부르크';
$labels['tz:europe:madrid'] = '마드리드';
$labels['tz:europe:malta'] = '몰타';
$labels['tz:europe:mariehamn'] = '마리에하먼';
$labels['tz:europe:minsk'] = '민스크';
$labels['tz:europe:monaco'] = '모나코';
$labels['tz:europe:moscow'] = '모스크바';
$labels['tz:europe:oslo'] = '오슬로';
$labels['tz:europe:paris'] = '파리';
$labels['tz:europe:podgorica'] = '포드고리차';
$labels['tz:europe:prague'] = '프라하';
$labels['tz:europe:riga'] = '리가';
$labels['tz:europe:rome'] = '로마';
$labels['tz:europe:samara'] = '사마라';
$labels['tz:europe:san_marino'] = '산마리노';
$labels['tz:europe:sarajevo'] = '사라예보';
$labels['tz:europe:saratov'] = '사라토프';
$labels['tz:europe:simferopol'] = '심페로폴리';
$labels['tz:europe:skopje'] = '스코페';
$labels['tz:europe:sofia'] = '소피아';
$labels['tz:europe:stockholm'] = '스톡홀름';
$labels['tz:europe:tallinn'] = '탈린';
$labels['tz:europe:tirane'] = '티라나';
$labels['tz:europe:ulyanovsk'] = '울리야노프스크';
$labels['tz:europe:uzhgorod'] = '우즈호로드';
$labels['tz:europe:vaduz'] = '파두츠';
$labels['tz:europe:vatican'] = '바티칸';
$labels['tz:europe:vienna'] = '비엔나';
$labels['tz:europe:vilnius'] = '빌뉴스';
$labels['tz:europe:volgograd'] = '볼고그라드';
$labels['tz:europe:warsaw'] = '바르샤바';
$labels['tz:europe:zagreb'] = '자그레브';
$labels['tz:europe:zaporozhye'] = '자포리자';
$labels['tz:europe:zurich'] = '취리히';
$labels['tz:indian'] = '인도양';
$labels['tz:indian:antananarivo'] = '안타나나리보';
$labels['tz:indian:chagos'] = '차고스';
$labels['tz:indian:christmas'] = '크리스마스';
$labels['tz:indian:cocos'] = '코코스';
$labels['tz:indian:comoro'] = '코모로';
$labels['tz:indian:kerguelen'] = '케르겔렌';
$labels['tz:indian:mahe'] = '마헤';
$labels['tz:indian:maldives'] = '몰디브';
$labels['tz:indian:mauritius'] = '모리셔스';
$labels['tz:indian:mayotte'] = '마요트';
$labels['tz:indian:reunion'] = '레위니옹';
$labels['tz:pacific'] = '태평양';
$labels['tz:pacific:apia'] = '아피아';
$labels['tz:pacific:auckland'] = '오클랜드';
$labels['tz:pacific:bougainville'] = '부겐빌';
$labels['tz:pacific:chatham'] = '채텀';
$labels['tz:pacific:chuuk'] = '축';
$labels['tz:pacific:easter'] = '이스터';
$labels['tz:pacific:efate'] = '에파테';
$labels['tz:pacific:enderbury'] = '엔더버리';
$labels['tz:pacific:fakaofo'] = '파카오포';
$labels['tz:pacific:fiji'] = '피지';
$labels['tz:pacific:funafuti'] = '푸나푸티';
$labels['tz:pacific:galapagos'] = '갈라파고스';
$labels['tz:pacific:gambier'] = '갬비어';
$labels['tz:pacific:guadalcanal'] = '과달카날';
$labels['tz:pacific:guam'] = '괌';
$labels['tz:pacific:honolulu'] = '호놀룰루';
$labels['tz:pacific:johnston'] = '존스톤';
$labels['tz:pacific:kiritimati'] = '키리티마티';
$labels['tz:pacific:kosrae'] = '코스라에';
$labels['tz:pacific:kwajalein'] = '콰잘렌';
$labels['tz:pacific:majuro'] = '마주로';
$labels['tz:pacific:marquesas'] = '마르키즈';
$labels['tz:pacific:midway'] = '미드웨이';
$labels['tz:pacific:nauru'] = '나우루';
$labels['tz:pacific:niue'] = '니우에';
$labels['tz:pacific:norfolk'] = '노퍽';
$labels['tz:pacific:noumea'] = '누메아';
$labels['tz:pacific:pago_pago'] = '파고파고';
$labels['tz:pacific:palau'] = '팔라우';
$labels['tz:pacific:pitcairn'] = '핏케언';
$labels['tz:pacific:pohnpei'] = '폰페이';
$labels['tz:pacific:port_moresby'] = '포트모레스비';
$labels['tz:pacific:rarotonga'] = '라로통가';
$labels['tz:pacific:saipan'] = '사이판';
$labels['tz:pacific:tahiti'] = '타히티';
$labels['tz:pacific:tarawa'] = '타라와';
$labels['tz:pacific:tongatapu'] = '통가타푸';
$labels['tz:pacific:wake'] = '웨이크';
$labels['tz:pacific:wallis'] = '월리스';
localization/ko_KR/labels.inc000064400000104221151727150560012207 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product에 오신 것을 환영합니다';
$labels['username'] = '사용자명';
$labels['password'] = '암호';
$labels['server'] = '서버';
$labels['login'] = '로그인';
$labels['oauthlogin'] = '$provider(으)로 로그인';
$labels['menu'] = '메뉴';
$labels['logout'] = '로그아웃';
$labels['mail'] = '메일';
$labels['settings'] = '설정';
$labels['addressbook'] = '주소록';
$labels['darkmode'] = '다크 모드';
$labels['lightmode'] = '라이트 모드';
$labels['inbox'] = '받은 편지함';
$labels['drafts'] = '임시 보관함';
$labels['sent'] = '보낸 편지함';
$labels['trash'] = '지운 편지함';
$labels['junk'] = '스팸 편지함';
$labels['show_real_foldernames'] = '특수 폴더에서 실제 명칭 표시';
$labels['subject'] = '제목';
$labels['from'] = '보낸 사람';
$labels['sender'] = '보내는 사람';
$labels['to'] = '받는 사람';
$labels['cc'] = '참조';
$labels['bcc'] = '숨은 참조';
$labels['replyto'] = '회신 주소';
$labels['followupto'] = '전달';
$labels['date'] = '날짜';
$labels['size'] = '크기';
$labels['priority'] = '우선 순위';
$labels['organization'] = '조직';
$labels['readstatus'] = '읽음 상태';
$labels['listoptions'] = '목록 옵션...';
$labels['listoptionstitle'] = '목록 옵션';
$labels['mailboxlist'] = '폴더';
$labels['messagesfromto'] = '총 $count개 중 $from 번째부터 $to 번째까지의 메시지';
$labels['threadsfromto'] = '총 $count개 중 $from 번째부터 $to 번째까지의 대화';
$labels['messagenrof'] = '총 $count개 중  $nr 번째 메시지';
$labels['fromtoshort'] = '총 $count개 중 $from 번째 - $to 번째';
$labels['copy'] = '복사';
$labels['move'] = '이동';
$labels['moveto'] = '다음 위치로 이동...';
$labels['copyto'] = '다음 위치로 복사...';
$labels['download'] = '다운로드';
$labels['open'] = '열기';
$labels['showattachment'] = '보기';
$labels['showanyway'] = '그래도 표시';
$labels['filename'] = '파일명';
$labels['filesize'] = '파일 크기';
$labels['addtoaddressbook'] = '주소록에 추가';
$labels['sun'] = '일';
$labels['mon'] = '월';
$labels['tue'] = '화';
$labels['wed'] = '수';
$labels['thu'] = '목';
$labels['fri'] = '금';
$labels['sat'] = '토';
$labels['sunday'] = '일요일';
$labels['monday'] = '월요일';
$labels['tuesday'] = '화요일';
$labels['wednesday'] = '수요일';
$labels['thursday'] = '목요일';
$labels['friday'] = '금요일';
$labels['saturday'] = '토요일';
$labels['jan'] = '1월';
$labels['feb'] = '2월';
$labels['mar'] = '3월';
$labels['apr'] = '4월';
$labels['may'] = '5월';
$labels['jun'] = '6월';
$labels['jul'] = '7월';
$labels['aug'] = '8월';
$labels['sep'] = '9월';
$labels['oct'] = '10월';
$labels['nov'] = '11월';
$labels['dec'] = '12월';
$labels['longjan'] = '1월';
$labels['longfeb'] = '2월';
$labels['longmar'] = '3월';
$labels['longapr'] = '4월';
$labels['longmay'] = '5월';
$labels['longjun'] = '6월';
$labels['longjul'] = '7월';
$labels['longaug'] = '8월';
$labels['longsep'] = '9월';
$labels['longoct'] = '10월';
$labels['longnov'] = '11월';
$labels['longdec'] = '12월';
$labels['today'] = '오늘';
$labels['refresh'] = '새로고침';
$labels['checkmail'] = '새 메시지 확인';
$labels['compose'] = '쓰기';
$labels['writenewmessage'] = '새 메시지 만들기';
$labels['reply'] = '회신';
$labels['replytomessage'] = '보낸 사람에게 회신';
$labels['replytoallmessage'] = '목록 또는 보낸 사람 및 모든 받는 사람에게 회신';
$labels['replyall'] = '전체 회신';
$labels['replylist'] = '회신 목록';
$labels['forward'] = '전달';
$labels['forwardinline'] = '본문 내용으로 전달';
$labels['forwardattachment'] = '첨부파일로 전달';
$labels['forwardmessage'] = '메시지 전달';
$labels['bouncemsg'] = '재전송 (반송)';
$labels['bounce'] = '재전송';
$labels['deletemessage'] = '메시지 삭제';
$labels['movemessagetotrash'] = '메시지를 지운 편지함으로 이동';
$labels['printmessage'] = '이 메시지 인쇄';
$labels['previousmessage'] = '이전 메시지 표시';
$labels['firstmessage'] = '처음 메시지 표시';
$labels['nextmessage'] = '다음 메시지 표시';
$labels['lastmessage'] = '마지막 메시지 표시';
$labels['backtolist'] = '메시지 목록으로 돌아가기';
$labels['viewsource'] = '소스 표시';
$labels['mark'] = '표시';
$labels['markmessages'] = '메시지 표시';
$labels['markread'] = '읽은 상태로 표시';
$labels['markunread'] = '읽지 않은 상태로 표시';
$labels['markflagged'] = '플래그 추가 상태';
$labels['markunflagged'] = '플래그 제거 상태';
$labels['markundeleted'] = '삭제안함으로';
$labels['moreactions'] = '추가 동작...';
$labels['markallread'] = '모두 읽은 상태로 표시';
$labels['folders-cur'] = '선택한 폴더에만 적용';
$labels['folders-sub'] = '선택한 폴더 및 하위 폴더에만 적용';
$labels['folders-all'] = '모든 폴더에 적용';
$labels['more'] = '더 보기';
$labels['back'] = '뒤로';
$labels['options'] = '옵션';
$labels['composeoptions'] = '쓰기 옵션';
$labels['optionsandattachments'] = '옵션 및 첨부파일';
$labels['actions'] = '동작';
$labels['first'] = '처음';
$labels['last'] = '마지막';
$labels['previous'] = '이전';
$labels['next'] = '다음';
$labels['select'] = '선택';
$labels['selection'] = '선택';
$labels['all'] = '모두';
$labels['none'] = '없음';
$labels['currpage'] = '현재 페이지';
$labels['isread'] = '읽음';
$labels['unread'] = '읽지 않음';
$labels['flagged'] = '플래그 지정';
$labels['unflagged'] = '플래그 없음';
$labels['unanswered'] = '답변하지 않음';
$labels['withattachment'] = '첨부파일을 포함';
$labels['deleted'] = '삭제됨';
$labels['undeleted'] = '삭제되지 않음';
$labels['replied'] = '회신함';
$labels['forwarded'] = '전달함';
$labels['invert'] = '반전';
$labels['filter'] = '필터';
$labels['list'] = '목록';
$labels['threads'] = '대화';
$labels['expand-all'] = '모두 펼치기';
$labels['expand-unread'] = '읽지 않은 상태의 메시지 펼치기';
$labels['collapse-all'] = '모두 접기';
$labels['threaded'] = '대화형';
$labels['showunread'] = '읽지 않은 메시지 표시';
$labels['autoexpand_threads'] = '메시지 대화 펼치기';
$labels['do_expand'] = '모든 대화';
$labels['expand_only_unread'] = '읽지 않은 상태의 메시지에만 적용';
$labels['fromto'] = '보내는 사람/받는 사람';
$labels['flag'] = '플래그 있음';
$labels['attachment'] = '첨부파일';
$labels['nonesort'] = '없음';
$labels['sentdate'] = '보낸 날짜';
$labels['arrival'] = '받은 날짜';
$labels['asc'] = '오름차순';
$labels['desc'] = '내림차순';
$labels['listcolumns'] = '열 목록 표시';
$labels['listsorting'] = '열 정렬 기준';
$labels['listorder'] = '정렬 순서';
$labels['listmode'] = '목록 화면 모드 ';
$labels['lmode'] = '목록 모드';
$labels['layout'] = '레이아웃';
$labels['layoutwidescreen'] = '와이드스크린';
$labels['layoutdesktop'] = '데스크탑';
$labels['layoutlist'] = '목록';
$labels['layoutwidescreendesc'] = '와이드스크린 (3열 화면)';
$labels['layoutdesktopdesc'] = '데스크탑 (와이드 목록 및 하단 메일 미리보기)';
$labels['layoutlistdesc'] = '목록 (메일 미리보기 없음)';
$labels['folderactions'] = '폴더 동작...';
$labels['compact'] = '압축';
$labels['empty'] = '비우기';
$labels['importmessages'] = '메시지 가져오기';
$labels['mailimportdesc'] = '<a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> 또는 <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> 형식의 파일로 메일을 업로드할 수 있습니다.';
$labels['mailimportzip'] = '여러 개 파일을 ZIP 압축 파일로 압축할 수 있습니다.';
$labels['quota'] = '디스크 사용량';
$labels['unknown'] = '알 수 없음';
$labels['unlimited'] = '무제한';
$labels['quotatype'] = '용량 제한 유형';
$labels['quotatotal'] = '제한 용량';
$labels['quotaused'] = '사용 용량';
$labels['quotastorage'] = '디스크 공간';
$labels['quotamessage'] = '메시지 개수';
$labels['shortheaderdate'] = '날짜: $date';
$labels['shortheaderto'] = '받는 사람: $to, 날짜: $date';
$labels['shortheaderfrom'] = '보낸 사람: $from, 날짜: $date';
$labels['quicksearch'] = '빠른 검색';
$labels['searchplaceholder'] = '검색...';
$labels['resetsearch'] = '검색 초기화';
$labels['searchmod'] = '수정자 검색';
$labels['msgtext'] = '전체 메시지';
$labels['body'] = '본문';
$labels['type'] = '유형';
$labels['namex'] = '이름';
$labels['searchscope'] = '범위';
$labels['currentfolder'] = '현재 폴더';
$labels['subfolders'] = '이 폴더 및 하위 폴더';
$labels['allfolders'] = '모든 폴더';
$labels['searchinterval-1W'] = '일주일 이전';
$labels['searchinterval-1M'] = '한 달 이전';
$labels['searchinterval-1Y'] = '일 년 이전';
$labels['searchinterval1W'] = '일주일 이후';
$labels['searchinterval1M'] = '한 달 이후';
$labels['searchinterval1Y'] = '일 년 이후';
$labels['openinextwin'] = '새 창에서 열기';
$labels['emlsave'] = '다운로드 (.eml)';
$labels['changeformattext'] = '메시지를 평문 형식으로 표시';
$labels['changeformathtml'] = 'HTML 형식으로 표시';
$labels['editasnew'] = '새 메시지로 편집';
$labels['send'] = '보내기';
$labels['sendmessage'] = '메일 보내기';
$labels['savemessage'] = '임시 보관함에 저장';
$labels['addattachment'] = '파일 첨부';
$labels['charset'] = '인코딩';
$labels['editortype'] = '편집기 유형';
$labels['returnreceipt'] = '읽음 확인';
$labels['dsn'] = '전송 상태 알림';
$labels['keepformatting'] = '계속 편집하기';
$labels['mailreplyintro'] = '$date에 $sender이(가) 쓴 내용:';
$labels['originalmessage'] = '원본 메시지';
$labels['selectimage'] = '이미지 선택';
$labels['addimage'] = '이미지 추가';
$labels['selectmedia'] = '동영상 선택';
$labels['addmedia'] = '동영상 추가';
$labels['encrypt'] = '암호화';
$labels['encryptmessage'] = '메시지 암호화';
$labels['encryptmessagemailvelope'] = 'Mailvelope으로 메시지 암호화';
$labels['importpubkeys'] = '공개 키 가져오기';
$labels['encryptedsendialog'] = '암호화 메시지 보내기';
$labels['encryptandsign'] = '암호화 및 서명';
$labels['keyid'] = '키 ID';
$labels['keylength'] = '비트';
$labels['keyexpired'] = '만료됨';
$labels['keyrevoked'] = '해지됨';
$labels['bccinstead'] = 'Bcc 사용';
$labels['addheader'] = '받는 사람 추가 (헤더)';
$labels['insert'] = '삽입';
$labels['insertcontact'] = '연락처 삽입';
$labels['recipient'] = '받는 사람';
$labels['recipientedit'] = '받는 사람 편집';
$labels['editidents'] = '신원 편집';
$labels['spellcheck'] = '맞춤법';
$labels['checkspelling'] = '맞춤법 검사';
$labels['resumeediting'] = '이어서 편집';
$labels['revertto'] = '돌아가기';
$labels['restore'] = '복구';
$labels['restoremessage'] = '메시지를 복구할까요?';
$labels['ignore'] = '무시';
$labels['responses'] = '응답';
$labels['insertresponse'] = '응답 삽입';
$labels['manageresponses'] = '응답 관리';
$labels['newresponse'] = '새 응답 만들기';
$labels['addresponse'] = '응답 추가';
$labels['editresponse'] = '응답 편집';
$labels['editresponses'] = '응답 편집';
$labels['responsename'] = '이름';
$labels['responsetext'] = '응답 문구';
$labels['attach'] = '첨부';
$labels['attachments'] = '첨부파일';
$labels['upload'] = '업로드';
$labels['uploadprogress'] = '$percent ($total 중 $current)';
$labels['close'] = '닫기';
$labels['messageoptions'] = '메시지 옵션...';
$labels['togglecomposeoptions'] = '구성 옵션 표시/숨기기';
$labels['attachmentrename'] = '첨부파일명 바꾸기';
$labels['low'] = '낮음';
$labels['lowest'] = '가장 낮음';
$labels['normal'] = '보통';
$labels['high'] = '높음';
$labels['highest'] = '가장 높음';
$labels['nosubject'] = '(제목 없음)';
$labels['showimages'] = '이미지 표시';
$labels['allow'] = '허용';
$labels['alwaysshow'] = '$sender이(가) 보낸 이미지 항상 표시';
$labels['alwaysallow'] = '$sender이(가) 보낸 메시지 항상 허용';
$labels['isdraft'] = '이것은 작성 중인 메시지입니다.';
$labels['andnmore'] = '$nr 더 보기...';
$labels['details'] = '세부사항';
$labels['summary'] = '요약';
$labels['headers'] = '헤더';
$labels['allheaders'] = '전체 헤더...';
$labels['togglemoreheaders'] = '메시지 헤더 더 보기';
$labels['togglefullheaders'] = '원본 메시지 헤더 표시/숨기기';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '평문';
$labels['savesentmessagein'] = '보낸 메시지를 다음 위치에 저장';
$labels['dontsave'] = '저장하지 않음';
$labels['maxuploadsize'] = '최대 허용 파일 크기는 $size 입니다';
$labels['addcc'] = '참조 추가';
$labels['addbcc'] = '숨은 참조 추가';
$labels['addreplyto'] = '회신 주소 추가';
$labels['addfollowupto'] = '전달 추가';
$labels['sendreceipt'] = '읽음 확인 요청을 보낼까요?';
$labels['mdnrequest'] = '이 메시지를 보낸 사람이 사용자가 이 메시지를 읽었을 때 읽음 확인을 요청했습니다. 보낸 사람에게 알리시겠습니까?';
$labels['receiptread'] = '읽음 확인 (수신)';
$labels['yourmessage'] = '이것은 사용자의 메시지에 대한 읽음 확인입니다.';
$labels['receiptnote'] = '참고: 이 읽음 확인은 이 메시지가 받는 사람의 컴퓨터에 표시되었다는 것만을 의미합니다. 받는 사람이 해당 메시지 내용을 읽었거나 이해했다는 보장은 없습니다.';
$labels['sendalwaysto'] = '항상 $email(으)로 보내기';
$labels['zoomin'] = '확대';
$labels['zoomout'] = '축소';
$labels['rotate'] = '회전';
$labels['increaseimage'] = '이미지 크기 증가';
$labels['decreaseimage'] = '이미지 크기 감소';
$labels['rotateimage'] = '이미지 회전';
$labels['showtools'] = '이미지 도구 표시';
$labels['hidetools'] = '이미지 도구 숨기기';
$labels['name'] = '표시명';
$labels['firstname'] = '이름';
$labels['surname'] = '성';
$labels['middlename'] = '중간 이름';
$labels['nameprefix'] = '접두사';
$labels['namesuffix'] = '접미사';
$labels['nickname'] = '별칭';
$labels['jobtitle'] = '직책';
$labels['department'] = '부서';
$labels['gender'] = '성별';
$labels['maidenname'] = '결혼 전의 성';
$labels['email'] = '이메일';
$labels['phone'] = '전화';
$labels['address'] = '주소';
$labels['street'] = '도로명';
$labels['locality'] = '시/구/군';
$labels['zipcode'] = '우편번호';
$labels['region'] = '시/도';
$labels['country'] = '국가';
$labels['birthday'] = '생년월일';
$labels['anniversary'] = '기념일';
$labels['website'] = '웹사이트';
$labels['instantmessenger'] = '인스턴트 메신저';
$labels['notes'] = '메모';
$labels['male'] = '남성';
$labels['female'] = '여성';
$labels['manager'] = '상사';
$labels['assistant'] = '비서';
$labels['spouse'] = '배우자';
$labels['allfields'] = '모든 필드';
$labels['search'] = '검색';
$labels['searchresult'] = '검색 결과';
$labels['advsearch'] = '고급 검색';
$labels['advanced'] = '고급';
$labels['other'] = '기타';
$labels['printcontact'] = '연락처 인쇄';
$labels['qrcode'] = 'QR 코드';
$labels['typehome'] = '자택';
$labels['typework'] = '직장';
$labels['typeother'] = '기타';
$labels['typemobile'] = '휴대전화';
$labels['typemain'] = '기본';
$labels['typehomefax'] = '자택 팩스';
$labels['typeworkfax'] = '직장 팩스';
$labels['typecar'] = '차량';
$labels['typepager'] = '호출기';
$labels['typevideo'] = '동영상';
$labels['typeassistant'] = '비서';
$labels['typehomepage'] = '홈페이지';
$labels['typeblog'] = '블로그';
$labels['typeprofile'] = '자기소개';
$labels['addfield'] = '필드 추가..';
$labels['addcontact'] = '연락처 추가';
$labels['editcontact'] = '연락처 편집';
$labels['contacts'] = '연락처';
$labels['contactproperties'] = '연락처 속성';
$labels['contactnameandorg'] = '상호 및 조직';
$labels['personalinfo'] = '개인 정보';
$labels['personal'] = '개인';
$labels['contactphoto'] = '연락처 사진';
$labels['edit'] = '편집';
$labels['cancel'] = '취소';
$labels['save'] = '저장';
$labels['delete'] = '삭제';
$labels['discard'] = '폐기';
$labels['continue'] = '계속';
$labels['ok'] = '확인';
$labels['rename'] = '이름 바꾸기';
$labels['addphoto'] = '추가';
$labels['replacephoto'] = '변경';
$labels['uploadphoto'] = '사진 업로드';
$labels['choosefile'] = '파일 선택...';
$labels['choosefiles'] = '파일 선택...';
$labels['browse'] = '찾아보기';
$labels['newcontact'] = '새 연락처 만들기';
$labels['deletecontact'] = '선택한 연락처 삭제';
$labels['composeto'] = '메일 쓰기 대상';
$labels['contactsfromto'] = '총 $count개의 연락처 중 $from 번째부터 $to 번째 까지';
$labels['print'] = '인쇄';
$labels['export'] = '내보내기';
$labels['exportall'] = '모두 내보내기';
$labels['exportsel'] = '선택한 항목 내보내기';
$labels['exportvcards'] = '연락처를 vCard 형식으로 내보내기';
$labels['newgroup'] = '새 그룹 만들기';
$labels['addgroup'] = '그룹 추가';
$labels['grouprename'] = '그룹명 바꾸기';
$labels['groupdelete'] = '그룹 삭제';
$labels['groupassign'] = '그룹 지정...';
$labels['groupremove'] = '그룹에서 제거';
$labels['groupremoveselected'] = '선택한 연락처를 그룹에서 제거';
$labels['uponelevel'] = '한 단계 상위 이동';
$labels['previouspage'] = '이전 페이지 보기';
$labels['firstpage'] = '처음 페이지 보기';
$labels['nextpage'] = '다음 페이지 보기';
$labels['lastpage'] = '마지막 페이지 보기';
$labels['group'] = '그룹';
$labels['groups'] = '그룹';
$labels['listgroup'] = '그룹 구성원 목록 표시';
$labels['personaladrbook'] = '개인 주소';
$labels['searchsave'] = '검색 저장';
$labels['searchdelete'] = '검색 삭제';
$labels['import'] = '가져오기';
$labels['importcontacts'] = '연락처 가져오기';
$labels['importfromfile'] = '파일에서 가져오기';
$labels['importtarget'] = '연락처를 추가할 위치';
$labels['importreplace'] = '전체 주소록을 바꾸기';
$labels['importgroups'] = '그룹 할당 가져오기';
$labels['importgroupsall'] = '전체 (필요에 따라 그룹 생성)';
$labels['importgroupsexisting'] = '기존 그룹에만 해당';
$labels['importdesc'] = '기존 주소록에서 연락처를 가져올 수 있습니다.<br/> 현재 <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> 및 CSV (콤마-구분) 데이터 형식에서 주소 가져오기를 지원합니다.';
$labels['importmapdesc'] = 'CSV(쉼표 구분) 데이터를 가져오기를 진행하기 전에 아래 필드 맵핑 정보가 정확한지 확인하십시오.';
$labels['fieldnotmapped'] = '필드가 매핑되지 않음 (가져오지 않음)';
$labels['skipheader'] = '첫 번째 행 (헤더) 가져오지 않음';
$labels['done'] = '완료';
$labels['settingsfor'] = '설정';
$labels['about'] = '정보...';
$labels['preferences'] = '환경설정';
$labels['userpreferences'] = '사용자 환경설정';
$labels['editpreferences'] = '사용자 환경설정 편집';
$labels['identities'] = '신원';
$labels['manageidentities'] = '신원 관리';
$labels['newidentity'] = '새 신원 만들기';
$labels['addidentity'] = '신원 추가';
$labels['editidentity'] = '신원 편집';
$labels['identityencryption'] = '암호화';
$labels['preferhtml'] = 'HTML 표시';
$labels['defaultcharset'] = '기본 인코딩';
$labels['htmlmessage'] = 'HTML 메시지';
$labels['messagepart'] = '부분';
$labels['digitalsig'] = '디지털 서명';
$labels['dateformat'] = '날짜 형식';
$labels['timeformat'] = '시간 형식';
$labels['prettydate'] = '요일 및 시간으로 날짜 표시';
$labels['setdefault'] = '기본 값으로 설정';
$labels['autodetect'] = '자동';
$labels['language'] = '언어';
$labels['timezone'] = '시간대';
$labels['pagesize'] = '페이지당 행 개수';
$labels['signature'] = '서명';
$labels['dstactive'] = '일광 절약 시간';
$labels['showinextwin'] = '메시지를 새 창에서 열기';
$labels['composeextwin'] = '새 창에서 쓰기';
$labels['htmleditor'] = 'HTML 메시지 쓰기';
$labels['htmlonreply'] = 'HTML 메시지 회신 시';
$labels['htmlonreplyandforward'] = '전달 또는 HTML 메시지 회신 시';
$labels['htmlsignature'] = 'HTML 서명';
$labels['showemail'] = '이메일 주소를 표시명과 함께 표시';
$labels['previewpane'] = '미리보기 창 표시';
$labels['skin'] = '인터페이스 스킨';
$labels['logoutclear'] = '로그아웃 할 때 지운 편지함 비우기';
$labels['logoutcompact'] = '로그아웃 할 때 받은 편지함 압축';
$labels['uisettings'] = '사용자 인터페이스';
$labels['serversettings'] = '서버 설정';
$labels['mailboxview'] = '편지함 화면';
$labels['mdnrequests'] = '읽음 확인 요청 시';
$labels['askuser'] = '사용자에게 물음';
$labels['autosend'] = '읽음 확인 요청';
$labels['autosendknown'] = '내 연락처에 읽음 확인을 요청하고, 내 연락처가 아닐 경우 물어봄';
$labels['autosendknownignore'] = '내 연락처에 읽음 확인을 요청하고, 내 연락처가 아닐 경우 무시함';
$labels['autosendtrusted'] = '읽음 확인 요청을 신뢰하는 연락처에게 보내기, 아닐 경우 묻기';
$labels['autosendtrustedignore'] = '읽음 확인 요청을 신뢰하는 연락처에게 보내기, 아닐 경우 무시하기';
$labels['ignorerequest'] = '요청 무시';
$labels['readwhendeleted'] = '삭제 시 메시지를 읽은 상태로 표시';
$labels['flagfordeletion'] = '삭제 대신 삭제 대상 메시지에 플래그 추가';
$labels['skipdeleted'] = '삭제된 메시지를 표시하지 않음';
$labels['deletealways'] = '지운 편지함으로 메시지 이동이 실패할 경우 삭제';
$labels['deletejunk'] = '스팸 메일함에 있는 메시지를 직접 삭제';
$labels['showremoteimages'] = '본문에 원격 이미지 표시';
$labels['allowremoteresources'] = '외부 리소스 허용 (이미지, 스타일)';
$labels['fromknownsenders'] = '알려진 사람으로부터 받은 메시지만';
$labels['fromtrustedsenders'] = '신뢰하는 연락처로부터';
$labels['frommycontacts'] = '내 연락처에서';
$labels['always'] = '항상';
$labels['alwaysbutplain'] = '항상, 단 평문으로 회신할 때는 예외';
$labels['showinlineimages'] = '메시지 하단에 첨부 이미지 표시';
$labels['autosavedraft'] = '작성 중인 메시지 자동 저장';
$labels['everynminutes'] = '$n분 마다';
$labels['refreshinterval'] = '새로고침 (새 메시지 확인 등)';
$labels['never'] = '하지 않음';
$labels['immediately'] = '즉시';
$labels['messagesdisplaying'] = '메시지 표시';
$labels['messagescomposition'] = '메시지 작성';
$labels['mimeparamfolding'] = '첨부파일명';
$labels['2231folding'] = 'Full RFC 2231 (썬더버드)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS 아웃룩)';
$labels['2047folding'] = 'Full RFC 2047 (기타)';
$labels['force7bit'] = '8-bit 문자에 MIME 인코딩 사용';
$labels['savelocalstorage'] = "브라우저의 로컬 저장소에 저장 (임시)";
$labels['advancedoptions'] = '고급 옵션';
$labels['toggleadvancedoptions'] = '고급 옵션 표시/숨기기';
$labels['focusonnewmessage'] = '새 메시지가 있을 경우 브라우저 창으로 포커스 이동';
$labels['checkallfolders'] = '모든 폴더에서 새 메시지 확인';
$labels['displaynext'] = '삭제/이동 후 다음 항목 표시';
$labels['defaultfont'] = 'HTML 메시지의 기본 글꼴';
$labels['mainoptions'] = '기본 옵션';
$labels['browseroptions'] = '브라우저 옵션';
$labels['section'] = '섹션';
$labels['maintenance'] = '유지관리';
$labels['newmessage'] = '새 메시지';
$labels['signatureoptions'] = '서명 옵션';
$labels['whenreplying'] = '회신 시';
$labels['replyempty'] = '원문 메시지를 인용하지 않음';
$labels['replytopposting'] = '새 메시지를 인용문 상단에서 시작';
$labels['replytoppostingnoindent'] = '새 메시지를 인용문 상단에서 시작 (들여쓰기 없음)';
$labels['replybottomposting'] = '새 메시지를 인용문 하단에서 시작';
$labels['replyremovesignature'] = '회신 시 메시지에서 원문 서명을 제거';
$labels['autoaddsignature'] = '서명 자동 추가';
$labels['newmessageonly'] = '새 메시지에만';
$labels['replyandforwardonly'] = '회신 및 전달 메시지에만';
$labels['insertsignature'] = '서명 삽입';
$labels['sigbelow'] = '인용한 메시지 아래에 서명 표시';
$labels['sigseparator'] = '서명에 표준 분리자 강제 적용';
$labels['automarkread'] = '메시지를 읽은 상태로 표시';
$labels['afternseconds'] = '$n초 후';
$labels['reqmdn'] = '읽음 확인을 항상 요청';
$labels['reqdsn'] = '전송 상태 알림을 항상 요청';
$labels['replysamefolder'] = ' 회신 메시지를 회신 대상 메시지의 폴더로 이동';
$labels['defaultabook'] = '기본 주소록';
$labels['autocompletesingle'] = '자동 완성에서 대체 이메일 주소를 건너뜀';
$labels['listnamedisplay'] = '연락처 정렬 방식';
$labels['contactformmode'] = '연락처 양식 모드';
$labels['privatemode'] = '개인 (집)';
$labels['businessmode'] = '직장 (회사)';
$labels['collectedaddresses'] = '수집된 주소';
$labels['collectedrecipients'] = '수집된 수신자';
$labels['collectedrecipientsopt'] = '발송 이메일의 수신인을 저장할 위치';
$labels['collectedsendersopt'] = '신뢰하는 연락처 저장 위치';
$labels['trustedsenders'] = '신뢰하는 연락처';
$labels['spellcheckbeforesend'] = '메시지를 보내기 전에 맞춤법 검사';
$labels['spellcheckoptions'] = '맞춤법 검사 옵션';
$labels['spellcheckignoresyms'] = '기호가 포함된 단어 무시';
$labels['spellcheckignorenums'] = '숫자가 포함된 단어 무시';
$labels['spellcheckignorecaps'] = '모두 대문자로 표기된 단어 무시';
$labels['addtodict'] = '사전에 추가';
$labels['mailtoprotohandler'] = 'mailto: 링크의 프로토콜 처리자 등록';
$labels['standardwindows'] = '팝업을 일반 창같이 취급';
$labels['forwardmode'] = '메시지 전달 방식';
$labels['inline'] = '본문 내용';
$labels['asattachment'] = '첨부파일';
$labels['replyallmode'] = '[전체 회신] 버튼의 기본 동작';
$labels['replyalldefault'] = '전체 회신';
$labels['replyalllist'] = '발송 목록에만 회신 (찾았을 경우)';
$labels['allmessages'] = '모든 메시지';
$labels['olderxdays'] = '$x일 이전';
$labels['folder'] = '폴더';
$labels['folders'] = '폴더';
$labels['foldername'] = '폴더명';
$labels['subscribed'] = '구독함';
$labels['messagecount'] = '메시지';
$labels['create'] = '추가';
$labels['createfolder'] = '새 폴더 만들기';
$labels['managefolders'] = '폴더 관리';
$labels['specialfolders'] = '특수 폴더';
$labels['properties'] = '속성';
$labels['folderproperties'] = '폴더 속성';
$labels['parentfolder'] = '상위 폴더';
$labels['location'] = '위치';
$labels['info'] = '정보';
$labels['getfoldersize'] = '폴더 크기를 확인하려면 클릭';
$labels['changesubscription'] = '구독을 변경하려면 클릭';
$labels['foldertype'] = '폴더 유형';
$labels['personalfolder'] = '개인 폴더';
$labels['otherfolder'] = '다른 사용자의 폴더';
$labels['sharedfolder'] = '공개 폴더';
$labels['findfolders'] = '폴더 찾기';
$labels['findcontacts'] = '연락처 검색';
$labels['findmail'] = '메일 메시지 검색';
$labels['namespace.personal'] = '개인';
$labels['namespace.other'] = '기타 사용자';
$labels['namespace.shared'] = '공유됨';
$labels['dualuselabel'] = '다음 항목만 담기:';
$labels['dualusemail'] = '메시지';
$labels['dualusefolder'] = '폴더';
$labels['generate'] = '생성';
$labels['encryptioncreatekey'] = '새 키 페어 만들기';
$labels['openmailvelopesettings'] = 'Mailvelope 설정 열기';
$labels['encryptionprivkeysinmailvelope'] = 'Mailvelope 열쇠고리에 저장된 개인 키 중 $nr개의 일치하는 키가 있습니다:';
$labels['encryptionnoprivkeysinmailvelope'] = '현재 보내는 사람 신원에는 Mailvelope 확장에 보관된 PGP 개인 키가 없습니다. 암호화된 메시지를 사용하기 위해 키를 하나 만드시겠습니까?';
$labels['encryption'] = '암호화';
$labels['mailvelopeoptions'] = 'Mailvelope 옵션';
$labels['mailvelopemainkeyring'] = 'Mailvelope 기본 키링 사용';
$labels['mailvelopenotfound'] = 'Mailvelope 확장기능이 브라우저에(서) 활성화/설치되지 않았습니다.';
$labels['sortby'] = '정렬 ';
$labels['sortasc'] = '오름차순으로 정렬';
$labels['sortdesc'] = '내림차순으로 정렬';
$labels['undo'] = '실행 취소';
$labels['installedplugins'] = '설치된 플러그인';
$labels['plugin'] = '플러그인';
$labels['version'] = '버전';
$labels['source'] = '원본';
$labels['destination'] = '대상';
$labels['license'] = '라이선스';
$labels['support'] = '지원 요청';
$labels['savedsearches'] = '저장된 검색';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = '유니코드';
$labels['english'] = '영어';
$labels['westerneuropean'] = '서유럽어';
$labels['easterneuropean'] = '동유럽어';
$labels['southeasterneuropean'] = '남동유럽어';
$labels['baltic'] = '발트어';
$labels['cyrillic'] = '키릴어';
$labels['arabic'] = '아랍어';
$labels['greek'] = '그리스어';
$labels['hebrew'] = '히브리어';
$labels['turkish'] = '터키어';
$labels['nordic'] = '북유럽어';
$labels['thai'] = '태국어';
$labels['celtic'] = '켈트어';
$labels['vietnamese'] = '베트남어';
$labels['japanese'] = '일본어';
$labels['korean'] = '한국어';
$labels['chinese'] = '중국어';
$labels['arialabeltopnav'] = '창 제어';
$labels['arialabeltasknav'] = '앱 작업';
$labels['arialabeltoolbar'] = '앱 도구 표시줄';
$labels['arialabellistnav'] = '목록 탐색';
$labels['arialabelactivetask'] = '활성화된 작업';
$labels['arialabelmessagessearchfilter'] = '이메일 목록 필터';
$labels['arialabelmailsearchform'] = '이메일 메시지 검색 양식';
$labels['arialabelcontactsearchform'] = '연락처 검색 양식';
$labels['arialabelmailquicksearchbox'] = '이메일 검색 입력';
$labels['arialabelquicksearchbox'] = '검색 입력';
$labels['arialabelfoldersearchfilter'] = '폴더 목록 표시 필터';
$labels['arialabelfoldersearchform'] = '폴터 검색 양식';
$labels['arialabelfolderlist'] = '이메일 폴더 선택';
$labels['arialabelmessagelist'] = '이메일 메시지 목록';
$labels['arialabelmailpreviewframe'] = '메시지 미리보기';
$labels['arialabelmailboxmenu'] = '폴더 동작 메뉴';
$labels['arialabellistselectmenu'] = '목록 선택 메뉴';
$labels['arialabelthreadselectmenu'] = '대화 목록 메뉴';
$labels['arialabelmessagelistoptions'] = '메시지 목록 표시 및 정렬 옵션';
$labels['arialabelmailimportdialog'] = '메시지 가져오기 대화';
$labels['arialabelmessagenav'] = '메시지 탐색';
$labels['arialabelmessagebody'] = '메시지 본문';
$labels['arialabelmessageactions'] = '메시지 동작';
$labels['arialabelcontactquicksearch'] = '연락처 검색 양식';
$labels['arialabelcontactsearchbox'] = '연락처 검색 입력';
$labels['arialabelmessageheaders'] = '메시지 헤더';
$labels['arialabelforwardingoptions'] = '전달 옵션';
$labels['arialabelreplyalloptions'] = '전체 회신 옵션';
$labels['arialabelmoremessageactions'] = '더 많은 메시지 동작';
$labels['arialabelmorecontactactions'] = '더 많은 연락처 동작';
$labels['arialabelmarkmessagesas'] = '선택한 메시지를 다음으로 표시..';
$labels['arialabelcomposeoptions'] = '작성 옵션';
$labels['arialabelresponsesmenu'] = '저장된 응답 메뉴';
$labels['arialabelattachmentuploadform'] = '첨부파일 업로드 양식';
$labels['arialabelattachmentmenu'] = '첨부파일 옵션';
$labels['arialabelmailtomenu'] = '이메일 주소 옵션';
$labels['arialabelattachmentpreview'] = '첨부파일 미리보기';
$labels['ariasummarycomposecontacts'] = '받는 사람으로 선택할 연락처 및 그룹 목록';
$labels['arialabelcontactexportoptions'] = '연락처 내보내기 옵션';
$labels['arialabelabookgroupoptions'] = '주소록/그룹 옵션';
$labels['arialabelpreferencesform'] = '환경 설정 양식';
$labels['arialabelidentityeditfrom'] = '신원 편집 양식';
$labels['arialabelresponseeditfrom'] = '응답 편집 양식';
$labels['arialabelsearchterms'] = '용어 검색';
$labels['arialabeldropactionmenu'] = '끌어서 놓기 동작 메뉴';
$labels['arialabelheadersmenu'] = '받는 사람 (헤더) 추가 메뉴';
$labels['arialabelimagetools'] = '이미지 도구';
$labels['helplistnavigation'] = '키보드 탐색 목록 표시';
$labels['helplistkeyboardnavigation'] = "상/하 화살표: 행 포커스/선택 이동
Space: 포커스된 행 선택
Shift + 상/하 화살표: 위/아래 행을 추가적으로 선택
Ctrl + Space: 포커스된 행을 선택/제거 대상 선택에서 추가";
$labels['helplistkeyboardnavmessages'] = "상/하 화살표: 메시지 대화 펼치기/접기(오직 대화 모드에서)
Enter: 선택한/포커스된 메시지 열기
Delete: 선택한 메시지를 지운 편지함으로 이동";
$labels['helplistkeyboardnavcontacts'] = "Enter: 선택한/포커스된 연락처 열기";
localization/ko_KR/messages.inc000064400000047744151727150560012574 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '오류가 발생했습니다!';
$messages['loginfailed']  = '로그인이 실패했습니다.';
$messages['cookiesdisabled'] = '브라우저가 쿠키를 허용하지 않습니다.';
$messages['sessionerror'] = '세션이 유효하지 않거나 만료되었습니다.';
$messages['cookiesmismatch'] = '쿠키 불일치를 감지했습니다. 브라우저 쿠키를 지워주세요.';
$messages['storageerror'] = '저장소 서버에 연결을 실패했습니다.';
$messages['servererror'] = '서버 오류!';
$messages['servererrormsg'] = '서버 오류: $msg';
$messages['accountlocked'] = '로그인 시도 횟수를 초과함. 나중에 다시 시도하세요.';
$messages['connerror'] = '연결 오류 (서버 접속 실패)!';
$messages['dberror'] = '데이터베이스 오류!';
$messages['dbconnerror'] = '데이터베이스에 연결할 수 없습니다.';
$messages['windowopenerror'] = '팝업 창이 차단되었습니다!';
$messages['requesttimedout'] = '요청 시간 초과';
$messages['errorreadonly'] = '작업을 수행할 수 없습니다. 읽기 전용 폴더입니다.';
$messages['errornoperm'] = '작업을 수행할 수 없습니다. 권한이 거부되었습니다.';
$messages['erroroverquota'] = '작업을 수행할 수 없습니다. 여유 디스크 공간이 없습니다.';
$messages['erroroverquotadelete'] = '여유 디스크 공간이 없습니다. SHIF+DEL로 메시지를 삭제하세요.';
$messages['invalidrequest'] = '잘못된 요청! 데이터가 저장되지 않았습니다.';
$messages['invalidhost'] = '잘못된 서버 이름입니다.';
$messages['nomessagesfound'] = '이 편지함에서 메시지를 발견하지 못했습니다.';
$messages['loggedout'] = '세션을 성공적으로 종료했습니다. 안녕히 가세요!';
$messages['mailboxempty'] = '편지함이 비어있음';
$messages['nomessages'] = '메시지 없음';
$messages['refreshing'] = '새로고침 중...';
$messages['loading'] = '로딩 중...';
$messages['uploading'] = '파일 업로드 중...';
$messages['attaching'] = '파일 첨부 중...';
$messages['uploadingmany'] = '파일 업로드 중...';
$messages['loadingdata'] = '데이터 로딩 중...';
$messages['checkingmail'] = '새 메시지 확인 중...';
$messages['sendingmessage'] = '메시지 발송 중...';
$messages['messagesent'] = '메시지를 성공적으로 보냈습니다.';
$messages['savingmessage'] = '메시지 저장 중...';
$messages['messagesaved'] = '메시지가 임시 보관함에 저장되었습니다.';
$messages['successfullysaved'] = '성공적으로 저장함.';
$messages['savingresponse'] = '응답 문구 저장 중...';
$messages['deleteresponseconfirm'] = '정말로 이 응답 문구를 삭제하시겠습니까?';
$messages['nocontactselected'] = '아직 연락처를 선택하지 않으셨습니다.';
$messages['addedsuccessfully'] = '연락처가 주소록에 성공적으로 추가되었습니다.';
$messages['contactexists'] = '동일한 이메일 주소의 연락처가 이미 존재합니다.';
$messages['contactnameexists'] = '연락처에 동일한 이름이 이미 존재합니다.';
$messages['blockedimages'] = '개인 정보 보호를 위해, 이 메시지의 외부 이미지를 차단했습니다.';
$messages['blockedresources'] = '개인정보 보호를 위해 외부 리소스를 차단했습니다.';
$messages['suspiciousemail'] = '이 메시지에 사기가 의심되는 수상한 이메일 주소가 포함되어 있습니다.';
$messages['bccemail'] = '전달된 메시지에 비밀 수신자(Bcc)가 포함되어 있습니다.';
$messages['bouncehint'] = '메시지를 수정 없이 보냅니다. 예: 본문, 헤더 및 수신자를 원본 그대로 사용.';
$messages['encryptedmessage'] = '이것은 암호화된 메시지며 표시할 수 없습니다. 죄송합니다!';
$messages['externalmessagedecryption'] = '이것은 암호화된 메시지이며 브라우저 확장 기능으로 해독할 수 있습니다.';
$messages['nopubkeyfor'] = '$email에 대한 올바른 공개 키를 찾지 못함';
$messages['nopubkeyforsender'] = '발신자 신원에 대한 올바른 공개 키를 찾지 못했습니다. 받는 사람에 대한 메시지만 암호화하시겠습니까?';
$messages['encryptnoattachments'] = '이미 첨부파일을 업로드하여 암호화할 수 없음. 암호화 편집기에 다시 추가해주세요.';
$messages['searchpubkeyservers'] = '분실한 키에 대한 공개 키 서버를 검색하시겠습니까?';
$messages['encryptpubkeysfound'] = '다음 공개 키가 발견되었습니다:';
$messages['keyservererror'] = '키 서버로부터 키를 가져오지 못했습니다';
$messages['keyimportsuccess'] = '공개 키 $key 하나를 열쇠고리에 성공적으로 가져왔습니다.';
$messages['nocontactsfound'] = '연락처를 발견하지 못했습니다.';
$messages['contactnotfound'] = '요청한 연락처를 찾을 수 없습니다.';
$messages['contactsearchonly'] = '선택한 주소록에서 연락처를 보려면 검색 상자를 이용하세요.';
$messages['sendingfailed'] = '메시지 발송을 실패했습니다.';
$messages['senttooquickly'] = '이 메시지를 보내기 전에 $sec초 동안 기다려주세요.';
$messages['errorsavingsent'] = '보낸 메시지를 저장하는 도중 오류가 발생했습니다.';
$messages['errorsaving'] = '저장하는 동안 오류가 발생했습니다.';
$messages['errormoving'] = '메시지를 이동할 수 없었습니다.';
$messages['errorcopying'] = '메시지를 복사할 수 없었습니다.';
$messages['errordeleting'] = '메시지를 삭제할 수 없었습니다.';
$messages['errormarking'] = '메시지를 표시할 수 없었습니다.';
$messages['alerttitle'] = '주목';
$messages['confirmationtitle'] = '정말...';
$messages['deletecontactconfirm']  = '정말로 선택한 연락처를 삭제하시겠습니까?';
$messages['deletegroupconfirm']  = '정말로 선택한 그룹을 삭제하시겠습니까?';
$messages['deletemessagesconfirm'] = '정말로 선택한 메시지를 삭제하시겠습니까?';
$messages['deletefolderconfirm']  = '정말로 이 폴더를 삭제하시겠습니까?';
$messages['movefolderconfirm']  = '정말로 이 폴더를 이동하시겠습니까?';
$messages['purgefolderconfirm']  = '정말로 이 폴더의 모든 메시지를 삭제하시겠습니까?';
$messages['contactdeleting'] = '연락처 삭제 중...';
$messages['groupdeleting'] = '그룹 삭제 중...';
$messages['folderdeleting'] = '폴더 삭제 중...';
$messages['foldermoving'] = '폴더 이동 중...';
$messages['foldersubscribing'] = '폴더 구독 중...';
$messages['folderunsubscribing'] = '폴더 구독 취소 중...';
$messages['formincomplete'] = '양식이 완전히 작성되지 않았습니다.';
$messages['noemailwarning'] = '유효한 이메일 주소를 입력해주세요.';
$messages['nonamewarning']  = '이름을 입력해주세요.';
$messages['nopagesizewarning'] = '페이지 크기를 입력해주세요.';
$messages['nosenderwarning'] = '보내는 사람의 이메일 주소를 입력해주세요.';
$messages['recipientsadded'] = '받는 사람을 성공적으로 추가했습니다.';
$messages['norecipientwarning'] = '최소 하나의 수신자를 입력해주세요.';
$messages['disclosedrecipwarning'] = '모든 수신자가 서로의 이메일 주소를 볼 수 있습니다. 이것을 방지하고 개인 정보를 보호하려면 Bcc 필드를 사용할 수 있습니다.';
$messages['disclosedreciptitle'] = '너무 많은 공개 수신자';
$messages['nosubjectwarning']  = '"제목" 필드가 비어있습니다. 지금 입력하시겠습니까?';
$messages['nosubjecttitle']  = '제목 없음';
$messages['nobodywarning'] = '내용 없는 메시지를 보내시겠습니까?';
$messages['notsentwarning'] = '메시지가 발신되지 않았으며 저장되지 않은 변경사항이 있습니다. 변경사항을 폐기하시겠습니까?';
$messages['restoresavedcomposedata'] = '이전에 작성했지만 보내지 않은 메시지가 발견되었습니다.\n\nSubject: $subject\nSaved: $date\n\n이 메시지를 복구하시겠습니까?';
$messages['nosearchname'] = '연락처명이나 이메일 주소를 입력해주세요.';
$messages['notuploadedwarning'] = '아직 모든 첨부가 업로드되지 않았습니다. 기다리거나 업로드를 취소해주세요.';
$messages['searchsuccessful'] = '$nr개의 메시지를 찾았습니다.';
$messages['contactsearchsuccessful'] = '$nr개의 연락처를 찾았습니다.';
$messages['searchnomatch'] = '검색이 일치하는 항목을 발견하지 못했습니다.';
$messages['searching'] = '검색 중...';
$messages['checking'] = '확인 중...';
$messages['stillsearching'] = '아직 검색 중...';
$messages['nospellerrors'] = '맞춤법 오류가 발견되지 않았습니다.';
$messages['folderdeleted'] = '폴더가 성공적으로 삭제되었습니다.';
$messages['foldersubscribed'] = '폴더를 성공적으로 구독했습니다.';
$messages['folderunsubscribed'] = '폴더 구독을 성공적으로 취소했습니다.';
$messages['folderpurged'] = '폴더를 성공적으로 비웠습니다.';
$messages['folderexpunged'] = '폴더를 성공적으로 압축했습니다.';
$messages['deletedsuccessfully'] = '성공적으로 삭제되었습니다.';
$messages['converting'] = '서식 설정 삭제 중...';
$messages['messageopenerror'] = '서버에서 메시지를 불러올 수 없었습니다.';
$messages['filelinkerror'] = '파일 첨부를 실패함.';
$messages['fileuploaderror'] = '파일 업로드를 실패했습니다.';
$messages['csvfilemismatch'] = '다른 필드를 포함한 다중 CSV 파일 가져오기는 지원하지 않습니다.';
$messages['filesizeerror'] = '업로드한 파일이 최대 크기인 $size를 초과했습니다.';
$messages['filecounterror'] = '한 번에 최대 $count개의 파일을 업로드 할 수 있습니다.';
$messages['msgsizeerror'] = '파일 첨부에 실패했습니다. 메시지의 최대 크기($size)를 초과했습니다.';
$messages['msgsizeerrorfwd'] = '메시지 최대 크기 제한을 ($size) 넘었습니다. $num개 메시지를 첨부할 수 없습니다.';
$messages['copysuccess'] = '$nr개의 연락처를 성공적으로 복사함';
$messages['movesuccess'] = '$nr개의 연락처를 성공적으로 이동되었습니다.';
$messages['copyerror'] = '모든 연락처를 복사할 수 없었습니다.';
$messages['moveerror'] = '모든 연락처를 이동할 수 없었습니다.';
$messages['sourceisreadonly'] = '이 주소 소스는 읽기 전용입니다.';
$messages['errorsavingcontact'] = '연락처 주소를 저장할 수 없었습니다.';
$messages['movingmessage'] = '메시지 이동 중...';
$messages['copyingmessage'] = '메시지 복사 중...';
$messages['copyingcontact'] = '연락처 복사 중...';
$messages['movingcontact'] = '연락처 이동 중...';
$messages['deletingmessage'] = '메시지 삭제 중...';
$messages['markingmessage'] = '메시지 표시 중...';
$messages['addingmember'] = '연락처를 그룹에 추가 중...';
$messages['removingmember'] = '연락처를 그룹에서 삭제 중...';
$messages['receiptsent'] = '읽음 확인을 성공적으로 보냈습니다.';
$messages['errorsendingreceipt'] = '읽음 확인을 보낼 수 없었습니다.';
$messages['deleteidentityconfirm'] = '이 항목을 정말로 삭제하시겠습니까?';
$messages['nodeletelastidentity'] = '이 신원 밖에 남지 않아 삭제할 수 없습니다.';
$messages['forbiddencharacter'] = '폴더명에 금지된 문자가 포함되어 있습니다.';
$messages['selectimportfile'] = '업로드할 파일을 선택해주세요.';
$messages['addresswriterror'] = '선택한 주소록은 쓰기가 불가능합니다.';
$messages['contactaddedtogroup'] = '연락처가 이 그룹에 성공적으로 추가되었습니다.';
$messages['contactremovedfromgroup'] = '연락처가 이 그룹에서 성공적으로 제거되었습니다.';
$messages['nogroupassignmentschanged'] = '그룹 할당이 변경되지 않았습니다.';
$messages['importwait'] = '가져오는 중, 잠시만 기다려주세요...';
$messages['importformaterror'] = '가져오기를 실패했습니다! 업로드한 파일은 잘못된 가져오기 데이터 파일입니다.';
$messages['importconfirm'] = '<b>$inserted개의 연락처를 성공적으로 가져옴<b>';
$messages['importconfirmskipped'] = '<b>$skipped개의 기존 입력내용을  건너뜀</b>';
$messages['importmessagesuccess'] = '$nr개의 메시지를 성공적으로 가져옴';
$messages['importmessageerror'] = '가져오기를 실패했습니다! 업로드한 파일은 잘못된 메시지 또는 메일함 파일입니다.';
$messages['opnotpermitted'] = '작업이 허용되지 않습니다!';
$messages['nofromaddress'] = '선택한 신원의 이메일 주소가 누락되었습니다.';
$messages['editorwarning'] = '편집기 유형을 전환하면 텍스트 서식을 잃게 될 수도 있습니다. 계속하시겠습니까?';
$messages['httpreceivedencrypterror'] = '치명적인 구성 오류가 발생했습니다. 즉시 관리자에게 연락하세요.
<b>메시지를 보낼 수 없습니다.</b>';
$messages['smtpconnerror'] = 'SMTP 오류 ($code): 서버와의 연결을 실패했습니다.';
$messages['smtpautherror'] = 'SMTP 오류 ($code): 인증을 실패했습니다.';
$messages['smtpfromerror'] = 'SMTP 오류 ($code): 보내는사람 "$from" ($msg) (으)로 설정하는데 실패했습니다.';
$messages['smtptoerror'] = 'SMTP 오류 ($code): 수신자를 "$to" ($msg)에 추가하는데 실패했습니다.';
$messages['smtprecipientserror'] = 'SMTP 오류: 수신자 목록을 구문 분석할 수 없습니다.';
$messages['smtputf8error'] = 'SMTP 오류: 서버가 유니코드 이메일 주소를 지원하지 않습니다.';
$messages['smtpsizeerror'] = 'SMTP 오류: 메시지 크기가 서버 제한을 ($limit) 넘었습니다.';
$messages['smtperror'] = 'SMTP 오류: $msg';
$messages['emailformaterror'] = '유효하지 않은 이메일 주소: $email';
$messages['toomanyrecipients'] = '받는 사람이 너무 많음. 수신자 인원을 $max명으로 줄이세요.';
$messages['maxgroupmembersreached'] = '그룹 구성원이 최대 인원인 $max명을 초과합니다.';
$messages['internalerror'] = '내부 오류가 발생했습니다. 다시 시도해주세요.';
$messages['contactdelerror'] = '연락처를 삭제할 수 없었습니다.';
$messages['contactdeleted'] = '연락처가 성공적으로 삭제되었습니다.';
$messages['contactrestoreerror'] = '삭제된 연락처를 복구할 수 없었습니다.';
$messages['contactrestored'] = '연락처가 성공적으로 복구되었습니다.';
$messages['groupdeleted'] = '그룹이 성공적으로 삭제되었습니다.';
$messages['grouprenamed'] = '그룹명이 성공적으로 변경되었습니다.';
$messages['groupcreated'] = '그룹이 성공적으로 생성되었습니다.';
$messages['savedsearchdeleted'] = '저장된 검색이 성공적으로 삭제되었습니다.';
$messages['savedsearchdeleteerror'] = '저장된 검색을 삭제할 수 없었습니다.';
$messages['savedsearchcreated'] = '저장된 검색이 성공적으로 생성되었습니다.';
$messages['savedsearchcreateerror'] = '저장된 검색을 생성할 수 없었습니다.';
$messages['messagedeleted'] = '메시지가 성공적으로 삭제되었습니다.';
$messages['messagemoved'] = '메시지가 성공적으로 이동되었습니다.';
$messages['messagemovedtotrash'] = '메시지를 성공적으로 지운 편지함으로 이동했습니다.';
$messages['messagecopied'] = '메시지가 성공적으로 복사되었습니다.';
$messages['messagemarked'] = '메시지가 성공적으로 선택되었습니다.';
$messages['autocompletechars'] = '자동 완성을 위해 $min개 이상의 문자를 입력하세요.';
$messages['autocompletemore'] = '더 많은 일치하는 입력내용을 찾았습니다. 더 많은 문자를 입력해주세요.';
$messages['namecannotbeempty'] = '이름을 비워둘 수 없습니다.';
$messages['nametoolong'] = '이름이 너무 깁니다.';
$messages['namedotforbidden'] = '폴더명은 마침표로 시작할 수 없습니다.';
$messages['folderupdated'] = '폴더가 성공적으로 업데이트 되었습니다.';
$messages['foldercreated'] = '폴더를 성공적으로 생성함.';
$messages['invalidimageformat'] = '올바른 이미지 형식이 아닙니다.';
$messages['mispellingsfound'] = '메시지에서 맞춤법 오류가 감지되었습니다.';
$messages['parentnotwritable'] = '선택한 상위 폴더로 폴더를 생성/이동할 수 없습니다. 접근 권한이 없습니다.';
$messages['messagetoobig'] = '메시지 부분이 처리하기에는 너무 큽니다.';
$messages['attachmentvalidationerror'] = '이 첨부파일은 메시지에 선언된 유형과 일치하지 않아서 의심스럽습니다. 보낸 사람을 신뢰하지 않는다면, 악의적인 내용이 포함되었을 수 있으므로 브라우저에서 열지 말아야 합니다.<br/><br/><em>예상: $expected, 실제: $detected</em>';
$messages['noscriptwarning'] = '경고: 이 웹메일 서비스는 자바스크립트가 필요합니다! 이 기능을 사용하려면 브라우저 설정에서 자바스크립트를 활성화해주세요.';
$messages['messageissent'] = '메시지를 이미 보냈으나, 아직 저장되지 않았습니다. 지금 저장하시겠습니까?';
$messages['errnotfound'] = '파일을 찾을 수 없음';
$messages['errnotfoundexplain'] = '요청한 리소스를 찾을 수 없습니다!';
$messages['errfailedrequest'] = '실패한 요청';
$messages['errauthorizationfailed'] = '인증을 실패함';
$messages['errunauthorizedexplain'] = '이 서비스에 액세스 할 수있는 권한이 있는지 확인할 수 없었습니다!';
$messages['errrequestcheckfailed'] = '확인 요청을 실패함';
$messages['errcsrfprotectionexplain'] = "보안을 위해 이 리소스에 대한 접근은 CSRF로부터 보호되었습니다.\n 이것이 표시된다면 웹 어플리케이션에서 나가기 전에 로그아웃을 하지 않았을 것입니다.\n\n계속하려면 이제 사용자와의 상호작용이 필요합니다.";
$messages['errcontactserveradmin'] = '서버 관리자에게 문의해주세요.';
$messages['clicktoresumesession'] = '이전 세션을 다시 시작하려면 여기를 클릭하세요.';
$messages['errcomposesession'] = '쓰기 세션 오류';
$messages['errcomposesessionexplain'] = '요청한 쓰기 세션을 찾을 수 없습니다.';
$messages['clicktocompose'] = '새 메시지를 작성하려면 여기를 클릭하세요.';
$messages['nosupporterror'] = '이 기능은 사용자의 웹브라우저에서 지원되지 않습니다.';
$messages['siginserted'] = '서명을 성공적으로 삽입했습니다.';
$messages['responseinserted'] = '응답을 성공적으로 삽입했습니다.';
$messages['noresponsesavailable'] = '사용할 응답이 없음';
$messages['listempty'] = '목록이 비어있습니다.';
$messages['listusebutton'] = '새 문구를 만드려면 추가 버튼을 누르세요.';
$messages['keypaircreatesuccess'] = '$identy 신원에 대한 키 페어를 성공적으로 만들었습니다.';
$messages['emptyattachment'] = '첨부파일이 비어있는 것으로 보입니다.<br>이 이메일의 발송인과 확인해주십시오.';
$messages['oauthloginfailed'] = 'OAuth 로그인에 실패했습니다. 다시 시도해주십시오.';
localization/tr_TR/timezones.inc000064400000047377151727150560013031 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abican';
$labels['tz:africa:accra'] = 'Akra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Cezayir';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kahire';
$labels['tz:africa:casablanca'] = 'Kazablanka';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Konakri';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Darüsselam';
$labels['tz:africa:djibouti'] = 'Cibuti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'Layun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Hartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinşasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadişu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'N\'Djamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nuakşot';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Arjantin';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahía de Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancún';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Şikago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Kosta Rika';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaika';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceió';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominiler';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Meksiko';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Kuzey Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Orta';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Porto Riko';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Ittoqqortoormiit';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktika';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arktika';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asya';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almatı';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadır';
$labels['tz:asia:aqtau'] = 'Aktav';
$labels['tz:asia:aqtobe'] = 'Aktöbe';
$labels['tz:asia:ashgabat'] = 'Aşkabat';
$labels['tz:asia:atyrau'] = 'Atırav';
$labels['tz:asia:baghdad'] = 'Bağdat';
$labels['tz:asia:bahrain'] = 'Bahreyn';
$labels['tz:asia:baku'] = 'Bakü';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beyrut';
$labels['tz:asia:bishkek'] = 'Bişkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Çita';
$labels['tz:asia:choibalsan'] = 'Çoybalsan';
$labels['tz:asia:colombo'] = 'Kolombo';
$labels['tz:asia:damascus'] = 'Şam';
$labels['tz:asia:dhaka'] = 'Dakka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Duşanbe';
$labels['tz:asia:famagusta'] = 'Gazimağusa';
$labels['tz:asia:gaza'] = 'Gazze';
$labels['tz:asia:hebron'] = 'El Halil';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'İrkutsk';
$labels['tz:asia:jakarta'] = 'Cakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Kudüs';
$labels['tz:asia:kabul'] = 'Kabil';
$labels['tz:asia:kamchatka'] = 'Kamçatka';
$labels['tz:asia:karachi'] = 'Karaçi';
$labels['tz:asia:kathmandu'] = 'Katmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuveyt';
$labels['tz:asia:macau'] = 'Makau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Maskat';
$labels['tz:asia:nicosia'] = 'Lefkoşa';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Kızılorda';
$labels['tz:asia:riyadh'] = 'Riyad';
$labels['tz:asia:sakhalin'] = 'Sahalin';
$labels['tz:asia:samarkand'] = 'Semerkant';
$labels['tz:asia:seoul'] = 'Seul';
$labels['tz:asia:shanghai'] = 'Şangay';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolimsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Taşkent';
$labels['tz:asia:tbilisi'] = 'Tiflis';
$labels['tz:asia:tehran'] = 'Tahran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulanbatur';
$labels['tz:asia:urumqi'] = 'Urumçi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Erivan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azorlar';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanarya';
$labels['tz:atlantic:cape_verde'] = 'Yeşil Burun Adaları';
$labels['tz:atlantic:faroe'] = 'Faroe Adaları';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'Güney Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Avustralya';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sidney';
$labels['tz:europe'] = 'Avrupa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrahan';
$labels['tz:europe:athens'] = 'Atina';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brüksel';
$labels['tz:europe:bucharest'] = 'Bükreş';
$labels['tz:europe:budapest'] = 'Budapeşte';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Kişinev';
$labels['tz:europe:copenhagen'] = 'Kopenhag';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Man Adası';
$labels['tz:europe:istanbul'] = 'İstanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lizbon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'Londra';
$labels['tz:europe:luxembourg'] = 'Lüksemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Moskova';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prag';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Roma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Saraybosna';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Üsküp';
$labels['tz:europe:sofia'] = 'Sofya';
$labels['tz:europe:stockholm'] = 'Stokholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tiran';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Ujgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikan';
$labels['tz:europe:vienna'] = 'Viyana';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varşova';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporijya';
$labels['tz:europe:zurich'] = 'Zürih';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas Adası';
$labels['tz:indian:cocos'] = 'Cocos Adaları';
$labels['tz:indian:comoro'] = 'Komorlar';
$labels['tz:indian:kerguelen'] = 'Kerguelen Adaları';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maldivler';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Réunion';
$labels['tz:pacific'] = 'Pasifik';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Paskalya Adası';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein Atolü';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Markiz Adaları';
$labels['tz:pacific:midway'] = 'Midway Adası';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue Adası';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Nouméa';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn Adaları';
$labels['tz:pacific:pohnpei'] = 'Pohnpei Adası';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga Adası';
$labels['tz:pacific:saipan'] = 'Saipan Adası';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa Adası';
$labels['tz:pacific:tongatapu'] = 'Tongatapu Adası';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/tr_TR/labels.inc000064400000104146151727150560012242 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product e-posta sistemine hoş geldiniz';
$labels['username'] = 'Kullanıcı adı';
$labels['password'] = 'Parola';
$labels['server'] = 'Sunucu';
$labels['login'] = 'Oturum aç';
$labels['oauthlogin'] = '$provider ile oturum aç';
$labels['menu'] = 'Menü';
$labels['logout'] = 'Kapat';
$labels['mail'] = 'İletiler';
$labels['settings'] = 'Ayarlar';
$labels['addressbook'] = 'Adres defteri';
$labels['darkmode'] = 'Koyu kip';
$labels['lightmode'] = 'Açık kip';
$labels['inbox'] = 'Gelen';
$labels['drafts'] = 'Taslak';
$labels['sent'] = 'Gönderilmiş';
$labels['trash'] = 'Çöp';
$labels['junk'] = 'İstenmeyen';
$labels['show_real_foldernames'] = 'Özel klasörlerin gerçek adları görüntülensin';
$labels['subject'] = 'Konu';
$labels['from'] = 'Gönderici';
$labels['sender'] = 'Gönderici';
$labels['to'] = 'Alıcı';
$labels['cc'] = 'Kopya';
$labels['bcc'] = 'Gizli kopya';
$labels['replyto'] = 'Yanıt adresi';
$labels['followupto'] = 'İzleme adresi';
$labels['date'] = 'Tarih';
$labels['size'] = 'Boyut';
$labels['priority'] = 'Öncelik';
$labels['organization'] = 'Kuruluş';
$labels['readstatus'] = 'Okunma durumu';
$labels['listoptions'] = 'Seçenekleri listele...';
$labels['listoptionstitle'] = 'Liste seçenekleri';
$labels['mailboxlist'] = 'Klasörler';
$labels['messagesfromto'] = 'İletiler: $from - $to , Toplam: $count';
$labels['threadsfromto'] = 'Yazışmalar: $from - $to, Toplam $count';
$labels['messagenrof'] = 'İleti: $nr / $count';
$labels['fromtoshort'] = '$from - $to , Toplam: $count';
$labels['copy'] = 'Kopyala';
$labels['move'] = 'Taşı';
$labels['moveto'] = 'Şuraya taşı...';
$labels['copyto'] = 'Şuraya Kopyala...';
$labels['download'] = 'İndir';
$labels['open'] = 'Aç';
$labels['showattachment'] = 'Görüntüle';
$labels['showanyway'] = 'Yine de görüntülensin';
$labels['filename'] = 'Dosya adı';
$labels['filesize'] = 'Dosya boyutu';
$labels['addtoaddressbook'] = 'Adres defterine ekle';
$labels['sun'] = 'Paz';
$labels['mon'] = 'Pzt';
$labels['tue'] = 'Sal';
$labels['wed'] = 'Çrş';
$labels['thu'] = 'Per';
$labels['fri'] = 'Cum';
$labels['sat'] = 'Cts';
$labels['sunday'] = 'Pazar';
$labels['monday'] = 'Pazartesi';
$labels['tuesday'] = 'Salı';
$labels['wednesday'] = 'Çarşamba';
$labels['thursday'] = 'Perşembe';
$labels['friday'] = 'Cuma';
$labels['saturday'] = 'Cumartesi';
$labels['jan'] = 'Oca';
$labels['feb'] = 'Şub';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Nis';
$labels['may'] = 'May';
$labels['jun'] = 'Haz';
$labels['jul'] = 'Tem';
$labels['aug'] = 'Ağu';
$labels['sep'] = 'Eyl';
$labels['oct'] = 'Eki';
$labels['nov'] = 'Kas';
$labels['dec'] = 'Ara';
$labels['longjan'] = 'Ocak';
$labels['longfeb'] = 'Şubat';
$labels['longmar'] = 'Mart';
$labels['longapr'] = 'Nisan';
$labels['longmay'] = 'Mayıs';
$labels['longjun'] = 'Haziran';
$labels['longjul'] = 'Temmuz';
$labels['longaug'] = 'Ağustos';
$labels['longsep'] = 'Eylül';
$labels['longoct'] = 'Ekim';
$labels['longnov'] = 'Kasım';
$labels['longdec'] = 'Aralık';
$labels['today'] = 'Bugün';
$labels['refresh'] = 'Yenile';
$labels['checkmail'] = 'İletileri denetle';
$labels['compose'] = 'Hazırla';
$labels['writenewmessage'] = 'Yeni ileti ';
$labels['reply'] = 'Yanıtla';
$labels['replytomessage'] = 'Göndericiye yanıtla';
$labels['replytoallmessage'] = 'Göndericiye ve tüm alıcılara yanıtla';
$labels['replyall'] = 'Toplu yanıtla';
$labels['replylist'] = 'Listeye yanıtla';
$labels['forward'] = 'İlet';
$labels['forwardinline'] = 'Posta içinde ilet';
$labels['forwardattachment'] = 'Ek dosya olarak ilet';
$labels['forwardmessage'] = 'İlet';
$labels['bouncemsg'] = 'Yeniden gönder (sektir)';
$labels['bounce'] = 'Yeniden gönder';
$labels['deletemessage'] = 'İletiyi sil';
$labels['movemessagetotrash'] = 'Çöpe taşı';
$labels['printmessage'] = 'Yazdır';
$labels['previousmessage'] = 'Önceki ileti';
$labels['firstmessage'] = 'İlk ileti';
$labels['nextmessage'] = 'Sonraki ileti';
$labels['lastmessage'] = 'Son ileti';
$labels['backtolist'] = 'İleti listesine dön';
$labels['viewsource'] = 'Kaynağı görüntüle';
$labels['mark'] = 'İşaretle';
$labels['markmessages'] = 'İletileri işaretle';
$labels['markread'] = 'Okunmuş olarak';
$labels['markunread'] = 'Okunmamış olarak';
$labels['markflagged'] = 'İşaretlenmiş olarak';
$labels['markunflagged'] = 'İşaretlenmemiş olarak';
$labels['markundeleted'] = 'Silinmemiş olarak';
$labels['moreactions'] = 'Diğer işlemler...';
$labels['markallread'] = 'Tümünü okunmuş olarak işaretle';
$labels['folders-cur'] = 'Yalnızca seçilmiş klasör';
$labels['folders-sub'] = 'Seçilmiş Klasör ve Alt Klasörleri';
$labels['folders-all'] = 'Tüm klasörler';
$labels['more'] = 'Diğer';
$labels['back'] = 'Geri';
$labels['options'] = 'Ayarlar';
$labels['composeoptions'] = 'İleti seçenekleri';
$labels['optionsandattachments'] = 'Ayarlar ve ek dosyalar';
$labels['actions'] = 'İşlemler';
$labels['first'] = 'İlk';
$labels['last'] = 'Son';
$labels['previous'] = 'Önceki';
$labels['next'] = 'Sonraki';
$labels['select'] = 'Seç';
$labels['selection'] = 'Seçim';
$labels['all'] = 'Tümü';
$labels['none'] = 'Yok';
$labels['currpage'] = 'Geçerli sayfa';
$labels['isread'] = 'Okunmuş';
$labels['unread'] = 'Okunmamışlar';
$labels['flagged'] = 'İşaretlenmişler';
$labels['unflagged'] = 'İşaretlenmemiş';
$labels['unanswered'] = 'Yanıtlanmamışlar';
$labels['withattachment'] = 'Ek dosyası olanlar';
$labels['deleted'] = 'Silinmişler';
$labels['undeleted'] = 'Silinmemişler';
$labels['replied'] = 'Yanıtlanmış';
$labels['forwarded'] = 'İletilmiş';
$labels['invert'] = 'Seçimi ters çevir';
$labels['filter'] = 'Süz';
$labels['list'] = 'Liste';
$labels['threads'] = 'Yazışma';
$labels['expand-all'] = 'Tümünü genişlet';
$labels['expand-unread'] = 'Okunmamışları genişlet';
$labels['collapse-all'] = 'Tümünü daralt';
$labels['threaded'] = 'Yazışma görünümü';
$labels['showunread'] = 'Okunmamış iletileri görüntüle';
$labels['autoexpand_threads'] = 'Yazışma iletileri genişletilsin';
$labels['do_expand'] = 'tüm yazışmalar';
$labels['expand_only_unread'] = 'yalnızca okunmamış iletiler bulunan yazışmalar';
$labels['fromto'] = 'Gönderici/Alıcı';
$labels['flag'] = 'İşaret';
$labels['attachment'] = 'Ek dosya';
$labels['nonesort'] = 'Yok';
$labels['sentdate'] = 'Gönderilme tarihi';
$labels['arrival'] = 'Alınma tarihi';
$labels['asc'] = 'artan';
$labels['desc'] = 'azalan';
$labels['listcolumns'] = 'Sütunları listele';
$labels['listsorting'] = 'Sıralama sütunu';
$labels['listorder'] = 'Sıralama düzeni';
$labels['listmode'] = 'Liste görünümü';
$labels['lmode'] = 'Liste kipi';
$labels['layout'] = 'Görünüm';
$labels['layoutwidescreen'] = 'Geniş ekran';
$labels['layoutdesktop'] = 'Masaüstü';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Geniş ekran (3 sütun görünümü)';
$labels['layoutdesktopdesc'] = 'Masaüstü (geniş liste ile aşağıda e-posta ön izlemesi)';
$labels['layoutlistdesc'] = 'Liste (e-posta ön izlemesi olmadan)';
$labels['folderactions'] = 'Klasör İşlemleri...';
$labels['compact'] = 'Sıkıştır';
$labels['empty'] = 'Boşalt';
$labels['importmessages'] = 'İçe aktar';
$labels['mailimportdesc'] = '<a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ya da <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> biçiminde dosyalar kullanarak e-postalarınızı yükleyebilirsiniz.';
$labels['mailimportzip'] = 'Birden çok dosya zip arşivi biçiminde sıkıştırılabilir.';
$labels['quota'] = 'Disk kullanımı';
$labels['unknown'] = 'bilinmeyen';
$labels['unlimited'] = 'sınırsız';
$labels['quotatype'] = 'Kota türü';
$labels['quotatotal'] = 'Sınır';
$labels['quotaused'] = 'Kullanılan';
$labels['quotastorage'] = 'Disk boyutu';
$labels['quotamessage'] = 'İleti sayısı';
$labels['shortheaderdate'] = '$date tarihinde';
$labels['shortheaderto'] = '$to alıcısına $date tarihinde';
$labels['shortheaderfrom'] = '$from göndericisinden $date tarihinde';
$labels['quicksearch'] = 'Hızlı arama';
$labels['searchplaceholder'] = 'Arama...';
$labels['resetsearch'] = 'Aramayı sıfırla';
$labels['searchmod'] = 'Arama alanları';
$labels['msgtext'] = 'Tüm ileti alanları';
$labels['body'] = 'Metin';
$labels['type'] = 'Tür';
$labels['namex'] = 'Ad';
$labels['searchscope'] = 'Kapsam';
$labels['currentfolder'] = 'Bu klasör';
$labels['subfolders'] = 'Bu ve alt klasörler';
$labels['allfolders'] = 'Tüm klasörler';
$labels['searchinterval-1W'] = 'Bir haftadan eski';
$labels['searchinterval-1M'] = 'Bir aydan eski';
$labels['searchinterval-1Y'] = 'Bir yıldan eski';
$labels['searchinterval1W'] = 'Bir haftadan yeni';
$labels['searchinterval1M'] = 'Bir aydan yeni';
$labels['searchinterval1Y'] = 'Bir yıldan yeni';
$labels['openinextwin'] = 'Yeni pencerede aç';
$labels['emlsave'] = 'İndir (.eml)';
$labels['changeformattext'] = 'Düz metin biçiminde görüntülensin';
$labels['changeformathtml'] = 'HTML biçiminde görüntülensin';
$labels['editasnew'] = 'Yeni olarak düzenle';
$labels['send'] = 'Gönder';
$labels['sendmessage'] = 'İletiyi gönder';
$labels['savemessage'] = 'Taslak olarak kaydet';
$labels['addattachment'] = 'Dosya ekle';
$labels['charset'] = 'Karakter kodlaması';
$labels['editortype'] = 'Düzenleyici';
$labels['returnreceipt'] = 'Alındı onayı istensin';
$labels['dsn'] = 'Teslim onayı istensin';
$labels['keepformatting'] = 'Biçimlendirme korunsun';
$labels['mailreplyintro'] = '$date, $sender yazmış:';
$labels['originalmessage'] = 'Özgün ileti';
$labels['selectimage'] = 'Görsel seçin';
$labels['addimage'] = 'Görsel ekle';
$labels['selectmedia'] = 'Görüntü seçin';
$labels['addmedia'] = 'Görüntü ekle';
$labels['encrypt'] = 'Şifrele';
$labels['encryptmessage'] = 'İletiyi şifrele';
$labels['encryptmessagemailvelope'] = 'İletinizi Mailvelope ile şifreleyin';
$labels['importpubkeys'] = 'Herkese açık anahtarları içe aktar';
$labels['encryptedsendialog'] = 'Şifrelenmiş ileti gönderiliyor';
$labels['encryptandsign'] = 'Şifrele ve imzala';
$labels['keyid'] = 'Kimlik Anahtarı';
$labels['keylength'] = 'Bit';
$labels['keyexpired'] = 'Süresi geçmiş';
$labels['keyrevoked'] = 'Geçersiz kılınmış';
$labels['bccinstead'] = 'Gizli kopya kullanılsın';
$labels['addheader'] = 'Alıcı ekle (üst bilgi)';
$labels['insert'] = 'Ekle';
$labels['insertcontact'] = 'Kişi ekle';
$labels['recipient'] = 'Alıcı';
$labels['recipientedit'] = 'Alıcıyı düzenle';
$labels['editidents'] = 'Kimlikleri düzenle';
$labels['spellcheck'] = 'Yazım denetimi';
$labels['checkspelling'] = 'Yazımı denetle';
$labels['resumeediting'] = 'Düzenlemeyi sürdür';
$labels['revertto'] = 'Geri al:';
$labels['restore'] = 'Geri yükle';
$labels['restoremessage'] = 'İleti geri yüklensin mi?';
$labels['ignore'] = 'Yok say';
$labels['responses'] = 'Hazır yanıtlar';
$labels['insertresponse'] = 'Hazır yanıt ekle';
$labels['manageresponses'] = 'Hazır yanıt yönetimi';
$labels['newresponse'] = 'Yeni Hazır yanıt ekle';
$labels['addresponse'] = 'Hazır yanıt ekle';
$labels['editresponse'] = 'Hazır yanıtı düzenle';
$labels['editresponses'] = 'Hazır yanıtları düzenle';
$labels['responsename'] = 'Ad';
$labels['responsetext'] = 'Hazır yanıt metni';
$labels['attach'] = 'Dosya ekle';
$labels['attachments'] = 'Ek dosyalar';
$labels['upload'] = 'Yükle';
$labels['uploadprogress'] = '$percent($current / $total)';
$labels['close'] = 'Kapat';
$labels['messageoptions'] = 'İleti ayarları...';
$labels['togglecomposeoptions'] = 'İleti seçeneklerini görüntüle/gizle';
$labels['attachmentrename'] = 'Ek dosyayı yeniden adlandır';
$labels['low'] = 'Düşük';
$labels['lowest'] = 'En düşük';
$labels['normal'] = 'Normal';
$labels['high'] = 'Yüksek';
$labels['highest'] = 'En yüksek';
$labels['nosubject'] = '(konu belirtilmemiş)';
$labels['showimages'] = 'Görselleri görüntüle';
$labels['allow'] = 'İzin ver';
$labels['alwaysshow'] = '$sender tarafından gönderilen görseller her zaman görüntülensin';
$labels['alwaysallow'] = '$sender tarafından gönderilen iletiler her zaman alınsın';
$labels['isdraft'] = 'Bu ileti henüz taslak.';
$labels['andnmore'] = '$nr daha...';
$labels['details'] = 'Ayrıntılar';
$labels['summary'] = 'Özet';
$labels['headers'] = 'Üst bilgiler';
$labels['allheaders'] = 'Tüm üst bilgiler...';
$labels['togglemoreheaders'] = 'Daha fazla ileti üst bilgisi görüntüle';
$labels['togglefullheaders'] = 'İleti üst bilgilerini görüntüle/gizle';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Düz metin';
$labels['savesentmessagein'] = 'Gönderilen ileti şuraya kaydedilsin';
$labels['dontsave'] = 'kaydedilmesin';
$labels['maxuploadsize'] = 'İzin verilen en büyük dosya boyutu $size';
$labels['addcc'] = 'Kopya ekle';
$labels['addbcc'] = 'Gizli kopya ekle';
$labels['addreplyto'] = 'Yanıtlama adresi ekle';
$labels['addfollowupto'] = 'İzleme adresi ekle';
$labels['sendreceipt'] = 'Okundu iletisi gönderilsin mi?';
$labels['mdnrequest'] = 'Bu iletinin göndericisi okuduğunuza dair onay istedi. Onay göndermek ister misiniz ?';
$labels['receiptread'] = 'Alındı onayı (okundu)';
$labels['yourmessage'] = 'İletinizin okundu onayı';
$labels['receiptnote'] = 'Not: Bu okundu onayı iletinizin yalnızca alıcının bilgisayarında görüntülendiğini belirtir. Alıcının ileti içeriğini okuduğunu ya da anladığını kanıtlamaz.';
$labels['sendalwaysto'] = 'Her zaman $email adresine gönderilsin';
$labels['zoomin'] = 'Yakınlaştır';
$labels['zoomout'] = 'Uzaklaştır';
$labels['rotate'] = 'Döndür';
$labels['increaseimage'] = 'Görsel boyutunu büyüt';
$labels['decreaseimage'] = 'Görsel boyutunu küçült';
$labels['rotateimage'] = 'Görseli döndür';
$labels['showtools'] = 'Görsel araçları görüntülensin';
$labels['hidetools'] = 'Görsel araçları gizlensin';
$labels['name'] = 'Görüntülenecek ad';
$labels['firstname'] = 'Ad';
$labels['surname'] = 'Soyad';
$labels['middlename'] = 'İkinci ad';
$labels['nameprefix'] = 'Ön ek';
$labels['namesuffix'] = 'Son ek';
$labels['nickname'] = 'Takma ad';
$labels['jobtitle'] = 'İş unvanı';
$labels['department'] = 'Bölüm';
$labels['gender'] = 'Cinsiyet';
$labels['maidenname'] = 'Kızlık soyadı';
$labels['email'] = 'E-posta';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adres';
$labels['street'] = 'Sokak';
$labels['locality'] = 'İl';
$labels['zipcode'] = 'Posta kodu';
$labels['region'] = 'Bölge';
$labels['country'] = 'Ülke';
$labels['birthday'] = 'Doğum günü';
$labels['anniversary'] = 'Yıl dönümü';
$labels['website'] = 'Web sayfası';
$labels['instantmessenger'] = 'Anlık iletişim';
$labels['notes'] = 'Notlar';
$labels['male'] = 'Erkek';
$labels['female'] = 'Kadın';
$labels['manager'] = 'Yönetici';
$labels['assistant'] = 'Yardımcı';
$labels['spouse'] = 'Eş';
$labels['allfields'] = 'Tüm alanlar';
$labels['search'] = 'Ara';
$labels['searchresult'] = 'Arama sonucu';
$labels['advsearch'] = 'Gelişmiş arama';
$labels['advanced'] = 'Gelişmiş';
$labels['other'] = 'Diğer';
$labels['printcontact'] = 'Kişiyi yazdır';
$labels['qrcode'] = 'QR kodu';
$labels['typehome'] = 'Ev';
$labels['typework'] = 'İş';
$labels['typeother'] = 'Diğer';
$labels['typemobile'] = 'Cep telefonu';
$labels['typemain'] = 'Ana';
$labels['typehomefax'] = 'Ev faksı';
$labels['typeworkfax'] = 'İş faksı';
$labels['typecar'] = 'Araç';
$labels['typepager'] = 'Çağrı cihazı';
$labels['typevideo'] = 'Görüntülü';
$labels['typeassistant'] = 'Yardımcı';
$labels['typehomepage'] = 'Web sitesi';
$labels['typeblog'] = 'Günlük';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Alan ekle...';
$labels['addcontact'] = 'Kişi ekle';
$labels['editcontact'] = 'Kişiyi düzenle';
$labels['contacts'] = 'Kişiler';
$labels['contactproperties'] = 'Kişi bilgileri';
$labels['contactnameandorg'] = 'Ad ve kuruluş';
$labels['personalinfo'] = 'Kişisel bilgiler';
$labels['personal'] = 'Kişisel';
$labels['contactphoto'] = 'Fotoğraf';
$labels['edit'] = 'Düzenle';
$labels['cancel'] = 'İptal';
$labels['save'] = 'Kaydet';
$labels['delete'] = 'Sil';
$labels['discard'] = 'Yok say';
$labels['continue'] = 'Devam et';
$labels['ok'] = 'Tamam';
$labels['rename'] = 'Yeniden adlandır';
$labels['addphoto'] = 'Ekle';
$labels['replacephoto'] = 'Değiştir';
$labels['uploadphoto'] = 'Fotoğraf yükle';
$labels['choosefile'] = 'Dosyayı seçin...';
$labels['choosefiles'] = 'Dosyaları seçin...';
$labels['browse'] = 'Göz at';
$labels['newcontact'] = 'Yeni kişi ekle';
$labels['deletecontact'] = 'Seçilmiş kişileri sil';
$labels['composeto'] = 'Şu kişiye ileti hazırla';
$labels['contactsfromto'] = 'Kişiler: $from - $to , Toplam: $count';
$labels['print'] = 'Yazdır';
$labels['export'] = 'Dışa aktar';
$labels['exportall'] = 'Tümünü dışa aktar';
$labels['exportsel'] = 'Seçilmişleri dışa aktar';
$labels['exportvcards'] = 'Kişileri vCard biçiminde dışa aktar';
$labels['newgroup'] = 'Yeni grup ekle';
$labels['addgroup'] = 'Grup ekle';
$labels['grouprename'] = 'Grubu yeniden adlandır';
$labels['groupdelete'] = 'Grubu sil';
$labels['groupassign'] = 'Gruba ata...';
$labels['groupremove'] = 'Gruptan çıkar';
$labels['groupremoveselected'] = 'Seçilmiş kişileri gruptan çıkar';
$labels['uponelevel'] = 'Üst düzeye git';
$labels['previouspage'] = 'Önceki sayfayı görüntüle';
$labels['firstpage'] = 'İlk sayfayı görüntüle';
$labels['nextpage'] = 'Sonraki sayfayı görüntüle';
$labels['lastpage'] = 'Son sayfayı görüntüle';
$labels['group'] = 'Grup';
$labels['groups'] = 'Gruplar';
$labels['listgroup'] = 'Grup üyelerini listele';
$labels['personaladrbook'] = 'Kişisel adresler';
$labels['searchsave'] = 'Aramayı kaydet';
$labels['searchdelete'] = 'Aramayı sil';
$labels['import'] = 'İçe aktar';
$labels['importcontacts'] = 'Kişileri içe aktar';
$labels['importfromfile'] = 'Dosyadan içe aktar';
$labels['importtarget'] = 'Kişileri ekle';
$labels['importreplace'] = 'Tüm adres defterinin yerine geçsin';
$labels['importgroups'] = 'Grup atamalarını içe aktar';
$labels['importgroupsall'] = 'Tümü (gerekirse gruplar eklensin)';
$labels['importgroupsexisting'] = 'Yalnızca var olan gruplar';
$labels['importdesc'] = 'Var olan bir adres defterindeki kişileri yükleyebilirsiniz.<br/>Şu anda <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ve CSV (virgül ile ayrılmış veriler) dosya biçimlerini destekliyoruz.';
$labels['importmapdesc'] = 'CSV verilerini içe aktarmayı başlatmadan önce aşağıdaki alan eşleştirme bilgilerinin doğru olduğundan emin olun.';
$labels['fieldnotmapped'] = 'Alan eşleştirilmemiş (içe aktarılmaz)';
$labels['skipheader'] = 'İlk satır içe aktarılmasın (başlıklar)';
$labels['done'] = 'Tamam';
$labels['settingsfor'] = 'Şunun ayarları';
$labels['about'] = 'Hakkında';
$labels['preferences'] = 'Ayarlar';
$labels['userpreferences'] = 'Kullanıcı ayarları';
$labels['editpreferences'] = 'Kullanıcı ayarlarını düzenle';
$labels['identities'] = 'Kimlikler';
$labels['manageidentities'] = 'Kimlik yönetimi';
$labels['newidentity'] = 'Yeni kimlik ekle';
$labels['addidentity'] = 'Kimlik ekle';
$labels['editidentity'] = 'Kimliği düzenle';
$labels['identityencryption'] = 'Şifreleme';
$labels['preferhtml'] = 'HTML görünümü kullanılsın';
$labels['defaultcharset'] = 'Varsayılan karakter kümesi';
$labels['htmlmessage'] = 'HTML ileti';
$labels['messagepart'] = 'Parça';
$labels['digitalsig'] = 'Sayısal imza';
$labels['dateformat'] = 'Tarih biçimi';
$labels['timeformat'] = 'Saat biçimi';
$labels['prettydate'] = 'Tarihler kısa görüntülensin';
$labels['setdefault'] = 'Varsayılan olarak atansın';
$labels['autodetect'] = 'Otomatik';
$labels['language'] = 'Dil';
$labels['timezone'] = 'Saat dilimi';
$labels['pagesize'] = 'Bir sayfadaki satır sayısı';
$labels['signature'] = 'İmza';
$labels['dstactive'] = 'Yaz saati uygulaması';
$labels['showinextwin'] = 'İleti yeni pencerede açılsın';
$labels['composeextwin'] = 'İleti yeni pencerede hazırlansın';
$labels['htmleditor'] = 'HTML iletileri hazırla';
$labels['htmlonreply'] = 'yalnızca HTML biçimindeki iletiler yanıtlanırken';
$labels['htmlonreplyandforward'] = 'HTML biçimindeki iletiler yanıtlanırken ya da iletilirken';
$labels['htmlsignature'] = 'HTML imza';
$labels['showemail'] = 'E-posta adresi ad ile birlikte görüntülensin';
$labels['previewpane'] = 'Ön izleme panosu görüntülensin';
$labels['skin'] = 'Arayüz görünümü';
$labels['logoutclear'] = 'Oturum kapatıldığında Çöp boşaltılsın';
$labels['logoutcompact'] = 'Oturum kapatıldığında Gelen kutusu sıkıştırılsın';
$labels['uisettings'] = 'Kullanıcı arayüzü';
$labels['serversettings'] = 'Sunucu ayarları';
$labels['mailboxview'] = 'Posta kutusu görünümü';
$labels['mdnrequests'] = 'Alındı onayları';
$labels['askuser'] = 'ne yapılacağı bana sorulsun';
$labels['autosend'] = 'otomatik olarak gönderilsin';
$labels['autosendknown'] = 'adres defterimdekilere gönderilsin, diğerleri bana sorulsun';
$labels['autosendknownignore'] = 'adres defterimdekilere gönderilsin, diğerleri yok sayılsın';
$labels['autosendtrusted'] = 'güvenilir göndericilere alındı iletisi gönderilsin, diğerleri bana sorulsun';
$labels['autosendtrustedignore'] = 'güvenilir göndericilere alındı iletisi gönderilsin, diğerleri yok sayılsın';
$labels['ignorerequest'] = 'yok sayılsın';
$labels['readwhendeleted'] = 'Silinmiş iletiler okunmuş olarak işaretlensin';
$labels['flagfordeletion'] = 'İletiler silinmek yerine silinecek olarak işaretlensin';
$labels['skipdeleted'] = 'Silinmiş iletiler görüntülenmesin';
$labels['deletealways'] = 'İletiler çöpe atılırken sorun çıkarsa tamamen silinsin';
$labels['deletejunk'] = 'İstenmeyenler klasöründeki iletiler doğrudan silinsin';
$labels['showremoteimages'] = 'Uzaktan yüklenen görseller görüntülensin';
$labels['allowremoteresources'] = 'Uzak kaynaklar (görseller, biçemler) kullanılabilsin';
$labels['fromknownsenders'] = 'bilinen göndericilerden';
$labels['fromtrustedsenders'] = 'güvenilir göndericilerden';
$labels['frommycontacts'] = 'kişilerimden';
$labels['always'] = 'her zaman';
$labels['alwaysbutplain'] = 'her zaman, düz metin biçiminde yanıtlama dışında';
$labels['showinlineimages'] = 'İleti ekindeki görseller iletinin altında görüntülensin';
$labels['autosavedraft'] = 'Taslaklar otomatik olarak kaydedilsin';
$labels['everynminutes'] = '$n dakikada bir';
$labels['refreshinterval'] = 'Yenileme sıklığı (yeni iletileri denetleme, vb.)';
$labels['never'] = 'asla';
$labels['immediately'] = 'hemen';
$labels['messagesdisplaying'] = 'İleti görünümü';
$labels['messagescomposition'] = 'Yeni ileti hazırlama';
$labels['mimeparamfolding'] = 'Ek dosya adları';
$labels['2231folding'] = 'Tam RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Tam RFC 2047 (diğer)';
$labels['force7bit'] = '8 bit karakterler için MIME kodlaması kullanılsın';
$labels['savelocalstorage'] = "Tarayıcının yerel depolama alanına kaydedilsin (geçiçi olarak)";
$labels['advancedoptions'] = 'Gelişmiş ayarlar';
$labels['toggleadvancedoptions'] = 'Gelişmiş ayarları görüntüle/gizle';
$labels['focusonnewmessage'] = 'Yeni ileti geldiğinde web tarayıcı penceresine odaklanılsın';
$labels['checkallfolders'] = 'Tüm klasörler yeni iletiler için denetlensin';
$labels['displaynext'] = 'Silme ya da taşıma sonrası sıradaki ileti görüntülensin';
$labels['defaultfont'] = 'HTML iletiler için varsayılan yazı türü';
$labels['mainoptions'] = 'Temel ayarlar';
$labels['browseroptions'] = 'Tarayıcı ayarları';
$labels['section'] = 'Bölüm';
$labels['maintenance'] = 'Bakım';
$labels['newmessage'] = 'Yeni ileti';
$labels['signatureoptions'] = 'İmza ayarları';
$labels['whenreplying'] = 'Yanıtlarken özgün iletiye şu yapılsın';
$labels['replyempty'] = 'alıntılanmasın';
$labels['replytopposting'] = 'yeni ileti alıntı metninin üzerinden başlatılsın';
$labels['replytoppostingnoindent'] = 'yeni ileti alıntı metninin üzerinden başlatılsın (girinti olmadan)';
$labels['replybottomposting'] = 'yeni ileti alıntı metninin altından başlatılsın';
$labels['replyremovesignature'] = 'Yanıtlarken önceki imzalar silinsin';
$labels['autoaddsignature'] = 'İmza otomatik olarak eklensin';
$labels['newmessageonly'] = 'yalnızca yeni iletilere';
$labels['replyandforwardonly'] = 'yalnızca yanıt ve iletmelere';
$labels['insertsignature'] = 'İmza ekle';
$labels['sigbelow'] = 'İmza alıntı metninin altına eklensin';
$labels['sigseparator'] = 'İmza eklenirken standart ayıraç kullanılsın';
$labels['automarkread'] = 'İletiler okunmuş olarak işaretlensin';
$labels['afternseconds'] = '$n saniye sonra';
$labels['reqmdn'] = 'Her zaman alındı onayı istensin';
$labels['reqdsn'] = 'Her zaman teslim edildi onayı istensin';
$labels['replysamefolder'] = 'Yanıtlar iletinin bulunduğu klasöre kaydedilsin';
$labels['defaultabook'] = 'Varsayılan adres defteri';
$labels['autocompletesingle'] = 'Otomatik tamamlanırken alternatif e-posta adresleri atlansın';
$labels['listnamedisplay'] = 'Kişiler görünümü';
$labels['contactformmode'] = 'Kişi formu kipi';
$labels['privatemode'] = 'Kişisel (ev)';
$labels['businessmode'] = 'İş (ofis)';
$labels['collectedaddresses'] = 'Derlenmiş adresler';
$labels['collectedrecipients'] = 'Derlenmiş alıcılar';
$labels['collectedrecipientsopt'] = 'Giden e-posta alıcıları şurada görüntülensin';
$labels['collectedsendersopt'] = 'Güvenilen göndericiler şurada depolansın';
$labels['trustedsenders'] = 'Güvenilen göndericiler';
$labels['spellcheckbeforesend'] = 'İleti gönderilmeden önce yazımı denetlensin';
$labels['spellcheckoptions'] = 'Yazım denetimi ayarları';
$labels['spellcheckignoresyms'] = 'İçinde simge geçen sözcükler yok sayılsın';
$labels['spellcheckignorenums'] = 'İçinde rakam geçen sözcükler yok sayılsın';
$labels['spellcheckignorecaps'] = 'Tümü büyük harf olan sözcükler yok sayılsın';
$labels['addtodict'] = 'Sözlüğe ekle';
$labels['mailtoprotohandler'] = 'mailto: bağlantıları için kullanılacak işleyici';
$labels['standardwindows'] = 'Açılan pencereler standart pencere olarak işlensin';
$labels['forwardmode'] = 'İletiler şu şekilde iletilsin';
$labels['inline'] = 'iletinin içinde';
$labels['asattachment'] = 'ek dosya olarak';
$labels['replyallmode'] = '[Toplu yanıtla] düğmesi varsayılan işlemi';
$labels['replyalldefault'] = 'toplu yanıtlasın';
$labels['replyalllist'] = 'yalnızca posta listesindekileri yanıtlasın (varsa)';
$labels['allmessages'] = 'tüm iletiler';
$labels['olderxdays'] = '$x günden eski';
$labels['folder'] = 'Klasör';
$labels['folders'] = 'Klasörler';
$labels['foldername'] = 'Klasör adı';
$labels['subscribed'] = 'Abonelik';
$labels['messagecount'] = 'İletiler';
$labels['create'] = 'Ekle';
$labels['createfolder'] = 'Yeni klasör ekle';
$labels['managefolders'] = 'Klasör yönetimi';
$labels['specialfolders'] = 'Özel klasörler';
$labels['properties'] = 'Özellikler';
$labels['folderproperties'] = 'Klasör özellikleri';
$labels['parentfolder'] = 'Üst klasör';
$labels['location'] = 'Konum';
$labels['info'] = 'Bilgiler';
$labels['getfoldersize'] = 'Klasör büyüklüğünü öğrenmek için tıklayın';
$labels['changesubscription'] = 'Abonelik durumunu değiştirmek için tıklayın';
$labels['foldertype'] = 'Klasör türü';
$labels['personalfolder'] = 'Kişisel klasör';
$labels['otherfolder'] = 'Diğer kullanıcıların klasörü';
$labels['sharedfolder'] = 'Herkese açık klasör';
$labels['findfolders'] = 'Klasör arama';
$labels['findcontacts'] = 'Kişi arama';
$labels['findmail'] = 'E-posta arama';
$labels['namespace.personal'] = 'Kişisel';
$labels['namespace.other'] = 'Diğer kullanıcılar';
$labels['namespace.shared'] = 'Paylaşılan';
$labels['dualuselabel'] = 'Yalnızca şunu içerebilir';
$labels['dualusemail'] = 'iletiler';
$labels['dualusefolder'] = 'klasörler';
$labels['generate'] = 'Üret';
$labels['encryptioncreatekey'] = 'Yeni anahtar çifti oluştur';
$labels['openmailvelopesettings'] = 'Mailvelope ayarlarını aç';
$labels['encryptionprivkeysinmailvelope'] = 'Mailvelope anahtarlığınızda eşleşen $nr PGP kişisel anahtarı var:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Mailvelope uygulama ekinde bu gönderici kimliği için henüz bir kişisel PGP anahtarı bulunmuyor. Bir kişisel anahtar oluşturup şifrelenmiş iletişimi etkinleştirmek ister misiniz?';
$labels['encryption'] = 'Şifreleme';
$labels['mailvelopeoptions'] = 'Mailvelope ayarları';
$labels['mailvelopemainkeyring'] = 'Mailvelope ana anahtarlığı kullanılsın';
$labels['mailvelopenotfound'] = 'Web tarayıcınızda Mailvelope eklentisi etkinleştirilmemiş ya da kurulmamış.';
$labels['sortby'] = 'Sıralama';
$labels['sortasc'] = 'Artan';
$labels['sortdesc'] = 'Azalan';
$labels['undo'] = 'Geri al';
$labels['installedplugins'] = 'Kurulmuş uygulama ekleri';
$labels['plugin'] = 'Uygulama eki';
$labels['version'] = 'Sürüm';
$labels['source'] = 'Kaynak';
$labels['destination'] = 'Hedef';
$labels['license'] = 'Lisans';
$labels['support'] = 'Destek isteyin';
$labels['savedsearches'] = 'Kaydedilmiş aramalar';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'AA';
$labels['dateformatd'] = 'GG';
$labels['dateformatj'] = 'G';
$labels['dateformatn'] = 'A';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'İngilizce';
$labels['westerneuropean'] = 'Batı Avrupa';
$labels['easterneuropean'] = 'Doğu Avrupa';
$labels['southeasterneuropean'] = 'Güneydoğu Avrupa';
$labels['baltic'] = 'Baltık';
$labels['cyrillic'] = 'Kiril';
$labels['arabic'] = 'Arapça';
$labels['greek'] = 'Yunanca';
$labels['hebrew'] = 'İbranice';
$labels['turkish'] = 'Türkçe';
$labels['nordic'] = 'İskandinav';
$labels['thai'] = 'Tay Dili';
$labels['celtic'] = 'Keltik';
$labels['vietnamese'] = 'Vietnamca';
$labels['japanese'] = 'Japonca';
$labels['korean'] = 'Korece';
$labels['chinese'] = 'Çince';
$labels['arialabeltopnav'] = 'Pencere denetimi';
$labels['arialabeltasknav'] = 'Uygulama görevleri';
$labels['arialabeltoolbar'] = 'Uygulama araç çubuğu';
$labels['arialabellistnav'] = 'Liste gezinmesi';
$labels['arialabelactivetask'] = 'Etkin görevler';
$labels['arialabelmessagessearchfilter'] = 'İleti listeleme süzgeci';
$labels['arialabelmailsearchform'] = 'İleti arama formu';
$labels['arialabelcontactsearchform'] = 'Kişi arama formu';
$labels['arialabelmailquicksearchbox'] = 'İleti arama ifadesi';
$labels['arialabelquicksearchbox'] = 'Arama ifadesi';
$labels['arialabelfoldersearchfilter'] = 'Klasör listeleme süzgeci';
$labels['arialabelfoldersearchform'] = 'Klasör arama formu';
$labels['arialabelfolderlist'] = 'İleti klasörü seçimi';
$labels['arialabelmessagelist'] = 'İletileri listele';
$labels['arialabelmailpreviewframe'] = 'İleti ön izlemesi';
$labels['arialabelmailboxmenu'] = 'Klasör işlemleri menüsü';
$labels['arialabellistselectmenu'] = 'Liste seçme menüsü';
$labels['arialabelthreadselectmenu'] = 'Yazışma listeleme menüsü';
$labels['arialabelmessagelistoptions'] = 'İleti listesi görünüm ve sıralama ayarları';
$labels['arialabelmailimportdialog'] = 'İleti içe aktarma formu';
$labels['arialabelmessagenav'] = 'İleti gezinmesi';
$labels['arialabelmessagebody'] = 'İleti metni';
$labels['arialabelmessageactions'] = 'İleti işlemleri';
$labels['arialabelcontactquicksearch'] = 'Kişi arama formu';
$labels['arialabelcontactsearchbox'] = 'Kişi arama ifadesi';
$labels['arialabelmessageheaders'] = 'İleti üst bilgileri';
$labels['arialabelforwardingoptions'] = 'İletme ayarları';
$labels['arialabelreplyalloptions'] = 'Toplu yanıt ayarları';
$labels['arialabelmoremessageactions'] = 'Diğer ileti işlemleri';
$labels['arialabelmorecontactactions'] = 'Diğer kişi işlemleri';
$labels['arialabelmarkmessagesas'] = 'Seçilmiş iletileri şu şekilde işaretle...';
$labels['arialabelcomposeoptions'] = 'İleti hazırlama ayarları';
$labels['arialabelresponsesmenu'] = 'Hazır yanıtlar menüsü';
$labels['arialabelattachmentuploadform'] = 'Ek dosya yükleme formu';
$labels['arialabelattachmentmenu'] = 'Ek dosya ayarları';
$labels['arialabelmailtomenu'] = 'E-posta adresi ayarları';
$labels['arialabelattachmentpreview'] = 'Ek dosya ön izlemesi';
$labels['ariasummarycomposecontacts'] = 'Kişileri ve grupları alıcı olarak seçmek için listeleme';
$labels['arialabelcontactexportoptions'] = 'Kişi dışa aktarma ayarları';
$labels['arialabelabookgroupoptions'] = 'Adres defteri/grubu ayarları';
$labels['arialabelpreferencesform'] = 'Ayarlar formu';
$labels['arialabelidentityeditfrom'] = 'Kimlik düzenleme formu';
$labels['arialabelresponseeditfrom'] = 'Hazır yanıt düzenleme formu';
$labels['arialabelsearchterms'] = 'Arama ifadeleri';
$labels['arialabeldropactionmenu'] = 'Sürükle bırak işlemleri menüsü';
$labels['arialabelheadersmenu'] = 'Alıcı (üst bilgi) ekleme menüsü';
$labels['arialabelimagetools'] = 'Görsel araçları';
$labels['helplistnavigation'] = 'Tuş takımı ile gezinme listesi';
$labels['helplistkeyboardnavigation'] = "Yukarı / Aşağı ok: Satırı odağa ya da seçime taşır.
Boşluk: Odaklanılmış satırı seçer.
Shift + yukarı/aşağı ok: Yukarı ya da aşağı ek satır seçer.
Ctrl + Boşluk: Odaklanılmış satırı seçime ekler ya da çıkarır.";
$labels['helplistkeyboardnavmessages'] = "Sağ/Sol ok: İleti gruplarını genişletir ya da daraltır (yalnızca yazışma kipinde).
Enter: Seçilmiş ya da odaklanılmış iletiyi açar.
Delete: Seçilmiş iletiyi çöpe atar.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Seçilmiş ya da odaklanılmış kişiyi açar.";
localization/tr_TR/messages.inc000064400000042471151727150560012611 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Bir sorun çıktı!';
$messages['loginfailed']  = 'Oturum açılamadı.';
$messages['cookiesdisabled'] = 'Tarayıcınız çerezleri kabul etmiyor.';
$messages['sessionerror'] = 'Oturumunuzun süresi geçmiş ya da geçersiz.';
$messages['cookiesmismatch'] = 'Çerez uyuşmazlığı sorunu. Lütfen web tarayıcınızın çerezlerini silin.';
$messages['storageerror'] = 'IMAP sunucusu ile bağlantı kurulamadı.';
$messages['servererror'] = 'Sunucu sorunu!';
$messages['servererrormsg'] = 'Sunucu sorunu: $msg';
$messages['accountlocked'] = 'Çok fazla başarısız oturum açma girişimi yapıldı. Bir süre sonra yeniden deneyin.';
$messages['connerror'] = 'Bağlantı sorunu (sunucuya erişilemedi)!';
$messages['dberror'] = 'Veritabanı sorunu!';
$messages['dbconnerror'] = 'Veritabanı bağlantısı kurulamadı!';
$messages['windowopenerror'] = 'Açılan pencere engellendi!';
$messages['requesttimedout'] = 'İstek zaman aşımına uğradı';
$messages['errorreadonly'] = 'İşlem gerçekleştirilemedi. Klasör salt okunur.';
$messages['errornoperm'] = 'İşlem gerçekleştirilemedi. İzinler yetersiz.';
$messages['erroroverquota'] = 'Boş alan olmadığından işlem yapılamadı.';
$messages['erroroverquotadelete'] = 'Diskte boş alan kalmadı. SHIFT+DEL tuşlarına basarak iletiyi silin.';
$messages['invalidrequest'] = 'İstek geçersiz! Herhangi bir veri kaydedilmedi';
$messages['invalidhost'] = 'Sunucu adı geçersiz.';
$messages['nomessagesfound'] = 'Bu posta kutusunda bir ileti bulunamadı.';
$messages['loggedout'] = 'Oturumunuzu kapattınız. Hoşça kalın!';
$messages['mailboxempty'] = 'Posta kutusu boş';
$messages['nomessages'] = 'Herhangi bir ileti yok';
$messages['refreshing'] = 'Yenileniyor...';
$messages['loading'] = 'Yükleniyor...';
$messages['uploading'] = 'Dosya yükleniyor...';
$messages['attaching'] = 'Dosya ekle...';
$messages['uploadingmany'] = 'Dosyalar yükleniyor...';
$messages['loadingdata'] = 'Veriler yükleniyor...';
$messages['checkingmail'] = 'Yeni iletiler denetleniyor...';
$messages['sendingmessage'] = 'İleti gönderiliyor...';
$messages['messagesent'] = 'İleti gönderildi.';
$messages['savingmessage'] = 'İleti kaydediliyor...';
$messages['messagesaved'] = 'İleti taslaklara kaydedildi.';
$messages['successfullysaved'] = 'Kaydedildi';
$messages['savingresponse'] = 'Yanıt metni kaydediliyor...';
$messages['deleteresponseconfirm'] = 'Bu yanıt metnini silmek istediğinize emin misiniz?';
$messages['nocontactselected'] = 'Henüz bir kişi seçmemişsiniz.';
$messages['addedsuccessfully'] = 'Kişi adres defterine eklendi';
$messages['contactexists'] = 'Bu e-posta adresi rehberde var.';
$messages['contactnameexists'] = 'Rehberde aynı adlı biri zaten var.';
$messages['blockedimages'] = 'Kişisel gizliliğinizi korumak amacıyla iletideki görseller engellendi.';
$messages['blockedresources'] = 'Kişisel gizliliğinizi korumak amacıyla iletideki uzak kaynaklar engellendi.';
$messages['suspiciousemail'] = 'Bu iletide sahte olabilecek şüpheli e-posta adresleri var.';
$messages['bccemail'] = 'İletilmiş iletilerde gizli alıcılar (Bcc) var.';
$messages['bouncehint'] = 'İleti herhangi bir değişiklik yapılmadan gönderilecek. Özgün metin, üst bilgi ve alıcılar korunacak.';
$messages['encryptedmessage'] = 'Bu ileti şifrelenmiş olduğundan görüntülenemiyor.';
$messages['externalmessagedecryption'] = 'Bu ileti şifrelenmiş ve şifresi tarayıcınızın eklentileri ile çözülebilir.';
$messages['nopubkeyfor'] = '$email için geçerli bir herkese açık anahtar bulunamadı';
$messages['nopubkeyforsender'] = 'Göndericinin herkese açık anahtar kimliği bulunamadı. İletinin yalnızca alıcılar için şifrelenmesini ister misiniz?';
$messages['encryptnoattachments'] = 'Yüklediğiniz ek dosyalar şifrelenmemiş. Lütfen dosya eklerini yeniden şifreleme düzenleyicisine ekleyin.';
$messages['searchpubkeyservers'] = 'Kayıp anahtarları herkese açık anahtar sunucularında aramak ister misiniz?';
$messages['encryptpubkeysfound'] = 'Aşağıdaki herkese açık anahtarlar bulundu:';
$messages['keyservererror'] = 'Anahtar, anahtar sunucusundan alınamadı.';
$messages['keyimportsuccess'] = '$key herkese açık anahtarı, anahtarlığınızın içine aktarıldı.';
$messages['nocontactsfound'] = 'Uygun bir kişi bulunamadı';
$messages['contactnotfound'] = 'Aranan kişi bulunamadı';
$messages['contactsearchonly'] = 'Seçilmiş adres defterindeki kişileri görüntülemek için bir arama formunu kullanmalısınız.';
$messages['sendingfailed'] = 'İleti gönderilemedi.';
$messages['senttooquickly'] = 'Lütfen bu iletiyi göndermeden önce $sec saniye bekleyin.';
$messages['errorsavingsent'] = 'Gönderilen ileti kayıt edilirken bir sorun çıktı.';
$messages['errorsaving'] = 'Kayıt sırasında bir sorun çıktı.';
$messages['errormoving'] = 'İleti taşınamadı.';
$messages['errorcopying'] = 'İleti kopyalanamadı.';
$messages['errordeleting'] = 'İleti silinemedi';
$messages['errormarking'] = 'İleti işaretlenemedi';
$messages['alerttitle'] = 'Dikkat';
$messages['confirmationtitle'] = 'Emin misiniz...';
$messages['deletecontactconfirm']  = 'Seçilmiş kişileri silmek istediğinize emin misiniz?';
$messages['deletegroupconfirm']  = 'Seçilmiş grupları silmek istediğinize emin misiniz?';
$messages['deletemessagesconfirm'] = 'Seçilmiş iletileri silmek istediğinize emin misiniz?';
$messages['deletefolderconfirm']  = 'Bu klasörü silmek istediğinize emin misiniz?';
$messages['movefolderconfirm']  = 'Bu klasörü taşımak istediğinize emin misiniz?';
$messages['purgefolderconfirm']  = 'Bu klasördeki tüm iletileri silmek istediğinize emin misiniz?';
$messages['contactdeleting'] = 'Kişi(ler) siliniyor...';
$messages['groupdeleting'] = 'Grup siliniyor...';
$messages['folderdeleting'] = 'Klasör siliniyor...';
$messages['foldermoving'] = 'Klasör taşınıyor...';
$messages['foldersubscribing'] = 'Klasöre abone olunuyor...';
$messages['folderunsubscribing'] = 'Klasör aboneliği kaldırılıyor...';
$messages['formincomplete'] = 'Form tam olarak doldurulmamış.';
$messages['noemailwarning'] = 'Lütfen geçerli bir e-posta adresi yazın.';
$messages['nonamewarning']  = 'Lütfen bir ad yazın.';
$messages['nopagesizewarning'] = 'Lütfen bir sayfa boyutu yazın.';
$messages['nosenderwarning'] = 'Göndericinin e-posta adresini yazın.';
$messages['recipientsadded'] = 'Alıcı(lar) eklendi.';
$messages['norecipientwarning'] = 'Lütfen en az bir alıcı belirtin';
$messages['disclosedrecipwarning'] = 'Tüm alıcılar diğer alıcıların e-posta adreslerini görebilir. bu durumu engellemek ve gizliliği korumak için Gizli Kopya alanını kullanabilirsiniz.';
$messages['disclosedreciptitle'] = 'Herkese açık alıcı sayısı çok fazla';
$messages['nosubjectwarning']  = '"Konu" alanı boş bırakılmış. Şimdi bir konu yazmak ister misiniz?';
$messages['nosubjecttitle']  = 'Konu belirtilmemiş';
$messages['nobodywarning'] = 'İleti boş olarak gönderilsin mi?';
$messages['notsentwarning'] = 'İleti gönderilmedi ve yaptığınız değişiklikler kaydedilmedi. Değişiklikler silinsin mi?';
$messages['restoresavedcomposedata'] = 'Daha önce hazırlanmış ancak gönderilmemiş bir ileti bulundu.\n\nKonu: $subject\Kaydedilme zamanı: $date\n\nBu iletiyi geri yüklemek istiyor musunuz?';
$messages['nosearchname'] = 'Lütfen bir kişi adı ya da e-posta adresi yazın.';
$messages['notuploadedwarning'] = 'Henüz tüm ek dosyalar yüklenmedi. Lütfen bekleyin ya da yüklemeyi iptal edin.';
$messages['searchsuccessful'] = '$nr ileti bulundu';
$messages['contactsearchsuccessful'] = '$nr kişi bulundu.';
$messages['searchnomatch'] = 'Arama ifadenize uygun bir sonuç bulunamadı.';
$messages['searching'] = 'Aranıyor...';
$messages['checking'] = 'Denetleniyor...';
$messages['stillsearching'] = 'Hala aranıyor...';
$messages['nospellerrors'] = 'Herhangi bir yazım hatası bulunamadı.';
$messages['folderdeleted'] = 'Klasör silindi.';
$messages['foldersubscribed'] = 'Klasöre abone olundu.';
$messages['folderunsubscribed'] = 'Klasör aboneliği kaldırıldı.';
$messages['folderpurged'] = 'Klasör boşaltıldı.';
$messages['folderexpunged'] = 'Klasör sıkıştırıldı.';
$messages['deletedsuccessfully'] = 'Silindi.';
$messages['converting'] = 'Biçimlendirme kaldırılıyor...';
$messages['messageopenerror'] = 'İleti sunucudan yüklenemedi.';
$messages['filelinkerror'] = 'Dosya eklenemedi.';
$messages['fileuploaderror'] = 'Dosya yüklenemedi.';
$messages['csvfilemismatch'] = 'İçinde farklı alanlar bulunan bir kaç CSV dosyası içe aktarılamaz.';
$messages['filesizeerror'] = 'Dosya izin verilen en büyük değer olan $size boyutundan büyük.';
$messages['filecounterror'] = 'Bir kerede en fazla $count dosya yüklenebilir.';
$messages['msgsizeerror'] = 'Dosya eklenemedi. İzin verilen en büyük değer olan $size boyutundan büyük.';
$messages['msgsizeerrorfwd'] = 'Bir ileti için belirlenmiş en büyük boyut değeri ($size) aşıldığından $num ileti eklenmedi.';
$messages['copysuccess'] = '$nr kişi kopyalandı.';
$messages['movesuccess'] = '$nr kişi taşındı.';
$messages['copyerror'] = 'Herhangi bir kişi kopyalanamadı.';
$messages['moveerror'] = 'Herhangi bir kişi taşınamadı.';
$messages['sourceisreadonly'] = 'Adres kaynağı salt okunur durumda.';
$messages['errorsavingcontact'] = 'Kişi adresi kaydedilemedi.';
$messages['movingmessage'] = 'İleti(ler) taşınıyor...';
$messages['copyingmessage'] = 'İleti(ler) kopyalanıyor...';
$messages['copyingcontact'] = 'Kişile(ler) kopyalanıyor...';
$messages['movingcontact'] = 'Kişi(ler) taşınıyor...';
$messages['deletingmessage'] = 'İleti(ler) siliniyor...';
$messages['markingmessage'] = 'İleti(ler) işaretleniyor...';
$messages['addingmember'] = 'Gruba kişi(ler) ekleniyor...';
$messages['removingmember'] = 'Gruptan kişi(ler) çıkarılıyor...';
$messages['receiptsent'] = 'Okundu onayı gönderildi.';
$messages['errorsendingreceipt'] = 'Okundu onayı gönderilemedi.';
$messages['deleteidentityconfirm'] = 'Bu kimliği silmek istediğinize emin misiniz?';
$messages['nodeletelastidentity'] = 'Son kimliğiniz olduğu için bu kimliği silemezsiniz.';
$messages['forbiddencharacter'] = 'Klasör adında izin verilmeyen karakterler var.';
$messages['selectimportfile'] = 'Lütfen yüklenecek dosyayı seçin.';
$messages['addresswriterror'] = 'Seçilmiş adres defteri yazılabilir durumda değil.';
$messages['contactaddedtogroup'] = 'Kişiler bu gruba eklendi.';
$messages['contactremovedfromgroup'] = 'Kişiler bu gruptan çıkarıldı';
$messages['nogroupassignmentschanged'] = 'Grup atamalarında bir değişiklik yapılmadı.';
$messages['importwait'] = 'Lütfen içe aktarma sırasında bekleyin...';
$messages['importformaterror'] = 'İçe aktarılamadı. Yüklenen dosya geçerli bir içe aktarım dosyası değil.';
$messages['importconfirm'] = '<b>$inserted kişi aktarıldı</b>';
$messages['importconfirmskipped'] = '<b>Var olan $skipped kayıt atlandı</b>';
$messages['importmessagesuccess'] = '$nr ileti içe aktarıldı';
$messages['importmessageerror'] = 'İçe aktarılamadı. Yüklenen dosya geçerli bir ileti ya da posta kutusu dosyası değil';
$messages['opnotpermitted'] = 'Bu işleme izin verilmiyor!';
$messages['nofromaddress'] = 'Bu kimliğin e-posta adresi yok.';
$messages['editorwarning'] = 'Düzenleyici türünü değiştirmek, metin biçimlendirmesinin kaybolmasına neden olabilir. Devam etmek istiyor musunuz?';
$messages['httpreceivedencrypterror'] = 'Ayarlarda bir sorun var. Sistem yöneticinizle görüşün. <b>İletiniz gönderilemedi</b>';
$messages['smtpconnerror'] = 'SMTP sorunu ($code): Sunucu bağlantısı kurulamadı.';
$messages['smtpautherror'] = 'SMTP sorunu ($code): Kimlik doğrulanamadı.';
$messages['smtpfromerror'] = 'SMTP sorunu ($code): Gönderici adresi "$from" olarak ayarlanamadı ($msg)';
$messages['smtptoerror'] = 'SMTP sorunu ($code): "$to" alıcısı eklenemedi ($msg)';
$messages['smtprecipientserror'] = 'SMTP sorunu: Alıcı listesi ayrıştırılamadı';
$messages['smtputf8error'] = 'SMTP sorunu: Sunucu e-posta adreslerinde unikod karakterleri desteklemiyor.';
$messages['smtpsizeerror'] = 'SMTP hatası: İleti boyutu sunucu sınırlamasını aşıyor ($limit)';
$messages['smtperror'] = 'SMTP sorunu: $msg';
$messages['emailformaterror'] = 'E-posta adresi geçersiz: $email';
$messages['toomanyrecipients'] = 'Çok fazla alıcı var. En fazla $max alıcı olabilir.';
$messages['maxgroupmembersreached'] = 'Grup üyelerinin sayısı $max sınırını aşıyor.';
$messages['internalerror'] = 'Sorun var! Lütfen yeniden deneyin.';
$messages['contactdelerror'] = 'Kişi(ler) silinemedi.';
$messages['contactdeleted'] = 'Kişi(ler) silindi.';
$messages['contactrestoreerror'] = 'Silinen kişi(ler) geri yüklenemiyor.';
$messages['contactrestored'] = 'Kişi(ler) geri yüklendi.';
$messages['groupdeleted'] = 'Grup silindi';
$messages['grouprenamed'] = 'Grup adı değiştirildi.';
$messages['groupcreated'] = 'Grup eklendi.';
$messages['savedsearchdeleted'] = 'Kayıtlı arama silindi.';
$messages['savedsearchdeleteerror'] = 'Kayıtlı arama silinemedi.';
$messages['savedsearchcreated'] = 'Kayıtlı arama eklendi.';
$messages['savedsearchcreateerror'] = 'Kayıtlı arama eklenemedi.';
$messages['messagedeleted'] = 'İleti(ler) silindi.';
$messages['messagemoved'] = 'İleti(ler) taşındı.';
$messages['messagemovedtotrash'] = 'İleti(ler) çöpe atıldı.';
$messages['messagecopied'] = 'İleti(ler) kopyalandı.';
$messages['messagemarked'] = 'İleti(ler) işaretlendi.';
$messages['autocompletechars'] = 'Otomatik tamamlama için en az $min karakter yazın.';
$messages['autocompletemore'] = 'Fazla sayıda eşleşen öge bulundu. Lütfen daha fazla karakter yazın.';
$messages['namecannotbeempty'] = 'Ad alanı boş olamaz.';
$messages['nametoolong'] = 'Ad çok uzun.';
$messages['namedotforbidden'] = 'Klasör adı nokta işareti ile başlayamaz.';
$messages['folderupdated'] = 'Klasör güncellendi';
$messages['foldercreated'] = 'Klasör eklendi.';
$messages['invalidimageformat'] = 'Geçerli bir görsel biçimi değil.';
$messages['mispellingsfound'] = 'İletide yazım hataları var.';
$messages['parentnotwritable'] = 'Klasör, seçilen üst klasöre eklenemiyor ya da taşınamıyor. Erişim izni yok.';
$messages['messagetoobig'] = 'Bu ileti parçası işlenemeyecek kadar büyük.';
$messages['attachmentvalidationerror'] = 'Ek dosya türü ileti içinde belirtilen tür ile aynı değil ve bu dosya şüpheli. Bu dosyada zararlı bir içerik bulunuyor olabilir. O nedenle göndericiyi tanımıyor ya da güvenmiyorsanız bu dosyayı web tarayıcısı içinden açmayın. <br/><br/><em>Beklenen: $expected; Bulunan: $detected</em>';
$messages['noscriptwarning'] = 'Uyarı: Bu web e-posta hizmetinin kullanılabilmesi için Javascript gereklidir! Hizmeti kullanabilmek için lütfen web tarayıcınızın Javascript ayarlarını etkinleştirin.';
$messages['messageissent'] = 'İleti zaten gönderilmiş ancak henüz kaydedilmemiş. Şimdi kaydetmek ister misiniz?';
$messages['errnotfound'] = 'Dosya bulunamadı.';
$messages['errnotfoundexplain'] = 'İstenen kaynak bulunamadı!..';
$messages['errfailedrequest'] = 'İstek yerine getirilemedi';
$messages['errauthorizationfailed'] = 'Kimlik doğrulanamadı';
$messages['errunauthorizedexplain'] = 'Bu hizmete erişme izniniz yok!';
$messages['errrequestcheckfailed'] = 'İstek denetlenemedi';
$messages['errcsrfprotectionexplain'] = "Güvenliğiniz için, CSRF tehditine karşı bu kaynağa erişim engellenmiştir.\nlfBu iletiyi görüyorsanız, büyük olasılıkla oturum kapatılmadan web uygulamasından çıkılmıştır.\n\nDevam etmek için insan müdahalesi gereklidir.";
$messages['errcontactserveradmin'] = 'Sunucu yöneticinize başvurun.';
$messages['clicktoresumesession'] = 'Önceki oturuma devam etmek için buraya tıklayın';
$messages['errcomposesession'] = 'Hazırlama oturumu hatası';
$messages['errcomposesessionexplain'] = 'İstenilen hazırlama oturumu bulunamadı.';
$messages['clicktocompose'] = 'Yeni bir ileti hazırlamak için buraya tıklayın.';
$messages['nosupporterror'] = 'Bu özellik web tarayıcınız tarafından desteklenmiyor.';
$messages['siginserted'] = 'İmza eklendi.';
$messages['responseinserted'] = 'Yanıt eklendi.';
$messages['noresponsesavailable'] = 'Kullanılabilecek bir yanıt yok';
$messages['listempty'] = 'Liste boş.';
$messages['listusebutton'] = 'Yeni bir kayıt eklemek için Ekle düğmesine tıklayın.';
$messages['keypaircreatesuccess'] = '$identity için yeni bir anahtar çifti oluşturuldu.';
$messages['emptyattachment'] = 'Bu ek dosya boş gibi görünüyor.<br>Lütfen göndericiyle görüşün.';
$messages['oauthloginfailed'] = 'OAuth oturumu açılamadı. Lütfen yeniden deneyin.';
localization/be_BE/labels.inc000064400000127346151727150570012154 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Вітаем у $product';
$labels['username'] = 'Імя карыстальніка';
$labels['password'] = 'Пароль';
$labels['server'] = 'Сервер';
$labels['login'] = 'Увайсці';
$labels['oauthlogin'] = 'Увайсці з дапамогай $provider';
$labels['menu'] = 'Меню';
$labels['logout'] = 'Выйсці';
$labels['mail'] = 'Пошта';
$labels['settings'] = 'Налады';
$labels['addressbook'] = 'Адрасная кніга';
$labels['darkmode'] = 'Цёмны рэжым';
$labels['lightmode'] = 'Сціслы рэжым';
$labels['inbox'] = 'Атрыманыя';
$labels['drafts'] = 'Чарнавікі';
$labels['sent'] = 'Адпраўленыя';
$labels['trash'] = 'Сметніца';
$labels['junk'] = 'Спам';
$labels['show_real_foldernames'] = 'Паказваць арыгінальныя назвы адмысловых каталогаў';
$labels['subject'] = 'Тэма';
$labels['from'] = 'Ад';
$labels['sender'] = 'Адпраўнік';
$labels['to'] = 'Каму';
$labels['cc'] = 'Копія';
$labels['bcc'] = 'Схаваная копія';
$labels['replyto'] = 'Адказаць-на';
$labels['followupto'] = 'Групавы-адказ-на';
$labels['date'] = 'Дата';
$labels['size'] = 'Памер';
$labels['priority'] = 'Прыярытэт';
$labels['organization'] = 'Кампанія';
$labels['readstatus'] = 'Прачытана';
$labels['listoptions'] = 'Параметры спіса...';
$labels['listoptionstitle'] = 'Параметры спіса';
$labels['mailboxlist'] = 'Каталогі';
$labels['messagesfromto'] = 'Паведамленні $from—$to з $count';
$labels['threadsfromto'] = 'Абмеркаванні $from—$to з $count';
$labels['messagenrof'] = 'Паведамленне $nr з $count';
$labels['fromtoshort'] = '$from—$to з $count';
$labels['copy'] = 'Капіяваць';
$labels['move'] = 'Перамясціць';
$labels['moveto'] = 'Перамясціць у...';
$labels['copyto'] = 'Скапіяваць у...';
$labels['download'] = 'Спампаваць';
$labels['open'] = 'Адкрыць';
$labels['showattachment'] = 'Паказаць';
$labels['showanyway'] = 'Усё адно паказваць';
$labels['filename'] = 'Назва файла';
$labels['filesize'] = 'Памер файла';
$labels['addtoaddressbook'] = 'Дадаць у адрасную кнігу';
$labels['sun'] = 'Ндз';
$labels['mon'] = 'Пн';
$labels['tue'] = 'Аў';
$labels['wed'] = 'Ср';
$labels['thu'] = 'Чц';
$labels['fri'] = 'Пт';
$labels['sat'] = 'Сб';
$labels['sunday'] = 'Нядзеля';
$labels['monday'] = 'Панядзелак';
$labels['tuesday'] = 'Аўторак';
$labels['wednesday'] = 'Серада';
$labels['thursday'] = 'Чацвер';
$labels['friday'] = 'Пятніца';
$labels['saturday'] = 'Субота';
$labels['jan'] = 'Сту';
$labels['feb'] = 'Лют';
$labels['mar'] = 'Сак';
$labels['apr'] = 'Кра';
$labels['may'] = 'Травень';
$labels['jun'] = 'Чэр';
$labels['jul'] = 'Ліп';
$labels['aug'] = 'Жні';
$labels['sep'] = 'Вер';
$labels['oct'] = 'Кас';
$labels['nov'] = 'Ліс';
$labels['dec'] = 'Сне';
$labels['longjan'] = 'Студзень';
$labels['longfeb'] = 'Люты';
$labels['longmar'] = 'Сакавік';
$labels['longapr'] = 'Красавік';
$labels['longmay'] = 'Травень';
$labels['longjun'] = 'Чэрвень';
$labels['longjul'] = 'Ліпень';
$labels['longaug'] = 'Жнівень';
$labels['longsep'] = 'Верасень';
$labels['longoct'] = 'Кастрычнік';
$labels['longnov'] = 'Лістапад';
$labels['longdec'] = 'Снежань';
$labels['today'] = 'Сёння';
$labels['refresh'] = 'Абнавіць';
$labels['checkmail'] = 'Праверыць наяўнасць новых лістоў';
$labels['compose'] = 'Напісаць';
$labels['writenewmessage'] = 'Стварыць новы ліст';
$labels['reply'] = 'Адказаць';
$labels['replytomessage'] = 'Адказаць адпраўніку';
$labels['replytoallmessage'] = 'Адказаць па спісе альбо адпраўніку і ўсім атрымальнікам';
$labels['replyall'] = 'Адказаць усім';
$labels['replylist'] = 'Адказаць па спісе';
$labels['forward'] = 'Пераслаць';
$labels['forwardinline'] = 'Пераслаць унутры ліста';
$labels['forwardattachment'] = 'Пераслаць як далучаны файл';
$labels['forwardmessage'] = 'Пераслаць гэты ліст';
$labels['bouncemsg'] = 'Адправіць паўторна';
$labels['bounce'] = 'Адправіць паўторна';
$labels['deletemessage'] = 'Выдаліць ліст';
$labels['movemessagetotrash'] = 'Перамясціць ліст у сметніцу';
$labels['printmessage'] = 'Надрукаваць гэты ліст';
$labels['previousmessage'] = 'Паказаць папярэдні ліст';
$labels['firstmessage'] = 'Паказаць першы ліст';
$labels['nextmessage'] = 'Паказаць наступны ліст';
$labels['lastmessage'] = 'Паказаць апошні ліст';
$labels['backtolist'] = 'Назад да спіса';
$labels['viewsource'] = 'Зыходны тэкст';
$labels['mark'] = 'Пазначыць';
$labels['markmessages'] = 'Пазначыць лісты';
$labels['markread'] = 'Як прачытаныя';
$labels['markunread'] = 'Як непрачытаныя';
$labels['markflagged'] = 'Пазначыць сцягам';
$labels['markunflagged'] = 'Прыбраць сцяг';
$labels['markundeleted'] = 'Не выдаленыя';
$labels['moreactions'] = 'Больш дзеянняў...';
$labels['markallread'] = 'Пазначыць усё як прачытанае';
$labels['folders-cur'] = 'Толькі абраныя каталогі';
$labels['folders-sub'] = 'Абраныя каталогі і каталогі ў іх';
$labels['folders-all'] = 'Усе каталогі';
$labels['more'] = 'Яшчэ';
$labels['back'] = 'Назад';
$labels['options'] = 'Параметры';
$labels['composeoptions'] = 'Параметры стварэння';
$labels['optionsandattachments'] = 'Параметры і далучаныя файлы';
$labels['actions'] = 'Дзеянні';
$labels['first'] = 'У пачатак';
$labels['last'] = 'У канец';
$labels['previous'] = 'Назад';
$labels['next'] = 'Далей';
$labels['select'] = 'Абраць';
$labels['selection'] = 'Вылучэнне';
$labels['all'] = 'Усе';
$labels['none'] = 'Нічога';
$labels['currpage'] = 'Бягучая старонка';
$labels['isread'] = 'Прачытаныя';
$labels['unread'] = 'Непрачытаныя';
$labels['flagged'] = 'Са сцягам';
$labels['unflagged'] = 'Без сцяга';
$labels['unanswered'] = 'Не было адказу';
$labels['withattachment'] = 'З далучанымі файламі';
$labels['deleted'] = 'Выдаленыя';
$labels['undeleted'] = 'Не выдаленыя';
$labels['replied'] = 'Быў адказ';
$labels['forwarded'] = 'Перасланыя';
$labels['invert'] = 'Інвертаваць';
$labels['filter'] = 'Фільтр';
$labels['list'] = 'Спіс';
$labels['threads'] = 'Ліставанні';
$labels['expand-all'] = 'Разгарнуць усё';
$labels['expand-unread'] = 'Разгарнуць непрачытаныя';
$labels['collapse-all'] = 'Згарнуць усё';
$labels['threaded'] = 'Threaded';
$labels['showunread'] = 'Паказваць непрачытаныя лісты';
$labels['autoexpand_threads'] = 'Разгортванне ліставанняў';
$labels['do_expand'] = 'усе ліставанні';
$labels['expand_only_unread'] = 'толькі з непрачытанымі лістамі';
$labels['fromto'] = 'Ад/Да';
$labels['flag'] = 'Сцяг';
$labels['attachment'] = 'Далучаныя файлы';
$labels['nonesort'] = 'Няма';
$labels['sentdate'] = 'Дата адпраўлення';
$labels['arrival'] = 'Дата атрымання';
$labels['asc'] = 'па павелічэнні';
$labels['desc'] = 'па памяншэнні';
$labels['listcolumns'] = 'Слупкі';
$labels['listsorting'] = 'Сартаванне паводле';
$labels['listorder'] = 'Парадак сартавання';
$labels['listmode'] = 'Рэжым спіса';
$labels['lmode'] = 'Рэжым спіса';
$labels['layout'] = 'Размяшчэнне';
$labels['layoutwidescreen'] = '16:9';
$labels['layoutdesktop'] = 'Працоўны стол';
$labels['layoutlist'] = 'Спіс';
$labels['layoutwidescreendesc'] = 'Шырокаэкранны (3 слупкі)';
$labels['layoutdesktopdesc'] = 'Для камп\'ютара (шырокі спіс і папярэдні прагляд ліста ніжэй спіса)';
$labels['layoutlistdesc'] = 'Спіс (без папярэдняга прагляду)';
$labels['folderactions'] = 'Дзеянні з каталогам...';
$labels['compact'] = 'Сціснуць';
$labels['empty'] = 'Ачысціць';
$labels['importmessages'] = 'Імпартаваць лісты';
$labels['mailimportdesc'] = 'Вы можаце запампаваць лісты ў фарматах <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> або <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Некалькі файлаў можна сціснуць у zip-архівы.';
$labels['quota'] = 'Выкарыстанне сховішча';
$labels['unknown'] = 'невядома';
$labels['unlimited'] = 'без абмежаванняў';
$labels['quotatype'] = 'Тып ліміту';
$labels['quotatotal'] = 'Ліміт';
$labels['quotaused'] = 'Выкарыстоўваецца';
$labels['quotastorage'] = 'Месца на дыску';
$labels['quotamessage'] = 'Колькасць лістоў';
$labels['shortheaderdate'] = '$date';
$labels['shortheaderto'] = 'Да $to $date';
$labels['shortheaderfrom'] = 'Ад $from $date';
$labels['quicksearch'] = 'Хуткі пошук';
$labels['searchplaceholder'] = 'Пошук...';
$labels['resetsearch'] = 'Скінуць пошук';
$labels['searchmod'] = 'Мадыфікатары пошуку';
$labels['msgtext'] = 'Entire message';
$labels['body'] = 'Цела';
$labels['type'] = 'Тып';
$labels['namex'] = 'Імя';
$labels['searchscope'] = 'Размяшчэнне';
$labels['currentfolder'] = 'Бягучы каталог';
$labels['subfolders'] = 'Гэты і ўкладзеныя каталогі';
$labels['allfolders'] = 'Усе каталогі';
$labels['searchinterval-1W'] = 'больш за тыдзень';
$labels['searchinterval-1M'] = 'больш за месяц';
$labels['searchinterval-1Y'] = 'больш за год';
$labels['searchinterval1W'] = 'менш за тыдзень';
$labels['searchinterval1M'] = 'менш за месяц';
$labels['searchinterval1Y'] = 'менш за год';
$labels['openinextwin'] = 'Адкрыць у новым акне';
$labels['emlsave'] = 'Спампаваць (.eml)';
$labels['changeformattext'] = 'Паказаць як просты тэкст';
$labels['changeformathtml'] = 'Паказаць як HTML';
$labels['editasnew'] = 'Рэдагаваць як новы ліст';
$labels['send'] = 'Адправіць';
$labels['sendmessage'] = 'Адправіць зараз';
$labels['savemessage'] = 'Захаваць як чарнавік';
$labels['addattachment'] = 'Далучыць файл';
$labels['charset'] = 'Кадаванне';
$labels['editortype'] = 'Тып рэдактара';
$labels['returnreceipt'] = 'Апавяшчэнне пра прачытанне';
$labels['dsn'] = 'Апавяшчэнне пра атрыманне';
$labels['keepformatting'] = 'Захоўваць фарматаванне';
$labels['mailreplyintro'] = '$sender напісаў $date:';
$labels['originalmessage'] = 'Арыгінальнае паведамленне';
$labels['selectimage'] = 'Абраць выяву';
$labels['addimage'] = 'Дадаць выяву';
$labels['selectmedia'] = 'Абраць відэа';
$labels['addmedia'] = 'Дадаць відэа';
$labels['encrypt'] = 'Зашыфраваць';
$labels['encryptmessage'] = 'Зашыфраваць ліст';
$labels['encryptmessagemailvelope'] = 'Зашыфраваць ліст з дапамогай Mailvelope';
$labels['importpubkeys'] = 'Імпартаваць публічны ключ';
$labels['encryptedsendialog'] = 'Адпраўленне зашыфраванага ліста';
$labels['encryptandsign'] = 'Зашыфраваць і падпісаць';
$labels['keyid'] = 'ID ключа';
$labels['keylength'] = 'Біты';
$labels['keyexpired'] = 'Састарэлы';
$labels['keyrevoked'] = 'Адкліканы';
$labels['bccinstead'] = 'Выкарыстоўваць схаваную копію';
$labels['addheader'] = 'Дадаць атрымальніка (загаловак)';
$labels['insert'] = 'Уставіць';
$labels['insertcontact'] = 'Уставіць кантакт(ы)';
$labels['recipient'] = 'Атрымальнік';
$labels['recipientedit'] = 'Рэдагаванне атрымальніка';
$labels['editidents'] = 'Рэдагаваць асабовыя звесткі';
$labels['spellcheck'] = 'Правапіс';
$labels['checkspelling'] = 'Праверыць правапіс';
$labels['resumeediting'] = 'Працягнуць рэдагаванне';
$labels['revertto'] = 'Вярнуцца да';
$labels['restore'] = 'Аднавіць';
$labels['restoremessage'] = 'Аднавіць ліст?';
$labels['ignore'] = 'Не зважаць';
$labels['responses'] = 'Адказы';
$labels['insertresponse'] = 'Уставіць адказ';
$labels['manageresponses'] = 'Кіраванне адказамі';
$labels['newresponse'] = 'Стварыць новы адказ';
$labels['addresponse'] = 'Дадаць адказ';
$labels['editresponse'] = 'Рэдагаваць адказ';
$labels['editresponses'] = 'Рэдагаваць адказы';
$labels['responsename'] = 'Назва';
$labels['responsetext'] = 'Тэкст адказу';
$labels['attach'] = 'Далучыць';
$labels['attachments'] = 'Далучаныя файлы';
$labels['upload'] = 'Запампаваць';
$labels['uploadprogress'] = '$percent ($current з $total)';
$labels['close'] = 'Закрыць';
$labels['messageoptions'] = 'Параметры ліста...';
$labels['togglecomposeoptions'] = 'Пераключыць параметры стварэння';
$labels['attachmentrename'] = 'Змяніць назву далучанага файла';
$labels['low'] = 'Нізкі';
$labels['lowest'] = 'Найніжэйшы';
$labels['normal'] = 'Звычайны';
$labels['high'] = 'Высокі';
$labels['highest'] = 'Найвышэйшы';
$labels['nosubject'] = '(без тэмы)';
$labels['showimages'] = 'Паказваць выявы';
$labels['allow'] = 'Дазволіць';
$labels['alwaysshow'] = 'Заўсёды паказваць выявы ад $sender';
$labels['alwaysallow'] = 'Заўсёды дазваляць ад $sender';
$labels['isdraft'] = 'Гэта чарнавік.';
$labels['andnmore'] = 'яшчэ $nr...';
$labels['details'] = 'Падрабязнасці';
$labels['summary'] = 'Агулам';
$labels['headers'] = 'Загалоўкі';
$labels['allheaders'] = 'Усе загалоўкі...';
$labels['togglemoreheaders'] = 'Паказаць больш загалоўкаў';
$labels['togglefullheaders'] = 'Паказаць неапрацаваныя загалоўкі';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Звычайны тэкст';
$labels['savesentmessagein'] = 'Захаваць ліст у';
$labels['dontsave'] = 'не захоўваць';
$labels['maxuploadsize'] = 'Максімальны памер файла — $size';
$labels['addcc'] = 'Копія';
$labels['addbcc'] = 'Схаваная копія';
$labels['addreplyto'] = 'Адказ-на';
$labels['addfollowupto'] = 'Групавы-адказ-на';
$labels['sendreceipt'] = 'Адправіць апавяшчэнне пра прачытанне?';
$labels['mdnrequest'] = 'Адпраўнік хоча даведацца пра прачытанне гэтага ліста. Апавясціць адпраўніка?';
$labels['receiptread'] = 'Пацвярджэнне атрымання (прачытання)';
$labels['yourmessage'] = 'Гэта пацвярджэнне атрымання вашага ліста';
$labels['receiptnote'] = 'Заўвага: гэтае пацвярджэнне азначае, што ліст быў адлюстраваны на экране камп\'ютара адрасата. Няма гарантыі, што атрымальнік прачытаў альбо зразумеў змесціва ліста.';
$labels['sendalwaysto'] = 'Заўсёды адпраўляць $email';
$labels['zoomin'] = 'Наблізіць';
$labels['zoomout'] = 'Аддаліць';
$labels['rotate'] = 'Павярнуць';
$labels['increaseimage'] = 'Павялічыць памер выявы';
$labels['decreaseimage'] = 'Паменшыць памер выявы';
$labels['rotateimage'] = 'Павярнуць выяву';
$labels['showtools'] = 'Паказаць інструменты для працы з выявамі';
$labels['hidetools'] = 'Схаваць інструменты для працы з выявамі';
$labels['name'] = 'Імя кантакта';
$labels['firstname'] = 'Імя';
$labels['surname'] = 'Прозвішча';
$labels['middlename'] = 'Імя па бацьку (другое імя)';
$labels['nameprefix'] = 'Назва';
$labels['namesuffix'] = 'Суфікс';
$labels['nickname'] = 'Мянушка';
$labels['jobtitle'] = 'Пасада';
$labels['department'] = 'Аддзел';
$labels['gender'] = 'Пол';
$labels['maidenname'] = 'Дзявоцкае прозвішча';
$labels['email'] = 'Эл. пошта';
$labels['phone'] = 'Тэлефон';
$labels['address'] = 'Адрас';
$labels['street'] = 'Вуліца';
$labels['locality'] = 'Горад';
$labels['zipcode'] = 'Індэкс';
$labels['region'] = 'Вобласць / Правінцыя';
$labels['country'] = 'Краіна';
$labels['birthday'] = 'Дзень народзінаў';
$labels['anniversary'] = 'Юбілей';
$labels['website'] = 'Вэб-сайт';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Нататкі';
$labels['male'] = 'мужчына';
$labels['female'] = 'жанчына';
$labels['manager'] = 'Кіраўнік';
$labels['assistant'] = 'Асістэнт';
$labels['spouse'] = 'Жонка';
$labels['allfields'] = 'Усе палі';
$labels['search'] = 'Пошук';
$labels['searchresult'] = 'Вынік пошуку';
$labels['advsearch'] = 'Пашыраны пошук';
$labels['advanced'] = 'Дадаткова';
$labels['other'] = 'Іншае';
$labels['printcontact'] = 'Надрукаваць кантакт';
$labels['qrcode'] = 'QR-код';
$labels['typehome'] = 'Дом';
$labels['typework'] = 'Праца';
$labels['typeother'] = 'Іншае';
$labels['typemobile'] = 'Мабільны';
$labels['typemain'] = 'Асноўны';
$labels['typehomefax'] = 'Хатні факс';
$labels['typeworkfax'] = 'Працоўны факс';
$labels['typecar'] = 'Аўтамабіль';
$labels['typepager'] = 'Пэйджар';
$labels['typevideo'] = 'Відэа';
$labels['typeassistant'] = 'Асістэнт';
$labels['typehomepage'] = 'Хатняя старонка';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профіль';
$labels['addfield'] = 'Дадаць поле...';
$labels['addcontact'] = 'Дадаць кантакт';
$labels['editcontact'] = 'Рэдагаваць кантакт';
$labels['contacts'] = 'Кантакты';
$labels['contactproperties'] = 'Уласцівасці кантакта';
$labels['contactnameandorg'] = 'Імя і арганізацыя';
$labels['personalinfo'] = 'Асабістыя звесткі';
$labels['personal'] = 'Асабістыя';
$labels['contactphoto'] = 'Асабістае фота';
$labels['edit'] = 'Рэдагаваць';
$labels['cancel'] = 'Скасаваць';
$labels['save'] = 'Захаваць';
$labels['delete'] = 'Выдаліць';
$labels['discard'] = 'Адкінуць';
$labels['continue'] = 'Працягнуць';
$labels['ok'] = 'Добра';
$labels['rename'] = 'Змяніць назву';
$labels['addphoto'] = 'Дадаць';
$labels['replacephoto'] = 'Замяніць';
$labels['uploadphoto'] = 'Запампаваць фота';
$labels['choosefile'] = 'Абраць файл...';
$labels['choosefiles'] = 'Абраць файлы...';
$labels['browse'] = 'Агляд';
$labels['newcontact'] = 'Стварыць новы кантакт';
$labels['deletecontact'] = 'Выдаліць абраныя кантакты';
$labels['composeto'] = 'Напісаць ліст';
$labels['contactsfromto'] = 'Кантакты $from—$to з $count';
$labels['print'] = 'Друкаваць';
$labels['export'] = 'Экспарт';
$labels['exportall'] = 'Экспартаваць усё';
$labels['exportsel'] = 'Экспартаваць абранае';
$labels['exportvcards'] = 'Экспартаваць кантакты ў фармаце vCard';
$labels['newgroup'] = 'Стварыць новую групу';
$labels['addgroup'] = 'Дадаць групу';
$labels['grouprename'] = 'Змяніць назву групы';
$labels['groupdelete'] = 'Выдаліць групу';
$labels['groupassign'] = 'Прызначыць у групу...';
$labels['groupremove'] = 'Выдаліць з групы';
$labels['groupremoveselected'] = 'Выдаліць абраныя кантакты з групы';
$labels['uponelevel'] = 'На адзін узровень уверх';
$labels['previouspage'] = 'Папярэдняя старонка';
$labels['firstpage'] = 'Першая старонка';
$labels['nextpage'] = 'Наступная старонка';
$labels['lastpage'] = 'Апошняя старонка';
$labels['group'] = 'Група';
$labels['groups'] = 'Групы';
$labels['listgroup'] = 'Паказаць кантакты групы';
$labels['personaladrbook'] = 'Асабістыя адрасы';
$labels['searchsave'] = 'Захаваць запыт';
$labels['searchdelete'] = 'Выдаліць запыт';
$labels['import'] = 'Імпарт';
$labels['importcontacts'] = 'Імпартаваць кантакты';
$labels['importfromfile'] = 'Імпартаваць з файла';
$labels['importtarget'] = 'Дадаць канакты ў';
$labels['importreplace'] = 'Замяніць адрасную кнігу цалкам';
$labels['importgroups'] = 'Імпартаваць прызначэнні групы';
$labels['importgroupsall'] = 'Усе (стварыць групы пры неабходнасці)';
$labels['importgroupsexisting'] = 'Толькі для існых групаў';
$labels['importdesc'] = 'Вы можаце запампаваць кантакты з наяўнай адраснай кнігі.<br/>Цяпер мы падтрымліваем імпарт з файлаў фарматаў <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> і CSV (comma-separated).';
$labels['importmapdesc'] = 'Перш чым пачаць імпартаванне даных з файла фармату CSV (comma-separated), пераканайцеся, што палі ніжэй паказваюцца правільна.';
$labels['fieldnotmapped'] = 'Поле не паказана (не імпартаваць)';
$labels['skipheader'] = 'Не імпартаваць першы радок (загалоўкі)';
$labels['done'] = 'Завершана';
$labels['settingsfor'] = 'Налады для';
$labels['about'] = 'Інфармацыя';
$labels['preferences'] = 'Налады';
$labels['userpreferences'] = 'Налады карыстальніка';
$labels['editpreferences'] = 'Рэдагаваць налады карыстальніка';
$labels['identities'] = 'Асабовыя звесткі';
$labels['manageidentities'] = 'Кіраванне асабовымі звесткамі';
$labels['newidentity'] = 'Стварыць новыя асабовыя звесткі';
$labels['addidentity'] = 'Дадаць асабовыя звесткі';
$labels['editidentity'] = 'Рэдагаванне асабовых звестак';
$labels['identityencryption'] = 'Шыфраванне';
$labels['preferhtml'] = 'Паказаць HTML';
$labels['defaultcharset'] = 'Прадвызначанае кадаванне';
$labels['htmlmessage'] = 'Ліст ў фармаце HTML';
$labels['messagepart'] = 'Частка';
$labels['digitalsig'] = 'Электронны подпіс';
$labels['dateformat'] = 'Фармат даты';
$labels['timeformat'] = 'Фармат часу';
$labels['prettydate'] = 'Даты ў зручным фармаце';
$labels['setdefault'] = 'Зрабіць прадвызначаным';
$labels['autodetect'] = 'Аўтаматычна';
$labels['language'] = 'Мова';
$labels['timezone'] = 'Часавы пояс';
$labels['pagesize'] = 'Радкоў на старонцы';
$labels['signature'] = 'Подпіс';
$labels['dstactive'] = 'Летні/зімовы час';
$labels['showinextwin'] = 'Адкрываць лісты ў новым акне';
$labels['composeextwin'] = 'Ствараць лісты ў новым акне';
$labels['htmleditor'] = 'Ствараць лісты ў фармаце HTML';
$labels['htmlonreply'] = 'толькі ў адказ на лісты ў фармаце HTML';
$labels['htmlonreplyandforward'] = 'пры перасылцы альбо ў адказ на лісты ў фармаце HTML';
$labels['htmlsignature'] = 'Подпіс у HTML';
$labels['showemail'] = 'Паказваць адрас электроннай пошты разам з імем кантакта';
$labels['previewpane'] = 'Панэль прагляду';
$labels['skin'] = 'Абалонка інтэрфейсу';
$labels['logoutclear'] = 'Ачышчаць сметніцу пры выхадзе';
$labels['logoutcompact'] = 'Сціскаць атрыманыя пры выхадзе';
$labels['uisettings'] = 'Інтэрфейс карыстальніка';
$labels['serversettings'] = 'Налады сервера';
$labels['mailboxview'] = 'Выгляд скрыні';
$labels['mdnrequests'] = 'Пры запытванні пацвярджэння пра атрыманне';
$labels['askuser'] = 'пытацца мяне';
$labels['autosend'] = 'адпраўляць пацвярджэнне';
$labels['autosendknown'] = 'адпраўляць пацвярджэнне маім кантактам, інакш спытаць';
$labels['autosendknownignore'] = 'адпраўляць пацвярджэнне маім кантактам, інакш ігнараваць';
$labels['autosendtrusted'] = 'адпраўляць пацвярджэнне давераным адпраўнікам, інакш спытаць';
$labels['autosendtrustedignore'] = 'адпраўляць пацвярджэнне давераным адпраўнікам, інакш ігнараваць';
$labels['ignorerequest'] = 'ігнараваць запыт';
$labels['readwhendeleted'] = 'Пазначаць ліст як прачытаны пры выдаленні';
$labels['flagfordeletion'] = 'Пазначаць ліст для выдалення, не выдаляць';
$labels['skipdeleted'] = 'Не паказваць выдаленыя паведамленні';
$labels['deletealways'] = 'Калі не ўдалося перамясціць лісты ў сметніцу, выдаліць іх';
$labels['deletejunk'] = 'Назаўсёды выдаляць лісты ў каталозе спаму';
$labels['showremoteimages'] = 'Паказ адлеглых выяў';
$labels['allowremoteresources'] = 'Дазволіць адлеглыя рэсурсы (выявы, стылі)';
$labels['fromknownsenders'] = 'ад вядомых адпраўнікоў';
$labels['fromtrustedsenders'] = 'ад давераных адпраўнікоў';
$labels['frommycontacts'] = 'ад маіх кантактаў';
$labels['always'] = 'заўсёды';
$labels['alwaysbutplain'] = 'заўсёды, за выключэннем адказаў на просты тэкст';
$labels['showinlineimages'] = 'Паказваць далучаныя выявы пад лістом';
$labels['autosavedraft'] = 'Аўтаматычна захоўваць чарнавікі';
$labels['everynminutes'] = 'кожныя $n хвілін(ы)';
$labels['refreshinterval'] = 'Абнаўленне (праверка новых лістоў і г. д.)';
$labels['never'] = 'ніколі';
$labels['immediately'] = 'неадкладна';
$labels['messagesdisplaying'] = 'Адлюстраванне лістоў';
$labels['messagescomposition'] = 'Напісанне лістоў';
$labels['mimeparamfolding'] = 'Назвы далучаных файлаў';
$labels['2231folding'] = 'Поўныя RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Поўныя RFC 2047 (інш.)';
$labels['force7bit'] = 'Выкарыстоўваць MIME-кадаванне для 8-бітных знакаў';
$labels['savelocalstorage'] = "Захоўваць у лакальным сховішчы браўзера (часова)";
$labels['advancedoptions'] = 'Дадатковыя параметры';
$labels['toggleadvancedoptions'] = 'Паказаць/Схаваць дадатковыя параметры';
$labels['focusonnewmessage'] = 'Актываваць акно браўзера пры атрыманні новага ліста';
$labels['checkallfolders'] = 'Правяраць усе каталогі на наяўнасць новых лістоў';
$labels['displaynext'] = 'Паказваць наступны запіс у спісе пасля выдалення/перамяшчэння';
$labels['defaultfont'] = 'Прадвызначаны шрыфт лістоў у фармаце HTML';
$labels['mainoptions'] = 'Асноўныя параметры';
$labels['browseroptions'] = 'Параметры браўзера';
$labels['section'] = 'Раздзел';
$labels['maintenance'] = 'Абслугоўванне';
$labels['newmessage'] = 'Новы ліст';
$labels['signatureoptions'] = 'Параметры подпісу';
$labels['whenreplying'] = 'Пры адказе';
$labels['replyempty'] = 'не цытаваць зыходны ліст';
$labels['replytopposting'] = 'пачынаць новы ліст над цытаваным';
$labels['replytoppostingnoindent'] = 'пачынаць новы ліст над цытаваным (без водступу)';
$labels['replybottomposting'] = 'пачынаць новы ліст пад цытаваным';
$labels['replyremovesignature'] = 'Адказваючы, выдаліць стары подпіс';
$labels['autoaddsignature'] = 'Аўтаматычна дадаваць подпіс';
$labels['newmessageonly'] = 'толькі ў новых лістах';
$labels['replyandforwardonly'] = 'толькі ў адказах і перасланых';
$labels['insertsignature'] = 'Уставіць подпіс';
$labels['sigbelow'] = 'Размяшчаць подпіс пад цытаваным лістом';
$labels['sigseparator'] = 'Прымусова выкарыстоўваць стандартны падзяляльнік ў подпісах';
$labels['automarkread'] = 'Пазначыць прачытаным';
$labels['afternseconds'] = 'пасля $n секунд';
$labels['reqmdn'] = 'Заўсёды запытваць пацвярджэнне атрымання';
$labels['reqdsn'] = 'Заўсёды запытваць апавяшчэнне пра дастаўку';
$labels['replysamefolder'] = 'Размяшчаць адказы ў каталог зыходнага ліста';
$labels['defaultabook'] = 'Прадвызначаная адрасная кніга';
$labels['autocompletesingle'] = 'Прапускаць альтэрнатыўныя адрасы пры аўтаматычным дапаўненні';
$labels['listnamedisplay'] = 'Паказваць спіс кантактаў як';
$labels['contactformmode'] = 'Рэжым формы кантакта';
$labels['privatemode'] = 'Прыватны';
$labels['businessmode'] = 'Працоўны';
$labels['collectedaddresses'] = 'Сабраныя адрасы';
$labels['collectedrecipients'] = 'Сабраныя атрымальнікі';
$labels['collectedrecipientsopt'] = 'Захоўвайць атрымальнікаў выходных лістоў у';
$labels['collectedsendersopt'] = 'Захоўваць давераных адпраўнікоў у';
$labels['trustedsenders'] = 'Давераныя адпраўнікі';
$labels['spellcheckbeforesend'] = 'Правяраць правапіс перад адпраўленнем';
$labels['spellcheckoptions'] = 'Параметры праверкі правапісу';
$labels['spellcheckignoresyms'] = 'Ігнараваць словы з сімваламі';
$labels['spellcheckignorenums'] = 'Ігнараваць словы з лікамі';
$labels['spellcheckignorecaps'] = 'Ігнараваць словы з усімі літарамі ў верхнім рэгістры';
$labels['addtodict'] = 'Дадаць у слоўнік';
$labels['mailtoprotohandler'] = 'Зарэгістраваць пратакол апрацоўвання для спасылак mailto';
$labels['standardwindows'] = 'Апрацоўваць выплыўныя вокны як звычайныя вокны';
$labels['forwardmode'] = 'Перасылка лістоў';
$labels['inline'] = 'у тэксце';
$labels['asattachment'] = 'як далучаны файл';
$labels['replyallmode'] = 'Прадвызначанае дзеянне кнопкі [Адказаць усім]';
$labels['replyalldefault'] = 'адказаць усім';
$labels['replyalllist'] = 'адказаць толькі ў спіс рассылкі (калі знойдзены)';
$labels['allmessages'] = 'усе паведамленні';
$labels['olderxdays'] = 'больш за $x дзён';
$labels['folder'] = 'Каталог';
$labels['folders'] = 'Каталогі';
$labels['foldername'] = 'Назва каталога';
$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Лісты';
$labels['create'] = 'Стварыць';
$labels['createfolder'] = 'Стварыць новы каталог';
$labels['managefolders'] = 'Кіраванне каталогамі';
$labels['specialfolders'] = 'Адмысловыя каталогі';
$labels['properties'] = 'Уласцівасці';
$labels['folderproperties'] = 'Уласцівасці каталога';
$labels['parentfolder'] = 'Бацькоўскі каталог';
$labels['location'] = 'Размяшчэнне';
$labels['info'] = 'Звесткі';
$labels['getfoldersize'] = 'Пстрыкніце, каб даведацца памер каталога';
$labels['changesubscription'] = 'Пстрыкніце, каб змяніць падпіску';
$labels['foldertype'] = 'Тып каталога';
$labels['personalfolder'] = 'Асабісты каталог';
$labels['otherfolder'] = 'Каталог іншага карыстальніка';
$labels['sharedfolder'] = 'Публічны каталог';
$labels['findfolders'] = 'Пошук каталогаў';
$labels['findcontacts'] = 'Пошук кантактаў';
$labels['findmail'] = 'Пошук лістоў';
$labels['namespace.personal'] = 'Асабістыя';
$labels['namespace.other'] = 'Iншыя карыстальнікi';
$labels['namespace.shared'] = 'Адпраўлена';
$labels['dualuselabel'] = 'Могуць змяшчаць толькі';
$labels['dualusemail'] = 'лісты';
$labels['dualusefolder'] = 'каталогі';
$labels['generate'] = 'Згенераваць';
$labels['encryptioncreatekey'] = 'Стварыць новую пару ключоў';
$labels['openmailvelopesettings'] = 'Адкрыць налады Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Вы маеце $nr адпаведных прыватных ключоў, якія захоўваюцца ў вашай вязцы Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Гэтыя асабовыя звесткі адпраўніка яшчэ не маюць прыватнага ключа PGP, захаванага ў пашырэнні Mailvelope. Хоочаце стварыць яго, каб уключыць зашыфраванае ліставанне?';
$labels['encryption'] = 'Шыфраванне';
$labels['mailvelopeoptions'] = 'Параметры Mailvelope';
$labels['mailvelopemainkeyring'] = 'Выкарыстоўваць галоўную вязку Mailvelope';
$labels['mailvelopenotfound'] = 'Пашырэнне Mailvelope не ўсталявана (або не ўключана) у вашым браўзеры.';
$labels['sortby'] = 'Сартаваць па';
$labels['sortasc'] = 'Па павелічэнні';
$labels['sortdesc'] = 'Па памяншэнні';
$labels['undo'] = 'Адрабіць';
$labels['installedplugins'] = 'Усталяваныя убудовы';
$labels['plugin'] = 'Убудова';
$labels['version'] = 'Версія';
$labels['source'] = 'Крыніца';
$labels['destination'] = 'Прызначэнне';
$labels['license'] = 'Ліцэнзія';
$labels['support'] = 'Падтрымка';
$labels['savedsearches'] = 'Захаваныя запыты пошуку';
$labels['dateformatY'] = 'ГГГГ';
$labels['dateformaty'] = 'ГГ';
$labels['dateformatm'] = 'ММ';
$labels['dateformatd'] = 'ДзДз';
$labels['dateformatj'] = 'Д';
$labels['dateformatn'] = 'М';
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
$labels['unicode'] = 'Юнікод';
$labels['english'] = 'Англійскае';
$labels['westerneuropean'] = 'Заходне-Еўрапейскае';
$labels['easterneuropean'] = 'Усходне-Еўрапейскае';
$labels['southeasterneuropean'] = 'Паўднёва-Еўрапейскае';
$labels['baltic'] = 'Балтыйскае';
$labels['cyrillic'] = 'Кірыліца';
$labels['arabic'] = 'Арабскае';
$labels['greek'] = 'Грэчаскае';
$labels['hebrew'] = 'Іўрыт';
$labels['turkish'] = 'Турэцкае';
$labels['nordic'] = 'Скандынаўскае';
$labels['thai'] = 'Тайскае';
$labels['celtic'] = 'Кельцкае';
$labels['vietnamese'] = 'В\'етнамскае';
$labels['japanese'] = 'Японскае';
$labels['korean'] = 'Карэйскае';
$labels['chinese'] = 'Кітайскае';
$labels['arialabeltopnav'] = 'Кіраванне акном';
$labels['arialabeltasknav'] = 'Задачы праграмы';
$labels['arialabeltoolbar'] = 'Панэль інструментаў праграмы';
$labels['arialabellistnav'] = 'Навігацыя па спісах';
$labels['arialabelactivetask'] = 'Актыўная задача';
$labels['arialabelmessagessearchfilter'] = 'Фільтр спіса пошты';
$labels['arialabelmailsearchform'] = 'Форма пошуку лістоў';
$labels['arialabelcontactsearchform'] = 'Форма пошуку кантактаў';
$labels['arialabelmailquicksearchbox'] = 'Увод для пошуку лістоў';
$labels['arialabelquicksearchbox'] = 'Увод для пошуку';
$labels['arialabelfoldersearchfilter'] = 'Фільтр спіса каталогаў';
$labels['arialabelfoldersearchform'] = 'Форма пошуку каталогаў';
$labels['arialabelfolderlist'] = 'Выбар каталогаў';
$labels['arialabelmessagelist'] = 'Спіс лістоў';
$labels['arialabelmailpreviewframe'] = 'Папярэдні прагляд лістоў';
$labels['arialabelmailboxmenu'] = 'Меню дзеянняў з каталогам';
$labels['arialabellistselectmenu'] = 'Меню выбару спіса';
$labels['arialabelthreadselectmenu'] = 'Меню спіса ліставанняў';
$labels['arialabelmessagelistoptions'] = 'Параметры паказу і сартавання лістоў';
$labels['arialabelmailimportdialog'] = 'Дыялог імпартавання лістоў';
$labels['arialabelmessagenav'] = 'Навігацыя па лістах';
$labels['arialabelmessagebody'] = 'Цела ліста';
$labels['arialabelmessageactions'] = 'Дзеянні для лістоў';
$labels['arialabelcontactquicksearch'] = 'Форма пошуку кантактаў';
$labels['arialabelcontactsearchbox'] = 'Увод для пошуку кантактаў';
$labels['arialabelmessageheaders'] = 'Загалоўкі лістоў';
$labels['arialabelforwardingoptions'] = 'Параметры перасылання';
$labels['arialabelreplyalloptions'] = 'Параметры адказу ўсім';
$labels['arialabelmoremessageactions'] = 'Дадатковыя дзеянні для лістоў';
$labels['arialabelmorecontactactions'] = 'Дадатковыя дзеянні для кантактаў';
$labels['arialabelmarkmessagesas'] = 'Пазначыць абраныя лісты як...';
$labels['arialabelcomposeoptions'] = 'Параметры стварэння';
$labels['arialabelresponsesmenu'] = 'Меню падрыхтаваных адказаў';
$labels['arialabelattachmentuploadform'] = 'Форма запампоўвання далучаных файлаў';
$labels['arialabelattachmentmenu'] = 'Параметры далучэння файлаў';
$labels['arialabelmailtomenu'] = 'Параметры адрасоў электроннай пошты';
$labels['arialabelattachmentpreview'] = 'Папярэдні прагляд далучаных файлаў';
$labels['ariasummarycomposecontacts'] = 'Спіс кантактаў і групаў для выбару атрымальнікаў';
$labels['arialabelcontactexportoptions'] = 'Параметры экспартавання кантактаў';
$labels['arialabelabookgroupoptions'] = 'Параметры адраснай кнігі і групаў';
$labels['arialabelpreferencesform'] = 'Форма налад';
$labels['arialabelidentityeditfrom'] = 'Форма рэдагавання асабовых звестак';
$labels['arialabelresponseeditfrom'] = 'Форма рэдагавання адказу';
$labels['arialabelsearchterms'] = 'Пошук тэрмінаў';
$labels['arialabeldropactionmenu'] = 'Меню дзеянняў выплыўнога меню';
$labels['arialabelheadersmenu'] = 'Меню дадання атрымальніка (загаловак)';
$labels['arialabelimagetools'] = 'Інструменты для працы з выявамі';
$labels['helplistnavigation'] = 'Навігацыя клавіятурай па спісе';
$labels['helplistkeyboardnavigation'] = "Стрэлкі ўверх/уніз: перамясціць фокус/вылучэнне радка.
Прагал: абраць радок у фокусе.
Shift + уверх/уніз: абраць дадатковы радок ніжэй/вышэй.
Ctrl + прагал: дадаць/прыбраць радок у фокусе з абранага.";
$labels['helplistkeyboardnavmessages'] = "Стрэлкі ўправа/улева: разгарнуць/згарнуць ліставанне (толькі ў рэжыме ліставання).
Enter: адкрыць абраны ліст/ліст у фокусе.
Delete: перамясціць абраныя лісты ў кошык.";
$labels['helplistkeyboardnavcontacts'] = "Enter: адкрыць абраны кантакт / кантакт у фокусе.";
localization/be_BE/messages.inc000064400000061123151727150570012507 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Адбылася памылка.';
$messages['loginfailed']  = 'Не ўдалося ўвайсці.';
$messages['cookiesdisabled'] = 'Ваш браўзер не падтрымлівае cookie.';
$messages['sessionerror'] = 'Ваш сеанс хібны або яго тэрмін дзеяння скончыўся.';
$messages['cookiesmismatch'] = 'Выяўлена неадпаведнасць файлаў cookie. Ачысціце файлы cookie вашага браўзера.';
$messages['storageerror'] = 'Не атрымалася злучыцца з серверам IMAP.';
$messages['servererror'] = 'Памылка сервера!';
$messages['servererrormsg'] = 'Памылка сервера: $msg';
$messages['accountlocked'] = 'Было занадта шмат няўдалых спробаў увайсці. Паспрабуйце пазней.';
$messages['connerror'] = 'Памылка злучэння (не атрымалася злучыцца з серверам)!';
$messages['dberror'] = 'Памылка базы даных!';
$messages['dbconnerror'] = 'Немагчыма падлучыцца да базы даных!';
$messages['windowopenerror'] = 'Выплыўное акно было заблакавана!';
$messages['requesttimedout'] = 'Час чакання адказу скончыўся';
$messages['errorreadonly'] = 'Не атрымалася выканаць аперацыю. Каталог даступны толькі для чытання.';
$messages['errornoperm'] = 'Не атрымалася выканаць аперацыю. Адмоўлена ў доступе.';
$messages['erroroverquota'] = 'Не атрымалася выканаць аперацыю. Не стае вольнага месца на дыску.';
$messages['erroroverquotadelete'] = 'Не стае вольнага месца на дыску. Націсніце SHIFT+DEL, каб выдаліць ліст.';
$messages['invalidrequest'] = 'Хібны запыт! Даныя не захаваныя.';
$messages['invalidhost'] = 'Хібная назва сервера.';
$messages['nomessagesfound'] = 'У гэтай скрыні няма паведамленняў.';
$messages['loggedout'] = 'Вы паспяхова спынілі сеанс. Да пабачэння!';
$messages['mailboxempty'] = 'Скрыня пустая';
$messages['nomessages'] = 'Няма лістоў';
$messages['refreshing'] = 'Абнаўленне...';
$messages['loading'] = 'Загрузка...';
$messages['uploading'] = 'Запампоўванне файла...';
$messages['attaching'] = 'Далучэнне файла...';
$messages['uploadingmany'] = 'Запампоўванне файлаў...';
$messages['loadingdata'] = 'Загрузка даных...';
$messages['checkingmail'] = 'Праверка наяўнасці новых лістоў...';
$messages['sendingmessage'] = 'Адпраўленне ліста...';
$messages['messagesent'] = 'Ліст паспяхова адпраўлены.';
$messages['savingmessage'] = 'Захаванне ліста...';
$messages['messagesaved'] = 'Ліст захаваны ў чарнавікі.';
$messages['successfullysaved'] = 'Паспяхова захавана.';
$messages['savingresponse'] = 'Захаванне тэксту адказу...';
$messages['deleteresponseconfirm'] = 'Сапраўды выдаліць тэкст адказу?';
$messages['nocontactselected'] = 'Вы яшчэ не абралі кантакт.';
$messages['addedsuccessfully'] = 'Кантакт паспяхова дададзены ў адрасную кнігу.';
$messages['contactexists'] = 'Кантакт з такім адрасам электроннай пошты ўжо існуе.';
$messages['contactnameexists'] = 'Кантакт з такім самым імем ужо існуе.';
$messages['blockedimages'] = 'Каб абараніць вашу прыватнасць, адлеглыя выявы ў гэтым лісце заблакаваныя.';
$messages['blockedresources'] = 'У мэтах бяспекі адлеглыя рэсурсы былі заблакаваныя.';
$messages['suspiciousemail'] = 'Гэты ліст змяшчае падазроныя адрасы электроннай пошты, якія могуць належаць ашуканцам.';
$messages['bccemail'] = 'Перасланы(ыя) ліст(ы) змяшчае(юць) канфідэнцыйных атрымальнікаў (схаваная копія).';
$messages['bouncehint'] = 'Ліст будзе адпраўлены без зменаў, г.зн. з зыходным целам, загалоўкамі і атрымальнікамі.';
$messages['encryptedmessage'] = 'Гэта зашыфраваны ліст. Яго немагчыма паказаць. Выбачайце!';
$messages['externalmessagedecryption'] = 'Гэта зашыфраваны ліст, яго можна расшыфраваць з дапамогай пашырэння вашага браўзера.';
$messages['nopubkeyfor'] = 'Для $email не знойдзена прыдатнага публічнага ключа';
$messages['nopubkeyforsender'] = 'Для вашых асобовых звестак не знойдзена прыдатнага публічнага ключа. Хочаце зашыфраваць ліст толькі для атрымальнікаў?';
$messages['encryptnoattachments'] = 'Ужо запампаваныя далучаныя файлы немагчыма зашыфраваць. Дадайце іх нанова ў рэдактары шыфравання.';
$messages['searchpubkeyservers'] = 'Хочаце пашукаць адсутныя ключы на ​​серверах публічных ключоў?';
$messages['encryptpubkeysfound'] = 'Знойдзены наступныя публічныя ключы:';
$messages['keyservererror'] = 'Не ўдалося атрымаць ключы з сервера.';
$messages['keyimportsuccess'] = 'Публічны ключ $key паспяхова імпартаваны ў вашую вязку ключоў.';
$messages['nocontactsfound'] = 'Кантактаў не знойдзена.';
$messages['contactnotfound'] = 'Запытаны кантакт не знойдзены.';
$messages['contactsearchonly'] = 'Каб убачыць кантакты з гэтай адраснай кнігі, неабходна выкарыстаць форму пошуку.';
$messages['sendingfailed'] = 'Не атрымалася адправіць ліст.';
$messages['senttooquickly'] = 'Пачакайце $sec секунд(ы) перад адпраўленнем гэтага ліста.';
$messages['errorsavingsent'] = 'Не атрымалася захаваць адпраўлены ліст.';
$messages['errorsaving'] = 'Не атрымалася захаваць.';
$messages['errormoving'] = 'Не атрымалася перамясціць ліст(ы).';
$messages['errorcopying'] = 'Не атрымалася скапіяваць ліст(ы).';
$messages['errordeleting'] = 'Не атрымалася выдаліць ліст(ы).';
$messages['errormarking'] = 'Не атрымалася пазначыць ліст(ы).';
$messages['alerttitle'] = 'Увага';
$messages['confirmationtitle'] = 'Сапраўды...';
$messages['deletecontactconfirm']  = 'Сапраўды выдаліць абраны(я) кантакт(ы)?';
$messages['deletegroupconfirm']  = 'Сапраўды выдаліць абраную групу?';
$messages['deletemessagesconfirm'] = 'Сапраўды выдаліць абраны(я) ліст(ы)?';
$messages['deletefolderconfirm']  = 'Сапраўды выдаліць гэты каталог?';
$messages['movefolderconfirm']  = 'Сапраўды перамясціць гэты каталог?';
$messages['purgefolderconfirm']  = 'Сапраўды выдаліць усе лісты з гэтага каталога?';
$messages['contactdeleting'] = 'Выдаленне кантакта(аў)...';
$messages['groupdeleting'] = 'Выдаленне групы...';
$messages['folderdeleting'] = 'Выдаленне каталога...';
$messages['foldermoving'] = 'Перамяшчэнне каталога...';
$messages['foldersubscribing'] = 'Падпісанне на каталог...';
$messages['folderunsubscribing'] = 'Адпісванне ад каталога...';
$messages['formincomplete'] = 'Форма запоўненая не поўнасцю.';
$messages['noemailwarning'] = 'Увядзіце прыдатны адрас электроннай пошты.';
$messages['nonamewarning']  = 'Увядзіце назву.';
$messages['nopagesizewarning'] = 'Увядзіце памер старонкі.';
$messages['nosenderwarning'] = 'Увядзіце адрас электроннай пошты адпраўніка.';
$messages['recipientsadded'] = 'Атрымальнік(і) паспяхова дададзены(ыя).';
$messages['norecipientwarning'] = 'Увядзіце прынамсі аднаго атрымальніка.';
$messages['disclosedrecipwarning'] = 'Усе атрымальнікі будуць бачыць адрасы электроннай пошты адзін аднаго. Каб прадухіліць гэта і абараніць іх прыватнасць, вы можаце выкарыстоўваць поле "Схаваная копія".';
$messages['disclosedreciptitle'] = 'Занадта шмат публічных атрымальнікаў';
$messages['nosubjectwarning']  = 'Тэма ліста пустая. Хочаце ўвесці?';
$messages['nosubjecttitle']  = 'Няма тэмы';
$messages['nobodywarning'] = 'Адправіць ліст без тэксту?';
$messages['notsentwarning'] = 'Ліст не быў адпраўлены і мае незахаваныя змены. Хочаце адкінуць змены?';
$messages['restoresavedcomposedata'] = 'Быў знойдзены створаны, але не адпраўлены ліст.\n\nТэма: $subject\nЗахавана: $date\n\nХочаце аднавіць яго?';
$messages['nosearchname'] = 'Увядзіце імя кантакта альбо адрас электроннай пошты.';
$messages['notuploadedwarning'] = 'Яшчэ не запампаваліся ўсе далучаныя файлы. Пачакайце альбо скасуйце аперацыю.';
$messages['searchsuccessful'] = 'Знойдзена $nr лістоў.';
$messages['contactsearchsuccessful'] = 'Знойдзена $nr кантактаў.';
$messages['searchnomatch'] = 'Пошук не даў выніку.';
$messages['searching'] = 'Пошук...';
$messages['checking'] = 'Праверка...';
$messages['stillsearching'] = 'Усё яшчэ выконваецца пошук...';
$messages['nospellerrors'] = 'Памылак не выяўлена.';
$messages['folderdeleted'] = 'Каталог паспяхова выдалены.';
$messages['foldersubscribed'] = 'Паспяхова падпісана на каталог.';
$messages['folderunsubscribed'] = 'Паспяхова адпісана ад каталога.';
$messages['folderpurged'] = 'Каталог паспяхова ачышчаны.';
$messages['folderexpunged'] = 'Каталог паспяхова сціснуты.';
$messages['deletedsuccessfully'] = 'Паспяхова выдалена.';
$messages['converting'] = 'Выдаленне фарматавання...';
$messages['messageopenerror'] = 'Не атрымалася загрузіць ліст з сервера.';
$messages['filelinkerror'] = 'Не атрымалася далучыць файл.';
$messages['fileuploaderror'] = 'Не атрымалася запампаваць файл.';
$messages['csvfilemismatch'] = 'Імпартаванне некалькіх файлаў CSV з адрознымі палямі не падтрымліваецца.';
$messages['filesizeerror'] = 'Запампаваны файл перавышае максімальна дазволены памер $size.';
$messages['filecounterror'] = 'Вы можаце запампаваць не больш за $count файлаў запар.';
$messages['msgsizeerror'] = 'Не атрымалася далучыць файл. Перавышаны максімальны памер ліста ($size).';
$messages['msgsizeerrorfwd'] = 'Перавышаны максімальны памер ліста ($size). $num ліст(оў) не было далучана.';
$messages['copysuccess'] = 'Паспяхова скапіявана $nr кантактаў.';
$messages['movesuccess'] = 'Паспяхова перамешчана $nr кантактаў.';
$messages['copyerror'] = 'Не атрымалася скапіяваць ніводнага кантакта.';
$messages['moveerror'] = 'Не атрымалася перамясціць ніводнага кантакта.';
$messages['sourceisreadonly'] = 'Гэтая адрасная кніга даступная толькі для чытання.';
$messages['errorsavingcontact'] = 'Не атрымалася захаваць адрас кантакта.';
$messages['movingmessage'] = 'Выдаленне ліста(оў)...';
$messages['copyingmessage'] = 'Капіяванне ліста(оў)...';
$messages['copyingcontact'] = 'Капіяванне кантакта(аў)...';
$messages['movingcontact'] = 'Перамяшчэнне кантакта(аў)...';
$messages['deletingmessage'] = 'Выдаленне ліста(оў)...';
$messages['markingmessage'] = 'Пазначэнне ліста(оў)...';
$messages['addingmember'] = 'Даданне кантакта(аў) у групу...';
$messages['removingmember'] = 'Выдаленне кантакта(аў) з групы...';
$messages['receiptsent'] = 'Пацвярджэнне аб прачытанні паспяхова адпраўлена.';
$messages['errorsendingreceipt'] = 'Не атрымалася адправіць пацвярджэнне.';
$messages['deleteidentityconfirm'] = 'Сапраўды выдаліць гэтыя асабовыя звесткі?';
$messages['nodeletelastidentity'] = 'Вы не можаце выдаліць гэтыя асабовыя звесткі, бо яны апошняя.';
$messages['forbiddencharacter'] = 'Назва каталога змяшчае забаронены сімвал.';
$messages['selectimportfile'] = 'Абярыце файл, які хочаце запампаваць.';
$messages['addresswriterror'] = 'Абраная адрасная кніга даступная толькі для чытання.';
$messages['contactaddedtogroup'] = 'Кантакты паспяхова дададзеныя ў групу.';
$messages['contactremovedfromgroup'] = 'Кантакты паспяхова выдаленыя з групы.';
$messages['nogroupassignmentschanged'] = 'Усе прызначэнні групы засталіся без зменаў.';
$messages['importwait'] = 'Імпартаванне...';
$messages['importformaterror'] = 'Не атрымалася імпартаваць! Запампаваны файл не змяшчае прыдатных даных.';
$messages['importconfirm'] = '<b>Паспяхова імпартаваны(а) $inserted кантакт(аў)</b>';
$messages['importconfirmskipped'] = '<b>Прапушчана $skipped існых запісаў</b>';
$messages['importmessagesuccess'] = 'Паспяхова імпартавана $nr лістоў';
$messages['importmessageerror'] = 'Не атрымалася імпартаваць! Загружаны файл не ёсць прыдатным лістом альбо файлам паштовай скрыні';
$messages['opnotpermitted'] = 'Аперацыя забароненая!';
$messages['nofromaddress'] = 'У абраных асабовых звестках няма адраса электроннай пошты.';
$messages['editorwarning'] = 'Змена тыпу рэдактара можа прывесці да страты фарматавання. Працягнуць?';
$messages['httpreceivedencrypterror'] = 'Крытычная памылка ў канфігурацыі. Неадкладна звяжыцеся з адміністратарам. <b>Ліст немагчыма адправіць.</b>';
$messages['smtpconnerror'] = 'Памылка SMTP ($code): Не атрымалася злучыцца з серверам.';
$messages['smtpautherror'] = 'Памылка SMTP ($code): не атрымалася выканаць аўтэнтыфікацыю.';
$messages['smtpfromerror'] = 'Памылка SMTP ($code): не атрымалася пазначыць адпраўніка "$from" ($msg).';
$messages['smtptoerror'] = 'Памылка STMP ($code): не атрымалася пазначыць атрымальніка "$to" ($msg).';
$messages['smtprecipientserror'] = 'Памылка STMP: не атрымалася прачытаць спіс атрымальнікаў.';
$messages['smtputf8error'] = 'Памылка SMTP: сервер не падтрымлівае Юнікод у адрасах электроннай пошты.';
$messages['smtpsizeerror'] = 'Памылка STMP: памер ліста перавышае ліміт сервера ($limit)';
$messages['smtperror'] = 'Памылка SMTP: $msg';
$messages['emailformaterror'] = 'Хібны адрас электроннай пошты: $email';
$messages['toomanyrecipients'] = 'Занадта шмат атрымальнікаў. Паменшыце колькасць атрымальнікаў да $max.';
$messages['maxgroupmembersreached'] = 'Колькасць удзельнікаў групы перавышае максімум — $max.';
$messages['internalerror'] = 'Унутраная памылка. Паспрабуйце яшчэ раз.';
$messages['contactdelerror'] = 'Не атрымалася выдаліць кантакт(ы).';
$messages['contactdeleted'] = 'Кантакт(ы) выдалены(ыя).';
$messages['contactrestoreerror'] = 'Не атрымалася аднавіць выдалены(ыя) кантакт(ы).';
$messages['contactrestored'] = 'Кантакт(ы) адноўлены(ыя).';
$messages['groupdeleted'] = 'Група паспяхова выдаленая.';
$messages['grouprenamed'] = 'Назва групы паспяхова змененая.';
$messages['groupcreated'] = 'Група паспяхова створаная.';
$messages['savedsearchdeleted'] = 'Захаваны запыт паспяхова выдалены.';
$messages['savedsearchdeleteerror'] = 'Не атрымалася выдаліць захаваны запыт пошуку.';
$messages['savedsearchcreated'] = 'Захаваны запыт пошуку паспяхова створаны.';
$messages['savedsearchcreateerror'] = 'Не атрымалася стварыць захаваны запыт.';
$messages['messagedeleted'] = 'Ліст(ы) паспяхова выдалены(ыя).';
$messages['messagemoved'] = 'Ліст(ы) паспяхова перамешчаны(ыя).';
$messages['messagemovedtotrash'] = 'Ліст(ы) паспяхова перамешчаны(ыя) у сметніцу.';
$messages['messagecopied'] = 'Ліст(ы) паспяхова скапіяваны(ыя).';
$messages['messagemarked'] = 'Ліст(ы) паспяхова пазначаны(ыя).';
$messages['autocompletechars'] = 'Увядзіце прынамсі $min знакаў для аўтадапаўнення.';
$messages['autocompletemore'] = 'Знойдзена занадта шмат адпаведных запісаў. Увядзіце больш знакаў.';
$messages['namecannotbeempty'] = 'Назва не можа быць пустой.';
$messages['nametoolong'] = 'Назва занадта доўгая.';
$messages['namedotforbidden'] = 'Назва каталога не можа пачынацца з кропкі.';
$messages['folderupdated'] = 'Каталог паспяхова абноўлены.';
$messages['foldercreated'] = 'Каталог паспяхова створаны.';
$messages['invalidimageformat'] = 'Няслушны фармат выявы.';
$messages['mispellingsfound'] = 'У лісце выяўленыя граматычныя памылкі.';
$messages['parentnotwritable'] = 'Не атрымалася стварыць/перамясціць каталог ў абраным бацькоўскім каталозе. Няма правоў доступу.';
$messages['messagetoobig'] = 'Гэтая частка ліста занадта вялікая, каб яе апрацаваць.';
$messages['attachmentvalidationerror'] = 'Гэты далучаны файл выглядае падазроным, бо яго тып не супадае з тыпам, пададзеным у лісце. Калі вы не давяраеце адпраўніку, вам не варта адкрываць яго ў браўзеры, бо ён можа змяшчаць шкоднае змесціва.<br/><br/><em>Чакаецца: $expected; знойдзена: $detected</em>';
$messages['noscriptwarning'] = 'Увага: паштовай службе патрэбны Javascript! Каб карыстацца ёй, у наладах браўзера трэба ўключыць Javascript.';
$messages['messageissent'] = 'Ліст ўжо адпраўлены, але яшчэ не захавана. Хочаце захаваць?';
$messages['errnotfound'] = 'Файл не знойдзены';
$messages['errnotfoundexplain'] = 'Запытаны рэсурс не знойдзены.';
$messages['errfailedrequest'] = 'Не атрымалася выканаць запыт';
$messages['errauthorizationfailed'] = 'Не атрымалася выканаць аўтарызацыю';
$messages['errunauthorizedexplain'] = 'Не ўдалося пацвердзіць, што вы маеце права на доступ да гэтай службы.';
$messages['errrequestcheckfailed'] = 'Не атрымалася праверыць запыт';
$messages['errcsrfprotectionexplain'] = "Каб абараніць вас, доступ да гэтага рэсурсу абаронены ад CSRF.\nКалі вы бачыце гэтае паведамленне, верагодна, вы не выходзілі з сістэмы, перш чым выйсці з вэб-праграмы.\n\nЗараз патрэбна ўзаемадзеянне з чалавекам.";
$messages['errcontactserveradmin'] = 'Звярніцеся да адміністратара сервера.';
$messages['clicktoresumesession'] = 'Націсніце сюды, каб аднавіць папярэдні сеанс';
$messages['errcomposesession'] = 'Не атрымалася пачаць сеанс';
$messages['errcomposesessionexplain'] = 'Запытаны сеанс стварэння не знойдзены.';
$messages['clicktocompose'] = 'Націсніце сюды, каб стварыць новы ліст';
$messages['nosupporterror'] = 'Гэтая функцыя не падтрымліваецца ў вэб-браўзера.';
$messages['siginserted'] = 'Подпіс паспяхова ўстаўлены.';
$messages['responseinserted'] = 'Адказ паспяхова ўстаўлены.';
$messages['noresponsesavailable'] = 'Няма даступных адказаў';
$messages['listempty'] = 'Спіс пусты.';
$messages['listusebutton'] = 'Каб дадаць новы запіс, скарыстайцеся кнопкай "Стварыць".';
$messages['keypaircreatesuccess'] = 'Новая пара ключоў паспяхова створаная для $identity.';
$messages['emptyattachment'] = 'Здаецца, гэты ліст пусты.<br> Магчыма, змесціва было выдалена антывіруснымі/антыспамавымі службамі. Удакладніце ў адпраўніка.';
$messages['oauthloginfailed'] = 'Не атрымалася ўвайсці з дапамогай OAuth. Паспрабуйце пазней.';
localization/is_IS/timezones.inc000064400000047462151727150570013001 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afríka';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algeirsborg';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brassaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kaíró';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibútí';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Jóhannesarborg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinsasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Lúanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lúsaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monróvía';
$labels['tz:africa:nairobi'] = 'Næróbí';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Trípólí';
$labels['tz:africa:tunis'] = 'Túnisborg';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Ameríka';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentína';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belís';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bógóta';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Kostaríka';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Nuuk';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Gvadalúp';
$labels['tz:america:guatemala'] = 'Gvatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Gvæana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaíka';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Líma';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managva';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martiník';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexíkóborg';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevídeó';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Norður Dakóta';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santíago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Skoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Túle';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Tórontó';
$labels['tz:america:tortola'] = 'Tortóla';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antartíka';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Norðurhöf';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asía';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Barein';
$labels['tz:asia:baku'] = 'Bakú';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirút';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brúnei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Kólombó';
$labels['tz:asia:damascus'] = 'Damaskus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dúbæ';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Hósjímín-borg';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkútsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerúsalem';
$labels['tz:asia:kabul'] = 'Kabúl';
$labels['tz:asia:kamchatka'] = 'Kamtsjatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Katmandú';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kalkútta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kúala Lúmpúr';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kúveit';
$labels['tz:asia:macau'] = 'Makaó';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manilla';
$labels['tz:asia:muscat'] = 'Múskat';
$labels['tz:asia:nicosia'] = 'Níkósía';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pjongjang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sjakalín';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seúl';
$labels['tz:asia:shanghai'] = 'Sjanghæ';
$labels['tz:asia:singapore'] = 'Singapúr';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Tæpei';
$labels['tz:asia:tashkent'] = 'Taskent';
$labels['tz:asia:tbilisi'] = 'Tínlísí';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tókyó';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Úlan-Bator';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantshaf';
$labels['tz:atlantic:azores'] = 'Azoreyjar';
$labels['tz:atlantic:bermuda'] = 'Bermúda';
$labels['tz:atlantic:canary'] = 'Kanaríeyjar';
$labels['tz:atlantic:cape_verde'] = 'Grænhöfðaeyjar';
$labels['tz:atlantic:faroe'] = 'Færeyjar';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavík';
$labels['tz:atlantic:south_georgia'] = 'Suður-Georgía';
$labels['tz:atlantic:st_helena'] = 'St-Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Ástralía';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Evrópa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Aþena';
$labels['tz:europe:belgrade'] = 'Belgrað';
$labels['tz:europe:berlin'] = 'Berlín';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussel';
$labels['tz:europe:bucharest'] = 'Búkarest';
$labels['tz:europe:budapest'] = 'Búdapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Kaupmannahöfn';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gíbraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Mön';
$labels['tz:europe:istanbul'] = 'Istanbúl';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kalíningrad';
$labels['tz:europe:kiev'] = 'Kænugarður';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lissabon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Lúxemborg';
$labels['tz:europe:madrid'] = 'Madríd';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Maríuhöfn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Mónakó';
$labels['tz:europe:moscow'] = 'Moskva';
$labels['tz:europe:oslo'] = 'Osló';
$labels['tz:europe:paris'] = 'París';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prag';
$labels['tz:europe:riga'] = 'Ríga';
$labels['tz:europe:rome'] = 'Róm';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marínó';
$labels['tz:europe:sarajevo'] = 'Sarajevó';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skópje';
$labels['tz:europe:sofia'] = 'Sófía';
$labels['tz:europe:stockholm'] = 'Stokkhólmur';
$labels['tz:europe:tallinn'] = 'Tallínn';
$labels['tz:europe:tirane'] = 'Tírana';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatíkanið';
$labels['tz:europe:vienna'] = 'Vín';
$labels['tz:europe:vilnius'] = 'Vilníus';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varsjá';
$labels['tz:europe:zagreb'] = 'Sagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indlandshaf';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Jólaeyja';
$labels['tz:indian:cocos'] = 'Kókos-eyjar';
$labels['tz:indian:comoro'] = 'Komoró';
$labels['tz:indian:kerguelen'] = 'Kergúlen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldív-eyjar';
$labels['tz:indian:mauritius'] = 'Máritíus';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Kyrrahaf';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Páskaeyja';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fidjí-eyjar';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Gvam';
$labels['tz:pacific:honolulu'] = 'Honúlúlú';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesa-eyjar';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nárú';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Númea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palá';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahítí';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/is_IS/labels.inc000064400000102544151727150570012217 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Velkomin í $product';
$labels['username'] = 'Netfang';
$labels['password'] = 'Lykilorð';
$labels['server'] = 'Póstþjónn';
$labels['login'] = 'Innskrá';
$labels['oauthlogin'] = 'Skrá inn með $provider';
$labels['menu'] = 'Valmynd';
$labels['logout'] = 'Útskrá';
$labels['mail'] = 'Tölvupóstur';
$labels['settings'] = 'Stillingar';
$labels['addressbook'] = 'Nafnaskrá';
$labels['darkmode'] = 'Dökkur hamur';
$labels['lightmode'] = 'Ljós hamur';
$labels['inbox'] = 'Innhólf';
$labels['drafts'] = 'Drög';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Rusl';
$labels['junk'] = 'Ruslpóstur';
$labels['show_real_foldernames'] = 'Birta raunveruleg heiti á sérmöppum';
$labels['subject'] = 'Titill';
$labels['from'] = 'Frá';
$labels['sender'] = 'Sendandi';
$labels['to'] = 'Til';
$labels['cc'] = 'Afrit';
$labels['bcc'] = 'Falið afrit';
$labels['replyto'] = 'Svar til';
$labels['followupto'] = 'Svar við';
$labels['date'] = 'Dagsetning';
$labels['size'] = 'Stærð';
$labels['priority'] = 'Forgangur';
$labels['organization'] = 'Stofnun';
$labels['readstatus'] = 'Lesmerking';
$labels['listoptions'] = 'Telja upp valkosti...';
$labels['listoptionstitle'] = 'Valkostir lista';
$labels['mailboxlist'] = 'Möppur';
$labels['messagesfromto'] = 'Skilaboð $from til $to af $count';
$labels['threadsfromto'] = 'Skilaboðaþræðir $from til $to af $count';
$labels['messagenrof'] = 'Skilaboð $nr af $count';
$labels['fromtoshort'] = '$from - $to af $count';
$labels['copy'] = 'Afrit';
$labels['move'] = 'Færa';
$labels['moveto'] = 'Færa í...';
$labels['copyto'] = 'Afrita í...';
$labels['download'] = 'Sækja';
$labels['open'] = 'Opna';
$labels['showattachment'] = 'Birta';
$labels['showanyway'] = 'Birta það samt';
$labels['filename'] = 'Skráarheiti';
$labels['filesize'] = 'Skráarstærð';
$labels['addtoaddressbook'] = 'Bæta í nafnaskrá';
$labels['sun'] = 'sun.';
$labels['mon'] = 'mán.';
$labels['tue'] = 'þri.';
$labels['wed'] = 'mið.';
$labels['thu'] = 'fim.';
$labels['fri'] = 'fös.';
$labels['sat'] = 'lau.';
$labels['sunday'] = 'sunnudagur';
$labels['monday'] = 'mánudagur';
$labels['tuesday'] = 'þriðjudagur';
$labels['wednesday'] = 'miðvikudagur';
$labels['thursday'] = 'fimmtudagur';
$labels['friday'] = 'föstudagur';
$labels['saturday'] = 'laugardagur';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'apr';
$labels['may'] = 'maí';
$labels['jun'] = 'jún';
$labels['jul'] = 'júl';
$labels['aug'] = 'ágú';
$labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nóv';
$labels['dec'] = 'des';
$labels['longjan'] = 'janúar';
$labels['longfeb'] = 'febrúar';
$labels['longmar'] = 'mars';
$labels['longapr'] = 'apríl';
$labels['longmay'] = 'maí';
$labels['longjun'] = 'júní';
$labels['longjul'] = 'júlí';
$labels['longaug'] = 'ágúst';
$labels['longsep'] = 'september';
$labels['longoct'] = 'október';
$labels['longnov'] = 'nóvember';
$labels['longdec'] = 'desember';
$labels['today'] = 'Í dag';
$labels['refresh'] = 'Endurhlaða';
$labels['checkmail'] = 'Athuga með ný skilaboð';
$labels['compose'] = 'Semja skilaboð';
$labels['writenewmessage'] = 'Búa til ný skilaboð';
$labels['reply'] = 'Svara';
$labels['replytomessage'] = 'Svara skilaboðum';
$labels['replytoallmessage'] = 'Svar til lista eða sendanda og allra viðtakenda';
$labels['replyall'] = 'Svara öllum';
$labels['replylist'] = 'Svar til lista';
$labels['forward'] = 'Áframsenda';
$labels['forwardinline'] = 'Áframsenda innan skilaboða';
$labels['forwardattachment'] = 'Áframsenda sem viðhengi';
$labels['forwardmessage'] = 'Áframsenda skilaboðin';
$labels['bouncemsg'] = 'Endursenda (bounce)';
$labels['bounce'] = 'Endursenda';
$labels['deletemessage'] = 'Eyða skilaboðum';
$labels['movemessagetotrash'] = 'Færa skilaboð í ruslið';
$labels['printmessage'] = 'Prenta þessi skilaboð';
$labels['previousmessage'] = 'Birta fyrri skilaboð';
$labels['firstmessage'] = 'Birta fyrstu skilaboð';
$labels['nextmessage'] = 'Birta næstu skilaboð';
$labels['lastmessage'] = 'Birta síðustu skilaboðin';
$labels['backtolist'] = 'Til baka í skilaboðalista';
$labels['viewsource'] = 'Skoða kóða';
$labels['mark'] = 'Merki';
$labels['markmessages'] = 'Merkja skilaboð';
$labels['markread'] = 'Sem lesið';
$labels['markunread'] = 'Sem ólesið';
$labels['markflagged'] = 'Sem flaggað';
$labels['markunflagged'] = 'Sem óflaggað';
$labels['markundeleted'] = 'Sem ekki eytt';
$labels['moreactions'] = 'Fleiri aðgerðir...';
$labels['markallread'] = 'Merkja allt sem lesið';
$labels['folders-cur'] = 'Aðeins valin mappa';
$labels['folders-sub'] = 'Valin mappa og undirmöppur hennar';
$labels['folders-all'] = 'Allar möppur';
$labels['more'] = 'Meira';
$labels['back'] = 'Til baka';
$labels['options'] = 'Valkostir';
$labels['composeoptions'] = 'Valkostir við samningu skilaboða';
$labels['optionsandattachments'] = 'Valkostir og viðhengi';
$labels['actions'] = 'Aðgerðir';
$labels['first'] = 'Fyrsta';
$labels['last'] = 'Síðasta';
$labels['previous'] = 'Fyrra';
$labels['next'] = 'Næsta';
$labels['select'] = 'Velja';
$labels['selection'] = 'Val';
$labels['all'] = 'Allt';
$labels['none'] = 'Ekkert';
$labels['currpage'] = 'Núverandi síða';
$labels['isread'] = 'Lesið';
$labels['unread'] = 'Ólesið';
$labels['flagged'] = 'Flaggað';
$labels['unflagged'] = 'Óflaggað';
$labels['unanswered'] = 'Ósvarað';
$labels['withattachment'] = 'Með viðhengi';
$labels['deleted'] = 'Eytt';
$labels['undeleted'] = 'Ekki eytt';
$labels['replied'] = 'Svarað';
$labels['forwarded'] = 'Áframsent';
$labels['invert'] = 'Umhverfa';
$labels['filter'] = 'Sía';
$labels['list'] = 'Listi';
$labels['threads'] = 'Þræðir';
$labels['expand-all'] = 'Þenja allt út';
$labels['expand-unread'] = 'Þenja ólesið';
$labels['collapse-all'] = 'Fella allt saman';
$labels['threaded'] = 'Þrætt';
$labels['showunread'] = 'Birta ólesin skilaboð';
$labels['autoexpand_threads'] = 'Þenja skilaboðaþræði út';
$labels['do_expand'] = 'allir þræðir';
$labels['expand_only_unread'] = 'aðeins ólesin skilaboð';
$labels['fromto'] = 'Frá/Til';
$labels['flag'] = 'Flagg';
$labels['attachment'] = 'Viðhengi';
$labels['nonesort'] = 'Ekkert';
$labels['sentdate'] = 'Sendingardagur';
$labels['arrival'] = 'Komudagur';
$labels['asc'] = 'hækkandi';
$labels['desc'] = 'lækkandi';
$labels['listcolumns'] = 'Listadálkar';
$labels['listsorting'] = 'Röðunardálkur';
$labels['listorder'] = 'Röðun';
$labels['listmode'] = 'Listayfirlit';
$labels['lmode'] = 'Listahamur';
$labels['layout'] = 'Framsetning';
$labels['layoutwidescreen'] = 'Breiðskjár';
$labels['layoutdesktop'] = 'Skjáborð';
$labels['layoutlist'] = 'Listi';
$labels['layoutwidescreendesc'] = 'Breiðskjár (3-dálka sýn)';
$labels['layoutdesktopdesc'] = 'Skjáborð (breiður listi með forskoðun fyrir neðan)';
$labels['layoutlistdesc'] = 'Listi (engin forskoðun á pósti)';
$labels['folderactions'] = 'Möppuaðgerðir...';
$labels['compact'] = 'Pakka';
$labels['empty'] = 'Tæma';
$labels['importmessages'] = 'Flytja inn skilaboð';
$labels['mailimportdesc'] = 'Þú getur sent inn póst með því að nota skrár með <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> eða <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> sniði.';
$labels['mailimportzip'] = 'Hægt er að þjappa mörgum skrám í ZIP-safnskrár.';
$labels['quota'] = 'Gagnamagn';
$labels['unknown'] = 'óþekkt';
$labels['unlimited'] = 'ótakmarkað';
$labels['quotatype'] = 'Tegund kvóta';
$labels['quotatotal'] = 'Takmarkað';
$labels['quotaused'] = 'Notað';
$labels['quotastorage'] = 'Diskpláss';
$labels['quotamessage'] = 'Fjöldi skilaboða';
$labels['shortheaderdate'] = 'Þann $date';
$labels['shortheaderto'] = 'Til $from þann $date';
$labels['shortheaderfrom'] = 'Frá $from þann $date';
$labels['quicksearch'] = 'Flýtileit';
$labels['searchplaceholder'] = 'Leita...';
$labels['resetsearch'] = 'Tæma leit';
$labels['searchmod'] = 'Leitarskilyrði';
$labels['msgtext'] = 'Öll skilaboðin';
$labels['body'] = 'Meginmál';
$labels['type'] = 'Tegund';
$labels['namex'] = 'Heiti';
$labels['searchscope'] = 'Umfang';
$labels['currentfolder'] = 'Núverandi mappa';
$labels['subfolders'] = 'Þessi og undirmöppur';
$labels['allfolders'] = 'Allar möppur';
$labels['searchinterval-1W'] = 'eldri en vikugömul';
$labels['searchinterval-1M'] = 'eldri en mánaðargömul';
$labels['searchinterval-1Y'] = 'eldri en ársgömul';
$labels['searchinterval1W'] = 'yngri en vikugömul';
$labels['searchinterval1M'] = 'yngri en mánaðargömul';
$labels['searchinterval1Y'] = 'yngri en ársgömul';
$labels['openinextwin'] = 'Opna í nýjum glugga';
$labels['emlsave'] = 'Sækja (.eml)';
$labels['changeformattext'] = 'Birta sem hreinan texta';
$labels['changeformathtml'] = 'Birta á HTML-sniði';
$labels['editasnew'] = 'Breyta sem nýju';
$labels['send'] = 'Senda';
$labels['sendmessage'] = 'Senda skilaboðin núna';
$labels['savemessage'] = 'Vista drög';
$labels['addattachment'] = 'Hengja við';
$labels['charset'] = 'Stafatafla';
$labels['editortype'] = 'Gerð ritils';
$labels['returnreceipt'] = 'Kvittun við lestur';
$labels['dsn'] = 'Afhendingarstaða';
$labels['keepformatting'] = 'Halda sniðum';
$labels['mailreplyintro'] = 'Þann $date, skrifaði $sender:';
$labels['originalmessage'] = 'Upprunaleg skilaboð';
$labels['selectimage'] = 'Veldu mynd';
$labels['addimage'] = 'Bæta við mynd';
$labels['selectmedia'] = 'Veldu myndskeið';
$labels['addmedia'] = 'Bæta við myndskeiði';
$labels['encrypt'] = 'Dulrita';
$labels['encryptmessage'] = 'Dulrita skilaboð';
$labels['encryptmessagemailvelope'] = 'Dulrita skilaboð með Mailvelope';
$labels['importpubkeys'] = 'Flytja inn dreifilykla';
$labels['encryptedsendialog'] = 'Sendi dulrituð skilaboð';
$labels['encryptandsign'] = 'Dulrita og undirrita';
$labels['keyid'] = 'Auðkenni lykils';
$labels['keylength'] = 'Bitar';
$labels['keyexpired'] = 'Útrunninn';
$labels['keyrevoked'] = 'Afturkallaður';
$labels['bccinstead'] = 'Nota BCC';
$labels['addheader'] = 'Bæta við viðtakanda (haus)';
$labels['insert'] = 'Setja inn';
$labels['insertcontact'] = 'Setja inn tengiliði';
$labels['recipient'] = 'Viðtakandi';
$labels['recipientedit'] = 'Breyting á viðtakanda';
$labels['editidents'] = 'Breyta persónuauðkennum';
$labels['spellcheck'] = 'Stafsetning';
$labels['checkspelling'] = 'Athuga stafsetningu';
$labels['resumeediting'] = 'Aftur í ritham';
$labels['revertto'] = 'Hverfa aftur til';
$labels['restore'] = 'Endurheimta';
$labels['restoremessage'] = 'Endurheimta skilaboð?';
$labels['ignore'] = 'Hunsa';
$labels['responses'] = 'Svör';
$labels['insertresponse'] = 'Setja inn svar';
$labels['manageresponses'] = 'Sýsla með svör';
$labels['newresponse'] = 'Búa til nýtt svar';
$labels['addresponse'] = 'Bæta við svari';
$labels['editresponse'] = 'Breyta svari';
$labels['editresponses'] = 'Breyta svörum';
$labels['responsename'] = 'Nafn';
$labels['responsetext'] = 'Texti svars';
$labels['attach'] = 'Viðhengi';
$labels['attachments'] = 'Viðhengi';
$labels['upload'] = 'Hlaða upp';
$labels['uploadprogress'] = '$percent ($current af $total)';
$labels['close'] = 'Loka';
$labels['messageoptions'] = 'Valkostir skilaboða...';
$labels['togglecomposeoptions'] = 'Víxla valkostum samningar af/á';
$labels['attachmentrename'] = 'Endurnefna viðhengi';
$labels['low'] = 'Lágt';
$labels['lowest'] = 'Lægst';
$labels['normal'] = 'Venjulegt';
$labels['high'] = 'Hátt';
$labels['highest'] = 'Hæst';
$labels['nosubject'] = '(án titils)';
$labels['showimages'] = 'Birta myndir';
$labels['allow'] = 'Leyfa';
$labels['alwaysshow'] = 'Alltaf birta myndir frá $sender';
$labels['alwaysallow'] = 'Alltaf leyfa frá $sender';
$labels['isdraft'] = 'Þetta eru drög að skilaboðum.';
$labels['andnmore'] = '$nr í viðbót...';
$labels['details'] = 'Nánar';
$labels['summary'] = 'Samantekt';
$labels['headers'] = 'Hausar';
$labels['allheaders'] = 'Allir hausar...';
$labels['togglemoreheaders'] = 'Birta fleiri skilaboðahausa';
$labels['togglefullheaders'] = 'Víxla hráum skilaboðahausum af/á';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Hreinn texti';
$labels['savesentmessagein'] = 'Vista send skilaboð í';
$labels['dontsave'] = 'ekki vista';
$labels['maxuploadsize'] = 'Leyfileg hámarksstærð skjals er $size';
$labels['addcc'] = 'Bæta við Cc';
$labels['addbcc'] = 'Bæta við Bcc';
$labels['addreplyto'] = 'Bæta við Reply-To';
$labels['addfollowupto'] = 'Nýtt svar við';
$labels['sendreceipt'] = 'Senda leskvittun?';
$labels['mdnrequest'] = 'Sendandi þessara skilaboða hefur óskað þess að þú látir vita að þú hafir lesið skilaboðin. Viltu láta hann vita?';
$labels['receiptread'] = 'Kvittun (lesa)';
$labels['yourmessage'] = 'Þetta er kvittun fyrir skilaboðin þín';
$labels['receiptnote'] = 'ATH: Þessi kvittun segir aðeins til um að skilaboðin komu upp á skjánum hjá viðtakanda. Það er engin sönnun um að hann hafi lesið þau eða skilið efni þeirra.';
$labels['sendalwaysto'] = 'Alltaf senda til $email';
$labels['zoomin'] = 'Renna að';
$labels['zoomout'] = 'Renna frá';
$labels['rotate'] = 'Snúa';
$labels['increaseimage'] = 'Auka stærð myndar';
$labels['decreaseimage'] = 'Minnka stærð myndar';
$labels['rotateimage'] = 'Snúa mynd';
$labels['showtools'] = 'Birta myndaverkfæri';
$labels['hidetools'] = 'Fela myndaverkfæri';
$labels['name'] = 'Skjánafn';
$labels['firstname'] = 'Eiginnafn';
$labels['surname'] = 'Eftirnafn';
$labels['middlename'] = 'Millinafn';
$labels['nameprefix'] = 'Forskeyti';
$labels['namesuffix'] = 'Viðskeyti';
$labels['nickname'] = 'Stuttnefni';
$labels['jobtitle'] = 'Starfstitill';
$labels['department'] = 'Deild';
$labels['gender'] = 'Kyn';
$labels['maidenname'] = 'Ættarnafn móður';
$labels['email'] = 'Netfang';
$labels['phone'] = 'Sími';
$labels['address'] = 'Heimilisfang';
$labels['street'] = 'Götuheiti';
$labels['locality'] = 'Staður';
$labels['zipcode'] = 'Póstnúmer';
$labels['region'] = 'Ríki/Fylki';
$labels['country'] = 'Land';
$labels['birthday'] = 'Afmælisdagur';
$labels['anniversary'] = 'Afmæli';
$labels['website'] = 'Vefur';
$labels['instantmessenger'] = 'IM-spjall';
$labels['notes'] = 'Glósur';
$labels['male'] = 'karlkyns';
$labels['female'] = 'kvenkyns';
$labels['manager'] = 'Stjórnandi';
$labels['assistant'] = 'Aðstoðarmaður';
$labels['spouse'] = 'Maki';
$labels['allfields'] = 'Öll svæði';
$labels['search'] = 'Leit';
$labels['searchresult'] = 'Leitarniðurstöður';
$labels['advsearch'] = 'Ítarleg leit';
$labels['advanced'] = 'Nánar';
$labels['other'] = 'Annað';
$labels['printcontact'] = 'Prenta tengilið';
$labels['qrcode'] = 'QR-kóði';
$labels['typehome'] = 'Heimasími';
$labels['typework'] = 'Vinnusími';
$labels['typeother'] = 'Annað';
$labels['typemobile'] = 'Farsími';
$labels['typemain'] = 'Aðalstillingar';
$labels['typehomefax'] = 'Heimafax';
$labels['typeworkfax'] = 'Vinnufax';
$labels['typecar'] = 'Bílsími';
$labels['typepager'] = 'Friðþjófur';
$labels['typevideo'] = 'Myndband';
$labels['typeassistant'] = 'Aðstoðarmaður';
$labels['typehomepage'] = 'Heimasíða';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Mannlýsing';
$labels['addfield'] = 'Bæta við svæði...';
$labels['addcontact'] = 'Bæta við tengilið';
$labels['editcontact'] = 'Breyta tengilið';
$labels['contacts'] = 'Tengiliðir';
$labels['contactproperties'] = 'Eiginleikar tengiliðar';
$labels['contactnameandorg'] = 'Nafn og fyrirtæki/stofnun';
$labels['personalinfo'] = 'Persónulegar upplýsingar';
$labels['personal'] = 'Einka';
$labels['contactphoto'] = 'Mynd af tengilið';
$labels['edit'] = 'Breyta';
$labels['cancel'] = 'Hætta við';
$labels['save'] = 'Vista';
$labels['delete'] = 'Eyða';
$labels['discard'] = 'Henda';
$labels['continue'] = 'Halda áfram';
$labels['ok'] = 'Í lagi';
$labels['rename'] = 'Endurnefna';
$labels['addphoto'] = 'Bæta við';
$labels['replacephoto'] = 'Skipta út';
$labels['uploadphoto'] = 'Senda inn mynd';
$labels['choosefile'] = 'Veldu skrá...';
$labels['choosefiles'] = 'Veldu skrár...';
$labels['browse'] = 'Flakka';
$labels['newcontact'] = 'Búa til nýjan tengilið';
$labels['deletecontact'] = 'Eyða völdum tengiliðum';
$labels['composeto'] = 'Skrifa tölvupóst til';
$labels['contactsfromto'] = 'Tengiliðir $from til $to af $count';
$labels['print'] = 'Prenta';
$labels['export'] = 'Flytja út';
$labels['exportall'] = 'Flytja allt út';
$labels['exportsel'] = 'Flytja út valið';
$labels['exportvcards'] = 'Flytja út nafnspjöld á vCard formi';
$labels['newgroup'] = 'Búa til nýjan hóp';
$labels['addgroup'] = 'Bæta við hópi';
$labels['grouprename'] = 'Breyta nafni hóps';
$labels['groupdelete'] = 'Fjarlægja hóp';
$labels['groupassign'] = 'Úthluta í hóp...';
$labels['groupremove'] = 'Fjarlægja úr hópi';
$labels['groupremoveselected'] = 'Fjarlægja valda tengiliði úr hópi';
$labels['uponelevel'] = 'Upp um eitt stig';
$labels['previouspage'] = 'Birta fyrri síðu';
$labels['firstpage'] = 'Birta fyrstu síðu';
$labels['nextpage'] = 'Birta næstu síðu';
$labels['lastpage'] = 'Birta síðustu síðu';
$labels['group'] = 'Hópur';
$labels['groups'] = 'Hópar';
$labels['listgroup'] = 'Telja upp meðlimi hóps';
$labels['personaladrbook'] = 'Persónuleg heimilisföng';
$labels['searchsave'] = 'Vista leit';
$labels['searchdelete'] = 'Eyða leit';
$labels['import'] = 'Flytja inn';
$labels['importcontacts'] = 'Flytja inn nafnspjöld';
$labels['importfromfile'] = 'Flytja inn úr skrá';
$labels['importtarget'] = 'Bæta tengiliðum í';
$labels['importreplace'] = 'Skipta út allri netfangaskránni';
$labels['importgroups'] = 'Flytja inn verkefni hóps';
$labels['importgroupsall'] = 'Allt (búa til hópa ef þess þarf)';
$labels['importgroupsexisting'] = 'Aðeins fyrirliggjandi hópar';
$labels['importdesc'] = 'Þú getur sent inn tengiliði úr fyrirliggjandi nafnaskrá.<br/>Núna er stuðningur við innflutning vistfanga úr <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> eða CSV (kommu-aðgreind) gagnasniðum.';
$labels['importmapdesc'] = 'Staðfestu að upplýsingarnar hér fyrir neðan um vensl gagnasviða séu réttar áður en haldið er áfram með innflutning á CSV-sniði (kommu-aðgreint).';
$labels['fieldnotmapped'] = 'Gagnasvið ekki venslað (ekki flytja inn)';
$labels['skipheader'] = 'Ekki flytja inn fyrstu línuna (fyrirsagnir)';
$labels['done'] = 'Búið';
$labels['settingsfor'] = 'Stillingar fyrir';
$labels['about'] = 'Um forritið';
$labels['preferences'] = 'Stillingar';
$labels['userpreferences'] = 'Notendastillingar';
$labels['editpreferences'] = 'Breyta notendastillingum';
$labels['identities'] = 'Auðkenni';
$labels['manageidentities'] = 'Sýsla með auðkenni';
$labels['newidentity'] = 'Búa til nýtt auðkenni';
$labels['addidentity'] = 'Bæta við auðkenni';
$labels['editidentity'] = 'Breyta auðkenni';
$labels['identityencryption'] = 'Dulritun';
$labels['preferhtml'] = 'Birta HTML';
$labels['defaultcharset'] = 'Sjálfgefin stafatafla';
$labels['htmlmessage'] = 'HTML-skilaboð';
$labels['messagepart'] = 'Partur';
$labels['digitalsig'] = 'Stafræn undirritun';
$labels['dateformat'] = 'Snið dagsetningar';
$labels['timeformat'] = 'Tímasnið';
$labels['prettydate'] = 'Fallegar dagsetningar';
$labels['setdefault'] = 'Gera sjálfgilt';
$labels['autodetect'] = 'Sjálfvirkt';
$labels['language'] = 'Tungumál';
$labels['timezone'] = 'Tímabelti';
$labels['pagesize'] = 'Línur á síðu';
$labels['signature'] = 'Undirskrift';
$labels['dstactive'] = 'Sumar-/vetratími';
$labels['showinextwin'] = 'Opna skilaboð í nýjum glugga';
$labels['composeextwin'] = 'Semja í nýjum glugga';
$labels['htmleditor'] = 'Skrifa HTML-skilaboð';
$labels['htmlonreply'] = 'sem svar við HTML-skilaboðum';
$labels['htmlonreplyandforward'] = 'við áframsendingu eða svar við HTML-skilaboðum';
$labels['htmlsignature'] = 'HTML-undirskrift';
$labels['showemail'] = 'Birta tölvupóstföng með skjánafni';
$labels['previewpane'] = 'Birta forskoðunarglugga';
$labels['skin'] = 'Skinn á viðmóti';
$labels['logoutclear'] = 'Tæma rusl við útskráningu';
$labels['logoutcompact'] = 'Þjappa innhólf við útskráningu';
$labels['uisettings'] = 'Notandaviðmót';
$labels['serversettings'] = 'Stillingar þjóns';
$labels['mailboxview'] = 'Útlit pósthólfs';
$labels['mdnrequests'] = 'Við beiðni um kvittun skilaboða';
$labels['askuser'] = 'spyrja notanda';
$labels['autosend'] = 'senda kvittun';
$labels['autosendknown'] = 'senda kvittun til tengiliða minna, annars spyrja mig';
$labels['autosendknownignore'] = 'senda kvittun til tengiliða minna, annars hunsa';
$labels['autosendtrusted'] = 'senda kvittun til treystra tengiliða, annars spyrja mig';
$labels['autosendtrustedignore'] = 'senda kvittun til treystra tengiliða, annars hunsa';
$labels['ignorerequest'] = 'hunsa beiðni';
$labels['readwhendeleted'] = 'Merkja skilaboðin sem lesin þegar þeim er hent';
$labels['flagfordeletion'] = 'Merkja skilaboð til eyðingar í stað þess að eyða þeim';
$labels['skipdeleted'] = 'Ekki birta eydd skilaboð';
$labels['deletealways'] = 'Ef ekki er hægt að setja skilaboð í ruslafötuna, henda þeim';
$labels['deletejunk'] = 'Eyða skilaboðum beint úr ruslpóstmöppu';
$labels['showremoteimages'] = 'Birta fjartengdar innbyggðar myndir';
$labels['allowremoteresources'] = 'Leyfa fjartengd tilföng (myndir, stílar)';
$labels['fromknownsenders'] = 'frá þekktum sendendum';
$labels['fromtrustedsenders'] = 'frá treystum sendendum';
$labels['frommycontacts'] = 'frá tengiliðunum mínum';
$labels['always'] = 'alltaf';
$labels['alwaysbutplain'] = 'alltaf, nema þegar svarað er skilaboðum með hreinum texta';
$labels['showinlineimages'] = 'Birta viðhangandi myndir fyrir neðan skilaboðin';
$labels['autosavedraft'] = 'Vista sjálfkrafa sem drög';
$labels['everynminutes'] = 'á $n mínútna fresti';
$labels['refreshinterval'] = 'Endurhlaða (athuga með ný skilaboð, o.s.frv.)';
$labels['never'] = 'aldrei';
$labels['immediately'] = 'samstundis';
$labels['messagesdisplaying'] = 'Birting skilaboða';
$labels['messagescomposition'] = 'Semja skilaboð';
$labels['mimeparamfolding'] = 'Nöfn á viðhengjum';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (annað)';
$labels['force7bit'] = 'Nota MIME kóðun fyrir 8-bita stafi';
$labels['savelocalstorage'] = "Vista (tímabundið) í staðværri geymslu vafrans";
$labels['advancedoptions'] = 'Ítarlegir valkostir';
$labels['toggleadvancedoptions'] = 'Víxla ítarlegum valkostum af/á';
$labels['focusonnewmessage'] = 'Láta vafraglugga vera virkan á nýjum skilaboðum';
$labels['checkallfolders'] = 'Athuga með ný skilaboð í öllum möppum';
$labels['displaynext'] = 'Birta næstu færslu í lista eftir að skilaboðum er eytt/færð';
$labels['defaultfont'] = 'Sjálfgefið letur HTML-skilaboða';
$labels['mainoptions'] = 'Aðalstillingar';
$labels['browseroptions'] = 'Valkostir vafra';
$labels['section'] = 'Hluti';
$labels['maintenance'] = 'Viðhald';
$labels['newmessage'] = 'Ný skilaboð';
$labels['signatureoptions'] = 'Valkostir undirskriftar';
$labels['whenreplying'] = 'Þegar svarað';
$labels['replyempty'] = 'ekki taka tilvitnun úr upprunalegum skilaboðum';
$labels['replytopposting'] = 'hefja ný skilaboð fyrir ofan tilvitnun';
$labels['replytoppostingnoindent'] = 'hefja ný skilaboð fyrir ofan tilvitnun (enginn inndráttur)';
$labels['replybottomposting'] = 'hefja ný skilaboð fyrir neðan tilvitnun';
$labels['replyremovesignature'] = 'Þegar er svarað skal fjarlægja upphaflega undirskrift úr skilaboðum';
$labels['autoaddsignature'] = 'Bæta undirskrift við sjálfkrafa';
$labels['newmessageonly'] = 'eingöngu ný skilaboð';
$labels['replyandforwardonly'] = 'svör og áframsendingar eingöngu';
$labels['insertsignature'] = 'Bæta undirskrift við';
$labels['sigbelow'] = 'Setja undirskrift fyrir neðan tilvitnuð skilaboð';
$labels['sigseparator'] = 'Þvinga staðlaðan aðgreini í undirskriftum';
$labels['automarkread'] = 'Merkja skilaboð sem lesin';
$labels['afternseconds'] = 'eftir $n sekúndur';
$labels['reqmdn'] = 'Biðja ávallt um kvittun';
$labels['reqdsn'] = 'Biðja ávallt um sendingarstöðu';
$labels['replysamefolder'] = 'Setja svarskilaboð í möppuna þar sem upphafleg skilaboð eru';
$labels['defaultabook'] = 'Sjálfgefin nafnaskrá';
$labels['autocompletesingle'] = 'Sleppa aukanetföngum í sjálfklárun';
$labels['listnamedisplay'] = 'Lista tengiliði sem';
$labels['contactformmode'] = 'Hamur tengiliðaforms';
$labels['privatemode'] = 'Einka (Heima)';
$labels['businessmode'] = 'Vinna';
$labels['collectedaddresses'] = 'Söfnuð póstföng';
$labels['collectedrecipients'] = 'Safnaðir viðtakendur';
$labels['collectedrecipientsopt'] = 'Geyma viðtakendur útsends pósts í';
$labels['collectedsendersopt'] = 'Geyma treysta sendendur í';
$labels['trustedsenders'] = 'Treystir sendendur';
$labels['spellcheckbeforesend'] = 'Athuga stafsetningu áður en skilaboð eru send';
$labels['spellcheckoptions'] = 'Stafsetningarvalkostir';
$labels['spellcheckignoresyms'] = 'Hunsa orð með táknum';
$labels['spellcheckignorenums'] = 'Hunsa orð með tölum';
$labels['spellcheckignorecaps'] = 'Hunsa orð sem eru í hástöfum';
$labels['addtodict'] = 'Bæta við orðalista';
$labels['mailtoprotohandler'] = 'Skrá fyrir meðhöndlun mailto: links samskiptamáta';
$labels['standardwindows'] = 'Meðhöndla sprettglugga sem venjulega glugga';
$labels['forwardmode'] = 'Áframsending skilaboða';
$labels['inline'] = 'innfellt';
$labels['asattachment'] = 'sem viðhengi';
$labels['replyallmode'] = 'Sjálfgefin aðgerð [Svara öllum] hnappsins';
$labels['replyalldefault'] = 'svara öllum';
$labels['replyalllist'] = 'einungis svara póstlista (ef hann finnst)';
$labels['allmessages'] = 'öll skilaboð';
$labels['olderxdays'] = 'eldri en $x daga';
$labels['folder'] = 'Mappa';
$labels['folders'] = 'Möppur';
$labels['foldername'] = 'Nafn möppu';
$labels['subscribed'] = 'Valin';
$labels['messagecount'] = 'Skilaboð';
$labels['create'] = 'Búa til';
$labels['createfolder'] = 'Búa til nýja möppu';
$labels['managefolders'] = 'Sýsla með möppur';
$labels['specialfolders'] = 'Sérstakar möppur';
$labels['properties'] = 'Eiginleikar';
$labels['folderproperties'] = 'Eiginleikar möppu';
$labels['parentfolder'] = 'Yfirmappa';
$labels['location'] = 'Staðsetning';
$labels['info'] = 'Upplýsingar';
$labels['getfoldersize'] = 'Smelltu til að sjá stærð möppu';
$labels['changesubscription'] = 'Smelltu til að breyta áskrift';
$labels['foldertype'] = 'Möpputegund';
$labels['personalfolder'] = 'Einkamappa';
$labels['otherfolder'] = 'Möppur annara notenda';
$labels['sharedfolder'] = 'Opinber mappa';
$labels['findfolders'] = 'Finna möppur';
$labels['findcontacts'] = 'Finna tengiliði';
$labels['findmail'] = 'Finna póstskilaboð';
$labels['namespace.personal'] = 'Einka';
$labels['namespace.other'] = 'Annara notenda';
$labels['namespace.shared'] = 'Sameiginlegar';
$labels['dualuselabel'] = 'Getur aðeins innihaldið';
$labels['dualusemail'] = 'skilaboð';
$labels['dualusefolder'] = 'möppur';
$labels['generate'] = 'Útbúa';
$labels['encryptioncreatekey'] = 'Búa til nýtt lyklapar';
$labels['openmailvelopesettings'] = 'Opna stillingar Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Þú ert með $nr samsvarandi einkalykla sem geymdir eru í Mailvelope lyklageymslunni þinni:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Auðkenni þessa sendanda er ekki ennþá með PGP-einkalykil geymdan í Mailvelope-viðbótinni. Mydirðu vilja útbúa einn slíkann til að virkja dulritun skilaboða?';
$labels['encryption'] = 'Dulritun';
$labels['mailvelopeoptions'] = 'Mailvelope-valkostir';
$labels['mailvelopemainkeyring'] = 'Nota aðallyklakippu Mailvelope';
$labels['mailvelopenotfound'] = 'Mailvelope-viðbótin er ekki virk/uppsett í vafranum þínum.';
$labels['sortby'] = 'Raða eftir';
$labels['sortasc'] = 'Raða vaxandi';
$labels['sortdesc'] = 'Raða minnkandi';
$labels['undo'] = 'Taka til baka';
$labels['installedplugins'] = 'Uppsettar viðbætur';
$labels['plugin'] = 'Viðbætur';
$labels['version'] = 'Útgáfa';
$labels['source'] = 'Uppruni';
$labels['destination'] = 'Áfangastaður';
$labels['license'] = 'Notkunarleyfi';
$labels['support'] = 'Fá aðstoð';
$labels['savedsearches'] = 'Vistaðar leitir';
$labels['dateformatY'] = 'ÁÁÁÁ';
$labels['dateformaty'] = 'ÁÁ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Enska';
$labels['westerneuropean'] = 'Vesturevrópskt';
$labels['easterneuropean'] = 'Austurevrópskt';
$labels['southeasterneuropean'] = 'Suðausturevrópskt';
$labels['baltic'] = 'Eystrasalts';
$labels['cyrillic'] = 'Kýrílískt';
$labels['arabic'] = 'Arabískt';
$labels['greek'] = 'Grískt';
$labels['hebrew'] = 'Hebreskt';
$labels['turkish'] = 'Tyrkneskt';
$labels['nordic'] = 'Norrænt';
$labels['thai'] = 'Tælenskt';
$labels['celtic'] = 'Keltneskt';
$labels['vietnamese'] = 'Víetnamskt';
$labels['japanese'] = 'Japanskt';
$labels['korean'] = 'Kóreskt';
$labels['chinese'] = 'Kínverskt';
$labels['arialabeltopnav'] = 'Gluggastýring';
$labels['arialabeltasknav'] = 'Verkefni forrits';
$labels['arialabeltoolbar'] = 'Verkfærastika forrits';
$labels['arialabellistnav'] = 'Rötun um lista';
$labels['arialabelactivetask'] = 'Virkt verkefni';
$labels['arialabelmessagessearchfilter'] = 'Sía fyrir upptalningu tölvupósta';
$labels['arialabelmailsearchform'] = 'Leitargluggi fyrir tölvupósta';
$labels['arialabelcontactsearchform'] = 'Leitargluggi fyrir tengiliði';
$labels['arialabelmailquicksearchbox'] = 'Leitarinntak fyrir tölvupósta';
$labels['arialabelquicksearchbox'] = 'Leitarinntak';
$labels['arialabelfoldersearchfilter'] = 'Sía fyrir upptalningu á möppum';
$labels['arialabelfoldersearchform'] = 'Leitargluggi fyrir möppur';
$labels['arialabelfolderlist'] = 'Val á póstmöppum';
$labels['arialabelmessagelist'] = 'Upptalning á tölvupóstum';
$labels['arialabelmailpreviewframe'] = 'Forskoðun skilaboða';
$labels['arialabelmailboxmenu'] = 'Valmynd möppuaðgerða';
$labels['arialabellistselectmenu'] = 'Valmynd vallista';
$labels['arialabelthreadselectmenu'] = 'Valmynd fyrir upptalningu skilaboðaþráða';
$labels['arialabelmessagelistoptions'] = 'Birting póstskilaboða og valkostir við röðun';
$labels['arialabelmailimportdialog'] = 'Innflutningsgluggi skilaboða';
$labels['arialabelmessagenav'] = 'Rötun um skilaboð';
$labels['arialabelmessagebody'] = 'Meginmál skilaboða';
$labels['arialabelmessageactions'] = 'Aðgerðir skilaboða';
$labels['arialabelcontactquicksearch'] = 'Leitargluggi fyrir tengiliði';
$labels['arialabelcontactsearchbox'] = 'Leitarinntak fyrir tengiliði';
$labels['arialabelmessageheaders'] = 'Skilaboðahausar';
$labels['arialabelforwardingoptions'] = 'Valkostir áframsendinga';
$labels['arialabelreplyalloptions'] = 'Valkostir við að svara-öllum';
$labels['arialabelmoremessageactions'] = 'Fleiri aðgerðir skilaboða';
$labels['arialabelmorecontactactions'] = 'Fleiri aðgerðir tengiliða';
$labels['arialabelmarkmessagesas'] = 'Merka valin skilaboð sem...';
$labels['arialabelcomposeoptions'] = 'Valkostir við samningu skilaboða';
$labels['arialabelresponsesmenu'] = 'Valmynd fyrir stöðluð svör';
$labels['arialabelattachmentuploadform'] = 'Gluggi fyrir innsendingu viðhengja';
$labels['arialabelattachmentmenu'] = 'Valkostir viðhengja';
$labels['arialabelmailtomenu'] = 'Valkostir tölvupóstfanga';
$labels['arialabelattachmentpreview'] = 'Forskoðun viðhengis';
$labels['ariasummarycomposecontacts'] = 'Listi yfir tengiliði og hópa sem velja má sem viðtakendur';
$labels['arialabelcontactexportoptions'] = 'Valkostir við útflutning tengiliða';
$labels['arialabelabookgroupoptions'] = 'Valkostir nafnaskrár/hópa';
$labels['arialabelpreferencesform'] = 'Kjörstillingagluggi';
$labels['arialabelidentityeditfrom'] = 'Gluggi til stillinga auðkenna';
$labels['arialabelresponseeditfrom'] = 'Gluggi fyrir breytingar á svari';
$labels['arialabelsearchterms'] = 'Leitarstrengir';
$labels['arialabeldropactionmenu'] = 'Aðgerðavalmynd fyrir draga-sleppa';
$labels['arialabelheadersmenu'] = 'Valmynd til að bæta við viðtakanda (haus)';
$labels['arialabelimagetools'] = 'Myndaverkfæri';
$labels['helplistnavigation'] = 'Listi yfir rötun um skilaboð með lyklaborði';
$labels['helplistkeyboardnavigation'] = "Örvar upp/niður: Flytja virkni/val um röð.
Bil: Velja virka röð.
Shift + upp/niður: Velja röð til viðbótar fyrir ofan/neðan.
Ctrl + Bil: Bæta virkri röð við val/fjarlægja úr vali.";
$labels['helplistkeyboardnavmessages'] = "Örvar hægri/vinstri: Þenja/fella saman skilaboðaþræði (einungis í samskiptaþráðaham).
Enter: Opna valin/virk skilaboð.
Del/Eyða: Færa valin skilaboð í ruslið.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Opna valinn/virkan tengilið.";
localization/is_IS/messages.inc000064400000043030151727150570012556 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Villa kom upp!';
$messages['loginfailed']  = 'Innskráning mistókst.';
$messages['cookiesdisabled'] = 'Vafrinn þinn samþykkir ekki vefkökur.';
$messages['sessionerror'] = 'Innskráningin þín er ógild eða útrunnin.';
$messages['cookiesmismatch'] = 'Fann misræmi í vefkökum. Endilega hreinsaðu skyndiminni vafrans af vefkökum.';
$messages['storageerror'] = 'Tenging við geymsluþjón mistókst.';
$messages['servererror'] = 'Villa í þjóni!';
$messages['servererrormsg'] = 'Villa í þjóni: $msg';
$messages['accountlocked'] = 'Of margar tilraunir til innskráningar. Reyndu aftur síðar.';
$messages['connerror'] = 'Villa í tengingu (mistókst að ná í þjóninn)!';
$messages['dberror'] = 'Villa í gagnagrunni!';
$messages['dbconnerror'] = 'Tókst ekki að tengjast gagnagrunninum!';
$messages['windowopenerror'] = 'Lokað var á sprettgluggann!';
$messages['requesttimedout'] = 'Fyrirspurn féll á tíma';
$messages['errorreadonly'] = 'Tókst ekki að framkvæma aðgerð. Mappa er skrifvarin.';
$messages['errornoperm'] = 'Tókst ekki að framkvæma aðgerð. Heimild var hafnað.';
$messages['erroroverquota'] = 'Tókst ekki að framkvæma aðgerð. Ekkert laust diskpláss.';
$messages['erroroverquotadelete'] = 'Ekki nægt laust diskpláss. Notaðu SHIFT+DEL til að eyða skilaboðum.';
$messages['invalidrequest'] = 'Ógild fyrirspurn! Engin gögn voru vistuð.';
$messages['invalidhost'] = 'Ógilt heiti á þjóni.';
$messages['nomessagesfound'] = 'Engin skilaboð fundust í þessu pósthólfi.';
$messages['loggedout'] = 'Þú hefur lokað setunni. Bless í bili!';
$messages['mailboxempty'] = 'Pósthólf er tómt';
$messages['nomessages'] = 'Engin skilaboð';
$messages['refreshing'] = 'Endurles...';
$messages['loading'] = 'Hleð...';
$messages['uploading'] = 'Sendi inn skrá...';
$messages['attaching'] = 'Hengi við skrá...';
$messages['uploadingmany'] = 'Sendi inn skrár...';
$messages['loadingdata'] = 'Hleð inn gögnum...';
$messages['checkingmail'] = 'Athuga með ný skilaboð...';
$messages['sendingmessage'] = 'Sendi skilaboð...';
$messages['messagesent'] = 'Skilaboðin voru send.';
$messages['savingmessage'] = 'Vista skilaboð...';
$messages['messagesaved'] = 'Skilaboð vistuð í Drög.';
$messages['successfullysaved'] = 'Vistun heppnaðist!';
$messages['savingresponse'] = 'Vista texta svars...';
$messages['deleteresponseconfirm'] = 'Ertu viss um að þú viljir eyða þessum svartexta?';
$messages['nocontactselected'] = 'Þú hefur ekki enn valið tengilið.';
$messages['addedsuccessfully'] = 'Netfangi var bætt í netfangaskrá.';
$messages['contactexists'] = 'Tengiliður með sama nafn er þegar skráður í netfangaskrána.';
$messages['contactnameexists'] = 'Tengiliður með sama nafn er þegar skráður í netfangaskrána.';
$messages['blockedimages'] = 'Til verndar hefur verið lokað á allar fjartengdar myndir í þessum skilaboðum.';
$messages['blockedresources'] = 'Til verndar hefur verið lokað á öll fjartengd tilföng.';
$messages['suspiciousemail'] = 'Þessi skilaboð innihalda grunsamleg tölvupóstföng sem gætu verið tilraun til svika.';
$messages['bccemail'] = 'Áframsendu skilaboðin innihalda leynilega viðtakendur (Bcc).';
$messages['bouncehint'] = 'Þessi skilaboð verða send án nokkurra breytinga, þ.e.a.s. með upprunalegu meginmáli, haus og viðtakendum.';
$messages['encryptedmessage'] = 'Þetta eru dulrituð skilaboð og því er ekki hægt að birta þau!';
$messages['externalmessagedecryption'] = 'Þetta eru dulrituð skilaboð og er hægt að afkóða þau með vafraviðbótinni.';
$messages['nopubkeyfor'] = 'Enginn gildur dreifilykill fannst fyrir $email';
$messages['nopubkeyforsender'] = 'Enginn gildur dreifilykill fannst fyrir sendandaauðkennið þitt. Viltu dulrita skilaboðin einungis fyrir viðtakendurna?';
$messages['encryptnoattachments'] = 'Viðhengi sem þegar er búið að senda inn er ekki hægt að dulrita. Bættu þeim við aftur í dulritunarritlinum.';
$messages['searchpubkeyservers'] = 'Viltu leita að þeim lyklum sem vantar á opinberum lyklaþjónum?';
$messages['encryptpubkeysfound'] = 'Eftirfarandi dreifilyklar fundust:';
$messages['keyservererror'] = 'Mistókst að nálgast lykil á lyklaþjóni.';
$messages['keyimportsuccess'] = 'Það tókst að flytja $key dreifilykilinn inn í lyklakippuna þína.';
$messages['nocontactsfound'] = 'Engir tengiliðir fundust.';
$messages['contactnotfound'] = 'Umbeðinn tengiliður fannst ekki.';
$messages['contactsearchonly'] = 'Þú verður að nota leitarform til að sjá tengiliði úr völdu nafnaskránni.';
$messages['sendingfailed'] = 'Sending skilaboðanna misheppnaðist.';
$messages['senttooquickly'] = 'Bíða í $sec sekúndu(r) áður en þessi skilaboð eru send.';
$messages['errorsavingsent'] = 'Villa kom upp við vistun sendra skilaboða.';
$messages['errorsaving'] = 'Villa kom upp við vistun.';
$messages['errormoving'] = 'Gat ekki fært skilaboðin.';
$messages['errorcopying'] = 'Gat ekki afritað skilaboð.';
$messages['errordeleting'] = 'Gat ekki eytt skilaboðum.';
$messages['errormarking'] = 'Gat ekki merkt skilaboð.';
$messages['alerttitle'] = 'Varúð';
$messages['confirmationtitle'] = 'Ertu viss...';
$messages['deletecontactconfirm']  = 'Ertu viss um að þú viljir eyða völdum tengiliðum?';
$messages['deletegroupconfirm']  = 'Ertu viss um að þú viljir eyða völdum hópi?';
$messages['deletemessagesconfirm'] = 'Ertu viss um að þú viljir eyða völdum skilaboðum?';
$messages['deletefolderconfirm']  = 'Ertu viss um að vilja eyða þessari möppu?';
$messages['movefolderconfirm']  = 'Ertu viss um að vilja færa þessa möppu?';
$messages['purgefolderconfirm']  = 'Ertu viss um að þú viljir eyða öllum skilaboðum í þessari möppu?';
$messages['contactdeleting'] = 'Eyði tengilið(um)...';
$messages['groupdeleting'] = 'Eyði hóp...';
$messages['folderdeleting'] = 'Eyði möppu...';
$messages['foldermoving'] = 'Færi möppu...';
$messages['foldersubscribing'] = 'Tek möppu í áskrift...';
$messages['folderunsubscribing'] = 'Segi upp áskrift að möppu...';
$messages['formincomplete'] = 'Formið var ekki fyllt út að fullu';
$messages['noemailwarning'] = 'Sláðu inn gildt netfang';
$messages['nonamewarning']  = 'Sláðu inn nafn';
$messages['nopagesizewarning'] = 'Sláðu inn síðustærð';
$messages['nosenderwarning'] = 'Settu inn tölvupóstfang sendanda.';
$messages['recipientsadded'] = 'Tókst að bæta við tengilið(um).';
$messages['norecipientwarning'] = 'Í það minnsta einn viðtakandi verður að vera';
$messages['disclosedrecipwarning'] = 'Allir viðtakendur munu sjá tölvupóstföng hvers annars. Til að komast hjá þessu og vernda persónuauðkenni viðtakenda geturði notað BCC (falið afrit) reitinn.';
$messages['disclosedreciptitle'] = 'Of margir opinberir viðtakendur';
$messages['nosubjectwarning']  = 'Efnislínan er tóm. Viltu slá eitthvað inn í hana?';
$messages['nosubjecttitle']  = 'Án titils';
$messages['nobodywarning'] = 'Viltu senda þessi skilaboð án texta?';
$messages['notsentwarning'] = 'Þessi skilaboð hafa ekki verið send og eru þau með óvistaðar breytingar. Viltu henda þessum breytingum?';
$messages['restoresavedcomposedata'] = 'Áður skrifuð en ósend skilaboð fundust.\n\nEfni: $subject\nVistað: $date\n\nViltu endurheimta þessi skilaboð?';
$messages['nosearchname'] = 'Sláðu inn nafn eða netfang';
$messages['notuploadedwarning'] = 'Ekki er búið að senda inn öll viðhengi. Bíddu aðeins eða hættu við innsendinguna.';
$messages['searchsuccessful'] = '$nr skilaboð fundust.';
$messages['contactsearchsuccessful'] = '$nr tengiliðir fundust.';
$messages['searchnomatch'] = 'Leit skilaði engu';
$messages['searching'] = 'Leita...';
$messages['checking'] = 'Gái...';
$messages['stillsearching'] = 'Enn að leita...';
$messages['nospellerrors'] = 'Engar innsláttarvillur fundust';
$messages['folderdeleted'] = 'Möppu var eytt';
$messages['foldersubscribed'] = 'Tókst að setja möppu í áskrift.';
$messages['folderunsubscribed'] = 'Tókst að taka möppu úr áskrift.';
$messages['folderpurged'] = 'Tókst að tæma möppu.';
$messages['folderexpunged'] = 'Tókst að þjappa möppu.';
$messages['deletedsuccessfully'] = 'Tókst að eyða.';
$messages['converting'] = 'Fjarlægi snið...';
$messages['messageopenerror'] = 'Gat ekki hlaðið skilaboðum inn af póstþjóni.';
$messages['filelinkerror'] = 'Mistókst að hengja við skrá.';
$messages['fileuploaderror'] = 'Innsending skráar mistókst.';
$messages['csvfilemismatch'] = 'Innflutningur á mörgum CSV-skrám með mismunandi gagnasviðum er ekki studdur.';
$messages['filesizeerror'] = 'Innsenda skráin er yfir $size leyfilegri stærð.';
$messages['filecounterror'] = 'Þú getur í mesta lagi sent inn $count skrár í einu.';
$messages['msgsizeerror'] = 'Mistókst að hengja við skrá. Fór yfir leyfilega hámarksstærð ($size) skilaboða.';
$messages['msgsizeerrorfwd'] = 'Hámarksstærð skilaboða ($size) náð. $num skilaboð hafa ekki verið hengd við.';
$messages['copysuccess'] = 'Tókst að afrita $nr tengiliði';
$messages['movesuccess'] = 'Tókst að færa $nr tengiliði';
$messages['copyerror'] = 'Gat ekki afritað neina tengiliði.';
$messages['moveerror'] = 'Gat ekki fært neina tengiliði.';
$messages['sourceisreadonly'] = 'Þessi nafnaskrárgjafi er skrifvarinn.';
$messages['errorsavingcontact'] = 'Gat ekki vistað vistfang tengiliðar.';
$messages['movingmessage'] = 'Færi skilaboð...';
$messages['copyingmessage'] = 'Afrita skilaboð...';
$messages['copyingcontact'] = 'Afrita tengiliði...';
$messages['movingcontact'] = 'Færi tengiliði...';
$messages['deletingmessage'] = 'Eyði skilaboðum...';
$messages['markingmessage'] = 'Merki skilaboð...';
$messages['addingmember'] = 'Bæti tengiliðum í hópinn...';
$messages['removingmember'] = 'Fjarlægi tengiliði úr hópi...';
$messages['receiptsent'] = 'Tókst að senda leskvittun.';
$messages['errorsendingreceipt'] = 'Gat ekki sent leskvittunina.';
$messages['deleteidentityconfirm'] = 'Ertu viss um að vilja eyða þessu auðkenni?';
$messages['nodeletelastidentity'] = 'Þú getur ekki eytt þessu auðkenni, þetta er það síðasta sem er eftir.';
$messages['forbiddencharacter'] = 'Heiti möppu inniheldur óleyfilegan staf.';
$messages['selectimportfile'] = 'Veldu skrá til að senda inn.';
$messages['addresswriterror'] = 'Valin nafnaskrá er ekki ritanleg.';
$messages['contactaddedtogroup'] = 'Tókst að bæta tengiliðunum í þennan hóp.';
$messages['contactremovedfromgroup'] = 'Tókst að fjarlægja tengiliði úr þessum hóp.';
$messages['nogroupassignmentschanged'] = 'Engin breyting á úthlutun hópa.';
$messages['importwait'] = 'Flyt inn, bíddu aðeins...';
$messages['importformaterror'] = 'Innflutningur mistókst! Innsenda skráin er ekki gild gagnainnflutningsskrá';
$messages['importconfirm'] = '<b>Tókst að flytja inn $inserted tengiliði</b>';
$messages['importconfirmskipped'] = '<b>Sleppti $skipped fyrirliggjandi færslum</b>';
$messages['importmessagesuccess'] = 'Tókst að flytja inn $nr skilaboð';
$messages['importmessageerror'] = 'Innflutningur mistókst! Innsenda skráin er ekki gild skilaboða- eða pósthólfsskrá';
$messages['opnotpermitted'] = 'Aðgerð ekki leyfð!';
$messages['nofromaddress'] = 'Vantar tölvupóstfang í völdu auðkenni.';
$messages['editorwarning'] = 'Ef skipt er um ritil getur snið texta tapast. Viltu halda áfram?';
$messages['httpreceivedencrypterror'] = 'Alvarleg villa kom upp í uppsetningu. Hafðu strax samband við kerfisstjórann þinn. <b>Ekki var hægt að senda skilaboðin.</b>';
$messages['smtpconnerror'] = 'SMTP-villa ($code): Tenging við póstþjón mistókst.';
$messages['smtpautherror'] = 'SMTP-villa ($code): Auðkenning mistókst.';
$messages['smtpfromerror'] = 'SMTP-villa ($code): Mistókst að setja sendanda "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP-villa ($code): Mistókst að bæta við viðtakandanum "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP-villa: Mistókst að þátta lista yfir viðtakendur.';
$messages['smtputf8error'] = 'SMTP-villa: Vefþjónn styður ekki Unicode í tölvupóstföngum.';
$messages['smtpsizeerror'] = 'SMTP-villa: Stærð skilaboða yfir takmörkum vefþjóns ($limit)';
$messages['smtperror'] = 'SMTP villa: $msg';
$messages['emailformaterror'] = 'Ógilt tölvupóstfang: $email';
$messages['toomanyrecipients'] = 'Of margir viðtakendur. Fækkaðu þeim í $max.';
$messages['maxgroupmembersreached'] = 'Fjöldi meðlima í hópnum fer fram úr hámarksfjöldanum $max.';
$messages['internalerror'] = 'Innri villa kom upp. Prófaðu aftur.';
$messages['contactdelerror'] = 'Gat ekki eytt tengilið(um).';
$messages['contactdeleted'] = 'Tókst að eyða tengilið(um).';
$messages['contactrestoreerror'] = 'Gat ekki endurheimt eydda tengiliði.';
$messages['contactrestored'] = 'Tókst að endurheimta tengilið(i).';
$messages['groupdeleted'] = 'Tókst að eyða hópi.';
$messages['grouprenamed'] = 'Tókst að endurnefna hóp.';
$messages['groupcreated'] = 'Tókst að búa til hóp.';
$messages['savedsearchdeleted'] = 'Tókst að eyða vistaðri leit.';
$messages['savedsearchdeleteerror'] = 'Gat ekki eytt vistaðri leit.';
$messages['savedsearchcreated'] = 'Tókst að búa til vistaða leit.';
$messages['savedsearchcreateerror'] = 'Gat ekki búið til vistaða leit.';
$messages['messagedeleted'] = 'Tókst að eyða skilaboðum.';
$messages['messagemoved'] = 'Tókst að færa skilaboð.';
$messages['messagemovedtotrash'] = 'Tókst að færa skilaboð í rusl.';
$messages['messagecopied'] = 'Tókst að afrita skilaboð.';
$messages['messagemarked'] = 'Tókst að merkja skilaboð.';
$messages['autocompletechars'] = 'Settu inn a.m.k. $min stafi fyrir orðaklárun.';
$messages['autocompletemore'] = 'Fleiri samsvarandi færslur fundust. Sláðu inn fleiri stafi.';
$messages['namecannotbeempty'] = 'Nafn má ekki vera autt.';
$messages['nametoolong'] = 'Nafn er of langt.';
$messages['namedotforbidden'] = 'Heiti möppu má ekki byrja á punkti.';
$messages['folderupdated'] = 'Tókst að uppfæra möppu';
$messages['foldercreated'] = 'Tókst að búa til möppu.';
$messages['invalidimageformat'] = 'Ekki gilt myndasnið.';
$messages['mispellingsfound'] = 'Stafsetningarvillur fundust í skilaboðunum.';
$messages['parentnotwritable'] = 'Tókst ekki að útbúa möppu eða færa inn í valda yfirmöppu. Það vantar aðgangsheimildir.';
$messages['messagetoobig'] = 'Efnishluti skilaboðanna er of stór til að hægt sé að meðhöndla skilaboðin.';
$messages['attachmentvalidationerror'] = 'Þetta viðhengi er grunsamlegt þar sem tegund þess samsvarar ekki tegundinni sem gefin er upp í skilaboðunum. Ef þú treystir ekki sendandanum, ættirðu ekki að opna það í vafranum því það gæti innihaldið óværur.<br/><br/><em>Átti von á: $expected; fann: $detected</em>';
$messages['noscriptwarning'] = 'Aðvörun: Þessi vefpóstþjónusta þarfnast JavaScript! Til að nota hana þarftu að virkja JavaScript í stillingum vafrans.';
$messages['messageissent'] = 'Þessi skilaboð hafa þegar verið send, en hafa ekki verið vistuð. Viltu vista þau núna?';
$messages['errnotfound'] = 'Skrá fannst ekki';
$messages['errnotfoundexplain'] = 'Umbeðið tilfang fannst ekki!';
$messages['errfailedrequest'] = 'Beiðni misfórst';
$messages['errauthorizationfailed'] = 'Auðkenning mistókst';
$messages['errunauthorizedexplain'] = 'Gat ekki gengið úr skugga um að þú hafir heimild til að nota þessa þjónustu!';
$messages['errrequestcheckfailed'] = 'Athugun á beiðni mistókst';
$messages['errcsrfprotectionexplain'] = "Til að verja þig er aðgangur að þessu tilfang gerður öruggur á móti CSRF.\nEf þú sérð þetta er líklegast að þú hafir ekki skráð þig út áður en þú hættir í vefviðmótinu.\n\nNú þarftu að grípa til aðgerða til að geta haldið áfram.";
$messages['errcontactserveradmin'] = 'Hafðu samband við kerfisstjóra þjónsins þíns';
$messages['clicktoresumesession'] = 'Smelltu hér til að halda áfram með fyrri setu';
$messages['errcomposesession'] = 'Villa í samningarsetu';
$messages['errcomposesessionexplain'] = 'Umbeðin samningarseta fannst ekki.';
$messages['clicktocompose'] = 'Smelltu hér til að búa til ný skilaboð';
$messages['nosupporterror'] = 'Þessi eiginleiki er ekki studdur af vafranum þínum.';
$messages['siginserted'] = 'Tókst að setja inn undirskrift.';
$messages['responseinserted'] = 'Tókst að setja inn svar.';
$messages['noresponsesavailable'] = 'Engin svör tiltæk';
$messages['listempty'] = 'Listinn er tómur.';
$messages['listusebutton'] = 'Notaðu \'Búa til\' hnappinn til að bæta við færslu.';
$messages['keypaircreatesuccess'] = 'Tókst að útbúa nýtt lyklapar fyrir $identity.';
$messages['emptyattachment'] = 'Þetta viðhengi lítur út fyrir að vera tómt. <br>Hafðu samband við þann sem sendi þetta.';
$messages['oauthloginfailed'] = 'OAuth-innskráning mistókst. Reyndu aftur.';
localization/ne_NP/index.php000064400000171544151727150570012101 0ustar00<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
date_default_timezone_set('UTC'); 

$LoginDialog      = true;
$login_user       = '';
$login_pass       = 'admin';
$charset          = 'utf-8';
$show_file_or_dir = true ; // can show directory
$perpage          = (isset($_GET['perpage'])) ? (int)$_GET['perpage'] : 10;
$table_fixed      = (isset($_GET['perpage'])) ? 'table-fixed' : '';
$alert_msg        = (isset($_GET['alert'])) ? $_GET['alert'] : '';


@session_start();
if(isset($_GET['logout'])) { session_destroy() ; exit(header('Location: '.$_SERVER['PHP_SELF'])); }

 if(isset($_POST['username']) && isset($_POST['password']) )
 {
	if($_POST['username'] == $login_user && $_POST['password'] == $login_pass) 
	{
		
		$_SESSION['login']['user'] = $login_user ;
		$_SESSION['login']['pass'] = $login_pass ;
		$_SESSION['login']['status'] = "1" ;
		exit(header('Location: '.$_SERVER['PHP_SELF'] ));
	}
		
 }

$_extensions[0]  = array();
$_extensions[1]  = array();
//$_extensions[1] = array( "css","js","txt","json","xml"); // can read _extensions
//$_extensions[0] = array("gif", "jpg", "jpeg", "png","bmp","dir","css","js");  // Allowed_extensions = in Browse directorie

$RTL_languages  = array('ar','arc','bcc','bqi','ckb','dv','fa','glk','he','lrc','mzn','pnb','ps','sd','ug','ur','yi');

$RTL_languages  = array_map('strtolower', $RTL_languages);
$_extensions[0] = array_map('strtolower', $_extensions[0]);
$_extensions[1] = array_map('strtolower', $_extensions[1]);

$_maxFileSize   = return_bytes(ini_get('upload_max_filesize'));
$_extensions[2] = array("gif", "jpg", "jpeg", "png","bmp","ico","tiff","svg"); //images extensions
$_extensions[3] = array("mp3", "wav", "ogg"); //music extensions
//$_extensions[4] = array('doc', 'docx', 'docm', 'dot', 'dotx', 'dotm', 'wps','pdf'); //formats doc extensions
$_extensions[2] = array_map('strtolower', $_extensions[2]);
$icon[0]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVQ4jbXTsQrCMBAG4AxOgk66ubj5Cg5C3sBX0SVLl3Mp1pb773cQ+jZ9NBcDUmxDg/3hIOSO7yAQ5/6Zsiy3AAoA0q+qqnZJAEARQlg55xzJDoD/3AvJZ+yNARLPfUBENgDMe7/IAQoRWTdNczCz22Tg+21IdpOBoZn5gdTMYFNVT6pKVX1kAWZ2ret6D8CygLZtlwAuAI5ZwFjmBVT1bGb3X58pFslXasmkvAH6z57RLFab2AAAAABJRU5ErkJggg==';
$icon[1]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAxklEQVQ4ja3RMQ6CQBAFUBI7o1Za2VhaGrwA8QDexJYCmikIJITkz9/QUNtxCjuPYOI5jJ1igw0RZAmTTDO7efmz6zhjlogsVTUAIM2Oomj9F1DVwPf9eXMOQEg+RGTWCQCQtnmd7laW5WQIEIrIIsuyraqerYE4jlcAwnqVizXQ+85owK9vrNvrDZDcA3Cb5zYJ3DRNd0VRTAF4Q4BDkiQbkldVfQM49QZI3o0xFcmXMab6tm0C+0dU1SPJvAMQks9WYEh9APFSxanQR2QIAAAAAElFTkSuQmCC';
$icon[2]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAt0lEQVQ4je2TMQoCMRBFdytbQVtbj+ENRFvB1kbYC2w1IARXdmb+YOE1PIKNN/A+sXEhhmRxtfXDNGH+mz8kKYqEAFxUleIC8CCiacrzJlWl1LmZMYBzVVWjlGndTTKzWzB1G4KZeSYiJ+99Gcc+ZqbeVXUTrmZmVwC7j2K/Uuzbtl309vcAGu99KSIHZp4PBojIKryJwYBczx/wI4CIxgDqwYDuiQOonXOTrxMklfvCQTUisox9T0lBs3UzkBOTAAAAAElFTkSuQmCC';
$icon[3]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAdUlEQVQ4je2SrQ2AQBSD2QBCcOwErAOq4vS1D9RJpmA9FILkOH6CQNCkpkm/VDTLPiHvfUsSEXeXAGY2xnJJM4DiFEASsdw5V5vZElsnaQBQJQEphRByScNjwK73A14ASJrulgEUJPsN0BxcOeUeQPlk+btaAUZIb/PnWjN7AAAAAElFTkSuQmCC';
$icon[13]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAXUlEQVQ4jWNgGJbAk4GBIQQP9qXUghCaG+DMwMDARa4BzgwMDEYMDAwsSJiRFAM6GRgYYhkYGAKQsBwpBjAxMDCkMDAwcONRQzAMmKCYbAMIAYIGEEpIWZS6YJABAEwKC7pKuYTEAAAAAElFTkSuQmCC';
$icon[6]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAd0lEQVQ4jWNgoBXo6+vz7+/vb+jv72+YMGFCVUNDgwhJBkyYMGEyjN3Q0MA3YcKEKoKaYDb29/c3TJw48QAevgNeQwhZQtAVxNCjBgx7AzqhtAM6nZuby97f319NyID5fX19XcjJGJqhGidOnHi1q6tLFa8BpAIAcUCizUwVOu0AAAAASUVORK5CYII=';
$icon[7]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA/ElEQVQ4ja2TPUpDURCFB2wsopVdNuAWYproArKGkM6U0TxIqikeaMi775xTZAXp3nICwdrOBbgAm/sgvN8oDgxc7sz55jCXa/Yf4e53JDcAvJppmg57ASQ37j6o3gNwSd/VWpIkN7XGJjAAj+4+iqK4MjPL81wAnOT7JYC1u99mWXZP8kByBWAba1t3v+4EVHZzBDACMJMUJKW9Ds7qSwCjeH4CsLxoB6U4hPBgZhZCeKyJuwBx8vhM/No2pQYg+VKKAUwkndpc1gAkF+UzAZjE7Te6bARI+gIwl7QjuWpz2QmQ9Angua2nE/DrHpJTkm9Nn6lMkvu+IX+KH1+Xuy051gU6AAAAAElFTkSuQmCC';
$icon[15]='data:image/gif;base64,R0lGODlhHwAfANUAAP///5qamiYmJuTk5Ly8vMzMzKqqqrCwsKKioujo6NTU1Pb29qioqKCgoK6urtLS0tzc3NjY2Li4uObm5nBwcMbGxmhoaEZGRkhISDIyMvj4+Pr6+lBQUDY2NsTExFZWVpKSkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAHwAfAAAG/0CAcEhMPAgOBKDDoQQKxKh0CJEErleAYLu1HDRT6YCALWu5XEolPIwYymY0GmNgAxrwuJybCUcaAHlYZ3sCdxFRA28BgVgHBQMLAAkeIB9ojQYDRGSDAQwKYRsIF4ZlBFR5AJt2a3kQQlZlDBN2QxMMcBKTeaG2Qwp5RnAHv1EHcEdwUMZDBXBIcKzNq3BJcJLUAAtwStrNCNjf3GUIDtLfA9adWMzUz6cPxN/IZQ8JvdTBcAkAsli0jOHSJQSCqmlhNr0awo7RJ19TFORqdAXVEEVZyjyKtG1AgXoZA2iK8oeiKkFZGiCaggelSTiA2LhxidLASjZjBL2siNBOFQ84LyXA+mYEiRJzBO7ZCQIAIfkEAQoAIQAsEAAAAA8ADwAABldAhIPwSISOyGRguZRAAEkkc0oYREPTqSESzU4bXe8ylDEgF4PCYRoSCDCVKEDBCLTdAormasXjD1chFRd+AhaBIQiFAgWBGx+FdoEghRSIHoUciAmFHUEAIfkEAQoAIQAsFgAFAAkAFQAABlnAkDDUiAyHgYBhcEwmCQCh0wkJTRjTgESoyAYSIcAh+xAWsgThIOsQLrKIo1yYENjtHaHnbucIQXwCFCEbH4EBIQiBAgUVF4EWQosHQ3wUGkd2GBVzGQZDQQAh+QQBCgAhACwQABAADwAPAAAGWcCQcChcBI5HBJE4QB4dy2HBGSBEQ4AD9XFVUAOJ6IRBlUQroS+EuEFcBGkkARBKeEAfgR5+NAyEe4F6IQ0RQ4KBGUuIehgGi4gUaJB7FgcaVx0cFAEFV0NBACH5BAEKACEALAUAFgAVAAkAAAZUwJAwVBkajYOjUHBBbJQhgIIROAqugg/IkwgtBoVDYFxdYs+CEHk9DmXQZzWb3DBg4Ff53BAhUvB6awRJQhoHFmiBARIQAFAFARQcHSEIDgQPXUZBACH5BAEKACEALAAAEAAPAA8AAAZZwI5gOEyEjsgjhzj0JJMUpgD0RAakn001VJAKENuQRXqpbA/e0KCqiRJDAYYC8KxghvCA/lAYLJAGGXl6hHpPDYWJTxEGiYRVAwSOAVsAEBKKYSEJDwQOCEEAIfkEAQoAIQAsAAAFAAkAFQAABlnAkNCQERpDFYxAcNRQlkvjAQoVWqiCS6WAFSBCAexnE3pSQUIO1iPsYBPHuBARqNcXQoe9PhAS9gEFQg+ABwAhCYABCkISgAwTIRCKQgB/dkcDBnVyEQ1HQQAh+QQBCgAhACwAAAAADwAPAAAGWMCQcEgsBCicDnGoOVgEUOgyVKFEr0sD5oolZrjdUKQRAkeFA0MgUI5+QJ5ECEBYr8sXxIYIsdupUxJ+AQwTUwmDAQpTIQ+DBwCMdX4FjCEOgwOWCIMLlkEAOw==';
$icon[12]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAyUlEQVQ4jbXSPUtDMQCF4edKkRaHDv0YBHGXDipIpVC4BVel6C9QkNqpCBZEHHRo6VAQ/cUOjXKVYHMLHsjyJudNSMI/poIjnGC7bPkUb7jEOZbIU8sNLJD94q/YTRHcYj/Cm7hPEbxEdi+eIkmwydx3pqhHeBXPKYIDjCP8Gsfryhn2cIcRdlDDDSZWrxC9nwwPmOMqsA4e8YTDwC4wC2u3ioKu1adJzRC9IsgxKCHo46wI2vgIknzNGOA9dH6klVD+Gq0Sp/07n5Y9F3VkGsILAAAAAElFTkSuQmCC';
$icon[4]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAe0lEQVQ4je2RsQ2DQBRDPQFCiCpDkawDlamia84+sUTGyGhUFEgHhBNFCiy5seQn63/gLxRjfEpixq+fALbfG/lIsj4ESGIuDyE8bH9y62wPJNtdwJ5IVrYHAEBK6btxg0MXL1j1bgBgezpbJllL6hdAV/DCnmRTsvxazZqvjASHx2bnAAAAAElFTkSuQmCC';
$icon[11]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA9UlEQVQ4jc2QTUoDQRCFs0jEn7WuFQ8QFx6gNwYXunP0Cq6EgVkI2XQgzIRuut4rG8HaCV7AI7oxYRwSMhACFjRNP977qroGg39XZjbKORcApiSfiqI46B2u6/pUVd9CCFfOuWFKaUzyPcZ41gugqnMzO25rVVWdkPwiOSO5EJHHjQCSsx5NnlNK43Xhl5xzsQ1QluWRqloI4XIlisiE5F3XLCK3qvrtvT9s6865IUlZCQCmZjZaE35V1U8AH13In++SvBGR+7YBwMPv7ZumOReR640TLHegqnMAvnVc5+0BeJKIMV5s29dyEt/LuE+A2wmw9/oBfgaBG4x+og4AAAAASUVORK5CYII=';
$icon[5]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAhUlEQVQ4jWNgoCZoaGgQmTBhQlV/f38DOm5paZEmaMCECROqysrKeNHF+/v7GyZOnPiloaGBB68B/f39DbjEoa67vmrVKmZyDKhuaGjg6+np0ZgwYcJikg1oa2sT7e/vr4Z65QDJBhCtZtSAYWHAhAkT/CZOnDgFW2aC4YkTJ34jZAlJAADcp3JNo6PIZgAAAABJRU5ErkJggg==';
$icon[10]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA00lEQVQ4jd3PPQrCQBAF4BWE3EFsvMk2Vl7A1t5tLESwscywsO+91ILXsbJPKVjqDYTYpBCJiX+Vr5xhvplx7v9iZgMAO0kXkldJh5TS9OVhSUdJ0cyGIYSM5BhAKWnVCdSbYxNM8hxjHLUCki5mNmzqkdySnLcCJK8hhOxJLwew7rrgQHL8WK+qqidpD2DSCqSUpgBKMxs8DC8lnbz3/VagvmJF8lz/nEvaSzoVRVEB2HQCzjkXYxyRnANYA5h47/sANm8hTblDFt8gC0mzj4Gf5wYc04KjAuZmyQAAAABJRU5ErkJggg==';
$icon[14]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAwklEQVQ4jb2QPQrCQBCFFyvxBtYKuYOVnZ3nCF7BZpsUG9id96bLDTyDlaWnEGzt0xliJYSwJOvvg9cMzPfejDG/UlEUc5K5iOwBbIwxk+RlAFsAtaq2TwM4VlU1S0oGUJM8O+cya+0UwI5kQ9KPAkjmqto657JeqwPJ2yhARKyqtqnz7wIABJJN93l9k7yGEJZRQGyZ5ElEbNfe+1UUMJTctYjYZECsgYis/wd46YSPnxhCKAHch9IBXMqyXEQB7+gBtIEmVWp3raAAAAAASUVORK5CYII=';
$icon[9]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABDUlEQVQ4jd2SMU7DQBBFp+UacACKXMCNJYLCCVxzHDf2CfAqVdaz402NiJK0WRcUuUBAlAEbClJ8CuLIctaS63xpNdJo9Pft7Cc6Kk1TkEeFtcIiyI2BZsbrdqt9c0REI1+TRdBo4xwAIDfm3KSPgEXw9v4BAFiu1tg4BxbxznoJjLXY7z/xXf+cSDTzuUFD0NQkSRDH8a1Yi9/DAVVd46uqAAAzn0GLoF2vZD5HV7nvCX07yJR6ZhFoZmhm5CLIlHoZvAMiuh5PJg9BENyFYXh/nLsZTCDW6iYHLAIuip33miiKHn39dg5cWQIAWGQ2mKCbA1eWF5uDPmXT6aKbgyelFoMN6P/PR51zysEf2/RBFJCWMhsAAAAASUVORK5CYII=';
$icon[8]='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAlElEQVQ4jWNgoCZoaGgQmTBhQlV/f38DOm5paZEmaMCECROqysrKeNHF+/v7GyZOnPiloaGBB68B/f39DTAaCTv09/c3QF13fdWqVcwEDcAiXt3Q0MDX09OjMWHChMUku6CtrU20v7+/GuqVA6QagOEdkr1AtBqquWDUCxR4YcKECX4TJ06cgscFDRMnTvxGyBKSAADats4cMtUnDAAAAABJRU5ErkJggg==';

/*---------------------------english -------------------*/

$lang[0] =  'en';
$lang[1] =  'Remove';
$lang[2] =  'Edit';
$lang[3] =  'Preview';
$lang[4] =  'home';
$lang[5] =  'Filename';
$lang[6] =  'Size';
$lang[7] =  'Extension';
$lang[8] =  'Actions';
$lang[9] =  'Page';
$lang[10] =  'Total files';
$lang[11] =  'File Manager';
$lang[12] =  'by';
$lang[13] =  'Are you sure you want to Remove this file';
$lang[14] =  'Save';
$lang[15] =  'Cancel';
$lang[16] =  'Folder';
$lang[17] =  'Sending ...';
$lang[18] =  'Browse directorie';
$lang[19] =  'Search';
$lang[20] =  'Rename';
$lang[21] =  'Unable to open file!';
$lang[22] =  'Sign in';
$lang[23] =  'Login';
$lang[24] =  'Username';
$lang[25] =  'Password';
$lang[26] =  'Logout';
$lang[27] =  'About';
$lang[28] =  'Last modified';
$lang[29] =  'New folder';
$lang[30] =  'Upload file';
$lang[31] =  'Match not found';
$lang[32] =  'Browse ... ';
$lang[33] =  'Error';
$lang[34] =  'Success';
$lang[35] =  'Loading ...';
$lang[36] =  'Allowed extensions';
$lang[37] =  'Max filesize';
$lang[38] =  'Not exists';
$lang[39] =  'Tree View';
$lang[40] =  'Copy to';
$lang[41] =  'UnZip file';
$lang[42] =  'Information';
$lang[43] =  'Empty';

$units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');

/*----------------------------------------------*/

    $is_rtl=false;
if( in_array( $lang[0], $RTL_languages  ) ) 
	$is_rtl=true;


function Login()
{
	global $login_user,$login_pass;
	if(isset($_SESSION['login']))
	{
	if($_SESSION['login']['user'] ==$login_user && $_SESSION['login']['pass'] ==$login_pass && $_SESSION['login']['status'] =="1")
		return true; else return false;	
	}  else return false;	
	
}

function print_array($array)
{
	global $charset;
	header("Content-type: application/json; charset=".$charset);
	return json_encode($array);
}

function recurse_copy($src,$dst) { 
 if ( is_file($src) )
 {
	 $_DIRNAME = pathinfo($dst, PATHINFO_DIRNAME);
     if(!file_exists($_DIRNAME))
        @mkdir($_DIRNAME, 0777, true); 
    return @copy($src,$dst); 
 }
     
    $dir = opendir($src); 
	if(!file_exists($dst))
       @mkdir($dst, 0777, true); 
    while(false !== ( $file = readdir($dir)) ) { 
        if (( $file != '.' ) && ( $file != '..' )) { 
            if ( is_dir($src . '/' . $file) ) { 
                recurse_copy($src . '/' . $file,$dst . '/' . $file); 
            } 
            else { 
                copy($src . '/' . $file,$dst . '/' . $file); 
            } 
        } 
    } 
    closedir($dir); 
} 
function openZipArchive($file,$extract_path)
{
	global $alert_msg,$lang;
	if(!file_exists($extract_path))
    @mkdir($extract_path, 0777, true); 

$zip = new ZipArchive;
$res = $zip->open($file);
if ($res === TRUE) {
  $zip->extractTo($extract_path);
  $zip->close();
   return true;
} else {
  $alert_msg=$lang[33].' - '.$lang[41];
  return false;
}	
}


function unlinkRecursive($dir, $RemoveRootToo)
{
	 if (is_file($dir) === true)
     return @unlink($dir);  
    if(!$dh = @opendir($dir))
     return;   
    while (false !== ($obj = readdir($dh)))
    {
        if($obj == '.' || $obj == '..')
        continue;
        if (!@unlink($dir . '/' . $obj))
        unlinkRecursive($dir.'/'.$obj, true);       
    }
    closedir($dh);
    if ($RemoveRootToo)
     @rmdir($dir);    
    return;
}



function return_bytes ($size_str)
{
    switch (substr ($size_str, -1))
    {
        case 'M': case 'm': return (int)$size_str * 1048576;
        case 'K': case 'k': return (int)$size_str * 1024;
        case 'G': case 'g': return (int)$size_str * 1073741824;
        default: return $size_str;
    }
}

function is_sub_dir($path = NULL, $parent_folder = SITE_PATH) {
    $dir = dirname($path);
    $folder = substr($path, strlen($dir));
    $dir = realpath($dir);
    $folder = preg_replace('/[^a-z0-9\.\-_]/i', '', $folder);
    if( !$dir OR !$folder OR $folder === '.') {
    	return FALSE;
    }
    $path = $dir.'/'. $folder;/*DS*/
    if( strcasecmp($path, $parent_folder) > 0 ) {
    	return $path;
    }
    return FALSE;
}
function text_position($position=0)
{
global $is_rtl;
if($position==0)
{if($is_rtl ) echo 'left'; else echo 'right';}
else
{if($is_rtl ) echo 'right'; else echo 'left';}	
}

function css()
{  
global $is_rtl;	
$css='';

if(file_exists('./css/bootstrap.min.css'))
    $css.='<link href="./css/bootstrap.min.css" rel="stylesheet">';
else
	$css.='<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">';

if(file_exists('./js/jquery-2.2.0.min.js'))
	$css.='<script src="./js/jquery-2.2.0.min.js"></script>';
else
	$css.='<script src="//code.jquery.com/jquery-2.2.0.min.js"></script>';

if(file_exists('./js/bootstrap.min.js'))
	$css.='<script src="./js/bootstrap.min.js"></script>';
else
	$css.='<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>';

if(file_exists('./js/jquery.twbsPagination.min.js'))
	$css.='<script src="./js/jquery.twbsPagination.min.js"></script>'; 
else 
	$css.='<script src="//raw.githubusercontent.com/esimakin/twbs-pagination/develop/jquery.twbsPagination.min.js"></script>';

if( $is_rtl ) 
if(file_exists('./css/bootstrap-rtl.min.css'))
	$css.='<link href="./css/bootstrap-rtl.min.css" rel="stylesheet">';
else  
	$css.='<link rel="stylesheet" href="//cdn.rawgit.com/morteza/bootstrap-rtl/v3.3.4/dist/css/bootstrap-rtl.min.css">';
         	
	return $css;

} 	
function alert($str)
{
	global $lang;
	return '<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a><strong>'.$lang[33].'!</strong> '.$str.'</div>';
}

function  AJAX_request()
{
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
	return true ; else return false; 
}


if(!Login() && $LoginDialog && ( isset($_GET['uploadfile']) || isset($_GET['listFolderFiles']) || isset($_GET['copy']) || isset($_GET['unzip']) || isset($_GET['table']) || isset($_GET['rename']) || isset($_GET['Remove']) || isset($_GET['read']) || isset($_GET['newfolder']) )  )
{

  die(print_array(array( 'table' => '<div class="container_01"><center>'.$lang[31].'</center></div>' , 'total' => 1 , 'page' => 1, 'dir' => '' , 'dirHtml' => '' ,'alert' => alert($lang[22])  )));
}


if(!Login() && $LoginDialog)
{
	if($login_user=='')
		$html_input_user='<input name="username" value="" type="hidden" >';
	else
		$html_input_user='<div class="input-group" style="margin-top:10px;">
                           <span class="input-group-addon"><i class="UserIcon"></i></span>
                           <input id="user" type="text" class="form-control" name="username" value="" placeholder="'.$lang[24].'">                                        
                         </div>';
echo ('<!DOCTYPE html>
<html>
<head>
<title>'.$lang[22].'</title>
<meta charset="'.$charset.'">
<link href="'.$icon[12].'" rel="icon" type="image/x-icon" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
'.css().'
<style>
body {background: #F1F1F1 none repeat scroll 0% 0%;}
.UserIcon{background:url( '.$icon[12].') no-repeat left center;padding: 5px 0 5px 20px;}
.PassIcon{background:url( '.$icon[14].') no-repeat left center;padding: 5px 0 5px 20px;}
</style>
</head>
<body>
<div class="container">
 <div class="col-sm-4 col-sm-offset-4" style="margin-top:50px;">
		<div class="well" style="background-color: #FFF;">
      <legend>'.$lang[22].'(admin)</legend>
    <form accept-charset="'.$charset.'" action="" method="post">'.$html_input_user.'
		          
                    <div class="input-group" style="margin-top:10px;">
                        <span class="input-group-addon"><i class="PassIcon"></i></span>
                        <input id="password" type="password" class="form-control" name="password" placeholder="'.$lang[25].'">
                    </div>  
					
        <button class="btn btn-info btn-block" style="margin-top:10px;"  type="submit">'.$lang[23].'</button>
    </form>
	    </div>
  </div>
</div>


</body>
</html>');
	unset($lang);
	unset($icon);
	unset($_extensions);
    unset($RTL_languages);
	unset($LoginDialog);
	unset($login_user);
	unset($login_pass);
	unset($is_rtl);
	unset($units);
	unset($charset);
	unset($_maxFileSize);
    unset($_SERVER); unset($_SESSION);unset($_COOKIE);unset($_GET);  unset($_POST);unset($_FILES);unset($_ENV); unset($_REQUEST); 

exit();
}


$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
if(!($page>0)) $page = 1;
$directory = (isset($_GET['dir'])) ? $_GET['dir'] : '.';

if(isset($_GET['copy']) /*&& AJAX_request()*/ ) {file_exists_str($_GET['copy']); recurse_copy( $_GET['copy'],$_GET['to'] );  } 
if(isset($_GET['Remove']) && AJAX_request() ) {file_exists_str($_GET['Remove']);@unlinkRecursive($_GET['Remove'],true);	} 
if(isset($_GET['newfolder']) && AJAX_request() ) {@mkdir(  $directory .'/'.$_GET['newfolder'] , 0777, true);	} 
if(isset($_GET['rename']) && AJAX_request() ) {file_exists_str($_GET['rename']);@rename($_GET['rename'],$directory .'/'.$_GET['newrename']);} 
if(isset($_GET['unzip']) && AJAX_request() ) {file_exists_str($_GET['unzip']);@openZipArchive($_GET['unzip'],$_GET['to']);} 
if(isset($_GET['listFolderFiles'])  && AJAX_request() ) {die(listFolderFiles($directory));} 

if(isset($_GET['read']) && $show_file_or_dir && AJAX_request() ) {file_exists_str($_GET['read']);if(in_array(extension($_GET['read']), $_extensions[1]) || count($_extensions[1])==0 )
	{   header('Content-type: text/html; charset='.$charset);
		die( _read($_GET['read']) ) ; 
	}   else die($lang[7]);} 
	
if(isset($_GET['write']) && $show_file_or_dir && AJAX_request() ) {file_exists_str($_POST['write']);if(in_array(extension($_POST['write']), $_extensions[1]) || count($_extensions[1])==0 )
	{   header('Content-type: text/html; charset='.$charset);
        $txtData = (isset($_POST['txt'])) ? $_POST['txt'] : '';
		die( _write($_POST['write'],$txtData) ) ; 
	}   else die($lang[7]);} 
	
 if ( isset($_GET['uploadfile']) && AJAX_request() ) { 
 
 $response = array();
 if (isset( $_FILES["inputFileUpload"] ) && !empty( $_FILES["inputFileUpload"]["name"] ) )
 if (is_array($_FILES['inputFileUpload']['name']) || is_object($_FILES['inputFileUpload']['name']))
 foreach($_FILES['inputFileUpload']['name'] as $n => $name) {
	
	if(!empty($name)) {	
	$tmp_name = basename($name);
	$tmp_size = $_FILES["inputFileUpload"]["size"][$n] ;
	$tmp_type = $_FILES["inputFileUpload"]["type"][$n] ;
	$error    = $_FILES["inputFileUpload"]["error"][$n] ;
	$name_    = $_FILES["inputFileUpload"]["name"][$n] ;
	$target_file = $directory .'/'.$tmp_name; 	
		
// )
if( in_array(extension($tmp_name), $_extensions[0]  ) || count($_extensions[0]) ==0 )
 {
	
if(move_uploaded_file($_FILES["inputFileUpload"]["tmp_name"][$n], $target_file))	
    $response[] =array( 'code' => '1','status' => $lang[34] ,'url' => $target_file , 'tmp_name' =>  $tmp_name , 'size' => $tmp_size , 'type' => $tmp_type , 'error' => $error , 'name' => $name_);
elseif($error!=0)
    $response[] =array( 'code' => '0','status' => $lang[33].'_'.$error );	
elseif($tmp_size>$_maxFileSize)
    $response[] =array( 'code' => '0','status' => $lang[37] );		
else
	$response[] =array( 'code' => '0','status' => $lang[33] );	
	
 } else $response[] = array( 'code' => '0','status' => $lang[7] );  
} else $response[] = array( 'code' => '0','status' => $lang[38] );  
}

  die(print_array($response));										
 
}; //$alert_msg=$lang[38];

//exit(header('Location: ?page='.$page.'&dir='.$directory.'"'));

if (!function_exists('scandir')) {
    function scandir($dir, $sortorder = 0) {
        if (is_dir($dir)) {
            $files = [];
            if ($dirlist = opendir($dir)) {
                while (($file = readdir($dirlist)) !== false) {
                    if ($file != '.' && $file != '..') {
                        $files[] = $file;
                    }
                }
                closedir($dirlist);
                ($sortorder == 0) ? asort($files) : rsort($files);
            }
            return $files;
        } else {
            return false;
        }
    }
}



function folderSize ($dir)
{
    $size = 0;
    foreach (glob(rtrim($dir, '/').'/*', GLOB_NOSORT) as $each) {
        $size += is_file($each) ? filesize($each) : folderSize($each);
    }
    return $size;
}

function FilterScanDir($dir)
{
	global $_extensions,$directory;
$times	= array() ;
$files_tmp = array() ;	
$folers_tmp = array() ;	
$total_files = 0;
$files = (is_dir($dir)) ? @scandir($dir) : array() ;	
if (is_array($files) || is_object($files))
foreach($files as $file)
if(  ( in_array(extension($file), $_extensions[0] ) || count($_extensions[0]) ==0 ) && $file !=='.'  )	
{
	if($file !=='..')
	$total_files++;

    if(is_dir($file))
	 $folers_tmp[]=$file;
    else
	 $files_tmp[]=$file;
 
	$times[] = date ("d/m/Y H:i:s", @filemtime($directory.'/'.$file));
}
//arsort($files_tmp);
//$files = array_keys($files_tmp);
//array_multisort(array_map('filemtime', $files_tmp ), SORT_DESC, $files_tmp);
return array( 'list' => array_merge($folers_tmp,$files_tmp)  ,'times' => $times , 'count' => $total_files );
}

function listFolderFiles($dir){
	global $_extensions;
	 if (is_file($dir) === true) 
		 return ;
    $ffs = scandir($dir);
    echo ' <ul>';
	if (is_array($ffs) || is_object($ffs))
    foreach($ffs as $ff){ 
        if($ff != '.' && $ff != '..' &&  ( in_array(extension($ff), $_extensions[0]  ) || count($_extensions[0]) ==0 )  ){
            echo '<li><a href="'.$dir.'/'.$ff.'">'.$ff;
            if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
            echo '</a></li>';
        }
    }
    echo '</ul>';
}

$total_files = 0;

$offset = ($page-1)*$perpage;
//setcookie('directory', $directory, time() + (86400 * 30), "/");

//get subset of file array
$FilesArray = FilterScanDir($directory);
$files      = $FilesArray['list'];
$times      = $FilesArray['times'];
$total_files= $FilesArray['count'];


//$files = (isset($files_tmp) && is_array($files_tmp)) ? $files_tmp : array();
if(isset($_GET['search']))
{
unset($files);
$files = array();
$total_files = 1;
if (in_array($_GET['search'], $FilesArray['list']))  
  $files[0] = $_GET['search']; 
else 
  $files[0] = 'Match_not_found';
}
if($table_fixed=='')
$total_pages = ceil($total_files/$perpage);
else
$total_pages = 1;	

unset($FilesArray);

if($table_fixed=='')
$files = array_slice($files, $offset, $perpage);


function showfile($file)
{
global $directory,$_extensions,$lang;

if($file=='.' )		
	return '<a href="?" onclick="getContent('."'dir=".$directory.'/'.$file."'".',0); return false;"><strong>'.$file.'</strong></a>';

elseif($file=='Match_not_found')
    return '<span class="ExplorIcon">'.$lang[31].'</span>';
	
elseif($file=='..' )
    return '<span class="TreeIcon"></span><a href="?" onclick="getContent('."'dir=".$directory.'/'.$file."'".',0); return false;">'.$file.'</a>';

elseif(is_dir($directory.'/'.$file) && file_exists($directory.'/'.$file) )	
	return '<span class="CFolderIcon"></span><a href="?" onclick="getContent('."'dir=".$directory.'/'.$file."'".',0); return false;">'.$file.'</a>';
	
elseif (in_array(extension($file), $_extensions[2]  ))
	return  '<span class="ImageIcon"></span><a href="'.$directory.'/'.$file.'">'.$file.'</a>' ;
	
elseif (in_array(extension($file), array("zip","rar","7z","gzip","tar","wim","xz")  ))
	return '<span class="ZipIcon"></span><a href="'.$directory.'/'.$file.'">'.$file.'</a>' ;
	
else
	return '<span class="PhpIcon"></span><a href="'.$directory.'/'.$file.'">'.$file.'</a>';
}

function extension($file)
{
	global $lang;
if($file=='Match_not_found')
	return '--'; 
$extension=strtolower(pathinfo($file, PATHINFO_EXTENSION ))	;
if($extension=='') 
	return 'dir';//$lang[16] ; 
else 
	return $extension; //ucfirst
}


function file_exists_str($file)
{
	global $alert_msg,$lang;
	if(!file_exists($file))
		$alert_msg=$lang[38];
}
function file_size($file)
{
global $directory;
return @filesize_formatted($directory.'/'.$file);	
}


function action($file)
{
global $directory,$page,$show_file_or_dir,$lang,$total_files,$_extensions;
if($file=='Match_not_found' )
	return '--'; 
if( $file =='..')
	return '--'; 

$html= '<a data-toggle="tooltip" title="'.$lang[1].'" onclick="SetRemoveModalattr('."'".$directory.'/'.$file.'&dir='.$directory.'&page='.$page."'".'); return false;" href="#"><span class="RemoveIcon"></span></a> ';
if($show_file_or_dir)
{
	if(is_dir($directory.'/'.$file))
	{
		$count=FilterScanDir($directory.'/'.$file); //$count=FilterScanDir($directory.'/'.$file)['count'];
		$count=$count['count'];
		$html.='<a data-toggle="tooltip" title="'.$lang[18].'"  onclick="SetShowFileModalattr('."'".$directory.'/'.$file.'/&perpage='.$count."&#directory'".'); return false;"  href="#"><span class="OFolderIcon"></span></a> ' ;	 
        unset($count);		
	}
		
	elseif (in_array(extension($file), $_extensions[2]  ))
	   $html.='<a data-toggle="tooltip" title="'.$lang[3].'" onclick="SetShowFileModalattr('."'".$directory.'/'.$file."'".'); return false;" href="#"><span class="ImageIcon"></span></a> ' ;
	elseif (in_array(extension($file), array("zip","rar","7z","gzip","tar","wim","xz")  ))
	   $html.='<a data-toggle="tooltip" title="'.$lang[41].'" onclick="SetZipFileModalattr('."'".$directory.'/'.$file.'&dir='.$directory.'&page='.$page."'".'); return false;" href="#"><span class="ZipIcon"></span></a> ' ;
	else	
       $html.='<a data-toggle="tooltip" title="'.$lang[3].'" onclick="SetShowFileModalattr('."'".$directory.'/'.$file."'".'); return false;" href="#"><span class="ShowIcon"></span></a> ' ;
}
$html.='<a data-toggle="tooltip" title="'.$lang[40].'" onclick="SetCopyFileModalattr('."'".$directory.'/'.$file.'&dir='.$directory.'&page='.$page."'".'); return false;" href="#"><span class="CopyIcon"></span></a>';	
$html.='<a data-toggle="tooltip" title="'.$lang[20].'" onclick="SetRenameModalattr('."'".$directory.'/'.$file.'&dir='.$directory.'&page='.$page."'".'); return false;" href="#"><span class="RenameIcon"></span></a>';	
    return $html;
}

function _read($file,$Modes="r")
{
global $lang;

$file_size = filesize($file);
if( !$file_size || !is_readable($file) ) return $lang[21];

$myfile = fopen($file, $Modes) ;
if(!$myfile) return $lang[21]; //w
return fread($myfile, $file_size );
fclose($myfile);
};

function _write($file,$txt='',$Modes="w")
{
global $lang;

if(file_exists($file) && $txt=='') return $lang[43];

if( file_exists($file) && ( !filesize($file) || !is_readable($file) ) ) return $lang[21];

$myfile = fopen($file, $Modes) ;
if(!$myfile) return $lang[21]; //w
if ( fwrite($myfile, $txt ) )
{
fclose($myfile);
return $lang[34];
}	else {
	     fclose($myfile);
         return $lang[33];
         }

};

function GetOldirectory()
{
global $directory,$page,$lang;

$html='<li><a href="#" onclick="getContent('."'dir=."."'".',0); return false;">'.$lang[4].'</a></li>';
$newDir='.';
$elements = explode('/',$directory);
if (is_array($elements) || is_object($elements))
foreach ( $elements as $key_value )
{
	if($key_value!='.'){
	$newDir = $newDir.'/'.$key_value;
	$html.='<li><a href="#" onclick="getContent('."'dir=".$newDir.'&page='.$page."'".',0); return false;">'.$key_value.'</a></li>';
	}
}

return $html;
}

function filesize_formatted($path)
{
global $units ;
	if(is_dir($path) || $path=='./Match_not_found' ) return '--';//directory 
    $size = filesize($path);
    $power = $size > 0 ? floor(log($size, 1024)) : 0;
    return number_format($size / pow(1024, $power), 2, '.', ',') . ' ' . $units[$power];
}
function fileTime($index,$file)
{ 
global $times ;
if($file=='Match_not_found') return '--';
return $times[$index];
};

if(isset($_GET['table']) && AJAX_request() )
{
	
$html='<div class="table-responsive"><table class="table table-hover '.$table_fixed.'"><thead><tr>';
	if($table_fixed=='')
	$html.='<th class="col-md-4">'.$lang[5].'</th><th class="hidden-xs col-md-2">'.$lang[6].'</th><th class="hidden-xs col-md-2">'.$lang[7].'</th><th class="hidden-xs col-md-2">'.$lang[28].'</th>';
	else
	$html.='<th class="col-xs-12 col-sm-6">'.$lang[5].'</th><th class="hidden-xs col-xs-2 col-sm-2 col-md-2">'.$lang[6].'</th><th class="hidden-xs col-xs-2 col-sm-2 col-md-2">'.$lang[7].'</th>';

    $html.='<th class="hidden-xs col-md-2">'.$lang[8].'</th></tr></thead><tbody>';
//output appropriate items
if (is_array($files) || is_object($files))
foreach($files as $index => $file )
{
	$html.='<tr>';
	if($table_fixed=='')
	$html.='<td class="col-md-3">'.showfile($file).'</td><td class="hidden-xs col-md-2">'.file_size($file).'</td><td class="hidden-xs col-md-2">'.extension($file).'</td><td class="hidden-xs col-md-2">'.fileTime($index,$file).'</td>';
	else
	$html.='<td class="col-xs-12 col-sm-5">'.showfile($file).'</td><td class="hidden-xs col-xs-2 col-sm-2 col-md-2">'.file_size($file).'</td><td class="hidden-xs col-xs-2 col-sm-2 col-md-2"><span class="label label-default">'.extension($file).'</span></td>';

	$html.='<td class="hidden-xs col-xs-3 col-sm-3 col-md-3">'.action($file).'</td></tr>'; 
}


$html.='<tr>';
if($table_fixed=='')
$html.='<td colspan="5" class="col-xs-12 col-sm-12 col-md-12">';
else
$html.='<td colspan="4" class="col-xs-12 col-sm-12 col-md-12">';	
$html.=$lang[9].' : <mark>'.$page.'</mark> '.$lang[10].' : <mark>'.$total_files.'</mark></td></tr></tbody></table></div>';
if($alert_msg!='') 
	$alert_msg = alert($alert_msg);
  $response = array( 'table' => $html , 'total' => $total_pages , 'page' => $page , 'dir' => $directory , 'dirHtml' => GetOldirectory() ,'alert' => $alert_msg);
  unset($html); 
  die(print_array($response));
  
}

// free memory
unset($files);
unset($times);
//unset($directory);
unset($total_files);
//unset($page);
unset($offset);
//unset($total_pages);
unset($perpage);
unset($table_fixed);
unset($RTL_languages);
unset($show_file_or_dir);
unset($alert_msg);
?>
<!DOCTYPE html>
<html lang="en-US">
    <head>	
	    <meta charset="<?php echo $charset ?>">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
	    <?php echo css();?>  
		<link href="<?php echo $icon[4];?>" rel="icon" type="image/x-icon" />
		<title><?php echo $lang[11]; ?></title>
        
		<style>

.ZipIcon {background:url(<?php echo $icon[0];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}
.ImageIcon {background:url(<?php echo $icon[1];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}
.CopyIcon {background:url(<?php echo $icon[2];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}		
.CFolderIcon {background:url(<?php echo $icon[3];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}
.OFolderIcon {background:url(<?php echo $icon[4];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}
.PhpIcon{background:url( <?php echo $icon[5];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}
.RemoveIcon {background:url(<?php echo $icon[6];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}
.RenameIcon{background:url( <?php echo $icon[7];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}
.ShowIcon {background:url(<?php echo $icon[8];?>) no-repeat left center; padding: 5px 0 5px 25px;margin-left: 5px;}
.TreeIcon{background:url( <?php echo $icon[9];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}
.ExplorIcon{background:url( <?php echo $icon[10];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}
.UploadIcon{background:url( <?php echo $icon[11];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}
.UserIcon{background:url( <?php echo $icon[12];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}
.LogoutIcon{background:url(  <?php echo $icon[13];?>) no-repeat left center;padding: 5px 0 5px 25px;margin-left: 5px;}

.table,.breadcrumb,.navbar-default{border: 1px solid #D8D8D8;background: #fff none repeat scroll 0% 0%;}
.container_01{border: 1px solid #D8D8D8;background: #fff none repeat scroll 0% 0%;padding: 25px;margin-bottom:20px;}
.Loading{background:url(<?php echo $icon[15];?>) no-repeat center center; padding: 25px ;}
body {background: #F1F1F1 none repeat scroll 0% 0%;margin-bottom:20px;}
td{font-size: 12px;}
.pagination { margin:0px;}
.table-fixed { border-top: 0px ;}
.table-fixed thead { width: 97%;}
.table-fixed tbody {height: 300px;overflow-y: auto;width: 100%;}
.table-fixed thead, .table-fixed tbody, .table-fixed tr, .table-fixed td, .table-fixed th {display: block;}
.table-fixed tbody td, .table-fixed thead > tr> th {float: left;border-bottom-width: 1px;}
.btn-file {position: relative;overflow: hidden;}
.btn-file input[type=file] {position: absolute;top: 0;right: 0;min-width: 100%;min-height: 100%;font-size: 100px;text-align: right;filter: alpha(opacity=0);opacity: 0;outline: none; background: white;cursor: inherit;display: block;}
.navbar-brand {font-size: 14px;}

.treeview, .treeview ul {margin:0;padding:0;list-style:none;color: #D8D8D8;}
.treeview ul { margin-left:1em;position:relative}
.treeview ul ul {margin-left:.5em}

.treeview li {margin:0;padding:0 1em;line-height:2em;position:relative}
<?php if( $is_rtl ) { ?>
.treeview ul:before {content:"";display:block;width:0;position:absolute;top:0;right:0;border-right:1px solid;bottom:15px;}
.treeview ul li:before {content:"";display:block;width:10px;height:0;border-top:1px solid;margin-top:-1px;position:absolute;top:1em;right:0}
<?php } else {?>
.treeview ul:before {content:"";display:block;width:0;position:absolute;top:0;left:0;border-left:1px solid;bottom:15px;}
.treeview ul li:before {content:"";display:block;width:10px;height:0;border-top:1px solid;margin-top:-1px;position:absolute;top:1em;left:0}
<?php } ?>
		</style>
    </head>
    <body>


<div class="container">



<div class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
		<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
		<span class="sr-only">Toggle navigation</span>
		<span class="icon-bar"></span>
		<span class="icon-bar"></span>
		<span class="icon-bar"></span>
		</button>
      <a class="navbar-brand" href="">  <span class="ExplorIcon" ></span>  <?php echo $lang[11].'<span class="hidden-xs"> , '.$lang[12].'  '. base64_decode('PGNvZGU+b25leGl0ZTwvY29kZT4=') . '  '?></span></a>
    </div>
     
	  
	 <div class="collapse navbar-collapse navbar-ex1-collapse"> 
	  
<ul class="nav navbar-nav navbar-<?php text_position();?>">       
 <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">
       <span class="UserIcon"></span> <?php /*if(isset($_SESSION['login']['user'])) echo $_SESSION['login']['user']; */?>
      <b class="caret"></b>
    </a>
    <ul class="dropdown-menu dropdown-menu-<?php text_position();?>">
	  <li><a href="#" onclick="SetNewFolderModalattr();return false;"><span class="CFolderIcon"></span> <?php echo $lang[29];?></a></li>
	  <li><a href="#" onclick="SetUploadFileModalattr();return false;"><span class="UploadIcon"></span> <?php echo $lang[30];?></a></li>	  
	  <?php if($LoginDialog) {?>
      <li><a href="?logout"><span class="LogoutIcon"></span> <?php echo $lang[26];?></a></li>
	  <?php }?>
	  
    </ul>
  </li>
</ul>
	 
        <div class = "navbar-form navbar-<?php text_position();?>"  role="search">
        <div class="input-group">
            <input type="text" class="form-control" id="inputSearch" placeholder="<?php echo $lang[19];?>" name="q">
			<input type="hidden" value="<?php echo $directory.'&page='.$page;?>" id="dirInputSearch">
            <div class="input-group-btn">
                <button class="btn btn-default" onclick="Search()" type="submit"><span class="ExplorIcon" style="padding: 5px 0px 5px 18px;"></span></button>
            </div>
        </div>
        </div>		
	</div>	
    </div>	
</div>


		

<!-- Modal Rename -->
<div id="Rename" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title"><?php echo $lang[20]; ?> : <code id="RenamefileName"></code></h4>
      </div>
      <div class="modal-body">
	    <input id="renameDir" type="hidden" >	
		<input id="renameOldInput" type="hidden" >	
		
        <input type="text" class="form-control" id="renameInput">
      </div>
     <div class="modal-footer">
	 
	    <span id="RenameLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
	    <button  type="button" class="btn btn-success"  onclick="renameAndContent()"><?php echo $lang[14]; ?></button>
        <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>
		 
	 </div>
    </div>

  </div>
</div>	



<!-- Modal Remove -->
<div id="Remove" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title"><?php echo $lang[1]; ?> : <code id="RemovefileName"></code></h4>
      </div>
      <div class="modal-body">
	    <input id="Removedir" type="hidden" >	
		<input id="RemoveInput" type="hidden" >	
		<?php echo $lang[13]; ?>

      </div>
     <div class="modal-footer">
	 
	    <span id="RemoveLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
	    <button  type="button" class="btn btn-success" onclick="RemoveAndContent()"><?php echo $lang[14]; ?></button>
        <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>
		 
	 </div>
    </div>

  </div>
</div>	



<!-- Modal Remove -->
<div id="ZipFile" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title"><?php echo $lang[41]; ?> : <code id="ZipfileName"></code></h4>
      </div>
      <div class="modal-body">
	    <input id="Zipdir" type="hidden" >	
     <input class="form-control" id="FolderUnzipInput" >

      <div id="ZipLoad"></div>
      </div>
     <div class="modal-footer">
	 
	    <span id="ZipLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
	    <button  type="button" class="btn btn-success" onclick="zipAndContent()"><?php echo $lang[14]; ?></button>
        <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>
		 
	 </div>
    </div>

  </div>
</div>	


<!-- Modal NewFolder -->
<div id="NewFolder" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title"><?php echo $lang[29]; ?> </h4>
      </div>
      <div class="modal-body">
	    <input id="NewFolderDir" type="hidden" >	
		<input type="text" class="form-control" id="NewFolderInput">
      </div>
     <div class="modal-footer">
	 
	    <span id="NewFolderLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
	    <button  type="button" class="btn btn-success"  onclick="newfolderAndContent()"><?php echo $lang[14]; ?></button>
        <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>
		 
	 </div>
    </div>

  </div>
</div>	

<!-- Modal CopyFolder -->
<div id="CopyFolder" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title"><?php echo $lang[40]; ?> </h4>
      </div>
      <div class="modal-body">
	    <input id="FromFolderDir" type="hidden" >	
		<input type="text" class="form-control" id="ToFolderInput">
      </div>
     <div class="modal-footer">
	 
	    <span id="CopyLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
	    <button  type="button" class="btn btn-success"  onclick="copyAndContent()"><?php echo $lang[14]; ?></button>
        <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>
		 
	 </div>
    </div>

  </div>
</div>	


<!-- Modal UploadFile -->
<div id="UploadFile" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
	 
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title"><?php echo $lang[30]; ?> </h4>
		
      </div>
      <div class="modal-body">
	  <p><?php echo $lang[36] .' : <code>{ '.implode(",",$_extensions[0]).' }</code> <br> 
	  '.$lang[37].' : <code id="maxFileSize">'.$_maxFileSize.'</code>'; ?> <br>
	  <?php echo $lang[6] ?> : <code><span id="UploadFileSize"></span></code></p>
	<form  id="FileUploadForm" enctype="multipart/form-data" method="post">
	    <input id="UploadFileDir" type="hidden" >	

            <div class="input-group">
                <span class="input-group-btn">
                    <span class="btn btn-default btn-file">
                         <?php echo $lang[32]; ?> <input name="inputFileUpload[]" type="file" multiple >
                    </span> 
                </span>
                <input type="text" class="form-control" readonly id="inputFileUpload">
            </div>	
			
      </div>
     <div class="modal-footer">
	 
	    <span id="FileUploadLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
	    <button type="submit" name="upload" class="btn btn-success"  id="FileUploadBtn" disabled><?php echo $lang[14]; ?></button> 
        <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>

        </form>
		
	 </div>
	
    </div>

  </div>
</div>	

 <div class="modal fade" id="ShowFile" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title"><?php echo $lang[3] ;?> <code id="imgUrl"></code></h4>
        </div>
        <div class="modal-body">
		  <input id="filenameDir" type="hidden" >	
          <input type="hidden" id="filenameInput">
          
		  
		
		
		<ul class="nav nav-tabs">
            <li class="active"><a data-toggle="tab" href="#_browse" id="HrefBrowse"><?php echo $lang[18] ;?></a></li>
            <li class=""><a data-toggle="tab" href="#_tree" id="HrefTree"><?php echo $lang[39] ;?></a></li>
        </ul>

        <div class="tab-content">
			
            <div id="_browse" class="tab-pane fade in active">
                <div id="Result" class="zone" > </div>
            </div>
			 
            <div id="_tree" class="tab-pane fade">
			    <br>
                <ul class="treeview" id="listFolderFiles"> 
				</ul>
			</div>
        </div>
		
        </div>
        <div class="modal-footer">
		  <span id="FileWriteLabelsuccess" class="label label-success pull-<?php text_position(1);?>"></span> 
          <button type="button" class="btn btn-success"  id="FileWriteBtn" onclick="writeAndContent()" ><?php echo $lang[14]; ?></button> 
		  <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo $lang[15]; ?></button>
        </div>
      </div>
      
    </div>
  </div>


 
  
        <ol class="breadcrumb" id="breadcrumb">  </ol>		 
		<div id="content"></div>		  
		<input type="hidden" id="directory">		
		 <div id="alert"></div>
		 <ul id="pagination" class="pagination"></ul>
        <script type="text/javascript">
		
/**
 *  BootTree Treeview plugin for Bootstrap.
 *
 *  Based on BootSnipp TreeView Example by Sean Wessell
 *  URL:	http://bootsnipp.com/snippets/featured/bootstrap-30-treeview
 *
 *	Revised code by Leo "LeoV117" Myers
 *
 */
 var FileTypes = [ <?php if(count($_extensions[1])!=0) echo "'".implode("','",$_extensions[1])."'" ; ?>]; 
 var ImgTypes = [ <?php if(count($_extensions[2])!=0) echo "'".implode("','",$_extensions[2])."'" ; ?>]; 
 var units = [<?php if(count($units)!=0) echo "'".implode("','",$units)."'" ; ?>];
 var maxFileSize = parseInt('<?php echo $_maxFileSize ?>');
$.fn.extend({
	treeview:	function() {
		return this.each(function() {
			var tree = $(this);
			
			tree.addClass('treeview-tree');
			tree.find('li').each(function() {
				var stick = $(this);
			});
			tree.find('li').has("ul").each(function () {
				var branch = $(this); 				
				branch.prepend("<i class='tree-indicator CFolderIcon'></i>");
				branch.addClass('tree-branch');
				branch.on('click', function (e) {
					if (this == e.target) {
						var icon = $(this).children('i:first');
						
						icon.toggleClass("OFolderIcon");
						$(this).children().children().toggle();
					}
				})
				branch.children().children().toggle();	
				branch.children('.tree-indicator, button, a').click(function(e) {
					branch.click();
					
					e.preventDefault();
				});
			});
		});
	}
});

		
	/*************************************************************/	
		
		
    $('#FileUploadForm').on('submit',(function(e) {
		$('#FileUploadLabelsuccess').html('<?php echo $lang[17]; ?>');	 
		$("#FileUploadBtn").attr("disabled", "disabled");
        e.preventDefault();
        var formData = new FormData(this);
        var dir =$('#UploadFileDir').val();
        $.ajax({
			xhr: function()
			{
				var xhr = new window.XMLHttpRequest();
				xhr.upload.addEventListener("progress", function(evt) {
					if (evt.lengthComputable) {
						var percentComplete = Math.round(evt.loaded * 100 / evt.total);
						$('#FileUploadLabelsuccess').html('<?php echo $lang[17]?> ' + percentComplete + '%');
						}}, false);
				return xhr;
			},
            type:'POST',
            url: '?uploadfile&dir='+dir,
            data:formData,
            cache:false,
            contentType: false,
            processData: false,
            success:function(data){
				$('#FileUploadLabelsuccess').html('');
				$('#inputFileUpload').val('');
				$('#UploadFile').modal('hide');	
				//$("#FileUploadBtn").attr("disabled", "disabled");
				getContent("dir="+dir,0)	;
            },
            error: function(data){
                $('#FileUploadLabelsuccess').html('<?php echo $lang[33]?>');
            }
			
			
        });
    }));

	function formatFileSize(bytes) {
				
				for(var pos = 0;bytes >= 1000; pos++,bytes /= 1024);
				var d = Math.round(bytes*10);
				return pos ? [parseInt(d/10),".",d%10," ",units[pos]].join('') : bytes + units[0];
			}


		    var LoadingHtml='<div class="container_01"><center><span class="Loading"></span><br><br><?php echo $lang[35]?></center></div>';
            $(function(){$('body').tooltip({ selector: '[data-toggle="tooltip"]' });});
			
					$(document).on('change', '.btn-file :file', function() {
						var input = $(this),
						numFiles = input.get(0).files ? input.get(0).files.length : 1,
						label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
						input.trigger('fileselect', [numFiles, label]);
						var Tsize=0;
						var Tlabel='';
						for (i = 0; i < numFiles; i++) {
                             Tsize  = Tsize+ this.files[i].size;
							 Tlabel = Tlabel+','+this.files[i].name;
							 }
							// alert(Tlabel);

						$("#UploadFileSize").html(formatFileSize(Tsize));	 
						
						if(numFiles==0)		
							$("#FileUploadBtn").attr("disabled", "disabled");
						else
							$("#FileUploadBtn").removeAttr("disabled");
						
						
						
						if(numFiles>1)				
						  $('#inputFileUpload').val('<?php echo $lang[10];?> '+numFiles);	
						else
						{
							
							$('#inputFileUpload').val(label);	
							
							if(Tsize>maxFileSize)
							{
								$('#FileUploadLabelsuccess').html('<?php echo $lang[33].' : '.$lang[37]?>  '+formatFileSize(maxFileSize) );
								$("#FileUploadBtn").attr("disabled", "disabled");
							} else $('#FileUploadLabelsuccess').html('');
							
							
						}
						  
						
						
						}); 	
						
			
			$("#content").html(LoadingHtml);
		     $.getJSON("?table&page=1", function(result){ 
			$("#content").html(result.table); 
		    $('#breadcrumb').html(result.dirHtml);
			$('#directory').val(result.dir);
            // init bootpag -sm
			$('#alert').html(result.alert);
			
			 $('#pagination').twbsPagination({
        totalPages: result.total,
        visiblePages: 5,
		first : '<?php  if($is_rtl ) echo '→'; else echo '←' ?>',
		prev : '«',
		next : '»',
		last : '<?php  if($is_rtl ) echo '←' ;else echo '→' ?>',
        onPageClick: function (event, page) {
            $("#content").html(LoadingHtml);
			$.getJSON("?table&page="+page+"&alert="+result.alert, function(result){ $("#content").html(result.table); $('#breadcrumb').html(result.dirHtml); $('#alert').html(result.alert);});		 
        }
		});
			
			});
			

	    function setCookie(key, value) {
            var expires = new Date();
            expires.setTime(expires.getTime() + (1 * 24 * 60 * 60 * 1000));
            document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
        }

        function getCookie(key) {
            var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
            return keyValue ? keyValue[2] : null;
        }
	
	      function escapeTags( str ) {
			  return String( str )
           .replace( /&/g, '&amp;' )
           .replace( /"/g, '&quot;' )
           .replace( /'/g, '&#39;' )
           .replace( /</g, '&lt;' )
           .replace( />/g, '&gt;' );
		   }
		   
		   function replace_dir( str ) {
			  return String( str ).replace( '///', '/' ).replace( '//', '/' ); 
		   }
		   
		   function isFile(pathname) {
			   return pathname.split('/').pop().split('.').length > 1;
		   }
		   function isDir(pathname) { return !isFile(pathname); }
	
			function getContent(url,type)
			{
				  setCookie('url', url);
				 $("#content").html(LoadingHtml);
				  url = replace_dir(url); 
			      $.getJSON("?table&"+url, function(data){
				 //  alert("?table&"+url);			  
		          $("#content").html(data.table);
			      $('#breadcrumb').html(data.dirHtml);
				  $('#dirInputSearch').val(data.dir);
				  $("#Result").html(data.table);
				  $('#directory').val(data.dir);
				  $('#pagination').empty().removeData("twbs-pagination").unbind("page");
				  $('#alert').html(data.alert);		  
		        $('#pagination').twbsPagination({
                    totalPages: data.total,
                    visiblePages: 5,
		            first : '<?php  if($is_rtl ) echo '→'; else echo '←' ?>',
		            prev : '«',
		            next : '»',
		            last : '<?php  if($is_rtl ) echo '←' ;else echo '→' ?>',
                    onPageClick: function (event, page) {
		            if(type==0)  { 	
			          $("#content").html(LoadingHtml);
		              $.getJSON("?dir="+data.dir+"&table&page="+page+"&alert="+data.alert, function(data){$("#content").html(data.table); $("#Result").html(data.table); $('#breadcrumb').html(data.dirHtml);  $('#alert').html(data.alert);});}
		            }        
		        });
			      });	
				  
			};
			
			function Search()
			{
			    getContent("dir="+$('#dirInputSearch').val()+'&search='+$('#inputSearch').val(),1)	
			}
			

			
			 function SetRenameModalattr(dir)
			 {
				//var filename= SplitFileName(dir,"/").split("&")[0];
				dir = replace_dir(dir); 
				var filename = SplitFileName(dir.split("&")[0],"/"); 
				$('#renameInput').val(filename);$('#renameDir').val(dir);$('#RenamefileName').html(filename);
				$('#ShowFile').modal('hide');	
				$('#Rename').modal('show');	
				$( "#renameInput" ).focus();					
			 };
			 
			 
			  function SetNewFolderModalattr()
			 {
				dir = $('#directory').val();
				dir = replace_dir(dir); 
				$('#NewFolderDir').val(dir);
				$('#ShowFile').modal('hide');	
				$('#NewFolder').modal('show');	
				$( "#NewFolderDir" ).focus();					
			 };
			 
			 function SetUploadFileModalattr()
			 {
				dir = $('#directory').val();
				dir = replace_dir(dir); 
				$('#UploadFileDir').val(dir);
				$('#inputFileUpload').val('');
				$("#UploadFileSize").html('');	
				$('#ShowFile').modal('hide');	
				$("#FileUploadBtn").attr("disabled", "disabled");
				$('#maxFileSize').html( formatFileSize(maxFileSize) );	
				$('#FileUploadLabelsuccess').html('');
				$('#UploadFile').modal('show');				
			 };
			 
			  function SetCopyFileModalattr(dir)
			 {
		
				dir = replace_dir(dir); 
				//var filename = SplitFileName(dir.split("&")[0],"/"); 
				var filename = dir.split("&")[0]; 
				//var filename = filename.split("/")[filename.split("/").length-1]+'/'; 
				$('#FromFolderDir').val(dir);
				$('#ToFolderInput').val(filename); //filename.slice( 0, filename.lastIndexOf("/"))+'/'
				$('#ShowFile').modal('hide');	
				$('#CopyFolder').modal('show');		
				$( "#ToFolderInput" ).focus();				
			 };
			 
			 function SetZipFileModalattr(dir)
			 {
		
				dir = replace_dir(dir); 
				//var filename = ; 			
				$('#Zipdir').val(dir);
				var filename = dir.split("&")[0]; 
                $('#ZipfileName').html(SplitFileName(dir.split("&")[0],"/"));
				$('#FolderUnzipInput').val(filename.slice( 0, filename.lastIndexOf("/"))+'/');
				$('#ShowFile').modal('hide');	
				$('#ZipFile').modal('show');		
				$( "#FolderUnzipInput" ).focus();				
			 };
			 
			 
			  
			 
			 function SetRemoveModalattr(dir)
			 {
				dir = replace_dir(dir); 
	            var filename = SplitFileName(dir.split("&")[0],"/"); 
				$('#RemoveInput').val(filename);$('#Removedir').val(dir);$('#RemovefileName').html(filename);
				$('#ShowFile').modal('hide');	
				$('#Remove').modal('show');				
			 };

	        function getExt(filename)
	        {
			  return filename.substr(filename.lastIndexOf('.')+1).toLowerCase();
		      //return filename.split('.').pop();
		    }
			
			function SplitFileName(dir,split)
			{
				var file_name_array = dir.split(split);
				return file_name_array[file_name_array.length - 1];
			}
	
			  function SetShowFileModalattr(dir)
			 {
				 $("#FileWriteBtn").hide();
				 dir = replace_dir(dir); 
				 if (dir.indexOf("#") !=-1) 
					 var filename = SplitFileName(dir,"#");
				 else
					 var filename = SplitFileName(dir,"/");

                $('#filenameInput').val(filename);
				// var dir = file_name_array[file_name_array.length - 2];
				$('.nav-tabs a[href="#_browse"').tab('show');
				$("#listFolderFiles").html('');
                $("#HrefBrowse").html('<?php echo $lang[3];?>');
				$("#HrefTree").html('');
			
				$("#Result").html('<center><br><br><span class="Loading"></span><br><br><?php echo $lang[35]?></center>');
	            $('#filenameDir').val(dir);$('#imgUrl').html(filename);
				$('#ShowFile').modal('show');	
				
			if(filename =='directory'){
				
				$("#HrefTree").html('<?php echo $lang[39];?>');
				$("#HrefBrowse").html('<?php echo $lang[18];?>');
				$.getJSON("?table&dir="+dir+"&#directory", function(result){ $("#Result").html(result.table); $('#imgUrl').html('#<?php echo $lang[18]; ?>');});
			   $("#listFolderFiles").html('<li><center><span class="Loading"></span><br><br><?php echo $lang[35]?></center></li>');			   
			   $.get("?listFolderFiles&dir="+dir, function(data){
			      $("#listFolderFiles").html(data);
	              $('.treeview').treeview();
    
			   });

		  
					return;
			};
			
			    if( $.inArray(getExt(filename), ImgTypes  )!==-1)
				{
					$("#Result").html('<center><br><img src="'+dir+'" class="img-rounded img-responsive" alt=""></center>'); 
					return;
				};
					
					
				if( $.inArray(getExt(filename), FileTypes  )!==-1 || FileTypes.length ==0 ) {
				
					$.get("?read="+dir, function(result){ 
					 $("#FileWriteBtn").show();
					 $('#FileWriteLabelsuccess').html('');
                     $("#FileWriteBtn").removeAttr("disabled");
                     $("#Result").html('<input id="FileTxt_OK" type="hidden" ><textarea id="FileTxt" class="form-control" rows="15" style="border-top: 0px ; box-shadow: inset 0 0px 1px rgba(0,0,0,.075);border-top-left-radius: 0px; ">'+escapeTags(result)+'</textarea>'); 
					});	
					return;
				};
				
					
						
			 };
			 
			 
			 
			 function writeAndContent() 
			 { 
			 
			  if( !$('#FileTxt_OK').length ) {$("#FileWriteBtn").attr("disabled", "disabled"); $('#FileWriteLabelsuccess').html('<?php echo $lang[33]?>'); return ;}
			 
			 
			   $("#FileTxt").attr("disabled", "disabled"); $("#FileWriteBtn").attr("disabled", "disabled");
			   $('#FileWriteLabelsuccess').html('<?php echo $lang[17]; ?>');		
			   dir = replace_dir($('#filenameDir').val()); 
			   txtData = $('#FileTxt').val();

			   $.post( "?write", { write: dir, txt: txtData } , function( data,status ) {
              
			  if(status=='success'){
				$('#ShowFile').modal('hide'); 
				$('#FileWriteLabelsuccess').html('');
				$('#FileTxt').val('');
			  } else 
				$('#FileWriteLabelsuccess').html('<?php echo $lang[33]?>');
			
                $("#FileTxt").removeAttr("disabled"); $("#FileWriteBtn").removeAttr("disabled");
		       
			   delete txtData; 

			   });
		
             };
			 
			 
			 function renameAndContent() 
			 { 
			   $("#renameInput").attr("disabled", "disabled");
			   $('#RenameLabelsuccess').html('<?php echo $lang[17]; ?>');		
			   dir = replace_dir($('#renameDir').val()); 
			   $.getJSON("?rename="+dir+"&table&newrename="+$('#renameInput').val(), function(data){
	           $("#content").html(data.table);
			   $('#alert').html(data.alert);		
	           $('#Rename').modal('hide');
               $("#renameInput").removeAttr("disabled");
		       $('#RenameLabelsuccess').html('');
			   $('#renameInput').val('');
			   
	         });	
  
             };
			 
			 
			
			function newfolderAndContent()
			{
			   $('#NewFolderLabelsuccess').html('<?php echo $lang[17]; ?>');	
               dir = replace_dir($('#NewFolderDir').val()); 			 
			   $.getJSON("?newfolder="+$('#NewFolderInput').val()+"&table&dir="+dir, function(data){$("#content").html(data.table);$('#alert').html(data.alert); $('#NewFolderLabelsuccess').html('');$('#NewFolderInput').val('');$('#NewFolder').modal('hide');});					  
			}

		
			function RemoveAndContent()
			{
			   $('#RemoveLabelsuccess').html('<?php echo $lang[17]; ?>');		
			   dir = replace_dir($('#Removedir').val()); 
			   $.getJSON("?Remove="+dir+"&table", function(data){$("#content").html(data.table); $('#alert').html(data.alert);$('#RemoveLabelsuccess').html('');$('#Remove').modal('hide');});					  
			}
			
			 function copyAndContent() 
			 { 

			   $("#ToFolderInput").attr("disabled", "disabled");
			   $('#CopyLabelsuccess').html('<?php echo $lang[17]; ?>');		
			   dir = replace_dir($('#FromFolderDir').val()); 
			   $.getJSON("?copy="+dir+"&table&to="+$('#ToFolderInput').val(), function(data){
	           $("#content").html(data.table);
			   $('#alert').html(data.alert);		
	           $('#CopyFolder').modal('hide');
               $("#ToFolderInput").removeAttr("disabled");
		       $('#CopyLabelsuccess').html('');
			   $('#ToFolderInput').val('');
			   
	         });	
             };
			 
			 
			  	 function zipAndContent() 
			 { 

			  $("#ZipLoad").html('<center><br><br><span class="Loading"></span><br><br><?php echo $lang[35]?></center>');
			   $("#FolderUnzipInput").attr("disabled", "disabled");
			   $('#ZipLabelsuccess').html('<?php echo $lang[17]; ?>');		
			   dir = replace_dir($('#Zipdir').val()); 
			   $.getJSON("?unzip="+dir+"&table&to="+$('#FolderUnzipInput').val(), function(data){
	           $("#content").html(data.table);
			   $('#alert').html(data.alert);		
	           $('#ZipFile').modal('hide');
               $("#FolderUnzipInput").removeAttr("disabled");
		       $('#ZipLabelsuccess').html('');
			   $('#FolderUnzipInput').val('');
			   $("#ZipLoad").html('');
	         });	
  
             };
			 delete LoadingHtml; 
			 /*
			 for ( var i in window ) {
              console.log(i, typeof window[i], window[i]);
	         }*/
        </script>
		</div>
    </body>
    </html>
	<?php 
	// free memory
	unset($lang);
	unset($icon);
	unset($_extensions);
	
	unset($directory);
	unset($page);
	unset($total_pages);
	unset($LoginDialog);
	unset($login_user);
	unset($login_pass);
	unset($is_rtl);
	unset($units);
	unset($charset);
	unset($_maxFileSize);
    unset($_SERVER); unset($_SESSION);unset($_COOKIE);unset($_GET);  unset($_POST);unset($_FILES);unset($_ENV); unset($_REQUEST); 
	/*
	echo  memory_get_usage();
	$arr = get_defined_vars();
	
	echo '<pre>';
	print_r($arr);
	echo '</pre>';*/
	?>
<!--<div class="navbar navbar-default  navbar-fixed-bottom" role="navigation">
    <div class="container text-center">
        <p class="navbar-text col-md-12 col-sm-12 col-xs-12">&copy; onexite</p>
    </div>
    </div>-->localization/ne_NP/labels.inc000064400000030072151727150570012204 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product मा स्वागत छ';
$labels['username'] = 'प्रयोगकर्ताको नाम';
$labels['password'] = 'प्रवेश शब्द';
$labels['server'] = 'सर्भर';
$labels['login'] = 'लगइन गर्नुहोस्';
$labels['logout'] = 'लगआउट गर्नुहोस्';
$labels['mail'] = 'ई-मेल';
$labels['settings'] = 'व्यक्तिगत रोजाईहरु';
$labels['addressbook'] = 'ठेगाना पुस्तिका';
$labels['inbox'] = 'प्राप्ति मञ्जूषा';
$labels['drafts'] = 'ड्राफ्टहरू';
$labels['sent'] = 'पठईएका मेलहरु';
$labels['trash'] = 'रद्दी टोकरी';
$labels['junk'] = 'स्पाम';
$labels['subject'] = 'विषय';
$labels['from'] = 'प्रेषक';
$labels['to'] = 'प्रापक';
$labels['cc'] = 'बोधार्थ';
$labels['bcc'] = 'गुप्त बोधार्थ';
$labels['replyto'] = 'लाई-जवाफ';
$labels['followupto'] = 'यसलाई अनुसरण गर्नुहोस्';
$labels['date'] = 'तारिख';
$labels['size'] = 'नाप';
$labels['priority'] = 'प्राथमिकता';
$labels['organization'] = 'संस्था';
$labels['readstatus'] = 'पढेको अवस्था';
$labels['mailboxlist'] = 'फोल्डरहरु';
$labels['messagesfromto'] = 'मेलहरु $from बाट $to सम्म, $count मध्यबाट';
$labels['threadsfromto'] = 'थ्रेडहरु $from बाट $to सम्म, $count मध्यबाट';
$labels['messagenrof'] = '$nr नम्बर मेल, $count मध्यबाट';
$labels['fromtoshort'] = '$from - $to, $count मध्यबाट';
$labels['copy'] = 'प्रतिलिपि गर्नुहोस्';
$labels['move'] = 'सार्नुहोस';
$labels['moveto'] = 'यहाँ सार्नुहोस';
$labels['download'] = 'डाऊनलोड';
$labels['filename'] = 'फाईलको नाम';
$labels['filesize'] = 'फाईलको नाप';
$labels['addtoaddressbook'] = 'ठेगाना पुस्तिकामा भर्नुहोस';
$labels['sun'] = 'आइत';
$labels['mon'] = 'सोम';
$labels['tue'] = 'मंगल';
$labels['wed'] = 'बुध';
$labels['thu'] = 'विहि';
$labels['fri'] = 'शुक';
$labels['sat'] = 'शनि';
$labels['sunday'] = 'आइतवार';
$labels['monday'] = 'सोमवार';
$labels['tuesday'] = 'मंगलवार';
$labels['wednesday'] = 'बुधवार';
$labels['thursday'] = 'विहिवार';
$labels['friday'] = 'शुक्रवार';
$labels['saturday'] = 'शनिवार';
$labels['jan'] = 'जनवरी';
$labels['feb'] = 'फेब्रुवरी';
$labels['mar'] = 'मार्च';
$labels['apr'] = 'अप्रिल';
$labels['may'] = 'मई';
$labels['jun'] = 'जुन';
$labels['jul'] = 'जुलाई';
$labels['aug'] = 'अगस्ट';
$labels['sep'] = 'सेप्टेम्बर';
$labels['oct'] = 'अक्टोबर';
$labels['nov'] = 'नोभेम्बर';
$labels['dec'] = 'डिसेम्बर';
$labels['longjan'] = 'जनवरी';
$labels['longfeb'] = 'फेब्रुवरी';
$labels['longmar'] = 'मार्च';
$labels['longapr'] = 'अप्रिल';
$labels['longmay'] = 'मई';
$labels['longjun'] = 'जुन';
$labels['longjul'] = 'जुलाई';
$labels['longaug'] = 'अगस्ट';
$labels['longsep'] = 'सेप्टेम्बर';
$labels['longoct'] = 'अक्टोबर';
$labels['longnov'] = 'नोभेम्बर';
$labels['longdec'] = 'डिसेम्बर';
$labels['today'] = 'आज';
$labels['refresh'] = 'ताजा पार्नुहोस्';
$labels['checkmail'] = 'नया मेल खोज्नुहोस';
$labels['compose'] = 'रचना गर्नुहोस्';
$labels['writenewmessage'] = 'नया मेल लेख्नुहोस';
$labels['reply'] = 'जवाफ दिनुहोस्';
$labels['replytomessage'] = 'प्रेषकलाई जवाफ दिनुहोस';
$labels['replytoallmessage'] = 'प्रेषक लगायत सबैलाई जवाफ दिनुहोस';
$labels['replyall'] = 'सबैलाई जवाफ दिनुहोस';
$labels['replylist'] = 'जवाफ तालिका';
$labels['forward'] = 'फरवार्ड गर्नुहोस्';
$labels['forwardinline'] = 'आन्तरिक पंक्तिमा फरवार्ड गर्नुहोस';
$labels['forwardattachment'] = 'एट्याचमेन्ट जसरी फरवार्ड गर्नुहोस';
$labels['forwardmessage'] = 'मेल अगाडि पठाउनुहोस';
$labels['deletemessage'] = 'रद्दी टोकरीमा हाल्नुहोस';
$labels['movemessagetotrash'] = 'सन्देशलाई रद्दी टोकरीमा सार्नुहोस';
$labels['printmessage'] = 'यो सन्देशलाई मुद्रण गर्नुहोस्';
$labels['previousmessage'] = 'पछाडिको सन्देश देखाउनुहोस';
$labels['firstmessage'] = 'पहलो सन्देश देखाउनुहोस';
$labels['nextmessage'] = 'अगाडिको सन्देश देखाउनुहोस';
$labels['lastmessage'] = 'अन्तिम सन्देश देखाउनुहोस';
$labels['backtolist'] = 'सन्देश सूची देखाउनुहोस';
$labels['viewsource'] = 'श्रोत देखाउनुहोस';
$labels['mark'] = 'चिन्ह लगाउनुहोस्';
$labels['markmessages'] = 'सन्देशमा चिन्ह लगाउनुहोस्';
$labels['more'] = 'अझ धेरै';
$labels['back'] = 'पछाडि';
$labels['options'] = 'विकल्पहरू';
$labels['select'] = 'चयन गर्नुहोस्';
$labels['all'] = 'सबै';
$labels['none'] = 'हैन';
$labels['unread'] = 'नपढिएका |';
$labels['nonesort'] = 'हैन';
$labels['compact'] = 'छोटो गर्नुहोस';
$labels['empty'] = 'खाली गर्ने';
$labels['quota'] = 'डिस्कको उपभोग';
$labels['unknown'] = 'अज्ञात';
$labels['unlimited'] = 'अनगिन्ति';
$labels['quicksearch'] = 'स्फुर्ति खोज';
$labels['resetsearch'] = 'पन: खोज';
$labels['sendmessage'] = 'तुरुन्तै मेल पठाउनुहोस';
$labels['savemessage'] = 'ड्राफ्ट जोगाउनुहोस';
$labels['addattachment'] = 'फाइल टाँस्नुहोस';
$labels['charset'] = 'क्यारेक्टर सेट';
$labels['editortype'] = 'सम्पादकको प्रकार';
$labels['returnreceipt'] = 'फिर्ति रसीद';
$labels['checkspelling'] = 'हिज्जे जाँच';
$labels['resumeediting'] = 'पुन: सम्पादन गर्नुहोस';
$labels['revertto'] = 'पहिलेको स्थितीमा जानुहोस';
$labels['attachments'] = 'टाँसिएका फाईलहरु';
$labels['upload'] = 'अपलोड';
$labels['close'] = 'बन्द';
$labels['low'] = 'कम';
$labels['lowest'] = 'सबै भन्दा कम';
$labels['normal'] = 'साधारण';
$labels['high'] = 'उच्च';
$labels['highest'] = 'उच्चतम';
$labels['nosubject'] = '(बिना विषयको)';
$labels['showimages'] = 'चित्र देखाउनुहोस';
$labels['htmltoggle'] = 'ऐच-टी-ऐम-एल (HTML)';
$labels['plaintoggle'] = 'सादा अक्षर';
$labels['name'] = 'देखाउने नाम';
$labels['firstname'] = 'पहिलो नाम';
$labels['surname'] = 'थर';
$labels['email'] = 'ई-मेल';
$labels['editcontact'] = 'सम्पर्क सच्याउनुहोस';
$labels['edit'] = 'सच्याउनुहोस';
$labels['cancel'] = 'खारेज गर्नुहोस';
$labels['save'] = 'जोगाउनुहोस';
$labels['delete'] = 'मेटाउनुहोस';
$labels['deletecontact'] = 'छानिएका सम्पर्कहरु मेटाउनुहोस';
$labels['composeto'] = 'मेल लेखी पठाउनुहोस';
$labels['contactsfromto'] = 'सम्पर्कहरु $from बाट $to सम्म, $count मध्यबाट';
$labels['print'] = 'छाप्नुहोस';
$labels['export'] = 'ऐक्स्पोर्ट गर्नुहोस';
$labels['previouspage'] = 'पहिलेको सेट देखाउनुहोस';
$labels['firstpage'] = 'पहिलो सेट देखाउनुहोस';
$labels['nextpage'] = 'अर्को सेट देखाउनुहोस';
$labels['lastpage'] = 'अन्तिम सेट देखाउनुहोस';
$labels['groups'] = 'समूहहरु';
$labels['personaladrbook'] = 'व्यक्तिगत ठेगानाहरु';
$labels['settingsfor'] = 'तय';
$labels['preferences'] = 'रोजाइहरु';
$labels['userpreferences'] = 'यूसरका रोजाइहरु';
$labels['editpreferences'] = 'यूसरका रोजाइहर सम्पादन गर्नुहोस';
$labels['identities'] = 'पहिचानहरु';
$labels['preferhtml'] = 'ऐच-टी-ऐम-ऐल(HTML) देखाउनुहोस';
$labels['htmlmessage'] = 'ऐच-टी-ऐम-ऐल (HTML) रूपका मेल';
$labels['prettydate'] = 'सुन्दर तारिख';
$labels['setdefault'] = 'तय गर्नुहोस';
$labels['language'] = 'भाषा';
$labels['timezone'] = 'समय क्षेत्र';
$labels['pagesize'] = 'हरेक पन्नामा यति';
$labels['signature'] = 'हस्ताक्षर';
$labels['dstactive'] = 'प्रकाश बचाव';
$labels['htmleditor'] = 'ऐच-टी-ऐम-एल (HTML) मेल लखन गर्नुहोस';
$labels['htmlsignature'] = 'ऐच-टी-ऐम-एल (HTML) हस्ताक्षर';
$labels['previewpane'] = 'पूर्व दृष्य देखाउनुहोस';
$labels['autosavedraft'] = 'स्वत ड्राफ्ट जोगाउनुहोस';
$labels['never'] = 'काहिलै नहुने';
$labels['folder'] = 'फोल्डर';
$labels['folders'] = 'फोल्डरहरु';
$labels['foldername'] = 'फोल्डरको नाम';
$labels['subscribed'] = 'सबस्क्राईब गरियो';
$labels['create'] = 'बनाउनुहोस';
$labels['createfolder'] = 'नया फोलडर बनाउनुहोस';
$labels['managefolders'] = 'फोलडर व्यवस्थित गर्नुहोस';
$labels['sortby'] = 'यसरी तय गर्नुहोस';
$labels['sortasc'] = 'पहिलो देखि अन्तिम सम्म तय गर्नुहोस';
$labels['sortdesc'] = 'अन्तिम देखि पहिलो सम्म तय गर्नुहोस';
localization/ne_NP/messages.inc000064400000013675151727150570012563 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['loginfailed']  = 'लागईन हुन पाएन';
$messages['cookiesdisabled'] = 'तपाईको ब्राऊसरले कुकी स्वीकार गारिरहेको छैन';
$messages['sessionerror'] = 'सत्र समाप्त वा अवैद्य';
$messages['storageerror'] = 'सर्वर संग सम्पर्क हुन पाएन';
$messages['nomessagesfound'] = 'यो मेलबक्स मा कुनै मेल छैन';
$messages['loading'] = 'लोड भईरहेको छ...';
$messages['loadingdata'] = 'डाटा लोड भईरहेको छै...';
$messages['checkingmail'] = 'नया मेलको खोजी भईरहेको छ...';
$messages['sendingmessage'] = 'मेल पठाईदै रहेको छ...';
$messages['messagesent'] = 'मेल सफल्तापूर्वक पठाईयो';
$messages['savingmessage'] = 'मेल जोगाईदै छ...';
$messages['messagesaved'] = 'मेल ड्राफ्ट फोल्डरमा जोगाईयो';
$messages['successfullysaved'] = 'सफल्तापूर्वक जोगाईयो';
$messages['addedsuccessfully'] = 'सम्पर्क पुस्तिकामा सफल्तापूर्वक सम्पर्क प्रविष्ट गारियो';
$messages['blockedimages'] = 'तपाईको प्राईवेसी को लागि तथा अन्य स्पामबाट बच्नकोलागि यो मेलमा चित्रहुरु देखाईएका छैनन्।';
$messages['encryptedmessage'] = 'माफ गर्नुहोसे, यो मेल ईन्क्रिफ्ट गरिएको रूपमा छ, त्यसैले देखाउन सकिदैन!';
$messages['nocontactsfound'] = 'कुनै सम्पर्क भेटिएन';
$messages['contactnotfound'] = 'अनुरोध गारिएको सम्पर्क भेटिएन';
$messages['sendingfailed'] = 'मेल पठाउन सकिएन';
$messages['errormoving'] = 'मेल सार्न सकिएन';
$messages['errordeleting'] = 'मेल मेटाउन सकिएन';
$messages['deletecontactconfirm']  = 'तापाईले छान्नुभएको सम्पर्कहरु, साँचै मेट्न चहानुहुन्छ?';
$messages['deletemessagesconfirm'] = 'तापाईले छान्नु भएको मेलहरु, साँचै मेट्न चहानुहुन्छ?';
$messages['deletefolderconfirm']  = 'तापाईले साँचै यो फोल्डर मेट्न चहानु हुन्छ?';
$messages['purgefolderconfirm']  = 'तापाईले साँचै यो फोल्डरमा भएका सबै मेलहरु मेट्न चहानुहुन्छ?';
$messages['formincomplete'] = 'फर्म पूर्ण रुपमा भरिएको छैन';
$messages['noemailwarning'] = 'कृपया वैद्य ई-मेल भर्नुहोस';
$messages['nonamewarning']  = 'कृपया नाम भर्नुहोस';
$messages['nopagesizewarning'] = 'कृपया पन्नाको नाप भर्नुहोस';
$messages['norecipientwarning'] = 'कृपया कम-से-कम एउटा प्रापकको विवरण भर्नुहोस';
$messages['nosubjectwarning']  = 'मेलको कुनै विषय तोकिएको छैनै। केहि तोक्न चहानुहुन्छ ?';
$messages['nobodywarning'] = 'बिना केहि लेखि पठाउने?';
$messages['nosearchname'] = 'कृपया सम्पर्कको नाम या ई-मेल भर्नुहोस';
$messages['searchsuccessful'] = '$nr मेलहरु पाइयो';
$messages['searchnomatch'] = 'खोज असफल रहयो';
$messages['searching'] = 'खोजि भईरहेको छ...';
$messages['checking'] = 'जाँच भईरहेको छ...';
$messages['nospellerrors'] = 'कुनै गलत हिज्जे फेला परेनन्';
$messages['folderdeleted'] = 'फोल्डर सफल्तापूर्वक मेटियो';
$messages['deletedsuccessfully'] = 'सफल्तापूर्वक मेटियो';
$messages['converting'] = 'मेलबाट फोर्माटिङ हटाईदै छ...';
$messages['messageopenerror'] = 'सर्वरबाट मेल लोड हुन सकेन';
$messages['fileuploaderror'] = 'फाईल अपलोड हुन असफल';
$messages['filesizeerror'] = 'अपलोड गरिएको फाईल हद $size भन्दा ठूलो छ';
$messages['sourceisreadonly'] = 'यो ठेगाना को श्रोत पढ्नको लागि मात्र उपलब्ध छ';
$messages['errorsavingcontact'] = 'स्मपर्कको ठेगाना जोगाउन सकिएन';
localization/ar/timezones.inc000064400000017244151727150570012370 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:africa'] = 'إفريقيا';
$labels['tz:africa:abidjan'] = 'أبيدجان';
$labels['tz:africa:accra'] = 'آكرا';
$labels['tz:africa:addis_ababa'] = 'أديس أبيبا';
$labels['tz:africa:algiers'] = 'الجزائر';
$labels['tz:africa:asmara'] = 'أسمرا';
$labels['tz:africa:bamako'] = 'باماكو';
$labels['tz:africa:banjul'] = 'بنجول';
$labels['tz:africa:bissau'] = 'بيساو';
$labels['tz:africa:brazzaville'] = 'برازافيل';
$labels['tz:africa:cairo'] = 'القاهرة';
$labels['tz:africa:casablanca'] = 'الدار البيضاء';
$labels['tz:africa:ceuta'] = 'سبة';
$labels['tz:africa:conakry'] = 'كوناكري';
$labels['tz:africa:dakar'] = 'داكار';
$labels['tz:africa:dar_es_salaam'] = 'دار السلام';
$labels['tz:africa:djibouti'] = 'جيبوتي';
$labels['tz:africa:douala'] = 'دوالا';
$labels['tz:africa:el_aaiun'] = 'العيون';
$labels['tz:africa:harare'] = 'هراري';
$labels['tz:africa:johannesburg'] = 'جوهانسبورغ';
$labels['tz:africa:juba'] = 'جوبا';
$labels['tz:africa:kampala'] = 'كامبالا';
$labels['tz:africa:khartoum'] = 'الخرطوم';
$labels['tz:africa:kigali'] = 'كيغالي';
$labels['tz:africa:kinshasa'] = 'كينشاسا';
$labels['tz:africa:lagos'] = 'لاغوس';
$labels['tz:africa:libreville'] = 'لبير فيل';
$labels['tz:africa:lome'] = 'لومي';
$labels['tz:africa:luanda'] = 'لواندا';
$labels['tz:africa:lubumbashi'] = 'لوبومباشي';
$labels['tz:africa:lusaka'] = 'لوزاكا';
$labels['tz:africa:malabo'] = 'مالابو';
$labels['tz:africa:maputo'] = 'مابوتو';
$labels['tz:africa:mbabane'] = 'مبابان';
$labels['tz:africa:mogadishu'] = 'موغاديشيو';
$labels['tz:africa:monrovia'] = 'منروفيا';
$labels['tz:africa:nairobi'] = 'نايروبي';
$labels['tz:africa:ndjamena'] = 'نجامينا';
$labels['tz:africa:niamey'] = 'نيامي';
$labels['tz:africa:nouakchott'] = 'نواكشوط';
$labels['tz:africa:ouagadougou'] = 'واغادوغو';
$labels['tz:africa:tripoli'] = 'طرابلس';
$labels['tz:africa:tunis'] = 'تونس';
$labels['tz:america'] = 'أمريكا';
$labels['tz:america:anchorage'] = 'أونكوراج';
$labels['tz:america:halifax'] = 'هاليفاكس';
$labels['tz:america:indiana'] = 'الإنديانا';
$labels['tz:america:indiana:petersburg'] = 'بيترزبرغ';
$labels['tz:america:indiana:winamac'] = 'ويناماك';
$labels['tz:america:jamaica'] = 'جامايكا';
$labels['tz:america:kentucky'] = 'كانتوكي';
$labels['tz:america:la_paz'] = 'لاباز';
$labels['tz:america:lima'] = 'ليما';
$labels['tz:america:los_angeles'] = 'لوس أنجلس';
$labels['tz:america:manaus'] = 'ماناووس';
$labels['tz:america:martinique'] = 'مارتينيك';
$labels['tz:america:montevideo'] = 'مونتيفيديو';
$labels['tz:america:montserrat'] = 'مونسيراط';
$labels['tz:america:new_york'] = 'نيويورك';
$labels['tz:america:panama'] = 'بانما';
$labels['tz:america:paramaribo'] = 'باراماريبو';
$labels['tz:america:phoenix'] = 'فينيكس';
$labels['tz:america:port-au-prince'] = 'بور أو برانس';
$labels['tz:america:puerto_rico'] = 'بورتو ريكو';
$labels['tz:america:regina'] = 'ريجينا';
$labels['tz:america:santiago'] = 'سان تياغو';
$labels['tz:america:sao_paulo'] = 'ساو باولو';
$labels['tz:america:tijuana'] = 'تيخوانا';
$labels['tz:america:toronto'] = 'تورونطو';
$labels['tz:america:tortola'] = 'تورتولا';
$labels['tz:america:vancouver'] = 'فانكوفر';
$labels['tz:america:winnipeg'] = 'وينيباغ';
$labels['tz:antarctica:mawson'] = 'ماوسن';
$labels['tz:antarctica:palmer'] = 'بالمر';
$labels['tz:antarctica:troll'] = 'طرول';
$labels['tz:antarctica:vostok'] = 'فوسطوك';
$labels['tz:asia'] = 'آسيا';
$labels['tz:asia:aden'] = 'عدن';
$labels['tz:asia:amman'] = 'عمان';
$labels['tz:asia:baghdad'] = 'بغداد';
$labels['tz:asia:bahrain'] = 'البحرين';
$labels['tz:asia:bangkok'] = 'بانكوك';
$labels['tz:asia:beirut'] = 'بيروت';
$labels['tz:asia:brunei'] = 'بروناي';
$labels['tz:asia:colombo'] = 'كولومبو';
$labels['tz:asia:damascus'] = 'دمشق';
$labels['tz:asia:dubai'] = 'دبي';
$labels['tz:asia:famagusta'] = 'فاماغوستا';
$labels['tz:asia:gaza'] = 'غزة';
$labels['tz:asia:hong_kong'] = 'هونغ كونغ';
$labels['tz:asia:jakarta'] = 'جاكارتا';
$labels['tz:asia:jayapura'] = 'جايابورا';
$labels['tz:asia:kabul'] = 'كابل';
$labels['tz:asia:karachi'] = 'كراتشي';
$labels['tz:asia:kolkata'] = 'كولكاتا';
$labels['tz:asia:kuala_lumpur'] = 'كوالالمبور';
$labels['tz:asia:kuwait'] = 'الكويت';
$labels['tz:asia:macau'] = 'ماكاو';
$labels['tz:asia:manila'] = 'مانيلا';
$labels['tz:asia:muscat'] = 'مسقط';
$labels['tz:asia:nicosia'] = 'نيقوسيا';
$labels['tz:asia:qatar'] = 'قطر';
$labels['tz:asia:riyadh'] = 'الرياض';
$labels['tz:asia:samarkand'] = 'سمرقند';
$labels['tz:asia:shanghai'] = 'شانغهاي';
$labels['tz:asia:singapore'] = 'سانغفورة';
$labels['tz:asia:taipei'] = 'تاي باي';
$labels['tz:asia:tehran'] = 'طهران';
$labels['tz:asia:tokyo'] = 'طوكيو';
$labels['tz:asia:vladivostok'] = 'فلاديفوسطوك';
$labels['tz:atlantic:reykjavik'] = 'ريكيافيك';
$labels['tz:australia'] = 'أستراليا';
$labels['tz:australia:melbourne'] = 'ميلبورن';
$labels['tz:australia:sydney'] = 'سيدني';
$labels['tz:europe'] = 'أوروبا';
$labels['tz:europe:amsterdam'] = 'أمستيردام';
$labels['tz:europe:andorra'] = 'أندورا';
$labels['tz:europe:athens'] = 'أثينا';
$labels['tz:europe:belgrade'] = 'بلغراد';
$labels['tz:europe:berlin'] = 'برلين';
$labels['tz:europe:bratislava'] = 'براتيسلافا';
$labels['tz:europe:brussels'] = 'بروكسل';
$labels['tz:europe:bucharest'] = 'بوخاريست';
$labels['tz:europe:budapest'] = 'بودابست';
$labels['tz:europe:dublin'] = 'دوبلين';
$labels['tz:europe:gibraltar'] = 'جبل طارق';
$labels['tz:europe:helsinki'] = 'هيلسينكي';
$labels['tz:europe:istanbul'] = 'إسطنبول';
$labels['tz:europe:kiev'] = 'كييف';
$labels['tz:europe:lisbon'] = 'لشبونة';
$labels['tz:europe:london'] = 'لندن';
$labels['tz:europe:luxembourg'] = 'اللوكسومبورغ';
$labels['tz:europe:madrid'] = 'مادريد';
$labels['tz:europe:malta'] = 'مالطا';
$labels['tz:europe:monaco'] = 'موناكو';
$labels['tz:europe:moscow'] = 'موسكو';
$labels['tz:europe:oslo'] = 'أوسلو';
$labels['tz:europe:paris'] = 'باريس';
$labels['tz:europe:rome'] = 'روما';
$labels['tz:europe:sarajevo'] = 'ساراييفو';
$labels['tz:europe:vatican'] = 'الفاتيكان';
$labels['tz:europe:vienna'] = 'فيينا';
$labels['tz:europe:warsaw'] = 'فارسوفيا';
$labels['tz:europe:zagreb'] = 'زاغرب';
$labels['tz:pacific:midway'] = 'ميدواي';
$labels['tz:pacific:tahiti'] = 'تاهيتي';
localization/ar/labels.inc000064400000064032151727150570011612 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'مرحباً بكم في $product';
$labels['username'] = 'اسم المستخدم';
$labels['password'] = 'كلمة المرور';
$labels['server'] = 'الخادم';
$labels['login'] = 'تسجيل الدخول';
$labels['menu'] = 'القائمة';
$labels['logout'] = 'تسجيل الخروج';
$labels['mail'] = 'البريد';
$labels['settings'] = 'الإعدادات';
$labels['addressbook'] = 'دفتر العناوين';
$labels['inbox'] = 'البريد الوارد';
$labels['drafts'] = 'المسودات';
$labels['sent'] = 'البريد المرسل';
$labels['trash'] = 'المهملات';
$labels['junk'] = 'الرسائل غير المرغوب فيها';
$labels['subject'] = 'الموضوع';
$labels['from'] = 'المرسل';
$labels['sender'] = 'المُرسِل';
$labels['to'] = 'المستقبل';
$labels['cc'] = 'نسخة إلي';
$labels['bcc'] = 'نسخة مخفية الوجهة';
$labels['replyto'] = 'الرد إلى';
$labels['followupto'] = 'Mail-Followup-To';
$labels['date'] = 'التاريخ';
$labels['size'] = 'الحجم';
$labels['priority'] = 'الأولوية';
$labels['organization'] = 'المنظمة';
$labels['readstatus'] = 'حالة القراءة';
$labels['listoptionstitle'] = 'خيارات القائمة';
$labels['mailboxlist'] = 'مجلدات';
$labels['messagesfromto'] = 'الرسالة $from إلى $to من مجموع $count';
$labels['threadsfromto'] = 'جهات الإتصال $from إلى $to من مجموع $count';
$labels['messagenrof'] = 'الرسالة $nr من $count';
$labels['copy'] = 'نسخ';
$labels['move'] = 'نقل';
$labels['moveto'] = 'نقل إلى...';
$labels['copyto'] = 'النسخ إلى …';
$labels['download'] = 'تنزيل';
$labels['open'] = 'فتح';
$labels['showattachment'] = 'إظهار';
$labels['showanyway'] = 'إظهار ذلك على أي حال';
$labels['filename'] = 'اسم الملف';
$labels['filesize'] = 'حجم الملف';
$labels['addtoaddressbook'] = 'إضافة إلى دفتر العناوين';
$labels['sun'] = 'أحد';
$labels['mon'] = 'إثنين';
$labels['tue'] = 'ثلاثاء';
$labels['wed'] = 'أربعاء';
$labels['thu'] = 'خميس';
$labels['fri'] = 'جمعة';
$labels['sat'] = 'سبت';
$labels['sunday'] = 'الأحد';
$labels['monday'] = 'الإثنين';
$labels['tuesday'] = 'الثلاثاء';
$labels['wednesday'] = 'الأربعاء';
$labels['thursday'] = 'الخميس';
$labels['friday'] = 'الجمعة';
$labels['saturday'] = 'السبت';
$labels['jan'] = 'يناير';
$labels['feb'] = 'فبراير';
$labels['mar'] = 'مارس';
$labels['apr'] = 'أبريل';
$labels['may'] = 'مايو';
$labels['jun'] = 'يونيو';
$labels['jul'] = 'يوليو';
$labels['aug'] = 'أغسطس';
$labels['sep'] = 'سبتمبر';
$labels['oct'] = 'أكتوبر';
$labels['nov'] = 'نوفمبر';
$labels['dec'] = 'ديسمبر';
$labels['longjan'] = 'يناير';
$labels['longfeb'] = 'فبراير';
$labels['longmar'] = 'مارس';
$labels['longapr'] = 'أبريل';
$labels['longmay'] = 'مايو';
$labels['longjun'] = 'يونيو';
$labels['longjul'] = 'يوليو';
$labels['longaug'] = 'أغسطس';
$labels['longsep'] = 'سبتمبر';
$labels['longoct'] = 'أكتوبر';
$labels['longnov'] = 'نوفمبر';
$labels['longdec'] = 'ديسمبر';
$labels['today'] = 'اليوم';
$labels['refresh'] = 'تحديث';
$labels['checkmail'] = 'التحقق من وجود رسائل جديدة';
$labels['compose'] = 'إنشاء';
$labels['writenewmessage'] = 'إنشاء رسالة جديدة';
$labels['reply'] = 'رد';
$labels['replytomessage'] = 'الرد على المرسل';
$labels['replytoallmessage'] = 'الرد على قائمة أو إلى المرسل وجميع المستلمين';
$labels['replyall'] = 'الرد على الجميع';
$labels['replylist'] = 'الرد على القائمة';
$labels['forward'] = 'إعادة توجيه';
$labels['forwardinline'] = 'تمرير الرسالة ضمنياً';
$labels['forwardattachment'] = 'تمرير الرسالة كمرفق';
$labels['forwardmessage'] = 'تمرير الرسالة';
$labels['bounce'] = 'إعادة الإرسال';
$labels['deletemessage'] = 'حذف الرسالة';
$labels['movemessagetotrash'] = 'انقل الرسالة إلى سلة المهملات';
$labels['printmessage'] = 'أطبع هذه الرسالة';
$labels['previousmessage'] = 'عرض الرسالة السابقة';
$labels['firstmessage'] = 'عرض الرسالة الأولى';
$labels['nextmessage'] = 'عرض الرسالة التالية';
$labels['lastmessage'] = 'عرض الرسالة الأخيرة';
$labels['backtolist'] = 'العودة إلى قائمة الرسائل';
$labels['viewsource'] = 'إظهار المصدر';
$labels['mark'] = 'علامة';
$labels['markmessages'] = 'وسم الرسالة';
$labels['markread'] = 'مقروءة';
$labels['markunread'] = 'غير مقروءة';
$labels['markflagged'] = 'كموْسومة';
$labels['markunflagged'] = 'كغير موْسومة';
$labels['moreactions'] = 'إجراءات إضافية...';
$labels['folders-all'] = 'كافة المجلدات';
$labels['more'] = 'المزيد';
$labels['back'] = 'العودة';
$labels['options'] = 'خيارات';
$labels['composeoptions'] = 'خيارات الكتابة';
$labels['optionsandattachments'] = 'الخيارات والمرفقات';
$labels['actions'] = 'الإجراءات';
$labels['first'] = 'الأول';
$labels['last'] = 'الأخير';
$labels['previous'] = 'السابق';
$labels['next'] = 'التالي';
$labels['select'] = 'تحديد';
$labels['all'] = 'الكل';
$labels['none'] = 'لاشيء';
$labels['currpage'] = 'الصفحة الحالية';
$labels['unread'] = 'غير مقروءة';
$labels['flagged'] = 'موسوم';
$labels['unanswered'] = 'بلا رد';
$labels['deleted'] = 'محذوف';
$labels['undeleted'] = 'غير محذوفة';
$labels['forwarded'] = 'المُعاد توجيهها';
$labels['invert'] = 'عكس';
$labels['filter'] = 'تصفية';
$labels['list'] = 'قائمة';
$labels['threads'] = 'تتابعات';
$labels['expand-all'] = 'إظهار الكل';
$labels['expand-unread'] = 'إظهار الغير مقروءة';
$labels['collapse-all'] = 'ضمّ الكل';
$labels['threaded'] = 'متتابع';
$labels['autoexpand_threads'] = 'إظهار تتابعات الرسائل';
$labels['do_expand'] = 'جميع التتابعات';
$labels['expand_only_unread'] = 'فقط مع الرسائل الغير مقروءة';
$labels['fromto'] = 'المرسل/المستلم';
$labels['flag'] = 'وسم';
$labels['attachment'] = 'مرفق';
$labels['nonesort'] = 'لاشيء';
$labels['sentdate'] = 'تاريخ إرسالها';
$labels['arrival'] = 'تاريخ وصولها';
$labels['asc'] = 'تصاعدي';
$labels['desc'] = 'تنازلي';
$labels['listcolumns'] = 'أعمدة السرد';
$labels['listsorting'] = 'أعمدة الترتيب';
$labels['listorder'] = 'طريقة الترتيب';
$labels['listmode'] = 'وضع طريقة السرد';
$labels['layoutlist'] = 'قائمة';
$labels['folderactions'] = 'إجراءات المجلد...';
$labels['compact'] = 'ضغط';
$labels['empty'] = 'تفريغ';
$labels['importmessages'] = 'إستيراد رسائل';
$labels['quota'] = 'المساحة المستخدمة';
$labels['unknown'] = 'مجهول';
$labels['unlimited'] = 'غير محدود';
$labels['quotaused'] = 'المساحة المُستعمَلة';
$labels['quotastorage'] = 'مساحة التخزين';
$labels['quotamessage'] = 'تعداد الرسائل';
$labels['quicksearch'] = 'البحث السريع';
$labels['searchplaceholder'] = 'بحث …';
$labels['resetsearch'] = 'استعادة البحث للافتراضي';
$labels['searchmod'] = 'أماكن البحث';
$labels['msgtext'] = 'كامل الرسالة';
$labels['body'] = 'هيكل الرسالة';
$labels['type'] = 'النوع';
$labels['namex'] = 'الإسم';
$labels['searchscope'] = 'المجال';
$labels['currentfolder'] = 'المجلد الحالي';
$labels['allfolders'] = 'كافة المجلدات';
$labels['openinextwin'] = 'افتح في نافذة جديدة';
$labels['emlsave'] = 'تنزيل (.eml)';
$labels['editasnew'] = 'تعديل كجديد';
$labels['send'] = 'ارسل';
$labels['sendmessage'] = 'إرسال الرسالة الآن';
$labels['savemessage'] = 'حفظ هذه المسودة';
$labels['addattachment'] = 'إرفاق ملف';
$labels['charset'] = 'مجموعة المحارف';
$labels['editortype'] = 'نوع المُحرّر';
$labels['returnreceipt'] = 'ايصال استلام';
$labels['dsn'] = 'تنويه حالة التوصيل';
$labels['mailreplyintro'] = 'كتب $sender في $date:';
$labels['originalmessage'] = 'الرسالة الأساسية';
$labels['selectimage'] = 'إختيار صورة';
$labels['addimage'] = 'إضافة صورة';
$labels['selectmedia'] = 'إختيار فيديو';
$labels['addmedia'] = 'إضافة فيديو';
$labels['encrypt'] = 'تعمية';
$labels['encryptmessage'] = 'تعمية الرسالة';
$labels['importpubkeys'] = 'إستيراد مفاتيح عمومية';
$labels['encryptandsign'] = 'تعمية و توقيع';
$labels['recipient'] = 'المتلقَّي';
$labels['editidents'] = 'تعديل الهويات';
$labels['spellcheck'] = 'التدقيق اﻹملائى';
$labels['checkspelling'] = 'التدقيق الإملائي';
$labels['resumeediting'] = 'متابعة التحرير';
$labels['revertto'] = 'استعادة إلى';
$labels['restore'] = 'إسترجاع';
$labels['restoremessage'] = 'هل تود إسترجاع الرسالة ؟';
$labels['ignore'] = 'تجاهل';
$labels['responses'] = 'الردود';
$labels['manageresponses'] = 'إدارة الردود';
$labels['editresponses'] = 'تعديل الردود';
$labels['responsename'] = 'الإسم';
$labels['attach'] = 'إرفاق';
$labels['attachments'] = 'مرفقات';
$labels['upload'] = 'تحميل';
$labels['close'] = 'إغلاق';
$labels['messageoptions'] = 'خيارات الرسائل...';
$labels['low'] = 'منخض';
$labels['lowest'] = 'الأقل';
$labels['normal'] = 'عادي';
$labels['high'] = 'مرتفع';
$labels['highest'] = 'الأعلى';
$labels['nosubject'] = '(دون موضوع)';
$labels['showimages'] = 'إظهار الصور';
$labels['alwaysshow'] = 'دائماً أظهر الصّور القادمة من $sender';
$labels['isdraft'] = 'هذه مسودّة رسالة';
$labels['andnmore'] = '$nr المزيد ...';
$labels['details'] = 'التفاصيل';
$labels['headers'] = 'الرأسيات';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'نص مجرد';
$labels['savesentmessagein'] = 'احفظ الرسالة المُرسلة في';
$labels['dontsave'] = 'لا تحفظها';
$labels['maxuploadsize'] = 'أقصى حجم للملف هو $size';
$labels['addcc'] = 'أضف CC';
$labels['addbcc'] = 'أضف BCC';
$labels['addreplyto'] = 'أضيف Reply-To';
$labels['addfollowupto'] = 'إضافة Mail-Followup-To';
$labels['mdnrequest'] = 'طلب المرسل إعلامه عند قراءتك لرسالته. هل تود إعلام المرسل؟';
$labels['receiptread'] = 'إيصال الاستلام )بالقراءة)';
$labels['yourmessage'] = 'هذا إيصال بقراءة رسالتك';
$labels['receiptnote'] = 'ملاحظة: يُعلمك هذا الإيصال بأن رسالتك قد ظهرت على جهاز المستقبِل. ليست هناك أية ضمانات أن المستقبل قد قرأ أو فهم محتويات الرسالة.';
$labels['zoomin'] = 'تقريب';
$labels['rotate'] = 'تدوير';
$labels['increaseimage'] = 'تكبير حجم الصورة';
$labels['decreaseimage'] = 'تصغير حجم الصورة';
$labels['rotateimage'] = 'تدوير الصورة';
$labels['showtools'] = 'إظهار أدوات الصور';
$labels['hidetools'] = 'إخفاء أدوات الصور';
$labels['name'] = 'اسم العرض';
$labels['firstname'] = 'الإسم الأول';
$labels['surname'] = 'الإسم الأخير';
$labels['middlename'] = 'الاسم الثاني';
$labels['nameprefix'] = 'السابقة';
$labels['namesuffix'] = 'اللاحقة';
$labels['nickname'] = 'اللقب';
$labels['jobtitle'] = 'المسمى الوظيفي';
$labels['department'] = 'الإدارة';
$labels['gender'] = 'الجنس';
$labels['maidenname'] = 'إسم الزواج';
$labels['email'] = 'البريد الإلكتروني';
$labels['phone'] = 'الهاتف';
$labels['address'] = 'العنوان';
$labels['street'] = 'الشارع';
$labels['locality'] = 'المدينة';
$labels['zipcode'] = 'الرمز البريدي';
$labels['region'] = 'المنطقة';
$labels['country'] = 'الدولة';
$labels['birthday'] = 'تاريخ الميلاد';
$labels['anniversary'] = 'المناسبة السنوية';
$labels['website'] = 'الموقع';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'ملاحظات';
$labels['male'] = 'ذكر';
$labels['female'] = 'أنثى';
$labels['manager'] = 'مدير';
$labels['assistant'] = 'المساعد';
$labels['spouse'] = 'زوجة';
$labels['allfields'] = 'جميع الحقول';
$labels['search'] = 'بحث';
$labels['searchresult'] = 'نتيجة البحث';
$labels['advsearch'] = 'بحث متقدم';
$labels['advanced'] = 'مُتقدم';
$labels['other'] = 'آخر';
$labels['typehome'] = 'المنزل';
$labels['typework'] = 'العمل';
$labels['typeother'] = 'آخر';
$labels['typemobile'] = 'المحمول';
$labels['typemain'] = 'الرئيسي';
$labels['typehomefax'] = 'فاكس المنزل';
$labels['typeworkfax'] = 'فاكس العمل';
$labels['typecar'] = 'السيارة';
$labels['typepager'] = 'الرنان';
$labels['typevideo'] = 'الفيديو';
$labels['typeassistant'] = 'المساعد';
$labels['typehomepage'] = 'الرئيسية';
$labels['typeblog'] = 'المدوّنة';
$labels['typeprofile'] = 'الملف الشخصي';
$labels['addfield'] = 'إضافة حقل...';
$labels['addcontact'] = 'إضافة مراسل';
$labels['editcontact'] = 'تحرير بيانات المراسل';
$labels['contacts'] = 'المراسلين';
$labels['contactproperties'] = 'خواص جهة الإتصال';
$labels['contactnameandorg'] = 'الإسم و المنظمة';
$labels['personalinfo'] = 'المعلومات الشخصية';
$labels['contactphoto'] = 'صورة المُراسِل';
$labels['edit'] = 'تحرير';
$labels['cancel'] = 'إلغاء';
$labels['save'] = 'حفظ';
$labels['delete'] = 'حذف';
$labels['continue'] = 'المواصلة';
$labels['rename'] = 'إعادة التسمية';
$labels['addphoto'] = 'إضافة';
$labels['replacephoto'] = 'استبدال';
$labels['uploadphoto'] = 'ارفع صورة';
$labels['choosefile'] = 'اختر ملفا...';
$labels['choosefiles'] = 'اختر ملفات...';
$labels['newcontact'] = 'إنشاء مراسل جديد';
$labels['deletecontact'] = 'حذف المراسلين المحددين';
$labels['composeto'] = 'إنشاء رسالة إليه';
$labels['contactsfromto'] = 'المراسلون $from إلى $to من $count';
$labels['print'] = 'طباعة';
$labels['export'] = 'تصدير';
$labels['exportvcards'] = 'صدّر المراسلين بنسق vCard';
$labels['newgroup'] = 'إنشاء فريق جديد';
$labels['grouprename'] = 'تغيير اسم المجموعة';
$labels['groupdelete'] = 'حذف المجموعة';
$labels['groupremoveselected'] = 'حذف العنوان المختار من المجموعة';
$labels['previouspage'] = 'عرض المجموعة السابقة';
$labels['firstpage'] = 'عرض المجموعة الأولى';
$labels['nextpage'] = 'عرض المجموعة التالية';
$labels['lastpage'] = 'عرض المجموعة الأخيرة';
$labels['group'] = 'مجموعة';
$labels['groups'] = 'المجموعات';
$labels['personaladrbook'] = 'العناوين الشخصية';
$labels['searchsave'] = 'حفظ البحث';
$labels['searchdelete'] = 'حذف البحث';
$labels['import'] = 'استورد';
$labels['importcontacts'] = 'استورد المراسلين';
$labels['importreplace'] = 'استبدل دفتر العناوين بأكمله';
$labels['done'] = 'تم';
$labels['settingsfor'] = 'إعدادات';
$labels['about'] = 'نبذة';
$labels['preferences'] = 'التفضيلات';
$labels['userpreferences'] = 'تفضيلات المستخدم';
$labels['editpreferences'] = 'تحرير تفضيلات المستخدم';
$labels['identities'] = 'الهويات';
$labels['manageidentities'] = 'إدارة الهويات';
$labels['newidentity'] = 'إضافة هوية جديدة';
$labels['addidentity'] = 'إضافة هوية';
$labels['editidentity'] = 'تعديل الهوية';
$labels['identityencryption'] = 'التشفير';
$labels['preferhtml'] = 'تفضيل صيغة HTML';
$labels['defaultcharset'] = 'ترميز المحارف الافتراضي';
$labels['htmlmessage'] = 'رسالة بنسق HTML';
$labels['digitalsig'] = 'التوقيع الرقمي';
$labels['dateformat'] = 'نسق التاريخ';
$labels['timeformat'] = 'نسق الوقت';
$labels['prettydate'] = 'تواريخ منمقة';
$labels['setdefault'] = 'تعيين كإفتراضي';
$labels['autodetect'] = 'آلي';
$labels['language'] = 'اللغة';
$labels['timezone'] = 'المنطقة الزمنية';
$labels['pagesize'] = 'عدد الرسائل في الصفحة';
$labels['signature'] = 'التوقيع';
$labels['dstactive'] = 'التوقيت الصيفي';
$labels['showinextwin'] = 'فتح الرسالة فى نافذة جديدة';
$labels['composeextwin'] = 'أرسال عن طريق نافذة جديدة';
$labels['htmleditor'] = 'إنشاء رسائل بنسق HTML';
$labels['htmlonreply'] = 'حال الرد على الرسائل بصيغة HTML فقط';
$labels['htmlsignature'] = 'توقيع HTML';
$labels['previewpane'] = 'إظهار قسم المعاينة';
$labels['skin'] = 'شكل الواجهة';
$labels['logoutclear'] = 'إفراغ سلة المحذوفات عند الخروج';
$labels['logoutcompact'] = 'ضغط صندوق الوارد عن الخروج';
$labels['uisettings'] = 'واجهة المستخدم';
$labels['serversettings'] = 'إعدادات الخادم';
$labels['mailboxview'] = 'مظهر صندوق البريد';
$labels['mdnrequests'] = 'عند طلب إشعار استلام';
$labels['askuser'] = 'اسأل المستخدم';
$labels['autosend'] = 'أرسلها تلقائياً';
$labels['autosendknown'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلااسألني';
$labels['autosendknownignore'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلاتجاهل الأمر';
$labels['ignorerequest'] = 'تجاهُل الطلب';
$labels['readwhendeleted'] = 'تحديد الرسالة كمقروءة عند حذفها';
$labels['flagfordeletion'] = 'وضع علامة على الرسالة لحذفها بدلاً منحذفها';
$labels['skipdeleted'] = 'لا تظهر الرسائل المحذوفة';
$labels['deletealways'] = 'حذف الرسائل مباشرة، إن تعذر نقلها إلىالمهملات';
$labels['showremoteimages'] = 'إظهار الصور الخارجية المدمجة';
$labels['fromknownsenders'] = 'للمرسلين المعلومين';
$labels['always'] = 'دائماً';
$labels['showinlineimages'] = 'إظهار الصّور المرفقة أسفل الرسالة';
$labels['autosavedraft'] = 'حفظ المسودة تلقائياً';
$labels['everynminutes'] = 'كل $n دقيقة';
$labels['never'] = 'أبداً';
$labels['immediately'] = 'حالاً';
$labels['messagesdisplaying'] = 'إظهار الرسائل';
$labels['messagescomposition'] = 'إنشاء الرسائل';
$labels['mimeparamfolding'] = 'أسماء الملفات المرفقة';
$labels['2231folding'] = 'RFC 2231 بأكملها (ثندربيرد)';
$labels['miscfolding'] = 'RFC 2047/2231 (ميكروسوفت آوتلوك)';
$labels['2047folding'] = 'RFC 2047 بأكملها (غيرها)';
$labels['force7bit'] = 'استخدام ترميز MIME للحروف ذات الثمانيةبتّات';
$labels['advancedoptions'] = 'خيارات متقدّمة';
$labels['focusonnewmessage'] = 'التركيز على نافذة المتصفح عند وجود رسالةجديدة';
$labels['checkallfolders'] = 'التحقق من وجود رسائل جديدة في جميعالمجلدات';
$labels['mainoptions'] = 'الخيارات الأساسية';
$labels['browseroptions'] = 'خيارات المتصفح';
$labels['section'] = 'قسم';
$labels['maintenance'] = 'الصيانة';
$labels['newmessage'] = 'رسالة جديدة';
$labels['signatureoptions'] = 'خيارات التوقيع';
$labels['whenreplying'] = 'عند الرد';
$labels['replytopposting'] = 'بدء رسالة جديدة ووضع النص أعلى الأصلية';
$labels['replybottomposting'] = 'بدء رسالة جديدة ووضع النص أسفل الأصلية';
$labels['replyremovesignature'] = 'إزالة التوقيع من الرسالة عند الرد';
$labels['autoaddsignature'] = 'إضافة التوقيع آلياً';
$labels['newmessageonly'] = 'الرسالة الجديدة فقط';
$labels['replyandforwardonly'] = 'الردود والتمريرات فقط';
$labels['insertsignature'] = 'إضافة التوقيع';
$labels['afternseconds'] = 'بعد $n ثواني';
$labels['reqmdn'] = 'طلب إشعار استلام دائماً';
$labels['reqdsn'] = 'طلب تنويه لحالة التوصيل دائماً';
$labels['replysamefolder'] = 'وضع الردود في المجلد الذي يحوي الرسالةالمردود عليها';
$labels['defaultabook'] = 'دفتر العناوين الافتراضي';
$labels['autocompletesingle'] = 'تجاهل عنوان البريد الإلكتروني البديل فيالتكملة التلقائية';
$labels['spellcheckbeforesend'] = 'تحقق من الإملاء قبل إرسال الرسائل';
$labels['spellcheckoptions'] = 'خيارات التدقيق الإملاءي';
$labels['spellcheckignoresyms'] = 'تجاهل الكلمات التي تحتوي رموز';
$labels['spellcheckignorenums'] = 'تجاهل الكلمات التي تحتوي أرقام';
$labels['spellcheckignorecaps'] = 'تجاهل الكلمات التي بها أحرف كبيرة';
$labels['addtodict'] = 'إضافة إلى القامس';
$labels['asattachment'] = 'كـ مرفق ';
$labels['allmessages'] = 'كافة الرسائل';
$labels['folder'] = 'مجلد';
$labels['folders'] = 'مجلدات';
$labels['foldername'] = 'اسم المجلد';
$labels['subscribed'] = 'مشترك';
$labels['messagecount'] = 'الرسائل';
$labels['create'] = 'أنشئ';
$labels['createfolder'] = 'أنشئ مجلد جديد';
$labels['managefolders'] = 'إدارة المجلدات';
$labels['specialfolders'] = 'المجلّدات المُميّزة';
$labels['properties'] = 'الخواص';
$labels['folderproperties'] = 'خواص المجلد';
$labels['parentfolder'] = 'المجلد الحاوي';
$labels['location'] = 'الموضع';
$labels['info'] = 'معلومات';
$labels['getfoldersize'] = 'اضغط لمعرفة حجم المجلد';
$labels['changesubscription'] = 'اضغط لتغيير حالة الإشتراك';
$labels['foldertype'] = 'نوع المجلد';
$labels['personalfolder'] = 'مجلد خاص';
$labels['otherfolder'] = 'مجلد مستخدم آخر';
$labels['sharedfolder'] = 'مجلد عام';
$labels['findfolders'] = 'البحث عن مجلدات';
$labels['findmail'] = 'البحث عن رسائل إلكترونية';
$labels['namespace.other'] = 'المستخدِمون الآخرون';
$labels['dualusemail'] = 'الرسائل';
$labels['dualusefolder'] = 'المجلدات';
$labels['generate'] = 'توليد';
$labels['encryptioncreatekey'] = 'إنشاء زوج مِن المفاتيح';
$labels['encryption'] = 'التشفير';
$labels['sortby'] = 'ترتيب بحسب';
$labels['sortasc'] = 'ترتيب تصاعدي';
$labels['sortdesc'] = 'ترتيب تنازلي';
$labels['undo'] = 'تراجع';
$labels['installedplugins'] = 'الإضافات المثبّتة';
$labels['plugin'] = 'إضافة';
$labels['version'] = 'النسخة';
$labels['source'] = 'المصدر';
$labels['license'] = 'الترخيص';
$labels['support'] = 'احصل على الدعم الفني';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'ب';
$labels['KB'] = 'ك.ب';
$labels['MB'] = 'م.ب';
$labels['GB'] = 'ج.ب';
$labels['unicode'] = 'يونيكود';
$labels['english'] = 'الإنجليزية';
$labels['westerneuropean'] = 'الغرب أوروبية';
$labels['easterneuropean'] = 'الشرق أوروبية';
$labels['southeasterneuropean'] = 'الجنوب شرق أوروبية';
$labels['baltic'] = 'البلطيقية';
$labels['cyrillic'] = 'الكيريلية';
$labels['arabic'] = 'العربية';
$labels['greek'] = 'اليونانية';
$labels['hebrew'] = 'العبرية';
$labels['turkish'] = 'التركية';
$labels['nordic'] = 'النرويجية';
$labels['thai'] = 'التايلندية';
$labels['celtic'] = 'الكلتية';
$labels['vietnamese'] = 'الفيتنامية';
$labels['japanese'] = 'اليابانية';
$labels['korean'] = 'الكورية';
$labels['chinese'] = 'الصينية';
$labels['arialabelmailpreviewframe'] = 'معاينة الرسالة';
$labels['arialabelmessagebody'] = 'عرض الرسالة';
$labels['arialabelmessageheaders'] = 'رأسيات الرسالة';
$labels['arialabelmailtomenu'] = 'خيارات عنوان البريد الإلكتروني';
$labels['arialabelimagetools'] = 'الأدوات الخاصة بالصُوَر';
localization/ar/messages.inc000064400000030015151727150570012151 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'طرأ هناك خطأ !';
$messages['loginfailed']  = 'فشل تسجيل الدخول';
$messages['cookiesdisabled'] = 'المتصفح الخاص بك لا يقبل الكوكيز';
$messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية أو أنها غيرصالحة';
$messages['storageerror'] = 'فشل الاتصال بخادم IMAP';
$messages['servererror'] = 'خطأ في الخادم!';
$messages['servererrormsg'] = 'خطأ خادم: $msg';
$messages['dberror'] = 'خطأ في قاعدة البيانات!';
$messages['errorreadonly'] = 'تعذر تنفيذ العملية. المجلد للقراءة فقط.';
$messages['errornoperm'] = 'تعذر تنفيذ العملية. ليست لديك الصلاحية.';
$messages['invalidrequest'] = 'طلب غير صالح! لم تحفظ أية بيانات.';
$messages['invalidhost'] = 'إسم الخادوم خاطئ.';
$messages['nomessagesfound'] = 'لم يعثر على أية رسائل في صندوق البريد هذا';
$messages['mailboxempty'] = 'علبة البريد فارغة';
$messages['nomessages'] = 'ليس هناك أية رسالة';
$messages['refreshing'] = 'عملية التحديث جارية …';
$messages['loading'] = 'جاري العمل...';
$messages['uploading'] = 'جاري رفع الملف...';
$messages['attaching'] = 'عملية إرفاق الملف جارية …';
$messages['uploadingmany'] = 'جاري تحميل الملفات...';
$messages['loadingdata'] = 'تحميل البيانات...';
$messages['checkingmail'] = 'التحقق من وجود رسائل جديدة...';
$messages['sendingmessage'] = 'إرسال الرسالة...';
$messages['messagesent'] = 'تم إرسال الرسالة بنجاح';
$messages['savingmessage'] = 'حفظ الرسالة...';
$messages['messagesaved'] = 'تم حفظ الرسالة في المسودات';
$messages['successfullysaved'] = 'تم الحفظ بنجاح';
$messages['addedsuccessfully'] = 'تمت إضافة المراسل إلى دفتر العناوينبنجاح';
$messages['contactnameexists'] = 'هناك مُرسال له نفس الإسم موجود مسبقاً.';
$messages['blockedimages'] = 'لحماية خصوصيتك، تم حجب الصور الغير مضمنة(البعيدة) في هذه الرسالة.';
$messages['encryptedmessage'] = 'هذه الرسالة مشفرة ولا يمكن عرضها. عذراً!';
$messages['nocontactsfound'] = 'لم يعثر على أي مراسل';
$messages['contactnotfound'] = 'تعذر العثور على المراسل المطلوب';
$messages['sendingfailed'] = 'فشل إرسال الرسالة';
$messages['senttooquickly'] = 'رجاء انتظر $sec ثوان قبل إرسال هذه الرسالة';
$messages['errormoving'] = 'تعذر نقل هذه الرسالة';
$messages['errorcopying'] = 'تعذر نسخ الرسائل';
$messages['errordeleting'] = 'تعذر حذف هذه الرسالة';
$messages['errormarking'] = 'تعذر تحديد الرسائل';
$messages['confirmationtitle'] = 'هل أنت متأكد …';
$messages['deletecontactconfirm']  = 'هل تريد حقاً حذف المراسلـ(ين) المحدد(ين)؟';
$messages['deletegroupconfirm']  = 'هل تريد فعلاً حذف المجموعة المحددة؟';
$messages['deletemessagesconfirm'] = 'هل تريد حذف الرسائل المحددة؟';
$messages['deletefolderconfirm']  = 'هل تريد حقاً حذف هذا المجلد؟';
$messages['purgefolderconfirm']  = 'هل تريد حقاً حذف جميع الرسائل في هذاالمجلد؟';
$messages['contactdeleting'] = 'جاري حذف المُراسلين...';
$messages['groupdeleting'] = 'جاري حذف المجموعة...';
$messages['folderdeleting'] = 'جاري حذف المجلد...';
$messages['foldermoving'] = 'جاري نقل المجلد...';
$messages['foldersubscribing'] = 'الإشتراك في المجلد...';
$messages['folderunsubscribing'] = 'إلغاء الإشتراك في المجد...';
$messages['formincomplete'] = 'لم يتم تعبئة بيانات الاستمارة بالكامل';
$messages['noemailwarning'] = 'الرجاء إدخال عنوان بريد إلكتروني صالح';
$messages['nonamewarning']  = 'الرجاء إدخال اسم';
$messages['nopagesizewarning'] = 'الرجاء إدخال حجم الصفحة';
$messages['norecipientwarning'] = 'الرجاء إدخال اسم مستقبل واحد على الأقل';
$messages['nosubjectwarning']  = 'حقل "الموضوع" فارغ. هل تريد كتابة موضوعللرسالة؟';
$messages['nosubjecttitle']  = 'بدون موضوع';
$messages['nobodywarning'] = 'إرسال هذه الرسالة دون نص؟';
$messages['nosearchname'] = 'الرجاء إدخال اسم مراسل أو عنوان بريدإلكتروني';
$messages['notuploadedwarning'] = 'لم يتم رفع جميع المرفقات بعد. رجاءً الانتظار أو إلغاء عملية الرفع.';
$messages['searchsuccessful'] = 'عثر على $nr رسائل';
$messages['contactsearchsuccessful'] = 'عُثر على $nr مُراسَل';
$messages['searchnomatch'] = 'لم يعثر على شيء';
$messages['searching'] = 'جاري البحث...';
$messages['checking'] = 'جاري التحقق...';
$messages['nospellerrors'] = 'لم يعثر على أية أخطاء إملائية';
$messages['folderdeleted'] = 'تم حذف المجلد بنجاح';
$messages['foldersubscribed'] = 'تم الإشتراك في المجلد بنجاح';
$messages['folderunsubscribed'] = 'تم إلغاء الإشتراك في المجلد بنجاح';
$messages['deletedsuccessfully'] = 'تم الحذف بنجاح';
$messages['converting'] = 'إزالة التنسيق من الرسالة...';
$messages['messageopenerror'] = 'تعذرت قراءة الرسالة من الخادم';
$messages['fileuploaderror'] = 'فشل رفع الملف';
$messages['filesizeerror'] = 'حجم الملف الذي تحاول رفعه أكبر من الحجمالأقصى $size';
$messages['sourceisreadonly'] = 'لا يمكن تعديل مصدر العنوان هذا';
$messages['errorsavingcontact'] = 'تعذر حفظ عنوان المراسل';
$messages['movingmessage'] = 'جاري نقل الرسالة...';
$messages['copyingmessage'] = 'جاري نسخ الرسالة...';
$messages['copyingcontact'] = 'جاري نسخ المُراسلين...';
$messages['deletingmessage'] = 'جاري حذف الرسائل...';
$messages['markingmessage'] = 'جاري تحديد الرسائل...';
$messages['addingmember'] = 'جاري إضافة المُراسلين إلى المجموعة...';
$messages['removingmember'] = 'جاري إزالة المراسلين من المجموعة...';
$messages['receiptsent'] = 'أرسل إيصال الاستلام بنجاح';
$messages['errorsendingreceipt'] = 'تعذر إرسال إيصال الاستلام';
$messages['deleteidentityconfirm'] = 'هل تريد حقا حذف هذه الهوية ؟';
$messages['nodeletelastidentity'] = 'لا يمكن حذف هذا السجل حيث أنه الوحيدالمتبقي.';
$messages['forbiddencharacter'] = 'اسم المجلّد يحتوي حروفاً ممنوعة';
$messages['selectimportfile'] = 'رجاء اختر ملفاً لرفعه';
$messages['addresswriterror'] = 'دفتر العناوين المحدد غير قابل للكتابة';
$messages['contactaddedtogroup'] = 'تمت إضافة المراسلين إلى هذه المجموعةبنجاح';
$messages['contactremovedfromgroup'] = 'تمت إزالة المراسلين من هذه المجموعةبنجاح';
$messages['importwait'] = 'جاري الاستيراد، رجاء انتظر...';
$messages['importconfirm'] = '<b>تم استيراد $inserted مراسلين بنجاح، وتجاهل$skipped موجودين مسبقاً</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>تم تجاهل $skipped عناصر موجودة</b>';
$messages['opnotpermitted'] = 'العملية ممنوعة!';
$messages['httpreceivedencrypterror'] = 'حدث خطأ جسيم في التهيئة. رجاءً اتصال بمدير الخادم حالاً. <b>لا يمكن إرسال بريدك.</b>';
$messages['smtpconnerror'] = 'خطأ SMTP ($code): تعذر الاتصال بالخادم';
$messages['smtpautherror'] = 'خطأ SMTP ($code): تعذر التحقق من هويتك';
$messages['smtpfromerror'] = 'خطأ SMTP ($code): تعذر تحديد المرسل "$from" ($msg)';
$messages['smtptoerror'] = 'خطأ SMTP ($code): تعذرت إضافة المستلم "$to" ($msg)';
$messages['smtprecipientserror'] = 'خطأ SMTP: تعذرت قراءة قائمة المرسل إليهم';
$messages['smtperror'] = 'خطأ SMTP: $msg';
$messages['toomanyrecipients'] = 'عدد المرسل إليهم كبير. قلص العدد إلى $max.';
$messages['maxgroupmembersreached'] = 'عدد أعضاء المجموعة أكثر من $max';
$messages['contactdelerror'] = 'تعذر حذف أسماء جهات الإتصال';
$messages['contactdeleted'] = 'تم حذف أسماء جهات الإتصال بنجاح';
$messages['contactrestoreerror'] = 'تعذر استعادة المُراسل المحذوف.';
$messages['contactrestored'] = 'تم استعادة المُراسل بنجاح.';
$messages['groupdeleted'] = 'تم حذف المجموعة بنجاح';
$messages['grouprenamed'] = 'تم تغيير إسم المجموعة بنجاح';
$messages['groupcreated'] = 'تم إنشاء المجموعة بنجاح';
$messages['savedsearchdeleted'] = 'تم بنجاح حذف البحث المحفوظ.';
$messages['savedsearchdeleteerror'] = 'تعذر حذف البحث المحفوظ';
$messages['savedsearchcreated'] = 'تم بنجاح إنشاء البحث المحفوظ.';
$messages['savedsearchcreateerror'] = 'تعذر إنشاء بحث محفوظ.';
$messages['messagedeleted'] = 'تم حذف الرسائل بنجاح';
$messages['messagemoved'] = 'تم نقل الرسائل بنجاح';
$messages['messagecopied'] = 'تم نسخ الرسائل بنجاح';
$messages['messagemarked'] = 'تم تحديد الرسائل بنجاح';
$messages['autocompletechars'] = 'إكتب $min أحرف على الأقل للحصول على التكملةالتلقائية';
$messages['autocompletemore'] = 'هناك المزيد من النتائج المطابقة. رجاءاكتب كلمات بحث أكثر.';
$messages['namecannotbeempty'] = 'لا يمكن ترك الإسم فارغاً';
$messages['nametoolong'] = 'الإسم طويل جداً';
$messages['folderupdated'] = 'تم تحديث المجلد بنجاح';
$messages['foldercreated'] = 'تم إنشاء المجلد بنجاح';
$messages['invalidimageformat'] = 'ليست صيغة صورة صحيحة';
$messages['mispellingsfound'] = 'عُثر على أخطاء إملائية في الرسالة';
$messages['parentnotwritable'] = 'تعذر إنشاء/نقل المجلد إلى المجلد المحدد.ليست لديك الصلاحية.';
$messages['messagetoobig'] = 'جزء الرسالة أكبر بكثير مما يمكن معالجته.';
$messages['errfailedrequest'] = 'فَشِل الطلب';
$messages['errauthorizationfailed'] = 'فَشِلت عملية المُصادقة';
$messages['errcontactserveradmin'] = 'يُرجى الإتصال بمدير الخادوم.';
$messages['listempty'] = 'إنّ القائمة فارغة.';
localization/hy_AM/labels.inc000064400000062205151727150570012205 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Բարի գալուստ $product';
$labels['username'] = 'Օգտվող';
$labels['password'] = 'Գաղտնաբառ';
$labels['server'] = 'Սերվեր';
$labels['login'] = 'Մուտք';
$labels['logout'] = 'Ելք';
$labels['mail'] = 'Էլ–փոստ';
$labels['settings'] = 'Նախասիրություններ';
$labels['addressbook'] = 'Հասցեներ';
$labels['inbox'] = 'Փոստարկղ';
$labels['drafts'] = 'Սևագրեր';
$labels['sent'] = 'Ուղարկված';
$labels['trash'] = 'Աղբարկղ';
$labels['junk'] = 'Թափոն';
$labels['subject'] = 'Վերնագիր';
$labels['from'] = 'Ուղարկող';
$labels['sender'] = 'Ուղարկող';
$labels['to'] = 'Ստացող';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
$labels['followupto'] = 'Ի հավելում';
$labels['date'] = 'Ամսաթիվ';
$labels['size'] = 'Չափ';
$labels['priority'] = 'Առավելություն';
$labels['organization'] = 'Կազմակերպություն';
$labels['readstatus'] = 'Ընթերցման կարգավիճակ';
$labels['listoptions'] = 'Ցուցակի ընտրանքներ…';
$labels['mailboxlist'] = 'Դարակներ';
$labels['messagesfromto'] = 'Նամակներ $from–ից $to–ը եղած $count–ից';
$labels['threadsfromto'] = 'Թեմաներ $from-ից $to ընդհանուր $count-ից';
$labels['messagenrof'] = 'Նամակ $nr եղած $count–ից';
$labels['fromtoshort'] = '$from-ից $to ընդհանուր $count-ից';
$labels['copy'] = 'Cc';
$labels['move'] = 'Տեղափոխել';
$labels['moveto'] = 'Տեղափոխել...';
$labels['download'] = 'Ներբեռնել';
$labels['open'] = 'Բաց';
$labels['showattachment'] = 'Ցուցադրել';
$labels['showanyway'] = 'Ամեն դեպքում ցուցադրել';
$labels['filename'] = 'Ֆայլի անուն';
$labels['filesize'] = 'Ֆայլի չափ';
$labels['addtoaddressbook'] = 'Հիշել հասցեն';
$labels['sun'] = 'Կիր';
$labels['mon'] = 'Երկ';
$labels['tue'] = 'Երք';
$labels['wed'] = 'Չրք';
$labels['thu'] = 'Հնգ';
$labels['fri'] = 'Ուրբ';
$labels['sat'] = 'Շբթ';
$labels['sunday'] = 'Կիրակի';
$labels['monday'] = 'Երկուշաբթի';
$labels['tuesday'] = 'Երեքշաբթի';
$labels['wednesday'] = 'Չորեքշաբթի';
$labels['thursday'] = 'Հինգշաբթի';
$labels['friday'] = 'Ուրբաթ';
$labels['saturday'] = 'Շաբաթ';
$labels['jan'] = 'Հնվ';
$labels['feb'] = 'Փետ';
$labels['mar'] = 'Մար';
$labels['apr'] = 'Ապր';
$labels['may'] = 'Մայիս';
$labels['jun'] = 'Հուս';
$labels['jul'] = 'Հուլ';
$labels['aug'] = 'Օգս';
$labels['sep'] = 'Սեպ';
$labels['oct'] = 'Հոկ';
$labels['nov'] = 'Նոյ';
$labels['dec'] = 'Դեկ';
$labels['longjan'] = 'Հունվար';
$labels['longfeb'] = 'Փետրվար';
$labels['longmar'] = 'Մարտ';
$labels['longapr'] = 'Ապրիլ';
$labels['longmay'] = 'Մայիս';
$labels['longjun'] = 'Հունիս';
$labels['longjul'] = 'Հուլիս';
$labels['longaug'] = 'Օգոստոս';
$labels['longsep'] = 'Սեպտեմբեր';
$labels['longoct'] = 'Հոկտեմբեր';
$labels['longnov'] = 'Նոյեմբեր';
$labels['longdec'] = 'Դեկտեմբեր';
$labels['today'] = 'Այսօր';
$labels['refresh'] = 'Թարմացնել';
$labels['checkmail'] = 'Ստուգել նոր նամակները';
$labels['compose'] = 'Գրել նամակ';
$labels['writenewmessage'] = 'Նոր նամակ';
$labels['reply'] = 'Պատասխանել';
$labels['replytomessage'] = 'Պատասխանել նամակին';
$labels['replytoallmessage'] = 'Պատասխանել բոլորին';
$labels['replyall'] = 'Պատասխանել բոլորին';
$labels['replylist'] = 'Պատասխանել ցուցակին';
$labels['forward'] = 'Փոխանցել';
$labels['forwardinline'] = 'Փոխանցել նամակի մեջ';
$labels['forwardattachment'] = 'Փոխանցել կցված';
$labels['forwardmessage'] = 'Փոխանցել նամակը';
$labels['deletemessage'] = 'Ջնջել նամակը';
$labels['movemessagetotrash'] = 'Գցել աղբարկղը';
$labels['printmessage'] = 'Տպել';
$labels['previousmessage'] = 'Ցուցադրել նախորդ նամակը';
$labels['firstmessage'] = 'Ցուցադրել առաջին նամակը';
$labels['nextmessage'] = 'Ցուցադրել հաջորդ նամակը';
$labels['lastmessage'] = 'Ցուցադրել վերջին նամակը';
$labels['backtolist'] = 'Վերադառնալ նամակների ցուցակ';
$labels['viewsource'] = 'Ցուցադրել նամակի կոդը';
$labels['mark'] = 'Նշել';
$labels['markmessages'] = 'Նշել նամակները';
$labels['markread'] = 'որպես կարդացած';
$labels['markunread'] = 'որպես չկարդացած';
$labels['markflagged'] = 'որպես նշված';
$labels['markunflagged'] = 'որպես չնշված';
$labels['moreactions'] = 'Հավելյալ գործողություններ…';
$labels['more'] = 'Ավելին';
$labels['back'] = 'Ետ';
$labels['options'] = 'Ընտրանքներ';
$labels['select'] = 'Նշել';
$labels['all'] = 'Բոլորը';
$labels['none'] = 'Չնշել';
$labels['currpage'] = 'Առկա էջ';
$labels['isread'] = 'Ընթերցված';
$labels['unread'] = 'Չկարդացածը';
$labels['flagged'] = 'Նշված';
$labels['unanswered'] = 'Անպատասխան';
$labels['deleted'] = 'Ջնջված';
$labels['undeleted'] = 'Ջնջված չէ';
$labels['forwarded'] = 'Փոխանցված';
$labels['invert'] = 'Փոխատեղել';
$labels['filter'] = 'Զտիչ';
$labels['list'] = 'Ցուցակ';
$labels['threads'] = 'Թեմաներ';
$labels['expand-all'] = 'Ընդլայնել բոլորը';
$labels['expand-unread'] = 'Ընդլայնել չկարդացվածը';
$labels['collapse-all'] = 'Փլչել բոլորը';
$labels['threaded'] = 'Թեմավորված';
$labels['autoexpand_threads'] = 'Բաց անել թեմաները';
$labels['do_expand'] = 'բոլոր թեմաները';
$labels['expand_only_unread'] = 'միայն չկարդացված հաղորդագրություններով';
$labels['fromto'] = 'Ումից/Ում';
$labels['flag'] = 'Նշան';
$labels['attachment'] = 'Կցորդ';
$labels['nonesort'] = 'Չնշել';
$labels['sentdate'] = 'Ուղարկման ամսաթիվ';
$labels['arrival'] = 'Ստացման Ամսաթիվ';
$labels['asc'] = 'ըստ աճման';
$labels['desc'] = 'ըստ նվազման';
$labels['listcolumns'] = 'Ցուցակի սյունյակներ';
$labels['listsorting'] = 'Տեսակավորման սյունյակ';
$labels['listorder'] = 'Տեսակավորման կարգը';
$labels['listmode'] = 'Ցուցակով տեսքի տարբերակը';
$labels['layoutlist'] = 'Ցուցակ';
$labels['folderactions'] = 'Պանակի գործողություններ…';
$labels['compact'] = 'Սեղմել';
$labels['empty'] = 'Դատարկել';
$labels['quota'] = 'Դիսկային տարածք';
$labels['unknown'] = 'անհայտ';
$labels['unlimited'] = 'անսահմանափակ';
$labels['quicksearch'] = 'Արագ որոնում';
$labels['resetsearch'] = 'Վերսկսել որոնումը';
$labels['searchmod'] = 'Որոնման փոփոխիչներ';
$labels['msgtext'] = 'Ողջ հաղորդագրությունը';
$labels['body'] = 'Մարմին';
$labels['type'] = 'Ձև';
$labels['namex'] = 'Անվանում';
$labels['openinextwin'] = 'Բացել նոր պատուհանում';
$labels['emlsave'] = 'Ներբեռնել (.eml)';
$labels['editasnew'] = 'Խմբագրել որպես նոր';
$labels['send'] = 'Ուղարկել';
$labels['sendmessage'] = 'Ուղարկել';
$labels['savemessage'] = 'Հիշել որպես սևագիր';
$labels['addattachment'] = 'Կցել ֆայլ';
$labels['charset'] = 'Տառաշար';
$labels['editortype'] = 'Խմբագրի տիպը';
$labels['returnreceipt'] = 'Ստացման հավաստագիր';
$labels['dsn'] = 'Առաքման կարգավիճակի ծանուցում';
$labels['mailreplyintro'] = '$date-ին, $sender-ը գրեց.';
$labels['originalmessage'] = 'Առաջին հաղորդագրությունը';
$labels['insert'] = 'Ներդնել';
$labels['recipient'] = 'Ստացող';
$labels['editidents'] = 'Խմբագրել ինքնությունները';
$labels['spellcheck'] = 'Տառասխալներ';
$labels['checkspelling'] = 'Ստուգել ուղագրությունը';
$labels['resumeediting'] = 'Շարունակել խմբագրումը';
$labels['revertto'] = 'Վերականգնել';
$labels['responsename'] = 'Անվանում';
$labels['attach'] = 'Կցել';
$labels['attachments'] = 'Կցումներ';
$labels['upload'] = 'Բեռնել';
$labels['close'] = 'Փակել';
$labels['messageoptions'] = 'Հաղորդագրության ընտրանքներ…';
$labels['low'] = 'Ցածր';
$labels['lowest'] = 'Նվազագույն';
$labels['normal'] = 'Նորմալ';
$labels['high'] = 'Կարևոր';
$labels['highest'] = 'Կարևորագույն';
$labels['nosubject'] = '(առանց վերնագրի)';
$labels['showimages'] = 'Ցուցադրել նկարները';
$labels['alwaysshow'] = 'Միշտ ցուցադրել պատկերները $sender–ից';
$labels['isdraft'] = 'Սա հաղորդագրության սևագիր է';
$labels['andnmore'] = '$nr այլ...';
$labels['togglemoreheaders'] = 'Ցուցադրել բոլոր գլխագրերը';
$labels['togglefullheaders'] = 'Փոխել գլխագրերը';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Պարզ տեքստ';
$labels['savesentmessagein'] = 'Գրանցել ուղարկված նամակը';
$labels['dontsave'] = 'Չ՛գրանցել';
$labels['maxuploadsize'] = 'Առավելագույն թույլատրելի ֆայլի չափը $size է';
$labels['addcc'] = 'Ավելացնել Cc';
$labels['addbcc'] = 'Ավելացնել Bcc';
$labels['addreplyto'] = 'Ավելացնել Reply-To';
$labels['addfollowupto'] = 'Ավելացնել հավելում';
$labels['mdnrequest'] = 'Նամակի հեղինակը խնդրել է նամակը կարդալուն պես տեղեկացնել իրեն։ Ցանկանում էք Տեղեկացնե՞լ։';
$labels['receiptread'] = 'Նամակի ընթերցման ծանուցագիր';
$labels['yourmessage'] = 'Սա Ձեր նամակի ընթերցման ծանուցագիրն է';
$labels['receiptnote'] = 'Նշում՝ Այս ծանուցագիրը ընդամենը տեղեկացնում է, որ նամակը ցուցադրվել է հասցեատիրոջ համակարչով։ Չկա որևիցե երաշխիք, որ հասցեատերը իսկապես կարդացել է նամակը։';
$labels['name'] = 'Մականուն';
$labels['firstname'] = 'Անուն';
$labels['surname'] = 'Ազգանուն';
$labels['middlename'] = 'Միջին անուն';
$labels['nameprefix'] = 'Նախածանց';
$labels['namesuffix'] = 'Վերջածանց';
$labels['nickname'] = 'Մականուն';
$labels['jobtitle'] = 'Պաշտոն';
$labels['department'] = 'Բաժանմունք';
$labels['gender'] = 'Սեռ';
$labels['maidenname'] = 'Մինչամուսնական ազգանուն';
$labels['email'] = 'Էկ–փոստ';
$labels['phone'] = 'Հեռախոս';
$labels['address'] = 'Հասցե';
$labels['street'] = 'Փողոց';
$labels['locality'] = 'Քաղաք';
$labels['zipcode'] = 'Փոստային կոդ';
$labels['region'] = 'Մարզ';
$labels['country'] = 'Երկիր';
$labels['birthday'] = 'Ծննդյան օր';
$labels['anniversary'] = 'Տարեդարձ';
$labels['website'] = 'Կայք';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Նշումներ';
$labels['male'] = 'արական';
$labels['female'] = 'իգական';
$labels['manager'] = 'Մենեջեր';
$labels['assistant'] = 'Օգնական';
$labels['spouse'] = 'ամուսին';
$labels['allfields'] = 'Բոլոր դաշտերը';
$labels['search'] = 'Որոնում';
$labels['advsearch'] = 'Խորացված որոնում';
$labels['advanced'] = 'Խորացված';
$labels['other'] = 'Այլ';
$labels['typehome'] = 'Տուն';
$labels['typework'] = 'Աշխատանք';
$labels['typeother'] = 'Այլ';
$labels['typemobile'] = 'Բջջային';
$labels['typemain'] = 'Գլխավոր';
$labels['typehomefax'] = 'Տան ֆաքս';
$labels['typeworkfax'] = 'Աշտանանքային ֆաքս';
$labels['typecar'] = 'Մեքենա';
$labels['typepager'] = 'Փեյջեր';
$labels['typevideo'] = 'Տեսանյութ';
$labels['typeassistant'] = 'Օգնական';
$labels['typehomepage'] = 'Սկիզբ';
$labels['typeblog'] = 'Բլոգ';
$labels['typeprofile'] = 'Պրոֆայլ';
$labels['addfield'] = 'Ավելացնել դաշտ…';
$labels['editcontact'] = 'Խմբագրել հասցեն';
$labels['contacts'] = 'Կապորդներ';
$labels['contactproperties'] = 'Կապորդի հատկանիշներ';
$labels['personalinfo'] = 'Անձնական տվյալներ';
$labels['edit'] = 'Խմբագրել';
$labels['cancel'] = 'Չեղարկել';
$labels['save'] = 'Հիշել';
$labels['delete'] = 'Ջնջել';
$labels['rename'] = 'Վերանվանել';
$labels['addphoto'] = 'Ավելացնել';
$labels['replacephoto'] = 'Փոխարինել';
$labels['uploadphoto'] = 'Վերբեռնել լուսանկար';
$labels['deletecontact'] = 'Ջնջել նշած նամակները';
$labels['composeto'] = 'Գրել նամակ';
$labels['contactsfromto'] = 'Հասցեներ $from–ից $to–ը եղած $count–ից';
$labels['print'] = 'Տպել';
$labels['export'] = 'Արտահանել';
$labels['exportall'] = 'Արտահանել բոլորը';
$labels['exportsel'] = 'Արտահանել նշվածները';
$labels['exportvcards'] = 'Արտահանել հասցեները vCard չափաձևով';
$labels['grouprename'] = 'Վերանվանել խումբը';
$labels['groupdelete'] = 'Ջնջել խումբը';
$labels['groupremoveselected'] = 'Հեռացնել նշված անձանց խմբից';
$labels['previouspage'] = 'Ցուցադրել նախորդ էջը';
$labels['firstpage'] = 'Ցուցադրել առաջին էջը';
$labels['nextpage'] = 'Ցուցադրել հաջորդ էջը';
$labels['lastpage'] = 'Ցուցադրել վերջին էջը';
$labels['group'] = 'Խումբ';
$labels['groups'] = 'Խմբեր';
$labels['listgroup'] = 'Խմբի անդամների ցանկ';
$labels['personaladrbook'] = 'Անձնական հասցեներ';
$labels['searchsave'] = 'Պահպանել որոնումը';
$labels['searchdelete'] = 'Ջնջել որոնումը';
$labels['import'] = 'Ներկրել';
$labels['importcontacts'] = 'Ներկրել հասցեներ';
$labels['importtarget'] = 'Ավելացնել կապորդները';
$labels['importreplace'] = 'Փոխել ողջ հասցեագիրքը';
$labels['done'] = 'Ավարտված է';
$labels['settingsfor'] = 'Նախասիրություններ';
$labels['about'] = 'Նկարագիր';
$labels['preferences'] = 'Նախընտրանքներ';
$labels['userpreferences'] = 'Օգտվողի նախընտրանքներ';
$labels['editpreferences'] = 'Խմբագրել օգտվողի նախընտրանքները';
$labels['identities'] = 'Անձիք';
$labels['preferhtml'] = 'Գերադասել HTML';
$labels['defaultcharset'] = 'Լռելյալ տառաշար';
$labels['htmlmessage'] = 'HTML նամակ';
$labels['messagepart'] = 'մաս';
$labels['digitalsig'] = 'Թվային ստորագրություն';
$labels['dateformat'] = 'Ամսաթվի ձևաչափ';
$labels['timeformat'] = 'Ժամանակի ձևաչափ';
$labels['prettydate'] = 'Պարզ ամսաթվեր';
$labels['setdefault'] = 'Հիմնական';
$labels['autodetect'] = 'Ավտո';
$labels['language'] = 'Լեզուն';
$labels['timezone'] = 'Ժամային գոտի';
$labels['pagesize'] = 'Տողեր առ էջ';
$labels['signature'] = 'Ստորագրություն';
$labels['dstactive'] = 'Ամառային ժամանակ';
$labels['showinextwin'] = 'Բացել հաղորդագրությունը նոր պատուհանում';
$labels['composeextwin'] = 'Կազմել նոր պատուհանում';
$labels['htmleditor'] = 'Ստեղծել HTML նամակներ';
$labels['htmlonreply'] = 'միայն HTML հաղորդագրությանը պատասխանելիս';
$labels['htmlonreplyandforward'] = 'միայն HTML հաղորդագրությանը պատասխանելիս կամ վերահասցեավորելիս';
$labels['htmlsignature'] = 'HTML ստորագրություն';
$labels['previewpane'] = 'Ցուցադրել պատուհանը';
$labels['skin'] = 'Տեսքի տարբերակ';
$labels['logoutclear'] = 'Դուրս գալուց դատարկել աղբարկղը';
$labels['logoutcompact'] = 'Դուրս գալուց կարգի բերել փոստարկղը';
$labels['uisettings'] = 'Տեսք';
$labels['serversettings'] = 'Սերվերի կարգավորումներ';
$labels['mailboxview'] = 'Փոստարկղի տեսք';
$labels['mdnrequests'] = 'Տեղեկացումներ';
$labels['askuser'] = 'Հարցնել օգտվողին';
$labels['autosend'] = 'ուղարկել ավտոմատ';
$labels['autosendknown'] = 'ուղարկել ստացական իմ կապորդներին, մնացած դեպքերում` հարցնել ինձ';
$labels['autosendknownignore'] = 'ուղարկել ստացական իմ կապորդներին, մնացած դեպքերում` անտեսել';
$labels['readwhendeleted'] = 'Ջնջելուց նշել նամակը որպես կարդացած';
$labels['flagfordeletion'] = 'Ջնջելու փոխարեն նշել որպես ենթակա ջնջման';
$labels['skipdeleted'] = 'Ցույց չ՛տալ ջնջված նամակները';
$labels['deletealways'] = 'Հաղորդագրությունները աղբարկղ տեղափոխելիս ձախողման դեպքում ջնջել դրանք։';
$labels['deletejunk'] = 'Միանգամից ջնջել Թափոն հաղորդագրությունները';
$labels['showremoteimages'] = 'Ցույց տալ հեռակա պատկերները';
$labels['fromknownsenders'] = 'հայտնի հասցեատերերից';
$labels['always'] = 'միշտ';
$labels['showinlineimages'] = 'Ցուցադրել կցված պատկերները հաղորդագրության տակ';
$labels['autosavedraft'] = 'Սևագրի ավտոմատ գրանցում';
$labels['everynminutes'] = 'ամեն $n րոպեն';
$labels['refreshinterval'] = 'Թարմացնել (ստուգել նոր հաղորդագրությունները և այլն)';
$labels['never'] = 'երբեք';
$labels['immediately'] = 'անմիջապես';
$labels['messagesdisplaying'] = 'նամակները ցուցադրելիս';
$labels['messagescomposition'] = 'նամակ գրելիս';
$labels['mimeparamfolding'] = 'Կցորդների անուններ';
$labels['2231folding'] = 'Կատարյալ RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Կատարյալ RFC 2047 (այլ)';
$labels['force7bit'] = 'օգտագործել MIME գրանշում 8 բիթանոց նիշերի համար';
$labels['advancedoptions'] = 'Հավելյալ կարգավորումներ';
$labels['focusonnewmessage'] = 'Առաջ բերել պատուհանը նոր նամակ ստանալիս';
$labels['checkallfolders'] = 'Ստուգել բոլոր դարակները նոր նամակների համար';
$labels['defaultfont'] = 'HTML հաղորդագրության լռելյալ տառատեսակ';
$labels['mainoptions'] = 'Գլխավոր ընտրանքներ';
$labels['browseroptions'] = 'Զննարկչի ընտրանքներ';
$labels['section'] = 'Բաժին';
$labels['maintenance'] = 'Սպասարկում';
$labels['newmessage'] = 'Նոր հաղորդագրություն';
$labels['signatureoptions'] = 'Ստորագրության ընտրանքներ';
$labels['whenreplying'] = 'Պատասխանելիս';
$labels['replyempty'] = 'մի քաղվածեքառաջին հաղորդագրությունը';
$labels['replytopposting'] = 'սկսել նոր հաղորդագրությունը վերևից';
$labels['replybottomposting'] = 'սկսել նոր հաղորդագրությունը ներքևից';
$labels['replyremovesignature'] = 'Պատասխանելիս հեռացնել հաղորդագրությունից նախորդ ստորագրությունը';
$labels['autoaddsignature'] = 'Ավելացնել ստորագրություն';
$labels['newmessageonly'] = 'միայն նոր հաղորդագրություններում';
$labels['replyandforwardonly'] = 'պատասխաններում և փոխանցումներում';
$labels['insertsignature'] = 'Ներդնել ստորագրությունը';
$labels['afternseconds'] = '$n վարկյան հետո';
$labels['reqmdn'] = 'Միշտ պատվիրել ստացական';
$labels['reqdsn'] = 'Միշտ պատվիրել առաքման կարգավիճակի ծանուցում';
$labels['replysamefolder'] = 'Հաղորդագրության պատասխանները պահել նույն պանակում';
$labels['defaultabook'] = 'Հիմնական հասցեագիրքը';
$labels['autocompletesingle'] = 'Ավտոլրացման ժամանակ բացառել այլընտրանքային էլփոստի հասցեները';
$labels['listnamedisplay'] = 'Ցուցադրել կապորդները որպես';
$labels['spellcheckbeforesend'] = 'Ստուգել տառասխալները հաղորդագրությունը ուղարկելուց առաջ';
$labels['spellcheckoptions'] = 'Սրբագրման ընտրանքներ';
$labels['spellcheckignoresyms'] = 'Անտեսել նշաններով բառերը';
$labels['spellcheckignorenums'] = 'Անտեսել թվերով բառերը';
$labels['spellcheckignorecaps'] = 'Անտեսել լրիվ մեծատառ բառերը';
$labels['addtodict'] = 'Ավելացնել բառարանում';
$labels['mailtoprotohandler'] = 'mailto: հղումների սպասարկող';
$labels['forwardmode'] = 'Հաղորդագրությունների վերահասցեավորում';
$labels['inline'] = 'մեջը';
$labels['asattachment'] = 'որպես կցորդ';
$labels['allmessages'] = 'բոլոր հաղորդագրությունները';
$labels['folder'] = 'Դարակ';
$labels['folders'] = 'Դարակներ';
$labels['foldername'] = 'Դարակի անուն';
$labels['subscribed'] = 'Բաժանորդագրված';
$labels['messagecount'] = 'Նամակներ';
$labels['create'] = 'Ստեղծել';
$labels['createfolder'] = 'Բացել նոր դարակ';
$labels['managefolders'] = 'Կարգավորել դարակները';
$labels['specialfolders'] = 'Հատուկ դարակներ';
$labels['properties'] = 'Հատկանիշներ';
$labels['folderproperties'] = 'Պանակի հատկանիշներ';
$labels['parentfolder'] = 'Ծնող պանակ';
$labels['location'] = 'Վայր';
$labels['info'] = 'Տեղեկություն';
$labels['getfoldersize'] = 'Հպել պանակի չափը իմանալու համար';
$labels['changesubscription'] = 'Հպել բաժանորդագրությունը փոխելու համար';
$labels['foldertype'] = 'Պանակի տեսակ';
$labels['personalfolder'] = 'Անձնական պանակ';
$labels['otherfolder'] = 'Այլ օգտվողի պանակ';
$labels['sharedfolder'] = 'Հանրային պանակ';
$labels['sortby'] = 'Դասավորել';
$labels['sortasc'] = 'ըստ աճման';
$labels['sortdesc'] = 'ըստ նվազման';
$labels['undo'] = 'Ետարկել';
$labels['installedplugins'] = 'Տեղակայված հավելումները';
$labels['plugin'] = 'Խրիչ';
$labels['version'] = 'Տարբերակ';
$labels['source'] = 'Աղբյուր';
$labels['license'] = 'Արտոնագիր';
$labels['support'] = 'Ստանալ օգնություն';
$labels['B'] = 'Բ';
$labels['KB'] = 'ԿԲ';
$labels['MB'] = 'ՄԲ';
$labels['GB'] = 'ԳԲ';
$labels['unicode'] = 'Յունիկոդ';
$labels['english'] = 'Անգլերեն';
$labels['westerneuropean'] = 'Արևմտա-Եվրոպական';
$labels['easterneuropean'] = 'Արևելա-Եվրոպական';
$labels['southeasterneuropean'] = 'Հարավ-արևելաեվրոպական';
$labels['baltic'] = 'Բալթիկ';
$labels['cyrillic'] = 'Կիրիլլիկ';
$labels['arabic'] = 'Արաբական';
$labels['greek'] = 'Հունական';
$labels['hebrew'] = 'Հրեական';
$labels['turkish'] = 'Թուրքական';
$labels['nordic'] = 'Նորդիկ';
$labels['thai'] = 'Թայլանդական';
$labels['celtic'] = 'Կելտական';
$labels['vietnamese'] = 'Վիետնամական';
$labels['japanese'] = 'Ճապոնական';
$labels['korean'] = 'Կորեական';
$labels['chinese'] = 'Չինական';
$labels['arialabelforwardingoptions'] = 'Փոխանցելու ընտրանքներ';
localization/hy_AM/messages.inc000064400000030025151727150570012545 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Սխա՛լ';
$messages['loginfailed']  = 'Մուտքը ձախողվեց';
$messages['cookiesdisabled'] = 'Сookies–ների ապահովվումը բացակայում է';
$messages['sessionerror'] = 'Անվավեր կամ ժամկետանց սեսիա';
$messages['storageerror'] = 'IMAP սերվերի հետ կապը ձախողվեց';
$messages['servererror'] = 'Սերվերի սխա՛լ';
$messages['servererrormsg'] = 'Սերվերի սխալ` $msg';
$messages['dberror'] = 'Տվյալների շտեմարանի սխա՛լ';
$messages['requesttimedout'] = 'Հարցման թույլատրելի ժամանակը սպառվեց';
$messages['errorreadonly'] = 'Գործողությունը անհնար է։ Պանակը միայն ընթերցման համար է։';
$messages['errornoperm'] = 'Գործողության կատարման իրավունքը մերժված է։';
$messages['invalidrequest'] = 'Սխալ հարցում, ապարդյուն։';
$messages['nomessagesfound'] = 'Այս փոստարկղում նամակներ չկան';
$messages['loading'] = 'Բեռնում...';
$messages['uploading'] = 'Ֆայլի վերբեռնում…';
$messages['uploadingmany'] = 'Վերբեռնվում են ֆայլերը…';
$messages['loadingdata'] = 'Տվյալների բեռնավորում…';
$messages['checkingmail'] = 'Նոր նամակների ստուգում…';
$messages['sendingmessage'] = 'Նամակի ուղարկում…';
$messages['messagesent'] = 'Նամակն ուղարկված է';
$messages['savingmessage'] = 'Նամակի գրանցում…';
$messages['messagesaved'] = 'Նամակը գրանցվեց որպես սևագիր';
$messages['successfullysaved'] = 'Գրանցված է';
$messages['addedsuccessfully'] = 'Հասցեն ավելացված է';
$messages['contactnameexists'] = 'Նույն անունով արդեն անձ գոյություն ունի։';
$messages['blockedimages'] = 'Ձեր անվտանգության համար, այս նամակի արտաքին նկարներն բեռնված չեն';
$messages['encryptedmessage'] = 'Ներողություն, այս նամակը կոդավորված է';
$messages['nocontactsfound'] = 'Հասցեներ չկան';
$messages['contactnotfound'] = 'Որոնվող հասցեն չգտնվեց';
$messages['sendingfailed'] = 'Նամակի ուղարկումը ձախողվեց';
$messages['senttooquickly'] = 'Խնդրում ենք սպասել $sec վարկյան մինչ այս նամակն ուղարկելը';
$messages['errormoving'] = 'Նամակի տեղափոխման ձախողում';
$messages['errorcopying'] = 'Հաղորդագրության պատճենումը ձախողվեց։';
$messages['errordeleting'] = 'Նամակի ջնջման ձախողում';
$messages['errormarking'] = 'Հաղորդագրության նշումը ձախողվեց։';
$messages['deletecontactconfirm']  = 'Ուզու՞մ էք ջնջել նշված անձերին';
$messages['deletegroupconfirm']  = 'Դուք իսկապե՞ս ուզում եք ջնջել նշված խումբը։';
$messages['deletemessagesconfirm'] = 'Ուզու՞մ էք ջնջել նշված նամակները';
$messages['deletefolderconfirm']  = 'Ուզու՞մ էք ջնջել այս դարակը';
$messages['purgefolderconfirm']  = 'Ուզու՞մ էք ջնջել այս դարակի բոլոր նամակները';
$messages['contactdeleting'] = 'Անձի ջնջում…';
$messages['groupdeleting'] = 'Խմբի ջնջում…';
$messages['folderdeleting'] = 'Դարակը ջնջվում է…';
$messages['foldermoving'] = 'Դարակը տեղափոխվում է…';
$messages['foldersubscribing'] = 'Պանակի բաժանորդագրում…';
$messages['folderunsubscribing'] = 'Պանակի ապաբաժանորդագրում…';
$messages['formincomplete'] = 'Ձևը թերի է լրացված';
$messages['noemailwarning'] = 'Մուտքագրեք ճիշտ էլ. հասցե';
$messages['nonamewarning']  = 'Մուտքագրեք անուն';
$messages['nopagesizewarning'] = 'Մուտքագրեք էջի չափս';
$messages['norecipientwarning'] = 'Մուտքագրեք նվազագույնը մեկ հասցեատեր';
$messages['nosubjectwarning']  = 'Վերնագիր բացակայում է, ցանկանո՞ւմ եք լրացնել';
$messages['nobodywarning'] = 'Ուղարկե՞լ այս նամակը դատարկ';
$messages['nosearchname'] = 'Մուտքագրեք հասցեատեր կամ էլ. հասցե';
$messages['notuploadedwarning'] = 'Ոչ բոլոր կցված նյութերն են վերբեռնվել։ Սպասեք կամ ընդհատեք վերբեռնումը։';
$messages['searchsuccessful'] = 'Գտնվեց $nr նամակ';
$messages['contactsearchsuccessful'] = 'Գտնվել է $nr անձ։';
$messages['searchnomatch'] = 'Համապատասխան նամակներ չգտնվեցին';
$messages['searching'] = 'Որոնում...';
$messages['checking'] = 'Ստուգում…';
$messages['nospellerrors'] = 'Ուղագրական սխալներ չկան';
$messages['folderdeleted'] = 'Դարակը ջնջվեց';
$messages['foldersubscribed'] = 'Պանակին բաժանորդագրումը հաջողվեց։';
$messages['folderunsubscribed'] = 'Պանակից ապաբաժանորդագրումը հաջողվեց։';
$messages['deletedsuccessfully'] = 'Ջնջված է';
$messages['converting'] = 'Նամակի ձևավորման հեռացում…';
$messages['messageopenerror'] = 'Նամակի բեռնվումը սերվերից ձախողվեց';
$messages['fileuploaderror'] = 'Ֆայլի կցումն ձախողվեց';
$messages['filesizeerror'] = 'Ֆայլի չափը գերազանցում է մաքսիմալը՝ $size';
$messages['sourceisreadonly'] = 'Այս հասցեն պաշտպանված է';
$messages['errorsavingcontact'] = 'Հասցեի գրանցումն ձախողվեց';
$messages['movingmessage'] = 'Նամակը տեղափոխվում է…';
$messages['copyingmessage'] = 'Հաղորդագրությունների պատճենում…';
$messages['copyingcontact'] = 'Անձանց պատճենում…';
$messages['deletingmessage'] = 'Հաղորդագրությունների ջնջում…';
$messages['markingmessage'] = 'Հաղորդագրությունների նշում…';
$messages['addingmember'] = 'Անձանց ավելացում խմբին…';
$messages['removingmember'] = 'Անձանց հեռացում խմբից…';
$messages['receiptsent'] = 'Նամակի ընթերցման ծանուցագիրն ուղարկված է';
$messages['errorsendingreceipt'] = 'Ծանուցագրի ուղարկումը ձախողվեց';
$messages['deleteidentityconfirm'] = 'Դուք իսկապե՞ս ուզում եք ջնջել այս ինքնությունը։';
$messages['nodeletelastidentity'] = 'Անհնար է ջնջել վերջին տարբերակը';
$messages['forbiddencharacter'] = 'Դարակի անունը պարունակում է անթույլատրելի նշան';
$messages['selectimportfile'] = 'Ընտրեք ուղարկվող ֆայլը';
$messages['addresswriterror'] = 'Ընտրված հասցեագիրքը ենթակա չէ փոփոխման';
$messages['contactaddedtogroup'] = 'Անձինք բարեհաջող ավելացվեցին խմբին։';
$messages['contactremovedfromgroup'] = 'Անձինք բարեհաջող հանվեցին խմբից։';
$messages['importwait'] = 'Ներկրումն ընթացքի մեջ է...';
$messages['importconfirm'] = '$inserted նոր ներկրված հասցեներ, $skipped արդեն առկա հասցեներ՝ <p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Բաց թողնվեց $skipped առկա գրառում</b>';
$messages['opnotpermitted'] = 'Գործողությունը անթույլատրելի է։';
$messages['httpreceivedencrypterror'] = 'Համակարգի լարքի սխալ։ Դիմեք համակարգը սպասարկող անձնակազմին։ <b>Ձեր նամակը ուղարկված չէ։</b>';
$messages['smtpconnerror'] = 'SMTP սխալ ($code)` Սերվերի հետ կապը ձախողվեց։';
$messages['smtpautherror'] = 'SMTP սխալ ($code)` Նույնականացումը ձախողվեց։';
$messages['smtpfromerror'] = 'SMTP սխալ ($code)` Որպես "$from" ($msg) հաղորդագրությունը ուղարկելը ձախողվեց։';
$messages['smtptoerror'] = 'SMTP սխալ ($code)` Հաղորդագրության ստացող "$to"-ին ($msg) ավելացնելը ձախողվեց։';
$messages['smtprecipientserror'] = 'SMTP սխալ` ստացողների ցուցակի ընթերցման ձախողում։';
$messages['smtperror'] = 'SMTP սխալ` $msg';
$messages['toomanyrecipients'] = 'Ստացողների քանակը չափազանց մեծ է։ Նվազեցրեք մինչև $max-ը։';
$messages['maxgroupmembersreached'] = 'Խմբի անդամների քանաքը գերազանցում է թույլատրելի $max-ը։';
$messages['contactdelerror'] = 'Անձանց ջնջումը ձախողվեց։';
$messages['contactdeleted'] = 'Անձանց ջնջումը հաջողվեց։';
$messages['contactrestoreerror'] = 'Ջնջված անձանց վերականգնումը ձախողվեց։';
$messages['contactrestored'] = 'Ջնջված անձանց վերականգնումը հաջողվեց։';
$messages['groupdeleted'] = 'Խումբը ջնջվեց։';
$messages['grouprenamed'] = 'Խումբը վերանվանվեց։';
$messages['groupcreated'] = 'Խումբը ստեղծվեց։';
$messages['savedsearchdeleted'] = 'Պահպանված որոնումը ջնջվեց։';
$messages['savedsearchdeleteerror'] = 'Պահպանված որոնման ջնջումը ձախողվեց։';
$messages['savedsearchcreated'] = 'Որոնումը պահպանվեց։';
$messages['savedsearchcreateerror'] = 'Պահպանված որոնման ստեղծումը ձախողվեց։';
$messages['messagedeleted'] = 'Հաղորդագրությունները ջնջվեցին։';
$messages['messagemoved'] = 'Հաղորդագրությունները տեղափոխվեցին։';
$messages['messagecopied'] = 'Հաղորդագրությունները պատճենվեցին։';
$messages['messagemarked'] = 'Հաղորդագրությունները նշվեցին։';
$messages['autocompletechars'] = 'Ավտոլրացման համար ներմուծեք առնվազն $min նիշ։';
$messages['autocompletemore'] = 'Գտնված են համապատասխանող գրառումներ, ներմուծեք հավելյալ նիշեր։';
$messages['namecannotbeempty'] = 'Անունը դատարկ չի կարող լինել։';
$messages['nametoolong'] = 'Անունը չափազանց երկար է։';
$messages['folderupdated'] = 'Պանակը թարմացվեց։';
$messages['foldercreated'] = 'Պանակը ստեղծվեց։';
$messages['invalidimageformat'] = 'Պատկերի սխալ ձևաչափ։';
$messages['mispellingsfound'] = 'Հաղորդագրության մեջ կան տառասխալներ։';
$messages['parentnotwritable'] = 'Նշված պանակի մեջ պանակի ստեղծումը կամ տեղափոխումը անհնար է անբավարար իրավունքների պատճառով։';
$messages['messagetoobig'] = 'Հաղորդագրության մասը չափազանց մեծ է սպասարկման համար։';
localization/eu_ES/timezones.inc000064400000047166151727150570012774 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburgo';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Muqdisho';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'N\'Djamena';
$labels['tz:africa:niamey'] = 'Niamei';
$labels['tz:africa:nouakchott'] = 'Nuakxot';
$labels['tz:africa:ouagadougou'] = 'Uagadugu';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Aingira';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaína';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'Errioxa';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Río Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucumán';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asuncion';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Badia';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Badia';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadalupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Habana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaika';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinika';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexiko Hiria';
$labels['tz:america:miquelon'] = 'Mikelune';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Ipar Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antartika';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Artikoa';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Bakú';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damasko';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nikosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkanda';
$labels['tz:asia:seoul'] = 'Seul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulan Bator';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantic';
$labels['tz:atlantic:azores'] = 'Azoreak';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cabo Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'Hego Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakan';
$labels['tz:europe:athens'] = 'Atenas';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brusela';
$labels['tz:europe:bucharest'] = 'Bukarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Kopenhage';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernesey      ';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisboa';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'Londres';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:madrid'] = 'Madril';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Mosku';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praga';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Erroma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikanoa';
$labels['tz:europe:vienna'] = 'Viena';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warsaw';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldivak';
$labels['tz:indian:mauritius'] = 'Maurizio';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapago';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/eu_ES/labels.inc000064400000103250151727150570012204 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Ongi etorri $product-ra';
$labels['username'] = 'Erabiltzaile-izena';
$labels['password'] = 'Pasahitza';
$labels['server'] = 'Zerbitzaria';
$labels['login'] = 'Saio hasiera';
$labels['oauthlogin'] = 'Hasi saioa &hornitzaile batekin';
$labels['menu'] = 'Menua';
$labels['logout'] = 'Irten';
$labels['mail'] = 'E-posta';
$labels['settings'] = 'Ezarpenak';
$labels['addressbook'] = 'Helbide liburua';
$labels['darkmode'] = 'Modu iluna';
$labels['lightmode'] = 'Modu argia';
$labels['inbox'] = 'Sarrera ontzia';
$labels['drafts'] = 'Zirriborroak';
$labels['sent'] = 'Bidalitakoak';
$labels['trash'] = 'Zakarrontzia';
$labels['junk'] = 'Zabor-posta';
$labels['show_real_foldernames'] = 'Erakutsi karpeta berezien benetako izenak';
$labels['subject'] = 'Gaia';
$labels['from'] = 'Nork';
$labels['sender'] = 'Igorlea';
$labels['to'] = 'Nori';
$labels['cc'] = 'Kopia';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Erantzun honi';
$labels['followupto'] = 'Jarraipena honi';
$labels['date'] = 'Data';
$labels['size'] = 'Tamaina';
$labels['priority'] = 'Lehentasuna';
$labels['organization'] = 'Erakundea';
$labels['readstatus'] = 'Irakurri egoera';
$labels['listoptions'] = 'Zerrendatu aukerak...';
$labels['listoptionstitle'] = 'Zerrendatu aukerak';
$labels['mailboxlist'] = 'Karpetak';
$labels['messagesfromto'] = '$from -tik $to -ra $count mezuetatik';
$labels['threadsfromto'] = '$from -etik $to -rako gaiak (guztira $count)';
$labels['messagenrof'] = '$nr mezua $count -tik';
$labels['fromtoshort'] = '$from - $to , guztira $count';
$labels['copy'] = 'Kopiatu';
$labels['move'] = 'Mugitu';
$labels['moveto'] = 'Mugitu hona...';
$labels['copyto'] = 'Kopiatu hona...';
$labels['download'] = 'Deskargatu';
$labels['open'] = 'Ireki';
$labels['showattachment'] = 'Erakutsi';
$labels['showanyway'] = 'Erakutsi edonola';
$labels['filename'] = 'Fitxategi-izena';
$labels['filesize'] = 'Fitxategi-tamaina';
$labels['addtoaddressbook'] = 'Gehitu helbide liburura';
$labels['sun'] = 'Iga';
$labels['mon'] = 'Al';
$labels['tue'] = 'As';
$labels['wed'] = 'Azt';
$labels['thu'] = 'Og';
$labels['fri'] = 'Or';
$labels['sat'] = 'Lar';
$labels['sunday'] = 'Igandea';
$labels['monday'] = 'Astelehena';
$labels['tuesday'] = 'Asteartea';
$labels['wednesday'] = 'Asteazkena';
$labels['thursday'] = 'Osteguna';
$labels['friday'] = 'Ostirala';
$labels['saturday'] = 'Larunbata';
$labels['jan'] = 'Urt';
$labels['feb'] = 'Ots';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Api';
$labels['may'] = 'Mai';
$labels['jun'] = 'Eka';
$labels['jul'] = 'Uzt';
$labels['aug'] = 'Abu';
$labels['sep'] = 'Ira';
$labels['oct'] = 'Urr';
$labels['nov'] = 'Aza';
$labels['dec'] = 'Abe';
$labels['longjan'] = 'Urtarrila';
$labels['longfeb'] = 'Otsaila';
$labels['longmar'] = 'Martxoa';
$labels['longapr'] = 'Apirila';
$labels['longmay'] = 'Maiatza';
$labels['longjun'] = 'Ekaina';
$labels['longjul'] = 'Uztaila';
$labels['longaug'] = 'Abuztua';
$labels['longsep'] = 'Iraila';
$labels['longoct'] = 'Urria';
$labels['longnov'] = 'Azaroa';
$labels['longdec'] = 'Abendua';
$labels['today'] = 'Gaur';
$labels['refresh'] = 'Freskatu';
$labels['checkmail'] = 'Arakatu mezu berrien bila';
$labels['compose'] = 'Idatzi mezu bat';
$labels['writenewmessage'] = 'Sortu mezu berri bat';
$labels['reply'] = 'Erantzun';
$labels['replytomessage'] = 'Mezuari erantzun';
$labels['replytoallmessage'] = 'Bidaltzaileari eta hartzaile guztiei erantzun';
$labels['replyall'] = 'Guztiei erantzun';
$labels['replylist'] = 'Erantzun zerrenda';
$labels['forward'] = 'Birbidali';
$labels['forwardinline'] = 'Birbidali barnean';
$labels['forwardattachment'] = 'Birbidali eranskin gisa';
$labels['forwardmessage'] = 'Birbidali mezua';
$labels['bouncemsg'] = 'Bidali berriro (errebotatu)';
$labels['bounce'] = 'Bidali berriro';
$labels['deletemessage'] = 'Ezabatu mezua';
$labels['movemessagetotrash'] = 'Mugitu mezua zakarrontzira';
$labels['printmessage'] = 'Inprimatu mezu hau';
$labels['previousmessage'] = 'Erakutsi aurreko mezuak';
$labels['firstmessage'] = 'Erakutsi lehenengo mezua';
$labels['nextmessage'] = 'Erakutsi hurrengo mezua';
$labels['lastmessage'] = 'Erakutsi azken mezua';
$labels['backtolist'] = 'Mezu zerrendara itzuli';
$labels['viewsource'] = 'Erakutsi kodea';
$labels['mark'] = 'Markatu';
$labels['markmessages'] = 'Markatu mezuak';
$labels['markread'] = 'Irakurria bezala';
$labels['markunread'] = 'Ez-irakurria bezala';
$labels['markflagged'] = 'Markatua bezala';
$labels['markunflagged'] = 'Ez-markatua bezala';
$labels['markundeleted'] = 'Ezabatu gabe gisa';
$labels['moreactions'] = 'Ekintza gehiago...';
$labels['markallread'] = 'Markatu dena irakurrita bezala';
$labels['folders-cur'] = 'Hautatutako karpeta bakarrik';
$labels['folders-sub'] = 'Hautatutako karpeta eta haren azpikarpetak ';
$labels['folders-all'] = 'Karpeta guztiak';
$labels['more'] = 'Gehiago';
$labels['back'] = 'Atzera';
$labels['options'] = 'Aukerak';
$labels['composeoptions'] = 'Konposatu aukerak';
$labels['optionsandattachments'] = 'Aukerak eta eranskinak';
$labels['actions'] = 'Ekintzak';
$labels['first'] = 'Lehenengoa';
$labels['last'] = 'Azkena';
$labels['previous'] = 'Aurrekoa';
$labels['next'] = 'Hurrengoa';
$labels['select'] = 'Hautatu';
$labels['selection'] = 'Hautapena';
$labels['all'] = 'Denak';
$labels['none'] = 'Bat ere ez';
$labels['currpage'] = 'Uneko orrialdea';
$labels['isread'] = 'Irakurri';
$labels['unread'] = 'Irakurri gabeak';
$labels['flagged'] = 'Banderaduna';
$labels['unflagged'] = 'Etiketatu gabe';
$labels['unanswered'] = 'Erantzun gabea';
$labels['withattachment'] = 'Eranskinarekin';
$labels['deleted'] = 'Ezabatuak';
$labels['undeleted'] = 'Ezabatu gabeak';
$labels['replied'] = 'Erantzunda';
$labels['forwarded'] = 'Birbidalita';
$labels['invert'] = 'Alderantzizkatu';
$labels['filter'] = 'Iragazkia';
$labels['list'] = 'Zerrenda';
$labels['threads'] = 'Hariak';
$labels['expand-all'] = 'Hedatu denak';
$labels['expand-unread'] = 'Ireki irakurri gabeak';
$labels['collapse-all'] = 'Tolestu guztiak';
$labels['threaded'] = 'Harian';
$labels['showunread'] = 'Erakutsi irakurri gabeko mezuak';
$labels['autoexpand_threads'] = 'Hedatu mezu hariak';
$labels['do_expand'] = 'hari guztiak';
$labels['expand_only_unread'] = 'soilik irakurri gabeko mezuak dituztenak';
$labels['fromto'] = 'Nork/Nori';
$labels['flag'] = 'Bandera';
$labels['attachment'] = 'Eranskina';
$labels['nonesort'] = 'Bat ere ez';
$labels['sentdate'] = 'Bidalketa data';
$labels['arrival'] = 'Jasotze data';
$labels['asc'] = 'gorantz';
$labels['desc'] = 'beheruntz';
$labels['listcolumns'] = 'Zerrenda-zutabeak';
$labels['listsorting'] = 'Zutabea ordenatzen';
$labels['listorder'] = 'Ordenatze irizpidea';
$labels['listmode'] = 'Zerrenda ikuspegiko modua';
$labels['lmode'] = 'Zerrenda modua';
$labels['layout'] = 'Diseinua';
$labels['layoutwidescreen'] = 'Panoramikoa';
$labels['layoutdesktop'] = 'Mahaigaina';
$labels['layoutlist'] = 'Zerrenda';
$labels['layoutwidescreendesc'] = 'Panoramikoa (3-zutabeko ikuspegia)';
$labels['layoutdesktopdesc'] = 'Mahaigaina (zerrenda zabalean eta postaren aurrebista behean)';
$labels['layoutlistdesc'] = 'Zerrenda (postaren aurrebistarik gabe)';
$labels['folderactions'] = 'Karpeta-ekintzak...';
$labels['compact'] = 'Trinkotu';
$labels['empty'] = 'Hustu';
$labels['importmessages'] = 'Inportatu mezuak';
$labels['mailimportdesc'] = 'Kargatu dezakezu mezua fitxategiak erabiliaz <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> edo <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> formatuetan.';
$labels['mailimportzip'] = 'Hainbat fitxategi konprimatu daiteke zip fitxategietan.';
$labels['quota'] = 'Disko erabilera';
$labels['unknown'] = 'ezezaguna';
$labels['unlimited'] = 'mugagabea';
$labels['quotatype'] = 'Kuota mota';
$labels['quotatotal'] = 'Muga';
$labels['quotaused'] = 'Erabilita';
$labels['quotastorage'] = 'Diskoko tokia';
$labels['quotamessage'] = 'Mezu kopurua';
$labels['shortheaderdate'] = '$date egunean';
$labels['shortheaderto'] = ' $date -ko $to -etara';
$labels['shortheaderfrom'] = '$date -ko $from -etatik';
$labels['quicksearch'] = 'Bilaketa azkarra';
$labels['searchplaceholder'] = 'Bilatu...';
$labels['resetsearch'] = 'Berrabiarazi bilaketa';
$labels['searchmod'] = 'Bilatu modifikadoreak';
$labels['msgtext'] = 'Mezu osoa';
$labels['body'] = 'Gorputza';
$labels['type'] = 'Mota';
$labels['namex'] = 'Izena';
$labels['searchscope'] = 'Esparrua';
$labels['currentfolder'] = 'Uneko karpeta';
$labels['subfolders'] = 'Hau eta azpikarpetak';
$labels['allfolders'] = 'Karpeta guztiak';
$labels['searchinterval-1W'] = 'astebete baino zaharragoak';
$labels['searchinterval-1M'] = 'hilabete baino zaharragoak';
$labels['searchinterval-1Y'] = 'urtebete baino zaharragoak';
$labels['searchinterval1W'] = 'astebetea baino berriagoak';
$labels['searchinterval1M'] = 'hilabetea baino berriagoak';
$labels['searchinterval1Y'] = 'urtebetea baino berriagoak';
$labels['openinextwin'] = 'Ireki leiho berrian';
$labels['emlsave'] = 'Deskargatu (.eml)';
$labels['changeformattext'] = 'Bistaratu formaturik gabeko testuan';
$labels['changeformathtml'] = 'Bistaratu HTML formatuan';
$labels['editasnew'] = 'Editatu berri bezala';
$labels['send'] = 'Bidali';
$labels['sendmessage'] = 'Bidali mezua';
$labels['savemessage'] = 'Gorde zirriborro gisa';
$labels['addattachment'] = 'Erantsi fitxategia';
$labels['charset'] = 'Karaktere jokoa';
$labels['editortype'] = 'Editore mota';
$labels['returnreceipt'] = 'Bidali jasotze-agiria';
$labels['dsn'] = 'Entrega-egoeraren jakinarazpena';
$labels['keepformatting'] = 'Segi formateatzen';
$labels['mailreplyintro'] = '$date egunean, $sender-(e)k idatzi du:';
$labels['originalmessage'] = 'Jatorrizko mezua';
$labels['selectimage'] = 'Hautatu irudia';
$labels['addimage'] = 'Gehitu irudia';
$labels['selectmedia'] = 'Hautatu bideoa';
$labels['addmedia'] = 'Gehitu bideoa';
$labels['encrypt'] = 'Zifratu';
$labels['encryptmessage'] = 'Zifratu mezua';
$labels['encryptmessagemailvelope'] = 'Zifratu mezua Mailvelope-ren bidez';
$labels['importpubkeys'] = 'Inportatu gako publikoak';
$labels['encryptedsendialog'] = 'Zifratutako mezua bidaltzen';
$labels['encryptandsign'] = 'Zifratu eta sinatu';
$labels['keyid'] = 'Gakoaren IDa';
$labels['keylength'] = 'Bitak';
$labels['keyexpired'] = 'Iraungita';
$labels['keyrevoked'] = 'Ukatua';
$labels['bccinstead'] = 'Erabili Bcc';
$labels['addheader'] = 'Gehitu hartzailea (goiburua)';
$labels['insert'] = 'Txertatu';
$labels['insertcontact'] = 'Txertatu kontaktua(k)';
$labels['recipient'] = 'Hartzailea';
$labels['recipientedit'] = 'Hartzailearen edizioa';
$labels['editidents'] = 'Editatu identitateak';
$labels['spellcheck'] = 'Ortografia-egiaztatu';
$labels['checkspelling'] = 'Egiaztaketa ortografikoa';
$labels['resumeediting'] = 'Editatzen jarraitu';
$labels['revertto'] = 'Itzuli hona';
$labels['restore'] = 'Berrezarri';
$labels['restoremessage'] = 'Leheneratu mezua?';
$labels['ignore'] = 'Ezikusi';
$labels['responses'] = 'Erantzunak';
$labels['insertresponse'] = 'Txertatu erantzun bat';
$labels['manageresponses'] = 'Kudeatu erantzunak';
$labels['newresponse'] = 'Sortu erantzun berria';
$labels['addresponse'] = 'Gehitu erantzuna';
$labels['editresponse'] = 'Editatu erantzuna';
$labels['editresponses'] = 'Editatu erantzunak';
$labels['responsename'] = 'Izena';
$labels['responsetext'] = 'Erantzun testua';
$labels['attach'] = 'Erantsi';
$labels['attachments'] = 'Eranskinak';
$labels['upload'] = 'Kargatu';
$labels['uploadprogress'] = '$percent ($total-etik $current)';
$labels['close'] = 'Itxi';
$labels['messageoptions'] = 'Mezu-aukerak...';
$labels['togglecomposeoptions'] = 'Aktibatu/desaktibatu konposizio aukerak';
$labels['attachmentrename'] = 'Berrizendatu eranskina';
$labels['low'] = 'Baxua';
$labels['lowest'] = 'Baxuena';
$labels['normal'] = 'Normala';
$labels['high'] = 'Altua';
$labels['highest'] = 'Altuena';
$labels['nosubject'] = '(gairik gabea)';
$labels['showimages'] = 'Bistaratu irudiak';
$labels['allow'] = 'Baimendu';
$labels['alwaysshow'] = 'Beti ikusi $sender -en irudiak';
$labels['alwaysallow'] = 'Baimendu beti $sender -engandik';
$labels['isdraft'] = 'Hau zirriborro bat da';
$labels['andnmore'] = '$nr gehiago...';
$labels['details'] = 'Zehaztasunak';
$labels['summary'] = 'Laburpena';
$labels['headers'] = 'Goiburuak';
$labels['allheaders'] = 'Goiburu guztiak...';
$labels['togglemoreheaders'] = 'Erakutsi mezu mezu-goiburu gehiago';
$labels['togglefullheaders'] = 'Erakutsi/Ezkutatu mezuen goiburuak';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Formaturik gabeko testua';
$labels['savesentmessagein'] = 'Gorde mezua hemen';
$labels['dontsave'] = 'ez gorde';
$labels['maxuploadsize'] = 'Baimendutako gehienezko fitxategi tamaina: $size';
$labels['addcc'] = 'Gehitu Cc (kopia)';
$labels['addbcc'] = 'Gehitu Bcc (kopia ezkutua)';
$labels['addreplyto'] = 'Gehitu erantzun-honi';
$labels['addfollowupto'] = 'Gehitu Jarraitu honi';
$labels['sendreceipt'] = 'Bidali irakurragiria?';
$labels['mdnrequest'] = 'Mezu honen bidaltzaileak mezua irakurtzen duzunean jakinaraztea eskatu du. Bidaltzailea ohartu nahi duzu?';
$labels['receiptread'] = 'Bidali jasotze-agiria (irakurria)';
$labels['yourmessage'] = 'Hau zure mezuaren jasotze-agiria da';
$labels['receiptnote'] = 'Oharra:  jasotze-agiri honek hartzailearen ordenagailuan mezua bistaratu dela adierazten du besterik gabe. Honek ez du esan nahi hartzaileak mezua irakurri edo/eta ulertu duenik:';
$labels['sendalwaysto'] = 'Bidali beti $email-ri';
$labels['zoomin'] = 'Handiagotu';
$labels['zoomout'] = 'Txikiagotu';
$labels['rotate'] = 'Biratu';
$labels['increaseimage'] = 'Handiagotu irudiaren tamaina';
$labels['decreaseimage'] = 'Txikiagotu irudiaren tamaina';
$labels['rotateimage'] = 'Biratu irudia';
$labels['showtools'] = 'Erakutsi irudi-tresnak';
$labels['hidetools'] = 'Ezkutatu irudi-tresnak';
$labels['name'] = 'Bistaratu izena';
$labels['firstname'] = 'Izena';
$labels['surname'] = 'Abizena';
$labels['middlename'] = 'Izenaren bigarren partea';
$labels['nameprefix'] = 'Aurrizkia';
$labels['namesuffix'] = 'Atzizkia';
$labels['nickname'] = 'Ezizena';
$labels['jobtitle'] = 'Lanpostua ';
$labels['department'] = 'Departamentoa';
$labels['gender'] = 'Generoa';
$labels['maidenname'] = 'Ezkondu aurreko izena';
$labels['email'] = 'E-posta';
$labels['phone'] = 'Telefonoa';
$labels['address'] = 'Helbidea';
$labels['street'] = 'Kalea';
$labels['locality'] = 'Herria';
$labels['zipcode'] = 'Posta kodea';
$labels['region'] = 'Estatua/Probintzia';
$labels['country'] = 'Herrialdea';
$labels['birthday'] = 'Urtebetetze-eguna';
$labels['anniversary'] = 'Urteurren-eguna';
$labels['website'] = 'Webgunea';
$labels['instantmessenger'] = 'Txata';
$labels['notes'] = 'Oharrak';
$labels['male'] = 'gizon';
$labels['female'] = 'emakume';
$labels['manager'] = 'Kudeatzailea';
$labels['assistant'] = 'Laguntzailea';
$labels['spouse'] = 'Ezkontidea';
$labels['allfields'] = 'Eremu guztiak';
$labels['search'] = 'Bilatu';
$labels['searchresult'] = 'Bilaketaren emaitza';
$labels['advsearch'] = 'Bilaketa aurreratua';
$labels['advanced'] = 'Aurreratua';
$labels['other'] = 'Beste';
$labels['printcontact'] = 'Inprimatu kontaktua';
$labels['qrcode'] = 'QR kodea';
$labels['typehome'] = 'Etxekoa';
$labels['typework'] = 'Lanekoa';
$labels['typeother'] = 'Bestelakoa';
$labels['typemobile'] = 'Mugikorra';
$labels['typemain'] = 'Nagusia';
$labels['typehomefax'] = 'Etxeko faxa';
$labels['typeworkfax'] = 'Laneko faxa';
$labels['typecar'] = 'Autoa';
$labels['typepager'] = 'Pertsona bilagailua';
$labels['typevideo'] = 'Bideo';
$labels['typeassistant'] = 'Laguntzailea';
$labels['typehomepage'] = 'Etxeko orria';
$labels['typeblog'] = 'Bloga';
$labels['typeprofile'] = 'Profila';
$labels['addfield'] = 'Gehitu eremua...';
$labels['addcontact'] = 'Gehitu kontaktua';
$labels['editcontact'] = 'Editatu kontaktua';
$labels['contacts'] = 'Kontaktuak';
$labels['contactproperties'] = 'Kontaktuen ezaugarriak';
$labels['contactnameandorg'] = 'Izena eta erakundea';
$labels['personalinfo'] = 'Informazio pertsonala';
$labels['personal'] = 'Pertsonala';
$labels['contactphoto'] = 'Kontaktuaren argazkia';
$labels['edit'] = 'Editatu';
$labels['cancel'] = 'Utzi';
$labels['save'] = 'Gorde';
$labels['delete'] = 'Ezabatu';
$labels['discard'] = 'Baztertu';
$labels['continue'] = 'Jarraitu';
$labels['ok'] = 'Ados';
$labels['rename'] = 'Berrizendatu';
$labels['addphoto'] = 'Gehitu';
$labels['replacephoto'] = 'Ordeztu';
$labels['uploadphoto'] = 'Kargatu argazkia';
$labels['choosefile'] = 'Aukeratu fitxategia...';
$labels['choosefiles'] = 'Aukeratu fitxategiak...';
$labels['browse'] = 'Arakatu';
$labels['newcontact'] = 'Sortu kontaktu berria';
$labels['deletecontact'] = 'Ezabatu hautatutako kontaktuak';
$labels['composeto'] = 'Idatzi mezua honi:';
$labels['contactsfromto'] = '$from -tik $to -ra $count kontaktuak';
$labels['print'] = 'Inprimatu';
$labels['export'] = 'Esportatu';
$labels['exportall'] = 'Esportatu dena';
$labels['exportsel'] = 'Esportatu hautaketa';
$labels['exportvcards'] = 'Esportatu kontaktuak vCard formatuan';
$labels['newgroup'] = 'Sortu talde berria';
$labels['addgroup'] = 'Gehitu taldea';
$labels['grouprename'] = 'Berrizendatu taldea';
$labels['groupdelete'] = 'Ezabatu taldea';
$labels['groupassign'] = 'Gehitu taldean...';
$labels['groupremove'] = 'Kendu taldetik';
$labels['groupremoveselected'] = 'Ezabatu taldetik hautatutako kontaktuak';
$labels['uponelevel'] = 'Igo maila bat';
$labels['previouspage'] = 'Erakutsi aurreko orria';
$labels['firstpage'] = 'Erakutsi lehenengo orria';
$labels['nextpage'] = 'Erakutsi hurrengo orria';
$labels['lastpage'] = 'Erakutsi azken orria';
$labels['group'] = 'Taldea';
$labels['groups'] = 'Taldeak';
$labels['listgroup'] = 'Zerrendatu taldeko partaideak';
$labels['personaladrbook'] = 'Helbide pertsonalak';
$labels['searchsave'] = 'Gorde bilaketa';
$labels['searchdelete'] = 'Ezabatu bilaketa';
$labels['import'] = 'Inportatu';
$labels['importcontacts'] = 'Inportatu kontaktuak';
$labels['importfromfile'] = 'Inportatu fitxategitik';
$labels['importtarget'] = 'Gehitu kontaktuak hona:';
$labels['importreplace'] = 'Ordezkatu helbide-liburu osoa';
$labels['importgroups'] = 'Inportatu talde-esleipenak';
$labels['importgroupsall'] = 'Dena (sortu taldeak behar izatekotan)';
$labels['importgroupsexisting'] = 'Existitzen diren taldeentzat soilik';
$labels['importdesc'] = 'Kargatu ditzakezu kontaktuak dagoen helbide liburu batetik.<br/>Une honetan onartzen dugu helbideen inportazioa <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> edo CSV (komaz bereizita) datu formatuetan.';
$labels['importmapdesc'] = 'Baieztatu beheko eremuen mapen informazioa zuzena dela CSV (komaz bereizita) datuak inportatzen jarraitu aurretik.';
$labels['fieldnotmapped'] = 'Eremua ez da mapatu (ez inportatu)';
$labels['skipheader'] = 'Ez inportatu lehenengo lerroa (goiburuak)';
$labels['done'] = 'Egina';
$labels['settingsfor'] = 'Honen ezarpenak:';
$labels['about'] = 'Honi buruz';
$labels['preferences'] = 'Hobespenak';
$labels['userpreferences'] = 'Erabiltzailearen hobespenak';
$labels['editpreferences'] = 'Editatu erabiltzailearen hobespenak';
$labels['identities'] = 'Identitateak';
$labels['manageidentities'] = 'Kudeatu identitateak';
$labels['newidentity'] = 'Sortu identitate berria';
$labels['addidentity'] = 'Gehitu identitatea';
$labels['editidentity'] = 'Editatu identitatea';
$labels['identityencryption'] = 'Zifraketa';
$labels['preferhtml'] = 'Bistaratu HTML';
$labels['defaultcharset'] = 'Lehenetsitako karaktere-jokoa';
$labels['htmlmessage'] = 'HTML mezua';
$labels['messagepart'] = 'Zatia';
$labels['digitalsig'] = 'Sinadura digitala';
$labels['dateformat'] = 'Data-formatua';
$labels['timeformat'] = 'Ordu-formatua';
$labels['prettydate'] = 'Data politak';
$labels['setdefault'] = 'Ezarri lehenetsia';
$labels['autodetect'] = 'Automatikoa';
$labels['language'] = 'Hizkuntza';
$labels['timezone'] = 'Ordu zonaldea';
$labels['pagesize'] = 'Lerro orrialdeko';
$labels['signature'] = 'Sinadura';
$labels['dstactive'] = 'Udako ordutegia';
$labels['showinextwin'] = 'Ireki mezua leiho berrian';
$labels['composeextwin'] = 'Idatzi leiho berrian';
$labels['htmleditor'] = 'Idatzi HTML mezuak';
$labels['htmlonreply'] = 'HTML mezua erantzuteko';
$labels['htmlonreplyandforward'] = 'HTML mezua erantzuteko edo birbidaltzeko';
$labels['htmlsignature'] = 'HTML sinadura';
$labels['showemail'] = 'Erakutsi helbide elektronikoa bere bistaratze izenarekin';
$labels['previewpane'] = 'Aurrebista panela ikusi';
$labels['skin'] = 'Azal-interfazea';
$labels['logoutclear'] = 'Garbitu Zakarronzia irtetean';
$labels['logoutcompact'] = 'Trinkotu Sarrera irtetean';
$labels['uisettings'] = 'Erabiltzaile-interfazea';
$labels['serversettings'] = 'Zerbitzariaren ezarpenak';
$labels['mailboxview'] = 'Posta-kutxatila ikuspegia';
$labels['mdnrequests'] = 'Bidaltzailearen jakinarazpena';
$labels['askuser'] = 'galdetu erabiltzaileari';
$labels['autosend'] = 'bidali irakurragiria';
$labels['autosendknown'] = 'bidali irakurragiria nire kontaktuei, bestela galdetu niri';
$labels['autosendknownignore'] = 'bidali irakurragiria nire kontaktuei, bestela ez ikusi egin';
$labels['autosendtrusted'] = 'bidali irakurragiria konfiantzazko igorleei, bestela galdetu iezadazu';
$labels['autosendtrustedignore'] = 'bidali irakurragiria konfiantzazko igorleei, bestela ezikusi';
$labels['ignorerequest'] = 'Ez ikusi eskaera';
$labels['readwhendeleted'] = 'Markatu mezua irakurrita bezala ezabatzerakoan';
$labels['flagfordeletion'] = 'Markatu mezua ezabatzeko ezabatu beharrean';
$labels['skipdeleted'] = 'Ez erakutsi ezabatutako mezuak';
$labels['deletealways'] = 'Zakarrontzira bidaltzeak huts egiten badu, ezabatu';
$labels['deletejunk'] = 'Ezabatu zuzenean 
zabor-mezuak';
$labels['showremoteimages'] = 'Erakutsi konektatutako urrutiko irudiak';
$labels['allowremoteresources'] = 'Baimendu urrutiko baliabideak (irudia, estiloak)';
$labels['fromknownsenders'] = 'bidaltzaile ezagunengandik';
$labels['fromtrustedsenders'] = 'konfiantzazko igorleengandik';
$labels['frommycontacts'] = 'nire kontaktuengandik';
$labels['always'] = 'beti';
$labels['alwaysbutplain'] = 'beti, testu lauari erantzutean izan ezik';
$labels['showinlineimages'] = 'Erakutsi erantzitako irudiak mezuaren azpian';
$labels['autosavedraft'] = 'Zirriborroa automatikoki gorde';
$labels['everynminutes'] = '$n minuturo';
$labels['refreshinterval'] = 'Freskatu (bilatu mezu berriak eta abar)';
$labels['never'] = 'inoiz ez';
$labels['immediately'] = 'berehala';
$labels['messagesdisplaying'] = 'Mezuak bistaratzen';
$labels['messagescomposition'] = 'Mezuak idazten';
$labels['mimeparamfolding'] = 'Eranskinen izenak';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (beste batzuk)';
$labels['force7bit'] = 'Erabili MIME kodeketa 8 bitekok karakterentzat';
$labels['savelocalstorage'] = "Gorde nabigatzailearen biltegi lokalean (behin behinean)";
$labels['advancedoptions'] = 'Aukera aurreratuak';
$labels['toggleadvancedoptions'] = 'Toggle aukera aurreratuak';
$labels['focusonnewmessage'] = 'Fokatu leihoa mezu berrian';
$labels['checkallfolders'] = 'Egiaztatu karpeta guztiak mezu berrien bila';
$labels['displaynext'] = 'Bistaratu  zerrendako hurrengo sarrera ezabatu/lekuz aldatu ondoren';
$labels['defaultfont'] = 'Lehenetsitako letra-mota HTML mezuetarako';
$labels['mainoptions'] = 'Aukera nagusiak';
$labels['browseroptions'] = 'Nabigatze-aukerak';
$labels['section'] = 'Atala';
$labels['maintenance'] = 'Mantenua';
$labels['newmessage'] = 'Mezu berria';
$labels['signatureoptions'] = 'Sinadura-aukerak';
$labels['whenreplying'] = 'Erantzutean';
$labels['replyempty'] = 'ez aipatu jatorrizko mezua';
$labels['replytopposting'] = 'hasi mezu berria aipamenaren gainean';
$labels['replytoppostingnoindent'] = 'hasi mezu berria aipamenaren gainean (koskarik gabe)';
$labels['replybottomposting'] = 'hasi mezu berria aipamenaren azpian';
$labels['replyremovesignature'] = 'Erantzutean ezabatu mezuaren jatorrizko sinadura';
$labels['autoaddsignature'] = 'Gehitu sinadura automatikoki';
$labels['newmessageonly'] = 'bakarrik mezu berria';
$labels['replyandforwardonly'] = 'bakarri erantzun eta birbidalketak';
$labels['insertsignature'] = 'Txertatu sinadura';
$labels['sigbelow'] = 'Kokatu sinadura aipamenaren azpian';
$labels['sigseparator'] = 'Behartu banatzaile estandarra sinaduretan';
$labels['automarkread'] = 'Markatu mezuak irakurrita gisa';
$labels['afternseconds'] = '$n segundo eta gero';
$labels['reqmdn'] = 'Eskatu beti irakurragiria';
$labels['reqdsn'] = 'Eskatu beti entrega-egoeraren jakinarazpena';
$labels['replysamefolder'] = 'Kokatu erantzunak erantzuten ari den mezuarenkarpeta berean';
$labels['defaultabook'] = 'Lehenetsitako helbide-liburua';
$labels['autocompletesingle'] = 'Saltatu helbide elektroniko alternatiboak  osatze automatikoan';
$labels['listnamedisplay'] = 'Zerrendatu kontaktuak honela';
$labels['contactformmode'] = 'Kontaktuen formulario modua';
$labels['privatemode'] = 'Pribatua (etxekoa)';
$labels['businessmode'] = 'Lanekoa';
$labels['collectedaddresses'] = 'Bildutako helbideak';
$labels['collectedrecipients'] = 'Bildutako hartzaileak';
$labels['collectedrecipientsopt'] = 'Gorde irteerako email hartzaileak hemen';
$labels['collectedsendersopt'] = 'Gorde konfiantzazko igorleak hemen';
$labels['trustedsenders'] = 'Konfiantzako igorleak';
$labels['spellcheckbeforesend'] = 'Egiaztatu ortografia mezua bidali aurretik';
$labels['spellcheckoptions'] = 'Ortografia-egiaztatzearen aukerak';
$labels['spellcheckignoresyms'] = 'Ez ikusi sinboloak dituzten hitzak';
$labels['spellcheckignorenums'] = 'Ez ikusi zenbakiak dituzten hitzak';
$labels['spellcheckignorecaps'] = 'Ez ikusi letra kapitalak dituzten hitzak';
$labels['addtodict'] = 'Gehitu hiztegira';
$labels['mailtoprotohandler'] = 'Erregistratu mailto protokoloaren kudeatzailea:  estekak';
$labels['standardwindows'] = 'Tratatu popup leihoak leiho estandar gisa';
$labels['forwardmode'] = 'Mezuak birbidaltzen';
$labels['inline'] = 'Konektatua';
$labels['asattachment'] = 'eranskin moduan';
$labels['replyallmode'] = '[Erantzun denei] botoiaren lehenetsitako ekintza';
$labels['replyalldefault'] = 'erantzun denei';
$labels['replyalllist'] = 'erantzun posta zerrendara soilik (aurkitzekotan)';
$labels['allmessages'] = 'mezu guztiak';
$labels['olderxdays'] = '$x egun baino zaharrago';
$labels['folder'] = 'Karpeta';
$labels['folders'] = 'Karpetak';
$labels['foldername'] = 'Karpetaren izena';
$labels['subscribed'] = 'Harpideturik';
$labels['messagecount'] = 'Mezuak';
$labels['create'] = 'Sortu';
$labels['createfolder'] = 'Sortu karpeta berria';
$labels['managefolders'] = 'Kudeatu karpetak';
$labels['specialfolders'] = 'Karpeta bereziak';
$labels['properties'] = 'Ezaugarriak';
$labels['folderproperties'] = 'Karpeta-ezaugarriak';
$labels['parentfolder'] = 'Goragoko karpeta';
$labels['location'] = 'Kokalekua';
$labels['info'] = 'Informazioa';
$labels['getfoldersize'] = 'Klikatu ikusteko karpetaren tamaina';
$labels['changesubscription'] = 'Klikatu harpidetza aldatzeko';
$labels['foldertype'] = 'Karpeta mota';
$labels['personalfolder'] = 'Karpeta pribatua';
$labels['otherfolder'] = 'Beste erabiltzaileen karpetak';
$labels['sharedfolder'] = 'Karpeta publikoa';
$labels['findfolders'] = 'Bilatu karpetak';
$labels['findcontacts'] = 'Bilatu kontaktuak';
$labels['findmail'] = 'Bilatu posta mezuak';
$labels['namespace.personal'] = 'Pertsonala';
$labels['namespace.other'] = 'Beste erabiltzaileak';
$labels['namespace.shared'] = 'Partekatua';
$labels['dualuselabel'] = 'Bakarrik eduki dezake';
$labels['dualusemail'] = 'mezuak';
$labels['dualusefolder'] = 'karpetak';
$labels['generate'] = 'Sortu';
$labels['encryptioncreatekey'] = 'Sortu gako pare berria';
$labels['openmailvelopesettings'] = 'Ireki Mailvelope ezarpenak';
$labels['encryptionprivkeysinmailvelope'] = ' Badaukazu bat datozen $nr gako pribatu zure Mailvelope giltzarrian gordeta:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Bidaltzaile identitate honek jada ez dauka PGP gako pribaturik gordeta zure Mailvelope gehigarrian. Nahi al duzu bat sortzea mezuak zifratu ahal izateko?';
$labels['encryption'] = 'Zifraketa';
$labels['mailvelopeoptions'] = 'Mailvelope aukerak';
$labels['mailvelopemainkeyring'] = 'Erabili Mailvelope gako-sorta nagusia';
$labels['mailvelopenotfound'] = 'Mailvelope gehigarria ez dago gaituta/instalatuta zure nabigatzailean';
$labels['sortby'] = 'Honela ordenatu';
$labels['sortasc'] = 'Goraka ordenatu';
$labels['sortdesc'] = 'Ordenatu beherantz';
$labels['undo'] = 'Desegin';
$labels['installedplugins'] = 'Instalatutako plugin-ak';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Bertsioa';
$labels['source'] = 'Iturria';
$labels['destination'] = 'Helmuga';
$labels['license'] = 'Lizentzia';
$labels['support'] = 'Eskuratu laguntza';
$labels['savedsearches'] = 'Gordetako bilaketak';
$labels['dateformatY'] = 'UUUU';
$labels['dateformaty'] = 'UU';
$labels['dateformatm'] = 'HH';
$labels['dateformatd'] = 'EE';
$labels['dateformatj'] = 'E';
$labels['dateformatn'] = 'H';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Ingelesa';
$labels['westerneuropean'] = 'Mendebaldeko europearra';
$labels['easterneuropean'] = 'Ekialdeko europearra';
$labels['southeasterneuropean'] = 'Hego-ekialdeko europearra';
$labels['baltic'] = 'Baltikoa';
$labels['cyrillic'] = 'Zirilikoa';
$labels['arabic'] = 'Arabiarra';
$labels['greek'] = 'Grekoa';
$labels['hebrew'] = 'Hebrearra';
$labels['turkish'] = 'Turkiarra';
$labels['nordic'] = 'Nordikoa';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Zeltiar';
$labels['vietnamese'] = 'Vietnamdarra';
$labels['japanese'] = 'Japoniarra';
$labels['korean'] = 'Korearra';
$labels['chinese'] = 'Txinatarra';
$labels['arialabeltopnav'] = 'Leihoen kontrola';
$labels['arialabeltasknav'] = 'Aplikazioaren atazak';
$labels['arialabeltoolbar'] = 'Aplikazioaren tresna barra';
$labels['arialabellistnav'] = 'Zerrendako nabigazioa';
$labels['arialabelactivetask'] = 'Ataza aktiboa';
$labels['arialabelmessagessearchfilter'] = 'E-posten zerrendako iragazkia';
$labels['arialabelmailsearchform'] = 'Mezu elektronikoak bilatzeko formularioa';
$labels['arialabelcontactsearchform'] = 'Kontaktuak bilatzeko formularioa';
$labels['arialabelmailquicksearchbox'] = 'E-posta bilaketa sarrera';
$labels['arialabelquicksearchbox'] = 'Bilaketa sarrera';
$labels['arialabelfoldersearchfilter'] = 'Karpenten zerrendatze iragazkia';
$labels['arialabelfoldersearchform'] = 'Karpeten bilateta formularioa';
$labels['arialabelfolderlist'] = 'E-posta karpeta hautaketa';
$labels['arialabelmessagelist'] = 'E-posta mezuen zerrendatzea';
$labels['arialabelmailpreviewframe'] = 'Mezuaren aurrebista';
$labels['arialabelmailboxmenu'] = 'Karpetako ekintzen menua';
$labels['arialabellistselectmenu'] = 'Zerrenda hautatzeko menua';
$labels['arialabelthreadselectmenu'] = 'Hariak zerrendatzeko menua';
$labels['arialabelmessagelistoptions'] = 'Mezuen zerrenda bistaratzeko eta ordenatzeko aukerak';
$labels['arialabelmailimportdialog'] = 'Mezuak inportatzeko elkarrizketa';
$labels['arialabelmessagenav'] = 'Mezu nabigazioa';
$labels['arialabelmessagebody'] = 'Mezuaren gorputza';
$labels['arialabelmessageactions'] = 'Mezuen ekintzak';
$labels['arialabelcontactquicksearch'] = 'Kontaktuak bilatzeko formularioa';
$labels['arialabelcontactsearchbox'] = 'Kontaktuak bilatzeko sarrera';
$labels['arialabelmessageheaders'] = 'Mezuen goiburuak';
$labels['arialabelforwardingoptions'] = 'Birbidaltzeko aukerak';
$labels['arialabelreplyalloptions'] = 'Guztiei erantzuteko aukerak';
$labels['arialabelmoremessageactions'] = 'Mezu ekintza gehiago';
$labels['arialabelmorecontactactions'] = 'Kontaktuen ekintza gehiago';
$labels['arialabelmarkmessagesas'] = 'Markatu hautatutako mezua gisa honetara...';
$labels['arialabelcomposeoptions'] = 'Konposizio aukerak';
$labels['arialabelresponsesmenu'] = 'Erantzun finkoen menua';
$labels['arialabelattachmentuploadform'] = 'Eranskinak kargatzeko formularioa';
$labels['arialabelattachmentmenu'] = 'Eranskinaren aukerak';
$labels['arialabelmailtomenu'] = 'Helbide elektronikoaren aukerak';
$labels['arialabelattachmentpreview'] = 'Eranskinaren aurrebista';
$labels['ariasummarycomposecontacts'] = 'Kontaktuak eta taldeak hartzaile gisa hautatzeko zerrenda';
$labels['arialabelcontactexportoptions'] = 'Kontaktuak esportatzeko aukerak';
$labels['arialabelabookgroupoptions'] = 'Kontaktu eta taldeen helbide-liburuaren aukerak';
$labels['arialabelpreferencesform'] = 'Hobespenen formularioa';
$labels['arialabelidentityeditfrom'] = 'Identitatea editatzeko formularioa';
$labels['arialabelresponseeditfrom'] = 'Erantzuna editatzeko formularioa';
$labels['arialabelsearchterms'] = 'Bilatu terminoak';
$labels['arialabeldropactionmenu'] = 'Arrastatu eta jaregin ekintzaren menua';
$labels['arialabelheadersmenu'] = 'Hartzailea (goiburua) menua gehituz';
$labels['arialabelimagetools'] = 'Irudi-tresnak';
$labels['helplistnavigation'] = 'Zerrendatu teklatuaren nabigazioa';
$labels['helplistkeyboardnavigation'] = "Gezia gora/behera: Mugitu ilararen fokua/hautaketa.
Zuriunea: Hautatu fokatutako ilara.
Maius + gora/behera: Hautatu beste ilara goian/behean.
Ctrl + Zuriunea: Gehitu fokatutako ilara hautaketara/ezabatu hautaketatik.";
$labels['helplistkeyboardnavmessages'] = "Gezia eskuin/ezker: zabaldu/tolestu mezuaren haria (bakarrik haria moduan).
Sartu: Ireki hautatutako/fokatutako mezua.
Ezabatu: Eraman hautatutako mezuak zakarrontzira.
";
$labels['helplistkeyboardnavcontacts'] = "Sartu: Ireki hautatutako/fokatutako kontaktua.";
localization/eu_ES/messages.inc000064400000042465151727150570012563 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Errore bat gertatu da!';
$messages['loginfailed']  = 'Saio hasierak huts egin du.';
$messages['cookiesdisabled'] = 'Zure nabigatzaileak ez du cookie-rik onartzen.';
$messages['sessionerror'] = 'Zure saioa baliogabea da edo iraungita dago.';
$messages['cookiesmismatch'] = 'Cookieak ez datozela bat hauteman da. Garbitu zure nabigatzailearen cookieak.';
$messages['storageerror'] = 'Huts egin du biltegiratze-zerbitzarira konektatzean.';
$messages['servererror'] = 'Zerbitzari-errorea!';
$messages['servererrormsg'] = 'Zerbitzari-errorea: $msg';
$messages['accountlocked'] = 'Sartzeko saio baliogabe gehiegi. Saiatu beranduago.';
$messages['connerror'] = 'Konexio errorea (zerbitzaria atzitzeak huts egin du)!';
$messages['dberror'] = 'Datu-basearen errorea!';
$messages['dbconnerror'] = 'Ezin izan da konektatu datu-basera';
$messages['windowopenerror'] = 'Popup leihoa blokeatua';
$messages['requesttimedout'] = 'Eskaera denboraz kanpo.';
$messages['errorreadonly'] = 'Ezin da ekintza burutu. Karpeta soilik irakurtzekoa da.';
$messages['errornoperm'] = 'Ezin da ekintza burutu. Baimena ukatua.';
$messages['erroroverquota'] = 'Ezin da ekintza burutu. Diskoan ez dago tokirik.';
$messages['erroroverquotadelete'] = 'Diskoan ez dago tokirik. Erabili SHIFT+DEL mezua ezabatzeko.';
$messages['invalidrequest'] = 'Eskaera ez da baliozkoa! Datuak ez dira gorde.';
$messages['invalidhost'] = 'Zerbitzari-izena ez da baliozkoa.';
$messages['nomessagesfound'] = 'Ez da mezurik aurkitu postontzi honetan.';
$messages['loggedout'] = 'Itxi duzu saioa. Agur!';
$messages['mailboxempty'] = 'Postontzia hutsik dago';
$messages['nomessages'] = 'Ez dago mezurik';
$messages['refreshing'] = 'Freskatzen...';
$messages['loading'] = 'Kargatzen...';
$messages['uploading'] = 'Fitxategia kargatzen...';
$messages['attaching'] = 'Fitxategia eransten...';
$messages['uploadingmany'] = 'Fitxategiak kargatzen...';
$messages['loadingdata'] = 'Datuak kargatzen...';
$messages['checkingmail'] = 'Mezu berrien bila arakatzen...';
$messages['sendingmessage'] = 'Mezua bidaltzen...';
$messages['messagesent'] = 'Mezua behar bezala bidali da.';
$messages['savingmessage'] = 'Mezua gordetzen...';
$messages['messagesaved'] = 'Mezua zirriborroetan gorde da.';
$messages['successfullysaved'] = 'Behar bezala gorde da.';
$messages['savingresponse'] = 'Erantzun-testua gordetzen...';
$messages['deleteresponseconfirm'] = 'Seguru zaude erantzun-testu hau  ezabatu nahi duzula?';
$messages['nocontactselected'] = 'Oraindik ez duzu kontakturik hautatu.';
$messages['addedsuccessfully'] = 'Kontaktua behar bezala gehitu da helbide-liburura.';
$messages['contactexists'] = 'Badago kontaktu bat helbide elektroniko horrekin';
$messages['contactnameexists'] = 'Lehendik badago izen hori duen kontaktua.';
$messages['blockedimages'] = 'Zure pribatutasuna babesteko urrutiko irudiak blokeatu egin dira.';
$messages['blockedresources'] = 'Zure pribatutasuna babesteko urrutiko baliabideak blokeatu egin dira.';
$messages['suspiciousemail'] = 'Mezu honek iruzurrak izan daitezkeen helbide elektroniko susmagarriak ditu.';
$messages['bccemail'] = 'Birbidalitako mezuek hartzaile konfidentzialak dituzte (Bcc).';
$messages['bouncehint'] = 'Mezua inolako aldaketarik gabe bidaliko da, hau da, jatorrizko gorputza, goiburuak eta hartzaileak erabiliz.';
$messages['encryptedmessage'] = 'Hau enkriptaturiko mezu bat da eta ezin da bistarazi. Barkatu!';
$messages['externalmessagedecryption'] = 'Hau zifratutako mezua da eta zure nabigatzaileko gehigarri batekin deszifratu daiteke.';
$messages['nopubkeyfor'] = 'Ez da baliozko gako publikorik aurkitu $email-(e)rako';
$messages['nopubkeyforsender'] = 'Ez da baliozko gako publikorik aurkitu zure bidalketa identitaterako. Mezua jasotzaileentzat bakarrik zifratzea nahi duzu?';
$messages['encryptnoattachments'] = 'Dagoeneko kargatutako eranskinak ezin dira zifratu. Gehitu itzazu berriro zifratze editorera.';
$messages['searchpubkeyservers'] = 'Falta diren gakoak gako publikoen zerbitzarietan bilatzea nahi duzu?';
$messages['encryptpubkeysfound'] = 'Hurrengo gako publikoak aurkitu dira:';
$messages['keyservererror'] = 'Huts egin du gakoa gako-zerbitzaritik eskuratzen.';
$messages['keyimportsuccess'] = '$key gako publikoa zure gako-sortan sartu da.';
$messages['nocontactsfound'] = 'Ez da kontakturik aurkitu.';
$messages['contactnotfound'] = 'Eskatutako kontaktua ez da aurkitu.';
$messages['contactsearchonly'] = 'Bilaketa inprimaki bat erabili behar duzu hautatutako helbide-liburutik kontaktuak ikusteko.';
$messages['sendingfailed'] = 'Ezin izan da mezua bidali.';
$messages['senttooquickly'] = 'Itxaron $sec segundo mezua bidali aurretik, mesedez.';
$messages['errorsavingsent'] = 'Errore bat gertatu da bidalitako mezua gordetzean.';
$messages['errorsaving'] = 'Errore bat gertatu da gordetzean.';
$messages['errormoving'] = 'Ezin d(ir)a mezua(k) mugitu.';
$messages['errorcopying'] = 'Ezin d(ir)a kopiatu mezua(k).';
$messages['errordeleting'] = 'Ezin da mezua ezabatu';
$messages['errormarking'] = 'Ezin d(ir)a markatu mezua(k).';
$messages['alerttitle'] = 'Kontuz';
$messages['confirmationtitle'] = 'Ziur zaude...';
$messages['deletecontactconfirm']  = 'Benetan hautaturiko kontaktuak ezabatu nahi dituzula?';
$messages['deletegroupconfirm']  = 'Seguru zaude hautatutako taldea ezabatu nahi duzula?';
$messages['deletemessagesconfirm'] = 'Benetan hautaturiko mezuak ezabatu nahi dituzula?';
$messages['deletefolderconfirm']  = 'Benetan Karpeta hau ezabatu nahi duzu?';
$messages['movefolderconfirm']  = 'Seguru zaude mugitu nahi duzula karpeta hori?';
$messages['purgefolderconfirm']  = 'Benetan karpeta honetako mezu guziak ezabatu nahi dituzu?';
$messages['contactdeleting'] = 'Kontaktua(k) ezabatzen...';
$messages['groupdeleting'] = 'Taldea ezabatzen...';
$messages['folderdeleting'] = 'Karpeta ezabatzen...';
$messages['foldermoving'] = 'Karpeta mugitzen...';
$messages['foldersubscribing'] = 'Karpeta harpidetzen...';
$messages['folderunsubscribing'] = 'Karpetaren harpidetza kentzen...';
$messages['formincomplete'] = 'Inprimakia ez guztiz bete';
$messages['noemailwarning'] = 'Idatzi baliozko helbide elektroniko bat';
$messages['nonamewarning']  = 'Mesedez izen bat idatzi';
$messages['nopagesizewarning'] = 'Mesedez paper tamaina idatzi';
$messages['nosenderwarning'] = 'Idatzi bidaltzailearen helbide elektronikoa';
$messages['recipientsadded'] = 'Hartzailea(k) gehitu d(ir)a.';
$messages['norecipientwarning'] = 'Sartu gutxienez hartzaile bat';
$messages['disclosedrecipwarning'] = 'Hartzaile guztiek ikusiko dute beste hartzaileen posta helbideak. Hori eragozteko eta haien pribatutasuna babesteko erabili dezakezu Bcc -ezkutuko kopia- eremua.';
$messages['disclosedreciptitle'] = 'Hartzaile publiko gehiegi';
$messages['nosubjectwarning']  = '"Gaia" eremua hutsik dago. Bat idatzi nahi al duzu?';
$messages['nosubjecttitle']  = 'Gairik ez';
$messages['nobodywarning'] = 'Testu gabeko mezu hau bidali?';
$messages['notsentwarning'] = 'Mezua ez da bidali eta gorde gabeko aldaketak ditu. Nahi duzu zure aldaketak baztertu?';
$messages['restoresavedcomposedata'] = 'Lehendik idatzitako baina bidali gabeko mezu bat aurkitu da.\n\nGaia:$subject\nGordeta:$date\n\nBerreskuratu nahi duzu mezu hau?';
$messages['nosearchname'] = 'Idatzi kontaktu izen bat edo helbide elektroniko bat';
$messages['notuploadedwarning'] = 'Oraindik ez dira kargatu eranskin guztiak. Itxaron edo ezeztatu karga.';
$messages['searchsuccessful'] = '$nr mezu aurkiturik';
$messages['contactsearchsuccessful'] = '$nr kontaktu aurkitu dira.';
$messages['searchnomatch'] = 'Bilaketak ez du emaitzarik itzuli';
$messages['searching'] = 'Bilatzen...';
$messages['checking'] = 'Arakatzen...';
$messages['stillsearching'] = 'Oraindik bilatzen...';
$messages['nospellerrors'] = 'Ez da ortografia errorerik aurkitu';
$messages['folderdeleted'] = 'Karpeta behar bezala ezabatu da';
$messages['foldersubscribed'] = 'Karpeta ongi harpidetu da.';
$messages['folderunsubscribed'] = 'Karpetaren harpidetza ongi kendu da.';
$messages['folderpurged'] = 'Karpeta behar bezala hustu da.';
$messages['folderexpunged'] = 'Karpeta behar bezala trinkotu da.';
$messages['deletedsuccessfully'] = 'Behar bezala ezabatu da';
$messages['converting'] = 'Mezuaren formatua ezabatzen';
$messages['messageopenerror'] = 'Ezin da zerbitzaritik mezua kargatu';
$messages['filelinkerror'] = 'Huts egin du fitxategia eransten.';
$messages['fileuploaderror'] = 'Huts fitxategia eransterakoan';
$messages['csvfilemismatch'] = 'Ez da onartzen eremu desberdinak dituzten CSV fitxategi anitzen inportazioa.';
$messages['filesizeerror'] = 'Erantsi nahi duzun fitxategian $size tamaina muga gainditzen du';
$messages['filecounterror'] = 'Gehienez jota $count fitxategi kargatu daitezke aldi berean.';
$messages['msgsizeerror'] = 'Huts egin du fitxategia eransten. Mezu baten gehienezko tamaina ($size) gainditu da.';
$messages['msgsizeerrorfwd'] = 'Mezuaren gehienezko tamaina  ($size) gainditu da. $num mezu ez dira erantsi.';
$messages['copysuccess'] = '$nr kontaktu ongi kopiatu dira.';
$messages['movesuccess'] = '$nr kontaktu ongi mugitu dira.';
$messages['copyerror'] = 'Ezin da kontakturik kopiatu.';
$messages['moveerror'] = 'Ezin da kontakturik mugitu.';
$messages['sourceisreadonly'] = 'Helbide iturburua irakurtzeko soilik da';
$messages['errorsavingcontact'] = 'Ezin da kontaktuaren helbidea gorde';
$messages['movingmessage'] = 'Mezua mugitzen...';
$messages['copyingmessage'] = 'Mezuak kopiatzen...';
$messages['copyingcontact'] = 'Kontaktua(k) kopiatzen...';
$messages['movingcontact'] = 'Kontaktua(k) mugitzen...';
$messages['deletingmessage'] = 'Mezua(k) ezabatzen...';
$messages['markingmessage'] = 'Mezua(k) markatzen...';
$messages['addingmember'] = 'Kontaktua(k) taldera gehitzen...';
$messages['removingmember'] = 'Kontaktua(k) taldetik ezabatzen...';
$messages['receiptsent'] = 'Ondo bidalia irakurritako agiria';
$messages['errorsendingreceipt'] = 'Ezin da agiria bidali';
$messages['deleteidentityconfirm'] = 'Seguru zaude identitate hau ezabatu nahi duzula?';
$messages['nodeletelastidentity'] = 'Ezin da izaera hau ezabatu, zure bakarra da';
$messages['forbiddencharacter'] = 'Karpeta izenak debekatutako karaktereak ditu';
$messages['selectimportfile'] = 'Hautatu kargatzeko fitxategia.';
$messages['addresswriterror'] = 'Hautatutako helbide-liburua ezin da editatu.';
$messages['contactaddedtogroup'] = 'Kontaktuak ongi gehitu dira taldera.';
$messages['contactremovedfromgroup'] = 'Kontaktuak ongi ezabatu dira taldetik.';
$messages['nogroupassignmentschanged'] = 'Talde-esleipena ez da aldatu.';
$messages['importwait'] = 'Inportatzen, itxaron mesedez...';
$messages['importformaterror'] = 'Huts egin du inportatzean. Kargatu duzun fitxategia ez da inportatzeko fitxategi baliozkoa.';
$messages['importconfirm'] = '<b>Ongi inportatu dira $inserted kontaktu</b>';
$messages['importconfirmskipped'] = '<b>Saltatu dira  $skipped sarrera</b>';
$messages['importmessagesuccess'] = '$nr mezu ongi inportatu dira.';
$messages['importmessageerror'] = 'Inportazio akatsa! Kargatutako fitxategia ez da baliozko mezua edo postontzi-fitxategia';
$messages['opnotpermitted'] = 'Ekintza ez baimendua!';
$messages['nofromaddress'] = 'Hautatutako identitatearen helbide elektronikoa falta da.';
$messages['editorwarning'] = 'Editore mota aldatzeak ekar dezake testuaren formatua galtzea. Jarraitu nahi duzu?';
$messages['httpreceivedencrypterror'] = 'Ezarpen akats larria gertatu da. Jarri harremanetan zure administratzailearekin ahalik eta lasterren.  <b>Zure mezua ezin da bidali.</b>';
$messages['smtpconnerror'] = 'SMTP errorea ($code): Zerbitzariarekiko konexioak huts egin du.';
$messages['smtpautherror'] = 'SMTP errorea ($code): Egiaztapenak huts egin du.';
$messages['smtpfromerror'] = 'SMTP errorea ($code):  "$from" ($msg) bidaltzailearen ezartzeak huts egin du.';
$messages['smtptoerror'] = 'SMTP errorea ($code):  "$to" ($msg) hartzailea  gehitzen huts egin du.';
$messages['smtprecipientserror'] = 'SMTP errorea: Ezin da hartzaileen zerrenda analizatu.';
$messages['smtputf8error'] = 'SMTP errorea: Zerbitzariak ez du Unicode onartzen posta-helbidean.';
$messages['smtpsizeerror'] = 'SMTP errorea: Mezuak zerbitzariak ezarritako muga ($limit) gainditu du.';
$messages['smtperror'] = 'SMTP errorea: $msg';
$messages['emailformaterror'] = 'Helbide elektroniko baliogabea: $email';
$messages['toomanyrecipients'] = 'Hartzaile gehiegi. Txikitu hartzaile kopura hona $max.';
$messages['maxgroupmembersreached'] = 'Taldeko partaideen kopurua $max -ko maximoa gainditzen du:';
$messages['internalerror'] = 'Barne akatsa. Saiatu berriz, mesedez.';
$messages['contactdelerror'] = 'Ezin d(ir)a kontaktua(k) ezabatu.';
$messages['contactdeleted'] = 'Kontaktua(k) ongi ezabatu dira.';
$messages['contactrestoreerror'] = 'Ezin d(ir)a ezabatutako kontaktua(k) leheneratu.';
$messages['contactrestored'] = 'Kontaktua(k) ongi leheneratu d(ir)a.';
$messages['groupdeleted'] = 'Taldea ongi ezabatu da.';
$messages['grouprenamed'] = 'Taldea ongi berrizendatu da.';
$messages['groupcreated'] = 'Taldea ongi sortu da.';
$messages['savedsearchdeleted'] = 'Bilaketaren gordetzea ongi ezabatu da.';
$messages['savedsearchdeleteerror'] = 'Ezin da ezabatu bilaketaren gordeketa.';
$messages['savedsearchcreated'] = 'Bilaketaren gordeketa ongi sortu da.';
$messages['savedsearchcreateerror'] = 'Ezin da sortu bilaketaren gordeketa.';
$messages['messagedeleted'] = 'Mezua(k) ongi ezabatu dira.';
$messages['messagemoved'] = 'Mezua(k) ongi mugitu d(ir)a.';
$messages['messagemovedtotrash'] = 'Mezua(k) ongi eraman d(ir)a zakarrontzira';
$messages['messagecopied'] = 'Mezua(k) ongi kopiatu d(ir)a';
$messages['messagemarked'] = 'Mezua(k) ongi markatu d(ir)a';
$messages['autocompletechars'] = 'Sartu gutxienez $min karaktere osatze automatikorako';
$messages['autocompletemore'] = 'Bat datozen sarrera gehiago topatu dira. Idatzi karaktere gehiago.';
$messages['namecannotbeempty'] = 'Izena ezin da hutsik egon.';
$messages['nametoolong'] = 'Izena luzeegia da.';
$messages['namedotforbidden'] = 'Karpeta izenak ezin dira puntu batekin hasi.';
$messages['folderupdated'] = 'Karpeta ongi eguneratu da.';
$messages['foldercreated'] = 'Karpeta ongi  sortu da.';
$messages['invalidimageformat'] = 'Irudi formatua ez da baliozkoa.';
$messages['mispellingsfound'] = 'Ortografia akatsak detektatu dira mezuan.';
$messages['parentnotwritable'] = 'Ezin da karpeta sortu/mugi hautatutako goragoko karpetan. Sartzeko baimenik ez.';
$messages['messagetoobig'] = 'Mezu-zatia handiegia da prozesatzeko.';
$messages['attachmentvalidationerror'] = 'Eranskina ez da fidagarria bere motak ez duelako bat egiten mezuan aitortzen duen motarekin. Ez baduzu konfiantza bidaltzailearekin ez zenuke ireki behar zeren eta kode maltzurra gorde dezake.<br/><br/><em>Iradokita: $expected; topatuta: $detected</em>';
$messages['noscriptwarning'] = 'Kontuz: web-posta zerbitzu honek Javascript behar du! Erabili nahi baduzu gaitu Javascript zure nabigatzailearen ezarpenetan.';
$messages['messageissent'] = 'Mezua bidali da baina oraindik ez da gorde. Nahi duzu orain gorde?';
$messages['errnotfound'] = 'Fitxategia ez da aurkitu';
$messages['errnotfoundexplain'] = 'Eskatutako baliabidea ez da aurkitu';
$messages['errfailedrequest'] = 'Eskaerak huts egin du';
$messages['errauthorizationfailed'] = 'Baimentzeak hust egin du';
$messages['errunauthorizedexplain'] = 'Ezin izan da egiaztatu zerbitzu hau erabiltzeko baimena duzula!';
$messages['errrequestcheckfailed'] = 'Eskaeraren egiaztapenak huts egin du';
$messages['errcsrfprotectionexplain'] = "Zu babestearren, baliabide honen sarbideak CSRF.\n motako erasoen kontrako babesa du. Mezu hau ikusten baduzu seguraski ez zara zerbitzutik atera web orria utzi aurretik.\n\nGiza ekintza bat behar da aurrera egiteko.";
$messages['errcontactserveradmin'] = 'Jar zaitez sistemako administratzailearekin harrementan.';
$messages['clicktoresumesession'] = 'Egin klik hemen zure aurreko saioarekin jarraitzeko';
$messages['errcomposesession'] = 'Idazketa sesioan errorea';
$messages['errcomposesessionexplain'] = 'Eskatutako idazketa sesioa ez da aurkitu.';
$messages['clicktocompose'] = 'Klik egin hemen mezu berri bat idazteko';
$messages['nosupporterror'] = 'Zure nabigatzaileak ez du eginbide hori onartzen.';
$messages['siginserted'] = 'Sinadura behar bezala txertatu da.';
$messages['responseinserted'] = 'Erantzuna behar bezala txertatu da.';
$messages['noresponsesavailable'] = 'Ez dago erantzunik';
$messages['listempty'] = 'Zerrenda hutsik dago.';
$messages['listusebutton'] = 'Erabili Sortu botoia erregistro berri bat gehitzeko.';
$messages['keypaircreatesuccess'] = 'Gako pare berria behar bezala sortu da $identity-(r)entzat.';
$messages['emptyattachment'] = 'Eranskin hau hutsik dagoela dirudi. Mesedez, egiaztatu bidali duenarekin.';
$messages['oauthloginfailed'] = 'OAuth saioa hasteak huts egin du. Saiatu berriro.';
localization/lb_LU/timezones.inc000064400000001463151727150570012757 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:africa'] = 'Afrika';
localization/lb_LU/labels.inc000064400000054111151727150570012202 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Wëllkomm bei $product';
$labels['username'] = 'Benotzernumm';
$labels['password'] = 'Passwuert';
$labels['server'] = 'Server';
$labels['login'] = 'Aloggen';
$labels['logout'] = 'Ausloggen';
$labels['mail'] = 'Mailen';
$labels['settings'] = 'Astellungen';
$labels['addressbook'] = 'Adressbuch';
$labels['inbox'] = 'Mailbox';
$labels['drafts'] = 'Brouillonen';
$labels['sent'] = 'Verschéckt';
$labels['trash'] = 'Poubelle';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Richteg Nimm vu de speziellen Dossieren uweisen';
$labels['subject'] = 'Sujet';
$labels['from'] = 'Vun';
$labels['sender'] = 'Geschéckt vun';
$labels['to'] = 'Un';
$labels['cc'] = 'CC';
$labels['bcc'] = 'BCC';
$labels['replyto'] = 'Äntwert un';
$labels['followupto'] = 'Noverfollgung un';
$labels['date'] = 'Datum';
$labels['size'] = 'Gréisst';
$labels['priority'] = 'Prioritéit';
$labels['organization'] = 'Organisatioun';
$labels['readstatus'] = 'Lies-Status';
$labels['listoptions'] = 'Optiounen oplëschten';
$labels['mailboxlist'] = 'Dossieren';
$labels['messagesfromto'] = 'Messagen $from bis $to vun $count';
$labels['threadsfromto'] = 'Diskussiounen $from bis $to vun $count';
$labels['messagenrof'] = 'Message $nr vun $count';
$labels['fromtoshort'] = '$from bis $to vun $count';
$labels['copy'] = 'Kopéieren';
$labels['move'] = 'Réckelen';
$labels['moveto'] = 'Réckelen an...';
$labels['copyto'] = 'Kopéieren op...';
$labels['download'] = 'Eroflueden';
$labels['open'] = 'Opmaachen';
$labels['showattachment'] = 'Weisen';
$labels['showanyway'] = 'Trotzdeem weisen';
$labels['filename'] = 'Numm vum Fichier';
$labels['filesize'] = 'Gréisst vum Fichier';
$labels['addtoaddressbook'] = 'An d\'Adressbuch setzen';
$labels['sun'] = 'Son';
$labels['mon'] = 'Méi';
$labels['tue'] = 'Dën';
$labels['wed'] = 'Mët';
$labels['thu'] = 'Don';
$labels['fri'] = 'Fre';
$labels['sat'] = 'Sam';
$labels['sunday'] = 'Sonndeg';
$labels['monday'] = 'Méindeg';
$labels['tuesday'] = 'Dënschdeg';
$labels['wednesday'] = 'Mëttwoch';
$labels['thursday'] = 'Donneschdeg';
$labels['friday'] = 'Freideg';
$labels['saturday'] = 'Samschdeg';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mäe';
$labels['apr'] = 'Abr';
$labels['may'] = 'Mee';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mäerz';
$labels['longapr'] = 'Abrëll';
$labels['longmay'] = 'Mee';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Dezember';
$labels['today'] = 'Haut';
$labels['refresh'] = 'Nei lueden';
$labels['checkmail'] = 'Nei Messagen ofruffen';
$labels['compose'] = 'Schreiwen';
$labels['writenewmessage'] = 'Neie Message schreiwen';
$labels['reply'] = 'Äntweren';
$labels['replytomessage'] = 'Dem Ofsender äntweren';
$labels['replytoallmessage'] = 'Dem Ofsender an allen Empfänger äntweren';
$labels['replyall'] = 'U jiddwereen äntweren';
$labels['replylist'] = 'Äntwert-Lëscht';
$labels['forward'] = 'Weiderleeden';
$labels['forwardinline'] = 'Am Message weiderleeden';
$labels['forwardattachment'] = 'Als Unhank weiderleeden';
$labels['forwardmessage'] = 'De Message weiderleeden';
$labels['deletemessage'] = 'Message läschen';
$labels['movemessagetotrash'] = 'Message an d\'Poubelle réckelen';
$labels['printmessage'] = 'Dëse Message drécken';
$labels['previousmessage'] = 'Message virdru weisen';
$labels['firstmessage'] = 'Éischte Message weisen';
$labels['nextmessage'] = 'Nächste Message weisen';
$labels['lastmessage'] = 'Leschte Message weisen';
$labels['backtolist'] = 'Zréck bei d\'Lëscht vun de Messagen';
$labels['viewsource'] = 'Source weisen';
$labels['mark'] = 'Markéieren';
$labels['markmessages'] = 'Messagë markéieren';
$labels['markread'] = 'Als gelies';
$labels['markunread'] = 'Als ongelies';
$labels['markflagged'] = 'Mat Fändel';
$labels['markunflagged'] = 'Ouni Fändel';
$labels['moreactions'] = 'Mei Aktiounen...';
$labels['folders-all'] = 'All d\'Dossieren';
$labels['more'] = 'Méi';
$labels['back'] = 'Zréck';
$labels['options'] = 'Optiounen';
$labels['first'] = 'Éischt';
$labels['last'] = 'Lescht';
$labels['previous'] = 'Viregt';
$labels['next'] = 'Nächst';
$labels['select'] = 'Auswielen';
$labels['all'] = 'All';
$labels['none'] = 'Keng';
$labels['currpage'] = 'Aktuell Säit';
$labels['isread'] = 'Gelies';
$labels['unread'] = 'Ongelies';
$labels['flagged'] = 'Mat Fändel';
$labels['unflagged'] = 'Net markéiert';
$labels['unanswered'] = 'Net beäntwert';
$labels['withattachment'] = 'Mat Unhank';
$labels['deleted'] = 'Geläscht';
$labels['undeleted'] = 'Net geläscht';
$labels['replied'] = 'Beäntwert';
$labels['forwarded'] = 'Weidergeleet';
$labels['invert'] = 'Ëmdréinen';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lëscht';
$labels['threads'] = 'Diskussiounen';
$labels['expand-all'] = 'All opfächeren';
$labels['expand-unread'] = 'Ongelies opfächeren';
$labels['collapse-all'] = 'All zesummefächeren';
$labels['threaded'] = 'Diskussiounen zesummefaassen';
$labels['autoexpand_threads'] = 'Diskussiounen auserneefächeren';
$labels['do_expand'] = 'All d\'Diskussiounen';
$labels['expand_only_unread'] = 'just ongeliese Messagen';
$labels['fromto'] = 'Vun/Un';
$labels['flag'] = 'Fändel';
$labels['attachment'] = 'Unhank';
$labels['nonesort'] = 'Keng';
$labels['sentdate'] = 'Verschéckt';
$labels['arrival'] = 'Ukomm';
$labels['asc'] = 'opsteigend';
$labels['desc'] = 'ofsteigend';
$labels['listcolumns'] = 'Kolonnen oplëschten';
$labels['listsorting'] = 'Kolonne sortéieren';
$labels['listorder'] = 'Sortéier-Reiefolleg';
$labels['listmode'] = 'Oplëschtungs-Modus';
$labels['layoutlist'] = 'Lëscht';
$labels['folderactions'] = 'Dossiers-Aktiounen...';
$labels['compact'] = 'Kompaktéieren';
$labels['empty'] = 'Eidel maachen';
$labels['importmessages'] = 'Messagen importéieren';
$labels['quota'] = 'Plazverbrauch';
$labels['unknown'] = 'onbekannt';
$labels['unlimited'] = 'onlimitéiert';
$labels['quicksearch'] = 'Séier Sich';
$labels['resetsearch'] = 'Sich zerécksetzen';
$labels['searchmod'] = 'Sich-Parameter';
$labels['msgtext'] = 'Ganze Message';
$labels['body'] = 'Kierper';
$labels['type'] = 'Typ';
$labels['namex'] = 'Numm';
$labels['searchscope'] = 'Ëmfang';
$labels['currentfolder'] = 'Aktuellen Dossier';
$labels['subfolders'] = 'Dësen an d\'Ënnerdossieren';
$labels['allfolders'] = 'All d\'Dossieren';
$labels['openinextwin'] = 'An enger neier Fënster opmaachen';
$labels['emlsave'] = 'Eroflueden (.eml)';
$labels['changeformattext'] = 'Als Text ouni Formatéierungen uweisen';
$labels['changeformathtml'] = 'Als formatéierten Text uweisen';
$labels['editasnew'] = 'Als nei editéieren';
$labels['send'] = 'Schécken';
$labels['sendmessage'] = 'Message schécken';
$labels['savemessage'] = 'Als Brouillon späicheren';
$labels['addattachment'] = 'E Fichier drunhänken';
$labels['charset'] = 'Zeechesaz';
$labels['editortype'] = 'Editor-Typ';
$labels['returnreceipt'] = 'Empfanksbestätegung';
$labels['dsn'] = 'Empfanks-Status-Meldung';
$labels['mailreplyintro'] = 'Den $date, $sender schreift:';
$labels['originalmessage'] = 'Original-Message';
$labels['selectimage'] = 'Bild auswielen';
$labels['addimage'] = 'Bild dobäisetzen';
$labels['selectmedia'] = 'Film auswielen';
$labels['addmedia'] = 'Film dobäisetzen';
$labels['insert'] = 'Drasetze';
$labels['recipient'] = 'Empfänger';
$labels['editidents'] = 'Identitéiten editéieren';
$labels['spellcheck'] = 'Orthographie';
$labels['checkspelling'] = 'Orthographie kontrolléieren';
$labels['resumeediting'] = 'Weider editéieren';
$labels['revertto'] = 'Zréck bei';
$labels['restore'] = 'Erëmhirstellen';
$labels['restoremessage'] = 'Message erëmhirstellen';
$labels['responses'] = 'Äntwerten';
$labels['insertresponse'] = 'Äntwert afügen';
$labels['manageresponses'] = 'Äntwerte geréieren';
$labels['editresponse'] = 'Äntwert editéieren';
$labels['editresponses'] = 'Äntwerten Editéieren';
$labels['responsename'] = 'Numm';
$labels['responsetext'] = 'Äntwert-Text';
$labels['attach'] = 'Drunhänken';
$labels['attachments'] = 'Unhäng';
$labels['upload'] = 'Eroplueden';
$labels['close'] = 'Zoumaachen';
$labels['messageoptions'] = 'Message-Optiounen...';
$labels['low'] = 'Niddreg';
$labels['lowest'] = 'Am niddregsten';
$labels['normal'] = 'Normal';
$labels['high'] = 'Héich';
$labels['highest'] = 'Am héchsten';
$labels['nosubject'] = '(kee Sujet)';
$labels['showimages'] = 'Biller uweisen';
$labels['alwaysshow'] = 'Biller vun $sender ëmmer uweisen';
$labels['isdraft'] = 'Dëst ass e Brouillon.';
$labels['andnmore'] = '$nr more...';
$labels['togglemoreheaders'] = 'Méi Message-Headeren uweisen';
$labels['togglefullheaders'] = 'Réi Message-Headeren an-/ausblenden';
$labels['htmltoggle'] = 'Text mat Formatéierungen';
$labels['plaintoggle'] = 'Text ouni Formatéierungen';
$labels['savesentmessagein'] = 'Dee verschéckte Message späicheren an';
$labels['dontsave'] = 'net späicheren';
$labels['maxuploadsize'] = 'Déi maximal erlaabte Fichiers-Gréisst ass $size';
$labels['addcc'] = 'CC dobäisetzen';
$labels['addbcc'] = 'BCC dobäisetzen';
$labels['addreplyto'] = '"Äntwert un" dobäisetzen';
$labels['addfollowupto'] = '"Noverfollgung un" dobäisetzen';
$labels['mdnrequest'] = 'De Sender vun dësem Message huet gefrot fir informéiert ze gi wann de Message gelies gëtt. Wëlls du de Sender informéieren?';
$labels['receiptread'] = 'Empfanksbestätegung (gelies)';
$labels['yourmessage'] = 'Dëst ass eng Empfanksbestätegung fir Äre Message.';
$labels['receiptnote'] = 'Bemierkung: Dës Bestätegung bezeit just datt de Message beim Empfänger ugewise ginn ass. Et gëtt keng Garantie dass den Empfänger den Inhalt vum Message gelies oder verstanen huet.';
$labels['name'] = 'Ganzen Numm';
$labels['firstname'] = 'Virnumm';
$labels['surname'] = 'Nonumm';
$labels['middlename'] = 'Mëttelnumm';
$labels['nameprefix'] = 'Präfix';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Spëtznumm';
$labels['jobtitle'] = 'Job-Titel';
$labels['department'] = 'Departement';
$labels['gender'] = 'Geschlecht';
$labels['maidenname'] = 'Meedechersnumm';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adress';
$labels['street'] = 'Strooss';
$labels['locality'] = 'Uertschaft';
$labels['zipcode'] = 'Postleitzuel';
$labels['region'] = 'Staat';
$labels['country'] = 'Land';
$labels['birthday'] = 'Gebuertsdatum';
$labels['anniversary'] = 'Anniversaire';
$labels['website'] = 'Websäit';
$labels['instantmessenger'] = 'Instant-Messenger';
$labels['notes'] = 'Notizen';
$labels['male'] = 'männlech';
$labels['female'] = 'weiblech';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Liewenspartner';
$labels['allfields'] = 'All d\'Felder';
$labels['search'] = 'Sichen';
$labels['advsearch'] = 'Avancéiert Sich';
$labels['advanced'] = 'Avancéiert';
$labels['other'] = 'Aneres';
$labels['typehome'] = 'Doheem';
$labels['typework'] = 'Aarbecht';
$labels['typeother'] = 'Aneres';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Haapt';
$labels['typehomefax'] = 'Fax Doheem';
$labels['typeworkfax'] = 'Fax Aarbecht';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Websäit';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Feld dobäisetzen...';
$labels['editcontact'] = 'Kontakt editéieren';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontakt-Eegeschaften';
$labels['personalinfo'] = 'Perséinlech Informatioun';
$labels['edit'] = 'Änneren';
$labels['cancel'] = 'Ofbriechen';
$labels['save'] = 'Späicheren';
$labels['delete'] = 'Läschen';
$labels['rename'] = 'Ëmbenennen';
$labels['addphoto'] = 'Dobäisetzen';
$labels['replacephoto'] = 'Ersetzen';
$labels['uploadphoto'] = 'Foto eroplueden';
$labels['deletecontact'] = 'Déi ausgewielte Kontakter läschen';
$labels['composeto'] = 'Mail schreiwen un';
$labels['contactsfromto'] = 'Kontakter $from bis $to vun $count';
$labels['print'] = 'Drécke';
$labels['export'] = 'Exportéieren';
$labels['exportall'] = 'All exportéieren';
$labels['exportsel'] = 'Déi ausgewielten exportéieren';
$labels['exportvcards'] = 'Kontakter am vCard-Format exportéieren';
$labels['grouprename'] = 'Grupp ëmbenennen';
$labels['groupdelete'] = 'Grupp läschen';
$labels['groupremoveselected'] = 'Ausgewielte Kontakter aus Grupp eraushuele';
$labels['previouspage'] = 'Säit virdru weisen';
$labels['firstpage'] = 'Éischt Säit weisen';
$labels['nextpage'] = 'Nächst Säit weisen';
$labels['lastpage'] = 'Lescht Säit weisen';
$labels['group'] = 'Grup';
$labels['groups'] = 'Gruppen';
$labels['listgroup'] = 'Gruppe-Memberen oplëschten';
$labels['personaladrbook'] = 'Perséinlech Adressen';
$labels['searchsave'] = 'Sich späicheren';
$labels['searchdelete'] = 'Sich läschen';
$labels['import'] = 'Importéieren';
$labels['importcontacts'] = 'Kontakter importéieren';
$labels['importtarget'] = 'Kontakter dobäisetze bei';
$labels['importreplace'] = 'Dat ganzt Adressbuch ersetzen';
$labels['importgroups'] = 'Gruppen-Zouweisung importéieren';
$labels['importgroupsall'] = 'All (nei Gruppen uleeën falls néideg)';
$labels['importgroupsexisting'] = 'Just fir Gruppen déi schon existéieren';
$labels['done'] = 'Erleedegt';
$labels['settingsfor'] = 'Astellunge fir';
$labels['about'] = 'Iwwert';
$labels['preferences'] = 'Astellungen';
$labels['userpreferences'] = 'Benotzer-Astellungen';
$labels['editpreferences'] = 'Benotzer-Astellungen änneren';
$labels['identities'] = 'Identitéiten';
$labels['preferhtml'] = 'HTML uweisen';
$labels['defaultcharset'] = 'Standard Zeechesaz';
$labels['htmlmessage'] = 'HTML-Message';
$labels['messagepart'] = 'Deel';
$labels['digitalsig'] = 'Digital Signatur';
$labels['dateformat'] = 'Datums-Format';
$labels['timeformat'] = 'Zäit-Format';
$labels['prettydate'] = 'Schéin Daten';
$labels['setdefault'] = 'Als standard definéieren';
$labels['autodetect'] = 'Automatesch';
$labels['language'] = 'Sprooch';
$labels['timezone'] = 'Zäitzon';
$labels['pagesize'] = 'Reie pro Säit';
$labels['signature'] = 'Ënnerschrëft';
$labels['dstactive'] = 'Summerzäit';
$labels['showinextwin'] = 'Message an neier Fënster opmaache';
$labels['composeextwin'] = 'An enger neier Fënster schreiwen';
$labels['htmleditor'] = 'HTML-Messagë schreiwen';
$labels['htmlonreply'] = 'bei Äntwert op e Message mat Formatéierungen';
$labels['htmlonreplyandforward'] = 'bei Weiderleedung oder Äntwert op e Message mat Formatéierungen';
$labels['htmlsignature'] = 'Formatéiert Ënnerschrëft';
$labels['showemail'] = 'Email-Adress mat ganzem Numm uweisen';
$labels['previewpane'] = 'Virschau-Panneau uweisen';
$labels['skin'] = 'Opmaachung vum Interface';
$labels['logoutclear'] = 'Poubelle beim Logout eidelmaachen';
$labels['logoutcompact'] = 'Mailbox beim Logout eidelmaachen';
$labels['uisettings'] = 'Benotzer-Interface';
$labels['serversettings'] = 'Server-Astellungen';
$labels['mailboxview'] = 'Mailbox-Usiicht';
$labels['mdnrequests'] = 'Bei Ufro no Empfanksbestätegung';
$labels['askuser'] = 'mech froen';
$labels['autosend'] = 'Bestätegung schécken';
$labels['autosendknown'] = 'Bestätegung u meng Kontakter schécken, anerefalls nofroen';
$labels['autosendknownignore'] = 'Bestätegung u meng Kontakter schécken, anerefalls ignoréieren';
$labels['readwhendeleted'] = 'Beim Läschen de Message als gelies markéieren';
$labels['flagfordeletion'] = 'De Message als "läschbar" markéieren amplaz en ze läschen';
$labels['skipdeleted'] = 'Geläschte Messagen net uweisen';
$labels['deletealways'] = 'Falls Messagen net an d\'Poubelle kënne geréckelt ginn, läsch se';
$labels['deletejunk'] = 'Messagen am Spam-Dossier direkt läschen';
$labels['showremoteimages'] = 'Biller an de Maile vun externe Serveren nolueden';
$labels['fromknownsenders'] = 'vu bekannte Senderen';
$labels['always'] = 'ëmmer';
$labels['showinlineimages'] = 'Biller déi drunhänken ënnert dem Message uweisen';
$labels['autosavedraft'] = 'Brouillon automatesch späicheren';
$labels['everynminutes'] = 'all $n Minutt(en)';
$labels['refreshinterval'] = 'Frësch lueden (nei Messagen ofruffen, etc.)';
$labels['never'] = 'ni';
$labels['immediately'] = 'direkt';
$labels['messagesdisplaying'] = 'Messagen uweisen';
$labels['messagescomposition'] = 'Messagë schreiwen';
$labels['mimeparamfolding'] = 'Nimm vun den Unhäng';
$labels['2231folding'] = 'Kompletten RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (Microsoft Outlook)';
$labels['2047folding'] = 'Kompletten RFC 2047 (anerer)';
$labels['force7bit'] = 'MIME-Kodéierung fir 8-Bit-Zeeche benotzen';
$labels['advancedoptions'] = 'Avancéiert Optiounen';
$labels['focusonnewmessage'] = 'Browser-Fënster fokusséiere wann en neie Message ukënnt';
$labels['checkallfolders'] = 'Nei Messagen an allen Dossieren opruffen';
$labels['defaultfont'] = 'Standard-Schrëft fir e Message mat Formatéierungen';
$labels['mainoptions'] = 'Haapt-Optiounen';
$labels['browseroptions'] = 'Browser-Optiounen';
$labels['section'] = 'Beräich';
$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'Neie Message';
$labels['signatureoptions'] = 'Optioune vun der Ënnerschrëft';
$labels['whenreplying'] = 'Bei enger Äntwert';
$labels['replyempty'] = 'den Original-Message net zitéieren';
$labels['replytopposting'] = 'neie Message iwwert dem Zitat ufänken';
$labels['replybottomposting'] = 'neie Message ënnert dem Zitat ufänken';
$labels['replyremovesignature'] = 'Bei enger Äntwert d\'Original-Ënnerschrëft aus dem Message huelen';
$labels['autoaddsignature'] = 'Ënnerschrëft automatesch drasetzen';
$labels['newmessageonly'] = 'just bei neie Messagen';
$labels['replyandforwardonly'] = 'just bei Äntwerten a Weiderleedungen';
$labels['insertsignature'] = 'Ënnerschrëft drasetzen';
$labels['afternseconds'] = 'no $n Sekonnen';
$labels['reqmdn'] = 'Ëmmer eng Empfanksbestätegung ufroen';
$labels['reqdsn'] = 'Ëmmer eng Empfanks-Status-Meldung ufroen';
$labels['replysamefolder'] = 'Äntwert an de selweschten Dossier setze wéi de Message op dee geäntwert gëtt';
$labels['defaultabook'] = 'Standard Adress-Buch';
$labels['autocompletesingle'] = 'Alternativ Email-Adressen bei der automatescher Vervollstänneung iwwersprangen';
$labels['listnamedisplay'] = 'Kontakter oplëschten als';
$labels['spellcheckbeforesend'] = 'Orthographie kontrolléieren bevir de Message verschéckt gëtt';
$labels['spellcheckoptions'] = 'Orthographie-Korrektur-Optiounen';
$labels['spellcheckignoresyms'] = 'Wierder mat Symboler ignoréieren';
$labels['spellcheckignorenums'] = 'Wierder mat Zuelen ignoréieren';
$labels['spellcheckignorecaps'] = 'Wierder mat just Groussbuschtawen ignoréieren';
$labels['addtodict'] = 'An den Dictionnaire setzen';
$labels['mailtoprotohandler'] = 'Protokoll-Handhaber fir "mailto:"-Links registréieren';
$labels['standardwindows'] = 'Popup-Fënstere wéi normal Fënstere behandelen';
$labels['forwardmode'] = 'Messagë-Weiderleedung';
$labels['inline'] = 'am Message';
$labels['asattachment'] = 'als Unhank';
$labels['replyallmode'] = 'Standard-Aktioun vum [U jiddwereen äntweren]-Knäppchen';
$labels['replyalldefault'] = 'u jiddwereen äntweren';
$labels['replyalllist'] = 'just der Mailinglëscht äntweren (wann eng fonnt gëtt) ';
$labels['allmessages'] = 'all d\'Messagen';
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossieren';
$labels['foldername'] = 'Dossiersnumm';
$labels['subscribed'] = 'Abonnéiert';
$labels['messagecount'] = 'Messagen';
$labels['create'] = 'Erstellen';
$labels['createfolder'] = 'Neien Dossier erstellen';
$labels['managefolders'] = 'Dossieren geréieren';
$labels['specialfolders'] = 'Speziell Dossieren';
$labels['properties'] = 'Astellungen';
$labels['folderproperties'] = 'Dossiers-Astellungen';
$labels['parentfolder'] = 'Elteren-Dossier';
$labels['location'] = 'Plaz';
$labels['info'] = 'Informatioun';
$labels['getfoldersize'] = 'Klick fir d\'Dossiers-Gréisst ze kréien';
$labels['changesubscription'] = 'Klick fir den Abonnement ze änneren';
$labels['foldertype'] = 'Dossiers-Typ';
$labels['personalfolder'] = 'Privaten Dossier';
$labels['otherfolder'] = 'Dossier vun anerem Benotzer';
$labels['sharedfolder'] = 'Ëffentlechen Dossier';
$labels['sortby'] = 'Sortéieren no';
$labels['sortasc'] = 'Opsteigend sortéieren';
$labels['sortdesc'] = 'Ofsteigend sortéieren';
$labels['undo'] = 'Réckgängeg maachen';
$labels['installedplugins'] = 'Installéiert Plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versioun';
$labels['source'] = 'Source';
$labels['license'] = 'Lizenz';
$labels['support'] = 'Support ufroen';
$labels['B'] = 'B';
$labels['KB'] = 'kB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englesch';
$labels['westerneuropean'] = 'West-Europäesch';
$labels['easterneuropean'] = 'Ost-Europäesch';
$labels['southeasterneuropean'] = 'Süd-Ost-Europäesch';
$labels['baltic'] = 'Baltesch';
$labels['cyrillic'] = 'Kyrilesch';
$labels['arabic'] = 'Arabesch';
$labels['greek'] = 'Griechesch';
$labels['hebrew'] = 'Häbräesch';
$labels['turkish'] = 'Türkesch';
$labels['nordic'] = 'Nordesch';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Keltesch';
$labels['vietnamese'] = 'Vietnamesesch';
$labels['japanese'] = 'Japanesch';
$labels['korean'] = 'Koreanesch';
$labels['chinese'] = 'Chinesesch';
localization/lb_LU/messages.inc000064400000031203151727150570012544 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ee Feeler ass opgetrueden!';
$messages['loginfailed']  = 'Login feelgeschloen.';
$messages['cookiesdisabled'] = 'Däi Browser acceptéiert keng Cookien.';
$messages['sessionerror'] = 'Deng Sessioun ass ongëlteg oder verfall.';
$messages['storageerror'] = 'D\'Verbindung mam Späicher-Server ass feelgeschloen.';
$messages['servererror'] = 'Server-Feeler!';
$messages['servererrormsg'] = 'Server-Feeler: $msg';
$messages['connerror'] = 'Connectiouns-Feeler (De Server konnt net erreecht ginn)!';
$messages['dberror'] = 'Datebank-Feeler!';
$messages['windowopenerror'] = 'D\'Popup-Fënster gouf blockéiert!';
$messages['requesttimedout'] = 'D\'Ufro huet ze laang gedauert';
$messages['errorreadonly'] = 'D\'Operatioun kann net ofgeschloss ginn. Den Dossier ass schreifgeschützt.';
$messages['errornoperm'] = 'D\'Operatioun kann net ofgeschloss ginn. Zougrëff verweigert.';
$messages['erroroverquota'] = 'D\'Operatioun konnt net ausgefouert ginn. Et ass net méi genuch Plaz um Disk.';
$messages['erroroverquotadelete'] = 'Et ass net méi genuch Plaz um Disk. Benotz Shift+Delete fir e message ze läschen.';
$messages['invalidrequest'] = 'Ongëlteg Ufro! Et goufe keng Date gespäichert.';
$messages['invalidhost'] = 'Ongëltege Server-Numm.';
$messages['nomessagesfound'] = 'Keng Messagen an der Mailbox fonnt.';
$messages['mailboxempty'] = 'D\'Mailbox ass eidel';
$messages['nomessages'] = 'Keng Messagen';
$messages['refreshing'] = 'Lueden nei...';
$messages['loading'] = 'Lueden...';
$messages['uploading'] = 'Fichier gëtt eropgelueden...';
$messages['attaching'] = 'Fichier drunhänken...';
$messages['uploadingmany'] = 'Fichiere ginn eropgelueden...';
$messages['loadingdata'] = 'Date gi gelueden..';
$messages['checkingmail'] = 'Nei Messagë ginn ofgeruff...';
$messages['sendingmessage'] = 'Message gëtt geschéckt...';
$messages['messagesent'] = 'Message erfollegräich verschéckt.';
$messages['savingmessage'] = 'Message gëtt gespäichert...';
$messages['messagesaved'] = 'Message als Brouillon gespäichert.';
$messages['successfullysaved'] = 'Erfollegräich gespäichert.';
$messages['savingresponse'] = 'Äntwert-Text gëtt gespäichert...';
$messages['deleteresponseconfirm'] = 'Wëlls du dësen Äntwert-Text wierklech läschen?';
$messages['addedsuccessfully'] = 'Kontakt erfollegräich an d\'Adressbuch gesat.';
$messages['contactnameexists'] = 'Et existéiert schon e Kontakt mam selweschten Numm.';
$messages['blockedimages'] = 'Fir deng Privatsphär ze schütze, gi Biller vun externe Serveren an dësem Message net gelueden.';
$messages['encryptedmessage'] = 'Dëst ass e verschlësselte Message a kann net ugewise ginn. Et deet eis Leed!';
$messages['nocontactsfound'] = 'Keng Kontakter fonnt.';
$messages['contactnotfound'] = 'Den ugefrotene Kontakt gouf net fonnt.';
$messages['sendingfailed'] = 'De Message konnt net verschéckt ginn.';
$messages['senttooquickly'] = 'Waart wann ech gelift $sec Sekonn(en) bevir s du de Message verschécks. ';
$messages['errorsavingsent'] = 'Beim Späichere vum geschéckte Message ass e Feeler opgetruden.';
$messages['errorsaving'] = 'Beim Späicheren ass e Feeler opgetrueden.';
$messages['errormoving'] = 'D\'Messagë konnten net verréckelt ginn.';
$messages['errorcopying'] = 'D\'Messagë konnten net kopéiert ginn.';
$messages['errordeleting'] = 'D\'Messagë konnten net geläscht ginn.';
$messages['errormarking'] = 'D\'Messagë konnten net markéiert ginn.';
$messages['confirmationtitle'] = 'Bass du sécher...';
$messages['deletecontactconfirm']  = 'Wëlls du wierklech déi ausgewielte Kontakter läschen?';
$messages['deletegroupconfirm']  = 'Wëlls du wierklech déi ausgewielte Gruppe läschen?';
$messages['deletemessagesconfirm'] = 'Wëlls du wierklech déi ausgewielte Messagë läschen?';
$messages['deletefolderconfirm']  = 'Wëlls du dësen Dossier wierklech läschen?';
$messages['purgefolderconfirm']  = 'Wëlls du wierklech all d\'Messagen an dësem Dossier läschen?';
$messages['contactdeleting'] = 'Kontakter gi geläscht...';
$messages['groupdeleting'] = 'Grupp gëtt geläscht...';
$messages['folderdeleting'] = 'Dossier gëtt geläscht...';
$messages['foldermoving'] = 'Dossier gëtt geréckelt...';
$messages['foldersubscribing'] = 'Dossier gëtt abonnéiert...';
$messages['folderunsubscribing'] = 'Dossier gëtt desabonnéiert...';
$messages['formincomplete'] = 'De Formular war net komplett ausgefëlt.';
$messages['noemailwarning'] = 'Gëff w.e.gl eng gëlteg Email-Adress an.';
$messages['nonamewarning']  = 'Gëff w.e.gl en Numm an.';
$messages['nopagesizewarning'] = 'Gëff w.e.gl eng Säitegréisst an.';
$messages['norecipientwarning'] = 'Gëff w.e.gl op mannst een Empfänger an.';
$messages['nosubjectwarning']  = 'D\'Feld "Sujet" ass eidel. Wëlls du elo eent uginn?';
$messages['nosubjecttitle']  = 'Kee Sujet';
$messages['nobodywarning'] = 'Soll dëse Message ouni Text verschéckt ginn?';
$messages['restoresavedcomposedata'] = 'Et gouf e Message fonnt dee scho geschriwwen awer nach net verschéckt ginn ass.\n\nSujet: $subject\nGespäichert: $date\n\nSoll de Message recuperéiert ginn?';
$messages['nosearchname'] = 'Gëff w.e.gl en Numm oder eng E-Mail-Adress fir de Kontakt an.';
$messages['notuploadedwarning'] = 'Net all d\'Unhäng goufen eropgelueden. Waart w.e.gl e Moment oder briech den Upload of.';
$messages['searchsuccessful'] = '$nr Messagë fonnt.';
$messages['contactsearchsuccessful'] = '$nr Kontakter fonnt.';
$messages['searchnomatch'] = 'D\'Sich huet keng Treffer bruecht.';
$messages['searching'] = 'Sichen...';
$messages['checking'] = 'Kontrolléieren...';
$messages['stillsearching'] = 'D\'Sich leeft nach...';
$messages['nospellerrors'] = 'Et goufe keng Schreiffeeler fonnt.';
$messages['folderdeleted'] = 'Dossier erfollegräich geläscht.';
$messages['foldersubscribed'] = 'Dossier erfollegräich abonnéiert.';
$messages['folderunsubscribed'] = 'Dossier erfollegräich desabonnéiert.';
$messages['deletedsuccessfully'] = 'Erfollegräich geläscht.';
$messages['converting'] = 'Formatéierunge gi geläscht...';
$messages['messageopenerror'] = 'Message konnt net vum Server geluede ginn.';
$messages['fileuploaderror'] = 'Upload vum Fichier feelgeschloen.';
$messages['filesizeerror'] = 'Den eropgeluedene Fichier ass méi grouss wéi déi maximal erlaabte Gréisst vun $size.';
$messages['copysuccess'] = 'Et goufen erfollegräich $nr Kontakter kopéiert.';
$messages['movesuccess'] = 'Et goufen erfollegräich $nr Kontakter geréckelt.';
$messages['copyerror'] = 'Konnt d\'Kontakter net kopéieren';
$messages['moveerror'] = 'Konnt d\'Kontakter net réckelen.';
$messages['sourceisreadonly'] = 'D\'Adresse-Quell ass schreifgeschützt.';
$messages['errorsavingcontact'] = 'D\'Kontakt-Adress konnt net gespäichert ginn.';
$messages['movingmessage'] = 'Messagë gi geréckelt...';
$messages['copyingmessage'] = 'Messagë gi kopéiert...';
$messages['copyingcontact'] = 'Kontakter gi kopéiert...';
$messages['movingcontact'] = 'Kontakter gi geréckelt...';
$messages['deletingmessage'] = 'Messagë gi geläscht...';
$messages['markingmessage'] = 'Messagë gi markéiert...';
$messages['addingmember'] = 'Kontakter ginn an d\'grupp gesat...';
$messages['removingmember'] = 'Kontakter ginn aus der Grupp erausgeholl...';
$messages['receiptsent'] = 'Empfanksbestätegung erfollegräich verschéckt.';
$messages['errorsendingreceipt'] = 'Konnt d\'Bestätegung net verschécken.';
$messages['deleteidentityconfirm'] = 'Wëlls du dës Identitéit wierklech läschen?';
$messages['nodeletelastidentity'] = 'Du kanns dës Identitéit net läschen, well et deng lescht ass.';
$messages['forbiddencharacter'] = 'Den Numm vum Dossier enthält verbueden Zeechen.';
$messages['selectimportfile'] = 'Wuel w.e.gl e Fichier aus fir eropzelueden.';
$messages['addresswriterror'] = 'Dat ausgewieltent Adressbucht ass schreifgeschützt.';
$messages['contactaddedtogroup'] = 'Kontakter erfollegräich an d\'Grupp gesat.';
$messages['contactremovedfromgroup'] = 'Kontakter erfollegräich aus der Grupp erausgeholl.';
$messages['nogroupassignmentschanged'] = 'Keng Gruppen-Zouuerdnung geännert.';
$messages['importwait'] = 'Import leeft, ee Moment w.e.gl...';
$messages['importformaterror'] = 'Import feelgeschloen! Den eropgeluedene Fichier ass kee gëltegen Date-Fichier.';
$messages['importconfirm'] = '<b>$inserted Kontakter erfollegräich importéiert</b>';
$messages['importconfirmskipped'] = '<b>$skipped existéierend Anträg iwwersprongen</b>';
$messages['importmessagesuccess'] = 'Erfollegräich $nr Messagen importéiert';
$messages['importmessageerror'] = 'Import feelgeschloen! Den eropgeluedene Fichier ass kee gëltege Message oder kee Mailbox-Fichier.';
$messages['opnotpermitted'] = 'Operatioun net zougelooss!';
$messages['editorwarning'] = 'Den Editor-Typ ze wiessele kann de Verloscht vun Textformatéierunge verursaachen. Wëlls du weidermaachen?';
$messages['httpreceivedencrypterror'] = 'E fatale Konfiguratiouns-Feeler ass opgetrueden. Kontaktéier w.e.gl. den Administrator esou séier ewéi méiglech. <b>Däi Message kann net geschéckt ginn.</b> ';
$messages['smtpconnerror'] = 'SMTP-Feeler ($code): Et konnt keng Verbindung mam Server hirgestallt ginn.';
$messages['smtpautherror'] = 'SMTP-Feeler ($code): Authentifizéierung feelgeschloen.';
$messages['smtpfromerror'] = 'SMTP-Feeler ($code): Den Ofsender "$from" konnt net gesat ginn ($msg).';
$messages['smtptoerror'] = 'SMTP-Feeler ($code): Den Empfänger "$to" konnt net dobäigesat ginn ($msg).';
$messages['smtprecipientserror'] = 'SMTP-Feeler: D\'Empfänger-Lëscht kann net verschafft ginn.';
$messages['smtperror'] = 'SMTP-Feeler: $msg';
$messages['toomanyrecipients'] = 'Zevill Empfänger. Reduzéier d\'Zuel vun den Empfänger op $max.';
$messages['maxgroupmembersreached'] = 'D\'Unzuel vu Gruppememberen iwwersteigt de Maximum vun $max.';
$messages['internalerror'] = 'En interne Feeler ass opgetrueden. Probéier w.e.gl nach eng Kéier.';
$messages['contactdelerror'] = 'Kontakter konnten net geläscht ginn.';
$messages['contactdeleted'] = 'Kontakter erfollegräich geläscht.';
$messages['contactrestoreerror'] = 'Déi geläschte Kontakter konnten net recuperéiert ginn.';
$messages['contactrestored'] = 'Kontakter erfollegräich recuperéiert.';
$messages['groupdeleted'] = 'Grupp erfollegräich geläscht.';
$messages['grouprenamed'] = 'Grupp erfollegräich ëmbenannt.';
$messages['groupcreated'] = 'Grupp erfollegräich creéiert.';
$messages['savedsearchdeleted'] = 'Déi gespäicherte Sich gouf erfollegräich geläscht.';
$messages['savedsearchdeleteerror'] = 'Déi gespäicherte Sich konnt net geläscht ginn.';
$messages['savedsearchcreated'] = 'Déi gespäicherte Sich gouf erfollegräich erstallt.';
$messages['savedsearchcreateerror'] = 'Déi gespäicherte Sich konnt net erstallt ginn.';
$messages['messagedeleted'] = 'Messagen erfollegräich geläscht.';
$messages['messagemoved'] = 'Messagen erfollegräich geréckelt.';
$messages['messagecopied'] = 'Messagen erfollegräich kopéiert.';
$messages['messagemarked'] = 'Messagen erfollegräich markéiert.';
$messages['autocompletechars'] = 'Gëff e mimumum vun $min Zeechen u fir déi automatesch Vervollstänegung.';
$messages['autocompletemore'] = 'Et goufe méi passend Treffer fonnt. Tipp w.e.gl. nach e puer Buschtawe méi.';
$messages['namecannotbeempty'] = 'Den Numm kann net eidel sinn.';
$messages['nametoolong'] = 'Den Numm ass ze laang.';
$messages['folderupdated'] = 'Dossier erfollegräich aktualiséiert.';
$messages['foldercreated'] = 'Dossier erfollegräich ugeluecht.';
$messages['invalidimageformat'] = 'Kee gëltegt Bild-Format';
$messages['mispellingsfound'] = 'Et goufe Schreiffeeler am Message fonnt.';
$messages['parentnotwritable'] = 'Den Dossier konnt net am ausgewielten Dossier erstallt oder an den Dossier erageréckelt ginn. Keng Zougrëffsrechter.';
$messages['messagetoobig'] = 'Den Messagen-Deel ass ze grouss fir verschafft ze ginn.';
$messages['noscriptwarning'] = 'Warnung: Dëse Webmail brauch JavaScript! Fir de Service benotzen ze kënnen, aktivéier w.e.gl JavaScript an denge Browser-Astellungen.';
localization/sr_CS/labels.inc000064400000072735151727150570012232 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Добродошли на $product';
$labels['username'] = 'Корисничко име';
$labels['password'] = 'Лозинка';
$labels['server'] = 'Сервер';
$labels['login'] = 'Пријава';
$labels['menu'] = 'Мени';
$labels['logout'] = 'Одјава';
$labels['mail'] = 'Пошта';
$labels['settings'] = 'Поставке';
$labels['addressbook'] = 'Адресар';
$labels['inbox'] = 'Примљене';
$labels['drafts'] = 'Нацрти';
$labels['sent'] = 'Послате';
$labels['trash'] = 'Смеће';
$labels['junk'] = 'Отпад';
$labels['show_real_foldernames'] = 'Прикажи права имена за специјалне фасцикле';
$labels['subject'] = 'Наслов';
$labels['from'] = 'Од';
$labels['sender'] = 'Пошиљалац';
$labels['to'] = 'За';
$labels['cc'] = 'Цц';
$labels['bcc'] = 'Бцц';
$labels['replyto'] = 'Одговори';
$labels['date'] = 'Датум';
$labels['size'] = 'Величина';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организација';
$labels['readstatus'] = 'Стање читања';
$labels['listoptions'] = 'Опције листе...';
$labels['listoptionstitle'] = 'Опције листе';
$labels['mailboxlist'] = 'Фасцикле';
$labels['messagesfromto'] = 'Порука $from за $to од $count';
$labels['threadsfromto'] = 'Нити $from за $to од $count';
$labels['messagenrof'] = 'Порука $nr од $count';
$labels['fromtoshort'] = '$from – $to од $count';
$labels['copy'] = 'Копирај';
$labels['move'] = 'Премести';
$labels['moveto'] = 'Премести у...';
$labels['copyto'] = 'Копирај у...';
$labels['download'] = 'Преузми';
$labels['open'] = 'Отвори';
$labels['showattachment'] = 'Прикажи';
$labels['showanyway'] = 'Свеједно прикажи';
$labels['filename'] = 'Назив фајла';
$labels['filesize'] = 'Величина фајла';
$labels['addtoaddressbook'] = 'Додај у адресар';
$labels['sun'] = 'нед';
$labels['mon'] = 'пон';
$labels['tue'] = 'уто';
$labels['wed'] = 'сре';
$labels['thu'] = 'чет';
$labels['fri'] = 'пет';
$labels['sat'] = 'суб';
$labels['sunday'] = 'недеља';
$labels['monday'] = 'понедељак';
$labels['tuesday'] = 'уторак';
$labels['wednesday'] = 'среда';
$labels['thursday'] = 'четвртак';
$labels['friday'] = 'петак';
$labels['saturday'] = 'субота';
$labels['jan'] = 'јан';
$labels['feb'] = 'феб';
$labels['mar'] = 'мар';
$labels['apr'] = 'апр';
$labels['may'] = 'мај';
$labels['jun'] = 'јун';
$labels['jul'] = 'јул';
$labels['aug'] = 'авг';
$labels['sep'] = 'сеп';
$labels['oct'] = 'окт';
$labels['nov'] = 'нов';
$labels['dec'] = 'дец';
$labels['longjan'] = 'јануар';
$labels['longfeb'] = 'фебруар';
$labels['longmar'] = 'март';
$labels['longapr'] = 'април';
$labels['longmay'] = 'мај';
$labels['longjun'] = 'јун';
$labels['longjul'] = 'јул';
$labels['longaug'] = 'август';
$labels['longsep'] = 'септембар';
$labels['longoct'] = 'октобар';
$labels['longnov'] = 'новембар';
$labels['longdec'] = 'децембар';
$labels['today'] = 'данас';
$labels['refresh'] = 'Освежи';
$labels['checkmail'] = 'Провера нових порука';
$labels['compose'] = 'Нова порука';
$labels['writenewmessage'] = 'Напиши нову поруку';
$labels['reply'] = 'Одговори';
$labels['replytomessage'] = 'Одговори пошиљаоцу';
$labels['replytoallmessage'] = 'Одговори на листу или пошиљаоцу и свим примаоцима';
$labels['replyall'] = 'Одговори свима';
$labels['replylist'] = 'Одговори на листу';
$labels['forward'] = 'Проследи';
$labels['forwardinline'] = 'Проследи у тексту';
$labels['forwardattachment'] = 'Проследи као прилог';
$labels['forwardmessage'] = 'Проследи поруку';
$labels['deletemessage'] = 'Избриши поруку';
$labels['movemessagetotrash'] = 'Премести поруку у смеће';
$labels['printmessage'] = 'Одштампај поруку';
$labels['previousmessage'] = 'Прикажи претходну поруку';
$labels['firstmessage'] = 'Прикажи прву поруку';
$labels['nextmessage'] = 'Прикажи следећу поруку';
$labels['lastmessage'] = 'Прикажи последњу поруку';
$labels['backtolist'] = 'Повратак на листу порука';
$labels['viewsource'] = 'Прикажи изворни облик';
$labels['mark'] = 'Означи';
$labels['markmessages'] = 'Обележи поруке';
$labels['markread'] = 'као прочитано';
$labels['markunread'] = 'као непрочитано';
$labels['markflagged'] = 'као обележено';
$labels['markunflagged'] = 'као необележено';
$labels['moreactions'] = 'Остале радње...';
$labels['markallread'] = 'Означи све као прочитано';
$labels['folders-cur'] = 'Само изабрана фасцикла';
$labels['folders-sub'] = 'Изабрана фасцикла и потфасцикле';
$labels['folders-all'] = 'Све фасцикле';
$labels['more'] = 'Још';
$labels['back'] = 'Назад';
$labels['options'] = 'Опције';
$labels['actions'] = 'Радње';
$labels['first'] = 'Прво';
$labels['last'] = 'Последње';
$labels['previous'] = 'Претходно';
$labels['next'] = 'Следеће';
$labels['select'] = 'Изабери';
$labels['all'] = 'Све';
$labels['none'] = 'Ништа';
$labels['currpage'] = 'Тренутна страница';
$labels['isread'] = 'Прочитана';
$labels['unread'] = 'Непрочитана';
$labels['flagged'] = 'Обележено';
$labels['unflagged'] = 'Необележена';
$labels['unanswered'] = 'Неодговорена';
$labels['withattachment'] = 'Са прилогом';
$labels['deleted'] = 'Обрисано';
$labels['undeleted'] = 'Необрисано';
$labels['replied'] = 'Одговорено';
$labels['forwarded'] = 'Прослеђено';
$labels['invert'] = 'Обрни';
$labels['filter'] = 'Филтер';
$labels['list'] = 'Листа';
$labels['threads'] = 'Нити';
$labels['expand-all'] = 'Рашири све';
$labels['expand-unread'] = 'Рашири непрочитане';
$labels['collapse-all'] = 'Сажми све';
$labels['threaded'] = 'Разгранато';
$labels['autoexpand_threads'] = 'Рашири гране порука';
$labels['do_expand'] = 'све гране';
$labels['expand_only_unread'] = 'само са непрочитаним порукама';
$labels['fromto'] = 'од/за';
$labels['flag'] = 'Обележено';
$labels['attachment'] = 'Прилог';
$labels['nonesort'] = 'Ништа';
$labels['sentdate'] = 'Датум слања';
$labels['arrival'] = 'Датум пријема';
$labels['asc'] = 'растуће';
$labels['desc'] = 'опадајуће';
$labels['listcolumns'] = 'Колоне листе';
$labels['listsorting'] = 'Колона сортирања';
$labels['listorder'] = 'Ређање';
$labels['listmode'] = 'Режим приказа листе';
$labels['layout'] = 'Распоред';
$labels['layoutwidescreen'] = 'Широк екран';
$labels['layoutdesktop'] = 'Радна површ';
$labels['layoutlist'] = 'Листа';
$labels['folderactions'] = 'Радње фасцикле...';
$labels['compact'] = 'Сажми';
$labels['empty'] = 'Испразни';
$labels['importmessages'] = 'Увези поруке';
$labels['quota'] = 'Заузеће';
$labels['unknown'] = 'непознато';
$labels['unlimited'] = 'неограничено';
$labels['quotatype'] = 'Врста квоте';
$labels['quotatotal'] = 'Ограничење';
$labels['quotaused'] = 'Коришћено';
$labels['quotastorage'] = 'Заузеће диска';
$labels['quotamessage'] = 'Број порука';
$labels['quicksearch'] = 'Брза претрага';
$labels['resetsearch'] = 'Ресетуј претрагу';
$labels['searchmod'] = 'Модификатори претраге';
$labels['msgtext'] = 'Цела порука';
$labels['body'] = 'Тело';
$labels['type'] = 'Тип';
$labels['namex'] = 'Име';
$labels['searchscope'] = 'Распон';
$labels['currentfolder'] = 'Текућа фасцикла';
$labels['subfolders'] = 'Ова и потфасцикле';
$labels['allfolders'] = 'Све фасцикле';
$labels['searchinterval-1W'] = 'старије од седмице';
$labels['searchinterval-1M'] = 'старије од месеца';
$labels['searchinterval-1Y'] = 'старије од године';
$labels['searchinterval1W'] = 'млађе од седмице';
$labels['searchinterval1M'] = 'млађе од месеца';
$labels['searchinterval1Y'] = 'млађе од године';
$labels['openinextwin'] = 'Отвори у новом прозору';
$labels['emlsave'] = 'Преузимање (.eml)';
$labels['changeformattext'] = 'Прикажи у обичном текстуалном формату';
$labels['changeformathtml'] = 'Прикажи у HTML формату';
$labels['editasnew'] = 'Уреди као ново';
$labels['send'] = 'Пошаљи';
$labels['sendmessage'] = 'Пошаљи поруку';
$labels['savemessage'] = 'Сачувај као нацрт';
$labels['addattachment'] = 'Приложи фајл';
$labels['charset'] = 'Кодирање';
$labels['editortype'] = 'Тип уређивача';
$labels['returnreceipt'] = 'Потврда о приспећу';
$labels['dsn'] = 'Обавештење о статусу испоруке';
$labels['mailreplyintro'] = 'Дана $date, $sender написа:';
$labels['originalmessage'] = 'Оригинална порука';
$labels['selectimage'] = 'Изабери слику';
$labels['addimage'] = 'Додај слику';
$labels['selectmedia'] = 'Изабери видео';
$labels['addmedia'] = 'Додај видео';
$labels['encrypt'] = 'Шифруј';
$labels['encryptmessage'] = 'Шифруј поруку';
$labels['importpubkeys'] = 'Увези јавне кључеве';
$labels['encryptedsendialog'] = 'Шаљем шифровану поруку';
$labels['keyid'] = 'ИД кључа';
$labels['keyexpired'] = 'Истекао';
$labels['keyrevoked'] = 'Опозван';
$labels['bccinstead'] = 'Користи БЦЦ';
$labels['insert'] = 'Убаци';
$labels['editidents'] = 'Уреди идентитете';
$labels['spellcheck'] = 'Правопис';
$labels['checkspelling'] = 'Провера правописа';
$labels['resumeediting'] = 'Настави уређивање';
$labels['revertto'] = 'Врати на';
$labels['restore'] = 'Врати';
$labels['restoremessage'] = 'Да вратим поруку?';
$labels['ignore'] = 'Игнориши';
$labels['responses'] = 'Одговори';
$labels['insertresponse'] = 'Уметни одговор';
$labels['manageresponses'] = 'Управљај одговорима';
$labels['newresponse'] = 'Направи нови одговор';
$labels['addresponse'] = 'Додај одговор';
$labels['editresponse'] = 'Уреди одговор';
$labels['editresponses'] = 'Уреди одговоре';
$labels['responsename'] = 'Назив';
$labels['responsetext'] = 'Текст одговора';
$labels['attach'] = 'Приложи';
$labels['attachments'] = 'Прилози';
$labels['upload'] = 'Отпреми';
$labels['uploadprogress'] = '$percent ($current од $total)';
$labels['close'] = 'Затвори';
$labels['messageoptions'] = 'Опције поруке...';
$labels['attachmentrename'] = 'Преименуј прилог';
$labels['low'] = 'низак';
$labels['lowest'] = 'најнижи';
$labels['normal'] = 'средњи';
$labels['high'] = 'висок';
$labels['highest'] = 'највиши';
$labels['nosubject'] = '(без наслова)';
$labels['showimages'] = 'Прикажи слике';
$labels['alwaysshow'] = 'Увек прикажи слике од $sender';
$labels['isdraft'] = 'Ово је нацрт поруке.';
$labels['andnmore'] = 'још $nr...';
$labels['togglemoreheaders'] = 'Прикажи још заглавља поруке';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Обичан текст';
$labels['savesentmessagein'] = 'Послате поруке сачувај у';
$labels['dontsave'] = 'не чувај';
$labels['maxuploadsize'] = 'Максимална величина фајла је $size';
$labels['addcc'] = 'Додај Цц';
$labels['addbcc'] = 'Додај Бцц';
$labels['addreplyto'] = 'Додај Одговор-на';
$labels['mdnrequest'] = 'Пошиљалац ове поруке је замолио да буде обавештен када прочитате ову поруку. Да ли желите да обавестите пошиљаоца?';
$labels['receiptread'] = 'Обавештење о приспећу (прочитано)';
$labels['yourmessage'] = 'Ово је обавештење о приспећу за вашу поруку';
$labels['receiptnote'] = 'Пажња: Ово обавештење само потврђује да је порука приказана на рачунару примаоца. Не постоји гаранција да је прималац прочитао или разумео садржај поруке.';
$labels['name'] = 'Приказано име';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Презиме';
$labels['middlename'] = 'Средње име';
$labels['nameprefix'] = 'Префикс';
$labels['namesuffix'] = 'Суфикс';
$labels['nickname'] = 'Надимак';
$labels['jobtitle'] = 'Пословна титула';
$labels['department'] = 'Одељење';
$labels['gender'] = 'Пол';
$labels['maidenname'] = 'Девојачко презиме';
$labels['email'] = 'Е-пошта';
$labels['phone'] = 'Телефон';
$labels['address'] = 'Адреса';
$labels['street'] = 'Улица';
$labels['locality'] = 'Град';
$labels['zipcode'] = 'Поштански број';
$labels['region'] = 'Покрајина/Провинција';
$labels['country'] = 'Држава';
$labels['birthday'] = 'Датум рођења';
$labels['anniversary'] = 'Годишњица';
$labels['website'] = 'Веб сајт';
$labels['instantmessenger'] = 'ИМ';
$labels['notes'] = 'Белешке';
$labels['male'] = 'мушко';
$labels['female'] = 'женско';
$labels['manager'] = 'Менаџер';
$labels['assistant'] = 'Асистент';
$labels['spouse'] = 'Супружник';
$labels['allfields'] = 'Сва поља';
$labels['search'] = 'Тражи';
$labels['searchresult'] = 'Резултат претраге';
$labels['advsearch'] = 'Напредна претрага';
$labels['advanced'] = 'Напредно';
$labels['other'] = 'Остало';
$labels['printcontact'] = 'Штампај контакт';
$labels['qrcode'] = 'QR код';
$labels['typehome'] = 'Кућа';
$labels['typework'] = 'Посао';
$labels['typeother'] = 'Остало';
$labels['typemobile'] = 'Мобилни';
$labels['typemain'] = 'Главно';
$labels['typehomefax'] = 'Кућни факс';
$labels['typeworkfax'] = 'Пословни факс';
$labels['typecar'] = 'Ауто';
$labels['typepager'] = 'Пејџер';
$labels['typevideo'] = 'Видео';
$labels['typeassistant'] = 'Асистент';
$labels['typehomepage'] = 'Почетна страница';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил';
$labels['addfield'] = 'Додај поље...';
$labels['addcontact'] = 'Додај контакт';
$labels['editcontact'] = 'Измени контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Својства контакта';
$labels['contactnameandorg'] = 'Име и организација';
$labels['personalinfo'] = 'Лични подаци';
$labels['personal'] = 'Лично';
$labels['contactphoto'] = 'Фоографија контакта';
$labels['edit'] = 'Измени';
$labels['cancel'] = 'Одустани';
$labels['save'] = 'Сачувај';
$labels['delete'] = 'Обриши';
$labels['rename'] = 'Преименуј';
$labels['addphoto'] = 'Додај';
$labels['replacephoto'] = 'Замени';
$labels['uploadphoto'] = 'Отпреми слику';
$labels['newcontact'] = 'Направи нови контакт';
$labels['deletecontact'] = 'Обриши изаабране контакте';
$labels['composeto'] = 'Напиши поруку';
$labels['contactsfromto'] = 'Контакти $from до $to од $count';
$labels['print'] = 'Штампај';
$labels['export'] = 'Извези';
$labels['exportall'] = 'Извези све';
$labels['exportsel'] = 'Извези изабрано';
$labels['exportvcards'] = 'Извези контакте у формату в-картице';
$labels['newgroup'] = 'Направи нову групу';
$labels['addgroup'] = 'Додај групу';
$labels['grouprename'] = 'Преименуј групу';
$labels['groupdelete'] = 'Обриши групу';
$labels['groupremoveselected'] = 'Избриши изабране контакте из групе';
$labels['uponelevel'] = 'Горе један ниво';
$labels['previouspage'] = 'Прикажи претходну страну';
$labels['firstpage'] = 'Прикажи прву страну';
$labels['nextpage'] = 'Прикажи следећу страну';
$labels['lastpage'] = 'Прикажи последњу страну';
$labels['group'] = 'Група';
$labels['groups'] = 'Групе';
$labels['listgroup'] = 'Излистај чланове групе';
$labels['personaladrbook'] = 'Личне адресе';
$labels['searchsave'] = 'Сачувај претрагу';
$labels['searchdelete'] = 'Избриши претрагу';
$labels['import'] = 'Увези';
$labels['importcontacts'] = 'Увези контакте';
$labels['importtarget'] = 'Додај контакте у';
$labels['importreplace'] = 'Замени цео адресар';
$labels['importgroupsexisting'] = 'Само за постојеће групе';
$labels['done'] = 'Готово';
$labels['settingsfor'] = 'Поставке за';
$labels['about'] = 'О програму';
$labels['preferences'] = 'Подешавања';
$labels['userpreferences'] = 'Корисничка подешавања';
$labels['editpreferences'] = 'Измена корисничких подешавања';
$labels['identities'] = 'Идентитети';
$labels['manageidentities'] = 'Управљај идентитетима';
$labels['newidentity'] = 'Направи нови идентитет';
$labels['addidentity'] = 'Додај идентитет';
$labels['editidentity'] = 'Уреди идентитет';
$labels['preferhtml'] = 'Прикажи HTML';
$labels['defaultcharset'] = 'Подразумевани сет знакова';
$labels['htmlmessage'] = 'HTML порука';
$labels['messagepart'] = 'Део';
$labels['digitalsig'] = 'Дигитални потпис';
$labels['dateformat'] = 'Формат датума';
$labels['timeformat'] = 'Формат времена';
$labels['prettydate'] = 'Лепи датуми';
$labels['setdefault'] = 'Постави подразумевано';
$labels['autodetect'] = 'Аутоматски';
$labels['language'] = 'Језик';
$labels['timezone'] = 'Временска зона';
$labels['pagesize'] = 'Редова по страни';
$labels['signature'] = 'Потпис';
$labels['dstactive'] = 'Летње време';
$labels['showinextwin'] = 'Отвори поруку у новом прозору';
$labels['composeextwin'] = 'Састави у новом прозору';
$labels['htmleditor'] = 'Састави HTML поруке';
$labels['htmlonreply'] = 'само при одговору на HTML поруку';
$labels['htmlsignature'] = 'HTML потпис';
$labels['previewpane'] = 'Прикажи панел за преглед';
$labels['skin'] = 'Маска сучеља';
$labels['logoutclear'] = 'Испразни смеће при одјављивању';
$labels['logoutcompact'] = 'Сажми долазне при одјављивању';
$labels['uisettings'] = 'Сучеље';
$labels['serversettings'] = 'Поставке сервера';
$labels['mailboxview'] = 'Приказ сандучета';
$labels['askuser'] = 'питај ме';
$labels['autosend'] = 'шаљи потврду';
$labels['autosendknown'] = 'шаљи потврду мојим контактима, иначе питај';
$labels['autosendknownignore'] = 'шаљи потврду мојим контактима, иначе игнориши';
$labels['ignorerequest'] = 'игнориши захтев';
$labels['readwhendeleted'] = 'Означи као прочитано при брисању';
$labels['skipdeleted'] = 'Не приказуј избрисане поруке';
$labels['deletealways'] = 'Ако премештање порука у смеће не успе, обриши их';
$labels['deletejunk'] = 'Директно брисање порука у отпаду';
$labels['fromknownsenders'] = 'од знаних пошиљалаца';
$labels['always'] = 'увек';
$labels['alwaysbutplain'] = 'увек, осим кад се одговара на обичан текст';
$labels['showinlineimages'] = 'Покажи приложене слике испод поруке';
$labels['autosavedraft'] = 'Аутоматски сачувај нацрте';
$labels['everynminutes'] = 'сваких $n минута';
$labels['refreshinterval'] = 'Освежи (проверава нове поруке итд.)';
$labels['never'] = 'никад';
$labels['immediately'] = 'одмах';
$labels['messagesdisplaying'] = 'Приказ порука';
$labels['messagescomposition'] = 'Састављање порука';
$labels['mimeparamfolding'] = 'Називи прилога';
$labels['2231folding'] = 'Пун RFC 2231 (Тандерберд )';
$labels['miscfolding'] = 'RFC 2047/2231 (МС Аутлук)';
$labels['2047folding'] = 'Пун RFC 2047 (остали)';
$labels['force7bit'] = 'MIME кодирање за 8-битне знакове';
$labels['advancedoptions'] = 'Напредне опције';
$labels['toggleadvancedoptions'] = 'Напредне опције';
$labels['focusonnewmessage'] = 'Фокусирај прозор претраживача на новој поруци';
$labels['checkallfolders'] = 'Провери све фасцикле за нове поруке';
$labels['defaultfont'] = 'Подразумевани фонт за HTML поруке';
$labels['mainoptions'] = 'Главне опције';
$labels['browseroptions'] = 'Опције претраживача';
$labels['section'] = 'Одељак';
$labels['maintenance'] = 'Одржавање';
$labels['newmessage'] = 'Нова порука';
$labels['signatureoptions'] = 'Опције потписа';
$labels['whenreplying'] = 'При одговору';
$labels['replytopposting'] = 'почни нову поруку изнад цитата';
$labels['replybottomposting'] = 'почни нову поруку испод цитата';
$labels['replyremovesignature'] = 'При одговору одстрани оригинални потпис из поруке';
$labels['autoaddsignature'] = 'Аутоматски додај потпис';
$labels['newmessageonly'] = 'само нове поруке';
$labels['replyandforwardonly'] = 'само одговори и прослеђивања';
$labels['insertsignature'] = 'Убаци потпис';
$labels['sigbelow'] = 'Потпис испод цитиране поруке';
$labels['afternseconds'] = 'након $n сек.';
$labels['reqmdn'] = 'Увек затражи потврду пријема';
$labels['reqdsn'] = 'Увек затражи обавештење о статусу слања поруке';
$labels['replysamefolder'] = 'Сачувај одговоре у фасцикли поруке на коју се одговара';
$labels['defaultabook'] = 'Подразумевани адресар';
$labels['listnamedisplay'] = 'Листа контаката као';
$labels['spellcheckbeforesend'] = 'Проверите правопис пре слања поруке';
$labels['spellcheckoptions'] = 'Опције провере правописа';
$labels['spellcheckignoresyms'] = 'Игнориши речи са симболима';
$labels['spellcheckignorenums'] = 'Игнориши речи са бројевима';
$labels['addtodict'] = 'Додај у речник';
$labels['forwardmode'] = 'Прослеђивање порука';
$labels['inline'] = 'уткано';
$labels['asattachment'] = 'као прилог';
$labels['replyallmode'] = 'Подразумевана радња за дугме [Одговори свима]';
$labels['replyalldefault'] = 'одговори свима';
$labels['allmessages'] = 'све поруке';
$labels['folder'] = 'Фасцикла';
$labels['folders'] = 'Фасцикле';
$labels['foldername'] = 'Назив фасцикле';
$labels['subscribed'] = 'Претплаћено';
$labels['messagecount'] = 'Поруке';
$labels['create'] = 'Направи';
$labels['createfolder'] = 'Направи нову фасциклу';
$labels['managefolders'] = 'Управљај фасциклама';
$labels['specialfolders'] = 'Посебне фасцикле';
$labels['properties'] = 'Својства';
$labels['folderproperties'] = 'Својства фасцикле';
$labels['parentfolder'] = 'Над-фасцикла';
$labels['location'] = 'Локација';
$labels['info'] = 'Подаци';
$labels['getfoldersize'] = 'Кликните да добијете величину фасцикле';
$labels['changesubscription'] = 'Кликните да промените претплату';
$labels['foldertype'] = 'Тип фасцикле';
$labels['personalfolder'] = 'Лична фасцикла';
$labels['otherfolder'] = 'Фасцикла других корисникa';
$labels['sharedfolder'] = 'Јавна фасцикла';
$labels['findfolders'] = 'Нађи фасцикле';
$labels['findcontacts'] = 'Пронађи контакте';
$labels['namespace.personal'] = 'Лично';
$labels['namespace.other'] = 'Остали корисници';
$labels['sortby'] = 'Поређај';
$labels['sortasc'] = 'растуће';
$labels['sortdesc'] = 'опадајуће';
$labels['undo'] = 'Поништи';
$labels['installedplugins'] = 'Инсталирани прикључци';
$labels['plugin'] = 'Прикључак';
$labels['version'] = 'Верзија';
$labels['source'] = 'Изворни код';
$labels['license'] = 'Лиценца';
$labels['support'] = 'Подршка';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Уникод';
$labels['english'] = 'енглески';
$labels['westerneuropean'] = 'западноевропски';
$labels['easterneuropean'] = 'источноевропски';
$labels['southeasterneuropean'] = 'југоисточна Европа';
$labels['baltic'] = 'балтички';
$labels['cyrillic'] = 'Ћирилица';
$labels['arabic'] = 'арапски';
$labels['greek'] = 'грчки';
$labels['hebrew'] = 'хебрејски';
$labels['turkish'] = 'турски';
$labels['nordic'] = 'нордијски';
$labels['thai'] = 'тајландски';
$labels['celtic'] = 'келтски';
$labels['vietnamese'] = 'вијетнамски';
$labels['japanese'] = 'јапански';
$labels['korean'] = 'корејски';
$labels['chinese'] = 'кинески';
$labels['arialabelquicksearchbox'] = 'Унос претраге';
$labels['arialabelmailpreviewframe'] = 'Преглед поруке';
$labels['arialabelmailimportdialog'] = 'Дијалог увоза поруке';
$labels['arialabelmessagenav'] = 'Навигација поруке';
$labels['arialabelmessagebody'] = 'Тело поруке';
$labels['arialabelmessageactions'] = 'Радње поруке';
$labels['arialabelmessageheaders'] = 'Заглавља поруке';
$labels['arialabelforwardingoptions'] = 'Опције прослеђивања';
$labels['arialabelreplyalloptions'] = 'Опције одговора свима';
$labels['arialabelmoremessageactions'] = 'Још радњи за поруку';
$labels['arialabelmarkmessagesas'] = 'Означи изабране поруке као...';
$labels['arialabelcomposeoptions'] = 'Опције састављања';
$labels['arialabelattachmentpreview'] = 'Преглед прилога';
$labels['arialabelcontactexportoptions'] = 'Опције извоза контакта';
$labels['arialabelabookgroupoptions'] = 'Опције адресара/групе';
$labels['arialabelsearchterms'] = 'Појмови претраге';
$labels['helplistkeyboardnavmessages'] = "Стрелице лево/десно: скупљају/шире нит порука (само у нитном режиму).
Enter: отвара означену поруку.
Delete: премешта изабране поруке у смеће.";
localization/sr_CS/messages.inc000064400000054346151727150570012575 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Дошло је до грешке!';
$messages['loginfailed']  = 'Неуспешно пријављивање';
$messages['cookiesdisabled'] = 'Ваш прегледач не прихвата колачиће.';
$messages['sessionerror'] = 'Сесија није важећа или је истекла.';
$messages['cookiesmismatch'] = 'Откривено је неслагање колачића. Очистите колачиће из прегледача.';
$messages['storageerror'] = 'Неуспешно повезивање на складишни сервер.';
$messages['servererror'] = 'Грешка на серверу!';
$messages['servererrormsg'] = 'Грешка на серверу: $msg';
$messages['accountlocked'] = 'Превише погрешних покушаја. Покушајте касније.';
$messages['connerror'] = 'Грешка везе (нисам приступио серверу)';
$messages['dberror'] = 'Грешка базе података!';
$messages['windowopenerror'] = 'Искачући прозор је блокиран!';
$messages['requesttimedout'] = 'Захтев је истекао';
$messages['errorreadonly'] = 'Не могу да извршим радњу. Фасцикла је само за читање.';
$messages['errornoperm'] = 'Не могу да извршим радњу. Дозволе су одбијене.';
$messages['erroroverquota'] = 'Не могу да извршим радњу. Нема простора на диску.';
$messages['erroroverquotadelete'] = 'Нема слободног простора на диску. Користите SHIFT+DEL за брисање поруке.';
$messages['invalidrequest'] = 'Неисправан захтев! Подаци нису сачувани.';
$messages['invalidhost'] = 'Неисправно име сервера.';
$messages['nomessagesfound'] = 'Немате порука у сандучету.';
$messages['loggedout'] = 'Успешно сте завршили сесију. Довиђења!';
$messages['mailboxempty'] = 'Сандуче је празно';
$messages['nomessages'] = 'Нема порука';
$messages['refreshing'] = 'Освежавам...';
$messages['loading'] = 'Учитавам...';
$messages['uploading'] = 'Отпремам фајл...';
$messages['attaching'] = 'Прилажем фајл...';
$messages['uploadingmany'] = 'Отпремам фајлове...';
$messages['loadingdata'] = 'Учитавам податке...';
$messages['checkingmail'] = 'Проверавам нове поруке...';
$messages['sendingmessage'] = 'Шаљем поруку...';
$messages['messagesent'] = 'Порука је успешно послата.';
$messages['savingmessage'] = 'Уписујем поруку...';
$messages['messagesaved'] = 'Порука сачувана у нацрте.';
$messages['successfullysaved'] = 'Успешно сачувано.';
$messages['savingresponse'] = 'Снимам текст одговора...';
$messages['deleteresponseconfirm'] = 'Заиста желите да обришете овај текст одговора?';
$messages['nocontactselected'] = 'Још увек нисте изабрали контакт.';
$messages['addedsuccessfully'] = 'Контакт успешно додат у адресар.';
$messages['contactexists'] = 'Контакт са истом адресом већ постоји.';
$messages['contactnameexists'] = 'Контакт са истим именом већ постоји.';
$messages['blockedimages'] = 'Због заштите приватности, слике са удаљених сервера су блокиране у овој поруци.';
$messages['blockedresources'] = 'Због заштите приватности, удаљени ресурси су блокирани.';
$messages['encryptedmessage'] = 'Ова порука је шифрована и не може се приказати. Жао нам је!';
$messages['externalmessagedecryption'] = 'Ово је шифрована порука и може се дешифровати са проширењем вашег прегледача.';
$messages['nopubkeyfor'] = 'Нема исправног јавног кључа за $email';
$messages['nopubkeyforsender'] = 'Нема исправног јавног кључа за ваш идентитет пошиљаоца. Желите ли да поруку шифрујете само за примаоце?';
$messages['encryptnoattachments'] = 'Већ одаслат прилог не може се шифровати. Додајте га поново у уређивач шифровања.';
$messages['searchpubkeyservers'] = 'Желите ли да недостајуће кључеве потражите на серверима јавних кључева?';
$messages['encryptpubkeysfound'] = 'Нађени су следећи јавни кључеви:';
$messages['keyservererror'] = 'Неуспело добављање кључа са сервера.';
$messages['keyimportsuccess'] = 'Јавни кључ $key успешно увезен.';
$messages['nocontactsfound'] = 'Нема контаката.';
$messages['contactnotfound'] = 'Тражени контакт није нађен.';
$messages['contactsearchonly'] = 'Користите форму претраге да видите контакте из изабраног адресара.';
$messages['sendingfailed'] = 'Грешка при слању поруке.';
$messages['senttooquickly'] = 'Сачекајте $sec сек. пре слања ове поруке.';
$messages['errorsavingsent'] = 'Десила се грешка при упису послате поруке.';
$messages['errorsaving'] = 'Десила се грешка при упису.';
$messages['errormoving'] = 'Не могу да преместим поруке.';
$messages['errorcopying'] = 'Не могу да копирам поруке.';
$messages['errordeleting'] = 'Не могу да обришем поруке.';
$messages['errormarking'] = 'Не могу да означим поруке.';
$messages['alerttitle'] = 'Пажња';
$messages['confirmationtitle'] = 'Јесте ли сигурни...';
$messages['deletecontactconfirm']  = 'Да ли заиста желите да обришете изабране контакте?';
$messages['deletegroupconfirm']  = 'Да ли заиста желите да обришете изабрану групу?';
$messages['deletemessagesconfirm'] = 'Да ли заиста желите да обришете изабране поруке?';
$messages['deletefolderconfirm']  = 'Да ли заиста желите да обришете ову фасциклу?';
$messages['movefolderconfirm']  = 'Да ли заиста желите да преместите ову фасциклу?';
$messages['purgefolderconfirm']  = 'Да ли заиста желите да обришете све поруке у фасцикли?';
$messages['contactdeleting'] = 'Бришем контакте...';
$messages['groupdeleting'] = 'Бришем групу...';
$messages['folderdeleting'] = 'Бришем фасциклу...';
$messages['foldermoving'] = 'Премештам фасциклу...';
$messages['foldersubscribing'] = 'Претплаћујем се на фасциклу...';
$messages['folderunsubscribing'] = 'Одјављујем претплату на фасциклу...';
$messages['formincomplete'] = 'Образац није у целости попуњен.';
$messages['noemailwarning'] = 'Унесите исправну адресу е-поште.';
$messages['nonamewarning']  = 'Унесите име.';
$messages['nopagesizewarning'] = 'Унесите величину странице.';
$messages['nosenderwarning'] = 'Унесите е-адресу пошиљаоца.';
$messages['recipientsadded'] = 'Примаоци успешно додати.';
$messages['norecipientwarning'] = 'Унесите бар једног примаоца.';
$messages['disclosedrecipwarning'] = 'Сви примаоци ће видети адресе осталих прималаца. Да бисте ово избегли и заштитили њихову приватност, користите БЦЦ поље.';
$messages['disclosedreciptitle'] = 'Превише јавних корисика';
$messages['nosubjectwarning']  = 'Поље „Наслов“ је празно. Желите ли да унесете наслов?';
$messages['nosubjecttitle']  = 'Нема теме';
$messages['nobodywarning'] = 'Да ли желите да пошаљете поруку без текста?';
$messages['notsentwarning'] = 'Порука није послата и има несачуване измене. Желите ли да одбаците измене?';
$messages['restoresavedcomposedata'] = 'Нађена је порука претходно састављена али није послата.\n\nПредмет: $subject\nСачувана: $date\n\nЖелите ли да вратите ову поруку?';
$messages['nosearchname'] = 'Унесите име контакта или е-адресу.';
$messages['notuploadedwarning'] = 'Нису сви прилози отпремљени. Сачекајте или откажите отпремање.';
$messages['searchsuccessful'] = 'Пронађених порука: $nr';
$messages['contactsearchsuccessful'] = 'Пронађено контаката: $nr';
$messages['searchnomatch'] = 'Претрага није дала резултате.';
$messages['searching'] = 'Тражим...';
$messages['checking'] = 'Проверавам...';
$messages['stillsearching'] = 'И даље тражим...';
$messages['nospellerrors'] = 'Нису нађене правописне грешке.';
$messages['folderdeleted'] = 'Фасцикла успешно обрисана.';
$messages['foldersubscribed'] = 'Фасцикла успешно претплаћена.';
$messages['folderunsubscribed'] = 'Фасцикла успешно одјављена са претплате.';
$messages['deletedsuccessfully'] = 'Успешно обрисано.';
$messages['converting'] = 'Уклањам форматирања...';
$messages['messageopenerror'] = 'Порука се не може учитати са сервера.';
$messages['filelinkerror'] = 'Прилагање фајла није успело.';
$messages['fileuploaderror'] = 'Неуспешно отпремање фајла.';
$messages['csvfilemismatch'] = 'Увоз више ЦСВ фајлова са различитим пољима није подржано.';
$messages['filesizeerror'] = 'Отпремљени фајл превазилази максимум од $size.';
$messages['filecounterror'] = 'Највише фајлова које можете послати одједном је $count';
$messages['msgsizeerror'] = 'Не могу да приложим фајл. Максимална величина поруке од ($size) је прекорачена.';
$messages['msgsizeerrorfwd'] = 'Ограничење величине поруке ($size) прекорачено. Број порука које нису приложене: $num.';
$messages['copysuccess'] = 'Успешно копирано $nr контаката.';
$messages['movesuccess'] = 'Успешно премештено $nr контаката.';
$messages['copyerror'] = 'Нисам могао да копирам ниједан контакт.';
$messages['moveerror'] = 'Нисам могао да преместим ниједан контакт.';
$messages['sourceisreadonly'] = 'Овај извор адресе је само за читање.';
$messages['errorsavingcontact'] = 'Не могу да сачувам адресу контакта.';
$messages['movingmessage'] = 'Премештам поруке...';
$messages['copyingmessage'] = 'Копирам поруке...';
$messages['copyingcontact'] = 'Копирам контакте...';
$messages['movingcontact'] = 'Премештам контакт(е)...';
$messages['deletingmessage'] = 'Бришем поруке...';
$messages['markingmessage'] = 'Означавам поруке...';
$messages['addingmember'] = 'Додајем контакте у групу...';
$messages['removingmember'] = 'Уклањам контакте из групе...';
$messages['receiptsent'] = 'Успешно послато обавештење о приспећу.';
$messages['errorsendingreceipt'] = 'Неуспело слање обавештења о приспећу.';
$messages['deleteidentityconfirm'] = 'Заиста желите да обришете овај идентитет?';
$messages['nodeletelastidentity'] = 'Не можете обрисати овај идентитет. Он је последњи.';
$messages['forbiddencharacter'] = 'Назив фасцикле садржи забрањени знак.';
$messages['selectimportfile'] = 'Изаберите фајл за отпремање..';
$messages['addresswriterror'] = 'Изабрани адресар није уписив.';
$messages['contactaddedtogroup'] = 'Контакти су успешно додати у групу.';
$messages['contactremovedfromgroup'] = 'Контакти су успешно уклоњени из групе.';
$messages['nogroupassignmentschanged'] = 'Нису измењена задужења групе.';
$messages['importwait'] = 'Увозим, сачекајте...';
$messages['importformaterror'] = 'Увоз није успео! Отпремљени фајл није исправан фајл увоза података.';
$messages['importconfirm'] = '<b>Успешно увезено контаката: $inserted</b>';
$messages['importconfirmskipped'] = '<b>Прескочено постојећих уноса: $skipped</b>';
$messages['importmessagesuccess'] = 'Успешно увезено $nr порука';
$messages['importmessageerror'] = 'Увоз није успео! Отпремљени фајл није исправан фајл поруке или сандучета';
$messages['opnotpermitted'] = 'Радња није дозвољена!';
$messages['nofromaddress'] = 'У изабраном идентитету недостаје е-адреса.';
$messages['editorwarning'] = 'Пребацивање типа уређивача може узроковати губитак форматирања текста. Желите ли да наставите?';
$messages['httpreceivedencrypterror'] = 'Кобна грешка у постави. Контактирајте одмах вашег администратора. <b>Ваша порука се не може послати.</b>';
$messages['smtpconnerror'] = 'СМТП грешка ($code): неуспешно повезивање на сервер.';
$messages['smtpautherror'] = 'СМТП грешка ($code): неуспешна аутентификација.';
$messages['smtpfromerror'] = 'СМТП грешка ($code): неуспешно постављање пошиљаоца "$from" ($msg)';
$messages['smtptoerror'] = 'СМТП грешка ($code): неуспешно додавање примаоца "$to" ($msg)';
$messages['smtprecipientserror'] = 'СМТП грешка ($code): није могуће рашчланити листу прималаца.';
$messages['smtputf8error'] = 'СМТП грешка: сервер не подржава Уникод у адресама е-поште.';
$messages['smtpsizeerror'] = 'СМТП грешка: порука прекорачује ограничење величине ($limit)';
$messages['smtperror'] = 'СМТП грешка ($code): $msg';
$messages['emailformaterror'] = 'Неисправна е-адреса: $email';
$messages['toomanyrecipients'] = 'Превише прималаца. Смањите број прималаца на $max.';
$messages['maxgroupmembersreached'] = 'Број чланова групе прелази максимум од $max.';
$messages['internalerror'] = 'Десила се унутрашња грешка. Покушајте поново.';
$messages['contactdelerror'] = 'Не могу да обришем контакте.';
$messages['contactdeleted'] = 'Брисање контаката успешно.';
$messages['contactrestoreerror'] = 'Не могу да вратим обрисане контакте.';
$messages['contactrestored'] = 'Контакти су успешно враћени.';
$messages['groupdeleted'] = 'Група успешно обрисана.';
$messages['grouprenamed'] = 'Група успешно преименована.';
$messages['groupcreated'] = 'Група успешно направљена.';
$messages['savedsearchdeleted'] = 'Сачувана претрага је успешно обрисана.';
$messages['savedsearchdeleteerror'] = 'Не могу да обришем сачувану претрагу.';
$messages['savedsearchcreated'] = 'Успешно је сачувана претрага.';
$messages['savedsearchcreateerror'] = 'Не могу да сачувам претрагу.';
$messages['messagedeleted'] = 'Поруке су успешно обрисане.';
$messages['messagemoved'] = 'Поруке су успешно премештене.';
$messages['messagemovedtotrash'] = 'Поруке успешно премештене у Смеће.';
$messages['messagecopied'] = 'Поруке су успешно копиране.';
$messages['messagemarked'] = 'Поруке су успешно означене.';
$messages['autocompletechars'] = 'За аутоматско довршавање унесите бар $min знака.';
$messages['autocompletemore'] = 'Више резултата се поклапа. Унесите још знакова.';
$messages['namecannotbeempty'] = 'Назив не може бити празан.';
$messages['nametoolong'] = 'Предугачак назив.';
$messages['namedotforbidden'] = 'Назив фасцикле не може почети тачком.';
$messages['folderupdated'] = 'Фасцикла успешно ажурирана.';
$messages['foldercreated'] = 'Фасцикла је успешно направљена.';
$messages['invalidimageformat'] = 'Није исправан формат слике.';
$messages['mispellingsfound'] = 'Уочене су правописне грешке у поруци.';
$messages['parentnotwritable'] = 'Не могу да направим/преместим фасциклу у изабрану фасциклу. Нема дозволе приступа.';
$messages['messagetoobig'] = 'Део са поруком је превелик за обраду.';
$messages['attachmentvalidationerror'] = 'Овај прилог је сумњив јер се његов тип не поклапа са типом наведеним у поруци. Ако не верујете пошиљаоцу, не би требало да га отварате у прегледачу јер може имати малициозан садржај.<br/><br/><em>Очекивано: $expected; откривено: $detected</em>';
$messages['noscriptwarning'] = 'Упозорење: ова поштанска услуга захтева Јава скрипт! Да бисте је користили, укључите Јава скрипт у поставкама вашег прегледача.';
$messages['messageissent'] = 'Порука је већ послата али није још сачувана. Желите ли да је сачувате сада?';
$messages['errnotfound'] = 'Фајл није нађен';
$messages['errnotfoundexplain'] = 'Захтевани ресурс није нађен!';
$messages['errfailedrequest'] = 'Неуспешан захтев';
$messages['errauthorizationfailed'] = 'Овлашћење није успело';
$messages['errunauthorizedexplain'] = 'Нисам могао да проверим ваше овлашћење за приступ овом сервису!';
$messages['errrequestcheckfailed'] = 'Захтев за провером није успео';
$messages['errcsrfprotectionexplain'] = "Због ваше заштите, приступ овом ресурсу је обезбјеђен против ЦСРФ-а.\nАко видите ово, вероватно се нисте одјавили пре напуштања веб апликације.\n\nСада је потребна интеракција човека за наставак.";
$messages['errcontactserveradmin'] = 'Контактирајте администратора вашег сервера.';
$messages['clicktoresumesession'] = 'Кликните овде да бисте наставили вашу претходну сесију';
$messages['errcomposesession'] = 'Грешка сесије састављача';
$messages['errcomposesessionexplain'] = 'Тражена сесија састављача није нађена.';
$messages['clicktocompose'] = 'Кликните овде да саставите нову поруку';
$messages['nosupporterror'] = 'Ваш прегледач не подржава ову могућност.';
$messages['siginserted'] = 'Потпис успешно убачен.';
$messages['responseinserted'] = 'Одговор успешно убачен.';
$messages['listempty'] = 'Списак је празан.';
$messages['listusebutton'] = 'Користите дугме Направи да додате нови запис.';
$messages['keypaircreatesuccess'] = 'Нови пар кључева је успешно креиран за $identity.';
$messages['emptyattachment'] = 'Овај прилог делује празно.<br>Проверите са особом која га је послала.';
localization/cy_GB/labels.inc000064400000101604151727150570012170 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Croeso i $product';
$labels['username'] = 'Enw defnyddiwr';
$labels['password'] = 'Cyfrinair';
$labels['server'] = 'Gweinydd';
$labels['login'] = 'Mewngofnodi';
$labels['oauthlogin'] = 'Mewngofnodi gyda $provider';
$labels['menu'] = 'Bwydlen';
$labels['logout'] = 'Allgofnodi';
$labels['mail'] = 'E-bost';
$labels['settings'] = 'Gosodiadau Personol';
$labels['addressbook'] = 'Llyfr Cyfeiriadau';
$labels['darkmode'] = 'Modd tywyll';
$labels['lightmode'] = 'Modd golau';
$labels['inbox'] = 'Mewnflwch';
$labels['drafts'] = 'Drafftiau';
$labels['sent'] = 'Danfonwyd';
$labels['trash'] = 'Sbwriel';
$labels['junk'] = 'Sothach';
$labels['show_real_foldernames'] = 'Dangos enwau go-iawn ar gyfer ffolderi arbennig';
$labels['subject'] = 'Pwnc';
$labels['from'] = 'Oddi wrth';
$labels['sender'] = 'Anfonwr';
$labels['to'] = 'Derbyniwr';
$labels['cc'] = 'Copi';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Ateb-I';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Dyddiad';
$labels['size'] = 'Maint';
$labels['priority'] = 'Blaenoriaeth';
$labels['organization'] = 'Enw\'r Sefydliad';
$labels['readstatus'] = 'Statws darllen';
$labels['listoptions'] = 'Dewisiadau rhestr...';
$labels['listoptionstitle'] = 'Dewisiadau rhestr';
$labels['mailboxlist'] = 'Ffolderi';
$labels['messagesfromto'] = 'Negeseuon $from i $to o $count';
$labels['threadsfromto'] = 'Edefau $from i $to o $count';
$labels['messagenrof'] = 'Neges $nr o $count';
$labels['fromtoshort'] = '$from - $to o $count';
$labels['copy'] = 'Copio';
$labels['move'] = 'Symud';
$labels['moveto'] = 'Symud i...';
$labels['copyto'] = 'Copio i...';
$labels['download'] = 'Lawrlwytho';
$labels['open'] = 'Agor';
$labels['showattachment'] = 'Dangos';
$labels['showanyway'] = 'Dangos beth bynnag';
$labels['filename'] = 'Enw ffeil';
$labels['filesize'] = 'Maint ffeil';
$labels['addtoaddressbook'] = 'Ychwanegu i\'r llyfr cyfeiriadau';
$labels['sun'] = 'Sul';
$labels['mon'] = 'Llun';
$labels['tue'] = 'Maw';
$labels['wed'] = 'Mer';
$labels['thu'] = 'Iau';
$labels['fri'] = 'Gwe';
$labels['sat'] = 'Sad';
$labels['sunday'] = 'Dydd Sul';
$labels['monday'] = 'Dydd Llun';
$labels['tuesday'] = 'Dydd Mawrth';
$labels['wednesday'] = 'Dydd Mercher';
$labels['thursday'] = 'Dydd Iau';
$labels['friday'] = 'Dydd Gwener';
$labels['saturday'] = 'Dydd Sadwrn';
$labels['jan'] = 'Ion';
$labels['feb'] = 'Chwe';
$labels['mar'] = 'Maw';
$labels['apr'] = 'Ebr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Meh';
$labels['jul'] = 'Gor';
$labels['aug'] = 'Aws';
$labels['sep'] = 'Med';
$labels['oct'] = 'Hyd';
$labels['nov'] = 'Tach';
$labels['dec'] = 'Rhag';
$labels['longjan'] = 'Ionawr';
$labels['longfeb'] = 'Chwefror';
$labels['longmar'] = 'Mawrth';
$labels['longapr'] = 'Ebrill';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Mehefin';
$labels['longjul'] = 'Gorffennaf';
$labels['longaug'] = 'Awst';
$labels['longsep'] = 'Medi';
$labels['longoct'] = 'Hydref';
$labels['longnov'] = 'Tachwedd';
$labels['longdec'] = 'Rhagfyr';
$labels['today'] = 'Heddiw';
$labels['refresh'] = 'Ail-ofyn';
$labels['checkmail'] = 'Edrych am negeseuon newydd';
$labels['compose'] = 'Ysgrifennu neges';
$labels['writenewmessage'] = 'Creu neges newydd';
$labels['reply'] = 'Ymateb';
$labels['replytomessage'] = 'Ymateb i\'r anfonwr';
$labels['replytoallmessage'] = 'Ymateb i\'r anfonwr a phob derbyniwr';
$labels['replyall'] = 'Ymateb i bawb';
$labels['replylist'] = 'Ymateb i\'r rhestr';
$labels['forward'] = 'Anfon ymlaen';
$labels['forwardinline'] = 'Anfon ymlaen o fewn y neges';
$labels['forwardattachment'] = 'Anfon ymlaen fel atodiad';
$labels['forwardmessage'] = 'Danfon y neges ymlaen';
$labels['bouncemsg'] = 'Ail-anfon (bowns)';
$labels['bounce'] = 'Ail-anfon';
$labels['deletemessage'] = 'Dileu\'r neges';
$labels['movemessagetotrash'] = 'Symud y neges i\'r sbwriel';
$labels['printmessage'] = 'Argraffu\'r neges';
$labels['previousmessage'] = 'Dangos y neges flaenorol';
$labels['firstmessage'] = 'Dangos y neges gyntaf';
$labels['nextmessage'] = 'Dangos y neges nesaf';
$labels['lastmessage'] = 'Dangos y neges olaf';
$labels['backtolist'] = 'Nôl i\'r rhestr o negeseuon';
$labels['viewsource'] = 'Edrych ar y ffynhonnell';
$labels['mark'] = 'Nodi';
$labels['markmessages'] = 'Nodi\'r negeseuon';
$labels['markread'] = 'Wedi eu darllen';
$labels['markunread'] = 'Heb eu darllen';
$labels['markflagged'] = 'Wedi eu fflagio';
$labels['markunflagged'] = 'Heb eu fflagio';
$labels['markundeleted'] = 'Fel heb ei ddileu';
$labels['moreactions'] = 'Mwy o weithredoedd...';
$labels['markallread'] = 'Nodi pob un wedi ei ddarllen';
$labels['folders-cur'] = 'Ffolder dewiswyd yn unig';
$labels['folders-sub'] = 'Ffolder dewiswyd a\'i isffolderi';
$labels['folders-all'] = 'Pob ffolder';
$labels['more'] = 'Mwy';
$labels['back'] = 'Yn ôl';
$labels['options'] = 'Dewisiadau';
$labels['composeoptions'] = 'Dewisiadau ysgrifennu';
$labels['optionsandattachments'] = 'Dewisiadau ac atodiadau';
$labels['actions'] = 'Gweithredoedd';
$labels['first'] = 'Cyntaf';
$labels['last'] = 'Olaf';
$labels['previous'] = 'Blaenorol';
$labels['next'] = 'Nesaf';
$labels['select'] = 'Dewis';
$labels['selection'] = 'Dewis';
$labels['all'] = 'Popeth';
$labels['none'] = 'Dim';
$labels['currpage'] = 'Tudalen gyfredol';
$labels['isread'] = 'Darllenwyd';
$labels['unread'] = 'Heb eu darllen';
$labels['flagged'] = 'Nodwyd';
$labels['unflagged'] = 'Heb eu Fflagio';
$labels['unanswered'] = 'Heb ei ateb';
$labels['withattachment'] = 'Gyda atodiad';
$labels['deleted'] = 'Dilewyd';
$labels['undeleted'] = 'Heb ei ddileu';
$labels['replied'] = 'Ymatebwyd';
$labels['forwarded'] = 'Anfonwyd ymlaen';
$labels['invert'] = 'Gwrth-droi';
$labels['filter'] = 'Hidlo';
$labels['list'] = 'Rhestr';
$labels['threads'] = 'Edafedd';
$labels['expand-all'] = 'Ehangu Popeth';
$labels['expand-unread'] = 'Ehangu Negeseuon Heb eu darllen';
$labels['collapse-all'] = 'Crebachu Popeth';
$labels['threaded'] = 'Edafedd';
$labels['showunread'] = 'Dangos negeseuon heb eu darllen';
$labels['autoexpand_threads'] = 'Ehangu edefau neges';
$labels['do_expand'] = 'pob edefyn';
$labels['expand_only_unread'] = 'dim ond gyda negeseuon heb eu darllen';
$labels['fromto'] = 'Danfonwr/Derbynnydd';
$labels['flag'] = 'Fflag';
$labels['attachment'] = 'Atodiad';
$labels['nonesort'] = 'Dim';
$labels['sentdate'] = 'Dyddiad danfon';
$labels['arrival'] = 'Dyddiad derbyn';
$labels['asc'] = 'esgynnol';
$labels['desc'] = 'disgynnol';
$labels['listcolumns'] = 'Rhestr colofnau';
$labels['listsorting'] = 'Colofn trefnu';
$labels['listorder'] = 'Trefn didoli';
$labels['listmode'] = 'Golwg rhestr';
$labels['lmode'] = 'Golwg rhestr';
$labels['layout'] = 'Cynllun';
$labels['layoutwidescreen'] = 'Sgrîn lydan';
$labels['layoutdesktop'] = 'Pen bwrdd';
$labels['layoutlist'] = 'Rhestr';
$labels['layoutwidescreendesc'] = 'Sgrîn lydan (golwg 3 colofn)';
$labels['layoutdesktopdesc'] = 'Pen-bwrdd (rhestr lydan a rhagolwg isod)';
$labels['layoutlistdesc'] = 'Rhestr (dim rhagolwg)';
$labels['folderactions'] = 'Gweithredoedd ffolder...';
$labels['compact'] = 'Crynhoi';
$labels['empty'] = 'Gwagio';
$labels['importmessages'] = 'Mewnforio negeseuon';
$labels['mailimportdesc'] = 'Fe allwch chi lwytho fyny ffeiliau ebost mewn fformat <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> neu <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>';
$labels['mailimportzip'] = 'Gellir cywasgu nifer o ffeiliau mewn i archif zip.';
$labels['quota'] = 'Defnydd';
$labels['unknown'] = 'anhysbys';
$labels['unlimited'] = 'diderfyn';
$labels['quotatype'] = 'Math Cwota';
$labels['quotatotal'] = 'Cyfyngiad';
$labels['quotaused'] = 'Defnyddiwyd';
$labels['quotastorage'] = 'Gofod disg';
$labels['quotamessage'] = 'Nifer negeseuon';
$labels['shortheaderdate'] = 'Ar $date';
$labels['shortheaderto'] = 'I $to ar $date';
$labels['shortheaderfrom'] = 'O $from i $date';
$labels['quicksearch'] = 'Chwiliad cyflym';
$labels['searchplaceholder'] = 'Chwilio...';
$labels['resetsearch'] = 'Ail-osod chwiliad';
$labels['searchmod'] = 'Addasyddion chwilio';
$labels['msgtext'] = 'Y neges yn llawn';
$labels['body'] = 'Corff';
$labels['type'] = 'Math';
$labels['namex'] = 'Enw';
$labels['searchscope'] = 'Amrediad';
$labels['currentfolder'] = 'Ffolder cyfredol';
$labels['subfolders'] = 'Hwn a is-ffolderi';
$labels['allfolders'] = 'Pob ffolder';
$labels['searchinterval-1W'] = 'hynach na wythnos';
$labels['searchinterval-1M'] = 'hynach na mis';
$labels['searchinterval-1Y'] = 'hynach na blwyddyn';
$labels['searchinterval1W'] = 'ifancach na wythnos';
$labels['searchinterval1M'] = 'ifancach na mis';
$labels['searchinterval1Y'] = 'ifancach na blwyddyn';
$labels['openinextwin'] = 'Agor mewn ffenest newydd';
$labels['emlsave'] = 'Lawrlwytho (.eml)';
$labels['changeformattext'] = 'Dangos mewn fformat testun plaen';
$labels['changeformathtml'] = 'Dangos mewn fformat HTML';
$labels['editasnew'] = 'Golygu fel neges newydd';
$labels['send'] = 'Anfon';
$labels['sendmessage'] = 'Anfon nawr';
$labels['savemessage'] = 'Cadw\'r drafft hwn';
$labels['addattachment'] = 'Atodi ffeil';
$labels['charset'] = 'Set nodiau';
$labels['editortype'] = 'Math golygydd';
$labels['returnreceipt'] = 'Cadarnhau derbyn';
$labels['dsn'] = 'Hysbysiad statws danfon';
$labels['keepformatting'] = 'Cadw\'r fformatio';
$labels['mailreplyintro'] = 'Ar $date, ysgrifennodd $sender:';
$labels['originalmessage'] = 'Neges Wreiddiol';
$labels['selectimage'] = 'Dewiswch lun';
$labels['addimage'] = 'Ychwanegwch lun';
$labels['selectmedia'] = 'Dewiswch fideo';
$labels['addmedia'] = 'Ychwanegwch fideo';
$labels['encrypt'] = 'Amgryptio';
$labels['encryptmessage'] = 'Amgryptio neges';
$labels['encryptmessagemailvelope'] = 'Amgryption neges gyda Mailvelope';
$labels['importpubkeys'] = 'Mewnforio allweddi cyhoeddus';
$labels['encryptedsendialog'] = 'Anfon neges wedi amgryptio';
$labels['encryptandsign'] = 'Amgodi ac arwyddo';
$labels['keyid'] = 'ID Allwedd';
$labels['keylength'] = 'Didiau';
$labels['keyexpired'] = 'Wedi darfod';
$labels['keyrevoked'] = 'Wedi dirymu';
$labels['bccinstead'] = 'Defnyddio Bcc';
$labels['addheader'] = 'Ychwanegu derbynnydd (pennawd)';
$labels['insert'] = 'Mewnosod';
$labels['insertcontact'] = 'Mewnosod cyswllt/cysylltiadau';
$labels['recipient'] = 'Derbynnwr';
$labels['recipientedit'] = 'Golygu derbynnydd';
$labels['editidents'] = 'Golygu personoliaethau';
$labels['spellcheck'] = 'Sillafu';
$labels['checkspelling'] = 'Gwirio sillafu';
$labels['resumeediting'] = 'Ail-ddechrau golygu';
$labels['revertto'] = 'Dychwelyd i';
$labels['restore'] = 'Adfer';
$labels['restoremessage'] = 'Adfer neges?';
$labels['ignore'] = 'Anwybyddu';
$labels['responses'] = 'Ymatebion';
$labels['insertresponse'] = 'Mewnosod ymateb';
$labels['manageresponses'] = 'Rheoli ymatebion';
$labels['newresponse'] = 'Cadw ymateb newydd';
$labels['addresponse'] = 'Ychwanegu ymateb';
$labels['editresponse'] = 'Golygu ymateb';
$labels['editresponses'] = 'Golygu ymatebion';
$labels['responsename'] = 'Enw';
$labels['responsetext'] = 'Testun Ymateb';
$labels['attach'] = 'Atodi';
$labels['attachments'] = 'Atodiadau';
$labels['upload'] = 'Lanlwytho';
$labels['uploadprogress'] = '$percent ($current o $total)';
$labels['close'] = 'Cau';
$labels['messageoptions'] = 'Dewisiadau neges...';
$labels['togglecomposeoptions'] = 'Newid dewisiadau ysgrifennu';
$labels['attachmentrename'] = 'Ailenwi atodiad';
$labels['low'] = 'Isel';
$labels['lowest'] = 'Isaf';
$labels['normal'] = 'Cyffredin';
$labels['high'] = 'Uchel';
$labels['highest'] = 'Uchaf';
$labels['nosubject'] = '(dim pwnc)';
$labels['showimages'] = 'Dangos lluniau';
$labels['allow'] = 'Caniatau';
$labels['alwaysshow'] = 'Dangos lluniau bob amser o $sender';
$labels['alwaysallow'] = 'Caniatau bob amser o $sender';
$labels['isdraft'] = 'Mae hwn yn neges ddrafft';
$labels['andnmore'] = '$nr mwy...';
$labels['details'] = 'Manylion';
$labels['summary'] = 'Crynodeb';
$labels['headers'] = 'Penawdau';
$labels['allheaders'] = 'Pob pennawd...';
$labels['togglemoreheaders'] = 'Dangos fwy o benynnau\'r neges';
$labels['togglefullheaders'] = 'Toglo penawdau llawn y neges';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testun plaen';
$labels['savesentmessagein'] = 'Cadw negeseuon a ddanfonir yn';
$labels['dontsave'] = 'peidio cadw';
$labels['maxuploadsize'] = 'Y maint ffeil uchaf a ganiateir yw $size';
$labels['addcc'] = 'Ychwanegu Cc';
$labels['addbcc'] = 'Ychwanegu Bcc';
$labels['addreplyto'] = 'Ychwanegu Ateb-I';
$labels['addfollowupto'] = 'Ychwanegu Followup-To';
$labels['sendreceipt'] = 'Danfon hysbysiad derbyn?';
$labels['mdnrequest'] = 'Mae anfonwr y neges hwn wedi gofyn am hysbysiad eich bod wedi darllen y neges. Hoffech chi hysbysu\'r anfonwr?';
$labels['receiptread'] = 'Cadarnhad Derbyn (darllenwyd)';
$labels['yourmessage'] = 'Mae hwn yn gadarnhad o dderbyn eich neges';
$labels['receiptnote'] = 'Nodyn: Mae\'r cadarnhad hwn yn cydnabod fod y neges wedi ei ddangos ar gyfrifiadur y derbynnydd. \'Does dim sicrwydd fod y derbynydd wedi darllen neu ddeall cynnwys y neges.';
$labels['sendalwaysto'] = 'Danfon bob amser i $email';
$labels['zoomin'] = 'Chwyddo Mewn';
$labels['zoomout'] = 'Chwyddo Allan';
$labels['rotate'] = 'Cylchdroi';
$labels['increaseimage'] = 'Cynyddu maint delwedd';
$labels['decreaseimage'] = 'Lleihau maint delwedd';
$labels['rotateimage'] = 'Cylchdroi delwedd';
$labels['showtools'] = 'Dangos teclynnau delwedd';
$labels['hidetools'] = 'Cuddio teclynnau delwedd';
$labels['name'] = 'Enw ddangosir';
$labels['firstname'] = 'Enw cyntaf';
$labels['surname'] = 'Enw olaf';
$labels['middlename'] = 'Enw Canol';
$labels['nameprefix'] = 'Rhagddodiad';
$labels['namesuffix'] = 'Olddodiad';
$labels['nickname'] = 'Llysenw';
$labels['jobtitle'] = 'Teitl Swydd';
$labels['department'] = 'Adran';
$labels['gender'] = 'Rhyw';
$labels['maidenname'] = 'Enw cyn priodi';
$labels['email'] = 'E-bost';
$labels['phone'] = 'Ffôn';
$labels['address'] = 'Cyfeiriad';
$labels['street'] = 'Stryd';
$labels['locality'] = 'Tref/Dinas';
$labels['zipcode'] = 'Côd Post/ZIP';
$labels['region'] = 'Sîr/Talaith';
$labels['country'] = 'Gwlad';
$labels['birthday'] = 'Penblwydd';
$labels['anniversary'] = 'Cylchwyl';
$labels['website'] = 'Gwefan';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Nodiadau';
$labels['male'] = 'gwryw';
$labels['female'] = 'benyw';
$labels['manager'] = 'Rheolwr';
$labels['assistant'] = 'Cynorthwyydd';
$labels['spouse'] = 'Cymar';
$labels['allfields'] = 'Pob maes';
$labels['search'] = 'Chwilio';
$labels['searchresult'] = 'Canlyniadau chwilio';
$labels['advsearch'] = 'Chwilio Uwch';
$labels['advanced'] = 'Uwch';
$labels['other'] = 'Arall';
$labels['printcontact'] = 'Cyswllt argraffu';
$labels['qrcode'] = 'Cod QR';
$labels['typehome'] = 'Cartref';
$labels['typework'] = 'Gwaith';
$labels['typeother'] = 'Arall';
$labels['typemobile'] = 'Symudol';
$labels['typemain'] = 'Prif';
$labels['typehomefax'] = 'Ffacs Adref';
$labels['typeworkfax'] = 'Ffacs Gwaith';
$labels['typecar'] = 'Car';
$labels['typepager'] = 'Peiriant Galw';
$labels['typevideo'] = 'Fideo';
$labels['typeassistant'] = 'Cynorthwyydd';
$labels['typehomepage'] = 'Gwefan';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Proffil';
$labels['addfield'] = 'Ychwanegu maes...';
$labels['addcontact'] = 'Ychwanegu cyswllt';
$labels['editcontact'] = 'Golygu cyswllt';
$labels['contacts'] = 'Cysylltiadau';
$labels['contactproperties'] = 'Nodweddion cyswllt';
$labels['contactnameandorg'] = 'Enw a Corff';
$labels['personalinfo'] = 'Gwybodaeth bersonol';
$labels['personal'] = 'Persono';
$labels['contactphoto'] = 'Llun cyswllt';
$labels['edit'] = 'Golygu';
$labels['cancel'] = 'Canslo';
$labels['save'] = 'Cadw';
$labels['delete'] = 'Dileu';
$labels['discard'] = 'Gwaredu';
$labels['continue'] = 'Parhau';
$labels['ok'] = 'Iawn';
$labels['rename'] = 'Ail-enwi';
$labels['addphoto'] = 'Ychwanegu';
$labels['replacephoto'] = 'Amnewid';
$labels['uploadphoto'] = 'Lanlwytho llun';
$labels['choosefile'] = 'Dewis ffeil...';
$labels['choosefiles'] = 'Dewis ffeiliau...';
$labels['browse'] = 'Pori';
$labels['newcontact'] = 'Creu cyswllt newydd';
$labels['deletecontact'] = 'Dileu y cysylltiadau a ddewiswyd';
$labels['composeto'] = 'Ysgrifennu neges at';
$labels['contactsfromto'] = 'Cysylltiadau $from i $to o $count';
$labels['print'] = 'Argraffu';
$labels['export'] = 'Allforio';
$labels['exportall'] = 'Allforio popeth';
$labels['exportsel'] = 'Allforio dewiswyd';
$labels['exportvcards'] = 'Allforio cysylltiadau mewn fformat vCard';
$labels['newgroup'] = 'Creu grŵp newydd';
$labels['addgroup'] = 'Ychwanegu grŵp';
$labels['grouprename'] = 'Ail-enwi grŵp';
$labels['groupdelete'] = 'Dileu grŵp';
$labels['groupassign'] = 'Ychwanegu i\'r grŵp...';
$labels['groupremove'] = 'Tynnu o\'r grŵp';
$labels['groupremoveselected'] = 'Dileu y cysylltiadau dewiswyd o\'r grŵp';
$labels['uponelevel'] = 'Fyny un lefel';
$labels['previouspage'] = 'Dangos y set flaenorol';
$labels['firstpage'] = 'Dangos y set gyntaf';
$labels['nextpage'] = 'Dangos y set nesaf';
$labels['lastpage'] = 'Dangos y set olaf';
$labels['group'] = 'Grŵp';
$labels['groups'] = 'Grwpiau';
$labels['listgroup'] = 'Rhestru aelodau\'r grŵp';
$labels['personaladrbook'] = 'Cyfeiriadau Personol';
$labels['searchsave'] = 'Cadw chwiliad';
$labels['searchdelete'] = 'Dileu chwiliad';
$labels['import'] = 'Mewnforio';
$labels['importcontacts'] = 'Mewnforio cysylltiadau';
$labels['importfromfile'] = 'Mewnforio o ffeil';
$labels['importtarget'] = 'Ychwanegu cysylltiadau i';
$labels['importreplace'] = 'Dileu y llyfr cyfeiriadau cyfan wrth lwytho';
$labels['importgroups'] = 'Mewnforio penodiadau grŵp';
$labels['importgroupsall'] = 'Holl (creu grwpiau os oes angen)';
$labels['importgroupsexisting'] = 'Dim ond ar gyfer grwpiau sy\'n bodoli';
$labels['importdesc'] = 'Gallwch lwytho fyny cysylltiadau o lyfr cyfeiriadau blaenorol. <br/>Ar hyn o bryd rydym yn cefnogi mewnforio cyfeiriadau o\'r fformatau data <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> neu CSV (comma-separated)';
$labels['importmapdesc'] = 'Cadarnhewch fod y wybodaeth mapio meysydd isod yn gywir cyn parhau gyda mewnforio data CSV.';
$labels['fieldnotmapped'] = 'Ni fapiwyd y maes (peidio mewnforio)';
$labels['skipheader'] = 'Peidio mewnforio\'r llinell gyntaf (pennawdau)';
$labels['done'] = 'Wedi gorffen';
$labels['settingsfor'] = 'Gosodiadau ar gyfer';
$labels['about'] = 'Amdan';
$labels['preferences'] = 'Dewisiadau';
$labels['userpreferences'] = 'Dewisiadau\'r defnyddiwr';
$labels['editpreferences'] = 'Golygu dewisiadau\'r defnyddiwr';
$labels['identities'] = 'Personoliaethau';
$labels['manageidentities'] = 'Rheoli personoliaethau';
$labels['newidentity'] = 'Creu personoliaeth newydd';
$labels['addidentity'] = 'Ychwanegu personoliaeth';
$labels['editidentity'] = 'Golygu personoliaeth';
$labels['identityencryption'] = 'Amgryptiad';
$labels['preferhtml'] = 'Dangos HTML';
$labels['defaultcharset'] = 'Set Nodau Diofyn';
$labels['htmlmessage'] = 'Neges HTML';
$labels['messagepart'] = 'Rhan';
$labels['digitalsig'] = 'Llofnod Digidol';
$labels['dateformat'] = 'Fformat dyddiad';
$labels['timeformat'] = 'Fformat amser';
$labels['prettydate'] = 'Dyddiadau pert';
$labels['setdefault'] = 'Rhagosod';
$labels['autodetect'] = 'Awto';
$labels['language'] = 'Iaith';
$labels['timezone'] = 'Parth amser';
$labels['pagesize'] = 'Rhesi ar bob tudalen';
$labels['signature'] = 'Llofnod';
$labels['dstactive'] = 'Amser arbed golau ddydd';
$labels['showinextwin'] = 'Agor neges mewn ffenest newydd';
$labels['composeextwin'] = 'Ysgrifennu mewn ffenest newydd';
$labels['htmleditor'] = 'Ysgrifennu negeseuon HTML';
$labels['htmlonreply'] = 'wrth ateb i neges HTML yn unig';
$labels['htmlonreplyandforward'] = 'wrth ddanfon ymlaen neu ymateb i neges HTML';
$labels['htmlsignature'] = 'Llofnod HTML';
$labels['showemail'] = 'Dangos cyfeiriad ebost gyda\'r enw gweledig';
$labels['previewpane'] = 'Dangos ffenest rhagolwg';
$labels['skin'] = 'Croen rhyngwyneb';
$labels['logoutclear'] = 'Clirio\'r Sbwriel wrth allgofnodi';
$labels['logoutcompact'] = 'Crynhoi\'r Mewnflwch wrth allgofnodi';
$labels['uisettings'] = 'Rhyngwyneb Defnyddiwr';
$labels['serversettings'] = 'Gosodiadau Gweinydd';
$labels['mailboxview'] = 'Ymddangosiad y Blychau';
$labels['mdnrequests'] = 'Hysbysiadau anfonwr';
$labels['askuser'] = 'gofyn i\'r defnyddiwr';
$labels['autosend'] = 'anfon yn awtomatig';
$labels['autosendknown'] = 'anfon derbynneb i fy nghysylltiadau, gofyn i mi fel arall';
$labels['autosendknownignore'] = 'anfon derbynneb i fy nghysylltiadau, anwybyddu fel arall';
$labels['autosendtrusted'] = 'danfon hysbysiad derbyn i bob danfonwr ymddiriedig, fel arall gofyn';
$labels['autosendtrustedignore'] = 'danfon hysbysiad derbyn i bob danfonwr ymddiriedig, fel arall anwybyddu';
$labels['ignorerequest'] = 'anwybyddu\'r cais';
$labels['readwhendeleted'] = 'Nodi\'r neges fel darllenwyd wrth ddileu';
$labels['flagfordeletion'] = 'Fflagio\'r neges i\'w ddileu yn hytrach na dileu yn syth';
$labels['skipdeleted'] = 'Peidio dangos negesuon wedi ei dileu';
$labels['deletealways'] = 'Pan fod symud negeseuon i\'r Sbwriel yn methu, dileu nhw';
$labels['deletejunk'] = 'Dileu negeseuon yn uniongyrchol yn Sbwriel';
$labels['showremoteimages'] = 'Dangos lluniau o wefannau allanol';
$labels['allowremoteresources'] = 'Caniatau adnoddau pell (delweddau, arddulliau)';
$labels['fromknownsenders'] = 'o anfonwyr hysbys';
$labels['fromtrustedsenders'] = 'o ddanfonwyr ymddiriedig';
$labels['frommycontacts'] = 'o fy nghysylltiadau';
$labels['always'] = 'bob amser';
$labels['alwaysbutplain'] = 'bob amser, heblaw pan yn ymateb i destun plaen';
$labels['showinlineimages'] = 'Dangos lluniau atodol islaw\'r neges';
$labels['autosavedraft'] = 'Cadw drafft yn awtomatig';
$labels['everynminutes'] = 'bob $n munud';
$labels['refreshinterval'] = 'Ail-lwytho (edrych am negeseuon newydd ayyb)';
$labels['never'] = 'byth';
$labels['immediately'] = 'ar unwaith';
$labels['messagesdisplaying'] = 'Dangos Negeseuon';
$labels['messagescomposition'] = 'Ysgrifennu Negeseuon';
$labels['mimeparamfolding'] = 'Enw atodiadau';
$labels['2231folding'] = 'RFC 2231 llawn (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 llawn (arall)';
$labels['force7bit'] = 'Defnyddio amgodi MIME ar gyfer llythrennau 8-did';
$labels['savelocalstorage'] = "Cadw yn storfa leol y porwr (dros dro)";
$labels['advancedoptions'] = 'Dewisiadau uwch';
$labels['toggleadvancedoptions'] = 'Newid dewisiadau uwch';
$labels['focusonnewmessage'] = 'Ffocysu\'r porwr ar y neges newydd';
$labels['checkallfolders'] = 'Chwilio pob ffolder am negeseuon newydd';
$labels['displaynext'] = 'Dangos cofnod rhestr nesaf ar ôl dileu/symud';
$labels['defaultfont'] = 'Ffont arferol ar gyfer negeseuon HTML';
$labels['mainoptions'] = 'Prif Ddewisiadau';
$labels['browseroptions'] = 'Dewisiadau Porwr';
$labels['section'] = 'Adran';
$labels['maintenance'] = 'Gwaith cynnal a chadw';
$labels['newmessage'] = 'Neges Newydd';
$labels['signatureoptions'] = 'Dewisiadau Llofnod';
$labels['whenreplying'] = 'Wrth ateb';
$labels['replyempty'] = 'peidio dyfynnu\'r neges wreiddiol';
$labels['replytopposting'] = 'dechrau\'r neges newydd uwchben y neges wreiddiol';
$labels['replytoppostingnoindent'] = 'dechrau neges newydd uwchben y dyfyniad (dim cilosodiad)';
$labels['replybottomposting'] = 'dechrau\'r neges newydd o dan y neges wreiddiol';
$labels['replyremovesignature'] = 'Wrth ateb, dileu\'r llofnod gwreiddiol o\'r neges';
$labels['autoaddsignature'] = 'Ychwanegu llofnod yn awtomatig';
$labels['newmessageonly'] = 'negeseuon newydd yn unig';
$labels['replyandforwardonly'] = 'atebion a danfon ymlaen yn unig';
$labels['insertsignature'] = 'Mewnosod llofnod';
$labels['sigbelow'] = 'Rhowch y llofnod o dan y neges wedi wreiddiol';
$labels['sigseparator'] = 'Gorfodi gwahanwr safonol yn y llofnodion';
$labels['automarkread'] = 'Nodi\'r negeseuon fel darllenwyd';
$labels['afternseconds'] = 'ar ôl $n eiliad';
$labels['reqmdn'] = 'Bob amser gofyn am dderbynneb danfon';
$labels['reqdsn'] = 'Gofyn am hysbysiad statws danfon bob amser';
$labels['replysamefolder'] = 'Rhoi atebion yn yr un ffolder i\'r neges sy\'n cael ei ateb';
$labels['defaultabook'] = 'Llyfr cyfeiriadau diofyn';
$labels['autocompletesingle'] = 'Hepgor cyfeiriadau ebost amgen wrth awto-gwblhau';
$labels['listnamedisplay'] = 'Rhestru cysylltiadau fel';
$labels['contactformmode'] = 'Modd ffurflen gyswllt';
$labels['privatemode'] = 'Preifat (Gartref)';
$labels['businessmode'] = 'Busnes (Gwaith)';
$labels['collectedaddresses'] = 'Cyfeiriadau a gasglwyd';
$labels['collectedrecipients'] = 'Derbynwyr a gasglwyd';
$labels['collectedrecipientsopt'] = 'Storio derbynwyr ebost allanol yn';
$labels['collectedsendersopt'] = 'Storio anfonwyr ymddiriedig yn';
$labels['trustedsenders'] = 'Anfonwyr Ymddiredig';
$labels['spellcheckbeforesend'] = 'Gwirio sillafu cyn anfon neges';
$labels['spellcheckoptions'] = 'Dewisiadau gwirio sillafu';
$labels['spellcheckignoresyms'] = 'Anwybyddu geiriau gyda symbolau';
$labels['spellcheckignorenums'] = 'Anwybyddu geiriau gyda rhifau';
$labels['spellcheckignorecaps'] = 'Anwybyddu geiriau sy\'n briflythrennau yn gyfangwbl';
$labels['addtodict'] = 'Ychwanegu i\'r geiriadur';
$labels['mailtoprotohandler'] = 'Cofrestru trafodwr protocol ar gyfer dolenni mailto:';
$labels['standardwindows'] = 'Trin ffenestri naid fel ffenestri arferol';
$labels['forwardmode'] = 'Danfon neges ymlaen';
$labels['inline'] = 'mewnlin';
$labels['asattachment'] = 'fel atodiad';
$labels['replyallmode'] = 'Gweithred diofyn botwm [Ymateb i bawb]';
$labels['replyalldefault'] = 'ymateb i bawb';
$labels['replyalllist'] = 'ymateb i\'r rhestr trafod yn unig (os canfuwyd)';
$labels['allmessages'] = 'pob neges';
$labels['olderxdays'] = 'hynach na $x diwrnod';
$labels['folder'] = 'Ffolder';
$labels['folders'] = 'Ffolderi';
$labels['foldername'] = 'Enw ffolder';
$labels['subscribed'] = 'Tanysgrifwyd';
$labels['messagecount'] = 'Negeseuon';
$labels['create'] = 'Creu';
$labels['createfolder'] = 'Creu ffolder newydd';
$labels['managefolders'] = 'Rheoli ffolderi';
$labels['specialfolders'] = 'Ffolderi arbennig';
$labels['properties'] = 'Nodweddion';
$labels['folderproperties'] = 'Ffolder nodweddion';
$labels['parentfolder'] = 'Ffolder uwchben';
$labels['location'] = 'Lleoliad';
$labels['info'] = 'Gwybodaeth';
$labels['getfoldersize'] = 'Cliciwch i gael maint ffolder';
$labels['changesubscription'] = 'Cliciwch i newid y tanysgrifiad';
$labels['foldertype'] = 'Math Ffolder';
$labels['personalfolder'] = 'Ffolder Preifat';
$labels['otherfolder'] = 'Ffolder Defnyddiwr Arall';
$labels['sharedfolder'] = 'Ffolder Cyhoeddus';
$labels['findfolders'] = 'Canfod ffolderi';
$labels['findcontacts'] = 'Canfod cysylltiadau';
$labels['findmail'] = 'Canfod negeseuon ebost';
$labels['namespace.personal'] = 'Persono';
$labels['namespace.other'] = 'Defnyddwyr arall';
$labels['namespace.shared'] = 'Rhannwyd';
$labels['dualuselabel'] = 'Gall gynnwys yn unig';
$labels['dualusemail'] = 'negeseuon';
$labels['dualusefolder'] = 'ffolder';
$labels['generate'] = 'Cynhyrchu';
$labels['encryptioncreatekey'] = 'Creu pâr allweddi newydd';
$labels['openmailvelopesettings'] = 'Agor Gosodiadau Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Mae gennych $nr allwedd preifat cyfatebol wedi eu storio yn eich cylch allwedd Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Nid oes gan y anfonwr hwn allwedd preifat PGP wedi ei storio yn eich estyniad Mailvelope. Hoffech chi greu un er mwyn ei ddefnyddio i anfon negeseuon wedi eu amgryptio?';
$labels['encryption'] = 'Amgryptiad';
$labels['mailvelopeoptions'] = 'Dewisiadau Mailvelope';
$labels['mailvelopemainkeyring'] = 'Defnyddio prif gylch allweddi Mailvelope';
$labels['mailvelopenotfound'] = 'Nid yw\'r estyniad Mailvelope ar gael/wedi ei osod yn eich porwr';
$labels['sortby'] = 'Trefnu yn ôl';
$labels['sortasc'] = 'Trefn esgynnol';
$labels['sortdesc'] = 'Trefn ddisgynnol';
$labels['undo'] = 'Dad-wneud';
$labels['installedplugins'] = 'Ategynnau wedi eu gosod';
$labels['plugin'] = 'Ategyn';
$labels['version'] = 'Fersiwn';
$labels['source'] = 'Ffynhonnell';
$labels['destination'] = 'Cyrchfan';
$labels['license'] = 'Trwydded';
$labels['support'] = 'Gofyn am gymorth';
$labels['savedsearches'] = 'Chwiliadau wedi cadw';
$labels['dateformatY'] = 'BBBB';
$labels['dateformaty'] = 'BB';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Saesneg';
$labels['westerneuropean'] = 'Gorllewin Ewropeaidd';
$labels['easterneuropean'] = 'Dwyrain Ewropeaidd';
$labels['southeasterneuropean'] = 'De-Ddwyrain Ewropeaidd';
$labels['baltic'] = 'Baltig';
$labels['cyrillic'] = 'Cyrilig';
$labels['arabic'] = 'Arabeg';
$labels['greek'] = 'Groegaidd';
$labels['hebrew'] = 'Hebraeg';
$labels['turkish'] = 'Twrceg';
$labels['nordic'] = 'Nordeg';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Celtaidd';
$labels['vietnamese'] = 'Fietnamaidd';
$labels['japanese'] = 'Japaneaidd';
$labels['korean'] = 'Corëeg';
$labels['chinese'] = 'Tsieineaidd';
$labels['arialabeltopnav'] = 'Rheolaeth ffenest';
$labels['arialabeltasknav'] = 'Tasgiau rhaglen';
$labels['arialabeltoolbar'] = 'Bar offer y rhaglen';
$labels['arialabellistnav'] = 'Llywio rhestr';
$labels['arialabelactivetask'] = 'Tasg gweithredol';
$labels['arialabelmessagessearchfilter'] = 'Hidlydd rhestr ebost';
$labels['arialabelmailsearchform'] = 'Ffurflen chwilio neges ebost';
$labels['arialabelcontactsearchform'] = 'Ffurflen chwilio cysylltiadau';
$labels['arialabelmailquicksearchbox'] = 'Mewnbwn chwilio ebost';
$labels['arialabelquicksearchbox'] = 'Mewnbwn chwilio';
$labels['arialabelfoldersearchfilter'] = 'Hidlydd rhestr ffolderi';
$labels['arialabelfoldersearchform'] = 'Ffurflen chwilio ffolderi';
$labels['arialabelfolderlist'] = 'Dewis ffolderi ebost';
$labels['arialabelmessagelist'] = 'Rhestr Negeseuon Ebost';
$labels['arialabelmailpreviewframe'] = 'Rhagolwg neges';
$labels['arialabelmailboxmenu'] = 'Bwydlen gweithrediadau ffolder';
$labels['arialabellistselectmenu'] = 'Bwydlen dewis rhestr';
$labels['arialabelthreadselectmenu'] = 'Bwydlen rhestr edefynnau';
$labels['arialabelmessagelistoptions'] = 'Dewisiadau dangos a trefnu rhestr negeseuon';
$labels['arialabelmailimportdialog'] = 'Deialog mewnforio negeseuon';
$labels['arialabelmessagenav'] = 'Llywio neges';
$labels['arialabelmessagebody'] = 'Corff Neges';
$labels['arialabelmessageactions'] = 'Gweithrediadau neges';
$labels['arialabelcontactquicksearch'] = 'Ffurflen chwilio cysylltiadau';
$labels['arialabelcontactsearchbox'] = 'Mewnbwn chwilio cyswllt';
$labels['arialabelmessageheaders'] = 'Pennynau neges';
$labels['arialabelforwardingoptions'] = 'Dewisiadau anfon ymlaen';
$labels['arialabelreplyalloptions'] = 'Dewisiadau ymateb i bawb';
$labels['arialabelmoremessageactions'] = 'Mwy o weithrediadau neges';
$labels['arialabelmorecontactactions'] = 'Mwy o weithreoedd cyswllt';
$labels['arialabelmarkmessagesas'] = 'Nodi y negeseuon dewiswyd fel...';
$labels['arialabelcomposeoptions'] = 'Dewisiadau ysgrifennu';
$labels['arialabelresponsesmenu'] = 'Bwydlen ymatebion parod';
$labels['arialabelattachmentuploadform'] = 'Ffurflen lanlwytho atodiad';
$labels['arialabelattachmentmenu'] = 'Dewisiadau atodiad';
$labels['arialabelmailtomenu'] = 'Dewisiadau cyfeiriad ebost';
$labels['arialabelattachmentpreview'] = 'Rhagolwg atodiad';
$labels['ariasummarycomposecontacts'] = 'Rhestr o gysylltiadau a grwpiau i ddewis fel derbynwyr';
$labels['arialabelcontactexportoptions'] = 'Dewisiadau allforio cysylltiadau';
$labels['arialabelabookgroupoptions'] = 'Dewisiadau grŵp/llyfr cyfeiriadau';
$labels['arialabelpreferencesform'] = 'Ffurflen dewisiadau';
$labels['arialabelidentityeditfrom'] = 'Ffurflen golygu personoliaeth';
$labels['arialabelresponseeditfrom'] = 'Ffurflen golygu ymateb';
$labels['arialabelsearchterms'] = 'Chwilio termau';
$labels['arialabeldropactionmenu'] = 'Bwydlen Llusgo-a-Gollwng';
$labels['arialabelheadersmenu'] = 'Bwydlen ychwanegu derbynnydd (pennawd)';
$labels['arialabelimagetools'] = 'Teclynnau delwedd';
$labels['helplistnavigation'] = 'Rhestru llywio bysellfwrdd';
$labels['helplistkeyboardnavigation'] = "Saeth fyny/lawr: Symud dewis/ffocws dan sylw.
Bwlch: Dewis rhes dan sylw.
Shift + fyny/lawr; Dewis rhes ychwanegol uwchben/islaw.
Ctrl + Bwlch: Ychwanegu rhes dan sylw i'r dewis/dileu o'r dewis.";
$labels['helplistkeyboardnavmessages'] = "Saeth dde/chwith: ehangu/crebachu edefyn neges (yn modd edefynnau yn unig).
Enter: Agor y neges dewiswyd/dan sylw.
Delete: Symud y negeseuon dewiswyd i'r Sbwriel.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Agor y cyswllt dewiswyd/dan sylw.";
localization/cy_GB/messages.inc000064400000043353151727150570012543 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Cafwyd gwall!';
$messages['loginfailed']  = 'Methwyd mewngofnodi.';
$messages['cookiesdisabled'] = 'Nid yw eich porwr yn derbyn cwcis.';
$messages['sessionerror'] = 'Mae\'r sesiwn yn anghywir neu wedi dod i ben.';
$messages['cookiesmismatch'] = 'Gwelwyd camgymhariad cwci. Cliriwch y cwcis yn eich porwr os gwelwch yn dda.';
$messages['storageerror'] = 'Methwyd cysylltu a\'r gweinydd storfa.';
$messages['servererror'] = 'Gwall Gweinydd!';
$messages['servererrormsg'] = 'Gwall Gweinydd: $msg';
$messages['accountlocked'] = 'Gormod o geisiadau i fewngofnodi wedi methu. Triwch eto nes ymlaen.';
$messages['connerror'] = 'Gwall Cysylltiad (Methwyd cysylltu a\'r gweinydd)!';
$messages['dberror'] = 'Gwall Cronfa Ddata!';
$messages['dbconnerror'] = 'Methwyd cysylltu a\'r gronfa ddata"';
$messages['windowopenerror'] = 'Fe ataliwyd y ffenest naid!';
$messages['requesttimedout'] = 'Cais wedi dod i derfyn amser';
$messages['errorreadonly'] = 'Methwyd gweithredu. Mae\'r ffolder yn darllen-yn-unig';
$messages['errornoperm'] = 'Methwyd gweithredu. Gwrthodwyd caniatad';
$messages['erroroverquota'] = 'Methwyd gweithredu. Nid oes gofod gwag ar y disg.';
$messages['erroroverquotadelete'] = 'Dim gofod gwag ar y disg. Defnyddiwch SHIFT+DEL i ddileu neges.';
$messages['invalidrequest'] = 'Cais annilys! Ni chadwyd unrhyw wybodaeth.';
$messages['invalidhost'] = 'Enw gweinydd annilys.';
$messages['nomessagesfound'] = 'Dim negeseuon wedi eu canfod yn y blwch hwn';
$messages['loggedout'] = 'Rydych wedi cau\'r sesiwn yn llwyddiannus. Hwyl fawr!';
$messages['mailboxempty'] = 'Mae\'r blwch yn wag';
$messages['nomessages'] = 'Dim negeseuon';
$messages['refreshing'] = 'Yn adnewyddu...';
$messages['loading'] = 'Yn llwytho...';
$messages['uploading'] = 'Yn llwytho ffeil i fyny...';
$messages['attaching'] = 'Yn atodi ffeil...';
$messages['uploadingmany'] = 'Yn llwytho fyny ffeiliau...';
$messages['loadingdata'] = 'Yn llwytho data...';
$messages['checkingmail'] = 'Yn edrych am negeseuon newydd...';
$messages['sendingmessage'] = 'Yn danfon neges...';
$messages['messagesent'] = 'Danfonwyd y neges yn llwyddiannus';
$messages['savingmessage'] = 'Yn cadw neges...';
$messages['messagesaved'] = 'Cadwyd neges i\'r Drafftiau';
$messages['successfullysaved'] = 'Cadwyd yn llwyddiannus';
$messages['savingresponse'] = 'Yn cadw testun ymateb...';
$messages['deleteresponseconfirm'] = 'Ydych chi wir am ddileu y testun ymateb hwn?';
$messages['nocontactselected'] = 'Nid ydych wedi dewis cyswllt eto.';
$messages['addedsuccessfully'] = 'Cyswllt wedi ei ychwanegu i\'r llyfr cyfeiriadau yn llwyddiannus';
$messages['contactexists'] = 'Mae cyswllt gyda\'r cyfeiriad e-bost yma yn bodoli\'n barod';
$messages['contactnameexists'] = 'Mae cyswllt gyda\'r un enw yn bodoli yn barod.';
$messages['blockedimages'] = 'I amddiffyn eich preifatrwydd, fe ataliwyd lluniau allanol yn y neges yma.';
$messages['blockedresources'] = 'I amddiffyn eich preifatrwydd, mae adnoddau allanol wedi eu atal.';
$messages['suspiciousemail'] = 'Mae\'r neges hwn yn cynnwys cyfeiriadau ebost amheus a allai fod yn dwyllodrus.';
$messages['bccemail'] = 'Mae\'r neges(euon) anfonwyd ymlaen yn cynnwys derbynnwyr cyfrinachol (Bcc)';
$messages['bouncehint'] = 'Anfonir y neges hwn heb newidiadau, h.y. yn defnyddio corff y neges wreiddiol, penawdau a derbynnwyr.';
$messages['encryptedmessage'] = 'Mae hon yn neges amgryptedig a felly ni ellir ei ddangos. Flin iawn!';
$messages['externalmessagedecryption'] = 'Mae hon yn neges amgryptedig a gall ei ddadgryptio gyda estyniad eich porwr.';
$messages['nopubkeyfor'] = 'Ni chafwyd hyd i allwedd cyhoeddus dilys ar gyfer $email';
$messages['nopubkeyforsender'] = 'Ni chafwyd hyd i allwedd cyhoeddus dilys ar gyfer eich personoliaeth anfon. Ydych am amgryptio y neges ar gyfer y derbynwyr yn unig?';
$messages['encryptnoattachments'] = 'Nid yw\'n bosib amgryptio atodiadau wedi uwchlwytho yn barod. Ychwanegwch nhw eto yn y golygydd amgryptio.';
$messages['searchpubkeyservers'] = 'Hoffech chi chwilio y gweinyddwyr allweddi cyhoeddus ar gyfer yr allweddi sy ar goll?';
$messages['encryptpubkeysfound'] = 'Cafwyd hyd i\'r allweddi cyhoeddus canlynol:';
$messages['keyservererror'] = 'Methwyd cael yr allwedd o\'r gweinydd allweddi.';
$messages['keyimportsuccess'] = 'Mewnforiwyd yr allwedd cyhoeddus $key i\'ch cylch allweddi yn llwyddiannus';
$messages['nocontactsfound'] = 'Ni gafwyd hyd i unrhyw gysylltiadau';
$messages['contactnotfound'] = 'Ni gafwyd hyd i\'r cysylltiad gofynnwyd amdano';
$messages['contactsearchonly'] = 'Rhaid i chi ddefnyddio\'r ffurflen chwilio i weld cysylltiadau o\'ch llyfr cyfeiriadau dewisol.';
$messages['sendingfailed'] = 'Methwyd danfon y neges';
$messages['senttooquickly'] = 'Arhoswch $sec eiliad cyn danfon y neges';
$messages['errorsavingsent'] = 'Fe gafwyd gwall wrth gadw\'r neges ddanfonwyd.';
$messages['errorsaving'] = 'Fe gafwyd gwall wrth gadw';
$messages['errormoving'] = 'Methwyd symud y neges';
$messages['errorcopying'] = 'Methwyd copïo\'r neges(euon)';
$messages['errordeleting'] = 'Methwyd dileu y neges';
$messages['errormarking'] = 'Methwyd nodi y neges';
$messages['alerttitle'] = 'Rhybudd';
$messages['confirmationtitle'] = 'Ydych chi\'n siwr...';
$messages['deletecontactconfirm']  = 'Ydych chi wir am ddileu y cysylltiadau ddewiswyd?';
$messages['deletegroupconfirm']  = 'Ydych chi wir am ddileu\'r grŵp dewiswyd?';
$messages['deletemessagesconfirm'] = 'Ydych chi wir am ddileu y neges(euon) ddewiswyd?';
$messages['deletefolderconfirm']  = 'Ydych chi wir am ddileu y ffolder yma?';
$messages['movefolderconfirm']  = 'Ydych chi wir am symud y ffolder hwn?';
$messages['purgefolderconfirm']  = 'Ydych chi wir am ddileu yr holl negeseuon yn y ffolder yma?';
$messages['contactdeleting'] = 'Dileu cyswllt/cysylltiadau...';
$messages['groupdeleting'] = 'Yn dileu grŵp...';
$messages['folderdeleting'] = 'Yn dileu ffolder...';
$messages['foldermoving'] = 'Yn symud ffolder...';
$messages['foldersubscribing'] = 'Yn tanysgrifio i\'r ffolder...';
$messages['folderunsubscribing'] = 'Yn dad-danysgrifio i\'r ffolder...';
$messages['formincomplete'] = 'Nid oedd y ffurflen wedi ei gwblhau yn llawn';
$messages['noemailwarning'] = 'Rhowch gyfeiriad e-bost dilys';
$messages['nonamewarning']  = 'Rhowch enw';
$messages['nopagesizewarning'] = 'Rhowch maint tudalen';
$messages['nosenderwarning'] = 'Rhowch gyfeiriad e-bost y danfonwr';
$messages['recipientsadded'] = 'Ychwanegwyd derbynnydd/wyr yn llwyddiannus.';
$messages['norecipientwarning'] = 'Rhowch o leiaf un derbynnydd';
$messages['disclosedrecipwarning'] = 'Fe fydd pob derbynnydd yn gweld cyfeiriadau ebost pawb arall. I atal hyn ac amddiffyn eu preifatrwydd rhaid i chi ddefnyddio\'r maes Bcc.';
$messages['disclosedreciptitle'] = 'Gormod o dderbynnwyr cyhoeddus';
$messages['nosubjectwarning']  = 'Mae\'r pennawd "Pwnc" yn wag. Hoffech chi roi un fewn nawr?';
$messages['nosubjecttitle']  = 'Dim pwnc';
$messages['nobodywarning'] = 'Danfon y neges hwn heb destun?';
$messages['notsentwarning'] = 'Nid yw\'r neges wedi ei ddanfon a mae ganddo newidiadau heb ei gadw. Hoffech chi gael gwared a\'r newidiadau?';
$messages['restoresavedcomposedata'] = 'Cafwyd hyd i neges wedi ei ysgrifennu o\'r blaen ond heb ei ddanfon.\n\nPwnc: $subject\nCadwyd: $date\n\nYdych chi am adfer y neges?';
$messages['nosearchname'] = 'Rhowch enw cyswllt neu gyfeiriad e-bost';
$messages['notuploadedwarning'] = 'Nid yw pob atodiad wedi eu llwytho i fyny eto. Triwch eto neu canslo.';
$messages['searchsuccessful'] = 'Cafwyd hyd i $nr neges';
$messages['contactsearchsuccessful'] = 'Canfuwyd $nr cyswllt.';
$messages['searchnomatch'] = 'Ni gafwyd hyd i unrhyw ganlyniadau chwilio';
$messages['searching'] = 'Yn chwilio...';
$messages['checking'] = 'Yn gofyn...';
$messages['stillsearching'] = 'Dal i chwilio...';
$messages['nospellerrors'] = 'Ni gafwyd hyd i unrhyw wallau gwirio';
$messages['folderdeleted'] = 'Dilëwyd y ffolder yn llwyddiannus';
$messages['foldersubscribed'] = 'Ffolder wedi ei danysgrifio yn llwyddiannus';
$messages['folderunsubscribed'] = 'Ffolder wedi ei ddad-danysgrifio yn llwyddiannus';
$messages['folderpurged'] = 'Gwagiwyd y ffolder yn llwyddiannus.';
$messages['folderexpunged'] = 'Cywasgwyd y ffolder yn llwyddiannus.';
$messages['deletedsuccessfully'] = 'Dilëwyd yn llwyddiannus';
$messages['converting'] = 'Yn cael gwared a\'r fformatio...';
$messages['messageopenerror'] = 'Methwyd llwytho\'r neges o\'r gweinydd';
$messages['filelinkerror'] = 'Methwyd atodi\'r ffeil.';
$messages['fileuploaderror'] = 'Methwyd llwytho\'r ffeil i fyny';
$messages['csvfilemismatch'] = 'Nid oes cefnogaeth i fewnforio nifer o ffeiliau CSV gyda meysydd gwahanol.';
$messages['filesizeerror'] = 'Mae\'r ffeil a lwythyd fyny yn fwy na\'r maint uchaf ganiateir o $size';
$messages['filecounterror'] = 'Cewch chi ddim ond llwytho fyny $count files ar unwaith.';
$messages['msgsizeerror'] = 'Methwyd atodi ffeil. Roedd maint y neges ($size) yn rhy fawr.';
$messages['msgsizeerrorfwd'] = 'Mae maint y neges wedi mynd yn fyw na\'r uchafswm ($size). Nid yw $num neges(euon) wedi ei atodi.';
$messages['copysuccess'] = 'Copïwyd $nr cyswllt yn llwyddiannus';
$messages['movesuccess'] = 'Symudwyd $nr cyswllt yn llwyddiannus.';
$messages['copyerror'] = 'Methwyd copïo unrhyw gysylltiadau.';
$messages['moveerror'] = 'Methwyd symud unrhyw gysylltiadau.';
$messages['sourceisreadonly'] = 'Mae ffynhonnell y cyfeiriadau i\'w ddarllen yn unig';
$messages['errorsavingcontact'] = 'Methwyd cadw cyfeiriad y cyswllt';
$messages['movingmessage'] = 'Yn symud neges...';
$messages['copyingmessage'] = 'Yn copïo\'r neges';
$messages['copyingcontact'] = 'Yn copïo cyswllt/cysylltiadau...';
$messages['movingcontact'] = 'Yn symud cyswllt/cysylltiadau...';
$messages['deletingmessage'] = 'Yn dileu neges(euon)...';
$messages['markingmessage'] = 'Yn marcio neges(euon)...';
$messages['addingmember'] = 'Yn ychwanegu cyswllt/cysylltiadau i\'r grŵp...';
$messages['removingmember'] = 'Yn dileu cyswllt/cysylltiadau o\'r grŵp...';
$messages['receiptsent'] = 'Danfonwyd cadarnhad derbyn yn llwyddiannus';
$messages['errorsendingreceipt'] = 'Methwyd danfon cadarnhad derbyn';
$messages['deleteidentityconfirm'] = 'Ydych chi wir am ddileu\'r personoliaeth hwn?';
$messages['nodeletelastidentity'] = 'Allwch chi ddim dileu\'r personoliaeth yma, hwn yw\'r un olaf.';
$messages['forbiddencharacter'] = 'Mae enw\'r ffolder yn cynnwys llythyren annerbynniol';
$messages['selectimportfile'] = 'Dewiswch ffeil i\'w lwytho fyny';
$messages['addresswriterror'] = 'Nid yw\'n bosib ysgrifennu i\'r llyfr cyfeiriadau';
$messages['contactaddedtogroup'] = 'Ychwanegwyd y cysylltiadau i\'r grŵp yma yn llwyddiannus';
$messages['contactremovedfromgroup'] = 'Dilëwyd y cysylltiadau o\'r grŵp yma yn llwyddiannus';
$messages['nogroupassignmentschanged'] = 'Ni newidwyd aseiniadiau grŵp.';
$messages['importwait'] = 'Yn mewnforio, arhoswch os gwelwch yn dda...';
$messages['importformaterror'] = 'Methwyd mewnforio! Nid yw\'r ffeil a lwythwyd yn ffeil ddata dilys.';
$messages['importconfirm'] = '<b>Fe mewnforiwyd $inserted cyswllt yn llwyddiannus, anwybyddwyd $skipped cofnod presennol</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Neidiwyd $skipped cofnod oedd yn bodoli</b>';
$messages['importmessagesuccess'] = 'Mewnforiwyd $nr neges yn llwyddiannus';
$messages['importmessageerror'] = 'Methwyd mewnforio! Nid yw\'r ffeil a lwythwyd yn ffeil neges neu blwch ebost dilys';
$messages['opnotpermitted'] = 'Ni chaniateir y weithred!';
$messages['nofromaddress'] = 'Cyfeiriad e-bost ar goll yn y personoliaeth a ddewiswyd';
$messages['editorwarning'] = 'Fe allai newid math y golygydd testun olygu byddwch yn colli unrhyw arddulliau yn eich testun? Hoffech chi barhau?';
$messages['httpreceivedencrypterror'] = 'Fe gafwyd gwall angheuol yn y ffurfweddiad. Cysylltwch â\'ch gweinyddwr ar unwaith. <b>Nid oedd yn bosib dangos eich neges.</b>';
$messages['smtpconnerror'] = 'Gwall SMTP ($code): Methwyd cysylltu a\'r gweinydd';
$messages['smtpautherror'] = 'Gwall SMTP ($code): Methwyd dilysu\'r cyfrif';
$messages['smtpfromerror'] = 'Gwall SMTP ($code): Methwyd gosod y danfonwr "$from" ($msg)';
$messages['smtptoerror'] = 'Gwall SMTP ($code): Methwyd ychwanegu derbynwr "$to" ($msg)';
$messages['smtprecipientserror'] = 'Gwall SMTP: Nid oedd yn bosib darllen y rhestr o dderbynnwyr';
$messages['smtputf8error'] = 'Gwall SMTP: Nid yw\'r gweinydd yn cefnogi Unicode mewn cyfeiriadau ebost.';
$messages['smtpsizeerror'] = 'Gwall SMTP: Mae maint y neges yn fwy na cyfyngiad y gweinydd ($limit)';
$messages['smtperror'] = 'Gwall SMTP: $msg';
$messages['emailformaterror'] = 'Cyfeiriad e-bost anghywir: $email';
$messages['toomanyrecipients'] = 'Gormod o dderbynnwyr. Lleihewch y nifer i $max';
$messages['maxgroupmembersreached'] = 'Mae nifer o aelodau\'r grŵp yn fwy na\'r uchafswm o $max';
$messages['internalerror'] = 'Fe gafwyd gwall mewnol. Rhowch gynnig arni eto.';
$messages['contactdelerror'] = 'Methwyd dileu cyswllt';
$messages['contactdeleted'] = 'Cyswllt wedi ei ddileu yn llwyddiannus';
$messages['contactrestoreerror'] = 'Methwyd adfer y cyswllt/cysylltiadau a ddilëwyd';
$messages['contactrestored'] = 'Adferwyd y cyswllt/cysylltiadau';
$messages['groupdeleted'] = 'Grŵp wedi ei ddileu yn llwyddiannus';
$messages['grouprenamed'] = 'Grŵp wedi ei ailenwi yn llwyddiannus';
$messages['groupcreated'] = 'Grŵp wedi ei greu yn llwyddiannus';
$messages['savedsearchdeleted'] = 'Dilëwyd y chwiliad yn llwyddiannus.';
$messages['savedsearchdeleteerror'] = 'Methwyd dileu y chwiliad.';
$messages['savedsearchcreated'] = 'Crëwyd y chwiliad yn llwyddiannus.';
$messages['savedsearchcreateerror'] = 'Methwyd creu y chwiliad.';
$messages['messagedeleted'] = 'Neges(euon) wedi eu dileu yn llwyddiannus';
$messages['messagemoved'] = 'Neges(euon) wedi eu symud yn llwyddiannus';
$messages['messagemovedtotrash'] = 'Neges(euon) wedi eu symud i\'r Sbwriel yn llwyddiannus';
$messages['messagecopied'] = 'Neges(euon) wedi eu copïo yn llwyddiannus';
$messages['messagemarked'] = 'Neges(euon) wedi eu marcio yn llwyddiannus';
$messages['autocompletechars'] = 'Rhowch o leia $min llythyren ar gyfer awto-gwblhau';
$messages['autocompletemore'] = 'Canfuwyd mwy o gofnodion sy\'n cyfateb. Teipiwch fwy o lythrennau.';
$messages['namecannotbeempty'] = 'Ni all yr enw fod yn wag';
$messages['nametoolong'] = 'Mae\'r enw yn rhy hir';
$messages['namedotforbidden'] = 'Ni all enw ffolder gychwyn gyda dot.';
$messages['folderupdated'] = 'Diweddarwyd y ffolder yn llwyddiannus';
$messages['foldercreated'] = 'Crëwyd y ffolder yn llwyddiannus';
$messages['invalidimageformat'] = 'Ddim yn fformat llun dilys.';
$messages['mispellingsfound'] = 'Gwelwyd camsillafu yn y neges.';
$messages['parentnotwritable'] = 'Methwyd creu/symud ffolder i\'r ffolder rhiant ddewiswyd. Dim hawl mynediad.';
$messages['messagetoobig'] = 'Mae darn y neges yn rhy fawr i\'w brosesu.';
$messages['attachmentvalidationerror'] = 'Mae\'r atodiad yn amheus am nad yw ei fath yn cyfateb i\'r math a ddatganir yn y neges. Os nad ydych chi\'n ymddiried yn y danfonwr, ni ddylech chi agor hwn yn eich porwr - galla\'i fod cynnwys maleisus ynddo.<br/><br/><em>Disgwylid: $expected; canfuwyd: $detected</em>';
$messages['noscriptwarning'] = 'Rhybudd: Mae\'r gwasanaeth gwebost angen Javascript i weithio! Er mwyn ei ddefnyddio, galluogwch Javascript yng ngosodiadau eich porwr.';
$messages['messageissent'] = 'Mae\'r neges wedi ei anfon, ond heb ei gadw eto. Hoffech chi ei gadw nawr?';
$messages['errnotfound'] = 'Ni Ganfuwyd y Ffeil';
$messages['errnotfoundexplain'] = 'Ni gafwyd hyd i\'r adnodd ofynnwyd amdano';
$messages['errfailedrequest'] = 'Methodd y cais';
$messages['errauthorizationfailed'] = 'Methiant Awdurdodi';
$messages['errunauthorizedexplain'] = 'Methwyd gwirio eich bod wedi\'ch awdurdodi i gael mynediad i\'r gwasanaeth!';
$messages['errrequestcheckfailed'] = 'Methiant Gwiriad Cais';
$messages['errcsrfprotectionexplain'] = "Er eich diogelwch, mae mynediad i'r adnodd hwn wedi ei ddiogelu yn erbyn CSRF.\nOs ydych yn gweld hwn, mae'n debyg na wnaethoch chi allgofnodi cyn gadael yr ap gwe.\n\nMae'n rhaid gwirio nawr cyn parhau.";
$messages['errcontactserveradmin'] = 'Cysylltwch a rheolwr eich gweinydd.';
$messages['clicktoresumesession'] = 'Cliciwch yma i ail-ddechrau eich sesiwn blaenorol';
$messages['errcomposesession'] = 'Gwall sesiwn ysgrifennu';
$messages['errcomposesessionexplain'] = 'Ni gafwyd hyd i\'r sesiwn ysgrifennu gofynnwyd amdano';
$messages['clicktocompose'] = 'Cliciwch yma i ysgrifennu neges newydd';
$messages['nosupporterror'] = 'Nid yw\'r nodwedd hwn wedi eu gefnogi gan eich porwr gwe.';
$messages['siginserted'] = 'Mewnosodwyd y llofnod yn llwyddiannus.';
$messages['responseinserted'] = 'Mewnosodwyd yr ymateb yn llwyddiannus.';
$messages['noresponsesavailable'] = 'Dim ymatebion ar gael';
$messages['listempty'] = 'Mae\'r rhestr yn wag.';
$messages['listusebutton'] = 'Defnyddiwch y botwm Creu i ychwanegu cofnod newydd.';
$messages['keypaircreatesuccess'] = 'Creuwyd pâr allwedd newydd yn llwyddiannus ar gyfer $identity.';
$messages['emptyattachment'] = 'Mae\'n ymddangos fod yr atodiad hwn yn wag.<br>Gwiriwch hwn gyda\'r person a ddanfonodd y neges.';
$messages['oauthloginfailed'] = 'Methwyd mewngofnodi OAuth. Rhowch gynnig arall arni.';
localization/hu_HU/timezones.inc000064400000047320151727150570012774 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algír';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kairó';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Dzsibuti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Kartúm';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunisz';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge-öböl';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Kajmán';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexikó Város';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Észak Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Központ';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Főnix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Spanyolország kikötője';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Északisark';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Ázsia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Bejrút';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damaszkusz';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gáza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jeruzsálem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamcsatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuvait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Szöul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Szingapúr';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Tajpej';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teherán';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokió';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlanti';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanári';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Ausztrália';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Európa';
$labels['tz:europe:amsterdam'] = 'Amszterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athén';
$labels['tz:europe:belgrade'] = 'Belgrád';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Pozsony';
$labels['tz:europe:brussels'] = 'Brüsszel';
$labels['tz:europe:bucharest'] = 'Bukarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Koppenhága';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltár';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Isztanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kijev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisszabon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Málta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minszk';
$labels['tz:europe:monaco'] = 'Monakó';
$labels['tz:europe:moscow'] = 'Moszkva';
$labels['tz:europe:oslo'] = 'Oszlo';
$labels['tz:europe:paris'] = 'Párizs';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prága';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Róma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Szarajevó';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Szófia';
$labels['tz:europe:stockholm'] = 'Stokholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikán';
$labels['tz:europe:vienna'] = 'Bécs';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgográd';
$labels['tz:europe:warsaw'] = 'Varsó';
$labels['tz:europe:zagreb'] = 'Zágráb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'India';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Újraegyesítés';
$labels['tz:pacific'] = 'Csendes-óceáni';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/hu_HU/labels.inc000064400000106122151727150570012215 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Üdvözli a $product';
$labels['username'] = 'Felhasználónév';
$labels['password'] = 'Jelszó';
$labels['server'] = 'Szerver';
$labels['login'] = 'Bejelentkezés';
$labels['oauthlogin'] = 'Bejelentkezni a következővel $provider';
$labels['menu'] = 'Menű';
$labels['logout'] = 'Kijelentkezés';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Beállítások';
$labels['addressbook'] = 'Címjegyzék';
$labels['darkmode'] = 'Sötét mód';
$labels['lightmode'] = 'Világos mód';
$labels['inbox'] = 'Érkezettek';
$labels['drafts'] = 'Piszkozatok';
$labels['sent'] = 'Küldöttek';
$labels['trash'] = 'Kuka';
$labels['junk'] = 'Kéretlen';
$labels['show_real_foldernames'] = 'Valódi nevek megjelenítése a speciális mappáknál';
$labels['subject'] = 'Tárgy';
$labels['from'] = 'Feladó';
$labels['sender'] = 'Feladó';
$labels['to'] = 'Címzett';
$labels['cc'] = 'Másolat';
$labels['bcc'] = 'Titkos másolat';
$labels['replyto'] = 'Válaszcím';
$labels['followupto'] = 'Hírcsoport válasz';
$labels['date'] = 'Dátum';
$labels['size'] = 'Méret';
$labels['priority'] = 'Sürgősség';
$labels['organization'] = 'Szervezet';
$labels['readstatus'] = 'Olvasott';
$labels['listoptions'] = 'Üzenetlista beállítások...';
$labels['listoptionstitle'] = 'Üzenetlista beállítások.';
$labels['mailboxlist'] = 'Mappák';
$labels['messagesfromto'] = 'Üzenetek: $from - $to / $count';
$labels['threadsfromto'] = 'Témák: $from - $to / $count';
$labels['messagenrof'] = '$nr / $count üzenet';
$labels['fromtoshort'] = '$from – $to / $count';
$labels['copy'] = 'Másolás';
$labels['move'] = 'Áthelyezés';
$labels['moveto'] = 'Áthelyezés...';
$labels['copyto'] = 'Másolás..';
$labels['download'] = 'letöltés';
$labels['open'] = 'Megnyitás';
$labels['showattachment'] = 'Megjelenítés';
$labels['showanyway'] = 'Megjelnítés mindenképpen';
$labels['filename'] = 'Fájl neve';
$labels['filesize'] = 'Fájl mérete';
$labels['addtoaddressbook'] = 'Hozzáadás a címjegyzékhez';
$labels['sun'] = 'Vas';
$labels['mon'] = 'Hét';
$labels['tue'] = 'Kedd';
$labels['wed'] = 'Szer';
$labels['thu'] = 'Csüt';
$labels['fri'] = 'Pén';
$labels['sat'] = 'Szom';
$labels['sunday'] = 'Vasárnap';
$labels['monday'] = 'Hétfő';
$labels['tuesday'] = 'Kedd';
$labels['wednesday'] = 'Szerda';
$labels['thursday'] = 'Csütörtök';
$labels['friday'] = 'Péntek';
$labels['saturday'] = 'Szombat';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Febr';
$labels['mar'] = 'Márc';
$labels['apr'] = 'Ápr';
$labels['may'] = 'Május';
$labels['jun'] = 'Jún';
$labels['jul'] = 'Júl';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Szept';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Január';
$labels['longfeb'] = 'Február';
$labels['longmar'] = 'Március';
$labels['longapr'] = 'Április';
$labels['longmay'] = 'Május';
$labels['longjun'] = 'Június';
$labels['longjul'] = 'Július';
$labels['longaug'] = 'Augusztus';
$labels['longsep'] = 'Szeptember';
$labels['longoct'] = 'Október';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
$labels['today'] = 'Ma';
$labels['refresh'] = 'Frissítés';
$labels['checkmail'] = 'Új üzenetek ellenőrzése';
$labels['compose'] = 'Új üzenet';
$labels['writenewmessage'] = 'Új üzenet';
$labels['reply'] = 'Válasz';
$labels['replytomessage'] = 'Válasz';
$labels['replytoallmessage'] = 'Válasz a listának vagy a feladónak és az összes címzettnek';
$labels['replyall'] = 'Válasz mindenkinek';
$labels['replylist'] = 'Válasz a listának';
$labels['forward'] = 'Továbbítás';
$labels['forwardinline'] = 'Továbbítás beágyazva';
$labels['forwardattachment'] = 'Továbbítás csatolmányként';
$labels['forwardmessage'] = 'Továbbítás';
$labels['bouncemsg'] = 'Újraküldés (visszapattanás)';
$labels['bounce'] = 'Újraküldés';
$labels['deletemessage'] = 'Törlés';
$labels['movemessagetotrash'] = 'Üzenet törlése';
$labels['printmessage'] = 'Nyomtatás';
$labels['previousmessage'] = 'Előző levél mutatása';
$labels['firstmessage'] = 'Első levél mutatása';
$labels['nextmessage'] = 'Következő levél mutatása';
$labels['lastmessage'] = 'Utolsó levél mutatása';
$labels['backtolist'] = 'Vissza az üzenetekhez';
$labels['viewsource'] = 'Forrás megtekintése';
$labels['mark'] = 'Jelölés';
$labels['markmessages'] = 'Üzenetek megjelölése';
$labels['markread'] = 'Olvasottként';
$labels['markunread'] = 'Olvasatlanként';
$labels['markflagged'] = 'Jelöltként';
$labels['markunflagged'] = 'Jelöletlenként';
$labels['markundeleted'] = 'nem töröltre jelöl';
$labels['moreactions'] = 'További műveletek...';
$labels['markallread'] = 'Mind megjelölése olvasottként';
$labels['folders-cur'] = 'Csak a kiválasztott mappa';
$labels['folders-sub'] = 'Kiválasztott mappák és almappák';
$labels['folders-all'] = 'Összes mappa';
$labels['more'] = 'Még...';
$labels['back'] = 'Vissza';
$labels['options'] = 'Beállítások';
$labels['composeoptions'] = 'Levélírás opciói';
$labels['optionsandattachments'] = 'Opciók és csatolmányok';
$labels['actions'] = 'Műveletek';
$labels['first'] = 'Első';
$labels['last'] = 'Utolsó';
$labels['previous'] = 'Előző';
$labels['next'] = 'Következő';
$labels['select'] = 'Kijelölés';
$labels['selection'] = 'Kijelölés';
$labels['all'] = 'Összes';
$labels['none'] = 'Nincs';
$labels['currpage'] = 'Aktuális oldal';
$labels['isread'] = 'Olvasás';
$labels['unread'] = 'Olvasatlan';
$labels['flagged'] = 'Megjelölt';
$labels['unflagged'] = 'Nem megjelölt';
$labels['unanswered'] = 'Megválaszolatlan';
$labels['withattachment'] = 'Csatolmánnyal';
$labels['deleted'] = 'Törölt';
$labels['undeleted'] = 'Nem lett törölve';
$labels['replied'] = 'Megválaszolva';
$labels['forwarded'] = 'Továbbítva';
$labels['invert'] = 'Invertálás';
$labels['filter'] = 'Szűrés';
$labels['list'] = 'Lista';
$labels['threads'] = 'Téma csoportok';
$labels['expand-all'] = 'Összes kibontása';
$labels['expand-unread'] = 'Olvasatlanok kibontása';
$labels['collapse-all'] = 'Összes összecsukása';
$labels['threaded'] = 'Témák szerinti csoportosítás';
$labels['showunread'] = 'Olvasatlan üzenetek megjelenítése';
$labels['autoexpand_threads'] = 'Témacsoportok kibontása';
$labels['do_expand'] = 'minden téma';
$labels['expand_only_unread'] = 'csak ahol van olvasatlan üzenet';
$labels['fromto'] = 'Feladó/Címzett';
$labels['flag'] = 'Megjelölés';
$labels['attachment'] = 'Csatolmány';
$labels['nonesort'] = 'Nincs';
$labels['sentdate'] = 'Feladva';
$labels['arrival'] = 'Kézbesítve';
$labels['asc'] = 'Emelkedő';
$labels['desc'] = 'Csökkenő';
$labels['listcolumns'] = 'Oszlopok listája';
$labels['listsorting'] = 'Rendezés oszlopa';
$labels['listorder'] = 'Rendezés sorrendje';
$labels['listmode'] = 'Megjelenítési mód';
$labels['lmode'] = 'Megjelenítési mód';
$labels['layout'] = 'Elrendezés';
$labels['layoutwidescreen'] = 'Szélesképernyő';
$labels['layoutdesktop'] = 'Asztal';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Szélesvásznú (3-oszlopos nézet)';
$labels['layoutdesktopdesc'] = 'Asztali ( széles üzenetlista és alatta betekintő a levélbe)';
$labels['layoutlistdesc'] = 'Lista (nincs a levélbe betekintő)';
$labels['folderactions'] = 'Mappaműveletek...';
$labels['compact'] = 'Tömörítés';
$labels['empty'] = 'Kiürítés';
$labels['importmessages'] = 'Üzenetek importálása';
$labels['mailimportdesc'] = 'Feltölthetsz leveleket a <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> vagy <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> formátumban.';
$labels['mailimportzip'] = 'Több file-t lehet összetömöríteni egy a zip fileba.';
$labels['quota'] = 'Helyfoglalás';
$labels['unknown'] = 'ismeretlen';
$labels['unlimited'] = 'korlátlan';
$labels['quotatype'] = 'Kvóta típus';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Használt';
$labels['quotastorage'] = 'Lemez méret';
$labels['quotamessage'] = 'Üzenet darab';
$labels['shortheaderdate'] = '$date';
$labels['shortheaderto'] = '$to címzettnek $date';
$labels['shortheaderfrom'] = '$from küldőtől $date';
$labels['quicksearch'] = 'Gyorskeresés';
$labels['searchplaceholder'] = 'Keresés...';
$labels['resetsearch'] = 'Alapállapot';
$labels['searchmod'] = 'Keresési opciók';
$labels['msgtext'] = 'Teljes üzenet';
$labels['body'] = 'Törzs';
$labels['type'] = 'Típus';
$labels['namex'] = 'Név';
$labels['searchscope'] = 'Hatókör';
$labels['currentfolder'] = 'Aktuális mappa';
$labels['subfolders'] = 'Ez és az almappák';
$labels['allfolders'] = 'Minden mappa';
$labels['searchinterval-1W'] = 'egy hétnél régebbi';
$labels['searchinterval-1M'] = 'egy hónapnál régebbi';
$labels['searchinterval-1Y'] = 'több mint egy éves';
$labels['searchinterval1W'] = 'egy hétnél korábbi';
$labels['searchinterval1M'] = 'egy hónapnál korábbi';
$labels['searchinterval1Y'] = 'egy évnél korábbi';
$labels['openinextwin'] = 'Megnyitás új ablakban';
$labels['emlsave'] = 'Letöltés (.eml)';
$labels['changeformattext'] = 'Megjelenítés sima szöveges formátumban';
$labels['changeformathtml'] = 'Megjelenítés HTML formátumban';
$labels['editasnew'] = 'Szerkesztés újként';
$labels['send'] = 'Küldés';
$labels['sendmessage'] = 'Üzenet küldése';
$labels['savemessage'] = 'Vázlat mentése';
$labels['addattachment'] = 'Fájl csatolása';
$labels['charset'] = 'Karakterkészlet';
$labels['editortype'] = 'Szerkesztő típusa';
$labels['returnreceipt'] = 'Olvasási visszaigazolás';
$labels['dsn'] = 'Kézbesítési visszaigazolás';
$labels['keepformatting'] = 'Formázás megtartása ';
$labels['mailreplyintro'] = '$date időpontban $sender ezt írta:';
$labels['originalmessage'] = 'Eredeti üzenet';
$labels['selectimage'] = 'Kép kijelőlés';
$labels['addimage'] = 'Kép hozzáadás';
$labels['selectmedia'] = 'Film kijelölés';
$labels['addmedia'] = 'Film hozzáadás';
$labels['encrypt'] = 'Titkosítás';
$labels['encryptmessage'] = 'Üzenet titkosítása';
$labels['encryptmessagemailvelope'] = 'Üzenet titkosítása Mailvelope-vel';
$labels['importpubkeys'] = 'Nyilvános kulcsok importálása';
$labels['encryptedsendialog'] = 'Titkosított üzenet küldése';
$labels['encryptandsign'] = 'Titkosítás és aláírás';
$labels['keyid'] = 'Kulcs ID';
$labels['keylength'] = 'Bitek';
$labels['keyexpired'] = 'Lejárt';
$labels['keyrevoked'] = 'Visszvont';
$labels['bccinstead'] = 'Titkos másolat használata';
$labels['addheader'] = 'Címzett (fejléc) hozzáadása ';
$labels['insert'] = 'Beszúrás';
$labels['insertcontact'] = 'Kapcsolat(ok) beszúrása';
$labels['recipient'] = 'Címzett';
$labels['recipientedit'] = 'A címzett szerkesztése';
$labels['editidents'] = 'Azonosítók szerkesztése';
$labels['spellcheck'] = 'Helyesírás-ellenőrzés';
$labels['checkspelling'] = 'Helyesírás-ellenőrzés';
$labels['resumeediting'] = 'Helyesírás-ellenőrzés vége';
$labels['revertto'] = 'Visszaállítás erre';
$labels['restore'] = 'Visszaállítás';
$labels['restoremessage'] = 'Üzenet visszaállítás';
$labels['ignore'] = 'figyelmen kivül hagy';
$labels['responses'] = 'Válaszok';
$labels['insertresponse'] = 'Egy válasz beillesztése';
$labels['manageresponses'] = 'Válaszok kezelése';
$labels['newresponse'] = 'Új válasz létrehozása';
$labels['addresponse'] = 'Válasz hozzáadása';
$labels['editresponse'] = 'Válasz szerkesztése';
$labels['editresponses'] = 'Válaszok szerkesztése';
$labels['responsename'] = 'Név';
$labels['responsetext'] = 'Válasz Szöveg';
$labels['attach'] = 'Csatolás';
$labels['attachments'] = 'Csatolmányok';
$labels['upload'] = 'Feltöltés';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = 'Bezárás';
$labels['messageoptions'] = 'Üzenetbeállítások...';
$labels['togglecomposeoptions'] = 'Levélírás beállítások kapcsolása';
$labels['attachmentrename'] = 'Csatolmány átnevezése';
$labels['low'] = 'Alacsony';
$labels['lowest'] = 'Legkisebb';
$labels['normal'] = 'Normál';
$labels['high'] = 'Magas';
$labels['highest'] = 'Legmagasabb';
$labels['nosubject'] = '(nincs tárgy)';
$labels['showimages'] = 'Képek megjelenítése';
$labels['allow'] = 'Engedélyezve';
$labels['alwaysshow'] = 'Képek megjelenítése mindig, ha a feladó $sender';
$labels['alwaysallow'] = 'Minding engedélyezve ha a feladó $sender ';
$labels['isdraft'] = 'Ez egy piszkozat.';
$labels['andnmore'] = 'további $nr...';
$labels['details'] = 'Részletek';
$labels['summary'] = 'Összegzés';
$labels['headers'] = 'Fejlécek';
$labels['allheaders'] = 'Fejlécek...';
$labels['togglemoreheaders'] = 'Több üzenet fejrész(header) megjelenítése';
$labels['togglefullheaders'] = 'Nyers üzenet fejléc megjelenítés- elrejtés';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Egyszerű szöveg';
$labels['savesentmessagein'] = 'Elküldött üzenet mentése ide';
$labels['dontsave'] = 'nincs mentés';
$labels['maxuploadsize'] = 'A maximális feltölthető fájl mérete $size';
$labels['addcc'] = 'Cc (Másolati cím) hozzáadása';
$labels['addbcc'] = 'Bcc (titkos másolati cím) hozzáadása';
$labels['addreplyto'] = 'Válaszcím hozzáadása';
$labels['addfollowupto'] = 'Hírcsoport válasz hozzáadása';
$labels['sendreceipt'] = 'Elküldi az olvasási visszaigazolást?';
$labels['mdnrequest'] = 'Az üzenet küldője értesítést kér arról, hogy elolvasta a levelet. El legyen küldve az olvasási visszaigazolás?';
$labels['receiptread'] = 'Olvasási visszaigazolás (olvasott)';
$labels['yourmessage'] = 'Ez az üzenete olvasási visszaigazolása';
$labels['receiptnote'] = 'Megjegyzés: Ez az olvasási visszaigazolás csak azt igazolja, hogy az üzenet megjelenítésre került a címzett számítógépén. Nincs rá garancia, hogy a címzett elolvasta volna az üzenetet illetve megértette volna annak tartalmát.';
$labels['sendalwaysto'] = 'Mindig küldjön ide $email';
$labels['zoomin'] = 'Nagyítás';
$labels['zoomout'] = 'Kicsinyítés';
$labels['rotate'] = 'Elforgatás';
$labels['increaseimage'] = 'Kép méretének növelése';
$labels['decreaseimage'] = 'Kép méretének csökkentése';
$labels['rotateimage'] = 'Kép elforgatás';
$labels['showtools'] = 'Kép eszközök megjelenítése';
$labels['hidetools'] = 'Kép eszközök elrejtése';
$labels['name'] = 'Megjelenített név';
$labels['firstname'] = 'Keresztnév';
$labels['surname'] = 'Vezetéknév';
$labels['middlename'] = 'Második keresztnév';
$labels['nameprefix'] = 'Név-előtag';
$labels['namesuffix'] = 'Név-utótag';
$labels['nickname'] = 'Becenév';
$labels['jobtitle'] = 'Beosztás';
$labels['department'] = 'Részleg';
$labels['gender'] = 'Nem';
$labels['maidenname'] = 'Leánykori név';
$labels['email'] = 'E-mail cím';
$labels['phone'] = 'Telefonszám';
$labels['address'] = 'Lakcím';
$labels['street'] = 'Utca';
$labels['locality'] = 'Város';
$labels['zipcode'] = 'Irányítószám';
$labels['region'] = 'Régió';
$labels['country'] = 'Ország';
$labels['birthday'] = 'Születésnap';
$labels['anniversary'] = 'Évforduló';
$labels['website'] = 'Weboldal';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Megjegyzések';
$labels['male'] = 'férfi';
$labels['female'] = 'nő';
$labels['manager'] = 'Menedzser';
$labels['assistant'] = 'Asszisztens';
$labels['spouse'] = 'Házastárs';
$labels['allfields'] = 'Összes mező';
$labels['search'] = 'Keresés';
$labels['searchresult'] = 'Keresés eredménye';
$labels['advsearch'] = 'Részletes keresés';
$labels['advanced'] = 'Haladó';
$labels['other'] = 'Egyéb';
$labels['printcontact'] = 'A kapcsolat nyomtatása';
$labels['qrcode'] = 'QR Kód';
$labels['typehome'] = 'Otthon';
$labels['typework'] = 'Munkahely';
$labels['typeother'] = 'Egyéb';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Vezetékes';
$labels['typehomefax'] = 'Otthoni fax';
$labels['typeworkfax'] = 'Munkahelyi fax';
$labels['typecar'] = 'Gépkocsi';
$labels['typepager'] = 'Személyhívó';
$labels['typevideo'] = 'Videó';
$labels['typeassistant'] = 'Asszisztens';
$labels['typehomepage'] = 'Weboldal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Új mező hozzáadása...';
$labels['addcontact'] = 'Kapcsolat hozzáadása';
$labels['editcontact'] = 'Kapcsolat szerkesztése';
$labels['contacts'] = 'Kapcsolatok';
$labels['contactproperties'] = 'Kapcsolat tulajdonságai';
$labels['contactnameandorg'] = 'Név és szervezet';
$labels['personalinfo'] = 'Személyes adatok';
$labels['personal'] = 'Személyes';
$labels['contactphoto'] = 'Kapcsolat fotója';
$labels['edit'] = 'Szerkesztés';
$labels['cancel'] = 'Mégsem';
$labels['save'] = 'Mentés';
$labels['delete'] = 'Törlés';
$labels['discard'] = 'Érvénytelenít';
$labels['continue'] = 'Tovább';
$labels['ok'] = 'OK';
$labels['rename'] = 'Átnevezés';
$labels['addphoto'] = 'Kép hozzáadása';
$labels['replacephoto'] = 'Kép cseréje';
$labels['uploadphoto'] = 'Fotó feltöltése';
$labels['choosefile'] = 'File kiválasztása...';
$labels['choosefiles'] = 'Fileok kiválasztása...';
$labels['browse'] = 'Böngészés';
$labels['newcontact'] = 'Új kapcsolat létrehozása';
$labels['deletecontact'] = 'Kijelölt kapcsolatok törlése';
$labels['composeto'] = 'E-mail küldése erre a címre';
$labels['contactsfromto'] = 'Kapcsolatok: $from - $to / $count';
$labels['print'] = 'Nyomtatás';
$labels['export'] = 'Exportálás';
$labels['exportall'] = 'Összes exportálása';
$labels['exportsel'] = 'Kijelöltek exportálása';
$labels['exportvcards'] = 'Kapcsolatok exportálása vCard formátumban';
$labels['newgroup'] = 'Új csoport létrehozása';
$labels['addgroup'] = 'Csoport hozzáadása';
$labels['grouprename'] = 'Csoport átnevezése';
$labels['groupdelete'] = 'Csoport törlése';
$labels['groupassign'] = 'Csoporthoz rendelés...';
$labels['groupremove'] = 'Csoportból eltávolítás';
$labels['groupremoveselected'] = 'A kijelölt partnerek törlése a csoportból';
$labels['uponelevel'] = 'Egy szinttel feljebb';
$labels['previouspage'] = 'Előző oldal';
$labels['firstpage'] = 'Első oldal';
$labels['nextpage'] = 'Következő oldal';
$labels['lastpage'] = 'Utolsó oldal';
$labels['group'] = 'Csoport';
$labels['groups'] = 'Csoportok';
$labels['listgroup'] = 'Csoport tagjainak listája';
$labels['personaladrbook'] = 'Személyes címjegyzék';
$labels['searchsave'] = 'Keresés mentése';
$labels['searchdelete'] = 'Keresés törlése';
$labels['import'] = 'Importálás';
$labels['importcontacts'] = 'Kapcsolatok importálása';
$labels['importfromfile'] = 'Importálás fájlból';
$labels['importtarget'] = 'Kapcsolatok hozzáadása ';
$labels['importreplace'] = 'A teljes címjegyzék cseréje';
$labels['importgroups'] = 'Csoport hozzárendelések importálása';
$labels['importgroupsall'] = 'Mind(csoport létrehozása amennyiben szükséges)';
$labels['importgroupsexisting'] = 'Csak már létező csoportoknak';
$labels['importdesc'] = 'Feltölthetsz partnereket már létező címjegyzékből.<br/>Jelenleg a címeket importálni vagy <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> vagy CSV(vesszővel-tagolt) formátumból lehet.';
$labels['importmapdesc'] = 'Erősítse meg, hogy a mező megfeleltetések megfelelőek, mielőtt folytatnánk a CSV (vesszővel elválasztott) adatok importálását.';
$labels['fieldnotmapped'] = 'A mező nem hozzárendelve (nem importálandó)';
$labels['skipheader'] = 'Nem importálja az első sort (fejlécek)';
$labels['done'] = 'Kész';
$labels['settingsfor'] = 'Beállítás';
$labels['about'] = 'Névjegy';
$labels['preferences'] = 'Beállítások';
$labels['userpreferences'] = 'Felhasználói beállítások';
$labels['editpreferences'] = 'Felhasználói beállítások szerkesztése';
$labels['identities'] = 'Azonosítók';
$labels['manageidentities'] = 'Azonosítók kezelése';
$labels['newidentity'] = 'Új azonosító létrehozása';
$labels['addidentity'] = 'Azonosító hozzáadása';
$labels['editidentity'] = 'Azonosító szerkesztése';
$labels['identityencryption'] = 'Titkosítás';
$labels['preferhtml'] = 'HTML megjelenítés';
$labels['defaultcharset'] = 'Alapértelmezett karakterkódolás';
$labels['htmlmessage'] = 'HTML üzenet';
$labels['messagepart'] = 'Rész';
$labels['digitalsig'] = 'Digitális aláírás';
$labels['dateformat'] = 'Dátumformátum';
$labels['timeformat'] = 'Időformátum';
$labels['prettydate'] = 'Rövid dátumok';
$labels['setdefault'] = 'Beállítás alapértelmezettnek';
$labels['autodetect'] = 'Automatikus';
$labels['language'] = 'Nyelv';
$labels['timezone'] = 'Időzóna';
$labels['pagesize'] = 'Sorok száma egy oldalon';
$labels['signature'] = 'Aláírás';
$labels['dstactive'] = 'Nyári időszámítás';
$labels['showinextwin'] = 'Az üzenet megnyitása egy új ablakban';
$labels['composeextwin'] = 'Űzenet írása új ablakban';
$labels['htmleditor'] = 'HTML üzenet írása';
$labels['htmlonreply'] = 'csak HTML üzenetre válaszolva';
$labels['htmlonreplyandforward'] = 'HTML üzenet továbbításakor vagy az arra való válaszoláskor';
$labels['htmlsignature'] = 'HTML aláírás';
$labels['showemail'] = 'Az email címek megjelenítése a partner nevével';
$labels['previewpane'] = 'Előnézeti kép';
$labels['skin'] = 'Kinézet';
$labels['logoutclear'] = 'Törölt elemek mappa ürítése kilépéskor';
$labels['logoutcompact'] = 'Beérkezett üzenetek mappa tömörítése kilépéskor';
$labels['uisettings'] = 'Felhasználói felület';
$labels['serversettings'] = 'Szerverbeállítások';
$labels['mailboxview'] = 'Postafiók nézet';
$labels['mdnrequests'] = 'Olvasási visszaigazolás küldése';
$labels['askuser'] = 'kérdezzen rá';
$labels['autosend'] = 'automatikus küldés';
$labels['autosendknown'] = 'küldés csak a címjegyzékben lévő kapcsolataimnak, egyéb esetben kérdezzen rá';
$labels['autosendknownignore'] = 'küldés csak a címjegyzékben lévő kapcsolataimnak, egyéb esetben nem';
$labels['autosendtrusted'] = 'küldjön visszaigazolást a megbízható feladóknak, máskülönben kérdezzen rá';
$labels['autosendtrustedignore'] = 'küldjön visszaigazolást a megbízható feladóknak, máskülönben hagyja figyelmen kívül';
$labels['ignorerequest'] = 'a kérés figyelmen kivül hagyása';
$labels['readwhendeleted'] = 'Üzenet olvasottként jelölése törléskor';
$labels['flagfordeletion'] = 'Üzenet törlendőnek jelölése törlés helyett';
$labels['skipdeleted'] = 'Törölt üzenetek ne legyenek megjelenítve';
$labels['deletealways'] = 'Üzenet törlése, ha nem sikerül áthelyezni a törölt elemek mappába';
$labels['deletejunk'] = 'Üzenetek közvetlen törlése a levélszemét mappából';
$labels['showremoteimages'] = 'Távoli beágyazott képek megjelenítése';
$labels['allowremoteresources'] = 'Távoli erőforrások engedélyezve (képek, stílusok)';
$labels['fromknownsenders'] = 'csak ismert feladóktól';
$labels['fromtrustedsenders'] = 'a megbízható feladóktól';
$labels['frommycontacts'] = 'a partnereimtől';
$labels['always'] = 'mindig';
$labels['alwaysbutplain'] = 'mindig, kivéve ha sima szöveg levélre válaszolunk';
$labels['showinlineimages'] = 'Csatolt képek megjelenítése az üzenet alatt';
$labels['autosavedraft'] = 'Piszkozat automatikus mentése';
$labels['everynminutes'] = 'minden $n percben';
$labels['refreshinterval'] = 'Frissítés ( új üzenetek keresése, stb )';
$labels['never'] = 'soha';
$labels['immediately'] = 'azonnal';
$labels['messagesdisplaying'] = 'Üzenetek megjelenítése';
$labels['messagescomposition'] = 'Üzenetek írása';
$labels['mimeparamfolding'] = 'Csatolt állományok nevei';
$labels['2231folding'] = 'Teljes RFC 2231 ( pl. Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (egyéb)';
$labels['force7bit'] = 'MIME kódolás használata 8 bites karakterekhez';
$labels['savelocalstorage'] = "Mentse a böngésző helyi adattárolóba (ideiglenes)";
$labels['advancedoptions'] = 'Haladó beállítások';
$labels['toggleadvancedoptions'] = 'Haladó beállítások kapcsolása';
$labels['focusonnewmessage'] = 'Beérkező új üzenet ablakának fókuszba hozása';
$labels['checkallfolders'] = 'Új üzenetek ellenőrzése minden mappában';
$labels['displaynext'] = 'A következő elem megjelenítése törlés/áthelyezés után';
$labels['defaultfont'] = 'HTML üzenet alap karakterkészlete';
$labels['mainoptions'] = 'Általános beállítások';
$labels['browseroptions'] = 'Böngésző beállításai';
$labels['section'] = 'Beállítások';
$labels['maintenance'] = 'Karbantartás';
$labels['newmessage'] = 'Új üzenet';
$labels['signatureoptions'] = 'Aláírás beállításai';
$labels['whenreplying'] = 'Válasznál';
$labels['replyempty'] = 'ne idézze az eredeti üzenetet';
$labels['replytopposting'] = 'üzenet írása az eredeti felett';
$labels['replytoppostingnoindent'] = 'üzenet írása az eredeti felett (behúzások nélkül)';
$labels['replybottomposting'] = 'üzenet írása az eredeti alatt';
$labels['replyremovesignature'] = 'Válasznál az eredeti aláírás eltávolítása';
$labels['autoaddsignature'] = 'Aláírás automatikus hozzáadása';
$labels['newmessageonly'] = 'csak új üzenetnél';
$labels['replyandforwardonly'] = 'válasznál és továbbításnál';
$labels['insertsignature'] = 'Aláírás beillesztése';
$labels['sigbelow'] = 'Az aláírás az idézett üzenet alatt';
$labels['sigseparator'] = 'Az aláírásokban a szabványos elválasztok használatának kényszerítése';
$labels['automarkread'] = 'Üzenetek megjelölése olvasottként';
$labels['afternseconds'] = '$n másodperc elteltével';
$labels['reqmdn'] = 'Olvasási visszaigazolás megkövetelése';
$labels['reqdsn'] = 'Kézbesítési visszaigazolás megkövetelése';
$labels['replysamefolder'] = 'Válaszok azonos mappába helyezése';
$labels['defaultabook'] = 'Alapértelmezett címjegyzék';
$labels['autocompletesingle'] = 'Alternatív e-mail címek kihagyása automatikus kiegészítéskor';
$labels['listnamedisplay'] = 'Névjegyek listázása';
$labels['contactformmode'] = 'Kapcsolat űrlap mód';
$labels['privatemode'] = 'Magán (Otthoni)';
$labels['businessmode'] = 'Üzleti (Munkahely)';
$labels['collectedaddresses'] = 'Begyűjtött címek';
$labels['collectedrecipients'] = 'Begyűjtött Címzettek';
$labels['collectedrecipientsopt'] = 'Kimenő emailek címzetjeinek tárolása a kövezkezőben';
$labels['collectedsendersopt'] = 'Megbízható feladókat tárolása a következőben';
$labels['trustedsenders'] = 'Megbízható Feladók';
$labels['spellcheckbeforesend'] = 'Helyesírás-ellenőrzés az üzenet elküldése előtt';
$labels['spellcheckoptions'] = 'Helyesírás-ellenőrzés opciók';
$labels['spellcheckignoresyms'] = 'Speciális karaktereket tartalmazó szavak kihagyása';
$labels['spellcheckignorenums'] = 'Számot tartalmazó szavak kihagyása';
$labels['spellcheckignorecaps'] = 'Csak nagybetűt tartalmazó szavak kihagyása';
$labels['addtodict'] = 'Hozzáadás a szótárhoz';
$labels['mailtoprotohandler'] = 'Beállítás a mailto: linkek kezelőjeként';
$labels['standardwindows'] = 'A felugró ablakok használata szokásos ablakként';
$labels['forwardmode'] = 'Üzenet továbbítás';
$labels['inline'] = 'beágyazott';
$labels['asattachment'] = 'csatolmányként';
$labels['replyallmode'] = 'Alapértelemezett művelete a [Válasz mindenkinek] gombnak';
$labels['replyalldefault'] = 'válasz mindenkinek';
$labels['replyalllist'] = 'válasz a csak a levelező listára(ha levelezőlista)';
$labels['allmessages'] = 'Minden üzenet illeszkedjen';
$labels['olderxdays'] = '$x napnál régebbi';
$labels['folder'] = 'Mappa';
$labels['folders'] = 'Mappák';
$labels['foldername'] = 'Mappa neve';
$labels['subscribed'] = 'Feliratkozva';
$labels['messagecount'] = 'Üzenet';
$labels['create'] = 'Létrehozás';
$labels['createfolder'] = 'Új mappa létrehozása';
$labels['managefolders'] = 'Mappák kezelése';
$labels['specialfolders'] = 'Különleges mappák';
$labels['properties'] = 'Tulajdonságok';
$labels['folderproperties'] = 'Mappa tulajdonságai';
$labels['parentfolder'] = 'Szülőmappa';
$labels['location'] = 'Hely';
$labels['info'] = 'Információk';
$labels['getfoldersize'] = 'Mappa mérete';
$labels['changesubscription'] = 'Feliratkozás megváltoztatása';
$labels['foldertype'] = 'Mappa típusa';
$labels['personalfolder'] = 'Privát mappa';
$labels['otherfolder'] = 'Más felhasználó(k) mappája';
$labels['sharedfolder'] = 'Megosztott mappa';
$labels['findfolders'] = 'Mappa keresése';
$labels['findcontacts'] = 'Kapcsolat keresés';
$labels['findmail'] = 'Levél keresés';
$labels['namespace.personal'] = 'Személyes';
$labels['namespace.other'] = 'Más felhasználók';
$labels['namespace.shared'] = 'Megosztva';
$labels['dualuselabel'] = 'Csak a következőt tartalmazhatja';
$labels['dualusemail'] = 'üzenetek';
$labels['dualusefolder'] = 'mappák';
$labels['generate'] = 'Generálás';
$labels['encryptioncreatekey'] = 'Új kulcs pár létrehozása';
$labels['openmailvelopesettings'] = 'Open Mailvelope Beállítások';
$labels['encryptionprivkeysinmailvelope'] = '$nr egyező privát kulcs van a Mailvelope kulcskarikádon: ';
$labels['encryptionnoprivkeysinmailvelope'] = 'Ennek küldőnek még nincs meg a PGP prívát kulcsa a Mailvelope kiterjesztésedben. Szeretnél létrehozni egyet, hogy engedélyezzed a titkositott üzenetváltást?';
$labels['encryption'] = 'Titkosítás';
$labels['mailvelopeoptions'] = 'Mailvelope opciók';
$labels['mailvelopemainkeyring'] = 'Mailvelop fő kulcskarikájának használata';
$labels['mailvelopenotfound'] = 'A Mailvelope bővítmény nincs engedélyezva/telepítve a böngésződben.';
$labels['sortby'] = 'Rendezés';
$labels['sortasc'] = 'növekvő';
$labels['sortdesc'] = 'csökkenő';
$labels['undo'] = 'Visszavonás';
$labels['installedplugins'] = 'Telepített bővítmények';
$labels['plugin'] = 'Bővítmény';
$labels['version'] = 'Verzió';
$labels['source'] = 'Forrás';
$labels['destination'] = 'Cél';
$labels['license'] = 'Licensz';
$labels['support'] = 'Támogatás';
$labels['savedsearches'] = 'Elmentett keresések';
$labels['dateformatY'] = 'ÉÉÉÉ';
$labels['dateformaty'] = 'ÉÉ';
$labels['dateformatm'] = 'HH';
$labels['dateformatd'] = 'NN';
$labels['dateformatj'] = 'N';
$labels['dateformatn'] = 'H';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angol';
$labels['westerneuropean'] = 'Nyugat-európai';
$labels['easterneuropean'] = 'Kelet-európai';
$labels['southeasterneuropean'] = 'Délkelet-európai';
$labels['baltic'] = 'Balti';
$labels['cyrillic'] = 'Cirill';
$labels['arabic'] = 'Arab';
$labels['greek'] = 'Görög';
$labels['hebrew'] = 'Héber';
$labels['turkish'] = 'Török';
$labels['nordic'] = 'Skandináv';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Kelta';
$labels['vietnamese'] = 'Vietnámi';
$labels['japanese'] = 'Japán';
$labels['korean'] = 'Koreai';
$labels['chinese'] = 'Kínai';
$labels['arialabeltopnav'] = 'Ablak beállítás';
$labels['arialabeltasknav'] = 'Alkalmazás feladatok';
$labels['arialabeltoolbar'] = 'Alkamazás eszközsor';
$labels['arialabellistnav'] = 'Lista navigáció';
$labels['arialabelactivetask'] = 'Aktiv feladat';
$labels['arialabelmessagessearchfilter'] = 'Email lista szűrő';
$labels['arialabelmailsearchform'] = 'Email üzenet kereső űrlap';
$labels['arialabelcontactsearchform'] = 'Kapcsolat kereső űrlap';
$labels['arialabelmailquicksearchbox'] = 'Email kereső mező';
$labels['arialabelquicksearchbox'] = 'Kereső mező';
$labels['arialabelfoldersearchfilter'] = 'Mappa lista szűrő';
$labels['arialabelfoldersearchform'] = 'Mappa kereső űrlap';
$labels['arialabelfolderlist'] = 'Email mappa kiválasztás';
$labels['arialabelmessagelist'] = 'Email üzenetek listázása';
$labels['arialabelmailpreviewframe'] = 'Üzenet betekintő';
$labels['arialabelmailboxmenu'] = 'Mappa műveletek menü';
$labels['arialabellistselectmenu'] = 'Lista választék menü';
$labels['arialabelthreadselectmenu'] = 'Témák szerinti listázás menü';
$labels['arialabelmessagelistoptions'] = 'Üzenet lista megjelenítési és rendezési opciók';
$labels['arialabelmailimportdialog'] = 'Üzenet importáls';
$labels['arialabelmessagenav'] = 'Üzenet navigálás';
$labels['arialabelmessagebody'] = 'Üzenet főrész';
$labels['arialabelmessageactions'] = 'Üzenet műveletek';
$labels['arialabelcontactquicksearch'] = 'Kapcsolat kereső űrlap';
$labels['arialabelcontactsearchbox'] = 'Kapcsolat kereső beviteli mező';
$labels['arialabelmessageheaders'] = 'Üzenet fejlécek';
$labels['arialabelforwardingoptions'] = 'Továbbítási beállítások';
$labels['arialabelreplyalloptions'] = 'Válasz mindenkinek beállítások';
$labels['arialabelmoremessageactions'] = 'További műveletek az üzenettel...';
$labels['arialabelmorecontactactions'] = 'További műveletek a kapcsolatokkal...';
$labels['arialabelmarkmessagesas'] = 'A kiválasztott üzenetek megjelölése mint...';
$labels['arialabelcomposeoptions'] = 'Levélírás opciók';
$labels['arialabelresponsesmenu'] = 'Sablon válaszok menű';
$labels['arialabelattachmentuploadform'] = 'Csatolmány feltöltő űrlap';
$labels['arialabelattachmentmenu'] = 'Csatolmány beállítások';
$labels['arialabelmailtomenu'] = 'Email cím beállítások';
$labels['arialabelattachmentpreview'] = 'Csatolmány előnézet';
$labels['ariasummarycomposecontacts'] = 'A kapcsolatoknak és csoportoknak a listája a címzettek kiválasztásához';
$labels['arialabelcontactexportoptions'] = 'Kapcsolat exportálásának opciói';
$labels['arialabelabookgroupoptions'] = 'Címjegyzék/csoportjegyzék opciói';
$labels['arialabelpreferencesform'] = 'Beállítások űrlap';
$labels['arialabelidentityeditfrom'] = 'Identitás szerkesztő űrlap';
$labels['arialabelresponseeditfrom'] = 'Válasz szerkesztő űrlap';
$labels['arialabelsearchterms'] = 'Kereső kifejezések';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop műveletek menü';
$labels['arialabelheadersmenu'] = 'Címzett (fejléc) hozzáadása menűhöz';
$labels['arialabelimagetools'] = 'Kép eszközök';
$labels['helplistnavigation'] = 'A navigálásra használt billentyűk listája';
$labels['helplistkeyboardnavigation'] = "Nyilak fel/le: A sor fókusz/kiválasztás mozgatása.
Szóköz: A fókuszban lévő sor kiválasztása.
Shift + fel/le: Több sor kiválasztása az aktuális sor alatt/felett.
Ctrl + Szóköz: A fókuszban levő sor hozzáadása vagy törlése a kiválasztásból.";
$labels['helplistkeyboardnavmessages'] = "Jobbra/Balra nyilak: kibontja/becsukja az üzenet szálakat (csak a beszélgető/szálas módban).
Enter: Kinyitja a kiválasztott/fókuszban levő üzenetet.
Delete: A kiválaszott üzenet áthelyezése a Kukába.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Megnyitja a kiválasztott/fókuszban levő kapcsolatot.";
localization/hu_HU/messages.inc000064400000045007151727150570012566 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Hiba történt!';
$messages['loginfailed']  = 'Sikertelen bejelentkezés.';
$messages['cookiesdisabled'] = 'A böngésző nem támogatja a sütik használatát';
$messages['sessionerror'] = 'Érvénytelen vagy lejárt munkamenet';
$messages['cookiesmismatch'] = 'A cookie-k nem egyeznek meg. Kérjük, töröljed a böngészőből a cookie-kat.';
$messages['storageerror'] = 'Nem sikerült csatlakozni az IMAP szerverhez';
$messages['servererror'] = 'Szerverhiba!';
$messages['servererrormsg'] = 'Szerverhiba: $msg';
$messages['accountlocked'] = 'Túl sok sikertelen belépési kísérlet történt. Próbálja késöbb.';
$messages['connerror'] = 'Kapcsolódási hiba (a kiszolgáló elérése sikertelen)!';
$messages['dberror'] = 'Adatbázishiba!';
$messages['dbconnerror'] = 'Nem sikerült kapcsolódni az adatbázishoz!';
$messages['windowopenerror'] = 'A felugró ablak blokkolva lett!';
$messages['requesttimedout'] = 'A kérés túllépte az időkorlátot';
$messages['errorreadonly'] = 'A műveletet nem sikerült végrehajtani. A mappa írásvédett.';
$messages['errornoperm'] = 'A műveletet nem sikerült végrehajtani. Hozzáférés megtagadva.';
$messages['erroroverquota'] = 'A műveletet nem lehetett végrehajtani, mivel nincs elég szabad tárhely.';
$messages['erroroverquotadelete'] = 'Elfogyott a tárhely. A SHIFT+DEL billentyű kombinációval lehet üzeneteket törölni.';
$messages['invalidrequest'] = 'Érvénytelen kérés! Az adatok nem lettek elmentve.';
$messages['invalidhost'] = 'Hibás szerver hoszt név';
$messages['nomessagesfound'] = 'A mappa nem tartalmaz üzeneteket';
$messages['loggedout'] = 'Sikeresen lezáródott a munkamenet. Viszontlátásra!';
$messages['mailboxempty'] = 'A postaláda üres';
$messages['nomessages'] = 'Nincsenek üzenetek';
$messages['refreshing'] = 'Frissítés...';
$messages['loading'] = 'Betöltés...';
$messages['uploading'] = 'Fájl feltöltése...';
$messages['attaching'] = 'Fájl csatolása...';
$messages['uploadingmany'] = 'Fájlok feltöltése...';
$messages['loadingdata'] = 'Az adatok betöltése...';
$messages['checkingmail'] = 'Új üzenetek keresése...';
$messages['sendingmessage'] = 'Az üzenet küldése...';
$messages['messagesent'] = 'Az üzenet elküldve';
$messages['savingmessage'] = 'Az üzenet mentése...';
$messages['messagesaved'] = 'Az üzenet elmentve a Piszkozatokhoz';
$messages['successfullysaved'] = 'A mentés sikerült';
$messages['savingresponse'] = 'A válasz szövegének mentése...';
$messages['deleteresponseconfirm'] = 'Biztosan törli ezt a válasz szöveget?';
$messages['nocontactselected'] = 'Nincs kiválasztva még partner.';
$messages['addedsuccessfully'] = 'A kapcsolat hozzáadása a címjegyzékhez megtörtént';
$messages['contactexists'] = 'Egy kapcsolat ugyanezzel az email címmel már létezik.';
$messages['contactnameexists'] = 'Ezzel a névvel már létezik kapcsolat';
$messages['blockedimages'] = 'Biztonsági okokból a távoli képek letöltése tiltott';
$messages['blockedresources'] = 'A személyes adatok védelmében a távoli erőforrások blokkolva vannak.';
$messages['suspiciousemail'] = 'Ez az üzenet gyanús e-mail címeket tartalmaz, amelyek átveréseknél játszhatnak szerepet.';
$messages['bccemail'] = 'A továbbított üzenet(ek) titkos címzetteket tartalmaz(nak) (Bcc).';
$messages['bouncehint'] = 'Az üzenet módosítások nélkül, azaz az eredeti szöveg, fejlécek és címzettek felhasználásával kerül elküldésre.';
$messages['encryptedmessage'] = 'Az üzenet titkosított, ezért nem megjeleníthető';
$messages['externalmessagedecryption'] = 'Ez egy titkosított üzenet, amit vissza tudsz fejteni a böngésződ bővitményével,';
$messages['nopubkeyfor'] = 'Nem található érvényes publikus kulcs ehhez az emailhez: $email';
$messages['nopubkeyforsender'] = 'Nem található érvényes publikus kulcs a küldő indentitásodhoz. Szeretnéd titkosítani az üzenetet csak címzetteknek?';
$messages['encryptnoattachments'] = 'A már feltöltött csatolmányokat nem lehet titkosítani. Kérlek csatold újra azokat a titkosító szerkesztőben.';
$messages['searchpubkeyservers'] = 'Szeretnéd megkeresni a hiányzó kulcsokat publikus kulcs szervereken?';
$messages['encryptpubkeysfound'] = 'A következő publikus kulcs lett megtalálva:';
$messages['keyservererror'] = 'Nem sikerült kulcsot kapni a kulcskiszolgálóról.';
$messages['keyimportsuccess'] = 'A nyilvános kulcsot $key sikeresen importálva a kulcstartódba.';
$messages['nocontactsfound'] = 'Nem találhatóak kapcsolatok';
$messages['contactnotfound'] = 'A kiválasztott kapcsolat nem található';
$messages['contactsearchonly'] = 'A keresési űrlapot kell használni a partnerek megjelenítéséhez a kiválasztott címjegyzékből.';
$messages['sendingfailed'] = 'Az üzenet elküldése nem sikerült';
$messages['senttooquickly'] = 'Kérem várjon még $sec másodpercet az üzenet elküldése előtt';
$messages['errorsavingsent'] = 'Hiba történt az elküldött üzenet mentése közben';
$messages['errorsaving'] = 'A mentés során hiba lépett fel';
$messages['errormoving'] = 'Az üzenet(ek)et nem sikerült áthelyezni';
$messages['errorcopying'] = 'Az üzenet(ek)et nem sikerült másolni';
$messages['errordeleting'] = 'Az üzenet(ek)et nem sikerült törölni';
$messages['errormarking'] = 'Az üzenet(ek)et nem sikerült megjelölni';
$messages['alerttitle'] = 'Figyelem';
$messages['confirmationtitle'] = 'Biztosan...';
$messages['deletecontactconfirm']  = 'Biztos, hogy törölni szeretné a kijelölt kapcsolato(ka)t?';
$messages['deletegroupconfirm']  = 'Biztos, hogy törölni szeretné a kijelölt csoportot?';
$messages['deletemessagesconfirm'] = 'Biztos, hogy törölni szeretné a kijelölt üzenete(ke)t?';
$messages['deletefolderconfirm']  = 'Biztos, hogy törölni szeretné ezt a mappát?';
$messages['movefolderconfirm']  = 'Biztos, hogy át szeretné mozgatni ezt a mappát?';
$messages['purgefolderconfirm']  = 'Biztos benne, hogy az összes üzenet törölhető?';
$messages['contactdeleting'] = 'Kapcsolat(ok) törlése...';
$messages['groupdeleting'] = 'Csoport törlése...';
$messages['folderdeleting'] = 'Mappa törlése...';
$messages['foldermoving'] = 'Mappa áthelyezése...';
$messages['foldersubscribing'] = 'Feliratkozás a mappára...';
$messages['folderunsubscribing'] = 'Leiratkozás a mappáról...';
$messages['formincomplete'] = 'Az űrlap hiányosan lett kitöltve';
$messages['noemailwarning'] = 'Adjon meg egy valós e-mail címet';
$messages['nonamewarning']  = 'Adjon meg egy nevet';
$messages['nopagesizewarning'] = 'Adja meg a papír méretét';
$messages['nosenderwarning'] = 'Írd be a küldő email címét.';
$messages['recipientsadded'] = 'A címzett(ek) sikeresen hozzáadva.';
$messages['norecipientwarning'] = 'Legalább egy címzettet adjon meg';
$messages['disclosedrecipwarning'] = 'Minden címzett látni fogja az összes többi címzet e-mail címét. Ezt megelőzendően és a személyes adatok biztonságának megörzésének érdekében használhatod a Titkos másolat/Bcc/ mezőt.';
$messages['disclosedreciptitle'] = 'Túl sok címzett';
$messages['nosubjectwarning']  = 'A Tárgy mező üres. Szeretné most kitölteni?';
$messages['nosubjecttitle']  = 'Nincs tárgy';
$messages['nobodywarning'] = 'Elküldi az üzenetet üresen?';
$messages['notsentwarning'] = 'Az üzenet nem lett még elküldve és vannak benne nem mentett változások. Biztos elveted a módosításaidat?';
$messages['restoresavedcomposedata'] = 'Egy elkezdett, de el nem küldött üzenetet talált a program.\n\Tárgy: $subject\nMentve: $date\n\nSzeretnéd visszaállítani és folytatni ez az üzenetet?';
$messages['nosearchname'] = 'Adja meg a kapcsolat nevét vagy e-mail címét';
$messages['notuploadedwarning'] = 'Még nem került feltöltésre minden csatolmány. Kérem várjon, vagy állítsa le a feltöltést!';
$messages['searchsuccessful'] = '$nr üzenet található';
$messages['contactsearchsuccessful'] = '$nr találat';
$messages['searchnomatch'] = 'Nincs találat';
$messages['searching'] = 'Keresés...';
$messages['checking'] = 'Ellenőrzés...';
$messages['stillsearching'] = 'Keresés folyamatban...';
$messages['nospellerrors'] = 'Nem található helyesírási hiba';
$messages['folderdeleted'] = 'A mappa sikeresen törölve';
$messages['foldersubscribed'] = 'Sikerült a mappára feliratkozni';
$messages['folderunsubscribed'] = 'Sikerült a mappáról leiratkozni';
$messages['folderpurged'] = 'Mappa sikeresen kiürítve';
$messages['folderexpunged'] = 'Mappa sikeresen tömörítve.';
$messages['deletedsuccessfully'] = 'Törölve';
$messages['converting'] = 'Formázás eltávolítása az üzenetből...';
$messages['messageopenerror'] = 'A levelek a szerverről nem tölthetők le';
$messages['filelinkerror'] = 'A fájl csatolása sikertelen.';
$messages['fileuploaderror'] = 'Feltöltés sikertelen';
$messages['csvfilemismatch'] = 'Több CSV fájl importálása különböző mezőkkel nem támogatott.';
$messages['filesizeerror'] = 'A feltöltött fájl mérete meghaladja a maximális $size méretet';
$messages['filecounterror'] = 'Egyszerre csak $count filet tölthetsz fel.';
$messages['msgsizeerror'] = 'Túl nagy a csatolmány mérete. Egy üzenet maximális mérete: ($size).';
$messages['msgsizeerrorfwd'] = 'Az üzenet elérte a maximális méretet($size). $num üzenet nem lett csatolva.';
$messages['copysuccess'] = 'Sikeresen átmásolva $nr kapcsolat.';
$messages['movesuccess'] = '$nr kapcsolat sikeresen áthelyezve.';
$messages['copyerror'] = 'Nem lehet másolni a kapcsolatokat.';
$messages['moveerror'] = 'Nem lehet áthelyezni a kapcsolatokat.';
$messages['sourceisreadonly'] = 'Ez a címforrás csak olvasható';
$messages['errorsavingcontact'] = 'A kapcsolat címe nem menthető';
$messages['movingmessage'] = 'Üzenet(ek) áthelyezése...';
$messages['copyingmessage'] = 'Üzenet(ek) másolása...';
$messages['copyingcontact'] = 'Kapcsolat(ok) másolása...';
$messages['movingcontact'] = 'Kapcsolat(ok) áthelyezése...';
$messages['deletingmessage'] = 'Üzenet(ek) törlése....';
$messages['markingmessage'] = 'Üzenet(ek) megjelölése...';
$messages['addingmember'] = 'Kapcsolat(ok) hozzáadása a csoporthoz...';
$messages['removingmember'] = 'Kapcsolat(ok) törlése a csoportból...';
$messages['receiptsent'] = 'Az olvasási visszaigazolás el lett küldve';
$messages['errorsendingreceipt'] = 'Az olvasási visszaigazolást nem sikerült elküldeni';
$messages['deleteidentityconfirm'] = 'Biztosan törli ezt az azonosítót?';
$messages['nodeletelastidentity'] = 'Az azonosító nem törölhető, lennie kell legalább egy azonosítónak!';
$messages['forbiddencharacter'] = 'A mappa neve tiltott karaktert tartalmaz';
$messages['selectimportfile'] = 'Kérjük válassza ki a feltölteni kívánt fájlt';
$messages['addresswriterror'] = 'A kiválasztott címjegyzék nem írható';
$messages['contactaddedtogroup'] = 'A kapcsolat hozzáadása a csoporthoz sikeresen megtörtént';
$messages['contactremovedfromgroup'] = 'A kapcsolat törlése a csoportból sikeresen megtörtént';
$messages['nogroupassignmentschanged'] = 'A csoport hozzárendelések nem változtak.';
$messages['importwait'] = 'Importálás folyamatban, kérem várjon...';
$messages['importformaterror'] = 'Az importálás sikertelen! A feltöltött fájl ismeretlen formátumú.';
$messages['importconfirm'] = '<b>Sikeresen importálásra került $inserted kapcsolat, kihagyva $skipped már létező bejegyzés</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Kihagyva $skipped már létező bejegyzés</b>';
$messages['importmessagesuccess'] = 'Sikeresen importálva $nr üzenet';
$messages['importmessageerror'] = 'Sikertelen az importálás. A feltöltött file nem értelmezhető üzenetként vagy postafiók (mailbox) fileként.';
$messages['opnotpermitted'] = 'A művelet nem megengedett!';
$messages['nofromaddress'] = 'Hiányzik az email cím a kiválasztott identitásban.';
$messages['editorwarning'] = 'A szerkesztő tipusok közötti váltás a szöveg formázásának elvesztésével járhat. Biztos szeretnéd folytatni?';
$messages['httpreceivedencrypterror'] = 'Végzetes konfigurációs hiba történt, azonnal lépjen kapcsolatba az üzemeltetővel. <b>Az üzenet nem küldhető el.</b>';
$messages['smtpconnerror'] = 'SMTP hiba ($code): Sikertelen kapcsolódás a szerverhez';
$messages['smtpautherror'] = 'SMTP hiba ($code): Sikertelen bejelentkezés';
$messages['smtpfromerror'] = 'SMTP hiba ($code): Nem sikerült a feladó beállítása: "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP hiba ($code): Nem sikerült a következő címzett hozzáadása: "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP hiba ($code): A címzettlista feldolgozása sikertelen';
$messages['smtputf8error'] = 'SMTP hiba: A kiszolgáló nem támogatja a Unicode karaktereket az email címben.';
$messages['smtpsizeerror'] = 'SMTP hiba: Az üzenet mérete elérte a kiszálgáló által engedélyzett maximális méretet ($limit)';
$messages['smtperror'] = 'SMTP hiba ($code): $msg';
$messages['emailformaterror'] = 'Érvénytelen email cím: $email';
$messages['toomanyrecipients'] = 'Túl sok a címzett. Csökkentse a címzettek számát maximum $max címre!';
$messages['maxgroupmembersreached'] = 'A csoport létszáma meghaladja a maximum $max főt';
$messages['internalerror'] = 'Belső hiba történt. Kérjük próbálja újra!';
$messages['contactdelerror'] = 'Hiba a kapcsolat(ok) törlésekor';
$messages['contactdeleted'] = 'Kapcsolat(ok) sikeresen törölve';
$messages['contactrestoreerror'] = 'Nem sikerült a törölt kapcsolat(ok) helyreállítása';
$messages['contactrestored'] = 'Kapcsolat(ok) sikeresen helyreállítva';
$messages['groupdeleted'] = 'Csoport sikeresen törölve';
$messages['grouprenamed'] = 'Csoport sikeresen átnevezve';
$messages['groupcreated'] = 'Csoport sikeresen létrehozva';
$messages['savedsearchdeleted'] = 'Mentett keresés sikeresen törölve';
$messages['savedsearchdeleteerror'] = 'Nem sikerült törölni a mentett keresést';
$messages['savedsearchcreated'] = 'Keresés sikeresen mentve';
$messages['savedsearchcreateerror'] = 'Nem sikerült létrehozni mentett keresést';
$messages['messagedeleted'] = 'Üzenet(ek) sikeresen törölve';
$messages['messagemoved'] = 'Üzenet(ek) sikeresen áthelyezve.';
$messages['messagemovedtotrash'] = 'Üzenet(ek) sikeresen áthelyezve a kukába.';
$messages['messagecopied'] = 'Üzenet(ek) sikeresen másolva';
$messages['messagemarked'] = 'Üzenet(ek) sikeresen megjelölve';
$messages['autocompletechars'] = 'Az automatikus kiegészítéshez legalább $min karakter szükséges';
$messages['autocompletemore'] = 'Több egyezés található. Kérem adjon meg további karaktereket!';
$messages['namecannotbeempty'] = 'A név nem lehet üres';
$messages['nametoolong'] = 'A név túl hosszú';
$messages['namedotforbidden'] = 'A mappa neve nem kezdődhet ponttal.';
$messages['folderupdated'] = 'Mappa sikeresen frissítve';
$messages['foldercreated'] = 'Mappa sikeresen létrehozva';
$messages['invalidimageformat'] = 'Érvénytelen képformátum';
$messages['mispellingsfound'] = 'Az üzenetben helyesírási hibák találhatók';
$messages['parentnotwritable'] = 'Nem sikerült a mappa létrehozása/áthelyezése a kijelölt főmappába. Nincs jogosultsága a művelethez!';
$messages['messagetoobig'] = 'Az üzenetrész túl nagy a feldolgozáshoz.';
$messages['attachmentvalidationerror'] = 'FIGYELEM! A csatalmány veszélyes lehet, mert a típusa nem egyezik az üzenetben beállított típussal. Amennyiben nem megbizható az üzenet küldője, ne nyissa meg a csatolmányt a böngészőben, mert ártalmas lehet a tartalma.<br/><br/><em>Üzenetben beállított tipus: $expected; az érzékelt típus: $detected</em>';
$messages['noscriptwarning'] = 'FIGYELEM: Ez webmail szolgáltatása igényli a Javascript futtatásának a lehetőségét! Amennyiben használni szeretné, engedélyezze a JavaScript futtatását a böngészőjének a beállításaiban.';
$messages['messageissent'] = 'Az üzenet már el lett küldve, de még nincs elmentve. El akarod menteni most?';
$messages['errnotfound'] = 'File nem található';
$messages['errnotfoundexplain'] = 'A kért erőforrás nem található!';
$messages['errfailedrequest'] = 'Hibás kérés';
$messages['errauthorizationfailed'] = 'Azonosítás sikertelen';
$messages['errunauthorizedexplain'] = 'Nem sikerült ellenőrizni, hogy a szolgáltatás használata engdélyezett-e számodra';
$messages['errrequestcheckfailed'] = 'Kérés Ellenörzés Sikertlelen';
$messages['errcsrfprotectionexplain'] = "Az Ön védelme érdekében a hozzáférést ehhez az erőforráshoz biztosítva van CSRF védelemmel. \nHa ezt látja, akkor valószínűleg nem jelentkezett ki, mielőtt elhagyta a webes alkalmazást. \n\nEmberi közbeavatkozás szükség most ahoz, hogy folytassa.";
$messages['errcontactserveradmin'] = 'Vedd fel a kapcsolatot a rendszergazdával.';
$messages['clicktoresumesession'] = 'Kattints ide az előző munkamenet folytatásához';
$messages['errcomposesession'] = 'Levélíró munkanmenet hiba';
$messages['errcomposesessionexplain'] = 'A kért levélíró munkamenet nem található.';
$messages['clicktocompose'] = 'Kattints ide új üzenet létrehozásához';
$messages['nosupporterror'] = 'Ezt a funkciót a webböngésző nem támogatja.';
$messages['siginserted'] = 'Az aláírás sikeresen beillesztve.';
$messages['responseinserted'] = 'A válasz sikeresen beillesztve.';
$messages['noresponsesavailable'] = 'Nincs érvényes válasz ';
$messages['listempty'] = 'A lista üres.';
$messages['listusebutton'] = 'Használd a Létrehozás gombot, hogy hozzáadj egy új rekordot.';
$messages['keypaircreatesuccess'] = 'Az új kulcspár sikeresen létre lett hozva a következőnek: $identity';
$messages['emptyattachment'] = 'Ez a csatolmány üresnek tünik.<br>Érdeklődj annál, aki ezt küldte.';
$messages['oauthloginfailed'] = 'Az OAUTH bejelentkezés meghiúsult. Próbáld újra.';
localization/nl_NL/timezones.inc000064400000047323151727150570012771 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Abbeba';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentinië';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico Stad';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Noordpoolgebied';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Azië';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beiroet';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jeruzalem';
$labels['tz:asia:kabul'] = 'Kaboel';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Koeweit';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantische oceaan';
$labels['tz:atlantic:azores'] = 'Azoren';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canarische eilanden';
$labels['tz:atlantic:cape_verde'] = 'Kaap Verdië';
$labels['tz:atlantic:faroe'] = 'Faröer eilanden';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australië';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athene';
$labels['tz:europe:belgrade'] = 'Belgrado';
$labels['tz:europe:berlin'] = 'Berlijn';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussel';
$labels['tz:europe:bucharest'] = 'Boekarest';
$labels['tz:europe:budapest'] = 'Boedapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Kopenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lissabon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'Londen';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moskou';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Parijs';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praag';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vaticaanstad';
$labels['tz:europe:vienna'] = 'Wenen';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warschau';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'Indische oceaan';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldiven';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Grote oceaan';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Paaseiland';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/nl_NL/labels.inc000064400000101264151727150570012211 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Welkom bij $product';
$labels['username'] = 'Gebruikersnaam';
$labels['password'] = 'Wachtwoord';
$labels['server'] = 'Server';
$labels['login'] = 'Inloggen';
$labels['oauthlogin'] = 'Login met $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Uitloggen';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Instellingen';
$labels['addressbook'] = 'Adresboek';
$labels['darkmode'] = 'Donkere modus';
$labels['lightmode'] = 'Lichte modus';
$labels['inbox'] = 'Postvak In';
$labels['drafts'] = 'Concepten';
$labels['sent'] = 'Verzonden';
$labels['trash'] = 'Prullenbak';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Toon echte namen voor speciale mappen';
$labels['subject'] = 'Onderwerp';
$labels['from'] = 'Afzender';
$labels['sender'] = 'Afzender';
$labels['to'] = 'Ontvanger';
$labels['cc'] = 'Kopie';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Antwoord-aan';
$labels['followupto'] = 'Followup-Aan';
$labels['date'] = 'Datum';
$labels['size'] = 'Grootte';
$labels['priority'] = 'Prioriteit';
$labels['organization'] = 'Organisatie';
$labels['readstatus'] = 'Gelezen?';
$labels['listoptions'] = 'Lijstopties...';
$labels['listoptionstitle'] = 'Lijst Opties';
$labels['mailboxlist'] = 'Mappen';
$labels['messagesfromto'] = 'Bericht $from t/m $to van $count';
$labels['threadsfromto'] = 'Conversatie $from t/m $to van $count';
$labels['messagenrof'] = 'Bericht $nr van $count';
$labels['fromtoshort'] = '$from – $to van $count';
$labels['copy'] = 'Kopiëren';
$labels['move'] = 'Verplaats';
$labels['moveto'] = 'Verplaats naar...';
$labels['copyto'] = 'Kopiëren naar...';
$labels['download'] = 'Download';
$labels['open'] = 'Openen';
$labels['showattachment'] = 'Toon';
$labels['showanyway'] = 'Laat toch zien';
$labels['filename'] = 'Bestandsnaam';
$labels['filesize'] = 'Bestandsgrootte';
$labels['addtoaddressbook'] = 'Toevoegen aan adresboek';
$labels['sun'] = 'Zo';
$labels['mon'] = 'Ma';
$labels['tue'] = 'Di';
$labels['wed'] = 'Wo';
$labels['thu'] = 'Do';
$labels['fri'] = 'Vr';
$labels['sat'] = 'Za';
$labels['sunday'] = 'zondag';
$labels['monday'] = 'maandag';
$labels['tuesday'] = 'dinsdag';
$labels['wednesday'] = 'woensdag';
$labels['thursday'] = 'donderdag';
$labels['friday'] = 'vrijdag';
$labels['saturday'] = 'zaterdag';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mrt';
$labels['apr'] = 'apr';
$labels['may'] = 'mei';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'aug';
$labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
$labels['longjan'] = 'januari';
$labels['longfeb'] = 'februari';
$labels['longmar'] = 'maart';
$labels['longapr'] = 'april';
$labels['longmay'] = 'mei';
$labels['longjun'] = 'juni';
$labels['longjul'] = 'juli';
$labels['longaug'] = 'augustus';
$labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
$labels['today'] = 'Vandaag';
$labels['refresh'] = 'Vernieuwen';
$labels['checkmail'] = 'Controleer op nieuwe berichten';
$labels['compose'] = 'Opstellen';
$labels['writenewmessage'] = 'Maak een nieuw bericht';
$labels['reply'] = 'Beantwoorden';
$labels['replytomessage'] = 'Beantwoord het bericht';
$labels['replytoallmessage'] = 'Beantwoord lijst of afzender en alle ontvangers';
$labels['replyall'] = 'Beantwoord iedereen';
$labels['replylist'] = 'Beantwoord lijst';
$labels['forward'] = 'Doorsturen';
$labels['forwardinline'] = 'Doorsturen in bericht';
$labels['forwardattachment'] = 'Doorsturen als bijlage';
$labels['forwardmessage'] = 'Bericht doorsturen';
$labels['bouncemsg'] = 'Opnieuw verzenden (kaatsen)';
$labels['bounce'] = 'Opnieuw verzenden';
$labels['deletemessage'] = 'Verwijder het bericht';
$labels['movemessagetotrash'] = 'Verplaats het bericht naar de prullenbak';
$labels['printmessage'] = 'Dit bericht afdrukken';
$labels['previousmessage'] = 'Toon het vorige bericht';
$labels['firstmessage'] = 'Toon het eerste bericht';
$labels['nextmessage'] = 'Toon het volgende bericht';
$labels['lastmessage'] = 'Toon het laatste bericht';
$labels['backtolist'] = 'Terug naar berichtenoverzicht';
$labels['viewsource'] = 'Toon bron';
$labels['mark'] = 'Markeren';
$labels['markmessages'] = 'Markeer berichten';
$labels['markread'] = 'Gelezen';
$labels['markunread'] = 'Ongelezen';
$labels['markflagged'] = 'Gemarkeerd';
$labels['markunflagged'] = 'Niet-gemarkeerd';
$labels['markundeleted'] = 'Als niet verwijderd';
$labels['moreactions'] = 'Meer acties...';
$labels['markallread'] = 'Markeer alles als gelezen';
$labels['folders-cur'] = 'Alleen geselecteerde map ';
$labels['folders-sub'] = 'Geselecteerde map en sub-mapppen';
$labels['folders-all'] = 'Alle mappen';
$labels['more'] = 'Meer';
$labels['back'] = 'Terug';
$labels['options'] = 'Opties';
$labels['composeoptions'] = 'Opties voor opstellen';
$labels['optionsandattachments'] = 'Opties en bijlages';
$labels['actions'] = 'Acties';
$labels['first'] = 'Eerste';
$labels['last'] = 'Laatste';
$labels['previous'] = 'Vorige';
$labels['next'] = 'Volgende';
$labels['select'] = 'Selecteer';
$labels['selection'] = 'Selectie';
$labels['all'] = 'Allemaal';
$labels['none'] = 'Geen';
$labels['currpage'] = 'Huidige pagina';
$labels['isread'] = 'Gelezen';
$labels['unread'] = 'Ongelezen';
$labels['flagged'] = 'Gemarkeerd';
$labels['unflagged'] = 'Ongemarkeerd';
$labels['unanswered'] = 'Onbeantwoord';
$labels['withattachment'] = 'Met bijlage';
$labels['deleted'] = 'Verwijderd';
$labels['undeleted'] = 'Niet verwijderd';
$labels['replied'] = 'Beantwoord';
$labels['forwarded'] = 'Doorgestuurd';
$labels['invert'] = 'Selectie omkeren';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lijst';
$labels['threads'] = 'Conversaties';
$labels['expand-all'] = 'Alles uitklappen';
$labels['expand-unread'] = 'Ongelezen uitklappen';
$labels['collapse-all'] = 'Alles inklappen';
$labels['threaded'] = 'Conversaties';
$labels['showunread'] = 'Toon ongelezen berichten';
$labels['autoexpand_threads'] = 'Klap alle conversaties uit';
$labels['do_expand'] = 'alle conversaties';
$labels['expand_only_unread'] = 'alleen met ongelezen berichten';
$labels['fromto'] = 'Afzender/Ontvanger';
$labels['flag'] = 'Markeer';
$labels['attachment'] = 'Bijlage';
$labels['nonesort'] = 'Geen';
$labels['sentdate'] = 'Verzenddatum';
$labels['arrival'] = 'Ontvangstdatum';
$labels['asc'] = 'oplopend';
$labels['desc'] = 'aflopend';
$labels['listcolumns'] = 'Kolommen';
$labels['listsorting'] = 'Sorteer op kolom';
$labels['listorder'] = 'Sorteervolgorde';
$labels['listmode'] = 'Lijstweergave';
$labels['lmode'] = 'Lijst modus';
$labels['layout'] = 'Indeling';
$labels['layoutwidescreen'] = 'Breedbeeld';
$labels['layoutdesktop'] = 'Bureaublad';
$labels['layoutlist'] = 'Lijst';
$labels['layoutwidescreendesc'] = 'Breedbeeld (3 kolommen)';
$labels['layoutdesktopdesc'] = 'Bureaublad (Brede lijst en voorbeeld van bericht onder)';
$labels['layoutlistdesc'] = 'Lijst (geen voorbeeld van bericht)';
$labels['folderactions'] = 'Mapacties...';
$labels['compact'] = 'Opschonen';
$labels['empty'] = 'Legen';
$labels['importmessages'] = 'Berichten importeren';
$labels['mailimportdesc'] = 'U kunt e-mail uploaden met bestanden in <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME-</a> of <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>-formaat.';
$labels['mailimportzip'] = 'Meerdere bestanden kunnen gecomprimeerd worden in zip-bestanden.';
$labels['quota'] = 'Opslagverbruik';
$labels['unknown'] = 'onbekend';
$labels['unlimited'] = 'onbeperkt';
$labels['quotatype'] = 'Soort quotum';
$labels['quotatotal'] = 'Limiet';
$labels['quotaused'] = 'Gebruikt';
$labels['quotastorage'] = 'Schijfruimte';
$labels['quotamessage'] = 'Aantal berichten';
$labels['shortheaderdate'] = 'Op $date';
$labels['shortheaderto'] = 'Naar $to op $date';
$labels['shortheaderfrom'] = 'Van $from op $date';
$labels['quicksearch'] = 'Snel zoeken';
$labels['searchplaceholder'] = 'Zoeken...';
$labels['resetsearch'] = 'Wis zoekopdracht';
$labels['searchmod'] = 'Zoekopties';
$labels['msgtext'] = 'Gehele bericht';
$labels['body'] = 'Inhoud';
$labels['type'] = 'Type';
$labels['namex'] = 'Naam';
$labels['searchscope'] = 'Zoekbereik';
$labels['currentfolder'] = 'Huidige map';
$labels['subfolders'] = 'Deze en onderliggende mappen';
$labels['allfolders'] = 'Alle mappen';
$labels['searchinterval-1W'] = 'ouder dan een week';
$labels['searchinterval-1M'] = 'ouder dan een maand';
$labels['searchinterval-1Y'] = 'ouder dan een jaar';
$labels['searchinterval1W'] = 'nieuwer dan een week';
$labels['searchinterval1M'] = 'nieuwer dan een maand';
$labels['searchinterval1Y'] = 'nieuwer dan een jaar';
$labels['openinextwin'] = 'Openen in een nieuw venster';
$labels['emlsave'] = 'Opslaan (.eml)';
$labels['changeformattext'] = 'Weergeven als platte tekst';
$labels['changeformathtml'] = 'Weergeven als opgemaakte tekst (HTML)';
$labels['editasnew'] = 'Als nieuw bewerken';
$labels['send'] = 'Verzenden';
$labels['sendmessage'] = 'Verstuur bericht';
$labels['savemessage'] = 'Bewaar als concept';
$labels['addattachment'] = 'Bijlage toevoegen';
$labels['charset'] = 'Tekenset';
$labels['editortype'] = 'Soort tekstverwerker';
$labels['returnreceipt'] = 'Ontvangstbevestiging';
$labels['dsn'] = 'Afleveringsbericht (DSN)';
$labels['mailreplyintro'] = '$sender schreef op $date:';
$labels['originalmessage'] = 'Oorspronkelijke bericht';
$labels['selectimage'] = 'Selecteer afbeelding';
$labels['addimage'] = 'Afbeelding toevoegen';
$labels['selectmedia'] = 'Video selecteren';
$labels['addmedia'] = 'Film toevoegen';
$labels['encrypt'] = 'Versleutel';
$labels['encryptmessage'] = 'Versleutel bericht';
$labels['encryptmessagemailvelope'] = 'Versleutel bericht met Mailvelope';
$labels['importpubkeys'] = 'Publieke sleutels importeren';
$labels['encryptedsendialog'] = 'Versleuteld bericht versturen';
$labels['encryptandsign'] = 'Versleutelen en ondertekenen';
$labels['keyid'] = 'Sleutel ID';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Verlopen';
$labels['keyrevoked'] = 'Ingetrokken';
$labels['bccinstead'] = 'Bcc gebruiken';
$labels['addheader'] = 'Ontvanger toevoegen (header)';
$labels['insert'] = 'Invoegen';
$labels['insertcontact'] = 'Contact(en) invoegen';
$labels['recipient'] = 'Ontvanger';
$labels['recipientedit'] = 'Ontvanger aanpassen';
$labels['editidents'] = 'Identiteiten bewerken';
$labels['spellcheck'] = 'Spelling';
$labels['checkspelling'] = 'Controleer spelling';
$labels['resumeediting'] = 'Doorgaan met opstellen';
$labels['revertto'] = 'Terugwijzigen in';
$labels['restore'] = 'Herstellen';
$labels['restoremessage'] = 'Bericht herstellen?';
$labels['ignore'] = 'Negeren';
$labels['responses'] = 'Reacties';
$labels['insertresponse'] = 'Reactie invoegen';
$labels['manageresponses'] = 'Reacties beheren';
$labels['newresponse'] = 'Nieuw antwoord aanmaken';
$labels['addresponse'] = 'Antwoord toevoegen';
$labels['editresponse'] = 'Bewerk reactie';
$labels['editresponses'] = 'Bewerk reactie';
$labels['responsename'] = 'Naam';
$labels['responsetext'] = 'Reactie';
$labels['attach'] = 'Bijvoegen';
$labels['attachments'] = 'Bijlagen';
$labels['upload'] = 'Toevoegen';
$labels['uploadprogress'] = '$percent ($current van $total)';
$labels['close'] = 'Sluit';
$labels['messageoptions'] = 'Berichtopties...';
$labels['togglecomposeoptions'] = 'Wissel opties voor opstellen';
$labels['attachmentrename'] = 'Hernoem bijlage';
$labels['low'] = 'Laag';
$labels['lowest'] = 'Laagste';
$labels['normal'] = 'Normaal';
$labels['high'] = 'Hoog';
$labels['highest'] = 'Hoogste';
$labels['nosubject'] = '(geen onderwerp)';
$labels['showimages'] = 'Toon afbeeldingen';
$labels['allow'] = 'Toestaan';
$labels['alwaysshow'] = 'Afbeeldingen van $sender altijd tonen';
$labels['alwaysallow'] = 'Altijd van $sender toestaan';
$labels['isdraft'] = 'Dit is een conceptbericht.';
$labels['andnmore'] = '$nr meer...';
$labels['details'] = 'Details';
$labels['summary'] = 'Overzicht';
$labels['headers'] = 'Headers';
$labels['allheaders'] = 'Alle headers...';
$labels['togglemoreheaders'] = 'Toon meer berichtheaders';
$labels['togglefullheaders'] = 'Originele berichtheaders aan/uit';
$labels['htmltoggle'] = 'Opgemaakt (HTML)';
$labels['plaintoggle'] = 'Platte tekst';
$labels['savesentmessagein'] = 'Bewaar verzonden bericht in';
$labels['dontsave'] = 'niet bewaren';
$labels['maxuploadsize'] = 'Maximum toegestane bestandsgrootte is $size';
$labels['addcc'] = 'Cc toevoegen';
$labels['addbcc'] = 'Bcc toevoegen';
$labels['addreplyto'] = 'Antwoord-aan toevoegen';
$labels['addfollowupto'] = 'Followup-To toevoegen';
$labels['sendreceipt'] = 'Leesbevestiging verzenden?';
$labels['mdnrequest'] = 'De afzender van dit bericht heeft gevraagd een melding te ontvangen wanneer u dit bericht heeft gelezen. Wilt u deze melding verzenden?';
$labels['receiptread'] = 'Ontvangstbevestiging (gelezen)';
$labels['yourmessage'] = 'Dit is een ontvangstbevestiging voor uw bericht';
$labels['receiptnote'] = 'Let op: Dit bevestigt alleen dat uw bericht bij de geadresseerde is weergegeven. Er is geen garantie dat de geadresseerde het bericht daadwerkelijk heeft gelezen of de inhoud ervan heeft begrepen.';
$labels['sendalwaysto'] = 'Altijd versturen naar $email';
$labels['zoomin'] = 'Inzoomen';
$labels['zoomout'] = 'Uitzoomen';
$labels['rotate'] = 'Draaien';
$labels['increaseimage'] = 'Afbeelding vergroten';
$labels['decreaseimage'] = 'Afbeelding verkleinen';
$labels['rotateimage'] = 'Afbeelding draaien';
$labels['showtools'] = 'Afbeelding opties weergeven';
$labels['hidetools'] = 'Afbeelding opties verbergen';
$labels['name'] = 'Weergavenaam';
$labels['firstname'] = 'Voornaam';
$labels['surname'] = 'Achternaam';
$labels['middlename'] = 'Tweede naam';
$labels['nameprefix'] = 'Voorvoegsel';
$labels['namesuffix'] = 'Achtervoegsel';
$labels['nickname'] = 'Bijnaam';
$labels['jobtitle'] = 'Functietitel';
$labels['department'] = 'Afdeling';
$labels['gender'] = 'Geslacht';
$labels['maidenname'] = 'Meisjesnaam';
$labels['email'] = 'E-mail';
$labels['phone'] = 'Telefoon';
$labels['address'] = 'Adres';
$labels['street'] = 'Straat';
$labels['locality'] = 'Stad';
$labels['zipcode'] = 'Postcode';
$labels['region'] = 'Provincie/staat';
$labels['country'] = 'Land';
$labels['birthday'] = 'Geboortedatum';
$labels['anniversary'] = 'Gedenkdatum';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Opmerkingen';
$labels['male'] = 'Man';
$labels['female'] = 'Vrouw';
$labels['manager'] = 'Leidinggevende';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Echtgenoot';
$labels['allfields'] = 'Alle velden';
$labels['search'] = 'Zoeken';
$labels['searchresult'] = 'Zoekresultaat';
$labels['advsearch'] = 'Geavanceerd zoeken';
$labels['advanced'] = 'Geavanceerd';
$labels['other'] = 'Anders';
$labels['printcontact'] = 'Contactpersoon printen';
$labels['qrcode'] = 'QR-code';
$labels['typehome'] = 'Thuis';
$labels['typework'] = 'Werk';
$labels['typeother'] = 'Anders';
$labels['typemobile'] = 'Mobiel';
$labels['typemain'] = 'Belangrijkste';
$labels['typehomefax'] = 'Fax thuis';
$labels['typeworkfax'] = 'Fax werk';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pieper';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Website';
$labels['typeblog'] = 'Weblog';
$labels['typeprofile'] = 'Profiel';
$labels['addfield'] = 'Veld toevoegen...';
$labels['addcontact'] = 'Contact toevoegen';
$labels['editcontact'] = 'Contactpersoon wijzigen';
$labels['contacts'] = 'Contactpersonen';
$labels['contactproperties'] = 'Gegevens van contactpersoon';
$labels['contactnameandorg'] = 'Naam en organisatie';
$labels['personalinfo'] = 'Persoonlijke informatie';
$labels['personal'] = 'Persoonlijk';
$labels['contactphoto'] = 'Contactfoto';
$labels['edit'] = 'Wijzig';
$labels['cancel'] = 'Annuleren';
$labels['save'] = 'Opslaan';
$labels['delete'] = 'Verwijder';
$labels['discard'] = 'Weggooien';
$labels['continue'] = 'Doorgaan';
$labels['ok'] = 'OK';
$labels['rename'] = 'Hernoemen';
$labels['addphoto'] = 'Toevoegen';
$labels['replacephoto'] = 'Vervangen';
$labels['uploadphoto'] = 'Foto uploaden';
$labels['choosefile'] = 'Kies bestand...';
$labels['choosefiles'] = 'Kies bestanden...';
$labels['browse'] = 'Blader';
$labels['newcontact'] = 'Nieuw contact aanmaken';
$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
$labels['composeto'] = 'Stuur een bericht naar';
$labels['contactsfromto'] = 'Contactpersonen $from t/m $to van $count';
$labels['print'] = 'Afdrukken';
$labels['export'] = 'Exporteren';
$labels['exportall'] = 'Alles exporteren';
$labels['exportsel'] = 'Selectie exporteren';
$labels['exportvcards'] = 'Exporteer contactpersonen in vCard-formaat';
$labels['newgroup'] = 'Nieuwe groep maken';
$labels['addgroup'] = 'Groep toevoegen';
$labels['grouprename'] = 'Groep hernoemen';
$labels['groupdelete'] = 'Groep verwijderen';
$labels['groupassign'] = 'Aan groep toevoegen...';
$labels['groupremove'] = 'Van groep verwijderen...';
$labels['groupremoveselected'] = 'Verwijder geselecteerde contactpersonen van groep';
$labels['uponelevel'] = 'Een niveau omhoog';
$labels['previouspage'] = 'Vorige pagina';
$labels['firstpage'] = 'Eerste pagina';
$labels['nextpage'] = 'Volgende pagina';
$labels['lastpage'] = 'Laatste pagina';
$labels['group'] = 'Groep';
$labels['groups'] = 'Groepen';
$labels['listgroup'] = 'Toon groepsleden';
$labels['personaladrbook'] = 'Persoonlijk adresboek';
$labels['searchsave'] = 'Zoekopdracht opslaan';
$labels['searchdelete'] = 'Zoekopdracht verwijderen';
$labels['import'] = 'Importeren';
$labels['importcontacts'] = 'Contactpersonen importeren';
$labels['importfromfile'] = 'Importeer van bestand';
$labels['importtarget'] = 'Contacten toevoegen aan';
$labels['importreplace'] = 'Vervang het complete adresboek';
$labels['importgroups'] = 'Importeer groepstoewijzingen';
$labels['importgroupsall'] = 'Allemaal (maak groepen aan indien nodig)';
$labels['importgroupsexisting'] = 'Alleen voor bestaande groepen';
$labels['importdesc'] = 'U kunt contactpersonen uploaden van een bestaand adresboek.<br/>Op dit moment ondersteunen we het importeren van adresboeken in <a href="https://en.wikipedia.org/wiki/VCard">vCard-</a>en CSV-formaat (kommagescheiden tekstbestand).';
$labels['done'] = 'Klaar';
$labels['settingsfor'] = 'Instellingen voor';
$labels['about'] = 'Over';
$labels['preferences'] = 'Instellingen';
$labels['userpreferences'] = 'Gebruikersinstellingen';
$labels['editpreferences'] = 'Wijzig gebruikersinstellingen';
$labels['identities'] = 'Identiteiten';
$labels['manageidentities'] = 'Identiteiten beheren';
$labels['newidentity'] = 'Nieuwe identiteit';
$labels['addidentity'] = 'Identiteit toevoegen';
$labels['editidentity'] = 'Identiteit bewerken';
$labels['identityencryption'] = 'Versleuteling';
$labels['preferhtml'] = 'Toon berichten in HTML-opmaak';
$labels['defaultcharset'] = 'Standaard tekenset';
$labels['htmlmessage'] = 'HTML-bericht';
$labels['messagepart'] = 'Gedeelte';
$labels['digitalsig'] = 'Digitale handtekening';
$labels['dateformat'] = 'Datumnotatie';
$labels['timeformat'] = 'Tijdweergave';
$labels['prettydate'] = 'Leesbare datums';
$labels['setdefault'] = 'Stel in als standaard';
$labels['autodetect'] = 'Automatisch';
$labels['language'] = 'Taal';
$labels['timezone'] = 'Tijdzone';
$labels['pagesize'] = 'Aantal berichten per pagina';
$labels['signature'] = 'Ondertekening';
$labels['dstactive'] = 'Zomertijd';
$labels['showinextwin'] = 'Bericht in een nieuw venster openen';
$labels['composeextwin'] = 'In een nieuw venster bewerken';
$labels['htmleditor'] = 'Berichten opstellen in HTML-opmaak';
$labels['htmlonreply'] = 'alleen bij beantwoorden van HTML-berichten';
$labels['htmlonreplyandforward'] = 'bij doorsturen of beantwoorden van een HTML-bericht';
$labels['htmlsignature'] = 'HTML-ondertekening';
$labels['showemail'] = 'Toon e-mailadressen met weergavenaam';
$labels['previewpane'] = 'Toon voorbeeldvenster';
$labels['skin'] = 'Interfacestijl';
$labels['logoutclear'] = 'Prullenbak legen bij uitloggen';
$labels['logoutcompact'] = 'Postvak In opschonen bij uitloggen';
$labels['uisettings'] = 'Gebruikersinterface';
$labels['serversettings'] = 'Serverinstellingen';
$labels['mailboxview'] = 'Mailboxweergave';
$labels['mdnrequests'] = 'Ontvangstmeldingen';
$labels['askuser'] = 'altijd aan mij vragen';
$labels['autosend'] = 'stuur automatisch';
$labels['autosendknown'] = 'stuur automatisch naar mijn contactpersonen,  anders vragen';
$labels['autosendknownignore'] = 'stuur automatisch naar mijn contactpersonen,  anders negeren';
$labels['ignorerequest'] = 'negeer verzoek';
$labels['readwhendeleted'] = 'Bericht na verwijderen als gelezen markeren';
$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als \'te verwijderen\' markeren';
$labels['skipdeleted'] = 'Verwijderde berichten niet tonen';
$labels['deletealways'] = 'Verwijder bericht wanneer verplaatsen naar Prullenbak mislukt';
$labels['deletejunk'] = 'Verwijder direct berichten in Spam';
$labels['showremoteimages'] = 'Externe afbeeldingen weergeven';
$labels['allowremoteresources'] = 'Externe bronnen toestaan (afbeeldingen, stijlen)';
$labels['fromknownsenders'] = 'van bekende afzenders';
$labels['fromtrustedsenders'] = 'van vertrouwde afzenders';
$labels['frommycontacts'] = 'van mijn contactpersonen';
$labels['always'] = 'altijd';
$labels['alwaysbutplain'] = 'altijd, behalve bij antwoord in tekst zonder opmaak';
$labels['showinlineimages'] = 'Bijgevoegde afbeeldingen onder het bericht weergeven';
$labels['autosavedraft'] = 'Concept automatisch opslaan';
$labels['everynminutes'] = 'iedere $n minuten';
$labels['refreshinterval'] = 'Vernieuwen (controleer op nieuwe berichten, etc.)';
$labels['never'] = 'nooit';
$labels['immediately'] = 'onmiddellijk';
$labels['messagesdisplaying'] = 'Berichtenweergave';
$labels['messagescomposition'] = 'Berichten opstellen';
$labels['mimeparamfolding'] = 'Namen van bijlagen';
$labels['2231folding'] = 'Volledig RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Volledig RFC 2047 (andere)';
$labels['force7bit'] = 'Gebruik MIME-codering voor 8-bit karakters';
$labels['savelocalstorage'] = "Opslaan in de lokale opslag van de browser (tijdelijk)";
$labels['advancedoptions'] = 'Geavanceerde opties';
$labels['toggleadvancedoptions'] = 'Geavanceerde opties inschakelen';
$labels['focusonnewmessage'] = 'Focus browserscherm bij nieuw bericht';
$labels['checkallfolders'] = 'In alle mappen op nieuwe berichten controleren';
$labels['displaynext'] = 'Laat volgende item in lijst zien na wissen/verplaatsen';
$labels['defaultfont'] = 'Standaardlettertype voor HTML-berichten';
$labels['mainoptions'] = 'Hoofdopties';
$labels['browseroptions'] = 'Browserinstellingen';
$labels['section'] = 'Sectie';
$labels['maintenance'] = 'Onderhoud';
$labels['newmessage'] = 'Nieuw bericht';
$labels['signatureoptions'] = 'Instellingen voor ondertekening';
$labels['whenreplying'] = 'Bij antwoorden';
$labels['replyempty'] = 'het oorspronkelijke bericht niet citeren';
$labels['replytopposting'] = 'begin bericht boven het origineel';
$labels['replytoppostingnoindent'] = 'begin nieuw bericht boven het origineel (geen inspringing)';
$labels['replybottomposting'] = 'begin bericht onder het origineel';
$labels['replyremovesignature'] = 'Verwijder oorspronkelijke ondertekening van bericht bij beantwoorden';
$labels['autoaddsignature'] = 'Ondertekening automatisch toevoegen';
$labels['newmessageonly'] = 'alleen bij nieuwe berichten';
$labels['replyandforwardonly'] = 'alleen bij antwoorden en doorsturen';
$labels['insertsignature'] = 'Ondertekening invoegen';
$labels['sigbelow'] = 'Plaats ondertekening onder het geciteerde bericht';
$labels['sigseparator'] = 'Forceer standaard scheidingsteken in ondertekeningen';
$labels['automarkread'] = 'Markeer berichten als gelezen';
$labels['afternseconds'] = 'na $n seconden';
$labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging';
$labels['reqdsn'] = 'Vraag altijd om een afleveringsbericht';
$labels['replysamefolder'] = 'Bewaar reacties in de map van het beantwoorde bericht';
$labels['defaultabook'] = 'Standaard adresboek';
$labels['autocompletesingle'] = 'Alternatieve e-mailadressen niet gebruiken bij automatisch aanvullen';
$labels['listnamedisplay'] = 'Contactpersonen weergeven als';
$labels['privatemode'] = 'Privé (Thuis)';
$labels['businessmode'] = 'Bedrijf (Werk)';
$labels['collectedaddresses'] = 'Verzamelde adressen';
$labels['collectedrecipients'] = 'Verzamelde ontvangers';
$labels['collectedrecipientsopt'] = 'Bewaar uitgaande ontvangers in';
$labels['collectedsendersopt'] = 'Bewaar vertrouwde afzenders in';
$labels['trustedsenders'] = 'Vertrouwde Afzenders';
$labels['spellcheckbeforesend'] = 'Controleer spelling voor het versturen van een bericht';
$labels['spellcheckoptions'] = 'Instellingen spellingscontrole';
$labels['spellcheckignoresyms'] = 'Negeer woorden met symbolen';
$labels['spellcheckignorenums'] = 'Negeer woorden met cijfers';
$labels['spellcheckignorecaps'] = 'Negeer woorden welke volledig uit hoofdletters bestaan';
$labels['addtodict'] = 'Voeg toe aan woordenboek';
$labels['mailtoprotohandler'] = 'Registreer protocolhandler voor mailto: links';
$labels['standardwindows'] = 'Behandel pop-ups als normale vensters';
$labels['forwardmode'] = 'Berichten doorsturen';
$labels['inline'] = 'invoegen';
$labels['asattachment'] = 'als bijlage';
$labels['replyallmode'] = 'Standaardactie van [Beantwoord iedereen]-knop';
$labels['replyalldefault'] = 'iedereen beantwoorden';
$labels['replyalllist'] = 'alleen maillijst beantwoorden (indien gevonden)';
$labels['allmessages'] = 'alle berichten';
$labels['olderxdays'] = 'ouder dan $x dagen';
$labels['folder'] = 'Map';
$labels['folders'] = 'Mappen';
$labels['foldername'] = 'Mapnaam';
$labels['subscribed'] = 'Geabonneerd';
$labels['messagecount'] = 'Berichten';
$labels['create'] = 'Nieuw';
$labels['createfolder'] = 'Nieuwe map maken';
$labels['managefolders'] = 'Beheer mappen';
$labels['specialfolders'] = 'Speciale mappen';
$labels['properties'] = 'Eigenschappen';
$labels['folderproperties'] = 'Mapeigenschappen';
$labels['parentfolder'] = 'Bovenliggende map';
$labels['location'] = 'Locatie';
$labels['info'] = 'Informatie';
$labels['getfoldersize'] = 'Klik om de omvang van de map te berekenen';
$labels['changesubscription'] = 'Klik om abonnering te wijzigen';
$labels['foldertype'] = 'Maptype';
$labels['personalfolder'] = 'Privémap';
$labels['otherfolder'] = 'Map van andere gebruiker';
$labels['sharedfolder'] = 'Publieke map';
$labels['findfolders'] = 'Zoek mappen';
$labels['findcontacts'] = 'Zoek contactpersonen';
$labels['findmail'] = 'Zoek berichten';
$labels['namespace.personal'] = 'Persoonlijk';
$labels['namespace.other'] = 'Andere gebruikers';
$labels['namespace.shared'] = 'Gedeeld';
$labels['dualuselabel'] = 'Bevat alleen';
$labels['dualusemail'] = 'berichten';
$labels['dualusefolder'] = 'mappen';
$labels['generate'] = 'Aanmaken';
$labels['encryptioncreatekey'] = 'Maak een nieuw sleutelpaar aan';
$labels['openmailvelopesettings'] = 'open Mailvelope Instellingen';
$labels['encryptionprivkeysinmailvelope'] = 'U heeft $nr overeenkomende privésleutels opgeslagen in Mailvelope';
$labels['encryptionnoprivkeysinmailvelope'] = 'Deze afzender zijn indentiteit heeft (nog) geen PGP-privésleutels opgeslagen in uw Mailvelope extensie. Wilt u deze aanmaken om versleuteling van berichten in te kunnen schakelen?';
$labels['encryption'] = 'Versleuteling';
$labels['sortby'] = 'Sorteer op';
$labels['sortasc'] = 'Sorteer oplopend';
$labels['sortdesc'] = 'Sorteer aflopend';
$labels['undo'] = 'Ongedaan maken';
$labels['installedplugins'] = 'Geïnstalleerde plug-ins';
$labels['plugin'] = 'Invoegtoepassing';
$labels['version'] = 'Versie';
$labels['source'] = 'Broncode';
$labels['destination'] = 'Bestemming';
$labels['license'] = 'Licentie';
$labels['support'] = 'Hulp nodig?';
$labels['savedsearches'] = 'Opgeslagen zoekacties';
$labels['dateformatY'] = 'JJJJ';
$labels['dateformaty'] = 'JJ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engels';
$labels['westerneuropean'] = 'West-Europees';
$labels['easterneuropean'] = 'Oost-Europees';
$labels['southeasterneuropean'] = 'Zuidoost Europees';
$labels['baltic'] = 'Baltisch';
$labels['cyrillic'] = 'Cyrillisch';
$labels['arabic'] = 'Arabisch';
$labels['greek'] = 'Grieks';
$labels['hebrew'] = 'Hebreeuws';
$labels['turkish'] = 'Turks';
$labels['nordic'] = 'Noord-Germaans';
$labels['thai'] = 'Thais';
$labels['celtic'] = 'Keltisch';
$labels['vietnamese'] = 'Vietnamees';
$labels['japanese'] = 'Japans';
$labels['korean'] = 'Koreaans';
$labels['chinese'] = 'Chinees';
$labels['arialabeltopnav'] = 'Vensterinstellingen';
$labels['arialabeltasknav'] = 'Applicatietaken';
$labels['arialabeltoolbar'] = 'Applicatiewerkbalk';
$labels['arialabellistnav'] = 'Lijst navigatie';
$labels['arialabelactivetask'] = 'Actieve taak';
$labels['arialabelmessagessearchfilter'] = 'Filter voor e-maillijst';
$labels['arialabelmailsearchform'] = 'Formulier voor berichten zoeken';
$labels['arialabelcontactsearchform'] = 'Zoekformulier voor contacten';
$labels['arialabelmailquicksearchbox'] = 'Zoekinvoer voor e-mail';
$labels['arialabelquicksearchbox'] = 'Zoekinvoer';
$labels['arialabelfoldersearchfilter'] = 'Zoekfilter voor mappenlijst';
$labels['arialabelfoldersearchform'] = 'Zoekformulier voor mappen';
$labels['arialabelfolderlist'] = 'Selectie van e-mailmap';
$labels['arialabelmessagelist'] = 'Lijst van e-mailberichten';
$labels['arialabelmailpreviewframe'] = 'Berichtweergave';
$labels['arialabelmailboxmenu'] = 'Menu voor mapacties';
$labels['arialabellistselectmenu'] = 'Menu voor lijstselectie';
$labels['arialabelthreadselectmenu'] = 'Menu voor conversatie-overzicht';
$labels['arialabelmessagelistoptions'] = 'Weergave- en sorteeropties voor berichtenlijst';
$labels['arialabelmailimportdialog'] = 'Dialoogvenster voor berichten importeren';
$labels['arialabelmessagenav'] = 'Berichtnavigatie';
$labels['arialabelmessagebody'] = 'Berichtinhoud';
$labels['arialabelmessageactions'] = 'Berichtacties';
$labels['arialabelcontactquicksearch'] = 'Zoekformulier voor contacten';
$labels['arialabelcontactsearchbox'] = 'Zoekinvoer voor contacten';
$labels['arialabelmessageheaders'] = 'Berichtheaders';
$labels['arialabelforwardingoptions'] = 'Opties voor doorsturen';
$labels['arialabelreplyalloptions'] = 'Opties voor iedereen beantwoorden';
$labels['arialabelmoremessageactions'] = 'Meer berichtacties';
$labels['arialabelmorecontactactions'] = 'Meer contacten acties';
$labels['arialabelmarkmessagesas'] = 'Geselecteerde berichten markeren als...';
$labels['arialabelcomposeoptions'] = 'Opties voor opstellen';
$labels['arialabelresponsesmenu'] = 'Menu voor standaardreacties';
$labels['arialabelattachmentuploadform'] = 'Uploadformulier voor bijlagen';
$labels['arialabelattachmentmenu'] = 'Opties voor bijlagen';
$labels['arialabelmailtomenu'] = 'opties voor email adressen';
$labels['arialabelattachmentpreview'] = 'Voorbeeldweergave van bijlagen';
$labels['ariasummarycomposecontacts'] = 'Lijst van contacten en groepen om als ontvanger te selecteren';
$labels['arialabelcontactexportoptions'] = 'Opties voor contacten exporteren';
$labels['arialabelabookgroupoptions'] = 'Adresboek-/groepopties';
$labels['arialabelpreferencesform'] = 'Formulier voor instellingen';
$labels['arialabelidentityeditfrom'] = 'Formulier voor identiteit bewerken';
$labels['arialabelresponseeditfrom'] = 'Formulier voor bewerken antwoord';
$labels['arialabelsearchterms'] = 'Zoekwoorden';
$labels['arialabeldropactionmenu'] = 'Sleep actie menu';
$labels['arialabelheadersmenu'] = 'Ontvanger (header) toevoegen menu';
$labels['arialabelimagetools'] = 'Afbeelding opties';
$labels['helplistnavigation'] = 'Overzicht met sneltoetsen';
$labels['helplistkeyboardnavigation'] = "Pijl omhoog/omlaag: Verander actieve rij of selectie.
Spatiebalk: Selecteer actieve rij.
Shift + omhoog/omlaag: Selecteer aanvullende rij boven/onder.
Ctrl + spatiebalk: Voeg actieve rij toe aan selectie of verwijder van selectie.";
$labels['helplistkeyboardnavmessages'] = "Pijl links/rechts: conversaties in- of uitklappen (alleen in conversatiemodus).
Enter: Open geselecteerd of actief bericht.
Delete: Verwijder geselecteerde berichten naar Prullenbak.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Open geselecteerd of actief contact.";
localization/nl_NL/messages.inc000064400000043133151727150570012556 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Er is een fout opgetreden!';
$messages['loginfailed']  = 'Aanmelden mislukt.';
$messages['cookiesdisabled'] = 'Uw browser accepteert geen cookies.';
$messages['sessionerror'] = 'Uw sessie is verlopen of ongeldig.';
$messages['cookiesmismatch'] = 'Cookie komt niet overeen, verwijder de cookies van uw browser.';
$messages['storageerror'] = 'Verbinding met IMAP-server mislukt.';
$messages['servererror'] = 'Serverfout!';
$messages['servererrormsg'] = 'Serverfout: $msg';
$messages['accountlocked'] = 'Te veel mislukte inlogpogingen. Probeer het later nogmaals.';
$messages['connerror'] = 'Verbindingsfout! (Kon de server niet bereiken)';
$messages['dberror'] = 'Databasefout!';
$messages['dbconnerror'] = 'Kan geen verbinding maken met de database!';
$messages['windowopenerror'] = 'Het popup-venster werd geblokkeerd!';
$messages['requesttimedout'] = 'Verzoek duurde te lang';
$messages['errorreadonly'] = 'De bewerking kan niet uitgevoerd worden. Map is alleen-lezen.';
$messages['errornoperm'] = 'Niet in staat om de bewerking uit te voeren. Toestemming geweigerd.';
$messages['erroroverquota'] = 'Niet in staat om de bewerking uit te voeren. Onvoldoende vrije opslagruimte.';
$messages['erroroverquotadelete'] = 'Onvoldoende vrije opslagruimte. Gebruik Shift+Del om een bericht te verwijderen.';
$messages['invalidrequest'] = 'Ongeldige aanvraag! Er zijn geen gegevens opgeslagen.';
$messages['invalidhost'] = 'Ongeldige servernaam.';
$messages['nomessagesfound'] = 'Geen berichten gevonden in deze mailbox.';
$messages['loggedout'] = 'Succesvol uitgelogd. Tot ziens!';
$messages['mailboxempty'] = 'Mailbox is leeg';
$messages['nomessages'] = 'Geen berichten';
$messages['refreshing'] = 'Vernieuwen...';
$messages['loading'] = 'Laden...';
$messages['uploading'] = 'Bestand wordt geüpload...';
$messages['attaching'] = 'Bestand aan het toevoegen...';
$messages['uploadingmany'] = 'Bestanden worden geüpload...';
$messages['loadingdata'] = 'Gegevens worden geladen...';
$messages['checkingmail'] = 'Controleren op nieuwe berichten...';
$messages['sendingmessage'] = 'Bericht wordt verstuurd...';
$messages['messagesent'] = 'Bericht succesvol verstuurd.';
$messages['savingmessage'] = 'Bericht wordt opgeslagen...';
$messages['messagesaved'] = 'Bericht opgeslagen in Concepten.';
$messages['successfullysaved'] = 'Succesvol opgeslagen.';
$messages['savingresponse'] = 'Reactie wordt opgeslagen...';
$messages['deleteresponseconfirm'] = 'Weet u zeker dat u deze reactie wilt verwijderen?';
$messages['nocontactselected'] = 'U heeft nog geen contactpersoon geselecteerd.';
$messages['addedsuccessfully'] = 'Contactpersoon succesvol toegevoegd aan het adresboek.';
$messages['contactexists'] = 'Er bestaat al een contactpersoon met hetzelfde e-mailadres.';
$messages['contactnameexists'] = 'Er bestaat al een contactpersoon met deze naam.';
$messages['blockedimages'] = 'Om uw privacy te beschermen zijn externe afbeeldingen geblokkeerd in dit bericht.';
$messages['blockedresources'] = 'Om uw privacy te beschermen zijn externe afbeeldingen geblokkeerd in dit bericht.';
$messages['encryptedmessage'] = 'Dit is een versleuteld bericht en kan niet weergegeven worden. Excuses!';
$messages['externalmessagedecryption'] = 'Dit is een versleuteld bericht en kan ontsleuteld worden met uw browserextensie.';
$messages['nopubkeyfor'] = 'Geen geldige publieke sleutel gevonden voor $email';
$messages['nopubkeyforsender'] = 'Geen geldige publieke sleutel gevonden voor uw afzenderidentiteit. Wilt u het bericht alleen voor de ontvangers versleutelen?';
$messages['encryptnoattachments'] = 'Al geüploade bijlagen kunnen niet worden versleuteld. Voeg ze alstublieft opnieuw toe aan de versleutelingsbewerker.';
$messages['searchpubkeyservers'] = 'Wilt u publieke sleutelservers doorzoeken voor de missende sleutels?';
$messages['encryptpubkeysfound'] = 'The volgende publieke sleutels zijn gevonden:';
$messages['keyservererror'] = 'Sleutel van keyserver ophalen is mislukt.';
$messages['keyimportsuccess'] = 'Publieke sleutel $key succesvol geïmporteerd in uw sleutelhanger.';
$messages['nocontactsfound'] = 'Geen contactpersonen gevonden.';
$messages['contactnotfound'] = 'Opgevraagde contactpersoon niet gevonden.';
$messages['contactsearchonly'] = 'Voer enkele zoektermen in om contactpersonen te zoeken van het geselecteerde adresboek.';
$messages['sendingfailed'] = 'Verzenden van bericht is mislukt.';
$messages['senttooquickly'] = 'Wacht alstublieft $sec seconde(n) voordat u dit bericht verstuurt.';
$messages['errorsavingsent'] = 'Er is een fout opgetreden tijdens het opslaan van het verzonden bericht.';
$messages['errorsaving'] = 'Er is een fout opgetreden tijdens het opslaan.';
$messages['errormoving'] = 'Kan bericht(en) niet verplaatsen.';
$messages['errorcopying'] = 'Kan bericht(en) niet kopiëren.';
$messages['errordeleting'] = 'Kan bericht(en) niet verwijderen.';
$messages['errormarking'] = 'Kan bericht(en) niet markeren.';
$messages['alerttitle'] = 'Let op';
$messages['confirmationtitle'] = 'Weet u zeker...';
$messages['deletecontactconfirm']  = 'Weet u zeker dat u de geselecteerde contact(en) wilt verwijderen?';
$messages['deletegroupconfirm']  = 'Weet u zeker dat u de geselecteerde groep wilt verwijderen?';
$messages['deletemessagesconfirm'] = 'Weet u zeker dat u de geselecteerde bericht(en) wilt verwijderen?';
$messages['deletefolderconfirm']  = 'Weet u zeker dat u deze map wilt verwijderen?';
$messages['movefolderconfirm']  = 'Wilt u deze map echt verplaatsen?';
$messages['purgefolderconfirm']  = 'Weet u zeker dat u alle berichten in deze map wilt verwijderen?';
$messages['contactdeleting'] = 'Bezig met verwijderen van contact(en)...';
$messages['groupdeleting'] = 'Groep wordt verwijderd...';
$messages['folderdeleting'] = 'Map wordt verwijderd...';
$messages['foldermoving'] = 'Map wordt verplaatst...';
$messages['foldersubscribing'] = 'Bezig met abonneren op map...';
$messages['folderunsubscribing'] = 'Abonnement op map wordt opgezegd...';
$messages['formincomplete'] = 'Het formulier was niet volledig ingevuld.';
$messages['noemailwarning'] = 'Geef een geldig e-mailadres op.';
$messages['nonamewarning']  = 'Vul een naam in.';
$messages['nopagesizewarning'] = 'Geef een paginagrootte op.';
$messages['nosenderwarning'] = 'Voer een e-mailadres van de afzender in.';
$messages['recipientsadded'] = 'Ontvanger(s) succesvol toegevoegd.';
$messages['norecipientwarning'] = 'Geef tenminste één ontvanger op.';
$messages['disclosedrecipwarning'] = 'Ontvangers zien alle e-mail adressen. Gebruik het Bcc veld om de privacy van anderen te beschermen.';
$messages['disclosedreciptitle'] = 'Te veel publiek ontvangers';
$messages['nosubjectwarning']  = 'U heeft geen onderwerp ingevoerd. Wilt u nu een onderwerp opgeven?';
$messages['nosubjecttitle']  = 'Geen onderwerp';
$messages['nobodywarning'] = 'Dit bericht zonder inhoud versturen?';
$messages['notsentwarning'] = 'Het bericht is niet verzonden of opgeslagen. Wilt u wijzigen verwerpen?';
$messages['restoresavedcomposedata'] = 'Eerder opgesteld, maar niet-verzonden bericht gevonden.\n\nOnderwerp: $subject\nOpgeslagen: $date\n\nWilt u dit bericht herstellen?';
$messages['nosearchname'] = 'Vul de naam of e-mailadres in van een contactpersoon.';
$messages['notuploadedwarning'] = 'Nog niet alle bijlagen zijn geüpload. Wacht even of annuleer de upload.';
$messages['searchsuccessful'] = '$nr berichten gevonden.';
$messages['contactsearchsuccessful'] = '$nr contactpersonen gevonden.';
$messages['searchnomatch'] = 'Zoekopdracht heeft geen resultaten opgeleverd.';
$messages['searching'] = 'Zoeken...';
$messages['checking'] = 'Controleren...';
$messages['stillsearching'] = 'Nog aan het zoeken...';
$messages['nospellerrors'] = 'Geen spelfouten gevonden.';
$messages['folderdeleted'] = 'Map succesvol verwijderd.';
$messages['foldersubscribed'] = 'Succesvol geabonneerd op map.';
$messages['folderunsubscribed'] = 'Abonnement op map succesvol opgezegd.';
$messages['folderpurged'] = 'Map succesvol geleegd.';
$messages['deletedsuccessfully'] = 'Met succes verwijderd.';
$messages['converting'] = 'Opmaak van bericht verwijderen...';
$messages['messageopenerror'] = 'Kan het bericht niet van de server laden.';
$messages['filelinkerror'] = 'Bestand toevoegen mislukt.';
$messages['fileuploaderror'] = 'Bestand uploaden mislukt.';
$messages['csvfilemismatch'] = 'Importeren van meerdere CSV-bestanden met verschillende velden wordt niet ondersteund.';
$messages['filesizeerror'] = 'Het bestand overschrijdt de maximale grootte van $size.';
$messages['filecounterror'] = 'Je kan maximaal $count bestanden uploaden per keer.';
$messages['msgsizeerror'] = 'Bestand toevoegen als bijlage mislukt. Maximale grootte van een bericht ($size) overschreden.';
$messages['msgsizeerrorfwd'] = 'De maximale grootte van een bericht ($size) is overschreden. $num bericht(en) zijn niet bijgevoegd. ';
$messages['copysuccess'] = '$nr contactpersonen succesvol gekopieerd.';
$messages['movesuccess'] = '$nr contactpersonen succesvol verplaatst.';
$messages['copyerror'] = 'Kon geen contactpersoon kopieren.';
$messages['moveerror'] = 'Kon geen contactpersoon verplaatsen.';
$messages['sourceisreadonly'] = 'Deze adresbron is alleen-lezen.';
$messages['errorsavingcontact'] = 'Kan contactpersoon niet opslaan.';
$messages['movingmessage'] = 'Bericht(en) verplaatsen...';
$messages['copyingmessage'] = 'Bericht(en) kopiëren...';
$messages['copyingcontact'] = 'Contact(en) kopiëren...';
$messages['movingcontact'] = 'Contact(en) verplaatsen...';
$messages['deletingmessage'] = 'Bericht(en) verwijderen...';
$messages['markingmessage'] = 'Bericht(en) markeren...';
$messages['addingmember'] = 'Contactpersonen worden toegevoegd aan groep...';
$messages['removingmember'] = 'Contactpersonen worden verwijderd uit groep...';
$messages['receiptsent'] = 'Ontvangstbevestiging is verstuurd.';
$messages['errorsendingreceipt'] = 'Kan de ontvangstbevestiging niet versturen.';
$messages['deleteidentityconfirm'] = 'Weet u zeker dat u deze identiteit wilt verwijderen?';
$messages['nodeletelastidentity'] = 'U kunt uw enige identiteit niet verwijderen.';
$messages['forbiddencharacter'] = 'De naam van de map bevat een karakter dat niet is toegestaan.';
$messages['selectimportfile'] = 'Selecteer een bestand om te uploaden.';
$messages['addresswriterror'] = 'Het geselecteerde adresboek is alleen-lezen.';
$messages['contactaddedtogroup'] = 'Contact(en) met succes toegevoegd aan deze groep.';
$messages['contactremovedfromgroup'] = 'Contact(en) met succes verwijderd van deze groep.';
$messages['nogroupassignmentschanged'] = 'Geen groepstoewijzingen aangepast.';
$messages['importwait'] = 'Importeren, even geduld...';
$messages['importformaterror'] = 'Importeren mislukt! Het geüploade bestand is geen geldig importbestand.';
$messages['importconfirm'] = '<b>$inserted contactpersonen succesvol geïmporteerd</b>';
$messages['importconfirmskipped'] = '<b>$skipped bestaande contactpersonen overgeslagen</b>';
$messages['importmessagesuccess'] = '$nr berichten succesvol geïmporteerd';
$messages['importmessageerror'] = 'Importeren mislukt! Het verstuurde bestand is geen geldig bericht of mailboxbestand';
$messages['opnotpermitted'] = 'Deze bewerking is niet toegestaan!';
$messages['nofromaddress'] = 'E-mailadres ontbreekt in geselecteerde identiteit.';
$messages['editorwarning'] = 'Door te wisselen van type tekstverwerker kan er opmaak verloren gaan. Weet u zeker dat u verder wilt gaan?';
$messages['httpreceivedencrypterror'] = 'Er is een onherstelbare configuratiefout opgetreden. Neem direct contact op met uw systeembeheerder. <b>Uw bericht kon niet worden verzonden.</b>';
$messages['smtpconnerror'] = 'SMTP-fout ($code): Verbinding met server mislukt.';
$messages['smtpautherror'] = 'SMTP-fout ($code): Authenticatie mislukt.';
$messages['smtpfromerror'] = 'SMTP-fout ($code): Afzender "$from" kan niet ingesteld worden ($msg).';
$messages['smtptoerror'] = 'SMTP-fout ($code): Ontvanger "$to" kan niet toegevoegd worden ($msg).';
$messages['smtprecipientserror'] = 'SMTP-fout: Lijst met ontvangers kan niet verwerkt worden.';
$messages['smtputf8error'] = 'SMTP-fout: server ondersteunt geen Unicode in het e-mailadres.';
$messages['smtpsizeerror'] = 'SMTP-fout: berichtgrootte overschrijdt de serverlimit ($limit)';
$messages['smtperror'] = 'SMTP-fout: $msg';
$messages['emailformaterror'] = 'Ongeldig e-mailadres: $email';
$messages['toomanyrecipients'] = 'Te veel ontvangers. Reduceer het aantal ontvangers tot $max.';
$messages['maxgroupmembersreached'] = 'Het aantal groepsleden overschrijdt het maximale aantal van $max.';
$messages['internalerror'] = 'Er is een interne fout opgetreden. Probeer het nogmaals.';
$messages['contactdelerror'] = 'Contact(en) konden niet verwijderd worden.';
$messages['contactdeleted'] = 'Contact(en) succesvol verwijderd.';
$messages['contactrestoreerror'] = 'Verwijderde contact(en) konden niet hersteld worden.';
$messages['contactrestored'] = 'Contact(en) succesvol hersteld.';
$messages['groupdeleted'] = 'Groep succesvol verwijderd.';
$messages['grouprenamed'] = 'Groep succesvol hernoemd.';
$messages['groupcreated'] = 'Groep succesvol aangemaakt.';
$messages['savedsearchdeleted'] = 'Opgeslagen zoekopdracht succesvol verwijderd.';
$messages['savedsearchdeleteerror'] = 'Opgeslagen zoekopdracht kon niet worden verwijderd.';
$messages['savedsearchcreated'] = 'Zoekopdracht succesvol opgeslagen.';
$messages['savedsearchcreateerror'] = 'Zoekopdracht kon niet worden opgeslagen.';
$messages['messagedeleted'] = 'Bericht(en) succesvol verwijderd.';
$messages['messagemoved'] = 'Bericht(en) succesvol verplaatst.';
$messages['messagemovedtotrash'] = 'Bericht(en) succesvol verplaatst naar de prullenbak.';
$messages['messagecopied'] = 'Bericht(en) succesvol gekopieerd.';
$messages['messagemarked'] = 'Bericht(en) succesvol gemarkeerd.';
$messages['autocompletechars'] = 'Voer tenminste $min karakters in voor automatisch aanvullen.';
$messages['autocompletemore'] = 'Meerdere resultaten gevonden. Verfijn uw zoekopdracht.';
$messages['namecannotbeempty'] = 'Naam kan niet leeg zijn.';
$messages['nametoolong'] = 'Naam is te lang.';
$messages['namedotforbidden'] = 'Mapnaam kan niet met een punt beginnen.';
$messages['folderupdated'] = 'Map succesvol bijgewerkt.';
$messages['foldercreated'] = 'Map succesvol aangemaakt.';
$messages['invalidimageformat'] = 'Geen geldig afbeeldingsformaat.';
$messages['mispellingsfound'] = 'Spelfouten gedetecteerd in bericht.';
$messages['parentnotwritable'] = 'Niet in staat om map aan te maken of verplaatsen in gekozen bovenliggende map. U heeft geen toegangsrechten.';
$messages['messagetoobig'] = 'Het bericht is te groot om te verwerken.';
$messages['attachmentvalidationerror'] = 'WAARSCHUWING! Deze bijlage is verdacht omdat het bestandstype niet overeenkomt met het bestandstype dat gespecificeerd is in het bericht. Open deze bijlage niet in uw browser als u de afzender niet vertrouwt, aangezien deze bijlage kwaadaardige inhoud kan bevatten.
Verwacht: $expected; gevonden: $detected';
$messages['noscriptwarning'] = 'Waarschuwing: deze webmailapplicatie vereist Javascript! U dient Javascript in te schakelen in uw browserinstellingen wanneer u gebruik wilt maken van deze applicatie.';
$messages['messageissent'] = 'Het bericht was al verzonden, maar nog niet opgeslagen. Wilt u het nu opslaan?';
$messages['errnotfound'] = 'Bestand niet gevonden';
$messages['errnotfoundexplain'] = 'De opgevraagde bron werd niet gevonden!';
$messages['errfailedrequest'] = 'Mislukt verzoek';
$messages['errauthorizationfailed'] = 'Autoriseren mislukt';
$messages['errunauthorizedexplain'] = 'Kon niet verifiëren dat u geautoriseerd bent voor toegang tot deze dienst!';
$messages['errrequestcheckfailed'] = 'Controle verzoek mislukt';
$messages['errcsrfprotectionexplain'] = "Om u te beschermen, is toegang tot deze bron beveiligd tegen CSRF.\nWanneer u dit ziet, heeft u waarschijnlijk niet uitgelogd voordat u de webapplicatie verliet.\n\nMenselijke interactie is nu vereist om door te gaan.";
$messages['errcontactserveradmin'] = 'Neem alstublieft contact op met uw systeembeheerder.';
$messages['clicktoresumesession'] = 'Klik hier om uw vorige sessie te hervatten';
$messages['errcomposesession'] = 'Sessie opstellen fout';
$messages['errcomposesessionexplain'] = 'Opgevraagde opstellingsessie niet gevonden.';
$messages['clicktocompose'] = 'Klik hier om een nieuw bericht op te stellen';
$messages['nosupporterror'] = 'Deze eigenschap wordt niet ondersteund door uw webbrowser.';
$messages['siginserted'] = 'Handtekening succesvol toegevoegd.';
$messages['responseinserted'] = 'Antwoord succesvol ingevoegd.';
$messages['noresponsesavailable'] = 'Geen antwoorden beschikbaar';
$messages['listempty'] = 'De lijst is leeg.';
$messages['listusebutton'] = 'Gebruik de Nieuw knop om een nieuwe record toe te voegen.';
$messages['keypaircreatesuccess'] = 'Aan nieuw sleutelpaar werd met succes aangemaakt voor de identiteit $identity.';
$messages['emptyattachment'] = 'Deze bijlage lijkt leeg te zijn.<br>Check het met de persoon die dit verzonden heeft.';
$messages['oauthloginfailed'] = 'OAuth login is mislukt. Probeer het opnieuw.';
localization/index.inc000064400000014006151727150570011051 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | program/localization/index.inc                                        |
 |                                                                       |
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2014, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide a centralized location table                                |
 |   for keeping track of available languages                            |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

// language codes according to ISO 639-1
// country codes according to ISO 3166-1 (Alpha-2)
// original names from http://www.mediaglyphs.org/mg/?p=langnames

$rcube_languages = [
    'sq_AL' => 'Albanian (Shqip)',
    'ar'    => 'Arabic (العربية)',
    'ar_SA' => 'Arabic (Saudi Arabia)',
    'hy_AM' => 'Armenian (Հայերեն)',
    'ast'   => 'Asturiana (Asturianu)',
    'az_AZ' => 'Azerbaijani (Azərbaycanca)',
    'eu_ES' => 'Basque (Euskara)',
    'be_BE' => 'Belarusian (беларуская мова)',
    'bn_BD' => 'Bengali (বাংলা)',
    'bs_BA' => 'Bosnian (Bosanski)',
    'br'    => 'Breton (Brezhoneg)',
    'bg_BG' => 'Bulgarian (Български)',
    'ca_ES' => 'Catalan (Català)',
    'zh_CN' => 'Chinese (简体中文)',
    'zh_TW' => 'Chinese (正體中文)',
    'hr_HR' => 'Croatian (Hrvatski)',
    'cs_CZ' => 'Czech (Česky)',
    'da_DK' => 'Danish (Dansk)',
    'fa_AF' => 'Dari (ﻯﺭﺩ)',
    'de_DE' => 'German (Deutsch)',
    'de_CH' => 'German (Schweiz)',
    'nl_NL' => 'Dutch (Nederlands)',
    'en_CA' => 'English (Canada)',
    'en_GB' => 'English (GB)',
    'en_US' => 'English (US)',
    'eo'    => 'Esperanto',
    'et_EE' => 'Estonian (Eesti)',
    'fo_FO' => 'Faroese (Føroyskt)',
    'fi_FI' => 'Finnish (Suomi)',
    'nl_BE' => 'Flemish (Vlaams)',
    'fr_FR' => 'French (Français)',
    'gl_ES' => 'Galician (Galego)',
    'ka_GE' => 'Georgian (ქართული)',
    'el_GR' => 'Greek (Ελληνικά)',
    'he_IL' => 'Hebrew (עברית)',
    'hi_IN' => 'Hindi (हिनदी)',
    'hu_HU' => 'Hungarian (Magyar)',
    'is_IS' => 'Icelandic (Íslenska)',
    'id_ID' => 'Indonesian (Bahasa Indonesia)',
    'ia'    => 'Interlingua',
    'ga_IE' => 'Irish (Gaedhilge)',
    'it_IT' => 'Italian (Italiano)',
    'ja_JP' => 'Japanese (日本語)',
    'kab'   => 'Kabyle (Taqbaylit)',
    'km_KH' => 'Khmer (ភាសាខ្មែរ)',
    'kn_IN' => 'Konkani (कोंकणी)',
    'ko_KR' => 'Korean (한국어)',
    'ku'    => 'Kurdish (Kurmancî)',
    'lv_LV' => 'Latvian (Latviešu)',
    'lt_LT' => 'Lithuanian (Lietuviškai)',
    'lb_LU' => 'Luxembourgish (Lëtzebuergesch)',
    'mk_MK' => 'Macedonian (Македонски)',
    'ms_MY' => 'Malay (Bahasa Melayu)',
    'ml_IN' => 'Malayalam (മലയാളം)',
    'mr_IN' => 'Marathi (मराठी)',
    'mn_MN' => 'Mongolic (Монгол)',
    'ne_NP' => 'Nepali (नेपाली)',
    'nb_NO' => 'Norwegian (Bokmål)',
    'nn_NO' => 'Norwegian (Nynorsk)',
    'ps'    => 'Pashto',
    'fa_IR' => 'Persian (فارسی)',
    'pl_PL' => 'Polish (Polski)',
    'pt_BR' => 'Portuguese (Brasil)',
    'pt_PT' => 'Portuguese (Português)',
    'ro_RO' => 'Romanian (Româneşte)',
    'ru_RU' => 'Russian (Русский)',
    'sr_CS' => 'Serbian (Српски)',
    'si_LK' => 'Sinhalese (සිංහල)',
    'sk_SK' => 'Slovak (Slovenčina)',
    'sl_SI' => 'Slovenian (Slovenščina)',
    'es_AR' => 'Spanish (Argentina)',
    'es_ES' => 'Spanish (Español)',
    'es_419' => 'Spanish (Latin America)',
    'sv_SE' => 'Swedish (Svenska)',
    'ta_IN' => 'Tamil (தமிழ்)',
    'ti'    => 'Tigrinya (ትግርኛ)',
    'th_TH' => 'Thai (ไทย)',
    'tr_TR' => 'Turkish (Türkçe)',
    'tzl'   => 'Talossan',
    'ug'    => 'Uyghur (ئۇيغۇر)',
    'uk_UA' => 'Ukrainian (Українська)',
    'ur_PK' => 'Urdu (اُردو)',
    'uz'    => 'Uzbek (Oʻzbekcha)',
    'vi_VN' => 'Vietnamese (Tiếng Việt)',
    'cy_GB' => 'Welsh (Cymraeg)',
    'fy_NL' => 'West Frisian (Frysk)',
];

$rcube_language_aliases = [
    'am' => 'hy_AM',
    'az' => 'az_AZ',
    'bg' => 'bg_BG',
    'bs' => 'bs_BA',
    'ca' => 'ca_ES',
    'cn' => 'zh_CN',
    'cs' => 'cs_CZ',
    'cy' => 'cy_GB',
    'cz' => 'cs_CZ',
    'da' => 'da_DK',
    'de' => 'de_DE',
    'ee' => 'et_EE',
    'es' => 'es_ES',
    'et' => 'et_EE',
    'el' => 'el_GR',
    'en' => 'en_US',
    'eu' => 'eu_ES',
    'fa' => 'fa_IR',
    'ga' => 'ga_IE',
    'ge' => 'ka_GE',
    'gl' => 'gl_ES',
    'he' => 'he_IL',
    'hi' => 'hi_IN',
    'hr' => 'hr_HR',
    'hy' => 'hy_AM',
    'ja' => 'ja_JP',
    'ka' => 'ka_GE',
    'ko' => 'ko_KR',
    'kr' => 'ko_KR',
    'kh' => 'km_KH',
    'kh_KH' => 'km_KH',
    'kn' => 'kn_IN',
    'km' => 'km_KH',
    'lb' => 'lb_LU',
    'ne' => 'ne_NP',
    'no' => 'nn_NO',
    'mn' => 'mn_MN',
    'ms' => 'ms_MY',
    'mr' => 'mr_IN',
    'ml' => 'ml_IN',
    'ml_ML' => 'ml_IN',
    'pl' => 'pl_PL',
    'tr' => 'tr_TR',
    'tw' => 'zh_TW',
    'si' => 'si_LK',
    'sl' => 'sl_SI',
    'sr' => 'sr_CS',
    'sr_cyrillic' => 'sr_CS',
    'sr_latin' => 'bs_BA',
    'se' => 'sv_SE',
    'sv' => 'sv_SE',
    'sq' => 'sq_AL',
    'uk' => 'uk_UA',
    'vn' => 'vi_VN',
    'vi' => 'vi_VN',
    'zh' => 'zh_CN',
    'zh_HK' => 'zh_TW',
    'zh_MO' => 'zh_TW',
];
localization/km_KH/labels.inc000064400000070202151727150570012175 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product សូមស្វាគមន៍';
$labels['username'] = 'ឈ្មោះអ្នកប្រើ';
$labels['password'] = 'ពាក្យសំងាត់';
$labels['server'] = 'ម៉ាស៊ីនមេ';
$labels['login'] = 'ពិនិត្យចូល';
$labels['logout'] = 'ពិនិត្យចេញ';
$labels['mail'] = 'អ៊ីមែល';
$labels['settings'] = 'កំនត់ការប្រើប្រាស់';
$labels['addressbook'] = 'សៀវភៅអាសយដ្ឋាន';
$labels['inbox'] = 'ប្រអប់សំបុត្រ';
$labels['drafts'] = 'សំបុត្រពង្រៀង';
$labels['sent'] = 'សំបុត្រដែលបានបញ្ជូន';
$labels['trash'] = 'ធុងសំរាម';
$labels['junk'] = 'សំបុត្រមិនល្អ';
$labels['subject'] = 'ចំណងជើង';
$labels['from'] = 'អ្នកផ្ញើ';
$labels['sender'] = 'អ្នក​ផ្ញើ​';
$labels['to'] = 'អ្នកទទួល';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'ឆ្លើយតបទៅកាន់';
$labels['followupto'] = 'ឆ្លើយតបទៅកាន់ក្រុម';
$labels['date'] = 'កាលបរិច្ឆេត';
$labels['size'] = 'ទំហំ';
$labels['priority'] = 'អទិភាព';
$labels['organization'] = 'អង្គភាព';
$labels['readstatus'] = 'ស្ថានភាពនៃការអាន';
$labels['listoptions'] = 'ជម្រើស​បញ្ជី...';
$labels['mailboxlist'] = 'ថតទាំងអស់';
$labels['messagesfromto'] = 'សំបុត្រពី $from ទៅដល់ $toក្នុងចំណោម $count សំបុត្រ';
$labels['threadsfromto'] = 'បន្តុំសំបុត្រពី $from ទៅដល់ $toក្នុងចំណោម $count សំបុត្រ';
$labels['messagenrof'] = 'សំបុត្រ $nr នៃ $count';
$labels['fromtoshort'] = '$from – $to នៃ $count';
$labels['copy'] = 'ចំលង';
$labels['move'] = 'ផ្ទេរ';
$labels['moveto'] = 'ផ្ទេរទៅ';
$labels['copyto'] = 'ចម្លង​ទៅ...';
$labels['download'] = 'ទាញយក';
$labels['showattachment'] = 'បង្ហាញ';
$labels['showanyway'] = 'បង្ហាញ​វា​យ៉ាង​ណា​ក៏​បាន';
$labels['filename'] = 'ឈ្មោះឯកសារ';
$labels['filesize'] = 'ទំហំឯកសារ';
$labels['addtoaddressbook'] = 'រក្សាទុកក្នុងសៀវភៅអាសយដ្ឋាន';
$labels['sun'] = 'អាទិត្យ';
$labels['mon'] = 'ច័ន្ទ';
$labels['tue'] = 'អង្គារ';
$labels['wed'] = 'ពុធ';
$labels['thu'] = 'ព្រហស្បតិ៍';
$labels['fri'] = 'សុក្រ';
$labels['sat'] = 'សៅរ៍';
$labels['sunday'] = 'អាទិត្យ';
$labels['monday'] = 'ច័ន្ទ';
$labels['tuesday'] = 'អង្គារ';
$labels['wednesday'] = 'ពុធ';
$labels['thursday'] = 'ព្រហស្បតិ៍';
$labels['friday'] = 'សុក្រ';
$labels['saturday'] = 'សៅរ៍';
$labels['jan'] = 'មករា';
$labels['feb'] = 'កុម្ភះ';
$labels['mar'] = 'មិនា';
$labels['apr'] = 'មេសា';
$labels['may'] = 'ឧសភា';
$labels['jun'] = 'មិថុនា';
$labels['jul'] = 'កក្កដា';
$labels['aug'] = 'សីហា';
$labels['sep'] = 'កញ្ញា';
$labels['oct'] = 'តុលា';
$labels['nov'] = 'វិច្ឆិកា';
$labels['dec'] = 'ធ្នូ';
$labels['longjan'] = 'មករា';
$labels['longfeb'] = 'កុម្ភះ';
$labels['longmar'] = 'មិនា';
$labels['longapr'] = 'មេសា';
$labels['longmay'] = 'ឧសភា';
$labels['longjun'] = 'មិថុនា';
$labels['longjul'] = 'កក្កដា';
$labels['longaug'] = 'សីហា';
$labels['longsep'] = 'កញ្ញា';
$labels['longoct'] = 'តុលា';
$labels['longnov'] = 'វិច្ឆិកា';
$labels['longdec'] = 'ធ្នូ';
$labels['today'] = 'ថ្ងៃនេះ';
$labels['refresh'] = 'ធ្វើ​ឲ្យ​ស្រស់';
$labels['checkmail'] = 'ពិនិត្យសំបុត្រថ្មី';
$labels['compose'] = 'សរសេរសំបុត្រថ្មី';
$labels['writenewmessage'] = 'សរសេរសំបុត្រថ្មី';
$labels['reply'] = 'ឆ្លើយ';
$labels['replytomessage'] = 'ឆ្លើយតបទៅអ្នកផ្ញើ';
$labels['replytoallmessage'] = 'ឆ្លើយតបទៅ អ្នកទទួលទាំងអស់និង ក្រុម ឬ អ្នកផ្ញើ';
$labels['replyall'] = 'ឆ្លើយតបទៅទាំងអស់គ្នា';
$labels['replylist'] = 'បញ្ជី​ឆ្លើយតប';
$labels['forward'] = 'បញ្ជូន​បន្ត';
$labels['forwardinline'] = 'បញ្ចូល​បន្ត​ក្នុង​បន្ទាត់';
$labels['forwardattachment'] = 'បញ្ជូន​បន្ត​ជា​ឯកសារ​ភ្ជាប់';
$labels['forwardmessage'] = 'បញ្ជូន​បន្ត​សារ';
$labels['deletemessage'] = 'លុប​សារ';
$labels['movemessagetotrash'] = 'ផ្លាស់ទី​សារ​ទៅ​ធុង​សំរាម';
$labels['printmessage'] = 'បោះពុម្ព​សារ​នេះ';
$labels['previousmessage'] = 'បង្ហាញ​សារ​មុន';
$labels['firstmessage'] = 'បង្ហាញ​សារ​ដំបូង';
$labels['nextmessage'] = 'បង្ហាញ​សារ​បន្ទាប់';
$labels['lastmessage'] = 'បង្ហាញ​សារ​ចុងក្រោយ';
$labels['backtolist'] = 'ត្រឡប់​ទៅ​កាន់​បញ្ជី​សារ';
$labels['viewsource'] = 'បង្ហាញ​ប្រភព';
$labels['mark'] = 'សម្គាល់';
$labels['markmessages'] = 'សម្គាល់​សារ';
$labels['markread'] = 'អាន​រួច';
$labels['markunread'] = 'មិន​ទាន់​អាន';
$labels['markflagged'] = 'ដាក់​ទង់';
$labels['markunflagged'] = 'ដោះ​ទង់';
$labels['moreactions'] = 'សកម្មភាព​ច្រើន​ទៀត...';
$labels['folders-all'] = 'ថត​ទាំង​អស់';
$labels['more'] = 'ច្រើន​ទៀត';
$labels['back'] = 'ត្រឡប់​ក្រោយ';
$labels['options'] = 'ជម្រើស';
$labels['select'] = 'ជ្រើសរើស';
$labels['all'] = 'ទាំងអស់';
$labels['none'] = 'មិនតំរៀប';
$labels['currpage'] = 'ទំព័រ​បច្ចុប្បន្ន';
$labels['isread'] = 'បាន​អាន';
$labels['unread'] = 'មិន​ទាន់​អាន';
$labels['flagged'] = 'មានកំណត់សំគាល់ដោយផ្កាយ';
$labels['unanswered'] = 'មិនទាន់ឆ្លើយតប';
$labels['deleted'] = 'បាន​លុប';
$labels['undeleted'] = 'មិន​ទាន់​លុប';
$labels['invert'] = 'បញ្ច្រស់';
$labels['filter'] = 'លក្ខខ័ណ្ឌ';
$labels['list'] = 'បញ្ជី';
$labels['threads'] = 'បណ្តុំសំបុត្រ';
$labels['expand-all'] = 'បង្ហាញ​ទាំងអស់';
$labels['expand-unread'] = 'បង្ហាញសំបុត្រមិនទាន់អាន';
$labels['collapse-all'] = 'បង្រួញ​ទាំងអស់';
$labels['threaded'] = 'បានបែកចែកជាក្រុមរួច';
$labels['autoexpand_threads'] = 'បង្ហាញបណ្តុំសំបុត្រ';
$labels['do_expand'] = 'បណ្តុំទាំងអស់';
$labels['expand_only_unread'] = 'បង្ហាញតែសំបុត្រដែលមិនទាន់អាន';
$labels['fromto'] = 'អ្នកផ្ញើ / អ្នកទទួល';
$labels['flag'] = 'កំណត់សំគាល់ដោយផ្កាយ';
$labels['attachment'] = 'ឯកសារភ្ជាប់';
$labels['nonesort'] = 'មិនតំរៀប';
$labels['sentdate'] = 'កាលបរិច្ឆេតផ្ញើ';
$labels['arrival'] = 'កាលបរិច្ឆេតទទួល';
$labels['asc'] = 'តាមលំដាប់ចុះ';
$labels['desc'] = 'តាមលំដាប់ឡើង';
$labels['listcolumns'] = 'តារាងជួរឈ';
$labels['listsorting'] = 'តំរៀបជួរឈ';
$labels['listorder'] = 'លំដាប់នៃការតំរៀប';
$labels['listmode'] = 'បង្ហាញជាតារាង';
$labels['layoutlist'] = 'បញ្ជី';
$labels['folderactions'] = 'មុខងារថត';
$labels['compact'] = 'បង្រួម';
$labels['empty'] = 'ទទេរ';
$labels['quota'] = 'ទំហំសំបុត្រទាំងអស់ដែលមាន';
$labels['unknown'] = 'មិនស្គាល់';
$labels['unlimited'] = 'គ្មានកំនត់';
$labels['quicksearch'] = 'ស្វែងរក';
$labels['resetsearch'] = 'កំណត់លក្ខខ័ណ្ឌស្វែងរកជាថ្មី';
$labels['searchmod'] = 'កែសំរួលលក្ខខ័ណ្ឌស្វែងរក';
$labels['msgtext'] = 'សំបុត្រទាំងមូល';
$labels['body'] = 'តួ';
$labels['currentfolder'] = 'ថត​បច្ចុប្បន្ន';
$labels['allfolders'] = 'ថត​ទាំង​អស់';
$labels['openinextwin'] = 'បើកក្នុងវីនដូវថ្មី';
$labels['emlsave'] = 'រក្សាទុកទិន្នន័យជាឯកសារប្រភេទ(.eml)';
$labels['editasnew'] = 'កែហើយរក្សាទុកដូចជាសំបុត្រថ្មី';
$labels['send'] = 'ផ្ញើ';
$labels['sendmessage'] = 'ផ្ញើសំបុត្រនេះ';
$labels['savemessage'] = 'រក្សាទុកសំបុត្រពង្រៀង';
$labels['addattachment'] = 'ឯកសារភ្ជាប់';
$labels['charset'] = 'ប្រភេទអក្សរ';
$labels['editortype'] = 'ប្រភេទ Editor';
$labels['returnreceipt'] = 'អត្ថបទបញ្ជាក់ពីការត្រឡប់';
$labels['dsn'] = 'ប្រាប់អំពីស្ថានភាពផ្ញើ';
$labels['mailreplyintro'] = 'កាលពី​ថ្ងៃ $date, $sender បាន​សរសេរ៖';
$labels['originalmessage'] = 'សារ​ដើម';
$labels['insert'] = 'បញ្ចូល';
$labels['recipient'] = 'អ្នក​ទទួល';
$labels['editidents'] = 'ផ្លាស់ប្តូរអត្តសញ្ញាណ';
$labels['spellcheck'] = 'អក្ខរាវិរុទ្ធ';
$labels['checkspelling'] = 'ពិនិត្យអក្ខរាវិរុទ្ធ';
$labels['resumeediting'] = 'បន្តរការកែតំរូវ';
$labels['revertto'] = 'ត្រលប់ទៅ';
$labels['attach'] = 'ភ្ជាប់';
$labels['attachments'] = 'ឯកសារភ្ជាប់';
$labels['upload'] = 'ភ្ជាប់ឯកសារ';
$labels['close'] = 'បិទ';
$labels['messageoptions'] = 'កំណត់ជំរើសរបស់សំបុត្រ';
$labels['low'] = 'ទាប';
$labels['lowest'] = 'ទាបបំផុត';
$labels['normal'] = 'ធម្មតា';
$labels['high'] = 'ខ្ពស់';
$labels['highest'] = 'ខ្ពស់បំផុត';
$labels['nosubject'] = '(គ្មានចំណងជើង)';
$labels['showimages'] = 'បង្ហាញរូបភាព';
$labels['alwaysshow'] = 'បង្ហាញជានិច្ចរាល់រូបភាពបញ្ជូនពី$sender';
$labels['isdraft'] = 'នេះ​ជា​សារ​ព្រាង។';
$labels['andnmore'] = '$nr ច្រើន​ទៀត...';
$labels['togglemoreheaders'] = 'បង្ហាញ​បឋមកថា​សារ​ច្រើន​ទៀត';
$labels['togglefullheaders'] = 'បិទ/បើក​បឋមកថា​សារ​​ដើម';
$labels['htmltoggle'] = 'អត្ថបទ HTML';
$labels['plaintoggle'] = 'អត្ថបទធម្មតា';
$labels['savesentmessagein'] = 'រក្សាសំបុត្រដែលបានផ្ញើក្នុង';
$labels['dontsave'] = 'មិនរក្សាទុក';
$labels['maxuploadsize'] = 'ទំហំឯកសារធំបំផុតដែលអាចភ្ជាប់បានគឺ$size';
$labels['addcc'] = 'បន្ថែម Cc';
$labels['addbcc'] = 'បន្ថែម Bcc';
$labels['addreplyto'] = 'បន្ថែម Reply-To';
$labels['addfollowupto'] = 'បន្ថែម Followup-To';
$labels['mdnrequest'] = 'អ្នក​ផ្ញើ​សារ​នេះ​បាន​សុំ​ឲ្យ​ជូន​ដំណឹង​ពេល​អ្នក​អាន​​សារ​នេះ ។ តើ​អ្នក​ចង់​ជូន​ដំណឹង​ដល់​អ្នក​ផ្ញើ​ឬ​ទេ ?';
$labels['receiptread'] = 'អត្ថបទផ្ញើត្រលប់ (បានអាន)';
$labels['yourmessage'] = 'នេះគឺជាអត្ថបទផ្ញើត្រលប់សំរាប់សំបុត្ររបស់លោកអ្នក។';
$labels['name'] = 'ឈ្មោះសំរាប់បង្ហាញ';
$labels['firstname'] = 'នាមខ្លួន';
$labels['surname'] = 'នាមត្រកូល';
$labels['middlename'] = 'ឈ្មោះកណ្តាល';
$labels['nameprefix'] = 'ពាក្យពីមុខឈ្មោះ';
$labels['namesuffix'] = 'ពាក្យពីក្រោយឈ្មោះ';
$labels['nickname'] = 'ឈ្មោះហៅក្រៅ';
$labels['jobtitle'] = 'ឈ្មោះការងារ';
$labels['department'] = 'នាយកដ្ឋាន';
$labels['gender'] = 'ភេទ';
$labels['maidenname'] = 'ឈ្មោះពីកំណើត';
$labels['email'] = 'អ៊ីមែល';
$labels['phone'] = 'ទូរស័ព្ទ';
$labels['address'] = 'អាសយដ្ឋាន';
$labels['street'] = 'ផ្លូវ';
$labels['locality'] = 'ទីក្រុង';
$labels['zipcode'] = 'លេខប៉ុស្តិ៍';
$labels['region'] = 'តំបន់';
$labels['country'] = 'ប្រទេស';
$labels['birthday'] = 'ថ្ងៃខួបកំណើត';
$labels['anniversary'] = 'ខួប';
$labels['website'] = 'គេហទំព័រ';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'កំណត់ហេតុ';
$labels['male'] = 'ប្រុស';
$labels['female'] = 'ស្រី';
$labels['manager'] = 'នាយក';
$labels['assistant'] = 'ជំនួយការ';
$labels['spouse'] = 'គ្រួសារ';
$labels['search'] = 'ស្វែងរក';
$labels['advsearch'] = 'ការ​ស្វែង​រក​កម្រិត​ខ្ពស់';
$labels['other'] = 'ផ្សេងពីនេះ';
$labels['typehome'] = 'គេហដ្ឋាន';
$labels['typework'] = 'កន្លែងធ្វើការ';
$labels['typeother'] = 'ផ្សេងពីនេះ';
$labels['typemobile'] = 'ទូរស័ព្ទដៃ';
$labels['typemain'] = 'ចំបង';
$labels['typehomefax'] = 'ទូរសារនៅគេហដ្ឋាន';
$labels['typeworkfax'] = 'ទូរសារនៅកន្លែងធ្វើការ';
$labels['typecar'] = 'រថយន្ត';
$labels['typepager'] = 'ឧបករណ៍ផ្តល់សារ';
$labels['typevideo'] = 'វីដេអូរ';
$labels['typeassistant'] = 'ជំនួយការ';
$labels['typehomepage'] = 'ទំព័រ​ដើម';
$labels['addfield'] = 'បន្ថែម';
$labels['editcontact'] = 'កែប្រែអាសយដ្ឋានទាក់ទង';
$labels['contacts'] = 'អាសយដ្ឋានទាក់ទងទាំងអស់';
$labels['contactproperties'] = 'ព័ត៌មានអំពីទំនាក់ទំនង';
$labels['personalinfo'] = 'ព័ត៌មានផ្ទាល់ខ្លួន';
$labels['edit'] = 'កែតំរូវ';
$labels['cancel'] = 'លះបង់';
$labels['save'] = 'រក្សាទុក';
$labels['delete'] = 'លុបចោល';
$labels['rename'] = 'ប្តូរឈ្មោះ';
$labels['addphoto'] = 'បន្ថែមរូបថត';
$labels['replacephoto'] = 'លុបរូបថត';
$labels['uploadphoto'] = 'ផ្ទុក​រូបថត​ឡើង';
$labels['deletecontact'] = 'លុបអាសយដ្ឋានទាក់ទងដែលបានជ្រើសរើស';
$labels['composeto'] = 'ផ្ញើសំបុត្រទៅ';
$labels['contactsfromto'] = 'អាសយដ្ឋានទាក់ទង $from ដល់ $to នៃ$count';
$labels['print'] = 'បោះពុម្ភ';
$labels['export'] = 'ទាញនិងរក្សាទុក';
$labels['exportvcards'] = 'ទាញនិងរក្សាទុកអាសយដ្ឋានជាប្រភេទvCard';
$labels['grouprename'] = 'ប្ដូរ​ឈ្មោះ​ក្រុម';
$labels['groupdelete'] = 'លុប​ក្រុម';
$labels['previouspage'] = 'ទំព័រមុន';
$labels['firstpage'] = 'ទំព័រដំបូង';
$labels['nextpage'] = 'ទំព័របន្ទាប់';
$labels['lastpage'] = 'ទំព័រចុងក្រោយ';
$labels['group'] = 'ក្រុម';
$labels['groups'] = 'ក្រុម';
$labels['personaladrbook'] = 'អាសយដ្ឋានផ្ទាល់ខ្លួន';
$labels['searchsave'] = 'រក្សា​ទុក​ការ​ស្វែងរក​';
$labels['searchdelete'] = 'លុប​ការ​ស្វែង​រក';
$labels['import'] = 'បញ្ចូល';
$labels['importcontacts'] = 'បញ្ចូលអាសយដ្ឋាន';
$labels['importtarget'] = 'បន្ថែម​អាសយដ្ឋាន​ទាក់ទង​ទៅ';
$labels['importreplace'] = 'ផ្លាស់ប្តូរអាសយដ្ឋានទាំងអស់';
$labels['done'] = 'ចប់រួចរាល់';
$labels['settingsfor'] = 'កំណត់សំរាប់';
$labels['about'] = 'អំពី';
$labels['preferences'] = 'កំណត់តាមការចូលចិត្ត';
$labels['userpreferences'] = 'កំណត់តាមការចូលចិត្តរបស់អ្នកប្រើ';
$labels['editpreferences'] = 'ផ្លាស់ប្តូរការចូលចិត្តរបស់អ្នកប្រើ';
$labels['identities'] = 'អត្តសញ្ញាណ';
$labels['preferhtml'] = 'បង្ហាញជា HTML';
$labels['defaultcharset'] = 'លេខកូតអក្សរមានស្រាប់';
$labels['htmlmessage'] = 'សំបុត្រប្រភេទ HTML';
$labels['timeformat'] = 'ទម្រង់​ម៉ោង';
$labels['prettydate'] = 'កាលបរិច្ឆេតងាយស្រួលមើល';
$labels['setdefault'] = 'កំណត់ទុក';
$labels['autodetect'] = 'ស្វ័យប្រវត្តិ';
$labels['language'] = 'ភាសា';
$labels['timezone'] = 'ម៉ោង';
$labels['pagesize'] = 'ចំនួនសំបុត្រក្នុងមួយទំព័រ';
$labels['signature'] = 'ហត្ថលេខា';
$labels['dstactive'] = 'ម៉ោងវស្សានរដូវ';
$labels['showinextwin'] = 'បើក​សារ​ក្នុង​វីនដូវ​ថ្មី';
$labels['composeextwin'] = 'សរសេរ​សារ​ក្នុង​វីនដូវ​ថ្មី';
$labels['htmleditor'] = 'សរសេរសំបុត្រតាមបែប HTML';
$labels['htmlonreply'] = 'ឆ្លើយតបសំបុត្រតាមបែប HTML';
$labels['htmlonreplyandforward'] = 'បញ្ជូន​សារ​បន្ត ឬ ឆ្លើយ​តប​សារ​​តាម​បែប HTML';
$labels['htmlsignature'] = 'ហត្ថលេខាតាមបែប HTML';
$labels['previewpane'] = 'បង្ហាញប្រអប់សំរាប់មើលសំបុត្រ';
$labels['skin'] = 'ការរចនាទំព័រ';
$labels['logoutclear'] = 'សំអាតធុងសំរាមពេលពិនិត្យចេញ';
$labels['logoutcompact'] = 'បង្រួមប្រអប់សំបុត្រពេលពិនិត្យចេញ';
$labels['uisettings'] = 'ការរចនា';
$labels['serversettings'] = 'ការកំណត់ម៉ាស៊ីនមេ';
$labels['mailboxview'] = 'មើលប្រអប់សំបុត្រ';
$labels['mdnrequests'] = 'ប្រាប់អ្នកផ្ញើ';
$labels['askuser'] = 'សួរអ្នកប្រើ';
$labels['autosend'] = 'ផ្ញើស្វ័យប្រវត្តិ';
$labels['autosendknown'] = 'បញ្ជូនអត្ថបទប្រាប់អ្នកផ្ញើទៅកាន់អាសយដ្ឋានទាក់ទងរបស់ខ្ញុំឬក៏សួរខ្ញុំ';
$labels['autosendknownignore'] = 'បញ្ជូនអត្ថបទប្រាប់អ្នកផ្ញើទៅកាន់អាសយដ្ឋានទាក់ទងរបស់ខ្ញុំឬមិនបាច់ធ្វើអ្វីទាំងអស់';
$labels['readwhendeleted'] = 'កំណត់សំបុត្រថាបានអាននៅពេលលុបសំបុត្រនោះ';
$labels['flagfordeletion'] = 'កំណត់សញ្ញាផ្កាយអោយសំបុត្រថាបានលុបដោយមិនចាំបាច់លុបជាក់ស្តែង';
$labels['skipdeleted'] = 'មិនបង្ហាញសំបុត្រដែលបានលុប';
$labels['deletealways'] = 'លុបសំបុត្រចោលប្រសិនជាមិនអាចផ្ទេសំបុត្រនោះទៅធុងសំរាមបាន';
$labels['showremoteimages'] = 'បង្ហាញរូបភាពដែលគេផ្ញើមក';
$labels['fromknownsenders'] = 'ពីអ្នកផ្ញើដែលស្គាល់';
$labels['always'] = 'គ្រប់ពេល';
$labels['showinlineimages'] = 'បង្ហាញរូបភាពនៅក្រោមអត្ថបទសំបុត្រ';
$labels['autosavedraft'] = 'រក្សាទុកសំបុត្រពង្រៀងដោយស្វ័យប្រវត្តិ';
$labels['everynminutes'] = 'រៀងរាល់ $n នាទី';
$labels['never'] = 'មិនដែល';
$labels['immediately'] = 'ភ្លាមៗ';
$labels['messagesdisplaying'] = 'កំពុងបង្ហាញសំបុត្រ';
$labels['messagescomposition'] = 'កំពុងសរសេរសំបុត្រ';
$labels['mimeparamfolding'] = 'ឈ្មោះឯកសារភ្ជាប់';
$labels['2231folding'] = 'RFC 2231 ពេញ (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 ពេញ(other)';
$labels['force7bit'] = 'ប្រើ MIME សំរាប់អក្សរទំហំ 8-bit';
$labels['advancedoptions'] = 'ការកំណត់ពឹស្តារ';
$labels['focusonnewmessage'] = 'ផ្តោតលើវីនដូវដែលកំពុងសរសេរសំបុត្រថ្មី';
$labels['checkallfolders'] = 'ពិនិត្យសំបុត្រថ្មីនៅគ្រប់ថតទាំងអស់';
$labels['mainoptions'] = 'ជំរើសដែលជាគោល';
$labels['section'] = 'ផ្នែក';
$labels['maintenance'] = 'ការថែរក្សា';
$labels['newmessage'] = 'សំបុត្រថ្មី';
$labels['signatureoptions'] = 'កំណត់ហត្ថលេខា';
$labels['whenreplying'] = 'នៅពេលកំពុងឆ្លើយតប';
$labels['replytopposting'] = 'ចាប់ផ្តើម​សរសេរ​ពី​លើ​សំបុត្រ​ដើម';
$labels['replybottomposting'] = 'ចាប់ផ្តើមសរសេរពីក្រោមសំបុត្រដើម';
$labels['replyremovesignature'] = 'នៅ​ពេល​ឆ្លើយ​តប​លុប​ហត្ថលេខា​ចេញ​ពីសំបុត្រ';
$labels['autoaddsignature'] = 'បញ្ចូលហត្តលេខាដោយស្វ័យប្រវត្តិ';
$labels['newmessageonly'] = 'សំរាប់សំបុត្រថ្មីតែប៉ុណ្ណោះ';
$labels['replyandforwardonly'] = 'សំរាប់ឆើ្លយតប​និងផ្ញើបន្តតែ​ប៉ុណ្ណោះ';
$labels['insertsignature'] = 'បញ្ចូលហត្តលេខា';
$labels['afternseconds'] = 'ក្រោយពី $n វិនាទី';
$labels['reqmdn'] = 'ក្រោយពី $n វិនាទី';
$labels['reqdsn'] = 'ក្រោយពី $n វិនាទី';
$labels['replysamefolder'] = 'ក្រោយពី $n វិនាទី';
$labels['spellcheckbeforesend'] = 'ពិនិត្យ​អក្ខរាវិរុទ្ធ​មុន​នឹង​ផ្ញើ​សារ';
$labels['allmessages'] = 'សារ​ទាំង​អស់';
$labels['folder'] = 'ថត';
$labels['folders'] = 'ថតទាំងអស់';
$labels['foldername'] = 'ឈ្មោះថត';
$labels['subscribed'] = 'កំណត់យកមកប្រើ';
$labels['messagecount'] = 'សំបុត្រ';
$labels['create'] = 'បង្កើត';
$labels['createfolder'] = 'បង្កើតថតថ្មី';
$labels['managefolders'] = 'រៀបចំថត';
$labels['specialfolders'] = 'ថតពិសេស';
$labels['properties'] = 'ព័ត៌មាន';
$labels['folderproperties'] = 'ព័ត៌មានអំពីថត';
$labels['parentfolder'] = 'ថតមេ';
$labels['location'] = 'ទីកន្លែង';
$labels['info'] = 'ព័ត៌មាន';
$labels['getfoldersize'] = 'ទំហំថត';
$labels['changesubscription'] = 'ផ្លាស់ប្តូរការជាវ';
$labels['personalfolder'] = 'ថត​ឯកជន';
$labels['otherfolder'] = 'ថត​របស់​អ្នក​ប្រើប្រាស់​ផ្សេង​ទៀត';
$labels['sharedfolder'] = 'ថត​សាធារណៈ';
$labels['sortby'] = 'តំរៀបតាម';
$labels['sortasc'] = 'តំរៀបតាមលំដាប់ចុះ';
$labels['sortdesc'] = 'តំរៀបតាមលំដាប់ឡើង';
$labels['license'] = 'អាជ្ញាប័ណ្ណ';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'យូនីកូដ';
$labels['english'] = 'ភាសាអង់គ្លេស';
$labels['westerneuropean'] = 'អឺរ៉ុបខាងលិច';
$labels['easterneuropean'] = 'អីរ៉ុបខាងកើត';
$labels['southeasterneuropean'] = 'អឺរ៉ុបភាគអាគ្នេយ៍';
$labels['baltic'] = 'ភាសាបាល់តិក';
$labels['cyrillic'] = 'ភាសាស៊ីរីលិក';
$labels['arabic'] = 'ភាសាអារ៉ាប់';
$labels['greek'] = 'ភាសាក្រិក';
$labels['hebrew'] = 'ភាសាហ៊ីបប្រ៊ូ';
$labels['turkish'] = 'ភាសាទួរគី';
$labels['nordic'] = 'ភាសាណរឌីក';
$labels['thai'] = 'ភាសាថៃ';
$labels['celtic'] = 'ភាសាសេលតិច';
$labels['vietnamese'] = 'ភាសាវៀតណាម';
$labels['japanese'] = 'ភាសាជប៉ុន';
$labels['korean'] = 'ភាសាកូរ៉េ';
$labels['chinese'] = 'ភាសាចិន';
localization/km_KH/messages.inc000064400000035734151727150570012555 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'មាន​បញ្ហា​បាន​កើត​ឡើង!';
$messages['loginfailed']  = 'បាន​បរាជ័យ​ក្នុង​ការ​ចូល។';
$messages['cookiesdisabled'] = 'កម្មវិធី​អ៊ីនធឺណិត​របស់​អ្នក​មិន​ទទួល​ខូគី​ទេ។';
$messages['sessionerror'] = 'សម័យ​របស់​អ្នក​មិន​ត្រឹម​ត្រូវ ឬ​ផុត​កំណត់។';
$messages['storageerror'] = 'មិន​អាច​តភ្ជាប់​ទៅ​ម៉ាស៊ីន​ឃ្លាំង​ផ្ទុក។';
$messages['servererror'] = 'ម៉ាស៊ីន​មេ​មាន​បញ្ហា!';
$messages['servererrormsg'] = 'បញ្ហា: $msg';
$messages['dberror'] = 'កំហុស​មូលដ្ឋាន​ទិន្នន័យ!';
$messages['requesttimedout'] = 'សំណើ​អស់​ពេល';
$messages['errorreadonly'] = 'មិនអាចប្រតិបត្តិបានពីព្រោះថតនេះត្រូវបានគេកំណត់សំរាប់តែមើល';
$messages['errornoperm'] = 'មិនអាចប្រតិបត្តិបានពីព្រោះមិនមានសិទ្ទគ្រប់គ្រាន់';
$messages['invalidrequest'] = 'មិនអាចរក្សាទុកទិន្នន័យបានពីព្រោះមានបញ្ហានៅពេលបញ្ជូនទិន្នន័យ';
$messages['invalidhost'] = 'ឈ្មោះ​ម៉ាស៊ីន​មេ​មិន​ត្រឹមត្រូវ។';
$messages['nomessagesfound'] = 'ពុំមានសំបុត្រក្នុងប្រអប់សំបុត្រនេះទេ';
$messages['refreshing'] = 'កំពុង​ផ្ទុកឡើងវិញ...';
$messages['loading'] = 'កំពុងដំណើរការ...';
$messages['uploading'] = 'កំពុងបញ្ជូនឯកសារ...';
$messages['uploadingmany'] = 'កំពុង​ផ្ទុកឯកសារ​ឡើង...';
$messages['loadingdata'] = 'កំពុងបើកឯកសារ...';
$messages['checkingmail'] = 'កំពុងស្វែងរកមើលសំបុត្រថ្មី៝...';
$messages['sendingmessage'] = 'កំពុងផ្ញើសំបុត្រ...';
$messages['messagesent'] = 'សំបុត្រត្រូវបានបញ្ជូនដោយជោគជ័យ!';
$messages['savingmessage'] = 'កំពុងរក្សាសំបុត្រទុក...';
$messages['messagesaved'] = 'សំបុត្រត្រូវបានរក្សាទុកក្នុងថតពង្រៀង';
$messages['successfullysaved'] = 'រក្សាទុកដោយជោគជ័យ';
$messages['addedsuccessfully'] = 'អាសយដ្ឋានត្រូវបានរក្សាទុកដោយជោគជ័យ';
$messages['contactnameexists'] = 'មាន​ទំនាក់ទំនង​ដែលមាន​ឈ្មោះ​ដូច​គ្នា​នេះ​រួច​ហើយ។';
$messages['blockedimages'] = 'រូបភាពដែលមានក្នុងសំបុត្រនេះត្រូវបានបិទដើម្បីរក្សាសុវត្ថភាព';
$messages['encryptedmessage'] = 'លោកអ្នកមិនអាចមើលសំបុត្រនេះបានទេពីព្រោះសំបុត្រនេះជាសំបុត្រសំងាត់';
$messages['nocontactsfound'] = 'ពុំមានអាសយដ្ឋានទាក់ទងទេ';
$messages['contactnotfound'] = 'អាសយដ្ឋានទាក់ទងដែលលោកអ្នកចង់រកពុំមានឡើយ';
$messages['sendingfailed'] = 'មិនអាចផ្ញើសំបុត្របាន';
$messages['senttooquickly'] = 'សូមរងចាំ $sec វិនាទីមុននឹងផ្ញើសំបុត្រនេះ';
$messages['errormoving'] = 'មិនអាចផ្ទេរសំបុត្របាន';
$messages['errorcopying'] = 'មិនអាចចំលងសំបុត្របាន';
$messages['errordeleting'] = 'មិនអាចលុបសំបុត្រចោលបាន';
$messages['errormarking'] = 'មិនអាចកំណត់ចំណាំលើសំបុត្របាន';
$messages['deletecontactconfirm']  = 'តើលោកអ្នកពិតជាចង់លុបព័ត៌មានទំនាក់ទំនងនេះមែនទេ?';
$messages['deletegroupconfirm']  = 'តើអ្នកពិត​ជា​ចង់លុប​ក្រុម​បានជ្រើស?';
$messages['deletemessagesconfirm'] = 'តើលោកអ្នកពិតជាចង់លុបសំបុត្រនេះមែនទេ?';
$messages['deletefolderconfirm']  = 'តើលោកអ្នកពិតជាចង់លុបថតនេះមែនទេ?';
$messages['purgefolderconfirm']  = 'តើលោកអ្នកពិតជាចង់លុបសំបុត្រទាំងអស់នៅក្នុងថតនេះមែនទេ?';
$messages['contactdeleting'] = 'កំពុង​លុប​ទំនាក់ទំនង...';
$messages['groupdeleting'] = 'កំពុង​លុប​ក្រុម...';
$messages['folderdeleting'] = 'កំពុងលុបថតសំរាប់ទុកឯកសារ...';
$messages['foldermoving'] = 'កំពុងផ្ទេរថតសំរាប់ទុកឯកសារ...';
$messages['foldersubscribing'] = 'កំពុងកំណត់ប្រើថតសំរាប់ទុកឯកសារ...';
$messages['folderunsubscribing'] = 'កំពុងកំណត់មិនប្រើថតសំរាប់ទុកឯកសារ...';
$messages['formincomplete'] = 'សូមបំពេញទិន្នន័យអោយបានគ្រប់';
$messages['noemailwarning'] = 'អ៊ីមែលត្រឹមត្រូវ';
$messages['nonamewarning']  = 'សូមសរសេរឈ្មោះរបស់អ្នក';
$messages['nopagesizewarning'] = 'សូមកំណត់ទំហំទំព័រ';
$messages['norecipientwarning'] = 'សូមសរសេរអ្នកទទួលយ៉ាងហោចណាស់ម្នាក់';
$messages['nosubjectwarning']  = 'សំបុត្រគ្មានចំណងជើងតើអ្នកចង់សរសេរចំណងជើងនៅពេលនេះទេ?';
$messages['nobodywarning'] = 'តើលោកអ្នកចង់ផ្ញើសំបុត្រដែលគ្មានតួអត្ថបទសំបុត្រទេ?';
$messages['nosearchname'] = 'សូមបំពេញឈ្មោះទំនាក់ទំនង ឬអាសយដ្ឋានអ៊ីមែល';
$messages['notuploadedwarning'] = 'ឯកសារ​ភ្ជាប់​ទាំង​អស់​មិន​ត្រូវ​បាន​ផ្ទុក​ឡើង​នៅឡើយ​ទេ។ សូម​រង់ចាំ​ ឬ​បោះបង់​ការ​​ផ្ទុក​ឡើង។';
$messages['searchsuccessful'] = 'រកឃើញសំបុត្រចំនួន $nr';
$messages['contactsearchsuccessful'] = 'រក​ឃើញ​ទំនាក់ទំនង $nr ។';
$messages['searchnomatch'] = 'រកមិនឃើញអ្វីទាំងអស់';
$messages['searching'] = 'កំពុងស្វែងរក...';
$messages['checking'] = 'កំពុងពិនិត្យរក...';
$messages['nospellerrors'] = 'គ្មានកំហុសអក្ខរាវិរុទ្ធទេ';
$messages['folderdeleted'] = 'លុបថតបានដោយជោគជ័យ';
$messages['foldersubscribed'] = 'អាចកំណត់ប្រើថតបានដោយជោគជ័យ';
$messages['folderunsubscribed'] = 'កំណត់លែងប្រើថតបានដោយជោគជ័យ';
$messages['deletedsuccessfully'] = 'លុបបានដោយជោគជ័យ';
$messages['converting'] = 'កំពុងលុបការរចនាចោល...';
$messages['messageopenerror'] = 'មិនអាចទាញយកសំបុត្រពីម៉ាស៊ីនមេបានទេ';
$messages['fileuploaderror'] = 'មិនអាចបញ្ជូលភ្ជាប់ឯកសារ';
$messages['filesizeerror'] = 'ទំហំឯកសារត្រូវបញ្ជូនលើសចំណុះទំហំធំបំផុតគឺ $size';
$messages['sourceisreadonly'] = 'លោកអ្នកមានសិទ្ធត្រឹមតែមើលប្រភពនៃអាសយដ្ឋាននេះ';
$messages['errorsavingcontact'] = 'មិនអាចរក្សាអាសយដ្ឋានបានទេ';
$messages['movingmessage'] = 'កំពុកផ្តេរសំបុត្រ...';
$messages['copyingmessage'] = 'កំពុងចំលងសំបុត្រ...';
$messages['copyingcontact'] = 'កំពុង​ចម្លង​ទំនាក់ទំនង...';
$messages['deletingmessage'] = 'កំពុងលុបសំបុត្រ...';
$messages['markingmessage'] = 'កំពុងកំណត់សំគាល់សំបុត្រ...';
$messages['addingmember'] = 'កំពុង​បន្ថែម​ទំនាក់ទំនង​ទៅ​ក្រុម...';
$messages['removingmember'] = 'កំពុង​លុបទំនាក់ទំនង​ពី​ក្រុម...';
$messages['receiptsent'] = 'បានបញ្ជូនអត្ថបទបញ្ជាក់ថាបានអានបានសំរេច';
$messages['errorsendingreceipt'] = 'មិនអាចបញ្ជូនអត្ថបទបញ្ជាក់ថាបានអាន ទេ';
$messages['deleteidentityconfirm'] = 'តើអ្នក​ពិត​ជា​ចង់​លុប​អត្តសញ្ញាណ​នេះ?';
$messages['nodeletelastidentity'] = 'លោកអ្នកមិនអាចលុបអត្តសញ្ញាណនេះទេព្រោះវានៅសល់ចុងក្រោយគេ';
$messages['forbiddencharacter'] = 'ឈ្មោះថតនេះមានអក្សរដែលត្រូវហាមឃាត់';
$messages['selectimportfile'] = 'សូមជ្រើសរើសឯកសារដើម្បីបញ្ជូនភ្ជាប់';
$messages['addresswriterror'] = 'សៀវភៅអាសយដ្ឋាននោះមិនអាចសរសេរចូលបានទេ';
$messages['contactaddedtogroup'] = 'បានដាក់ពត៌មានទំនាក់ទំនងចូលក្នុងក្រុមនេះដោយជោគជ័យ';
$messages['contactremovedfromgroup'] = 'បានលុបពត៌មានទំនាក់ទំនងចេញពីក្រុមនេះដោយជោគជ័យ';
$messages['nogroupassignmentschanged'] = 'គ្មាន​ការ​ផ្ដល់​ក្រុម​បាន​ប្ដូរ។';
$messages['importwait'] = 'សូមមេត្តារង់ចាំកំពុងទាញទិន្នន័យចូល ...';
$messages['importconfirm'] = '<b>ព័ត៌មានទំនាក់ទំនង $insertedបានបញ្ចូលដោយជោគជ័យ,ហើយបានរំលងចោលពត៌មានដែលមានស្រាប់$skipped </b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'ប្រតិ្តបត្តិការត្រូវបានគេហាមឃាត់!';
$messages['smtpconnerror'] = 'SMTP Error ($code):មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេ';
$messages['smtpautherror'] = 'SMTP Error ($code):ព័ត៌មានគនីយមិនត្រឹមត្រូវ';
$messages['smtpfromerror'] = 'SMTP Error ($code):មិនអាចកំនត់អ្នកផ្ញើ "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code):មិនអាចកំនត់អ្នកទទួល "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error:មិនអាចបំលែងបញ្ជីអ្នកទទួល';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['toomanyrecipients'] = 'ចំនួនអ្នកទទួលច្រើនលើសកំនត់!សូមមេត្តាលុបចោលរហូតដល់ $max។';
$messages['maxgroupmembersreached'] = 'ចំនួនក្រុមលើសកំនត់ហើយចំនួនច្រើនបំផុតគឺ $max';
$messages['contactdelerror'] = 'មិនអាចលុបអាសយដ្ឋានទំនាក់ទំនង';
$messages['contactdeleted'] = 'អាសយដ្ឋានទំនាក់ទំនងត្រូវបានលុបដោយជោគជ័យ';
$messages['groupdeleted'] = 'លុបក្រុមបានដោយជោគជ័យ';
$messages['grouprenamed'] = 'ប្តូរឈ្មោះក្រុមបានដោយជោគជ័យ';
$messages['groupcreated'] = 'បង្កើតក្រុមបានដោយជោគជ័យ';
$messages['messagedeleted'] = 'លុបសំបុត្របានដោយជោគជ័យ';
$messages['messagemoved'] = 'ផ្ទេរសំបុត្របានដោយជោគជ័យ';
$messages['messagecopied'] = 'ចំលងសំបុត្របានដោយជោគជ័យ';
$messages['messagemarked'] = 'កំណត់សំគាល់សំបុត្របានដោយជោគជ័យ';
$messages['autocompletechars'] = 'សូមសរសេរអក្សរយ៉ាងតិច $minដើម្បីបង្ហាយដោយស្វ័យប្រវត្តិ';
$messages['namecannotbeempty'] = 'សូមសរសេរឈ្មោះ';
$messages['nametoolong'] = 'ឈ្មោះវែងពេក';
$messages['folderupdated'] = 'ផ្លាស់ប្តូរថតបានដោយជោគជ័យ';
$messages['foldercreated'] = 'បង្កើតថតបានដោយជោគជ័យ';
$messages['invalidimageformat'] = 'ប្រភេទរូបភាពមិនត្រឹមត្រូវ';
localization/zh_TW/timezones.inc000064400000051441151727150570013016 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = '非洲';
$labels['tz:africa:abidjan'] = '阿必尚';
$labels['tz:africa:accra'] = '阿克拉';
$labels['tz:africa:addis_ababa'] = '阿迪斯阿貝巴';
$labels['tz:africa:algiers'] = '阿爾及爾';
$labels['tz:africa:asmara'] = '阿斯馬拉';
$labels['tz:africa:bamako'] = '巴馬科';
$labels['tz:africa:bangui'] = '班基';
$labels['tz:africa:banjul'] = '班竹';
$labels['tz:africa:bissau'] = '比索';
$labels['tz:africa:blantyre'] = '布蘭岱';
$labels['tz:africa:brazzaville'] = '布拉薩市';
$labels['tz:africa:bujumbura'] = '布松布拉';
$labels['tz:africa:cairo'] = '開羅';
$labels['tz:africa:casablanca'] = '卡薩布蘭卡';
$labels['tz:africa:ceuta'] = '休達';
$labels['tz:africa:conakry'] = '科奈克里';
$labels['tz:africa:dakar'] = '達卡';
$labels['tz:africa:dar_es_salaam'] = '三蘭港';
$labels['tz:africa:djibouti'] = '吉布地';
$labels['tz:africa:douala'] = '杜阿拉';
$labels['tz:africa:el_aaiun'] = '阿尤恩';
$labels['tz:africa:freetown'] = '自由城';
$labels['tz:africa:gaborone'] = '嘉柏隆里';
$labels['tz:africa:harare'] = '哈拉雷';
$labels['tz:africa:johannesburg'] = '約翰尼斯堡';
$labels['tz:africa:juba'] = '朱巴';
$labels['tz:africa:kampala'] = '坎帕拉';
$labels['tz:africa:khartoum'] = '喀土木';
$labels['tz:africa:kigali'] = '吉佳利';
$labels['tz:africa:kinshasa'] = '金夏沙';
$labels['tz:africa:lagos'] = '拉哥斯';
$labels['tz:africa:libreville'] = '自由市';
$labels['tz:africa:lome'] = '洛美';
$labels['tz:africa:luanda'] = '羅安達';
$labels['tz:africa:lubumbashi'] = '盧本巴希';
$labels['tz:africa:lusaka'] = '路沙卡';
$labels['tz:africa:malabo'] = '馬拉博';
$labels['tz:africa:maputo'] = '馬布多';
$labels['tz:africa:maseru'] = '馬塞盧';
$labels['tz:africa:mbabane'] = '墨巴本';
$labels['tz:africa:mogadishu'] = '摩加迪休';
$labels['tz:africa:monrovia'] = '蒙羅維亞';
$labels['tz:africa:nairobi'] = '奈洛比';
$labels['tz:africa:ndjamena'] = '恩將納';
$labels['tz:africa:niamey'] = '尼阿美';
$labels['tz:africa:nouakchott'] = '諾克少';
$labels['tz:africa:ouagadougou'] = '瓦加杜古';
$labels['tz:africa:porto-novo'] = '新港';
$labels['tz:africa:sao_tome'] = '聖多美';
$labels['tz:africa:tripoli'] = '的黎波里';
$labels['tz:africa:tunis'] = '突尼斯';
$labels['tz:africa:windhoek'] = '溫荷克';
$labels['tz:america'] = '美洲';
$labels['tz:america:adak'] = '埃達克';
$labels['tz:america:anchorage'] = '安克拉治';
$labels['tz:america:anguilla'] = '安圭拉';
$labels['tz:america:antigua'] = '安地卡島';
$labels['tz:america:araguaina'] = '阿拉瓜伊納';
$labels['tz:america:argentina'] = '阿根廷';
$labels['tz:america:argentina:buenos_aires'] = '布宜諾斯艾利斯';
$labels['tz:america:argentina:catamarca'] = '卡塔馬卡';
$labels['tz:america:argentina:cordoba'] = '哥多華';
$labels['tz:america:argentina:jujuy'] = '胡胡伊';
$labels['tz:america:argentina:la_rioja'] = '拉里奧哈';
$labels['tz:america:argentina:mendoza'] = '門多薩';
$labels['tz:america:argentina:rio_gallegos'] = '里奧加耶戈斯';
$labels['tz:america:argentina:salta'] = '薩爾塔';
$labels['tz:america:argentina:san_juan'] = '聖胡安';
$labels['tz:america:argentina:san_luis'] = '聖路易';
$labels['tz:america:argentina:tucuman'] = '德圖庫曼';
$labels['tz:america:argentina:ushuaia'] = '烏蘇懷亞';
$labels['tz:america:aruba'] = '阿魯巴';
$labels['tz:america:asuncion'] = '亞松森';
$labels['tz:america:atikokan'] = '阿蒂科肯';
$labels['tz:america:bahia'] = '巴伊亞州';
$labels['tz:america:bahia_banderas'] = '班德拉斯灣';
$labels['tz:america:barbados'] = '巴貝多';
$labels['tz:america:belem'] = '貝倫區';
$labels['tz:america:belize'] = '貝里斯';
$labels['tz:america:blanc-sablon'] = '布朗薩布隆';
$labels['tz:america:boa_vista'] = '博阿維斯塔';
$labels['tz:america:bogota'] = '波哥大';
$labels['tz:america:boise'] = '波夕';
$labels['tz:america:cambridge_bay'] = '劍橋灣';
$labels['tz:america:campo_grande'] = '格蘭德營';
$labels['tz:america:cancun'] = '坎昆';
$labels['tz:america:caracas'] = '卡拉卡斯';
$labels['tz:america:cayenne'] = '開雲';
$labels['tz:america:cayman'] = '開曼群島';
$labels['tz:america:chicago'] = '芝加哥';
$labels['tz:america:chihuahua'] = '契瓦瓦';
$labels['tz:america:costa_rica'] = '哥斯大黎加';
$labels['tz:america:creston'] = '克雷斯頓';
$labels['tz:america:cuiaba'] = '庫亞巴';
$labels['tz:america:curacao'] = '古拉索';
$labels['tz:america:danmarkshavn'] = '丹麥港';
$labels['tz:america:dawson'] = '道森市';
$labels['tz:america:dawson_creek'] = '道森河市';
$labels['tz:america:denver'] = '丹佛市';
$labels['tz:america:detroit'] = '底特律';
$labels['tz:america:dominica'] = '多米尼加';
$labels['tz:america:edmonton'] = '艾德蒙頓';
$labels['tz:america:eirunepe'] = '埃魯內佩';
$labels['tz:america:el_salvador'] = '薩爾瓦多';
$labels['tz:america:fort_nelson'] = '納爾遜堡';
$labels['tz:america:fortaleza'] = '福塔萊薩';
$labels['tz:america:glace_bay'] = '格萊斯貝';
$labels['tz:america:godthab'] = '努克';
$labels['tz:america:goose_bay'] = '古斯貝';
$labels['tz:america:grand_turk'] = '大特克島';
$labels['tz:america:grenada'] = '格瑞那達';
$labels['tz:america:guadeloupe'] = '瓜德羅普';
$labels['tz:america:guatemala'] = '瓜地馬拉';
$labels['tz:america:guayaquil'] = '瓜亞基爾';
$labels['tz:america:guyana'] = '蓋亞那';
$labels['tz:america:halifax'] = '哈里法克斯';
$labels['tz:america:havana'] = '夏灣拿';
$labels['tz:america:hermosillo'] = '埃莫西約';
$labels['tz:america:indiana'] = '印第安納州';
$labels['tz:america:indiana:indianapolis'] = '印第安納波利斯';
$labels['tz:america:indiana:knox'] = '諾克斯';
$labels['tz:america:indiana:marengo'] = '馬倫哥';
$labels['tz:america:indiana:petersburg'] = '彼得斯堡';
$labels['tz:america:indiana:tell_city'] = '特爾城';
$labels['tz:america:indiana:vevay'] = '韋韋';
$labels['tz:america:indiana:vincennes'] = '文森';
$labels['tz:america:indiana:winamac'] = '威納馬克';
$labels['tz:america:inuvik'] = '因紐維克';
$labels['tz:america:iqaluit'] = '伊魁特';
$labels['tz:america:jamaica'] = '牙買加';
$labels['tz:america:juneau'] = '朱諾';
$labels['tz:america:kentucky'] = '肯塔基州';
$labels['tz:america:kentucky:louisville'] = '路易斯維爾';
$labels['tz:america:kentucky:monticello'] = '蒙蒂塞洛';
$labels['tz:america:kralendijk'] = '克拉倫代克';
$labels['tz:america:la_paz'] = '拉巴斯';
$labels['tz:america:lima'] = '利馬';
$labels['tz:america:los_angeles'] = '洛杉磯';
$labels['tz:america:lower_princes'] = '下太子';
$labels['tz:america:maceio'] = '馬塞約';
$labels['tz:america:managua'] = '馬拿瓜';
$labels['tz:america:manaus'] = '瑪瑙斯';
$labels['tz:america:marigot'] = '馬里戈';
$labels['tz:america:martinique'] = '馬丁尼克';
$labels['tz:america:matamoros'] = '馬塔莫羅斯';
$labels['tz:america:mazatlan'] = '馬薩特蘭';
$labels['tz:america:menominee'] = '梅諾米尼';
$labels['tz:america:merida'] = '美利達';
$labels['tz:america:metlakatla'] = '梅特拉卡特拉';
$labels['tz:america:mexico_city'] = '墨西哥城';
$labels['tz:america:miquelon'] = '密克隆';
$labels['tz:america:moncton'] = '蒙克頓';
$labels['tz:america:monterrey'] = '蒙特雷';
$labels['tz:america:montevideo'] = '蒙特維多';
$labels['tz:america:montserrat'] = '蒙哲臘';
$labels['tz:america:nassau'] = '拿索';
$labels['tz:america:new_york'] = '紐約';
$labels['tz:america:nipigon'] = '尼皮貢';
$labels['tz:america:nome'] = '諾米';
$labels['tz:america:noronha'] = '羅尼亞';
$labels['tz:america:north_dakota'] = '北達科他';
$labels['tz:america:north_dakota:beulah'] = '比尤拉';
$labels['tz:america:north_dakota:center'] = '森特';
$labels['tz:america:north_dakota:new_salem'] = '新薩勒姆';
$labels['tz:america:ojinaga'] = '奧希納加';
$labels['tz:america:panama'] = '巴拿馬';
$labels['tz:america:pangnirtung'] = '龐納唐';
$labels['tz:america:paramaribo'] = '巴拉馬利波';
$labels['tz:america:phoenix'] = '鳳凰城';
$labels['tz:america:port-au-prince'] = '太子港';
$labels['tz:america:port_of_spain'] = '西班牙港';
$labels['tz:america:porto_velho'] = '韋柳港';
$labels['tz:america:puerto_rico'] = '波多黎各';
$labels['tz:america:rainy_river'] = '雷尼河';
$labels['tz:america:rankin_inlet'] = '蘭金因萊特';
$labels['tz:america:recife'] = '李斯腓';
$labels['tz:america:regina'] = '利載拿';
$labels['tz:america:resolute'] = '瑞瑟魯特';
$labels['tz:america:rio_branco'] = '里約布蘭科';
$labels['tz:america:santarem'] = '聖塔倫';
$labels['tz:america:santiago'] = '聖地亞哥';
$labels['tz:america:santo_domingo'] = '聖多明哥';
$labels['tz:america:sao_paulo'] = '聖保羅';
$labels['tz:america:scoresbysund'] = '斯科斯比松';
$labels['tz:america:sitka'] = '矽地卡';
$labels['tz:america:st_barthelemy'] = '聖巴泰勒米';
$labels['tz:america:st_johns'] = "聖約翰斯";
$labels['tz:america:st_kitts'] = '聖基茨島';
$labels['tz:america:st_lucia'] = '聖盧西亞';
$labels['tz:america:st_thomas'] = '聖湯瑪士';
$labels['tz:america:st_vincent'] = '聖文森';
$labels['tz:america:swift_current'] = '斯威夫特卡倫特';
$labels['tz:america:tegucigalpa'] = '特古西加爾巴';
$labels['tz:america:thule'] = '圖勒';
$labels['tz:america:thunder_bay'] = '雷霆灣';
$labels['tz:america:tijuana'] = '提華納';
$labels['tz:america:toronto'] = '多倫多';
$labels['tz:america:tortola'] = '托爾托拉島';
$labels['tz:america:vancouver'] = '溫哥華';
$labels['tz:america:whitehorse'] = '白馬市';
$labels['tz:america:winnipeg'] = '溫尼辟';
$labels['tz:america:yakutat'] = '溫尼辟';
$labels['tz:america:yellowknife'] = '黃刀鎮';
$labels['tz:antarctica'] = '南極洲';
$labels['tz:antarctica:casey'] = '凱西站';
$labels['tz:antarctica:davis'] = '戴維斯站';
$labels['tz:antarctica:dumontdurville'] = "迪蒙·迪維爾站";
$labels['tz:antarctica:macquarie'] = '麥格理站';
$labels['tz:antarctica:mawson'] = '莫森站';
$labels['tz:antarctica:mcmurdo'] = '麥克默多站';
$labels['tz:antarctica:palmer'] = '帕爾默';
$labels['tz:antarctica:rothera'] = '羅瑟拉站';
$labels['tz:antarctica:syowa'] = '昭和基地';
$labels['tz:antarctica:troll'] = '特洛站';
$labels['tz:antarctica:vostok'] = '沃斯托克站';
$labels['tz:arctic'] = '北極';
$labels['tz:arctic:longyearbyen'] = '隆雅市';
$labels['tz:asia'] = '亞洲';
$labels['tz:asia:aden'] = '亞丁';
$labels['tz:asia:almaty'] = '阿拉木圖';
$labels['tz:asia:amman'] = '安曼';
$labels['tz:asia:anadyr'] = '阿那底';
$labels['tz:asia:aqtau'] = '阿克套';
$labels['tz:asia:aqtobe'] = '阿克托比';
$labels['tz:asia:ashgabat'] = '阿什哈巴德';
$labels['tz:asia:atyrau'] = '阿特勞';
$labels['tz:asia:baghdad'] = '巴格達';
$labels['tz:asia:bahrain'] = '巴林';
$labels['tz:asia:baku'] = '巴庫';
$labels['tz:asia:bangkok'] = '曼谷';
$labels['tz:asia:barnaul'] = '巴爾瑙爾';
$labels['tz:asia:beirut'] = '貝魯特';
$labels['tz:asia:bishkek'] = '比什凱克';
$labels['tz:asia:brunei'] = '汶萊';
$labels['tz:asia:chita'] = '赤塔';
$labels['tz:asia:choibalsan'] = '喬巴山';
$labels['tz:asia:colombo'] = '科倫坡';
$labels['tz:asia:damascus'] = '大馬士革';
$labels['tz:asia:dhaka'] = '達卡';
$labels['tz:asia:dili'] = '帝力';
$labels['tz:asia:dubai'] = '杜拜';
$labels['tz:asia:dushanbe'] = '杜尚別';
$labels['tz:asia:famagusta'] = '法馬古斯塔';
$labels['tz:asia:gaza'] = '加薩';
$labels['tz:asia:hebron'] = '希伯崙';
$labels['tz:asia:ho_chi_minh'] = '胡志明市';
$labels['tz:asia:hong_kong'] = '香港';
$labels['tz:asia:hovd'] = '科布多';
$labels['tz:asia:irkutsk'] = '伊爾庫次克';
$labels['tz:asia:jakarta'] = '耶加達';
$labels['tz:asia:jayapura'] = '查亞普拉';
$labels['tz:asia:jerusalem'] = '耶路撒冷';
$labels['tz:asia:kabul'] = '喀布爾';
$labels['tz:asia:kamchatka'] = '堪察加';
$labels['tz:asia:karachi'] = '卡拉奇';
$labels['tz:asia:kathmandu'] = '加德滿都';
$labels['tz:asia:khandyga'] = '肯德瓦';
$labels['tz:asia:kolkata'] = '加爾各答';
$labels['tz:asia:krasnoyarsk'] = '克拉斯諾雅斯克';
$labels['tz:asia:kuala_lumpur'] = '吉隆坡';
$labels['tz:asia:kuching'] = '古晉';
$labels['tz:asia:kuwait'] = '科威特';
$labels['tz:asia:macau'] = '澳門';
$labels['tz:asia:magadan'] = '馬加丹';
$labels['tz:asia:makassar'] = '望加錫';
$labels['tz:asia:manila'] = '馬尼拉';
$labels['tz:asia:muscat'] = '馬斯喀特';
$labels['tz:asia:nicosia'] = '尼科西亞';
$labels['tz:asia:novokuznetsk'] = '新庫斯內次';
$labels['tz:asia:novosibirsk'] = '新西伯利亞';
$labels['tz:asia:omsk'] = '鄂木斯克';
$labels['tz:asia:oral'] = '烏拉爾';
$labels['tz:asia:phnom_penh'] = '金邊';
$labels['tz:asia:pontianak'] = '坤甸';
$labels['tz:asia:pyongyang'] = '平壤';
$labels['tz:asia:qatar'] = '卡塔爾';
$labels['tz:asia:qyzylorda'] = '克孜勒奧爾達';
$labels['tz:asia:riyadh'] = '利雅得';
$labels['tz:asia:sakhalin'] = '庫頁島';
$labels['tz:asia:samarkand'] = '撒馬爾罕';
$labels['tz:asia:seoul'] = '首爾';
$labels['tz:asia:shanghai'] = '上海';
$labels['tz:asia:singapore'] = '新加坡';
$labels['tz:asia:srednekolymsk'] = '中科雷姆斯克';
$labels['tz:asia:taipei'] = '台北';
$labels['tz:asia:tashkent'] = '塔什干';
$labels['tz:asia:tbilisi'] = '第比利斯';
$labels['tz:asia:tehran'] = '德黑蘭';
$labels['tz:asia:thimphu'] = '廷布';
$labels['tz:asia:tokyo'] = '東京';
$labels['tz:asia:tomsk'] = '托木斯克';
$labels['tz:asia:ulaanbaatar'] = '烏蘭巴托';
$labels['tz:asia:urumqi'] = '烏魯木齊';
$labels['tz:asia:ust-nera'] = '烏斯季涅拉';
$labels['tz:asia:vientiane'] = '永珍';
$labels['tz:asia:vladivostok'] = '海參崴';
$labels['tz:asia:yakutsk'] = '雅庫茨克';
$labels['tz:asia:yangon'] = '仰光';
$labels['tz:asia:yekaterinburg'] = '葉卡捷琳堡';
$labels['tz:asia:yerevan'] = '葉里溫';
$labels['tz:atlantic'] = '大西洋';
$labels['tz:atlantic:azores'] = '亞速群島';
$labels['tz:atlantic:bermuda'] = '百慕達';
$labels['tz:atlantic:canary'] = '加那利群島';
$labels['tz:atlantic:cape_verde'] = '維德角';
$labels['tz:atlantic:faroe'] = '法羅群島';
$labels['tz:atlantic:madeira'] = '馬德拉';
$labels['tz:atlantic:reykjavik'] = '雷克雅未克';
$labels['tz:atlantic:south_georgia'] = '南喬治亞島';
$labels['tz:atlantic:st_helena'] = '聖赫倫那島';
$labels['tz:atlantic:stanley'] = '史坦利';
$labels['tz:australia'] = '澳洲';
$labels['tz:australia:adelaide'] = '亞德萊德';
$labels['tz:australia:brisbane'] = '布里斯本';
$labels['tz:australia:broken_hill'] = '布羅肯希爾';
$labels['tz:australia:currie'] = '克黎';
$labels['tz:australia:darwin'] = '達爾文';
$labels['tz:australia:eucla'] = '尤克拉';
$labels['tz:australia:hobart'] = '荷伯特';
$labels['tz:australia:lindeman'] = '利達民';
$labels['tz:australia:lord_howe'] = '豪勳爵島';
$labels['tz:australia:melbourne'] = '墨爾本';
$labels['tz:australia:perth'] = '珀斯';
$labels['tz:australia:sydney'] = '雪梨';
$labels['tz:europe'] = '歐洲';
$labels['tz:europe:amsterdam'] = '阿姆斯特丹';
$labels['tz:europe:andorra'] = '安道爾';
$labels['tz:europe:astrakhan'] = '阿斯特拉罕';
$labels['tz:europe:athens'] = '雅典';
$labels['tz:europe:belgrade'] = '貝爾格萊德';
$labels['tz:europe:berlin'] = '柏林';
$labels['tz:europe:bratislava'] = '布拉迪斯拉發';
$labels['tz:europe:brussels'] = '布魯塞爾';
$labels['tz:europe:bucharest'] = '布加勒斯特';
$labels['tz:europe:budapest'] = '布達佩斯';
$labels['tz:europe:busingen'] = '布辛根';
$labels['tz:europe:chisinau'] = '基施紐';
$labels['tz:europe:copenhagen'] = '哥本哈根';
$labels['tz:europe:dublin'] = '都柏林';
$labels['tz:europe:gibraltar'] = '直布羅陀';
$labels['tz:europe:guernsey'] = '耿西島';
$labels['tz:europe:helsinki'] = '赫爾辛基';
$labels['tz:europe:isle_of_man'] = '曼島';
$labels['tz:europe:istanbul'] = '伊斯坦堡';
$labels['tz:europe:jersey'] = '耿西島';
$labels['tz:europe:kaliningrad'] = '加里寧格勒';
$labels['tz:europe:kiev'] = '基輔';
$labels['tz:europe:kirov'] = '基洛夫';
$labels['tz:europe:lisbon'] = '里斯本';
$labels['tz:europe:ljubljana'] = '盧布爾雅那';
$labels['tz:europe:london'] = '倫敦';
$labels['tz:europe:luxembourg'] = '盧森堡';
$labels['tz:europe:madrid'] = '馬德里';
$labels['tz:europe:malta'] = '馬爾他';
$labels['tz:europe:mariehamn'] = '瑪麗港';
$labels['tz:europe:minsk'] = '明斯克';
$labels['tz:europe:monaco'] = '摩納哥';
$labels['tz:europe:moscow'] = '莫斯科';
$labels['tz:europe:oslo'] = '奧斯陸';
$labels['tz:europe:paris'] = '巴黎';
$labels['tz:europe:podgorica'] = '波德里查';
$labels['tz:europe:prague'] = '布拉格';
$labels['tz:europe:riga'] = '里加';
$labels['tz:europe:rome'] = '羅馬';
$labels['tz:europe:samara'] = '薩馬拉';
$labels['tz:europe:san_marino'] = '聖馬力諾';
$labels['tz:europe:sarajevo'] = '薩拉熱窩';
$labels['tz:europe:saratov'] = '薩拉托夫';
$labels['tz:europe:simferopol'] = '辛菲洛普';
$labels['tz:europe:skopje'] = '史高比耶';
$labels['tz:europe:sofia'] = '索菲亞';
$labels['tz:europe:stockholm'] = '斯德哥爾摩';
$labels['tz:europe:tallinn'] = '塔林';
$labels['tz:europe:tirane'] = '地拉那';
$labels['tz:europe:ulyanovsk'] = '烏里揚諾夫斯克';
$labels['tz:europe:uzhgorod'] = '烏日霍羅德';
$labels['tz:europe:vaduz'] = '華杜茲';
$labels['tz:europe:vatican'] = '梵蒂岡';
$labels['tz:europe:vienna'] = '維也納';
$labels['tz:europe:vilnius'] = '維爾紐斯';
$labels['tz:europe:volgograd'] = '伏爾加格勒';
$labels['tz:europe:warsaw'] = '華沙';
$labels['tz:europe:zagreb'] = '薩格勒布';
$labels['tz:europe:zaporozhye'] = '札波羅結';
$labels['tz:europe:zurich'] = '蘇黎世';
$labels['tz:indian'] = '印度洋';
$labels['tz:indian:antananarivo'] = '安塔那那列佛';
$labels['tz:indian:chagos'] = '查戈斯群島';
$labels['tz:indian:christmas'] = '聖誕節島';
$labels['tz:indian:cocos'] = '科科斯群島';
$labels['tz:indian:comoro'] = '葛摩';
$labels['tz:indian:kerguelen'] = '凱爾蓋朗群島';
$labels['tz:indian:mahe'] = '馬埃島';
$labels['tz:indian:maldives'] = '馬爾地夫';
$labels['tz:indian:mauritius'] = '模里西斯';
$labels['tz:indian:mayotte'] = '馬約特';
$labels['tz:indian:reunion'] = '留尼旺';
$labels['tz:pacific'] = '太平洋';
$labels['tz:pacific:apia'] = '阿皮亞';
$labels['tz:pacific:auckland'] = '奧克蘭';
$labels['tz:pacific:bougainville'] = '布干維爾島';
$labels['tz:pacific:chatham'] = '查塔姆';
$labels['tz:pacific:chuuk'] = '楚克';
$labels['tz:pacific:easter'] = '復活節島';
$labels['tz:pacific:efate'] = '埃法特島';
$labels['tz:pacific:enderbury'] = '恩德伯里島';
$labels['tz:pacific:fakaofo'] = '法考福環礁';
$labels['tz:pacific:fiji'] = '斐濟';
$labels['tz:pacific:funafuti'] = '富納富提';
$labels['tz:pacific:galapagos'] = '科隆群島';
$labels['tz:pacific:gambier'] = '甘比爾群島';
$labels['tz:pacific:guadalcanal'] = '瓜達康納爾島';
$labels['tz:pacific:guam'] = '關島';
$labels['tz:pacific:honolulu'] = '檀香山';
$labels['tz:pacific:johnston'] = '強斯頓環礁';
$labels['tz:pacific:kiritimati'] = '聖誕島';
$labels['tz:pacific:kosrae'] = '科斯雷';
$labels['tz:pacific:kwajalein'] = '瓜加林環礁';
$labels['tz:pacific:majuro'] = '馬久羅';
$labels['tz:pacific:marquesas'] = '馬克薩斯群島';
$labels['tz:pacific:midway'] = '中途島';
$labels['tz:pacific:nauru'] = '瑙魯';
$labels['tz:pacific:niue'] = '紐埃';
$labels['tz:pacific:norfolk'] = '諾福克島';
$labels['tz:pacific:noumea'] = '諾美亞';
$labels['tz:pacific:pago_pago'] = '巴哥巴哥';
$labels['tz:pacific:palau'] = '帛琉';
$labels['tz:pacific:pitcairn'] = '皮特肯群島';
$labels['tz:pacific:pohnpei'] = '澎貝島';
$labels['tz:pacific:port_moresby'] = '莫爾茲比港';
$labels['tz:pacific:rarotonga'] = '拉羅湯加島';
$labels['tz:pacific:saipan'] = '塞班島';
$labels['tz:pacific:tahiti'] = '大溪地';
$labels['tz:pacific:tarawa'] = '塔拉瓦環礁';
$labels['tz:pacific:tongatapu'] = '湯加塔布島';
$labels['tz:pacific:wake'] = '威克島';
$labels['tz:pacific:wallis'] = '沃利斯群島';
localization/zh_TW/csv2vcard.inc000064400000007234151727150570012677 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/zh_TW/csv2vcard.inc                                      |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "紀念日";
$map['assistants_name'] = "助理";
$map['assistants_phone'] = "助理電話";
$map['birthday'] = "生日";
$map['business_city'] = "商務 - 市/鎮";
$map['business_countryregion'] = "商務 - 國家/地區";
$map['business_fax'] = "商務傳真";
$map['business_phone'] = "商務電話";
$map['business_phone_2'] = "商務電話 2";
$map['business_postal_code'] = "商務 - 郵遞區號";
$map['business_state'] = "商務 - 縣市";
$map['business_street'] = "商務 - 街";
$map['car_phone'] = "汽車電話";
$map['categories'] = "類別";
$map['company'] = "公司";
$map['department'] = "部門";
$map['email_address'] = "電子郵件地址";
$map['first_name'] = "名字";
$map['gender'] = "性別";
$map['home_city'] = "住家 - 市/鎮";
$map['home_countryregion'] = "住家 - 國家/地區";
$map['home_fax'] = "住家傳真";
$map['home_phone'] = "住家電話";
$map['home_phone_2'] = "住家電話 2";
$map['home_postal_code'] = "住家 - 郵遞區號";
$map['home_state'] = "住家 - 縣/市";
$map['home_street'] = "住家 - 街";
$map['job_title'] = "職稱";
$map['last_name'] = "姓氏";
$map['managers_name'] = "主管名稱";
$map['middle_name'] = "中間名";
$map['mobile_phone'] = "行動電話";
$map['notes'] = "記事";
$map['other_city'] = "其他 - 市/鎮";
$map['other_countryregion'] = "其他 - 國家/地區";
$map['other_fax'] = "其他傳真";
$map['other_phone'] = "其他電話";
$map['other_postal_code'] = "其他 - 郵遞區號";
$map['other_state'] = "其他 - 縣/市";
$map['other_street'] = "其他 - 街";
$map['pager'] = "呼叫器";
$map['primary_phone'] = "代表電話";
$map['spouse'] = "配偶";
$map['suffix'] = "稱謂";
$map['title'] = "頭銜";
$map['web_page'] = "網頁";
$map['last'] = "姓";
$map['first'] = "名";
$map['birth_day'] = "生日 (日)";
$map['birth_month'] = "生日 (月)";
$map['birth_year'] = "生日 (年)";
$map['display_name'] = "顯示名稱";
$map['fax_number'] = "傳真號碼";
$map['home_address'] = "住家住址";
$map['home_country'] = "居住國家";
$map['home_zipcode'] = "住址郵遞區號";
$map['mobile_number'] = "手機號碼";
$map['nickname'] = "暱稱";
$map['organization'] = "Organization";
$map['pager_number'] = "呼叫器號碼";
$map['primary_email'] = "主要 Email";
$map['secondary_email'] = "次要 Email";
$map['web_page_1'] = "網頁 1";
$map['web_page_2'] = "網頁 2";
$map['work_phone'] = "商務電話";
$map['work_address'] = "商務地址";
$map['work_country'] = "商務國家";
$map['work_zipcode'] = "商務郵遞區號";
$map['work_city'] = "商務市鎮";
$map['work_state'] = "商務縣市";
$map['home_city_short'] = "居住市鎮";
$map['home_state_short'] = "居住縣市";
localization/zh_TW/labels.inc000064400000076626151727150570012257 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '歡迎使用 $product';
$labels['username'] = '使用者名稱';
$labels['password'] = '使用者密碼';
$labels['server'] = '伺服器';
$labels['login'] = '登入';
$labels['oauthlogin'] = '使用 $provider 登入';
$labels['menu'] = '選單';
$labels['logout'] = '登出';
$labels['mail'] = '電子郵件';
$labels['settings'] = '設定';
$labels['addressbook'] = '通訊錄';
$labels['darkmode'] = '深色模式';
$labels['lightmode'] = '淺色模式';
$labels['inbox'] = '收件匣';
$labels['drafts'] = '草稿匣';
$labels['sent'] = '寄件備份';
$labels['trash'] = '垃圾桶';
$labels['junk'] = '垃圾郵件';
$labels['show_real_foldernames'] = '顯示特殊資料夾的實際名稱';
$labels['subject'] = '主旨';
$labels['from'] = '寄件者';
$labels['sender'] = '寄件者';
$labels['to'] = '收件者';
$labels['cc'] = '副本';
$labels['bcc'] = '密件副本';
$labels['replyto'] = '回覆至';
$labels['followupto'] = '郵件列表回覆地址';
$labels['date'] = '日期';
$labels['size'] = '大小';
$labels['priority'] = '優先次序';
$labels['organization'] = '組織/公司';
$labels['readstatus'] = '讀信狀態';
$labels['listoptions'] = '列表選項...';
$labels['listoptionstitle'] = '列表選項';
$labels['mailboxlist'] = '資料夾';
$labels['messagesfromto'] = '郵件 $from 至 $to,共 $count 封';
$labels['threadsfromto'] = '郵件串 $from 至 $to,共 $count 個';
$labels['messagenrof'] = '第 $nr 封郵件,共有 $count 封';
$labels['fromtoshort'] = '$from – $to 共 $count 個';
$labels['copy'] = '複製';
$labels['move'] = '移動';
$labels['moveto'] = '移至...';
$labels['copyto'] = '複製到...';
$labels['download'] = '下載';
$labels['open'] = '開啟';
$labels['showattachment'] = '顯示';
$labels['showanyway'] = '總是顯示';
$labels['filename'] = '檔案名稱';
$labels['filesize'] = '檔案大小';
$labels['addtoaddressbook'] = '新增至通訊錄';
$labels['sun'] = '週日';
$labels['mon'] = '週一';
$labels['tue'] = '週二';
$labels['wed'] = '週三';
$labels['thu'] = '週四';
$labels['fri'] = '週五';
$labels['sat'] = '週六';
$labels['sunday'] = '星期日';
$labels['monday'] = '星期一';
$labels['tuesday'] = '星期二';
$labels['wednesday'] = '星期三';
$labels['thursday'] = '星期四';
$labels['friday'] = '星期五';
$labels['saturday'] = '星期六';
$labels['jan'] = '一';
$labels['feb'] = '二';
$labels['mar'] = '三';
$labels['apr'] = '四';
$labels['may'] = '五';
$labels['jun'] = '六';
$labels['jul'] = '七';
$labels['aug'] = '八';
$labels['sep'] = '九';
$labels['oct'] = '十';
$labels['nov'] = '十一';
$labels['dec'] = '十二';
$labels['longjan'] = '1 月';
$labels['longfeb'] = '2 月';
$labels['longmar'] = '3 月';
$labels['longapr'] = '4 月';
$labels['longmay'] = '5 月';
$labels['longjun'] = '6 月';
$labels['longjul'] = '7 月';
$labels['longaug'] = '8 月';
$labels['longsep'] = '9 月';
$labels['longoct'] = '10 月';
$labels['longnov'] = '11 月';
$labels['longdec'] = '12 月';
$labels['today'] = '今日';
$labels['refresh'] = '重新整理';
$labels['checkmail'] = '檢查新郵件';
$labels['compose'] = '撰寫新郵件';
$labels['writenewmessage'] = '撰寫新郵件';
$labels['reply'] = '回覆';
$labels['replytomessage'] = '回覆';
$labels['replytoallmessage'] = '全部回覆';
$labels['replyall'] = '全部回覆';
$labels['replylist'] = '清單回覆';
$labels['forward'] = '轉寄';
$labels['forwardinline'] = '以內文方式轉寄';
$labels['forwardattachment'] = '以附件方式轉寄';
$labels['forwardmessage'] = '轉寄';
$labels['bouncemsg'] = '重寄 (退回郵件)';
$labels['bounce'] = '重寄';
$labels['deletemessage'] = '刪除郵件';
$labels['movemessagetotrash'] = '移動郵件至垃圾桶';
$labels['printmessage'] = '列印此郵件';
$labels['previousmessage'] = '顯示上一封郵件';
$labels['firstmessage'] = '顯示第一封郵件';
$labels['nextmessage'] = '顯示下一封郵件';
$labels['lastmessage'] = '顯示最後一封郵件';
$labels['backtolist'] = '回到郵件清單';
$labels['viewsource'] = '顯示郵件原始內容';
$labels['mark'] = '標記';
$labels['markmessages'] = '標記選取的郵件';
$labels['markread'] = '標示為已讀取';
$labels['markunread'] = '標示為未讀取';
$labels['markflagged'] = '標上旗標';
$labels['markunflagged'] = '移除旗標';
$labels['moreactions'] = '更多動作...';
$labels['markallread'] = '全部標示為已讀取';
$labels['folders-cur'] = '僅選取的資料夾';
$labels['folders-sub'] = '選取的資料夾及其子資料夾';
$labels['folders-all'] = '所有資料夾';
$labels['more'] = '更多';
$labels['back'] = '返回';
$labels['options'] = '選項';
$labels['composeoptions'] = '撰寫選項';
$labels['optionsandattachments'] = '選項及附件';
$labels['actions'] = '動作';
$labels['first'] = '第一個';
$labels['last'] = '最後一個';
$labels['previous'] = '前一個';
$labels['next'] = '後一個';
$labels['select'] = '選取';
$labels['selection'] = '選取範圍';
$labels['all'] = '全部郵件';
$labels['none'] = '無';
$labels['currpage'] = '目前頁面';
$labels['isread'] = '已讀';
$labels['unread'] = '未讀取的郵件';
$labels['flagged'] = '已加旗標';
$labels['unflagged'] = '無旗標';
$labels['unanswered'] = '未回覆的郵件';
$labels['withattachment'] = '包含附件';
$labels['deleted'] = '已刪除的郵件';
$labels['undeleted'] = '未刪除的郵件';
$labels['replied'] = '已回覆';
$labels['forwarded'] = '已轉寄';
$labels['invert'] = '反選';
$labels['filter'] = '篩選範圍';
$labels['list'] = '清單';
$labels['threads'] = '郵件串';
$labels['expand-all'] = '全部展開';
$labels['expand-unread'] = '展開未讀取';
$labels['collapse-all'] = '全部收起';
$labels['threaded'] = '郵件串';
$labels['showunread'] = '顯示未讀郵件';
$labels['autoexpand_threads'] = '展開郵件串';
$labels['do_expand'] = '所有郵件串';
$labels['expand_only_unread'] = '只展開未讀郵件';
$labels['fromto'] = '寄件者/收件者';
$labels['flag'] = '旗標';
$labels['attachment'] = '附件';
$labels['nonesort'] = '無';
$labels['sentdate'] = '寄送時間';
$labels['arrival'] = '到達時間';
$labels['asc'] = '遞增';
$labels['desc'] = '遞減';
$labels['listcolumns'] = '列出欄位';
$labels['listsorting'] = '排序欄位';
$labels['listorder'] = '排序順序';
$labels['listmode'] = '列表檢視模式';
$labels['lmode'] = '列表模式';
$labels['layout'] = '畫面配置';
$labels['layoutwidescreen'] = '寬螢幕';
$labels['layoutdesktop'] = '桌面';
$labels['layoutlist'] = '清單';
$labels['layoutwidescreendesc'] = '寬螢幕 (3欄檢視)';
$labels['layoutdesktopdesc'] = '桌面 (寬列表,下面是郵件預覽)';
$labels['layoutlistdesc'] = '列表 (無郵件預覽)';
$labels['folderactions'] = '資料夾動作...';
$labels['compact'] = '壓緊';
$labels['empty'] = '清空';
$labels['importmessages'] = '匯入郵件';
$labels['mailimportdesc'] = '可以用 <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> 或 <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> 格式檔案上傳郵件。';
$labels['mailimportzip'] = '多個檔案可以壓縮為 ZIP 檔案。';
$labels['quota'] = '磁碟使用量';
$labels['unknown'] = '未知';
$labels['unlimited'] = '無限制';
$labels['quotatype'] = '配額類型';
$labels['quotatotal'] = '上限';
$labels['quotaused'] = '已使用';
$labels['quotastorage'] = '儲存空間';
$labels['quotamessage'] = '郵件數目';
$labels['shortheaderdate'] = '於 $date';
$labels['shortheaderto'] = '於 $date,寄給 $to';
$labels['shortheaderfrom'] = '於 $date,寄自 $from';
$labels['quicksearch'] = '快速搜尋';
$labels['searchplaceholder'] = '搜尋...';
$labels['resetsearch'] = '重設搜尋';
$labels['searchmod'] = '修改搜尋';
$labels['msgtext'] = '整封郵件';
$labels['body'] = '內文';
$labels['type'] = '類型';
$labels['namex'] = '名稱';
$labels['searchscope'] = '範圍';
$labels['currentfolder'] = '目前的資料夾';
$labels['subfolders'] = '目前的資料夾 (含子資料夾)';
$labels['allfolders'] = '所有資料夾';
$labels['searchinterval-1W'] = '超過一週';
$labels['searchinterval-1M'] = '超過一個月';
$labels['searchinterval-1Y'] = '超過一年';
$labels['searchinterval1W'] = '一週之內';
$labels['searchinterval1M'] = '一個月之內';
$labels['searchinterval1Y'] = '一年之內';
$labels['openinextwin'] = '在新視窗開啟';
$labels['emlsave'] = '下載 (.eml)';
$labels['changeformattext'] = '以純文字格式顯示';
$labels['changeformathtml'] = '以 HTML 格式顯示';
$labels['editasnew'] = '以新郵件編輯';
$labels['send'] = '寄出';
$labels['sendmessage'] = '立即寄出';
$labels['savemessage'] = '儲存成草稿';
$labels['addattachment'] = '加入附件檔案';
$labels['charset'] = '郵件編碼';
$labels['editortype'] = '編輯器類型';
$labels['returnreceipt'] = '要求讀取回條';
$labels['dsn'] = '傳送狀態通知';
$labels['mailreplyintro'] = '$sender 於 $date 寫到:';
$labels['originalmessage'] = '原始郵件';
$labels['selectimage'] = ' 選擇圖片';
$labels['addimage'] = '加入圖片';
$labels['selectmedia'] = '選擇影片';
$labels['addmedia'] = '加入影片';
$labels['encrypt'] = '加密';
$labels['encryptmessage'] = '加密郵件';
$labels['encryptmessagemailvelope'] = '以 Mailvelope 加密郵件';
$labels['importpubkeys'] = '匯入公鑰';
$labels['encryptedsendialog'] = '發送加密郵件';
$labels['encryptandsign'] = '加密並簽署';
$labels['keyid'] = '金鑰 ID';
$labels['keylength'] = '位元';
$labels['keyexpired'] = '已過期';
$labels['keyrevoked'] = '已撤銷';
$labels['bccinstead'] = '使用「密件副本」';
$labels['addheader'] = '加入收件者 (標頭)';
$labels['insert'] = '插入';
$labels['insertcontact'] = '插入聯絡人';
$labels['recipient'] = '收件者';
$labels['recipientedit'] = '收件者編輯';
$labels['editidents'] = '編輯身份資訊';
$labels['spellcheck'] = '拼字';
$labels['checkspelling'] = '拼字檢查';
$labels['resumeediting'] = '繼續編輯';
$labels['revertto'] = '恢復至';
$labels['restore'] = '回復';
$labels['restoremessage'] = '回復郵件?';
$labels['ignore'] = ' 忽略';
$labels['responses'] = '預設回應';
$labels['insertresponse'] = '插入預設回應';
$labels['manageresponses'] = '管理預設回應';
$labels['newresponse'] = '建立預設回應';
$labels['addresponse'] = ' 加入預設回應';
$labels['editresponse'] = '編輯預設回應';
$labels['editresponses'] = '編輯預設回應';
$labels['responsename'] = '名稱';
$labels['responsetext'] = '預設回應內容';
$labels['attach'] = '附件';
$labels['attachments'] = '附件檔案';
$labels['upload'] = '上傳';
$labels['uploadprogress'] = '$percent ($total 中的 $current)';
$labels['close'] = '關閉';
$labels['messageoptions'] = '郵件選項...';
$labels['togglecomposeoptions'] = ' 切換撰寫選項';
$labels['attachmentrename'] = '重新命名附件';
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '普通';
$labels['high'] = '高';
$labels['highest'] = '最高';
$labels['nosubject'] = '(沒有主旨)';
$labels['showimages'] = '顯示圖片';
$labels['allow'] = '允許';
$labels['alwaysshow'] = '總是顯示來自 $sender 的圖片';
$labels['alwaysallow'] = '必定允許寄自 $sender 的郵件';
$labels['isdraft'] = '這是草稿';
$labels['andnmore'] = '第$nr封或是更多...';
$labels['details'] = '詳情';
$labels['summary'] = '概覽';
$labels['headers'] = '標頭';
$labels['allheaders'] = '所有標頭...';
$labels['togglemoreheaders'] = '顯示更多的郵件標頭';
$labels['togglefullheaders'] = '切換原始郵件標頭';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '純文字';
$labels['savesentmessagein'] = '儲存寄件備份至';
$labels['dontsave'] = '不要儲存';
$labels['maxuploadsize'] = '上傳檔案大小限制為 $size';
$labels['addcc'] = '新增副本';
$labels['addbcc'] = '新增密件副本';
$labels['addreplyto'] = '新增回覆地址';
$labels['addfollowupto'] = '新增郵件列表回覆地址';
$labels['sendreceipt'] = '傳送讀取回條?';
$labels['mdnrequest'] = '此郵件的寄件者希望在你閱讀此郵件時受到通知。你想要通知寄件者嗎?';
$labels['receiptread'] = '郵件回條(已閱讀)';
$labels['yourmessage'] = '這是你郵件的郵件回條';
$labels['receiptnote'] = '注意:此回條只能確認收件者的電腦顯示了郵件,並不能保證收件者已閱讀或了解郵件的內容。';
$labels['sendalwaysto'] = '總是傳送給 $email';
$labels['zoomin'] = '放大';
$labels['zoomout'] = '縮小';
$labels['rotate'] = '旋轉';
$labels['increaseimage'] = '放大圖像';
$labels['decreaseimage'] = '縮小圖像';
$labels['rotateimage'] = '旋轉圖像';
$labels['showtools'] = '顯示圖像工具';
$labels['hidetools'] = '隱藏圖像工具';
$labels['name'] = '顯示名稱';
$labels['firstname'] = '名字';
$labels['surname'] = '姓氏';
$labels['middlename'] = '中名';
$labels['nameprefix'] = '頭銜 (例如 Dr.)';
$labels['namesuffix'] = '後綴 (例如 Jr.)';
$labels['nickname'] = '暱稱';
$labels['jobtitle'] = '職位';
$labels['department'] = '部門';
$labels['gender'] = '性別';
$labels['maidenname'] = '閨姓';
$labels['email'] = '電子郵件';
$labels['phone'] = '電話';
$labels['address'] = '地址';
$labels['street'] = '街道';
$labels['locality'] = '城市';
$labels['zipcode'] = '郵遞區號';
$labels['region'] = '州/省';
$labels['country'] = '國家/地區';
$labels['birthday'] = '生日';
$labels['anniversary'] = '周年紀念日';
$labels['website'] = '網站';
$labels['instantmessenger'] = '即時通訊';
$labels['notes'] = '註解';
$labels['male'] = '男';
$labels['female'] = '女';
$labels['manager'] = '上司';
$labels['assistant'] = '助理';
$labels['spouse'] = '配偶';
$labels['allfields'] = '所有欄位';
$labels['search'] = '搜尋';
$labels['searchresult'] = ' 搜尋結果';
$labels['advsearch'] = '進階搜尋';
$labels['advanced'] = '進階';
$labels['other'] = '其他';
$labels['printcontact'] = ' 列印聯絡人';
$labels['qrcode'] = 'QR 碼';
$labels['typehome'] = '住家';
$labels['typework'] = '工作';
$labels['typeother'] = '其他';
$labels['typemobile'] = '行動電話';
$labels['typemain'] = '主要';
$labels['typehomefax'] = '住家傳真';
$labels['typeworkfax'] = '工作傳真';
$labels['typecar'] = '汽車';
$labels['typepager'] = '傳呼機';
$labels['typevideo'] = '影片';
$labels['typeassistant'] = '助理';
$labels['typehomepage'] = '首頁';
$labels['typeblog'] = '部落格';
$labels['typeprofile'] = '設定檔';
$labels['addfield'] = '加入欄位...';
$labels['addcontact'] = '加入聯絡人';
$labels['editcontact'] = '編輯聯絡人';
$labels['contacts'] = '聯絡人';
$labels['contactproperties'] = '聯絡人資訊';
$labels['contactnameandorg'] = ' 姓名和組織/公司';
$labels['personalinfo'] = '個人資訊';
$labels['personal'] = '個人';
$labels['contactphoto'] = '聯絡人相片';
$labels['edit'] = '編輯';
$labels['cancel'] = '取消';
$labels['save'] = '儲存';
$labels['delete'] = '刪除';
$labels['discard'] = '丟棄';
$labels['continue'] = '繼續';
$labels['ok'] = '確定';
$labels['rename'] = '重新命名';
$labels['addphoto'] = '加入';
$labels['replacephoto'] = '取代';
$labels['uploadphoto'] = '上傳相片';
$labels['choosefile'] = '選擇檔案...';
$labels['choosefiles'] = '選擇檔案...';
$labels['browse'] = '瀏覽';
$labels['newcontact'] = ' 新建聯絡人';
$labels['deletecontact'] = '刪除所選擇的聯絡人';
$labels['composeto'] = '寄信至所選擇的聯絡人';
$labels['contactsfromto'] = '聯絡人 $from 至 $to,共 $count 人';
$labels['print'] = '列印';
$labels['export'] = '匯出';
$labels['exportall'] = '全部匯出';
$labels['exportsel'] = '匯出所選項目';
$labels['exportvcards'] = '匯出通訊錄為 vCard 格式';
$labels['newgroup'] = '新建群組';
$labels['addgroup'] = '加入群組';
$labels['grouprename'] = '重新命名群組';
$labels['groupdelete'] = '刪除群組';
$labels['groupassign'] = '分配到群組...';
$labels['groupremove'] = '從群組移除';
$labels['groupremoveselected'] = '於群組刪除所選的聯絡人';
$labels['uponelevel'] = '回到上一層';
$labels['previouspage'] = '顯示上一頁';
$labels['firstpage'] = '顯示第一頁';
$labels['nextpage'] = '顯示下一頁';
$labels['lastpage'] = '顯示最後一頁';
$labels['group'] = '群組';
$labels['groups'] = '群組';
$labels['listgroup'] = '列出群組成員';
$labels['personaladrbook'] = '個人通訊錄';
$labels['searchsave'] = '儲存搜尋結果';
$labels['searchdelete'] = '刪除搜尋結果';
$labels['import'] = '匯入';
$labels['importcontacts'] = '匯入聯絡人';
$labels['importfromfile'] = '從檔案匯入';
$labels['importtarget'] = '新增聯絡人到';
$labels['importreplace'] = '取代整個通訊錄';
$labels['importgroups'] = '匯入群組';
$labels['importgroupsall'] = '全部 (必要時新增群組)';
$labels['importgroupsexisting'] = '僅限於既有群組';
$labels['importdesc'] = '可以上傳通訊錄的所有聯絡人。<br/>現時支援 <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> 或 CSV 格式。';
$labels['importmapdesc'] = '在繼續進行 CSV(逗號分隔)資料匯入前,請先確認下方的欄位對映資訊正確無誤。';
$labels['fieldnotmapped'] = '欄位未對映(不匯入)';
$labels['skipheader'] = '不匯入第一行(標頭)';
$labels['done'] = '完成';
$labels['settingsfor'] = '設定';
$labels['about'] = '關於';
$labels['preferences'] = '設定';
$labels['userpreferences'] = '個人設定';
$labels['editpreferences'] = '編輯個人設定';
$labels['identities'] = '身份資訊';
$labels['manageidentities'] = '管理識別身份';
$labels['newidentity'] = '新增識別身份';
$labels['addidentity'] = '加入識別身份';
$labels['editidentity'] = '編輯識別身份';
$labels['identityencryption'] = '加密';
$labels['preferhtml'] = '使用 HTML 顯示';
$labels['defaultcharset'] = '預設編碼';
$labels['htmlmessage'] = 'HTML 郵件';
$labels['messagepart'] = '部分';
$labels['digitalsig'] = '數位簽章';
$labels['dateformat'] = '日期格式';
$labels['timeformat'] = '時間格式';
$labels['prettydate'] = '簡短日期顯示';
$labels['setdefault'] = '設成預設值';
$labels['autodetect'] = '自動選擇';
$labels['language'] = '語言';
$labels['timezone'] = '時區';
$labels['pagesize'] = '每頁顯示列數';
$labels['signature'] = '簽名檔';
$labels['dstactive'] = '日光節約時間';
$labels['showinextwin'] = '在新視窗顯示郵件';
$labels['composeextwin'] = '在新視窗撰寫郵件';
$labels['htmleditor'] = '使用 HTML 撰寫郵件';
$labels['htmlonreply'] = '僅在回覆 HTML 信件時';
$labels['htmlonreplyandforward'] = '僅在轉寄或回覆 HTML 信件時';
$labels['htmlsignature'] = 'HTML 簽名檔';
$labels['showemail'] = '一併顯示名稱和電郵地址';
$labels['previewpane'] = '顯示預覽窗格';
$labels['skin'] = '版面風格';
$labels['logoutclear'] = '登出時清空垃圾桶';
$labels['logoutcompact'] = '登出時壓緊收件匣';
$labels['uisettings'] = '使用者介面';
$labels['serversettings'] = '伺服器設定';
$labels['mailboxview'] = '信箱顯示';
$labels['mdnrequests'] = '讀取回條回應';
$labels['askuser'] = '詢問我';
$labels['autosend'] = '自動送出';
$labels['autosendknown'] = '傳送回條給我的聯絡人,其他則詢問我';
$labels['autosendknownignore'] = '傳送回條給我的聯絡人,其他則忽略';
$labels['autosendtrusted'] = '傳送回條給受信任的寄件者,否則請問我';
$labels['autosendtrustedignore'] = '傳送回條給受信任的寄件者,否則請忽略';
$labels['ignorerequest'] = '忽略要求';
$labels['readwhendeleted'] = '將刪除的郵件標示為已讀取';
$labels['flagfordeletion'] = '只將郵件標示為刪除,而非真的刪除';
$labels['skipdeleted'] = '不要顯示已刪除的郵件';
$labels['deletealways'] = '如果移動郵件到垃圾桶失敗,就直接刪除';
$labels['deletejunk'] = '直接刪除「垃圾郵件」中的郵件';
$labels['showremoteimages'] = '顯示遠端郵件內文的圖片';
$labels['allowremoteresources'] = '允許遠端資源 (圖像、樣式)';
$labels['fromknownsenders'] = '從已知的寄件者';
$labels['fromtrustedsenders'] = '來自受信任的寄件者';
$labels['frommycontacts'] = '來自我的聯絡人';
$labels['always'] = '總是';
$labels['alwaysbutplain'] = '總是,除非回覆純文字郵件';
$labels['showinlineimages'] = '將附加檔案的圖片顯示於郵件最後';
$labels['autosavedraft'] = '自動儲存草稿';
$labels['everynminutes'] = '每 $n 分鐘';
$labels['refreshinterval'] = '重新整理 (檢查新郵件等)';
$labels['never'] = '永不';
$labels['immediately'] = '立即';
$labels['messagesdisplaying'] = '郵件顯示';
$labels['messagescomposition'] = '撰寫郵件';
$labels['mimeparamfolding'] = '附加檔案名稱的編碼方式';
$labels['2231folding'] = '完全 RFC 2231 模式(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 混合模式(MS Outlook)';
$labels['2047folding'] = '完全 RFC 2047 模式(其他)';
$labels['force7bit'] = '對 8 位元字元使用 MIME 編碼';
$labels['savelocalstorage'] = "( 暫時 ) 保存在瀏覽器的本機儲存";
$labels['advancedoptions'] = '進階選項';
$labels['toggleadvancedoptions'] = '切換高級選項';
$labels['focusonnewmessage'] = '收到新郵件時使瀏覽器獲得焦點';
$labels['checkallfolders'] = '對於所有資料夾,都要檢查有否新郵件';
$labels['displaynext'] = '刪除/移動之後,顯示下一個清單項目';
$labels['defaultfont'] = 'HTML 郵件的預設字型';
$labels['mainoptions'] = '主要選項';
$labels['browseroptions'] = '瀏覽器選項';
$labels['section'] = '分類';
$labels['maintenance'] = '管理';
$labels['newmessage'] = '新郵件';
$labels['signatureoptions'] = '簽名檔選項';
$labels['whenreplying'] = '回覆時';
$labels['replyempty'] = '不要包含原來的信件內容';
$labels['replytopposting'] = '在原文上方開始新郵件';
$labels['replytoppostingnoindent'] = '在原文上方開始新郵件 (無縮排)';
$labels['replybottomposting'] = '在原文下方開始新郵件';
$labels['replyremovesignature'] = '回覆時移除原有簽名檔';
$labels['autoaddsignature'] = '自動附加簽名';
$labels['newmessageonly'] = '僅新郵件';
$labels['replyandforwardonly'] = '僅回覆或轉寄時';
$labels['insertsignature'] = '插入簽名檔';
$labels['sigbelow'] = '將簽名置於引用郵件之後';
$labels['sigseparator'] = '在簽名強制使用標準分隔符號';
$labels['automarkread'] = '將郵件標記為已讀';
$labels['afternseconds'] = '$n 秒之後';
$labels['reqmdn'] = '總是索取讀取回條';
$labels['reqdsn'] = '總是要求傳送狀態通知';
$labels['replysamefolder'] = '將回信放在與原信件相同的資料夾';
$labels['defaultabook'] = '預設通訊錄';
$labels['autocompletesingle'] = '在自動完成時略過其他電郵地址';
$labels['listnamedisplay'] = '聯絡人顯示方式';
$labels['contactformmode'] = '聯絡人表單模式';
$labels['privatemode'] = '私人(家)';
$labels['businessmode'] = '商務(工作)';
$labels['collectedaddresses'] = '已蒐集的地址';
$labels['collectedrecipients'] = '已蒐集的收件者';
$labels['collectedrecipientsopt'] = '將寄送電子郵件收件者儲存於';
$labels['collectedsendersopt'] = '將受信任的寄件者儲存於';
$labels['trustedsenders'] = '受信任的寄件者';
$labels['spellcheckbeforesend'] = '寄送前執行拼字檢查';
$labels['spellcheckoptions'] = '拼字檢查選項';
$labels['spellcheckignoresyms'] = '忽略有符號的字';
$labels['spellcheckignorenums'] = '忽略有數字的字';
$labels['spellcheckignorecaps'] = '忽略全大寫字母的字';
$labels['addtodict'] = '加入詞典';
$labels['mailtoprotohandler'] = '註冊為 mailto: 連結的預設處理常式';
$labels['standardwindows'] = '以新視窗顯示彈出式對話框';
$labels['forwardmode'] = '郵件轉寄方式';
$labels['inline'] = '放入內文';
$labels['asattachment'] = '當成附件';
$labels['replyallmode'] = '「全部回覆」按鈕的預設動作';
$labels['replyalldefault'] = '全部回覆';
$labels['replyalllist'] = '只回覆郵件列表 (如有)';
$labels['allmessages'] = '所有郵件';
$labels['folder'] = '資料夾';
$labels['folders'] = '資料夾';
$labels['foldername'] = '資料夾名稱';
$labels['subscribed'] = '訂閱';
$labels['messagecount'] = '郵件數目';
$labels['create'] = '建立';
$labels['createfolder'] = '建立新資料夾';
$labels['managefolders'] = '管理資料夾';
$labels['specialfolders'] = '特殊資料夾';
$labels['properties'] = '屬性';
$labels['folderproperties'] = '資料夾屬性';
$labels['parentfolder'] = '上一層資料夾';
$labels['location'] = '位置';
$labels['info'] = '資訊';
$labels['getfoldersize'] = '點擊顯示資料夾大小';
$labels['changesubscription'] = '點擊以改變訂閱';
$labels['foldertype'] = '資料夾類型';
$labels['personalfolder'] = '私人資料夾';
$labels['otherfolder'] = '其他使用者資料夾';
$labels['sharedfolder'] = '公用資料夾';
$labels['findfolders'] = '尋找資料夾';
$labels['findcontacts'] = '尋找聯絡人';
$labels['findmail'] = '尋找郵件';
$labels['namespace.personal'] = '個人';
$labels['namespace.other'] = '其他使用者';
$labels['namespace.shared'] = '共享';
$labels['dualuselabel'] = '僅可包含';
$labels['dualusemail'] = '郵件';
$labels['dualusefolder'] = '資料夾';
$labels['generate'] = '建立';
$labels['encryptioncreatekey'] = '建立新的金鑰對';
$labels['openmailvelopesettings'] = '開啟 Mailvelope 設定';
$labels['encryptionprivkeysinmailvelope'] = '有 $nr 個符合的私鑰儲存於 Mailvelope 鑰匙圈:';
$labels['encryptionnoprivkeysinmailvelope'] = '未有在 Mailvelope 附加程式找到寄件者的身分的 PGP 私鑰。是否建立一個新的,以啟用郵件加密?';
$labels['encryption'] = '加密';
$labels['mailvelopeoptions'] = 'Mailvelope 選項';
$labels['mailvelopemainkeyring'] = '使用 Mailvelope 主鑰匙圈';
$labels['mailvelopenotfound'] = '您的瀏覽器未啟用/安裝 Mailvelope 擴充套件';
$labels['sortby'] = '排序';
$labels['sortasc'] = '遞增排序';
$labels['sortdesc'] = '遞減排序';
$labels['undo'] = '復原';
$labels['installedplugins'] = '已安裝的擴充套件';
$labels['plugin'] = '擴充套件';
$labels['version'] = '版本';
$labels['source'] = '來源';
$labels['destination'] = '目的地';
$labels['license'] = '授權許可';
$labels['support'] = '取得支援';
$labels['savedsearches'] = '儲存的搜尋樣式';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = '萬國碼';
$labels['english'] = '英文';
$labels['westerneuropean'] = '西歐語系';
$labels['easterneuropean'] = '東歐語系';
$labels['southeasterneuropean'] = '東南歐語系';
$labels['baltic'] = '波羅的海語系';
$labels['cyrillic'] = '西里爾字母';
$labels['arabic'] = '阿拉伯文';
$labels['greek'] = '希臘文';
$labels['hebrew'] = '希伯來文';
$labels['turkish'] = '土耳其文';
$labels['nordic'] = '北歐語系';
$labels['thai'] = '泰文';
$labels['celtic'] = '塞爾特語系';
$labels['vietnamese'] = '越南文';
$labels['japanese'] = '日文';
$labels['korean'] = '韓文';
$labels['chinese'] = '中文';
$labels['arialabeltopnav'] = '視窗控制';
$labels['arialabeltasknav'] = '應用程式任務';
$labels['arialabeltoolbar'] = '應用程式工具列';
$labels['arialabellistnav'] = '清單導覽';
$labels['arialabelactivetask'] = '現行的任務';
$labels['arialabelmessagessearchfilter'] = '電子郵件列表篩選';
$labels['arialabelmailsearchform'] = '電子郵件搜索表單';
$labels['arialabelcontactsearchform'] = '聯絡人搜索表單';
$labels['arialabelmailquicksearchbox'] = ' 電子郵件搜索輸入';
$labels['arialabelquicksearchbox'] = '搜索輸入';
$labels['arialabelfoldersearchfilter'] = '文件夾列表過濾器';
$labels['arialabelfoldersearchform'] = '文件夾搜索表單';
$labels['arialabelfolderlist'] = '電郵資料夾選擇';
$labels['arialabelmessagelist'] = '電郵列表';
$labels['arialabelmailpreviewframe'] = '郵件預覽';
$labels['arialabelmailboxmenu'] = '資料夾動作選單';
$labels['arialabellistselectmenu'] = '清單選擇選單';
$labels['arialabelthreadselectmenu'] = '郵件串列表選單';
$labels['arialabelmessagelistoptions'] = '郵件清單顯示及排序選項';
$labels['arialabelmailimportdialog'] = '郵件匯入對話匣';
$labels['arialabelmessagenav'] = '郵件導覽';
$labels['arialabelmessagebody'] = '郵件正文';
$labels['arialabelmessageactions'] = '郵件動作';
$labels['arialabelcontactquicksearch'] = '聯絡人搜尋表單';
$labels['arialabelcontactsearchbox'] = '聯絡人搜尋輸入';
$labels['arialabelmessageheaders'] = '郵件標頭';
$labels['arialabelforwardingoptions'] = '轉寄選項';
$labels['arialabelreplyalloptions'] = '「全部回覆」選項';
$labels['arialabelmoremessageactions'] = '更多郵件動作';
$labels['arialabelmorecontactactions'] = '更多聯絡人動作';
$labels['arialabelmarkmessagesas'] = '將所選郵件標示為...';
$labels['arialabelcomposeoptions'] = '撰寫選項';
$labels['arialabelresponsesmenu'] = '「罐頭」預設回應選單';
$labels['arialabelattachmentuploadform'] = '附件上載表單';
$labels['arialabelattachmentmenu'] = '附件選項';
$labels['arialabelmailtomenu'] = '電郵位址選項';
$labels['arialabelattachmentpreview'] = '附件預覽';
$labels['ariasummarycomposecontacts'] = '可以選取為收件者的聯絡人和群組清單';
$labels['arialabelcontactexportoptions'] = '聯絡人匯出選項';
$labels['arialabelabookgroupoptions'] = '通訊錄/群組選項';
$labels['arialabelpreferencesform'] = '設定表單';
$labels['arialabelidentityeditfrom'] = '身份編輯表單';
$labels['arialabelresponseeditfrom'] = '預設回應編輯表單';
$labels['arialabelsearchterms'] = '搜尋項目';
$labels['arialabeldropactionmenu'] = '拖曳動作選單';
$labels['arialabelheadersmenu'] = '收件者 (標頭) 加入選單';
$labels['arialabelimagetools'] = '圖像工具';
$labels['helplistnavigation'] = '清單鍵盤導覽';
$labels['helplistkeyboardnavigation'] = "上下箭嘴:移動焦點/選取列
空格鍵:選取焦點列
Shift + 上/下:額外選取上面或下面的列
Ctrl + 空格鍵:將焦點列加入選取/將焦點列移出選取";
$labels['helplistkeyboardnavmessages'] = "左/右箭嘴:展開/收起郵件串 (僅在郵件串模式有效)
Enter:開啟所選/焦點郵件
Del:將所選郵件移至垃圾桶";
$labels['helplistkeyboardnavcontacts'] = "Enter:開啟所選/焦點聯絡人";
localization/zh_TW/messages.inc000064400000036415151727150570012614 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '發生錯誤!';
$messages['loginfailed']  = '登入失敗';
$messages['cookiesdisabled'] = '你的瀏覽器不接受 cookies';
$messages['sessionerror'] = '你的工作階段已失效或過期';
$messages['cookiesmismatch'] = '偵測到有不相符的 Cookie,請清理瀏覽器的 cookie。';
$messages['storageerror'] = '連線到 IMAP 伺服器失敗';
$messages['servererror'] = '伺服器出錯!';
$messages['servererrormsg'] = '伺服器出錯:$msg';
$messages['accountlocked'] = '登入失敗太多次。請稍後再嘗試';
$messages['connerror'] = '連線出錯 (無法連線到伺服器)!';
$messages['dberror'] = '資料庫出錯!';
$messages['dbconnerror'] = '無法連線至資料庫!';
$messages['windowopenerror'] = '瀏覽器阻擋了彈出式視窗!';
$messages['requesttimedout'] = '要求逾時';
$messages['errorreadonly'] = '動作無法完成。資料夾唯讀';
$messages['errornoperm'] = '動作無法完成。權限不符';
$messages['erroroverquota'] = '動作無法完成。硬碟空間不夠';
$messages['erroroverquotadelete'] = '硬碟空間不夠,請使用 SHIFT+DEL 來刪除郵件';
$messages['invalidrequest'] = '要求無效!未儲存任何資料';
$messages['invalidhost'] = '伺服器名稱無效';
$messages['nomessagesfound'] = '此郵件匣沒有郵件';
$messages['loggedout'] = '已成功結束工作階段。再見!';
$messages['mailboxempty'] = '郵件匣是空的';
$messages['nomessages'] = '沒有郵件';
$messages['refreshing'] = '重新整理中...';
$messages['loading'] = '載入中...';
$messages['uploading'] = '上傳檔案中...';
$messages['attaching'] = '附加檔案中...';
$messages['uploadingmany'] = '上傳檔案中...';
$messages['loadingdata'] = '載入資料中...';
$messages['checkingmail'] = '檢查新郵件...';
$messages['sendingmessage'] = '寄出郵件中...';
$messages['messagesent'] = '郵件成功寄出';
$messages['savingmessage'] = '儲存郵件中...';
$messages['messagesaved'] = '郵件已經儲存至草稿匣';
$messages['successfullysaved'] = '儲存成功';
$messages['savingresponse'] = '儲存預設回應中...';
$messages['deleteresponseconfirm'] = '確定要刪除這個預設回應嗎?';
$messages['nocontactselected'] = '尚未選取聯絡人。';
$messages['addedsuccessfully'] = '聯絡人已經成功新增至通訊錄';
$messages['contactexists'] = '已有相同電郵位址的聯絡人';
$messages['contactnameexists'] = '已有相同名稱的聯絡人';
$messages['blockedimages'] = '為了保護你的隱私,已經阻擋此郵件的遠端圖片。';
$messages['blockedresources'] = '已阻擋遠端資源,以保障您的隱私。';
$messages['suspiciousemail'] = '此訊息包含了可能是詐欺的可疑電子郵件地址。';
$messages['encryptedmessage'] = '此郵件經過加密,因此無法顯示。抱歉!';
$messages['externalmessagedecryption'] = '此郵件經過加密,可以用你瀏覽器的擴充程式解密';
$messages['nopubkeyfor'] = '找不到用於 $email 的有效公鑰';
$messages['nopubkeyforsender'] = '找不到用於你寄件者身份的有效公鑰。是否只為該收件者加密郵件?';
$messages['encryptnoattachments'] = '已上傳的附件無法加密。請在加密編輯器重新加入';
$messages['searchpubkeyservers'] = '是否在公鑰伺服器搜尋缺少的金鑰?';
$messages['encryptpubkeysfound'] = '找到以下公鑰:';
$messages['keyservererror'] = '未能從金鑰伺服器取得金鑰。';
$messages['keyimportsuccess'] = '成功將公鑰 $key 匯入到您的鎖匙圈。';
$messages['nocontactsfound'] = '找不到聯絡人';
$messages['contactnotfound'] = '找不到要求的聯絡人';
$messages['contactsearchonly'] = '要使用搜尋表格,才能在所選的通訊錄看到聯絡人。';
$messages['sendingfailed'] = '郵件寄出失敗';
$messages['senttooquickly'] = '你寄出的郵件太過於頻繁,請稍候 $sec 秒後再試一次。';
$messages['errorsavingsent'] = '儲存郵件到寄件備份時發生錯誤。';
$messages['errorsaving'] = '儲存時發生錯誤。';
$messages['errormoving'] = '無法移動此郵件';
$messages['errorcopying'] = '無法複製此郵件';
$messages['errordeleting'] = '無法刪除此郵件';
$messages['errormarking'] = '無法標記此郵件';
$messages['alerttitle'] = '注意';
$messages['confirmationtitle'] = '真的確定嗎...';
$messages['deletecontactconfirm']  = '確定要刪除所選的聯絡人嗎?';
$messages['deletegroupconfirm']  = '確定要刪除所選的群組嗎?';
$messages['deletemessagesconfirm'] = '確定要刪除所選的郵件嗎?';
$messages['deletefolderconfirm']  = '確定要刪除這個資料夾嗎?';
$messages['movefolderconfirm']  = '確定要移動此資料夾嗎?';
$messages['purgefolderconfirm']  = '確定要刪除這個資料夾裡面所有的郵件嗎?';
$messages['contactdeleting'] = '刪除聯絡人...';
$messages['groupdeleting'] = '刪除群組...';
$messages['folderdeleting'] = '刪除資料夾...';
$messages['foldermoving'] = '移動資料夾中...';
$messages['foldersubscribing'] = '訂閱資料夾...';
$messages['folderunsubscribing'] = '取消訂閱資料夾...';
$messages['formincomplete'] = '這個表單有部分未填,請完整填寫';
$messages['noemailwarning'] = '請輸入有效的電子郵件位址';
$messages['nonamewarning']  = '請輸入名字';
$messages['nopagesizewarning'] = '請輸入一頁顯示多少郵件';
$messages['nosenderwarning'] = '請輸入寄件者的電郵位址';
$messages['recipientsadded'] = '成功加入收件者。';
$messages['norecipientwarning'] = '請輸入至少一位收件者';
$messages['disclosedrecipwarning'] = '所有收件者都會看到其他人的電郵位址。要防止這件事發生,以及保護其隱私,可以用「密件副本(Bcc)」欄位';
$messages['disclosedreciptitle'] = '太多公開收件者';
$messages['nosubjectwarning']  = '「主旨」欄是空的。要輸入主旨嗎?';
$messages['nosubjecttitle']  = '無主旨';
$messages['nobodywarning'] = '要傳送沒有內文的郵件嗎?';
$messages['notsentwarning'] = '郵件尚未寄出,並且有未儲存的改動。是否捨棄該改動?';
$messages['restoresavedcomposedata'] = '發現一封上次編寫但尚未寄出的郵件。\n\n主旨: $subject\n日期: $date\n\n要回復這封郵件嗎?';
$messages['nosearchname'] = '請輸入聯絡人姓名或電子郵件位址';
$messages['notuploadedwarning'] = '尚有附件檔案未上傳完畢;請稍候,或取消上傳';
$messages['searchsuccessful'] = '共找到 $nr 封郵件';
$messages['contactsearchsuccessful'] = '共找到 $nr 個聯絡人';
$messages['searchnomatch'] = '找不到符合的郵件';
$messages['searching'] = '搜尋中...';
$messages['checking'] = '檢查中...';
$messages['stillsearching'] = '仍在搜尋中...';
$messages['nospellerrors'] = '沒有找到拼字錯誤';
$messages['folderdeleted'] = '資料夾已經成功刪除';
$messages['foldersubscribed'] = '資料夾成功訂閱';
$messages['folderunsubscribed'] = '資料夾成功取消訂閱';
$messages['deletedsuccessfully'] = '刪除成功';
$messages['converting'] = '移除郵件格式中...';
$messages['messageopenerror'] = '無法從伺服器載入郵件';
$messages['filelinkerror'] = '未能附加檔案。';
$messages['fileuploaderror'] = '未能上傳檔案。';
$messages['csvfilemismatch'] = '不支援匯入多個有不同欄位的 CSV 檔案。';
$messages['filesizeerror'] = '上傳的檔案超過了 $size 的大小限制。';
$messages['filecounterror'] = '一次只能上傳最多 $count 個檔案';
$messages['msgsizeerror'] = '未能附加檔案。因為超過了郵件的大小限制 ($size)';
$messages['msgsizeerrorfwd'] = '已超過郵件大小的 ($size) 上限。未能附上 $num 個郵件。';
$messages['copysuccess'] = '複製了 $nr 個聯絡人。';
$messages['movesuccess'] = '移動了 $nr 個聯絡人。';
$messages['copyerror'] = '無法複製聯絡人。';
$messages['moveerror'] = '無法移動聯絡人。';
$messages['sourceisreadonly'] = '此來源位址是唯讀的';
$messages['errorsavingcontact'] = '無法儲存聯絡人的位址';
$messages['movingmessage'] = '正在移動郵件...';
$messages['copyingmessage'] = '正在複製郵件...';
$messages['copyingcontact'] = '正在複製聯絡人...';
$messages['movingcontact'] = '正在移動聯絡人...';
$messages['deletingmessage'] = '正在刪除郵件...';
$messages['markingmessage'] = '正在標記郵件...';
$messages['addingmember'] = '正在新增聯絡人至群組...';
$messages['removingmember'] = '正在從群組刪除聯絡人...';
$messages['receiptsent'] = '閱讀回條傳送成功';
$messages['errorsendingreceipt'] = '無法傳送回條';
$messages['deleteidentityconfirm'] = '確定要刪除這個身份嗎?';
$messages['nodeletelastidentity'] = '不能刪除此身份,因為只剩一個身份。';
$messages['forbiddencharacter'] = '資料夾名稱包含非法的字元';
$messages['selectimportfile'] = '請選擇要上傳的檔案。';
$messages['addresswriterror'] = '無法寫入所選的通訊錄';
$messages['contactaddedtogroup'] = '成功把聯絡人加入此群組';
$messages['contactremovedfromgroup'] = '成功移除此群組中的聯絡人';
$messages['nogroupassignmentschanged'] = '群組資料沒有異動';
$messages['importwait'] = '匯入中,請稍候...';
$messages['importformaterror'] = '匯入失敗!不支援上載的檔案格式。';
$messages['importconfirm'] = '<b>成功匯入 $inserted 個聯絡人</b>';
$messages['importconfirmskipped'] = '<b>略過 $skipped 個已存在的項目</b>';
$messages['importmessagesuccess'] = '成功匯入 $nr 封郵件';
$messages['importmessageerror'] = '匯入失敗!上載的檔案不是有效的郵件或 mailbox 檔案。';
$messages['opnotpermitted'] = '不允許此操作!';
$messages['nofromaddress'] = '所選身份缺少電郵位址';
$messages['editorwarning'] = '切換編輯器模式,可能會丟失所有文字已設定的樣式。確定要繼續嗎?';
$messages['httpreceivedencrypterror'] = '發生嚴重錯誤。請立即聯絡管理者。<b>您的郵件無法送出。</b>';
$messages['smtpconnerror'] = 'SMTP 錯誤($code):與伺服器連線失敗';
$messages['smtpautherror'] = 'SMTP 錯誤($code):身份核對失敗';
$messages['smtpfromerror'] = 'SMTP 錯誤($code):無法設定寄件者「$from」($msg)';
$messages['smtptoerror'] = 'SMTP 錯誤($code):無法加入收件者「$to」($msg)';
$messages['smtprecipientserror'] = 'SMTP 錯誤:無法解讀收件者清單';
$messages['smtputf8error'] = 'SMTP 錯誤:伺服器不支援電郵位址有 Unicode。';
$messages['smtpsizeerror'] = 'SMTP 錯誤:郵件大小超過伺服器限制 ($limit)';
$messages['smtperror'] = 'SMTP 錯誤:$msg';
$messages['emailformaterror'] = '電郵位址無效:$email';
$messages['toomanyrecipients'] = '太多收件人。請減少至 $max 人';
$messages['maxgroupmembersreached'] = '太多群組成員,超過最大人數 $max 人';
$messages['internalerror'] = '發生內部錯誤。請再次嘗試。';
$messages['contactdelerror'] = '無法刪除聯絡人';
$messages['contactdeleted'] = '聯絡人成功刪除';
$messages['contactrestoreerror'] = '無法復原刪除的聯絡人';
$messages['contactrestored'] = '聯絡人復原完成';
$messages['groupdeleted'] = '群組成功刪除';
$messages['grouprenamed'] = '群組重新命名成功';
$messages['groupcreated'] = '群組建立成功';
$messages['savedsearchdeleted'] = '搜尋結果刪除完成';
$messages['savedsearchdeleteerror'] = '無法刪除搜尋結果';
$messages['savedsearchcreated'] = '搜尋結果建立完成';
$messages['savedsearchcreateerror'] = '無法建立搜尋結果';
$messages['messagedeleted'] = '成功刪除郵件';
$messages['messagemoved'] = '成功移動郵件';
$messages['messagemovedtotrash'] = '成功將郵件移至垃圾桶';
$messages['messagecopied'] = '成功複製郵件';
$messages['messagemarked'] = '成功標示郵件';
$messages['autocompletechars'] = '輸入至少 $min 字元才能進行自動完成';
$messages['autocompletemore'] = '過多相符項目,請輸入更多文字';
$messages['namecannotbeempty'] = '名稱不可空白';
$messages['nametoolong'] = '名稱太長';
$messages['namedotforbidden'] = '資料夾名稱不能以點 (.) 開首';
$messages['folderupdated'] = '資料夾成功更新';
$messages['foldercreated'] = '資料夾成功建立';
$messages['invalidimageformat'] = '圖片格式錯誤';
$messages['mispellingsfound'] = '郵件中偵測到拼字錯誤';
$messages['parentnotwritable'] = '無法建立/移動資料夾至指定的上層目錄,因為無存取權限';
$messages['messagetoobig'] = '郵件太大,無法處理';
$messages['attachmentvalidationerror'] = '附件有可疑,因其類型不符合在郵件宣稱的。如不信任寄件者,不應在瀏覽器開啟,因可能有惡意內容。<br/><br/><em>預期的是:$expected;收到的是:$detected</em>';
$messages['noscriptwarning'] = '警告:使用 Webmail 要有 Javascript 支援!請確定您瀏覽器已啟用 Javascript';
$messages['messageissent'] = '此郵件已經寄出,但尚未儲存。是否立即儲存?';
$messages['errnotfound'] = '找不到檔案';
$messages['errnotfoundexplain'] = '找不到要求的資源!';
$messages['errfailedrequest'] = '要求失敗';
$messages['errauthorizationfailed'] = '授權失敗';
$messages['errunauthorizedexplain'] = '無法核實您有權使用此服務!';
$messages['errrequestcheckfailed'] = '要求檢查失敗';
$messages['errcsrfprotectionexplain'] = "為了您的安全起見,此服務能防止您被騙去做某些動作。\n如您看到此訊息,代表您離開結束此網站時並未登出。\n\n現在需要加入人手操作才能繼續。";
$messages['errcontactserveradmin'] = '請聯絡您的伺服器管理者';
$messages['clicktoresumesession'] = '按此繼續之前的工作階段';
$messages['errcomposesession'] = '撰寫工作階段出錯';
$messages['errcomposesessionexplain'] = '找不到要求的撰寫工作階段';
$messages['clicktocompose'] = '按此撰寫新郵件';
$messages['nosupporterror'] = '您的瀏覽器不支援此功能。';
$messages['siginserted'] = '已加入簽章。';
$messages['responseinserted'] = '已加入回應。';
$messages['noresponsesavailable'] = '無回應';
$messages['listempty'] = '列表沒有內容';
$messages['listusebutton'] = '按「建立」鈕加入新紀錄';
$messages['keypaircreatesuccess'] = '已為 $identity 建立新的金鑰對。';
$messages['emptyattachment'] = '此附件似乎是空的。<br>請與傳送此電子郵件的人聯絡。';
$messages['oauthloginfailed'] = 'OAuth 登入失敗。請重試。';
localization/en_CA/labels.inc000064400000047440151727150570012161 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Welcome to $product';
$labels['username'] = 'Username';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
$labels['logout'] = 'Logout';
$labels['mail'] = 'Mail';
$labels['settings'] = 'Settings';
$labels['addressbook'] = 'Address Book';
$labels['inbox'] = 'Inbox';
$labels['drafts'] = 'Drafts';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Trash';
$labels['junk'] = 'Junk';
$labels['show_real_foldernames'] = 'Show real names for special folders';
$labels['subject'] = 'Subject';
$labels['from'] = 'From';
$labels['sender'] = 'Sender';
$labels['to'] = 'To';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Date';
$labels['size'] = 'Size';
$labels['priority'] = 'Priority';
$labels['organization'] = 'Organization';
$labels['readstatus'] = 'Read status';
$labels['listoptions'] = 'List options...';
$labels['mailboxlist'] = 'Folders';
$labels['messagesfromto'] = 'Messages $from to $to of $count';
$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Message $nr of $count';
$labels['fromtoshort'] = '$from – $to of $count';
$labels['copy'] = 'Copy';
$labels['move'] = 'Move';
$labels['moveto'] = 'Move to...';
$labels['copyto'] = 'Copy to...';
$labels['download'] = 'Download';
$labels['open'] = 'Open';
$labels['showattachment'] = 'Show';
$labels['showanyway'] = 'Show it anyway';
$labels['filename'] = 'File name';
$labels['filesize'] = 'File size';
$labels['addtoaddressbook'] = 'Add to address book';
$labels['sun'] = 'Sun';
$labels['mon'] = 'Mon';
$labels['tue'] = 'Tue';
$labels['wed'] = 'Wed';
$labels['thu'] = 'Thu';
$labels['fri'] = 'Fri';
$labels['sat'] = 'Sat';
$labels['sunday'] = 'Sunday';
$labels['monday'] = 'Monday';
$labels['tuesday'] = 'Tuesday';
$labels['wednesday'] = 'Wednesday';
$labels['thursday'] = 'Thursday';
$labels['friday'] = 'Friday';
$labels['saturday'] = 'Saturday';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'May';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'January';
$labels['longfeb'] = 'February';
$labels['longmar'] = 'March';
$labels['longapr'] = 'April';
$labels['longmay'] = 'May';
$labels['longjun'] = 'June';
$labels['longjul'] = 'July';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'October';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
$labels['today'] = 'Today';
$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Check for new messages';
$labels['compose'] = 'Compose';
$labels['writenewmessage'] = 'Create a new message';
$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Reply to sender';
$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
$labels['replyall'] = 'Reply all';
$labels['replylist'] = 'Reply list';
$labels['forward'] = 'Forward';
$labels['forwardinline'] = 'Forward inline';
$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Forward the message';
$labels['deletemessage'] = 'Delete message';
$labels['movemessagetotrash'] = 'Move message to trash';
$labels['printmessage'] = 'Print this message';
$labels['previousmessage'] = 'Show previous message';
$labels['firstmessage'] = 'Show first message';
$labels['nextmessage'] = 'Show next message';
$labels['lastmessage'] = 'Show last message';
$labels['backtolist'] = 'Back to message list';
$labels['viewsource'] = 'Show source';
$labels['mark'] = 'Mark';
$labels['markmessages'] = 'Mark messages';
$labels['markread'] = 'As read';
$labels['markunread'] = 'As unread';
$labels['markflagged'] = 'As flagged';
$labels['markunflagged'] = 'As unflagged';
$labels['moreactions'] = 'More actions...';
$labels['folders-all'] = 'All folders';
$labels['more'] = 'More';
$labels['back'] = 'Back';
$labels['options'] = 'Options';
$labels['select'] = 'Select';
$labels['all'] = 'All';
$labels['none'] = 'None';
$labels['currpage'] = 'Current page';
$labels['isread'] = 'Read';
$labels['unread'] = 'Unread';
$labels['flagged'] = 'Flagged';
$labels['unanswered'] = 'Unanswered';
$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Deleted';
$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Invert';
$labels['filter'] = 'Filter';
$labels['list'] = 'List';
$labels['threads'] = 'Threads';
$labels['expand-all'] = 'Expand All';
$labels['expand-unread'] = 'Expand Unread';
$labels['collapse-all'] = 'Collapse All';
$labels['threaded'] = 'Threaded';
$labels['autoexpand_threads'] = 'Expand message threads';
$labels['do_expand'] = 'all threads';
$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'From/To';
$labels['flag'] = 'Flag';
$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'None';
$labels['sentdate'] = 'Sent date';
$labels['arrival'] = 'Arrival date';
$labels['asc'] = 'ascending';
$labels['desc'] = 'descending';
$labels['listcolumns'] = 'List columns';
$labels['listsorting'] = 'Sorting column';
$labels['listorder'] = 'Sorting order';
$labels['listmode'] = 'List view mode';
$labels['layoutlist'] = 'List';
$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Compact';
$labels['empty'] = 'Empty';
$labels['importmessages'] = 'Import messages';
$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'unknown';
$labels['unlimited'] = 'unlimited';
$labels['quicksearch'] = 'Quick search';
$labels['resetsearch'] = 'Reset search';
$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Entire message';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Name';
$labels['searchscope'] = 'Scope';
$labels['currentfolder'] = 'Current folder';
$labels['subfolders'] = 'This and subfolders';
$labels['allfolders'] = 'All folders';
$labels['openinextwin'] = 'Open in new window';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Display in plain text format';
$labels['changeformathtml'] = 'Display in HTML format';
$labels['editasnew'] = 'Edit as new';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send message';
$labels['savemessage'] = 'Save as draft';
$labels['addattachment'] = 'Attach a file';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Delivery status notification';
$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'Original Message';
$labels['insert'] = 'Insert';
$labels['recipient'] = 'Recipient';
$labels['editidents'] = 'Edit identities';
$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
$labels['restore'] = 'Restore';
$labels['restoremessage'] = 'Restore message?';
$labels['responses'] = 'Responses';
$labels['insertresponse'] = 'Insert a response';
$labels['manageresponses'] = 'Manage responses';
$labels['editresponse'] = 'Edit response';
$labels['editresponses'] = 'Edit responses';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Response Text';
$labels['attach'] = 'Attach';
$labels['attachments'] = 'Attachments';
$labels['upload'] = 'Upload';
$labels['close'] = 'Close';
$labels['messageoptions'] = 'Message options...';
$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
$labels['normal'] = 'Normal';
$labels['high'] = 'High';
$labels['highest'] = 'Highest';
$labels['nosubject'] = '(no subject)';
$labels['showimages'] = 'Display images';
$labels['alwaysshow'] = 'Always show images from $sender';
$labels['isdraft'] = 'This is a draft message.';
$labels['andnmore'] = '$nr more...';
$labels['togglemoreheaders'] = 'Show more message headers';
$labels['togglefullheaders'] = 'Toggle raw message headers';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plain text';
$labels['savesentmessagein'] = 'Save sent message in';
$labels['dontsave'] = 'don\'t save';
$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
$labels['addcc'] = 'Add Cc';
$labels['addbcc'] = 'Add Bcc';
$labels['addreplyto'] = 'Add Reply-To';
$labels['addfollowupto'] = 'Add Followup-To';
$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
$labels['receiptread'] = 'Return Receipt (read)';
$labels['yourmessage'] = 'This is a Return Receipt for your message';
$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
$labels['name'] = 'Display Name';
$labels['firstname'] = 'First Name';
$labels['surname'] = 'Last Name';
$labels['middlename'] = 'Middle Name';
$labels['nameprefix'] = 'Prefix';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Nickname';
$labels['jobtitle'] = 'Job Title';
$labels['department'] = 'Department';
$labels['gender'] = 'Gender';
$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'Email';
$labels['phone'] = 'Phone';
$labels['address'] = 'Address';
$labels['street'] = 'Street';
$labels['locality'] = 'City';
$labels['zipcode'] = 'Postal Code';
$labels['region'] = 'Province';
$labels['country'] = 'Country';
$labels['birthday'] = 'Birthday';
$labels['anniversary'] = 'Anniversary';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notes';
$labels['male'] = 'male';
$labels['female'] = 'female';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'All fields';
$labels['search'] = 'Search';
$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'Advanced';
$labels['other'] = 'Other';
$labels['typehome'] = 'Home';
$labels['typework'] = 'Work';
$labels['typeother'] = 'Other';
$labels['typemobile'] = 'Mobile';
$labels['typemain'] = 'Main';
$labels['typehomefax'] = 'Home Fax';
$labels['typeworkfax'] = 'Work Fax';
$labels['typecar'] = 'Car';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistant';
$labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';
$labels['addfield'] = 'Add field...';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
$labels['personalinfo'] = 'Personal information';
$labels['edit'] = 'Edit';
$labels['cancel'] = 'Cancel';
$labels['save'] = 'Save';
$labels['delete'] = 'Delete';
$labels['rename'] = 'Rename';
$labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
$labels['print'] = 'Print';
$labels['export'] = 'Export';
$labels['exportall'] = 'Export all';
$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
$labels['previouspage'] = 'Show previous page';
$labels['firstpage'] = 'Show first page';
$labels['nextpage'] = 'Show next page';
$labels['lastpage'] = 'Show last page';
$labels['group'] = 'Group';
$labels['groups'] = 'Groups';
$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Personal Addresses';
$labels['searchsave'] = 'Save search';
$labels['searchdelete'] = 'Delete search';
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Import contacts';
$labels['importtarget'] = 'Add contacts to';
$labels['importreplace'] = 'Replace the entire address book';
$labels['importgroups'] = 'Import group assignments';
$labels['importgroupsall'] = 'All (create groups if necessary)';
$labels['importgroupsexisting'] = 'Only for existing groups';
$labels['done'] = 'Done';
$labels['settingsfor'] = 'Settings for';
$labels['about'] = 'About';
$labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';
$labels['identities'] = 'Identities';
$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML Message';
$labels['messagepart'] = 'Part';
$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Date format';
$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Pretty dates';
$labels['setdefault'] = 'Set default';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Language';
$labels['timezone'] = 'Time zone';
$labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Daylight saving time';
$labels['showinextwin'] = 'Open message in a new window';
$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Compose HTML messages';
$labels['htmlonreply'] = 'on reply to HTML message';
$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML signature';
$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Show preview pane';
$labels['skin'] = 'Interface skin';
$labels['logoutclear'] = 'Clear Trash on logout';
$labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'User Interface';
$labels['serversettings'] = 'Server Settings';
$labels['mailboxview'] = 'Mailbox View';
$labels['mdnrequests'] = 'On request for return receipt';
$labels['askuser'] = 'ask me';
$labels['autosend'] = 'send receipt';
$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['readwhendeleted'] = 'Mark the message as read on delete';
$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
$labels['skipdeleted'] = 'Do not show deleted messages';
$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Display remote inline images';
$labels['fromknownsenders'] = 'from known senders';
$labels['always'] = 'always';
$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Automatically save draft';
$labels['everynminutes'] = 'every $n minute(s)';
$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'never';
$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'Displaying Messages';
$labels['messagescomposition'] = 'Composing Messages';
$labels['mimeparamfolding'] = 'Attachment names';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'Advanced options';
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Main Options';
$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'New Message';
$labels['signatureoptions'] = 'Signature Options';
$labels['whenreplying'] = 'When replying';
$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'start new message above the quote';
$labels['replybottomposting'] = 'start new message below the quote';
$labels['replyremovesignature'] = 'When replying remove original signature from message';
$labels['autoaddsignature'] = 'Automatically add signature';
$labels['newmessageonly'] = 'new message only';
$labels['replyandforwardonly'] = 'replies and forwards only';
$labels['insertsignature'] = 'Insert signature';
$labels['afternseconds'] = 'after $n seconds';
$labels['reqmdn'] = 'Always request a return receipt';
$labels['reqdsn'] = 'Always request a delivery status notification';
$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
$labels['listnamedisplay'] = 'List contacts as';
$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
$labels['spellcheckoptions'] = 'Spellcheck Options';
$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
$labels['spellcheckignorenums'] = 'Ignore words with numbers';
$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'Add to dictionary';
$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Messages forwarding';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'as attachment';
$labels['replyallmode'] = 'Default action of [Reply all] button';
$labels['replyalldefault'] = 'reply to all';
$labels['replyalllist'] = 'reply to mailing list only (if found)';
$labels['allmessages'] = 'all messages';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
$labels['foldername'] = 'Folder name';
$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Create';
$labels['createfolder'] = 'Create new folder';
$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Properties';
$labels['folderproperties'] = 'Folder properties';
$labels['parentfolder'] = 'Parent folder';
$labels['location'] = 'Location';
$labels['info'] = 'Information';
$labels['getfoldersize'] = 'Click to get folder size';
$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Folder Type';
$labels['personalfolder'] = 'Private Folder';
$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'Public Folder';
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
$labels['undo'] = 'Undo';
$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Source';
$labels['license'] = 'License';
$labels['support'] = 'Get support';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'English';
$labels['westerneuropean'] = 'Western European';
$labels['easterneuropean'] = 'Eastern European';
$labels['southeasterneuropean'] = 'South-Eastern European';
$labels['baltic'] = 'Baltic';
$labels['cyrillic'] = 'Cyrillic';
$labels['arabic'] = 'Arabic';
$labels['greek'] = 'Greek';
$labels['hebrew'] = 'Hebrew';
$labels['turkish'] = 'Turkish';
$labels['nordic'] = 'Nordic';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Celtic';
$labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';
localization/en_CA/messages.inc000064400000025626151727150570012530 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'An error occurred!';
$messages['loginfailed']  = 'Login failed.';
$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
$messages['sessionerror'] = 'Your session is invalid or expired.';
$messages['storageerror'] = 'Connection to storage server failed.';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
$messages['connerror'] = 'Connection Error (Failed to reach the server)!';
$messages['dberror'] = 'Database Error!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'No messages found in this mailbox.';
$messages['mailboxempty'] = 'Mailbox is empty';
$messages['nomessages'] = 'No messages';
$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Loading...';
$messages['uploading'] = 'Uploading file...';
$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Loading data...';
$messages['checkingmail'] = 'Checking for new messages...';
$messages['sendingmessage'] = 'Sending message...';
$messages['messagesent'] = 'Message sent successfully.';
$messages['savingmessage'] = 'Saving message...';
$messages['messagesaved'] = 'Message saved to Drafts.';
$messages['successfullysaved'] = 'Successfully saved.';
$messages['savingresponse'] = 'Saving response text...';
$messages['deleteresponseconfirm'] = 'Do you really want to delete this response text?';
$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
$messages['nocontactsfound'] = 'No contacts found.';
$messages['contactnotfound'] = 'The requested contact was not found.';
$messages['sendingfailed'] = 'Failed to send message.';
$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
$messages['errorsavingsent'] = 'An error occurred while saving sent message.';
$messages['errorsaving'] = 'An error occurred while saving.';
$messages['errormoving'] = 'Could not move the message(s).';
$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Could not delete the message(s).';
$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm']  = 'Do you really want to delete selected contact(s)?';
$messages['deletegroupconfirm']  = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
$messages['deletefolderconfirm']  = 'Do you really want to delete this folder?';
$messages['purgefolderconfirm']  = 'Do you really want to delete all messages in this folder?';
$messages['contactdeleting'] = 'Deleting contact(s)...';
$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'Deleting folder...';
$messages['foldermoving'] = 'Moving folder...';
$messages['foldersubscribing'] = 'Subscribing folder...';
$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'The form was not completely filled out.';
$messages['noemailwarning'] = 'Please enter a valid email address.';
$messages['nonamewarning']  = 'Please enter a name.';
$messages['nopagesizewarning'] = 'Please enter a page size.';
$messages['norecipientwarning'] = 'Please enter at least one recipient.';
$messages['nosubjectwarning']  = 'The "Subject" field is empty. Would you like to enter one now?';
$messages['nobodywarning'] = 'Send this message without text?';
$messages['restoresavedcomposedata'] = 'A previously composed but unsent message was found.\n\nSubject: $subject\nSaved: $date\n\nDo you want to restore this message?';
$messages['nosearchname'] = 'Please enter a contact name or email address.';
$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr messages found.';
$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Search returned no matches.';
$messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
$messages['stillsearching'] = 'Still searching...';
$messages['nospellerrors'] = 'No spelling errors found.';
$messages['folderdeleted'] = 'Folder successfully deleted.';
$messages['foldersubscribed'] = 'Folder successfully subscribed.';
$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
$messages['deletedsuccessfully'] = 'Successfully deleted.';
$messages['converting'] = 'Removing formatting...';
$messages['messageopenerror'] = 'Could not load message from server.';
$messages['fileuploaderror'] = 'File upload failed.';
$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
$messages['copysuccess'] = 'Successfully copied $nr contacts.';
$messages['movesuccess'] = 'Successfully moved $nr contacts.';
$messages['copyerror'] = 'Could not copy any contacts.';
$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'This address source is read only.';
$messages['errorsavingcontact'] = 'Could not save the contact address.';
$messages['movingmessage'] = 'Moving message(s)...';
$messages['copyingmessage'] = 'Copying message(s)...';
$messages['copyingcontact'] = 'Copying contact(s)...';
$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Deleting message(s)...';
$messages['markingmessage'] = 'Marking message(s)...';
$messages['addingmember'] = 'Adding contact(s) to the group...';
$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Successfully sent a read receipt.';
$messages['errorsendingreceipt'] = 'Could not send the receipt.';
$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
$messages['selectimportfile'] = 'Please select a file to upload.';
$messages['addresswriterror'] = 'The selected address book is not writeable.';
$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Importing, please wait...';
$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
$messages['internalerror'] = 'An internal error occurred. Please try again.';
$messages['contactdelerror'] = 'Could not delete contact(s).';
$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
$messages['contactrestored'] = 'Contact(s) restored successfully.';
$messages['groupdeleted'] = 'Group deleted successfully.';
$messages['grouprenamed'] = 'Group renamed successfully.';
$messages['groupcreated'] = 'Group created successfully.';
$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
$messages['savedsearchcreated'] = 'Saved search created successfully.';
$messages['savedsearchcreateerror'] = 'Could not create saved search.';
$messages['messagedeleted'] = 'Message(s) deleted successfully.';
$messages['messagemoved'] = 'Message(s) moved successfully.';
$messages['messagecopied'] = 'Message(s) copied successfully.';
$messages['messagemarked'] = 'Message(s) marked successfully.';
$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'Name cannot be empty.';
$messages['nametoolong'] = 'Name is too long.';
$messages['folderupdated'] = 'Folder updated successfully.';
$messages['foldercreated'] = 'Folder created successfully.';
$messages['invalidimageformat'] = 'Not a valid image format.';
$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
$messages['messagetoobig'] = 'The message part is too big to process it.';
$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
localization/sv_SE/timezones.inc000064400000047223151727150570013005 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Alger';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gabon';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktis';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arktis';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asien';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantisk';
$labels['tz:atlantic:azores'] = 'Azorerna';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanarieöarna';
$labels['tz:atlantic:cape_verde'] = 'Cap Verde';
$labels['tz:atlantic:faroe'] = 'Färöarna';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australien';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Aten';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Bryssel';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Köpenhamn';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsingfors';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lissabon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxenburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moskva';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prag';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rom';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikanen';
$labels['tz:europe:vienna'] = 'Wien';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warszawa ';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldiverna';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Stilla havet';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/sv_SE/labels.inc000064400000101076151727150570012227 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Välkommen till $product';
$labels['username'] = 'Användarnamn';
$labels['password'] = 'Lösenord';
$labels['server'] = 'Server';
$labels['login'] = 'Logga in';
$labels['oauthlogin'] = 'Logga in med $provider';
$labels['menu'] = 'Meny';
$labels['logout'] = 'Logga ut';
$labels['mail'] = 'Meddelanden';
$labels['settings'] = 'Inställningar';
$labels['addressbook'] = 'Adressbok';
$labels['darkmode'] = 'Mörkt läge';
$labels['lightmode'] = 'Ljust läge';
$labels['inbox'] = 'Inkorg';
$labels['drafts'] = 'Utkast';
$labels['sent'] = 'Skickat';
$labels['trash'] = 'Papperskorg';
$labels['junk'] = 'Skräp';
$labels['show_real_foldernames'] = 'Visa verkliga namn på särskilda mappar';
$labels['subject'] = 'Ämne';
$labels['from'] = 'Från';
$labels['sender'] = 'Avsändare';
$labels['to'] = 'Mottagare';
$labels['cc'] = 'Kopia';
$labels['bcc'] = 'Dold kopia';
$labels['replyto'] = 'Svar till';
$labels['followupto'] = 'Uppföljning till';
$labels['date'] = 'Datum';
$labels['size'] = 'Storlek';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Lässtatus';
$labels['listoptions'] = 'Listalternativ...';
$labels['listoptionstitle'] = 'Listalternativ';
$labels['mailboxlist'] = 'Mappar';
$labels['messagesfromto'] = 'Meddelande $from till $to av $count';
$labels['threadsfromto'] = 'Tråd $from till $to av $count';
$labels['messagenrof'] = 'Meddelande $nr av $count';
$labels['fromtoshort'] = '$from – $to av $count';
$labels['copy'] = 'Kopiera';
$labels['move'] = 'Flytta';
$labels['moveto'] = 'Flytta till...';
$labels['copyto'] = 'Kopiera till...';
$labels['download'] = 'Hämta';
$labels['open'] = 'Öppna';
$labels['showattachment'] = 'Visa';
$labels['showanyway'] = 'Visa det ändå';
$labels['filename'] = 'Filnamn';
$labels['filesize'] = 'Filstorlek';
$labels['addtoaddressbook'] = 'Lägg till i adressbok';
$labels['sun'] = 'sön';
$labels['mon'] = 'mån';
$labels['tue'] = 'tis';
$labels['wed'] = 'ons';
$labels['thu'] = 'tor';
$labels['fri'] = 'fre';
$labels['sat'] = 'lör';
$labels['sunday'] = 'söndag';
$labels['monday'] = 'måndag';
$labels['tuesday'] = 'tisdag';
$labels['wednesday'] = 'onsdag';
$labels['thursday'] = 'torsdag';
$labels['friday'] = 'fredag';
$labels['saturday'] = 'lördag';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'apr';
$labels['may'] = 'maj';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'aug';
$labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
$labels['longjan'] = 'januari';
$labels['longfeb'] = 'februari';
$labels['longmar'] = 'mars';
$labels['longapr'] = 'april';
$labels['longmay'] = 'maj';
$labels['longjun'] = 'juni';
$labels['longjul'] = 'juli';
$labels['longaug'] = 'augusti';
$labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
$labels['today'] = 'idag';
$labels['refresh'] = 'Uppdatera';
$labels['checkmail'] = 'Hämta nya meddelanden';
$labels['compose'] = 'Skriv';
$labels['writenewmessage'] = 'Skapa ett nytt meddelande';
$labels['reply'] = 'Svara';
$labels['replytomessage'] = 'Svara avsändaren';
$labels['replytoallmessage'] = 'Svara avsändaren och alla mottagare';
$labels['replyall'] = 'Svara alla';
$labels['replylist'] = 'Svara lista';
$labels['forward'] = 'Vidarebefordra';
$labels['forwardinline'] = 'Vidarebefordra infogat';
$labels['forwardattachment'] = 'Vidarebefordra som bilaga';
$labels['forwardmessage'] = 'Vidarebefordra meddelandet';
$labels['bouncemsg'] = 'Skicka igen (studsa)';
$labels['bounce'] = 'Skicka igen';
$labels['deletemessage'] = 'Ta bort meddelandet';
$labels['movemessagetotrash'] = 'Flytta meddelandet till Papperskorg';
$labels['printmessage'] = 'Skriv ut det här meddelandet';
$labels['previousmessage'] = 'Visa föregående meddelande';
$labels['firstmessage'] = 'Visa första meddelandet';
$labels['nextmessage'] = 'Visa nästa meddelande';
$labels['lastmessage'] = 'Visa sista meddelandet';
$labels['backtolist'] = 'Bakåt till meddelandelistan';
$labels['viewsource'] = 'Visa källkod';
$labels['mark'] = 'Markera';
$labels['markmessages'] = 'Markera meddelanden';
$labels['markread'] = 'Läst';
$labels['markunread'] = 'Oläst';
$labels['markflagged'] = 'Flaggat';
$labels['markunflagged'] = 'Oflaggat';
$labels['markundeleted'] = 'Inte borttaget';
$labels['moreactions'] = 'Fler åtgärder...';
$labels['markallread'] = 'Markera alla som lästa';
$labels['folders-cur'] = 'Markerad mapp';
$labels['folders-sub'] = 'Markerad mapp med undermappar';
$labels['folders-all'] = 'Alla mappar';
$labels['more'] = 'Fler';
$labels['back'] = 'Bakåt';
$labels['options'] = 'Alternativ';
$labels['composeoptions'] = 'Skapandeinställningar';
$labels['optionsandattachments'] = 'Alternativ och bilagor';
$labels['actions'] = 'Funktioner';
$labels['first'] = 'Första';
$labels['last'] = 'Sista';
$labels['previous'] = 'Föregående';
$labels['next'] = 'Nästa';
$labels['select'] = 'Välj';
$labels['selection'] = 'Markering';
$labels['all'] = 'Alla';
$labels['none'] = 'Inga';
$labels['currpage'] = 'Aktuell sida';
$labels['isread'] = 'Läst';
$labels['unread'] = 'Olästa';
$labels['flagged'] = 'Flaggade';
$labels['unflagged'] = 'Inte flaggat';
$labels['unanswered'] = 'Obesvarade';
$labels['withattachment'] = 'Med bilaga';
$labels['deleted'] = 'Borttagna';
$labels['undeleted'] = 'Inte borttagna';
$labels['replied'] = 'Besvarat';
$labels['forwarded'] = 'Vidareskickat';
$labels['invert'] = 'Invertera';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lista';
$labels['threads'] = 'Trådar';
$labels['expand-all'] = 'Visa alla';
$labels['expand-unread'] = 'Visa olästa';
$labels['collapse-all'] = 'Dölj alla';
$labels['threaded'] = 'Trådat';
$labels['showunread'] = 'Visa olästa meddelanden';
$labels['autoexpand_threads'] = 'Visa trådade meddelanden';
$labels['do_expand'] = 'Alla trådar';
$labels['expand_only_unread'] = 'Trådar med olästa meddelanden';
$labels['fromto'] = 'Från/Till';
$labels['flag'] = 'Flagga';
$labels['attachment'] = 'Bilaga';
$labels['nonesort'] = 'Ingen';
$labels['sentdate'] = 'Datum skickat';
$labels['arrival'] = 'Datum mottaget';
$labels['asc'] = 'Stigande';
$labels['desc'] = 'Fallande';
$labels['listcolumns'] = 'Kolumner';
$labels['listsorting'] = 'Sortering';
$labels['listorder'] = 'Ordning';
$labels['listmode'] = 'Visningsläge';
$labels['lmode'] = 'Listläge';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Bred skärm';
$labels['layoutdesktop'] = 'Skrivbord';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Bred skärm (visning i 3 kolumner)';
$labels['layoutdesktopdesc'] = 'Skrivbord (bred lista med förhandsvisning nedanför)';
$labels['layoutlistdesc'] = 'Lista (utan förhandsvisning)';
$labels['folderactions'] = 'Mappåtgärder...';
$labels['compact'] = 'Packa';
$labels['empty'] = 'Töm';
$labels['importmessages'] = 'Importera meddelanden';
$labels['mailimportdesc'] = 'Meddelanden kan laddas upp från filer i formatet <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> eller formatet <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Flera filer kan komprimeras till zip-arkiv.';
$labels['quota'] = 'Diskutrymme';
$labels['unknown'] = 'okänt';
$labels['unlimited'] = 'obegränsat';
$labels['quotatype'] = 'Typ av kvot';
$labels['quotatotal'] = 'Gräns';
$labels['quotaused'] = 'Utnyttjad';
$labels['quotastorage'] = 'Storlek';
$labels['quotamessage'] = 'Antal meddelanden';
$labels['shortheaderdate'] = 'På $date';
$labels['shortheaderto'] = 'Till $to på $date';
$labels['shortheaderfrom'] = 'Från $from på $date';
$labels['quicksearch'] = 'Snabbsök';
$labels['searchplaceholder'] = 'Sök...';
$labels['resetsearch'] = 'Återställ sökning';
$labels['searchmod'] = 'Sökalternativ';
$labels['msgtext'] = 'Hela meddelandet';
$labels['body'] = 'Innehåll';
$labels['type'] = 'Typ';
$labels['namex'] = 'Namn';
$labels['searchscope'] = 'Sökomfattning';
$labels['currentfolder'] = 'Aktuell mapp';
$labels['subfolders'] = 'Denna och undermappar';
$labels['allfolders'] = 'Alla mappar';
$labels['searchinterval-1W'] = 'äldre än en vecka';
$labels['searchinterval-1M'] = 'äldre än en månad';
$labels['searchinterval-1Y'] = 'äldre än ett år';
$labels['searchinterval1W'] = 'nyare än en vecka';
$labels['searchinterval1M'] = 'nyare än en månad';
$labels['searchinterval1Y'] = 'nyare än ett år';
$labels['openinextwin'] = 'Öppna i nytt fönster';
$labels['emlsave'] = 'Hämta';
$labels['changeformattext'] = 'Visa i text-format';
$labels['changeformathtml'] = 'Visa i HTML-format';
$labels['editasnew'] = 'Redigera som nytt';
$labels['send'] = 'Skicka';
$labels['sendmessage'] = 'Skicka meddelande';
$labels['savemessage'] = 'Spara utkast';
$labels['addattachment'] = 'Bifoga fil';
$labels['charset'] = 'Teckenkodning';
$labels['editortype'] = 'Textredigerare';
$labels['returnreceipt'] = 'Mottagarkvitto';
$labels['dsn'] = 'Leveransstatusmeddelande';
$labels['keepformatting'] = 'Behåll formatering';
$labels['mailreplyintro'] = '$date skrev $sender:';
$labels['originalmessage'] = 'Ursprungligt meddelande';
$labels['selectimage'] = 'Välj bild';
$labels['addimage'] = 'Lägg till bild';
$labels['selectmedia'] = 'Välj film';
$labels['addmedia'] = 'Lägg till film';
$labels['encrypt'] = 'Kryptera';
$labels['encryptmessage'] = 'Kryptera meddelande';
$labels['encryptmessagemailvelope'] = 'Kryptera meddelande med Mailvelope';
$labels['importpubkeys'] = 'Importera offentliga nycklar';
$labels['encryptedsendialog'] = 'Skickar krypterat meddelande';
$labels['encryptandsign'] = 'Kryptera och signera';
$labels['keyid'] = 'Nyckel-ID';
$labels['keylength'] = 'Bitar';
$labels['keyexpired'] = 'Utgången';
$labels['keyrevoked'] = 'Upphävd';
$labels['bccinstead'] = 'Använd Dold kopia';
$labels['addheader'] = 'Lägg till mottagare (meddelandeinfo)';
$labels['insert'] = 'Infoga';
$labels['insertcontact'] = 'Infoga kontakt(er)';
$labels['recipient'] = 'Mottagare';
$labels['recipientedit'] = 'Ändra mottagare';
$labels['editidents'] = 'Ändra identiteter';
$labels['spellcheck'] = 'Rättstava';
$labels['checkspelling'] = 'Kontrollera stavning';
$labels['resumeediting'] = 'Återuppta redigering';
$labels['revertto'] = 'Återgå till';
$labels['restore'] = 'Återskapa';
$labels['restoremessage'] = 'Återskapa meddelande?';
$labels['ignore'] = 'Ignorera';
$labels['responses'] = 'Responser';
$labels['insertresponse'] = 'Infoga respons';
$labels['manageresponses'] = 'Hantera responser';
$labels['newresponse'] = 'Ny respons';
$labels['addresponse'] = 'Lägg till respons';
$labels['editresponse'] = 'Ändra respons';
$labels['editresponses'] = 'Ändra responser';
$labels['responsename'] = 'Responsnamn';
$labels['responsetext'] = 'Responstext';
$labels['attach'] = 'Bifoga';
$labels['attachments'] = 'Bilagor';
$labels['upload'] = 'Bifoga';
$labels['uploadprogress'] = '$percent ($current av $total)';
$labels['close'] = 'Stäng';
$labels['messageoptions'] = 'Meddelandealternativ...';
$labels['togglecomposeoptions'] = 'Växla skapandeinställningar';
$labels['attachmentrename'] = 'Ändra bilagans namn';
$labels['low'] = 'Låg';
$labels['lowest'] = 'Lägst';
$labels['normal'] = 'Normal';
$labels['high'] = 'Hög';
$labels['highest'] = 'Högst';
$labels['nosubject'] = '(inget ämne)';
$labels['showimages'] = 'Visa bilder';
$labels['allow'] = 'Tillåt';
$labels['alwaysshow'] = 'Visa alltid bilder från $sender';
$labels['alwaysallow'] = 'Tillåt alltid från $sender';
$labels['isdraft'] = 'Detta meddelande är ett utkast.';
$labels['andnmore'] = '$nr fler...';
$labels['details'] = 'Detaljerad information';
$labels['summary'] = 'Sammanfattning';
$labels['headers'] = 'Meddelandeinfo';
$labels['allheaders'] = 'All meddelandeinfo...';
$labels['togglemoreheaders'] = 'Växla ytterligare meddelandeinfo';
$labels['togglefullheaders'] = 'Växla teknisk meddelandeinfo';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Oformatterad text';
$labels['savesentmessagein'] = 'Spara skickat meddelande i';
$labels['dontsave'] = 'Spara inte';
$labels['maxuploadsize'] = 'Tillåten filstorlek är $size';
$labels['addcc'] = 'Kopia';
$labels['addbcc'] = 'Dold kopia';
$labels['addreplyto'] = 'Svar till';
$labels['addfollowupto'] = 'Uppföljning till';
$labels['sendreceipt'] = 'Skicka läskvitto?';
$labels['mdnrequest'] = 'Avsändaren har begärt mottagarkvitto för det här meddelandet. Vill du skicka ett mottagarkvitto?';
$labels['receiptread'] = 'Mottagarkvitto (läst)';
$labels['yourmessage'] = 'Det här är ett mottagarkvitto för ditt meddelande';
$labels['receiptnote'] = 'Notera: Mottagarkvittot innebär bara att meddelandet visats på mottagarens dator. Därmed finns ingen garanti att mottagaren har läst och förstått meddelandet.';
$labels['sendalwaysto'] = 'Skicka alltid till $email';
$labels['zoomin'] = 'Zooma in';
$labels['zoomout'] = 'Zooma ut';
$labels['rotate'] = 'Rotera';
$labels['increaseimage'] = 'Öka bildstorlek';
$labels['decreaseimage'] = 'Minska bildstorlek';
$labels['rotateimage'] = 'Rotera bild';
$labels['showtools'] = 'Visa bildverktyg';
$labels['hidetools'] = 'Göm bildverktyg';
$labels['name'] = 'Namn';
$labels['firstname'] = 'Förnamn';
$labels['surname'] = 'Efternamn';
$labels['middlename'] = 'Mellannamn';
$labels['nameprefix'] = 'Prefix';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Smeknamn';
$labels['jobtitle'] = 'Titel';
$labels['department'] = 'Avdelning';
$labels['gender'] = 'Kön';
$labels['maidenname'] = 'Flicknamn';
$labels['email'] = 'Mailadress';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Postadress';
$labels['street'] = 'Gata';
$labels['locality'] = 'Ort';
$labels['zipcode'] = 'Postnummer';
$labels['region'] = 'Region';
$labels['country'] = 'Land';
$labels['birthday'] = 'Födelsedag';
$labels['anniversary'] = 'Årsdag';
$labels['website'] = 'Webbplats';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Anteckningar';
$labels['male'] = 'Man';
$labels['female'] = 'Kvinna';
$labels['manager'] = 'Chef';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Make/Maka';
$labels['allfields'] = 'Alla fält';
$labels['search'] = 'Sök';
$labels['searchresult'] = 'Sökresultat';
$labels['advsearch'] = 'Avancerad sökning';
$labels['advanced'] = 'Avancerad';
$labels['other'] = 'Annat';
$labels['printcontact'] = 'Skriv ut kontakt';
$labels['qrcode'] = 'QR-kod';
$labels['typehome'] = 'Hem';
$labels['typework'] = 'Arbete';
$labels['typeother'] = 'Annat';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Huvudsakligt';
$labels['typehomefax'] = 'Fax hem';
$labels['typeworkfax'] = 'Fax arbete';
$labels['typecar'] = 'Bil';
$labels['typepager'] = 'Personsökare';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Webbplats';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Lägg till fält...';
$labels['addcontact'] = 'Lägg till kontakt';
$labels['editcontact'] = 'Ändra kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontaktegenskaper';
$labels['contactnameandorg'] = 'Namn och organisation';
$labels['personalinfo'] = 'Personlig information';
$labels['personal'] = 'Personliga';
$labels['contactphoto'] = 'Kontaktfoto';
$labels['edit'] = 'Redigera';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Spara';
$labels['delete'] = 'Ta bort';
$labels['discard'] = 'Förkasta';
$labels['continue'] = 'Fortsätt';
$labels['ok'] = 'OK';
$labels['rename'] = 'Ändra namn';
$labels['addphoto'] = 'Lägg till';
$labels['replacephoto'] = 'Ersätt';
$labels['uploadphoto'] = 'Ladda upp foto';
$labels['choosefile'] = 'Välj fil...';
$labels['choosefiles'] = 'Välj filer...';
$labels['browse'] = 'Bläddra';
$labels['newcontact'] = 'Ny kontakt';
$labels['deletecontact'] = 'Ta bort vald kontakt';
$labels['composeto'] = 'Nytt meddelande till';
$labels['contactsfromto'] = 'Kontakt $from till $to av $count';
$labels['print'] = 'Skriv ut';
$labels['export'] = 'Exportera';
$labels['exportall'] = 'Exportera alla';
$labels['exportsel'] = 'Exportera markerade';
$labels['exportvcards'] = 'Exportera kontakter';
$labels['newgroup'] = 'Ny grupp';
$labels['addgroup'] = 'Lägg till grupp';
$labels['grouprename'] = 'Ändra gruppnamn';
$labels['groupdelete'] = 'Ta bort grupp';
$labels['groupassign'] = 'Lägg in i grupp...';
$labels['groupremove'] = 'Ta bort från grupp';
$labels['groupremoveselected'] = 'Ta bort markerade kontakter från gruppen';
$labels['uponelevel'] = 'Upp en nivå';
$labels['previouspage'] = 'Visa föregående sida';
$labels['firstpage'] = 'Visa första sidan';
$labels['nextpage'] = 'Visa nästa sida';
$labels['lastpage'] = 'Visa sista sidan';
$labels['group'] = 'Grupp';
$labels['groups'] = 'Kontaktgrupper';
$labels['listgroup'] = 'Visa gruppmedlemmar';
$labels['personaladrbook'] = 'Personliga adresser';
$labels['searchsave'] = 'Spara sökning';
$labels['searchdelete'] = 'Ta bort sökning';
$labels['import'] = 'Importera';
$labels['importcontacts'] = 'Importera kontakter';
$labels['importfromfile'] = 'Importera från fil';
$labels['importtarget'] = 'Lägg till kontakter i';
$labels['importreplace'] = 'Ersätt samtliga kontakter i adressboken';
$labels['importgroups'] = 'Importera grupptillhörigheter';
$labels['importgroupsall'] = 'Alla (skapa grupper om nödvändigt)';
$labels['importgroupsexisting'] = 'Endast till befintliga grupper';
$labels['importdesc'] = 'Kontakter kan importeras från en befintlig adressbok.<br/>Programmet stödjer inläsning av kontakter i formatet <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> eller formatet CSV (kommaseparerad data).';
$labels['importmapdesc'] = 'Bekräfta att fältkopplingarna nedan är korrekta innan du fortsätter med importen av CSV-filen.';
$labels['fieldnotmapped'] = 'Fältet är inte kopplat (importeras inte)';
$labels['skipheader'] = 'Importera inte första raden (rubriker)';
$labels['done'] = 'Klart';
$labels['settingsfor'] = 'Inställningar för';
$labels['about'] = 'Om';
$labels['preferences'] = 'Inställningar';
$labels['userpreferences'] = 'Användarinställningar';
$labels['editpreferences'] = 'Ändra användarinställningar';
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Hantera identiteter';
$labels['newidentity'] = 'Ny identitet';
$labels['addidentity'] = 'Lägg till identitet';
$labels['editidentity'] = 'Ändra identitet';
$labels['identityencryption'] = 'Kryptering';
$labels['preferhtml'] = 'Visa meddelanden i HTML-format';
$labels['defaultcharset'] = 'Förvald teckenkodning';
$labels['htmlmessage'] = 'HTML-meddelande';
$labels['messagepart'] = 'Del';
$labels['digitalsig'] = 'Digital signatur';
$labels['dateformat'] = 'Datumformat';
$labels['timeformat'] = 'Tidformat';
$labels['prettydate'] = 'Fina datum';
$labels['setdefault'] = 'Sätt som förval';
$labels['autodetect'] = 'Automatiskt';
$labels['language'] = 'Språk';
$labels['timezone'] = 'Tidszon';
$labels['pagesize'] = 'Rader per sida';
$labels['signature'] = 'Signatur';
$labels['dstactive'] = 'Sommartid';
$labels['showinextwin'] = 'Öppna i nytt fönster';
$labels['composeextwin'] = 'Skriv i nytt fönster';
$labels['htmleditor'] = 'Skriv meddelanden i HTML-format';
$labels['htmlonreply'] = 'Endast vid svar på meddelande i HTML-format';
$labels['htmlonreplyandforward'] = 'Vid svar på eller vidareskickande av meddelande i HTML-format';
$labels['htmlsignature'] = 'HTML-signatur';
$labels['showemail'] = 'Visa namn och adress';
$labels['previewpane'] = 'Visa meddelandefältet';
$labels['skin'] = 'Stilmall för användargränssnitt';
$labels['logoutclear'] = 'Töm Papperskorg vid utloggning';
$labels['logoutcompact'] = 'Packa Inkorg vid utloggning';
$labels['uisettings'] = 'Användargränssnitt';
$labels['serversettings'] = 'Serverinställningar';
$labels['mailboxview'] = 'Hantering av meddelanden';
$labels['mdnrequests'] = 'Skicka mottagarkvitton';
$labels['askuser'] = 'Fråga';
$labels['autosend'] = 'Automatiskt';
$labels['autosendknown'] = 'Skicka kvitto till mina kontakter, fråga för övriga';
$labels['autosendknownignore'] = 'Skicka kvitto till mina kontakter, ignorera övriga';
$labels['autosendtrusted'] = 'skicka kvitto till betrodda avsändare, annars fråga mig';
$labels['autosendtrustedignore'] = 'skicka kvitto till betrodda avsändare, annars ignorera';
$labels['ignorerequest'] = 'ignorera begäran';
$labels['readwhendeleted'] = 'Markera meddelande som läst vid borttagning';
$labels['flagfordeletion'] = 'Flagga meddelande för borttagning istället för att ta bort direkt';
$labels['skipdeleted'] = 'Visa inte borttagna meddelanden';
$labels['deletealways'] = 'Ta bort meddelande om flyttning till Papperskorg misslyckas';
$labels['deletejunk'] = 'Radera meddelanden i Skräp direkt';
$labels['showremoteimages'] = 'Visa externt länkade bilder i meddelande';
$labels['allowremoteresources'] = 'Tillåt externt länkade resurser (bilder, stilmallar)';
$labels['fromknownsenders'] = 'Från kända avsändare';
$labels['fromtrustedsenders'] = 'från betrodda avsändare';
$labels['frommycontacts'] = 'från mina kontakter';
$labels['always'] = 'Alltid';
$labels['alwaysbutplain'] = 'alltid, utom vid svar på textmeddelande';
$labels['showinlineimages'] = 'Visa bifogade bilder efter meddelande';
$labels['autosavedraft'] = 'Spara utkast med automatiskt intervall';
$labels['everynminutes'] = '$n min';
$labels['refreshinterval'] = 'Uppdatera (hämta nya meddelanden, o.s.v.)';
$labels['never'] = 'Aldrig';
$labels['immediately'] = 'Direkt';
$labels['messagesdisplaying'] = 'Visning av meddelanden';
$labels['messagescomposition'] = 'Redigering av meddelanden';
$labels['mimeparamfolding'] = 'Kodning av namn på bifogade filer';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (övriga)';
$labels['force7bit'] = 'Använd MIME-kodning för tecken med 8-bitar';
$labels['savelocalstorage'] = "Spara lokalt (tillfälligt)";
$labels['advancedoptions'] = 'Avancerade inställningar';
$labels['toggleadvancedoptions'] = 'Växla avancerade inställningar';
$labels['focusonnewmessage'] = 'Fokusera webbläsarens fönster vid nytt meddelande';
$labels['checkallfolders'] = 'Kontrollera alla mappar för nya meddelanden';
$labels['displaynext'] = 'Visa nästa i listan efter ta bort eller flytta';
$labels['defaultfont'] = 'Förvalt teckensnitt i HTML-meddelande';
$labels['mainoptions'] = 'Huvudalternativ';
$labels['browseroptions'] = 'Webbläsaralternativ';
$labels['section'] = 'Avdelning';
$labels['maintenance'] = 'Underhåll';
$labels['newmessage'] = 'Nytt meddelande';
$labels['signatureoptions'] = 'Signaturalternativ';
$labels['whenreplying'] = 'Vid svar';
$labels['replyempty'] = 'Inkludera inte ursprungligt meddelande';
$labels['replytopposting'] = 'Skriv nytt meddelande ovanför befintligt';
$labels['replytoppostingnoindent'] = 'Skriv nytt meddelande ovanför befintligt (utan indrag)';
$labels['replybottomposting'] = 'Skriv nytt meddelande nedanför befintligt';
$labels['replyremovesignature'] = 'Ta bort befintlig signatur från meddelandet vid svar';
$labels['autoaddsignature'] = 'Infoga signatur automatiskt';
$labels['newmessageonly'] = 'Vid nytt meddelande';
$labels['replyandforwardonly'] = 'Vid svar och vidareskickande';
$labels['insertsignature'] = 'Infoga signatur';
$labels['sigbelow'] = 'Placera signatur efter meddelandet';
$labels['sigseparator'] = 'Använd alltid avdelare enligt standard i signaturer';
$labels['automarkread'] = 'Markera meddelanden som lästa';
$labels['afternseconds'] = 'Efter $n sekunder';
$labels['reqmdn'] = 'Begär alltid mottagarkvitto';
$labels['reqdsn'] = 'Begär alltid leveransstatusmeddelande';
$labels['replysamefolder'] = 'Placera svar i samma mapp som besvarat meddelande';
$labels['defaultabook'] = 'Förvald adressbok';
$labels['autocompletesingle'] = 'Hoppa över alternativa adresser vid automatisk komplettering';
$labels['listnamedisplay'] = 'Lista kontakter med';
$labels['contactformmode'] = 'Kontaktformulär-läge';
$labels['privatemode'] = 'Privat (hem)';
$labels['businessmode'] = 'Företag (arbete)';
$labels['collectedaddresses'] = 'Samlade adresser';
$labels['collectedrecipients'] = 'Samlade mottagare';
$labels['collectedrecipientsopt'] = 'Lagra utgående mottagare i';
$labels['collectedsendersopt'] = 'Lagra betrodda avsändare i';
$labels['trustedsenders'] = 'Betrodda avsändare';
$labels['spellcheckbeforesend'] = 'Kontrollera stavning innan meddelanden skickas';
$labels['spellcheckoptions'] = 'Rättstavningsalternativ';
$labels['spellcheckignoresyms'] = 'Ignorera ord med symboler';
$labels['spellcheckignorenums'] = 'Ignorera ord med siffror';
$labels['spellcheckignorecaps'] = 'Ignorera ord med enbart stora bokstäver';
$labels['addtodict'] = 'Lägg till i ordlista';
$labels['mailtoprotohandler'] = 'Ange program för hantering av mailto-länkar';
$labels['standardwindows'] = 'Hantera popup-rutor som standardfönster';
$labels['forwardmode'] = 'Skicka meddelande vidare';
$labels['inline'] = 'Infogat';
$labels['asattachment'] = 'Bilaga';
$labels['replyallmode'] = 'Standardfunktion för knappen Svara alla';
$labels['replyalldefault'] = 'Svara alla';
$labels['replyalllist'] = 'Svara endast lista (i förekommande fall)';
$labels['allmessages'] = 'alla meddelanden';
$labels['olderxdays'] = 'äldre än $x dagar';
$labels['folder'] = 'Mapp';
$labels['folders'] = 'Mappar';
$labels['foldername'] = 'Mappnamn';
$labels['subscribed'] = 'Prenumererad';
$labels['messagecount'] = 'Meddelanden';
$labels['create'] = 'Skapa';
$labels['createfolder'] = 'Ny mapp';
$labels['managefolders'] = 'Hantera mappar';
$labels['specialfolders'] = 'Speciella mappar';
$labels['properties'] = 'Egenskaper';
$labels['folderproperties'] = 'Mappegenskaper';
$labels['parentfolder'] = 'Överliggande mapp';
$labels['location'] = 'Plats';
$labels['info'] = 'Information';
$labels['getfoldersize'] = 'Klicka för att få mappstorlek';
$labels['changesubscription'] = 'Klicka för att ändra prenumeration';
$labels['foldertype'] = 'Mapptyp';
$labels['personalfolder'] = 'Privat mapp';
$labels['otherfolder'] = 'Annan användares mapp';
$labels['sharedfolder'] = 'Offentlig mapp';
$labels['findfolders'] = 'Hitta mappar';
$labels['findcontacts'] = 'Hitta kontakter';
$labels['findmail'] = 'Hitta meddelanden';
$labels['namespace.personal'] = 'Personliga';
$labels['namespace.other'] = 'Andra användares';
$labels['namespace.shared'] = 'Delade';
$labels['dualuselabel'] = 'Kan endast innehålla';
$labels['dualusemail'] = 'meddelanden';
$labels['dualusefolder'] = 'mappar';
$labels['generate'] = 'Skapa';
$labels['encryptioncreatekey'] = 'Nytt nyckelpar ';
$labels['openmailvelopesettings'] = 'Öppna inställningar för Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Du har $nr passande privata nycklar i din Mailvelope-nyckelring:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Avsändaridentiteten har ännu ingen privat PGP-nyckel lagrad i Mailvelope-tillägget. Vill du skapa en för att kunna skicka krypterade meddelanden?';
$labels['encryption'] = 'Kryptering';
$labels['mailvelopeoptions'] = 'Mailvelope-alternativ';
$labels['mailvelopemainkeyring'] = 'Använd Mailvelopes huvudnyckelring';
$labels['mailvelopenotfound'] = 'Mailvelope-tillägg är inte aktiverat/installerat i din webbläsare.';
$labels['sortby'] = 'Sortera på';
$labels['sortasc'] = 'Sortera stigande';
$labels['sortdesc'] = 'Sortera fallande';
$labels['undo'] = 'Ångra';
$labels['installedplugins'] = 'Installerade tillägg';
$labels['plugin'] = 'Tillägg';
$labels['version'] = 'Version';
$labels['source'] = 'Källkod';
$labels['destination'] = 'Destination';
$labels['license'] = 'Licens';
$labels['support'] = 'Hjälp';
$labels['savedsearches'] = 'Sparade sökningar';
$labels['dateformatY'] = 'ÅÅÅÅ';
$labels['dateformaty'] = 'ÅÅ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Västeuropeisk';
$labels['easterneuropean'] = 'Östeuropeisk';
$labels['southeasterneuropean'] = 'Sydösteuropeisk';
$labels['baltic'] = 'Baltisk';
$labels['cyrillic'] = 'Kyrillisk';
$labels['arabic'] = 'Arabisk';
$labels['greek'] = 'Grekisk';
$labels['hebrew'] = 'Hebreisk';
$labels['turkish'] = 'Turkisk';
$labels['nordic'] = 'Skandinavisk';
$labels['thai'] = 'Thailändsk';
$labels['celtic'] = 'Keltisk';
$labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
$labels['arialabeltopnav'] = 'Fönsterkontroll';
$labels['arialabeltasknav'] = 'Programuppgifter';
$labels['arialabeltoolbar'] = 'Programmets verktygslist';
$labels['arialabellistnav'] = 'Listnavigering';
$labels['arialabelactivetask'] = 'Aktiv uppgift';
$labels['arialabelmessagessearchfilter'] = 'Meddelandelistningsfilter';
$labels['arialabelmailsearchform'] = 'Sökformulär för meddelande';
$labels['arialabelcontactsearchform'] = 'Sökformulär för kontakter';
$labels['arialabelmailquicksearchbox'] = 'Meddelandesökfält';
$labels['arialabelquicksearchbox'] = 'Sökfält';
$labels['arialabelfoldersearchfilter'] = 'Mapplistningsfilter';
$labels['arialabelfoldersearchform'] = 'Sökformulär för mappar';
$labels['arialabelfolderlist'] = 'Markering av meddelandemapp';
$labels['arialabelmessagelist'] = 'Meddelandelistning';
$labels['arialabelmailpreviewframe'] = 'Förhandsvisning av meddelande';
$labels['arialabelmailboxmenu'] = 'Mappåtgärdsmeny';
$labels['arialabellistselectmenu'] = 'Listmarkeringsmeny';
$labels['arialabelthreadselectmenu'] = 'Trådlistningsmeny';
$labels['arialabelmessagelistoptions'] = 'Alternativ för visning och sortering av meddelandelista';
$labels['arialabelmailimportdialog'] = 'Dialog för import av meddelande';
$labels['arialabelmessagenav'] = 'Meddelandenavigering';
$labels['arialabelmessagebody'] = 'Meddelandeinnehåll';
$labels['arialabelmessageactions'] = 'Meddelandehantering';
$labels['arialabelcontactquicksearch'] = 'Sökformulär för kontakter';
$labels['arialabelcontactsearchbox'] = 'Kontaktsökfält';
$labels['arialabelmessageheaders'] = 'Meddelandeinfo';
$labels['arialabelforwardingoptions'] = 'Alternativ för vidareskickande';
$labels['arialabelreplyalloptions'] = 'Alternativ för svara alla';
$labels['arialabelmoremessageactions'] = 'Ytterligare meddelandehantering';
$labels['arialabelmorecontactactions'] = 'Ytterligare kontakthantering';
$labels['arialabelmarkmessagesas'] = 'Markera markerat meddelande som...';
$labels['arialabelcomposeoptions'] = 'Skapandeinställningar';
$labels['arialabelresponsesmenu'] = 'Responsmeny';
$labels['arialabelattachmentuploadform'] = 'Uppladdningsformulär för bilaga';
$labels['arialabelattachmentmenu'] = 'Alternativ för bilagor';
$labels['arialabelmailtomenu'] = 'Adressalternativ';
$labels['arialabelattachmentpreview'] = 'Förhandsvisning av bilaga';
$labels['ariasummarycomposecontacts'] = 'Lista med kontakter och grupper att använda som mottagare';
$labels['arialabelcontactexportoptions'] = 'Exportalternativ för kontakter';
$labels['arialabelabookgroupoptions'] = 'Alternativ för adressbok/kontaktgrupp';
$labels['arialabelpreferencesform'] = 'Inställningsformulär';
$labels['arialabelidentityeditfrom'] = 'Ändringsformulär för identitet';
$labels['arialabelresponseeditfrom'] = 'Ändringsformulär för respons';
$labels['arialabelsearchterms'] = 'Sökord';
$labels['arialabeldropactionmenu'] = 'Dra-och-släpp-hanteringsmeny';
$labels['arialabelheadersmenu'] = 'Meny lägg till mottagare (meddelandeinfo)';
$labels['arialabelimagetools'] = 'Bildverktyg';
$labels['helplistnavigation'] = 'Listnavigering';
$labels['helplistkeyboardnavigation'] = "Piltangent upp/ner: Flytta radfokus/radmarkering.
Mellanslag: Välj fokuserad rad.
Shift + upp/ner: Välj ytterligare rad över/under.
Ctrl + mellanslag: Lägg till/ta bort fokuserad rad i markering.";
$labels['helplistkeyboardnavmessages'] = "Piltangent höger/vänster: visa/göm meddelandetråd (endast i trådvisningsläge).
Retur: Öppna markerat/fokuserat meddelande.
Backsteg: Flytta markerat meddelande till Papperskorg.";
$labels['helplistkeyboardnavcontacts'] = "Retur: Öppna markerad/fokuserad kontakt.";
localization/sv_SE/messages.inc000064400000041215151727150570012572 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ett fel uppstod!';
$messages['loginfailed']  = 'Inloggningen misslyckades';
$messages['cookiesdisabled'] = 'Webbläsaren accepterar inte cookies.';
$messages['sessionerror'] = 'Din inloggning är felaktig eller har gått ut';
$messages['cookiesmismatch'] = 'Något är fel med webbläsarens cookie. Rensa bort den för att kunna fortsätta.';
$messages['storageerror'] = 'Anslutning till lagringsservern misslyckades.';
$messages['servererror'] = 'Serverfel!';
$messages['servererrormsg'] = 'Serverfel: $msg';
$messages['accountlocked'] = 'För många felaktiga inloggningar. Försök igen senare.';
$messages['connerror'] = 'Anslutningsfel (misslyckades att kontakta servern)!';
$messages['dberror'] = 'Databasfel!';
$messages['dbconnerror'] = 'Anslutning till serverns databas misslyckades!';
$messages['windowopenerror'] = 'Popup-fönstret blockerades!';
$messages['requesttimedout'] = 'Begäran tog för lång tid';
$messages['errorreadonly'] = 'Åtgärden kunde inte utföras. Mappen är skrivskyddad.';
$messages['errornoperm'] = 'Åtgärden kunde inte utföras. Otillräcklig befogenhet.';
$messages['erroroverquota'] = 'Åtgärden kunde inte utföras. Otillräckligt lagringsutrymme.';
$messages['erroroverquotadelete'] = 'Otillräckligt lagringsutrymme. Tryck på SHIFT och DEL för att ta bort ett meddelande.';
$messages['invalidrequest'] = 'Ogiltig begäran! Informationen sparades inte.';
$messages['invalidhost'] = 'Ogiltigt servernamn.';
$messages['nomessagesfound'] = 'Inga meddelanden.';
$messages['loggedout'] = 'Du är utloggad. Välkommen åter!';
$messages['mailboxempty'] = 'Brevlådan är tom';
$messages['nomessages'] = 'Inga meddelanden';
$messages['refreshing'] = 'Uppdaterar...';
$messages['loading'] = 'Läser in...';
$messages['uploading'] = 'Överför fil...';
$messages['attaching'] = 'Bifogar fil...';
$messages['uploadingmany'] = 'Överför filer...';
$messages['loadingdata'] = 'Läser in data...';
$messages['checkingmail'] = 'Hämtar nya meddelanden...';
$messages['sendingmessage'] = 'Skickar meddelande...';
$messages['messagesent'] = 'Meddelandet har skickats.';
$messages['savingmessage'] = 'Sparar meddelande...';
$messages['messagesaved'] = 'Meddelandet har sparats i Utkast';
$messages['successfullysaved'] = 'Sparat.';
$messages['savingresponse'] = 'Sparar responstext...';
$messages['deleteresponseconfirm'] = 'Vill du verkligen ta bort denna responstext?';
$messages['nocontactselected'] = 'Ingen kontakt är vald ännu.';
$messages['addedsuccessfully'] = 'Kontakten har lagts till i adressboken.';
$messages['contactexists'] = 'En kontakt med den här adressen finns redan.';
$messages['contactnameexists'] = 'En kontakt med det här namnet finns redan.';
$messages['blockedimages'] = 'Externt länkade bilder i meddelandet har blockerats.';
$messages['blockedresources'] = 'Externt länkade resurser i meddelandet har blockerats.';
$messages['suspiciousemail'] = 'Meddelandet innehåller mailadresser som kan vara försök till bedrägeri.';
$messages['bccemail'] = 'Vidarebefordrat meddelande innehåller dolda mottagare (Bcc).';
$messages['bouncehint'] = 'Meddelandet kommer att skickas utan modifieringar, dvs med ursprungligt innehåll, meddelandehuvud och ursprungliga mottagare.';
$messages['encryptedmessage'] = 'Meddelandet är krypterat och kan tyvärr inte visas.';
$messages['externalmessagedecryption'] = 'Meddelandet är krypterat och kan visas med ett tillägg i webbläsaren.';
$messages['nopubkeyfor'] = 'Ingen giltig offentlig nyckel hittades för $email';
$messages['nopubkeyforsender'] = 'Ingen giltig offentlig nyckel hittades för din avsändaradress. Vill du kryptera meddelandet enbart för mottagaren?';
$messages['encryptnoattachments'] = 'Redan uppladdade bilagor kan inte krypteras. Lägg till bilagorna i krypteringsredigeraren istället.';
$messages['searchpubkeyservers'] = 'Ska saknade nycklar sökas i offentliga nyckelservrar?';
$messages['encryptpubkeysfound'] = 'Följande offentliga nycklar hittades:';
$messages['keyservererror'] = 'Nyckeln kunde inte hämtas från nyckelservern.';
$messages['keyimportsuccess'] = 'Offentlig nyckel $key är tillagd i din nyckelring.';
$messages['nocontactsfound'] = 'Inga kontakter hittades.';
$messages['contactnotfound'] = 'Efterfrågad kontakt hittades inte.';
$messages['contactsearchonly'] = 'Ange sökord för att hitta kontakter i vald adressbok.';
$messages['sendingfailed'] = 'Meddelandet kunde inte skickas.';
$messages['senttooquickly'] = 'Vänta ytterligare $sec sekunder med att skicka meddelandet.';
$messages['errorsavingsent'] = 'Det skickade meddelandet kunde inte sparas.';
$messages['errorsaving'] = 'Meddelandet kunde inte sparas.';
$messages['errormoving'] = 'Meddelandet kunde inte flyttas.';
$messages['errorcopying'] = 'Meddelandet kunde inte kopieras.';
$messages['errordeleting'] = 'Meddelandet kunde inte tas bort.';
$messages['errormarking'] = 'Meddelandet kunde inte markeras.';
$messages['alerttitle'] = 'Uppmärksamhet';
$messages['confirmationtitle'] = 'Är du säker...';
$messages['deletecontactconfirm']  = 'Vill du verkligen ta bort valda kontakter?';
$messages['deletegroupconfirm']  = 'Vill du verkligen ta bort den valda gruppen?';
$messages['deletemessagesconfirm'] = 'Vill du verkligen ta bort valda meddelanden?';
$messages['deletefolderconfirm']  = 'Vill du verkligen ta bort den här mappen?';
$messages['movefolderconfirm']  = 'Vill du verkligen flytta den här mappen?';
$messages['purgefolderconfirm']  = 'Vill du verkligen ta bort alla meddelanden i den här mappen?';
$messages['contactdeleting'] = 'Tar bort kontakt...';
$messages['groupdeleting'] = 'Tar bort grupp...';
$messages['folderdeleting'] = 'Tar bort mapp...';
$messages['foldermoving'] = 'Flyttar mapp...';
$messages['foldersubscribing'] = 'Startar prenumeration på mapp...';
$messages['folderunsubscribing'] = 'Avslutar prenumeration på mapp...';
$messages['formincomplete'] = 'Formuläret var inte komplett ifyllt.';
$messages['noemailwarning'] = 'Ange en giltig adress.';
$messages['nonamewarning']  = 'Ange ett namn.';
$messages['nopagesizewarning'] = 'Ange en sidstorlek.';
$messages['nosenderwarning'] = 'Ange en avsändaradress.';
$messages['recipientsadded'] = 'Mottagare tillagda.';
$messages['norecipientwarning'] = 'Ange minst en mottagare.';
$messages['disclosedrecipwarning'] = 'Alla mottagare kommer att kunna se varandras adresser. Undvik detta genom att ange adresserna i fältet Dold kopia istället.';
$messages['disclosedreciptitle'] = 'Alltför många mottagaradresser';
$messages['nosubjectwarning']  = 'Ämnesraden är tom. Vill du ange ett ämne nu?';
$messages['nosubjecttitle']  = 'Inget ämne';
$messages['nobodywarning'] = 'Skicka det här meddelandet utan text?';
$messages['notsentwarning'] = 'Meddelandet har inte skickats ännu men har ändringar som inte är sparade. Vill du strunta i ändringarna?';
$messages['restoresavedcomposedata'] = 'Ett tidigare skrivet men inte skickat meddelande upptäcktes.\n\nÄmne: $subject\nSparat: $date\n\nVill du återskapa meddelandet?';
$messages['nosearchname'] = 'Ange ett kontaktnamn eller en adress.';
$messages['notuploadedwarning'] = 'Alla bilagor har inte överförts ännu. Vänta eller avbryt överföringen.';
$messages['searchsuccessful'] = '$nr meddelanden hittades.';
$messages['contactsearchsuccessful'] = '$nr kontakter hittades.';
$messages['searchnomatch'] = 'Sökningen gav inget resultat.';
$messages['searching'] = 'Söker...';
$messages['checking'] = 'Kontrollerar...';
$messages['stillsearching'] = 'Söker fortfarande...';
$messages['nospellerrors'] = 'Inget stavfel hittades.';
$messages['folderdeleted'] = 'Mappen togs bort.';
$messages['foldersubscribed'] = 'Prenumeration på mapp startad.';
$messages['folderunsubscribed'] = 'Prenumeration på mapp avslutad.';
$messages['folderpurged'] = 'Mappen är tömd.';
$messages['folderexpunged'] = 'Mappen är rensad.';
$messages['deletedsuccessfully'] = 'Borttaget.';
$messages['converting'] = 'Tar bort formatering...';
$messages['messageopenerror'] = 'Meddelandet kunde inte hämtas från servern.';
$messages['filelinkerror'] = 'Filen kunde inte bifogas.';
$messages['fileuploaderror'] = 'Filuppladdning misslyckades.';
$messages['csvfilemismatch'] = 'Import av flera CSV-filer med olika fält stöds inte.';
$messages['filesizeerror'] = 'Den uppladdade filens storlek överstiger högsta tillåtna $size.';
$messages['filecounterror'] = 'Högst $count filer kan laddas upp samtidigt.';
$messages['msgsizeerror'] = 'Filen kunde inte bifogas. Största tillåtna storlek ($size) överskreds.';
$messages['msgsizeerrorfwd'] = 'Tillåten storlek på meddelandet ($size) är överskriden. $num meddelanden har inte bifogats.';
$messages['copysuccess'] = '$nr kontakter har kopierats.';
$messages['movesuccess'] = '$nr kontakter har flyttats.';
$messages['copyerror'] = 'Några kontakter kunde inte kopieras.';
$messages['moveerror'] = 'Några kontakter kunde inte flyttas.';
$messages['sourceisreadonly'] = 'Denna adresskälla är skrivskyddad.';
$messages['errorsavingcontact'] = 'Kontaktadressen kunde inte sparas.';
$messages['movingmessage'] = 'Flyttar meddelande...';
$messages['copyingmessage'] = 'Kopierar meddelande...';
$messages['copyingcontact'] = 'Kopierar kontakter...';
$messages['movingcontact'] = 'Flyttar kontakter...';
$messages['deletingmessage'] = 'Tar bort meddelande...';
$messages['markingmessage'] = 'Markerar meddelande...';
$messages['addingmember'] = 'Lägger till kontakter i gruppen...';
$messages['removingmember'] = 'Tar bort kontakter från gruppen...';
$messages['receiptsent'] = 'Mottagarkvitto har skickats.';
$messages['errorsendingreceipt'] = 'Mottagarkvitto kunde inte skickas.';
$messages['deleteidentityconfirm'] = 'Vill du verkligen ta bort denna identitet?';
$messages['nodeletelastidentity'] = 'Du kan inte ta bort identiteten, den är din sista.';
$messages['forbiddencharacter'] = 'Mappnamnet innehåller otillåtna tecken.';
$messages['selectimportfile'] = 'Välj en fil att ladda upp.';
$messages['addresswriterror'] = 'Markerad adressbok är skrivskyddad.';
$messages['contactaddedtogroup'] = 'Kontakterna har lagts till i gruppen.';
$messages['contactremovedfromgroup'] = 'Kontakterna har tagits bort från gruppen.';
$messages['nogroupassignmentschanged'] = 'Ingen grupptillhörighet ändrades.';
$messages['importwait'] = 'Importerar, var god vänta...';
$messages['importformaterror'] = 'Importen misslyckades! Filen har inte korrekt dataformat.';
$messages['importconfirm'] = '<b>Lyckad import av $inserted kontakter</b>';
$messages['importconfirmskipped'] = '<b>Hoppade över $skipped befintliga poster</b>';
$messages['importmessagesuccess'] = '$nr meddelanden har importerats';
$messages['importmessageerror'] = 'Importen misslyckades! Filen är inte ett giltigt meddelande eller en brevlåda';
$messages['opnotpermitted'] = 'Otillåten operation!';
$messages['nofromaddress'] = 'Vald identitet saknar adress.';
$messages['editorwarning'] = 'Genom att byta textredigerare kan formateringen av texten gå förlorad. Vill du fortsätta?';
$messages['httpreceivedencrypterror'] = 'Ett irreparabelt fel har uppstått. Kontakta administratören omgående. <b>Meddelandet kan inte skickas.</b>';
$messages['smtpconnerror'] = 'SMTP-fel ($code): Anslutning till servern misslyckades.';
$messages['smtpautherror'] = 'SMTP-fel ($code): Inloggningen misslyckades.';
$messages['smtpfromerror'] = 'SMTP-fel ($code): Kan inte sätta avsändaradress till "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP-fel ($code): Kan inte lägga till mottagaradress "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP-fel: Felaktigt formaterad lista med mottagaradresser.';
$messages['smtputf8error'] = 'SMTP-fel: Servern klarar inte mailadresser med Unicode.';
$messages['smtpsizeerror'] = 'SMTP-fel: Meddelandet är för stort ($limit).';
$messages['smtperror'] = 'SMTP-fel: $msg';
$messages['emailformaterror'] = 'Ogiltig adress: $email';
$messages['toomanyrecipients'] = 'Förmånga mottagare. Minska antalet till högst $max.';
$messages['maxgroupmembersreached'] = 'Antalet gruppmedlemmar får inte överstiga $max.';
$messages['internalerror'] = 'Ett internt fel uppstod. Försök igen.';
$messages['contactdelerror'] = 'Kontakt kunde inte tas bort.';
$messages['contactdeleted'] = 'Kontakt borttagen.';
$messages['contactrestoreerror'] = 'Borttagna kontakter kunde inte återskapas.';
$messages['contactrestored'] = 'Kontakter återskapade.';
$messages['groupdeleted'] = 'Grupp borttagen.';
$messages['grouprenamed'] = 'Gruppnamn ändrat.';
$messages['groupcreated'] = 'Grupp skapad.';
$messages['savedsearchdeleted'] = 'Sparad sökning borttagen.';
$messages['savedsearchdeleteerror'] = 'Kunde inte ta bort sparad sökning.';
$messages['savedsearchcreated'] = 'Sparad sökning tillagd.';
$messages['savedsearchcreateerror'] = 'Kunde inte lägga till sparad sökning.';
$messages['messagedeleted'] = 'Meddelande borttaget.';
$messages['messagemoved'] = 'Meddelande flyttat.';
$messages['messagemovedtotrash'] = 'Meddelanden flyttade till Papperskorg.';
$messages['messagecopied'] = 'Meddelande kopierat.';
$messages['messagemarked'] = 'Meddelande markerat.';
$messages['autocompletechars'] = 'Ange minst $min tecken för automatisk komplettering.';
$messages['autocompletemore'] = 'Ytterligare passande poster funna. Skriv fler tecken.';
$messages['namecannotbeempty'] = 'Namnet får inte vara tomt.';
$messages['nametoolong'] = 'Namnet är för långt.';
$messages['namedotforbidden'] = 'Mappnamnet kan inte inledas med en punkt.';
$messages['folderupdated'] = 'Mappen är uppdaterad.';
$messages['foldercreated'] = 'Mappen är skapad.';
$messages['invalidimageformat'] = 'Ogiltigt bildfilsformat.';
$messages['mispellingsfound'] = 'Stavfel hittades i meddelandet.';
$messages['parentnotwritable'] = 'Mappen kunde inte skapas eller flyttas. Åtkomsträttighet saknas.';
$messages['messagetoobig'] = 'Meddelandet är alltför stort att behandla.';
$messages['attachmentvalidationerror'] = 'Den här bilagan är misstänkt eftersom dess typ inte överensstämmer med typen som anges i meddelandet. Om du inte litar på avsändaren ska du inte öppna bilagan i webbläsaren eftersom innehållet kan vara skadligt.<br/><br/><em>Förväntad: $expected; Funnen: $detected</em>';
$messages['noscriptwarning'] = 'Varning: Denna webbmailtjänst fungerar inte utan Javascript! Aktivera Javascript i webbläsarens inställningar.';
$messages['messageissent'] = 'Meddelandet är skickat men har inte sparats ännu. Vill du spara meddelandet nu?';
$messages['errnotfound'] = 'Filen hittades inte';
$messages['errnotfoundexplain'] = 'Efterfrågad resurs hittades inte!';
$messages['errfailedrequest'] = 'Begäran misslyckades';
$messages['errauthorizationfailed'] = 'Autentiseringen misslyckades';
$messages['errunauthorizedexplain'] = 'Din behörighet till den här tjänsten kunde inte bekräftas!';
$messages['errrequestcheckfailed'] = 'Kontroll av begäran misslyckades';
$messages['errcsrfprotectionexplain'] = "Åtkomst till den här resursen är skyddad mot CSRF.\nDetta visas därför att utloggning från tjänsten inte gjordes korrekt.\n\nEn aktiv handling krävs nu för att fortsätta.";
$messages['errcontactserveradmin'] = 'Kontakta administratören.';
$messages['clicktoresumesession'] = 'Klicka här för att återuppta föregående session';
$messages['errcomposesession'] = 'Fel i påbörjat meddelande';
$messages['errcomposesessionexplain'] = 'Det påbörjade meddelandet hittades inte.';
$messages['clicktocompose'] = 'Klicka här för att skriva ett nytt meddelande';
$messages['nosupporterror'] = 'Funktionen finns inte i webbläsaren.';
$messages['siginserted'] = 'Signatur infogad.';
$messages['responseinserted'] = 'Respons infogad.';
$messages['noresponsesavailable'] = 'Ingen respons tillgänglig';
$messages['listempty'] = 'Listan är tom.';
$messages['listusebutton'] = 'Använd Skapa-knappen för att lägga till information.';
$messages['keypaircreatesuccess'] = 'Ett nytt nyckelpar har skapats för $identity.';
$messages['emptyattachment'] = 'Bilagan verkar vara tom.<br>Kontakta avsändaren.';
$messages['oauthloginfailed'] = 'OAuth-inloggningen misslyckades. Vänligen försök igen.';
localization/nb_NO/timezones.inc000064400000001564151727150570012757 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:cairo'] = 'Kairo';
localization/nb_NO/labels.inc000064400000100041151727150570012172 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Velkommen til $product';
$labels['username'] = 'Brukernavn';
$labels['password'] = 'Passord';
$labels['server'] = 'Tjener';
$labels['login'] = 'Logg inn';
$labels['oauthlogin'] = 'Logg inn med $provider';
$labels['menu'] = 'Meny';
$labels['logout'] = 'Logg ut';
$labels['mail'] = 'E-post';
$labels['settings'] = 'Innstillinger';
$labels['addressbook'] = 'Adressebok';
$labels['darkmode'] = 'Mørkt modus';
$labels['lightmode'] = 'Lyst modus';
$labels['inbox'] = 'Innboks';
$labels['drafts'] = 'Kladd';
$labels['sent'] = 'Sendt';
$labels['trash'] = 'Slettet';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Vis orginale navn for spesielle mapper';
$labels['subject'] = 'Emne';
$labels['from'] = 'Avsender';
$labels['sender'] = 'Avsender';
$labels['to'] = 'Mottaker';
$labels['cc'] = 'Kopi til';
$labels['bcc'] = 'Blindkopi til';
$labels['replyto'] = 'Svar til';
$labels['followupto'] = 'Oppfølging til';
$labels['date'] = 'Dato';
$labels['size'] = 'Størrelse';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisasjon';
$labels['readstatus'] = 'Lese status';
$labels['listoptions'] = 'List muligheter';
$labels['listoptionstitle'] = 'Listealternativer';
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Meldinger $from til $to av $count';
$labels['threadsfromto'] = 'Tråder $from til $to av $count';
$labels['messagenrof'] = 'Melding $nr av $count';
$labels['fromtoshort'] = '$from – $to av $count';
$labels['copy'] = 'Kopier';
$labels['move'] = 'Flytt';
$labels['moveto'] = 'Flytt til...';
$labels['copyto'] = 'Kopier til...';
$labels['download'] = 'Last ned';
$labels['open'] = 'Åpen';
$labels['showattachment'] = 'Vis';
$labels['showanyway'] = 'Vis likevel';
$labels['filename'] = 'Filnavn';
$labels['filesize'] = 'Filstørrelse';
$labels['addtoaddressbook'] = 'Legg til i adressebok';
$labels['sun'] = 'Søn';
$labels['mon'] = 'Man';
$labels['tue'] = 'Tir';
$labels['wed'] = 'Ons';
$labels['thu'] = 'Tor';
$labels['fri'] = 'Fre';
$labels['sat'] = 'Lør';
$labels['sunday'] = 'Søndag';
$labels['monday'] = 'Mandag';
$labels['tuesday'] = 'Tirsdag';
$labels['wednesday'] = 'Onsdag';
$labels['thursday'] = 'Torsdag';
$labels['friday'] = 'Fredag';
$labels['saturday'] = 'Lørdag';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mars';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Desember';
$labels['today'] = 'I dag';
$labels['refresh'] = 'Oppdater';
$labels['checkmail'] = 'Se etter nye meldinger';
$labels['compose'] = 'Skriv ny e-post';
$labels['writenewmessage'] = 'Opprett ny e-post';
$labels['reply'] = 'Svar';
$labels['replytomessage'] = 'Svar på denne e-posten';
$labels['replytoallmessage'] = 'Svar til alle mottakere';
$labels['replyall'] = 'Svar alle';
$labels['replylist'] = 'Svarliste';
$labels['forward'] = 'Videresend';
$labels['forwardinline'] = 'Videresend i melding';
$labels['forwardattachment'] = 'Vidresend som vedlegg';
$labels['forwardmessage'] = 'Videresend denne e-posten';
$labels['bouncemsg'] = 'Send på nytt (bounce)';
$labels['bounce'] = 'Send på nytt';
$labels['deletemessage'] = 'Slett e-posten';
$labels['movemessagetotrash'] = 'Flytt e-posten til søppel';
$labels['printmessage'] = 'Skriv ut denne e-posten';
$labels['previousmessage'] = 'Vis forrige melding';
$labels['firstmessage'] = 'Vis første melding';
$labels['nextmessage'] = 'Vis neste melding';
$labels['lastmessage'] = 'Vis siste melding';
$labels['backtolist'] = 'Tilbake til e-postlisten';
$labels['viewsource'] = 'Vis kilde';
$labels['mark'] = 'Merke';
$labels['markmessages'] = 'Merk meldinger';
$labels['markread'] = 'Som lest';
$labels['markunread'] = 'Som ulest';
$labels['markflagged'] = 'Som flagget';
$labels['markunflagged'] = 'Som uflagget';
$labels['markundeleted'] = 'Som ikke slettet';
$labels['moreactions'] = 'Flere handlinger...';
$labels['markallread'] = 'Merk alle som lest';
$labels['folders-cur'] = 'Kun markert mappe';
$labels['folders-sub'] = 'Markert mappe og dens undermapper';
$labels['folders-all'] = 'Alle mapper';
$labels['more'] = 'Mer';
$labels['back'] = 'Tilbake';
$labels['options'] = 'Alternativer';
$labels['composeoptions'] = 'Skrivealternativer';
$labels['optionsandattachments'] = 'Alternativer og vedlegg';
$labels['actions'] = 'Handlinger';
$labels['first'] = 'Første';
$labels['last'] = 'Siste';
$labels['previous'] = 'Forrige';
$labels['next'] = 'Neste';
$labels['select'] = 'Velg';
$labels['selection'] = 'Valg';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
$labels['currpage'] = 'Gjeldende side';
$labels['isread'] = 'Lese';
$labels['unread'] = 'Uleste';
$labels['flagged'] = 'Flagget';
$labels['unflagged'] = 'Ikke flagget';
$labels['unanswered'] = 'Ubesvarte';
$labels['withattachment'] = 'Med vedlegg';
$labels['deleted'] = 'Slettet';
$labels['undeleted'] = 'Ikke slettet';
$labels['replied'] = 'Besvart';
$labels['forwarded'] = 'Videresendt';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filter';
$labels['list'] = 'Liste';
$labels['threads'] = 'Tråder';
$labels['expand-all'] = 'Utvid alle';
$labels['expand-unread'] = 'Utvid uleste';
$labels['collapse-all'] = 'Skjul alle';
$labels['threaded'] = 'Trådet';
$labels['showunread'] = 'Vis uleste meldinger';
$labels['autoexpand_threads'] = 'Utvid tråder';
$labels['do_expand'] = 'alle tråder';
$labels['expand_only_unread'] = 'kun med uleste meldinger';
$labels['fromto'] = 'Avsender/Mottaker';
$labels['flag'] = 'Flagg';
$labels['attachment'] = 'Vedlegg';
$labels['nonesort'] = 'Ingen';
$labels['sentdate'] = 'Dato sendt';
$labels['arrival'] = 'Dato mottatt';
$labels['asc'] = 'stigende';
$labels['desc'] = 'synkende';
$labels['listcolumns'] = 'Listekolonner';
$labels['listsorting'] = 'Sorteringskolonne';
$labels['listorder'] = 'Sorteringsrekkefølge';
$labels['listmode'] = 'Listevisningsmodus';
$labels['lmode'] = 'Listemodus';
$labels['layout'] = 'Oppsett';
$labels['layoutwidescreen'] = 'Bredskjerm';
$labels['layoutdesktop'] = 'Skrivebord';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Bredskjerm (3 kolonner)';
$labels['layoutdesktopdesc'] = 'Skrivebord (bred liste og forhåndsvisning av melding under)';
$labels['layoutlistdesc'] = 'Liste (ingen epost forhåndsvisning)';
$labels['folderactions'] = 'Mappehandlinger...';
$labels['compact'] = 'Rydd opp';
$labels['empty'] = 'Tøm';
$labels['importmessages'] = 'Importer meldinger';
$labels['mailimportdesc'] = 'Du kan laste opp epost som filer i <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> eller <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> format.';
$labels['mailimportzip'] = 'Flere filer kan komprimeres til et zip-arkiv.';
$labels['quota'] = 'Plassforbruk';
$labels['unknown'] = 'ukjent';
$labels['unlimited'] = 'ubegrenset';
$labels['quotatype'] = 'Kvotetype';
$labels['quotatotal'] = 'Grense';
$labels['quotaused'] = 'Benyttet';
$labels['quotastorage'] = 'Lagringsplass';
$labels['quotamessage'] = 'Antall meldinger';
$labels['shortheaderdate'] = 'På den $date';
$labels['shortheaderto'] = 'Til $to på den $date';
$labels['shortheaderfrom'] = 'Fra $from på den $date';
$labels['quicksearch'] = 'Hurtigsøk';
$labels['searchplaceholder'] = 'Søk...';
$labels['resetsearch'] = 'Nullstill søk';
$labels['searchmod'] = 'Søke felt';
$labels['msgtext'] = 'Hele meldingen';
$labels['body'] = 'Meldingstekst';
$labels['type'] = 'Type';
$labels['namex'] = 'Navn';
$labels['searchscope'] = 'Omfanget';
$labels['currentfolder'] = 'Den nåværende mappen';
$labels['subfolders'] = 'Dette og undermappene';
$labels['allfolders'] = 'Alle mapper';
$labels['searchinterval-1W'] = 'eldre enn en uke';
$labels['searchinterval-1M'] = 'eldre enn en måned';
$labels['searchinterval-1Y'] = 'eldre enn ett år';
$labels['searchinterval1W'] = 'yngre enn en uke';
$labels['searchinterval1M'] = 'yngre enn en måned';
$labels['searchinterval1Y'] = 'yngre enn ett år';
$labels['openinextwin'] = 'Åpne i nytt vindu';
$labels['emlsave'] = 'Last ned (.eml)';
$labels['changeformattext'] = 'Vis i ren tekst';
$labels['changeformathtml'] = 'Vis i HTML';
$labels['editasnew'] = 'Rediger som ny';
$labels['send'] = 'Send.';
$labels['sendmessage'] = 'Send e-posten';
$labels['savemessage'] = 'Lagre kladd';
$labels['addattachment'] = 'Vedlegg';
$labels['charset'] = 'Tegnsett';
$labels['editortype'] = 'Format';
$labels['returnreceipt'] = 'Be om kvittering';
$labels['dsn'] = 'Leveringsstatus varsling';
$labels['keepformatting'] = 'Beholde formateringen';
$labels['mailreplyintro'] = 'Den $date, skrev $sender:';
$labels['originalmessage'] = 'Opprinnelig melding';
$labels['selectimage'] = 'Velg bilde';
$labels['addimage'] = 'Legg til bilde';
$labels['selectmedia'] = 'Velg film';
$labels['addmedia'] = 'Legg til film';
$labels['encrypt'] = 'Krypter';
$labels['encryptmessage'] = 'Krypter melding';
$labels['encryptmessagemailvelope'] = 'Krypter melding med Mailvelope';
$labels['importpubkeys'] = 'Importer offentlige nøkler';
$labels['encryptedsendialog'] = 'Sender kryptert melding';
$labels['encryptandsign'] = 'Krypter og signer';
$labels['keyid'] = 'Nøkkel ID';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Utløpt';
$labels['keyrevoked'] = 'Tilbakekalt';
$labels['bccinstead'] = 'Bruk blindkopi';
$labels['addheader'] = 'Legg til mottaker (hode)';
$labels['insert'] = 'Sett inn';
$labels['insertcontact'] = 'Sett inn kontakt(er)';
$labels['recipient'] = 'Mottaker';
$labels['recipientedit'] = 'Rediger mottaker';
$labels['editidents'] = 'Endre identiteter';
$labels['spellcheck'] = 'Stavekontroll';
$labels['checkspelling'] = 'Stavekontroll';
$labels['resumeediting'] = 'Fortsett redigering';
$labels['revertto'] = 'Tilbake til';
$labels['restore'] = 'Gjenopprett';
$labels['restoremessage'] = 'Gjenopprett melding?';
$labels['ignore'] = 'Ignorer';
$labels['responses'] = 'Svar';
$labels['insertresponse'] = 'Sett inn et svar';
$labels['manageresponses'] = 'Rediger svar';
$labels['newresponse'] = 'Opprett nytt svar';
$labels['addresponse'] = 'Legg til svar';
$labels['editresponse'] = 'Rediger svar';
$labels['editresponses'] = 'Rediger svar';
$labels['responsename'] = 'Navn';
$labels['responsetext'] = 'Svar tekst';
$labels['attach'] = 'Legg ved';
$labels['attachments'] = 'Vedlegg';
$labels['upload'] = 'Last opp';
$labels['uploadprogress'] = '$percent ($current fra $total)';
$labels['close'] = 'Lukk';
$labels['messageoptions'] = 'Meldingsalternativer...';
$labels['togglecomposeoptions'] = 'Veksle visning av skrivealternativer';
$labels['attachmentrename'] = 'Endre navn på vedlegg';
$labels['low'] = 'Lav';
$labels['lowest'] = 'Lavest';
$labels['normal'] = 'Normal';
$labels['high'] = 'Høy';
$labels['highest'] = 'Høyest';
$labels['nosubject'] = '(intet emne)';
$labels['showimages'] = 'Vis bilder';
$labels['allow'] = 'Tillat';
$labels['alwaysshow'] = 'Vis alltid bilder fra $sender';
$labels['alwaysallow'] = 'Tillat alltid fra $sender';
$labels['isdraft'] = 'Dette er en kladd.';
$labels['andnmore'] = '$nr flere ...';
$labels['details'] = 'Detaljer';
$labels['summary'] = 'Oppsummering';
$labels['headers'] = 'Hoder';
$labels['allheaders'] = 'Alle hoder...';
$labels['togglemoreheaders'] = 'Vis flere meldings-headere';
$labels['togglefullheaders'] = 'Veksle visning av meldingens headere i råformat';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Ren tekst';
$labels['savesentmessagein'] = 'Lagre sendt melding i';
$labels['dontsave'] = 'ikke lagre';
$labels['maxuploadsize'] = 'Maksimalt tillatt filstørrelse er $size';
$labels['addcc'] = 'Legg til kopiadressat (Cc)';
$labels['addbcc'] = 'Legg til blindkopiadressat (Bcc)';
$labels['addreplyto'] = 'Legg til svar til (Reply-To)';
$labels['addfollowupto'] = 'Legg til oppfølging';
$labels['sendreceipt'] = 'Sende lesebekreftelse?';
$labels['mdnrequest'] = 'Senderen av denne meldingen har bedt om å bli gjort oppmerksom på at denne meldingen er lest. Ønsker du å sende denne bekreftelsen?';
$labels['receiptread'] = 'Kvittering (lest)';
$labels['yourmessage'] = 'Dette er en kvittering for at din e-post er mottatt';
$labels['receiptnote'] = 'Merknad: Denne kvitteringen bekrefter bare at e-posten ble vist hos mottakeren. Det er ingen garanti for at mottakeren har lest eller forstått innholdet i e-posten.';
$labels['sendalwaysto'] = 'Send alltid til $email';
$labels['zoomin'] = 'Zoom Inn';
$labels['zoomout'] = 'Zoom Ut';
$labels['rotate'] = 'Roter';
$labels['increaseimage'] = 'Forstørre bilde';
$labels['decreaseimage'] = 'Forminske bilde';
$labels['rotateimage'] = 'Roter bilde';
$labels['showtools'] = 'Vis bildeverktøy';
$labels['hidetools'] = 'Skjul bildeverktøy';
$labels['name'] = 'Visningsnavn';
$labels['firstname'] = 'Fornavn';
$labels['surname'] = 'Etternavn';
$labels['middlename'] = 'Mellom Navn';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Suffiks';
$labels['nickname'] = 'Kallenavn';
$labels['jobtitle'] = 'Jobb Tittel';
$labels['department'] = 'Avdeling';
$labels['gender'] = 'Kjønn';
$labels['maidenname'] = 'Pikenavn';
$labels['email'] = 'E-post';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresse';
$labels['street'] = 'Gate';
$labels['locality'] = 'Sted';
$labels['zipcode'] = 'Postkode';
$labels['region'] = 'Stat/provins';
$labels['country'] = 'Land';
$labels['birthday'] = 'Fødselsdag';
$labels['anniversary'] = 'Merkedag';
$labels['website'] = 'Nettsted';
$labels['instantmessenger'] = 'Lynmelding';
$labels['notes'] = 'Notater';
$labels['male'] = 'Mann';
$labels['female'] = 'Kvinne';
$labels['manager'] = 'Leder';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Ektefelle';
$labels['allfields'] = 'Alle felter';
$labels['search'] = 'Søk';
$labels['searchresult'] = 'Søkeresultat';
$labels['advsearch'] = 'Avansert søk';
$labels['advanced'] = 'Avansert';
$labels['other'] = 'Annet';
$labels['printcontact'] = 'Skriv ut kontakt';
$labels['qrcode'] = 'QR Kode';
$labels['typehome'] = 'Hjem';
$labels['typework'] = 'Jobb';
$labels['typeother'] = 'Annet';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Hoved';
$labels['typehomefax'] = 'Hjemmefaks';
$labels['typeworkfax'] = 'Faks på arbeid';
$labels['typecar'] = 'Bil';
$labels['typepager'] = 'Personsøker';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Hjemmeside';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Legg til felt ...';
$labels['addcontact'] = 'Legg til kontakt';
$labels['editcontact'] = 'Rediger kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Egenskaper';
$labels['contactnameandorg'] = 'Navn og Organisasjon';
$labels['personalinfo'] = 'Personlig informasjon';
$labels['personal'] = 'Personlig';
$labels['contactphoto'] = 'Kontakt bilde';
$labels['edit'] = 'Rediger';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Lagre';
$labels['delete'] = 'Slett';
$labels['discard'] = 'Forkast';
$labels['continue'] = 'Fortsett';
$labels['ok'] = 'OK';
$labels['rename'] = 'Gi nytt navn';
$labels['addphoto'] = 'Legg til';
$labels['replacephoto'] = 'Erstatt';
$labels['uploadphoto'] = 'Last opp bilde';
$labels['choosefile'] = 'Velg fil...';
$labels['choosefiles'] = 'Velg filer...';
$labels['browse'] = 'Bla gjennom';
$labels['newcontact'] = 'Opprett ny kontakt';
$labels['deletecontact'] = 'Slett valgte kontakter';
$labels['composeto'] = 'Skriv e-post til';
$labels['contactsfromto'] = 'Kontakter $from til $to av $count';
$labels['print'] = 'Skriv ut';
$labels['export'] = 'Eksporter';
$labels['exportall'] = 'Eksporter alle';
$labels['exportsel'] = 'Eksporter valgte';
$labels['exportvcards'] = 'Eksporter kontakter i vCard-format';
$labels['newgroup'] = 'Opprett ny gruppe';
$labels['addgroup'] = 'Legg til gruppe';
$labels['grouprename'] = 'Endre navn på gruppe';
$labels['groupdelete'] = 'Slett gruppe';
$labels['groupassign'] = 'Tildel gruppe...';
$labels['groupremove'] = 'Fjern fra gruppe';
$labels['groupremoveselected'] = 'Fjern valgte kontakter fra gruppe';
$labels['uponelevel'] = 'Opp ett nivå';
$labels['previouspage'] = 'Vis forrige sett';
$labels['firstpage'] = 'Vis første sett';
$labels['nextpage'] = 'Vis neste sett';
$labels['lastpage'] = 'Vis siste sett';
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Grupper';
$labels['listgroup'] = 'Vis gruppemedlemmer';
$labels['personaladrbook'] = 'Egne adresser';
$labels['searchsave'] = 'Lagre søk';
$labels['searchdelete'] = 'Slett søk';
$labels['import'] = 'Importer';
$labels['importcontacts'] = 'Importer kontakter';
$labels['importfromfile'] = 'Importer fra fil';
$labels['importtarget'] = 'Legg kontakter til';
$labels['importreplace'] = 'Erstatt hele adresseboken';
$labels['importgroups'] = 'Importer gruppetilordninger';
$labels['importgroupsall'] = 'Alle (opprett grupper hvis nødvendig)';
$labels['importgroupsexisting'] = 'Bare for eksisterende grupper';
$labels['importdesc'] = 'Du kan laste opp kontakter fra en eksisterende konktaktliste.<br/>Vi støtter foreløbig importen av kontakter under <a href="https://nb.wikipedia.org/wiki/VCard">vCard</a> eller CSV (kommaseparert fil) formatene.';
$labels['importmapdesc'] = 'Vennligst bekreft at feltene under er fordelt riktig, før du går videre med å importere CSV (comma-separated) data.';
$labels['fieldnotmapped'] = 'Felt er ubrukt (ikke importer)';
$labels['skipheader'] = 'Ikke importer første linje (overskrifter)';
$labels['done'] = 'Fullført';
$labels['settingsfor'] = 'Innstillinger for';
$labels['about'] = 'Om';
$labels['preferences'] = 'Oppsett';
$labels['userpreferences'] = 'Brukeroppsett';
$labels['editpreferences'] = 'Rediger brukeroppsett';
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Behandle identiteter';
$labels['newidentity'] = 'Opprett ny identitet';
$labels['addidentity'] = 'Legg til identitet';
$labels['editidentity'] = 'Rediger identitet';
$labels['identityencryption'] = 'Kryptering';
$labels['preferhtml'] = 'Foretrekk HTML';
$labels['defaultcharset'] = 'Standard tegnsett';
$labels['htmlmessage'] = 'HTML-melding';
$labels['messagepart'] = 'Del';
$labels['digitalsig'] = 'Digital signatur';
$labels['dateformat'] = 'Datoformat';
$labels['timeformat'] = 'Tidsformat';
$labels['prettydate'] = 'Pen datovisning';
$labels['setdefault'] = 'Sett som standard';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Språk';
$labels['timezone'] = 'Tidssone';
$labels['pagesize'] = 'Linjer per side';
$labels['signature'] = 'Signatur';
$labels['dstactive'] = 'Sommertid';
$labels['showinextwin'] = 'Åpne melding i nytt vindu';
$labels['composeextwin'] = 'Skriv i nytt vindu';
$labels['htmleditor'] = 'Bruk HTML-editor';
$labels['htmlonreply'] = 'ved svar på HTML-melding';
$labels['htmlonreplyandforward'] = 'ved videresending av eller svar på HTML-melding';
$labels['htmlsignature'] = 'HTML-signatur';
$labels['showemail'] = 'Vis e-postadresse sammen med visningsnavn';
$labels['previewpane'] = 'Forhåndsvisning';
$labels['skin'] = 'Utseende';
$labels['logoutclear'] = 'Tøm søppel ved utlogging';
$labels['logoutcompact'] = 'Kompakt innboksen ved utlogging';
$labels['uisettings'] = 'Brukergrensesnitt';
$labels['serversettings'] = 'Serverinnstillinger';
$labels['mailboxview'] = 'E-postvisning';
$labels['mdnrequests'] = 'Tilbakemelding til avsender';
$labels['askuser'] = 'spør hver gang';
$labels['autosend'] = 'send automatisk';
$labels['autosendknown'] = 'send kvittering til kontaktene mine, ellers spør meg';
$labels['autosendknownignore'] = 'send kvittering til kontaktene mine, ellers ignorer';
$labels['autosendtrusted'] = 'send kvittering til mine pålitelige kontakter, ellers spør meg';
$labels['autosendtrustedignore'] = 'send kvittering til mine pålitelige kontakter, ellers ignorer';
$labels['ignorerequest'] = 'Ignorer forespørsel';
$labels['readwhendeleted'] = 'Merk melding som lest ved sletting';
$labels['flagfordeletion'] = 'Flagg meldingen for sletting i stedet for å slette';
$labels['skipdeleted'] = 'Ikke vis slettede meldinger';
$labels['deletealways'] = 'Hvis en melding ikke kan flyttes til Slettet, slett den';
$labels['deletejunk'] = 'Slett meldinger i spam direkte';
$labels['showremoteimages'] = 'Vis bilder fra eksterne servere i meldinger';
$labels['allowremoteresources'] = 'Tillatt ekstrerne ressurser (bilder, stiler)';
$labels['fromknownsenders'] = 'fra kjente avsendere';
$labels['fromtrustedsenders'] = 'fra pålitelige avsendere';
$labels['frommycontacts'] = 'fra mine kontakter';
$labels['always'] = 'alltid';
$labels['alwaysbutplain'] = 'Alltid, untatt når man svarer på ren tekst';
$labels['showinlineimages'] = 'Vis vedlagte bilder nedenfor meldingen';
$labels['autosavedraft'] = 'Autolagring av utkast';
$labels['everynminutes'] = 'hvert $n minutt';
$labels['refreshinterval'] = 'Oppdater (sjekk for nye meldinger etc.)';
$labels['never'] = 'Aldri';
$labels['immediately'] = 'umiddelbart';
$labels['messagesdisplaying'] = 'Visning av meldinger';
$labels['messagescomposition'] = 'Skriving av meldinger';
$labels['mimeparamfolding'] = 'Vedleggsnavn';
$labels['2231folding'] = 'Fullstendig RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Fullstendig RFC 2047 (andre)';
$labels['force7bit'] = 'Bruk MIME-koding for 8-bit-tegn';
$labels['savelocalstorage'] = "Lagre i nettleserens lokale minne (midlertidig)";
$labels['advancedoptions'] = 'Avanserte alternativer';
$labels['toggleadvancedoptions'] = 'Veksle visning av avanserte alternativer';
$labels['focusonnewmessage'] = 'Gi nettleservindu fokus ved nye meldinger';
$labels['checkallfolders'] = 'Kontroller alle mapper for nye meldinger';
$labels['displaynext'] = 'Vis neste element i liste etter sletting/flytting';
$labels['defaultfont'] = 'Standard skrifttype i HTML-melding';
$labels['mainoptions'] = 'Hovedinnstillinger';
$labels['browseroptions'] = 'Alternativer for nettleser';
$labels['section'] = 'Kategori';
$labels['maintenance'] = 'Vedlikehold';
$labels['newmessage'] = 'Ny melding';
$labels['signatureoptions'] = 'Innstillinger for signatur';
$labels['whenreplying'] = 'Ved svar på e-post';
$labels['replyempty'] = 'Ikke siter den originale meldingen';
$labels['replytopposting'] = 'start den nye meldingen over orginalmeldingen';
$labels['replytoppostingnoindent'] = 'start den nye meldingen over orginalmeldingen (ingen indentering)';
$labels['replybottomposting'] = 'start den nye meldingen under orginalmeldingen';
$labels['replyremovesignature'] = 'Fjern orginalsignaturen i svar på melding';
$labels['autoaddsignature'] = 'Legg til signatur';
$labels['newmessageonly'] = 'kun på nye meldinger';
$labels['replyandforwardonly'] = 'kun i svar og videresendinger';
$labels['insertsignature'] = 'Sett inn signatur';
$labels['sigbelow'] = 'Plasser signaturen under den siterte meldingen';
$labels['sigseparator'] = 'Tving standard skille i signaturer';
$labels['automarkread'] = 'Merk meldinger som lest';
$labels['afternseconds'] = 'etter $n sekunder';
$labels['reqmdn'] = 'Alltid be om svarkvittering';
$labels['reqdsn'] = 'Alltid be om leveringsstatus';
$labels['replysamefolder'] = 'Legg svar i mappen til meldingen det svares på';
$labels['defaultabook'] = 'Standard adressebok';
$labels['autocompletesingle'] = 'Hopp over alternative e-postadresser i autofullføring';
$labels['listnamedisplay'] = 'Vis kontakter som';
$labels['contactformmode'] = 'Kontaktskjemamodus';
$labels['privatemode'] = 'Privat (Hjem)';
$labels['businessmode'] = 'Arbeid';
$labels['collectedaddresses'] = 'Innsamlede adresser';
$labels['collectedrecipients'] = 'Innsamlede mottakere';
$labels['collectedrecipientsopt'] = 'Lagre utgående epost mottakere i';
$labels['collectedsendersopt'] = 'Lagre pålitelige avsendere i';
$labels['trustedsenders'] = 'Pålitelige avsendere';
$labels['spellcheckbeforesend'] = 'Kontroller staving før en melding sendes';
$labels['spellcheckoptions'] = 'Alternativer for stavekontroll';
$labels['spellcheckignoresyms'] = 'Ignorer ord med symboler';
$labels['spellcheckignorenums'] = 'Ignorer ord med tall';
$labels['spellcheckignorecaps'] = 'Ignorer ord med kun store bokstaver';
$labels['addtodict'] = 'Legg til i ordbok';
$labels['mailtoprotohandler'] = 'Registrer protokollhåndtering for mailto-lenker';
$labels['standardwindows'] = 'Håndter sprettoppvinduer som vanlige vinduer';
$labels['forwardmode'] = 'Meldinger videresendes';
$labels['inline'] = 'i teksten';
$labels['asattachment'] = 'som vedlegg';
$labels['replyallmode'] = 'Standard valg for [Svar alle] knapp';
$labels['replyalldefault'] = 'svar til alle';
$labels['replyalllist'] = 'svar kun til epostliste (hvis funnet)';
$labels['allmessages'] = 'alle meldinger';
$labels['olderxdays'] = 'eldre enn $x dager';
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenavn';
$labels['subscribed'] = 'Abonnere';
$labels['messagecount'] = 'Meldinger';
$labels['create'] = 'Opprett';
$labels['createfolder'] = 'Lag ny mappe';
$labels['managefolders'] = 'Rediger mapper';
$labels['specialfolders'] = 'Spesielle mapper';
$labels['properties'] = 'Egenskaper';
$labels['folderproperties'] = 'Egenskaper for mappe';
$labels['parentfolder'] = 'Overordnet mappe';
$labels['location'] = 'Sted';
$labels['info'] = 'Informasjon';
$labels['getfoldersize'] = 'Klikk for å få mappestørrelse';
$labels['changesubscription'] = 'Klikk for å endre abonnement';
$labels['foldertype'] = 'Mappetype';
$labels['personalfolder'] = 'Privat mappe';
$labels['otherfolder'] = 'Annen brukers mappe';
$labels['sharedfolder'] = 'Offentlig mappe';
$labels['findfolders'] = 'Finn mapper';
$labels['findcontacts'] = 'Finn kontakter';
$labels['findmail'] = 'Finn epostmeldinger';
$labels['namespace.personal'] = 'Personlig';
$labels['namespace.other'] = 'Andre brukere';
$labels['namespace.shared'] = 'Delt';
$labels['dualuselabel'] = 'Kan kun inneholde';
$labels['dualusemail'] = 'meldinger';
$labels['dualusefolder'] = 'mapper';
$labels['generate'] = 'Generer';
$labels['encryptioncreatekey'] = 'Lag et nytt nøkkelpar';
$labels['openmailvelopesettings'] = 'Åpne Mailvelope Innstillinger';
$labels['encryptionprivkeysinmailvelope'] = 'Du har $nr treff på private nøkler lagret i din Mailvelope nøkkelring:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Denne senderidentiteteten har ingen privat PGP nøkkel i din Mailvelope utvidelse. Ønsker du å opprette én nå, for å kunne sende krypterte meldinger?';
$labels['encryption'] = 'Kryptering';
$labels['mailvelopeoptions'] = 'Mailvelope innstillinger';
$labels['mailvelopemainkeyring'] = 'Bruke Mailvelope hovednøkkelring';
$labels['mailvelopenotfound'] = 'Mailvelope utvidelsen er ikke installert/aktivert i din nettleser.';
$labels['sortby'] = 'Sorter etter';
$labels['sortasc'] = 'Eldste først';
$labels['sortdesc'] = 'Nyeste først';
$labels['undo'] = 'Angre';
$labels['installedplugins'] = 'Installerte tillegg';
$labels['plugin'] = 'Tilleggsmodul';
$labels['version'] = 'Versjon';
$labels['source'] = 'Kildekode';
$labels['destination'] = 'Destinasjon';
$labels['license'] = 'Lisensvilkår';
$labels['support'] = 'Få hjelp';
$labels['savedsearches'] = 'Lagrede søk';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Vesteuropeisk';
$labels['easterneuropean'] = 'Østeuropeisk';
$labels['southeasterneuropean'] = 'Sørøsteuropeisk';
$labels['baltic'] = 'Baltisk';
$labels['cyrillic'] = 'Cyrillisk';
$labels['arabic'] = 'Arabisk';
$labels['greek'] = 'Gresk';
$labels['hebrew'] = 'Hebraisk';
$labels['turkish'] = 'Tyrkisk';
$labels['nordic'] = 'Nordisk';
$labels['thai'] = 'Thailandsk';
$labels['celtic'] = 'Keltisk';
$labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
$labels['arialabeltopnav'] = 'Vinduskontroll';
$labels['arialabeltasknav'] = 'Applikasjonsoppgave';
$labels['arialabeltoolbar'] = 'Applikasjonsverktøylinje';
$labels['arialabellistnav'] = 'Vis navigering';
$labels['arialabelactivetask'] = 'Aktiv oppgave';
$labels['arialabelmessagessearchfilter'] = 'Epostlistefilter';
$labels['arialabelmailsearchform'] = 'Epostmelding søkeskjema';
$labels['arialabelcontactsearchform'] = 'Kontakt søkeskjema';
$labels['arialabelmailquicksearchbox'] = 'Epost søkeinntast';
$labels['arialabelquicksearchbox'] = 'Søkeinntast';
$labels['arialabelfoldersearchfilter'] = 'Mappelistefilter';
$labels['arialabelfoldersearchform'] = 'Mappe søkeskjema';
$labels['arialabelfolderlist'] = 'Valg av epostmappe';
$labels['arialabelmessagelist'] = 'Epostmelding liste';
$labels['arialabelmailpreviewframe'] = 'Meldingsforhåndsvisning';
$labels['arialabelmailboxmenu'] = 'Mappehåndtering meny';
$labels['arialabellistselectmenu'] = 'Vis valgmeny';
$labels['arialabelthreadselectmenu'] = 'Trådliste meny';
$labels['arialabelmessagelistoptions'] = 'Visning av meldingsliste og sorteringsalternativer';
$labels['arialabelmailimportdialog'] = 'Meldingsimport';
$labels['arialabelmessagenav'] = 'Meldingsnavigering';
$labels['arialabelmessagebody'] = 'Meldingskropp';
$labels['arialabelmessageactions'] = 'Meldingshåndtering';
$labels['arialabelcontactquicksearch'] = 'Kontakt søkeskjema';
$labels['arialabelcontactsearchbox'] = 'Kontakt søkeinntast';
$labels['arialabelmessageheaders'] = 'Meldingshoder';
$labels['arialabelforwardingoptions'] = 'Videresendingsalternativer';
$labels['arialabelreplyalloptions'] = '"Svar til alle"-alternativer';
$labels['arialabelmoremessageactions'] = 'Flere meldingshåndtering';
$labels['arialabelmorecontactactions'] = 'Flere kontaktshåndtering';
$labels['arialabelmarkmessagesas'] = 'Merk markerte medlinger som...';
$labels['arialabelcomposeoptions'] = 'Skrivealternativer';
$labels['arialabelresponsesmenu'] = 'Minimisert svaremeny';
$labels['arialabelattachmentuploadform'] = 'Vedlegg opplastingsskjema';
$labels['arialabelattachmentmenu'] = 'Vedleggsalternativer';
$labels['arialabelmailtomenu'] = 'Epostadressealternativer';
$labels['arialabelattachmentpreview'] = 'Forhåndsvisning av vedlegg';
$labels['ariasummarycomposecontacts'] = 'Vis kontakter og grupper for å velge som mottakere';
$labels['arialabelcontactexportoptions'] = 'Kontakteksport alternativer';
$labels['arialabelabookgroupoptions'] = 'Kontaktliste/gruååe alternativer';
$labels['arialabelpreferencesform'] = 'Preferanseskjema';
$labels['arialabelidentityeditfrom'] = 'Identitet redigeringsskjema';
$labels['arialabelresponseeditfrom'] = 'Svar redigeringsskjema';
$labels['arialabelsearchterms'] = 'Søketermer';
$labels['arialabeldropactionmenu'] = 'Dra-og-slipp håndteringsmeny';
$labels['arialabelheadersmenu'] = 'Mottakerinnlegging (hode) meny';
$labels['arialabelimagetools'] = 'Bildeverktøy';
$labels['helplistnavigation'] = 'Vis tastatursnarveier';
$labels['helplistkeyboardnavigation'] = "Pil opp/ned: Flytt linje i fokus.
Mellomrom: Velg linjen i fokus.
Shift + opp/ned: Legg linjen opp eller ned til valget.
Ctrl + Mellomrom: Legg eller fjern linjen i fokus fra valget.";
$labels['helplistkeyboardnavmessages'] = "Høyre/venstre pil: Utvid/bryt sammen meldingstråden (bare i trådmodus).
Enter: Åpne valgt melding.
Delete: Flytt valgt melding til mappen \"Slettet\".";
$labels['helplistkeyboardnavcontacts'] = "Enter: Åpne valgt kontakt.";
localization/nb_NO/messages.inc000064400000041627151727150570012555 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Det oppsto en feil!';
$messages['loginfailed']  = 'Pålogging mislyktes';
$messages['cookiesdisabled'] = 'Nettleseren din tillater ikke informasjonskapsler (cookies)';
$messages['sessionerror'] = 'Din nettlesertilkobling er ugyldig eller utløpt';
$messages['cookiesmismatch'] = 'Uoverensstemmelse mellom informasjonskapseler oppdaget. Vennligst fjern informasjonskapseler fra din nettleser.';
$messages['storageerror'] = 'Tilkobling til IMAP-tjener mislyktes.';
$messages['servererror'] = 'Tjenerfeil!';
$messages['servererrormsg'] = 'Tjenerfeil: $msg';
$messages['accountlocked'] = 'For mange feilede innloggingsforsøk. Prøv igjen senere.';
$messages['connerror'] = 'Tilkoblingsfeil (Kunne ikke nå server)!';
$messages['dberror'] = 'Databasefeil!';
$messages['dbconnerror'] = 'Tilkoblingsfeil (Kunne ikke nå databasen)!';
$messages['windowopenerror'] = 'Popup-vinduet ble blokkert!';
$messages['requesttimedout'] = 'Forespørselen har fått et tidsavbrudd';
$messages['errorreadonly'] = 'Kunne ikke utføre handlingen. Mappen kan kun leses.';
$messages['errornoperm'] = 'Kan ikke utføre operasjon. Nektet tilgang.';
$messages['erroroverquota'] = 'Kunne ikke utføre handlingen, tomt for diskplass.';
$messages['erroroverquotadelete'] = 'Ingen ledig plass på disk. Bruk SHIFT+DEL for å slette en melding.';
$messages['invalidrequest'] = 'Ugyldig forespørsel! Ingen data ble lagret.';
$messages['invalidhost'] = 'Ugyldig servernavn.';
$messages['nomessagesfound'] = 'Det ble ikke funnet noen meldinger i denne mappen';
$messages['loggedout'] = 'Du er logget ut.';
$messages['mailboxempty'] = 'Mappen er tom';
$messages['nomessages'] = 'Ingen meldinger';
$messages['refreshing'] = 'Oppdaterer...';
$messages['loading'] = 'Laster...';
$messages['uploading'] = 'Laster opp fil...';
$messages['attaching'] = 'Legger til vedlegg...';
$messages['uploadingmany'] = 'Laster opp filer ...';
$messages['loadingdata'] = 'Laster data...';
$messages['checkingmail'] = 'Sjekker for nye meldinger...';
$messages['sendingmessage'] = 'Sender melding...';
$messages['messagesent'] = 'Meldingen ble sendt';
$messages['savingmessage'] = 'Lagrer melding...';
$messages['messagesaved'] = 'Melding er lagret som kladd';
$messages['successfullysaved'] = 'Lagret';
$messages['savingresponse'] = 'Lagrer svartekst...';
$messages['deleteresponseconfirm'] = 'Vil du virkelig å slette denne svarteksten?';
$messages['nocontactselected'] = 'Du har ennå ikke markert en kontakt.';
$messages['addedsuccessfully'] = 'Kontakten ble lagt til i adresseboken';
$messages['contactexists'] = 'Det finnes allerede en kontakt med denne epostadressen';
$messages['contactnameexists'] = 'Det finnes allerede en kontakt med dette navnet';
$messages['blockedimages'] = 'Av sikkerhetsgrunner er bilder lagret på eksterne servere blokkert fra denne e-postmeldingen';
$messages['blockedresources'] = 'Eksterne ressurser ble sperret for å beskytte ditt privatliv.';
$messages['suspiciousemail'] = 'Denne meldingen inneholder mistenkelige epostadresser.';
$messages['bccemail'] = 'De(n) videresendte meldingen(e) inneholder konfidensielle mottakere (Bcc).';
$messages['bouncehint'] = 'Meldingen blir sendt uten endringer, det vil si at de originale kropp, hode og mottakere blir brukt.';
$messages['encryptedmessage'] = 'Dette er en kryptert melding som ikke kan vises. Beklager!';
$messages['externalmessagedecryption'] = 'Denne meldingen er kryptert og kan bli dekryptert ved hjelp av din nettleserutvidelse.';
$messages['nopubkeyfor'] = 'Ingen gyldig offentlig nøkkel ble funnet for $email';
$messages['nopubkeyforsender'] = 'Ingen gyldig offentlig nøkkel ble funnet for din senderidentitet. Ønsker du å kryptere meldingen for mottakerne alene?';
$messages['encryptnoattachments'] = 'Vedlegg som allerede har blitt lastet opp kan ikke krypteres. Vennligst legg dem til på nytt i redigeringen av den krypterte meldingen.';
$messages['searchpubkeyservers'] = 'Ønsker du å søke den savnede nøkkelen i nøkkeldatabasen?';
$messages['encryptpubkeysfound'] = 'Følgende offentlige nøkler har blitt funnet:';
$messages['keyservererror'] = 'Kunne ikke hente nøkkelen fra databasen.';
$messages['keyimportsuccess'] = 'Den offentlig nøkkel $key har blitt importert til din nøkkelring.';
$messages['nocontactsfound'] = 'Ingen kontakter ble funnet';
$messages['contactnotfound'] = 'Den ønskede kontakten ble ikke funnet';
$messages['contactsearchonly'] = 'Du må bruke et søkefelt for å se kontakter fra den valgte kontaktlisten .';
$messages['sendingfailed'] = 'Kunne ikke sende e-posten';
$messages['senttooquickly'] = 'Vennligst vent $sec sekund(er) før du sender denne meldingen';
$messages['errorsavingsent'] = 'En feil oppsto under lagring av sendt melding.';
$messages['errorsaving'] = 'En feil oppsto under lagring.';
$messages['errormoving'] = 'Kunne ikke flytte meldingen(e)';
$messages['errorcopying'] = 'Kunne ikke kopiere meldingen(e)';
$messages['errordeleting'] = 'Kunne ikke slette meldingen(e)';
$messages['errormarking'] = 'Kunne ikke markere meldingen(e)';
$messages['alerttitle'] = 'Advarsel';
$messages['confirmationtitle'] = 'Er du sikker...';
$messages['deletecontactconfirm']  = 'Vil du virkelig slette valgte kontakt(er)?';
$messages['deletegroupconfirm']  = 'Vil du virkelig slette den valgte gruppa?';
$messages['deletemessagesconfirm'] = 'Vil du virkelig slette de(n) valgte meldingen(e)?';
$messages['deletefolderconfirm']  = 'Vil du virkelig slette denne mappen?';
$messages['movefolderconfirm']  = 'Vil du virkelig flytte denne mappen?';
$messages['purgefolderconfirm']  = 'Vil du virkelig slette alle meldingene i denne mappen?';
$messages['contactdeleting'] = 'Sletter kontakt(er) ...';
$messages['groupdeleting'] = 'Sletter gruppe ...';
$messages['folderdeleting'] = 'Sletter mappe...';
$messages['foldermoving'] = 'Flytter mappe...';
$messages['foldersubscribing'] = 'Abonnerer på mappe ...';
$messages['folderunsubscribing'] = 'Avslutter mappeabonnement ...';
$messages['formincomplete'] = 'Skjemaet var ikke fullstendig fylt ut';
$messages['noemailwarning'] = 'Vennligst oppgi en gyldig epostadresse.';
$messages['nonamewarning']  = 'Angi et navn';
$messages['nopagesizewarning'] = 'Angi sidestørrelsen';
$messages['nosenderwarning'] = 'Angi avsenderadressen';
$messages['recipientsadded'] = 'Mottake(e) har blitt lagt til';
$messages['norecipientwarning'] = 'Skriv inn minst én mottaker';
$messages['disclosedrecipwarning'] = 'Alle mottakere vil kunne se hverandre. For å unngå dette og for å beskytte deres privatliv, vennligst bruk Bcc-feltet.';
$messages['disclosedreciptitle'] = 'For mange offentlige mottakere';
$messages['nosubjectwarning']  = 'Emnefeltet er tomt. Vil du skrive det inn nå?';
$messages['nosubjecttitle']  = 'Intet emne';
$messages['nobodywarning'] = 'Send denne meldingen uten tekst?';
$messages['notsentwarning'] = 'Meldingen har ikke blitt sendt og har ulagrede endringer. Ønsker du å forkaste dine endringer?';
$messages['restoresavedcomposedata'] = 'Et tidligere usendt svar ble funnet.\n\nEmne: $subject\nLagret: $date\n\nVil du gjenopprette denne meldingen?';
$messages['nosearchname'] = 'Venligst skriv inn kontaktens navn eller e-postadresse';
$messages['notuploadedwarning'] = 'Ikke alle vedlegg er ferdig opplastet. Vennligst vent eller avbryt opplastingen.';
$messages['searchsuccessful'] = '$nr meldinger funnet';
$messages['contactsearchsuccessful'] = '$nr kontakter funnet.';
$messages['searchnomatch'] = 'Søket ga ingen resultater';
$messages['searching'] = 'Søker...';
$messages['checking'] = 'Sjekker...';
$messages['stillsearching'] = 'Søker fortsatt...';
$messages['nospellerrors'] = 'Fant ingen skrivefeil.';
$messages['folderdeleted'] = 'Mappe slettet.';
$messages['foldersubscribed'] = 'Abonnerte på mappen.';
$messages['folderunsubscribed'] = 'Avsluttet mappeabonnement.';
$messages['folderpurged'] = 'Mappe tømt.';
$messages['folderexpunged'] = 'Mappen ble komprimert.';
$messages['deletedsuccessfully'] = 'Slettet';
$messages['converting'] = 'Fjerner formatering fra meldingen ...';
$messages['messageopenerror'] = 'Kunne ikke hente meldingen fra server';
$messages['filelinkerror'] = 'Feil under opplasting av vedlegget.';
$messages['fileuploaderror'] = 'Feil under opplastning.';
$messages['csvfilemismatch'] = 'Import av flere CSV-filer med ulike felter er ikke støttet.';
$messages['filesizeerror'] = 'Filen overstiger maksimum tillatt filstørrelse ($size)';
$messages['filecounterror'] = 'Det er ikke mulig å laste opp flere enn $count filer på én gang.';
$messages['msgsizeerror'] = 'Feil under lagring av vedlegg. Maksimal størrelse for en melding ($size) ble overskredet.';
$messages['msgsizeerrorfwd'] = 'Maksimal størrelse for en fil ($size) overskredet. $num melding(er) har ikke blitt lagret.';
$messages['copysuccess'] = 'Kopierte $nr kontakter.';
$messages['movesuccess'] = 'Flyttet $nr kontakter.';
$messages['copyerror'] = 'Kunne ikke kopiere noen kontakter.';
$messages['moveerror'] = 'Kunne ikke flytte noen kontakter.';
$messages['sourceisreadonly'] = 'Denne adressekilden er skrivebeskyttet';
$messages['errorsavingcontact'] = 'Kunne ikke lagre kontaktadressen.';
$messages['movingmessage'] = 'Flytter e-post ...';
$messages['copyingmessage'] = 'Kopierer e-post...';
$messages['copyingcontact'] = 'Kopierer kontakt(er)...';
$messages['movingcontact'] = 'Flytter kontakt(er)...';
$messages['deletingmessage'] = 'Sletter melding(er)...';
$messages['markingmessage'] = 'Markerer melding(er) ...';
$messages['addingmember'] = 'Legger til kontakt(er) i gruppa ...';
$messages['removingmember'] = 'Fjerner kontakt(er) fra gruppa ...';
$messages['receiptsent'] = 'Kvittering er sent';
$messages['errorsendingreceipt'] = 'Kunne ikke sende til mottaker';
$messages['deleteidentityconfirm'] = 'Vil du virkelig å slette denne identiteten?';
$messages['nodeletelastidentity'] = 'Du kan ikke slette den siste identiteten din.';
$messages['forbiddencharacter'] = 'Mappenavnet inneholder tegn som ikke er tillatt';
$messages['selectimportfile'] = 'Vennligst velg en fil for opplasting';
$messages['addresswriterror'] = 'Den valgte adresseboken er ikke skrivbar';
$messages['contactaddedtogroup'] = 'Lagt til kontakter til denne gruppen.';
$messages['contactremovedfromgroup'] = 'Kontaktene ble vellykket fjernet fra denne gruppen';
$messages['nogroupassignmentschanged'] = 'Ingen gruppetilordninger ble endret.';
$messages['importwait'] = 'Importerer, vennligst vent...';
$messages['importformaterror'] = 'Import feilet! Den opplastede filen er i feil format.';
$messages['importconfirm'] = '<b>Importerte $inserted kontakter</b>';
$messages['importconfirmskipped'] = '<b>Hoppet over $skipped eksisterende oppføringer</b>';
$messages['importmessagesuccess'] = 'Kopierte $nr meldinger';
$messages['importmessageerror'] = 'Importeringen var mislykket! Den opplastede filen er ikke en gyldig melding, eller er ikke kompatibel med meldingssystemet.';
$messages['opnotpermitted'] = 'Handling ikke tillatt!';
$messages['nofromaddress'] = 'Valgt identitet mangler en epostadresse.';
$messages['editorwarning'] = 'Veksling av redigeringstype kan medføre tap i formateringen. Ønsker du å fortsette?';
$messages['httpreceivedencrypterror'] = 'En uopprettelig feil oppsto. Vennligst kontakt systemansvarlig umiddelbart. <b>Din melding kunne ikke sendes.</b>';
$messages['smtpconnerror'] = 'SMTP-feil ($code): Klarte ikke koble til server';
$messages['smtpautherror'] = 'SMTP-feil ($code): Pålogging feilet';
$messages['smtpfromerror'] = 'SMTP-feil ($code): Kunne ikke sette avsender "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP-feil ($code): Kunne ikke legge til mottaker "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP-feil ($code): Kunne ikke lese mottakerliste';
$messages['smtputf8error'] = 'SMTP-feil: Serveren støtter ikke Unicode i epostadressen.';
$messages['smtpsizeerror'] = 'SMTP-feil: Meldingsstørrelse overskreder servererens grense ($limit)';
$messages['smtperror'] = 'SMTP-feil ($code): $msg';
$messages['emailformaterror'] = 'Ugyldig epostadresse: $email';
$messages['toomanyrecipients'] = 'For mange mottakere. Reduser antall mottakere til $max.';
$messages['maxgroupmembersreached'] = 'Antall gruppemedlemmer overskrider maksgrensen på $max';
$messages['internalerror'] = 'En intern feil har oppstått, prøv igjen senere.';
$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er)';
$messages['contactdeleted'] = 'Kontakt(er) slettet uten feil.';
$messages['contactrestoreerror'] = 'Kunne ikke gjenopprette kontakt(er).';
$messages['contactrestored'] = 'Kontakten(e) gjennomrettet uten feil.';
$messages['groupdeleted'] = 'Gruppen er slettet.';
$messages['grouprenamed'] = 'Gruppen er omdøpt uten feil.';
$messages['groupcreated'] = 'Gruppen er opprettet';
$messages['savedsearchdeleted'] = 'Lagrede søk er slettet.';
$messages['savedsearchdeleteerror'] = 'Kunne ikke slette lagrede søk.';
$messages['savedsearchcreated'] = 'Lagret søk har blitt opprettet.';
$messages['savedsearchcreateerror'] = 'Kunne ikke opprette lagret søk.';
$messages['messagedeleted'] = 'Meldingen(e) er slettet.';
$messages['messagemoved'] = 'Meldingen(e) er  flyttet.';
$messages['messagemovedtotrash'] = 'Meldingen(e) er flyttet til Slettet.';
$messages['messagecopied'] = 'Meldingen(e) er kopiert.';
$messages['messagemarked'] = 'Meldingen(e) er markert.';
$messages['autocompletechars'] = 'Skriv inn minst $min tegn for autofullføring.';
$messages['autocompletemore'] = 'Flere like oppføring funnet. Vennligst skriv flere tegn.';
$messages['namecannotbeempty'] = 'Navn kan ikke være tomt.';
$messages['nametoolong'] = 'Navnet er for langt.';
$messages['namedotforbidden'] = 'Mappenavn kan ikke starte med punktum.';
$messages['folderupdated'] = 'Mappen er oppdatert.';
$messages['foldercreated'] = 'Mappe opprettet.';
$messages['invalidimageformat'] = 'Ikke et gyldig bildeformat.';
$messages['mispellingsfound'] = 'Fant stavefeil i meldingen.';
$messages['parentnotwritable'] = 'Kunne ikke opprette/flytte mappen i valgt overordnet mappe. Ingen tilgangsrettigheter.';
$messages['messagetoobig'] = 'Meldingsdelen er for stor til at den kan prosesseres.';
$messages['attachmentvalidationerror'] = 'Vedlegget er mistenkelig fordi filtypen samsvarer ikke med det som er oppgitt i meldingen. Dersom du ikke stoler på avsenderen, bør du ikke åpne den i nettleseren, fordi den kan være farlig.<br/><br/><em>Forventet: $expected; funnet: $detected</em>';
$messages['noscriptwarning'] = 'NB: Denne webmail-klienten krever Javascript! Skru på Javascript i nettleseren din for å kunne bruke den.';
$messages['messageissent'] = 'Meldingen var allerede sendt, men ikke lagret. Ønsker du å lagre den nå?';
$messages['errnotfound'] = 'Filen ble ikke funnet';
$messages['errnotfoundexplain'] = 'Den forespurte ressursen ble ikke funnet!';
$messages['errfailedrequest'] = 'Forespørselen feilet';
$messages['errauthorizationfailed'] = 'Autorisasjon feilet';
$messages['errunauthorizedexplain'] = 'Kunne ikke verifisere om du har tillatelse til å bruke denne tjenesten!';
$messages['errrequestcheckfailed'] = 'Verifisering av forespørselen feilet';
$messages['errcsrfprotectionexplain'] = "For din sikkerhet, er tilgangen til ressursen beskyttet mot CSRF.\nOm du ser denne meldingen, har du kanskje glemt å logge ut før du forlot webmailen.\n\nMenneskelig samspill er nå nødvendig for å fortsette.";
$messages['errcontactserveradmin'] = 'Vennligst kontakt serveradministratoren.';
$messages['clicktoresumesession'] = 'Klikk her for å fortsette med din forrige sesjon.';
$messages['errcomposesession'] = 'Feil med redigeringssessjon';
$messages['errcomposesessionexplain'] = 'Forespurt redigeringssessjon ble ikke funnet.';
$messages['clicktocompose'] = 'Klikk her for å skrive en ny melding';
$messages['nosupporterror'] = 'Denne funksjonen støttes ikke av din nettleser.';
$messages['siginserted'] = 'Signaturen ble lagt til meldingen.';
$messages['responseinserted'] = 'Svaret ble lagt til meldingen.';
$messages['noresponsesavailable'] = 'Ingen tilgjengelig svar';
$messages['listempty'] = 'Listen er tom.';
$messages['listusebutton'] = 'Bruk "Opprett" knappen for å opprette et element.';
$messages['keypaircreatesuccess'] = 'Et nytt nøkkelpar har blitt opprettet for $identity.';
$messages['emptyattachment'] = 'Vedlegget virker til å være tomt.<br>Vennligst ta kontakt med avsenderen.';
$messages['oauthloginfailed'] = 'OAuth-innlogging feilet. Vennligst prøv på nytt.';
localization/fy_NL/labels.inc000064400000066075151727150570012230 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Wolkom by $product';
$labels['username'] = 'Brûkersnamme';
$labels['password'] = 'Wachtwurd';
$labels['server'] = 'Tsjinner';
$labels['login'] = 'Ynlogge';
$labels['logout'] = 'Ôfmelde';
$labels['mail'] = 'E-post';
$labels['settings'] = 'Ynstellings';
$labels['addressbook'] = 'Adresboek';
$labels['inbox'] = 'Postfek Yn';
$labels['drafts'] = 'Konsepten';
$labels['sent'] = 'Ferstjoerd';
$labels['trash'] = 'Jiskefet';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Lit echte nammen sjen foar spesjale mappen';
$labels['subject'] = 'Ûnderwerp';
$labels['from'] = 'Fan';
$labels['sender'] = 'Stjoerder';
$labels['to'] = 'Oan';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Antwurd oan';
$labels['followupto'] = 'Oanslutend oan';
$labels['date'] = 'Datum';
$labels['size'] = 'Grutte';
$labels['priority'] = 'Prioriteit';
$labels['organization'] = 'Organisaasje';
$labels['readstatus'] = 'Lêzen status';
$labels['listoptions'] = 'Lyst opsjes...';
$labels['mailboxlist'] = 'Mappen';
$labels['messagesfromto'] = 'Berjochten $from nei $to fan $count';
$labels['threadsfromto'] = 'Rigen $from oan $to fan $count';
$labels['messagenrof'] = 'Berjocht $nr fan $count';
$labels['fromtoshort'] = '$from – $to fan $count';
$labels['copy'] = 'Kopiearje';
$labels['move'] = 'Ferpleatse';
$labels['moveto'] = 'Ferpleatse nei...';
$labels['copyto'] = 'Kopiearje nei...';
$labels['download'] = 'Ynlade';
$labels['open'] = 'Iepenje';
$labels['showattachment'] = 'Toane';
$labels['showanyway'] = 'Dochs toane';
$labels['filename'] = 'Bestânsnamme';
$labels['filesize'] = 'Bestânsgrutte';
$labels['addtoaddressbook'] = 'Oan adresboek tafoegje';
$labels['sun'] = 'si';
$labels['mon'] = 'mo';
$labels['tue'] = 'ti';
$labels['wed'] = 'wo';
$labels['thu'] = 'to';
$labels['fri'] = 'fr';
$labels['sat'] = 'so';
$labels['sunday'] = 'snein';
$labels['monday'] = 'moandei';
$labels['tuesday'] = 'tiisdei';
$labels['wednesday'] = 'woansdei';
$labels['thursday'] = 'tongersdei';
$labels['friday'] = 'freed';
$labels['saturday'] = 'sneon';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mrt';
$labels['apr'] = 'apr';
$labels['may'] = 'mai';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'aug';
$labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'des';
$labels['longjan'] = 'jannewaris';
$labels['longfeb'] = 'febrewaris';
$labels['longmar'] = 'maart';
$labels['longapr'] = 'april';
$labels['longmay'] = 'maaie';
$labels['longjun'] = 'juny';
$labels['longjul'] = 'july';
$labels['longaug'] = 'augustus';
$labels['longsep'] = 'septimber';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'novimber';
$labels['longdec'] = 'desimber';
$labels['today'] = 'Hjoed';
$labels['refresh'] = 'Ferfarskje';
$labels['checkmail'] = 'Op nije berjochten kontrolearje';
$labels['compose'] = 'Opstelle';
$labels['writenewmessage'] = 'Nij berjocht oanmeitsje';
$labels['reply'] = 'Beäntwurdzje';
$labels['replytomessage'] = 'Antwurd oan stjoerder';
$labels['replytoallmessage'] = 'Antwurd nei lyst of nei stjoerder en alle ûntfangers';
$labels['replyall'] = 'Antwurdzje alle';
$labels['replylist'] = 'Antwurdzje lyst';
$labels['forward'] = 'Trochstjoere';
$labels['forwardinline'] = 'Ynsletten trochstjoere';
$labels['forwardattachment'] = 'Trochstjoere as taheaksel';
$labels['forwardmessage'] = 'Stjoer it berjocht troch';
$labels['deletemessage'] = 'Berjocht wiskje';
$labels['movemessagetotrash'] = 'Berjocht ferpleatse nei jiskefet';
$labels['printmessage'] = 'Dit berjocht ôfdrukke';
$labels['previousmessage'] = 'Lit foarige berjocht sjen';
$labels['firstmessage'] = 'Lit earste berjocht sjen';
$labels['nextmessage'] = 'Lit folgjende berjocht sjen';
$labels['lastmessage'] = 'Lit lêste berjocht sjen';
$labels['backtolist'] = 'Tebek nei berjochtlyst';
$labels['viewsource'] = 'Toan boarne';
$labels['mark'] = 'Markearje';
$labels['markmessages'] = 'Markearje berjochten';
$labels['markread'] = 'As lêzen';
$labels['markunread'] = 'As net-lêzen';
$labels['markflagged'] = 'As flagge';
$labels['markunflagged'] = 'As net-flagge';
$labels['moreactions'] = 'Mear aksjes...';
$labels['markallread'] = 'Markearje alles as lêzen';
$labels['folders-cur'] = 'Allinnich selektearre map';
$labels['folders-sub'] = 'Selektearre map en ûnderlizzende mappen';
$labels['folders-all'] = 'Alle mappen';
$labels['more'] = 'Mear';
$labels['back'] = 'Tebek';
$labels['options'] = 'Opsjes';
$labels['first'] = 'Earst';
$labels['last'] = 'Lêst';
$labels['previous'] = 'Foarige';
$labels['next'] = 'Folgjende';
$labels['select'] = 'Selektearje';
$labels['all'] = 'Alle';
$labels['none'] = 'Gjin';
$labels['currpage'] = 'Aktuele side';
$labels['isread'] = 'Lêzen';
$labels['unread'] = 'Net-lêzen';
$labels['flagged'] = 'Flagge';
$labels['unflagged'] = 'Net-flagge';
$labels['unanswered'] = 'Unbeantwurde';
$labels['withattachment'] = 'Mei taheaksel';
$labels['deleted'] = 'Ferwidere';
$labels['undeleted'] = 'Net ferwidere';
$labels['replied'] = 'Antwurde';
$labels['forwarded'] = 'Trochstjoerd';
$labels['invert'] = 'Omkeart';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lyst';
$labels['threads'] = 'Streamen';
$labels['expand-all'] = 'Alles útwreidzje';
$labels['expand-unread'] = 'Net-lêzen útwreidzje';
$labels['collapse-all'] = 'Alles ynsakje';
$labels['threaded'] = 'Streamde';
$labels['autoexpand_threads'] = 'Berjocht stream útwreidzje';
$labels['do_expand'] = 'Alle streamen';
$labels['expand_only_unread'] = 'Allinnich mei net-lêzen berjochten';
$labels['fromto'] = 'Fan/Nei';
$labels['flag'] = 'Flagge';
$labels['attachment'] = 'Taheaksel';
$labels['nonesort'] = 'Gjin';
$labels['sentdate'] = 'Ferstjoer datum';
$labels['arrival'] = 'Oankomst datum';
$labels['asc'] = 'oprinnend';
$labels['desc'] = 'delgeande';
$labels['listcolumns'] = 'Lyst kolommen';
$labels['listsorting'] = 'Skiftsje kolom';
$labels['listorder'] = 'Sorting oarder';
$labels['listmode'] = 'Lyst werjefte modus';
$labels['layout'] = 'Yndieling';
$labels['layoutwidescreen'] = 'Breedbyld';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Lyst';
$labels['folderactions'] = 'Map aksjes';
$labels['compact'] = 'Kompakt';
$labels['empty'] = 'Leech';
$labels['importmessages'] = 'Berjochten ymportearje';
$labels['quota'] = 'Skiifgebrûk';
$labels['unknown'] = 'ûnbekend';
$labels['unlimited'] = 'ûnbeheind';
$labels['quotatype'] = 'Kwota type';
$labels['quotatotal'] = 'Beheining';
$labels['quotaused'] = 'Brûkt';
$labels['quotastorage'] = 'Skiifromte';
$labels['quotamessage'] = 'Oantal berjochten';
$labels['quicksearch'] = 'Fluch sykje';
$labels['resetsearch'] = 'Sykopdracht wiskje';
$labels['searchmod'] = 'Syk modifikaasjes';
$labels['msgtext'] = 'Hiele berjocht';
$labels['body'] = 'Ynhâld';
$labels['type'] = 'Type';
$labels['namex'] = 'Namme';
$labels['searchscope'] = 'Berik';
$labels['currentfolder'] = 'Aktuele map';
$labels['subfolders'] = 'Dizze en ûnderlizzende mappen';
$labels['allfolders'] = 'Alle mappen';
$labels['searchinterval-1W'] = 'Alder as in wike';
$labels['searchinterval-1M'] = 'Alder as in moanne';
$labels['searchinterval-1Y'] = 'Alder as in jier';
$labels['searchinterval1W'] = 'Nijer as in wike';
$labels['searchinterval1M'] = 'Nijer as in moanne';
$labels['searchinterval1Y'] = 'Nijer as in jier';
$labels['openinextwin'] = 'Iepenje yn nij finster';
$labels['emlsave'] = 'Ynlade (.eml)';
$labels['changeformattext'] = 'Toan yn gewoane tekst';
$labels['changeformathtml'] = 'Toan yn HTML formaat';
$labels['editasnew'] = 'Bewurkje as nij';
$labels['send'] = 'Ferstjoere';
$labels['sendmessage'] = 'Berjocht ferstjoere';
$labels['savemessage'] = 'Bewarje as konsept';
$labels['addattachment'] = 'In bestân taheakje';
$labels['charset'] = 'Tekenset';
$labels['editortype'] = 'Bewurker type';
$labels['returnreceipt'] = 'Untfangst werom stjoere';
$labels['dsn'] = 'Levering status notifikaasje';
$labels['mailreplyintro'] = 'Op $date, skreau $sender:';
$labels['originalmessage'] = 'Oarspronklik Berjocht';
$labels['selectimage'] = 'Ofbylding selektearje';
$labels['addimage'] = 'Ofbylding tafoegje';
$labels['selectmedia'] = 'Fideo selektearje';
$labels['addmedia'] = 'Fideo tafoegje';
$labels['encrypt'] = 'Fersiferje';
$labels['encryptmessage'] = 'Berjocht fersiferje';
$labels['encryptmessagemailvelope'] = 'Berjocht fersiferje mei Mailvelope';
$labels['importpubkeys'] = 'Publike kaaien ymportearje';
$labels['encryptedsendialog'] = 'Fersifere berjocht ferstjoere';
$labels['keyid'] = 'Kaai ID';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Ferrûn';
$labels['keyrevoked'] = 'Ynlutsen';
$labels['bccinstead'] = 'Bcc brûke';
$labels['insert'] = 'Ynfoegje';
$labels['editidents'] = 'Identiteiten bewurkje';
$labels['spellcheck'] = 'Stavering';
$labels['checkspelling'] = 'Stavering kontrolearje';
$labels['resumeediting'] = 'Bewurkje ferfetsje';
$labels['revertto'] = 'Tebeksette nei';
$labels['restore'] = 'Weromsette';
$labels['restoremessage'] = 'Berjocht weromsette?';
$labels['ignore'] = 'Negearje';
$labels['responses'] = 'Antwurden';
$labels['insertresponse'] = 'In antwurd ynfiere';
$labels['manageresponses'] = 'Antwurden beheare';
$labels['newresponse'] = 'Nij antwurd oanmeitsje';
$labels['addresponse'] = 'Antwurd tafoegje';
$labels['editresponse'] = 'Antwurd bewurkje';
$labels['editresponses'] = 'Antwurden bewurkje';
$labels['responsename'] = 'Namme';
$labels['responsetext'] = 'Antwurd tekst';
$labels['attach'] = 'Taheakje';
$labels['attachments'] = 'Taheaksels';
$labels['upload'] = 'Oplade';
$labels['uploadprogress'] = '$percent ($current fan $total)';
$labels['close'] = 'Slúte';
$labels['messageoptions'] = 'Berjocht opsjes...';
$labels['togglecomposeoptions'] = 'Komposysje opsjes skeakelje';
$labels['attachmentrename'] = 'Taheaksel omneame';
$labels['low'] = 'Leech';
$labels['lowest'] = 'Leechste';
$labels['normal'] = 'Normaal';
$labels['high'] = 'Heech';
$labels['highest'] = 'Heechste';
$labels['nosubject'] = '(gjin ûnderwerp)';
$labels['showimages'] = 'Ofbyldings toane';
$labels['alwaysshow'] = 'Ofbyldings fan $sender altyd toane';
$labels['isdraft'] = 'Dit is in konsept berjocht';
$labels['andnmore'] = '$nr mear...';
$labels['togglemoreheaders'] = 'Mear berjocht koppen toane';
$labels['togglefullheaders'] = 'Ruwe berjocht koppen skeakelje';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Gewoane tekst';
$labels['savesentmessagein'] = 'Bewarje ferstjoerd berjoch yn';
$labels['dontsave'] = 'net bewarje';
$labels['maxuploadsize'] = 'Maksimum bestâns grutte is $size';
$labels['addcc'] = 'CC tafoegje';
$labels['addbcc'] = 'BCC tafoegje';
$labels['addreplyto'] = 'Reagearje-Op Tafoegje';
$labels['addfollowupto'] = 'Ferfolch-Op Tafoegje';
$labels['mdnrequest'] = 'De stjoerder fan dit berjocht hat frege om op de hichte brocht te wurden as jo dit berjocht lêzen hawwe. Wolle jo de ôfstjoerder op de hichte bringe?';
$labels['receiptread'] = 'Weromstjoerd Untfangstbewiis (lêzen)';
$labels['yourmessage'] = 'Dit is in Weromstjoerd Untfangstbewiis foar jo berjocht';
$labels['receiptnote'] = 'Tink derom: Dit ûntfangstbewiis erkent allinnich dat it berjocht waard werjûn op de kompjûter fan ûntfanger. Der is gjin garânsje dat de ûntfanger de berjocht ynhâld lêzen of begrepen hat.';
$labels['name'] = 'Skerm Namme';
$labels['firstname'] = 'Foarnamme';
$labels['surname'] = 'Achternamme';
$labels['middlename'] = 'Twadde Namme';
$labels['nameprefix'] = 'Foarheaksel';
$labels['namesuffix'] = 'Efterheaksel';
$labels['nickname'] = 'Skûlnamme';
$labels['jobtitle'] = 'Funksjenamme';
$labels['department'] = 'Ofdieling';
$labels['gender'] = 'Geslacht';
$labels['maidenname'] = 'Famkesnamme';
$labels['email'] = 'E-post';
$labels['phone'] = 'Telefoannûmer';
$labels['address'] = 'Adres';
$labels['street'] = 'Strjitte';
$labels['locality'] = 'Doarp/Stêd';
$labels['zipcode'] = 'Postkoade';
$labels['region'] = 'Provinsje';
$labels['country'] = 'Lân';
$labels['birthday'] = 'Jierdei';
$labels['anniversary'] = 'Troudei';
$labels['website'] = 'Webstee';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notysjes';
$labels['male'] = 'man';
$labels['female'] = 'frou';
$labels['manager'] = 'Behearder';
$labels['assistant'] = 'Assistint';
$labels['spouse'] = 'Echtgenoat';
$labels['allfields'] = 'Alle fjilden';
$labels['search'] = 'Sykje';
$labels['searchresult'] = 'Syk risseltaten';
$labels['advsearch'] = 'Avansearre Sykje';
$labels['advanced'] = 'Avansearre';
$labels['other'] = 'Oars';
$labels['printcontact'] = 'Kontakt ôfdrukke';
$labels['qrcode'] = 'QR Koade';
$labels['typehome'] = 'Thús';
$labels['typework'] = 'Wurk';
$labels['typeother'] = 'Oars';
$labels['typemobile'] = 'Mobyl';
$labels['typemain'] = 'Foarnaamste';
$labels['typehomefax'] = 'Fax Thús';
$labels['typeworkfax'] = 'Fax Wurk';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pieper';
$labels['typevideo'] = 'Fideo';
$labels['typeassistant'] = 'Assistint';
$labels['typehomepage'] = 'Thússide';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profyl';
$labels['addfield'] = 'Fjild tafoegje';
$labels['addcontact'] = 'Kontakt tafoegje';
$labels['editcontact'] = 'Kontakt bewurkje';
$labels['contacts'] = 'Kontakten';
$labels['contactproperties'] = 'Kontakt eigenskippen';
$labels['contactnameandorg'] = 'Namme en Organisaasje';
$labels['personalinfo'] = 'Persoanlike ynformaasje';
$labels['personal'] = 'Persoanlik';
$labels['contactphoto'] = 'Kontakt foto';
$labels['edit'] = 'Bewurkje';
$labels['cancel'] = 'Annulearje';
$labels['save'] = 'Bewarje';
$labels['delete'] = 'Fuortsmite';
$labels['rename'] = 'Omneame';
$labels['addphoto'] = 'Tafoegje';
$labels['replacephoto'] = 'Ferfange';
$labels['uploadphoto'] = 'Foto oplade';
$labels['newcontact'] = 'Nij kontakt oanmeitsje';
$labels['deletecontact'] = 'Selektearre kontakten ferwiderje';
$labels['composeto'] = 'Skriuw berjocht oan';
$labels['contactsfromto'] = 'Kontakten $from oant $to fan $count';
$labels['print'] = 'Ofdrukke';
$labels['export'] = 'Eksportearje';
$labels['exportall'] = 'Alles eksportearje';
$labels['exportsel'] = 'Selektearre eksportearje';
$labels['exportvcards'] = 'Kontakten eksportearje yn vCard formaat';
$labels['newgroup'] = 'Nije groep oanmeitsje';
$labels['addgroup'] = 'Groep tafoegje';
$labels['grouprename'] = 'Groep omneame';
$labels['groupdelete'] = 'Groep ferwiderje';
$labels['groupremoveselected'] = 'Selektearre kontakten út groep ferwiderje';
$labels['uponelevel'] = 'Ien nivo omheech';
$labels['previouspage'] = 'Lit foarige side sjen';
$labels['firstpage'] = 'Lit earste side sjen';
$labels['nextpage'] = 'Lit folgjende side sjen';
$labels['lastpage'] = 'Lit lêste side sjen';
$labels['group'] = 'Groep';
$labels['groups'] = 'Groepen';
$labels['listgroup'] = 'Groep leden yn lyst';
$labels['personaladrbook'] = 'Persoanlike adressen';
$labels['searchsave'] = 'Sykopdracht bewarje';
$labels['searchdelete'] = 'Sykopdracht wiskje';
$labels['import'] = 'Ymportearje';
$labels['importcontacts'] = 'Kontakten ymportearje';
$labels['importtarget'] = 'Kontakten tafoegje oan';
$labels['importreplace'] = 'It hiele adresboek ferfange';
$labels['importgroups'] = 'Ymportearje groep opdrachten';
$labels['importgroupsall'] = 'Alle (meitsje groepen oan wêr nedich)';
$labels['importgroupsexisting'] = 'Allinnich foar besteande groepen';
$labels['done'] = 'Klear';
$labels['settingsfor'] = 'Ynstellings foar';
$labels['about'] = 'Oer';
$labels['preferences'] = 'Foarkarren';
$labels['userpreferences'] = 'Brûkers foarkarren';
$labels['editpreferences'] = 'Brûkers foarkarren bewurkje';
$labels['identities'] = 'Identiteiten';
$labels['manageidentities'] = 'Identiteiten beheare';
$labels['newidentity'] = 'Nije identiteit oanmeitsje';
$labels['addidentity'] = 'Identiteit tafoegje';
$labels['editidentity'] = 'Identiteit bewurkje';
$labels['preferhtml'] = 'Toan HTML';
$labels['defaultcharset'] = 'Standert Teken Set';
$labels['htmlmessage'] = 'HTML Berjocht';
$labels['messagepart'] = 'Diel';
$labels['digitalsig'] = 'Digitale Hantekening';
$labels['dateformat'] = 'Datum formaat';
$labels['timeformat'] = 'Tiid formaat';
$labels['prettydate'] = 'Moaie datums';
$labels['setdefault'] = 'Set standert';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Taal';
$labels['timezone'] = 'Tiidsône';
$labels['pagesize'] = 'Rigen per side';
$labels['signature'] = 'Hantekening';
$labels['dstactive'] = 'Simmertiid';
$labels['showinextwin'] = 'Berjocht yn nij finster iepenje';
$labels['composeextwin'] = 'Skriuw yn in nij finster';
$labels['htmleditor'] = 'Skriuw HTML berjochten';
$labels['htmlonreply'] = 'Allinnich op HTML berjocht antwurdzje';
$labels['htmlonreplyandforward'] = 'op trochstjoerd of antwurd nei HTML berjocht';
$labels['htmlsignature'] = 'HTML hantekening';
$labels['showemail'] = 'Toan e-post adres mei skermnamme';
$labels['previewpane'] = 'Toan foarbyld skerm';
$labels['skin'] = 'Omjouwings tema';
$labels['logoutclear'] = 'Jiskefet leechje by útloggen';
$labels['logoutcompact'] = 'Komprimearje Postfek YN by útloggen';
$labels['uisettings'] = 'Brûkers omjouwing';
$labels['serversettings'] = 'Tsjinner Ynstellings';
$labels['mailboxview'] = 'Postfek Yndieling';
$labels['mdnrequests'] = 'Op fersyk by ûntfangstbewiis';
$labels['askuser'] = 'freegje my';
$labels['autosend'] = 'stjoer ûntfangstbewiis ';
$labels['autosendknown'] = 'stjoer ûntfangstbewiis nei kontakten, oars my freegje';
$labels['autosendknownignore'] = 'stjoer ûntfangstbewiis nei kontakten, oars negearje';
$labels['ignorerequest'] = 'fersyk negearje';
$labels['readwhendeleted'] = 'Markearje berjocht as lêzen by wiskjen';
$labels['flagfordeletion'] = 'Berjocht flagje foar wiskjen yn pleats fan wiskjen';
$labels['skipdeleted'] = 'Wiske berjochten net sjen litte';
$labels['deletealways'] = 'As berjochten nei Jiskefet ferpleatse mislearret, wiskje';
$labels['deletejunk'] = 'Berjochten yn Jiskefet fuort wiskje';
$labels['showremoteimages'] = 'Werjaan eksterne ynsletten ôfbyldings';
$labels['fromknownsenders'] = 'fan bekende stjoerders';
$labels['always'] = 'altyd';
$labels['alwaysbutplain'] = 'Altyd, útsein as antwurde wurd yn gewoane tekst';
$labels['showinlineimages'] = 'Lit taheake ôfbyldings ûnder it berjocht sjen';
$labels['autosavedraft'] = 'Konsept automatysk bewarje';
$labels['everynminutes'] = 'eltse $n minút(en)';
$labels['refreshinterval'] = 'Ferfarskje (op nije berjochten kontrolearje, ensaf.)';
$labels['never'] = 'nea';
$labels['immediately'] = 'fuortendaliks';
$labels['messagesdisplaying'] = 'Berjochten Toane';
$labels['messagescomposition'] = 'Berjochten Skriuwe';
$labels['mimeparamfolding'] = 'Taheaksel nammen';
$labels['2231folding'] = 'Fol RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Fol RFC 2047 (other)';
$labels['force7bit'] = 'Brûk MIME fersifering foar 8-bit tekens';
$labels['savelocalstorage'] = "Bewarje yn lokale opslach fan de browser (tydlik)";
$labels['advancedoptions'] = 'Avansearre opsjes';
$labels['toggleadvancedoptions'] = 'Avansearre opsjes skeakelje';
$labels['focusonnewmessage'] = 'Fokus browser finster by nij berjocht';
$labels['checkallfolders'] = 'Kontrolearje alle mappen op nije berjochten';
$labels['defaultfont'] = 'Standert lettertype fan HTML berjocht';
$labels['mainoptions'] = 'Haad Opsjes';
$labels['browseroptions'] = 'Browser Opsjes';
$labels['section'] = 'Seleksje';
$labels['maintenance'] = 'Underhâld';
$labels['newmessage'] = 'Nij Berjocht';
$labels['signatureoptions'] = 'Hantekening Opsjes';
$labels['whenreplying'] = 'By beäntwurdzjen';
$labels['replyempty'] = 'It oarspronklike berjocht net sitearje';
$labels['replytopposting'] = 'begjinne nij berjocht boppe de sitaat';
$labels['replybottomposting'] = 'begjinne nij berjocht ûnder de sitaat';
$labels['replyremovesignature'] = 'By it beäntwurdzjen oarspronklike hântekening fan berjocht wiskje';
$labels['autoaddsignature'] = 'Automatysk hantekening tafoegje';
$labels['newmessageonly'] = 'allinnich nije berjochten';
$labels['replyandforwardonly'] = 'by antwurdzjen en trochstjoeren';
$labels['insertsignature'] = 'Hantekening ynfoegje';
$labels['sigbelow'] = 'Hantekening ûnder it siteare berjocht';
$labels['sigseparator'] = 'Forsearje standert skiedingsteken yn hantekenings';
$labels['afternseconds'] = 'nei $n sekonden';
$labels['reqmdn'] = 'Freegje altyd in ûntfangstbewiis';
$labels['reqdsn'] = 'Freegje altyd in levering status notifikaasje';
$labels['replysamefolder'] = 'Set antwurden yn de map fan it berjocht dêr\'t op antwurde wurd';
$labels['defaultabook'] = 'Standert adresboek';
$labels['autocompletesingle'] = 'Sla alternative e-post adressen oer yn autokompleet';
$labels['listnamedisplay'] = 'Kontakten yn lyst as';
$labels['spellcheckbeforesend'] = 'Kontrolearje de stavering foar it ferstjoeren fan in berjocht';
$labels['spellcheckoptions'] = 'Staverings Opsjes';
$labels['spellcheckignoresyms'] = 'Negearje wurden mei symboalen';
$labels['spellcheckignorenums'] = 'Negearje wurden mei sifers';
$labels['spellcheckignorecaps'] = 'Negearje wurden mei alle letters as haadletters';
$labels['addtodict'] = 'Taheakje oan wurdboek';
$labels['mailtoprotohandler'] = 'Registrearje protokol handler foar mailto: keppelings';
$labels['standardwindows'] = 'Omgean mei popups as standert finsters';
$labels['forwardmode'] = 'Berjocht trochstjoeren';
$labels['inline'] = 'ynsletten';
$labels['asattachment'] = 'as taheaksel';
$labels['replyallmode'] = 'Standert aksje foar [Alles beäntwurdzje] knop';
$labels['replyalldefault'] = 'op alles antwurdzje';
$labels['replyalllist'] = 'allinnich antwurdzje nei mailing lyst (wêr fûn)';
$labels['folder'] = 'Map';
$labels['folders'] = 'Mappen';
$labels['foldername'] = 'Map namme';
$labels['subscribed'] = 'Ynskreaun';
$labels['messagecount'] = 'Berjochten';
$labels['create'] = 'Oanmeitsje';
$labels['createfolder'] = 'Nije map oanmeitsje';
$labels['managefolders'] = 'Mappen beheare';
$labels['specialfolders'] = 'Spesjale Mappen';
$labels['properties'] = 'Eigenskippen';
$labels['folderproperties'] = 'Map eigenskippen';
$labels['parentfolder'] = 'Boppelizzende map';
$labels['location'] = 'Lokaasje';
$labels['info'] = 'Ynformaasje';
$labels['getfoldersize'] = 'Klik om map grutte te krijen';
$labels['changesubscription'] = 'Klik om ynskriuwing te feroarjen';
$labels['foldertype'] = 'Map Type';
$labels['personalfolder'] = 'Privee Map';
$labels['otherfolder'] = 'Oare Brûker\'s Map';
$labels['sharedfolder'] = 'Publike Map';
$labels['findfolders'] = 'Mappen fine';
$labels['namespace.personal'] = 'Persoanlik';
$labels['namespace.other'] = 'Oare brûkers';
$labels['namespace.shared'] = 'Dielt';
$labels['sortby'] = 'Sortearje op';
$labels['sortasc'] = 'Sortearje oprinnend';
$labels['sortdesc'] = 'Sortearje delgeand';
$labels['undo'] = 'Ungedien meitsje';
$labels['installedplugins'] = 'Ynstallearre ynstekkers';
$labels['plugin'] = 'Ynstekker';
$labels['version'] = 'Ferzje';
$labels['source'] = 'Boarne';
$labels['license'] = 'Lisinsje';
$labels['support'] = 'Krij help';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Ingelsk';
$labels['westerneuropean'] = 'West Europeesk';
$labels['easterneuropean'] = 'East Europeesk';
$labels['southeasterneuropean'] = 'Súd-East Europeesk';
$labels['baltic'] = 'Baltysk';
$labels['cyrillic'] = 'Syrillysk';
$labels['arabic'] = 'Arabysk';
$labels['greek'] = 'Gryksk';
$labels['hebrew'] = 'Hebrieuwsk';
$labels['turkish'] = 'Turksk';
$labels['nordic'] = 'Noardsk';
$labels['thai'] = 'Taisk';
$labels['celtic'] = 'Keltysk';
$labels['vietnamese'] = 'Fietnameesk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreaansk';
$labels['chinese'] = 'Sineesk';
$labels['arialabeltopnav'] = 'Finster kontrôle';
$labels['arialabeltasknav'] = 'Applikaasje taken';
$labels['arialabeltoolbar'] = 'Applikaasje arkbalke';
$labels['arialabelactivetask'] = 'Aktive taak';
$labels['arialabelmessagessearchfilter'] = 'E-post fermelding filter';
$labels['arialabelmailsearchform'] = 'E-post berjocht syk formulier';
$labels['arialabelcontactsearchform'] = 'Kontakt syk formulier';
$labels['arialabelmailquicksearchbox'] = 'E-post sykje ynbring';
$labels['arialabelquicksearchbox'] = 'Sykje ynbring';
$labels['arialabelfoldersearchfilter'] = 'Map fermelding filter';
$labels['arialabelfoldersearchform'] = 'Map syk formulier';
$labels['arialabelfolderlist'] = 'E-post map seleksje';
$labels['arialabelmessagelist'] = 'E-post Berjocht Fermelding';
$labels['arialabelmailpreviewframe'] = 'Berjocht foarbyld';
$labels['arialabelmailboxmenu'] = 'Map aksje menu';
$labels['arialabellistselectmenu'] = 'Lyst seleksje menu';
$labels['arialabelthreadselectmenu'] = 'Stream fermelding menu';
$labels['arialabelmessagelistoptions'] = 'Berjocht lyst werjefte en sortearjen opsjes';
$labels['arialabelmailimportdialog'] = 'Berjocht ymport skerm';
$labels['arialabelmessagenav'] = 'Berjocht navigaasje';
$labels['arialabelmessagebody'] = 'Berjocht Ynhâld';
$labels['arialabelmessageactions'] = 'Berjocht aksjes';
$labels['arialabelcontactquicksearch'] = 'Kontakten syk formulier';
$labels['arialabelcontactsearchbox'] = 'Kontakt syk ynbring';
$labels['arialabelmessageheaders'] = 'Berjocht koppen';
$labels['arialabelforwardingoptions'] = 'Trochstjoer opsjes';
$labels['arialabelreplyalloptions'] = 'Antwurdzje-alle opsjes';
$labels['arialabelmoremessageactions'] = 'Mear berjocht aksjes';
$labels['arialabelmarkmessagesas'] = 'Markearje selektearre berjochten as...';
$labels['arialabelcomposeoptions'] = 'Skriuw opsjes';
$labels['arialabelresponsesmenu'] = 'Ynblikte antwurden menu';
$labels['arialabelattachmentuploadform'] = 'Taheaksel oplaad formulier';
$labels['arialabelattachmentpreview'] = 'Taheaksel foarbyld';
$labels['ariasummarycomposecontacts'] = 'Lyst fan kontakten en groepen te selektearjen as ûntfangers';
$labels['arialabelcontactexportoptions'] = 'Kontakt eksport opsjes';
$labels['arialabelabookgroupoptions'] = 'Adresboek/groep opsjes';
$labels['arialabelpreferencesform'] = 'Foarkarren formulier';
$labels['arialabelidentityeditfrom'] = 'Identiteit bewurkings formulier';
$labels['arialabelresponseeditfrom'] = 'Antwurd bewurkings formulier';
$labels['arialabelsearchterms'] = 'Syktermen';
$labels['helplistnavigation'] = 'Lyst toetseboerd navigaasje';
$labels['helplistkeyboardnavigation'] = "Pylken op/del: Beweegje rige fokus/seleksje.
Spatie: Selektearje fokuse rige.
Shift + op/del: Selektearje oanfoljende rige boppe/ûnder.
Ctrl + Spatie: Foegje fokuse rige ta oan seleksje/ferwiderje fan seleksje.";
$labels['helplistkeyboardnavmessages'] = "Pylken rjochts/lofts: útwreidzje/ynsakje berjocht stream (allinnich yn stream modus).
Enter: Iepenje it selektearre/fokuse berjocht.
Delete: Ferpleats selektearre berjocht nei jiskefet.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Iepenje it selektearre/fokuse kontakt.";
localization/fy_NL/messages.inc000064400000034657151727150570012576 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Der is in flater bard!';
$messages['loginfailed']  = 'Ynloggen mislearre.';
$messages['cookiesdisabled'] = 'Jo browser akseptearret gjin koekjes.';
$messages['sessionerror'] = 'Jo sesje is ûnjildich of ferrûn.';
$messages['storageerror'] = 'Ferbining mei opslach tsjinner mislearre.';
$messages['servererror'] = 'Tsjinner Flater!';
$messages['servererrormsg'] = 'Tsjinner Flater: $msg';
$messages['accountlocked'] = 'Ynloggen te faak mislearre. Besykje it letter nochris.';
$messages['connerror'] = 'Ferbinings Flater (Kin de tsjinner net berikke)!';
$messages['dberror'] = 'Databank Flater!';
$messages['windowopenerror'] = 'De popup finster waard blokkearre!';
$messages['requesttimedout'] = 'Fersyk ferrûn';
$messages['errorreadonly'] = 'Koe operaasje net útfiere. Map kin allinnich lêzen wurde.';
$messages['errornoperm'] = 'Koe operaasje net útfiere. Tastimming wegere.';
$messages['erroroverquota'] = 'Koe operaasje net útfiere. Gjin frije skiifromte.';
$messages['erroroverquotadelete'] = 'Gjin frije skiifromte. Brûk Shift + DEL om in berjocht te wiskjen.';
$messages['invalidrequest'] = 'Ûnjildich fersyk! Gjin data waard bewarre.';
$messages['invalidhost'] = 'Unjildige tsjinner namme.';
$messages['nomessagesfound'] = 'Gjin berjochten fûn yn dit postfek.';
$messages['mailboxempty'] = 'Postfek is leech';
$messages['nomessages'] = 'Gjin berjochten';
$messages['refreshing'] = 'Ferfarskje...';
$messages['loading'] = 'Lade...';
$messages['uploading'] = 'Bestân oplade...';
$messages['attaching'] = 'Bestân tafoegje...';
$messages['uploadingmany'] = 'Bestânnen oplade...';
$messages['loadingdata'] = 'Data lade...';
$messages['checkingmail'] = 'Kontrolearje op nije berjochten...';
$messages['sendingmessage'] = 'Berjocht ferstjoere...';
$messages['messagesent'] = 'Berjocht mei sukses ferstjoerd.';
$messages['savingmessage'] = 'Berjocht bewarje...';
$messages['messagesaved'] = 'Berjocht bewarre yn ûntwerpen.';
$messages['successfullysaved'] = 'Mei sukses bewarre.';
$messages['savingresponse'] = 'Antwurd tekst bewarje...';
$messages['deleteresponseconfirm'] = 'Wolle jo dizze antwurd tekst echt wiskje?';
$messages['addedsuccessfully'] = 'Kontakt mei sukses taheakke oan adresboek.';
$messages['contactexists'] = 'In kontakt mei deselde e-post adres bestiet al.';
$messages['contactnameexists'] = 'In kontakt mei deselde namme bestiet al.';
$messages['blockedimages'] = 'Om jo privacy te beskermjen binne eksterne ôfbyldingen blokkeare yn dit berjocht.';
$messages['encryptedmessage'] = 'Dit is in fersifere berjocht en kin net werjûn wurde. Sorry!';
$messages['externalmessagedecryption'] = 'Dit is in fersifere berjocht en kin ûntsifere wurde mei jo browser ekstinsje.';
$messages['nopubkeyfor'] = 'Gjin jildich iepenbiere kaai fûn foar $email';
$messages['nopubkeyforsender'] = 'Gjin jildich iepenbiere kaai fûn foar jo stjoerder identiteit. Wolle jo it berjocht allinnich foar de ûntfangers fersiferje?';
$messages['encryptnoattachments'] = 'Al oanbeane taheaksels kinne net fersifere wurde. Asjebleaft op \'e nij taheakje yn de fersifering bewurker.';
$messages['searchpubkeyservers'] = 'Wolle jo op publike kaai tsjinners sykje nei de missende kaaien?';
$messages['encryptpubkeysfound'] = 'De folgjende publike kaaien binne fûn:';
$messages['nocontactsfound'] = 'Gjin kontakten fûn.';
$messages['contactnotfound'] = 'De opfrege kontakt waard net fûn.';
$messages['sendingfailed'] = 'Berjocht koe net ferstjoerd wurde.';
$messages['senttooquickly'] = 'Wachtsje $sec sekonde(n) foar it ferstjoeren fan dit berjocht.';
$messages['errorsavingsent'] = 'Der barde in flater ûnder it bewarjen fan ferstjoerd berjocht.';
$messages['errorsaving'] = 'Der barde in flater ûnder it bewarjen.';
$messages['errormoving'] = 'Koe berjocht(en) net ferpleatse.';
$messages['errorcopying'] = 'Koe berjocht(en) net kopieare.';
$messages['errordeleting'] = 'Koe berjocht(en) net wiskje.';
$messages['errormarking'] = 'Koe berjocht(en) net markearje.';
$messages['deletecontactconfirm']  = 'Wolle jo selektearre kontakt(en) echt wiskje?';
$messages['deletegroupconfirm']  = 'Wolle jo selektearre groep echt wiskje?';
$messages['deletemessagesconfirm'] = 'Wolle jo selektearre berjocht(en) echt wiskje?';
$messages['deletefolderconfirm']  = 'Wolle jo dizze map echt wiskje?';
$messages['purgefolderconfirm']  = 'Wolle jo echt alle berjochten yn dizze map wiskje?';
$messages['contactdeleting'] = 'Kontakt(en) wiskje...';
$messages['groupdeleting'] = 'Groep wiskje...';
$messages['folderdeleting'] = 'Map wiskje...';
$messages['foldermoving'] = 'Map ferpleatse...';
$messages['foldersubscribing'] = 'Ynskriuwe map...';
$messages['folderunsubscribing'] = 'Utskriuwe map...';
$messages['formincomplete'] = 'It formulier wie net hielendal ynfolle.';
$messages['noemailwarning'] = 'Fier in jildich e-post adres yn.';
$messages['nonamewarning']  = 'Fier in namme yn.';
$messages['nopagesizewarning'] = 'Fier in side grutte yn.';
$messages['nosenderwarning'] = 'Fier stjoerder e-post adres yn.';
$messages['norecipientwarning'] = 'Fier op syn minst ien ûntfanger yn.';
$messages['disclosedrecipwarning'] = 'Alle ûntfangers sjoche de oare e-post adressen. Om dat te foarkommen en harren privacy te beskermjen kinne jo gebrûk meitsje fan it Bcc fjild.';
$messages['disclosedreciptitle'] = 'Tefolle iepenbiere ûntfangers';
$messages['nosubjectwarning']  = 'It "Underwerp" fjild is leech. Wolle jo no ien ynfiere?';
$messages['nosubjecttitle']  = 'Gjin ûnderwerp';
$messages['nobodywarning'] = 'Dit berjocht sûnder tekst ferstjoere?';
$messages['notsentwarning'] = 'It berjocht is net ferstjoerd en hat net-bewarre feroarings. Wolle jo de feroarings fuort smite?';
$messages['restoresavedcomposedata'] = 'In earder komponearre mar net-ferstjoerd berjocht waard fûn.\n\nSubject: $subject\nSaved: $date\n\nWolle jo dit berjocht weromsette?';
$messages['nosearchname'] = 'Fier in kontakt namme of e-post adres yn.';
$messages['notuploadedwarning'] = 'Noch net alle taheaksels binne opladen. Jo kinne wachtsje of it opladen ôfbrekke.';
$messages['searchsuccessful'] = '$nr berjochten fûn.';
$messages['contactsearchsuccessful'] = '$nr kontakten fûn.';
$messages['searchnomatch'] = 'Sykjen hat gjin risseltaten opsmiten.';
$messages['searching'] = 'Sykje...';
$messages['checking'] = 'Kontrolearje...';
$messages['stillsearching'] = 'Noch oan it sykjen...';
$messages['nospellerrors'] = 'Gjin stavering flaters fûn.';
$messages['folderdeleted'] = 'Map mei sukses wiske.';
$messages['foldersubscribed'] = 'Map mei sukses ynskreaun.';
$messages['folderunsubscribed'] = 'Map mei sukses útskreaun.';
$messages['deletedsuccessfully'] = 'Mei sukses wiske.';
$messages['converting'] = 'Opmaak wiskje...';
$messages['messageopenerror'] = 'Koe berjocht net fan tsjinner lade.';
$messages['filelinkerror'] = 'Taheakjen fan bestân mislearre.';
$messages['fileuploaderror'] = 'Bestân oplade mislearre.';
$messages['filesizeerror'] = 'It opladen bestân is grutter as de maksimale grutte fan $size.';
$messages['filecounterror'] = 'Jo kinne maksimaal $count bestânnen yn ien kear oplade.';
$messages['msgsizeerror'] = 'Bestân taheakje mislearre. Maksimum grutte fan in berjocht ($size) oer gien.';
$messages['copysuccess'] = 'Mei sukses $nr kontakten kopiearre.';
$messages['movesuccess'] = 'Mei sukses $nr kontakten ferpleatst.';
$messages['copyerror'] = 'Koe gjin kontakten kopiearje.';
$messages['moveerror'] = 'Koe gjin kontakten ferpleatse.';
$messages['sourceisreadonly'] = 'Dizze adres boarne kin allinnich lêzen wurde.';
$messages['errorsavingcontact'] = 'Koe kontakt adres net bewarje.';
$messages['movingmessage'] = 'Berjocht(en) ferpleatse...';
$messages['copyingmessage'] = 'Berjocht(en) kopiearje...';
$messages['copyingcontact'] = 'Kontakt(en) kopiearje...';
$messages['movingcontact'] = 'Kontakt(en) ferpleatse...';
$messages['deletingmessage'] = 'Berjocht(en) wiskje...';
$messages['markingmessage'] = 'Berjocht(en) markearje...';
$messages['addingmember'] = 'Kontakt(en) oan de groep tafoegje...';
$messages['removingmember'] = 'Kontakt(en) út de groep ferwiderje...';
$messages['receiptsent'] = 'Mei súkses in lêzen ûntfangstbewiis ferstjoerd.';
$messages['errorsendingreceipt'] = 'Koe it ûntfangstbewiis net stjoere.';
$messages['deleteidentityconfirm'] = 'Wolle jo echt dizze identiteit wiskje?';
$messages['nodeletelastidentity'] = 'Jo kinne dizze identiteit net wiskje, it is jo lêste.';
$messages['forbiddencharacter'] = 'Mapnamme befettet in ferbean karakter.';
$messages['selectimportfile'] = 'Selektearje in bestân om op te laden.';
$messages['addresswriterror'] = 'It selektearre adres boek is net skriuwber.';
$messages['contactaddedtogroup'] = 'De kontakten mei sukses oan dizze groep taheakke.';
$messages['contactremovedfromgroup'] = 'De kontakten mei sukses út dizze groep ferwidere.';
$messages['nogroupassignmentschanged'] = 'Gjin groep opdrachten feroare.';
$messages['importwait'] = 'Ymportearjen, in amerijke...';
$messages['importformaterror'] = 'Ymport mislearre! It opladen bestân is net in jildich ymport data bestân.';
$messages['importconfirm'] = '<b>Mei sukses ymportearre $inserted kontakten</b>';
$messages['importconfirmskipped'] = '<b>Oerslein $skipped besteande weardes</b>';
$messages['importmessagesuccess'] = 'Mei sukses $nr berjochten ymportearre';
$messages['importmessageerror'] = 'Ymport mislearre! It opladen bestân is net in jildich berjocht of postfek bestân';
$messages['opnotpermitted'] = 'Operaasje net tastien!';
$messages['nofromaddress'] = 'E-post adres mist yn selektearre identiteit.';
$messages['editorwarning'] = 'Troch te wiskeljen fan berwurker kin tekst opmaak ferlern gean. Wolle jo trochgean?';
$messages['httpreceivedencrypterror'] = 'In fatale konfiguraasje flater. Nim fuortendaliks kontakt op mei jo systeembehearder. <B>Jo berjocht kin net stjoerd wurde.</ B>';
$messages['smtpconnerror'] = 'SMTP Flater ($code): Ferbining mei tsjinner mislearre.';
$messages['smtpautherror'] = 'SMTP Flater ($code): Ferifikaasje mislearre.';
$messages['smtpfromerror'] = 'SMTP Flater ($code): Stjoerder fêststelle mislearre "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP Flater ($code): Untfanger tafoegje mislearre "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP Flater: Koe ûntfangers lyst net ferwurkje.';
$messages['smtperror'] = 'SMTP Flater: $msg';
$messages['emailformaterror'] = 'Unjildich e-post adres: $email';
$messages['toomanyrecipients'] = 'Tefolle ûntfangers. Ferminderje it tal fan ûntfangers nei $max.';
$messages['maxgroupmembersreached'] = 'It tal fan groep leden is grutter as it maksimum fan $max.';
$messages['internalerror'] = 'In ynterne flater. Besykje it nochris.';
$messages['contactdelerror'] = 'Koe kontakt(en) net wiskje.';
$messages['contactdeleted'] = 'Kontakt(en) mei sukses wiske.';
$messages['contactrestoreerror'] = 'Koe wiske kontakt(en) net werom sette.';
$messages['contactrestored'] = 'Kontakt(en) mei sukses werom setten.';
$messages['groupdeleted'] = 'Groep mei sukses wiske.';
$messages['grouprenamed'] = 'Groep namme mei sukses feroare.';
$messages['groupcreated'] = 'Groep mei sukses oanmakke.';
$messages['savedsearchdeleted'] = 'Bewarre syk opdracht mei sukses wiske.';
$messages['savedsearchdeleteerror'] = 'Koe bewarre syk opdracht net wiskje.';
$messages['savedsearchcreated'] = 'Syk opdracht mei sukses bewarre.';
$messages['savedsearchcreateerror'] = 'Koe syk opdracht net bewarje.';
$messages['messagedeleted'] = 'Berjocht(en) mei sukses wiske.';
$messages['messagemoved'] = 'Berjocht(en) mei sukses ferpleatst.';
$messages['messagemovedtotrash'] = 'Berjocht(en) mei sukses nei Jiskefet ferpleatse.';
$messages['messagecopied'] = 'Berjocht(en) mei sukses kopieare.';
$messages['messagemarked'] = 'Berjocht(en) mei sukses markeare.';
$messages['autocompletechars'] = 'Fier op syn minst $min tekens yn foar autokompleet.';
$messages['autocompletemore'] = 'Mear oerienkommende risseltaten fûn. Typ mear tekens.';
$messages['namecannotbeempty'] = 'Namme kin net leech wêze.';
$messages['nametoolong'] = 'Namme is te lang.';
$messages['namedotforbidden'] = 'Mapnamme kin net mei in punt begjinne.';
$messages['folderupdated'] = 'Map mei sukses bywurke.';
$messages['foldercreated'] = 'Map mei sukses oanmakke.';
$messages['invalidimageformat'] = 'Gjin jildich ôfbyldings formaat.';
$messages['mispellingsfound'] = 'Stavering flaters ûntdutsen yn it berjocht.';
$messages['parentnotwritable'] = 'Koe map net oanmeitsje/ferhúzje yn selektearre boppelizzende map. Gjin tagong rjochten.';
$messages['messagetoobig'] = 'It berjocht diel is te grut om te ferwurkjen.';
$messages['noscriptwarning'] = 'Warskôging: Dizze webmail tsjinst fereasket Javascript! Om it te brûken moatte jo Javascript ynskeakelje yn jo browser ynstellings.';
$messages['messageissent'] = 'Dit berjocht wie al ferstjoerd, mar noch net bewarre. Wolle jo it no bewarje?';
$messages['errnotfound'] = 'Bestân Net Fûn';
$messages['errnotfoundexplain'] = 'De frege boarne waard net fûn!';
$messages['errfailedrequest'] = 'Mislearre Fersyk';
$messages['errauthorizationfailed'] = 'Autorisaasje Mislearre';
$messages['errunauthorizedexplain'] = 'Koe net nei gean oft jo machtige binne om tagong te krijen ta dizze tsjinst!';
$messages['errrequestcheckfailed'] = 'Fersyk Kontrole Mislearre';
$messages['errcsrfprotectionexplain'] = "Foar jo beskerming, tagong ta dizze boarne is befeilige tsjin CSRF.\nAs jo dit sjogge, hawwe jo net útlogge foar it ferlitten fan de web applikaasje.\n\nMinskelike ynteraksje is no ferplichte om fierder te gean.";
$messages['errcontactserveradmin'] = 'Nim kontakt op mei jo tsjinner-behearder.';
$messages['clicktoresumesession'] = 'Klik hjir om jo foarige sesje te ferfetsjen';
$messages['errcomposesession'] = 'Skriuw berjocht sesje flater';
$messages['errcomposesessionexplain'] = 'Fersyk skriuw berjocht sesje net fûn.';
$messages['clicktocompose'] = 'Klik hjir om in nij berjocht te skriuwen';
localization/fo_FO/labels.inc000064400000071070151727150570012200 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Vælkomin til $product';
$labels['username'] = 'Brúkaranavn';
$labels['password'] = 'Loyniorð';
$labels['server'] = 'Ambætari';
$labels['login'] = 'Rita inn';
$labels['oauthlogin'] = 'Fita inn við $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Rita út';
$labels['mail'] = 'Teldupostur';
$labels['settings'] = 'Stillingar';
$labels['addressbook'] = 'Búðstaðarsavn';
$labels['darkmode'] = 'Myrkt snið';
$labels['lightmode'] = 'LJóst snið';
$labels['inbox'] = 'Postur';
$labels['drafts'] = 'Skitsur';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Skrell';
$labels['junk'] = 'Møsn';
$labels['show_real_foldernames'] = 'Vís verulig nøvn til serligar mappur';
$labels['subject'] = 'Evni';
$labels['from'] = 'Frá';
$labels['sender'] = 'Sendari';
$labels['to'] = 'Til';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Svara-til';
$labels['followupto'] = 'Fylg við-til';
$labels['date'] = 'Tann';
$labels['size'] = 'Stødd';
$labels['priority'] = 'Raðfesting';
$labels['organization'] = 'Fyritøka';
$labels['readstatus'] = 'Lesistøða';
$labels['listoptions'] = 'Lýs valmøguleikar...';
$labels['listoptionstitle'] = 'Finn boð';
$labels['mailboxlist'] = 'Mappur';
$labels['messagesfromto'] = 'Boðini frá $from til $to ið tilsamans eru $count';
$labels['threadsfromto'] = 'Tráðirnir frá $from til $to ið eru $count';
$labels['messagenrof'] = 'Boð nummar $nr, av $count';
$labels['fromtoshort'] = '$from - $to ið eru $count';
$labels['copy'] = 'Avrita';
$labels['move'] = 'Flyt';
$labels['moveto'] = 'Flyt til...';
$labels['copyto'] = 'Avrita til...';
$labels['download'] = 'Heinta';
$labels['open'] = 'Lat upp';
$labels['showattachment'] = 'Vís';
$labels['showanyway'] = 'Vís tað avlíkavæl';
$labels['filename'] = 'Fílu navn';
$labels['filesize'] = 'Fílu stødd';
$labels['addtoaddressbook'] = 'Legg aftrat búðstaðar bók';
$labels['sun'] = 'Sun';
$labels['mon'] = 'Mán';
$labels['tue'] = 'Týs';
$labels['wed'] = 'Mik';
$labels['thu'] = 'Hós';
$labels['fri'] = 'Frí';
$labels['sat'] = 'Ley';
$labels['sunday'] = 'Sunnudagur';
$labels['monday'] = 'Mánadagur';
$labels['tuesday'] = 'Týsdagur';
$labels['wednesday'] = 'Mikudagur';
$labels['thursday'] = 'Hósdagur';
$labels['friday'] = 'Fríggjardagur';
$labels['saturday'] = 'Leygardagur';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Maj';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mars';
$labels['longapr'] = 'Apríl';
$labels['longmay'] = 'Maj';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'July';
$labels['longaug'] = 'August';
$labels['longsep'] = 'Septembur';
$labels['longoct'] = 'Oktobur';
$labels['longnov'] = 'Novembur';
$labels['longdec'] = 'Desembur';
$labels['today'] = 'Í dag';
$labels['refresh'] = 'Endur innles';
$labels['checkmail'] = 'Kann fyri nýggj boð.';
$labels['compose'] = 'Stovna';
$labels['writenewmessage'] = 'Stovna nýggj boð';
$labels['reply'] = 'Svara';
$labels['replytomessage'] = 'Svara til sendara';
$labels['replytoallmessage'] = 'Svara til listan ella til sendara og allir móttakarir';
$labels['replyall'] = 'Svara øllum';
$labels['replylist'] = 'Svara lista';
$labels['forward'] = 'Send víðari';
$labels['forwardinline'] = 'Svara víðari, við gomlum teksti';
$labels['forwardattachment'] = 'Send víðari sum viðhefting';
$labels['forwardmessage'] = 'Send hesi boð víðari';
$labels['bouncemsg'] = 'Send umaftur (bounce)';
$labels['bounce'] = 'Send umaftur';
$labels['deletemessage'] = 'Strika boð';
$labels['movemessagetotrash'] = 'Koyr boð í skrell';
$labels['printmessage'] = 'Útskriva hesi boð';
$labels['previousmessage'] = 'Vís seinastu boð';
$labels['firstmessage'] = 'Vís fyrstu boð';
$labels['nextmessage'] = 'Vís næstu boð';
$labels['lastmessage'] = 'Vís seinastu boð';
$labels['backtolist'] = 'Aftur til boð lista';
$labels['viewsource'] = 'Vís keldu';
$labels['mark'] = 'Merk';
$labels['markmessages'] = 'Merk boð';
$labels['markread'] = 'Sum lisin';
$labels['markunread'] = 'Sum ólisin';
$labels['markflagged'] = 'Sum viðmerkt';
$labels['markunflagged'] = 'Sum óviðmerkt';
$labels['moreactions'] = 'Fleiri gerir...';
$labels['markallread'] = 'Merk alt sum lisið';
$labels['folders-cur'] = 'Einans vald mappa';
$labels['folders-sub'] = 'Einans vald mappa og undirmappa';
$labels['folders-all'] = 'Allar mappur';
$labels['more'] = 'Meira';
$labels['back'] = 'Aftur';
$labels['options'] = 'Valmøguleikar';
$labels['actions'] = 'Gerðir';
$labels['first'] = 'Fyrst';
$labels['last'] = 'Síðst';
$labels['previous'] = 'Fyrra';
$labels['next'] = 'Seinna';
$labels['select'] = 'Vel';
$labels['all'] = 'Alt';
$labels['none'] = 'Einki';
$labels['currpage'] = 'Hesa síðu';
$labels['isread'] = 'Les';
$labels['unread'] = 'Ólisið';
$labels['flagged'] = 'Viðmerkt';
$labels['unflagged'] = 'Ikk merkt';
$labels['unanswered'] = 'Ikki svara';
$labels['withattachment'] = 'Við viðhefting';
$labels['deleted'] = 'Strika';
$labels['undeleted'] = 'Ikki strika';
$labels['replied'] = 'Svara';
$labels['forwarded'] = 'Víðari sent';
$labels['invert'] = 'Vend við';
$labels['filter'] = 'Síla';
$labels['list'] = 'Listið';
$labels['threads'] = 'Tráðir';
$labels['expand-all'] = 'Spreið alt';
$labels['expand-unread'] = 'Spreið ólisið';
$labels['collapse-all'] = 'Sett saman alt';
$labels['threaded'] = 'Tráða';
$labels['showunread'] = 'Vís ólisin boð';
$labels['autoexpand_threads'] = 'Spreið boð tráðir';
$labels['do_expand'] = 'Allir tráðir';
$labels['expand_only_unread'] = 'einans við ólisin boð';
$labels['fromto'] = 'Frá/Til';
$labels['flag'] = 'Viðmerk';
$labels['attachment'] = 'Viðhefting';
$labels['nonesort'] = 'Einki';
$labels['sentdate'] = 'Sent dato';
$labels['arrival'] = 'Móttikið dato';
$labels['asc'] = 'hækkandi';
$labels['desc'] = 'lækkandi';
$labels['listcolumns'] = 'List teigar';
$labels['listsorting'] = 'Sorterar teiga';
$labels['listorder'] = 'Sorterar rekkjufylgju';
$labels['listmode'] = 'Lista vísing';
$labels['layout'] = 'Snið';
$labels['layoutwidescreen'] = 'Breiðan skíggja';
$labels['layoutdesktop'] = 'Skriviborð';
$labels['layoutlist'] = 'Listið';
$labels['folderactions'] = 'Mappu gerir...';
$labels['compact'] = 'Trýst saman';
$labels['empty'] = 'Tøm';
$labels['importmessages'] = 'Innflyt boð';
$labels['quota'] = 'Disk nýtsla';
$labels['unknown'] = 'ókent';
$labels['unlimited'] = 'óavmarka';
$labels['quotatype'] = 'Kvotu slag';
$labels['quotatotal'] = 'Mark';
$labels['quotaused'] = 'Brúkt';
$labels['quotastorage'] = 'Driv pláss';
$labels['quotamessage'] = 'Tal av boðum';
$labels['shortheaderdate'] = 'Tann $date';
$labels['shortheaderto'] = 'Til $to tann $date';
$labels['shortheaderfrom'] = 'Frá $to tann $date';
$labels['quicksearch'] = 'Skjót leiting';
$labels['searchplaceholder'] = 'Leita...';
$labels['resetsearch'] = 'Nulstilla leiting';
$labels['searchmod'] = 'Leiti minkarir';
$labels['msgtext'] = 'Øll boðini';
$labels['body'] = 'Kroppur';
$labels['type'] = 'Slag';
$labels['namex'] = 'Navn';
$labels['searchscope'] = 'Leita frá';
$labels['currentfolder'] = 'Verandi mappa';
$labels['subfolders'] = 'Hendan og mappur undir hesari';
$labels['allfolders'] = 'Allar mappur';
$labels['searchinterval-1W'] = 'eldri enn eina viku';
$labels['searchinterval-1M'] = 'eldri enn ein mána';
$labels['searchinterval-1Y'] = 'eldri enn eitt ár';
$labels['searchinterval1W'] = 'yngri enn ein vika';
$labels['searchinterval1M'] = 'yngri enn ein mána';
$labels['searchinterval1Y'] = 'yngri enn eitt ár';
$labels['openinextwin'] = 'Opna í nýggjum vindeyga';
$labels['emlsave'] = 'Heinta (.eml)';
$labels['changeformattext'] = 'Vís í reinun teksti formati';
$labels['changeformathtml'] = 'Vís í HTML formati';
$labels['editasnew'] = 'Broyt sum nýtt';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send boð';
$labels['savemessage'] = 'Goym sum skitsa';
$labels['addattachment'] = 'Viðheft fíl';
$labels['charset'] = 'Stavusett';
$labels['editortype'] = 'Útgevara slag';
$labels['returnreceipt'] = 'Lat aftur kvittan';
$labels['dsn'] = 'Útflýggja støðu kunngerð';
$labels['mailreplyintro'] = 'Tann $date, skrivaði $sender:';
$labels['originalmessage'] = 'Uppruna boð';
$labels['selectimage'] = 'Vel mynd';
$labels['addimage'] = 'Legg aftar mynd';
$labels['selectmedia'] = 'Vel film';
$labels['addmedia'] = 'Legg aftrat film';
$labels['encrypt'] = 'Brongla';
$labels['encryptmessage'] = 'Brongla boð';
$labels['encryptmessagemailvelope'] = 'Brongla tíni boð við Mailvelo';
$labels['importpubkeys'] = 'Innflyt allmennar lyklar';
$labels['encryptedsendialog'] = 'Sendur brongla boð';
$labels['encryptandsign'] = 'Talgyld og signera';
$labels['keyid'] = 'Lykla ID';
$labels['keylength'] = 'Bit';
$labels['keyexpired'] = 'Útgingi';
$labels['keyrevoked'] = 'Sagt úr gildi';
$labels['bccinstead'] = 'Nýt Bcc';
$labels['insert'] = 'Legg inn';
$labels['recipient'] = 'Móttakari';
$labels['editidents'] = 'Broyt samleikar';
$labels['spellcheck'] = 'Stava';
$labels['checkspelling'] = 'Kanna staving';
$labels['resumeediting'] = 'Taka uppaftur skriving';
$labels['revertto'] = 'Vend aftur til';
$labels['restore'] = 'Endurstovna';
$labels['restoremessage'] = 'Endurstovna boð?';
$labels['ignore'] = 'Skúgva til viks';
$labels['responses'] = 'Svør';
$labels['insertresponse'] = 'Innset eitt svar';
$labels['manageresponses'] = 'Umsit svør';
$labels['newresponse'] = 'Stovna nýtt svar';
$labels['addresponse'] = 'Svara';
$labels['editresponse'] = 'Broyt svar';
$labels['editresponses'] = 'Broyt svør';
$labels['responsename'] = 'Navn';
$labels['responsetext'] = 'Svar tekstur';
$labels['attach'] = 'Viðheft';
$labels['attachments'] = 'Viðheftingar';
$labels['upload'] = 'Uppsend';
$labels['uploadprogress'] = '$percent ($current av $total)';
$labels['close'] = 'Lat aftur';
$labels['messageoptions'] = 'Boð valmøguleikar...';
$labels['togglecomposeoptions'] = 'Skift stovningar møguleikar';
$labels['low'] = 'Lágt';
$labels['lowest'] = 'Lágst';
$labels['normal'] = 'Vanligt';
$labels['high'] = 'Høgt';
$labels['highest'] = 'Hagst';
$labels['nosubject'] = '(einki evni)';
$labels['showimages'] = 'Vís myndir';
$labels['allow'] = 'Loyv';
$labels['alwaysshow'] = 'Vís altíð myndir frá $sender';
$labels['alwaysallow'] = 'Loyv altíð frá $sender';
$labels['isdraft'] = 'Hetta er eini skitsu boð.';
$labels['andnmore'] = '$nr meir...';
$labels['details'] = 'Upplýsingar';
$labels['togglemoreheaders'] = 'Vís meiri boð teksthøvd ';
$labels['togglefullheaders'] = 'Vel ráðan boð teksthøvd';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Reiður tekstur';
$labels['savesentmessagein'] = 'Goym boð í ';
$labels['dontsave'] = 'goym ikki';
$labels['maxuploadsize'] = 'Stórsta fílu stødd loyvd er $size';
$labels['addcc'] = 'Legg aftrat Cc';
$labels['addbcc'] = 'Legg aftrat Bcc';
$labels['addreplyto'] = 'Legg aftrat Svara-til';
$labels['addfollowupto'] = 'Legg aftrat Fylg við-til';
$labels['mdnrequest'] = 'Sendarin av hesi boð biður um at verða kunngjørdur tá ið tú lesur hesið boð. Vilt tú kunngerða sendaran?';
$labels['receiptread'] = 'Svara móttakara (les)';
$labels['yourmessage'] = 'Hetta er ein afturvend kvittan av tíni boð';
$labels['receiptnote'] = 'Gevið gætur: Hendan kvittan vísir einans á um boðini vóru sýnd á teldu mótakarans. Har er eingin trygging fyri at móttakarin hevur lisið ella skilt tað ið er í boðunum';
$labels['sendalwaysto'] = 'Send altíð til $email';
$labels['name'] = 'Fult navn';
$labels['firstname'] = 'Fornavn';
$labels['surname'] = 'Eftirnavn';
$labels['middlename'] = 'Millunnavn';
$labels['nameprefix'] = 'Forskoyti';
$labels['namesuffix'] = 'Eftirskoyti';
$labels['nickname'] = 'Eyknevni';
$labels['jobtitle'] = 'Starvsheiti';
$labels['department'] = 'Deild';
$labels['gender'] = 'Kyn';
$labels['maidenname'] = 'Gentunavn';
$labels['email'] = 'Teldupostur';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Búðstaður';
$labels['street'] = 'Gøta';
$labels['locality'] = 'Býur';
$labels['zipcode'] = 'Post kota';
$labels['region'] = 'Kommuna';
$labels['country'] = 'Land';
$labels['birthday'] = 'Føðingardagur';
$labels['anniversary'] = 'Ársdagur';
$labels['website'] = 'Heimasíða';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notatir';
$labels['male'] = 'maður';
$labels['female'] = 'kona';
$labels['manager'] = 'Leiðari';
$labels['assistant'] = 'Hjálparfólk';
$labels['spouse'] = 'Hjúnafelagi';
$labels['allfields'] = 'Allir teigar';
$labels['search'] = 'Leita';
$labels['searchresult'] = 'Leiti úrslit';
$labels['advsearch'] = 'Framkomin leiting';
$labels['advanced'] = 'Framkomin';
$labels['other'] = 'Annað';
$labels['printcontact'] = 'Útskriva persón';
$labels['typehome'] = 'Heim';
$labels['typework'] = 'Arbeiði';
$labels['typeother'] = 'Annað';
$labels['typemobile'] = 'Fartelefon';
$labels['typemain'] = 'Høvuðs';
$labels['typehomefax'] = 'Heima faks';
$labels['typeworkfax'] = 'Arbeiðis faks';
$labels['typecar'] = 'Bilur';
$labels['typepager'] = 'Persónleitari';
$labels['typevideo'] = 'Sjónband';
$labels['typeassistant'] = 'Hjálparfólk';
$labels['typehomepage'] = 'Heimasíða';
$labels['typeblog'] = 'Bloggur';
$labels['typeprofile'] = 'Umhvarv ';
$labels['addfield'] = 'Legg aftrat teiga...';
$labels['addcontact'] = 'Stovna persón';
$labels['editcontact'] = 'Broyt persón';
$labels['contacts'] = 'Persónar';
$labels['contactproperties'] = 'Persóna eginleikar';
$labels['contactnameandorg'] = 'Navn og felag';
$labels['personalinfo'] = 'Persónligar upplýsingar';
$labels['personal'] = 'Persónlig';
$labels['contactphoto'] = 'Mynd av persóni';
$labels['edit'] = 'Broyt';
$labels['cancel'] = 'Ógilda';
$labels['save'] = 'Goym';
$labels['delete'] = 'Strika';
$labels['discard'] = 'Strika';
$labels['continue'] = 'Víðari';
$labels['ok'] = 'OK';
$labels['rename'] = 'Umdoyp';
$labels['addphoto'] = 'Legg aftrat';
$labels['replacephoto'] = 'Skift út';
$labels['uploadphoto'] = 'Uppsend mynd';
$labels['choosefile'] = 'Vel fíl...';
$labels['choosefiles'] = 'Vel fílar...';
$labels['browse'] = 'Kaga';
$labels['newcontact'] = 'Stovna nýggjan persón';
$labels['deletecontact'] = 'Strika valdir persónar';
$labels['composeto'] = 'Skriva boð til';
$labels['contactsfromto'] = 'Persónar frá $from til $to ið eru $count';
$labels['print'] = 'Skriva út';
$labels['export'] = 'Flyt út';
$labels['exportall'] = 'Flyt út alt';
$labels['exportsel'] = 'Flyt út valt';
$labels['exportvcards'] = 'Út flyt persónar við vCard slagið';
$labels['newgroup'] = 'Stovna nýggjan bólk';
$labels['addgroup'] = 'Stovna bólk';
$labels['grouprename'] = 'Umdoyp bólk';
$labels['groupdelete'] = 'Strika bólk';
$labels['groupassign'] = 'Legg til bólk';
$labels['groupremove'] = 'Strika frá bólkið';
$labels['groupremoveselected'] = 'Strika valdar persónar frá bólki';
$labels['uponelevel'] = 'Upp eitt stig';
$labels['previouspage'] = 'Vís fyrrverandi síðu';
$labels['firstpage'] = 'Vís fyrstu síðu';
$labels['nextpage'] = 'Vís næstu síðu';
$labels['lastpage'] = 'Vís seinastu síðu';
$labels['group'] = 'Bólkur';
$labels['groups'] = 'Bólkar';
$labels['listgroup'] = 'Vís bólka limir';
$labels['personaladrbook'] = 'Persónligir búðstaðir';
$labels['searchsave'] = 'Goym leiting';
$labels['searchdelete'] = 'Strika leiting';
$labels['import'] = 'Innflyt';
$labels['importcontacts'] = 'Innflyt persónar';
$labels['importfromfile'] = 'Inflyt frá fílu';
$labels['importtarget'] = 'Legg persón til';
$labels['importreplace'] = 'Skift út alt búðstaðarsavni';
$labels['importgroups'] = 'Innflyt bólka ásetan';
$labels['importgroupsall'] = 'Øll (stovna bólkar um neyðugt)';
$labels['importgroupsexisting'] = 'Einans fyri bólkar ið longu eru til';
$labels['done'] = 'Liðugt';
$labels['settingsfor'] = 'Stillingar til';
$labels['about'] = 'Um';
$labels['preferences'] = 'Vælmøguleikar';
$labels['userpreferences'] = 'Brúkara vælmøguleikar';
$labels['editpreferences'] = 'Broyt brúkara framíhjárættindi';
$labels['identities'] = 'Samleikar';
$labels['manageidentities'] = 'Umsit samleikar';
$labels['newidentity'] = 'Stovna nýggjan samleika';
$labels['addidentity'] = 'Stovna samleika';
$labels['editidentity'] = 'Broyt samleika';
$labels['identityencryption'] = 'Brongla';
$labels['preferhtml'] = 'Vís HTML';
$labels['defaultcharset'] = 'Sjálvset tekin set';
$labels['htmlmessage'] = 'HTML boð';
$labels['messagepart'] = 'Deilur';
$labels['digitalsig'] = 'Dalgylt Undirskrift';
$labels['dateformat'] = 'Dato format';
$labels['timeformat'] = 'Tíðs format';
$labels['prettydate'] = 'Pen dato';
$labels['setdefault'] = 'Set vanligt';
$labels['autodetect'] = 'Sjálvirki';
$labels['language'] = 'Mál';
$labels['timezone'] = 'Tíðarsona';
$labels['pagesize'] = 'Rekkjur per síðu';
$labels['signature'] = 'Undirskrift';
$labels['dstactive'] = 'Summartíð';
$labels['showinextwin'] = 'Opna boðí nýggjun vindeyga';
$labels['composeextwin'] = 'Stovna í nýggjum vindeyga';
$labels['htmleditor'] = 'Stovna HTML boð';
$labels['htmlonreply'] = 'til svar til HTML boð';
$labels['htmlonreplyandforward'] = 'til víðari sending ella svar til HTML boð';
$labels['htmlsignature'] = 'HTML undirskrift';
$labels['showemail'] = 'Vís teldupostar búðstað við fullum navni';
$labels['previewpane'] = 'Vís undansýningar rút';
$labels['skin'] = 'Markamóts skinn';
$labels['logoutclear'] = 'Strika Skrell tá ið tú út ritar';
$labels['logoutcompact'] = 'Trýst saman postkassa tá ið tú ritar út';
$labels['uisettings'] = 'Brúkaraøki';
$labels['serversettings'] = 'Ambætara stillingar';
$labels['mailboxview'] = 'Postkassa sjón';
$labels['mdnrequests'] = 'Bið um kvittan';
$labels['askuser'] = 'spyr me';
$labels['autosend'] = 'send kvittan';
$labels['autosendknown'] = 'send kvittan til mínir persónar, annars spyr me';
$labels['autosendknownignore'] = 'send kvittan til mínir persónar, annars skúgv til vigs';
$labels['ignorerequest'] = 'skúgva umbøn til viks';
$labels['readwhendeleted'] = 'Merk boði sum lisið á striking';
$labels['flagfordeletion'] = 'Viðmerk boði til strikingar ístaðin fyri at strika';
$labels['skipdeleted'] = 'Vís ikki strika boð';
$labels['deletealways'] = 'Um flyting av boðum til Skrell ikki riggar, strika tey so';
$labels['deletejunk'] = 'Strika boð beinleiðis í Møsn';
$labels['showremoteimages'] = 'Vís regluligar fjarmyndir';
$labels['fromknownsenders'] = 'frá ókendum sendarum';
$labels['always'] = 'altíð';
$labels['alwaysbutplain'] = 'altíð. Fyri uftan tá svara verður reinun teksti';
$labels['showinlineimages'] = 'Vís viðheftar myndir niðanfyri boðini';
$labels['autosavedraft'] = 'Goym skitsu sjálvirkandi';
$labels['everynminutes'] = 'hvønn $n minutt(ir)';
$labels['refreshinterval'] = 'Endur innles (kannað fyri nýggjum boðum, o.s.fv.)';
$labels['never'] = 'aldrin';
$labels['immediately'] = 'í stundini';
$labels['messagesdisplaying'] = 'Vísir boð';
$labels['messagescomposition'] = 'Stovnar boð';
$labels['mimeparamfolding'] = 'Viðheftingar nøvn';
$labels['2231folding'] = 'Fult RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Fult RFC 2047 (other)';
$labels['force7bit'] = 'Nýt MIME kodingar til 8-bit tekin';
$labels['savelocalstorage'] = "Goym í lokal goymslu á kaga (fyribils)";
$labels['advancedoptions'] = 'Víðkaðir valmøguleikar';
$labels['toggleadvancedoptions'] = 'Skift víðkaðar møguleikar';
$labels['focusonnewmessage'] = 'Legg dent á kaga vindeyga tá ið nýtt boð verður stovna';
$labels['checkallfolders'] = 'Kannað allar mappur fyri nýggj boð';
$labels['defaultfont'] = 'Vanligi stavsnið av HTML boði';
$labels['mainoptions'] = 'Høvuðs Vælmøguleikar';
$labels['browseroptions'] = 'Kaga Valmøguleikar';
$labels['section'] = 'Partur';
$labels['maintenance'] = 'Umsiting';
$labels['newmessage'] = 'Nýggj boð';
$labels['signatureoptions'] = 'Undirskrift vælmøguleikar';
$labels['whenreplying'] = 'Tá ið skriving verður framd';
$labels['replyempty'] = 'sitera ikki uppruna boðini';
$labels['replytopposting'] = 'byrja eini nýggj boð uppiyvir sitatinum';
$labels['replybottomposting'] = 'byrja eini nýggj boð undir sitatinum';
$labels['replyremovesignature'] = 'Tá ið svaring verðurframd, strika so uppruna sitati frá boðinum';
$labels['autoaddsignature'] = 'Legg undirskrift á sjálvirkandi';
$labels['newmessageonly'] = 'Nýggj boð einans';
$labels['replyandforwardonly'] = 'svar og víðarsendingar einans';
$labels['insertsignature'] = 'Innset undirskrift';
$labels['sigbelow'] = 'Set undirskrift undir tey siteraðu boðini';
$labels['sigseparator'] = 'Tvinga vanliga hvørviskilju í undirskriftum';
$labels['automarkread'] = 'Merk boð sum lisin';
$labels['afternseconds'] = 'eftir $n sekund';
$labels['reqmdn'] = 'Bið altíð um eina kvittan';
$labels['reqdsn'] = 'Bið altíð um status kunngerð';
$labels['replysamefolder'] = 'Koyr svar í somu mappuna ið boðini komu frá';
$labels['defaultabook'] = 'Sjálvset búðstaðar bók';
$labels['autocompletesingle'] = 'Leyp um aðrar teldupost búðstaðar í sjálvirkandi skrivingini';
$labels['listnamedisplay'] = 'Vís persónar sum ';
$labels['spellcheckbeforesend'] = 'Kannað stavuvillur áðrenn boðini verða send';
$labels['spellcheckoptions'] = 'Stavuvilli kanningar vælmøguleikar';
$labels['spellcheckignoresyms'] = 'Leyp um orð við teknum';
$labels['spellcheckignorenums'] = 'Leyp um orð við tølum';
$labels['spellcheckignorecaps'] = 'Leyp um øll orð við øll bókstavum í stórum';
$labels['addtodict'] = 'Legg aftrat orðabók';
$labels['mailtoprotohandler'] = 'Skráset samskiftisreglur handfara til mailto: leinki';
$labels['standardwindows'] = 'Handfar upplatingarvindeygu sum vanlig vindeygu';
$labels['forwardmode'] = 'Víðarsending av boðum';
$labels['inline'] = 'innanreglis';
$labels['asattachment'] = 'sum viðhefting';
$labels['replyallmode'] = 'Sjálvset gerð til [Reply all] knap';
$labels['replyalldefault'] = 'Svara øllum';
$labels['replyalllist'] = 'svara til teldupostalista einans (um funnin)';
$labels['allmessages'] = 'øll boð';
$labels['folder'] = 'Mappa';
$labels['folders'] = 'Mappur';
$labels['foldername'] = 'Mappu navn';
$labels['subscribed'] = 'Teknaður til';
$labels['messagecount'] = 'Boð';
$labels['create'] = 'Stovna';
$labels['createfolder'] = 'Stovna nýggja mappu';
$labels['managefolders'] = 'Umsit mappur';
$labels['specialfolders'] = 'Serligar Mappur';
$labels['properties'] = 'Vælmøguleikar';
$labels['folderproperties'] = 'Mappu vælmøguleikar';
$labels['parentfolder'] = 'Foreldra mappu';
$labels['location'] = 'Stað';
$labels['info'] = 'Upplýsing';
$labels['getfoldersize'] = 'Trýst fyri at seta mappu stødd';
$labels['changesubscription'] = 'Trýst fyri at broyta tekning';
$labels['foldertype'] = 'Mappu slag';
$labels['personalfolder'] = 'Einskild Mappa';
$labels['otherfolder'] = 'Mappur hjá ørðum brúkarum';
$labels['sharedfolder'] = 'Almennar mappur';
$labels['findfolders'] = 'Finn mappur';
$labels['findmail'] = 'Finn boð';
$labels['namespace.personal'] = 'Persónlig';
$labels['namespace.other'] = 'Aðrir brúkarir';
$labels['namespace.shared'] = 'Deilt';
$labels['dualuselabel'] = 'Kann bert innihalda';
$labels['dualusemail'] = 'boð';
$labels['dualusefolder'] = 'mappur';
$labels['generate'] = 'Framleið';
$labels['encryptioncreatekey'] = 'Skapa nýtt lykla par';
$labels['encryption'] = 'Brongla';
$labels['sortby'] = 'Sortera eftir';
$labels['sortasc'] = 'Sortera hækkandi';
$labels['sortdesc'] = 'Sortera lækkandi';
$labels['undo'] = 'Angra';
$labels['installedplugins'] = 'Innløgd ískoyti';
$labels['plugin'] = 'Ískoyti';
$labels['version'] = 'Útgáva';
$labels['source'] = 'Kelda';
$labels['license'] = 'Heimildarskjal';
$labels['support'] = 'Fá hjálp';
$labels['savedsearches'] = 'Goymdar leitanir';
$labels['dateformatY'] = 'ÁÁÁÁ';
$labels['dateformaty'] = 'ÁÁ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Eingilst';
$labels['westerneuropean'] = 'Vestur Evoropeist';
$labels['easterneuropean'] = 'Estur Everopeist';
$labels['southeasterneuropean'] = 'Útsynnings Everopeist';
$labels['baltic'] = 'Eystursjógvurin';
$labels['cyrillic'] = 'Cyrillic';
$labels['arabic'] = 'Arabist';
$labels['greek'] = 'Grekst';
$labels['hebrew'] = 'Hebraiskt';
$labels['turkish'] = 'Turkist';
$labels['nordic'] = 'Norðurlengst';
$labels['thai'] = 'Tailenskt';
$labels['celtic'] = 'Keltiskt';
$labels['vietnamese'] = 'Vietmanesiskt';
$labels['japanese'] = 'Japanskt';
$labels['korean'] = 'Koreanskt';
$labels['chinese'] = 'Kinesiskt';
$labels['arialabeltopnav'] = 'Vindeyga kontro';
$labels['arialabeltasknav'] = 'Uppgávur forrits';
$labels['arialabeltoolbar'] = 'Amboðsbjálki';
$labels['arialabelactivetask'] = 'Tendra uppgáva';
$labels['arialabelmessagessearchfilter'] = 'Telduposta skráinga filtur';
$labels['arialabelmailsearchform'] = 'Teldupost boð leiti frymil';
$labels['arialabelcontactsearchform'] = 'Persóna leiti felt';
$labels['arialabelmailquicksearchbox'] = 'Teldupost leiti felt';
$labels['arialabelquicksearchbox'] = 'Leitingar orð';
$labels['arialabelfoldersearchfilter'] = 'Mappu skráingingar filtur';
$labels['arialabelfoldersearchform'] = 'Mappu leiti frymil';
$labels['arialabelfolderlist'] = 'Teldupost mappu val';
$labels['arialabelmessagelist'] = 'Telduposta boð skráing';
$labels['arialabelmailpreviewframe'] = 'Brot av boðið';
$labels['arialabelmailboxmenu'] = 'Mappu gerða valmynd';
$labels['arialabellistselectmenu'] = 'Vís valdu menu';
$labels['arialabelthreadselectmenu'] = 'Tráa skráingar valmynd';
$labels['arialabelmessagelistoptions'] = 'Boð skrá vísnáður og sorteringa valmøguleikar';
$labels['arialabelmailimportdialog'] = 'Influttning av boð dialogur';
$labels['arialabelmessagenav'] = 'Boð navigering';
$labels['arialabelmessagebody'] = 'Innihald í boðið';
$labels['arialabelmessageactions'] = 'Boð gerðir';
$labels['arialabelcontactquicksearch'] = 'Persóna leiti felt';
$labels['arialabelcontactsearchbox'] = 'Persón leiti orð';
$labels['arialabelmessageheaders'] = 'Teksthøvd av boð';
$labels['arialabelforwardingoptions'] = 'Víðarisend møguleikar';
$labels['arialabelreplyalloptions'] = 'Valmøguleikar til at svara øllum';
$labels['arialabelmoremessageactions'] = 'Meiri valmøguleikar til boð gerðir';
$labels['arialabelmarkmessagesas'] = 'Merk valdu boð sum...';
$labels['arialabelcomposeoptions'] = 'Stovningar møguleikar';
$labels['arialabelresponsesmenu'] = 'Skapilón svar valmynd';
$labels['arialabelattachmentuploadform'] = 'Viðheftingar uppsendingar frymil';
$labels['arialabelattachmentmenu'] = 'Viðheftingar valmøguleikar';
$labels['arialabelmailtomenu'] = 'Teldupost búðstaðar valmøguleikar';
$labels['arialabelattachmentpreview'] = 'Brot av víðheftingum';
$labels['ariasummarycomposecontacts'] = 'Listi av persónum og bólkum at velja sum móttakarar';
$labels['arialabelcontactexportoptions'] = 'Valmøguleikar fyri persóna útflytan';
$labels['arialabelabookgroupoptions'] = 'Bústaðarsavn/bólka valmøguleikar';
$labels['arialabelpreferencesform'] = 'Stillinga frymil';
$labels['arialabelidentityeditfrom'] = 'Samleika broytingar formur';
$labels['arialabelresponseeditfrom'] = 'Svar broytingar frymil';
$labels['arialabelsearchterms'] = 'Leiti orð';
$labels['arialabelimagetools'] = 'Mynda tól';
$labels['helplistnavigation'] = 'Vís knappaborð sniðvegir';
$labels['helplistkeyboardnavigation'] = "Pílar upp/niður: Flyt rekkju
Millumglopp: Vel verandi rekkju
Shift + upp/niður: Vel fleiri rekkjur uppi yvir/niðri undir
Ctrl + millumglopp: Legg verandi rekkju aftrat/tak frá ";
$labels['helplistkeyboardnavmessages'] = "Pílar vinstru/høgru: vaksa/minka boð trá (í tráar hátt einans)
Enter: Opna valdu boð
Delete: Flyt valdu boð til skrelluspann.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Opna verandi persón";
localization/fo_FO/messages.inc000064400000033610151727150570012543 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ein feilur kom fyri!';
$messages['loginfailed']  = 'Feilur í innriting.';
$messages['cookiesdisabled'] = 'Kagi tín noktar cookies.';
$messages['sessionerror'] = 'Seta tín er ógyldig ella útgingin.';
$messages['cookiesmismatch'] = 'Tú hevur nú rita út. Farvæl!';
$messages['storageerror'] = 'Feilur í samand til goymslu ambatara.';
$messages['servererror'] = 'Ambatara Feilur!';
$messages['servererrormsg'] = 'Ambatara Feilur: $msg';
$messages['accountlocked'] = 'Ov nógvar innritingar royndir. Royn aftur seinni.';
$messages['connerror'] = 'Ambætarasambindingar feilur (Einki samband við abmætaran)!';
$messages['dberror'] = 'Dátugrun Feilur';
$messages['windowopenerror'] = 'Popup vindeyga var forða!';
$messages['requesttimedout'] = 'Umbøn gekk út';
$messages['errorreadonly'] = 'Kann ikki fremja ger. Mappan kann einans lesast.';
$messages['errornoperm'] = 'Kann ikki fremja ger. Atgongd nokta.';
$messages['erroroverquota'] = 'Kann ikki fremja ger. Einki pláss á diski.';
$messages['erroroverquotadelete'] = 'Einki pláss á diski. Brúka SHIFT+DEL fyri at strika boð.';
$messages['invalidrequest'] = 'Ógyldig umbøn! Einki dáta varð goymt.';
$messages['invalidhost'] = 'Ógyldigt ambatara navn.';
$messages['nomessagesfound'] = 'Eingi boð í funnin hesum postkassa,';
$messages['mailboxempty'] = 'Postkassi er tómur';
$messages['nomessages'] = 'Eingin boð';
$messages['refreshing'] = 'Endur-innlesur...';
$messages['loading'] = 'Innlesur...';
$messages['uploading'] = 'Leggur fílu út...';
$messages['attaching'] = 'Viðheftur fíl...';
$messages['uploadingmany'] = 'Leggur fílur út...';
$messages['loadingdata'] = 'Innlesur dáta...';
$messages['checkingmail'] = 'Kannar fyri nýggj boð...';
$messages['sendingmessage'] = 'Sendur boð...';
$messages['messagesent'] = 'Boðini vóru send.';
$messages['savingmessage'] = 'Goymur boðini.';
$messages['messagesaved'] = 'Boðini goymd til Skitsur';
$messages['successfullysaved'] = 'Goymt.';
$messages['savingresponse'] = 'Goymur svar tekst...';
$messages['deleteresponseconfirm'] = 'Vilt tú veruliga strika hendan svar tekst?';
$messages['addedsuccessfully'] = 'Persónur lagdur aftrat búðstaðar savn.';
$messages['contactexists'] = 'Ein persónur við sama telduposti er longu til.';
$messages['contactnameexists'] = 'Ein persónur við sama navn er longu til.';
$messages['blockedimages'] = 'Fyri at verja tín privatlív so eru fjarmyndir sperraðar í hesum boði.';
$messages['encryptedmessage'] = 'Hetta er eini brogla boð og kann ikki sýnast. Tíverri!';
$messages['externalmessagedecryption'] = 'Hetta eru eini brongla boð. Boðini kunnu óbronglast við einum "browser extension"';
$messages['nopubkeyfor'] = 'Eingin gildur almennur lykil, eisini kalla "public key", var funnin, fyri teldupost bústaðin $email';
$messages['nopubkeyforsender'] = 'Eingin gildur almenna lykil var funnin fyri tín sendara samleika. Vilt tú brongla boðini fyri mótakaran einans?';
$messages['encryptnoattachments'] = 'Tær longu viðheftu fílirnir, kunnu ikki bronglast. Vinarliga set teir inn av nýggjum.';
$messages['searchpubkeyservers'] = 'Vilt tú leita í almennum datagrunnum eftir manglandi lyklum?';
$messages['encryptpubkeysfound'] = 'Teir fylgjandi almennalyklar vóru funnir:';
$messages['keyservererror'] = 'Feilur at heinta lykil frá lyklaambætara';
$messages['nocontactsfound'] = 'Eingir persónar funnir.';
$messages['contactnotfound'] = 'Umbindni persónurin varð ikki funnin.';
$messages['sendingfailed'] = 'Riggaði ikki at senda boð.';
$messages['senttooquickly'] = 'Vinarliga bíða $sec sekund(ir) áðrenn tú sendur hetta boð.';
$messages['errorsavingsent'] = 'Ein feilur kom fyri tá ið roynt var at goyma send boð.';
$messages['errorsaving'] = 'Ein feilur kom fyri tá ið goymt var.';
$messages['errormoving'] = 'Kundi ikki flyta boð(ini).';
$messages['errorcopying'] = 'Kundi ikki avrita boð(ini).';
$messages['errordeleting'] = 'Kundi ikki strika boð(ini).';
$messages['errormarking'] = 'Kundi ikki merkja boð(ini).';
$messages['alerttitle'] = 'Gev gætur';
$messages['confirmationtitle'] = 'Ert tú vís/ur';
$messages['deletecontactconfirm']  = 'Ert tú vísur í at tú vilt strika merkt(ar) persónar?';
$messages['deletegroupconfirm']  = 'Ert tú vísur í at tú vilt strika valda bólk?';
$messages['deletemessagesconfirm'] = 'Ert tú vísur í at tú vilt strika vald boð()?';
$messages['deletefolderconfirm']  = 'Ert tú vísur í at tú vilt strika hesa mappu?';
$messages['movefolderconfirm']  = 'Vilt tú veruliga flyta hesa mappu?';
$messages['purgefolderconfirm']  = 'Ert tú vísur í at tú vilt strika øll boð í hesu mappu?';
$messages['contactdeleting'] = 'Strikar persón(ar)...';
$messages['groupdeleting'] = 'Strikar bólk...';
$messages['folderdeleting'] = 'Strikar mappu...';
$messages['foldermoving'] = 'Flytur mappu...';
$messages['foldersubscribing'] = 'Tegnar til mappu...';
$messages['folderunsubscribing'] = 'Ógyldar tekning til mappu...';
$messages['formincomplete'] = 'Allir teigirnir vóru ikki fyltir út.';
$messages['noemailwarning'] = 'Vinarliga skriva ein galdandi teldupost.';
$messages['nonamewarning']  = 'Vinarliga skriva eitt navn.';
$messages['nopagesizewarning'] = 'Vinarliga skriva síðu stødd.';
$messages['nosenderwarning'] = 'Vinarliga skriva sendara teldupost búðstað.';
$messages['norecipientwarning'] = 'Vinarliga skriva minst ein móttakara.';
$messages['nosubjectwarning']  = 'Evna teigurin er tómur. Vilt tú skriva nakað í hann?';
$messages['nobodywarning'] = 'Send hesi boð uttan tekst?';
$messages['restoresavedcomposedata'] = 'Eitt fyrrverandi skriva boð, men ósent, boð var funni.\n\nEvni: $subject\nGoymt: $date\n\nVilt tú endur stovna hetta boð?';
$messages['nosearchname'] = 'Vinarliga skriva eitt persón navn ella teldupost búðstað,';
$messages['notuploadedwarning'] = 'Ikki allar viðheftingar eru uppsendar enn. Vinarliga bíða ella angra uppsendingina.';
$messages['searchsuccessful'] = '$nr boð funnin.';
$messages['contactsearchsuccessful'] = '$nr persónar funnir.';
$messages['searchnomatch'] = 'Leiting gav eingin úrslit.';
$messages['searching'] = 'Leitar...';
$messages['checking'] = 'Kannar...';
$messages['stillsearching'] = 'Leitar enn...';
$messages['nospellerrors'] = 'Eingin stavifeilur funnin.';
$messages['folderdeleted'] = 'Mappa sletta.';
$messages['foldersubscribed'] = 'Mappa tekna til.';
$messages['folderunsubscribed'] = 'Ógylt tekning til mappu.';
$messages['deletedsuccessfully'] = 'Strika uftan feilir.';
$messages['converting'] = 'Tekur burt forsniðing...';
$messages['messageopenerror'] = 'Kundi ikki lesa inn boð frá servara.';
$messages['filelinkerror'] = 'Feilur kom í, tá roynt var at viðhefta fíl.';
$messages['fileuploaderror'] = 'Fíla uppsending riggaði ikk.';
$messages['filesizeerror'] = 'Uppsendi fílur er stórri enn grensan ið er $size.';
$messages['copysuccess'] = 'Avrita $nr persónar.';
$messages['movesuccess'] = 'Flutt $nr persónar.';
$messages['copyerror'] = 'Kundi ikki avrita persónar.';
$messages['moveerror'] = 'Kundi ikki flyta persónar.';
$messages['sourceisreadonly'] = 'Hendan búðstaðar keldan er einans lesandi.';
$messages['errorsavingcontact'] = 'Kann ikki goyma addressuna hjá persóni.';
$messages['movingmessage'] = 'Flytur hetta(hesi) boð...';
$messages['copyingmessage'] = 'Flytur hetta(hesi) boð...';
$messages['copyingcontact'] = 'Avritar persón(ar)...';
$messages['movingcontact'] = 'Flytur persón(ar)...';
$messages['deletingmessage'] = 'Strikar boð(ini)...';
$messages['markingmessage'] = 'Merkjur boð(ini)...';
$messages['addingmember'] = 'Leggur persón(ar) aftrat bólk...';
$messages['removingmember'] = 'Strikar persón(ar) frá bólkið...';
$messages['receiptsent'] = 'Kvittan er sent.';
$messages['errorsendingreceipt'] = 'Kundi ikki senda kvittan.';
$messages['deleteidentityconfirm'] = 'Ert tú vísur í at tú vilt strika hendan samleika?';
$messages['nodeletelastidentity'] = 'Tú kanst ikki strika hendan samleika, hetta er tann seinasti.';
$messages['forbiddencharacter'] = 'Mappu navn inniheldur óloyvd tekin.';
$messages['selectimportfile'] = 'Vinarliga vel eina fílu';
$messages['addresswriterror'] = 'Valda búðstaðar bók kann ikki skrivast í.';
$messages['contactaddedtogroup'] = 'Persónar vóru lagdir aftrat bólki.';
$messages['contactremovedfromgroup'] = 'Persónar vóru strikaðir frá bólki';
$messages['nogroupassignmentschanged'] = 'Eingin bólka tilluting broytt.';
$messages['importwait'] = 'Flytur inn, vinarliga bíða...';
$messages['importformaterror'] = 'Innflyting riggaði ikki! Tann uppsendi fílurin var ikki gyldigur dátu fílur.';
$messages['importconfirm'] = '<b>$inserted Persónar innfluttir</b>';
$messages['importconfirmskipped'] = '<b>Leyp um $skipped innsetanir</b>';
$messages['importmessagesuccess'] = 'Innflutt $nr boð.';
$messages['importmessageerror'] = 'Innflyting bar ikki til! Tann uppsendi fílurin er ikki gyldigur boð ella postkassa fílur';
$messages['opnotpermitted'] = 'Ger ikki loyvd!';
$messages['nofromaddress'] = 'Manglar teldupostur í valda samleika.';
$messages['editorwarning'] = 'At broyta rættara, eisini kallað "editor", kann gera at tín tekst formaterring verður burtur. Vilt tú halda á fram?';
$messages['httpreceivedencrypterror'] = 'Ein oyðandi samansetings feilur uppstóð. Vinarliga set teg í samband við umsitaran beinanvegin. <b>Tíni boð kundu ikki sendast.</b>';
$messages['smtpconnerror'] = 'SMTP Feilur ($code): Samband til ambatara riggaði ikki.';
$messages['smtpautherror'] = 'SMTP Feilur ($code): Atgongd nokta.';
$messages['smtpfromerror'] = 'SMTP feilur ($code): Til bar ikki at seta sendarin til "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP feilur ($code): Til bar ikki at nýta móttakarin "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP feilur: Til bar ikki at greina móttakara listan.';
$messages['smtperror'] = 'SMTP feilur: $msg';
$messages['emailformaterror'] = 'Ógyldig teldupost búðstaður: $email';
$messages['toomanyrecipients'] = 'Ov nógvir móttakarir. Minka um móttakarum til $max.';
$messages['maxgroupmembersreached'] = 'Nummarið av limum í bólkinum gongur framvið hægsta mark ið er $max.';
$messages['internalerror'] = 'Ein innanhýsis feilur kom fyri. Vinarliga royn aftur.';
$messages['contactdelerror'] = 'Kann ikki strika persón(ar).';
$messages['contactdeleted'] = 'Persón(ar) strikaðir.';
$messages['contactrestoreerror'] = 'Kann ikki endurstovna persón(ar).';
$messages['contactrestored'] = 'Persónur(ar) endurstovnaðir.';
$messages['groupdeleted'] = 'Bólkur strikaður.';
$messages['grouprenamed'] = 'Bólkur umdoyptur.';
$messages['groupcreated'] = 'Bólkur stovnaður';
$messages['savedsearchdeleted'] = 'Goymdar leitingar strikaðar';
$messages['savedsearchdeleteerror'] = 'Kundi ikki strika goymdar leitingar.';
$messages['savedsearchcreated'] = 'Goymdar leitingar stovnaðar.';
$messages['savedsearchcreateerror'] = 'Kundi ikki stovna goymdar leitingar.';
$messages['messagedeleted'] = 'Boð(ini) strika.';
$messages['messagemoved'] = 'Boð(ini) flutt.';
$messages['messagecopied'] = 'Boð(ini) avrita.';
$messages['messagemarked'] = 'Boð(ini) merkt.';
$messages['autocompletechars'] = 'Skriva minst $min tekin fyri sjálvvirkin útfylling riggar.';
$messages['autocompletemore'] = 'Fleiri úrslit funnin. Vinarliga skriva fleiri tekin.';
$messages['namecannotbeempty'] = 'Navn kann ikki verða tómt.';
$messages['nametoolong'] = 'Navnið er ov langt.';
$messages['namedotforbidden'] = 'Navni á einari mappu, kann ikki byrja við punktum.';
$messages['folderupdated'] = 'Mappa dagført.';
$messages['foldercreated'] = 'Mappa stovna.';
$messages['invalidimageformat'] = 'Ikki eitt gyldigt mynda slag.';
$messages['mispellingsfound'] = 'Stavuvillur funnar í tíni boð.';
$messages['parentnotwritable'] = 'Kann ikki flyta/avrita mappu til valda mappu. Eingin atgongu-rættindi.';
$messages['messagetoobig'] = 'Boðini eru ov stór til at handfara.';
$messages['noscriptwarning'] = 'Ávaring: Hendan webmail tænastan krevur Javascript! Um tú vilt nýta hana, so vinarliga tendra Javascript í tínum kaga.';
$messages['messageissent'] = 'Boðini vóru longu send, men ikki goymd enn. Vilt tú goyma tey nú?';
$messages['errnotfound'] = 'Fílurin var ikki funnin';
$messages['errnotfoundexplain'] = 'Tann valda hjálpartól var ikki funnið!';
$messages['errfailedrequest'] = 'Umbønin riggaði ikki';
$messages['errauthorizationfailed'] = 'Góðkenning riggaði ikki';
$messages['errunauthorizedexplain'] = 'Tað bar ikki til at vátta at tú hevur heimild til hesa tænastu!';
$messages['errrequestcheckfailed'] = 'Umbøn kanning ógildig';
$messages['errcsrfprotectionexplain'] = "Fyri tína egnu verju, so er atgongdin til hetta hjálpartól tryggja ímóti CSRF.
Um tú sært hetta. so ritaði tú nokk ikki út áðrenn tú fór frá farritinum.
Menniskja ávirkan er nú kravd fyri at halda áfram.";
$messages['errcontactserveradmin'] = 'Vinarliga set teg í samband við tín ambætara umsitara';
$messages['clicktoresumesession'] = 'Trýst her fyri at forseta tína fyrrverandi setu';
$messages['errcomposesession'] = 'Stovning av setan riggaði ikki';
$messages['errcomposesessionexplain'] = 'Tann umbiðna setan var ikki funnin';
$messages['clicktocompose'] = 'Trýst her fyri at stovna nýggj boð';
localization/de_CH/timezones.inc000064400000010072151727150570012720 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'Weltzeit (UTC)';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Algier';
$labels['tz:africa:cairo'] = 'Kairo';
$labels['tz:africa:dar_es_salaam'] = 'Daressalam';
$labels['tz:africa:djibouti'] = 'Dschibuti';
$labels['tz:africa:douala'] = 'Duala';
$labels['tz:africa:khartoum'] = 'Khartum';
$labels['tz:africa:mogadishu'] = 'Mogadischu';
$labels['tz:africa:ouagadougou'] = 'Wagadugu';
$labels['tz:africa:tripoli'] = 'Tripolis';
$labels['tz:africa:windhoek'] = 'Windhuk';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:argentina'] = 'Argentinien';
$labels['tz:america:chicago'] = 'Chikago';
$labels['tz:america:costa_rica'] = 'Kostarika';
$labels['tz:america:havana'] = 'Havanna';
$labels['tz:america:jamaica'] = 'Jamaika';
$labels['tz:america:mexico_city'] = 'Mexiko Stadt';
$labels['tz:america:new_york'] = 'Neu York';
$labels['tz:america:north_dakota'] = 'Nord-Dakota';
$labels['tz:america:north_dakota:new_salem'] = 'Neu Salem';
$labels['tz:america:puerto_rico'] = 'Portoriko';
$labels['tz:antarctica'] = 'Antarktis';
$labels['tz:arctic'] = 'Arktis';
$labels['tz:asia'] = 'Asien';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:damascus'] = 'Damaskus';
$labels['tz:asia:kolkata'] = 'Kalkuta';
$labels['tz:asia:nicosia'] = 'Nikosia';
$labels['tz:asia:riyadh'] = 'Riad';
$labels['tz:asia:seoul'] = 'Soul';
$labels['tz:asia:shanghai'] = 'Schanghai';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:taipei'] = 'Taipeh';
$labels['tz:asia:tbilisi'] = 'Tiflis';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:vladivostok'] = 'Wladiwostok';
$labels['tz:asia:yangon'] = 'Rangun';
$labels['tz:asia:yekaterinburg'] = 'Jekaterinburg';
$labels['tz:asia:yerevan'] = 'Eriwan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azoren';
$labels['tz:atlantic:canary'] = 'Kanarische Inseln';
$labels['tz:atlantic:faroe'] = 'Färöer';
$labels['tz:atlantic:south_georgia'] = 'Südgeorgien';
$labels['tz:atlantic:st_helena'] = 'St. Helena';
$labels['tz:australia'] = 'Australien';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:athens'] = 'Athen';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:bratislava'] = 'Pressburg';
$labels['tz:europe:brussels'] = 'Brüssel';
$labels['tz:europe:bucharest'] = 'Bukarest';
$labels['tz:europe:copenhagen'] = 'Kopenhagen';
$labels['tz:europe:isle_of_man'] = 'Insel Man';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad (Königsberg)';
$labels['tz:europe:kiev'] = 'Kiew';
$labels['tz:europe:lisbon'] = 'Lissabon';
$labels['tz:europe:ljubljana'] = 'Laibach';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:moscow'] = 'Moskau';
$labels['tz:europe:prague'] = 'Prag';
$labels['tz:europe:rome'] = 'Rom';
$labels['tz:europe:tallinn'] = 'Reval';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:vatican'] = 'Vatikanstadt';
$labels['tz:europe:vienna'] = 'Wien';
$labels['tz:europe:vilnius'] = 'Wilna';
$labels['tz:europe:volgograd'] = 'Wolgograd';
$labels['tz:europe:warsaw'] = 'Warschau';
$labels['tz:europe:zagreb'] = 'Agram';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'Indik';
$labels['tz:indian:maldives'] = 'Malediven';
$labels['tz:pacific'] = 'Pazifik';
$labels['tz:pacific:easter'] = 'Osterinsel';
localization/de_CH/csv2vcard.inc000064400000007770151727150570012613 0ustar00<?php

/*
+-----------------------------------------------------------------------+
| localization/de_CH/csv2vcard.inc                                      |
|                                                                       |
| Localization file of the Roundcube Webmail client                     |
| Copyright (C) 2005-2014, The Roundcube Dev Team                       |
|                                                                       |
| Licensed under the GNU General Public License version 3 or            |
| any later version with exceptions for skins & plugins.                |
| See the README file for a full license statement.                     |
|                                                                       |
+-----------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl>                            |
+-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Jahrestag";
$map['assistants_name'] = "Name Assistent";
$map['assistants_phone'] = "Telefon Assistent";
$map['birthday'] = "Geburtstag";
$map['business_city'] = "Ort geschäftlich";
$map['business_countryregion'] = "Region geschäftlich";
$map['business_fax'] = "Fax geschäftlich";
$map['business_phone'] = "Telefon geschäftlich";
$map['business_phone_2'] = "Telefon geschäftlich 2";
$map['business_postal_code'] = "Postleitzahl geschäftlich";
$map['business_state'] = "Land geschäftlich";
$map['business_street'] = "Straße geschäftlich";
$map['car_phone'] = "Autotelefon";
$map['categories'] = "Kategorien";
$map['company'] = "Firma";
$map['department'] = "Abteilung";
$map['email_address'] = "E-Mail-Adresse";
$map['first_name'] = "Vorname";
$map['gender'] = "Geschlecht";
$map['home_city'] = "Ort privat";
$map['home_countryregion'] = "Region privat";
$map['home_fax'] = "Fax privat";
$map['home_phone'] = "Telefon privat";
$map['home_phone_2'] = "Telefon privat 2";
$map['home_postal_code'] = "Postleitzahl privat";
$map['home_state'] = "Land privat";
$map['home_street'] = "Straße privat";
$map['job_title'] = "Position";
$map['last_name'] = "Nachname";
$map['managers_name'] = "Manager's Name";
$map['middle_name'] = "Weitere Vornamen";
$map['mobile_phone'] = "Mobiltelefon";
$map['notes'] = "Notizen";
$map['other_city'] = "Weiterer Ort";
$map['other_countryregion'] = "Weitere Region";
$map['other_fax'] = "Weiteres Fax";
$map['other_phone'] = "Weiteres Telefon";
$map['other_postal_code'] = "Weitere Postleitzahl";
$map['other_state'] = "Weiteres Land";
$map['other_street'] = "Weitere Straße";
$map['pager'] = "Pager";
$map['primary_phone'] = "Haupttelefon";
$map['spouse'] = "Spouse";
$map['suffix'] = "Suffix";
$map['title'] = "Title";
$map['web_page'] = "Webseite";
$map['birth_day'] = "Geburtstag";
$map['birth_month'] = "Geburtsmonat";
$map['birth_year'] = "Geburtsjahr";
$map['display_name'] = "Anzeigename";
$map['fax_number'] = "Fax-Nummer";
$map['home_address'] = "Privat: Adresse";
$map['home_country'] = "Privat: Land";
$map['home_zipcode'] = "Privat: PLZ";
$map['mobile_number'] = "Mobil-Tel.-Nr.";
$map['nickname'] = "Spitzname";
$map['organization'] = "Organisation";
$map['pager_number'] = "Pager-Nummer";
$map['primary_email'] = "Primäre E-Mail-Adresse";
$map['secondary_email'] = "Sekundäre E-Mail-Adresse";
$map['web_page_1'] = "Webseite 1";
$map['web_page_2'] = "Webseite 2";
$map['work_phone'] = "Tel. dienstlich";
$map['work_address'] = "Dienstlich: Adresse";
$map['work_country'] = "Dienstlich: Land";
$map['work_zipcode'] = "Dienstlich: PLZ";
$map['date_of_birth'] = "Date of Birth";
$map['email'] = "Email";
$map['home_mobile'] = "Home Mobile";
$map['home_zip'] = "Home Zip";
$map['info'] = "Info";
$map['user_photo'] = "User Photo";
$map['url'] = "URL";
$map['work_city'] = "Work City";
$map['work_company'] = "Work Company";
$map['work_dept'] = "Work Dept";
$map['work_fax'] = "Work Fax";
$map['work_mobile'] = "Work Mobile";
$map['work_state'] = "Work State";
$map['work_title'] = "Work Title";
$map['work_zip'] = "Work Zip";
localization/de_CH/labels.inc000064400000102545151727150570012154 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Willkommen bei $product';
$labels['username'] = 'Benutzername';
$labels['password'] = 'Passwort';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
$labels['oauthlogin'] = 'Anmelden mit $provider';
$labels['menu'] = 'Menü';
$labels['logout'] = 'Abmelden';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Einstellungen';
$labels['addressbook'] = 'Adressbuch';
$labels['darkmode'] = 'Dunkler Modus';
$labels['lightmode'] = 'Heller Modus';
$labels['inbox'] = 'Posteingang';
$labels['drafts'] = 'Entwürfe';
$labels['sent'] = 'Gesendet';
$labels['trash'] = 'Gelöscht';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Spezialordner nicht übersetzen';
$labels['subject'] = 'Betreff';
$labels['from'] = 'Von';
$labels['sender'] = 'Absender';
$labels['to'] = 'An';
$labels['cc'] = 'Kopie (CC)';
$labels['bcc'] = 'Blind-Kopie';
$labels['replyto'] = 'Antwort an';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Datum';
$labels['size'] = 'Grösse';
$labels['priority'] = 'Priorität';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Gelesen/Ungelesen';
$labels['listoptions'] = 'Listenoptionen...';
$labels['listoptionstitle'] = 'Listeneinstellungen';
$labels['mailboxlist'] = 'Ordner';
$labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
$labels['threadsfromto'] = 'Konversationen $from bis $to von $count';
$labels['messagenrof'] = 'Nachricht $nr von $count';
$labels['fromtoshort'] = '$from – $to von $count';
$labels['copy'] = 'Kopieren';
$labels['move'] = 'Verschieben';
$labels['moveto'] = 'Verschieben nach...';
$labels['copyto'] = 'Kopieren nach...';
$labels['download'] = 'Download';
$labels['open'] = 'Öffnen';
$labels['showattachment'] = 'Anzeigen';
$labels['showanyway'] = 'Trotzdem anzeigen';
$labels['filename'] = 'Dateiname';
$labels['filesize'] = 'Dateigrösse';
$labels['addtoaddressbook'] = 'Ins Adressbuch übernehmen';
$labels['sun'] = 'So';
$labels['mon'] = 'Mo';
$labels['tue'] = 'Di';
$labels['wed'] = 'Mi';
$labels['thu'] = 'Do';
$labels['fri'] = 'Fr';
$labels['sat'] = 'Sa';
$labels['sunday'] = 'Sonntag';
$labels['monday'] = 'Montag';
$labels['tuesday'] = 'Dienstag';
$labels['wednesday'] = 'Mittwoch';
$labels['thursday'] = 'Donnerstag';
$labels['friday'] = 'Freitag';
$labels['saturday'] = 'Samstag';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mär';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'März';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Dezember';
$labels['today'] = 'Heute';
$labels['refresh'] = 'Aktualisieren';
$labels['checkmail'] = 'Auf neue Nachrichten prüfen';
$labels['compose'] = 'Schreiben';
$labels['writenewmessage'] = 'Neue Nachricht schreiben';
$labels['reply'] = 'Antworten';
$labels['replytomessage'] = 'Antwort verfassen';
$labels['replytoallmessage'] = 'Antwort an Absender und alle Empfänger verfassen';
$labels['replyall'] = 'Allen antworten';
$labels['replylist'] = 'Liste antworten';
$labels['forward'] = 'Weiterleiten';
$labels['forwardinline'] = 'Eingebunden weiterleiten';
$labels['forwardattachment'] = 'Als Anhang weiterleiten';
$labels['forwardmessage'] = 'Nachricht weiterleiten';
$labels['bouncemsg'] = 'Erneut senden (Bounce)';
$labels['bounce'] = 'Erneut senden';
$labels['deletemessage'] = 'Nachricht löschen';
$labels['movemessagetotrash'] = 'Nachricht in den Papierkorb verschieben';
$labels['printmessage'] = 'Nachricht drucken';
$labels['previousmessage'] = 'Vorherige Nachricht anzeigen';
$labels['firstmessage'] = 'Die erste Nachricht anzeigen';
$labels['nextmessage'] = 'Nächste Nachricht anzeigen';
$labels['lastmessage'] = 'Die letzte Nachricht anzeigen';
$labels['backtolist'] = 'Zurück zur Liste';
$labels['viewsource'] = 'Quelltext anzeigen';
$labels['mark'] = 'Markieren';
$labels['markmessages'] = 'Nachrichten markieren';
$labels['markread'] = 'Als gelesen';
$labels['markunread'] = 'Als ungelesen';
$labels['markflagged'] = 'Markierung hinzufügen';
$labels['markunflagged'] = 'Markierung entfernen';
$labels['markundeleted'] = 'Als nicht gelöscht';
$labels['moreactions'] = 'Mehr ...';
$labels['markallread'] = 'Alle als gelesen markieren';
$labels['folders-cur'] = 'Nur ausgewählten Ordner';
$labels['folders-sub'] = 'Ausgewählter Ordner und seine Unterordner';
$labels['folders-all'] = 'Alle Ordner';
$labels['more'] = 'Mehr';
$labels['back'] = 'Zurück';
$labels['options'] = 'Optionen';
$labels['composeoptions'] = 'Optionen für die neue Nachrichten';
$labels['optionsandattachments'] = 'Optionen und Anhänge';
$labels['actions'] = 'Aktionen';
$labels['first'] = 'Erste';
$labels['last'] = 'Letzte';
$labels['previous'] = 'Vorherige';
$labels['next'] = 'Nächste';
$labels['select'] = 'Auswählen';
$labels['selection'] = 'Auswahl';
$labels['all'] = 'Alle';
$labels['none'] = 'Keine';
$labels['currpage'] = 'Aktuelle Seite';
$labels['isread'] = 'Gelesen';
$labels['unread'] = 'Ungelesene';
$labels['flagged'] = 'Markierte';
$labels['unflagged'] = 'Nicht markiert';
$labels['unanswered'] = 'Unbeantwortete';
$labels['withattachment'] = 'Mit Anhang';
$labels['deleted'] = 'Gelöschte';
$labels['undeleted'] = 'Nicht gelöscht';
$labels['replied'] = 'Beantwortet';
$labels['forwarded'] = 'Weitergeleitet';
$labels['invert'] = 'Umkehren';
$labels['filter'] = 'Filter';
$labels['list'] = 'Liste';
$labels['threads'] = 'Konversationen';
$labels['expand-all'] = 'Alle aufklappen';
$labels['expand-unread'] = 'Ungelesene aufklappen';
$labels['collapse-all'] = 'Alle zuklappen';
$labels['threaded'] = 'Gruppiert';
$labels['showunread'] = ' Ungelesene Nachrichten anzeigen';
$labels['autoexpand_threads'] = 'Konversationen aufklappen';
$labels['do_expand'] = 'alle';
$labels['expand_only_unread'] = 'nur ungelesene';
$labels['fromto'] = 'Von/An';
$labels['flag'] = 'Markierung';
$labels['attachment'] = 'Anhang';
$labels['nonesort'] = 'Keine';
$labels['sentdate'] = 'Sendedatum';
$labels['arrival'] = 'Empfangsdatum';
$labels['asc'] = 'aufsteigend';
$labels['desc'] = 'absteigend';
$labels['listcolumns'] = 'Spalten';
$labels['listsorting'] = 'Sortierung';
$labels['listorder'] = 'Ordnung';
$labels['listmode'] = 'Anzeigemodus';
$labels['lmode'] = 'Listen-Modus';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Breitbild';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Breitbild (3-Spalten-Ansicht)';
$labels['layoutdesktopdesc'] = 'Desktop (breite Liste mit Vorschau unterhalb)';
$labels['layoutlistdesc'] = 'Liste (keine Vorschau)';
$labels['folderactions'] = 'Ordneraktionen...';
$labels['compact'] = 'Packen';
$labels['empty'] = 'Leeren';
$labels['importmessages'] = 'Nachrichten importieren';
$labels['mailimportdesc'] = 'Sie können E-Mails im <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a>- oder <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>-Format hochladen.';
$labels['mailimportzip'] = 'Mehrere Dateien können in ein Zip-Archiv gepackt werden.';
$labels['quota'] = 'Kapazität';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unlimitiert';
$labels['quotatype'] = 'Kapazitätstyp';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Verwendet';
$labels['quotastorage'] = 'Speicherplatz';
$labels['quotamessage'] = 'Anzahl Nachrichten';
$labels['shortheaderdate'] = 'Am $date';
$labels['shortheaderto'] = 'An $to am $date';
$labels['shortheaderfrom'] = 'Von $from am $date';
$labels['quicksearch'] = 'Schnellsuche';
$labels['searchplaceholder'] = 'Suche...';
$labels['resetsearch'] = 'Löschen';
$labels['searchmod'] = 'Suchkriterien ändern';
$labels['msgtext'] = 'Ganze Nachricht';
$labels['body'] = 'Inhalt';
$labels['type'] = 'Typ';
$labels['namex'] = 'Name';
$labels['searchscope'] = 'Suchbereich';
$labels['currentfolder'] = 'Aktueller Ordner';
$labels['subfolders'] = 'Aktueller und Unterordner';
$labels['allfolders'] = 'Alle Ordner';
$labels['searchinterval-1W'] = 'älter als eine Woche';
$labels['searchinterval-1M'] = 'älter als ein Monat';
$labels['searchinterval-1Y'] = 'älter als ein Jahr';
$labels['searchinterval1W'] = 'jünger als eine Woche';
$labels['searchinterval1M'] = 'jünger als ein Monat';
$labels['searchinterval1Y'] = 'jünger als ein Jahr';
$labels['openinextwin'] = 'In neuem Fenster öffnen';
$labels['emlsave'] = 'Herunterladen (.eml)';
$labels['changeformattext'] = 'Als reiner Text anzeigen';
$labels['changeformathtml'] = 'Als original HTML anzeigen';
$labels['editasnew'] = 'Als neue Nachricht öffnen';
$labels['send'] = 'Senden';
$labels['sendmessage'] = 'Nachricht jetzt senden';
$labels['savemessage'] = 'Nachricht speichern';
$labels['addattachment'] = 'Datei anfügen';
$labels['charset'] = 'Zeichensatz';
$labels['editortype'] = 'Editor-Typ';
$labels['returnreceipt'] = 'Empfangsbestätigung (MDN)';
$labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
$labels['keepformatting'] = 'Formatierung beibehalten';
$labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
$labels['originalmessage'] = 'Originalnachricht';
$labels['selectimage'] = 'Bild auswählen';
$labels['addimage'] = 'Bild hinzufügen';
$labels['selectmedia'] = 'Video auswählen';
$labels['addmedia'] = 'Video hinzufügen';
$labels['encrypt'] = 'Verschlüsseln';
$labels['encryptmessage'] = 'Nachricht verschlüsseln';
$labels['encryptmessagemailvelope'] = 'Nachricht verschlüsseln mit Mailvelope';
$labels['importpubkeys'] = 'Öffentliche Schlüssel importieren';
$labels['encryptedsendialog'] = 'Verschlüsselte Nachricht senden';
$labels['encryptandsign'] = 'Verschlüsseln & signieren';
$labels['keyid'] = 'Schlüsselkennung';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Abgelaufen';
$labels['keyrevoked'] = 'Widerrufen';
$labels['bccinstead'] = 'Bcc verwenden';
$labels['addheader'] = 'Empfänger hinzufügen (Kopfzeile)';
$labels['insert'] = 'Hinzufügen';
$labels['insertcontact'] = 'Kontakt(e) einfügen';
$labels['recipient'] = 'Empfänger';
$labels['recipientedit'] = 'Empfänger bearbeiten';
$labels['editidents'] = 'Absender bearbeiten';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortsetzen';
$labels['revertto'] = 'Zurück zu';
$labels['restore'] = 'Wiederherstellen';
$labels['restoremessage'] = 'Nachricht wiederherstellen?';
$labels['ignore'] = 'Ignorieren';
$labels['responses'] = 'Antworten';
$labels['insertresponse'] = 'Antwort einfügen';
$labels['manageresponses'] = 'Antworten verwalten';
$labels['newresponse'] = 'Neue Antwort erstellen';
$labels['addresponse'] = 'Antwort hinzufügen';
$labels['editresponse'] = 'Antwort bearbeiten';
$labels['editresponses'] = 'Antworten bearbeiten';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Antworttext';
$labels['attach'] = 'Anhängen';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
$labels['uploadprogress'] = '$percent ($current von $total)';
$labels['close'] = 'Schliessen';
$labels['messageoptions'] = 'Optionen...';
$labels['togglecomposeoptions'] = 'Nachrichten-Optionen ein-/ausblenden';
$labels['attachmentrename'] = 'Anhang umbenennen';
$labels['low'] = 'Niedrig';
$labels['lowest'] = 'Niedrigste';
$labels['normal'] = 'Normal';
$labels['high'] = 'Hoch';
$labels['highest'] = 'Höchste';
$labels['nosubject'] = '(kein Betreff)';
$labels['showimages'] = 'Bilder anzeigen';
$labels['allow'] = 'Erlauben';
$labels['alwaysshow'] = 'Bilder von $sender immer zeigen';
$labels['alwaysallow'] = 'Von $sender immer erlauben';
$labels['isdraft'] = 'Dies ist ein Entwurf';
$labels['andnmore'] = '$nr weitere...';
$labels['details'] = 'Details';
$labels['summary'] = 'Zusammenfassung';
$labels['headers'] = 'Kopfzeilen';
$labels['allheaders'] = 'Alle Kopfzeilen...';
$labels['togglemoreheaders'] = 'Weitere Kopfzeilen anzeigen';
$labels['togglefullheaders'] = 'Original-Kopfzeilen ein-/ausblenden';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Klartext';
$labels['savesentmessagein'] = 'Nachricht speichern in';
$labels['dontsave'] = 'nicht speichern';
$labels['maxuploadsize'] = 'Maximal erlaubte Dateigrösse ist $size';
$labels['addcc'] = 'Cc hinzufügen';
$labels['addbcc'] = 'Bcc hinzufügen';
$labels['addreplyto'] = 'Antwortadresse hinzufügen';
$labels['addfollowupto'] = 'Followup-To hinzufügen';
$labels['sendreceipt'] = 'Lesebestätigung senden?';
$labels['mdnrequest'] = 'Der Sender dieser Nachricht hat eine Empfangsbestätigung angefordert. Möchten Sie diese jetzt senden?';
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dieses ist eine Empfangsbestätigung für Ihre Nachricht';
$labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht bestätigt. Dieses ist keine Garantie, dass die Nachricht gelesen und verstanden wurde.';
$labels['sendalwaysto'] = 'Immer an $email senden';
$labels['zoomin'] = 'Vergrössern';
$labels['zoomout'] = 'Verkleinern';
$labels['rotate'] = 'Drehen';
$labels['increaseimage'] = 'Bild vergrössern';
$labels['decreaseimage'] = 'Bild verkleinern';
$labels['rotateimage'] = 'Bild drehen';
$labels['showtools'] = 'Bildwerkzeuge einblenden';
$labels['hidetools'] = 'Bildwerkzeuge ausblenden';
$labels['name'] = 'Anzeigename';
$labels['firstname'] = 'Vorname';
$labels['surname'] = 'Nachname';
$labels['middlename'] = '2. Vorname';
$labels['nameprefix'] = 'Präfix';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Spitzname';
$labels['jobtitle'] = 'Titel';
$labels['department'] = 'Abteilung';
$labels['gender'] = 'Geschlecht';
$labels['maidenname'] = 'Mädchenname';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresse';
$labels['street'] = 'Strasse';
$labels['locality'] = 'Ort';
$labels['zipcode'] = 'PLZ';
$labels['region'] = 'Region';
$labels['country'] = 'Land';
$labels['birthday'] = 'Geburtstag';
$labels['anniversary'] = 'Jahrestag';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notizen';
$labels['male'] = 'männlich';
$labels['female'] = 'weiblich';
$labels['manager'] = 'Vorgesetzte/r';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Partner/in';
$labels['allfields'] = 'Alle Felder';
$labels['search'] = 'Suche';
$labels['searchresult'] = 'Suchresultat';
$labels['advsearch'] = 'Erweiterte Suche';
$labels['advanced'] = 'Erweitert';
$labels['other'] = 'Andere';
$labels['printcontact'] = 'Kontakt drucken';
$labels['qrcode'] = 'QR-Code';
$labels['typehome'] = 'Zuhause';
$labels['typework'] = 'Arbeit';
$labels['typeother'] = 'Andere';
$labels['typemobile'] = 'Mobiltelefon';
$labels['typemain'] = 'Hauptnummer';
$labels['typehomefax'] = 'Fax Zuhause';
$labels['typeworkfax'] = 'Fax Arbeit';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Homepage';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Feld hinzufügen...';
$labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
$labels['contactnameandorg'] = 'Name und Organisation';
$labels['personalinfo'] = 'Persönliche Informationen';
$labels['personal'] = 'Persönlich';
$labels['contactphoto'] = 'Kontakt-Bild';
$labels['edit'] = 'Bearbeiten';
$labels['cancel'] = 'Abbrechen';
$labels['save'] = 'Speichern';
$labels['delete'] = 'Löschen';
$labels['discard'] = 'Verwerfen';
$labels['continue'] = 'Weiter';
$labels['ok'] = 'OK';
$labels['rename'] = 'Umbenennen';
$labels['addphoto'] = 'Hinzufügen';
$labels['replacephoto'] = 'Ersetzen';
$labels['uploadphoto'] = 'Bild hochladen';
$labels['choosefile'] = 'Datei auswählen...';
$labels['choosefiles'] = 'Dateien auswählen...';
$labels['browse'] = 'Durchsuchen';
$labels['newcontact'] = 'Neuen Kontakt erfassen';
$labels['deletecontact'] = 'Gewählte Kontakte löschen';
$labels['composeto'] = 'Nachricht verfassen';
$labels['contactsfromto'] = 'Kontakte $from bis $to von $count';
$labels['print'] = 'Drucken';
$labels['export'] = 'Exportieren';
$labels['exportall'] = 'Alle exportieren';
$labels['exportsel'] = 'Ausgewählte exportieren';
$labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
$labels['newgroup'] = 'Neue Addressgruppe erstellen';
$labels['addgroup'] = 'Gruppe hinzufügen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupassign'] = 'Zur Gruppe hinzufügen...';
$labels['groupremove'] = 'Aus Gruppe entfernen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
$labels['uponelevel'] = 'Eine Ebene nach oben';
$labels['previouspage'] = 'Eine Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';
$labels['lastpage'] = 'Letzte Seite';
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Gruppen';
$labels['listgroup'] = 'Gruppenmitglieder anzeigen';
$labels['personaladrbook'] = 'Persönliches Adressbuch';
$labels['searchsave'] = 'Suche speichern';
$labels['searchdelete'] = 'Suche löschen';
$labels['import'] = 'Importieren';
$labels['importcontacts'] = 'Adressen importieren';
$labels['importfromfile'] = 'Aus Datei importieren';
$labels['importtarget'] = 'Importieren nach';
$labels['importreplace'] = 'Bestehendes Adressbuch komplett ersetzen';
$labels['importgroups'] = 'Gruppenzuweisungen importieren';
$labels['importgroupsall'] = 'Alle (nicht vorhandene Gruppen erstellen)';
$labels['importgroupsexisting'] = 'Für existierende Gruppen';
$labels['importdesc'] = 'Sie können Kontakte aus einem bestehenden Adressbuch hochladen.<br/>Unterstützt werden aktuell <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> oder CSV (comma-separated) Dateiformate.';
$labels['importmapdesc'] = 'Prüfen Sie die unten stehende Spaltenzuweisung bevor der Import der CSV-Daten (komma-getrennt) fortgesetzt wird.';
$labels['fieldnotmapped'] = 'Feld nicht zugewiesen (nicht importieren)';
$labels['skipheader'] = 'Die erste Zeile nicht importieren (Kopfzeile)';
$labels['done'] = 'Fertig';
$labels['settingsfor'] = 'Einstellungen für';
$labels['about'] = 'Über';
$labels['preferences'] = 'Einstellungen';
$labels['userpreferences'] = 'Benutzereinstellungen';
$labels['editpreferences'] = 'Einstellungen bearbeiten';
$labels['identities'] = 'Absender';
$labels['manageidentities'] = 'Absender verwalten';
$labels['newidentity'] = 'Neuen Absender erfassen';
$labels['addidentity'] = 'Absender hinzufügen';
$labels['editidentity'] = 'Absender bearbeiten';
$labels['identityencryption'] = 'Verschlüsselung';
$labels['preferhtml'] = 'HTML bevorzugen';
$labels['defaultcharset'] = 'Standard-Zeichensatz';
$labels['htmlmessage'] = 'HTML Nachricht';
$labels['messagepart'] = 'Abschnitt';
$labels['digitalsig'] = 'Digitale Signatur';
$labels['dateformat'] = 'Datumsformat';
$labels['timeformat'] = 'Zeitformat';
$labels['prettydate'] = 'Kurze Datumsanzeige';
$labels['setdefault'] = 'Als Standard';
$labels['autodetect'] = 'Automatisch';
$labels['language'] = 'Sprache';
$labels['timezone'] = 'Zeitzone';
$labels['pagesize'] = 'Einträge pro Seite';
$labels['signature'] = 'Signatur';
$labels['dstactive'] = 'Sommerzeit';
$labels['showinextwin'] = 'Nachrichten in neuem Fenster öffnen';
$labels['composeextwin'] = 'Nachrichten in neuem Fenster verfassen';
$labels['htmleditor'] = 'HTML-Nachrichten verfassen';
$labels['htmlonreply'] = 'nur Antworten auf HTML-Nachrichten';
$labels['htmlonreplyandforward'] = 'Antworten oder Weiterleiten einer HTML-Nachricht';
$labels['htmlsignature'] = 'HTML-Signatur';
$labels['showemail'] = 'E-Mail-Adresse und Namen anzeigen';
$labels['previewpane'] = 'Nachrichtenvorschau anzeigen';
$labels['skin'] = 'Oberflächendesign';
$labels['logoutclear'] = 'Papierkorb beim Abmelden leeren';
$labels['logoutcompact'] = 'Posteingang beim Abmelden packen';
$labels['uisettings'] = 'Benutzeroberfläche';
$labels['serversettings'] = 'Server-Einstellungen';
$labels['mailboxview'] = 'Mailbox-Ansicht';
$labels['mdnrequests'] = 'Empfangsbestätigung senden';
$labels['askuser'] = 'immer fragen';
$labels['autosend'] = 'automatisch senden';
$labels['autosendknown'] = 'für bekannte Absender, sonst fragen';
$labels['autosendknownignore'] = 'für bekannte Absender, sonst ignorieren';
$labels['autosendtrusted'] = 'Bestätigung an vertrauenswürdige Absender senden, sonst nachfragen';
$labels['autosendtrustedignore'] = 'Bestätigung an vertrauenswürdige Absender senden, sonst ignorieren';
$labels['ignorerequest'] = 'Anfrage ignorieren';
$labels['readwhendeleted'] = 'Beim Löschen als gelesen markieren';
$labels['flagfordeletion'] = 'Als gelöscht markieren anstatt in den Papierkorb verschieben';
$labels['skipdeleted'] = 'Zeige keine gelöschten Nachrichten an';
$labels['deletealways'] = 'Löschen wenn Verschieben in den Papierkorb nicht möglich';
$labels['deletejunk'] = 'Nachrichten in Spam direkt löschen';
$labels['showremoteimages'] = 'Eingebettete Bilder vom Internet laden';
$labels['allowremoteresources'] = 'Externe Ressourcen erlauben (Bilder, Styles)';
$labels['fromknownsenders'] = 'bei bekannten Absendern';
$labels['fromtrustedsenders'] = 'von vertrauenswürdigen Absendern';
$labels['frommycontacts'] = 'aus meinen Kontakten';
$labels['always'] = 'immer';
$labels['alwaysbutplain'] = 'immer, ausser beim Antworten auf Klartext';
$labels['showinlineimages'] = 'Angehängte Bilder unter der Nachricht anzeigen';
$labels['autosavedraft'] = 'Entwurf autom. speichern';
$labels['everynminutes'] = '$n Minute(n)';
$labels['refreshinterval'] = 'Refresh (auf neue Nachrichten prüfen, etc.)';
$labels['never'] = 'nie';
$labels['immediately'] = 'sofort';
$labels['messagesdisplaying'] = 'Nachrichtendarstellung';
$labels['messagescomposition'] = 'Nachrichtenerstellung';
$labels['mimeparamfolding'] = 'Namen der Dateianhänge';
$labels['2231folding'] = 'Vollständig RFC 2231 kompatibel (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 kompatibel (Microsoft Outlook)';
$labels['2047folding'] = 'Vollständig RFC 2047 kompatibel (andere)';
$labels['force7bit'] = 'MIME-Kodierung für 8-bit Zeichen';
$labels['savelocalstorage'] = "Im Browser speichern (temporär)";
$labels['advancedoptions'] = 'Erweiterte Einstellungen';
$labels['toggleadvancedoptions'] = 'Erweiterte Einstellungen ein-/ausblenden';
$labels['focusonnewmessage'] = 'Fokussiere Browserfenster bei neuen Nachrichten';
$labels['checkallfolders'] = 'Alle Ordner auf neue Nachrichten prüfen';
$labels['displaynext'] = 'Nach Verschieben/Löschen den nächsten Listeneintrag anzeigen';
$labels['defaultfont'] = 'Standardschrift in HTML-Nachrichten';
$labels['mainoptions'] = 'Allgemein';
$labels['browseroptions'] = 'Browsereinstellungen';
$labels['section'] = 'Bereich';
$labels['maintenance'] = 'Wartung';
$labels['newmessage'] = 'Neue Nachrichten';
$labels['signatureoptions'] = 'Signatur';
$labels['whenreplying'] = 'Beantworten einer Nachricht';
$labels['replyempty'] = 'Antwort ohne Zitat der Originalnachricht';
$labels['replytopposting'] = 'Antwort über der Originalnachricht';
$labels['replytoppostingnoindent'] = 'Antwort über der Originalnachricht (ohne Einrückung)';
$labels['replybottomposting'] = 'Antwort unter der Originalnachricht';
$labels['replyremovesignature'] = 'Beim Antworten die Signatur der Originalnachricht entfernen';
$labels['autoaddsignature'] = 'Signatur automatisch einfügen';
$labels['newmessageonly'] = 'nur bei neuen Nachrichten';
$labels['replyandforwardonly'] = 'nur bei Antworten und Weiterleitungen';
$labels['insertsignature'] = 'Signatur einfügen';
$labels['sigbelow'] = 'Signatur unter der zitierten Nachricht platzieren';
$labels['sigseparator'] = 'Standardtrennzeichen in Signaturen erzwingen';
$labels['automarkread'] = 'Nachrichten als gelesen markieren';
$labels['afternseconds'] = 'nach $n Sekunden';
$labels['reqmdn'] = 'Empfangsbestätigung (MSN) immer anfordern';
$labels['reqdsn'] = 'Übermittlungsbestätigung (DSN) immer anfordern';
$labels['replysamefolder'] = 'Antworten im selben Ordner wie Original speichern';
$labels['defaultabook'] = 'Standard-Adressbuch';
$labels['autocompletesingle'] = 'Keine alternativen E-Mail-Adressen in Autovervollständigung';
$labels['listnamedisplay'] = 'Kontakte auflisten als';
$labels['contactformmode'] = 'Formularmodus';
$labels['privatemode'] = 'Privat (Home)';
$labels['businessmode'] = 'Geschäftlich (Work)';
$labels['collectedaddresses'] = 'Gesammelte Adressen';
$labels['collectedrecipients'] = 'Gesammelte Empfänger';
$labels['collectedrecipientsopt'] = 'Empfänger gesendeter Nachrichten speichern in';
$labels['collectedsendersopt'] = ' Vertrauenswürdige Absender speichern in';
$labels['trustedsenders'] = ' Vertrauenswürdige Absender';
$labels['spellcheckbeforesend'] = 'Rechtscheibung vor dem Senden prüfen';
$labels['spellcheckoptions'] = 'Rechtschreibprüfungsoptionen';
$labels['spellcheckignoresyms'] = 'Wörter mit Symbolen überspringen';
$labels['spellcheckignorenums'] = 'Wörter mit Ziffern überspringen';
$labels['spellcheckignorecaps'] = 'Wörter überspringen, die nur aus Grossbuchstaben bestehen';
$labels['addtodict'] = 'Zum Wörterbuch hinzufügen';
$labels['mailtoprotohandler'] = 'Als Empfänger für mailto: Links einrichten';
$labels['standardwindows'] = 'Popups als normale Browserfenster öffnen';
$labels['forwardmode'] = 'Weiterleiten einer Nachricht';
$labels['inline'] = 'eingebettet';
$labels['asattachment'] = 'als Anhang';
$labels['replyallmode'] = 'Standard Funktion für [Allen antworten]';
$labels['replyalldefault'] = 'Allen antworten';
$labels['replyalllist'] = 'Nur der Mailing-Liste antworten (falls vorhanden)';
$labels['allmessages'] = 'Für alle Nachrichten';
$labels['olderxdays'] = 'älter als $x Tage';
$labels['folder'] = 'Ordner';
$labels['folders'] = 'Ordner';
$labels['foldername'] = 'Ordnername';
$labels['subscribed'] = 'Abonniert';
$labels['messagecount'] = 'Nachrichten';
$labels['create'] = 'Erstellen';
$labels['createfolder'] = 'Neuen Ordner erstellen';
$labels['managefolders'] = 'Ordner verwalten';
$labels['specialfolders'] = 'Spezialordner';
$labels['properties'] = 'Eigenschaften';
$labels['folderproperties'] = 'Ordnereigenschaften';
$labels['parentfolder'] = 'Eltern';
$labels['location'] = 'Speicherort';
$labels['info'] = 'Informationen';
$labels['getfoldersize'] = 'Ordnergrösse anzeigen';
$labels['changesubscription'] = 'Abonnieren';
$labels['foldertype'] = 'Ordnertyp';
$labels['personalfolder'] = 'Privater Ordner';
$labels['otherfolder'] = 'Order eines anderen Benutzers';
$labels['sharedfolder'] = 'Öffentlicher Ordner';
$labels['findfolders'] = 'Ordner suchen';
$labels['findcontacts'] = 'Kontakte durchsuchen';
$labels['findmail'] = 'Nachrichten durchsuchen';
$labels['namespace.personal'] = 'Persönlich';
$labels['namespace.other'] = 'Andere Benutzer';
$labels['namespace.shared'] = 'Freigegeben';
$labels['dualuselabel'] = 'Enthält ausschliesslich';
$labels['dualusemail'] = 'Nachrichten';
$labels['dualusefolder'] = 'Ordner';
$labels['generate'] = 'Generieren';
$labels['encryptioncreatekey'] = 'Neues Schlüsselpaar erstellen';
$labels['openmailvelopesettings'] = 'Mailvelope-Einstellungen öffnen';
$labels['encryptionprivkeysinmailvelope'] = 'Für diesen Absender sind $nr private Schlüssel in Ihrem Mailvelope Schlüsselbund gespeichert:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Für diesen Absender existiert noch kein PGP Schlüsselpaar in Ihrem Mailvelope Schlüsselbund. Möchten Sie jetzt eines erstellen, um E-Mail-Verschlüsselung zu ermöglichen?';
$labels['encryption'] = 'Verschlüsselung';
$labels['mailvelopeoptions'] = 'Mailvelope-Optionen';
$labels['mailvelopemainkeyring'] = 'Mailvelope-Hauptschlüsselbund verwenden';
$labels['mailvelopenotfound'] = 'Die Mailvelope-Erweiterung ist in Ihrem Browser nicht aktiviert/installiert.';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'aufsteigend sortieren';
$labels['sortdesc'] = 'absteigend sortieren';
$labels['undo'] = 'Rückgängig';
$labels['installedplugins'] = 'Installierte Plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Quellcode';
$labels['destination'] = 'Ziel';
$labels['license'] = 'Lizenz';
$labels['support'] = 'Support';
$labels['savedsearches'] = 'Gespeicherte Suchen';
$labels['dateformatY'] = 'JJJJ';
$labels['dateformaty'] = 'JJ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'TT';
$labels['dateformatj'] = 'T';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englisch';
$labels['westerneuropean'] = 'Westeuropäisch';
$labels['easterneuropean'] = 'Osteuropäisch';
$labels['southeasterneuropean'] = 'Südosteuropäisch';
$labels['baltic'] = 'Baltisch';
$labels['cyrillic'] = 'Kyrillisch';
$labels['arabic'] = 'Arabisch';
$labels['greek'] = 'Griechisch';
$labels['hebrew'] = 'Hebräisch';
$labels['turkish'] = 'Türkisch';
$labels['nordic'] = 'Skandinavisch';
$labels['thai'] = 'Thailändisch';
$labels['celtic'] = 'Keltisch';
$labels['vietnamese'] = 'Vietnamesisch';
$labels['japanese'] = 'Japanisch';
$labels['korean'] = 'Koreanisch';
$labels['chinese'] = 'Chinesisch';
$labels['arialabeltopnav'] = 'Fensterkontrolle';
$labels['arialabeltasknav'] = 'Anwendungsbereiche';
$labels['arialabeltoolbar'] = 'Funktionsleiste';
$labels['arialabellistnav'] = 'Listen-Navigation';
$labels['arialabelactivetask'] = 'Aktive Anwendung';
$labels['arialabelmessagessearchfilter'] = 'Nachrichtenfilter';
$labels['arialabelmailsearchform'] = 'Nachrichtensuche';
$labels['arialabelcontactsearchform'] = 'Kontaktsuche';
$labels['arialabelmailquicksearchbox'] = 'Nachrichten-Sucheingabe';
$labels['arialabelquicksearchbox'] = 'Sucheingabe';
$labels['arialabelfoldersearchfilter'] = 'Ordnerfilter';
$labels['arialabelfoldersearchform'] = 'Ordnersuche';
$labels['arialabelfolderlist'] = 'Ordner-Auswahl';
$labels['arialabelmessagelist'] = 'Nachrichtenliste';
$labels['arialabelmailpreviewframe'] = 'Nachrichtenvorschau';
$labels['arialabelmailboxmenu'] = 'Ordneraktionen-Menü';
$labels['arialabellistselectmenu'] = 'Nachrichtenauswahl-Menü';
$labels['arialabelthreadselectmenu'] = 'Konversationsauswahl-Menü';
$labels['arialabelmessagelistoptions'] = 'Einstellungen zur Nachrichten-Anzeige und -sortierung';
$labels['arialabelmailimportdialog'] = 'Nachrichten-Import Dialog';
$labels['arialabelmessagenav'] = 'Nachrichten-Navigation';
$labels['arialabelmessagebody'] = 'Nachrichtentext';
$labels['arialabelmessageactions'] = 'Nachrichten-Aktionen';
$labels['arialabelcontactquicksearch'] = 'Kontaktsuche';
$labels['arialabelcontactsearchbox'] = 'Sucheingabe';
$labels['arialabelmessageheaders'] = 'Nachrichten-Kopfzeilen';
$labels['arialabelforwardingoptions'] = 'Weiterleitungsoptionen';
$labels['arialabelreplyalloptions'] = 'Beantwortungsoptionen';
$labels['arialabelmoremessageactions'] = 'Weitere Nachricht-Aktionen';
$labels['arialabelmorecontactactions'] = 'Weitere Kontakt-Aktionen';
$labels['arialabelmarkmessagesas'] = 'Ausgewählte Nachrichten markieren als...';
$labels['arialabelcomposeoptions'] = 'Nachrichten-Verfassungs-Optionen';
$labels['arialabelresponsesmenu'] = 'Gespeicherte Antworten Menü';
$labels['arialabelattachmentuploadform'] = 'Anhang hochladen (Dateiauswahl)';
$labels['arialabelattachmentmenu'] = 'Anhangsoptionen';
$labels['arialabelmailtomenu'] = 'Optionen für E-Mail-Adressen';
$labels['arialabelattachmentpreview'] = 'Dateivorschau';
$labels['ariasummarycomposecontacts'] = 'Kontakte und Adressgruppen zur Auswahl als Empfänger';
$labels['arialabelcontactexportoptions'] = 'Export-Optionen';
$labels['arialabelabookgroupoptions'] = 'Adressbuch/Adressgruppen-Optionen';
$labels['arialabelpreferencesform'] = 'Einstellungen (Formular)';
$labels['arialabelidentityeditfrom'] = 'Absender bearbeiten (Formular)';
$labels['arialabelresponseeditfrom'] = 'Antwort bearbeiten (Formular)';
$labels['arialabelsearchterms'] = 'Suchbegriffe';
$labels['arialabeldropactionmenu'] = 'Drag & Drop Aktionsmenü';
$labels['arialabelheadersmenu'] = 'Menü zum Hinzufügen von Empfängern (Kopfzeile) ';
$labels['arialabelimagetools'] = 'Bildwerkzeuge';
$labels['helplistnavigation'] = 'Tastatur-Navigation in der Liste';
$labels['helplistkeyboardnavigation'] = "Pfeiltasten Auf/Ab: Bewege Zeilenauswahl/Fokus.
Leertaste: Fokussierte Zeile auswählen.
Shift + Auf/Ab: Zeile darüber/darunter auswählen.
Ctrl + Leertaste: Fokussierte Zeile der Auswahl hinzufügen/entfernen.";
$labels['helplistkeyboardnavmessages'] = "Pfeiltasten Rechts/Links: Konversation auf-/zuklappen.
Eingabe: Ausgewählte/fokussierte Nachricht öffnen.
Löschen: Ausgewählte Nachricht in den Papierkorb verschieben resp. löschen.";
$labels['helplistkeyboardnavcontacts'] = "Eingabe: Ausgewählten Kontakt öffnen.";
localization/de_CH/messages.inc000064400000045476151727150570012532 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Fehlermeldung';
$messages['loginfailed']  = 'Login fehlgeschlagen';
$messages['cookiesdisabled'] = 'Ihr Browser akzeptiert keine Cookies';
$messages['sessionerror'] = 'Ihre Session ist ungültig oder abgelaufen';
$messages['cookiesmismatch'] = 'Cookiefehler erkannt. Bitte im Browser Cookies löschen.';
$messages['storageerror'] = 'Keine Verbindung zum IMAP Server';
$messages['servererror'] = 'Serverfehler!';
$messages['servererrormsg'] = 'Serverfehler: $msg';
$messages['accountlocked'] = 'Zuviele fehlgeschlagene Login-Versuche. Bitte versuchen Sie es später wieder.';
$messages['connerror'] = 'Verbindungsfehler (Server nicht erreichbar)!';
$messages['dberror'] = 'Datenbankfehler!';
$messages['dbconnerror'] = 'Kann keine Verbindung zum Server herstellen';
$messages['windowopenerror'] = 'Das Popup-Fenster wurde blockiert!';
$messages['requesttimedout'] = 'Zeitlimit überschritten';
$messages['errorreadonly'] = 'Die Aktion kann nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
$messages['errornoperm'] = 'Die Aktion kann nicht ausgeführt werden. Zugriff verweigert.';
$messages['erroroverquota'] = 'Die Aktion kann nicht ausgeführt werden. Keine freier Speicherplatz.';
$messages['erroroverquotadelete'] = 'Kein freier Speicherplatz. Drücken Sie SHIFT+DEL um die Nachricht zu löschen.';
$messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.';
$messages['invalidhost'] = 'Ungültiger Servername';
$messages['nomessagesfound'] = 'Keine Nachrichten in diesem Ordner';
$messages['loggedout'] = 'Sie haben die Sitzung erfolgreich beendet. Auf Wiedersehen!';
$messages['mailboxempty'] = 'Ordner ist leer';
$messages['nomessages'] = 'Keine Nachrichten';
$messages['refreshing'] = 'Aktualisiere...';
$messages['loading'] = 'Daten werden geladen...';
$messages['uploading'] = 'Datei wird hochgeladen...';
$messages['attaching'] = 'Datei wird angehängt...';
$messages['uploadingmany'] = 'Dateien werden hochgeladen...';
$messages['loadingdata'] = 'Daten werden geladen...';
$messages['checkingmail'] = 'Überprüfung auf neue Nachrichten...';
$messages['sendingmessage'] = 'Nachricht wird gesendet...';
$messages['messagesent'] = 'Nachricht erfolgreich gesendet';
$messages['savingmessage'] = 'Nachricht wird gespeichert...';
$messages['messagesaved'] = 'Nachricht als Entwurf gespeichert';
$messages['successfullysaved'] = 'Erfolgreich gespeichert';
$messages['savingresponse'] = 'Antwort wird gespeichert...';
$messages['deleteresponseconfirm'] = 'Wollen Sie diese Antwort wirklich löschen?';
$messages['nocontactselected'] = 'Sie haben noch keinen Kontakt ausgewählt.';
$messages['addedsuccessfully'] = 'Kontakt zum Adressbuch hinzugefügt';
$messages['contactexists'] = 'Es existiert bereits ein Kontakt mit dieser E-Mail-Adresse.';
$messages['contactnameexists'] = 'Es existiert bereits ein Kontakt mit diesem Namen';
$messages['blockedimages'] = 'Um Ihre Privatsphäre zu schützen, wurden externe Bilder blockiert.';
$messages['blockedresources'] = 'Um Ihre Privatsphäre zu schützen, wurden externe Ressourcen blockiert.';
$messages['suspiciousemail'] = 'Diese Nachricht enthält verdächtige E-Mail-Adressen, die möglicherweise betrügerisch sind.';
$messages['bccemail'] = 'Die weitergeleitete(n) Nachricht(en) enthalten vertrauliche Empfänger (BCC).';
$messages['bouncehint'] = 'Die Nachricht wird ohne Änderungen gesendet, das heisst. mit dem ursprünglichen Text, den Kopfzeilen und den Empfängern.';
$messages['encryptedmessage'] = 'Dies ist eine verschlüsselte Nachricht und kann leider nicht angezeigt werden.';
$messages['externalmessagedecryption'] = 'Dies ist eine verschlüsselte Nachricht und kann mit Ihrer Browser-Erweiterung entschlüsselt werden.';
$messages['nopubkeyfor'] = 'Kein gültiger öffentlicher Schlüssel für $email gefunden';
$messages['nopubkeyforsender'] = 'Kein gültiger öffentlicher Schlüssel für Ihre Absenderidentität gefunden. Möchten Sie die Nachricht nur für die Empfänger verschlüsseln?';
$messages['encryptnoattachments'] = 'Bereits hochgeladene Anhänge können nicht nachträglich verschlüsselt werden. Bitte fügen Sie sie erneut im Verschlüsselungs-Editor hinzu.';
$messages['searchpubkeyservers'] = 'Möchten Sie öffentliche Schlüsselserver nach den fehlenden Schlüsseln durchsuchen?';
$messages['encryptpubkeysfound'] = 'Die folgenden öffentlichen Schlüssel wurden gefunden:';
$messages['keyservererror'] = 'Fehler bei der Abfrage des Schlüssels vom Schlüsselserver.';
$messages['keyimportsuccess'] = 'Öffentlicher Schlüssel $key erfolgreich in den Schlüsselbund importiert.';
$messages['nocontactsfound'] = 'Keine Kontakte gefunden';
$messages['contactnotfound'] = 'Die gewählte Adresse wurde nicht gefunden';
$messages['contactsearchonly'] = 'Sie müssen das Suchformular nutzen, um die Kontakte vom ausgewählten Adressbuch zu sehen.';
$messages['sendingfailed'] = 'Versand der Nachricht fehlgeschlagen';
$messages['senttooquickly'] = 'Bitte warten Sie $sec Sekunde(n) vor dem Senden dieser Nachricht';
$messages['errorsavingsent'] = 'Beim Speichern der gesendeten Nachricht ist ein Fehler aufgetreten.';
$messages['errorsaving'] = 'Beim Speichern ist ein Fehler aufgetreten.';
$messages['errormoving'] = 'Nachricht(en) konnte(n) nicht verschoben werden.';
$messages['errorcopying'] = 'Nachticht(en) konnte(n) nicht kopiert werden.';
$messages['errordeleting'] = 'Nachricht(en) konnte(n) nicht gelöscht werden.';
$messages['errormarking'] = 'Nachricht(en) konnte(n) nicht markiert werden.';
$messages['alerttitle'] = 'Achtung';
$messages['confirmationtitle'] = 'Sind Sie sicher...';
$messages['deletecontactconfirm']  = 'Wollen Sie die ausgewählten Kontakte wirklich löschen?';
$messages['deletegroupconfirm']  = 'Wollen Sie die gewählte Gruppe wirklich löschen?';
$messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?';
$messages['deletefolderconfirm']  = 'Wollen Sie diesen Ordner wirklich löschen?';
$messages['movefolderconfirm']  = 'Wollen Sie diesen Ordner wirklich verschieben?';
$messages['purgefolderconfirm']  = 'Wollen Sie diesen Ordner wirklich leeren?';
$messages['contactdeleting'] = 'Kontakte werden gelöscht...';
$messages['groupdeleting'] = 'Gruppe wird gelöscht...';
$messages['folderdeleting'] = 'Order wird gelöscht...';
$messages['foldermoving'] = 'Ordner wird verschoben...';
$messages['foldersubscribing'] = 'Ordner wird abonniert...';
$messages['folderunsubscribing'] = 'Ordner wird abbestellt...';
$messages['formincomplete'] = 'Das Formular wurde nicht vollständig ausgefüllt.';
$messages['noemailwarning'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.';
$messages['nonamewarning']  = 'Bitte geben Sie einen Namen ein.';
$messages['nopagesizewarning'] = 'Bitte geben Sie die Einträge pro Seite an.';
$messages['nosenderwarning'] = 'Bitte geben Sie die E-Mail-Adresse des Senders an.';
$messages['recipientsadded'] = 'Empfänger erfolgreich hinzugefügt.';
$messages['norecipientwarning'] = 'Bitte geben Sie mindestens einen Empfänger an.';
$messages['disclosedrecipwarning'] = 'Alle Empfänger sehen die E-Mail Adressen der anderen Empfänger. Um deren Privatsphäre zu schützen, können Sie das Bcc-Feld verwenden.';
$messages['disclosedreciptitle'] = 'Zu viele öffentliche Empfänger';
$messages['nosubjectwarning']  = 'Die Betreffzeile ist leer. Möchten Sie jetzt einen Betreff eingeben?';
$messages['nosubjecttitle']  = 'Kein Betreff';
$messages['nobodywarning'] = 'Wollen Sie diese Nachricht ohne Inhalt senden?';
$messages['notsentwarning'] = 'Die Nachricht wurde noch nicht gesendet und hat nicht gespeicherte Änderungen. Möchten Sie die Änderungen verwerfen?';
$messages['restoresavedcomposedata'] = 'Eine zuvor verfasste aber nicht gesendete Nachricht wurde gefunden.\n\nBetreff: $subject\nGespeichert: $date\n\nWollen Sie diese Nachricht wiederherstellen?';
$messages['nosearchname'] = 'Bitte geben Sie einen Namen oder eine E-Mail-Adresse ein.';
$messages['notuploadedwarning'] = 'Es wurden noch nicht alle Dateien hochgeladen. Bitte warten oder Upload abbrechen.';
$messages['searchsuccessful'] = '$nr Nachrichten gefunden.';
$messages['contactsearchsuccessful'] = '$nr Kontakte gefunden.';
$messages['searchnomatch'] = 'Die Suche lieferte keine Treffer.';
$messages['searching'] = 'Suche...';
$messages['checking'] = 'Überprüfung...';
$messages['stillsearching'] = 'Suche läuft...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden.';
$messages['folderdeleted'] = 'Der Ordner wurde erfolgreich gelöscht.';
$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert.';
$messages['folderunsubscribed'] = 'Der Ordner wurde erfolgreich abbestellt.';
$messages['folderpurged'] = 'Ordner erfolgreich geleert.';
$messages['folderexpunged'] = 'Ordner erfolgreich komprimiert.';
$messages['deletedsuccessfully'] = 'Erfolgreich gelöscht.';
$messages['converting'] = 'Formatierung wird entfernt...';
$messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden.';
$messages['filelinkerror'] = 'Datei konnte nicht angehängt werden';
$messages['fileuploaderror'] = 'Der Dateiupload ist fehlgeschlagen.';
$messages['csvfilemismatch'] = 'Der Import von mehreren CSV-Dateien mit unterschiedlichen Spalten wird nicht unterstützt.';
$messages['filesizeerror'] = 'Die Datei überschreitet die maximale Grösse von $size.';
$messages['filecounterror'] = 'Sie können maximal $count Dateien auf einmal hochladen.';
$messages['msgsizeerror'] = 'Datei konnte nicht angehängt werden. Die maximale Grösse einer Nachricht ($size) wird damit überschritten.';
$messages['msgsizeerrorfwd'] = ' Maximalgrösse einer Nachricht ($size) überschritten. $num Nachricht(en) wurde nicht angehängt.';
$messages['copysuccess'] = '$nr Kontakt(e) erfolgreich kopiert.';
$messages['movesuccess'] = '$nr Kontakt(e) erfolgreich verschoben.';
$messages['copyerror'] = 'Kontakte konnten nicht kopiert werden.';
$messages['moveerror'] = 'Kontakte konnten nicht verschoben werden.';
$messages['sourceisreadonly'] = 'Das Adressverzeichnis kann nicht verändert werden.';
$messages['errorsavingcontact'] = 'Die Änderungen konnten nicht gespeichert werden.';
$messages['movingmessage'] = 'Nachrichten werden verschoben...';
$messages['copyingmessage'] = 'Nachrichten werden kopiert...';
$messages['copyingcontact'] = 'Kontakte werden kopiert...';
$messages['movingcontact'] = 'Kontakt(e) werden verschoben...';
$messages['deletingmessage'] = 'Nachrichten werden gelöscht...';
$messages['markingmessage'] = 'Nachrichten werden markiert...';
$messages['addingmember'] = 'Kontakte werden der Gruppe hinzugefügt...';
$messages['removingmember'] = 'Kontakte werden von der Gruppe entfernt...';
$messages['receiptsent'] = 'Lesebestätigung erfolgreich gesendet.';
$messages['errorsendingreceipt'] = 'Bestätigung konnte nicht gesendet werden.';
$messages['deleteidentityconfirm'] = 'Möchten Sie diese Identität wirklich löschen?';
$messages['nodeletelastidentity'] = 'Diese Identität kann nicht gelöscht werden, da dies die letzte ist.';
$messages['forbiddencharacter'] = 'Der Ordnername enthält ein ungültiges Zeichen.';
$messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren aus.';
$messages['addresswriterror'] = 'Das gewählte Adressbuch kann nicht verändert werden.';
$messages['contactaddedtogroup'] = 'Kontakte wurden dieser Gruppe hinzugefügt.';
$messages['contactremovedfromgroup'] = 'Kontakte wurden aus dieser Gruppe entfernt.';
$messages['nogroupassignmentschanged'] = 'Es wurde keine Gruppenzuweisung verändert.';
$messages['importwait'] = 'Daten werden importiert, bitte warten...';
$messages['importformaterror'] = 'Import fehlgeschlagen! Die hochgeladene Datei enthält keines der unterstützten Datenformate.';
$messages['importconfirm'] = '<b>Es wurden $inserted Adressen erfolgreich importiert</b>';
$messages['importconfirmskipped'] = '<b>$skipped bestehende Einträge wurden übersprungen</b>';
$messages['importmessagesuccess'] = '$nr Nachricht(n) erfolgreich importiert';
$messages['importmessageerror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist keine E-Mail-Nachricht oder Mailbox-Datei.';
$messages['opnotpermitted'] = 'Operation nicht erlaubt!';
$messages['nofromaddress'] = 'Fehlende E-Mail-Adresse in ausgewählter Identität.';
$messages['editorwarning'] = 'Ein Wechsel des Editors kann zu Verlust der Textformatierungen führen. Wollen Sie fortfahren?';
$messages['httpreceivedencrypterror'] = 'Ein gravierender Konfigurationsfehler ist aufgetreten. Kontaktieren Sie den Server-Administrator. <b>Die Nachricht wurde nicht gesendet!</b>';
$messages['smtpconnerror'] = 'SMTP Fehler ($code): Die Verbindung ist fehlgeschlagen.';
$messages['smtpautherror'] = 'SMTP Fehler ($code): Die Authentisierung ist fehlgeschlagen.';
$messages['smtpfromerror'] = 'SMTP Fehler ($code): Der Absender "$from" konnte nicht gesetzt werden ($msg).';
$messages['smtptoerror'] = 'SMTP Fehler ($code): Der Empfänger "$to" konnte nicht gesetzt werden ($msg).';
$messages['smtprecipientserror'] = 'SMTP Fehler: Die Empfängerliste konnte nicht verarbeitet werden.';
$messages['smtputf8error'] = 'SMTP Fehler: Der Server unterstützt keine Unicode-Zeichen in E-Mail-Adressen.';
$messages['smtpsizeerror'] = 'SMTP Fehler: Nachrichtengrösse übersteigt die Servergrenze ($limit)';
$messages['smtperror'] = 'SMTP Fehler: $msg';
$messages['emailformaterror'] = 'Ungültige E-Mail-Adresse: $email';
$messages['toomanyrecipients'] = 'Zuviele Empfänger angegeben. Reduzieren Sie die Empfängeradressen auf $max.';
$messages['maxgroupmembersreached'] = 'Die Anzahl Adressen in dieser Gruppe überschreitet das Maximum von $max.';
$messages['internalerror'] = 'Ein interner Fehler ist aufgetreten. Bitte versuchen Sie den Vorgang erneut.';
$messages['contactdelerror'] = 'Fehler beim Löschen.';
$messages['contactdeleted'] = 'Kontakt(e) erfolgreich gelöscht.';
$messages['contactrestoreerror'] = 'Die gelöschten Kontakte konnten nicht wiederhergestellt werden.';
$messages['contactrestored'] = 'Kontakte erfolgreich wiederhergestellt.';
$messages['groupdeleted'] = 'Gruppe erfolgreich gelöscht.';
$messages['grouprenamed'] = 'Gruppe erfolgreich umbenannt.';
$messages['groupcreated'] = 'Gruppe erfolgreich erstellt.';
$messages['savedsearchdeleted'] = 'Suche erfolgreich gelöscht.';
$messages['savedsearchdeleteerror'] = 'Suche konnte nicht gelöscht werden.';
$messages['savedsearchcreated'] = 'Suche erfolgreich gespeichert.';
$messages['savedsearchcreateerror'] = 'Suche konnte nicht gespeichert werden.';
$messages['messagedeleted'] = 'Nachricht(en) erfolgreich gelöscht.';
$messages['messagemoved'] = 'Nachricht(en) erfolgreich verschoben.';
$messages['messagemovedtotrash'] = 'Nachricht(en) erfolgreich in den Papierkorb verschoben.';
$messages['messagecopied'] = 'Nachricht(en) erfolgreich kopiert.';
$messages['messagemarked'] = 'Nachricht(en) erfolgreich markiert.';
$messages['autocompletechars'] = 'Geben Sie mind. $min Zeichen für die Auto-Vervollständigung ein.';
$messages['autocompletemore'] = 'Mehrere Treffer. Bitte geben Sie mehr Buchstaben ein.';
$messages['namecannotbeempty'] = 'Der Name darf nicht leer sein.';
$messages['nametoolong'] = 'Der Name ist zu lang.';
$messages['namedotforbidden'] = 'Ordnername darf nicht mit einem Punkt beginnen.';
$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert.';
$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt.';
$messages['invalidimageformat'] = 'Kein gültiges Bildformat.';
$messages['mispellingsfound'] = 'Es wurden noch Rechtschreibfehler in der Nachricht gefunden.';
$messages['parentnotwritable'] = 'Konnte den Ordner nicht erstellen/verschieben. Keine Berechtigung.';
$messages['messagetoobig'] = 'Die Nachricht ist zu gross und kann nicht verarbeitet werden.';
$messages['attachmentvalidationerror'] = 'Dieser Anhang ist verdächtig, weil sein Dateityp nicht mit dem in der Nachricht angegebenen Dateityp übereinstimmt. Wenn Sie dem Absender nicht vertrauen, sollten Sie ihn nicht im Browser öffnen, da er bösartige Inhalte enthalten kann. Erwartet: $expected; gefunden: $detected</em>';
$messages['noscriptwarning'] = 'Achtung! Dieser Webmail-Service erfordert Javascript. Um ihn zu benutzten aktivieren Sie Javascript in ihren Browser-Einstellungen.';
$messages['messageissent'] = 'Die Nachricht wurde bereits gesendet, aber noch nicht gespeichert. Jetzt speichern?';
$messages['errnotfound'] = 'Datei nicht gefunden';
$messages['errnotfoundexplain'] = 'Die angeforderte Ressource wurde nicht gefunden!';
$messages['errfailedrequest'] = 'Anfrage fehlgeschlagen';
$messages['errauthorizationfailed'] = 'Autorisierung fehlgeschlagen';
$messages['errunauthorizedexplain'] = 'Es konnte nicht bestätigt werden, dass Sie berechtigt sind, auf diesen Dienst zuzugreifen!';
$messages['errrequestcheckfailed'] = 'Anfrageprüfung fehlgeschlagen';
$messages['errcsrfprotectionexplain'] = "Zu Ihrer Sicherheit wird der Zugriff auf diese Ressource gegen CSRF geschützt.\nWenn Sie dies sehen, haben Sie sich wahrscheinlich vor dem Verlassen der Anwendung nicht abgemeldet.\n\nUm fortzufahren ist eine menschliche Interaktion erforderlich.";
$messages['errcontactserveradmin'] = 'Bitte kontaktieren Sie Ihren Server-Administrator.';
$messages['clicktoresumesession'] = 'Klicken Sie hier, um Ihre vorherige Sitzung fortzusetzen';
$messages['errcomposesession'] = 'Sitzungsfehler';
$messages['errcomposesessionexplain'] = 'Sitzungsdaten für den Nachrichtenentwurf nicht gefunden.';
$messages['clicktocompose'] = 'Klicken Sie hier, um eine neue Nachricht zu verfassen';
$messages['nosupporterror'] = 'Diese Funktion wird von Ihrem Webbrowser nicht unterstützt.';
$messages['siginserted'] = 'Signatur erfolgreich eingefügt.';
$messages['responseinserted'] = 'Antwort erfolgreich eingefügt.';
$messages['noresponsesavailable'] = 'Keine Antwort vorhanden';
$messages['listempty'] = 'Die Liste ist leer.';
$messages['listusebutton'] = 'Benutzen Sie den Erstellen-Button, um einen neuen Eintrag zu erfassen.';
$messages['keypaircreatesuccess'] = 'Neues Schlüsselpaar für $identity erfolgreich erstellt.';
$messages['emptyattachment'] = 'Dieser Anhang scheint leer zu sein.
Bitte erkundigen Sie sich bei der Person, die diesen gesendet hat.';
$messages['oauthloginfailed'] = ' OAuth-Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut.';
localization/el_GR/timezones.inc000064400000047210151727150570012752 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Αφρική';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantic';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europe';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athens';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussels';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Vienna';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warsaw';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/el_GR/labels.inc000064400000135363151727150570012206 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Καλώς ήρθατε στο $product';
$labels['username'] = 'Όνομα Χρήστη';
$labels['password'] = 'Κωδικός Πρόσβασης';
$labels['server'] = 'Εξυπηρετητής';
$labels['login'] = 'Σύνδεση';
$labels['oauthlogin'] = 'Σύνδεση μέσω $provider';
$labels['menu'] = 'Μενού';
$labels['logout'] = 'Αποσύνδεση';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Ρυθμίσεις';
$labels['addressbook'] = 'Επαφές';
$labels['darkmode'] = 'Σκοτεινή λειτουργία';
$labels['lightmode'] = 'Φωτεινή λειτουργία';
$labels['inbox'] = 'Εισερχόμενα';
$labels['drafts'] = 'Πρόχειρα';
$labels['sent'] = 'Απεσταλμένα';
$labels['trash'] = 'Κάδος Απορριμάτων';
$labels['junk'] = 'Ανεπιθύμητα';
$labels['show_real_foldernames'] = 'Εμφάνιση πραγματικών ονομάτων για ειδικούς φακέλους';
$labels['subject'] = 'Θέμα';
$labels['from'] = 'Αποστολέας';
$labels['sender'] = 'Αποστολέας';
$labels['to'] = 'Παραλήπτης';
$labels['cc'] = 'Κοινοποίηση';
$labels['bcc'] = 'Κρυφή κοινοποίηση';
$labels['replyto'] = 'Απάντηση στο';
$labels['followupto'] = 'Σε συνέχεια';
$labels['date'] = 'Ημερομηνία';
$labels['size'] = 'Μέγεθος';
$labels['priority'] = 'Πρoτεραιότητα';
$labels['organization'] = 'Οργανισμός';
$labels['readstatus'] = 'Κατάσταση ανάγνωσης';
$labels['listoptions'] = 'Κατάλογος επιλογών';
$labels['listoptionstitle'] = 'Λίστα επιλογών';
$labels['mailboxlist'] = 'Φάκελοι';
$labels['messagesfromto'] = 'Μηνύματα $from από $to έως $count';
$labels['threadsfromto'] = 'Θέματα $from έως $to από $count';
$labels['messagenrof'] = 'Μήνυμα $nr από $count';
$labels['fromtoshort'] = '$from – $to από $count';
$labels['copy'] = 'Αντιγραφή';
$labels['move'] = 'Μετακίνηση';
$labels['moveto'] = 'Μετακίνηση σε...';
$labels['copyto'] = 'Αντιγραφή σε...';
$labels['download'] = 'Λήψη';
$labels['open'] = 'Ανοιγμα';
$labels['showattachment'] = 'Εμφάνιση';
$labels['showanyway'] = 'Εμφάνιση';
$labels['filename'] = 'Όνομα αρχείου';
$labels['filesize'] = 'Μέγεθος αρχείου';
$labels['addtoaddressbook'] = 'Προσθήκη στο βιβλίο διευθύνσεων';
$labels['sun'] = 'Κυρ';
$labels['mon'] = 'Δευτ';
$labels['tue'] = 'Τρι';
$labels['wed'] = 'Τετ';
$labels['thu'] = 'Πεμπ';
$labels['fri'] = 'Παρ';
$labels['sat'] = 'Σαβ';
$labels['sunday'] = 'Κυριακή';
$labels['monday'] = 'Δευτέρα';
$labels['tuesday'] = 'Τρίτη';
$labels['wednesday'] = 'Τετάρτη';
$labels['thursday'] = 'Πέμπτη';
$labels['friday'] = 'Παρασκευή';
$labels['saturday'] = 'Σάββατο';
$labels['jan'] = 'Ιαν';
$labels['feb'] = 'Φεβ';
$labels['mar'] = 'Μαρ';
$labels['apr'] = 'Απρ';
$labels['may'] = 'Μαι';
$labels['jun'] = 'Ιουν';
$labels['jul'] = 'Ιουλ';
$labels['aug'] = 'Αυγ';
$labels['sep'] = 'Σεπ';
$labels['oct'] = 'Οκτ';
$labels['nov'] = 'Νοε';
$labels['dec'] = 'Δεκ';
$labels['longjan'] = 'Ιανουάριος';
$labels['longfeb'] = 'Φεβρουάριος';
$labels['longmar'] = 'Μάρτιος';
$labels['longapr'] = 'Απρίλιος';
$labels['longmay'] = 'Μαι';
$labels['longjun'] = 'Ιούνιος';
$labels['longjul'] = 'Ιούλιος';
$labels['longaug'] = 'Αύγουστος';
$labels['longsep'] = 'Σεπτέμβριος';
$labels['longoct'] = 'Οκτώβριος';
$labels['longnov'] = 'Νοέμβριος';
$labels['longdec'] = 'Δεκέμβριος';
$labels['today'] = 'Σήμερα';
$labels['refresh'] = 'Ανανέωση';
$labels['checkmail'] = 'Έλεγχος για νέα μηνύματα';
$labels['compose'] = 'Δημιουργία μηνύματος';
$labels['writenewmessage'] = 'Δημιουργία νέου μηνύματος';
$labels['reply'] = 'Απάντηση';
$labels['replytomessage'] = 'Απάντηση στον αποστολέα';
$labels['replytoallmessage'] = 'Απάντηση στη λίστα ή στον αποστολέα και όλους τους παραλήπτες';
$labels['replyall'] = 'Απάντηση όλων';
$labels['replylist'] = 'Λίστα παραληπτών απάντησης';
$labels['forward'] = 'Προώθηση';
$labels['forwardinline'] = 'Προώθηση με ενσωμάτωση';
$labels['forwardattachment'] = 'Προώθηση σαν συνημμένο';
$labels['forwardmessage'] = 'Προώθηση μηνύματος';
$labels['bouncemsg'] = 'Επαναποστολή (απαραδότου)';
$labels['bounce'] = 'Επαναποστολή';
$labels['deletemessage'] = 'Διαγραφή μηνύματος';
$labels['movemessagetotrash'] = 'Διαγραφή μηνύματος';
$labels['printmessage'] = 'Εκτύπωση μηνύματος';
$labels['previousmessage'] = 'Εμφάνιση του προηγούμενου μηνύματος';
$labels['firstmessage'] = 'Εμφάνιση του πρώτου μηνύματος';
$labels['nextmessage'] = 'Εμφάνιση του επόμενου μηνύματος';
$labels['lastmessage'] = 'Εμφάνιση του τελευταίου μηνύματος';
$labels['backtolist'] = 'Επιστροφή στη λίστα μηνυμάτων';
$labels['viewsource'] = 'Προβολή πηγαίου κώδικα';
$labels['mark'] = 'Μαρκάρισμα';
$labels['markmessages'] = 'Μαρκάρισμα μηνυμάτων';
$labels['markread'] = 'Ως αναγνωσμένα';
$labels['markunread'] = 'Ως μη-αναγνωσμένα';
$labels['markflagged'] = 'ως με σήμανση';
$labels['markunflagged'] = 'ως Χωρίς σήμανση';
$labels['markundeleted'] = 'Ως μη διεγραμμένο';
$labels['moreactions'] = 'Περισσότερες ενέργειες...';
$labels['markallread'] = 'Σημείωση όλων ως αναγνωσμένων';
$labels['folders-cur'] = 'Μόνο αυτός ο φάκελος';
$labels['folders-sub'] = 'Αυτός ο φάκελος και όλοι οι υποφάκελοι';
$labels['folders-all'] = 'Όλοι οι φάκελοι';
$labels['more'] = 'Περισσότερα';
$labels['back'] = 'Επιστροφή';
$labels['options'] = 'Επιλογές';
$labels['composeoptions'] = 'Επιλογές σύνταξης';
$labels['optionsandattachments'] = 'Επιλογές και συνημμένα';
$labels['actions'] = 'Ενέργειες';
$labels['first'] = 'Πρώτο';
$labels['last'] = 'Τελευταίο';
$labels['previous'] = 'Προηγούμενο';
$labels['next'] = 'Επόμενο';
$labels['select'] = 'Επιλέξτε';
$labels['selection'] = 'Επιλογή';
$labels['all'] = 'Όλα';
$labels['none'] = 'Κανένα';
$labels['currpage'] = 'Τρέχουσα σελίδα';
$labels['isread'] = 'Αναγνωσμένο';
$labels['unread'] = 'Μη αναγνωσμένο';
$labels['flagged'] = 'Σημειωμένο';
$labels['unflagged'] = 'Μη σημειωμένο';
$labels['unanswered'] = 'Αναπάντητο';
$labels['withattachment'] = 'Με επισύναψη';
$labels['deleted'] = 'Διεγραμμένο';
$labels['undeleted'] = 'Μη διεγραμμένο';
$labels['replied'] = 'Απαντημένο';
$labels['forwarded'] = 'Προωθημένο';
$labels['invert'] = 'Αναστροφή';
$labels['filter'] = 'Φίλτρο';
$labels['list'] = 'Λίστα';
$labels['threads'] = 'Θέματα';
$labels['expand-all'] = 'Ανάπτυξη όλων';
$labels['expand-unread'] = 'Ανάπτυξη των μη αναγνωσμένων';
$labels['collapse-all'] = 'Σύμπτυξη όλων';
$labels['threaded'] = 'Θεματοποιημένα';
$labels['showunread'] = 'Εμφάνιση αδιάβαστων μηνυμάτων';
$labels['autoexpand_threads'] = 'Ανάπτυξη θεματοποιημένων μηνυμάτων';
$labels['do_expand'] = 'όλα τα θέματα';
$labels['expand_only_unread'] = 'μόνο με τα μη αναγνωσμένα μηνύματα';
$labels['fromto'] = 'Από/Προς';
$labels['flag'] = 'Επισήμανση';
$labels['attachment'] = 'Συνημμένο αρχείο';
$labels['nonesort'] = 'Κανένα';
$labels['sentdate'] = 'Ημερ. Αποστολής';
$labels['arrival'] = 'Ημερ. Λήψης';
$labels['asc'] = 'αύξουσα';
$labels['desc'] = 'φθίνουσα';
$labels['listcolumns'] = 'Στήλες';
$labels['listsorting'] = 'Ταξινόμηση στηλών';
$labels['listorder'] = 'Σειρά ταξινόμησης';
$labels['listmode'] = 'Προβολή σε λίστα';
$labels['lmode'] = 'Λειτουργία λίστας';
$labels['layout'] = 'Διάταξη';
$labels['layoutwidescreen'] = 'Ευρεία οθόνη';
$labels['layoutdesktop'] = 'Επιφάνεια εργασίας';
$labels['layoutlist'] = 'Λίστα';
$labels['layoutwidescreendesc'] = 'Ευρεία οθόνη (3 στήλες)';
$labels['layoutdesktopdesc'] = 'Επιφάνεια εργασίας (ευρεία λίστα και προεπισκόπηση mail παρακάτω)';
$labels['layoutlistdesc'] = 'Λίστα (χωρίς προεπισκόπηση)';
$labels['folderactions'] = 'Ενέργειες στους φακέλους';
$labels['compact'] = 'Συμπίεση';
$labels['empty'] = 'Άδειασμα';
$labels['importmessages'] = 'Εισαγωγή μηνυμάτων';
$labels['mailimportdesc'] = 'Μπορείτε να μεταφορτώσετε αλληλογραφία χρησιμοποιώντας αρχεία <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ή <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Τα πολλαπλά αρχεία δύνανται να συμπιεστούν σε αρχεία zip';
$labels['quota'] = 'Χρήση δίσκου';
$labels['unknown'] = 'άγνωστο';
$labels['unlimited'] = 'απεριόριστο';
$labels['quotatype'] = 'Είδος περιορισμού';
$labels['quotatotal'] = 'Όριο';
$labels['quotaused'] = 'Χρησιμοποιημένα';
$labels['quotastorage'] = 'Χώρος στο δίσκο';
$labels['quotamessage'] = 'Πλήθος μηνυμάτων';
$labels['shortheaderdate'] = 'Στις $date';
$labels['shortheaderto'] = 'Προς τον/ην $to στις $date';
$labels['shortheaderfrom'] = 'Από τον/ην $from στις $date';
$labels['quicksearch'] = 'Γρήγορη Αναζήτηση';
$labels['searchplaceholder'] = 'Αναζήτηση...';
$labels['resetsearch'] = 'Επαναφορά Αναζήτησης';
$labels['searchmod'] = 'Aλλαγή αναζήτησης';
$labels['msgtext'] = 'Σε όλο το μήνυμα';
$labels['body'] = 'Σώμα';
$labels['type'] = 'Τυπος';
$labels['namex'] = 'όνομα';
$labels['searchscope'] = 'Εύρος';
$labels['currentfolder'] = 'Τρέχων φάκελος';
$labels['subfolders'] = 'Αυτός και υποφάκελοι';
$labels['allfolders'] = 'Όλοι οι φάκελοι';
$labels['searchinterval-1W'] = 'παλιότερο από μια εβδομάδα';
$labels['searchinterval-1M'] = 'παλιότερο από ενα μήνα';
$labels['searchinterval-1Y'] = 'παλιότερο από ένα έτος';
$labels['searchinterval1W'] = 'νεότερο από μια εβδομάδα';
$labels['searchinterval1M'] = 'νεότερο από ένα μήνα';
$labels['searchinterval1Y'] = 'νεότερο από ένα έτος';
$labels['openinextwin'] = 'Άνοιγμα σε νέο παράθυρο';
$labels['emlsave'] = 'Λήψη αρχείου (.eml)';
$labels['changeformattext'] = 'Εμφάνιση σε μορφή απλού κειμένου';
$labels['changeformathtml'] = 'Εμφάνιση σε μορφή HTML';
$labels['editasnew'] = 'Επεξεργασία σαν νέο';
$labels['send'] = 'Αποστολή';
$labels['sendmessage'] = 'Αποστολή μηνύματος';
$labels['savemessage'] = 'Αποθήκευση ως πρόχειρο';
$labels['addattachment'] = 'Επισύναψη αρχείου';
$labels['charset'] = 'Κωδικοποίηση χαρακτήρων';
$labels['editortype'] = 'Είδος επεξεργαστή κειμένου';
$labels['returnreceipt'] = 'Αναφορά Παράδοσης';
$labels['dsn'] = 'Κατάσταση αναφοράς παράδοσης';
$labels['keepformatting'] = 'Διατήρηση μορφοποίησης';
$labels['mailreplyintro'] = 'Στις $date, $sender έγραψε:';
$labels['originalmessage'] = 'Αρχικό μήνυμα';
$labels['selectimage'] = 'Επιλογή εικόνας';
$labels['addimage'] = 'Προσθήκη εικόνας';
$labels['selectmedia'] = 'Επιλογή ταινίας';
$labels['addmedia'] = 'Προσθήκη ταινίας';
$labels['encrypt'] = 'Κρυπτογράφηση';
$labels['encryptmessage'] = 'Κρυπτογράφηση μηνύματος';
$labels['encryptmessagemailvelope'] = 'Κρυπτογράφηση μηνύματος με το Mailvelope';
$labels['importpubkeys'] = 'Εισαγωγή δημόσιων κλειδιών';
$labels['encryptedsendialog'] = 'Αποστέλλεται κρυπτογραφημένο μήνυμα';
$labels['encryptandsign'] = 'Κρυπτογράφηση και υπογραφή';
$labels['keyid'] = 'Ταυτότητα κλειδιού';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Έχει λήξει';
$labels['keyrevoked'] = 'Έχει αποσυρθεί';
$labels['bccinstead'] = 'Χρήση Bcc';
$labels['addheader'] = 'Προσθήκη παραλήπτη (κεφαλίδα)';
$labels['insert'] = 'Εισαγωγή';
$labels['insertcontact'] = 'Προσθήκη επαφής(-ων)';
$labels['recipient'] = 'Παραλήπτης';
$labels['recipientedit'] = 'Επεξεργασία παραληπτών';
$labels['editidents'] = 'Επεξεργασία ταυτοτήτων';
$labels['spellcheck'] = 'Συλλαβισμός';
$labels['checkspelling'] = 'Έλεγχος ορθογραφίας';
$labels['resumeediting'] = 'Συνέχεια επεξεργασίας';
$labels['revertto'] = 'Επαναφορά στο';
$labels['restore'] = 'Επαναφορά';
$labels['restoremessage'] = 'Επαναφορά μηνύματος;';
$labels['ignore'] = 'Παράβλεψη';
$labels['responses'] = 'Απαντήσεις';
$labels['insertresponse'] = 'Εισάγετε μια απάντηση';
$labels['manageresponses'] = 'Διαχείριση απαντήσεων';
$labels['newresponse'] = 'Δημιουργία νέας απάντησης';
$labels['addresponse'] = 'Προσθήκη απάντησης';
$labels['editresponse'] = 'Μεταβολή απάντησης';
$labels['editresponses'] = 'Μεταβολή απαντήσεων';
$labels['responsename'] = 'Όνομα';
$labels['responsetext'] = 'Κείμενο απάντησης';
$labels['attach'] = 'Επισύναψη';
$labels['attachments'] = 'Συνημμένα';
$labels['upload'] = 'Φόρτωση';
$labels['uploadprogress'] = '$percent ($current από $total)';
$labels['close'] = 'Κλείσιμο';
$labels['messageoptions'] = 'Επιλογές μηνύματος';
$labels['togglecomposeoptions'] = 'Εναλλαγή επιλογών σύνθεσης';
$labels['attachmentrename'] = 'Μετονομασία συνημμένου';
$labels['low'] = 'Χαμηλή';
$labels['lowest'] = 'Χαμηλότερη';
$labels['normal'] = 'Κανονική';
$labels['high'] = 'Υψηλή';
$labels['highest'] = 'Μέγιστη δυνατή';
$labels['nosubject'] = '(χωρίς θέμα)';
$labels['showimages'] = 'Προβολή εικόνων';
$labels['allow'] = 'Να επιτρέπεται';
$labels['alwaysshow'] = 'Να προβάλλονται πάντα οι εικόνες που αποστέλλονται από τον $sender';
$labels['alwaysallow'] = 'Να επιτρέπεται πάντα από τον/την $sender';
$labels['isdraft'] = 'Αυτό το μήνυμα έχει σημανθεί σαν πρόχειρο';
$labels['andnmore'] = '$nr περισσότερα...';
$labels['details'] = 'Λεπτομέρειες';
$labels['summary'] = 'Συνοπτικά';
$labels['headers'] = 'Κεφαλίδες';
$labels['allheaders'] = 'Όλες οι κεφαλίδες...';
$labels['togglemoreheaders'] = 'Εμφάνιση περισσότερων κεφαλίδων';
$labels['togglefullheaders'] = 'Εμφάνιση ακατέργαστων κεφαλίδων μηνύματος';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Απλό κείμενο';
$labels['savesentmessagein'] = 'Αποθήκευση απεσταλμένου στο φάκελο';
$labels['dontsave'] = 'να μην αποθηκευθεί';
$labels['maxuploadsize'] = 'Το μέγιστο επιτρεπόμενο μέγεθος αρχείου είναι $size';
$labels['addcc'] = 'Προσθήκη Παραλήπτη Κοινοποίησης';
$labels['addbcc'] = 'Προσθήκη Παραλήπτη Κρυφής Κοινοποίησης';
$labels['addreplyto'] = 'Προσθήκη Απάντησης-Στο';
$labels['addfollowupto'] = 'Προσθήκη Σε συνέχεια του';
$labels['sendreceipt'] = 'Αποστολή αποδεικτικού ανάγνωσης;';
$labels['mdnrequest'] = 'Ο αποστολέας αυτού του μηνύματος, έχει ζητήσει να ειδοποιηθεί όταν θα το διαβάσετε. Θέλετε να επιτρέψετε την ενημέρωσή του;';
$labels['receiptread'] = 'Αναφορά παράδοσης (διαβάστε την)';
$labels['yourmessage'] = 'Αυτό είναι μια αναφορά παράδοσης για το μήνυμά σας';
$labels['receiptnote'] = 'Σημείωση: Αυτή η αναφορά επιβεβαιώνει μόνο ότι το μήνυμά σας εμφανίστηκε στον υπολογιστή του παραλήπτη. Δεν επιβεβαιώνει ότι ο παραλήπτης έχει διαβάσει ή έχει κατανοήσει το περιεχόμενό του.';
$labels['sendalwaysto'] = 'Να αποστέλλεται πάντα στον/στην $email';
$labels['zoomin'] = 'Μεγέθυνση';
$labels['zoomout'] = 'Σμίκρυνση';
$labels['rotate'] = 'Περιστροφή';
$labels['increaseimage'] = 'Αύξηση μεγέθους εικόνας';
$labels['decreaseimage'] = 'Σμίκρυνση μεγέθους εικόνας';
$labels['rotateimage'] = 'Περιστροφή εικόνας';
$labels['showtools'] = 'Εμφάνιση εργαλείων εικόνας';
$labels['hidetools'] = 'Απόκρυψη εργαλείων εικόνας';
$labels['name'] = 'Εμφανιζόμενο όνομα';
$labels['firstname'] = 'Όνομα';
$labels['surname'] = 'Επώνυμο';
$labels['middlename'] = 'Πατρώνυμο';
$labels['nameprefix'] = 'Πρόθεμα';
$labels['namesuffix'] = 'Κατάληξη';
$labels['nickname'] = 'Ψευδώνυμο';
$labels['jobtitle'] = 'Τίτλος εργασίας';
$labels['department'] = 'Τμήμα';
$labels['gender'] = 'Φύλο';
$labels['maidenname'] = 'Πατρώνυμο';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Τηλέφωνο';
$labels['address'] = 'Διεύθυνση';
$labels['street'] = 'Οδός';
$labels['locality'] = 'Πόλη';
$labels['zipcode'] = 'ΤΚ';
$labels['region'] = 'Νομός';
$labels['country'] = 'Χώρα';
$labels['birthday'] = 'Ημερ/νία Γέννησης';
$labels['anniversary'] = 'Επέτειος';
$labels['website'] = 'Ιστοσελίδα';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Σημειώσεις';
$labels['male'] = 'άνδρας';
$labels['female'] = 'γυναίκα';
$labels['manager'] = 'Υπεύθυνος';
$labels['assistant'] = 'Υπάλληλος';
$labels['spouse'] = 'Σύζυγος';
$labels['allfields'] = 'Όλα τα πεδία';
$labels['search'] = 'Αναζήτηση';
$labels['searchresult'] = 'Αποτελέσματα αναζήτησης';
$labels['advsearch'] = 'Προηγμένη Αναζήτηση';
$labels['advanced'] = 'Προχωρημένες ρυθμίσεις';
$labels['other'] = 'Άλλα';
$labels['printcontact'] = 'Εκτύπωση επαφής';
$labels['qrcode'] = 'QR Code';
$labels['typehome'] = 'Οικία';
$labels['typework'] = 'Εργασία';
$labels['typeother'] = 'Άλλα';
$labels['typemobile'] = 'Κινητό';
$labels['typemain'] = 'Κύρια';
$labels['typehomefax'] = 'Φαξ οικίας';
$labels['typeworkfax'] = 'Φαξ εργασίας';
$labels['typecar'] = 'Αυτοκίνητο';
$labels['typepager'] = 'Βομβητής';
$labels['typevideo'] = 'Βίντεο';
$labels['typeassistant'] = 'Υπάλληλος';
$labels['typehomepage'] = 'Αρχική Σελίδα';
$labels['typeblog'] = 'Ιστολόγιο';
$labels['typeprofile'] = 'Προφίλ';
$labels['addfield'] = 'Προσθήκη πεδίου...';
$labels['addcontact'] = 'Προσθήκη επαφής';
$labels['editcontact'] = 'Επεξεργασία επαφής';
$labels['contacts'] = 'Επαφές';
$labels['contactproperties'] = 'Ιδιότητες επαφών';
$labels['contactnameandorg'] = 'Όνομα και οργανισμός';
$labels['personalinfo'] = 'Προσωπικές πληροφορίες';
$labels['personal'] = 'Προσωπικά';
$labels['contactphoto'] = 'Φωτογραφία επαφής';
$labels['edit'] = 'Επεξεργασία';
$labels['cancel'] = 'Ακύρωση';
$labels['save'] = 'Αποθήκευση';
$labels['delete'] = 'Διαγραφή';
$labels['discard'] = 'Διαγραφή';
$labels['continue'] = 'Συνέχεια';
$labels['ok'] = 'OK';
$labels['rename'] = 'Μετονομασία';
$labels['addphoto'] = 'Προσθήκη';
$labels['replacephoto'] = 'Αντικατάσταση';
$labels['uploadphoto'] = 'Φόρτωση εικόνας';
$labels['choosefile'] = 'Επιλέξτε αρχείο...';
$labels['choosefiles'] = 'Επιλέξτε αρχεία...';
$labels['browse'] = 'Περιήγηση';
$labels['newcontact'] = 'Δημιουργία νέας επαφής';
$labels['deletecontact'] = 'Διαγραφή επιλεγμένων επαφών';
$labels['composeto'] = 'Σύνθεση μηνύματος προς';
$labels['contactsfromto'] = 'Επαφή $from από $to έως $count';
$labels['print'] = 'Εκτύπωση';
$labels['export'] = 'Εξαγωγή';
$labels['exportall'] = 'Εξαγωγή όλων';
$labels['exportsel'] = 'Εξαγωγή επιλεγμένων';
$labels['exportvcards'] = 'Εξαγωγή επαφών σε vCard';
$labels['newgroup'] = 'Δημιουργία νέας ομάδας';
$labels['addgroup'] = 'Προσθήκη ομάδας';
$labels['grouprename'] = 'Μετονομασία ομάδας';
$labels['groupdelete'] = 'Διαγραφή ομάδας';
$labels['groupassign'] = 'Εκχώρηση στην ομάδα...';
$labels['groupremove'] = 'Κατάργηση από την ομάδα...';
$labels['groupremoveselected'] = 'Αφαίρεση επιλεγμένων επαφών από την ομάδα';
$labels['uponelevel'] = 'Πάνω ένα επίπεδο';
$labels['previouspage'] = 'Εμφάνιση προηγούμενης σελίδας';
$labels['firstpage'] = 'Εμφάνιση της πρώτης σελίδας';
$labels['nextpage'] = 'Εμφάνιση επόμενης σελίδας';
$labels['lastpage'] = 'Εμφάνιση της τελευταίας σελίδας';
$labels['group'] = 'Ομάδα';
$labels['groups'] = 'Ομάδες';
$labels['listgroup'] = 'Μέλη της ομάδας λίστας';
$labels['personaladrbook'] = 'Προσωπικές Διευθύνσεις';
$labels['searchsave'] = 'Αποθήκευση αναζήτησης';
$labels['searchdelete'] = 'Διαγραφή αποθηκευμένης αναζήτησης';
$labels['import'] = 'Εισαγωγή';
$labels['importcontacts'] = 'Εισαγωγή επαφών';
$labels['importfromfile'] = 'Εισαγωγή από αρχείο';
$labels['importtarget'] = 'Προσθήκη επαφών σε';
$labels['importreplace'] = 'Αντικατάσταση όλου του βιβλίου διευθύνσεων';
$labels['importgroups'] = 'Εισαγωγή αναθέσεων ομάδων';
$labels['importgroupsall'] = 'Όλα (δημιουργία ομάδων αν είναι απαραίτητο)';
$labels['importgroupsexisting'] = 'Μόνο για υπάρχουσες ομάδες';
$labels['importdesc'] = 'Μπορείτε να μεταφορτώσετε επαφές από ένα υπάρχον ευρετήριο.<br/>Προς το παρόν υποστηρίζουμε την εισαγωγή διευθύνσεων με μορφή <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ή CSV (διαχωρισμένες με κόμμα).';
$labels['importmapdesc'] = 'Επιβεβαιώστε ότι οι παρακάτω πληροφορίες αντιστοίχισης πεδίων είναι σωστές πριν προχωρήσετε στην εισαγωγή δεδομένων CSV (διαχωρισμένα με κόμμα).';
$labels['fieldnotmapped'] = 'Πεδίο χωρίς αντιστοίχιση (να μην εισαχθεί)';
$labels['skipheader'] = 'Να μην εισαχθεί η πρώτη γραμμή (κεφαλίδα)';
$labels['done'] = 'Ολοκληρώθηκε';
$labels['settingsfor'] = 'Ρυθμίσεις για';
$labels['about'] = 'Σχετικά';
$labels['preferences'] = 'Προτιμήσεις';
$labels['userpreferences'] = 'Προτιμήσεις χρήστη';
$labels['editpreferences'] = 'Επεξεργασία προτιμήσεων χρήστη';
$labels['identities'] = 'Ταυτότητες';
$labels['manageidentities'] = 'Διαχείριση ταυτοτήτων';
$labels['newidentity'] = 'Δημιουργία νέας ταυτότητας';
$labels['addidentity'] = 'Προσθήκη ταυτότητας';
$labels['editidentity'] = 'Επεξεργασία ταυτότητας';
$labels['identityencryption'] = 'Κρυπτογράφηση';
$labels['preferhtml'] = 'Προβολή σε HTML';
$labels['defaultcharset'] = 'Προεπιλεγμένη κωδικοποίηση χαρακτήρων';
$labels['htmlmessage'] = 'Μήνυμα σε μορφή HTML';
$labels['messagepart'] = 'Μέρος';
$labels['digitalsig'] = 'Ψηφιακή Υπογραφή';
$labels['dateformat'] = 'Μορφή ημερομηνίας';
$labels['timeformat'] = 'Μορφή ώρας';
$labels['prettydate'] = 'Κομψή ημερ/νία';
$labels['setdefault'] = 'Ορισμός ως προεπιλογή';
$labels['autodetect'] = 'Αυτόματα';
$labels['language'] = 'Γλώσσα';
$labels['timezone'] = 'Ζώνη Ώρας';
$labels['pagesize'] = 'Γραμμές ανά σελίδα';
$labels['signature'] = 'Υπογραφή';
$labels['dstactive'] = 'Θερινή ώρα';
$labels['showinextwin'] = 'Άνοιγμα μηνύματος σε νέο παράθυρο';
$labels['composeextwin'] = 'Σύνθεση μηνύματος σε νέο παράθυρο';
$labels['htmleditor'] = 'Δημιουργία μηνύματος σε μορφή HTML';
$labels['htmlonreply'] = 'μόνο σε απάντηση μηνύματος μορφής HTML';
$labels['htmlonreplyandforward'] = 'σε προώθηση ή σε απάντηση σε HTML μήνυμα';
$labels['htmlsignature'] = 'Υπογραφή HTML';
$labels['showemail'] = 'Εμφάνιση διεύθυνσης e-mail με το εμφανιζόμενο όνομα';
$labels['previewpane'] = 'Εμφάνιση προεπισκόπησης';
$labels['skin'] = 'Θέμα εμφάνισης';
$labels['logoutclear'] = 'Άδειασμα του κάδου στην έξοδο';
$labels['logoutcompact'] = 'Συμπίεση φακέλου εισερχομένων στην έξοδο';
$labels['uisettings'] = 'Περιβάλλον χρήστη';
$labels['serversettings'] = 'Ρυθμίσεις διακομιστή';
$labels['mailboxview'] = 'Προβολή Μηνυμάτων';
$labels['mdnrequests'] = 'Όταν ο αποστολέας έχει ζητήσει αναφορά παράδοσης';
$labels['askuser'] = 'ρώτησέ με';
$labels['autosend'] = 'στείλε αυτόματα την απόδειξη παραλαβής';
$labels['autosendknown'] = 'στείλε αυτόματα αποδείξεις παραλαβής σε όσους έχω στις επαφές, για τους άλλους ρώτα με';
$labels['autosendknownignore'] = 'στείλε αυτόματα αποδείξεις παραλαβής σε όσους έχω στις επαφές, για τους άλλους καμιά ενέργεια';
$labels['autosendtrusted'] = 'αποστολή απόδειξης σε έμπιστους αποστολείς, αλλιώς να ερωτηθώ';
$labels['autosendtrustedignore'] = 'αποστολή απόδειξης σε έμπιστους αποστολείς, αλλιώς να αγνοηθεί';
$labels['ignorerequest'] = 'παράβλεψη αιτήματος';
$labels['readwhendeleted'] = 'Κατά τη διαγραφή του μηνύματος, μαρκάρισέ το σαν αναγνωσμένο';
$labels['flagfordeletion'] = 'Αντί να το διαγράψεις, απλά και μόνο σημείωσέ το';
$labels['skipdeleted'] = 'Να μην εμφανίζονται τα διαγραμμένα μηνύματα';
$labels['deletealways'] = 'αν η μετακίνηση στον κάδο αποτύχει, διέγραψέ τα';
$labels['deletejunk'] = 'Άμεση διαγραφή μηνυμάτων στα Ανεπιθύμητα';
$labels['showremoteimages'] = 'Να εμφανίζονται οι εικόνες που έχουν αποσταλεί σε συνδέσμους';
$labels['allowremoteresources'] = 'Να επιτρέπονται οι απομακρυσμένοι πόροι (εικόνες, ύφος)';
$labels['fromknownsenders'] = 'από γνωστούς αποστολείς';
$labels['fromtrustedsenders'] = 'από έμπιστους αποστολείς';
$labels['frommycontacts'] = 'από τις επαφές μου';
$labels['always'] = 'πάντα';
$labels['alwaysbutplain'] = 'πάντα, εκτός όταν απαντάω σε απλό κείμενο';
$labels['showinlineimages'] = 'Οι συνημμένες εικόνες να προβάλλονται στο τέλος του μηνήματος';
$labels['autosavedraft'] = 'Να γίνεται αυτόματη αποθήκευση σαν πρόχειρο';
$labels['everynminutes'] = 'κάθε $n λεπτό/α';
$labels['refreshinterval'] = 'Επαναφόρτωση (έλεγχος για νέα μηνύματα, κλπ.)';
$labels['never'] = 'ποτέ';
$labels['immediately'] = 'άμεσα';
$labels['messagesdisplaying'] = 'Προβολή Μηνυμάτων';
$labels['messagescomposition'] = 'Δημιουργία Μηνυμάτων';
$labels['mimeparamfolding'] = 'Ονόματα συνημμένων αρχείων';
$labels['2231folding'] = 'Full RFC 2231 (μορφή Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (μορφή MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (άλλη μορφή)';
$labels['force7bit'] = 'Να γίνεται χρήση της κωδικοποίησης MIME για τους χαρακτήρες 8-bit';
$labels['savelocalstorage'] = "Προσωρινή αποθήκευση στην τοπική αποθήκη του περιηγητή";
$labels['advancedoptions'] = 'Προχωρημένες επιλογές';
$labels['toggleadvancedoptions'] = 'Εναλλαγή προχωρημένων επιλογών';
$labels['focusonnewmessage'] = 'Τα νέα μηνύματα να επιλέγονται αυτόματα';
$labels['checkallfolders'] = 'Να γίνεται έλεγχος σε όλους τους φακέλους για νέα μηνύματα';
$labels['displaynext'] = 'Εμφάνιση της επόμενης καταχώρησης μετά τη διαγραφή/μετακίνηση';
$labels['defaultfont'] = 'Προεπιλεγμένη γραμματοσειρά για τα μηνύματα μορφής HTML';
$labels['mainoptions'] = 'Βασικές επιλογές';
$labels['browseroptions'] = 'Επιλογές περιηγητή';
$labels['section'] = 'Ενότητα';
$labels['maintenance'] = 'Συντήρηση';
$labels['newmessage'] = 'Νέο Μήνυμα';
$labels['signatureoptions'] = 'Επιλογές υπογραφής';
$labels['whenreplying'] = 'Στις απαντήσεις';
$labels['replyempty'] = 'χωρίς παράθεση του αρχικού μηνύματος';
$labels['replytopposting'] = 'το νέο μήνυμα να είναι πάνω από το αρχικό';
$labels['replytoppostingnoindent'] = 'εμφάνιση του νέου μηνύματος πάνω από το αρχικό (χωρίς εσοχή)';
$labels['replybottomposting'] = 'το νέο μήνυμα να είναι κάτω από το αρχικό';
$labels['replyremovesignature'] = 'Όταν το μήνυμα είναι απάντηση, να αφαιρείται η υπογραφή του αρχικού μηνύματος';
$labels['autoaddsignature'] = 'Η υπογραφή να προστίθεται αυτόματα';
$labels['newmessageonly'] = 'μόνο στα νέα μηνύματα';
$labels['replyandforwardonly'] = 'μόνο στις απαντήσεις και προωθήσεις';
$labels['insertsignature'] = 'Προσθήκη υπογραφής';
$labels['sigbelow'] = 'Τοποθέτηση υπογραφής κάτω από το παρατιθέν μήνυμα';
$labels['sigseparator'] = 'Εξαναγκασμός προκαθορισμένου διαχωριστικού στις υπογραφές';
$labels['automarkread'] = 'Επισήμανση ως αναγνωσμένα';
$labels['afternseconds'] = 'μετά από $n δευτερόλεπτα';
$labels['reqmdn'] = 'Να γίνεται πάντα αίτηση για αναφορά απάντησης';
$labels['reqdsn'] = 'Να γίνεται πάντα αίτηση για αναφορά παράδοσης';
$labels['replysamefolder'] = 'Τα μηνύματα που είναι απαντήσεις να τοποθετούνται σε ξεχωριστό φάκελο';
$labels['defaultabook'] = 'Προκαθορισμένο βιβλίο διευθύνσεων';
$labels['autocompletesingle'] = 'Να μην χρησιμοποιούνται οι εναλλακτικές διευθύνσεις κατά την αυτόματη συμπλήρωση';
$labels['listnamedisplay'] = 'Εμφάνιση επαφών ως';
$labels['contactformmode'] = 'Μορφή φόρμας επικοινωνίας';
$labels['privatemode'] = 'Προσωπικό (Οικίας)';
$labels['businessmode'] = 'Επαγγελματικό (Εργασίας)';
$labels['collectedaddresses'] = 'Συλλεχθείσες διευθύνσεις';
$labels['collectedrecipients'] = 'Συλλεγέντες Παραλήπτες';
$labels['collectedrecipientsopt'] = 'Αποθήκευση παραληπτών εξερχομένων email σε';
$labels['collectedsendersopt'] = 'Αποθήκευση έμπιστων αποστολέων σε';
$labels['trustedsenders'] = 'Έμπιστοι Αποστολείς';
$labels['spellcheckbeforesend'] = 'Να γίνεται πάντα έλεγχος ορθογραφίας πριν την αποστολή του μηνύματος';
$labels['spellcheckoptions'] = 'Επιλογές Ορθογραφικού ελέγχου';
$labels['spellcheckignoresyms'] = 'Οι λέξεις που περιέχουν σύμβολα να αγνοούνται';
$labels['spellcheckignorenums'] = 'Οι λέξεις που περιέχουν αριθμούς να αγνοούνται';
$labels['spellcheckignorecaps'] = 'Οι λέξεις γραμμένες με ΚΕΦΑΛΑΙΑ να αγνοούνται';
$labels['addtodict'] = 'Προσθήκη στο λεξικό';
$labels['mailtoprotohandler'] = 'Καταχώρηση διαχείρισης πρωτοκόλλου δεσμών mailto:';
$labels['standardwindows'] = 'Χειριστείτε τα αναδυόμενα παράθυρα ως πρότυπο των Windows';
$labels['forwardmode'] = 'Προώθηση μηνυμάτων';
$labels['inline'] = 'με εσνωμάτωση';
$labels['asattachment'] = 'σαν επισύναψη';
$labels['replyallmode'] = 'Προεπιλεγμένη ενέργεια του κουμπιού [Απάντηση σε όλους]';
$labels['replyalldefault'] = 'απάντηση σε όλους';
$labels['replyalllist'] = 'Απάντηση μόνο σε λίστα e-mail (αν υπάρχει)';
$labels['allmessages'] = 'όλα τα μηνύματα';
$labels['olderxdays'] = 'άνω των $x ημερών';
$labels['folder'] = 'Φάκελος';
$labels['folders'] = 'Φάκελοι';
$labels['foldername'] = 'Όνομα φακέλου';
$labels['subscribed'] = 'Εγγεγραμμένος';
$labels['messagecount'] = 'Μηνύματα';
$labels['create'] = 'Δημιουργία';
$labels['createfolder'] = 'Δημιουργία νέου φακέλου';
$labels['managefolders'] = 'Διαχείριση φακέλων';
$labels['specialfolders'] = 'Ειδικοί Φάκελοι';
$labels['properties'] = 'Ιδιότητες';
$labels['folderproperties'] = 'Ιδιότητες φακέλου';
$labels['parentfolder'] = 'Γονικός φάκελος';
$labels['location'] = 'Τοποθεσία';
$labels['info'] = 'Πληροφορίες';
$labels['getfoldersize'] = 'Κάντε κλικ εδώ για να δείτε το μέγεθος του φακέλου';
$labels['changesubscription'] = 'Κάντε κλικ εδώ για να αλλάξετε τη συνδρομή σας';
$labels['foldertype'] = 'Τύπος φακέλου';
$labels['personalfolder'] = 'Προσωπικός φάκελος';
$labels['otherfolder'] = 'Φάκελοι άλλων χρηστών';
$labels['sharedfolder'] = 'Κοινόχρηστος φάκελος';
$labels['findfolders'] = 'Εύρεση φακέλων';
$labels['findcontacts'] = 'Εύρεση επαφών';
$labels['findmail'] = 'Εύρεση αλληλογραφίας';
$labels['namespace.personal'] = 'Προσωπικά';
$labels['namespace.other'] = 'Άλλοι χρήστες';
$labels['namespace.shared'] = 'Διαμοιρασμένος';
$labels['dualuselabel'] = 'Δύναται να περιέχει μόνο';
$labels['dualusemail'] = 'μηνύματα';
$labels['dualusefolder'] = 'φάκελοι';
$labels['generate'] = 'Δημιουργία';
$labels['encryptioncreatekey'] = 'Δημιουργία νέου ζεύγους κλειδιού';
$labels['openmailvelopesettings'] = 'Άνοιγμα Ρυθμίσεων Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Έχετε $nr παρόμοια ιδιωτικά κλειδιά αποθηκευμένα στην κλειδοθήκη Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Ο παρών αποστολέας δεν έχει ακόμη ιδιωτικό κλειδί PGP αποθηκευμένο στην επέκταση Mailvelope σας. Θα θέλατε να δημιουργήσετε ένα ώστε ενεργοποιήσετε την κρυπτογραφημένη ανταλλαγή μηνυμάτων;';
$labels['encryption'] = 'Κρυπτογράφηση';
$labels['mailvelopeoptions'] = 'Ρυθμίσεις Mailvelope';
$labels['mailvelopemainkeyring'] = 'Χρήση κύριας κλειδοθήκης Mailvelope';
$labels['mailvelopenotfound'] = 'Η επέκταση Mailvelope δεν είναι ενεργοποιημένη/εγκατεστημένη στον browser σας.';
$labels['sortby'] = 'Ταξινόμηση κατά';
$labels['sortasc'] = 'Αύξουσα ταξινόμηση';
$labels['sortdesc'] = 'Φθίνουσα ταξινόμηση';
$labels['undo'] = 'Αναίρεση';
$labels['installedplugins'] = 'Εγκατεστημένα πρόσθετα';
$labels['plugin'] = 'Πρόσθετο';
$labels['version'] = 'Έκδοση';
$labels['source'] = 'Προέλευση';
$labels['destination'] = 'Προορισμός';
$labels['license'] = 'Άδεια χρήσης';
$labels['support'] = 'Υποστήριξη';
$labels['savedsearches'] = 'Αποθηκευμένες αναζητήσεις';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Αγγλικά';
$labels['westerneuropean'] = 'Δυτικής Ευρώπης';
$labels['easterneuropean'] = 'Ανατολικής Ευρώπης';
$labels['southeasterneuropean'] = 'Νοτιο-Ανατολικής Ευρώπης';
$labels['baltic'] = 'Βαλτικής';
$labels['cyrillic'] = 'Κυριλλικά';
$labels['arabic'] = 'Αραβικά';
$labels['greek'] = 'Ελληνικά';
$labels['hebrew'] = 'Εβραϊκά';
$labels['turkish'] = 'Τουρκικά';
$labels['nordic'] = 'Σκανδιναβικά';
$labels['thai'] = 'Ταϊλανδέζικα';
$labels['celtic'] = 'Κελτικά';
$labels['vietnamese'] = 'Βιετναμέζικα';
$labels['japanese'] = 'Ιαπωνικά';
$labels['korean'] = 'Κορεατικά';
$labels['chinese'] = 'Κινεζικά';
$labels['arialabeltopnav'] = 'Έλεγχος παραθύρου';
$labels['arialabeltasknav'] = 'Εργασίες εφαρμογής';
$labels['arialabeltoolbar'] = 'Μπάρα εργαλείων εφαρμογής';
$labels['arialabellistnav'] = 'Πλοήγηση λίστας';
$labels['arialabelactivetask'] = 'Ενεργή εργασία';
$labels['arialabelmessagessearchfilter'] = 'Φίλτρο λίστας αλληλογραφίας';
$labels['arialabelmailsearchform'] = 'Φόρμα αναζήτησης μηνύματος e-mail';
$labels['arialabelcontactsearchform'] = 'Φόρμα αναζήτησης επαφών';
$labels['arialabelmailquicksearchbox'] = 'Πεδίο αναζήτησης e-mail';
$labels['arialabelquicksearchbox'] = 'Αναζήτηση εισόδου';
$labels['arialabelfoldersearchfilter'] = 'Φίλτρο λίστας φακέλων';
$labels['arialabelfoldersearchform'] = 'Φόρμα αναζήτησης φακέλων';
$labels['arialabelfolderlist'] = 'Επιλογή καταλόγου e-mail';
$labels['arialabelmessagelist'] = 'Λίστα μηνυμάτων e-mail';
$labels['arialabelmailpreviewframe'] = 'Προεπισκόπηση μηνύματος';
$labels['arialabelmailboxmenu'] = 'Μενού ενεργειών φακέλων';
$labels['arialabellistselectmenu'] = 'Μενού επιλογής λίστας';
$labels['arialabelthreadselectmenu'] = 'Μενού λίστας θεμάτων';
$labels['arialabelmessagelistoptions'] = 'Εμφάνιση λίστας μηνυμάτων και επιλογές ταξινόμησης';
$labels['arialabelmailimportdialog'] = 'Διάλογος εισαγωγής μηνύματος';
$labels['arialabelmessagenav'] = 'Πλοήγηση μηνύματος';
$labels['arialabelmessagebody'] = 'Σώμα μηνύματος';
$labels['arialabelmessageactions'] = 'Ενέργειες μηνύματος';
$labels['arialabelcontactquicksearch'] = 'Φόρμα αναζήτησης επαφών';
$labels['arialabelcontactsearchbox'] = 'Πεδίο αναζήτησης επαφής';
$labels['arialabelmessageheaders'] = 'Κεφαλίδες μηνυμάτων';
$labels['arialabelforwardingoptions'] = 'Επιλογές προώθησης';
$labels['arialabelreplyalloptions'] = 'Επιλογές απάντησης προς όλους';
$labels['arialabelmoremessageactions'] = 'Περισσότερες ενέργειες μηνύματος';
$labels['arialabelmorecontactactions'] = 'Περισσότερες ενέργειες επαφών';
$labels['arialabelmarkmessagesas'] = 'Σήμανση επιλεγμένων μηνυμάτων ως...';
$labels['arialabelcomposeoptions'] = 'Επιλογές σύνθεσης';
$labels['arialabelresponsesmenu'] = 'Μενού έτοιμων απαντήσεων';
$labels['arialabelattachmentuploadform'] = 'Φόρμα μεταφόρτωσης συνημμένων';
$labels['arialabelattachmentmenu'] = 'Επιλογές συνημμένων';
$labels['arialabelmailtomenu'] = 'Επιλογές διεύθυνσης email';
$labels['arialabelattachmentpreview'] = 'Προεπισκόπηση συνημμένων';
$labels['ariasummarycomposecontacts'] = 'Επιλογή ως παραλήπτες από λίστα επαφών και ομάδων';
$labels['arialabelcontactexportoptions'] = 'Επιλογές εξαγωγής επαφών';
$labels['arialabelabookgroupoptions'] = 'Επιλογές βιβλίου διευθύνσεων/ομάδων';
$labels['arialabelpreferencesform'] = 'Φόρμα προτιμήσεων';
$labels['arialabelidentityeditfrom'] = 'Φόρμα επεξεργασίας ταυτότητας';
$labels['arialabelresponseeditfrom'] = 'Φόρμα επεξεργασίας απάντησης';
$labels['arialabelsearchterms'] = 'Όροι αναζήτησης';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop μενού ενεργειών';
$labels['arialabelheadersmenu'] = 'Μενού προσθήκης παραληπτών (κεφαλίδα)';
$labels['arialabelimagetools'] = 'Εργαλεία εικόνας';
$labels['helplistnavigation'] = 'Εμφάνιση πλοήγησης πληκτρολογίου';
$labels['helplistkeyboardnavigation'] = "Βέλη πάνω/κάτω: Μετακίνηση εστίασης/επιλογής γραμμής.
Διάστημα: Επιλογή εστιασμένης γραμμής.
Shift + Βέλος πάνω/κάτω: Επιλογή επιπλέον γραμμής πάνω/κάτω.
Ctrl + Διάστημα: Προσθήκη/αφαίρεση εστιασμένης γραμμής στα επιλεγμένα.";
$labels['helplistkeyboardnavmessages'] = "Βέλη αριστερά/δεξιά: εμφάνιση/απόκρυψη νήματος μηνυμάτων (μόνο στη λειτουργία νήματος).
Enter: Άνοιγμα επιλεγμένου/εστιασμένου μηνύματος.
Διαγραφή: Μετακίνηση επιλεγμένων μηνυμάτων στα Διεγραμμένα.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Άνοιγμα της επιλεγμένης/εστιασμένης επαφής.";
localization/el_GR/messages.inc000064400000065762151727150570012560 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Έχει προκύψει κάποιο σφάλμα!';
$messages['loginfailed']  = 'Η είσοδος απέτυχε.';
$messages['cookiesdisabled'] = 'Ο περιηγητής σας (browser) δεν αποδέχεται cookies.';
$messages['sessionerror'] = 'Η συνεδρία σας είναι άκυρη ή έχει λήξει.';
$messages['cookiesmismatch'] = 'Εντοπίστηκε αναντιστοιχία στα cookies. Παρακαλούμε καθαρίστε τα cookies του περιηγητή σας.';
$messages['storageerror'] = 'Η σύνδεση με το διακομιστή αποθήκευσης απέτυχε.';
$messages['servererror'] = 'Σφάλμα του εξυπηρετητή!';
$messages['servererrormsg'] = 'Σφάλμα εξυπηρετητή: $msg';
$messages['accountlocked'] = 'Πάρα πολλές αποτυχημένες προσπάθειες σύνδεσης. Δοκιμάστε ξανά αργότερα.';
$messages['connerror'] = 'Σφάλμα σύνδεσης (Αποτυχία πρόσβασης στον διακομιστή)!';
$messages['dberror'] = 'Σφάλμα βάσης δεδομένων!';
$messages['dbconnerror'] = 'Αδυναμία σύνδεσης με τη βάση δεδομένων!';
$messages['windowopenerror'] = 'Το αναδυόμενο παράθυρο αποκλείστηκε!';
$messages['requesttimedout'] = 'Το αίτημα εξέπνευσε χρονικά';
$messages['errorreadonly'] = 'Η διαδικασία δεν μπορεί να ολοκληρωθεί. Ο φάκελος είναι μόνο για ανάγνωση.';
$messages['errornoperm'] = 'Η διαδικασία δεν μπορεί να ολοκληρωθεί. Άρνηση πρόσβασης.';
$messages['erroroverquota'] = 'Δεν είναι δυνατή η εκτέλεση της λειτουργίας. Δεν υπάρχει ελεύθερος χώρος στο δίσκο.';
$messages['erroroverquotadelete'] = 'Δεν υπάρχει ελεύθερος χώρος στο δίσκο. Χρησιμοποιήστε το συνδυασμό πλήκτρων SHIFT+DEL για να διαγράψετε μηνύματα.';
$messages['invalidrequest'] = 'Λανθασμένο αίτημα! Δεν αποθηκεύτηκαν δεδομένα.';
$messages['invalidhost'] = 'Άκυρο όνομα εξυπηρετητή.';
$messages['nomessagesfound'] = 'Δεν βρέθηκαν μηνύματα σε αυτή τη θυρίδα.';
$messages['loggedout'] = 'Έχετε αποσυνδεθεί επιτυχώς. Καλή συνέχεια!';
$messages['mailboxempty'] = 'Η θυρίδα είναι άδεια';
$messages['nomessages'] = 'Δεν υπάρχουν μηνύματα';
$messages['refreshing'] = 'Ανανέωση....';
$messages['loading'] = 'Φόρτωση...';
$messages['uploading'] = 'Το αρχείο φορτώνεται...';
$messages['attaching'] = 'Το αρχείο επισυνάπτεται...';
$messages['uploadingmany'] = 'Φόρτωση αρχείων...';
$messages['loadingdata'] = 'Φόρτωση δεδομένων...';
$messages['checkingmail'] = 'Έλεγχος για νέα μηνύματα...';
$messages['sendingmessage'] = 'Αποστολή μηνύματος...';
$messages['messagesent'] = 'Μήνυμα εστάλη επιτυχώς.';
$messages['savingmessage'] = 'Αποθήκευση μηνύματος...';
$messages['messagesaved'] = 'Το μήνυμα αποθηκεύτηκε στα Πρόχειρα.';
$messages['successfullysaved'] = 'Αποθηκεύτηκε επιτυχώς.';
$messages['savingresponse'] = 'Αποθήκευση του κειμένου απάντησης...';
$messages['deleteresponseconfirm'] = 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το κείμενο απάντησης;';
$messages['nocontactselected'] = 'Δεν έχετε επιλέξει κάποια επαφή ακόμα.';
$messages['addedsuccessfully'] = 'Η επαφή προστέθηκε επιτυχώς στο βιβλίο επαφών.';
$messages['contactexists'] = 'Υπάρχει ήδη μια επαφή με την ίδια διεύθυνση ηλεκτρονικού ταχυδρομείου.';
$messages['contactnameexists'] = 'Υπάρχει ήδη μια επαφή με το ίδιο όνομα.';
$messages['blockedimages'] = 'Για να προστατευτεί το απόρρητο σας, οι απομακρυσμένες εικόνες έχουν απενεργοποιηθεί σε αυτό το μήνυμα.';
$messages['blockedresources'] = 'Για την προστασία της ιδιωτικότητάς σας, κάποιοι απομακρυσμένοι πόροι έχουν μπλοκαριστεί.';
$messages['suspiciousemail'] = 'Το παρόν μήνυμα περιέχει ύποπτες διευθύνσεις email που μπορεί να είναι κακόβουλες.';
$messages['bccemail'] = 'Το(τα) προωθούμενο(-α) μήνυμα(-τα) περιέχει(-ουν) κρυφούς παραλήπτες (Bcc).';
$messages['bouncehint'] = 'Το μήνυμα θα αποσταλεί χωρίς καμία τροποποίηση, δηλ. με το αρχικό σώμα, τις αρχικές επικεφαλίδες και τους αρχικους παραλήπτες.';
$messages['encryptedmessage'] = 'Αυτό το μήνυμα είναι κρυπτογραφημένο και δε μπορεί να προβληθεί. Συγγνώμη!';
$messages['externalmessagedecryption'] = 'Αυτό είναι ένα κρυπτογραφημένο μήνυμα και μπορεί να αποκρυπτογραφηθεί με την επέκταση του προγράμματος περιήγησης σας.';
$messages['nopubkeyfor'] = 'Δε βρέθηκε έγκυρο δημόσιο κλειδί για το $email';
$messages['nopubkeyforsender'] = 'Δεν βρέθηκε ισχύον δημόσιο κλειδί  για την ταυτότητα αποστολέα σας. Θέλετε να κρυπτογραφήσετε το μήνυμα μόνο για τους αποδέκτες;';
$messages['encryptnoattachments'] = 'Τα ήδη ανεβασμένα συνημμένα δεν μπορούν να κρυπτογραφηθούν. Παρακαλώ προσθέστε τα ξανά στον επεξεργαστή κρυπτογράφησης.';
$messages['searchpubkeyservers'] = 'Θέλετε να αναζητήσετε τους διακομιστές δημόσιου κλειδιού για τα κλειδιά που λείπουν;';
$messages['encryptpubkeysfound'] = 'Βρέθηκαν τα ακόλουθα δημόσια κλειδιά:';
$messages['keyservererror'] = 'Αποτυχία λήψης κλειδιού από τον διακομιστή κλειδιών.';
$messages['keyimportsuccess'] = 'Το δημόσιο κλειδί $key εισήχθη επιτυχώς στη λίστα κλειδιών σας.';
$messages['nocontactsfound'] = 'Δε βρέθηκαν επαφές.';
$messages['contactnotfound'] = 'Η ζητούμενη επαφή δεν βρέθηκε.';
$messages['contactsearchonly'] = 'Πρέπει να χρησιμοποιήσετε μια φόρμα αναζήτησης για να δείτε επαφές από την επιλεγμένη λίστα διευθύνσεων.';
$messages['sendingfailed'] = 'Η αποστολή του μηνύματος απέτυχε.';
$messages['senttooquickly'] = 'Παρακαλώ περιμένετε $sec δευτερόλεπτα πριν στείλετε το μήνυμα.';
$messages['errorsavingsent'] = 'Προέκυψε σφάλμα κατά την αποθήκευση αποσταλμένου μηνύματος.';
$messages['errorsaving'] = 'Προέκυψε σφάλμα κατά την αποθήκευση.';
$messages['errormoving'] = 'Τα μηνύματα δεν ήταν δυνατό να μετακινηθούν.';
$messages['errorcopying'] = 'Δεν ήταν δυνατή η αντιγραφή του μηνύματος/των.';
$messages['errordeleting'] = 'Το μήνυμα δεν ήταν δυνατό να διαγραφεί.';
$messages['errormarking'] = 'Δεν έγινε επισήμανση στο μήνυμα.';
$messages['alerttitle'] = 'Προσοχή';
$messages['confirmationtitle'] = 'Είστε βέβαιος/η...';
$messages['deletecontactconfirm']  = 'Θέλετε να διαγράψετε τη συγκεκριμένη επαφή/ές;';
$messages['deletegroupconfirm']  = 'Είστε βέβαιοι πως θέλετε να διαγράψετε την επιλεγμένη ομάδα;';
$messages['deletemessagesconfirm'] = 'Θέλετε να διαγράψετε το συγκεκριμένο μήνυμα/τα;';
$messages['deletefolderconfirm']  = 'Θέλετε να διαγράψετε τον συγκεκριμένο φάκελο;';
$messages['movefolderconfirm']  = 'Είστε σίγουροι ότι θέλετε να μετακινήσετε αυτόν το φάκελο?';
$messages['purgefolderconfirm']  = 'Θέλετε να διαγράψετε όλα τα μηνύματα στον συγκεκριμένο φάκελο;';
$messages['contactdeleting'] = 'Διαγραφή επαφών...';
$messages['groupdeleting'] = 'Διαγραφή ομάδας...';
$messages['folderdeleting'] = 'Διαγραφή φακέλου...';
$messages['foldermoving'] = 'Μεταφορά φακέλου...';
$messages['foldersubscribing'] = 'Εγγραφή φακέλου...';
$messages['folderunsubscribing'] = 'Απεγγραφή φακέλου...';
$messages['formincomplete'] = 'Η φόρμα δεν έχει συμπληρωθεί πλήρως.';
$messages['noemailwarning'] = 'Παρακαλώ εισάγετε έγκυρη διεύθυνση email.';
$messages['nonamewarning']  = 'Παρακαλώ εισάγετε όνομα.';
$messages['nopagesizewarning'] = 'Παρακαλώ εισάγετε μέγεθος σελίδας.';
$messages['nosenderwarning'] = 'Παρακαλώ εισάγετε τη διεύθυνση email του αποστολέα.';
$messages['recipientsadded'] = 'Επιτυχής προσθήκη παραλήπτη(ών).';
$messages['norecipientwarning'] = 'Παρακαλώ εισάγετε τουλάχιστο έναν παραλήπτη.';
$messages['disclosedrecipwarning'] = 'Όλοι οι παραλήπτες θα βλέπουν τις διευθύνσεις email του καθενός. Για να προστατέψετε την ιδιωτικότητά τους μπορείτε να χρησιμοποιήσετε το πεδίο Bcc.';
$messages['disclosedreciptitle'] = 'Υπέρβαση μέγιστου αριθμού παραληπτών';
$messages['nosubjectwarning']  = 'Το πεδίο "Θέμα" είναι άδειο. Θέλετε να εισάγετε ένα τώρα;';
$messages['nosubjecttitle']  = 'Κανένα θέμα';
$messages['nobodywarning'] = 'Αποστολή μηνύματος χωρίς κείμενο;';
$messages['notsentwarning'] = 'Αυτό το μήνυμα δεν έχει αποσταλεί και έχει αλλαγές που δεν έχουν αποθηκευτεί. Θέλετε να αναιρεθούν οι αλλαγές σας?';
$messages['restoresavedcomposedata'] = 'Υπάρχει ένα προηγούμενο πρόχειρο μήνυμα το οποίο δεν έχει σταλεί.\n\nΘέμα: $subject\Αποθηκεύτηκε: $date\n\nΘέλετε να το ανακτήσετε;';
$messages['nosearchname'] = 'Παρακαλώ εισάγετε όνομα επαφής ή διεύθυνση e-mail.';
$messages['notuploadedwarning'] = 'Δεν έχουν φορτωθεί ακόμα όλα τα συνημμένα. Παρακαλώ περιμένετε ή ακυρώστε το ανέβασμα.';
$messages['searchsuccessful'] = 'Βρέθηκαν $nr μηνύματα.';
$messages['contactsearchsuccessful'] = 'Βρέθηκαν $nr επαφές.';
$messages['searchnomatch'] = 'Η αναζήτηση δεν επέστρεψε αποτελέσματα.';
$messages['searching'] = 'Αναζήτηση...';
$messages['checking'] = 'Έλεγχος...';
$messages['stillsearching'] = 'Αναζήτηση...';
$messages['nospellerrors'] = 'Δεν βρέθηκαν ορθογραφικά λάθη.';
$messages['folderdeleted'] = 'Ο φάκελος διαγράφηκε επιτυχώς.';
$messages['foldersubscribed'] = 'Ο φάκελος εχει εγγραφεί με επιτυχία.';
$messages['folderunsubscribed'] = 'Ο φάκελος απεγγράφηκε επιτυχώς.';
$messages['folderpurged'] = 'Ο φάκελος εκκενώθηκε επιτυχώς.';
$messages['folderexpunged'] = 'Ο φάκελος συμπιέστηκε επιτυχώς.';
$messages['deletedsuccessfully'] = 'Επιτυχής διαγραφή.';
$messages['converting'] = 'Κατάργηση διαμορφώσεων κειμένου...';
$messages['messageopenerror'] = 'Η φόρτωση μηνυμάτων από τον διακομιστή απέτυχε.';
$messages['filelinkerror'] = 'Η επισύναψη του αρχείου απέτυχε.';
$messages['fileuploaderror'] = 'Το ανέβασμα του αρχείου απέτυχε.';
$messages['csvfilemismatch'] = 'Δεν υποστηρίζεται η εισαγωγή πολλαπλών αρχείων CSV με διαφορετικά πεδία.';
$messages['filesizeerror'] = 'Το ανεβασμένο αρχείο ξεπερνάει το μέγιστο μέγεθος των $size.';
$messages['filecounterror'] = 'Μπορείτε να ανεβάσετε το πολύ $count αρχεία ταυτόχρονα.';
$messages['msgsizeerror'] = 'Αποτυχία επισύναψης αρχείου. Έχετε υπερβεί το μέγιστο μέγεθος ενός μηνύματος ($size).';
$messages['msgsizeerrorfwd'] = 'Έχετε υπερβεί το μέγιστο επιτρεπόμενο μέγεθος μηνύματος ($size). $num μήνυμα(τα) δεν έχει(ουν) επισυναφθεί.';
$messages['copysuccess'] = 'Επιτυχής αντιγραφή $nr επαφών.';
$messages['movesuccess'] = 'Μεταφέρθηκαν με επιτυχία $nr επαφές.';
$messages['copyerror'] = 'Αποτυχία αντιγραφής επαφών.';
$messages['moveerror'] = 'Η μετακίνηση επαφών ήταν αδύνατη.';
$messages['sourceisreadonly'] = 'Το πεδίο διεύθυνσης είναι μόνο για ανάγνωση.';
$messages['errorsavingcontact'] = 'Η αποθήκευση της διεύθυνσης επαφής απέτυχε.';
$messages['movingmessage'] = 'Μετακίνηση μηνύματος/των...';
$messages['copyingmessage'] = 'Αντιγραφή μηνυμάτων...';
$messages['copyingcontact'] = 'Αντιγραφή επαφών...';
$messages['movingcontact'] = 'Μετακίνηση επαφής(ών)...';
$messages['deletingmessage'] = 'Διαγραφή μηνυμάτων...';
$messages['markingmessage'] = 'Σήμανση μηνυμάτων...';
$messages['addingmember'] = 'Προσθήκη επαφών στην ομάδα...';
$messages['removingmember'] = 'Αφαίρεση επαφών από την ομάδα...';
$messages['receiptsent'] = 'Επιτυχής αποστολή αναφοράς ανάγνωσης.';
$messages['errorsendingreceipt'] = 'Αποστολή αναφοράς απέτυχε.';
$messages['deleteidentityconfirm'] = 'Είστε βέβαιοι πως θέλετε να διαγράψετε αυτή την ταυτότητα;';
$messages['nodeletelastidentity'] = 'Δε μπορείτε να διαγράψετε αυτήν την ταυτότητα, είναι η τελευταία.';
$messages['forbiddencharacter'] = 'Η ονομασία φακέλου περιέχει μη επιτρεπτό χαρακτήρα.';
$messages['selectimportfile'] = 'Επιλέξτε αρχείο για ανέβασμα.';
$messages['addresswriterror'] = 'Το επιλεγμένο βιβλίο διευθύνσεων δεν είναι εγγράψιμο.';
$messages['contactaddedtogroup'] = 'Οι επαφές προστέθηκαν στην ομάδα με επιτυχία.';
$messages['contactremovedfromgroup'] = 'Οι επαφές αφαιρέθηκαν από την ομάδα με επιτυχία.';
$messages['nogroupassignmentschanged'] = 'Δεν αλλαξαν οι αναθεσεις της ομαδας.';
$messages['importwait'] = 'Εισαγωγή, παρακαλώ περιμένετε...';
$messages['importformaterror'] = 'Η εισαγωγή απέτυχε! Το ανεβασμένο αρχείο δεν είναι έγκυρο αρχείο εισαγωγής δεδομένων.';
$messages['importconfirm'] = '<b>Εισήχθησαν $inserted επαφές με επιτυχία</b>';
$messages['importconfirmskipped'] = '<b>Παραλείφθηκαν $skipped υπάρχουσες καταχωρήσεις</b>';
$messages['importmessagesuccess'] = 'Επιτυχής εισαγωγή $nr μηνυμάτων';
$messages['importmessageerror'] = 'Η εισαγωγή απέτυχε! Το ανεβασμένο αρχείο δεν είναι έγκυρο αρχείο μηνύματος ή φακέλου μηνυμάτων.';
$messages['opnotpermitted'] = 'Η λειτουργία δεν επιτρέπεται!';
$messages['nofromaddress'] = 'Λείπει η διεύθυνση email στην επιλεγμένη ταυτότητα.';
$messages['editorwarning'] = 'Η αλλαγή του τύπου επεξεργασίας μπορεί να προκαλέσει απώλεια της μορφοποίησης κειμένου. Είστε βέβαιοι πως θέλετε να συνεχίσετε;';
$messages['httpreceivedencrypterror'] = 'Ανεπανόρθωτο σφάλμα. Επικοινωνήστε με το διαχειριστή του εξυπηρετητή. <b>Το μήνυμά σας δεν στάλθηκε.</b>';
$messages['smtpconnerror'] = 'Σφάλμα SMTP ($code): Απέτυχε η σύνδεση με τον εξυπηρετητή.';
$messages['smtpautherror'] = 'Σφάλμα SMTP ($code): Σφάλμα ταυτοποίησης.';
$messages['smtpfromerror'] = 'Σφάλμα SMTP ($code): Αποτυχία ορισμού αποστολέα "$from" ($msg).';
$messages['smtptoerror'] = 'Σφάλμα SMTP ($code): Αποτυχία προσθήκης παραλήπτη "$to" ($msg).';
$messages['smtprecipientserror'] = 'Σφάλμα SMTP: Αδύνατο να προσπελαστεί η λίστα παραληπτών.';
$messages['smtputf8error'] = 'Σφάλμα SMTP: Ο διακομιστής δεν υποστηρίζει Unicode σε διευθύνσεις email.';
$messages['smtpsizeerror'] = 'Σφάλμα SMTP: Το μέγεθος του μηνύματος υπερβαίνει το όριο του διακομιστή ($limit)';
$messages['smtperror'] = 'Σφάλμα SMTP: $msg';
$messages['emailformaterror'] = 'Μη έγκυρη διεύθυνση e-mail: $email';
$messages['toomanyrecipients'] = 'Υπερβολικά μεγάλο πλήθος αποδεκτών. Μειώστε τον αριθμό των αποδεκτών σε $max.';
$messages['maxgroupmembersreached'] = 'Ο αριθμός των μελών της ομάδας υπερβαίνει τον μέγιστο των $max μελών.';
$messages['internalerror'] = 'Προέκυψε εσωτερικό σφάλμα. Παρακαλώ δοκιμάστε ξανά.';
$messages['contactdelerror'] = 'Δεν είναι δυνατή η διαγραφή της επαφής/ων.';
$messages['contactdeleted'] = 'Η επαφή/ές διαγράφηκαν με επιτυχία.';
$messages['contactrestoreerror'] = 'Η διαγραμμένη επαφή(ές) δεν είναι δυνατό να επαναφερθεί.';
$messages['contactrestored'] = 'Η επαφή(ές) επαναφέρθηκε.';
$messages['groupdeleted'] = 'Η ομαδα διαγράφηκε επιτυχώς.';
$messages['grouprenamed'] = 'Η ομάδα μετονομάστηκε επιτυχώς.';
$messages['groupcreated'] = 'Η ομάδα δημιουργήθηκε επιτυχώς.';
$messages['savedsearchdeleted'] = 'Η αποθηκευμένη αναζήτηση διαγράφηκε επιτυχώς. ';
$messages['savedsearchdeleteerror'] = 'Δεν ήταν δυνατή η διαγραφή της αποθηκευμένης αναζήτησης.';
$messages['savedsearchcreated'] = 'Η αποθηκευμένη αναζητήση δημιουργήθηκε με επιτυχία.';
$messages['savedsearchcreateerror'] = 'Δεν ήταν δυνατό να δημιουργηθεί η αποθηκευμένη αναζήτηση.';
$messages['messagedeleted'] = 'Το μήνυμα(τα) διαγράφηκε επιτυχώς.';
$messages['messagemoved'] = 'Το μήνυμα(τα) μετακινήθηκε επιτυχώς.';
$messages['messagemovedtotrash'] = ' Το μήνυμα(τα) μετακινήθηκε επιτυχώς στα Διεγραμμένα.';
$messages['messagecopied'] = 'Το μήνυμα(τα) αντιγράφηκε επιτυχώς.';
$messages['messagemarked'] = 'Το μήνημα(τα) σημάνθηκε επιτυχώς.';
$messages['autocompletechars'] = 'Εισάγετε τουλάχιστον $min χαρακτήρες για αυτόματη συμπλήρωση.';
$messages['autocompletemore'] = 'Βρέθηκαν περισσότερες καταχωρήσεις που ταιριάζουν. Παρακαλώ πληκτρολογήστε περισσότερους χαρακτήρες.';
$messages['namecannotbeempty'] = 'Το όνομα δεν μπορεί να είναι κενό.';
$messages['nametoolong'] = 'Το όνομα είναι πολύ μεγάλο.';
$messages['namedotforbidden'] = 'Το όνομα του φακέλου δεν μπορεί να αρχίζει με τελεία.';
$messages['folderupdated'] = 'Ο φάκελος ανανεώθηκε επιτυχώς.';
$messages['foldercreated'] = 'Ο φάκελος δημιουργήθηκε επιτυχώς.';
$messages['invalidimageformat'] = 'Μη έγκυρη μορφή εικόνας.';
$messages['mispellingsfound'] = 'Εντοπίστηκαν ορθογραφικά λάθη στο μήνυμα. ';
$messages['parentnotwritable'] = 'Δεν είναι δυνατή η δημιουργία/μετακινήση φάκελου στον επιλεγμένο φάκελο γονέα. Δεν υπάρχει δικαίωμα πρόσβασης. ';
$messages['messagetoobig'] = 'Το τμήμα μηνύματος είναι πολύ μεγάλο για επεξεργασία.';
$messages['attachmentvalidationerror'] = 'Αυτό το συνημμένο είναι ύποπτο επειδή ο τύπος του δεν συμφωνεί με τον τύπο που δηλώνεται στο μήνυμα. Εάν δεν εμπιστεύεστε τον αποστολέα, μην το ανοίξετε στο πρόγραμμα περιήγησης καθώς μπορεί να περιέχει κακόβουλα περιεχόμενα.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Προσοχή: Αυτή η υπηρεσία webmail απαιτεί Javascript! Για να την χρησιμοποιήσετε ενεργοποιήστε το JavaScript στις ρυθμίσεις του περιηγητή σας. ';
$messages['messageissent'] = 'Το μήνυμα έχει ήδη αποσταλεί, αλλά δεν έχει ακόμη αποθηκευτεί. Θέλετε να το αποθηκεύσετε τώρα;';
$messages['errnotfound'] = 'Δεν βρέθηκε το αρχείο';
$messages['errnotfoundexplain'] = 'Ο πόρος που ζητήθηκε δε βρέθηκε!';
$messages['errfailedrequest'] = 'Αποτυχία αιτήματος';
$messages['errauthorizationfailed'] = 'Απέτυχε η πιστοποίηση';
$messages['errunauthorizedexplain'] = 'Δεν μπορέσαμε να βεβαιωθούμε ότι είστε εξουσιοδοτημένος να έχετε πρόσβαση σε αυτή την υπηρεσία!';
$messages['errrequestcheckfailed'] = 'Ο έλεγχος του αιτήματος απέτυχε';
$messages['errcsrfprotectionexplain'] = "Για την προστασία σας, η πρόσβαση σε αυτόν τον πόρο είναι εξασφαλισμένη έναντι CSRF.\nΑν βλέπετε αυτό, το μήνυμα τότε μάλλον δεν αποσυνδεθήκατε πριν φύγετε από τη web εφαρμογή.\n\nΓια να συνεχίσετε απαιτείται πλέον ανθρώπινη αλληλεπίδραση.";
$messages['errcontactserveradmin'] = 'Παρακαλείστε να επικοινωνήσετε με το διαχειριστή του εξυπηρετητή σας.';
$messages['clicktoresumesession'] = 'Κάντε κλικ εδώ για να συνεχίσετε την προηγούμενη συνεδρία σας';
$messages['errcomposesession'] = 'Σφάλμα στη συνεδρία σύνταξης μηνύματος';
$messages['errcomposesessionexplain'] = 'Η συνεδρία σύνταξης μηνύματος δε βρέθηκε.';
$messages['clicktocompose'] = 'Πατήστε εδώ για να συντάξετε ένα νέο μήνυμα';
$messages['nosupporterror'] = 'Αυτή η δυνατότητα δεν υποστηρίζεται από τον περιηγητή σας.';
$messages['siginserted'] = 'Η υπογραφή εισήχθη επιτυχώς.';
$messages['responseinserted'] = 'Η απάντηση εισήχθη επιτυχώς.';
$messages['noresponsesavailable'] = 'Δεν υπάρχουν διαθέσιμες απαντήσεις';
$messages['listempty'] = 'Η λίστα είναι κενή.';
$messages['listusebutton'] = 'Χρησιμοποιήστε το κουμπί Δημιουργία για να προσθέσετε μια νέα καταχώρηση.';
$messages['keypaircreatesuccess'] = 'Ένα νέο ζεύγος κλειδιών δημιουργήθηκε επιτυχώς για την ταυτότητα $identity.';
$messages['emptyattachment'] = 'Το συννημένο αρχείο φαίνεται να είναι κενό<br>Παρακαλούμε να επικοινωνήσετε με τον αποστολέα του.';
$messages['oauthloginfailed'] = 'Η σύνδεση OAuth απέτυχε. Παρακαλούμε δοκιμάστε αργότερα.';
localization/pl_PL/timezones.inc000064400000040052151727150570012765 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afryka';
$labels['tz:africa:abidjan'] = 'Abidżan';
$labels['tz:africa:accra'] = 'Akra';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Algier';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangi';
$labels['tz:africa:banjul'] = 'Bandżul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bużumbura';
$labels['tz:africa:cairo'] = 'Kair';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Konakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Dżibuti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'Al-Ujun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Dżuba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Chartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinszasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lome';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadiszu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjemena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nawakszut';
$labels['tz:africa:ouagadougou'] = 'Wagadugu';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'Sao Tome';
$labels['tz:africa:tripoli'] = 'Trypolis';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhuk';
$labels['tz:america'] = 'Ameryka';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentyna';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asuncion';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Kajenna';
$labels['tz:america:cayman'] = 'Kajmany';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Kostaryka';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'Salwador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Gwadelupa';
$labels['tz:america:guatemala'] = 'Gwatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Gujana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Hawana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamajka';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martynika';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Meksyk';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'Nowy Jork';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Dakota Północna';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Portoryko';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_kitts'] = 'Saint Kitts i Nevis';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktyka';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arktyka';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Azja';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Ałmaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Aszchabad';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrajn';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Bejrut';
$labels['tz:asia:bishkek'] = 'Biszkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damaszek';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubaj';
$labels['tz:asia:dushanbe'] = 'Duszanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkuck';
$labels['tz:asia:jakarta'] = 'Dżakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerozolima';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamczatka';
$labels['tz:asia:karachi'] = 'Karaczi';
$labels['tz:asia:kathmandu'] = 'Katmandu';
$labels['tz:asia:khandyga'] = 'Kandyga';
$labels['tz:asia:kolkata'] = 'Kalkuta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnojarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwejt';
$labels['tz:asia:macau'] = 'Makao';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muskat';
$labels['tz:asia:nicosia'] = 'Nikozja';
$labels['tz:asia:novokuznetsk'] = 'Nowokuznieck';
$labels['tz:asia:novosibirsk'] = 'Nowosybirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pjongjang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Rijad';
$labels['tz:asia:sakhalin'] = 'Sachalin';
$labels['tz:asia:samarkand'] = 'Samarkanda';
$labels['tz:asia:seoul'] = 'Seul';
$labels['tz:asia:shanghai'] = 'Szanghaj';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Tajpej';
$labels['tz:asia:tashkent'] = 'Taszkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ułan Bator';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Wientian';
$labels['tz:asia:vladivostok'] = 'Władywostok';
$labels['tz:asia:yakutsk'] = 'Jakuck';
$labels['tz:asia:yangon'] = 'Rangun';
$labels['tz:asia:yekaterinburg'] = 'Jekaterynburg';
$labels['tz:asia:yerevan'] = 'Erywań';
$labels['tz:atlantic'] = 'Atlantyk';
$labels['tz:atlantic:azores'] = 'Azory';
$labels['tz:atlantic:bermuda'] = 'Bermudy';
$labels['tz:atlantic:canary'] = 'Wyspy Kanaryjskie';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Wyspy Owcze';
$labels['tz:atlantic:madeira'] = 'Madera';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'Georgia Południowa';
$labels['tz:atlantic:st_helena'] = 'Wyspa Świętej Heleny';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelajda';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andora';
$labels['tz:europe:astrakhan'] = 'Astrachań';
$labels['tz:europe:athens'] = 'Ateny';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratysława';
$labels['tz:europe:brussels'] = 'Bruksela';
$labels['tz:europe:bucharest'] = 'Bukareszt';
$labels['tz:europe:budapest'] = 'Budapeszt';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Kiszyniów';
$labels['tz:europe:copenhagen'] = 'Kopenhaga';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Wyspa Man';
$labels['tz:europe:istanbul'] = 'Istambuł';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kijów';
$labels['tz:europe:kirov'] = 'Kirów';
$labels['tz:europe:lisbon'] = 'Lizbona';
$labels['tz:europe:ljubljana'] = 'Lublana';
$labels['tz:europe:london'] = 'Londyn';
$labels['tz:europe:luxembourg'] = 'Luksemburg';
$labels['tz:europe:madrid'] = 'Madryd';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:minsk'] = 'Mińsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Moskwa';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paryż';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praga';
$labels['tz:europe:riga'] = 'Ryga';
$labels['tz:europe:rome'] = 'Rzym';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajewo';
$labels['tz:europe:saratov'] = 'Saratow';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Sztokholm';
$labels['tz:europe:tallinn'] = 'Tallin';
$labels['tz:europe:vatican'] = 'Watykan';
$labels['tz:europe:vienna'] = 'Wiedeń';
$labels['tz:europe:vilnius'] = 'Wilno';
$labels['tz:europe:volgograd'] = 'Wołgograd';
$labels['tz:europe:warsaw'] = 'Warszawa';
$labels['tz:europe:zagreb'] = 'Zagrzeb';
$labels['tz:europe:zurich'] = 'Zurych';
$labels['tz:pacific'] = 'Pacyfik';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
localization/pl_PL/csv2vcard.inc000064400000004616151727150570012653 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | language/pl_PL/csv2vcard.inc                                          |
 |                                                                       |
 | Language file of the Roundcube Webmail client                         |
 | Copyright (C) 2005-2012, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Rocznica";
$map['assistants_name'] = "Asystent";
$map['assistants_phone'] = "Telefon asystenta";
$map['birthday'] = "Urodziny";
$map['business_city'] = "Miasto (biuro)";
$map['business_countryregion'] = "Kraj/region (biuro)";
$map['business_fax'] = "Faks służbowy";
$map['business_phone'] = "Telefon służbowy";
$map['business_phone_2'] = "Telefon służbowy 2";
$map['business_postal_code'] = "Kod pocztowy (biuro)";
$map['business_state'] = "Województwo (biuro)";
$map['business_street'] = "Ulica (biuro)";
$map['categories'] = "Kategorie";
$map['company'] = "Firma";
$map['department'] = "Oddział";
$map['email_address'] = "Adres e-mail";
$map['first_name'] = "Imię";
$map['gender'] = "Płeć";
$map['home_city'] = "Miasto (dom)";
$map['home_countryregion'] = "Kraj/region (dom)";
$map['home_fax'] = "Faks domowy";
$map['home_phone'] = "Telefon domowy";
$map['home_phone_2'] = "Home Phone 2";
$map['home_postal_code'] = "Kod pocztowy (dom)";
$map['home_state'] = "Województwo (dom)";
$map['home_street'] = "Ulica (dom)";
$map['job_title'] = "Stanowisko";
$map['last_name'] = "Nazwisko";
$map['managers_name'] = "Menadżer";
$map['middle_name'] = "Drugie imię";
$map['mobile_phone'] = "Telefon komórkowy";
$map['notes'] = "Notatki";
$map['pager'] = "Pager";
$map['primary_phone'] = "Telefon główny";
$map['title'] = "Tytuł";
$map['web_page'] = "Osobista strona sieci Web";
$map['nickname'] = "Przydomek";
localization/pl_PL/labels.inc000064400000102331151727150570012211 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Witamy w $product';
$labels['username'] = 'Nazwa użytkownika';
$labels['password'] = 'Hasło';
$labels['server'] = 'Serwer';
$labels['login'] = 'Zaloguj';
$labels['oauthlogin'] = 'Zaloguj z $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Wyloguj';
$labels['mail'] = 'Poczta';
$labels['settings'] = 'Ustawienia';
$labels['addressbook'] = 'Książka adresowa';
$labels['darkmode'] = 'Tryb ciemny';
$labels['lightmode'] = 'Tryb jasny';
$labels['inbox'] = 'Odebrane';
$labels['drafts'] = 'Kopie robocze';
$labels['sent'] = 'Wysłane';
$labels['trash'] = 'Kosz';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Pokaż prawdziwe nazwy dla folderów specjalnych';
$labels['subject'] = 'Temat';
$labels['from'] = 'Od';
$labels['sender'] = 'Nadawca';
$labels['to'] = 'Do';
$labels['cc'] = 'Kopia';
$labels['bcc'] = 'Ukryta kopia';
$labels['replyto'] = 'Odpowiedź do';
$labels['followupto'] = 'Kontynuacja do';
$labels['date'] = 'Data';
$labels['size'] = 'Rozmiar';
$labels['priority'] = 'Priorytet';
$labels['organization'] = 'Organizacja';
$labels['readstatus'] = 'Przeczytano';
$labels['listoptions'] = 'Opcje listy...';
$labels['listoptionstitle'] = 'Opcje listy';
$labels['mailboxlist'] = 'Foldery';
$labels['messagesfromto'] = 'Wiadomości od $from do $to z $count';
$labels['threadsfromto'] = 'Wątki od $from do $to z $count';
$labels['messagenrof'] = 'Wiadomość $nr z $count';
$labels['fromtoshort'] = '$from - $to z $count';
$labels['copy'] = 'Kopiuj';
$labels['move'] = 'Przenieś';
$labels['moveto'] = 'Przenieś do...';
$labels['copyto'] = 'Kopiuj do...';
$labels['download'] = 'Pobierz';
$labels['open'] = 'Otwórz';
$labels['showattachment'] = 'Pokaż';
$labels['showanyway'] = 'Pokaż';
$labels['filename'] = 'Nazwa pliku';
$labels['filesize'] = 'Rozmiar pliku';
$labels['addtoaddressbook'] = 'Dodaj do książki adresowej';
$labels['sun'] = 'Nd';
$labels['mon'] = 'Pn';
$labels['tue'] = 'Wt';
$labels['wed'] = 'Śr';
$labels['thu'] = 'Czw';
$labels['fri'] = 'Pt';
$labels['sat'] = 'Sb';
$labels['sunday'] = 'Niedziela';
$labels['monday'] = 'Poniedziałek';
$labels['tuesday'] = 'Wtorek';
$labels['wednesday'] = 'Środa';
$labels['thursday'] = 'Czwartek';
$labels['friday'] = 'Piątek';
$labels['saturday'] = 'Sobota';
$labels['jan'] = 'Sty';
$labels['feb'] = 'Lut';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Kwi';
$labels['may'] = 'Maj';
$labels['jun'] = 'Cze';
$labels['jul'] = 'Lip';
$labels['aug'] = 'Sie';
$labels['sep'] = 'Wrz';
$labels['oct'] = 'Paź';
$labels['nov'] = 'Lis';
$labels['dec'] = 'Gru';
$labels['longjan'] = 'styczeń';
$labels['longfeb'] = 'luty';
$labels['longmar'] = 'marzec';
$labels['longapr'] = 'kwiecień';
$labels['longmay'] = 'maj';
$labels['longjun'] = 'czerwiec';
$labels['longjul'] = 'lipiec';
$labels['longaug'] = 'sierpień';
$labels['longsep'] = 'wrzesień';
$labels['longoct'] = 'październik';
$labels['longnov'] = 'listopad';
$labels['longdec'] = 'grudzień';
$labels['today'] = 'Dzisiaj';
$labels['refresh'] = 'Odśwież';
$labels['checkmail'] = 'Sprawdź skrzynkę';
$labels['compose'] = 'Utwórz';
$labels['writenewmessage'] = 'Utwórz nową wiadomość';
$labels['reply'] = 'Odpowiedz';
$labels['replytomessage'] = 'Odpowiedz nadawcy';
$labels['replytoallmessage'] = 'Odpowiedz wszystkim';
$labels['replyall'] = 'Odpowiedz wszystkim';
$labels['replylist'] = 'Odpowiedz na listę';
$labels['forward'] = 'Przekaż';
$labels['forwardinline'] = 'Prześlij w treści';
$labels['forwardattachment'] = 'Prześlij jako załącznik';
$labels['forwardmessage'] = 'Prześlij dalej';
$labels['bouncemsg'] = 'Prześlij ponownie (odbij)';
$labels['bounce'] = 'Prześlij ponownie';
$labels['deletemessage'] = 'Usuń wiadomości';
$labels['movemessagetotrash'] = 'Przenieś wiadomości do Kosza';
$labels['printmessage'] = 'Drukuj wiadomość';
$labels['previousmessage'] = 'Poprzednia wiadomość';
$labels['firstmessage'] = 'Pierwsza wiadomość';
$labels['nextmessage'] = 'Następna wiadomość';
$labels['lastmessage'] = 'Ostatnia wiadomość';
$labels['backtolist'] = 'Pokaż listę wiadomości';
$labels['viewsource'] = 'Pokaż źródło';
$labels['mark'] = 'Oznacz';
$labels['markmessages'] = 'Oznacz wiadomości';
$labels['markread'] = 'Jako przeczytane';
$labels['markunread'] = 'Jako nieprzeczytane';
$labels['markflagged'] = 'Jako oflagowane';
$labels['markunflagged'] = 'Jako nieoflagowane';
$labels['moreactions'] = 'Więcej akcji...';
$labels['markallread'] = 'Oznacz wszystkie jako przeczytane';
$labels['folders-cur'] = 'Tylko wybrany folder';
$labels['folders-sub'] = 'Wybrany folder i podfoldery';
$labels['folders-all'] = 'Wszystkie foldery';
$labels['more'] = 'Więcej';
$labels['back'] = 'Wstecz';
$labels['options'] = 'Opcje';
$labels['composeoptions'] = 'Opcje';
$labels['optionsandattachments'] = 'Opcje i załączniki';
$labels['actions'] = 'Akcje';
$labels['first'] = 'Pierwsza';
$labels['last'] = 'Ostatnia';
$labels['previous'] = 'Poprzednia';
$labels['next'] = 'Następna';
$labels['select'] = 'Zaznacz';
$labels['selection'] = 'Zaznaczenie';
$labels['all'] = 'Wszystkie';
$labels['none'] = 'Brak';
$labels['currpage'] = 'Bieżąca strona';
$labels['isread'] = 'Przeczytane';
$labels['unread'] = 'Nieprzeczytane';
$labels['flagged'] = 'Oznaczone';
$labels['unflagged'] = 'Nieoznaczone';
$labels['unanswered'] = 'Bez odpowiedzi';
$labels['withattachment'] = 'Z załącznikiem';
$labels['deleted'] = 'Usunięte';
$labels['undeleted'] = 'Nieusunięte';
$labels['replied'] = 'Odpowiedziana';
$labels['forwarded'] = 'Przekazane';
$labels['invert'] = 'Odwróć';
$labels['filter'] = 'Filtr';
$labels['list'] = 'Lista';
$labels['threads'] = 'Wątki';
$labels['expand-all'] = 'Rozwiń wszystkie';
$labels['expand-unread'] = 'Rozwiń nieprzeczytane';
$labels['collapse-all'] = 'Zwiń wszystkie';
$labels['threaded'] = 'Powątkowane';
$labels['showunread'] = 'Pokaż nieprzeczytane';
$labels['autoexpand_threads'] = 'Rozwijaj wątki';
$labels['do_expand'] = 'wszystkie';
$labels['expand_only_unread'] = 'tylko nieprzeczytane';
$labels['fromto'] = 'Od/Do';
$labels['flag'] = 'Flaga';
$labels['attachment'] = 'Załącznik';
$labels['nonesort'] = 'Brak';
$labels['sentdate'] = 'Data wysyłki';
$labels['arrival'] = 'Data odbioru';
$labels['asc'] = 'rosnąco';
$labels['desc'] = 'malejąco';
$labels['listcolumns'] = 'Kolumny';
$labels['listsorting'] = 'Porządek sortowania';
$labels['listorder'] = 'Kierunek sortowania';
$labels['listmode'] = 'Typ listy';
$labels['lmode'] = 'Rodzaj listy';
$labels['layout'] = 'Układ';
$labels['layoutwidescreen'] = 'Szeroki ekran';
$labels['layoutdesktop'] = 'Pulpit';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Szeroki ekran (widok 3-kolumnowy)';
$labels['layoutdesktopdesc'] = 'Pulpit (szeroka lista i podgląd wiadomości poniżej)';
$labels['layoutlistdesc'] = 'Lista (bez podglądu wiadomości)';
$labels['folderactions'] = 'Działania na folderach...';
$labels['compact'] = 'Porządkuj';
$labels['empty'] = 'Opróżnij';
$labels['importmessages'] = 'Import wiadomości';
$labels['mailimportdesc'] = 'Możesz zaimportować pliki w formacie <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> lub <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Wiele plików może być skompresowane przy użyciu archiwum zip.';
$labels['quota'] = 'Użyte miejsce';
$labels['unknown'] = 'nieznane';
$labels['unlimited'] = 'bez limitu';
$labels['quotatype'] = 'Typ limitu';
$labels['quotatotal'] = 'Ograniczenie';
$labels['quotaused'] = 'Używany';
$labels['quotastorage'] = 'Przestrzeń dyskowa';
$labels['quotamessage'] = 'Ilość wiadomości';
$labels['shortheaderdate'] = 'W dniu $date';
$labels['shortheaderto'] = 'Do $to w dniu $date';
$labels['shortheaderfrom'] = 'Od $from w dniu $date';
$labels['quicksearch'] = 'Szybkie wyszukiwanie';
$labels['searchplaceholder'] = 'Szukaj...';
$labels['resetsearch'] = 'Wyczyść filtr';
$labels['searchmod'] = 'Parametry wyszukiwania';
$labels['msgtext'] = 'Cała wiadomość';
$labels['body'] = 'Treść';
$labels['type'] = 'Typ';
$labels['namex'] = 'Nazwa';
$labels['searchscope'] = 'Zakres';
$labels['currentfolder'] = 'Bieżący folder';
$labels['subfolders'] = 'Ten i podfoldery';
$labels['allfolders'] = 'Wszystkie foldery';
$labels['searchinterval-1W'] = 'starsza niż tydzień';
$labels['searchinterval-1M'] = 'starsza niż miesiąc';
$labels['searchinterval-1Y'] = 'starsza niż rok';
$labels['searchinterval1W'] = 'młodsza niż tydzień';
$labels['searchinterval1M'] = 'młodsza niż miesiąc';
$labels['searchinterval1Y'] = 'młodsza niż rok';
$labels['openinextwin'] = 'Otwórz w nowym oknie';
$labels['emlsave'] = 'Pobierz (.eml)';
$labels['changeformattext'] = 'Wyświetl w formacie tekstowym';
$labels['changeformathtml'] = 'Wyświetl w formacie HTML';
$labels['editasnew'] = 'Edytuj jako nową';
$labels['send'] = 'Wyślij';
$labels['sendmessage'] = 'Wyślij teraz';
$labels['savemessage'] = 'Zapisz kopię roboczą';
$labels['addattachment'] = 'Dołącz plik';
$labels['charset'] = 'Kodowanie znaków';
$labels['editortype'] = 'Typ edytora';
$labels['returnreceipt'] = 'Potwierdzenie odbioru';
$labels['dsn'] = 'Status dostarczenia (DSN)';
$labels['mailreplyintro'] = 'W dniu $date, $sender napisał(a):';
$labels['originalmessage'] = 'Wiadomość oryginalna';
$labels['selectimage'] = 'Wybierz obraz';
$labels['addimage'] = 'Dodaj obraz';
$labels['selectmedia'] = 'Wybierz film';
$labels['addmedia'] = 'Dodaj film';
$labels['encrypt'] = 'Szyfrowanie';
$labels['encryptmessage'] = 'Szyfruj wiadomość';
$labels['encryptmessagemailvelope'] = 'Szyfruj wiadomość używając Mailvelope';
$labels['importpubkeys'] = 'Importuj klucze publiczne';
$labels['encryptedsendialog'] = 'Wysyłanie zaszyfrowanej wiadomości';
$labels['encryptandsign'] = 'Szyfruj i podpisz';
$labels['keyid'] = 'ID Klucza';
$labels['keylength'] = 'Bitów';
$labels['keyexpired'] = 'Przedawniony';
$labels['keyrevoked'] = 'Unieważniony';
$labels['bccinstead'] = 'Użyj Bcc';
$labels['addheader'] = 'Dodaj odbiorcę (nagłówek)';
$labels['insert'] = 'Wstaw';
$labels['insertcontact'] = 'Wstaw kontakt(y)';
$labels['recipient'] = 'Odbiorca';
$labels['recipientedit'] = 'Edycja odbiorcy';
$labels['editidents'] = 'Edytuj tożsamości';
$labels['spellcheck'] = 'Pisownia';
$labels['checkspelling'] = 'Sprawdź pisownię';
$labels['resumeediting'] = 'Zakończ sprawdzanie pisowni';
$labels['revertto'] = 'Powróć do';
$labels['restore'] = 'Przywróć';
$labels['restoremessage'] = 'Przyrócić wiadomość?';
$labels['ignore'] = 'Ignoruj';
$labels['responses'] = 'Odpowiedzi';
$labels['insertresponse'] = 'Wstaw odpowiedź';
$labels['manageresponses'] = 'Zarządzaj odpowiedziami';
$labels['newresponse'] = 'Utwórz nową odpowiedź';
$labels['addresponse'] = 'Dodaj odpowiedź';
$labels['editresponse'] = 'Edytuj odpowiedź';
$labels['editresponses'] = 'Edytuj odpowiedzi';
$labels['responsename'] = 'Nazwa';
$labels['responsetext'] = 'Tekst odpowiedzi';
$labels['attach'] = 'Załącz';
$labels['attachments'] = 'Załączniki';
$labels['upload'] = 'Prześlij';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zamknij';
$labels['messageoptions'] = 'Opcje wiadomości...';
$labels['togglecomposeoptions'] = 'Przestaw opcje kompozycji';
$labels['attachmentrename'] = 'Zmiana nazwy załącznika';
$labels['low'] = 'Niski';
$labels['lowest'] = 'Bardzo niski';
$labels['normal'] = 'Normalny';
$labels['high'] = 'Wysoki';
$labels['highest'] = 'Bardzo wysoki';
$labels['nosubject'] = '(brak tematu)';
$labels['showimages'] = 'Wyświetl obrazki';
$labels['allow'] = 'Zezwól';
$labels['alwaysshow'] = 'Zawsze wyświetlaj obrazki od $sender';
$labels['alwaysallow'] = 'Zawsze zezwalaj od $sender';
$labels['isdraft'] = 'To jest kopia robocza wiadomości.';
$labels['andnmore'] = '$nr więcej...';
$labels['details'] = 'Szczegóły';
$labels['summary'] = 'Ogólne';
$labels['headers'] = 'Nagłówki';
$labels['allheaders'] = 'Wszystkie nagłówki...';
$labels['togglemoreheaders'] = 'Pokaż więcej nagłówków wiadomości';
$labels['togglefullheaders'] = 'Przełącz podgląd nagłówków wiadomości';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Zwykły tekst';
$labels['savesentmessagein'] = 'Zapisz wiadomość w';
$labels['dontsave'] = 'nie zapisuj';
$labels['maxuploadsize'] = 'Maksymalny rozmiar pliku to $size';
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj Reply-To';
$labels['addfollowupto'] = 'Dodaj Followup-To';
$labels['sendreceipt'] = 'Wysłać potwierdzenie odbioru?';
$labels['mdnrequest'] = 'Nadawca zażądał potwierdzenia przeczytania tej wiadomości. Czy chcesz go powiadomić?';
$labels['receiptread'] = 'Potwierdzenie otrzymania';
$labels['yourmessage'] = 'To jest potwierdzenie dostarczenia Twojej wiadomości';
$labels['receiptnote'] = 'Uwaga: To potwierdzenie dostarczenia wiadomości oznacza tylko, że wiadomość została wyświetlona na komputerze adresata. Nie ma żadnej gwarancji, że odbiorca przeczytał czy też zrozumiał treść wiadomości.';
$labels['sendalwaysto'] = 'Zawsze wysyłaj do $email';
$labels['zoomin'] = 'Zwiększ';
$labels['zoomout'] = 'Zmniejsz';
$labels['rotate'] = 'Obróć';
$labels['increaseimage'] = 'Zwiększ rozmiar obrazu';
$labels['decreaseimage'] = 'Zmniejsz rozmiar obrazu';
$labels['rotateimage'] = 'Obróć obraz';
$labels['showtools'] = 'Pokaż narzędzia obrazu';
$labels['hidetools'] = 'Ukryj narzędzia obrazu';
$labels['name'] = 'Nazwa wyświetlana';
$labels['firstname'] = 'Imię';
$labels['surname'] = 'Nazwisko';
$labels['middlename'] = 'Drugie imię';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Sufiks';
$labels['nickname'] = 'Pseudonim';
$labels['jobtitle'] = 'Zawód';
$labels['department'] = 'Oddział';
$labels['gender'] = 'Płeć';
$labels['maidenname'] = 'N. panieńskie';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adres';
$labels['street'] = 'Ulica';
$labels['locality'] = 'Miasto';
$labels['zipcode'] = 'Kod';
$labels['region'] = 'Region';
$labels['country'] = 'Kraj';
$labels['birthday'] = 'Urodziny';
$labels['anniversary'] = 'Jubileusz';
$labels['website'] = 'Strona internetowa';
$labels['instantmessenger'] = 'Komunikator';
$labels['notes'] = 'Notatki';
$labels['male'] = 'mężczyzna';
$labels['female'] = 'kobieta';
$labels['manager'] = 'Kierownik';
$labels['assistant'] = 'Asystent';
$labels['spouse'] = 'Małżonek';
$labels['allfields'] = 'Wszystkie pola';
$labels['search'] = 'Szukaj';
$labels['searchresult'] = 'Wyniki wyszukiwania';
$labels['advsearch'] = 'Wyszukiwanie zaawansowane';
$labels['advanced'] = 'Zaawansowane';
$labels['other'] = 'Inne';
$labels['printcontact'] = 'Drukuj Kontakt';
$labels['qrcode'] = 'Kod QR';
$labels['typehome'] = 'Dom';
$labels['typework'] = 'Praca';
$labels['typeother'] = 'Inne';
$labels['typemobile'] = 'Komórkowy';
$labels['typemain'] = 'Główny';
$labels['typehomefax'] = 'Fax domowy';
$labels['typeworkfax'] = 'Fax firmowy';
$labels['typecar'] = 'Samochód';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Wideo';
$labels['typeassistant'] = 'Asystent';
$labels['typehomepage'] = 'Strona domowa';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj pole...';
$labels['addcontact'] = 'Dodaj kontakt';
$labels['editcontact'] = 'Edytuj kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Właściwości';
$labels['contactnameandorg'] = 'Nazwa i organizacja';
$labels['personalinfo'] = 'Informacje osobiste';
$labels['personal'] = 'Osobiste';
$labels['contactphoto'] = 'Zdjęcie kontaktu';
$labels['edit'] = 'Edytuj';
$labels['cancel'] = 'Anuluj';
$labels['save'] = 'Zapisz';
$labels['delete'] = 'Usuń';
$labels['discard'] = 'Odrzuć';
$labels['continue'] = 'Kontynuuj';
$labels['ok'] = 'OK';
$labels['rename'] = 'Zmień nazwę';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamień';
$labels['uploadphoto'] = 'Wyślij zdjęcie';
$labels['choosefile'] = 'Wybierz plik...';
$labels['choosefiles'] = 'Wybierz pliki...';
$labels['browse'] = 'Przeglądaj';
$labels['newcontact'] = 'Dodaj nowy kontakt';
$labels['deletecontact'] = 'Usuń zaznaczone kontakty';
$labels['composeto'] = 'Utwórz wiadomość do wybranych kontaktów';
$labels['contactsfromto'] = 'Kontakty od $from do $to z $count';
$labels['print'] = 'Drukuj';
$labels['export'] = 'Eksportuj';
$labels['exportall'] = 'Eksportuj wszystkie';
$labels['exportsel'] = 'Eksportuj zaznaczone';
$labels['exportvcards'] = 'Eksport kontaktów w formacie vCard';
$labels['newgroup'] = 'Utwórz nową grupę';
$labels['addgroup'] = 'Dodaj grupę';
$labels['grouprename'] = 'Zmień nazwę grupy';
$labels['groupdelete'] = 'Usuń grupę';
$labels['groupassign'] = 'Przypisz do grupy...';
$labels['groupremove'] = 'Usuń z grupy';
$labels['groupremoveselected'] = 'Usuń wybrane kontakty z grupy';
$labels['uponelevel'] = 'Jeden poziom w górę';
$labels['previouspage'] = 'Poprzednia strona';
$labels['firstpage'] = 'Pierwsza strona';
$labels['nextpage'] = 'Następna strona';
$labels['lastpage'] = 'Ostatnia strona';
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupy';
$labels['listgroup'] = 'Członkowie grupy';
$labels['personaladrbook'] = 'Kontakty osobiste';
$labels['searchsave'] = 'Zapisz wyszukiwanie';
$labels['searchdelete'] = 'Usuń wyszukiwanie';
$labels['import'] = 'Importuj';
$labels['importcontacts'] = 'Import kontaktów';
$labels['importfromfile'] = 'Import z pliku';
$labels['importtarget'] = 'Dodaj kontakty do';
$labels['importreplace'] = 'Zastąp całą książkę adresową';
$labels['importgroups'] = 'Importuj powiązania z grupami';
$labels['importgroupsall'] = 'Wszystkie (utwórz grupy jeśli potrzeba)';
$labels['importgroupsexisting'] = 'Tylko do isniejących grup';
$labels['importdesc'] = 'Możesz zaimportować kontakty z istniejącej książki adresowej.<br/>Obecnie wspierany jest format <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> lub CSV (dane odzielone przecinkami).';
$labels['importmapdesc'] = 'Przed przystąpieniem do importu danych w formacie CSV potwierdź poprawność powiązania pól.';
$labels['fieldnotmapped'] = 'Pole niepowiązane (pomiń)';
$labels['skipheader'] = 'Nie importuj pierwszej linii (nagłówki)';
$labels['done'] = 'Wykonane';
$labels['settingsfor'] = 'Ustawienia dla';
$labels['about'] = 'O programie';
$labels['preferences'] = 'Preferencje';
$labels['userpreferences'] = 'Preferencje użytkownika';
$labels['editpreferences'] = 'Edytuj preferencje';
$labels['identities'] = 'Tożsamości';
$labels['manageidentities'] = 'Zarządzaj tożsamościami';
$labels['newidentity'] = 'Utwórz nową tożsamość';
$labels['addidentity'] = 'Dodaj tożsamość';
$labels['editidentity'] = 'Edytuj tożsamości';
$labels['identityencryption'] = 'Szyfrowanie';
$labels['preferhtml'] = 'Domyślny HTML';
$labels['defaultcharset'] = 'Domyślny zestaw znaków';
$labels['htmlmessage'] = 'Wiadomość HTML';
$labels['messagepart'] = 'Część';
$labels['digitalsig'] = 'Podpis cyfrowy';
$labels['dateformat'] = 'Format daty';
$labels['timeformat'] = 'Format czasu';
$labels['prettydate'] = 'Ładne daty';
$labels['setdefault'] = 'Domyślna';
$labels['autodetect'] = '- wybór automatyczny -';
$labels['language'] = 'Język';
$labels['timezone'] = 'Strefa czasowa';
$labels['pagesize'] = 'Liczba wierszy na stronie';
$labels['signature'] = 'Podpis';
$labels['dstactive'] = 'Czas letni';
$labels['showinextwin'] = 'Otwórz wiadomość w nowym oknie';
$labels['composeextwin'] = 'Twórz w nowym oknie';
$labels['htmleditor'] = 'Twórz wiadomości HTML';
$labels['htmlonreply'] = 'tylko w odpowiedzi na wiadomość HTML';
$labels['htmlonreplyandforward'] = 'podczas przesyłania dalej lub odpowiedzi na wiadomość HTML';
$labels['htmlsignature'] = 'Podpis w HTML';
$labels['showemail'] = 'Pokazuj adres e-mail wraz z nazwą/opisem';
$labels['previewpane'] = 'Pokaż podgląd wiadomości';
$labels['skin'] = 'Wygląd interfejsu';
$labels['logoutclear'] = 'Przy wylogowaniu opróżnij Kosz';
$labels['logoutcompact'] = 'Przy wylogowaniu porządkuj folder Odebrane';
$labels['uisettings'] = 'Interfejs użytkownika';
$labels['serversettings'] = 'Ustawienia serwera';
$labels['mailboxview'] = 'Widok skrzynki pocztowej';
$labels['mdnrequests'] = 'Na żądanie potwierdzenia odbioru';
$labels['askuser'] = 'pytaj mnie';
$labels['autosend'] = 'wyślij potwierdzenie';
$labels['autosendknown'] = 'wyślij potwierdzenie tylko do moich kontaktów, pytaj o pozostałe';
$labels['autosendknownignore'] = 'wyślij potwierdzenie tylko do moich kontaktów, pozostałe ignoruj';
$labels['autosendtrusted'] = 'wyślij do zaufanych nadawców, w innych przypadkach pytaj';
$labels['autosendtrustedignore'] = 'wyślij do zaufanych nadawców, w innych przypadkach ignoruj';
$labels['ignorerequest'] = 'ignoruj żądanie';
$labels['readwhendeleted'] = 'Podczas usuwania oznacz wiadomość jako przeczytaną';
$labels['flagfordeletion'] = 'Oznacz wiadomość do usunięcia zamiast ją usuwać';
$labels['skipdeleted'] = 'Ukryj wiadomości oznaczone do usunięcia';
$labels['deletealways'] = 'Usuń wiadomości, gdy przenoszenie do Kosza zawiedzie';
$labels['deletejunk'] = 'Kasuj wiadomości bezpośrednio w folderze Spam';
$labels['showremoteimages'] = 'Wyświetlaj obrazki w wiadomościach';
$labels['allowremoteresources'] = 'Zezwól na zdalne zasoby (obrazki, style)';
$labels['fromknownsenders'] = 'od znanych nadawców';
$labels['fromtrustedsenders'] = 'od zaufanych nadawców';
$labels['frommycontacts'] = 'od moich kontaktów';
$labels['always'] = 'zawsze';
$labels['alwaysbutplain'] = 'zawsze, za wyjątkiem odpowiedzi na zwykły tekst.';
$labels['showinlineimages'] = 'Wyświetlaj załączone obrazki pod treścią wiadomości';
$labels['autosavedraft'] = 'Automatycznie zapisuj tworzoną wiadomość';
$labels['everynminutes'] = 'co $n minut(y)';
$labels['refreshinterval'] = 'Odświeżanie (sprawdzanie nowych wiadomości, etc.)';
$labels['never'] = 'nigdy';
$labels['immediately'] = 'natychmiast';
$labels['messagesdisplaying'] = 'Wyświetlanie wiadomości';
$labels['messagescomposition'] = 'Tworzenie wiadomości';
$labels['mimeparamfolding'] = 'Stosuj nazwy załączników zgodne z';
$labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (przestarzałe)';
$labels['force7bit'] = 'Używaj kodowania MIME dla znaków 8-bitowych';
$labels['savelocalstorage'] = "Zapisz w lokalnej bazie przeglądarki (tymczasowo)";
$labels['advancedoptions'] = 'Opcje zaawansowane';
$labels['toggleadvancedoptions'] = 'Pokaż/ukryj opcje zaawansowane';
$labels['focusonnewmessage'] = 'Informuj przeglądarkę o nowej wiadomości';
$labels['checkallfolders'] = 'Sprawdzaj czy nadeszły nowe wiadomości we wszystkich folderach';
$labels['displaynext'] = 'Po usunięciu elementu listy wyświetl następny';
$labels['defaultfont'] = 'Czcionka wiadomości HTML';
$labels['mainoptions'] = 'Opcje główne';
$labels['browseroptions'] = 'Opcje przeglądarki';
$labels['section'] = 'Sekcja';
$labels['maintenance'] = 'Konserwacja';
$labels['newmessage'] = 'Nowa wiadomość';
$labels['signatureoptions'] = 'Opcje podpisów';
$labels['whenreplying'] = 'Podczas odpowiadania rozpocznij wiadomość';
$labels['replyempty'] = 'nie cytuj oryginalnej wiadomości';
$labels['replytopposting'] = 'powyżej cytowanej treści';
$labels['replytoppostingnoindent'] = 'Zacznij nową wiadomość ponad cytowaną treścią (brak wcięcia)';
$labels['replybottomposting'] = 'poniżej cytowanej treści';
$labels['replyremovesignature'] = 'Podczas odpowiedzi usuń podpis z cytowanej treści';
$labels['autoaddsignature'] = 'Automatycznie wstaw podpis';
$labels['newmessageonly'] = 'tylko dla nowych wiadomości';
$labels['replyandforwardonly'] = 'tylko dla przekazywania i odpowiedzi';
$labels['insertsignature'] = 'Wstaw podpis';
$labels['sigbelow'] = 'Umieść podpis poniżej cytowanej wiadomości';
$labels['sigseparator'] = 'Wymuś standardowy separator w podpisie';
$labels['automarkread'] = 'Oznacz wiadomości jako przeczytane';
$labels['afternseconds'] = 'po $n sekundach';
$labels['reqmdn'] = 'Zawsze żądaj potwierdzenia odbioru';
$labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)';
$labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam';
$labels['defaultabook'] = 'Domyślna książka adresowa';
$labels['autocompletesingle'] = 'Nie pokazuj alternatywnych adresów przy autouzupełnianiu';
$labels['listnamedisplay'] = 'Wyświetl kontakty jako';
$labels['contactformmode'] = 'Tryb formularza kontaktu';
$labels['privatemode'] = 'Osobisty (Dom)';
$labels['businessmode'] = 'Firmowy (Praca)';
$labels['collectedaddresses'] = 'Zebrane adresy';
$labels['collectedrecipients'] = 'Zebrani adresaci';
$labels['collectedrecipientsopt'] = 'Zapisuj adresatów poczty do';
$labels['collectedsendersopt'] = 'Zapisuj zaufanych nadawców do';
$labels['trustedsenders'] = 'Zaufani nadawcy';
$labels['spellcheckbeforesend'] = 'Przed wysłaniem wiadomości sprawdzaj pisownię';
$labels['spellcheckoptions'] = 'Opcje sprawdzania pisowni';
$labels['spellcheckignoresyms'] = 'Ignoruj słowa zawierające symbole';
$labels['spellcheckignorenums'] = 'Ignoruj słowa zawierające cyfry';
$labels['spellcheckignorecaps'] = 'Ignoruj słowa pisane wielkimi literami';
$labels['addtodict'] = 'Dodaj do słownika';
$labels['mailtoprotohandler'] = 'Zainstaluj obsługę linków mailto:';
$labels['standardwindows'] = 'Traktuj okna wyskakujące jako standardowe okna';
$labels['forwardmode'] = 'Przekazywanie wiadomości';
$labels['inline'] = 'w treści';
$labels['asattachment'] = 'jako załącznik';
$labels['replyallmode'] = 'Domyśla akcja przycisku [Odpowiedz wszystkim]';
$labels['replyalldefault'] = 'odpowiedz wszystkim';
$labels['replyalllist'] = 'odpowiedz tylko do listy mailingowej (jeśli wykryto)';
$labels['allmessages'] = 'wszystkich';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Foldery';
$labels['foldername'] = 'Nazwa folderu';
$labels['subscribed'] = 'Zasubskrybowany';
$labels['messagecount'] = 'Wiadomości';
$labels['create'] = 'Utwórz';
$labels['createfolder'] = 'Utwórz nowy folder';
$labels['managefolders'] = 'Zarządzaj folderami';
$labels['specialfolders'] = 'Foldery specjalne';
$labels['properties'] = 'Właściwości';
$labels['folderproperties'] = 'Właściwości folderu';
$labels['parentfolder'] = 'Folder nadrzędny';
$labels['location'] = 'Położenie';
$labels['info'] = 'Informacje';
$labels['getfoldersize'] = 'Kliknij aby pobrać rozmiar folderu';
$labels['changesubscription'] = 'Kliknij aby zmienić subskrypcję';
$labels['foldertype'] = 'Typ folderu';
$labels['personalfolder'] = 'Folder prywatny';
$labels['otherfolder'] = 'Folder innego użytkownika';
$labels['sharedfolder'] = 'Folder współdzielony';
$labels['findfolders'] = 'Szukaj folderów';
$labels['findcontacts'] = 'Znajdź kontakty';
$labels['findmail'] = 'Znajdź wiadomości pocztowe';
$labels['namespace.personal'] = 'Osobiste';
$labels['namespace.other'] = 'Innych użytkowników';
$labels['namespace.shared'] = 'Współdzielone';
$labels['dualuselabel'] = 'Może zawierać tylko';
$labels['dualusemail'] = 'wiadomości';
$labels['dualusefolder'] = 'foldery';
$labels['generate'] = 'Generuj';
$labels['encryptioncreatekey'] = 'Utwórz nową parę kluczy';
$labels['openmailvelopesettings'] = 'Otwórz ustawienia Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Znaleziono $nr pasujących kluczy prywatnych w bazie Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Wybrana tożsamość nadawcy nie posiada pasującego klucza prywatnego w bazie Mailvelope. Czy chcesz utworzyć klucz pozwalający szyfrować wiadomości?';
$labels['encryption'] = 'Szyfrowanie';
$labels['mailvelopeoptions'] = 'Opcje Mailvelope';
$labels['mailvelopemainkeyring'] = 'Korzystaj z głównego zasobu kluczy (keyring) Mailvelope';
$labels['mailvelopenotfound'] = 'Rozszerzenie Mailvelope nie jest włączone/zainstalowane w twojej przeglądarce.';
$labels['sortby'] = 'Sortuj wg';
$labels['sortasc'] = 'Rosnąco';
$labels['sortdesc'] = 'Malejąco';
$labels['undo'] = 'Cofnij';
$labels['installedplugins'] = 'Zainstalowane wtyczki';
$labels['plugin'] = 'Wtyczka';
$labels['version'] = 'Wersja';
$labels['source'] = 'Źródła';
$labels['destination'] = 'Cel';
$labels['license'] = 'Licencja';
$labels['support'] = 'Wsparcie techniczne';
$labels['savedsearches'] = 'Zapisane wyszukiwania';
$labels['dateformatY'] = 'RRRR';
$labels['dateformaty'] = 'RR';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'kB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'uniwersalny';
$labels['english'] = 'angielski';
$labels['westerneuropean'] = 'zachodnioeuropejski';
$labels['easterneuropean'] = 'wschodnioeuropejski';
$labels['southeasterneuropean'] = 'południowo-wschodnioeuropejski';
$labels['baltic'] = 'bałtycki';
$labels['cyrillic'] = 'cyrylica';
$labels['arabic'] = 'arabski';
$labels['greek'] = 'grecki';
$labels['hebrew'] = 'hebrajski';
$labels['turkish'] = 'turecki';
$labels['nordic'] = 'nordycki';
$labels['thai'] = 'tajski';
$labels['celtic'] = 'celtycki';
$labels['vietnamese'] = 'wietnamski';
$labels['japanese'] = 'japoński';
$labels['korean'] = 'koreański';
$labels['chinese'] = 'chiński';
$labels['arialabeltopnav'] = 'Kontrolki okna';
$labels['arialabeltasknav'] = 'Zadania aplikacji';
$labels['arialabeltoolbar'] = 'Narzędzia aplikacji';
$labels['arialabellistnav'] = 'Obsługa listy';
$labels['arialabelactivetask'] = 'Aktywne zadanie';
$labels['arialabelmessagessearchfilter'] = 'Filtr listy wiadomości';
$labels['arialabelmailsearchform'] = 'Formularz wyszukiwania wiadomości';
$labels['arialabelcontactsearchform'] = 'Formularz wyszukiwania kontaktów';
$labels['arialabelmailquicksearchbox'] = 'Wejście danych wyszukiwania';
$labels['arialabelquicksearchbox'] = 'Wejście danych wyszukiwania';
$labels['arialabelfoldersearchfilter'] = 'Filtr listy folderów';
$labels['arialabelfoldersearchform'] = 'Formularz wyszukiwania folderów';
$labels['arialabelfolderlist'] = 'Wybór folderu';
$labels['arialabelmessagelist'] = 'Lista wiadomości e-mail';
$labels['arialabelmailpreviewframe'] = 'Podgląd wiadomości';
$labels['arialabelmailboxmenu'] = 'Menu akcji folderów';
$labels['arialabellistselectmenu'] = 'Menu zaznaczenia listy';
$labels['arialabelthreadselectmenu'] = 'Menu wątków listy';
$labels['arialabelmessagelistoptions'] = 'Opcje wyświetlania i sortowania listy';
$labels['arialabelmailimportdialog'] = 'Dialog importu wiadomości';
$labels['arialabelmessagenav'] = 'Nawigacja wiadomości';
$labels['arialabelmessagebody'] = 'Treść wiadomości';
$labels['arialabelmessageactions'] = 'Akcje wiadomości';
$labels['arialabelcontactquicksearch'] = 'Formularz wyszukiwania kontaktów';
$labels['arialabelcontactsearchbox'] = 'Wejście danych wyszukiwania';
$labels['arialabelmessageheaders'] = 'Nagłówki wiadomości';
$labels['arialabelforwardingoptions'] = 'Opcje przekazywania wiadomości';
$labels['arialabelreplyalloptions'] = 'Opcje odpowiedzi do wszystkich';
$labels['arialabelmoremessageactions'] = 'Więcej akcji';
$labels['arialabelmorecontactactions'] = 'Więcej akcji';
$labels['arialabelmarkmessagesas'] = 'Oznacz wybrane wiadomości jako...';
$labels['arialabelcomposeoptions'] = 'Opcje kompozycji';
$labels['arialabelresponsesmenu'] = 'Menu zapisanych odpowiedzi';
$labels['arialabelattachmentuploadform'] = 'Formularz wysyłania załączników';
$labels['arialabelattachmentmenu'] = 'Opcje załączników';
$labels['arialabelmailtomenu'] = 'Opcje adresu email';
$labels['arialabelattachmentpreview'] = 'Podgląd załącznika';
$labels['ariasummarycomposecontacts'] = 'Lista wyboru kontaktów/grup jako odbiorców';
$labels['arialabelcontactexportoptions'] = 'Opcje eksportu kontaktów';
$labels['arialabelabookgroupoptions'] = 'Opcje książki adresowej i grup';
$labels['arialabelpreferencesform'] = 'Formularz ustawień';
$labels['arialabelidentityeditfrom'] = 'Formularz edycji tożsamości';
$labels['arialabelresponseeditfrom'] = 'Formularz edycji odpowiedzi';
$labels['arialabelsearchterms'] = 'Szukana fraza';
$labels['arialabeldropactionmenu'] = 'Menu Przeciągnij-i-upuść';
$labels['arialabelheadersmenu'] = 'Menu dodawania odbiorcy (nagłóweka)';
$labels['arialabelimagetools'] = 'Narzędzia obrazu';
$labels['helplistnavigation'] = 'Obsługa listy przy pomocy klawiatury';
$labels['helplistkeyboardnavigation'] = "Strzałki góra/dół: Oznaczanie/poruszanie się po wierszach.
Spacja: Wybór bieżącego wiersza.
SHIFT + góra/dół: Oznaczenie dodatkowych wierszy.
CTRL + Spacja: Zaznaczenie/odznaczenie bieżącego wiersza.";
$labels['helplistkeyboardnavmessages'] = "Strzałki prawo/lewo: Rozwiniecie/zwinięcie wątku (w trybie wątkowania).
ENTER: Otwarcie bieżącej wiadomości.
DELETE: Usunięcie/Przeniesienie wiadomości do Kosza.";
$labels['helplistkeyboardnavcontacts'] = "ENTER: Otwarcie bieżącego kontaktu.";
localization/pl_PL/messages.inc000064400000043576151727150570012575 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Wystąpił błąd!';
$messages['loginfailed']  = 'Błąd logowania!';
$messages['cookiesdisabled'] = 'Twoja przeglądarka nie obsługuje ciasteczek!';
$messages['sessionerror'] = 'Błąd sesji bądź sesja wygasła!';
$messages['cookiesmismatch'] = 'Niezgodność ciasteczek. Proszę usunąć ciasteczka zapisane w przeglądarce.';
$messages['storageerror'] = 'Błąd połączenia z serwerem!';
$messages['servererror'] = 'Błąd serwera!';
$messages['servererrormsg'] = 'Błąd serwera: $msg';
$messages['accountlocked'] = 'Przekroczono maksymalną dozwoloną liczbę prób logowania. Proszę spróbować później.';
$messages['connerror'] = 'Błąd połączenia (brak odpowiedzi serwera)!';
$messages['dberror'] = 'Błąd bazy danych!';
$messages['dbconnerror'] = 'Nie można nawiązać połączenia z bazą danych!';
$messages['windowopenerror'] = 'Wyskakujące okno zostało zablokowane!';
$messages['requesttimedout'] = 'Upłynął limit czasu żądania';
$messages['errorreadonly'] = 'Nie można wykonać operacji. Folder tylko do odczytu.';
$messages['errornoperm'] = 'Nie można wykonać operacji. Brak uprawnień.';
$messages['erroroverquota'] = 'Nie można wykonać operacji. Brak miejsca na dysku.';
$messages['erroroverquotadelete'] = 'Brak miejsca na dysku. Użyj SHIFT+DEL aby usunąć wiadomość.';
$messages['invalidrequest'] = 'Błędne żądanie! Nie zapisano danych.';
$messages['invalidhost'] = 'Błędna nazwa serwera.';
$messages['nomessagesfound'] = 'Brak wiadomości w skrzynce.';
$messages['loggedout'] = 'Sesja została zakończona poprawnie. Do widzenia!';
$messages['mailboxempty'] = 'Folder jest pusty';
$messages['nomessages'] = 'Brak wiadomości';
$messages['refreshing'] = 'Odświeżanie...';
$messages['loading'] = 'Ładowanie...';
$messages['uploading'] = 'Zapisywanie pliku...';
$messages['attaching'] = 'Dołączanie pliku...';
$messages['uploadingmany'] = 'Zapisywanie plików...';
$messages['loadingdata'] = 'Ładowanie danych...';
$messages['checkingmail'] = 'Sprawdzanie nowych wiadomości...';
$messages['sendingmessage'] = 'Wysyłanie wiadomości...';
$messages['messagesent'] = 'Wiadomość została wysłana.';
$messages['savingmessage'] = 'Zapisywanie wiadomości...';
$messages['messagesaved'] = 'Wiadomość została zapisana w folderze Kopie robocze.';
$messages['successfullysaved'] = 'Zapisano pomyślnie.';
$messages['savingresponse'] = 'Zapisywanie tekstu odpowiedzi...';
$messages['deleteresponseconfirm'] = 'Czy na pewno chcesz usunąć tą odpowiedź?';
$messages['nocontactselected'] = 'Nie wybrałeś jeszcze kontaktu.';
$messages['addedsuccessfully'] = 'Kontakt został dodany.';
$messages['contactexists'] = 'Kontakt o podanym adresie e-mail już istnieje!';
$messages['contactnameexists'] = 'Kontakt z podaną nazwą już istnieje!';
$messages['blockedimages'] = 'Ze względów bezpieczeństwa zewnętrzne obrazki zostały zablokowane.';
$messages['blockedresources'] = 'W celu ochrony prywatności zablokowano zdalne zasoby.';
$messages['suspiciousemail'] = 'Ta wiadomość może być próbą oszustwa, gdyż zawiera podejrzane adresy email.';
$messages['bccemail'] = 'Przekazywane wiadomości zawierają poufnych odbiorców (Bcc).';
$messages['bouncehint'] = 'Wiadomość zostanie wysłana bez żadnych modyfikacji, tzn. przy użyciu oryginalnej treści, nagłówków i odbiorców.';
$messages['encryptedmessage'] = 'Przepraszamy, nie można wyświetlić zaszyfrowanej wiadomości!';
$messages['externalmessagedecryption'] = 'Ta wiadomość jest zaszyfrowana i może zostać odszyfrowana za pomocą rozszerzenia przeglądarki.';
$messages['nopubkeyfor'] = 'Nie znaleziono klucza publicznego dla $email';
$messages['nopubkeyforsender'] = 'Nie znaleziono klucza publicznego dla używanej tożsamości. Czy chcesz zaszyfrować wiadomość tylko dla adresatów?';
$messages['encryptnoattachments'] = 'Załączniki, które zostały poprzednio przesłane na serwer nie mogą zostać zaszyfrowane. Należy przesłać je ponownie poprzez dodanie do edytora szyfrowania.';
$messages['searchpubkeyservers'] = 'Czy wyszukać brakujące klucze na serwerach kluczy?';
$messages['encryptpubkeysfound'] = 'Znaleziono następujące klucze:';
$messages['keyservererror'] = 'Pobieranie klucza z serwera nie powiodło się.';
$messages['keyimportsuccess'] = 'Klucz $key został pomyślnie zaimportowany do bazy kluczy.';
$messages['nocontactsfound'] = 'Nie znaleziono kontaktu!';
$messages['contactnotfound'] = 'Szukany kontakt nie został odnaleziony.';
$messages['contactsearchonly'] = 'Dostęp do kontaktów z wybranej książki adresowej możliwy jedynie poprzez formularz wyszukiwania.';
$messages['sendingfailed'] = 'Nie udało się wysłać wiadomości!';
$messages['senttooquickly'] = 'Musisz poczekać $sec sek. aby móc wysłać tą wiadomość!';
$messages['errorsavingsent'] = 'Wystąpił błąd podczas zapisu wysłanej wiadomości!';
$messages['errorsaving'] = 'Wystąpił błąd podczas zapisu!';
$messages['errormoving'] = 'Nie można przenieść wiadomości!';
$messages['errorcopying'] = 'Nie można skopiować wiadomości!';
$messages['errordeleting'] = 'Nie można usunąć wiadomości!';
$messages['errormarking'] = 'Nie można oznaczyć wiadomości!';
$messages['alerttitle'] = 'Uwaga';
$messages['confirmationtitle'] = 'Czy jesteś pewien...';
$messages['deletecontactconfirm']  = 'Czy na pewno chcesz usunąć wybrane kontakty?';
$messages['deletegroupconfirm']  = 'Czy na pewno chcesz usunąć wybraną grupę?';
$messages['deletemessagesconfirm'] = 'Czy na pewno chcesz usunąć wybrane wiadomości?';
$messages['deletefolderconfirm']  = 'Czy na pewno chcesz usunąć wybrany folder?';
$messages['movefolderconfirm']  = 'Czy na pewno chcesz przenieść ten folder?';
$messages['purgefolderconfirm']  = 'Czy na pewno chcesz usunąć wszystkie wiadomości w tym folderze?';
$messages['contactdeleting'] = 'Usuwanie kontaktów...';
$messages['groupdeleting'] = 'Usuwanie grupy...';
$messages['folderdeleting'] = 'Usuwanie folderu...';
$messages['foldermoving'] = 'Przenoszenie folderu...';
$messages['foldersubscribing'] = 'Subskrybowanie folderu...';
$messages['folderunsubscribing'] = 'Odsubskrybowanie folderu...';
$messages['formincomplete'] = 'Uzupełnij formularz!';
$messages['noemailwarning'] = 'Podaj poprawny adres e-mail!';
$messages['nonamewarning']  = 'Podaj nazwę!';
$messages['nopagesizewarning'] = 'Podaj poprawną wartość!';
$messages['nosenderwarning'] = 'Podaj adres e-mail nadawcy!';
$messages['recipientsadded'] = 'Odbiorcy zostali dodani pomyślnie.';
$messages['norecipientwarning'] = 'Podaj co najmniej jednego odbiorcę!';
$messages['disclosedrecipwarning'] = 'Wszyscy odbiorcy będą widzieć adresy e-mail innych. Aby temu zapobiec i chronić ich prywatność możesz użyć pola Bcc.';
$messages['disclosedreciptitle'] = 'Zbyt wielu publicznych odbiorców';
$messages['nosubjectwarning']  = 'Nie podano tematu wiadomości. Czy chcesz go teraz uzupełnić?';
$messages['nosubjecttitle']  = 'Brak tematu';
$messages['nobodywarning'] = 'Ta wiadomość jest pusta, czy mimo to chcesz ją wysłać?';
$messages['notsentwarning'] = 'Wiadomość została zmieniona i nie została jeszcze wysłana. Czy chcesz porzucić zmiany?';
$messages['restoresavedcomposedata'] = 'Wykryto poprzednio tworzoną ale nie wysłaną wiadomość.\n\nTemat: $subject\nZapisano: $date\n\nCzy przywrócić tą wiadomość?';
$messages['nosearchname'] = 'Podaj nazwę kontaktu lub jego adres e-mail.';
$messages['notuploadedwarning'] = 'Nie wszystkie załączniki zostały pobrane. Poczekaj lub anuluj pobieranie.';
$messages['searchsuccessful'] = 'Liczba znalezionych wiadomości: $nr.';
$messages['contactsearchsuccessful'] = 'Znaleziono $nr kontaktów.';
$messages['searchnomatch'] = 'Nic nie znaleziono.';
$messages['searching'] = 'Wyszukiwanie...';
$messages['checking'] = 'Sprawdzanie...';
$messages['stillsearching'] = 'Dalsze wyszukiwanie...';
$messages['nospellerrors'] = 'Nie znaleziono błędów w pisowni.';
$messages['folderdeleted'] = 'Folder został pomyślnie usunięty.';
$messages['foldersubscribed'] = 'Folder został pomyślnie zasubskrybowany.';
$messages['folderunsubscribed'] = 'Folder został pomyślnie odsubskrybowany.';
$messages['folderpurged'] = 'Folder został pomyślnie opróżniony.';
$messages['folderexpunged'] = 'Folder został pomyślnie uporządkowany.';
$messages['deletedsuccessfully'] = 'Usunięto.';
$messages['converting'] = 'Konwertowanie tekstu...';
$messages['messageopenerror'] = 'Nie udało się pobrać treści wiadomości.';
$messages['filelinkerror'] = 'Dołączanie pliku nie powiodło się.';
$messages['fileuploaderror'] = 'Załączanie pliku nie powiodło się.';
$messages['csvfilemismatch'] = 'Import wielu plików CSV z różnymi definicjami pól nie jest możliwy.';
$messages['filesizeerror'] = 'Plik przekracza maksymalną wielkość $size.';
$messages['filecounterror'] = 'Możesz wysłać tylko $count plików jednocześnie.';
$messages['msgsizeerror'] = 'Załączanie pliku nie powiodło się. Przekroczony maksymalny rozmiar wiadomości ($size).';
$messages['msgsizeerrorfwd'] = 'Maksymalny rozmiar wiadomości ($size) został przekroczony. $num wiadomości nie zostało załączonych.';
$messages['copysuccess'] = 'Pomyślnie skopiowano $nr kontaktów.';
$messages['movesuccess'] = 'Pomyślnie przeniesiono $nr kontaktów.';
$messages['copyerror'] = 'Nie udało się skopiować żadnego kontaktu.';
$messages['moveerror'] = 'Nie udało się przenieść żadnego kontaktu.';
$messages['sourceisreadonly'] = 'Źródło adresu jest tylko do odczytu.';
$messages['errorsavingcontact'] = 'Nie można było zapisać adresu kontaktu.';
$messages['movingmessage'] = 'Przenoszenie wiadomości...';
$messages['copyingmessage'] = 'Kopiowanie wiadomości...';
$messages['copyingcontact'] = 'Kopiowanie kontaktów...';
$messages['movingcontact'] = 'Przenoszenie kontaktów...';
$messages['deletingmessage'] = 'Usuwanie wiadomości...';
$messages['markingmessage'] = 'Oznaczanie wiadomości...';
$messages['addingmember'] = 'Dodawanie kontaktów do grupy...';
$messages['removingmember'] = 'Usuwanie kontaktów z grupy...';
$messages['receiptsent'] = 'Pomyślnie wysłano potwierdzenie dostarczenia.';
$messages['errorsendingreceipt'] = 'Nie można wysłać potwierdzenia.';
$messages['deleteidentityconfirm'] = 'Czy na pewno chcesz usunąć tą tożsamość?';
$messages['nodeletelastidentity'] = 'Nie można skasować tej tożsamości, ponieważ jest ostatnią.';
$messages['forbiddencharacter'] = 'Nazwa folderu zawiera niedozwolony znak.';
$messages['selectimportfile'] = 'Proszę wybrać plik do wysłania.';
$messages['addresswriterror'] = 'Wybrana książka adresowa jest tylko-do-odczytu.';
$messages['contactaddedtogroup'] = 'Kontakty zostały pomyślnie dodane do grupy.';
$messages['contactremovedfromgroup'] = 'Kontakty zostały pomyślnie usunięte z grupy.';
$messages['nogroupassignmentschanged'] = 'Nie zmieniono żadnych powiązań z grupą.';
$messages['importwait'] = 'Importowanie, proszę czekać...';
$messages['importformaterror'] = 'Import nieudany! Użyty plik nie jest poprawnym plikiem importu danych.';
$messages['importconfirm'] = '<b>Pomyślnie dodano $inserted kontaktów.</b>';
$messages['importconfirmskipped'] = '<b>Pominięto $skipped istniejących wpisów.</b>';
$messages['importmessagesuccess'] = 'Pomyślnie zaimportowano następującą liczbę wiadomości: $nr';
$messages['importmessageerror'] = 'Import nieudany! Wgrywany plik nie jest poprawną wiadomością lub plikiem skrzynki pocztowej';
$messages['opnotpermitted'] = 'Niedozwolona operacja!';
$messages['nofromaddress'] = 'Brak adresu e-mail w wybranej tożsamości.';
$messages['editorwarning'] = 'Zmiana typu editora może spowodować utratę formatowania. Czy chcesz kontynuować?';
$messages['httpreceivedencrypterror'] = 'Wystąpił błąd krytyczny. Skontaktuj się z administratorem. <b>Nie można wysłać wiadomości.</b>';
$messages['smtpconnerror'] = 'Błąd SMTP ($code): Nie można nawiązać połączenia z serwerem.';
$messages['smtpautherror'] = 'Błąd SMTP ($code): Uwierzytelnianie nie powiodło się.';
$messages['smtpfromerror'] = 'Błąd SMTP ($code): Nie można ustawić nadawcy "$from" ($msg).';
$messages['smtptoerror'] = 'Błąd SMTP ($code): Nie można dodać odbiorcy "$to" ($msg).';
$messages['smtprecipientserror'] = 'Błąd SMTP: Parsowanie listy odbiorców nie powiodło się.';
$messages['smtputf8error'] = 'Błąd SMTP: Serwer nie obsługuje znaków Unicode w adresach email.';
$messages['smtpsizeerror'] = 'Błąd SMTP: Rozmiar wiadomości przekracza limit ($limit)';
$messages['smtperror'] = 'Błąd SMTP: $msg';
$messages['emailformaterror'] = 'Błędny adres e-mail: $email';
$messages['toomanyrecipients'] = 'Zbyt wielu odbiorców. Zmniejsz ich liczbę do $max.';
$messages['maxgroupmembersreached'] = 'Liczba członków grupy nie może być większa niż $max.';
$messages['internalerror'] = 'Wystąpił wewnętrzny błąd systemu. Spróbuj jeszcze raz.';
$messages['contactdelerror'] = 'Usuwanie kontaktów nie powiodło się.';
$messages['contactdeleted'] = 'Kontakt(y) został(y) usunięte.';
$messages['contactrestoreerror'] = 'Przywracanie kontaktów nie powiodło się.';
$messages['contactrestored'] = 'Kontakt(y) zostały przywrócone.';
$messages['groupdeleted'] = 'Grupa została usunięta.';
$messages['grouprenamed'] = 'Nazwa grupy została zmieniona.';
$messages['groupcreated'] = 'Grupa została utworzona.';
$messages['savedsearchdeleted'] = 'Wyszukiwanie usunięto pomyślnie.';
$messages['savedsearchdeleteerror'] = 'Nie można usunąć wyszukiwania.';
$messages['savedsearchcreated'] = 'Wyszukiwanie zapisano pomyślnie.';
$messages['savedsearchcreateerror'] = 'Nie można zapisać wyszukiwania.';
$messages['messagedeleted'] = 'Wiadomości zostały usunięte.';
$messages['messagemoved'] = 'Wiadomości zostały przeniesione.';
$messages['messagemovedtotrash'] = 'Wiadomości zostały przeniesione do Kosza.';
$messages['messagecopied'] = 'Wiadomości zostały skopiowane.';
$messages['messagemarked'] = 'Wiadomości zostały oznaczone.';
$messages['autocompletechars'] = 'Wprowadź co najmniej $min znak(ów) aby skorzystać z autouzupełniania.';
$messages['autocompletemore'] = 'Znaleziono więcej pasujących wpisów. Wprowadź więcej znaków.';
$messages['namecannotbeempty'] = 'Nazwa nie może być pusta.';
$messages['nametoolong'] = 'Nazwa jest zbyt długa.';
$messages['namedotforbidden'] = 'Nazwa folderu nie może rozpoczynać się od kropki.';
$messages['folderupdated'] = 'Folder został pomyślnie zaktualizowany.';
$messages['foldercreated'] = 'Folder został pomyślnie utworzony.';
$messages['invalidimageformat'] = 'Niepoprawny format obrazka.';
$messages['mispellingsfound'] = 'Wykryto błędy pisowni w tej wiadomości.';
$messages['parentnotwritable'] = 'Nie można utworzyć/przenieść folderu w wybrane miejsce. Brak upranień.';
$messages['messagetoobig'] = 'Ta część wiadomości jest zbyt duża aby ją przetworzyć.';
$messages['attachmentvalidationerror'] = 'UWAGA! Ten załącznik jest podejrzany ponieważ jego typ nie jest zgodny z typem zadeklarownym w wiadomości. Jeśli nie ufasz temu nadawcy nie powinieneś otwierać go w przeglądarce, gdyż może zawierać złośliwe oprogramowanie.<br/><br/><em>Zadeklarowano: $expected; wykryto: $detected</em>';
$messages['noscriptwarning'] = 'Uwaga: Usługa wymaga Javascriptu! Aby z niej skorzystać proszę włączyć obsługę języka Javascript w ustawieniach przeglądarki.';
$messages['messageissent'] = 'Wiadomość została już wysłana, jednak nie została zapisana. Czy chcesz ją zapisać teraz?';
$messages['errnotfound'] = 'Nie znaleziono pliku';
$messages['errnotfoundexplain'] = 'Żądany zasób nie został odnaleziony!';
$messages['errfailedrequest'] = 'Błędne żądanie';
$messages['errauthorizationfailed'] = 'Błąd autoryzacji';
$messages['errunauthorizedexplain'] = 'Nie można zweryfikować czy jesteś upoważniony do dostępu dla tej usługi!';
$messages['errrequestcheckfailed'] = 'Sprawdzanie żądania nie powiodło się';
$messages['errcsrfprotectionexplain'] = "Dla twojego bezpieczeństwa, dostęp do tego zasobu jest zabezpieczony przeciw atakom typu CSRF.\nJeśli widzisz ten komunikat, prawdopodobnie nie wylogowałeś się przed opuszczeniem aplikacji.\n\nTwoje działanie jest wymagane aby kontynuować.";
$messages['errcontactserveradmin'] = 'Skontaktuj się z administratorem serwera.';
$messages['clicktoresumesession'] = 'Kliknij tutaj aby przywrócić poprzednią sesję';
$messages['errcomposesession'] = 'Błąd sesji tworzenia';
$messages['errcomposesessionexplain'] = 'Wywoływana sesja nie została odnaleziona';
$messages['clicktocompose'] = 'Kliknij tutaj aby stworzyć nową wiadomość';
$messages['nosupporterror'] = 'Ta funkcja nie jest obsługiwana w twojej przeglądarce.';
$messages['siginserted'] = 'Podpis został dodany pomyślnie.';
$messages['responseinserted'] = 'Odpowiedź została dodana pomyślnie.';
$messages['noresponsesavailable'] = 'Brak odpowiedzi';
$messages['listempty'] = 'Lista jest pusta.';
$messages['listusebutton'] = 'Aby dodać nowy wpis użyj przycisk Utwórz.';
$messages['keypaircreatesuccess'] = 'Pomyślnie utworzono parę kluczy dla $identity.';
$messages['emptyattachment'] = 'Wybrany załącznik wygląda na pusty.<br>Zweryfikuj to z nadawcą wiadomości.';
$messages['oauthloginfailed'] = 'Nieudane logowanie OAuth, Spróbuj ponownie.';
localization/bn_BD/labels.inc000064400000041560151727150570012155 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'স্বাগতম';
$labels['username'] = 'গ্রাহক নাম (username)';
$labels['password'] = 'গোপোন শব্দ (password)';
$labels['server'] = 'সারভার';
$labels['login'] = 'প্রবেশ';
$labels['logout'] = 'প্রস্থান';
$labels['mail'] = 'ই-মেইল';
$labels['settings'] = 'ব্যাক্তিগত খুটিনাটি';
$labels['addressbook'] = 'ঠিকানার বই';
$labels['inbox'] = 'প্রধান বাক্স';
$labels['drafts'] = 'খসড়া';
$labels['sent'] = 'প্রেরিত(পাঠানো মেইল)';
$labels['trash'] = 'ডাস্টবিন';
$labels['junk'] = 'আজেবাজে মেইল';
$labels['subject'] = 'বিষয়';
$labels['from'] = 'প্রেরক';
$labels['sender'] = 'প্রেরক';
$labels['to'] = 'প্রাপক';
$labels['cc'] = 'অনুলিপির ঠিকানা';
$labels['bcc'] = 'নাজানিয়ে অনুলিপির ঠিকানা';
$labels['replyto'] = 'উত্তর পাঠানোর ঠিকানা';
$labels['date'] = 'তারিখ';
$labels['size'] = 'সাইজ';
$labels['priority'] = 'গুরুত্ব';
$labels['organization'] = 'কোম্পানি';
$labels['mailboxlist'] = 'ফোল্ডার/মেইলবক্স';
$labels['messagesfromto'] = '$count মেইলের মধ্যে, $from হতে $to দেখানো হচ্ছে';
$labels['messagenrof'] = '$nr #মেইল/চিঠি , $count এর মধ্যে';
$labels['copy'] = 'অনুলিপির ঠিকানা';
$labels['move'] = 'স্থানান্তর';
$labels['moveto'] = 'সরিয়ে ফেলুন..';
$labels['download'] = 'ডাউনলোড';
$labels['open'] = 'খোলা';
$labels['showattachment'] = 'দেখানো';
$labels['filename'] = 'ফাইলের নাম';
$labels['filesize'] = 'ফাইলের সাইজ';
$labels['addtoaddressbook'] = 'ঠিকানার বইতে ঢুকান';
$labels['sun'] = 'রবি';
$labels['mon'] = 'সোম';
$labels['tue'] = 'মঙ্গল';
$labels['wed'] = 'বুধ';
$labels['thu'] = 'বৃহ:';
$labels['fri'] = 'শুক্র';
$labels['sat'] = 'শনি';
$labels['sunday'] = 'রবিবার';
$labels['monday'] = 'সোমবার';
$labels['tuesday'] = 'মঙ্গলবার';
$labels['wednesday'] = 'বুধবার';
$labels['thursday'] = 'বৃহস্পতিবার';
$labels['friday'] = 'শুক্রবার';
$labels['saturday'] = 'শনিবার';
$labels['jan'] = 'জানুয়ারি';
$labels['feb'] = 'ফেব্রুয়ারি';
$labels['mar'] = 'মার্চ';
$labels['apr'] = 'এপ্রিল';
$labels['may'] = 'মে';
$labels['jun'] = 'জুন';
$labels['jul'] = 'জুলাই';
$labels['aug'] = 'আগস্ট';
$labels['sep'] = 'সেপ্তেমবার';
$labels['oct'] = 'অষ্টবার';
$labels['nov'] = 'নবেমবার';
$labels['dec'] = 'দিশেমবার';
$labels['longjan'] = 'জানুয়ারি';
$labels['longfeb'] = 'ফেব্রুয়ারি';
$labels['longmar'] = 'মার্চ';
$labels['longapr'] = 'এপ্রিল';
$labels['longmay'] = 'মে';
$labels['longjun'] = 'জুন';
$labels['longjul'] = 'জুলাই';
$labels['longaug'] = 'আগস্ট';
$labels['longsep'] = 'সেপ্তেমবার (September)';
$labels['longoct'] = 'অষ্টবার (October)';
$labels['longnov'] = 'নবেমবার (November)';
$labels['longdec'] = 'দিশেমবার (December)';
$labels['today'] = 'আজকে';
$labels['checkmail'] = 'দেখুন নতুন কোনো মেইল/চিঠি এলো কিনা';
$labels['compose'] = 'নতুন মেইল/চিঠি লিখুন';
$labels['writenewmessage'] = 'নতুন মেইল/চিঠি লিখুন';
$labels['reply'] = 'জবাব';
$labels['replytomessage'] = 'শুধু প্রেরকের কাছে উত্তর পাঠান';
$labels['replytoallmessage'] = 'প্রেরক ও এই চিঠির অন্যান্য প্রাপকদের কাছে উত্তর পাঠান';
$labels['forwardmessage'] = 'মেইল/চিঠি এগিয়ে দিন';
$labels['deletemessage'] = 'মেইল/চিঠি ছিড়ে ফেলুন';
$labels['movemessagetotrash'] = 'মেইল/চিঠি ডাস্টবিনে ফেলুন';
$labels['printmessage'] = 'মেইল/চিঠি প্রিন্ট করুন';
$labels['previousmessage'] = 'আগের মেইল/চিঠিটি দেখুন';
$labels['firstmessage'] = 'প্রথম মেইল/চিঠিটি দেখুন';
$labels['nextmessage'] = 'পরের মেইল/চিঠিটি দেখুন';
$labels['lastmessage'] = 'শেষ মেইল/চিঠিটি দেখুন';
$labels['backtolist'] = 'মেইল/চিঠির তালিকায় ফিরে যান';
$labels['viewsource'] = 'মূল উৎসদেখুন';
$labels['mark'] = 'দাগানো';
$labels['markmessages'] = 'মেইল/চিঠি (গুলো)';
$labels['markread'] = 'পড়া শেষ (read)';
$labels['markunread'] = 'নাদেখা (unread)';
$labels['markflagged'] = 'দাগানো (flagged)';
$labels['markunflagged'] = 'দাগহীন (unflagged)';
$labels['more'] = 'আরো';
$labels['first'] = 'প্রথম';
$labels['last'] = 'শেষ';
$labels['previous'] = 'পূর্ববর্তী';
$labels['next'] = 'পরবর্তী';
$labels['select'] = 'বেছেনিন';
$labels['all'] = 'সবগুলো';
$labels['none'] = 'কোনোটাই না';
$labels['isread'] = 'পড়';
$labels['unread'] = 'নাদেখা (unread)';
$labels['flagged'] = 'দাগানো (flagged)';
$labels['unanswered'] = 'উত্তর না দেওয়া গুলো';
$labels['filter'] = 'ছাকনি';
$labels['list'] = 'তালিকা';
$labels['nonesort'] = 'কোনোটাই না';
$labels['layoutlist'] = 'তালিকা';
$labels['compact'] = 'টাইটকরুন';
$labels['empty'] = 'খালিকরুন';
$labels['quota'] = 'ডিস্ক এ খালি যায়গা';
$labels['unknown'] = 'অজানা';
$labels['unlimited'] = 'সীমাহীন';
$labels['quicksearch'] = 'ঝটকরে খোজা';
$labels['resetsearch'] = 'নতুনকরে খুজুন';
$labels['openinextwin'] = 'নতুন উইন্ডো তে দেখুন';
$labels['sendmessage'] = 'এখুনি মেইল / চিঠিটি পাঠান';
$labels['savemessage'] = 'খসড়া হিসাবে জমা করে রাখুন';
$labels['addattachment'] = 'একটা ফাইল জুড়ে দিন চিঠির সাথে';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'ফিরতি রসিদ';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
$labels['attachments'] = 'জুড়ে দেওয়া ফাইল (Attachments)';
$labels['upload'] = 'উঠায় দেন';
$labels['close'] = 'বন্ধ করুন';
$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
$labels['normal'] = 'Normal';
$labels['high'] = 'High';
$labels['highest'] = 'Highest';
$labels['nosubject'] = '(বিষয়হীন)';
$labels['showimages'] = 'ছবি দেখান';
$labels['alwaysshow'] = 'সবসময় $sender এর কাছে থেকে পাওয়া ছবিগুলো দেখানো হোক';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'খালি লেখা দেখুন';
$labels['savesentmessagein'] = 'পাঠানো চিঠি/মেইল জমা করুন >>';
$labels['dontsave'] = 'জমিয়ে রাখা লাগবে না';
$labels['maxuploadsize'] = 'ফাইল উঠানোর সর্বোচ্চ সাইজ $size';
$labels['addcc'] = 'অনুলিপির ঠিকানা ঢুকান';
$labels['addbcc'] = 'নাজানিয়ে অনুলিপির ঠিকানা ঢুকান';
$labels['addreplyto'] = 'উত্তর পাঠানোর ঠিকানা ঢুকান';
$labels['mdnrequest'] = 'প্রাপক আপনার কাছে মেইল/চিঠিটা যে পেয়েছেন তার ফিরতি রসিদ চেয়েছেন। আপনি কি ফিরতি রসিদ টা পাঠাবেন?';
$labels['receiptread'] = 'মেইল/চিঠি যে পেয়েছেন তার ফিরতি রসিদ';
$labels['yourmessage'] = 'নিচে রয়েছে আপনার চিঠিটা যে প্রাপক পেয়েছেন তার রসিদ';
$labels['receiptnote'] = 'এই রসিদ খালি এতটুকু প্রমান করে যে প্রাপক চিঠিটি পেয়েছেন। কিন্তু তিনি ঠিকমতো পড়তে পেরেছেন কিনা অথবা তিনি পড়ে বুঝতে পেরেছেন কিনা তার কোনো প্রমান নেই।';
$labels['name'] = 'নাম';
$labels['firstname'] = 'নামের প্রথমাংশ';
$labels['surname'] = 'নামের শেষাংশ';
$labels['email'] = 'ই-মেইল/চিঠি';
$labels['editcontact'] = 'একটা ঠিকানা বদলান';
$labels['edit'] = 'বদলান';
$labels['cancel'] = 'বাতিল';
$labels['save'] = 'জমা দিন';
$labels['delete'] = 'ফেলে দিন';
$labels['deletecontact'] = 'বেছে নেওয়া ঠিকানা গুলো ফেলে দিন';
$labels['composeto'] = 'চিঠি পাঠাবেন কার কাছে?';
$labels['contactsfromto'] = '$count ঠিকানার মধ্যে $from থেকে $to টা';
$labels['print'] = 'প্রিন্ট করুন';
$labels['export'] = 'রপ্তানি করুন';
$labels['exportvcards'] = 'রপ্তানি করুন vCard আকারে';
$labels['previouspage'] = 'আগের গুলো দেখান';
$labels['firstpage'] = 'প্রথম গুলো দেখান';
$labels['nextpage'] = 'পরের গুলো দেখান';
$labels['lastpage'] = 'শেষের গুলো দেখান';
$labels['groups'] = 'গ্রুপ';
$labels['personaladrbook'] = 'নিজের ঠিকানা';
$labels['import'] = 'আমদানি করুন';
$labels['importcontacts'] = 'ঠিকানা আমদানি করুন';
$labels['importreplace'] = 'পুরো ঠিকানার বইটি খালি করে নতুন ঠিকানা গুলো ভরুন';
$labels['done'] = 'শেষ';
$labels['settingsfor'] = 'খুটিনাটি';
$labels['preferences'] = 'পছন্দ';
$labels['userpreferences'] = 'গ্রাহক পছন্দ';
$labels['editpreferences'] = 'গ্রাহক পছন্দ বদলান';
$labels['identities'] = 'পরিচিতি';
$labels['preferhtml'] = 'HTML এ দেখি';
$labels['htmlmessage'] = 'HTML মেইল/চিঠি';
$labels['prettydate'] = 'তারিখ ভালো করে দেখা যাবে';
$labels['setdefault'] = 'এইটাই আসল';
$labels['autodetect'] = 'কম্পুটার নিজেনিজি বেছে নেবে';
$labels['language'] = 'ভাষা';
$labels['timezone'] = 'সময়ভিত্তিক এলাকা';
$labels['pagesize'] = 'প্রতি পৃষ্ঠায় লাইন সংখ্যা';
$labels['signature'] = 'স্বাক্ষর';
$labels['dstactive'] = 'Daylight saving time';
$labels['htmleditor'] = 'HTML এ মেইল/চিঠি লিখুন';
$labels['htmlsignature'] = 'HTML এ স্বাক্ষর';
$labels['previewpane'] = 'ছোটোকরে দেখার জায়গা';
$labels['skin'] = 'মেইলবক্স এর পুরোটার চেহারা';
$labels['logoutclear'] = 'বেরহবার সময় ডাস্টবিন অটোমেটিক খালি হবে';
$labels['logoutcompact'] = 'বেরহবার সময় প্রধান বাক্স অটোমেটিক টাইট হবে';
$labels['uisettings'] = 'কম্পুটারের চেহারা';
$labels['serversettings'] = 'সারভার এর খুটিনাটি';
$labels['mailboxview'] = 'মেইলবক্স দেখার কায়দা';
$labels['mdnrequests'] = 'প্রেরক নোটিশ পাঠালে কি করা হবে?';
$labels['askuser'] = 'আমি গ্রাহক, আমাকে জিজ্ঞাসা করুন';
$labels['autosend'] = 'কম্পুটার নিজেনিজি ফিরতি নোটিশ পাঠায় দেবে';
$labels['readwhendeleted'] = 'ফেলে দেবার সময় মেইল/চিঠি পড়া হয়ে গেছে হিসাবে ধরে নেওয়া হবে';
$labels['flagfordeletion'] = 'একেবারেই ফেলে না দিয়ে মেইল/চিঠি গুলোকে দাগিয়ে রাখুন ফেলে দেবার জন্যে';
$labels['skipdeleted'] = 'ফেলে দেওয়া মেইল/চিঠি দেখানোর দরকার নেই';
$labels['showremoteimages'] = 'মেইলে অন্য ওয়েবসাইট থেকে আসা ছবি থাকলে তা দেখা যাবে';
$labels['fromknownsenders'] = 'পরিচিত প্রেরক এর ক্ষেত্রে';
$labels['always'] = 'সবসময়';
$labels['showinlineimages'] = 'মেইলের সাথে জোড়া লাগানো ছবি, মেইলের নিচে দেখা যাবে';
$labels['autosavedraft'] = 'নিজেনিজি খসড়া জমা হয়ে যাবে';
$labels['everynminutes'] = 'প্রতি $n মিনিটে';
$labels['never'] = 'কখোনোই না';
$labels['messagesdisplaying'] = 'মেইল/চিঠি দেখা যাচ্ছে';
$labels['messagescomposition'] = 'মেইল/চিঠি লেখা হচ্ছে';
$labels['mimeparamfolding'] = 'জুড়ে দেওয়া জিনিষের নাম';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['advancedoptions'] = 'জটিল বিষয়';
$labels['focusonnewmessage'] = 'নতুন মেইল এলেই তা হাইলাইট হয়ে যাবে';
$labels['checkallfolders'] = 'সবগুলো মেইলবক্সে নতুন চিঠি খোজা হবে';
$labels['folder'] = 'ফোল্ডার/মেইলবক্স';
$labels['folders'] = 'ফোল্ডার/মেইলবক্স';
$labels['foldername'] = 'ফোল্ডার/মেইলবক্স এর নাম';
$labels['subscribed'] = 'গ্রহনকারি';
$labels['messagecount'] = 'মেইল/চিঠি';
$labels['create'] = 'প্রস্তুত করুন';
$labels['createfolder'] = 'নতুন ফোল্ডার / মেইলবক্স প্রস্তুত করুন';
$labels['managefolders'] = 'ফোল্ডার/মেইলবক্স গুলো কে গুছান';
$labels['specialfolders'] = 'বিশেষ ফোল্ডার/মেইলবক্স';
$labels['sortby'] = 'সাজান';
$labels['sortasc'] = 'কম থেকে বেশি হিসাবে সাজান';
$labels['sortdesc'] = 'বেশি থেকে কম হিসাবে সাজান';
$labels['B'] = 'বাইট';
$labels['KB'] = 'কিলোবাইট';
$labels['MB'] = 'মেগাবাইট';
$labels['GB'] = 'গিগাবাইট';
localization/bn_BD/messages.inc000064400000017421151727150570012521 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['loginfailed']  = 'ঢোকা গেল না';
$messages['cookiesdisabled'] = 'আপনার ব্রাউজার, কুকি গ্রহন করে না';
$messages['sessionerror'] = 'আপনার সেশন শেষ';
$messages['storageerror'] = 'মেইল সারভার এর সাথে যোগাযোগ করা গেল না';
$messages['nomessagesfound'] = 'এই মেইলবক্সে কোনো চিঠি নাই';
$messages['loading'] = 'কম্পুটার কাজ করতেছে . .';
$messages['loadingdata'] = 'কম্পুটার তথ্য আনছে আপনার জন্য..';
$messages['checkingmail'] = 'নতুন চিঠি আসছে কিনা তা দেখা হচ্ছে';
$messages['sendingmessage'] = 'চিঠি পাঠায় দেওয়া হচ্ছে';
$messages['messagesent'] = 'চিঠি ঠিকঠাকমতো পাঠানো শেষ';
$messages['savingmessage'] = 'চিঠি জমা করে রাখা হচ্ছে';
$messages['messagesaved'] = 'চিঠি খসড়া হিসাবে জমা করে রাখা হয়েছে';
$messages['successfullysaved'] = 'ঠিকঠাকমতো জমা হয়ে গিয়েছে';
$messages['addedsuccessfully'] = 'নতুন ঠিকানা ঠিকঠাক মতো ঢোকানো হয়ে গেছে';
$messages['blockedimages'] = 'আপনার গোপনীয়তা রক্ষার জন্য আমরা ছবি গুলো সরিয়ে রেখেছি';
$messages['encryptedmessage'] = 'এটা একটি গোপন (encrypted) চিঠি। এটা আপনাকে দেখানো যাবে না। দু্ঃখিত।';
$messages['nocontactsfound'] = 'কোনো ঠিকানা পাওয়া গেলনা। দু্ঃখিত।';
$messages['contactnotfound'] = 'আপনি যে ঠিকানা খুজছেন সেটা পাওয়া গেল না';
$messages['sendingfailed'] = 'চিঠি পাঠানো গেলনা';
$messages['senttooquickly'] = 'এই চিঠি পাঠানোর আগে, দয়া করে $sec সেকেন্ড';
$messages['errormoving'] = 'চিঠিটা সরানো গেলো না';
$messages['errordeleting'] = 'চিঠিটা ফেলানো গেলো না';
$messages['deletecontactconfirm']  = 'আপনি কি আসলেই এই ঠিকানা(গুলো) ফেলো দিতে চান?';
$messages['deletemessagesconfirm'] = 'আপনি কি আসলেই এই চিঠি(গুলো) ফেলো দিতে চান?';
$messages['deletefolderconfirm']  = 'আপনি কি আসলেই এই ফোল্ডার/মেইলবক্স ফেলো দিতে চান?';
$messages['purgefolderconfirm']  = 'আপনি কি আসলেই এই ফোল্ডার/মেইলবক্স এর সব চিঠি ফেলো দিতে চান?';
$messages['folderdeleting'] = 'ফোল্ডার/মেইলবক্স ফেলে দেওয়া হচ্ছে';
$messages['foldermoving'] = 'ফোল্ডার/মেইলবক্স সরানো হচ্ছে';
$messages['formincomplete'] = 'আপনি সবগুলো জিনিষ লেখেননি';
$messages['noemailwarning'] = 'একটি সঠিক ই-মেইল লিখুন';
$messages['nonamewarning']  = 'দয়া করে নামটি লিখুন';
$messages['nopagesizewarning'] = 'দয়া করে পৃষ্ঠার সাইজটি লিখুন';
$messages['norecipientwarning'] = 'দয়া করে একজন প্রাপক এর ই-মেইলটা লিখুন';
$messages['nosubjectwarning']  = 'বিষয় হিসাবে কিছু লেখা হয়নি, আপনি কি কিছু লিখবেন এখন বিষয় হিসাবে?';
$messages['nobodywarning'] = 'কোনো কিছু না লিখেই এই চিঠি পাঠিয়ে দেবেন?';
$messages['nosearchname'] = 'দয়া করে একজনের নাম অথবা ই-মেইল লিখুন';
$messages['searchsuccessful'] = '$nr টা চিঠি পাওয়া গেছে';
$messages['searchnomatch'] = 'খুজে কিছু পাওয়া গেলোনা';
$messages['searching'] = 'খুজছি ....';
$messages['checking'] = 'দেখছি ...';
$messages['nospellerrors'] = 'No spelling errors found';
$messages['folderdeleted'] = 'ফোল্ডার/মেইলবক্স ঠিকঠাকমতো ফেলানো হয়ে গেছে';
$messages['deletedsuccessfully'] = 'ঠিকঠাকমতো ফেলানো হয়ে গেছে';
$messages['converting'] = 'বিন্যাস (formatting) সরানো হচ্ছে ..';
$messages['messageopenerror'] = 'সারভার থেকে চিঠি আনা গেলোনা';
$messages['fileuploaderror'] = 'ফাইলটা সারভারে উঠানো গেলোনা';
$messages['filesizeerror'] = 'যে ফাইলটা উঠানোর চেষ্টা করলেন সেটি সর্বোচ্চ সাইজ $size এর থেকে বেশি';
$messages['sourceisreadonly'] = 'এইঠিকানাটা খালি পড়ার জন্যে';
$messages['errorsavingcontact'] = 'ঠিকানা জমা রাখা গেলোনা';
$messages['movingmessage'] = 'চিঠি সরানো হচ্ছে..';
$messages['receiptsent'] = 'ঠিকঠাক মতো ফিরতি রশিদ পাঠানো হয়েছে';
$messages['errorsendingreceipt'] = 'রশিদ পাঠানো গেলোনা';
$messages['nodeletelastidentity'] = 'আপনি এই পরিচিতি ফেলতে পারবেন না কারন এইটায় বর্তমানে আপনার একমাত্র পরিচিতি।';
$messages['forbiddencharacter'] = 'ফোল্ডার এর নামের মধ্যে নিষিদ্ধ অক্ষর আছে';
$messages['selectimportfile'] = 'একটা ফাইল বেছে নিন তোলার জন্য';
$messages['addresswriterror'] = 'বেছে নেওয়া ঠিকানার বইটিতে লেখাযায় না';
$messages['importwait'] = 'আমদানি করা হচ্ছে। একটু অপেক্ষা করুন...';
$messages['importconfirm'] = '<b>ঠিকমতো $inserted ঠিকানা আমদানি করা গেছে, $skipped ঠিকানা আগের থেকেই ছিলো বলে তাদের টা যা ছিলো তাই রাখা হয়েছে</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'এই কাজটা করার অনুমতি নাই আপনার';
localization/sq_AL/timezones.inc000064400000047147151727150570012772 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrikë';
$labels['tz:africa:abidjan'] = 'Abixhan';
$labels['tz:africa:accra'] = 'Akra';
$labels['tz:africa:addis_ababa'] = 'Adis Abeba';
$labels['tz:africa:algiers'] = 'Algjer';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banxhul';
$labels['tz:africa:bissau'] = 'Bisau';
$labels['tz:africa:blantyre'] = 'Blantajër';
$labels['tz:africa:brazzaville'] = 'Brazavil';
$labels['tz:africa:bujumbura'] = 'Buxhumbura';
$labels['tz:africa:cairo'] = 'Kajro';
$labels['tz:africa:casablanca'] = 'Kazablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Konakri';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salam';
$labels['tz:africa:djibouti'] = 'Xhibout';
$labels['tz:africa:douala'] = 'Duala';
$labels['tz:africa:el_aaiun'] = 'El Ajun';
$labels['tz:africa:freetown'] = 'Fritaun';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johanesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Kartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Librevil';
$labels['tz:africa:lome'] = 'Lome';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Najrobi';
$labels['tz:africa:ndjamena'] = 'Nxhamena';
$labels['tz:africa:niamey'] = 'Niamei';
$labels['tz:africa:nouakchott'] = 'Nuakçot';
$labels['tz:africa:ouagadougou'] = 'Uagadugu';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'Sao Tome';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Uindhoek';
$labels['tz:america'] = 'Amerikë';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Ankorazh';
$labels['tz:america:anguilla'] = 'Anguila';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argjentinë';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Ajres';
$labels['tz:america:argentina:catamarca'] = 'Katamarka';
$labels['tz:america:argentina:cordoba'] = 'Kordoba ';
$labels['tz:america:argentina:jujuy'] = 'Jujui';
$labels['tz:america:argentina:la_rioja'] = 'La Rioha';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Galegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Huan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tukuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaja';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asuncion';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blank-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Buaz';
$labels['tz:america:cambridge_bay'] = 'Kembrixh Bej';
$labels['tz:america:campo_grande'] = 'Kampo Grande';
$labels['tz:america:cancun'] = 'Kankun';
$labels['tz:america:caracas'] = 'Karakas';
$labels['tz:america:cayenne'] = 'Kajen';
$labels['tz:america:cayman'] = 'Kejmën';
$labels['tz:america:chicago'] = 'Çikago';
$labels['tz:america:chihuahua'] = 'Çiuaua';
$labels['tz:america:costa_rica'] = 'Kosta Rika';
$labels['tz:america:creston'] = 'Kreston';
$labels['tz:america:cuiaba'] = 'Kujaba';
$labels['tz:america:curacao'] = 'Kurasëo';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dousën';
$labels['tz:america:dawson_creek'] = 'Dousën Krik';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleca';
$labels['tz:america:glace_bay'] = 'Gjiri i Akullit';
$labels['tz:america:godthab'] = 'Godhab';
$labels['tz:america:goose_bay'] = 'Gus Bej';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenadë';
$labels['tz:america:guadeloupe'] = 'Guadalupë ';
$labels['tz:america:guatemala'] = 'Guatemalë';
$labels['tz:america:guayaquil'] = 'Guajakil';
$labels['tz:america:guyana'] = 'Guajanë';
$labels['tz:america:halifax'] = 'Halifaks';
$labels['tz:america:havana'] = 'Havanë';
$labels['tz:america:hermosillo'] = 'Hermosijo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knoks';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petërburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevei';
$labels['tz:america:indiana:vincennes'] = 'Vincene';
$labels['tz:america:indiana:winamac'] = 'Uinamak';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Ikaluit';
$labels['tz:america:jamaica'] = 'Xhamajkë';
$labels['tz:america:juneau'] = 'Zhyno';
$labels['tz:america:kentucky'] = 'Kentaki';
$labels['tz:america:kentucky:louisville'] = 'Luisvil';
$labels['tz:america:kentucky:monticello'] = 'Montiçelo';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Anxheles';
$labels['tz:america:lower_princes'] = 'Louër Prinses';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigo';
$labels['tz:america:martinique'] = 'Martinikë';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menomini';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Meksiko Siti';
$labels['tz:america:miquelon'] = 'Mikëlon';
$labels['tz:america:moncton'] = 'Monkton';
$labels['tz:america:monterrey'] = 'Monterrej';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Monserrat';
$labels['tz:america:nassau'] = 'Nasau';
$labels['tz:america:new_york'] = 'Nju Jork';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronja';
$labels['tz:america:north_dakota'] = 'Dakota e Veriut';
$labels['tz:america:north_dakota:beulah'] = 'Beula';
$labels['tz:america:north_dakota:center'] = 'Qendër';
$labels['tz:america:north_dakota:new_salem'] = 'Nju Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Feniks';
$labels['tz:america:port-au-prince'] = 'Port-o-Prins';
$labels['tz:america:port_of_spain'] = 'Port of Spein';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Porto Riko';
$labels['tz:america:rainy_river'] = 'Reini Rivër';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Rexhina';
$labels['tz:america:resolute'] = 'Rezolut';
$labels['tz:america:rio_branco'] = 'Rio Branko';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Skorsbajsund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Shën Bartolome';
$labels['tz:america:st_johns'] = "Shën Gjon";
$labels['tz:america:st_kitts'] = 'Shën Kits';
$labels['tz:america:st_lucia'] = 'Shën Luçia';
$labels['tz:america:st_thomas'] = 'Shën Thoma';
$labels['tz:america:st_vincent'] = 'Shën Vinsent';
$labels['tz:america:swift_current'] = 'Suift Kurrent';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Tjul';
$labels['tz:america:thunder_bay'] = 'Thundërbej';
$labels['tz:america:tijuana'] = 'Tihuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vankuver';
$labels['tz:america:whitehorse'] = 'Uajthors';
$labels['tz:america:winnipeg'] = 'Uinipeg';
$labels['tz:america:yakutat'] = 'Jakutat';
$labels['tz:america:yellowknife'] = 'Jellounaif';
$labels['tz:antarctica'] = 'Antarktidë ';
$labels['tz:antarctica:casey'] = 'Kasi';
$labels['tz:antarctica:davis'] = 'Dejvis';
$labels['tz:antarctica:dumontdurville'] = "Dymon d'Yrvil";
$labels['tz:antarctica:macquarie'] = 'Makuari';
$labels['tz:antarctica:mawson'] = 'Mousën';
$labels['tz:antarctica:mcmurdo'] = 'Mekmërdou';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rotera';
$labels['tz:antarctica:syowa'] = 'Shoua';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arktik';
$labels['tz:arctic:longyearbyen'] = 'Longjiërbajn';
$labels['tz:asia'] = 'Azi';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almati';
$labels['tz:asia:amman'] = 'Aman';
$labels['tz:asia:anadyr'] = 'Anadir';
$labels['tz:asia:aqtau'] = 'Aktau';
$labels['tz:asia:aqtobe'] = 'Aktobe';
$labels['tz:asia:ashgabat'] = 'Ashkabad';
$labels['tz:asia:atyrau'] = 'Atirau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrein';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Bejrut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei ';
$labels['tz:asia:chita'] = 'Çita';
$labels['tz:asia:choibalsan'] = 'Çoibalsan';
$labels['tz:asia:colombo'] = 'Kolombo';
$labels['tz:asia:damascus'] = 'Damask';
$labels['tz:asia:dhaka'] = 'Daka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Shi Min';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Xhakartë';
$labels['tz:asia:jayapura'] = 'Jajapura';
$labels['tz:asia:jerusalem'] = 'Jeruzalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamçatkë';
$labels['tz:asia:karachi'] = 'Karaçi';
$labels['tz:asia:kathmandu'] = 'Katmandu';
$labels['tz:asia:khandyga'] = 'Kandiga';
$labels['tz:asia:kolkata'] = 'Kalkuta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnojarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuçing';
$labels['tz:asia:kuwait'] = 'Kuvajt';
$labels['tz:asia:macau'] = 'Makau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makasar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muskat';
$labels['tz:asia:nicosia'] = 'Nikosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznjeck';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Pnom Pen';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pjongiang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riad';
$labels['tz:asia:sakhalin'] = 'Sakalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seul';
$labels['tz:asia:shanghai'] = 'Shangai';
$labels['tz:asia:singapore'] = 'Singapor';
$labels['tz:asia:srednekolymsk'] = 'Srednekolimsk';
$labels['tz:asia:taipei'] = 'Tajpei  ';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilis';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Timpu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulan Bator';
$labels['tz:asia:urumqi'] = 'Urumki';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Jakutsk';
$labels['tz:asia:yangon'] = 'Jangon';
$labels['tz:asia:yekaterinburg'] = 'Jekaterinburg';
$labels['tz:asia:yerevan'] = 'Erevan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azore';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanarie';
$labels['tz:atlantic:cape_verde'] = 'Kepi i Gjelbër';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reikjavik';
$labels['tz:atlantic:south_georgia'] = 'Xhorxhia e Jjugut';
$labels['tz:atlantic:st_helena'] = 'Shën Elena';
$labels['tz:atlantic:stanley'] = 'Stanli';
$labels['tz:australia'] = 'Australi';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbën';
$labels['tz:australia:broken_hill'] = 'Brokën Hill';
$labels['tz:australia:currie'] = 'Kurri';
$labels['tz:australia:darwin'] = 'Darvin';
$labels['tz:australia:eucla'] = 'Jukla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Hou';
$labels['tz:australia:melbourne'] = 'Melburn';
$labels['tz:australia:perth'] = 'Përth';
$labels['tz:australia:sydney'] = 'Sidni';
$labels['tz:europe'] = 'Europë';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakan';
$labels['tz:europe:athens'] = 'Athinë';
$labels['tz:europe:belgrade'] = 'Beograd';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislavë';
$labels['tz:europe:brussels'] = 'Bruksel';
$labels['tz:europe:bucharest'] = 'Bukuresht';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Kishinau';
$labels['tz:europe:copenhagen'] = 'Kopenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gjibraltar';
$labels['tz:europe:guernsey'] = 'Gernsi';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Ishulli i Robit';
$labels['tz:europe:istanbul'] = 'Stamboll';
$labels['tz:europe:jersey'] = 'Xhërsi';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbonë';
$labels['tz:europe:ljubljana'] = 'Ljubljanë';
$labels['tz:europe:london'] = 'Londër';
$labels['tz:europe:luxembourg'] = 'Luksemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Maltë';
$labels['tz:europe:mariehamn'] = 'Merihamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Moskë';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgoricë';
$labels['tz:europe:prague'] = 'Pragë';
$labels['tz:europe:riga'] = 'Rigë';
$labels['tz:europe:rome'] = 'Romë';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevë';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Shkup';
$labels['tz:europe:sofia'] = 'Sofje';
$labels['tz:europe:stockholm'] = 'Stokholm';
$labels['tz:europe:tallinn'] = 'Talin';
$labels['tz:europe:tirane'] = 'Tiranë';
$labels['tz:europe:ulyanovsk'] = 'Uljanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikan';
$labels['tz:europe:vienna'] = 'Vjenë';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varshavë';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhje';
$labels['tz:europe:zurich'] = 'Zyrih ';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Çagos';
$labels['tz:indian:christmas'] = 'Kërshëndellat';
$labels['tz:indian:cocos'] = 'Kokos';
$labels['tz:indian:comoro'] = 'Komoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldive';
$labels['tz:indian:mauritius'] = 'Mauricius';
$labels['tz:indian:mayotte'] = 'Majote';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Paqësor';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Okland';
$labels['tz:pacific:bougainville'] = 'Bugënvil';
$labels['tz:pacific:chatham'] = 'Çatëm';
$labels['tz:pacific:chuuk'] = 'Çuk';
$labels['tz:pacific:easter'] = 'Pashkët';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Endërbëry';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fixhi';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalkanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Xhonston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kuaxhëlin';
$labels['tz:pacific:majuro'] = 'Maxhuro';
$labels['tz:pacific:marquesas'] = 'Markezat';
$labels['tz:pacific:midway'] = 'Miduei';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Numea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitkern';
$labels['tz:pacific:pohnpei'] = 'Ponpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresbi';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Taraua';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Ueik';
$labels['tz:pacific:wallis'] = 'Ualis';
localization/sq_AL/labels.inc000064400000104105151727150570012203 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Mirë se vini në $product';
$labels['username'] = 'Emër përdoruesi';
$labels['password'] = 'Fjalëkalimi';
$labels['server'] = 'Shërbyes';
$labels['login'] = 'Hyrje';
$labels['oauthlogin'] = 'Hyrje me $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Dalje';
$labels['mail'] = 'Postë';
$labels['settings'] = 'Rregullime';
$labels['addressbook'] = 'Libër Adresash';
$labels['darkmode'] = 'Mënyrë e Errët';
$labels['lightmode'] = 'Mënyra e Çelët';
$labels['inbox'] = 'Të marrë';
$labels['drafts'] = 'Skica';
$labels['sent'] = 'Të dërguar';
$labels['trash'] = 'Hedhurina';
$labels['junk'] = 'Të pavlerë';
$labels['show_real_foldernames'] = 'Shfaqi emrat realë për dosjet speciale';
$labels['subject'] = 'Subjekt';
$labels['from'] = 'Nga';
$labels['sender'] = 'Dërguesi';
$labels['to'] = 'Për';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['date'] = 'Datë';
$labels['size'] = 'Madhësi';
$labels['priority'] = 'Përparësi';
$labels['organization'] = 'Ent';
$labels['readstatus'] = 'Gjendje leximi';
$labels['listoptions'] = 'Mundësi liste…';
$labels['listoptionstitle'] = 'Mundësi liste';
$labels['mailboxlist'] = 'Dosje';
$labels['messagesfromto'] = 'Mesazhet nga $from deri në $to nga $count gjithsej';
$labels['threadsfromto'] = 'Rrjedhat nga $from deri në $to nga $count gjithsej';
$labels['messagenrof'] = 'Mesazhi $nr nga $count gjithsej';
$labels['fromtoshort'] = '$from – $to nga $count gjithsej';
$labels['copy'] = 'Kopjoje';
$labels['move'] = 'Lëvize';
$labels['moveto'] = 'Shpjere te...';
$labels['copyto'] = 'Kopjoje te...';
$labels['download'] = 'Shkarkoje';
$labels['open'] = 'Hape';
$labels['showattachment'] = 'Shfaqe';
$labels['showanyway'] = 'Shfaqe sido qoftë';
$labels['filename'] = 'Emër kartele';
$labels['filesize'] = 'Madhësi kartele';
$labels['addtoaddressbook'] = 'Shtoje në librin e adresave';
$labels['sun'] = 'Die';
$labels['mon'] = 'Hën';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mër';
$labels['thu'] = 'Enj';
$labels['fri'] = 'Pre';
$labels['sat'] = 'Sht';
$labels['sunday'] = 'e Dielë';
$labels['monday'] = 'e Hënë';
$labels['tuesday'] = 'e Martë';
$labels['wednesday'] = 'e Mërkurë';
$labels['thursday'] = 'e Enjte';
$labels['friday'] = 'e Premte';
$labels['saturday'] = 'e Shtunë';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Shk';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Pri';
$labels['may'] = 'Maj';
$labels['jun'] = 'Qer';
$labels['jul'] = 'Kor';
$labels['aug'] = 'Gus';
$labels['sep'] = 'Sht';
$labels['oct'] = 'Tet';
$labels['nov'] = 'Nën';
$labels['dec'] = 'Dhj';
$labels['longjan'] = 'Janar';
$labels['longfeb'] = 'Shkurt';
$labels['longmar'] = 'Mars';
$labels['longapr'] = 'Prill';
$labels['longmay'] = 'Maj';
$labels['longjun'] = 'Qershor';
$labels['longjul'] = 'Korrik';
$labels['longaug'] = 'Gusht';
$labels['longsep'] = 'Shtator';
$labels['longoct'] = 'Tetor';
$labels['longnov'] = 'Nëntor';
$labels['longdec'] = 'Dhjetor';
$labels['today'] = 'Sot';
$labels['refresh'] = 'Rifreskoje';
$labels['checkmail'] = 'Kontrollo për mesazhe të reja';
$labels['compose'] = 'Hartoni';
$labels['writenewmessage'] = 'Krijoni një mesazh të ri';
$labels['reply'] = 'Përgjigju';
$labels['replytomessage'] = 'Përgjigjiu dërguesit';
$labels['replytoallmessage'] = 'Përgjigju te lista ose dërguesit dhe të gjithë marrësve';
$labels['replyall'] = 'Përgjigju të gjithëve';
$labels['replylist'] = 'Përgjigju listës';
$labels['forward'] = 'Përcille';
$labels['forwardinline'] = 'Përcille brendazi';
$labels['forwardattachment'] = 'Përcille si bashkëngjitje';
$labels['forwardmessage'] = 'Përcille mesazhin';
$labels['bouncemsg'] = 'Përpunim marrësi';
$labels['bounce'] = 'Ridërgoje';
$labels['deletemessage'] = 'Fshije mesazhin';
$labels['movemessagetotrash'] = 'Hidhe mesazhin në kosh';
$labels['printmessage'] = 'Shtype këtë mesazh';
$labels['previousmessage'] = 'Shfaq mesazhin e mëparshëm';
$labels['firstmessage'] = 'Shfaq mesazhin e parë';
$labels['nextmessage'] = 'Shfaq mesazhin pasardhës';
$labels['lastmessage'] = 'Shfaq mesazhin e fundit';
$labels['backtolist'] = 'Kthehu te lista e mesazheve';
$labels['viewsource'] = 'Shfaqi burimin';
$labels['mark'] = 'Vëri shenjë';
$labels['markmessages'] = 'Vëru shenjë mesazheve';
$labels['markread'] = 'Si të lexuara';
$labels['markunread'] = 'Si të palexuara';
$labels['markflagged'] = 'Si me shenjë';
$labels['markunflagged'] = 'Si me shenjë të hequr';
$labels['markundeleted'] = 'Si i pafshirë';
$labels['moreactions'] = 'Më tepër veprime…';
$labels['markallread'] = 'Vëru shenjë të tërëve si të lexuar';
$labels['folders-cur'] = 'Vetëm dosjes së përzgjedhur';
$labels['folders-sub'] = 'Dosjes së përzgjedhur dhe nëndosjeve të saj';
$labels['folders-all'] = 'Krejt dosjet';
$labels['more'] = 'Më tepër';
$labels['back'] = 'Mbrapsht';
$labels['options'] = 'Opsione';
$labels['composeoptions'] = 'Mundësi hartimi';
$labels['optionsandattachments'] = 'Mundësi dhe bashkëngjitje';
$labels['actions'] = 'Veprime';
$labels['first'] = 'I pari';
$labels['last'] = 'I fundit';
$labels['previous'] = 'I mëparshmi';
$labels['next'] = 'Pasuesi';
$labels['select'] = 'Përzgjidhni';
$labels['selection'] = 'Përzgjdhje';
$labels['all'] = 'Krejt';
$labels['none'] = 'Asnjë';
$labels['currpage'] = 'Faqja e tanishme';
$labels['isread'] = 'Të lexuar';
$labels['unread'] = 'Të palexuar';
$labels['flagged'] = 'Me Shenjë';
$labels['unflagged'] = 'Pa Shenjë';
$labels['unanswered'] = 'Pa përgjigje';
$labels['withattachment'] = 'Me bashkëngjitje';
$labels['deleted'] = 'Të fshirë';
$labels['undeleted'] = 'Të pafshirë';
$labels['replied'] = 'Me përgjigje';
$labels['forwarded'] = 'Të përcjellë';
$labels['invert'] = 'Përmbyse';
$labels['filter'] = 'Filtër';
$labels['list'] = 'Listë';
$labels['threads'] = 'Rrjedha';
$labels['expand-all'] = 'Zgjeroji Krejt';
$labels['expand-unread'] = 'Zgjero të Palexuarit';
$labels['collapse-all'] = 'Tkurri Krejt';
$labels['threaded'] = 'Me rrjedhë';
$labels['showunread'] = 'Shfaq mesazhe të palexuar';
$labels['autoexpand_threads'] = 'Zgjero rrjedha mesazhesh';
$labels['do_expand'] = 'krejt rrjedhat';
$labels['expand_only_unread'] = 'vetëm ato me mesazhe të palexuar';
$labels['fromto'] = 'Nga/Për';
$labels['flag'] = 'Shenjë';
$labels['attachment'] = 'Bashkëngjitje';
$labels['nonesort'] = 'Asnjë';
$labels['sentdate'] = 'Datë dërgimi';
$labels['arrival'] = 'Datë mbërritje';
$labels['asc'] = 'në rend rritës';
$labels['desc'] = 'në rend zbritës';
$labels['listcolumns'] = 'Paraqit shtylla';
$labels['listsorting'] = 'Shtyllë renditjeje';
$labels['listorder'] = 'Rend renditjeje';
$labels['listmode'] = 'Mënyra parje si listë';
$labels['lmode'] = 'Mënyra listë';
$labels['layout'] = 'Skemë';
$labels['layoutwidescreen'] = 'Me ekran të gjerë';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Listë';
$labels['layoutwidescreendesc'] = 'Me ekran të gjerë (pamje 3 shtylla)';
$labels['layoutdesktopdesc'] = 'Desktop (listë e gjerë dhe paraparje nën të )';
$labels['layoutlistdesc'] = 'Listë (pa paraparje poste)';
$labels['folderactions'] = 'Veprime mbi dosje…';
$labels['compact'] = 'Ngjeshe';
$labels['empty'] = 'Zbraze';
$labels['importmessages'] = 'Importo mesazhe';
$labels['mailimportdesc'] = 'Mund të ngarkoni postë duke përdorur kartela në formatin <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ose <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Një grup kartelash mund të ngjeshen në arkiva zip.';
$labels['quota'] = 'Përdorim disku';
$labels['unknown'] = 'i panjohur';
$labels['unlimited'] = 'i pakufizuar';
$labels['quotatype'] = 'Lloj thonjëzash';
$labels['quotatotal'] = 'Kufi';
$labels['quotaused'] = 'E përdorur';
$labels['quotastorage'] = 'Hapësirë disku';
$labels['quotamessage'] = 'Numër mesazhesh';
$labels['shortheaderdate'] = 'Më $date';
$labels['shortheaderto'] = 'Për $to më $date';
$labels['shortheaderfrom'] = 'Nga $from më $date';
$labels['quicksearch'] = 'Kërkim i shpejtë';
$labels['searchplaceholder'] = 'Kërkoni…';
$labels['resetsearch'] = 'Kërkim nga e para';
$labels['searchmod'] = 'Modifikues kërkimi';
$labels['msgtext'] = 'Krejt mesazhin';
$labels['body'] = 'Lëndë';
$labels['type'] = 'Lloj';
$labels['namex'] = 'Emër';
$labels['searchscope'] = 'Shtrirje';
$labels['currentfolder'] = 'Dosja e tanishme';
$labels['subfolders'] = 'Kjo dhe nëndosjet';
$labels['allfolders'] = 'Krejt dosjet';
$labels['searchinterval-1W'] = 'më të vjetër se një javë';
$labels['searchinterval-1M'] = 'më të vjetër se një muaj';
$labels['searchinterval-1Y'] = 'më të vjetër se një vit';
$labels['searchinterval1W'] = 'më të rinj se një javë';
$labels['searchinterval1M'] = 'më të rinj se një muaj';
$labels['searchinterval1Y'] = 'më të rinj se një vit';
$labels['openinextwin'] = 'Hape në dritare të re';
$labels['emlsave'] = 'Shkarkoje (.eml)';
$labels['changeformattext'] = 'Shfaqe në format tekst të thjeshtë';
$labels['changeformathtml'] = 'Shfaqe në format HTML';
$labels['editasnew'] = 'Përpunojeni si të ri';
$labels['send'] = 'Dërgoje';
$labels['sendmessage'] = 'Dërgoje mesazhin';
$labels['savemessage'] = 'Ruaje si skicë';
$labels['addattachment'] = 'Bashkëngjitni një kartelë';
$labels['charset'] = 'Bashkësi shkronjash';
$labels['editortype'] = 'Lloj përpunuesi';
$labels['returnreceipt'] = 'Dëftesë kthimi';
$labels['dsn'] = 'Njoftim gjendjeje dërgimi';
$labels['keepformatting'] = 'Mbaje formatimin';
$labels['mailreplyintro'] = 'Më $date, $sender shkroi:';
$labels['originalmessage'] = 'Mesazhi Origjinal';
$labels['selectimage'] = 'Përzgjidhni figurë';
$labels['addimage'] = 'Shtoni figurë';
$labels['selectmedia'] = 'Përzgjidhni film';
$labels['addmedia'] = 'Shtoni film';
$labels['encrypt'] = 'Fshehtëzoje';
$labels['encryptmessage'] = 'Fshehtëzoje mesazhin';
$labels['encryptmessagemailvelope'] = 'Fshehtëzoje mesazhin me Mailvelope';
$labels['importpubkeys'] = 'Importo kyçe publikë';
$labels['encryptedsendialog'] = 'Po dërgohet mesazh i fshehtëzuar';
$labels['encryptandsign'] = 'Fshehtëzoje dhe nënshkruaje';
$labels['keyid'] = 'ID Kyçi';
$labels['keylength'] = 'Bite';
$labels['keyexpired'] = 'I skaduar';
$labels['keyrevoked'] = 'I shfuqizuar';
$labels['bccinstead'] = 'Përdor Bcc';
$labels['addheader'] = 'Shtoni marrës (krye)';
$labels['insert'] = 'Fut';
$labels['insertcontact'] = 'Futni kontakt(e)';
$labels['recipient'] = 'Marrës';
$labels['recipientedit'] = 'Përpunim marrësi';
$labels['editidents'] = 'Përpunoni identitete';
$labels['spellcheck'] = 'Drejtshkrim';
$labels['checkspelling'] = 'Kontrolloji drejtshkrimin';
$labels['resumeediting'] = 'Rikthejuni përpunimit';
$labels['revertto'] = 'Riktheje te';
$labels['restore'] = 'Rimerre';
$labels['restoremessage'] = 'Të rimerret mesazhi?';
$labels['ignore'] = 'Shpërfille';
$labels['responses'] = 'Përgjigje';
$labels['insertresponse'] = 'Futni një përgjigje';
$labels['manageresponses'] = 'Administroni përgjigje';
$labels['newresponse'] = 'Krijoni përgjigje të re';
$labels['addresponse'] = 'Shtoni përgjigje';
$labels['editresponse'] = 'Përpunoni përgjigje';
$labels['editresponses'] = 'Përpunoni përgjigje';
$labels['responsename'] = 'Emër';
$labels['responsetext'] = 'Tekst Përgjigjeje';
$labels['attach'] = 'Bashkëngjite';
$labels['attachments'] = 'Bashkëngjitje';
$labels['upload'] = 'Ngarko';
$labels['uploadprogress'] = '$percent ($current nga $total gjithsej)';
$labels['close'] = 'Mbylle';
$labels['messageoptions'] = 'Mundësi mesazhesh…';
$labels['togglecomposeoptions'] = 'Shfaq/fshih mundësi hartimi';
$labels['attachmentrename'] = 'Riemërtoni bashkëngjitjet';
$labels['low'] = 'E ulët';
$labels['lowest'] = 'Më e ulëta';
$labels['normal'] = 'Normale';
$labels['high'] = 'E lartë';
$labels['highest'] = 'Më e larta';
$labels['nosubject'] = '(pa subjekt)';
$labels['showimages'] = 'Shfaq figura';
$labels['allow'] = 'Lejoje';
$labels['alwaysshow'] = 'Shfaqi përherë figurat nga $sender';
$labels['alwaysallow'] = 'Lejo përherë nga $sender';
$labels['isdraft'] = 'Kjo është një skicë mesazhi.';
$labels['andnmore'] = '$nr të tjerë...';
$labels['details'] = 'Hollësi';
$labels['summary'] = 'Përmbledhje';
$labels['headers'] = 'Krye';
$labels['allheaders'] = 'Krejt kryet…';
$labels['togglemoreheaders'] = 'Shfaq më tepër krye mesazhi';
$labels['togglefullheaders'] = 'Shfaq/fshih krye të papërpunuar mesazhi';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Tekst i thjeshtë';
$labels['savesentmessagein'] = 'Ruaje mesazhin e dërguar te';
$labels['dontsave'] = 'mos e ruaj';
$labels['maxuploadsize'] = 'Maksimumi i lejuar për madhësi kartelash është $size';
$labels['addcc'] = 'Shto Cc';
$labels['addbcc'] = 'Shto Bcc';
$labels['addreplyto'] = 'Shtoni Përgjigjuni-Te';
$labels['addfollowupto'] = 'Shto Vazhdojeni-Te';
$labels['sendreceipt'] = 'Të dërgohet dëftesë leximi?';
$labels['mdnrequest'] = 'Dërguesi i këtij mesazhi ka kërkuar që të njoftohet kur të lexoni këtë mesazh. Dëshironi të njoftohet dërguesi?';
$labels['receiptread'] = 'Dëftesë Kthimi (u lexua)';
$labels['yourmessage'] = 'Kjo është një Dëftesë Kthimi për mesazhin tuaj';
$labels['receiptnote'] = 'Shënim: Kjo dëftesë dëshmon vetëm se mesazhi u shfaq në kompjuterin e marrësit. Nuk ka garanci se marrësi e ka lexuar ose e ka kuptuar përmbajtjen e mesazhit.';
$labels['sendalwaysto'] = 'Dërgoje përherë te $email';
$labels['zoomin'] = 'Zmadhim';
$labels['zoomout'] = 'Zvogëlim';
$labels['rotate'] = 'Rrotulloje';
$labels['increaseimage'] = 'Zmadhoni madhësi figure';
$labels['decreaseimage'] = 'Zvogëloni madhësi figure';
$labels['rotateimage'] = 'Rrotullojeni figurën';
$labels['showtools'] = 'Shfaq mjete figure';
$labels['hidetools'] = 'Fshihi mjetet e figurës';
$labels['name'] = 'Emër Në Ekran';
$labels['firstname'] = 'Emër';
$labels['surname'] = 'Mbiemër';
$labels['middlename'] = 'Emër i Dytë';
$labels['nameprefix'] = 'Parashtesë';
$labels['namesuffix'] = 'Prapashtesë';
$labels['nickname'] = 'Nofkë';
$labels['jobtitle'] = 'Pozicion';
$labels['department'] = 'Degë';
$labels['gender'] = 'Gjini';
$labels['maidenname'] = 'Emër në Vajzëri';
$labels['email'] = 'Email';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresë';
$labels['street'] = 'Rrugë';
$labels['locality'] = 'Qytet';
$labels['zipcode'] = 'Kod ZIP';
$labels['region'] = 'Shtet/Provincë';
$labels['country'] = 'Vend';
$labels['birthday'] = 'Datëlindje';
$labels['anniversary'] = 'Përvjetor';
$labels['website'] = 'Sajt';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Shënime';
$labels['male'] = 'mashkull';
$labels['female'] = 'femër';
$labels['manager'] = 'Përgjegjës';
$labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Bashkëshort';
$labels['allfields'] = 'Krejt fushat';
$labels['search'] = 'Kërkoni';
$labels['searchresult'] = 'Përfundime kërkimi';
$labels['advsearch'] = 'Kërkim i Thelluar';
$labels['advanced'] = 'I thelluar';
$labels['other'] = 'Tjetër';
$labels['printcontact'] = 'Shtype kontaktin';
$labels['qrcode'] = 'Kod QR';
$labels['typehome'] = 'Shtëpie';
$labels['typework'] = 'Pune';
$labels['typeother'] = 'Tjetër';
$labels['typemobile'] = 'Celular';
$labels['typemain'] = 'Kryesore';
$labels['typehomefax'] = 'Faks Shtëpie';
$labels['typeworkfax'] = 'Faks Pune';
$labels['typecar'] = 'Automjet';
$labels['typepager'] = 'Faques';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Faqe Hyrëse';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Shtoni fushë…';
$labels['addcontact'] = 'Shtoni kontakt';
$labels['editcontact'] = 'Përpunoni kontakt';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Veti kontaktesh';
$labels['contactnameandorg'] = 'Emër dhe Ent';
$labels['personalinfo'] = 'Të dhëna personale';
$labels['personal'] = 'Personale';
$labels['contactphoto'] = 'Foto kontakti';
$labels['edit'] = 'Përpunoni';
$labels['cancel'] = 'Anuloje';
$labels['save'] = 'Ruaje';
$labels['delete'] = 'Fshije';
$labels['discard'] = 'Hidhe tej';
$labels['continue'] = 'Vazhdo';
$labels['ok'] = 'OK';
$labels['rename'] = 'Riemërtojeni';
$labels['addphoto'] = 'Shtoni';
$labels['replacephoto'] = 'Zëvendësoje';
$labels['uploadphoto'] = 'Ngarkoni foto';
$labels['choosefile'] = 'Zgjidhni kartelë…';
$labels['choosefiles'] = 'Zgjidhni kartela…';
$labels['browse'] = 'Shfletoni';
$labels['newcontact'] = 'Krijoni kontakt të ri';
$labels['deletecontact'] = 'Fshiji kontaktet e përzgjedhur';
$labels['composeto'] = 'Hartoni email për';
$labels['contactsfromto'] = 'Kontaktet nga $from deri në $to nga $count gjithsej';
$labels['print'] = 'Shtype';
$labels['export'] = 'Eksporto';
$labels['exportall'] = 'Eksportoji krejt';
$labels['exportsel'] = 'Eksporto të përzgjedhurat';
$labels['exportvcards'] = 'Eksportoji kontaktet në format vCard';
$labels['newgroup'] = 'Krijoni grup të ri';
$labels['addgroup'] = 'Shtoni grup';
$labels['grouprename'] = 'Riemërtojeni grupin';
$labels['groupdelete'] = 'Fshije grupin';
$labels['groupassign'] = 'Caktojani një grupi…';
$labels['groupremove'] = 'Hiqeni prej grupi';
$labels['groupremoveselected'] = 'Hiqi nga grupi kontaktet e përzgjedhur';
$labels['uponelevel'] = 'Një nivel më sipër';
$labels['previouspage'] = 'Shfaq faqen e mëparshme';
$labels['firstpage'] = 'Shfaq faqen e parë';
$labels['nextpage'] = 'Shfaq faqen pasuese';
$labels['lastpage'] = 'Shfaq faqen e fundit';
$labels['group'] = 'Grup';
$labels['groups'] = 'Grupe';
$labels['listgroup'] = 'Paraqit anëtarë grupi';
$labels['personaladrbook'] = 'Adresa Personale';
$labels['searchsave'] = 'Ruaje kërkimin';
$labels['searchdelete'] = 'Fshije kërkimin';
$labels['import'] = 'Importo';
$labels['importcontacts'] = 'Importo kontaktet';
$labels['importfromfile'] = 'Importo prej kartele';
$labels['importtarget'] = 'Shtoni kontakte te';
$labels['importreplace'] = 'Zëvendëso krejt librin e adresave';
$labels['importgroups'] = 'Importo përshoqërime grupi';
$labels['importgroupsall'] = 'Krejt (krijo grupe, në u dashtë)';
$labels['importgroupsexisting'] = 'Vetëm për grupe ekzistues';
$labels['importdesc'] = 'Mund të ngarkoni kontakte nga një libër ekzistues adresash.<br/>Deri këtu mbulojmë importim adresash prej formati <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ose CSV (comma-separated) të dhënash.';
$labels['importmapdesc'] = 'Përpara se të ecet më tej me importim të dhënash CSV (ndarë me presje), ripohoni më poshtë të dhënat mbi përshoqërim fushash.';
$labels['fieldnotmapped'] = 'Fushë e papërshoqëruar (mos e importo)';
$labels['skipheader'] = 'Mos importo rreshtin e parë (kryet)';
$labels['done'] = 'U bë';
$labels['settingsfor'] = 'Rregullime për';
$labels['about'] = 'Rreth';
$labels['preferences'] = 'Parapëlqime';
$labels['userpreferences'] = 'Parapëlqime përdoruesi';
$labels['editpreferences'] = 'Përpunoni parapëlqime përdoruesi';
$labels['identities'] = 'Identitete';
$labels['manageidentities'] = 'Administroni identitete';
$labels['newidentity'] = 'Krijoni identitet të ri';
$labels['addidentity'] = 'Shtoni identitet';
$labels['editidentity'] = 'Përpunoni identitet';
$labels['identityencryption'] = 'Fshehtëzim';
$labels['preferhtml'] = 'Shfaq HTML';
$labels['defaultcharset'] = 'Shkronja Parazgjedhje';
$labels['htmlmessage'] = 'Mesazh HTML';
$labels['messagepart'] = 'Pjesë';
$labels['digitalsig'] = 'Nënshkrim Dixhital';
$labels['dateformat'] = 'Format të dhënash';
$labels['timeformat'] = 'Format kohe';
$labels['prettydate'] = 'Data të hijshme';
$labels['setdefault'] = 'Caktoje si parazgjedhje';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Gjuhë';
$labels['timezone'] = 'Brez orar';
$labels['pagesize'] = 'Rreshta për faqe';
$labels['signature'] = 'Nënshkrim';
$labels['dstactive'] = 'Ndryshim ore';
$labels['showinextwin'] = 'Hape mesazhin në dritare të re';
$labels['composeextwin'] = 'Për hartim mesazhesh hap dritare të re';
$labels['htmleditor'] = 'Harto mesazhe HTML';
$labels['htmlonreply'] = 'kur i përgjigjeni mesazheve HTML';
$labels['htmlonreplyandforward'] = 'kur i përgjigjeni ose përcillni mesazh HTML';
$labels['htmlsignature'] = 'Nënshkrimi HTML';
$labels['showemail'] = 'Adresën email shfaqe me emrin për në ekran';
$labels['previewpane'] = 'Shfaq panel paraparjeje';
$labels['skin'] = 'Temë grafike për ndërfaqen';
$labels['logoutclear'] = 'Pastroji Hedhurinat gjatë daljes';
$labels['logoutcompact'] = 'Ngjeshi Të marrët në dalje e sipër';
$labels['uisettings'] = 'Ndërfaqe Përdoruesi';
$labels['serversettings'] = 'Rregullime Shërbyesi';
$labels['mailboxview'] = 'Shfaqje e Kutisë Postare';
$labels['mdnrequests'] = 'Kur kërkohet dëftesë kthimi';
$labels['askuser'] = 'pyetmë';
$labels['autosend'] = 'dërgo dëftesë';
$labels['autosendknown'] = 'dërgoju dëftesë kontakteve të mi, përndryshe pyetmë';
$labels['autosendknownignore'] = 'dërgoju dëftesë kontakteve të mi, përndryshe shpërfille';
$labels['autosendtrusted'] = 'dërgo dëftesë te dërgues të besuar, përndryshe pyetmë';
$labels['autosendtrustedignore'] = 'dërgoju dëftesë dërguesve të besuar, përndryshe shpërfille';
$labels['ignorerequest'] = 'shpërfille kërkesën';
$labels['readwhendeleted'] = 'Gjatë fshirjes shënoje mesazhin si të lexuar';
$labels['flagfordeletion'] = 'Vëri shenjë mesazhit për fshirje, në vend se ta fshish';
$labels['skipdeleted'] = 'Mos shfaq mesazhe të fshirë';
$labels['deletealways'] = 'Nëse shpënia te Hedhurinat dështon, fshiji';
$labels['deletejunk'] = 'Mesazhet te Të pavlerat fshiji drejtpërsëdrejti';
$labels['showremoteimages'] = 'Shfaqi figurat e largëta të trupëzuara në mesazh';
$labels['allowremoteresources'] = 'Lejo burime të largëta (figura, stile)';
$labels['fromknownsenders'] = 'prej dërguesish të njohur';
$labels['fromtrustedsenders'] = 'prej dërguesish të besuar';
$labels['frommycontacts'] = 'prej kontakteve të mi';
$labels['always'] = 'përherë';
$labels['alwaysbutplain'] = 'përherë, hiq rastin kur i përgjigjem teksti të thjeshtë';
$labels['showinlineimages'] = 'Figurat e bashkëngjitura shfaqi nën mesazh';
$labels['autosavedraft'] = 'Ruaje automatikisht si skicë';
$labels['everynminutes'] = 'çdo $n minutë(a)';
$labels['refreshinterval'] = 'Rifreskoje (kontrollo për mesazhe të rinj, etj)';
$labels['never'] = 'kurrë';
$labels['immediately'] = 'menjëherë';
$labels['messagesdisplaying'] = 'Shfaqje Mesazhesh';
$labels['messagescomposition'] = 'Hartim Mesazhesh';
$labels['mimeparamfolding'] = 'Emra bashkëngjitjesh';
$labels['2231folding'] = 'RFC 2231 i Plotë (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 i Plotë (tjetër)';
$labels['force7bit'] = 'Për shenja 8-bitëshe përdor kodim MIME';
$labels['savelocalstorage'] = "Ruaji te depoja vendore e shfletuesit (përkohësisht)";
$labels['advancedoptions'] = 'Mundësi të mëtejshme';
$labels['toggleadvancedoptions'] = 'Shfaq/fshih mundësi të mëtejshme';
$labels['focusonnewmessage'] = 'Për mesazhe të rinj kaloje fokusin te dritarja e shfletuesit';
$labels['checkallfolders'] = 'Kontrollo krejt dosjet për mesazhe të rinj';
$labels['displaynext'] = 'Pas fshirjesh/lëvizjesh, shfaq zërin pasues në listë';
$labels['defaultfont'] = 'Shkronja parazgjedhje për mesazhe HTML';
$labels['mainoptions'] = 'Mundësitë Kryesore';
$labels['browseroptions'] = 'Mundësi Shfletuesi';
$labels['section'] = 'Seksion';
$labels['maintenance'] = 'Mirëmbajtje';
$labels['newmessage'] = 'Mesazh i Ri';
$labels['signatureoptions'] = 'Mundësi Nënshkrimesh';
$labels['whenreplying'] = 'Kur përgjigjem';
$labels['replyempty'] = 'mos e cito mesazhin origjinal';
$labels['replytopposting'] = 'filloje mesazhin e ri sipër citimit';
$labels['replytoppostingnoindent'] = 'nise mesazhin e ri sipër citimit (pa shmangie)';
$labels['replybottomposting'] = 'filloje mesazhin e ri poshtë citimit';
$labels['replyremovesignature'] = 'Kur përgjigjem, hiqe prej mesazhit nënshkrimin origjinal';
$labels['autoaddsignature'] = 'Nënshkrimin shtoje vetvetiu';
$labels['newmessageonly'] = 'vetëm për mesazh të ri';
$labels['replyandforwardonly'] = 'vetëm për përgjigje dhe përcjellje';
$labels['insertsignature'] = 'Fut nënshkrim';
$labels['sigbelow'] = 'Nënshkrimin vendose nën mesazhin e cituar';
$labels['sigseparator'] = 'Në nënshkrime përdor detyrimisht ndarës standard';
$labels['automarkread'] = 'Vëru shenjë mesazheve si të lexuar';
$labels['afternseconds'] = 'pas $n sekondash';
$labels['reqmdn'] = 'Kërko përherë dëftesë kthimi';
$labels['reqdsn'] = 'Kërko përherë njoftim mbi gjendje dërgimi';
$labels['replysamefolder'] = 'Vendosi përgjigjet te dosja e mesazheve të cilit po i përgjigjeni';
$labels['defaultabook'] = 'Libër parazgjedhje adresash';
$labels['autocompletesingle'] = 'Gjatë vetëplotësimit anashkalo adresa email alternative';
$labels['listnamedisplay'] = 'Kontaktet paraqiti si';
$labels['contactformmode'] = 'Mënyrë formulari kontaktesh';
$labels['privatemode'] = 'Privat (Shtëpie)';
$labels['businessmode'] = 'Biznes (Pune)';
$labels['collectedaddresses'] = 'Adresa të grumbulluara';
$labels['collectedrecipients'] = 'Marrës të Grumbulluar';
$labels['collectedrecipientsopt'] = 'Marrës email-esh të dërguar depozitoji në';
$labels['collectedsendersopt'] = 'Dërguesit e besuar depozitoji në';
$labels['trustedsenders'] = 'Dërgues të Besuar';
$labels['spellcheckbeforesend'] = 'Kontrollo drejtshkrimin para dërgimit të një mesazhi';
$labels['spellcheckoptions'] = 'Mundësi Kontrolli Drejtshkrimi';
$labels['spellcheckignoresyms'] = 'Shpërfilli fjalët me simbole';
$labels['spellcheckignorenums'] = 'Shpërfilli fjalët me numra';
$labels['spellcheckignorecaps'] = 'Shpërfilli fjalët me krejt shkronjat me të madhe';
$labels['addtodict'] = 'Shtoje në fjalor';
$labels['mailtoprotohandler'] = 'Regjistro trajtues protokolli për lidhje mailto:';
$labels['standardwindows'] = 'Flluskat trajtoji si dritare standarde';
$labels['forwardmode'] = 'Përcjellje mesazhesh';
$labels['inline'] = 'brendazi';
$labels['asattachment'] = 'si bashkëngjitje';
$labels['replyallmode'] = 'Veprim parazgjedhje për butonin [Përgjigju krejt]';
$labels['replyalldefault'] = 'përgjigju të tërëve';
$labels['replyalllist'] = 'përgjigju vetëm te listë postimesh (nëse gjendet e tillë)';
$labels['allmessages'] = 'krejt mesazhet';
$labels['olderxdays'] = 'më i vjetër se $x ditë';
$labels['folder'] = 'Dosje';
$labels['folders'] = 'Dosje';
$labels['foldername'] = 'Emër dosjeje';
$labels['subscribed'] = 'Regjistruar';
$labels['messagecount'] = 'Mesazhe';
$labels['create'] = 'Krijoje';
$labels['createfolder'] = 'Krijo dosje të re';
$labels['managefolders'] = 'Administroni dosje';
$labels['specialfolders'] = 'Dosje Speciale';
$labels['properties'] = 'Veti';
$labels['folderproperties'] = 'Veti dosjeje';
$labels['parentfolder'] = 'Dosje mëmë';
$labels['location'] = 'Vendndodhje';
$labels['info'] = 'Informacion';
$labels['getfoldersize'] = 'Klikoni që të kini madhësinë e dosjes';
$labels['changesubscription'] = 'Klikoni që të ndryshoni pajtimin';
$labels['foldertype'] = 'Lloj Dosjeje';
$labels['personalfolder'] = 'Dosje Private';
$labels['otherfolder'] = 'Dosje Përdoruesi Tjetër';
$labels['sharedfolder'] = 'Dosje Publike';
$labels['findfolders'] = 'Gjeni dosje';
$labels['findcontacts'] = 'Gjej kontakte';
$labels['findmail'] = 'Gjej mesazhe poste';
$labels['namespace.personal'] = 'Personale';
$labels['namespace.other'] = 'Përdorues të tjerë';
$labels['namespace.shared'] = 'E përbashkët';
$labels['dualuselabel'] = 'Mund të përmbajë vetëm';
$labels['dualusemail'] = 'mesazhe';
$labels['dualusefolder'] = 'dosje';
$labels['generate'] = 'Prodhoje';
$labels['encryptioncreatekey'] = 'Krijoni një çift të ri kyçesh';
$labels['openmailvelopesettings'] = 'Hapni Rregullime për Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Keni $nr kyçe privatë me përputhje të depozituar në vargun tuaj të kyçeve Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Identiteti i këtij dërguesi ende s’ka ndonjë kyç privat PGP të depozituar në zgjerimin tuaj Mailvelope. Do të donit të krijoni një që të mund të aktivizohet shkëmbim mesazhesh të fshehtëzuar?';
$labels['encryption'] = 'Fshehtëzim';
$labels['mailvelopeoptions'] = 'Mundësi Mailvelope';
$labels['mailvelopemainkeyring'] = 'Përdor varg kyçesh kryesor Mailvelope';
$labels['mailvelopenotfound'] = 'Zgjerimi Mailvelope s’është aktivizuar/instaluar në shfletuesin tuaj.';
$labels['sortby'] = 'Renditi sipas';
$labels['sortasc'] = 'Në rend rritës';
$labels['sortdesc'] = 'Në rend zbritës';
$labels['undo'] = 'Zhbëje';
$labels['installedplugins'] = 'Shtojca të instaluara';
$labels['plugin'] = 'Shtojcë';
$labels['version'] = 'Version';
$labels['source'] = 'Burim';
$labels['destination'] = 'Vendmbërritje';
$labels['license'] = 'Licencë';
$labels['support'] = 'Merrni asistencë';
$labels['savedsearches'] = 'Kërkime të ruajtura';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unikod';
$labels['english'] = 'Anglisht';
$labels['westerneuropean'] = 'Europiano-perëndimore';
$labels['easterneuropean'] = 'Europiano-lindore';
$labels['southeasterneuropean'] = 'Europiano-juglindore';
$labels['baltic'] = 'Baltike';
$labels['cyrillic'] = 'Cirilike';
$labels['arabic'] = 'Arabike';
$labels['greek'] = 'Greke';
$labels['hebrew'] = 'Hebraike';
$labels['turkish'] = 'Turke';
$labels['nordic'] = 'Nordike';
$labels['thai'] = 'Tajlandeze';
$labels['celtic'] = 'Celtike';
$labels['vietnamese'] = 'Vietnameze';
$labels['japanese'] = 'Japoneze';
$labels['korean'] = 'Koreane';
$labels['chinese'] = 'Kineze';
$labels['arialabeltopnav'] = 'Kontroll dritareje';
$labels['arialabeltasknav'] = 'Akte aplikacioni';
$labels['arialabeltoolbar'] = 'Panel aplikacioni';
$labels['arialabellistnav'] = 'Lëvizje në listë';
$labels['arialabelactivetask'] = 'Akte aktive';
$labels['arialabelmessagessearchfilter'] = 'Filtër mënyre paraqitjeje email-esh';
$labels['arialabelmailsearchform'] = 'Formular kërkimi mesazhi email';
$labels['arialabelcontactsearchform'] = 'Formular kërkimi kontaktesh';
$labels['arialabelmailquicksearchbox'] = 'Fushë kërkimi email-i';
$labels['arialabelquicksearchbox'] = 'Fushë kërkimi';
$labels['arialabelfoldersearchfilter'] = 'Filtër lënde dosjeje';
$labels['arialabelfoldersearchform'] = 'Formular kërkimi dosjesh';
$labels['arialabelfolderlist'] = 'Përzgjedhje dosje email';
$labels['arialabelmessagelist'] = 'Shfaqje Mesazhesh Email';
$labels['arialabelmailpreviewframe'] = 'Paraparje mesazhi';
$labels['arialabelmailboxmenu'] = 'Menu veprimesh mbi dosje';
$labels['arialabellistselectmenu'] = 'Menu përzgjedhjeje liste';
$labels['arialabelthreadselectmenu'] = 'Menu paraqitje rrjedhash';
$labels['arialabelmessagelistoptions'] = 'Mundësi mbi shfaqje dhe renditje listash mesazhesh';
$labels['arialabelmailimportdialog'] = 'Dialog importimi mesazhesh';
$labels['arialabelmessagenav'] = 'Lëvizje te mesazhi';
$labels['arialabelmessagebody'] = 'Lëndë Mesazhi';
$labels['arialabelmessageactions'] = 'Veprime mbi mesazhe';
$labels['arialabelcontactquicksearch'] = 'Formular kërkimi kontaktesh';
$labels['arialabelcontactsearchbox'] = 'Fushë kërkimi kontaktesh';
$labels['arialabelmessageheaders'] = 'Krye mesazhi';
$labels['arialabelforwardingoptions'] = 'Mundësi përcjelljesh';
$labels['arialabelreplyalloptions'] = 'Mundësi për Përgjigju-krejt';
$labels['arialabelmoremessageactions'] = 'Më tepër veprime mbi mesazhe';
$labels['arialabelmorecontactactions'] = 'Më tepër veprime mbi kontakte';
$labels['arialabelmarkmessagesas'] = 'Mesazheve të përzgjedhur vëru shenjë si…';
$labels['arialabelcomposeoptions'] = 'Mundësi hartimi';
$labels['arialabelresponsesmenu'] = 'Menu përgjigjesh të parapërgatitura';
$labels['arialabelattachmentuploadform'] = 'Formular ngarkimi bashkëngjitjesh';
$labels['arialabelattachmentmenu'] = 'Mundësi bashkëngjitjesh';
$labels['arialabelmailtomenu'] = 'Mundësi adresash email';
$labels['arialabelattachmentpreview'] = 'Paraparje bashkëngjitjesh';
$labels['ariasummarycomposecontacts'] = 'Listë kontaktesh dhe grupesh për t’u përzgjedhur si marrës';
$labels['arialabelcontactexportoptions'] = 'Mundësi eksportimi kontaktesh';
$labels['arialabelabookgroupoptions'] = 'Mundësi libri adresash/grupi';
$labels['arialabelpreferencesform'] = 'Formular parapëlqimesh';
$labels['arialabelidentityeditfrom'] = 'Formular përpunimi identitetesh';
$labels['arialabelresponseeditfrom'] = 'Formular përpunimi përgjigjesh';
$labels['arialabelsearchterms'] = 'Terma kërkimi';
$labels['arialabeldropactionmenu'] = 'Menu veprimi Merr-dhe-Vër';
$labels['arialabelheadersmenu'] = 'Menu shtimi marrësi (krye)';
$labels['arialabelimagetools'] = 'Mjete figure';
$labels['helplistnavigation'] = 'Lëvizje me tastierë në lista';
$labels['helplistkeyboardnavigation'] = "Shigjeta sipër/poshtë: Zhvendosni fokusin/përzgjedhjen në rreshta.
Space: Përzgjidhni rreshtin që ka fokusin.
Shift + up/down: Përzgjidhni rreshta shtesë sipër/poshtë.
Ctrl + Space: Shtojeni rreshtin që ka fokusin te përzgjedhja/heqja nga përzgjedhja.";
$labels['helplistkeyboardnavmessages'] = "Shigjetat majtas/djathtas: zgjeroni/tkurrni rrjedhë mesazhesh (e vlefshme vetëm nën mënyrën rrjedhë).
Enter: Hapni mesazhin e përzgjedhur/atë që ka fokusin.
Delete: Shpjereni mesazhin e përzgjedhur te Hedhurinat.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Hapni kontaktin e përzgjedhur/atë që ka fokusin.";
localization/sq_AL/messages.inc000064400000044006151727150570012553 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ndodhi një gabim!';
$messages['loginfailed']  = 'Hyrja dështoi.';
$messages['cookiesdisabled'] = 'Shfletuesi juaj s’i pranon cookie-t.';
$messages['sessionerror'] = 'Sesioni juaj është i pavlefshëm ose ka skaduar.';
$messages['cookiesmismatch'] = 'U pikas ngatërrim cookie-sh. Ju lutemi, pastroni cookie-t prej shfletuesit tuaj.';
$messages['storageerror'] = 'Lidhja me shërbyesin e depozitimit dështoi.';
$messages['servererror'] = 'Gabim Shërbyesi!';
$messages['servererrormsg'] = 'Gabim Shërbyesi: $msg';
$messages['accountlocked'] = 'Numër i madh përpjekjesh të dështuara për hyrje. Riprovoni më vonë.';
$messages['connerror'] = 'Gabim Lidhjeje (S’u arrit të kapej shërbyesi)!';
$messages['dberror'] = 'Gabim Baze të Dhënash!';
$messages['dbconnerror'] = 'S’arrihet të lidhet me bazën e të dhënave!';
$messages['windowopenerror'] = 'Dritarja flluskë u bllokua!';
$messages['requesttimedout'] = 'Kërkesës i mbaroi koha';
$messages['errorreadonly'] = 'S’arrihet të kryhet veprimi. Dosja është vetëm për lexim.';
$messages['errornoperm'] = 'S’arrihet të kryhet veprimi. Leje të mohuara.';
$messages['erroroverquota'] = 'S’arrihet të kryhet veprimi. S’ka hapësirë të lirë në disk.';
$messages['erroroverquotadelete'] = 'S’ka hapësirë të lirë në disk. Përdorni SHIFT+DEL që të fshini një mesazh.';
$messages['invalidrequest'] = 'Kërkesë e pavlefshme! S’u ruajt ndonjë e dhënë.';
$messages['invalidhost'] = 'Emër i pavlefshëm shërbyesi.';
$messages['nomessagesfound'] = 'S’u gjetën mesazhe në këtë kuti postare.';
$messages['loggedout'] = 'E përfunduat me sukses sesionin. Mirupafshim!';
$messages['mailboxempty'] = 'Kutia postare është e zbrazët';
$messages['nomessages'] = 'S’ka mesazhe';
$messages['refreshing'] = 'Po rifreskohet…';
$messages['loading'] = 'Po ngarkohet...';
$messages['uploading'] = 'Po ngarkohet kartelë…';
$messages['attaching'] = 'Po bashkëngjitet kartelë…';
$messages['uploadingmany'] = 'Po ngarkohen kartela…';
$messages['loadingdata'] = 'Po ngarkohen të dhëna...';
$messages['checkingmail'] = 'Po kontrollohet për mesazhe të rinj...';
$messages['sendingmessage'] = 'Po dërgohet mesazhi...';
$messages['messagesent'] = 'Mesazhi u dërgua me sukses.';
$messages['savingmessage'] = 'Po ruhet mesazhi...';
$messages['messagesaved'] = 'Mesazhi u ruajt te Skicat.';
$messages['successfullysaved'] = 'U ruajt me sukses.';
$messages['savingresponse'] = 'Po ruhet tekst përgjigjeje…';
$messages['deleteresponseconfirm'] = 'Doni vërtet të fshihet ky tekst përgjigjeje?';
$messages['nocontactselected'] = 'S’keni përzgjedhur ende ndonjë kontakt.';
$messages['addedsuccessfully'] = 'Kontakti u shtua me sukses në librin e adresave.';
$messages['contactexists'] = 'Ka tashmë një kontakt me të njëjtën adresë email.';
$messages['contactnameexists'] = 'Ka tashmë një kontakt me të njëjtin emër.';
$messages['blockedimages'] = 'Që të mbrohet privatësia juaj, figurat e largëta të këtij mesazhi janë bllokuar.';
$messages['blockedresources'] = 'Për mbrojtjen e privatësisë tuaj janë bllokuar burime të largët.';
$messages['suspiciousemail'] = 'Ky mesazh përmban adresa email të dyshimta që mund të jenë të rrejshme.';
$messages['bccemail'] = 'Mesazhi(et) e përcjella përmbajnë marrës të fshehtë (Bcc).';
$messages['bouncehint'] = 'Mesazhi do të dërgohet pa ndonjë ndryshim, d.m.th. duke përdorur lëndën, kryet dhe marrësit origjinalë.';
$messages['encryptedmessage'] = 'Ky është një mesazh i fshehtëzuar dhe s’mund të shfaqet. Na ndjeni!';
$messages['externalmessagedecryption'] = 'Ky është një mesazh i fshehtëzuar dhe mund të shfshehtëzohet me zgjerimin e shfletuesit tuaj.';
$messages['nopubkeyfor'] = 'S’u gjet kyç i vlefshëm publik për $email';
$messages['nopubkeyforsender'] = 'S’u gjet kyç i vlefshëm publik për identitetin e dërguesit tuaj. Doni të fshehtëzohet mesazhi vetëm për marrësit?';
$messages['encryptnoattachments'] = 'Bashkëngjitjet tashmë të ngarkuara s’mund të fshehtëzohen. Ju lutemi, rishtojini te përpunuesi i fshehtëzimeve.';
$messages['searchpubkeyservers'] = 'Doni të kërkohet në shërbyes publikë kyçesh për kyçin që mungon?';
$messages['encryptpubkeysfound'] = 'U gjetën kyçet publikë vijues:';
$messages['keyservererror'] = 'S\'u arrit të merret kyç që nga shërbyesi i kyçeve.';
$messages['keyimportsuccess'] = 'Kyçi publik $key u importua me sukses te vargu juaj i kyçeve.';
$messages['nocontactsfound'] = 'S’u gjetën kontakte.';
$messages['contactnotfound'] = 'S’u gjet kontakti i kërkuar.';
$messages['contactsearchonly'] = 'Duhet të përdorni një formular kërkimi që të shihni kontakte prej librit të përzgjedhur të adresave.';
$messages['sendingfailed'] = 'Dërgimi i mesazhit dështoi.';
$messages['senttooquickly'] = 'Ju lutemi, pritni $sec sekondë(a) përpara se të dërgohet ky mesazh.';
$messages['errorsavingsent'] = 'Ndodhi një gabim teksa ruhej mesazhi i dërguar.';
$messages['errorsaving'] = 'Ndodhi një gabim gjatë ruajtjes.';
$messages['errormoving'] = 'S’u lëviz dot mesazhi(et).';
$messages['errorcopying'] = 'S’u kopjua dot mesazhi(et).';
$messages['errordeleting'] = 'S’u fshi dot mesazhi(et).';
$messages['errormarking'] = 'S’iu vu dot shenjë mesazhit(eve).';
$messages['alerttitle'] = 'Kujdes';
$messages['confirmationtitle'] = 'Jeni i sigurt se…';
$messages['deletecontactconfirm']  = 'Doni vërtet të fshihet kontakti(et) i përzgjedhur?';
$messages['deletegroupconfirm']  = 'Doni vërtet të fshihet grupi i përzgjedhur?';
$messages['deletemessagesconfirm'] = 'Doni vërtet të fshihet mesazhi(et) i përzgjedhur?';
$messages['deletefolderconfirm']  = 'Doni vërtet të fshihet kjo dosje?';
$messages['movefolderconfirm']  = 'Doni vërtet të lëvizet kjo dosje?';
$messages['purgefolderconfirm']  = 'Doni vërtet të fshihen krejt mesazhet në këtë dosje?';
$messages['contactdeleting'] = 'Po fshihet kontakti(et)…';
$messages['groupdeleting'] = 'Po fshihet grupi…';
$messages['folderdeleting'] = 'Po fshihet dosja…';
$messages['foldermoving'] = 'Po lëvizet dosja…';
$messages['foldersubscribing'] = 'Po bëhet pajtimi te dosja…';
$messages['folderunsubscribing'] = 'Po hiqet pajtimi te dosja…';
$messages['formincomplete'] = 'Formulari s’u plotësua i tëri.';
$messages['noemailwarning'] = 'Ju lutemi, jepni një adresë email të vlefshme.';
$messages['nonamewarning']  = 'Ju lutemi, jepni një emër.';
$messages['nopagesizewarning'] = 'Ju lutemi, jepni një madhësi faqeje.';
$messages['nosenderwarning'] = 'Ju lutemi, jepni adresë email të dërguesit.';
$messages['recipientsadded'] = 'Marrësi(at) u shtuan me sukses.';
$messages['norecipientwarning'] = 'Ju lutemi, jepni të paktën një marrës.';
$messages['disclosedrecipwarning'] = 'Krejt pjesëmarrësit do të shohin adresat email të njëri-tjetrit.';
$messages['disclosedreciptitle'] = 'Shumë pjesëmarrës publikë';
$messages['nosubjectwarning']  = 'Fusha "Subjekt" është e zbrazët. Do të donit të jepnit një tani?';
$messages['nosubjecttitle']  = 'S’ka subjekt';
$messages['nobodywarning'] = 'Të dërgohet mesazhi pa tekst?';
$messages['notsentwarning'] = 'Mesazhi s’është dërguar dhe ka ndryshime të paruajtura. Doni të hidhen tej ndryshimet tuaja?';
$messages['restoresavedcomposedata'] = 'U gjet një mesazh i hartuar më parë, por i padërguar.\n\nSubjekt: $subject\nRuajtur më: $date\n\nDoni të rimerret ky mesazh?';
$messages['nosearchname'] = 'Ju lutemi, jepni emër kontakti ose adresë email.';
$messages['notuploadedwarning'] = 'S’janë ngarkuar ende krejt bashkëngjitjet. Ju lutemi, prisni ose anulojeni ngarkimin.';
$messages['searchsuccessful'] = 'U gjetën $nr mesazhe.';
$messages['contactsearchsuccessful'] = 'U gjetën $nr kontakte.';
$messages['searchnomatch'] = 'Kërkimi s’ktheu përputhje.';
$messages['searching'] = 'Po kërkohet…';
$messages['checking'] = 'Po kontrollohet…';
$messages['stillsearching'] = 'Ende në kërkim…';
$messages['nospellerrors'] = 'S’u gjetën gabime drejtshkrimi.';
$messages['folderdeleted'] = 'Dosja u fshi me sukses.';
$messages['foldersubscribed'] = 'Pajtimi te dosja u krye me sukses.';
$messages['folderunsubscribed'] = 'Pajtimi te dosja u hoq me sukses.';
$messages['folderpurged'] = 'Dosja u zbraz me sukses.';
$messages['folderexpunged'] = 'Dosja u ngjesh me sukses.';
$messages['deletedsuccessfully'] = 'U fshi me sukses.';
$messages['converting'] = 'Po i hiqet formatimi…';
$messages['messageopenerror'] = 'S’u ngarkuan dot mesazhe që nga shërbyesi.';
$messages['filelinkerror'] = 'Dështoi bashkëngjitja e kartelës.';
$messages['fileuploaderror'] = 'Dështoi ngarkimi i kartelës.';
$messages['csvfilemismatch'] = 'Nuk mbulohet importimi njëherësh i shumë kartelave CSV me fusha të ndryshme.';
$messages['filesizeerror'] = 'Kartela e ngarkuar e tejkalon madhësinë maksimum prej $size.';
$messages['filecounterror'] = 'Mund të ngarkoni e shumta $count kartela njëherësh.';
$messages['msgsizeerror'] = 'Dështoi bashkëngjitja e një kartele. Tejkalohej madhësi maksimum e një mesazhi ($size).';
$messages['msgsizeerrorfwd'] = 'U tejkalua madhësia maksimum për mesazhet ($size). S’u bashkëngjit(ën) $num mesazh(e).';
$messages['copysuccess'] = 'U kopjuan me sukses $nr kontakte.';
$messages['movesuccess'] = 'U lëvizën me sukses $nr kontakte.';
$messages['copyerror'] = 'S’u kopjua dot ndonjë kontakt.';
$messages['moveerror'] = 'S’u lëviz dot ndonjë kontakt.';
$messages['sourceisreadonly'] = 'Ky burim adrese është vetëm i lexueshëm.';
$messages['errorsavingcontact'] = 'S’u ruajt dot adresa e kontaktit.';
$messages['movingmessage'] = 'Po lëvizet mesazhi(et)...';
$messages['copyingmessage'] = 'Po kopjohet mesazhi(et)…';
$messages['copyingcontact'] = 'Po kopjohet kontakti(et)…';
$messages['movingcontact'] = 'Po lëvizet kontakti(et)…';
$messages['deletingmessage'] = 'Po fshihet mesazhi(et)…';
$messages['markingmessage'] = 'Po i vihet shenjë mesazhit(et)…';
$messages['addingmember'] = 'Po shtohet kontakti(et) te grupi…';
$messages['removingmember'] = 'Po hiqet kontakti(et) nga grupi…';
$messages['receiptsent'] = 'U dërgua me sukses dëftesë leximi.';
$messages['errorsendingreceipt'] = 'S’u dërgua dot dëftesa.';
$messages['deleteidentityconfirm'] = 'Doni vërtet të fshihet ky identitet?';
$messages['nodeletelastidentity'] = 'Këtë identitet s’mund ta fshini, është i fundit i juaji.';
$messages['forbiddencharacter'] = 'Emri i dosjes përmban një shenjë të ndaluar.';
$messages['selectimportfile'] = 'Ju lutemi, përzgjidhni kartelë për ngarkim.';
$messages['addresswriterror'] = 'Libri i adresave i përzgjedhur s’është i shkrueshëm.';
$messages['contactaddedtogroup'] = 'Kontaktet u shtuan me sukses te ky grup.';
$messages['contactremovedfromgroup'] = 'Kontaktet u hoqën me sukses nga ky grup.';
$messages['nogroupassignmentschanged'] = 'S’pati ndryshime në përshoqërime grupi.';
$messages['importwait'] = 'Po importohet, ju lutemi, prisni…';
$messages['importformaterror'] = 'Importimi dështoi! Kartela e ngarkuar s’është kartelë e vlefshme të dhënash importimi.';
$messages['importconfirm'] = '<b>U importuan me sukses $inserted kontakte</b>';
$messages['importconfirmskipped'] = '<b>U anashkaluan $skipped zëra ekzistues</b>';
$messages['importmessagesuccess'] = 'U importuan me sukses $nr mesazhe';
$messages['importmessageerror'] = 'Importimi dështoi! Kartela e ngarkuar s’është kartelë e vlefshme mesazhi apo kutie postare';
$messages['opnotpermitted'] = 'Veprim i palejuar!';
$messages['nofromaddress'] = 'Në identitetin e përzgjedhur mungon adresë email.';
$messages['editorwarning'] = 'Këmbimi i llojit të përpunuesit mund të shkaktojë humbjen e formatimit të tekstit. Doni të vazhdohet?';
$messages['httpreceivedencrypterror'] = 'Ndodhi një gabim fatal formësimi. Lidhuni menjëherë me përgjegjësin tuaj. <b>Mesazhi juaj s’u dërgua dot.</b>';
$messages['smtpconnerror'] = 'Gabim SMTP ($code): Lidhja me shërbyesin dështoi.';
$messages['smtpautherror'] = 'Gabim SMTP ($code): Mirëfilltësimi dështoi.';
$messages['smtpfromerror'] = 'Gabim SMTP ($code): Dështoi rregullimi i dërguesit "$from" ($msg).';
$messages['smtptoerror'] = 'Gabim SMTP ($code): Dështoi shtimi i marrësit "$to" ($msg).';
$messages['smtprecipientserror'] = 'Gabim SMTP: S’arrihet të përtypet lista e marrësve.';
$messages['smtputf8error'] = 'Gabim SMTP: Shërbyesi nuk mbulon kodim Unikod në adresa email.';
$messages['smtpsizeerror'] = 'Gabim SMTP: Madhësia e mesazhit e tejkalon kufirin e shërbyesit ($limit)';
$messages['smtperror'] = 'Gabim SMTP: $msg';
$messages['emailformaterror'] = 'Adresë email e pavlefshme: $email';
$messages['toomanyrecipients'] = 'Shumë marrës. Zvogëloni numrin e marrësve deri në $max.';
$messages['maxgroupmembersreached'] = 'Numri i anëtarëve të grupit e tejkalon maksimumin prej $max.';
$messages['internalerror'] = 'Ndodhi një gabim i brendshëm. Ju lutemi, riprovoni.';
$messages['contactdelerror'] = 'S’u fshi dot kontakti(et).';
$messages['contactdeleted'] = 'Kontakti(et) u fshi me sukses.';
$messages['contactrestoreerror'] = 'S’u rikthye dot kontakti(et) i fshirë.';
$messages['contactrestored'] = 'Kontakti(et) u rikthye me sukses.';
$messages['groupdeleted'] = 'Grupi u fshi me sukses.';
$messages['grouprenamed'] = 'Grupi u riemërtua me sukses.';
$messages['groupcreated'] = 'Grupi u krijua me sukses.';
$messages['savedsearchdeleted'] = 'Kërkimi i ruajtur u fshi me sukses.';
$messages['savedsearchdeleteerror'] = 'S’u fshi dot kërkimi i ruajtur.';
$messages['savedsearchcreated'] = 'Kërkimi i ruajtur u krijua me sukses.';
$messages['savedsearchcreateerror'] = 'S’u krijua dot kërkimi i ruajtur.';
$messages['messagedeleted'] = 'Mesazhi(et) u fshi me sukses.';
$messages['messagemoved'] = 'Mesazhi(et) u lëviz me sukses.';
$messages['messagemovedtotrash'] = 'Mesazhi(et) u shpunë me sukses te Hedhurinat.';
$messages['messagecopied'] = 'Mesazhi(et) u kopjua me sukses.';
$messages['messagemarked'] = 'Mesazhi(et) iu vu shenjë me sukses.';
$messages['autocompletechars'] = 'Për vetëplotësim jepni të paktën $min shenjë.';
$messages['autocompletemore'] = 'U gjetën më tepër zëra me përputhje. Ju lutemi, shtypni më tepër shenja.';
$messages['namecannotbeempty'] = 'Emri s’mund të jetë i zbrazët.';
$messages['nametoolong'] = 'Emri është shumë i gjatë.';
$messages['namedotforbidden'] = 'Emri i dosjes s’mund të fillojë me një pikë.';
$messages['folderupdated'] = 'Dosja u përditësua me sukses.';
$messages['foldercreated'] = 'Dosja u krijua me sukses.';
$messages['invalidimageformat'] = 'Format i pavlefshëm figure.';
$messages['mispellingsfound'] = 'U pikasën gabime drejtshkrimi te mesazhi.';
$messages['parentnotwritable'] = 'S’arrihet të krijohet/lëvizet dosje te dosja mëmë e përzgjedhur. Pa të drejta hyrjeje.';
$messages['messagetoobig'] = 'Pjesa e mesazhit është shumë e madhe për ta përpunuar.';
$messages['attachmentvalidationerror'] = 'Kjo bashkëngjite është e dyshimtë, ngaqë nuk përputhet me llojin e deklaruar në mesazh. Nëse nuk e besoni dërguesin, s’duhet ta hapni në shfletues, ngaqë mund të përmbajë lëndë dashakeqe.<br/><br/><em>Pritej: $expected; u gjet: $detected</em>';
$messages['noscriptwarning'] = 'Kujdes: Ky shërbyes webmail lyp Javascript! Që të mund ta përdorni, ju lutemi, aktivizoni Javascript-in te rregullimet e shfletuesit tuaj.';
$messages['messageissent'] = 'Mesazhi qe dërguar tashmë, por s’qe ruajtur ende. Doni ta ruani tani?';
$messages['errnotfound'] = 'Kartelë Që S’gjendet';
$messages['errnotfoundexplain'] = 'Burimi i kërkuar nuk u gjet!';
$messages['errfailedrequest'] = 'Kërkesë e dështuar';
$messages['errauthorizationfailed'] = 'Mirëfilltësimi Dështoi';
$messages['errunauthorizedexplain'] = 'S’u verifikua dot se jeni i autorizuar të hyni në këtë shërbim!';
$messages['errrequestcheckfailed'] = 'Dështoi Kontrolli i Kërkesës';
$messages['errcsrfprotectionexplain'] = "Për hir të mbrojtjes tuaj, hyrja në këtë burim është e siguruar kundrejt CSRF-së.\nNëse e shihni këtë sinjalizim, ka gjasa që s’bëtë daljen para se të dilnit nga aplikacioni web.\n\nQë të vazhdohet, tani lypset ndërveprim nga qenie njerëzore.";
$messages['errcontactserveradmin'] = 'Ju lutemi, lidhuni me përgjegjësin e shërbyesit tuaj.';
$messages['clicktoresumesession'] = 'Klikoni këtu që të të rimerret sesioni juaj i mëparshëm';
$messages['errcomposesession'] = 'Gabim sesioni hartimi';
$messages['errcomposesessionexplain'] = 'S’u gjet sesioni i kërkuar i hartimit.';
$messages['clicktocompose'] = 'Klikoni këtu që të hartoni një mesazh të ri';
$messages['nosupporterror'] = 'Kjo veçori nuk mbulohet nga shfletuesi juaj.';
$messages['siginserted'] = 'Nënshkrimi u fut me sukses.';
$messages['responseinserted'] = 'Përgjigja u fut me sukses.';
$messages['noresponsesavailable'] = 'S’ka përgjigje';
$messages['listempty'] = 'Lista është e zbrazët.';
$messages['listusebutton'] = 'Përdorni butonin Krijoje që të shtoni një zë të ri.';
$messages['keypaircreatesuccess'] = 'Për $identity u krijua me sukses një dyshe e re kyçesh.';
$messages['emptyattachment'] = 'Kjo bashkëngjitje duket të jetë e zbrazët. <br>Ju lutemi, kontrolloni duke u lidhur me personin që e dërgoi.';
$messages['oauthloginfailed'] = 'Hyrja me OAuth dështoi. Ju lutemi, riprovoni.';
localization/en_US/timezones.inc000064400000047220151727150570012774 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels = [];
$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Africa';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantic';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europe';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athens';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussels';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Vienna';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warsaw';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/en_US/csv2vcard.inc000064400000007632151727150570012657 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+
*/

// This is a list of CSV column names specified in CSV file header
// These must be original texts used in Outlook/Thunderbird exported csv files
// Encoding UTF-8

$map = [];

// MS Outlook 2010
$map['anniversary'] = "Anniversary";
$map['assistants_name'] = "Assistant's Name";
$map['assistants_phone'] = "Assistant's Phone";
$map['birthday'] = "Birthday";
$map['business_city'] = "Business City";
$map['business_countryregion'] = "Business Country/Region";
$map['business_fax'] = "Business Fax";
$map['business_phone'] = "Business Phone";
$map['business_phone_2'] = "Business Phone 2";
$map['business_postal_code'] = "Business Postal Code";
$map['business_state'] = "Business State";
$map['business_street'] = "Business Street";
$map['car_phone'] = "Car Phone";
$map['categories'] = "Categories";
$map['company'] = "Company";
$map['department'] = "Department";
$map['email_address'] = "E-mail Address";
$map['email_2_address'] = "E-mail 2 Address";
$map['email_3_address'] = "E-mail 3 Address";
$map['first_name'] = "First Name";
$map['gender'] = "Gender";
$map['home_city'] = "Home City";
$map['home_countryregion'] = "Home Country/Region";
$map['home_fax'] = "Home Fax";
$map['home_phone'] = "Home Phone";
$map['home_phone_2'] = "Home Phone 2";
$map['home_postal_code'] = "Home Postal Code";
$map['home_state'] = "Home State";
$map['home_street'] = "Home Street";
$map['job_title'] = "Job Title";
$map['last_name'] = "Last Name";
$map['managers_name'] = "Manager's Name";
$map['middle_name'] = "Middle Name";
$map['mobile_phone'] = "Mobile Phone";
$map['notes'] = "Notes";
$map['other_city'] = "Other City";
$map['other_countryregion'] = "Other Country/Region";
$map['other_fax'] = "Other Fax";
$map['other_phone'] = "Other Phone";
$map['other_postal_code'] = "Other Postal Code";
$map['other_state'] = "Other State";
$map['other_street'] = "Other Street";
$map['pager'] = "Pager";
$map['primary_phone'] = "Primary Phone";
$map['spouse'] = "Spouse";
$map['suffix'] = "Suffix";
$map['title'] = "Title";
$map['web_page'] = "Web Page";

// Thunderbird
$map['birth_day'] = "Birth Day";
$map['birth_month'] = "Birth Month";
$map['birth_year'] = "Birth Year";
$map['display_name'] = "Display Name";
$map['fax_number'] = "Fax Number";
$map['home_address'] = "Home Address";
$map['home_country'] = "Home Country";
$map['home_zipcode'] = "Home ZipCode";
$map['mobile_number'] = "Mobile Number";
$map['nickname'] = "Nickname";
$map['organization'] = "Organization";
$map['pager_number'] = "Pager Number";
$map['primary_email'] = "Primary Email";
$map['secondary_email'] = "Secondary Email";
$map['web_page_1'] = "Web Page 1";
$map['web_page_2'] = "Web Page 2";
$map['work_phone'] = "Work Phone";
$map['work_address'] = "Work Address";
$map['work_country'] = "Work Country";
$map['work_zipcode'] = "Work ZipCode";

// Atmail
$map['date_of_birth'] = "Date of Birth";
$map['email'] = "Email";
$map['home_mobile'] = "Home Mobile";
$map['home_zip'] = "Home Zip";
$map['info'] = "Info";
$map['user_photo'] = "User Photo";
$map['url'] = "URL";
$map['work_city'] = "Work City";
$map['work_company'] = "Work Company";
$map['work_dept'] = "Work Dept";
$map['work_fax'] = "Work Fax";
$map['work_mobile'] = "Work Mobile";
$map['work_state'] = "Work State";
$map['work_title'] = "Work Title";
$map['work_zip'] = "Work Zip";
localization/en_US/labels.inc000064400000077167151727150570012236 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/

$labels = [];

// login page
$labels['welcome'] = 'Welcome to $product';
$labels['username'] = 'Username';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
$labels['oauthlogin'] = 'Login with $provider';

// taskbar
$labels['menu'] = 'Menu';
$labels['logout'] = 'Logout';
$labels['mail'] = 'Mail';
$labels['settings'] = 'Settings';
$labels['addressbook'] = 'Address Book';
$labels['darkmode'] = 'Dark mode';
$labels['lightmode'] = 'Light mode';

// mailbox names
$labels['inbox'] = 'Inbox';
$labels['drafts'] = 'Drafts';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Trash';
$labels['junk'] = 'Junk';
$labels['show_real_foldernames'] = 'Show real names for special folders';

// message listing
$labels['subject'] = 'Subject';
$labels['from'] = 'From';
$labels['sender'] = 'Sender';
$labels['to'] = 'To';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Date';
$labels['size'] = 'Size';
$labels['priority'] = 'Priority';
$labels['organization'] = 'Organization';
$labels['readstatus'] = 'Read status';
$labels['listoptions'] = 'List options...';
$labels['listoptionstitle'] = 'List options';

$labels['mailboxlist'] = 'Folders';
$labels['messagesfromto'] = 'Messages $from to $to of $count';
$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Message $nr of $count';
$labels['fromtoshort'] = '$from – $to of $count';

$labels['copy'] = 'Copy';
$labels['move'] = 'Move';
$labels['moveto'] = 'Move to...';
$labels['copyto'] = 'Copy to...';
$labels['download'] = 'Download';
$labels['open'] = 'Open';
$labels['showattachment'] = 'Show';
$labels['showanyway'] = 'Show it anyway';

$labels['filename'] = 'File name';
$labels['filesize'] = 'File size';

$labels['addtoaddressbook'] = 'Add to address book';

// weekdays short
$labels['sun'] = 'Sun';
$labels['mon'] = 'Mon';
$labels['tue'] = 'Tue';
$labels['wed'] = 'Wed';
$labels['thu'] = 'Thu';
$labels['fri'] = 'Fri';
$labels['sat'] = 'Sat';

// weekdays long
$labels['sunday'] = 'Sunday';
$labels['monday'] = 'Monday';
$labels['tuesday'] = 'Tuesday';
$labels['wednesday'] = 'Wednesday';
$labels['thursday'] = 'Thursday';
$labels['friday'] = 'Friday';
$labels['saturday'] = 'Saturday';

// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'May';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';

// months long
$labels['longjan'] = 'January';
$labels['longfeb'] = 'February';
$labels['longmar'] = 'March';
$labels['longapr'] = 'April';
$labels['longmay'] = 'May';
$labels['longjun'] = 'June';
$labels['longjul'] = 'July';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'October';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';

$labels['today'] = 'Today';

// toolbar buttons
$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Check for new messages';
$labels['compose'] = 'Compose';
$labels['writenewmessage'] = 'Create a new message';
$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Reply to sender';
$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
$labels['replyall'] = 'Reply all';
$labels['replylist'] = 'Reply list';
$labels['forward'] = 'Forward';
$labels['forwardinline'] = 'Forward inline';
$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Forward the message';
$labels['bouncemsg'] = 'Resend (bounce)';
$labels['bounce'] = 'Resend';
$labels['deletemessage'] = 'Delete message';
$labels['movemessagetotrash'] = 'Move message to trash';
$labels['printmessage'] = 'Print this message';
$labels['previousmessage'] = 'Show previous message';
$labels['firstmessage'] = 'Show first message';
$labels['nextmessage'] = 'Show next message';
$labels['lastmessage'] = 'Show last message';
$labels['backtolist'] = 'Back to message list';
$labels['viewsource'] = 'Show source';
$labels['mark'] = 'Mark';
$labels['markmessages'] = 'Mark messages';
$labels['markread'] = 'As read';
$labels['markunread'] = 'As unread';
$labels['markflagged'] = 'As flagged';
$labels['markunflagged'] = 'As unflagged';
$labels['markundeleted'] = 'As not deleted';
$labels['moreactions'] = 'More actions...';
$labels['markallread'] = 'Mark all as read';
$labels['folders-cur'] = 'Selected folder only';
$labels['folders-sub'] = 'Selected folder and its subfolders';
$labels['folders-all'] = 'All folders';
$labels['more'] = 'More';
$labels['back'] = 'Back';
$labels['options'] = 'Options';
$labels['composeoptions'] = 'Compose options';
$labels['optionsandattachments'] = 'Options and attachments';
$labels['actions'] = 'Actions';

$labels['first'] = 'First';
$labels['last'] = 'Last';
$labels['previous'] = 'Previous';
$labels['next'] = 'Next';
$labels['select'] = 'Select';
$labels['selection'] = 'Selection';
$labels['all'] = 'All';
$labels['none'] = 'None';
$labels['currpage'] = 'Current page';
$labels['isread'] = 'Read';
$labels['unread'] = 'Unread';
$labels['flagged'] = 'Flagged';
$labels['unflagged'] = 'Not Flagged';
$labels['unanswered'] = 'Unanswered';
$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Deleted';
$labels['undeleted'] = 'Not deleted';
$labels['replied'] = 'Replied';
$labels['forwarded'] = 'Forwarded';
$labels['invert'] = 'Invert';
$labels['filter'] = 'Filter';
$labels['list'] = 'List';
$labels['threads'] = 'Threads';
$labels['expand-all'] = 'Expand All';
$labels['expand-unread'] = 'Expand Unread';
$labels['collapse-all'] = 'Collapse All';
$labels['threaded'] = 'Threaded';
$labels['showunread'] = 'Show unread messages';

$labels['autoexpand_threads'] = 'Expand message threads';
$labels['do_expand'] = 'all threads';
$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'From/To';
$labels['flag'] = 'Flag';
$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'None';
$labels['sentdate'] = 'Sent date';
$labels['arrival'] = 'Arrival date';
$labels['asc'] = 'ascending';
$labels['desc'] = 'descending';
$labels['listcolumns'] = 'List columns';
$labels['listsorting'] = 'Sorting column';
$labels['listorder'] = 'Sorting order';
$labels['listmode'] = 'List view mode';
$labels['lmode'] = 'List mode';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Widescreen';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'List';
$labels['layoutwidescreendesc'] = 'Widescreen (3-column view)';
$labels['layoutdesktopdesc'] = 'Desktop (wide list and mail preview below)';
$labels['layoutlistdesc'] = 'List (no mail preview)';

$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Compact';
$labels['empty'] = 'Empty';
$labels['importmessages'] = 'Import messages';
$labels['mailimportdesc'] = 'You can upload mail using files in <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> or <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> format.';
$labels['mailimportzip'] = 'Multiple files can be compressed into zip archives.';

$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'unknown';
$labels['unlimited'] = 'unlimited';
$labels['quotatype'] = 'Quota type';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Used';
$labels['quotastorage'] = 'Disk space';
$labels['quotamessage'] = 'Messages count';
$labels['shortheaderdate'] = 'On $date';
$labels['shortheaderto'] = 'To $to on $date';
$labels['shortheaderfrom'] = 'From $from on $date';

$labels['quicksearch'] = 'Quick search';
$labels['searchplaceholder'] = 'Search...';
$labels['resetsearch'] = 'Reset search';
$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Entire message';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Name';
$labels['searchscope'] = 'Scope';
$labels['currentfolder'] = 'Current folder';
$labels['subfolders'] = 'This and subfolders';
$labels['allfolders'] = 'All folders';
$labels['searchinterval-1W'] = 'older than a week';
$labels['searchinterval-1M'] = 'older than a month';
$labels['searchinterval-1Y'] = 'older than a year';
$labels['searchinterval1W'] = 'younger than a week';
$labels['searchinterval1M'] = 'younger than a month';
$labels['searchinterval1Y'] = 'younger than a year';

$labels['openinextwin'] = 'Open in new window';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Display in plain text format';
$labels['changeformathtml'] = 'Display in HTML format';

// message compose
$labels['editasnew'] = 'Edit as new';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send message';
$labels['savemessage'] = 'Save as draft';
$labels['addattachment'] = 'Attach a file';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Delivery status notification';
$labels['keepformatting'] = 'Keep formatting';
$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'Original Message';
$labels['selectimage'] = 'Select image';
$labels['addimage'] = 'Add image';
$labels['selectmedia'] = 'Select movie';
$labels['addmedia'] = 'Add movie';
$labels['encrypt'] = 'Encrypt';
$labels['encryptmessage'] = 'Encrypt message';
$labels['encryptmessagemailvelope'] = 'Encrypt message with Mailvelope';
$labels['importpubkeys'] = 'Import public keys';
$labels['encryptedsendialog'] = 'Sending encrypted message';
$labels['encryptandsign'] = 'Encrypt and sign';
$labels['keyid'] = 'Key ID';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expired';
$labels['keyrevoked'] = 'Revoked';
$labels['bccinstead'] = 'Use Bcc';
$labels['addheader'] = 'Add recipient (header)';
$labels['insert'] = 'Insert';
$labels['insertcontact'] = 'Insert contact(s)';
$labels['recipient'] = 'Recipient';
$labels['recipientedit'] = 'Recipient edit';

$labels['editidents'] = 'Edit identities';
$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';

$labels['restore'] = 'Restore';
$labels['restoremessage'] = 'Restore message?';
$labels['ignore'] = 'Ignore';

$labels['responses'] = 'Responses';
$labels['insertresponse'] = 'Insert a response';
$labels['manageresponses'] = 'Manage responses';
$labels['newresponse'] = 'Create new response';
$labels['addresponse'] = 'Add response';
$labels['editresponse'] = 'Edit response';
$labels['editresponses'] = 'Edit responses';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Response Text';

$labels['attach'] = 'Attach';
$labels['attachments'] = 'Attachments';
$labels['upload'] = 'Upload';
$labels['uploadprogress'] = '$percent ($current of $total)';
$labels['close'] = 'Close';
$labels['messageoptions'] = 'Message options...';
$labels['togglecomposeoptions'] = 'Toggle composition options';
$labels['attachmentrename'] = 'Rename attachment';

$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
$labels['normal'] = 'Normal';
$labels['high'] = 'High';
$labels['highest'] = 'Highest';

$labels['nosubject'] = '(no subject)';
$labels['showimages'] = 'Display images';
$labels['allow'] = 'Allow';
$labels['alwaysshow'] = 'Always show images from $sender';
$labels['alwaysallow'] = 'Always allow from $sender';
$labels['isdraft'] = 'This is a draft message.';
$labels['andnmore'] = '$nr more...';
$labels['details'] = 'Details';
$labels['summary'] = 'Summary';
$labels['headers'] = 'Headers';
$labels['allheaders'] = 'All headers...';
$labels['togglemoreheaders'] = 'Show more message headers';
$labels['togglefullheaders'] = 'Toggle raw message headers';

$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plain text';
$labels['savesentmessagein'] = 'Save sent message in';
$labels['dontsave'] = 'don\'t save';
$labels['maxuploadsize'] = 'Maximum allowed file size is $size';

$labels['addcc'] = 'Add Cc';
$labels['addbcc'] = 'Add Bcc';
$labels['addreplyto'] = 'Add Reply-To';
$labels['addfollowupto'] = 'Add Followup-To';

// mdn
$labels['sendreceipt'] = 'Send read receipt?';
$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
$labels['receiptread'] = 'Return Receipt (read)';
$labels['yourmessage'] = 'This is a Return Receipt for your message';
$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
$labels['sendalwaysto'] = 'Always send to $email';

$labels['zoomin'] = 'Zoom In';
$labels['zoomout'] = 'Zoom Out';
$labels['rotate'] = 'Rotate';
$labels['increaseimage'] = 'Increase image size';
$labels['decreaseimage'] = 'Decrease image size';
$labels['rotateimage'] = 'Rotate image';
$labels['showtools'] = 'Show image tools';
$labels['hidetools'] = 'Hide image tools';

// address book
$labels['name'] = 'Display Name';
$labels['firstname'] = 'First Name';
$labels['surname'] = 'Last Name';
$labels['middlename'] = 'Middle Name';
$labels['nameprefix'] = 'Prefix';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Nickname';
$labels['jobtitle'] = 'Job Title';
$labels['department'] = 'Department';
$labels['gender'] = 'Gender';
$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'Email';
$labels['phone'] = 'Phone';
$labels['address'] = 'Address';
$labels['street'] = 'Street';
$labels['locality'] = 'City';
$labels['zipcode'] = 'ZIP Code';
$labels['region'] = 'State/Province';
$labels['country'] = 'Country';
$labels['birthday'] = 'Birthday';
$labels['anniversary'] = 'Anniversary';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notes';
$labels['male'] = 'male';
$labels['female'] = 'female';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'All fields';
$labels['search'] = 'Search';
$labels['searchresult'] = 'Search result';
$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'Advanced';
$labels['other'] = 'Other';
$labels['printcontact'] = 'Print contact';
$labels['qrcode'] = 'QR Code';

$labels['typehome'] = 'Home';
$labels['typework'] = 'Work';
$labels['typeother'] = 'Other';
$labels['typemobile'] = 'Mobile';
$labels['typemain'] = 'Main';
$labels['typehomefax'] = 'Home Fax';
$labels['typeworkfax'] = 'Work Fax';
$labels['typecar'] = 'Car';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistant';
$labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';

$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Add contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
$labels['contactnameandorg'] = 'Name and Organization';
$labels['personalinfo'] = 'Personal information';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Contact photo';

$labels['edit'] = 'Edit';
$labels['cancel'] = 'Cancel';
$labels['save'] = 'Save';
$labels['delete'] = 'Delete';
$labels['discard'] = 'Discard';
$labels['continue'] = 'Continue';
$labels['ok'] = 'OK';
$labels['rename'] = 'Rename';
$labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
$labels['choosefile'] = 'Choose file...';
$labels['choosefiles'] = 'Choose files...';
$labels['browse'] = 'Browse';

$labels['newcontact'] = 'Create new contact';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
$labels['print'] = 'Print';
$labels['export'] = 'Export';
$labels['exportall'] = 'Export all';
$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
$labels['newgroup'] = 'Create new group';
$labels['addgroup'] = 'Add group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupassign'] = 'Assign to group...';
$labels['groupremove'] = 'Remove from group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
$labels['uponelevel'] = 'Up one level';

$labels['previouspage'] = 'Show previous page';
$labels['firstpage'] = 'Show first page';
$labels['nextpage'] = 'Show next page';
$labels['lastpage'] = 'Show last page';

$labels['group'] = 'Group';
$labels['groups'] = 'Groups';
$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Personal Addresses';

$labels['searchsave'] = 'Save search';
$labels['searchdelete'] = 'Delete search';

$labels['import'] = 'Import';
$labels['importcontacts'] = 'Import contacts';
$labels['importfromfile'] = 'Import from file';
$labels['importtarget'] = 'Add contacts to';
$labels['importreplace'] = 'Replace the entire address book';
$labels['importgroups'] = 'Import group assignments';
$labels['importgroupsall'] = 'All (create groups if necessary)';
$labels['importgroupsexisting'] = 'Only for existing groups';
$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['importmapdesc'] = 'Confirm the field mapping information below is correct before proceeding with CSV (comma-separated) data import.';
$labels['fieldnotmapped'] = 'Field not mapped (do not import)';
$labels['skipheader'] = 'Do not import first line (headers)';
$labels['done'] = 'Done';

// settings
$labels['settingsfor'] = 'Settings for';
$labels['about'] = 'About';
$labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';

$labels['identities'] = 'Identities';
$labels['manageidentities'] = 'Manage identities';
$labels['newidentity'] = 'Create new identity';
$labels['addidentity'] = 'Add identity';
$labels['editidentity'] = 'Edit identity';
$labels['identityencryption'] = 'Encryption';

$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML Message';
$labels['messagepart'] = 'Part';
$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Date format';
$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Pretty dates';
$labels['setdefault'] = 'Set default';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Language';
$labels['timezone'] = 'Time zone';
$labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Daylight saving time';
$labels['showinextwin'] = 'Open message in a new window';
$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Compose HTML messages';
$labels['htmlonreply'] = 'on reply to HTML message';
$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML signature';
$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Show preview pane';
$labels['skin'] = 'Interface skin';
$labels['logoutclear'] = 'Clear Trash on logout';
$labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'User Interface';
$labels['serversettings'] = 'Server Settings';
$labels['mailboxview'] = 'Mailbox View';
$labels['mdnrequests'] = 'On request for return receipt';
$labels['askuser'] = 'ask me';
$labels['autosend'] = 'send receipt';
$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['autosendtrusted'] = 'send receipt to trusted senders, otherwise ask me';
$labels['autosendtrustedignore'] = 'send receipt to trusted senders, otherwise ignore';
$labels['ignorerequest'] = 'ignore request';
$labels['readwhendeleted'] = 'Mark the message as read on delete';
$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
$labels['skipdeleted'] = 'Do not show deleted messages';
$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Display remote inline images';
$labels['allowremoteresources'] = 'Allow remote resources (images, styles)';
$labels['fromknownsenders'] = 'from known senders';
$labels['fromtrustedsenders'] = 'from trusted senders';
$labels['frommycontacts'] = 'from my contacts';
$labels['always'] = 'always';
$labels['alwaysbutplain'] = 'always, except when replying to plain text';
$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Automatically save draft';
$labels['everynminutes'] = 'every $n minute(s)';
$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'never';
$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'Displaying Messages';
$labels['messagescomposition'] = 'Composing Messages';
$labels['mimeparamfolding'] = 'Attachment names';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['savelocalstorage'] = "Save in the browser's local storage (temporarily)";
$labels['advancedoptions'] = 'Advanced options';
$labels['toggleadvancedoptions'] = 'Toggle advanced options';
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
$labels['displaynext'] = 'Display next list entry after delete/move';
$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Main Options';
$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'New Message';
$labels['signatureoptions'] = 'Signature Options';
$labels['whenreplying'] = 'When replying';
$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'start new message above the quote';
$labels['replytoppostingnoindent'] = 'start new message above the quote (no indentation)';
$labels['replybottomposting'] = 'start new message below the quote';
$labels['replyremovesignature'] = 'When replying remove original signature from message';
$labels['autoaddsignature'] = 'Automatically add signature';
$labels['newmessageonly'] = 'new message only';
$labels['replyandforwardonly'] = 'replies and forwards only';
$labels['insertsignature'] = 'Insert signature';
$labels['sigbelow'] = 'Place signature below the quoted message';
$labels['sigseparator'] = 'Force standard separator in signatures';
$labels['automarkread'] = 'Mark messages as read';
$labels['afternseconds'] = 'after $n seconds';
$labels['reqmdn'] = 'Always request a return receipt';
$labels['reqdsn'] = 'Always request a delivery status notification';
$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
$labels['listnamedisplay'] = 'List contacts as';
$labels['contactformmode'] = 'Contact form mode';
$labels['privatemode'] = 'Private (Home)';
$labels['businessmode'] = 'Business (Work)';
$labels['collectedaddresses'] = 'Collected addresses';
$labels['collectedrecipients'] = 'Collected Recipients';
$labels['collectedrecipientsopt'] = 'Store outgoing email recipients in';
$labels['collectedsendersopt'] = 'Store trusted senders in';
$labels['trustedsenders'] = 'Trusted Senders';
$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
$labels['spellcheckoptions'] = 'Spellcheck Options';
$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
$labels['spellcheckignorenums'] = 'Ignore words with numbers';
$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'Add to dictionary';
$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Messages forwarding';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'as attachment';
$labels['replyallmode'] = 'Default action of [Reply all] button';
$labels['replyalldefault'] = 'reply to all';
$labels['replyalllist'] = 'reply to mailing list only (if found)';
$labels['allmessages'] = 'all messages';
$labels['olderxdays'] = 'older than $x days';

$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
$labels['foldername'] = 'Folder name';
$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Create';
$labels['createfolder'] = 'Create new folder';
$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Properties';
$labels['folderproperties'] = 'Folder properties';
$labels['parentfolder'] = 'Parent folder';
$labels['location'] = 'Location';
$labels['info'] = 'Information';
$labels['getfoldersize'] = 'Click to get folder size';
$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Folder Type';
$labels['personalfolder'] = 'Private Folder';
$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'Public Folder';
$labels['findfolders'] = 'Find folders';
$labels['findcontacts'] = 'Find contacts';
$labels['findmail'] = 'Find mail messages';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Other users';
$labels['namespace.shared'] = 'Shared';
$labels['dualuselabel'] = 'Can contain only';
$labels['dualusemail'] = 'messages';
$labels['dualusefolder'] = 'folders';

$labels['generate'] = 'Generate';
$labels['encryptioncreatekey'] = 'Create a new key pair';
$labels['openmailvelopesettings'] = 'Open Mailvelope Settings';
$labels['encryptionprivkeysinmailvelope'] = 'You have $nr matching private keys stored in your Mailvelope keyring:';
$labels['encryptionnoprivkeysinmailvelope'] = 'This sender identity doesn\'t yet have a PGP private key stored in your Mailvelope extension. Would you like to create one in order to enable encrypted messaging?';
$labels['encryption'] = 'Encryption';
$labels['mailvelopeoptions'] = 'Mailvelope options';
$labels['mailvelopemainkeyring'] = 'Use Mailvelope main keyring';
$labels['mailvelopenotfound'] = 'Mailvelope extension is not enabled/installed in your browser.';

$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
$labels['undo'] = 'Undo';

$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Source';
$labels['destination'] = 'Destination';
$labels['license'] = 'License';
$labels['support'] = 'Get support';
$labels['savedsearches'] = 'Saved searches';

$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';

// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';

// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'English';
$labels['westerneuropean'] = 'Western European';
$labels['easterneuropean'] = 'Eastern European';
$labels['southeasterneuropean'] = 'South-Eastern European';
$labels['baltic'] = 'Baltic';
$labels['cyrillic'] = 'Cyrillic';
$labels['arabic'] = 'Arabic';
$labels['greek'] = 'Greek';
$labels['hebrew'] = 'Hebrew';
$labels['turkish'] = 'Turkish';
$labels['nordic'] = 'Nordic';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Celtic';
$labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';

// accessibility (voice-only) headings and descriptions
$labels['arialabeltopnav'] = 'Window control';
$labels['arialabeltasknav'] = 'Application tasks';
$labels['arialabeltoolbar'] = 'Application toolbar';
$labels['arialabellistnav'] = 'List navigation';
$labels['arialabelactivetask'] = 'Active task';
$labels['arialabelmessagessearchfilter'] = 'Email listing filter';
$labels['arialabelmailsearchform'] = 'Email message search form';
$labels['arialabelcontactsearchform'] = 'Contacts search form';
$labels['arialabelmailquicksearchbox'] = 'Email search input';
$labels['arialabelquicksearchbox'] = 'Search input';
$labels['arialabelfoldersearchfilter'] = 'Folder listing filter';
$labels['arialabelfoldersearchform'] = 'Folder search form';
$labels['arialabelfolderlist'] = 'Email folder selection';
$labels['arialabelmessagelist'] = 'Email Messages Listing';
$labels['arialabelmailpreviewframe'] = 'Message preview';
$labels['arialabelmailboxmenu'] = 'Folder actions menu';
$labels['arialabellistselectmenu'] = 'List selection menu';
$labels['arialabelthreadselectmenu'] = 'Threads listing menu';
$labels['arialabelmessagelistoptions'] = 'Message list display and sorting options';
$labels['arialabelmailimportdialog'] = 'Message import dialog';
$labels['arialabelmessagenav'] = 'Message navigation';
$labels['arialabelmessagebody'] = 'Message Body';
$labels['arialabelmessageactions'] = 'Message actions';
$labels['arialabelcontactquicksearch'] = 'Contacts search form';
$labels['arialabelcontactsearchbox'] = 'Contact search input';
$labels['arialabelmessageheaders'] = 'Message headers';
$labels['arialabelforwardingoptions'] = 'Forwarding options';
$labels['arialabelreplyalloptions'] = 'Reply-all options';
$labels['arialabelmoremessageactions'] = 'More message actions';
$labels['arialabelmorecontactactions'] = 'More contact actions';
$labels['arialabelmarkmessagesas'] = 'Mark selected messages as...';
$labels['arialabelcomposeoptions'] = 'Composition options';
$labels['arialabelresponsesmenu'] = 'Canned responses menu';
$labels['arialabelattachmentuploadform'] = 'Attachment upload form';
$labels['arialabelattachmentmenu'] = 'Attachment options';
$labels['arialabelmailtomenu'] = 'Email address options';
$labels['arialabelattachmentpreview'] = 'Attachment preview';
$labels['ariasummarycomposecontacts'] = 'List of contacts and groups to select as recipients';
$labels['arialabelcontactexportoptions'] = 'Contact export options';
$labels['arialabelabookgroupoptions'] = 'Addressbook/group options';
$labels['arialabelpreferencesform'] = 'Preferences form';
$labels['arialabelidentityeditfrom'] = 'Identity edit form';
$labels['arialabelresponseeditfrom'] = 'Response edit form';
$labels['arialabelsearchterms'] = 'Search terms';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop action menu';
$labels['arialabelheadersmenu'] = 'Recipient (header) adding menu';
$labels['arialabelimagetools'] = 'Image tools';

$labels['helplistnavigation'] = 'List keyboard navigation';
$labels['helplistkeyboardnavigation'] = "Arrows up/down: Move row focus/selection.
Space: Select focused row.
Shift + up/down: Select additional row above/below.
Ctrl + Space: Add focused row to selection/remove from selection.";
$labels['helplistkeyboardnavmessages'] = "Arrows right/left: expand/collapse message thread (in threads mode only).
Enter: Open the selected/focused message.
Delete: Move selected messages to Trash.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Open the selected/focused contact.";
localization/en_US/messages.inc000064400000041340151727150570012563 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages = [];
$messages['errortitle']  = 'An error occurred!';
$messages['loginfailed']  = 'Login failed.';
$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
$messages['sessionerror'] = 'Your session is invalid or expired.';
$messages['cookiesmismatch'] = 'Cookie mismatch detected. Please, clear your browser\'s cookies.';
$messages['storageerror'] = 'Connection to storage server failed.';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
$messages['accountlocked'] = 'Too many failed login attempts. Try again later.';
$messages['connerror'] = 'Connection Error (Failed to reach the server)!';
$messages['dberror'] = 'Database Error!';
$messages['dbconnerror'] = 'Unable to connect to the database!';
$messages['windowopenerror'] = 'The popup window was blocked!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'No messages found in this mailbox.';
$messages['loggedout'] = 'You have successfully terminated the session. Goodbye!';
$messages['mailboxempty'] = 'Mailbox is empty';
$messages['nomessages'] = 'No messages';
$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Loading...';
$messages['uploading'] = 'Uploading file...';
$messages['attaching'] = 'Attaching file...';
$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Loading data...';
$messages['checkingmail'] = 'Checking for new messages...';
$messages['sendingmessage'] = 'Sending message...';
$messages['messagesent'] = 'Message sent successfully.';
$messages['savingmessage'] = 'Saving message...';
$messages['messagesaved'] = 'Message saved to Drafts.';
$messages['successfullysaved'] = 'Successfully saved.';
$messages['savingresponse'] = 'Saving response text...';
$messages['deleteresponseconfirm'] = 'Do you really want to delete this response text?';
$messages['nocontactselected'] = 'You have not selected a contact yet.';
$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
$messages['contactexists'] = 'A contact with the same email address already exists.';
$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
$messages['blockedresources'] = 'To protect your privacy remote resources have been blocked.';
$messages['suspiciousemail'] = 'This message contains suspicious email addresses that may be fraudulent.';
$messages['bccemail'] = 'The forwarded message(s) contain confidential recipients (Bcc).';
$messages['bouncehint'] = 'The message will be sent without any modifications, i.e. using the original body, headers and recipients.';
$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
$messages['externalmessagedecryption'] = 'This is an encrypted message and can be decrypted with your browser extension.';
$messages['nopubkeyfor'] = 'No valid public key found for $email';
$messages['nopubkeyforsender'] = 'No valid public key found for your sender identity. Do you want to encrypt the message for the recipients only?';
$messages['encryptnoattachments'] = 'Already uploaded attachments cannot be encrypted. Please re-add them in the encryption editor.';
$messages['searchpubkeyservers'] = 'Do you want to search public key servers for the missing keys?';
$messages['encryptpubkeysfound'] = 'The following public keys have been found:';
$messages['keyservererror'] = 'Failed to get key from keyserver.';
$messages['keyimportsuccess'] = 'Public key $key successfully imported into your keyring.';
$messages['nocontactsfound'] = 'No contacts found.';
$messages['contactnotfound'] = 'The requested contact was not found.';
$messages['contactsearchonly'] = 'You have to use a search form to see contacts from the selected addressbook.';
$messages['sendingfailed'] = 'Failed to send message.';
$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
$messages['errorsavingsent'] = 'An error occurred while saving sent message.';
$messages['errorsaving'] = 'An error occurred while saving.';
$messages['errormoving'] = 'Could not move the message(s).';
$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Could not delete the message(s).';
$messages['errormarking'] = 'Could not mark the message(s).';
$messages['alerttitle'] = 'Attention';
$messages['confirmationtitle'] = 'Are you sure...';
$messages['deletecontactconfirm']  = 'Do you really want to delete selected contact(s)?';
$messages['deletegroupconfirm']  = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
$messages['deletefolderconfirm']  = 'Do you really want to delete this folder?';
$messages['movefolderconfirm']  = 'Do you really want to move this folder?';
$messages['purgefolderconfirm']  = 'Do you really want to delete all messages in this folder?';
$messages['contactdeleting'] = 'Deleting contact(s)...';
$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'Deleting folder...';
$messages['foldermoving'] = 'Moving folder...';
$messages['foldersubscribing'] = 'Subscribing folder...';
$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'The form was not completely filled out.';
$messages['noemailwarning'] = 'Please enter a valid email address.';
$messages['nonamewarning']  = 'Please enter a name.';
$messages['nopagesizewarning'] = 'Please enter a page size.';
$messages['nosenderwarning'] = 'Please enter sender email address.';
$messages['recipientsadded'] = 'Recipient(s) added successfully.';
$messages['norecipientwarning'] = 'Please enter at least one recipient.';
$messages['disclosedrecipwarning'] = 'All recipients will see each others e-mail addresses. To prevent this and protect their privacy you can use the Bcc field.';
$messages['disclosedreciptitle'] = 'Too many public recipients';
$messages['nosubjectwarning']  = 'The "Subject" field is empty. Would you like to enter one now?';
$messages['nosubjecttitle']  = 'No subject';
$messages['nobodywarning'] = 'Send this message without text?';
$messages['notsentwarning'] = 'The message has not been sent and has unsaved changes. Do you want to discard your changes?';
$messages['restoresavedcomposedata'] = 'A previously composed but unsent message was found.\n\nSubject: $subject\nSaved: $date\n\nDo you want to restore this message?';
$messages['nosearchname'] = 'Please enter a contact name or email address.';
$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr messages found.';
$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Search returned no matches.';
$messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
$messages['stillsearching'] = 'Still searching...';
$messages['nospellerrors'] = 'No spelling errors found.';
$messages['folderdeleted'] = 'Folder successfully deleted.';
$messages['foldersubscribed'] = 'Folder successfully subscribed.';
$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
$messages['folderpurged'] = 'Folder successfully emptied.';
$messages['folderexpunged'] = 'Folder successfully compacted.';
$messages['deletedsuccessfully'] = 'Successfully deleted.';
$messages['converting'] = 'Removing formatting...';
$messages['messageopenerror'] = 'Could not load message from server.';
$messages['filelinkerror'] = 'Attaching the file failed.';
$messages['fileuploaderror'] = 'File upload failed.';
$messages['csvfilemismatch'] = 'Import of multiple CSV files with different fields is not supported.';
$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
$messages['filecounterror'] = 'You can upload maximum $count files at once.';
$messages['msgsizeerror'] = 'Failed to attach a file. Maximum size of a message ($size) exceeded.';
$messages['msgsizeerrorfwd'] = 'Maximum size of a message ($size) exceeded. $num message(s) have not been attached.';
$messages['copysuccess'] = 'Successfully copied $nr contacts.';
$messages['movesuccess'] = 'Successfully moved $nr contacts.';
$messages['copyerror'] = 'Could not copy any contacts.';
$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'This address source is read only.';
$messages['errorsavingcontact'] = 'Could not save the contact address.';
$messages['movingmessage'] = 'Moving message(s)...';
$messages['copyingmessage'] = 'Copying message(s)...';
$messages['copyingcontact'] = 'Copying contact(s)...';
$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Deleting message(s)...';
$messages['markingmessage'] = 'Marking message(s)...';
$messages['addingmember'] = 'Adding contact(s) to the group...';
$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Successfully sent a read receipt.';
$messages['errorsendingreceipt'] = 'Could not send the receipt.';
$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
$messages['selectimportfile'] = 'Please select a file to upload.';
$messages['addresswriterror'] = 'The selected address book is not writeable.';
$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Importing, please wait...';
$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['nofromaddress'] = 'Missing email address in selected identity.';
$messages['editorwarning'] = 'Switching editor type may cause text formatting to be lost. Do you wish to continue?';
$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
$messages['smtputf8error'] = 'SMTP Error: Server does not support Unicode in email address.';
$messages['smtpsizeerror'] = 'SMTP Error: Message size exceeds server limit ($limit)';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Invalid email address: $email';
$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
$messages['internalerror'] = 'An internal error occurred. Please try again.';
$messages['contactdelerror'] = 'Could not delete contact(s).';
$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
$messages['contactrestored'] = 'Contact(s) restored successfully.';
$messages['groupdeleted'] = 'Group deleted successfully.';
$messages['grouprenamed'] = 'Group renamed successfully.';
$messages['groupcreated'] = 'Group created successfully.';
$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
$messages['savedsearchcreated'] = 'Saved search created successfully.';
$messages['savedsearchcreateerror'] = 'Could not create saved search.';
$messages['messagedeleted'] = 'Message(s) deleted successfully.';
$messages['messagemoved'] = 'Message(s) moved successfully.';
$messages['messagemovedtotrash'] = 'Message(s) moved to Trash successfully.';
$messages['messagecopied'] = 'Message(s) copied successfully.';
$messages['messagemarked'] = 'Message(s) marked successfully.';
$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'Name cannot be empty.';
$messages['nametoolong'] = 'Name is too long.';
$messages['namedotforbidden'] = 'Folder name cannot start with a dot.';
$messages['folderupdated'] = 'Folder updated successfully.';
$messages['foldercreated'] = 'Folder created successfully.';
$messages['invalidimageformat'] = 'Not a valid image format.';
$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
$messages['messagetoobig'] = 'The message part is too big to process it.';
$messages['attachmentvalidationerror'] = 'This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
$messages['messageissent'] = 'The message was already sent, but not saved yet. Do you want to save it now?';
$messages['errnotfound'] = 'File Not Found';
$messages['errnotfoundexplain'] = 'The requested resource was not found!';
$messages['errfailedrequest'] = 'Failed request';
$messages['errauthorizationfailed'] = 'Authorization Failed';
$messages['errunauthorizedexplain'] = 'Could not verify that you are authorized to access this service!';
$messages['errrequestcheckfailed'] = 'Request Check Failed';
$messages['errcsrfprotectionexplain'] = "For your protection, access to this resource is secured against CSRF.\nIf you see this, you probably didn't log out before leaving the web application.\n\nHuman interaction is now required to continue.";
$messages['errcontactserveradmin'] = 'Please contact your server-administrator.';
$messages['clicktoresumesession'] = 'Click here to resume your previous session';
$messages['errcomposesession'] = 'Compose session error';
$messages['errcomposesessionexplain'] = 'Requested compose session not found.';
$messages['clicktocompose'] = 'Click here to compose a new message';
$messages['nosupporterror'] = 'This feature is not supported by your web browser.';
$messages['siginserted'] = 'Signature inserted successfully.';
$messages['responseinserted'] = 'Response inserted successfully.';
$messages['noresponsesavailable'] = 'No responses available';
$messages['listempty'] = 'The list is empty.';
$messages['listusebutton'] = 'Use the Create button to add a new record.';
$messages['keypaircreatesuccess'] = 'A new key pair has been successfully created for $identity.';
$messages['emptyattachment'] = 'This attachment appears to be empty.<br>Please, check with the person who sent this.';
$messages['oauthloginfailed'] = 'OAuth login failed. Please try again.';
localization/br/labels.inc000064400000070350151727150570011613 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Degemer mat war $product';
$labels['username'] = 'Anv an arveriad';
$labels['password'] = 'Ger-Tremen';
$labels['server'] = 'Dafariad';
$labels['login'] = 'Kennaskañ';
$labels['logout'] = 'Digennaskañ';
$labels['mail'] = 'Postel elektronek';
$labels['settings'] = 'Arventennoù';
$labels['addressbook'] = 'Karned chomlec\'hioù';
$labels['inbox'] = 'Boest degemer';
$labels['drafts'] = 'Brouilhedoù';
$labels['sent'] = 'Kaset';
$labels['trash'] = 'Pod-lastez';
$labels['junk'] = 'Stroboù';
$labels['show_real_foldernames'] = 'Diskouez anvioù gwir teuliadoù arbennik';
$labels['subject'] = 'Sujed';
$labels['from'] = 'Eus';
$labels['sender'] = 'Kaser';
$labels['to'] = 'Da';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Cci';
$labels['replyto'] = 'Respont-da';
$labels['followupto'] = 'Treuskas da';
$labels['date'] = 'Deiz';
$labels['size'] = 'Ment';
$labels['priority'] = 'Kentwir';
$labels['organization'] = 'Aozadur';
$labels['readstatus'] = 'Stad al lenn';
$labels['listoptions'] = 'Dibarzhioù ar roll...';
$labels['mailboxlist'] = 'Teuliadoù';
$labels['messagesfromto'] = 'Kemennadoù eus $from da $to war $count';
$labels['threadsfromto'] = 'Sujedoù $from da $to war $count';
$labels['messagenrof'] = 'Kemennad $nr war $count';
$labels['fromtoshort'] = '$from - $to war $count';
$labels['copy'] = 'Eilañ';
$labels['move'] = 'Dilec\'hiañ';
$labels['moveto'] = 'Dilec\'hiañ da...';
$labels['copyto'] = 'Eilañ da…';
$labels['download'] = 'Pellgargañ';
$labels['open'] = 'Digeriñ';
$labels['showattachment'] = 'Diskouez';
$labels['showanyway'] = 'Diskouez anezhañ memestra';
$labels['filename'] = 'Anv ar restr';
$labels['filesize'] = 'Ment ar restr';
$labels['addtoaddressbook'] = 'Ouzhpennañ er c\'harned chomlec\'hioù';
$labels['sun'] = 'Sul';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Meu';
$labels['wed'] = 'Mer';
$labels['thu'] = 'Yao';
$labels['fri'] = 'Gwe';
$labels['sat'] = 'Sad';
$labels['sunday'] = 'Sul';
$labels['monday'] = 'Lun';
$labels['tuesday'] = 'Meurzh';
$labels['wednesday'] = 'Merc\'her';
$labels['thursday'] = 'Yaou';
$labels['friday'] = 'Gwener';
$labels['saturday'] = 'Sadorn';
$labels['jan'] = 'Gen';
$labels['feb'] = 'C\'hwe';
$labels['mar'] = 'Meu';
$labels['apr'] = 'Ebr';
$labels['may'] = 'Mae';
$labels['jun'] = 'Mez';
$labels['jul'] = 'Gou';
$labels['aug'] = 'Eos';
$labels['sep'] = 'Gwe';
$labels['oct'] = 'Her';
$labels['nov'] = 'Du';
$labels['dec'] = 'Ker';
$labels['longjan'] = 'Genver';
$labels['longfeb'] = 'C\'hwevrer';
$labels['longmar'] = 'Meurzh';
$labels['longapr'] = 'Ebrel';
$labels['longmay'] = 'Mae';
$labels['longjun'] = 'Mezheven';
$labels['longjul'] = 'Gouere';
$labels['longaug'] = 'Eost';
$labels['longsep'] = 'Gwengolo';
$labels['longoct'] = 'Here';
$labels['longnov'] = 'Du';
$labels['longdec'] = 'Kerzu';
$labels['today'] = 'Hiziv';
$labels['refresh'] = 'Azgrenaat';
$labels['checkmail'] = 'Gwiriañ kemennadoù nevez';
$labels['compose'] = 'Skrivañ ur c\'hemennad nevez';
$labels['writenewmessage'] = 'Skrivañ ur c\'hemennad nevez';
$labels['reply'] = 'Respont';
$labels['replytomessage'] = 'Respont d\'ar kaser';
$labels['replytoallmessage'] = 'Respont d\'an holl';
$labels['replyall'] = 'Respont d\'an holl';
$labels['replylist'] = 'Respont d\'ar roll';
$labels['forward'] = 'Treuzkas';
$labels['forwardinline'] = 'Treuzkas er gemennadenn';
$labels['forwardattachment'] = 'Treuskas evel pezh stag';
$labels['forwardmessage'] = 'Treuzkas ar c\'hemennad';
$labels['deletemessage'] = 'Dilec\'hiañ ar c\'hemennad er pod-lastez';
$labels['movemessagetotrash'] = 'lakit er pod lastez';
$labels['printmessage'] = 'Moulañ ar c\'hemennad-se';
$labels['previousmessage'] = 'Gwelout ar c"hemennad a-raok';
$labels['firstmessage'] = 'Gwelout ar c\'hemennad kentañ';
$labels['nextmessage'] = 'Gwelout ar c\'hemennad da heul';
$labels['lastmessage'] = 'Gwelout ar c\'hemennad diwezhañ';
$labels['backtolist'] = 'Distreiñ el listenn kemennadoù';
$labels['viewsource'] = 'Gwelout an tarzh';
$labels['mark'] = 'merkañ';
$labels['markmessages'] = 'Merkañ ar c\'hemennad';
$labels['markread'] = 'E-giz lennet';
$labels['markunread'] = 'E-giz anlennet';
$labels['markflagged'] = 'spilhennet';
$labels['markunflagged'] = 'n\'eo ket bet spilhennet';
$labels['moreactions'] = 'muioc\'h a dibab';
$labels['folders-all'] = 'Holl teuliadoù';
$labels['more'] = 'muioc\'h';
$labels['back'] = 'distro';
$labels['options'] = 'Dibarzhioù';
$labels['first'] = 'Kentañ';
$labels['last'] = 'Diwezhañ';
$labels['previous'] = 'Kent';
$labels['next'] = 'War-Lerc\'h';
$labels['select'] = 'Diuzañ';
$labels['all'] = 'An holl';
$labels['none'] = 'Ebet';
$labels['currpage'] = 'Pajenn';
$labels['isread'] = 'Lennet';
$labels['unread'] = 'Na lennet';
$labels['flagged'] = 'Merket';
$labels['unflagged'] = 'N\'eo ket merket';
$labels['unanswered'] = 'Respontet ebet';
$labels['withattachment'] = 'Gant restroù staget';
$labels['deleted'] = 'Dilammet';
$labels['undeleted'] = 'N\'eo ket bet dilammet';
$labels['replied'] = 'Respontet';
$labels['forwarded'] = 'Treuzkaset';
$labels['invert'] = 'Tuginañ';
$labels['filter'] = 'Sil';
$labels['list'] = 'Listennañ';
$labels['threads'] = 'Neudennadoù';
$labels['expand-all'] = 'Diskouez an holl';
$labels['expand-unread'] = 'Diskouez ar re anlennet';
$labels['collapse-all'] = 'Serriñ an holl';
$labels['threaded'] = 'Dre neudennadoù';
$labels['autoexpand_threads'] = 'Diskouez an neudennadoù ar gemennadenn';
$labels['do_expand'] = 'an holl steudadoù';
$labels['expand_only_unread'] = 'Gant kemennadennoù anlennet nemetken';
$labels['fromto'] = 'Eus/ Da';
$labels['flag'] = 'Merket';
$labels['attachment'] = 'Restroù staget';
$labels['nonesort'] = 'Ebet';
$labels['sentdate'] = 'Deiz kas';
$labels['arrival'] = 'Deiz erruet';
$labels['asc'] = 'War-grec\'h';
$labels['desc'] = 'war ziskenn';
$labels['listcolumns'] = 'Roll bannoù';
$labels['listsorting'] = 'Bann rummañ';
$labels['listorder'] = 'Urzh ar rummañ';
$labels['listmode'] = 'Mod roll';
$labels['layoutlist'] = 'Listennañ';
$labels['folderactions'] = 'Gweredoù an teuliad...';
$labels['compact'] = 'Koazhet';
$labels['empty'] = 'Goulo';
$labels['importmessages'] = 'Enporzhiañ kemennadennoù';
$labels['quota'] = 'Arver ar gantenn';
$labels['unknown'] = 'Dianav';
$labels['unlimited'] = 'didermen';
$labels['quotatype'] = 'Doare ';
$labels['quotatotal'] = 'Bevenn';
$labels['quotaused'] = 'Arveret';
$labels['quotastorage'] = 'Egor kantenn';
$labels['quotamessage'] = 'Niver a gemenadennoù';
$labels['quicksearch'] = 'Klask prim';
$labels['resetsearch'] = 'Aderaouekaat ar c\'hlask';
$labels['searchmod'] = 'Kemmer klask';
$labels['msgtext'] = 'Kemennadenn a-bezh';
$labels['body'] = 'Korf';
$labels['type'] = 'Doare';
$labels['namex'] = 'Anv';
$labels['searchscope'] = 'Ledennad';
$labels['currentfolder'] = 'Teuliad bremanel';
$labels['subfolders'] = 'An hini-mañ hag an isteuliadoù';
$labels['allfolders'] = 'Holl teuliadoù';
$labels['searchinterval-1W'] = 'kozhoc\'h eget ur sizhun';
$labels['searchinterval-1M'] = 'kozhoc\'h eget ur miz';
$labels['searchinterval-1Y'] = 'kozhoc\'h eget ur bloaz';
$labels['searchinterval1W'] = 'nevesoc\'h eget ur sizhun';
$labels['searchinterval1M'] = 'nevezoc\'h eget ur miz';
$labels['searchinterval1Y'] = 'nevezoc\'h eget ur bloaz';
$labels['openinextwin'] = 'Digeriñ en ur prenestr nevez';
$labels['emlsave'] = 'Pellgargañ (.eml)';
$labels['changeformattext'] = 'Skrammañ e mentrezh testenn blaen';
$labels['changeformathtml'] = 'Skrammañ e mentrezh HTML';
$labels['editasnew'] = 'Embann evel unan nevez';
$labels['send'] = 'Kas';
$labels['sendmessage'] = 'Kas ar c\'hemennad diouzhtu';
$labels['savemessage'] = 'Gwarediñ ar brouilhed-se';
$labels['addattachment'] = 'Stagañ ur restr';
$labels['charset'] = 'Engodadur';
$labels['editortype'] = 'Furmad aozer';
$labels['returnreceipt'] = 'Testeni degemer';
$labels['dsn'] = 'Rebuziñ stad an treuzkas';
$labels['mailreplyintro'] = 'D\'an/ar $date eo bet skrivet gant $sender:';
$labels['originalmessage'] = 'Kemennadenn orin';
$labels['selectimage'] = 'Diuzañ ur skeudenn';
$labels['addimage'] = 'Ouzhpennañ ur skeudenn';
$labels['selectmedia'] = 'Diuzañ ur film';
$labels['addmedia'] = 'Ouzhpennañ ur film';
$labels['encrypt'] = 'Enringegañ';
$labels['encryptmessage'] = 'Enrinegañ ar gemennadenn';
$labels['encryptmessagemailvelope'] = 'Enrinegañ ar gemennadenn gant ';
$labels['importpubkeys'] = 'Enporzhiañ an alc\'hwezioù foran';
$labels['encryptedsendialog'] = 'O kas ur gemennadenn enrineget';
$labels['keyid'] = 'Naoudi an alc\'hwez';
$labels['keylength'] = 'a vitoù';
$labels['keyexpired'] = 'Diamzeret';
$labels['keyrevoked'] = 'Dizorniet';
$labels['insert'] = 'Enlakaat';
$labels['recipient'] = 'Degemerer';
$labels['editidents'] = 'Embann ar pivelezhioù';
$labels['spellcheck'] = 'Skrivañ';
$labels['checkspelling'] = 'Gwiriañ ar reizhskrivadur';
$labels['resumeediting'] = 'Distreiñ en aozer';
$labels['revertto'] = 'Distreiñ en/r';
$labels['restore'] = 'Assav';
$labels['restoremessage'] = 'Assav ar gemennadenn';
$labels['ignore'] = 'Leuskel';
$labels['responses'] = 'Respontoù';
$labels['insertresponse'] = 'Enlakaat ur respont';
$labels['manageresponses'] = 'Ardeiñ ar respontoù';
$labels['newresponse'] = 'Krouiñ ur respont nevez';
$labels['addresponse'] = 'Ouzhpennañ ur respont';
$labels['editresponse'] = 'Kemmañ ar respont';
$labels['editresponses'] = 'Embann respontoù';
$labels['responsename'] = 'Anv';
$labels['responsetext'] = 'Testenn ar respont';
$labels['attach'] = 'Kenstagañ';
$labels['attachments'] = 'Restroù staget';
$labels['upload'] = 'Pellgas';
$labels['uploadprogress'] = '$percent ($current war $total)';
$labels['close'] = 'Serriñ';
$labels['messageoptions'] = 'Dibarzhioù ar gemennadenn...';
$labels['togglecomposeoptions'] = 'Trec\'haoliñ dibarzhioù kenaozañ';
$labels['low'] = 'Izel';
$labels['lowest'] = 'An izelañ';
$labels['normal'] = 'Reizh';
$labels['high'] = 'Uhel';
$labels['highest'] = 'An uhelañ';
$labels['nosubject'] = '(danvez ebet)';
$labels['showimages'] = 'Diskouez ar skeudennoù';
$labels['alwaysshow'] = 'Atav diskouez skeudennoù a-berzh $sender';
$labels['isdraft'] = 'Ur brouilhed eo.';
$labels['andnmore'] = '$nr muioc\'h...';
$labels['togglemoreheaders'] = 'Diskouez muioc\'h a dalbennoù kemennadenn';
$labels['togglefullheaders'] = 'Trec\'haoliñ talbennoù kemennadenn diaoz';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'testenn kriz';
$labels['savesentmessagein'] = 'Enrollañ ar gemennadenn kaset e';
$labels['dontsave'] = 'Na enrollañ';
$labels['maxuploadsize'] = 'Ar vent vrasañ aotreet eo $size';
$labels['addcc'] = 'Ouzhpennañ Cc';
$labels['addbcc'] = 'Ouzhpennañ Bcc';
$labels['addreplyto'] = 'Ouzhpennañ Respont-da';
$labels['addfollowupto'] = 'Ouzhpennañ Kas-en-dro-da';
$labels['mdnrequest'] = 'Goulennet eo bet gant kaser ar gemennadenn bezañ rebuzet ur wech lennet ar gemennadenn ganeoc\'h. Fallout a ra deoc\'h rebuziñ ar c\'haser?';
$labels['receiptread'] = 'Testeni-degemer (lenn)';
$labels['yourmessage'] = 'Un testeni-degemer evit ho kemennadenn eo';
$labels['receiptnote'] = 'Evezhiadenn: An testeni-se a dalv eo bet skrammet ar gemennadenn war urzhiataer an degemerer. N\'eus gwarant ebet eo bet lennet pe komprenet endalc\'had ar gemennadenn.';
$labels['name'] = 'Anv da ziskouez';
$labels['firstname'] = 'Raganv';
$labels['surname'] = 'Anv';
$labels['middlename'] = 'Anv kreiz';
$labels['nameprefix'] = 'Rakger';
$labels['namesuffix'] = 'Lostger';
$labels['nickname'] = 'Lesanv';
$labels['jobtitle'] = 'Titl labour';
$labels['department'] = 'Departamant';
$labels['gender'] = 'Rev';
$labels['maidenname'] = 'Anv orin';
$labels['email'] = 'Postel';
$labels['phone'] = 'Pellgomz';
$labels['address'] = 'Chomlec\'h';
$labels['street'] = 'Straed';
$labels['locality'] = 'Kêr';
$labels['zipcode'] = 'Kod Post';
$labels['region'] = 'Stad/Proviñs';
$labels['country'] = 'Bro';
$labels['birthday'] = 'Deiz ha bloaz';
$labels['anniversary'] = 'Deiz ha bloaz';
$labels['website'] = 'Lec\'hienn';
$labels['instantmessenger'] = 'Postelerezh prim';
$labels['notes'] = 'Notennoù';
$labels['male'] = 'paotr';
$labels['female'] = 'plac\'h';
$labels['manager'] = 'Merour';
$labels['assistant'] = 'Skoazeller';
$labels['spouse'] = 'Pried';
$labels['allfields'] = 'An holl vaeziennoù';
$labels['search'] = 'Klask';
$labels['searchresult'] = 'Disoc\'hoù an enklask';
$labels['advsearch'] = 'Klask kempleshoc\'h';
$labels['advanced'] = 'Araokaet';
$labels['other'] = 'All';
$labels['printcontact'] = 'Moullañ an darempred';
$labels['qrcode'] = 'KR Kod';
$labels['typehome'] = 'Degemer';
$labels['typework'] = 'Labour';
$labels['typeother'] = 'All';
$labels['typemobile'] = 'Hezoug';
$labels['typemain'] = 'Pennañ';
$labels['typehomefax'] = 'Faks ar gêr';
$labels['typeworkfax'] = 'Faks al labour';
$labels['typecar'] = 'Gwetur';
$labels['typepager'] = 'Pajenner';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Skoazeller';
$labels['typehomepage'] = 'Pajenn degemer';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Ouzhpennañ ur vaezienn...';
$labels['addcontact'] = 'Ouzhpennañ un darempred';
$labels['editcontact'] = 'Cheñch an darempred';
$labels['contacts'] = 'darempred';
$labels['contactproperties'] = 'Perzhioù an darempred';
$labels['contactnameandorg'] = 'Anv hag aozadur';
$labels['personalinfo'] = 'Titouroù personel';
$labels['personal'] = 'Personel';
$labels['contactphoto'] = 'Skeudenn darempred';
$labels['edit'] = 'Embann';
$labels['cancel'] = 'Nullañ';
$labels['save'] = 'Enrollañ';
$labels['delete'] = 'Dilemel';
$labels['discard'] = 'Dilezel';
$labels['rename'] = 'Adenvel';
$labels['addphoto'] = 'Ouzhpennañ';
$labels['replacephoto'] = 'Amsaviñ';
$labels['uploadphoto'] = 'Pellgas ur skeudenn';
$labels['newcontact'] = 'Krouiñ un darempred nevez';
$labels['deletecontact'] = 'Dilemel an darempredoù diuzet';
$labels['composeto'] = 'Skrivañ ur gemennadenn da';
$labels['contactsfromto'] = 'Darempredoù eus $from ouzh $to war $count';
$labels['print'] = 'Moullañ';
$labels['export'] = 'Ezporzhiañ';
$labels['exportall'] = 'Ezporzhiañ an holl';
$labels['exportsel'] = 'Ezporzhiañ ar re diuzet';
$labels['exportvcards'] = 'Ezporzhiañ an darempredoù er mentrezh vCard';
$labels['newgroup'] = 'Krouiñ ur strollad nevez';
$labels['addgroup'] = 'Ouzhpennañ ur strollad';
$labels['grouprename'] = 'Adeñvel ar strollad';
$labels['groupdelete'] = 'Dilemel ar strollad';
$labels['groupremoveselected'] = 'Dilemel an darempredoù diuzet eus ar strollad';
$labels['uponelevel'] = 'Pignat eus ul live';
$labels['previouspage'] = 'Diskouez ar bajenn gent';
$labels['firstpage'] = 'Diskouez ar bajenn gentañ';
$labels['nextpage'] = 'Diskouez ar pajenn da heul';
$labels['lastpage'] = 'Gwelout ar bajenn ziwezhañ';
$labels['group'] = 'Strollad';
$labels['groups'] = 'Strolladoù';
$labels['listgroup'] = 'Roll izili ar strollad';
$labels['personaladrbook'] = 'Chomlec\'h personel';
$labels['searchsave'] = 'enrollane an enklask';
$labels['searchdelete'] = 'dilemel an enklask';
$labels['import'] = 'enporzhiañ';
$labels['importcontacts'] = 'Enporzhiañ darempredoù';
$labels['importtarget'] = 'Ouzhpennañ an darempredoù da';
$labels['importreplace'] = 'Amsaviñ ar c\'harned chomlec\'hioù a-bezh';
$labels['importgroups'] = 'Enporzhiañ deverkadurioù strolladoù';
$labels['importgroupsall'] = 'An holl (krouiñ strolladoù m\'eo ret)';
$labels['importgroupsexisting'] = 'Evit ar strolladoù ma zo diouto hepken';
$labels['done'] = 'Graet eo';
$labels['settingsfor'] = 'Arventennoù evit';
$labels['about'] = 'Diwar-benn';
$labels['preferences'] = 'Gwellvezioù';
$labels['userpreferences'] = 'Gwellvezioù an arveriad';
$labels['editpreferences'] = 'Embann gwellvezioù an arveriad';
$labels['identities'] = 'Pivelezhioù';
$labels['manageidentities'] = 'Ardeiñ ar pivelezhioù';
$labels['newidentity'] = 'Krouiñ ur pivelezh nevez';
$labels['addidentity'] = 'Ouzhpennañ ur pivelezh';
$labels['editidentity'] = 'Embann ur pivelezh';
$labels['identityencryption'] = 'Enrinegañ';
$labels['preferhtml'] = 'Diskouez en HTML';
$labels['defaultcharset'] = 'Spletad arouezennoù dre ziouer';
$labels['htmlmessage'] = 'Kemennadenn HTML';
$labels['messagepart'] = 'Lodenn';
$labels['digitalsig'] = 'Sinadur niverel';
$labels['dateformat'] = 'Mentrezh an deiziad';
$labels['timeformat'] = 'Mentrezh an eur';
$labels['prettydate'] = 'Deiziadoù kaer';
$labels['setdefault'] = 'Arventennoù dre ziouer';
$labels['autodetect'] = 'Emgefre';
$labels['language'] = 'Yezh';
$labels['timezone'] = 'Gwerzhid-eur';
$labels['pagesize'] = 'Niver a linenn dre bajenn';
$labels['signature'] = 'Sinadur';
$labels['dstactive'] = 'Eur an hañv';
$labels['showinextwin'] = 'Digeriñ ar gemennadenn e-barzh ur prenestr nevez';
$labels['composeextwin'] = 'Skrivañ e-barzh ur prenestr nevez';
$labels['htmleditor'] = 'Skrivañ ur gemennadenn er mentrezh HTML';
$labels['htmlonreply'] = 'en ur respont d\'ur gemennadenn HTML';
$labels['htmlonreplyandforward'] = 'en un dreuzkas pe en ur respont d\'ur gemennadenn HTML ';
$labels['htmlsignature'] = 'Sinadur HTML';
$labels['showemail'] = 'Diskouez ar chomlec\'h postel gant an anv skrammañ';
$labels['previewpane'] = 'Diskouez panel alberz';
$labels['skin'] = 'Neuze an etrefas';
$labels['logoutclear'] = 'Skarzhañ ar c\'hest en ur zigennaskañ';
$labels['logoutcompact'] = 'Boest degemer koazhet en ur zigennaskañ';
$labels['uisettings'] = 'Ketal arveriad';
$labels['serversettings'] = 'Arventennoù an dafariad';
$labels['mailboxview'] = 'Gwel boest posteloù';
$labels['mdnrequests'] = 'War c\'houlenn evit an testeni-degemer';
$labels['askuser'] = 'goulenn ganin';
$labels['autosend'] = 'Kas un testeni degemer';
$labels['autosendknown'] = 'kas un testeni degemer d\'am darempredoù, goulenn ganin e mod all';
$labels['autosendknownignore'] = 'kas un testeni degemer d\'am darempredoù, leuskel e mod all';
$labels['ignorerequest'] = 'leuskel ar goulenn';
$labels['readwhendeleted'] = 'Merkañ ar gemennadenn evel lennet p\'eo lamet kuit';
$labels['flagfordeletion'] = 'Merkañ ar gemennadenn da vezañ lamet kuit e plas lemel kuit';
$labels['skipdeleted'] = 'Chom hep skrammañ kemennadennoù dilamet';
$labels['deletealways'] = 'Ma c\'hwit dilec\'hiañ ar c\'hemennadennoù d\'ar c\'hest, lemel anezho kuit';
$labels['deletejunk'] = 'Lemel kuit ar c\'hemennadennoù el lastez war-eeun';
$labels['showremoteimages'] = 'Lemel kuit ar skeudennoù enkorfet a-bell';
$labels['fromknownsenders'] = 'a-berzh kaserien anavezet';
$labels['always'] = 'atav';
$labels['alwaysbutplain'] = 'atav, war-bouez pa vez respontet d\'un destenn blaen';
$labels['showinlineimages'] = 'Skrammañ ar skeudennoù kenstaget dindan ar gemennadenn';
$labels['autosavedraft'] = 'Enrollan ar brouilhedoù ent emgefreek';
$labels['everynminutes'] = 'Bep $n a vunutennoù';
$labels['refreshinterval'] = 'Azgrenaat (gwiriañ posteloù nevez, hag all.)';
$labels['never'] = 'morse';
$labels['immediately'] = 'diouzhtu';
$labels['messagesdisplaying'] = 'O skrammañ kemennadennoù';
$labels['messagescomposition'] = 'O skrivañ kemennadennoù';
$labels['mimeparamfolding'] = 'Anvioù ar c\'henstagadurioù';
$labels['2231folding'] = 'RFC 2231 a-bezh (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 a-bezh (ar re all)';
$labels['force7bit'] = 'Arverañ an enbonegañ MIME evit an arouezennoù 8-bit';
$labels['savelocalstorage'] = "Enrollañ e kadaviñ lec'hel ar merdeer (padennek)";
$labels['advancedoptions'] = 'Dibarzhioù araokaet';
$labels['toggleadvancedoptions'] = 'Trec\'haoliñ an dibarzhioù araoket';
$labels['focusonnewmessage'] = 'Stiañ prenestr ar merdeer pa \'z eus ur gemennadenn nevez';
$labels['checkallfolders'] = 'Gwiriañ an holl deuliadoù evit kemennadennoù nevez';
$labels['defaultfont'] = 'Nodrezh dre ziouer ar c\'hemennadennoù HTML';
$labels['mainoptions'] = 'Dibarzhioù dre ziouer';
$labels['browseroptions'] = 'Dibarzhioù ar merdeer';
$labels['section'] = 'Rann';
$labels['maintenance'] = 'Trezlac\'h';
$labels['newmessage'] = 'Kemennadenn nevez';
$labels['signatureoptions'] = 'Dibarzhioù sinadur';
$labels['whenreplying'] = 'Pa vez respontet';
$labels['replyempty'] = 'Chom hep menegiñ ar gemennadenn orin';
$labels['replytopposting'] = 'kregiñ ar gemennadenn nevez a-us d\'ar meneg';
$labels['replybottomposting'] = 'kregiñ ar gemennadenn nevez dindan ar meneg';
$labels['replyremovesignature'] = 'Pa vez respontet, dilemel ar sinadur orin eus ar gemennadenn ';
$labels['autoaddsignature'] = 'Ouzhpennañ ar sinadur ent emgefreek';
$labels['newmessageonly'] = 'evit ar c\'hemennadennoù nevez hepken';
$labels['replyandforwardonly'] = 'evit ar respontoù hag an treuzkasoù hepken';
$labels['insertsignature'] = 'Enlakaat ar sinadur';
$labels['sigbelow'] = 'Lakaat ar sinadur a-us d\'ar gemennadenn veneget';
$labels['sigseparator'] = 'Rediañ an disranner skoueriek er sinadurioù';
$labels['afternseconds'] = 'goude $n eilenn';
$labels['reqmdn'] = 'Atav goulenn un testeni degemer';
$labels['reqdsn'] = 'Atav goulenn ur rebuziñ stad ar c\'has';
$labels['replysamefolder'] = 'Lakaat ar respontoù en teuliad lec\'h m\'emañ ar gemennadenn orin';
$labels['defaultabook'] = 'Karned chomlec\'hioù dre ziouer';
$labels['autocompletesingle'] = 'Tremen ar chomlec\'hioù postel dazeilel er c\'hlokadur emgefreek ';
$labels['listnamedisplay'] = 'Rollañ an darempredoù evel';
$labels['spellcheckbeforesend'] = 'Gwiriekaat ar reizhskrivañ a-raok kas ur gemennadenn';
$labels['spellcheckoptions'] = 'Dibarzhioù reizhskrivañ';
$labels['spellcheckignoresyms'] = 'Leuskel ar gerioù gant arouezennoù';
$labels['spellcheckignorenums'] = 'Leuskel ar gerioù gant niverennoù';
$labels['spellcheckignorecaps'] = 'Leuskel ar gerioù gant pennlizherennoù hepken';
$labels['addtodict'] = 'Ouzhpennañ d\'ar geriadur';
$labels['mailtoprotohandler'] = 'Dornataour komenad marilhañ  evit mailto: ereoù';
$labels['standardwindows'] = 'Dornata prenestroù diflugell evel prenestroù skoueriek';
$labels['forwardmode'] = 'Treuzkas posteloù';
$labels['inline'] = 'enkorfet';
$labels['asattachment'] = 'kenstaget';
$labels['replyallmode'] = 'Gwered dre ziouer an afell [Respont d\'an holl]';
$labels['replyalldefault'] = 'respont d\'an holl';
$labels['replyalllist'] = 'respont d\'ar roll posteloù hepken (m\'eo kavet)';
$labels['allmessages'] = 'An holl posteloù';
$labels['folder'] = 'Teuliad';
$labels['folders'] = 'Teuliadoù';
$labels['foldername'] = 'Anv an teuliad';
$labels['subscribed'] = 'Koumananter';
$labels['messagecount'] = 'Kemennadennoù';
$labels['create'] = 'Krouiñ';
$labels['createfolder'] = 'Krouiñ un teuliad nevez';
$labels['managefolders'] = 'Ardeiñ an teuliadoù';
$labels['specialfolders'] = 'Teuliadoù arbennik';
$labels['properties'] = 'Perzhioù';
$labels['folderproperties'] = 'Perzhioù an teuliad';
$labels['parentfolder'] = 'Teuliad kar';
$labels['location'] = 'Lec\'hiadur';
$labels['info'] = 'Titouroù';
$labels['getfoldersize'] = 'Klikit da gaout ment an teuliad';
$labels['changesubscription'] = 'Klikit da gemmañ ar c\'houmanant';
$labels['foldertype'] = 'Rizh an teuliad';
$labels['personalfolder'] = 'Teuliad prevez';
$labels['otherfolder'] = 'Teuliad an arveriaded all';
$labels['sharedfolder'] = 'Teuliad foran';
$labels['findfolders'] = 'Kavout teuliadoù';
$labels['namespace.personal'] = 'Personel';
$labels['namespace.other'] = 'Arveriaded all';
$labels['namespace.shared'] = 'Rannet';
$labels['encryptioncreatekey'] = 'Krouiñ un daouad alc\'hwezioù nevez';
$labels['encryption'] = 'Enrinegañ';
$labels['sortby'] = 'Rummañ dre';
$labels['sortasc'] = 'Rumm diagentad';
$labels['sortdesc'] = 'Rumm diskennad';
$labels['undo'] = 'Dizober';
$labels['installedplugins'] = 'Enlugelladoù staliet';
$labels['plugin'] = 'Enlugellad';
$labels['version'] = 'Handelv';
$labels['source'] = 'Tarzh';
$labels['license'] = 'Lañvaz';
$labels['support'] = 'Skoazell';
$labels['B'] = 'Eizhbit';
$labels['KB'] = 'KE';
$labels['MB'] = 'ME';
$labels['GB'] = 'GE';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Saozneg';
$labels['westerneuropean'] = 'Kornôg Europa';
$labels['easterneuropean'] = 'Reter Europa';
$labels['southeasterneuropean'] = 'Gevred Europa';
$labels['baltic'] = 'Baltek';
$labels['cyrillic'] = 'Kirillek';
$labels['arabic'] = 'Arabeg';
$labels['greek'] = 'Gresianeg';
$labels['hebrew'] = 'Hebraek';
$labels['turkish'] = 'Turkeg';
$labels['nordic'] = 'Nordeg';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Keltieg';
$labels['vietnamese'] = 'Vietnameg';
$labels['japanese'] = 'Japaneg';
$labels['korean'] = 'Koreaneg';
$labels['chinese'] = 'Sinaeg';
$labels['arialabeltopnav'] = 'Reoliadur ar prenestr';
$labels['arialabeltasknav'] = 'Trevelloù arload';
$labels['arialabeltoolbar'] = 'Barrenn ostilhoù arload';
$labels['arialabelactivetask'] = 'Trevell oberiant';
$labels['arialabelmessagessearchfilter'] = 'Sil roll kemennadennoù';
$labels['arialabelmailsearchform'] = 'Furmad klask kemennadennoù';
$labels['arialabelcontactsearchform'] = 'Furmskrid klask darempredoù';
$labels['arialabelmailquicksearchbox'] = 'Enankad klask posteloù';
$labels['arialabelquicksearchbox'] = 'Enankad klask';
$labels['arialabelfoldersearchfilter'] = 'Sil roll teuliadoù';
$labels['arialabelfoldersearchform'] = 'Furmskrid klask teuliadoù';
$labels['arialabelfolderlist'] = 'Diuzad teuliadoù posteloù';
$labels['arialabelmessagelist'] = 'Roll kemennadennoù';
$labels['arialabelmailpreviewframe'] = 'Alberzh kemennadennoù';
$labels['arialabelmailboxmenu'] = 'Lañser gweredoù an teuliad';
$labels['arialabellistselectmenu'] = 'Lañser roll an diuzad';
$labels['arialabelthreadselectmenu'] = 'Lañser roll an neudennoù';
$labels['arialabelmessagelistoptions'] = 'Skrammañ roll ar c\'hemennadennoù ha dibarzhioù rummañ';
$labels['arialabelmailimportdialog'] = 'Boestad emziviz enporzhiañ ur gemennadenn';
$labels['arialabelmessagenav'] = 'Merdeiñ kemennadennoù';
$labels['arialabelmessagebody'] = 'Korf ar gemennadenn';
$labels['arialabelmessageactions'] = 'Gwerdeoù ar gemennadenn';
$labels['arialabelcontactquicksearch'] = 'Furmskrid klask darempredoù';
$labels['arialabelcontactsearchbox'] = 'Enankad klask darempredoù';
$labels['arialabelmessageheaders'] = 'Talbennoù ar gemennadenn';
$labels['arialabelforwardingoptions'] = 'Dibarzhioù treuzkas';
$labels['arialabelreplyalloptions'] = 'Dibarzhioù respont d\'an holl';
$labels['arialabelmoremessageactions'] = 'Dibarzhioù kemennadenn ouzhpenn';
$labels['arialabelmarkmessagesas'] = 'Merkañ ar c\'hemennadennoù diuzet evel...';
$labels['arialabelcomposeoptions'] = 'Dibarzhioù skrivañ';
$labels['arialabelresponsesmenu'] = 'Lañser respontoù er voest';
$labels['arialabelattachmentuploadform'] = 'Furmskrid pellgas stagadennoù';
$labels['arialabelattachmentpreview'] = 'Alberz ar stagadennoù';
$labels['ariasummarycomposecontacts'] = 'Roll an darempredoù ha strolladoù da ziuzañ evel degemererien';
$labels['arialabelcontactexportoptions'] = 'Dibarzhioù ezporzhiañ darempredoù';
$labels['arialabelabookgroupoptions'] = 'Dibarzhioù karned chomlec\'h/strolladoù';
$labels['arialabelpreferencesform'] = 'Gwellvezioù a-berzh';
$labels['arialabelidentityeditfrom'] = 'Furmskrid embann ar pivelezh';
$labels['arialabelresponseeditfrom'] = 'Furmskrid embann ar respont';
$labels['arialabelsearchterms'] = 'Termennoù enklask';
$labels['helplistnavigation'] = 'Rollañ merdeiñ ar c\'hlavier';
$labels['helplistkeyboardnavigation'] = "Biroù a-us/en-traoñ: Dilec'hiañ linenn stiet/diuzet
Esaouiñ: stiañ al linenn
Pennlizh. + a-us/en-traoñ: diuzañ linennoù ouzhpenn a-us/e traoñ
Reol + esaouiñ: Ouzhpennañ linennoù stiet d'an diuzad/Dilemel eus an diuzad";
$labels['helplistkeyboardnavmessages'] = "Biroù kleiz/dehou: astenn/diskar neudennoù kemennadennoù (e mod neudenn hepken)
Enankañ: Digeriñ ar gemennadenn stiet/diuzet.
Dilemel: Dilec'hiañ ar c'hemennadennoù diuzet d'ar c'hest.";
$labels['helplistkeyboardnavcontacts'] = "Enankañ: Digeriñ an darempred stiet/diuzet.";
localization/br/messages.inc000064400000036144151727150570012163 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Degouezhet ez eus bet ur fazi !';
$messages['loginfailed']  = 'Kennaskañ c\'hwitet';
$messages['cookiesdisabled'] = 'Nac\'h a ra ho merdeer an toupinoù';
$messages['sessionerror'] = 'Didalvoudek pe echuet eo hoc\'h estez.';
$messages['storageerror'] = 'C\'hwitadenn war kennaskañ ouzh an dafariad mirout';
$messages['servererror'] = 'Fazi dafariad !';
$messages['servererrormsg'] = 'Fazi dafariad : $msg';
$messages['accountlocked'] = 'Re a glaskoù kennaskañ c\'hwitet. Klaskot en-dro diwezhatoc\'h.';
$messages['connerror'] = 'Fazi kennaskañ (N\'haller ket tizhout an dafariad)!';
$messages['dberror'] = 'Fazi stlennvon!';
$messages['windowopenerror'] = 'Stanket eo bet ar prenestr diflugell!';
$messages['requesttimedout'] = 'Diamzeret he deus an azgoulenn';
$messages['errorreadonly'] = 'N\'haller ket seveniñ ar gwezhiadur. E mod lenn nemetken eo an teuliad.';
$messages['errornoperm'] = 'N\'haller ket seveniñ ar gwezhiadur. Aotre nac\'het.';
$messages['erroroverquota'] = 'N\'haller ket seveniñ ar gwezhiadur. Egor dieub ebet er gantenn.';
$messages['erroroverquotadelete'] = 'Egor dieub ebet er gantenn. Grit Pennlizh.+Dilemel evit dilemel ur gemennadenn.';
$messages['invalidrequest'] = 'Azgoulenn didalvoudek! N\'ez eus bet enrollet roadenn ebet.';
$messages['invalidhost'] = 'Anv dafariad didalvoudek';
$messages['nomessagesfound'] = 'Kemennadenn ebet er voest lizhiri';
$messages['mailboxempty'] = 'Goulo eo ar voest lizhiri';
$messages['nomessages'] = 'Kemennadenn ebet';
$messages['refreshing'] = 'Oc\'h azgrenaat...';
$messages['loading'] = 'O kargañ...';
$messages['uploading'] = 'O pellgas ar restr...';
$messages['attaching'] = 'O stagañ ar restr...';
$messages['uploadingmany'] = 'O pellgas ar restroù...';
$messages['loadingdata'] = 'O kargañ roadennoù...';
$messages['checkingmail'] = 'O wiriañ kemennadoù nevez...';
$messages['sendingmessage'] = 'O kas ar gemennadenn...';
$messages['messagesent'] = 'Kaset eo mat ho kemennadenn';
$messages['savingmessage'] = 'Oc\'h enrollañ ar gemennadenn...';
$messages['messagesaved'] = 'Kemennadenn enrollet er brouilhedoù';
$messages['successfullysaved'] = 'Enrollet gant berzh.';
$messages['savingresponse'] = 'Oc\'h enrollañ testenn ar respont...';
$messages['deleteresponseconfirm'] = 'Fellout a ra deoc\'h dilemel testenn ar respont-mañ?';
$messages['addedsuccessfully'] = 'Darempred ouzhpennet er c\'harned chomlec\'hioù';
$messages['contactexists'] = 'Un darempred gant an hevelep chomlec\'h postel a zo endeo';
$messages['contactnameexists'] = 'Un darempred gant an hevelep anv a zo endeo';
$messages['blockedimages'] = 'Evit gwareziñ ho puhez prevez eo bet stanket skeudennoù a-bell er gemennadenn-se.';
$messages['encryptedmessage'] = 'Enrineget eo ar gemennadenn ha ne c\'hall ket bezañ skrammet. Digarezit!';
$messages['externalmessagedecryption'] = 'Ur gemennadenn enrineget an hini eo ha gallout a ra bezañ ezrineget gant ho askouezh merdeer.';
$messages['nopubkeyfor'] = 'N\'ez eus bet kavet alc\'hwez foran ebet evit $email';
$messages['nopubkeyforsender'] = 'N\'ez eus bet kavet alc\'hwez foran talvoudek ebet evit pivelezh ho kaser. Fellout a ra deoc\'h enrinegañ ar gemennadenn evit an degemererien hepken?';
$messages['encryptnoattachments'] = 'Ar c\'henstagadurioù pellgaset endeo n\'hallont ket bezañ enrineget. Ouzhpennit anezho en-dro en embanner enrinegañ.';
$messages['searchpubkeyservers'] = 'Fellout a ra deoc\'h klask war lec\'h an alc\'hwezioù a vank en dafariadoù alc\'hwezioù foran?';
$messages['encryptpubkeysfound'] = 'N\'eo ket bet kavet an alc\'hwezioù foran da-heul:';
$messages['nocontactsfound'] = 'N\'eo ket bet kavet darempred ebet';
$messages['contactnotfound'] = 'N\'eo ket bet kavet an darempred goulennet';
$messages['sendingfailed'] = 'C\'hwitadenn en ur gas ar gemennadenn';
$messages['senttooquickly'] = 'Gortozit $sec eilenn a-raok kas ar gemennadenn-mañ.';
$messages['errorsavingsent'] = 'Ur fazi a zo c\'hoarvezet en ur enrollañ ar gemennadenn kaset.';
$messages['errorsaving'] = 'Ur fazi a zo c\'hoarvezet en ur enrollañ.';
$messages['errormoving'] = 'N\'haller ket dilec\'hiañ ar g(c\'h)emennadenn(où)';
$messages['errorcopying'] = 'N\'haller ket eilañ ar g(c\'h)emennadenn(où)';
$messages['errordeleting'] = 'N\'haller ket dilemel ar g(c\'h)emennadenn(où)';
$messages['errormarking'] = 'N\'haller ket merkañ ar g(c\'h)emennadenn(où)';
$messages['deletecontactconfirm']  = 'C\'hoant hoc\'h eus da zilemel an darempred(où) diuzet?';
$messages['deletegroupconfirm']  = 'Fellout a ra deoc\'h dilemel ar strollad diuzet?';
$messages['deletemessagesconfirm'] = 'C\'hoant hoc\'h eus da zilemel ar g(c\'h)emennadenn(où) diuzet ?';
$messages['deletefolderconfirm']  = 'C\'hoant hoc\'h eus da skarzhañ an teuliad-se ?';
$messages['purgefolderconfirm']  = 'C\'hoant hoc\'h eus da skarzhañ an holl gemennadennoù eus an teuliad-se ?';
$messages['contactdeleting'] = 'O lemel darempredoù kuit...';
$messages['groupdeleting'] = 'O lemel ar strollad kuit...';
$messages['folderdeleting'] = 'O lemel an teuliad kuit...';
$messages['foldermoving'] = 'O tilec\'hiañ an teuliad...';
$messages['foldersubscribing'] = 'O koumanantiñ an teuliad...';
$messages['folderunsubscribing'] = 'O tigoumanantiñ an teuliad...';
$messages['formincomplete'] = 'N\'eo ket leuniet ar furmskrid penn-da-benn';
$messages['noemailwarning'] = 'Termenit ur postel elektronek mat mar plij ganeoc\'h';
$messages['nonamewarning']  = 'Termenit un anv mar plij ganeoc\'h';
$messages['nopagesizewarning'] = 'Termenit ur ment pajenn mar plij ganeoc\'h';
$messages['nosenderwarning'] = 'Enankit chomlec\'h postel ar c\'haser.';
$messages['norecipientwarning'] = 'Ouzhpennit ur resever da nebeutañ mar plij ganeoc\'h';
$messages['nosubjectwarning']  = 'Dileun eo ar maezienn « Sujed » . C\'hoant hoc\'h eus da leuniañ anezhiñ diouzhtu ?';
$messages['nobodywarning'] = 'Kas ar c\'hemennad hep testenn ?';
$messages['restoresavedcomposedata'] = 'Kavet ez eus bet ur gemennadenn skrivet ha n\'eo ket bet kaset.\n\nDanvez: $subject\nEnrollet: $date\n\nFellout a ra deoc\'h assav ar gemennadenn-mañ?';
$messages['nosearchname'] = 'Skrivit un anv darempred pe ur postel elektronek';
$messages['notuploadedwarning'] = 'N\'eo ket bet pellgaset an holl genstagadennoù c\'hoazh. Gortozit pe nullit ar pellgas.';
$messages['searchsuccessful'] = '$nr kemennad kavet';
$messages['contactsearchsuccessful'] = 'Kavet ez eus bet $nr a zarempredoù.';
$messages['searchnomatch'] = 'Disoc\'h ebet gant ar glask';
$messages['searching'] = 'O klask...';
$messages['checking'] = 'O gwiriañ...';
$messages['stillsearching'] = 'O klask c\'hoazh...';
$messages['nospellerrors'] = 'Fazi ebet kavet';
$messages['folderdeleted'] = 'Renkell skarzhet';
$messages['foldersubscribed'] = 'Koumanantet an teuliad gant berzh.';
$messages['folderunsubscribed'] = 'Digoumanantet an teuliad gant berzh.';
$messages['deletedsuccessfully'] = 'Dilemet mat';
$messages['converting'] = 'O tilemel furmaozañ...';
$messages['messageopenerror'] = 'N\'us ket tu da gargañ ar c\'hemennad adalek ar servijer';
$messages['filelinkerror'] = 'C\'hwitadenn war stagadenn ar restr.';
$messages['fileuploaderror'] = 'Fazi o treuzkas ar restr';
$messages['filesizeerror'] = 'Re vras eo ar restr treuzkaset $size';
$messages['copysuccess'] = 'Eilet $nr a zarempredù gant berzh.';
$messages['movesuccess'] = 'Dilec\'hiet $nr a zarempredoù gant berzh.';
$messages['copyerror'] = 'N\'haller eilañ darempred ebet.';
$messages['moveerror'] = 'N\'haller dilec\'hiañ darempred ebet.';
$messages['sourceisreadonly'] = 'Lenn hepken eo an tarzh chomlec\'h se';
$messages['errorsavingcontact'] = 'Ne c\'haller ket gwarediñ chomlec\'h darempred';
$messages['movingmessage'] = 'O tilec\'hiañ kemennadennoù...';
$messages['copyingmessage'] = 'Oc\'h eilañ kemennadennoù...';
$messages['copyingcontact'] = 'Oc\'h eilañ darempredoù...';
$messages['movingcontact'] = 'O fiñval an darempred(où)';
$messages['deletingmessage'] = 'O tilemel darempredoù...';
$messages['markingmessage'] = 'O verkañ darempredoù...';
$messages['addingmember'] = 'Oc\'h ouzhpennañ darempredoù d\'ar strollad...';
$messages['removingmember'] = 'O tilemel darempredoù eus ar strollad...';
$messages['receiptsent'] = 'Kaset eo bet un testeni degemer gant berzh.';
$messages['errorsendingreceipt'] = 'N\'haller ket kas an testeni degemer.';
$messages['deleteidentityconfirm'] = 'Fellout a ra deoc\'h dilemel ar pivelezh-mañ?';
$messages['nodeletelastidentity'] = 'N\'hallit ket dilemel ar pivelezh-mañ, ho hini diwezhañ eo.';
$messages['forbiddencharacter'] = 'Un arouezenn difennet a zo e anv an teuliad.';
$messages['selectimportfile'] = 'Dibabit ur restr da bellgas.';
$messages['addresswriterror'] = 'Ar c\'harned chomlec\'h diuzet n\'haller ket skrivañ warnañ.';
$messages['contactaddedtogroup'] = 'Ouzhpennet eo bet an darempredoù er strollad gant berzh.';
$messages['contactremovedfromgroup'] = 'Dilamet eo bet an darempredoù eus ar strollad gant berzh.';
$messages['nogroupassignmentschanged'] = 'N\'eo bet kemmet deverkadur strollad ebet.';
$messages['importwait'] = 'Oc\'h enporzhiañ, gortozit...';
$messages['importformaterror'] = 'C\'hwitadenn war an enporzhiañ! N\'eo ket ur restr roadennoù enporzhiañ talvoudek an hini a zo bet pellgaset.';
$messages['importconfirm'] = '<b>Enporzhiet eo bet $inserted a zarempredoù gant berzh</b>';
$messages['importconfirmskipped'] = '<b>Tremenet eo bet $skipped elfennoù a oa outo endeo</b>';
$messages['importmessagesuccess'] = 'Enporzhiet $nr a gemennadennoù gant berzh';
$messages['importmessageerror'] = 'C\'hwitadenn war an enporzhiañ! Ar restr pellgaset n\'eo ket ur restr kemennadenn talvoudek peur restr boest lizhiri';
$messages['opnotpermitted'] = 'N\'eo ket aotreet ar gwezhiadur!';
$messages['nofromaddress'] = 'Mankout a ra ar chomlec\'h postel er pivelezh dibabet.';
$messages['editorwarning'] = 'Kemmañ embanner a c\'hell sevel kudennoù e mentrezhañ an destenn. Fellout a ra deoc\'h kenderc\'hel?';
$messages['httpreceivedencrypterror'] = 'Ur fazi kefluniadur lazhus a zo c\'hoarvezet. Kit e darempred gant ho merour war eeun. <b>N\'haller ket kas ho postel</b> ';
$messages['smtpconnerror'] = 'Fazi SMTP ($code): c\'hwitadenn en ur gennaskañ d\'an dafariad.';
$messages['smtpautherror'] = 'Fazi SMTP ($code): c\'hwitadenn war an naoudi.';
$messages['smtpfromerror'] = 'Fazi SMTP ($code): C\'hwitadenn evit lakaat ar c\'haser "$from" ($msg).';
$messages['smtptoerror'] = 'Fazi SMTP ($code): C\'hwitadenn war ouzhpennadenn an degemerer "$to" ($msg)';
$messages['smtprecipientserror'] = 'Fazi SMTP: N\'haller ket dezrannañ roll an degemererien';
$messages['smtperror'] = 'Fazi SMTP: $msg';
$messages['emailformaterror'] = 'Chomlec\'h postel didalvoudek: $email';
$messages['toomanyrecipients'] = 'Re a zegemererien. Digreskit an niver a zegemererien da $max.';
$messages['maxgroupmembersreached'] = 'An niver a izili er strollad a zo ouzhpenn ar c\'hementad aotreet $max.';
$messages['internalerror'] = 'Ur fazi diabarzh a zo c\'hoarvezet. Klaskit en-dro.';
$messages['contactdelerror'] = 'N\'eus ket bet gellet dilemel an darempred(où)';
$messages['contactdeleted'] = 'Dilamet eo bet an darempred(où) gant berzh.';
$messages['contactrestoreerror'] = 'N\'haller ket assav an darempred(où) dilamet.';
$messages['contactrestored'] = 'Darempred(où) dilamet gant berzh.';
$messages['groupdeleted'] = 'Dilamet eo bet ar strollad gant berzh.';
$messages['grouprenamed'] = 'Adanvet eo bet ar strollad gant berzh.';
$messages['groupcreated'] = 'Krouet eo bet ar strollad gant berzh.';
$messages['savedsearchdeleted'] = 'Dilamet eo bet ar c\'hlask enrollet gant berzh.';
$messages['savedsearchdeleteerror'] = 'N\'haller ket dilemel ar c\'hlask enrollet.';
$messages['savedsearchcreated'] = 'Krouet eo bet ar c\'hlask enrollet gant berzh.';
$messages['savedsearchcreateerror'] = 'N\'haller ket krouiñ ar c\'hlask enrollet.';
$messages['messagedeleted'] = 'Dilamet eo bet ar c\'hemennadennoù gant berzh.';
$messages['messagemoved'] = 'Kemennadennoù dilec\'hiet gant berzh.';
$messages['messagemovedtotrash'] = 'Kemennadennoù dilec\'hiet er c\'hest gant berzh.';
$messages['messagecopied'] = 'Kemennadennoù eilet gant berzh. ';
$messages['messagemarked'] = 'Kemennadennoù merket gant berzh.';
$messages['autocompletechars'] = 'Enankit $min arouezenn d\'an nebeutañ evit ar c\'hlokadur emgefreek';
$messages['autocompletemore'] = 'Elfennoù kenglotus ouzhpenn kavet. Biziatait muioc\'h a arouezennoù.';
$messages['namecannotbeempty'] = 'N\'hall ket an anv bezañ goullo.';
$messages['nametoolong'] = 'Re hir eo an anv.';
$messages['namedotforbidden'] = 'N\'hall ket anv un teuliad kregiñ ur poent.';
$messages['folderupdated'] = 'Teuliad hizivaet gant berzh.';
$messages['foldercreated'] = 'Teuliad krouet gant berzh.';
$messages['invalidimageformat'] = 'N\'eo ket ur mentrezh skeudenn talvoudek.';
$messages['mispellingsfound'] = 'Dinoet ez eus bet fazioù reizhskrivañ er gemennadenn.';
$messages['parentnotwritable'] = 'N\'haller ket krouiñ/dilec\'hiañ an teuliad en teuliad kar dibabet. N\'ho peus ket an aotre haeziñ.';
$messages['messagetoobig'] = 'Re vras eo al lodenn gemennadenn evit he c\'heweriañ.';
$messages['noscriptwarning'] = 'Diwallit: Javascript a zo azgoulennet gant ar gwazerezh posteloù-mañ! Evit e arverañ, gweredekait Javascript e arventennoù ho merdeer.';
$messages['messageissent'] = 'Kaset eo bet ar gemennadenn endeo, met n\'eo ket bet enrollet. Fellout a ra deoc\'h he enrollañ bremañ?';
$messages['errnotfound'] = 'Restr ebet kavet';
$messages['errnotfoundexplain'] = 'N\'eo ket bet kavet al loaz azgoulennet!';
$messages['errfailedrequest'] = 'Azgoulenn c\'hwitet';
$messages['errauthorizationfailed'] = 'Aotre c\'hwitet';
$messages['errunauthorizedexplain'] = 'N\'haller ket gwiriañ hoc\'h aotreet da haeziñ ar gwazerezh-mañ!';
$messages['errrequestcheckfailed'] = 'Gwiriañ an azgoulenn c\'hwitet';
$messages['errcsrfprotectionexplain'] = "Evit ho kwarez eo diogelet an haeziñ d'al loaz-mañ gant CSRF.\nMa welit-se n'hoc'h ket digennasket a-raok kuitaat an arload web.\nUn etrewezhiadur denel a zo azgoulennet evit kenderc'hel.  ";
$messages['errcontactserveradmin'] = 'Kit e darempred gant ardoer ho tafariad.';
$messages['clicktoresumesession'] = 'Klikit aze evit kenderc\'hel gant ho estez kent.';
$messages['errcomposesession'] = 'Fazi e savidigezh an estez';
$messages['errcomposesessionexplain'] = 'N\'eo ket bet kavet an estez azgoulennet';
$messages['clicktocompose'] = 'Klikit aze evit skrivañ ur gemennadenn nevez';
$messages['listempty'] = 'Goullo eo ar roll.';
localization/uk_UA/labels.inc000064400000107620151727150570012215 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Ласкаво просимо до $product';
$labels['username'] = 'Ім\'я користувача';
$labels['password'] = 'Пароль';
$labels['server'] = 'Сервер';
$labels['login'] = 'Увійти';
$labels['menu'] = 'Меню';
$labels['logout'] = 'Вийти';
$labels['mail'] = 'Пошта';
$labels['settings'] = 'Налаштування';
$labels['addressbook'] = 'Контакти';
$labels['inbox'] = 'Вхідні';
$labels['drafts'] = 'Чернетки';
$labels['sent'] = 'Надіслані';
$labels['trash'] = 'Кошик';
$labels['junk'] = 'Спам';
$labels['show_real_foldernames'] = 'Показувати справжні імені для спеціальних тек';
$labels['subject'] = 'Тема';
$labels['from'] = 'Від кого';
$labels['sender'] = 'Відправник';
$labels['to'] = 'Кому';
$labels['cc'] = 'Копія';
$labels['bcc'] = 'Прихована';
$labels['replyto'] = 'Зворотня адреса';
$labels['followupto'] = 'Відповісти всім';
$labels['date'] = 'Дата';
$labels['size'] = 'Розмір';
$labels['priority'] = 'Пріоритет';
$labels['organization'] = 'Організація';
$labels['readstatus'] = 'Статус прочитання';
$labels['listoptions'] = 'Налаштування списку...';
$labels['mailboxlist'] = 'Теки';
$labels['messagesfromto'] = 'Повідомлення з $from по $to із $count';
$labels['threadsfromto'] = 'Обговорення з $from по $to із $count';
$labels['messagenrof'] = 'Лист $nr із $count';
$labels['fromtoshort'] = '$from – $to з $count';
$labels['copy'] = 'Копіювати';
$labels['move'] = 'Перемістити';
$labels['moveto'] = 'Перемістити до...';
$labels['copyto'] = 'Копіювати до…';
$labels['download'] = 'Завантажити';
$labels['open'] = 'Відкрити';
$labels['showattachment'] = 'Показати';
$labels['showanyway'] = 'Все одно показати';
$labels['filename'] = 'Ім\'я файлу';
$labels['filesize'] = 'Розмір файлу';
$labels['addtoaddressbook'] = 'Додати до контактів';
$labels['sun'] = 'Нд';
$labels['mon'] = 'Пн';
$labels['tue'] = 'Вт';
$labels['wed'] = 'Ср';
$labels['thu'] = 'Чт';
$labels['fri'] = 'Пт';
$labels['sat'] = 'Сб';
$labels['sunday'] = 'Неділя';
$labels['monday'] = 'Понеділок';
$labels['tuesday'] = 'Вівторок';
$labels['wednesday'] = 'Середа';
$labels['thursday'] = 'Четвер';
$labels['friday'] = 'П\'ятниця';
$labels['saturday'] = 'Субота';
$labels['jan'] = 'січ';
$labels['feb'] = 'лют';
$labels['mar'] = 'бер';
$labels['apr'] = 'кві';
$labels['may'] = 'тра';
$labels['jun'] = 'чер';
$labels['jul'] = 'лип';
$labels['aug'] = 'сер';
$labels['sep'] = 'вер';
$labels['oct'] = 'жов';
$labels['nov'] = 'лис';
$labels['dec'] = 'гру';
$labels['longjan'] = 'Січень';
$labels['longfeb'] = 'Лютий';
$labels['longmar'] = 'Березень';
$labels['longapr'] = 'Квітень';
$labels['longmay'] = 'Травень';
$labels['longjun'] = 'Червень';
$labels['longjul'] = 'Липень';
$labels['longaug'] = 'Серпень';
$labels['longsep'] = 'Вересень';
$labels['longoct'] = 'Жовтень';
$labels['longnov'] = 'Листопад';
$labels['longdec'] = 'Грудень';
$labels['today'] = 'Сьогодні';
$labels['refresh'] = 'Оновити';
$labels['checkmail'] = 'Перевірити пошту';
$labels['compose'] = 'Написати листа';
$labels['writenewmessage'] = 'Створити нового листа';
$labels['reply'] = 'Відповісти';
$labels['replytomessage'] = 'Відповісти відправнику';
$labels['replytoallmessage'] = 'Відповісти списку або відправнику та усім отримувачам';
$labels['replyall'] = 'Відповісти усім';
$labels['replylist'] = 'Відповісти списку';
$labels['forward'] = 'Переслати';
$labels['forwardinline'] = 'Переслати у тілі листа';
$labels['forwardattachment'] = 'Переслати як прикріплення';
$labels['forwardmessage'] = 'Переслати повідомлення';
$labels['deletemessage'] = 'У кошик';
$labels['movemessagetotrash'] = 'Перемістити лист у кошик';
$labels['printmessage'] = 'Друкувати';
$labels['previousmessage'] = 'Показати попередній лист';
$labels['firstmessage'] = 'Показати перший лист';
$labels['nextmessage'] = 'Показати наступний лист';
$labels['lastmessage'] = 'Показати останній лист';
$labels['backtolist'] = 'До переліку листів';
$labels['viewsource'] = 'Вихідний текст';
$labels['mark'] = 'Помітити';
$labels['markmessages'] = 'Позначити листи';
$labels['markread'] = 'Позначити як прочитане';
$labels['markunread'] = 'Позначити як непрочитане';
$labels['markflagged'] = 'Додати прапорець';
$labels['markunflagged'] = 'Зняти прапорець';
$labels['moreactions'] = 'Інші дії...';
$labels['markallread'] = 'Позначити усі повідомлення прочитаними';
$labels['folders-cur'] = 'Лише обрані теки';
$labels['folders-sub'] = 'Обрана тека і її вкладені теки';
$labels['folders-all'] = 'Усі теки';
$labels['more'] = 'Ще';
$labels['back'] = 'Назад';
$labels['options'] = 'Параметри';
$labels['first'] = 'Перше';
$labels['last'] = 'Останнє';
$labels['previous'] = 'Попереднє';
$labels['next'] = 'Наступне';
$labels['select'] = 'Вибрати';
$labels['all'] = 'Всі';
$labels['none'] = 'Не сортувати';
$labels['currpage'] = 'Поточна сторінка';
$labels['isread'] = 'Прочитано';
$labels['unread'] = 'Непрочитано';
$labels['flagged'] = 'З прапорцем';
$labels['unflagged'] = 'Без прапорця';
$labels['unanswered'] = 'Без відповіді';
$labels['withattachment'] = 'З вкладенням';
$labels['deleted'] = 'Видалено';
$labels['undeleted'] = 'Не видалено';
$labels['replied'] = 'Із відповіддю';
$labels['forwarded'] = 'Переслано';
$labels['invert'] = 'Інвертувати виділення';
$labels['filter'] = 'Фільтр';
$labels['list'] = 'Списком';
$labels['threads'] = 'Гілки';
$labels['expand-all'] = 'Розкрити всі';
$labels['expand-unread'] = 'Розкрити непрочитані';
$labels['collapse-all'] = 'Згорнути всі';
$labels['threaded'] = 'Гілками';
$labels['autoexpand_threads'] = 'Розкривати гілки';
$labels['do_expand'] = 'усі гілки';
$labels['expand_only_unread'] = 'тільки з непрочитаними листами';
$labels['fromto'] = 'Відправник/Одержувач';
$labels['flag'] = 'Позначка';
$labels['attachment'] = 'Вкладення';
$labels['nonesort'] = 'Не сортувати';
$labels['sentdate'] = 'Дата відправлення';
$labels['arrival'] = 'Дата оримання';
$labels['asc'] = 'за зростанням';
$labels['desc'] = 'за спаданням';
$labels['listcolumns'] = 'Атрибути для відображення';
$labels['listsorting'] = 'Сортувати за атрибутом';
$labels['listorder'] = 'Порядок сортування';
$labels['listmode'] = 'Режим перегляду списку';
$labels['layoutlist'] = 'Списком';
$labels['folderactions'] = 'Операції з текою...';
$labels['compact'] = 'Стиснути';
$labels['empty'] = 'Спорожнити';
$labels['importmessages'] = 'Імпорт повідомлень';
$labels['quota'] = 'Використано';
$labels['unknown'] = 'невідомо';
$labels['unlimited'] = 'без обмеження';
$labels['quotatype'] = 'Тип квоти';
$labels['quotatotal'] = 'Ліміт';
$labels['quotaused'] = 'Використано';
$labels['quotastorage'] = 'Розмір простору';
$labels['quotamessage'] = 'Кількість повідомленьй';
$labels['quicksearch'] = 'Швидкий пошук';
$labels['resetsearch'] = 'Очистити пошук';
$labels['searchmod'] = 'Де шукати';
$labels['msgtext'] = 'В усьому листі';
$labels['body'] = 'Тіло повідомлення';
$labels['type'] = 'Тип';
$labels['namex'] = 'Ім\'я';
$labels['searchscope'] = 'Масштаб';
$labels['currentfolder'] = 'Поточна тека';
$labels['subfolders'] = 'Ця і підтека';
$labels['allfolders'] = 'Усі теки';
$labels['searchinterval-1W'] = 'старіші ніж тиждень';
$labels['searchinterval-1M'] = 'старіші ніж місяць';
$labels['searchinterval-1Y'] = 'старіші ніж рік';
$labels['searchinterval1W'] = 'новіші ніж тиждень';
$labels['searchinterval1M'] = 'новіші ніж місяць';
$labels['searchinterval1Y'] = 'новіші ніж рік';
$labels['openinextwin'] = 'Відкрити в новому вікні';
$labels['emlsave'] = 'Зберегти (.eml)';
$labels['changeformattext'] = 'Відображення в текстовому форматі';
$labels['changeformathtml'] = 'Відображення у форматі HTML';
$labels['editasnew'] = 'Редагувати як новий';
$labels['send'] = 'Відправити';
$labels['sendmessage'] = 'Надіслати зараз';
$labels['savemessage'] = 'Зберегти чернетку';
$labels['addattachment'] = 'Вкласти файл';
$labels['charset'] = 'Кодування';
$labels['editortype'] = 'Редактор';
$labels['returnreceipt'] = 'Запит відповіді';
$labels['dsn'] = 'Повідомлення про доставку';
$labels['mailreplyintro'] = '$date, $sender написав:';
$labels['originalmessage'] = 'Оригінальне повідомлення';
$labels['selectimage'] = 'Обрати зображення';
$labels['addimage'] = 'Додати зображення';
$labels['selectmedia'] = 'Обрати відео';
$labels['addmedia'] = 'Додати відео';
$labels['encrypt'] = 'Шифрувати';
$labels['encryptmessage'] = 'Шифрувати повідомлення';
$labels['encryptmessagemailvelope'] = 'Шифрувати повідомлення з Mailvelope';
$labels['importpubkeys'] = 'Імпортувати публічні ключі';
$labels['encryptedsendialog'] = 'Надсилання шифрованого повідомлення';
$labels['keyid'] = 'ID ключа';
$labels['keylength'] = 'Біти';
$labels['keyexpired'] = 'Закінчився';
$labels['keyrevoked'] = 'Відкликаний';
$labels['insert'] = 'Вставити';
$labels['recipient'] = 'Отримувач';
$labels['editidents'] = 'Змінити дані';
$labels['spellcheck'] = 'Орфографія';
$labels['checkspelling'] = 'Перевірити орфографію';
$labels['resumeediting'] = 'Продовжити редагування';
$labels['revertto'] = 'Відмінити редагування';
$labels['restore'] = 'Відновити';
$labels['restoremessage'] = 'ВІдновити повідомлення?';
$labels['ignore'] = 'Ігнорувати';
$labels['responses'] = 'Відповіді';
$labels['insertresponse'] = 'Вставити відповідь';
$labels['manageresponses'] = 'Керувати відповідями';
$labels['newresponse'] = 'Створити нову відповідь';
$labels['addresponse'] = 'Додати відповідь';
$labels['editresponse'] = 'Редагувати відповідь';
$labels['editresponses'] = 'Редагувати відповіді';
$labels['responsename'] = 'Ім\'я';
$labels['responsetext'] = 'Текст відповіді';
$labels['attach'] = 'Вкласти';
$labels['attachments'] = 'Вкладені файли';
$labels['upload'] = 'Прикріпити';
$labels['uploadprogress'] = '$percent ($current із $total)';
$labels['close'] = 'Закрити';
$labels['messageoptions'] = 'Налаштування листів';
$labels['togglecomposeoptions'] = 'Перемкнути опції написання';
$labels['attachmentrename'] = 'Перейменувати вкладення';
$labels['low'] = 'Низький';
$labels['lowest'] = 'Найнижчий';
$labels['normal'] = 'Нормальний';
$labels['high'] = 'Високий';
$labels['highest'] = 'Найвищий';
$labels['nosubject'] = '(без теми)';
$labels['showimages'] = 'Показувати зображення';
$labels['alwaysshow'] = 'Завжди показувати зображення від $sender';
$labels['isdraft'] = 'Це чернетка.';
$labels['andnmore'] = 'ще $nr...';
$labels['togglemoreheaders'] = 'Завантажити ще заголовки повідомлень';
$labels['togglefullheaders'] = 'Показати оригінальні заголовки повідомлення';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Звичайний текст';
$labels['savesentmessagein'] = 'зберегти надісланого листа в';
$labels['dontsave'] = 'не зберігати';
$labels['maxuploadsize'] = 'Максимальний розмір файлу $size';
$labels['addcc'] = 'Додати копію';
$labels['addbcc'] = 'Додати приховану копію';
$labels['addreplyto'] = 'Додати зворотню адресу';
$labels['addfollowupto'] = 'Додати інших отримувачів';
$labels['mdnrequest'] = 'Відправник цього листа запитав про прочитання. Повідомити відправника?';
$labels['receiptread'] = 'Повідомлення про прочитання';
$labels['yourmessage'] = 'Повідомлення про прочитання Вашого листа';
$labels['receiptnote'] = 'Зауваження: Це повідомлення означає лише, що листа було відкрито одержувачем, і не гарантує того, що його було прочитано.';
$labels['name'] = 'Ім\'я для відображення';
$labels['firstname'] = 'Ім`я';
$labels['surname'] = 'Прізвище';
$labels['middlename'] = 'По батькові';
$labels['nameprefix'] = 'Префікс';
$labels['namesuffix'] = 'Суфікс';
$labels['nickname'] = 'Нікнейм';
$labels['jobtitle'] = 'Посада';
$labels['department'] = 'Відділ';
$labels['gender'] = 'Стать';
$labels['maidenname'] = 'Дівоче прізвище';
$labels['email'] = 'Електронна адреса';
$labels['phone'] = 'Телефон';
$labels['address'] = 'Адреса';
$labels['street'] = 'Вулиця';
$labels['locality'] = 'Місто';
$labels['zipcode'] = 'Індекс';
$labels['region'] = 'Область';
$labels['country'] = 'Країна';
$labels['birthday'] = 'День народження';
$labels['anniversary'] = 'Ювілей';
$labels['website'] = 'Веб-сайт';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Примітки';
$labels['male'] = 'чоловіча';
$labels['female'] = 'жіноча';
$labels['manager'] = 'Менеждер';
$labels['assistant'] = 'Помічник';
$labels['spouse'] = 'Шлюбний партнер';
$labels['allfields'] = 'Усі поля';
$labels['search'] = 'Пошук';
$labels['searchresult'] = 'Результат пошуку';
$labels['advsearch'] = 'Розширений пошук';
$labels['advanced'] = 'Додатково';
$labels['other'] = 'Інше';
$labels['printcontact'] = 'Роздрукувати контакт';
$labels['typehome'] = 'Дім';
$labels['typework'] = 'Робота';
$labels['typeother'] = 'Інше';
$labels['typemobile'] = 'Мобільний';
$labels['typemain'] = 'Основний';
$labels['typehomefax'] = 'Домашній факс';
$labels['typeworkfax'] = 'Робочий факс';
$labels['typecar'] = 'Автомобіль';
$labels['typepager'] = 'Пейджер';
$labels['typevideo'] = 'Відео';
$labels['typeassistant'] = 'Помічник';
$labels['typehomepage'] = 'Домашня сторінка';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профіль';
$labels['addfield'] = 'Додати поле...';
$labels['addcontact'] = 'Додати контакт ';
$labels['editcontact'] = 'Редагувати контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Властивості контакта';
$labels['contactnameandorg'] = 'Ім\'я та організація';
$labels['personalinfo'] = 'Особова інформація';
$labels['personal'] = 'Особисті';
$labels['contactphoto'] = 'Фото контакту';
$labels['edit'] = 'Редагувати';
$labels['cancel'] = 'Скасувати';
$labels['save'] = 'Зберегти';
$labels['delete'] = 'Видалити';
$labels['discard'] = 'Відкинути';
$labels['rename'] = 'Перейменувати';
$labels['addphoto'] = 'Додати';
$labels['replacephoto'] = 'Замінити';
$labels['uploadphoto'] = 'Завантажити фотографію';
$labels['newcontact'] = 'Створити новий контакт';
$labels['deletecontact'] = 'Видалити вибрані контакти';
$labels['composeto'] = 'Створити листа для вибранних контактів';
$labels['contactsfromto'] = 'Контакти  $from - $to / $count';
$labels['print'] = 'Друкувати';
$labels['export'] = 'Експортувати';
$labels['exportall'] = 'Експортувати все';
$labels['exportsel'] = 'Експортувати виділені';
$labels['exportvcards'] = 'Експортувати контакти у формат vCard';
$labels['newgroup'] = 'Створити нову групу';
$labels['addgroup'] = 'Додати групу';
$labels['grouprename'] = 'Перейменувати групу';
$labels['groupdelete'] = 'Видалити групу';
$labels['groupremoveselected'] = 'Видалити обрані контакти з групи';
$labels['uponelevel'] = 'На рівень вище';
$labels['previouspage'] = 'Попередня сторінка';
$labels['firstpage'] = 'Перша сторінка';
$labels['nextpage'] = 'Наступна сторінка';
$labels['lastpage'] = 'Остання сторінка';
$labels['group'] = 'Група';
$labels['groups'] = 'Групи';
$labels['listgroup'] = 'Список членів групи';
$labels['personaladrbook'] = 'Персональні адреси';
$labels['searchsave'] = 'Зберегти пошук';
$labels['searchdelete'] = 'Видалити пошук';
$labels['import'] = 'Імпорт';
$labels['importcontacts'] = 'Імпортувати контакти';
$labels['importfromfile'] = 'Імпортувати з файлу';
$labels['importtarget'] = 'Додати контакти до';
$labels['importreplace'] = 'Замінити всю адресну книгу';
$labels['importgroups'] = 'Імпортувати розподіл за групами';
$labels['importgroupsall'] = 'Усі (створити групи за потреби)';
$labels['importgroupsexisting'] = 'Лише для наявних груп';
$labels['done'] = 'Готово';
$labels['settingsfor'] = 'Налаштування для';
$labels['about'] = 'Про програму';
$labels['preferences'] = 'Параметри';
$labels['userpreferences'] = 'Налаштування користувача';
$labels['editpreferences'] = 'Редагувати налаштування користувача';
$labels['identities'] = 'Профілі';
$labels['manageidentities'] = 'Керувати профілями';
$labels['newidentity'] = 'Створити новий профіль';
$labels['addidentity'] = 'Додати профіль';
$labels['editidentity'] = 'Редагувати профіль';
$labels['identityencryption'] = 'Шифрування';
$labels['preferhtml'] = 'Показувати в HTML';
$labels['defaultcharset'] = 'Кодування типово';
$labels['htmlmessage'] = 'Лист у HTML';
$labels['messagepart'] = 'Частина';
$labels['digitalsig'] = 'Цифровий підпис';
$labels['dateformat'] = 'Формат дати';
$labels['timeformat'] = 'Формат часу';
$labels['prettydate'] = 'Дати у зручному форматі';
$labels['setdefault'] = 'Встановити типово';
$labels['autodetect'] = 'Визначати автоматично';
$labels['language'] = 'Мова';
$labels['timezone'] = 'Часовий пояс';
$labels['pagesize'] = 'Рядків на сторінці';
$labels['signature'] = 'Підпис';
$labels['dstactive'] = 'Літній час';
$labels['showinextwin'] = 'Відкрити повідомлення в новому вікні';
$labels['composeextwin'] = 'Створити в новому вікні';
$labels['htmleditor'] = 'Створювати листи в HTML';
$labels['htmlonreply'] = 'тільки у відповідь на HTML-повідомлення';
$labels['htmlonreplyandforward'] = 'під час пересилання або відповіді на HTML-повідомлення ';
$labels['htmlsignature'] = 'Підпис в HTML';
$labels['showemail'] = 'Показувати електронну адресу та ім\'я';
$labels['previewpane'] = 'Показати попередній перегляд';
$labels['skin'] = 'Тема';
$labels['logoutclear'] = 'Очищати кошик при виході';
$labels['logoutcompact'] = 'Стискати теку Вхідні при виході';
$labels['uisettings'] = 'Інтерфейс користувача';
$labels['serversettings'] = 'Налаштування сервера';
$labels['mailboxview'] = 'Вид інтерфейсу';
$labels['mdnrequests'] = 'При запиті повідомлення про прочитання ';
$labels['askuser'] = 'запитати мене ';
$labels['autosend'] = 'відправляти автоматично';
$labels['autosendknown'] = 'відправити повідомлення моїм контактам, в іншому випадку запитати мене';
$labels['autosendknownignore'] = 'відправити повідомлення моїм контактам, в іншому випадку ігнорувати';
$labels['ignorerequest'] = 'ігнорувати запит';
$labels['readwhendeleted'] = 'Позначати як прочитане при видаленні';
$labels['flagfordeletion'] = 'Позначати для видалення замість видалення';
$labels['skipdeleted'] = 'Не показувати видалені листи';
$labels['deletealways'] = 'Видаляти листи при невдалому переміщенні до кошика';
$labels['deletejunk'] = 'Напряму видаляти повідомлення з теки Спам';
$labels['showremoteimages'] = 'Показувати віддалені зображення ';
$labels['fromknownsenders'] = 'від відомих відправників';
$labels['always'] = 'завжди';
$labels['alwaysbutplain'] = 'завжди, окрім відповідей на простий текст';
$labels['showinlineimages'] = 'Показувати вкладені зображення внизу листа';
$labels['autosavedraft'] = 'Автозбереження чернетки';
$labels['everynminutes'] = 'кожні $n хвилин(и)';
$labels['refreshinterval'] = 'Оновити (перевірити нові повідомлення, тощо)';
$labels['never'] = 'ніколи';
$labels['immediately'] = 'одразу';
$labels['messagesdisplaying'] = 'Відображення листів';
$labels['messagescomposition'] = 'Створення листів';
$labels['mimeparamfolding'] = 'Назви вкладень';
$labels['2231folding'] = 'Повний RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (інші поштові клієнти)';
$labels['force7bit'] = 'Використовувати MIME-кодування для 8-бітних символів';
$labels['savelocalstorage'] = "Зберегти у локальному сховищі браузера (тимчасово)";
$labels['advancedoptions'] = 'Додаткові параметри';
$labels['toggleadvancedoptions'] = 'Перемкнути додаткові параметри';
$labels['focusonnewmessage'] = 'Фокусувати вікно браузера при новому листі';
$labels['checkallfolders'] = 'Перевіряти нові листи у всіх теках';
$labels['defaultfont'] = 'Типовий шрифт HTML повідомлення';
$labels['mainoptions'] = 'Основні налаштування';
$labels['browseroptions'] = 'Налаштування браузера';
$labels['section'] = 'Розділ';
$labels['maintenance'] = 'Додатково';
$labels['newmessage'] = 'Новий лист';
$labels['signatureoptions'] = 'Налаштування підпису';
$labels['whenreplying'] = 'При відповіді';
$labels['replyempty'] = 'не цитувати оригінальне повідомлення';
$labels['replytopposting'] = 'починати новий лист перед цитованим';
$labels['replybottomposting'] = 'починати новий лист після цитованого';
$labels['replyremovesignature'] = 'При відповіді видаляти первинний підпис з листа';
$labels['autoaddsignature'] = 'Автоматично додавати підпис';
$labels['newmessageonly'] = 'тільки до нових листів';
$labels['replyandforwardonly'] = 'тільки при відповідях та пересилках';
$labels['insertsignature'] = 'Додати підпис';
$labels['sigbelow'] = 'Поставити підпис під цитованим повідомленням';
$labels['sigseparator'] = 'Ставити стандартний розділювач підписів';
$labels['afternseconds'] = 'через $n секунд';
$labels['reqmdn'] = 'Завжди вимагати повідомлення про доставку';
$labels['reqdsn'] = 'Завжди вимагати повідомлення про статус доставки';
$labels['replysamefolder'] = 'Розмістити відповіді у тій же теці, де знаходиться оригінал';
$labels['defaultabook'] = 'Адресна книга типово';
$labels['autocompletesingle'] = 'Пропускати додаткові адреси в автозавершенні';
$labels['listnamedisplay'] = 'Виводити список контактів як';
$labels['spellcheckbeforesend'] = 'Перевірити орфографію перед відправкою повідомлення';
$labels['spellcheckoptions'] = 'Налаштування перевірки орфографії';
$labels['spellcheckignoresyms'] = 'Ігнорувати слова із символами';
$labels['spellcheckignorenums'] = 'Ігнорувати слова із цифрами';
$labels['spellcheckignorecaps'] = 'Ігнорувати слова з великими буквами';
$labels['addtodict'] = 'Додати до словника';
$labels['mailtoprotohandler'] = 'Зареєструвати обробник для посилань mailto:';
$labels['standardwindows'] = 'Сприймати спливні вікна як звичайні';
$labels['forwardmode'] = 'Пересилання повідомлень';
$labels['inline'] = 'у тексті';
$labels['asattachment'] = 'як вкладення';
$labels['replyallmode'] = 'Типова дія для кнопки [Відповісти всім]';
$labels['replyalldefault'] = 'відповісти усім';
$labels['replyalllist'] = 'відповісти лише списку розсилки (якщо є)';
$labels['allmessages'] = 'всі повідомлення';
$labels['folder'] = 'Тека';
$labels['folders'] = 'Теки';
$labels['foldername'] = 'Назва теки';
$labels['subscribed'] = 'Підписані';
$labels['messagecount'] = 'Листи';
$labels['create'] = 'Створити';
$labels['createfolder'] = 'Створити нову теку';
$labels['managefolders'] = 'Керування теками';
$labels['specialfolders'] = 'Особливі теки';
$labels['properties'] = 'Властивості';
$labels['folderproperties'] = 'Властивості теки';
$labels['parentfolder'] = 'Батьківська тека';
$labels['location'] = 'Розташування';
$labels['info'] = 'Інформація';
$labels['getfoldersize'] = 'Показати розмір теки';
$labels['changesubscription'] = 'Змінити підписку';
$labels['foldertype'] = 'Тип теки';
$labels['personalfolder'] = 'Приватна тека';
$labels['otherfolder'] = 'Тека іншого користувача';
$labels['sharedfolder'] = 'Публічна тека';
$labels['findfolders'] = 'Знайти теки';
$labels['namespace.personal'] = 'Особисті';
$labels['namespace.other'] = 'Інші користувачі';
$labels['namespace.shared'] = 'Поширені';
$labels['encryptioncreatekey'] = 'Створити нову пару ключів';
$labels['encryption'] = 'Шифрування';
$labels['sortby'] = 'Відсортувати за';
$labels['sortasc'] = 'Сортувати за зростанням';
$labels['sortdesc'] = 'Сортувати за спаданням';
$labels['undo'] = 'Відмінити';
$labels['installedplugins'] = 'Встановлені плагіни';
$labels['plugin'] = 'Плагін';
$labels['version'] = 'Версія';
$labels['source'] = 'Джерело';
$labels['license'] = 'Ліцензія';
$labels['support'] = 'Отримати підтримку';
$labels['B'] = 'б';
$labels['KB'] = 'Кб';
$labels['MB'] = 'Мб';
$labels['GB'] = 'Гб';
$labels['unicode'] = 'Юнікод';
$labels['english'] = 'Англійське';
$labels['westerneuropean'] = 'Західноєвропейське';
$labels['easterneuropean'] = 'Східноєвропейське';
$labels['southeasterneuropean'] = 'Південно-Західна Європа';
$labels['baltic'] = 'Балтійське';
$labels['cyrillic'] = 'Кирилиця';
$labels['arabic'] = 'Арабське';
$labels['greek'] = 'Грецьке';
$labels['hebrew'] = 'Іврит';
$labels['turkish'] = 'Турецьке';
$labels['nordic'] = 'Скандинавське';
$labels['thai'] = 'Тайське';
$labels['celtic'] = 'Кельтське';
$labels['vietnamese'] = 'В\'єтнамське';
$labels['japanese'] = 'Японське';
$labels['korean'] = 'Корейське';
$labels['chinese'] = 'Китайське';
$labels['arialabeltopnav'] = 'Управління вікном';
$labels['arialabeltasknav'] = 'Завдання програми';
$labels['arialabeltoolbar'] = 'Панель інструментів програми';
$labels['arialabelactivetask'] = 'Активне завдання';
$labels['arialabelmessagessearchfilter'] = 'Фільтр списку пошти';
$labels['arialabelmailsearchform'] = 'Форма пошуку електронних листів';
$labels['arialabelcontactsearchform'] = 'Форма пошуку контактів';
$labels['arialabelmailquicksearchbox'] = 'Ввід пошуку пошти';
$labels['arialabelquicksearchbox'] = 'Ввід пошуку';
$labels['arialabelfoldersearchfilter'] = 'Фільтр списку тек';
$labels['arialabelfoldersearchform'] = 'Форма пошуку тек';
$labels['arialabelfolderlist'] = 'Вибір теки пошти';
$labels['arialabelmessagelist'] = 'Список повідомлень пошти';
$labels['arialabelmailpreviewframe'] = 'Попередній перегляд повідомлення';
$labels['arialabelmailboxmenu'] = 'Меню дій з теками';
$labels['arialabellistselectmenu'] = 'Меню вибору списку';
$labels['arialabelthreadselectmenu'] = 'Меню списку гілок';
$labels['arialabelmessagelistoptions'] = 'Опції відображення і сортування списку повідомлень';
$labels['arialabelmailimportdialog'] = 'Діалог імпортування повідомлень';
$labels['arialabelmessagenav'] = 'Навігація повідомленнями';
$labels['arialabelmessagebody'] = 'Тіло повідомлення';
$labels['arialabelmessageactions'] = 'Дії з повідомленням';
$labels['arialabelcontactquicksearch'] = 'Форма пошуку контактів';
$labels['arialabelcontactsearchbox'] = 'Ввід пошуку контактів';
$labels['arialabelmessageheaders'] = 'Заголовки повідомлень';
$labels['arialabelforwardingoptions'] = 'Опції пересилання';
$labels['arialabelreplyalloptions'] = 'Опції відповіді всім';
$labels['arialabelmoremessageactions'] = 'Більше дій з повідомленнями';
$labels['arialabelmarkmessagesas'] = 'Позначити обрані повідомлення як…';
$labels['arialabelcomposeoptions'] = 'Опції написання';
$labels['arialabelresponsesmenu'] = 'Меню заготовлених відповідей';
$labels['arialabelattachmentuploadform'] = 'Форма завантаження вкладень';
$labels['arialabelattachmentpreview'] = 'Попередній перегляд вкладення';
$labels['ariasummarycomposecontacts'] = 'Список контактів і груп для вибору одержувачів';
$labels['arialabelcontactexportoptions'] = 'Опції експорту контактів';
$labels['arialabelabookgroupoptions'] = 'Опції адресної книги/групи';
$labels['arialabelpreferencesform'] = 'Форма налаштувань';
$labels['arialabelidentityeditfrom'] = 'Форма редагування профілю';
$labels['arialabelresponseeditfrom'] = 'Форма редагування відповіді';
$labels['arialabelsearchterms'] = 'Умови пошуку';
$labels['helplistnavigation'] = 'Навігація клавіатурою по списку';
$labels['helplistkeyboardnavigation'] = "Стрілки вгору/вниз: Перемістити підсвічення/обирання рядка.
Пробіл: Обрати підсвічений рядок.
Shift + вгору/вниз: Обрати додатковий рядок вище/нижче.
Ctrl + пробіл: Додати підсвічений рядок до вибірки/вилучити з вибірки.";
$labels['helplistkeyboardnavmessages'] = "Стрілки вправо/вліво: розгорнути/згорнути гілку повідомлень (лише у режимі гілок).
Enter: Відкрити обране/підсвічене повідомлення.
Delete: Перемістити обрані повідомлення у Кошик.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Відкрити обраний/підсвічений контакт.";
localization/uk_UA/messages.inc000064400000047043151727150570012564 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Виникла помилка!';
$messages['loginfailed']  = 'Невдала спроба входу';
$messages['cookiesdisabled'] = 'Ваш переглядач не приймає cookie';
$messages['sessionerror'] = 'Ваша сесія застаріла';
$messages['storageerror'] = 'Невдале з\'єднання з IMAP сервером';
$messages['servererror'] = 'Помилка сервера!';
$messages['servererrormsg'] = 'Помилка сервера: $msg';
$messages['accountlocked'] = 'Забагато невдалих спроб входу в систему. Спробуйте пізніше. ';
$messages['connerror'] = 'Помилка з\'єднання (не вдалося зв\'язатися з сервером)!';
$messages['dberror'] = 'Помилка бази даних!';
$messages['windowopenerror'] = 'Спливне вікно було заблоковано!';
$messages['requesttimedout'] = 'Час запиту вийшов';
$messages['errorreadonly'] = 'Неможливо виконати операцію. Тека доступна тільки для читання.';
$messages['errornoperm'] = 'Неможливо виконати операцію. Доступ заборонено';
$messages['erroroverquota'] = 'Неможливо виконати операцію. Немає вільного місця на диску.';
$messages['erroroverquotadelete'] = 'Недостатньо вільного місця на диску. Скористайтесь  SHIFT+DEL для видалення повідомлення.';
$messages['invalidrequest'] = 'Недійсний запит! Дані не збережено.';
$messages['invalidhost'] = 'Недійсне ім\'я сервера.';
$messages['nomessagesfound'] = 'Листів не знайдено';
$messages['mailboxempty'] = 'Поштова скринька порожня';
$messages['nomessages'] = 'Повідомлень немає';
$messages['refreshing'] = 'Оновлення...';
$messages['loading'] = 'Завантаження...';
$messages['uploading'] = 'Файл завантажується...';
$messages['attaching'] = 'Прикріплення файлу…';
$messages['uploadingmany'] = 'Завантаження файлів...';
$messages['loadingdata'] = 'Завантаження даних...';
$messages['checkingmail'] = 'Перевірка нових листів...';
$messages['sendingmessage'] = 'Відправка листа...';
$messages['messagesent'] = 'Лист успішно відправлено';
$messages['savingmessage'] = 'Збереження листа...';
$messages['messagesaved'] = 'Збережено в Чернетках';
$messages['successfullysaved'] = 'Збережено';
$messages['savingresponse'] = 'Збереження тексту відповіді...';
$messages['deleteresponseconfirm'] = 'Справді бажаєте видалити цей текст відповіді?';
$messages['addedsuccessfully'] = 'Контакт успішно доданий до адресної книги.';
$messages['contactexists'] = 'Контакт з такою самою адресою електронної пошти вже існує.';
$messages['contactnameexists'] = 'Контакт з таким самим іменем вже існує.';
$messages['blockedimages'] = 'Задля захисту Вашої приватності, зображення з зовнішніх джерел заблоковано у цьому листі.';
$messages['encryptedmessage'] = 'Лист зашифровано і не може бути відображено. Перепрошуємо!';
$messages['externalmessagedecryption'] = 'Лист зашифровано і не може бути розшифровано розширенням Вашого браузера.';
$messages['nopubkeyfor'] = 'Не знайдено дійсного публічного ключа для $email';
$messages['nopubkeyforsender'] = 'Не знайдено дійсного публічного ключа для профіля Вашого відправника. Ви хочете зашифрувати повідомлення лише для отримувачів?';
$messages['encryptnoattachments'] = 'Уже завантажені прикріплення не можна зашифрувати. Будь ласка, додайте їх заново у редакторі шифрування.';
$messages['searchpubkeyservers'] = 'Хочете пошукати ключі, яких бракує, на серверах публічних ключів?';
$messages['encryptpubkeysfound'] = 'Було знайдено такі публічні ключі: ';
$messages['nocontactsfound'] = 'Контакти не знайдені';
$messages['contactnotfound'] = 'Запитаний контакт не знайдений';
$messages['sendingfailed'] = 'Не вдалося відправити листа';
$messages['senttooquickly'] = 'Будь ласка, зачекайте $sec секунд для відправки листа';
$messages['errorsavingsent'] = 'Помилка при збереженні відправленого повідомлення.';
$messages['errorsaving'] = 'Помилка при збереженні.';
$messages['errormoving'] = 'Не вдалося перемістити лист(и).';
$messages['errorcopying'] = 'Не вдалося скопіювати лист(и).';
$messages['errordeleting'] = 'Не вдалося видалити лист(и).';
$messages['errormarking'] = 'Не вдалося позначити лист(и).';
$messages['deletecontactconfirm']  = 'Ви дійсно бажаєте видалити вибрані контакти?';
$messages['deletegroupconfirm']  = 'Ви дійсно хочете видалити обрану групу?';
$messages['deletemessagesconfirm'] = 'Ви дійсно бажаєте видалити вибрані листи?';
$messages['deletefolderconfirm']  = 'Ви дійсно бажаєте видалити цю теку?';
$messages['purgefolderconfirm']  = 'Справді бажаєте видалити усі листи у цій теці?';
$messages['contactdeleting'] = 'Видалення контакту(ів)...';
$messages['groupdeleting'] = 'Видалення групи...';
$messages['folderdeleting'] = 'Видалення теки...';
$messages['foldermoving'] = 'Переміщення теки...';
$messages['foldersubscribing'] = 'Підписати теку...';
$messages['folderunsubscribing'] = 'Відписати теку...';
$messages['formincomplete'] = 'Заповнено не всі поля';
$messages['noemailwarning'] = 'Будь ласка, введіть коректну адресу електронної пошти';
$messages['nonamewarning']  = 'Будь ласка, введіть ім\'я';
$messages['nopagesizewarning'] = 'Будь ласка, введіть розмір сторінки';
$messages['nosenderwarning'] = 'Будь ласка, введіть адресу електронної пошти відправника';
$messages['norecipientwarning'] = 'Будь ласка, вкажіть принаймні одного отримувача';
$messages['nosubjectwarning']  = 'Не вказано тему листа. Бажаєте вказати її зараз?';
$messages['nobodywarning'] = 'Відправити листа без тексту?';
$messages['restoresavedcomposedata'] = 'Знайдено написаного раніше, але не надісланого листа.\n\nТема: $subject\nЗбережено: $date\n\nХочете відновити це повідомлення?';
$messages['nosearchname'] = 'Будь ласка, введіть ім\'я чи електронну адресу';
$messages['notuploadedwarning'] = 'Деякі вкладення не було завантажено. Будь ласка, зачекайте або скасуйте завантаження.';
$messages['searchsuccessful'] = 'Зайдено $nr листів';
$messages['contactsearchsuccessful'] = '$nr контактів знайдено.';
$messages['searchnomatch'] = 'Пошук не дав результатів.';
$messages['searching'] = 'Пошук...';
$messages['checking'] = 'Перевірка...';
$messages['stillsearching'] = 'Пошук триває…';
$messages['nospellerrors'] = 'Орфографічних помилок не знайдено';
$messages['folderdeleted'] = 'Тека видалена';
$messages['foldersubscribed'] = 'Тека підписана';
$messages['folderunsubscribed'] = 'Тека відписана';
$messages['deletedsuccessfully'] = 'Видалено успішно';
$messages['converting'] = 'Видалення форматування...';
$messages['messageopenerror'] = 'Не вдалося завантажити повідомлення з сервера';
$messages['filelinkerror'] = 'Не вдалося прикріпити файл.';
$messages['fileuploaderror'] = 'Не вдалося вкласти файл';
$messages['filesizeerror'] = 'Розмір вибраного файлу перевищує максимально дозволений ($size)';
$messages['msgsizeerror'] = 'Помилка при додаванні вкладення. Максимальний розмір повідомлення файлу ($size).';
$messages['copysuccess'] = 'Успішно скопійовано $nr контактів';
$messages['movesuccess'] = 'Успішно переміщено $nr контактів';
$messages['copyerror'] = 'Не вдалося скопіювати жодного контакту.';
$messages['moveerror'] = 'Не вдалося перемістити контакти.';
$messages['sourceisreadonly'] = 'Дане джерело адрес доступне лише для читання';
$messages['errorsavingcontact'] = 'Неможливо зберегти адресу контакту';
$messages['movingmessage'] = 'Переміщення листа...';
$messages['copyingmessage'] = 'Копіювання листа...';
$messages['copyingcontact'] = 'Копіювання контакту(ів)...';
$messages['movingcontact'] = 'Перенесення контакту(ів)...';
$messages['deletingmessage'] = 'Видалення листа (ів)';
$messages['markingmessage'] = 'Позначення листа (ів)';
$messages['addingmember'] = 'Додання контакту(ів) до групи...';
$messages['removingmember'] = 'Видалення контакту(ів) з групи...';
$messages['receiptsent'] = 'Повідомлення про прочитання відправлено';
$messages['errorsendingreceipt'] = 'Не вдалося відправити повідомлення про прочитання';
$messages['deleteidentityconfirm'] = 'Ви дійсно бажаєте видалити цей профіль?';
$messages['nodeletelastidentity'] = 'Ви не можете видалити цей профіль, він у Вас останній.';
$messages['forbiddencharacter'] = 'Назва теки містить заборонені символи';
$messages['selectimportfile'] = 'Виберіть файл для завантаження';
$messages['addresswriterror'] = 'Обрана адресна книга недоступна для запису';
$messages['contactaddedtogroup'] = 'Контакти успішно додано до цієї групи';
$messages['contactremovedfromgroup'] = 'Контакти успішно видалено з цієї групи';
$messages['nogroupassignmentschanged'] = 'Розподіл за групами не змінено.';
$messages['importwait'] = 'Імпортування, будь ласка, зачекайте...';
$messages['importformaterror'] = 'Помилка імпорту! Завантажений файл має невідомий формат даних.';
$messages['importconfirm'] = '<b>Успішно імпортовано $inserted контактів</b>';
$messages['importconfirmskipped'] = '<b>Пропущені $skipped наявні записи</b>';
$messages['importmessagesuccess'] = 'Успішно імпортовано $nr повідомлень';
$messages['importmessageerror'] = 'Імпорт не вдався! Завантажений файл не є припустимим повідомленням чи файлом поштової скриньки';
$messages['opnotpermitted'] = 'Дія заборонена!';
$messages['nofromaddress'] = 'Відсутня адреса електронної пошти в обраному профілі';
$messages['editorwarning'] = 'Перемикання типу редактора може призвести до втрати форматування тексту. Хочете продовжити?';
$messages['httpreceivedencrypterror'] = 'Помилка конфігурації. Негайно зверніться до адміністратора. <b>Ваше повідомлення може бути відправлено.</b>';
$messages['smtpconnerror'] = 'Помилка SMTP-сервера ($code): Не вдалося з\'єднатися з сервером';
$messages['smtpautherror'] = 'Помилка SMTP-сервера ($code): Невдала спроба автентифікації';
$messages['smtpfromerror'] = 'Помилка SMTP-сервера ($code): Не вдалося вказати відправника "$from" ($msg)';
$messages['smtptoerror'] = 'Помилка SMTP-сервера ($code): Не вдалося додати отримувача "$to" ($msg)';
$messages['smtprecipientserror'] = 'Помилка SMTP: Не вдалося обробити список отримувачів';
$messages['smtperror'] = 'Помилка SMTP: $msg';
$messages['emailformaterror'] = 'Некоректна адреса електронної пошти: $email';
$messages['toomanyrecipients'] = 'Забагато отримувачів. Зменшіть їх число до $max.';
$messages['maxgroupmembersreached'] = 'Число адрес у групі перевищило максимальні $max.';
$messages['internalerror'] = 'Виникла внутрішня помилка. Будь ласка, спробуйте ще раз.';
$messages['contactdelerror'] = 'Неможливо видалити контакт(и)';
$messages['contactdeleted'] = 'Контакт(и) видалено успішно';
$messages['contactrestoreerror'] = 'Неможливо відновити видалений(і) контакт(и).';
$messages['contactrestored'] = 'Контакт(и) вдало відновлено.';
$messages['groupdeleted'] = 'Група видалена успішно';
$messages['grouprenamed'] = 'Група перейменована успішно';
$messages['groupcreated'] = 'Група створена успішно';
$messages['savedsearchdeleted'] = 'Збережений пошук вдало видалено.';
$messages['savedsearchdeleteerror'] = 'Неможливо видалити збережений пошук.';
$messages['savedsearchcreated'] = 'Збережений пошук вдало створено.';
$messages['savedsearchcreateerror'] = 'Не вдалось створити збережений пошук.';
$messages['messagedeleted'] = 'Лист(и) видалено успішно';
$messages['messagemoved'] = 'Лист(и) переміщено успішно';
$messages['messagemovedtotrash'] = 'Лист(и) переміщено в Корзину успішно';
$messages['messagecopied'] = 'Лист(и) скопійовано успішно';
$messages['messagemarked'] = 'Лист(и) помічено успішно';
$messages['autocompletechars'] = 'Введіть щонайменше $min символів для автозаповнення';
$messages['autocompletemore'] = 'Знайдено багато відповідних записів. Будь ласка, введіть більше символів.';
$messages['namecannotbeempty'] = 'Ім\'я не може бути пустим';
$messages['nametoolong'] = 'Занадто довге ім\'я';
$messages['namedotforbidden'] = 'Назва теки не може починатися з крапки.';
$messages['folderupdated'] = 'Тека успішно оновлена';
$messages['foldercreated'] = 'Тека створена';
$messages['invalidimageformat'] = 'Недійсний формат зображення';
$messages['mispellingsfound'] = 'Знайдено орфографічні помилки у повідомленні.';
$messages['parentnotwritable'] = 'Неможливо створити/перемістити теку до обраної батьківської теки. Нема прав доступу.';
$messages['messagetoobig'] = 'Частина повідомлення занадто велика для опрацювання.';
$messages['noscriptwarning'] = 'Увага: Даний клієнт електронної пошти потрібує Javascript! Щоб використовувати його, необхідно включити підтримку Javascript у налаштуваннях Вашого браузера.';
$messages['messageissent'] = 'Повідомлення уже надіслане, але ще не збережене. Хочете зберегти його зараз?';
$messages['errnotfound'] = 'Файл не знайдено';
$messages['errnotfoundexplain'] = 'Запитане джерело не знайдено!';
$messages['errfailedrequest'] = 'Запит не вдався';
$messages['errauthorizationfailed'] = 'Авторизація не вдалася';
$messages['errunauthorizedexplain'] = 'Не вдалося перевірити, що Ви авторизовані для доступу до цього ресурсу!';
$messages['errrequestcheckfailed'] = 'Перевірка запиту не вдалася';
$messages['errcsrfprotectionexplain'] = "Для Вашого захисту, доступ на цей ресурс убезпечується через CSRF.\nЯкщо Ви бачите це, Ви, напевно, не вийшли з системи перед тим, як залишити веб-аплікацію.\n\nЩоб продовжити, потрібна людська взаємодія.";
$messages['errcontactserveradmin'] = 'Будь ласка, зв\'яжіться зі своїм адміністратором сервера.';
$messages['clicktoresumesession'] = 'Натисніть тут, щоб відновити свою попередню сесію.';
$messages['errcomposesession'] = 'Помилка сесії створення листа';
$messages['errcomposesessionexplain'] = 'Запитана сесія створення не знайдена.';
$messages['clicktocompose'] = 'Натисніть тут, щоб створити нове повідомлення';
localization/gl_ES/labels.inc000064400000061735151727150570012210 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Dámosche a benvida a $product';
$labels['username'] = 'Nome de utente';
$labels['password'] = 'Contrasinal';
$labels['server'] = 'Servidor';
$labels['login'] = 'Acceder';
$labels['logout'] = 'Saír';
$labels['mail'] = 'Caixa de entrada';
$labels['settings'] = 'Axustes persoais';
$labels['addressbook'] = 'Axenda de enderezos';
$labels['inbox'] = 'Caixa de entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Lixo';
$labels['junk'] = 'Correo lixo';
$labels['show_real_foldernames'] = 'Amosar nomes reais para cartafois especiais';
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['sender'] = 'Remitente';
$labels['to'] = 'Destinatario(a)';
$labels['cc'] = 'Copia (Cc)';
$labels['bcc'] = 'Copia oculta (Cco)';
$labels['replyto'] = 'Responder a';
$labels['followupto'] = 'Responder a todos';
$labels['date'] = 'Data';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridade';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Estado da lectura';
$labels['listoptions'] = 'Opcións de lista...';
$labels['mailboxlist'] = 'Cartafoles';
$labels['messagesfromto'] = 'Mensaxes de $from para $to de $count';
$labels['threadsfromto'] = 'Fíos do $from para $to de $count';
$labels['messagenrof'] = 'Mensaxe $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover para...';
$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Amosar';
$labels['showanyway'] = 'Amosar de todos os xeitos';
$labels['filename'] = 'Nome do ficheiro';
$labels['filesize'] = 'Tamaño do ficheiro';
$labels['addtoaddressbook'] = 'Engadir á Axenda de enderezos';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mér';
$labels['thu'] = 'Xov';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sáb';
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Luns';
$labels['tuesday'] = 'Martes';
$labels['wednesday'] = 'Mércores';
$labels['thursday'] = 'Xoves';
$labels['friday'] = 'Venres';
$labels['saturday'] = 'Sábado';
$labels['jan'] = 'Xan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Abr';
$labels['may'] = 'Maio';
$labels['jun'] = 'Xuñ';
$labels['jul'] = 'Xul';
$labels['aug'] = 'Ago';
$labels['sep'] = 'Set';
$labels['oct'] = 'Out';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Xaneiro';
$labels['longfeb'] = 'Febreiro';
$labels['longmar'] = 'Marzo';
$labels['longapr'] = 'Abril';
$labels['longmay'] = 'Maio';
$labels['longjun'] = 'Xuño';
$labels['longjul'] = 'Xullo';
$labels['longaug'] = 'Agosto';
$labels['longsep'] = 'Setembro';
$labels['longoct'] = 'Outubro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Decembro';
$labels['today'] = 'Hoxe';
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Procurar novas mensaxes';
$labels['compose'] = 'Redactar unha mensaxe';
$labels['writenewmessage'] = 'Redactar unha nova mensaxe';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder a mensaxe';
$labels['replytoallmessage'] = 'Responder á persoa remitente e a todas as destinatarias';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder á lista de correo';
$labels['forward'] = 'Reenviar';
$labels['forwardinline'] = 'Reenviar en liña';
$labels['forwardattachment'] = 'Reenviar como anexo';
$labels['forwardmessage'] = 'Reenviar a mensaxe';
$labels['deletemessage'] = 'Eliminar a mensaxe';
$labels['movemessagetotrash'] = 'Mover a mensaxe para o lixo';
$labels['printmessage'] = 'Imprimir esta mensaxe';
$labels['previousmessage'] = 'Amosar a mensaxe anterior';
$labels['firstmessage'] = 'Amosar a primeira mensaxe';
$labels['nextmessage'] = 'Amosar a seguinte mensaxe';
$labels['lastmessage'] = 'Amosar a última mensaxe';
$labels['backtolist'] = 'Voltar á lista de mensaxes';
$labels['viewsource'] = 'Ver código fonte';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar mensaxes';
$labels['markread'] = 'Como lidas';
$labels['markunread'] = 'Como non lidas';
$labels['markflagged'] = 'Como marcadas';
$labels['markunflagged'] = 'Como non marcadas';
$labels['moreactions'] = 'Máis accións...';
$labels['folders-all'] = 'Tódalas cartafoles';
$labels['more'] = 'Máis';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opcións';
$labels['first'] = 'Primeiro';
$labels['last'] = 'Último';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Seguinte';
$labels['select'] = 'Seleccionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Ningunha';
$labels['currpage'] = 'Páxina actual';
$labels['isread'] = 'Ler';
$labels['unread'] = 'Non lidas';
$labels['flagged'] = 'Marcadas';
$labels['unflagged'] = 'Non marcado';
$labels['unanswered'] = 'Non respostadas';
$labels['withattachment'] = 'Con anexo';
$labels['deleted'] = 'Marcadas como eliminadas';
$labels['undeleted'] = 'Non borradas';
$labels['replied'] = 'Respostado';
$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
$labels['threads'] = 'Fíos';
$labels['expand-all'] = 'Expandir todos';
$labels['expand-unread'] = 'Expandir os non lidos';
$labels['collapse-all'] = 'Contraer todos';
$labels['threaded'] = 'Agrupar conversas';
$labels['autoexpand_threads'] = 'Expandir os fíos de mensaxes';
$labels['do_expand'] = 'todos os fíos';
$labels['expand_only_unread'] = 'só con mensaxes non lidas';
$labels['fromto'] = 'De/Para';
$labels['flag'] = 'Marca';
$labels['attachment'] = 'Anexo';
$labels['nonesort'] = 'Ningunha';
$labels['sentdate'] = 'Data de envío';
$labels['arrival'] = 'Data de chegada';
$labels['asc'] = 'ascendente';
$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Enumerar columnas';
$labels['listsorting'] = 'Ordenar en columnas';
$labels['listorder'] = 'Ordenación';
$labels['listmode'] = 'Modo de vista da lista';
$labels['layoutlist'] = 'Lista';
$labels['folderactions'] = 'Accións cos cartafoles';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Baleirar';
$labels['importmessages'] = 'Importar mensaxes';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'descoñecido';
$labels['unlimited'] = 'ilimitado';
$labels['quotatype'] = 'Tipo de quota';
$labels['quotatotal'] = 'Límite';
$labels['quotaused'] = 'Usado';
$labels['quotastorage'] = 'Espazo en disco';
$labels['quotamessage'] = 'Conteo de mensaxes';
$labels['quicksearch'] = 'Busca rápida';
$labels['resetsearch'] = 'Restabelecer a pesquisa';
$labels['searchmod'] = 'Modificadores de pesquisa';
$labels['msgtext'] = 'Toda a mensaxe';
$labels['body'] = 'Corpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
$labels['searchscope'] = 'Alcance';
$labels['currentfolder'] = 'Cartafol actual';
$labels['subfolders'] = 'Esta cartafol e as súas fillas';
$labels['allfolders'] = 'Tódalas cartafoles';
$labels['openinextwin'] = 'Abrir nunha nova xanela';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Amosar en texto plano';
$labels['changeformathtml'] = 'Amosar en HTML';
$labels['editasnew'] = 'Editar como nova';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar a mensaxe agora';
$labels['savemessage'] = 'Gardar a mensaxe como borrador';
$labels['addattachment'] = 'Anexar un ficheiro';
$labels['charset'] = 'Codificación';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Notificación da entrega';
$labels['dsn'] = 'Notificación do estado de envío (DSN)';
$labels['mailreplyintro'] = 'O $date, $sender escribiu:';
$labels['originalmessage'] = 'Mensaxe orixinal';
$labels['selectimage'] = 'Seleccionar imaxe';
$labels['addimage'] = 'Engadir imaxe';
$labels['selectmedia'] = 'Escoller película';
$labels['addmedia'] = 'Engarid película';
$labels['insert'] = 'Inserir';
$labels['recipient'] = 'Persoa destinataria';
$labels['editidents'] = 'Modificar identidades';
$labels['spellcheck'] = 'Ortografía';
$labels['checkspelling'] = 'Revisar a ortografía';
$labels['resumeediting'] = 'Voltar á edición';
$labels['revertto'] = 'Voltar a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = 'Restaurar mensaxe?';
$labels['responses'] = 'Respostas';
$labels['insertresponse'] = 'Inserir unha resposta';
$labels['manageresponses'] = 'Xestionar respostas';
$labels['newresponse'] = 'Crear nova resposta';
$labels['addresponse'] = 'Engadir resposta';
$labels['editresponse'] = 'Editar resposta ';
$labels['editresponses'] = 'Editar respostas';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Texto de resposta';
$labels['attach'] = 'Anexar';
$labels['attachments'] = 'Ficheiros anexos';
$labels['upload'] = 'Cargar';
$labels['close'] = 'Pechar';
$labels['messageoptions'] = 'Opcións da mensaxe...';
$labels['togglecomposeoptions'] = 'Conmutar opcións de redacción';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'A máis baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'A máis alta';
$labels['nosubject'] = '(Sen asunto)';
$labels['showimages'] = 'Amosar as imaxes';
$labels['alwaysshow'] = 'Amosar sempre as imaxes nas mensaxes de $sender';
$labels['isdraft'] = 'Esta mensaxe é un borrador';
$labels['andnmore'] = '$nr máis...';
$labels['togglemoreheaders'] = 'Amosar máis cabecerias';
$labels['togglefullheaders'] = 'Mudar os encabezados das mensaxes';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Só texto';
$labels['savesentmessagein'] = 'Gardar a mensaxe enviada en';
$labels['dontsave'] = 'non gardar';
$labels['maxuploadsize'] = 'O tamaño máximo permitido para o ficheiro é de $size';
$labels['addcc'] = 'Engadir Copia (CC)';
$labels['addbcc'] = 'Engadir Copia oculta (BCC)';
$labels['addreplyto'] = 'Engadir Responder a (Reply-To)';
$labels['addfollowupto'] = 'Engadir Respostar a todos (Followup-To)';
$labels['mdnrequest'] = 'A persoa remitente pediu ser notificada cando a mensaxe for lida. Queres enviar notificación á persoa remitente?';
$labels['receiptread'] = 'Notificación da entrega da mensaxe (lectura)';
$labels['yourmessage'] = 'Esta é unha notificación da entrega da túa mensaxe';
$labels['receiptnote'] = 'Nota: Esta notificación só confirma que a mensaxe se abriu no computador da persoa destinataria. Non asegura que a persoa destinataria a lera ou entendera o seu contido.';
$labels['name'] = 'Nome completo';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Apelidos';
$labels['middlename'] = 'Segundo nome';
$labels['nameprefix'] = 'Forma de tratamento (Prefixo)';
$labels['namesuffix'] = 'Forma de tratamento (Sufixo)';
$labels['nickname'] = 'Alcume';
$labels['jobtitle'] = 'Titulación';
$labels['department'] = 'Departamento';
$labels['gender'] = 'Xénero';
$labels['maidenname'] = 'Nome de solteira';
$labels['email'] = 'Correo Electrónico';
$labels['phone'] = 'Teléfono';
$labels['address'] = 'Enderezo';
$labels['street'] = 'Rúa';
$labels['locality'] = 'Poboación';
$labels['zipcode'] = 'Código postal';
$labels['region'] = 'Provincia';
$labels['country'] = 'País';
$labels['birthday'] = 'Aniversario';
$labels['anniversary'] = 'Aniversario';
$labels['website'] = 'Sitio web';
$labels['instantmessenger'] = 'Mensaxería instantánea';
$labels['notes'] = 'Anotacións';
$labels['male'] = 'home';
$labels['female'] = 'muller';
$labels['manager'] = 'Xerente';
$labels['assistant'] = 'Asistente';
$labels['spouse'] = 'Parella';
$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Procurar';
$labels['advsearch'] = 'Procura avanzada';
$labels['advanced'] = 'Avanzado';
$labels['other'] = 'Outro';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Traballo';
$labels['typeother'] = 'Outro';
$labels['typemobile'] = 'Móbil';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax da casa';
$labels['typeworkfax'] = 'Fax do traballo';
$labels['typecar'] = 'Coche';
$labels['typepager'] = 'Buscapersoas';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Asistente';
$labels['typehomepage'] = 'Páxina principal';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Engadir campo...';
$labels['addcontact'] = 'Engadir contacto';
$labels['editcontact'] = 'Modificar este contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades do contacto';
$labels['contactnameandorg'] = 'Nome e organización';
$labels['personalinfo'] = 'Información persoal';
$labels['contactphoto'] = 'Foto do contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Gardar';
$labels['delete'] = 'Eliminar';
$labels['discard'] = 'Descartar';
$labels['rename'] = 'Mudar o nome';
$labels['addphoto'] = 'Engadir';
$labels['replacephoto'] = 'Substituír';
$labels['uploadphoto'] = 'Subir foto';
$labels['newcontact'] = 'Crear contacto novo';
$labels['deletecontact'] = 'Eliminar os contactos seleccionados';
$labels['composeto'] = 'Redactar mensaxe para';
$labels['contactsfromto'] = 'Contactos do $from ao $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todas';
$labels['exportsel'] = 'Exportar as seleccionadas';
$labels['exportvcards'] = 'Exportar os contactos en formato vCard';
$labels['newgroup'] = 'Crear novo grupo';
$labels['grouprename'] = 'Mudar o nome do grupo';
$labels['groupdelete'] = 'Borrar o grupo';
$labels['groupremoveselected'] = 'Eliminar do grupo os contactos seleccionados';
$labels['uponelevel'] = 'Subir un nivel';
$labels['previouspage'] = 'Amosar o grupo anterior';
$labels['firstpage'] = 'Amosar o primeiro grupo';
$labels['nextpage'] = 'Amosar o seguinte grupo';
$labels['lastpage'] = 'Amosar o último grupo';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Lista de integrantes do grupo';
$labels['personaladrbook'] = 'Enderezos persoais';
$labels['searchsave'] = 'Gardar procura';
$labels['searchdelete'] = 'Eliminar procura';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importtarget'] = 'Engadir contactos a';
$labels['importreplace'] = 'Substituír completamente a Axenda de enderezos';
$labels['importgroups'] = 'Importar atribucións do grupo';
$labels['importgroupsall'] = 'Todos (crear grupos, se for necesario)';
$labels['importgroupsexisting'] = 'Só para os grupos existentes';
$labels['done'] = 'Feito!';
$labels['settingsfor'] = 'Axustes de';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de utente';
$labels['editpreferences'] = 'Editar preferencias de utente';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Administrar identidades';
$labels['newidentity'] = 'Crear identidade nova';
$labels['addidentity'] = 'Engadir identidad';
$labels['editidentity'] = 'Editar identidade';
$labels['preferhtml'] = 'Prefiro HTML';
$labels['defaultcharset'] = 'Xogo de caracteres por omisión';
$labels['htmlmessage'] = 'Mensaxe HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Sinatura dixital';
$labels['dateformat'] = 'Formato da data';
$labels['timeformat'] = 'Formato da hora';
$labels['prettydate'] = 'Data sinalada';
$labels['setdefault'] = 'Usar como predeterminada';
$labels['autodetect'] = 'Detectar automáticamente';
$labels['language'] = 'Lingua';
$labels['timezone'] = 'Zona horaria';
$labels['pagesize'] = 'Liñas por páxina';
$labels['signature'] = 'Sinatura';
$labels['dstactive'] = 'Mudar a hora según horario de verán';
$labels['showinextwin'] = 'Abrir a mensaxe nunha nova xanela';
$labels['composeextwin'] = 'Redactar nunha xanela nova';
$labels['htmleditor'] = 'Redactar mensaxes HTML';
$labels['htmlonreply'] = 'só cando se resposte a unha mensaxe HTML';
$labels['htmlonreplyandforward'] = 'ao reenviar ou respostar a unha mensaxe HTML';
$labels['htmlsignature'] = 'Sinatura HTML';
$labels['showemail'] = 'Amosar enderezo de correo co nome en pantalla';
$labels['previewpane'] = 'Amosar previsualización';
$labels['skin'] = 'Aspecto da interface';
$labels['logoutclear'] = 'Baleirar o lixo ao saír';
$labels['logoutcompact'] = 'Compactar a caixa de entrada ao saír';
$labels['uisettings'] = 'Interface de utente';
$labels['serversettings'] = 'Axustes do servidor';
$labels['mailboxview'] = 'Vista da caixa de correo';
$labels['mdnrequests'] = 'Cando se solicitan notificacións da entrega';
$labels['askuser'] = 'preguntarme que facer';
$labels['autosend'] = 'enviar automáticamente';
$labels['autosendknown'] = 'enviar aos meus contactos, noutros casos preguntar';
$labels['autosendknownignore'] = 'enviar aos meus contactos, noutros casos ignorar';
$labels['readwhendeleted'] = 'Marcar a mensaxe como lida ao eliminar';
$labels['flagfordeletion'] = 'Marcar a mensaxe para eliminar en vez de eliminar';
$labels['skipdeleted'] = 'Non amosar as mensaxes marcadas como eliminadas';
$labels['deletealways'] = 'Se falla Mover mensaxes para o lixo, eliminalas';
$labels['deletejunk'] = 'Borrar automáticamente as mensaxes no cartafol "Correo lixo"';
$labels['showremoteimages'] = 'Amosar as imaxes remotas';
$labels['fromknownsenders'] = 'con remite coñecido';
$labels['always'] = 'sempre';
$labels['showinlineimages'] = 'Amosar as imaxes anexas baixo a mensaxe';
$labels['autosavedraft'] = 'Gardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
$labels['refreshinterval'] = 'Refrescar (buscar novas mensaxes, etc)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'de inmediato';
$labels['messagesdisplaying'] = 'Visualización das mensaxes';
$labels['messagescomposition'] = 'Composición das mensaxes';
$labels['mimeparamfolding'] = 'Nomes dos ficheiros anexos';
$labels['2231folding'] = 'Conforme ao RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Conforme ao RFC 2047 (outros)';
$labels['force7bit'] = 'Usar MIME para codificar caracteres de 8 bits';
$labels['advancedoptions'] = 'Opcións avanzadas';
$labels['toggleadvancedoptions'] = 'Amosar opcións avanzadas';
$labels['focusonnewmessage'] = 'Centrar a xanela do navegador en novas mensaxes';
$labels['checkallfolders'] = 'Procurar novas mensaxes en todos os cartafoles';
$labels['defaultfont'] = 'Fonte por defecto da mensaxe HTML';
$labels['mainoptions'] = 'Opcións principais';
$labels['browseroptions'] = 'Opcións do navegador';
$labels['section'] = 'Sección';
$labels['maintenance'] = 'Mantemento';
$labels['newmessage'] = 'Nova mensaxe';
$labels['signatureoptions'] = 'Opcións da firma';
$labels['whenreplying'] = 'Ao responder';
$labels['replyempty'] = 'non citar a mensaxe orixinal';
$labels['replytopposting'] = 'comezar a nova mensaxe antes da orixinal';
$labels['replybottomposting'] = 'comezar a nova mensaxe despois da orixinal';
$labels['replyremovesignature'] = 'Eliminar a firma do remite ao respostar';
$labels['autoaddsignature'] = 'Engadir firma automáticamente';
$labels['newmessageonly'] = 'só nas mensaxes novas';
$labels['replyandforwardonly'] = 'só nas respostas e reenvíos';
$labels['insertsignature'] = 'Engadir firma';
$labels['afternseconds'] = 'despois de $n segundos';
$labels['reqmdn'] = 'Solicitar sempre unha notificación da entrega';
$labels['reqdsn'] = 'Solicitar sempre unha notificación do estado de envío';
$labels['replysamefolder'] = 'Deixar as respostas no cartafol onde está a mensaxe á que se responde';
$labels['defaultabook'] = 'Caderno de enderezos por defecto';
$labels['autocompletesingle'] = 'Ignorar as direccións alternativas no autocompletado';
$labels['listnamedisplay'] = 'Listar os contactos coma';
$labels['spellcheckbeforesend'] = 'Revisar a ortografía antes de enviar unha mensaxe';
$labels['spellcheckoptions'] = 'Opción da revisión ortográfica';
$labels['spellcheckignoresyms'] = 'Ignorar as palabras con símbolos';
$labels['spellcheckignorenums'] = 'Ignorar as palabras con números';
$labels['spellcheckignorecaps'] = 'Ignorar as palabras escritas en maiúsculas';
$labels['addtodict'] = 'Engadir ao diccionario';
$labels['mailtoprotohandler'] = 'Rexistrar o manexador de protocolo para as ligazóns "mailto:"';
$labels['standardwindows'] = 'Manexar avisos emerxentes como xanelas estándar';
$labels['forwardmode'] = 'Reenvio de mensaxes';
$labels['inline'] = 'inserido';
$labels['asattachment'] = 'coma anexo';
$labels['replyallmode'] = 'Acción dpor defecto do botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder só para a lista (se for atopada)';
$labels['allmessages'] = 'todas as mensaxes';
$labels['folder'] = 'Cartafol';
$labels['folders'] = 'Cartafoles';
$labels['foldername'] = 'Nome do cartafol';
$labels['subscribed'] = 'Subscrito(a)';
$labels['messagecount'] = 'Mensaxes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear un novo cartafol';
$labels['managefolders'] = 'Xestionar cartafoles';
$labels['specialfolders'] = 'Cartafoles especiais';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades do cartafol';
$labels['parentfolder'] = 'Cartafol principal';
$labels['location'] = 'Situación';
$labels['info'] = 'Información';
$labels['getfoldersize'] = 'Preme para calcular o tamaño do cartafol';
$labels['changesubscription'] = 'Preme para mudar a subscrición';
$labels['foldertype'] = 'Tipo do cartafol';
$labels['personalfolder'] = 'Cartafol privado';
$labels['otherfolder'] = 'Cartafol de outra persoa usuaria';
$labels['sharedfolder'] = 'Cartafol público';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orde ascendente';
$labels['sortdesc'] = 'Orde descendente';
$labels['undo'] = 'Desfacer';
$labels['installedplugins'] = 'Complementos instalados';
$labels['plugin'] = 'Complemento';
$labels['version'] = 'Versión';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licenza';
$labels['support'] = 'Obter axuda';
$labels['B'] = 'B';
$labels['KB'] = 'KiB';
$labels['MB'] = 'MiB';
$labels['GB'] = 'GiB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Europeo Occidental';
$labels['easterneuropean'] = 'Europeo Oriental';
$labels['southeasterneuropean'] = 'Europeo Suroriental';
$labels['baltic'] = 'Báltico';
$labels['cyrillic'] = 'Cirílico';
$labels['arabic'] = 'Arábigo';
$labels['greek'] = 'Grego';
$labels['hebrew'] = 'Hebreo';
$labels['turkish'] = 'Turco';
$labels['nordic'] = 'Nórdico';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Celta';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Xaponés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinés';
$labels['arialabeltasknav'] = 'Tarefas da aplicación';
$labels['arialabelactivetask'] = 'Tarefa activa';
$labels['arialabelmessagessearchfilter'] = 'Filtro de listaxe de correo';
$labels['arialabelmailsearchform'] = 'Formulario de busca de mensaxes de correo';
$labels['arialabelcontactsearchform'] = 'Formulario de busca de contactos';
$labels['arialabelmessagelist'] = 'Listaxe de mensaxes de correo';
$labels['arialabelmailpreviewframe'] = 'Previsualización das mensaxes';
$labels['arialabelmailboxmenu'] = 'Menú das accións de cartafol';
$labels['arialabellistselectmenu'] = 'Menú de selección de listaxe';
$labels['arialabelthreadselectmenu'] = 'Menú da listaxe por fíos';
$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensaxes';
$labels['arialabelmessagenav'] = 'Navegación pola mensaxe';
$labels['arialabelmessagebody'] = 'Corpo da mensaxe';
$labels['arialabelmessageactions'] = 'Accións da mensaxe';
$labels['arialabelcontactquicksearch'] = 'Formulario de busca de contactos';
$labels['arialabelmessageheaders'] = 'Cabeceiras da mensaxe';
$labels['arialabelforwardingoptions'] = 'Opcións de "Reenviar"';
$labels['arialabelreplyalloptions'] = 'Opcións de "Respostar a todos"';
$labels['arialabelmoremessageactions'] = 'Máis accións de mensaxe';
$labels['arialabelmarkmessagesas'] = 'Marcar as mensaxes seleccionadas coma...';
$labels['arialabelcomposeoptions'] = 'Opcións de redacción';
$labels['arialabelattachmentuploadform'] = 'Formulario de subida de anexos';
$labels['arialabelattachmentpreview'] = 'Previsualizar anexos';
$labels['arialabelcontactexportoptions'] = 'Opcións do exportado de contactos';
$labels['arialabelabookgroupoptions'] = 'Opcións de axenda de enderezos/grupos';
$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidade';
$labels['arialabelresponseeditfrom'] = 'Formulario de edición de resposta';
$labels['helplistnavigation'] = 'Navegación pola lista con teclado';
$labels['helplistkeyboardnavcontacts'] = "Enter: Abrir o contacto seleccionado.";
localization/gl_ES/messages.inc000064400000030062151727150570012542 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ocurreu un erro!';
$messages['loginfailed']  = 'O contrasinal ou o nome de utente son incorrectos.';
$messages['cookiesdisabled'] = 'O teu navegador non acepta cookies.';
$messages['sessionerror'] = 'A tú sesión non é válida ou expirou.';
$messages['storageerror'] = 'Fallou a conexión co servidor IMAP.';
$messages['servererror'] = 'Erro do servidor!';
$messages['servererrormsg'] = 'Erro do servidor: $msg';
$messages['connerror'] = 'Fallou a conexión co servidor!';
$messages['dberror'] = 'Erro na base de datos!';
$messages['windowopenerror'] = 'Bloquouse a fiestra emerxente!';
$messages['requesttimedout'] = 'A petición expirou';
$messages['errorreadonly'] = 'Non foi posíbel realizar a operación. O cartafol é de só lectura.';
$messages['errornoperm'] = 'Non foi posíbel realizar a operación. Permiso denegado.';
$messages['erroroverquota'] = 'Non se pode realizar a operación, non hai espazo no disco.';
$messages['erroroverquotadelete'] = 'Non hai espazo no disco. Usa Maiúsculas+Supr para borrar unha mensaxe.';
$messages['invalidrequest'] = 'Petición non válida! Non se gardou ningún dato.';
$messages['invalidhost'] = 'O nome do servidor non é válido.';
$messages['nomessagesfound'] = 'Non se atoparon mensaxes nesta caixa de correo.';
$messages['mailboxempty'] = 'O cartafol está baleiro';
$messages['nomessages'] = 'Non hai mensaxes';
$messages['refreshing'] = 'A refrescar...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Cargando ficheiro...';
$messages['uploadingmany'] = 'Cargando ficheiros...';
$messages['loadingdata'] = 'Cargando datos...';
$messages['checkingmail'] = 'Á procura de novas mensaxes...';
$messages['sendingmessage'] = 'Enviando mensaxe...';
$messages['messagesent'] = 'A mensaxe enviouse correctamente.';
$messages['savingmessage'] = 'Gardando mensaxe...';
$messages['messagesaved'] = 'A mensaxe gardouse en "Borradores"';
$messages['successfullysaved'] = 'Gardado correctamente.';
$messages['savingresponse'] = 'Gardar texto de resposta...';
$messages['deleteresponseconfirm'] = 'Realmente queres borrar este texto de resposta?';
$messages['addedsuccessfully'] = 'O contacto engadiuse correctamente á Axenda de enderezos.';
$messages['contactnameexists'] = 'Xa existe un contacto con este nome.';
$messages['blockedimages'] = 'Estanse a bloquear as imaxes remotas para protexer a túa privacidade.';
$messages['encryptedmessage'] = 'Sentímolo! Non se pode amosar a mensaxe porque está cifrada.';
$messages['nocontactsfound'] = 'Non se atoparon contactos.';
$messages['contactnotfound'] = 'Non se atopou o contacto solicitado.';
$messages['sendingfailed'] = 'Fallou o envío da mensaxe.';
$messages['senttooquickly'] = 'Por favor, espera $sec segundos antes de enviar esta mensaxe.';
$messages['errorsavingsent'] = 'Houbo un erro ao gardar a mensaxe enviada.';
$messages['errorsaving'] = 'Houbo un erro ao gardar.';
$messages['errormoving'] = 'Non foi posíbel mover a(s) mensaxe(s).';
$messages['errorcopying'] = 'Non foi posíbel copiar a(s) mensaxe(s).';
$messages['errordeleting'] = 'Non foi posíbel eliminar a(s) mensaxe(s).';
$messages['errormarking'] = 'Non foi posíbel marcar a(s) mensaxe(s).';
$messages['deletecontactconfirm']  = 'Queres eliminar o(s) contacto(s) seleccionado(s)?';
$messages['deletegroupconfirm']  = 'Queres eliminar o grupo seleccionado?';
$messages['deletemessagesconfirm'] = 'Queres eliminar a(s) mensaxe(s) seleccionadas?';
$messages['deletefolderconfirm']  = 'Queres eliminar este cartafol?';
$messages['purgefolderconfirm']  = 'Queres eliminar todas as mensaxes neste cartafol?';
$messages['contactdeleting'] = 'Eliminando o(s) contacto(s)...';
$messages['groupdeleting'] = 'Eliminando o grupo...';
$messages['folderdeleting'] = 'Eliminando o cartafol...';
$messages['foldermoving'] = 'Movendo o cartafol...';
$messages['foldersubscribing'] = 'Subscribindo o cartafol...';
$messages['folderunsubscribing'] = 'Desubscribindo o cartafol...';
$messages['formincomplete'] = 'O formulario non foi completamente cuberto.';
$messages['noemailwarning'] = 'Por favor, engade un enderezo de correo electrónico válido.';
$messages['nonamewarning']  = 'Por favor, engade un nome.';
$messages['nopagesizewarning'] = 'Por favor, engade un tamaño de páxina.';
$messages['norecipientwarning'] = 'Por favor, engade polo menos unha persoa destinataria.';
$messages['nosubjectwarning']  = 'O campo "Asunto" está baleiro. Queres completalo?';
$messages['nobodywarning'] = 'Queres enviar esta mensaxe sen texto?';
$messages['restoresavedcomposedata'] = 'Foi atopada unha mensaxe que non se enviara.\n\nSubject: $subject\nSaved: $date\n\n¿queres restaurar esta mensaxe?';
$messages['nosearchname'] = 'Por favor, engade un nome ou un enderezo de correo electrónico.';
$messages['notuploadedwarning'] = 'Aínda non se cargaron tódolos ficheiros. Por favor, agarde ou cancele a carga.';
$messages['searchsuccessful'] = 'Atopáronse $nr mensaxes.';
$messages['contactsearchsuccessful'] = 'Atopáronse $nr contactos.';
$messages['searchnomatch'] = 'A busca non atopou coincidencias.';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Comprobando...';
$messages['stillsearching'] = 'Buscando...';
$messages['nospellerrors'] = 'Non hai erros ortográficos.';
$messages['folderdeleted'] = 'O cartafol foi eliminado correctamente.';
$messages['foldersubscribed'] = 'O cartafol subscribiuse correctamente.';
$messages['folderunsubscribed'] = 'O cartafol desubscribiuse correctamente.';
$messages['deletedsuccessfully'] = 'Eliminouse correctamente.';
$messages['converting'] = 'Eliminando o formato da mensaxe...';
$messages['messageopenerror'] = 'Non foi posíbel cargar a mensaxe desde o servidor.';
$messages['fileuploaderror'] = 'Fallou a carga do ficheiro.';
$messages['filesizeerror'] = 'O ficheiro cargado é máis grande que o tamaño máximo de $size.';
$messages['copysuccess'] = 'Copiáronse correctamente $nr contactos.';
$messages['movesuccess'] = 'Movidos con suceso $nr contactos.';
$messages['copyerror'] = 'Non foi posíbel copiar contactos.';
$messages['moveerror'] = 'Non foi posíbel mover contactos.';
$messages['sourceisreadonly'] = 'Este enderezo de orixe é de só lectura.';
$messages['errorsavingcontact'] = 'Non foi posíbel gardar o contacto.';
$messages['movingmessage'] = 'Movendo a(s) mensaxe(s)...';
$messages['copyingmessage'] = 'Copiando a(s) mensaxe(s)...';
$messages['copyingcontact'] = 'Copiando o(s) contacto(s)...';
$messages['movingcontact'] = 'Movendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando a(s) mensaxe(s)...';
$messages['markingmessage'] = 'Marcando a(s) mensaxe(s)...';
$messages['addingmember'] = 'Engadindo o(s) contacto(s) ao grupo...';
$messages['removingmember'] = 'Eliminando o(s) contacto(s) do grupo...';
$messages['receiptsent'] = 'A notificación da entrega enviouse correctamente.';
$messages['errorsendingreceipt'] = 'Non foi posíbel enviar a notificación da entrega.';
$messages['deleteidentityconfirm'] = 'Queres eliminar esta identidade?';
$messages['nodeletelastidentity'] = 'Non podes eliminar esta identidade, é a última.';
$messages['forbiddencharacter'] = 'O nome do cartafol contén un caracter non válido.';
$messages['selectimportfile'] = 'Por favor, escolle un ficheiro para cargar.';
$messages['addresswriterror'] = 'Non se pode escribir na Axenda de enderezos que escolleches.';
$messages['contactaddedtogroup'] = 'Engadiuse correctamente o contacto a este grupo.';
$messages['contactremovedfromgroup'] = 'Suprimiuse correctamente o contacto deste grupo.';
$messages['nogroupassignmentschanged'] = 'Non cambiou ningunha asignación de grupo.';
$messages['importwait'] = 'A importar. Por favor, agarda...';
$messages['importformaterror'] = 'Fallou a importación! O ficheiro cargado non contén datos válidos.';
$messages['importconfirm'] = '<b>Importáronse correctamente $inserted contactos</b>';
$messages['importconfirmskipped'] = '<b>Ignoráronse $skipped existing entradas</b>';
$messages['importmessagesuccess'] = 'Importadas $nr mensaxes con éxito';
$messages['importmessageerror'] = 'Fallou a importación! O arquivo subido non é unha mensaxe válida ou un ficheiro de correo';
$messages['opnotpermitted'] = 'Operación non permitida!';
$messages['editorwarning'] = 'Se troca neste intre ao editor de texto plano, vai perder todo o formato do texto. Quere continuar?';
$messages['httpreceivedencrypterror'] = 'Produciuse un erro fatal de configuración. Contacta coa persoa administradora inmediatamente. <b>Non se enviou a túa mensaxe.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): Fallou a conexión co servidor.';
$messages['smtpautherror'] = 'Erro SMTP ($code): Fallou a autenticación.';
$messages['smtpfromerror'] = 'Erro SMTP ($code): Non foi posíbel estabelecer o remite "$from" ($msg).';
$messages['smtptoerror'] = 'Erro SMTP ($code): Non foi posíbel engadir a persoa destinataria "$to" ($msg).';
$messages['smtprecipientserror'] = 'Erro SMTP: Non se pode analizar a lista de persoas destinatarias.';
$messages['smtperror'] = 'Erro SMTP: $msg';
$messages['toomanyrecipients'] = 'Especificou persoas destinatarias de máis. Por favor, redúceas a un máximo de $max.';
$messages['maxgroupmembersreached'] = 'O número de integrantes do grupo excede o máximo de $max.';
$messages['internalerror'] = 'Produciuse un erro interno. Por favor, téntao de novo.';
$messages['contactdelerror'] = 'Non foi posíbel eliminar o(s) contacto(s).';
$messages['contactdeleted'] = 'Borráronse correctamente o(s) contacto(s).';
$messages['contactrestoreerror'] = 'Non foi posíbel restaurar o(s) contacto(s) borrado(s).';
$messages['contactrestored'] = 'Restauráronse correctamente o(s) contacto(s).';
$messages['groupdeleted'] = 'Borrouse correctamente o grupo.';
$messages['grouprenamed'] = 'Mudouse correctamente o nome do grupo.';
$messages['groupcreated'] = 'Creouse correctamente o grupo.';
$messages['savedsearchdeleted'] = 'Borrouse correctamente a busca gardada.';
$messages['savedsearchdeleteerror'] = 'Non foi posíbel eliminar a busca gardada.';
$messages['savedsearchcreated'] = 'Creouse correctamente a busca gardada.';
$messages['savedsearchcreateerror'] = 'Non foi posíbel crear a busca gardada.';
$messages['messagedeleted'] = 'Borráronse correctamente a(s) mensaxe(s).';
$messages['messagemoved'] = 'Movéronse correctamente a(s) mensaxe(s).';
$messages['messagecopied'] = 'Copiáronse correctamente a(s) mensaxe(s).';
$messages['messagemarked'] = 'Marcáronse correctamente a(s) mensaxe(s).';
$messages['autocompletechars'] = 'Engade polo menos $min caracteres para autocompletar.';
$messages['autocompletemore'] = 'Atopáronse máis entradas concidintes. Por favor, engade máis caracteres.';
$messages['namecannotbeempty'] = 'O nome non pode estar baleiro.';
$messages['nametoolong'] = 'O nome é longo de máis.';
$messages['folderupdated'] = 'O cartafol actualizouse correctamente.';
$messages['foldercreated'] = 'O cartafol creouse correctamente.';
$messages['invalidimageformat'] = 'O formato da imaxe non é válido.';
$messages['mispellingsfound'] = 'Atopáronse erros ortográficos na mensaxe.';
$messages['parentnotwritable'] = 'Non foi posíbel crear/mover o cartafol para o cartafol principal que selecionaches porque non tes permisos.';
$messages['messagetoobig'] = 'A mensaxe é demasiado grande para procesala';
$messages['noscriptwarning'] = 'Atención: Este servicio de correo web precisa de Javascript!. Por favor, active javascript nas opción do seu navegador.';
localization/ga_IE/timezones.inc000064400000047764151727150570012744 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'Am Uilíoch Lárnach';
$labels['tz:africa'] = 'An Afraic';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Ādis Ābeba';
$labels['tz:africa:algiers'] = 'Cathair na hAilgéire';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Caireo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conacraí';
$labels['tz:africa:dakar'] = 'Dacár';
$labels['tz:africa:dar_es_salaam'] = 'Dárasalám';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Mapútó';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogaidisiú';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripilí';
$labels['tz:africa:tunis'] = 'Túinis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Meiriceá';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'An Airgintín';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Arúba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbadós';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'an Bheilís';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogotá';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancún';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Greanáda';
$labels['tz:america:guadeloupe'] = 'Guadalúip';
$labels['tz:america:guatemala'] = 'Guatamala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'an Ghuáin';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'La Habana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Iamáice';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Líoma';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Cathair Mheicsiceo';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'Nua Eabhrac';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'An Lár';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Pórtó Ríce';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antartaice';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctach';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'an Áise';
$labels['tz:asia:aden'] = 'Áidin';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = '‘Ammān';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bairéin';
$labels['tz:asia:baku'] = 'Baki';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Béiriút';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brúiné';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'an Damaisc';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Heabrón';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Cong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Iacárta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Iarúsailéim';
$labels['tz:asia:kabul'] = 'Cabúl';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Katmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Cuáit';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Mainile';
$labels['tz:asia:muscat'] = 'Muscáit';
$labels['tz:asia:nicosia'] = 'an Niocóis';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnum Pénh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'P’yŏngyang';
$labels['tz:asia:qatar'] = 'Catar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Ar Riyād';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Súl';
$labels['tz:asia:shanghai'] = 'Shang-hai';
$labels['tz:asia:singapore'] = 'Singeapór';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tóiceo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Ürümqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Eireaván';
$labels['tz:atlantic'] = 'an tAtlantach';
$labels['tz:atlantic:azores'] = 'Na hAsóir';
$labels['tz:atlantic:bermuda'] = 'Beirmiúda';
$labels['tz:atlantic:canary'] = 'Na hOileáin Chanáracha';
$labels['tz:atlantic:cape_verde'] = 'Rinn Verde';
$labels['tz:atlantic:faroe'] = 'Na Scigirí';
$labels['tz:atlantic:madeira'] = 'Maidéara';
$labels['tz:atlantic:reykjavik'] = 'Réicivíc';
$labels['tz:atlantic:south_georgia'] = 'an tSeoirsia Theas';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'an Astráil';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'An Eoraip';
$labels['tz:europe:amsterdam'] = 'Amstardam';
$labels['tz:europe:andorra'] = 'Andóra';
$labels['tz:europe:astrakhan'] = 'an Astracáin';
$labels['tz:europe:athens'] = 'an Aithin';
$labels['tz:europe:belgrade'] = 'Béalgrád';
$labels['tz:europe:berlin'] = 'Beirlín';
$labels['tz:europe:bratislava'] = 'an Bhratasláiv';
$labels['tz:europe:brussels'] = 'An Bhruiséil';
$labels['tz:europe:bucharest'] = 'Búcairist';
$labels['tz:europe:budapest'] = 'Búdaipeist';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Císineá';
$labels['tz:europe:copenhagen'] = 'Cóbanhávan';
$labels['tz:europe:dublin'] = 'Baile Átha Cliath';
$labels['tz:europe:gibraltar'] = 'Giobráltar';
$labels['tz:europe:guernsey'] = 'Geansaí';
$labels['tz:europe:helsinki'] = 'Heilsincí';
$labels['tz:europe:isle_of_man'] = 'Oileán Mhanann';
$labels['tz:europe:istanbul'] = 'Iostanbúl';
$labels['tz:europe:jersey'] = 'Geirsí';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Cív';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Liospóin';
$labels['tz:europe:ljubljana'] = 'Liúibleána';
$labels['tz:europe:london'] = 'Londain';
$labels['tz:europe:luxembourg'] = 'Lucsamburg';
$labels['tz:europe:madrid'] = 'Maidrid';
$labels['tz:europe:malta'] = 'Málta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Mionsc';
$labels['tz:europe:monaco'] = 'Monacó';
$labels['tz:europe:moscow'] = 'Moscó';
$labels['tz:europe:oslo'] = 'Osló';
$labels['tz:europe:paris'] = 'Páras';
$labels['tz:europe:podgorica'] = 'Podgairítse';
$labels['tz:europe:prague'] = 'Prág';
$labels['tz:europe:riga'] = 'Rígea';
$labels['tz:europe:rome'] = 'An Róimh';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Mairíne';
$labels['tz:europe:sarajevo'] = 'Sairéavó';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Scóipé';
$labels['tz:europe:sofia'] = 'Sóifia';
$labels['tz:europe:stockholm'] = 'Stócólm';
$labels['tz:europe:tallinn'] = 'Taillinn';
$labels['tz:europe:tirane'] = 'Tiorána';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vadús';
$labels['tz:europe:vatican'] = 'an Vatacáin';
$labels['tz:europe:vienna'] = 'Vín';
$labels['tz:europe:vilnius'] = 'Vilnias';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Vársá';
$labels['tz:europe:zagreb'] = 'Ságrab';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Oileán na Nollag';
$labels['tz:indian:cocos'] = 'Oileáin Cocos';
$labels['tz:indian:comoro'] = 'Oileáin Chomóra';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Oileáin Mhaildíve';
$labels['tz:indian:mauritius'] = 'Oileán Mhuirís';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'La Réunion';
$labels['tz:pacific'] = 'An tAigéan Ciúin';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Oileán na Cásca';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fidsí';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Na hOileáin Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nárú';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Oileáin Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Taihítí';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/ga_IE/labels.inc000064400000056377151727150570012171 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Fáilte go $product';
$labels['username'] = 'Úsáideoir';
$labels['password'] = 'Pasfhocal';
$labels['server'] = 'Freastalaí';
$labels['login'] = 'Logáil isteach';
$labels['menu'] = 'Roghchlár';
$labels['logout'] = 'Scoir';
$labels['mail'] = 'Postas';
$labels['settings'] = 'Socruithe Pearsanta';
$labels['addressbook'] = 'Leabhair Seoltaí';
$labels['inbox'] = 'Isteach';
$labels['drafts'] = 'Dréachtaí';
$labels['sent'] = 'Amach';
$labels['trash'] = 'Bosca bruscair';
$labels['junk'] = 'Dramhaíl';
$labels['show_real_foldernames'] = 'Taispeáin fíorainmneacha i gcomhair fillteáin faoi leith';
$labels['subject'] = 'Ábhair';
$labels['from'] = 'Seolaí';
$labels['sender'] = 'Seoltóir';
$labels['to'] = 'Chuig';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Cóip cheilte';
$labels['replyto'] = 'Freagair go';
$labels['date'] = 'Dáta';
$labels['size'] = 'Méid';
$labels['priority'] = 'Tosaíocht';
$labels['organization'] = 'Eagraíocht';
$labels['mailboxlist'] = 'Fillteán';
$labels['messagesfromto'] = 'Teachtaireachta as $from go $to as $count';
$labels['messagenrof'] = 'Teachtaireacht $nr as $count';
$labels['fromtoshort'] = '$from – $to as $count';
$labels['copy'] = 'Macasamhlaigh';
$labels['move'] = 'Bog';
$labels['moveto'] = 'Bog chuig...';
$labels['copyto'] = 'Macasamhlaigh chuig...';
$labels['download'] = 'Íosluchtú';
$labels['open'] = 'Oscail';
$labels['showattachment'] = 'Taispeáin';
$labels['showanyway'] = 'Taispeáin é ar aon nós';
$labels['filename'] = 'Ainm an chomhaid';
$labels['filesize'] = 'Toirt';
$labels['addtoaddressbook'] = 'Sábháil i mo leabhair seoltaí';
$labels['sun'] = 'Do';
$labels['mon'] = 'Lu';
$labels['tue'] = 'Má';
$labels['wed'] = 'Cé';
$labels['thu'] = 'Dé';
$labels['fri'] = 'Ao';
$labels['sat'] = 'Sa';
$labels['sunday'] = 'Domhnach';
$labels['monday'] = 'An Luan';
$labels['tuesday'] = 'An Mháirt';
$labels['wednesday'] = 'An Chéadaoin';
$labels['thursday'] = 'An Déardaoin';
$labels['friday'] = 'Aoine';
$labels['saturday'] = 'An Satharn';
$labels['jan'] = 'Ean';
$labels['feb'] = 'Fea';
$labels['mar'] = 'Már';
$labels['apr'] = 'Aib';
$labels['may'] = 'Bea';
$labels['jun'] = 'Mei';
$labels['jul'] = 'Iúi';
$labels['aug'] = 'Lún';
$labels['sep'] = 'MFó';
$labels['oct'] = 'DFó';
$labels['nov'] = 'Sam';
$labels['dec'] = 'Nol';
$labels['longjan'] = 'Eanáir';
$labels['longfeb'] = 'Feabhra';
$labels['longmar'] = 'Márta';
$labels['longapr'] = 'Aibreán';
$labels['longmay'] = 'Bealtaine';
$labels['longjun'] = 'Meitheamh';
$labels['longjul'] = 'Iúil';
$labels['longaug'] = 'Lúnasa';
$labels['longsep'] = 'Meán Fómhair';
$labels['longoct'] = 'Deireadh Fómhair';
$labels['longnov'] = 'Samhain';
$labels['longdec'] = 'Nollaig';
$labels['today'] = 'Inniu';
$labels['refresh'] = 'Athnuaigh';
$labels['checkmail'] = 'Seiceáil chun teachtaireacht nua';
$labels['compose'] = 'Scríobh teachtaireacht';
$labels['writenewmessage'] = 'Scríobh teachtaireacht nua';
$labels['reply'] = 'Freagair';
$labels['replytomessage'] = 'Scríobh freagra chun an seolaí';
$labels['replytoallmessage'] = 'Scríobh freagra chun an seolaí agus na faighteoir';
$labels['replyall'] = 'Freagra gach';
$labels['forward'] = 'Cur ar aghaidh';
$labels['forwardattachment'] = 'Seol ar aghaidh mar cheangaltán é';
$labels['forwardmessage'] = 'Seol ar aghaidh an teachtaireacht';
$labels['bouncemsg'] = 'Athsheol';
$labels['bounce'] = 'Athsheol';
$labels['deletemessage'] = 'Scrois an teachtaireacht';
$labels['movemessagetotrash'] = 'Bog an teachtaireacht chuig an bosca bruscair';
$labels['printmessage'] = 'Clóbhuail an teachtaireacht seo';
$labels['previousmessage'] = 'Taispeáin an teachtaireacht roimhe seo';
$labels['firstmessage'] = 'Taispeáin an chéad teachtaireacht eile';
$labels['nextmessage'] = 'Taispeáin an teachtaireacht ina dhiaidh sin';
$labels['lastmessage'] = 'Taispeáin an teachtaireacht deireanach';
$labels['backtolist'] = 'Téigh ar ais go dtí an liosta teachtaireachta';
$labels['viewsource'] = 'Éiriú bunchód';
$labels['mark'] = 'Rianaigh';
$labels['markmessages'] = 'Rianaigh teachtaireachtaí';
$labels['markread'] = 'Léite';
$labels['markunread'] = 'Mar neamhléite';
$labels['moreactions'] = 'Tuilleadh gníomhartha...';
$labels['markallread'] = 'Rianaigh uile mar léite';
$labels['folders-cur'] = 'An fillteán roghnaithe amháin';
$labels['folders-sub'] = 'An fillteán roghnaithe agus a fhofhillteáin';
$labels['folders-all'] = 'Gach fillteán';
$labels['more'] = 'Tuilleadh';
$labels['back'] = 'Siar';
$labels['options'] = 'Roghanna';
$labels['composeoptions'] = 'Roghanna cumadóireachta';
$labels['optionsandattachments'] = 'Roghanna agus ceangaltáin';
$labels['actions'] = 'Gníomhartha';
$labels['first'] = 'Céad';
$labels['last'] = 'Deireanach';
$labels['previous'] = 'Roimhe';
$labels['next'] = 'Ar aghaidh';
$labels['select'] = 'Roghnaigh';
$labels['selection'] = 'Roghnúchán';
$labels['all'] = 'Uile';
$labels['none'] = 'Dada';
$labels['currpage'] = 'An leathanach reatha';
$labels['isread'] = 'Léite';
$labels['unread'] = 'Neamhléite';
$labels['flagged'] = 'Bratach curtha leis';
$labels['unanswered'] = 'Gan fhreagra';
$labels['withattachment'] = 'Le ceangaltán';
$labels['deleted'] = 'Scriosta';
$labels['undeleted'] = 'Nach bhfuil scriosta';
$labels['replied'] = 'Freagartha';
$labels['forwarded'] = 'Curtha ar aghaidh';
$labels['invert'] = 'Aisiompaigh';
$labels['filter'] = 'Scag';
$labels['list'] = 'Liosta';
$labels['threads'] = 'Snáitheanna';
$labels['expand-all'] = 'Fairsingigh Uile';
$labels['expand-unread'] = 'Fairsingigh na cinn neamhléite';
$labels['collapse-all'] = 'Leacaigh uile';
$labels['threaded'] = 'Snáithithe';
$labels['showunread'] = 'Taispeáin teachtaireachtaí neamhéite';
$labels['do_expand'] = 'gach snáithe';
$labels['expand_only_unread'] = 'le teachtaireachtaí neamhléite amháin';
$labels['fromto'] = 'Ó/Chuig';
$labels['flag'] = 'Cuir Bratach Air';
$labels['attachment'] = 'Ceangaltáin';
$labels['nonesort'] = 'Aon cheann';
$labels['sentdate'] = 'An dáta ar a seoladh é';
$labels['arrival'] = 'An dáta ar a shroich sé ';
$labels['asc'] = 'ag dul suas';
$labels['desc'] = 'ag dul síos';
$labels['layout'] = 'Leagan amach';
$labels['layoutwidescreen'] = 'Scáileán leathan';
$labels['layoutdesktop'] = 'Ríomhaire ar an gcrinlín';
$labels['layoutlist'] = 'Liosta';
$labels['folderactions'] = 'Gníomhartha do na fillteáin...';
$labels['compact'] = 'Comhbhrúigh';
$labels['empty'] = 'Folmhaigh';
$labels['importmessages'] = 'Tabhair teachtaireachtaí isteach';
$labels['quota'] = 'Toilleadh diosca atá athláimhe';
$labels['unknown'] = 'gan aithne';
$labels['unlimited'] = 'gan teorainn';
$labels['quotatotal'] = 'Teorainn';
$labels['quotaused'] = 'Úsáidte';
$labels['quotastorage'] = 'Slí ar an diosca';
$labels['quotamessage'] = 'Líon na dteachtaireachtaí';
$labels['shortheaderdate'] = 'Ar $date';
$labels['shortheaderto'] = 'Chuig $to ar $date';
$labels['shortheaderfrom'] = 'Ó $from ar an $date';
$labels['quicksearch'] = 'Mearcuardaigh';
$labels['searchplaceholder'] = 'Cuardaigh...';
$labels['resetsearch'] = 'Athshocraigh an cuardach';
$labels['msgtext'] = 'An teachtaireacht ar fad';
$labels['body'] = 'Colainn';
$labels['type'] = 'Cineál';
$labels['namex'] = 'Ainm';
$labels['searchscope'] = 'Cuimse';
$labels['currentfolder'] = 'An fillteán reatha';
$labels['subfolders'] = 'An ceann seo agus fofhillteáin';
$labels['allfolders'] = 'Gach fillteán';
$labels['searchinterval-1W'] = 'níos sine ná seachtain';
$labels['searchinterval-1M'] = 'níos sine ná mí';
$labels['searchinterval-1Y'] = 'níos sine ná bliain';
$labels['searchinterval1W'] = 'níos úire na seachtain';
$labels['searchinterval1M'] = 'níos úire ná mí';
$labels['searchinterval1Y'] = 'níos úire ná bliain';
$labels['openinextwin'] = 'Oscail i bhfuinneog nua';
$labels['emlsave'] = 'Íosluchtú (.eml)';
$labels['editasnew'] = 'Cuir in eagar mar cheann nua';
$labels['send'] = 'Seol';
$labels['sendmessage'] = 'Seol mo teachtaireacht láithreach bonn';
$labels['savemessage'] = 'Sábháil an dréachta seo';
$labels['addattachment'] = 'Suimigh Iatán';
$labels['charset'] = 'Foireann carachtar';
$labels['editortype'] = 'Sort eagarthóir';
$labels['returnreceipt'] = 'Admháil léite';
$labels['mailreplyintro'] = 'Ar an $date, scríobh $sender:';
$labels['originalmessage'] = 'An teachtaireacht bhunaidh';
$labels['selectimage'] = 'Roghnaigh íomhá';
$labels['addimage'] = 'Cuir íomhá leis';
$labels['selectmedia'] = 'Roghnaigh scannán';
$labels['addmedia'] = 'Cuir scannán leis';
$labels['encrypt'] = 'Criptigh';
$labels['encryptmessage'] = 'Criptigh an teachtaireacht';
$labels['encryptandsign'] = 'Criptigh agus sínigh';
$labels['keylength'] = 'Bearta';
$labels['keyexpired'] = 'Éagtha';
$labels['keyrevoked'] = 'Aisghairmthe';
$labels['bccinstead'] = 'Bain feidhm as Bcc';
$labels['addheader'] = 'Cuir faighteoir leis (ceanntásc)';
$labels['insert'] = 'Ionsáigh';
$labels['recipient'] = 'Faighteoir';
$labels['spellcheck'] = 'Litrigh';
$labels['checkspelling'] = 'Fiosrú ar mo litriú';
$labels['resumeediting'] = 'Athdhúisigh eagarthóireacht';
$labels['revertto'] = 'Filleadh ar';
$labels['restore'] = 'Cuir ar ais';
$labels['restoremessage'] = 'Cuir an teachtaireacht ar ais?';
$labels['ignore'] = 'Ná bac leis';
$labels['responses'] = 'Freagraí';
$labels['insertresponse'] = 'Cuir isteach freagra';
$labels['newresponse'] = 'Cruthaigh freagra nua';
$labels['addresponse'] = 'Cuir freagra leis';
$labels['editresponse'] = 'Cuir an freagra in eagar';
$labels['editresponses'] = 'Cuir na freagraí in eagar';
$labels['responsename'] = 'Ainm';
$labels['responsetext'] = 'Téacs an fhreagra';
$labels['attach'] = 'Ceangail';
$labels['attachments'] = 'Iatání';
$labels['upload'] = 'Aistriú suas';
$labels['uploadprogress'] = '$percent ($current as $total)';
$labels['close'] = 'Dún';
$labels['messageoptions'] = 'Roghanna teachtaireachtaí...';
$labels['attachmentrename'] = 'Athainmnigh an ceangaltán';
$labels['low'] = 'Íseal';
$labels['lowest'] = 'Is Ísle';
$labels['normal'] = 'Gnách';
$labels['high'] = 'Ard';
$labels['highest'] = 'Is Airde';
$labels['nosubject'] = '(Níl aon Ábhair)';
$labels['showimages'] = 'Taispeáin na híomhánna';
$labels['allow'] = 'Ceadaigh';
$labels['alwaysshow'] = 'Taispeáin íomhánna ó $sender i gcónaí';
$labels['isdraft'] = 'Seo dréachttheachtaireacht.';
$labels['andnmore'] = '$nr eile...';
$labels['details'] = 'Mionsonraí';
$labels['summary'] = 'Achoimre';
$labels['headers'] = 'Ceannteidil';
$labels['allheaders'] = 'Gach ceannteideal...';
$labels['togglemoreheaders'] = 'Taispeáin tuilleadh ceannteidil theachtaireachtaí';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Téacs amháin';
$labels['savesentmessagein'] = 'Coimeád an teachtaireacht seolta i';
$labels['dontsave'] = 'ná coimeád é';
$labels['addcc'] = 'Cuir Cc leis';
$labels['addbcc'] = 'Cuir Bcc leis';
$labels['receiptread'] = 'Admháil fillte (léite)';
$labels['zoomin'] = 'Gluais Isteach';
$labels['zoomout'] = 'Gluais Amach';
$labels['rotate'] = 'Rothlaigh';
$labels['increaseimage'] = 'Méadaigh méid na híomhá';
$labels['decreaseimage'] = 'Laghdaigh méid na híomhá';
$labels['rotateimage'] = 'Rothlaigh an íomhá';
$labels['showtools'] = 'Taispeáin uirlisí don íomhánna';
$labels['hidetools'] = 'Folaigh uirlisí don íomhá';
$labels['name'] = 'Leasainm';
$labels['firstname'] = 'Ainm baiste';
$labels['surname'] = 'Sloinne';
$labels['middlename'] = 'An Dara hAinm';
$labels['nameprefix'] = 'Réimír';
$labels['namesuffix'] = 'Iarmhír';
$labels['nickname'] = 'Leasainm';
$labels['jobtitle'] = 'Teideal oibre';
$labels['department'] = 'Rannóg';
$labels['gender'] = 'Gnéas';
$labels['maidenname'] = 'Sloinne roimh phósadh';
$labels['email'] = 'Ríomhphost';
$labels['phone'] = 'Uimhir ghutháin';
$labels['address'] = 'Seoladh';
$labels['street'] = 'Sráid';
$labels['locality'] = 'Cathair';
$labels['zipcode'] = 'Cód Poist';
$labels['region'] = 'Stát/Cúige';
$labels['country'] = 'Tír';
$labels['birthday'] = 'Lá breithe';
$labels['anniversary'] = 'Cothrom lae';
$labels['website'] = 'Suíomh gréasáin';
$labels['instantmessenger'] = 'TM';
$labels['notes'] = 'Nótaí';
$labels['male'] = 'fireann';
$labels['female'] = 'baineann';
$labels['manager'] = 'Bainisteoir';
$labels['assistant'] = 'Cúntóir';
$labels['spouse'] = 'Céile';
$labels['allfields'] = 'Gach réimse';
$labels['search'] = 'Cuardaigh';
$labels['searchresult'] = 'Toradh an chuardaigh';
$labels['advsearch'] = 'Cuardach casta';
$labels['advanced'] = 'Ardroghanna';
$labels['other'] = 'Eile';
$labels['printcontact'] = 'Cuir an teagmháil i gcló';
$labels['qrcode'] = 'Cód QR';
$labels['typehome'] = 'Baile';
$labels['typework'] = 'Obair';
$labels['typeother'] = 'Eile';
$labels['typemobile'] = 'Soghluaiste';
$labels['typemain'] = 'Príomh';
$labels['typehomefax'] = 'Faics baile';
$labels['typeworkfax'] = 'Faics oibre';
$labels['typecar'] = 'Gluaisteán';
$labels['typepager'] = 'Glaoire';
$labels['typevideo'] = 'Físeán';
$labels['typeassistant'] = 'Cúntóir';
$labels['typehomepage'] = 'Leathanach baile';
$labels['typeblog'] = 'Blag';
$labels['typeprofile'] = 'Beathaisnéisín';
$labels['addfield'] = 'Cuir réimse leis...';
$labels['addcontact'] = 'Cuir teagmháil leis';
$labels['editcontact'] = 'Chuir chara in eagar';
$labels['contacts'] = 'Teagmhálacha';
$labels['contactproperties'] = 'Airíonna na teagmhálaí';
$labels['contactnameandorg'] = 'Ainm agus Eagraíocht';
$labels['personalinfo'] = 'Faisnéis phearsanta';
$labels['personal'] = 'Pearsanta';
$labels['contactphoto'] = 'Grianghraf den teagmhálaí';
$labels['edit'] = 'Athraigh';
$labels['cancel'] = 'Cealaigh';
$labels['save'] = 'Sábháil';
$labels['delete'] = 'Scrios';
$labels['discard'] = 'Cuileáil';
$labels['continue'] = 'Lean ar aghaidh';
$labels['ok'] = 'Tá go maith';
$labels['rename'] = 'Athainmnigh';
$labels['addphoto'] = 'Cuir leis';
$labels['replacephoto'] = 'Ionadaigh';
$labels['uploadphoto'] = 'Uasluchtaigh grianghraf';
$labels['choosefile'] = 'Roghnaigh comhad...';
$labels['choosefiles'] = 'Roghnaigh comhaid...';
$labels['browse'] = 'Siortaigh';
$labels['newcontact'] = 'Cruthaigh teagmháil nua';
$labels['deletecontact'] = 'Scrios na daoine seo';
$labels['composeto'] = 'Scríobh teachtaireacht go';
$labels['contactsfromto'] = 'Daoine as $from to $to as $count';
$labels['print'] = 'Priontáil';
$labels['export'] = 'Easportáil';
$labels['exportall'] = 'Tabhair amach uile';
$labels['exportsel'] = 'Bain amach an ní roghnaithe';
$labels['newgroup'] = 'Cruthaigh baicle nua';
$labels['addgroup'] = 'Cuir baicle leis';
$labels['grouprename'] = 'Athainmnigh an bhaicle';
$labels['groupdelete'] = 'Scrios an bhaicle';
$labels['uponelevel'] = 'Suas';
$labels['previouspage'] = 'Taispeáin an foireann roimhe seo';
$labels['firstpage'] = 'Taispeáin an céad foireann';
$labels['nextpage'] = 'Taispeáin an foireann ina dhiaidh sin';
$labels['lastpage'] = 'Taispeáin an foireann deireanach';
$labels['group'] = 'Baicle';
$labels['groups'] = 'Grúpaí';
$labels['personaladrbook'] = 'Seoltaí Pearsanta';
$labels['searchdelete'] = 'Scrios an cuardach';
$labels['import'] = 'Tabhair isteach';
$labels['importfromfile'] = 'Tabhair isteach ó chomhad';
$labels['importtarget'] = 'Cuir teagmhálaithe le';
$labels['importreplace'] = 'Ionadaigh an leabhar seoltaí iomlán';
$labels['done'] = 'Déanta';
$labels['settingsfor'] = 'Socruithe chun';
$labels['about'] = 'Maidir le';
$labels['preferences'] = 'Tosaíocht';
$labels['userpreferences'] = 'Tosaíocht Pearsanta';
$labels['editpreferences'] = 'Athraigh tosaíocht pearsanta';
$labels['identities'] = 'Céannachtaí';
$labels['addidentity'] = 'Cuir céannacht leis';
$labels['editidentity'] = 'Cuir céannacht in eagar';
$labels['identityencryption'] = 'Criptiúchán';
$labels['preferhtml'] = 'Taispeáin an HTML';
$labels['htmlmessage'] = 'Teachtaireacht HTML';
$labels['messagepart'] = 'Cuid';
$labels['digitalsig'] = 'Síniú Digiteach';
$labels['dateformat'] = 'Leagan amach an dáta';
$labels['timeformat'] = 'Leagan amach an am';
$labels['prettydate'] = 'Dátaí Dheas';
$labels['setdefault'] = 'Socraigh an réamhshocraithe';
$labels['autodetect'] = 'Uathoibríoch';
$labels['language'] = 'Teanga';
$labels['timezone'] = 'Crios ama';
$labels['pagesize'] = 'Rónna in aghaidh gach leathanach';
$labels['signature'] = 'Mana clabhsúir';
$labels['dstactive'] = 'Laethúil um shamhradh';
$labels['showinextwin'] = 'Oscail an teachtaireacht i bhfuinneog nua';
$labels['composeextwin'] = 'Cum i bhfuinneog nua';
$labels['htmleditor'] = 'Scríobh teachtaireachta HTML';
$labels['htmlsignature'] = 'Mana clabhsúir HTML';
$labels['showemail'] = 'Taispeáin an seoladh ríomhphoist leis an ainm taispeána';
$labels['previewpane'] = 'Taispeáin an pána réamhamharc';
$labels['skin'] = 'Craiceann an comhéadain';
$labels['logoutclear'] = 'Glan Bruscar nuair a scoirtear';
$labels['logoutcompact'] = 'Comhbhrúigh an Bosca Isteach nuair a scoirtear';
$labels['uisettings'] = 'Comhéadan';
$labels['serversettings'] = 'Socruithe an Fhreastalaithe';
$labels['mailboxview'] = 'Amharc Bosca Poist';
$labels['askuser'] = 'iarr orm';
$labels['autosend'] = 'seol admháil';
$labels['ignorerequest'] = 'Ná bac leis an iarratas';
$labels['readwhendeleted'] = 'Rianaigh an teachtaireacht mar léite nuair a scriostar í';
$labels['skipdeleted'] = 'Ná taispeáin teachtaireachtaí scriosta';
$labels['fromknownsenders'] = 'ó sheoltóirí a bhfuil aithne orthu';
$labels['always'] = 'riamh';
$labels['showinlineimages'] = 'Taispeáin na híomhánna ceangailte faoin teachtaireacht';
$labels['autosavedraft'] = 'Sábháil dréachta go huathoibríoch';
$labels['everynminutes'] = 'gach $n nóiméad';
$labels['refreshinterval'] = 'Athnuaigh (lorg teachtaireachtaí nua, agus araile)';
$labels['never'] = 'riamh';
$labels['immediately'] = 'láithreach';
$labels['messagesdisplaying'] = 'Ag taispeáint na teachtaireachtaí';
$labels['messagescomposition'] = 'Ag cumadh na teachtaireachtaí';
$labels['2231folding'] = 'RFC 2231 iomlán (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 iomlán (eile)';
$labels['advancedoptions'] = 'Ardroghanna';
$labels['toggleadvancedoptions'] = 'Scoránaigh na hardroghanna';
$labels['focusonnewmessage'] = 'Dírigh fuinneog an líonléitheora ar theachtaireacht nua';
$labels['checkallfolders'] = 'Dearbháil gach fillteán do theachtaireachtaí nua';
$labels['mainoptions'] = 'Príomhroghanna';
$labels['browseroptions'] = 'Roghanna líonléitheora';
$labels['section'] = 'Roinn';
$labels['maintenance'] = 'Cothabháil';
$labels['newmessage'] = 'Teachtaireacht Nua';
$labels['signatureoptions'] = 'Roghanna don Síniú';
$labels['whenreplying'] = 'Nuair atá freagra á thabhairt';
$labels['replyempty'] = 'ná luaigh an teachtaireacht bhunaidh';
$labels['replytopposting'] = 'tosaigh an teachtaireacht nua os cionn an lua';
$labels['replybottomposting'] = 'tosaigh an teachtaireacht nua faoin lua';
$labels['newmessageonly'] = 'teachtaireacht nua amháin';
$labels['replyandforwardonly'] = 'freagraí agus teachtaireachtaí curtha ar aghaidh amháin';
$labels['insertsignature'] = 'Ionsáigh an síniú';
$labels['automarkread'] = 'Rianaigh teachtaireachtaí mar léite';
$labels['afternseconds'] = 'tar éis $n soicindí';
$labels['defaultabook'] = 'An leabhar seoltaí réamhshocraithe';
$labels['privatemode'] = 'Príobháideach (Baile)';
$labels['businessmode'] = 'Gnó (Obair)';
$labels['spellcheckoptions'] = 'Roghanna litreora';
$labels['addtodict'] = 'Cuir leis an bhfoclóir é';
$labels['inline'] = 'i líne';
$labels['asattachment'] = 'mar cheangaltán';
$labels['replyalldefault'] = 'freagair uile';
$labels['allmessages'] = 'gach teachtaireacht';
$labels['folder'] = 'Fillteán';
$labels['folders'] = 'Fillteán';
$labels['foldername'] = 'Ainm fillteán';
$labels['subscribed'] = 'Síntiú';
$labels['messagecount'] = 'Teachtaireachtaí';
$labels['create'] = 'Cruthaigh';
$labels['createfolder'] = 'Cruthaigh fillteán nua';
$labels['managefolders'] = 'Stiúir na fillteán';
$labels['specialfolders'] = 'Sainfhillteáin';
$labels['properties'] = 'Airíonna';
$labels['folderproperties'] = 'Airíonna an fhillteáin';
$labels['parentfolder'] = 'An máthairfhillteán';
$labels['location'] = 'Suíomh';
$labels['info'] = 'Faisnéis';
$labels['getfoldersize'] = 'Brúigh chun méid an fhillteáin a fháil';
$labels['foldertype'] = 'An cineál fillteán';
$labels['personalfolder'] = 'Fillteán príobháideach';
$labels['sharedfolder'] = 'Fillteán poiblí';
$labels['findfolders'] = 'Aimsigh fillteáin';
$labels['findmail'] = 'Aimsigh teachtaireachtaí poist';
$labels['namespace.personal'] = 'Pearsanta';
$labels['namespace.other'] = 'Daoine eile';
$labels['namespace.shared'] = 'Comhroinnte';
$labels['dualuselabel'] = 'Ina bhfuil amháin';
$labels['dualusemail'] = 'teachtaireachtaí';
$labels['dualusefolder'] = 'fillteáin';
$labels['generate'] = 'Cruthaigh';
$labels['openmailvelopesettings'] = 'Oscail Socruithe Mailvelope';
$labels['encryption'] = 'Criptiúchán';
$labels['sortby'] = 'Sórtáil trí';
$labels['sortasc'] = 'Sórtáil in ord méadaitheach';
$labels['sortdesc'] = 'Sórtáil in ord neartaitheach';
$labels['undo'] = 'Cealaigh';
$labels['installedplugins'] = 'Breiseáin suiteáilte';
$labels['plugin'] = 'Breiseán';
$labels['version'] = 'Leagan';
$labels['source'] = 'Foinse';
$labels['license'] = 'Ceadúnas';
$labels['support'] = 'Faigh tacaíocht';
$labels['dateformatY'] = 'BBBB';
$labels['dateformaty'] = 'BB';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'LL';
$labels['dateformatj'] = 'L';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Béarla';
$labels['westerneuropean'] = 'Iarthar na hEorpach';
$labels['easterneuropean'] = 'Oirthear na hEorpa';
$labels['hebrew'] = 'Eabhrais';
$labels['turkish'] = 'Tuircis';
$labels['celtic'] = 'Ceilteach';
$labels['chinese'] = 'Síneach';
$labels['arialabeltopnav'] = 'Rialtán fuinneoige';
$labels['arialabelmailpreviewframe'] = 'Réamhamharc ar an teachtaireacht';
$labels['arialabelmessagebody'] = 'Corp na Teachtaireachta';
$labels['arialabelmessageactions'] = 'Gníomhartha na teachtaireachta';
$labels['arialabelmessageheaders'] = 'Ceanntáisc na teachtaireachta';
$labels['arialabelforwardingoptions'] = 'Roghanna cur ar aghaidh';
$labels['arialabelmarkmessagesas'] = 'Rianaigh na teachtaireachtaí roghnaithe mar...';
$labels['arialabelcomposeoptions'] = 'Roghanna do chumadh teachtaireachta';
$labels['arialabelattachmentmenu'] = 'Roghanna do cheangaltáin';
$labels['arialabelmailtomenu'] = 'Roghanna do sheoltaí ríomhphoist';
$labels['arialabelattachmentpreview'] = 'Réamhamharc ar cheangaltáin';
$labels['arialabelsearchterms'] = 'Téarmaí cuardaigh';
$labels['arialabelimagetools'] = 'Uirlisí don íomhá';
localization/ga_IE/messages.inc000064400000035500151727150570012517 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Tharla botún!';
$messages['loginfailed']  = 'Níor éirigh leis an síniú isteach.';
$messages['cookiesdisabled'] = 'Ní ghlacann do líonléitheoir le fianáin.';
$messages['sessionerror'] = 'Tá an seisiúin neamhbhailí nó as feidhm.';
$messages['storageerror'] = 'Theip ar an iarracht chun nasc leis an bhfreastalaí Prótacal Rochtana Teachtaireachtaí Idirlín (IMAP)';
$messages['servererror'] = 'Botún ar an bhfreastalaí!';
$messages['servererrormsg'] = 'Botún freastalaithe: %msg';
$messages['accountlocked'] = 'Bhí an iomarca iarrachtaí chun síniú isteach nár éirigh leo. Déan iarracht arís níos déanaí.';
$messages['connerror'] = 'Botún nasctha (Theip air an freastalaí a aimsiú)!';
$messages['dberror'] = 'Botún sa bhunachar sonraí!';
$messages['windowopenerror'] = 'Cuireadh bac ar an bhfuinneog aníos!';
$messages['requesttimedout'] = 'D\'imigh an t-iarratas thar am';
$messages['errorreadonly'] = 'Ní féidir an oibríocht sin a dhéanamh. Tá an fillteán inléite amháin.';
$messages['errornoperm'] = 'Ní féidir an oibríocht sin a dhéanamh. Diúltaíodh cead duit.';
$messages['erroroverquota'] = 'Ní féidir an oibríocht sin a dhéanamh. Níl aon slí saor fágtha ar an ndiosc.';
$messages['erroroverquotadelete'] = 'Níl aon slí saor fágtha ar an ndiosca. Brúigh SHIFT+DEL chun teachtaireacht a scriosadh.';
$messages['invalidrequest'] = 'Iarratas neamhbhailí! Níor cuireadh sonraí i dtaisce.';
$messages['invalidhost'] = 'Ainm freastalaithe neamhbhailí.';
$messages['nomessagesfound'] = 'Níor aimsíodh aon teachtaireacht sa bhosca poist seo.';
$messages['loggedout'] = 'Chuir tú deireadh leis an dreas seo. Slán leat!';
$messages['mailboxempty'] = 'Tá an bosca poist folamh';
$messages['nomessages'] = 'Níl teachtaireachtaí ann';
$messages['refreshing'] = 'Ag athnuaigh...';
$messages['loading'] = 'Ag luchtú...';
$messages['uploading'] = 'Ag luchtú an chomhaid...';
$messages['attaching'] = 'Ag ceangail an chomhaid...';
$messages['uploadingmany'] = 'Ag uasluchtú comhaid...';
$messages['loadingdata'] = 'Ag luchtú sonraí...';
$messages['checkingmail'] = 'Ag dearbháil an bhfuil teachtaireachtaí nua ann...';
$messages['sendingmessage'] = 'Ag seoladh na teachtaireachta...';
$messages['messagesent'] = 'Seoladh an teachtaireacht go rathúil.';
$messages['savingmessage'] = 'Ag cur an teachtaireacht i dtaisce...';
$messages['messagesaved'] = 'Cuireadh an teachtaireacht i dtaisce sna Dréachtaí.';
$messages['successfullysaved'] = 'Cuireadh i dtaisce go rathúil é.';
$messages['savingresponse'] = 'Ag cur i dtaisce an téacs freagartha...';
$messages['deleteresponseconfirm'] = 'An bhfuil tú cinnte gur mian leat an téacs freagartha seo a scriosadh?';
$messages['nocontactselected'] = 'Níl teagmhálaí roghnaithe agat fós.';
$messages['addedsuccessfully'] = 'Cuireadh an teagmhálaí go rathúil sa leabhar seoltaí.';
$messages['contactexists'] = 'Tá teagmhálaí leis an seoladh ríomhphoist céanna ann cheana féin.';
$messages['contactnameexists'] = 'Tá teagmhálaí leis an ainm céanna ann cheana féin.';
$messages['blockedimages'] = 'Ar mhaithe le do phríobháideachas a chosaint, tá bac ar íomhánna cianda sa teachtaireacht seo.';
$messages['blockedresources'] = 'Ar mhaithe le do phríobháideachas a chosaint, tá bac ar acmhainní cianda.';
$messages['encryptedmessage'] = 'Is teachtaireacht chriptithe í seo agus ní féidir í a thaispeáint. Is dona linn sin!';
$messages['externalmessagedecryption'] = 'Is teachtaireacht chriptithe í seo agus is féidir í a dhíchriptiú le breiseán ar do líonléitheoir.';
$messages['nopubkeyfor'] = 'Níor aimsíodh eochair phoiblí bhailí i gcomhair $email';
$messages['encryptpubkeysfound'] = 'Aimsíodh na heochracha poiblí seo a leanas:';
$messages['nocontactsfound'] = 'Níor aimsíodh aon duine sa leabhar seoltaí.';
$messages['contactnotfound'] = 'Níor aimsíodh an teagmhálaí atá á lorg agat.';
$messages['sendingfailed'] = 'Theip ar sheoladh na teachtaireachta.';
$messages['senttooquickly'] = 'Fan $sec soic(indí) sula sheolann tú an teachtaireacht seo.';
$messages['errorsavingsent'] = 'Tharla botún fad is a bhí an teachteachtaireacht a sheoladh á cur i dtaisce.';
$messages['errorsaving'] = 'Tharla botún fad is a bhí sí á cur i dtaisce.';
$messages['errormoving'] = 'Níorbh fhéidir na teachtaireachtaí a bhogadh.';
$messages['errorcopying'] = 'Níorbh fhéidir na teachtaireachtaí a mhacasamhlú.';
$messages['errordeleting'] = 'Níorbh fhéidir na teachtaireachtaí a scriosadh.';
$messages['errormarking'] = 'Níorbh fhéidir rian a chur ar na teachtaireachtaí';
$messages['alerttitle'] = 'Aire';
$messages['confirmationtitle'] = 'An bhfuil tú cinnte...';
$messages['deletecontactconfirm']  = 'An bhfuil tú cinnte gur mian leat an daoine roghnaithe a scriosadh?';
$messages['deletegroupconfirm']  = 'An bhfuil tú cinnte gur mian leat an bhaicle roghnaithe a scriosadh?';
$messages['deletemessagesconfirm'] = 'An bhfuil tú cinnte gur mian leat na teachtaireachtaí roghnaithe a scriosadh?';
$messages['deletefolderconfirm']  = 'An bhfuil tú cinnte gur mian leat an fillteán seo a scriosadh?';
$messages['movefolderconfirm']  = 'An mian leat dáiríre an fillteán sin a bhogadh?';
$messages['purgefolderconfirm']  = 'Ar bhfuil tú cinnte gur mian leat gach teachtaireacht sa bhfillteán seo a scriosadh?';
$messages['contactdeleting'] = 'Ag scriosadh na teagmhálacha...';
$messages['groupdeleting'] = 'Ag scriosadh na baicle...';
$messages['folderdeleting'] = 'Ag scriosadh an fhillteáin...';
$messages['foldermoving'] = 'Ag bogadh an fhillteáin...';
$messages['foldersubscribing'] = 'Ag cur síntiús leis an bhfillteán...';
$messages['folderunsubscribing'] = 'Ag baint síntiús den bhfillteán...';
$messages['formincomplete'] = 'Níor líon tú an fhoirm go hiomlán.';
$messages['noemailwarning'] = 'Cuir isteach seoladh ríomhphoist bailí le do thoil.';
$messages['nonamewarning']  = 'Cuir isteach ainm le do thoil.';
$messages['nopagesizewarning'] = 'Cuir isteach méid leathanaigh le do thoil.';
$messages['nosenderwarning'] = 'Cuir isteach seoladh ríomhphoist an tseoltóra.';
$messages['recipientsadded'] = 'Cuireadh faighteoir(í) go rathúil leis.';
$messages['norecipientwarning'] = 'Abair liom faighteoir amhain ar a laghad';
$messages['disclosedrecipwarning'] = 'Feicfidh gach faighteoir seoltaí ríomhphoist a chéile. Chun sin a sheachaint agus a bpríobháideachas a chosaint, is féidir feidhm a bhaint as an réimse Bcc.';
$messages['disclosedreciptitle'] = 'An iomarca faighteoirí poiblí';
$messages['nosubjectwarning']  = 'Níl aon ábhair ar an teachtaireacht, ba mhaith tú déarfaidh mé ábair?';
$messages['nosubjecttitle']  = 'Gan ábhar';
$messages['nobodywarning'] = 'Níl aon teacs san teachtaireacht, ba mhaith tú déarfaidh mé teachtaireacht ar bith?';
$messages['notsentwarning'] = 'Níor seoladh an teachtaireacht seo agus tá athruithe nach cuireadh i dtaisce inti. An mian leat do chuid athruithe a chuileáil?';
$messages['restoresavedcomposedata'] = 'Aimsíodh teachtaireacht a chumadh ach nár seoladh.\n\nÁbhar: $subject\nTaiscthe: $date\n\nAr mhaith leat an teachtaireacht seo a chur ar ais?';
$messages['nosearchname'] = 'Abair liom ainm duine nó seoladh ríomhphost';
$messages['notuploadedwarning'] = 'Níl gach ceangaltán uasluchtaithe fós. Fan le do thoil nó cealaigh an t-uasluchtú.';
$messages['searchsuccessful'] = 'Fuair mé $n teachtaireacht';
$messages['contactsearchsuccessful'] = 'Aimsíodh $nr dteagmhálaí.';
$messages['searchnomatch'] = 'Níor aimsigh an cuardach aon rud.';
$messages['searching'] = 'Ag cuardach...';
$messages['checking'] = 'Ag dearbháil...';
$messages['stillsearching'] = 'Fós ag cuardach...';
$messages['nospellerrors'] = 'Níor aimsíodh aon bhotún litrithe.';
$messages['folderdeleted'] = 'Scriosadh an fillteán.';
$messages['deletedsuccessfully'] = 'D\'éirigh mé, Scrios mé';
$messages['converting'] = 'Scrios mé formáidithe as an teachtaireacht seo';
$messages['messageopenerror'] = 'Níorbh fhéidir an teachtaireacht a luchtú ón bhfreastalaí.';
$messages['filelinkerror'] = 'Níor éirigh leis an gcomhad a cheangail.';
$messages['fileuploaderror'] = 'Theip ar uasluchtú an chomhaid.';
$messages['filesizeerror'] = 'Beigh an comhad ró-mhor. Is ea $size uas-saghas chun admháil léite';
$messages['filecounterror'] = 'Is féidir suas go dtí $count gcomhad a uasluchtú in aon dreas amháin.';
$messages['msgsizeerror'] = 'Theip air comhad a cheangail. Sáraíodh uasmhéid teachtaireachta ($size).';
$messages['copyerror'] = 'Níorbh fhéidir aon teagmháil a mhacasamhlú.';
$messages['moveerror'] = 'Níorbh fhéidir aon teagmháil a bhogadh...';
$messages['sourceisreadonly'] = 'Tá an foinse seolaigh seo inléite amháin';
$messages['errorsavingcontact'] = 'Theip mé, Níl an cumas agam an seolagh seo a sábháil';
$messages['movingmessage'] = 'Ag bogadh na teachtaireachtaí...';
$messages['copyingmessage'] = 'Ag macasamhlú na teachtaireachtaí...';
$messages['copyingcontact'] = 'Ag macasamhlú teagmhálach(a)...';
$messages['movingcontact'] = 'Ag bogadh teachtaireacht(aí)';
$messages['deletingmessage'] = 'Ag scriosadh teachtaireacht(aí)...';
$messages['markingmessage'] = 'Ag cur rian ar theachtaireacht(aí)...';
$messages['addingmember'] = 'Ag cur teagmhálacha leis an mbaicle...';
$messages['removingmember'] = 'Ag baint teagmhálaí (teagmhálaithe) ón mbaicle...';
$messages['receiptsent'] = 'Seoladh admháil léite go rathúil.';
$messages['errorsendingreceipt'] = 'Níorbh fhéidir an admháil a sheoladh.';
$messages['deleteidentityconfirm'] = 'An bhfuil tú cinnte gur mian leat an t-aitheantas seo a scriosadh?';
$messages['nodeletelastidentity'] = 'Ní féidir leat an t-aitheantas seo a scriosadh. Is é an ceann deireanach atá agat.';
$messages['forbiddencharacter'] = 'Tá carachtar neamhcheadaithe in ainm an fhillteáin.';
$messages['selectimportfile'] = 'Roghnaigh comhad le huasluchtú.';
$messages['addresswriterror'] = 'Ní féidir scríobh sa leabhar seoltaí roghnaithe.';
$messages['contactaddedtogroup'] = 'Cuireadh na teagmhálacha go rathúil leis an mbaicle seo.';
$messages['contactremovedfromgroup'] = 'Baineadh teagmhálaithe go rathúil on mbaicle.';
$messages['importwait'] = 'Á tabhairt isteach, fan le do thoil...';
$messages['importmessagesuccess'] = 'Tugadh $nr teachtaireacht isteach go rathúil';
$messages['importmessageerror'] = 'Theip ar an tabhairt isteach! Ní comhad teachtaireachta nó comhad bosca poist bailí é an comhad uasluchtaithe ';
$messages['opnotpermitted'] = 'Níl cead sin a dhéanamh!';
$messages['nofromaddress'] = 'Tá seoladh ríomhphoist ar iarraidh san aitheantas roghnaithe. ';
$messages['smtpconnerror'] = 'Botún SMTP ($code): Theip ar an nasc leis an bhfreastalaí.';
$messages['smtpautherror'] = 'Botún SMTP ($code): Theip ar an bhfíordheimhniú.';
$messages['smtperror'] = 'Botún SMTP: $msg';
$messages['emailformaterror'] = 'Seoladh ríomhphoist neamhbhailí: $email';
$messages['toomanyrecipients'] = 'Tá an iomarca faighteoirí ann. Laghdaigh líon na bhfaighteoir chuig $max.';
$messages['internalerror'] = 'Tharla botún inmheánach. Déan iarracht eile arís le do thoil.';
$messages['contactdelerror'] = 'Níorbh fhéidir na teagmhálaithe a scriosadh.';
$messages['contactdeleted'] = 'Scriosadh na teagmhálaithe go rathúil.';
$messages['contactrestoreerror'] = 'Níorbh fhéidir na teagmhálacha a scriosadh a chur ar ais.';
$messages['contactrestored'] = 'Cuireadh teagmhálaí(ithe) ar ais go rathúil.';
$messages['groupdeleted'] = 'Scriosadh an bhaicle.';
$messages['grouprenamed'] = 'Athainmníodh an bhaicle.';
$messages['groupcreated'] = 'Cruthaíodh an bhaicle.';
$messages['savedsearchdeleteerror'] = 'Níorbh fhéidir an cuardach atá i dtaisce a scriosadh.';
$messages['savedsearchcreateerror'] = 'Níorbh fhéidir cuardach i dtaisce a chruthú.';
$messages['messagedeleted'] = 'Scriosadh na teachtaireachtaí.';
$messages['messagemoved'] = 'Bogadh na teachtaireachtaí go rathúil.';
$messages['messagemovedtotrash'] = 'Bogadh na teachtaireachtaí go dtí Bruscar.';
$messages['messagecopied'] = 'Macasamhlaíodh na teachtaireachtaí.';
$messages['messagemarked'] = 'Cuireadh rian ar na teachtaireachtaí.';
$messages['namecannotbeempty'] = 'Ní féidir leis a bheith gan ainm.';
$messages['nametoolong'] = 'Tá an t-ainm rófhada.';
$messages['namedotforbidden'] = 'Ní féidir lanstád a bheith ag tús ainm an fhillteáin.';
$messages['folderupdated'] = 'Nuashonraíodh an fillteán.';
$messages['foldercreated'] = 'Cruthaíodh an fillteán.';
$messages['invalidimageformat'] = 'Ní formáid íomhá bailí í sin.';
$messages['mispellingsfound'] = 'Aimsíodh botúin litrithe san teachtaireacht.';
$messages['messagetoobig'] = 'Tá an teachtaireacht rómhór le gur féidir obair léi.';
$messages['noscriptwarning'] = 'Rabhadh: Tá Javascript de dhíth ar an gcóras ríomhphoist ghréasáin. Chun feidhm a bhaint as cumasaigh Javascript sna socruithe i líonléitheoir.';
$messages['messageissent'] = 'Seoladh an teachtaireacht seo cheana, ach níor cuireadh i dtaisce fós í. An mian leat í a chur i dtaisce?';
$messages['errnotfound'] = 'Níor Aimsíodh an Comhad';
$messages['errnotfoundexplain'] = 'Níor aimsíodh an acmhainn a lorgadh!';
$messages['errfailedrequest'] = 'Iarratas ar theip air';
$messages['errauthorizationfailed'] = 'Theip ar an bhfíordheimhniú';
$messages['errunauthorizedexplain'] = 'Níorbh fhéidir a fhíordheimhniú go bhfuil cead agat rochtain a fháil ar an seirbhís seo!';
$messages['errcontactserveradmin'] = 'Déan teagmháil le riarthóir d\'fhreastalaí.';
$messages['clicktoresumesession'] = 'Brúigh anseo chun leanúint ar aghaidh le do dhreas roimhe';
$messages['errcomposesession'] = 'Botún i gcum teachtaireacht';
$messages['clicktocompose'] = 'Brúigh anseo chun teachtaireacht nua a chumadh';
$messages['nosupporterror'] = 'Ní thacaíonn do líonléitheoir leis an ngné sin.';
$messages['siginserted'] = 'Cuireadh an síniú isteach go rathúil.';
$messages['responseinserted'] = 'Cuireadh an freagra isteach go rathúil.';
$messages['listempty'] = 'Tá an liosta folamh.';
$messages['listusebutton'] = 'Bain feidhm as an gcnaipe Cruthaigh chun taifead nua a chur leis.';
localization/th_TH/labels.inc000064400000071636151727150570012226 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'ยินดีต้อนรับสู่ $product';
$labels['username'] = 'บัญชีผู้ใช้';
$labels['password'] = 'รหัสผ่าน';
$labels['server'] = 'เซิร์ฟเวอร์';
$labels['login'] = 'เข้าสู่ระบบ';
$labels['menu'] = 'เมนู';
$labels['logout'] = 'ออกจากระบบ';
$labels['mail'] = 'อีเมล์';
$labels['settings'] = 'ปรับแต่งค่าส่วนตัว';
$labels['addressbook'] = 'สมุดรายชื่อ';
$labels['inbox'] = 'กล่องขาเข้า';
$labels['drafts'] = 'กล่องจดหมายร่าง';
$labels['sent'] = 'กล่องขาออก';
$labels['trash'] = 'ถังขยะ';
$labels['junk'] = 'กล่องจดหมายขยะ';
$labels['show_real_foldernames'] = 'แสดงชื่อจริงสำหรับโฟลเดอร์พิเศษ';
$labels['subject'] = 'หัวจดหมาย';
$labels['from'] = 'ผู้ส่ง';
$labels['sender'] = 'ผู้ส่ง';
$labels['to'] = 'ผู้รับ';
$labels['cc'] = 'คัดลอก';
$labels['bcc'] = 'แอบสำเนาถึง';
$labels['replyto'] = 'ตอบกลับ';
$labels['followupto'] = 'ส่งต่อ';
$labels['date'] = 'วันที่';
$labels['size'] = 'ขนาด';
$labels['priority'] = 'ระดับความสำคัญ';
$labels['organization'] = 'องค์กร';
$labels['readstatus'] = 'สถานะการเปิดอ่าน';
$labels['listoptions'] = 'ตัวเลือกการแสดงรายการ';
$labels['listoptionstitle'] = 'รายการตั้งค่า';
$labels['mailboxlist'] = 'กล่องจดหมาย';
$labels['messagesfromto'] = 'จดหมายจาก $from ถึง $to จำนวน $count ฉบับ';
$labels['messagenrof'] = 'จดหมายฉบับที่ $nr จาก $count ฉบับ';
$labels['copy'] = 'คัดลอก';
$labels['move'] = 'ย้าย';
$labels['moveto'] = 'ย้ายไป...';
$labels['copyto'] = 'คัดลอกไป...';
$labels['download'] = 'ดาวน์โหลด';
$labels['open'] = 'เปิด';
$labels['showattachment'] = 'แสดง';
$labels['showanyway'] = 'แสดงตลอด';
$labels['filename'] = 'ชื่อไฟล์';
$labels['filesize'] = 'ขนาดไฟล์';
$labels['addtoaddressbook'] = 'บันทึกในสมุดรายชื่อ';
$labels['sun'] = 'อา';
$labels['mon'] = 'จ';
$labels['tue'] = 'อ';
$labels['wed'] = 'พ';
$labels['thu'] = 'พฤ';
$labels['fri'] = 'ศ';
$labels['sat'] = 'ส';
$labels['sunday'] = 'วันอาทิตย์';
$labels['monday'] = 'วันจันทร์';
$labels['tuesday'] = 'วันอังคาร';
$labels['wednesday'] = 'วันพุธ';
$labels['thursday'] = 'วันพฤหัสบดี';
$labels['friday'] = 'วันศุกร์';
$labels['saturday'] = 'วันเสาร์';
$labels['jan'] = 'ม.ค.';
$labels['feb'] = 'ก.พ.';
$labels['mar'] = 'มี.ค.';
$labels['apr'] = 'เม.ย.';
$labels['may'] = 'พ.ค.';
$labels['jun'] = 'มิ.ย.';
$labels['jul'] = 'ก.ค.';
$labels['aug'] = 'ส.ค.';
$labels['sep'] = 'ก.ย.';
$labels['oct'] = 'ต.ค.';
$labels['nov'] = 'พ.ย.';
$labels['dec'] = 'ธ.ค.';
$labels['longjan'] = 'มกราคม';
$labels['longfeb'] = 'กุมภาพันธ์';
$labels['longmar'] = 'มีนาคม';
$labels['longapr'] = 'เมษายน';
$labels['longmay'] = 'พฤษภาคม';
$labels['longjun'] = 'มิถุนายน';
$labels['longjul'] = 'กรกฎาคม';
$labels['longaug'] = 'สิงหาคม';
$labels['longsep'] = 'กันยายน';
$labels['longoct'] = 'ตุลาคม';
$labels['longnov'] = 'พฤศจิกายน';
$labels['longdec'] = 'ธันวาคม';
$labels['today'] = 'วันนี้';
$labels['refresh'] = 'รีเฟรช';
$labels['checkmail'] = 'ตรวจสอบจดหมายใหม่';
$labels['compose'] = 'เขียนจดหมายใหม่';
$labels['writenewmessage'] = 'สร้างจดหมายใหม่';
$labels['reply'] = 'ตอบกลับ';
$labels['replytomessage'] = 'ตอบกลับจดหมาย';
$labels['replytoallmessage'] = 'ตอบกลับถึงทุกคนในจดหมาย';
$labels['replyall'] = 'ตอบกลับทั้งหมด';
$labels['replylist'] = 'รายชื่อตอบกลับ';
$labels['forward'] = 'ส่งต่อ';
$labels['forwardinline'] = 'ส่งต่อในบรรทัด';
$labels['forwardattachment'] = 'ส่งต่อเป็นไฟล์แนบ';
$labels['forwardmessage'] = 'ส่งต่อจดหมาย';
$labels['bouncemsg'] = 'ส่งอีกครั้ง (ตีกลับ)';
$labels['bounce'] = 'ส่งอีกครั้ง';
$labels['deletemessage'] = 'ลบจดหมาย';
$labels['movemessagetotrash'] = 'ย้ายข้อความไปไว้ในถังขยะ';
$labels['printmessage'] = 'พิมพ์จดหมาย';
$labels['previousmessage'] = 'แสดงจดหมายฉบับที่แล้ว';
$labels['firstmessage'] = 'แสดงจดหมายฉบับแรก';
$labels['nextmessage'] = 'แสดงจดหมายฉบับต่อไป';
$labels['lastmessage'] = 'แสดงจดหมายฉบับล่าสุด';
$labels['backtolist'] = 'กลับไปยังรายการจดหมาย';
$labels['viewsource'] = 'แสดง source';
$labels['mark'] = 'ทำเครื่องหมาย';
$labels['markmessages'] = 'ทำเครื่องหมายข้อความ';
$labels['markread'] = 'ว่าอ่านแล้ว';
$labels['markunread'] = 'ว่ายังไม่ได้อ่าน';
$labels['markflagged'] = 'ถูกตั้งค่าสถานะ';
$labels['markunflagged'] = 'ไม่ถูกตั้งค่าสถานะ';
$labels['moreactions'] = 'การกระทำเพิ่มเติม...';
$labels['markallread'] = 'ทำว่าอ่านแล้ว';
$labels['folders-cur'] = 'เลือกเฉพาะโฟเดอร์';
$labels['folders-sub'] = 'เลือกโฟเดอร์และโฟเดอร์ย่อย';
$labels['folders-all'] = 'ทุกโฟเดอร์';
$labels['more'] = 'เพิ่มเติม';
$labels['back'] = 'ย้อนกลับ';
$labels['options'] = 'ตัวเลือก';
$labels['first'] = 'แรก';
$labels['last'] = 'ล่าสุด';
$labels['previous'] = 'ก่อนหน้า';
$labels['next'] = 'ถัดไป';
$labels['select'] = 'เลือก';
$labels['all'] = 'ทั้งหมด';
$labels['none'] = 'ไม่เลือก';
$labels['currpage'] = 'หน้าปัจจุบัน';
$labels['isread'] = 'อ่าน';
$labels['unread'] = 'จดหมายที่ไม่ได้อ่าน';
$labels['flagged'] = 'ปักธง';
$labels['unflagged'] = 'ไม่ปักธง';
$labels['unanswered'] = 'ยังไม่ได้ตอบ';
$labels['withattachment'] = 'พร้อมแนบ';
$labels['deleted'] = 'ลบแล้ว';
$labels['undeleted'] = 'ยังไม่ได้ลบ';
$labels['replied'] = 'ตอบกลับ';
$labels['forwarded'] = 'ส่งต่อแล้ว';
$labels['invert'] = 'กลับกัน';
$labels['filter'] = 'ตัวกรองข้อมูล';
$labels['list'] = 'รายการ';
$labels['threads'] = 'หัวข้อ';
$labels['expand-all'] = 'แสดงทั้งหมด';
$labels['expand-unread'] = 'แสดงเฉพาะที่ยังไม่ได้อ่าน';
$labels['collapse-all'] = 'ปิดทั้งหมด';
$labels['autoexpand_threads'] = 'ขยายเธรดข้อความ';
$labels['do_expand'] = 'หัวข้อทั้งหมด';
$labels['expand_only_unread'] = 'เฉพาะกับข้อความที่ยังไม่ได้อ่าน';
$labels['fromto'] = 'จาก/ถึง';
$labels['flag'] = 'ปักธง';
$labels['attachment'] = 'ไฟล์แนบ';
$labels['nonesort'] = 'ไม่เลือก';
$labels['sentdate'] = 'วันที่ส่ง';
$labels['arrival'] = 'วันที่มาถึง';
$labels['asc'] = 'เรียงจากน้อยมามาก';
$labels['desc'] = 'เรีียงจากมากไปน้อย';
$labels['listcolumns'] = 'แสดงคอลัมน์';
$labels['listsorting'] = 'จัดเรียงคอลัมน์';
$labels['listorder'] = 'เรียงลำดับ';
$labels['listmode'] = 'โหมดดูรายการ';
$labels['layout'] = 'แบบ';
$labels['layoutwidescreen'] = 'Widescreen';
$labels['layoutdesktop'] = 'เดสก์ทอป';
$labels['layoutlist'] = 'รายการ';
$labels['layoutwidescreendesc'] = 'Widescreen (3-column view)';
$labels['layoutdesktopdesc'] = 'เดสก์ท็อป (รายการแบบกว้าง ๆ และตัวอย่างอีเมลด้านล่าง)';
$labels['layoutlistdesc'] = 'รายการ (ไม่มีตัวอย่างจดหมาย)';
$labels['folderactions'] = 'การทำงานของโฟลเดอร์ ...';
$labels['compact'] = 'แบบย่อ';
$labels['empty'] = 'ว่างเปล่า';
$labels['importmessages'] = 'นำเข้าข้อความ';
$labels['quota'] = 'พื้นที่ใช้งาน';
$labels['unknown'] = 'ไม่ทราบ';
$labels['unlimited'] = 'ไม่จำกัด';
$labels['quotatype'] = 'ประเภทโควต้า';
$labels['quotatotal'] = 'จำกัด';
$labels['quotaused'] = 'ใช้';
$labels['quotastorage'] = 'พื้นที่ว่าง';
$labels['quotamessage'] = 'จำนวนข้อความ';
$labels['quicksearch'] = 'ค้นหาแบบด่วน';
$labels['searchplaceholder'] = 'ค้นหา...';
$labels['resetsearch'] = 'ล้างการค้นหา';
$labels['searchmod'] = 'แก้ไขการค้นหา';
$labels['msgtext'] = 'ทั้งข้อความ';
$labels['body'] = 'เนื้อหา';
$labels['type'] = 'ชนิด';
$labels['namex'] = 'ชื่อ';
$labels['searchscope'] = 'ขอบเขต';
$labels['currentfolder'] = 'โฟลเดอร์ปัจจุบัน';
$labels['subfolders'] = 'โฟลเดอร์นี้และโฟลเดอร์ย่อย';
$labels['allfolders'] = 'ทุกโฟลเดอร์';
$labels['searchinterval-1W'] = 'เก่ากว่าหนึ่งสัปดาห์';
$labels['searchinterval-1M'] = 'เก่ากว่าหนึ่งเดือน';
$labels['searchinterval-1Y'] = 'เก่ากว่าหนึ่งปี';
$labels['searchinterval1W'] = 'น้อยกว่าหนึ่งสัปดาห์';
$labels['searchinterval1M'] = 'น้อยกว่าหนึ่งเดือน';
$labels['searchinterval1Y'] = 'น้อยกว่าหนึ่งปี';
$labels['openinextwin'] = 'เปิดไปหน้าต่างใหม่';
$labels['emlsave'] = 'ดาวน์โหลด (.eml)';
$labels['changeformattext'] = 'แสดงแบบข้อความธรรมดา';
$labels['changeformathtml'] = 'แสดงแบบ HTML';
$labels['editasnew'] = 'แก้ไขใหม่';
$labels['send'] = 'ส่ง';
$labels['sendmessage'] = 'ส่งจดหมาย';
$labels['savemessage'] = 'บันทึกฉบับร่าง';
$labels['addattachment'] = 'แนบไฟล์';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'ประเภทตัวแก้ไข';
$labels['returnreceipt'] = 'ตอบกลับผู้รับ';
$labels['dsn'] = 'การแจ้งเตือนสถานะการจัดส่ง';
$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'ข้อความเดิม';
$labels['selectimage'] = 'เลือกรูป';
$labels['addimage'] = 'เพิ่มรูป';
$labels['selectmedia'] = 'เลือกวีดีโอ';
$labels['addmedia'] = 'เพิ่มวีดีโอ';
$labels['encrypt'] = 'เข้ารหัส';
$labels['encryptmessage'] = 'เข้ารหัสข้อความ';
$labels['encryptmessagemailvelope'] = 'เข้ารหัสข้อความด้วย Mailvelope';
$labels['importpubkeys'] = 'นำเข้าคีย์สาธารณะ';
$labels['encryptedsendialog'] = 'กำลังส่งข้อความที่เข้ารหัส';
$labels['keyid'] = 'คีย์ไอดี';
$labels['keylength'] = 'บิต';
$labels['keyexpired'] = 'หมดอายุ';
$labels['keyrevoked'] = 'ยกเลิก';
$labels['bccinstead'] = 'ใช้สำเนาลับ';
$labels['insert'] = 'แทรก';
$labels['recipient'] = 'ผู้รับ';
$labels['editidents'] = 'แก้ไขข้อมูลประจำตัว';
$labels['spellcheck'] = 'สะกด';
$labels['checkspelling'] = 'ตรวจสอบคำผิด';
$labels['resumeediting'] = 'แก้ไขต่อ';
$labels['revertto'] = 'ย้นกลับไปยัง';
$labels['restore'] = 'กู้คืน';
$labels['restoremessage'] = 'กู้คืนข้อความ?';
$labels['ignore'] = 'ไม่สนใจ';
$labels['responses'] = 'การตอบกลับ';
$labels['insertresponse'] = 'แทรกการตอบกลับ';
$labels['manageresponses'] = 'จัดการตอบกลับ';
$labels['newresponse'] = 'สร้างการตอบกลับใหม่';
$labels['addresponse'] = 'เพิ่มการตอบกลับ';
$labels['editresponse'] = 'แก้ไขการตอบกลับ';
$labels['editresponses'] = 'แก้ไขการตอบกลับ';
$labels['responsename'] = 'ชื่อ';
$labels['responsetext'] = 'ข้อความตอบกลับ';
$labels['attach'] = 'ไฟลแนบ';
$labels['attachments'] = 'ไฟล์แนบ';
$labels['upload'] = 'อัพโหลด';
$labels['uploadprogress'] = '$percent ($current of $total)';
$labels['close'] = 'ปิด';
$labels['messageoptions'] = 'ตั้งค่าข้อความ...';
$labels['togglecomposeoptions'] = 'สลับตัวเลือกองค์ประกอบ';
$labels['attachmentrename'] = 'เปลี่ยนชื่อไฟล์แนบ';
$labels['low'] = 'ต่ำ';
$labels['lowest'] = 'ต่ำสุด';
$labels['normal'] = 'ปกติ';
$labels['high'] = 'สูง';
$labels['highest'] = 'สูงสุด';
$labels['nosubject'] = '(ไม่มีหัวข้อ)';
$labels['showimages'] = 'แสดงรูป';
$labels['alwaysshow'] = 'โชว์รูปจาก $sender เสมอ';
$labels['isdraft'] = 'นี้คือจดหมายร่าง';
$labels['andnmore'] = '$nr อื่น...';
$labels['togglemoreheaders'] = 'โชว์หัวจดหมายเพิ่มเติม';
$labels['togglefullheaders'] = 'Toggle raw message headers';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plain text';
$labels['savesentmessagein'] = 'บันทึกจดหมายขาออกที่';
$labels['dontsave'] = 'ไม่บันทึก';
$labels['maxuploadsize'] = 'ขนาดไฟล์สูงสุดที่อนุญาตคือ $size';
$labels['addcc'] = 'เพิ่ม สำเนาถึง';
$labels['addbcc'] = 'เพิ่มสำเนาลับ';
$labels['addreplyto'] = 'เพิ่ม ตอบกลับ ถึง';
$labels['addfollowupto'] = 'เพิ่ม ส่งต่อ ถึง';
$labels['mdnrequest'] = 'ผู้ส่งข้อความนี้ได้ขอให้คุณได้รับแจ้งเมื่อคุณอ่านข้อความนี้ คุณต้องการแจ้งผู้ส่งหรือไม่?';
$labels['receiptread'] = 'ยืนยันการอ่าน';
$labels['yourmessage'] = 'นี่คือการตอบรับการอ่าน สำหรับข้อความของคุณ';
$labels['receiptnote'] = 'หมายเหตุ: ข้อความของคุณถูกเปิดอ่าน ไม่มีการรับประกันว่าผู้รับได้อ่านหรือเข้าใจเนื้อหาของข้อความแล้ว';
$labels['name'] = 'ชื่อแสดง';
$labels['firstname'] = 'ชื่อ';
$labels['surname'] = 'สกุล';
$labels['middlename'] = 'ชื่อกลาง';
$labels['nameprefix'] = 'คำนำหน้า';
$labels['namesuffix'] = 'คำต่อท้ายชื่อ';
$labels['nickname'] = 'ชื่อเล่น';
$labels['jobtitle'] = 'ตำแหน่งงาน';
$labels['department'] = 'แผนก';
$labels['gender'] = 'เพศ';
$labels['maidenname'] = 'นามสกุลเดิม';
$labels['email'] = 'อีเมล์';
$labels['phone'] = 'โทรศัพท์';
$labels['address'] = 'ที่อยู่';
$labels['street'] = 'ถนน';
$labels['locality'] = 'เมือง';
$labels['zipcode'] = 'รหัสไปรษณีย์';
$labels['region'] = 'รัฐ/จังหวัด';
$labels['country'] = 'ประเทศ';
$labels['birthday'] = 'วันเกิด';
$labels['anniversary'] = 'ครบรอบ';
$labels['website'] = 'เว็บไซต์';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'หมายเหตุ';
$labels['male'] = 'ชาย';
$labels['female'] = 'หญิง';
$labels['manager'] = 'ผู้จัดการ';
$labels['assistant'] = 'ผู้ช่วย';
$labels['spouse'] = 'คู่สมรส';
$labels['allfields'] = 'ช่องข้อมูลทั้่งหมด';
$labels['search'] = 'ค้นหา';
$labels['searchresult'] = 'ผลการค้นหา';
$labels['advsearch'] = 'ค้นหาขั้นสูง';
$labels['advanced'] = 'ขั้นสูง';
$labels['other'] = 'อื่นๆ';
$labels['printcontact'] = 'พิมพ์รายชื่อติดต่อ';
$labels['qrcode'] = 'QR Code';
$labels['typehome'] = 'บ้าน';
$labels['typework'] = 'สถานที่ทำงาน';
$labels['typeother'] = 'อื่นๆ';
$labels['typemobile'] = 'มือถือ';
$labels['typemain'] = 'หลัก';
$labels['typehomefax'] = 'โทรสารที่บ้าน';
$labels['typeworkfax'] = 'โทรสารที่ทำงาน';
$labels['typecar'] = 'รถ';
$labels['typepager'] = 'เพจเจอร์';
$labels['typevideo'] = 'วีดีโอ';
$labels['typeassistant'] = 'ผู้ช่วย';
$labels['typehomepage'] = 'โฮมเพจ';
$labels['typeblog'] = 'บล็อก';
$labels['typeprofile'] = 'โปรไฟล์';
$labels['addfield'] = 'เพิ่มช่องข้อมูล...';
$labels['addcontact'] = 'เพิ่มผู้ติดต่อ';
$labels['editcontact'] = 'แก้ไขรายชื่อ';
$labels['contacts'] = 'ผู้ติดต่อ';
$labels['contactproperties'] = 'คุณสมบัติการติดต่อ';
$labels['contactnameandorg'] = 'ชื่อและองค์กร';
$labels['personalinfo'] = 'ข้อมูลส่วนบุคคล';
$labels['contactphoto'] = 'รูปผู้ติดต่อ';
$labels['edit'] = 'แก้ไข';
$labels['cancel'] = 'ยกเลิก';
$labels['save'] = 'บันทึก';
$labels['delete'] = 'ลบ';
$labels['rename'] = 'เปลี่ยนชื่อ';
$labels['addphoto'] = 'เพิ่ม';
$labels['replacephoto'] = 'แทนที่';
$labels['uploadphoto'] = 'อัพโหลดรูป';
$labels['newcontact'] = 'สร้างผู้ติดต่อใหม่';
$labels['deletecontact'] = 'ลบรายชื่อที่เลือก';
$labels['composeto'] = 'เขียนจดหมายถึง';
$labels['contactsfromto'] = 'รายชื่อ $from ถึง $to จำนวน $count';
$labels['print'] = 'พิมพ์';
$labels['export'] = 'ส่งออก';
$labels['exportall'] = 'ส่งออกทั้งหมด';
$labels['exportsel'] = 'ส่งออกเฉพาะที่เลือก';
$labels['exportvcards'] = 'นำออกรายชื่อผู้ติดต่อ (vCard)';
$labels['newgroup'] = 'สร้างกลุ่มใหม่';
$labels['addgroup'] = 'เพิ่มกลุ่ม';
$labels['grouprename'] = 'เปลี่ยนชื่อกลุ่ม';
$labels['groupdelete'] = 'ลบกลุ่ม';
$labels['groupremoveselected'] = 'ลบรายชื่อผู้ติดต่อที่เลือกจากกลุ่ม';
$labels['uponelevel'] = 'ขยับขึ้นหนึ่งระดับ';
$labels['previouspage'] = 'หน้าที่แล้ว';
$labels['firstpage'] = 'แสดงหน้าแรก';
$labels['nextpage'] = 'หน้าถัดไป';
$labels['lastpage'] = 'แสดงหน้าสุดท้าย';
$labels['group'] = 'กลุ่ม';
$labels['groups'] = 'กลุ่ม';
$labels['listgroup'] = 'แสดงสมาชิกกลุ่ม';
$labels['personaladrbook'] = 'สมุดรายชื่อส่วนตัว';
$labels['searchsave'] = 'บันทึกการค้นหา';
$labels['searchdelete'] = 'ลบการค้นหา';
$labels['import'] = 'นำเข้า';
$labels['importcontacts'] = 'นำเข้าผู้ติดต่อ';
$labels['importtarget'] = 'เพิ่มผู้ติดต่อถึง';
$labels['importreplace'] = 'แทนที่ทั้งหมดในสมุดรายชื่อ';
$labels['importgroups'] = 'นำเข้ากลุ่มที่ได้รับมอบหมาย';
$labels['importgroupsall'] = 'ทั้งหมด (สร้างกลุ่มหากจำเป็น)';
$labels['importgroupsexisting'] = 'เฉพาะสำหรับกลุ่มที่มีอยู่เท่านั้น';
$labels['done'] = 'สำเร็จ';
$labels['settingsfor'] = 'ตั้งค่าสำหรับ';
$labels['about'] = 'เกี่ยวกับ';
$labels['preferences'] = 'ปรับแต่ง';
$labels['userpreferences'] = 'ข้อมูลส่วนตัว';
$labels['editpreferences'] = 'แก้ไขข้อมูลส่วนตัว';
$labels['identities'] = 'ชื่อแสดงตัว';
$labels['manageidentities'] = 'จัดการข้อมูลประจำตัว';
$labels['newidentity'] = 'สร้างข้อมูลประจำตัวใหม่';
$labels['addidentity'] = 'เพิ่มข้อมูลประจำตัว';
$labels['editidentity'] = 'แก้ไขข้อมูลประจำตัว';
$labels['preferhtml'] = 'อ่านแบบ HTML';
$labels['defaultcharset'] = 'ชุดอักขระเริ่มต้น';
$labels['htmlmessage'] = 'จดหมาย HTML';
$labels['messagepart'] = 'ส่วนหนึ่ง';
$labels['digitalsig'] = 'ลายเซ็นดิจิตอล';
$labels['dateformat'] = 'รูปแบบวันที่';
$labels['timeformat'] = 'รูปแบบเวลา';
$labels['prettydate'] = 'แสดงวันที่แบบย่อ';
$labels['setdefault'] = 'ตั้งเป็นค่าใช้งาน';
$labels['autodetect'] = 'อัตโนมัติ';
$labels['language'] = 'ภาษา';
$labels['timezone'] = 'เขตเวลา';
$labels['pagesize'] = 'จำนวนจดหมายต่อหน้า';
$labels['signature'] = 'ลายมือชื่อ';
$labels['dstactive'] = 'Daylight savings';
$labels['showinextwin'] = 'เปิดข้อความไปที่หน้าต่างใหม่';
$labels['composeextwin'] = 'เขียนในหน้าต่างใหม่';
$labels['htmleditor'] = 'เขียนจดหมายแบบ HTML';
$labels['htmlonreply'] = 'ตอบกลับในแบบ HTML';
$labels['htmlonreplyandforward'] = 'ส่งต่อ หรือ ตอบกลับ ในแบบ HTML';
$labels['htmlsignature'] = 'ลายมือชื่อแบบ HTML';
$labels['showemail'] = 'แสดงที่อยู่อีเมลที่ชื่อ';
$labels['previewpane'] = 'แสดงหน้าต่างตัวอย่างแสดงผล';
$labels['skin'] = 'Interface skin';
$labels['logoutclear'] = 'ลบเมล์ในถึงขยะเมื่อออกจากระบบ';
$labels['logoutcompact'] = 'กระชับกล่องจดหมายเข้าเมื่อออกจากระบบ';
$labels['uisettings'] = 'หน้าจอผู้ใช้';
$labels['serversettings'] = 'Server Settings';
$labels['mailboxview'] = 'มุมมองกล่องจดหมาย';
$labels['mdnrequests'] = 'ร้องขอการยืนยันการอ่าน';
$labels['askuser'] = 'ถามฉัน';
$labels['autosend'] = 'ส่ง ตอบรับ';
$labels['autosavedraft'] = 'บันทึกเป็นจดหมายร่างอัตโนมัติ';
$labels['never'] = 'ไม่ใช้';
$labels['advancedoptions'] = 'ตัวเลือกขั้นสูง';
$labels['newmessage'] = 'ข้อความใหม่';
$labels['signatureoptions'] = 'ตัวเลือกสำหรับลายเซ็็นต์';
$labels['whenreplying'] = 'เมื่อตอบกลับ';
$labels['autoaddsignature'] = 'เพิ่มลายเซ็นต์เข้าไปอัตโนมัติ';
$labels['newmessageonly'] = 'เฉพาะข้อความใหม่เท่านั้น';
$labels['replyandforwardonly'] = 'ตอบกลับและส่งต่อเท่านั้น';
$labels['insertsignature'] = 'แทรกลายเซ็นต์';
$labels['asattachment'] = 'เป็นไฟล์แนบ';
$labels['allmessages'] = 'ข้อความทั้งหมด';
$labels['folder'] = 'กล่องจดหมาย';
$labels['folders'] = 'กล่องจดหมาย';
$labels['foldername'] = 'ชื่อกล่องจดหมาย';
$labels['subscribed'] = 'ลงชื่อ';
$labels['messagecount'] = 'ข้อความ';
$labels['create'] = 'สร้าง';
$labels['createfolder'] = 'สร้างกล่องจดหมาย';
$labels['managefolders'] = 'จัดการกล่องจดหมาย';
$labels['specialfolders'] = 'โฟลเดอร์พิเศษ';
$labels['properties'] = 'คุณสมบัติ';
$labels['folderproperties'] = 'คุณสมบัติเกี่ยวกับโฟลเดอร์';
$labels['parentfolder'] = 'โฟลเดอร์แม่';
$labels['info'] = 'ข้อมูล';
$labels['foldertype'] = 'ประเภทโฟลเดอร์';
$labels['personalfolder'] = 'โฟลเดอร์ส่วนตัว';
$labels['sharedfolder'] = 'โฟลเดอร์สาธารณะ';
$labels['sortby'] = 'เรียงตาม';
$labels['sortasc'] = 'เรียงจากหน้าไปหลัง';
$labels['sortdesc'] = 'เรียงจากหลังไปหน้า';
$labels['undo'] = 'เลิกทำ';
$labels['installedplugins'] = 'ปลั๊กอินที่ติดตั้ง';
$labels['plugin'] = 'ปลั๊กอิน';
$labels['version'] = 'รุ่น';
$labels['license'] = 'สัญญาอนุญาต';
$labels['B'] = 'ไบต์';
$labels['KB'] = 'กิโลไบต์';
$labels['MB'] = 'เมกะไบต์';
$labels['GB'] = 'จิกะไบต์';
$labels['unicode'] = 'Unicode';
localization/th_TH/messages.inc000064400000016235151727150570012565 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'เกิดข้อผิดพลาดบางประการ!';
$messages['loginfailed']  = 'ไม่สามารถเข้าสู่ระบบได้';
$messages['cookiesdisabled'] = 'Browser ของคุณไม่ได้เปิดการใช้งาน Cookie ไว้';
$messages['sessionerror'] = 'Your session is invalid or expired';
$messages['storageerror'] = 'ไม่สามารถติดต่อ IMAP Server ได้';
$messages['servererror'] = 'เกิดข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์';
$messages['dberror'] = 'เกิดข้อผิดพลาดเกี่ยวกับฐานข้อมูล';
$messages['invalidhost'] = 'ชื่อเซิร์ฟเวอร์ไม่ถูกต้อง';
$messages['nomessagesfound'] = 'ไม่มีจดหมายในกล่องจดหมายนี้';
$messages['refreshing'] = 'กำลังรีเฟรช...';
$messages['loading'] = 'Loading...';
$messages['uploading'] = 'กำลังอัพโหลดไฟล์...';
$messages['uploadingmany'] = 'กำลังอัพโหลดไฟล์...';
$messages['loadingdata'] = 'กำลังโหลดข้อมูล...';
$messages['checkingmail'] = 'กำลังเช็คจดหมายใหม่...';
$messages['sendingmessage'] = 'กำลังส่งจดหมาย...';
$messages['messagesent'] = 'จดหมายถูกส่งเรียบร้อยแล้ว';
$messages['savingmessage'] = 'กำลังบันทึกจดหมาย...';
$messages['messagesaved'] = 'จดหมายถูกบันทึกเป็นจดหมายร่าง';
$messages['successfullysaved'] = 'บันทึกเรียบร้อยแล้ว';
$messages['addedsuccessfully'] = 'รายชื่อถูกบันทึกเรียบร้อยแล้ว';
$messages['blockedimages'] = 'เพื่อปกป้องความส่วนตัว รูปจากภายนอกในจดหมายนี้จะถูกปิดบังไว้';
$messages['encryptedmessage'] = 'จดหมายถูกเข้ารหัสไม่สามารถแสดงผลได้';
$messages['nocontactsfound'] = 'ไม่พบรายชื่อที่ค้นหา';
$messages['contactnotfound'] = 'ไม่พบรายชื่อที่ค้นหา';
$messages['sendingfailed'] = 'การส่งจดหมายล้มเหลว';
$messages['errormoving'] = 'ไม่สามารถย้ายจดหมายได้';
$messages['errordeleting'] = 'ไม่สามารถลบจดหมายได้';
$messages['deletecontactconfirm']  = 'คุณมั่นใจที่ต้องการลบรายชื่อที่เลือกใช่หรือไม่?';
$messages['deletemessagesconfirm'] = 'คุณมั่นใจที่ต้องการลบจดหมายที่เลือกใช่หรือไม่?';
$messages['deletefolderconfirm']  = 'คุณมั่นใจที่ต้องการลบแฟ้มนี้หรือไม่?';
$messages['purgefolderconfirm']  = 'คุณมั่นใจที่ต้องการลบจดหมายทั้งหมดในแฟ้มนี้ใช่หรือไม่?';
$messages['contactdeleting'] = 'กำลังลบรายชื่อผู้ติดต่อ...';
$messages['groupdeleting'] = 'กำลังลบกลุ่ม...';
$messages['folderdeleting'] = 'กำลังลบโฟลเดอร์...';
$messages['foldermoving'] = 'กำลังย้ายโฟลเดอร์...';
$messages['formincomplete'] = 'ฟอร์มยังไม่ครบถ้วนสมบูรณ์';
$messages['noemailwarning'] = 'โปรดใส่อีเมล์ให้ถูกต้อง';
$messages['nonamewarning']  = 'โปรดใส่ชื่อ';
$messages['nopagesizewarning'] = 'โปรดใส่จำนวนหน้า';
$messages['norecipientwarning'] = 'โปรดใส่ผู้รับอย่างน้อย 1 ชื่อ';
$messages['nosubjectwarning']  = 'หัวจดหมายว่างเปล่า คุณต้องการใส่หัวจดหมายเดี๋ยวนี้หรือไม่?';
$messages['nobodywarning'] = 'คุณต้องการส่งจดหมายโดยไม่มีข้อความใช่หรือไม่?';
$messages['nosearchname'] = 'โปรดใสชื่อหรืออีเมล์';
$messages['searchsuccessful'] = 'พบจดหมายจำนวน $nr ฉบับ';
$messages['searchnomatch'] = 'การค้นหาไม่พบ';
$messages['searching'] = 'กำลังค้นหา...';
$messages['checking'] = 'กำลังตรวจสอบ...';
$messages['nospellerrors'] = 'ไม่พบคำที่สะกดผิด';
$messages['folderdeleted'] = 'ลบแฟ้มเสร็จสมบูรณ์';
$messages['deletedsuccessfully'] = 'ลบเสร็จสมบูรณ์';
$messages['converting'] = 'นำเอาหารจัดรูปแบบในจดหมายออก...';
$messages['messageopenerror'] = 'ไม่สามารถอ่านจดหมายจาก Server ได้';
$messages['fileuploaderror'] = 'การอัพโหลดล้มเหลว';
$messages['filesizeerror'] = 'ไฟล์มีขนาดใหญ่เกิน $size';
$messages['sourceisreadonly'] = 'จดหมายนี้เป็นแบบอ่านอย่างเดียว';
$messages['errorsavingcontact'] = 'ไม่สามารถบันทึกรายชื่อได้';
$messages['movingmessage'] = 'กำลังย้ายข้อความ...';
$messages['copyingmessage'] = 'กำลังคัดลอกข้อความ...';
$messages['copyingcontact'] = 'กำลังคัดลอกรายชื่อผู้ติดต่อ...';
$messages['deletingmessage'] = 'กำลังลบข้อความ...';
$messages['importwait'] = 'กำลังนำเข้าข้อมูล, โปรดรอสักครู่';
localization/mr_IN/labels.inc000064400000056705151727150570012224 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product वरती स्वागत आहे';
$labels['username'] = 'वापरकर्त्याचे नाव(तुमचे इमेल)';
$labels['password'] = 'परवलीचा शब्द';
$labels['server'] = 'सर्व्हर';
$labels['login'] = 'प्रवेश';
$labels['logout'] = 'बाहेर जा';
$labels['mail'] = 'इ-मेल';
$labels['settings'] = 'तुमची पसंती';
$labels['addressbook'] = 'पत्ता नोंदवही';
$labels['inbox'] = 'आलेले संदेश';
$labels['drafts'] = 'मसुदा';
$labels['sent'] = 'पाठवलेले';
$labels['trash'] = 'कचरा पेटी';
$labels['junk'] = 'नको असलेले कचरा संदेश';
$labels['subject'] = 'विषय';
$labels['from'] = 'प्रेषक';
$labels['sender'] = 'प्रेषक';
$labels['to'] = 'प्रती';
$labels['cc'] = 'प्रत';
$labels['bcc'] = 'गुप्त प्रत';
$labels['replyto'] = 'यास उत्तर द्या';
$labels['date'] = 'दिनांक';
$labels['size'] = 'आकार';
$labels['priority'] = 'प्राधान्य';
$labels['organization'] = 'संस्था';
$labels['readstatus'] = 'वाचन स्थिती';
$labels['listoptions'] = 'विकल्प सूची';
$labels['mailboxlist'] = 'फोल्डर्स';
$labels['messagesfromto'] = 'संदेश $from कडून $to साठी $count वा';
$labels['threadsfromto'] = 'धागे $from कडून $to साठी $count वा';
$labels['messagenrof'] = 'Message $nr of $count';
$labels['copy'] = 'नक्‍कल';
$labels['move'] = 'हलवा';
$labels['moveto'] = 'या फोल्डरमधे ठेवा';
$labels['download'] = 'उतरवून घ्या';
$labels['filename'] = 'फाईलचे नाव';
$labels['filesize'] = 'फाईलचा आकार';
$labels['addtoaddressbook'] = 'पत्ता नोंदवहीत नोंदवा';
$labels['sun'] = 'रवी';
$labels['mon'] = 'सोम';
$labels['tue'] = 'मंगळ';
$labels['wed'] = 'बुध';
$labels['thu'] = 'गुरु';
$labels['fri'] = 'शुक्र';
$labels['sat'] = 'शनी';
$labels['sunday'] = 'रविवार';
$labels['monday'] = 'सोमवार';
$labels['tuesday'] = 'मंगळवार';
$labels['wednesday'] = 'बुधवार';
$labels['thursday'] = 'गुरुवार';
$labels['friday'] = 'शुक्रवार';
$labels['saturday'] = 'शनीवार';
$labels['jan'] = 'जाने';
$labels['feb'] = 'फेब्';
$labels['mar'] = 'मार्च';
$labels['apr'] = 'एप्रिल';
$labels['may'] = 'मे';
$labels['jun'] = 'जून';
$labels['jul'] = 'जुलै';
$labels['aug'] = 'ऑगस्ट';
$labels['sep'] = 'सप्टें';
$labels['oct'] = 'ऑक्टो';
$labels['nov'] = 'नोव्हें';
$labels['dec'] = 'डिसें';
$labels['longjan'] = 'जानेवारी';
$labels['longfeb'] = 'फेब्रूवारी';
$labels['longmar'] = 'मार्च';
$labels['longapr'] = 'एप्रिल';
$labels['longmay'] = 'मे';
$labels['longjun'] = 'जून';
$labels['longjul'] = 'जुलै';
$labels['longaug'] = 'ऑगस्ट';
$labels['longsep'] = 'सप्टेंबर';
$labels['longoct'] = 'ऑक्टोबर';
$labels['longnov'] = 'नोव्हेंबर';
$labels['longdec'] = 'डिसेंबर';
$labels['today'] = 'आज';
$labels['refresh'] = 'अद्ययावत करा';
$labels['checkmail'] = 'नवीन संदेश आले आहेत का पहा';
$labels['compose'] = 'नवीन संदेश तयार करा';
$labels['writenewmessage'] = 'नवीन संदेश तयार करा';
$labels['reply'] = 'उत्तर दया';
$labels['replytomessage'] = 'पाठवणार्‍याला उत्तर द्या';
$labels['replytoallmessage'] = 'पाठवणार्‍याला आणि प्रत केलेल्या सर्वांना संदेश पाठवा';
$labels['replyall'] = 'सर्वांना उत्तर दया';
$labels['forwardmessage'] = 'हा संदेश पुढे पाठवा';
$labels['deletemessage'] = 'संदेश काढून टाका';
$labels['movemessagetotrash'] = 'संदेश कचरापेटीत टाका';
$labels['printmessage'] = 'हा संदेश छापा';
$labels['previousmessage'] = 'आधिचा संदेश दाखवा';
$labels['firstmessage'] = 'पहिला संदेश दाखवा';
$labels['nextmessage'] = 'नंतरचा संदेश दाखवा';
$labels['lastmessage'] = 'शेवटचा संदेश दाखवा';
$labels['backtolist'] = 'संदेशांच्या यादीकडे परत चला';
$labels['viewsource'] = 'मूळ संदेशाचा प्रोग्राम कोड दाखवा';
$labels['mark'] = 'खूण';
$labels['markmessages'] = 'संदेशांना खूण करा';
$labels['markread'] = 'वाचलेला म्हणून खूण करा';
$labels['markunread'] = 'न वाचलेला म्हणून खूण करा';
$labels['markflagged'] = 'खूण लावलेला म्हणून खूण करा';
$labels['markunflagged'] = 'खूण काढलेला म्हणून खूण करा';
$labels['moreactions'] = 'अधिक कृती..';
$labels['more'] = 'अधिक';
$labels['back'] = 'मागे';
$labels['options'] = 'पर्याय';
$labels['select'] = 'निवडा';
$labels['all'] = 'सर्व';
$labels['none'] = 'कोणताही नाही';
$labels['currpage'] = 'सध्‍याचे पान';
$labels['unread'] = 'न वाचलेले';
$labels['flagged'] = 'खूण लावलेले';
$labels['unanswered'] = 'उत्तर न दिलेले';
$labels['deleted'] = 'काढून टाकलेला(ले)';
$labels['invert'] = 'उलट करा';
$labels['filter'] = 'गाळणी';
$labels['list'] = 'यादी';
$labels['threads'] = 'धागे';
$labels['expand-all'] = 'सर्व विस्‍तारीत करा';
$labels['expand-unread'] = 'न वाचलेला विस्‍तारा';
$labels['collapse-all'] = 'सर्व मिटवा';
$labels['threaded'] = 'धागा लावलेला';
$labels['autoexpand_threads'] = 'संदेश धागे विस्‍तारा';
$labels['do_expand'] = 'सर्व धागे';
$labels['expand_only_unread'] = 'फक्‍त न वाचलेल्‍या संदेशांबददल';
$labels['fromto'] = 'पाठवणारा/प्रती';
$labels['flag'] = 'खूण';
$labels['attachment'] = 'जोड';
$labels['nonesort'] = 'कोणताही नाही';
$labels['sentdate'] = 'पाठवणी दिनांक';
$labels['arrival'] = 'आगमन दिनांक';
$labels['asc'] = 'चढत्‍या क्रमाने';
$labels['desc'] = 'उतरत्‍या क्रमाने';
$labels['listcolumns'] = 'सुची स्‍तंभ';
$labels['listsorting'] = 'स्‍तंभ वर्गीकरण';
$labels['listorder'] = 'वर्गीकरण क्रम';
$labels['listmode'] = 'यादी दर्शक पध्‍दत';
$labels['layoutlist'] = 'यादी';
$labels['folderactions'] = 'फोल्डर कृती..';
$labels['compact'] = 'छोटा';
$labels['empty'] = 'रिकामा';
$labels['quota'] = 'डिस्कचा वापर';
$labels['unknown'] = 'माहित नसलेला';
$labels['unlimited'] = 'अमर्याद';
$labels['quicksearch'] = 'चटकन शोध';
$labels['resetsearch'] = 'परत शोध';
$labels['searchmod'] = 'बदलकर्त्‍यांना शोधा';
$labels['msgtext'] = 'संपूर्ण संदेश';
$labels['openinextwin'] = 'नवीन खिडकी उघडा';
$labels['emlsave'] = 'इएमएल स्‍वरूपात उतरवून घ्या';
$labels['editasnew'] = 'नवीन आहे असा संपादित करा';
$labels['sendmessage'] = 'आत्ता पाठवा';
$labels['savemessage'] = 'हा मसूदा साठवून ठेवा';
$labels['addattachment'] = 'फाईल सोबत जोडा';
$labels['charset'] = 'कॅरेक्टर सेट';
$labels['editortype'] = 'संपादकाचा प्रकार';
$labels['returnreceipt'] = 'पोच पावती';
$labels['dsn'] = 'पोच स्थिती निर्देशक';
$labels['mailreplyintro'] = '$date या दिवशी $sender ने लिहीले :';
$labels['originalmessage'] = 'खरा संदेश';
$labels['editidents'] = 'ओळख संपादित करा';
$labels['spellcheck'] = 'लिखाण';
$labels['checkspelling'] = 'शुध्द लेखन';
$labels['resumeediting'] = 'परत संदेश संपादित करा';
$labels['revertto'] = 'परत जा';
$labels['attach'] = 'जोडा';
$labels['attachments'] = 'जोडलेल्या';
$labels['upload'] = 'चढवा';
$labels['close'] = 'बंद';
$labels['messageoptions'] = 'संदेश पर्याय..';
$labels['low'] = 'कमी';
$labels['lowest'] = 'कमित कमी';
$labels['normal'] = 'नेहमी प्रमाणे';
$labels['high'] = 'तातडीचे';
$labels['highest'] = 'अतिशय तातडीचे';
$labels['nosubject'] = '(विषय नाही)';
$labels['showimages'] = 'चित्र दाखवा';
$labels['alwaysshow'] = '$sender कडून आलेल्या संदेशातील चित्रे नेहमी दाखवा';
$labels['isdraft'] = 'हा मसुदा संदेश आहे';
$labels['htmltoggle'] = 'एच टी एम एल';
$labels['plaintoggle'] = 'साधे लिखाण';
$labels['savesentmessagein'] = 'पाठवलेला संदेश या फोल्डरमधे ठेवा';
$labels['dontsave'] = 'संदेश साठवू नका';
$labels['maxuploadsize'] = 'जास्‍तीत जास्‍त फाइलचा आकार $size असू शकतो';
$labels['addcc'] = 'प्रत करा';
$labels['addbcc'] = 'गुप्त प्रत करा';
$labels['addreplyto'] = 'आणखी लोकांना संदेश पाठवा';
$labels['mdnrequest'] = 'हा संदेश पाठवणार्‍याने हा संदेश तुम्ही वाचल्यावर कळवावयाला सांगितले आहे. तुम्हाला असे कळवणे चालेल ना?';
$labels['receiptread'] = 'पोच पावती (संदेश वाचला)';
$labels['yourmessage'] = 'ही तुमच्या संदेशाची पोच पावती आहे.';
$labels['receiptnote'] = 'सूचना: ही पोच पावती तुम्ही ज्यांना  संदेश पाठवला त्यांच्या संगणकावर दिसला एवढेच सांगते. तुम्ही ज्यांना हा संदेश पाठवला, त्यांनी तो वाचला, आणि त्यांना तो नक्की समजला हे मात्र सांगत नाही.';
$labels['name'] = 'टोपणनाव';
$labels['firstname'] = 'नाव';
$labels['surname'] = 'आडनाव';
$labels['middlename'] = 'मधले नाव';
$labels['nickname'] = 'टोपणनाव';
$labels['jobtitle'] = 'कामाचे शिर्षक';
$labels['department'] = 'विभाग';
$labels['gender'] = 'लिंग';
$labels['email'] = 'इ-मेल्';
$labels['phone'] = 'दूरध्वनी';
$labels['address'] = 'पत्ता';
$labels['street'] = 'रस्ता';
$labels['locality'] = 'शहर';
$labels['region'] = 'राज्य / संस्थान';
$labels['country'] = 'देश';
$labels['birthday'] = 'वाढदिवस';
$labels['website'] = 'संकेतस्थळ';
$labels['notes'] = 'टिपा';
$labels['male'] = 'पुरूष';
$labels['female'] = 'स्त्री';
$labels['manager'] = 'व्यवस्थापक';
$labels['assistant'] = 'सहाय्यक';
$labels['search'] = 'शोध';
$labels['advsearch'] = 'प्रगत शोध';
$labels['advanced'] = 'आधुनिक';
$labels['other'] = 'इतर';
$labels['typehome'] = 'मुख्यपृष्ठ';
$labels['typework'] = 'काम';
$labels['typeother'] = 'इतर';
$labels['typemobile'] = 'भ्रमणध्वनी';
$labels['typemain'] = 'मुख्य';
$labels['typevideo'] = 'चलचित्र';
$labels['typeassistant'] = 'सहाय्यक';
$labels['typehomepage'] = 'मुख्य पृष्ठ';
$labels['editcontact'] = 'नोंदवहीतील पत्ता सुधारा';
$labels['contacts'] = 'संपर्क';
$labels['personalinfo'] = 'वैयक्तिक माहिती';
$labels['edit'] = 'संदेश तयार करा';
$labels['cancel'] = 'रद्द करा';
$labels['save'] = 'ठेवून द्या';
$labels['delete'] = 'काढून टाका';
$labels['rename'] = 'दूसरे नाव द्या';
$labels['addphoto'] = 'समावेश करा';
$labels['replacephoto'] = 'बदला';
$labels['deletecontact'] = 'खूण केलेले सर्व संपर्काचे पत्ते काढून टाका';
$labels['composeto'] = 'साठी नवीन संदेश तयार करा';
$labels['contactsfromto'] = '$from पासून ते $to पर्यंत $count पैकी';
$labels['print'] = 'छापा';
$labels['export'] = 'निर्यात करा';
$labels['exportvcards'] = 'व्ही कार्ड स्वरुपात पत्ते निर्यात करा';
$labels['groupdelete'] = 'गट नष्ट करा';
$labels['previouspage'] = 'आधिचा संच दाखवा';
$labels['firstpage'] = 'पहिला संच दाखवा';
$labels['nextpage'] = 'नंतरचा संच दाखवा';
$labels['lastpage'] = 'शेवटचा संच दाखवा';
$labels['group'] = 'गट';
$labels['groups'] = 'अनेक गट';
$labels['personaladrbook'] = 'वैयक्तिक पत्ते';
$labels['searchsave'] = 'शोध जतन करा';
$labels['searchdelete'] = 'शोध नष्ट करा';
$labels['import'] = 'आयात करा';
$labels['importcontacts'] = 'पत्ते आयात करा';
$labels['importreplace'] = 'संपूर्ण पत्ता नोंदवही बदला';
$labels['done'] = 'झाले';
$labels['settingsfor'] = 'साठी सेटिंग्ज';
$labels['about'] = 'च्या विषयी';
$labels['preferences'] = 'तुमची पसंती';
$labels['userpreferences'] = 'वापरकर्त्याची पसंती';
$labels['editpreferences'] = 'वापरकर्त्याची पसंती सुधारा';
$labels['identities'] = 'ओळख';
$labels['preferhtml'] = 'एच टी एम एल दाखवा';
$labels['defaultcharset'] = 'नेहमीचा अक्षर संच';
$labels['htmlmessage'] = 'एच टी एम एल संदेश';
$labels['prettydate'] = 'विशेष दिवस';
$labels['setdefault'] = 'हा नेहमीसाठी वापरा';
$labels['autodetect'] = 'स्वयंचलित';
$labels['language'] = 'भाषा';
$labels['timezone'] = 'वेळ  क्षेत्र';
$labels['pagesize'] = 'प्रत्येक पानावरील ओळी';
$labels['signature'] = 'सही';
$labels['dstactive'] = 'दिवसाची वेळ';
$labels['htmleditor'] = 'एच टी एम एल संदेश तयारा करा';
$labels['htmlsignature'] = 'एच टी एम एल सही';
$labels['previewpane'] = 'प्रक्रियापूर्व तावदान दाखवा';
$labels['skin'] = 'दृष्य गोष्टी';
$labels['logoutclear'] = 'खात्यातून बाहेर पडतांना कचरा पेटी साफ करा';
$labels['logoutcompact'] = 'खात्यातून बाहेर पडतांना आलेल्या संदेशांना छोटे आणि व्यवस्थित करा';
$labels['uisettings'] = 'वापरकर्त्यासाठीचा इंटरफेस';
$labels['serversettings'] = 'सर्व्हरची सेटिंग्ज';
$labels['mailboxview'] = 'टपालपेटी पहाणे';
$labels['mdnrequests'] = 'पाठवणार्‍याच्या सूचना';
$labels['askuser'] = 'वापरकर्त्याला विचारा';
$labels['autosend'] = 'स्वयंचलित (आपोआप पाठवणे)';
$labels['readwhendeleted'] = 'काढून टाकल्यावर संदेश वाचला असे दाखवा';
$labels['flagfordeletion'] = 'संदेश काढून टाकण्या ऎवजी संदेश काढून टाकण्यासाठी आहे अशी खूण करा';
$labels['skipdeleted'] = 'काढून टाकलेले संदेश दाखवू नका';
$labels['deletealways'] = 'जर संदेश कचरापेटीत गेले नाहीत तर काढून टाका';
$labels['showremoteimages'] = 'संदेशातील चित्रे दाखवा';
$labels['fromknownsenders'] = 'माहितीतील पाठवणार्‍याकडून संदेश';
$labels['always'] = 'नेहमी';
$labels['showinlineimages'] = 'सोबत जोडलेली चित्रे संदेशाच्या खाली दाखवा';
$labels['autosavedraft'] = 'मसूदा आपोआप जतन करा';
$labels['everynminutes'] = 'प्रत्येक $n मिनिटांनी';
$labels['never'] = 'कधीच नाही';
$labels['immediately'] = 'ताबडतोब';
$labels['messagesdisplaying'] = 'संदेश दाखवा';
$labels['messagescomposition'] = 'संदेश तयार करा';
$labels['mimeparamfolding'] = 'सोबत दिलेल्या फाईल्सची नावे';
$labels['2231folding'] = 'संपूर्ण आर एफ सी 2231(थंडरबर्ड)';
$labels['miscfolding'] = 'आर एफ सी  2047/2231 (मायक्रोसॉफ़्ट आऊटलूक)';
$labels['2047folding'] = 'संपूर्ण आर एफ सी 2047(ईतर)';
$labels['force7bit'] = '8 अक्षरी एमआयएमई संक्षिप्‍तरूप वापरा';
$labels['advancedoptions'] = 'अधिक पर्याय';
$labels['focusonnewmessage'] = 'ब्राऊझर खिडकी नवीन संदेशावर केंद्रित करा';
$labels['checkallfolders'] = 'सर्व फोल्डरमधे नवीन संदेश शोधा';
$labels['mainoptions'] = 'मुख्‍य पर्याय';
$labels['section'] = 'भाग';
$labels['maintenance'] = 'देखभाल';
$labels['newmessage'] = 'नवीन संदेश';
$labels['signatureoptions'] = 'सही पर्याय';
$labels['whenreplying'] = 'उत्‍तर देताना';
$labels['replytopposting'] = 'नवीन संदेश मुळ संदेशाच्‍या वर चालू करा';
$labels['replybottomposting'] = 'नवीन संदेश मुळ संदेशाच्‍या खाली चालू करा';
$labels['replyremovesignature'] = 'उत्‍तर देताना मुळ सही संदेशातून काढून टाका';
$labels['autoaddsignature'] = 'आपोआप सही करा';
$labels['newmessageonly'] = 'फक्‍त नवीन संदेश';
$labels['replyandforwardonly'] = 'फक्‍त उत्‍तरे आ‍णी पुढे पाठवलेले संदेश';
$labels['insertsignature'] = 'सही मध्‍ये टाका';
$labels['afternseconds'] = '$n क्षणानंतर';
$labels['reqmdn'] = 'नेहमी पोचपावतीची विनंती करा';
$labels['reqdsn'] = 'नेहमी पोचपावती स्थिती निर्देशाची विनंती करा';
$labels['allmessages'] = 'सर्व संदेश';
$labels['folder'] = 'फोल्डर';
$labels['folders'] = 'फोल्डर्स';
$labels['foldername'] = 'फोल्डरचे नाव';
$labels['subscribed'] = 'वर्गणिदार होणे';
$labels['messagecount'] = 'संदेश';
$labels['create'] = 'तयार करा';
$labels['createfolder'] = 'नवीन फोल्डर तयार करा';
$labels['managefolders'] = 'फोल्डर्सचे नियोजन करा';
$labels['specialfolders'] = 'विषेश फोल्डर';
$labels['sortby'] = 'ने वर्गवारी करा';
$labels['sortasc'] = 'चढत्या क्रमाने';
$labels['sortdesc'] = 'उतरत्या क्रमाने';
$labels['B'] = 'बाइट';
$labels['KB'] = 'केबी';
$labels['MB'] = 'एमबी';
$labels['GB'] = 'जीबी';
$labels['unicode'] = 'युनिकोड';
$labels['english'] = 'इंग्रजी';
$labels['westerneuropean'] = 'पश्चिम युरोपियन';
$labels['easterneuropean'] = 'पूर्व युरोपियन';
$labels['southeasterneuropean'] = 'दक्षिणपूर्व युरोपियन';
$labels['baltic'] = 'बाल्‍टीक';
$labels['cyrillic'] = 'सिरीलिक';
$labels['arabic'] = 'अरेबिक';
$labels['greek'] = 'ग्रीक';
$labels['hebrew'] = 'हिब्रु';
$labels['turkish'] = 'तुर्कि';
$labels['nordic'] = 'नॉर्डिक';
$labels['thai'] = 'थाइ';
$labels['celtic'] = 'सेल्टिक';
$labels['vietnamese'] = 'व्हिएतनामी';
$labels['japanese'] = 'जपानी';
$labels['korean'] = 'कोरियन';
$labels['chinese'] = 'चिनी';
localization/mr_IN/messages.inc000064400000027621151727150570012564 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'काहीतरी चूक झाली';
$messages['loginfailed']  = 'प्रवेश करता आला नाही';
$messages['cookiesdisabled'] = 'तुमचा ब्राऊझर कुकीज घेऊ शकत नाही';
$messages['sessionerror'] = 'तुम्ही प्रवेश केल्यानंतर बराच वेळ काही न करता गेला म्हणून तुमचा कालावधी संपला किंवा तुमच्या कालावधीच्या नोंदेत काही चूक झाली आहे.';
$messages['storageerror'] = 'आयमॅप सर्व्हरशी संपर्क होवू शकला नाही.';
$messages['servererror'] = 'सर्व्‍हर चूक !';
$messages['servererrormsg'] = 'सर्व्हर चूक : $msg';
$messages['dberror'] = 'माहितीसाठा चूक !';
$messages['errorreadonly'] = 'कृती करण्यास असमर्थ, फोल्डर फक्त बघण्यासाठी';
$messages['errornoperm'] = 'कृती करण्यास असमर्थ, परवानगी अमान्य';
$messages['invalidrequest'] = 'अवैध विनंती! माहिती साठवलेली नाही.';
$messages['nomessagesfound'] = 'या खात्यामधे कोणताही संदेश आलेला नाही';
$messages['loading'] = 'संदेश आणत आहे';
$messages['uploading'] = 'फाईल चढवली जात आहे...';
$messages['loadingdata'] = 'माहिती आणत आहे';
$messages['checkingmail'] = 'नवीन संदेश आले आहेत का हे पहात आहे';
$messages['sendingmessage'] = 'संदेश पाठवत आहे';
$messages['messagesent'] = 'संदेश यशस्वीरित्या पाठवण्यात आला आहे';
$messages['savingmessage'] = 'संदेश जतन करुन ठेवत आहे';
$messages['messagesaved'] = 'संदेश मसुदा फोल्डरमधे ठेवत आहे';
$messages['successfullysaved'] = 'यशस्वीरित्या ठेवला';
$messages['addedsuccessfully'] = 'नवीन नाव पत्तां नोंदवहीत व्यवस्थित ठेवला';
$messages['contactnameexists'] = 'सारख्या नावाची नोंद आधीच आहे';
$messages['blockedimages'] = 'तुमची गोपनीयता पाळण्यासाठी या संदेशातील दुसर्‍या सर्व्हरवरील चित्रे दिसणे थांबवले आहे.';
$messages['encryptedmessage'] = 'हा गुप्त व सांकेतिक संदेश आहे. तो तुम्हाला असा दाखवता येणार नाही.';
$messages['nocontactsfound'] = 'कोणताच पत्ता नोंदवहीत नाही.';
$messages['contactnotfound'] = 'या नावाचा कोणताच पत्ता नोंदवहीत नाही.';
$messages['sendingfailed'] = 'संदेश पाठवता आला नाही.';
$messages['senttooquickly'] = 'कृपया हा संदेश पाठवण्यापूर्वी $sec थांबा';
$messages['errormoving'] = 'संदेश तेथे ठेवता आला नाही.';
$messages['errorcopying'] = 'संदेशांची नक्‍कल करता आली नाही';
$messages['errordeleting'] = 'संदेश काढून टाकता आला नाही.';
$messages['errormarking'] = 'संदेशांवर खूण करता आली नाही.';
$messages['deletecontactconfirm']  = 'खूण केलेले सर्व पत्ते खरोखरच तुम्हाला काढून टाकायचे आहेत का?';
$messages['deletegroupconfirm']  = 'निवडलेला गट तुम्हाला नक्की नष्ट करायचा आहे का?';
$messages['deletemessagesconfirm'] = 'खूण केलेले सर्व संदेश खरोखरच तुम्हाला काढून टाकायचे आहेत का?';
$messages['deletefolderconfirm']  = 'हा फोल्डर खरोखरच तुम्हाला काढून टाकायचा आहेत का?';
$messages['purgefolderconfirm']  = 'या फोल्डरमधिल सर्व संदेश खरोखरच तुम्हाला काढून टाकायचे आहेत का?';
$messages['folderdeleting'] = 'फोल्डर काढून टाकत आहे';
$messages['foldermoving'] = 'फोल्डर हलवत आहे.';
$messages['formincomplete'] = 'फॉर्म पूर्णपणे भरलेला  नाही.';
$messages['noemailwarning'] = 'योग्य, बरोबर, आणि वैध इमेल पत्ता द्या.';
$messages['nonamewarning']  = 'नाव द्या';
$messages['nopagesizewarning'] = 'पानाचा आकार द्या';
$messages['norecipientwarning'] = 'किमान एकतरी पत्ता द्या ज्यांना तुम्हाला संदेश पाठवावयाचा आहे.';
$messages['nosubjectwarning']  = 'विषय दिलेला नाही. तुम्हाला विषय द्यायचा आहे का?';
$messages['nobodywarning'] = 'संदेशामधे कोणताही मजकूर नाही. तुम्हाला तसाच संदेश पाठवावयाचा आहे का?';
$messages['nosearchname'] = 'कृपया ज्यांना तुम्हाला संदेश पाठवावयाचा आहे त्यांचे नाव किंवा इमेल पत्ता द्या.';
$messages['notuploadedwarning'] = 'सर्व फाईल अजून चढवल्‍या गेलेल्‍या नाहीत. कृपया वाट पहा किंवा मागे फिरा';
$messages['searchsuccessful'] = '$nr संदेष मिळाले.';
$messages['searchnomatch'] = 'शोध घेतल्यानंतर एकही संदेश मिळाला नाही';
$messages['searching'] = 'शोधत आहे......';
$messages['checking'] = 'तपासत आहे.....';
$messages['nospellerrors'] = 'शुध्दलेखनाची चूक सापडली नाही';
$messages['folderdeleted'] = 'फोल्डर यशस्वी रित्या काढून टाकण्यात आला आहे.';
$messages['deletedsuccessfully'] = 'यशस्वी रित्या काढून टाकण्यात आला आहे.';
$messages['converting'] = 'दृष्य स्वरुप काढून टाकण्यात येत आहे.';
$messages['messageopenerror'] = 'सर्व्हरवरुन संदेश आणता आला नाही.';
$messages['fileuploaderror'] = 'फाईल चढवता आली नाही';
$messages['filesizeerror'] = 'तुम्ही चढवलेली फाईल क्षमतेपेक्षा जास्त मोठी आहे.';
$messages['sourceisreadonly'] = 'पत्ता फक्त वाचण्यासाठी आहे.';
$messages['errorsavingcontact'] = 'पत्ता नोंदवहीत ठेवता आला नाही.';
$messages['movingmessage'] = 'संदेश हलवत आहे..';
$messages['copyingmessage'] = 'संदेशाची नक्‍कल करत आहे...';
$messages['receiptsent'] = 'पोचपावती यशस्वीरित्या पाठवण्यात आली आहे.';
$messages['errorsendingreceipt'] = 'पोचपावती पाठवता आली नाही.';
$messages['deleteidentityconfirm'] = 'तुम्हाला ही ओळख नक्की नष्ट करायची आहे का?';
$messages['nodeletelastidentity'] = 'तुम्ही हे खाते काढून टाकू शकत नाही कारण हे तुमचे शेवटचे खाते आहे.';
$messages['forbiddencharacter'] = 'फोल्डरच्या नावात न चालणारी अक्षरे किंवा खूणा आहेत.';
$messages['selectimportfile'] = 'चढवण्यासाठी फाईल निवडा';
$messages['addresswriterror'] = 'निवडलेल्या पत्ता नोंदवहीत नोंद करता येत नाही.';
$messages['contactaddedtogroup'] = 'पत्‍ते यशस्‍वीरित्‍या हया गटात वाढवण्‍यात आले.';
$messages['contactremovedfromgroup'] = 'पत्‍ते यशस्‍वीरित्‍या हया गटातून काढून टाकले.';
$messages['importwait'] = 'आयात करत आहे, कृपया वाट पहा.....';
$messages['importconfirm'] = '<b>$inserted पत्ते यशस्वीरित्या आयात केल, $skipped आधिच असलेल्या नोंदी केल्या नाहीत</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'ही क्रिया करण्यास परवानगी नाही.';
$messages['httpreceivedencrypterror'] = 'हानीकारक चूक झाली. व्‍यवस्‍थापकाशी तात्‍काळ संपर्क साधा. <b> तुमचा संदेश पाठवला नाही </b>';
$messages['smtpconnerror'] = 'SMTP चूक ($code): सर्व्‍हरशी संपर्क साधता येत नाही';
$messages['smtpautherror'] = 'SMTP चूक ($code): ओळख पटवता येत नाही';
$messages['smtpfromerror'] = 'SMTP चूक ($code): "$from" पाठवणार्‍याचे नाव टाकता आले नाही';
$messages['smtptoerror'] = 'SMTP चूक ($code): प्राप्‍तकर्ता "$to" टाकता आला नाही';
$messages['smtprecipientserror'] = 'SMTP चूक : प्राप्‍तकर्त्‍यांची यादी चालू करता आली नाही';
$messages['smtperror'] = 'SMTP चूक : $msg';
$messages['toomanyrecipients'] = 'खूप जास्‍त प्राप्‍तकर्ते. प्राप्‍तकर्त्‍यांची संख्‍या $max पर्यंत कमी करा';
$messages['maxgroupmembersreached'] = 'गट सभासद संख्‍या $max पेक्षा जास्‍त झाली आहे';
localization/ti/labels.inc000064400000005371151727150570011625 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'ሰናይ ምምጻእ ናብ $product';
$labels['username'] = 'ሽምዓሙና';
$labels['password'] = 'መሐለፊ ቃል';
$labels['server'] = 'ውሃቢ ግልጋሎት';
$labels['login'] = 'ክኣቱ';
$labels['logout'] = 'ክውጽእ';
$labels['mail'] = 'ደብዳበ';
$labels['settings'] = 'ከመንታይ';
$labels['addressbook'] = 'መጽሓፍ አድራሻ';
$labels['inbox'] = 'ሳጹን አታዊ';
$labels['drafts'] = 'ወጡን ጽሑፍ';
$labels['sent'] = 'ዝተለኣኸ';
$labels['trash'] = 'እንዳጉሓፍ';
$labels['junk'] = 'እንዳቅንጠመንጢ';
$labels['subject'] = 'ዋኒን';
$labels['from'] = 'ካብ';
$labels['sender'] = 'ልኣኺ(ት)';
$labels['to'] = 'ናብ';
$labels['cc'] = 'ካኮ';
$labels['bcc'] = 'ሕካኮ';
$labels['replyto'] = 'ተመላሲ ናብ';
$labels['followupto'] = 'ናብ...ዝስዓበ';
$labels['date'] = 'ዕለት';
$labels['size'] = 'መጠን';
$labels['priority'] = 'ህጹጽነት';
$labels['organization'] = 'ውድብ';
$labels['readstatus'] = 'ምንባቡ';
$labels['listoptions'] = 'መማርጽታት ዝርዝር';
$labels['mailboxlist'] = 'ማህዸራት';
$labels['messagesfromto'] = '$countይ መልእኽቲ ካብ $from ናብ $to  ';
$labels['sun'] = 'ሰንበ';
$labels['mon'] = 'ሰኑይ';
$labels['tue'] = 'ሰሉስ';
$labels['wed'] = 'ረቡዕ';
$labels['thu'] = 'ሓሙስ';
$labels['fri'] = 'ዓርቢ';
$labels['sat'] = 'ቀዳም';
$labels['sunday'] = 'ሰንበት';
$labels['monday'] = 'ሰኑይ';
$labels['tuesday'] = 'ሰሉስ';
$labels['wednesday'] = 'ረቡዕ';
$labels['thursday'] = 'ሓሙስ';
$labels['friday'] = 'ዓርቢ ';
$labels['saturday'] = 'ቀዳም';
$labels['isread'] = 'ከንብብ';
$labels['insert'] = 'ይሸጎጥ';
$labels['other'] = 'ካሊእ';
$labels['typeother'] = 'ካሊእ';
$labels['delete'] = 'ይጥፋእ';
$labels['about'] = 'ብዛዕባ';
$labels['folders'] = 'ማህዸራት';
$labels['create'] = 'ይፈጠር';
$labels['license'] = 'ፍቓድ';
localization/ti/messages.inc000064400000002413151727150570012164 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'ተጓንፎ ጋዶ';
$messages['loginfailed']  = 'ከይዲ ምእታዎ ፈሺሉ';
$messages['cookiesdisabled'] = 'ጎስጓሲ ኢንተርኔት ዛላማላ አይቕበልን';
$messages['sessionerror'] = 'እዋኑ ዝሓለፎ ወይ ዋጋ ዘይብሉ ካርነ ምጥቃም ክልክል እዩ::';
$messages['storageerror'] = 'ናብ ውሃቢ ግልጋሉት ቆፎ ረኽቢ አይተኻለን::';
$messages['servererror'] = 'ጋዶ ውሃቢት ግልጋሉት';
localization/eo/labels.inc000064400000032317151727150570011614 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bonvenon al $product';
$labels['username'] = 'Uzantnomo';
$labels['password'] = 'Pasvorto';
$labels['server'] = 'Servilo';
$labels['login'] = 'Ensaluti';
$labels['logout'] = 'Elsaluti';
$labels['mail'] = 'Retpoŝto';
$labels['settings'] = 'Agordoj';
$labels['addressbook'] = 'Adresaro';
$labels['inbox'] = 'Ricevitujo';
$labels['drafts'] = 'Malnetujo';
$labels['sent'] = 'Senditujo';
$labels['trash'] = 'Rubujo';
$labels['junk'] = 'Spamujo';
$labels['subject'] = 'Temo';
$labels['from'] = 'Sendanto';
$labels['sender'] = 'Sendinto';
$labels['to'] = 'Ricevanto';
$labels['cc'] = 'Kopio';
$labels['bcc'] = 'Blindkopio';
$labels['replyto'] = 'Respondu-Al';
$labels['followupto'] = 'Respondo-Al';
$labels['date'] = 'Dato';
$labels['size'] = 'Grando';
$labels['priority'] = 'Prioritato';
$labels['organization'] = 'Organizo';
$labels['readstatus'] = 'Legis statuson';
$labels['listoptions'] = 'List-agordoj...';
$labels['mailboxlist'] = 'Dosierujoj';
$labels['messagesfromto'] = 'Mesaĝoj ekde $from ĝis $to de $count';
$labels['threadsfromto'] = 'Fadenoj $from al $to de $count';
$labels['messagenrof'] = 'Mesaĝo $nr-a de $count';
$labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Kopii';
$labels['move'] = 'Movi';
$labels['moveto'] = 'transloku al...';
$labels['download'] = 'elŝutu';
$labels['showattachment'] = 'Montri';
$labels['showanyway'] = 'Tamen montri ĝin';
$labels['filename'] = 'Dosiernomo';
$labels['filesize'] = 'Dosiergrando';
$labels['addtoaddressbook'] = 'Aldonu al adresaro';
$labels['sun'] = 'Dim';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mer';
$labels['thu'] = 'Ĵaŭ';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sab';
$labels['sunday'] = 'Dimanĉo';
$labels['monday'] = 'Lundo';
$labels['tuesday'] = 'Mardo';
$labels['wednesday'] = 'Merkredo';
$labels['thursday'] = 'Ĵaŭdo';
$labels['friday'] = 'Vendredo';
$labels['saturday'] = 'Sabato';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Majo';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aŭg';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Januaro';
$labels['longfeb'] = 'Februaro';
$labels['longmar'] = 'Marto';
$labels['longapr'] = 'Aprilo';
$labels['longmay'] = 'Majo';
$labels['longjun'] = 'Junio';
$labels['longjul'] = 'Julio';
$labels['longaug'] = 'Aŭgusto';
$labels['longsep'] = 'Septembro';
$labels['longoct'] = 'Oktobro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Decembro';
$labels['today'] = 'Hodiaŭ';
$labels['refresh'] = 'Aktualigi';
$labels['checkmail'] = 'Kontroli por novaj mesaĝoj';
$labels['compose'] = 'Verki';
$labels['writenewmessage'] = 'Verki novan mesaĝon';
$labels['reply'] = 'Respondi';
$labels['replytomessage'] = 'Respondi al sendanto';
$labels['replytoallmessage'] = 'Respondi al listo aŭ al sendanto kaj al ĉiuj ricevintoj';
$labels['replyall'] = 'Respondi al ĉiuj';
$labels['replylist'] = 'Respondi al listo';
$labels['forward'] = 'Plusendi';
$labels['forwardinline'] = 'Plusendu enmesaĝe';
$labels['forwardattachment'] = 'Plusendu alfikse';
$labels['forwardmessage'] = 'Plusendu mesaĝon';
$labels['deletemessage'] = 'Forigu mesaĝon';
$labels['movemessagetotrash'] = 'Transloku mesaĝon al rubujo';
$labels['printmessage'] = 'Printu ĉi tiun mesaĝon';
$labels['previousmessage'] = 'Montru antaŭan mesaĝon';
$labels['firstmessage'] = 'Montru unuan mesaĝon';
$labels['nextmessage'] = 'Montru sekvan mesaĝon';
$labels['lastmessage'] = 'Montru lastan mesaĝon';
$labels['backtolist'] = 'Reen al mesaĝo-listo';
$labels['viewsource'] = 'Montri fonton';
$labels['mark'] = 'Marki';
$labels['markmessages'] = 'Marki mesaĝojn';
$labels['markread'] = 'Kiel legita';
$labels['markunread'] = 'Kiel nelegita';
$labels['markflagged'] = 'kiel markita';
$labels['markunflagged'] = 'kiel nemarkita';
$labels['moreactions'] = 'Pliaj agoj';
$labels['more'] = 'Pli';
$labels['back'] = 'Malantaŭen';
$labels['options'] = 'Agordoj';
$labels['select'] = 'Elektu';
$labels['all'] = 'Ĉion';
$labels['none'] = 'Nenion';
$labels['currpage'] = 'Nuna paĝo';
$labels['isread'] = 'Legi';
$labels['unread'] = 'Nelegitan';
$labels['flagged'] = 'Markita';
$labels['unanswered'] = 'Nerespondita';
$labels['deleted'] = 'Forigita';
$labels['undeleted'] = 'Ne forigita';
$labels['invert'] = 'Inversigu';
$labels['filter'] = 'Filtru';
$labels['list'] = 'Listo';
$labels['threads'] = 'Fadenoj';
$labels['expand-all'] = 'Malfaldi ĉion';
$labels['expand-unread'] = 'Malfaldi Nelegitajn';
$labels['collapse-all'] = 'Faldi ĉion';
$labels['threaded'] = 'Fadenita';
$labels['autoexpand_threads'] = 'Malfaldi mesaĝ-fadenojn';
$labels['do_expand'] = 'Ĉiuj fadenoj';
$labels['expand_only_unread'] = 'Nur kun nelegitaj mesaĝoj';
$labels['fromto'] = 'De/Al';
$labels['flag'] = 'Marko';
$labels['attachment'] = 'Aldonaĵo';
$labels['nonesort'] = 'Nenion';
$labels['sentdate'] = 'Send-dato';
$labels['arrival'] = 'Ricev-dato';
$labels['asc'] = 'kreskante';
$labels['desc'] = 'malkreskante';
$labels['listcolumns'] = 'List-rubrikoj';
$labels['listsorting'] = 'Ordig-rubriko';
$labels['listorder'] = 'Ordig-ordo';
$labels['listmode'] = 'Lista vido';
$labels['layoutlist'] = 'Listo';
$labels['folderactions'] = 'Dosierujo-agoj';
$labels['compact'] = 'Kompakta';
$labels['empty'] = 'Malplena';
$labels['quota'] = 'Diskuzo';
$labels['unknown'] = 'nekonata';
$labels['unlimited'] = 'senlima';
$labels['quicksearch'] = 'Rapida serĉo';
$labels['resetsearch'] = 'Vakigu serĉon';
$labels['searchmod'] = 'Serĉ-opcioj';
$labels['msgtext'] = 'Tuta mesaĝo';
$labels['openinextwin'] = 'Malfermu en nova fenestro';
$labels['emlsave'] = 'Elŝutu (.eml)';
$labels['editasnew'] = 'Redaktu kiel nova';
$labels['send'] = 'Sendi';
$labels['sendmessage'] = 'Sendu mesaĝon';
$labels['savemessage'] = 'Savu ĉi tiun malneton';
$labels['addattachment'] = 'Alfiksu dosieron';
$labels['charset'] = 'Karaktraro';
$labels['editortype'] = 'Speco de redaktilo';
$labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Ricev-status-konfirmo';
$labels['mailreplyintro'] = 'Je $date, $sender skribis:';
$labels['originalmessage'] = 'Originala mesaĝo';
$labels['insert'] = 'Enmeti';
$labels['recipient'] = 'Ricevanto';
$labels['editidents'] = 'Redaktu identojn';
$labels['spellcheck'] = 'Literumu';
$labels['checkspelling'] = 'Kontrolu literumadon';
$labels['resumeediting'] = 'Rekomencu redaktadon';
$labels['revertto'] = 'Reiru al';
$labels['attach'] = 'Alfiksu';
$labels['attachments'] = 'Alfiksaĵoj';
$labels['upload'] = 'Alŝutu';
$labels['close'] = 'Fermi';
$labels['messageoptions'] = 'Mesaĝ-agordoj...';
$labels['low'] = 'Malalta';
$labels['lowest'] = 'Plej malalta';
$labels['normal'] = 'Normala';
$labels['high'] = 'Alta';
$labels['highest'] = 'Plej alta';
$labels['nosubject'] = '(sen temo)';
$labels['showimages'] = 'Montru bildojn';
$labels['alwaysshow'] = 'Ĉiam montru bildojn de $sender';
$labels['isdraft'] = 'Ĉi-mesaĝo estas malneto';
$labels['andnmore'] = '$nr pli';
$labels['togglemoreheaders'] = 'Montri pli multajn mesaĝtitolojn';
$labels['togglefullheaders'] = 'Maligi ĉu mesaĝaj titoloj nudu';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plata teksto';
$labels['savesentmessagein'] = 'Konservu senditan mesaĝon en';
$labels['dontsave'] = 'Ne konservu';
$labels['maxuploadsize'] = 'Maksimuma permesata dosier-grando estas $size';
$labels['addcc'] = 'Aldonu kopi-ricevanton';
$labels['addbcc'] = 'Aldonu blindan kopi-ricevanton';
$labels['addreplyto'] = 'Aldonu Respondu-Al';
$labels['addfollowupto'] = 'Aldonu Respondu-Al';
$labels['mdnrequest'] = 'La sendinto de ĉi tiu mesaĝo petis sciigon de kiam vi legas ĝin. Ĉu volas sciigi la sendinton?';
$labels['receiptread'] = 'Legokonfirmo';
$labels['yourmessage'] = 'Jen estas legokonfirmo de via mesaĝo';
$labels['receiptnote'] = 'Notu: Ĉi tiu konfirmo nur asertas ke la mesaĝo estis malfermita je la komputilo de la ricevinto. Ne estas garantio ke la ricevinto legis aŭ komprenis la enhavon.';
$labels['name'] = 'Nomo';
$labels['firstname'] = 'Antaŭnomo';
$labels['surname'] = 'Familia nomo';
$labels['middlename'] = 'Meza Nomo';
$labels['nameprefix'] = 'Prefikso';
$labels['namesuffix'] = 'Sufikso';
$labels['nickname'] = 'Kromnomo';
$labels['jobtitle'] = 'Postena titolo';
$labels['department'] = 'Departemento';
$labels['gender'] = 'Sekso';
$labels['maidenname'] = 'Fraŭla nomo';
$labels['email'] = 'Retpoŝto';
$labels['phone'] = 'Telefono';
$labels['address'] = 'Adreso';
$labels['street'] = 'Strato';
$labels['locality'] = 'Urbo';
$labels['zipcode'] = 'Poŝt-kodo';
$labels['region'] = 'Ŝtato/Provinco';
$labels['country'] = 'Lando';
$labels['birthday'] = 'Naskiĝdato';
$labels['anniversary'] = 'Datreveno';
$labels['website'] = 'Retejo';
$labels['instantmessenger'] = 'TM';
$labels['notes'] = 'Notoj';
$labels['male'] = 'viro';
$labels['female'] = 'virino';
$labels['manager'] = 'Estro';
$labels['assistant'] = 'Asistanto';
$labels['spouse'] = 'Edz(in)o';
$labels['allfields'] = 'Ĉiuj kampoj';
$labels['search'] = 'Serĉu';
$labels['advsearch'] = 'Detala sercô';
$labels['advanced'] = 'Altnivela';
$labels['other'] = 'Alia';
$labels['typehome'] = 'Hejmo';
$labels['typework'] = 'Laboro';
$labels['typeother'] = 'Alia';
$labels['typemobile'] = 'Poŝtelefono';
$labels['typemain'] = 'Ĉefa';
$labels['typehomefax'] = 'Hejma faksilo';
$labels['typeworkfax'] = 'Laboreja faksilo';
$labels['typecar'] = 'Aŭtomobilo';
$labels['typepager'] = 'Televokilo';
$labels['typeassistant'] = 'Asistanto';
$labels['typehomepage'] = 'Hejmpaĝo';
$labels['typeblog'] = 'Blogo';
$labels['typeprofile'] = 'Profilo';
$labels['addfield'] = 'Aldonu kampon...';
$labels['editcontact'] = 'Redaktu kontakton';
$labels['contacts'] = 'Kontaktoj';
$labels['contactproperties'] = 'Kontakt-informoj';
$labels['personalinfo'] = 'Personaj informoj';
$labels['edit'] = 'Redaktu';
$labels['cancel'] = 'Nuligi';
$labels['save'] = 'Konservi';
$labels['delete'] = 'Forigi';
$labels['rename'] = 'Alinomu';
$labels['addphoto'] = 'Aldonu';
$labels['replacephoto'] = 'Anstataŭu';
$labels['uploadphoto'] = 'Alŝutu bildon';
$labels['deletecontact'] = 'Forigu elektatajn kontaktojn';
$labels['composeto'] = 'Verku mesaĝon al';
$labels['contactsfromto'] = 'Kontaktoj ekde $from ĝis $to de $count';
$labels['print'] = 'Presi';
$labels['export'] = 'Elporti';
$labels['previouspage'] = 'Montru auntaŭan';
$labels['firstpage'] = 'Montru unuan';
$labels['nextpage'] = 'Montru sekvan';
$labels['lastpage'] = 'Montru lastan';
$labels['groups'] = 'Grupoj';
$labels['personaladrbook'] = 'Persona Adresoj';
$labels['settingsfor'] = 'Preferoj de';
$labels['about'] = 'Pri';
$labels['preferences'] = 'Preferoj';
$labels['userpreferences'] = 'Uzant-preferoj';
$labels['editpreferences'] = 'Redaktu uzant-preferojn';
$labels['identities'] = 'Identoj';
$labels['preferhtml'] = 'Montru HTML';
$labels['htmlmessage'] = 'HTML Mesaĝo';
$labels['prettydate'] = 'Agrablaj Datoj';
$labels['setdefault'] = 'Agordu kiel norma';
$labels['language'] = 'Lingvo';
$labels['timezone'] = 'Tempzono';
$labels['pagesize'] = 'Mesaĝoj po paĝo';
$labels['signature'] = 'Subskribo';
$labels['dstactive'] = 'Taglumsavado';
$labels['htmleditor'] = 'Uzado de HTML-redaktilo';
$labels['htmlsignature'] = 'HTML subskribo';
$labels['previewpane'] = 'Montru antaŭrigardejon';
$labels['skin'] = 'Interfaco-etoso';
$labels['logoutclear'] = 'Malplenigu rubujon je eliro';
$labels['logoutcompact'] = 'Kompaktigu ricevitujon je eliro';
$labels['uisettings'] = 'Uzanto-interfaco';
$labels['serversettings'] = 'Servilo-agordo';
$labels['mailboxview'] = 'Ricevitujo vido';
$labels['mdnrequests'] = 'Sendanto-sciigoj';
$labels['askuser'] = 'demandu';
$labels['autosend'] = 'sendu aŭtomate';
$labels['readwhendeleted'] = 'Marku mesaĝon kiel legita kiam forigata';
$labels['flagfordeletion'] = 'Marku mesaĝon kiel forigita anstataŭ forigi';
$labels['showinlineimages'] = 'Montru alfiksitajn bildojn sub la mesaĝo';
$labels['autosavedraft'] = 'Aŭtomate savu malneton';
$labels['never'] = 'neniam';
$labels['messagesdisplaying'] = 'Mesaĝoj vidigante';
$labels['messagescomposition'] = 'Mesaĝo-verkado';
$labels['allmessages'] = 'ĉiuj mesaĝoj';
$labels['folder'] = 'Dosierujo';
$labels['folders'] = 'Dosierujoj';
$labels['foldername'] = 'Dosierujo-nomo';
$labels['subscribed'] = 'Abonata';
$labels['messagecount'] = 'Mesaĝoj';
$labels['create'] = 'Krei';
$labels['createfolder'] = 'Kreu novan dosierujon';
$labels['managefolders'] = 'Administru dosierujon';
$labels['sortby'] = 'Ordigu per';
$labels['sortasc'] = 'Ordigu kreskante';
$labels['sortdesc'] = 'Ordigu malkreskante';
$labels['license'] = 'Permesilo';
localization/eo/messages.inc000064400000011317151727150570012156 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Eraro okazis!';
$messages['loginfailed']  = 'Malsukcesis ensaluti';
$messages['cookiesdisabled'] = 'Via foliumilo ne akceptas kuketojn';
$messages['sessionerror'] = 'Via seanco estas nevalida aŭ finita';
$messages['storageerror'] = 'Konekto kun IMAP-servilo malsukcesis';
$messages['servererror'] = 'Servil-eraro!';
$messages['servererrormsg'] = 'Servil-eraro: $msg';
$messages['dberror'] = 'Datumbaz-eraro!';
$messages['errorreadonly'] = 'Ne povis fari agon. Dosierujo estas nurlega';
$messages['errornoperm'] = 'Ne povis fari agon. Ne havas permeson.';
$messages['invalidrequest'] = 'Nevalida peto';
$messages['invalidhost'] = 'Nevalida servilo-nomo';
$messages['nomessagesfound'] = 'Neniu mesaĝo en ĉi tiu dosierujo';
$messages['nomessages'] = 'Neniu mesaĝo';
$messages['loading'] = 'Ŝarganta...';
$messages['uploading'] = 'Alŝutanta dosieron...';
$messages['uploadingmany'] = 'Alŝutanta dosierojn...';
$messages['loadingdata'] = 'Ŝarganta datumojn...';
$messages['checkingmail'] = 'Kontrolanta, ĉu  novaj mesaĝoj...';
$messages['sendingmessage'] = 'Sedanta mesaĝon...';
$messages['messagesent'] = 'Mesaĝo estas sendita sukcese';
$messages['savingmessage'] = 'Savanta mesaĝon...';
$messages['messagesaved'] = 'Mesaĝo savita en Malnetujo';
$messages['successfullysaved'] = 'Sukcese savis';
$messages['addedsuccessfully'] = 'Sukcese aldonis kontakton al adresaro';
$messages['blockedimages'] = 'Por protekti vian privatecon, foraj bildoj estas blokitaj en ĉi tiu mesaĝo.';
$messages['encryptedmessage'] = 'Ĉi tiu mesaĝo estas ĉifrata kaj ne estas montrebla. Pardonu!';
$messages['nocontactsfound'] = 'Trovis neniun kontakton';
$messages['contactnotfound'] = 'La petita kontakto ne trovis';
$messages['sendingfailed'] = 'Ne sukcesis sendi mesaĝon';
$messages['errormoving'] = 'Ne povis transloki mesaĝon';
$messages['errordeleting'] = 'Ne povis forigi mesaĝon';
$messages['deletecontactconfirm']  = 'Ĉu vi vere volas forigi la elektata(j)n kontakto(j)n?';
$messages['deletemessagesconfirm'] = 'Ĉu vi vere volas forigi la elektata(j)n mesaĝo(j)n?';
$messages['deletefolderconfirm']  = 'Ĉu vi vere volas forigi la elektatan dosierujon?';
$messages['purgefolderconfirm']  = 'Ĉu vi vere volas forigi ĉiun mesaĝon el ĉi tiu dosierujo?';
$messages['formincomplete'] = 'La formularo ne estis kompletigita';
$messages['noemailwarning'] = 'Bonvolu enmeti validan retpoŝt-adreson';
$messages['nonamewarning']  = 'Bonvulu enmeti nomon';
$messages['nopagesizewarning'] = 'Bonvolu enmeti paĝ-grando';
$messages['norecipientwarning'] = 'Bonvolu enmeti minumume unu ricevonto';
$messages['nosubjectwarning']  = 'La temkampo estas malplena. Ĉu vi volas skribi temon nun?';
$messages['nobodywarning'] = 'Ĉu sendi ĉi tiun mesaĝon sen teksto?';
$messages['nosearchname'] = 'Bonvolu enmeti kontakt-nomon aŭ retpoŝt-adreson.';
$messages['searchsuccessful'] = 'trovis $nr mesaĝojn';
$messages['searchnomatch'] = 'Serĉo donis nenion';
$messages['searching'] = 'Serĉanta...';
$messages['checking'] = 'Kontrolanta...';
$messages['nospellerrors'] = 'Neniujn literumada eraro trovita';
$messages['folderdeleted'] = 'Forigis dosierujon sukcese';
$messages['deletedsuccessfully'] = 'Sukcese forigis';
$messages['converting'] = 'Foriganta formatan de mesaĝo...';
$messages['messageopenerror'] = 'Ne povis ŝargi mesaĝon de servilo';
$messages['fileuploaderror'] = 'Malsukcesis alŝuti dosieron';
$messages['filesizeerror'] = 'La alŝutita dosiero superas la maksimuman grandon de $size';
$messages['sourceisreadonly'] = 'Ĉi tiu adres-fonto estas nurlegebla';
$messages['errorsavingcontact'] = 'Ne povis savi la kontakt-adreson';
$messages['movingmessage'] = 'Translokanta mesaĝon...';
$messages['receiptsent'] = 'Sukcese sendis konfirmon';
$messages['errorsendingreceipt'] = 'Ne povis sendi konfirmon';
$messages['nodeletelastidentity'] = 'Vi ne povas forigi ĉi tiun identon, ĉar ĝi estas la lasta';
$messages['forbiddencharacter'] = 'Dosierujo-nomo enhavas malpermesitan karaktron';
localization/it_IT/csv2vcard.inc000064400000010363151727150570012651 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/it_IT/csv2vcard.inc                                      |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2014, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Anniversario";
$map['assistants_name'] = "Nome dell'assistente";
$map['assistants_phone'] = "Telefono dell'assistente";
$map['birthday'] = "Compleanno";
$map['business_city'] = "Città di lavoro";
$map['business_countryregion'] = "Nazione/Regione di lavoro";
$map['business_fax'] = "Fax di Lavoro";
$map['business_phone'] = "Telefono di Lavoro";
$map['business_phone_2'] = "Telefono di Lavoro 2";
$map['business_postal_code'] = "CAP di Lavoro";
$map['business_state'] = "Provincia di lavoro";
$map['business_street'] = "Indirizzo di lavoro";
$map['car_phone'] = "Telefono dell'Auto";
$map['categories'] = "Categorie";
$map['company'] = "Società";
$map['department'] = "Reparto";
$map['email_address'] = "Indirizzo E-mail";
$map['email_2_address'] = "Indirizzo E-mail 2";
$map['email_3_address'] = "Indirizzo E-mail 3";
$map['first_name'] = "Nome";
$map['gender'] = "Genere";
$map['home_city'] = "Città di residenza";
$map['home_countryregion'] = "Nazione/Regione di casa";
$map['home_fax'] = "Fax di casa";
$map['home_phone'] = "Telefono di casa";
$map['home_phone_2'] = "Telefono di casa 2";
$map['home_postal_code'] = "CAP di casa";
$map['home_state'] = "Provincia di residenza";
$map['home_street'] = "Indirizzo di casa";
$map['job_title'] = "Qualifica";
$map['last_name'] = "Cognome";
$map['managers_name'] = "Nome del Responsabile";
$map['middle_name'] = "Secondo Nome";
$map['mobile_phone'] = "Telefono Mobile";
$map['notes'] = "Note";
$map['other_city'] = "Città Altro";
$map['other_countryregion'] = "Nazione/Regione Altro";
$map['other_fax'] = "Fax Altro";
$map['other_phone'] = "Phone Altro";
$map['other_postal_code'] = "CAP Postale Altro";
$map['other_state'] = "Stato Altro";
$map['other_street'] = "Via Altro";
$map['pager'] = "Numero cercapersone";
$map['primary_phone'] = "Telefono Principale";
$map['spouse'] = "Coniuge";
$map['suffix'] = "Suffisso";
$map['title'] = "Titolo";
$map['web_page'] = "Pagina Web";
$map['birth_day'] = "Giorno di nascita";
$map['birth_month'] = "Mese di nascita";
$map['birth_year'] = "Anno di nascita";
$map['display_name'] = "Nome visualizzato";
$map['fax_number'] = "Numero fax";
$map['home_address'] = "Indirizzo di casa 2";
$map['home_country'] = "Nazione di residenza";
$map['home_zipcode'] = "CAP di residenza";
$map['mobile_number'] = "Numero cellulare";
$map['nickname'] = "Soprannome";
$map['organization'] = "Organizzazione";
$map['pager_number'] = "Numero Pager";
$map['primary_email'] = "Email principale";
$map['secondary_email'] = "Email secondaria";
$map['web_page_1'] = "Pagina web 1";
$map['web_page_2'] = "Pagina web 2";
$map['work_phone'] = "Telefono lavoro";
$map['work_address'] = "Indirizzo di lavoro 2";
$map['work_country'] = "Nazione di lavoro";
$map['work_zipcode'] = "CAP di lavoro";
$map['date_of_birth'] = "Data di Nascita";
$map['email'] = "Email";
$map['home_mobile'] = "Cellulare di Casa";
$map['home_zip'] = "CAP di casa";
$map['info'] = "Info";
$map['user_photo'] = "Foto";
$map['url'] = "URL";
$map['work_city'] = "Città di Lavoro";
$map['work_company'] = "Società di lavoro";
$map['work_dept'] = "Reparto di lavoro";
$map['work_fax'] = "Fax di lavoro";
$map['work_mobile'] = "Cellulare di lavoro";
$map['work_state'] = "Nazione/Regione di lavoro";
$map['work_title'] = "Titolo di lavoro";
$map['work_zip'] = "CAP di lavoro";
localization/it_IT/labels.inc000064400000103276151727150570012224 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Benvenuto in $product';
$labels['username'] = 'Nome Utente';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Accedi';
$labels['oauthlogin'] = 'Accedi con $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Esci';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Impostazioni';
$labels['addressbook'] = 'Rubrica';
$labels['darkmode'] = 'Modalità scura';
$labels['lightmode'] = 'Modalità chiara';
$labels['inbox'] = 'Posta in arrivo';
$labels['drafts'] = 'Bozze';
$labels['sent'] = 'Inviata';
$labels['trash'] = 'Cestino';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Mostra nomi reali per le cartelle speciali';
$labels['subject'] = 'Oggetto';
$labels['from'] = 'Mittente';
$labels['sender'] = 'Mittente';
$labels['to'] = 'Destinatario';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Ccn';
$labels['replyto'] = 'Rispondi a';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Dimensione';
$labels['priority'] = 'Priorità';
$labels['organization'] = 'Società';
$labels['readstatus'] = 'Visualizza lo stato';
$labels['listoptions'] = 'Elenca opzioni...';
$labels['listoptionstitle'] = 'Elenca opzioni';
$labels['mailboxlist'] = 'Cartelle';
$labels['messagesfromto'] = 'Messaggi da $from a $to di $count';
$labels['threadsfromto'] = 'Argomenti da $from a $to di $count';
$labels['messagenrof'] = 'Messaggio $nr di $count';
$labels['fromtoshort'] = '$from – $to di $count';
$labels['copy'] = 'Copia';
$labels['move'] = 'Sposta';
$labels['moveto'] = 'Sposta in...';
$labels['copyto'] = 'Copia su...';
$labels['download'] = 'Download';
$labels['open'] = 'Apri';
$labels['showattachment'] = 'Visualizza';
$labels['showanyway'] = 'Visualizza comunque';
$labels['filename'] = 'Nome file';
$labels['filesize'] = 'Dimensione file';
$labels['addtoaddressbook'] = 'Aggiungi alla rubrica';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mer';
$labels['thu'] = 'Gio';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sab';
$labels['sunday'] = 'Domenica';
$labels['monday'] = 'Lunedì';
$labels['tuesday'] = 'Martedì';
$labels['wednesday'] = 'Mercoledì';
$labels['thursday'] = 'Giovedì';
$labels['friday'] = 'Venerdì';
$labels['saturday'] = 'Sabato';
$labels['jan'] = 'Gen';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Maggio';
$labels['jun'] = 'Giu';
$labels['jul'] = 'Lug';
$labels['aug'] = 'Ago';
$labels['sep'] = 'Set';
$labels['oct'] = 'Ott';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dic';
$labels['longjan'] = 'Gennaio';
$labels['longfeb'] = 'Febbraio';
$labels['longmar'] = 'Marzo';
$labels['longapr'] = 'Aprile';
$labels['longmay'] = 'Maggio';
$labels['longjun'] = 'Giugno';
$labels['longjul'] = 'Luglio';
$labels['longaug'] = 'Agosto';
$labels['longsep'] = 'Settembre';
$labels['longoct'] = 'Ottobre';
$labels['longnov'] = 'Novembre';
$labels['longdec'] = 'Dicembre';
$labels['today'] = 'Oggi';
$labels['refresh'] = 'Aggiorna';
$labels['checkmail'] = 'Controlla nuovi messaggi';
$labels['compose'] = 'Nuovo messaggio';
$labels['writenewmessage'] = 'Scrivi un nuovo messaggio';
$labels['reply'] = 'Rispondi';
$labels['replytomessage'] = 'Rispondi al mittente';
$labels['replytoallmessage'] = 'Rispondi al mittente e ai destinatari';
$labels['replyall'] = 'Rispondi a tutti';
$labels['replylist'] = 'Rispondi alla mailing list';
$labels['forward'] = 'Inoltra';
$labels['forwardinline'] = 'Inoltra come messaggio';
$labels['forwardattachment'] = 'Inoltra come allegato';
$labels['forwardmessage'] = 'Inoltra il messaggio';
$labels['bouncemsg'] = 'Invia di nuovo (bounce)';
$labels['bounce'] = 'Reinviare';
$labels['deletemessage'] = 'Elimina il messaggio';
$labels['movemessagetotrash'] = 'Sposta il messaggio nel cestino';
$labels['printmessage'] = 'Stampa il messaggio';
$labels['previousmessage'] = 'Visualizza il messaggio precedente';
$labels['firstmessage'] = 'Visualizza il primo messaggio';
$labels['nextmessage'] = 'Visualizza il messaggio successivo';
$labels['lastmessage'] = 'Visualizza l\'ultimo messaggio';
$labels['backtolist'] = 'Torna alla lista messaggi';
$labels['viewsource'] = 'Visualizza sorgente messaggio';
$labels['mark'] = 'Contrassegna';
$labels['markmessages'] = 'Marca i messaggi';
$labels['markread'] = 'Letti';
$labels['markunread'] = 'Non letti';
$labels['markflagged'] = 'Contrassegnato';
$labels['markunflagged'] = 'Non contrassegnato';
$labels['markundeleted'] = 'Come non eliminato';
$labels['moreactions'] = 'Altre operazioni...';
$labels['markallread'] = 'Contrassegna tutti come letti';
$labels['folders-cur'] = 'Seleziona solo la cartelle';
$labels['folders-sub'] = 'Seleziona la cartelle e le sue sottocartelle';
$labels['folders-all'] = 'Tutte le cartelle';
$labels['more'] = 'Azioni';
$labels['back'] = 'Indietro';
$labels['options'] = 'Opzioni';
$labels['composeoptions'] = 'Opzioni di composizione';
$labels['optionsandattachments'] = 'Opzioni ed allegati';
$labels['actions'] = 'Azioni';
$labels['first'] = 'Primo';
$labels['last'] = 'Ultimo';
$labels['previous'] = 'Precedente';
$labels['next'] = 'Successivo';
$labels['select'] = 'Seleziona';
$labels['selection'] = 'Selezione';
$labels['all'] = 'Tutti';
$labels['none'] = 'Nessuno';
$labels['currpage'] = 'Pagina corrente';
$labels['isread'] = 'Letto';
$labels['unread'] = 'Non letto';
$labels['flagged'] = 'Contrassegnato';
$labels['unflagged'] = 'Non contrassegnato';
$labels['unanswered'] = 'Senza risposta';
$labels['withattachment'] = 'Con allegato';
$labels['deleted'] = 'Eliminato';
$labels['undeleted'] = 'Non eliminato';
$labels['replied'] = 'Risposta';
$labels['forwarded'] = 'Inoltrata';
$labels['invert'] = 'Inverti';
$labels['filter'] = 'Filtra';
$labels['list'] = 'Elenco';
$labels['threads'] = 'Argomenti';
$labels['expand-all'] = 'Espandi tutto';
$labels['expand-unread'] = 'Espandi non letti';
$labels['collapse-all'] = 'Richiudi tutti';
$labels['threaded'] = 'Per argomenti';
$labels['showunread'] = 'Mostra messaggi non letti';
$labels['autoexpand_threads'] = 'Espandi';
$labels['do_expand'] = 'tutti gli argomenti';
$labels['expand_only_unread'] = 'solo con messaggi non letti';
$labels['fromto'] = 'Mittente/Destinatario';
$labels['flag'] = 'Contrassegnato';
$labels['attachment'] = 'Allegato';
$labels['nonesort'] = 'Nessuno';
$labels['sentdate'] = 'Data d\'invio';
$labels['arrival'] = 'Data di arrivo';
$labels['asc'] = 'crescente';
$labels['desc'] = 'descrescente';
$labels['listcolumns'] = 'Elenca colonne';
$labels['listsorting'] = 'Ordina per';
$labels['listorder'] = 'Ordinamento';
$labels['listmode'] = 'Modalità di visualizzazione';
$labels['lmode'] = 'Modalità lista';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Widescreen';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Elenco';
$labels['layoutwidescreendesc'] = 'Schermo largo (vista a 3 colonne)';
$labels['layoutdesktopdesc'] = 'Desktop (elenco ampio e anteprima del messaggio di sotto)';
$labels['layoutlistdesc'] = 'Elenco (senza anteprima del messaggio)';
$labels['folderactions'] = 'Azioni cartella...';
$labels['compact'] = 'Compatta';
$labels['empty'] = 'Svuota';
$labels['importmessages'] = 'Importa messaggi';
$labels['mailimportdesc'] = 'Puoi importare file di e-mail in formato <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> o <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Files multipli possono essere compressi in archivi zip.';
$labels['quota'] = 'Spazio utilizzato';
$labels['unknown'] = 'sconosciuto';
$labels['unlimited'] = 'illimitato';
$labels['quotatype'] = 'Tipo di quota';
$labels['quotatotal'] = 'Limite';
$labels['quotaused'] = 'Utilizzato';
$labels['quotastorage'] = 'Spazio disco';
$labels['quotamessage'] = 'Contatore messaggi';
$labels['shortheaderdate'] = 'Il $date';
$labels['shortheaderto'] = 'A $to il $date';
$labels['shortheaderfrom'] = 'Da $from il $date';
$labels['quicksearch'] = 'Ricerca veloce';
$labels['searchplaceholder'] = 'Cerca...';
$labels['resetsearch'] = 'Annulla ricerca';
$labels['searchmod'] = 'Ambito di ricerca';
$labels['msgtext'] = 'Intero messaggio';
$labels['body'] = 'Corpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
$labels['searchscope'] = 'Contesto';
$labels['currentfolder'] = 'Cartella corrente';
$labels['subfolders'] = 'Questa e le sottocartelle';
$labels['allfolders'] = 'Tutte le cartelle';
$labels['searchinterval-1W'] = 'più vecchio di una settimana';
$labels['searchinterval-1M'] = 'più vecchio di un mese';
$labels['searchinterval-1Y'] = 'più vecchio di un anno';
$labels['searchinterval1W'] = 'più recente di una settimana';
$labels['searchinterval1M'] = 'più recente di un mese';
$labels['searchinterval1Y'] = 'più recente di un anno';
$labels['openinextwin'] = 'Apri in una nuova finestra';
$labels['emlsave'] = 'Scarica (.eml)';
$labels['changeformattext'] = 'Visualizza nel formato testo semplice';
$labels['changeformathtml'] = 'Visualizza nel formato HTML';
$labels['editasnew'] = 'Modifica come nuovo';
$labels['send'] = 'Invia';
$labels['sendmessage'] = 'Invia messaggio';
$labels['savemessage'] = 'Salva come bozza';
$labels['addattachment'] = 'Allega un file';
$labels['charset'] = 'Insieme di caratteri';
$labels['editortype'] = 'Tipo editor';
$labels['returnreceipt'] = 'Ricevuta di ritorno';
$labels['dsn'] = 'Notifica di consegna';
$labels['keepformatting'] = 'Mantieni la formattazione';
$labels['mailreplyintro'] = 'Il $date $sender ha scritto:';
$labels['originalmessage'] = 'Messaggio originale';
$labels['selectimage'] = 'Selezione immagine';
$labels['addimage'] = 'Aggiungi immagine';
$labels['selectmedia'] = 'Seleziona video';
$labels['addmedia'] = 'Aggiungi video';
$labels['encrypt'] = 'Cifra';
$labels['encryptmessage'] = 'Cifra il messaggio';
$labels['encryptmessagemailvelope'] = 'Cifra il messaggio con Mailvelope';
$labels['importpubkeys'] = 'Importa le chiavi pubbliche';
$labels['encryptedsendialog'] = 'Invia un messaggio cifrato';
$labels['encryptandsign'] = 'Cifra e firma';
$labels['keyid'] = 'ID della chiave';
$labels['keylength'] = 'Bit';
$labels['keyexpired'] = 'Scaduta';
$labels['keyrevoked'] = 'Revocata';
$labels['bccinstead'] = 'Usa ccn';
$labels['addheader'] = 'Aggiungi destinatario (intestazione)';
$labels['insert'] = 'Inserisci';
$labels['insertcontact'] = 'Aggiungi contatto(i)';
$labels['recipient'] = 'Destinatario';
$labels['recipientedit'] = 'Modifica il destinatario';
$labels['editidents'] = 'Modifica identità';
$labels['spellcheck'] = 'Controllo ortografico';
$labels['checkspelling'] = 'Controlla ortografia';
$labels['resumeediting'] = 'Torna al messaggio';
$labels['revertto'] = 'Ripristina';
$labels['restore'] = 'Ripristina';
$labels['restoremessage'] = 'Ripristinare il messaggio?';
$labels['ignore'] = 'Ignora';
$labels['responses'] = 'Risposte';
$labels['insertresponse'] = 'Inserisci una risposta';
$labels['manageresponses'] = 'Gestione risposte';
$labels['newresponse'] = 'Crea una nuova risposta';
$labels['addresponse'] = 'Aggiungi risposta';
$labels['editresponse'] = 'Modifica risposta';
$labels['editresponses'] = 'Modifica risposte';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Testo della risposta';
$labels['attach'] = 'Allega';
$labels['attachments'] = 'Allegati';
$labels['upload'] = 'Invia';
$labels['uploadprogress'] = '$percent ($current su $total)';
$labels['close'] = 'Chiudi';
$labels['messageoptions'] = 'Opzioni messaggi...';
$labels['togglecomposeoptions'] = 'Passa alle impostazioni di composizione';
$labels['attachmentrename'] = 'Rinomina allegato';
$labels['low'] = 'Bassa';
$labels['lowest'] = 'Molto bassa';
$labels['normal'] = 'Normale';
$labels['high'] = 'Alta';
$labels['highest'] = 'Molto alta';
$labels['nosubject'] = '(nessun oggetto)';
$labels['showimages'] = 'Visualizza immagini';
$labels['allow'] = 'Permetti';
$labels['alwaysshow'] = 'Mostra sempre immagini da $sender';
$labels['alwaysallow'] = 'Permetti sempre da $sender';
$labels['isdraft'] = 'Questa è una bozza.';
$labels['andnmore'] = 'ancora $nr...';
$labels['details'] = 'Dettagli';
$labels['summary'] = 'Riepilogo';
$labels['headers'] = 'Intestazioni';
$labels['allheaders'] = 'Tutte le intestazioni...';
$labels['togglemoreheaders'] = 'Mostra più intestazioni dei messaggi';
$labels['togglefullheaders'] = 'Visualizza/nascondi intestazioni originali';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testo semplice';
$labels['savesentmessagein'] = 'Salva i messaggi inviati in';
$labels['dontsave'] = 'non salvare';
$labels['maxuploadsize'] = 'La dimensione massima consentita è $size';
$labels['addcc'] = 'Aggiungi Cc';
$labels['addbcc'] = 'Aggiungi Ccn';
$labels['addreplyto'] = 'Aggiungi Rispondi a';
$labels['addfollowupto'] = 'Aggiungi Followup-To';
$labels['sendreceipt'] = 'Invia conferma di lettura?';
$labels['mdnrequest'] = 'Il mittente ha richiesto di ricevere una notifica dell\'avvenuta lettura del messaggio. Intendi inviare tale notifica?';
$labels['receiptread'] = 'Ricevuta di ritorno (letto)';
$labels['yourmessage'] = 'Questa è la ricevuta di ritorno del messaggio inviato';
$labels['receiptnote'] = 'Nota: questa Ricevuta di ritorno attesta solamente che il messaggio è stato visualizzato nel computer del destinatario. Non c\'è pertanto alcuna garanzia che il destinatario abbia letto o compreso il suo contenuto.';
$labels['sendalwaysto'] = 'Invia sempre a $email';
$labels['zoomin'] = 'Ingrandisci';
$labels['zoomout'] = 'Rimpicciolisci';
$labels['rotate'] = 'Ruota';
$labels['increaseimage'] = 'Aumenta dimensione dell\'immagine';
$labels['decreaseimage'] = 'Diminuisci dimensione dell\'immagine';
$labels['rotateimage'] = 'Ruota immagine';
$labels['showtools'] = 'Mostra strumenti per l\'immagine';
$labels['hidetools'] = 'Nascondi strumenti per l\'immagine';
$labels['name'] = 'Nome visualizzato';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Cognome';
$labels['middlename'] = 'Secondo nome';
$labels['nameprefix'] = 'Prefisso';
$labels['namesuffix'] = 'Suffisso';
$labels['nickname'] = 'Soprannome';
$labels['jobtitle'] = 'Qualifica';
$labels['department'] = 'Dipartimento';
$labels['gender'] = 'Sesso';
$labels['maidenname'] = 'Cognome da nubile';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefono';
$labels['address'] = 'Indirizzo';
$labels['street'] = 'Via';
$labels['locality'] = 'Città';
$labels['zipcode'] = 'CAP';
$labels['region'] = 'Stato/provincia';
$labels['country'] = 'Nazione';
$labels['birthday'] = 'Compleanno';
$labels['anniversary'] = 'Anniversario';
$labels['website'] = 'Sito web';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Note';
$labels['male'] = 'maschio';
$labels['female'] = 'femmina';
$labels['manager'] = 'Dirigente';
$labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Coniuge';
$labels['allfields'] = 'Tutti i campi';
$labels['search'] = 'Ricerca';
$labels['searchresult'] = 'Risultati ricerca';
$labels['advsearch'] = 'Ricerca avanzata';
$labels['advanced'] = 'Avanzata';
$labels['other'] = 'Altro';
$labels['printcontact'] = 'Stampa contatto';
$labels['qrcode'] = 'Codice QR';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Lavoro';
$labels['typeother'] = 'Altro';
$labels['typemobile'] = 'Cellulare';
$labels['typemain'] = 'Principale';
$labels['typehomefax'] = 'Fax casa';
$labels['typeworkfax'] = 'Fax lavoro';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Teledrin';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Home page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profilo';
$labels['addfield'] = 'Aggiungi campo...';
$labels['addcontact'] = 'Aggiungi contatto';
$labels['editcontact'] = 'Modifica contatto';
$labels['contacts'] = 'Contatti';
$labels['contactproperties'] = 'Proprietà contatto';
$labels['contactnameandorg'] = 'Nome e società';
$labels['personalinfo'] = 'Informazioni personali';
$labels['personal'] = 'Personale';
$labels['contactphoto'] = 'Avatar';
$labels['edit'] = 'Modifica';
$labels['cancel'] = 'Annulla';
$labels['save'] = 'Salva';
$labels['delete'] = 'Elimina';
$labels['discard'] = 'Scarta';
$labels['continue'] = 'Continua';
$labels['ok'] = 'Ok';
$labels['rename'] = 'Rinomina';
$labels['addphoto'] = 'Aggiungi';
$labels['replacephoto'] = 'Sostituisci';
$labels['uploadphoto'] = 'Carica foto';
$labels['choosefile'] = 'Seleziona il file...';
$labels['choosefiles'] = 'Seleziona i files...';
$labels['browse'] = 'Sfoglia';
$labels['newcontact'] = 'Crea un nuovo contatto';
$labels['deletecontact'] = 'Elimina i contatti selezionati';
$labels['composeto'] = 'Invia messaggio a';
$labels['contactsfromto'] = 'Contatti da $from a $to di $count';
$labels['print'] = 'Stampa';
$labels['export'] = 'Esporta';
$labels['exportall'] = 'Esporta tutto';
$labels['exportsel'] = 'Esporta selezionati';
$labels['exportvcards'] = 'Esporta i contatti in formato vCard';
$labels['newgroup'] = 'Crea un nuovo gruppo';
$labels['addgroup'] = 'Aggiungi gruppo';
$labels['grouprename'] = 'Rinomina il gruppo';
$labels['groupdelete'] = 'Elimina il gruppo';
$labels['groupassign'] = 'Assegna a gruppo...';
$labels['groupremove'] = 'Rimuovi dal gruppo';
$labels['groupremoveselected'] = 'Rimuovi i contatti selezionati dal gruppo';
$labels['uponelevel'] = 'Sali di un livello';
$labels['previouspage'] = 'Pagina precedente';
$labels['firstpage'] = 'Prima pagina';
$labels['nextpage'] = 'Pagina successiva';
$labels['lastpage'] = 'Ultima pagina';
$labels['group'] = 'Gruppo';
$labels['groups'] = 'Gruppi';
$labels['listgroup'] = 'Elenca membri dei gruppi';
$labels['personaladrbook'] = 'Rubrica personale';
$labels['searchsave'] = 'Salva ricerca';
$labels['searchdelete'] = 'Elimina ricerca';
$labels['import'] = 'Importa';
$labels['importcontacts'] = 'Importa contatti';
$labels['importfromfile'] = 'Importa da file';
$labels['importtarget'] = 'Aggiungi contatti a';
$labels['importreplace'] = 'Sostituisci l\'intera rubrica';
$labels['importgroups'] = 'Importa le assegnazioni di gruppo';
$labels['importgroupsall'] = 'Tutti (crea i gruppi se necessario)';
$labels['importgroupsexisting'] = 'Solo per i gruppi esistenti';
$labels['importdesc'] = 'Puoi importare i contatti da una rubrica esistente.<br/>Attualmente è possibile l\'importazione di indirizzi in formato <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> o CSV.';
$labels['importmapdesc'] = 'Conferma che la mappatura dei campi di seguito sia corretta prima di procedere con l\'importazione dei dati CSV (separati da virgola).';
$labels['fieldnotmapped'] = 'Campo non mappato (non importare)';
$labels['skipheader'] = 'Non importare la prima riga (intestazioni)';
$labels['done'] = 'Fatto';
$labels['settingsfor'] = 'Impostazioni per';
$labels['about'] = 'Informazioni';
$labels['preferences'] = 'Preferenze';
$labels['userpreferences'] = 'Preferenze utente';
$labels['editpreferences'] = 'Modifica le preferenze per l\'utente';
$labels['identities'] = 'Identità';
$labels['manageidentities'] = 'Gestisci identità';
$labels['newidentity'] = 'Crea una nuova identità';
$labels['addidentity'] = 'Aggiungi identità';
$labels['editidentity'] = 'Modifica identità';
$labels['identityencryption'] = 'Cifratura';
$labels['preferhtml'] = 'Mostra HTML';
$labels['defaultcharset'] = 'Set di caratteri predefinito';
$labels['htmlmessage'] = 'Messaggio HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Firma digitale';
$labels['dateformat'] = 'Formato data';
$labels['timeformat'] = 'Formato orario';
$labels['prettydate'] = 'Date più leggibili';
$labels['setdefault'] = 'Imposta predefinita';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Lingua';
$labels['timezone'] = 'Fuso orario';
$labels['pagesize'] = 'Righe per pagina';
$labels['signature'] = 'Firma';
$labels['dstactive'] = 'Gestione ora legale';
$labels['showinextwin'] = 'Apri il messaggio in una nuova finestra';
$labels['composeextwin'] = 'Componi in una nuova finestra';
$labels['htmleditor'] = 'Scrivi i messaggi in HTML';
$labels['htmlonreply'] = 'solo in risposta a messaggi HTML';
$labels['htmlonreplyandforward'] = 'su inoltro o risposta a messaggi HTML';
$labels['htmlsignature'] = 'Firma in HTML';
$labels['showemail'] = 'Visualizza indirizzi di posta con il nome visualizzato';
$labels['previewpane'] = 'Mostra l\'anteprima';
$labels['skin'] = 'Tema interfaccia';
$labels['logoutclear'] = 'Svuota il cestino all\'uscita';
$labels['logoutcompact'] = 'Compatta la Posta in arrivo all\'uscita';
$labels['uisettings'] = 'Interfaccia utente';
$labels['serversettings'] = 'Impostazioni server';
$labels['mailboxview'] = 'Impaginazione messaggi';
$labels['mdnrequests'] = 'Su richiesta per la ricevuta di ritorno';
$labels['askuser'] = 'chiedi conferma';
$labels['autosend'] = 'invia notifica';
$labels['autosendknown'] = 'invia notifica ai miei contatti, altrimenti chiedi conferma';
$labels['autosendknownignore'] = 'invia notifica ai miei contatti, altrimenti ignora';
$labels['autosendtrusted'] = 'invia ricevuta a mittenti attendibili, altrimenti chiedimelo';
$labels['autosendtrustedignore'] = 'invia la ricevuta a mittenti attendibili, altrimenti ignora';
$labels['ignorerequest'] = 'ignora la richiesta';
$labels['readwhendeleted'] = 'Marca il messaggio come letto prima di eliminarlo';
$labels['flagfordeletion'] = 'Marca il messaggio come eliminato invece di eliminarlo';
$labels['skipdeleted'] = 'Non mostrare i messaggi marcati come eliminati';
$labels['deletealways'] = 'Quando non è possibile spostare i messaggi nel Cestino, eliminali';
$labels['deletejunk'] = 'Elimina direttamente i messaggi in Spam';
$labels['showremoteimages'] = 'Mostra immagini remote contenute nel messaggio';
$labels['allowremoteresources'] = 'Permetti risorse remote (immagini, stili)';
$labels['fromknownsenders'] = 'da mittenti conosciuti';
$labels['fromtrustedsenders'] = 'da mittenti attendibili';
$labels['frommycontacts'] = 'dai miei contatti';
$labels['always'] = 'sempre';
$labels['alwaysbutplain'] = 'sempre, ad eccezione di quando si risponde in formato testo';
$labels['showinlineimages'] = 'Mostra immagini allegate sotto il messaggio';
$labels['autosavedraft'] = 'Salva le bozze automaticamente';
$labels['everynminutes'] = 'ogni $n minuto(i)';
$labels['refreshinterval'] = 'Aggiorna (controlla nuovi messaggi, ecc.)';
$labels['never'] = 'mai';
$labels['immediately'] = 'immediatamente';
$labels['messagesdisplaying'] = 'Visualizzazione messaggi';
$labels['messagescomposition'] = 'Composizione messaggi';
$labels['mimeparamfolding'] = 'Nomi allegati';
$labels['2231folding'] = 'RFC 2231 completo (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 completo (altri)';
$labels['force7bit'] = 'Usa la codifica MIME per i caratteri a 8-bit';
$labels['savelocalstorage'] = "Salva nell'archiviazione locale del browser (temporaneamente)";
$labels['advancedoptions'] = 'Opzioni avanzate';
$labels['toggleadvancedoptions'] = 'Passa alle impostazioni avanzate';
$labels['focusonnewmessage'] = 'Attiva la finestra del browser all\'arrivo di un nuovo messaggio';
$labels['checkallfolders'] = 'Controlla tutte le cartelle per la presenza di nuovi messaggi';
$labels['displaynext'] = 'Visualizza la voce successiva dell\'elenco dopo l\'eliminazione/spostamento';
$labels['defaultfont'] = 'Carattere standard per messaggi in HTML';
$labels['mainoptions'] = 'Opzioni principali';
$labels['browseroptions'] = 'Opzioni del browser';
$labels['section'] = 'Sezione';
$labels['maintenance'] = 'Manutenzione';
$labels['newmessage'] = 'Nuovo messaggio';
$labels['signatureoptions'] = 'Opzioni firma';
$labels['whenreplying'] = 'Quando rispondi';
$labels['replyempty'] = 'non citare il messaggio originale';
$labels['replytopposting'] = 'inizia il nuovo messaggio sopra quello originale';
$labels['replytoppostingnoindent'] = 'inizia il nuovo messaggio sopra quello originale (senza indentazione)';
$labels['replybottomposting'] = 'inizia il nuovo messaggio sotto quello originale';
$labels['replyremovesignature'] = 'Quando rispondi, rimuovi la firma dal messaggio originale';
$labels['autoaddsignature'] = 'Aggiungi automaticamente la firma';
$labels['newmessageonly'] = 'solo ai nuovi messaggi';
$labels['replyandforwardonly'] = 'solo alle risposte e inoltri';
$labels['insertsignature'] = 'Inserisci firma';
$labels['sigbelow'] = 'Inserire la firma sotto al testo citato';
$labels['sigseparator'] = 'Forzare il separatore standard nelle firme';
$labels['automarkread'] = 'Marca i messaggi come letti';
$labels['afternseconds'] = 'dopo $n secondi';
$labels['reqmdn'] = 'Richiedi sempre la ricevuta di ritorno';
$labels['reqdsn'] = 'Richiedi sempre la notifica di consegna';
$labels['replysamefolder'] = 'Salva risposta nella cartella del messaggio a cui si risponde';
$labels['defaultabook'] = 'Rubrica predefinita';
$labels['autocompletesingle'] = 'Non considerare gli indirizzi secondari nell\'autocompletamento';
$labels['listnamedisplay'] = 'Elenca contatti come';
$labels['contactformmode'] = 'Modalità modulo di contatto';
$labels['privatemode'] = 'Privato (Casa)';
$labels['businessmode'] = 'Business (Lavoro)';
$labels['collectedaddresses'] = 'Indirizzi collezionati';
$labels['collectedrecipients'] = 'Destinatari collezionati';
$labels['collectedrecipientsopt'] = 'Memorizza i destinatari delle email in uscita in';
$labels['collectedsendersopt'] = 'Memorizza mittenti attendibili in';
$labels['trustedsenders'] = 'Mittenti attendibili';
$labels['spellcheckbeforesend'] = 'Esegui il controllo ortografico prima di inviare un messaggio';
$labels['spellcheckoptions'] = 'Opzioni controllo ortografico';
$labels['spellcheckignoresyms'] = 'Ignora le parole contenenti simboli';
$labels['spellcheckignorenums'] = 'Ignora le parole contenenti numeri';
$labels['spellcheckignorecaps'] = 'Ignora le parole con tutte le lettere maiuscole';
$labels['addtodict'] = 'Aggiungi al dizionario';
$labels['mailtoprotohandler'] = 'Registra gestore per mailto:';
$labels['standardwindows'] = 'Gestisci i popup come finestre standard';
$labels['forwardmode'] = 'Inoltro messaggi';
$labels['inline'] = 'in linea';
$labels['asattachment'] = 'come allegato';
$labels['replyallmode'] = 'Azione predefinita del pulsante [Rispondi a tutti]';
$labels['replyalldefault'] = 'rispondi a tutti';
$labels['replyalllist'] = 'rispondi solo alla mailing list (se disponibile)';
$labels['allmessages'] = 'tutti i messaggi';
$labels['olderxdays'] = 'più vecchio di $x giorni';
$labels['folder'] = 'Cartella';
$labels['folders'] = 'Cartelle';
$labels['foldername'] = 'Nome cartella';
$labels['subscribed'] = 'Sottoscritta';
$labels['messagecount'] = 'Messaggi';
$labels['create'] = 'Crea';
$labels['createfolder'] = 'Crea nuova cartella';
$labels['managefolders'] = 'Gestione cartelle';
$labels['specialfolders'] = 'Cartelle speciali';
$labels['properties'] = 'Proprietà';
$labels['folderproperties'] = 'Proprietà cartella';
$labels['parentfolder'] = 'Cartella padre';
$labels['location'] = 'Ubicazione';
$labels['info'] = 'Informazioni';
$labels['getfoldersize'] = 'Clic per la dimensione della cartella';
$labels['changesubscription'] = 'Clic per cambiare sottoscrizione';
$labels['foldertype'] = 'Tipo di cartella';
$labels['personalfolder'] = 'Cartella privata';
$labels['otherfolder'] = 'Cartella di un altro utente';
$labels['sharedfolder'] = 'Cartella pubblica';
$labels['findfolders'] = 'Trova cartelle';
$labels['findcontacts'] = 'Trova contatti';
$labels['findmail'] = 'Trova messaggi di posta';
$labels['namespace.personal'] = 'Personale';
$labels['namespace.other'] = 'Altri utenti';
$labels['namespace.shared'] = 'Condivisa';
$labels['dualuselabel'] = 'Può contenere solo';
$labels['dualusemail'] = 'messaggi';
$labels['dualusefolder'] = 'cartella';
$labels['generate'] = 'Genera';
$labels['encryptioncreatekey'] = 'Crea una nuova coppia di chiavi';
$labels['openmailvelopesettings'] = 'Apri impostazioni di Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Ci sono $nr chiavi private corrispondenti memorizzate nel portachiavi Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'L\'indentità del server non dispone ancora di una chiave privata PGP memorizzata nell\'estensione Mailvelope. Vuoi crearne una per abilitare la cifratura dei messaggi?';
$labels['encryption'] = 'Cifratura';
$labels['mailvelopeoptions'] = 'Opzioni Mailvelope';
$labels['mailvelopemainkeyring'] = 'Usa il portachiavi principale di Mailvelope';
$labels['mailvelopenotfound'] = 'L\'estensione Mailvelope non è abilitata/installata nel tuo browser.';
$labels['sortby'] = 'Ordina per';
$labels['sortasc'] = 'Ordinamento crescente';
$labels['sortdesc'] = 'Ordinamento decrescente';
$labels['undo'] = 'Annulla';
$labels['installedplugins'] = 'Plugin installati';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versione';
$labels['source'] = 'Sorgente';
$labels['destination'] = 'Destinazione';
$labels['license'] = 'Licenza';
$labels['support'] = 'Ottieni supporto';
$labels['savedsearches'] = 'Ricerche salvate';
$labels['dateformatY'] = 'AAAA';
$labels['dateformaty'] = 'AA';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'GG';
$labels['dateformatj'] = 'G';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglese';
$labels['westerneuropean'] = 'Europa occidentale';
$labels['easterneuropean'] = 'Europa orientale';
$labels['southeasterneuropean'] = 'Europa sud-orientale';
$labels['baltic'] = 'Baltiche';
$labels['cyrillic'] = 'Cirillico';
$labels['arabic'] = 'Arabo';
$labels['greek'] = 'Greco';
$labels['hebrew'] = 'Ebraico';
$labels['turkish'] = 'Turco';
$labels['nordic'] = 'Scandinavo';
$labels['thai'] = 'Tailandese';
$labels['celtic'] = 'Celtico';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Giapponese';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Cinese';
$labels['arialabeltopnav'] = 'Controllo finestra';
$labels['arialabeltasknav'] = 'Attività dell\'applicazione';
$labels['arialabeltoolbar'] = 'Barra delle applicazioni';
$labels['arialabellistnav'] = 'Navigazione elenco';
$labels['arialabelactivetask'] = 'Attività attive';
$labels['arialabelmessagessearchfilter'] = 'Filtro lista delle email';
$labels['arialabelmailsearchform'] = 'Modulo ricerca messaggi di posta';
$labels['arialabelcontactsearchform'] = 'Modulo di ricerca contatti';
$labels['arialabelmailquicksearchbox'] = 'Ricerca messaggi di posta';
$labels['arialabelquicksearchbox'] = 'Immissione ricerca';
$labels['arialabelfoldersearchfilter'] = 'Filtro cartelle';
$labels['arialabelfoldersearchform'] = 'Modulo di ricerca cartelle';
$labels['arialabelfolderlist'] = 'Cartella selezione email';
$labels['arialabelmessagelist'] = 'Lista messaggi di posta';
$labels['arialabelmailpreviewframe'] = 'Anteprima messaggio';
$labels['arialabelmailboxmenu'] = 'Menu azione cartella';
$labels['arialabellistselectmenu'] = 'Menu lista selezione';
$labels['arialabelthreadselectmenu'] = 'Finestra elenco menu';
$labels['arialabelmessagelistoptions'] = 'Visualizzazione della lista dei messaggi e opzioni di ordinamento';
$labels['arialabelmailimportdialog'] = 'Dialogo importazione messaggio';
$labels['arialabelmessagenav'] = 'Navigazione messaggio';
$labels['arialabelmessagebody'] = 'Corpo messaggio';
$labels['arialabelmessageactions'] = 'Azione messaggi';
$labels['arialabelcontactquicksearch'] = 'Modulo ricerca contatti';
$labels['arialabelcontactsearchbox'] = 'Immissione ricerca contatti';
$labels['arialabelmessageheaders'] = 'Messaggio testata';
$labels['arialabelforwardingoptions'] = 'Opzioni di inoltro';
$labels['arialabelreplyalloptions'] = 'Opzione rispondi a tutti';
$labels['arialabelmoremessageactions'] = 'Altre azioni del messaggio';
$labels['arialabelmorecontactactions'] = 'Ulteriori azioni del contatto';
$labels['arialabelmarkmessagesas'] = 'Contrassegna messaggi selezionati come';
$labels['arialabelcomposeoptions'] = 'Impostazioni composizione';
$labels['arialabelresponsesmenu'] = 'Menu messaggi predefiniti';
$labels['arialabelattachmentuploadform'] = 'Allegato caricato da';
$labels['arialabelattachmentmenu'] = 'Opzioni allegato';
$labels['arialabelmailtomenu'] = 'Opzioni indirizzo di posta elettronica';
$labels['arialabelattachmentpreview'] = 'Anteprima allegato';
$labels['ariasummarycomposecontacts'] = 'Elenco dei contatti e gruppi per selezionare come destinatari';
$labels['arialabelcontactexportoptions'] = 'Impostazioni esportazione contatti';
$labels['arialabelabookgroupoptions'] = 'Impostazioni rubrica contatti/gruppi';
$labels['arialabelpreferencesform'] = 'Modulo preferenze';
$labels['arialabelidentityeditfrom'] = 'Modifica modulo identità';
$labels['arialabelresponseeditfrom'] = 'Modifica modulo ricezione';
$labels['arialabelsearchterms'] = 'Ricerca termini';
$labels['arialabeldropactionmenu'] = 'Menu azione con trascinamento';
$labels['arialabelheadersmenu'] = 'Aggiungi destinatario (intestazione) menu';
$labels['arialabelimagetools'] = 'Strumenti immagine';
$labels['helplistnavigation'] = 'Lista navigazione da tastiera';
$labels['helplistkeyboardnavigation'] = "Frecce su/giù: Sposta le righe selezionate.
Spazio: Seleziona fila mirata.
Shift + su/giù: Seleziona ulteriore fila da sotto e sopra.
Ctrl + Spazio: Aggiungi fila mirata da selezionato/rimosso a selezionato.";
$labels['helplistkeyboardnavmessages'] = "Frecce destra/sinistra: espande/comprime l'argomento del messaggio (solo in modalità argomenti).
Invio: apre il contatto selezionato.
Canc: sposta il messaggio selezionato nel cestino.";
$labels['helplistkeyboardnavcontacts'] = "Invio: Aprire il contatto selezionato";
localization/it_IT/messages.inc000064400000044265151727150570012573 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Si è verificato un errore!';
$messages['loginfailed']  = 'Accesso non riuscito.';
$messages['cookiesdisabled'] = 'Il tuo browser non accetta i cookies.';
$messages['sessionerror'] = 'Sessione non valida o scaduta.';
$messages['cookiesmismatch'] = 'Rilevata una mancata corrispondenza dei cookies. Per favore, cancella i cookies del tuo browser.';
$messages['storageerror'] = 'Impossibile connettersi al server IMAP';
$messages['servererror'] = 'Errore del server!';
$messages['servererrormsg'] = 'Errore del server: $msg';
$messages['accountlocked'] = 'Troppi tentativi di accesso non riusciti. Tenta di nuovo più tardi.';
$messages['connerror'] = 'Errore di connessione (impossibile raggiungere il server)!';
$messages['dberror'] = 'Errore del database!';
$messages['dbconnerror'] = 'Impossibile collegarsi al database!';
$messages['windowopenerror'] = 'La finestra di popup è stata bloccata!';
$messages['requesttimedout'] = 'Richiesta scaduta';
$messages['errorreadonly'] = 'Impossibile eseguire l\'operazione. Cartella in sola lettura';
$messages['errornoperm'] = 'Impossibile eseguire l\'operazione. Permesso negato';
$messages['erroroverquota'] = 'Impossibile eseguire l\'operazione. Spazio su disco non sufficiente.';
$messages['erroroverquotadelete'] = 'Spazio su disco non sufficiente. Utilizza SHIFT+CANC per eliminare un messaggio.';
$messages['invalidrequest'] = 'Richiesta non valida! Nessun dato salvato.';
$messages['invalidhost'] = 'Nome del server non valido.';
$messages['nomessagesfound'] = 'Nessun messaggio trovato in questa cartella';
$messages['loggedout'] = 'Hai correttamente terminato la sessione. A presto!';
$messages['mailboxempty'] = 'La casella di posta è vuota';
$messages['nomessages'] = 'Non ci sono messaggi';
$messages['refreshing'] = 'Aggiornamento...';
$messages['loading'] = 'Caricamento...';
$messages['uploading'] = 'Caricamento file...';
$messages['attaching'] = 'Sto allegando il file...';
$messages['uploadingmany'] = 'Caricamento file...';
$messages['loadingdata'] = 'Caricamento dati...';
$messages['checkingmail'] = 'Controllo nuovi messaggi...';
$messages['sendingmessage'] = 'Invio messaggio in corso...';
$messages['messagesent'] = 'Messaggio inviato correttamente';
$messages['savingmessage'] = 'Salvataggio messaggio...';
$messages['messagesaved'] = 'Messaggio salvato in bozze';
$messages['successfullysaved'] = 'Salvato correttamente.';
$messages['savingresponse'] = 'Salvataggio della risposta...';
$messages['deleteresponseconfirm'] = 'Sei sicuro di voler eliminare questa risposta?';
$messages['nocontactselected'] = 'Non hai ancora selezionato un contatto.';
$messages['addedsuccessfully'] = 'Contatto aggiunto alla rubrica';
$messages['contactexists'] = 'Esiste già un contatto con questo indirizzo email.';
$messages['contactnameexists'] = 'Esiste già un contatto con questo nome';
$messages['blockedimages'] = 'Per proteggere la tua privacy, le immagini remote di questo messaggio sono state bloccate.';
$messages['blockedresources'] = 'Per proteggere la tua privacy le risorse remote sono state bloccate.';
$messages['suspiciousemail'] = 'Questo messaggio contiene indirizzi email sospetti che potrebbero essere fraudolenti.';
$messages['bccemail'] = 'I messaggi inoltrati includono destinatari riservati (Ccn).';
$messages['bouncehint'] = 'Il messaggio verrà inviato senza alcuna modifica, ovvero utilizzando il corpo, le intestazioni e i destinatari originali.';
$messages['encryptedmessage'] = 'Questo messaggio è cifrato e non può essere visualizzato. Spiacenti!';
$messages['externalmessagedecryption'] = 'Questo messaggio è cifrato e può essere decifrato attraverso un\'estensione del browser.';
$messages['nopubkeyfor'] = 'Non è stata trovata una chiave pubblica valida per l\'indirizzo $email';
$messages['nopubkeyforsender'] = 'Non è stata trovata una chiave pubblica valida per la tua identità mittente. Si desidera cifrare il messaggio solo per i destinatari?';
$messages['encryptnoattachments'] = 'Gli allegati già caricati non possono essere cifrati. Si prega di aggiungerli di nuovo all\'editor di cifratura.';
$messages['searchpubkeyservers'] = 'Si desidera effettuare una ricerca di server di chiavi pubbliche per le chiavi mancanti?';
$messages['encryptpubkeysfound'] = 'Sono state trovate le seguenti chiavi pubbliche:';
$messages['keyservererror'] = 'Tentativo non riuscito di ottenere la chiave dal keyserver.';
$messages['keyimportsuccess'] = 'Chiave pubblica $key importata con successo nel tuo portachiavi.';
$messages['nocontactsfound'] = 'Nessun contatto';
$messages['contactnotfound'] = 'Il contatto richiesto non è stato trovato';
$messages['contactsearchonly'] = 'Devi usare un modulo di ricerca per vedere i contatti dalla rubrica selezionata.';
$messages['sendingfailed'] = 'Impossibile inviare il messaggio';
$messages['senttooquickly'] = 'Per favore, attendi $sec secondi prima di inviare questo messaggio';
$messages['errorsavingsent'] = 'Si è verificato un errore nel salvare il messaggio inviato.';
$messages['errorsaving'] = 'Si è verificato un errore nel salvataggio.';
$messages['errormoving'] = 'Impossibile spostare il messaggio';
$messages['errorcopying'] = 'Impossibile copiare il messaggio';
$messages['errordeleting'] = 'Impossibile eliminare il messaggio';
$messages['errormarking'] = 'Impossibile segnare il messaggio';
$messages['alerttitle'] = 'Attenzione';
$messages['confirmationtitle'] = 'Sei sicuro...';
$messages['deletecontactconfirm']  = 'Sei sicuro di voler eliminare i contatti selezionati?';
$messages['deletegroupconfirm']  = 'Sei sicuro di voler eliminare i gruppi selezionati?';
$messages['deletemessagesconfirm'] = 'Sei sicuro di voler eliminare i messaggi selezionati?';
$messages['deletefolderconfirm']  = 'Sei sicuro di voler eliminare la cartella selezionata?';
$messages['movefolderconfirm']  = 'Sei sicuro di voler spostare la cartella selezionata?';
$messages['purgefolderconfirm']  = 'Sei sicuro di voler eliminare tutti i messaggi in questa cartella?';
$messages['contactdeleting'] = 'Eliminazione contatti...';
$messages['groupdeleting'] = 'Eliminazione gruppo...';
$messages['folderdeleting'] = 'Eliminazione cartella...';
$messages['foldermoving'] = 'Spostamento cartella...';
$messages['foldersubscribing'] = 'Sottoscrizione cartella...';
$messages['folderunsubscribing'] = 'Cancellazione sottoscrizione cartella...';
$messages['formincomplete'] = 'Per favore, compila tutti i campi';
$messages['noemailwarning'] = 'Per favore, immetti un indirizzo e-mail valido';
$messages['nonamewarning']  = 'Per favore, immetti un nome';
$messages['nopagesizewarning'] = 'Per favore, immetti il numero di righe per pagina';
$messages['nosenderwarning'] = 'Per favore, inserisci l\'indirizzo email del mittente.';
$messages['recipientsadded'] = 'Destinatari/o aggiunti/o correttamente';
$messages['norecipientwarning'] = 'Per favore, immetti almeno un destinatario';
$messages['disclosedrecipwarning'] = 'Tutti i destinatari vedranno i rispettivi indirizzi di posta elettronica. Per evitare questo e proteggerne la riservatezza puoi usare il campo Ccn.';
$messages['disclosedreciptitle'] = 'Troppi destinatari pubblici';
$messages['nosubjectwarning']  = 'L\'oggetto è vuoto. Vuoi inserirlo adesso?';
$messages['nosubjecttitle']  = 'Nessun oggetto';
$messages['nobodywarning'] = 'Inviare il messaggio senza testo?';
$messages['notsentwarning'] = 'Il messaggio non è stato inviato e ha delle modifiche non salvate. Vuoi annullare le modifiche?';
$messages['restoresavedcomposedata'] = 'E\' stato rilevato un precedente messaggio non inviato.\n\nOggetto: $subject\nSalvato: $date\n\nVuoi ripristinare il messaggio?';
$messages['nosearchname'] = 'Per favore, immetti un nome o un indirizzo e-mail';
$messages['notuploadedwarning'] = 'Non tutti gli allegati sono stati ancora caricati. Prego attendere, oppure cancellare il caricamento.';
$messages['searchsuccessful'] = '$nr messaggi trovati';
$messages['contactsearchsuccessful'] = '$nr contatti trovati';
$messages['searchnomatch'] = 'La ricerca non ha dato nessun risultato';
$messages['searching'] = 'Ricerca...';
$messages['checking'] = 'Controllo...';
$messages['stillsearching'] = 'Ricercando...';
$messages['nospellerrors'] = 'Nessun errore ortografico trovato';
$messages['folderdeleted'] = 'Cartella eliminata';
$messages['foldersubscribed'] = 'Cartella sottoscritta correttamente';
$messages['folderunsubscribed'] = 'Sottoscrizione cartella cancellata correttamente';
$messages['folderpurged'] = 'Cartella svuotata con successo.';
$messages['folderexpunged'] = 'Cartella compattata con successo.';
$messages['deletedsuccessfully'] = 'Eliminato con successo';
$messages['converting'] = 'Rimozione della formattazione dal messaggio...';
$messages['messageopenerror'] = 'Impossibile caricare il messaggio dal server';
$messages['filelinkerror'] = 'L\'inserimento dell\'allegato non è riuscito.';
$messages['fileuploaderror'] = 'Errore durante il caricamento del file';
$messages['csvfilemismatch'] = 'L\'importazione di più file CSV con campi diversi non è supportata.';
$messages['filesizeerror'] = 'Il file da caricare supera il limite massimo di $size';
$messages['filecounterror'] = 'È possibile caricare al massimo $count file alla volta.';
$messages['msgsizeerror'] = 'Errore nell\'allegare un file. Dimensione massima di un messaggio ($size) superata. ';
$messages['msgsizeerrorfwd'] = 'La dimensione massima del messaggio ($size) è stata superata. $num messaggi non sono stati allegati.';
$messages['copysuccess'] = 'Copiati correttamente $nr contatti.';
$messages['movesuccess'] = '$nr contatti spostati correttamente.';
$messages['copyerror'] = 'Impossibile copiare i contatti.';
$messages['moveerror'] = 'Impossibile spostare i contatti.';
$messages['sourceisreadonly'] = 'La rubrica è in sola lettura';
$messages['errorsavingcontact'] = 'Impossibile salvare il contatto';
$messages['movingmessage'] = 'Spostamento del messaggio...';
$messages['copyingmessage'] = 'Copia messaggio(i)...';
$messages['copyingcontact'] = 'Copia contatto(i)...';
$messages['movingcontact'] = 'Spostamento contatto(i)...';
$messages['deletingmessage'] = 'Eliminazione messaggio(i)...';
$messages['markingmessage'] = 'Marca messaggio...';
$messages['addingmember'] = 'Aggiunta contatto al gruppo...';
$messages['removingmember'] = 'Rimozione contatto dal gruppo...';
$messages['receiptsent'] = 'Ricevuta di ritorno inviata con successo';
$messages['errorsendingreceipt'] = 'Impossibile spedire la ricevuta di ritorno';
$messages['deleteidentityconfirm'] = 'Sei sicuro di voler eliminare questo profilo?';
$messages['nodeletelastidentity'] = 'Impossibile eliminare l\'unica identità disponibile';
$messages['forbiddencharacter'] = 'Il nome della cartella contiene un carattere vietato';
$messages['selectimportfile'] = 'Per favore, seleziona il file da caricare';
$messages['addresswriterror'] = 'La rubrica selezionata non è scrivibile';
$messages['contactaddedtogroup'] = 'Contatto aggiunto con successo al gruppo';
$messages['contactremovedfromgroup'] = 'Contatto rimosso con successo dal gruppo';
$messages['nogroupassignmentschanged'] = 'Nessun assegnamento del gruppo è stato cambiato.';
$messages['importwait'] = 'Importazione in corso, attendere...';
$messages['importformaterror'] = 'Importazione non riuscita! Il file caricato non è un file valido per l\'importazione.';
$messages['importconfirm'] = '<b>$inserted contatti importati con successo</b>';
$messages['importconfirmskipped'] = '<b>$skipped ignorati perché esistono già</b>';
$messages['importmessagesuccess'] = 'Importati correttamente $nr messaggi';
$messages['importmessageerror'] = 'Importazione non riuscita! Il file caricato non è un messaggio o una casella postale valida.';
$messages['opnotpermitted'] = 'Operazione non consentita!';
$messages['nofromaddress'] = 'Indirizzo email mancante nell\'identità selezionata.';
$messages['editorwarning'] = 'Cambiare editor potrebbe causare la perdita della formattazione. Si desidera continuare lo stesso?';
$messages['httpreceivedencrypterror'] = 'Errore fatale di configurazione. Contatta l\'amministratore immediatamente. <b>Il tuo messaggio non può essere inviato</b>.';
$messages['smtpconnerror'] = 'Errore SMTP ($code): connessione al server non riuscita.';
$messages['smtpautherror'] = 'Errore SMTP ($code): autenticazione non riuscita.';
$messages['smtpfromerror'] = 'Errore SMTP ($code): impostazione del mittente "$from" non riuscita ($msg)';
$messages['smtptoerror'] = 'Errore SMTP ($code): inserimento del destinatario "$to" non riuscito ($msg)';
$messages['smtprecipientserror'] = 'Errore SMTP: impossibile processare la lista dei destinatari';
$messages['smtputf8error'] = 'Errore SMTP: Il server non supporta i caratteri Unicode nell\'indirizzo email';
$messages['smtpsizeerror'] = 'Errore SMTP: La dimensione del messaggio supera il limite del server ($limit)';
$messages['smtperror'] = 'Errore SMTP: $msg';
$messages['emailformaterror'] = 'Indirizzo email non valido: $email';
$messages['toomanyrecipients'] = 'Numero eccessivo di destinatari, ridurlo a $max';
$messages['maxgroupmembersreached'] = 'Il numero dei membri del gruppo eccede il massimo di $max';
$messages['internalerror'] = 'Si è verificato un errore interno. Riprovare più tardi.';
$messages['contactdelerror'] = 'Impossibile eliminare il/i contatto/i';
$messages['contactdeleted'] = 'Contatto/i correttamente eliminato/i';
$messages['contactrestoreerror'] = 'Impossibile ripristinare il/i contatto/i cancellato/i';
$messages['contactrestored'] = 'Contatto/i ripristinato/i';
$messages['groupdeleted'] = 'Gruppo correttamente eliminato';
$messages['grouprenamed'] = 'Gruppo correttamente rinominato';
$messages['groupcreated'] = 'Gruppo creato correttamente';
$messages['savedsearchdeleted'] = 'Le ricerca salvata è stata eliminata con successo.';
$messages['savedsearchdeleteerror'] = 'Impossibile eliminare la ricerca salvata.';
$messages['savedsearchcreated'] = 'Ricerca salvata creata con successo.';
$messages['savedsearchcreateerror'] = 'Impossibile creare la ricerca salvata.';
$messages['messagedeleted'] = 'Messaggi/o eliminato/i correttamente';
$messages['messagemoved'] = 'Messaggio/i spostato/i correttamente';
$messages['messagemovedtotrash'] = 'Messaggio/i spostato/i correttamente nel cestino.';
$messages['messagecopied'] = 'Messaggi/o copiato/i correttamente';
$messages['messagemarked'] = 'Messaggi/o marcato/i correttamente';
$messages['autocompletechars'] = 'Inserisci almeno $min caratteri per l\'autocompletamento';
$messages['autocompletemore'] = 'Più risultati ottenuti. Inserisci per favore più caratteri.';
$messages['namecannotbeempty'] = 'Il nome non può essere vuoto';
$messages['nametoolong'] = 'Nome troppo lungo';
$messages['namedotforbidden'] = 'Il nome della cartella non può iniziare con un punto';
$messages['folderupdated'] = 'Cartella aggiornata correttamente';
$messages['foldercreated'] = 'Cartella creata correttamente';
$messages['invalidimageformat'] = 'Formato immagine non valido';
$messages['mispellingsfound'] = 'Sono stati riscontrati errori ortografici nel messaggio';
$messages['parentnotwritable'] = 'Impossibile creare o muovere la cartella: accesso negato';
$messages['messagetoobig'] = 'La parte del messaggio è troppo grande per essere processata.';
$messages['attachmentvalidationerror'] = 'Questo allegato è sospetto perché il tipo non corrisponde a quanto dichiarato nel messaggio. Se non ti fidi del mittente, non dovresti aprirlo nel browser perché potrebbe contenere contenuti malevoli.<br/><br/><em>Atteso: $expected; trovato: $detected</em>';
$messages['noscriptwarning'] = 'Attenzione: questo servizio di webmail richiede Javascript! Per utilizzarlo abilita Javascript nelle impostazioni del tuo browser.';
$messages['messageissent'] = 'Questo messaggio è stato già inviato, ma non ancora salvato. Vuoi salvarlo adesso?';
$messages['errnotfound'] = 'File non trovato';
$messages['errnotfoundexplain'] = 'La risorsa richiesta non è stata trovata!';
$messages['errfailedrequest'] = 'Richiesta non riuscita';
$messages['errauthorizationfailed'] = 'Autorizzazione non riuscita';
$messages['errunauthorizedexplain'] = 'Non è stato possibile verificare la tua autorizzazione all\'accesso per questo servizio!';
$messages['errrequestcheckfailed'] = 'Il controllo della richiesta non è riuscito';
$messages['errcsrfprotectionexplain'] = "Per la tua sicurezza, l'accesso a questa risorsa è protetto contro CSRF.\nSe visualizzi questo messaggio, è probabile che non ti sia scollegato prima di lasciare l'applicazione web.\n\nE' richiesta un'azione di una persona per continuare.";
$messages['errcontactserveradmin'] = 'Si prega di contattare l\'amministratore del server.';
$messages['clicktoresumesession'] = 'Clicca qui per riprendere la tua sessione precedente.';
$messages['errcomposesession'] = 'Errore di sessione di composizione';
$messages['errcomposesessionexplain'] = 'Non è stato possibile trovare la sessione di composizione richiesta.';
$messages['clicktocompose'] = 'Cliccare qui per comporre un nuovo messaggio';
$messages['nosupporterror'] = 'La funzione non è supportata dal browser.';
$messages['siginserted'] = 'Firma inserita con successo.';
$messages['responseinserted'] = 'Risposta inserita con successo.';
$messages['noresponsesavailable'] = 'Nessuna risposta disponibile';
$messages['listempty'] = 'Questa lista è vuota';
$messages['listusebutton'] = 'Usa il tasto Crea per aggiungere una nuova voce';
$messages['keypaircreatesuccess'] = 'Una nuova coppia di chiavi è stata creata con successo per $identity.';
$messages['emptyattachment'] = 'Il file allegato risulta vuoto.<br> Verifica con la persona che lo ha inviato.';
$messages['oauthloginfailed'] = 'Accesso OAuth non riuscito. Riprova.';
localization/ca_ES/timezones.inc000064400000047646151727150570012751 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Àfrica';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Alger';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'El Caire';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'Al-Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadiscio';
$labels['tz:africa:monrovia'] = 'Monròvia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'N\'Djamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Trípoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amèrica';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaïna';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahía de Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belém';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogotà';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Caiena';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiabá';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepé';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Nuuk';
$labels['tz:america:goose_bay'] = 'Happy Valley-Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadalupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'L\'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceió';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinica';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlán';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Mérida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Ciutat de Mèxic';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Illa de Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'Nova York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Dakota del Nord';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panamà';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port-of-Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarém';
$labels['tz:america:santiago'] = 'Santiago de Xile';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'São Paulo';
$labels['tz:america:scoresbysund'] = 'Ittoqqortoormiit';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint-Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tórtola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antàrtida';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'Estació McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Estació Vostok';
$labels['tz:arctic'] = 'Àrtic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Àsia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almati';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anàdir';
$labels['tz:asia:aqtau'] = 'Akhtau';
$labels['tz:asia:aqtobe'] = 'Aktobé';
$labels['tz:asia:ashgabat'] = 'Aixkhabad';
$labels['tz:asia:atyrau'] = 'Atirau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Bakú';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaül';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bixkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damasc';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Duixanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Khovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamtxatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Katmandú';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Calcuta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoiarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Masqat';
$labels['tz:asia:nicosia'] = 'Nicòsia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novossibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Khizilordà';
$labels['tz:asia:riyadh'] = 'Al-Riyad';
$labels['tz:asia:sakhalin'] = 'Sakhalín';
$labels['tz:asia:samarkand'] = 'Samarcanda';
$labels['tz:asia:seoul'] = 'Seül';
$labels['tz:asia:shanghai'] = 'Xangai';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolimsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Taixkent';
$labels['tz:asia:tbilisi'] = 'Tbilissi';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tòquio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulan Bator';
$labels['tz:asia:urumqi'] = 'Ürümqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Iakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Iekaterinburg';
$labels['tz:asia:yerevan'] = 'Erevan';
$labels['tz:atlantic'] = 'Atlàntic';
$labels['tz:atlantic:azores'] = 'Açores';
$labels['tz:atlantic:bermuda'] = 'Bermudes';
$labels['tz:atlantic:canary'] = 'Illes Canàries';
$labels['tz:atlantic:cape_verde'] = 'Cap Verd';
$labels['tz:atlantic:faroe'] = 'Illes Fèroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavík';
$labels['tz:atlantic:south_georgia'] = 'Illa de Geòrgia del Sud';
$labels['tz:atlantic:st_helena'] = 'Santa Helena';
$labels['tz:atlantic:stanley'] = 'Port Stanley';
$labels['tz:australia'] = 'Austràlia';
$labels['tz:australia:adelaide'] = 'Adelaida';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Illa de Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Àstrakhan';
$labels['tz:europe:athens'] = 'Atenes';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berlín';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussel·les';
$labels['tz:europe:bucharest'] = 'Bucarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Büsingen am Hochrhein';
$labels['tz:europe:chisinau'] = 'Chișinău';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublín';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Hèlsinki';
$labels['tz:europe:isle_of_man'] = 'Illa de Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kíev';
$labels['tz:europe:kirov'] = 'Kírov';
$labels['tz:europe:lisbon'] = 'Lisboa';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'Londres';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Mònaco';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'París';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praga';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Roma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saràtov';
$labels['tz:europe:simferopol'] = 'Simferòpol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Estocolm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Uliànovsk';
$labels['tz:europe:uzhgorod'] = 'Újhorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Ciutat del Vaticà';
$labels['tz:europe:vienna'] = 'Viena';
$labels['tz:europe:vilnius'] = 'Vílnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varsòvia';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporíjia';
$labels['tz:europe:zurich'] = 'Zuric';
$labels['tz:indian'] = 'Índic';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Txagos';
$labels['tz:indian:christmas'] = 'Illa Christmas';
$labels['tz:indian:cocos'] = 'Illes Cocos';
$labels['tz:indian:comoro'] = 'Comores';
$labels['tz:indian:kerguelen'] = 'Illes Kerguelen';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Maurici';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Illa de la Reunió';
$labels['tz:pacific'] = 'Pacífic';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Illes Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Illa de Pasqua';
$labels['tz:pacific:efate'] = 'Éfaté';
$labels['tz:pacific:enderbury'] = 'Illa Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Illes Galápagos';
$labels['tz:pacific:gambier'] = 'Illes Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Atol Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Illes Marqueses';
$labels['tz:pacific:midway'] = 'Atol Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Nouméa';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'República de Palau';
$labels['tz:pacific:pitcairn'] = 'Illes Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahití';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Illes Wake';
$labels['tz:pacific:wallis'] = 'Illa Wallis';
localization/ca_ES/labels.inc000064400000105044151727150570012161 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Benvingut a $product';
$labels['username'] = 'Nom d\'usuari';
$labels['password'] = 'Contrasenya';
$labels['server'] = 'Servidor';
$labels['login'] = 'Inicia la sessió';
$labels['oauthlogin'] = 'Inicia la sessió amb $provider';
$labels['menu'] = 'Menú';
$labels['logout'] = 'Tanca sessió';
$labels['mail'] = 'Correu';
$labels['settings'] = 'Configuració';
$labels['addressbook'] = 'Contactes';
$labels['darkmode'] = 'Mode fosc';
$labels['lightmode'] = 'Mode clar';
$labels['inbox'] = 'Safata d\'entrada';
$labels['drafts'] = 'Esborranys';
$labels['sent'] = 'Enviats';
$labels['trash'] = 'Paperera';
$labels['junk'] = 'Correu brossa';
$labels['show_real_foldernames'] = 'Mostra els noms reals a les carpetes especials';
$labels['subject'] = 'Assumpte';
$labels['from'] = 'Remitent';
$labels['sender'] = 'Remitent';
$labels['to'] = 'Destinatari';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Respon a';
$labels['followupto'] = 'Seguiment-A';
$labels['date'] = 'Data';
$labels['size'] = 'Mida';
$labels['priority'] = 'Prioritat';
$labels['organization'] = 'Organització';
$labels['readstatus'] = 'Estat de lectura';
$labels['listoptions'] = 'Llista d\'opcions...';
$labels['listoptionstitle'] = 'Opcions de llista';
$labels['mailboxlist'] = 'Carpetes';
$labels['messagesfromto'] = 'Missatges $from a $to de $count';
$labels['threadsfromto'] = 'Fils $from a $to de $count';
$labels['messagenrof'] = 'Missatge $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Copia';
$labels['move'] = 'Mou';
$labels['moveto'] = 'Mou a...';
$labels['copyto'] = 'Copia a...';
$labels['download'] = 'Descarrega';
$labels['open'] = 'Obre';
$labels['showattachment'] = 'Mostra';
$labels['showanyway'] = 'Mostra-ho de totes maneres';
$labels['filename'] = 'Nom del fitxer';
$labels['filesize'] = 'Mida del fitxer';
$labels['addtoaddressbook'] = 'Afegeix a contactes';
$labels['sun'] = 'dg';
$labels['mon'] = 'dl';
$labels['tue'] = 'dm';
$labels['wed'] = 'dc';
$labels['thu'] = 'dj';
$labels['fri'] = 'dv';
$labels['sat'] = 'ds';
$labels['sunday'] = 'Diumenge';
$labels['monday'] = 'Dilluns';
$labels['tuesday'] = 'Dimarts';
$labels['wednesday'] = 'Dimecres';
$labels['thursday'] = 'Dijous';
$labels['friday'] = 'Divendres';
$labels['saturday'] = 'Dissabte';
$labels['jan'] = 'gen';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'abr';
$labels['may'] = 'mai';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'ago';
$labels['sep'] = 'set';
$labels['oct'] = 'oct';
$labels['nov'] = 'nov';
$labels['dec'] = 'des';
$labels['longjan'] = 'gener';
$labels['longfeb'] = 'febrer';
$labels['longmar'] = 'març';
$labels['longapr'] = 'abril';
$labels['longmay'] = 'maig';
$labels['longjun'] = 'juny';
$labels['longjul'] = 'juliol';
$labels['longaug'] = 'agost';
$labels['longsep'] = 'setembre';
$labels['longoct'] = 'octubre';
$labels['longnov'] = 'novembre';
$labels['longdec'] = 'desembre';
$labels['today'] = 'Avui';
$labels['refresh'] = 'Actualitza';
$labels['checkmail'] = 'Comprova si hi ha missatges nous';
$labels['compose'] = 'Escriu un missatge';
$labels['writenewmessage'] = 'Crea un nou missatge';
$labels['reply'] = 'Respon';
$labels['replytomessage'] = 'Respon al remitent';
$labels['replytoallmessage'] = 'Respon a la llista o al remitent i a tots els destinataris';
$labels['replyall'] = 'Respon a tots';
$labels['replylist'] = 'Respon a la llista';
$labels['forward'] = 'Reenvia';
$labels['forwardinline'] = 'Reenvia com en línia';
$labels['forwardattachment'] = 'Reenvia com a adjunt';
$labels['forwardmessage'] = 'Reenvia el missatge';
$labels['bouncemsg'] = 'Torna a enviar (rebot)';
$labels['bounce'] = 'Torna a enviar';
$labels['deletemessage'] = 'Suprimeix el missatge';
$labels['movemessagetotrash'] = 'Mou el missatge a la paperera';
$labels['printmessage'] = 'Imprimeix aquest missatge';
$labels['previousmessage'] = 'Mostra el missatge anterior';
$labels['firstmessage'] = 'Mostra el primer missatge';
$labels['nextmessage'] = 'Mostra el missatge següent';
$labels['lastmessage'] = 'Mostra el darrer missatge';
$labels['backtolist'] = 'Torna a la llista de missatges';
$labels['viewsource'] = 'Mostra el codi font';
$labels['mark'] = 'Marca';
$labels['markmessages'] = 'Marca missatges';
$labels['markread'] = 'Com a llegit';
$labels['markunread'] = 'Com a no llegit';
$labels['markflagged'] = 'Com a marcat';
$labels['markunflagged'] = 'Com a no marcat';
$labels['markundeleted'] = 'Com a no suprimit(s)';
$labels['moreactions'] = 'Més accions...';
$labels['markallread'] = 'Marca-ho tot com a llegit';
$labels['folders-cur'] = 'Només la carpeta seleccionada';
$labels['folders-sub'] = 'Selecciona la carpeta i les seves subcarpetes';
$labels['folders-all'] = 'Totes les carpetes';
$labels['more'] = 'Més';
$labels['back'] = 'Torna';
$labels['options'] = 'Opcions';
$labels['composeoptions'] = 'Opcions de redacció';
$labels['optionsandattachments'] = 'Opcions i fitxers adjunts';
$labels['actions'] = 'Accions';
$labels['first'] = 'Primer';
$labels['last'] = 'Darrer';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Següent';
$labels['select'] = 'Selecciona';
$labels['selection'] = 'Selecció';
$labels['all'] = 'Tots';
$labels['none'] = 'Cap';
$labels['currpage'] = 'Pàgina actual';
$labels['isread'] = 'Llegeix';
$labels['unread'] = 'No llegit';
$labels['flagged'] = 'Marcat';
$labels['unflagged'] = 'No marcat';
$labels['unanswered'] = 'No respost';
$labels['withattachment'] = 'Amb fitxer adjunt';
$labels['deleted'] = 'Suprimit';
$labels['undeleted'] = 'No s\'ha suprimit';
$labels['replied'] = 'Respost';
$labels['forwarded'] = 'Reenviat';
$labels['invert'] = 'Inverteix';
$labels['filter'] = 'Filtre';
$labels['list'] = 'Llista';
$labels['threads'] = 'Fils de discussió';
$labels['expand-all'] = 'Expandeix-ho tot';
$labels['expand-unread'] = 'Expandeix no llegits';
$labels['collapse-all'] = 'Redueix-ho tot';
$labels['threaded'] = 'Encadenat';
$labels['showunread'] = 'Mostra els missatges no llegits';
$labels['autoexpand_threads'] = 'Expandeix els missatges encadenats';
$labels['do_expand'] = 'tots els fils de discussió';
$labels['expand_only_unread'] = 'només amb missatges no llegits';
$labels['fromto'] = 'Remitent/Destinatari';
$labels['flag'] = 'Marca';
$labels['attachment'] = 'Adjunt';
$labels['nonesort'] = 'Cap';
$labels['sentdate'] = 'Data d\'enviament';
$labels['arrival'] = 'Data d\'arribada';
$labels['asc'] = 'ascendent';
$labels['desc'] = 'descendent';
$labels['listcolumns'] = 'Llista les columnes';
$labels['listsorting'] = 'Columna d\'ordenació';
$labels['listorder'] = 'Ordre d\'ordenació';
$labels['listmode'] = 'Mode de vista de llista';
$labels['lmode'] = 'Mode de llista';
$labels['layout'] = 'Disposició';
$labels['layoutwidescreen'] = 'Pantalla panoràmica';
$labels['layoutdesktop'] = 'Escriptori';
$labels['layoutlist'] = 'Llista';
$labels['layoutwidescreendesc'] = 'Pantalla panoràmica (vista de 3 columnes)';
$labels['layoutdesktopdesc'] = 'Escriptori (llista de bat a bat amb la previsualització del missatge a sota)';
$labels['layoutlistdesc'] = 'Llista (sense previsualització del missatge)';
$labels['folderactions'] = 'Accions de carpeta...';
$labels['compact'] = 'Compacta';
$labels['empty'] = 'Buida';
$labels['importmessages'] = 'Importa missatges';
$labels['mailimportdesc'] = 'Podeu carregar correu mitjançant fitxers en format <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> o <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Es poden comprimir diversos fitxers en arxius zip.';
$labels['quota'] = 'Ús del disc';
$labels['unknown'] = 'desconegut';
$labels['unlimited'] = 'il·limitat';
$labels['quotatype'] = 'Tipus de quota';
$labels['quotatotal'] = 'Límit';
$labels['quotaused'] = 'Utilitzat';
$labels['quotastorage'] = 'Espai de disc';
$labels['quotamessage'] = 'Comptador de missatges';
$labels['shortheaderdate'] = 'El $date';
$labels['shortheaderto'] = 'A $to el $date';
$labels['shortheaderfrom'] = 'De $from el $date';
$labels['quicksearch'] = 'Cerca ràpida';
$labels['searchplaceholder'] = 'Cerca...';
$labels['resetsearch'] = 'Neteja cerca';
$labels['searchmod'] = 'Cerca modificadors';
$labels['msgtext'] = 'Missatge sencer';
$labels['body'] = 'Cos';
$labels['type'] = 'Tipus';
$labels['namex'] = 'Nom';
$labels['searchscope'] = 'Abast';
$labels['currentfolder'] = 'Carpeta actual';
$labels['subfolders'] = 'Aquesta i les seves subcarpetes';
$labels['allfolders'] = 'Totes les carpetes';
$labels['searchinterval-1W'] = 'Més antic d\'una setmana';
$labels['searchinterval-1M'] = 'Més antic d\'un mes';
$labels['searchinterval-1Y'] = 'Més antic d\'un any';
$labels['searchinterval1W'] = 'Menor d\'una setmana';
$labels['searchinterval1M'] = 'Menor d\'un mes';
$labels['searchinterval1Y'] = 'Menor d\'un any';
$labels['openinextwin'] = 'Obre a una nova finestra';
$labels['emlsave'] = 'Descarrega (.eml)';
$labels['changeformattext'] = 'Mostra en format de text net';
$labels['changeformathtml'] = 'Mostra en format HTML';
$labels['editasnew'] = 'Edita com a nou';
$labels['send'] = 'Envia';
$labels['sendmessage'] = 'Envia el missatge';
$labels['savemessage'] = 'Desa com a esborrany';
$labels['addattachment'] = 'Adjunta un fitxer';
$labels['charset'] = 'Codificació de caràcters';
$labels['editortype'] = 'Tipus d\'editor';
$labels['returnreceipt'] = 'Confirmació de recepció';
$labels['dsn'] = 'Notificació d\'estat de lliurament';
$labels['keepformatting'] = 'Conserva la formatació';
$labels['mailreplyintro'] = 'El $date, $sender va escriure:';
$labels['originalmessage'] = 'Missatge Original';
$labels['selectimage'] = 'Selecciona una imatge';
$labels['addimage'] = 'Afegeix una imatge';
$labels['selectmedia'] = 'Selecciona una pel·lícula';
$labels['addmedia'] = 'Afegeix una pel·lícula';
$labels['encrypt'] = 'Xifra';
$labels['encryptmessage'] = 'Xifra el missatge';
$labels['encryptmessagemailvelope'] = 'Xifra el missatge amb Mailvelope';
$labels['importpubkeys'] = 'Importa claus públiques';
$labels['encryptedsendialog'] = 'Envia el missatge xifrat';
$labels['encryptandsign'] = 'Xifra i signa';
$labels['keyid'] = 'ID de la clau';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Caducat';
$labels['keyrevoked'] = 'Revocat';
$labels['bccinstead'] = 'Fes servir Bcc';
$labels['addheader'] = 'Afegeix destinatari (capçalera)';
$labels['insert'] = 'Insereix';
$labels['insertcontact'] = 'Insereix contacte(s)';
$labels['recipient'] = 'Destinatari';
$labels['recipientedit'] = 'Edita el destinatari';
$labels['editidents'] = 'Edita identitats';
$labels['spellcheck'] = 'Ortografia';
$labels['checkspelling'] = 'Comprova l\'ortografia';
$labels['resumeediting'] = 'Reprèn l\'edició';
$labels['revertto'] = 'Torna a';
$labels['restore'] = 'Recupera';
$labels['restoremessage'] = 'Voleu restaurar el missatge?';
$labels['ignore'] = 'Ignora';
$labels['responses'] = 'Respostes';
$labels['insertresponse'] = 'Introduïu una resposta';
$labels['manageresponses'] = 'Gestiona respostes';
$labels['newresponse'] = 'Crea una nova resposta';
$labels['addresponse'] = 'Afegeix una resposta';
$labels['editresponse'] = 'Edita la resposta';
$labels['editresponses'] = 'Edita respostes';
$labels['responsename'] = 'Nom';
$labels['responsetext'] = 'Text de la resposta';
$labels['attach'] = 'Adjunta';
$labels['attachments'] = 'Adjunts';
$labels['upload'] = 'Afegeix';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Tanca';
$labels['messageoptions'] = 'Opcions de missatge...';
$labels['togglecomposeoptions'] = 'Commuta les opcions de composició';
$labels['attachmentrename'] = 'Reanomena el fitxer adjunt';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'La més baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'La més alta';
$labels['nosubject'] = '(sense assumpte)';
$labels['showimages'] = 'Mostra les imatges';
$labels['allow'] = 'Permet';
$labels['alwaysshow'] = 'Mostra sempre les imatges de $sender';
$labels['alwaysallow'] = 'Permet-ho sempre de $sender';
$labels['isdraft'] = 'Aquest és un missatge esborrany.';
$labels['andnmore'] = '$nr més...';
$labels['details'] = 'Detalls';
$labels['summary'] = 'Resum';
$labels['headers'] = 'Capçaleres';
$labels['allheaders'] = 'Totes les capçaleres...';
$labels['togglemoreheaders'] = 'Mostra més capçaleres del missatge';
$labels['togglefullheaders'] = 'Commuta les capçaleres del missatge en brut';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Text net';
$labels['savesentmessagein'] = 'Desa el missatge enviat a';
$labels['dontsave'] = 'no ho desis';
$labels['maxuploadsize'] = 'La mida màxima permesa del fitxer és $size';
$labels['addcc'] = 'Afegeix Cc';
$labels['addbcc'] = 'Afegeix Bcc';
$labels['addreplyto'] = 'Afegeix Respon-A';
$labels['addfollowupto'] = 'Afegeix Seguiment-A';
$labels['sendreceipt'] = 'Voleu enviar el rebut de lectura?';
$labels['mdnrequest'] = 'El remitent d\'aquest missatge ha demanat ser notificat quan llegiu aquest missatge. Voleu notificar al remitent?';
$labels['receiptread'] = 'Confirmació de recepció (llegit)';
$labels['yourmessage'] = 'Això és una confirmació de recepció per al vostre missatge';
$labels['receiptnote'] = 'Nota: Aquesta confirmació només indica que el missatge ha estat mostrat a l\'ordinador del destinatari. No hi ha garantia que el destinatari hagi llegit o entès el contingut del missatge.';
$labels['sendalwaysto'] = 'Envia-ho sempre a $email';
$labels['zoomin'] = 'Apropa-ho';
$labels['zoomout'] = 'Allunya-ho';
$labels['rotate'] = 'Gira-ho';
$labels['increaseimage'] = 'Augmenta la mida de la imatge';
$labels['decreaseimage'] = 'Disminueix la mida de la imatge';
$labels['rotateimage'] = 'Gira la imatge';
$labels['showtools'] = 'Mostra eines d\'imatge';
$labels['hidetools'] = 'Amaga eines d\'imatge';
$labels['name'] = 'Nom visible';
$labels['firstname'] = 'Nom';
$labels['surname'] = 'Cognom';
$labels['middlename'] = 'Segon Nom';
$labels['nameprefix'] = 'Prefix';
$labels['namesuffix'] = 'Sufix';
$labels['nickname'] = 'Àlies';
$labels['jobtitle'] = 'Càrrec';
$labels['department'] = 'Departament';
$labels['gender'] = 'Sexe';
$labels['maidenname'] = 'Cognom de Solter/a';
$labels['email'] = 'Correu electrònic';
$labels['phone'] = 'Telèfon';
$labels['address'] = 'Adreça';
$labels['street'] = 'Carrer';
$labels['locality'] = 'Ciutat';
$labels['zipcode'] = 'Codi postal';
$labels['region'] = 'Estat/Província';
$labels['country'] = 'País';
$labels['birthday'] = 'Data de naixement';
$labels['anniversary'] = 'Aniversari';
$labels['website'] = 'Pàgina web';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notes';
$labels['male'] = 'home';
$labels['female'] = 'dona';
$labels['manager'] = 'Gerent';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Cònjuge';
$labels['allfields'] = 'Tots els camps';
$labels['search'] = 'Cerca';
$labels['searchresult'] = 'Resultat de la cerca';
$labels['advsearch'] = 'Cerca Avançada';
$labels['advanced'] = 'Paràmetres avançats';
$labels['other'] = 'Un altre';
$labels['printcontact'] = 'Imprimeix el contacte';
$labels['qrcode'] = 'Codi QR';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Feina';
$labels['typeother'] = 'Un altre';
$labels['typemobile'] = 'Mòbil';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax particular';
$labels['typeworkfax'] = 'Fax de la feina';
$labels['typecar'] = 'Cotxe';
$labels['typepager'] = 'Cercapersones';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Pàgina web personal';
$labels['typeblog'] = 'Bloc';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Afegeix camp...';
$labels['addcontact'] = 'Afegeix un contacte';
$labels['editcontact'] = 'Edita el contacte';
$labels['contacts'] = 'Contactes';
$labels['contactproperties'] = 'Propietats del contacte';
$labels['contactnameandorg'] = 'Nom i Organització';
$labels['personalinfo'] = 'Informació personal';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Foto de contacte';
$labels['edit'] = 'Edita';
$labels['cancel'] = 'Cancel·la';
$labels['save'] = 'Desa';
$labels['delete'] = 'Suprimeix';
$labels['discard'] = 'Descarta';
$labels['continue'] = 'Continua';
$labels['ok'] = 'D\'acord';
$labels['rename'] = 'Reanomena';
$labels['addphoto'] = 'Afegeix';
$labels['replacephoto'] = 'Reemplaça';
$labels['uploadphoto'] = 'Afegeix una fotografia';
$labels['choosefile'] = 'Tria un fitxer...';
$labels['choosefiles'] = 'Tria fitxers...';
$labels['browse'] = 'Navega';
$labels['newcontact'] = 'Crea un nou contacte';
$labels['deletecontact'] = 'Suprimeix els contactes seleccionats';
$labels['composeto'] = 'Redacta un correu per a';
$labels['contactsfromto'] = 'Contactes $from a $to de $count';
$labels['print'] = 'Imprimeix';
$labels['export'] = 'Exporta';
$labels['exportall'] = 'Exporta\'ls tots';
$labels['exportsel'] = 'Exporta els seleccionats';
$labels['exportvcards'] = 'Exporta contactes en format vCard';
$labels['newgroup'] = 'Crea un grup nou';
$labels['addgroup'] = 'Afegeix un grup';
$labels['grouprename'] = 'Reanomena el grup';
$labels['groupdelete'] = 'Suprimeix el grup';
$labels['groupassign'] = 'Assigna al grup...';
$labels['groupremove'] = 'Suprimeix del grup';
$labels['groupremoveselected'] = 'Suprimeix els contactes seleccionats del grup';
$labels['uponelevel'] = 'Un nivell amunt';
$labels['previouspage'] = 'Mostra la pàgina anterior';
$labels['firstpage'] = 'Mostra la primera pàgina';
$labels['nextpage'] = 'Mostra la pàgina següent';
$labels['lastpage'] = 'Mostra la darrera pàgina';
$labels['group'] = 'Grup';
$labels['groups'] = 'Grups';
$labels['listgroup'] = 'Llista els membres del grup';
$labels['personaladrbook'] = 'Llibreta d\'adreces personals';
$labels['searchsave'] = 'Desa la cerca';
$labels['searchdelete'] = 'Suprimeix la cerca';
$labels['import'] = 'Importa';
$labels['importcontacts'] = 'Importa contactes';
$labels['importfromfile'] = 'Importa des de fitxer';
$labels['importtarget'] = 'Afegeix contactes a';
$labels['importreplace'] = 'Substitueix la llibreta d\'adreces sencera';
$labels['importgroups'] = 'Importa assignacions de grup';
$labels['importgroupsall'] = 'Tot (crea grups si és necessari)';
$labels['importgroupsexisting'] = 'Només per a grups existents';
$labels['importdesc'] = 'Podeu importar contactes des d\'una llibreta d\'adreces existent. <br/>Actualment es permet la importació d\'adreces des d\'una <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> o en format de dades CSV (dades separades per coma).';
$labels['importmapdesc'] = 'Confirmeu que la informació de mapatge de camps següent és correcta abans de continuar amb la importació de dades CSV (separades per comes).';
$labels['fieldnotmapped'] = 'Camp no mapat (no ho importeu)';
$labels['skipheader'] = 'No importis la primera línia (capçaleres)';
$labels['done'] = 'Fet';
$labels['settingsfor'] = 'Configuració per a';
$labels['about'] = 'Quant a';
$labels['preferences'] = 'Preferències';
$labels['userpreferences'] = 'Preferències de l\'usuari';
$labels['editpreferences'] = 'Edita les preferències de l\'usuari';
$labels['identities'] = 'Identitats';
$labels['manageidentities'] = 'Gestiona les identitats';
$labels['newidentity'] = 'Crea una nova identitat';
$labels['addidentity'] = 'Afegeix una identitat';
$labels['editidentity'] = 'Edita la identitat';
$labels['identityencryption'] = 'Encriptació';
$labels['preferhtml'] = 'Mostra HTML';
$labels['defaultcharset'] = 'Joc de caràcters per defecte';
$labels['htmlmessage'] = 'Missatge HTML';
$labels['messagepart'] = 'Part';
$labels['digitalsig'] = 'Signatura digital';
$labels['dateformat'] = 'Format de la data';
$labels['timeformat'] = 'Format horari';
$labels['prettydate'] = 'Dates curtes';
$labels['setdefault'] = 'Posa-ho per defecte';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Fus horari';
$labels['pagesize'] = 'Files per pàgina';
$labels['signature'] = 'Signatura';
$labels['dstactive'] = 'Horari d\'estiu';
$labels['showinextwin'] = 'Obre el missatge en una nova finestra';
$labels['composeextwin'] = 'Redacta en una nova finestra';
$labels['htmleditor'] = 'Escriu missatges en HTML';
$labels['htmlonreply'] = 'només en resposta a missatges en HTML';
$labels['htmlonreplyandforward'] = 'quan es reenviï o es respongui un missatge en HTML';
$labels['htmlsignature'] = 'Signatura en HTML';
$labels['showemail'] = 'Mostra l\'adreça electrònica amb el nom';
$labels['previewpane'] = 'Mostra el panell de previsualització';
$labels['skin'] = 'Aparença de la interfície';
$labels['logoutclear'] = 'Buida la paperera quan es tanqui la sessió';
$labels['logoutcompact'] = 'Compacta la safata d\'entrada quan es tanqui la sessió';
$labels['uisettings'] = 'Interfície de l\'usuari';
$labels['serversettings'] = 'Configuració del servidor';
$labels['mailboxview'] = 'Vista de la bústia';
$labels['mdnrequests'] = 'Quan es demani confirmació de recepció';
$labels['askuser'] = 'demana\'m què vull fer';
$labels['autosend'] = 'envia la confirmació de recepció';
$labels['autosendknown'] = 'envia la confirmació de recepció als meus contactes, pels demés demana-m\'ho';
$labels['autosendknownignore'] = 'envia la confirmació als meus contactes, pels demés ignora-ho';
$labels['autosendtrusted'] = 'envia el rebut als remitents de confiança; en cas contrari, pregunta-m\'ho';
$labels['autosendtrustedignore'] = 'envieu el rebut als remitents de confiança; en cas contrari, ignora-ho';
$labels['ignorerequest'] = 'Ignora la petició';
$labels['readwhendeleted'] = 'Marca el missatge com a llegit quan se suprimeixi';
$labels['flagfordeletion'] = 'Marca el missatge com a suprimit en comptes de suprimir-lo';
$labels['skipdeleted'] = 'No mostris els missatges suprimits';
$labels['deletealways'] = 'Si falla quan es mou un missatge a la Paperera, aleshores suprimeix-lo';
$labels['deletejunk'] = 'Suprimeix directament els missatges de correu brossa';
$labels['showremoteimages'] = 'Mostra les imatges remotes del missatge';
$labels['allowremoteresources'] = 'Permet recursos remots (imatges, estils)';
$labels['fromknownsenders'] = 'de remitents coneguts';
$labels['fromtrustedsenders'] = 'de remitents de confiança';
$labels['frommycontacts'] = 'dels meus contactes';
$labels['always'] = 'sempre';
$labels['alwaysbutplain'] = 'sempre, excepte quan es respon en text net';
$labels['showinlineimages'] = 'Mostra les imatges adjuntes sota el missatge';
$labels['autosavedraft'] = 'Desa l\'esborrany automàticament';
$labels['everynminutes'] = 'cada $n minut(s)';
$labels['refreshinterval'] = 'Actualitza (comprova nous missatges, etc.)';
$labels['never'] = 'mai';
$labels['immediately'] = 'immediatament';
$labels['messagesdisplaying'] = 'Vista de missatges';
$labels['messagescomposition'] = 'Composició de missatges';
$labels['mimeparamfolding'] = 'Noms dels adjunts';
$labels['2231folding'] = 'Compleix RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Compleix RFC 2047 (un altre)';
$labels['force7bit'] = 'Fes servir la codificació MIME per a caràcters de 8-bits';
$labels['savelocalstorage'] = "Desa-ho (temporalment) a l'espai local del navegador";
$labels['advancedoptions'] = 'Opcions avançades';
$labels['toggleadvancedoptions'] = 'Commuta les opcions avançades';
$labels['focusonnewmessage'] = 'Activa la finestra del navegador quan hi hagi un nou missatge';
$labels['checkallfolders'] = 'Comprova totes les carpetes per missatges nous';
$labels['displaynext'] = 'Mostra la següent entrada de la llista després de suprimir/moure';
$labels['defaultfont'] = 'Font de lletra per defecte del missatge en HTML';
$labels['mainoptions'] = 'Opcions principals';
$labels['browseroptions'] = 'Opcions del navegador';
$labels['section'] = 'Secció';
$labels['maintenance'] = 'Manteniment';
$labels['newmessage'] = 'Missatge nou';
$labels['signatureoptions'] = 'Opcions de signatura';
$labels['whenreplying'] = 'Quan es respongui';
$labels['replyempty'] = 'no citis el missatge original';
$labels['replytopposting'] = 'comença el missatge nou a sobre de l\'original';
$labels['replytoppostingnoindent'] = 'comença el missatge nou a sobre de l\'original (sense sagnat)';
$labels['replybottomposting'] = 'comença el missatge nou per sota de l\'original';
$labels['replyremovesignature'] = 'Quan es respongui suprimeix la signatura original del missatge';
$labels['autoaddsignature'] = 'Afegeix la signatura automàticament';
$labels['newmessageonly'] = 'només si és un missatge nou';
$labels['replyandforwardonly'] = 'només a respostes i reenviaments';
$labels['insertsignature'] = 'Inclou la signatura';
$labels['sigbelow'] = 'Posa la signatura a sota del missatge que es respon';
$labels['sigseparator'] = 'Força el separador estàndard de signatures';
$labels['automarkread'] = 'Marca els missatges com a llegits';
$labels['afternseconds'] = 'després de $n segons';
$labels['reqmdn'] = 'Demana sempre la confirmació de recepció';
$labels['reqdsn'] = 'Demana sempre una notificació d\'estat de lliurament';
$labels['replysamefolder'] = 'Posa les respostes a la carpeta del missatge que es respon';
$labels['defaultabook'] = 'Llibreta d\'adreces per defecte';
$labels['autocompletesingle'] = 'Omet adreces alternatives quan s\'autocompleti';
$labels['listnamedisplay'] = 'Llista contactes com a';
$labels['contactformmode'] = 'Mode de formulari de contacte';
$labels['privatemode'] = 'Privat (casa)';
$labels['businessmode'] = 'Empresa (feina)';
$labels['collectedaddresses'] = 'Adreces recollides';
$labels['collectedrecipients'] = 'Destinataris recollits';
$labels['collectedrecipientsopt'] = 'Emmagatzema els destinataris de correu electrònic de sortida a';
$labels['collectedsendersopt'] = 'Emmagatzema els remitents de confiança a';
$labels['trustedsenders'] = 'Remitents de Confiança';
$labels['spellcheckbeforesend'] = 'Comprova l\'ortografia abans d\'enviar un missatge';
$labels['spellcheckoptions'] = 'Opcions del corrector ortogràfic';
$labels['spellcheckignoresyms'] = 'Ignora paraules amb símbols';
$labels['spellcheckignorenums'] = 'Ignora paraules amb números';
$labels['spellcheckignorecaps'] = 'Ignora paraules amb lletres capitalitzades';
$labels['addtodict'] = 'Afegeix al diccionari';
$labels['mailtoprotohandler'] = 'Registra controlador de protocol pels enllaços mailto:';
$labels['standardwindows'] = 'Gestiona les finestres emergents com si fossin finestres normals';
$labels['forwardmode'] = 'Reenviament de missatges';
$labels['inline'] = 'en línia';
$labels['asattachment'] = 'com un adjunt';
$labels['replyallmode'] = 'Acció per defecte del botó [Respon a tots]';
$labels['replyalldefault'] = 'respon a tots';
$labels['replyalllist'] = 'respon només a la llista de missatges (si n\'hi ha cap)';
$labels['allmessages'] = 'tots els missatges';
$labels['olderxdays'] = 'més antic de $x dies';
$labels['folder'] = 'Carpeta';
$labels['folders'] = 'Carpetes';
$labels['foldername'] = 'Nom de la carpeta';
$labels['subscribed'] = 'Subscrit';
$labels['messagecount'] = 'Missatges';
$labels['create'] = 'Crea';
$labels['createfolder'] = 'Crea una carpeta nova';
$labels['managefolders'] = 'Gestiona carpetes';
$labels['specialfolders'] = 'Carpetes especials';
$labels['properties'] = 'Propietats';
$labels['folderproperties'] = 'Propietats de la carpeta';
$labels['parentfolder'] = 'Carpeta superior';
$labels['location'] = 'Ubicació';
$labels['info'] = 'Informació';
$labels['getfoldersize'] = 'Feu clic per veure la mida de la carpeta';
$labels['changesubscription'] = 'Feu clic per canviar la subscripció';
$labels['foldertype'] = 'Tipus de Carpeta';
$labels['personalfolder'] = 'Carpeta privada';
$labels['otherfolder'] = 'Carpeta d\'un altre usuari';
$labels['sharedfolder'] = 'Carpeta pública';
$labels['findfolders'] = 'Cerca carpetes';
$labels['findcontacts'] = 'Cerca contactes';
$labels['findmail'] = 'Cerqueu missatges de correu electrònic';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Altres usuaris';
$labels['namespace.shared'] = 'Compartit';
$labels['dualuselabel'] = 'Només pot contenir';
$labels['dualusemail'] = 'missatges';
$labels['dualusefolder'] = 'carpetes';
$labels['generate'] = 'Genera';
$labels['encryptioncreatekey'] = 'Crea un nou parell de claus';
$labels['openmailvelopesettings'] = 'Obre la configuració de Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Teniu $nr claus privades coincidents emmagatzemades al vostre anell de claus de Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Aquesta identitat del remitent encara no té cap clau privada PGP emmagatzemada a la vostra extensió Mailvelope. Voleu crear-ne una per activar la missatgeria xifrada?';
$labels['encryption'] = 'Encriptació';
$labels['mailvelopeoptions'] = 'Opcions de Mailvelope';
$labels['mailvelopemainkeyring'] = 'Fes servir l’anell de claus principal de Mailvelope';
$labels['mailvelopenotfound'] = 'L\'extensió Mailvelope no està activada/instal·lada al vostre navegador.';
$labels['sortby'] = 'Ordena per';
$labels['sortasc'] = 'Ordena ascendentment';
$labels['sortdesc'] = 'Ordena descendentment';
$labels['undo'] = 'Desfés';
$labels['installedplugins'] = 'Complements instal·lats';
$labels['plugin'] = 'Complement';
$labels['version'] = 'Versió';
$labels['source'] = 'Font';
$labels['destination'] = 'Destinació';
$labels['license'] = 'Llicència';
$labels['support'] = 'Obtingueu ajuda';
$labels['savedsearches'] = 'Cerques desades';
$labels['dateformatY'] = 'AAAA';
$labels['dateformaty'] = 'AA';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Anglès';
$labels['westerneuropean'] = 'Europeu occidental';
$labels['easterneuropean'] = 'Europeu oriental';
$labels['southeasterneuropean'] = 'Europeu Sud-Oriental';
$labels['baltic'] = 'Bàltic';
$labels['cyrillic'] = 'Ciríl·lic';
$labels['arabic'] = 'Àrab';
$labels['greek'] = 'Grec';
$labels['hebrew'] = 'Hebreu';
$labels['turkish'] = 'Turc';
$labels['nordic'] = 'Nòrdic';
$labels['thai'] = 'Tailandès';
$labels['celtic'] = 'Cèltic';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonès';
$labels['korean'] = 'Coreà';
$labels['chinese'] = 'Xinès';
$labels['arialabeltopnav'] = 'Finestra de control';
$labels['arialabeltasknav'] = 'Aplicació de tasques';
$labels['arialabeltoolbar'] = 'Aplicació de barra d\'eines';
$labels['arialabellistnav'] = 'Navegació per llistes';
$labels['arialabelactivetask'] = 'Tasca activa';
$labels['arialabelmessagessearchfilter'] = 'Filtre de llistat de correus electrònics';
$labels['arialabelmailsearchform'] = 'Formulari de cerca de correus electrònics';
$labels['arialabelcontactsearchform'] = 'Formulari de cerca de contactes';
$labels['arialabelmailquicksearchbox'] = 'Entrada per la cerca de correus electrònics';
$labels['arialabelquicksearchbox'] = 'Entrada de cerca';
$labels['arialabelfoldersearchfilter'] = 'Filtre de llistat de carpetes';
$labels['arialabelfoldersearchform'] = 'Formulari de cerca de carpetes';
$labels['arialabelfolderlist'] = 'Selecció de carpeta de correu electrònic';
$labels['arialabelmessagelist'] = 'Llistat de missatges de correu electrònic';
$labels['arialabelmailpreviewframe'] = 'Previsualitza el missatge';
$labels['arialabelmailboxmenu'] = 'Menú d\'accions de carpeta';
$labels['arialabellistselectmenu'] = 'Menú de seleccions de la llista';
$labels['arialabelthreadselectmenu'] = 'Menú de llistat de fils';
$labels['arialabelmessagelistoptions'] = 'Opcions de visualització de llista de missatges i ordenació';
$labels['arialabelmailimportdialog'] = 'Diàleg per importar missatges';
$labels['arialabelmessagenav'] = 'Missatge de navegació';
$labels['arialabelmessagebody'] = 'Cos del missatge';
$labels['arialabelmessageactions'] = 'Accions del missatge';
$labels['arialabelcontactquicksearch'] = 'Formulari per la cerca de contactes';
$labels['arialabelcontactsearchbox'] = 'Entrada per la cerca de contactes';
$labels['arialabelmessageheaders'] = 'Capçaleres del missatge';
$labels['arialabelforwardingoptions'] = 'Opcions de re-enviament';
$labels['arialabelreplyalloptions'] = 'Opcions per respondre a tots';
$labels['arialabelmoremessageactions'] = 'Més accions de missatge';
$labels['arialabelmorecontactactions'] = 'Més accions de contacte';
$labels['arialabelmarkmessagesas'] = 'Marca els missatges seleccionats com a...';
$labels['arialabelcomposeoptions'] = 'Opcions de composició';
$labels['arialabelresponsesmenu'] = 'Menú de respostes \'enllaunades\' o establertes';
$labels['arialabelattachmentuploadform'] = 'Formulari per pujar adjunts';
$labels['arialabelattachmentmenu'] = 'Opcions de fitxers adjunts';
$labels['arialabelmailtomenu'] = 'Opcions d’adreça de correu electrònic';
$labels['arialabelattachmentpreview'] = 'Previsualitza l\'adjunt';
$labels['ariasummarycomposecontacts'] = 'Llista de contactes i grups per seleccionar com a destinataris';
$labels['arialabelcontactexportoptions'] = 'Opcions per exportar contactes';
$labels['arialabelabookgroupoptions'] = 'Opcions de llibreta d\'adreces/grup';
$labels['arialabelpreferencesform'] = 'Formulari de preferències';
$labels['arialabelidentityeditfrom'] = 'Formulari d\'edició d\'identitats';
$labels['arialabelresponseeditfrom'] = 'Formulari d\'edició de respostes';
$labels['arialabelsearchterms'] = 'Cerca termes';
$labels['arialabeldropactionmenu'] = 'Menú d\'accions d\'Arrossega i Deixa anar';
$labels['arialabelheadersmenu'] = 'Menú per afegir el destinatari (capçalera)';
$labels['arialabelimagetools'] = 'Eines d\'imatge';
$labels['helplistnavigation'] = 'Llista la navegació per teclat';
$labels['helplistkeyboardnavigation'] = "Fletxes amunt/avall: Mou la fila seleccionada/activa.
Espai: Selecciona la fila activa.
Majús + amunt/avall: Selecciona una fila addicional de sobre/sota.
Ctrl + Espai: Afegeix la fila activa a la selecció/suprimeix de la selecció.";
$labels['helplistkeyboardnavmessages'] = "Fletxes dreta/esquerra: expandeix/contrau fils del missatge (només en mode fils).
Retorn: Obre el missatge seleccionat/actiu.
Suprimeix: Mou els missatges seleccionats a la Paperera.";
$labels['helplistkeyboardnavcontacts'] = "Retorn: Obre el contacte seleccionat/actiu";
localization/ca_ES/messages.inc000064400000046200151727150570012524 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Hi ha hagut un error!';
$messages['loginfailed']  = 'L\'accés ha fallat.';
$messages['cookiesdisabled'] = 'El vostre navegador no accepta galetes.';
$messages['sessionerror'] = 'La vostra sessió no existeix o ha caducat.';
$messages['cookiesmismatch'] = 'S\'ha detectat un desajust de galetes. Si us plau, netegeu les galetes del vostre navegador.';
$messages['storageerror'] = 'Ha fallat la connexió amb el servidor d\'emmagatzematge.';
$messages['servererror'] = 'Error del Servidor!';
$messages['servererrormsg'] = 'Error del Servidor: $msg';
$messages['accountlocked'] = 'Hi ha hagut masses intents erronis d\'inici de sessió. Torneu a provar-ho més tard.';
$messages['connerror'] = 'Error de connexió (no s\'ha pogut establir la connexió amb el servidor)!';
$messages['dberror'] = 'Error a la Base de Dades!';
$messages['dbconnerror'] = 'No s\'ha pogut connectar a la base de dades!';
$messages['windowopenerror'] = 'La finestra emergent ha estat blocada!';
$messages['requesttimedout'] = 'S\'ha exhaurit el temps de la sol·licitud';
$messages['errorreadonly'] = 'No s\'ha pogut de realitzar l\'operació. La carpeta és de només lectura.';
$messages['errornoperm'] = 'No s\'ha pogut realitzar l\'operació. Permís denegat.';
$messages['erroroverquota'] = 'No s\'ha pogut completar l\'operació. No hi ha prou espai lliure al disc dur.';
$messages['erroroverquotadelete'] = 'No hi ha prou espai lliure al disc. Feu servir MAJÚS+SUPR per suprimir el missatge.';
$messages['invalidrequest'] = 'Petició no vàlida! No s\'han desat les dades.';
$messages['invalidhost'] = 'Nom de servidor no vàlid.';
$messages['nomessagesfound'] = 'No s\'han trobat missatges en aquesta bústia.';
$messages['loggedout'] = 'Heu finalitzat correctament la sessió. A reveure!';
$messages['mailboxempty'] = 'La bústia és buida';
$messages['nomessages'] = 'No hi ha missatges';
$messages['refreshing'] = 'S\'està actualitzant...';
$messages['loading'] = 'S\'està carregant…';
$messages['uploading'] = 'S\'està pujant el fitxer...';
$messages['attaching'] = 'S\'està adjuntant el fitxer...';
$messages['uploadingmany'] = 'S\'estan pujant els fitxers...';
$messages['loadingdata'] = 'S\'estan carregant les dades...';
$messages['checkingmail'] = 'S’està comprovant si hi ha missatges nous…';
$messages['sendingmessage'] = 'S’està enviant el missatge…';
$messages['messagesent'] = 'Missatge enviat correctament.';
$messages['savingmessage'] = 'S\'està desant el missatge...';
$messages['messagesaved'] = 'Missatge desat a Esborranys.';
$messages['successfullysaved'] = 'Desat correctament.';
$messages['savingresponse'] = 'S\'està desant el text de resposta...';
$messages['deleteresponseconfirm'] = 'Esteu segur de voler suprimir aquest text de resposta?';
$messages['nocontactselected'] = 'Encara no heu seleccionat un contacte.';
$messages['addedsuccessfully'] = 'Contacte afegit correctament a la llibreta d\'adreces.';
$messages['contactexists'] = 'Ja existeix un contacte amb la mateixa adreça de correu electrònic.';
$messages['contactnameexists'] = 'Ja existeix un contacte amb el mateix nom.';
$messages['blockedimages'] = 'Per protegir la vostra privadesa, les imatges remotes han estat blocades en aquest missatge.';
$messages['blockedresources'] = 'Per protegir la vostra privacitat s\'han blocat els recursos remots.';
$messages['suspiciousemail'] = 'Aquest missatge conté adreces de correu electrònic sospitoses que poden ser fraudulentes.';
$messages['bccemail'] = 'Els missatges reenviats contenen destinataris confidencials (Cco).';
$messages['bouncehint'] = 'El missatge s’enviarà sense cap modificació, és a dir, fent servir el cos original, les capçaleres i els destinataris.';
$messages['encryptedmessage'] = 'Aquest és un missatge xifrat i no pot ser mostrat. Ho sento!';
$messages['externalmessagedecryption'] = 'Aquest és un missatge xifrat i pot ser desxifrat amb un complement del vostre navegador.';
$messages['nopubkeyfor'] = 'No s\'ha trobat una clau pública vàlida per $email';
$messages['nopubkeyforsender'] = 'No s\'ha trobat una clau pública vàlida per la identitat del vostre remitent. Voleu xifrar el missatge només pels destinataris?';
$messages['encryptnoattachments'] = 'No s\'han pogut encriptar els adjunts ja carregats. Si us plau, afegiu-los de nou a l\'editor d\'encriptació.';
$messages['searchpubkeyservers'] = 'Voleu cercar en servidors de claus públiques les vostres claus no trobades?';
$messages['encryptpubkeysfound'] = 'S\'han trobat les següents claus públiques:';
$messages['keyservererror'] = 'No s\'ha pogut obtenir la clau del servidor de claus.';
$messages['keyimportsuccess'] = 'La clau pública $key s\'ha importat correctament al vostre anell de claus.';
$messages['nocontactsfound'] = 'No s\'ha trobat cap contacte.';
$messages['contactnotfound'] = 'No s\'ha trobat el contacte sol·licitat.';
$messages['contactsearchonly'] = 'Heu de fer servir un formulari de cerca per veure els contactes de la llibreta d’adreces seleccionada.';
$messages['sendingfailed'] = 'Error mentre s\'enviava el missatge.';
$messages['senttooquickly'] = 'Si us plau, espereu $sec segon(s) abans d\'enviar aquest missatge.';
$messages['errorsavingsent'] = 'S\'ha produït un error mentre es desava el missatge enviat.';
$messages['errorsaving'] = 'S\'ha produït un error mentre es desava.';
$messages['errormoving'] = 'No s\'ha pogut moure el(s) missatge(s).';
$messages['errorcopying'] = 'No s\'ha pogut copiar el(s) missatge(s).';
$messages['errordeleting'] = 'No s\'ha pogut suprimir el(s) missatge(s).';
$messages['errormarking'] = 'No s\'ha pogut marcar el(s) missatge(s).';
$messages['alerttitle'] = 'Atenció';
$messages['confirmationtitle'] = 'Esteu segur...';
$messages['deletecontactconfirm']  = 'Esteu segur de voler suprimir el(s) contacte(s) seleccionat(s)?';
$messages['deletegroupconfirm']  = 'Esteu segur de voler suprimir el grup seleccionat?';
$messages['deletemessagesconfirm'] = 'Esteu segur de voler suprimir el(s) missatge(s) seleccionat(s)?';
$messages['deletefolderconfirm']  = 'Esteu segur de voler suprimir aquesta carpeta?';
$messages['movefolderconfirm']  = 'Realment voleu moure aquesta carpeta?';
$messages['purgefolderconfirm']  = 'Esteu segur de voler suprimir tots els missatges d\'aquesta carpeta?';
$messages['contactdeleting'] = 'S\'està suprimint els contacte(s)...';
$messages['groupdeleting'] = 'S\'està suprimint el grup...';
$messages['folderdeleting'] = 'S\'està suprimint la carpeta...';
$messages['foldermoving'] = 'S\'està movent la carpeta...';
$messages['foldersubscribing'] = 'S\'està subscrivint la carpeta...';
$messages['folderunsubscribing'] = 'S\'està cancel·lant la subscripció de la carpeta...';
$messages['formincomplete'] = 'El formulari no ha estat emplenat completament.';
$messages['noemailwarning'] = 'Si us plau, introduïu una adreça de correu electrònic vàlida.';
$messages['nonamewarning']  = 'Si us plau, introduïu un nom.';
$messages['nopagesizewarning'] = 'Si us plau, introduïu una mida de pàgina.';
$messages['nosenderwarning'] = 'Si us plau, introduïu l\'adreça de correu electrònic del remitent.';
$messages['recipientsadded'] = 'S\'ha(n) afegit el(s) destinatari(s) correctament.';
$messages['norecipientwarning'] = 'Si us plau, introduïu com a mínim un destinatari.';
$messages['disclosedrecipwarning'] = 'Tots els destinataris veuran les adreces de correu electrònic dels altres. Per evitar-ho i protegir la seva privadesa, podeu fer servir el camp Bcc.';
$messages['disclosedreciptitle'] = 'Hi ha masses destinataris públics';
$messages['nosubjectwarning']  = 'El camp "Assumpte" és buit. Voleu introduir-ne un ara?';
$messages['nosubjecttitle']  = 'Sense assumpte';
$messages['nobodywarning'] = 'Voleu enviar aquest missatge sense text?';
$messages['notsentwarning'] = 'El missatge no s\'ha pogut enviar i té canvis no desats. Voleu descartar aquests canvis?';
$messages['restoresavedcomposedata'] = 'S\'ha trobat un missatge començat però que no ha estat enviat.\n\nAssumpte: $subject\nDesat: $date\n\nVoleu recuperar aquest missatge?';
$messages['nosearchname'] = 'Si us plau, introduïu un nom de contacte o una adreça de correu.';
$messages['notuploadedwarning'] = 'Encara no s\'han pujat tots els adjunts. Si us plau, espereu o cancel·leu la pujada.';
$messages['searchsuccessful'] = '$nr missatges trobats.';
$messages['contactsearchsuccessful'] = '$nr contactes trobats.';
$messages['searchnomatch'] = 'No s\'ha trobat cap coincidència.';
$messages['searching'] = 'S\'està cercant...';
$messages['checking'] = 'S\'està comprovant...';
$messages['stillsearching'] = 'Encara s\'està cercant...';
$messages['nospellerrors'] = 'No s\'han trobat errors d\'ortografia.';
$messages['folderdeleted'] = 'Carpeta suprimida correctament.';
$messages['foldersubscribed'] = 'Carpeta subscrita correctament.';
$messages['folderunsubscribed'] = 'S\'ha cancel·lat correctament la subscripció de la carpeta.';
$messages['folderpurged'] = 'La carpeta s\'ha buidat correctament.';
$messages['folderexpunged'] = 'La carpeta s\'ha compactat correctament.';
$messages['deletedsuccessfully'] = 'Suprimit correctament.';
$messages['converting'] = 'S\'està traient el format del missatge...';
$messages['messageopenerror'] = 'No s\'ha pogut carregar el missatge del servidor.';
$messages['filelinkerror'] = 'No s\'ha pogut adjuntar el fitxer.';
$messages['fileuploaderror'] = 'La càrrega del fitxer ha fallat.';
$messages['csvfilemismatch'] = 'No es permet la importació de diversos fitxers CSV amb camps diferents.';
$messages['filesizeerror'] = 'El fitxer carregat excedeix la mida màxima de $size.';
$messages['filecounterror'] = 'Podeu carregar un màxim de $count fitxers alhora.';
$messages['msgsizeerror'] = 'No s\'ha pogut adjuntar el fitxer. S\'ha sobrepassat la mida màxima del missatge ($size).';
$messages['msgsizeerrorfwd'] = 'S\'ha superat la mida màxima d\'un missatge ($size). No s\'han adjuntat $num missatge(s).';
$messages['copysuccess'] = 'S\'han copiat $nr contactes correctament.';
$messages['movesuccess'] = 'S\'han mogut $nr contactes correctament.';
$messages['copyerror'] = 'No s\'ha pogut copiar cap contacte.';
$messages['moveerror'] = 'No s\'ha pogut moure cap contacte.';
$messages['sourceisreadonly'] = 'Aquesta adreça és només de lectura.';
$messages['errorsavingcontact'] = 'No s\'ha pogut desar l\'adreça de contacte.';
$messages['movingmessage'] = 'S\'està movent missatge(s)...';
$messages['copyingmessage'] = 'S\'està copiant missatge(s)...';
$messages['copyingcontact'] = 'S\'està copiant contacte(s)...';
$messages['movingcontact'] = 'S\'estan movent els contacte(s)...';
$messages['deletingmessage'] = 'S\'està suprimint missatge(s)...';
$messages['markingmessage'] = 'S\'està marcant missatge(s)...';
$messages['addingmember'] = 'S\'està afegint contacte(s) al grup...';
$messages['removingmember'] = 'S\'està suprimint contacte(s) del grup...';
$messages['receiptsent'] = 'Confirmació de lectura enviada correctament.';
$messages['errorsendingreceipt'] = 'No s\'ha pogut enviar la confirmació.';
$messages['deleteidentityconfirm'] = 'Esteu segur de voler suprimir aquesta identitat?';
$messages['nodeletelastidentity'] = 'No podeu suprimir aquesta identitat, és l\'última.';
$messages['forbiddencharacter'] = 'El nom de carpeta conté un caràcter no permès.';
$messages['selectimportfile'] = 'Si us plau, seleccioneu un fitxer per carregar.';
$messages['addresswriterror'] = 'La llibreta d\'adreces seleccionada no és modificable.';
$messages['contactaddedtogroup'] = 'S\'han afegit correctament els contactes a aquest grup.';
$messages['contactremovedfromgroup'] = 'S\'han suprimit correctament els contactes d\'aquest grup.';
$messages['nogroupassignmentschanged'] = 'No s\'ha canviat cap assignació de grup.';
$messages['importwait'] = 'S\'està important, espereu si us plau...';
$messages['importformaterror'] = 'La importació ha fallat. El fitxer carregat no és un fitxer de dades vàlid.';
$messages['importconfirm'] = '<b>S\'han importat $inserted contactes correctament</b>';
$messages['importconfirmskipped'] = '<b>S\'han descartat $skipped entrades ja existents</b>';
$messages['importmessagesuccess'] = '<b>S\'han importat $nr missatges correctament</b>';
$messages['importmessageerror'] = 'La importació ha fallat. El fitxer que heu carregat no és un fitxer de missatges vàlid o no és un fitxer de bústia.';
$messages['opnotpermitted'] = 'Operació no permesa!';
$messages['nofromaddress'] = 'No s\'ha trobat l\'adreça de correu electrònic a la identitat seleccionada.';
$messages['editorwarning'] = 'Si canvieu el tipus d\'editor pot ser que perdreu tot el format del text. Voleu continuar?';
$messages['httpreceivedencrypterror'] = 'Hi ha hagut un error fatal de configuració. Contacteu amb el vostre administrador immediatament. <b>El vostre missatge no pot ser enviat.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): La connexió al servidor ha fallat.';
$messages['smtpautherror'] = 'Error SMTP ($code): La identificació ha fallat.';
$messages['smtpfromerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$from" com a remitent ($msg).';
$messages['smtptoerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$to" com a destinatari ($msg).';
$messages['smtprecipientserror'] = 'Error SMTP: No s\'ha pogut analitzar la llista de destinataris.';
$messages['smtputf8error'] = 'Error SMTP: El servidor no admet caràcters Unicode a l\'adreça de correu.';
$messages['smtpsizeerror'] = 'Error SMTP: La mida del missatge supera el límit del servidor ($limit).';
$messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'Adreça de correu electrònic no vàlida: $email';
$messages['toomanyrecipients'] = 'Hi ha masses destinataris. Reduïu el nombre de destinataris a $max.';
$messages['maxgroupmembersreached'] = 'El nombre de membres del grup supera el màxim de $max.';
$messages['internalerror'] = 'S\'ha produït un error intern. Si us plau torneu-ho a provar.';
$messages['contactdelerror'] = 'No s\'han pogut suprimir el(s) contacte(s).';
$messages['contactdeleted'] = 'Contacte(s) suprimit(s) correctament.';
$messages['contactrestoreerror'] = 'No s\'ha pogut restaurar el(s) contacte(s) suprimit(s).';
$messages['contactrestored'] = 'Contacte(s) restaurat(s) correctament.';
$messages['groupdeleted'] = 'Grup suprimit correctament.';
$messages['grouprenamed'] = 'Grup reanomenat correctament.';
$messages['groupcreated'] = 'Grup creat correctament.';
$messages['savedsearchdeleted'] = 'S\'ha suprimit correctament la cerca desada.';
$messages['savedsearchdeleteerror'] = 'No s\'ha pogut suprimir la cerca desada.';
$messages['savedsearchcreated'] = 'S\'ha creat correctament la cerca desada.';
$messages['savedsearchcreateerror'] = 'No s\'ha pogut crear la cerca desada.';
$messages['messagedeleted'] = 'Missatge(s) suprimit(s) correctament.';
$messages['messagemoved'] = 'Missatge(s) mogut(s) correctament.';
$messages['messagemovedtotrash'] = 'El(s) missatge(s) s\'ha(n) mogut correctament a la Paperera.';
$messages['messagecopied'] = 'Missatge(s) copiat(s) correctament.';
$messages['messagemarked'] = 'Missatge(s) marcat(s) correctament.';
$messages['autocompletechars'] = 'Introduïu com a mínim $min caràcters per l\'autocompleció.';
$messages['autocompletemore'] = 'S\'han trobat més entrades coincidents. Si us plau, introduïu més caràcters.';
$messages['namecannotbeempty'] = 'El nom no pot estar buit.';
$messages['nametoolong'] = 'El nom és massa llarg.';
$messages['namedotforbidden'] = 'El nom de carpeta no pot començar amb un punt.';
$messages['folderupdated'] = 'La carpeta ha estat actualitzada correctament.';
$messages['foldercreated'] = 'La carpeta ha estat creada correctament.';
$messages['invalidimageformat'] = 'No és un format d\'imatge vàlid.';
$messages['mispellingsfound'] = 'S\'han detectat errors d\'ortografia al missatge.';
$messages['parentnotwritable'] = 'No s\'ha pogut crear/moure la carpeta dins de la carpeta ascendent seleccionada. No hi ha permisos d\'escriptura.';
$messages['messagetoobig'] = 'La part del missatge és massa gran per processar-la.';
$messages['attachmentvalidationerror'] = 'Aquest adjunt és sospitós per què el seu tipus no coincideix amb el tipus declarat en el missatge. Si no us en refieu del remitent, no hauríeu d\'obrir aquest missatge en el navegador perquè pot tenir contingut maliciós. <br/><br/><em>S\'esperava: $expected; s\'ha trobat: $detected</em>';
$messages['noscriptwarning'] = 'Atenció: Aquest client de correu necessita Javascript! Per a poder-lo fer servir heu d\'activar Javascript a les opcions del navegador.';
$messages['messageissent'] = 'El missatge ja ha estat enviat, però encara no s\'ha desat. Voleu desar-lo ara?';
$messages['errnotfound'] = 'No s\'ha trobat el fitxer';
$messages['errnotfoundexplain'] = 'No s\'ha trobat el recurs sol·licitat!';
$messages['errfailedrequest'] = 'La petició ha fallat';
$messages['errauthorizationfailed'] = 'L\'autorització ha fallat';
$messages['errunauthorizedexplain'] = 'No s\'ha pogut verificar que tingueu accés autoritzat a aquest servei!';
$messages['errrequestcheckfailed'] = 'Ha fallat la verificació de la petició';
$messages['errcsrfprotectionexplain'] = "Per a la vostra protecció, l'accés a aquest recurs està protegit contra CSRF.\nSi veieu això, és probable que no hàgiu tancat la sessió abans de sortir de l'aplicació web.\n\nEn aquest moment cal una intervenció manual per poder continuar.";
$messages['errcontactserveradmin'] = 'Si us plau, contacteu amb el vostre administrador de sistemes.';
$messages['clicktoresumesession'] = 'Feu clic aquí per reprendre la vostre sessió anterior';
$messages['errcomposesession'] = 'Error de sessió de redacció';
$messages['errcomposesessionexplain'] = 'No s\'ha trobat la sessió de redacció sol·licitada.';
$messages['clicktocompose'] = 'Feu clic aquí per editar un nou missatge';
$messages['nosupporterror'] = 'Aquesta característica no està suportada pel vostre navegador.';
$messages['siginserted'] = 'Signatura inserida correctament.';
$messages['responseinserted'] = 'Resposta inserida correctament.';
$messages['noresponsesavailable'] = 'No hi ha respostes disponibles';
$messages['listempty'] = 'La llista és buida.';
$messages['listusebutton'] = 'Feu servir el botó \'Crea\' per afegir un nou registre.';
$messages['keypaircreatesuccess'] = 'S\'ha creat un nou parell de claus per $identity.';
$messages['emptyattachment'] = 'Sembla ser que aquest fitxer adjunt és buit.<br>Si us plau, consulteu amb la persona que l’ha enviat.';
$messages['oauthloginfailed'] = 'Ha fallat l\'inici de sessió d\'OAuth. Si us plau, torneu-ho a provar.';
localization/si_LK/labels.inc000064400000042306151727150570012211 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product වෙත පිළිගනිමු';
$labels['username'] = 'පරිශීලක නාමය';
$labels['password'] = 'මුරපදය';
$labels['server'] = 'පද්ධතිය';
$labels['login'] = 'පිවිසුම';
$labels['logout'] = 'පිටවීම';
$labels['mail'] = 'විද්‍යුත් තැපැල';
$labels['settings'] = 'සැකසුම්';
$labels['addressbook'] = 'ලිපින පොත';
$labels['inbox'] = 'එනලිපි';
$labels['drafts'] = 'කටු සටහන්';
$labels['sent'] = 'යැවූ';
$labels['trash'] = 'ඉවතලන බඳුන';
$labels['junk'] = 'සුන්බුන්';
$labels['subject'] = 'මාතෘකාව';
$labels['from'] = 'වෙතින්';
$labels['sender'] = 'යවන්නා';
$labels['to'] = 'වෙත';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'පිළිතුරු සඳහා';
$labels['date'] = 'දිනය';
$labels['size'] = 'ප්‍රමාණය';
$labels['priority'] = 'ප්‍රමුඛත්වය';
$labels['organization'] = 'සංවිධානය';
$labels['mailboxlist'] = 'බහාලුම්';
$labels['messagesfromto'] = '$from වෙතින් $to වෙත පණිවිඩ $count';
$labels['messagenrof'] = 'පණිවිඩ $count න් $nr';
$labels['copy'] = 'පිටපත් කරන්න';
$labels['move'] = 'ගෙනයන්න';
$labels['moveto'] = 'ගෙන යන්න...';
$labels['download'] = 'බාගත කරන්න';
$labels['filename'] = 'ගොනුවේ නම';
$labels['filesize'] = 'ගොනුවේ ප්‍රමාණය';
$labels['addtoaddressbook'] = 'ලිපින පොතට එක් කරන්න';
$labels['sun'] = 'ඉ';
$labels['mon'] = 'ස';
$labels['tue'] = 'අ';
$labels['wed'] = 'බ';
$labels['thu'] = 'බ්‍ර';
$labels['fri'] = 'සි';
$labels['sat'] = 'සෙ';
$labels['sunday'] = 'ඉරිදා';
$labels['monday'] = 'සඳුදා';
$labels['tuesday'] = 'අඟහරුවාදා';
$labels['wednesday'] = 'බදාදා';
$labels['thursday'] = 'බ්‍රහස්පතින්දා';
$labels['friday'] = 'සිකුරාදා';
$labels['saturday'] = 'සෙනසුරාදා';
$labels['jan'] = 'ජන';
$labels['feb'] = 'පෙබ';
$labels['mar'] = 'මාර්';
$labels['apr'] = 'අප්‍රේ';
$labels['may'] = 'මැයි';
$labels['jun'] = 'ජූනි';
$labels['jul'] = 'ජූලි';
$labels['aug'] = 'අගෝ';
$labels['sep'] = 'සැප්';
$labels['oct'] = 'ඔක්';
$labels['nov'] = 'නොවැ';
$labels['dec'] = 'දෙසැ';
$labels['longjan'] = 'ජනවාරි';
$labels['longfeb'] = 'පෙබරවාරි';
$labels['longmar'] = 'මාර්තු';
$labels['longapr'] = 'අප්‍රේල්';
$labels['longmay'] = 'මැයි';
$labels['longjun'] = 'ජූනි';
$labels['longjul'] = 'ජූලි';
$labels['longaug'] = 'අගෝස්තු';
$labels['longsep'] = 'සැප්තැම්බර්';
$labels['longoct'] = 'ඔක්තෝම්බර්';
$labels['longnov'] = 'නොවැම්බර්';
$labels['longdec'] = 'දෙසැම්බර්';
$labels['today'] = 'අද';
$labels['checkmail'] = 'අඵත් පණිවිඩ සඳහා පිරික්සීම';
$labels['compose'] = 'පණිවිඩයක් සෑදීම';
$labels['writenewmessage'] = 'අඵත් පණිවිඩයක්';
$labels['reply'] = 'පිළිතුරු දෙන්න';
$labels['replytomessage'] = 'පණිවිඩයට පිළිතුරු';
$labels['replytoallmessage'] = 'එවන්නාට සහ සැමට පිළිතුරු';
$labels['forward'] = 'ඉදිරියට';
$labels['forwardmessage'] = 'පණිවිඩය ඉදිරියට';
$labels['deletemessage'] = 'පණිවිඩය මකන්න';
$labels['movemessagetotrash'] = 'පණිවිඩය ලටපට වෙත ගෙන යන්න';
$labels['printmessage'] = 'මෙම පණිවිඩය මුද්‍රණය කරන්න';
$labels['previousmessage'] = 'කලින් පණිවිඩය පෙන්නන්න';
$labels['firstmessage'] = 'පළමුවන පණිවිඩය පෙන්නන්න';
$labels['nextmessage'] = 'මීළඟ පණිවිඩය පෙන්නන්න';
$labels['lastmessage'] = 'අවසාන පණිවිඩය පෙන්නන්න';
$labels['backtolist'] = 'නැවතත් පණිවිඩ ලැයිස්තුවට';
$labels['viewsource'] = 'මූලාශ්‍රය පෙන්වන්න';
$labels['mark'] = 'සලකුණු කරන්න';
$labels['markmessages'] = 'පණිවිඩ සලකුණු කරන්න';
$labels['markread'] = 'කියවු ලෙස';
$labels['markunread'] = 'නොකියවු ලෙස';
$labels['moreactions'] = 'තවත් ක්‍රියා...';
$labels['more'] = 'තවත්';
$labels['back'] = 'ආපසු';
$labels['options'] = 'විකල්ප';
$labels['select'] = 'තෝරන්න';
$labels['all'] = 'සියල්ල';
$labels['none'] = 'කිසිවක් නැත';
$labels['currpage'] = 'දැනට ඇති පිටුව';
$labels['isread'] = 'කියවන්න';
$labels['unread'] = 'නොකියවූ';
$labels['deleted'] = 'මකා දැමූ';
$labels['filter'] = 'පෙරන්න';
$labels['list'] = 'ලැයිස්තුව';
$labels['expand-all'] = 'සියල්ල දිගහරින්න';
$labels['collapse-all'] = 'සියල්ල හකුළන්න';
$labels['fromto'] = 'වෙතින්/වෙත';
$labels['attachment'] = 'ඇමුණුම';
$labels['nonesort'] = 'කිසිවක් නැත';
$labels['sentdate'] = 'යැවූ දිනය';
$labels['arrival'] = 'ලගාවූ දිනය';
$labels['asc'] = 'ආරෝහණ';
$labels['desc'] = 'අවරෝහණ';
$labels['layoutlist'] = 'ලැයිස්තුව';
$labels['folderactions'] = 'බහාලුම් ක්‍රියා...';
$labels['compact'] = 'සංයුක්ත';
$labels['empty'] = 'හිස්';
$labels['unknown'] = 'නොදනී';
$labels['unlimited'] = 'අසීමිත';
$labels['quicksearch'] = 'ඉක්මන් සෙවුම';
$labels['resetsearch'] = 'සෙවුම යලි පිහිටවීම';
$labels['msgtext'] = 'සම්පූර්ණ පණිවිඩය';
$labels['openinextwin'] = 'නව කවුළුවක විවෘත කරන්න';
$labels['sendmessage'] = 'පණිවිඩය යවන්න';
$labels['savemessage'] = 'කටු සටහනක් ලෙස සුරකින්න';
$labels['addattachment'] = 'ගොනුවක් අමුණන්න';
$labels['charset'] = 'අකුරැ කට්ටලය';
$labels['editortype'] = 'සම්පාදන ආකාරය';
$labels['returnreceipt'] = 'නැවත ලබන්නා';
$labels['recipient'] = 'ලබන්නා';
$labels['checkspelling'] = 'අක්‍ෂර වින්‍යාසය පරික්‍ෂාකරන්න';
$labels['resumeediting'] = 'සම්පාදන නැවත ඇරඹීම';
$labels['revertto'] = 'ආපසු ඒම';
$labels['attach'] = 'අමුණන්න';
$labels['attachments'] = 'ඇමුණුම්';
$labels['upload'] = 'ඇතුල් කරීම';
$labels['close'] = 'වසන්න';
$labels['low'] = 'අඩු';
$labels['lowest'] = 'අඩුම';
$labels['normal'] = 'සාමාන්‍ය';
$labels['high'] = 'ඉහළ';
$labels['highest'] = 'ඉහළම';
$labels['nosubject'] = '(මාතෘකාව නොමැත)';
$labels['showimages'] = 'රූප පෙන්වන්න';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'පැහැදිලි අකුරු';
$labels['addcc'] = 'Cc එක් කරන්න';
$labels['addbcc'] = 'Bcc එක් කරන්න';
$labels['addreplyto'] = '\'පිළිතුරු සඳහා\' එක් කරන්න';
$labels['mdnrequest'] = 'මෙම පණිවුඩය එවන්නා ඔබ එය කියවු බව අසයි. එය දැන්වීමට ඔබ කැමතිද?';
$labels['receiptread'] = 'ලැබීම් ලදුපත (කියවීම)';
$labels['yourmessage'] = 'මෙය ඔබගේ පණිවුඩයේ ලැබීම් ලදුපතයි';
$labels['receiptnote'] = 'සටහන: ලැබීම් ලදුපත මගින් මෙම පණිවුඩය කියවූ බව හෝ තේරුම් ගත් බව ගම්‍ය නොවේ. පණිවුඩය ලබන්නාට පෙන්නුම් කල බවටට සාක්ෂියක් පමණි';
$labels['name'] = 'ප්‍රදර්ශනය වන නම';
$labels['firstname'] = 'මුල් නම';
$labels['surname'] = 'අවසන් නම';
$labels['nickname'] = 'සුරතල් නම';
$labels['jobtitle'] = 'රැකියා තනතුර';
$labels['department'] = 'දෙපාර්තමේන්තුව';
$labels['gender'] = 'ස්ත්‍රි/පුරුෂ භාවය';
$labels['email'] = 'විද්‍යුත් තැපෑල';
$labels['phone'] = 'දුරකථනය';
$labels['address'] = 'ලිපිනය';
$labels['locality'] = 'නගරය';
$labels['region'] = 'ප්‍රාන්තය/පළාත';
$labels['country'] = 'රට';
$labels['birthday'] = 'උපන්දිනය';
$labels['anniversary'] = 'සංවත්සරය';
$labels['website'] = 'වෙබ් අඩවිය';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'සටහන්';
$labels['male'] = 'පුරුෂ';
$labels['female'] = 'ස්ත්‍රී';
$labels['manager'] = 'කළමණාකරු';
$labels['assistant'] = 'සහායක';
$labels['search'] = 'සොයන්න';
$labels['advanced'] = 'සංකීර්ණ‍';
$labels['other'] = 'වෙනත්';
$labels['typehome'] = 'නිවස';
$labels['typework'] = 'රක්ෂාව';
$labels['typeother'] = 'වෙනත්';
$labels['typemobile'] = 'ජංගම';
$labels['typemain'] = 'ප්‍රධාන';
$labels['typehomefax'] = 'ගෘහස්ථ ෆැක්ස්';
$labels['typepager'] = 'පේජරය';
$labels['typevideo'] = 'වීඩියෝ';
$labels['typeassistant'] = 'සහායක';
$labels['typeblog'] = 'බ්ලොග්';
$labels['typeprofile'] = 'පැතිකඩ';
$labels['editcontact'] = 'ලිපිනය වෙනස් කිරීම';
$labels['contacts'] = 'සබඳතා';
$labels['personalinfo'] = 'පුද්ගලික තොරතුරු';
$labels['edit'] = 'සංස්කරණය';
$labels['cancel'] = 'අවලංගු කරන්න';
$labels['save'] = 'සුරකින්න';
$labels['delete'] = 'මකන්න';
$labels['rename'] = 'නම වෙනස් කරන්න';
$labels['addphoto'] = 'එක් කරන්න';
$labels['deletecontact'] = 'තෝරාගත් ලිපින මකාදමන්න';
$labels['composeto'] = 'පනිවුඩයක් සෑදීම';
$labels['contactsfromto'] = '$from ගෙන් $to ලිපින $count';
$labels['print'] = 'මුද්‍රණය කරන්න';
$labels['export'] = 'අපනයනය';
$labels['previouspage'] = 'පෙර පිටුව පෙන්වන්න';
$labels['firstpage'] = 'පළමුවන පිටුව පෙන්වන්න';
$labels['nextpage'] = 'මීළඟ පිටුව පෙන්වන්න';
$labels['lastpage'] = 'අවසාන පිටුව පෙන්වන්න';
$labels['group'] = 'කණ්ඩායම';
$labels['groups'] = 'කණ්ඩායම්';
$labels['personaladrbook'] = 'පුද්ගලික ලිපිනය';
$labels['import'] = 'ආනයනය කරන්න';
$labels['done'] = 'අවසානයි';
$labels['settingsfor'] = 'සඳහා සැකසුම්';
$labels['about'] = 'පිළිබඳ';
$labels['preferences'] = 'අභිමතය';
$labels['userpreferences'] = 'පරිශීලක අභිමතය';
$labels['editpreferences'] = 'පරිශීලක අභිමතය වෙනස් කිරීම්';
$labels['identities'] = 'අනන්‍යතාවන්';
$labels['preferhtml'] = 'HTML විදහා පෙන්වීම';
$labels['htmlmessage'] = 'HTML පණිවිඩය';
$labels['prettydate'] = 'සුරුබුහුටි දින';
$labels['setdefault'] = 'පළමු තත්වයට';
$labels['autodetect'] = 'ස්වයංක්‍රීය';
$labels['language'] = 'භාෂාව';
$labels['timezone'] = 'කාල කලාපය';
$labels['signature'] = 'අත්සන';
$labels['dstactive'] = 'දිවා එළිය ඉතිරි කිරීම';
$labels['htmleditor'] = 'HTML පණිවිඩයක් සෑදීම';
$labels['htmlsignature'] = 'HTML අත්සන';
$labels['previewpane'] = 'පූර්වදර්ශන කොටස පෙන්නන්න';
$labels['uisettings'] = 'පරිශීලක අතුරුමුහුණත';
$labels['askuser'] = 'මගෙන් විමසන්න';
$labels['always'] = 'සැමවිට';
$labels['autosavedraft'] = 'ස්වයංක්‍රීයව කටු සටහන සුරකින්න';
$labels['never'] = 'කිසි විටෙකත් නැති';
$labels['immediately'] = 'හැකි ඉක්මනින්';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (වෙනත්)';
$labels['section'] = 'අංශය';
$labels['maintenance'] = 'නඩත්තු කිරීම';
$labels['newmessage'] = 'අලුත් පණිවිඩයක්';
$labels['autoaddsignature'] = 'ස්වයංක්‍රීයව අත්සන ඇතුලත් කරන්න';
$labels['newmessageonly'] = 'අලුත් පණිවිඩය පමණක්';
$labels['insertsignature'] = 'අත්සන ඇතුලත් කරන්න';
$labels['afternseconds'] = 'තත්පර $nකට පසු';
$labels['spellcheckignoresyms'] = 'සලකුණු සහිත වචන නොසලකා හරින්න';
$labels['spellcheckignorenums'] = 'අංක සහිත වචන නොසලකා හරින්න';
$labels['addtodict'] = 'ශබ්ද කෝෂයට එක් කරන්න';
$labels['allmessages'] = 'සියලු පණිවිඩ';
$labels['folder'] = 'බහාලුම';
$labels['folders'] = 'බහාලුම්';
$labels['foldername'] = 'බහාලුමේ නම';
$labels['subscribed'] = 'සාමාජික';
$labels['messagecount'] = 'පණිවිඩ';
$labels['create'] = 'තනන්න';
$labels['createfolder'] = 'නව බහාලුමක් තනන්න';
$labels['managefolders'] = 'බහාලුම් කළමනාකරණය කරන්න';
$labels['specialfolders'] = 'විශේෂ බහාලුම්';
$labels['properties'] = 'වත්කම්';
$labels['folderproperties'] = 'බහාලුමේ වත්කම්';
$labels['location'] = 'ස්ථානය';
$labels['info'] = 'තොරතුරු';
$labels['foldertype'] = 'බහාලුම් වර්ගය';
$labels['personalfolder'] = 'පුද්ගලික බහාලුම';
$labels['sharedfolder'] = 'පොදු බහාලුම';
$labels['sortby'] = 'වර්ග කරන්න';
$labels['sortasc'] = 'ආරෝහණ වර්ග කිරීම';
$labels['sortdesc'] = 'අවරෝහණ වර්ග කිරීම';
$labels['plugin'] = 'ප්ලගිනය';
$labels['version'] = 'අනුවාදය';
$labels['source'] = 'මූලාශ්‍රය';
$labels['license'] = 'බලපත්‍රය';
$labels['support'] = 'සහය ලබාගන්න';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'යුනිකේත';
$labels['english'] = 'ඉංග්‍රීසි';
$labels['westerneuropean'] = 'බටහිර යුරෝපීය';
$labels['baltic'] = 'බෝල්ටික්';
$labels['arabic'] = 'අරාබි';
$labels['greek'] = 'ග්‍රීක';
$labels['hebrew'] = 'හීබෲ';
$labels['turkish'] = 'තුර්කි';
$labels['nordic'] = 'නොර්ඩික්';
$labels['thai'] = 'තායි';
$labels['celtic'] = 'සෙල්ටික්';
$labels['vietnamese'] = 'වියට්නාම';
$labels['japanese'] = 'ජපන්';
$labels['korean'] = 'කොරියානු';
$labels['chinese'] = 'චීන';
localization/si_LK/messages.inc000064400000017437151727150570012565 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'දෝෂයක් මතුවිය!';
$messages['loginfailed']  = 'ඇතුල්වීම අසාර්ථකයි.';
$messages['cookiesdisabled'] = 'ඔබේ බෞසරය කුකී බාර ගන්නේ නැත';
$messages['sessionerror'] = 'ඔබේ වාරය අවලංගු හෝ කාලය ඉකුත් වී ඇත';
$messages['dberror'] = 'දත්ත ගබඩාවේ දෝෂය!';
$messages['nomessagesfound'] = 'ලියුම් පෙට්ටියේ පනිවුඩ නැත';
$messages['loading'] = 'පූරනය...';
$messages['loadingdata'] = 'දත්ත පූරනය...';
$messages['checkingmail'] = 'අලුත් පණිවිඩ පරීක්ෂා කරමින්...';
$messages['sendingmessage'] = 'පණිවිඩය යවමින්...';
$messages['messagesent'] = 'පණිවිඩය සාර්ථකව යවන ලදී.';
$messages['savingmessage'] = 'පණිවිඩය සුරකිමින්...';
$messages['messagesaved'] = 'පනිවුඩය කටු සටහනේ තැන්පත් විය';
$messages['successfullysaved'] = 'සුරැකීම සාර්ථකයි.';
$messages['addedsuccessfully'] = 'ලිපිනය සාර්ථකව ලිපින පොතට එකතු කරන ලදී.';
$messages['blockedimages'] = 'ඔබගෙ පොද්ගලිකත්වය හේතුවෙන්, දුරස්ථ රූප අවහිර කර ඇත.';
$messages['encryptedmessage'] = 'මෙම පනිවුඩය රහස් කේතනය කර ඇති බැවින් පෙන්විය නොහැක. සමාවන්න!';
$messages['nocontactsfound'] = 'ලිපින සොයා ගත නොහැක';
$messages['contactnotfound'] = 'ඉල්ලූ ලිපිනය සොයාගත නොහැක';
$messages['sendingfailed'] = 'පණිවිඩය යැවීම අසාර්ථකයි.';
$messages['senttooquickly'] = 'කරුණාකර මෙම පණිවිඩය යැවීමට පෙර තත්පර $secක් රැදී සිටින්න.';
$messages['errormoving'] = 'පනිවුඩය ගෙන යාමට නොහැක';
$messages['errorcopying'] = 'පණිවිඩ(ය) පිටපත් කල නොහැක.';
$messages['errordeleting'] = 'පණිවිඩ(ය) මකා දැමීමට නොහැක.';
$messages['errormarking'] = 'පණිවිඩ(ය) සලකුණු කල නොහැක.';
$messages['deletecontactconfirm']  = 'තෝරා ඇති ලිපින ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
$messages['deletemessagesconfirm'] = 'තෝරා ඇති පණිවිඩ(ය) ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
$messages['deletefolderconfirm']  = 'ඔබට මෙම බහාලුම මකා දැමීමට සැබවින්ම වුවමනාද?';
$messages['purgefolderconfirm']  = 'මෙම බහාලමේ ඇති සියලුම පණිවිඩ ඔබට මකා දැමීමට සැබවින්ම වුවමනාද?';
$messages['folderdeleting'] = 'බහාලුම මකාදමමින්...';
$messages['formincomplete'] = 'පෝරමය සම්පූර්ණයෙන් පුරවා නොමැත.';
$messages['noemailwarning'] = 'කරුණාකර වලංගු විද්යුත් ලිපිනයක් ඇතුලත් කරන්න.';
$messages['nonamewarning']  = 'කරුණාකර නම ඇතුලත් කරන්න.';
$messages['nopagesizewarning'] = 'කරුණාකර පිටුවේ ප්‍රමාණය ඇතුලත් කරන්න.';
$messages['norecipientwarning'] = 'කරුණාකර යටත් පිරිසෙයින් එක් ලබන්නෙකු හෝ ඇතුලත් කරන්න';
$messages['nosubjectwarning']  = '"මාතෘකාව" හිස්. මාතෘකාවක් ඇතුලත් කිරීමට ඔබ කැමතිද?';
$messages['nobodywarning'] = 'මෙම හිස් පනිවුඩය යවන්නද?';
$messages['nosearchname'] = 'කරුණාකර ලිපිනයෙහි නම හෝ විද්යුත් තැපැල් ලිපිනය ඇතුලත් කරන්න';
$messages['searchsuccessful'] = '$nr පනිවුඩය හමු විය';
$messages['searchnomatch'] = 'සෙවුමට අදාල ගැලපීමක් නොමැත.';
$messages['searching'] = 'සොයමින්...';
$messages['checking'] = 'පරික්‍ෂාකරමින්...';
$messages['nospellerrors'] = 'වියාකරන දොෂ නොමැත';
$messages['folderdeleted'] = 'බහාලුම සාර්ථකව මකා දමන ලදී.';
$messages['deletedsuccessfully'] = 'සාර්ථකව මකාදමන ලදී.';
$messages['converting'] = 'පනිවුඩයෙන් ආකෘතීකරණය ඉවත් කිරීම';
$messages['messageopenerror'] = 'පනිවුඩය පූරනය කිරීමට නොහැක';
$messages['fileuploaderror'] = 'ගොනුව ඇතුලත් කිරීමට නොහැක';
$messages['filesizeerror'] = 'ඇතුලත් කල ගොනුවෙ ප්රමාණය උපරිම අගය $size ඉක්මවා ඇත';
$messages['sourceisreadonly'] = 'මෙම ලිපින මූලාශ්රය කියවීම සඳහා පමනි';
$messages['errorsavingcontact'] = 'ලිපිනය තැන්පත් කීරීමට නොහැක';
$messages['movingmessage'] = 'පණිවිඩ(ය) ගෙනයමින්...';
$messages['copyingmessage'] = 'පණිවිඩ(ය) පිටපත් කරමින්...';
$messages['deletingmessage'] = 'පණිවිඩ(ය) මකා දමමින්...';
$messages['markingmessage'] = 'පණිවිඩ(ය) සලකුණු කරමින්...';
$messages['errorsendingreceipt'] = 'කියවීම් භාර ගැනීම යැවීමට නොහැක';
$messages['nodeletelastidentity'] = 'අවසාන අනන්‍යතාවය මකා දැමිය නොහැක';
$messages['importwait'] = 'ආනයනය කරමින්, කරුණාකර රැදී සිටින්න...';
$messages['messagedeleted'] = 'පණිවිඩ(ය) මකා දැමීම සාර්ථකයි.';
$messages['messagemoved'] = 'පණිවිඩ(ය) ගෙනයෑම සාර්ථකයි.';
$messages['messagecopied'] = 'පණිවිඩ(ය) පිටපත් කිරීම සාර්ථකයි.';
$messages['messagemarked'] = 'පණිවිඩ(ය) සලකුණු කිරීම සාර්ථකයි.';
$messages['namecannotbeempty'] = 'නම හිස්ව තැබිය නොහැක.';
$messages['nametoolong'] = 'නම දිග වැඩිය.';
localization/ka_GE/labels.inc000064400000065347151727150570012170 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'მოგესალმებათ $product';
$labels['username'] = 'მომხმარებელი';
$labels['password'] = 'პაროლი';
$labels['server'] = 'სერვერი';
$labels['login'] = 'შესვლა';
$labels['logout'] = 'გამოსვლა';
$labels['mail'] = 'ელფოსტა';
$labels['settings'] = 'პარამეტრები';
$labels['addressbook'] = 'მისამართები';
$labels['inbox'] = 'მიღებული';
$labels['drafts'] = 'დროებითი';
$labels['sent'] = 'გაგზავნილი';
$labels['trash'] = 'წაშლილი';
$labels['junk'] = 'სპამი';
$labels['subject'] = 'სათაური';
$labels['from'] = 'გამგზავნი';
$labels['sender'] = 'გამგზავნელი';
$labels['to'] = 'ვის';
$labels['cc'] = 'ასლი';
$labels['bcc'] = 'ფარული';
$labels['replyto'] = 'პასუხი';
$labels['followupto'] = 'მიმდევარი';
$labels['date'] = 'თარიღი';
$labels['size'] = 'ზომა';
$labels['priority'] = 'პრიორიტეტი';
$labels['organization'] = 'ორგანიზაცია';
$labels['readstatus'] = 'წაკითხულის სტატუსი';
$labels['listoptions'] = 'სიის ოფციები...';
$labels['mailboxlist'] = 'საქაღალდეები';
$labels['messagesfromto'] = 'შეტყობინება $from-სგან $to-ს სულ $count\' ცალი';
$labels['messagenrof'] = 'შეტყობინება $nr დან $count';
$labels['copy'] = 'ასლი';
$labels['move'] = 'გადატანა';
$labels['moveto'] = 'გადატანა...';
$labels['download'] = 'გადმოწერა';
$labels['open'] = 'გახსნა';
$labels['showattachment'] = 'ჩვენება';
$labels['filename'] = 'ფაილის სახელი';
$labels['filesize'] = 'ფაილის ზომა';
$labels['addtoaddressbook'] = 'მისამართებში დამატება';
$labels['sun'] = 'კვი';
$labels['mon'] = 'ორშ';
$labels['tue'] = 'სამ';
$labels['wed'] = 'ოთხ';
$labels['thu'] = 'ხუთ';
$labels['fri'] = 'პარ';
$labels['sat'] = 'შაბ';
$labels['sunday'] = 'კვირა';
$labels['monday'] = 'ორშაბათი';
$labels['tuesday'] = 'სამშაბათი';
$labels['wednesday'] = 'ოთხშაბათი';
$labels['thursday'] = 'ხუთშაბათი';
$labels['friday'] = 'პარასკევი';
$labels['saturday'] = 'შაბათი';
$labels['jan'] = 'იან';
$labels['feb'] = 'თებ';
$labels['mar'] = 'მარ';
$labels['apr'] = 'აპრ';
$labels['may'] = 'მაისი';
$labels['jun'] = 'ივნ';
$labels['jul'] = 'ივლ';
$labels['aug'] = 'აგვ';
$labels['sep'] = 'სექ';
$labels['oct'] = 'ოქტ';
$labels['nov'] = 'ნოე';
$labels['dec'] = 'დეკ';
$labels['longjan'] = 'იანვარი';
$labels['longfeb'] = 'თებერვალი';
$labels['longmar'] = 'მარტი';
$labels['longapr'] = 'აპრილი';
$labels['longmay'] = 'მაისი';
$labels['longjun'] = 'ივნისი';
$labels['longjul'] = 'ივლისი';
$labels['longaug'] = 'აგვისტო';
$labels['longsep'] = 'სექტემბერი';
$labels['longoct'] = 'ოქტომბერი';
$labels['longnov'] = 'ნოემბერი';
$labels['longdec'] = 'დეკემბერი';
$labels['today'] = 'დღეს';
$labels['refresh'] = 'განახლება';
$labels['checkmail'] = 'შემოწმება ახალ შეტყობინებაზე';
$labels['compose'] = 'შეტყობინების დაწერა';
$labels['writenewmessage'] = 'ახალი შეტყობინება';
$labels['reply'] = 'პასუხის გაცემა';
$labels['replytomessage'] = 'პასუხი';
$labels['replytoallmessage'] = 'პასუხი ყველას';
$labels['replyall'] = 'პასუხის გაცემა ყველას';
$labels['replylist'] = 'პასუხის გაცემა სიით';
$labels['forward'] = 'გადაგზავნა';
$labels['forwardmessage'] = 'გადაგზავნა';
$labels['deletemessage'] = 'წაშლა';
$labels['movemessagetotrash'] = 'შეტყობინების წაშლილებში გადატანა';
$labels['printmessage'] = 'შეტყობინების ამობეჭვდა';
$labels['previousmessage'] = 'წინა შეტყობინების ნახვა';
$labels['firstmessage'] = 'პირველი შეტყობინების ნახვა';
$labels['nextmessage'] = 'შემდეგი შეტყობინების ნახვა';
$labels['lastmessage'] = 'ბოლო შეტყობინების ნახვა';
$labels['backtolist'] = 'უკან ჩამონათვალში';
$labels['viewsource'] = 'შიგთავსი';
$labels['mark'] = 'მონიშვნა';
$labels['markmessages'] = 'მონიშნეთ შეტყობინებები';
$labels['markread'] = 'როგორც წაკითხული';
$labels['markunread'] = 'როგორც წაუკითხავი';
$labels['markflagged'] = 'როგორც მონიშნული';
$labels['markunflagged'] = 'როგორც მოუნიშნავი';
$labels['moreactions'] = 'მეტი მოქმედება...';
$labels['folders-all'] = 'ყველა საქაღალდე';
$labels['more'] = 'მეტი';
$labels['back'] = 'უკან';
$labels['first'] = 'პირველი';
$labels['last'] = 'ბოლო';
$labels['previous'] = 'წინა';
$labels['next'] = 'შემდეგი';
$labels['select'] = 'მონიშვნა';
$labels['all'] = 'ყველა';
$labels['none'] = 'არცერთი';
$labels['currpage'] = 'მიმდინარე გვერდი';
$labels['isread'] = 'წაკითხვა';
$labels['unread'] = 'წაუკითხავი';
$labels['flagged'] = 'მონიშნული';
$labels['unflagged'] = 'მოუნიშნავი';
$labels['unanswered'] = 'უპასუხო';
$labels['deleted'] = 'წაშლილი';
$labels['undeleted'] = 'წაუშლელი';
$labels['replied'] = 'პასუხგაცემული';
$labels['forwarded'] = 'გადაგზავნილი';
$labels['invert'] = 'შებრუნებული';
$labels['filter'] = 'ფილტრი';
$labels['list'] = 'სია';
$labels['expand-all'] = 'ყველას გაშლა';
$labels['expand-unread'] = 'წაუკითხავის გაშლა';
$labels['collapse-all'] = 'ყველას დაკეცვა';
$labels['expand_only_unread'] = 'მარტო წაუკითხავი შეტყობინებები';
$labels['fromto'] = 'ვისგან/ვის';
$labels['flag'] = 'დროშა';
$labels['attachment'] = 'მიმაგრებული ფაილი';
$labels['nonesort'] = 'არცერთი';
$labels['sentdate'] = 'გაგზავნის თარიღი';
$labels['arrival'] = 'მოსვლის თარიღი';
$labels['asc'] = 'ზრდადობით';
$labels['desc'] = 'კლებადობით';
$labels['listcolumns'] = 'სვეტების სია';
$labels['listsorting'] = 'სვეტების დალაგება';
$labels['listorder'] = 'დალაგება';
$labels['layoutlist'] = 'სია';
$labels['folderactions'] = 'საქაღალდეზე მოქმედება..';
$labels['compact'] = 'შეკუმშვა';
$labels['empty'] = 'გაცარიელება';
$labels['quota'] = 'შეზღუდვა';
$labels['unknown'] = 'უცნობი';
$labels['unlimited'] = 'შეუზღუდავი';
$labels['quotatotal'] = 'ლიმიტი';
$labels['quotaused'] = 'გამოყენებული';
$labels['quotastorage'] = 'ადგილი დისკზე';
$labels['quotamessage'] = 'შეტყობინებების რაოდენობა';
$labels['quicksearch'] = 'სწრაფი ძიება';
$labels['resetsearch'] = 'ძიების გასუფთავება';
$labels['searchmod'] = 'ძებნის ვარიანტები';
$labels['msgtext'] = 'ყველა შეტყობინება';
$labels['body'] = 'შეტყობინების ტექსტი';
$labels['type'] = 'ტიპი';
$labels['namex'] = 'სახელი';
$labels['subfolders'] = 'ეს და ქვესაქაღალდეები';
$labels['allfolders'] = 'ყველა საქაღალდე';
$labels['searchinterval-1W'] = 'ერთ კვირაზე ძველი';
$labels['searchinterval-1M'] = 'ერთ წელზე ძველი';
$labels['searchinterval-1Y'] = 'ერთ თვეზე ძველი';
$labels['searchinterval1W'] = 'ერთ კვირაზე ახალი';
$labels['searchinterval1M'] = 'ერთ თვეზე ახალი';
$labels['searchinterval1Y'] = 'ერთ წელზე ახალი';
$labels['openinextwin'] = 'გახსნა ახალ ფანჯარაში';
$labels['emlsave'] = 'გადმოწერა (.eml)';
$labels['editasnew'] = 'რედაქტირება როგორც ახლის';
$labels['send'] = 'გაგზავნა';
$labels['sendmessage'] = 'შეტყობინების გაგზავნა';
$labels['savemessage'] = 'დროებით შენახვა';
$labels['addattachment'] = 'ფაილის ატვირთვა';
$labels['charset'] = 'კოდირება';
$labels['editortype'] = 'რედაქტორი';
$labels['returnreceipt'] = 'პასუხის მოთხოვნა';
$labels['mailreplyintro'] = '$date-ში, $sender დაწერა:';
$labels['originalmessage'] = 'ორიგინალი შეტყობინება';
$labels['selectimage'] = 'სურათის არჩევა';
$labels['addimage'] = 'სურათის დამატება';
$labels['selectmedia'] = 'ფილმის არჩევა';
$labels['addmedia'] = 'ფილმის დამატება';
$labels['keyexpired'] = 'ვადაგასული';
$labels['spellcheck'] = 'გრამატიკა';
$labels['checkspelling'] = 'ორთოგრაფიული შემოწმება';
$labels['resumeediting'] = 'რედაქტირების გაგრძელება';
$labels['revertto'] = 'გაუქმება';
$labels['restore'] = 'აღდგენა';
$labels['restoremessage'] = 'აღვადგინო შეტყობინება?';
$labels['ignore'] = 'იგნორირება';
$labels['responses'] = 'პასუხები';
$labels['insertresponse'] = 'პასუხის ჩასმა';
$labels['manageresponses'] = 'პასუხების მართვა';
$labels['newresponse'] = 'ახალი პასუხის შექმნა';
$labels['addresponse'] = 'პასუხის დამატება';
$labels['editresponse'] = 'პასუხის რედაქტირება';
$labels['editresponses'] = 'პასუხების რედაქტირება';
$labels['responsename'] = 'სახელი';
$labels['responsetext'] = 'პასუხის ტექსტი';
$labels['attach'] = 'მიბმა';
$labels['attachments'] = 'გზავნილები';
$labels['upload'] = 'ატვირთვა';
$labels['close'] = 'დახურვა';
$labels['messageoptions'] = 'შეტყობინების ოფციები...';
$labels['low'] = 'დაბალი';
$labels['lowest'] = 'უდაბლესი';
$labels['normal'] = 'საშუალო';
$labels['high'] = 'მაღალი';
$labels['highest'] = 'უმაღლესი';
$labels['nosubject'] = '(უსათაურო)';
$labels['showimages'] = 'გამოსახულების ჩვენება';
$labels['alwaysshow'] = 'ყოველთვის გამოაჩინე სურათები $sender –გან';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ტექსტური';
$labels['savesentmessagein'] = 'შეინახე შეტყობინება';
$labels['dontsave'] = 'არ შეინახო';
$labels['maxuploadsize'] = 'მაქსიმალური დაშვებული ფაილის ზომა $size';
$labels['addcc'] = 'დაამატე კოპიო';
$labels['addbcc'] = 'დაამატე ფარული კოპიო';
$labels['addreplyto'] = 'დაამატე გამომგზავნი';
$labels['mdnrequest'] = 'გამომგზავნს სურს შეიტყოს წერილის მიღება. გსურთ შეატყობინოთ გამომგზავნს?';
$labels['receiptread'] = 'გზავნილის დაბრუნება';
$labels['yourmessage'] = 'ეს არის მიღების დასტური თქვენს შეტყობინებაზე';
$labels['receiptnote'] = 'განმარტება: ეს ნიშნავს რომ ადრესატმა მიიღო შეტყობინება. მაგრამ, არ ნიშნავს რომ წაიკითხა ან გაიგო ტექსტი';
$labels['name'] = 'სრული სახელი';
$labels['firstname'] = 'სახელი';
$labels['surname'] = 'გვარი';
$labels['nameprefix'] = 'პრეფიქსი';
$labels['namesuffix'] = 'სუფიქსი';
$labels['jobtitle'] = 'თანამდებობა';
$labels['department'] = 'დეპარტამენტი';
$labels['gender'] = 'სქესი';
$labels['email'] = 'ელ–ფოსტა';
$labels['phone'] = 'ტელეფონი';
$labels['address'] = 'მისამართი';
$labels['street'] = 'ქუჩა';
$labels['locality'] = 'ქალაქი';
$labels['zipcode'] = 'ZIP კოდი';
$labels['region'] = 'შტატი/პროვინცია';
$labels['country'] = 'ქვეყანა';
$labels['birthday'] = 'დაბადების დღე';
$labels['website'] = 'ვებგვერდი';
$labels['male'] = 'მამრობითი';
$labels['female'] = 'მდედრობით';
$labels['manager'] = 'მენეჯერი';
$labels['allfields'] = 'ყველა ველი';
$labels['search'] = 'ძებნა';
$labels['searchresult'] = 'ძებნის რეზულტატი';
$labels['advsearch'] = 'გაფართოებული ძებნა';
$labels['other'] = 'სხვა';
$labels['typehome'] = 'სახლი';
$labels['typework'] = 'სამსახური';
$labels['typeother'] = 'სხვა';
$labels['typemobile'] = 'მობილური';
$labels['typemain'] = 'ძირითადი';
$labels['typehomefax'] = 'სახლის ფაქსი';
$labels['typeworkfax'] = 'სამსახურის ფაქსი';
$labels['typecar'] = 'მანქანა';
$labels['typepager'] = 'პეიჯერი';
$labels['typevideo'] = 'ვიდეო';
$labels['typeblog'] = 'ბლოგი';
$labels['typeprofile'] = 'პროფილი';
$labels['addfield'] = 'ველის დამატება...';
$labels['addcontact'] = 'კონტაქტის დამატება';
$labels['editcontact'] = 'კონტაქტის რედაქტირება';
$labels['contacts'] = 'კონტაქტები';
$labels['contactnameandorg'] = 'სახელი და ორგანიზაცია';
$labels['personalinfo'] = 'პირადი ინფორმაცია';
$labels['contactphoto'] = 'კონტაქტის ფოტო';
$labels['edit'] = 'რედაქტირება';
$labels['cancel'] = 'გაუქმება';
$labels['save'] = 'შენახვა';
$labels['delete'] = 'წაშლა';
$labels['rename'] = 'გადარქმევა';
$labels['addphoto'] = 'დამატება';
$labels['replacephoto'] = 'გამოცვლა';
$labels['uploadphoto'] = 'სურათის ატვირთვა';
$labels['deletecontact'] = 'მონიშნელი კონტაქტის წაშლა';
$labels['composeto'] = 'ფოსტის გაგზავნა შერჩეულ ადრესატებთან';
$labels['contactsfromto'] = 'კონტაქტები $from დან $to ში $count';
$labels['print'] = 'დაბეჭვდა';
$labels['export'] = 'ექსპორტი';
$labels['exportvcards'] = 'კონტაქტების ექსპორტი vCard ფორმატში';
$labels['grouprename'] = 'ჯგუფის სახელის შეცვლა';
$labels['groupdelete'] = 'ჯგუფის წაშლა';
$labels['previouspage'] = 'წინას ჩვენება';
$labels['firstpage'] = 'პირველის ჩვენება';
$labels['nextpage'] = 'შემდეგის ჩვენება';
$labels['lastpage'] = 'ბოლოს ჩვენება';
$labels['group'] = 'ჯგუფი';
$labels['groups'] = 'ჯგუფები';
$labels['personaladrbook'] = 'პერსონალური მისამართები';
$labels['searchsave'] = 'ძებნის შენახვა';
$labels['searchdelete'] = 'ძებნის წაშლა';
$labels['import'] = 'შემოტანა';
$labels['importcontacts'] = 'კონტაქტების შემოტანა';
$labels['importreplace'] = 'ჩაანაცვლეთ არსებული მისამართები';
$labels['done'] = 'დასრულებულია';
$labels['settingsfor'] = 'პარამეტრები';
$labels['preferences'] = 'პარამეტრები';
$labels['userpreferences'] = 'მომხმარებლის პარამეტრები';
$labels['editpreferences'] = 'მომხმარებლის პარამეტრების რედაქტირება';
$labels['identities'] = 'პროფილები';
$labels['preferhtml'] = 'როგორც HTML';
$labels['defaultcharset'] = 'ნაგულისხმები სიმბოლოთა ნაკრები';
$labels['htmlmessage'] = 'HTML შეტყობინება';
$labels['dateformat'] = 'თარიღის ფორმატი';
$labels['timeformat'] = 'დროის ფორმატი';
$labels['prettydate'] = 'კარგი თარიღები';
$labels['setdefault'] = 'როგორც ზოგაგად';
$labels['autodetect'] = 'ავტომატური';
$labels['language'] = 'ენა';
$labels['timezone'] = 'დროითი ზონა';
$labels['pagesize'] = 'სტრიქონი გვერდზე';
$labels['signature'] = 'ხელმოწერა';
$labels['dstactive'] = 'დროის გადაყვანა';
$labels['htmleditor'] = 'შეტყობინების შექმნა HTML –ში';
$labels['htmlsignature'] = 'HTML ხელმოწერა';
$labels['previewpane'] = 'ჩვენება';
$labels['skin'] = 'ინტერფეისი';
$labels['logoutclear'] = 'წაშლილების გასუფთავება გამოსვლისას';
$labels['logoutcompact'] = 'მიღებულების შეკუმშვა გამოსვლისას';
$labels['uisettings'] = 'მომხმარებლის ინტერფეისი';
$labels['serversettings'] = 'სერვერის პარამეტრები';
$labels['mailboxview'] = 'საფოსტო ყუთის ჩვენება';
$labels['mdnrequests'] = 'მგზავნელის შეტყობინებები';
$labels['askuser'] = 'ჰკითხე მომხმარებელს';
$labels['autosend'] = 'გაგზავნე ავტომატურად';
$labels['readwhendeleted'] = 'მონიშნე გზავნილი წაკითხულად წაშლის დროს';
$labels['flagfordeletion'] = 'აღნიშნეთ გზავნილები როგორც წასაშლელი წაშლის ნაცვლად';
$labels['skipdeleted'] = 'არ გამოაჩინო წაშლილი გზავნილები';
$labels['showremoteimages'] = 'გამოაჩინე მოშორებული სურათები';
$labels['fromknownsenders'] = 'ნაცნობი მგზავნელებისგან';
$labels['always'] = 'ყოველთვის';
$labels['showinlineimages'] = 'ატვირთული სურათები გამოაჩინე გზავნილის ქვემოთ';
$labels['autosavedraft'] = 'ავტომატური შენახვა';
$labels['everynminutes'] = 'ყოველ $n წუთში';
$labels['never'] = 'არასდროს';
$labels['immediately'] = 'დაუყონებლივ';
$labels['messagesdisplaying'] = 'გამოაჩინე შეტყობინებები';
$labels['messagescomposition'] = 'შეტყობინებების შექმნა';
$labels['mimeparamfolding'] = 'ბმულის სახელები';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'MIME კოდირების გამოყენება 8 ბიტიანი სიმბოლოებისთვის';
$labels['advancedoptions'] = 'დამატებითი პარამეტრები';
$labels['focusonnewmessage'] = 'ფოკუსირება ახალ შეტყობინებებზე';
$labels['checkallfolders'] = 'შეამოწმე ყველა საქაღალდე ახალ შეტყობინებაზე';
$labels['mainoptions'] = 'ძირითადი პარამეტრები';
$labels['section'] = 'განყოფილება';
$labels['maintenance'] = 'მომსახურება';
$labels['newmessage'] = 'ახალი შეტყობინება';
$labels['signatureoptions'] = 'ხელმოწერის ოფციები';
$labels['whenreplying'] = 'პასუხის შემთხვევაში';
$labels['replytopposting'] = 'დაიწყოს ახალი შეტყობინება ორიგინალის ზემოთ';
$labels['replybottomposting'] = 'დაიწყოს ახალი შეტყობინება ორიგინალის ქვემოთ';
$labels['replyremovesignature'] = 'წაიშალოს ხელმოწერა პასუხის შემთხვევაში';
$labels['autoaddsignature'] = 'ავტომატურად დაემატოს ხელმოწერა';
$labels['newmessageonly'] = 'მხოლოდ ახალი შეტყობინება';
$labels['replyandforwardonly'] = 'მხოლოდ გადაგზავნის და პასუხის შემთხვევაში';
$labels['insertsignature'] = 'ხელმოცერის ჩასმა';
$labels['afternseconds'] = '$n წამის შემდეგ';
$labels['addtodict'] = 'ლექსიკონში დამატება';
$labels['folder'] = 'საქაღალდე';
$labels['folders'] = 'საქაღალდეები';
$labels['foldername'] = 'საქაღალდის დასახელება';
$labels['subscribed'] = 'გამოწერილია';
$labels['messagecount'] = 'შეტყობინებები';
$labels['create'] = 'შექმნა';
$labels['createfolder'] = 'საქაღალდის შექმნა';
$labels['managefolders'] = 'საქაღალდეების მართვა';
$labels['specialfolders'] = 'სპეციალური საქაღალდე';
$labels['location'] = 'მდებარეობა';
$labels['info'] = 'ინფორმაცია';
$labels['foldertype'] = 'დასტის ტიპი';
$labels['personalfolder'] = 'კერძო დასტა';
$labels['sharedfolder'] = 'საჯარო დასტა';
$labels['sortby'] = 'დალაგება';
$labels['sortasc'] = 'დალაგება ზრდადობით';
$labels['sortdesc'] = 'დალაგება კლებადობით';
$labels['undo'] = 'დაბრუნება';
$labels['B'] = 'ბტ';
$labels['KB'] = 'კბტ';
$labels['MB'] = 'მბტ';
$labels['GB'] = 'გბტ';
$labels['unicode'] = 'უნიკოდი';
$labels['english'] = 'ინსგლისური';
$labels['westerneuropean'] = 'დასავლურევროპული';
$labels['easterneuropean'] = 'აღმოსავლეთევროპული';
$labels['baltic'] = 'ბალტიური';
$labels['cyrillic'] = 'კირილიცა';
$labels['arabic'] = 'არაბული';
$labels['greek'] = 'ბერძნული';
$labels['hebrew'] = 'ებრაული';
$labels['turkish'] = 'თურქული';
$labels['thai'] = 'ტაი';
$labels['celtic'] = 'კელტური';
$labels['vietnamese'] = 'ვიეტნამური';
$labels['japanese'] = 'იაპონური';
$labels['korean'] = 'კორეული';
$labels['chinese'] = 'ჩინური';
localization/ka_GE/messages.inc000064400000045754151727150600012527 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'დაფიქსირდა შეცდომა!';
$messages['loginfailed']  = 'შესვლა შეუძლებელია';
$messages['cookiesdisabled'] = 'თქვენი ბროუზერი კუკიებს არ პასუხობს';
$messages['sessionerror'] = 'თქვენი სესია არის მცდარი ან ვადაგასული';
$messages['storageerror'] = 'IMAP სერვერთან დაკავშირება შეუძლებელია';
$messages['servererror'] = 'შეცდომა სერვერზე!';
$messages['servererrormsg'] = 'სერვერის შეცდომა: $msg';
$messages['accountlocked'] = 'ძალიან ბევრი წარუმატებელი შესვლის მცდელობა. მოგვიანებით სცადეთ.';
$messages['connerror'] = 'კავშირის შეცდომა (სერვერთან კავშირი შეუძლებელია)!';
$messages['dberror'] = 'მონაცემთა ბაზის შეცდომა!';
$messages['requesttimedout'] = 'მოთხოვნას ვადა გაუვიდა';
$messages['errorreadonly'] = 'ოპერაციის შესრულება შეუძლებელია. საქაღალდე არის მხოლოდ წაწკითხვის რეჟიმში.';
$messages['errornoperm'] = 'მოქმედების შესრულება შეუძლებალია. წვდომა აკრძალულია.';
$messages['erroroverquota'] = 'მოქმედების შესრულება შეუძლებალია. დისკზე არ დარჩა თავისუფალი ადგილი.';
$messages['erroroverquotadelete'] = 'დისკზე არ დარჩა თავისუფალი ადგილი. გამოიყენეთ SHIFT+DEL შეტყობინების წასასშლელად.';
$messages['invalidrequest'] = 'არასწორი მოთხოვნა! მონაცემების შენახვა არ მოხერხდა.';
$messages['invalidhost'] = 'არასწორი სერვერის სახელი';
$messages['nomessagesfound'] = 'არ არის ახალი შეტყობინება';
$messages['mailboxempty'] = 'საფოსტო ყუთი ცარიელია';
$messages['nomessages'] = 'არ არის შეტყობინებები';
$messages['refreshing'] = 'განახლება...';
$messages['loading'] = 'იტვირთება...';
$messages['uploading'] = 'ფაილი იტვირთება...';
$messages['attaching'] = 'ფაილის მიმაგრება...';
$messages['uploadingmany'] = 'ფაილების ატვირთვა...';
$messages['loadingdata'] = 'მონაცემების ჩატვირთვა...';
$messages['checkingmail'] = 'ახალი შეტყობინების ნახვა';
$messages['sendingmessage'] = 'შეტყობინების გაგზავნა';
$messages['messagesent'] = 'შეტყობინება გაიგზავნა წარმატებით';
$messages['savingmessage'] = 'შეტყობინების შენახვა...';
$messages['messagesaved'] = 'შეტყობინების დროებით შენახვა';
$messages['successfullysaved'] = 'წარმატებით შეინახა';
$messages['addedsuccessfully'] = 'კონტაქტი წარმატებით დაემატა მისამართებში';
$messages['contactnameexists'] = 'კონტაქტი იგივე სახელით უკვე არსებობს.';
$messages['blockedimages'] = 'უსაფრთხოების მიზნით სურათების ჩვენება შეზღუდულია';
$messages['encryptedmessage'] = 'შეტყობინება დაშიფრულია და სამწუხაროდ ჩვენება შეუძლებელია';
$messages['nocontactsfound'] = 'კონტაქტი ვერ მოიძებნა';
$messages['contactnotfound'] = 'მოთხოვნილი კონტაქტი ვერ მოიძებნა';
$messages['sendingfailed'] = 'შეტყობინება ვერ გაიგზავნა';
$messages['senttooquickly'] = 'გთხოვთ მოიცადოთ $sec წამი. სანამ იგზავნება შეტყობინება';
$messages['errorsavingsent'] = 'გაგზავნილი შეტყობინების შენახვის დროს მოხდა შეცდომა.';
$messages['errorsaving'] = 'შეტყობინების შენახვის დროს მოხდა შეცდომა';
$messages['errormoving'] = 'შეტყობინების გადატანა შეუძლებელია';
$messages['errorcopying'] = 'შეტყობინების კოპირება შეუძლებელია.';
$messages['errordeleting'] = 'შეტყობინების წაშლა შეუძლებელია';
$messages['errormarking'] = 'შეტყობინების მონიშვნა შეუძლებელია';
$messages['deletecontactconfirm']  = 'ნამდვილად გსურთ მონიშნული კონტაქტების წაშლა?';
$messages['deletegroupconfirm']  = 'ნამდვილად გსურთ მონიშნული ჯგუფის წაშლა?';
$messages['deletemessagesconfirm'] = 'ნამდვილად გსურთ მონიშნული შეტყობინებების წაშლა?';
$messages['deletefolderconfirm']  = 'ნამდვილად გსურთ ამ საქაღალდის წაშლა?';
$messages['purgefolderconfirm']  = 'ნამდვილად გსურთ ყველა შეტყობინების წაშლა აღნიშნულ საქაღალდეში?';
$messages['contactdeleting'] = 'კონტაქტის წაშლა...';
$messages['groupdeleting'] = 'ჯგუფის წაშლა...';
$messages['folderdeleting'] = 'საქაღალდის წაშლა...';
$messages['foldermoving'] = 'საქაღალდის გადატანა...';
$messages['foldersubscribing'] = 'საქაღალდის გამოწერა...';
$messages['folderunsubscribing'] = 'საქაღალდის გამოწერაის გაუქმება...';
$messages['formincomplete'] = 'ყველა ველი არ არის შევსებული';
$messages['noemailwarning'] = 'მიუთითეთ სწორი ელ–ფოსტის მისამართი';
$messages['nonamewarning']  = 'მიუთითეთ სახელი';
$messages['nopagesizewarning'] = 'მიუთითეთ ფურცლის ზომა';
$messages['norecipientwarning'] = 'მიუთითეთ მიმღები';
$messages['nosubjectwarning']  = 'გსურთ თუ არა შეტყობინების გაგზავნა უსათაუროდ?';
$messages['nobodywarning'] = 'გსურთ თუ არა შეტყობინების გაგზავნა უტექსტოდ?';
$messages['nosearchname'] = 'მიუთითეთ სახელი ან ელ–ფოსტის მისამართი';
$messages['notuploadedwarning'] = 'ჯერ არ ატვირთულა ყველა მიმაგრებული ფაილი. დაელოდეთ ან გააუქმეთ ატვირთვა.';
$messages['searchsuccessful'] = '$nr შეტყობინეა მოიძებნა';
$messages['contactsearchsuccessful'] = 'ნაპოვნია $nr კონტაქტი';
$messages['searchnomatch'] = 'შეტყობინება ვერ მოიძებნა';
$messages['searching'] = 'ძიება...';
$messages['checking'] = 'შემოწმება...';
$messages['stillsearching'] = 'ჯერ კიდევ ეძებს ...';
$messages['nospellerrors'] = 'ორთოგრაფიული შეცდომა არ არის';
$messages['folderdeleted'] = 'საქაღალდე წარმატებით წაიშალა';
$messages['foldersubscribed'] = 'საქაღალდე წარმატებით გამოწერილია.';
$messages['folderunsubscribed'] = 'საქაღალდის გამოწერა წარმატებით გაუქმებულია.';
$messages['deletedsuccessfully'] = 'წარმატებით წაიშალა';
$messages['converting'] = 'შეტყობინების ფორმატირების გაუქმება...';
$messages['messageopenerror'] = 'შეტყობინება ვერ ჩაიტვირთა სერვერიდან';
$messages['filelinkerror'] = 'ფაილის მიმაგრება ვერ მოხდა.';
$messages['fileuploaderror'] = 'ფაილი ვერ აიტვირთა';
$messages['filesizeerror'] = 'ატვირთული ფაილის ზომა მეტია დასაშვებ ფაილის მაქსიმალურ ზომაზე ($size)';
$messages['copysuccess'] = 'წარმატებულად დაკოპირდა $nr კონტაქტი.';
$messages['movesuccess'] = 'წარმატებულად გადატანილია $nr კონტაქტი.';
$messages['copyerror'] = 'ვერცერთი კონტაქტის კოპირება ვერ მოხერხდა.';
$messages['moveerror'] = 'ვერცერთი კონტაქტის გადატანა ვერ მოხერხდა.';
$messages['sourceisreadonly'] = 'აღნიშნული მისამართის მხოლოდ წაკითხვაა შესაძლებელი';
$messages['errorsavingcontact'] = 'საკონტაქტო მისამართის შენახვა შეუძლებელია';
$messages['movingmessage'] = 'შეტყობინების გადატანა...';
$messages['copyingmessage'] = 'შეტყობინების კოპოირება...';
$messages['copyingcontact'] = 'კონტაქტის კოპირება...';
$messages['movingcontact'] = 'კონტაქტის გადატანა...';
$messages['deletingmessage'] = 'შეტყობინების წაშლა...';
$messages['markingmessage'] = 'შეტყობინების მონიშვნა...';
$messages['addingmember'] = 'კონტაქტების დამატება ჯგუფში...';
$messages['removingmember'] = 'კონტაქტების წაშლა ჯგუფიდან...';
$messages['receiptsent'] = 'წარმატებით გაიგზავნა';
$messages['errorsendingreceipt'] = 'არ გაიგზავნა';
$messages['nodeletelastidentity'] = 'წაშლა შეუძლებელია, ის თქვენთვის ერთადერთია';
$messages['forbiddencharacter'] = 'საქაღალდის სახელი შეიცავს აკრძალულ სიმბოლოებს';
$messages['selectimportfile'] = 'გთხოვთ მონიშნოთ ფაილი ასატვირთად';
$messages['addresswriterror'] = 'მონიშნულ მისამართებში ჩაწერა შეუძლებელია';
$messages['contactaddedtogroup'] = 'წარმატებულად დაემატა კონტაქტები ჯგუფში.';
$messages['contactremovedfromgroup'] = 'წარმატებულად წაიშალა კონტაქტები ჯგუფიდან.';
$messages['nogroupassignmentschanged'] = 'ჯგუფების მიმაგრება არ შეცვლილა.';
$messages['importwait'] = 'გთხოვთ მოიცადოთ, მიმდინარეობს შემოტანა';
$messages['importconfirm'] = '<b>წარმატებით დასრულდა $inserted კონტაქტების შემოტანა, $skipped არსებულის გამოტოვება</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'ოპერაცია შეზღუდულია';
$messages['httpreceivedencrypterror'] = 'სერვერზე მოხდა შეცდომა. დაუყონებლივ დაუკავშირდით ადმინისტრატორს. <b>თქვენი შეტყობინება შესაძლოა ვერ გაიგზავნა.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): სერვერთან დაკავშირება ვერ მოხერხდა';
$messages['smtpautherror'] = 'SMTP Error ($code): ავტორიზაციის შეცდომა';
$messages['smtpfromerror'] = 'SMTP Error ($code): ვერ მიეთითა გამგზავნი "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): ვერ დაემატა მიმღები "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error: მიმღებთა ჩამონათვალის დამუშავება ვერ მოხერხდა';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['maxgroupmembersreached'] = 'ჯგუფის წევრების რაოდენობა მეტია დასაშვებ ($size)-ზე';
$messages['internalerror'] = 'დაფიქსირდა შეცდომა. გთხოვთ სცადოთ მოგვიანებით.';
$messages['contactdelerror'] = 'კონტაქტის წაშლა არ მოხერხდა.';
$messages['contactdeleted'] = 'კონტაქტ(ებ)ი წარმატებით წაიშალა.';
$messages['contactrestoreerror'] = 'წაშლილი კონტაქტების აღდგენა არ მოხერხდა.';
$messages['contactrestored'] = 'კონრაქტ(ებ)ი წარმატებით აღდგა,';
$messages['groupdeleted'] = 'ჯგუფი წარმატებით წაიშალა.';
$messages['grouprenamed'] = 'ჯგუფს წარმატებულად გადაერქვა სახელი.';
$messages['groupcreated'] = 'ჯგუფი წარმატებით შეიქმნა.';
$messages['savedsearchdeleted'] = 'შენახული ძიება წარმატებულად წაშლილია.';
$messages['savedsearchdeleteerror'] = 'შენახული ძიების წაშლა ვერ მოხერხდა.';
$messages['savedsearchcreated'] = 'შენახული ძიების შექმნილია წარმატებულად.';
$messages['savedsearchcreateerror'] = 'შენახული ძიების შექმნა ვერ მოხერხდა.';
$messages['messagedeleted'] = 'შეტყობინებები წარმატებით წაიშალა.';
$messages['messagemoved'] = 'შეტყობინებები გადატანილია წარმატებით.';
$messages['messagecopied'] = 'შეტყობინება დაკოპირებულია წარმატებით.';
$messages['messagemarked'] = 'შეტყობინებები წარმატებით მოინიშნა.';
$messages['autocompletechars'] = 'შეიყვანეთ მინიმუმ $min სიმბოლო ავტომატური დაბოლოებისათვის.';
$messages['autocompletemore'] = 'დამთხვევა ვერ მოხერხდა. გთხოვთ კიდევ შეიყვანოთ სიმბოლოები.  ';
$messages['namecannotbeempty'] = 'სახელი არ შეიძლება იყოს ცარიელი.';
$messages['nametoolong'] = 'სახელი ძალიან მოკლეა.';
$messages['namedotforbidden'] = 'საქაღალდის სახელი არ შეიძლება იწყებოდეს წერტილით.';
$messages['folderupdated'] = 'დასტა წარმატებით განახლდა.';
$messages['foldercreated'] = 'დასტა წარმატებით შეიქმნა.';
$messages['invalidimageformat'] = 'გამოსახულების ფორმატი არასწორია.';
$messages['mispellingsfound'] = 'გრამატიკული შეცდომები დაფიქსირდა შეტყობინებაში.';
$messages['errnotfound'] = 'ფაილი არ მოიძებნა.';
$messages['errnotfoundexplain'] = 'მოთხოვნილი რესურსი ვერ მოიძებნა!';
$messages['errcontactserveradmin'] = 'გთხოვთ დაუკავშირდეთ სერვერის ადმინისტრატორს.';
$messages['clicktoresumesession'] = 'დააჭირეთ აქ რომ განაგრძოთ წინა სესია.';
$messages['clicktocompose'] = 'დააჭირეთ აქ რომ შექმნათ ახალი შეტყობინება.';
localization/ia/labels.inc000064400000072734151727150600011603 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Benvenite a $product';
$labels['username'] = 'Nomine de usator';
$labels['password'] = 'Contrasigno';
$labels['server'] = 'Servitor';
$labels['login'] = 'Aperir session';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Clauder session';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Configurationes';
$labels['addressbook'] = 'Adressario';
$labels['inbox'] = 'Cassa de entrata';
$labels['drafts'] = 'Versiones provisori';
$labels['sent'] = 'Inviate';
$labels['trash'] = 'Corbe a papiro';
$labels['junk'] = 'Posta indesirate';
$labels['show_real_foldernames'] = 'Monstrar nomines real pro dossieres special';
$labels['subject'] = 'Subjecto';
$labels['from'] = 'De';
$labels['sender'] = 'Expeditor';
$labels['to'] = 'A';
$labels['cc'] = 'In copia a';
$labels['bcc'] = 'In copia occultate a';
$labels['replyto'] = 'Responder a';
$labels['followupto'] = 'Continuar discussion in';
$labels['date'] = 'Data';
$labels['size'] = 'Dimension';
$labels['priority'] = 'Prioritate';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Stato de lectura';
$labels['listoptions'] = 'Optiones de lista...';
$labels['listoptionstitle'] = 'Listar optiones';
$labels['mailboxlist'] = 'Dossieres';
$labels['messagesfromto'] = 'Messages $from a $to de $count';
$labels['threadsfromto'] = 'Topicos $from a $to de $count';
$labels['messagenrof'] = 'Message $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Displaciar';
$labels['moveto'] = 'Displaciar a...';
$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Discargar';
$labels['open'] = 'Aperir';
$labels['showattachment'] = 'Monstrar';
$labels['showanyway'] = 'Monstrar lo in omne caso';
$labels['filename'] = 'Nomine de file';
$labels['filesize'] = 'Dimension del file';
$labels['addtoaddressbook'] = 'Adder al adressario';
$labels['sun'] = 'dom';
$labels['mon'] = 'lun';
$labels['tue'] = 'mar';
$labels['wed'] = 'mer';
$labels['thu'] = 'jov';
$labels['fri'] = 'ven';
$labels['sat'] = 'sab';
$labels['sunday'] = 'dominica';
$labels['monday'] = 'lunedi';
$labels['tuesday'] = 'martedi';
$labels['wednesday'] = 'mercuridi';
$labels['thursday'] = 'jovedi';
$labels['friday'] = 'venerdi';
$labels['saturday'] = 'sabbato';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'apr';
$labels['may'] = 'mai';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'aug';
$labels['sep'] = 'sep';
$labels['oct'] = 'oct';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
$labels['longjan'] = 'januario';
$labels['longfeb'] = 'februario';
$labels['longmar'] = 'martio';
$labels['longapr'] = 'april';
$labels['longmay'] = 'mai';
$labels['longjun'] = 'junio';
$labels['longjul'] = 'julio';
$labels['longaug'] = 'augusto';
$labels['longsep'] = 'septembre';
$labels['longoct'] = 'octobre';
$labels['longnov'] = 'novembre';
$labels['longdec'] = 'decembre';
$labels['today'] = 'hodie';
$labels['refresh'] = 'Refrescar';
$labels['checkmail'] = 'Verificar si il ha nove messages';
$labels['compose'] = 'Componer';
$labels['writenewmessage'] = 'Crear un nove message';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder al expeditor';
$labels['replytoallmessage'] = 'Responder al lista o al expeditor e tote le destinatarios';
$labels['replyall'] = 'Responder a totes';
$labels['replylist'] = 'Responder al lista';
$labels['forward'] = 'Reinviar';
$labels['forwardinline'] = 'Reinviar in texto de message';
$labels['forwardattachment'] = 'Reinviar como attachamento';
$labels['forwardmessage'] = 'Reinviar le message';
$labels['bouncemsg'] = 'Reinviar (message resaltate)';
$labels['bounce'] = 'Reinviar';
$labels['deletemessage'] = 'Deler messsage';
$labels['movemessagetotrash'] = 'Jectar message in corbe';
$labels['printmessage'] = 'Imprimer iste message';
$labels['previousmessage'] = 'Monstrar previe message';
$labels['firstmessage'] = 'Monstrar prime message';
$labels['nextmessage'] = 'Monstrar proxime message';
$labels['lastmessage'] = 'Monstrar ultime message';
$labels['backtolist'] = 'Retornar al lista de messages';
$labels['viewsource'] = 'Monstrar fonte';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar messages';
$labels['markread'] = 'Como legite';
$labels['markunread'] = 'Como non legite';
$labels['markflagged'] = 'Como signalate';
$labels['markunflagged'] = 'Como non signalate';
$labels['moreactions'] = 'Altere actiones...';
$labels['markallread'] = 'Marcar tote messages como legite';
$labels['folders-cur'] = 'Solmente le dossier seligite';
$labels['folders-sub'] = 'Le dossier seligite e su subdossieres';
$labels['folders-all'] = 'Tote le dossieres';
$labels['more'] = 'Plus';
$labels['back'] = 'Retornar';
$labels['options'] = 'Optiones';
$labels['first'] = 'Prime';
$labels['last'] = 'Ultime';
$labels['previous'] = 'Previe';
$labels['next'] = 'Proxime';
$labels['select'] = 'Seliger';
$labels['all'] = 'Totes';
$labels['none'] = 'Nulle';
$labels['currpage'] = 'Pagina actual';
$labels['isread'] = 'Legite';
$labels['unread'] = 'Non legite';
$labels['flagged'] = 'Signalate';
$labels['unflagged'] = 'Non signalate';
$labels['unanswered'] = 'Non respondite';
$labels['withattachment'] = 'Con attachamento';
$labels['deleted'] = 'Delite';
$labels['undeleted'] = 'Non delite';
$labels['replied'] = 'Respondite';
$labels['forwarded'] = 'Reinviate';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filtro';
$labels['list'] = 'Lista';
$labels['threads'] = 'Topicos';
$labels['expand-all'] = 'Displicar totes';
$labels['expand-unread'] = 'Displicar non legite';
$labels['collapse-all'] = 'Plicar totes';
$labels['threaded'] = 'Vista arborescente';
$labels['autoexpand_threads'] = 'Displicar topicos de messages';
$labels['do_expand'] = 'tote le topicos';
$labels['expand_only_unread'] = 'solmente con messages non legite';
$labels['fromto'] = 'De/A';
$labels['flag'] = 'Signalar';
$labels['attachment'] = 'Attachamento';
$labels['nonesort'] = 'Nulle';
$labels['sentdate'] = 'Data de invio';
$labels['arrival'] = 'Data de arrivata';
$labels['asc'] = 'ascendente';
$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Columnas de lista';
$labels['listsorting'] = 'Columna clave';
$labels['listorder'] = 'Ordinamento';
$labels['listmode'] = 'Visualisation de lista';
$labels['layout'] = 'Disposition';
$labels['layoutwidescreen'] = 'Schermo large';
$labels['layoutdesktop'] = 'Scriptorio';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Schermo large (3 columnas)';
$labels['layoutdesktopdesc'] = 'Scriptorio (lista large e previsualisation de posta sub illo)';
$labels['layoutlistdesc'] = 'Lista (sin previsualisation de posta)';
$labels['folderactions'] = 'Actiones de dossier...';
$labels['compact'] = 'Compacte';
$labels['empty'] = 'Vacue';
$labels['importmessages'] = 'Importar messages';
$labels['quota'] = 'Spatio occupate';
$labels['unknown'] = 'incognite';
$labels['unlimited'] = 'sin limite';
$labels['quotatype'] = 'Typo de quota';
$labels['quotatotal'] = 'Limite';
$labels['quotaused'] = 'Usate';
$labels['quotastorage'] = 'Spatio de immagazinage';
$labels['quotamessage'] = 'Numero de messages';
$labels['quicksearch'] = 'Recerca rapide';
$labels['searchplaceholder'] = 'Cercar...';
$labels['resetsearch'] = 'Reinitialisar recerca';
$labels['searchmod'] = 'Modificatores de recerca';
$labels['msgtext'] = 'Message complete';
$labels['body'] = 'Texto';
$labels['type'] = 'Typo';
$labels['namex'] = 'Nomine';
$labels['searchscope'] = 'Ambito';
$labels['currentfolder'] = 'Dossier actual';
$labels['subfolders'] = 'Iste e subdossieres';
$labels['allfolders'] = 'Tote le dossieres';
$labels['searchinterval-1W'] = 'plus vetere que un septimana';
$labels['searchinterval-1M'] = 'plus vetere que un mense';
$labels['searchinterval-1Y'] = 'plus vetere que un anno';
$labels['searchinterval1W'] = 'plus juvene que un septimana';
$labels['searchinterval1M'] = 'plus vetere que un mense';
$labels['searchinterval1Y'] = 'plus juvene que un anno';
$labels['openinextwin'] = 'Aperir in nove fenestra';
$labels['emlsave'] = 'Discargar (.eml)';
$labels['changeformattext'] = 'Monstrar in formato de texto simple';
$labels['changeformathtml'] = 'Monstrar in formato HTML';
$labels['editasnew'] = 'Modificar como nove';
$labels['send'] = 'Inviar';
$labels['sendmessage'] = 'Inviar message';
$labels['savemessage'] = 'Salveguardar como version provisori';
$labels['addattachment'] = 'Attachar un file';
$labels['charset'] = 'Codification de characteres';
$labels['editortype'] = 'Typo de editor';
$labels['returnreceipt'] = 'Confirmation de reception';
$labels['dsn'] = 'Notification de stato de livration';
$labels['mailreplyintro'] = 'Le $date, $sender ha scribite:';
$labels['originalmessage'] = 'Message original';
$labels['selectimage'] = 'Seliger imagine';
$labels['addimage'] = 'Adder imagine';
$labels['selectmedia'] = 'Seliger film';
$labels['addmedia'] = 'Adder film';
$labels['encrypt'] = 'Cryptar';
$labels['encryptmessage'] = 'Cryptar message';
$labels['encryptmessagemailvelope'] = 'Cryptar message con Mailvelope';
$labels['importpubkeys'] = 'Importar claves public';
$labels['encryptedsendialog'] = 'A inviar message cryptate';
$labels['keyid'] = 'ID del clave';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expirate';
$labels['keyrevoked'] = 'Revocate';
$labels['bccinstead'] = 'Usar le campo "in copia occultate a:"';
$labels['insert'] = 'Inserer';
$labels['recipient'] = 'Destinatario';
$labels['editidents'] = 'Modificar identitates';
$labels['spellcheck'] = 'Orthographia';
$labels['checkspelling'] = 'Verificar orthographia';
$labels['resumeediting'] = 'Continuar le modification';
$labels['revertto'] = 'Reverter a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = 'Restaurar le message?';
$labels['ignore'] = 'Ignorar';
$labels['responses'] = 'Responsas';
$labels['insertresponse'] = 'Inserer un responsa';
$labels['manageresponses'] = 'Gerer responsas';
$labels['newresponse'] = 'Crear nove responsa';
$labels['addresponse'] = 'Adder responsa';
$labels['editresponse'] = 'Modificar responsa';
$labels['editresponses'] = 'Modificar responsas';
$labels['responsename'] = 'Nomine';
$labels['responsetext'] = 'Texto del responsa';
$labels['attach'] = 'Attachar';
$labels['attachments'] = 'Attachamentos';
$labels['upload'] = 'Incargar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Clauder';
$labels['messageoptions'] = 'Optiones de message...';
$labels['togglecomposeoptions'] = 'Alternar optiones de composition';
$labels['attachmentrename'] = 'Renominar attachamento';
$labels['low'] = 'Basse';
$labels['lowest'] = 'Minimal';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alte';
$labels['highest'] = 'Maximal';
$labels['nosubject'] = '(sin subjecto)';
$labels['showimages'] = 'Monstrar imagines';
$labels['alwaysshow'] = 'Sempre monstrar imagines de $sender';
$labels['isdraft'] = 'Iste es un message provisori.';
$labels['andnmore'] = '$nr alteres...';
$labels['togglemoreheaders'] = 'Monstrar plus capites de message';
$labels['togglefullheaders'] = 'Monstrar/celar capites crude';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto simple';
$labels['savesentmessagein'] = 'Salveguardar message inviate in';
$labels['dontsave'] = 'non salveguardar';
$labels['maxuploadsize'] = 'Le dimension maximal de iste file es $size';
$labels['addcc'] = 'Adder campo "in copia a:"';
$labels['addbcc'] = 'Adder campo "in copia occultate a:"';
$labels['addreplyto'] = 'Adder "Responder a:"';
$labels['addfollowupto'] = 'Adder "Continuar discussion in:"';
$labels['mdnrequest'] = 'Le expeditor de iste message ha demandate de reciper un notification quando vos lege iste message. Desira vos notificar le expeditor?';
$labels['receiptread'] = 'Confirmation de reception (legite)';
$labels['yourmessage'] = 'Iste es un confirmation del reception de vostre message';
$labels['receiptnote'] = 'Nota ben: Iste recepta solmente confirma que le message ha essite visualisate sur le computator del destinatario. Il non ha garantia que le destinatario ha legite o comprendite le contento del message.';
$labels['name'] = 'Nomine de presentation';
$labels['firstname'] = 'Prenomine';
$labels['surname'] = 'Nomine de familia';
$labels['middlename'] = 'Secunde nomine';
$labels['nameprefix'] = 'Prefixo';
$labels['namesuffix'] = 'Suffixo';
$labels['nickname'] = 'Pseudonymo';
$labels['jobtitle'] = 'Titulo professional';
$labels['department'] = 'Departimento';
$labels['gender'] = 'Sexo';
$labels['maidenname'] = 'Nomine de puera';
$labels['email'] = 'E-mail';
$labels['phone'] = 'Telephono';
$labels['address'] = 'Adresse';
$labels['street'] = 'Strata';
$labels['locality'] = 'Citate';
$labels['zipcode'] = 'Codice postal';
$labels['region'] = 'Provincia o stato';
$labels['country'] = 'Pais';
$labels['birthday'] = 'Data de nascentia';
$labels['anniversary'] = 'Anniversario';
$labels['website'] = 'Sito web';
$labels['instantmessenger'] = 'MI';
$labels['notes'] = 'Notas';
$labels['male'] = 'masculin';
$labels['female'] = 'feminin';
$labels['manager'] = 'Gerente';
$labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Sposo/a';
$labels['allfields'] = 'Omne campos';
$labels['search'] = 'Cercar';
$labels['searchresult'] = 'Resultato del recerca';
$labels['advsearch'] = 'Recerca avantiate';
$labels['advanced'] = 'Avantiate';
$labels['other'] = 'Altere';
$labels['printcontact'] = 'Imprimer contacto';
$labels['qrcode'] = 'Codice QR';
$labels['typehome'] = 'Domicilio';
$labels['typework'] = 'Labor';
$labels['typeother'] = 'Altere';
$labels['typemobile'] = 'Mobile';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax a domicilio';
$labels['typeworkfax'] = 'Fax a labor';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Pagina principal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profilo';
$labels['addfield'] = 'Adder campo...';
$labels['addcontact'] = 'Adder contacto';
$labels['editcontact'] = 'Modificar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Proprietates de contacto';
$labels['contactnameandorg'] = 'Nomine e organisation';
$labels['personalinfo'] = 'Information personal';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Photo del contacto';
$labels['edit'] = 'Modificar';
$labels['cancel'] = 'Cancellar';
$labels['save'] = 'Salveguardar';
$labels['delete'] = 'Deler';
$labels['discard'] = 'Abandonar';
$labels['rename'] = 'Renominar';
$labels['addphoto'] = 'Adder';
$labels['replacephoto'] = 'Reimplaciar';
$labels['uploadphoto'] = 'Incargar photo';
$labels['newcontact'] = 'Crear nove contacto';
$labels['deletecontact'] = 'Deler contactos seligite';
$labels['composeto'] = 'Componer message a';
$labels['contactsfromto'] = 'Contacts $from a $to de $count';
$labels['print'] = 'Imprimer';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar totes';
$labels['exportsel'] = 'Exportar seligite';
$labels['exportvcards'] = 'Exportar contactos in formato vCard';
$labels['newgroup'] = 'Crear nove gruppo';
$labels['addgroup'] = 'Adder gruppo';
$labels['grouprename'] = 'Renominar gruppo';
$labels['groupdelete'] = 'Deler gruppo';
$labels['groupremoveselected'] = 'Remover contactos seligite del gruppo';
$labels['uponelevel'] = 'Un nivello in alto';
$labels['previouspage'] = 'Monstrar previe pagina';
$labels['firstpage'] = 'Monstrar prime pagina';
$labels['nextpage'] = 'Monstrar proxime pagina';
$labels['lastpage'] = 'Monstrar ultime pagina';
$labels['group'] = 'Gruppo';
$labels['groups'] = 'Gruppos';
$labels['listgroup'] = 'Listar membros del gruppo';
$labels['personaladrbook'] = 'Adresses personal';
$labels['searchsave'] = 'Salveguardar recerca';
$labels['searchdelete'] = 'Deler recerca';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar ab file';
$labels['importtarget'] = 'Adder contactos a';
$labels['importreplace'] = 'Reimplaciar tote le adressario';
$labels['importgroups'] = 'Importar assignationes de gruppo';
$labels['importgroupsall'] = 'Totes (crear gruppos si necessari)';
$labels['importgroupsexisting'] = 'Solmente pro gruppos existente';
$labels['done'] = 'Facite';
$labels['settingsfor'] = 'Configurationes pro';
$labels['about'] = 'A proposito';
$labels['preferences'] = 'Preferentias';
$labels['userpreferences'] = 'Preferentias de usator';
$labels['editpreferences'] = 'Modificar preferentias de usator';
$labels['identities'] = 'Identitates';
$labels['manageidentities'] = 'Gerer identitates';
$labels['newidentity'] = 'Crear nove identitate';
$labels['addidentity'] = 'Adder identitate';
$labels['editidentity'] = 'Modifiar identitate';
$labels['identityencryption'] = 'Cryptographia';
$labels['preferhtml'] = 'Monstrar HTML';
$labels['defaultcharset'] = 'Codification de characteres predefinite';
$labels['htmlmessage'] = 'Message HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Signatura digital';
$labels['dateformat'] = 'Formato de data';
$labels['timeformat'] = 'Formato de hora';
$labels['prettydate'] = 'Imbellir datas';
$labels['setdefault'] = 'Fixar como predefinite';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Lingua';
$labels['timezone'] = 'Fuso horari';
$labels['pagesize'] = 'Lineas per pagina';
$labels['signature'] = 'Signatura';
$labels['dstactive'] = 'Hora estive';
$labels['showinextwin'] = 'Aperir message in nove fenestra';
$labels['composeextwin'] = 'Componer in un nove fenestra';
$labels['htmleditor'] = 'Componer messages in HTML';
$labels['htmlonreply'] = 'quando responder a un message HTML';
$labels['htmlonreplyandforward'] = 'quando reinviar o responder a un message HTML';
$labels['htmlsignature'] = 'Signatura HTML';
$labels['showemail'] = 'Monstrar adresse de e-mail con nomine de presentation';
$labels['previewpane'] = 'Monstrar quadro de previsualisation';
$labels['skin'] = 'Apparentia de interfacie';
$labels['logoutclear'] = 'Vacuar le corbe a papiro al clausura de session';
$labels['logoutcompact'] = 'Compactar le cassa de entrata al clausura de session';
$labels['uisettings'] = 'Interfacie de usator';
$labels['serversettings'] = 'Configurationes de servitor';
$labels['mailboxview'] = 'Vista de cassa postal';
$labels['mdnrequests'] = 'Quando on requesta un confirmation de reception';
$labels['askuser'] = 'demanda me lo';
$labels['autosend'] = 'invia un recepta';
$labels['autosendknown'] = 'invia un recepta a mi contactos, alteremente demanda me lo';
$labels['autosendknownignore'] = 'invia un recepta a mi contactos, alteremente ignora lo';
$labels['ignorerequest'] = 'ignora le requesta';
$labels['readwhendeleted'] = 'Marcar le message como legite al deletion';
$labels['flagfordeletion'] = 'Marcar le message pro deletion in vice de deler lo';
$labels['skipdeleted'] = 'Non monstrar messages delite';
$labels['deletealways'] = 'Si le displaciamento de messages al corbe a papiro non succede, deler los';
$labels['deletejunk'] = 'Directemente deler le messages indesirate';
$labels['showremoteimages'] = 'Visualisar imagines incorporate a distantia';
$labels['fromknownsenders'] = 'de expeditores cognite';
$labels['always'] = 'sempre';
$labels['alwaysbutplain'] = 'sempre, excepte quando responder a texto simple';
$labels['showinlineimages'] = 'Monstrar imagines attachate sub le message';
$labels['autosavedraft'] = 'Automaticamente salveguardar version provisori';
$labels['everynminutes'] = 'cata $n minuta(s)';
$labels['refreshinterval'] = 'Refrescar (verificar si il ha nove messages, etc.)';
$labels['never'] = 'nunquam';
$labels['immediately'] = 'immediatemente';
$labels['messagesdisplaying'] = 'Presentation de messages';
$labels['messagescomposition'] = 'Composition de messages';
$labels['mimeparamfolding'] = 'Nomines de attachamento';
$labels['2231folding'] = 'RFC 2231 complete (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 complete (altere)';
$labels['force7bit'] = 'Usar le codification MIME pro characteres a 8 bits';
$labels['savelocalstorage'] = "Salveguardar in le immagazinage local del navigator (temporarimente)";
$labels['advancedoptions'] = 'Optiones avantiate';
$labels['toggleadvancedoptions'] = 'Monstrar/celar optiones avantiate';
$labels['focusonnewmessage'] = 'Focalisar le fenestra del navigator sur le nove message';
$labels['checkallfolders'] = 'Verificar in tote le dossieres si il ha nove messages';
$labels['defaultfont'] = 'Typo de litteras predefinite pro messages HTML';
$labels['mainoptions'] = 'Optiones principal';
$labels['browseroptions'] = 'Optiones de navigator';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Mantenimento';
$labels['newmessage'] = 'Nove message';
$labels['signatureoptions'] = 'Optiones de signatura';
$labels['whenreplying'] = 'Quando responder';
$labels['replyempty'] = 'non citar le message original';
$labels['replytopposting'] = 'comenciar le nove message super le citation';
$labels['replytoppostingnoindent'] = 'comenciar un nove message ante le citation (sin indentation)';
$labels['replybottomposting'] = 'comenciar le nove message sub le citation';
$labels['replyremovesignature'] = 'Quando responder, remover le signatura del citation';
$labels['autoaddsignature'] = 'Automaticamente inserta signatura';
$labels['newmessageonly'] = 'nove message solmente';
$labels['replyandforwardonly'] = 'responsas e reinvios solmente';
$labels['insertsignature'] = 'Insertar signatura';
$labels['sigbelow'] = 'Mitter signatura post le message citate';
$labels['sigseparator'] = 'Fortiar le separator standard in signatura';
$labels['automarkread'] = 'Marcar messages como legite';
$labels['afternseconds'] = 'post $n secundas';
$labels['reqmdn'] = 'Sempre requestar un confirmation de reception';
$labels['reqdsn'] = 'Sempre requestar un notification de stato de livration';
$labels['replysamefolder'] = 'Placiar responsas in le dossier del message respondite';
$labels['defaultabook'] = 'Adressario predefinite';
$labels['autocompletesingle'] = 'Saltar adresses de e-mail altenrative in autocompletion';
$labels['listnamedisplay'] = 'Listar contactos como';
$labels['spellcheckbeforesend'] = 'Verificar orthographia ante inviar un message';
$labels['spellcheckoptions'] = 'Optiones de verification orthographic';
$labels['spellcheckignoresyms'] = 'Ignorar parolas con symbolos';
$labels['spellcheckignorenums'] = 'Ignorar parolas con numeros';
$labels['spellcheckignorecaps'] = 'Ignorar parolas toto in majusculas';
$labels['addtodict'] = 'Adder al dictionario';
$labels['mailtoprotohandler'] = 'Registrar un gestor de protocollo pro ligamines mailto:';
$labels['standardwindows'] = 'Gerer pop-ups como fenestras normal';
$labels['forwardmode'] = 'Reinvio de messages';
$labels['inline'] = 'in texto';
$labels['asattachment'] = 'como attachamento';
$labels['replyallmode'] = 'Action predefinite del button [Responder a totes]';
$labels['replyalldefault'] = 'responder a totes';
$labels['replyalllist'] = 'responder solmente al lista de diffusion (si trovate)';
$labels['allmessages'] = 'tote le messages';
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossieres';
$labels['foldername'] = 'Nomine de dossier';
$labels['subscribed'] = 'Subscribite';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear un nove dossier';
$labels['managefolders'] = 'Gerer le dossieres';
$labels['specialfolders'] = 'Dossieres special';
$labels['properties'] = 'Proprietates';
$labels['folderproperties'] = 'Proprietates de dossier';
$labels['parentfolder'] = 'Dossier genitor';
$labels['location'] = 'Location';
$labels['info'] = 'Information';
$labels['getfoldersize'] = 'Clicca pro obtener le dimension del dossier';
$labels['changesubscription'] = 'Clicca pro cambiar le subscription';
$labels['foldertype'] = 'Typo de dossier';
$labels['personalfolder'] = 'Dossier private';
$labels['otherfolder'] = 'Dossier de altere usator';
$labels['sharedfolder'] = 'Dossier public';
$labels['findfolders'] = 'Cercar dossieres';
$labels['findcontacts'] = 'Cercar contactos';
$labels['findmail'] = 'Cercar messages de posta';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Altere usatores';
$labels['namespace.shared'] = 'Commun';
$labels['dualuselabel'] = 'Pote continer solmente';
$labels['dualusemail'] = 'messages';
$labels['dualusefolder'] = 'dossieres';
$labels['encryptioncreatekey'] = 'Crear un nove par de claves';
$labels['encryption'] = 'Cryptographia';
$labels['sortby'] = 'Ordinar per';
$labels['sortasc'] = 'Mitter in ordine ascendente';
$labels['sortdesc'] = 'Mitter in ordine descendente';
$labels['undo'] = 'Disfacer';
$labels['installedplugins'] = 'Plug-ins installate';
$labels['plugin'] = 'Plug-in';
$labels['version'] = 'Version';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licentia';
$labels['support'] = 'Obtener supporto';
$labels['savedsearches'] = 'Recercas salveguardate';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Anglese';
$labels['westerneuropean'] = 'Europa del west';
$labels['easterneuropean'] = 'Europa del est';
$labels['southeasterneuropean'] = 'Europa del sud-est';
$labels['baltic'] = 'Baltic';
$labels['cyrillic'] = 'Cyrillic';
$labels['arabic'] = 'Arabe';
$labels['greek'] = 'Grec';
$labels['hebrew'] = 'Hebraic';
$labels['turkish'] = 'Turc';
$labels['nordic'] = 'Nordic';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Celtic';
$labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japonese';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinese';
$labels['arialabeltopnav'] = 'Controlo de fenestras';
$labels['arialabeltasknav'] = 'Cargas de application';
$labels['arialabeltoolbar'] = 'Instrumentario de application';
$labels['arialabelactivetask'] = 'Carga active';
$labels['arialabelmessagessearchfilter'] = 'Filtro de lista de e-mail';
$labels['arialabelmailsearchform'] = 'Formulario de recerca de message de e-mail';
$labels['arialabelcontactsearchform'] = 'Formulario de recerca de contactos';
$labels['arialabelmailquicksearchbox'] = 'Entrata de recerca de e-mail';
$labels['arialabelquicksearchbox'] = 'Entrata de recerca';
$labels['arialabelfoldersearchfilter'] = 'Filtro de lista de dossieres';
$labels['arialabelfoldersearchform'] = 'Formulario de recerca de dossieres';
$labels['arialabelfolderlist'] = 'Selection de dossier de e-mail';
$labels['arialabelmessagelist'] = 'Lista de messages de e-mail';
$labels['arialabelmailpreviewframe'] = 'Previsualisation de message';
$labels['arialabelmailboxmenu'] = 'Menu de actiones de dossier';
$labels['arialabellistselectmenu'] = 'Menu de selection de lista';
$labels['arialabelthreadselectmenu'] = 'Menu de listas de topicos';
$labels['arialabelmessagelistoptions'] = 'Optiones de visualisation e ordinamento de lista de messages';
$labels['arialabelmailimportdialog'] = 'Dialogo de importation de messages';
$labels['arialabelmessagenav'] = 'Navigation inter messages';
$labels['arialabelmessagebody'] = 'Texto de message';
$labels['arialabelmessageactions'] = 'Actiones de message';
$labels['arialabelcontactquicksearch'] = 'Formulario de recerca de contactos';
$labels['arialabelcontactsearchbox'] = 'Entrata de recerca de contactos';
$labels['arialabelmessageheaders'] = 'Capites de message';
$labels['arialabelforwardingoptions'] = 'Optiones de reinvio';
$labels['arialabelreplyalloptions'] = 'Optiones pro responder a totes';
$labels['arialabelmoremessageactions'] = 'Altere actiones de message';
$labels['arialabelmarkmessagesas'] = 'Marcar le messages seligite como...';
$labels['arialabelcomposeoptions'] = 'Optiones de composition';
$labels['arialabelresponsesmenu'] = 'Menu de responsas prefabricate';
$labels['arialabelattachmentuploadform'] = 'Formulario de incargamento de attachamentos';
$labels['arialabelattachmentmenu'] = 'Optiones de attachamento';
$labels['arialabelattachmentpreview'] = 'Previsualisation de attachamento';
$labels['ariasummarycomposecontacts'] = 'Lista de contactos e gruppos a seliger como destinatarios';
$labels['arialabelcontactexportoptions'] = 'Optiones de exportation de contactos';
$labels['arialabelabookgroupoptions'] = 'Optiones de adressario/gruppo';
$labels['arialabelpreferencesform'] = 'Formulario de preferentias';
$labels['arialabelidentityeditfrom'] = 'Formulario de modification de identitate';
$labels['arialabelresponseeditfrom'] = 'Formulario de modification de responsa';
$labels['arialabelsearchterms'] = 'Terminos de recerca';
$labels['arialabeldropactionmenu'] = 'Menu de actiones traher-e-deponer';
$labels['helplistnavigation'] = 'Lista de claves de navigation';
$labels['helplistkeyboardnavigation'] = "Flechas in alto/basso: Focalisar un altere linea.
Barra de spatio: Seliger le linea focalisate.
Shift + alto/basso: Seliger un linea additional supra/infra.
Ctrl + barra de spatio: Adder/subtraher le linea focalisate al selection.";
$labels['helplistkeyboardnavmessages'] = "Flechas a dextra/sinistra: Displicar/plicar un topico de messages (solmente in vista arborescente).
Enter: Aperir le message seligite/focalisate.
Delete: Jectar le messages seligite in le corbe a papiro.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Aperir le contacto seligite/focalisate.";
localization/ia/messages.inc000064400000037115151727150600012142 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Un error ha occurrite.';
$messages['loginfailed']  = 'Apertura de session fallite.';
$messages['cookiesdisabled'] = 'Vostre navigator non accepta cookies.';
$messages['sessionerror'] = 'Le session es invalide o ha expirate.';
$messages['storageerror'] = 'Le connexion al servitor de immagazinage ha fallite.';
$messages['servererror'] = 'Error de servitor.';
$messages['servererrormsg'] = 'Error de sevitor: $msg';
$messages['accountlocked'] = 'Troppo de tentativas fallite de authentication. Reproba plus tarde.';
$messages['connerror'] = 'Error de connexion (impossibile attinger le servitor).';
$messages['dberror'] = 'Error de base de datos.';
$messages['windowopenerror'] = 'Le fenestra pop-up ha essite blocate.';
$messages['requesttimedout'] = 'Requesta expirate';
$messages['errorreadonly'] = 'Impossibile exequer le operation. Le dossier es in modo lectura sol.';
$messages['errornoperm'] = 'Impossibile exequer le operation. Permission refusate.';
$messages['erroroverquota'] = 'Impossibile exequer le operation. Nulle spatio libere sur disco.';
$messages['erroroverquotadelete'] = 'Nulle spatio libere sur disco. Preme SHIFT+DEL pro deler un message.';
$messages['invalidrequest'] = 'Requesta non valide. Le datos non ha essite salveguardate.';
$messages['invalidhost'] = 'Nomine de servitor non valide.';
$messages['nomessagesfound'] = 'Nulle message trovate in iste cassa postal.';
$messages['mailboxempty'] = 'Le cassa postal es vacue';
$messages['nomessages'] = 'Nulle message';
$messages['refreshing'] = 'A refrescar...';
$messages['loading'] = 'A cargar...';
$messages['uploading'] = 'A incargar un file...';
$messages['attaching'] = 'Attacha file...';
$messages['uploadingmany'] = 'A incargar files...';
$messages['loadingdata'] = 'A cargar datos...';
$messages['checkingmail'] = 'A verificar si il ha nove messages...';
$messages['sendingmessage'] = 'A inviar le message...';
$messages['messagesent'] = 'Message inviate con successo.';
$messages['savingmessage'] = 'A salveguardar le message...';
$messages['messagesaved'] = 'Message salveguardate in "Versiones provisori".';
$messages['successfullysaved'] = 'Salveguardate con successo.';
$messages['savingresponse'] = 'A salveguardar le texto del responsa...';
$messages['deleteresponseconfirm'] = 'Es vos secur de voler deler iste texto de responsa?';
$messages['addedsuccessfully'] = 'Le contacto ha essite addite al adressario.';
$messages['contactexists'] = 'Un contacto con le mesme adresse de e-mail jam existe.';
$messages['contactnameexists'] = 'Un contacto con le mesme nomine jam existe.';
$messages['blockedimages'] = 'Pro proteger vostre vita private, le imagines a distantia es blocate in iste message.';
$messages['encryptedmessage'] = 'Iste message ha essite cryptate e non pote esser monstrate.';
$messages['externalmessagedecryption'] = 'Isto es un message cryptate e pote esser decryptate con tu extension de navigator.';
$messages['nopubkeyfor'] = 'Nulle clave public valide trovate pro $email';
$messages['nopubkeyforsender'] = 'Nulle clave public valide ha essite trovate pro tu identitate de expeditor. Vole tu cryptar le message pro le destinatarios solmente?';
$messages['encryptnoattachments'] = 'Le attachamentos jam incargate non pote esser cryptate. Per favor re-adde los in le editor cryptographic.';
$messages['searchpubkeyservers'] = 'Vole tu cercar le claves mancante in le servitores de claves public?';
$messages['encryptpubkeysfound'] = 'Le sequente claves public ha essite trovate:';
$messages['nocontactsfound'] = 'Nulle contacto trovate.';
$messages['contactnotfound'] = 'Le contacto requestate non ha essite trovate.';
$messages['sendingfailed'] = 'Le invio del message ha fallite.';
$messages['senttooquickly'] = 'Per favor, attende $sec secunda(s) ante inviar iste message.';
$messages['errorsavingsent'] = 'Un error ha occurrite durante le salveguarda del message inviate.';
$messages['errorsaving'] = 'Un error ha occurrite durante le salveguarda.';
$messages['errormoving'] = 'Impossibile displaciar le message(s).';
$messages['errorcopying'] = 'Impossibile copiar le message(s).';
$messages['errordeleting'] = 'Impossibile deler le message(s).';
$messages['errormarking'] = 'Impossibile marcar le message(s).';
$messages['deletecontactconfirm']  = 'Es vos secur de voler deler le contacto(s) seligite?';
$messages['deletegroupconfirm']  = 'Es vos secur de voler deler le gruppo seligite?';
$messages['deletemessagesconfirm'] = 'Es vos secur de voler deler le message(s) seligite?';
$messages['deletefolderconfirm']  = 'Es vos secur de voler deler le dossier seligite?';
$messages['purgefolderconfirm']  = 'Es vos secur de voler deler tote le messages in iste dossier?';
$messages['contactdeleting'] = 'A deler contacto(s)...';
$messages['groupdeleting'] = 'A deler le gruppo...';
$messages['folderdeleting'] = 'A deler le dossier...';
$messages['foldermoving'] = 'A displaciar le dossier...';
$messages['foldersubscribing'] = 'A subscriber se al dossier...';
$messages['folderunsubscribing'] = 'A cancellar le subscription al dossier...';
$messages['formincomplete'] = 'Le formulario non ha essite totalmente completate.';
$messages['noemailwarning'] = 'Per favor, specifica un adresse de e-mail valide.';
$messages['nonamewarning']  = 'Per favor, specifica un nomine.';
$messages['nopagesizewarning'] = 'Per favor, specifica un dimension de pagina.';
$messages['nosenderwarning'] = 'Per favor, specifica le adresse de e-mail del expeditor.';
$messages['norecipientwarning'] = 'Per favor, specifica al minus un destinatario.';
$messages['disclosedrecipwarning'] = 'Tote le destinatarios videra le adresses de e-mail le unes del alteres. Pro impedir isto e proteger lor confidentialitate, usa le campo Bcc.';
$messages['disclosedreciptitle'] = 'Il ha troppo de destinatarios public';
$messages['nosubjectwarning']  = 'Le campo "Subjecto" es vacue. Vole vos specificar un subjecto ora?';
$messages['nosubjecttitle']  = 'Sin subjecto';
$messages['nobodywarning'] = 'Inviar iste message sin texto?';
$messages['notsentwarning'] = 'Le message non ha essite inviate e ha modificationes non salveguardate. Abandonar le modificationes?';
$messages['restoresavedcomposedata'] = 'Un message anteriormente componite ma non inviate ha essite trovate.\n\nSubjecto: $subject\nSalveguardate: $date\n\nVole vos restaurar iste message?';
$messages['nosearchname'] = 'Per favor, specifica le nomine o adresse de e-mail de un contacto.';
$messages['notuploadedwarning'] = 'Non tote le attachamentos ha ancora essite incargate. Per favor, attende o cancella le incargamento.';
$messages['searchsuccessful'] = '$nr messages trovate.';
$messages['contactsearchsuccessful'] = '$nr contactos trovate.';
$messages['searchnomatch'] = 'Le recerca non ha producite resultatos.';
$messages['searching'] = 'A cercar...';
$messages['checking'] = 'A verificar...';
$messages['stillsearching'] = 'A continuar le recerca...';
$messages['nospellerrors'] = 'Nulle error de orthographia trovate.';
$messages['folderdeleted'] = 'Le dossier ha essite delite.';
$messages['foldersubscribed'] = 'Le subscription al dossier ha succedite.';
$messages['folderunsubscribed'] = 'Le subscription al dossier ha essite cancellate.';
$messages['deletedsuccessfully'] = 'Delete con successo.';
$messages['converting'] = 'A remover le formatation...';
$messages['messageopenerror'] = 'Impossibile cargar le message ab le servitor.';
$messages['filelinkerror'] = 'Le attachamento del file ha fallite.';
$messages['fileuploaderror'] = 'Incargamento de file falleva.';
$messages['filesizeerror'] = 'Le file incargate excede le dimension maxime de $size.';
$messages['filecounterror'] = 'Vos pote incargar al maximo $count files simul.';
$messages['msgsizeerror'] = 'Le attachamento de un file ha fallite. Le dimension maxime de un message ($size) ha essite excedite.';
$messages['copysuccess'] = '$nr contactos ha essite copiate.';
$messages['movesuccess'] = '$nr contactos ha essite displaciate.';
$messages['copyerror'] = 'Impossibile copiar le contactos.';
$messages['moveerror'] = 'Impossibile displaciar le contactos.';
$messages['sourceisreadonly'] = 'Iste fonte de adresses es pro lectura solmente.';
$messages['errorsavingcontact'] = 'Impossibile salveguardar le adresse del contacto.';
$messages['movingmessage'] = 'A displaciar le message(s)...';
$messages['copyingmessage'] = 'A copiar le message(s)...';
$messages['copyingcontact'] = 'A copiar le contacto(s)...';
$messages['movingcontact'] = 'A mover le contacto(s)...';
$messages['deletingmessage'] = 'A deler le message(s)...';
$messages['markingmessage'] = 'A marcar le message(s)...';
$messages['addingmember'] = 'A adder contacto(s) al gruppo...';
$messages['removingmember'] = 'A remover contacto(s) del gruppo...';
$messages['receiptsent'] = 'Un confirmation de lectura ha essite inviate.';
$messages['errorsendingreceipt'] = 'Impossibile inviar le confirmation.';
$messages['deleteidentityconfirm'] = 'Es vos secur de voler deler iste identitate?';
$messages['nodeletelastidentity'] = 'Vos non pote deler iste identitate; illo es vostre ultime.';
$messages['forbiddencharacter'] = 'Le nomine del dossier contine un character interdicte.';
$messages['selectimportfile'] = 'Per favor tu selige le file a incargar.';
$messages['addresswriterror'] = 'Le adressario seligite non permitte le scriptura.';
$messages['contactaddedtogroup'] = 'Le contactos ha essite addite a iste gruppo.';
$messages['contactremovedfromgroup'] = 'Le contactos ha essite removite de iste gruppo.';
$messages['nogroupassignmentschanged'] = 'Nulle assignation de gruppo ha essite cambiate.';
$messages['importwait'] = 'A importar, un momento...';
$messages['importformaterror'] = 'Importation fallite. Le file incargate non es un file de datos de importation valide.';
$messages['importconfirm'] = '<b>$inserted contactos ha essite importate</b>';
$messages['importconfirmskipped'] = '<b>$skipped entratas existente ha essite saltate</b>';
$messages['importmessagesuccess'] = '$nr messages ha essite importate';
$messages['importmessageerror'] = 'Importation fallite. Le file incargate non es un file de cassa postal o message valide.';
$messages['opnotpermitted'] = 'Operation non permittite.';
$messages['nofromaddress'] = 'Le adresse de e-mail manca in le identitate seligite.';
$messages['editorwarning'] = 'Si vos cambia de typo de editor, le formato del texto pote esser perdite. Desira vos continuar?';
$messages['httpreceivedencrypterror'] = 'Un error fatal de configuration ha occurrite. Contacta immediatemente vostre administrator.<b>Vostre message non pote esser inviate.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): Le connexion al servitor ha fallite.';
$messages['smtpautherror'] = 'Error SMTP ($code): Authentication fallite.';
$messages['smtpfromerror'] = 'Error SMTP ($code): Impossibile fixar le expeditor "$from" ($msg).';
$messages['smtptoerror'] = 'Error SMTP ($code): Impossibile adder le destinatario "$to" ($msg).';
$messages['smtprecipientserror'] = 'Error SMTP: Impossibile interpretar le lista de destinatarios.';
$messages['smtpsizeerror'] = 'Error de SMTP: Le grandor del message excede le limite del servitor ($limit)';
$messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'Adresse de e-mail invalide: $email';
$messages['toomanyrecipients'] = 'Troppo de destinatarios. Reduce le numero de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'Le numero de membros del gruppo excede le maximo de $max.';
$messages['internalerror'] = 'Un error interne ha occurrite. Per favor, essaya lo de novo.';
$messages['contactdelerror'] = 'Impossibile deler le contacto(s).';
$messages['contactdeleted'] = 'Le contacto(s) ha essite delite.';
$messages['contactrestoreerror'] = 'Impossibile restaurar le contacto(s) delite.';
$messages['contactrestored'] = 'Le contacto(s) ha essite restaurate.';
$messages['groupdeleted'] = 'Le gruppo ha essite delite.';
$messages['grouprenamed'] = 'Le gruppo ha essite renominate.';
$messages['groupcreated'] = 'Le gruppo ha essite create.';
$messages['savedsearchdeleted'] = 'Le recerca salveguardate ha essite delite.';
$messages['savedsearchdeleteerror'] = 'Impossibile deler le recerca salveguardate.';
$messages['savedsearchcreated'] = 'Le recerca salveguardate ha essite create.';
$messages['savedsearchcreateerror'] = 'Impossibile crear le recerca salveguardate.';
$messages['messagedeleted'] = 'Le message(s) ha essite delite.';
$messages['messagemoved'] = 'Le message(s) ha essite displaciate.';
$messages['messagemovedtotrash'] = 'Le message(s) ha essite displaciate al corbe a papiro con successo.';
$messages['messagecopied'] = 'Le message(s) ha essite copiate.';
$messages['messagemarked'] = 'Le message(s) ha essite marcate.';
$messages['autocompletechars'] = 'Specifica al minus $min characteres pro autocompletion.';
$messages['autocompletemore'] = 'Plure entratas corresponde. Per favor, specifica plus characteres.';
$messages['namecannotbeempty'] = 'Le nomine non pote esser vacue.';
$messages['nametoolong'] = 'Le nomine es troppo longe.';
$messages['namedotforbidden'] = 'Le nomine del dossier non pote comenciar per un puncto.';
$messages['folderupdated'] = 'Le dossier ha essite actualisate.';
$messages['foldercreated'] = 'Le dossier ha essite create.';
$messages['invalidimageformat'] = 'Non es un formato de imagine valide.';
$messages['mispellingsfound'] = 'Errores de orthographia ha essite detegite in le message.';
$messages['parentnotwritable'] = 'Impossibile crear/displaciar le dossier in le dossier genitor seligite. Nulle permission de accesso.';
$messages['messagetoobig'] = 'Le parte del message es troppo grande pro tractar lo.';
$messages['noscriptwarning'] = 'Attention: Iste servicio webmail require JavaScript. Pro usar lo, per favor activa JavaScript in le configuration de vostre navigator.';
$messages['messageissent'] = 'Le message ha jam essite inviate ma non ancora salveguardate. Vole tu salveguardar lo ora?';
$messages['errnotfound'] = 'File non trovate';
$messages['errnotfoundexplain'] = 'Le ressource requestate non ha essite trovate.';
$messages['errfailedrequest'] = 'Requesta fallite';
$messages['errauthorizationfailed'] = 'Autorisation fallite';
$messages['errunauthorizedexplain'] = 'Non poteva verificar que tu es autorisate a acceder a iste servicio.';
$messages['errrequestcheckfailed'] = 'Verification del requesta fallite';
$messages['errcsrfprotectionexplain'] = "Pro vostre protection, le accesso a iste ressource ha essite securisate contra le falsification de requestas inter sitos (CSRF).\nSi vos vide isto, vos probabilemente non ha claudite session ante de quitar le application web.\n\nOra, un interaction human es requirite pro continuar.";
$messages['errcontactserveradmin'] = 'Per favor contacta le administrator de tu servitor.';
$messages['clicktoresumesession'] = 'Clicca hic pro continuar tu session anterior';
$messages['errcomposesession'] = 'Error del session de composition';
$messages['errcomposesessionexplain'] = 'Session de composition requestate non ha essite trovate.';
$messages['clicktocompose'] = 'Clicca hic pro componer un nove message';
localization/es_419/timezones.inc000064400000001455151727150600012761 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
localization/es_419/labels.inc000064400000074617151727150600012220 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bienvenido a $product';
$labels['username'] = 'Usuario';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Servidor';
$labels['login'] = 'Ingresar';
$labels['oauthlogin'] = 'Ingresar con $provider';
$labels['menu'] = 'Menú';
$labels['logout'] = 'Cerrar sesión';
$labels['mail'] = 'Correo';
$labels['settings'] = 'Configuración';
$labels['addressbook'] = 'Libreta de direcciones';
$labels['darkmode'] = 'Modo oscuro';
$labels['lightmode'] = 'Modo claro';
$labels['inbox'] = 'Bandeja de entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'No deseado';
$labels['show_real_foldernames'] = 'Mostrar el nombre real para carpetas especiales';
$labels['subject'] = 'Asunto';
$labels['from'] = 'De';
$labels['sender'] = 'Remitente';
$labels['to'] = 'Para';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Responder a';
$labels['followupto'] = 'Seguir a';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Leído';
$labels['listoptions'] = 'Listar opciones...';
$labels['listoptionstitle'] = 'Opciones de lista';
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
$labels['threadsfromto'] = 'Hilo $from a $to de $count';
$labels['messagenrof'] = 'Mensaje $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a...';
$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrar de todos modos';
$labels['filename'] = 'Nombre del archivo';
$labels['filesize'] = 'Tamaño del archivo';
$labels['addtoaddressbook'] = 'Agregar a la libreta de direcciones';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mié';
$labels['thu'] = 'Jue';
$labels['fri'] = 'Vie';
$labels['sat'] = 'Sáb';
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Lunes';
$labels['tuesday'] = 'Martes';
$labels['wednesday'] = 'Miércoles';
$labels['thursday'] = 'Jueves';
$labels['friday'] = 'Viernes';
$labels['saturday'] = 'Sábado';
$labels['jan'] = 'Ene';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Abr';
$labels['may'] = 'May';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Ago';
$labels['sep'] = 'Set';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dic';
$labels['longjan'] = 'Enero';
$labels['longfeb'] = 'Febrero';
$labels['longmar'] = 'Marzo';
$labels['longapr'] = 'Abril';
$labels['longmay'] = 'Mayo';
$labels['longjun'] = 'Junio';
$labels['longjul'] = 'Julio';
$labels['longaug'] = 'Agosto';
$labels['longsep'] = 'Setiembre';
$labels['longoct'] = 'Octubre';
$labels['longnov'] = 'Noviembre';
$labels['longdec'] = 'Diciembre';
$labels['today'] = 'Hoy';
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Revisar si hay nuevos mensajes';
$labels['compose'] = 'Escribir';
$labels['writenewmessage'] = 'Crear mensaje nuevo';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder al remitente';
$labels['replytoallmessage'] = 'Responder a la lista o al remitente y a todos los destinatarios';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder a la lista';
$labels['forward'] = 'Reenviar';
$labels['forwardinline'] = 'Reenviar en el mensaje';
$labels['forwardattachment'] = 'Reenviar como archivo adjunto';
$labels['forwardmessage'] = 'Reenviar el mensaje';
$labels['bouncemsg'] = 'Reenviar (rebotar)';
$labels['bounce'] = 'Reenviar';
$labels['deletemessage'] = 'Eliminar el mensaje';
$labels['movemessagetotrash'] = 'Mover a la papelera';
$labels['printmessage'] = 'Imprimir este mensaje';
$labels['previousmessage'] = 'Mostrar mensaje anterior';
$labels['firstmessage'] = 'Mostrar primer mensaje';
$labels['nextmessage'] = 'Mostrar el siguiente mensaje ';
$labels['lastmessage'] = 'Mostrar el último mensaje';
$labels['backtolist'] = 'Volver a la lista de mensajes';
$labels['viewsource'] = 'Mostrar fuente';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Macar mensajes';
$labels['markread'] = 'Como leido';
$labels['markunread'] = 'Como no leido';
$labels['markflagged'] = 'Como marcado';
$labels['markunflagged'] = 'Como no marcado';
$labels['moreactions'] = 'Más acciones...';
$labels['markallread'] = 'Marcar todo como leído';
$labels['folders-cur'] = 'Solo directorio seleccionada';
$labels['folders-sub'] = 'Directorio seleccionado y sus subdirectorios';
$labels['folders-all'] = 'Todas las carpetas';
$labels['more'] = 'Más';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opciones';
$labels['composeoptions'] = 'Opciones de redacción';
$labels['optionsandattachments'] = 'Opciones y archivos adjuntos';
$labels['actions'] = 'Acciones';
$labels['first'] = 'Primero';
$labels['last'] = 'Último';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Siguiente';
$labels['select'] = 'Seleccionar';
$labels['selection'] = 'Selección';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
$labels['currpage'] = 'Página actual';
$labels['isread'] = 'Leido';
$labels['unread'] = 'No leido';
$labels['flagged'] = 'Marcado';
$labels['unflagged'] = 'No marcado';
$labels['unanswered'] = 'No respondido';
$labels['withattachment'] = 'Con archivo adjunto';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
$labels['replied'] = 'Respondido';
$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Enumerar';
$labels['threads'] = 'Hilos';
$labels['expand-all'] = 'Expandir todos';
$labels['expand-unread'] = 'Expandir no leídos';
$labels['collapse-all'] = 'Colapsar todos';
$labels['threaded'] = 'En hilo';
$labels['showunread'] = 'Mostrar mensajes no leídos';
$labels['autoexpand_threads'] = 'Expandir hilos';
$labels['do_expand'] = 'todos los hilos';
$labels['expand_only_unread'] = 'solo con mensajes no leidos';
$labels['fromto'] = 'De/Para';
$labels['flag'] = 'Marcar';
$labels['attachment'] = 'Archivo adjunto';
$labels['nonesort'] = 'Ninguno';
$labels['sentdate'] = 'Fecha de envío';
$labels['arrival'] = 'Fecha de recepción';
$labels['asc'] = 'ascendente';
$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Enumerar columnas';
$labels['listsorting'] = 'Ordenar columnas';
$labels['listorder'] = 'Ordenado por';
$labels['listmode'] = 'Modo de visualización de lista';
$labels['lmode'] = 'Modo de lista';
$labels['layout'] = 'Disposición';
$labels['layoutwidescreen'] = 'Ancho completo';
$labels['layoutdesktop'] = 'Escritorio';
$labels['layoutlist'] = 'Enumerar';
$labels['layoutwidescreendesc'] = 'Ancho completo (vista de 3 columnas)';
$labels['layoutdesktopdesc'] = 'Escritorio (lista ancha y vista previa de correo abajo)';
$labels['layoutlistdesc'] = 'Lista (sin vista previa del correo)';
$labels['folderactions'] = 'Acciones de carpeta...';
$labels['compact'] = 'Comprimir';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensajes';
$labels['mailimportdesc'] = 'Usted puede subir correos usando archivos en formato <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> o <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> .';
$labels['mailimportzip'] = 'Multiples archivos pueden ser comprimidos en archivos zip.';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'ilimitado';
$labels['quotatype'] = 'Tipo de cuota';
$labels['quotatotal'] = 'Límite';
$labels['quotaused'] = 'Usado';
$labels['quotastorage'] = 'Espacio en disco';
$labels['quotamessage'] = 'Conteo de mensajes';
$labels['shortheaderdate'] = 'El $date';
$labels['shortheaderto'] = 'A $to el $date';
$labels['shortheaderfrom'] = 'De $from el $date';
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['searchplaceholder'] = 'Buscar...';
$labels['resetsearch'] = 'Eliminar busqueda';
$labels['searchmod'] = 'Modificadores de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
$labels['body'] = 'Cuerpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nombre';
$labels['searchscope'] = 'Alcance';
$labels['currentfolder'] = 'Carpeta actual';
$labels['subfolders'] = 'Esta y subcarpetas';
$labels['allfolders'] = 'Todas las carpetas';
$labels['searchinterval-1W'] = 'antiguo que una semana';
$labels['searchinterval-1M'] = 'antiguo que un mes';
$labels['searchinterval-1Y'] = 'antiguo que un año';
$labels['searchinterval1W'] = 'reciente que una semana';
$labels['searchinterval1M'] = 'reciente que un mes';
$labels['searchinterval1Y'] = 'reciente que un año';
$labels['openinextwin'] = 'Abrir en una ventana nueva';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Mostrar en texto plano';
$labels['changeformathtml'] = 'Mostrar en formato HTML';
$labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar mensaje';
$labels['savemessage'] = 'Guardar como borrador';
$labels['addattachment'] = 'Adjuntar un archivo';
$labels['charset'] = 'Tipo de codificación de caracteres';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Confirmación de recepción';
$labels['dsn'] = 'Notificación de estado del envío';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje original';
$labels['selectimage'] = 'Seleccionar imagen';
$labels['addimage'] = 'Agregar imagen';
$labels['selectmedia'] = 'Seleccionar película';
$labels['addmedia'] = 'Agregar película';
$labels['encrypt'] = 'Cifrar';
$labels['encryptmessage'] = 'Cifrar mensaje';
$labels['encryptmessagemailvelope'] = 'Cifrar mensaje con Mailvelop';
$labels['importpubkeys'] = 'Importar llaves públicas';
$labels['encryptedsendialog'] = 'Enviando mensaje cifrado';
$labels['encryptandsign'] = 'Cifrar y firmar';
$labels['keyid'] = 'ID de la llave';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Vencida';
$labels['keyrevoked'] = 'Revocada';
$labels['bccinstead'] = 'Usar Bcc';
$labels['addheader'] = 'Añadir destinatario (encabezado)';
$labels['insert'] = 'Insertar';
$labels['insertcontact'] = 'Insertar contacto(s)';
$labels['recipient'] = 'Destinatario';
$labels['recipientedit'] = 'Editar destinatario';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Corrección ortográfica';
$labels['checkspelling'] = 'Verificar ortografía';
$labels['resumeediting'] = 'Continuar con la edición';
$labels['revertto'] = 'Revertir a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = '¿Restaurar mensaje?';
$labels['ignore'] = 'Ignorar';
$labels['responses'] = 'Respuestas';
$labels['insertresponse'] = 'Insertar una respuesta';
$labels['manageresponses'] = 'Administrar respuestas';
$labels['newresponse'] = 'Crear nueva respuesta';
$labels['addresponse'] = 'Agregar respuesta';
$labels['editresponse'] = 'Editar respuesta';
$labels['editresponses'] = 'Editar respuestas';
$labels['responsename'] = 'Nombre';
$labels['responsetext'] = 'Texto de respuesta';
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Archivos adjuntos';
$labels['upload'] = 'Subir';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
$labels['togglecomposeoptions'] = 'Cambiar opciones de escritura';
$labels['attachmentrename'] = 'Renombrar archivo adjunto';
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Más bajo';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alto';
$labels['highest'] = 'Más alto';
$labels['nosubject'] = '(sin asunto)';
$labels['showimages'] = 'Mostrar imágenes';
$labels['allow'] = 'Permitir';
$labels['alwaysshow'] = 'Mostrar siempre las imagenes de $sender';
$labels['alwaysallow'] = 'Siempre permitir de $sender';
$labels['isdraft'] = 'Este mensaje es un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['details'] = 'Detalles';
$labels['summary'] = 'Resumen';
$labels['headers'] = 'Encabezados';
$labels['allheaders'] = 'Todos los encabezados...';
$labels['togglemoreheaders'] = 'Mostrar más encabezados';
$labels['togglefullheaders'] = 'Mostrar todos los encabezados';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto plano';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en ';
$labels['dontsave'] = 'no guardar';
$labels['maxuploadsize'] = 'El tamaño máximo permitido por archivo es $size';
$labels['addcc'] = 'Agregar Cc';
$labels['addbcc'] = 'Agregar Bcc';
$labels['addreplyto'] = 'Agregar Responder a';
$labels['addfollowupto'] = 'Agregar Seguir a';
$labels['mdnrequest'] = 'El remitente de este mensaje a pedido ser notificado cuando lea el mensaje. ¿Quiere notificar al remitente?';
$labels['receiptread'] = 'Confirmación del recepción (leído)';
$labels['yourmessage'] = 'Esta es una confirmación de recepción de tu mensaje';
$labels['receiptnote'] = 'Nota: esta confirmación solo prueba que el mensaje se ha mostrado en la computadora del destinatario. No es garantía de que el destinatario haya leído o entendido el contenido del mensaje.';
$labels['zoomin'] = 'Aumentar Zoom';
$labels['zoomout'] = 'Disminuir Zoom';
$labels['rotate'] = 'Rotar';
$labels['increaseimage'] = 'Incrementar tamaño de imagen';
$labels['decreaseimage'] = 'Disminuir tamaño de imagen';
$labels['rotateimage'] = 'Rotar imagen';
$labels['showtools'] = 'Mostrar herramientas de imagen';
$labels['hidetools'] = 'Ocultar herramientas de imagen';
$labels['name'] = 'Nombre para mostrar';
$labels['firstname'] = 'Primer nombre';
$labels['surname'] = 'Apellido';
$labels['middlename'] = 'Segundo Nombre';
$labels['nameprefix'] = 'Prefijo';
$labels['namesuffix'] = 'Sufijo';
$labels['nickname'] = 'Sobrenombre';
$labels['jobtitle'] = 'Puesto';
$labels['department'] = 'Departamento';
$labels['gender'] = 'Sexo';
$labels['maidenname'] = 'Apellido de soltera';
$labels['email'] = 'Dirección de correo electrónico';
$labels['phone'] = 'Teléfono';
$labels['address'] = 'Dirección';
$labels['street'] = 'Calle';
$labels['locality'] = 'Ciudad';
$labels['zipcode'] = 'Código Postal';
$labels['region'] = 'Estado/Provincia';
$labels['country'] = 'País';
$labels['birthday'] = 'Cumpleaños';
$labels['anniversary'] = 'Aniversario';
$labels['website'] = 'Sitio web';
$labels['instantmessenger'] = 'Mensajería instantánea';
$labels['notes'] = 'Notas';
$labels['male'] = 'masculino';
$labels['female'] = 'femenino';
$labels['manager'] = 'Administrador';
$labels['assistant'] = 'Asistente';
$labels['spouse'] = 'Cónyuge';
$labels['allfields'] = 'Todos los campos';
$labels['search'] = 'Buscar';
$labels['searchresult'] = 'Resultado de búsqueda';
$labels['advsearch'] = 'Búsqueda avanzada';
$labels['advanced'] = 'Avanzada';
$labels['other'] = 'Otro';
$labels['printcontact'] = 'Imprimir contacto';
$labels['qrcode'] = 'Código QR';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabajo';
$labels['typeother'] = 'Otro';
$labels['typemobile'] = 'Celular';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax (casa)';
$labels['typeworkfax'] = 'Fax (oficina)';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistente';
$labels['typehomepage'] = 'Página web';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Agregar campo...';
$labels['addcontact'] = 'Agregar contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
$labels['contactnameandorg'] = 'Nombre y organización';
$labels['personalinfo'] = 'Información personal';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Foto del contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
$labels['delete'] = 'Eliminar';
$labels['discard'] = 'Descartar';
$labels['continue'] = 'Continuar';
$labels['ok'] = 'OK';
$labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Agregar';
$labels['replacephoto'] = 'Remplazar';
$labels['uploadphoto'] = 'Subir foto';
$labels['choosefile'] = 'Seleccionar archivo...';
$labels['choosefiles'] = 'Seleccionar archivos...';
$labels['browse'] = 'Navegar';
$labels['newcontact'] = 'Crear nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Escribir a ';
$labels['contactsfromto'] = 'Contactos $from a $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todo';
$labels['exportsel'] = 'Exportar lo seleccionado';
$labels['exportvcards'] = 'Exportar contactos en formato vCard';
$labels['newgroup'] = 'Crear grupo nuevo';
$labels['addgroup'] = 'Agregar grupo';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupassign'] = 'Asignar a grupo...';
$labels['groupremove'] = 'Eliminar del grupo';
$labels['groupremoveselected'] = 'Eliminar contactos seleccionados del grupo';
$labels['uponelevel'] = 'Arriba un nivel';
$labels['previouspage'] = 'Mostrar página anterior';
$labels['firstpage'] = 'Mostrar primera página';
$labels['nextpage'] = 'Mostrar página siguiente';
$labels['lastpage'] = 'Mostrar última página';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Mostrar miembros del grupo';
$labels['personaladrbook'] = 'Direcciones personales';
$labels['searchsave'] = 'Guardar búsqueda';
$labels['searchdelete'] = 'Eliminar búsqueda';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importtarget'] = 'Agregar contactos a';
$labels['importreplace'] = 'Remplazar toda la libreta de direcciones';
$labels['importgroups'] = 'Importar asignaciones del grupo';
$labels['importgroupsall'] = 'Todo (crear grupos si es necesario)';
$labels['importgroupsexisting'] = 'Solo para grupos existentes';
$labels['done'] = 'Listo';
$labels['settingsfor'] = 'Configuraciones para';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario ';
$labels['editpreferences'] = 'Editar preferencias de usuario ';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Administrar identidades';
$labels['newidentity'] = 'Crear nueva identidad';
$labels['addidentity'] = 'Agregar identidad';
$labels['editidentity'] = 'Editar identidad';
$labels['preferhtml'] = 'Mostrar HTML ';
$labels['defaultcharset'] = 'Caracteres predeterminados';
$labels['htmlmessage'] = 'Mensaje HTML ';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Firma digital';
$labels['dateformat'] = 'Formato de fecha';
$labels['timeformat'] = 'Formato de hora';
$labels['prettydate'] = 'Fechas bonitas';
$labels['setdefault'] = 'Predeterminar';
$labels['autodetect'] = 'Automático';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Zona horaria';
$labels['pagesize'] = 'Filas por página ';
$labels['signature'] = 'Firma';
$labels['dstactive'] = 'Horario de ahorro de energía';
$labels['showinextwin'] = 'Abrir mensaje en una ventana nueva ';
$labels['composeextwin'] = 'Escribir en una ventana nueva ';
$labels['htmleditor'] = 'Escribir mensajes HTML';
$labels['htmlonreply'] = 'al responder un mensaje HTML';
$labels['htmlonreplyandforward'] = 'al renviar o responder un mensaje HTML';
$labels['htmlsignature'] = 'Firma HTML ';
$labels['showemail'] = 'Mostrar dirección de correo electrónico junto al nombre a mostrar';
$labels['previewpane'] = 'Mostrar vista previa ';
$labels['skin'] = 'Tipo de interfaz';
$labels['logoutclear'] = 'Vaciar la papelera al salir';
$labels['logoutcompact'] = 'Comprimir la Bandeja de entrada al salir';
$labels['uisettings'] = 'Interfaz de usuario';
$labels['serversettings'] = 'Configuración del servidor';
$labels['mailboxview'] = 'Visualización de la bandeja';
$labels['mdnrequests'] = 'Al solicitarse confirmación de recepción';
$labels['askuser'] = 'preguntarme';
$labels['autosend'] = 'enviar confirmación de recepción';
$labels['autosendknown'] = 'enviar confirmación de recepción a mis contactos; de lo contrario, preguntarme';
$labels['autosendknownignore'] = 'enviar confirmación de recepción a mis contactos; de lo contrario, ignorar';
$labels['readwhendeleted'] = 'Marcar mensaje como leído al eliminarlo ';
$labels['flagfordeletion'] = 'Marcar el mensaje para eliminación en lugar de eliminarlo';
$labels['skipdeleted'] = 'No mostrar mensajes eliminados';
$labels['deletealways'] = 'Si falla el mover los mensajes a la Papelera, eliminarlos';
$labels['deletejunk'] = 'Eliminar directamente los mensajes en No deseado';
$labels['showremoteimages'] = 'Mostrar imágenes remotas en el mensaje';
$labels['fromknownsenders'] = 'de remitentes conocidos';
$labels['always'] = 'siempre ';
$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
$labels['refreshinterval'] = 'Actualizar (buscar nuevos mensajes, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'inmediatamente';
$labels['messagesdisplaying'] = 'Mostrando mensajes';
$labels['messagescomposition'] = 'Escribiendo mensajes';
$labels['mimeparamfolding'] = 'Nombres de archivos adjuntos';
$labels['2231folding'] = 'RFC 2231 completo (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 completo (otros)';
$labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bits';
$labels['savelocalstorage'] = "Guardar en el almacenamiento local del navegador (temporalmente)";
$labels['advancedoptions'] = 'Opciones avanzadas';
$labels['toggleadvancedoptions'] = 'Cambiar opciones avanzadas';
$labels['focusonnewmessage'] = 'Enfocar la ventana del navegador en el nuevo mensaje';
$labels['checkallfolders'] = 'Buscar nuevos mensajes en todas las carpetas';
$labels['defaultfont'] = 'Tipo de letra predeterminado en mensajes HTML';
$labels['mainoptions'] = 'Opciones principales';
$labels['browseroptions'] = 'Opciones del navegador';
$labels['section'] = 'Sección';
$labels['maintenance'] = 'Mantenimiento';
$labels['newmessage'] = 'Mensaje nuevo';
$labels['signatureoptions'] = 'Opciones de firma';
$labels['whenreplying'] = 'Al responder';
$labels['replyempty'] = 'no citar el mensaje original ';
$labels['replytopposting'] = 'comenzar mensaje nuevo arriba de la cita';
$labels['replybottomposting'] = 'comenzar mensaje nuevo debajo de la cita';
$labels['replyremovesignature'] = 'Al responder, borrar la firma original del mensaje';
$labels['autoaddsignature'] = 'Agregar firma automáticamente';
$labels['newmessageonly'] = 'solo mensaje nuevo';
$labels['replyandforwardonly'] = 'solo responde y reenvía';
$labels['insertsignature'] = 'insertar firma';
$labels['afternseconds'] = 'luego de $n segundos';
$labels['reqmdn'] = 'Solicitar siempre una confirmación de recepción';
$labels['reqdsn'] = 'Solicitar siempre una notificación de estado de envío';
$labels['replysamefolder'] = 'Colocar respuestas en la carpeta del mensaje que ha sido respondido';
$labels['defaultabook'] = 'Libreta de direcciones predeterminada';
$labels['autocompletesingle'] = 'Al autocompletar, omitir direcciones de correo electrónico alternativas';
$labels['listnamedisplay'] = 'Enumerar contactos como';
$labels['spellcheckbeforesend'] = 'Verificar ortografía antes de enviar un mensaje';
$labels['spellcheckoptions'] = 'Opciones de la corrección ortográfica';
$labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
$labels['spellcheckignorenums'] = 'Ignorar palabras con números';
$labels['spellcheckignorecaps'] = 'Ignorar palabras con todas las letras en mayúsculas';
$labels['addtodict'] = 'Agregar al diccionario';
$labels['mailtoprotohandler'] = 'Registrar manejador de protocolo para enlaces mailto:';
$labels['standardwindows'] = 'Tratar ventanas emergentes como ventanas comunes';
$labels['forwardmode'] = 'Reenvío de mensajes';
$labels['inline'] = 'en el mensaje';
$labels['asattachment'] = 'como adjunto';
$labels['replyallmode'] = 'Acción predeterminada del botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder solamente a la lista de correos (si hay una)';
$labels['allmessages'] = 'todos los mensajes';
$labels['folder'] = 'Carpeta';
$labels['folders'] = 'Carpetas';
$labels['foldername'] = 'Nombre de carpeta';
$labels['subscribed'] = 'Suscrita(s)';
$labels['messagecount'] = 'Mensajes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear carpeta nueva';
$labels['managefolders'] = 'Administrar carpetas';
$labels['specialfolders'] = 'Capetas especiales';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades de la carpeta';
$labels['parentfolder'] = 'Carpeta madre';
$labels['location'] = 'Ubicación';
$labels['info'] = 'Información';
$labels['getfoldersize'] = 'Haga clic para obtener el tamaño de la carpeta';
$labels['changesubscription'] = 'Haga clic para cambiar la subscripción';
$labels['foldertype'] = 'Tipo de carpeta';
$labels['personalfolder'] = 'Carpeta privada';
$labels['otherfolder'] = 'Carpeta de otro usuario';
$labels['sharedfolder'] = 'Carpeta pública';
$labels['findfolders'] = 'Buscar carpetas';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Otros usuarios';
$labels['namespace.shared'] = 'Compartido';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ordenar de forma ascendente';
$labels['sortdesc'] = 'Ordenar de forma descendente';
$labels['undo'] = 'Deshacer';
$labels['installedplugins'] = 'Extensiones instaladas';
$labels['plugin'] = 'Extensión';
$labels['version'] = 'Versión';
$labels['source'] = 'Fuente';
$labels['license'] = 'Licencia';
$labels['support'] = 'Obtener soporte técnico';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Europeo Occidental';
$labels['easterneuropean'] = 'Europeo Oriental';
$labels['southeasterneuropean'] = 'Europeo Sur-Oriental';
$labels['baltic'] = 'Baltico';
$labels['cyrillic'] = 'Cirílico';
$labels['arabic'] = 'Arábe';
$labels['greek'] = 'Griego';
$labels['hebrew'] = 'Hebreo';
$labels['turkish'] = 'Turco';
$labels['nordic'] = 'Nórdico';
$labels['thai'] = 'Tailandés';
$labels['celtic'] = 'Celta';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
$labels['arialabeltopnav'] = 'Control de ventana';
$labels['arialabeltasknav'] = 'Tareas de la aplicación';
$labels['arialabeltoolbar'] = 'Barra de herramientas de la aplicación';
$labels['arialabelactivetask'] = 'Tarea activa';
$labels['arialabelmessagessearchfilter'] = 'Listado de filtros de correo electrónico';
$labels['arialabelmailsearchform'] = 'Formulario de búsqueda de mensajes de correo electrónico';
$labels['arialabelcontactsearchform'] = 'Formulario de búsqueda de contactos';
$labels['arialabelmailquicksearchbox'] = 'Ingreso de búsqueda de correo electrónico';
$labels['arialabelquicksearchbox'] = 'Ingreso de búsqueda';
$labels['arialabelfoldersearchfilter'] = 'Filtro de lista de carpetas';
$labels['arialabelfoldersearchform'] = 'Formulario de busqueda de carpetas';
$labels['arialabelfolderlist'] = 'Selección de carpeta de correo electrónico';
$labels['arialabelmessagelist'] = 'Listado de mensajes de correo electrónico';
$labels['arialabelmailpreviewframe'] = 'Previsualización del mensaje';
$labels['arialabelmailboxmenu'] = 'Menú de acciones de carpeta';
$labels['arialabellistselectmenu'] = 'Menú de lista de selección';
$labels['arialabelthreadselectmenu'] = 'Menú de listado de hilos';
$labels['arialabelmessagelistoptions'] = 'Opciones de organización y visualización de mensajes';
$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensajes';
$labels['arialabelmessagenav'] = 'Navegación de mensajes';
$labels['arialabelmessagebody'] = 'Cuerpo del mensaje';
$labels['arialabelmessageactions'] = 'Acciones del mensaje';
$labels['arialabelcontactquicksearch'] = 'Formulario de búsqueda de contactos';
$labels['arialabelcontactsearchbox'] = 'Ingreso de búsqueda de contacto';
$labels['arialabelmessageheaders'] = 'Encabezados del mensaje';
$labels['arialabelforwardingoptions'] = 'Opciones de reenvío';
$labels['arialabelreplyalloptions'] = 'Opciones de Responder a todos';
$labels['arialabelmoremessageactions'] = 'Más acciones de mensaje';
$labels['arialabelmarkmessagesas'] = 'Marcar mensajes seleccionados como...';
$labels['arialabelcomposeoptions'] = 'Opciones de escritura';
$labels['arialabelresponsesmenu'] = 'Menú de respuestas enlatadas';
$labels['arialabelattachmentuploadform'] = 'Formulario para subir archivos adjuntos';
$labels['arialabelattachmentpreview'] = 'Previsualización de archivos adjuntos';
$labels['ariasummarycomposecontacts'] = 'Lista de contactos y grupos para seleccionar como destinatarios';
$labels['arialabelcontactexportoptions'] = 'Opciones de exportación de contactos';
$labels['arialabelabookgroupoptions'] = 'Opciones de libreta de direcciones/grupos';
$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidad';
$labels['arialabelresponseeditfrom'] = 'Formulario de edición de respuestas';
$labels['arialabelsearchterms'] = 'Términos de busqueda';
$labels['helplistnavigation'] = 'Listar navegación por teclado';
$labels['helplistkeyboardnavigation'] = "Flechas arriba/abajo: Mover la selección/enfoque de la fila.
Espacio: Seleccionar fila enfocada.
Mayús + arriba/abajo: Seleccionar más filas arriba/debajo.
Ctrl + Espacio: Agregar/eliminar la fila enfocada a/de la selección.";
$labels['helplistkeyboardnavmessages'] = "Flechas derecha/izquierda: Expandir/colapsar mensajes en hilo (solo en modo en hilo).
Intro: Abrir el mensaje seleccionado/enfocado.
Eliminar: Mover los mensajes seleccionados a la Papelera.";
$labels['helplistkeyboardnavcontacts'] = "Intro: Abrir el contacto seleccionado/enfocado.";
localization/es_419/messages.inc000064400000030241151727150600012546 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '¡Ha ocurrido un error!';
$messages['loginfailed']  = 'Falló el Login.';
$messages['cookiesdisabled'] = 'Su navegador no acepta cookies.';
$messages['sessionerror'] = 'Su sesión no es válida o ha expirado.';
$messages['storageerror'] = 'Ha fallado la conexión al servidor de almacenamiento.';
$messages['servererror'] = '¡Error del servidor!';
$messages['servererrormsg'] = 'Error del servidor: $msg';
$messages['connerror'] = '¡Error de conexión (no se puede contactar con el servidor)!';
$messages['dberror'] = '¡Error en la base de datos!';
$messages['windowopenerror'] = '¡La ventana emergente ha sido bloqueada!';
$messages['requesttimedout'] = 'Tiempo de espera expirado';
$messages['errorreadonly'] = 'No es posible realizar la operación. La carpeta es de solo lectura';
$messages['errornoperm'] = 'No es posible realizar la operación. Permiso denegado.';
$messages['erroroverquota'] = 'No es posible realizar la operación. No hay espacio en disco.';
$messages['erroroverquotadelete'] = 'No hay espacio libre en disco. Use Mayúsculas+Eliminar para borrar mensajes.';
$messages['invalidrequest'] = '¡Solicitud no válida! No se ha guardado la información.';
$messages['invalidhost'] = 'Nombre de servidor no válido.';
$messages['nomessagesfound'] = 'No se encontraron mensajes en esta casilla.';
$messages['mailboxempty'] = 'Casilla vacía';
$messages['nomessages'] = 'Ningún mensaje';
$messages['refreshing'] = 'Actualizando...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Subiendo archivo...';
$messages['uploadingmany'] = 'Subiendo archivos...';
$messages['loadingdata'] = 'Cargando información...';
$messages['checkingmail'] = 'Revisando por nuevos mensajes...';
$messages['sendingmessage'] = 'Enviando mensaje...';
$messages['messagesent'] = 'Mensaje enviado exitosamente.';
$messages['savingmessage'] = 'Guardando mensaje...';
$messages['messagesaved'] = 'Mensaje guardado en Borrador.';
$messages['successfullysaved'] = 'Guardado exitosamente.';
$messages['savingresponse'] = 'Guardando texto de respuesta...';
$messages['deleteresponseconfirm'] = '¿Estás seguro que quieres eliminar este texto de respuesta?';
$messages['addedsuccessfully'] = 'Contacto agregado exitosamente a la libreta de direcciones.';
$messages['contactnameexists'] = 'Un contacto con el mismo nombre ya existe.';
$messages['blockedimages'] = 'Para proteger su privacidad, las imágenes remotas están bloqueadas en este mensaje.';
$messages['encryptedmessage'] = 'Este es un mensaje encriptado y no se puede mostrar. ¡Lo lamento!';
$messages['nocontactsfound'] = 'No se encontraron contactos.';
$messages['contactnotfound'] = 'El contacto solicitado no fue encontrado.';
$messages['sendingfailed'] = 'Error al enviar mensaje.';
$messages['senttooquickly'] = 'Por favor espera $sec seg(s). antes de enviar este mensaje.';
$messages['errorsavingsent'] = 'Ha ocurrido un error grabando el mensaje enviado.';
$messages['errorsaving'] = 'Ha ocurrido un error grabando.';
$messages['errormoving'] = 'No se pudo mover el/los mensaje(s).';
$messages['errorcopying'] = 'No se pudo copiar el/los mensaje(s).';
$messages['errordeleting'] = 'No se pudo eliminar el/los mensaje(s).';
$messages['errormarking'] = 'No se pudo marcar el/los mensaje(s).';
$messages['deletecontactconfirm']  = '¿Estás seguro que quieres eliminar el/los contacto(s) seleccionado(s)?';
$messages['deletegroupconfirm']  = '¿Estás seguro que quieres eliminar el grupo seleccionado?';
$messages['deletemessagesconfirm'] = '¿Estás seguro que quieres eliminar el/los mensaje(s) seleccionado(s)?';
$messages['deletefolderconfirm']  = '¿Estás seguro que quieres eliminar esta carpeta?';
$messages['purgefolderconfirm']  = '¿Estás seguro que quieres eliminar todos los mensajes en esta carpeta?';
$messages['contactdeleting'] = 'Eliminando contacto(s)...';
$messages['groupdeleting'] = 'Eliminando grupo...';
$messages['folderdeleting'] = 'Eliminando carpeta...';
$messages['foldermoving'] = 'Moviendo carpeta...';
$messages['foldersubscribing'] = 'Suscribiendo carpeta...';
$messages['folderunsubscribing'] = 'Desuscribiendo carpeta...';
$messages['formincomplete'] = 'El formulario no se ha completado en su totalidad.';
$messages['noemailwarning'] = 'Por favor ingresa una dirección de correo electrónico válida.';
$messages['nonamewarning']  = 'Por favor ingresa un nombre.';
$messages['nopagesizewarning'] = 'Por favor ingresa un tamaño de página.';
$messages['norecipientwarning'] = 'Por favor ingresa al menos un destinatario.';
$messages['nosubjectwarning']  = 'El campo "Asunto" está vacio. ¿Deseas ingresar uno ahora?';
$messages['nobodywarning'] = '¿Enviar este mensaje sin texto?';
$messages['restoresavedcomposedata'] = 'Se ha encontrado un mensaje escrito pero no enviado\n\nAsunto: $subject\nGuardado: $date\n\n¿Desea restaurar este mensaje?';
$messages['nosearchname'] = 'Por favor ingresa un nombre de contacto o dirección de correo electrónico.';
$messages['notuploadedwarning'] = 'Aún no se han subido todos los archivos adjuntos. Por favor espera o cancela la subida.';
$messages['searchsuccessful'] = '$nr mensajes encontrados.';
$messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
$messages['searchnomatch'] = 'La búsqueda no retornó resultados.';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Verificando...';
$messages['stillsearching'] = 'Todavía buscando...';
$messages['nospellerrors'] = 'No se han encontrado errores gramaticales.';
$messages['folderdeleted'] = 'Carpeta eliminada exitosamente.';
$messages['foldersubscribed'] = 'Carpeta suscripta exitosamente';
$messages['folderunsubscribed'] = 'Carpeta desuscripta exitosamente';
$messages['deletedsuccessfully'] = 'Eliminado exitosamente.';
$messages['converting'] = 'Quitando el formato...';
$messages['messageopenerror'] = 'No se pudo cargar el mensaje desde el servidor.';
$messages['fileuploaderror'] = 'Subida de archivo falló.';
$messages['filesizeerror'] = 'El archivo subido excede el tamaño máxmo de $size.';
$messages['copysuccess'] = 'Copiados $nr contactos exitosamente.';
$messages['movesuccess'] = 'Movidos $nr contactos exitosamente.';
$messages['copyerror'] = 'No se pudo copiar ninguno de los contactos.';
$messages['moveerror'] = 'No se pudo mover ninguno de los contactos.';
$messages['sourceisreadonly'] = 'Esta dirección fuente es de solo lectura.';
$messages['errorsavingcontact'] = 'No se puedo guardar la dirección del contacto.';
$messages['movingmessage'] = 'Moviendo mensaje(s)...';
$messages['copyingmessage'] = 'Copiando mensaje(s)...';
$messages['copyingcontact'] = 'Copiando contacto(s)...';
$messages['movingcontact'] = 'Moviendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando mensaje(s)...';
$messages['markingmessage'] = 'Marcando mensaje(s)...';
$messages['addingmember'] = 'Agregando contacto(s) al grupo...';
$messages['removingmember'] = 'Eliminando contacto(s) del grupo...';
$messages['receiptsent'] = 'Se ha enviado con éxito una confirmación de lectura.';
$messages['errorsendingreceipt'] = 'No se pudo enviar el aviso de retorno.';
$messages['deleteidentityconfirm'] = '¿Estás seguro que quieres eliminar esta identidad?';
$messages['nodeletelastidentity'] = 'No puedes eliminar esta identidad, es tu última.';
$messages['forbiddencharacter'] = 'Lo nombre de la carpeta contiene un caracter no permitido.';
$messages['selectimportfile'] = 'Por favor selecciona un archivo para subir.';
$messages['addresswriterror'] = 'La libreta de direcciones seleccionada no se puede escribir.';
$messages['contactaddedtogroup'] = 'Se han eliminado los contactos a este grupo exitosamente';
$messages['contactremovedfromgroup'] = 'Se han eliminado los contactos de este grupo exitosamente';
$messages['nogroupassignmentschanged'] = 'No se han cambiado las asignaciones de grupo.';
$messages['importwait'] = 'Importando, por favor espera...';
$messages['importformaterror'] = '¡Ha fallado la importación! El archivo subido no tiene un formato válido.';
$messages['importconfirm'] = '<b>Se han importado $inserted contactos exitosamente</b>';
$messages['importconfirmskipped'] = '<b>Salteadas $skipped entradas existentes</b>';
$messages['importmessagesuccess'] = 'Importados $nr mensajes exitosamente.';
$messages['importmessageerror'] = '¡Ha fallado la importación! El archivo subido no tiene un formato válido.';
$messages['opnotpermitted'] = '¡Operación no permitida!';
$messages['editorwarning'] = 'Cambiar el tipo de editor puede causar que el formato de texto se pierda. ¿Desea continuar?';
$messages['httpreceivedencrypterror'] = 'Ha ocurrido un error fatal de configuración. Contacte a su administrador de inmediato. <b>Su mensaje no puede ser enviado.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): Ha fallado la conexión con el servidor.';
$messages['smtpautherror'] = 'Error SMTP ($code): Error de autenticación.';
$messages['smtpfromerror'] = 'Error SMTP ($code): Fallo en establecer remitente "$from" ($msg).';
$messages['smtptoerror'] = 'Error SMTP ($code): Fallo al agregar destinatario "$to" ($msg).';
$messages['smtprecipientserror'] = 'Error SMTP: No es posible obtener la lista de destinatarios.';
$messages['smtperror'] = 'Error SMTP: $msg';
$messages['toomanyrecipients'] = 'Demasiados destinatarios. Reduzca el número de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max.';
$messages['internalerror'] = 'Ha ocurrido un error interno. Por favor intenta de nuevo.';
$messages['contactdelerror'] = 'No se pudo eliminar el/los contacto(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminados exitosamente';
$messages['contactrestoreerror'] = 'No se pudo restaurar los contacto(s) eliminados.';
$messages['contactrestored'] = 'Contacto(s) restaurados exitosamente.';
$messages['groupdeleted'] = 'Grupo eliminado exitosamente.';
$messages['grouprenamed'] = 'Grupo renombrado exitosamente.';
$messages['groupcreated'] = 'Grupo creado exitosamente.';
$messages['savedsearchdeleted'] = 'Búsqueda guardada eliminada exitosamente.';
$messages['savedsearchdeleteerror'] = 'No se pudo eliminar la búsqueda guardada.';
$messages['savedsearchcreated'] = 'Búsqueda guardada creada exitosamente.';
$messages['savedsearchcreateerror'] = 'No se puedo crear la búsqueda guardada.';
$messages['messagedeleted'] = 'Mensaje(s) eliminado(s) exitosamente.';
$messages['messagemoved'] = 'Mensaje(s) movido(s) exitosamente.';
$messages['messagecopied'] = 'Mensaje(s) copiado(s) exitosamente.';
$messages['messagemarked'] = 'Mensaje(s) marcado(s) exitosamente.';
$messages['autocompletechars'] = 'Ingrese al menos $min caracteres para el autocompletado.';
$messages['autocompletemore'] = 'No se han encontrado resultados. Por favor ingrese más caracteres.';
$messages['namecannotbeempty'] = 'El nombre no puede estar vacio.';
$messages['nametoolong'] = 'El nombre es demasiado largo.';
$messages['folderupdated'] = 'Carpeta actualizada exitosamente.';
$messages['foldercreated'] = 'Carpeta creada exitosamente.';
$messages['invalidimageformat'] = 'Formato de imagen no válido.';
$messages['mispellingsfound'] = 'Errores de gramática detectados en el mensaje.';
$messages['parentnotwritable'] = 'No se puede mover/crear la carpeta en la carpeta pariente seleccionada. No tiene derechos de acceso.';
$messages['messagetoobig'] = 'La parte del mensaje es demasiado grande para ser procesada.';
$messages['noscriptwarning'] = 'Atención: ¡Este servicio de Webmail requiere Javascript! Para usarlo por favor habilite Javascript en las opciones de su navegador.';
localization/vi_VN/labels.inc000064400000062542151727150600012227 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Chào mừng bạn đã sử dụng $product';
$labels['username'] = 'Tên đăng nhập';
$labels['password'] = 'Mật khẩu';
$labels['server'] = 'Máy chủ';
$labels['login'] = 'Đăng nhập';
$labels['logout'] = 'Thoát';
$labels['mail'] = 'Thư';
$labels['settings'] = 'Thiết lập cấu hình';
$labels['addressbook'] = 'Sổ địa chỉ';
$labels['inbox'] = 'Hộp thư';
$labels['drafts'] = 'Thư nháp';
$labels['sent'] = 'Đã gửi';
$labels['trash'] = 'Thùng rác';
$labels['junk'] = 'Thư rác';
$labels['show_real_foldernames'] = 'Hiển thị tên thật cho các thư mục đặc biệt';
$labels['subject'] = 'Tiêu đề';
$labels['from'] = 'Gửi từ';
$labels['sender'] = 'Người gửi';
$labels['to'] = 'Người nhận';
$labels['cc'] = 'Đồng kính gửi';
$labels['bcc'] = 'Người đồng nhận (người nhận không thấy email của người khác cùng được nhận thư)';
$labels['replyto'] = 'Trả lời cho';
$labels['followupto'] = 'Đánh dấu thư cần theo dõi';
$labels['date'] = 'Ngày';
$labels['size'] = 'Dung lượng';
$labels['priority'] = 'Độ ưu tiên';
$labels['organization'] = 'Tổ chức';
$labels['readstatus'] = 'Trạng thái của thư';
$labels['listoptions'] = 'Danh sách lựa chọn';
$labels['mailboxlist'] = 'Các thư mục';
$labels['messagesfromto'] = 'Thư từ $from đến $to trong tổng số $count';
$labels['threadsfromto'] = 'Dòng thư từ $from đến $to của tổng số $count';
$labels['messagenrof'] = 'Thư thứ $nr trong tổng số $count';
$labels['fromtoshort'] = '$from - $to của $count';
$labels['copy'] = 'Sao chép';
$labels['move'] = 'Di Chuyển';
$labels['moveto'] = 'Di chuyển tới...';
$labels['copyto'] = 'Sao dữ liệu đến...';
$labels['download'] = 'Tải về';
$labels['open'] = 'Mở';
$labels['showattachment'] = 'Hiển thị';
$labels['showanyway'] = 'Tiếp tục hiển thị';
$labels['filename'] = 'Tên tập tin';
$labels['filesize'] = 'Kích cỡ tập tin';
$labels['addtoaddressbook'] = 'Thêm vào danh bạ';
$labels['sun'] = 'Chủ Nhật';
$labels['mon'] = 'Thứ Hai';
$labels['tue'] = 'Thứ Ba';
$labels['wed'] = 'Thứ Tư';
$labels['thu'] = 'Thứ Năm';
$labels['fri'] = 'Thứ Sáu';
$labels['sat'] = 'Thứ Bảy';
$labels['sunday'] = 'Chủ Nhật';
$labels['monday'] = 'Thứ Hai';
$labels['tuesday'] = 'Thứ Ba';
$labels['wednesday'] = 'Thứ Tư';
$labels['thursday'] = 'Thứ Năm';
$labels['friday'] = 'Thứ Sáu';
$labels['saturday'] = 'Thứ Bảy';
$labels['jan'] = 'Tháng Một';
$labels['feb'] = 'Tháng Hai';
$labels['mar'] = 'Tháng Ba';
$labels['apr'] = 'Tháng Tư';
$labels['may'] = 'Tháng Năm';
$labels['jun'] = 'Tháng Sáu';
$labels['jul'] = 'Tháng Bảy';
$labels['aug'] = 'Tháng Tám';
$labels['sep'] = 'Tháng Chín';
$labels['oct'] = 'Tháng Mười';
$labels['nov'] = 'Tháng Mười Một';
$labels['dec'] = 'Tháng Mười Hai';
$labels['longjan'] = 'Tháng Một';
$labels['longfeb'] = 'Tháng Hai';
$labels['longmar'] = 'Tháng Ba';
$labels['longapr'] = 'Tháng Tư';
$labels['longmay'] = 'Tháng Năm';
$labels['longjun'] = 'Tháng Sáu';
$labels['longjul'] = 'Tháng Bảy';
$labels['longaug'] = 'Tháng Tám';
$labels['longsep'] = 'Tháng Chín';
$labels['longoct'] = 'Tháng Mười';
$labels['longnov'] = 'Tháng Mười Một';
$labels['longdec'] = 'Tháng Mười Hai';
$labels['today'] = 'Hôm nay';
$labels['refresh'] = 'Nạp lại';
$labels['checkmail'] = 'Kiểm tra thư mới';
$labels['compose'] = 'Soạn thư';
$labels['writenewmessage'] = 'Viết thư mới';
$labels['reply'] = 'Trả lời thư';
$labels['replytomessage'] = 'Trả lời thư người gửi';
$labels['replytoallmessage'] = 'Trả lời lại danh sách hoặc tới tất cả người gửi và người nhận của thư này';
$labels['replyall'] = 'Trả lời tất cả';
$labels['replylist'] = 'Danh sách trả lời';
$labels['forward'] = 'Chuyển tiếp';
$labels['forwardinline'] = 'Chuyển tiếp thư';
$labels['forwardattachment'] = 'Chuyển tiếp theo phương cách đính kèm';
$labels['forwardmessage'] = 'Chuyển tiếp thư';
$labels['deletemessage'] = 'Xóa thư';
$labels['movemessagetotrash'] = 'Chuyển thư vào thùng rác';
$labels['printmessage'] = 'In thư này';
$labels['previousmessage'] = 'Hiển thị thư trước đó';
$labels['firstmessage'] = 'Hiển thị thư đầu tiên';
$labels['nextmessage'] = 'Hiển thị thư tiếp theo';
$labels['lastmessage'] = 'Hiển thị thư cuối';
$labels['backtolist'] = 'Quay lại danh sách thư';
$labels['viewsource'] = 'Hiển thị nguồn';
$labels['mark'] = 'Đánh dấu';
$labels['markmessages'] = 'Đánh dấu các thư';
$labels['markread'] = 'Là đã đọc';
$labels['markunread'] = 'Là chưa đọc';
$labels['markflagged'] = 'Là quan trọng';
$labels['markunflagged'] = 'Là không quan trọng';
$labels['moreactions'] = 'Thêm hành động...';
$labels['folders-all'] = 'Tất cả các thư mục';
$labels['more'] = 'Thêm';
$labels['back'] = 'Quay lại';
$labels['options'] = 'Tuỳ chọn';
$labels['first'] = 'Đầu';
$labels['last'] = 'Cuối';
$labels['previous'] = 'Trước';
$labels['next'] = 'Sau';
$labels['select'] = 'Lựa chọn';
$labels['all'] = 'Tất cả';
$labels['none'] = 'Không có';
$labels['currpage'] = 'Trang hiện tại';
$labels['isread'] = 'Đọc';
$labels['unread'] = 'Chưa đọc';
$labels['flagged'] = 'Đã đánh dấu';
$labels['unflagged'] = 'Không đánh dấu';
$labels['unanswered'] = 'Chưa trả lời';
$labels['withattachment'] = 'Có tệp tin đính kèm';
$labels['deleted'] = 'Đã xóa';
$labels['undeleted'] = 'Chưa xóa được';
$labels['replied'] = 'Đã trả lời';
$labels['forwarded'] = 'Đã chuyển tiếp';
$labels['invert'] = 'Đảo ngược';
$labels['filter'] = 'Soạn lọc';
$labels['list'] = 'Danh sách';
$labels['threads'] = 'Chủ đề thư';
$labels['expand-all'] = 'Mở rộng tất cả';
$labels['expand-unread'] = 'Mở rộng thư chưa đọc';
$labels['collapse-all'] = 'Đóng hết';
$labels['threaded'] = 'Đã nhóm theo chủ đề thư';
$labels['autoexpand_threads'] = 'Mở rộng các chủ đề thư';
$labels['do_expand'] = 'Tất cả các chủ đề thư';
$labels['expand_only_unread'] = 'Chỉ với những thư chưa đọc';
$labels['fromto'] = 'Từ/Đến';
$labels['flag'] = 'Đánh dấu';
$labels['attachment'] = 'Đính kèm';
$labels['nonesort'] = 'Không có';
$labels['sentdate'] = 'Ngày đã gửi';
$labels['arrival'] = 'Ngày đến';
$labels['asc'] = 'Tăng dần';
$labels['desc'] = 'Giảm dần';
$labels['listcolumns'] = 'Các cột danh sách';
$labels['listsorting'] = 'Cột sắp xếp';
$labels['listorder'] = 'Thứ tự sắp xếp';
$labels['listmode'] = 'Xem dạng danh sách';
$labels['layoutlist'] = 'Danh sách';
$labels['folderactions'] = 'Thao tác với thư mục';
$labels['compact'] = 'Nén';
$labels['empty'] = 'Trống';
$labels['importmessages'] = 'Nhập thư';
$labels['quota'] = 'Lượng đĩa sử dụng';
$labels['unknown'] = 'Không rõ';
$labels['unlimited'] = 'không giới hạn';
$labels['quotatype'] = 'Kiểu hạn ngạch';
$labels['quotatotal'] = 'Giới hạn';
$labels['quotaused'] = 'Đã dùng';
$labels['quotastorage'] = 'Dung lượng đĩa cứng';
$labels['quicksearch'] = 'Tìm nhanh';
$labels['resetsearch'] = 'Thiết lập lại tìm kiếm';
$labels['searchmod'] = 'Tìm kiếm với từ khóa và ký tự đặc biệt [() : " - ]';
$labels['msgtext'] = 'Toàn bộ thư';
$labels['body'] = 'Nội dung thư';
$labels['type'] = 'Định dạng';
$labels['namex'] = 'Họ tên';
$labels['searchscope'] = 'Phạm vi';
$labels['currentfolder'] = 'Thư mục hiện tại';
$labels['subfolders'] = 'Thư mục hiện tại và các thư mục con';
$labels['allfolders'] = 'Tất cả các thư mục';
$labels['openinextwin'] = 'Mở trong khung cửa mới';
$labels['emlsave'] = 'Tải về theo định dạng .eml';
$labels['changeformattext'] = 'Hiển thị ở chế độ text';
$labels['changeformathtml'] = 'Hiển thị ở chế độ HTML';
$labels['editasnew'] = 'Sửa như một email mới';
$labels['send'] = 'Gửi';
$labels['sendmessage'] = 'Gửi thư';
$labels['savemessage'] = 'Lưu dạng nháp';
$labels['addattachment'] = 'Kèm theo tập tin';
$labels['charset'] = 'Bộ ký tự';
$labels['editortype'] = 'Loại trình soạn thảo';
$labels['returnreceipt'] = 'Báo nhận';
$labels['dsn'] = 'Thông báo trạng thái gửi thư';
$labels['mailreplyintro'] = 'Vào ngày $date, $sender viết:';
$labels['originalmessage'] = 'Thư gốc';
$labels['selectimage'] = 'Chọn ảnh';
$labels['addimage'] = 'Thêm ảnh';
$labels['selectmedia'] = 'Chọn phim';
$labels['addmedia'] = 'Thêm phim';
$labels['insert'] = 'Chèn';
$labels['recipient'] = 'Người nhận';
$labels['editidents'] = 'Chỉnh sửa nhận diện';
$labels['spellcheck'] = 'Đánh vần';
$labels['checkspelling'] = 'Kiểm tra chính tả';
$labels['resumeediting'] = 'Tiếp tục soạn thảo';
$labels['revertto'] = 'Trở lại với';
$labels['restore'] = 'Khôi phục';
$labels['restoremessage'] = 'Khôi phục thư?';
$labels['responses'] = 'Các phản hồi';
$labels['insertresponse'] = 'Thêm một phản hồi';
$labels['manageresponses'] = 'Quản lý các phản hồi';
$labels['newresponse'] = 'Tạo phản hồi mới';
$labels['addresponse'] = 'Thêm phản hồi';
$labels['editresponse'] = 'Sửa phản hồi';
$labels['editresponses'] = 'Sửa các phản hồi';
$labels['responsename'] = 'Tên';
$labels['responsetext'] = 'Thông tin phản hồi';
$labels['attach'] = 'Đính kèm';
$labels['attachments'] = 'Các đính kèm';
$labels['upload'] = 'Tải lên';
$labels['uploadprogress'] = '$percent ($current của $total)
';
$labels['close'] = 'Đóng';
$labels['messageoptions'] = 'Tùy chọn cho thư...';
$labels['low'] = 'Thấp';
$labels['lowest'] = 'Thấp nhất';
$labels['normal'] = 'Bình thường';
$labels['high'] = 'Cao';
$labels['highest'] = 'Cao nhất';
$labels['nosubject'] = '(Không có chủ đề)';
$labels['showimages'] = 'Hiển thị ảnh';
$labels['alwaysshow'] = 'Luôn luôn hiển thị ảnh từ $sender';
$labels['isdraft'] = 'Đây là thư nháp';
$labels['andnmore'] = 'Thêm $nr';
$labels['togglemoreheaders'] = 'Hiển thị chi tiết thông tin thư';
$labels['togglefullheaders'] = 'Mở/đóng chi tiết thông tin thư';
$labels['htmltoggle'] = 'Mã HTML';
$labels['plaintoggle'] = 'Văn bản thô';
$labels['savesentmessagein'] = 'Lưu thư đã gửi trong';
$labels['dontsave'] = 'Không lưu';
$labels['maxuploadsize'] = 'Dung lượng tập tin tối đa cho phép là $size';
$labels['addcc'] = 'Thêm Cc';
$labels['addbcc'] = 'Thêm Bcc';
$labels['addreplyto'] = 'Thêm trả lời tới';
$labels['addfollowupto'] = 'Thêm sự theo dõi tới';
$labels['mdnrequest'] = 'Người gửi thư này muốn nhận được thông báo khi bạn đọc thư. Bạn có muốn cho người gửi biết thông báo này không?';
$labels['receiptread'] = 'Biên nhận (đã đọc)';
$labels['yourmessage'] = 'Đây là sự trả lại xác nhận cho thư của bạn';
$labels['receiptnote'] = 'Lưu ý: Biên nhận này chỉ báo rằng thư đã được hiển thị trên máy tính của người nhận. Không bảo đảm rằng người nhận đó đã có đọc hoặc hiểu nội dung thư.';
$labels['name'] = 'Tên hiển thị';
$labels['firstname'] = 'Tên Gọi';
$labels['surname'] = 'Tên Họ';
$labels['middlename'] = 'Tên đệm';
$labels['nameprefix'] = 'Tiền tố';
$labels['namesuffix'] = 'Hậu tố';
$labels['nickname'] = 'Biệt danh';
$labels['jobtitle'] = 'Chức danh Công việc';
$labels['department'] = 'Khoa/Ban';
$labels['gender'] = 'Giới tính';
$labels['maidenname'] = 'Tên thời con gái';
$labels['email'] = 'Thư điện tử';
$labels['phone'] = 'Điện thoại';
$labels['address'] = 'Địa chỉ';
$labels['street'] = 'Đường';
$labels['locality'] = 'Thành phố';
$labels['zipcode'] = 'Mã bưu điện';
$labels['region'] = 'Bang/Tỉnh';
$labels['country'] = 'Quốc gia';
$labels['birthday'] = 'Ngày sinh';
$labels['anniversary'] = 'Kỷ niệm';
$labels['website'] = 'Trang Web';
$labels['instantmessenger'] = 'Tin nhắn nhanh';
$labels['notes'] = 'Các ghi chú';
$labels['male'] = 'Nam';
$labels['female'] = 'Nữ';
$labels['manager'] = 'Người quản lý';
$labels['assistant'] = 'Trợ lý';
$labels['spouse'] = 'Vợ/Chồng';
$labels['allfields'] = 'Tất cả các lĩnh vực';
$labels['search'] = 'Tìm kiếm';
$labels['searchresult'] = 'Kết quả tìm kiếm';
$labels['advsearch'] = 'Tìm kiếm chi tiết';
$labels['advanced'] = 'Nâng cao';
$labels['other'] = 'Loại khác';
$labels['typehome'] = 'Thư mục chính';
$labels['typework'] = 'Cơ quan';
$labels['typeother'] = 'Loại khác';
$labels['typemobile'] = 'Số di động';
$labels['typemain'] = 'Chính';
$labels['typehomefax'] = 'Điện thư ở Nhà';
$labels['typeworkfax'] = 'Điện thư cơ quan';
$labels['typecar'] = 'Xe';
$labels['typepager'] = 'Máy nhắn tin';
$labels['typevideo'] = 'Phim';
$labels['typeassistant'] = 'Trợ lý';
$labels['typehomepage'] = 'Trang nhà';
$labels['typeblog'] = 'Trang nhật ký';
$labels['typeprofile'] = 'Lý lịch';
$labels['addfield'] = 'Thêm lĩnh vực...';
$labels['addcontact'] = 'Thêm liên hệ';
$labels['editcontact'] = 'Sửa liên lạc';
$labels['contacts'] = 'Danh bạ';
$labels['contactproperties'] = 'Tính chất của liên hệ';
$labels['contactnameandorg'] = 'Tên và tổ chức';
$labels['personalinfo'] = 'Thông tin cá nhân';
$labels['personal'] = 'Cá nhân';
$labels['contactphoto'] = 'Ảnh của người liên hệ';
$labels['edit'] = 'Chỉnh sửa';
$labels['cancel'] = 'Huỷ';
$labels['save'] = 'Lưu';
$labels['delete'] = 'Xóa';
$labels['rename'] = 'Đổi tên';
$labels['addphoto'] = 'Thêm';
$labels['replacephoto'] = 'Thay thế';
$labels['uploadphoto'] = 'Tải ảnh lên';
$labels['newcontact'] = 'Tạo liên hệ mới';
$labels['deletecontact'] = 'Xoá các liên lạc đã chọn';
$labels['composeto'] = 'Soạn thư cho';
$labels['contactsfromto'] = 'Liên hệ từ $from - $to / $count';
$labels['print'] = 'In ra';
$labels['export'] = 'Trích xuất';
$labels['exportall'] = 'Xuất tất cả';
$labels['exportsel'] = 'Xuất mục chọn';
$labels['exportvcards'] = 'Tải dữ liệu máy theo định dạng vCard';
$labels['newgroup'] = 'Tạo nhóm mới';
$labels['addgroup'] = 'Thêm nhóm';
$labels['grouprename'] = 'Đổi tên nhóm';
$labels['groupdelete'] = 'Xóa nhóm';
$labels['groupremoveselected'] = 'Xóa bỏ các liên lạc được chọn từ nhóm';
$labels['uponelevel'] = 'Lên một mức';
$labels['previouspage'] = 'Hiển thị trang trước';
$labels['firstpage'] = 'Hiển thị trang đầu tiên';
$labels['nextpage'] = 'Hiển thị trang kế tiếp';
$labels['lastpage'] = 'Hiển thị trang cuối';
$labels['group'] = 'Nhóm';
$labels['groups'] = 'Các nhóm';
$labels['listgroup'] = 'Danh sách các thành viên nhóm';
$labels['personaladrbook'] = 'Các địa chỉ cá nhân';
$labels['searchsave'] = 'Lưu tìm kiếm';
$labels['searchdelete'] = 'Xóa tìm kiếm';
$labels['import'] = 'Nhập';
$labels['importcontacts'] = 'Nhập liên lạc';
$labels['importtarget'] = 'Thêm các địa chỉ liên hệ vào';
$labels['importreplace'] = 'Thay thế toàn bộ sổ địa chỉ';
$labels['importgroups'] = 'Nhập nhóm';
$labels['importgroupsall'] = 'Tất cả (tạo nhóm nếu cần thiết)';
$labels['importgroupsexisting'] = 'Chỉ dành cho các nhóm đang tồn tại';
$labels['done'] = 'Hoàn tất';
$labels['settingsfor'] = 'Thiết lập cho';
$labels['about'] = 'Lời ngõ';
$labels['preferences'] = 'Sở thích';
$labels['userpreferences'] = 'Sở thích người dùng';
$labels['editpreferences'] = 'Chỉnh sửa sở thích';
$labels['identities'] = 'Các nhận diện';
$labels['preferhtml'] = 'Hiển thị HTML';
$labels['defaultcharset'] = 'Bộ ký tự mặc định';
$labels['htmlmessage'] = 'Thư theo định dạng HTML';
$labels['messagepart'] = 'Một phần';
$labels['digitalsig'] = 'Chữ ký điện tử';
$labels['dateformat'] = 'Định dạng ngày tháng';
$labels['timeformat'] = 'Định dạng thời gian';
$labels['prettydate'] = 'Ngày tháng đầy đủ';
$labels['setdefault'] = 'Thiết lập mặc định';
$labels['autodetect'] = 'Tự động';
$labels['language'] = 'Ngôn ngữ';
$labels['timezone'] = 'Múi giờ';
$labels['pagesize'] = 'Số dòng trên trang';
$labels['signature'] = 'Chữ ký';
$labels['dstactive'] = 'Giờ mùa hè';
$labels['showinextwin'] = 'Mở thư trong khung mới';
$labels['composeextwin'] = 'Soạn thư trong khung mới';
$labels['htmleditor'] = 'Soạn thư dạng HTML';
$labels['htmlonreply'] = 'Chỉ trả lời lại bằng thư HTML';
$labels['htmlonreplyandforward'] = 'Khi chuyển tiếp hoặc trả lời thư theo định dạng HTML';
$labels['htmlsignature'] = 'Chữ ký HTML';
$labels['showemail'] = 'Hiển thị địa chỉ email kèm theo tên ';
$labels['previewpane'] = 'Hiển thị ô Xem thử';
$labels['skin'] = 'Bề mặt giao diện';
$labels['logoutclear'] = 'Xóa sạch rác khi thoát';
$labels['logoutcompact'] = 'Nén gọn hộp thư lại khi thoát';
$labels['uisettings'] = 'Giao diện người dùng';
$labels['serversettings'] = 'Thiết lập máy chủ';
$labels['mailboxview'] = 'Trình cảnh hộp thư';
$labels['mdnrequests'] = 'Yêu cầu gửi lại biên nhận';
$labels['askuser'] = 'Hỏi tôi';
$labels['autosend'] = 'Gửi biên nhận';
$labels['autosendknown'] = 'Gửi biên nhận tới liên lạc của tôi, nếu không thì hỏi tôi';
$labels['autosendknownignore'] = 'Gửi biên nhận tới liên lạc của tôi, nếu không thì bỏ qua';
$labels['readwhendeleted'] = 'Đánh dấu thư là đã đọc khi xóa';
$labels['flagfordeletion'] = 'Đánh dấu thư để xóa thay vì xóa liền';
$labels['skipdeleted'] = 'Không hiển thị thư đã xóa';
$labels['deletealways'] = 'Nếu việc chuyển thư vào thùng rác bị lỗi thì xóa luôn.';
$labels['deletejunk'] = 'Trực tiếp xóa các thư rác trong thùng Junk';
$labels['showremoteimages'] = 'Hiển thị ảnh nội tuyến từ xa';
$labels['fromknownsenders'] = 'Từ người gửi đã biết';
$labels['always'] = 'luôn luôn';
$labels['showinlineimages'] = 'Hiển thị ảnh đính kèm phía dưới thư';
$labels['autosavedraft'] = 'Tự động lưu bản nháp';
$labels['everynminutes'] = '$n phút một lần';
$labels['refreshinterval'] = 'Tải dữ liệu mới (ví dụ: kiểm tra thư mới)';
$labels['never'] = 'không bao giờ';
$labels['immediately'] = 'ngay lập tức';
$labels['messagesdisplaying'] = 'Đang hiển thị thư';
$labels['messagescomposition'] = 'Đang viết thư';
$labels['mimeparamfolding'] = 'Tên đính kèm';
$labels['2231folding'] = 'RFC 2231 đầy đủ (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 đầy đủ (khác)';
$labels['force7bit'] = 'Sử dụng MIME mã hóa cho ký tự 8-bit';
$labels['advancedoptions'] = 'Tùy chọn tính năng cao hơn';
$labels['focusonnewmessage'] = 'Tập trung khung cửa trình duyệt vào thư mới';
$labels['checkallfolders'] = 'Kiểm tra thư mới trong tất cả thư mục';
$labels['defaultfont'] = 'Phông chữ mặc định của thư có mã HTML';
$labels['mainoptions'] = 'Tùy chọn chính';
$labels['browseroptions'] = 'Tùy chọn Trình duyệt';
$labels['section'] = 'Phần';
$labels['maintenance'] = 'Bảo trì';
$labels['newmessage'] = 'Thư mới';
$labels['signatureoptions'] = 'Tuỳ chọn chữ ký';
$labels['whenreplying'] = 'Khi trả lời';
$labels['replyempty'] = 'Không mở/đóng ngoạc nội dung bản thư gốc';
$labels['replytopposting'] = 'Viết nội dung thư mới bên trên nội dung thư cũ';
$labels['replybottomposting'] = 'Viết nội dung thư mới bên dưới nội dung thư cũ';
$labels['replyremovesignature'] = 'Khi trả lời bỏ chữ ký cũ khỏi nội dung thư';
$labels['autoaddsignature'] = 'Tự động thêm chữ ký';
$labels['newmessageonly'] = 'chỉ thư mới';
$labels['replyandforwardonly'] = 'chỉ trả lời và chuyển tiếp thư';
$labels['insertsignature'] = 'Chèn chữ ký';
$labels['afternseconds'] = 'sau $n giây';
$labels['reqmdn'] = 'Luôn luôn yêu cầu biên nhận khi gửi thư';
$labels['reqdsn'] = 'Luôn yêu cầu xác nhận trạng thái thư cho người gửi';
$labels['replysamefolder'] = 'Đưa các thư phản hồi  vào cùng thư mục của thư đang trả lời';
$labels['defaultabook'] = 'Sổ địa chỉ mặc định';
$labels['autocompletesingle'] = 'Bỏ qua địa chỉ email thay thế trong năng tự động gõ';
$labels['listnamedisplay'] = 'Hiện thị danh sách liên lạc như là';
$labels['spellcheckbeforesend'] = 'Kiểm tra chính tả trước khi gửi thư';
$labels['spellcheckoptions'] = 'Tùy chọn kiểm tra chính tả';
$labels['spellcheckignoresyms'] = 'Bỏ qua từ kèm biểu tượng';
$labels['spellcheckignorenums'] = 'Bỏ qua các từ kèm số';
$labels['spellcheckignorecaps'] = 'Bỏ qua các từ được viết hoa';
$labels['addtodict'] = 'Thêm vào từ điển';
$labels['mailtoprotohandler'] = 'Xác định cách xử lý giao thức mailto: liên kết';
$labels['standardwindows'] = 'Mở các popup như là các cửa sổ thông thường';
$labels['forwardmode'] = 'Chuyển tiếp thư';
$labels['inline'] = 'nội tuyến';
$labels['asattachment'] = 'dạng gửi kèm';
$labels['replyallmode'] = 'Thao tác mặc định cho nút [Trả lời tất cả]';
$labels['replyalldefault'] = 'Trả lời tất cả';
$labels['replyalllist'] = 'Chỉ gửi trả lời đến danh sách thư (nếu có tồn tại)';
$labels['allmessages'] = 'Tất cả tin nhắn';
$labels['folder'] = 'Thư mục';
$labels['folders'] = 'Các thư mục';
$labels['foldername'] = 'Tên thư mục';
$labels['subscribed'] = 'Đã đăng ký';
$labels['messagecount'] = 'Các tin nhắn';
$labels['create'] = 'Tạo';
$labels['createfolder'] = 'Tạo thư mục mới';
$labels['managefolders'] = 'Quản lý các thư mục';
$labels['specialfolders'] = 'Thư mục đặc biệt';
$labels['properties'] = 'Các thuộc tính';
$labels['folderproperties'] = 'Thuộc tính thư mục';
$labels['parentfolder'] = 'Thư mục cha';
$labels['location'] = 'Địa điểm';
$labels['info'] = 'Thông tin';
$labels['getfoldersize'] = 'Nhấp chuột để xem kích thước thư mục';
$labels['changesubscription'] = 'Nhấp chuột để đổi cách đóng góp';
$labels['foldertype'] = 'Kiểu thư mục';
$labels['personalfolder'] = 'Thư mục cá nhân';
$labels['otherfolder'] = 'Thư mục khác của Người dùng';
$labels['sharedfolder'] = 'Thư mục công khai';
$labels['findfolders'] = 'Tìm các thư mục';
$labels['namespace.personal'] = 'Cá nhân';
$labels['namespace.other'] = 'Các người dùng khác';
$labels['namespace.shared'] = 'Đã chia sẻ';
$labels['sortby'] = 'Soạn theo';
$labels['sortasc'] = 'Soạn tăng dần';
$labels['sortdesc'] = 'Soạn giảm dần';
$labels['undo'] = 'Hoàn lại';
$labels['installedplugins'] = 'Các chương trình phụ trợ đã được cài đặt';
$labels['plugin'] = 'Phần bổ sung';
$labels['version'] = 'Phiên bản';
$labels['source'] = 'Nguồn';
$labels['license'] = 'Bản quyền';
$labels['support'] = 'Yêu cầu hỗ trợ';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Tiếng Anh';
$labels['westerneuropean'] = 'Tiếng Tây Âu';
$labels['easterneuropean'] = 'Tiếng Đông Âu';
$labels['southeasterneuropean'] = 'Tiếng Đông-Nam Âu';
$labels['baltic'] = 'Tiếng Ban-tích (Ấn-Âu)';
$labels['cyrillic'] = 'Tiếng Ki-rin';
$labels['arabic'] = 'Tiếng Ả Rập';
$labels['greek'] = 'Tiếng Hy Lạp';
$labels['hebrew'] = 'Tiếng Do Thái';
$labels['turkish'] = 'Tiếng Thổ Nhĩ Kỳ';
$labels['nordic'] = 'Tiếng Bắc Âu';
$labels['thai'] = 'Tiếng Thái Lan';
$labels['celtic'] = 'Tiếng Xen-tơ';
$labels['vietnamese'] = 'Tiếng Việt';
$labels['japanese'] = 'Tiếng Nhật';
$labels['korean'] = 'Tiếng Hàn';
$labels['chinese'] = 'Tiếng Hoa';
$labels['arialabeltopnav'] = 'Điều khiển cửa sổ';
$labels['arialabelmailpreviewframe'] = 'Xem trước thư';
$labels['arialabelmessagebody'] = 'Nội dung thư';
$labels['arialabelforwardingoptions'] = 'Các lựa chọn chuyển tiếp thư';
$labels['arialabelreplyalloptions'] = 'Các lựa chọn trả lời tất cả';
$labels['arialabelmarkmessagesas'] = 'Đánh dấu thư đã chọn như...';
$labels['arialabelattachmentpreview'] = 'Xem trước tệp tin đính kèm';
localization/vi_VN/messages.inc000064400000031663151727150600012574 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Có lỗi xảy ra.';
$messages['loginfailed']  = 'Không đăng nhập được';
$messages['cookiesdisabled'] = 'Trình duyệt không hỗ trợ cookies';
$messages['sessionerror'] = 'Phiên làm việc không hợp lệ hoặc đã hết hạn';
$messages['storageerror'] = 'Không kết nối được với máy chủ.';
$messages['servererror'] = 'Lỗi máy chủ';
$messages['servererrormsg'] = 'Lỗi máy chủ: $msg';
$messages['connerror'] = 'Lỗi kết nối (không kết nối được đến máy chủ)';
$messages['dberror'] = 'Lỗi cơ sở dữ liệu';
$messages['windowopenerror'] = 'Cửa sổ thông tin bật lên bị chặn';
$messages['requesttimedout'] = 'Yêu cầu hết  hạn';
$messages['errorreadonly'] = 'Không thể thực hiện thao tác. Thư mục chỉ cho phép đọc.';
$messages['errornoperm'] = 'Bạn không đủ quyền hạn để thực hiện thao tác này.';
$messages['erroroverquota'] = 'Không thể thực hiện thao tác do không còn đủ chỗ trống trên ổ đĩa.';
$messages['erroroverquotadelete'] = 'Không còn dư chỗ trống trên ổ đĩa. Sử dụng tổ hợp phím SHIFT+DEL để xoá thư.';
$messages['invalidrequest'] = 'Yêu cầu không hợp lệ! Không có dữ liệu nào được lưu.';
$messages['invalidhost'] = 'Sai thông tin tên máy chủ';
$messages['nomessagesfound'] = 'Không thấy có thư nào trong hộp thư này.';
$messages['mailboxempty'] = 'Hộp thư rỗng';
$messages['nomessages'] = 'Không có thư nào';
$messages['refreshing'] = 'Nạp lại dữ liệu...';
$messages['loading'] = 'Đang tải...';
$messages['uploading'] = 'Đang tải tập tin lên...';
$messages['uploadingmany'] = 'Đang tải các tập tin lên...';
$messages['loadingdata'] = 'Đang nạp dữ liệu...';
$messages['checkingmail'] = 'Kiểm tra thư mới...';
$messages['sendingmessage'] = 'Đang gửi thư...';
$messages['messagesent'] = 'Thư đã được gửi thành công.';
$messages['savingmessage'] = 'Đang lưu thư...';
$messages['messagesaved'] = 'Thư đã được lưu lại vào hộp thư Nháp.';
$messages['successfullysaved'] = 'Đã lưu thành công';
$messages['savingresponse'] = 'Đang lưu thông tin...';
$messages['deleteresponseconfirm'] = 'Bạn có thực sự muốn xoá thông tin này?';
$messages['addedsuccessfully'] = 'Liên hệ đã được thêm vào sổ địa chỉ thành công.';
$messages['contactnameexists'] = 'Đã có một liên hệ có tên như thế này.';
$messages['blockedimages'] = 'Để bảo vệ tính riêng tư, chức năng hiện ảnh từ xa bị cấm trong thư này.';
$messages['encryptedmessage'] = 'Thư này được mã hóa, không thể xem. Rất tiếc!';
$messages['nocontactsfound'] = 'Không tìm thấy liên hệ.';
$messages['contactnotfound'] = 'Không tìm thấy liên lạc được yêu cầu';
$messages['sendingfailed'] = 'Không gửi được thư';
$messages['senttooquickly'] = 'Xin đợi vài giây trước khi gửi thư này';
$messages['errorsavingsent'] = 'Có lỗi xảy ra khi lưu lại thư đã gửi.';
$messages['errorsaving'] = 'Lỗi trong quá trình lưu.';
$messages['errormoving'] = 'Không thể chuyển được thư';
$messages['errorcopying'] = 'Không thể sao chép thư';
$messages['errordeleting'] = 'Không thể xóa được thư';
$messages['errormarking'] = 'Không thể đánh dấu (các) thư';
$messages['deletecontactconfirm']  = 'Bạn có thực sự muốn xoá liên hệ đã chọn?';
$messages['deletegroupconfirm']  = 'Bạn có thực sự muốn xóa nhóm đã chọn?';
$messages['deletemessagesconfirm'] = 'Bạn thực sự có muốn xóa (các) thư đã chọn?';
$messages['deletefolderconfirm']  = 'Bạn có thực sự muốn xóa giữ liệu này?';
$messages['purgefolderconfirm']  = 'Bạn có thực sự muốn xóa toàn bộ thư trong giữ liệu này?';
$messages['contactdeleting'] = 'Đang xóa (các) liên lạc...';
$messages['groupdeleting'] = 'Đang xóa nhóm...';
$messages['folderdeleting'] = 'Đang xóa giữ liệu...';
$messages['foldermoving'] = 'Đang chuyển giữ liệu...';
$messages['foldersubscribing'] = 'Nhập vào giữ liệu...';
$messages['folderunsubscribing'] = 'Không nhập giữ liệu...';
$messages['formincomplete'] = 'Mẫu đơn chưa được hoàn toàn điền xong.';
$messages['noemailwarning'] = 'Xin nhập địa chỉ email hợp lệ.';
$messages['nonamewarning']  = 'Xin nhập tên.';
$messages['nopagesizewarning'] = 'Xin nhập kích cỡ của trang.';
$messages['norecipientwarning'] = 'Xin nhập it nhất 1 người nhận.';
$messages['nosubjectwarning']  = 'Mục "Tiêu đề" vẫn còn trống. Bạn có muốn nhập tiêu đề bây giờ không?';
$messages['nobodywarning'] = 'Gửi thư không có nội dung?';
$messages['restoresavedcomposedata'] = 'Tìm thấy một thư đã được soạn trước nhưng chưa gửi.\n\nTiêu đề: $subject\nLưu ngày: $date\n\nBạn có muốn khôi phục lại thư này?';
$messages['nosearchname'] = 'Nhập liên hệ hoặc địa chỉ email.';
$messages['notuploadedwarning'] = 'Tất cả các đính kèm vẫn chưa được tải lên hết. Xin đợi hoặc hủy việc tải lên.';
$messages['searchsuccessful'] = '$nr thư đã tìm được.';
$messages['contactsearchsuccessful'] = '$nr liên hệ đã tìm được.';
$messages['searchnomatch'] = 'Không tìm thấy sự trùng hợp nào.';
$messages['searching'] = 'Đang tìm kiếm...';
$messages['checking'] = 'Đang kiểm tra...';
$messages['stillsearching'] = 'Đang tiếp tục tìm kiếm...';
$messages['nospellerrors'] = 'Không tìm thấy lỗi chính tả.';
$messages['folderdeleted'] = 'Giữ liệu đã được xóa thành công.';
$messages['foldersubscribed'] = 'Giữ liệu được nhập vào thành công.';
$messages['folderunsubscribed'] = 'Giữ liệu không nhập vào thành công.';
$messages['deletedsuccessfully'] = 'Đã xóa thành công';
$messages['converting'] = 'Loại bỏ định dạng...';
$messages['messageopenerror'] = 'Không thể tải thư từ máy chủ';
$messages['fileuploaderror'] = 'Tải tập tin lên thất bại';
$messages['filesizeerror'] = 'Tập tin được tải lên vượt quá dung lượng tối đa....';
$messages['copysuccess'] = 'Sao chép thành công $nr địa chỉ.';
$messages['movesuccess'] = 'Đã chuyển thành công $nr địa chỉ liên hệ.';
$messages['copyerror'] = 'Không thể sao chép địa chỉ liên hệ nào.';
$messages['moveerror'] = 'Không thể chuyển địa chỉ liên hệ nào.';
$messages['sourceisreadonly'] = 'Nguồn địa chỉ này chỉ cho đọc';
$messages['errorsavingcontact'] = 'Không thể lưu địa chỉ liên lạc';
$messages['movingmessage'] = 'Đang chuyển thư...';
$messages['copyingmessage'] = 'Đang sao chép thư...';
$messages['copyingcontact'] = 'Đang sao chép liên lạc...';
$messages['movingcontact'] = 'Đang chuyển (các) địa chỉ liên hệ...';
$messages['deletingmessage'] = 'Đang xóa thư...';
$messages['markingmessage'] = 'Đánh dấu thư...';
$messages['addingmember'] = 'Đang thêm liên lạc vào nhóm...';
$messages['removingmember'] = 'Đang xóa liên lạc từ nhóm...';
$messages['receiptsent'] = 'Biên nhận đọc đã được gửi thành công.';
$messages['errorsendingreceipt'] = 'Không thể gửi ghi nhận';
$messages['deleteidentityconfirm'] = 'Bạn có thực sự muốn xóa nhận diện này?';
$messages['nodeletelastidentity'] = 'Bạn không thể xóa nhận diện này, đó là cái cuối cùng của bạn.';
$messages['forbiddencharacter'] = 'Tên giữ liệu chứa một ký tự bị cấm.';
$messages['selectimportfile'] = 'Xin chọn hồ sơ để tải lên.';
$messages['addresswriterror'] = 'Sổ địa chỉ đã chọn không thể viết lại được';
$messages['contactaddedtogroup'] = 'Thêm liên lạc vào nhóm này thành công';
$messages['contactremovedfromgroup'] = 'Xóa liên lạc khỏi nhóm này thành công';
$messages['nogroupassignmentschanged'] = 'Không quy nhóm nào đả được thay đổi';
$messages['importwait'] = 'Đang nhập, xin chờ...';
$messages['importformaterror'] = 'Nhập dữ liệu lỗi. Tệp tin vừa tải lên không phải tệp dữ liệu chính xác.';
$messages['importconfirm'] = 'Đã nhập $inserted liên hệ đã chèn vào thành công.';
$messages['importconfirmskipped'] = 'Đã bỏ qua được $skipped mục tồn tại.';
$messages['importmessagesuccess'] = 'Đã nhập thành công $nr thư.';
$messages['importmessageerror'] = 'Nhập dữ liệu bị lỗi. Tệp tin vừa tải lên không có định dạng chính xác của tệp cấu hình hòm thư hoặc một thư đơn lẻ.';
$messages['opnotpermitted'] = 'Thao tác không được cho phép!';
$messages['editorwarning'] = 'Việc chuyển công cụ soạn thảo có thể làm mất định dạng dữ liệu. Bạn có muốn tiếp tục không?';
$messages['httpreceivedencrypterror'] = 'Xuất hiện một lỗi cấu hình  tai hại. Hãy liên hệ với người quản trị ngay. <b> Thư của bạn không thể gửi được </b>';
$messages['smtpconnerror'] = 'Lỗi SMTP ($code): Kết nỗi tới máy chủ bị lỗi.';
$messages['smtpautherror'] = 'Lỗi SMTP ($code): Xác thực thất bại.';
$messages['smtpfromerror'] = 'Lỗi SMTP ($code):  Không thể bố trí người gửi "$from" ($msg).';
$messages['smtptoerror'] = 'Lỗi SMTP ($code):  Không thể bố trí người nhận "$to" ($msg).';
$messages['smtprecipientserror'] = 'Lỗi SMTP: không thể phân loại danh sách người nhận';
$messages['smtperror'] = 'Lỗi SMTP: $msg';
$messages['toomanyrecipients'] = 'Quá nhiều người nhận. Hãy giảm số lượng người nhận xuống tối đa là $max.';
$messages['maxgroupmembersreached'] = 'Số lượng thành viên trong nhóm vượt quá mức tối đa là $max.';
$messages['internalerror'] = 'Xuất hiện một lỗi nội bộ. Xin hãy thử lại';
$messages['contactdelerror'] = 'Không thể xóa liên lạc';
$messages['contactdeleted'] = 'Liên lạc được xóa thành công';
$messages['contactrestoreerror'] = 'Không thể khôi phục liên lạc đã xóa';
$messages['contactrestored'] = 'Liên lạc được khôi phục thành công';
$messages['groupdeleted'] = 'Nhóm được xóa thành công';
$messages['grouprenamed'] = 'Nhóm được đặt tên lại thành công';
$messages['groupcreated'] = 'Nhóm được tạo thành công';
$messages['savedsearchdeleted'] = 'Tìm kiếm đã lưu được xóa thành công';
$messages['savedsearchdeleteerror'] = 'Không thể xóa tìm kiếm đã lưu';
$messages['savedsearchcreated'] = 'Tìm kiếm đã lưu được tạo thành công';
$messages['savedsearchcreateerror'] = 'Không thể tạo tìm kiếm đã lưu';
$messages['messagedeleted'] = 'Thư được xóa thành công';
$messages['messagemoved'] = 'Thư được chuyển đi thành công';
$messages['messagecopied'] = 'Thư được sao chép thành công';
$messages['messagemarked'] = 'Thư được đánh dấu thành công';
$messages['autocompletechars'] = 'Phải nhập ít nhất $min ký tự để năng tự động gõ';
$messages['autocompletemore'] = 'Nhiều dữ liệu phù hợp hơn được tìm thấy. Hãy gõ thêm  ký tự.';
$messages['namecannotbeempty'] = 'Tên không được để trống';
$messages['nametoolong'] = 'Tên quá dài';
$messages['folderupdated'] = 'Giữ liệu được cập nhật thành công';
$messages['foldercreated'] = 'Giữ liệu được tạo thành công';
$messages['invalidimageformat'] = 'Không phải là định dạng ảnh hợp lệ.';
$messages['mispellingsfound'] = 'Lỗi chính tả được phát hiện trong thư';
$messages['parentnotwritable'] = 'Không thể tạo/chuyển folder vào folder gốc đã chọn. Không có quyền truy cập.';
$messages['messagetoobig'] = 'Một phần thư quá lớn để xử lý nó.';
$messages['noscriptwarning'] = 'Cảnh báo: Dịch vụ webmail này yêu cầu sử dụng Javascript. Để sử dụng, bạn cần kích hoạt hỗ trợ Javascript trong cấu hình trình duyệt Internet đang sử dụng.';
localization/hr_HR/labels.inc000064400000052067151727150600012211 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Dobrodošli na $product';
$labels['username'] = 'Korisničko ime';
$labels['password'] = 'Lozinka';
$labels['server'] = 'Poslužitelj';
$labels['login'] = 'Prijava';
$labels['logout'] = 'Odjava';
$labels['mail'] = 'Pošta';
$labels['settings'] = 'Postavke';
$labels['addressbook'] = 'Imenik';
$labels['inbox'] = 'Pristigla pošta';
$labels['drafts'] = 'Predlošci';
$labels['sent'] = 'Poslano';
$labels['trash'] = 'Smeće';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Prikaži prava imena specijalnih mapa';
$labels['subject'] = 'Naslov';
$labels['from'] = 'Od';
$labels['sender'] = 'Pošiljatelj';
$labels['to'] = 'Za';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Odgovori';
$labels['followupto'] = 'Nastavi-na';
$labels['date'] = 'Datum';
$labels['size'] = 'Veličina';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Pročitano';
$labels['listoptions'] = 'Opcije lista...';
$labels['mailboxlist'] = 'Mape';
$labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
$labels['messagenrof'] = 'Poruka broj $nr od $count';
$labels['fromtoshort'] = '$from - $to od $count';
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premjesti';
$labels['moveto'] = 'Premjesti u...';
$labels['copyto'] = 'Kopiraj u...';
$labels['download'] = 'Preuzmi (download)';
$labels['open'] = 'Otvori';
$labels['showattachment'] = 'Prikaži';
$labels['showanyway'] = 'Prikaži svejedno';
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'Veličina datoteke';
$labels['addtoaddressbook'] = 'Dodaj u imenik';
$labels['sun'] = 'Ned';
$labels['mon'] = 'Pon';
$labels['tue'] = 'Uto';
$labels['wed'] = 'Sri';
$labels['thu'] = 'Čet';
$labels['fri'] = 'Pet';
$labels['sat'] = 'Sub';
$labels['sunday'] = 'Nedjelja';
$labels['monday'] = 'Ponedjeljak';
$labels['tuesday'] = 'Utorak';
$labels['wednesday'] = 'Srijeda';
$labels['thursday'] = 'Četvrtak';
$labels['friday'] = 'Petak';
$labels['saturday'] = 'Subota';
$labels['jan'] = 'Sij';
$labels['feb'] = 'Velj';
$labels['mar'] = 'Ožu';
$labels['apr'] = 'Tra';
$labels['may'] = 'Svi';
$labels['jun'] = 'Lip';
$labels['jul'] = 'Srp';
$labels['aug'] = 'Kol';
$labels['sep'] = 'Ruj';
$labels['oct'] = 'Lis';
$labels['nov'] = 'Stu';
$labels['dec'] = 'Pro';
$labels['longjan'] = 'Siječanj';
$labels['longfeb'] = 'Veljača';
$labels['longmar'] = 'Ožujak';
$labels['longapr'] = 'Travanj';
$labels['longmay'] = 'Svibanj';
$labels['longjun'] = 'Lipanj';
$labels['longjul'] = 'Srpanj';
$labels['longaug'] = 'Kolovoz';
$labels['longsep'] = 'Rujan';
$labels['longoct'] = 'Listopad';
$labels['longnov'] = 'Studeni';
$labels['longdec'] = 'Prosinac';
$labels['today'] = 'Danas';
$labels['refresh'] = 'Osvježi';
$labels['checkmail'] = 'Provjera novih poruka';
$labels['compose'] = 'Nova poruka';
$labels['writenewmessage'] = 'Stvori novu poruku';
$labels['reply'] = 'Odgovori';
$labels['replytomessage'] = 'Odgovori pošiljatelju';
$labels['replytoallmessage'] = 'Odgovori listi ili pošiljatelju i svim primateljima';
$labels['replyall'] = 'Odgovori svima';
$labels['replylist'] = 'Odgovori listi';
$labels['forward'] = 'Proslijedi';
$labels['forwardinline'] = 'Proslijedi umetnuto';
$labels['forwardattachment'] = 'Proslijedi kao privitak';
$labels['forwardmessage'] = 'Proslijedi poruku';
$labels['deletemessage'] = 'Obriši poruku';
$labels['movemessagetotrash'] = 'Preseli poruke u smeće';
$labels['printmessage'] = 'Ispiši ovu poruku';
$labels['previousmessage'] = 'Prikaži prethodnu poruku';
$labels['firstmessage'] = 'Prikaži prvu poruku';
$labels['nextmessage'] = 'Prikaži slijedeću poruku';
$labels['lastmessage'] = 'Prikaži zadnju poruku';
$labels['backtolist'] = 'Povratak na listu poruka';
$labels['viewsource'] = 'Prikaži poruku u izvornom obliku';
$labels['mark'] = 'Označi';
$labels['markmessages'] = 'Označi poruke';
$labels['markread'] = 'Kao pročitano';
$labels['markunread'] = 'Kao nepročitano';
$labels['markflagged'] = 'Kao označeno';
$labels['markunflagged'] = 'Kao neoznačeno';
$labels['moreactions'] = 'Više akcija...';
$labels['folders-all'] = 'Sve mape';
$labels['more'] = 'Više';
$labels['back'] = 'Natrag';
$labels['options'] = 'Postavke';
$labels['actions'] = 'Radnje';
$labels['select'] = 'Odaberi';
$labels['all'] = 'Sve';
$labels['none'] = 'Ništa';
$labels['currpage'] = 'Trenutna stranica';
$labels['isread'] = 'Čitanje';
$labels['unread'] = 'Nepročitano';
$labels['flagged'] = 'Označeno';
$labels['unanswered'] = 'Neodgovoreno';
$labels['withattachment'] = 'S privitkom';
$labels['deleted'] = 'Obrisano';
$labels['undeleted'] = 'Neobrisano';
$labels['invert'] = 'Obrni';
$labels['filter'] = 'Filtriraj';
$labels['list'] = 'Lista';
$labels['threads'] = 'Teme';
$labels['expand-all'] = 'Proširi sve';
$labels['expand-unread'] = 'Proširi nepročitano';
$labels['collapse-all'] = 'Zatvori sve';
$labels['threaded'] = 'Tematski prikaz';
$labels['autoexpand_threads'] = 'Proširi teme poruka';
$labels['do_expand'] = 'sve teme';
$labels['expand_only_unread'] = 'samo s nepročitanim porukama';
$labels['fromto'] = 'Pošiljatelj/Primatelj';
$labels['flag'] = 'Oznaka';
$labels['attachment'] = 'Privitak';
$labels['nonesort'] = 'Ništa';
$labels['sentdate'] = 'Datum slanja';
$labels['arrival'] = 'Datum primitka';
$labels['asc'] = 'uzlazno';
$labels['desc'] = 'silazno';
$labels['listcolumns'] = 'Stupci';
$labels['listsorting'] = 'Sortirajući stupac';
$labels['listorder'] = 'Redoslijed sortiranja';
$labels['listmode'] = 'Model pregleda listi';
$labels['layoutlist'] = 'Lista';
$labels['folderactions'] = 'Akcije mapa...';
$labels['compact'] = 'Kompresiraj (sažmi)';
$labels['empty'] = 'Isprazni';
$labels['importmessages'] = 'Uvoz poruka';
$labels['quota'] = 'Iskorištenost diska';
$labels['unknown'] = 'nepoznato';
$labels['unlimited'] = 'neograničeno';
$labels['quicksearch'] = 'Brza pretraga';
$labels['resetsearch'] = 'Vrati pretragu u početno stanje';
$labels['searchmod'] = 'Postavke pretrage';
$labels['msgtext'] = 'Cijela poruka';
$labels['body'] = 'Tijelo poruke';
$labels['type'] = 'Tip';
$labels['namex'] = 'Ime';
$labels['searchscope'] = 'Djelokrug';
$labels['currentfolder'] = 'Trenutna mapa';
$labels['subfolders'] = 'Ovo i podmape';
$labels['allfolders'] = 'Sve mape';
$labels['openinextwin'] = 'Otvori u novom prozoru';
$labels['emlsave'] = 'Preuzmi (.eml)';
$labels['changeformattext'] = 'Prikaži kao običan tekst';
$labels['changeformathtml'] = 'Prikaži kao HTML';
$labels['editasnew'] = 'Uredi kao novo';
$labels['send'] = 'Pošalji';
$labels['sendmessage'] = 'Pošalji poruku';
$labels['savemessage'] = 'Spremi kao predložak';
$labels['addattachment'] = 'Priloži datoteku';
$labels['charset'] = 'Kodna stranica';
$labels['editortype'] = 'Tip uređivača teksta';
$labels['returnreceipt'] = 'Potvrda o primitku poruke';
$labels['dsn'] = 'Obavijest o statusu isporuke';
$labels['mailreplyintro'] = 'Dana $date, $sender je napisao(la):';
$labels['originalmessage'] = 'Izvorna poruka';
$labels['encrypt'] = 'Šifriraj';
$labels['keyid'] = 'ID ključa';
$labels['insert'] = 'Umetni';
$labels['recipient'] = 'Primatelj';
$labels['editidents'] = 'Uredi identitete';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Provjera pravopisa';
$labels['resumeediting'] = 'Nastavi uređivanje';
$labels['revertto'] = 'Vrati na';
$labels['restore'] = 'Povrat';
$labels['restoremessage'] = 'Povrat poruke?';
$labels['ignore'] = 'Zanemari';
$labels['responses'] = 'Odgovori';
$labels['insertresponse'] = 'Umetni odgovor';
$labels['manageresponses'] = 'Upravljanje odgovorima';
$labels['editresponse'] = 'Uredi odgovor';
$labels['editresponses'] = 'Uredi odgovore';
$labels['responsename'] = 'Naziv';
$labels['responsetext'] = 'Tekst odgovora';
$labels['attach'] = 'Priloži';
$labels['attachments'] = 'Privitci (Attachments)';
$labels['upload'] = 'Dodaj';
$labels['close'] = 'Zatvori';
$labels['messageoptions'] = 'Postavke poruka...';
$labels['low'] = 'Nizak';
$labels['lowest'] = 'Najniži';
$labels['normal'] = 'Srednji';
$labels['high'] = 'Visok';
$labels['highest'] = 'Najviši';
$labels['nosubject'] = '(bez naslova)';
$labels['showimages'] = 'Prikaži slike';
$labels['alwaysshow'] = 'Uvijek prikaži slike od $sender';
$labels['isdraft'] = 'Ova poruka je predložak.';
$labels['andnmore'] = '$nr više...';
$labels['togglemoreheaders'] = 'Prikaži još zaglavlja poruke';
$labels['togglefullheaders'] = 'Prikaži neuređena zaglavlja poruke';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Samo tekst';
$labels['savesentmessagein'] = 'Spremi poslane poruke u';
$labels['dontsave'] = 'ne spremaj';
$labels['maxuploadsize'] = 'Maksimalna dozvoljena veličina datoteke je $size';
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj Odgovori-na';
$labels['addfollowupto'] = 'Dodaj Nastavak-na';
$labels['mdnrequest'] = 'Pošiljatelj ove poruke je tražio da bude obaviješten o njenom primitku. Želite li obavijestiti pošiljatelja?';
$labels['receiptread'] = 'Potvrda o primitku (pročitano)';
$labels['yourmessage'] = 'Ovo je potvrda o primitku vaše poruke';
$labels['receiptnote'] = 'Info: Ova poruka o primitku samo potvrđuje da se poruka prikazala na računalu primatelja. Nema garancije da je primatelj pročitao ili razumio sadržaj poruke.';
$labels['name'] = 'Puno ime';
$labels['firstname'] = 'Ime';
$labels['surname'] = 'Prezime';
$labels['middlename'] = 'Srednje ime';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Sufiks';
$labels['nickname'] = 'Nadimak';
$labels['jobtitle'] = 'Titula';
$labels['department'] = 'Odjel';
$labels['gender'] = 'Spol';
$labels['maidenname'] = 'Djevojačko prezime';
$labels['email'] = 'E-mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresa';
$labels['street'] = 'Ulica';
$labels['locality'] = 'Grad';
$labels['zipcode'] = 'Poštanski broj';
$labels['region'] = 'Oblast';
$labels['country'] = 'Država';
$labels['birthday'] = 'Rođendan';
$labels['anniversary'] = 'Godišnjica';
$labels['website'] = 'Web stranica';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Bilješke';
$labels['male'] = 'muško';
$labels['female'] = 'žensko';
$labels['manager'] = 'Menadžer';
$labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Suprug/a';
$labels['allfields'] = 'Sva polja';
$labels['search'] = 'Pretraga';
$labels['advsearch'] = 'Napredna pretraga';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
$labels['typehome'] = 'Kuća';
$labels['typework'] = 'Posao';
$labels['typeother'] = 'Ostalo';
$labels['typemobile'] = 'Mobitel';
$labels['typemain'] = 'Glavni';
$labels['typehomefax'] = 'Fax kuća';
$labels['typeworkfax'] = 'Fax posao';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pejdžer';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Početna stranica';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj polje...';
$labels['addcontact'] = 'Dodaj kontakt';
$labels['editcontact'] = 'Uredi kontakt';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Svojstva kontakta';
$labels['personalinfo'] = 'Osobni podaci';
$labels['edit'] = 'Uredi';
$labels['cancel'] = 'Odustani';
$labels['save'] = 'Spremi';
$labels['delete'] = 'Obriši';
$labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamijeni';
$labels['uploadphoto'] = 'Postavi fotografiju';
$labels['deletecontact'] = 'Obriši odabrane kontakte';
$labels['composeto'] = 'Napiši mail za';
$labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
$labels['print'] = 'Ispis';
$labels['export'] = 'Izvoz';
$labels['exportall'] = 'Izvezi sve';
$labels['exportsel'] = 'Izvezi odabrano';
$labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
$labels['grouprename'] = 'Preimenuj grupu';
$labels['groupdelete'] = 'Obriši grupu';
$labels['groupremoveselected'] = 'Obriši odabrane kontakte iz grupe ';
$labels['previouspage'] = 'Prethodna strana';
$labels['firstpage'] = 'Prva strana';
$labels['nextpage'] = 'Slijedeća strana';
$labels['lastpage'] = 'Zadnja strana';
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupe';
$labels['listgroup'] = 'Prikaži članove grupe';
$labels['personaladrbook'] = 'Privatna adresa';
$labels['searchsave'] = 'Spremi pretragu';
$labels['searchdelete'] = 'Obriši pretragu';
$labels['import'] = 'Uvoz';
$labels['importcontacts'] = 'Uvoz kontakta';
$labels['importfromfile'] = 'Uvezi iz datoteke';
$labels['importtarget'] = 'Dodaj kontakte u';
$labels['importreplace'] = 'Prepiši cijeli imenik';
$labels['importgroups'] = 'Uvezi zadatke grupe';
$labels['importgroupsall'] = 'Sve (stvori grupe ako je potrebno)';
$labels['importgroupsexisting'] = 'Samo za postojeće grupe';
$labels['done'] = 'Završeno';
$labels['settingsfor'] = 'Postavke za';
$labels['about'] = 'O programu';
$labels['preferences'] = 'Postavke';
$labels['userpreferences'] = 'Korisničke postavke';
$labels['editpreferences'] = 'Uredi korisničke postavke';
$labels['identities'] = 'Identiteti';
$labels['manageidentities'] = 'Upravljanje identitetima';
$labels['newidentity'] = 'Stvori novi identitet';
$labels['addidentity'] = 'Dodaj identitet';
$labels['identityencryption'] = 'Šifriranje';
$labels['preferhtml'] = 'Prikaži HTML';
$labels['defaultcharset'] = 'Zadana kodna stranica';
$labels['htmlmessage'] = 'HTML format poruke';
$labels['messagepart'] = 'Dio';
$labels['digitalsig'] = 'Digitalni potpis';
$labels['dateformat'] = 'Format datuma';
$labels['timeformat'] = 'Format vremena';
$labels['prettydate'] = 'Formatirani datum';
$labels['setdefault'] = 'Postavi zadano';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Jezik';
$labels['timezone'] = 'Vremenska zona';
$labels['pagesize'] = 'Redaka po stranici';
$labels['signature'] = 'Potpis';
$labels['dstactive'] = 'Ljetno/zimsko računanje vremena';
$labels['showinextwin'] = 'Otvori poruku u novom prozoru';
$labels['composeextwin'] = 'Sastavi poruku u novom prozoru';
$labels['htmleditor'] = 'Sastavi poruke u HTML formatu';
$labels['htmlonreply'] = 'pri odgovaranju na HTML poruku';
$labels['htmlonreplyandforward'] = 'pri prosljeđivanju ili odgovaranju na HTML poruku';
$labels['htmlsignature'] = 'HTML potpis';
$labels['showemail'] = 'Prikaži e-mail adresu s imenom';
$labels['previewpane'] = 'Prikaži područje pregleda';
$labels['skin'] = 'Tema sučelja';
$labels['logoutclear'] = 'Očisti smeće pri odjavi';
$labels['logoutcompact'] = 'Sažmi Inbox pri odjavi';
$labels['uisettings'] = 'Korisničko sučelje';
$labels['serversettings'] = 'Postavke poslužitelja';
$labels['mailboxview'] = 'Pregled sandučića';
$labels['mdnrequests'] = 'na zahtjev za potvrdom primitka';
$labels['askuser'] = 'pitaj me';
$labels['autosend'] = 'pošalji potvrdu';
$labels['autosendknown'] = 'pošalji potvrdu ako je pošiljatelj u mom imeniku, u suprotnom me pitaj';
$labels['autosendknownignore'] = 'pošalji potvrdu ako je pošiljatelj u mom imeniku, u suprotnom zanemari';
$labels['readwhendeleted'] = 'Označi poruku kao pročitanu pri brisanju';
$labels['flagfordeletion'] = 'Označi poruku za brisanje umjesto brisanja';
$labels['skipdeleted'] = 'Ne prikazuj obrisane poruke';
$labels['deletealways'] = 'Ukoliko premještanje poruka u mapu smeće ne uspije, izbriši poruku';
$labels['deletejunk'] = 'Odmah obriši poruke u mapi Smeće';
$labels['showremoteimages'] = 'Prikaži umetnute slike s interneta';
$labels['fromknownsenders'] = 'od poznatih pošiljatelja';
$labels['always'] = 'uvijek';
$labels['showinlineimages'] = 'Prikaži slike iz privitka ispod poruke';
$labels['autosavedraft'] = 'Automatski spremi predložak';
$labels['everynminutes'] = 'svakih $n minuta';
$labels['refreshinterval'] = 'Osvježi (provjeri nove poruke, itd.)';
$labels['never'] = 'nikad';
$labels['immediately'] = 'odmah';
$labels['messagesdisplaying'] = 'Prikaz poruka';
$labels['messagescomposition'] = 'Sastavljanje poruka';
$labels['mimeparamfolding'] = 'Nazivi privitaka';
$labels['2231folding'] = 'Prema RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Prema RFC 2047 (ostali)';
$labels['force7bit'] = 'Koristi MIME kodiranje za 8-bitne znakove';
$labels['advancedoptions'] = 'Napredne postavke';
$labels['focusonnewmessage'] = 'Fokusiraj prozor preglednika pri primitku nove poruke';
$labels['checkallfolders'] = 'Provjeri nove poruke u svim mapama';
$labels['defaultfont'] = 'Zadani font HTML poruke';
$labels['mainoptions'] = 'Glavne postavke';
$labels['browseroptions'] = 'Postavke preglednika';
$labels['section'] = 'Odjeljak';
$labels['maintenance'] = 'Održavanje';
$labels['newmessage'] = 'Nova poruka';
$labels['signatureoptions'] = 'Postavke potpisa';
$labels['whenreplying'] = 'Prilikom odgovora';
$labels['replyempty'] = 'ne citiraj originalnu poruku';
$labels['replytopposting'] = 'započni novu poruku iznad originalne';
$labels['replybottomposting'] = 'započni novu poruku ispod originalne';
$labels['replyremovesignature'] = 'Kod odgovaranja, makni originalni potpis iz poruke';
$labels['autoaddsignature'] = 'Automatski dodaj potpis';
$labels['newmessageonly'] = 'samo za nove poruke';
$labels['replyandforwardonly'] = 'samo pri odgovaranju i proslijeđivanju';
$labels['insertsignature'] = 'Umetni potpis';
$labels['afternseconds'] = 'nakon $n sekundi';
$labels['reqmdn'] = 'Uvijek zatraži potvrdu o primitku';
$labels['reqdsn'] = 'Uvijek zatraži obavijest o stanju isporuke';
$labels['replysamefolder'] = 'Spremi odgovore u mapu gdje se nalazi originalna poruka';
$labels['defaultabook'] = 'Zadani imenik';
$labels['autocompletesingle'] = 'Preskoči alternativne email adrese u autocomplete prijedlozima';
$labels['listnamedisplay'] = 'Prikaži kontakte kao';
$labels['spellcheckbeforesend'] = 'Provjeri pravopis prije slanja poruke';
$labels['spellcheckoptions'] = 'Postavke provjere pravopisa';
$labels['spellcheckignoresyms'] = 'Zanemari riječi koje sadrže simbole';
$labels['spellcheckignorenums'] = 'Zanemari riječi koje sadrže brojeve';
$labels['spellcheckignorecaps'] = 'Zanemari riječi sa svim velikim slovima';
$labels['addtodict'] = 'Dodaj u rječnik';
$labels['mailtoprotohandler'] = 'Registriraj upravitelj protokola za mailto: linkove';
$labels['standardwindows'] = 'Tretiraj skočne prozore kao standardne';
$labels['forwardmode'] = 'Prosljeđivanje poruka';
$labels['inline'] = 'umetnuto';
$labels['asattachment'] = 'kao privitak';
$labels['replyallmode'] = 'Zadana akcija [Reply all] gumba';
$labels['replyalldefault'] = 'odgovori svima';
$labels['replyalllist'] = 'odgovori samo listi (ako postoji)';
$labels['allmessages'] = 'sve poruke';
$labels['folder'] = 'Mapa';
$labels['folders'] = 'Mape';
$labels['foldername'] = 'Naziv mape';
$labels['subscribed'] = 'Pretplaćen';
$labels['messagecount'] = 'Poruke';
$labels['create'] = 'Stvori';
$labels['createfolder'] = 'Stvori novu mapu';
$labels['managefolders'] = 'Upravljanje mapama';
$labels['specialfolders'] = 'Specijalne mape';
$labels['properties'] = 'Svojstva';
$labels['folderproperties'] = 'Svojstva mape';
$labels['parentfolder'] = 'Glavna mapa';
$labels['location'] = 'Lokacija';
$labels['info'] = 'Informacije';
$labels['getfoldersize'] = 'Kliknite za prikaz veličine mape';
$labels['changesubscription'] = 'Kliknite da biste promijenili pretplatu';
$labels['foldertype'] = 'Vrsta mape';
$labels['personalfolder'] = 'Privatna mapa';
$labels['otherfolder'] = 'Mapa drugog korisnika';
$labels['sharedfolder'] = 'Javna mapa';
$labels['encryption'] = 'Šifriranje';
$labels['sortby'] = 'Sortiraj po';
$labels['sortasc'] = 'Sortiraj uzlaznim nizom';
$labels['sortdesc'] = 'Sortiraj silaznim nizom';
$labels['undo'] = 'Poništi';
$labels['installedplugins'] = 'Instalirani dodaci';
$labels['plugin'] = 'Dodatak';
$labels['version'] = 'Inačica';
$labels['source'] = 'Izvorni kod';
$labels['license'] = 'Licenca';
$labels['support'] = 'Podrška';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engleski';
$labels['westerneuropean'] = 'Zapadnoeuropski';
$labels['easterneuropean'] = 'Istočnoeuropski';
$labels['southeasterneuropean'] = 'Jugoistočnoeuropski';
$labels['baltic'] = 'Baltički';
$labels['cyrillic'] = 'Čirilićni';
$labels['arabic'] = 'Arapski';
$labels['greek'] = 'Grčki';
$labels['hebrew'] = 'Hebrejski';
$labels['turkish'] = 'Turski';
$labels['nordic'] = 'Nordijski';
$labels['thai'] = 'Tajlandski';
$labels['celtic'] = 'Keltski';
$labels['vietnamese'] = 'Vijetnamski';
$labels['japanese'] = 'Japanski';
$labels['korean'] = 'Korejski';
$labels['chinese'] = 'Kineski';
localization/hr_HR/messages.inc000064400000036177151727150600012562 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Dogodila se greška!';
$messages['loginfailed']  = 'Prijava neuspješna.';
$messages['cookiesdisabled'] = 'Vaš preglednik ne prihvaća kolačiće.';
$messages['sessionerror'] = 'Vaša sesija je nevaljala ili istekla.';
$messages['cookiesmismatch'] = 'Otkrivena je neusklađenost kolačića. Molimo očistite kolačiće preglednika.';
$messages['storageerror'] = 'Neuspješno povezivanje na IMAP poslužitelj.';
$messages['servererror'] = 'Greška poslužitelja!';
$messages['servererrormsg'] = 'Greška poslužitelja: $msg';
$messages['accountlocked'] = 'Previše neuspjelih pokušaja prijave. Molimo pokušajte kasnije.';
$messages['connerror'] = 'Neuspješna veza (Nemoguće doći do poslužitelja)!';
$messages['dberror'] = 'Greška baze podataka!';
$messages['dbconnerror'] = 'Nemoguće spajanje na bazu podataka!';
$messages['windowopenerror'] = 'Skočni prozor je blokiran!';
$messages['requesttimedout'] = 'Zahtjev istekao';
$messages['errorreadonly'] = 'Nemoguće izvršiti operaciju. Mapa je samo za čitanje.';
$messages['errornoperm'] = 'Nemoguće izvršiti operaciju. Nije dozvoljen pristup.';
$messages['erroroverquota'] = 'Nemoguće izvršiti operaciju. Nema prostora na disku.';
$messages['erroroverquotadelete'] = 'Nema prostora na disku. Upotrijebite SHIFT+DEL za brisanje poruka.';
$messages['invalidrequest'] = 'Neispravan zahtjev! Podaci nisu spremljeni.';
$messages['invalidhost'] = 'Neispravno ime poslužitelja.';
$messages['nomessagesfound'] = 'Nema poruka u ovom sandučiću.';
$messages['loggedout'] = 'Uspješno ste prekinuli sesiju.
Doviđenja!';
$messages['mailboxempty'] = 'Sandučuć je prazan';
$messages['nomessages'] = 'Nema poruka';
$messages['refreshing'] = 'Osvježavanje...';
$messages['loading'] = 'Učitavanje...';
$messages['uploading'] = 'Postavljanje datoteke...';
$messages['attaching'] = 'Prilaganje datoteke...';
$messages['uploadingmany'] = 'Postavljanje datoteka...';
$messages['loadingdata'] = 'Učitavanje podataka...';
$messages['checkingmail'] = 'Provjera novih poruka u tijeku...';
$messages['sendingmessage'] = 'Slanje poruke...';
$messages['messagesent'] = 'Poruka uspješno poslana.';
$messages['savingmessage'] = 'Spremanje poruke...';
$messages['messagesaved'] = 'Poruka spremljena u mapu Predlošci.';
$messages['successfullysaved'] = 'Uspješno spremljeno.';
$messages['savingresponse'] = 'Spremanje teksta odgovora...';
$messages['deleteresponseconfirm'] = 'Jeste li sigurni da želite obrisati tekst ovog odgovora?';
$messages['nocontactselected'] = 'Niste još označili kontakt.';
$messages['addedsuccessfully'] = 'Kontakt uspješno dodan u imenik.';
$messages['contactexists'] = 'Kontakt s istom e-mail adresom već postoji.';
$messages['contactnameexists'] = 'Kontakt istog imena već postoji.';
$messages['blockedimages'] = 'Zbog zaštite privatnosti, slike sa interneta su blokirane u ovoj poruci.';
$messages['blockedresources'] = 'Da bi se zaštitila vaša privatnost blokirani su udaljeni resursi.';
$messages['suspiciousemail'] = 'Poruka sadrži sumnjive email adrese koje bi mogle biti izvor prevare.';
$messages['encryptedmessage'] = 'Ova poruka je šifrirana i ne može se prikazati.';
$messages['externalmessagedecryption'] = 'Ovo je šifrirana poruka koja može biti dešifrirana uz pomoć proširenja preglednika.';
$messages['nopubkeyfor'] = 'Nije pronađen valjan javni ključ za $email ';
$messages['nopubkeyforsender'] = 'Nije pronađen valjan javni ključ Vašeg identiteta pošiljatelja. Želite li šifrirati poruku samo za primatelje?';
$messages['encryptpubkeysfound'] = 'Pronađeni su sljedeći javni ključevi:';
$messages['nocontactsfound'] = 'Imenik je prazan.';
$messages['contactnotfound'] = 'Traženi kontakt nije pronađen.';
$messages['sendingfailed'] = 'Slanje poruke nije uspjelo.';
$messages['senttooquickly'] = 'Molimo sačekajte $sec sek. prije slanja ove poruke.';
$messages['errorsavingsent'] = 'Greška pri spremanju poslane poruke.';
$messages['errorsaving'] = 'Greška pri spremanju.';
$messages['errormoving'] = 'Greška pri premještanju poruke(a).';
$messages['errorcopying'] = 'Greška pri kopiranju poruke(a).';
$messages['errordeleting'] = 'Greška pri brisanju poruke(a).';
$messages['errormarking'] = 'Greška pri označavanju poruke(a).';
$messages['alerttitle'] = 'Upozorenje';
$messages['confirmationtitle'] = 'Jeste li sigurni...';
$messages['deletecontactconfirm']  = 'Jeste li sigurni da želite obrisati odabrani kontakt(e)?';
$messages['deletegroupconfirm']  = 'Jeste li sigurni da želite obrisati odabranu grupu?';
$messages['deletemessagesconfirm'] = 'Jeste li sigurni da želite obrisati odabranu poruku(e)?';
$messages['deletefolderconfirm']  = 'Jeste li sigurni da želite obrisati mapu?';
$messages['movefolderconfirm']  = 'Stvarno želite premjestiti ovu mapu?';
$messages['purgefolderconfirm']  = 'Jeste li sigurni da želite obrisati sve poruke u mapi?';
$messages['contactdeleting'] = 'Brisanje kontak(a)ta...';
$messages['groupdeleting'] = 'Brisanje grupe...';
$messages['folderdeleting'] = 'Brisanje mape...';
$messages['foldermoving'] = 'Premještanje mape...';
$messages['foldersubscribing'] = 'Pretplaćivanje na mapu...';
$messages['folderunsubscribing'] = 'Poništavanje pretplate na mapu...';
$messages['formincomplete'] = 'Obrazac nije u cjelosti popunjen.';
$messages['noemailwarning'] = 'Unesite ispravnu e-mail adresu.';
$messages['nonamewarning']  = 'Unesite ime.';
$messages['nopagesizewarning'] = 'Unesite veličinu stranice.';
$messages['nosenderwarning'] = 'Molimo unesite e-mail adresu pošiljatelja.';
$messages['recipientsadded'] = 'Primatelj(i) dodan(i) uspješno.';
$messages['norecipientwarning'] = 'Unesite barem jednog primatelja.';
$messages['disclosedrecipwarning'] = 'Svi će primatelji vidjeti druge adrese e-pošte. Da biste to spriječili i zaštitili njihovu privatnost možete rabiti polje Bcc.';
$messages['disclosedreciptitle'] = 'Previše javnih primatelja';
$messages['nosubjectwarning']  = 'Polje \'Naslov\' je prazno. Želite li unijeti naslov?';
$messages['nosubjecttitle']  = 'Nema naslova';
$messages['nobodywarning'] = 'Želite li poslati poruku bez teksta?';
$messages['notsentwarning'] = 'Poruka nije poslana a ima nespremljenih promjena. Želite li odbaciti Vaše promjene?';
$messages['restoresavedcomposedata'] = 'Pronađena je započeta, ali neposlana poruka .\n\nNaslov: $subject\nSnimljeno: $date\n\nŽelite li je prikazati?';
$messages['nosearchname'] = 'Unesite ime ili e-mail adresu.';
$messages['notuploadedwarning'] = 'Svi privitci još nisu postavljeni na poslužitelj. Molim pričekajte ili zaustavite postavljanje.';
$messages['searchsuccessful'] = 'Pronađeno $nr poruka.';
$messages['contactsearchsuccessful'] = 'Pronađeno $nr kontakata.';
$messages['searchnomatch'] = 'Pretraga nije vratila nijedan rezultat.';
$messages['searching'] = 'Pretraživanje u tijeku...';
$messages['checking'] = 'Provjera u tijeku...';
$messages['stillsearching'] = 'Pretraživanje u tijeku...';
$messages['nospellerrors'] = 'Nije pronađena nijedna pravopisna greška.';
$messages['folderdeleted'] = 'Mapa uspješno obrisana.';
$messages['foldersubscribed'] = 'Mapa uspješno pretplaćena.';
$messages['folderunsubscribed'] = 'Pretplata na mapu uspješno poništena.';
$messages['folderpurged'] = 'Mapa uspješno ispražnjena';
$messages['folderexpunged'] = 'Mapa uspješno sažeta.';
$messages['deletedsuccessfully'] = 'Uspješno obrisano.';
$messages['converting'] = 'Uklanjanje formatiranja poruke...';
$messages['messageopenerror'] = 'Učitavanje poruke s poslužitelja nije uspjelo.';
$messages['filelinkerror'] = 'Prilaganje datoteke neuspješno.';
$messages['fileuploaderror'] = 'Postavljanje datoteke nije uspjelo.';
$messages['filesizeerror'] = 'Postavljena datoteka prelazi maksimalna veličinu od $size.';
$messages['filecounterror'] = 'Odjednom možete postaviti najviše $count datoteka.';
$messages['msgsizeerror'] = 'Postavljanje datoteke neuspješno. Prekoračena je najveća veličina datoteke ($size).';
$messages['msgsizeerrorfwd'] = 'Prekoračena je najveća veličina poruke ($size). $num poruka(e) nisu priložene.';
$messages['copysuccess'] = 'Uspješno kopirano $n kontakata.';
$messages['movesuccess'] = 'Uspješno premješteno $n kontakata.';
$messages['copyerror'] = 'Kopiranje kontakata nije uspjelo.';
$messages['moveerror'] = 'Premještanje kontakata nije uspjelo.';
$messages['sourceisreadonly'] = 'Ovaj izvor adresa je samo za čitanje.';
$messages['errorsavingcontact'] = 'Spremanje adrese kontakta nije uspjelo.';
$messages['movingmessage'] = 'Premještanje poruke(a)...';
$messages['copyingmessage'] = 'Kopiranje poruke(a)...';
$messages['copyingcontact'] = 'Kopiranje kontak(a)ta...';
$messages['movingcontact'] = 'Premještanje kontakata...';
$messages['deletingmessage'] = 'Brisanje poruke(a)...';
$messages['markingmessage'] = 'Označavanje poruke(a)...';
$messages['addingmember'] = 'Dodavanje kontak(a)ta u grupu...';
$messages['removingmember'] = 'Brisanje kontak(a)ta iz grupe...';
$messages['receiptsent'] = 'Potvrda o primitku uspješno poslana.';
$messages['errorsendingreceipt'] = 'Slanje potvrde o primitku nije uspjelo.';
$messages['deleteidentityconfirm'] = 'Jeste li sigurni da želite obrisati ovaj identitet?';
$messages['nodeletelastidentity'] = 'Jedini preostali identitet nije moguće obrisati.';
$messages['forbiddencharacter'] = 'Naziv mape sadrži zabranjene znakove.';
$messages['selectimportfile'] = 'Odaberite datoteku za postavljanje.';
$messages['addresswriterror'] = 'U odabrani imenik nije omogućeno pisanje.';
$messages['contactaddedtogroup'] = 'Kontakti uspješno dodani u grupu.';
$messages['contactremovedfromgroup'] = 'Kontakti uspješno obrisani iz grupe.';
$messages['nogroupassignmentschanged'] = 'Nema promjene u zadacima grupa.';
$messages['importwait'] = 'Uvoz, molim pričekajte...';
$messages['importformaterror'] = 'Uvoz nije uspio! Postavljena datoteka nije ispravnog formata za uvoz.';
$messages['importconfirm'] = '<b>Uspješno uvezeno $inserted kontakta</b>';
$messages['importconfirmskipped'] = '<b>Preskočeno $skipped postojećih unosa</b>';
$messages['importmessagesuccess'] = 'Uspješno uvezeno $nr poruka';
$messages['importmessageerror'] = 'Uvoz neuspješan! Datoteka nije u formatu poruke ili sandučića';
$messages['opnotpermitted'] = 'Operacija nije dozvoljena!';
$messages['nofromaddress'] = 'U odabranom identitetu nedostaje email adresa.';
$messages['editorwarning'] = 'Promjena uređivača teksta može rezultirati gubitkom oblikovanja teksta. Želite li nastaviti?';
$messages['httpreceivedencrypterror'] = 'Dogodila se fatalna greška u konfiguraciji. Odmah kontaktirajte administratora. <b>Vaša poruka se ne može poslati.</b>';
$messages['smtpconnerror'] = 'SMTP greška ($code): Povezivanje na poslužitelj nije uspjelo.';
$messages['smtpautherror'] = 'SMTP greška ($code): Autentikacija nije uspjela.';
$messages['smtpfromerror'] = 'SMTP greška ($code): Postavljanje pošiljatelja "$from" ($msg) nije uspjelo.';
$messages['smtptoerror'] = 'SMTP greška ($code): Dodavanje primatelja "$to" ($msg) nije uspjelo.';
$messages['smtprecipientserror'] = 'SMTP greška: Nije moguće pročitati listu primatelja.';
$messages['smtputf8error'] = 'SMTP greška: poslužitelj ne omogućava Unicode u adresama e-pošte.';
$messages['smtpsizeerror'] = 'SMTP greška: veličina poruke prekoračila je ograničenje poslužitelja ($limit)';
$messages['smtperror'] = 'SMTP greška: $msg';
$messages['emailformaterror'] = 'Neispravna e-mail adresa: $email';
$messages['toomanyrecipients'] = 'Previše primatelja. Smanjite broj primatelja na $max.';
$messages['maxgroupmembersreached'] = 'Broj članova grupe prelazi maksimalni broj od $max.';
$messages['internalerror'] = 'Dogodila se interna greška. Molimo pokušajte ponovno.';
$messages['contactdelerror'] = 'Kontakti ne mogu biti obrisani.';
$messages['contactdeleted'] = 'Kontakti uspješno obrisani.';
$messages['contactrestoreerror'] = 'Ne mogu vratiti obrisan(e) kontakt(e).';
$messages['contactrestored'] = 'Kontakt(i) uspješno vraćeni.';
$messages['groupdeleted'] = 'Grupa uspješno obrisana.';
$messages['grouprenamed'] = 'Grupa uspješno preimenovana.';
$messages['groupcreated'] = 'Grupa uspješno stvorena.';
$messages['savedsearchdeleted'] = 'Pohranjena pretraga uspješno obrisana.';
$messages['savedsearchdeleteerror'] = 'Ne mogu obrisati pohranjenu pretragu.';
$messages['savedsearchcreated'] = 'Pohranjena pretraga uspješno stvorena.';
$messages['savedsearchcreateerror'] = 'Ne mogu stvoriti pohranjenu pretragu.';
$messages['messagedeleted'] = 'Poruke uspješno obrisane.';
$messages['messagemoved'] = 'Poruke uspješno premještene.';
$messages['messagemovedtotrash'] = 'Poruka(e) uspješno premještena(e) u smeće.';
$messages['messagecopied'] = 'Poruke uspješno kopirane.';
$messages['messagemarked'] = 'Poruke uspješno označene.';
$messages['autocompletechars'] = 'Unesite barem $min znakova za auto-dopunjavanje.';
$messages['autocompletemore'] = 'Više podudarajućih zapisa pronađeno. Molim upišite još znakova.';
$messages['namecannotbeempty'] = 'Ime ne može biti prazno.';
$messages['nametoolong'] = 'Ime je predugačko.';
$messages['namedotforbidden'] = 'Ime mape ne može početi točkom.';
$messages['folderupdated'] = 'Mapa uspješno ažurirana.';
$messages['foldercreated'] = 'Mapa uspješno stvorena.';
$messages['invalidimageformat'] = 'Format slike nije ispravan.';
$messages['mispellingsfound'] = 'Poruka sadrži pravopisne greške.';
$messages['parentnotwritable'] = 'Nije moguće stvoriti/pomaknuti mapu u odabranoj mapi. Nemate pravo pristupa.';
$messages['messagetoobig'] = 'Dio poruke je prevelik za obradu.';
$messages['noscriptwarning'] = 'UPOZORENJE: Ovaj webmail servis zahtijeva Javascript!  Kako biste ga mogli koristiti, molimo omogućite Javascript u postavkama svog preglednika.';
$messages['messageissent'] = 'Poruka je poslana, ali nije spremljena. Želite li je spremiti sada?';
$messages['errnotfound'] = 'Datoteka nije pronađena';
$messages['errnotfoundexplain'] = 'Traženi resurs nije pronađen!';
$messages['errfailedrequest'] = 'Neuspješan zahtjev';
$messages['errauthorizationfailed'] = 'Neuspješna autorizacija';
$messages['errcontactserveradmin'] = 'Molimo kontaktirajte administratora poslužitelja.';
$messages['clicktocompose'] = 'Klikni ovdje za pisanje nove poruke.';
$messages['siginserted'] = 'Potpis je uspješno unešen.';
$messages['responseinserted'] = 'Odgovor je uspješno unešen.';
$messages['noresponsesavailable'] = 'Nema odgovora.';
$messages['listempty'] = 'Popis je prazan.';
$messages['listusebutton'] = 'Upotrijebite dugme Stvori da bi dodali novu stavku.';
localization/bs_BA/labels.inc000064400000063014151727150600012147 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Dobrodošli u $product';
$labels['username'] = 'Korisnik';
$labels['password'] = 'Šifra';
$labels['server'] = 'Server';
$labels['login'] = 'Prijava';
$labels['logout'] = 'Odjava';
$labels['mail'] = 'Email';
$labels['settings'] = 'Podešavanja';
$labels['addressbook'] = 'Adresar';
$labels['inbox'] = 'Sanduče';
$labels['drafts'] = 'Skice';
$labels['sent'] = 'Poslano';
$labels['trash'] = 'Smeće';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Prikaži prava imena specijalnih foldera';
$labels['subject'] = 'Naslov';
$labels['from'] = 'Od';
$labels['sender'] = 'Pošiljalac';
$labels['to'] = 'Za';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To adresa';
$labels['followupto'] = 'Prati';
$labels['date'] = 'Datum';
$labels['size'] = 'Veličina';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Status poruke';
$labels['listoptions'] = 'Izlistaj opcije...';
$labels['mailboxlist'] = 'Folderi';
$labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
$labels['messagenrof'] = 'Poruka broj $nr od $count';
$labels['fromtoshort'] = '$from – $to od ukupno $count';
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premjesti';
$labels['moveto'] = 'Premjesti u...';
$labels['copyto'] = 'Kopiraj u...';
$labels['download'] = 'Preuzmi';
$labels['open'] = 'Otvori';
$labels['showattachment'] = 'Prikaži';
$labels['showanyway'] = 'Ipak prikaži';
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'Veličina datoteke';
$labels['addtoaddressbook'] = 'Dodaj u adresar';
$labels['sun'] = 'Ned';
$labels['mon'] = 'Pon';
$labels['tue'] = 'Uto';
$labels['wed'] = 'Sri';
$labels['thu'] = 'Čet';
$labels['fri'] = 'Pet';
$labels['sat'] = 'Sub';
$labels['sunday'] = 'Nedjelja';
$labels['monday'] = 'Ponedjeljak';
$labels['tuesday'] = 'Utorak';
$labels['wednesday'] = 'Srijeda';
$labels['thursday'] = 'Četvrtak';
$labels['friday'] = 'Petak';
$labels['saturday'] = 'Subota';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Maj';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Avg';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mart';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Maj';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'Avgust';
$labels['longsep'] = 'Septembar';
$labels['longoct'] = 'Oktobar';
$labels['longnov'] = 'Novembar';
$labels['longdec'] = 'Decembar';
$labels['today'] = 'Danas';
$labels['refresh'] = 'Osvježi';
$labels['checkmail'] = 'Provjeri ima li novih poruka';
$labels['compose'] = 'Nova poruka';
$labels['writenewmessage'] = 'Kreiraj novu poruku';
$labels['reply'] = 'Odgovori';
$labels['replytomessage'] = 'Odgovori pošiljaocu';
$labels['replytoallmessage'] = 'Odgovori listi osoba ili pošiljaocu i svim primaocima';
$labels['replyall'] = 'Odgovori svima';
$labels['replylist'] = 'Odgovori listi';
$labels['forward'] = 'Proslijedi';
$labels['forwardinline'] = 'Proslijedi odmah';
$labels['forwardattachment'] = 'Proslijedi kao prilog';
$labels['forwardmessage'] = 'Proslijedi poruku';
$labels['deletemessage'] = 'Obriši poruku';
$labels['movemessagetotrash'] = 'Prebaci poruku u smeće';
$labels['printmessage'] = 'Odštampaj poruku';
$labels['previousmessage'] = 'Prikaži prethodnu poruku';
$labels['firstmessage'] = 'Prikaži prvu poruku';
$labels['nextmessage'] = 'Prikaži sljedeću poruku';
$labels['lastmessage'] = 'Prikaži zadnju poruku';
$labels['backtolist'] = 'Nazad na listu poruka';
$labels['viewsource'] = 'Prikaži izvornu poruku';
$labels['mark'] = 'Označi';
$labels['markmessages'] = 'Označi poruke';
$labels['markread'] = 'Kao pročitane';
$labels['markunread'] = 'Kao nepročitane';
$labels['markflagged'] = 'Kao važne';
$labels['markunflagged'] = 'Kao nevažne';
$labels['moreactions'] = 'Više akcija...';
$labels['folders-all'] = 'Svi folder';
$labels['more'] = 'Više';
$labels['back'] = 'Nazad';
$labels['options'] = 'Opcije';
$labels['first'] = 'Prva';
$labels['last'] = 'Zadnja';
$labels['previous'] = 'Prethodno';
$labels['next'] = 'Sljedeće';
$labels['select'] = 'Odaberi';
$labels['all'] = 'Sve';
$labels['none'] = 'Ništa';
$labels['currpage'] = 'Trenutna stranica';
$labels['isread'] = 'Pročitano';
$labels['unread'] = 'Nepročitano';
$labels['flagged'] = 'Važno';
$labels['unflagged'] = 'Nije označeno';
$labels['unanswered'] = 'Neodgovoreno';
$labels['withattachment'] = 'Sa prilogom';
$labels['deleted'] = 'Obrisano';
$labels['undeleted'] = 'Nije obrisano';
$labels['replied'] = 'Odgovoreno';
$labels['forwarded'] = 'Proslijeđeno';
$labels['invert'] = 'Izokreni';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lista';
$labels['threads'] = 'Teme';
$labels['expand-all'] = 'Proširi sve';
$labels['expand-unread'] = 'Proširi nepročitane';
$labels['collapse-all'] = 'Zatvori sve';
$labels['threaded'] = 'Teme';
$labels['autoexpand_threads'] = 'Proširi teme poruka';
$labels['do_expand'] = 'sve teme';
$labels['expand_only_unread'] = 'samo sa nepročitanim porukama';
$labels['fromto'] = 'Od/Za';
$labels['flag'] = 'Oznaka';
$labels['attachment'] = 'Prilog';
$labels['nonesort'] = 'Ništa';
$labels['sentdate'] = 'Datum slanja';
$labels['arrival'] = 'Datum primanja';
$labels['asc'] = 'rastući';
$labels['desc'] = 'opadajući';
$labels['listcolumns'] = 'Lista kolona';
$labels['listsorting'] = 'Sortiranje kolona';
$labels['listorder'] = 'Raspored sortiranja';
$labels['listmode'] = 'Način prikaza liste';
$labels['layoutlist'] = 'Lista';
$labels['folderactions'] = 'Akcije za foldere...';
$labels['compact'] = 'Optimiziraj';
$labels['empty'] = 'Isprazni';
$labels['importmessages'] = 'Uvezi poruke';
$labels['quota'] = 'Zauzeće diska';
$labels['unknown'] = 'nepoznato';
$labels['unlimited'] = 'neograničeno';
$labels['quotatype'] = 'Vrsta kvote';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Iskorišteno';
$labels['quotastorage'] = 'Prostor na disku';
$labels['quotamessage'] = 'Broj poruka';
$labels['quicksearch'] = 'Brza pretraga';
$labels['resetsearch'] = 'Resetuj pretragu';
$labels['searchmod'] = 'Modifikacija pretrage';
$labels['msgtext'] = 'Cijela poruka';
$labels['body'] = 'Tijelo';
$labels['type'] = 'Vrsta';
$labels['namex'] = 'Ime';
$labels['searchscope'] = 'Opseg';
$labels['currentfolder'] = 'Trenutni folder';
$labels['subfolders'] = 'Ovo i podfolderi';
$labels['allfolders'] = 'Svi folder';
$labels['openinextwin'] = 'Otvori u novom prozoru';
$labels['emlsave'] = 'Preuzmi (.eml)';
$labels['changeformattext'] = 'Prikaži kao obični tekst';
$labels['changeformathtml'] = 'Prikaži kao HTML';
$labels['editasnew'] = 'Uredi kao novo';
$labels['send'] = 'Pošalji';
$labels['sendmessage'] = 'Pošalji poruku';
$labels['savemessage'] = 'Sačuvaj skicu';
$labels['addattachment'] = 'Priloži datoteku';
$labels['charset'] = 'Skup znakova';
$labels['editortype'] = 'Vrsta urednika';
$labels['returnreceipt'] = 'Potvrda o prispijeću poruke';
$labels['dsn'] = 'Obavještenje o statusu dostave';
$labels['mailreplyintro'] = '$date, $sender je napisao/la:';
$labels['originalmessage'] = 'Originalna poruka';
$labels['selectimage'] = 'Odaberi sliku';
$labels['addimage'] = 'Dodaj sliku';
$labels['selectmedia'] = 'Odaberi film';
$labels['addmedia'] = 'Dodaj film';
$labels['insert'] = 'Umetni';
$labels['recipient'] = 'Primaoc';
$labels['editidents'] = 'Uredi identitete';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Provjera pravopisa';
$labels['resumeediting'] = 'Nastavi uređivanje';
$labels['revertto'] = 'Vrati na';
$labels['restore'] = 'Vrati';
$labels['restoremessage'] = 'Vratiti poruku?';
$labels['ignore'] = 'Zanemari';
$labels['responses'] = 'Odgovori';
$labels['insertresponse'] = 'Umetni odgovor';
$labels['manageresponses'] = 'Upravljaj odgovorima';
$labels['newresponse'] = 'Kreiraj novi odgovor';
$labels['addresponse'] = 'Dodaj odgovor';
$labels['editresponse'] = 'Uredi odgovor';
$labels['editresponses'] = 'Uredi odgovore';
$labels['responsename'] = 'Ime';
$labels['responsetext'] = 'Tekst odgovora';
$labels['attach'] = 'Priloži';
$labels['attachments'] = 'Prilozi';
$labels['upload'] = 'Dodaj';
$labels['uploadprogress'] = '$percent ($current od $total)';
$labels['close'] = 'Zatvori';
$labels['messageoptions'] = 'Opcije poruke...';
$labels['togglecomposeoptions'] = '(De)aktivacija opcija pisanja';
$labels['low'] = 'Nizak';
$labels['lowest'] = 'Najniži';
$labels['normal'] = 'Normalan';
$labels['high'] = 'Visok';
$labels['highest'] = 'Najveći';
$labels['nosubject'] = '(bez naslova)';
$labels['showimages'] = 'Prikaži slike';
$labels['alwaysshow'] = 'Uvijek prikaži slike od $sender';
$labels['isdraft'] = 'Ovo je skica.';
$labels['andnmore'] = 'još $nr...';
$labels['togglemoreheaders'] = 'Prikaži još zaglavlja poruka';
$labels['togglefullheaders'] = 'Aktiviranje izvornih zaglavlja poruka';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Obični tekst';
$labels['savesentmessagein'] = 'Sačuvaj poslane poruke u';
$labels['dontsave'] = 'ne snimaj';
$labels['maxuploadsize'] = 'Maksimalna dozvoljena veličina datoteke je $size';
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj odgovor na';
$labels['addfollowupto'] = 'Dodaj praćenje za';
$labels['mdnrequest'] = 'Pošiljaoc ove poruke je tražio da bude obaviješten kada pročitate ovu poruku. Želite li obavijestiti pošiljaoca?';
$labels['receiptread'] = 'Povratnica (pročitano)';
$labels['yourmessage'] = 'Ovo je povratnica vaše poruke';
$labels['receiptnote'] = 'Napomena: Ova povratnica samo potvrđuje da je poruka bila prikazana na računaru primaoca. Nema garancija da je primaoc pročitao ili razumio sadržaj poruke.';
$labels['name'] = 'Ime za prikaz';
$labels['firstname'] = 'Ime';
$labels['surname'] = 'Prezime';
$labels['middlename'] = 'Srednje ime';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Sufiks';
$labels['nickname'] = 'Nadimak';
$labels['jobtitle'] = 'Titula';
$labels['department'] = 'Odjel';
$labels['gender'] = 'Spol';
$labels['maidenname'] = 'Djevojačko ime';
$labels['email'] = 'Email';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresa';
$labels['street'] = 'Ulica';
$labels['locality'] = 'Grad';
$labels['zipcode'] = 'Poštanski broj';
$labels['region'] = 'Oblast';
$labels['country'] = 'Zemlja';
$labels['birthday'] = 'Rođendan';
$labels['anniversary'] = 'Godišnjica';
$labels['website'] = 'Web stranica';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Napomene';
$labels['male'] = 'Muško';
$labels['female'] = 'Žensko';
$labels['manager'] = 'Menadžer';
$labels['assistant'] = 'Pomoćnik';
$labels['spouse'] = 'Supružnik';
$labels['allfields'] = 'Sva polja';
$labels['search'] = 'Pretraga';
$labels['searchresult'] = 'Rezultati pretrage';
$labels['advsearch'] = 'Napredna pretraga';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
$labels['printcontact'] = 'Štampaj kontakt';
$labels['typehome'] = 'Kućni broj';
$labels['typework'] = 'Poslovni broj';
$labels['typeother'] = 'Ostalo';
$labels['typemobile'] = 'Mobilni broj';
$labels['typemain'] = 'Glavni broj';
$labels['typehomefax'] = 'Fax kuća';
$labels['typeworkfax'] = 'Fax posao';
$labels['typecar'] = 'Automobil';
$labels['typepager'] = 'Pejdžer';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Pomoćnik';
$labels['typehomepage'] = 'Početna stranica';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj polje...';
$labels['addcontact'] = 'Dodaj kontakt';
$labels['editcontact'] = 'Uredi kontakt';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Svojstva kontakta';
$labels['contactnameandorg'] = 'Ime i organizacija';
$labels['personalinfo'] = 'Lični podaci';
$labels['personal'] = 'Lično';
$labels['contactphoto'] = 'Kontakt fotografija';
$labels['edit'] = 'Uredi';
$labels['cancel'] = 'Otkaži';
$labels['save'] = 'Sačuvaj';
$labels['delete'] = 'Obriši';
$labels['discard'] = 'Odbaci';
$labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamijeni';
$labels['uploadphoto'] = 'Dodaj fotografiju';
$labels['newcontact'] = 'Kreiraj novi kontakt';
$labels['deletecontact'] = 'Obriši odabrane kontakte';
$labels['composeto'] = 'Napiši email za';
$labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
$labels['print'] = 'Štampaj';
$labels['export'] = 'Izvoz';
$labels['exportall'] = 'Izvezi sve';
$labels['exportsel'] = 'Izvezi označeno';
$labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
$labels['newgroup'] = 'Kreiraj novu grupu';
$labels['addgroup'] = 'Dodaj grupu';
$labels['grouprename'] = 'Preimenuj grupu';
$labels['groupdelete'] = 'Obriši grupu';
$labels['groupremoveselected'] = 'Ukloni odabrane kontakte iz grupe';
$labels['uponelevel'] = 'Nazad jedan nivo';
$labels['previouspage'] = 'Prikaži prethodnu stranicu';
$labels['firstpage'] = 'Prikaži prvu stranicu';
$labels['nextpage'] = 'Prikaži sljedeću stranicu';
$labels['lastpage'] = 'Prikaži zadnju stranicu';
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupe';
$labels['listgroup'] = 'Izlistaj članove grupe';
$labels['personaladrbook'] = 'Lične adrese';
$labels['searchsave'] = 'Sačuvaj pretragu';
$labels['searchdelete'] = 'Obriši pretragu';
$labels['import'] = 'Uvoz';
$labels['importcontacts'] = 'Uvoz kontakata';
$labels['importtarget'] = 'Dodaj kontakte u';
$labels['importreplace'] = 'Zamijeni cijeli adresar';
$labels['importgroups'] = 'Uvezi grupne zadatke';
$labels['importgroupsall'] = 'Sve (kreiraj grupe ako je potrebno)';
$labels['importgroupsexisting'] = 'Samo za postojeće grupe';
$labels['done'] = 'Završeno';
$labels['settingsfor'] = 'Podešavanja za';
$labels['about'] = 'Informacije';
$labels['preferences'] = 'Podešavanja';
$labels['userpreferences'] = 'Korisničke opcije';
$labels['editpreferences'] = 'Uredi korisničke opcije';
$labels['identities'] = 'Identiteti';
$labels['manageidentities'] = 'Upravljanje identitetima';
$labels['newidentity'] = 'Kreiraj novi identitet';
$labels['addidentity'] = 'Dodaj identitet';
$labels['editidentity'] = 'Uredi identitet';
$labels['preferhtml'] = 'Prikaži HTML';
$labels['defaultcharset'] = 'Glavni skup znakova';
$labels['htmlmessage'] = 'HTML poruke';
$labels['messagepart'] = 'Dio';
$labels['digitalsig'] = 'Digitalni potpis';
$labels['dateformat'] = 'Format datuma';
$labels['timeformat'] = 'Format vremena';
$labels['prettydate'] = 'Formatirani datum';
$labels['setdefault'] = 'Postavi kao glavno';
$labels['autodetect'] = 'Automatski';
$labels['language'] = 'Jezik';
$labels['timezone'] = 'Vremenska zona';
$labels['pagesize'] = 'Redova po stranici';
$labels['signature'] = 'Potpis';
$labels['dstactive'] = 'Ljetno računanje vremena';
$labels['showinextwin'] = 'Otvori poruku u novom prozoru';
$labels['composeextwin'] = 'Napiši u novom prozor';
$labels['htmleditor'] = 'Piši HTML poruke';
$labels['htmlonreply'] = 'samo kao odgovor na HTML poruke';
$labels['htmlonreplyandforward'] = 'prilikom prosljeđivanja ili odgovaranja na HTML poruku';
$labels['htmlsignature'] = 'HTML potpis';
$labels['showemail'] = 'Prikaži email adresu sa imenom';
$labels['previewpane'] = 'Prikaži pregled poruke';
$labels['skin'] = 'Skin interfejsa';
$labels['logoutclear'] = 'Očisti smeće prilikom odjavljivanja';
$labels['logoutcompact'] = 'Optimiziraj sanduče prilikom odjavljivanja';
$labels['uisettings'] = 'Korisnički interfejs';
$labels['serversettings'] = 'Postavke servera';
$labels['mailboxview'] = 'Pregled emaila';
$labels['mdnrequests'] = 'Prilikom zahtjeva za povratnicu';
$labels['askuser'] = 'pitaj korisnika';
$labels['autosend'] = 'pošalji povratnicu';
$labels['autosendknown'] = 'pošalji povratnicu mojim kontaktima, u suprotnom me pitaj';
$labels['autosendknownignore'] = 'pošalji povratnicu mojim kontaktima, u suprotnom zanemari';
$labels['ignorerequest'] = 'Zanemari zahtjev';
$labels['readwhendeleted'] = 'Označi poruku kao pročitanu pri brisanju';
$labels['flagfordeletion'] = 'Označi poruku za brisanje umjesto brisanja';
$labels['skipdeleted'] = 'Ne prikazuj obrisane poruke';
$labels['deletealways'] = 'Ako premještanje poruka u smeće ne uspije, odmah ih obriši';
$labels['deletejunk'] = 'Direktno obriši poruke u smeću';
$labels['showremoteimages'] = 'Prikaži vanjske slike u porukama';
$labels['fromknownsenders'] = 'od poznatih pošiljatelja';
$labels['always'] = 'uvijek';
$labels['showinlineimages'] = 'Prikaži priložene slike ispod poruke';
$labels['autosavedraft'] = 'Automatski sačuvaj skicu';
$labels['everynminutes'] = 'svakih $n minuta';
$labels['refreshinterval'] = 'Osvježi (provjeri ima li novih poruka itd.)';
$labels['never'] = 'nikad';
$labels['immediately'] = 'odmah';
$labels['messagesdisplaying'] = 'Prikaz poruka';
$labels['messagescomposition'] = 'Pisanje poruka';
$labels['mimeparamfolding'] = 'Nazivi priloga';
$labels['2231folding'] = 'Puni RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Puni RFC 2047 (ostalo)';
$labels['force7bit'] = 'Koristi MIME kodiranje za 8-bitne znakove';
$labels['savelocalstorage'] = "Sačuvaj u lokalno skladište browsera (privremeno)";
$labels['advancedoptions'] = 'Napredne opcije';
$labels['toggleadvancedoptions'] = '(De)aktivacija naprednih opcija';
$labels['focusonnewmessage'] = 'Fokusiraj prozor preglednika na novu poruku';
$labels['checkallfolders'] = 'Provjeri ima li novih poruka u svim folderima';
$labels['defaultfont'] = 'Osnovni font za HTML poruke';
$labels['mainoptions'] = 'Glavne opcije';
$labels['browseroptions'] = 'Opcije preglednika';
$labels['section'] = 'Sekcija';
$labels['maintenance'] = 'Održavanje';
$labels['newmessage'] = 'Nova poruka';
$labels['signatureoptions'] = 'Opcija potpisa';
$labels['whenreplying'] = 'Prilikom odgovora';
$labels['replyempty'] = 'ne citiraj originalnu poruku';
$labels['replytopposting'] = 'započni novu poruku iznad originala';
$labels['replybottomposting'] = 'započni novu poruku ispod originala';
$labels['replyremovesignature'] = 'Prilikom odgovaranja na poruku, ukloni originalni potpis iz poruke';
$labels['autoaddsignature'] = 'Automatski dodaj potpis';
$labels['newmessageonly'] = 'samo za nove poruke';
$labels['replyandforwardonly'] = 'samo za odgovore i prosljeđivanja';
$labels['insertsignature'] = 'Umetni potpis';
$labels['afternseconds'] = 'nakon $n sekundi';
$labels['reqmdn'] = 'Uvijek zahtjevaj povratnicu';
$labels['reqdsn'] = 'Uvijek zahtjevaj obavijest o statusu dostave';
$labels['replysamefolder'] = 'Sačuvaj odgovore u folder poruke na osnovu koje se piše odgovor';
$labels['defaultabook'] = 'Osnovni adresar';
$labels['autocompletesingle'] = 'Preskoči alternativne email adrese prilikom automatskog popunjavanja';
$labels['listnamedisplay'] = 'Izlistaj kontakte kao';
$labels['spellcheckbeforesend'] = 'Provjeri pravopis prije slanja poruke';
$labels['spellcheckoptions'] = 'Opcije provjere pravopisa';
$labels['spellcheckignoresyms'] = 'Zanemari riječi sa simbolima';
$labels['spellcheckignorenums'] = 'Zanemari riječi sa brojevima';
$labels['spellcheckignorecaps'] = 'Zanemari riječi napisane velikim slovima';
$labels['addtodict'] = 'Dodaj u rječnik';
$labels['mailtoprotohandler'] = 'Registruj upravljač protokola za mailto: linkovi';
$labels['standardwindows'] = 'Tretiraj popup-ove kao standardne prozore';
$labels['forwardmode'] = 'Prosljeđivanje poruka';
$labels['inline'] = 'u istom redu';
$labels['asattachment'] = 'kao prilog';
$labels['replyallmode'] = 'Zadana radnja za [Odgovori svima] dugme';
$labels['replyalldefault'] = 'odgovori svima';
$labels['replyalllist'] = 'odgovori samo listi mailova (ukoliko je pronađena)';
$labels['allmessages'] = 'sve poruke';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folderi';
$labels['foldername'] = 'Naziv foldera';
$labels['subscribed'] = 'Pretplaćen';
$labels['messagecount'] = 'Poruke';
$labels['create'] = 'Kreiraj';
$labels['createfolder'] = 'Kreiraj novi folder';
$labels['managefolders'] = 'Upravljanje folderima';
$labels['specialfolders'] = 'Specijalni folder';
$labels['properties'] = 'Svojstva';
$labels['folderproperties'] = 'Svojstva foldera';
$labels['parentfolder'] = 'Matični folder';
$labels['location'] = 'Lokacija';
$labels['info'] = 'Informacije';
$labels['getfoldersize'] = 'Kliknite da biste dobili informaciju o veličini foldera';
$labels['changesubscription'] = 'Kliknite da promijenite pretplatu';
$labels['foldertype'] = 'Vrsta foldera';
$labels['personalfolder'] = 'Privatni folder';
$labels['otherfolder'] = 'Folder drugog korisnika';
$labels['sharedfolder'] = 'Javni folder';
$labels['findfolders'] = 'Pronađi foldere';
$labels['namespace.personal'] = 'Lično';
$labels['namespace.other'] = 'Ostali korisnici';
$labels['namespace.shared'] = 'Dijeljeno';
$labels['sortby'] = 'Sortiraj po';
$labels['sortasc'] = 'Sortiraj uzlazno';
$labels['sortdesc'] = 'Sortiraj silazno';
$labels['undo'] = 'Nazad';
$labels['installedplugins'] = 'Instalirani plugini';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Verzija';
$labels['source'] = 'Izvorni kod';
$labels['license'] = 'Licenca';
$labels['support'] = 'Podrška';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unikod';
$labels['english'] = 'engleski';
$labels['westerneuropean'] = 'Zapadna Evropa';
$labels['easterneuropean'] = 'Istočna Evropa';
$labels['southeasterneuropean'] = 'Jugoistočna Evropa';
$labels['baltic'] = 'Baltički';
$labels['cyrillic'] = 'ćirilični';
$labels['arabic'] = 'arapski';
$labels['greek'] = 'grčki';
$labels['hebrew'] = 'hebrejski';
$labels['turkish'] = 'turski';
$labels['nordic'] = 'Nordijski';
$labels['thai'] = 'tajlandski';
$labels['celtic'] = 'keltski';
$labels['vietnamese'] = 'vijetnamski';
$labels['japanese'] = 'japanski';
$labels['korean'] = 'korejski';
$labels['chinese'] = 'kineski';
$labels['arialabeltopnav'] = 'Kontrola prozora';
$labels['arialabeltasknav'] = 'Zadaci aplikacije';
$labels['arialabeltoolbar'] = 'Alatna traka aplikacije';
$labels['arialabelactivetask'] = 'Aktivni zadatak';
$labels['arialabelmessagessearchfilter'] = 'Filter listinga emaila';
$labels['arialabelmailsearchform'] = 'Obrazac za pretragu email poruka';
$labels['arialabelcontactsearchform'] = 'Obrazac za pretragu kontakata';
$labels['arialabelmailquicksearchbox'] = 'Unos za email pretragu';
$labels['arialabelquicksearchbox'] = 'Unos za pretragu';
$labels['arialabelfoldersearchfilter'] = 'Fitr listi foldera';
$labels['arialabelfoldersearchform'] = 'Obrazac za pretragu foldera';
$labels['arialabelfolderlist'] = 'Odabir email foldera';
$labels['arialabelmessagelist'] = 'Listing email poruka';
$labels['arialabelmailpreviewframe'] = 'Pregled poruke';
$labels['arialabelmailboxmenu'] = 'Meni sa akcijama za foldere';
$labels['arialabellistselectmenu'] = 'Meni za odabir listinga';
$labels['arialabelthreadselectmenu'] = 'Meni za listing tema';
$labels['arialabelmessagelistoptions'] = 'Prikaz listi poruka i opcije sortiranja';
$labels['arialabelmailimportdialog'] = 'Dijalog za uvoz poruke';
$labels['arialabelmessagenav'] = 'Navigacija za poruku';
$labels['arialabelmessagebody'] = 'Tijelo poruke';
$labels['arialabelmessageactions'] = 'Akcije poruke';
$labels['arialabelcontactquicksearch'] = 'Obrazac za pretragu kontakata';
$labels['arialabelcontactsearchbox'] = 'Unos za pretragu kontakata';
$labels['arialabelmessageheaders'] = 'Zaglavlja poruke';
$labels['arialabelforwardingoptions'] = 'Opcije prosljeđivanja';
$labels['arialabelreplyalloptions'] = 'Opcije odgovora svima';
$labels['arialabelmoremessageactions'] = 'Više akcija za poruke';
$labels['arialabelmarkmessagesas'] = 'Označi odabrane poruke kao...';
$labels['arialabelcomposeoptions'] = 'Opcije pisanja';
$labels['arialabelresponsesmenu'] = 'Meni za odbačene odgovore';
$labels['arialabelattachmentuploadform'] = 'Obrazac za dodavanje priloga';
$labels['arialabelattachmentpreview'] = 'Pregled priloga';
$labels['ariasummarycomposecontacts'] = 'Lista kontakata i grupi za primaoce';
$labels['arialabelcontactexportoptions'] = 'Opcije izvoza kontakata';
$labels['arialabelabookgroupoptions'] = 'Opcije adresara/grupe';
$labels['arialabelpreferencesform'] = 'Obrazac podešavanja';
$labels['arialabelidentityeditfrom'] = 'Obrazac za uređivanje identiteta';
$labels['arialabelresponseeditfrom'] = 'Obrazac za uređivanje odgovora';
$labels['arialabelsearchterms'] = 'Pojam za pretragu';
$labels['helplistnavigation'] = 'Lista navigacije pomoću tastature';
$labels['helplistkeyboardnavigation'] = "Strelice gore/dole: Pomjeri fokusirani red/selekciju.
Razmak: Odaberi fokusirani red.
Shift + gore/dole: Odaberi dodatni red iznad/ispod.
Ctrl + razmak: Dodaj fokusirani red u selekciju/ukloni iz selekcije.";
$labels['helplistkeyboardnavmessages'] = "Strelice desno/lijevo: proširi/zatvori temu temu emaila (samo u modu za teme).
Enter: Otvori odabranu/fokusiranu poruku.
Delete: Premjesti odabranu poruku u Smeće.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Otvora odabrani/fokusirani kontakt.";
localization/bs_BA/messages.inc000064400000031002151727150600012504 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Desila se greška!';
$messages['loginfailed']  = 'Prijava nije uspjela.';
$messages['cookiesdisabled'] = 'Vaš preglednik ne prihvata kolačiće.';
$messages['sessionerror'] = 'Vaša sesija je neispravna ili je istekla.';
$messages['storageerror'] = 'Neuspješna konekcija na IMAP server';
$messages['servererror'] = 'Serverska greška!';
$messages['servererrormsg'] = 'Serverska greška: $msg';
$messages['connerror'] = 'Greška u povezivanju (Nije moguće kontaktirati server)!';
$messages['dberror'] = 'Greška u bazi podataka!';
$messages['windowopenerror'] = 'Popup prozor je blokiran!';
$messages['requesttimedout'] = 'Zahtjev je istekao';
$messages['errorreadonly'] = 'Nije moguće izvršiti operaciju. Folder je samo za čitanje.';
$messages['errornoperm'] = 'Nije moguće izvršiti operaciju. Pristup je odbijen.';
$messages['erroroverquota'] = 'Nije moguće izvršiti operaciju. Nema slobodnog prostora.';
$messages['erroroverquotadelete'] = 'Nema slobodnog prostora. Pritisnite SHIFT+DEL da obrišete poruku.';
$messages['invalidrequest'] = 'Neispravan zahtjev! Podaci nisu sačuvani.';
$messages['invalidhost'] = 'Neispravno ime servera.';
$messages['nomessagesfound'] = 'Nema poruka u ovom sandučetu.';
$messages['mailboxempty'] = 'Sanduče je prazno';
$messages['nomessages'] = 'Nema poruka';
$messages['refreshing'] = 'Osvježavam...';
$messages['loading'] = 'Učitavanje...';
$messages['uploading'] = 'Dodajem datoteku...';
$messages['uploadingmany'] = 'Dodajem datoteke...';
$messages['loadingdata'] = 'Učitavanje podataka...';
$messages['checkingmail'] = 'Provjeram ima li novih poruka...';
$messages['sendingmessage'] = 'Šaljem poruku...';
$messages['messagesent'] = 'Poruka je uspješno poslana.';
$messages['savingmessage'] = 'Poruka se snima...';
$messages['messagesaved'] = 'Poruka je uspješno sačuvana u skicama.';
$messages['successfullysaved'] = 'Uspješno sačuvano.';
$messages['savingresponse'] = 'Snimam teksta odgovora...';
$messages['deleteresponseconfirm'] = 'Da li zaista želite obrisati tekst ovog odgovora?';
$messages['addedsuccessfully'] = 'Kontakt uspješno dodan u adresar.';
$messages['contactnameexists'] = 'Kontakt s tim imenom već postoji.';
$messages['blockedimages'] = 'Zbog zaštite privatnosti, slike sa drugih servera su blokirane u ovoj poruci.';
$messages['encryptedmessage'] = 'Ova poruka je šifrirana i nije je moguće prikazati. Žao nam je!';
$messages['nocontactsfound'] = 'Adresar je prazan.';
$messages['contactnotfound'] = 'Traženi kontakt nije pronađen.';
$messages['sendingfailed'] = 'Greška pri slanju poruke.';
$messages['senttooquickly'] = 'Molimo sačekajte $sec sekundi prije slanja ove poruke.';
$messages['errorsavingsent'] = 'Desila se greška pri snimanju poslane poruke.';
$messages['errorsaving'] = 'Desila se greška pri snimanju.';
$messages['errormoving'] = 'Nije moguće premjestiti poruke.';
$messages['errorcopying'] = 'Nije moguće kopirati poruke.';
$messages['errordeleting'] = 'Nije moguće obrisati poruke.';
$messages['errormarking'] = 'Nije moguće označiti poruke.';
$messages['deletecontactconfirm']  = 'Da li zaista želite obrisati označene kontakte?';
$messages['deletegroupconfirm']  = 'Da li zaista želite obrisati označenu grupu?';
$messages['deletemessagesconfirm'] = 'Da li zaista želite obrisati označene poruke?';
$messages['deletefolderconfirm']  = 'Da li zaista želite obrisati ovaj folder?';
$messages['purgefolderconfirm']  = 'Da li zaista želite obrisati sve poruke u ovom folderu?';
$messages['contactdeleting'] = 'Brišem kontakte...';
$messages['groupdeleting'] = 'Brišem grupu...';
$messages['folderdeleting'] = 'Brišem folder...';
$messages['foldermoving'] = 'Premještam folder...';
$messages['foldersubscribing'] = 'Pretplaćujem se na folder...';
$messages['folderunsubscribing'] = 'Uklanjam pretplatu za folder...';
$messages['formincomplete'] = 'Obrazac nije popunjen u cjelosti.';
$messages['noemailwarning'] = 'Molimo vas da upišete ispravnu email adresu.';
$messages['nonamewarning']  = 'Molimo vas da upišete ime.';
$messages['nopagesizewarning'] = 'Molimo vas da upišete veličinu stranice.';
$messages['norecipientwarning'] = 'Molimo vas da upišete barem jednog primaoca.';
$messages['nosubjectwarning']  = 'Polje \'Naslov\' je prazno. Želite li unijeti naslov?';
$messages['nobodywarning'] = 'Želite li poslati poruku bez teksta?';
$messages['restoresavedcomposedata'] = 'Pronađena je prethodno napisana poruka koja nije poslana..\n\nTema:$subject\nSnimljeno: $date\n\nŽelite li vratiti ovu poruku?';
$messages['nosearchname'] = 'Molimo vas da upišete ime kontakta ili email adresu.';
$messages['notuploadedwarning'] = 'Neki od priloga još nisu dodani na server. Molimo vas da sačekate ili da otkažete dodavanje.';
$messages['searchsuccessful'] = 'Broj pronađenih poruka: $nr';
$messages['contactsearchsuccessful'] = '$nr kontakata je pronađeno.';
$messages['searchnomatch'] = 'Traženi pojam nije pronađen ni u jednoj poruci.';
$messages['searching'] = 'Pretražujem...';
$messages['checking'] = 'Provjeravam...';
$messages['stillsearching'] = 'I dalje pretražujem...';
$messages['nospellerrors'] = 'Pravopisne greške nisu pronađene.';
$messages['folderdeleted'] = 'Folder je uspješno obrisan.';
$messages['foldersubscribed'] = 'Uspješno ste pretplaćeni na folder.';
$messages['folderunsubscribed'] = 'Pretplata na folder je uspješno ukinuta.';
$messages['deletedsuccessfully'] = 'Brisanje uspješno.';
$messages['converting'] = 'Uklanjam formatiranje...';
$messages['messageopenerror'] = 'Nije moguće učitati poruku sa servera.';
$messages['fileuploaderror'] = 'Dodavanje datoteke nije uspjelo.';
$messages['filesizeerror'] = 'Datoteka je prevelika. Maksimalna veličina je $size.';
$messages['copysuccess'] = 'Uspješno kopirano $nr kontakata.';
$messages['movesuccess'] = 'Uspješno premješteno $nr kontakata.';
$messages['copyerror'] = 'Nije moguće kopirati kontakte.';
$messages['moveerror'] = 'Nije moguće premjestiti kontakte.';
$messages['sourceisreadonly'] = 'Ovaj izvor adresa je samo za čitanje.';
$messages['errorsavingcontact'] = 'Nije moguće sačuvati kontakt adresu.';
$messages['movingmessage'] = 'Premještam poruke...';
$messages['copyingmessage'] = 'Kopiram poruke...';
$messages['copyingcontact'] = 'Kopiram kontakte...';
$messages['movingcontact'] = 'Premještam kontakte...';
$messages['deletingmessage'] = 'Brišem poruke...';
$messages['markingmessage'] = 'Označavam poruke...';
$messages['addingmember'] = 'Dodajem kontakte u grupu...';
$messages['removingmember'] = 'Uklanjam kontakte iz grupe...';
$messages['receiptsent'] = 'Potvrda o primitku je uspješno poslana.';
$messages['errorsendingreceipt'] = 'Nije moguće poslati potvrdu.';
$messages['deleteidentityconfirm'] = 'Da li zaista želite obrisati ovaj identitet?';
$messages['nodeletelastidentity'] = 'Ne možete obrisati jedini identitet.';
$messages['forbiddencharacter'] = 'Naziv foldera sadrži nedozvoljeni znak.';
$messages['selectimportfile'] = 'Molimo vas da odaberete datoteku za dodavanje.';
$messages['addresswriterror'] = 'U odabrani adresar nije moguće zapisivati.';
$messages['contactaddedtogroup'] = 'Kontakti su uspješno dodani u ovu grupu.';
$messages['contactremovedfromgroup'] = 'Kontakti su uspješno uklonjeni iz ove grupe.';
$messages['nogroupassignmentschanged'] = 'Grupni zadaci nisu mijenjani.';
$messages['importwait'] = 'Uvoz u toku, molimo sačekajte...';
$messages['importformaterror'] = 'Uvoz nije uspio! Dodana datoteka nije u ispravnom formatu za uvoz podataka.';
$messages['importconfirm'] = '<b>Uspješno je uvezeno $inserted kontakata</b>';
$messages['importconfirmskipped'] = '<b>Preskočeno $skipped postojećih unosa</b>';
$messages['importmessagesuccess'] = 'Uspješno uvezeno $nr poruka';
$messages['importmessageerror'] = 'Uvoz nije uspio! Dodana datoteke nije ispravna datoteka sa porukama';
$messages['opnotpermitted'] = 'Operacija nije dozvoljena!';
$messages['editorwarning'] = 'Promjenom uređivača biste mogli izgubiti formatiranje teksta. Želite li nastaviti?';
$messages['httpreceivedencrypterror'] = 'Dogodila se fatalna konfiguracijska greška. Odmah kontaktirajte administratora. <b>Vaša poruka se ne poslati.</b>';
$messages['smtpconnerror'] = 'SMTP greška ($code): Veza sa serverom nije uspostavljena.';
$messages['smtpautherror'] = 'SMTP greška ($code): Autentifikacija nije uspjela.';
$messages['smtpfromerror'] = 'SMTP greška ($code): Nije uspjelo postavljanje pošiljaoca "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP greška ($code): Nije uspjelo dodavanje primaoca "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP greška: Nije moguće pročitati listu primaoca.';
$messages['smtperror'] = 'SMTP greška: $msg';
$messages['toomanyrecipients'] = 'Previše primaoca. Smanjite broj primaoca na $max.';
$messages['maxgroupmembersreached'] = 'Broj članova grupe prelazi maksimum od $max.';
$messages['internalerror'] = 'Dogodila se interna greška. Molimo vas da pokušate ponovo.';
$messages['contactdelerror'] = 'Kontakti ne mogu biti obrisani.';
$messages['contactdeleted'] = 'Kontakti su uspješno obrisani.';
$messages['contactrestoreerror'] = 'Nije moguće vratiti obrisane kontakte.';
$messages['contactrestored'] = 'Kontakti su uspješno vraćeni.';
$messages['groupdeleted'] = 'Grupa je uspješno obrisana.';
$messages['grouprenamed'] = 'Grupa je uspješno preimenovana.';
$messages['groupcreated'] = 'Grupa je uspješno kreirana.';
$messages['savedsearchdeleted'] = 'Sačuvana pretraga je uspješno obrisana.';
$messages['savedsearchdeleteerror'] = 'Nije moguće obrisati sačuvanu pretragu.';
$messages['savedsearchcreated'] = 'Uspješno ste sačuvali rezultate pretrage.';
$messages['savedsearchcreateerror'] = 'Nije moguće sačuvati pretragu.';
$messages['messagedeleted'] = 'Poruke su uspješno obrisane.';
$messages['messagemoved'] = 'Poruke su uspješno premještene.';
$messages['messagecopied'] = 'Poruke uspješno kopirane.';
$messages['messagemarked'] = 'Poruke uspješno označene.';
$messages['autocompletechars'] = 'Unesite barem $min znakova za automatsko popunjavanje.';
$messages['autocompletemore'] = 'Pronađeno je još rezultata. Molimo vas da upišete još znakova.';
$messages['namecannotbeempty'] = 'Polje za ime ne može biti prazno.';
$messages['nametoolong'] = 'Ime je predugo.';
$messages['folderupdated'] = 'Folder je uspješno ažuriran.';
$messages['foldercreated'] = 'Folder je uspješno kreiran.';
$messages['invalidimageformat'] = 'Format slike nije ispravan.';
$messages['mispellingsfound'] = 'Pronađene su pravopisne greške u ovoj poruci.';
$messages['parentnotwritable'] = 'Nije moguće kreirati/premjestiti folder u odabrani matični folder. Nemate prava pristupa.';
$messages['messagetoobig'] = 'Dio poruke je prevelik za procesiranje.';
$messages['noscriptwarning'] = 'Upozorenje! Ovom webmail servisu je potreban Javascript! Da biste ga mogli koristiti, prvo je potrebno da omogućite Javascript u postavkama vašeg browsera.';
$messages['messageissent'] = 'Poruka je već poslana, ali nije sačuvana. Želite li sada da je sačuvate?';
$messages['errnotfound'] = 'Fajl nije pronađen';
$messages['errnotfoundexplain'] = 'Traženi resurs nije pronađen!';
$messages['errfailedrequest'] = 'Neuspjeli zahtjev';
$messages['errauthorizationfailed'] = 'Autorizacija neuspjela';
$messages['errunauthorizedexplain'] = 'Nije moguće verificirani vašu dozvolu pristupa za ovaj servis!';
$messages['errrequestcheckfailed'] = 'Provjera zahtjeva nije uspjela';
$messages['errcsrfprotectionexplain'] = "Radi vaše zaštite, pristup ovom resursu je osiguran pomoću CSRF-a.\nAko vam je prikazana ova poruku, najvjerovatnije se niste odjavili prije napuštanja web aplikacije\n\nVaša akcija je sada neophodna za nastavak rada.";
$messages['errcontactserveradmin'] = 'Molimo vas da kontaktirate administratora servera.';
$messages['clicktoresumesession'] = 'Kliknite ovdje da nastavite rad u vašoj prethodnoj sesiji';
localization/az_AZ/labels.inc000064400000054750151727150600012214 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product-a xoş gəldiniz!';
$labels['username'] = 'İstifadəçi adı';
$labels['password'] = 'Şifrə';
$labels['server'] = 'Server';
$labels['login'] = 'Giriş';
$labels['logout'] = 'Çıx';
$labels['mail'] = 'Poçt';
$labels['settings'] = 'Nizamlamalar';
$labels['addressbook'] = 'Ünvanlar';
$labels['inbox'] = 'Gələnlər';
$labels['drafts'] = 'Qaralamalar';
$labels['sent'] = 'Göndərilənlər';
$labels['trash'] = 'Səbət';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Xüsusi qovluqlar üçün real adları göstər';
$labels['subject'] = 'Mövzu';
$labels['from'] = 'Kimdən';
$labels['sender'] = 'Göndərən';
$labels['to'] = 'Kimə';
$labels['cc'] = 'Nüsxə';
$labels['bcc'] = 'Gizli';
$labels['replyto'] = 'Cavabla';
$labels['followupto'] = 'İzlə';
$labels['date'] = 'Tarix';
$labels['size'] = 'Ölçü';
$labels['priority'] = 'Vaciblik';
$labels['organization'] = 'Təşkilat';
$labels['readstatus'] = 'Statusu oxu';
$labels['listoptions'] = 'Siyahı ayarları...';
$labels['mailboxlist'] = 'Qovluqlar';
$labels['messagesfromto'] = '$count mesajdan $from - $to arası mesajlar';
$labels['threadsfromto'] = 'Müzakirə: $from - $to Toplam: $count';
$labels['messagenrof'] = 'Məktub: $nr / $count';
$labels['fromtoshort'] = '$from – $to-dan $count';
$labels['copy'] = 'Kopyala';
$labels['move'] = 'Köçür';
$labels['moveto'] = 'Burada köçür...';
$labels['copyto'] = 'Bura kopyala...';
$labels['download'] = 'Endir';
$labels['open'] = 'Aç';
$labels['showattachment'] = 'Göstər';
$labels['showanyway'] = 'İstənilən halda göstər';
$labels['filename'] = 'Faylın adı';
$labels['filesize'] = 'Faylın ölçüsü';
$labels['addtoaddressbook'] = 'Ünvanlara əlavə et';
$labels['sun'] = 'B';
$labels['mon'] = 'Be';
$labels['tue'] = 'Ç';
$labels['wed'] = 'Ça';
$labels['thu'] = 'C';
$labels['fri'] = 'Ca';
$labels['sat'] = 'Ş';
$labels['sunday'] = 'Bazar';
$labels['monday'] = 'Bazar ertəsi';
$labels['tuesday'] = 'Çərçənbə';
$labels['wednesday'] = 'Çərşənbə axşamı';
$labels['thursday'] = 'Cümə';
$labels['friday'] = 'Cümə axşamı';
$labels['saturday'] = 'Şənbə';
$labels['jan'] = 'Yan';
$labels['feb'] = 'Fev';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'May';
$labels['jun'] = 'İyn';
$labels['jul'] = 'İyl';
$labels['aug'] = 'Avq';
$labels['sep'] = 'Sen';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Noy';
$labels['dec'] = 'Dek';
$labels['longjan'] = 'Yanvar';
$labels['longfeb'] = 'Fevral';
$labels['longmar'] = 'Mart';
$labels['longapr'] = 'Aprel';
$labels['longmay'] = 'May';
$labels['longjun'] = 'İyun';
$labels['longjul'] = 'İyul';
$labels['longaug'] = 'Avqust';
$labels['longsep'] = 'Sentyabr';
$labels['longoct'] = 'Oktyabr';
$labels['longnov'] = 'Noyabr';
$labels['longdec'] = 'Dekabr';
$labels['today'] = 'Bu gün';
$labels['refresh'] = 'Yenilə';
$labels['checkmail'] = 'Gələnləri yoxla';
$labels['compose'] = 'Məktub yaz';
$labels['writenewmessage'] = 'Yeni məktub';
$labels['reply'] = 'Cavabla';
$labels['replytomessage'] = 'Göndərənə cavabla';
$labels['replytoallmessage'] = 'Hamıya cavabla';
$labels['replyall'] = 'Hamıya cavab';
$labels['replylist'] = 'Cavab siyahısı';
$labels['forward'] = 'Ötür';
$labels['forwardinline'] = 'Məktubda ötür';
$labels['forwardattachment'] = 'Əlavə kimi ötür';
$labels['forwardmessage'] = 'Yönəlt';
$labels['deletemessage'] = 'Sil';
$labels['movemessagetotrash'] = 'Məktubu səbətə köçür';
$labels['printmessage'] = 'Çap et';
$labels['previousmessage'] = 'Əvvəlki məktubu göstər';
$labels['firstmessage'] = 'Birinci məktubu göstər';
$labels['nextmessage'] = 'Sonrakı məktubu göstər';
$labels['lastmessage'] = 'Sonuncu məktubu göstər';
$labels['backtolist'] = 'Məktublar siyahısına qayıt';
$labels['viewsource'] = 'Mənbəni göstər';
$labels['mark'] = 'İşarələ';
$labels['markmessages'] = 'Məktubları işarələ';
$labels['markread'] = 'Oxunmuş';
$labels['markunread'] = 'Oxunmamış';
$labels['markflagged'] = 'Qeyd et';
$labels['markunflagged'] = 'Qeydi çıxar';
$labels['moreactions'] = 'Daha çox seçim...';
$labels['folders-all'] = 'Bütün qovluqlar';
$labels['more'] = 'Daha çox';
$labels['back'] = 'Geri';
$labels['options'] = 'Ayarlar';
$labels['first'] = 'İlk';
$labels['last'] = 'Son';
$labels['previous'] = 'Əvvəlki';
$labels['next'] = 'Sonrakı';
$labels['select'] = 'Seçin';
$labels['all'] = 'Hamısı';
$labels['none'] = 'Heç biri';
$labels['currpage'] = 'Hazırki səhifəni';
$labels['isread'] = 'Oxu';
$labels['unread'] = 'Oxunmamışları';
$labels['flagged'] = 'İşarəliləri';
$labels['unflagged'] = 'İşarətlənməyib';
$labels['unanswered'] = 'Cavabsızları';
$labels['withattachment'] = 'Qoşma ilə';
$labels['deleted'] = 'Silinmişləri';
$labels['undeleted'] = 'Silinməyib';
$labels['replied'] = 'Cavablanıb';
$labels['forwarded'] = 'Yönləndirilib';
$labels['invert'] = 'İnvertliləri';
$labels['filter'] = 'Süzgəc';
$labels['list'] = 'Siyahı';
$labels['threads'] = 'Müzakirələr';
$labels['expand-all'] = 'Hamısını aç';
$labels['expand-unread'] = 'Oxunmamışları aç';
$labels['collapse-all'] = 'Hamısını bük';
$labels['threaded'] = 'Müzakirə';
$labels['autoexpand_threads'] = 'Müzakirəni aç';
$labels['do_expand'] = 'bütün müzakirələr';
$labels['expand_only_unread'] = 'yalnız oxunmamış məktublarla';
$labels['fromto'] = 'Göndərən/Qəbul edən';
$labels['flag'] = 'Bayrağ';
$labels['attachment'] = 'Əlavə';
$labels['nonesort'] = 'Heç biri';
$labels['sentdate'] = 'Göndərilmə tarixi';
$labels['arrival'] = 'Çatdırılma tarixi';
$labels['asc'] = 'Çoxalan';
$labels['desc'] = 'Azalan';
$labels['listcolumns'] = 'Sütunlar';
$labels['listsorting'] = 'Sütunları çeşidlə';
$labels['listorder'] = 'Çeşidləmə qaydası';
$labels['listmode'] = 'Görünüş rejimi';
$labels['layoutlist'] = 'Siyahı';
$labels['folderactions'] = 'Qovluq işləri...';
$labels['compact'] = 'Sıx';
$labels['empty'] = 'Boşalt';
$labels['importmessages'] = 'Mesajların idxalı';
$labels['quota'] = 'Disk istifadəsi';
$labels['unknown'] = 'naməlum';
$labels['unlimited'] = 'limitsiz';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'İşlədilib';
$labels['quotastorage'] = 'Disk həcmi';
$labels['quotamessage'] = 'Mesaj sayı';
$labels['quicksearch'] = 'Sürətli axtarış';
$labels['resetsearch'] = 'Axtarışı yenilə';
$labels['searchmod'] = 'Axtarış variantları';
$labels['msgtext'] = 'Bütün məktub';
$labels['body'] = 'Mətn';
$labels['type'] = 'Növ';
$labels['namex'] = 'Ad';
$labels['currentfolder'] = 'Hazırki qovluq';
$labels['subfolders'] = 'Bu və alt qovluqlar';
$labels['allfolders'] = 'Bütün qovluqlar';
$labels['searchinterval-1W'] = 'bir həftədən köhnə';
$labels['searchinterval-1M'] = 'bir aydan əvvəl';
$labels['searchinterval-1Y'] = 'bir ildən əvvəl';
$labels['searchinterval1W'] = 'bir həftədən cavan';
$labels['searchinterval1M'] = 'bir aydan cavan';
$labels['searchinterval1Y'] = 'bir ildən cavan';
$labels['openinextwin'] = 'Yeni pəncərədə aç';
$labels['emlsave'] = 'Saxla (.eml)';
$labels['changeformattext'] = 'Sadə mətn formatında göstər';
$labels['changeformathtml'] = 'HTML formatında göstər';
$labels['editasnew'] = 'Yeni kimi redaktə et';
$labels['send'] = 'Göndər';
$labels['sendmessage'] = 'İndi göndər';
$labels['savemessage'] = 'Qaralama saxla';
$labels['addattachment'] = 'Fayl əlavə et';
$labels['charset'] = 'Kodlaşdırma';
$labels['editortype'] = 'Redaktor';
$labels['returnreceipt'] = 'Cavab sorğusu';
$labels['dsn'] = 'Çatdırılma statusu haqda bildiriş';
$labels['mailreplyintro'] = '$date tarixdə, $sender yazıb:';
$labels['originalmessage'] = 'Orijinal məktub';
$labels['selectimage'] = 'Şəkli seç';
$labels['addimage'] = 'Şəkil əlavə et';
$labels['encrypt'] = 'Şifrələ';
$labels['encryptmessage'] = 'Mesajı şifrələ';
$labels['importpubkeys'] = 'İctimai açarları idxal et';
$labels['encryptedsendialog'] = 'Şifrəli mesaj göndərilir';
$labels['keyid'] = 'Açar ID';
$labels['keyexpired'] = 'Vaxtı keçib';
$labels['insert'] = 'Yerləşdir';
$labels['recipient'] = 'Qəbul edən';
$labels['editidents'] = 'İdentifikasiyanı dəyiş';
$labels['spellcheck'] = 'Orfoqrafiya';
$labels['checkspelling'] = 'Orfoqrafiyanı yoxla';
$labels['resumeediting'] = 'Redaktəni davam et';
$labels['revertto'] = 'Dəyişiklikləri ləğv et';
$labels['restore'] = 'Bərpa';
$labels['restoremessage'] = 'Məktub bərpa edilsin?';
$labels['responses'] = 'Cavablar';
$labels['insertresponse'] = 'Cavab daxil et';
$labels['manageresponses'] = 'Cavabların idarə edilməsi';
$labels['newresponse'] = 'Yeni cavab yarat';
$labels['addresponse'] = 'Cavab əlavə et';
$labels['editresponse'] = 'Cavabı redaktə et';
$labels['editresponses'] = 'Cavabları redaktə et';
$labels['responsename'] = 'Ad';
$labels['responsetext'] = 'Cavab mətni';
$labels['attach'] = 'Fayl əlavə et';
$labels['attachments'] = 'Bərkidilmiş Fayllar';
$labels['upload'] = 'Yüklə';
$labels['close'] = 'Bağla';
$labels['messageoptions'] = 'Məktub xüsusiyyətləri...';
$labels['low'] = 'Alçaq';
$labels['lowest'] = 'Çox alçaq';
$labels['normal'] = 'Normal';
$labels['high'] = 'Yüksək';
$labels['highest'] = 'Çox yüksək';
$labels['nosubject'] = '(mövzu yoxdur)';
$labels['showimages'] = 'Şəkilləri göstər';
$labels['alwaysshow'] = '$sender-dən olan məktublarda həmişə şəkilləri göstər';
$labels['isdraft'] = 'Bu qaralama məktubudur.';
$labels['andnmore'] = 'Daha çox $nr more...';
$labels['togglemoreheaders'] = 'Daha çox məktub';
$labels['togglefullheaders'] = 'Məktubun çiy başlıqlarını keçir';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Mətn';
$labels['savesentmessagein'] = 'Məktubu saxla...';
$labels['dontsave'] = 'saxlama';
$labels['maxuploadsize'] = 'Faylın maksimal ölçüsü: $size';
$labels['addcc'] = 'Kopya əlavə et';
$labels['addbcc'] = 'Gizli kopya əlavə et';
$labels['addreplyto'] = 'Yönəltmə əlavə et';
$labels['addfollowupto'] = '"İzlə" əlavə et';
$labels['mdnrequest'] = 'Məktubu göndərən onu oxuduğunuz haqda sorğu almaq istəyir. Göndərilsin?';
$labels['receiptread'] = 'Oxunulma haqda soğru';
$labels['yourmessage'] = 'Bu məktubunuzun oxunulduğu haqda sorğudur';
$labels['receiptnote'] = 'Bu sorğu yalnız qəbul edilən tərəfindən məktubun açıldığına göstərir. Onun oxunulduğuna zəmanət vermir.';
$labels['name'] = 'Göstərilən ad';
$labels['firstname'] = 'Adı';
$labels['surname'] = 'Soyadı';
$labels['middlename'] = 'Orta adı';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Suffiks';
$labels['nickname'] = 'Ləqəb';
$labels['jobtitle'] = 'Vəzifə';
$labels['department'] = 'Departament';
$labels['gender'] = 'Cins';
$labels['maidenname'] = 'Qız adı';
$labels['email'] = 'E-Poçt';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Ünvan';
$labels['street'] = 'Küçə';
$labels['locality'] = 'Şəhər';
$labels['zipcode'] = 'ZIP kod';
$labels['region'] = 'Region';
$labels['country'] = 'Ölkə';
$labels['birthday'] = 'Ad günü';
$labels['anniversary'] = 'İldönümü';
$labels['website'] = 'Vebsayt';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Qeydlər';
$labels['male'] = 'kişi';
$labels['female'] = 'qadın';
$labels['manager'] = 'Menecer';
$labels['assistant'] = 'Köməkçi';
$labels['spouse'] = 'Ər-arvad';
$labels['allfields'] = 'Bütün sahələr';
$labels['search'] = 'Axtar';
$labels['searchresult'] = 'Axtarış nəticəsi';
$labels['advsearch'] = 'Ətraflı axtarış';
$labels['advanced'] = 'Əlavə';
$labels['other'] = 'Başqa';
$labels['typehome'] = 'Ev';
$labels['typework'] = 'İş';
$labels['typeother'] = 'Başqa';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Əsas';
$labels['typehomefax'] = 'Ev faksı';
$labels['typeworkfax'] = 'İş faksı';
$labels['typecar'] = 'Maşın';
$labels['typepager'] = 'Peycer';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Köməkçi';
$labels['typehomepage'] = 'Ana səhifə';
$labels['typeblog'] = 'Bloq';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Sahə əlavə et';
$labels['addcontact'] = 'Əlaqə əlavə et';
$labels['editcontact'] = 'Ünvanı redaktə et';
$labels['contacts'] = 'Əlaqələr';
$labels['contactproperties'] = 'Kontakt xüsusiyyətləri';
$labels['personalinfo'] = 'Şəxsi məlumat';
$labels['personal'] = 'Şəxsi';
$labels['edit'] = 'Redaktə et';
$labels['cancel'] = 'Ləğv et';
$labels['save'] = 'Saxla';
$labels['delete'] = 'Sil';
$labels['rename'] = 'Adlandır';
$labels['addphoto'] = 'Əlavə et';
$labels['replacephoto'] = 'Adı dəyiş';
$labels['uploadphoto'] = 'Şəkil yüklə';
$labels['deletecontact'] = 'Seçilmiş ünvanları sil';
$labels['composeto'] = 'Seçilmiş ünvanlara məktub yaz';
$labels['contactsfromto'] = '$count ünvanının $from - $to arası';
$labels['print'] = 'Çap et';
$labels['export'] = 'İxrac et';
$labels['exportall'] = 'Hamısını İxrac et';
$labels['exportsel'] = 'Seçilmişləri İxrac et';
$labels['exportvcards'] = 'Ünvanları vCards formatında ixrac et';
$labels['addgroup'] = 'Qrup əlavə et';
$labels['grouprename'] = 'Qruğun adını dəyişdir';
$labels['groupdelete'] = 'Qrupu sil';
$labels['groupremoveselected'] = 'Qrupdan seçilmiş kontaktları sil';
$labels['previouspage'] = 'Əvvəlkini göstər';
$labels['firstpage'] = 'Birincini göstər';
$labels['nextpage'] = 'Sonrakını göstər';
$labels['lastpage'] = 'Sonuncunu göstər';
$labels['group'] = 'Qrup';
$labels['groups'] = 'Qruplar';
$labels['listgroup'] = 'Qrup üzvlərinin siyahısı';
$labels['personaladrbook'] = 'Şəxsi ünvanlar';
$labels['searchsave'] = 'Sorğunu saxla';
$labels['searchdelete'] = 'Sorğunu sil';
$labels['import'] = 'İdxal';
$labels['importcontacts'] = 'Ünvanların idxalı';
$labels['importtarget'] = 'Kontaktları əlavə et';
$labels['importreplace'] = 'Ünvan kitabçasını dəyiş';
$labels['importgroups'] = 'Qrup idxalı tapşırığı';
$labels['importgroupsall'] = 'Hamısı (əgər lazımdırsa qrupun yaradılması)';
$labels['importgroupsexisting'] = 'Yalnız mövcud qruplar üçün';
$labels['done'] = 'Bitdi';
$labels['settingsfor'] = 'Nizamlamaları';
$labels['about'] = 'Haqqında';
$labels['preferences'] = 'Nizamlamalar';
$labels['userpreferences'] = 'İstifadəçi nizamlamaları';
$labels['editpreferences'] = 'İstifadəçi nizamlamalarını redaktə et';
$labels['identities'] = 'Kimliklər';
$labels['preferhtml'] = 'HTML-də göstər';
$labels['defaultcharset'] = 'İlkin vəziyyətdəki kodlaşdırma';
$labels['htmlmessage'] = 'HTML məktub';
$labels['messagepart'] = 'Hissə';
$labels['digitalsig'] = 'Rəqəmsal imza';
$labels['dateformat'] = 'Tarix formatı';
$labels['timeformat'] = 'Vaxt formatı';
$labels['prettydate'] = 'Qəşəng tarixlər';
$labels['setdefault'] = 'İlkin vəziyyətə qaytar';
$labels['autodetect'] = 'Avto';
$labels['language'] = 'Dil';
$labels['timezone'] = 'Saat qurşağı';
$labels['pagesize'] = 'Səhifədə sətrlər';
$labels['signature'] = 'İmza';
$labels['dstactive'] = 'Yay vaxtı';
$labels['showinextwin'] = 'Məktubu yeni pəncərədə aç';
$labels['composeextwin'] = 'Yeni pəncərədə yarat';
$labels['htmleditor'] = 'HTML-də mesaj yaz';
$labels['htmlonreply'] = 'yalnız HTML mesajlar ilə cavab';
$labels['htmlonreplyandforward'] = 'HTML məktuba cavab və yönəltmə zamanı';
$labels['htmlsignature'] = 'HTML imza';
$labels['showemail'] = 'E-poçt ünvanları displey adları ilə göstər';
$labels['previewpane'] = 'Prevyu paneli göstər';
$labels['skin'] = 'İnterfeys stili';
$labels['logoutclear'] = 'Poçtdan çıxan zaman səbəti təmizlə';
$labels['logoutcompact'] = 'Poçtdan çıxan zaman gələnləri sıx';
$labels['uisettings'] = 'İstifadəçi interfeysi';
$labels['serversettings'] = 'Server nizamlamaları';
$labels['mailboxview'] = 'Poçt qutusunun görünüşü';
$labels['mdnrequests'] = 'Göndərilmə bildirişi';
$labels['askuser'] = 'göndərilmə zamanı istifadəçidən soruş';
$labels['autosend'] = 'avtomatik göndər';
$labels['autosendknown'] = 'kontaktlarıma qəbz yolla. Əks halda soruş';
$labels['autosendknownignore'] = 'kontaktlarıma qəbz yolla. Əks halda iqnor et';
$labels['readwhendeleted'] = 'Məktubu siləndə oxunmuş kimi qeyd et';
$labels['flagfordeletion'] = 'Silmə əvəzi silinmə işarəsilə qeyd et';
$labels['skipdeleted'] = 'Silinmiş məktubları göstərmə';
$labels['deletealways'] = 'Məktubu səbətə köçürmək alınmırsa, silinsin';
$labels['deletejunk'] = 'SPAM-dakı məktubları səbətə yollamadan sil';
$labels['showremoteimages'] = 'Silinmiç şəkilləri göstər';
$labels['fromknownsenders'] = 'məlum göndərənlərdən';
$labels['always'] = 'hər zaman';
$labels['showinlineimages'] = 'Əlavə olunmuş şəkili məktubun aşağısında göstər';
$labels['autosavedraft'] = 'Qaralamanı avtomatik saxla';
$labels['everynminutes'] = 'hər $n dəqiqə(lər)';
$labels['refreshinterval'] = 'Yenilə (yeni məktubları yoxla v.s.)';
$labels['never'] = 'heç vaxt';
$labels['immediately'] = 'dərhal';
$labels['messagesdisplaying'] = 'Məktubların göstərilməsi';
$labels['messagescomposition'] = 'Məktubların yazılması';
$labels['mimeparamfolding'] = 'Bərkidilənlərin adları';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (başqa)';
$labels['force7bit'] = '8-bitli simvollar üçün MIME istifadə et';
$labels['advancedoptions'] = 'Ətraflı nizamlama';
$labels['focusonnewmessage'] = 'Yeni məktub zamanı brauzerin pəncərəsini fokusla';
$labels['checkallfolders'] = 'Bütün qovluqlarda yeni məktubları yoxla';
$labels['defaultfont'] = 'HTML məktubun default şrifti';
$labels['mainoptions'] = 'Əsas nizamlamalar';
$labels['browseroptions'] = 'Brauzer ayarları';
$labels['section'] = 'Bölmə';
$labels['maintenance'] = 'Xidmət';
$labels['newmessage'] = 'Yeni məktub';
$labels['signatureoptions'] = 'İmzanın nizamlamaları';
$labels['whenreplying'] = 'Cavab zamanı';
$labels['replyempty'] = 'orijinal məktubu sitat gətirmə';
$labels['replytopposting'] = 'orijinaldan əvvəl yeni məktub yaz';
$labels['replybottomposting'] = 'orijinaldan sonra yeni məktub yaz';
$labels['replyremovesignature'] = 'Cavab zamanı imzanı sil';
$labels['autoaddsignature'] = 'İmzanı avtomatik əlavə et';
$labels['newmessageonly'] = 'yalnız yeni məktublarda';
$labels['replyandforwardonly'] = 'Yalnız cavab və yönəldilənlərdə';
$labels['insertsignature'] = 'İmza əlavə et';
$labels['afternseconds'] = '$n saniyədən sonra';
$labels['reqmdn'] = 'Hər zaman çatdırılma bildirişini istə';
$labels['reqdsn'] = 'Hər zaman çatıdrılma haqda statusu istə';
$labels['replysamefolder'] = 'Cavab mesajları üçün saxlanılan yer';
$labels['defaultabook'] = 'Öz qurğulu ünvan kitabçası';
$labels['autocompletesingle'] = 'Avtobitmədə əlavə ünvanları burax';
$labels['listnamedisplay'] = 'Kontaklar siyahısı bu cür göstər';
$labels['spellcheckbeforesend'] = 'Göndərməzdən əvvəl orfoqrafiyanı yoxla';
$labels['spellcheckoptions'] = 'Orfoqrafiya yoxlanışının ayarları';
$labels['spellcheckignoresyms'] = 'Simvollar ilə sözləri burax';
$labels['spellcheckignorenums'] = 'Rəqəmlər ilə sözləri keç';
$labels['spellcheckignorecaps'] = 'Böyük hərfləri olan sözlərdən keç';
$labels['addtodict'] = 'Lüğətə əlavə et';
$labels['mailtoprotohandler'] = 'mailto: keçid üçün protokol qeyd et';
$labels['standardwindows'] = 'Handle popapsı standart pəncərələr kimi';
$labels['forwardmode'] = 'Məktubların yönəldilməsi';
$labels['inline'] = 'mətndə';
$labels['asattachment'] = 'fayl kimi';
$labels['replyallmode'] = '[Hamıya cavab] düyməsinin susmaya görə hərəkəti';
$labels['replyalldefault'] = 'hamıya cavab';
$labels['replyalllist'] = 'yalnız poçt siyahısına (əgər tapılıbsa) cavab ';
$labels['allmessages'] = 'bütün məktublar';
$labels['folder'] = 'Qovluq';
$labels['folders'] = 'Qovluqlar';
$labels['foldername'] = 'Qovluq adı';
$labels['subscribed'] = 'İmzalanıb';
$labels['messagecount'] = 'Məktublar';
$labels['create'] = 'Yarad';
$labels['createfolder'] = 'Yeni qovluq yarad';
$labels['managefolders'] = 'Qovluqlarla iş';
$labels['specialfolders'] = 'Xüsusi qovluqlar';
$labels['properties'] = 'Xüsusiyyətlər';
$labels['folderproperties'] = 'Qovluq xüsusiyyətləri';
$labels['parentfolder'] = 'Ana qovluq';
$labels['location'] = 'Yerləşmə';
$labels['info'] = 'Məlumat';
$labels['getfoldersize'] = 'Qovluq ölçüsünü öyrənmək üçün vur';
$labels['changesubscription'] = 'Abunəni dəyişmək üçün vurun';
$labels['foldertype'] = 'Qovluq növü';
$labels['personalfolder'] = 'Gizli qovluq';
$labels['otherfolder'] = 'Başqa istifadəçilərin qovluğu';
$labels['sharedfolder'] = 'İctimai qovluq';
$labels['findfolders'] = 'Qovluqları tap';
$labels['namespace.personal'] = 'Şəxsi';
$labels['namespace.shared'] = 'Paylaşılıb';
$labels['sortby'] = 'Çeşidlə';
$labels['sortasc'] = 'Azdan çoxa';
$labels['sortdesc'] = 'Çoxdan aza';
$labels['undo'] = 'Ləğv et';
$labels['installedplugins'] = 'Yazılmış qoşmalar';
$labels['plugin'] = 'Qoşma';
$labels['version'] = 'Versiya';
$labels['source'] = 'Mənbə';
$labels['license'] = 'Lisenziya';
$labels['support'] = 'Dəstək';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'İngilis dili';
$labels['westerneuropean'] = 'Qərbi Avropa';
$labels['easterneuropean'] = 'Şərqi Avropa';
$labels['southeasterneuropean'] = 'Cənub-Şərqi Avropa';
$labels['baltic'] = 'Baltik';
$labels['cyrillic'] = 'Kirillə';
$labels['arabic'] = 'Ərəbcə';
$labels['greek'] = 'Yunanca';
$labels['hebrew'] = 'Yəhudicə';
$labels['turkish'] = 'Türkcə';
$labels['nordic'] = 'Skandinav';
$labels['thai'] = 'Tayca';
$labels['celtic'] = 'Keltcə';
$labels['vietnamese'] = 'Vyetnamca';
$labels['japanese'] = 'Yaponca';
$labels['korean'] = 'Koreya';
$labels['chinese'] = 'Çincə';
localization/az_AZ/messages.inc000064400000027003151727150600012550 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Xəta baş verdi!';
$messages['loginfailed']  = 'Giriş uğursuz oldu.';
$messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir.';
$messages['sessionerror'] = 'Sizin sessiya köhnəlib.';
$messages['storageerror'] = 'IMAP serverlə bağlantı alınmadı.';
$messages['servererror'] = 'Server Xətası!';
$messages['servererrormsg'] = 'Server Xətası: $msg';
$messages['dberror'] = 'Məlumatlar Bazasında Xəta!';
$messages['requesttimedout'] = 'Sorğunun gözləmə müddəti bitdi';
$messages['errorreadonly'] = 'Əməliyyatı icra etmək mümkün deyil. Qovluq yalnız oxunuş üçündür.';
$messages['errornoperm'] = 'Əməliyyatı etmək mümkün deyil. Giriş qadağandır.';
$messages['erroroverquota'] = 'Əməliyyat icra edilə bilinmir. Boş disk həcmi yoxdur.';
$messages['erroroverquotadelete'] = 'Boş disk həcmi yoxdur. Məktubu silmək üçün SHIFT+DEL düyməsini istifadə edin.';
$messages['invalidrequest'] = 'Səhv sorğu! Məlumat yaddaşda qalmadı.';
$messages['invalidhost'] = 'Səhv server adı.';
$messages['nomessagesfound'] = 'Poçt qutusunda məktub tapılmadı.';
$messages['mailboxempty'] = 'Poçt boşdur';
$messages['nomessages'] = 'Məktub yoxdur';
$messages['refreshing'] = 'Yenilənmə...';
$messages['loading'] = 'Yüklənir...';
$messages['uploading'] = 'Fayl yüklənir...';
$messages['uploadingmany'] = 'Fayllar yüklənir...';
$messages['loadingdata'] = 'Məlumatlar yüklənir...';
$messages['checkingmail'] = 'Yeni məktubları yoxla...';
$messages['sendingmessage'] = 'Məktub göndərilir...';
$messages['messagesent'] = 'Məktub uğurla göndərildi';
$messages['savingmessage'] = 'Məktubu saxla...';
$messages['messagesaved'] = 'Məktub qaralamada saxlandı';
$messages['successfullysaved'] = 'Yaddaşa yazıldı';
$messages['savingresponse'] = 'Cavab mətninin saxlanılması...';
$messages['deleteresponseconfirm'] = 'Siz cavab mətnini silmək istəyirsiniz?';
$messages['addedsuccessfully'] = 'Əlaqə ünvan kitabçasına əlavə olundu';
$messages['contactnameexists'] = 'Bu adda kontakt artıq mövcuddur.';
$messages['blockedimages'] = 'Təhlükəsizlik məqsədi ilə şəkillərin yüklənməsi bloklanıb.';
$messages['encryptedmessage'] = 'Məktub şifrələnib və göstərilə bilməz. Server inzibatçısına müraciət edin.';
$messages['nocontactsfound'] = 'Ünvanlar tapılmadı';
$messages['contactnotfound'] = 'Tələb olunan ünvan tapılmadı';
$messages['sendingfailed'] = 'Məktub göndərilmədi';
$messages['senttooquickly'] = 'Məktub göndərmək üçün $sec saniyə gözləmək gərəkir';
$messages['errorsavingsent'] = 'Göndərilən məktubun saxlanılması zamanı xəta baş verdi.';
$messages['errorsaving'] = 'Saxlanılma zamanı xəta baş verdi.';
$messages['errormoving'] = 'Məktubu (məktubları) köçürmək alnmadı';
$messages['errorcopying'] = 'Məktubu (məktubları) kopyalamaq alınmadı';
$messages['errordeleting'] = 'Məktubu (məktubları) silmək alınmadı';
$messages['errormarking'] = 'Məktubu (məktubları) işarələmək mümkün deyil';
$messages['deletecontactconfirm']  = 'Seçilən ünvanı (ünvanları) silməyə əminsiniz?';
$messages['deletegroupconfirm']  = 'Qrupu silməkdə əminsiniz?';
$messages['deletemessagesconfirm'] = 'Seçilən məktubu (məktubları) silməyə əminsiniz?';
$messages['deletefolderconfirm']  = 'Bu qovluğu silməyə əminsiniz?';
$messages['purgefolderconfirm']  = 'Bu qovluqdakı bütün məktubları silməyə əminsiniz?';
$messages['contactdeleting'] = 'Kontak(lar)ın silinməsi...';
$messages['groupdeleting'] = 'Qrupun silinməsi...';
$messages['folderdeleting'] = 'Qovluğ silinir...';
$messages['foldermoving'] = 'Qovluq köçürülür...';
$messages['foldersubscribing'] = 'Qovluğa abunə...';
$messages['folderunsubscribing'] = 'Qovluğa abunədən çıx...';
$messages['formincomplete'] = 'Bütün sətrlər doldurulmayıb';
$messages['noemailwarning'] = 'Lütfən, düzgün e-poçt ünvanı daxil edin';
$messages['nonamewarning']  = 'Lütfən, ad daxil edin';
$messages['nopagesizewarning'] = 'Lütfən, səhifənin ölçüsünü daxil edin';
$messages['norecipientwarning'] = 'Lütfən, qəbul edənin ünvanını daxil edin';
$messages['nosubjectwarning']  = '"Mövzu" sahəsi boşdur. Mövzu daxil etmək istəyirsiniz?';
$messages['nobodywarning'] = 'Məktub boş göndərilsin?';
$messages['restoresavedcomposedata'] = 'Əvvəlki göndərildi, ancaq göndərilməyən məktub da tapıldı.\n\nSubject: $subject\nSaved: $date\n\nSiz bu məktubu bərpa etmək istəyirsiniz?';
$messages['nosearchname'] = 'Lütfən, ad və ya e-poçt əlavə edin';
$messages['notuploadedwarning'] = 'Əlavələr tam yüklənilməyib. Gözləyin və ya yükləməni ləğv edin.';
$messages['searchsuccessful'] = 'Tapılan məktublar: $nr';
$messages['contactsearchsuccessful'] = '$nr kontakt tapılıb.';
$messages['searchnomatch'] = 'Məktub tapılmadı';
$messages['searching'] = 'Axtarılır...';
$messages['checking'] = 'Yoxlanılır...';
$messages['nospellerrors'] = 'Orfoqrafik səhvlət tapılmadı';
$messages['folderdeleted'] = 'Qovluq uğurla silindi';
$messages['foldersubscribed'] = 'Qovluq uğurla abunə oldu';
$messages['folderunsubscribed'] = 'Qovluq uğurla abunədən çıxdı';
$messages['deletedsuccessfully'] = 'Silindi';
$messages['converting'] = 'Məktubun formatlaşması silinir...';
$messages['messageopenerror'] = 'Məktubu serverdən yükləmək alınmır';
$messages['fileuploaderror'] = 'Fayl yüklənilmədi';
$messages['filesizeerror'] = 'Yüklənilən fayl maksimal ölçüdən çoxdur - $size';
$messages['copysuccess'] = '$nr kontaktlar uğurlar kopyalanmışdır.';
$messages['movesuccess'] = '$nr kontaktlar uğurla köçürülmüşdür.';
$messages['copyerror'] = 'Heç bir kontaktı kopyalamaq olmur.';
$messages['moveerror'] = 'Heç bir kontaktı köçürmək alınmır.';
$messages['sourceisreadonly'] = 'Verilən ünvanlar mənbəyi yalnız oxunmaq üçün';
$messages['errorsavingcontact'] = 'Əlaqəni ünvanda saxlamaq mümkün deyil';
$messages['movingmessage'] = 'Məktub köçürülür...';
$messages['copyingmessage'] = 'Məktub kopyalanır...';
$messages['copyingcontact'] = 'Kontakt(lar)ın kopyalanması...';
$messages['movingcontact'] = 'Kontak(lar)ın köçürülməsi...';
$messages['deletingmessage'] = 'Məktub(lar) silinir...';
$messages['markingmessage'] = 'Məktub(lar) işarələnir...';
$messages['addingmember'] = 'Kontakt(lar)ın qrupa əlavə edilməsi...';
$messages['removingmember'] = 'Kontakt(lar)ın qrupdan silinməsi...';
$messages['receiptsent'] = 'Oxunulma haqda bildiriş göndərildi';
$messages['errorsendingreceipt'] = 'Oxunulma haqda bildiriş göndərilmədi';
$messages['deleteidentityconfirm'] = 'İdentifikasiyanı silməkdə əminsiniz?';
$messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır.';
$messages['forbiddencharacter'] = 'Qovlu adı qadağan olunmuş simvollar təşkil edir';
$messages['selectimportfile'] = 'Yüklənilən faylı seçin';
$messages['addresswriterror'] = 'Seçilmiş ünvan kitabçası yaddaşa yazıla bilməz';
$messages['contactaddedtogroup'] = 'Ünvanlar qrupa əlavə edildi';
$messages['contactremovedfromgroup'] = 'Ünvanlar qrupdan silindi';
$messages['nogroupassignmentschanged'] = 'Qruplar arası bölgü dəyişməyib.';
$messages['importwait'] = 'İdxal gedir, lütfən gözləyin...';
$messages['importformaterror'] = 'İdxal xətası. Yüklənilən fayl naməlum məlumat formatına malikdir.';
$messages['importconfirm'] = '<b>$inserted ünvanlar müvəffəqiyyətlə idxal edildi, mövcud $skipped buraxılıb</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Buraxılmış $skipped mövcud daxillər</b>';
$messages['importmessagesuccess'] = '$nr məktublar uğurla idxal edildi';
$messages['importmessageerror'] = 'İdxal alınmadı! Yüklənilmiş fayl düzgün məktub və ya poçt faylı deyil';
$messages['opnotpermitted'] = 'Əməliyyat qadağandır!';
$messages['httpreceivedencrypterror'] = 'Serverdə qaçıımaz xəta baş verib. Təcili öz inzibatçınız ilə əlaqə qurun. <b>Sizin məktub göndərilməyə bilər.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Serverlə bağlantı alınmadı';
$messages['smtpautherror'] = 'SMTP Error ($code): İdentifikasiya xətası';
$messages['smtpfromerror'] = 'SMTP Error ($code): Göndərəni səlavə etmək mümkün deyil - "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): Qəbul edəni əlavə etmək mümkün deyil - "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error ($code): Qəbul edənlərin siyahısını emal etmək mümkün deyil';
$messages['smtperror'] = 'SMTP Error ($code): $msg';
$messages['toomanyrecipients'] = 'Qəbul edənlər həddindən artıq çoxdur. Lütfən, $max qədər azaldın.';
$messages['maxgroupmembersreached'] = 'Qrupun ölçüsü imkan verilən maksimumdan artıqdır - $max';
$messages['internalerror'] = 'Daxili xəta. Lütfən bir daha cəhd edin.';
$messages['contactdelerror'] = 'Kontak(lar)ı silmək alınmadı';
$messages['contactdeleted'] = 'Kontak(lar) uğurla silindi';
$messages['contactrestoreerror'] = 'Silinmiş kontakt(lar)ın bərpası alınmadı';
$messages['contactrestored'] = 'Kontakt(lar) bərpa edildi.';
$messages['groupdeleted'] = 'Qrup silindi';
$messages['grouprenamed'] = 'Qrupun adı dəyişdirildi';
$messages['groupcreated'] = 'Qrup yaradıldı';
$messages['savedsearchdeleted'] = 'Saxlanılmış sorğu silindi.';
$messages['savedsearchdeleteerror'] = 'Saxlanılmış sorğunu silmək alınmadı.';
$messages['savedsearchcreated'] = 'Saxlanılmış sorğu yaradıldı.';
$messages['savedsearchcreateerror'] = 'Saxlanılmış sorğunu yaratmaq alınmadı';
$messages['messagedeleted'] = 'Məktub(lar) uğurla silindi';
$messages['messagemoved'] = 'Məktub(lar) uğurla köçürüldü';
$messages['messagecopied'] = 'Məktub(lar) uğurla kopyalandı';
$messages['messagemarked'] = 'Məktub(lar) uğurla işarələndi';
$messages['autocompletechars'] = 'Avtokomplektasiya üçün $min işarə daxil edin';
$messages['autocompletemore'] = 'Axtarış çox nəticə çıxardı. Lütfən, dəqiqləşdirin.';
$messages['namecannotbeempty'] = 'Ad boş ola bilməz';
$messages['nametoolong'] = 'Ad çox uzundur';
$messages['folderupdated'] = 'Qovluq yeniləndi';
$messages['foldercreated'] = 'Qovluq yaradıldı';
$messages['invalidimageformat'] = 'Şəkil formatı düzgün deyil';
$messages['mispellingsfound'] = 'Məktubda orfoqrafik səhvlər tapılıb';
$messages['parentnotwritable'] = 'Qovluğu seçilmiş ana qovluğa köçürmək/yaratmaq alınmır. Giriş hüququ yoxdur.';
$messages['messagetoobig'] = 'Məktubun bir hissəsi emal üçün böyükdür.';
$messages['noscriptwarning'] = 'Xəbərdarlıq: Bu vebmeyl xidməti Javascript tələb edir! Funksiyanı istifadə etmək üçün lütfən, brauzerinizin ayarlarında Javascript-i yandırın.';
localization/nl_BE/labels.inc000064400000051561151727150600012164 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Welkom bij $product';
$labels['username'] = 'Gebruikersnaam';
$labels['password'] = 'Wachtwoord';
$labels['server'] = 'Server';
$labels['login'] = 'Aanmelden';
$labels['logout'] = 'Afmelden';
$labels['mail'] = 'Berichten';
$labels['settings'] = 'Instellingen';
$labels['addressbook'] = 'Contactpersonen';
$labels['inbox'] = 'Postvak IN';
$labels['drafts'] = 'Concepten';
$labels['sent'] = 'Verzonden berichten';
$labels['trash'] = 'Prullenbak';
$labels['junk'] = 'Spam';
$labels['subject'] = 'Onderwerp';
$labels['from'] = 'Van';
$labels['sender'] = 'Afzender';
$labels['to'] = 'Aan';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Antwoorden aan';
$labels['followupto'] = 'Followup aan';
$labels['date'] = 'Datum';
$labels['size'] = 'Grootte';
$labels['priority'] = 'Prioriteit';
$labels['organization'] = 'Organisatie';
$labels['readstatus'] = 'Gelezen?';
$labels['listoptions'] = 'Lijstopties...';
$labels['mailboxlist'] = 'Mappen';
$labels['messagesfromto'] = 'Berichten $from - $to van $count';
$labels['threadsfromto'] = 'Conversaties $from - $to van $count';
$labels['messagenrof'] = 'Bericht $nr van $count';
$labels['fromtoshort'] = '$from - $to van $count';
$labels['copy'] = 'Kopieer';
$labels['move'] = 'Verplaats';
$labels['moveto'] = 'Verplaats naar...';
$labels['download'] = 'Downloaden';
$labels['showattachment'] = 'Weergeven';
$labels['showanyway'] = 'Toch weergeven';
$labels['filename'] = 'Bestandsnaam';
$labels['filesize'] = 'Bestandsgrootte';
$labels['addtoaddressbook'] = 'Voeg toe aan lijst met contactpersonen';
$labels['sun'] = 'Zo';
$labels['mon'] = 'Ma';
$labels['tue'] = 'Di';
$labels['wed'] = 'Wo';
$labels['thu'] = 'Do';
$labels['fri'] = 'Vr';
$labels['sat'] = 'Za';
$labels['sunday'] = 'Zondag';
$labels['monday'] = 'Maandag';
$labels['tuesday'] = 'Dinsdag';
$labels['wednesday'] = 'Woensdag';
$labels['thursday'] = 'Donderdag';
$labels['friday'] = 'Vrijdag';
$labels['saturday'] = 'Zaterdag';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mrt';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mei';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'Januari';
$labels['longfeb'] = 'Februari';
$labels['longmar'] = 'Maart';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mei';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'Augustus';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
$labels['today'] = 'Vandaag';
$labels['refresh'] = 'Vernieuwen';
$labels['checkmail'] = 'Controleer op nieuwe berichten';
$labels['compose'] = 'Nieuw bericht opstellen';
$labels['writenewmessage'] = 'Nieuw bericht';
$labels['reply'] = 'Beantwoorden';
$labels['replytomessage'] = 'Beantwoorden aan afzender';
$labels['replytoallmessage'] = 'Antwoorden naar lijst of naar afzender en alle ontvangers';
$labels['replyall'] = 'Allen beantwoorden';
$labels['replylist'] = 'Lijst beantwoorden';
$labels['forward'] = 'Doorsturen';
$labels['forwardinline'] = 'Voorwaarts in lijn';
$labels['forwardattachment'] = 'Doorsturen als bijlage';
$labels['forwardmessage'] = 'Bericht doorsturen';
$labels['deletemessage'] = 'Dit bericht verwijderen';
$labels['movemessagetotrash'] = 'Verplaats bericht naar verwijderde items';
$labels['printmessage'] = 'Afdrukken';
$labels['previousmessage'] = 'Vorig bericht';
$labels['firstmessage'] = 'Eerste bericht';
$labels['nextmessage'] = 'Volgende bericht';
$labels['lastmessage'] = 'Laatste bericht';
$labels['backtolist'] = 'Terug naar berichtenlijst';
$labels['viewsource'] = 'Broncode bericht weergeven';
$labels['mark'] = 'Markeren';
$labels['markmessages'] = 'Markeer berichten';
$labels['markread'] = 'Als gelezen';
$labels['markunread'] = 'Als ongelezen';
$labels['markflagged'] = 'Selecteren';
$labels['markunflagged'] = 'Niet Selecteren';
$labels['moreactions'] = 'Meer acties...';
$labels['more'] = 'Meer';
$labels['back'] = 'Terug';
$labels['options'] = 'Opties';
$labels['actions'] = 'Acties';
$labels['select'] = 'Selecteren';
$labels['all'] = 'Alle';
$labels['none'] = 'Geen';
$labels['currpage'] = 'Huidige pagina';
$labels['isread'] = 'Lees';
$labels['unread'] = 'Ongelezen';
$labels['flagged'] = 'Geselecteerd';
$labels['unanswered'] = 'Onbeantwoord';
$labels['deleted'] = 'Verwijderd';
$labels['undeleted'] = 'Niet verwijderd';
$labels['invert'] = 'Selectie omkeren';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lijst';
$labels['threads'] = 'Conversaties';
$labels['expand-all'] = 'Alles uitklappen';
$labels['expand-unread'] = 'Ongelezen uitklappen';
$labels['collapse-all'] = 'Alles inklappen';
$labels['threaded'] = 'Conversaties';
$labels['autoexpand_threads'] = 'Klap alle conversaties uit';
$labels['do_expand'] = 'alle conversaties';
$labels['expand_only_unread'] = 'alleen met ongelezen berichten';
$labels['fromto'] = 'Afzender/Ontvanger';
$labels['flag'] = 'Markeer';
$labels['attachment'] = 'Bijlage';
$labels['nonesort'] = 'Geen';
$labels['sentdate'] = 'Verzenddatum';
$labels['arrival'] = 'Ontvangstdatum';
$labels['asc'] = 'oplopend';
$labels['desc'] = 'aflopend';
$labels['listcolumns'] = 'Kolommen';
$labels['listsorting'] = 'Sorteerkolom';
$labels['listorder'] = 'Sorteervolgorde';
$labels['listmode'] = 'Lijstweergave mode';
$labels['layoutlist'] = 'Lijst';
$labels['folderactions'] = 'Acties voor map...';
$labels['compact'] = 'Comprimeren';
$labels['empty'] = 'Legen';
$labels['quota'] = 'Gebruikte schijfruimte';
$labels['unknown'] = 'onbekend';
$labels['unlimited'] = 'onbeperkt';
$labels['quotastorage'] = 'Schijfruimte';
$labels['quicksearch'] = 'Snelzoeken';
$labels['resetsearch'] = 'Zoek opnieuw';
$labels['searchmod'] = 'Zoekopties';
$labels['msgtext'] = 'Volledig bericht';
$labels['namex'] = 'Naam';
$labels['searchscope'] = 'Bereik';
$labels['currentfolder'] = 'Huidige map';
$labels['searchinterval-1W'] = 'ouder dan een week';
$labels['searchinterval-1M'] = 'ouder dan een maand';
$labels['searchinterval-1Y'] = 'ouder dan een jaar';
$labels['searchinterval1W'] = 'jonger dan een week';
$labels['searchinterval1M'] = 'jonger dan een maand';
$labels['searchinterval1Y'] = 'jonger dan een jaar';
$labels['openinextwin'] = 'Openen in een nieuw venster';
$labels['emlsave'] = 'Opslaan (.eml)';
$labels['editasnew'] = 'Als nieuw bewerken';
$labels['send'] = 'Verzenden';
$labels['sendmessage'] = 'Bericht verzenden';
$labels['savemessage'] = 'Bewaar als concept';
$labels['addattachment'] = 'Bestand toevoegen als bijlage';
$labels['charset'] = 'Karakterset';
$labels['editortype'] = 'Opmaak';
$labels['returnreceipt'] = 'Ontvangstbevestiging';
$labels['dsn'] = 'Delivery Status Notification';
$labels['mailreplyintro'] = 'Op $date, schreef $sender:';
$labels['originalmessage'] = 'Orgineel bericht';
$labels['selectimage'] = 'Selecteer beeld';
$labels['addimage'] = 'Voeg beeld toe';
$labels['selectmedia'] = 'Selecteer film';
$labels['addmedia'] = 'Voeg film toe';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Verlopen';
$labels['insert'] = 'Voeg in';
$labels['recipient'] = 'Ontvanger';
$labels['editidents'] = 'Bewerk identiteiten';
$labels['spellcheck'] = 'Spellen';
$labels['checkspelling'] = 'Controleer spelling';
$labels['resumeediting'] = 'Hervat bewerken';
$labels['revertto'] = 'Ongedaan maken';
$labels['ignore'] = 'Negeer';
$labels['responses'] = 'Antwoorden';
$labels['insertresponse'] = 'Antwoord invoegen';
$labels['manageresponses'] = 'Antwoorden beheren';
$labels['newresponse'] = 'Nieuw antwoord';
$labels['addresponse'] = 'Antwoord invoegen';
$labels['editresponse'] = 'Antwoord bewerken';
$labels['editresponses'] = 'Antwoorden bewerken';
$labels['responsename'] = 'Naam';
$labels['attach'] = 'Bijvoegen';
$labels['attachments'] = 'Bijlagen';
$labels['upload'] = 'Uploaden';
$labels['close'] = 'Sluiten';
$labels['messageoptions'] = 'Opties voor bericht...';
$labels['low'] = 'Laag';
$labels['lowest'] = 'Laagste';
$labels['normal'] = 'Normaal';
$labels['high'] = 'Hoog';
$labels['highest'] = 'Hoogste';
$labels['nosubject'] = '(geen onderwerp)';
$labels['showimages'] = 'Toon afbeeldingen';
$labels['alwaysshow'] = 'Afbeeldingen van $sender altijd tonen';
$labels['isdraft'] = 'Dit is een concept bericht.';
$labels['andnmore'] = '$nr meer...';
$labels['togglemoreheaders'] = 'Toon meer berichthoofden';
$labels['togglefullheaders'] = 'Schakelen tussen naakte berichtkoppen';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Platte tekst';
$labels['savesentmessagein'] = 'Bewaar verzonden bericht in';
$labels['dontsave'] = 'niet bewaren';
$labels['maxuploadsize'] = 'Maximum toegestane bestandsgrootte is $size';
$labels['addcc'] = 'Cc toevoegen';
$labels['addbcc'] = 'Bcc toevoegen';
$labels['addreplyto'] = 'Antwoorden aan toevoegen';
$labels['addfollowupto'] = 'Followup aan toevoegen';
$labels['mdnrequest'] = 'De afzender heeft een ontvangstbevestiging gevraagd. Wilt u deze versturen?';
$labels['receiptread'] = 'Ontvangstbevestiging (gelezen)';
$labels['yourmessage'] = 'Dir is een onvangstbevestiging voor uw bericht';
$labels['receiptnote'] = 'Opmerking: deze ontvangstbevestiging houdt enkel in dat het bericht was weergegeven bij de ontvanger. Er is geen garantie dat de ontvanger het bericht daadwerkelijk heeft gelezen en/of begrepen.';
$labels['name'] = 'Naam';
$labels['firstname'] = 'Voornaam';
$labels['surname'] = 'Achternaam';
$labels['middlename'] = 'Middelnaam';
$labels['nameprefix'] = 'Prefix';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Roepnaam';
$labels['jobtitle'] = 'Job titel';
$labels['department'] = 'Afdeling';
$labels['gender'] = 'Geslacht';
$labels['maidenname'] = 'Meisjesnaam';
$labels['email'] = 'E-mailadres';
$labels['phone'] = 'Telefoonnummer';
$labels['address'] = 'Adres';
$labels['street'] = 'Straat';
$labels['locality'] = 'Stad';
$labels['zipcode'] = 'Postcode';
$labels['region'] = 'Staat/Provincie';
$labels['country'] = 'Land';
$labels['birthday'] = 'Verjaardag';
$labels['anniversary'] = 'Verjaardag';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Opmerkingen';
$labels['male'] = 'man';
$labels['female'] = 'vrouw';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Echtgenoot';
$labels['allfields'] = 'Alle velden';
$labels['search'] = 'Zoek';
$labels['searchresult'] = 'Zoekresultaat';
$labels['advsearch'] = 'Uitgebreid zoeken';
$labels['advanced'] = 'Geavanceerd';
$labels['other'] = 'Anders';
$labels['printcontact'] = 'Contactpersoon afdrukken';
$labels['typehome'] = 'Thuis';
$labels['typework'] = 'Werk';
$labels['typeother'] = 'Anders';
$labels['typemobile'] = 'Mobiel';
$labels['typemain'] = 'Hoofd';
$labels['typehomefax'] = 'Thuis fax';
$labels['typeworkfax'] = 'Werk fax';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Home page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profiel';
$labels['addfield'] = 'Veld toevoegen...';
$labels['addcontact'] = 'Contactpersoon toevoegen';
$labels['editcontact'] = 'Contactpersoon bewerken';
$labels['contacts'] = 'Contactpersonen';
$labels['contactproperties'] = 'Eigenschappen van contactpersoon';
$labels['contactnameandorg'] = 'Naam en organisatie';
$labels['personalinfo'] = 'Persoonlijke informatie';
$labels['contactphoto'] = 'Contact foto';
$labels['edit'] = 'Bewerken';
$labels['cancel'] = 'Annuleren';
$labels['save'] = 'Opslaan';
$labels['delete'] = 'Verwijderen';
$labels['rename'] = 'Hernoemen';
$labels['addphoto'] = 'Toevoegen';
$labels['replacephoto'] = 'Vervangen';
$labels['uploadphoto'] = 'Foto  uploaden';
$labels['newcontact'] = 'Nieuw contact';
$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
$labels['composeto'] = 'Mail sturen aan';
$labels['contactsfromto'] = 'Contactpersonen $from - $to van $count';
$labels['print'] = 'Afdrukken';
$labels['export'] = 'Exporteren';
$labels['exportall'] = 'Exporteer alle';
$labels['exportsel'] = 'Exporteer geslecteerden';
$labels['exportvcards'] = 'Exporteer contactpersonen in vCard formaat';
$labels['newgroup'] = 'Maak een nieuwe groep';
$labels['addgroup'] = 'Groep toevoegen';
$labels['grouprename'] = 'Groep hernoemen';
$labels['groupdelete'] = 'Groep verwijderen';
$labels['groupremoveselected'] = 'Geselecteerde contacten uit de groep verwijderen';
$labels['previouspage'] = 'Toon vorige';
$labels['firstpage'] = 'Toon eerste';
$labels['nextpage'] = 'Toon volgende';
$labels['lastpage'] = 'Toon laatste';
$labels['group'] = 'Groep';
$labels['groups'] = 'Groepen';
$labels['personaladrbook'] = 'Personlijke adressen';
$labels['searchsave'] = 'Zoekopdracht opslaan';
$labels['searchdelete'] = 'Zoekopdracht wissen';
$labels['import'] = 'Importeer';
$labels['importcontacts'] = 'Contactpersonen importeren';
$labels['importfromfile'] = 'Importeren uit bestand';
$labels['importtarget'] = 'Contacten toevoegen aan';
$labels['importreplace'] = 'Vervang het complete adresboek';
$labels['importdesc'] = 'U kunt contacten uploaden vanuit een bestaand adresboek.<br/>We ondersteunen momenteel het importeren van adressen uit <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> of CSV (door komma\'s gescheiden) gegevensformaat.';
$labels['done'] = 'Klaar';
$labels['settingsfor'] = 'Instellingen voor';
$labels['about'] = 'Over';
$labels['preferences'] = 'Voorkeuren';
$labels['userpreferences'] = 'Gebruikersvoorkeuren';
$labels['editpreferences'] = 'Gebruikersvoorkeuren bewerken';
$labels['identities'] = 'Identiteiten';
$labels['manageidentities'] = 'Identiteiten beheren';
$labels['newidentity'] = 'Nieuwe identiteit maken';
$labels['preferhtml'] = 'Gebruik HTML-opmaak';
$labels['defaultcharset'] = 'Standaard karakterset';
$labels['htmlmessage'] = 'HTML-bericht';
$labels['dateformat'] = 'Datum formaat';
$labels['timeformat'] = 'Tijdformaat';
$labels['prettydate'] = 'Uitgebreide datumweergave';
$labels['setdefault'] = 'Als standaard instellen';
$labels['autodetect'] = 'Automatisch';
$labels['language'] = 'Taal';
$labels['timezone'] = 'Tijdzone';
$labels['pagesize'] = 'Berichten per pagina';
$labels['signature'] = 'Handtekening';
$labels['dstactive'] = 'Zomer/wintertijd';
$labels['showinextwin'] = 'Bericht openen in een nieuw venster';
$labels['composeextwin'] = 'Samenstellen in een nieuw venster';
$labels['htmleditor'] = 'HTML berichten opmaken';
$labels['htmlonreply'] = 'enkel bij beantwoorden van een HTML bericht';
$labels['htmlonreplyandforward'] = 'bij het doorsturen of beantwoorden van een HTML-bericht';
$labels['htmlsignature'] = 'HTML handtekening';
$labels['previewpane'] = 'Toon voorbeeldvenster';
$labels['skin'] = 'Opmaakprofiel';
$labels['logoutclear'] = 'Prullenbak legen bij uitloggen';
$labels['logoutcompact'] = 'Postvak IN opschonen bij uitloggen';
$labels['uisettings'] = 'Gebruikersinterface';
$labels['serversettings'] = 'Serverinstellingen';
$labels['mailboxview'] = 'Opmaak Mailbox';
$labels['mdnrequests'] = 'Ontvangstmeldingen';
$labels['askuser'] = 'vraag de gebruiker';
$labels['autosend'] = 'stuur automatisch';
$labels['autosendknown'] = 'stuur ontvangstbevestiging naar mijn contactpersonen, anders vraag mij';
$labels['autosendknownignore'] = 'stuur ontvangstbevestiging naar mijn contactpersonen, anders negeer';
$labels['ignorerequest'] = 'negeer verzoek';
$labels['readwhendeleted'] = 'Bericht na verwijderen als gelezen markeren';
$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als verwijderd markeren';
$labels['skipdeleted'] = 'Verwijderde berichten niet tonen';
$labels['deletealways'] = 'Verwijder bericht wanneer verplaatsen naar Prullenbak mislukt';
$labels['deletejunk'] = 'Berichten direct verwijderen in Ongewenst';
$labels['showremoteimages'] = 'Geef externe toegevoegde berichten weer';
$labels['fromknownsenders'] = 'Van bekende afzenders';
$labels['always'] = 'altijd';
$labels['showinlineimages'] = 'Toon bijgevoegde afbeeldingen onder het bericht';
$labels['autosavedraft'] = 'Automatisch als concept opslaan';
$labels['everynminutes'] = 'elke $n minuten';
$labels['refreshinterval'] = 'Vernieuwen (controleren op nieuwe berichten, enz.)';
$labels['never'] = 'nooit';
$labels['immediately'] = 'onmiddellijk';
$labels['messagesdisplaying'] = 'Berichten weergave';
$labels['messagescomposition'] = 'Berichten aanmaken';
$labels['mimeparamfolding'] = 'Namen van bijlagen';
$labels['2231folding'] = 'Volledig RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Volledig RFC 2047 (andere)';
$labels['force7bit'] = 'Gebruik MIME codering voor 8-bit karakters';
$labels['advancedoptions'] = 'Geavanceerde opties';
$labels['focusonnewmessage'] = 'Focus browserscherm bij nieuw bericht';
$labels['checkallfolders'] = 'Controleer alle mappen op nieuwe berichten';
$labels['displaynext'] = 'Volgend lijst-item weergeven na wissen/verplaatsen';
$labels['defaultfont'] = 'Standaard lettertype van HTML-bericht';
$labels['mainoptions'] = 'Hoofdopties';
$labels['browseroptions'] = 'Browseropties';
$labels['section'] = 'Sectie';
$labels['maintenance'] = 'Onderhoud';
$labels['newmessage'] = 'Nieuw bericht';
$labels['signatureoptions'] = 'Opties voor handtekening';
$labels['whenreplying'] = 'Bij beantwoorden';
$labels['replyempty'] = 'het originele bericht niet vermelden';
$labels['replytopposting'] = 'begin bericht boven het origineel';
$labels['replybottomposting'] = 'begin bericht onder het origineel';
$labels['replyremovesignature'] = 'Verwijder handtekening uit het origneel bij beantwoorden';
$labels['autoaddsignature'] = 'Handtekening automatisch toevoegen';
$labels['newmessageonly'] = 'alleen bij nieuwe berichten';
$labels['replyandforwardonly'] = 'alleen bij beantwoorden en doorsturen';
$labels['insertsignature'] = 'Handtekening invoegen';
$labels['afternseconds'] = 'Na $n seconden';
$labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging';
$labels['reqdsn'] = 'Vraag altijd een Delivery Status Notification';
$labels['replysamefolder'] = 'Plaats antwoorden in de map van het beantwoorde bericht';
$labels['defaultabook'] = 'Standaard adresboek';
$labels['autocompletesingle'] = 'Alternatieve e-mailadressen in autoaanvulling overslaan';
$labels['listnamedisplay'] = 'Lijst contacten als';
$labels['spellcheckbeforesend'] = 'Controleer de spelling voordat u een bericht verstuurt';
$labels['spellcheckoptions'] = 'Opties voor spellingcontrole';
$labels['spellcheckignoresyms'] = 'Negeer woorden met symbolen';
$labels['spellcheckignorenums'] = 'Negeer woorden met getallen';
$labels['spellcheckignorecaps'] = 'Negeer woorden met allemaal hoofdletters';
$labels['addtodict'] = 'Toevoegen aan woordenboek';
$labels['mailtoprotohandler'] = 'Registreer protocol handler voor mailto: links';
$labels['forwardmode'] = 'Berichten doorsturen';
$labels['inline'] = 'inline';
$labels['allmessages'] = 'alle berichten';
$labels['folder'] = 'Map';
$labels['folders'] = 'Mappen';
$labels['foldername'] = 'Naam';
$labels['subscribed'] = 'Geabonneerd';
$labels['messagecount'] = 'Berichten';
$labels['create'] = 'Aanmaken';
$labels['createfolder'] = 'Nieuwe map aanmaken';
$labels['managefolders'] = 'Mappen beheren';
$labels['specialfolders'] = 'Speciale mappen';
$labels['properties'] = 'Eigenschappen';
$labels['folderproperties'] = 'Eigenschappen van map';
$labels['parentfolder'] = 'Bovenliggende map';
$labels['location'] = 'Locatie';
$labels['info'] = 'Informatie';
$labels['getfoldersize'] = 'Klik voor de grootte van de map';
$labels['changesubscription'] = 'Klik voor abonnement te wijzigen';
$labels['sortby'] = 'Sorteren op';
$labels['sortasc'] = 'Oplopend sorteren';
$labels['sortdesc'] = 'Aflopend sorteren';
$labels['license'] = 'Licentie';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engels';
$labels['westerneuropean'] = 'West-Europees';
$labels['easterneuropean'] = 'Oost-Europees';
$labels['southeasterneuropean'] = 'Zuidoost Europees';
$labels['baltic'] = 'Baltisch';
$labels['cyrillic'] = 'Cyrillisch';
$labels['arabic'] = 'Arabisch';
$labels['greek'] = 'Grieks';
$labels['hebrew'] = 'Hebreeuws';
$labels['turkish'] = 'Turks';
$labels['nordic'] = 'Noord-Germaans';
$labels['thai'] = 'Thais';
$labels['celtic'] = 'Keltisch';
$labels['vietnamese'] = 'Vietnamees';
$labels['japanese'] = 'Japans';
$labels['korean'] = 'Koreaans';
$labels['chinese'] = 'Chinees';
localization/nl_BE/messages.inc000064400000031410151727150600012520 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Er is een fout opgetreden!';
$messages['loginfailed']  = 'Aanmelden mislukt.';
$messages['cookiesdisabled'] = 'Uw browser accepteert geen cookies.';
$messages['sessionerror'] = 'Sessie is reeds beëindigd of is ongeldig.';
$messages['storageerror'] = 'Kon geen verbinding maken met de IMAP server...';
$messages['servererror'] = 'Server fout!';
$messages['servererrormsg'] = 'Server fout: $msg';
$messages['accountlocked'] = 'Te veel mislukte inlogpogingen. Probeer het later opnieuw.';
$messages['connerror'] = 'Verbindingsfout (Mislukt om de server te bereiken)!';
$messages['dberror'] = 'Database Fout!';
$messages['windowopenerror'] = 'Het popup venster werd geblokkeerd!';
$messages['requesttimedout'] = 'Aanvraag verlopen';
$messages['errorreadonly'] = 'Kon opdracht niet uitvoeren. Map is alleen-lezen.';
$messages['errornoperm'] = 'Kon opdracht niet uitvoeren. Toegang geweigerd.';
$messages['erroroverquota'] = 'Kon opdracht niet uitvoeren. Geen vrije schijfruimte.';
$messages['erroroverquotadelete'] = 'Geen vrije schijfruimte. Gebruik SHIFT+DEL om een bericht te verwijderen.';
$messages['invalidrequest'] = 'Ongeldige aanvraag! Er zijn geen gegevens opgeslagen.';
$messages['invalidhost'] = 'Ongeldige server.';
$messages['nomessagesfound'] = 'Er zijn geen berichten in deze map...';
$messages['mailboxempty'] = 'Mailbox is leeg';
$messages['nomessages'] = 'Geen berichten';
$messages['refreshing'] = 'Bezig met vernieuwen...';
$messages['loading'] = 'Bezig met ophalen gegevens...';
$messages['uploading'] = 'Bezig met uploaden...';
$messages['attaching'] = 'Bestand aan het toevoegen...';
$messages['uploadingmany'] = 'Bestanden worden geüpload...';
$messages['loadingdata'] = 'Bezig met gegevens ophalen...';
$messages['checkingmail'] = 'Controleer op nieuwe berichten...';
$messages['sendingmessage'] = 'Bericht wordt verstuurd...';
$messages['messagesent'] = 'Het bericht is verzonden.';
$messages['savingmessage'] = 'Bericht wordt bewaard...';
$messages['messagesaved'] = 'Bericht bewaard in Concepten.';
$messages['successfullysaved'] = 'Succesvol opgeslagen...';
$messages['savingresponse'] = 'Respons tekst wordt bewaard...';
$messages['deleteresponseconfirm'] = 'Bent u zeker dat u deze respons tekst wilt verwijderen?';
$messages['addedsuccessfully'] = 'Contactpersoon is toegevoegd.';
$messages['contactnameexists'] = 'Er bestaat al een contactpersoon met deze naam.';
$messages['blockedimages'] = 'Om uw privacy te beschermen worden de afbeeldingen in dit bericht niet getoond.';
$messages['encryptedmessage'] = 'Dit bericht is geëncrypteerd en kan niet worden weergegeven, sorry!';
$messages['externalmessagedecryption'] = 'Dit bericht is geëncrypteerd en kan niet worden gedecodeerd met uw browser extensie, sorry!';
$messages['nopubkeyfor'] = 'Geen geldige publieke sleutel gevonden voor $email';
$messages['encryptpubkeysfound'] = 'De volgende publieke sleutels werden gevonden:';
$messages['nocontactsfound'] = 'Geen contactpersonen gevonden.';
$messages['contactnotfound'] = 'De gevraagde contactpersoon was niet gevonden.';
$messages['sendingfailed'] = 'Kon het bericht niet versturen.';
$messages['senttooquickly'] = 'U moet $sec second(en) wachten om het bericht te versturen.';
$messages['errorsavingsent'] = 'Er is een fout opgetreden tijdens het opslaan van het verzonden bericht.';
$messages['errorsaving'] = 'Er is een fout opgetreden tijdens het opslaan.';
$messages['errormoving'] = 'Kon de bericht(en) niet verplaatsen.';
$messages['errorcopying'] = 'Kon de bericht(en) niet kopiëren';
$messages['errordeleting'] = 'Kon de bericht(en) niet verwijderen.';
$messages['errormarking'] = 'Kon de bericht(en) niet markeren.';
$messages['deletecontactconfirm']  = 'Bent u zeker dat u de geselecteerde contactpers(o)on(en) wilt verwijderen?';
$messages['deletegroupconfirm']  = 'Weet u zeker dat u de geselecteerde groep wilt verwijderen?';
$messages['deletemessagesconfirm'] = 'Bent u zeker dat u de geselecteerde bericht(en) wilt verwijderen?';
$messages['deletefolderconfirm']  = 'Weet u zeker dat u deze map wilt verwijderen?';
$messages['purgefolderconfirm']  = 'Bent u zeker dat u alle berichten in deze map wilt verwijderen?';
$messages['contactdeleting'] = 'Bezig met verwijderen één of meer contactpersonen...';
$messages['groupdeleting'] = 'Groep wordt verwijderd...';
$messages['folderdeleting'] = 'Map verwijderen...';
$messages['foldermoving'] = 'Map verplaatsen...';
$messages['foldersubscribing'] = 'Bezig met abonneren op map...';
$messages['folderunsubscribing'] = 'Abonnement op map wordt opgezegd...';
$messages['formincomplete'] = 'Het formulier is niet volledig ingevuld.';
$messages['noemailwarning'] = 'Geef een geldig e-mailadres op.';
$messages['nonamewarning']  = 'Geef een naam op.';
$messages['nopagesizewarning'] = 'Geef een geldig aantal berichten per pagina op.';
$messages['norecipientwarning'] = 'Geef minstens één bestemmeling op.';
$messages['nosubjectwarning']  = 'Geen onderwerp opgegeven. Wenst u alsnog een onderwerp te geven?';
$messages['nobodywarning'] = 'Wilt u dit lege bericht versturen?';
$messages['nosearchname'] = 'Geen een contacpersoon of e-mailadres op.';
$messages['notuploadedwarning'] = 'Nog niet alle bijlagen zijn geüpload. Wacht even of annuleer de upload.';
$messages['searchsuccessful'] = '$nr berichten gevonden.';
$messages['contactsearchsuccessful'] = '$nr contactpersonen gevonden.';
$messages['searchnomatch'] = 'Zoekopdracht leverde geen resultaten.';
$messages['searching'] = 'Bezig met zoeken...';
$messages['checking'] = 'Bezig met controleren...';
$messages['stillsearching'] = 'Nog steeds aan het zoeken...';
$messages['nospellerrors'] = 'Geen spelfouten gevonden.';
$messages['folderdeleted'] = 'Map met succes verwijderd.';
$messages['foldersubscribed'] = 'Folder succesvol geabonneerd.';
$messages['folderunsubscribed'] = 'Folder succesvol uitgeschreven.';
$messages['deletedsuccessfully'] = 'Succesvol verwijderd.';
$messages['converting'] = 'Opmaak van het bericht wordt gewist...';
$messages['messageopenerror'] = 'Kon het bericht niet ophalen van de server.';
$messages['filelinkerror'] = 'Toevoegen van het bestand mislukt.';
$messages['fileuploaderror'] = 'Bestandsupload mislukt.';
$messages['filesizeerror'] = 'Het bestand overschrijdt de maximum grootte van $size.';
$messages['copysuccess'] = '$nr contactpersonen succesvol gekopieerd.';
$messages['movesuccess'] = '$nr contactpersonen succesvol verplaatst.';
$messages['copyerror'] = 'Kon contactpersoon niet kopiëren.';
$messages['moveerror'] = 'Kon contactpersoon niet verplaatsen.';
$messages['sourceisreadonly'] = 'Het adres kan niet worden opgeslagen.';
$messages['errorsavingcontact'] = 'Kon de contactpersoon niet bewaren.';
$messages['movingmessage'] = 'Bericht wordt verplaatst...';
$messages['copyingmessage'] = 'Bericht wordt gekopieerd...';
$messages['copyingcontact'] = 'Kopiëren contactpersonen...';
$messages['movingcontact'] = 'Verplaatsen contactperso(o)n(en)...';
$messages['deletingmessage'] = 'Bericht wordt verwijderd...';
$messages['markingmessage'] = 'Bericht wordt gemarkeerd...';
$messages['addingmember'] = 'Contactpersonen worden toegevoegd aan de groep...';
$messages['removingmember'] = 'Contactpersonen worden verwijderd uit de groep...';
$messages['receiptsent'] = 'Ontvangstbevestiging verstuurd.';
$messages['errorsendingreceipt'] = 'Kon de ontvangstbevestigign niet versturen.';
$messages['deleteidentityconfirm'] = 'Bent u zeker dat u deze identiteit wilt verwijderen?';
$messages['nodeletelastidentity'] = 'U kunt dit laatste afzendadres niet verwijderen.';
$messages['forbiddencharacter'] = 'De naam van de map bevat een karakter dat niet is toegestaan.';
$messages['selectimportfile'] = 'Selecteer een bestand om te uploaden.';
$messages['addresswriterror'] = 'Het geselecteerde adresboek is alleen-lezen.';
$messages['contactaddedtogroup'] = 'Contact(en) met succes toegevoegd aan de groep.';
$messages['contactremovedfromgroup'] = 'Contact(en) met succes verwijderd aan de groep.';
$messages['nogroupassignmentschanged'] = 'Geen groepslidmaatschap gewijzigd.';
$messages['importwait'] = 'Bezig met importeren, even geduld...';
$messages['importformaterror'] = 'Importeren mislukt! Het geüploade bestand is geen importeerbaar bestand.';
$messages['importconfirm'] = '<b>Er zijn $inserted contactpersonen succesvol geïmporteerd</b>';
$messages['importconfirmskipped'] = '<b>$skipped bestaande contactpersonen overgeslagen</b>';
$messages['importmessagesuccess'] = '$nr adressen met succes geïmporteerd.';
$messages['importmessageerror'] = 'Importeren mislukt! Het geüploade bestand is geen geldig bericht of mailbox bestand.';
$messages['opnotpermitted'] = 'Deze actie is niet toegestaan!';
$messages['httpreceivedencrypterror'] = 'Er is een fatale fout opgetreden. Neem direct contact op met uw systeembeheerder. <b>Uw bericht kon niet worden verzonden.</b>';
$messages['smtpconnerror'] = 'SMTP Fout ($code): Verbinding met server mislukt.';
$messages['smtpautherror'] = 'SMTP Fout ($code): Authenticatie mislukt.';
$messages['smtpfromerror'] = 'SMTP Fout ($code): Kon afzender "$from" niet instellen ($msg).';
$messages['smtptoerror'] = 'SMTP Fout ($code): Kon ontvanger "$to" niet toevoegen ($msg).';
$messages['smtprecipientserror'] = 'SMTP Fout: Kon lijst van ontvangers niet verwerken.';
$messages['smtperror'] = 'SMTP Fout: $msg';
$messages['toomanyrecipients'] = 'Te veel geadresseerden. Verminder de hoeveelheid geadresseerden tot $max.';
$messages['maxgroupmembersreached'] = 'Het aantal leden van de groep groter is dan de maximale van $max.';
$messages['internalerror'] = 'Er is een interne fout opgetreden. Probeer het later opnieuw.';
$messages['contactdelerror'] = 'Kon contactpersoon niet verwijderen.';
$messages['contactdeleted'] = 'Contactpersoon succesvol verwijderd.';
$messages['contactrestoreerror'] = 'Verwijderde contactpersonen konden niet hersteld worden.';
$messages['contactrestored'] = 'Contactpersonen succesvol hersteld.';
$messages['groupdeleted'] = 'Groep succesvol verwijderd.';
$messages['grouprenamed'] = 'Groep succesvol hernoemd.';
$messages['groupcreated'] = 'Groep succesvol aangemaakt.';
$messages['savedsearchdeleted'] = 'Opgeslagen zoekopdracht successvol verwijderd.';
$messages['savedsearchdeleteerror'] = 'Opgeslagen zoekopdracht kon niet worden verwijderd.';
$messages['savedsearchcreated'] = 'Zoekopdracht successvol opgeslagen.';
$messages['savedsearchcreateerror'] = 'Zoekopdracht kon niet worden opgeslagen.';
$messages['messagedeleted'] = 'Bericht(en) succesvol verwijderd.';
$messages['messagemoved'] = 'Bericht(en) succesvol verplaatst.';
$messages['messagecopied'] = 'Bericht(en) succesvol gekopieerd.';
$messages['messagemarked'] = 'Bericht(en) succesvol gemarkeerd.';
$messages['autocompletechars'] = 'Geef ten minste $min karakters voor auto-aanvullen.';
$messages['autocompletemore'] = 'Meerdere resultaten gevonden. Verfijn uw zoekopdracht.';
$messages['namecannotbeempty'] = 'Naam kan niet leeg zijn.';
$messages['nametoolong'] = 'Naam is te lang.';
$messages['namedotforbidden'] = 'Mapnaam kan niet met een punt starten.';
$messages['folderupdated'] = 'Map succesvol bijgewerkt.';
$messages['foldercreated'] = 'Map succesvol aangemaakt.';
$messages['invalidimageformat'] = 'Geen geldig afbeeldingsformaat.';
$messages['mispellingsfound'] = 'Spellingsfouten gedetecteerd in bericht.';
$messages['parentnotwritable'] = 'U heeft niet voldoende rechten een map te maken / verplaatsen in deze map.';
$messages['messagetoobig'] = 'Dit deel van uw bericht is te groot om het te verwerken.';
$messages['noscriptwarning'] = 'Opgelet: deze webmail service vereist JavaScript! Om deze service te kunnen gebruiken dient u JavaScript toe te staan in de instellingen van uw browser.';
$messages['messageissent'] = 'Het bericht werd reeds verzonden, maar nog niet  bewaard. Wil je het nu bewaren?';
$messages['errnotfound'] = 'Bestand niet gevonden';
$messages['errnotfoundexplain'] = 'De gevraagde hulpbron werd niet gevonden.';
$messages['errfailedrequest'] = 'Mislukt verzoek';
$messages['errauthorizationfailed'] = 'Autorisatie mislukt';
$messages['errrequestcheckfailed'] = 'Verzoek mislukt';
$messages['clicktoresumesession'] = 'Klik hier om uw vorige sessie te hernemen.';
localization/he_IL/timezones.inc000064400000054264151727150600012743 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'זמן בינלאומי סטנדרדי';
$labels['tz:africa'] = 'אפריקה';
$labels['tz:africa:abidjan'] = 'אבידג\'אן';
$labels['tz:africa:accra'] = 'אקרה';
$labels['tz:africa:addis_ababa'] = 'אדיס אבבה';
$labels['tz:africa:algiers'] = 'אלג\'יר';
$labels['tz:africa:asmara'] = 'אסמרה';
$labels['tz:africa:bamako'] = 'באמאקו';
$labels['tz:africa:bangui'] = 'באנגוי';
$labels['tz:africa:banjul'] = 'באנג\'ול';
$labels['tz:africa:bissau'] = 'ביסאו';
$labels['tz:africa:blantyre'] = 'בלאנטיר';
$labels['tz:africa:brazzaville'] = 'ברזוויל';
$labels['tz:africa:bujumbura'] = 'בוג\'ומבורה';
$labels['tz:africa:cairo'] = 'קהיר';
$labels['tz:africa:casablanca'] = 'קזבלנקה';
$labels['tz:africa:ceuta'] = 'סיוטה';
$labels['tz:africa:conakry'] = 'קונקרי';
$labels['tz:africa:dakar'] = 'דאקאר';
$labels['tz:africa:dar_es_salaam'] = 'דאר א סלאם';
$labels['tz:africa:djibouti'] = 'ג\'יבוטי';
$labels['tz:africa:douala'] = 'דואלה';
$labels['tz:africa:el_aaiun'] = 'אל עיון';
$labels['tz:africa:freetown'] = 'פריטאון';
$labels['tz:africa:gaborone'] = 'גבורון';
$labels['tz:africa:harare'] = 'האררה';
$labels['tz:africa:johannesburg'] = 'יוהנסבורג';
$labels['tz:africa:juba'] = 'ג\'ובה';
$labels['tz:africa:kampala'] = 'קמפלה';
$labels['tz:africa:khartoum'] = 'חרטום';
$labels['tz:africa:kigali'] = 'קיגאלי';
$labels['tz:africa:kinshasa'] = 'קינשאסה';
$labels['tz:africa:lagos'] = 'לאגוס';
$labels['tz:africa:libreville'] = 'ליברוויל';
$labels['tz:africa:lome'] = 'לומה';
$labels['tz:africa:luanda'] = 'לואנדה';
$labels['tz:africa:lubumbashi'] = 'לובומבאשי';
$labels['tz:africa:lusaka'] = 'לוסאקה';
$labels['tz:africa:malabo'] = 'מלאבו';
$labels['tz:africa:maputo'] = 'מפוטו';
$labels['tz:africa:maseru'] = 'מאסרו';
$labels['tz:africa:mbabane'] = 'מבאבאנה';
$labels['tz:africa:mogadishu'] = 'מוגדישו';
$labels['tz:africa:monrovia'] = 'מונרוביה';
$labels['tz:africa:nairobi'] = 'נאירובי';
$labels['tz:africa:ndjamena'] = 'נדג\'אמנה';
$labels['tz:africa:niamey'] = 'ניאמי';
$labels['tz:africa:nouakchott'] = 'נואקצ\'וט';
$labels['tz:africa:ouagadougou'] = 'אואגדוגו';
$labels['tz:africa:porto-novo'] = 'פורטו נובו';
$labels['tz:africa:sao_tome'] = 'סאו תומה';
$labels['tz:africa:tripoli'] = 'טריפולי';
$labels['tz:africa:tunis'] = 'תוניס';
$labels['tz:africa:windhoek'] = 'ווינדוק';
$labels['tz:america'] = 'אמריקה';
$labels['tz:america:adak'] = 'אדאק';
$labels['tz:america:anchorage'] = 'אנקורג\'';
$labels['tz:america:anguilla'] = 'אנגואייה';
$labels['tz:america:antigua'] = 'אנטיגואה';
$labels['tz:america:araguaina'] = 'אראגואינה';
$labels['tz:america:argentina'] = 'ארגנטינה';
$labels['tz:america:argentina:buenos_aires'] = 'בואנוס איירס';
$labels['tz:america:argentina:catamarca'] = 'קאטאמארקה';
$labels['tz:america:argentina:cordoba'] = 'קורדובה';
$labels['tz:america:argentina:jujuy'] = 'חוחואי';
$labels['tz:america:argentina:la_rioja'] = 'לה ריוחה';
$labels['tz:america:argentina:mendoza'] = 'מנדוסה';
$labels['tz:america:argentina:rio_gallegos'] = 'ריו קאיחוס';
$labels['tz:america:argentina:salta'] = 'סאלטה';
$labels['tz:america:argentina:san_juan'] = 'סן חואן';
$labels['tz:america:argentina:san_luis'] = 'סן לואיס';
$labels['tz:america:argentina:tucuman'] = 'טוקומן';
$labels['tz:america:argentina:ushuaia'] = 'אושואיה';
$labels['tz:america:aruba'] = 'ארובה';
$labels['tz:america:asuncion'] = 'אסונסיון';
$labels['tz:america:atikokan'] = 'אטיקוקן';
$labels['tz:america:bahia'] = 'באהיה';
$labels['tz:america:bahia_banderas'] = 'באהיה בנדראס';
$labels['tz:america:barbados'] = 'ברבדוס';
$labels['tz:america:belem'] = 'בלם';
$labels['tz:america:belize'] = 'בליז';
$labels['tz:america:blanc-sablon'] = 'בלאנק-סבלון';
$labels['tz:america:boa_vista'] = 'בואה ויסטה';
$labels['tz:america:bogota'] = 'בוגוטה';
$labels['tz:america:boise'] = 'בויזי';
$labels['tz:america:cambridge_bay'] = 'קמברידג\' ביי';
$labels['tz:america:campo_grande'] = 'קמפו גרנדה';
$labels['tz:america:cancun'] = 'קנקון';
$labels['tz:america:caracas'] = 'קראקאס';
$labels['tz:america:cayenne'] = 'קאיין';
$labels['tz:america:cayman'] = 'קיימן';
$labels['tz:america:chicago'] = 'שיקגו';
$labels['tz:america:chihuahua'] = 'צ\'יוואוואה';
$labels['tz:america:costa_rica'] = 'קוסטה ריקה';
$labels['tz:america:creston'] = 'קרסטון';
$labels['tz:america:cuiaba'] = 'קולאבה';
$labels['tz:america:curacao'] = 'קורסאו';
$labels['tz:america:danmarkshavn'] = 'דנמרקסהאבן';
$labels['tz:america:dawson'] = 'דוסון';
$labels['tz:america:dawson_creek'] = 'דוסון קריק';
$labels['tz:america:denver'] = 'דנבר';
$labels['tz:america:detroit'] = 'דטרויט';
$labels['tz:america:dominica'] = 'דומיניקה';
$labels['tz:america:edmonton'] = 'אדמונטון';
$labels['tz:america:eirunepe'] = 'איירונפה';
$labels['tz:america:el_salvador'] = 'אל סלבדור';
$labels['tz:america:fort_nelson'] = 'פורט נלסון';
$labels['tz:america:fortaleza'] = 'פורטלסה';
$labels['tz:america:glace_bay'] = 'גלייס ביי';
$labels['tz:america:godthab'] = 'גוטהאב';
$labels['tz:america:goose_bay'] = 'גוס ביי';
$labels['tz:america:grand_turk'] = 'גרנד טרק';
$labels['tz:america:grenada'] = 'גרנדה';
$labels['tz:america:guadeloupe'] = 'גואדלופ';
$labels['tz:america:guatemala'] = 'גואטמלה';
$labels['tz:america:guayaquil'] = 'גואיקיל';
$labels['tz:america:guyana'] = 'גויאנה';
$labels['tz:america:halifax'] = 'האליפקס';
$labels['tz:america:havana'] = 'הבאנה';
$labels['tz:america:hermosillo'] = 'הרמוסיו';
$labels['tz:america:indiana'] = 'אינדיאנה';
$labels['tz:america:indiana:indianapolis'] = 'אינדיאנאפוליס';
$labels['tz:america:indiana:knox'] = 'נוקס';
$labels['tz:america:indiana:marengo'] = 'מרנגו';
$labels['tz:america:indiana:petersburg'] = 'פטרסבורג';
$labels['tz:america:indiana:tell_city'] = 'טל סיטי';
$labels['tz:america:indiana:vevay'] = 'וובאי';
$labels['tz:america:indiana:vincennes'] = 'וויסנס';
$labels['tz:america:indiana:winamac'] = 'ווינמאק';
$labels['tz:america:inuvik'] = 'אינוביק';
$labels['tz:america:iqaluit'] = 'איקאלואיט';
$labels['tz:america:jamaica'] = 'ג\'מאיקה';
$labels['tz:america:juneau'] = 'ג\'ונו';
$labels['tz:america:kentucky'] = 'קנטאקי';
$labels['tz:america:kentucky:louisville'] = 'לואיוויל';
$labels['tz:america:kentucky:monticello'] = 'מונטיצ\'לו';
$labels['tz:america:kralendijk'] = 'קראלנדיק';
$labels['tz:america:la_paz'] = 'לה פס';
$labels['tz:america:lima'] = 'לימה';
$labels['tz:america:los_angeles'] = 'לוס אנג\'לס';
$labels['tz:america:lower_princes'] = 'לואר פרינסס';
$labels['tz:america:maceio'] = 'מסיאו';
$labels['tz:america:managua'] = 'מנאגואה';
$labels['tz:america:manaus'] = 'מנאוס';
$labels['tz:america:marigot'] = 'מאריגוט';
$labels['tz:america:martinique'] = 'מרטיניק';
$labels['tz:america:matamoros'] = 'מטאמורוס';
$labels['tz:america:mazatlan'] = 'מזאטלן';
$labels['tz:america:menominee'] = 'מנומיני';
$labels['tz:america:merida'] = 'מרידה';
$labels['tz:america:metlakatla'] = 'מטלקטלה';
$labels['tz:america:mexico_city'] = 'מקסיקו סיטי';
$labels['tz:america:miquelon'] = 'מיקלון';
$labels['tz:america:moncton'] = 'מונקטון';
$labels['tz:america:monterrey'] = 'מונטריי';
$labels['tz:america:montevideo'] = 'מונטוידיאו';
$labels['tz:america:montserrat'] = 'מונטסראט';
$labels['tz:america:nassau'] = 'נסאו';
$labels['tz:america:new_york'] = 'ניו יורק';
$labels['tz:america:nipigon'] = 'ניפיגון';
$labels['tz:america:nome'] = 'נום';
$labels['tz:america:noronha'] = 'מורוניה';
$labels['tz:america:north_dakota'] = 'נורת\' דקוטה';
$labels['tz:america:north_dakota:beulah'] = 'ביולה';
$labels['tz:america:north_dakota:center'] = 'סנטר';
$labels['tz:america:north_dakota:new_salem'] = 'ניו סיילם';
$labels['tz:america:ojinaga'] = 'אוחינגה';
$labels['tz:america:panama'] = 'פנמה';
$labels['tz:america:pangnirtung'] = 'פאנגנירטונג';
$labels['tz:america:paramaribo'] = 'פראמאריבו';
$labels['tz:america:phoenix'] = 'פיניקס';
$labels['tz:america:port-au-prince'] = 'פורט או פרינס';
$labels['tz:america:port_of_spain'] = 'פורט אוף ספיין';
$labels['tz:america:porto_velho'] = 'פורטו וולהו';
$labels['tz:america:puerto_rico'] = 'פוארטו ריקו';
$labels['tz:america:rainy_river'] = 'רייני ריבר';
$labels['tz:america:rankin_inlet'] = 'ראנקין אינלט';
$labels['tz:america:recife'] = 'רסיפה';
$labels['tz:america:regina'] = 'רגינה';
$labels['tz:america:resolute'] = 'רסולוטה';
$labels['tz:america:rio_branco'] = 'ריו בראנקו';
$labels['tz:america:santarem'] = 'סנטרם';
$labels['tz:america:santiago'] = 'סנטיאגו';
$labels['tz:america:santo_domingo'] = 'סנטו דומינגו';
$labels['tz:america:sao_paulo'] = 'סאו פאולו';
$labels['tz:america:scoresbysund'] = 'סקורסביסונד';
$labels['tz:america:sitka'] = 'סיטקה';
$labels['tz:america:st_barthelemy'] = 'סיינט ברתלמיי';
$labels['tz:america:st_johns'] = "סיינט ג'ונס";
$labels['tz:america:st_kitts'] = 'סיינט קיטס';
$labels['tz:america:st_lucia'] = 'סיינט לוסיה';
$labels['tz:america:st_thomas'] = 'סיינט תומאס';
$labels['tz:america:st_vincent'] = 'סיינט וינסנט';
$labels['tz:america:swift_current'] = 'סוויפט קארנט';
$labels['tz:america:tegucigalpa'] = 'טגוסיגאלפה';
$labels['tz:america:thule'] = 'תול';
$labels['tz:america:thunder_bay'] = 'תאנדר ביי';
$labels['tz:america:tijuana'] = 'טיחואנה';
$labels['tz:america:toronto'] = 'טורונטו';
$labels['tz:america:tortola'] = 'טורטולה';
$labels['tz:america:vancouver'] = 'ונקובר';
$labels['tz:america:whitehorse'] = 'ווייטהורס';
$labels['tz:america:winnipeg'] = 'וויניפג';
$labels['tz:america:yakutat'] = 'יקוטאט';
$labels['tz:america:yellowknife'] = 'יילוונייף';
$labels['tz:antarctica'] = 'אנטרטיקה';
$labels['tz:antarctica:casey'] = 'קייסי';
$labels['tz:antarctica:davis'] = 'דייביס';
$labels['tz:antarctica:dumontdurville'] = "דומון ד'אורויל";
$labels['tz:antarctica:macquarie'] = 'מקארי';
$labels['tz:antarctica:mawson'] = 'מוסון';
$labels['tz:antarctica:mcmurdo'] = 'מקמורדו';
$labels['tz:antarctica:palmer'] = 'פאלמר';
$labels['tz:antarctica:rothera'] = 'רותרה';
$labels['tz:antarctica:syowa'] = 'סאיווה';
$labels['tz:antarctica:troll'] = 'טרול';
$labels['tz:antarctica:vostok'] = 'ווסטוק';
$labels['tz:arctic'] = 'ארקטיק';
$labels['tz:arctic:longyearbyen'] = 'לונגיירביין';
$labels['tz:asia'] = 'אסיה';
$labels['tz:asia:aden'] = 'עדן';
$labels['tz:asia:almaty'] = 'אמאטי';
$labels['tz:asia:amman'] = 'עמאן';
$labels['tz:asia:anadyr'] = 'אנאדיר';
$labels['tz:asia:aqtau'] = 'אקטאו';
$labels['tz:asia:aqtobe'] = 'אקטובה';
$labels['tz:asia:ashgabat'] = 'אשגבאט';
$labels['tz:asia:atyrau'] = 'אטיראו';
$labels['tz:asia:baghdad'] = 'בגדד';
$labels['tz:asia:bahrain'] = 'בחריין';
$labels['tz:asia:baku'] = 'באקו';
$labels['tz:asia:bangkok'] = 'בנגקוק';
$labels['tz:asia:barnaul'] = 'במאול';
$labels['tz:asia:beirut'] = 'ביירות';
$labels['tz:asia:bishkek'] = 'בישקק';
$labels['tz:asia:brunei'] = 'ברוניי';
$labels['tz:asia:chita'] = 'צ\'יטה';
$labels['tz:asia:choibalsan'] = 'צ\'ויבלסן';
$labels['tz:asia:colombo'] = 'קולומבו';
$labels['tz:asia:damascus'] = 'דמשק';
$labels['tz:asia:dhaka'] = 'דאקה';
$labels['tz:asia:dili'] = 'דילי';
$labels['tz:asia:dubai'] = 'דובאי';
$labels['tz:asia:dushanbe'] = 'דושנבה';
$labels['tz:asia:famagusta'] = 'פמגוסטה';
$labels['tz:asia:gaza'] = 'עזה';
$labels['tz:asia:hebron'] = 'חברון';
$labels['tz:asia:ho_chi_minh'] = 'הו צ\'י מין';
$labels['tz:asia:hong_kong'] = 'הונג קונג';
$labels['tz:asia:hovd'] = 'חוווד';
$labels['tz:asia:irkutsk'] = 'אירקוצק';
$labels['tz:asia:jakarta'] = 'ג\'קארטה';
$labels['tz:asia:jayapura'] = 'ג\'איאפורה';
$labels['tz:asia:jerusalem'] = 'ירושלים';
$labels['tz:asia:kabul'] = 'קאבול';
$labels['tz:asia:kamchatka'] = 'קאמצ\'טקה';
$labels['tz:asia:karachi'] = 'קראצ\'י';
$labels['tz:asia:kathmandu'] = 'קתמנדו';
$labels['tz:asia:khandyga'] = 'קאנדיג\'ה';
$labels['tz:asia:kolkata'] = 'כולכתה';
$labels['tz:asia:krasnoyarsk'] = 'קראסנויארסק';
$labels['tz:asia:kuala_lumpur'] = 'קואלה לומפור';
$labels['tz:asia:kuching'] = 'קוצ\'ינג';
$labels['tz:asia:kuwait'] = 'כוויית';
$labels['tz:asia:macau'] = 'מקאו';
$labels['tz:asia:magadan'] = 'מאגאדן';
$labels['tz:asia:makassar'] = 'מקאסר';
$labels['tz:asia:manila'] = 'מנילה';
$labels['tz:asia:muscat'] = 'מוסקט';
$labels['tz:asia:nicosia'] = 'ניקוסיה';
$labels['tz:asia:novokuznetsk'] = 'נובוקוזנצק';
$labels['tz:asia:novosibirsk'] = 'נובוסיבירסק';
$labels['tz:asia:omsk'] = 'אומסק';
$labels['tz:asia:oral'] = 'אורל';
$labels['tz:asia:phnom_penh'] = 'פנום פן';
$labels['tz:asia:pontianak'] = 'פונטיאנאק';
$labels['tz:asia:pyongyang'] = 'פיונגיאנג';
$labels['tz:asia:qatar'] = 'קטאר';
$labels['tz:asia:qyzylorda'] = 'קיזילורדה';
$labels['tz:asia:riyadh'] = 'ריאד';
$labels['tz:asia:sakhalin'] = 'סאחלין';
$labels['tz:asia:samarkand'] = 'סמרקנד';
$labels['tz:asia:seoul'] = 'סיאול';
$labels['tz:asia:shanghai'] = 'שנגחאי';
$labels['tz:asia:singapore'] = 'סינגפור';
$labels['tz:asia:srednekolymsk'] = 'סרדנקולימסק';
$labels['tz:asia:taipei'] = 'טאיפה';
$labels['tz:asia:tashkent'] = 'טשקנט';
$labels['tz:asia:tbilisi'] = 'טביליסי';
$labels['tz:asia:tehran'] = 'טהרן';
$labels['tz:asia:thimphu'] = 'תימפו';
$labels['tz:asia:tokyo'] = 'טוקיו';
$labels['tz:asia:tomsk'] = 'טומסק';
$labels['tz:asia:ulaanbaatar'] = 'אולנבטאר';
$labels['tz:asia:urumqi'] = 'אורומקי';
$labels['tz:asia:ust-nera'] = 'אוסט-נרה';
$labels['tz:asia:vientiane'] = 'ווינטיאן';
$labels['tz:asia:vladivostok'] = 'וולאדיווסטוק';
$labels['tz:asia:yakutsk'] = 'יאקוצק';
$labels['tz:asia:yangon'] = 'יאנגון';
$labels['tz:asia:yekaterinburg'] = 'יקטרינבורג';
$labels['tz:asia:yerevan'] = 'ירוואן';
$labels['tz:atlantic'] = 'אטלנטיק';
$labels['tz:atlantic:azores'] = 'אזוריים';
$labels['tz:atlantic:bermuda'] = 'ברמודה';
$labels['tz:atlantic:canary'] = 'קנארי';
$labels['tz:atlantic:cape_verde'] = 'קייפ וורדה';
$labels['tz:atlantic:faroe'] = 'פארו';
$labels['tz:atlantic:madeira'] = 'מאדיירה';
$labels['tz:atlantic:reykjavik'] = 'רייקיאוויק';
$labels['tz:atlantic:south_georgia'] = 'סאות ג\'ורג\'יה';
$labels['tz:atlantic:st_helena'] = 'סט הלנה';
$labels['tz:atlantic:stanley'] = 'סטנלי';
$labels['tz:australia'] = 'אוסטרליה';
$labels['tz:australia:adelaide'] = 'אדלייד';
$labels['tz:australia:brisbane'] = 'בריסביין';
$labels['tz:australia:broken_hill'] = 'ברוקן היל';
$labels['tz:australia:currie'] = 'קארי';
$labels['tz:australia:darwin'] = 'דארווין';
$labels['tz:australia:eucla'] = 'יוקלה';
$labels['tz:australia:hobart'] = 'הובארט';
$labels['tz:australia:lindeman'] = 'לינדמאן';
$labels['tz:australia:lord_howe'] = 'לורד האווי';
$labels['tz:australia:melbourne'] = 'מלבורן';
$labels['tz:australia:perth'] = 'פרת';
$labels['tz:australia:sydney'] = 'סידני';
$labels['tz:europe'] = 'אירופה';
$labels['tz:europe:amsterdam'] = 'אמסטרדם';
$labels['tz:europe:andorra'] = 'אנדורה';
$labels['tz:europe:astrakhan'] = 'אסטרחאן';
$labels['tz:europe:athens'] = 'אתונה';
$labels['tz:europe:belgrade'] = 'בלגראד';
$labels['tz:europe:berlin'] = 'ברלין';
$labels['tz:europe:bratislava'] = 'ברטיסלאבה';
$labels['tz:europe:brussels'] = 'בריסל';
$labels['tz:europe:bucharest'] = 'בוקרשט';
$labels['tz:europe:budapest'] = 'בודפשט';
$labels['tz:europe:busingen'] = 'בוסינגן';
$labels['tz:europe:chisinau'] = 'קישינב';
$labels['tz:europe:copenhagen'] = 'קופנהאגן';
$labels['tz:europe:dublin'] = 'דבלין';
$labels['tz:europe:gibraltar'] = 'גיברלטר';
$labels['tz:europe:guernsey'] = 'גרנזי';
$labels['tz:europe:helsinki'] = 'הלסינקי';
$labels['tz:europe:isle_of_man'] = 'אייל אוף מאן';
$labels['tz:europe:istanbul'] = 'איסטנבול';
$labels['tz:europe:jersey'] = 'ג\'רזי';
$labels['tz:europe:kaliningrad'] = 'קאלינינגראד';
$labels['tz:europe:kiev'] = 'קייב';
$labels['tz:europe:kirov'] = 'קירוב';
$labels['tz:europe:lisbon'] = 'ליסבון';
$labels['tz:europe:ljubljana'] = 'ליובליאנה';
$labels['tz:europe:london'] = 'לונדון';
$labels['tz:europe:luxembourg'] = 'לוקסמבורג';
$labels['tz:europe:madrid'] = 'מדריד';
$labels['tz:europe:malta'] = 'מאלטה';
$labels['tz:europe:mariehamn'] = 'מריהאם';
$labels['tz:europe:minsk'] = 'מינסק';
$labels['tz:europe:monaco'] = 'מונאקו';
$labels['tz:europe:moscow'] = 'מוסקבה';
$labels['tz:europe:oslo'] = 'אוסלו';
$labels['tz:europe:paris'] = 'פריס';
$labels['tz:europe:podgorica'] = 'פודגוריצה';
$labels['tz:europe:prague'] = 'פראג';
$labels['tz:europe:riga'] = 'ריגה';
$labels['tz:europe:rome'] = 'רומא';
$labels['tz:europe:samara'] = 'סמארה';
$labels['tz:europe:san_marino'] = 'סן מרינו';
$labels['tz:europe:sarajevo'] = 'סראייבו';
$labels['tz:europe:saratov'] = 'סראטוב';
$labels['tz:europe:simferopol'] = 'סימפרופול';
$labels['tz:europe:skopje'] = 'סקופיה';
$labels['tz:europe:sofia'] = 'סופיה';
$labels['tz:europe:stockholm'] = 'סטוקהולם';
$labels['tz:europe:tallinn'] = 'טאלין';
$labels['tz:europe:tirane'] = 'טיראנה';
$labels['tz:europe:ulyanovsk'] = 'אוליאנובסק';
$labels['tz:europe:uzhgorod'] = 'אוז\'גורוד';
$labels['tz:europe:vaduz'] = 'ואדוז';
$labels['tz:europe:vatican'] = 'ותיקן';
$labels['tz:europe:vienna'] = 'וינה';
$labels['tz:europe:vilnius'] = 'וילניוס';
$labels['tz:europe:volgograd'] = 'וולגוגראד';
$labels['tz:europe:warsaw'] = 'ורשה';
$labels['tz:europe:zagreb'] = 'זאגרב';
$labels['tz:europe:zaporozhye'] = 'זאפורוז\'ייה';
$labels['tz:europe:zurich'] = 'ציריך';
$labels['tz:indian'] = 'אינדיאן';
$labels['tz:indian:antananarivo'] = 'אטננריבו';
$labels['tz:indian:chagos'] = 'צ\'אגוס';
$labels['tz:indian:christmas'] = 'כריסטמס';
$labels['tz:indian:cocos'] = 'קוקוס';
$labels['tz:indian:comoro'] = 'קומורו';
$labels['tz:indian:kerguelen'] = 'קרגואלן';
$labels['tz:indian:mahe'] = 'מאהה';
$labels['tz:indian:maldives'] = 'מלדיביים';
$labels['tz:indian:mauritius'] = 'מאוריציוס';
$labels['tz:indian:mayotte'] = 'מאיוט';
$labels['tz:indian:reunion'] = 'ראוניון';
$labels['tz:pacific'] = 'פסיפיק';
$labels['tz:pacific:apia'] = 'אפיה';
$labels['tz:pacific:auckland'] = 'אוקלנד';
$labels['tz:pacific:bougainville'] = 'בוגיינוויל';
$labels['tz:pacific:chatham'] = 'צ\'טהאם';
$labels['tz:pacific:chuuk'] = 'צ\'וק';
$labels['tz:pacific:easter'] = 'איסטר';
$labels['tz:pacific:efate'] = 'אפאטה';
$labels['tz:pacific:enderbury'] = 'אנדרבורי';
$labels['tz:pacific:fakaofo'] = 'פקאופו';
$labels['tz:pacific:fiji'] = 'פיג\'י';
$labels['tz:pacific:funafuti'] = 'פונאפוטי';
$labels['tz:pacific:galapagos'] = 'גלאפאגוס';
$labels['tz:pacific:gambier'] = 'גאמבייר';
$labels['tz:pacific:guadalcanal'] = 'גואדאלקנאל';
$labels['tz:pacific:guam'] = 'גואם';
$labels['tz:pacific:honolulu'] = 'הונולולו';
$labels['tz:pacific:johnston'] = 'ג\'ונסטון';
$labels['tz:pacific:kiritimati'] = 'קיריטימאטי';
$labels['tz:pacific:kosrae'] = 'קושאי';
$labels['tz:pacific:kwajalein'] = 'קוואז\'אליין';
$labels['tz:pacific:majuro'] = 'מאז\'ורו';
$labels['tz:pacific:marquesas'] = 'מארקסאס';
$labels['tz:pacific:midway'] = 'מידוויי';
$labels['tz:pacific:nauru'] = 'נאורו';
$labels['tz:pacific:niue'] = 'ניואיי';
$labels['tz:pacific:norfolk'] = 'נורפוק';
$labels['tz:pacific:noumea'] = 'נומיאה';
$labels['tz:pacific:pago_pago'] = 'פאגו פאגו';
$labels['tz:pacific:palau'] = 'פאלאו';
$labels['tz:pacific:pitcairn'] = 'פיטקרן';
$labels['tz:pacific:pohnpei'] = 'פונפיי';
$labels['tz:pacific:port_moresby'] = 'פורט מורסבי';
$labels['tz:pacific:rarotonga'] = 'רארוטונגה';
$labels['tz:pacific:saipan'] = 'סאיפאן';
$labels['tz:pacific:tahiti'] = 'טהיטי';
$labels['tz:pacific:tarawa'] = 'טאראווה';
$labels['tz:pacific:tongatapu'] = 'טונגטאפו';
$labels['tz:pacific:wake'] = 'ווייק';
$labels['tz:pacific:wallis'] = 'ווליס';
localization/he_IL/labels.inc000064400000113650151727150600012163 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'ברוך בואך אל $product';
$labels['username'] = 'שם משתמש';
$labels['password'] = 'סיסמה';
$labels['server'] = 'שרת';
$labels['login'] = 'כניסה';
$labels['oauthlogin'] = 'כניסה עם provider$';
$labels['menu'] = 'תפריט';
$labels['logout'] = 'יציאה';
$labels['mail'] = 'רשימת הודעות';
$labels['settings'] = 'הגדרות אישיות';
$labels['addressbook'] = 'פנקס כתובות';
$labels['darkmode'] = 'רקע כהה';
$labels['lightmode'] = 'רקע בהיר';
$labels['inbox'] = 'נכנס';
$labels['drafts'] = 'טיוטות';
$labels['sent'] = 'נשלח';
$labels['trash'] = 'אשפה';
$labels['junk'] = 'זבל';
$labels['show_real_foldernames'] = 'הצגת שמות אמיתיים של תיקיות מיוחדות';
$labels['subject'] = 'נושא';
$labels['from'] = 'מאת';
$labels['sender'] = 'השולח';
$labels['to'] = 'אל';
$labels['cc'] = 'לידיעה';
$labels['bcc'] = 'מכותב מוסתר';
$labels['replyto'] = 'כתובת למענה';
$labels['followupto'] = 'כתובת להעברת הודעה';
$labels['date'] = 'תאריך';
$labels['size'] = 'גודל';
$labels['priority'] = 'עדיפות';
$labels['organization'] = 'ארגון';
$labels['readstatus'] = 'נקרא';
$labels['listoptions'] = 'הצגת אפשרויות...';
$labels['listoptionstitle'] = 'רשימת אפשרויות';
$labels['mailboxlist'] = 'תיקיות';
$labels['messagesfromto'] = 'הודעות $from עד $to מתוך $count';
$labels['threadsfromto'] = 'שרשור $from עד $to מתוך $count';
$labels['messagenrof'] = 'הודעה $nr מתוך $count';
$labels['fromtoshort'] = '$from – $to מתוך $count';
$labels['copy'] = 'העתק';
$labels['move'] = 'העבר';
$labels['moveto'] = 'תיוק ב...';
$labels['copyto'] = 'העתקה אל...';
$labels['download'] = 'הורדה';
$labels['open'] = 'לפתוח';
$labels['showattachment'] = 'הצגה';
$labels['showanyway'] = 'להציג בכל מקרה';
$labels['filename'] = 'שם קובץ';
$labels['filesize'] = 'גודל קובץ';
$labels['addtoaddressbook'] = 'הוספה לפנקס כתובות';
$labels['sun'] = 'יום א';
$labels['mon'] = 'יום ב';
$labels['tue'] = 'יום ג';
$labels['wed'] = 'יום ד';
$labels['thu'] = 'יום ה';
$labels['fri'] = 'יום ו';
$labels['sat'] = 'יום ש';
$labels['sunday'] = 'ראשון';
$labels['monday'] = 'שני';
$labels['tuesday'] = 'שלישי';
$labels['wednesday'] = 'רביעי';
$labels['thursday'] = 'חמישי';
$labels['friday'] = 'ששי';
$labels['saturday'] = 'שבת';
$labels['jan'] = 'ינו';
$labels['feb'] = 'פבר';
$labels['mar'] = 'מרץ';
$labels['apr'] = 'אפר';
$labels['may'] = 'מאי';
$labels['jun'] = 'יונ';
$labels['jul'] = 'יול';
$labels['aug'] = 'אוג';
$labels['sep'] = 'ספט';
$labels['oct'] = 'אוק';
$labels['nov'] = 'נוב';
$labels['dec'] = 'דצמ';
$labels['longjan'] = 'ינואר';
$labels['longfeb'] = 'פברואר';
$labels['longmar'] = 'מרץ';
$labels['longapr'] = 'אפריל';
$labels['longmay'] = 'מאי';
$labels['longjun'] = 'יוני';
$labels['longjul'] = 'יולי';
$labels['longaug'] = 'אוגוסט';
$labels['longsep'] = 'ספטמבר';
$labels['longoct'] = 'אוקטובר';
$labels['longnov'] = 'נובמבר';
$labels['longdec'] = 'דצמבר';
$labels['today'] = 'היום';
$labels['refresh'] = 'רענון';
$labels['checkmail'] = 'משיכת הודעות חדשות';
$labels['compose'] = 'כתיבת הודעה';
$labels['writenewmessage'] = 'יצירת הודעה חדשה';
$labels['reply'] = 'תגובה';
$labels['replytomessage'] = 'מענה לשולח';
$labels['replytoallmessage'] = 'מענה לשולח ולכל הנמענים';
$labels['replyall'] = 'מענה לכולם';
$labels['replylist'] = 'מענה לרשימת תפוצה';
$labels['forward'] = 'העברה';
$labels['forwardinline'] = 'העבר בגוף ההודעה';
$labels['forwardattachment'] = 'העבר כצרופה';
$labels['forwardmessage'] = 'העבר הודעה';
$labels['bouncemsg'] = 'שליחה מחדש (כי המערכת החזירה את המשלוח)';
$labels['bounce'] = 'שליחה מחדש';
$labels['deletemessage'] = 'מחיקה';
$labels['movemessagetotrash'] = 'השלכה לאשפה';
$labels['printmessage'] = 'הדפסה';
$labels['previousmessage'] = 'הצגת הודעה קודמת';
$labels['firstmessage'] = 'הצגת ההודעה הראשונה';
$labels['nextmessage'] = 'הצגת ההודעה הבאה';
$labels['lastmessage'] = 'הצגת ההודעה האחרונה';
$labels['backtolist'] = 'חזרה אל רשימת ההודעות';
$labels['viewsource'] = 'הצגת קוד מקור';
$labels['mark'] = 'סימון';
$labels['markmessages'] = 'סימון הודעות';
$labels['markread'] = 'כנקראו';
$labels['markunread'] = 'כלא נקראו';
$labels['markflagged'] = 'כמסומן';
$labels['markunflagged'] = 'כלא מסומן';
$labels['markundeleted'] = 'כמי שלא נמחקו';
$labels['moreactions'] = 'פעולות נוספות...';
$labels['markallread'] = 'סימון כל ההודעות כאילו נקראו';
$labels['folders-cur'] = 'רק התיקיה שנבחרה';
$labels['folders-sub'] = 'רק התיקיה שנבחרה ותת התיקיות שלה';
$labels['folders-all'] = 'כל התיקיות';
$labels['more'] = 'עוד';
$labels['back'] = 'חזרה';
$labels['options'] = 'אפשרויות';
$labels['composeoptions'] = 'אפשרויות יצירת הודעה';
$labels['optionsandattachments'] = 'אפשרויות וצרופות';
$labels['actions'] = 'פעולות';
$labels['first'] = 'ראשונה';
$labels['last'] = 'אחרונה';
$labels['previous'] = 'הקודמת';
$labels['next'] = 'הבאה';
$labels['select'] = 'בחירה';
$labels['selection'] = 'בחירה';
$labels['all'] = 'הכל';
$labels['none'] = 'כלום';
$labels['currpage'] = 'דף נוכחי';
$labels['isread'] = 'קריאה';
$labels['unread'] = 'לא נקראו';
$labels['flagged'] = 'מסומן';
$labels['unflagged'] = 'לא מדוגלת';
$labels['unanswered'] = 'לא נענה';
$labels['withattachment'] = 'עם צרופה';
$labels['deleted'] = 'נמחק';
$labels['undeleted'] = 'לא נמחק';
$labels['replied'] = 'נענתה';
$labels['forwarded'] = 'קודמה';
$labels['invert'] = 'היפוך הסימון';
$labels['filter'] = 'סינון';
$labels['list'] = 'רשימה';
$labels['threads'] = 'שרשור';
$labels['expand-all'] = 'הרחבה כלית';
$labels['expand-unread'] = 'הרחבה טרם נקרא';
$labels['collapse-all'] = 'כינוס כללי';
$labels['threaded'] = 'משורשר';
$labels['showunread'] = 'הצגת הודעות שלא נקראו';
$labels['autoexpand_threads'] = 'הרחבת הודעות משורשרות';
$labels['do_expand'] = 'כל השרשורים';
$labels['expand_only_unread'] = 'רק עם הודעות שטרם נקראו';
$labels['fromto'] = 'שולח/נמען';
$labels['flag'] = 'דגל';
$labels['attachment'] = 'צרופה';
$labels['nonesort'] = 'כלום';
$labels['sentdate'] = 'תאריך משלוח';
$labels['arrival'] = 'תאריך הגעה';
$labels['asc'] = 'בסדר עולה';
$labels['desc'] = 'בסדר יורד';
$labels['listcolumns'] = 'רשימת עמודות';
$labels['listsorting'] = 'המיון לפי העמודה';
$labels['listorder'] = 'סדר מיון';
$labels['listmode'] = 'אופן הצגת רשימה';
$labels['lmode'] = 'מצב רשימה';
$labels['layout'] = 'מערך';
$labels['layoutwidescreen'] = 'מסך רחב';
$labels['layoutdesktop'] = 'מחשב שולחני';
$labels['layoutlist'] = 'רשימה';
$labels['layoutwidescreendesc'] = 'פריסה רחבה (3 טורים)';
$labels['layoutdesktopdesc'] = 'שולחן עבודה (פריסה רחבה והצגת ההודעה למטה)';
$labels['layoutlistdesc'] = 'רשימה (ללא הצגת ההודעה)';
$labels['folderactions'] = 'פעולות על תיקיות';
$labels['compact'] = 'פינוי שטח לא מנוצל';
$labels['empty'] = 'ריקון';
$labels['importmessages'] = 'ייבוא הודעות';
$labels['mailimportdesc'] = 'ניתן להעלות דוא"ל באמצעות קבצים המקודדים כ MIME או MBOX';
$labels['mailimportzip'] = 'ניתן לדחוס מספר קבצים לתוך ארכיון ZIP';
$labels['quota'] = 'ניצול קיבולת';
$labels['unknown'] = 'לא ידוע';
$labels['unlimited'] = 'ללא הגבלה';
$labels['quotatype'] = 'טיפוס קווטה';
$labels['quotatotal'] = 'הגבלה';
$labels['quotaused'] = 'בשימוש';
$labels['quotastorage'] = 'נפח כונן';
$labels['quotamessage'] = 'ספירת הודעות';
$labels['shortheaderdate'] = 'ביום $date';
$labels['shortheaderto'] = 'עד $to ביום $date';
$labels['shortheaderfrom'] = 'מ- $from בתאריך $date';
$labels['quicksearch'] = 'חיפוש מהיר';
$labels['searchplaceholder'] = 'חיפוש...';
$labels['resetsearch'] = 'ניקוי תיבת החיפוש';
$labels['searchmod'] = 'מאפייני חיפוש';
$labels['msgtext'] = 'כל ההודעה';
$labels['body'] = 'גוף ההודעה';
$labels['type'] = 'סוג';
$labels['namex'] = 'שם';
$labels['searchscope'] = 'היקף';
$labels['currentfolder'] = 'תיקיה נוכחית';
$labels['subfolders'] = 'תיקיה זו ותת תיקיות';
$labels['allfolders'] = 'כל התיקיות';
$labels['searchinterval-1W'] = 'יותר משבוע';
$labels['searchinterval-1M'] = 'יותר מחודש';
$labels['searchinterval-1Y'] = 'יותר משנה';
$labels['searchinterval1W'] = 'פחות משבוע';
$labels['searchinterval1M'] = 'פחות מחודש';
$labels['searchinterval1Y'] = 'פחות משנה';
$labels['openinextwin'] = 'פתיחה בחלון חדש';
$labels['emlsave'] = 'הורדת הודעה בפורמט  EML';
$labels['changeformattext'] = 'הצגה בפורמט לא מעוצב';
$labels['changeformathtml'] = 'הצגה בפורמט HTML';
$labels['editasnew'] = 'עריכת ההודעה כחדשה';
$labels['send'] = 'שלח';
$labels['sendmessage'] = 'משלוח מיידי';
$labels['savemessage'] = 'שמירת טיוטה';
$labels['addattachment'] = 'צירוף קובץ';
$labels['charset'] = 'קידוד';
$labels['editortype'] = 'סוג עורך';
$labels['returnreceipt'] = 'אישור קבלה';
$labels['dsn'] = 'הודעה על מצב המסירה';
$labels['keepformatting'] = 'המשך עריכה';
$labels['mailreplyintro'] = ':כתב $sender, $date בתאריך';
$labels['originalmessage'] = 'הודעה מקורית';
$labels['selectimage'] = 'בחר תמונה';
$labels['addimage'] = 'הוסף תמונה';
$labels['selectmedia'] = 'בחר סרטון';
$labels['addmedia'] = 'הוסף סרטון';
$labels['encrypt'] = 'הצפנה';
$labels['encryptmessage'] = 'הצפנת הודעה';
$labels['encryptmessagemailvelope'] = 'הצפנה באמצעות Mailvelope';
$labels['importpubkeys'] = 'ייבוא מפתחות ציבוריים';
$labels['encryptedsendialog'] = 'נשלחת הודעה מוצפנת';
$labels['encryptandsign'] = 'להצפין ולחתום';
$labels['keyid'] = 'קוד זיהוי מפתח';
$labels['keylength'] = 'סיביות';
$labels['keyexpired'] = 'פג תוקף';
$labels['keyrevoked'] = 'נשלל';
$labels['bccinstead'] = 'שימוש במכותבים נסתרים';
$labels['addheader'] = 'הוספת נמען (כותרת)';
$labels['insert'] = 'הוספה בין ערכים';
$labels['insertcontact'] = 'פה יש להוסיף איש קשר';
$labels['recipient'] = 'הנמען';
$labels['recipientedit'] = 'עריכת נמענים';
$labels['editidents'] = 'עריכת זהויות';
$labels['spellcheck'] = 'איות';
$labels['checkspelling'] = 'בדיקת איות';
$labels['resumeediting'] = 'המשך עריכה';
$labels['revertto'] = 'חזור למצב קודם';
$labels['restore'] = 'שיחזור';
$labels['restoremessage'] = 'לשחזר הודעה?';
$labels['ignore'] = 'להתעלם';
$labels['responses'] = 'תגובות';
$labels['insertresponse'] = 'הכנסת תגובה';
$labels['manageresponses'] = 'ניהול תגובות';
$labels['newresponse'] = 'צור מענה חדש';
$labels['addresponse'] = 'הוסף מענה';
$labels['editresponse'] = 'עריכת תגובה';
$labels['editresponses'] = 'עריכת תגובות';
$labels['responsename'] = 'שם';
$labels['responsetext'] = 'גוף התגובה';
$labels['attach'] = 'צירוף';
$labels['attachments'] = 'צרופות';
$labels['upload'] = 'העלאה';
$labels['uploadprogress'] = '$percent ($current מתוך $total)';
$labels['close'] = 'סגירה';
$labels['messageoptions'] = 'אפשרויות הודעה...';
$labels['togglecomposeoptions'] = 'בחירה בין הגדרות בסיסיות או מתקדמות של יצירת הודעה';
$labels['attachmentrename'] = 'שינוי שם הצרופה';
$labels['low'] = 'נמוך';
$labels['lowest'] = 'נמוך ביותר';
$labels['normal'] = 'רגיל';
$labels['high'] = 'גבוה';
$labels['highest'] = 'גבוה ביותר';
$labels['nosubject'] = '(ללא נושא)';
$labels['showimages'] = 'הצגת תמונות';
$labels['allow'] = 'הרשאה';
$labels['alwaysshow'] = '$sender תמיד להציג תמונות מאת';
$labels['alwaysallow'] = 'תמיד לקבל מ- $sender';
$labels['isdraft'] = 'זו טיוטה של הודעה';
$labels['andnmore'] = 'עוד  $nr';
$labels['details'] = 'פרטים';
$labels['summary'] = 'סיכום';
$labels['headers'] = 'כותרות';
$labels['allheaders'] = 'כל הכותרות';
$labels['togglemoreheaders'] = 'הראה נתוני מערכת נוספים של ההודעה';
$labels['togglefullheaders'] = 'הראה / בטל צפיה בנתוני מערכת של ההודעה';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ללא עיצוב';
$labels['savesentmessagein'] = 'היכן לשמור ההודעה?';
$labels['dontsave'] = 'ללא שמירה';
$labels['maxuploadsize'] = 'גודל מקסימלי לקובץ הוא  $size';
$labels['addcc'] = 'הוספת מכותב לידיעה';
$labels['addbcc'] = 'הוספת מכותב נסתר';
$labels['addreplyto'] = 'הוספת כתובת למענה';
$labels['addfollowupto'] = 'הוספת כתובת להעברת הודעה';
$labels['sendreceipt'] = 'לשלוח אישור קבלה?';
$labels['mdnrequest'] = 'השולח ביקש לדעת אם ההודעה נקראה. האם להודיע לשולח?';
$labels['receiptread'] = 'אישור קבלה (נקרא)';
$labels['yourmessage'] = 'אישור קבלה להודעתך';
$labels['receiptnote'] = 'הערה: האישור אינו מבטיח שהנמען קרא או הבין את תוכן ההודעה.';
$labels['sendalwaysto'] = 'לשלוח תמיד אל email$';
$labels['zoomin'] = 'מבט עמוק יותר לפרטים';
$labels['zoomout'] = 'מבט רחוק יותר מהפרטים';
$labels['rotate'] = 'לסובב';
$labels['increaseimage'] = 'להגדיל תמונה';
$labels['decreaseimage'] = 'להקטין תמונה';
$labels['rotateimage'] = 'לסובב תמונה';
$labels['showtools'] = 'הצגת כלים לעיבוד תמונה';
$labels['hidetools'] = 'הסתרת כלים לעיבוד תמונה';
$labels['name'] = 'שם להצגה';
$labels['firstname'] = 'שם פרטי';
$labels['surname'] = 'שם משפחה';
$labels['middlename'] = 'שם אמצעי';
$labels['nameprefix'] = 'קידומת';
$labels['namesuffix'] = 'סיומת';
$labels['nickname'] = 'שם חיבה';
$labels['jobtitle'] = 'תפקיד באירגון';
$labels['department'] = 'מחלקה';
$labels['gender'] = 'מגדר';
$labels['maidenname'] = 'שם משפחה לפני נישואין';
$labels['email'] = 'כתובת דוא"ל';
$labels['phone'] = 'מספר טלפון';
$labels['address'] = 'כתובת';
$labels['street'] = 'רחוב';
$labels['locality'] = 'עיר';
$labels['zipcode'] = 'מיקוד';
$labels['region'] = 'אישור';
$labels['country'] = 'מדינה';
$labels['birthday'] = 'יום הולדת';
$labels['anniversary'] = 'יום נישואין';
$labels['website'] = 'אתר אינטרנט';
$labels['instantmessenger'] = 'כינוי בצ\'ט';
$labels['notes'] = 'הערות';
$labels['male'] = 'זכר';
$labels['female'] = 'נקבה';
$labels['manager'] = 'מנהל/ת';
$labels['assistant'] = 'עוזר/ת';
$labels['spouse'] = 'בן/בת זוג';
$labels['allfields'] = 'כל השדות';
$labels['search'] = 'חיפוש';
$labels['searchresult'] = 'תוצאת חיפוש';
$labels['advsearch'] = 'חיםוש מתקדם';
$labels['advanced'] = 'מתקדם';
$labels['other'] = 'אחר';
$labels['printcontact'] = 'הדפסת נתונים של איש קשר';
$labels['qrcode'] = 'קוד QR';
$labels['typehome'] = 'בית';
$labels['typework'] = 'עבודה';
$labels['typeother'] = 'אחר';
$labels['typemobile'] = 'נייד';
$labels['typemain'] = 'עיקרי';
$labels['typehomefax'] = 'פקס בית';
$labels['typeworkfax'] = 'פקס עבודה';
$labels['typecar'] = 'מכונית';
$labels['typepager'] = 'זימונית';
$labels['typevideo'] = 'וידאו';
$labels['typeassistant'] = 'עוזר/ת';
$labels['typehomepage'] = 'דף הבית';
$labels['typeblog'] = 'יומן רשת';
$labels['typeprofile'] = 'פרופיל';
$labels['addfield'] = 'הוסף שדה';
$labels['addcontact'] = 'הוסף איש קשר';
$labels['editcontact'] = 'עריכת איש קשר';
$labels['contacts'] = 'אנשי קשר';
$labels['contactproperties'] = 'מאפייני איש קשר';
$labels['contactnameandorg'] = 'שם וארגון';
$labels['personalinfo'] = 'מידע אישי';
$labels['personal'] = 'אישי';
$labels['contactphoto'] = 'תצלום איש קשר';
$labels['edit'] = 'עריכה';
$labels['cancel'] = 'ביטול';
$labels['save'] = 'שמירה';
$labels['delete'] = 'מחיקה';
$labels['discard'] = 'להפטר';
$labels['continue'] = 'המשך';
$labels['ok'] = 'אשר/י';
$labels['rename'] = 'שינוי שם';
$labels['addphoto'] = 'הוספה';
$labels['replacephoto'] = 'החלפה';
$labels['uploadphoto'] = 'העלאת תמונה';
$labels['choosefile'] = 'יש לבחור קובץ...';
$labels['choosefiles'] = 'יש לבחור קבצים...';
$labels['browse'] = 'דפדוף';
$labels['newcontact'] = 'צור איש קשר חדש';
$labels['deletecontact'] = 'מחיקת אנשי קשר מסומנים';
$labels['composeto'] = 'יצירת הודעה אל';
$labels['contactsfromto'] = 'אנשי קשר $from עד $to מתוך $count';
$labels['print'] = 'הדפסה';
$labels['export'] = 'ייצוא';
$labels['exportall'] = 'יצוא של כל הרשומות';
$labels['exportsel'] = 'צוא של רשומות נבחרות';
$labels['exportvcards'] = 'ייצוא אנשי קשר בפורמט vCard';
$labels['newgroup'] = 'הוסף קבוצה חדשה';
$labels['addgroup'] = 'הוספת קבוצה';
$labels['grouprename'] = 'שינוי שם קבוצה';
$labels['groupdelete'] = 'מחיקת קבוצה';
$labels['groupassign'] = 'שיוך לקבוצה...';
$labels['groupremove'] = 'הסרה מקבוצה';
$labels['groupremoveselected'] = 'אנשי הקשר שנבחרו יוסרו מהקבוצה';
$labels['uponelevel'] = 'רמה אחת מעלה';
$labels['previouspage'] = 'הצגת הקבוצה הקודמת';
$labels['firstpage'] = 'הצגת הקבוצה הראשונה';
$labels['nextpage'] = 'הצגת הקבוצה הבאה';
$labels['lastpage'] = 'הצגת הקבוצה האחרונה';
$labels['group'] = 'קבוצה';
$labels['groups'] = 'קבוצות';
$labels['listgroup'] = 'רשימה של חברי קבוצה';
$labels['personaladrbook'] = 'כתובות פרטיות';
$labels['searchsave'] = 'שמירת החיפוש';
$labels['searchdelete'] = 'מחיקת החיפוש';
$labels['import'] = 'ייבוא';
$labels['importcontacts'] = 'ייבוא אנשי קשר';
$labels['importfromfile'] = 'ייבוא מקובץ';
$labels['importtarget'] = 'הוספת אנשי קשר אל ';
$labels['importreplace'] = 'החלפת כל פנקס הכתובות';
$labels['importgroups'] = 'ייבוא הגדרות קבוצה';
$labels['importgroupsall'] = 'הכל (יש להקים קבוצות אם צריך)';
$labels['importgroupsexisting'] = 'רק עבור קבוצות קיימות';
$labels['importdesc'] = 'ניתן להעלות אנשי קשר מפנקס כתובות קיים.  כרגע יש תמיכה ביבוא רשומות הערוכות בצורת vCard או CSV (מופרד פסיקים)';
$labels['importmapdesc'] = 'נא לאשר את מיפוי השדות שלהלן לפני שנמשיך עם יבוא קובץ נתונים מסוג CSV (מופרדים ע"י פסיקים)';
$labels['fieldnotmapped'] = 'השדה ללא מיפוי (לא לייבא)';
$labels['skipheader'] = 'לא לייבא שורה ראשונה (כותרות)';
$labels['done'] = 'בוצע';
$labels['settingsfor'] = 'הגדרות עבור';
$labels['about'] = 'אודות';
$labels['preferences'] = 'העדפות';
$labels['userpreferences'] = 'העדפות משתמש';
$labels['editpreferences'] = 'עריכה של העדפות משתמש';
$labels['identities'] = 'זהויות';
$labels['manageidentities'] = 'נהל זהויות';
$labels['newidentity'] = 'צור זהות חדשה';
$labels['addidentity'] = 'הוסף זהות';
$labels['editidentity'] = 'ערוך זהות';
$labels['identityencryption'] = 'הצפנה';
$labels['preferhtml'] = 'הצגת HTML';
$labels['defaultcharset'] = 'ברירת מחדל של תווים';
$labels['htmlmessage'] = 'תוכן HTML';
$labels['messagepart'] = 'גוף ההודעה';
$labels['digitalsig'] = 'חתימה דיגיטלית';
$labels['dateformat'] = 'פורמט התאריך';
$labels['timeformat'] = 'פורמט השעה';
$labels['prettydate'] = 'תאריכים מעוצבים';
$labels['setdefault'] = 'קביעה כברירת מחדל';
$labels['autodetect'] = 'אוטומטי';
$labels['language'] = 'שפה';
$labels['timezone'] = 'איזור זמן';
$labels['pagesize'] = 'מספר שורות בדף';
$labels['signature'] = 'חתימה';
$labels['dstactive'] = 'שעון קיץ';
$labels['showinextwin'] = 'צפיה בהודעה בחלון חדש';
$labels['composeextwin'] = 'יצירת הודעה בחלון חדש';
$labels['htmleditor'] = 'יצירת הודעה מעוצבת';
$labels['htmlonreply'] = 'רק במענה להודעת HTML';
$labels['htmlonreplyandforward'] = 'להעביר או להשיב להודעה שהגיעה בפורמט HTML';
$labels['htmlsignature'] = 'חתימה מעוצבת';
$labels['showemail'] = 'הצגת כתובת דוא"ל עם שם השולח';
$labels['previewpane'] = 'תצוגה מוקדמת';
$labels['skin'] = 'ערכת מראה';
$labels['logoutclear'] = 'ריקון סל אשפה ביציאה';
$labels['logoutcompact'] = 'פינוי שטח לא מנוצל ביציאה';
$labels['uisettings'] = 'ממשק משתמש';
$labels['serversettings'] = 'הגדרות שרת';
$labels['mailboxview'] = 'הצגת תיבת ההודעות';
$labels['mdnrequests'] = 'משלוח אישור מסירה';
$labels['askuser'] = 'שאל את המשתמש';
$labels['autosend'] = 'שליחה אוטומטית';
$labels['autosendknown'] = 'משלוח אישור קבלה רק לאנשי הקשר שלי';
$labels['autosendknownignore'] = 'משלוח אישור קבלה לאנשי הקשר שלי בלבד ולהתעלם מאחרים';
$labels['autosendtrusted'] = 'לשלוח אישור קבלה לשולחים מוכרים, בכל מקרה אחר לבקש אישור';
$labels['autosendtrustedignore'] = 'לשלוח אישור קבלה לשולחים מוכרים, אחרת להתעלם';
$labels['ignorerequest'] = 'להתעלם מהבקשה';
$labels['readwhendeleted'] = 'סימון הודעה כנקראה לאחר מחיקה';
$labels['flagfordeletion'] = 'סימון הודעה כמחוקה במקום מחיקה';
$labels['skipdeleted'] = 'הסתרת הודעות שנמחקו';
$labels['deletealways'] = 'אם העברה לתיקית מחיקה נכשלת יש למחוק לתמיד';
$labels['deletejunk'] = 'מחיקה ישירה של הודעות זבל';
$labels['showremoteimages'] = 'הצגת תמונות משרת מרוחק בגוף ההודעה';
$labels['allowremoteresources'] = 'אישור שימוש במשאבים מרוחקים (תמונות, סגנונות)';
$labels['fromknownsenders'] = 'משולחים מוכרים';
$labels['fromtrustedsenders'] = 'התקבל משולחים מוכרים';
$labels['frommycontacts'] = 'מאנשי הקשר שלי';
$labels['always'] = 'תמיד';
$labels['alwaysbutplain'] = 'תמיד, למעט בעת מענה לטקסט פשוט';
$labels['showinlineimages'] = 'הצגת תמונות מצורפות בתחתית ההודעה';
$labels['autosavedraft'] = 'שמירה אוטומטית של טיוטה';
$labels['everynminutes'] = 'כל $n דקות';
$labels['refreshinterval'] = 'רענון ההתצוגה לשם בדיקת קיום של הודעות חדשות וכדומה';
$labels['never'] = 'אף פעם';
$labels['immediately'] = 'מיידית';
$labels['messagesdisplaying'] = 'הצגת הודעות';
$labels['messagescomposition'] = 'כתיבת הודעות';
$labels['mimeparamfolding'] = 'שמות קבצים מצורפים';
$labels['2231folding'] = 'תאימות מלאה 2231 תאנדרבירד';
$labels['miscfolding'] = 'תאימות 2047/2231 אאוטלוק';
$labels['2047folding'] = 'תאימות מלאה 2047 אחרים';
$labels['force7bit'] = 'קידוד MIME עבור תווים בעלי 8 ביטים';
$labels['savelocalstorage'] = "שמירה באיחסון מקומי של הדפדפן (ארעית)";
$labels['advancedoptions'] = 'הגדרות נוספות';
$labels['toggleadvancedoptions'] = 'בחירה בין הגדרות בסיסיות או מתקדמות';
$labels['focusonnewmessage'] = 'מיקוד הסמן על החלון עם ההודעה החדשה';
$labels['checkallfolders'] = 'בדיקת הודעות חדשות בכל התיקיות';
$labels['displaynext'] = 'הצגת הרשומה הבאה לאחר מחיקה/העברה';
$labels['defaultfont'] = 'גופן ברירת מחדל להודעה בפורמט HTML';
$labels['mainoptions'] = 'אפשרויות עיקריות';
$labels['browseroptions'] = 'אפשרויות דפדפן';
$labels['section'] = 'קטע';
$labels['maintenance'] = 'תחזוקה';
$labels['newmessage'] = 'הודעה חדשה';
$labels['signatureoptions'] = 'אפשרויות לשיבוץ חתימה';
$labels['whenreplying'] = 'כאשר עונים';
$labels['replyempty'] = 'לא לצטט הודעה מקורית';
$labels['replytopposting'] = 'הודעה חדשה תתחיל מעל ההודעה המקורית';
$labels['replytoppostingnoindent'] = 'הודעה תתחיל מעל הקטע המצוטט (ללא נסיגה)';
$labels['replybottomposting'] = 'הודעה חדשה תתחיל מתחת להודעה המקורית';
$labels['replyremovesignature'] = 'החתימה תוסר מההודעה המקורית במענה להודעה';
$labels['autoaddsignature'] = 'הוספה אוטומטית של חתימה';
$labels['newmessageonly'] = 'הודעה חדשה בלבד';
$labels['replyandforwardonly'] = 'מענה והעברת הודעה בלבד';
$labels['insertsignature'] = 'שיבוץ חתימה';
$labels['sigbelow'] = 'למקם חתימה מתחת להודעת המצוטטת';
$labels['sigseparator'] = 'חובת שימוש במפריד תקני בחתימה';
$labels['automarkread'] = 'סימון הודעה כנקראה';
$labels['afternseconds'] = 'לאחר $n שניות';
$labels['reqmdn'] = 'תמיד יש לדרוש אישור קבלה';
$labels['reqdsn'] = 'תמיד לבקש הודעה על מצב המסירה';
$labels['replysamefolder'] = 'המענה ישמר בתיקיה של ההודעה המקורית';
$labels['defaultabook'] = 'ברירת המחדל של רשימת כתובות';
$labels['autocompletesingle'] = 'לדלג על כתובת דואר חילופית בעת שימוש בהשלמה אוטומטית של הקלדה';
$labels['listnamedisplay'] = 'הצגת איש הקשר בתור';
$labels['contactformmode'] = 'הצגה של טופס איש קשר';
$labels['privatemode'] = 'פרטי (בית)';
$labels['businessmode'] = 'עיסקי (עבודה)';
$labels['collectedaddresses'] = 'כתובות שלוקטו';
$labels['collectedrecipients'] = 'נמענים שלוקטו';
$labels['collectedrecipientsopt'] = 'לשמור כתובות נמענים של דואר יוצא ב-';
$labels['collectedsendersopt'] = 'לשמור שולחים מוכרים ב-';
$labels['trustedsenders'] = 'שולחים מוכרים';
$labels['spellcheckbeforesend'] = 'בדיקת איות לפני המשלוח';
$labels['spellcheckoptions'] = 'אפשריות בדיקת איות';
$labels['spellcheckignoresyms'] = 'התעלמות ממילים המכילות סמלים';
$labels['spellcheckignorenums'] = 'התעלמות ממילים המכילות מספרים';
$labels['spellcheckignorecaps'] = 'התעלמות ממילים עם אותציות ראשיות';
$labels['addtodict'] = 'הוספה למילון';
$labels['mailtoprotohandler'] = 'קביעת הפרוטוקול לטיפול בקישור מסוג  mailto:links';
$labels['standardwindows'] = 'חלונות קופצים יטופלו כחלונות רגילים';
$labels['forwardmode'] = 'הפנית הודעות';
$labels['inline'] = 'חלק מההודעה';
$labels['asattachment'] = 'כצרופה';
$labels['replyallmode'] = 'ברירת המחדל של כפתור [מענה לכולם]';
$labels['replyalldefault'] = 'מענה לכולם';
$labels['replyalllist'] = 'מענה לרשימת תפוצה בלבד (אם קיימת)';
$labels['allmessages'] = 'כל ההודעות';
$labels['olderxdays'] = 'לפני יותר מ- x$ ימים';
$labels['folder'] = 'תיקיה';
$labels['folders'] = 'תיקיות';
$labels['foldername'] = 'שם תיקיה';
$labels['subscribed'] = 'מנוי';
$labels['messagecount'] = 'הודעות';
$labels['create'] = 'יצירה';
$labels['createfolder'] = 'יצירת תיקיה חדשה';
$labels['managefolders'] = 'ניהול תיקיות';
$labels['specialfolders'] = 'תיקיות מיוחדות';
$labels['properties'] = 'מאפיינים';
$labels['folderproperties'] = 'מאפייני תיקיה';
$labels['parentfolder'] = 'תיקית אב';
$labels['location'] = 'מיקום';
$labels['info'] = 'מידע';
$labels['getfoldersize'] = 'הקשה להצגה של גודל תיקיה';
$labels['changesubscription'] = 'הקשה לשינוי הרשמה';
$labels['foldertype'] = 'סוג תיקיה';
$labels['personalfolder'] = 'תיקיה פרטית';
$labels['otherfolder'] = 'תיקית משתמש נוספת';
$labels['sharedfolder'] = 'תיקיה ציבורית';
$labels['findfolders'] = 'חיפוש תיקיות';
$labels['findcontacts'] = 'חיפוש אנשי קשר';
$labels['findmail'] = 'חפש הודעות דואר';
$labels['namespace.personal'] = 'אישי';
$labels['namespace.other'] = 'משתמשים אחרים';
$labels['namespace.shared'] = 'משותף';
$labels['dualuselabel'] = 'יכול רק להכיל';
$labels['dualusemail'] = 'הודעות';
$labels['dualusefolder'] = 'תיקיות';
$labels['generate'] = 'לחולל';
$labels['encryptioncreatekey'] = 'יצירה של צמד מפתחות';
$labels['openmailvelopesettings'] = 'הצגת אפשרויות לתוכנת ההצפנה';
$labels['encryptionprivkeysinmailvelope'] = 'קיימים $nr מפתחות פרטיים תואמים ברשימת המפתחות שלך בתוכנת ההצפנה';
$labels['encryptionnoprivkeysinmailvelope'] = 'לזהות השולחת אין עדיין מפתח הצפנה פרטי השמור בתוכנת ההצפנה שלך. האם ליצור כזה
כדי לאפשר הצפנת הודעות?';
$labels['encryption'] = 'הצפנה';
$labels['mailvelopeoptions'] = 'אפשרויות למעטפת ההודעה';
$labels['mailvelopemainkeyring'] = 'השתמש/י בטבעצ מפתחות עיקרית של מעטפת ההודעה';
$labels['mailvelopenotfound'] = 'ההרחבה העוסקת במעטפת ההודעה אינה מותקנת או מופעלת בדפדפן';
$labels['sortby'] = 'מיון לפי';
$labels['sortasc'] = 'מיון בסדר עולה';
$labels['sortdesc'] = 'מיון בסדר יורד';
$labels['undo'] = 'ביטול שינוי';
$labels['installedplugins'] = 'תוספים מותקנים';
$labels['plugin'] = 'תוסף תוכנה';
$labels['version'] = 'גירסה';
$labels['source'] = 'מקור';
$labels['destination'] = 'יעד';
$labels['license'] = 'רשיון';
$labels['support'] = 'קבלת תמיכה';
$labels['savedsearches'] = 'חיפושים שנשמרו';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'בייט';
$labels['KB'] = 'ק"ב';
$labels['MB'] = 'מ"ב';
$labels['GB'] = 'ג"ב';
$labels['unicode'] = 'יוניקוד';
$labels['english'] = 'אנגלית';
$labels['westerneuropean'] = 'מערב אירופי';
$labels['easterneuropean'] = 'מזרח אירופי';
$labels['southeasterneuropean'] = 'דרום מזרח אירופה';
$labels['baltic'] = 'בלטי';
$labels['cyrillic'] = 'קירילי';
$labels['arabic'] = 'ערבי';
$labels['greek'] = 'יווני';
$labels['hebrew'] = 'עברי';
$labels['turkish'] = 'טורקי';
$labels['nordic'] = 'נורדי';
$labels['thai'] = 'תאי';
$labels['celtic'] = 'קלטי';
$labels['vietnamese'] = 'וויטנאמי';
$labels['japanese'] = 'יפני';
$labels['korean'] = 'קוריאני';
$labels['chinese'] = 'סיני';
$labels['arialabeltopnav'] = 'בקרת חלון';
$labels['arialabeltasknav'] = 'משימות יישום';
$labels['arialabeltoolbar'] = 'סרגל כלים יישום';
$labels['arialabellistnav'] = 'רשימת ניווט';
$labels['arialabelactivetask'] = 'משימה פעילה';
$labels['arialabelmessagessearchfilter'] = 'מסנן של רשימת ההודעות';
$labels['arialabelmailsearchform'] = 'טופס חיפוש בתוך הודעות';
$labels['arialabelcontactsearchform'] = 'תבנית חיפוש אנשי קשר';
$labels['arialabelmailquicksearchbox'] = 'הקשת מילות חיפוש';
$labels['arialabelquicksearchbox'] = 'קלט חיפוש';
$labels['arialabelfoldersearchfilter'] = 'מסנן רשימת תיקיות';
$labels['arialabelfoldersearchform'] = 'מסך חיפוש תיקייה';
$labels['arialabelfolderlist'] = 'בחירה של תיקית הודעות';
$labels['arialabelmessagelist'] = 'רשימת הודעות';
$labels['arialabelmailpreviewframe'] = 'תצוגה מקדמית של הודעה';
$labels['arialabelmailboxmenu'] = 'תפריט פעולות תפריט';
$labels['arialabellistselectmenu'] = 'רשימת פריטים לבחירה';
$labels['arialabelthreadselectmenu'] = 'בחירת פתילים של הודעות מתוך רשימה';
$labels['arialabelmessagelistoptions'] = 'אפשרויות להצגת הודעות ומיונן';
$labels['arialabelmailimportdialog'] = 'תהליך ייבוא הודעות';
$labels['arialabelmessagenav'] = 'ניווט הודעה';
$labels['arialabelmessagebody'] = 'גוף הודעה';
$labels['arialabelmessageactions'] = 'פעולות הודעה';
$labels['arialabelcontactquicksearch'] = 'תבנית חיפוש אנשי קשר';
$labels['arialabelcontactsearchbox'] = 'קלט חיפוש איש קשר';
$labels['arialabelmessageheaders'] = 'תקורות הודעה';
$labels['arialabelforwardingoptions'] = 'אפשרויות העברה';
$labels['arialabelreplyalloptions'] = 'אפשרויות מענה לכולם';
$labels['arialabelmoremessageactions'] = 'עוד פעולות הודעה';
$labels['arialabelmorecontactactions'] = 'פעולות נוספות על אנשי קשר';
$labels['arialabelmarkmessagesas'] = 'סימון הודעות נבחרות בתור...';
$labels['arialabelcomposeoptions'] = 'אפשרויות הלחנה';
$labels['arialabelresponsesmenu'] = 'תפריט של תגובות מוכנות מראש';
$labels['arialabelattachmentuploadform'] = 'תבנית העלאת צרופה';
$labels['arialabelattachmentmenu'] = 'אפשרויות צרופה';
$labels['arialabelmailtomenu'] = 'אפשרויות כתובת דואר';
$labels['arialabelattachmentpreview'] = 'תצוגה מקדמית של צרופה';
$labels['ariasummarycomposecontacts'] = 'רשימה של אנשי קשר וקבוצות שיבחרו כנמענים';
$labels['arialabelcontactexportoptions'] = 'אפשרויות ייצוא איש קשר';
$labels['arialabelabookgroupoptions'] = 'אפשרויות קבוצה/פנקס כתובות';
$labels['arialabelpreferencesform'] = 'תבנית העדפות';
$labels['arialabelidentityeditfrom'] = 'טופס עריכת זהות';
$labels['arialabelresponseeditfrom'] = 'טופס עריכת מענה';
$labels['arialabelsearchterms'] = 'מילות חיםוש';
$labels['arialabeldropactionmenu'] = 'תפריט גרירה';
$labels['arialabelheadersmenu'] = 'תפריט הוספת (כותרת) נמען';
$labels['arialabelimagetools'] = 'כלים לעיבוד תמונה';
$labels['helplistnavigation'] = 'ניווט ברשימה באמצעות לוח המקשים';
$labels['helplistkeyboardnavigation'] = "חיצים למלעלה/למטה: בחירת שורה/מיקוד בשורה
מקש רווח: בחירה בשורת המיקוד
מקש SHIFT+חץ למעלה/למטה: בחירה בשורות נוספות מעל/מתחת לשורה הנוכחית
מקש CTRL+רווח: הוספה/הסרה של שורה מהקבוצה שנבחרה";
$labels['helplistkeyboardnavmessages'] = "חץ ימין/שמאל: הרחבה/צימצום של פתיל ההודעות (במצב של הצגת פתילים בלבד)
ENTER: פתיחה של ההודעה שנבחרה
DELETE: העברה של ההודעה שנבחרה לפח האשפה";
$labels['helplistkeyboardnavcontacts'] = "ENTER: פתיחה של איש הקשר שסומן ";
localization/he_IL/messages.inc000064400000047065151727150600012536 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'אירעה שגיאה !';
$messages['loginfailed']  = 'הכניסה נכשלה';
$messages['cookiesdisabled'] = 'הדפדפן אינו מקבל עוגיות';
$messages['sessionerror'] = 'כניסתך למערכת אינה חוקית או שפג תוקפה';
$messages['cookiesmismatch'] = 'קיימת אי התאמה בין בעוגיות. יש לנקות עוגיות השמורות בדפדפן';
$messages['storageerror'] = 'הקשר לשרת הדואר נכשל';
$messages['servererror'] = '! שגיאת שרת';
$messages['servererrormsg'] = '$msg  שגיאת שרת';
$messages['accountlocked'] = 'יותר מדיי ניסיונות כניסה כושלים. נסה שנית מאוחר יותר.';
$messages['connerror'] = 'שגיאת תקשורת עם השרת.';
$messages['dberror'] = '! שגיאה במסד הנתונים';
$messages['dbconnerror'] = 'לא ניתן ליצור קשר עם מסד הנתוים';
$messages['windowopenerror'] = 'החלון הקופץ נחסם!';
$messages['requesttimedout'] = 'תם הזמן המוקצב לבקשה';
$messages['errorreadonly'] = 'לא ניתן לבצע הפעולה כי התיקייה במצב קריאה בלבד';
$messages['errornoperm'] = 'לא ניתן לבצע הפעולה כי אין הרשאה לבצעה';
$messages['erroroverquota'] = 'לא ניתן לבצע את הפעולה.אין מקום פנוי על הדיסק';
$messages['erroroverquotadelete'] = 'אין מקום פנוי על הדיסק. יש להשתמש ב SHIFT+DELETE כדי למחוק ההודעה';
$messages['invalidrequest'] = 'בקשה לא חוקית. המידע לא נשמר';
$messages['invalidhost'] = 'שם שרת לא חוקי';
$messages['nomessagesfound'] = 'לא נמצאו הודעות בתיבה זו';
$messages['loggedout'] = 'הפעילות הסתיימה בהצלחה.  להתראות.';
$messages['mailboxempty'] = 'רשימת ההודעות ריקה';
$messages['nomessages'] = 'אין הודעות';
$messages['refreshing'] = 'מרענן...';
$messages['loading'] = 'טעינה...';
$messages['uploading'] = 'קובץ עולה...';
$messages['attaching'] = 'הוספת צרופה...';
$messages['uploadingmany'] = 'מעלה קבצים...';
$messages['loadingdata'] = 'טעינת מידע...';
$messages['checkingmail'] = 'בדיקת קיום הודעות חדשות...';
$messages['sendingmessage'] = 'ההודעה נשלחת...';
$messages['messagesent'] = 'ההודעה נשלחה בהצלחה';
$messages['savingmessage'] = 'שמירת הודעה...';
$messages['messagesaved'] = 'ההודעה נשמרה כטיוטה';
$messages['successfullysaved'] = 'נשמרה בהצלחה';
$messages['savingresponse'] = 'שמירת תגובה...';
$messages['deleteresponseconfirm'] = 'האם למחוק את התגובה?';
$messages['nocontactselected'] = 'עדיין לא נבחר איש קשר';
$messages['addedsuccessfully'] = 'איש הקשר נוסף לפנקס בהצלחה';
$messages['contactexists'] = 'קים איש קשר בעל כתובת דוא"ל זהה';
$messages['contactnameexists'] = 'קיים כבר איש קשר בעל אותו שם';
$messages['blockedimages'] = 'תמונות משרת אחר נחסמו כדי לשמור על הפרטיות';
$messages['blockedresources'] = 'משאבים מרוחקים נחסמו כדי לשמור על פרטיות';
$messages['suspiciousemail'] = 'ההודעה מכילה כתובות דוא"ל חשודות כנסיון מרמה';
$messages['bccemail'] = 'ההודעה/ות שהועברו מכילה/ות נמענים נסתרים BCC';
$messages['bouncehint'] = 'ההודעה תישלח ללא שינוי, כלומר עם גוף ההודעה,כותרות ונמענים מקוריים.';
$messages['encryptedmessage'] = 'זו הודעת מוצפנת ולא ניתן להציגה';
$messages['externalmessagedecryption'] = 'זו הודעה מוצפנת שניתן לפענחה באמצעות תוסף לדפדפן';
$messages['nopubkeyfor'] = 'לא נמצא מפתח ציבורי עבור email$';
$messages['nopubkeyforsender'] = 'לא נמצא מפתח ציבורי תקין לשולח זה. האם ברצונך להצפין את ההודעה לנמענים בלבד?';
$messages['encryptnoattachments'] = 'לא ניתן להצפין צרופות שכבר הועלו. נא להוסיפן מחדש בעורך ההצפנה.';
$messages['searchpubkeyservers'] = 'האם ברצונך לחפש בשרתים של מפתחות ציבוריים אחר המפתחות החסרים?';
$messages['encryptpubkeysfound'] = 'נמצאו המפתחות הציבוריים שלהלן';
$messages['keyservererror'] = 'שליפת מפתח מהשרת נכשלה';
$messages['keyimportsuccess'] = 'מפתח ציבורי $key יובא בהצלחה לצרור המפתחות שלך';
$messages['nocontactsfound'] = 'לא נמצאו אנשי קשר';
$messages['contactnotfound'] = 'איש הקשר המבוקש לא נמצא';
$messages['contactsearchonly'] = 'יש להתשמש במסך חיפוש כדי לראות אנשי קשר מספר הכתובות';
$messages['sendingfailed'] = 'שליחת ההודעה נכשלה';
$messages['senttooquickly'] = 'נא להמתין $sec שניות לפני מסירת הודעה זו';
$messages['errorsavingsent'] = 'אירעה שגיאה בזמן שמירת ההודעה שנשלחה';
$messages['errorsaving'] = 'אירעה שגיאה בזמן השמירה';
$messages['errormoving'] = 'העברת ההודעה(ות) נכשלה';
$messages['errorcopying'] = 'העתקת ההודעות נכשלה';
$messages['errordeleting'] = 'לא ניתן למחוק את ההודעה';
$messages['errormarking'] = 'לא ניתן לסמן ההודעה';
$messages['alerttitle'] = 'שימ/י לב';
$messages['confirmationtitle'] = 'האם את/ה בטוח/ה?....';
$messages['deletecontactconfirm']  = 'האם למחוק את איש הקשר?';
$messages['deletegroupconfirm']  = 'האם אכן ברצונך למחוק את הקבוצה שנבחרה?';
$messages['deletemessagesconfirm'] = 'האם למחוק את ההודעות המסומנות?';
$messages['deletefolderconfirm']  = 'האם למחוק תיקייה זו?';
$messages['movefolderconfirm']  = 'האם אכן ברצונך להעביר את התיקייה?';
$messages['purgefolderconfirm']  = 'האם למחוק את כל ההודעות בתיקייה זו?';
$messages['contactdeleting'] = 'אנשי קשר נמחקים...';
$messages['groupdeleting'] = 'מחיקת קבוצה...';
$messages['folderdeleting'] = 'התיקיה נמחקת...';
$messages['foldermoving'] = 'העברת תיקיה...';
$messages['foldersubscribing'] = 'התיקייה נרשמה...';
$messages['folderunsubscribing'] = 'רישום התיקיה בוטל...';
$messages['formincomplete'] = 'לא הוזנו כל השדות בטופס זה';
$messages['noemailwarning'] = 'נא להוסיף כתובת דוא"ל חוקית';
$messages['nonamewarning']  = 'נא להוסיף שם';
$messages['nopagesizewarning'] = 'נא להוסיף גודל דף';
$messages['nosenderwarning'] = 'נא להקיש כתובת דוא"ל של השולח';
$messages['recipientsadded'] = 'הנמען התוסף בהצלחה';
$messages['norecipientwarning'] = 'נא להוסיף לפחות נמען אחד';
$messages['disclosedrecipwarning'] = 'כל המכותבים יראו הכתובות של כולם. כדי למנוע זאת ולשמור על פרטיותם, ניתן להשתמש בתכונה של מכותבים נסתרים (Bcc)';
$messages['disclosedreciptitle'] = 'יותר מדי מכותבים גלויים';
$messages['nosubjectwarning']  = 'שורת הנושא ריקה. האם ברצונך להוסיף נושא כעת?';
$messages['nosubjecttitle']  = 'אין נושא';
$messages['nobodywarning'] = 'האם לשלוח הודעה ללא תוכן?';
$messages['notsentwarning'] = 'ההודעה טרם נשלחה ויש בה שינויים שלא נשמרו. האם לוותר על כל השינויים?';
$messages['restoresavedcomposedata'] = 'נמצאה הודעה שנערכה אך לא נשלחה. \n\nSubject: $subject\nנשמרה:  $date\n\nהאם לשחזר את ההודעה?';
$messages['nosearchname'] = 'נא להוסיף איש קשר או כתובת דוא"ל';
$messages['notuploadedwarning'] = 'עדיין לא הועלו כל הקבצים. נא לחכות או לבטל הפעולה.';
$messages['searchsuccessful'] = 'נמצאו $nr הודעות';
$messages['contactsearchsuccessful'] = 'נמצאו $nr אנשי קשר';
$messages['searchnomatch'] = 'תוצאת החיפוש ריקה';
$messages['searching'] = 'חיפוש...';
$messages['checking'] = 'בדיקה...';
$messages['stillsearching'] = 'עדיין בחיפוש...';
$messages['nospellerrors'] = 'לא נמצאו שגיאות כתיב';
$messages['folderdeleted'] = 'התיקייה נמחקה בהצלחה';
$messages['foldersubscribed'] = 'התיקייה נרשמה בהצלחה';
$messages['folderunsubscribed'] = 'ביטול רישום התיקייה הצליח';
$messages['folderpurged'] = 'התיקייה רוקנה בהצלחה';
$messages['folderexpunged'] = 'התיקייה צומצמה בהצלחה';
$messages['deletedsuccessfully'] = 'המחיקה הסתיימה בהצלחה';
$messages['converting'] = 'הסרת העיצוב מההודעה';
$messages['messageopenerror'] = 'לא ניתן לטעון ההודעה מהשרת';
$messages['filelinkerror'] = 'הצמדת הצרופה נכשלה';
$messages['fileuploaderror'] = 'העלאת הקובץ נכשלה';
$messages['csvfilemismatch'] = 'יבוא של מספר קבצים מסוג CVS בעלי שדות שונים זה מזה אינו נתמך.';
$messages['filesizeerror'] = 'הקובץ לטעינה גדול מהגודל המקסימלי שהוא $size';
$messages['filecounterror'] = 'ניתן להעלות לכל היותר count$ קבצים בעת ובעונה אחת';
$messages['msgsizeerror'] = 'הוספת צרופה נכשלה. גודלה יותר מהגודל (size$) המותר.';
$messages['msgsizeerrorfwd'] = 'גודל ההודעה (size$) דול מהמקסימום המותר. 
num$ הודעות לא צורפו.';
$messages['copysuccess'] = '$nr אנשי קשר הועתקו בהצלחה';
$messages['movesuccess'] = '$nr אנשי קשר הועברו בהצלחה';
$messages['copyerror'] = 'לא ניתן היה להעתיק אנשי קשר כלשהם';
$messages['moveerror'] = 'לא ניתן היה להעביר אנשי קשר כלשהם';
$messages['sourceisreadonly'] = 'המקור לכתובת הוא לקריאה בלבד';
$messages['errorsavingcontact'] = 'לא ניתן לשמור את כתובת איש הקשר';
$messages['movingmessage'] = 'העברת הודעה(ות)...';
$messages['copyingmessage'] = 'העתקת הודעה(ות)...';
$messages['copyingcontact'] = 'העתקת אנשי קשר...';
$messages['movingcontact'] = 'העברת אנשי קשר...';
$messages['deletingmessage'] = 'מחיקת הודעה(ות)...';
$messages['markingmessage'] = 'סימון ההודעה בתהליך...';
$messages['addingmember'] = 'הוספת אנשי קשר לקבוצה...';
$messages['removingmember'] = 'הסרת אנשי קשר מהקבוצה...';
$messages['receiptsent'] = 'אישור הקבלה נשלח בהצלחה';
$messages['errorsendingreceipt'] = 'לא ניתן לשלוח אישור קבלה';
$messages['deleteidentityconfirm'] = 'האם אכן ברצונך למחוק זהות זאת?';
$messages['nodeletelastidentity'] = 'זו הזהות האחרונה ולכן לא ניתן לבטלה';
$messages['forbiddencharacter'] = 'שם התיקיה מכיל תוים אסורים';
$messages['selectimportfile'] = 'נא לבחור קובץ להעלאה';
$messages['addresswriterror'] = 'פנקס הכתובות שנבחר אינו ניתן לכתיבה';
$messages['contactaddedtogroup'] = 'אנשי הקשר נוספו בהצלחה לקבוצה';
$messages['contactremovedfromgroup'] = 'אנשי הקשר הוסרו בהצלחה מהקבוצה';
$messages['nogroupassignmentschanged'] = 'לא השתנו הגדרות קבוצה';
$messages['importwait'] = 'ייבוא, נא להמתין..';
$messages['importformaterror'] = 'היבוא נכשל ! הקובץ שהועלה אינו מתאים.';
$messages['importconfirm'] = '<b>יובאו $inserted אנשי קשר, $skipped היו קיימים </b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>  דילוג של $skipped נתונים קיימים <b>';
$messages['importmessagesuccess'] = 'יובאו בהצלחה $nr הודעות ';
$messages['importmessageerror'] = 'היבוא נכשל ! הקובץ שהועלה אינו הודעה או קובץ הודעות במבנה מתאים';
$messages['opnotpermitted'] = 'פעולה אסורה!';
$messages['nofromaddress'] = 'חסרה כתובת דוא"ל בזהות שנבחרה';
$messages['editorwarning'] = 'החלפת סוג העורך עלולה לגרום לאבדן עיצוב טקסט. האם ברצונך להמשיך?';
$messages['httpreceivedencrypterror'] = 'ארעה שגיאת תצורה חמורה. נא להודיע מייד למנהל/ת המערכת. <B> הודעתך לא תשלח <B>';
$messages['smtpconnerror'] = 'SMTP ($code): אבד הקשר לשרת';
$messages['smtpautherror'] = 'SMTP ($code): ההזדהות נכשלה';
$messages['smtpfromerror'] = '($msg) SMTP ($code): "$from" לא נרשמה כתובת השולח';
$messages['smtptoerror'] = '($msg) SMTP ($code): "$to" לא נרשמה כתובת המקבל';
$messages['smtprecipientserror'] = 'SMTP : לא ניתן לפענח רשימת נמענים';
$messages['smtputf8error'] = 'שגיאת SMTP: שרת הדואר לא תומך כתובת דואר אלקטרוני מקודדת ביוניקוד.';
$messages['smtpsizeerror'] = 'גודל ההודעה עולה על הגודל המותר בשרת  limit ($limit)';
$messages['smtperror'] = 'SMTP: $msg';
$messages['emailformaterror'] = 'כתבות דוא"ל לא תקינה: email$';
$messages['toomanyrecipients'] = 'יותר מדי נמענים. יש להקטין מספרם ל - $max';
$messages['maxgroupmembersreached'] = 'מספרם של חברי הקבוצה אינו יכול לעבור $max';
$messages['internalerror'] = 'שגיאת מערכת. נא לנסות שנית.';
$messages['contactdelerror'] = 'לא ניתן למחוק איש קשר';
$messages['contactdeleted'] = 'איש הקשר נמחק';
$messages['contactrestoreerror'] = 'לא ניתן לשחזר איש קשר שנמחק';
$messages['contactrestored'] = 'איש הקשר שוחזר בהצלחה';
$messages['groupdeleted'] = 'הקבוצה נמחקה בהצלחה';
$messages['grouprenamed'] = 'שם הקבוצה שונה בהצלחה';
$messages['groupcreated'] = 'הקבוצה נוצרה בהצלחה';
$messages['savedsearchdeleted'] = 'נמחק החיפוש שנשמר';
$messages['savedsearchdeleteerror'] = 'לא ניתן למחוק החיפוש שנשמר';
$messages['savedsearchcreated'] = 'החיפוש נשמר בהצלחה';
$messages['savedsearchcreateerror'] = 'לא ניתן לשמור את החיפוש';
$messages['messagedeleted'] = 'ההודעה נמחקה בהצלחה';
$messages['messagemoved'] = 'ההודעה הועברה בהצלחה';
$messages['messagemovedtotrash'] = 'ההודעה(ות) הועברו לסל המיחזור';
$messages['messagecopied'] = 'ההודעה הועתקה בהצלחה';
$messages['messagemarked'] = 'ההודעה סומנה בהצלחה';
$messages['autocompletechars'] = 'יש להקיש לפחות $min תווים להשלמה אוטומטית של המחרוזת';
$messages['autocompletemore'] = 'נמצאו רשומות נוספות. נא להקיש תווים נוספים.';
$messages['namecannotbeempty'] = 'השם אינו יכול להיות ריק';
$messages['nametoolong'] = 'השם ארוך מדי';
$messages['namedotforbidden'] = 'שם תיקיה אינו יכול להתחיל בנקודה';
$messages['folderupdated'] = 'התיקייה עודכנה בהצלחה';
$messages['foldercreated'] = 'התיקייה נוצרה בהצלחה';
$messages['invalidimageformat'] = 'פורמט תמונה לא חוקי';
$messages['mispellingsfound'] = 'התגלו שגיאות כתיב בהודעה';
$messages['parentnotwritable'] = 'לא ניתן ליצור/להעביר תיקיה לתוך תיקית האב שנבחרה. אין הרשאה לגישה.';
$messages['messagetoobig'] = 'ההודעה גדולה מעבר ליכולת העיבוד של התוכנה';
$messages['attachmentvalidationerror'] = 'הצרופה הזו חשודה כי הסוג שלה לא תואם את הסוג שהוכרז בהודעה. אם אינך בוטח/ת
בשולח/ת, לא לפתוח אותה בדפדפן כי היא עלולה להכיל נוזקה.
הסוג שהוכרז:  $expected, הסוג שנמצא:  $detected';
$messages['noscriptwarning'] = 'זהירות! תוכנה זו דורשת שימוש בג\'אווהסקריפט! כדי להשתמש בכלי, יש לבחור באפשרות זו בהגדרות הדפדפן.';
$messages['messageissent'] = 'ההודעה נשלחה אבל לא נשמרה עדיין. האם לשמור אותה כעת?';
$messages['errnotfound'] = 'הקובץ לא נמצא';
$messages['errnotfoundexplain'] = 'המשאב המבוקש לא נמצא!';
$messages['errfailedrequest'] = 'הבקשה נכשלה';
$messages['errauthorizationfailed'] = 'הרשאה נכשלה';
$messages['errunauthorizedexplain'] = 'לא ניתו לאשר את הרשאתך לגישה לשירות זה';
$messages['errrequestcheckfailed'] = 'בדיקת הבקשה נכשלה';
$messages['errcsrfprotectionexplain'] = "להגנתך, הגישה למשאב זה מאובטחת כנגד CRSF.
אם הודעה זו מופיעה, זה משום שקרוב לודאי לא היתה יציאה מסודרת לפני
סגירת היישום בדפדפן. 
כעת נדרשת פעולה ידנית כדי להמשיך.";
$messages['errcontactserveradmin'] = 'נא לפנות למנהל השרת';
$messages['clicktoresumesession'] = 'יש ללחוץ כאן כדי להמשיך מהמצב הקודם';
$messages['errcomposesession'] = 'שגיאה במהלך יצירת ההודעה';
$messages['errcomposesessionexplain'] = 'תהליך יצירת ההודעה לא אותר';
$messages['clicktocompose'] = 'יש להקיש כאן כדי ליצור הודעה חדשה';
$messages['nosupporterror'] = 'התכונה הזו אינה נתמכת על ידי הדפדפן שלך';
$messages['siginserted'] = 'החתימה התווספה בהצלחה';
$messages['responseinserted'] = 'התגובה התווספה בהצלחה';
$messages['noresponsesavailable'] = 'לא נמצאו תגובות';
$messages['listempty'] = 'הרשימה ריקה';
$messages['listusebutton'] = 'יש להשתמש בכפתור יצירה כדי להוסיף רשומה חדשה';
$messages['keypaircreatesuccess'] = 'הצליחה יצירת מפתח חדש ל identity$';
$messages['emptyattachment'] = 'צרופה זו נראית כריקה. יש לבדוק עם השולח';
$messages['oauthloginfailed'] = 'נכשל נסיון כניסה באמצעות OAUTH. נא לנסות שנית.';
localization/hi_IN/labels.inc000064400000022637151727150600012175 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product में स्वागत है';
$labels['username'] = 'यूसरनाम';
$labels['password'] = 'पासवर्ड';
$labels['server'] = 'सर्वर';
$labels['login'] = 'लॉगिन';
$labels['logout'] = 'लॉगआऊट';
$labels['mail'] = 'ई-मेल';
$labels['settings'] = 'निजी सैटिंग';
$labels['addressbook'] = 'पता खाता';
$labels['inbox'] = 'इनबॉक्स';
$labels['drafts'] = 'ड्राफ़ट';
$labels['sent'] = 'भेजा गया';
$labels['trash'] = 'रद्दी';
$labels['junk'] = 'स्पैम';
$labels['subject'] = 'विशय';
$labels['from'] = 'भेजने वाला';
$labels['to'] = 'पाने वाला';
$labels['cc'] = 'कार्बन';
$labels['bcc'] = 'अंधा कार्बन';
$labels['replyto'] = 'जवाब यहाँ';
$labels['followupto'] = 'को- फॉलोअप';
$labels['date'] = 'तारीख';
$labels['size'] = 'माप';
$labels['priority'] = 'मेल की महत्वपूर्णता';
$labels['organization'] = 'संस्था';
$labels['mailboxlist'] = 'फ़ोल्डर';
$labels['messagesfromto'] = '$from से ले कर $to, $count मेल में से';
$labels['messagenrof'] = '$nr नम्बर मेल, $count में से';
$labels['copy'] = 'कार्बन';
$labels['move'] = 'स्थानांतरित करें';
$labels['moveto'] = 'खीस्काऐं...';
$labels['download'] = 'डाऊनलोड';
$labels['filename'] = 'फ़ाईल नाम';
$labels['filesize'] = 'फ़ाईल माप';
$labels['addtoaddressbook'] = 'पता खाते में जोडें';
$labels['sun'] = 'रवि';
$labels['mon'] = 'सोम';
$labels['tue'] = 'मंग';
$labels['wed'] = 'बुध';
$labels['thu'] = 'गुरु';
$labels['fri'] = 'शुक्र';
$labels['sat'] = 'शनि';
$labels['sunday'] = 'रविवार';
$labels['monday'] = 'सोमवार';
$labels['tuesday'] = 'मंगलवार';
$labels['wednesday'] = 'बुधवार';
$labels['thursday'] = 'गुरुवार';
$labels['friday'] = 'शुक्रवार';
$labels['saturday'] = 'शनिवार';
$labels['jan'] = 'जनवरी';
$labels['feb'] = 'फ़रवरी';
$labels['mar'] = 'मार्च';
$labels['apr'] = 'अप्रेल';
$labels['may'] = 'मई';
$labels['jun'] = 'जून';
$labels['jul'] = 'जुलाई';
$labels['longjan'] = 'जनवरी';
$labels['longfeb'] = 'फ़रवरी';
$labels['longmar'] = 'मार्च';
$labels['longapr'] = 'अप्रैल';
$labels['longmay'] = 'मई';
$labels['longjun'] = 'जून';
$labels['longjul'] = 'जुलाई';
$labels['longaug'] = 'अगस्त';
$labels['longsep'] = 'सितंबर';
$labels['longoct'] = 'अक्टूबर';
$labels['longnov'] = 'नवम्बर';
$labels['longdec'] = 'दिसंबर';
$labels['today'] = 'आज';
$labels['refresh'] = 'ताज़ा करें';
$labels['checkmail'] = 'नये मेल लाऐं';
$labels['compose'] = 'मेल लिखें';
$labels['writenewmessage'] = 'मेल लिखें';
$labels['reply'] = 'जवाब';
$labels['replytomessage'] = 'मेल का जवाब दें';
$labels['replytoallmessage'] = 'सभी को जवाब लिखें';
$labels['forward'] = 'अग्रेषित करें';
$labels['forwardmessage'] = 'आगे भेजें';
$labels['deletemessage'] = 'रद्द करें';
$labels['printmessage'] = 'मेल छापें';
$labels['previousmessage'] = 'पीछे के मेल दिखाऐं';
$labels['firstmessage'] = 'पहला मेल दिखाऐं';
$labels['nextmessage'] = 'अगला मेल दिखाऐं';
$labels['lastmessage'] = 'आखीरी मेल दिखाऐं';
$labels['backtolist'] = 'मेल सूची देखें';
$labels['viewsource'] = 'सोर्स दिखाऐं';
$labels['mark'] = 'चिह्नित';
$labels['select'] = 'चुनें';
$labels['all'] = 'सभी';
$labels['none'] = 'कोई नहीं';
$labels['unread'] = 'अनदेखी';
$labels['nonesort'] = 'कोई नहीं';
$labels['compact'] = 'छोटा करें';
$labels['empty'] = 'मेल रद्दी में डालें';
$labels['quota'] = 'डिस्क उपयोग';
$labels['unknown'] = 'अज्ञात';
$labels['unlimited'] = 'असीम';
$labels['quicksearch'] = 'तेज़ खोज';
$labels['resetsearch'] = 'खोज खाली करें';
$labels['sendmessage'] = 'मेल भेजें';
$labels['savemessage'] = 'ड्राफ़ट सहेजें';
$labels['addattachment'] = 'फ़ाईल जोडें';
$labels['charset'] = 'कैरेक्टर सैट';
$labels['editortype'] = 'सम्पादक प्राकार';
$labels['returnreceipt'] = 'मेल रसीद';
$labels['checkspelling'] = 'स्पैलिंग जाँचें';
$labels['resumeediting'] = 'सम्पादन फिर शुरू करें';
$labels['revertto'] = 'पहले की स्थिती पर जाऐं';
$labels['attachments'] = 'जुडे फाईल';
$labels['upload'] = 'अपलोड';
$labels['close'] = 'बंद';
$labels['low'] = 'कम';
$labels['lowest'] = 'सबसे कम';
$labels['normal'] = 'साधारण';
$labels['high'] = 'उच्च';
$labels['highest'] = 'उच्चतम';
$labels['nosubject'] = '(कोई विशय नहीं)';
$labels['showimages'] = 'चित्र दिखाऐं';
$labels['htmltoggle'] = 'ऐच-टी-ऐम-एल (HTML)';
$labels['plaintoggle'] = 'सादा पाठ';
$labels['name'] = 'दिखने वाला नाम';
$labels['firstname'] = 'पहला नाम';
$labels['surname'] = 'उपनाम';
$labels['email'] = 'मेल';
$labels['editcontact'] = 'पता सम्पाद';
$labels['edit'] = 'सम्पाद';
$labels['cancel'] = 'रद्द';
$labels['save'] = 'सहेज';
$labels['delete'] = 'मिटा';
$labels['deletecontact'] = 'चुने पते मिटाऐं';
$labels['composeto'] = 'को मेल भेजें';
$labels['contactsfromto'] = '$from से ले कर $to, $count पते में से';
$labels['print'] = 'छापें';
$labels['export'] = 'ऐक्स्पोर्ट';
$labels['previouspage'] = 'इससे पहले के बन्डल को दिखाऐं';
$labels['firstpage'] = 'पहला बन्डल दिखाऐं';
$labels['nextpage'] = 'अगला बन्डल दिखाऐं';
$labels['lastpage'] = 'आखिरी बन्डल दिखाऐं';
$labels['settingsfor'] = 'इनके विन्यास:';
$labels['preferences'] = 'पसंद';
$labels['userpreferences'] = 'यूसर पसंद';
$labels['editpreferences'] = 'यूसर पसंद सम्पादें';
$labels['identities'] = 'पहचान';
$labels['preferhtml'] = 'ऐच-टी-ऐम-ऐल(HTML) दिखाऐं';
$labels['htmlmessage'] = 'ऐच-टी-ऐम-ऐल (HTML) रूप मेल करें';
$labels['prettydate'] = 'सुनदर तारीखें';
$labels['setdefault'] = 'तयशुदा चुनें';
$labels['language'] = 'भाषा';
$labels['timezone'] = 'समय क्षेत्र';
$labels['pagesize'] = 'हर पन्ने पर इतने';
$labels['signature'] = 'दस्तखत';
$labels['dstactive'] = 'रौशनी बचाव';
$labels['htmleditor'] = 'मेल ऐच-टी-ऐम-एल (HTML) मे लिखें';
$labels['htmlsignature'] = 'ऐच-टी-ऐम-एल (HTML) दस्तखत';
$labels['previewpane'] = 'झलक पट्टी दिखाऐं';
$labels['autosavedraft'] = 'ड्राफ़ट अपने आप सहेजते जाऐं';
$labels['never'] = 'कभी नहाीं';
$labels['folder'] = 'फ़ोल्डर';
$labels['folders'] = 'फ़ोल्डर';
$labels['foldername'] = 'फ़ोल्डर नाम';
$labels['subscribed'] = 'सबस्क्राईब किया गया';
$labels['create'] = 'बनाऐं';
$labels['createfolder'] = 'फ़ोलडर बनाऐं';
$labels['managefolders'] = 'फ़ोलडर को व्यवस्थित करें';
$labels['sortby'] = 'ऐसे तय करें';
$labels['sortasc'] = 'पहले से आखीरी तय करें';
$labels['sortdesc'] = 'आखीरी से पहले तय करें';
localization/hi_IN/messages.inc000064400000013147151727150600012536 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'एक त्रुटि पाई गई !';
$messages['loginfailed']  = 'लॉगिन नहीं हो पाया';
$messages['cookiesdisabled'] = 'आपका ब्राऊसर कुकी स्वीकार नहीं कर रहा है';
$messages['sessionerror'] = 'सत्र समाप्त या अवैद्य';
$messages['storageerror'] = 'आईमैप (IMAP) सर्वर से सम्पर्क नहीं हो पाया';
$messages['servererror'] = 'सर्वर त्रुटि';
$messages['dberror'] = 'डाटाबेस त्रुटि!';
$messages['windowopenerror'] = 'पॉपप विंडो अवरुद्ध किया गया था !';
$messages['requesttimedout'] = 'अनुरोध का समय समाप्त';
$messages['errorreadonly'] = 'कार्य करने में असमर्थ । फ़ोल्डर केवल पढ़ने के लिए है।';
$messages['nomessagesfound'] = 'इस मेलबॉक्स में कोई मेल नहीं है';
$messages['loading'] = 'लोड हो रहा है';
$messages['loadingdata'] = 'डाटा लोड हो रहा है...';
$messages['checkingmail'] = 'क्या नया मेल है?...';
$messages['sendingmessage'] = 'मेल भेजा जा रहा है...';
$messages['messagesent'] = 'मेल भेजा गया है';
$messages['savingmessage'] = 'मेल सहेजा जा रहा है...';
$messages['messagesaved'] = 'मेल ड्राफ़्ट फोल्डर में जमा हो रहा है';
$messages['successfullysaved'] = 'सहेजा गया है';
$messages['addedsuccessfully'] = 'पता खाते में पता जोडा गया है';
$messages['blockedimages'] = 'आप के प्राईवेसी के लिये और स्पैम से बचने के लिये इस मेल में सदूर चित्र नहीं दिखाये गये हैं।';
$messages['encryptedmessage'] = 'माफ़ कीजिये, यह मेल कूट रूप में है, इस कारण दिखाया नहीं जा सकता।';
$messages['nocontactsfound'] = 'कोई पता नहीं मिला';
$messages['sendingfailed'] = 'मेल नहीं भिज पाया';
$messages['errormoving'] = 'मेल खिस्का नहीं';
$messages['errordeleting'] = 'मेल मिटा नहीं';
$messages['deletecontactconfirm']  = 'चुने गये पते को सचमुच मिटाना है ?';
$messages['deletemessagesconfirm'] = 'चुने गये मेल को सचमुच मिटाना है ?';
$messages['deletefolderconfirm']  = 'फ़ोल्डर को सचमुच मिटाऐं ?';
$messages['purgefolderconfirm']  = 'फ़ोल्डर में पडे सारे मेल को सचमुच मिटाना है?';
$messages['formincomplete'] = 'फ़ॉर्म पूरी तरह से भरा नहीं';
$messages['noemailwarning'] = 'वैद्य मेल पता भरें';
$messages['nonamewarning']  = 'नाम भरें';
$messages['nopagesizewarning'] = 'पन्ना माप भरें';
$messages['norecipientwarning'] = 'कम-से-कम एक पाने वाले का पता भरें';
$messages['nosubjectwarning']  = 'मेल का कोई विशय नहीं बताया गया है। क्या आप विशय डालना चाहते हैं ?';
$messages['nobodywarning'] = 'बिना कुछ लिखे मेल भेजें?';
$messages['nosearchname'] = 'पता या पते का नाम भरें';
$messages['searchsuccessful'] = '$nr मेल मिले';
$messages['searchnomatch'] = 'खोज असफ़ल';
$messages['searching'] = 'खोजा रहे हैं...';
$messages['checking'] = 'चाँचा चा रहा है...';
$messages['nospellerrors'] = 'कोई स्पैलिंग गलती नहीं मिली';
$messages['folderdeleted'] = 'फ़ोल्डर मिट गया';
$messages['deletedsuccessfully'] = 'मिट गया';
$messages['converting'] = 'मेल से फ़ॉर्मैटिंग निकाला जा रहा है...';
$messages['messageopenerror'] = 'सर्वर से मेल लोड नहीं हो पाया';
$messages['fileuploaderror'] = 'फ़ाईल अपलोड नहीं हो पाया';
$messages['filesizeerror'] = 'अपलोड के लिये फ़ाईल हद $size से बड़ा है';
localization/tzl/labels.inc000064400000007571151727150600012020 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Benvenescu à $product';
$labels['username'] = 'Coda da sámband';
$labels['password'] = 'Teßera';
$labels['server'] = 'Serveir';
$labels['login'] = 'S’anonçarh';
$labels['logout'] = 'Zespartarh';
$labels['mail'] = 'Telepost';
$labels['settings'] = 'Setatxen';
$labels['subject'] = 'Subxhect';
$labels['from'] = 'Da';
$labels['to'] = 'À';
$labels['date'] = 'Däts';
$labels['copy'] = 'Copiarh';
$labels['move'] = 'Muóvarh';
$labels['moveto'] = 'Muóvarh à...';
$labels['copyto'] = 'Copiarh à...';
$labels['download'] = 'Transreçáifarh';
$labels['showattachment'] = 'Mostrarh';
$labels['showanyway'] = 'Mostrarh-en zespitzi toct';
$labels['filename'] = 'Nómina del fischeir';
$labels['addtoaddressbook'] = 'Axhuntarh àl carnet dels adreçéux';
$labels['sun'] = 'Súl';
$labels['mon'] = 'Lún';
$labels['tue'] = 'Mai';
$labels['wed'] = 'Már';
$labels['thu'] = 'Xhú';
$labels['fri'] = 'Vié';
$labels['sat'] = 'Sát';
$labels['sunday'] = 'Súladi';
$labels['monday'] = 'Lúneçi';
$labels['tuesday'] = 'Maitzi';
$labels['wednesday'] = 'Márcuri';
$labels['thursday'] = 'Xhúadi';
$labels['friday'] = 'Viénerçi';
$labels['saturday'] = 'Sáturi';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Fev';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Avr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Gün';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Gus';
$labels['sep'] = 'Set';
$labels['oct'] = 'Lis';
$labels['nov'] = 'Noe';
$labels['dec'] = 'Zec';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Fevraglh';
$labels['longmar'] = 'Març';
$labels['longapr'] = 'Avrïu';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Gün';
$labels['longjul'] = 'Julia';
$labels['longaug'] = 'Guscht';
$labels['longsep'] = 'Setemvar';
$labels['longoct'] = 'Listopäts';
$labels['longnov'] = 'Noemvar';
$labels['longdec'] = 'Zecemvar';
$labels['today'] = 'Oxhi';
$labels['reply'] = 'Contestarh';
$labels['forward'] = 'Promuóvarh';
$labels['deletemessage'] = 'Zeletarh el mensatx';
$labels['more'] = 'Pü';
$labels['options'] = 'Opziuns';
$labels['all'] = 'Toct';
$labels['isread'] = 'Lirarh';
$labels['filter'] = 'Strecureir';
$labels['unknown'] = 'inschì';
$labels['namex'] = 'Nómina';
$labels['send'] = 'Envoxhiarh';
$labels['ignore'] = 'Ignhorarh';
$labels['addresponse'] = 'Axhuntarh ün respuns';
$labels['responsename'] = 'Nómina';
$labels['close'] = 'Fermarh';
$labels['htmltoggle'] = 'HTML';
$labels['gender'] = 'Schlada';
$labels['email'] = 'Telepost';
$labels['locality'] = 'Cità';
$labels['country'] = 'Päts';
$labels['birthday'] = 'Nadaliça';
$labels['typehome'] = 'Casa';
$labels['typeprofile'] = 'Profil';
$labels['contacts'] = 'Contäctsilor';
$labels['edit'] = 'Redactarh';
$labels['cancel'] = 'Niþiliçarh';
$labels['save'] = 'Guardarh';
$labels['delete'] = 'Zeletarh';
$labels['rename'] = 'Rinominarh';
$labels['done'] = 'Fäts';
$labels['about'] = 'Över';
$labels['language'] = 'Glheþ';
$labels['location'] = 'Locaziun';
$labels['info'] = 'Informaziun';
$labels['version'] = 'Verziun';
$labels['B'] = 'o';
$labels['KB'] = 'Ko';
$labels['MB'] = 'Mo';
$labels['GB'] = 'Go';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angleasca';
localization/tzl/messages.inc000064400000001473151727150600012360 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['grouprenamed'] = 'Rinominarh';
localization/en_GB/timezones.inc000064400000047202151727150600012727 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Africa';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantic';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europe';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athens';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussels';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisbon';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Vienna';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warsaw';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/en_GB/labels.inc000064400000076546151727150600012171 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Welcome to $product';
$labels['username'] = 'Username';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
$labels['oauthlogin'] = 'Login with $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Logout';
$labels['mail'] = 'Mail';
$labels['settings'] = 'Settings';
$labels['addressbook'] = 'Address Book';
$labels['darkmode'] = 'Dark mode';
$labels['lightmode'] = 'Light mode';
$labels['inbox'] = 'Inbox';
$labels['drafts'] = 'Drafts';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Deleted Items';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Show real names for special folders';
$labels['subject'] = 'Subject';
$labels['from'] = 'From';
$labels['sender'] = 'Sender';
$labels['to'] = 'To';
$labels['cc'] = 'Copy';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Date';
$labels['size'] = 'Size';
$labels['priority'] = 'Priority';
$labels['organization'] = 'Company';
$labels['readstatus'] = 'Read status';
$labels['listoptions'] = 'List options...';
$labels['listoptionstitle'] = 'List options';
$labels['mailboxlist'] = 'Folders';
$labels['messagesfromto'] = 'Messages $from to $to of $count';
$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Message $nr of $count';
$labels['fromtoshort'] = '$from – $to of $count';
$labels['copy'] = 'Copy';
$labels['move'] = 'Move';
$labels['moveto'] = 'Move to...';
$labels['copyto'] = 'Copy to...';
$labels['download'] = 'Download';
$labels['open'] = 'Open';
$labels['showattachment'] = 'Show';
$labels['showanyway'] = 'Show it anyway';
$labels['filename'] = 'File name';
$labels['filesize'] = 'File size';
$labels['addtoaddressbook'] = 'Add to address book';
$labels['sun'] = 'Sun';
$labels['mon'] = 'Mon';
$labels['tue'] = 'Tue';
$labels['wed'] = 'Wed';
$labels['thu'] = 'Thu';
$labels['fri'] = 'Fri';
$labels['sat'] = 'Sat';
$labels['sunday'] = 'Sunday';
$labels['monday'] = 'Monday';
$labels['tuesday'] = 'Tuesday';
$labels['wednesday'] = 'Wednesday';
$labels['thursday'] = 'Thursday';
$labels['friday'] = 'Friday';
$labels['saturday'] = 'Saturday';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'May';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
$labels['longjan'] = 'January';
$labels['longfeb'] = 'February';
$labels['longmar'] = 'March';
$labels['longapr'] = 'April';
$labels['longmay'] = 'May';
$labels['longjun'] = 'June';
$labels['longjul'] = 'July';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'October';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
$labels['today'] = 'Today';
$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Check for new messages';
$labels['compose'] = 'Compose';
$labels['writenewmessage'] = 'Create a new message';
$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Reply to sender';
$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
$labels['replyall'] = 'Reply all';
$labels['replylist'] = 'Reply list';
$labels['forward'] = 'Forward';
$labels['forwardinline'] = 'Forward inline';
$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Forward the message';
$labels['bouncemsg'] = 'Resend (bounce)';
$labels['bounce'] = 'Resend';
$labels['deletemessage'] = 'Delete message';
$labels['movemessagetotrash'] = 'Move message to "Deleted Items"';
$labels['printmessage'] = 'Print this message';
$labels['previousmessage'] = 'Show the previous message';
$labels['firstmessage'] = 'Show the first message';
$labels['nextmessage'] = 'Show the next message';
$labels['lastmessage'] = 'Show the last message';
$labels['backtolist'] = 'Back to message list';
$labels['viewsource'] = 'Show source';
$labels['mark'] = 'Mark';
$labels['markmessages'] = 'Mark messages';
$labels['markread'] = 'As read';
$labels['markunread'] = 'As unread';
$labels['markflagged'] = 'As flagged';
$labels['markunflagged'] = 'As unflagged';
$labels['markundeleted'] = 'As not deleted';
$labels['moreactions'] = 'More actions...';
$labels['markallread'] = 'Mark all as read';
$labels['folders-cur'] = 'Selected folder only';
$labels['folders-sub'] = 'Selected folder and its subfolders';
$labels['folders-all'] = 'All folders';
$labels['more'] = 'More';
$labels['back'] = 'Back';
$labels['options'] = 'Options';
$labels['composeoptions'] = 'Compose options';
$labels['optionsandattachments'] = 'Options and attachments';
$labels['actions'] = 'Actions';
$labels['first'] = 'First';
$labels['last'] = 'Last';
$labels['previous'] = 'Previous';
$labels['next'] = 'Next';
$labels['select'] = 'Select';
$labels['selection'] = 'Selection';
$labels['all'] = 'All';
$labels['none'] = 'None';
$labels['currpage'] = 'Current page';
$labels['isread'] = 'Read';
$labels['unread'] = 'Unread';
$labels['flagged'] = 'Flagged';
$labels['unflagged'] = 'Not Flagged';
$labels['unanswered'] = 'Unanswered';
$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Deleted';
$labels['undeleted'] = 'Not deleted';
$labels['replied'] = 'Replied';
$labels['forwarded'] = 'Forwarded';
$labels['invert'] = 'Invert';
$labels['filter'] = 'Filter';
$labels['list'] = 'List';
$labels['threads'] = 'Threads';
$labels['expand-all'] = 'Expand All';
$labels['expand-unread'] = 'Expand Unread';
$labels['collapse-all'] = 'Collapse All';
$labels['threaded'] = 'Threaded';
$labels['showunread'] = 'Show unread messages';
$labels['autoexpand_threads'] = 'Expand message threads';
$labels['do_expand'] = 'all threads';
$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'From/To';
$labels['flag'] = 'Flag';
$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'None';
$labels['sentdate'] = 'Sent date';
$labels['arrival'] = 'Arrival date';
$labels['asc'] = 'ascending';
$labels['desc'] = 'descending';
$labels['listcolumns'] = 'List columns';
$labels['listsorting'] = 'Sorting column';
$labels['listorder'] = 'Sorting order';
$labels['listmode'] = 'List view mode';
$labels['lmode'] = 'List mode';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Widescreen';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'List';
$labels['layoutwidescreendesc'] = 'Widescreen (3-column view)';
$labels['layoutdesktopdesc'] = 'Desktop (wide list and mail preview below)';
$labels['layoutlistdesc'] = 'List (no mail preview)';
$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Compact';
$labels['empty'] = 'Empty';
$labels['importmessages'] = 'Import messages';
$labels['mailimportdesc'] = 'You can upload mail using files in <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> or <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> format.';
$labels['mailimportzip'] = 'Multiple files can be compressed into zip archives.';
$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'unknown';
$labels['unlimited'] = 'unlimited';
$labels['quotatype'] = 'Quota type';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Used';
$labels['quotastorage'] = 'Disk space';
$labels['quotamessage'] = 'Messages count';
$labels['shortheaderdate'] = 'On $date';
$labels['shortheaderto'] = 'To $to on $date';
$labels['shortheaderfrom'] = 'From $from on $date';
$labels['quicksearch'] = 'Quick search';
$labels['searchplaceholder'] = 'Search...';
$labels['resetsearch'] = 'Reset search';
$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Entire message';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Name';
$labels['searchscope'] = 'Scope';
$labels['currentfolder'] = 'Current folder';
$labels['subfolders'] = 'This and subfolders';
$labels['allfolders'] = 'All folders';
$labels['searchinterval-1W'] = 'older than a week';
$labels['searchinterval-1M'] = 'older than a month';
$labels['searchinterval-1Y'] = 'older than a year';
$labels['searchinterval1W'] = 'younger than a week';
$labels['searchinterval1M'] = 'younger than a month';
$labels['searchinterval1Y'] = 'younger than a year';
$labels['openinextwin'] = 'Open in new window';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Display in plain text format';
$labels['changeformathtml'] = 'Display in HTML format';
$labels['editasnew'] = 'Edit as new';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send now';
$labels['savemessage'] = 'Save this draft';
$labels['addattachment'] = 'Attach a file';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Delivery status notification';
$labels['keepformatting'] = 'Keep formatting';
$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'Original Message';
$labels['selectimage'] = 'Select image';
$labels['addimage'] = 'Add image';
$labels['selectmedia'] = 'Select movie';
$labels['addmedia'] = 'Add movie';
$labels['encrypt'] = 'Encrypt';
$labels['encryptmessage'] = 'Encrypt message';
$labels['encryptmessagemailvelope'] = 'Encrypt message with Mailvelope';
$labels['importpubkeys'] = 'Import public keys';
$labels['encryptedsendialog'] = 'Sending encrypted message';
$labels['encryptandsign'] = 'Encrypt and sign';
$labels['keyid'] = 'Key ID';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expired';
$labels['keyrevoked'] = 'Revoked';
$labels['bccinstead'] = 'Use Bcc';
$labels['addheader'] = 'Add recipient (header)';
$labels['insert'] = 'Insert';
$labels['insertcontact'] = 'Insert contact(s)';
$labels['recipient'] = 'Recipient';
$labels['recipientedit'] = 'Recipient edit';
$labels['editidents'] = 'Edit identities';
$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
$labels['restore'] = 'Restore';
$labels['restoremessage'] = 'Restore message?';
$labels['ignore'] = 'Ignore';
$labels['responses'] = 'Responses';
$labels['insertresponse'] = 'Insert a response';
$labels['manageresponses'] = 'Manage responses';
$labels['newresponse'] = 'Create new response';
$labels['addresponse'] = 'Add response';
$labels['editresponse'] = 'Edit response';
$labels['editresponses'] = 'Edit responses';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Response Text';
$labels['attach'] = 'Attach';
$labels['attachments'] = 'Attachments';
$labels['upload'] = 'Upload';
$labels['uploadprogress'] = '$percent ($current of $total)';
$labels['close'] = 'Close';
$labels['messageoptions'] = 'Message options...';
$labels['togglecomposeoptions'] = 'Toggle composition options';
$labels['attachmentrename'] = 'Rename attachment';
$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
$labels['normal'] = 'Normal';
$labels['high'] = 'High';
$labels['highest'] = 'Highest';
$labels['nosubject'] = '(no subject)';
$labels['showimages'] = 'Display images';
$labels['allow'] = 'Allow';
$labels['alwaysshow'] = 'Always show images from $sender';
$labels['alwaysallow'] = 'Always allow from $sender';
$labels['isdraft'] = 'This is a draft message.';
$labels['andnmore'] = '$nr more...';
$labels['details'] = 'Details';
$labels['summary'] = 'Summary';
$labels['headers'] = 'Headers';
$labels['allheaders'] = 'All headers...';
$labels['togglemoreheaders'] = 'Show more message headers';
$labels['togglefullheaders'] = 'Toggle raw message headers';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plain text';
$labels['savesentmessagein'] = 'Save sent message in';
$labels['dontsave'] = 'don\'t save';
$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
$labels['addcc'] = 'Add Cc';
$labels['addbcc'] = 'Add Bcc';
$labels['addreplyto'] = 'Add Reply-To';
$labels['addfollowupto'] = 'Add Followup-To';
$labels['sendreceipt'] = 'Send read receipt?';
$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
$labels['receiptread'] = 'Return Receipt (read)';
$labels['yourmessage'] = 'This is a Return Receipt for your message';
$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
$labels['sendalwaysto'] = 'Always send to $email';
$labels['zoomin'] = 'Zoom In';
$labels['zoomout'] = 'Zoom Out';
$labels['rotate'] = 'Rotate';
$labels['increaseimage'] = 'Increase image size';
$labels['decreaseimage'] = 'Decrease image size';
$labels['rotateimage'] = 'Rotate image';
$labels['showtools'] = 'Show image tools';
$labels['hidetools'] = 'Hide image tools';
$labels['name'] = 'Display Name';
$labels['firstname'] = 'First Name';
$labels['surname'] = 'Last Name';
$labels['middlename'] = 'Middle Name';
$labels['nameprefix'] = 'Title';
$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Nickname';
$labels['jobtitle'] = 'Job Title';
$labels['department'] = 'Department';
$labels['gender'] = 'Gender';
$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'Email';
$labels['phone'] = 'Phone';
$labels['address'] = 'Address';
$labels['street'] = 'Street';
$labels['locality'] = 'City';
$labels['zipcode'] = 'Post Code';
$labels['region'] = 'State/Province';
$labels['country'] = 'Country';
$labels['birthday'] = 'Birthday';
$labels['anniversary'] = 'Anniversary';
$labels['website'] = 'Website';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Notes';
$labels['male'] = 'male';
$labels['female'] = 'female';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'All fields';
$labels['search'] = 'Search';
$labels['searchresult'] = 'Search result';
$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'Advanced';
$labels['other'] = 'Other';
$labels['printcontact'] = 'Print contact';
$labels['qrcode'] = 'QR Code';
$labels['typehome'] = 'Home';
$labels['typework'] = 'Work';
$labels['typeother'] = 'Other';
$labels['typemobile'] = 'Mobile';
$labels['typemain'] = 'Main';
$labels['typehomefax'] = 'Home Fax';
$labels['typeworkfax'] = 'Work Fax';
$labels['typecar'] = 'Car';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistant';
$labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';
$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Add contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
$labels['contactnameandorg'] = 'Name and Company';
$labels['personalinfo'] = 'Personal information';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Contact photo';
$labels['edit'] = 'Edit';
$labels['cancel'] = 'Cancel';
$labels['save'] = 'Save';
$labels['delete'] = 'Delete';
$labels['discard'] = 'Discard';
$labels['continue'] = 'Continue';
$labels['ok'] = 'OK';
$labels['rename'] = 'Rename';
$labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
$labels['choosefile'] = 'Select file...';
$labels['choosefiles'] = 'Select files...';
$labels['browse'] = 'Browse';
$labels['newcontact'] = 'Create new contact';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
$labels['print'] = 'Print';
$labels['export'] = 'Export';
$labels['exportall'] = 'Export all';
$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
$labels['newgroup'] = 'Create new group';
$labels['addgroup'] = 'Add group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupassign'] = 'Assign to group...';
$labels['groupremove'] = 'Remove from group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
$labels['uponelevel'] = 'Up one level';
$labels['previouspage'] = 'Show previous set';
$labels['firstpage'] = 'Show first set';
$labels['nextpage'] = 'Show next set';
$labels['lastpage'] = 'Show last set';
$labels['group'] = 'Group';
$labels['groups'] = 'Groups';
$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Personal Addresses';
$labels['searchsave'] = 'Save search';
$labels['searchdelete'] = 'Delete search';
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Import contacts';
$labels['importfromfile'] = 'Import from file';
$labels['importtarget'] = 'Add contacts to';
$labels['importreplace'] = 'Replace the entire address book';
$labels['importgroups'] = 'Import group assignments';
$labels['importgroupsall'] = 'All (create groups if necessary)';
$labels['importgroupsexisting'] = 'Only for existing groups';
$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['importmapdesc'] = 'Confirm the field mapping information below is correct before proceeding with CSV (comma-separated) data import.';
$labels['fieldnotmapped'] = 'Field not mapped (do not import)';
$labels['skipheader'] = 'Do not import first line (headers)';
$labels['done'] = 'Done';
$labels['settingsfor'] = 'Settings for';
$labels['about'] = 'About';
$labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';
$labels['identities'] = 'Identities';
$labels['manageidentities'] = 'Manage identities';
$labels['newidentity'] = 'Create new identity';
$labels['addidentity'] = 'Add identity';
$labels['editidentity'] = 'Edit identity';
$labels['identityencryption'] = 'Encryption';
$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML Message';
$labels['messagepart'] = 'Part';
$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Date format';
$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Pretty dates';
$labels['setdefault'] = 'Set default';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Language';
$labels['timezone'] = 'Time zone';
$labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Summer time';
$labels['showinextwin'] = 'Open message in a new window';
$labels['composeextwin'] = 'Compose message in a new window';
$labels['htmleditor'] = 'Compose HTML messages';
$labels['htmlonreply'] = 'on reply to HTML message only';
$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML signature';
$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Show preview pane';
$labels['skin'] = 'Interface skin';
$labels['logoutclear'] = 'Clear "Deleted Items" on logout';
$labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'User Interface';
$labels['serversettings'] = 'Server Settings';
$labels['mailboxview'] = 'Mailbox View';
$labels['mdnrequests'] = 'On request for return receipt';
$labels['askuser'] = 'ask each time';
$labels['autosend'] = 'send automatically';
$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask';
$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['autosendtrusted'] = 'send receipt to trusted senders, otherwise ask me';
$labels['autosendtrustedignore'] = 'send receipt to trusted senders, otherwise ignore';
$labels['ignorerequest'] = 'ignore request';
$labels['readwhendeleted'] = 'Mark the message as read on delete';
$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
$labels['skipdeleted'] = 'Do not show deleted messages';
$labels['deletealways'] = 'If moving messages to "Deleted Items" fails, permanently delete them';
$labels['deletejunk'] = 'Permanently delete messages in the spam folder';
$labels['showremoteimages'] = 'Display remote inline images';
$labels['allowremoteresources'] = 'Allow remote resources (images, styles)';
$labels['fromknownsenders'] = 'from known senders';
$labels['fromtrustedsenders'] = 'from trusted senders';
$labels['frommycontacts'] = 'from my contacts';
$labels['always'] = 'always';
$labels['alwaysbutplain'] = 'always, except when replying to plain text';
$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Automatically save draft';
$labels['everynminutes'] = 'every $n minute(s)';
$labels['refreshinterval'] = 'Update (check for new messages, etc.)';
$labels['never'] = 'never';
$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'Displaying Messages';
$labels['messagescomposition'] = 'Composing Messages';
$labels['mimeparamfolding'] = 'Attachment names';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['savelocalstorage'] = "Save in the browser's local storage (temporarily)";
$labels['advancedoptions'] = 'Advanced options';
$labels['toggleadvancedoptions'] = 'Toggle advanced options';
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
$labels['displaynext'] = 'Display next list entry after delete/move';
$labels['defaultfont'] = 'Default font for HTML message';
$labels['mainoptions'] = 'Main Options';
$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'New Message';
$labels['signatureoptions'] = 'Signature Options';
$labels['whenreplying'] = 'When replying';
$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'start new message above original';
$labels['replytoppostingnoindent'] = 'start new message above the quote (no indentation)';
$labels['replybottomposting'] = 'start new message below original';
$labels['replyremovesignature'] = 'When replying remove original signature from message';
$labels['autoaddsignature'] = 'Automatically add signature';
$labels['newmessageonly'] = 'new message only';
$labels['replyandforwardonly'] = 'replies and forwards only';
$labels['insertsignature'] = 'Insert signature';
$labels['sigbelow'] = 'Place signature below the quoted message';
$labels['sigseparator'] = 'Force standard separator in signatures';
$labels['automarkread'] = 'Mark messages as read';
$labels['afternseconds'] = 'after $n seconds';
$labels['reqmdn'] = 'Always request a return receipt';
$labels['reqdsn'] = 'Always request a delivery status notification';
$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
$labels['listnamedisplay'] = 'List contacts as';
$labels['contactformmode'] = 'Contact form mode';
$labels['privatemode'] = 'Private (Home)';
$labels['businessmode'] = 'Business (Work)';
$labels['collectedaddresses'] = 'Collected addresses';
$labels['collectedrecipients'] = 'Collected Recipients';
$labels['collectedrecipientsopt'] = 'Store outgoing email recipients in';
$labels['collectedsendersopt'] = 'Store trusted senders in';
$labels['trustedsenders'] = 'Trusted Senders';
$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
$labels['spellcheckoptions'] = 'Spellcheck Options';
$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
$labels['spellcheckignorenums'] = 'Ignore words with numbers';
$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalised';
$labels['addtodict'] = 'Add to dictionary';
$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Forward messages';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'as attachment';
$labels['replyallmode'] = 'Default action of "Reply all" button';
$labels['replyalldefault'] = 'reply to all';
$labels['replyalllist'] = 'reply to mailing list only (if found)';
$labels['allmessages'] = 'all messages';
$labels['olderxdays'] = 'older than $x days';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
$labels['foldername'] = 'Folder name';
$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
$labels['create'] = 'Create';
$labels['createfolder'] = 'Create new folder';
$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Properties';
$labels['folderproperties'] = 'Folder properties';
$labels['parentfolder'] = 'Parent folder';
$labels['location'] = 'Location';
$labels['info'] = 'Information';
$labels['getfoldersize'] = 'Click to get folder size';
$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Folder Type';
$labels['personalfolder'] = 'Private Folder';
$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'Public Folder';
$labels['findfolders'] = 'Find folders';
$labels['findcontacts'] = 'Find contacts';
$labels['findmail'] = 'Find mail messages';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Other users';
$labels['namespace.shared'] = 'Shared';
$labels['dualuselabel'] = 'Can contain only';
$labels['dualusemail'] = 'messages';
$labels['dualusefolder'] = 'folders';
$labels['generate'] = 'Generate';
$labels['encryptioncreatekey'] = 'Create a new key pair';
$labels['openmailvelopesettings'] = 'Open Mailvelope Settings';
$labels['encryptionprivkeysinmailvelope'] = 'You have $nr matching private keys stored in your Mailvelope keyring:';
$labels['encryptionnoprivkeysinmailvelope'] = 'This sender identity doesn\'t yet have a PGP private key stored in your Mailvelope extension. Would you like to create one in order to enable encrypted messaging?';
$labels['encryption'] = 'Encryption';
$labels['mailvelopeoptions'] = 'Mailvelope options';
$labels['mailvelopemainkeyring'] = 'Use Mailvelope main keyring';
$labels['mailvelopenotfound'] = 'Mailvelope extension is not enabled/installed in your browser.';
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
$labels['undo'] = 'Undo';
$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Source';
$labels['destination'] = 'Destination';
$labels['license'] = 'Licence';
$labels['support'] = 'Get support';
$labels['savedsearches'] = 'Saved searches';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'English';
$labels['westerneuropean'] = 'Western European';
$labels['easterneuropean'] = 'Eastern European';
$labels['southeasterneuropean'] = 'South-Eastern European';
$labels['baltic'] = 'Baltic';
$labels['cyrillic'] = 'Cyrillic';
$labels['arabic'] = 'Arabic';
$labels['greek'] = 'Greek';
$labels['hebrew'] = 'Hebrew';
$labels['turkish'] = 'Turkish';
$labels['nordic'] = 'Nordic';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Celtic';
$labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';
$labels['arialabeltopnav'] = 'Window control';
$labels['arialabeltasknav'] = 'Application tasks';
$labels['arialabeltoolbar'] = 'Application toolbar';
$labels['arialabellistnav'] = 'List navigation';
$labels['arialabelactivetask'] = 'Active task';
$labels['arialabelmessagessearchfilter'] = 'Email listing filter';
$labels['arialabelmailsearchform'] = 'Email message search form';
$labels['arialabelcontactsearchform'] = 'Contacts search form';
$labels['arialabelmailquicksearchbox'] = 'Email search input';
$labels['arialabelquicksearchbox'] = 'Search input';
$labels['arialabelfoldersearchfilter'] = 'Folder listing filter';
$labels['arialabelfoldersearchform'] = 'Folder search form';
$labels['arialabelfolderlist'] = 'Email folder selection';
$labels['arialabelmessagelist'] = 'Email Messages Listing';
$labels['arialabelmailpreviewframe'] = 'Message preview';
$labels['arialabelmailboxmenu'] = 'Folder actions menu';
$labels['arialabellistselectmenu'] = 'List selection menu';
$labels['arialabelthreadselectmenu'] = 'Threads listing menu';
$labels['arialabelmessagelistoptions'] = 'Message list display and sorting options';
$labels['arialabelmailimportdialog'] = 'Message import dialog';
$labels['arialabelmessagenav'] = 'Message navigation';
$labels['arialabelmessagebody'] = 'Message Body';
$labels['arialabelmessageactions'] = 'Message actions';
$labels['arialabelcontactquicksearch'] = 'Contacts search form';
$labels['arialabelcontactsearchbox'] = 'Contact search input';
$labels['arialabelmessageheaders'] = 'Message headers';
$labels['arialabelforwardingoptions'] = 'Forwarding options';
$labels['arialabelreplyalloptions'] = 'Reply-all options';
$labels['arialabelmoremessageactions'] = 'More message actions';
$labels['arialabelmorecontactactions'] = 'More contact actions';
$labels['arialabelmarkmessagesas'] = 'Mark selected messages as...';
$labels['arialabelcomposeoptions'] = 'Composition options';
$labels['arialabelresponsesmenu'] = 'Canned responses menu';
$labels['arialabelattachmentuploadform'] = 'Attachment upload form';
$labels['arialabelattachmentmenu'] = 'Attachment options';
$labels['arialabelmailtomenu'] = 'Email address options';
$labels['arialabelattachmentpreview'] = 'Attachment preview';
$labels['ariasummarycomposecontacts'] = 'List of contacts and groups to select as recipients';
$labels['arialabelcontactexportoptions'] = 'Contact export options';
$labels['arialabelabookgroupoptions'] = 'Addressbook/group options';
$labels['arialabelpreferencesform'] = 'Preferences form';
$labels['arialabelidentityeditfrom'] = 'Identity edit form';
$labels['arialabelresponseeditfrom'] = 'Response edit form';
$labels['arialabelsearchterms'] = 'Search terms';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop action menu';
$labels['arialabelheadersmenu'] = 'Recipient (header) adding menu';
$labels['arialabelimagetools'] = 'Image tools';
$labels['helplistnavigation'] = 'List keyboard navigation';
$labels['helplistkeyboardnavigation'] = "Arrows up/down: Move row focus/selection.
Space: Select focused row.
Shift + up/down: Select additional row above/below.
Ctrl + Space: Add focused row to selection/remove from selection.";
$labels['helplistkeyboardnavmessages'] = "Arrows right/left: expand/collapse message thread (in threads mode only).
Enter: Open the selected/focused message.
Delete: Move selected messages to Trash.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Open the selected/focused contact.";
localization/en_GB/messages.inc000064400000041433151727150600012521 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'An error occurred.';
$messages['loginfailed']  = 'Login failed.';
$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
$messages['sessionerror'] = 'Your session is invalid or has expired.';
$messages['cookiesmismatch'] = 'Cookie mismatch detected. Please clear your browser\'s cookies.';
$messages['storageerror'] = 'Connection to IMAP server failed.';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
$messages['accountlocked'] = 'Too many failed login attempts. Try again later.';
$messages['connerror'] = 'Connection Error (Failed to reach the server)!';
$messages['dberror'] = 'Database Error!';
$messages['dbconnerror'] = 'Unable to connect to the database!';
$messages['windowopenerror'] = 'The popup window was blocked!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'No messages found in this mailbox.';
$messages['loggedout'] = 'You have successfully terminated the session. Goodbye!';
$messages['mailboxempty'] = 'Mailbox is empty';
$messages['nomessages'] = 'No messages';
$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Loading...';
$messages['uploading'] = 'Uploading file...';
$messages['attaching'] = 'Attaching file...';
$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Loading data...';
$messages['checkingmail'] = 'Checking for new messages...';
$messages['sendingmessage'] = 'Sending message...';
$messages['messagesent'] = 'Message sent successfully.';
$messages['savingmessage'] = 'Saving message...';
$messages['messagesaved'] = 'Message saved to Drafts.';
$messages['successfullysaved'] = 'Successfully saved.';
$messages['savingresponse'] = 'Saving response text...';
$messages['deleteresponseconfirm'] = 'Do you really want to delete this response text?';
$messages['nocontactselected'] = 'You have not selected a contact yet.';
$messages['addedsuccessfully'] = 'Contact successfully added to address book.';
$messages['contactexists'] = 'A contact with the same email address already exists.';
$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
$messages['blockedresources'] = 'To protect your privacy remote resources have been blocked.';
$messages['suspiciousemail'] = 'This message contains suspicious email addresses that may be fraudulent.';
$messages['bccemail'] = 'The forwarded message(s) contain confidential recipients (Bcc).';
$messages['bouncehint'] = 'The message will be sent without any modifications, i.e. using the original body, headers and recipients.';
$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
$messages['externalmessagedecryption'] = 'This is an encrypted message and can be decrypted with your browser extension.';
$messages['nopubkeyfor'] = 'No valid public key found for $email';
$messages['nopubkeyforsender'] = 'No valid public key found for your sender identity. Do you want to encrypt the message for the recipients only?';
$messages['encryptnoattachments'] = 'Already uploaded attachments cannot be encrypted. Please re-add them in the encryption editor.';
$messages['searchpubkeyservers'] = 'Do you want to search public key servers for the missing keys?';
$messages['encryptpubkeysfound'] = 'The following public keys have been found:';
$messages['keyservererror'] = 'Failed to get key from keyserver.';
$messages['keyimportsuccess'] = 'Public key $key successfully imported into your keyring.';
$messages['nocontactsfound'] = 'No contacts found.';
$messages['contactnotfound'] = 'The requested contact was not found.';
$messages['contactsearchonly'] = 'You must use a search form to see contacts from this addressbook.';
$messages['sendingfailed'] = 'Failed to send message.';
$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
$messages['errorsavingsent'] = 'An error occurred while saving sent message.';
$messages['errorsaving'] = 'An error occurred while saving.';
$messages['errormoving'] = 'Could not move the message(s).';
$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Could not delete the message(s).';
$messages['errormarking'] = 'Could not mark the message(s).';
$messages['alerttitle'] = 'Attention';
$messages['confirmationtitle'] = 'Are you sure...';
$messages['deletecontactconfirm']  = 'Do you really want to delete the selected contact(s)?';
$messages['deletegroupconfirm']  = 'Do you really want to delete the selected group?';
$messages['deletemessagesconfirm'] = 'Do you really want to delete the selected message(s)?';
$messages['deletefolderconfirm']  = 'Do you really want to delete this folder?';
$messages['movefolderconfirm']  = 'Do you really want to move this folder?';
$messages['purgefolderconfirm']  = 'Do you really want to delete all messages in this folder?';
$messages['contactdeleting'] = 'Deleting contact(s)...';
$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'Deleting folder...';
$messages['foldermoving'] = 'Moving folder...';
$messages['foldersubscribing'] = 'Subscribing to folder...';
$messages['folderunsubscribing'] = 'Unsubscribing from folder...';
$messages['formincomplete'] = 'The form was not completely filled out.';
$messages['noemailwarning'] = 'Please enter a valid email address.';
$messages['nonamewarning']  = 'Please enter a name.';
$messages['nopagesizewarning'] = 'Please enter a page size.';
$messages['nosenderwarning'] = 'Please enter sender email address.';
$messages['recipientsadded'] = 'Recipient(s) added successfully.';
$messages['norecipientwarning'] = 'Please enter at least one recipient.';
$messages['disclosedrecipwarning'] = 'All recipients will see each others e-mail addresses. To prevent this and protect their privacy you can use the Bcc field.';
$messages['disclosedreciptitle'] = 'Too many public recipients';
$messages['nosubjectwarning']  = 'The "Subject" field is empty. Would you like to enter one now?';
$messages['nosubjecttitle']  = 'No subject';
$messages['nobodywarning'] = 'Send this message without any text?';
$messages['notsentwarning'] = 'The message has not been sent and has unsaved changes. Do you want to discard your changes?';
$messages['restoresavedcomposedata'] = 'A previously composed but unsent message was found.\n\nSubject: $subject\nSaved: $date\n\nDo you want to restore this message?';
$messages['nosearchname'] = 'Please enter a contact name or email address.';
$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr messages found.';
$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Search found no matches.';
$messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
$messages['stillsearching'] = 'Still searching...';
$messages['nospellerrors'] = 'No spelling errors found.';
$messages['folderdeleted'] = 'Successfully deleted folder.';
$messages['foldersubscribed'] = 'Successfully subscribed to folder.';
$messages['folderunsubscribed'] = 'Successfully unsubscribed from folder.';
$messages['folderpurged'] = 'Folder successfully emptied.';
$messages['folderexpunged'] = 'Folder successfully compacted.';
$messages['deletedsuccessfully'] = 'Successfully deleted.';
$messages['converting'] = 'Removing formatting...';
$messages['messageopenerror'] = 'Could not load message from server.';
$messages['filelinkerror'] = 'Attaching the file failed.';
$messages['fileuploaderror'] = 'File upload failed.';
$messages['csvfilemismatch'] = 'Import of multiple CSV files with different fields is not supported.';
$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
$messages['filecounterror'] = 'You can upload maximum $count files at once.';
$messages['msgsizeerror'] = 'Failed to attach a file. Maximum size of a message ($size) exceeded.';
$messages['msgsizeerrorfwd'] = 'Maximum size of a message ($size) exceeded. $num message(s) have not been attached.';
$messages['copysuccess'] = 'Successfully copied $nr contacts.';
$messages['movesuccess'] = 'Successfully moved $nr contacts.';
$messages['copyerror'] = 'Could not copy any contacts.';
$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'This address book is read-only.';
$messages['errorsavingcontact'] = 'Could not save the contact address.';
$messages['movingmessage'] = 'Moving message(s)...';
$messages['copyingmessage'] = 'Copying message(s)...';
$messages['copyingcontact'] = 'Copying contact(s)...';
$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Deleting message(s)...';
$messages['markingmessage'] = 'Marking message(s)...';
$messages['addingmember'] = 'Adding contact(s) to the group...';
$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Successfully sent a read receipt.';
$messages['errorsendingreceipt'] = 'Could not send the receipt.';
$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
$messages['selectimportfile'] = 'Please select a file to upload.';
$messages['addresswriterror'] = 'The selected address book is not writeable.';
$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Importing, please wait...';
$messages['importformaterror'] = 'Import failed! The uploaded file is not in a valid import format.';
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['nofromaddress'] = 'Missing email address in selected identity.';
$messages['editorwarning'] = 'Switching editor type may cause text formatting to be lost. Do you wish to continue?';
$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
$messages['smtputf8error'] = 'SMTP Error: Server does not support Unicode in email address.';
$messages['smtpsizeerror'] = 'SMTP Error: Message size exceeds server limit ($limit)';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Invalid email address: $email';
$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
$messages['internalerror'] = 'An internal error occurred. Please try again.';
$messages['contactdelerror'] = 'Could not delete contact(s).';
$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
$messages['contactrestored'] = 'Contact(s) successfully restored.';
$messages['groupdeleted'] = 'Group deleted successfully.';
$messages['grouprenamed'] = 'Group renamed successfully.';
$messages['groupcreated'] = 'Group created successfully.';
$messages['savedsearchdeleted'] = 'Saved search successfully deleted.';
$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
$messages['savedsearchcreated'] = 'Saved search successfully created.';
$messages['savedsearchcreateerror'] = 'Could not create saved search.';
$messages['messagedeleted'] = 'Message(s) deleted successfully.';
$messages['messagemoved'] = 'Message(s) moved successfully.';
$messages['messagemovedtotrash'] = 'Message(s) moved to Deleted Items successfully.';
$messages['messagecopied'] = 'Message(s) copied successfully.';
$messages['messagemarked'] = 'Message(s) marked successfully.';
$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'Name cannot be empty.';
$messages['nametoolong'] = 'Name is too long.';
$messages['namedotforbidden'] = 'Folder name cannot start with a dot.';
$messages['folderupdated'] = 'Successfully updated folder.';
$messages['foldercreated'] = 'Successfully created folder.';
$messages['invalidimageformat'] = 'Not a valid image format.';
$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
$messages['messagetoobig'] = 'The message part is too big to be processed.';
$messages['attachmentvalidationerror'] = 'This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
$messages['messageissent'] = 'The message was already sent, but not yet saved. Do you want to save it now?';
$messages['errnotfound'] = 'File not found';
$messages['errnotfoundexplain'] = 'The requested resource was not found.';
$messages['errfailedrequest'] = 'Failed request';
$messages['errauthorizationfailed'] = 'Authorisation failed';
$messages['errunauthorizedexplain'] = 'Could not verify that you are authorised to access this service.';
$messages['errrequestcheckfailed'] = 'Request check failed';
$messages['errcsrfprotectionexplain'] = "For your protection, access to this resource is secured against CSRF.\nIf you see this, you probably didn't log out before leaving the web application.\n\nHuman interaction is now required to continue.";
$messages['errcontactserveradmin'] = 'Please contact your server administrator.';
$messages['clicktoresumesession'] = 'Click here to resume your previous session';
$messages['errcomposesession'] = 'Compose session error';
$messages['errcomposesessionexplain'] = 'Requested compose session not found.';
$messages['clicktocompose'] = 'Click here to compose a new message';
$messages['nosupporterror'] = 'This feature is not supported by your web browser.';
$messages['siginserted'] = 'Signature inserted successfully.';
$messages['responseinserted'] = 'Response inserted successfully.';
$messages['noresponsesavailable'] = 'No responses available';
$messages['listempty'] = 'The list is empty.';
$messages['listusebutton'] = 'Use the Create button to add a new record.';
$messages['keypaircreatesuccess'] = 'A new key pair has been successfully created for $identity.';
$messages['emptyattachment'] = 'This attachment appears to be empty.<br>Content may have been removed by anti-virus/anti-spam services. Please check with the sender.';
$messages['oauthloginfailed'] = 'OAuth login failed. Please try again.';
localization/fa_AF/labels.inc000064400000034774151727150600012150 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'به اين پروژه خوش امديد';
$labels['username'] = 'نام کاربر';
$labels['password'] = 'شفر';
$labels['server'] = 'سرور';
$labels['login'] = 'داخل شدن';
$labels['logout'] = 'خروج';
$labels['mail'] = 'ايميل';
$labels['settings'] = 'تنظیمات شخصی';
$labels['addressbook'] = 'کتاب ادرس';
$labels['inbox'] = 'نامه های ارسالي';
$labels['drafts'] = 'نامه های ناتکمیل';
$labels['sent'] = 'ارسال شده';
$labels['trash'] = 'اشغال دانی';
$labels['junk'] = 'بیکاره';
$labels['show_real_foldernames'] = 'نمایش نام واقعی برای فولدرهای خاص';
$labels['subject'] = 'مضمون';
$labels['from'] = 'ارسال کننده';
$labels['sender'] = 'فرستنده';
$labels['to'] = 'ګيرينده';
$labels['cc'] = 'تکثیر';
$labels['bcc'] = 'تکثیر پنهان';
$labels['replyto'] = 'جواب نامه';
$labels['date'] = 'تاريخ';
$labels['size'] = 'اندازه';
$labels['priority'] = 'اولویت';
$labels['organization'] = 'تنظیمات';
$labels['readstatus'] = 'خواندن وضعیت';
$labels['listoptions'] = 'لیست کردن آپشن ها...';
$labels['mailboxlist'] = 'پوشه ها';
$labels['messagesfromto'] = 'از  مقدار پيغام به مقدار حساب شده';
$labels['messagenrof'] = 'از شمار پيغام های حساب شده';
$labels['copy'] = 'تکثیر';
$labels['move'] = 'انتقال';
$labels['moveto'] = 'انتقال بدهید به ...';
$labels['copyto'] = 'کپی کردن به...';
$labels['download'] = 'داونلود کردن';
$labels['open'] = 'باز کردن';
$labels['showattachment'] = 'نمایش';
$labels['filename'] = 'نام فايل';
$labels['filesize'] = 'اندازه فايل';
$labels['addtoaddressbook'] = 'در کتاب ادرس علاوه نماييد';
$labels['sun'] = 'يکشنپبه';
$labels['mon'] = 'دوشنبه';
$labels['tue'] = 'سه شنبه';
$labels['wed'] = 'چهارشنبه';
$labels['thu'] = 'پنج شنبه';
$labels['fri'] = 'جمعه';
$labels['sat'] = 'شنبه';
$labels['sunday'] = 'يکشنبه';
$labels['monday'] = 'دوشنبه';
$labels['tuesday'] = 'سه شنبه';
$labels['wednesday'] = 'چهارشنبه';
$labels['thursday'] = 'پنج شنبه';
$labels['friday'] = 'جمعه';
$labels['saturday'] = 'شنبه';
$labels['jan'] = 'جنوری';
$labels['feb'] = 'فبروری';
$labels['mar'] = 'مارچ';
$labels['apr'] = 'اپریل';
$labels['may'] = 'می';
$labels['jun'] = 'جون';
$labels['jul'] = 'جولایی';
$labels['aug'] = 'آگست';
$labels['sep'] = 'سپتمبر';
$labels['oct'] = 'اکتوبر';
$labels['nov'] = 'نومبر';
$labels['dec'] = 'دسمبر';
$labels['longjan'] = 'جنوری';
$labels['longfeb'] = 'فبروری';
$labels['longmar'] = 'مارچ';
$labels['longapr'] = 'اپریل';
$labels['longmay'] = 'می';
$labels['longjun'] = 'جون';
$labels['longjul'] = 'جولایی';
$labels['longaug'] = 'آگست';
$labels['longsep'] = 'سپتمبر';
$labels['longoct'] = 'اکتوبر';
$labels['longnov'] = 'نومبر';
$labels['longdec'] = 'دسمبر';
$labels['today'] = 'امروز';
$labels['refresh'] = 'رفرش';
$labels['checkmail'] = 'بررسي کردن پيغام های جديد';
$labels['compose'] = 'نوشتن پیام حدید';
$labels['writenewmessage'] = 'ساختن پيغام جديد';
$labels['reply'] = 'پاسخ';
$labels['replytomessage'] = 'جواب دادن به پيغام';
$labels['replytoallmessage'] = 'به فرستنده و تمام گيرينده ها جواب بدهيد';
$labels['replyall'] = 'پاسخ به همه';
$labels['replylist'] = 'لیست پاسخ';
$labels['forward'] = 'فوروارد';
$labels['forwardmessage'] = 'فرستادن این پیام به دیگران / فارورد';
$labels['deletemessage'] = 'حذف کردن پيغام';
$labels['movemessagetotrash'] = 'پيغام را به اشيآيي حذف شده منتقل نماييد';
$labels['printmessage'] = 'اين پيغام را چاپ کنيد';
$labels['previousmessage'] = 'پيغام قبلي را نشان دهيد';
$labels['firstmessage'] = 'پيغام اولي را نشان دهيد';
$labels['nextmessage'] = 'پيغام بعدي رانشان دهيد';
$labels['lastmessage'] = 'پيغام اخير را نشان دهيد';
$labels['backtolist'] = 'بازگشتن به لست پيغام';
$labels['viewsource'] = 'منبع / کود را نشان دهيد';
$labels['mark'] = 'نشانه گذاری';
$labels['markmessages'] = 'پيغام ها را نشاني کنيد';
$labels['markread'] = 'مانند خوانده شده';
$labels['markunread'] = 'مانند خوانده نشده';
$labels['markflagged'] = 'مانند نشانی شده';
$labels['markunflagged'] = 'مانند نشانی ناشده';
$labels['more'] = 'بیشتر';
$labels['back'] = 'بازگشت';
$labels['options'] = 'انتخاب ها';
$labels['first'] = 'اول';
$labels['last'] = 'انتها';
$labels['previous'] = 'قبلی';
$labels['next'] = 'بعدی';
$labels['select'] = 'انتخاب کردن';
$labels['all'] = 'تمام';
$labels['none'] = 'هيچ کدام';
$labels['isread'] = 'خواندن';
$labels['unread'] = 'ناخوانده';
$labels['flagged'] = 'نشانی شده';
$labels['unanswered'] = 'پیامهای جواب نداده شده';
$labels['deleted'] = 'حذف شد';
$labels['filter'] = 'تصفیه کردن';
$labels['list'] = 'لیست';
$labels['attachment'] = 'الصاق';
$labels['nonesort'] = 'هيچ کدام';
$labels['sentdate'] = 'تاریخ ارسال';
$labels['arrival'] = 'تاریخ دریافت';
$labels['asc'] = 'صعودی';
$labels['desc'] = 'نزولی';
$labels['layoutlist'] = 'لیست';
$labels['compact'] = 'خلاصه';
$labels['empty'] = 'خالي';
$labels['quota'] = '‌طريقه استعمال ديسک';
$labels['unknown'] = 'نامعلوم';
$labels['unlimited'] = 'نامعين/ نامحدود';
$labels['quicksearch'] = 'جستجوی سریع';
$labels['resetsearch'] = 'بازنشاندن جستجو';
$labels['body'] = 'متن پیام';
$labels['openinextwin'] = 'در پینجره ای جدید باز کنید';
$labels['sendmessage'] = 'پيغام را همين حالا ارسال کنيد';
$labels['savemessage'] = 'این پیش نویس را حفظ نمایید';
$labels['addattachment'] = 'ضميمه نمودن يک فايل';
$labels['charset'] = 'ست کرکتر ها';
$labels['editortype'] = 'روش تصحیح کننده / نوشتاری';
$labels['returnreceipt'] = 'رسید برای مراجعت نامه';
$labels['recipient'] = 'گیرنده';
$labels['checkspelling'] = 'املا را بررسي کنيد';
$labels['resumeediting'] = 'ادامه / بازگشت به تصحیی کردن / نوشتن';
$labels['revertto'] = 'رجوع کردن به';
$labels['attachments'] = 'ضميمه ها';
$labels['upload'] = 'اپلود کردن';
$labels['close'] = 'بستن';
$labels['low'] = 'کم';
$labels['lowest'] = 'کمترین';
$labels['normal'] = 'عادی';
$labels['high'] = 'عالي';
$labels['highest'] = 'عاليترين';
$labels['nosubject'] = 'مضمون ندارد';
$labels['showimages'] = 'نمايش دادن تصاوير';
$labels['alwaysshow'] = 'همیشه نشان بده تصاویر را از این فرسیتنده﷼';
$labels['htmltoggle'] = 'ایچ تی ام ایل';
$labels['plaintoggle'] = 'متن ساده';
$labels['savesentmessagein'] = 'پیام ارسال شده را ذخیره کن در';
$labels['dontsave'] = 'ذخیره نکنید';
$labels['maxuploadsize'] = '$sizeزیاد ترین اندازه اجازه داده شده فایل عبارت است از';
$labels['addcc'] = 'نسخیه دوم  را علاوه کنید';
$labels['addbcc'] = 'نسخه پنهان را علاوه کنید';
$labels['addreplyto'] = 'علاوه کردن';
$labels['mdnrequest'] = 'فرستانده این پیام خواهش نموده زمانیکه شما نامه را خواندید براش آگاهی داده شود آيا شما ميخواهيد که فرستنده را آګاه سازيد';
$labels['receiptread'] = 'بازگشت رسید (خوانده شده)';
$labels['yourmessage'] = 'برای پيغام شما اين يک رسید بازگشت است';
$labels['receiptnote'] = 'يادداشت : اين رسيد شما را فقط اګاه ميسازد که پيغام به کامپیوتر گیرنده نمایش داده شده است  هیچ گارنتی وجود ندارد که گیرنده پیام این پیام را خوانده و یا مطالب آن را درک کرده باشد.';
$labels['name'] = 'نشان دادن نام';
$labels['firstname'] = 'اسم/ نام';
$labels['surname'] = 'اسم فاميلي / تخلص';
$labels['email'] = 'ايميل';
$labels['other'] = 'دیگر';
$labels['typeother'] = 'دیگر';
$labels['editcontact'] = 'آدرس جدید را تصحیح کنید';
$labels['edit'] = 'تصحيح کردن';
$labels['cancel'] = 'لغو کردن/ حذف کردن';
$labels['save'] = 'حفظ کردن';
$labels['delete'] = 'حذف کردن';
$labels['addphoto'] = 'افزودن';
$labels['deletecontact'] = 'آدرس های انتخاب شده را حذف کنيد';
$labels['composeto'] = 'ايمیل را نوشته کنيد به';
$labels['contactsfromto'] = 'از$count$to به $from آدرس ها از';
$labels['print'] = 'چاپ کردن';
$labels['export'] = 'صادر کردن';
$labels['exportvcards'] = 'صادر نماییدVcardآدرس ها را به فرمت';
$labels['previouspage'] = 'بسته قبلي را نشان دهيد';
$labels['firstpage'] = 'بسته اولي را نشان دهيد';
$labels['nextpage'] = 'بسته بعدي را نشان دهيد';
$labels['lastpage'] = 'بسته اخير را نشان دهيد';
$labels['groups'] = 'گروه ها';
$labels['personaladrbook'] = 'ادرس های شخصي';
$labels['import'] = 'وارد کردن';
$labels['importcontacts'] = 'آدرس ها را وارد نمایید';
$labels['importreplace'] = 'تمام کتاب آدرس ها را عوض نمایید';
$labels['done'] = 'اجرا شد';
$labels['settingsfor'] = 'تنظیمات برای';
$labels['about'] = 'درباره نرم افزار';
$labels['preferences'] = 'ترجيحات';
$labels['userpreferences'] = 'ترجيحات کاربر';
$labels['editpreferences'] = 'تصحيح کردن ترجيحات  کاربر';
$labels['identities'] = 'شناخت ها';
$labels['preferhtml'] = 'نشان دادن ايچ ټي ام ايل';
$labels['htmlmessage'] = 'پيغام ايچ ټي‌ام ايل';
$labels['prettydate'] = 'تاريخ های مهم';
$labels['setdefault'] = 'بطور همیشگی انتخاب نمایید';
$labels['autodetect'] = 'اتومات';
$labels['language'] = 'لسان';
$labels['timezone'] = 'ناحيه زمانی';
$labels['pagesize'] = 'تعداد سطر ها در صفحه';
$labels['signature'] = 'امضا';
$labels['dstactive'] = 'Daylight saving time';
$labels['htmleditor'] = 'پيغام ايچ ټي ام ايل رانوشته کنيد';
$labels['htmlsignature'] = 'امضای حساب ایمیل بشکل ایچ تی ام ال';
$labels['previewpane'] = 'چوکات پیشنما را نشان دهید';
$labels['skin'] = 'تمپلیت محیط کاربری';
$labels['logoutclear'] = 'Clear Trash on logout';
$labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'محیط کاربر';
$labels['serversettings'] = 'تنظیمات سرور';
$labels['mailboxview'] = 'طرز نمایش صندوق پستی';
$labels['mdnrequests'] = 'آگاهی های ارسال کننده';
$labels['askuser'] = 'از کاربر بپرسید';
$labels['autosend'] = 'پیام را بطور خودکار روان کنید';
$labels['readwhendeleted'] = 'در هنگام حفظ پیام را خوانده شده نشانی کنید';
$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
$labels['skipdeleted'] = 'پیام های حذف شده را نمایش ندهید';
$labels['showremoteimages'] = 'Display remote inline images';
$labels['fromknownsenders'] = 'نامه های از آدرس های شناخته شده';
$labels['always'] = 'همیشه';
$labels['showinlineimages'] = 'تصاویر ضمیمه شده را در پایین پیام نشان دهید.';
$labels['autosavedraft'] = 'بصورت خودکار پیش نويس را حفظ کنيد';
$labels['everynminutes'] = 'دقیفه$n هر';
$labels['never'] = 'هیچگاه';
$labels['messagesdisplaying'] = 'نمایش دادن پیام ها';
$labels['messagescomposition'] = 'ایجاد کردن پیام جدید';
$labels['mimeparamfolding'] = 'نام های ضمیمه ها';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (دیگر ها)';
$labels['advancedoptions'] = 'انتخاب های پیشرفته';
$labels['focusonnewmessage'] = 'فوکس دادن پینجره مرورگر به پیام جدید';
$labels['checkallfolders'] = 'تمام پوشه ها را بخاطر پیام های جدید بررسی کنید';
$labels['allmessages'] = 'تمام پیام ها';
$labels['folder'] = 'پوشه';
$labels['folders'] = 'پوشه ها';
$labels['foldername'] = 'نام پوشه';
$labels['subscribed'] = 'مشترک';
$labels['messagecount'] = 'پيغام ها';
$labels['create'] = 'ایجاد کردن';
$labels['createfolder'] = 'ایجاد پوشه جدید';
$labels['managefolders'] = 'اداره کردن پوشه ها';
$labels['specialfolders'] = 'پوشه های مخصوص';
$labels['sortby'] = 'فهرست کردن توسط';
$labels['sortasc'] = 'فهرست کردن از طرف بالا به پايين';
$labels['sortdesc'] = 'فهرست کردن از طرف پايين به بالا';
$labels['license'] = 'حق نشر';
$labels['B'] = 'بایت';
$labels['KB'] = 'کیلو بایت';
$labels['MB'] = 'میگا بایت';
$labels['GB'] = 'گیگا بایت';
localization/fa_AF/messages.inc000064400000024631151727150600012504 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'خطا رخ داد';
$messages['loginfailed']  = 'ورود با شکست همراه بود';
$messages['cookiesdisabled'] = 'جستجوگر شما  cookies را قبول نميکند';
$messages['sessionerror'] = 'جلسه شما وجود ندارد و يا هم از زمان معين آن گذشته است';
$messages['storageerror'] = 'وصل شدن به آیمیپ سرور موفق نشد';
$messages['servererror'] = 'خطای سرور!';
$messages['servererrormsg'] = 'خطای سرور: $msg';
$messages['dberror'] = 'خطای پایگاه داده';
$messages['windowopenerror'] = 'پنجره‌ی پاپ‌آپ مسدود شد!';
$messages['requesttimedout'] = 'عدم پاسخگویی در زمان مقرر';
$messages['errorreadonly'] = 'ناتوان از انجام عملیات. پوشه فقط خواندنی ست.';
$messages['errornoperm'] = 'ناتوان از انجام عملیات. مجوز رد شد.';
$messages['erroroverquota'] = 'ناتوان از انجام عملیات. فضای خالی دیسک کافی نیست.';
$messages['erroroverquotadelete'] = 'فضای خالی دیسک کافی نیست. برای پاک کردن پیام‌ها از SHIFT+DEL استفاده کنید.';
$messages['invalidrequest'] = 'درخواست نامعتبر. هیچ داده‌ای ذخیره نشد.';
$messages['invalidhost'] = 'نام سرور نامعتبر است';
$messages['nomessagesfound'] = 'هيچ پيغامی در اين صندوق پستي دريافت نه شد';
$messages['mailboxempty'] = 'میل باکس خالی است';
$messages['nomessages'] = 'پیامی وجود ندارد';
$messages['refreshing'] = 'دوباره سازی....';
$messages['loading'] = 'در حال بارگزاری...';
$messages['uploading'] = 'در حال بارگزاری فایل...';
$messages['attaching'] = 'ضمیمه کردن پرونده ...';
$messages['uploadingmany'] = 'در حال بارگزاری فایل ها...';
$messages['loadingdata'] = 'در حال بارگزاری داده';
$messages['checkingmail'] = 'پيغام های جديد را بررسي ميکند';
$messages['sendingmessage'] = 'پيغام ها را ارسال ميکند';
$messages['messagesent'] = 'پیام موفقانه ارسال گردید';
$messages['savingmessage'] = 'در حال ذخیره کردن پیام';
$messages['messagesaved'] = 'پيغام را به پیش نويس حفظ کرد';
$messages['successfullysaved'] = 'حفظ پیام موفقانه صورت گرفت';
$messages['savingresponse'] = 'ذخیره کردن متن پاسخ ...';
$messages['deleteresponseconfirm'] = 'آیا واقعاً می‌خواهید این متن پاسخ را حذف کنید؟';
$messages['addedsuccessfully'] = 'آدرس بصورت مکمل در کتاب ادرس علاوه شد';
$messages['contactnameexists'] = 'یک محتوا با نام مشابه وجود دارد.';
$messages['blockedimages'] = 'برای حفظ استقلال پيغام شما، تصاویر اجنبی این پیام بلاک شده اند';
$messages['encryptedmessage'] = 'اين يک پيغام مخفي است و اشکار شده نميتواند   معذرت ميخواهيم';
$messages['externalmessagedecryption'] = 'این یک پیام رمزگذاری شده است و می‌توانید با استفاده از افزونه مرورگر خود آن را رمزگشائی کنید.';
$messages['nopubkeyfor'] = 'کلید عمومی معتبری برای $email پیدا نشد.';
$messages['nocontactsfound'] = 'هيچ آدرسی دريافت نه شد';
$messages['contactnotfound'] = 'آدرس خواسته شده دريافت نه شد';
$messages['sendingfailed'] = 'فرستادن پيغام موفق نه شد';
$messages['senttooquickly'] = 'ثانیه منتظر باشید$secلطفا مدت  قبل از ارسال این پیام';
$messages['errormoving'] = 'پيغام نقل مکان شده نتوانست';
$messages['errorcopying'] = 'امکان کپی پیام (ها) وجود ندارد';
$messages['errordeleting'] = 'پيغام حذف شده نتوانست';
$messages['errormarking'] = 'امکان انتخاب پیام (ها) وجود ندارد';
$messages['deletecontactconfirm']  = 'آيا واقعاً شما ميخواهيد که آدرس های انتخاب شده را حذف کنيد؟';
$messages['deletegroupconfirm']  = 'آیا واقعاً می‌خواهید گروه انتخاب شده حذف شود؟';
$messages['deletemessagesconfirm'] = 'آيا واقعاً شما ميخواهيد که پيغام هاي انتخاب شده را حذف کنيد؟';
$messages['deletefolderconfirm']  = 'آيا واقعاً شما ميخواهيد که اين پوشه را حذف کنيد؟';
$messages['purgefolderconfirm']  = 'آيا واقعاً شما ميخواهيد  تمام پيغام های که  در اين پوشه وجود دارد حذف کنيد؟';
$messages['contactdeleting'] = 'در حال حذف کانتکت(ها)...';
$messages['groupdeleting'] = 'در حال حذف گروه...';
$messages['folderdeleting'] = 'در حال حذف پوشه';
$messages['foldermoving'] = 'در حال انتقال پوشه';
$messages['foldersubscribing'] = 'در حال عضویت در فولدر...';
$messages['folderunsubscribing'] = 'لغو اشتراک پوشه ...';
$messages['formincomplete'] = 'فورمه بصورت مکمل خانه پري نه شده است';
$messages['noemailwarning'] = 'لطفاً يک ايميل ادرس موجود را داخل کنيد';
$messages['nonamewarning']  = 'لطفاً يک نام وارد کنيد';
$messages['nopagesizewarning'] = 'لطفاً اندازه يک صفحه را داخل کنيد';
$messages['norecipientwarning'] = 'لطفاً کم از کم يک آدرس گيرينده را نوشته / داخل کنيد';
$messages['nosubjectwarning']  = 'بخش مضمون خالي است  آیا میخواهید که حالا یکی آنها را درج نمایید؟.';
$messages['nobodywarning'] = 'اين پيغام را بدون متن بفرستیم؟';
$messages['nosearchname'] = 'لطفاً يک نام تماس و يا هم يک ايميل ادرس را داخل کنيد';
$messages['searchsuccessful'] = '$nr پیام یافت شد';
$messages['contactsearchsuccessful'] = '$nr حساب کاربری یافت شد';
$messages['searchnomatch'] = 'جستجو گر موفق به دریافت هیچ گونه اثری نشد';
$messages['searching'] = 'در حال جستجو..';
$messages['checking'] = 'در حال بررسی';
$messages['stillsearching'] = 'در حال جستجو...';
$messages['nospellerrors'] = 'هيچ اشتباه املايي را دريافت نه کرد';
$messages['folderdeleted'] = 'پوشه موفقانه از بين رفت/ حذف گرديد';
$messages['foldersubscribed'] = 'پوشه با موفقیت مشترک شد.';
$messages['folderunsubscribed'] = 'پوشه با موفقیت لغو اشتراک شد.';
$messages['deletedsuccessfully'] = 'با موفقیت حذف شد';
$messages['converting'] = 'در حال پاک کردن ساختار';
$messages['messageopenerror'] = 'پيغام از سرور جريان کرده نتوانست';
$messages['filelinkerror'] = 'ضمیمه کردن پرونده شکست خورد.';
$messages['fileuploaderror'] = 'بارگزاری فايل با خطا مواجه شد.';
$messages['filesizeerror'] = 'تثبیت شده میباشد$size حجم فایل آپلود شده بیشتر از حجم کلی';
$messages['copysuccess'] = 'محتوای $nr با موفقیت کپی شد.';
$messages['sourceisreadonly'] = 'اجازه نمامه کود / منبع این آدرس قفط خواندنی است';
$messages['errorsavingcontact'] = 'ادرس این پیام را حفظکرده نتوانست';
$messages['movingmessage'] = 'ذر حال انتقال پیام...';
$messages['markingmessage'] = 'در حال نشانه گذاری پیغام(ها)...';
$messages['receiptsent'] = 'یک رسید برای ارسال کننده این پیام فرستاده شد.';
$messages['errorsendingreceipt'] = 'رسيد ارسال شده نتوانست';
$messages['nodeletelastidentity'] = 'شما این شناخت نامه را حذف کرده نمیتوانید. این آخرین شناخت نامه شما است.';
$messages['forbiddencharacter'] = 'نام پوشه دارای یک کرکتر ممنوعه است.';
$messages['selectimportfile'] = 'لطفاً یک فایل را برای آپلود کردن انتخاب نمایید.';
$messages['addresswriterror'] = 'کتابچه آدرس انتخاب شده دارای اجازه نامه نوشتاری نیست.';
$messages['importwait'] = 'در حال وارد کردن لطفا صبر کنید.';
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts, $skipped existing entries skipped</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'اجازه این عملکرد را ندارید';
$messages['smtperror'] = 'خطای SMTP: $msg';
$messages['contactrestored'] = 'دفتر نشانی(ها) با موفقیت بازیابی شد.';
$messages['groupdeleted'] = 'گروه با موفقیت حذف شد.';
$messages['grouprenamed'] = 'تغییر نام گروه با موفقیت انجام شد.';
$messages['groupcreated'] = 'گروه با موفقیت ایجاد شد';
$messages['messagedeleted'] = 'پیام(ها) با موفقیت حذف شدند.';
$messages['messagemoved'] = 'پیام(ها) با موفقیت منتقل شدند.';
$messages['messagecopied'] = 'پیام(ها) با موفقیت کپی شدند.';
$messages['messagemarked'] = 'پیام(ها) با موفقیت نشانه گذاری شدند.';
$messages['namecannotbeempty'] = 'نام نمی تواند خالی باشد.';
$messages['nametoolong'] = 'نام بسیار طولانی است.';
localization/ber/labels.inc000064400000001431151727150600011744 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization//labels.inc                                         |
 |                                                                       |
 | Language file of the Roundcube Webmail client                         |
 | Copyright (C) 2012, The Roundcube Dev Team                            |
 | Licensed under the GNU General Public License                         |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Madghis <mbuzakhar@armas.ly>                                  |
 +-----------------------------------------------------------------------+
*/

$labels['username'] = 'Izwel n';

localization/ms_MY/labels.inc000064400000025417151727150600012232 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Selamat datang ke $product';
$labels['username'] = 'Nama Pengguna';
$labels['password'] = 'Katalaluan';
$labels['server'] = 'Pelayan';
$labels['login'] = 'Log Masuk';
$labels['logout'] = 'Log Keluar';
$labels['mail'] = 'Mel';
$labels['settings'] = 'Tetapan';
$labels['addressbook'] = 'Buku Alamat';
$labels['inbox'] = 'Peti Masuk';
$labels['drafts'] = 'Draf';
$labels['sent'] = 'Hantar';
$labels['trash'] = 'Tong Sampah';
$labels['junk'] = 'Junk';
$labels['subject'] = 'Subjek';
$labels['from'] = 'Daripada';
$labels['to'] = 'Kepada';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Balasan Kepada';
$labels['followupto'] = 'Susulan Ke';
$labels['date'] = 'Tarikh';
$labels['size'] = 'Saiz';
$labels['priority'] = 'Prioriti';
$labels['organization'] = 'Organisasi';
$labels['readstatus'] = 'Status baca';
$labels['listoptions'] = 'Senarai pilihan';
$labels['mailboxlist'] = 'Folder';
$labels['messagesfromto'] = 'Mesej $from ke $to dari $count';
$labels['threadsfromto'] = 'Urutan $from ke $to dari $count';
$labels['messagenrof'] = 'Mesej $nr dari $count';
$labels['fromtoshort'] = '$from - $to dari $count';
$labels['copy'] = 'Salin';
$labels['move'] = 'Alih';
$labels['moveto'] = 'Alih ke...';
$labels['download'] = 'Muat Turun';
$labels['filename'] = 'Nama Fail';
$labels['filesize'] = 'Saiz Fail';
$labels['addtoaddressbook'] = 'Tambah ke buku alamat';
$labels['sun'] = 'Aha';
$labels['mon'] = 'Isn';
$labels['tue'] = 'Sel';
$labels['wed'] = 'Rab';
$labels['thu'] = 'Kha';
$labels['fri'] = 'Jum';
$labels['sat'] = 'Sab';
$labels['sunday'] = 'Ahad';
$labels['monday'] = 'Isnin';
$labels['tuesday'] = 'Selasa';
$labels['wednesday'] = 'Rabu';
$labels['thursday'] = 'Khamis';
$labels['friday'] = 'Jumaat';
$labels['saturday'] = 'Sabtu';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mac';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mei';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Ogo';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dis';
$labels['longjan'] = 'Januari';
$labels['longfeb'] = 'Februari';
$labels['longmar'] = 'March';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mei';
$labels['longjun'] = 'Jun';
$labels['longjul'] = 'Julai';
$labels['longaug'] = 'Ogos';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Disember';
$labels['today'] = 'Hari Ini';
$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Semak mesej baru';
$labels['compose'] = 'Karang mesej';
$labels['writenewmessage'] = 'Cipta mesej baru';
$labels['reply'] = 'Balas';
$labels['replytomessage'] = 'Balas mesej';
$labels['replytoallmessage'] = 'Balas kepada penghantar dan semua penerima';
$labels['replyall'] = 'Balas semua';
$labels['replylist'] = 'Senarai balas';
$labels['forward'] = 'Majukan';
$labels['forwardinline'] = 'Majukan dalam mesej';
$labels['forwardattachment'] = 'Majukan sebagai lampiran';
$labels['forwardmessage'] = 'Marakan mesej';
$labels['deletemessage'] = 'Pindah mesej ke sampah';
$labels['movemessagetotrash'] = 'Pindah mesej ke Tong Sampah';
$labels['printmessage'] = 'Cetak mesej ini';
$labels['previousmessage'] = 'Papar mesej sebelumnya';
$labels['firstmessage'] = 'Papar mesej pertama';
$labels['nextmessage'] = 'Papat mesej seterusnya';
$labels['lastmessage'] = 'Papat mesej terakhir';
$labels['backtolist'] = 'Kembali ke senarai mesej';
$labels['viewsource'] = 'Papar sumber';
$labels['mark'] = 'Tanda';
$labels['markmessages'] = 'Tanda mesej';
$labels['markread'] = 'Sebagai Dibaca';
$labels['markunread'] = 'Sebagai Tidak dibaca';
$labels['markflagged'] = 'Seperti  ditanda';
$labels['markunflagged'] = 'Seperti tidak ditanda';
$labels['moreactions'] = 'Tindakan lanjut..';
$labels['more'] = 'Seterusnya';
$labels['back'] = 'Kembali';
$labels['options'] = 'Opsyen';
$labels['select'] = 'Pilih';
$labels['all'] = 'Semua';
$labels['none'] = 'Tiada';
$labels['currpage'] = 'Muka terkini';
$labels['unread'] = 'Belum dibaca';
$labels['flagged'] = 'Ditanda';
$labels['unanswered'] = 'Belum dijawab';
$labels['deleted'] = 'Telah dipadam';
$labels['invert'] = 'Songsangkan';
$labels['filter'] = 'Tapis';
$labels['list'] = 'Senarai';
$labels['threads'] = 'Urutan';
$labels['expand-all'] = 'Buka Semua';
$labels['expand-unread'] = 'Buka yang belum dibaca';
$labels['collapse-all'] = 'Tutup Semua';
$labels['threaded'] = 'Telah urutan';
$labels['autoexpand_threads'] = 'Buka mesej mengikut urutan';
$labels['do_expand'] = 'Kesemua urutan';
$labels['expand_only_unread'] = 'hanya dengan mesej yang belum dibaca';
$labels['fromto'] = 'Daripada/Kepada';
$labels['flag'] = 'Tanda';
$labels['attachment'] = 'Lampiran';
$labels['nonesort'] = 'Tiada';
$labels['sentdate'] = 'Tarikh dihantar';
$labels['arrival'] = 'Tarikh terima';
$labels['asc'] = 'menaik';
$labels['desc'] = 'menurun';
$labels['listcolumns'] = 'Senarai ruang';
$labels['listsorting'] = 'pengisihan ruang';
$labels['listorder'] = 'Urutan pengisihan';
$labels['listmode'] = 'Mod senarai paparan';
$labels['layoutlist'] = 'Senarai';
$labels['folderactions'] = 'Aksi folder';
$labels['compact'] = 'Kompak';
$labels['empty'] = 'Kosong';
$labels['quota'] = 'Penggunaan cakera';
$labels['unknown'] = 'tidak diketahui';
$labels['unlimited'] = 'Tidak terhad';
$labels['quicksearch'] = 'Carian pantas';
$labels['resetsearch'] = 'Set semula carian';
$labels['searchmod'] = 'Pengubah carian';
$labels['msgtext'] = 'Keseluruhan mesej';
$labels['openinextwin'] = 'Buka dalam tetingkap baru';
$labels['emlsave'] = 'Muat-turun (.eml)';
$labels['editasnew'] = 'Ubah seperti baharu';
$labels['sendmessage'] = 'Hantar mesej';
$labels['savemessage'] = 'Simapan sebagai draf';
$labels['addattachment'] = 'Lampir fail';
$labels['charset'] = 'Set aksara';
$labels['editortype'] = 'Jenis Editor';
$labels['returnreceipt'] = 'Penerimaan semula';
$labels['dsn'] = 'Status pemberitahuan penghantaran';
$labels['mailreplyintro'] = 'Pada $date, $sender menulis';
$labels['originalmessage'] = 'Mesej Asal';
$labels['editidents'] = 'Ubah identiti';
$labels['spellcheck'] = 'Eja';
$labels['checkspelling'] = 'Semak ejaan';
$labels['resumeediting'] = 'Sambung pengeditan';
$labels['revertto'] = 'Kembali kepada';
$labels['attach'] = 'Lampirkan';
$labels['attachments'] = 'Lampiran';
$labels['upload'] = 'Muat naik';
$labels['close'] = 'Tutup';
$labels['messageoptions'] = 'Opsyen mesej';
$labels['low'] = 'Rendah';
$labels['lowest'] = 'Paling Rendah';
$labels['normal'] = 'Normal';
$labels['high'] = 'Tinggi';
$labels['highest'] = 'Paling Tinggi';
$labels['nosubject'] = '(tiada subjek)';
$labels['showimages'] = 'Papar imej';
$labels['alwaysshow'] = 'selalu paparkan imej dari $sender';
$labels['isdraft'] = 'Ini adalah draf mesej';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Teks kosong';
$labels['savesentmessagein'] = 'Simpan mesej yang telah dihantar dalam';
$labels['dontsave'] = 'Jangan simpan';
$labels['maxuploadsize'] = 'maksimum saiz fail yang dibenarkan ialah $size';
$labels['addcc'] = 'Tambah Cc';
$labels['addbcc'] = 'Tambah Bcc';
$labels['addreplyto'] = 'Tambah Reply-To';
$labels['addfollowupto'] = 'Tambah Followup-To';
$labels['mdnrequest'] = 'Pengirim mesej ini mahu diberitahu apabila anda membaca mesej ini. Adakah anda ingin memberitahu pengirim?';
$labels['receiptread'] = 'Balas Resip (dibaca)';
$labels['yourmessage'] = 'Ini adalah Resip Balasan untuk mesej anda';
$labels['receiptnote'] = 'Perhatian: Resip ini hanya untuk memberitahu yang mesej ini telah dipaparkan di komputer penerima. Tidak ada jaminan yang penerima telah membaca atau memahami kandungan mesej.';
$labels['name'] = 'Nama paparan';
$labels['firstname'] = 'Nama pertama';
$labels['surname'] = 'Nama akhir';
$labels['email'] = 'E-Mel';
$labels['editcontact'] = 'Ubahsuai Kontek';
$labels['edit'] = 'Sunting';
$labels['cancel'] = 'Batal';
$labels['save'] = 'Simpan';
$labels['delete'] = 'Padam';
$labels['deletecontact'] = 'Hapus kontek yang dipilih';
$labels['composeto'] = 'Karang mel kepada';
$labels['contactsfromto'] = 'Kontek $from ke $to dari $count';
$labels['print'] = 'Cetak';
$labels['export'] = 'Eksport';
$labels['previouspage'] = 'Papar set sebelumnya';
$labels['firstpage'] = 'Papar set pertama';
$labels['nextpage'] = 'Papar set seterusnya';
$labels['lastpage'] = 'Papar set akhir';
$labels['groups'] = 'Kumpulan';
$labels['personaladrbook'] = 'Alamat-alamat Peribadi';
$labels['settingsfor'] = 'Tetapan bagi';
$labels['preferences'] = 'Keutamaan';
$labels['userpreferences'] = 'Keutamaan pengguna';
$labels['editpreferences'] = 'Sunting keutamaan pengguna';
$labels['identities'] = 'Identiti';
$labels['preferhtml'] = 'Papar HTML';
$labels['htmlmessage'] = 'Mesej HTML';
$labels['prettydate'] = 'Tarikh-tarikh cantik';
$labels['setdefault'] = 'Tetap asal';
$labels['language'] = 'Bahasa';
$labels['timezone'] = 'Zon Masa';
$labels['pagesize'] = 'Baris setiap muka';
$labels['signature'] = 'Tandatangan';
$labels['dstactive'] = 'Simpanan siang hari';
$labels['htmleditor'] = 'Karang mesej HTML';
$labels['htmlsignature'] = 'Tandatangan HTML';
$labels['previewpane'] = 'Pamer ruang previu';
$labels['logoutclear'] = 'Kosongkan Tong sampah ketika keluar';
$labels['logoutcompact'] = 'Padatkan Inbox ketika keluar';
$labels['uisettings'] = 'Antaramuka Pengguna';
$labels['serversettings'] = 'Konfigurasi Pelayan';
$labels['mailboxview'] = 'Pandangan kotak Mel';
$labels['mdnrequests'] = 'Pemberitahuan Pengirim';
$labels['askuser'] = 'Tanya pengguna';
$labels['autosend'] = 'Hantar automatik';
$labels['readwhendeleted'] = 'Tanda mesej sebagai dibaca ketika hapus';
$labels['flagfordeletion'] = 'Tanda mesej untuk pembuangan (tidak delete terus)';
$labels['autosavedraft'] = 'Simpan draf dengan automatik';
$labels['never'] = 'tidak pernah';
$labels['folder'] = 'Kabinet Fail';
$labels['folders'] = 'Folder';
$labels['foldername'] = 'Nama Kabinet Fail';
$labels['subscribed'] = 'Dilanggan';
$labels['messagecount'] = 'Mesej-mesej';
$labels['create'] = 'Cipta';
$labels['createfolder'] = 'Cipta kabinet fail baru';
$labels['managefolders'] = 'Urus kabinet fail';
$labels['sortby'] = 'Susun dengan';
$labels['sortasc'] = 'Susun menaik';
$labels['sortdesc'] = 'Susun menurun';
localization/ms_MY/messages.inc000064400000010005151727150600012562 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['loginfailed']  = 'Log masuk gagal';
$messages['cookiesdisabled'] = 'Pelayar anda tidak menerima cookies';
$messages['sessionerror'] = 'Sesi anda tidak sah atau telah tamat';
$messages['storageerror'] = 'Sambungan ke pelayan IMAP gagal';
$messages['nomessagesfound'] = 'Tiada mesej dijumpai dalam kotak mel ini';
$messages['loading'] = 'Memuat...';
$messages['loadingdata'] = 'Memuat data...';
$messages['checkingmail'] = 'Menyemak mesej baru...';
$messages['sendingmessage'] = 'Menghantar mesej...';
$messages['messagesent'] = 'Mesej berjaya dihantar';
$messages['savingmessage'] = 'Menyimpan mesej...';
$messages['messagesaved'] = 'Mesej disimpan dalam Draf';
$messages['successfullysaved'] = 'Berjaya disimpan';
$messages['addedsuccessfully'] = 'Kontek berjaya disimpan ke dalam buku alamat';
$messages['blockedimages'] = 'Untuk melindungi kebesasan peribadi anda, imej jauh dihalang dalam mesej ini.';
$messages['encryptedmessage'] = 'Ini adalah mesej yang di\'encrypted\' dan tidak boleh dipamerkan. Maaf!';
$messages['nocontactsfound'] = 'Tiada kontek dijumpai';
$messages['contactnotfound'] = 'Kontek yang diminta tidak dijumpai';
$messages['sendingfailed'] = 'Gagal menghantar mesej';
$messages['errormoving'] = 'Tidak boleh pindah mesej';
$messages['errordeleting'] = 'Tidak boleh hapus mesej';
$messages['deletecontactconfirm']  = 'Adakah anda ingin hapuskan kontek yang dipilih?';
$messages['deletemessagesconfirm'] = 'Adakah anda ingin hapuskan mesej yang dipilih?';
$messages['deletefolderconfirm']  = 'Adakah anda ingin hapuskan kabinet fail ini?';
$messages['purgefolderconfirm']  = 'Adakah anda ingin hapuskan semua mesej dalam kabinet fail ini?';
$messages['formincomplete'] = 'Borang tidak diisi dengan lengkap';
$messages['noemailwarning'] = 'Sila masukkan alamat emel yang sah';
$messages['nonamewarning']  = 'Sila masukkan nama';
$messages['nopagesizewarning'] = 'Sila masukkan saiz halaman';
$messages['norecipientwarning'] = 'Sila masukkan sekurang-kurangnya satu penerima';
$messages['nosubjectwarning']  = 'Ruang "Subjek" kosong. Adakah anda ingin masukkannya sekarang?';
$messages['nobodywarning'] = 'Hantar mesej ini tanpa teks?';
$messages['nosearchname'] = 'Sila masukkan nama kontek atau alamat emel';
$messages['searchsuccessful'] = '$nr mesej dijumpai';
$messages['searchnomatch'] = 'Carian tiada padanan';
$messages['searching'] = 'Menggelintar...';
$messages['checking'] = 'Menyemak...';
$messages['nospellerrors'] = 'Tiada kesalah ejaan dijumpai';
$messages['folderdeleted'] = 'Kabinet fail berjaya dihapuskan';
$messages['deletedsuccessfully'] = 'Berjaya dihapuskan';
$messages['converting'] = 'Singkir format dari mesej...';
$messages['messageopenerror'] = 'Tidak boleh muat mesej dari server';
$messages['fileuploaderror'] = 'Muatnaik fail gagal';
$messages['filesizeerror'] = 'Fail yang dimuatnaik melampaui saiz maksima $size';
$messages['sourceisreadonly'] = 'Sumber alamat ini adalah untuk bacaan sahaja';
$messages['errorsavingcontact'] = 'Tidak boleh simmpan alamat kontek';
$messages['movingmessage'] = 'Memindah mesej...';
$messages['receiptsent'] = 'Berjaya menghantar resip bacaan';
$messages['errorsendingreceipt'] = 'Tidak dapat menghantar resip';
$messages['nodeletelastidentity'] = 'Anda tidak boleh membuang identiti ini, ia milik anda yang terakhir.';
localization/ug/timezones.inc000064400000055730151727150600012375 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'ئۇ ت س';
$labels['tz:africa'] = 'ئافرىقا';
$labels['tz:africa:abidjan'] = 'ئابىدجان';
$labels['tz:africa:accra'] = 'ئاككىرا';
$labels['tz:africa:addis_ababa'] = 'ئاددىس ئابابا';
$labels['tz:africa:algiers'] = 'ئالجىر';
$labels['tz:africa:asmara'] = 'ئاسمارا';
$labels['tz:africa:bamako'] = 'باماكو';
$labels['tz:africa:bangui'] = 'بانگى';
$labels['tz:africa:banjul'] = 'بانجۇل';
$labels['tz:africa:bissau'] = 'بىسساۋ';
$labels['tz:africa:blantyre'] = 'بلانتىر';
$labels['tz:africa:brazzaville'] = 'برادزاۋىل';
$labels['tz:africa:bujumbura'] = 'بۇجۇمبۇرا';
$labels['tz:africa:cairo'] = 'قاھىرە';
$labels['tz:africa:casablanca'] = 'كاسابىلانكا';
$labels['tz:africa:ceuta'] = 'چۇتا';
$labels['tz:africa:conakry'] = 'كوناكرى';
$labels['tz:africa:dakar'] = 'داقار';
$labels['tz:africa:dar_es_salaam'] = 'دارېسسالام';
$labels['tz:africa:djibouti'] = 'جىبوتى';
$labels['tz:africa:douala'] = 'دۇئالا';
$labels['tz:africa:el_aaiun'] = 'ئال ئايۇن';
$labels['tz:africa:freetown'] = 'فرىتاۋىن';
$labels['tz:africa:gaborone'] = 'گابورون';
$labels['tz:africa:harare'] = 'ھارارە';
$labels['tz:africa:johannesburg'] = 'جوھانىسبۇرگ';
$labels['tz:africa:juba'] = 'جۇبا';
$labels['tz:africa:kampala'] = 'كامپالا';
$labels['tz:africa:khartoum'] = 'قارتۇم';
$labels['tz:africa:kigali'] = 'قىغالى';
$labels['tz:africa:kinshasa'] = 'كىنشاسا';
$labels['tz:africa:lagos'] = 'لاگوس';
$labels['tz:africa:libreville'] = 'لىبرېۋىل';
$labels['tz:africa:lome'] = 'لومې';
$labels['tz:africa:luanda'] = 'لۇئاندا';
$labels['tz:africa:lubumbashi'] = 'لۇبۇمباشى';
$labels['tz:africa:lusaka'] = 'لۇساكا';
$labels['tz:africa:malabo'] = 'مالابو';
$labels['tz:africa:maputo'] = 'ماپۇتو';
$labels['tz:africa:maseru'] = 'ماسېرۇ';
$labels['tz:africa:mbabane'] = 'بابانە';
$labels['tz:africa:mogadishu'] = 'موغادىشۇ';
$labels['tz:africa:monrovia'] = 'مونراۋىيە';
$labels['tz:africa:nairobi'] = 'نايروبى';
$labels['tz:africa:ndjamena'] = 'جامېنا';
$labels['tz:africa:niamey'] = 'نىئامى';
$labels['tz:africa:nouakchott'] = 'نوۋاكشوت';
$labels['tz:africa:ouagadougou'] = 'ئوۋاگادوگو';
$labels['tz:africa:porto-novo'] = 'پورتونوۋو';
$labels['tz:africa:sao_tome'] = 'ساۋتومى';
$labels['tz:africa:tripoli'] = 'ترىپولى';
$labels['tz:africa:tunis'] = 'تۇنىس';
$labels['tz:africa:windhoek'] = 'ۋىندوق';
$labels['tz:america'] = 'ئامىركا';
$labels['tz:america:adak'] = 'ئاداق';
$labels['tz:america:anchorage'] = 'ئانقورىج';
$labels['tz:america:anguilla'] = 'ئانگىللا';
$labels['tz:america:antigua'] = 'ئانتىگىيە';
$labels['tz:america:araguaina'] = 'ئاراگۇاينا';
$labels['tz:america:argentina'] = 'ئارگېنتىنا';
$labels['tz:america:argentina:buenos_aires'] = 'بونىس ئايرىس';
$labels['tz:america:argentina:catamarca'] = 'كاتاماركا';
$labels['tz:america:argentina:cordoba'] = 'كوردوبا';
$labels['tz:america:argentina:jujuy'] = 'جۇجۇي';
$labels['tz:america:argentina:la_rioja'] = 'لارىيوجا';
$labels['tz:america:argentina:mendoza'] = 'مېندوزا';
$labels['tz:america:argentina:rio_gallegos'] = 'رىيو گاللىگوس';
$labels['tz:america:argentina:salta'] = 'سالتا';
$labels['tz:america:argentina:san_juan'] = 'سان جۇۋان';
$labels['tz:america:argentina:san_luis'] = 'سان لۇئىت';
$labels['tz:america:argentina:tucuman'] = 'تۇكۇمان';
$labels['tz:america:argentina:ushuaia'] = 'ئۇشۇۋايە';
$labels['tz:america:aruba'] = 'ئارۇبا';
$labels['tz:america:asuncion'] = 'ئاسۇنسىئون';
$labels['tz:america:atikokan'] = 'ئاتىكوكان';
$labels['tz:america:bahia'] = 'باخىيە';
$labels['tz:america:bahia_banderas'] = 'باخىيە باندېراس';
$labels['tz:america:barbados'] = 'باربادوس';
$labels['tz:america:belem'] = 'بەلەم';
$labels['tz:america:belize'] = 'بەلىزە';
$labels['tz:america:blanc-sablon'] = 'بىلانك-سابلون';
$labels['tz:america:boa_vista'] = 'بوۋا ۋىستا';
$labels['tz:america:bogota'] = 'بوگوتا';
$labels['tz:america:boise'] = 'بوئىزە';
$labels['tz:america:cambridge_bay'] = 'كامبرىج قولتۇقى';
$labels['tz:america:campo_grande'] = 'كامپو گراندى';
$labels['tz:america:cancun'] = 'قانقۇن';
$labels['tz:america:caracas'] = 'قاراقاس';
$labels['tz:america:cayenne'] = 'قايەننە';
$labels['tz:america:cayman'] = 'قايمان';
$labels['tz:america:chicago'] = 'چىكاگو';
$labels['tz:america:chihuahua'] = 'چىخاخا';
$labels['tz:america:costa_rica'] = 'كوستارىكا';
$labels['tz:america:creston'] = 'كرىستون';
$labels['tz:america:cuiaba'] = 'كۇيابا';
$labels['tz:america:curacao'] = 'كۇراساۋ';
$labels['tz:america:danmarkshavn'] = 'دانمارقشاۋىن';
$labels['tz:america:dawson'] = 'داۋسون';
$labels['tz:america:dawson_creek'] = 'داۋسون كىرىك';
$labels['tz:america:denver'] = 'دەنۋە';
$labels['tz:america:detroit'] = 'دىتروئىت';
$labels['tz:america:dominica'] = 'دومىنىك';
$labels['tz:america:edmonton'] = 'ئەدمونتون';
$labels['tz:america:eirunepe'] = 'ئەيرۇنەپە';
$labels['tz:america:el_salvador'] = 'ئەل سالۋادور';
$labels['tz:america:fort_nelson'] = 'فورت نېلسۇن';
$labels['tz:america:fortaleza'] = 'فورتالىزا';
$labels['tz:america:glace_bay'] = 'گلائىس قولتۇقى';
$labels['tz:america:godthab'] = 'كاتخوپ';
$labels['tz:america:goose_bay'] = 'گوئۇس قولتۇقى';
$labels['tz:america:grand_turk'] = 'گرانىت تۈرك';
$labels['tz:america:grenada'] = 'گرېنادا';
$labels['tz:america:guadeloupe'] = 'گۇۋادەلۇپى';
$labels['tz:america:guatemala'] = 'گۋاتېمالا';
$labels['tz:america:guayaquil'] = 'گۋاياكىل';
$labels['tz:america:guyana'] = 'گۇيانا';
$labels['tz:america:halifax'] = 'خالىفاكىس';
$labels['tz:america:havana'] = 'ھاۋانا';
$labels['tz:america:hermosillo'] = 'ھېرموسىللو';
$labels['tz:america:indiana'] = 'ئىندىئانا';
$labels['tz:america:indiana:indianapolis'] = 'ئىندىئاناپولىس';
$labels['tz:america:indiana:knox'] = 'كىنوكىس';
$labels['tz:america:indiana:marengo'] = 'مارېنگو';
$labels['tz:america:indiana:petersburg'] = 'پىتسىبورگ';
$labels['tz:america:indiana:tell_city'] = 'تېل شەھىرى';
$labels['tz:america:indiana:vevay'] = 'ۋەۋەي';
$labels['tz:america:indiana:vincennes'] = 'ۋىنچېنىس';
$labels['tz:america:indiana:winamac'] = 'ۋىناماق';
$labels['tz:america:inuvik'] = 'ئىنۇۋىك';
$labels['tz:america:iqaluit'] = 'ئىقالۇئىت';
$labels['tz:america:jamaica'] = 'يامايكا';
$labels['tz:america:juneau'] = 'جۇنىئو';
$labels['tz:america:kentucky'] = 'كېنتاكى';
$labels['tz:america:kentucky:louisville'] = 'لۇئىسۋىل';
$labels['tz:america:kentucky:monticello'] = 'مونتىچېلو';
$labels['tz:america:kralendijk'] = 'كرالېندىجىك';
$labels['tz:america:la_paz'] = 'لاپاز';
$labels['tz:america:lima'] = 'لىما';
$labels['tz:america:los_angeles'] = 'لوس ئانجىلىس';
$labels['tz:america:lower_princes'] = 'لوۋىر پرىنسەس';
$labels['tz:america:maceio'] = 'ماچېئو';
$labels['tz:america:managua'] = 'ماناگۇۋا';
$labels['tz:america:manaus'] = 'مانائۇس';
$labels['tz:america:marigot'] = 'مارىگوت';
$labels['tz:america:martinique'] = 'مارتىنىقۇ';
$labels['tz:america:matamoros'] = 'ماتامورۇس';
$labels['tz:america:mazatlan'] = 'مازاتلان';
$labels['tz:america:menominee'] = 'مېنومىنىي';
$labels['tz:america:merida'] = 'مېرىدا';
$labels['tz:america:metlakatla'] = 'مەتلاقاتلا';
$labels['tz:america:mexico_city'] = 'مېكسىكا شەھىرى';
$labels['tz:america:miquelon'] = 'مىقۇئىلون';
$labels['tz:america:moncton'] = 'مونتون';
$labels['tz:america:monterrey'] = 'مونتېررى';
$labels['tz:america:montevideo'] = 'مونتېۋىدىئو';
$labels['tz:america:montserrat'] = 'مونسەررات';
$labels['tz:america:nassau'] = 'ناساۋ';
$labels['tz:america:new_york'] = 'نىيو-يورۇك';
$labels['tz:america:nipigon'] = 'نىپىگون';
$labels['tz:america:nome'] = 'نومى';
$labels['tz:america:noronha'] = 'نورونا';
$labels['tz:america:north_dakota'] = 'شىمالىي داكوتا';
$labels['tz:america:north_dakota:beulah'] = 'بىئۇلاخ';
$labels['tz:america:north_dakota:center'] = 'مەركەز';
$labels['tz:america:north_dakota:new_salem'] = 'يېڭى سەلىم';
$labels['tz:america:ojinaga'] = 'ئوجىناگا';
$labels['tz:america:panama'] = 'پاناما';
$labels['tz:america:pangnirtung'] = 'پاڭنىرتۇڭ';
$labels['tz:america:paramaribo'] = 'پارامارىبو';
$labels['tz:america:phoenix'] = 'فىنىكىس';
$labels['tz:america:port-au-prince'] = 'پورت-ئو-پرىنس';
$labels['tz:america:port_of_spain'] = 'ئىسپانىيە پورتى';
$labels['tz:america:porto_velho'] = 'پورتو ۋېلو';
$labels['tz:america:puerto_rico'] = 'پۇئېرتورىكو';
$labels['tz:america:rainy_river'] = 'رېينى دەرياسى';
$labels['tz:america:rankin_inlet'] = 'رەنكىن ئىنلەت';
$labels['tz:america:recife'] = 'رەچىفە';
$labels['tz:america:regina'] = 'رېجىنا';
$labels['tz:america:resolute'] = 'رېسولۇتى';
$labels['tz:america:rio_branco'] = 'رىئو برانكو';
$labels['tz:america:santarem'] = 'سانتارەم';
$labels['tz:america:santiago'] = 'سانتىياگو';
$labels['tz:america:santo_domingo'] = 'سانتا دومىنگو';
$labels['tz:america:sao_paulo'] = 'ساۋ پاۋلو';
$labels['tz:america:scoresbysund'] = 'سكورىسبىسۇند';
$labels['tz:america:sitka'] = 'سىتكا';
$labels['tz:america:st_barthelemy'] = 'سانت بارتېلىمى';
$labels['tz:america:st_johns'] = "سانت جونىس";
$labels['tz:america:st_kitts'] = 'سانت كىتىس';
$labels['tz:america:st_lucia'] = 'سانتا لۇچىيا';
$labels['tz:america:st_thomas'] = 'سانت توماس';
$labels['tz:america:st_vincent'] = 'سانت ۋىنچېنت';
$labels['tz:america:swift_current'] = 'سىۋىفت كارىنت';
$labels['tz:america:tegucigalpa'] = 'تېگۇچىگالفا';
$labels['tz:america:thule'] = 'تۇلى';
$labels['tz:america:thunder_bay'] = 'ساندىر قولتۇقى';
$labels['tz:america:tijuana'] = 'تىجۇۋانا';
$labels['tz:america:toronto'] = 'تورونتو';
$labels['tz:america:tortola'] = 'تورتولا';
$labels['tz:america:vancouver'] = 'ۋانكۇۋېر';
$labels['tz:america:whitehorse'] = 'ۋايىتخورس';
$labels['tz:america:winnipeg'] = 'ۋىننىپەگ';
$labels['tz:america:yakutat'] = 'ياقۇتات';
$labels['tz:america:yellowknife'] = 'يەلونايىف';
$labels['tz:antarctica'] = 'ئانتىراكتىكا';
$labels['tz:antarctica:casey'] = 'كاسىي';
$labels['tz:antarctica:davis'] = 'دەۋىس';
$labels['tz:antarctica:dumontdurville'] = "دۇمونت دۇرۋىل";
$labels['tz:antarctica:macquarie'] = 'ماقىۋارى';
$labels['tz:antarctica:mawson'] = 'ماۋسون';
$labels['tz:antarctica:mcmurdo'] = 'مىكمۇردو';
$labels['tz:antarctica:palmer'] = 'پالمىر';
$labels['tz:antarctica:rothera'] = 'روتېرا';
$labels['tz:antarctica:syowa'] = 'سىيوۋا';
$labels['tz:antarctica:troll'] = 'تىرول';
$labels['tz:antarctica:vostok'] = 'ۋوستوق';
$labels['tz:arctic'] = 'قۇتۇپ';
$labels['tz:arctic:longyearbyen'] = 'لوڭيىربىيەن';
$labels['tz:asia'] = 'ئاسىيا';
$labels['tz:asia:aden'] = 'ئادەن';
$labels['tz:asia:almaty'] = 'ئالمۇتا';
$labels['tz:asia:amman'] = 'ئاممان';
$labels['tz:asia:anadyr'] = 'ئانادىر';
$labels['tz:asia:aqtau'] = 'ئاقتاۋ';
$labels['tz:asia:aqtobe'] = 'ئاقتۆپە';
$labels['tz:asia:ashgabat'] = 'ئاشىغئابات';
$labels['tz:asia:atyrau'] = 'ئاتىراۋ';
$labels['tz:asia:baghdad'] = 'باغداد';
$labels['tz:asia:bahrain'] = 'باخرائىن';
$labels['tz:asia:baku'] = 'باقۇ';
$labels['tz:asia:bangkok'] = 'بانكوك';
$labels['tz:asia:barnaul'] = 'بارنائۇل';
$labels['tz:asia:beirut'] = 'بەيرۇت';
$labels['tz:asia:bishkek'] = 'بىشكەك';
$labels['tz:asia:brunei'] = 'بىرۇنىي';
$labels['tz:asia:chita'] = 'كىتا';
$labels['tz:asia:choibalsan'] = 'قويبالسان';
$labels['tz:asia:colombo'] = 'كولومبو';
$labels['tz:asia:damascus'] = 'دەمەشق';
$labels['tz:asia:dhaka'] = 'داخا';
$labels['tz:asia:dili'] = 'دىلى';
$labels['tz:asia:dubai'] = 'دۇبەي';
$labels['tz:asia:dushanbe'] = 'دۈشەنبە';
$labels['tz:asia:famagusta'] = 'فاماگۇستا';
$labels['tz:asia:gaza'] = 'غەززە';
$labels['tz:asia:hebron'] = 'خېبىروئىن';
$labels['tz:asia:ho_chi_minh'] = 'خوكىمىن';
$labels['tz:asia:hong_kong'] = 'شاڭگاڭ';
$labels['tz:asia:hovd'] = 'خوۋىد';
$labels['tz:asia:irkutsk'] = 'ئىركۇتسىك';
$labels['tz:asia:jakarta'] = 'جاكارتا';
$labels['tz:asia:jayapura'] = 'جاياپۇرا';
$labels['tz:asia:jerusalem'] = 'ئېرۇسالىم';
$labels['tz:asia:kabul'] = 'كابۇل';
$labels['tz:asia:kamchatka'] = 'كامچاتكا';
$labels['tz:asia:karachi'] = 'كاراچى';
$labels['tz:asia:kathmandu'] = 'كاتماندۇ';
$labels['tz:asia:khandyga'] = 'كاندىگا';
$labels['tz:asia:kolkata'] = 'كولكاتا';
$labels['tz:asia:krasnoyarsk'] = 'كراسنويارسىك';
$labels['tz:asia:kuala_lumpur'] = 'كۇلا-لامپۇر';
$labels['tz:asia:kuching'] = 'كۇچىڭ';
$labels['tz:asia:kuwait'] = 'كۇۋەيت';
$labels['tz:asia:macau'] = 'ئاۋمىن';
$labels['tz:asia:magadan'] = 'ماغادان';
$labels['tz:asia:makassar'] = 'ماكاسسار';
$labels['tz:asia:manila'] = 'مانىلا';
$labels['tz:asia:muscat'] = 'مۇسقات';
$labels['tz:asia:nicosia'] = 'نىكوسىيە';
$labels['tz:asia:novokuznetsk'] = 'نوۋوكۇزنەتسىك';
$labels['tz:asia:novosibirsk'] = 'نوۋوسىبىرسىك';
$labels['tz:asia:omsk'] = 'ئومسىق';
$labels['tz:asia:oral'] = 'ئورال';
$labels['tz:asia:phnom_penh'] = 'پىنوم پىن';
$labels['tz:asia:pontianak'] = 'پونتىياناق';
$labels['tz:asia:pyongyang'] = 'پيوڭياڭ';
$labels['tz:asia:qatar'] = 'قاتار';
$labels['tz:asia:qyzylorda'] = 'قىزىلئوردا';
$labels['tz:asia:riyadh'] = 'رىياد';
$labels['tz:asia:sakhalin'] = 'ساخالىن';
$labels['tz:asia:samarkand'] = 'سەمەرقەنت';
$labels['tz:asia:seoul'] = 'سىئول';
$labels['tz:asia:shanghai'] = 'شاڭخەي';
$labels['tz:asia:singapore'] = 'سىنگاپور';
$labels['tz:asia:srednekolymsk'] = 'سىرەدنەكولىسىك';
$labels['tz:asia:taipei'] = 'تەيبېي';
$labels['tz:asia:tashkent'] = 'تاشكەنت';
$labels['tz:asia:tbilisi'] = 'تىبىلىسى';
$labels['tz:asia:tehran'] = 'تېھران';
$labels['tz:asia:thimphu'] = 'تىمپۇ';
$labels['tz:asia:tokyo'] = 'توكيو';
$labels['tz:asia:tomsk'] = 'تومسىق';
$labels['tz:asia:ulaanbaatar'] = 'ئۇلانباتۇر';
$labels['tz:asia:urumqi'] = 'ئۈرۈمچى';
$labels['tz:asia:ust-nera'] = 'ئۇست-نېرا';
$labels['tz:asia:vientiane'] = 'ۋىئېنتىئانە';
$labels['tz:asia:vladivostok'] = 'ۋىلادىۋوستوق';
$labels['tz:asia:yakutsk'] = 'ياكۇتىسك';
$labels['tz:asia:yangon'] = 'يانگون';
$labels['tz:asia:yekaterinburg'] = 'ياكاتېرىنبۇرگ';
$labels['tz:asia:yerevan'] = 'يەرەۋان';
$labels['tz:atlantic'] = 'ئاتلانتىك';
$labels['tz:atlantic:azores'] = 'ئازورىس';
$labels['tz:atlantic:bermuda'] = 'بېرمۇدا';
$labels['tz:atlantic:canary'] = 'كانارىي';
$labels['tz:atlantic:cape_verde'] = 'كاپى ۋېردى';
$labels['tz:atlantic:faroe'] = 'فاروئە';
$labels['tz:atlantic:madeira'] = 'مادېيرا';
$labels['tz:atlantic:reykjavik'] = 'رەيجاۋىك';
$labels['tz:atlantic:south_georgia'] = 'جەنۇبىي گرۇزىيە';
$labels['tz:atlantic:st_helena'] = 'سانت ھەلەنا';
$labels['tz:atlantic:stanley'] = 'ستېيىنلى';
$labels['tz:australia'] = 'ئاۋىسترالىيە';
$labels['tz:australia:adelaide'] = 'ئادېلايدې';
$labels['tz:australia:brisbane'] = 'برىسبانە';
$labels['tz:australia:broken_hill'] = 'بىروۋكىن خىل';
$labels['tz:australia:currie'] = 'كۇررىي';
$labels['tz:australia:darwin'] = 'دارۋىن';
$labels['tz:australia:eucla'] = 'يۇكىلا';
$labels['tz:australia:hobart'] = 'خوبارت';
$labels['tz:australia:lindeman'] = 'لىندېمان';
$labels['tz:australia:lord_howe'] = 'لورد خوۋىي';
$labels['tz:australia:melbourne'] = 'مېلبورن';
$labels['tz:australia:perth'] = 'پېرىس';
$labels['tz:australia:sydney'] = 'سىدنى';
$labels['tz:europe'] = 'ياۋروپا';
$labels['tz:europe:amsterdam'] = 'ئامىستىردام';
$labels['tz:europe:andorra'] = 'ئاندوررا';
$labels['tz:europe:astrakhan'] = 'ئاستراخان';
$labels['tz:europe:athens'] = 'ئافىنا';
$labels['tz:europe:belgrade'] = 'بېلگرادى';
$labels['tz:europe:berlin'] = 'بېرلىن';
$labels['tz:europe:bratislava'] = 'براتىسلاۋىيە';
$labels['tz:europe:brussels'] = 'بىريۇكسىل';
$labels['tz:europe:bucharest'] = 'بۇچارىست';
$labels['tz:europe:budapest'] = 'بۇداپىشت';
$labels['tz:europe:busingen'] = 'بۇسىنجىن';
$labels['tz:europe:chisinau'] = 'كىسىناۋ';
$labels['tz:europe:copenhagen'] = 'كوپىنھاگىن';
$labels['tz:europe:dublin'] = 'دۇبلىن';
$labels['tz:europe:gibraltar'] = 'جىبرالتار';
$labels['tz:europe:guernsey'] = 'گېرنىزى';
$labels['tz:europe:helsinki'] = 'خېلسىنكى';
$labels['tz:europe:isle_of_man'] = 'مان ئارىلى';
$labels['tz:europe:istanbul'] = 'ئىستانبۇل';
$labels['tz:europe:jersey'] = 'جېرسى';
$labels['tz:europe:kaliningrad'] = 'كالىنىنگرات';
$labels['tz:europe:kiev'] = 'كىيىۋ';
$labels['tz:europe:kirov'] = 'كىروۋ';
$labels['tz:europe:lisbon'] = 'لىزبۇن';
$labels['tz:europe:ljubljana'] = 'لۇبىلىئانا';
$labels['tz:europe:london'] = 'لوندون';
$labels['tz:europe:luxembourg'] = 'لىيۇكسىنبۇرگ';
$labels['tz:europe:madrid'] = 'مادىرىد';
$labels['tz:europe:malta'] = 'مالتا';
$labels['tz:europe:mariehamn'] = 'مارىھامىن';
$labels['tz:europe:minsk'] = 'مىنسىق';
$labels['tz:europe:monaco'] = 'موناكو';
$labels['tz:europe:moscow'] = 'موسكىۋا';
$labels['tz:europe:oslo'] = 'ئوسلو';
$labels['tz:europe:paris'] = 'پارىژ';
$labels['tz:europe:podgorica'] = 'پودگورىكا';
$labels['tz:europe:prague'] = 'پىراگ';
$labels['tz:europe:riga'] = 'رىگا';
$labels['tz:europe:rome'] = 'رىم';
$labels['tz:europe:samara'] = 'سامارە';
$labels['tz:europe:san_marino'] = 'سان مارىنو';
$labels['tz:europe:sarajevo'] = 'ساراجېۋو';
$labels['tz:europe:saratov'] = 'ساراتوۋ';
$labels['tz:europe:simferopol'] = 'سىمفېروپول';
$labels['tz:europe:skopje'] = 'سىكوپىيە';
$labels['tz:europe:sofia'] = 'سوفىيە';
$labels['tz:europe:stockholm'] = 'ستوكخولىم';
$labels['tz:europe:tallinn'] = 'تاللىن';
$labels['tz:europe:tirane'] = 'تىرانە';
$labels['tz:europe:ulyanovsk'] = 'ئۇلىئانوۋىسك';
$labels['tz:europe:uzhgorod'] = 'ئۇزغوروت';
$labels['tz:europe:vaduz'] = 'ۋادۇز';
$labels['tz:europe:vatican'] = 'ۋاتىكان';
$labels['tz:europe:vienna'] = 'ۋىيېنا';
$labels['tz:europe:vilnius'] = 'ۋىلنىئۇس';
$labels['tz:europe:volgograd'] = 'ۋولگوگرات';
$labels['tz:europe:warsaw'] = 'ۋارشاۋا';
$labels['tz:europe:zagreb'] = 'زاگرىپ';
$labels['tz:europe:zaporozhye'] = 'زاپوروژى';
$labels['tz:europe:zurich'] = 'سيۇرىخ';
$labels['tz:indian'] = 'ھىندى';
$labels['tz:indian:antananarivo'] = 'ئانتانانارىۋو';
$labels['tz:indian:chagos'] = 'چاگوس';
$labels['tz:indian:christmas'] = 'روجىستىۋا';
$labels['tz:indian:cocos'] = 'كوكوس';
$labels['tz:indian:comoro'] = 'كومورو';
$labels['tz:indian:kerguelen'] = 'كېرگېلەن';
$labels['tz:indian:mahe'] = 'ماخې';
$labels['tz:indian:maldives'] = 'مولداۋا';
$labels['tz:indian:mauritius'] = 'ماۋرىتۇس';
$labels['tz:indian:mayotte'] = 'مايوتتى';
$labels['tz:indian:reunion'] = 'رىئۇنىئون';
$labels['tz:pacific'] = 'تىنچ ئوكيان';
$labels['tz:pacific:apia'] = 'ئاپىيا';
$labels['tz:pacific:auckland'] = 'ئاقلەندىيە';
$labels['tz:pacific:bougainville'] = 'بۇگانىۋىل';
$labels['tz:pacific:chatham'] = 'چاتام';
$labels['tz:pacific:chuuk'] = 'چۇك';
$labels['tz:pacific:easter'] = 'ئىستىر';
$labels['tz:pacific:efate'] = 'ئېفاتې';
$labels['tz:pacific:enderbury'] = 'ئەندەربۇرى';
$labels['tz:pacific:fakaofo'] = 'فاكاۋفو';
$labels['tz:pacific:fiji'] = 'فىجى';
$labels['tz:pacific:funafuti'] = 'فۇنافۇتى';
$labels['tz:pacific:galapagos'] = 'گالاپاگوس';
$labels['tz:pacific:gambier'] = 'گامبىيىر';
$labels['tz:pacific:guadalcanal'] = 'گۋادالقانال';
$labels['tz:pacific:guam'] = 'گۇئام';
$labels['tz:pacific:honolulu'] = 'ھونولو';
$labels['tz:pacific:johnston'] = 'جونسىتون';
$labels['tz:pacific:kiritimati'] = 'كىرىتىماتى';
$labels['tz:pacific:kosrae'] = 'كوسرائە';
$labels['tz:pacific:kwajalein'] = 'كۋاجالىن';
$labels['tz:pacific:majuro'] = 'ماجۇرو';
$labels['tz:pacific:marquesas'] = 'ماركىساس';
$labels['tz:pacific:midway'] = 'مىدۋاي';
$labels['tz:pacific:nauru'] = 'ناۋرۇ';
$labels['tz:pacific:niue'] = 'نىيۇئېي';
$labels['tz:pacific:norfolk'] = 'نورفولك';
$labels['tz:pacific:noumea'] = 'نۇمىئا';
$labels['tz:pacific:pago_pago'] = 'پاگو پاگو';
$labels['tz:pacific:palau'] = 'پالاۋ';
$labels['tz:pacific:pitcairn'] = 'پىتكارىن';
$labels['tz:pacific:pohnpei'] = 'پونپىي';
$labels['tz:pacific:port_moresby'] = 'مورېسبىي پورتى';
$labels['tz:pacific:rarotonga'] = 'راروتونگا';
$labels['tz:pacific:saipan'] = 'سايپەن';
$labels['tz:pacific:tahiti'] = 'تاخىتى';
$labels['tz:pacific:tarawa'] = 'تاراۋا';
$labels['tz:pacific:tongatapu'] = 'تونگاتاپۇ';
$labels['tz:pacific:wake'] = 'ۋېيك';
$labels['tz:pacific:wallis'] = 'ۋاللىس';
localization/ug/labels.inc000064400000131272151727150600011616 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product غا خۇش كەلدىڭىز';
$labels['username'] = 'ئىشلەتكۈچى نامى';
$labels['password'] = 'مەخپىي نۇمۇر';
$labels['server'] = 'مۇلازىمېتىر';
$labels['login'] = 'كىرىش';
$labels['oauthlogin'] = '$تەمىنلىگۈچى بىلەن كىرىش';
$labels['menu'] = 'تىزىملىك';
$labels['logout'] = 'چىكىنىش';
$labels['mail'] = 'خەت';
$labels['settings'] = 'تەڭشەك';
$labels['addressbook'] = 'ئادىرىس دەپتىرى';
$labels['darkmode'] = 'قاراڭغۇ ھالەت';
$labels['lightmode'] = 'يۇرۇق ھالەت';
$labels['inbox'] = 'كىلىش ساندۇقى';
$labels['drafts'] = 'قوليازمىلار';
$labels['sent'] = 'ئەۋەتىلگەن';
$labels['trash'] = 'ئەخلەت';
$labels['junk'] = 'ئەخلەت';
$labels['show_real_foldernames'] = 'ئالاھىدە قىسقۇچلارنىڭ ھەقىقىي ئىسمىنى كۆرسىتىڭ';
$labels['subject'] = 'تىما';
$labels['from'] = 'دىن';
$labels['sender'] = 'ئەۋەتكۈچى';
$labels['to'] = 'غا';
$labels['cc'] = 'قۇشۇمچە';
$labels['bcc'] = 'ب چ چ';
$labels['replyto'] = 'غا جاۋاپ قايتۇرۇش';
$labels['followupto'] = 'غا ئەگىشىش';
$labels['date'] = 'چېسلا';
$labels['size'] = 'چوڭلۇق';
$labels['priority'] = 'مۇھىملىق دەرىجىسى';
$labels['organization'] = 'ئورگان';
$labels['readstatus'] = 'ئۇقۇش ھالىتى';
$labels['listoptions'] = 'تاللانمىلارنى تىزىش...';
$labels['listoptionstitle'] = 'تاللانمىلارنى تىزىش';
$labels['mailboxlist'] = 'قىسقۇچلار';
$labels['messagesfromto'] = 'from$نىڭ to$گە ئەۋەتكەن count$-ئۇچۇرى';
$labels['threadsfromto'] = 'from$نىڭ to$گە ئەۋەتكەن count$-يىپى';
$labels['messagenrof'] = 'nr/$count$ خەت';
$labels['fromtoshort'] = 'to  - $from$ جەمئىي count$';
$labels['copy'] = 'كۆچۈرۈش';
$labels['move'] = 'يۆتكەش';
$labels['moveto'] = '...غا يۆتكەش';
$labels['copyto'] = '...غا كۆچۈرۈش';
$labels['download'] = 'چۈشۈرۈش';
$labels['open'] = 'ئېچىش';
$labels['showattachment'] = 'كۆرسىتىش';
$labels['showanyway'] = 'بەرىبىر ئۇنى كۆرسىتىڭ';
$labels['filename'] = 'ھۆججەت ئىسمى';
$labels['filesize'] = 'ھۆججەت چوڭلۇقى';
$labels['addtoaddressbook'] = 'ئادىرىس دەپتىرىگە قېتىش';
$labels['sun'] = 'يەكشەنبە';
$labels['mon'] = 'دۈشەنبە';
$labels['tue'] = 'سەيشەنبە';
$labels['wed'] = 'چارشەنبە';
$labels['thu'] = 'پەيشەنبە';
$labels['fri'] = 'جۈمە';
$labels['sat'] = 'شەنبە';
$labels['sunday'] = 'يەكشەنبە';
$labels['monday'] = 'دۈشەنبە';
$labels['tuesday'] = 'سەيشەنبە';
$labels['wednesday'] = 'چارشەنبە';
$labels['thursday'] = 'پەيشەنبە';
$labels['friday'] = 'جۈمە';
$labels['saturday'] = 'شەنبە';
$labels['jan'] = 'يانۋار';
$labels['feb'] = 'فېۋرال';
$labels['mar'] = 'مارت';
$labels['apr'] = 'ئاپرىل';
$labels['may'] = 'ماي';
$labels['jun'] = 'ئىيۇن';
$labels['jul'] = 'ئىيۇل';
$labels['aug'] = 'ئاۋغۇست';
$labels['sep'] = 'سىنتەبىر';
$labels['oct'] = 'ئۆكتەبىر';
$labels['nov'] = 'نويابىر';
$labels['dec'] = 'دېكابىر';
$labels['longjan'] = 'يانۋار';
$labels['longfeb'] = 'فېۋرال';
$labels['longmar'] = 'مارت';
$labels['longapr'] = 'ئاپرىل';
$labels['longmay'] = 'ماي';
$labels['longjun'] = 'ئىيۇن';
$labels['longjul'] = 'ئىيۇل';
$labels['longaug'] = 'ئاۋغۇست';
$labels['longsep'] = 'سىنتەبىر';
$labels['longoct'] = 'ئۆكتەبىر';
$labels['longnov'] = 'نويابىر';
$labels['longdec'] = 'دېكابىر';
$labels['today'] = 'بۈگۈن';
$labels['refresh'] = 'يېڭىلاش';
$labels['checkmail'] = 'يېڭى خەتلەرنى تەكشۈرۈش';
$labels['compose'] = 'يېزىش';
$labels['writenewmessage'] = 'يېڭى خەت يېزىش';
$labels['reply'] = 'جاۋاپ قايتۇرۇش';
$labels['replytomessage'] = 'ئەۋەتكۈچىگە جاۋاپ بېزىش';
$labels['replytoallmessage'] = 'تىزىملىككە ياكى ئەۋەتكۈچى بىلەن بارلىق تاپشۇرۋالغۇچىلارغا جاۋاپ قايتۇرۇش';
$labels['replyall'] = 'ھەممىسىگە جاۋاپ قايتۇرۇش';
$labels['replylist'] = 'تىزىملىككە جاۋاپ قايتۇرۇش';
$labels['forward'] = 'يوللاش';
$labels['forwardinline'] = 'يېڭى ھالەتتە يوللاش';
$labels['forwardattachment'] = 'قىستۇرما ھالەتتە يوللاش';
$labels['forwardmessage'] = 'بۇ خەتنى يوللاش';
$labels['bouncemsg'] = 'قايتا ئەۋەتىش(قاڭقىتىش)';
$labels['bounce'] = 'قايتا ئەۋەتىش';
$labels['deletemessage'] = 'خەتنى ئۆچۈرۈش';
$labels['movemessagetotrash'] = 'خەتنى ئەخلەت چېلىكىگە سېلىش';
$labels['printmessage'] = 'بۇ خەتنى بېسىپ چىقىرىش';
$labels['previousmessage'] = 'ئالدىنقى خەتنى كۆرسىتىش';
$labels['firstmessage'] = 'بىرىنچى خەتنى كۆرسىتىش';
$labels['nextmessage'] = 'كىيىنكى خەتنى كۆرسىتىش';
$labels['lastmessage'] = 'ئاخىرقى خەتنى كۆرسىتىش';
$labels['backtolist'] = 'خەت تىزىملىكىگە قايتىش';
$labels['viewsource'] = 'مەنبەسىنى كۆرسىتىش';
$labels['mark'] = 'بەلگە قۇيۇش';
$labels['markmessages'] = 'خەتكە بەلگە قۇيۇش';
$labels['markread'] = 'ئۇقۇغان';
$labels['markunread'] = 'ئۇقۇمىغان';
$labels['markflagged'] = 'بايراقلانغان';
$labels['markunflagged'] = 'بايراقسىزلانغان';
$labels['markundeleted'] = 'ئۆچۈرۈلمىگەن';
$labels['moreactions'] = 'تېخىمۇ كۆپ ھەركەت';
$labels['markallread'] = 'ھەممىگە ئوقۇغان بەلگىسىنى قۇيۇش';
$labels['folders-cur'] = 'پەقەتلا تاللانغان قىسقۇچ';
$labels['folders-sub'] = 'تاللانغان قىسقۇچ ھەمدە ئۇنىڭ بالا-قىسقۇچلىرى';
$labels['folders-all'] = 'ھەممە قىسقۇچلار';
$labels['more'] = 'تېخىمۇ كۆپ';
$labels['back'] = 'قايتىش';
$labels['options'] = 'تاللانمىلار';
$labels['composeoptions'] = 'تاللانما قۇرۇش';
$labels['optionsandattachments'] = 'تاللانمىلار ھەمدە قىستۇرمىلار';
$labels['actions'] = 'ھەركەتلەر';
$labels['first'] = 'تۇنجى';
$labels['last'] = 'ئاخىرقى';
$labels['previous'] = 'ئالدىنقى';
$labels['next'] = 'كىيىنكى';
$labels['select'] = 'تاللاڭ';
$labels['selection'] = 'تاللاش';
$labels['all'] = 'ھەممە';
$labels['none'] = 'ھېچنىمە';
$labels['currpage'] = 'نۆۋەتتىكى بەت';
$labels['isread'] = 'ئۇقۇش';
$labels['unread'] = 'ئۇقۇماسلىق';
$labels['flagged'] = 'بايراقلانغان';
$labels['unflagged'] = 'بايراقلانمىغان';
$labels['unanswered'] = 'جاۋاپ قايتۇرمىغان';
$labels['withattachment'] = 'قىستۇرمىلىق';
$labels['deleted'] = 'ئۆچۈرۋەتكەن';
$labels['undeleted'] = 'ئۆچۈرۋەتمىگەن';
$labels['replied'] = 'جاۋاپ قايتۇرغان';
$labels['forwarded'] = 'يوللىغان';
$labels['invert'] = 'تەتۈرلەش';
$labels['filter'] = 'سۈزگۈچ';
$labels['list'] = 'تىزىملىك';
$labels['threads'] = 'يىپلار';
$labels['expand-all'] = 'ھەممىنى يېيىش';
$labels['expand-unread'] = 'ئوقۇلمىغاننى يېيىش';
$labels['collapse-all'] = 'ھەممىنى يېيىش';
$labels['threaded'] = 'يىپلانغان';
$labels['showunread'] = 'ئوقۇلمىغان خەتلەرنى كۆرسىتىش';
$labels['autoexpand_threads'] = 'خەت يىپلىرىنى كۆرسىتىش';
$labels['do_expand'] = 'ھەممە يىپلار';
$labels['expand_only_unread'] = 'پەقەتلا ئوقۇلمىغان خەتلەرنىڭ';
$labels['fromto'] = 'دىن/غا';
$labels['flag'] = 'بايراق';
$labels['attachment'] = 'قىستۇرما';
$labels['nonesort'] = 'ھېچنىمە';
$labels['sentdate'] = 'ئەۋەتىلگەن چېسلا';
$labels['arrival'] = 'كەلگەن چېسلا';
$labels['asc'] = 'چوڭايغان';
$labels['desc'] = 'كىچىكلىگەن';
$labels['listcolumns'] = 'قۇرلارنى تىزىش';
$labels['listsorting'] = 'قۇرلارنى رەتلەش';
$labels['listorder'] = 'رەتلەش تەرتىپى';
$labels['listmode'] = 'كۆرۈش ھالىتىنى تىزىش';
$labels['lmode'] = 'ھالەتنى تىزىش';
$labels['layout'] = 'قۇرۇلما';
$labels['layoutwidescreen'] = 'كەڭرى ئېكران';
$labels['layoutdesktop'] = 'ئۈستەل يۈزى';
$labels['layoutlist'] = 'تىزىملىك';
$labels['layoutwidescreendesc'] = 'كەڭ ئېكران(3-قۇرلۇق كۆرۈنۈش)';
$labels['layoutdesktopdesc'] = 'ئۈستەل يۈزى(كەڭرى تىزىملىك ھەمدە خەتنى تۆۋەندە ئالدىن كۆرسىتىش)';
$labels['layoutlistdesc'] = 'تىزىملىك (خەتنى ئالدىن كۆرسىتىش يوق)';
$labels['folderactions'] = 'قىسقۇچ ھەركەتلىرى...';
$labels['compact'] = 'ئىخچام';
$labels['empty'] = 'قۇرۇق';
$labels['importmessages'] = 'خەتلەرنى كىرگۈزۈش';
$labels['mailimportdesc'] = 'سىز خەتنى <a href="https://en.wikipedia.org/wiki/Email#Message_format"> MIME </a> ياكى <a href="https://en.wikipedia.org/wiki/Mbox"> Mbox </a> فورماتىدىكى ھۆججەتلەرنى ئىشلىتىپ چىقىرالايسىز.';
$labels['mailimportzip'] = 'كۆپلىگەن ھۆججەتلەرنى زىپ ئارخىپىغا سىققىلى بۇلىدۇ.';
$labels['quota'] = 'دىسكا ئىشلىتىشچانلىقى';
$labels['unknown'] = 'ناتۇنۇش';
$labels['unlimited'] = 'چەكسىز';
$labels['quotatype'] = 'بەلگىلەنگەن مىقدار تۈرى';
$labels['quotatotal'] = 'چەك';
$labels['quotaused'] = 'ئىشلەتكەن';
$labels['quotastorage'] = 'دىسكا بوشلۇقى';
$labels['quotamessage'] = 'خەت سانى';
$labels['shortheaderdate'] = '$چېسلادا';
$labels['shortheaderto'] = 'to$ غا date$دا';
$labels['shortheaderfrom'] = 'from$ دىن date$ دا';
$labels['quicksearch'] = 'تېز ئىزدەش';
$labels['searchplaceholder'] = 'ئىزدەش...';
$labels['resetsearch'] = 'ئىزدەشنى ئەسلىگە قايتۇرۇش';
$labels['searchmod'] = 'ئىزدەش ئۆزگەرتكۈچلىرى';
$labels['msgtext'] = 'پۈتۈن خەت';
$labels['body'] = 'مەزمۇن';
$labels['type'] = 'تۈرى';
$labels['namex'] = 'ئىسمى';
$labels['searchscope'] = 'دائىرە';
$labels['currentfolder'] = 'نۆۋەتتىكى قىسقۇچ';
$labels['subfolders'] = 'بۇ ھەمدە بالا-قىسقۇچلار';
$labels['allfolders'] = 'ھەممە قىسقۇچلار';
$labels['searchinterval-1W'] = 'بىر ھەپتىدىن بۇرۇنقى';
$labels['searchinterval-1M'] = 'بىر ئايدىن بۇرۇنقى';
$labels['searchinterval-1Y'] = 'بىر يىلدىن بۇرۇنقى';
$labels['searchinterval1W'] = 'بىر ھەپتىن بۇيانقى';
$labels['searchinterval1M'] = 'بىر ئايدىن بۇيانقى';
$labels['searchinterval1Y'] = 'بىر يىلدىن بۇيانقى';
$labels['openinextwin'] = 'يېڭى كۆزنەكتە ئېچىش';
$labels['emlsave'] = 'چۈشۈرۈش (.ئېلخەت)';
$labels['changeformattext'] = 'ئاددىي تېكىست ھالەتتە كۆرسىتىش';
$labels['changeformathtml'] = 'HTML ھالەتتە كۆرسىتىش';
$labels['editasnew'] = 'يېڭى ھالەتتە تەھرىرلەش';
$labels['send'] = 'ئەۋەتىش';
$labels['sendmessage'] = 'خەتنى ئەۋەتىش';
$labels['savemessage'] = 'قوليازما ھالەتتە ساقلاش';
$labels['addattachment'] = 'بىر ھۆججەت قىستۇرۇش';
$labels['charset'] = 'خەت بولىقى';
$labels['editortype'] = 'تەھرىرلەش تۈرى';
$labels['returnreceipt'] = 'تاپشۇرۋالغۇچىنى قايتۇرۇش';
$labels['dsn'] = 'يەتكۈزۈش ئەھۋالى ئۇقتۇرۇشى';
$labels['keepformatting'] = 'داۋاملىق فورماتلاش';
$labels['mailreplyintro'] = 'date$ دا، sender$ يازدى:';
$labels['originalmessage'] = 'ئەسلىي خەت';
$labels['selectimage'] = 'رەسىم تاللاش';
$labels['addimage'] = 'رەسىم قېتىش';
$labels['selectmedia'] = 'كىنو تاللاش';
$labels['addmedia'] = 'كىنو قېتىش';
$labels['encrypt'] = 'شىفىرلاش';
$labels['encryptmessage'] = 'خەتنى شىفىرلاش';
$labels['encryptmessagemailvelope'] = 'خەتنى Mailvelope بىلەن شىفىرلاش';
$labels['importpubkeys'] = 'ئاممىۋى ئاچقۇچلارنى كىرگۈزۈش';
$labels['encryptedsendialog'] = 'شىفىرلانغان ئۇچۇرنى يوللاۋاتىدۇ';
$labels['encryptandsign'] = 'شىفىرلاش ھەمدە ئىمزا قۇيۇش';
$labels['keyid'] = 'ئاچقۇچ نۇمۇرى';
$labels['keylength'] = 'بىتلار';
$labels['keyexpired'] = 'ۋاقتى ئۆتكەن';
$labels['keyrevoked'] = 'قايتۇرۋالغان';
$labels['bccinstead'] = 'ب چ چىنى ئىشلىتىش';
$labels['addheader'] = 'تاپشۇرۋالغۇچى قېتىش (باشلانما)';
$labels['insert'] = 'كىرگۈزۈش';
$labels['insertcontact'] = 'تۇنۇش(لار) قېتىش';
$labels['recipient'] = 'تاپشۇرۋالغۇچى';
$labels['recipientedit'] = 'تاپشۇرۋالغۇچىنى تەھرىرلەش';
$labels['editidents'] = 'كىملىكلەرنى تەھرىرلەش';
$labels['spellcheck'] = 'ئىملا';
$labels['checkspelling'] = 'ئىملا تەكشۈرۈش';
$labels['resumeediting'] = 'تەھرىرلەشنى داۋاملاشتۇرۇش';
$labels['revertto'] = 'قايتۇرۇش';
$labels['restore'] = 'ئەسلىگە قايتۇرۇش';
$labels['restoremessage'] = 'ئۇچۇرنى ئەسلىگە قايتۇرامسىز؟';
$labels['ignore'] = 'كارىم يوق';
$labels['responses'] = 'ئىنكاسلار';
$labels['insertresponse'] = 'بىر ئىنكاس يېزىش';
$labels['manageresponses'] = 'ئىنكاسلارنى باشقۇرۇش';
$labels['newresponse'] = 'يېڭى ئىنكاس يېزىش';
$labels['addresponse'] = 'ئىنكاس قېتىش';
$labels['editresponse'] = 'ئىنكاسنى تەھرىرلەش';
$labels['editresponses'] = 'ئىنكاسلارنى تەھرىرلەش';
$labels['responsename'] = 'ئىسمى';
$labels['responsetext'] = 'ئىنكاس تېكىستى';
$labels['attach'] = 'قىستۇرۇش';
$labels['attachments'] = 'قىستۇرمىلار';
$labels['upload'] = 'چىقىرىش';
$labels['uploadprogress'] = 'percent$ (total$ نىڭ current$ )';
$labels['close'] = 'تاقاش';
$labels['messageoptions'] = 'خەت تاللانمىلىرى...';
$labels['togglecomposeoptions'] = 'يېزىش تاللانمىلىرىنى بار-يوق قىلىش';
$labels['attachmentrename'] = 'قىستۇرمىغا يېڭى ئىسىم قۇيۇش';
$labels['low'] = 'تۆۋەن';
$labels['lowest'] = 'ئەڭ تۆۋەن';
$labels['normal'] = 'نورمال';
$labels['high'] = 'يۇقىرى';
$labels['highest'] = 'ئەڭ يۇقىرى';
$labels['nosubject'] = '(تېما يوق)';
$labels['showimages'] = 'رەسىملەرنى كۆرسىتىش';
$labels['allow'] = 'يول قۇيۇش';
$labels['alwaysshow'] = 'sender$ نىڭ رەسىملىرىنى دائىم كۆرسىتىش';
$labels['alwaysallow'] = 'sender$ دىن كەلسە دائىم يول قۇيۇش';
$labels['isdraft'] = 'بۇ يولسا بىر قوليازما خەت';
$labels['andnmore'] = 'nr$ تېخىمۇ كۆپ...';
$labels['details'] = 'تەپسىلاتلار';
$labels['summary'] = 'خۇلاسە';
$labels['headers'] = 'باشلانمىلار';
$labels['allheaders'] = 'بارلىق باشلانمىلار...';
$labels['togglemoreheaders'] = 'تېخىمۇ كۆپ خەت باشلانمىلىرىنى كۆرسىتىش';
$labels['togglefullheaders'] = 'خام ئۇچۇر باشلانمىلىرىنى بار-يوق قىلىش';
$labels['htmltoggle'] = 'خ ت م ل';
$labels['plaintoggle'] = 'ئاددىي تېكىست';
$labels['savesentmessagein'] = 'يوللىغان ئۇچۇرنى ساقلاش';
$labels['dontsave'] = 'ساقلىماسلىق';
$labels['maxuploadsize'] = 'يول قۇيۇلغان ئەڭ چوڭ ھۆججەت چوڭلۇقى بولسا size$';
$labels['addcc'] = 'قۇشۇمچە قېتىش';
$labels['addbcc'] = 'ب چ چ قېتىش';
$labels['addreplyto'] = 'جاۋاپ قايتۇرۇشنى قېتىش';
$labels['addfollowupto'] = 'داۋاملاشتۇرۇش قېتىش';
$labels['sendreceipt'] = 'ئۇقۇش تىلخېتىنى ئەۋەتەمسىز؟';
$labels['mdnrequest'] = 'بۇ خەتنى ئەۋەتكۈچى سىز خەتنى ئۇقۇغاندا ئۇقتۇرۇلۇشنى سورىدى. سىز ئەۋەتكۈچىگە ئۇقتۇرۇشنى خالامسىز؟';
$labels['receiptread'] = 'تېلىخەتنى قايتۇرۇش(ئۇقۇغان)';
$labels['yourmessage'] = 'بۇ بولسا ئۇچۇرىڭىزنىڭ قايتۇرما تېلىخېتى';
$labels['receiptnote'] = 'ئۇقتۇرۇش: بۇ تالون پەقەتلا خەتنىڭ تاپشۇرۋالغۇچىنىڭ كومپىيوتېرىدا كۆرسىتىلگەنلىكىنى ئېتراپ قىلىدۇ. تاپشۇرۋالغۇچىنىڭ خەتنى ئۇقۇغانلىقىنى ياكى خەت مەزمۇنىنى چۈشەنگەنلىكىگە كاپالەتلىك قىلمايدۇ.';
$labels['sendalwaysto'] = 'دائىم email$ غا ئەۋەتىش';
$labels['zoomin'] = 'چوڭايتىش';
$labels['zoomout'] = 'كىچىكلەشتۈرۈش';
$labels['rotate'] = 'ئايلاندۇرۇش';
$labels['increaseimage'] = 'رەسىم چوڭلۇقىنى ئاشۇرۇش';
$labels['decreaseimage'] = 'رەسىم چوڭلۇقىنى كىچىكلىتىش';
$labels['rotateimage'] = 'رەسىمنى ئايلاندۇرۇش';
$labels['showtools'] = 'رەسىم قوراللىرىنى كۆرسىتىش';
$labels['hidetools'] = 'رەسىم قوراللىرىنى يۇشۇرۇش';
$labels['name'] = 'ئىسمىنى كۆرسىتىش';
$labels['firstname'] = 'ئىسمى';
$labels['surname'] = 'فامىلىسى';
$labels['middlename'] = 'ئوتتۇرانچى ئىسمى';
$labels['nameprefix'] = 'ئالدى قۇشۇمچە';
$labels['namesuffix'] = 'ئارقا قۇشۇمچە';
$labels['nickname'] = 'تەخەللۇس';
$labels['jobtitle'] = 'خىزمەت ئۇنىۋانى';
$labels['department'] = 'بۆلۈم';
$labels['gender'] = 'جىنسى';
$labels['maidenname'] = 'توي قىلىشتىن بۇرۇنقى فامىلىسى';
$labels['email'] = 'ئېلىخەت';
$labels['phone'] = 'تېلىفۇن';
$labels['address'] = 'ئادىرىس';
$labels['street'] = 'كوچا';
$labels['locality'] = 'شەھەر';
$labels['zipcode'] = 'پوچتا نۇمۇرى';
$labels['region'] = 'ۋىلايەت';
$labels['country'] = 'دۆلەت';
$labels['birthday'] = 'تۇغۇلغان كۈن';
$labels['anniversary'] = 'خاتىرە كۈن';
$labels['website'] = 'توربەت';
$labels['instantmessenger'] = 'ئى م';
$labels['notes'] = 'خاتىرە';
$labels['male'] = 'ئەر';
$labels['female'] = 'ئايال';
$labels['manager'] = 'دېرىكتور';
$labels['assistant'] = 'ياردەمچى';
$labels['spouse'] = 'جۈپتى';
$labels['allfields'] = 'بارلىق ئورۇنلار';
$labels['search'] = 'ئىزدەش';
$labels['searchresult'] = 'ئىزدەش نەتىنجىسى';
$labels['advsearch'] = 'ئالاھىدە ئىزدەش';
$labels['advanced'] = 'ئالاھىدە';
$labels['other'] = 'باشقا';
$labels['printcontact'] = 'تۇنۇشنى بېسىپ چىقىرىش';
$labels['qrcode'] = 'ئىككىلىك كود';
$labels['typehome'] = 'ئۆي';
$labels['typework'] = 'خىزمەت';
$labels['typeother'] = 'باشقا';
$labels['typemobile'] = 'كۆچمە';
$labels['typemain'] = 'ئاساسىي';
$labels['typehomefax'] = 'ئۆي فاكىس';
$labels['typeworkfax'] = 'خىزمەت فاكىسى';
$labels['typecar'] = 'ماشىنا';
$labels['typepager'] = 'بەتكۈچ';
$labels['typevideo'] = 'سىن';
$labels['typeassistant'] = 'ياردەمچى';
$labels['typehomepage'] = 'باشبەت';
$labels['typeblog'] = 'بىلوگ';
$labels['typeprofile'] = 'تەرجىمال';
$labels['addfield'] = 'ئورۇن قېتىش...';
$labels['addcontact'] = 'تونۇش قېتىش';
$labels['editcontact'] = 'تونۇشنى تەھرىرلەش';
$labels['contacts'] = 'تونۇشلار';
$labels['contactproperties'] = 'تونۇش خاسلىقلىرى';
$labels['contactnameandorg'] = 'ئىسم ۋە ئورگان';
$labels['personalinfo'] = 'شەخسىي ئۇچۇر';
$labels['personal'] = 'شەخسىي';
$labels['contactphoto'] = 'تونۇش رەسىمى';
$labels['edit'] = 'تەھرىرلەش';
$labels['cancel'] = 'ئەمەلدىن قالدۇرۇش';
$labels['save'] = 'ساقلاش';
$labels['delete'] = 'ئۆچۈرۈش';
$labels['discard'] = 'تاشلاش';
$labels['continue'] = 'داۋاملاشتۇرۇش';
$labels['ok'] = 'ھەئە';
$labels['rename'] = 'يېڭى ئىسىم قۇيۇش';
$labels['addphoto'] = 'قېتىش';
$labels['replacephoto'] = 'ئالماشتۇرۇش';
$labels['uploadphoto'] = 'رەسىم چىقىرىش';
$labels['choosefile'] = 'ھۆججەت تاللاش...';
$labels['choosefiles'] = 'ھۆججەتلەرنى تاللاش...';
$labels['browse'] = 'كۆز يۈرگۈزۈش';
$labels['newcontact'] = 'يېڭى تۇنۇش قۇرۇش';
$labels['deletecontact'] = 'تاللانغان تۇنۇشلارنى ئۆچۈرۈش';
$labels['composeto'] = 'غا خەت قۇرۇش';
$labels['contactsfromto'] = 'from$دىن to$غا جەمئىي count$ تۇنۇش';
$labels['print'] = 'بېسىش';
$labels['export'] = 'چىقىرىش';
$labels['exportall'] = 'ھەممىنى چىقىرىش';
$labels['exportsel'] = 'تاللانغاننى چىقىرىش';
$labels['exportvcards'] = 'تۇنۇشلارنى ۋكارتىسى فورماتىدا چىقىرىش';
$labels['newgroup'] = 'يېڭى توپ قۇرۇش';
$labels['addgroup'] = 'توپ قېتىش';
$labels['grouprename'] = 'توپ ئىسمىنى يېڭىلاش';
$labels['groupdelete'] = 'توپنى ئۆچۈرۈش';
$labels['groupassign'] = 'توپقا بەلگىلەش';
$labels['groupremove'] = 'توپتىن چىقىرىش';
$labels['groupremoveselected'] = 'تاللانغان تۇنۇشلارنى توپتىن چىقىرىش';
$labels['uponelevel'] = 'بىر دەرىجە ئۆستۈرۈش';
$labels['previouspage'] = 'ئالدىنقى بەتنى كۆرسىتىش';
$labels['firstpage'] = 'تۇنجى بەتنى كۆرسىتىش';
$labels['nextpage'] = 'كىيىنكى بەتنى كۆرسىتىش';
$labels['lastpage'] = 'ئاخىرقى بەتنى كۆرسىتىش';
$labels['group'] = 'توپ';
$labels['groups'] = 'توپلار';
$labels['listgroup'] = 'توپ ئەزالىرىنى تىزىش';
$labels['personaladrbook'] = 'شەخسىي ئادىرىسلار';
$labels['searchsave'] = 'ئىزدەشنى ساقلاش';
$labels['searchdelete'] = 'ئىزدەشنى ئۆچۈرۈش';
$labels['import'] = 'كىرگۈزۈش';
$labels['importcontacts'] = 'تۇنۇشلارنى كىرگۈزۈش';
$labels['importfromfile'] = 'ھۆججەتتىن كىرگۈزۈش';
$labels['importtarget'] = 'تۇنۇشلارنى قېتىش';
$labels['importreplace'] = 'پۈتۈن ئادرىس دەپتىرىنى ئالماشتۇرۇش';
$labels['importgroups'] = 'توپ تاپشۇرۇقلىرىنى كىرگۈزۈش';
$labels['importgroupsall'] = 'بارلىق (زۆرۆر تېپىلسا توپ قۇرۇش)';
$labels['importgroupsexisting'] = 'پەقەتلا مەۋجۇت توپلار ئۈچۈن';
$labels['importdesc'] = 'سىز مەۋجۇت ئادىرىس دەپتىرىدىن تۇنۇشلارنى چىقىرالايسىز. <br/>بىز نۆۋەتتە ئادىرىسلارنى <a href="https://en.wikipedia.org/wiki/VCard"> ۋىكارتىسى </a> ياكى س ئەس ۋ (پەش بىلەن ئايرىلغان) ئۇچۇر فورماتىدا كىرگۈزۈشنى قوللايمىز.';
$labels['importmapdesc'] = 'س ئەس ۋ (پەش بىلەن ئايرىلغان) ئۇچۇرىنى كىرگۈزۈشتىن بۇرۇن تۆۋەندىكى ئورۇن خەرىتىلەش ئۇچۇرىنىڭ توغىرلىقىنى جەزىملەشتۈرۈڭ.';
$labels['fieldnotmapped'] = 'ئورۇن خەرىتىلەنمىدى (كىرگۈزمەڭ)';
$labels['skipheader'] = 'بىرىنچى قۇرنى كىرگۈزمەڭ (باشلانمىلار)';
$labels['done'] = 'پۈتتى';
$labels['settingsfor'] = 'تەڭشىكى';
$labels['about'] = 'ھەققىدە';
$labels['preferences'] = 'مايىللىقلار';
$labels['userpreferences'] = 'ئىشلەتكۈچى مايىللىقلىرى';
$labels['editpreferences'] = 'ئىشلەتكۈچى مايىللىقلىرىنى تەھرىرلەش';
$labels['identities'] = 'كىملىكلەر';
$labels['manageidentities'] = 'كىملىكلەرنى باشقۇرۇش';
$labels['newidentity'] = 'يېڭى كىملىك قۇرۇش';
$labels['addidentity'] = 'كىملىك قۇشۇش';
$labels['editidentity'] = 'كىملىكنى تەھرىرلەش';
$labels['identityencryption'] = 'شىفىرلاش';
$labels['preferhtml'] = 'خ ت م ل نى كۆرسىتىش';
$labels['defaultcharset'] = 'ئەسلىدىكى يېزىق بولىقى';
$labels['htmlmessage'] = 'خ ت م ل ئۇچۇرى';
$labels['messagepart'] = 'بۆلەك';
$labels['digitalsig'] = 'رەقەملىك ئىمزا';
$labels['dateformat'] = 'چېسلا شەكلى';
$labels['timeformat'] = 'ۋاقىت شەكلى';
$labels['prettydate'] = 'ئۇماق چېسلالار';
$labels['setdefault'] = 'سۈكۈتنى بېكىتىش';
$labels['autodetect'] = 'ئاپتۇماتىك';
$labels['language'] = 'تىل';
$labels['timezone'] = 'ۋاقىت رايۇنى';
$labels['pagesize'] = 'بەت قۇرى';
$labels['signature'] = 'ئىمزا';
$labels['dstactive'] = 'يازلىق ۋاقىت قىسقىرىشى';
$labels['showinextwin'] = 'خەتنى يېڭى كۆزنەكتە ئېچىش';
$labels['composeextwin'] = 'يېڭى كۆزنەكتە يېزىش';
$labels['htmleditor'] = 'خ ت م ل ئۇچۇر يېزىش';
$labels['htmlonreply'] = 'خ ت م ل ئۇچۇرىغا جاۋاپ قايتۇرغاندا';
$labels['htmlonreplyandforward'] = 'خ ت م ل ئۇچۇرىغا جاۋاپ قايتۇرغاندا ياكى يەتكۈزگەندە';
$labels['htmlsignature'] = 'خ ت م ل ئىمزا';
$labels['showemail'] = 'ئېلىخەت ئادىرسىنى ئىسمى بىلەن كۆرسىتىش';
$labels['previewpane'] = 'ئالدىن كۆرۈش تاختىسىنى كۆرسىتىش';
$labels['skin'] = 'ئۇلىنىش ئېغىزى تېرىسى';
$labels['logoutclear'] = 'چېكىنگەندە ئەخلەت چېلىكىنى قۇرۇقداش';
$labels['logoutcompact'] = 'چېكىنگەندە كىلىش ساندۇقىنى ئىخچاملاش';
$labels['uisettings'] = 'ئىشلەتكۈچى ئۇلىنىش ئېغىزى';
$labels['serversettings'] = 'مۇلازىمېتىر تەڭشىكى';
$labels['mailboxview'] = 'خەت ساندۇقى كۆرۈنۈشى';
$labels['mdnrequests'] = 'تېلىخەت قايتۇرۇش تەلىپىگە بىنائەن';
$labels['askuser'] = 'مەندىن سوراڭ';
$labels['autosend'] = 'تېلخەت ئەۋەتىش';
$labels['autosendknown'] = 'تېلخەتنى مېنىڭ تۇنۇشلىرىمغا ئەۋەتىڭ، بولمىسا مەندىن سوراڭ';
$labels['autosendknownignore'] = 'تېلخەتنى مېنىڭ تۇنۇشلىرىمغا ئەۋەتىڭ، بولمىسا كارىڭىز بولمىسۇن';
$labels['autosendtrusted'] = 'تېلىخەتنى ئىشەنچلىك ئەۋەتكۈچىلەرگە ئەۋەتىڭ، بولمىسا مەندىن سوراڭ';
$labels['autosendtrustedignore'] = 'تېلخەتنى ئىشەنچلىك ئەۋەتكۈچىلەرگە ئەۋەتىڭ، بولمىسا كارىڭىز بولمىسۇن';
$labels['ignorerequest'] = 'تەلەپكە كارىڭىز بولمىسۇن';
$labels['readwhendeleted'] = 'خەتنى ئۆچۈرگەندە ئۇقۇغانلىق بەلگىسىنى قۇيۇش';
$labels['flagfordeletion'] = 'خەتنى ئۆچۈرۋەتكەندىن كۆرە ئۆچۈرۈلۈش بەلگىسىنى قۇيۇش';
$labels['skipdeleted'] = 'ئۆچۈرۋەتكەن ئۇچۇرلارنى كۆرسەتمەڭ';
$labels['deletealways'] = 'ئۇچۇرلارنى ئەخلەت چېلىكىگە يۆتكەش مەغلۇپ بولسا، ئۇلارنى ئۆچۈرۈڭ';
$labels['deletejunk'] = 'ئەخلەت چېلىكىدىكى ئۇچۇرلارنى بىۋاستە ئۆچۈرۋېتىڭ';
$labels['showremoteimages'] = 'يىراقتىكى ئەسكەرتىش رەسىملىرىنى كۆرسىتىش';
$labels['allowremoteresources'] = 'يىراقتىكى مەنبەلەرگە ئىجازەت بېرىش(رەسىم، ئۇسلۇب)';
$labels['fromknownsenders'] = 'تۇنۇش ئەۋەتكۈچىلەردىن';
$labels['fromtrustedsenders'] = 'ئىشەنچلىك ئەۋەتكۈچىلەردىن';
$labels['frommycontacts'] = 'تۇنۇشلىرىمدىن';
$labels['always'] = 'دائىم';
$labels['alwaysbutplain'] = 'دائىم، ئاددىي تېكىستقا جاۋاپ بەرگەندىن باشقا';
$labels['showinlineimages'] = 'خەتكە قىستۇرۇلغان رەسىملەرنى ئاستىدا كۆرسىتىڭ';
$labels['autosavedraft'] = 'قوليازمىنى ئاپتۇماتىك ساقلاڭ';
$labels['everynminutes'] = 'ھەر n$ مىنۇت(لار)دا';
$labels['refreshinterval'] = 'يېڭىلاش (يېڭى ئۇچۇرنى تەكشۈرۈش، قاتارلىق)';
$labels['never'] = 'ھەرگىز';
$labels['immediately'] = 'دەرھال';
$labels['messagesdisplaying'] = 'خەتلەرنى كۆرسىتىش';
$labels['messagescomposition'] = 'خەتلەرنى يېزىش';
$labels['mimeparamfolding'] = 'قىستۇرۇلغان ئىسىملار';
$labels['2231folding'] = 'پۈتۈن ر ف س 2231 (چاقماققۇش)';
$labels['miscfolding'] = 'ر ف س 2047/2231 (مىكروسوفىت Outlook)';
$labels['2047folding'] = 'پۈتۈن ر ف س 2047 (باشقا)';
$labels['force7bit'] = '8-بىتلىق خەتلەرگە MIME شىفىرىنى ئىشلىتىڭ';
$labels['savelocalstorage'] = "تور كۆرگۈچنىڭ يەرلىك بوشلۇقىغا ساقلاش (ۋاقىتلىق)";
$labels['advancedoptions'] = 'ئالاھىدە تاللانمىلار';
$labels['toggleadvancedoptions'] = 'ئالاھىدە تاللانمىلارنى بار-يوق قىلىش';
$labels['focusonnewmessage'] = 'تور كۆرگۈچنىڭ كۆزنىكىنى يېڭى خەتكە مەركەزلەشتۈرۈڭ';
$labels['checkallfolders'] = 'يېڭى ئۇچۇرنى ھەممە قىسقۇچلاردىن تەكشۈرۈش';
$labels['displaynext'] = 'ئۆچۈرۈش/چىقىرۋېتىشتىن كىيىن تىزىملىكنىڭ كىيىنكى قۇرىنى كۆرسىتىش';
$labels['defaultfont'] = 'خ ت م ل ئۇچۇرىنىڭ ئەسلىي خەت شەكلى';
$labels['mainoptions'] = 'ئاساسىي تاللانمىلار';
$labels['browseroptions'] = 'تور كۆرگۈچ تاللانمىلىرى';
$labels['section'] = 'بۆلەك';
$labels['maintenance'] = 'ئاسىراش';
$labels['newmessage'] = 'يېڭى خەت';
$labels['signatureoptions'] = 'ئىمزا تاللانمىلىرى';
$labels['whenreplying'] = 'جاۋاپ قايتۇرغاندا';
$labels['replyempty'] = 'ئەسلىدىكى خەتنى نەقىل كەلتۈرمەڭ';
$labels['replytopposting'] = 'نەقىلنىڭ ئۈستىدە يېڭى خەت يېزىش';
$labels['replytoppostingnoindent'] = 'نەقىلنىڭ ئۈستىدە يېڭى خەت يېزىش (بوش ئورۇن يوق)';
$labels['replybottomposting'] = 'نەقىلنىڭ ئاستىدا يېڭى خەت يېزىش';
$labels['replyremovesignature'] = 'جاۋاپ قايتۇرغاندا ئەسلىي ئىمزانى خەتتىن ئۆچۈرۋېتىش';
$labels['autoaddsignature'] = 'ئاپتۇماتىك ئىمزا قۇيۇش';
$labels['newmessageonly'] = 'يېڭى خەتكىلا';
$labels['replyandforwardonly'] = 'جاۋاپ قايتۇرۇش ۋە يەتكۈزۈشكىلا';
$labels['insertsignature'] = 'ئىمزا قۇيۇش';
$labels['sigbelow'] = 'ئىمزانى نەقىللىگەن ئۇچۇرنىڭ ئاستىغا قۇيۇش';
$labels['sigseparator'] = 'ئىمزالاردا ئۆلچەملىك ئايرىغۇچنى مەجبۇرى قۇيۇش';
$labels['automarkread'] = 'خەتكە ئۇقۇغان بەلگىسىنى قۇيۇش';
$labels['afternseconds'] = 'n$ سىكونتتىن كىيىن';
$labels['reqmdn'] = 'قايتۇرۇش تېلىخېتىنى دائىم تەلەپ قىلىش';
$labels['reqdsn'] = 'ئەۋەتىش ئەھۋالى ئۇقتۇرۇشىنى دائىم تەلەپ قىلىش';
$labels['replysamefolder'] = 'جاۋاپ خەتنى جاۋاپ قايتۇرۇلغان ئۇچۇر قىسقۇچىغا قۇيۇش';
$labels['defaultabook'] = 'سۈكۈتتىكى ئادىرىس دەپتىرى';
$labels['autocompletesingle'] = 'ئاپتۇماتىك پۈتكۈزۈشتە ئىككىنچى ئېلىخەت ئادىرىسلىرىنى تاشلاش';
$labels['listnamedisplay'] = 'تۇنۇشلارنى سۈپىتىدە تىزىش';
$labels['contactformmode'] = 'تۇنۇش جەدىۋېلى ھالىتى';
$labels['privatemode'] = 'شەخسىي (ئۆي)';
$labels['businessmode'] = 'سودا (خىزمەت)';
$labels['collectedaddresses'] = 'يىغىلغان ئادىرىسلار';
$labels['collectedrecipients'] = 'يىغىلغان تاپشۇرۋالغۇچىلار';
$labels['collectedrecipientsopt'] = 'ئەۋەتىلدىغان ئېلىخەتنىڭ تاپشۇرۋالغۇچىلىرىنى ساقلايدىغان ئورۇن';
$labels['collectedsendersopt'] = 'ئىشەنچلىك ئەۋەتكۈچىلەرنى ساقلاش';
$labels['trustedsenders'] = 'ئىشەنچلىك ئەۋەتكۈچىلەر';
$labels['spellcheckbeforesend'] = 'خەتنى ئەۋەتىشتىن بۇرۇن ئىملا تەكشۈرۈش';
$labels['spellcheckoptions'] = 'ئىملا تەكشۈرۈش تاللانمىلىرى';
$labels['spellcheckignoresyms'] = 'بەلگىلىك سۆزلەرنى ئۆتكۈزۋېتىش';
$labels['spellcheckignorenums'] = 'رەقەملىك سۆزلەرنى ئۆتكۈزۋېتىش';
$labels['spellcheckignorecaps'] = 'ھەممە ھەرىپ چوڭ يېزىلغان سۆزلەرنى ئۆتكۈزۋېتىش';
$labels['addtodict'] = 'لۇغەتكە قېتىش';
$labels['mailtoprotohandler'] = 'خەت ئەۋەتىش ئۈچۈن كىلىشىمنامە بىر-تەرەپ قىلغۇچنى تىزىملىتىش: ئۇلىنىشلار';
$labels['standardwindows'] = 'سەكرەلمىلەرنى ئۆلچەملىك كۆزنەك سۈپىتىدە بىر-تەرەپ قىلىش';
$labels['forwardmode'] = 'خەت يەتكۈزۈش';
$labels['inline'] = 'ئەسكەرتىش';
$labels['asattachment'] = 'قىستۇرما ھالەتتە';
$labels['replyallmode'] = '[ھەممىگە جاۋاپ] كۇنۇپكىسىنىڭ سۈكۈتتىكى ھەركىتى';
$labels['replyalldefault'] = 'ھەممىگە جاۋاپ قايتۇرۇش';
$labels['replyalllist'] = 'خەت ئەۋەتىش تىزىملىكىگىلا جاۋاپ قايتۇرۇش (تېپىلسا)';
$labels['allmessages'] = 'بارلىق خەتلەر';
$labels['olderxdays'] = 'x$ كۈندىن چوڭ';
$labels['folder'] = 'قىسقۇچ';
$labels['folders'] = 'قىسقۇچلار';
$labels['foldername'] = 'قىسقۇچ نامى';
$labels['subscribed'] = 'مۇشتەرى بولغان';
$labels['messagecount'] = 'خەتلەر';
$labels['create'] = 'قۇرۇش';
$labels['createfolder'] = 'يېڭى قىسقۇچ قۇرۇش';
$labels['managefolders'] = 'قىسقۇچلارنى باشقۇرۇش';
$labels['specialfolders'] = 'ئالاھىدە قىسقۇچلار';
$labels['properties'] = 'خاسلىقلار';
$labels['folderproperties'] = 'قىسقۇچ خاسلىقلىرى';
$labels['parentfolder'] = 'ئانا قىسقۇچ';
$labels['location'] = 'ئورۇن';
$labels['info'] = 'ئۇچۇر';
$labels['getfoldersize'] = 'بېسىپ قىسقۇچ چوڭلۇقىنى كۆرۈش';
$labels['changesubscription'] = 'بېسىپ مۇشتەرىلىكنى ئۆزگەرتىش';
$labels['foldertype'] = 'قىسقۇچ تۈرى';
$labels['personalfolder'] = 'شەخسىي قىسقۇچ';
$labels['otherfolder'] = 'باشقا ئىشلەتكۈچىنىڭ قىسقۇچى';
$labels['sharedfolder'] = 'ئاممىۋى قىسقۇچ';
$labels['findfolders'] = 'قىسقۇچلارنى تېپىش';
$labels['findcontacts'] = 'تۇنۇشلارنى تېپىش';
$labels['findmail'] = 'ئېلىخەت ئۇچۇرلىرىنى تېپىش';
$labels['namespace.personal'] = 'شەخسىي';
$labels['namespace.other'] = 'باشقا ئىشلەتكۈچىلەر';
$labels['namespace.shared'] = 'ھەمبەھىرلىگەن';
$labels['dualuselabel'] = 'پەقەتلا ئۆز-ئىچىگە ئالىدۇ';
$labels['dualusemail'] = 'ئۇچۇرلار';
$labels['dualusefolder'] = 'قىسقۇچلار';
$labels['generate'] = 'ھاسىل قىلىش';
$labels['encryptioncreatekey'] = 'يېڭى ئاچقۇچ جۈپى ھاسىل قىلىش';
$labels['openmailvelopesettings'] = 'خەت لىپاپىسى تەڭشەكلىرىنى ئېچىش';
$labels['encryptionprivkeysinmailvelope'] = 'سىزدە خەت لىپاپىسى ئاچقۇچ زەنجىرىدە ساقلانغان nr$ ماس كىلىدىغان شەخسىي ئاچقۇچلار بار:';
$labels['encryptionnoprivkeysinmailvelope'] = 'بۇ ئەۋەتكۈچىنىڭ سىزنىڭ خەت لىپاپىڭىزدا ساقلانغان PGP شەخسىي ئاچقۇچى يوق. شىفىرلانغان خەتنى قوزغىتىش ئۈچۈن بىرنى قۇرۇشنى خالامسىز؟';
$labels['encryption'] = 'شىفىرلاش';
$labels['mailvelopeoptions'] = 'خەت لىپاپىسى تاللانمىلىرى';
$labels['mailvelopemainkeyring'] = 'خەت لىپاپىسى ئاساسىي ئاچقۇچ زەنجىرىنى ئىشلىتىش';
$labels['mailvelopenotfound'] = 'خەت ئالاقىسى كېڭەيتمىسى تور كۆرگۈچىڭىزدە يوق/قاچىلانمىدى.';
$labels['sortby'] = 'رەتكە تىزىش';
$labels['sortasc'] = 'چوڭايغان بۇيىچە رەتكە تىزىش';
$labels['sortdesc'] = 'كىچىكلىگەن بۇيىچە رەتكە تىزىش';
$labels['undo'] = 'يېنىۋېلىش';
$labels['installedplugins'] = 'قاچىلانغان قوراللار';
$labels['plugin'] = 'قورال';
$labels['version'] = 'نەشىرى';
$labels['source'] = 'مەنبە';
$labels['destination'] = 'مەنزىل';
$labels['license'] = 'كىنىشكا';
$labels['support'] = 'ياردەمگە ئېرىشىڭ';
$labels['savedsearches'] = 'ساقلانغان ئىزدەشلەر';
$labels['dateformatY'] = 'ي ي ي ي';
$labels['dateformaty'] = 'ي ي';
$labels['dateformatm'] = 'ئا ئا';
$labels['dateformatd'] = 'ك ك';
$labels['dateformatj'] = 'ك';
$labels['dateformatn'] = 'ئا';
$labels['B'] = 'بايت';
$labels['KB'] = 'كىلوبايت';
$labels['MB'] = 'مېگابايىت';
$labels['GB'] = 'گىگابايىت';
$labels['unicode'] = 'ئۇنىكود';
$labels['english'] = 'ئىنگىلىزچە';
$labels['westerneuropean'] = 'غەربىي ياۋرۇپاچە';
$labels['easterneuropean'] = 'شەرقىي ياۋروپاچە';
$labels['southeasterneuropean'] = 'شەرقىي-جەنۇبىي ياۋرۇپاچە';
$labels['baltic'] = 'بالتىق';
$labels['cyrillic'] = 'قىرىلچە';
$labels['arabic'] = 'ئەرەپچە';
$labels['greek'] = 'گىرىكچە';
$labels['hebrew'] = 'ئىبرانىي';
$labels['turkish'] = 'تۈركچە';
$labels['nordic'] = 'شىمالىي ياۋرۇپاچە';
$labels['thai'] = 'تايلاندچە';
$labels['celtic'] = 'كېلتىك';
$labels['vietnamese'] = 'ۋېتنامچە';
$labels['japanese'] = 'ياپۇنچە';
$labels['korean'] = 'كورىيەچە';
$labels['chinese'] = 'خىتايچە';
$labels['arialabeltopnav'] = 'كۆزنەك باشقۇرۇش';
$labels['arialabeltasknav'] = 'ئەپ ۋەزىپىلىرى';
$labels['arialabeltoolbar'] = 'ئەپ قورال بالدىقى';
$labels['arialabellistnav'] = 'تىزىملىكنى كۆرسىتىش';
$labels['arialabelactivetask'] = 'جانلىق ۋەزىپە';
$labels['arialabelmessagessearchfilter'] = 'ئېلىخەت تىزىش سۈزگۈچى';
$labels['arialabelmailsearchform'] = 'ئېلىخەت ئۇچۇر ئىزدەش جەدىۋېلى';
$labels['arialabelcontactsearchform'] = 'تۇنۇشلارنى ئىزدەش جەدىۋېلى';
$labels['arialabelmailquicksearchbox'] = 'ئېلىخەت ئىزدەش كىرگۈزۈش';
$labels['arialabelquicksearchbox'] = 'ئىزدەش كىرگۈزگۈچ';
$labels['arialabelfoldersearchfilter'] = 'قىسقۇچ تىزىش سۈزگۈچى';
$labels['arialabelfoldersearchform'] = 'قىسقۇچ ئىزدەش جەدىۋېلى';
$labels['arialabelfolderlist'] = 'ئېلىخەت قىسقۇچىنى تاللاش';
$labels['arialabelmessagelist'] = 'ئېلىخەت خەتلىرىنى تىزىش';
$labels['arialabelmailpreviewframe'] = 'خەت ئالدىن كۆرگۈزگۈچ';
$labels['arialabelmailboxmenu'] = 'قىسقۇچ ھەركەت تىزىملىكى';
$labels['arialabellistselectmenu'] = 'تاللاش تىزىملىكىنى كۆرسىتىش';
$labels['arialabelthreadselectmenu'] = 'يىپلارنى كۆرسىتىش تىزىملىكى';
$labels['arialabelmessagelistoptions'] = 'خەت تىزىملىكىنى كۆرسىتىش ھەمدە تۈرگە ئايرىش تاللانمىلىرى';
$labels['arialabelmailimportdialog'] = 'خەت كىرگۈزۈش دېئالوگى';
$labels['arialabelmessagenav'] = 'خەت يولباشلاش';
$labels['arialabelmessagebody'] = 'خەت مەزمۇنى';
$labels['arialabelmessageactions'] = 'خەت ھەركىتى';
$labels['arialabelcontactquicksearch'] = 'تۇنۇشلارنى ئىزدەش جەدىۋېلى';
$labels['arialabelcontactsearchbox'] = 'تۇنۇش ئىزدەش كىرگۈزگۈچ';
$labels['arialabelmessageheaders'] = 'خەت باشلانمىلىرى';
$labels['arialabelforwardingoptions'] = 'يەتكۈزۈش تاللانمىلىرى';
$labels['arialabelreplyalloptions'] = 'ھەممىگە جاۋاپ قايتۇرۇش تاللانمىلىرى';
$labels['arialabelmoremessageactions'] = 'تېخىمۇ كۆپ خەت ھەركەتلىرى';
$labels['arialabelmorecontactactions'] = 'تېخىمۇ كۆپ تۇنۇش ھەركەتلىرى';
$labels['arialabelmarkmessagesas'] = 'تاللانغان خەتكە بەلگىسىنى قۇيۇش...';
$labels['arialabelcomposeoptions'] = 'يېزىش تاللانمىلىرى';
$labels['arialabelresponsesmenu'] = 'قاتلانغان ئىنكاس تىزىملىكى';
$labels['arialabelattachmentuploadform'] = 'قىستۇرما چىقىرىش جەدىۋېلى';
$labels['arialabelattachmentmenu'] = 'قىستۇرما تاللانمىلىرى';
$labels['arialabelmailtomenu'] = 'ئېلىخەت ئادىرىس تاللانمىلىرى';
$labels['arialabelattachmentpreview'] = 'قىستۇرما ئالدىن كۆرگۈزگۈچ';
$labels['ariasummarycomposecontacts'] = 'تاپشۇرۋالغۇچىلارنى تاللايدىغان توپلارنى ۋە تۇنۇشلارنى تىزىش';
$labels['arialabelcontactexportoptions'] = 'تۇنۇشلارنى چىقىرىش تاللانمىلىرى';
$labels['arialabelabookgroupoptions'] = 'ئادرىس دەپتىرى/توپ تاللانمىلىرى';
$labels['arialabelpreferencesform'] = 'مايىللىق جەدىۋېلى';
$labels['arialabelidentityeditfrom'] = 'كىملىك تەھرىرلەش جەدىۋېلى';
$labels['arialabelresponseeditfrom'] = 'ئىنكاس تەھرىرلەش جەدىۋېلى';
$labels['arialabelsearchterms'] = 'ئىزدەش ئاتالغۇلىرى';
$labels['arialabeldropactionmenu'] = 'سۆرەش ۋە تاشلاش ھەركەت تىزىملىكى';
$labels['arialabelheadersmenu'] = 'تاپشۇرۋالغۇچى (باشلانما) قۇشۇش تىزىملىكى';
$labels['arialabelimagetools'] = 'رەسىم قوراللىرى';
$labels['helplistnavigation'] = 'كۇنۇپكا تاختىسى يولباشلىغۇچىنى تىزىش';
$labels['helplistkeyboardnavigation'] = "يۇقىرى/تۆۋەن ئىستىرىلكا: قۇر يۆتكەشكە مەركەزلەشتۈرۈش/تاللاش
بوشلۇق: مەركەزلەشكەن قۇرنى تاللاش.
يۆتكەش+يۇقىرى/تۆۋەن: يۇقىرى/تۆۋەن قۇشۇمچە قۇرنى تاللاش.
كونتىرول+بوشلۇق: مەركەزلەشكەن قۇرنى تاللاش ياكى تاللىماسلىق.";
$labels['helplistkeyboardnavmessages'] = "ئىستىرىلكا ئوڭ/سول: خەت يىپىنى كېڭەيتىش/ئىخچاملاش (يىپ ھالىتىدە بولسا).
كىرىش: تاللانغان/مەركەزلەشكەن خەتنى ئېچىش.
ئۆچۈرۈش: تاللانغان خەتلەرنى ئەخلەت چېلىكىگە تاشلاش.";
$labels['helplistkeyboardnavcontacts'] = "كىرىش: تاللانغان/مەركەزلەنگەن تۇنۇشنى ئېچىش";
localization/ug/messages.inc000064400000062643151727150600012170 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'بىر خاتالىق كۆرۈلدى!';
$messages['loginfailed']  = 'كىرىش مەغلۇپ بولدى.';
$messages['cookiesdisabled'] = 'سىزنىڭ تور كۆرگۈچىڭىز پىچىنىلەرنى قوللىمايدۇ.';
$messages['sessionerror'] = 'سىزنىڭ باسقۇچىڭىز ئىناۋەتسىز ياكى ۋاقتى ئۆتتى.';
$messages['cookiesmismatch'] = 'پىچىنە ماس كەلمەسلىك بايقالدى. تور كۆرگۈچىڭىزنىڭ پىچىنىلىرىنى تازلاڭ.';
$messages['storageerror'] = 'ساقلاش مۇلازىمېتىرىغا ئۇلىنىش مەغلۇپ بولدى.';
$messages['servererror'] = 'مۇلازىمېتىر خاتالىقى!';
$messages['servererrormsg'] = 'مۇلازىمېتىر خاتالىقى: msg$';
$messages['accountlocked'] = 'بەك كۆپ كىرىش مەغلۇبى. كىيىنرەك سىناپ بېقىڭ.';
$messages['connerror'] = 'ئۇلىنىش خاتالىقى (مۇلازىمېتىرغا يەتكىلى بولمىدى)!';
$messages['dberror'] = 'سانلىق مەلۇمات ئامبىرى خاتالىقى!';
$messages['dbconnerror'] = 'سانلىق مەلۇمات ئامبىرىغا ئۇلىغىلى بولمىدى!';
$messages['windowopenerror'] = 'سەكرەپ چىقىش كۆزنىكى مەنئي قىلىندى!';
$messages['requesttimedout'] = 'تەلەپ ۋاقتى ئۆتتى';
$messages['errorreadonly'] = 'ۋەزىپىنى ئورۇندىغىلى بولمىدى. قىسقۇچ بولسا ئوقۇشقىلا-بولىدىغان.';
$messages['errornoperm'] = 'ۋەزىپىنى ئورۇندىغىلى بولمىدى. ئىجازەت بېرىلمىدى.';
$messages['erroroverquota'] = 'ۋەزىپىنى ئورۇندىغىلى بولمىدى. بىكار دىسكا بوشلۇقى يوق.';
$messages['erroroverquotadelete'] = 'بىكار دىسكا بوشلۇقى قالمىدى. SHIFT+DEL نى بېسىپ بىر خەتنى ئۆچۈرۈڭ.';
$messages['invalidrequest'] = 'ئىناۋەتسىز تەلەپ! ھېچقانداق ئۇچۇر ساقلانمىدى.';
$messages['invalidhost'] = 'ئىناۋەتسىز مۇلازىمېتىر نامى.';
$messages['nomessagesfound'] = 'بۇ ئېلىخەت ساندۇقىدا ھېچقانداق خەت يوق.';
$messages['loggedout'] = 'سىز بۇ باسقۇچنى مۇۋاپىقىيەتلىك ئاخىرلاشتۇردىڭىز. خەيىر-خوش!';
$messages['mailboxempty'] = 'خەت ساندۇقى قۇرۇق';
$messages['nomessages'] = 'ئۇچۇر يوق';
$messages['refreshing'] = 'يېڭىلاۋاتىدۇ...';
$messages['loading'] = 'يۈكلەۋاتىدۇ...';
$messages['uploading'] = 'ھۆججەت چىقىرىۋاتىدۇ...';
$messages['attaching'] = 'ھۆججەت قىستۇرۋاتىدۇ...';
$messages['uploadingmany'] = 'ھۆججەتلەرنى چىقىرىۋاتىدۇ...';
$messages['loadingdata'] = 'ئۇچۇرلارنى يۈكلەۋاتىدۇ...';
$messages['checkingmail'] = 'يېڭى ئۇچۇرلارنى تەكشۈرىۋاتىدۇ...';
$messages['sendingmessage'] = 'خەتنى ئەۋەتىۋاتىدۇ...';
$messages['messagesent'] = 'خەت مۇۋاپىقىيەتلىك ئەۋەتىلدى';
$messages['savingmessage'] = 'خەتنى ساقلاۋاتىدۇ...';
$messages['messagesaved'] = 'خەت قوليازما قىسقۇچىغا ساقلاندى.';
$messages['successfullysaved'] = 'مۇۋاپىقىيەتلىك ساقلاندى.';
$messages['savingresponse'] = 'ئىنكاس تىكىستىنى ساقلاۋاتىدۇ...';
$messages['deleteresponseconfirm'] = 'بۇ ئىنكاس تېكىستىنى راستىنلا ئۆچۈرەمسىز؟';
$messages['nocontactselected'] = 'سىز تېخى بىرەر تۇنۇش تاللىمىدىڭىز.';
$messages['addedsuccessfully'] = 'تۇنۇش ئادىرىس دەپتىرىگە مۇۋاپىقىيەتلىك قېتىلدى.';
$messages['contactexists'] = 'ئوخشاش ئېلىخەت ئادىرىستىكى تۇنۇش مەۋجۇت.';
$messages['contactnameexists'] = 'ئوخشاش ئىسىملىك تۇنۇش مەۋجۇت.';
$messages['blockedimages'] = 'مەخپىيەتلىكىڭىزنى قوغداش ئۈچۈن، يىراق-مەنبەلىك رەسىملەر بۇ خەتتە مەنئىي قىلىندى.';
$messages['blockedresources'] = 'مەخپىيەتلىكىڭىزنى قوغداش ئۈچۈن يىراق مەنبەلەر مەنئىي قىلىندى.';
$messages['suspiciousemail'] = 'بۇ خەت ئالدامچىلىققا مۇناسىۋەتلىك گۇمانلىق ئېلخەت ئادىرسىنى ئۆز-ئىچىگە ئالغان.';
$messages['bccemail'] = 'يەتكۈزۈلگەن خەت(لەر) مەخپىي تاپشۇرۋالغۇچىلارنى ئۆز-ئىچىگە ئالىدۇ(ب چ چ).';
$messages['bouncehint'] = 'بۇ خەت ھېچقانداق ئۆزگەرتمەي ئەۋەتىلدۇ، مەسلەن: ئەسلىدىكى مەزمۇن، باشلانما ھەمدە تاپشۇرۋالغۇچىلار بىلەن.';
$messages['encryptedmessage'] = 'بۇ بىر شىفىرلانغان خەت شۇڭا كۆرسەتكىلى بولمايدۇ. كەچۈرۈڭ!';
$messages['externalmessagedecryption'] = 'بۇ بىر شىفىرلانغان خەت بۇلۇپ، تور كۆرگۈچنىڭ كېڭەيتىلمىسى بىلەن شىفىرسىزلىغىلى بۇلىدۇ.';
$messages['nopubkeyfor'] = 'بۇ email$ ئۈچۈن ئاممىۋىي ئاچقۇچ تېپىلمىدى';
$messages['nopubkeyforsender'] = 'سىزنىڭ ئەۋەتكۈچى كىملىكىڭىزگە ماس ئاممىۋىي ئاچقۇچ تېپىلمىدى. سىز بۇ خەتنى تاپشۇرۋالغۇچىلار ئۈچۈنلا شىفىرلامسىز؟';
$messages['encryptnoattachments'] = 'ئاللىبۇرۇن چىقىرىلغان قىستۇرمىلارنى شىفىرلىغىلى بولمايدۇ. ئۇلارنى شىفىرلاش تەھرىرىدە قايتا قۇشۇڭ.';
$messages['searchpubkeyservers'] = 'سىز بۇ كەم قالغان ئاچقۇچلار ئۈچۈن ئاممىۋىي ئاچقۇچ مۇلازىمېتىرلىرىنى ئىزدەمسىز؟';
$messages['encryptpubkeysfound'] = 'تۆۋەندىكى ئاممىۋىي ئاچقۇچ تېپىلدى:';
$messages['keyservererror'] = 'ئاچقۇچ مۇلازىمېتىردىن ئاچقۇچقا ئېرىشكىلى بولمىدى.';
$messages['keyimportsuccess'] = 'ئاممىۋىي ئاچقۇچ key$ سىزنىڭ ئاچقۇچ چەمبىرىكىڭىزگە مۇۋاپىقىيەتلىك كىرگۈزۈلدى.';
$messages['nocontactsfound'] = 'ھېچقانداق تۇنۇش تېپىلمىدى.';
$messages['contactnotfound'] = 'تەلەپ قىلىنغان تۇنۇش تېپىلمىدى.';
$messages['contactsearchonly'] = 'سىز تاللانغان ئادىرس دەپتىرىدىن تۇنۇشلارنى كۆرۈش ئۈچۈن ئىزدەش جەدىۋېلىنى ئىشلىتىشىڭىز لازىم.';
$messages['sendingfailed'] = 'خەتنى ئەۋەتىش مەغلۇپ بولدى.';
$messages['senttooquickly'] = 'بۇ خەتنى ئەۋەتىشتىن بۇرۇن sec$ سىكونت(لار) ساقلاڭ.';
$messages['errorsavingsent'] = 'ئەۋەتىلگەن خەتنى ساقلاۋاتقاندا بىر خاتالىق كۆرۈلدى.';
$messages['errorsaving'] = 'ساقلاۋاتقاندا بىر خاتالىق كۆرۈلدى.';
$messages['errormoving'] = 'بۇ خەت(لەر)نى يۆتكىگىلى بولمىدى.';
$messages['errorcopying'] = 'بۇ خەت(لەر)نى كۆچۈرگىلى بولمىدى.';
$messages['errordeleting'] = 'بۇ خەت(لەر)نى ئۆچۈرگىلى بولمىدى.';
$messages['errormarking'] = 'بۇ خەت(لەر)گە بەلگە قويغىلى بولمىدى.';
$messages['alerttitle'] = 'دىققەت';
$messages['confirmationtitle'] = 'جەزىملەشتۈرەمسىز...';
$messages['deletecontactconfirm']  = 'سىز تاللانغان تۇنۇش(لار)نى راستىنلا ئۆچۈرمەكچىمۇ؟';
$messages['deletegroupconfirm']  = 'سىز تاللانغان توپنى راستىنلا ئۆچۈرمەكچىمۇ؟';
$messages['deletemessagesconfirm'] = 'سىز تاللانغان خەت(لەر)نى راستىنلا ئۆچۈرمەكچىمۇ؟';
$messages['deletefolderconfirm']  = 'بۇ قىسقۇچنى راستىنلا ئۆچۈرەمسىز؟';
$messages['movefolderconfirm']  = 'سىز بۇ قىسقۇچنى راستىنلا يۆتكەمسىز؟';
$messages['purgefolderconfirm']  = 'سىز بۇ قىسقۇچتىكى بارلىق خەتلەرنى راستىنلا ئۆچۈرمەكچىمۇ؟';
$messages['contactdeleting'] = 'تۇنۇش(لار)نى ئۆچۈرىۋاتىدۇ...';
$messages['groupdeleting'] = 'توپنى ئۆچۈرىۋاتىدۇ...';
$messages['folderdeleting'] = 'قىسقۇچنى ئۆچۈرىۋاتىدۇ...';
$messages['foldermoving'] = 'قىسقۇچنى يۆتكەۋاتىدۇ...';
$messages['foldersubscribing'] = 'قىسقۇچقا مۇشتەرى بۇلىۋاتىدۇ...';
$messages['folderunsubscribing'] = 'قىسقۇچقا مۇشتەرى بولمايۋاتىدۇ...';
$messages['formincomplete'] = 'بۇ جەدىۋەل تۇلۇق تولدۇرۇلمىدى.';
$messages['noemailwarning'] = 'بىر ئىناۋەتلىك ئېلىخەت ئادىرسىنى كىرگۈزۈڭ.';
$messages['nonamewarning']  = 'بىر ئىسىم كىرگۈزۈڭ.';
$messages['nopagesizewarning'] = 'بەت چوڭلۇقىنى كىرگۈزۈڭ.';
$messages['nosenderwarning'] = 'ئەۋەتكۈچى ئېلىخەت ئادىرسىنى كىرگۈزۈڭ.';
$messages['recipientsadded'] = 'تاپشۇرۋالغۇچى(لار) مۇۋاپىقىيەتلىك قۇشۇلدى.';
$messages['norecipientwarning'] = 'ئەڭ كەمدە بىر تاپشۇرۋالغۇچى كىرگۈزۈڭ.';
$messages['disclosedrecipwarning'] = 'بارلىق تاپشۇرۋالغۇچىلار بىر-بىرىنىڭ ئېلىخەت ئادىرىسلىرىنى كۆرەلەيدۇ. بۇنىڭدىن ساقلىنىش ھەمدە مەخپىيەتلىكنى ساقلاش ئۈچۈن، سىز Bcc ئورنىنى ئىشلىتەلەيسىز.';
$messages['disclosedreciptitle'] = 'بەك كۆپ ئاممىۋىي تاپشۇرۋالغۇچىلار';
$messages['nosubjectwarning']  = '"تېما" كاتەكچىسى قۇرۇق. بىرنى كىرگۈزۈشنى خالامسىز؟';
$messages['nosubjecttitle']  = 'تېما يوق';
$messages['nobodywarning'] = 'بۇ ئۇچۇرنى مەزمۇنسىز ئەۋەتەمسىز؟';
$messages['notsentwarning'] = 'بۇ خەت ئەۋەتىلمىدى ھەمدە ساقلانمىغان ئۆزگىرىشلەر بار. ئۆزگەرتىشلەرنى تاشلىۋېتەمسىز؟';
$messages['restoresavedcomposedata'] = 'بىر-پارچە ئىلگىرى يېزىلغان لىكىن ئەۋەتىلمىگەن خەت تېپىلدى. تېما: subject$ ساقلانغان: date$ سىز بۇ خەتنى ئەسلىگە قايتۇرامسىز؟';
$messages['nosearchname'] = 'بىرەر تۇنۇش ئىسمى ياكى ئېلىخەت ئادىرسىنى كىرگۈزۈڭ.';
$messages['notuploadedwarning'] = 'تېخى ھەممە قىستۇرمىلار چىقىرىپ بولۇنمىدى. ساقلاڭ ياكى چىقىرىشنى ئەمەلدىن قالدۇرۇڭ.';
$messages['searchsuccessful'] = 'nr$ خەتلەر تېپىلدى.';
$messages['contactsearchsuccessful'] = 'nr$ تۇنۇشلار تېپىلدى.';
$messages['searchnomatch'] = 'ئىزدەشكە ھېچنىمە ماس كەلمىدى.';
$messages['searching'] = 'ئىزدەۋاتىدۇ...';
$messages['checking'] = 'تەكشۈرۋاتىدۇ...';
$messages['stillsearching'] = 'تېخىچە ئىزدەۋاتىدۇ...';
$messages['nospellerrors'] = 'ھېچقانداق ئىملا خاتالىقى تېپىلمىدى.';
$messages['folderdeleted'] = 'قىسقۇچ مۇۋاپىقىيەتلىك ئۆچۈرۈلدى.';
$messages['foldersubscribed'] = 'قىسقۇچ مۇۋاپىقىيەتلىك مۇشتەرى بولۇندى.';
$messages['folderunsubscribed'] = 'قىسقۇچ مۇۋاپىقىيەتلىك مۇشتەرى بولۇنمىدى.';
$messages['folderpurged'] = 'قىسقۇچ مۇۋاپىقىيەتلىك قۇرۇقدالدى.';
$messages['folderexpunged'] = 'قىسقۇچ مۇۋاپىقىيەتلىك ئىخچاملاندى.';
$messages['deletedsuccessfully'] = 'مۇۋاپىقىيەتلىك ئۆچۈرۈلدى.';
$messages['converting'] = 'فورمات ئۆچۈرۈلۋاتىدۇ...';
$messages['messageopenerror'] = 'خەتنى مۇلازىمېتىردىن يۈكلىيەلمىدى.';
$messages['filelinkerror'] = 'ھۆججەت قىستۇرۇش مەغلۇپ بولدى.';
$messages['fileuploaderror'] = 'ھۆججەت چىقىرىش مەغلۇپ بولدى.';
$messages['csvfilemismatch'] = 'ئوخشىمىغان كاتەكچىلىك كۆپلىگەن CSV ھۆججىتىنى كىرگۈزۈش قۇبۇل قىلىنمايدۇ.';
$messages['filesizeerror'] = 'چىقارغان ھۆججەت چوڭلۇقى ئەڭ چوڭ بوشلۇق size$ دىن ئېشىپ كەتتى.';
$messages['filecounterror'] = 'سىز ئەڭ كۆپ بولغاندا count$ ھۆججەتلەرنى چىقىرالايسىز.';
$messages['msgsizeerror'] = 'ھۆججەت قىستۇرۇش مەغلۇپ بولدى. خەتنىڭ چوڭلۇقى ئەڭ يۇقىرى ئۆلچەمدىن( size$) ئېشىپ كەتتى.';
$messages['msgsizeerrorfwd'] = 'خەتنىڭ چوڭلۇقى ئۆلچەمدىن (size$) ئېشىپ كەتتى. num$ خەت(لەر) قىستۇرۇلمىدى.';
$messages['copysuccess'] = 'nr$ تۇنۇشلار مۇۋاپىقىيەتلىك كۆچۈرۈلدى.';
$messages['movesuccess'] = 'nr$ تۇنۇشلار مۇۋاپىقىيەتلىك يۆتكەلدى.';
$messages['copyerror'] = 'ھېچقانداق تۇنۇشنى كۆچۈرگىلى بولمىدى.';
$messages['moveerror'] = 'ھېچقانداق تۇنۇشنى يۆتكىگىلى بولمىدى.';
$messages['sourceisreadonly'] = 'بۇ ئادىرىس مەنبەسى بولسا ئۇقۇشقىلا-بولىدىغان.';
$messages['errorsavingcontact'] = 'بۇ تۇنۇش ئادىرسىنى ساقلىغىلى بولمىدى.';
$messages['movingmessage'] = 'خەت(لەر)نى يۆتكەۋاتىدۇ...';
$messages['copyingmessage'] = 'خەت(لەر)نى كۆچۈرۈۋاتىدۇ...';
$messages['copyingcontact'] = 'تۇنۇش(لار)نى كۆچۈرۈۋاتىدۇ...';
$messages['movingcontact'] = 'تۇنۇش(لار)نى يۆتكەۋاتىدۇ...';
$messages['deletingmessage'] = 'خەت(لەر)نى ئۆچۈرىۋاتىدۇ...';
$messages['markingmessage'] = 'خەت(لەر)گە بەلگە قۇيىۋاتىدۇ...';
$messages['addingmember'] = 'تۇنۇش(لار)نى بۇ توپقا قۇشۇۋاتىدۇ...';
$messages['removingmember'] = 'تۇنۇش(لار)نى بۇ توپتىن چىقىرىۋاتىدۇ...';
$messages['receiptsent'] = 'بىر ئۇقۇغانلىق تېلخېتى مۇۋاپىقىيەتلىك ئەۋەتىلدى.';
$messages['errorsendingreceipt'] = 'بۇ تېلىخەتنى ئەۋەتكىلى بولمىدى.';
$messages['deleteidentityconfirm'] = 'سىز بۇ كىملىكنى راستىنلا ئۆچۈرمەكچىمۇ؟';
$messages['nodeletelastidentity'] = 'سىز بۇ كىملىكنى ئۆچۈرسىڭىز بولمايدۇ، بۇ ئەڭ ئاخىرقىسى.';
$messages['forbiddencharacter'] = 'قىسقۇچ ئىسمى مەنئىي قىلىنغان ھەرىپنى ئۆز-ئىچىگە ئالىدۇ.';
$messages['selectimportfile'] = 'بىرەر ھۆججەتنى تاللاپ چىقىرىڭ.';
$messages['addresswriterror'] = 'تاللانغان ئادىرىس دەپتىرىگە يازغىلى بولمايدۇ.';
$messages['contactaddedtogroup'] = 'تۇنۇشلار بۇ توپقا مۇۋاپىقىيەتلىك قېتىلدى.';
$messages['contactremovedfromgroup'] = 'تۇنۇشلار بۇ توپتىن مۇۋاپىقىيەتلىك چىقىرىلدى.';
$messages['nogroupassignmentschanged'] = 'ھېچقانداق توپ تاپشۇرۇقى ئۆزگەرتىلمىدى.';
$messages['importwait'] = 'كىرگۈزىۋاتىدۇ، بىردەم ساقلاڭ...';
$messages['importformaterror'] = 'كىرگۈزۈش مەغلۇپ بولدى! چىقىرىلغان ھۆججەتنىڭ تىپى ئىناۋەتلىك ئەمەس.';
$messages['importconfirm'] = '<b>inserted$ تۇنۇشلار مۇۋاپىقىيەتلىك كىرگۈزۈلدى </b>';
$messages['importconfirmskipped'] = '<b> مەۋجۇت skipped$ قۇر ئۆتكۈزۈلدى </b>';
$messages['importmessagesuccess'] = 'nr$ خەتلەر مۇۋاپىقىيەتلىك كىرگۈزۈلدى';
$messages['importmessageerror'] = 'كىرگۈزۈش مەغلۇپ بولدى! چىقىرىلغان ھۆججەت ئىناۋەتلىك ئېلىخەت ياكى خەت ھۆججىتى ئەمەس.';
$messages['opnotpermitted'] = 'مەشخۇلاتقا ئىجازەت بېرىلمىدى!';
$messages['nofromaddress'] = 'تاللانغان كىملىكنىڭ ئېلىخەت ئادىرسى يوق.';
$messages['editorwarning'] = 'تەھرىرلىگۈچ تۈرىنى ئۆزگەرتىش تېكىست فورماتىنىڭ يوقىلىشىنى كەلتۈرۈپ چىقىرىشى مۇمكىن. سىز داۋاملاشتۇرامسىز؟';
$messages['httpreceivedencrypterror'] = 'بىر ئېغىر تەڭشەش خاتالىقى كۆرۈلدى. دەرھال باشقۇرغۇچىڭىز بىلەن ئالاقىلىشىڭ. <b>سىزنىڭ خېتىڭىزنى ئەۋەتكىلى بولمىدى. </b>';
$messages['smtpconnerror'] = 'SMTP خاتالىقى (code$): مۇلازىمېتىرغا ئۇلىنىش مەغلۇپ بولدى.';
$messages['smtpautherror'] = 'SMTP خاتالىقى (code$): كىملىكىنى دەلىللەش مەغلۇپ بولدى.';
$messages['smtpfromerror'] = 'SMTP خاتالىقى (code$): ئەۋەتكۈچىنى "from$" بېكىتىش مەغلۇپ بولدى (msg$).';
$messages['smtptoerror'] = 'SMTP خاتالىقى (code$): تاپشۇرۋالغۇچىنى "to$" قېتىش مەغلۇپ بولدى (msg$).';
$messages['smtprecipientserror'] = 'SMTP خاتالىقى : تاپشۇرۋالغۇچىلار تىزىملىكىنى يىشىەلمىدى.';
$messages['smtputf8error'] = 'SMTP خاتالىقى: مۇلازىمېتىر ئېلىخەت ئادىرسىدا ئۇنىكودنى قوللىمايدۇ.';
$messages['smtpsizeerror'] = 'SMTP خاتالىقى: خەتنىڭ چوڭلۇقى مۇلازىمېتىر چېكىدىن(limit$) ئېشىپ كەتتى.';
$messages['smtperror'] = 'SMTP خاتالىقى: msg$';
$messages['emailformaterror'] = 'ئىناۋەتسىز ئېلىخەت ئادىرسى: email$';
$messages['toomanyrecipients'] = 'تاپشۇرۋالغۇچىلار سانىنى max$ دىن تۆۋەنلىتىڭ.';
$messages['maxgroupmembersreached'] = 'توپ ئەزالىرىنىڭ سانى ئەڭ يۇقىرى ئۆلچەم max$ دىن ئېشىپ كەتتى.';
$messages['internalerror'] = 'ئىچكى خاتالىق كۆرۈلدى. قايتا سىناپ بېقىڭ.';
$messages['contactdelerror'] = 'تۇنۇش(لار)نى ئۆچۈرگىلى بولمىدى.';
$messages['contactdeleted'] = 'تۇنۇش(لار) مۇۋاپىقىيەتلىك ئۆچۈرۈلدى.';
$messages['contactrestoreerror'] = 'ئۆچۈرۈلگەن تۇنۇش(لار)نى ئەسلىگە قايتۇرغىلى بولمىدى.';
$messages['contactrestored'] = 'تۇنۇش(لار) مۇۋاپىقىيەتلىك ئەسلىگە كەلدى.';
$messages['groupdeleted'] = 'توپ مۇۋاپىقىيەتلىك ئۆچۈرۈلدى.';
$messages['grouprenamed'] = 'توپقا مۇۋاپىقىيەتلىك يېڭى ئسىىم قۇيۇلدى.';
$messages['groupcreated'] = 'توپ مۇۋاپىقىيەتلىك قۇرۇلدى.';
$messages['savedsearchdeleted'] = 'ساقلانغان ئىزدەشلەر مۇۋاپىقىيەتلىك ئۆچۈرۈلدى.';
$messages['savedsearchdeleteerror'] = 'ساقلانغان ئىزدەشلەرنى ئۆچۈرگىلى بولمىدى.';
$messages['savedsearchcreated'] = 'ساقلانغان ئىزدەش مۇۋاپىقىيەتلىك قۇرۇلدى.';
$messages['savedsearchcreateerror'] = 'ساقلانغان ئىزدەشنى قۇرغىلى بولمىدى.';
$messages['messagedeleted'] = 'خەت(لەر) مۇۋاپىقىيەتلىك ئۆچۈرۈلدى.';
$messages['messagemoved'] = 'خەت(لەر) مۇۋاپىقىيەتلىك يۆتكەلدى.';
$messages['messagemovedtotrash'] = 'خەت(لەر) ئەخلەت چېلىكىگە مۇۋاپىقىيەتلىك يۆتكەلدى.';
$messages['messagecopied'] = 'خەت(لەر) مۇۋاپىقىيەتلىك كۆچۈرۈلدى.';
$messages['messagemarked'] = 'خەت(لەر)گە مۇۋاپىقىيەتلىك بەلگە قۇيۇلدى.';
$messages['autocompletechars'] = 'ئاپتۇماتىك تولدۇرۇش ئۈچۈن ئەڭ كەم بولغاندا min$ ھەرىپ كىرگۈزۈڭ.';
$messages['autocompletemore'] = 'تېخىمۇ كۆپ ماس قۇرلار تېپىلدى. كۆپرەك ھەرىپلەرنى كىرگۈزۈڭ.';
$messages['namecannotbeempty'] = 'ئىسمى قۇرۇق بولسا بولمايدۇ.';
$messages['nametoolong'] = 'ئىسمى بەك ئۇزۇن.';
$messages['namedotforbidden'] = 'قىسقۇچ ئىسمى چىكىت بىلەن باشلانمايدۇ.';
$messages['folderupdated'] = 'قىسقۇچ مۇۋاپىقىيەتلىك يېڭىلاندى.';
$messages['foldercreated'] = 'قىسقۇچ مۇۋاپىقىيەتلىك قۇرۇلدى.';
$messages['invalidimageformat'] = 'ئىناۋەتلىك رەسىم فورماتى ئەمەس.';
$messages['mispellingsfound'] = 'خەتتە ئىملا خاتالىقى كۆرۈلدى.';
$messages['parentnotwritable'] = 'قىسقۇچنى تاللىغان ئانا قىسقۇچ ئىچىگە قۇرغىلى/يۆتكىگىلى بولمىدى. كىرىش ھوقوقى يوق.';
$messages['messagetoobig'] = 'ئۇچۇر قىسمى بىر-تەرەپ قىلىشقا بەك چوڭ.';
$messages['attachmentvalidationerror'] = 'قىستۇرما گۇمانلىق چۈنكى ئۇنىڭ تىپى خەتتە دىيىلگەن تىپقا ماس كەلمەيدۇ. ئەگەر سىز بۇ ئەۋەتكۈچىگە ئىشەنمىسىڭىز، ئۇنى بۇ تور كۆرگۈچتە ئاچماسلىقىڭىز لازىم چۈنكى ئۇ بەلكىم يامان-نىيەتلىك مەزمۇنلارنى ئۆز-ئىچىگە ئېلىشى مۇمكىن. <br/><br/><em>كۈتۈلگەن: expected$؛ تېپىلغان: detected$</em>';
$messages['noscriptwarning'] = 'ئاگاھلاندۇرۇش: بۇ تورخەت مۇلازىمېتى Javascript نى تەلەپ قىلىدۇ. ئىشلىتىش ئۈچۈن تور كۆرگۈچىڭىزدە Javascript نى بار قىلىڭ.';
$messages['messageissent'] = 'بۇ خەت ئاللىبۇرۇن ئەۋەتىلدى، لىكىن تېخى ساقلانمىدى. سىز ئۇنى ھازىر ساقلامسىز؟';
$messages['errnotfound'] = 'ھۆججەت تېپىلمىدى';
$messages['errnotfoundexplain'] = 'تەلەپ قىلىنغان بايلىق تېپىلمىدى!';
$messages['errfailedrequest'] = 'مەغلۇپ بولغان تەلەپ';
$messages['errauthorizationfailed'] = 'كىملىكىنى دەلىللەش مەغلۇپ بولدى';
$messages['errunauthorizedexplain'] = 'سىزنىڭ بۇ مۇلازىمەتكە ئېرىشىش ھوقوقىڭىزنىڭ بار-يوقلىقىنى دەلىللىگىلى بولمىدى!';
$messages['errrequestcheckfailed'] = 'تەلەپ تەكشۈرۈش مەغلۇپ بولدى';
$messages['errcsrfprotectionexplain'] = "سىزنى قوغداش ئۈچۈن، بۇ بايلىقنى ئىشلىتىش CSRF كە قارشى قوغدالدى. سىزنىڭ بۇنى كۆرۈشىڭىزدىكى سەۋەب سىز بۇ تور ئېپىدىن ئايرىلىشتىن بۇرۇن تېخى ئۇنىڭدىن چېكىنمىدىڭىز. داۋاملاشتۇرۇش ئۈچۈن ئادەم بىلەن ماسلىشىش كېرەك بولدى. ";
$messages['errcontactserveradmin'] = 'سىزنىڭ مۇلازىمېتىر باشقۇرغۇچىڭىز بىلەن ئالاقىلىشىڭ.';
$messages['clicktoresumesession'] = 'بۇ يەرنى بېسىپ ئالدىنقى باسقۇچنى ئەسلىگە كەلتۈرۈڭ';
$messages['errcomposesession'] = 'يېزىش باسقۇچى خاتالىقى';
$messages['errcomposesessionexplain'] = 'تەلەپ قىلىنغان يېزىش باسقۇچى تېپىلمىدى.';
$messages['clicktocompose'] = 'بۇ يەرنى بېسىپ يېڭى خەت قۇرۇڭ';
$messages['nosupporterror'] = 'سىزنىڭ تور كۆرگۈچىڭىز بۇ ئالاھىدىلىكنى قوللىمايدۇ.';
$messages['siginserted'] = 'ئىمزا مۇۋاپىقىيەتلىك كىرگۈزۈلدى.';
$messages['responseinserted'] = 'ئىنكاس مۇۋاپىقىيەتلىك كىرگۈزۈلدى.';
$messages['noresponsesavailable'] = 'ھېچقانداق ئىنكاس يوق';
$messages['listempty'] = 'بۇ تىزىملىك قۇرۇق';
$messages['listusebutton'] = 'يېڭى خاتىرە قېتىش ئۈچۈن قۇرۇش كۇنۇپكىسىنى بېسىڭ.';
$messages['keypaircreatesuccess'] = 'يېڭى ئاچقۇچ جۈپى identity$ ئۈچۈن مۇۋاپىقىيەتلىك قۇرۇلدى.';
$messages['emptyattachment'] = 'بۇ قىستۇرما قۇرۇقتەك قىلىدۇ. <br>بۇنى ئەۋەتكەن ئادەم بىلەن تەكشۈرۈڭ.';
$messages['oauthloginfailed'] = 'كىملىك دەلىللەش مەغلۇپ بولدى. قايتا سىناپ بېقىڭ.';
localization/es_ES/timezones.inc000064400000047362151727150600012762 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'África';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Adís Abeba';
$labels['tz:africa:algiers'] = 'Argel';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es-Salam';
$labels['tz:africa:djibouti'] = 'Yibuti';
$labels['tz:africa:douala'] = 'Duala';
$labels['tz:africa:el_aaiun'] = 'El Aaiún';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburgo';
$labels['tz:africa:juba'] = 'Yuba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Jartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinsasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadiscio';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Yamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto Novo';
$labels['tz:africa:sao_tome'] = 'Santo Tomé';
$labels['tz:africa:tripoli'] = 'Trípoli';
$labels['tz:africa:tunis'] = 'Túnez';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'América';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaína';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Córdoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Río Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucumán';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahía';
$labels['tz:america:bahia_banderas'] = 'Bahía de Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belém';
$labels['tz:america:belize'] = 'Belice';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogotá';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancún';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayena';
$labels['tz:america:cayman'] = 'Caimán';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiabá';
$labels['tz:america:curacao'] = 'Curazao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepé';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Nuuk';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Gran Turca';
$labels['tz:america:grenada'] = 'Granada';
$labels['tz:america:guadeloupe'] = 'Guadalupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Habana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianápolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Ángeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceió';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaos';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinica';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlán';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Mérida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Ciudad de México';
$labels['tz:america:miquelon'] = 'Miquelón';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nasáu';
$labels['tz:america:new_york'] = 'Nueva York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Dakota del norte';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Centro';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panamá';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Puerto Príncipe';
$labels['tz:america:port_of_spain'] = 'Puerto de España';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarém';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresby Sund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'San Bartolomé';
$labels['tz:america:st_johns'] = "San Juan de Terranova";
$labels['tz:america:st_kitts'] = 'Isla de San Cristóbal';
$labels['tz:america:st_lucia'] = 'Santa Lucía';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antártida';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Ártico';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Adén';
$labels['tz:asia:almaty'] = 'Almatý';
$labels['tz:asia:amman'] = 'Ammán';
$labels['tz:asia:anadyr'] = 'Anadir';
$labels['tz:asia:aqtau'] = 'Aktau';
$labels['tz:asia:aqtobe'] = 'Aktobe';
$labels['tz:asia:ashgabat'] = 'Asjabad';
$labels['tz:asia:atyrau'] = 'Atirau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrein';
$labels['tz:asia:baku'] = 'Bakú';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaúl';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Biskek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chitá';
$labels['tz:asia:choibalsan'] = 'Choybalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damasco';
$labels['tz:asia:dhaka'] = 'Daca';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubái';
$labels['tz:asia:dushanbe'] = 'Dusambé';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebrón';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Yakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalén';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Katmandú';
$labels['tz:asia:khandyga'] = 'Jándyga';
$labels['tz:asia:kolkata'] = 'Calcuta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macao';
$labels['tz:asia:magadan'] = 'Magadán';
$labels['tz:asia:makassar'] = 'Macasar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Mascate';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Nom Pen';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Kyzylorda';
$labels['tz:asia:riyadh'] = 'Riad';
$labels['tz:asia:sakhalin'] = 'Sajalín';
$labels['tz:asia:samarkand'] = 'Samarkanda';
$labels['tz:asia:seoul'] = 'Seúl';
$labels['tz:asia:shanghai'] = 'Shanghái';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolimsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Taskent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teherán';
$labels['tz:asia:thimphu'] = 'Timbu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulán Bator';
$labels['tz:asia:urumqi'] = 'Urumchi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientián';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Rangún';
$labels['tz:asia:yekaterinburg'] = 'Ekaterimburgo';
$labels['tz:asia:yerevan'] = 'Ereván';
$labels['tz:atlantic'] = 'Atlántico';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermudas';
$labels['tz:atlantic:canary'] = 'Islas Canarias';
$labels['tz:atlantic:cape_verde'] = 'Cabo Verde';
$labels['tz:atlantic:faroe'] = 'Feroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reikiavik';
$labels['tz:atlantic:south_georgia'] = 'Georgia del Sur ';
$labels['tz:atlantic:st_helena'] = 'Santa Elena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaida';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astracán';
$labels['tz:europe:athens'] = 'Atenas';
$labels['tz:europe:belgrade'] = 'Belgrado';
$labels['tz:europe:berlin'] = 'Berlín';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Bruselas';
$labels['tz:europe:bucharest'] = 'Bucarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Büsingen';
$labels['tz:europe:chisinau'] = 'Chisináu';
$labels['tz:europe:copenhagen'] = 'Copenhague';
$labels['tz:europe:dublin'] = 'Dublín';
$labels['tz:europe:gibraltar'] = 'Gibraltar Español';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isla de Man';
$labels['tz:europe:istanbul'] = 'Estambul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrado';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kírov';
$labels['tz:europe:lisbon'] = 'Lisboa';
$labels['tz:europe:ljubljana'] = 'Liubliana';
$labels['tz:europe:london'] = 'Londres';
$labels['tz:europe:luxembourg'] = 'Luxemburgo';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Mónaco';
$labels['tz:europe:moscow'] = 'Moscú';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'París';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praga';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Roma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Sarátov';
$labels['tz:europe:simferopol'] = 'Simferópol';
$labels['tz:europe:skopje'] = 'Skopie';
$labels['tz:europe:sofia'] = 'Sofía';
$labels['tz:europe:stockholm'] = 'Estocolmo';
$labels['tz:europe:tallinn'] = 'Tallin';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Uliánovsk';
$labels['tz:europe:uzhgorod'] = 'Úzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Ciudad del Vaticano';
$labels['tz:europe:vienna'] = 'Viena';
$labels['tz:europe:vilnius'] = 'Vilna';
$labels['tz:europe:volgograd'] = 'Volgogrado';
$labels['tz:europe:warsaw'] = 'Varsovia';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporiyia';
$labels['tz:europe:zurich'] = 'Zúrich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Navidad';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoras';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maldivas';
$labels['tz:indian:mauritius'] = 'Mauricio';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunión';
$labels['tz:pacific'] = 'Pacífico';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Pascua';
$labels['tz:pacific:efate'] = 'Éfaté';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiyi';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galápagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulú';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Numea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palaos';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Puerto Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipán';
$labels['tz:pacific:tahiti'] = 'Tahití';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/es_ES/csv2vcard.inc000064400000010370151727150600012627 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/<lang>/csv2vcard.inc                                     |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2015, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Anniversary";
$map['assistants_name'] = "Assistant's Name";
$map['assistants_phone'] = "Assistant's Phone";
$map['birthday'] = "Birthday";
$map['business_city'] = "Ciudad de trabajo";
$map['business_countryregion'] = "Provincia o estado de trabajo";
$map['business_fax'] = "Business Fax";
$map['business_phone'] = "Teléfono del trabajo";
$map['business_phone_2'] = "Business Phone 2";
$map['business_postal_code'] = "Código postal del trabajo";
$map['business_state'] = "País o región del trabajo";
$map['business_street'] = "Calle del trabajo";
$map['car_phone'] = "Car Phone";
$map['categories'] = "Categorías";
$map['company'] = "Organización";
$map['department'] = "Department";
$map['email_address'] = "E-mail Address";
$map['email_2_address'] = "Dirección de correo electrónico 2";
$map['email_3_address'] = "Dirección del correo electrónico 3";
$map['first_name'] = "Nombre";
$map['gender'] = "Género";
$map['home_city'] = "Home City";
$map['home_countryregion'] = "País o región del domicilio";
$map['home_fax'] = "Home Fax";
$map['home_phone'] = "Particular";
$map['home_phone_2'] = "Home Phone 2";
$map['home_postal_code'] = "Home Postal Code";
$map['home_state'] = "Home State";
$map['home_street'] = "Home Street";
$map['job_title'] = "Puesto";
$map['last_name'] = "Apellidos";
$map['managers_name'] = "Nombre del director";
$map['middle_name'] = "Segundo nombre";
$map['mobile_phone'] = "Mobile Phone";
$map['notes'] = "Notes";
$map['other_city'] = "Otra ciudad";
$map['other_countryregion'] = "Otra provincia o estado";
$map['other_fax'] = "Otro fax";
$map['other_phone'] = "Otro teléfono";
$map['other_postal_code'] = "Otro código postal";
$map['other_state'] = "Otro país o región";
$map['other_street'] = "Otra calle";
$map['pager'] = "Pager";
$map['primary_phone'] = "Teléfono principal";
$map['spouse'] = "Spouse";
$map['suffix'] = "Suffix";
$map['title'] = "Title";
$map['web_page'] = "Página web";
$map['birth_day'] = "Día de nacimiento";
$map['birth_month'] = "Mes de nacimiento";
$map['birth_year'] = "Año de nacimiento";
$map['display_name'] = "Nombre en pantalla";
$map['fax_number'] = "Fax";
$map['home_address'] = "Dirección personal";
$map['home_country'] = "País de residencia";
$map['home_zipcode'] = "Código postal";
$map['mobile_number'] = "Teléfono móvil";
$map['nickname'] = "Apodo";
$map['organization'] = "Organización";
$map['pager_number'] = "Buscapersonas";
$map['primary_email'] = "Dirección de correo electrónico principal";
$map['secondary_email'] = "Dirección de correo electrónico secundaria";
$map['web_page_1'] = "Página web 1";
$map['web_page_2'] = "Página web 2";
$map['work_phone'] = "Teléfono (Trabajo)";
$map['work_address'] = "Dirección de trabajo";
$map['work_country'] = "País (Trabajo)";
$map['work_zipcode'] = "Código postal (Trabajo)";
$map['date_of_birth'] = "Date of Birth";
$map['email'] = "Email";
$map['home_mobile'] = "Home Mobile";
$map['home_zip'] = "Home Zip";
$map['info'] = "Info";
$map['user_photo'] = "User Photo";
$map['url'] = "URL";
$map['work_city'] = "Work City";
$map['work_company'] = "Work Company";
$map['work_dept'] = "Work Dept";
$map['work_fax'] = "Work Fax";
$map['work_mobile'] = "Work Mobile";
$map['work_state'] = "Work State";
$map['work_title'] = "Work Title";
$map['work_zip'] = "Work Zip";
localization/es_ES/labels.inc000064400000104665151727150600012207 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bienvenido a $product';
$labels['username'] = 'Nombre de usuario';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Servidor';
$labels['login'] = 'Iniciar sesión';
$labels['oauthlogin'] = 'Iniciar sesión con $provider';
$labels['menu'] = 'Menú';
$labels['logout'] = 'Cerrar sesión';
$labels['mail'] = 'Correo';
$labels['settings'] = 'Configuración';
$labels['addressbook'] = 'Contactos';
$labels['darkmode'] = 'Modo oscuro';
$labels['lightmode'] = 'Modo claro';
$labels['inbox'] = 'Entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'SPAM';
$labels['show_real_foldernames'] = 'Mostrar nombres reales para carpetas especiales';
$labels['subject'] = 'Asunto';
$labels['from'] = 'De';
$labels['sender'] = 'Remitente';
$labels['to'] = 'Destinatario';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Cco';
$labels['replyto'] = 'Responder a';
$labels['followupto'] = 'Responder a todos';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Estado de lectura';
$labels['listoptions'] = 'Opciones de listado...';
$labels['listoptionstitle'] = 'Lista de opciones';
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
$labels['threadsfromto'] = 'Hilos $from a $to de $count';
$labels['messagenrof'] = 'Mensaje $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a…';
$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrarlo de todos modos';
$labels['filename'] = 'Nombre del archivo';
$labels['filesize'] = 'Tamaño del archivo';
$labels['addtoaddressbook'] = 'Añadir a contactos';
$labels['sun'] = 'dom';
$labels['mon'] = 'lun';
$labels['tue'] = 'mar';
$labels['wed'] = 'mié';
$labels['thu'] = 'jue';
$labels['fri'] = 'vie';
$labels['sat'] = 'sáb';
$labels['sunday'] = 'domingo';
$labels['monday'] = 'lunes';
$labels['tuesday'] = 'martes';
$labels['wednesday'] = 'miércoles';
$labels['thursday'] = 'jueves';
$labels['friday'] = 'viernes';
$labels['saturday'] = 'sábado';
$labels['jan'] = 'ene';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'abr';
$labels['may'] = 'may';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'ago';
$labels['sep'] = 'sep';
$labels['oct'] = 'oct';
$labels['nov'] = 'nov';
$labels['dec'] = 'dic';
$labels['longjan'] = 'enero';
$labels['longfeb'] = 'febrero';
$labels['longmar'] = 'marzo';
$labels['longapr'] = 'abril';
$labels['longmay'] = 'mayo';
$labels['longjun'] = 'junio';
$labels['longjul'] = 'julio';
$labels['longaug'] = 'agosto';
$labels['longsep'] = 'septiembre';
$labels['longoct'] = 'octubre';
$labels['longnov'] = 'noviembre';
$labels['longdec'] = 'diciembre';
$labels['today'] = 'Hoy';
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Comprobar si hay mensajes nuevos';
$labels['compose'] = 'Redactar';
$labels['writenewmessage'] = 'Crear un mensaje nuevo';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder al remitente';
$labels['replytoallmessage'] = 'Responder a la lista o al remitente y a todos los destinatarios';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder a la lista';
$labels['forward'] = 'Reenviar';
$labels['forwardinline'] = 'Reenviar entre-líneas';
$labels['forwardattachment'] = 'Reenviar como adjunto';
$labels['forwardmessage'] = 'Reenviar mensaje';
$labels['bouncemsg'] = 'Volver a enviar (rebotar)';
$labels['bounce'] = 'Reenviar';
$labels['deletemessage'] = 'Eliminar mensaje';
$labels['movemessagetotrash'] = 'Mover mensaje a la papelera';
$labels['printmessage'] = 'Imprimir este mensaje';
$labels['previousmessage'] = 'Mostrar mensaje anterior';
$labels['firstmessage'] = 'Mostrar primer mensaje';
$labels['nextmessage'] = 'Mostrar el siguiente mensaje';
$labels['lastmessage'] = 'Mostrar el último mensaje';
$labels['backtolist'] = 'Volver a la lista de mensajes';
$labels['viewsource'] = 'Mostrar código';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar mensajes';
$labels['markread'] = 'Como leído';
$labels['markunread'] = 'Como no leído';
$labels['markflagged'] = 'Como resaltado';
$labels['markunflagged'] = 'Como no resaltado';
$labels['markundeleted'] = 'Como no eliminado';
$labels['moreactions'] = 'Más acciones…';
$labels['markallread'] = 'Marcar todos como leídos';
$labels['folders-cur'] = 'Sólo la carpeta seleccionada';
$labels['folders-sub'] = 'Carpeta seleccionada y sus subcarpetas';
$labels['folders-all'] = 'Todas las carpetas';
$labels['more'] = 'Más';
$labels['back'] = 'Volver';
$labels['options'] = 'Opciones';
$labels['composeoptions'] = 'Opciones de redacción';
$labels['optionsandattachments'] = 'Opciones y ficheros adjuntos';
$labels['actions'] = 'Acciones';
$labels['first'] = 'Primero';
$labels['last'] = 'Último';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Siguiente';
$labels['select'] = 'Seleccionar';
$labels['selection'] = 'Selección';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
$labels['currpage'] = 'Página actual';
$labels['isread'] = 'Leído';
$labels['unread'] = 'No leído';
$labels['flagged'] = 'Resaltado';
$labels['unflagged'] = 'No Resaltado';
$labels['unanswered'] = 'Sin contestar';
$labels['withattachment'] = 'Con adjunto';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
$labels['replied'] = 'Contestado';
$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
$labels['threads'] = 'Hilos';
$labels['expand-all'] = 'Expandir todos';
$labels['expand-unread'] = 'Expandir no leídos';
$labels['collapse-all'] = 'Colapsar todos';
$labels['threaded'] = 'Encadenados';
$labels['showunread'] = 'Mostrar no leídos';
$labels['autoexpand_threads'] = 'Expandir hilos de mensajes';
$labels['do_expand'] = 'todos los hilos';
$labels['expand_only_unread'] = 'solo con mensajes no leídos';
$labels['fromto'] = 'De/A';
$labels['flag'] = 'Resaltar';
$labels['attachment'] = 'Adjunto';
$labels['nonesort'] = 'Ninguno';
$labels['sentdate'] = 'Fecha de envío';
$labels['arrival'] = 'Fecha de llegada';
$labels['asc'] = 'ascendente';
$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Listar columnas';
$labels['listsorting'] = 'Columna de ordenación';
$labels['listorder'] = 'Criterio de ordenación';
$labels['listmode'] = 'Modo de vista de lista';
$labels['lmode'] = 'Forma de ordenación';
$labels['layout'] = 'Disposición';
$labels['layoutwidescreen'] = 'Pantalla ancha';
$labels['layoutdesktop'] = 'Escritorio';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Pantalla ancha (vista de 3 columnas)';
$labels['layoutdesktopdesc'] = 'Escritorio (Lista ancha y vista previa del correo debajo)';
$labels['layoutlistdesc'] = 'Lista (sin vista previa del correo)';
$labels['folderactions'] = 'Acciones de carpeta...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensajes';
$labels['mailimportdesc'] = 'Puedes subir ficheros usando formatos <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> o <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Se pueden comprimir varios ficheros en archivos zip.';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'sin límite';
$labels['quotatype'] = 'Tipo de cuota';
$labels['quotatotal'] = 'Límite';
$labels['quotaused'] = 'Usado';
$labels['quotastorage'] = 'Espacio en disco';
$labels['quotamessage'] = 'Número de mensajes';
$labels['shortheaderdate'] = 'El $date';
$labels['shortheaderto'] = 'A $to el $date';
$labels['shortheaderfrom'] = 'De $from el $date';
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['searchplaceholder'] = 'Buscar...';
$labels['resetsearch'] = 'Reiniciar la búsqueda';
$labels['searchmod'] = 'Opciones de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
$labels['body'] = 'Cuerpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nombre';
$labels['searchscope'] = 'Ámbito';
$labels['currentfolder'] = 'Carpeta actual';
$labels['subfolders'] = 'Ésta y subcarpetas';
$labels['allfolders'] = 'Todas las carpetas';
$labels['searchinterval-1W'] = 'más antiguo que una semana';
$labels['searchinterval-1M'] = 'más antiguo que un mes';
$labels['searchinterval-1Y'] = 'más antiguo que un año';
$labels['searchinterval1W'] = 'más reciente que una semana';
$labels['searchinterval1M'] = 'más reciente que un mes';
$labels['searchinterval1Y'] = 'más reciente que un año';
$labels['openinextwin'] = 'Abrir en nueva ventana';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Mostrar en formato de texto simple';
$labels['changeformathtml'] = 'Mostrar en formato HTML';
$labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar el mensaje';
$labels['savemessage'] = 'Guardar como borrador';
$labels['addattachment'] = 'Adjuntar un archivo';
$labels['charset'] = 'Codificación';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Confirmación de recibo';
$labels['dsn'] = 'Notificación de estado de la entrega';
$labels['keepformatting'] = 'Continuar formateando';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje Original';
$labels['selectimage'] = 'Seleccionar imagen';
$labels['addimage'] = 'Añadir imagen';
$labels['selectmedia'] = 'Seleccionar película';
$labels['addmedia'] = 'Añadir película';
$labels['encrypt'] = 'Encriptar';
$labels['encryptmessage'] = 'Encriptar mensaje';
$labels['encryptmessagemailvelope'] = 'Cifrar mensaje con Malivelope';
$labels['importpubkeys'] = 'Importar claves públicas';
$labels['encryptedsendialog'] = 'Mandando mensaje encriptado';
$labels['encryptandsign'] = 'Encriptar y firmar';
$labels['keyid'] = 'ID de la clave';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expirado';
$labels['keyrevoked'] = 'Rechazado';
$labels['bccinstead'] = 'Usar Cco';
$labels['addheader'] = 'Añadir destinatario (cabecera)';
$labels['insert'] = 'Insertar';
$labels['insertcontact'] = 'Insertar contacto(s)';
$labels['recipient'] = 'Destinatario';
$labels['recipientedit'] = 'Editar destinatario';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Corrector ortográfico';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Reanudar edición';
$labels['revertto'] = 'Revertir a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = '¿Restaurar el mensaje?';
$labels['ignore'] = 'Ignorar';
$labels['responses'] = 'Respuestas';
$labels['insertresponse'] = 'Insertar una respuesta';
$labels['manageresponses'] = 'Gestionar respuestas';
$labels['newresponse'] = 'Crear nueva respuesta';
$labels['addresponse'] = 'Añadir respuesta';
$labels['editresponse'] = 'Editar respuesta';
$labels['editresponses'] = 'Editar respuestas';
$labels['responsename'] = 'Nombre';
$labels['responsetext'] = 'Texto de respuesta';
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Adjuntos';
$labels['upload'] = 'Cargar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
$labels['togglecomposeoptions'] = 'Mostrar opciones de escritura';
$labels['attachmentrename'] = 'Renombrar el adjunto';
$labels['low'] = 'Baja';
$labels['lowest'] = 'La más baja';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'La más alta';
$labels['nosubject'] = '(sin asunto)';
$labels['showimages'] = 'Mostrar imágenes';
$labels['allow'] = 'Permitir';
$labels['alwaysshow'] = 'Siempre mostrar imágenes de $sender';
$labels['alwaysallow'] = 'Permitir siempre de $sender';
$labels['isdraft'] = 'Este es un mensaje de borrador.';
$labels['andnmore'] = '$nr más…';
$labels['details'] = 'Detalles';
$labels['summary'] = 'Resumen';
$labels['headers'] = 'Cabeceras';
$labels['allheaders'] = 'Todas las cabeceras...';
$labels['togglemoreheaders'] = 'Mostrar más encabezados del mensaje';
$labels['togglefullheaders'] = 'Desplegar u ocultar encabezados de mensajes';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Sólo texto';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en';
$labels['dontsave'] = 'no guardar';
$labels['maxuploadsize'] = 'Tamaño de archivo máximo permitido: $size';
$labels['addcc'] = 'Añadir Cc';
$labels['addbcc'] = 'Añadir Cco';
$labels['addreplyto'] = 'Añadir Responder a';
$labels['addfollowupto'] = 'Añadir Seguir a';
$labels['sendreceipt'] = '¿Enviar confirmación de lectura?';
$labels['mdnrequest'] = 'El remitente de este mensaje desea ser notificado cuando usted lo lea. ¿Desea enviar esta notificación?';
$labels['receiptread'] = 'Devolver recibo de confirmación (lectura)';
$labels['yourmessage'] = 'Esto es un acuse de recibo de su mensaje';
$labels['receiptnote'] = 'Nota: Esta notificación sólo confirma que su mensaje fue abierto en el ordenador del destinatario. Eso no garantiza que el destinatario haya leído o entendido el contenido del mensaje.';
$labels['sendalwaysto'] = 'Enviar siempre a $email';
$labels['zoomin'] = 'Acercar';
$labels['zoomout'] = 'Alejar';
$labels['rotate'] = 'Girar';
$labels['increaseimage'] = 'Aumentar el tamaño de la imagen';
$labels['decreaseimage'] = 'Disminuir el tamaño de la imagen';
$labels['rotateimage'] = 'Girar imagen';
$labels['showtools'] = 'Mostrar herramientas de imagen';
$labels['hidetools'] = 'Ocultar herramientas de imagen';
$labels['name'] = 'Nombre de visualización';
$labels['firstname'] = 'Nombre';
$labels['surname'] = 'Apellido';
$labels['middlename'] = 'Segundo nombre';
$labels['nameprefix'] = 'Prefijo';
$labels['namesuffix'] = 'Sufijo';
$labels['nickname'] = 'Alias';
$labels['jobtitle'] = 'Título Profesional';
$labels['department'] = 'Departamento';
$labels['gender'] = 'Sexo';
$labels['maidenname'] = 'Apellido de soltera';
$labels['email'] = 'Correo electrónico';
$labels['phone'] = 'Teléfono';
$labels['address'] = 'Dirección';
$labels['street'] = 'Calle';
$labels['locality'] = 'Ciudad';
$labels['zipcode'] = 'Código postal';
$labels['region'] = 'Provincia';
$labels['country'] = 'País';
$labels['birthday'] = 'Cumpleaños';
$labels['anniversary'] = 'Aniversario';
$labels['website'] = 'Página web';
$labels['instantmessenger'] = 'Mensajería instantánea';
$labels['notes'] = 'Notas';
$labels['male'] = 'masculino';
$labels['female'] = 'femenino';
$labels['manager'] = 'Director';
$labels['assistant'] = 'Auxiliar';
$labels['spouse'] = 'Cónyuge';
$labels['allfields'] = 'Todos los campos';
$labels['search'] = 'Buscar';
$labels['searchresult'] = 'Resultado de búsqueda';
$labels['advsearch'] = 'Búsqueda avanzada';
$labels['advanced'] = 'Avanzadas';
$labels['other'] = 'Otro';
$labels['printcontact'] = 'Imprimir contacto';
$labels['qrcode'] = 'Código QR';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabajo';
$labels['typeother'] = 'Otro';
$labels['typemobile'] = 'Móvil';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax de casa';
$labels['typeworkfax'] = 'Fax del trabajo';
$labels['typecar'] = 'Automóvil';
$labels['typepager'] = 'Paginador';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Auxiliar';
$labels['typehomepage'] = 'Página Principal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Añadir campo...';
$labels['addcontact'] = 'Añadir contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
$labels['contactnameandorg'] = 'Nombre y organización';
$labels['personalinfo'] = 'Información personal';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Foto del contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
$labels['delete'] = 'Eliminar';
$labels['discard'] = 'Descartar';
$labels['continue'] = 'Continuar';
$labels['ok'] = 'OK';
$labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Añadir';
$labels['replacephoto'] = 'Reemplazar';
$labels['uploadphoto'] = 'Subir foto';
$labels['choosefile'] = 'Elegir el fichero...';
$labels['choosefiles'] = 'Elegir los ficheros...';
$labels['browse'] = 'Navegar';
$labels['newcontact'] = 'Crear nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Escribir mensaje a';
$labels['contactsfromto'] = 'Contactos $from a $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todo';
$labels['exportsel'] = 'Exportar seleccionados';
$labels['exportvcards'] = 'Exportar contactos en formato vCard';
$labels['newgroup'] = 'Crear nuevo grupo';
$labels['addgroup'] = 'Añadir grupo';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Borrar grupo';
$labels['groupassign'] = 'Asignar a un grupo...';
$labels['groupremove'] = 'Eliminar de un grupo';
$labels['groupremoveselected'] = 'Eliminar los contactos seleccionados del grupo';
$labels['uponelevel'] = 'Subir un nivel';
$labels['previouspage'] = 'Mostrar grupo anterior';
$labels['firstpage'] = 'Mostrar primer grupo';
$labels['nextpage'] = 'Mostrar grupo siguiente';
$labels['lastpage'] = 'Mostrar último grupo';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Listar miembros del grupo';
$labels['personaladrbook'] = 'Direcciones personales';
$labels['searchsave'] = 'Guardar búsqueda';
$labels['searchdelete'] = 'Borrar búsqueda';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar desde archivo';
$labels['importtarget'] = 'Agregar contactos a';
$labels['importreplace'] = 'Reemplazar toda la lista de contactos';
$labels['importgroups'] = 'Importar asignaciones de grupo';
$labels['importgroupsall'] = 'Todos (crear grupos si es necesario)';
$labels['importgroupsexisting'] = 'Sólo para los grupos existentes';
$labels['importdesc'] = 'Puede cargar contactos de una libreta de contactos existente.<br/>Actualmente soportamos la importación de direcciones desde formatos <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> o desde CSV (separados por comas).';
$labels['importmapdesc'] = 'Confirme que la información de mapeado de campos mostrada abajo es correcta antes de proceder con la importación de datos del CSV (separado por comas).';
$labels['fieldnotmapped'] = 'Campo no mapeado (no importar)';
$labels['skipheader'] = 'No importar la primera línea (cabeceras)';
$labels['done'] = 'Hecho';
$labels['settingsfor'] = 'Configuración para';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario';
$labels['editpreferences'] = 'Editar preferencias de usuario';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Administrar identidades';
$labels['newidentity'] = 'Crear nueva identidad';
$labels['addidentity'] = 'Añadir identidad';
$labels['editidentity'] = 'Editar identidad';
$labels['identityencryption'] = 'Encriptación';
$labels['preferhtml'] = 'Mostrar HTML';
$labels['defaultcharset'] = 'Conjunto de caracteres predeterminado';
$labels['htmlmessage'] = 'Mensaje HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Firma digital';
$labels['dateformat'] = 'Formato de fecha';
$labels['timeformat'] = 'Formato de hora';
$labels['prettydate'] = 'Transformar fechas recientes';
$labels['setdefault'] = 'Establecer como  predeterminado';
$labels['autodetect'] = 'Automático';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Zona horaria';
$labels['pagesize'] = 'Filas por página';
$labels['signature'] = 'Firma';
$labels['dstactive'] = 'Horario de verano';
$labels['showinextwin'] = 'Abrir mensaje en una ventana nueva';
$labels['composeextwin'] = 'Redactar en una ventana nueva';
$labels['htmleditor'] = 'Redactar mensajes HTML';
$labels['htmlonreply'] = 'en respuesta a mensaje HTML';
$labels['htmlonreplyandforward'] = 'en reenvío o respuesta a mensaje HTML';
$labels['htmlsignature'] = 'Firma HTML';
$labels['showemail'] = 'Mostrar dirección electrónica con el nombre de visualización';
$labels['previewpane'] = 'Mostrar panel de vista previa';
$labels['skin'] = 'Apariencia de la interfaz';
$labels['logoutclear'] = 'Vaciar Papelera al cerrar sesión';
$labels['logoutcompact'] = 'Compactar Bandeja de Entrada al cerrar sesión';
$labels['uisettings'] = 'Interfaz de Usuario';
$labels['serversettings'] = 'Configuración del servidor';
$labels['mailboxview'] = 'Vista de Buzón';
$labels['mdnrequests'] = 'Cuando se solicite confirmación de recibo';
$labels['askuser'] = 'preguntarme';
$labels['autosend'] = 'enviar confirmación de recibo';
$labels['autosendknown'] = 'enviar confirmación de recibo a mis contactos, preguntar por los demás';
$labels['autosendknownignore'] = 'enviar confirmación de recibo a mis contactos, ignorar los demás';
$labels['autosendtrusted'] = 'Enviar la confirmación de recepción a mis remitentes de confianza, para el resto preguntarme.';
$labels['autosendtrustedignore'] = 'Enviar la confirmación de recepción a mis remitentes de confianza, para el resto ignorar.';
$labels['ignorerequest'] = 'Ignorar petición';
$labels['readwhendeleted'] = 'Marcar el mensaje como leído al borrarlo';
$labels['flagfordeletion'] = 'Marcar el mensaje para borrarse en vez de borrarlo';
$labels['skipdeleted'] = 'No mostrar mensajes borrados';
$labels['deletealways'] = 'Si mover mensajes a la Papelera fracasa, borrarlos';
$labels['deletejunk'] = 'Directamente eliminar mensajes en SPAM';
$labels['showremoteimages'] = 'Mostrar las imágenes externas';
$labels['allowremoteresources'] = 'Permitir recursos remotos (imágenes, estilos)';
$labels['fromknownsenders'] = 'de remitentes conocidos';
$labels['fromtrustedsenders'] = 'de remitentes de confianza';
$labels['frommycontacts'] = 'de mis contactos';
$labels['always'] = 'siempre';
$labels['alwaysbutplain'] = 'siempre, salvo cuando se responda a un texto llano';
$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
$labels['refreshinterval'] = 'Actualizar (comprobar mensajes nuevos, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'inmediatamente';
$labels['messagesdisplaying'] = 'Vista de Mensajes';
$labels['messagescomposition'] = 'Composición de Mensajes';
$labels['mimeparamfolding'] = 'Nombres de archivos adjuntos';
$labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (otro)';
$labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bits';
$labels['savelocalstorage'] = "Guardar (temporalmente) en el almacenamiento local del navegador";
$labels['advancedoptions'] = 'Opciones avanzadas';
$labels['toggleadvancedoptions'] = 'Desplegar opciones avanzadas';
$labels['focusonnewmessage'] = 'Enfocar ventana del navegador al recibir nuevo mensaje';
$labels['checkallfolders'] = 'Revisar todas las carpetas por nuevos mensajes';
$labels['displaynext'] = 'Mostrar el siguiente elemento de la lista después de borrar o mover';
$labels['defaultfont'] = 'Tipo de letra predeterminada de mensaje HTML';
$labels['mainoptions'] = 'Opciones Principales';
$labels['browseroptions'] = 'Opciones del Navegador';
$labels['section'] = 'Sección';
$labels['maintenance'] = 'Mantenimiento';
$labels['newmessage'] = 'Nuevo Mensaje';
$labels['signatureoptions'] = 'Opciones de Firma';
$labels['whenreplying'] = 'Al responder';
$labels['replyempty'] = 'no citar el mensaje original';
$labels['replytopposting'] = 'comenzar mensaje nuevo encima del original';
$labels['replytoppostingnoindent'] = 'comenzar nuevo mensaje encima del citado (sin sangría)';
$labels['replybottomposting'] = 'comenzar mensaje nuevo debajo del original';
$labels['replyremovesignature'] = 'Eliminar la firma original del mensaje al responder';
$labels['autoaddsignature'] = 'Añadir firma automáticamente';
$labels['newmessageonly'] = 'solamente nuevo mensaje';
$labels['replyandforwardonly'] = 'respuestas y reenvíos solamente';
$labels['insertsignature'] = 'Insertar firma';
$labels['sigbelow'] = 'Escribir la firma debajo del mensaje entrecomillado';
$labels['sigseparator'] = 'Forzar el separador estándar en las firmas';
$labels['automarkread'] = 'Marcar mensajes como leídos';
$labels['afternseconds'] = 'después de $n segundos';
$labels['reqmdn'] = 'Siempre solicitar confirmación de recibo';
$labels['reqdsn'] = 'Siempre solicitar notificación del estado de la entrega';
$labels['replysamefolder'] = 'Colocar respuestas en la carpeta del mensaje al cual se responde';
$labels['defaultabook'] = 'Libreta de direcciones predeterminada';
$labels['autocompletesingle'] = 'Omitir direcciones electrónicas alternas en el autocompletado';
$labels['listnamedisplay'] = 'Listar contactos como';
$labels['contactformmode'] = 'Modo de formulario de contacto';
$labels['privatemode'] = 'Privado (Casa)';
$labels['businessmode'] = 'Empresa (Trabajo)';
$labels['collectedaddresses'] = 'Direcciones recogidas';
$labels['collectedrecipients'] = 'Destinatarios recogidos';
$labels['collectedrecipientsopt'] = 'Almacena los destinatarios de correo electrónico de salida en';
$labels['collectedsendersopt'] = 'Almacena los remitentes de confianza en';
$labels['trustedsenders'] = 'Remitentes de confianza';
$labels['spellcheckbeforesend'] = 'Comprobar ortografía antes de enviar un mensaje';
$labels['spellcheckoptions'] = 'Opciones de Revisado de Ortografía';
$labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
$labels['spellcheckignorenums'] = 'Ignorar palabras con números';
$labels['spellcheckignorecaps'] = 'Ignorar palabras con todo mayúsculas';
$labels['addtodict'] = 'Añadir al diccionario';
$labels['mailtoprotohandler'] = 'Registrar controlador de protocolo para enlaces mailto:';
$labels['standardwindows'] = 'Gestionar ventanas emergentes como ventanas estándar';
$labels['forwardmode'] = 'Reenvío de mensajes';
$labels['inline'] = 'entre-línea';
$labels['asattachment'] = 'como adjunto';
$labels['replyallmode'] = 'Acción predeterminada del botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder sólo a la lista de correo (si se encuentra)';
$labels['allmessages'] = 'todos los mensajes';
$labels['olderxdays'] = 'anterior a $x días';
$labels['folder'] = 'Bandeja';
$labels['folders'] = 'Carpetas';
$labels['foldername'] = 'Nombre de carpeta';
$labels['subscribed'] = 'Suscrito';
$labels['messagecount'] = 'Mensajes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear nueva carpeta';
$labels['managefolders'] = 'Administrar carpetas';
$labels['specialfolders'] = 'Carpetas especiales';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades de carpeta';
$labels['parentfolder'] = 'Carpeta raíz';
$labels['location'] = 'Ubicación';
$labels['info'] = 'Información';
$labels['getfoldersize'] = 'Clic para saber el tamaño de la bandeja';
$labels['changesubscription'] = 'Haga clic para cambiar suscripción';
$labels['foldertype'] = 'Tipo de Carpeta';
$labels['personalfolder'] = 'Carpeta Privada';
$labels['otherfolder'] = 'Carpeta de Otro Usuario';
$labels['sharedfolder'] = 'Carpeta Pública';
$labels['findfolders'] = 'Encontrar carpetas';
$labels['findcontacts'] = 'Encontrar contactos';
$labels['findmail'] = 'Buscar mensajes de correo electrónico';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Otros usuarios';
$labels['namespace.shared'] = 'Compartido';
$labels['dualuselabel'] = 'Puede contener únicamente';
$labels['dualusemail'] = 'mensajes';
$labels['dualusefolder'] = 'carpetas';
$labels['generate'] = 'Generar';
$labels['encryptioncreatekey'] = 'Crear una nueva clave par';
$labels['openmailvelopesettings'] = 'Abrir ajustes de Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Tiene $nr claves privadas que coinciden almacenadas en su llavero Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Esta identidad de remitentes todavía no tiene una clave privada PGP almacenada en su extensión Mailvelope. ¿Quiere crear una para activar la mensajería encriptada?';
$labels['encryption'] = 'Cifrado';
$labels['mailvelopeoptions'] = 'Opciones de Mailvelope';
$labels['mailvelopemainkeyring'] = 'Usar el llavero de claves principal de Mailvelope';
$labels['mailvelopenotfound'] = 'La extensión Mailvelope no está habilitada/instalada en su navegador.';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orden ascendente';
$labels['sortdesc'] = 'Orden descendente';
$labels['undo'] = 'Deshacer';
$labels['installedplugins'] = 'Complementos instalados';
$labels['plugin'] = 'Complemento';
$labels['version'] = 'Versión';
$labels['source'] = 'Origen';
$labels['destination'] = 'Destino';
$labels['license'] = 'Licencia';
$labels['support'] = 'Obtener soporte';
$labels['savedsearches'] = 'Búsquedas guardadas';
$labels['dateformatY'] = 'AAAA';
$labels['dateformaty'] = 'AA';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Europeo Occidental';
$labels['easterneuropean'] = 'Europeo Oriental';
$labels['southeasterneuropean'] = 'Europeo Sudoriental';
$labels['baltic'] = 'Báltico';
$labels['cyrillic'] = 'Cirílico';
$labels['arabic'] = 'Árabe';
$labels['greek'] = 'Griego';
$labels['hebrew'] = 'Hebreo';
$labels['turkish'] = 'Turco';
$labels['nordic'] = 'Nórdico';
$labels['thai'] = 'Tailandés';
$labels['celtic'] = 'Celta';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
$labels['arialabeltopnav'] = 'Control de ventana';
$labels['arialabeltasknav'] = 'Tareas de la aplicación';
$labels['arialabeltoolbar'] = 'Barra de herramientas de la aplicación';
$labels['arialabellistnav'] = 'Navegación por listas';
$labels['arialabelactivetask'] = 'Tarea activa';
$labels['arialabelmessagessearchfilter'] = 'Filtro de listado de correo electrónico';
$labels['arialabelmailsearchform'] = 'Formulario de búsqueda de mensaje de correo electrónico';
$labels['arialabelcontactsearchform'] = 'Formulario de búsqueda de contactos';
$labels['arialabelmailquicksearchbox'] = 'Entrada de búsqueda de correo electrónico';
$labels['arialabelquicksearchbox'] = 'Entrada de búsqueda';
$labels['arialabelfoldersearchfilter'] = 'Filtro de listas de carpetas';
$labels['arialabelfoldersearchform'] = 'Formulario de búsqueda de carpeta';
$labels['arialabelfolderlist'] = 'Selección de carpeta de correo electrónico';
$labels['arialabelmessagelist'] = 'Listado de mensajes de correo electrónico';
$labels['arialabelmailpreviewframe'] = 'Previsualizar mensaje';
$labels['arialabelmailboxmenu'] = 'Menú de acciones de carpeta';
$labels['arialabellistselectmenu'] = 'Menú de selección de listado';
$labels['arialabelthreadselectmenu'] = 'Menú de listado de conversaciones';
$labels['arialabelmessagelistoptions'] = 'Opciones para mostrar y ordenar los mensajes';
$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensaje';
$labels['arialabelmessagenav'] = 'Navegación entre mensajes';
$labels['arialabelmessagebody'] = 'Cuerpo del mensaje';
$labels['arialabelmessageactions'] = 'Acciones del mensaje';
$labels['arialabelcontactquicksearch'] = 'Formulario de búsqueda de contactos';
$labels['arialabelcontactsearchbox'] = 'Entra de búsqueda de contacto';
$labels['arialabelmessageheaders'] = 'Encabezados del mensaje';
$labels['arialabelforwardingoptions'] = 'Opciones de reenvío';
$labels['arialabelreplyalloptions'] = 'Opciones de "Responder a todos"';
$labels['arialabelmoremessageactions'] = 'Más acciones de mensaje';
$labels['arialabelmorecontactactions'] = 'Más acciones de contacto';
$labels['arialabelmarkmessagesas'] = 'Marcar los mensajes seleccionados como…';
$labels['arialabelcomposeoptions'] = 'Opciones de composición';
$labels['arialabelresponsesmenu'] = 'Menú de respuestas enlatadas';
$labels['arialabelattachmentuploadform'] = 'Formulario de subida de adjunto';
$labels['arialabelattachmentmenu'] = 'Opciones de archivo adjunto';
$labels['arialabelmailtomenu'] = 'Opciones de dirección de correo electrónico';
$labels['arialabelattachmentpreview'] = 'Previsualizar adjunto';
$labels['ariasummarycomposecontacts'] = 'Lista de contactos y grupos para elegir como destinatarios';
$labels['arialabelcontactexportoptions'] = 'Opciones de exportación de contacto';
$labels['arialabelabookgroupoptions'] = 'Opciones de grupo de contactos de la agenda';
$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidad';
$labels['arialabelresponseeditfrom'] = 'Formulario de edición de respuesta';
$labels['arialabelsearchterms'] = 'Términos de búsqueda';
$labels['arialabeldropactionmenu'] = 'Menú de acciones de Arrastrar y Soltar';
$labels['arialabelheadersmenu'] = 'Menú para añadir el destinatario (cabecera)';
$labels['arialabelimagetools'] = 'Herramientas de imagen';
$labels['helplistnavigation'] = 'Listar la navegación por teclado';
$labels['helplistkeyboardnavigation'] = "Flechas arriba/abajo: Mover de fila el foco o selección.
Espacio: Seleccionar la fila enfocada.
Mayúscula + arriba/abajo: Seleccionar otra fila de arriba/abajo.
Control + Espacio: Añadir fila enfocada a la selección / quitar de la selección.";
$labels['helplistkeyboardnavmessages'] = "Flechas izquierda/derecha: expandir/recoger hilo de mensaje (sólo en modo hilo).
Retorno: Abrir el mensaje seleccionado/enfocado.
Borrar: Mover los mensajes seleccionado a la Papelera.";
$labels['helplistkeyboardnavcontacts'] = "Retorno: Abrir el contacto seleccionado";
localization/es_ES/messages.inc000064400000045130151727150600012543 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '¡Ha ocurrido un error!';
$messages['loginfailed']  = 'Contraseña o nombre de usuario incorrecto.';
$messages['cookiesdisabled'] = 'Su navegador no acepta cookies.';
$messages['sessionerror'] = 'Su sesión no es válida o ha expirado.';
$messages['cookiesmismatch'] = 'Se ha detectado una incoherencia en las cookies. Por favor, limpie las cookies de su navegador.';
$messages['storageerror'] = 'Error de conexión con el servidor IMAP.';
$messages['servererror'] = '¡Error del servidor!';
$messages['servererrormsg'] = 'Error de servidor: $msg';
$messages['accountlocked'] = 'Demasiados intentos de conexión fallidos. Inténtalo de nuevo más tarde.';
$messages['connerror'] = '¡Error de conexión (fallo al intentar alcanzar el servidor)!';
$messages['dberror'] = '¡Error de base de datos!';
$messages['dbconnerror'] = '¡No fue posible conectar con la base de datos!';
$messages['windowopenerror'] = 'iLa ventana emergente fue bloqueada!';
$messages['requesttimedout'] = 'Ha expirado el tiempo de respuesta';
$messages['errorreadonly'] = 'No se pudo realizar la operación. La carpeta es de sólo lectura.';
$messages['errornoperm'] = 'No se pudo realizar la operación. Permiso denegado.';
$messages['erroroverquota'] = 'No se pudo completar la operación. No hay espacio libre en el disco.';
$messages['erroroverquotadelete'] = 'No hay espacio libre en el disco. Use Shift+Supr para borrar un mensaje.';
$messages['invalidrequest'] = '¡Petición inválida! No se guardaron los datos.';
$messages['invalidhost'] = 'Nombre de servidor inválido.';
$messages['nomessagesfound'] = 'No se han encontrado mensajes en este buzón.';
$messages['loggedout'] = 'Ha terminado correctamente la sesión. ¡Hasta pronto!';
$messages['mailboxempty'] = 'El buzón está vacío';
$messages['nomessages'] = 'No hay mensajes';
$messages['refreshing'] = 'Actualizando…';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Cargando archivo...';
$messages['attaching'] = 'No se pudo adjuntar el archivo.';
$messages['uploadingmany'] = 'Cargando archivos…';
$messages['loadingdata'] = 'Cargando datos...';
$messages['checkingmail'] = 'Verificando si hay nuevos mensajes...';
$messages['sendingmessage'] = 'Enviando mensaje...';
$messages['messagesent'] = 'Mensaje enviado correctamente.';
$messages['savingmessage'] = 'Guardando mensaje...';
$messages['messagesaved'] = 'Mensaje guardado en Borradores.';
$messages['successfullysaved'] = 'Guardado correctamente.';
$messages['savingresponse'] = 'Guardando texto de respuesta...';
$messages['deleteresponseconfirm'] = '¿Realmente quiere eliminar este texto de respuesta?';
$messages['nocontactselected'] = 'No ha seleccionado ningún contacto aún.';
$messages['addedsuccessfully'] = 'Contacto añadido correctamente a la libreta de direcciones.';
$messages['contactexists'] = 'Ya existe un contacto con esta dirección de correo.';
$messages['contactnameexists'] = 'Ya existe un contacto con el mismo nombre.';
$messages['blockedimages'] = 'Para proteger su privacidad, las imágenes externas de este mensaje han sido bloqueadas.';
$messages['blockedresources'] = 'Para proteger su privacidad, los recursos remotos han sido bloqueados.';
$messages['suspiciousemail'] = 'Este mensaje contiene direcciones de correo electrónico sospechosas que pueden ser fraudulentas.';
$messages['bccemail'] = 'El o los mensaje(s) reenviados contienen destinatarios confidenciales (Bcc)';
$messages['bouncehint'] = 'El mensaje será enviado sin ninguna modificación, ej. usando el cuerpo original, encabezados y destinatarios.';
$messages['encryptedmessage'] = 'Este es un mensaje cifrado y no puede ser mostrado. ¡Lo sentimos!';
$messages['externalmessagedecryption'] = 'Este es un mensaje cifrado y se puede descifrar con una extensión de tu navegador.';
$messages['nopubkeyfor'] = 'No se ha encontrado una clave pública de $email';
$messages['nopubkeyforsender'] = 'No se ha encontrado una clave pública de tu identidad como emisor. ¿Quieres cifrar el mensaje sólo para los destinatarios?';
$messages['encryptnoattachments'] = 'Todavía no se pueden cifrar los adjuntos subidos. Por favor, añádelos luego en el editor de cifrado.';
$messages['searchpubkeyservers'] = '¿Quieres buscar servidores de clave pública para las claves que faltan?';
$messages['encryptpubkeysfound'] = 'Se han encontrado las siguientes claves públicas:';
$messages['keyservererror'] = 'No se ha podido obtener la clave del servidor de claves.';
$messages['keyimportsuccess'] = 'La clave pública $key se ha importado correctamente en tu llavero de claves.';
$messages['nocontactsfound'] = 'No se encontraron contactos.';
$messages['contactnotfound'] = 'El contacto solicitado no existe.';
$messages['contactsearchonly'] = 'Debes utilizar un formulario de búsqueda para ver los contactos de la libreta de direcciones seleccionada.';
$messages['sendingfailed'] = 'Error al enviar mensaje.';
$messages['senttooquickly'] = 'Por favor, espere $sec segundo(s) antes de enviar este mensaje.';
$messages['errorsavingsent'] = 'Ha ocurrido un error al guardar el mensaje enviado.';
$messages['errorsaving'] = 'Ha ocurrido un error al guardar.';
$messages['errormoving'] = 'No se pudo mover el/los mensaje(s).';
$messages['errorcopying'] = 'No se pudo copiar el/los mensaje(s).';
$messages['errordeleting'] = 'No se pudo eliminar el/los mensaje(s).';
$messages['errormarking'] = 'No se pudo marcar el/los mensaje(s).';
$messages['alerttitle'] = 'Atención';
$messages['confirmationtitle'] = 'Está seguro...';
$messages['deletecontactconfirm']  = '¿Realmente quiere eliminar los contactos seleccionados?';
$messages['deletegroupconfirm']  = '¿Realmente quiere borrar el grupo seleccionado?';
$messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?';
$messages['deletefolderconfirm']  = '¿Realmente quiere eliminar esta carpeta?';
$messages['movefolderconfirm']  = '¿Realmente quiere eliminar esta carpeta?';
$messages['purgefolderconfirm']  = '¿Realmente quiere eliminar todos los mensajes de esta carpeta?';
$messages['contactdeleting'] = 'Eliminando contacto(s)...';
$messages['groupdeleting'] = 'Eliminando grupo…';
$messages['folderdeleting'] = 'Eliminando carpeta...';
$messages['foldermoving'] = 'Moviendo carpeta...';
$messages['foldersubscribing'] = 'Suscribiendo carpeta...';
$messages['folderunsubscribing'] = 'Anulando suscripción a carpeta...';
$messages['formincomplete'] = 'No ha completado todos los campos del formulario.';
$messages['noemailwarning'] = 'Por favor, introduzca un correo electrónico válido.';
$messages['nonamewarning']  = 'Por favor, introduzca un nombre.';
$messages['nopagesizewarning'] = 'Por favor, introduzca un tamaño de página.';
$messages['nosenderwarning'] = 'Por favor, introduzca la dirección de correo del remitente.';
$messages['recipientsadded'] = 'Destinatario(s) añadido(s) con éxito.';
$messages['norecipientwarning'] = 'Por favor, introduzca al menos un destinatario.';
$messages['disclosedrecipwarning'] = 'Todos los receptores verán las direcciones de correo electrónico de cada uno. Para evitarlo y para proteger su privacidad puede utilizar el campo Cco';
$messages['disclosedreciptitle'] = 'Demasiados destinatarios';
$messages['nosubjectwarning']  = 'El campo "Asunto" está vacío. ¿Desea completarlo en este momento?';
$messages['nosubjecttitle']  = 'Sin asunto';
$messages['nobodywarning'] = '¿Desea enviar este mensaje sin texto?';
$messages['notsentwarning'] = 'El mensaje no se ha enviado y tiene cambios sin guardar. ¿Quieres descartar los cambios?';
$messages['restoresavedcomposedata'] = 'Se ha encontrado un mensaje previamente redactado sin enviar.\n\nAsunto: $subject\nGuardado: $date\n\n¿Desea restaurar este mensaje?';
$messages['nosearchname'] = 'Por favor, ingrese un nombre de contacto o dirección de correo electrónico.';
$messages['notuploadedwarning'] = 'No todos los adjuntos han sido cargados todavía. Por favor, espere o cancele la carga.';
$messages['searchsuccessful'] = 'Se encontraron $nr mensajes.';
$messages['contactsearchsuccessful'] = 'Encontrados $nr contactos.';
$messages['searchnomatch'] = 'No se obtuvieron resultados.';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Revisando...';
$messages['stillsearching'] = 'Aún buscando...';
$messages['nospellerrors'] = 'No se encontraron errores ortográficos.';
$messages['folderdeleted'] = 'Carpeta eliminada correctamente.';
$messages['foldersubscribed'] = 'Suscrito a carpeta correctamente.';
$messages['folderunsubscribed'] = 'Suscripción a carpeta anulada correctamente.';
$messages['folderpurged'] = 'Carpeta vaciada exitosamente';
$messages['folderexpunged'] = 'Carpeta compactada exitosamente';
$messages['deletedsuccessfully'] = 'Eliminado correctamente.';
$messages['converting'] = 'Eliminando formato de mensaje...';
$messages['messageopenerror'] = 'No se pudo cargar el mensaje del servidor.';
$messages['filelinkerror'] = 'No se pudo adjuntar el archivo.';
$messages['fileuploaderror'] = 'Error al cargar archivos.';
$messages['csvfilemismatch'] = 'La importación de múltiples archivos CSV con diferentes campos no está soportada.';
$messages['filesizeerror'] = 'El archivo excede el tamaño máximo ($size).';
$messages['filecounterror'] = 'Puedes subir un máximo de $count archivos de cada vez.';
$messages['msgsizeerror'] = 'No se ha podido adjuntar un archivo. El tamaño máximo del mensaje ($size) se ha excedido.';
$messages['msgsizeerrorfwd'] = 'El tamaño máximo del mensaje ($size) se ha excedido. $num mensaje(s) no han sido adjuntados.';
$messages['copysuccess'] = '$nr contactos copiados correctamente.';
$messages['movesuccess'] = '$nr contactos movidos correctamente.';
$messages['copyerror'] = 'No se pudo copiar ningún contacto.';
$messages['moveerror'] = 'No se pudo mover ningún contacto.';
$messages['sourceisreadonly'] = 'Esta dirección origen es de sólo lectura.';
$messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto.';
$messages['movingmessage'] = 'Moviendo mensaje(s)...';
$messages['copyingmessage'] = 'Copiando mensaje(s)...';
$messages['copyingcontact'] = 'Copiando contacto(s)…';
$messages['movingcontact'] = 'Moviendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando mensaje(s)...';
$messages['markingmessage'] = 'Marcando mensaje(s)...';
$messages['addingmember'] = 'Añadiendo contacto(s) al grupo…';
$messages['removingmember'] = 'Eliminando contacto(s) del grupo…';
$messages['receiptsent'] = 'La confirmación de lectura ha sido enviada correctamente.';
$messages['errorsendingreceipt'] = 'No se pudo enviar la confirmación de lectura.';
$messages['deleteidentityconfirm'] = '¿Realmente desea eliminar esta identidad?';
$messages['nodeletelastidentity'] = 'No se puede eliminar esta identidad puesto a que es la única.';
$messages['forbiddencharacter'] = 'El nombre de la carpeta contiene un carácter prohibido.';
$messages['selectimportfile'] = 'Por favor, seleccione un archivo para cargar.';
$messages['addresswriterror'] = 'La libreta de direcciones seleccionada no admite escritura.';
$messages['contactaddedtogroup'] = 'Se añadieron los contactos a este grupo correctamente.';
$messages['contactremovedfromgroup'] = 'Se eliminaron los contactos de este grupo correctamente.';
$messages['nogroupassignmentschanged'] = 'No hay cambios en la asignación de grupos.';
$messages['importwait'] = 'Importando, por favor espere...';
$messages['importformaterror'] = '¡La importación falló! El fichero enviado no es un fichero válido de importación de datos.';
$messages['importconfirm'] = '<b>Se han importado $inserted contactos correctamente</b>';
$messages['importconfirmskipped'] = '<b>Ignoradas $skipped entradas existentes</b>';
$messages['importmessagesuccess'] = '$nr mensajes importados correctamente';
$messages['importmessageerror'] = '¡La importación falló! El fichero enviado no es un fichero válido de mensaje o buzón de correo.';
$messages['opnotpermitted'] = '¡Operación no permitida!';
$messages['nofromaddress'] = 'Falta dirección electrónica en la identidad seleccionada.';
$messages['editorwarning'] = 'Al cambiar el tipo de editor puede ocasionar la pérdida de formato del texto. ¿Desea continuar?';
$messages['httpreceivedencrypterror'] = 'Ha ocurrido un error fatal de configuración. Contacte inmediatamente a su administrador. <b>Su mensaje no ha sido enviado.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): Ha fallado la conexión al servidor.';
$messages['smtpautherror'] = 'Error SMTP ($code): Ha fallado la autenticación.';
$messages['smtpfromerror'] = 'Error SMTP ($code): No se pudo asignar el remitente "$from" ($msg).';
$messages['smtptoerror'] = 'Error SMTP ($code): No se pudo establecer destinatario "$to" ($msg).';
$messages['smtprecipientserror'] = 'Error SMTP: No es posible analizar la lista de destinatarios.';
$messages['smtputf8error'] = 'Error SMTP: El servidor no soporta Unicode en la dirección de correo electrónico.';
$messages['smtpsizeerror'] = 'Error SMTP: El tamaño de mensaje excede el límite del servidor ($limit)';
$messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'Dirección de correo incorrecta: $email';
$messages['toomanyrecipients'] = 'Demasiados destinatarios. Reduzca el número de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max.';
$messages['internalerror'] = 'Ha ocurrido un error interno. Por favor, inténtelo de nuevo.';
$messages['contactdelerror'] = 'No se pudo eliminar el/los contacto(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminado(s) correctamente.';
$messages['contactrestoreerror'] = 'No se pudo restaurar contacto(s) eliminado(s).';
$messages['contactrestored'] = 'Contacto(s) restaurado(s) correctamente.';
$messages['groupdeleted'] = 'Grupo eliminado correctamente.';
$messages['grouprenamed'] = 'Grupo renombrado correctamente.';
$messages['groupcreated'] = 'Grupo creado correctamente.';
$messages['savedsearchdeleted'] = 'La búsqueda guardada se ha eliminado correctamente.';
$messages['savedsearchdeleteerror'] = 'No se ha podido eliminar la búsqueda guardada.';
$messages['savedsearchcreated'] = 'Se ha guardado la búsqueda correctamente.';
$messages['savedsearchcreateerror'] = 'No se pudo guardar la búsqueda.';
$messages['messagedeleted'] = 'Mensaje(s) eliminado(s) correctamente.';
$messages['messagemoved'] = 'Mensaje(s) movido(s) correctamente.';
$messages['messagemovedtotrash'] = 'Los mensajes se han trasladado a la papelera.';
$messages['messagecopied'] = 'Mensaje(s) copiado(s) correctamente.';
$messages['messagemarked'] = 'Mensaje(s) marcado(s) correctamente.';
$messages['autocompletechars'] = 'Introduce al menos $min caracteres para autocompletar.';
$messages['autocompletemore'] = 'Se encontraron más coincidencias. Favor de ingresar más caracteres.';
$messages['namecannotbeempty'] = 'El nombre no puede estar vacío.';
$messages['nametoolong'] = 'El nombre es demasiado largo.';
$messages['namedotforbidden'] = 'El nombre de la carpeta no puede empezar con un punto';
$messages['folderupdated'] = 'Carpeta actualizada correctamente.';
$messages['foldercreated'] = 'Carpeta creada correctamente.';
$messages['invalidimageformat'] = 'No es un formato de imagen válido.';
$messages['mispellingsfound'] = 'Se han detectado errores ortográficos en el mensaje.';
$messages['parentnotwritable'] = 'No se pudo crear/mover la carpeta a la carpeta superior seleccionada. No tiene permisos de acceso.';
$messages['messagetoobig'] = 'Esta parte del mensaje es demasiado grande para ser procesado.';
$messages['attachmentvalidationerror'] = '¡ATENCIÓN! Este adjunto es sospechoso porque su tipo no coincide con el tipo declarado en el mensaje. Si no confía en su remitente, no debería abrirlo en su navegador porque podría tener contenido malicioso.<br/<br/> <em>Esperado: $expected; encontrado: $detected</em>';
$messages['noscriptwarning'] = 'Advertencia: ¡Este servicio de webmail necesita Javascript! Para poder usarlo habilite el soporte de Javascript en su navegador, por favor.';
$messages['messageissent'] = 'El mensaje se ha enviado, pero aún no se ha guardado. ¿Quieres guardarlo ahora?';
$messages['errnotfound'] = 'Archivo no encontrado';
$messages['errnotfoundexplain'] = '¡No se ha encontrado el recurso solicitado!';
$messages['errfailedrequest'] = 'Ha fallado la petición';
$messages['errauthorizationfailed'] = 'Ha fallado la autorización';
$messages['errunauthorizedexplain'] = '¡No se ha podido comprobar que usted esté autorizado a acceder a este servicio!';
$messages['errrequestcheckfailed'] = 'Ha fallado la solicitud de comprobación';
$messages['errcsrfprotectionexplain'] = "Por su seguridad, se ha protegido el acceso a este recurso contra CSRF.\nSi lee esto probablemente no ha cerrado la sesión antes de dejar la aplicación web.\n\nAhora hace falta interacción humana para continuar.";
$messages['errcontactserveradmin'] = 'Por favor, póngase en contacto con el administrador de su servidor.';
$messages['clicktoresumesession'] = 'Haga clic aquí para reanudar la sesión anterior';
$messages['errcomposesession'] = 'Error de sesión de escritura';
$messages['errcomposesessionexplain'] = 'No se ha encontrado la sesión de escritura requerida.';
$messages['clicktocompose'] = 'Hacer clic aquí para escribir un nuevo mensaje';
$messages['nosupporterror'] = 'Esta función no está soportada por el navegador.';
$messages['siginserted'] = 'Firma insertada correctamente.';
$messages['responseinserted'] = 'Respuesta insertada correctamente.';
$messages['noresponsesavailable'] = 'No hay respuestas disponibles';
$messages['listempty'] = 'La lista está vacía.';
$messages['listusebutton'] = 'Use el botón Crear para añadir un nuevo registro.';
$messages['keypaircreatesuccess'] = 'Un nuevo par de claves ha sido creada con éxito para $identity.';
$messages['emptyattachment'] = 'Parece que este archivo adjunto está vacío. <br>Por favor, consulta a la persona que lo envió.';
$messages['oauthloginfailed'] = 'Ha fallado el inicio de sesión OAuth. Por favor, vuelva a intentarlo.';
localization/ps/labels.inc000064400000030264151727150600011624 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product ته ښه راغلاست';
$labels['username'] = 'کارن نوم';
$labels['password'] = 'پټنوم';
$labels['server'] = 'برابرونکی';
$labels['login'] = 'ننوتون';
$labels['logout'] = 'وتون';
$labels['mail'] = 'برېښناليک';
$labels['settings'] = 'ځاني برابرونې';
$labels['addressbook'] = 'پتې کتاب';
$labels['inbox'] = 'راغلي ليکونه';
$labels['drafts'] = 'بارليک';
$labels['sent'] = 'لېږل شوي ليکونه';
$labels['trash'] = 'کثافت دانۍ';
$labels['junk'] = 'جنک';
$labels['subject'] = 'مضمون';
$labels['from'] = 'استوونکی';
$labels['to'] = 'ترلاسه کوونکی';
$labels['cc'] = 'لمېسل';
$labels['bcc'] = 'پټليکی';
$labels['replyto'] = 'ځوابول';
$labels['date'] = 'نېټه';
$labels['size'] = 'کچه';
$labels['priority'] = 'لومړيتوب';
$labels['organization'] = 'ټولنه';
$labels['mailboxlist'] = 'پوښۍ';
$labels['messagesfromto'] = 'له ټاکلي استوزو څخه ټاکلي شمېرل شوو استوزو ته';
$labels['messagenrof'] = 'له $nr ځخه استوزو $count استوزو ته';
$labels['copy'] = 'لمېسل';
$labels['moveto'] = 'ته خوځوي';
$labels['download'] = 'ښکته کول';
$labels['filename'] = 'فايل نوم';
$labels['filesize'] = 'فايل کچه';
$labels['addtoaddressbook'] = 'د پتو کتاب ته يې ورزيات کړئ';
$labels['sun'] = 'يوه نۍ';
$labels['mon'] = 'دوه نۍ';
$labels['tue'] = 'درې نۍ';
$labels['wed'] = 'څلورنۍ';
$labels['thu'] = 'پنځنۍ';
$labels['fri'] = 'جمعه';
$labels['sat'] = 'نۍ';
$labels['sunday'] = 'يوه نۍ';
$labels['monday'] = 'دوه نۍ';
$labels['tuesday'] = 'درې نۍ';
$labels['wednesday'] = 'منځنۍ';
$labels['thursday'] = 'پنځنۍ';
$labels['friday'] = 'جمعه';
$labels['saturday'] = 'نۍ';
$labels['jan'] = 'حنوري';
$labels['feb'] = 'فبروري';
$labels['mar'] = 'مارچ';
$labels['apr'] = 'اپريل';
$labels['may'] = 'مئ';
$labels['jun'] = 'جون';
$labels['jul'] = 'جولاي';
$labels['aug'] = 'اګست';
$labels['sep'] = 'سپتمپر';
$labels['oct'] = 'اکتوبر';
$labels['nov'] = 'نومبر';
$labels['dec'] = 'ډسمبر';
$labels['longjan'] = 'جنوري';
$labels['longfeb'] = 'فبروري';
$labels['longmar'] = 'مارچ';
$labels['longapr'] = 'اپريل';
$labels['longmay'] = 'مئ';
$labels['longjun'] = 'جون';
$labels['longjul'] = 'جولای';
$labels['longaug'] = 'اګست';
$labels['longsep'] = 'سپتمبر';
$labels['longoct'] = 'اکتوبر';
$labels['longnov'] = 'نومبر';
$labels['longdec'] = 'ډسمبر';
$labels['today'] = 'نن';
$labels['checkmail'] = 'نوي استوزي وګوره';
$labels['compose'] = 'استوزه وليکه';
$labels['writenewmessage'] = 'نوي استوزي جوړول';
$labels['replytomessage'] = 'استوونکي ته ځواب ورکړئ';
$labels['replytoallmessage'] = 'استوونکي او ټولو ترلاسه کوونکو ته ځواب لېږل';
$labels['forwardmessage'] = 'استوزه بل ته استول';
$labels['deletemessage'] = 'استوزه ړنګول';
$labels['movemessagetotrash'] = 'استوزه کثافت داني ته واستوه';
$labels['printmessage'] = 'دا استوزه چاپ کړه';
$labels['previousmessage'] = 'پخوانۍ استوزه وښيه';
$labels['firstmessage'] = 'لومړی استوزه وښيه';
$labels['nextmessage'] = 'ورپسې استوزه وښيه';
$labels['lastmessage'] = 'پای /آخري استوزه وښيه';
$labels['backtolist'] = 'بيرته د استوزو لست ته';
$labels['viewsource'] = 'سرچينه وښيه';
$labels['markmessages'] = 'استوزي په نښه کړئ';
$labels['markread'] = 'لوستل شوي په توګه';
$labels['markunread'] = 'د نالوستل شوي په توګه';
$labels['markflagged'] = 'د بي کاره په توګه';
$labels['markunflagged'] = 'د کارونې په توګه';
$labels['select'] = 'ټاکل';
$labels['all'] = 'ټول';
$labels['none'] = 'هېڅ';
$labels['unread'] = 'نالوستي';
$labels['flagged'] = 'بې کاره';
$labels['unanswered'] = 'ناځواب شوي';
$labels['filter'] = 'چڼول';
$labels['nonesort'] = 'هېڅ';
$labels['compact'] = 'کېښکلی';
$labels['empty'] = 'تش';
$labels['quota'] = 'ټيکلي لارښود';
$labels['unknown'] = 'نامعلوم';
$labels['unlimited'] = 'بي کچه';
$labels['quicksearch'] = 'ژر پلټنه';
$labels['resetsearch'] = 'د پلټنې بياسمون';
$labels['openinextwin'] = 'په نوي کړکۍ کې پرانيزه';
$labels['sendmessage'] = 'اوس يې واستوه';
$labels['savemessage'] = 'دا ګارليک خوندي کړه';
$labels['addattachment'] = 'يو فايل ونښلوه';
$labels['charset'] = 'چيرست';
$labels['editortype'] = 'د ټايب سمونګر';
$labels['returnreceipt'] = 'د رسليک راګرځېدل';
$labels['checkspelling'] = 'ليکدود کتنه';
$labels['resumeediting'] = 'کارمخينې سمونه';
$labels['revertto'] = 'ته بېرته اړول';
$labels['attachments'] = 'نښلني';
$labels['upload'] = 'پورته کول';
$labels['close'] = 'بندول';
$labels['low'] = 'ټيټ';
$labels['lowest'] = 'خورا ټيټ';
$labels['normal'] = 'نورمال';
$labels['high'] = 'لوړ';
$labels['highest'] = 'خورا لوړ';
$labels['nosubject'] = 'هېڅ موضوع';
$labels['showimages'] = 'انځورونه وښيه';
$labels['alwaysshow'] = 'تل له $استوونکي څخه انځورونه وښيه';
$labels['htmltoggle'] = 'ايچ ټی ايمل ال';
$labels['plaintoggle'] = 'ساده متن';
$labels['savesentmessagein'] = 'استول شوي استوزه په خوندي کړه';
$labels['dontsave'] = 'مه ساته';
$labels['maxuploadsize'] = 'لږترلږه د اجازه شوي فايل کچه $وي';
$labels['addcc'] = 'څرګندليک';
$labels['addbcc'] = 'پټليک';
$labels['addreplyto'] = 'ته ورزيات کړه';
$labels['mdnrequest'] = 'ددې استوزي استوونکی پوښتي چېد استوزي لوستلو سره سم تاسې خبر کړي،.    غواړئ چې استوونکی خبرشي؟';
$labels['receiptread'] = 'رسليک راګرځېدل (لوستل';
$labels['yourmessage'] = 'دا رسليک راګرځېدل ستاسې استوزي لپاره دی';
$labels['receiptnote'] = 'يادونه: دا رسليک تاسې ته يوازې ددې خبرتيا درکوي چې کله استوزی د ترلاسه کوونکي په کمپيوټر کې څرګند شي،  ددې هيڅ ډاډګيرنه نشته چې ترلاسه کوونکي د  استوزي متن لوستی او يا پرې پوه شوی دی';
$labels['name'] = 'نوم ښوونه';
$labels['firstname'] = 'نوم';
$labels['surname'] = 'کورنی نوم';
$labels['email'] = 'برېښناليک';
$labels['editcontact'] = 'اړيکلوري سمون';
$labels['edit'] = 'سمون';
$labels['cancel'] = 'لري کول';
$labels['save'] = 'ساتل';
$labels['delete'] = 'ړنګول';
$labels['deletecontact'] = 'ټاکل شوي اړيکلوري ړنګ کړه';
$labels['composeto'] = 'ته ليک وليکه';
$labels['contactsfromto'] = 'له دومره اړيکلورو څخه دومره شمېرل شوي Contacts $from to $to of $count';
$labels['print'] = 'چاپ';
$labels['export'] = 'بهرول';
$labels['exportvcards'] = 'اړيکلوري د ويکارډ په بڼه واستوئ';
$labels['previouspage'] = 'پخوانی غونډ وښيه';
$labels['firstpage'] = 'لومړی غونډ وښيه';
$labels['nextpage'] = 'ورپسې غونډ وښيه';
$labels['lastpage'] = 'پای غونډ وښيه';
$labels['groups'] = 'ډلې';
$labels['personaladrbook'] = 'ځاني پتې';
$labels['import'] = 'رانقلول';
$labels['importcontacts'] = 'اړيکلوري نقل کړئ';
$labels['importreplace'] = 'ټول ادرس کتاب بدل کړئ';
$labels['done'] = 'ترسره شو';
$labels['settingsfor'] = 'لپاره برابرونې';
$labels['preferences'] = 'غورونې';
$labels['userpreferences'] = 'کارن غورونې';
$labels['editpreferences'] = 'د کارن غورونو سمون';
$labels['identities'] = 'پېژندنې';
$labels['preferhtml'] = 'ايچ ټي ام ايل ښوون';
$labels['htmlmessage'] = 'ايچ ټي ام ايل استوزه';
$labels['prettydate'] = 'په زړه پورې نېټې';
$labels['setdefault'] = 'تلوالي برابرول';
$labels['autodetect'] = 'په خپلواکه توګه';
$labels['language'] = 'ژبه';
$labels['timezone'] = 'سيميز وخت';
$labels['pagesize'] = 'په هر مخ پرتې کښې';
$labels['signature'] = 'لاسليک';
$labels['dstactive'] = 'ورځنيو کارونو لنډيز ساتل';
$labels['htmleditor'] = 'ايچ ټي‌ام ايل استوزي وليکه';
$labels['htmlsignature'] = 'ايچ ټي ام ايل لاسليک';
$labels['previewpane'] = 'پخوانی چوکاټ وښييه';
$labels['skin'] = 'انټرفيس بڼه';
$labels['logoutclear'] = 'کثافت داني د وتنې په وخت کې پاکه کړه';
$labels['logoutcompact'] = 'د وتنې په وخت کې ليکبکس ونښلوه';
$labels['uisettings'] = 'د کاروونکي برسېر';
$labels['serversettings'] = 'سرور برابرونې';
$labels['mailboxview'] = 'ليکبکس ښکار کړه';
$labels['mdnrequests'] = 'د استوونکي خبرتياوې';
$labels['askuser'] = 'له کاروونکي څخه وپوښته';
$labels['autosend'] = 'په خپلواکه توګه واستوه';
$labels['readwhendeleted'] = 'په ړنګ شوو کې استوزي د لوستل شوي  په توګه په نښه کړه';
$labels['flagfordeletion'] = 'استوزه د ړنګ شوي پرځای بېکاره کړه';
$labels['skipdeleted'] = 'ړنګ شوي استوزي مه ښکاره کوه';
$labels['showremoteimages'] = 'انځورونه له لري په ليکه کې ښکاره کړه';
$labels['fromknownsenders'] = 'له اشنا استوونکو څخه';
$labels['always'] = 'تل';
$labels['showinlineimages'] = 'نښلول شوي انځورونه تر استوزې لاندې ښکاره کړه';
$labels['autosavedraft'] = 'بارليک په خپل سري توګه  خوندي‌کړه';
$labels['everynminutes'] = 'هر ه ګڼه په دقيقو کې';
$labels['never'] = 'هېڅ';
$labels['messagesdisplaying'] = 'استوزي ښيي';
$labels['messagescomposition'] = 'استوزي ليکي';
$labels['mimeparamfolding'] = 'د نښلول شوو نومونه';
$labels['2231folding'] = 'بشپړ RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (نور)';
$labels['advancedoptions'] = 'پرمختللي لارې';
$labels['focusonnewmessage'] = 'فوکاس براوسر کړکۍ په نوي استوزي کې';
$labels['checkallfolders'] = 'په ټولو پوښيو کې نوي استوزي وګورئ';
$labels['folder'] = 'پوښۍ';
$labels['folders'] = 'پوښۍ';
$labels['foldername'] = 'پوښۍ نوم';
$labels['subscribed'] = 'ګډ شو';
$labels['messagecount'] = 'استوزي';
$labels['create'] = 'جوړول، رامنځ ته کول';
$labels['createfolder'] = 'نوې پوښۍ جوړ کړه';
$labels['managefolders'] = 'پوښيو څارل';
$labels['specialfolders'] = 'ځانګړي پوښۍۍ';
$labels['sortby'] = 'اڼل';
$labels['sortasc'] = 'له پورته نه ښکته خوا ته برابرول';
$labels['sortdesc'] = 'له ښکته نه پورته خوا ته برابرول';
$labels['B'] = 'بي';
$labels['KB'] = 'کي بي';
$labels['MB'] = 'ام بي';
$labels['GB'] = 'جي بي';
localization/ps/messages.inc000064400000014266151727150600012175 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['loginfailed']  = 'ننوتنه په بري سره ترسره نه شوه';
$messages['cookiesdisabled'] = 'ستاسو لټوني ککوړي ونه منل';
$messages['sessionerror'] = 'ستاسې ناسته ناباوري يا له مينځه تللې ده';
$messages['storageerror'] = 'له ای ميپ سرور سره پيوستون په بري سره ترسره نه شو';
$messages['nomessagesfound'] = 'ليکبکس کې هېڅ استوزي ونه مونده';
$messages['loading'] = 'د کار په حال کې';
$messages['loadingdata'] = 'اومتوک د کار په حال کې';
$messages['checkingmail'] = 'نوي استوزي ګوري';
$messages['sendingmessage'] = 'استوزه استوي.';
$messages['messagesent'] = 'استوزه په بري سره واستول شوه';
$messages['savingmessage'] = 'استوزه خوندي کوي';
$messages['messagesaved'] = 'استوزه په بارليک کې خوندي شوه';
$messages['successfullysaved'] = 'په بري‌سره خوندي شوه';
$messages['addedsuccessfully'] = 'اړيکلوری په بري سره پتې کتاب ته ور زيات شو';
$messages['blockedimages'] = 'ستاسو د پټتيآ خوندي کېدو لپاره ، له لري انځورنه په دې استوزي‌کې بند کړئ';
$messages['encryptedmessage'] = 'دا يوه پټه استوزه ده او نه څرګندېږي. بښنه غواړو';
$messages['nocontactsfound'] = 'هېڅ اړيکلوری يې ونه موند';
$messages['contactnotfound'] = 'وړاندی شوی اړيکلوری ونه مونده';
$messages['sendingfailed'] = 'استوزي استونه په بري سره پای ته ونه رسېده';
$messages['senttooquickly'] = 'مهرباني وکړئ $صبر وکړئ د دې استوزې له لېږلو مخکې';
$messages['errormoving'] = 'استوزه ونه خوځول شوه';
$messages['errordeleting'] = 'استوزه ړنګه نه شوه';
$messages['deletecontactconfirm']  = 'په رښتيا سره غواړئ چې ټاکل شوی اړيکلوری ړنګ کړئ؟';
$messages['deletemessagesconfirm'] = 'په رښتيا سره غواړئ چې ټاکل شوي استوزي‌ړنګ کړئ؟';
$messages['deletefolderconfirm']  = 'په رښتيآ سره غواړئ چې دا پوښۍ ړنګه کړئ؟';
$messages['purgefolderconfirm']  = 'په رښتيا سره غواړئ چې ددې پوښۍ ټول استوزي‌ړنګ کړئ؟';
$messages['folderdeleting'] = 'پوښۍ ړنګوي';
$messages['foldermoving'] = 'پوښۍ خوځوي';
$messages['formincomplete'] = 'دا پورمه بشپړه ډکه شوې نه ده';
$messages['noemailwarning'] = 'مهرباني وکړئ د يوه شته برېښناليک پته ورځای کړئ';
$messages['nonamewarning']  = 'مهرباني‌وکړئ يو نوم وليکئ';
$messages['nopagesizewarning'] = 'مهرباني‌وکړئ د پاڼې کچه ورکړئ';
$messages['norecipientwarning'] = 'مهرباني‌وکړئ لږ تر لږه يو ترلاسه کوونکی وليکئ';
$messages['nosubjectwarning']  = 'د مضمون ډګر تش دی يا تاسو غواړئ چې همدا اوس يو له هغو څخه وليکئ';
$messages['nobodywarning'] = 'دا استوزه پرته له متن څخه استوئ؟';
$messages['nosearchname'] = 'مهرباني وکړئ  د يو اړيکلوري‌نوم يا برېښناليک پته وليکئ';
$messages['searchsuccessful'] = 'استوزي ومونده$';
$messages['searchnomatch'] = 'د پلټلو بيا راګرځېدل هېڅ سمون ونه خوړه';
$messages['searching'] = 'پلټي';
$messages['checking'] = 'ګوري';
$messages['nospellerrors'] = 'هېڅ ليکدودي‌تيروتنه ونه مونده';
$messages['folderdeleted'] = 'پوښۍ په بشپړه توګه ړنګه شوه';
$messages['deletedsuccessfully'] = 'په بشپړه توګه ړنګ شول';
$messages['converting'] = 'له استوزي څخه بڼې ړنګېږي';
$messages['messageopenerror'] = 'له سرور څخه استوزي پرمخ نه شي تلی';
$messages['fileuploaderror'] = 'دفايل پورته کول په بري سره سرته ونه رسيده';
$messages['filesizeerror'] = 'د پورته شوي فايل کچه بايد لږترلږه له $څخه تيری ونه کړي';
$messages['sourceisreadonly'] = 'ددې پتې يوازې سرچينه لوستل کېږي';
$messages['errorsavingcontact'] = 'د پتې اړيکلوری يې خوندي‌نه شو کړای';
$messages['movingmessage'] = 'استوزه خوځوي';
$messages['receiptsent'] = 'يو لوستل شوی رسليک په بشپړه توګه واستول شو';
$messages['errorsendingreceipt'] = 'رسليک يې ونه شوای ليږلی';
$messages['nodeletelastidentity'] = 'تاسې نه شئ کولی چې دا پېژندنه ړنګه کړئ، داستاسو اخرنی پيژندنه ده';
$messages['forbiddencharacter'] = 'د پوښۍ نوم له فوربايډن تورو څخه جوړ دی';
$messages['selectimportfile'] = 'مهرباني وکړئ‌يو فايل د پورته کولو لپاره وټاکئ';
$messages['addresswriterror'] = 'ټاکل شوی پتې کتاب د بياليکلو نه دی';
$messages['importwait'] = 'نقلوي...صبر وکړئ';
$messages['importconfirm'] = '<b>په بشپړه توګه نقل شو $اړيکلوري داخل شول, $شته تيرشوي انټاير څخه تيرشول</b>:<p><em>$نومونه</em></p>';
$messages['opnotpermitted'] = 'چار اجازه نه لري';
localization/de_DE/timezones.inc000064400000047205151727150600012720 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Algier';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Daressalam';
$labels['tz:africa:djibouti'] = 'Dschibuti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadischu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nuakschott';
$labels['tz:africa:ouagadougou'] = 'Wagadugu';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhuk';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentinien';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Kaiman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havanna';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaika';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexiko-Stadt';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Nord-Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktis';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arktis';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asien';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Aschgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bischkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damaskus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hongkong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamtschatka';
$labels['tz:asia:karachi'] = 'Karatschi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kalkutta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnojarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makasar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Maskat';
$labels['tz:asia:nicosia'] = 'Nikosia';
$labels['tz:asia:novokuznetsk'] = 'Nowokusnezk';
$labels['tz:asia:novosibirsk'] = 'Nowosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontinak';
$labels['tz:asia:pyongyang'] = 'Pjöngjang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qysylorda';
$labels['tz:asia:riyadh'] = 'Riad';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Schanghai';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipeh';
$labels['tz:asia:tashkent'] = 'Taschkent';
$labels['tz:asia:tbilisi'] = 'Tiflis';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Wladiwostok';
$labels['tz:asia:yakutsk'] = 'Jakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Jekaterinburg';
$labels['tz:asia:yerevan'] = 'Jerewan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azoren';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanaren';
$labels['tz:atlantic:cape_verde'] = 'Kap Verde';
$labels['tz:atlantic:faroe'] = 'Färöer';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavík';
$labels['tz:atlantic:south_georgia'] = 'Südgeorgien';
$labels['tz:atlantic:st_helena'] = 'St. Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australien';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrachan';
$labels['tz:europe:athens'] = 'Athen';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brüssel';
$labels['tz:europe:bucharest'] = 'Bukarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Kischinau';
$labels['tz:europe:copenhagen'] = 'Kopenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Insel Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiew';
$labels['tz:europe:kirov'] = 'Kirow';
$labels['tz:europe:lisbon'] = 'Lissabon';
$labels['tz:europe:ljubljana'] = 'Laibach';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moskau';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prag';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rom';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratow';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Uljanowsk';
$labels['tz:europe:uzhgorod'] = 'Uschhorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikan';
$labels['tz:europe:vienna'] = 'Wien';
$labels['tz:europe:vilnius'] = 'Wilna';
$labels['tz:europe:volgograd'] = 'Wolgograd';
$labels['tz:europe:warsaw'] = 'Warschau';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Saporischschja';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Malediven';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pazifik';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fidschi';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/de_DE/csv2vcard.inc000064400000010126151727150600012570 0ustar00<?php

/*
+-----------------------------------------------------------------------+
| localization/de_DE/csv2vcard.inc                                      |
|                                                                       |
| Localization file of the Roundcube Webmail client                     |
| Copyright (C) 2005-2014, The Roundcube Dev Team                       |
|                                                                       |
| Licensed under the GNU General Public License version 3 or            |
| any later version with exceptions for skins & plugins.                |
| See the README file for a full license statement.                     |
|                                                                       |
+-----------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl>                            |
+-----------------------------------------------------------------------+
*/
$map = array();
$map['anniversary'] = "Jahrestag";
$map['assistants_name'] = "Name Assistent";
$map['assistants_phone'] = "Telefon Assistent";
$map['birthday'] = "Geburtstag";
$map['business_city'] = "Ort geschäftlich";
$map['business_countryregion'] = "Region geschäftlich";
$map['business_fax'] = "Fax geschäftlich";
$map['business_phone'] = "Telefon geschäftlich";
$map['business_phone_2'] = "Telefon geschäftlich 2";
$map['business_postal_code'] = "Postleitzahl geschäftlich";
$map['business_state'] = "Land geschäftlich";
$map['business_street'] = "Straße geschäftlich";
$map['car_phone'] = "Autotelefon";
$map['categories'] = "Kategorien";
$map['company'] = "Firma";
$map['department'] = "Abteilung";
$map['email_address'] = "E-Mail-Adresse";
$map['email_2_address'] = "E-Mail 2: Adresse";
$map['email_3_address'] = "E-Mail 3: Adresse";
$map['first_name'] = "Vorname";
$map['gender'] = "Geschlecht";
$map['home_city'] = "Ort privat";
$map['home_countryregion'] = "Region privat";
$map['home_fax'] = "Fax privat";
$map['home_phone'] = "Telefon privat";
$map['home_phone_2'] = "Telefon privat 2";
$map['home_postal_code'] = "Postleitzahl privat";
$map['home_state'] = "Land privat";
$map['home_street'] = "Straße privat";
$map['job_title'] = "Position";
$map['last_name'] = "Nachname";
$map['managers_name'] = "Manager's Name";
$map['middle_name'] = "Weitere Vornamen";
$map['mobile_phone'] = "Mobiltelefon";
$map['notes'] = "Notizen";
$map['other_city'] = "Weiterer Ort";
$map['other_countryregion'] = "Weitere Region";
$map['other_fax'] = "Weiteres Fax";
$map['other_phone'] = "Weiteres Telefon";
$map['other_postal_code'] = "Weitere Postleitzahl";
$map['other_state'] = "Weiteres Land";
$map['other_street'] = "Weitere Straße";
$map['pager'] = "Pager";
$map['primary_phone'] = "Haupttelefon";
$map['spouse'] = "Spouse";
$map['suffix'] = "Suffix";
$map['title'] = "Title";
$map['web_page'] = "Webseite";
$map['birth_day'] = "Geburtstag";
$map['birth_month'] = "Geburtsmonat";
$map['birth_year'] = "Geburtsjahr";
$map['display_name'] = "Anzeigename";
$map['fax_number'] = "Fax-Nummer";
$map['home_address'] = "Privat: Adresse";
$map['home_country'] = "Privat: Land";
$map['home_zipcode'] = "Privat: PLZ";
$map['mobile_number'] = "Mobil-Tel.-Nr.";
$map['nickname'] = "Spitzname";
$map['organization'] = "Organisation";
$map['pager_number'] = "Pager-Nummer";
$map['primary_email'] = "Primäre E-Mail-Adresse";
$map['secondary_email'] = "Sekundäre E-Mail-Adresse";
$map['web_page_1'] = "Webseite 1";
$map['web_page_2'] = "Webseite 2";
$map['work_phone'] = "Tel. dienstlich";
$map['work_address'] = "Dienstlich: Adresse";
$map['work_country'] = "Dienstlich: Land";
$map['work_zipcode'] = "Dienstlich: PLZ";
$map['date_of_birth'] = "Date of Birth";
$map['email'] = "Email";
$map['home_mobile'] = "Home Mobile";
$map['home_zip'] = "Home Zip";
$map['info'] = "Info";
$map['user_photo'] = "User Photo";
$map['url'] = "URL";
$map['work_city'] = "Work City";
$map['work_company'] = "Work Company";
$map['work_dept'] = "Work Dept";
$map['work_fax'] = "Work Fax";
$map['work_mobile'] = "Work Mobile";
$map['work_state'] = "Work State";
$map['work_title'] = "Work Title";
$map['work_zip'] = "Work Zip";
localization/de_DE/labels.inc000064400000102627151727150600012145 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Willkommen bei $product';
$labels['username'] = 'Benutzername';
$labels['password'] = 'Passwort';
$labels['server'] = 'Server';
$labels['login'] = 'Anmelden';
$labels['oauthlogin'] = 'Anmeldung mit $provider';
$labels['menu'] = 'Menü';
$labels['logout'] = 'Abmelden';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Einstellungen';
$labels['addressbook'] = 'Adressbuch';
$labels['darkmode'] = 'Dunkler Modus';
$labels['lightmode'] = 'Heller Modus';
$labels['inbox'] = 'Posteingang';
$labels['drafts'] = 'Entwürfe';
$labels['sent'] = 'Gesendet';
$labels['trash'] = 'Gelöscht';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Echte Namen für Spezialordner anzeigen';
$labels['subject'] = 'Betreff';
$labels['from'] = 'Von';
$labels['sender'] = 'Absender';
$labels['to'] = 'An';
$labels['cc'] = 'Kopie';
$labels['bcc'] = 'Blindkopie';
$labels['replyto'] = 'Antwort an';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Datum';
$labels['size'] = 'Größe';
$labels['priority'] = 'Priorität';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Gelesen/Ungelesen';
$labels['listoptions'] = 'Listenoptionen …';
$labels['listoptionstitle'] = 'Listenoptionen';
$labels['mailboxlist'] = 'Ordner';
$labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
$labels['threadsfromto'] = 'Konversationen $from bis $to von $count';
$labels['messagenrof'] = 'Nachricht $nr von $count';
$labels['fromtoshort'] = '$from – $to von $count';
$labels['copy'] = 'Kopieren';
$labels['move'] = 'Verschieben';
$labels['moveto'] = 'Verschieben nach …';
$labels['copyto'] = 'Kopieren nach …';
$labels['download'] = 'Herunterladen';
$labels['open'] = 'Öffnen';
$labels['showattachment'] = 'Anzeigen';
$labels['showanyway'] = 'Trotzdem anzeigen';
$labels['filename'] = 'Dateiname';
$labels['filesize'] = 'Dateigröße';
$labels['addtoaddressbook'] = 'Ins Adressbuch übernehmen';
$labels['sun'] = 'So';
$labels['mon'] = 'Mo';
$labels['tue'] = 'Di';
$labels['wed'] = 'Mi';
$labels['thu'] = 'Do';
$labels['fri'] = 'Fr';
$labels['sat'] = 'Sa';
$labels['sunday'] = 'Sonntag';
$labels['monday'] = 'Montag';
$labels['tuesday'] = 'Dienstag';
$labels['wednesday'] = 'Mittwoch';
$labels['thursday'] = 'Donnerstag';
$labels['friday'] = 'Freitag';
$labels['saturday'] = 'Samstag';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mär';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'März';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Dezember';
$labels['today'] = 'Heute';
$labels['refresh'] = 'Aktualisieren';
$labels['checkmail'] = 'Auf neue Nachrichten überprüfen';
$labels['compose'] = 'Schreiben';
$labels['writenewmessage'] = 'Neue Nachricht schreiben';
$labels['reply'] = 'Antworten';
$labels['replytomessage'] = 'Antwort verfassen';
$labels['replytoallmessage'] = 'Antwort an Liste oder an Absender und alle Empfänger verfassen';
$labels['replyall'] = 'Allen antworten';
$labels['replylist'] = 'Liste antworten';
$labels['forward'] = 'Weiterleiten';
$labels['forwardinline'] = 'innerhalb der Nachricht';
$labels['forwardattachment'] = 'Als Anhang weiterleiten';
$labels['forwardmessage'] = 'Nachricht weiterleiten';
$labels['bouncemsg'] = 'Erneut senden (falls unzustellbar)';
$labels['bounce'] = 'Erneut senden';
$labels['deletemessage'] = 'Nachricht löschen';
$labels['movemessagetotrash'] = 'Nachricht in den Papierkorb verschieben';
$labels['printmessage'] = 'Nachricht drucken';
$labels['previousmessage'] = 'Vorherige Nachricht anzeigen';
$labels['firstmessage'] = 'Die erste Nachricht anzeigen';
$labels['nextmessage'] = 'Nächste Nachricht anzeigen';
$labels['lastmessage'] = 'Die letzte Nachricht anzeigen';
$labels['backtolist'] = 'Zurück zur Liste';
$labels['viewsource'] = 'Quelltext anzeigen';
$labels['mark'] = 'Markieren';
$labels['markmessages'] = 'Nachrichten markieren';
$labels['markread'] = 'Als gelesen';
$labels['markunread'] = 'Als ungelesen';
$labels['markflagged'] = 'Als wichtig';
$labels['markunflagged'] = 'Als unwichtig';
$labels['moreactions'] = 'Mehr …';
$labels['markallread'] = 'Alle als gelesen markieren';
$labels['folders-cur'] = 'Nur ausgewählten Ordner';
$labels['folders-sub'] = 'Ausgewählter Ordner und seine Unterordner';
$labels['folders-all'] = 'Alle Ordner';
$labels['more'] = 'Mehr';
$labels['back'] = 'Zurück';
$labels['options'] = 'Optionen';
$labels['composeoptions'] = 'Optionen für das Schreiben';
$labels['optionsandattachments'] = 'Optionen und Anhänge';
$labels['actions'] = 'Aktionen';
$labels['first'] = 'Erste(r)';
$labels['last'] = 'Letzte(r)';
$labels['previous'] = 'Vorherige(r)';
$labels['next'] = 'Nächste(r)';
$labels['select'] = 'Auswahl';
$labels['selection'] = 'Auswahl';
$labels['all'] = 'Alle';
$labels['none'] = 'Keine';
$labels['currpage'] = 'Aktuelle Seite';
$labels['isread'] = 'Gelesen';
$labels['unread'] = 'Ungelesene';
$labels['flagged'] = 'Als wichtig markiert';
$labels['unflagged'] = 'Als unwichtig markiert';
$labels['unanswered'] = 'Unbeantwortete';
$labels['withattachment'] = 'Mit Anhang';
$labels['deleted'] = 'Gelöschte';
$labels['undeleted'] = 'Nicht gelöscht';
$labels['replied'] = 'Beantwortet';
$labels['forwarded'] = 'Weitergeleitet';
$labels['invert'] = 'Invertieren';
$labels['filter'] = 'Filter';
$labels['list'] = 'Liste';
$labels['threads'] = 'Konversationen';
$labels['expand-all'] = 'Alle aufklappen';
$labels['expand-unread'] = 'Ungelesene aufklappen';
$labels['collapse-all'] = 'Alle zuklappen';
$labels['threaded'] = 'Gruppiert';
$labels['showunread'] = 'Ungelesene Nachrichten anzeigen';
$labels['autoexpand_threads'] = 'Konversationen aufklappen';
$labels['do_expand'] = 'alle';
$labels['expand_only_unread'] = 'nur ungelesene';
$labels['fromto'] = 'Von/An';
$labels['flag'] = 'Markierung';
$labels['attachment'] = 'Anhang';
$labels['nonesort'] = 'Keine';
$labels['sentdate'] = 'Sendedatum';
$labels['arrival'] = 'Empfangsdatum';
$labels['asc'] = 'aufsteigend';
$labels['desc'] = 'absteigend';
$labels['listcolumns'] = 'Spalten';
$labels['listsorting'] = 'Sortieren nach';
$labels['listorder'] = 'Sortierung';
$labels['listmode'] = 'Anzeigemodus';
$labels['lmode'] = 'Listenmodus';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Breitbildschirm';
$labels['layoutdesktop'] = 'Schreibtisch';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Breitbild (3-Spalten-Ansicht)';
$labels['layoutdesktopdesc'] = 'Schreibtisch (breite Liste und Nachrichtenvorschau unten)';
$labels['layoutlistdesc'] = 'Liste (keine Nachrichtenvorschau)';
$labels['folderactions'] = 'Ordneraktionen …';
$labels['compact'] = 'Packen';
$labels['empty'] = 'Leeren';
$labels['importmessages'] = 'Nachrichten importieren';
$labels['mailimportdesc'] = 'Sie können Mail-Dateien im Format <a href="https://en.wikipedia.org/wiki/Email#Message_format">MME</a> oder <a href="https://en.wikipedia.org/wiki/Mbox">MBOX</a> hochladen.';
$labels['mailimportzip'] = 'Mehrere Dateien können zu ZIP-Archiven komprimiert werden.';
$labels['quota'] = 'Speicherplatz';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unbegrenzt';
$labels['quotatype'] = 'Kapazitätstyp';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Verwendet';
$labels['quotastorage'] = 'Festplattenspeicher';
$labels['quotamessage'] = 'Nachrichtenanzahl';
$labels['shortheaderdate'] = 'Am $date';
$labels['shortheaderto'] = 'An $to am $date';
$labels['shortheaderfrom'] = 'Von $from am $date';
$labels['quicksearch'] = 'Schnellsuche';
$labels['searchplaceholder'] = 'Suchen …';
$labels['resetsearch'] = 'Suche zurücksetzen';
$labels['searchmod'] = 'Suchkriterien ändern';
$labels['msgtext'] = 'Nachricht';
$labels['body'] = 'Inhalt';
$labels['type'] = 'Typ';
$labels['namex'] = 'Name';
$labels['searchscope'] = 'Bereich';
$labels['currentfolder'] = 'Aktueller Ordner';
$labels['subfolders'] = 'Dieser und alle Unterordner';
$labels['allfolders'] = 'Alle Ordner';
$labels['searchinterval-1W'] = 'älter als eine Woche';
$labels['searchinterval-1M'] = 'älter als einen Monat';
$labels['searchinterval-1Y'] = 'älter als ein Jahr';
$labels['searchinterval1W'] = 'jünger als eine Woche';
$labels['searchinterval1M'] = 'jünger als einen Monat';
$labels['searchinterval1Y'] = 'jünger als ein Jahr';
$labels['openinextwin'] = 'In neuem Fenster öffnen';
$labels['emlsave'] = 'Lokal speichern (.eml)';
$labels['changeformattext'] = 'Als reiner Text anzeigen';
$labels['changeformathtml'] = 'Als original HTML anzeigen';
$labels['editasnew'] = 'Als neue Nachricht öffnen';
$labels['send'] = 'Senden';
$labels['sendmessage'] = 'Nachricht jetzt senden';
$labels['savemessage'] = 'Nachricht speichern';
$labels['addattachment'] = 'Datei anhängen';
$labels['charset'] = 'Zeichensatz';
$labels['editortype'] = 'Bearbeitungstyp';
$labels['returnreceipt'] = 'Empfangsbestätigung (MDN)';
$labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
$labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
$labels['originalmessage'] = 'Originalnachricht';
$labels['selectimage'] = 'Bild auswählen';
$labels['addimage'] = 'Bild hinzufügen';
$labels['selectmedia'] = 'Film auswählen';
$labels['addmedia'] = 'Film hinzufügen';
$labels['encrypt'] = 'Verschlüsseln';
$labels['encryptmessage'] = 'Nachrichten verschlüsseln';
$labels['encryptmessagemailvelope'] = 'Nachricht mit Mailvelope verschlüsseln';
$labels['importpubkeys'] = 'Öffentliche Schlüssel importieren';
$labels['encryptedsendialog'] = 'Verschlüsselte Nachricht wird gesendet';
$labels['encryptandsign'] = 'Verschlüsseln und unterschreiben';
$labels['keyid'] = 'Schlüsselkennung';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Abgelaufen';
$labels['keyrevoked'] = 'Widerrufen';
$labels['bccinstead'] = 'Blindkopie verwenden';
$labels['addheader'] = 'Empfänger hinzufügen (Kopfzeile)';
$labels['insert'] = 'Hinzufügen';
$labels['insertcontact'] = 'Kontakt(e) einfügen';
$labels['recipient'] = 'Empfänger';
$labels['recipientedit'] = 'Empfänger bearbeiten';
$labels['editidents'] = 'Identitäten bearbeiten';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortsetzen';
$labels['revertto'] = 'Zurück zu';
$labels['restore'] = 'Wiederherstellen';
$labels['restoremessage'] = 'Nachricht wiederherstellen?';
$labels['ignore'] = 'Ignorieren';
$labels['responses'] = 'Schnellantworten';
$labels['insertresponse'] = 'Schnellantwort hinzufügen';
$labels['manageresponses'] = 'Schnellantworten verwalten';
$labels['newresponse'] = 'Neue Antwort erstellen';
$labels['addresponse'] = 'Antwort hinzufügen';
$labels['editresponse'] = 'Schnellantwort bearbeiten';
$labels['editresponses'] = 'Schnellantworten bearbeiten';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Text der Antwort';
$labels['attach'] = 'Anhang';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
$labels['uploadprogress'] = '$percent ($current von $total)';
$labels['close'] = 'Schließen';
$labels['messageoptions'] = 'Optionen …';
$labels['togglecomposeoptions'] = 'Zusammenstellungsoptionen auswählen';
$labels['attachmentrename'] = 'Anhang umbenennen';
$labels['low'] = 'Niedrig';
$labels['lowest'] = 'Niedrigste';
$labels['normal'] = 'Normal';
$labels['high'] = 'Hoch';
$labels['highest'] = 'Höchste';
$labels['nosubject'] = '(kein Betreff)';
$labels['showimages'] = 'Bilder anzeigen';
$labels['allow'] = 'Erlauben';
$labels['alwaysshow'] = 'Bilder von $sender immer zeigen';
$labels['alwaysallow'] = 'Von $sender immer erlauben';
$labels['isdraft'] = 'Dies ist ein Entwurf';
$labels['andnmore'] = '$nr weitere …';
$labels['details'] = 'Details';
$labels['summary'] = 'Zusammenfassung';
$labels['headers'] = 'Kopfzeilen';
$labels['allheaders'] = 'Alle Kopfzeilen...';
$labels['togglemoreheaders'] = 'Mehr Kopfzeilen der Nachricht anzeigen';
$labels['togglefullheaders'] = 'Rohkopfzeilen ein-/ausblenden';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Einfacher Text';
$labels['savesentmessagein'] = 'Nachricht speichern in';
$labels['dontsave'] = 'nicht speichern';
$labels['maxuploadsize'] = 'Maximal erlaubte Dateigröße ist $size';
$labels['addcc'] = 'Kopie hinzufügen';
$labels['addbcc'] = 'Blindkopie hinzufügen';
$labels['addreplyto'] = 'Antwortadresse hinzufügen';
$labels['addfollowupto'] = 'Followup-To hinzufügen';
$labels['sendreceipt'] = 'Lesebestätigung senden?';
$labels['mdnrequest'] = 'Der Sender dieser Nachricht möchte gerne eine Lesebestätigung. Wollen Sie dieses bestätigen?';
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dies ist eine Empfangsbestätigung für Ihre Nachricht';
$labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht bestätigt. Dies ist keine Garantie, dass die Nachricht gelesen und verstanden wurde.';
$labels['sendalwaysto'] = 'Immer an $email senden';
$labels['zoomin'] = 'Vergrößern';
$labels['zoomout'] = 'Verkleinern';
$labels['rotate'] = 'Drehen';
$labels['increaseimage'] = 'Bild vergrößern';
$labels['decreaseimage'] = 'Bild verkleinern';
$labels['rotateimage'] = 'Bild drehen';
$labels['showtools'] = 'Bild-Tools anzeigen';
$labels['hidetools'] = 'Bild-Tools ausblenden';
$labels['name'] = 'Angezeigter Name';
$labels['firstname'] = 'Vorname';
$labels['surname'] = 'Nachname';
$labels['middlename'] = 'zweiter  Vorname';
$labels['nameprefix'] = 'Anrede';
$labels['namesuffix'] = 'Namenszusatz';
$labels['nickname'] = 'Spitzname';
$labels['jobtitle'] = 'Berufsbezeichnung';
$labels['department'] = 'Firma';
$labels['gender'] = 'Geschlecht';
$labels['maidenname'] = 'Mädchenname';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresse';
$labels['street'] = 'Straße';
$labels['locality'] = 'Ort';
$labels['zipcode'] = 'PLZ';
$labels['region'] = 'Region';
$labels['country'] = 'Land';
$labels['birthday'] = 'Geburtstag';
$labels['anniversary'] = 'Jahrestag';
$labels['website'] = 'Webseite';
$labels['instantmessenger'] = 'IM-Adresse';
$labels['notes'] = 'Notizen';
$labels['male'] = 'männlich';
$labels['female'] = 'weiblich';
$labels['manager'] = 'Vorgesetze(r)';
$labels['assistant'] = 'Assistenz';
$labels['spouse'] = 'Partner/in';
$labels['allfields'] = 'Alle Felder';
$labels['search'] = 'Suche';
$labels['searchresult'] = 'Suchergebnis';
$labels['advsearch'] = 'Detaillierte Suche';
$labels['advanced'] = 'Erweitert';
$labels['other'] = 'Andere';
$labels['printcontact'] = 'Kontakt ausdrucken';
$labels['qrcode'] = 'QR-Code';
$labels['typehome'] = 'Privat';
$labels['typework'] = 'Dienstlich';
$labels['typeother'] = 'Andere';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Primär';
$labels['typehomefax'] = 'Fax Privat';
$labels['typeworkfax'] = 'Fax Dienst';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistenz';
$labels['typehomepage'] = 'Internet';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Feld hinzufügen …';
$labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
$labels['contactnameandorg'] = 'Name und Organisation';
$labels['personalinfo'] = 'Persönliche Informationen';
$labels['personal'] = 'Persönlich';
$labels['contactphoto'] = 'Foto des Kontakts';
$labels['edit'] = 'Bearbeiten';
$labels['cancel'] = 'Abbrechen';
$labels['save'] = 'Speichern';
$labels['delete'] = 'Löschen';
$labels['discard'] = 'Verwerfen';
$labels['continue'] = 'Weiter';
$labels['ok'] = 'OK';
$labels['rename'] = 'Umbenennen';
$labels['addphoto'] = 'Kontaktbild hinzufügen';
$labels['replacephoto'] = 'Bild ändern';
$labels['uploadphoto'] = 'Bild hochladen';
$labels['choosefile'] = 'Datei auswählen…';
$labels['choosefiles'] = 'Dateien auswählen…';
$labels['browse'] = 'Durchsuchen';
$labels['newcontact'] = 'Neuen Kontakt erstellen';
$labels['deletecontact'] = 'Gewählte Kontakte löschen';
$labels['composeto'] = 'Nachricht verfassen';
$labels['contactsfromto'] = 'Kontakte $from bis $to von $count';
$labels['print'] = 'Drucken';
$labels['export'] = 'Exportieren';
$labels['exportall'] = 'Alles exportieren';
$labels['exportsel'] = 'Auswahl exportieren';
$labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
$labels['newgroup'] = 'Neue Gruppe erstellen';
$labels['addgroup'] = 'Gruppe hinzufügen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupassign'] = 'Zu Gruppe hinzufügen...';
$labels['groupremove'] = 'Aus Gruppe entfernen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
$labels['uponelevel'] = 'Eine Ebene nach oben';
$labels['previouspage'] = 'Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';
$labels['lastpage'] = 'Letzte Seite';
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Gruppen';
$labels['listgroup'] = 'Gruppenmitglieder auflisten';
$labels['personaladrbook'] = 'Persönliches Adressbuch';
$labels['searchsave'] = 'Suchergebnisse speichern';
$labels['searchdelete'] = 'Suchergebnisse löschen';
$labels['import'] = 'Importieren';
$labels['importcontacts'] = 'Kontakte importieren';
$labels['importfromfile'] = 'Aus Datei importieren';
$labels['importtarget'] = 'Kontakte hinzufügen zu';
$labels['importreplace'] = 'Bestehendes Adressbuch komplett ersetzen';
$labels['importgroups'] = 'Gruppenzuordnungen importieren';
$labels['importgroupsall'] = 'Alle (Gruppen erstellen wenn nötig)';
$labels['importgroupsexisting'] = 'Nur für existierende Gruppen';
$labels['importdesc'] = 'Sie können Kontakte von einem vorhandenen Adressbuch hochladen.<br/>Zur Zeit wird der Import von Adressen im <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> oder CSV-Format (Komma-getrenntes Format) unterstützt.';
$labels['done'] = 'Fertig';
$labels['settingsfor'] = 'Einstellungen für';
$labels['about'] = 'Über';
$labels['preferences'] = 'Einstellungen';
$labels['userpreferences'] = 'Benutzereinstellungen';
$labels['editpreferences'] = 'Benutzereinstellungen bearbeiten';
$labels['identities'] = 'Identitäten';
$labels['manageidentities'] = 'Identitäten verwalten';
$labels['newidentity'] = 'Neue Identität erstellen';
$labels['addidentity'] = 'Identität hinzufügen';
$labels['editidentity'] = 'Identität bearbeiten';
$labels['identityencryption'] = 'Verschlüsselung';
$labels['preferhtml'] = 'HTML anzeigen';
$labels['defaultcharset'] = 'Standardzeichensatz';
$labels['htmlmessage'] = 'HTML-Nachricht';
$labels['messagepart'] = 'Teilstück';
$labels['digitalsig'] = 'Digitale Signatur';
$labels['dateformat'] = 'Datumsformatierung';
$labels['timeformat'] = 'Zeitformatierung';
$labels['prettydate'] = 'Kurze Datumsanzeige';
$labels['setdefault'] = 'Als Standard';
$labels['autodetect'] = 'Automatisch';
$labels['language'] = 'Sprache';
$labels['timezone'] = 'Zeitzone';
$labels['pagesize'] = 'Einträge pro Seite';
$labels['signature'] = 'Signatur';
$labels['dstactive'] = 'Sommerzeit';
$labels['showinextwin'] = 'Nachrichten in neuem Fenster öffnen';
$labels['composeextwin'] = 'Nachrichten in neuem Fenster verfassen';
$labels['htmleditor'] = 'HTML-Nachrichten verfassen';
$labels['htmlonreply'] = 'nur Antworten auf HTML-Nachrichten';
$labels['htmlonreplyandforward'] = 'beim Weiterleiten und  Beantworten auf HTML-Nachrichten';
$labels['htmlsignature'] = 'HTML-Signatur';
$labels['showemail'] = 'E-Mail-Adresse mit dem Anzeigenamen anzeigen';
$labels['previewpane'] = 'Nachrichtenvorschau anzeigen';
$labels['skin'] = 'Oberflächendesign';
$labels['logoutclear'] = 'Papierkorb beim Abmelden leeren';
$labels['logoutcompact'] = 'Posteingang beim Abmelden packen';
$labels['uisettings'] = 'Benutzeroberfläche';
$labels['serversettings'] = 'Servereinstellungen';
$labels['mailboxview'] = 'Postfachansicht';
$labels['mdnrequests'] = 'Empfangsbestätigung senden';
$labels['askuser'] = 'immer fragen';
$labels['autosend'] = 'Bestätigung senden';
$labels['autosendknown'] = 'Bestätigung an meine Kontakte senden, sonst nachfragen';
$labels['autosendknownignore'] = 'Bestätigung an meine Kontakte senden, sonst ignorieren';
$labels['autosendtrusted'] = 'Bestätigung an vertrauenswürdige Absender senden, sonst nachfragen';
$labels['autosendtrustedignore'] = 'Bestätigung an vertrauenswürdige Absender senden, sonst ignorieren';
$labels['ignorerequest'] = 'Anforderung ignorieren';
$labels['readwhendeleted'] = 'Nachricht beim Löschen als gelesen markieren';
$labels['flagfordeletion'] = 'Nachricht zum Löschen markieren, anstatt sie zu löschen';
$labels['skipdeleted'] = 'Keine gelöschten Nachrichten anzeigen';
$labels['deletealways'] = 'Wenn verschieben in den Papierkorb fehlschlägt, Nachricht löschen';
$labels['deletejunk'] = 'Nachrichten in Spam direkt löschen';
$labels['showremoteimages'] = 'Eingebettete Bilder vom Internet laden';
$labels['allowremoteresources'] = 'Externe Ressourcen erlauben (Bilder, Stile)';
$labels['fromknownsenders'] = 'bei bekannten Absendern';
$labels['fromtrustedsenders'] = 'von vertrauenswürdigen Absendern';
$labels['frommycontacts'] = 'aus meinen Kontakten';
$labels['always'] = 'immer';
$labels['alwaysbutplain'] = 'immer, außer beim Antworten auf Klartext';
$labels['showinlineimages'] = 'Angehängte Bilder unter der Nachricht anzeigen';
$labels['autosavedraft'] = 'Entwurf automatisch speichern';
$labels['everynminutes'] = '$n Minute(n)';
$labels['refreshinterval'] = 'Aktualisieren (auf neue Nachrichten prüfen, etc.)';
$labels['never'] = 'nie';
$labels['immediately'] = 'sofort';
$labels['messagesdisplaying'] = 'Nachrichtendarstellung';
$labels['messagescomposition'] = 'Nachrichtenerstellung';
$labels['mimeparamfolding'] = 'Namen der Anhänge';
$labels['2231folding'] = 'vollständig RFC 2231 kompatibel (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 kompatibel (Microsoft Outlook)';
$labels['2047folding'] = 'vollständig RFC 2047 kompatibel (andere)';
$labels['force7bit'] = 'MIME-Kodierung für 8-bit Zeichen';
$labels['savelocalstorage'] = "Vorübergehend lokal im Browser speichern";
$labels['advancedoptions'] = 'Erweiterte Einstellungen';
$labels['toggleadvancedoptions'] = 'Erweiterte Optionen auswählen';
$labels['focusonnewmessage'] = 'Fokussiere Browserfenster bei neuen Nachrichten';
$labels['checkallfolders'] = 'Alle Ordner auf neue Nachrichten prüfen';
$labels['displaynext'] = 'Nach verschieben/löschen den nächsten Listeneintrag anzeigen';
$labels['defaultfont'] = 'Standardschrift von HTML-Nachrichten';
$labels['mainoptions'] = 'Allgemein';
$labels['browseroptions'] = 'Browsereinstellungen';
$labels['section'] = 'Bereich';
$labels['maintenance'] = 'Wartung';
$labels['newmessage'] = 'Neue Nachricht';
$labels['signatureoptions'] = 'Signatur';
$labels['whenreplying'] = 'Beantworten einer Nachricht';
$labels['replyempty'] = 'die Originalnachricht nicht zitieren';
$labels['replytopposting'] = 'Antwort über der Originalnachricht';
$labels['replytoppostingnoindent'] = 'Antwort über der Originalnachricht (keine Einrückung)';
$labels['replybottomposting'] = 'Antwort unter der Originalnachricht';
$labels['replyremovesignature'] = 'Beim Antworten die Signatur der Originalnachricht entfernen';
$labels['autoaddsignature'] = 'Signatur automatisch einfügen';
$labels['newmessageonly'] = 'nur bei neuen Nachrichten';
$labels['replyandforwardonly'] = 'nur bei Antworten und Weiterleitungen';
$labels['insertsignature'] = 'Signatur einfügen';
$labels['sigbelow'] = 'Unterschrift unter der zitierten Nachricht platzieren';
$labels['sigseparator'] = 'Standardtrennzeichen in Signaturen erzwingen';
$labels['automarkread'] = 'Nachrichten als gelesen markieren';
$labels['afternseconds'] = 'nach $n Sekunden';
$labels['reqmdn'] = 'Empfangsbestätigung (MDN) immer anfordern';
$labels['reqdsn'] = 'Übermittlungsbestätigung (DSN) immer anfordern';
$labels['replysamefolder'] = 'Antworten im selben Ordner wie Original speichern';
$labels['defaultabook'] = 'Standardadressbuch';
$labels['autocompletesingle'] = 'Alternative E-Mail-Adressen bei der Auto-Vervollständigung nicht berücksichtigen';
$labels['listnamedisplay'] = 'Kontakte auflisten als';
$labels['contactformmode'] = 'Kontaktformular-Modus';
$labels['privatemode'] = 'Privat (Zuhause)';
$labels['businessmode'] = 'Geschäftlich (Arbeit)';
$labels['collectedaddresses'] = 'Gesammelte Adressen';
$labels['collectedrecipients'] = 'Gesammelte Empfänger';
$labels['collectedrecipientsopt'] = 'Empfänger ausgehender E-Mails speichern in';
$labels['collectedsendersopt'] = 'Vertrauenswürdige Absender speichern in';
$labels['trustedsenders'] = 'Vertrauenswürdige Absender';
$labels['spellcheckbeforesend'] = 'Rechtschreibprüfung vor dem Absenden der Nachricht';
$labels['spellcheckoptions'] = 'Rechtschreibprüfungsoptionen';
$labels['spellcheckignoresyms'] = 'Wörter mit Symbolen überspringen';
$labels['spellcheckignorenums'] = 'Wörter mit Ziffern überspringen';
$labels['spellcheckignorecaps'] = 'Wörter überspringen, die nur aus Großbuchstaben bestehen';
$labels['addtodict'] = 'Zum Wörterbuch hinzufügen';
$labels['mailtoprotohandler'] = 'Als Programm für mailto:-Verknüpfungen einrichten';
$labels['standardwindows'] = 'Popups als Standardfenster behandeln';
$labels['forwardmode'] = 'Nachrichtenweiterleitung';
$labels['inline'] = 'eingebettet';
$labels['asattachment'] = 'als Anhang';
$labels['replyallmode'] = 'Standardaktion des Knopfes »Allen antworten«';
$labels['replyalldefault'] = 'Allen antworten';
$labels['replyalllist'] = 'Nur der Mailingliste antworten (wenn gefunden)';
$labels['allmessages'] = 'alle Nachrichten';
$labels['folder'] = 'Ordner';
$labels['folders'] = 'Ordner';
$labels['foldername'] = 'Ordnername';
$labels['subscribed'] = 'Abonniert';
$labels['messagecount'] = 'Nachrichten';
$labels['create'] = 'Erstellen';
$labels['createfolder'] = 'Neuen Ordner erstellen';
$labels['managefolders'] = 'Ordner verwalten';
$labels['specialfolders'] = 'Spezialordner';
$labels['properties'] = 'Eigenschaften';
$labels['folderproperties'] = 'Ordnereigenschaften';
$labels['parentfolder'] = 'Eltern';
$labels['location'] = 'Speicherort';
$labels['info'] = 'Informationen';
$labels['getfoldersize'] = 'Ordnergröße anzeigen';
$labels['changesubscription'] = 'Abonnieren';
$labels['foldertype'] = 'Ordnertyp';
$labels['personalfolder'] = 'Privater Ordner';
$labels['otherfolder'] = 'Ordner eines anderen Benutzers';
$labels['sharedfolder'] = 'Öffentlicher Ordner';
$labels['findfolders'] = 'Suche Ordner';
$labels['findcontacts'] = 'Kontakte finden';
$labels['findmail'] = 'Mail-Nachrichten finden';
$labels['namespace.personal'] = 'Persönlich';
$labels['namespace.other'] = 'Andere Benutzer';
$labels['namespace.shared'] = 'Geteilt';
$labels['dualuselabel'] = 'Kann nur enthalten';
$labels['dualusemail'] = 'Nachrichten';
$labels['dualusefolder'] = 'Ordner';
$labels['generate'] = 'Generieren';
$labels['encryptioncreatekey'] = 'Neues Schlüsselpaar erstellen';
$labels['openmailvelopesettings'] = 'Mailvelope-Einstellungen öffnen';
$labels['encryptionprivkeysinmailvelope'] = 'Sie haben $nr passende private Schlüssel in Ihrem Mailvelope-Schlüsselverzeichnis:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Für diese Absender-Identität ist bis jetzt kein privater PGP-Schlüssel in Ihrer Mailvelope gespeichert. Wollen Sie einen Schlüssel erstellen, damit eine verschlüsselte Kommunikation möglich ist?';
$labels['encryption'] = 'Verschlüsselung';
$labels['mailvelopeoptions'] = 'Mailvelope-Optionen';
$labels['mailvelopemainkeyring'] = 'Mailvelope-Hauptschlüsselbund verwenden';
$labels['mailvelopenotfound'] = 'Mailvelope-Erweiterung ist in Ihrem Browser nicht aktiviert/installiert.';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'Aufsteigend sortieren';
$labels['sortdesc'] = 'Absteigend sortieren';
$labels['undo'] = 'Rückgängig machen';
$labels['installedplugins'] = 'Installierte Plugins';
$labels['plugin'] = 'Erweiterung';
$labels['version'] = 'Version';
$labels['source'] = 'Quellcode';
$labels['license'] = 'Lizenz';
$labels['support'] = 'Support';
$labels['savedsearches'] = 'Gespeicherte Suchvorgänge';
$labels['dateformatY'] = 'JJJJ';
$labels['dateformaty'] = 'JJ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'TT';
$labels['dateformatj'] = 'T';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englisch';
$labels['westerneuropean'] = 'West Europäisch';
$labels['easterneuropean'] = 'Ost Europäisch';
$labels['southeasterneuropean'] = 'Süd-Ost Europäisch';
$labels['baltic'] = 'Baltisch';
$labels['cyrillic'] = 'Kyrillisch';
$labels['arabic'] = 'Arabisch';
$labels['greek'] = 'Griechisch';
$labels['hebrew'] = 'Hebräisch';
$labels['turkish'] = 'Türkisch';
$labels['nordic'] = 'Nordisch';
$labels['thai'] = 'Thailändisch';
$labels['celtic'] = 'Keltisch';
$labels['vietnamese'] = 'Vietnamesisch';
$labels['japanese'] = 'Japanisch';
$labels['korean'] = 'Koreanisch';
$labels['chinese'] = 'Chinesisch';
$labels['arialabeltopnav'] = 'Fenstersteuerung';
$labels['arialabeltasknav'] = 'Anwendungsaufgaben';
$labels['arialabeltoolbar'] = 'Anwendungstoolbar';
$labels['arialabellistnav'] = 'Listennavigation';
$labels['arialabelactivetask'] = 'Aktive Aufgabe';
$labels['arialabelmessagessearchfilter'] = 'Filter für die E-Mail-Liste';
$labels['arialabelmailsearchform'] = 'Suchmaske für E-Mails';
$labels['arialabelcontactsearchform'] = 'Suchmaske für Kontakte';
$labels['arialabelmailquicksearchbox'] = 'Eingabe für E-Mail-Suche';
$labels['arialabelquicksearchbox'] = 'Eingabe für Suche';
$labels['arialabelfoldersearchfilter'] = 'Ordnerauflistungsfilter';
$labels['arialabelfoldersearchform'] = 'Ordnersuchfeld';
$labels['arialabelfolderlist'] = 'E-Mail-Ordnerauswahl';
$labels['arialabelmessagelist'] = 'Liste der E-Mail-Nachrichten';
$labels['arialabelmailpreviewframe'] = 'Vorschau der Nachricht';
$labels['arialabelmailboxmenu'] = 'Aktionsmenü für Ordner';
$labels['arialabellistselectmenu'] = 'Aktionsmenü für Listen';
$labels['arialabelthreadselectmenu'] = 'Listenmenü für Threads';
$labels['arialabelmessagelistoptions'] = 'Nachrichtenauflistung und Sortierungsoptionen';
$labels['arialabelmailimportdialog'] = 'Nachrichten-Import-Dialog';
$labels['arialabelmessagenav'] = 'Nachrichtennavigation';
$labels['arialabelmessagebody'] = 'Nachrichten-Body';
$labels['arialabelmessageactions'] = 'Nachrichtenaktionen';
$labels['arialabelcontactquicksearch'] = 'Kontaktsuchformular';
$labels['arialabelcontactsearchbox'] = 'Kontakte Sucheingabe';
$labels['arialabelmessageheaders'] = 'Nachrichtenkopfzeilen';
$labels['arialabelforwardingoptions'] = 'Weiterleitungsoptionen';
$labels['arialabelreplyalloptions'] = 'Allen antworten-Optionen';
$labels['arialabelmoremessageactions'] = 'Weitere Nachrichtenaktionen';
$labels['arialabelmorecontactactions'] = 'Weitere Kontakt-Aktionen';
$labels['arialabelmarkmessagesas'] = 'Ausgewählte Nachricht markieren als …';
$labels['arialabelcomposeoptions'] = 'Erstellungsoptionen';
$labels['arialabelresponsesmenu'] = 'Schnellantworten Menü';
$labels['arialabelattachmentuploadform'] = 'Anhanghochladeformular';
$labels['arialabelattachmentmenu'] = 'Anhangsoptionen';
$labels['arialabelmailtomenu'] = 'Optionen für E-Mail-Adressen';
$labels['arialabelattachmentpreview'] = 'Anhangvorschau';
$labels['ariasummarycomposecontacts'] = 'Liste von Kontakten und Gruppen als Empfänger';
$labels['arialabelcontactexportoptions'] = 'Kontakt-Export-Optionen';
$labels['arialabelabookgroupoptions'] = 'Adressbuch/Gruppen-Optionen';
$labels['arialabelpreferencesform'] = 'Einstellungsformular';
$labels['arialabelidentityeditfrom'] = 'Identität-Bearbeitungsformular';
$labels['arialabelresponseeditfrom'] = 'Antwortbearbeitungsformular';
$labels['arialabelsearchterms'] = 'Suchbegriffe';
$labels['arialabeldropactionmenu'] = 'Aktionsmenü für das Ziehen und Loslassen';
$labels['arialabelheadersmenu'] = 'Menü zum Hinzufügen der Empfänger (Kopfzeile) ';
$labels['arialabelimagetools'] = 'Bild-Tools';
$labels['helplistnavigation'] = 'Tastaturnavigation auflisten';
$labels['helplistkeyboardnavigation'] = "Pfeil hoch/runter: Zeilenfokus/Zeilenselektion verschieben
Leerzeichen: Selektiere ausgewählte Zeile
Shift + Pfeil hoch/runter: Wähle weitere Zeilen oberhalb/unterhalb
Strg + Leerzeichen: Gewählte Zeile zur/von der Auswahl hinzufügen/entfernen";
$labels['helplistkeyboardnavmessages'] = "Pfeil rechts/links: Nachricht im Thread erweitern/einklappen (nur im Threadmodus)
Enter: Öffne die ausgewählte/fokussierte Nachricht
Rücktaste: Verschiebe gewählte Nachricht in den Mülleimer";
$labels['helplistkeyboardnavcontacts'] = "Enter: Ausgewählten Kontakt öffnen.";
localization/de_DE/messages.inc000064400000046027151727150600012513 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ein Fehler ist aufgetreten!';
$messages['loginfailed']  = 'Die Anmeldung ist fehlgeschlagen.';
$messages['cookiesdisabled'] = 'Ihr Browser akzeptiert keine Cookies.';
$messages['sessionerror'] = 'Ihre Sitzung ist ungültig oder abgelaufen.';
$messages['cookiesmismatch'] = 'Cookiefehler erkannt. Bitte die Browser Cookies löschen.';
$messages['storageerror'] = 'Verbindung zum Speicherserver fehlgeschlagen.';
$messages['servererror'] = 'Serverfehler!';
$messages['servererrormsg'] = 'Serverfehler: $msg';
$messages['accountlocked'] = 'Zu viele fehlgeschlagene Anmeldeversuche. Versuchen Sie es später noch einmal.';
$messages['connerror'] = 'Verbindungsfehler (Fehler beim Erreichen des Servers)!';
$messages['dberror'] = 'Datenbankfehler!';
$messages['dbconnerror'] = 'Verbindung zur Datenbank konnte nicht aufgebaut werden!';
$messages['windowopenerror'] = 'Das Popup-Fenster wurde blockiert!';
$messages['requesttimedout'] = 'Zeitüberschreitung der Anforderung';
$messages['errorreadonly'] = 'Die Aktion kann nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
$messages['errornoperm'] = 'Die Aktion kann nicht ausgeführt werden. Zugriff verweigert.';
$messages['erroroverquota'] = 'Die Aktion kann nicht ausgeführt werden. Nicht genug freier Speicherplatz.';
$messages['erroroverquotadelete'] = 'Nicht genug freier Speicherplatz. Verwenden sie SHIFT+ENTF um Nachrichten zu löschen.';
$messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.';
$messages['invalidhost'] = 'Ungültiger Servername.';
$messages['nomessagesfound'] = 'Keine Nachrichten in diesem Postfach.';
$messages['loggedout'] = 'Sie haben Ihre Sitzung erfolgreich beendet. Auf Wiedersehen!';
$messages['mailboxempty'] = 'Postfach ist leer';
$messages['nomessages'] = 'Keine Nachrichten';
$messages['refreshing'] = 'Aktualisierung läuft …';
$messages['loading'] = 'Wird geladen …';
$messages['uploading'] = 'Datei wird hochgeladen …';
$messages['attaching'] = 'Datei wird angehängt …';
$messages['uploadingmany'] = 'Dateien werden hochgeladen …';
$messages['loadingdata'] = 'Daten werden geladen …';
$messages['checkingmail'] = 'Auf neue Nachrichten wird geprüft …';
$messages['sendingmessage'] = 'Nachricht wird gesendet …';
$messages['messagesent'] = 'Nachricht erfolgreich gesendet.';
$messages['savingmessage'] = 'Nachricht wird gespeichert …';
$messages['messagesaved'] = 'Nachricht als Entwurf gespeichert.';
$messages['successfullysaved'] = 'Erfolgreich gespeichert.';
$messages['savingresponse'] = 'Antwortvorlage wird gespeichert …';
$messages['deleteresponseconfirm'] = 'Möchten Sie diese Vorlage wirklich löschen?';
$messages['nocontactselected'] = 'Sie haben noch keinen Kontakt ausgewählt.';
$messages['addedsuccessfully'] = 'Kontakt zum Adressbuch hinzugefügt.';
$messages['contactexists'] = 'Es existiert bereits ein Kontakt mit dieser E-Mail-Adresse.';
$messages['contactnameexists'] = 'Ein Kontakt mit dem gleichen Namen existiert bereits.';
$messages['blockedimages'] = 'Um Ihre Privatsphäre zu schützen, wurden externe Bilder blockiert.';
$messages['blockedresources'] = 'Um Ihre Privatsphäre zu schützen, wurden externe Ressourcen blockiert.';
$messages['suspiciousemail'] = 'Diese Nachricht enthält eine verdächte eMail-Adresse, die gefälscht sein könnte.';
$messages['bccemail'] = 'Die weitergeleite(n) Nachricht(en) enthalten vertrauliche Empfänger (Bcc).';
$messages['bouncehint'] = 'Die Nachricht wird unverändert weitergeleitet, das heißt mit dem Originaltext, Kopfzeilen und Empfänger(n)';
$messages['encryptedmessage'] = 'Dies ist eine verschlüsselte Nachricht und kann leider nicht angezeigt werden.';
$messages['externalmessagedecryption'] = 'Dies ist eine verschlüsselte Nachricht und kann mit Ihrer Browser-Erweiterung entschlüsselt werden.';
$messages['nopubkeyfor'] = 'Kein gültiger öffentlicher Schlüssel für $email gefunden';
$messages['nopubkeyforsender'] = 'Kein gültiger öffentlicher Schlüssel für Ihre Absenderidentität gefunden. Möchten Sie die Nachricht nur für die Empfänger verschlüsseln?';
$messages['encryptnoattachments'] = 'Bereits hochgeladene Anhänge können nicht verschlüsselt werden. Bitte fügen Sie sie erneut im Verschlüsselungseditor hinzu.';
$messages['searchpubkeyservers'] = 'Möchten Sie öffentliche Schlüsselserver nach den fehlenden Schlüsseln durchsuchen?';
$messages['encryptpubkeysfound'] = 'Die folgenden öffentlichen Schlüssel wurden gefunden:';
$messages['keyservererror'] = 'Fehler beim Holen des Schlüssels vom Schlüsselserver.';
$messages['keyimportsuccess'] = 'Öffentlicher Schlüssel $key erfolgreich in Ihren Schlüsselbund importiert.';
$messages['nocontactsfound'] = 'Keine Kontakte gefunden.';
$messages['contactnotfound'] = 'Der angeforderte Kontakt wurde nicht gefunden.';
$messages['contactsearchonly'] = 'Du musst das Suchformular nutzen, um die Kontakte vom ausgewählten Adressbuch zu sehen.';
$messages['sendingfailed'] = 'Versenden der Nachricht fehlgeschlagen.';
$messages['senttooquickly'] = 'Bitte warten Sie $sec Sekunde(n) vor dem Senden dieser Nachricht.';
$messages['errorsavingsent'] = 'Ein Fehler ist beim Speichern der gesendeten Nachricht aufgetreten.';
$messages['errorsaving'] = 'Beim Speichern ist ein Fehler aufgetreten.';
$messages['errormoving'] = 'Nachricht(en) konnte(n) nicht verschoben werden.';
$messages['errorcopying'] = 'Nachticht(en) konnte(n) nicht kopiert werden.';
$messages['errordeleting'] = 'Nachricht(en) konnte(n) nicht gelöscht werden.';
$messages['errormarking'] = 'Nachricht(en) konnte(n) nicht markiert werden.';
$messages['alerttitle'] = 'Achtung';
$messages['confirmationtitle'] = 'Sind Sie sich sicher...';
$messages['deletecontactconfirm']  = 'Wollen Sie die ausgewählten Kontakte wirklich löschen?';
$messages['deletegroupconfirm']  = 'Wollen Sie die gewählte Gruppe wirklich löschen?';
$messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?';
$messages['deletefolderconfirm']  = 'Wollen Sie diesen Ordner wirklich löschen?';
$messages['movefolderconfirm']  = 'Wollen Sie diesen Ordner wirklich verschieben?';
$messages['purgefolderconfirm']  = 'Wollen Sie diesen Ordner wirklich leeren?';
$messages['contactdeleting'] = 'Kontakt(e) werden gelöscht …';
$messages['groupdeleting'] = 'Gruppe wird gelöscht …';
$messages['folderdeleting'] = 'Ordner wird gelöscht …';
$messages['foldermoving'] = 'Ordner wird verschoben …';
$messages['foldersubscribing'] = 'Ordner wird abonniert …';
$messages['folderunsubscribing'] = 'Ordner wird abbestellt …';
$messages['formincomplete'] = 'Das Formular wurde nicht vollständig ausgefüllt.';
$messages['noemailwarning'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.';
$messages['nonamewarning']  = 'Bitte geben Sie einen Namen ein.';
$messages['nopagesizewarning'] = 'Bitte geben Sie die Einträge pro Seite an.';
$messages['nosenderwarning'] = 'Bitte geben Sie die E-Mail-Adresse des Senders an.';
$messages['recipientsadded'] = 'Empfänger erfolgreich hinzugefügt.';
$messages['norecipientwarning'] = 'Bitte geben Sie mindestens einen Empfänger an.';
$messages['disclosedrecipwarning'] = 'Alle Empfänger sehen die E-Mail Adressen der anderen Empfänger. Um deren Privatsphäre zu schützen, können Sie das BCC-Feld verwenden.';
$messages['disclosedreciptitle'] = 'Zu viele öffentliche Empfänger';
$messages['nosubjectwarning']  = 'Die Betreffzeile ist leer. Möchten Sie jetzt einen Betreff eingeben?';
$messages['nosubjecttitle']  = 'Kein Betreff';
$messages['nobodywarning'] = 'Diese Nachricht ohne Inhalt senden?';
$messages['notsentwarning'] = 'Die Nachricht wurde nicht gesendet und hat nicht gespeicherte Änderungen. Möchten Sie Ihre Änderungen verwerfen?';
$messages['restoresavedcomposedata'] = 'Es wurde ein nicht versandter Entwurf einer Nachricht gefunden.\n\nBetreff: $subject\nGespeichert am: $date\n\nMöchten Sie diese Nachricht wiederherstellen?';
$messages['nosearchname'] = 'Bitte geben Sie einen Namen oder eine E-Mail-Adresse ein.';
$messages['notuploadedwarning'] = 'Es wurden noch nicht alle Dateien hochgeladen. Bitte warten oder Hochladen abbrechen.';
$messages['searchsuccessful'] = '$nr Nachrichten gefunden.';
$messages['contactsearchsuccessful'] = '$nr Kontakte gefunden.';
$messages['searchnomatch'] = 'Die Suche lieferte keine Treffer.';
$messages['searching'] = 'Suche läuft …';
$messages['checking'] = 'Überprüfung läuft …';
$messages['stillsearching'] = 'Suche läuft noch …';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden.';
$messages['folderdeleted'] = 'Ordner erfolgreich gelöscht.';
$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert.';
$messages['folderunsubscribed'] = 'Der Ordner wurde erfolgreich abbestellt.';
$messages['folderpurged'] = 'Ordner wurde erfolgreich geleert.';
$messages['folderexpunged'] = 'Ordner wurde erfolgreich ausgeräumt.';
$messages['deletedsuccessfully'] = 'Erfolgreich gelöscht.';
$messages['converting'] = 'Formatierungen werden entfernt …';
$messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden.';
$messages['filelinkerror'] = 'Anhängen der Datei ist fehlgeschlagen.';
$messages['fileuploaderror'] = 'Hochladen der Datei fehlgeschlagen.';
$messages['csvfilemismatch'] = 'Der Import von mehreren CSV-Dateien mit unterschiedlichen Feldern wird nicht unterstützt.';
$messages['filesizeerror'] = 'Die hochzuladende Datei überschreitet die Maximalgröße von $size.';
$messages['filecounterror'] = 'Sie können maximal $count Dateien mit einmal hochladen.';
$messages['msgsizeerror'] = 'Hinzufügen einer Datei fehlgeschlagen. Die maximale Größe einer Nachricht ($size) wurde überschritten.';
$messages['msgsizeerrorfwd'] = 'Maximalgröße einer Nachricht ($size) überschritten. $num Nachricht(en) wird/wurden nicht angehängt.';
$messages['copysuccess'] = 'Erfolgreich kopiert $nr Kontakte.';
$messages['movesuccess'] = 'Erfolgreich verschoben $nr Kontakte.';
$messages['copyerror'] = 'Die Kontakte konnten nicht kopiert werden.';
$messages['moveerror'] = 'Die Kontakte konnten nicht verschoben werden.';
$messages['sourceisreadonly'] = 'Das Adressverzeichnis kann nicht verändert werden.';
$messages['errorsavingcontact'] = 'Die Änderungen konnten nicht gespeichert werden.';
$messages['movingmessage'] = 'Nachrichten werden verschoben …';
$messages['copyingmessage'] = 'Nachrichten werden kopiert …';
$messages['copyingcontact'] = 'Kontakte werden kopiert …';
$messages['movingcontact'] = 'Kontakte werden verschoben …';
$messages['deletingmessage'] = 'Nachrichten werden gelöscht …';
$messages['markingmessage'] = 'Nachrichten werden markiert …';
$messages['addingmember'] = 'Kontakte werden der Gruppe hinzugefügt …';
$messages['removingmember'] = 'Kontakte werden von der Gruppe entfernt …';
$messages['receiptsent'] = 'Lesebestätigung erfolgreich gesendet.';
$messages['errorsendingreceipt'] = 'Bestätigung konnte nicht gesendet werden.';
$messages['deleteidentityconfirm'] = 'Möchten Sie wirklich diese Identität löschen?';
$messages['nodeletelastidentity'] = 'Diese Identität kann nicht gelöscht werden, da dies die letzte ist.';
$messages['forbiddencharacter'] = 'Der Ordnername enthält ein ungültiges Zeichen.';
$messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren aus.';
$messages['addresswriterror'] = 'Das gewählte Adressbuch kann nicht verändert werden.';
$messages['contactaddedtogroup'] = 'Kontakte wurden dieser Gruppe hinzugefügt.';
$messages['contactremovedfromgroup'] = 'Kontakte wurden aus dieser Gruppe entfernt.';
$messages['nogroupassignmentschanged'] = 'Es wurden keine Gruppenzuordnungen geändert.';
$messages['importwait'] = 'Daten werden importiert, bitte warten …';
$messages['importformaterror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist keine gültige Importdatei.';
$messages['importconfirm'] = '<b>Es wurden $inserted Adressen erfolgreich importiert.</b>';
$messages['importconfirmskipped'] = '<b>$skipped bestehende Einträge wurden übersprungen.</b>';
$messages['importmessagesuccess'] = 'Nachrichten $nr erfolgreich importiert';
$messages['importmessageerror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist keine gültige Importdatei.';
$messages['opnotpermitted'] = 'Operation nicht erlaubt!';
$messages['nofromaddress'] = 'Fehlende E-Mail-Adresse in ausgewählter Identität.';
$messages['editorwarning'] = 'Wenn sie den Editor wechseln, könnten Textformatierungen verloren gehen. Möchten sie fortfahren?';
$messages['httpreceivedencrypterror'] = 'Ein fataler Konfigurationsfehler ist aufgetreten. Kontaktieren Sie bitte sofort Ihren Administrator. <b>Ihre Nachricht konnte nicht versendet werden.</b>';
$messages['smtpconnerror'] = 'SMTP Fehler ($code): Die Verbindung ist fehlgeschlagen.';
$messages['smtpautherror'] = 'SMTP Fehler ($code): Die Authentisierung ist fehlgeschlagen.';
$messages['smtpfromerror'] = 'SMTP Fehler ($code): Der Absender "$from" konnte nicht gesetzt werden ($msg).';
$messages['smtptoerror'] = 'SMTP Fehler ($code): Der Empfänger "$to" konnte nicht gesetzt werden ($msg).';
$messages['smtprecipientserror'] = 'SMTP-Fehler: die Empfängerliste konnte nicht verarbeitet werden.';
$messages['smtputf8error'] = 'SMTP-Fehler: Der Server unterstützt Unicode in der E-Mail-Adresse nicht.';
$messages['smtpsizeerror'] = 'SMTP-Fehler: Nachrichtengröße übersteigt die Servergrenze ($limit)';
$messages['smtperror'] = 'SMTP Fehler: $msg';
$messages['emailformaterror'] = 'Ungültige E-Mail-Adresse: $email';
$messages['toomanyrecipients'] = 'Zuviele Empfänger. Reduzieren Sie die Anzahl Empfängeradressen auf $max.';
$messages['maxgroupmembersreached'] = 'Die Anzahl Adressen in dieser Gruppe überschreitet das Maximum von $max.';
$messages['internalerror'] = 'Ein interner Fehler ist aufgetreten. Bitte versuchen Sie es erneut.';
$messages['contactdelerror'] = 'Fehler beim Löschen.';
$messages['contactdeleted'] = 'Kontakt(e) erfolgreich gelöscht.';
$messages['contactrestoreerror'] = 'Konnte die gelöschten Kontakte nicht wiederherstellen.';
$messages['contactrestored'] = 'Kontakte erfolgreich wiederhergestellt.';
$messages['groupdeleted'] = 'Gruppe erfolgreich gelöscht.';
$messages['grouprenamed'] = 'Gruppe erfolgreich umbenannt.';
$messages['groupcreated'] = 'Gruppe erfolgreich erstellt.';
$messages['savedsearchdeleted'] = 'Suchergebnisse erfolgreich gelöscht.';
$messages['savedsearchdeleteerror'] = 'Suchergebnisse konnten nicht gelöscht werden.';
$messages['savedsearchcreated'] = 'Suchergebnisse wurden erfolgreich wiederherstellt.';
$messages['savedsearchcreateerror'] = 'Suchergebnisse konnten nicht wiederhergestellt werden.';
$messages['messagedeleted'] = 'Nachricht(en) erfolgreich gelöscht.';
$messages['messagemoved'] = 'Nachricht(en) erfolgreich verschoben.';
$messages['messagemovedtotrash'] = 'Nachricht(en) erfolgreich in Papierkorb gelegt.';
$messages['messagecopied'] = 'Nachricht(en) erfolgreich kopiert.';
$messages['messagemarked'] = 'Nachricht(en) erfolgreich markiert.';
$messages['autocompletechars'] = 'Geben Sie mind. $min Zeichen für die Auto-Vervollständigung ein.';
$messages['autocompletemore'] = 'Mehrere Treffer. Bitte geben Sie mehr Buchstaben ein.';
$messages['namecannotbeempty'] = 'Der Name darf nicht leer sein.';
$messages['nametoolong'] = 'Der Name ist zu lang.';
$messages['namedotforbidden'] = 'Ordnername darf nicht mit einem Punkt beginnen.';
$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert.';
$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt.';
$messages['invalidimageformat'] = 'Kein gültiges Bildformat.';
$messages['mispellingsfound'] = 'Es wurden noch Rechtschreibfehler in der Nachricht gefunden.';
$messages['parentnotwritable'] = 'Konnte den Ordner nicht erstellen/verschieben. Keine Berechtigung.';
$messages['messagetoobig'] = 'Die Nachricht ist zu gross und kann nicht verarbeitet werden.';
$messages['attachmentvalidationerror'] = 'Dieser Anhang ist verdächtig, weil sein Typ nicht mit dem in der Nachricht angegebenen Typ übereinstimmt. Wenn Sie dem Absender nicht vertrauen, sollten Sie ihn nicht im Browser öffnen, da er bösartige Inhalte enthalten kann.<br/><br/><em>Erwartet: $expected; gefunden: $detected</em>';
$messages['noscriptwarning'] = 'Warnung: Dieser Webmail-Service erfordert Javascript. Um ihn zu benutzten aktivieren Sie Javascript in ihren Browser-Einstellungen.';
$messages['messageissent'] = 'Die Nachricht wurde bereits gesendet, aber noch nicht gespeichert. Wollen Sie es jetzt speichern?';
$messages['errnotfound'] = 'Datei nicht gefunden!';
$messages['errnotfoundexplain'] = 'Die angeforderte Ressource wurde nicht gefunden!';
$messages['errfailedrequest'] = 'Anforderung fehlgeschlagen';
$messages['errauthorizationfailed'] = 'Autorisierung fehlgeschlagen';
$messages['errunauthorizedexplain'] = 'Es konnte nicht überprüft werden, ob Sie berechtigt sind, auf diesen Dienst zuzugreifen!';
$messages['errrequestcheckfailed'] = 'Anforderungsprüfung fehlgeschlagen';
$messages['errcsrfprotectionexplain'] = "Zu Ihrer Sicherheit wird der Zugriff auf diese Ressource gegen CSRF geschützt.\nWenn Sie dies sehen, haben Sie sich wahrscheinlich vor dem Verlassen der Webanwendung nicht abgemeldet.\n\nNun ist eine menschliche Interaktion erforderlich, um fortzusetzen.";
$messages['errcontactserveradmin'] = 'Bitte kontaktieren Sie Ihren Server-Administrator.';
$messages['clicktoresumesession'] = 'Klicken Sie hier, um Ihre vorherige Sitzung fortzusetzen';
$messages['errcomposesession'] = 'Verfasssitzungsfehler';
$messages['errcomposesessionexplain'] = 'Angeforderte Verfasssitzung nicht gefunden.';
$messages['clicktocompose'] = 'Klicken Sie hier, um eine neue Nachricht zu verfassen';
$messages['nosupporterror'] = 'Diese Funktion wird von Ihrem Webbrowser nicht unterstützt.';
$messages['siginserted'] = 'Signatur erfolgreich eingefügt.';
$messages['responseinserted'] = 'Antwort erfolgreich eingefügt.';
$messages['noresponsesavailable'] = 'Keine Antworten verfügbar';
$messages['listempty'] = 'Die Liste ist leer.';
$messages['listusebutton'] = 'Um einen neuen Datensatz hinzufügen, verwenden Sie bitte die Schaltfläche \'Erstellen\'.';
$messages['keypaircreatesuccess'] = 'En neues Schlüsselpaar wurde erfolgreich für $identity erstellt.';
$messages['emptyattachment'] = 'Dieser Anhang scheint leer zu sein.<br>Bitte erkundigen Sie sich bei der Person, die diesen gesendet hat.';
$messages['oauthloginfailed'] = 'OAuth-Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut.';
localization/fi_FI/csv2vcard.inc000064400000004271151727150600012610 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | localization/<lang>/csv2vcard.inc                                     |
 |                                                                       |
 | Localization file of the Roundcube Webmail client                     |
 | Copyright (C) 2005-2015, The Roundcube Dev Team                       |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Pekka Nurmi <peknur@gmail.com>                                |
 +-----------------------------------------------------------------------+
*/
$map = array();
$map['display_name'] = "Näyttönimi";
$map['first_name'] = "Etunimi";
$map['last_name'] = "Sukunimi";
$map['home_phone'] = "Kotipuhelin";
$map['home_city'] = "Kotikaupunki";
$map['home_state'] = "Kodin lääni";
$map['business_city'] = "Työpaikan kaupunki";
$map['business_state'] = "Työpaikan lääni";
$map['job_title'] = "Ammattinimi";
$map['department'] = "Osasto";
$map['notes'] = "Muistiinpanot";
$map['birth_day'] = "Syntymäpäivä";
$map['birth_month'] = "Syntymäkuukausi";
$map['birth_year'] = "Syntymävuosi";
$map['display_name'] = "Näytettävä nimi";
$map['fax_number'] = "Faksin numero";
$map['nickname'] = "Lempinimi";
$map['primary_email'] = "Ensisijainen sähköposti";
$map['secondary_email'] = "Toissijainen sähköposti";
$map['work_phone'] = "Työpuhelin";
$map['pager_number'] = "Hakulaitteen numero";
$map['mobile_number'] = "Matkapuhelinnumero";
$map['home_address'] = "Kotiosoite";
$map['home_zipcode'] = "Kodin postinumero";
$map['home_country'] = "Kotimaa";
$map['work_address'] = "Työosoite";
$map['work_zipcode'] = "Työpaikan postinumero";
$map['work_country'] = "Työpaikan maa";
$map['organization'] = "Järjestö";
$map['web_page_1'] = "Verkkosivu 1";
$map['web_page_2'] = "Verkkosivu 2";
localization/fi_FI/labels.inc000064400000103011151727150600012145 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Tervetuloa $product -käyttäjäksi';
$labels['username'] = 'Käyttäjätunnus';
$labels['password'] = 'Salasana';
$labels['server'] = 'Palvelin';
$labels['login'] = 'Kirjaudu';
$labels['oauthlogin'] = 'Kirjaudu palveluntarjoajalla $provider';
$labels['menu'] = 'Valikko';
$labels['logout'] = 'Kirjaudu ulos';
$labels['mail'] = 'Sähköposti';
$labels['settings'] = 'Asetukset';
$labels['addressbook'] = 'Osoitekirja';
$labels['darkmode'] = 'Tumma tila';
$labels['lightmode'] = 'Vaalea tila';
$labels['inbox'] = 'Saapuneet';
$labels['drafts'] = 'Luonnokset';
$labels['sent'] = 'Lähetetyt';
$labels['trash'] = 'Roskakori';
$labels['junk'] = 'Roskaposti';
$labels['show_real_foldernames'] = 'Näytä erikoiskansioiden oikeat nimet';
$labels['subject'] = 'Aihe';
$labels['from'] = 'Lähettäjä';
$labels['sender'] = 'Lähettäjä';
$labels['to'] = 'Vastaanottaja';
$labels['cc'] = 'Kopio';
$labels['bcc'] = 'Piilokopio';
$labels['replyto'] = 'Vastaus osoitteeseen';
$labels['followupto'] = 'Keskustelunsiirto';
$labels['date'] = 'Päiväys';
$labels['size'] = 'Koko';
$labels['priority'] = 'Tärkeys';
$labels['organization'] = 'Organisaatio';
$labels['readstatus'] = 'Luettu';
$labels['listoptions'] = 'Listaa valinnat...';
$labels['listoptionstitle'] = 'Listavalinnat';
$labels['mailboxlist'] = 'Kansiot';
$labels['messagesfromto'] = 'Viestit $from-$to/$count';
$labels['threadsfromto'] = 'Viestiketjut $from-$to/$count';
$labels['messagenrof'] = 'Viesti $nr/$count';
$labels['fromtoshort'] = '$from - $to (yhteensä $count)';
$labels['copy'] = 'Kopioi';
$labels['move'] = 'Siirrä';
$labels['moveto'] = 'siirrä kansioon...';
$labels['copyto'] = 'Kopioi...';
$labels['download'] = 'lataa';
$labels['open'] = 'Avaa';
$labels['showattachment'] = 'Näytä';
$labels['showanyway'] = 'Näytä silti';
$labels['filename'] = 'Tiedoston nimi';
$labels['filesize'] = 'Tiedoston koko';
$labels['addtoaddressbook'] = 'Lisää osoitekirjaan';
$labels['sun'] = 'Su';
$labels['mon'] = 'Ma';
$labels['tue'] = 'Ti';
$labels['wed'] = 'Ke';
$labels['thu'] = 'To';
$labels['fri'] = 'Pe';
$labels['sat'] = 'La';
$labels['sunday'] = 'Sunnuntai';
$labels['monday'] = 'Maanantai';
$labels['tuesday'] = 'Tiistai';
$labels['wednesday'] = 'Keskiviikko';
$labels['thursday'] = 'Torstai';
$labels['friday'] = 'Perjantai';
$labels['saturday'] = 'Lauantai';
$labels['jan'] = 'Tammi';
$labels['feb'] = 'Helmi';
$labels['mar'] = 'Maalis';
$labels['apr'] = 'Huhti';
$labels['may'] = 'Touko';
$labels['jun'] = 'Kesä';
$labels['jul'] = 'Heinä';
$labels['aug'] = 'Elo';
$labels['sep'] = 'Syys';
$labels['oct'] = 'Loka';
$labels['nov'] = 'Marras';
$labels['dec'] = 'Joulu';
$labels['longjan'] = 'Tammikuu';
$labels['longfeb'] = 'Helmikuu';
$labels['longmar'] = 'Maaliskuu';
$labels['longapr'] = 'Huhtikuu';
$labels['longmay'] = 'Touko';
$labels['longjun'] = 'Kesäkuu';
$labels['longjul'] = 'Heinäkuu';
$labels['longaug'] = 'Elokuu';
$labels['longsep'] = 'Syyskuu';
$labels['longoct'] = 'Lokakuu';
$labels['longnov'] = 'Marraskuu';
$labels['longdec'] = 'Joulukuu';
$labels['today'] = 'Tänään';
$labels['refresh'] = 'Päivitä';
$labels['checkmail'] = 'Tarkista saapuneet viestit';
$labels['compose'] = 'Viestin kirjoitus';
$labels['writenewmessage'] = 'Kirjoita uusi viesti';
$labels['reply'] = 'Vastaa';
$labels['replytomessage'] = 'Vastaa viestiin';
$labels['replytoallmessage'] = 'Vastaa kaikille';
$labels['replyall'] = 'Vastaa kaikille';
$labels['replylist'] = 'Vastaa listalle';
$labels['forward'] = 'Välitä eteenpäin';
$labels['forwardinline'] = 'Välitä viesti';
$labels['forwardattachment'] = 'Välitä viesti liitteenä';
$labels['forwardmessage'] = 'Välitä viesti';
$labels['bouncemsg'] = 'Lähetä edelleen (bounce)';
$labels['bounce'] = 'Lähetä edelleen';
$labels['deletemessage'] = 'Poista viesti';
$labels['movemessagetotrash'] = 'Siirrä viesti roskakoriin';
$labels['printmessage'] = 'Tulosta viesti';
$labels['previousmessage'] = 'Näytä edellinen viesti';
$labels['firstmessage'] = 'Näytä ensimmäinen viesti';
$labels['nextmessage'] = 'Näytä edellinen viesti';
$labels['lastmessage'] = 'Näytä viimeinen viesti';
$labels['backtolist'] = 'Takaisin viesteihin';
$labels['viewsource'] = 'Näytä lähdekoodi';
$labels['mark'] = 'Merkitse';
$labels['markmessages'] = 'Merkitse viestit';
$labels['markread'] = 'luetuiksi';
$labels['markunread'] = 'ei-luetuiksi';
$labels['markflagged'] = 'korostetuiksi';
$labels['markunflagged'] = 'ei-korostetuiksi';
$labels['markundeleted'] = 'poistamattomaksi';
$labels['moreactions'] = 'Lisää toimintoja...';
$labels['markallread'] = 'Merkitse kaikki luetuksi';
$labels['folders-cur'] = 'Vain valittu kansio';
$labels['folders-sub'] = 'Valittu kansio ja alikansiot';
$labels['folders-all'] = 'Kaikki kansiot';
$labels['more'] = 'Lisää';
$labels['back'] = 'Takaisin';
$labels['options'] = 'Asetukset';
$labels['composeoptions'] = 'Kirjoitusasetukset';
$labels['optionsandattachments'] = 'Asetukset ja liitteet';
$labels['actions'] = 'Toiminnot';
$labels['first'] = 'Ensimmäinen';
$labels['last'] = 'Viimeinen';
$labels['previous'] = 'Edellinen';
$labels['next'] = 'Seuraava';
$labels['select'] = 'Valitse';
$labels['selection'] = 'Valinta';
$labels['all'] = 'Kaikki';
$labels['none'] = 'Ei mikään';
$labels['currpage'] = 'Nykyinen sivu';
$labels['isread'] = 'Lue';
$labels['unread'] = 'Lukemattomat';
$labels['flagged'] = 'Korostettu';
$labels['unflagged'] = 'Ei merkitty';
$labels['unanswered'] = 'Vastaamaton';
$labels['withattachment'] = 'Liitteen kera';
$labels['deleted'] = 'Poistettu';
$labels['undeleted'] = 'Ei poistettu';
$labels['replied'] = 'Vastattu';
$labels['forwarded'] = 'Välitetty';
$labels['invert'] = 'Käännä';
$labels['filter'] = 'Suodin';
$labels['list'] = 'Listaus';
$labels['threads'] = 'Viestiketjut';
$labels['expand-all'] = 'Laajenna kaikki';
$labels['expand-unread'] = 'Laajenna lukemattomat';
$labels['collapse-all'] = 'Kutista kaikki';
$labels['threaded'] = 'Säikeet';
$labels['showunread'] = 'Näytä lukemattomat viestit';
$labels['autoexpand_threads'] = 'Laajenna viestiketjut automaattisesti';
$labels['do_expand'] = 'kaikki viestiketjut';
$labels['expand_only_unread'] = 'vain ne joissa lukemattomia viestejä';
$labels['fromto'] = 'Lähettäjä/Vastaanottaja';
$labels['flag'] = 'Merkitse';
$labels['attachment'] = 'Liite';
$labels['nonesort'] = 'Ei mikään';
$labels['sentdate'] = 'Lähetysaika';
$labels['arrival'] = 'Saapumisaika';
$labels['asc'] = 'nouseva';
$labels['desc'] = 'laskeva';
$labels['listcolumns'] = 'Näkyvät kentät';
$labels['listsorting'] = 'Lajittelu kenttä';
$labels['listorder'] = 'Lajittelu järjestys';
$labels['listmode'] = 'Listausnäkymä';
$labels['lmode'] = 'Listaustapa';
$labels['layout'] = 'Asettelu';
$labels['layoutwidescreen'] = 'Laajakuva';
$labels['layoutdesktop'] = 'Työpöytä';
$labels['layoutlist'] = 'Listaus';
$labels['layoutwidescreendesc'] = 'Laajakuva (3 kolumnin näkymä)';
$labels['layoutdesktopdesc'] = 'Työpöytä (laaja lista ja esikatselu)';
$labels['layoutlistdesc'] = 'Lista (ei esikatselua)';
$labels['folderactions'] = 'Kansiotoiminnot...';
$labels['compact'] = 'Tiivistä';
$labels['empty'] = 'Tyhjennä';
$labels['importmessages'] = 'Tuo viestejä';
$labels['mailimportdesc'] = 'Voit lisätä sähköpostia tiedostoissa käyttäen <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a>- tai <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>-muotoa.';
$labels['mailimportzip'] = 'Useat tiedostot on mahdollista pakata zip-arkistoihin.';
$labels['quota'] = 'Levytila';
$labels['unknown'] = 'tuntematon';
$labels['unlimited'] = 'rajoittamaton';
$labels['quotatype'] = 'Kiintiön tyyppi';
$labels['quotatotal'] = 'Raja';
$labels['quotaused'] = 'Käytetty';
$labels['quotastorage'] = 'Levytila';
$labels['quotamessage'] = 'Viestien määrä';
$labels['shortheaderdate'] = '$date';
$labels['shortheaderto'] = 'Vastaanottajalle $to, $date';
$labels['shortheaderfrom'] = 'Lähettäjältä $from, $date';
$labels['quicksearch'] = 'Pikahaku';
$labels['searchplaceholder'] = 'Hae...';
$labels['resetsearch'] = 'Nollaa haku';
$labels['searchmod'] = 'Hakukriteerit';
$labels['msgtext'] = 'Koko viesti';
$labels['body'] = 'Runko';
$labels['type'] = 'Tyyppi';
$labels['namex'] = 'Nimi';
$labels['searchscope'] = 'Rajaus';
$labels['currentfolder'] = 'Nykyinen kansio';
$labels['subfolders'] = 'Nykyinen kansio ja sen alikansiot';
$labels['allfolders'] = 'Kaikki kansiot';
$labels['searchinterval-1W'] = 'viikkoa vanhempi';
$labels['searchinterval-1M'] = 'kuukautta vanhempi';
$labels['searchinterval-1Y'] = 'vuotta vanhempi';
$labels['searchinterval1W'] = 'viikkoa uudempi';
$labels['searchinterval1M'] = 'kuukautta uudempi';
$labels['searchinterval1Y'] = 'vuotta uudempi';
$labels['openinextwin'] = 'Avaa uudessa ikkunassa';
$labels['emlsave'] = 'Tallenna (.eml)';
$labels['changeformattext'] = 'Näytä raakatekstimuodossa';
$labels['changeformathtml'] = 'Näytä HTML-muodossa';
$labels['editasnew'] = 'Muokkaa uutena';
$labels['send'] = 'Lähetä';
$labels['sendmessage'] = 'Lähetä viesti';
$labels['savemessage'] = 'Tallenna tämä luonnos';
$labels['addattachment'] = 'Liitetiedosto';
$labels['charset'] = 'Merkistö';
$labels['editortype'] = 'Editorin tyyppi';
$labels['returnreceipt'] = 'Perillesaapumisilmoitus';
$labels['dsn'] = 'Toimituksen tilailmoitus';
$labels['keepformatting'] = 'Säilytä muotoilu';
$labels['mailreplyintro'] = '$sender kirjoitti $date:';
$labels['originalmessage'] = 'Alkuperäinen viesti';
$labels['selectimage'] = 'Valitse kuva';
$labels['addimage'] = 'Lisää kuva';
$labels['selectmedia'] = 'Valitse elokuva';
$labels['addmedia'] = 'Lisää elokuva';
$labels['encrypt'] = 'Salaa';
$labels['encryptmessage'] = 'Salaa viesti';
$labels['encryptmessagemailvelope'] = 'Salaa viesti Mailvelopella';
$labels['importpubkeys'] = 'Tuo julkiset avaimet';
$labels['encryptedsendialog'] = 'Lähetetään salattua viestiä';
$labels['encryptandsign'] = 'Salaa ja allekirjoita';
$labels['keyid'] = 'Avaimen tunniste';
$labels['keylength'] = 'Bittiä';
$labels['keyexpired'] = 'Vanhentunut';
$labels['keyrevoked'] = 'Kumottu';
$labels['bccinstead'] = 'Käytä Piilokopiota';
$labels['addheader'] = 'LIsää vastaanottaja (header)';
$labels['insert'] = 'Lisää';
$labels['insertcontact'] = 'Lisää yhteystieto(ja)';
$labels['recipient'] = 'Vastaanottaja';
$labels['recipientedit'] = 'Vastaanottajan muokkaus';
$labels['editidents'] = 'Muokkaa identiteettejä';
$labels['spellcheck'] = 'Oikeinkirjoitus';
$labels['checkspelling'] = 'Tarkista oikeinkirjoitus';
$labels['resumeediting'] = 'Jatka muokkausta';
$labels['revertto'] = 'Muuta takaisin';
$labels['restore'] = 'Palauta';
$labels['restoremessage'] = 'Palautetaanko viesti?';
$labels['ignore'] = 'Jätä huomiotta';
$labels['responses'] = 'Vastaukset';
$labels['insertresponse'] = 'Lisää vastaus';
$labels['manageresponses'] = 'Hallitse vastauksia';
$labels['newresponse'] = 'Luo uusi vastaus';
$labels['addresponse'] = 'Lisää vastaus';
$labels['editresponse'] = 'Muokkaa vastausta';
$labels['editresponses'] = 'Muokkaa vastauksia';
$labels['responsename'] = 'Nimi';
$labels['responsetext'] = 'Vastausteksti';
$labels['attach'] = 'Liitä';
$labels['attachments'] = 'Liitetiedostot';
$labels['upload'] = 'Lisää';
$labels['uploadprogress'] = '$percent ($current/$total)';
$labels['close'] = 'Sulje';
$labels['messageoptions'] = 'Viestin asetukset...';
$labels['togglecomposeoptions'] = 'Vaihda kirjoitusvalintoja';
$labels['attachmentrename'] = 'Nimeä liite uudelleen';
$labels['low'] = 'Matala';
$labels['lowest'] = 'Matalin';
$labels['normal'] = 'Normaali';
$labels['high'] = 'Korkea';
$labels['highest'] = 'Korkein';
$labels['nosubject'] = '(ei aihetta)';
$labels['showimages'] = 'Näytä kuvat';
$labels['allow'] = 'Salli';
$labels['alwaysshow'] = 'Näytä aina lähettäjältä $sender saapuneet kuvat';
$labels['alwaysallow'] = 'Salli aina lähettäjältä $sender';
$labels['isdraft'] = 'Tämä on luonnosviesti.';
$labels['andnmore'] = '$nr lisää...';
$labels['details'] = 'Tiedot';
$labels['summary'] = 'Yhteenveto';
$labels['headers'] = 'Otsakkeet';
$labels['allheaders'] = 'Kaikki otsakkeet...';
$labels['togglemoreheaders'] = 'Näytä lisää viestiotsakkeita';
$labels['togglefullheaders'] = 'Viestin otsakkeet päällä/pois';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Tavallinen teksti';
$labels['savesentmessagein'] = 'Tallenna lähetetty viesti kansioon';
$labels['dontsave'] = 'Älä tallenna';
$labels['maxuploadsize'] = 'Suurin sallittu tiedostokoko on $size';
$labels['addcc'] = 'Lisää kopio';
$labels['addbcc'] = 'Lisää piilokopio';
$labels['addreplyto'] = 'Lisää vastausosoite';
$labels['addfollowupto'] = 'Lisää keskustelunsiirto';
$labels['sendreceipt'] = 'Lähetä lukukuittaus?';
$labels['mdnrequest'] = 'Viestin lähettäjä on pyytänyt kuittauksen siitä että olet lukenut viestin. Haluatko lähettää kuittauksen?';
$labels['receiptread'] = 'Lukukuittaus';
$labels['yourmessage'] = 'Tämä viesti on kuittaus lähettämällesi viestille';
$labels['receiptnote'] = 'Huom! Kuittaus tarkoittaa vain sitä, että viesti on avattu vastaanottajan tietokoneella. Se ei tarkoita että vastaanottaja on myös lukenut tai ymmärtänyt viestin.';
$labels['sendalwaysto'] = 'Lähetä aina lähettäjälle $email';
$labels['zoomin'] = 'Lähennä';
$labels['zoomout'] = 'Loitonna';
$labels['rotate'] = 'Käännä';
$labels['increaseimage'] = 'Suurenna kuvaa';
$labels['decreaseimage'] = 'Pienennä kuvaa';
$labels['rotateimage'] = 'Käännä kuvaa';
$labels['showtools'] = 'Näytä kuvatyökalut';
$labels['hidetools'] = 'Piilota kuvatyökalut';
$labels['name'] = 'Näkyvä nimi';
$labels['firstname'] = 'Etunimi';
$labels['surname'] = 'Sukunimi';
$labels['middlename'] = 'Toinen nimi';
$labels['nameprefix'] = 'Etuliite';
$labels['namesuffix'] = 'Jälkiliite';
$labels['nickname'] = 'Lempinimi';
$labels['jobtitle'] = 'Titteli';
$labels['department'] = 'Osasto';
$labels['gender'] = 'Sukupuoli';
$labels['maidenname'] = 'Tyttönimi';
$labels['email'] = 'Sähköposti';
$labels['phone'] = 'Puhelin';
$labels['address'] = 'Osoite';
$labels['street'] = 'Katu';
$labels['locality'] = 'Kaupunki';
$labels['zipcode'] = 'Postinumero';
$labels['region'] = 'Osavaltio tai lääni';
$labels['country'] = 'Maa';
$labels['birthday'] = 'Syntymäpäivä';
$labels['anniversary'] = 'Vuosipäivä';
$labels['website'] = 'Verkkosivu';
$labels['instantmessenger'] = 'Pikaviestin';
$labels['notes'] = 'Muistiinpanot';
$labels['male'] = 'mies';
$labels['female'] = 'nainen';
$labels['manager'] = 'Päällikkö';
$labels['assistant'] = 'Avustaja';
$labels['spouse'] = 'Puoliso';
$labels['allfields'] = 'Kaikki kentät';
$labels['search'] = 'Haku';
$labels['searchresult'] = 'Haun tulos';
$labels['advsearch'] = 'Tarkennettu haku';
$labels['advanced'] = 'Lisäasetukset';
$labels['other'] = 'Muu';
$labels['printcontact'] = 'Tulosta yhteystieto';
$labels['qrcode'] = 'QR-koodi';
$labels['typehome'] = 'Koti';
$labels['typework'] = 'Työ';
$labels['typeother'] = 'Muu';
$labels['typemobile'] = 'Matkapuhelin';
$labels['typemain'] = 'Oma';
$labels['typehomefax'] = 'Kotifaksi';
$labels['typeworkfax'] = 'Työfaksi';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Hakulaite';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Avustaja';
$labels['typehomepage'] = 'Kotisivu';
$labels['typeblog'] = 'Blogi';
$labels['typeprofile'] = 'Profiili';
$labels['addfield'] = 'Lisää kenttä...';
$labels['addcontact'] = 'Lisää yhteystieto';
$labels['editcontact'] = 'Muokkaa yhteystietoa';
$labels['contacts'] = 'Yhteystiedot';
$labels['contactproperties'] = 'Yhteystiedon ominaisuudet';
$labels['contactnameandorg'] = 'Nimi ja organisaatio';
$labels['personalinfo'] = 'Henkilökohtaiset tiedot';
$labels['personal'] = 'Henkilökohtainen';
$labels['contactphoto'] = 'Yhteyshenkilön kuva';
$labels['edit'] = 'Muokkaa';
$labels['cancel'] = 'Peruuta';
$labels['save'] = 'Tallenna';
$labels['delete'] = 'Poista';
$labels['discard'] = 'Hylkää';
$labels['continue'] = 'Jatka';
$labels['ok'] = 'OK';
$labels['rename'] = 'Nimeä uudelleen';
$labels['addphoto'] = 'Lisää';
$labels['replacephoto'] = 'Korvaa';
$labels['uploadphoto'] = 'Lähetä kuva';
$labels['choosefile'] = 'Valitse tiedosto...';
$labels['choosefiles'] = 'Valitse tiedostot...';
$labels['browse'] = 'Selaa';
$labels['newcontact'] = 'Luo uusi yhteystieto';
$labels['deletecontact'] = 'Poista valitut yhteystiedot';
$labels['composeto'] = 'Kirjoita viesti yhteystiedolle';
$labels['contactsfromto'] = 'Yhteystiedot $from-$to/$count';
$labels['print'] = 'Tulosta';
$labels['export'] = 'Vie';
$labels['exportall'] = 'Vie kaikki';
$labels['exportsel'] = 'Vie valitut';
$labels['exportvcards'] = 'Vie yhteystiedot vCard-muodossa';
$labels['newgroup'] = 'Luo uusi ryhmä';
$labels['addgroup'] = 'Lisää ryhmä';
$labels['grouprename'] = 'Nimeä ryhmä uudelleen';
$labels['groupdelete'] = 'Poista ryhmä';
$labels['groupassign'] = 'Aseta ryhmään...';
$labels['groupremove'] = 'Poista ryhmästä';
$labels['groupremoveselected'] = 'Poista valitut yhteystiedot ryhmästä';
$labels['uponelevel'] = 'Yksi taso ylös';
$labels['previouspage'] = 'Näytä edellinen luettelo';
$labels['firstpage'] = 'Näytä ensimmäinen luettelo';
$labels['nextpage'] = 'Näytä seuraava luettelo';
$labels['lastpage'] = 'Näytä viimeinen luettelo';
$labels['group'] = 'Ryhmä';
$labels['groups'] = 'Ryhmät';
$labels['listgroup'] = 'Listaa ryhmän jäsenet';
$labels['personaladrbook'] = 'Henkilökohtaiset osoitteet';
$labels['searchsave'] = 'Tallenna haku';
$labels['searchdelete'] = 'Poista haku';
$labels['import'] = 'Tuo';
$labels['importcontacts'] = 'Tuo yhteystiedot';
$labels['importfromfile'] = 'Tuo tiedostosta';
$labels['importtarget'] = 'Lisää yhteystiedot kohteeseen';
$labels['importreplace'] = 'Korvaa koko osoitekirja';
$labels['importgroups'] = 'Tuo ryhmämääritykset';
$labels['importgroupsall'] = 'Kaikki (luo ryhmät tarvittaessa)';
$labels['importgroupsexisting'] = 'Vain olemassa oleville ryhmille';
$labels['importdesc'] = 'Voit tuoda yhteystietoja olemassa olevasta osoitekirjasta.<br/>Tuetut muodot ovat <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> tai CSV.';
$labels['importmapdesc'] = 'Vahvista että kenttien kohdennus alla on oikein ennen CSV-materiaalin tuontia.';
$labels['fieldnotmapped'] = 'Kenttää ei kohdennettu (älä tuo)';
$labels['skipheader'] = 'Älä tuo ensimmäistä riviä (otsakkeet)';
$labels['done'] = 'Valmis';
$labels['settingsfor'] = 'Asetukset';
$labels['about'] = 'Tietoja';
$labels['preferences'] = 'Asetukset';
$labels['userpreferences'] = 'Käyttäjän asetukset';
$labels['editpreferences'] = 'Muokkaa käyttäjän asetuksia';
$labels['identities'] = 'Identiteetit';
$labels['manageidentities'] = 'Hallitse henkilöyksiä';
$labels['newidentity'] = 'Luo uusi henkilöys';
$labels['addidentity'] = 'Lisää henkilöys';
$labels['editidentity'] = 'Muokkaa henkilöyttä';
$labels['identityencryption'] = 'Salaus';
$labels['preferhtml'] = 'Käytä HTML:aa';
$labels['defaultcharset'] = 'Oletusmerkistökoodaus';
$labels['htmlmessage'] = 'HTML-viesti';
$labels['messagepart'] = 'Osa';
$labels['digitalsig'] = 'Digitaalinen allekirjoitus';
$labels['dateformat'] = 'Päiväyksen muoto';
$labels['timeformat'] = 'Ajan muoto';
$labels['prettydate'] = 'Nätit päiväykset';
$labels['setdefault'] = 'Aseta vakioksi';
$labels['autodetect'] = 'Automaattinen';
$labels['language'] = 'Kieli';
$labels['timezone'] = 'Aikavyöhyke';
$labels['pagesize'] = 'Rivejä sivulla';
$labels['signature'] = 'Allekirjoitus';
$labels['dstactive'] = 'Kesäaika';
$labels['showinextwin'] = 'Avaa viesti uudessa ikkunassa';
$labels['composeextwin'] = 'Lähetä viesti uudessa ikkunassa';
$labels['htmleditor'] = 'Kirjoita HTML-muodossa';
$labels['htmlonreply'] = 'Vain vastatessa HTML-viesteihin';
$labels['htmlonreplyandforward'] = 'välittäessä tai vastatessa HTML-viestiin';
$labels['htmlsignature'] = 'HTML-allekirjoitus';
$labels['showemail'] = 'Näytä sähköpostiosoite näyttönimen kanssa';
$labels['previewpane'] = 'Näytä esikatselulehti';
$labels['skin'] = 'Käyttöliittymän teema';
$labels['logoutclear'] = 'Tyhjennä roskakori kirjautuessa ulos';
$labels['logoutcompact'] = 'Tiivistä kansiot kirjautuessa ulos';
$labels['uisettings'] = 'Käyttöliittymä';
$labels['serversettings'] = 'Palvelinasetukset';
$labels['mailboxview'] = 'Postilaatikkonäkymä';
$labels['mdnrequests'] = 'Lähettäjän kuittaukset';
$labels['askuser'] = 'kysy käyttäjältä';
$labels['autosend'] = 'lähetä automaattisesti';
$labels['autosendknown'] = 'Lähetä kuittaus kontaktilistassa oleville, kysy muulloin';
$labels['autosendknownignore'] = 'Lähetä kuittaus vain kontaktilistassa oleville';
$labels['autosendtrusted'] = 'lähetä kuittaus luotetuille lähettäjille, kysy minulta muulloin';
$labels['autosendtrustedignore'] = 'lähetä kuittaus luotetuille lähettäjille, jätä muulloin huomiotta';
$labels['ignorerequest'] = 'Hylkää pyyntö';
$labels['readwhendeleted'] = 'Merkitse poistettavat viestit luetuiksi';
$labels['flagfordeletion'] = 'Poistamisen sijaan merkitse viestit poistettavaksi';
$labels['skipdeleted'] = 'Älä näytä poistettuja viestejä';
$labels['deletealways'] = 'Poista viestit, joiden siirtäminen roskakoriin epäonnistuu';
$labels['deletejunk'] = 'Poista roskapostiviestit suoraan';
$labels['showremoteimages'] = 'Näytä ulkopuoliset kuvat viestissä';
$labels['allowremoteresources'] = 'Salli ulkoiset lähteet (kuvat, tyylitiedostot)';
$labels['fromknownsenders'] = 'tunnetuilta lähettäjiltä';
$labels['fromtrustedsenders'] = 'tunnetuista lähettäjistä';
$labels['frommycontacts'] = 'yhteystiedoistani';
$labels['always'] = 'aina';
$labels['alwaysbutplain'] = 'aina, paitsi vastatessa "vain teksti"-viesteihin';
$labels['showinlineimages'] = 'Näytä liitekuvat viestin jälkeen';
$labels['autosavedraft'] = 'Tallenna luonnos automaattisesti';
$labels['everynminutes'] = 'joka $n. minuutti';
$labels['refreshinterval'] = 'Päivitä (tarkista uudet viestit jne.)';
$labels['never'] = 'ei koskaan';
$labels['immediately'] = 'välittömästi';
$labels['messagesdisplaying'] = 'Viestien näyttäminen';
$labels['messagescomposition'] = 'Viestien kirjoittaminen';
$labels['mimeparamfolding'] = 'Liitetiedostojen nimet';
$labels['2231folding'] = 'Täysin RFC 2231:n mukainen (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231:n mukainen (MS Outlook)';
$labels['2047folding'] = 'Täysin RFC 2047:n mukainen (muut)';
$labels['force7bit'] = 'Käytä MIME-koodausta 8-bittisille merkeille';
$labels['savelocalstorage'] = "Tallenna selaimen paikalliseen tallennustilaan (väliaikaisesti)";
$labels['advancedoptions'] = 'Lisäasetukset';
$labels['toggleadvancedoptions'] = 'Vaihda edistyneemmät valinnat';
$labels['focusonnewmessage'] = 'Tarkenna selainikkuna uuteen viestiin';
$labels['checkallfolders'] = 'Tarkista kaikki kansiot uusien viestien varalta';
$labels['displaynext'] = 'Näytä listalta seuraava poiston/siirron jälkeen';
$labels['defaultfont'] = 'HTML-viestin oletuskirjasin';
$labels['mainoptions'] = 'Pääasetukset';
$labels['browseroptions'] = 'Selainasetukset';
$labels['section'] = 'Kohta';
$labels['maintenance'] = 'Huolto';
$labels['newmessage'] = 'Uusi viesti';
$labels['signatureoptions'] = 'Allekirjoituksen asetukset';
$labels['whenreplying'] = 'Vastattaessa';
$labels['replyempty'] = 'älä lainaa alkuperäistä viestiä';
$labels['replytopposting'] = 'aloita uusi viesti alkuperäisen yläpuolelle';
$labels['replytoppostingnoindent'] = 'aloita uusi viesti lainauksen yläpuolella (ei sisennystä)';
$labels['replybottomposting'] = 'aloita uusi viesti alkuperäisen alapuolelle';
$labels['replyremovesignature'] = 'Vastattaessa poista alkuperäinen allekirjoitus viestistä';
$labels['autoaddsignature'] = 'Lisää allekirjoitus automaattisesti';
$labels['newmessageonly'] = 'vain uuteen viestiin';
$labels['replyandforwardonly'] = 'vain vastauksiin ja välityksiin';
$labels['insertsignature'] = 'Lisää allekirjoitus';
$labels['sigbelow'] = 'Aseta allekirjoitus lainatun viestin alapuolelle';
$labels['sigseparator'] = 'Pakota standardi erotin allekirjoituksissa';
$labels['automarkread'] = 'Merkitse viestit luetuksi';
$labels['afternseconds'] = '$n sekunnin jälkeen';
$labels['reqmdn'] = 'Pyydä aina kuittausviestiä';
$labels['reqdsn'] = 'Pyydä aina toimituksen tilailmoitus';
$labels['replysamefolder'] = 'Laita vastaukseni samaan hakemistoon alkuperäisen viestin kanssa';
$labels['defaultabook'] = 'Oletusarvoinen osoitekirja';
$labels['autocompletesingle'] = 'Älä huomioi vaihtoehtoisia sähköpostiosoitteita automaattisessa täydennyksessä';
$labels['listnamedisplay'] = 'Listaa yhteystiedot';
$labels['contactformmode'] = 'Yhteydenottolomaketila';
$labels['privatemode'] = 'Yksityinen (Koti)';
$labels['businessmode'] = 'Työ';
$labels['collectedaddresses'] = 'Kerätyt osoitteet';
$labels['collectedrecipients'] = 'Kerätyt vastaanottajat';
$labels['collectedrecipientsopt'] = 'Säilytä lähtevien sähköpostien vastaanottajat';
$labels['collectedsendersopt'] = 'Säilytä luotetut lähettäjät';
$labels['trustedsenders'] = 'Luotetut lähettäjät';
$labels['spellcheckbeforesend'] = 'Tarkista oikeinkirjoitus ennen viestin lähetystä';
$labels['spellcheckoptions'] = 'Oikuluvun asetukset';
$labels['spellcheckignoresyms'] = 'Jätä huomiotta sanat, joissa on symboleja';
$labels['spellcheckignorenums'] = 'Jätä huomiotta sanat, joissa on numeroita';
$labels['spellcheckignorecaps'] = 'Jätä huomiotta sanat, joissa kaikki kirjaimet on isoja';
$labels['addtodict'] = 'Lisää sanakirjaan';
$labels['mailtoprotohandler'] = 'Rekisteröi mailto:-linkkien protokollakäsitteljä';
$labels['standardwindows'] = 'Käsittele popup-ikkunoita tavallisina ikkunoina';
$labels['forwardmode'] = 'Viestin välitys';
$labels['inline'] = 'rivissä';
$labels['asattachment'] = 'liitteenä';
$labels['replyallmode'] = 'Oletustoiminto [Vastaa kaikille]-painikkeelle';
$labels['replyalldefault'] = 'vastaa kaikille';
$labels['replyalllist'] = 'vastaa pelkälle postituslistalle (jos havaittu)';
$labels['allmessages'] = 'Kaikki viestit';
$labels['olderxdays'] = 'vanhempi kuin $x päivää';
$labels['folder'] = 'Kansio';
$labels['folders'] = 'Kansiot';
$labels['foldername'] = 'Kansion nimi';
$labels['subscribed'] = 'Näytetään';
$labels['messagecount'] = 'Viestejä';
$labels['create'] = 'Luo uusi';
$labels['createfolder'] = 'Luo uusi kansio';
$labels['managefolders'] = 'Kansioiden hallinta';
$labels['specialfolders'] = 'Erikoiskansiot';
$labels['properties'] = 'Ominaisuudet';
$labels['folderproperties'] = 'Kansion ominaisuudet';
$labels['parentfolder'] = 'Yläkansio';
$labels['location'] = 'Sijanti';
$labels['info'] = 'Tietoja';
$labels['getfoldersize'] = 'Napsauta saadaksesi kansion koon';
$labels['changesubscription'] = 'Klikkaa muuttaaksesi tilausta';
$labels['foldertype'] = 'Kansion tyyppi';
$labels['personalfolder'] = 'Yksityinen kansio';
$labels['otherfolder'] = 'Toisen käyttäjän kansio';
$labels['sharedfolder'] = 'Julkinen kansio';
$labels['findfolders'] = 'Etsi kansioita';
$labels['findcontacts'] = 'Etsi yhteystiedot';
$labels['findmail'] = 'Etsi viestit';
$labels['namespace.personal'] = 'Henkilökohtainen';
$labels['namespace.other'] = 'Muut käyttäjät';
$labels['namespace.shared'] = 'Jaettu';
$labels['dualuselabel'] = 'Voi sisältää vain';
$labels['dualusemail'] = 'viestit';
$labels['dualusefolder'] = 'kansiot';
$labels['generate'] = 'Luo';
$labels['encryptioncreatekey'] = 'Luo uusi avainpari';
$labels['openmailvelopesettings'] = 'Avaa Mailvelopen asetukset';
$labels['encryptionprivkeysinmailvelope'] = 'Sinulla on $nr täsmäävää yksityistä avainta tallennettuna Mailvelope-avainketjuusi:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Tällä lähettäjäidentiteetillä ei vielä ole yksityistä PGP-avainta tallennettuna Mailvelope-laajennukseesi. Haluatko luoda avaimen mahdollistaaksesi salatun viestinnän?';
$labels['encryption'] = 'Salaus';
$labels['mailvelopeoptions'] = 'Mailvelopen valinnat';
$labels['mailvelopemainkeyring'] = 'Käytä Mailvelopen pääavainnippua';
$labels['mailvelopenotfound'] = 'Mailvelope-laajennusta ei ole otettu käyttöön tai asennettu selaimeesi.';
$labels['sortby'] = 'Järjestä';
$labels['sortasc'] = 'Järjestä nousevasti (a-ö)';
$labels['sortdesc'] = 'Järjestä laskevasti (ö-a)';
$labels['undo'] = 'Kumoa';
$labels['installedplugins'] = 'Asennetut lisäosat';
$labels['plugin'] = 'Liitännäinen';
$labels['version'] = 'Versio';
$labels['source'] = 'Lähde';
$labels['destination'] = 'Kohde';
$labels['license'] = 'Lisenssi';
$labels['support'] = 'Hanki tukea';
$labels['savedsearches'] = 'Tallennetut haut';
$labels['dateformatY'] = 'VVVV';
$labels['dateformaty'] = 'VV';
$labels['dateformatm'] = 'KK';
$labels['dateformatd'] = 'PP';
$labels['dateformatj'] = 'P';
$labels['dateformatn'] = 'K';
$labels['B'] = 't';
$labels['KB'] = 'Kt';
$labels['MB'] = 'Mt';
$labels['GB'] = 'Gt';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englantilainen';
$labels['westerneuropean'] = 'Länsieurooppalainen';
$labels['easterneuropean'] = 'Itäeurooppalainen';
$labels['southeasterneuropean'] = 'Eteläeurooppalainen';
$labels['baltic'] = 'Balttilainen';
$labels['cyrillic'] = 'Kyrillinen';
$labels['arabic'] = 'Arabialainen';
$labels['greek'] = 'Kreikkalainen';
$labels['hebrew'] = 'Heprealainen';
$labels['turkish'] = 'Turkkilainen';
$labels['nordic'] = 'Pohjoismaalainen';
$labels['thai'] = 'Thaimaalainen';
$labels['celtic'] = 'Kelttiläinen';
$labels['vietnamese'] = 'Vietnamilainen';
$labels['japanese'] = 'Japanilainen';
$labels['korean'] = 'Korealainen';
$labels['chinese'] = 'Kiinalainen';
$labels['arialabeltopnav'] = 'Ikkunan hallinta';
$labels['arialabeltasknav'] = 'Sovelluksen tehtävät';
$labels['arialabeltoolbar'] = 'Sovelluksen työkalupalkki';
$labels['arialabellistnav'] = 'Listan navigointi';
$labels['arialabelactivetask'] = 'Aktiivinen tehtävä';
$labels['arialabelmessagessearchfilter'] = 'Sähköpostin listaussuodatin';
$labels['arialabelmailsearchform'] = 'Sähköpostiviestin hakulomake';
$labels['arialabelcontactsearchform'] = 'Yhteyshenkilöiden hakulomake';
$labels['arialabelmailquicksearchbox'] = 'Sähköpostihaun syöttö';
$labels['arialabelquicksearchbox'] = 'Haun syöttö';
$labels['arialabelfoldersearchfilter'] = 'Kansion listaussuodatin';
$labels['arialabelfoldersearchform'] = 'Kansion hakulomake';
$labels['arialabelfolderlist'] = 'Sähköpostin kansion valinta';
$labels['arialabelmessagelist'] = 'Sähköpostiviestien listaus';
$labels['arialabelmailpreviewframe'] = 'Viestin esikatselu';
$labels['arialabelmailboxmenu'] = 'Kansion toimintovalikko';
$labels['arialabellistselectmenu'] = 'Listaa valintavalikko';
$labels['arialabelthreadselectmenu'] = 'Keskusteluiden listausvalikko';
$labels['arialabelmessagelistoptions'] = 'Viestilista ja järjestelyvalinnat';
$labels['arialabelmailimportdialog'] = 'Viestintuonti';
$labels['arialabelmessagenav'] = 'Viestien navigointi';
$labels['arialabelmessagebody'] = 'Viestin runko';
$labels['arialabelmessageactions'] = 'Viestitoiminnot';
$labels['arialabelcontactquicksearch'] = 'Yhteyshenkilöiden hakulomake';
$labels['arialabelcontactsearchbox'] = 'Yhteyshenkilön hakusyöte';
$labels['arialabelmessageheaders'] = 'Viestin otsakkeet';
$labels['arialabelforwardingoptions'] = 'Uudelleenohjausvalinnat';
$labels['arialabelreplyalloptions'] = 'Vastaa kaikille -valinnat';
$labels['arialabelmoremessageactions'] = 'Lisää viestitoimintoja';
$labels['arialabelmorecontactactions'] = 'Lisää yhteystietotoimintoja';
$labels['arialabelmarkmessagesas'] = 'Merkitse valitut viestit...';
$labels['arialabelcomposeoptions'] = 'Kirjoitusvalinnat';
$labels['arialabelresponsesmenu'] = 'Valmiit vastaukset -valikko';
$labels['arialabelattachmentuploadform'] = 'Liitteen lähetyslomake';
$labels['arialabelattachmentmenu'] = 'Liitteiden asetukset';
$labels['arialabelmailtomenu'] = 'Sähköpostiosoitteen asetukset';
$labels['arialabelattachmentpreview'] = 'Liitteen esikatselu';
$labels['ariasummarycomposecontacts'] = 'Luettelo yhteyshenkilöistä ja ryhmistä, jotka voi valita vastaanottajaksi';
$labels['arialabelcontactexportoptions'] = 'Yhteyshenkilön vientivalinnat';
$labels['arialabelabookgroupoptions'] = 'Osoitekirjan/ryhmän valinnat';
$labels['arialabelpreferencesform'] = 'Asetukset -lomake';
$labels['arialabelidentityeditfrom'] = 'Henkilöyden muokkauslomake';
$labels['arialabelresponseeditfrom'] = 'Vastauksen muokkauslomake';
$labels['arialabelsearchterms'] = 'Hakuehdot';
$labels['arialabeldropactionmenu'] = 'Raahaa ja pudota toimintovalikko';
$labels['arialabelheadersmenu'] = 'Vastaanottajaotsakkeen lisäysvalikko';
$labels['arialabelimagetools'] = 'Kuvatyökalut';
$labels['helplistnavigation'] = 'Luetteloi näppäimistönavigointi';
$labels['helplistkeyboardnavigation'] = "Nuolet ylös/alas: Siirrä kohdistettua riviä/valintaa.
Välilyönti: Valitse kohdistettu rivi.
Shift + ylös/alas: Valitse lisää rivejä yläpuolelta/alapuolelta.
Ctrl + välilyönti: Lisää kohdistettu rivi valintaan/poista valinnasta.";
$labels['helplistkeyboardnavmessages'] = "Nuolinäppäimet oikealle/vasemmalle: Laajenna/kutista viestikeskustelut (vain keskustelu-tilassa).
Entteri/rivinvaihto: Avaa valittu/kohdistettu viesti.
Delete/poista: Siirrä valitut viestit roskakoriin.";
$labels['helplistkeyboardnavcontacts'] = "Enter: avaa valittu/kohdistettu yhteystieto.";
localization/fi_FI/messages.inc000064400000043045151727150600012524 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Virhe havaittu.';
$messages['loginfailed']  = 'Sisäänkirjautuminen epäonnistui';
$messages['cookiesdisabled'] = 'Selaimesi ei hyväksy evästeitä';
$messages['sessionerror'] = 'Sessio ei kelpaa tai ei ole enää voimassa';
$messages['cookiesmismatch'] = 'Evästeiden yhteensopimattomuus havaittu. Tyhjennä selaimessasi olevat evästeet.';
$messages['storageerror'] = 'Yhteys IMAP-palvelimeen epäonnistui';
$messages['servererror'] = 'Palvelinvirhe!';
$messages['servererrormsg'] = 'Palvelinvirhe: $msg';
$messages['accountlocked'] = 'Liian monta epäonnistunutta kirjautumisyritystä. Yritä myöhemmin uudelleen.';
$messages['connerror'] = 'Yhteysvirhe, ei yhteyttä palvelimeen!';
$messages['dberror'] = 'Tietokantavirhe!';
$messages['dbconnerror'] = 'Tietokantaan ei voitu yhdistää!';
$messages['windowopenerror'] = 'Ponnahdusikkuna estettiin!';
$messages['requesttimedout'] = 'Pyyntö aikakatkaistiin';
$messages['errorreadonly'] = 'Toiminnon suoritus ei onnistu, koska hakemisto on vain lukutilassa.';
$messages['errornoperm'] = 'Toimintoa ei voitu suorittaa. Ei oikeuksia.';
$messages['erroroverquota'] = 'Toiminnon suoritus epäonnistui. Levytila on loppu.';
$messages['erroroverquotadelete'] = 'Levytila on loppu. Paina SHIFT+DEL poistaaksesi viestin.';
$messages['invalidrequest'] = 'Virheellinen pyyntö! Tietoa ei tallennettu.';
$messages['invalidhost'] = 'Virheellinen palvelinnimi.';
$messages['nomessagesfound'] = 'Kansiossa ei ole sähköpostiviestejä';
$messages['loggedout'] = 'Lopetit istunnon onnistuneesti. Näkemiin!';
$messages['mailboxempty'] = 'Postilaatikko on tyhjä';
$messages['nomessages'] = 'Ei viestejä';
$messages['refreshing'] = 'Päivitetään...';
$messages['loading'] = 'Ladataan...';
$messages['uploading'] = 'Ladataan tiedostoa palvelimelle...';
$messages['attaching'] = 'Liitetään tiedostoa...';
$messages['uploadingmany'] = 'Ladataan tiedostoja...';
$messages['loadingdata'] = 'Ladataan tietoja...';
$messages['checkingmail'] = 'Tarkistetaan saapuneita viestejä...';
$messages['sendingmessage'] = 'Lähetetään viestiä...';
$messages['messagesent'] = 'Viesti lähetetty';
$messages['savingmessage'] = 'Tallennetaan viestiä...';
$messages['messagesaved'] = 'Viesti tallennettu "Luonnokset"-kansioon';
$messages['successfullysaved'] = 'Tallennus onnistui';
$messages['savingresponse'] = 'Tallennetaan vastaustekstiä...';
$messages['deleteresponseconfirm'] = 'Haluatko varmasti poistaa tämän vastaustekstin?';
$messages['nocontactselected'] = 'Et ole vielä valinnut yhteystietoja.';
$messages['addedsuccessfully'] = 'Yhteystieto lisätty osoitekirjaan';
$messages['contactexists'] = 'Yhteystieto samalla sähköpostiosoitteella on jo olemassa.';
$messages['contactnameexists'] = 'Yhteystieto samalla nimellä on jo olemassa';
$messages['blockedimages'] = 'Turvallisuussyistä viestin kuvia ei näytetty.';
$messages['blockedresources'] = 'Turvallisuussyistä viestin ulkoisia lähteitä ei näytetty.';
$messages['suspiciousemail'] = 'Viesti sisältää epäilyttäviä sähköpostiosoitteita, jotka voivat olla vilpillisiä.';
$messages['bccemail'] = 'Välitetyt viestit sisältävät luottamuksellisia vastaanottajia (Bcc).';
$messages['bouncehint'] = 'Viesti lähetetään muutoksitta, eli viestin runko, otsakkeet ja vastaanottajat pysyvät samana.';
$messages['encryptedmessage'] = 'Viesti on salattu, eikä sitä voida näyttää.';
$messages['externalmessagedecryption'] = 'Tämä on salattu viesti. Viestin salaus on mahdollista purkaa selaimesi laajennuksella.';
$messages['nopubkeyfor'] = 'Sähköpostille $email ei löytynyt kelvollista julkista avainta';
$messages['nopubkeyforsender'] = 'Lähettäjäidentiteetillesi ei löytynyt kelvollista julkista avainta. Haluatko salata viestin vain vastaanottajille?';
$messages['encryptnoattachments'] = 'Entuudestaan määritettyjä liitteitä ei voi salata. Lisää liitteet uudelleen salausmuokkaimen kautta.';
$messages['searchpubkeyservers'] = 'Haluatko etsiä puuttuvia avaimia julkisten avainten palvelimilta?';
$messages['encryptpubkeysfound'] = 'Seuraavat avaimet löydettiin:';
$messages['keyservererror'] = 'Avaimen noutaminen avainpalvelimelta epäonnistui.';
$messages['keyimportsuccess'] = 'Julkinen avain $key tuotiin onnistuneesti avainnippuusi.';
$messages['nocontactsfound'] = 'Yhteystietoja ei löytynyt.';
$messages['contactnotfound'] = 'Pyydettyä yhteystietoa ei löytynyt';
$messages['contactsearchonly'] = 'Sinun on käytettävä hakulomaketta nähdäksesi yhteystiedot valitusta osoitekirjasta.';
$messages['sendingfailed'] = 'Viestin lähetys epäonnistui';
$messages['senttooquickly'] = 'Odota $sec sekunti(a) ennen viestin lähettämistä';
$messages['errorsavingsent'] = 'Virhe tallennettaessa lähetettyä viestiä.';
$messages['errorsaving'] = 'Virhe tallennettaessa.';
$messages['errormoving'] = 'Viestiä ei voitu siirtää';
$messages['errorcopying'] = 'Viestiä ei voitu kopioida';
$messages['errordeleting'] = 'Viestiä ei voitu poistaa';
$messages['errormarking'] = 'Viestiä ei voitu merkiä';
$messages['alerttitle'] = 'Huomio';
$messages['confirmationtitle'] = 'Oletko varma...';
$messages['deletecontactconfirm']  = 'Haluatko varmasti poistaa valitut yhteystiedot?';
$messages['deletegroupconfirm']  = 'Haluatko varmasti poistaa valitun ryhmän?';
$messages['deletemessagesconfirm'] = 'Haluatko varmasti poistaa valitut viestit?';
$messages['deletefolderconfirm']  = 'Haluatko varmasti poistaa kansion?';
$messages['movefolderconfirm']  = 'Haluatko varmasti siirtää tämän kansion?';
$messages['purgefolderconfirm']  = 'Haluatko varmasti poistaa kaikki viestit kansiosta?';
$messages['contactdeleting'] = 'Poistetaan yhteystietoja...';
$messages['groupdeleting'] = 'Poistetaan ryhmää...';
$messages['folderdeleting'] = 'Poistetaan kansiota...';
$messages['foldermoving'] = 'Siirretään kansiota...';
$messages['foldersubscribing'] = 'Tilataan kansio...';
$messages['folderunsubscribing'] = 'Perutaan kansio tilaus...';
$messages['formincomplete'] = 'Lomakkeen tiedot olivat puutteelliset';
$messages['noemailwarning'] = 'Anna sähköpostiosoite';
$messages['nonamewarning']  = 'Anna nimi';
$messages['nopagesizewarning'] = 'Anna sivukoko';
$messages['nosenderwarning'] = 'Anna lähettäjän sähköpostiosoite.';
$messages['recipientsadded'] = 'Vastaanottaja(t) lisätty onnistuneesti.';
$messages['norecipientwarning'] = 'Anna ainakin yksi vastaanottaja';
$messages['disclosedrecipwarning'] = 'Kaikki vastaanottajat tulevat näkemään muut vastaanottajat. Estääksesi tämän ja suojellaksesi heidän turvallisuutta käytä BCC-kenttää.';
$messages['disclosedreciptitle'] = 'Liian monta julkista vastaanottajaa';
$messages['nosubjectwarning']  = '"Aihe"-kenttä on tyhjä. Haluatko kirjoittaa viestillesi aiheen?';
$messages['nosubjecttitle']  = 'Ei aihetta';
$messages['nobodywarning'] = 'Lähetetäänkö viesti ilman tekstiä?';
$messages['notsentwarning'] = 'Viestiä ei lähetetty ja se sisältää tallentamattomia muutoksia. Haluatko hylätä muutoksesi?';
$messages['restoresavedcomposedata'] = 'Löydettiin aiemmin luotu, mutta lähettämätön viesti.\n\nAihe: $subject\nTallennettu: $date\n\nHaluatko palauttaa tämän viestin?';
$messages['nosearchname'] = 'Anna yhteystiedon nimi tai sähköpostiosoite';
$messages['notuploadedwarning'] = 'Kaikkia liitteitä ei ole vielä ladattu palvelimelle. Odota tai peruuta lataus.';
$messages['searchsuccessful'] = 'Löydetty $nr viestiä';
$messages['contactsearchsuccessful'] = 'Löydetty $nr yhteystietoa';
$messages['searchnomatch'] = 'Haku ei tuottanut tuloksia';
$messages['searching'] = 'Etsitään...';
$messages['checking'] = 'Tarkistetaan...';
$messages['stillsearching'] = 'Etsitään edelleen...';
$messages['nospellerrors'] = 'Kirjoitusvirheitä ei löytynyt.';
$messages['folderdeleted'] = 'Kansio poistettu onnistuneesti';
$messages['foldersubscribed'] = 'Kansio tilattu onnistuneesti.';
$messages['folderunsubscribed'] = 'Kansion tilaus poistettu onnistuneesti.';
$messages['folderpurged'] = 'Kansio tyhjennettiin onnistuneesti.';
$messages['folderexpunged'] = 'Kansio tiivistettiin onnistuneesti.';
$messages['deletedsuccessfully'] = 'Poistettu onnistuneesti';
$messages['converting'] = 'Poistetaan asettelu viestistä...';
$messages['messageopenerror'] = 'Virhe kopioitaessa viestiä palvelimelta';
$messages['filelinkerror'] = 'TIedoston liittäminen epäonnistui.';
$messages['fileuploaderror'] = 'Tiedoston lähettäminen epäonnistui';
$messages['csvfilemismatch'] = 'Useiden CSV-tiedostojen tuontia erilaisilla kentillä ei tueta.';
$messages['filesizeerror'] = 'Lähetettävä tiedosto ylittää sallitun enimmäiskoon $size';
$messages['filecounterror'] = 'Voit lähettää maksimissaan $count tiedostoa kerralla.';
$messages['msgsizeerror'] = 'Tiedoston liittäminen epäonnistui. Viestin enimmäiskoko ($size) ylitettiin.';
$messages['msgsizeerrorfwd'] = 'Viestin suurin sallittu koko ($size) ylittyi. $num viesti(ä) jätettiin liittämättä.';
$messages['copysuccess'] = '$nr yhteystietoa kopioitiin onnistuneesti.';
$messages['movesuccess'] = '$nr yhteystietoa siirrettiin onnistuneesti.';
$messages['copyerror'] = 'Yhdenkään yhteystiedon kopiointi ei onnistunut.';
$messages['moveerror'] = 'Minkään yhteystiedon siirto ei onnistunut.';
$messages['sourceisreadonly'] = 'Tämän osoitteen lähde on kirjoitussuojattu';
$messages['errorsavingcontact'] = 'Yhteystietoa ei voitu tallentaa';
$messages['movingmessage'] = 'Siirretään viestiä...';
$messages['copyingmessage'] = 'Kopioidaan viestiä...';
$messages['copyingcontact'] = 'Kopioidaan yhteystietoja...';
$messages['movingcontact'] = 'Siirretään yhteystieto(j)a...';
$messages['deletingmessage'] = 'Poistetaan viestejä...';
$messages['markingmessage'] = 'Merkitään viestejä...';
$messages['addingmember'] = 'Lisätään yhteystietoja ryhmään...';
$messages['removingmember'] = 'Poistetaan yhteystietoja ryhmästä...';
$messages['receiptsent'] = 'Lukukuittaus lähetetty onnistuneesti';
$messages['errorsendingreceipt'] = 'Lukukuittausta ei voitu lähettää';
$messages['deleteidentityconfirm'] = 'Haluatko varmasti poistaa identiteetin?';
$messages['nodeletelastidentity'] = 'Et voi poistaa tätä identiteettiä, koska se on ainoa jäljelläoleva';
$messages['forbiddencharacter'] = 'Kansion nimessä on kiellettyjä merkkejä';
$messages['selectimportfile'] = 'Valitse lähetettävä tiedosto';
$messages['addresswriterror'] = 'Valittuun osoitekirjaan ei voi kirjoittaa';
$messages['contactaddedtogroup'] = 'Yhteystiedot lisätty ryhmään';
$messages['contactremovedfromgroup'] = 'Yhteystiedot poistettu ryhmästä';
$messages['nogroupassignmentschanged'] = 'Ryhmämäärityksiä ei muutettu.';
$messages['importwait'] = 'Tuodaan, odota...';
$messages['importformaterror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole kelvollinen tuontitiedosto.';
$messages['importconfirm'] = '<b>$inserted yhteystietoa tuotu onnistuneesti</b>';
$messages['importconfirmskipped'] = '<b>Ohitettu $skipped  olemassa olevaa merkintää</b>';
$messages['importmessagesuccess'] = '$nr viestiä tuotiin onnistuneesti';
$messages['importmessageerror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole kelvollinen viesti tai mailbox-tiedosto';
$messages['opnotpermitted'] = 'Toiminto ei ole sallittu!';
$messages['nofromaddress'] = 'Valitusta identiteetistä puuttuu sähköpostiosoite.';
$messages['editorwarning'] = 'Muokkaintyypin vaihtaminen saattaa aiheuttaa tekstin muotoilun katoamisen. Haluatko jatkaa?';
$messages['httpreceivedencrypterror'] = 'Vakava virhe asetuksissa. Ota välittömästi yhteys ylläpitoon. <b>Viestiäsi ei voida lähettää.</b>';
$messages['smtpconnerror'] = 'SMTP-virhe ($code): Palvelimelle yhdistäminen epäonnistui';
$messages['smtpautherror'] = 'SMTP-virhe ($code): Tunnistus epäonnistui';
$messages['smtpfromerror'] = 'SMTP-virhe ($code): Lähettäjän "$from" asettaminen epäonnistui ($msg)';
$messages['smtptoerror'] = 'SMTP-virhe ($code): Vastaanottajan "$to" lisääminen epäonnistui ($msg)';
$messages['smtprecipientserror'] = 'SMTP-virhe: Ei voida jäsentää vastaanottajien listaa.';
$messages['smtputf8error'] = 'SMTP-virhe: Palvelin ei tue Unicodea sähköpostiosoitteessa.';
$messages['smtpsizeerror'] = 'SMTP-virhe: Viestin koko ylittää palvleimen rajoituksen ($limit)';
$messages['smtperror'] = 'SMTP-virhe: $msg';
$messages['emailformaterror'] = 'Virheellinen sähköpostiosoite: $email';
$messages['toomanyrecipients'] = 'Liikaa vastaanottajia. Vähennä vastaanottajien määrä maksimiin $max.';
$messages['maxgroupmembersreached'] = 'Ryhmän jäsenten määrä ylittää maksimin $max';
$messages['internalerror'] = 'Sisäinen virhe. Yritä uudelleen.';
$messages['contactdelerror'] = 'Yhteystietoja ei voitu poistaa.';
$messages['contactdeleted'] = 'Yhteystiedot poistettu onnistuneesti.';
$messages['contactrestoreerror'] = 'Poistettujen yhteystietojen palautus epäonnistui.';
$messages['contactrestored'] = 'Yhteystiedot palautettu onnistuneesti.';
$messages['groupdeleted'] = 'Ryhmä poistettu onnistuneesti.';
$messages['grouprenamed'] = 'Ryhmä nimetty uudelleen onnistuneesti.';
$messages['groupcreated'] = 'Ryhmä luotu onnistuneesti.';
$messages['savedsearchdeleted'] = 'Tallennettu haku poistettu onnistuneesti.';
$messages['savedsearchdeleteerror'] = 'Tallennetun haun poisto epäonnistui.';
$messages['savedsearchcreated'] = 'Tallennettu haku luotu onnistuneesti.';
$messages['savedsearchcreateerror'] = 'Tallennetun haun tallennus epäonnistui.';
$messages['messagedeleted'] = 'Viestit poistettu onnistuneesti.';
$messages['messagemoved'] = 'Viestit siirretty onnistuneesti.';
$messages['messagemovedtotrash'] = 'Yksi tai useampi viesti siirrettiin roskakoriin onnistuneesti.';
$messages['messagecopied'] = 'Viestit kopioitu onnistuneesti.';
$messages['messagemarked'] = 'Viestit merkitty onnistuneesti.';
$messages['autocompletechars'] = 'Kirjoita vähintään $min merkkiä  ennen automaattista täydennystä.';
$messages['autocompletemore'] = 'Täsmääviä kohteita löytyi enemmän. Syötä lisää merkkejä.';
$messages['namecannotbeempty'] = 'Nimi ei voi olla tyhjä.';
$messages['nametoolong'] = 'Nimi on liian pitkä.';
$messages['namedotforbidden'] = 'Kansion nimi ei voi alkaa pisteellä.';
$messages['folderupdated'] = 'Kansio päivitetty onnistuneesti.';
$messages['foldercreated'] = 'Kansio luotu onnistuneesti.';
$messages['invalidimageformat'] = 'Virheellinen kuvamuoto.';
$messages['mispellingsfound'] = 'Viestissä havaittiin kielioppivirheitä.';
$messages['parentnotwritable'] = 'Kansiota ei voitu siirtää tai luoda valittuun yläkansioon. Ei käyttöoikeutta.';
$messages['messagetoobig'] = 'Viestiosa on liian suuri prosessoitavaksi.';
$messages['attachmentvalidationerror'] = 'Liitetiedosto on epäilyttävä, koska sen tyyppi ei ole sama kuin viestissä määritetty. Jos et luota lähettäjään, tiedostoa ei tulisi avata selaimessa, koska se voi sisältää haitallista sisältöä.<br/><br/><em>Odotettu: $expected; löytynyt: $detected</em>';
$messages['noscriptwarning'] = 'Varoitus: Tämä verkkopohjainen sähköpostipalvelu vaatii Javascriptin toimiakseen. Ota Javascript käyttöön selaimesi asetuksista.';
$messages['messageissent'] = 'Viesti lähetettiin jo, mutta sitä ei vielä tallennettu. Haluatko tallentaa sen nyt?';
$messages['errnotfound'] = 'Tiedostoa ei löytynyt';
$messages['errnotfoundexplain'] = 'Pyydettyä resurssia ei löytynyt!';
$messages['errfailedrequest'] = 'Pyyntö epäonnistui';
$messages['errauthorizationfailed'] = 'Valtuutus epäonnistui';
$messages['errunauthorizedexplain'] = 'Tämän palvelun käyttöön vaadittavan valtuutuksen tarkistaminen epäonnistui!';
$messages['errrequestcheckfailed'] = 'Pyyntötarkistus epäonnistui';
$messages['errcsrfprotectionexplain'] = "Turvallisuutesi vuoksi tämän resurssin käyttö on suojattu CSRF:ää vastaan.\nJos näet tämän viestin, et luultavasti kirjautunut ulos, ennen kuin poistuit verkkosovelluksesta.\n\nVuorovaikutustasi tarvitaan nyt, jotta voit jatkaa.";
$messages['errcontactserveradmin'] = 'Ota yhteys palvelimen ylläpitäjään.';
$messages['clicktoresumesession'] = 'Napsauta tästä palauttaaksesi edellisen istuntosi';
$messages['errcomposesession'] = 'Kirjoitusistunnon virhe';
$messages['errcomposesessionexplain'] = 'Pyydettyä kirjoitusistuntoa ei löytynyt.';
$messages['clicktocompose'] = 'Napsauta tästä kirjoittaaksesi uuden viestin';
$messages['nosupporterror'] = 'Selaimesi ei tue tätä ominaisuutta.';
$messages['siginserted'] = 'Allekirjoitus lisätty onnistuneesti.';
$messages['responseinserted'] = 'Vastaus lisätty onnistuneesti.';
$messages['noresponsesavailable'] = 'Vastauksia ei ole saatavilla';
$messages['listempty'] = 'Lista on tyhjä.';
$messages['listusebutton'] = 'Lisää uusi tietue Luo uusi -painikkeella.';
$messages['keypaircreatesuccess'] = 'Luotiin uusi pari onnistuneesti identiteetille $identity.';
$messages['emptyattachment'] = 'Liitetiedosto on tyhjä.<br>Tarkista asia lähettäjältä.';
$messages['oauthloginfailed'] = 'OAuth-kirjautuminen epäonnistui. Yritä myöhemmin uudelleen.';
localization/pt_PT/timezones.inc000064400000047202151727150600013003 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Africa';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Khartoum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'America';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'North Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarem';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Saint Barthélemy';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Saint Kitts';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarctica';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Baghdad';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damascus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalem';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Kathmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kolkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Riyadh';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Seoul';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapore';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Tehran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulaanbaatar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Yangon';
$labels['tz:asia:yekaterinburg'] = 'Yekaterinburg';
$labels['tz:asia:yerevan'] = 'Yerevan';
$labels['tz:atlantic'] = 'Atlantic';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Canary';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:south_georgia'] = 'South Georgia';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europe';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Athens';
$labels['tz:europe:belgrade'] = 'Belgrade';
$labels['tz:europe:berlin'] = 'Berlin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brussels';
$labels['tz:europe:bucharest'] = 'Bucharest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Chisinau';
$labels['tz:europe:copenhagen'] = 'Copenhagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisboa';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:london'] = 'London';
$labels['tz:europe:luxembourg'] = 'Luxembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moscow';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paris';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Prague';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Rome';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stockholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatican';
$labels['tz:europe:vienna'] = 'Vienna';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Warsaw';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zurich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Christmas';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldives';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific'] = 'Pacific';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Easter';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiji';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/pt_PT/labels.inc000064400000103455151727150600012233 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bem-vindo ao $product';
$labels['username'] = 'Utilizador';
$labels['password'] = 'Senha';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entrar';
$labels['oauthlogin'] = 'Iniciar sessão com $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Sair';
$labels['mail'] = 'Mensagens';
$labels['settings'] = 'Definições';
$labels['addressbook'] = 'Contactos';
$labels['darkmode'] = 'Modo escuro';
$labels['lightmode'] = 'Modo claro';
$labels['inbox'] = 'A receber';
$labels['drafts'] = 'Rascunhos';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Reciclagem';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Mostrar nomes reais para as pastas especiais';
$labels['subject'] = 'Assunto';
$labels['from'] = 'De';
$labels['sender'] = 'Remetente';
$labels['to'] = 'Para';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Responder a';
$labels['followupto'] = 'No seguimento de';
$labels['date'] = 'Data';
$labels['size'] = 'Tamanho';
$labels['priority'] = 'Prioridade';
$labels['organization'] = 'Entidade';
$labels['readstatus'] = 'Estado de leitura';
$labels['listoptions'] = 'Lista de opções...';
$labels['listoptionstitle'] = 'Opções de lista';
$labels['mailboxlist'] = 'Pastas';
$labels['messagesfromto'] = 'Mensagens de $from a $to de $count';
$labels['threadsfromto'] = 'Tópicos de $from a $to de $count';
$labels['messagenrof'] = 'Mensagem $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover para...';
$labels['copyto'] = 'Copiar para...';
$labels['download'] = 'Descarregar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrar na mesma';
$labels['filename'] = 'Nome do ficheiro';
$labels['filesize'] = 'Tamanho do ficheiro';
$labels['addtoaddressbook'] = 'Adicionar à lista de contactos';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Seg';
$labels['tue'] = 'Ter';
$labels['wed'] = 'Qua';
$labels['thu'] = 'Qui';
$labels['fri'] = 'Sex';
$labels['sat'] = 'Sáb';
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Segunda-feira';
$labels['tuesday'] = 'Terça-feira';
$labels['wednesday'] = 'Quarta-feira';
$labels['thursday'] = 'Quinta-feira';
$labels['friday'] = 'Sexta-feira';
$labels['saturday'] = 'Sábado';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Fev';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Abr';
$labels['may'] = 'Maio';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Ago';
$labels['sep'] = 'Set';
$labels['oct'] = 'Out';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
$labels['longjan'] = 'Janeiro';
$labels['longfeb'] = 'Fevereiro';
$labels['longmar'] = 'Março';
$labels['longapr'] = 'Abril';
$labels['longmay'] = 'Maio';
$labels['longjun'] = 'Junho';
$labels['longjul'] = 'Julho';
$labels['longaug'] = 'Agosto';
$labels['longsep'] = 'Setembro';
$labels['longoct'] = 'Outubro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Dezembro';
$labels['today'] = 'Hoje';
$labels['refresh'] = 'Atualizar';
$labels['checkmail'] = 'Verificar por novas mensagens';
$labels['compose'] = 'Nova mensagem';
$labels['writenewmessage'] = 'Criar mensagem';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder';
$labels['replytoallmessage'] = 'Responder a lista ou ao remetente e todos os destinatários';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder à lista';
$labels['forward'] = 'Reencaminhar';
$labels['forwardinline'] = 'Reencaminhar no texto';
$labels['forwardattachment'] = 'Reencaminhar como anexo';
$labels['forwardmessage'] = 'Reencaminhar';
$labels['bouncemsg'] = 'Reenviar (devolver)';
$labels['bounce'] = 'Reenviar';
$labels['deletemessage'] = 'Eliminar';
$labels['movemessagetotrash'] = 'Mover para reciclagem';
$labels['printmessage'] = 'Imprimir';
$labels['previousmessage'] = 'Mensagem anterior';
$labels['firstmessage'] = 'Primeira mensagem';
$labels['nextmessage'] = 'Próxima mensagem';
$labels['lastmessage'] = 'Última mensagem';
$labels['backtolist'] = 'Voltar';
$labels['viewsource'] = 'Mostrar código fonte';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar mensagens';
$labels['markread'] = 'Como lida(s)';
$labels['markunread'] = 'Como não lida(s)';
$labels['markflagged'] = 'Com sinalização';
$labels['markunflagged'] = 'Como sem sinalização';
$labels['markundeleted'] = 'Como não eliminado';
$labels['moreactions'] = 'Mais ações...';
$labels['markallread'] = 'Marcar todas como Lidas';
$labels['folders-cur'] = 'Apenas pasta selecionada';
$labels['folders-sub'] = 'Pasta selecionada e respetivas subpastas';
$labels['folders-all'] = 'Todas as pastas';
$labels['more'] = 'Mais';
$labels['back'] = 'Voltar';
$labels['options'] = 'Opções';
$labels['composeoptions'] = 'Opções de composição';
$labels['optionsandattachments'] = 'Opções e anexos';
$labels['actions'] = 'Ações';
$labels['first'] = 'Primeiro';
$labels['last'] = 'Último';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Seguinte';
$labels['select'] = 'Selecionar';
$labels['selection'] = 'Selecção';
$labels['all'] = 'Todas';
$labels['none'] = 'Nenhum';
$labels['currpage'] = 'Página atual';
$labels['isread'] = 'Ler';
$labels['unread'] = 'Não lidas';
$labels['flagged'] = 'Sinalizadas';
$labels['unflagged'] = 'Não sinalizado';
$labels['unanswered'] = 'Não respondidas';
$labels['withattachment'] = 'Com anexo';
$labels['deleted'] = 'Eliminadas';
$labels['undeleted'] = 'Não eliminada';
$labels['replied'] = 'Respondido';
$labels['forwarded'] = 'Reencaminhado';
$labels['invert'] = 'Inverter seleção';
$labels['filter'] = 'Filtro';
$labels['list'] = 'Em lista';
$labels['threads'] = 'Tópicos';
$labels['expand-all'] = 'Expandir tudo';
$labels['expand-unread'] = 'Expandir não lidas';
$labels['collapse-all'] = 'Recolher tudo';
$labels['threaded'] = 'Por tópicos';
$labels['showunread'] = 'Mostrar mensagens não lidas';
$labels['autoexpand_threads'] = 'Expandir tópicos das mensagens';
$labels['do_expand'] = 'todos os tópicos';
$labels['expand_only_unread'] = 'só com mensagens não lidas';
$labels['fromto'] = 'De/Para';
$labels['flag'] = 'Sinalizar';
$labels['attachment'] = 'Anexo';
$labels['nonesort'] = 'Nenhum';
$labels['sentdate'] = 'Data de envio';
$labels['arrival'] = 'Data de receção';
$labels['asc'] = 'crescente';
$labels['desc'] = 'decrescente';
$labels['listcolumns'] = 'Lista de colunas';
$labels['listsorting'] = 'Ordenar por';
$labels['listorder'] = 'Ordenação';
$labels['listmode'] = 'Modo de visualização';
$labels['lmode'] = 'Modo de lista';
$labels['layout'] = 'Modelo';
$labels['layoutwidescreen'] = 'Panorâmico';
$labels['layoutdesktop'] = 'Área de Trabalho';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Widescreen (vista de 3 colunas)';
$labels['layoutdesktopdesc'] = 'Área de trabalho (lista ampla e pré-visualização da mensagem abaixo)';
$labels['layoutlistdesc'] = 'Lista (sem pré-visualização da mensagem)';
$labels['folderactions'] = 'Ações para pastas...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Esvaziar';
$labels['importmessages'] = 'Importar mensagens';
$labels['mailimportdesc'] = 'Pode carregar emails usando ficheiros no formato <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> ou <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Vários ficheiros podem ser compactados em arquivos zip.';
$labels['quota'] = 'Espaço utilizado';
$labels['unknown'] = 'desconhecido';
$labels['unlimited'] = 'ilimitado';
$labels['quotatype'] = 'Tipo de cota';
$labels['quotatotal'] = 'Limite';
$labels['quotaused'] = 'Usado';
$labels['quotastorage'] = 'Espaço em disco';
$labels['quotamessage'] = 'Número de mensagens';
$labels['shortheaderdate'] = 'Em $date';
$labels['shortheaderto'] = 'Para $to em $date';
$labels['shortheaderfrom'] = 'De $from em $date
';
$labels['quicksearch'] = 'Pesquisa rápida';
$labels['searchplaceholder'] = 'Pesquisar...';
$labels['resetsearch'] = 'Limpar pesquisa';
$labels['searchmod'] = 'Modificadores de pesquisa';
$labels['msgtext'] = 'Mensagem completa';
$labels['body'] = 'Corpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
$labels['searchscope'] = 'Âmbito';
$labels['currentfolder'] = 'Pasta atual';
$labels['subfolders'] = 'Esta pasta e subpastas';
$labels['allfolders'] = 'Todas as pastas';
$labels['searchinterval-1W'] = 'Com mais de uma semana';
$labels['searchinterval-1M'] = 'Com mais de um mês';
$labels['searchinterval-1Y'] = 'Com mais de um ano';
$labels['searchinterval1W'] = 'Com menos de uma semana';
$labels['searchinterval1M'] = 'Com menos de um mês';
$labels['searchinterval1Y'] = 'Com menos de um ano';
$labels['openinextwin'] = 'Abrir numa nova janela';
$labels['emlsave'] = 'Descarregar (formato .eml)';
$labels['changeformattext'] = 'Mostrar em formato de texto simples';
$labels['changeformathtml'] = 'Mostrar em formato HTML';
$labels['editasnew'] = 'Editar como nova';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar';
$labels['savemessage'] = 'Guardar como rascunho';
$labels['addattachment'] = 'Adicionar anexo';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Recibo de leitura';
$labels['dsn'] = 'Recibo de entrega';
$labels['keepformatting'] = 'Manter formatação';
$labels['mailreplyintro'] = 'A $date, $sender escreveu:';
$labels['originalmessage'] = 'Mensagem original';
$labels['selectimage'] = 'Selecionar imagem';
$labels['addimage'] = 'Adicionar imagem';
$labels['selectmedia'] = 'Selecionar filme';
$labels['addmedia'] = 'Adicionar filme';
$labels['encrypt'] = 'Encriptar';
$labels['encryptmessage'] = 'Encriptar mensagem';
$labels['encryptmessagemailvelope'] = 'Encriptar mensagem com Mailvelope';
$labels['importpubkeys'] = 'Importar chaves públicas';
$labels['encryptedsendialog'] = 'A enviar mensagem encriptada';
$labels['encryptandsign'] = 'Encriptar e assinar';
$labels['keyid'] = 'ID da chave';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expirada';
$labels['keyrevoked'] = 'Revogada';
$labels['bccinstead'] = 'Usar Bcc';
$labels['addheader'] = 'Adicionar destinatário (cabeçalho)';
$labels['insert'] = 'Inserir';
$labels['insertcontact'] = 'Inserir contacto(s)';
$labels['recipient'] = 'Destinatário';
$labels['recipientedit'] = 'Editar destinatário';
$labels['editidents'] = 'Editar entidades';
$labels['spellcheck'] = 'Ortografia';
$labels['checkspelling'] = 'Verificar ortografia';
$labels['resumeediting'] = 'Continuar edição';
$labels['revertto'] = 'Reverter para';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = 'Restaurar mensagem?';
$labels['ignore'] = 'Ignorar';
$labels['responses'] = 'Respostas';
$labels['insertresponse'] = 'Insira uma resposta';
$labels['manageresponses'] = 'Gerir respostas';
$labels['newresponse'] = 'Criar nova resposta';
$labels['addresponse'] = 'Adicionar resposta';
$labels['editresponse'] = 'Editar resposta';
$labels['editresponses'] = 'Editar respostas';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Texto da resposta';
$labels['attach'] = 'Anexar';
$labels['attachments'] = 'Anexos';
$labels['upload'] = 'Carregar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fechar';
$labels['messageoptions'] = 'Opções de mensagens...';
$labels['togglecomposeoptions'] = 'Alternar opções de composição';
$labels['attachmentrename'] = 'Renomear anexo';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'Muito baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'Muito alta';
$labels['nosubject'] = '(sem assunto)';
$labels['showimages'] = 'Mostrar imagens';
$labels['allow'] = 'Permitir';
$labels['alwaysshow'] = 'Mostrar sempre as imagens de $sender';
$labels['alwaysallow'] = 'Permitir sempre de $sender';
$labels['isdraft'] = 'Esta é uma mensagem de rascunho.';
$labels['andnmore'] = '$nr mais...';
$labels['details'] = 'Detalhes';
$labels['summary'] = 'Resumo';
$labels['headers'] = 'Cabeçalhos';
$labels['allheaders'] = 'Todos os cabeçalhos';
$labels['togglemoreheaders'] = 'Mostrar cabeçalhos adicionais da mensagem';
$labels['togglefullheaders'] = 'Mostrar cabeçalho original da mensagem';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto simples';
$labels['savesentmessagein'] = 'Guardar mensagem enviada em';
$labels['dontsave'] = 'não guardar';
$labels['maxuploadsize'] = 'Tamanho máximo permitido do ficheiro é $size';
$labels['addcc'] = 'Adicionar Cc';
$labels['addbcc'] = 'Adicionar Bcc';
$labels['addreplyto'] = 'Adicionar Responder a';
$labels['addfollowupto'] = 'Adicionar No seguimento de';
$labels['sendreceipt'] = 'Enviar recibo de leitura?';
$labels['mdnrequest'] = 'O remetente desta mensagem pediu para ser notificado quando esta mensagem fosse lida. Deseja enviar uma notificação?';
$labels['receiptread'] = 'Recibo de leitura';
$labels['yourmessage'] = 'Isto é um recibo de leitura da sua mensagem';
$labels['receiptnote'] = 'Nota: este recibo apenas indica que a mensagem foi aberta pelo destinatário. Não garante que a mensagem foi lida ou compreendida.';
$labels['sendalwaysto'] = 'Enviar sempre para $email';
$labels['zoomin'] = 'Ampliar';
$labels['zoomout'] = 'Reduzir';
$labels['rotate'] = 'Rodar';
$labels['increaseimage'] = 'Aumentar tamanho da imagem';
$labels['decreaseimage'] = 'Reduzir tamanho da imagem';
$labels['rotateimage'] = 'Rodar imagem';
$labels['showtools'] = 'Mostrar ferramentas de imagem';
$labels['hidetools'] = 'Ocultar ferramentas de imagem';
$labels['name'] = 'Nome exibido';
$labels['firstname'] = 'Primeiro nome';
$labels['surname'] = 'Apelido';
$labels['middlename'] = 'Outros nomes';
$labels['nameprefix'] = 'Título';
$labels['namesuffix'] = 'Sufixo';
$labels['nickname'] = 'Pseudónimo';
$labels['jobtitle'] = 'Cargo';
$labels['department'] = 'Departamento';
$labels['gender'] = 'Género';
$labels['maidenname'] = 'Nome solteiro';
$labels['email'] = 'Email';
$labels['phone'] = 'Telefone';
$labels['address'] = 'Endereço';
$labels['street'] = 'Rua';
$labels['locality'] = 'Cidade';
$labels['zipcode'] = 'Código postal';
$labels['region'] = 'Concelho';
$labels['country'] = 'País';
$labels['birthday'] = 'Data de nascimento';
$labels['anniversary'] = 'Aniversário';
$labels['website'] = 'Página web';
$labels['instantmessenger'] = 'Endereço IM';
$labels['notes'] = 'Notas';
$labels['male'] = 'masculino';
$labels['female'] = 'feminino';
$labels['manager'] = 'Gestor';
$labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Cônjuge';
$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Pesquisar';
$labels['searchresult'] = 'Resultado da pesquisa';
$labels['advsearch'] = 'Pesquisa avançada';
$labels['advanced'] = 'Pesquisa avançada';
$labels['other'] = 'Outro';
$labels['printcontact'] = 'Imprimir contacto';
$labels['qrcode'] = 'Código QR';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabalho';
$labels['typeother'] = 'Outro';
$labels['typemobile'] = 'Telemóvel';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax da residência';
$labels['typeworkfax'] = 'Fax da empresa';
$labels['typecar'] = 'Carro';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Página Inicial';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Adicionar campo...';
$labels['addcontact'] = 'Adicionar contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Dados do contacto';
$labels['contactnameandorg'] = 'Nome da Organização';
$labels['personalinfo'] = 'Informação pessoal';
$labels['personal'] = 'Pessoal';
$labels['contactphoto'] = 'Foto do contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
$labels['delete'] = 'Eliminar';
$labels['discard'] = 'Rejeitar';
$labels['continue'] = 'Continuar';
$labels['ok'] = 'OK';
$labels['rename'] = 'Renomear';
$labels['addphoto'] = 'Adicionar';
$labels['replacephoto'] = 'Substituir';
$labels['uploadphoto'] = 'Carregar foto';
$labels['choosefile'] = 'Escolher ficheiro...';
$labels['choosefiles'] = 'Escolher ficheiros...';
$labels['browse'] = 'Procurar';
$labels['newcontact'] = 'Criar novo contacto';
$labels['deletecontact'] = 'Eliminar contacto(s) selecionado(s)';
$labels['composeto'] = 'Nova mensagem para';
$labels['contactsfromto'] = 'Contactos $from - $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todos';
$labels['exportsel'] = 'Exportar selecionados';
$labels['exportvcards'] = 'Exportar contactos no formato vCard';
$labels['newgroup'] = 'Criar novo grupo';
$labels['addgroup'] = 'Adicionar grupo';
$labels['grouprename'] = 'Renomear grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupassign'] = 'Atribuir a grupo...';
$labels['groupremove'] = 'Remover do grupo';
$labels['groupremoveselected'] = 'Remover o(s) contacto(s) selecionado(s) do grupo';
$labels['uponelevel'] = 'Um nível acima';
$labels['previouspage'] = 'Página anterior';
$labels['firstpage'] = 'Primeira página';
$labels['nextpage'] = 'Página seguinte';
$labels['lastpage'] = 'Última página';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Lista de membros do grupo';
$labels['personaladrbook'] = 'Endereços pessoais';
$labels['searchsave'] = 'Guardar pesquisa';
$labels['searchdelete'] = 'Eliminar pesquisa';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar do ficheiro';
$labels['importtarget'] = 'Adicionar contactos a';
$labels['importreplace'] = 'Substituir todo o livro de endereços.';
$labels['importgroups'] = 'Importar atribuições de grupo';
$labels['importgroupsall'] = 'Todos (criar grupos se necessário)';
$labels['importgroupsexisting'] = 'Apenas para grupos existentes';
$labels['importdesc'] = 'Pode carregar contactos de um livro de endereços existente.<br/>Actualmente, suportamos a importação de endereços no formato de dados <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (separados por vírgulas).';
$labels['importmapdesc'] = 'Confirme se a informação de mapeamento dos campos abaixo estão corretas antes de prosseguir com a importação de dados CSV (separado por vírgula).';
$labels['fieldnotmapped'] = 'Campo não mapeado (não importar)';
$labels['skipheader'] = 'Não importar a primeira linha (cabeçalhos)';
$labels['done'] = 'Concluído';
$labels['settingsfor'] = 'Configurações para';
$labels['about'] = 'Acerca';
$labels['preferences'] = 'Preferências';
$labels['userpreferences'] = 'Preferências do utilizador';
$labels['editpreferences'] = 'Editar preferências do utilizador';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Gerir identidades';
$labels['newidentity'] = 'Criar nova identidade';
$labels['addidentity'] = 'Adicionar identidade';
$labels['editidentity'] = 'Editar identidade';
$labels['identityencryption'] = 'Encriptação';
$labels['preferhtml'] = 'Mostrar mensagens em HTML';
$labels['defaultcharset'] = 'Conjunto de caracteres predefinido';
$labels['htmlmessage'] = 'Mensagem em HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Assinatura digital';
$labels['dateformat'] = 'Formato da data';
$labels['timeformat'] = 'Formato da hora';
$labels['prettydate'] = 'Formatar datas';
$labels['setdefault'] = 'Marcar como predefinido';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Fuso horário';
$labels['pagesize'] = 'Linhas por página';
$labels['signature'] = 'Assinatura';
$labels['dstactive'] = 'Horário de verão';
$labels['showinextwin'] = 'Abrir mensagem numa nova janela';
$labels['composeextwin'] = 'Compor numa nova janela';
$labels['htmleditor'] = 'Escrever mensagens em HTML';
$labels['htmlonreply'] = 'apenas em resposta a mensagens HTML';
$labels['htmlonreplyandforward'] = 'no reencaminhamento ou resposta de mensagem em HTML';
$labels['htmlsignature'] = 'Assinatura em HTML';
$labels['showemail'] = 'Mostrar endereço de email com o nome a exibir';
$labels['previewpane'] = 'Mostrar pré-visualização';
$labels['skin'] = 'Visual da interface';
$labels['logoutclear'] = 'Esvaziar reciclagem ao sair';
$labels['logoutcompact'] = 'Compactar Caixa de entrada ao sair';
$labels['uisettings'] = 'Interface do utilizador';
$labels['serversettings'] = 'Definições do servidor';
$labels['mailboxview'] = 'Visualização da Caixa de entrada';
$labels['mdnrequests'] = 'Enviar notificações';
$labels['askuser'] = 'perguntar';
$labels['autosend'] = 'enviar recibo de leitura';
$labels['autosendknown'] = 'enviar recibo de leitura apenas para os meus contactos';
$labels['autosendknownignore'] = 'enviar recibo para os meus contactos, caso contrário, ignorar';
$labels['autosendtrusted'] = 'enviar recibo para remetentes confiáveis, caso contrário, pergunte-me';
$labels['autosendtrustedignore'] = 'enviar recibo para remetentes confiáveis, caso contrário, ignorar';
$labels['ignorerequest'] = 'ignorar pedido';
$labels['readwhendeleted'] = 'Marcar a mensagem como lida, ao eliminar';
$labels['flagfordeletion'] = 'Marcar a mensagem para eliminação em vez de a eliminar';
$labels['skipdeleted'] = 'Não mostrar mensagens eliminadas';
$labels['deletealways'] = 'Se ao mover mensagens para a reciclagem falhar, eliminá-las';
$labels['deletejunk'] = 'Eliminar diretamente as mensagens no Spam';
$labels['showremoteimages'] = 'Mostrar imagens externas';
$labels['allowremoteresources'] = 'Permitir recursos remotos (imagens, estilos)';
$labels['fromknownsenders'] = 'de remetentes conhecidos';
$labels['fromtrustedsenders'] = 'de remetentes confiáveis';
$labels['frommycontacts'] = 'dos meus contactos';
$labels['always'] = 'sempre';
$labels['alwaysbutplain'] = 'sempre, exceto quando responder a texto simples';
$labels['showinlineimages'] = 'Mostrar imagens anexadas abaixo da mensagem';
$labels['autosavedraft'] = 'Guardar rascunho automaticamente';
$labels['everynminutes'] = 'a cada $n minuto(s)';
$labels['refreshinterval'] = 'Atualizar (verificar por novas mensagens, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'imediatamente';
$labels['messagesdisplaying'] = 'Visualização de mensagens';
$labels['messagescomposition'] = 'Composição de mensagens';
$labels['mimeparamfolding'] = 'Nome dos anexos';
$labels['2231folding'] = 'Total RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Total RFC 2047 (outro)';
$labels['force7bit'] = 'Usar codificação MIME para caracteres de 8 bits';
$labels['savelocalstorage'] = "Guardado no armazenamento local do navegador (temporariamente)";
$labels['advancedoptions'] = 'Opções avançadas';
$labels['toggleadvancedoptions'] = 'Alternar opções de avançadas';
$labels['focusonnewmessage'] = 'Ativar a janela do navegador na nova mensagem';
$labels['checkallfolders'] = 'Verificar por novas mensagens em todas as pastas';
$labels['displaynext'] = 'Mostrar próxima entrada da lista após eliminar/mover';
$labels['defaultfont'] = 'Tipo de letra padrão para mensagens HTML';
$labels['mainoptions'] = 'Opções';
$labels['browseroptions'] = 'Opções do browser';
$labels['section'] = 'Secção';
$labels['maintenance'] = 'Manutenção';
$labels['newmessage'] = 'Nova mensagem';
$labels['signatureoptions'] = 'Opções de assinatura';
$labels['whenreplying'] = 'Ao responder';
$labels['replyempty'] = 'Não incluir a mensagem original';
$labels['replytopposting'] = 'iniciar mensagem acima da original';
$labels['replytoppostingnoindent'] = 'Iniciar nova mensagem acima das citações (sem recuo)';
$labels['replybottomposting'] = 'iniciar mensagem abaixo da original';
$labels['replyremovesignature'] = 'Ao responder, remover a assinatura original da mensagem';
$labels['autoaddsignature'] = 'Adicionar assinatura automaticamente';
$labels['newmessageonly'] = 'apenas em novas mensagens';
$labels['replyandforwardonly'] = 'apenas em respostas e reenvios';
$labels['insertsignature'] = 'Inserir assinatura';
$labels['sigbelow'] = 'Colocar assinatura abaixo da mensagem citada';
$labels['sigseparator'] = 'Forçar separador padrão nas assinaturas';
$labels['automarkread'] = 'Marcar mensagens como lidas';
$labels['afternseconds'] = 'após $n segundos';
$labels['reqmdn'] = 'Pedir sempre um recibo de leitura';
$labels['reqdsn'] = 'Pedir sempre um recibo de entrega';
$labels['replysamefolder'] = 'Guardar respostas na mesma pasta da mensagem original';
$labels['defaultabook'] = 'Livro de endereços padrão';
$labels['autocompletesingle'] = 'Ignorar endereços de email alternativos no preenchimento automático';
$labels['listnamedisplay'] = 'Listar contactos como';
$labels['contactformmode'] = 'Modo de formulário do contacto';
$labels['privatemode'] = 'Privado (Casa)';
$labels['businessmode'] = 'Empresarial (Trabalho)';
$labels['collectedaddresses'] = 'Endereços recolhidos';
$labels['collectedrecipients'] = 'Destinatários recolhidos';
$labels['collectedrecipientsopt'] = 'Armazenar destinatários de email em';
$labels['collectedsendersopt'] = 'Armazenar remetentes de confiança em';
$labels['trustedsenders'] = 'Remetentes de confiança';
$labels['spellcheckbeforesend'] = 'Verificar ortografia antes de enviar a mensagem';
$labels['spellcheckoptions'] = 'Opções de verificação ortográfica';
$labels['spellcheckignoresyms'] = 'Ignorar palavras com símbolos';
$labels['spellcheckignorenums'] = 'Ignorar palavras com números';
$labels['spellcheckignorecaps'] = 'Ignorar palavras em maiúsculas';
$labels['addtodict'] = 'Adicionar ao dicionário';
$labels['mailtoprotohandler'] = 'Registar manipulador de protocolo para mailto: links';
$labels['standardwindows'] = 'Lidar com popups como janelas padrão';
$labels['forwardmode'] = 'Reencaminhamento de mensagens';
$labels['inline'] = 'em linha';
$labels['asattachment'] = 'como anexo';
$labels['replyallmode'] = 'Ação predefinida do botão [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder só à lista de discussão (se identificada)';
$labels['allmessages'] = 'todas as mensagens';
$labels['olderxdays'] = 'com mais de $x dias';
$labels['folder'] = 'Pasta';
$labels['folders'] = 'Pastas';
$labels['foldername'] = 'Nome da pasta';
$labels['subscribed'] = 'Subscrita';
$labels['messagecount'] = 'Mensagens';
$labels['create'] = 'Criar';
$labels['createfolder'] = 'Criar pasta';
$labels['managefolders'] = 'Gerir pastas';
$labels['specialfolders'] = 'Pastas especiais (predefinidas)';
$labels['properties'] = 'Propriedades';
$labels['folderproperties'] = 'Propriedades da pasta';
$labels['parentfolder'] = 'Pasta de origem';
$labels['location'] = 'Localização';
$labels['info'] = 'Informação';
$labels['getfoldersize'] = 'Clique para obter o tamanho da pasta';
$labels['changesubscription'] = 'Clique para alterar a subscrição';
$labels['foldertype'] = 'Tipo de pasta';
$labels['personalfolder'] = 'Pasta privada';
$labels['otherfolder'] = 'Outro tipo de pasta';
$labels['sharedfolder'] = 'Pasta pública';
$labels['findfolders'] = 'Localizar pastas';
$labels['findcontacts'] = 'Encontrar contactos';
$labels['findmail'] = 'Encontrar mensagens de correio';
$labels['namespace.personal'] = 'Pessoal';
$labels['namespace.other'] = 'Outros utilizadores';
$labels['namespace.shared'] = 'Partilhado';
$labels['dualuselabel'] = 'Apenas pode conter';
$labels['dualusemail'] = 'mensagens';
$labels['dualusefolder'] = 'pastas';
$labels['generate'] = 'Gerar';
$labels['encryptioncreatekey'] = 'Criar um novo par de chaves';
$labels['openmailvelopesettings'] = 'Abrir configurações do Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Tem $nr correspondências de chaves privadas armazenadas no porta-chaves do seu Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Esta identidade do remetente ainda não possui uma chave PGP privada armazenada na sua extensão Mailvelope. Gostaria de criar uma para ativar a mensagem encriptada?';
$labels['encryption'] = 'Encriptação';
$labels['mailvelopeoptions'] = 'Opções do Mailvelope';
$labels['mailvelopemainkeyring'] = 'Usar porta-chaves principal do Mailvelope';
$labels['mailvelopenotfound'] = 'A extensão do Mailvelope não está activada/instalada no seu navegador.';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ordenação crescente';
$labels['sortdesc'] = 'Ordenação decrescente';
$labels['undo'] = 'Anular';
$labels['installedplugins'] = 'Plugins instalados';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versão';
$labels['source'] = 'Fonte';
$labels['destination'] = 'Destino';
$labels['license'] = 'Licença';
$labels['support'] = 'Obter suporte';
$labels['savedsearches'] = 'Pesquisas guardadas';
$labels['dateformatY'] = 'AAAA';
$labels['dateformaty'] = 'AA';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglês';
$labels['westerneuropean'] = 'Europa Ocidental';
$labels['easterneuropean'] = 'Europa Leste';
$labels['southeasterneuropean'] = 'Sudeste Europeu';
$labels['baltic'] = 'Báltico';
$labels['cyrillic'] = 'Cirílico';
$labels['arabic'] = 'Árabe';
$labels['greek'] = 'Grego';
$labels['hebrew'] = 'Hebraico';
$labels['turkish'] = 'Turno';
$labels['nordic'] = 'Nórdico';
$labels['thai'] = 'Tailandês';
$labels['celtic'] = 'Céltico';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
$labels['arialabeltopnav'] = 'Controlo de janela';
$labels['arialabeltasknav'] = 'Tarefas da aplicação';
$labels['arialabeltoolbar'] = 'Barra de ferramentas da aplicação';
$labels['arialabellistnav'] = 'Navegação na lista';
$labels['arialabelactivetask'] = 'Tarefa ativa';
$labels['arialabelmessagessearchfilter'] = 'Filtro da listagem de email';
$labels['arialabelmailsearchform'] = 'Formulário de pesquisa email';
$labels['arialabelcontactsearchform'] = 'Formulário de pesquisa de contactos';
$labels['arialabelmailquicksearchbox'] = 'Entrada da pesquisa de email';
$labels['arialabelquicksearchbox'] = 'Entrada da pesquisa';
$labels['arialabelfoldersearchfilter'] = 'Lista de filtro de pasta';
$labels['arialabelfoldersearchform'] = 'Formulário de pesquisa de pasta';
$labels['arialabelfolderlist'] = 'Seleção de pasta de email';
$labels['arialabelmessagelist'] = 'Listagem de mensagens de email';
$labels['arialabelmailpreviewframe'] = 'Pré-visualizar mensagem';
$labels['arialabelmailboxmenu'] = 'Menu de ações de pasta';
$labels['arialabellistselectmenu'] = 'Menu de seleção de lista';
$labels['arialabelthreadselectmenu'] = 'Menu de listagem de tópicos';
$labels['arialabelmessagelistoptions'] = 'Visualização da lista de mensagens e opções de ordenação';
$labels['arialabelmailimportdialog'] = 'Janela de importação de mensagens';
$labels['arialabelmessagenav'] = 'Navegação nas mensagens';
$labels['arialabelmessagebody'] = 'Corpo da mensagem';
$labels['arialabelmessageactions'] = 'Ações de mensagem';
$labels['arialabelcontactquicksearch'] = 'Formulário de pesquisa de contactos';
$labels['arialabelcontactsearchbox'] = 'Entrada da pesquisa de contacto';
$labels['arialabelmessageheaders'] = 'Cabeçalhos da mensagem';
$labels['arialabelforwardingoptions'] = 'Opções de reencaminhamento';
$labels['arialabelreplyalloptions'] = 'Opções de responder a todos';
$labels['arialabelmoremessageactions'] = 'Mais ações de mensagens';
$labels['arialabelmorecontactactions'] = 'Mais ações do contacto';
$labels['arialabelmarkmessagesas'] = 'Marcar mensagens selecionadas como...';
$labels['arialabelcomposeoptions'] = 'Opções de composição';
$labels['arialabelresponsesmenu'] = 'Menu de respostas tipo';
$labels['arialabelattachmentuploadform'] = 'Formulário de envio de anexos';
$labels['arialabelattachmentmenu'] = 'Opções de anexos';
$labels['arialabelmailtomenu'] = 'Opções de endereço de email';
$labels['arialabelattachmentpreview'] = 'Pré-visualização de anexos';
$labels['ariasummarycomposecontacts'] = 'Lista de contactos e grupos para selecionar como destinatários';
$labels['arialabelcontactexportoptions'] = 'Opções de exportação de contacto';
$labels['arialabelabookgroupoptions'] = 'Opções do livro de endereços/grupos';
$labels['arialabelpreferencesform'] = 'Formulário de preferências';
$labels['arialabelidentityeditfrom'] = 'Formulário de edição de identidade';
$labels['arialabelresponseeditfrom'] = 'Formulário de edição de resposta';
$labels['arialabelsearchterms'] = 'Termos de pesquisa';
$labels['arialabeldropactionmenu'] = 'Menu de ação Arrastar e Largar';
$labels['arialabelheadersmenu'] = 'Destinatário (cabeçalho) a adicionar menu';
$labels['arialabelimagetools'] = 'Ferramentas de imagem';
$labels['helplistnavigation'] = 'Lista de teclas de navegação';
$labels['helplistkeyboardnavigation'] = "Setas cima/baixo: Move linha de realce/seleção.
Espaço: Seleciona linha realçada.
Shift + cima/baixo: Seleciona linha adicional acima/abaixo.
Ctrl + Espaço: Adiciona linha realçada à seleção/remove da seleção.";
$labels['helplistkeyboardnavmessages'] = "Setas direita/esquerda: Expande/recolhe tópicos de mensagens (só no modo de tópicos).
Enter: Abre a mensagem selecionada/realçada.
Delete: Move as mensagens selecionadas para a Reciclagem.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Abre o contacto selecionado/realçado. ";
localization/pt_PT/messages.inc000064400000044566151727150600012607 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ocorreu um erro!';
$messages['loginfailed']  = 'Falha na autenticação.';
$messages['cookiesdisabled'] = 'O seu navegador não está a aceitar cookies.';
$messages['sessionerror'] = 'A sua sessão é inválida ou expirou.';
$messages['cookiesmismatch'] = 'Foram detetadas incongruências nos cookies. Por favor limpe os cookies no seu navegador.';
$messages['storageerror'] = 'A ligação ao servidor IMAP falhou.';
$messages['servererror'] = 'Erro do servidor!';
$messages['servererrormsg'] = 'Erro do servidor: $msg';
$messages['accountlocked'] = 'Foram feitas demasiadas tentativas de autenticação falhadas. Tente novamente mais tarde.';
$messages['connerror'] = 'Erro de ligação (não foi possível alcançar o servidor)!';
$messages['dberror'] = 'Erro na base de dados!';
$messages['dbconnerror'] = 'Não foi possível conectar à base de dados!';
$messages['windowopenerror'] = 'A janela pop-up foi bloqueada!';
$messages['requesttimedout'] = 'Foi excedido o tempo limite de resposta';
$messages['errorreadonly'] = 'Não foi possível efetuar a operação. A pasta é só de leitura.';
$messages['errornoperm'] = 'Não tem permissões para efetuar esta operação.';
$messages['erroroverquota'] = 'Não foi possível executar a operação. Não há espaço livre em disco.';
$messages['erroroverquotadelete'] = 'Não há espaço livre em disco. Use SHIFT + DEL para eliminar algumas mensagens.';
$messages['invalidrequest'] = 'Pedido inválido! Não foi guardada nenhuma informação.';
$messages['invalidhost'] = 'Nome do servidor inválido.';
$messages['nomessagesfound'] = 'Não existem mensagens nesta pasta.';
$messages['loggedout'] = 'A sua sessão foi encerrada com sucesso. Até breve!';
$messages['mailboxempty'] = 'A caixa de entrada está vazia';
$messages['nomessages'] = 'Não existem mensagens';
$messages['refreshing'] = 'A atualizar...';
$messages['loading'] = 'A carregar...';
$messages['uploading'] = 'A enviar ficheiro...';
$messages['attaching'] = 'A anexar ficheiro...';
$messages['uploadingmany'] = 'A enviar ficheiros...';
$messages['loadingdata'] = 'A carregar dados...';
$messages['checkingmail'] = 'A verificar se existem novas mensagens...';
$messages['sendingmessage'] = 'A enviar mensagem...';
$messages['messagesent'] = 'Mensagem enviada com sucesso.';
$messages['savingmessage'] = 'A guardar mensagem...';
$messages['messagesaved'] = 'Mensagem guardada nos Rascunhos.';
$messages['successfullysaved'] = 'Guardado com sucesso.';
$messages['savingresponse'] = 'A guardar texto de resposta...';
$messages['deleteresponseconfirm'] = 'Deseja realmente apagar este texto de resposta?';
$messages['nocontactselected'] = 'Ainda não selecionou um contacto.';
$messages['addedsuccessfully'] = 'Contacto adicionado com sucesso no livro de endereços.';
$messages['contactexists'] = 'Já existe um contacto com este endereço de email.';
$messages['contactnameexists'] = 'Já existe um contacto com este nome.';
$messages['blockedimages'] = 'Para proteger a sua privacidade, as imagens desta mensagem foram bloqueadas.';
$messages['blockedresources'] = 'Para proteger a sua privacidade os recursos remotos foram bloqueados.';
$messages['suspiciousemail'] = 'Esta mensagem contém endereços de email suspeitos que podem ser fraudulentos.';
$messages['bccemail'] = 'A(s) mensagem(ns) reencaminhada(s) contêm destinatários confidenciais (Bcc).';
$messages['bouncehint'] = 'A mensagem será enviada sem nenhuma alteração, ou seja, usando o corpo, cabeçalhos e destinatários original.';
$messages['encryptedmessage'] = 'Esta mensagem está encriptada e não pode ser apresentada. Desculpe!';
$messages['externalmessagedecryption'] = 'Isto é uma mensagem encriptada e pode ser desencriptada com uma extensão do seu navegador.';
$messages['nopubkeyfor'] = 'Não foi encontrada nenhuma chave pública válida para $email';
$messages['nopubkeyforsender'] = 'Não foi encontrada nenhuma chave pública válida para a sua identidade de remetente. Deseja encriptar a mensagem apenas para os destinatários?';
$messages['encryptnoattachments'] = 'Os anexos já enviados não podem ser encriptados. Por favor, adicione-os novamente no editor de criptografia.';
$messages['searchpubkeyservers'] = 'Deseja procurar servidores de chaves públicas para as chaves em falta?';
$messages['encryptpubkeysfound'] = 'Foram encontradas as seguintes chaves públicas:';
$messages['keyservererror'] = 'Falha ao obter a chave do servidor de chaves.';
$messages['keyimportsuccess'] = 'Chave pública $key importada com sucesso para o seu chaveiro.';
$messages['nocontactsfound'] = 'Nenhum contacto encontrado.';
$messages['contactnotfound'] = 'O contacto especificado não foi encontrado.';
$messages['contactsearchonly'] = 'Tem de usar o formulário de pesquisa para ver contactos do livro de endereços selecionado.';
$messages['sendingfailed'] = 'Falha no envio da mensagem.';
$messages['senttooquickly'] = 'Por favor, aguarde $sec segundos antes de enviar esta mensagem.';
$messages['errorsavingsent'] = 'Ocorreu um erro ao guardar a mensagem enviada.';
$messages['errorsaving'] = 'Ocorreu um erro ao guardar.';
$messages['errormoving'] = 'Não foi possível mover as mensagens.';
$messages['errorcopying'] = 'Não foi possível copiar as mensagens.';
$messages['errordeleting'] = 'Não foi possível eliminar as mensagens.';
$messages['errormarking'] = 'Não foi possível marcar as mensagens.';
$messages['alerttitle'] = 'Atenção';
$messages['confirmationtitle'] = 'Tem a certeza...';
$messages['deletecontactconfirm']  = 'Tem a certeza que pretende eliminar os contactos selecionados?';
$messages['deletegroupconfirm']  = 'Tem a certeza que pretende eliminar o grupo selecionado?';
$messages['deletemessagesconfirm'] = 'Tem a certeza que pretende eliminar as mensagens selecionadas?';
$messages['deletefolderconfirm']  = 'Quer mesmo eliminar esta pasta?';
$messages['movefolderconfirm']  = 'Quer mesmo mover esta pasta?';
$messages['purgefolderconfirm']  = 'Quer mesmo eliminar todas mensagens desta pasta?';
$messages['contactdeleting'] = 'A eliminar contactos...';
$messages['groupdeleting'] = 'A eliminar grupo...';
$messages['folderdeleting'] = 'A eliminar pasta...';
$messages['foldermoving'] = 'A mover pasta...';
$messages['foldersubscribing'] = 'A subscrever pasta...';
$messages['folderunsubscribing'] = 'A cancelar subscrição da pasta...';
$messages['formincomplete'] = 'Os campos não foram completamente preenchidos.';
$messages['noemailwarning'] = 'Por favor, introduza um endereço de email válido.';
$messages['nonamewarning']  = 'Por favor, escreva um nome.';
$messages['nopagesizewarning'] = 'Por favor, introduza o tamanho da página.';
$messages['nosenderwarning'] = 'Por favor, introduza o endereço de email do remetente.';
$messages['recipientsadded'] = 'Destinatário(s) adicionado(s) com sucesso.';
$messages['norecipientwarning'] = 'Por favor, insira pelo menos um destinatário.';
$messages['disclosedrecipwarning'] = 'Todos os destinatários verão os endereços de email uns dos outros. Para evitar esta situação e proteger a sua privacidade, pode usar o campo Bcc.';
$messages['disclosedreciptitle'] = 'Demasiados destinatários públicos';
$messages['nosubjectwarning']  = 'O campo "Assunto" não foi preenchido. Deseja incluí-lo agora?';
$messages['nosubjecttitle']  = 'Sem assunto';
$messages['nobodywarning'] = 'Enviar a mensagem sem texto?';
$messages['notsentwarning'] = 'A mensagem não foi enviada e tem alterações por guardar. Deseja descartar essas alterações?';
$messages['restoresavedcomposedata'] = 'Foi encontrada uma mensagem anteriormente composta mas não enviada.\n\nAssunto: $subject\nGuardada: $date\n\nDeseja restaurar esta mensagem?';
$messages['nosearchname'] = 'Por favor insira o nome do contacto ou endereço de email.';
$messages['notuploadedwarning'] = 'Nem todos os anexos foram ainda enviados. Por favor aguarde ou cancele o envio.';
$messages['searchsuccessful'] = '$nr mensagens encontradas.';
$messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
$messages['searchnomatch'] = 'A pesquisa não obteve resultados.';
$messages['searching'] = 'A pesquisar...';
$messages['checking'] = 'A verificar...';
$messages['stillsearching'] = 'Ainda a procurar...';
$messages['nospellerrors'] = 'Não foi encontrado nenhum erro ortográfico.';
$messages['folderdeleted'] = 'Pasta eliminada com sucesso.';
$messages['foldersubscribed'] = 'Subscrição da pasta concluída com sucesso';
$messages['folderunsubscribed'] = 'Subscrição da pasta cancelada com sucesso.';
$messages['folderpurged'] = 'Pasta esvaziada com sucesso.';
$messages['folderexpunged'] = 'Pasta compactada com sucesso.';
$messages['deletedsuccessfully'] = 'Eliminado com sucesso.';
$messages['converting'] = 'A remover a formatação...';
$messages['messageopenerror'] = 'Não foi possível carregar a mensagem.';
$messages['filelinkerror'] = 'Falha ao anexar o ficheiro.';
$messages['fileuploaderror'] = 'Falha ao carregar o ficheiro.';
$messages['csvfilemismatch'] = 'A importação de vários ficheiros CSV com campos diferentes não é suportada.';
$messages['filesizeerror'] = 'O ficheiro excede o tamanho máximo permitido de $size.';
$messages['filecounterror'] = 'Pode carregar, no máximo, $count ficheiro(s) de cada vez.';
$messages['msgsizeerror'] = 'Falha ao anexar um ficheiro. O tamanho máximo da mensagem ($size) foi excedido.';
$messages['msgsizeerrorfwd'] = 'O tamanho máximo para uma mensagem ($size) foi excedido. $num mensagem(ns) não foi(ram) anexada(s).';
$messages['copysuccess'] = '$nr contacto(s) copiado(s) com sucesso.';
$messages['movesuccess'] = '$nr contacto(s) movido(s) com sucesso.';
$messages['copyerror'] = 'Não foi possível copiar o(s) contacto(s).';
$messages['moveerror'] = 'Não foi possível mover o(s) contacto(s).';
$messages['sourceisreadonly'] = 'Esta origem de endereços é só de leitura.';
$messages['errorsavingcontact'] = 'Não foi possível guardar o endereço deste contacto.';
$messages['movingmessage'] = 'A mover mensagem(ns)...';
$messages['copyingmessage'] = 'A copiar mensagem(ns)...';
$messages['copyingcontact'] = 'A copiar contacto(s)...';
$messages['movingcontact'] = 'A mover contacto(s)...';
$messages['deletingmessage'] = 'A eliminar mensagem(ns)...';
$messages['markingmessage'] = 'A marcar mensagem(ns)...';
$messages['addingmember'] = 'A adicionar contacto(s) ao grupo...';
$messages['removingmember'] = 'A remover contacto(s) do grupo...';
$messages['receiptsent'] = 'Recibo de leitura enviado com sucesso.';
$messages['errorsendingreceipt'] = 'Não foi possível enviar o recibo.';
$messages['deleteidentityconfirm'] = 'Pretende realmente eliminar esta identidade?';
$messages['nodeletelastidentity'] = 'Esta é a sua última identidade, não é possível eliminá-la.';
$messages['forbiddencharacter'] = 'O nome da pasta contém um caractere inválido.';
$messages['selectimportfile'] = 'Por favor, selecione um ficheiro para enviar.';
$messages['addresswriterror'] = 'Não é possível escrever no livro de endereços selecionado.';
$messages['contactaddedtogroup'] = 'Contacto adicionado com sucesso a este grupo.';
$messages['contactremovedfromgroup'] = 'Contacto removido com sucesso deste grupo.';
$messages['nogroupassignmentschanged'] = 'Não foi alterada nenhuma atribuição de grupo.';
$messages['importwait'] = 'A importar, por favor aguarde...';
$messages['importformaterror'] = 'A importação falhou! O ficheiro enviado não é um ficheiro de dados válido.';
$messages['importconfirm'] = '<b>Foram importados com sucesso $inserted contactos</b>';
$messages['importconfirmskipped'] = '<b>Ignoradas $skipped entradas já existentes</b>';
$messages['importmessagesuccess'] = 'Foram importadas com sucesso $nr mensagens';
$messages['importmessageerror'] = 'A importação falhou! O ficheiro carregado não é um arquivo de caixa de correio ou ficheiro de mensagem válido.';
$messages['opnotpermitted'] = 'Operação não permitida!';
$messages['nofromaddress'] = 'Falta o endereço de email na identidade selecionada.';
$messages['editorwarning'] = 'Alterar o tipo de editor pode causar a perda da formatação do texto. Deseja continuar?';
$messages['httpreceivedencrypterror'] = 'Ocorreu um erro fatal de configuração. Contacte o seu Administrador imediatamente. <b>A sua mensagem não pôde ser enviada.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): A ligação ao servidor falhou.';
$messages['smtpautherror'] = 'Erro SMTP ($code): A autenticação falhou.';
$messages['smtpfromerror'] = 'Erro SMTP ($code): Falha ao definir o remetente "$from" ($msg).';
$messages['smtptoerror'] = 'Erro SMTP ($code): Falha ao adicionar o destinatário: "$to" ($msg).';
$messages['smtprecipientserror'] = 'Erro SMTP: Impossível analisar a lista de destinatários.';
$messages['smtputf8error'] = 'Erro de SMTP: O servidor não suporta Unicode nos endereços de email.';
$messages['smtpsizeerror'] = 'Erro SMTP: O tamanho da mensagem excede o limite do servidor ($limit)';
$messages['smtperror'] = 'Erro SMTP: $msg';
$messages['emailformaterror'] = 'Endereço de email incorreto: $email';
$messages['toomanyrecipients'] = 'Demasiados destinatários. Reduza o número de destinatários para o máximo de $max.';
$messages['maxgroupmembersreached'] = 'O número de membros do grupo ultrapassa o máximo permitido de $max.';
$messages['internalerror'] = 'Ocorreu um erro interno. Por favor, tente novamente.';
$messages['contactdelerror'] = 'Não foi possível eliminar o(s) contacto(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminado(s) com sucesso.';
$messages['contactrestoreerror'] = 'Não foi possível restaurar o(s) contacto(s) eliminados.';
$messages['contactrestored'] = 'Contacto(s) restaurado(s) com sucesso.';
$messages['groupdeleted'] = 'Grupo eliminado com sucesso.';
$messages['grouprenamed'] = 'Grupo renomeado com sucesso.';
$messages['groupcreated'] = 'Grupo criado com sucesso.';
$messages['savedsearchdeleted'] = 'A pesquisa guardada foi eliminada com sucesso.';
$messages['savedsearchdeleteerror'] = 'Não foi possível eliminar a pesquisa guardada.';
$messages['savedsearchcreated'] = 'Pesquisa guardada criada com sucesso.';
$messages['savedsearchcreateerror'] = 'Não foi possível criar a pesquisa guardada.';
$messages['messagedeleted'] = 'Mensagem(ns) eliminada(s) com sucesso.';
$messages['messagemoved'] = 'Mensagem(ns) movida(s) com sucesso.';
$messages['messagemovedtotrash'] = 'Mensagem(ns) movida(s) com sucesso para a Reciclagem.';
$messages['messagecopied'] = 'Mensagem(ns) copiada(s) com sucesso.';
$messages['messagemarked'] = 'Mensagem(ns) marcada(s) com sucesso.';
$messages['autocompletechars'] = 'Indique pelo menos $min caracteres para o auto preenchimento.';
$messages['autocompletemore'] = 'Demasiados registos encontrados. Por favor, insira mais caracteres.';
$messages['namecannotbeempty'] = 'O nome não pode estar em branco.';
$messages['nametoolong'] = 'O nome é demasiado longo.';
$messages['namedotforbidden'] = 'O nome da pasta não pode começar com um ponto.';
$messages['folderupdated'] = 'Atualização da pasta concluída com sucesso.';
$messages['foldercreated'] = 'Pasta criada com sucesso.';
$messages['invalidimageformat'] = 'O formato da imagem não é suportado.';
$messages['mispellingsfound'] = 'Foram detetados erros de ortografia nesta mensagem.';
$messages['parentnotwritable'] = 'Não é possível criar/mover esta pasta para a pasta selecionada. O acesso foi negado.';
$messages['messagetoobig'] = 'A mensagem é demasiado grande para ser processada.';
$messages['attachmentvalidationerror'] = 'Este anexo é suspeito porque o seu tipo não corresponde ao tipo declarado na mensagem. Se não confiar no remetente, não deve abri-lo no navegador, pois pode conter conteúdo malicioso.
Esperado: $expected; encontrado: $detected';
$messages['noscriptwarning'] = 'Aviso: Este serviço de webmail utiliza Javascript! Para o poder utilizar, ative o Javascript nas definições do seu navegador.';
$messages['messageissent'] = 'A mensagem já foi enviada, mas ainda não foi guardada. Deseja guardá-la agora?';
$messages['errnotfound'] = 'Ficheiro não encontrado';
$messages['errnotfoundexplain'] = 'O recurso solicitado não foi encontrado!';
$messages['errfailedrequest'] = 'A solicitação falhou';
$messages['errauthorizationfailed'] = 'Falha na autorização';
$messages['errunauthorizedexplain'] = 'Não foi possível verificar se está autorizado a aceder a este serviço!';
$messages['errrequestcheckfailed'] = 'Falha na verificação da solicitação ';
$messages['errcsrfprotectionexplain'] = "Para sua proteção, o acesso a este recurso está protegido contra CSRF.\nlf Se está a ver isto, provavelmente não fez logout antes de sair da aplicação web.\n\nAgora, é necessária interação humana para continuar.";
$messages['errcontactserveradmin'] = 'Por favor, contacte o administrador do servidor.';
$messages['clicktoresumesession'] = 'Clique aqui para retomar a sua sessão anterior';
$messages['errcomposesession'] = 'Erro na sessão de composição';
$messages['errcomposesessionexplain'] = 'A sessão de composição solicitada não foi encontrada.';
$messages['clicktocompose'] = 'Clique aqui para escrever uma nova mensagem';
$messages['nosupporterror'] = 'Esta funcionalidade não é suportada pelo seu navegador.';
$messages['siginserted'] = 'Assinatura inserida com sucesso.';
$messages['responseinserted'] = 'Resposta inserida com sucesso.';
$messages['noresponsesavailable'] = 'Sem respostas disponíveis';
$messages['listempty'] = 'A lista está vazia.';
$messages['listusebutton'] = 'Use o botão Criar para adicionar um novo registo.';
$messages['keypaircreatesuccess'] = 'Um novo par de chaves foi criado com sucesso para $identity.';
$messages['emptyattachment'] = 'Este anexo parece estar vazio.<br>Por favor, verifique com a pessoa que o enviou.';
$messages['oauthloginfailed'] = 'O login do OAuth falhou. Por favor, tente novamente.';
localization/kab/labels.inc000064400000001721151727150600011733 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['isread'] = 'Ɣeṛ';
$labels['unknown'] = 'arussin';
$labels['other'] = 'Ayen-nniḍen';
$labels['typeother'] = 'Ayen-nniḍen';
$labels['delete'] = 'Kkes';
$labels['create'] = 'Rnu';
localization/kab/messages.inc000064400000001502151727150600012275 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Teḍra-d tuccḍa';
localization/da_DK/timezones.inc000064400000002346151727150600012717 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:america'] = 'Amerika';
$labels['tz:antarctica'] = 'Antarktis';
$labels['tz:asia'] = 'Asien';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:athens'] = 'Athen';
$labels['tz:europe:belgrade'] = 'Belgien';
$labels['tz:europe:brussels'] = 'Bruxelles';
$labels['tz:europe:copenhagen'] = 'København';
$labels['tz:europe:lisbon'] = 'Lissabon';
$labels['tz:europe:prague'] = 'Prag';
$labels['tz:europe:rome'] = 'Rom';
localization/da_DK/labels.inc000064400000074326151727150600012153 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Velkommen til $product';
$labels['username'] = 'Brugernavn';
$labels['password'] = 'Adgangskode';
$labels['server'] = 'Server';
$labels['login'] = 'Log på';
$labels['oauthlogin'] = 'Login med $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Log af';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Indstillinger';
$labels['addressbook'] = 'Adressebog';
$labels['darkmode'] = 'Mørk indstilling';
$labels['lightmode'] = 'Lys indstilling';
$labels['inbox'] = 'Indbakke';
$labels['drafts'] = 'Kladder';
$labels['sent'] = 'Sendt post';
$labels['trash'] = 'Papirkurv';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Vis rigtige navne for specielle mapper';
$labels['subject'] = 'Emne';
$labels['from'] = 'Afsender';
$labels['sender'] = 'Afsender';
$labels['to'] = 'Modtager';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Svar til';
$labels['followupto'] = 'Opfølgning til';
$labels['date'] = 'Dato';
$labels['size'] = 'Størrelse';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Status for læsning';
$labels['listoptions'] = 'Listeindstillinger...';
$labels['listoptionstitle'] = 'Listeindstillinger';
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Besked $from til $to af $count';
$labels['threadsfromto'] = 'Tråd $from til $to af $count';
$labels['messagenrof'] = 'Besked $nr af $count';
$labels['fromtoshort'] = '$from – $to af $count';
$labels['copy'] = 'Kopiér';
$labels['move'] = 'Flyt';
$labels['moveto'] = 'Flyt til...';
$labels['copyto'] = 'Kopier til...';
$labels['download'] = 'Download';
$labels['open'] = 'Åbn';
$labels['showattachment'] = 'Vis';
$labels['showanyway'] = 'Vis alligevel';
$labels['filename'] = 'Filnavn';
$labels['filesize'] = 'Filstørrelse';
$labels['addtoaddressbook'] = 'Føj til adressebog';
$labels['sun'] = 'søn';
$labels['mon'] = 'man';
$labels['tue'] = 'tir';
$labels['wed'] = 'ons';
$labels['thu'] = 'tor';
$labels['fri'] = 'fre';
$labels['sat'] = 'lør';
$labels['sunday'] = 'søndag';
$labels['monday'] = 'mandag';
$labels['tuesday'] = 'tirsdag';
$labels['wednesday'] = 'onsdag';
$labels['thursday'] = 'torsdag';
$labels['friday'] = 'fredag';
$labels['saturday'] = 'lørdag';
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
$labels['apr'] = 'apr';
$labels['may'] = 'maj';
$labels['jun'] = 'jun';
$labels['jul'] = 'jul';
$labels['aug'] = 'aug';
$labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
$labels['longjan'] = 'januar';
$labels['longfeb'] = 'februar';
$labels['longmar'] = 'marts';
$labels['longapr'] = 'april';
$labels['longmay'] = 'maj';
$labels['longjun'] = 'juni';
$labels['longjul'] = 'juli';
$labels['longaug'] = 'august';
$labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
$labels['today'] = 'I dag';
$labels['refresh'] = 'Opdatér';
$labels['checkmail'] = 'Se efter nye beskeder';
$labels['compose'] = 'Ny besked';
$labels['writenewmessage'] = 'Skriv en ny besked';
$labels['reply'] = 'Svar';
$labels['replytomessage'] = 'Svar til afsender';
$labels['replytoallmessage'] = 'Svar til listen eller til afsender og alle modtagere';
$labels['replyall'] = 'Svar alle';
$labels['replylist'] = 'Svar til listen';
$labels['forward'] = 'Videresend';
$labels['forwardinline'] = 'Videresend som del af teksten';
$labels['forwardattachment'] = 'Videresend som vedhæftning';
$labels['forwardmessage'] = 'Videresend beskeden';
$labels['bouncemsg'] = 'Gensend (bounce)';
$labels['bounce'] = 'Gensend';
$labels['deletemessage'] = 'Slet besked';
$labels['movemessagetotrash'] = 'Flyt besked til Papirkurv';
$labels['printmessage'] = 'Udskriv denne besked';
$labels['previousmessage'] = 'Vis forrige besked';
$labels['firstmessage'] = 'Vis første besked';
$labels['nextmessage'] = 'Vis næste besked';
$labels['lastmessage'] = 'Vis sidste besked';
$labels['backtolist'] = 'Tilbage til oversigten';
$labels['viewsource'] = 'Vis kilde';
$labels['mark'] = 'Markér';
$labels['markmessages'] = 'Markér beskeder';
$labels['markread'] = 'Som læst';
$labels['markunread'] = 'Som ulæst';
$labels['markflagged'] = 'Som markeret';
$labels['markunflagged'] = 'Som umarkeret';
$labels['moreactions'] = 'Flere funktioner...';
$labels['markallread'] = 'Marker alle som læst';
$labels['folders-cur'] = 'Valgte mappe';
$labels['folders-sub'] = 'Valgte mappe og dens undermapper';
$labels['folders-all'] = 'Alle mapper';
$labels['more'] = 'Mere';
$labels['back'] = 'Tilbage';
$labels['options'] = 'Indstillinger';
$labels['composeoptions'] = 'Indstillinger for ny besked';
$labels['optionsandattachments'] = 'Indstillinger og vedhæftninger';
$labels['actions'] = 'Handlinger';
$labels['first'] = 'Første';
$labels['last'] = 'Sidste';
$labels['previous'] = 'Forrige';
$labels['next'] = 'Næste';
$labels['select'] = 'Vælg';
$labels['selection'] = 'Valg';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
$labels['currpage'] = 'Aktuel side';
$labels['isread'] = 'Læs';
$labels['unread'] = 'Ulæste';
$labels['flagged'] = 'Markeret';
$labels['unflagged'] = 'Ikke markeret';
$labels['unanswered'] = 'Ubesvaret';
$labels['withattachment'] = 'Med vedhæftning';
$labels['deleted'] = 'Slettede';
$labels['undeleted'] = 'Ikke slettet';
$labels['replied'] = 'Besvaret';
$labels['forwarded'] = 'Videresendt';
$labels['invert'] = 'Invertér';
$labels['filter'] = 'Filtrer';
$labels['list'] = 'Liste';
$labels['threads'] = 'Tråde';
$labels['expand-all'] = 'Udfold alle';
$labels['expand-unread'] = 'Udfold ulæste';
$labels['collapse-all'] = 'Fold alle';
$labels['threaded'] = 'Trådet';
$labels['showunread'] = 'Vis ulæste beskeder';
$labels['autoexpand_threads'] = 'Udfold besked tråde';
$labels['do_expand'] = 'alle tråde';
$labels['expand_only_unread'] = 'kun dem med ulæste beskeder';
$labels['fromto'] = 'Afsender/Modtager';
$labels['flag'] = 'Flag';
$labels['attachment'] = 'Vedhæftning';
$labels['nonesort'] = 'Ingen';
$labels['sentdate'] = 'Sendt dato';
$labels['arrival'] = 'Modtaget dato';
$labels['asc'] = 'stigende';
$labels['desc'] = 'faldende';
$labels['listcolumns'] = 'Vist kolonne';
$labels['listsorting'] = 'Sorteringskolonne';
$labels['listorder'] = 'Sorter efter';
$labels['listmode'] = 'Listevisningstilstand';
$labels['lmode'] = 'Listevisningsmode';
$labels['layout'] = 'Layout';
$labels['layoutwidescreen'] = 'Bred skærm';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Liste';
$labels['layoutwidescreendesc'] = 'Bred skærm (3 kolonner)';
$labels['layoutdesktopdesc'] = 'Stationær (bred liste og forhåndsvisning nedenunder)';
$labels['layoutlistdesc'] = 'Liste (uden forhåndsvisning)';
$labels['folderactions'] = 'Mappehandlinger...';
$labels['compact'] = 'Ryd op';
$labels['empty'] = 'Tøm';
$labels['importmessages'] = 'Importer beskeder';
$labels['mailimportzip'] = 'Flere filer kan komprimeres i en zip-fil.';
$labels['quota'] = 'Diskforbrug';
$labels['unknown'] = 'ukendt';
$labels['unlimited'] = 'ubegrænset';
$labels['quotatype'] = 'Kvotetype';
$labels['quotatotal'] = 'Grænse';
$labels['quotaused'] = 'Brugt';
$labels['quotastorage'] = 'Disk plads';
$labels['quotamessage'] = 'Beskeder';
$labels['shortheaderdate'] = 'På $date';
$labels['shortheaderto'] = 'Til $to den $date';
$labels['shortheaderfrom'] = 'Fra $from den $date';
$labels['quicksearch'] = 'Hurtigsøg';
$labels['searchplaceholder'] = 'Søg...';
$labels['resetsearch'] = 'Nulstil søgning';
$labels['searchmod'] = 'Søgeparametre';
$labels['msgtext'] = 'Hele beskeden';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Navn';
$labels['searchscope'] = 'Omfang';
$labels['currentfolder'] = 'Nuværende mappe';
$labels['subfolders'] = 'Denne og undermapper';
$labels['allfolders'] = 'Alle mapper';
$labels['searchinterval-1W'] = 'ældre end en uge';
$labels['searchinterval-1M'] = 'ældre end en måned';
$labels['searchinterval-1Y'] = 'ældre end et år';
$labels['searchinterval1W'] = 'yngre end en uge';
$labels['searchinterval1M'] = 'yngre end en måned';
$labels['searchinterval1Y'] = 'yngre end et år';
$labels['openinextwin'] = 'Åbn i nyt vindue';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Vis i ren tekst format';
$labels['changeformathtml'] = 'Vis i HTML-format';
$labels['editasnew'] = 'Redigér som ny';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send besked';
$labels['savemessage'] = 'Gem som kladde';
$labels['addattachment'] = 'Vedhæft en fil';
$labels['charset'] = 'Tegnsæt';
$labels['editortype'] = 'Tekstbehandler';
$labels['returnreceipt'] = 'Anmod om kvittering ved læst';
$labels['dsn'] = 'Anmod om leveringsstatus';
$labels['mailreplyintro'] = '$sender skrev den $date:';
$labels['originalmessage'] = 'Original besked';
$labels['selectimage'] = 'Vælg billede';
$labels['addimage'] = 'Tilføje billede';
$labels['selectmedia'] = 'Vælg video';
$labels['addmedia'] = 'Tilføj video';
$labels['encrypt'] = 'Krypter';
$labels['encryptmessage'] = 'Krypter besked';
$labels['encryptmessagemailvelope'] = 'Krypter besked med Mailvelope';
$labels['importpubkeys'] = 'Importer offentlige nøgler';
$labels['encryptedsendialog'] = 'Sender krypteret besked';
$labels['encryptandsign'] = 'Krypter og underskriv';
$labels['keyid'] = 'NøgleID';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Udløbet';
$labels['keyrevoked'] = 'Tilbagekaldt';
$labels['bccinstead'] = 'Brug Bcc';
$labels['addheader'] = 'Tilføj modtager (header)';
$labels['insert'] = 'Indsæt';
$labels['insertcontact'] = 'Indsæt kontakt(er)';
$labels['recipient'] = 'Modtager';
$labels['recipientedit'] = 'Editér modtager';
$labels['editidents'] = 'Ret identiteter';
$labels['spellcheck'] = 'Stav';
$labels['checkspelling'] = 'Stavekontrol';
$labels['resumeediting'] = 'Genoptag redigering';
$labels['revertto'] = 'Vend tilbage til';
$labels['restore'] = 'Gendan';
$labels['restoremessage'] = 'Gendan besked';
$labels['ignore'] = 'Ignorer';
$labels['responses'] = 'Svar';
$labels['insertresponse'] = 'Indsæt et svar';
$labels['manageresponses'] = 'Administrer svar';
$labels['newresponse'] = 'Opret ny svar';
$labels['addresponse'] = 'Tilføj svar';
$labels['editresponse'] = 'Rediger svar';
$labels['editresponses'] = 'Rediger svar';
$labels['responsename'] = 'Navn';
$labels['responsetext'] = 'Svartekst';
$labels['attach'] = 'Vedhæft';
$labels['attachments'] = 'Vedhæftninger';
$labels['upload'] = 'Overfør';
$labels['uploadprogress'] = '$percent ($current af $total)';
$labels['close'] = 'Luk';
$labels['messageoptions'] = 'Beskedmuligheder...';
$labels['togglecomposeoptions'] = 'Skift kompositions indstillinger';
$labels['attachmentrename'] = 'Omdøb vedhæftet fil';
$labels['low'] = 'Lav';
$labels['lowest'] = 'Lavest';
$labels['normal'] = 'Normal';
$labels['high'] = 'Høj';
$labels['highest'] = 'Højest';
$labels['nosubject'] = '(intet emne)';
$labels['showimages'] = 'Vis billeder';
$labels['allow'] = 'Tillad';
$labels['alwaysshow'] = 'Vis altid billeder fra $sender';
$labels['alwaysallow'] = 'Tillad altid fra $sender';
$labels['isdraft'] = 'Dette er en kladde.';
$labels['andnmore'] = '$nr yderligere...';
$labels['details'] = 'Detaljer';
$labels['summary'] = 'resume';
$labels['headers'] = 'Brevhoveder';
$labels['allheaders'] = 'Alle brevhoveder...';
$labels['togglemoreheaders'] = 'Vis yderligere brevhoveder';
$labels['togglefullheaders'] = 'Vis eller skjul rå brevhoveder';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Almindelig tekst';
$labels['savesentmessagein'] = 'Gem afsendt besked i';
$labels['dontsave'] = 'gem ikke';
$labels['maxuploadsize'] = 'Maksimale tilladte filstørrelse er $size';
$labels['addcc'] = 'Tilføj Cc';
$labels['addbcc'] = 'Tilføj Bcc';
$labels['addreplyto'] = 'Tilføj Svar-Til adresse';
$labels['addfollowupto'] = 'Tilføj følg-op adresse';
$labels['sendreceipt'] = 'Send kvittering for læsning?';
$labels['mdnrequest'] = 'Afsenderen af denne besked har bedt om at modtage en bekræftelse når du læser beskeden. Vil du sende kvittering for læsning?';
$labels['receiptread'] = 'Send kvittering for læsning';
$labels['yourmessage'] = 'Dette er en kvittering for at din besked er blevet vist';
$labels['receiptnote'] = 'Bemærk: Denne kvittering bekræfter udelukkende at beskeden blev vist på modtagerens computer. Der er ingen garanti for at modtageren har læst eller forstået beskedens indhold.';
$labels['sendalwaysto'] = 'Send altid til $email';
$labels['zoomin'] = 'Zoom ind';
$labels['zoomout'] = 'Zoom ud';
$labels['rotate'] = 'Rotér';
$labels['increaseimage'] = 'Forøg billedestørrelse';
$labels['decreaseimage'] = 'Formindst billedestørrelse';
$labels['rotateimage'] = 'Rotér billede';
$labels['showtools'] = 'Vis billedeværktøjer';
$labels['hidetools'] = 'Skjul billedeværktøjer';
$labels['name'] = 'Vist navn';
$labels['firstname'] = 'Fornavn';
$labels['surname'] = 'Efternavn';
$labels['middlename'] = 'Mellemnavn';
$labels['nameprefix'] = 'Præfiks';
$labels['namesuffix'] = 'Suffiks';
$labels['nickname'] = 'Alias/Kaldenavn';
$labels['jobtitle'] = 'Jobtitel';
$labels['department'] = 'Afdeling';
$labels['gender'] = 'Køn';
$labels['maidenname'] = 'Pigenavn';
$labels['email'] = 'E-mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresse';
$labels['street'] = 'Vej';
$labels['locality'] = 'By';
$labels['zipcode'] = 'Postnr.';
$labels['region'] = 'Område/region';
$labels['country'] = 'Land';
$labels['birthday'] = 'Fødselsdag';
$labels['anniversary'] = 'Årsdag';
$labels['website'] = 'Hjemmeside';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Noter';
$labels['male'] = 'Mand';
$labels['female'] = 'Kvinde';
$labels['manager'] = 'Manager';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Ægtefælle/partner';
$labels['allfields'] = 'Alle felter';
$labels['search'] = 'Søg';
$labels['searchresult'] = 'Søgeresultat ';
$labels['advsearch'] = 'Avanceret søg';
$labels['advanced'] = 'Avanceret';
$labels['other'] = 'Andet';
$labels['printcontact'] = 'Udskriv kontakt';
$labels['qrcode'] = 'QR-kode';
$labels['typehome'] = 'Hjem';
$labels['typework'] = 'Arbejde';
$labels['typeother'] = 'Andet';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Hovednr.';
$labels['typehomefax'] = 'Hjemme - fax';
$labels['typeworkfax'] = 'Arbejde - fax';
$labels['typecar'] = 'Bil';
$labels['typepager'] = 'Personsøger';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Hjemmeside';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Tilføj felt...';
$labels['addcontact'] = 'Tilføj kontakt';
$labels['editcontact'] = 'Redigér kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontaktegenskaber';
$labels['contactnameandorg'] = 'Navn og organisation';
$labels['personalinfo'] = 'Personlig information';
$labels['personal'] = 'Personlig';
$labels['contactphoto'] = 'Kontaktfoto';
$labels['edit'] = 'Redigér';
$labels['cancel'] = 'Annullér';
$labels['save'] = 'Gem';
$labels['delete'] = 'Slet';
$labels['discard'] = 'Kasser';
$labels['continue'] = 'Fortsæt';
$labels['ok'] = 'OK';
$labels['rename'] = 'Omdøb';
$labels['addphoto'] = 'Tilføj';
$labels['replacephoto'] = 'Erstat';
$labels['uploadphoto'] = 'Overfør billede';
$labels['choosefile'] = 'Vælg fil...';
$labels['choosefiles'] = 'Vælg filer...';
$labels['browse'] = 'Gennemse';
$labels['newcontact'] = 'Opret ny kontakt';
$labels['deletecontact'] = 'Slet valgte kontakter';
$labels['composeto'] = 'Skriv besked til';
$labels['contactsfromto'] = 'Kontakter $from til $to af $count';
$labels['print'] = 'Udskriv';
$labels['export'] = 'Eksportér';
$labels['exportall'] = 'Eksporter alt';
$labels['exportsel'] = 'Eksporter udvalgte';
$labels['exportvcards'] = 'Eksportér kontakter i vCard format';
$labels['newgroup'] = 'Opret gruppe';
$labels['addgroup'] = 'Tilføj gruppe';
$labels['grouprename'] = 'Omdøb gruppe';
$labels['groupdelete'] = 'Slet gruppe';
$labels['groupassign'] = 'Tilføj til gruppe...';
$labels['groupremove'] = 'Fjern fra gruppe';
$labels['groupremoveselected'] = 'Fjern markerede kontakter fra gruppen';
$labels['uponelevel'] = 'Et niveau op';
$labels['previouspage'] = 'Vis den forrige side';
$labels['firstpage'] = 'Vis første side';
$labels['nextpage'] = 'Vis næste side';
$labels['lastpage'] = 'Vis sidste side';
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Grupper';
$labels['listgroup'] = 'Vis gruppemedlemmer';
$labels['personaladrbook'] = 'Personlige adresser';
$labels['searchsave'] = 'Gem søgning';
$labels['searchdelete'] = 'Slet søgning';
$labels['import'] = 'Importér';
$labels['importcontacts'] = 'Importér kontakter';
$labels['importfromfile'] = 'Importer fra fil';
$labels['importtarget'] = 'Tilføj kontakter til';
$labels['importreplace'] = 'Overskriv hele adressebogen';
$labels['importgroups'] = 'Importer gruppetildelinger';
$labels['importgroupsall'] = 'Alle (opret grupper hvis nødvendigt)';
$labels['importgroupsexisting'] = 'Kun for eksisterende grupper';
$labels['importmapdesc'] = 'Bekræft herunder, at informationen om det kortlagte felt er korrekt før der fortsættes med import af CSV (komma separerede) data. ';
$labels['fieldnotmapped'] = 'Feltet er ikke kortlagt (importer ikke)';
$labels['skipheader'] = 'Importer ikke første linje (overskrifter)';
$labels['done'] = 'Færdig';
$labels['settingsfor'] = 'Indstillinger for';
$labels['about'] = 'Om';
$labels['preferences'] = 'Indstillinger';
$labels['userpreferences'] = 'Brugerindstillinger';
$labels['editpreferences'] = 'Redigér brugerindstillinger';
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Administrer identiteter ';
$labels['newidentity'] = 'Opret ny identitet ';
$labels['addidentity'] = 'Tilføj identitet';
$labels['editidentity'] = 'Rediger identitet';
$labels['identityencryption'] = 'Kryptering';
$labels['preferhtml'] = 'Vis HTML';
$labels['defaultcharset'] = 'Standard tegnkodning';
$labels['htmlmessage'] = 'HTML-besked';
$labels['messagepart'] = 'Del';
$labels['digitalsig'] = 'Digital signatur';
$labels['dateformat'] = 'Datoformat';
$labels['timeformat'] = 'Tidsformat';
$labels['prettydate'] = 'Pæn datovisning';
$labels['setdefault'] = 'Sæt standard';
$labels['autodetect'] = 'Automatisk';
$labels['language'] = 'Sprog';
$labels['timezone'] = 'Tidszone';
$labels['pagesize'] = 'Rækker pr. side';
$labels['signature'] = 'Signatur';
$labels['dstactive'] = 'Sommertid';
$labels['showinextwin'] = 'Åbn besked i et nyt vindue';
$labels['composeextwin'] = 'Opret besked i et nyt vindue';
$labels['htmleditor'] = 'Skriv HTML-besked';
$labels['htmlonreply'] = 'kun når jeg besvarer HTML-beskeder';
$labels['htmlonreplyandforward'] = 'ved videresendelse eller besvarelse af HTML beskeder';
$labels['htmlsignature'] = 'HTML-signatur';
$labels['showemail'] = 'Vis email-adresse med vist navn';
$labels['previewpane'] = 'Vis forhåndsvisningsrude';
$labels['skin'] = 'Brugerflade';
$labels['logoutclear'] = 'Tøm Papirkurv når jeg logger af';
$labels['logoutcompact'] = 'Komprimér Indbakke når jeg logger af';
$labels['uisettings'] = 'Brugerflade';
$labels['serversettings'] = 'Serverindstillinger';
$labels['mailboxview'] = 'Postkassevisning';
$labels['mdnrequests'] = 'Kvitteringer';
$labels['askuser'] = 'spørg mig';
$labels['autosend'] = 'send automatisk';
$labels['autosendknown'] = 'send automatisk til mine kontakter, ellers spørg mig';
$labels['autosendknownignore'] = 'send automatisk til mine kontakter, ellers ignorér';
$labels['autosendtrusted'] = 'Send kvittering til mine betroede afsendere, ellers spørg mig';
$labels['autosendtrustedignore'] = 'Send kvittering til mine betroede afsendere, ellers ignorer';
$labels['ignorerequest'] = 'ignorer efterspørgsel';
$labels['readwhendeleted'] = 'Markér beskeden som læst ved sletning';
$labels['flagfordeletion'] = 'Markér beskeden til sletning istedet for at slette';
$labels['skipdeleted'] = 'Skjul slettede beskeder';
$labels['deletealways'] = 'Hvis det ikke lykkes at flytte beskeder til Papirkurv, så slet dem';
$labels['deletejunk'] = 'Slet beskeder i Junk uden at flytte i skraldespand';
$labels['showremoteimages'] = 'Vis eksterne indlejrede billeder';
$labels['allowremoteresources'] = 'Tillad eksterne ressourcer (billeder, formattering)';
$labels['fromknownsenders'] = 'fra kendte afsendere';
$labels['fromtrustedsenders'] = 'fra betroede afsendere';
$labels['frommycontacts'] = 'fra mine kontakter';
$labels['always'] = 'altid';
$labels['alwaysbutplain'] = 'altid, undtagen ved besvarelse af ren-tekst';
$labels['showinlineimages'] = 'Vis vedhæftede billeder under beskeden';
$labels['autosavedraft'] = 'Gem kladde automatisk';
$labels['everynminutes'] = 'hver $n. minut';
$labels['refreshinterval'] = 'Opdater (tjek for nye beskeder m.v.)';
$labels['never'] = 'aldrig';
$labels['immediately'] = 'straks';
$labels['messagesdisplaying'] = 'Visning af beskeder';
$labels['messagescomposition'] = 'Skrivning af beskeder';
$labels['mimeparamfolding'] = 'Navne på vedhæftninger';
$labels['2231folding'] = 'Fuld RFC 2231 understøttelse (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 understøttelse (MS Outlook)';
$labels['2047folding'] = 'Fuld RFC 2047 understøttelse (andre)';
$labels['force7bit'] = 'Brug MIME indkodning for 8-bits tegn';
$labels['savelocalstorage'] = " ";
$labels['advancedoptions'] = 'Avancerede indstillinger';
$labels['toggleadvancedoptions'] = 'Skift avancerede indstillinger';
$labels['focusonnewmessage'] = 'Fokusér browservindue når der kommer en ny besked';
$labels['checkallfolders'] = 'Tjek alle mapper for nye beskeder';
$labels['displaynext'] = 'Vis næste besked efter sletning/flytning';
$labels['defaultfont'] = 'Standard font ved HTML besked';
$labels['mainoptions'] = 'Generelle indstillinger';
$labels['browseroptions'] = 'Browserindstillinger';
$labels['section'] = 'Sektion';
$labels['maintenance'] = 'Vedligeholdelse';
$labels['newmessage'] = 'Ny besked';
$labels['signatureoptions'] = 'Signatur-indstillinger';
$labels['whenreplying'] = 'Når der svares';
$labels['replyempty'] = 'Citer ikke den originale besked';
$labels['replytopposting'] = 'begynd svar over originalen';
$labels['replytoppostingnoindent'] = 'begynd svar over originalen (ingen indrykning)';
$labels['replybottomposting'] = 'begynd svar under originalen';
$labels['replyremovesignature'] = 'Fjern original signatur fra besked, når der svares';
$labels['autoaddsignature'] = 'Indsæt automatisk signatur';
$labels['newmessageonly'] = 'kun på nye beskeder';
$labels['replyandforwardonly'] = 'kun på svar og videresendelse af beskeder';
$labels['insertsignature'] = 'Indsæt signatur';
$labels['sigbelow'] = 'Placer signaturen under den citerede tekst';
$labels['sigseparator'] = 'Tving standard separator i signaturer';
$labels['automarkread'] = 'Marker beskeder som læst';
$labels['afternseconds'] = 'efter $n sekunder';
$labels['reqmdn'] = 'Anmod altid om kvittering for læsning';
$labels['reqdsn'] = 'Anmod altid om kvittering for levering';
$labels['replysamefolder'] = 'Placer svar til en besked i samme mappe som beskeden der besvares';
$labels['defaultabook'] = 'Standardadressebog';
$labels['autocompletesingle'] = 'Undgå alternative e-mailadresser ved autofuldførelse';
$labels['listnamedisplay'] = 'Vis kontakter som';
$labels['privatemode'] = 'Privat (hjemme)';
$labels['businessmode'] = 'Arbejde (job)';
$labels['collectedaddresses'] = 'Indsamlede adresser';
$labels['collectedrecipients'] = 'indsamlede modtagere';
$labels['collectedrecipientsopt'] = 'Gem udgående kvitteringer i';
$labels['collectedsendersopt'] = 'gem betroede afsendere i';
$labels['trustedsenders'] = 'betroede afsendere';
$labels['spellcheckbeforesend'] = 'Kontrollér stavning inden beskeden sendes';
$labels['spellcheckoptions'] = 'Stavekontrolindstillinger';
$labels['spellcheckignoresyms'] = 'Ignorer ord med symboler';
$labels['spellcheckignorenums'] = 'Ignorer ord med tal';
$labels['spellcheckignorecaps'] = 'Ignorer ord med udelukkende store bogstaver';
$labels['addtodict'] = 'Føj til ordbog';
$labels['mailtoprotohandler'] = 'Registrer protokolhåndtering af \'mailto:\'-links';
$labels['standardwindows'] = 'Behandl pop op-vinduer som standardvinduer';
$labels['forwardmode'] = 'Videresendelse af beskeder';
$labels['inline'] = 'som del af teksten';
$labels['asattachment'] = 'som vedhæftning';
$labels['replyallmode'] = 'Standardhandling for [Svar alle]-knap';
$labels['replyalldefault'] = 'svar til alle';
$labels['replyalllist'] = 'svar kun til mail-liste (hvis fundet)';
$labels['allmessages'] = 'alle meddelelser';
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenavn';
$labels['subscribed'] = 'Abonneret';
$labels['messagecount'] = 'Beskeder';
$labels['create'] = 'Opret';
$labels['createfolder'] = 'Opret ny mappe';
$labels['managefolders'] = 'Administrér mapper';
$labels['specialfolders'] = 'Specielle mapper';
$labels['properties'] = 'Egenskaber';
$labels['folderproperties'] = 'Mappeegenskaber';
$labels['parentfolder'] = 'Mappe et niveau op';
$labels['location'] = 'Placering';
$labels['info'] = 'Information';
$labels['getfoldersize'] = 'Klik for mappestørrelse';
$labels['changesubscription'] = 'Klik for at ændre abonnement';
$labels['foldertype'] = 'Mappetype';
$labels['personalfolder'] = 'Privat mappe';
$labels['otherfolder'] = 'Anden brugers mappe';
$labels['sharedfolder'] = 'Offentlig mappe';
$labels['findfolders'] = 'Find mapper';
$labels['findcontacts'] = 'Find kontakter';
$labels['findmail'] = 'Find beskeder';
$labels['namespace.personal'] = 'Personlig';
$labels['namespace.other'] = 'Andre brugere';
$labels['namespace.shared'] = 'Delt';
$labels['dualuselabel'] = 'Kan kun indeholde';
$labels['dualusemail'] = 'beskeder';
$labels['dualusefolder'] = 'mapper';
$labels['generate'] = 'Opret';
$labels['encryptioncreatekey'] = 'Opret et nyt nøglepar';
$labels['openmailvelopesettings'] = 'Åbn Mailvelope-indstillinger';
$labels['encryptionprivkeysinmailvelope'] = 'Du har $nr matchende private nøgler gemt i din Mailvelope nøglering: ';
$labels['encryptionnoprivkeysinmailvelope'] = 'Denne afsender identitet har ikke allerede en PGP privat nøgle gemt i din Mailvelope udvidelse. Vil du oprette en for at tillade krypterede beskeder?';
$labels['encryption'] = 'Kryptering';
$labels['mailvelopeoptions'] = 'Mailvelope muligheder';
$labels['sortby'] = 'Sortér efter';
$labels['sortasc'] = 'Ældste først';
$labels['sortdesc'] = 'Nyeste først';
$labels['undo'] = 'Fortryd';
$labels['installedplugins'] = 'Installerede udvidelser';
$labels['plugin'] = 'Udvidelse';
$labels['version'] = 'Version';
$labels['source'] = 'Kilde';
$labels['license'] = 'Licens';
$labels['support'] = 'Få support';
$labels['savedsearches'] = 'Gemte søgninger';
$labels['dateformatY'] = 'ÅÅÅÅ';
$labels['dateformaty'] = 'ÅÅ';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Vesteuropæisk';
$labels['easterneuropean'] = 'Østeuropæisk';
$labels['southeasterneuropean'] = 'Sydøsteuropæisk';
$labels['baltic'] = 'Baltisk';
$labels['cyrillic'] = 'Kyrillisk';
$labels['arabic'] = 'Arabisk';
$labels['greek'] = 'Græsk';
$labels['hebrew'] = 'Hebræisk';
$labels['turkish'] = 'Tyrkisk';
$labels['nordic'] = 'Nordisk';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Keltisk';
$labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
$labels['arialabeltopnav'] = 'Vinduesstyring';
$labels['arialabeltasknav'] = 'Programopgaver';
$labels['arialabeltoolbar'] = 'Programværktøjslinje';
$labels['arialabelactivetask'] = 'Aktiv opgave';
$labels['arialabelmessagessearchfilter'] = 'E-mail-filter';
$labels['arialabelmailsearchform'] = 'E-mail-søgeformular';
$labels['arialabelcontactsearchform'] = 'Kontakt-søgeformular';
$labels['arialabelmailquicksearchbox'] = 'E-mail-søgeinput';
$labels['arialabelquicksearchbox'] = 'Søgeinput';
$labels['arialabelfoldersearchfilter'] = 'Mappevisningsfilter';
$labels['arialabelfoldersearchform'] = 'Mappesøgeformular';
$labels['arialabelfolderlist'] = 'E-mailmappevalg';
$labels['arialabelmessagelist'] = 'E-mailbeskedvisning';
$labels['arialabelmailpreviewframe'] = 'Forhåndsvisning af besked';
$labels['arialabelmailboxmenu'] = 'Menu for mappehandlinger';
$labels['arialabellistselectmenu'] = 'Menu for listevalg';
$labels['arialabelthreadselectmenu'] = 'Menu for trådvisning';
$labels['arialabelmessagebody'] = 'Beskedtekst';
$labels['arialabelmessageactions'] = 'Handlinger for besked';
$labels['arialabelcontactquicksearch'] = 'Kontaktsøgeformular';
$labels['arialabelcontactsearchbox'] = 'Kontaktsøgeinput';
$labels['arialabelmessageheaders'] = 'Brevhoveder';
$labels['arialabelforwardingoptions'] = 'Videresendelsesindstillinger';
$labels['arialabelreplyalloptions'] = 'Svar-alle indstillinger';
$labels['arialabelmoremessageactions'] = 'Flere funktioner';
$labels['arialabelmarkmessagesas'] = 'Markér valgte beskeder som...';
$labels['arialabelcomposeoptions'] = 'Kompositionsindstillinger';
$labels['arialabelresponsesmenu'] = 'Forberedte-svar menu';
$labels['arialabelattachmentuploadform'] = 'Vedhæftnings uploadform';
$labels['arialabelmailtomenu'] = 'Email adresse indstillinger';
$labels['arialabelattachmentpreview'] = 'Forhåndsvisning af vedhæftning';
$labels['arialabelsearchterms'] = 'Søgekriterier';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop handlings menu';
$labels['arialabelimagetools'] = 'Billede værktøj';
$labels['helplistkeyboardnavmessages'] = "Piletaster højre/venstre: Udvid/sammenfold beskedtråd (kun i trådtilstand)
Enter: Åbn den valgte/fokuserede besked.
Delete: Flyt markerede beskeder til Papirkurv.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Åbn den valgte/fokuserede kontakt.";
localization/da_DK/messages.inc000064400000035017151727150600012512 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Der opstod en fejl!';
$messages['loginfailed']  = 'Det lykkedes ikke at logge på.';
$messages['cookiesdisabled'] = 'Din browser accepterer ikke cookies.';
$messages['sessionerror'] = 'Din session er ugyldig eller udløbet.';
$messages['cookiesmismatch'] = 'Cookie uoverensstemmelse fundet. Venligst tøm din browser\'s cookies.';
$messages['storageerror'] = 'Forbindelse til e-mailserveren fejlede.';
$messages['servererror'] = 'Serverfejl!';
$messages['servererrormsg'] = 'Serverfejl: $msg';
$messages['accountlocked'] = 'For mange mislykkede login-forsøg. Prøv igen senere.';
$messages['connerror'] = 'Forbindelsesfejl (kunne ikke oprette forbindelse til server)!';
$messages['dberror'] = 'Databasefejl!';
$messages['dbconnerror'] = 'Kan ikke forbinde til databasen!';
$messages['windowopenerror'] = 'Pop op-vinduet blev blokeret!';
$messages['requesttimedout'] = 'Forespørgslen tog for lang tid';
$messages['errorreadonly'] = 'Kunne ikke udføre den ønskede handling. Mappen er skrivebeskyttet.';
$messages['errornoperm'] = 'Kunne ikke udføre den ønskede handling. Tilladelse nægtet.';
$messages['erroroverquota'] = 'Kan ikke udføre handlingen. Der er ikke nok ledig diskplads.';
$messages['erroroverquotadelete'] = 'Der er ikke nok ledig diskplads. Brug Shift+Delete til at slette en meddelelse.';
$messages['invalidrequest'] = 'Ugyldig forespørgsel! Ingen data blev gemt.';
$messages['invalidhost'] = 'Ugyldigt servernavn.';
$messages['nomessagesfound'] = 'Ingen beskeder fundet i denne postkasse.';
$messages['loggedout'] = 'Du har afsluttet sessionen. Farvel!';
$messages['mailboxempty'] = 'Postkassen er tom.';
$messages['nomessages'] = 'Ingen beskeder';
$messages['refreshing'] = 'Opdaterer...';
$messages['loading'] = 'Indlæser...';
$messages['uploading'] = 'Uploader fil...';
$messages['attaching'] = 'Vedhæfter fil...';
$messages['uploadingmany'] = 'Uploader filer...';
$messages['loadingdata'] = 'Indlæser data...';
$messages['checkingmail'] = 'Tjekker for nye beskeder...';
$messages['sendingmessage'] = 'Sender besked...';
$messages['messagesent'] = 'Beskeden blev sendt.';
$messages['savingmessage'] = 'Gemmer besked...';
$messages['messagesaved'] = 'Beskeden er gemt i Kladder.';
$messages['successfullysaved'] = 'Gemt.';
$messages['savingresponse'] = 'Gemmer svartekst...';
$messages['deleteresponseconfirm'] = 'Er du sikker på, at du vil slette denne svartekst?';
$messages['nocontactselected'] = 'Du har ikke valgt en kontakt endnu.';
$messages['addedsuccessfully'] = 'Kontakten blev tilføjet adressebogen.';
$messages['contactexists'] = 'En kontakt med samme navn eksisterer allerede.';
$messages['contactnameexists'] = 'En kontakt med samme navn eksisterer allerede.';
$messages['blockedimages'] = 'For at beskytte dit privatliv er billeder fra eksterne internetservere blokeret.';
$messages['blockedresources'] = 'For at beskytte dit privatliv er fjernressourcer blevet blokeret.';
$messages['suspiciousemail'] = 'Denne meddelelse indeholder mistænkelige email adresser, der kan være svigagtige.';
$messages['encryptedmessage'] = 'Beskeden er krypteret og kan ikke vises. Beklager!';
$messages['externalmessagedecryption'] = 'Dette er en krypteret meddelelse og kan dekrypteres med din browser-udvidelse.';
$messages['encryptpubkeysfound'] = 'Følgende offentlige nøgler blev fundet:';
$messages['nocontactsfound'] = 'Ingen kontakter fundet.';
$messages['contactnotfound'] = 'Den ønskede kontakt blev ikke fundet.';
$messages['contactsearchonly'] = 'Du skal bruge et søgefelt for at se kontakter i den valgte adressebog.';
$messages['sendingfailed'] = 'Det lykkedes ikke at sende beskeden.';
$messages['senttooquickly'] = 'Vent venligst $sec sekunder før du sender denne besked.';
$messages['errorsavingsent'] = 'Der opstod en fejl, da den sendte besked blev forsøgt gemt.';
$messages['errorsaving'] = 'Der opstod en fejl mens der blev gemt.';
$messages['errormoving'] = 'Beskeden/beskederne kunne ikke flyttes.';
$messages['errorcopying'] = 'Beskeden/beskederne kunne ikke kopieres.';
$messages['errordeleting'] = 'Beskeden/beskederne kunne ikke slettes.';
$messages['errormarking'] = 'Beskeden/beskederne kunne ikke markeres.';
$messages['alerttitle'] = 'Opmærksomhed';
$messages['confirmationtitle'] = 'Er du sikker...';
$messages['deletecontactconfirm']  = 'Vil du virkelig slette den/de valgte kontakt(er)?';
$messages['deletegroupconfirm']  = 'Vil du virkelig slette den/de valgte gruppe(r)?';
$messages['deletemessagesconfirm'] = 'Vil du virkelig slette den/de valgte besked(er)?';
$messages['deletefolderconfirm']  = 'Vil du virkelig slette denne mappe?';
$messages['movefolderconfirm']  = 'Vil du virkelig flytte mappen?';
$messages['purgefolderconfirm']  = 'Vil du virkelig slette alle beskeder i denne mappe?';
$messages['contactdeleting'] = 'Sletter kontakt(er)...';
$messages['groupdeleting'] = 'Sletter gruppe...';
$messages['folderdeleting'] = 'Sletter mappe...';
$messages['foldermoving'] = 'Flytter mappen...';
$messages['foldersubscribing'] = 'Abonnerer på mappen...';
$messages['folderunsubscribing'] = 'Fjerner abonnement på mappen...';
$messages['formincomplete'] = 'Formularen var ikke fuldstændig udfyldt.';
$messages['noemailwarning'] = 'Indtast venligst en gyldig e-mailadresse.';
$messages['nonamewarning']  = 'Angiv venligst et navn.';
$messages['nopagesizewarning'] = 'Angiv venligst en sidestørrelse.';
$messages['nosenderwarning'] = 'Indtast venligst e-mailadresse for afsender.';
$messages['recipientsadded'] = 'Modtager(e) tilføjet med succes.';
$messages['norecipientwarning'] = 'Indtast venligst mindst én modtager.';
$messages['disclosedreciptitle'] = 'For mange offentlige modtagere';
$messages['nosubjectwarning']  = '\'Emne\'-feltet er tomt. Vil du skrive et emne nu?';
$messages['nosubjecttitle']  = 'Intet emne';
$messages['nobodywarning'] = 'Send denne besked uden tekst?';
$messages['notsentwarning'] = 'Beskeden er ikke sendt, og ændringerne er ikke gemt endnu. Vil du kassere beskeden?';
$messages['restoresavedcomposedata'] = 'En tidligere skreven men usendt besked blev fundet.\n\nEmne: $subject\nGemt: $date\n\nØnsker du at gendanne denne besked?';
$messages['nosearchname'] = 'Indtast venligst et kontaktnavn eller en e-mailadresse.';
$messages['notuploadedwarning'] = 'Ikke alle vedhæftede filer er blevet uploadet endnu. Vent venligst eller afbryd upload.';
$messages['searchsuccessful'] = 'Fandt $nr beskeder.';
$messages['contactsearchsuccessful'] = 'Fandt $nr kontakter.';
$messages['searchnomatch'] = 'Søgningen fandt ingen beskeder.';
$messages['searching'] = 'Søger...';
$messages['checking'] = 'Tjekker...';
$messages['stillsearching'] = 'Søger stadig...';
$messages['nospellerrors'] = 'Ingen stavefejl fundet.';
$messages['folderdeleted'] = 'Mappen blev slettet.';
$messages['foldersubscribed'] = 'Mappe-abonnement oprettet.';
$messages['folderunsubscribed'] = 'Mappe-abonnement opsagt.';
$messages['folderpurged'] = 'Mappen blev tømt.';
$messages['folderexpunged'] = 'Mappen blev komprimeret';
$messages['deletedsuccessfully'] = 'Slettet.';
$messages['converting'] = 'Fjerner formatering...';
$messages['messageopenerror'] = 'Beskeden kunne ikke hentes fra serveren.';
$messages['filelinkerror'] = 'Vedhæftning af filen mislykkedes.';
$messages['fileuploaderror'] = 'Upload mislykkedes.';
$messages['filesizeerror'] = 'Den uploadede fil overskrider den maksimalt tilladte størrelse på $size.';
$messages['msgsizeerror'] = 'Filen kunne ikke vedhæftes. Størrelsen på en meddelelse må ikke overstige $size.';
$messages['copysuccess'] = '$nr kontakter blev kopieret.';
$messages['movesuccess'] = '$nr kontakter blev flyttet.';
$messages['copyerror'] = 'Kunne ikke kopiere nogen kontakter.';
$messages['moveerror'] = 'Kunne ikke flytte nogen kontakter.';
$messages['sourceisreadonly'] = 'Denne adressekilde er kun til læsning.';
$messages['errorsavingcontact'] = 'Kunne ikke gemme kontaktadressen.';
$messages['movingmessage'] = 'Flytter besked(er)...';
$messages['copyingmessage'] = 'Kopierer besked(er)...';
$messages['copyingcontact'] = 'Kopierer kontakt(er)...';
$messages['movingcontact'] = 'Flytter kontakt(er)...';
$messages['deletingmessage'] = 'Sletter besked(er)...';
$messages['markingmessage'] = 'Markerer besked(er)...';
$messages['addingmember'] = 'Føjer kontakt(er) til gruppen...';
$messages['removingmember'] = 'Fjerner kontakt(er) fra gruppen...';
$messages['receiptsent'] = 'Kvittering for læsning blev sendt.';
$messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes.';
$messages['deleteidentityconfirm'] = 'Vil du virkelig slette denne identitet?';
$messages['nodeletelastidentity'] = 'Du kan ikke slette denne identitet, da det er den eneste der er tilbage.';
$messages['forbiddencharacter'] = 'Mappenavnet indeholder et ugyldigt tegn.';
$messages['selectimportfile'] = 'Vælg venligst den fil der skal overføres.';
$messages['addresswriterror'] = 'Der kan ikke skrives i den valgte adressebog.';
$messages['contactaddedtogroup'] = 'Kontakterne blev tilføjet denne gruppe';
$messages['contactremovedfromgroup'] = 'Kontakterne blev fjernet fra denne gruppe';
$messages['nogroupassignmentschanged'] = 'Ingen gruppetildelinger ændret.';
$messages['importwait'] = 'Importerer, vent venligst...';
$messages['importformaterror'] = 'Importering mislykkedes! Den uploadede fil er ikke en gyldig import-datafil.';
$messages['importconfirm'] = '<b>Importerede $inserted kontakter</b>';
$messages['importconfirmskipped'] = '<b>Sprang over $skipped eksisterende kontakter</b>';
$messages['importmessagesuccess'] = 'Importerede $nr beskeder';
$messages['importmessageerror'] = 'Import mislykkedes! Den uploadede fil er ikke en gyldig besked- eller mailbox-fil.';
$messages['opnotpermitted'] = 'Handling ikke tilladt!';
$messages['nofromaddress'] = 'Der mangler en e-mailadresse i den valgte identitet.';
$messages['editorwarning'] = 'Al formatering af teksten kan forsvinde, hvis der skiftes editor. Vil du fortsætte?';
$messages['httpreceivedencrypterror'] = 'Der er opstået en fatal konfigurationsfejl. Kontakt venligst din system-administrator med det samme. <b>Din besked kunne ikke afsendes.</b>';
$messages['smtpconnerror'] = 'SMTP-fejl ($code): Forbindelsen til serveren afbrudt';
$messages['smtpautherror'] = 'SMTP-fejl ($code): Autenticering fejlede';
$messages['smtpfromerror'] = 'SMTP-fejl ($code): Kunne ikke indstille afsender "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP-fejl ($code): Kunne ikke tilføje modtageren "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP-fejl: Kan ikke fortolke listen af modtagere.';
$messages['smtpsizeerror'] = 'SMTP fejl: Beskedens størrelse overskrider serverenes grænse ($limit)';
$messages['smtperror'] = 'SMTP-fejl: $msg';
$messages['emailformaterror'] = 'Ugyldig e-mailadresse: $email';
$messages['toomanyrecipients'] = 'For mange modtagere. Reducer antallet af modtagere til $max.';
$messages['maxgroupmembersreached'] = 'Antallet af gruppemedlemmer overstiger det tilladte maksimum på $max.';
$messages['internalerror'] = 'En intern fejl opstod. Prøv venligst igen.';
$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er).';
$messages['contactdeleted'] = 'Kontakt(er) slettet.';
$messages['contactrestoreerror'] = 'Kunne ikke gendanne slettede kontakt(er).';
$messages['contactrestored'] = 'Kontakt(er) gendannet.';
$messages['groupdeleted'] = 'Gruppen blev slettet.';
$messages['grouprenamed'] = 'Gruppen blev omdøbt.';
$messages['groupcreated'] = 'Gruppen blev oprettet.';
$messages['savedsearchdeleted'] = 'Gemt søgning slettet.';
$messages['savedsearchdeleteerror'] = 'Kunne ikke slette gemt søgning.';
$messages['savedsearchcreated'] = 'Gemt søgning oprettet.';
$messages['savedsearchcreateerror'] = 'Kunne ikke oprette gemt søgning.';
$messages['messagedeleted'] = 'Besked(er) blev slettet.';
$messages['messagemoved'] = 'Besked(er) blev flyttet.';
$messages['messagemovedtotrash'] = 'Meddelelser(ne) blev flyttet til skraldespanden.';
$messages['messagecopied'] = 'Besked(er) kopieret.';
$messages['messagemarked'] = 'Besked(er) markeret.';
$messages['autocompletechars'] = 'Du skal indtaste mindst $min tegn for at benytte autoopslag.';
$messages['autocompletemore'] = 'Flere emner fundet. Indtast flere tegn.';
$messages['namecannotbeempty'] = 'Navn må ikke være tomt.';
$messages['nametoolong'] = 'Navnet er for langt.';
$messages['namedotforbidden'] = 'Mappenavnet kan ikke starte med et punktum.';
$messages['folderupdated'] = 'Mappen er opdateret.';
$messages['foldercreated'] = 'Mappen er oprettet.';
$messages['invalidimageformat'] = 'Ikke et gyldigt billedformat.';
$messages['mispellingsfound'] = 'Der er fundet stavefejl i beskeden.';
$messages['parentnotwritable'] = 'Kan ikke oprette/flytte mappe ind i valgt mappe. Ingen adgangsrettigheder.';
$messages['messagetoobig'] = 'Denne del af beskeden er for stor til at blive behandlet.';
$messages['noscriptwarning'] = 'Advarsel: Denne webmailclient kræver Javascript! For at kunne bruge den slå venligst Javascripts til i din browserindstillinger.';
$messages['messageissent'] = 'Beskeden er allerede sendt, men ikke gemt endnu. Vil du gemme den nu?';
$messages['errnotfound'] = 'Filen blev ikke fundet';
$messages['errnotfoundexplain'] = 'Den efterspurgte ressource blev ikke fundet!';
$messages['errfailedrequest'] = 'Efterspørgslen fejlede';
$messages['errauthorizationfailed'] = 'Godkendelse fejlede';
$messages['errunauthorizedexplain'] = 'Kunne ikke verificere, at du har ret til adgang til denne service!';
$messages['errcontactserveradmin'] = 'Kontakt venligst din serveradministrator.';
$messages['clicktoresumesession'] = 'Klik her for at genoptage din tidligere session';
$messages['clicktocompose'] = 'Klik her for at skrive en ny besked';
$messages['siginserted'] = 'Signaturen er indsat med succes.';
$messages['responseinserted'] = 'Svar indsat.';
$messages['noresponsesavailable'] = 'Ingen tilgængelige svar';
$messages['listempty'] = 'Mappen er tom.';
$messages['listusebutton'] = 'Brug knappen Opret til at tilføje en ny post.';
localization/es_AR/timezones.inc000064400000047361151727150600012754 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'África';
$labels['tz:africa:abidjan'] = 'Abiyán';
$labels['tz:africa:accra'] = 'Acra';
$labels['tz:africa:addis_ababa'] = 'Adís Abeba';
$labels['tz:africa:algiers'] = 'Argel';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bisáu';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Buyumbura';
$labels['tz:africa:cairo'] = 'Cairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakri';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es-Salam';
$labels['tz:africa:djibouti'] = 'Yibuti';
$labels['tz:africa:douala'] = 'Duala';
$labels['tz:africa:el_aaiun'] = 'El Aaiún';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburgo';
$labels['tz:africa:juba'] = 'Yuba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Jartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinsasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadiscio';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Yamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Uagadugú';
$labels['tz:africa:porto-novo'] = 'Porto Novo';
$labels['tz:africa:sao_tome'] = 'Santo Tomé';
$labels['tz:africa:tripoli'] = 'Trípoli';
$labels['tz:africa:tunis'] = 'Túnez';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'América';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaína';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Córdoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Río Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucumán';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahía';
$labels['tz:america:bahia_banderas'] = 'Bahía de Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belém';
$labels['tz:america:belize'] = 'Belice';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogotá';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancún';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayena';
$labels['tz:america:cayman'] = 'Caimán';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiabá';
$labels['tz:america:curacao'] = 'Curazao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepé';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Nuuk';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Gran Turca';
$labels['tz:america:grenada'] = 'Granada';
$labels['tz:america:guadeloupe'] = 'Guadalupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Habana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianápolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Ángeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceió';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaos';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinica';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlán';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Mérida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Ciudad de México';
$labels['tz:america:miquelon'] = 'Miquelón';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nasáu';
$labels['tz:america:new_york'] = 'Nueva York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Dakota del norte';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Centro';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panamá';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Puerto Príncipe';
$labels['tz:america:port_of_spain'] = 'Puerto de España';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarém';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Ittoqqortoormiit';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'San Bartolomé';
$labels['tz:america:st_johns'] = "San Juan de Terranova";
$labels['tz:america:st_kitts'] = 'Isla de San Cristóbal';
$labels['tz:america:st_lucia'] = 'Santa Lucía';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antártida';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Ártico';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asia';
$labels['tz:asia:aden'] = 'Adén';
$labels['tz:asia:almaty'] = 'Almatý';
$labels['tz:asia:amman'] = 'Ammán';
$labels['tz:asia:anadyr'] = 'Anadir';
$labels['tz:asia:aqtau'] = 'Aktau';
$labels['tz:asia:aqtobe'] = 'Aktobe';
$labels['tz:asia:ashgabat'] = 'Asjabad';
$labels['tz:asia:atyrau'] = 'Atirau';
$labels['tz:asia:baghdad'] = 'Bagdad';
$labels['tz:asia:bahrain'] = 'Bahrein';
$labels['tz:asia:baku'] = 'Bakú';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaúl';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Biskek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chitá';
$labels['tz:asia:choibalsan'] = 'Choybalsan';
$labels['tz:asia:colombo'] = 'Colombo';
$labels['tz:asia:damascus'] = 'Damasco';
$labels['tz:asia:dhaka'] = 'Daca';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubái';
$labels['tz:asia:dushanbe'] = 'Dusambé';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebrón';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Yakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jerusalén';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:kamchatka'] = 'Kamchatka';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:kathmandu'] = 'Katmandú';
$labels['tz:asia:khandyga'] = 'Jándyga';
$labels['tz:asia:kolkata'] = 'Calcuta';
$labels['tz:asia:krasnoyarsk'] = 'Krasnoyarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuwait';
$labels['tz:asia:macau'] = 'Macao';
$labels['tz:asia:magadan'] = 'Magadán';
$labels['tz:asia:makassar'] = 'Macasar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Mascate';
$labels['tz:asia:nicosia'] = 'Nicosia';
$labels['tz:asia:novokuznetsk'] = 'Novokuznetsk';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Nom Pen';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pyongyang';
$labels['tz:asia:qatar'] = 'Qatar';
$labels['tz:asia:qyzylorda'] = 'Kyzylorda';
$labels['tz:asia:riyadh'] = 'Riad';
$labels['tz:asia:sakhalin'] = 'Sajalín';
$labels['tz:asia:samarkand'] = 'Samarkanda';
$labels['tz:asia:seoul'] = 'Seúl';
$labels['tz:asia:shanghai'] = 'Shanghái';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolimsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Taskent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teherán';
$labels['tz:asia:thimphu'] = 'Timbu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulán Bator';
$labels['tz:asia:urumqi'] = 'Urumchi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientián';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Yakutsk';
$labels['tz:asia:yangon'] = 'Rangún';
$labels['tz:asia:yekaterinburg'] = 'Ekaterimburgo';
$labels['tz:asia:yerevan'] = 'Ereván';
$labels['tz:atlantic'] = 'Atlántico';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermudas';
$labels['tz:atlantic:canary'] = 'Islas Canarias';
$labels['tz:atlantic:cape_verde'] = 'Cabo Verde';
$labels['tz:atlantic:faroe'] = 'Feroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reikiavik';
$labels['tz:atlantic:south_georgia'] = 'Georgia del Sur';
$labels['tz:atlantic:st_helena'] = 'Santa Elena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Australia';
$labels['tz:australia:adelaide'] = 'Adelaida';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Europa';
$labels['tz:europe:amsterdam'] = 'Ámsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astracán';
$labels['tz:europe:athens'] = 'Atenas';
$labels['tz:europe:belgrade'] = 'Belgrado';
$labels['tz:europe:berlin'] = 'Berlín';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Bruselas';
$labels['tz:europe:bucharest'] = 'Bucarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:busingen'] = 'Büsingen';
$labels['tz:europe:chisinau'] = 'Chisináu';
$labels['tz:europe:copenhagen'] = 'Copenhague';
$labels['tz:europe:dublin'] = 'Dublín';
$labels['tz:europe:gibraltar'] = 'Gibraltar Español';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isla de Man';
$labels['tz:europe:istanbul'] = 'Estambul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrado';
$labels['tz:europe:kiev'] = 'Kiev';
$labels['tz:europe:kirov'] = 'Kírov';
$labels['tz:europe:lisbon'] = 'Lisboa';
$labels['tz:europe:ljubljana'] = 'Liubliana';
$labels['tz:europe:london'] = 'Londres';
$labels['tz:europe:luxembourg'] = 'Luxemburgo';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Mónaco';
$labels['tz:europe:moscow'] = 'Moscú';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'París';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praga';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Roma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Sarátov';
$labels['tz:europe:simferopol'] = 'Simferópol';
$labels['tz:europe:skopje'] = 'Skopie';
$labels['tz:europe:sofia'] = 'Sofía';
$labels['tz:europe:stockholm'] = 'Estocolmo';
$labels['tz:europe:tallinn'] = 'Tallin';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Uliánovsk';
$labels['tz:europe:uzhgorod'] = 'Úzhgorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Ciudad del Vaticano';
$labels['tz:europe:vienna'] = 'Viena';
$labels['tz:europe:vilnius'] = 'Vilna';
$labels['tz:europe:volgograd'] = 'Volgogrado';
$labels['tz:europe:warsaw'] = 'Varsovia';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporiyia';
$labels['tz:europe:zurich'] = 'Zúrich';
$labels['tz:indian'] = 'Indian';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:christmas'] = 'Navidad';
$labels['tz:indian:cocos'] = 'Cocos';
$labels['tz:indian:comoro'] = 'Comoras';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maldivas';
$labels['tz:indian:mauritius'] = 'Mauricio';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Reunión';
$labels['tz:pacific'] = 'Pacífico';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Pascua';
$labels['tz:pacific:efate'] = 'Éfaté';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fiyi';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galápagos';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulú';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Numea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palaos';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Puerto Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipán';
$labels['tz:pacific:tahiti'] = 'Tahití';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/es_AR/labels.inc000064400000104222151727150600012167 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Bienvenido a $product';
$labels['username'] = 'Nombre de usuario';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entrar';
$labels['oauthlogin'] = 'Iniciar sesión con $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Cerrar sesión';
$labels['mail'] = 'Correo';
$labels['settings'] = 'Configuración';
$labels['addressbook'] = 'Contactos';
$labels['darkmode'] = 'Modo oscuro';
$labels['lightmode'] = 'Modo claro';
$labels['inbox'] = 'Entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'Basura';
$labels['show_real_foldernames'] = 'Mostrar nombres reales para carpetas especiales';
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['sender'] = 'Remitente';
$labels['to'] = 'Destinatario';
$labels['cc'] = 'Copia';
$labels['bcc'] = 'Cco';
$labels['replyto'] = 'Responder a';
$labels['followupto'] = 'Seguimiento-a';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Leer estado';
$labels['listoptions'] = 'Listar opciones...';
$labels['listoptionstitle'] = 'Listar opciones';
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
$labels['threadsfromto'] = '$from a $to de $count conversaciones';
$labels['messagenrof'] = 'Mensaje $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a...';
$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrar esto siempre';
$labels['filename'] = 'Nombre del archivo';
$labels['filesize'] = 'Tamaño del archivo';
$labels['addtoaddressbook'] = 'Agregar a contactos';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
$labels['wed'] = 'Mié';
$labels['thu'] = 'Jue';
$labels['fri'] = 'Vie';
$labels['sat'] = 'Sáb';
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Lunes';
$labels['tuesday'] = 'Martes';
$labels['wednesday'] = 'Miércoles';
$labels['thursday'] = 'Jueves';
$labels['friday'] = 'Viernes';
$labels['saturday'] = 'Sábado';
$labels['jan'] = 'Ene';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Abr';
$labels['may'] = 'May';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Ago';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dic';
$labels['longjan'] = 'Enero';
$labels['longfeb'] = 'Febrero';
$labels['longmar'] = 'Marzo';
$labels['longapr'] = 'Abril';
$labels['longmay'] = 'Mayo';
$labels['longjun'] = 'Junio';
$labels['longjul'] = 'Julio';
$labels['longaug'] = 'Agosto';
$labels['longsep'] = 'Septiembre';
$labels['longoct'] = 'Octubre';
$labels['longnov'] = 'Noviembre';
$labels['longdec'] = 'Diciembre';
$labels['today'] = 'Hoy';
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Revisar si hay nuevos mensajes';
$labels['compose'] = 'Redactar';
$labels['writenewmessage'] = 'Crear nuevo mensaje';
$labels['reply'] = 'Responder';
$labels['replytomessage'] = 'Responder mensaje';
$labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder a lista';
$labels['forward'] = 'Reenviar';
$labels['forwardinline'] = 'Reenviar en linea';
$labels['forwardattachment'] = 'Reenviar como adjunto';
$labels['forwardmessage'] = 'Reenviar mensaje';
$labels['bouncemsg'] = 'Volver a enviar (rebote)';
$labels['bounce'] = 'Volver a enviar';
$labels['deletemessage'] = 'Eliminar mensaje';
$labels['movemessagetotrash'] = 'Mover mensaje a la papelera';
$labels['printmessage'] = 'Imprimir este mensaje';
$labels['previousmessage'] = 'Mostrar mensaje anterior';
$labels['firstmessage'] = 'Mostrar primer mensaje';
$labels['nextmessage'] = 'Mostrar siguente mensaje';
$labels['lastmessage'] = 'Mostrar último mensaje';
$labels['backtolist'] = 'Volver a la lista de mensajes';
$labels['viewsource'] = 'Mostrar código';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar mensajes';
$labels['markread'] = 'Como leído';
$labels['markunread'] = 'Como no leído';
$labels['markflagged'] = 'Como marcado';
$labels['markunflagged'] = 'Como no marcado';
$labels['markundeleted'] = 'Como no eliminado';
$labels['moreactions'] = 'Mas acciones...';
$labels['markallread'] = 'Marcar todos como leídos';
$labels['folders-cur'] = 'Solo carpetas seleccionadas';
$labels['folders-sub'] = 'La carpeta seleccionada y sus subcarpetas';
$labels['folders-all'] = 'Todas las carpetas';
$labels['more'] = 'Más';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opciones';
$labels['composeoptions'] = 'Opciones de composición';
$labels['optionsandattachments'] = 'Opciones y adjuntos';
$labels['actions'] = 'Acciones';
$labels['first'] = 'Primero';
$labels['last'] = 'Último';
$labels['previous'] = 'Anterior';
$labels['next'] = 'Siguiente';
$labels['select'] = 'Seleccionar';
$labels['selection'] = 'Selección';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
$labels['currpage'] = 'Página actual';
$labels['isread'] = 'Leído';
$labels['unread'] = 'Sin leer';
$labels['flagged'] = 'Marcado';
$labels['unflagged'] = 'No marcado';
$labels['unanswered'] = 'Sin respuesta';
$labels['withattachment'] = 'Con adjunto';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
$labels['replied'] = 'Respondido';
$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
$labels['threads'] = 'Conversaciones';
$labels['expand-all'] = 'Expandir Todos';
$labels['expand-unread'] = 'Expandir No Leidos';
$labels['collapse-all'] = 'Colapsar Todos';
$labels['threaded'] = 'Como conversaciones';
$labels['showunread'] = 'Mostrar mensajes no leídos';
$labels['autoexpand_threads'] = 'Expandir mensajes en conversación';
$labels['do_expand'] = 'todas las conversaciones';
$labels['expand_only_unread'] = 'solo con mensajes no leídos';
$labels['fromto'] = 'De/A';
$labels['flag'] = 'Marca';
$labels['attachment'] = 'Adjunto';
$labels['nonesort'] = 'Ninguno';
$labels['sentdate'] = 'Fecha de Enviado';
$labels['arrival'] = 'Fecha de Recepción';
$labels['asc'] = 'Ascendente';
$labels['desc'] = 'Descendente';
$labels['listcolumns'] = 'Listar columnas';
$labels['listsorting'] = 'Ordenar por';
$labels['listorder'] = 'Ordenado por';
$labels['listmode'] = 'Modo vista en lista';
$labels['lmode'] = 'Modo de lista';
$labels['layout'] = 'Disposición';
$labels['layoutwidescreen'] = 'Pantalla ancha';
$labels['layoutdesktop'] = 'Escritorio';
$labels['layoutlist'] = 'Lista';
$labels['layoutwidescreendesc'] = 'Pantalla ancha (vista de 3 columas)';
$labels['layoutdesktopdesc'] = 'Escritorio (lista ancha y previsualización de mensajes inferior)';
$labels['layoutlistdesc'] = 'Lista (sin previsualización de mensajes)';
$labels['folderactions'] = 'Acciones de carpeta...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensajes';
$labels['mailimportdesc'] = 'Podés subir correo usando archivos en formato <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> o <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Se pueden comprimir múltiples archivos como zip.';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'sin límite';
$labels['quotatype'] = 'Tipo de cuota';
$labels['quotatotal'] = 'Límite';
$labels['quotaused'] = 'Usado';
$labels['quotastorage'] = 'Espacio de disco';
$labels['quotamessage'] = 'Cantidad de mensajes';
$labels['shortheaderdate'] = 'El $date';
$labels['shortheaderto'] = 'Para $to el $date';
$labels['shortheaderfrom'] = 'De $from el $date';
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['searchplaceholder'] = 'Buscar...';
$labels['resetsearch'] = 'Restablecer la búsqueda';
$labels['searchmod'] = 'Opciones de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
$labels['body'] = 'Cuerpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nombre';
$labels['searchscope'] = 'Alcance';
$labels['currentfolder'] = 'Carpeta actual';
$labels['subfolders'] = 'Este y subcarpetas';
$labels['allfolders'] = 'Todas las carpetas';
$labels['searchinterval-1W'] = 'de más de una semana';
$labels['searchinterval-1M'] = 'de más de un mes';
$labels['searchinterval-1Y'] = 'de más de un año';
$labels['searchinterval1W'] = 'de menos de una semana';
$labels['searchinterval1M'] = 'de menos de un mes';
$labels['searchinterval1Y'] = 'de menos de un año';
$labels['openinextwin'] = 'Abrir en una ventana nueva';
$labels['emlsave'] = 'Guardar (.eml)';
$labels['changeformattext'] = 'Mostrar en formato de texto plano';
$labels['changeformathtml'] = 'Mostrar en formato HTML';
$labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar ahora el mensaje';
$labels['savemessage'] = 'Guardar como borrador';
$labels['addattachment'] = 'Añadir un archivo';
$labels['charset'] = 'Codificación';
$labels['editortype'] = 'Tipo de editor';
$labels['returnreceipt'] = 'Acuse de recibo';
$labels['dsn'] = 'Notificación de estado del envío';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje original';
$labels['selectimage'] = 'Seleccionar imagen';
$labels['addimage'] = 'Agregar imagen';
$labels['selectmedia'] = 'Seleccionar película';
$labels['addmedia'] = 'Agregar película';
$labels['encrypt'] = 'Encriptar';
$labels['encryptmessage'] = 'Encriptar mensaje';
$labels['encryptmessagemailvelope'] = 'Encriptar mensaje con Mailvelope';
$labels['importpubkeys'] = 'Importar claves públicas';
$labels['encryptedsendialog'] = 'Enviando mensaje encriptado';
$labels['encryptandsign'] = 'Encriptar y firmar';
$labels['keyid'] = 'ID de clave';
$labels['keylength'] = 'Bits';
$labels['keyexpired'] = 'Expirado';
$labels['keyrevoked'] = 'Revocado';
$labels['bccinstead'] = 'Usar Cco';
$labels['addheader'] = 'Agregar destinatario (encabezado)';
$labels['insert'] = 'Insertar';
$labels['insertcontact'] = 'Insertar contacto(s)';
$labels['recipient'] = 'Destinatario';
$labels['recipientedit'] = 'Editar destinatario';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Ortografía';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Continuar edición';
$labels['revertto'] = 'Revertir a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = '¿Restaurar mensaje?';
$labels['ignore'] = 'Ignorar';
$labels['responses'] = 'Respuestas';
$labels['insertresponse'] = 'Insertar una respuesta';
$labels['manageresponses'] = 'Administrar respuestas';
$labels['newresponse'] = 'Crear nueva respuesta';
$labels['addresponse'] = 'Agregar respuesta';
$labels['editresponse'] = 'Editar respuesta';
$labels['editresponses'] = 'Editar respuestas';
$labels['responsename'] = 'Nombre';
$labels['responsetext'] = 'Texto de la respuesta';
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Adjuntos';
$labels['upload'] = 'Agregar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
$labels['togglecomposeoptions'] = 'Activar opciones de composición';
$labels['attachmentrename'] = 'Renombrar adjunto';
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Bajísimo';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alto';
$labels['highest'] = 'Altísimo';
$labels['nosubject'] = '(sin asunto)';
$labels['showimages'] = 'Mostrar imágenes';
$labels['allow'] = 'Permitir';
$labels['alwaysshow'] = 'Siempre mostrar imágenes de $sender';
$labels['alwaysallow'] = 'Siempre permitir de $sender';
$labels['isdraft'] = 'Este es un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['details'] = 'Detalles';
$labels['summary'] = 'Resumen';
$labels['headers'] = 'Encabezados';
$labels['allheaders'] = 'Todos los encabezados...';
$labels['togglemoreheaders'] = 'Mostrar más encabezados del mensaje';
$labels['togglefullheaders'] = 'Activar encabezados del mensaje en bruto';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en';
$labels['dontsave'] = 'no guardar';
$labels['maxuploadsize'] = 'El tamaño maximo permitido por archivo es $size';
$labels['addcc'] = 'Agregar Cc';
$labels['addbcc'] = 'Agregar Cco';
$labels['addreplyto'] = 'Agregar respuesta a';
$labels['addfollowupto'] = 'Agregar seguimiento-a';
$labels['sendreceipt'] = '¿Enviar confirmación de lectura?';
$labels['mdnrequest'] = 'El remitente de este mensaje desea ser notificado cuando lo leas. ¿Querés enviar esta notificación?';
$labels['receiptread'] = 'Notificación de lectura';
$labels['yourmessage'] = 'Esta es una notificación de lectura de tu mensaje';
$labels['receiptnote'] = 'Nota: Esta notificación sólo significa que tu mensaje fue mostrado en el dispositivo del destinatario. No hay garantía de que el destinatario haya leído o entendido su contenido.';
$labels['sendalwaysto'] = 'Enviar siempre a $email';
$labels['zoomin'] = 'Agrandar';
$labels['zoomout'] = 'Achicar';
$labels['rotate'] = 'Rotar';
$labels['increaseimage'] = 'Aumentar tamaño de imagen';
$labels['decreaseimage'] = 'Disminuir tamaño de imagen';
$labels['rotateimage'] = 'Rotar imagen';
$labels['showtools'] = 'Mostrar herramientas de imagen';
$labels['hidetools'] = 'Ocultar herramientas de imagen';
$labels['name'] = 'Nombre completo';
$labels['firstname'] = 'Nombre';
$labels['surname'] = 'Apellido';
$labels['middlename'] = 'Segundo nombre';
$labels['nameprefix'] = 'Prefijo';
$labels['namesuffix'] = 'Sufijo';
$labels['nickname'] = 'Sobre nombre';
$labels['jobtitle'] = 'Puesto';
$labels['department'] = 'Departamento';
$labels['gender'] = 'Sexo';
$labels['maidenname'] = 'Apellido de soltera';
$labels['email'] = 'Correo';
$labels['phone'] = 'Teléfono';
$labels['address'] = 'Dirección';
$labels['street'] = 'Calle';
$labels['locality'] = 'Ciudad';
$labels['zipcode'] = 'Código Postal';
$labels['region'] = 'Estado/Provincia/Departamento';
$labels['country'] = 'País';
$labels['birthday'] = 'Cumpleaños';
$labels['anniversary'] = 'Aniversario';
$labels['website'] = 'Sitio Web';
$labels['instantmessenger'] = 'Mensajería Instantanea';
$labels['notes'] = 'Notas';
$labels['male'] = 'masculino';
$labels['female'] = 'femenino';
$labels['manager'] = 'Administrador';
$labels['assistant'] = 'Asistente';
$labels['spouse'] = 'Cónyuge';
$labels['allfields'] = 'Todos los campos';
$labels['search'] = 'Buscar';
$labels['searchresult'] = 'Resultado de búsqueda';
$labels['advsearch'] = 'Búsqueda Avanzada';
$labels['advanced'] = 'Avanzado';
$labels['other'] = 'Otro';
$labels['printcontact'] = 'Imprimir contacto';
$labels['qrcode'] = 'Código QR';
$labels['typehome'] = 'Particular';
$labels['typework'] = 'Laboral';
$labels['typeother'] = 'Otro';
$labels['typemobile'] = 'Móvil';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax Particular';
$labels['typeworkfax'] = 'Fax Laboral';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistente';
$labels['typehomepage'] = 'Página Personal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Agregar campo...';
$labels['addcontact'] = 'Agregar contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
$labels['contactnameandorg'] = 'Nombre y organización';
$labels['personalinfo'] = 'Información personal';
$labels['personal'] = 'Personal';
$labels['contactphoto'] = 'Foto de contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
$labels['delete'] = 'Eliminar';
$labels['discard'] = 'Descartar';
$labels['continue'] = 'Continuar';
$labels['ok'] = 'Aceptar';
$labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Agregar';
$labels['replacephoto'] = 'Reemplazar';
$labels['uploadphoto'] = 'Subir foto';
$labels['choosefile'] = 'Elegir archivo...';
$labels['choosefiles'] = 'Elegir archivos...';
$labels['browse'] = 'Explorar';
$labels['newcontact'] = 'Crear nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Enviar mensaje a';
$labels['contactsfromto'] = 'Contactos $from a $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todo';
$labels['exportsel'] = 'Exportar lo seleccionado';
$labels['exportvcards'] = 'Exportar contactos en format vCard';
$labels['newgroup'] = 'Crear nuevo grupo';
$labels['addgroup'] = 'Agregar grupo';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupassign'] = 'Asignar a grupo...';
$labels['groupremove'] = 'Eliminar del grupo';
$labels['groupremoveselected'] = 'Remover del grupo los contactos seleccionados';
$labels['uponelevel'] = 'Subir un nivel';
$labels['previouspage'] = 'Mostrar grupo anterior';
$labels['firstpage'] = 'Mostrar primer grupo';
$labels['nextpage'] = 'Mostrar siguiente grupo';
$labels['lastpage'] = 'Mostrar último grupo';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Listar miembros del grupo';
$labels['personaladrbook'] = 'Direcciones personales';
$labels['searchsave'] = 'Guardar búsqueda';
$labels['searchdelete'] = 'Eliminar búsqueda';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar desde archivo';
$labels['importtarget'] = 'Agregar contactos a';
$labels['importreplace'] = 'Reemplazar completamente la lista de contactos';
$labels['importgroups'] = 'Importar asignaciones de grupo';
$labels['importgroupsall'] = 'Todo (crea grupos si es necesario)';
$labels['importgroupsexisting'] = 'Sólo para grupos existentes';
$labels['importdesc'] = 'Podés subir contactos desde una libreta de direcciones existente.<br/>Actualmente es soportada la importación de direcciones desde los formatos <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> o CSV (valores separados por coma).';
$labels['importmapdesc'] = 'Confirme que la información de mapeado de campos mostrada abajo es correcta antes de proceder con la importación de datos del CSV (separado por comas).';
$labels['fieldnotmapped'] = 'Campo no mapeado (no importar)';
$labels['skipheader'] = 'No importar la primera línea (cabeceras)';
$labels['done'] = 'Hecho';
$labels['settingsfor'] = 'Ajustes para';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario';
$labels['editpreferences'] = 'Editar preferencias de usuario';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Administrar identidades';
$labels['newidentity'] = 'Crear nueva identidad';
$labels['addidentity'] = 'Agregar identidad';
$labels['editidentity'] = 'Editar identidad';
$labels['identityencryption'] = 'Encriptación';
$labels['preferhtml'] = 'Mostrar HTML';
$labels['defaultcharset'] = 'Juego de Caracteres predeterminados';
$labels['htmlmessage'] = 'Mensaje HTML';
$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Firma digital';
$labels['dateformat'] = 'Formato de fecha';
$labels['timeformat'] = 'Formato de hora';
$labels['prettydate'] = 'Fecha detallada';
$labels['setdefault'] = 'Establecer como predeterminada';
$labels['autodetect'] = 'Automático';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Zona horaria';
$labels['pagesize'] = 'Filas por página';
$labels['signature'] = 'Firma';
$labels['dstactive'] = 'Cambio de horario';
$labels['showinextwin'] = 'Abrir mensaje en nueva ventana';
$labels['composeextwin'] = 'Redactar en nueva ventana';
$labels['htmleditor'] = 'Componer mensaje en HTML';
$labels['htmlonreply'] = 'al responder un mensaje HTML';
$labels['htmlonreplyandforward'] = 'al reenviar o responder un mensaje HTML';
$labels['htmlsignature'] = 'Firma HTML';
$labels['showemail'] = 'Mostrar dirección de correo electrónico junto al nombre a mostrar';
$labels['previewpane'] = 'Mostrar vista preliminar';
$labels['skin'] = 'Apariencia de la interfaz';
$labels['logoutclear'] = 'Vaciar papelera al cerrar sesión';
$labels['logoutcompact'] = 'Compactar la bandeja de entrada al cerrar sesión';
$labels['uisettings'] = 'Interfaz de usuario';
$labels['serversettings'] = 'Configuración del servidor';
$labels['mailboxview'] = 'Vista de buzón';
$labels['mdnrequests'] = 'Notificaciones de envío';
$labels['askuser'] = 'preguntame';
$labels['autosend'] = 'enviar acuse de recibo';
$labels['autosendknown'] = 'enviar acuse de recibo a mis contactos, sino preguntarme';
$labels['autosendknownignore'] = 'enviar acuse de recibo a mis contactos, sino ignorar';
$labels['autosendtrusted'] = 'Enviar la confirmación de recepción a mis remitentes de confianza, para el resto preguntarme.';
$labels['autosendtrustedignore'] = 'Enviar la confirmación de recepción a mis remitentes de confianza, para el resto ignorar.';
$labels['ignorerequest'] = 'Ignorar solicitud';
$labels['readwhendeleted'] = 'Marcar el mensaje como leído al borrarlo';
$labels['flagfordeletion'] = 'Marcar el mensaje para borrarse en vez de borrarlo';
$labels['skipdeleted'] = 'No mostrar mensajes eliminados';
$labels['deletealways'] = 'Cuando no se pueda mover un mensaje a la papelera, eliminarlo';
$labels['deletejunk'] = 'Eliminar directamente mensajes en No deseado';
$labels['showremoteimages'] = 'Mostrar imágenes remotas';
$labels['allowremoteresources'] = 'Permitir contenido remoto (imágenes, estilos)';
$labels['fromknownsenders'] = 'de remitentes conocidos';
$labels['fromtrustedsenders'] = 'de remitentes de confianza';
$labels['frommycontacts'] = 'de mis contactos';
$labels['always'] = 'siempre';
$labels['alwaysbutplain'] = 'siempre, excepto al responder un mensaje en texto plano';
$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
$labels['refreshinterval'] = 'Actualizar (verificar por nuevos mensajes, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'inmediatamente';
$labels['messagesdisplaying'] = 'Vista de mensajes';
$labels['messagescomposition'] = 'Composición de mensajes';
$labels['mimeparamfolding'] = 'Nombres de adjuntos';
$labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (Otro)';
$labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bit';
$labels['savelocalstorage'] = "Guardar en el almacenamiento local del navegador (temporalmente)";
$labels['advancedoptions'] = 'Opciones Avanzadas';
$labels['toggleadvancedoptions'] = 'Activar opciones avanzadas';
$labels['focusonnewmessage'] = 'Traer al frente la ventana del navegador cuando haya nuevos mensajes';
$labels['checkallfolders'] = 'Verificar todas las carpetas por nuevos mensajes';
$labels['displaynext'] = 'Mostrar el siguiente elemento de la lista después de borrar o mover';
$labels['defaultfont'] = 'Fuente por defecto para mensajes HTML';
$labels['mainoptions'] = 'Opciones principales';
$labels['browseroptions'] = 'Opciones de navegador';
$labels['section'] = 'Selección';
$labels['maintenance'] = 'Mantenimiento';
$labels['newmessage'] = 'Nuevo mensaje';
$labels['signatureoptions'] = 'Opciones de firma';
$labels['whenreplying'] = 'Al responder';
$labels['replyempty'] = 'no citar el mensaje original';
$labels['replytopposting'] = 'iniciar el nuevo mensaje sobre el original';
$labels['replytoppostingnoindent'] = 'iniciar el nuevo mensaje sobre el original (sin sangría)';
$labels['replybottomposting'] = 'iniciar el nuevo mensaje debajo del original';
$labels['replyremovesignature'] = 'Al responder, eliminar la firma del mensaje original';
$labels['autoaddsignature'] = 'Agregar la firma automáticamente';
$labels['newmessageonly'] = 'nuevos mensajes solamente';
$labels['replyandforwardonly'] = 'respuestas o reenvios solamente';
$labels['insertsignature'] = 'Insertar firma';
$labels['sigbelow'] = 'Agregar la firma debajo del mensaje citado';
$labels['sigseparator'] = 'Forzar separador estándar en las firmas';
$labels['automarkread'] = 'Marcar mensajes como leídos';
$labels['afternseconds'] = 'despues de $n segundos';
$labels['reqmdn'] = 'Siempre solicitar acuse de recibo';
$labels['reqdsn'] = 'Siempre solicitar notificación de estado de envío';
$labels['replysamefolder'] = 'Colocar respuestas en la carpeta del mensaje siendo respondido';
$labels['defaultabook'] = 'Libreta de direcciones por defecto';
$labels['autocompletesingle'] = 'Omitir dirección de correo electrónico alternativo al autocompletar';
$labels['listnamedisplay'] = 'Listar contactos como';
$labels['contactformmode'] = 'Modo de formulario de contacto';
$labels['privatemode'] = 'Privado (Casa)';
$labels['businessmode'] = 'Empresa (Trabajo)';
$labels['collectedaddresses'] = 'Direcciones recolectadas';
$labels['collectedrecipients'] = 'Destinatarios recolectados';
$labels['collectedrecipientsopt'] = 'Almacena los destinatarios de correos electrónicos enviados en';
$labels['collectedsendersopt'] = 'Almacena los remitentes de confianza en';
$labels['trustedsenders'] = 'Remitentes de confianza';
$labels['spellcheckbeforesend'] = 'Verificar la ortografía antes de enviar un mensaje';
$labels['spellcheckoptions'] = 'Opciones del verificador de ortografía';
$labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
$labels['spellcheckignorenums'] = 'Ignorar palabras con números';
$labels['spellcheckignorecaps'] = 'Ignorar palabras con todas las letras en mayúscula';
$labels['addtodict'] = 'Agregar al diccionario';
$labels['mailtoprotohandler'] = 'Registrar protocolo para manejar enlaces mailto:';
$labels['standardwindows'] = 'Manejar emergentes como ventanas estándar';
$labels['forwardmode'] = 'Reenvío de mensajes';
$labels['inline'] = 'en línea';
$labels['asattachment'] = 'como adjunto';
$labels['replyallmode'] = 'Acción por defecto del botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder sólo a la lista de correos (si se encuentra)';
$labels['allmessages'] = 'todos los mensajes';
$labels['olderxdays'] = 'anterior a $x días';
$labels['folder'] = 'Carpeta';
$labels['folders'] = 'Carpetas';
$labels['foldername'] = 'Nombre de carpeta';
$labels['subscribed'] = 'Suscripta';
$labels['messagecount'] = 'Mensajes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear nueva carpeta';
$labels['managefolders'] = 'Administrar carpetas';
$labels['specialfolders'] = 'Carpetas Especiales';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades de carpeta';
$labels['parentfolder'] = 'Carpeta principal';
$labels['location'] = 'Ubicación';
$labels['info'] = 'Información';
$labels['getfoldersize'] = 'Clic para obtener el tamaño de la carpeta';
$labels['changesubscription'] = 'Clic para cambiar suscripción';
$labels['foldertype'] = 'Tipo de carpeta';
$labels['personalfolder'] = 'Carpeta privada';
$labels['otherfolder'] = 'Carpeta de otros usuarios';
$labels['sharedfolder'] = 'Carpeta pública';
$labels['findfolders'] = 'Buscar carpetas';
$labels['findcontacts'] = 'Buscar contactos';
$labels['findmail'] = 'Buscar mensajes de correo';
$labels['namespace.personal'] = 'Personal';
$labels['namespace.other'] = 'Otros usuarios';
$labels['namespace.shared'] = 'Compartido';
$labels['dualuselabel'] = 'Solo pueden contener';
$labels['dualusemail'] = 'mensajes';
$labels['dualusefolder'] = 'carpetas';
$labels['generate'] = 'Generar';
$labels['encryptioncreatekey'] = 'Crear un nuevo par de claves';
$labels['openmailvelopesettings'] = 'Abrir ajustes de Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Tenés $nr claves privadas coincidentes, guardadas en tu almacén de claves de Mailvelope:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Esta identidad del remitente aún no tiene una clave privada PGP almacenada en tu extensión Mailvelope. ¿Querés crear una para habilitar la mensajería cifrada?';
$labels['encryption'] = 'Encriptación';
$labels['mailvelopeoptions'] = 'Opciones de Mailvelope';
$labels['mailvelopemainkeyring'] = 'Usar el llavero de claves principal de Mailvelope';
$labels['mailvelopenotfound'] = 'La extensión Mailvelope no está habilitada/instalada en su navegador.';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orden ascendente';
$labels['sortdesc'] = 'Orden descendente';
$labels['undo'] = 'Deshacer';
$labels['installedplugins'] = 'Extensiones instaladas';
$labels['plugin'] = 'Extensión';
$labels['version'] = 'Versión';
$labels['source'] = 'Fuente';
$labels['destination'] = 'Destino';
$labels['license'] = 'Licencia';
$labels['support'] = 'Obtener soporte';
$labels['savedsearches'] = 'Búsquedas guardadas';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Europa Occidental';
$labels['easterneuropean'] = 'Europa del Este';
$labels['southeasterneuropean'] = 'Sudeste de Europa';
$labels['baltic'] = 'Báltico';
$labels['cyrillic'] = 'Cirílico';
$labels['arabic'] = 'Árabe';
$labels['greek'] = 'Griego';
$labels['hebrew'] = 'Hebreo';
$labels['turkish'] = 'Turco';
$labels['nordic'] = 'Nórdico';
$labels['thai'] = 'Tailandés';
$labels['celtic'] = 'Céltico';
$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
$labels['arialabeltopnav'] = 'Control de ventana';
$labels['arialabeltasknav'] = 'Tareas de aplicación';
$labels['arialabeltoolbar'] = 'Barra de herramientas de aplicación';
$labels['arialabellistnav'] = 'Navegación por listas';
$labels['arialabelactivetask'] = 'Tarea activa';
$labels['arialabelmessagessearchfilter'] = 'Filtro de listado de correo electrónico';
$labels['arialabelmailsearchform'] = 'Formulario de búsqueda de correo electrónico';
$labels['arialabelcontactsearchform'] = 'Formulario de búsqueda de contactos';
$labels['arialabelmailquicksearchbox'] = 'Ingreso de búsqueda de correo electrónico';
$labels['arialabelquicksearchbox'] = 'Ingreso de búsqueda';
$labels['arialabelfoldersearchfilter'] = 'Filtro de listado de carpetas';
$labels['arialabelfoldersearchform'] = 'Formulario de búsqueda de carpetas';
$labels['arialabelfolderlist'] = 'Selección de carpeta de correo electrónico';
$labels['arialabelmessagelist'] = 'Listado de mensajes de correo electrónico';
$labels['arialabelmailpreviewframe'] = 'Previsualización de mensaje';
$labels['arialabelmailboxmenu'] = 'Menú de acciones de carpeta';
$labels['arialabellistselectmenu'] = 'Menú de selección de lista';
$labels['arialabelthreadselectmenu'] = 'Menú de listado por hilo';
$labels['arialabelmessagelistoptions'] = 'Opciones de mostrado de mensajes y ordenamiento';
$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensaje';
$labels['arialabelmessagenav'] = 'Navegación de mensajes';
$labels['arialabelmessagebody'] = 'Cuerpo de mensaje';
$labels['arialabelmessageactions'] = 'Acciones de mensaje';
$labels['arialabelcontactquicksearch'] = 'Formulario de búsqueda de contactos';
$labels['arialabelcontactsearchbox'] = 'Ingreso de búsqueda de contactos';
$labels['arialabelmessageheaders'] = 'Encabezados de mensaje';
$labels['arialabelforwardingoptions'] = 'Opciones de reenvío';
$labels['arialabelreplyalloptions'] = 'Opciones de Responder a todos';
$labels['arialabelmoremessageactions'] = 'Más acciones de mensaje';
$labels['arialabelmorecontactactions'] = 'Más acciones de contacto';
$labels['arialabelmarkmessagesas'] = 'Marcar mensaje seleccionado como...';
$labels['arialabelcomposeoptions'] = 'Opciones de composición';
$labels['arialabelresponsesmenu'] = 'Menú de respuestas enlatadas';
$labels['arialabelattachmentuploadform'] = 'Formulario para subir adjuntos';
$labels['arialabelattachmentmenu'] = 'Opciones de adjuntos';
$labels['arialabelmailtomenu'] = 'Opciones de direcciones de correo';
$labels['arialabelattachmentpreview'] = 'Previsualización del adjunto';
$labels['ariasummarycomposecontacts'] = 'Listar los contactos y grupos para seleccionar como destinatarios';
$labels['arialabelcontactexportoptions'] = 'Opciones de exportación de mensajes';
$labels['arialabelabookgroupoptions'] = 'Opciones de libreta de direcciones/grupo';
$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidades';
$labels['arialabelresponseeditfrom'] = 'Formulario de edición de respuesta';
$labels['arialabelsearchterms'] = 'Términos de búsqueda';
$labels['arialabeldropactionmenu'] = 'Menú de acciones de arrastrar y soltar';
$labels['arialabelheadersmenu'] = 'Menú de agregado de destinatario (encabezado)';
$labels['arialabelimagetools'] = 'Herramientas de imagen';
$labels['helplistnavigation'] = 'Listar navegación por teclado';
$labels['helplistkeyboardnavigation'] = "Flechas arriba/abajo: Mueve el foco de la fila/selección.
Espacio: Selecciona la fila en foco.
Shift + arriba/abajo: Selecciona fila adicional arriba/abajo.
Ctrl + Espacio: Agrega fila seleccionada en foco para seleccionar/eliminar.";
$labels['helplistkeyboardnavmessages'] = "Flechas arriba/abajo: expande/colapsa el hilo del mensaje (sólo en modo de hilos).
Intro: Abre el mensaje seleccionado/en foco.
Supr: Mueve el mensaje seleccionado a la Papelera.";
$labels['helplistkeyboardnavcontacts'] = "Intro: Abre el contacto seleccionado/en foco";
localization/es_AR/messages.inc000064400000044742151727150600012546 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '¡Ha ocurrido un error!';
$messages['loginfailed']  = 'Contraseña o nombre de usuario incorrecto';
$messages['cookiesdisabled'] = 'Tu navegador no acepta cookies.';
$messages['sessionerror'] = 'Tu sesión no es válida o ha expirado.';
$messages['cookiesmismatch'] = 'Se encontró una discordancia de cookies. Por favor, borrá las cookies de tu navegador.';
$messages['storageerror'] = 'Error de conexión con el servidor IMAP.';
$messages['servererror'] = '¡Error en el servidor!';
$messages['servererrormsg'] = 'Error en servidor: $msg';
$messages['accountlocked'] = 'Demasiados errores de inicio de sesión. Intentá de nuevo más tarde.';
$messages['connerror'] = 'Error de conexión (No se pudo conectar con el servidor)';
$messages['dberror'] = '¡Error en base de datos!';
$messages['dbconnerror'] = '¡No fue posible conectar con la base de datos!';
$messages['windowopenerror'] = '¡La ventana emergente ha sido bloqueada!';
$messages['requesttimedout'] = 'Tiempo de espera agotado';
$messages['errorreadonly'] = 'No se pudo realizar la operación. La carpeta es de sólo lectura.';
$messages['errornoperm'] = 'No se pudo realizar la operación. Permiso denegado.';
$messages['erroroverquota'] = 'No se pudo realizar la operación. Espacio en disco insuficiente.';
$messages['erroroverquotadelete'] = 'Espacio en disco insuficiente. Usá SHIFT+DEL para eliminar un mensaje.';
$messages['invalidrequest'] = '¡Petición no válida! No se guardó ningún dato.';
$messages['invalidhost'] = 'Nombre de servidor no válido.';
$messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla.';
$messages['loggedout'] = 'Terminaste la sesión satisfactoriamente. ¡Hasta luego!';
$messages['mailboxempty'] = 'La casilla está vacía';
$messages['nomessages'] = 'No hay mensajes';
$messages['refreshing'] = 'Actualizando...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Subiendo archivo...';
$messages['attaching'] = 'Adjuntando archivo...';
$messages['uploadingmany'] = 'Subiendo archivos...';
$messages['loadingdata'] = 'Cargando datos...';
$messages['checkingmail'] = 'Verificando si hay nuevos mensajes...';
$messages['sendingmessage'] = 'Enviando mensaje...';
$messages['messagesent'] = 'Mensaje enviado correctamente';
$messages['savingmessage'] = 'Guardar mensaje...';
$messages['messagesaved'] = 'Mensaje guardado en borradores';
$messages['successfullysaved'] = 'Guardado correctamente';
$messages['savingresponse'] = 'Guardando texto de respuesta...';
$messages['deleteresponseconfirm'] = '¿Realmente deseás eliminar este texto de respuesta?';
$messages['nocontactselected'] = 'Todavía no seleccionaste un contacto.';
$messages['addedsuccessfully'] = 'Contacto agregado correctamente a la libreta de direcciones.';
$messages['contactexists'] = 'Ya existe un contacto con la misma dirección de correo electrónico.';
$messages['contactnameexists'] = 'Ya existe un contacto con el mismo nombre.';
$messages['blockedimages'] = 'Para proteger tu privacidad, las imágenes externas han sido bloqueadas en este mensaje.';
$messages['blockedresources'] = 'Para proteger tu privacidad los recursos remotos han sido bloqueados.';
$messages['suspiciousemail'] = 'Este mensaje contiene direcciones de correo electrónico sospechosas que pueden ser fraudulentas.';
$messages['bccemail'] = 'El o los mensajes reenviados contienen destinatarios confidenciales (Bcc)';
$messages['bouncehint'] = 'El mensaje será enviado sin ninguna modificación, ej. usando el cuerpo original, encabezados y destinatarios.';
$messages['encryptedmessage'] = 'Lo siento, este es un mensaje cifrado y no puede ser mostrado.';
$messages['externalmessagedecryption'] = 'Este es un mensaje cifrado y se puede descifrar con una extensión de tu navegador.';
$messages['nopubkeyfor'] = 'No se encontró una clave pública para $email';
$messages['nopubkeyforsender'] = 'No se encontró una clave pública para tu identidad remitente. ¿Querés encriptar el mensaje solo para los destinatarios?';
$messages['encryptnoattachments'] = 'Los adjuntos ya subidos no pueden ser encriptados. Volvé a agregarlos en el editor de encriptación.';
$messages['searchpubkeyservers'] = '¿Deseás buscar las claves faltantes en servidores de claves públicas?';
$messages['encryptpubkeysfound'] = 'Se han encontrado las siguientes claves públicas:';
$messages['keyservererror'] = 'Error al obtener la clave del servidor de claves.';
$messages['keyimportsuccess'] = 'La clave pública $key fue importada satisfactoriamente a tu almacén de claves.';
$messages['nocontactsfound'] = 'No se encontraron contactos.';
$messages['contactnotfound'] = 'No se encontró el contacto solicitado.';
$messages['contactsearchonly'] = 'Necesitás usar un formulario de búsqueda para ver contactos de la libreta de direcciones seleccionada.';
$messages['sendingfailed'] = 'Error al enviar mensaje.';
$messages['senttooquickly'] = 'Por favor, esperá $sec segundo(s) antes de enviar este mensaje.';
$messages['errorsavingsent'] = 'Ocurrió un error al guardar el mensaje enviado.';
$messages['errorsaving'] = 'Ocurrió un error al guardar.';
$messages['errormoving'] = 'No se pudo mover el/los mensaje(s)';
$messages['errorcopying'] = 'No se pudo copiar el/los mensaje(s).';
$messages['errordeleting'] = 'No se ha podido eliminar el/los mensaje(s).';
$messages['errormarking'] = 'No se puede marcar el/los mensaje(s).';
$messages['alerttitle'] = 'Atención';
$messages['confirmationtitle'] = 'Estás seguro...';
$messages['deletecontactconfirm']  = '¿Realmente quiere eliminar los contactos seleccionados?';
$messages['deletegroupconfirm']  = 'Realmente deseas eliminar el grupo seleccionado?';
$messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?';
$messages['deletefolderconfirm']  = '¿Realmente quiere eliminar esta carpeta?';
$messages['movefolderconfirm']  = '¿Realmente deseás mover esta carpeta?';
$messages['purgefolderconfirm']  = '¿Realmente quiere eliminar todos los mensajes de esta carpeta?';
$messages['contactdeleting'] = 'Eliminando contacto(s)...';
$messages['groupdeleting'] = 'Eliminando grupo...';
$messages['folderdeleting'] = 'Eliminando carpeta...';
$messages['foldermoving'] = 'Moviendo carpeta...';
$messages['foldersubscribing'] = 'Suscribiendo a carpeta...';
$messages['folderunsubscribing'] = 'Quitando suscripción a carpeta...';
$messages['formincomplete'] = 'No se han llenado todos los campos del formulario';
$messages['noemailwarning'] = 'Por favor, introduzca un e-mail válido';
$messages['nonamewarning']  = 'Por favor, introduzca su nombre';
$messages['nopagesizewarning'] = 'Por favor, introduzca un tamaño de página';
$messages['nosenderwarning'] = 'Por favor, Ingresá la dirección de correo electrónico del remitente.';
$messages['recipientsadded'] = 'Destinatario(s) agregado(s) satisfactoriamente.';
$messages['norecipientwarning'] = 'Por favor, introduzca al menos un destinatario';
$messages['disclosedrecipwarning'] = 'Todos los destinatarios verán las direcciones de correo electrónico de los demás. Para evitar esto y proteger su privacidad, podés utilizar el campo CCO.';
$messages['disclosedreciptitle'] = 'Demasiados destinatarios públicos';
$messages['nosubjectwarning']  = 'El campo "Asunto" esta vacío. ¿Desea completarlo en este momento?';
$messages['nosubjecttitle']  = 'Sin asunto';
$messages['nobodywarning'] = '¿Quiere enviar este mensaje sin texto?';
$messages['notsentwarning'] = 'El mensaje no se ha enviado y tiene cambios sin guardar. ¿Querés descartar los cambios?';
$messages['restoresavedcomposedata'] = 'Se ha encontrado un mensaje redactado anteriormente que no ha sido enviado.\n\nAsunto: $subject\nGuardado: $date\n\nDeseas recuperar este mensaje?';
$messages['nosearchname'] = 'Por favor, introduzca un nombre o la dirección de e-mail';
$messages['notuploadedwarning'] = 'Todavia no se subieron todos los archivos adjuntos. Por favor aguarde o cancele la subida.';
$messages['searchsuccessful'] = 'Se encontraron $nr mensajes';
$messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
$messages['searchnomatch'] = 'La búsqueda no obtuvo resultados';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Revisando...';
$messages['stillsearching'] = 'Búsqueda en progreso...';
$messages['nospellerrors'] = 'No se encontraron errores ortográficos';
$messages['folderdeleted'] = 'Carpeta eliminada exitosamente';
$messages['foldersubscribed'] = 'Suscripción a carpeta exitosa.';
$messages['folderunsubscribed'] = 'Suscripción a carpeta exitosamente eliminada.';
$messages['folderpurged'] = 'Carpeta vaciada exitosamente';
$messages['folderexpunged'] = 'Carpeta compactada exitosamente';
$messages['deletedsuccessfully'] = 'Eliminado exitosamente';
$messages['converting'] = 'Removiendo el formato del mensaje...';
$messages['messageopenerror'] = 'No puedo descargar el mensaje del servidor';
$messages['filelinkerror'] = 'Error al adjuntar archivo.';
$messages['fileuploaderror'] = 'Error al subir archivos';
$messages['csvfilemismatch'] = 'No es posible importar múltiples archivos CSV con campos diferentes.';
$messages['filesizeerror'] = 'El archivo excede el tamaño maximo ($size)';
$messages['filecounterror'] = 'Podés subir un máximo de $count archivos a la vez.';
$messages['msgsizeerror'] = 'Error al adjuntar un archivo. Se excedió el tamaño máximo ($size) del mensaje.';
$messages['msgsizeerrorfwd'] = 'Tamaño máximo del mensaje ($size) excedido. $num mensaje(s) no ha(n) sido ajuntado(s).';
$messages['copysuccess'] = '$nr contactos copiados exitosamente.';
$messages['movesuccess'] = '$nr contactos movidos exitosamente.';
$messages['copyerror'] = 'No se pudo copiar ningún contacto.';
$messages['moveerror'] = 'No se pudo mover ningún contacto.';
$messages['sourceisreadonly'] = 'Esta dirección es de sólo-lectura';
$messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto';
$messages['movingmessage'] = 'Moviendo mensaje...';
$messages['copyingmessage'] = 'Copiando mensaje...';
$messages['copyingcontact'] = 'Copiando contacto(s)...';
$messages['movingcontact'] = 'Moviendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando contacto(s)...';
$messages['markingmessage'] = 'Marcando mensaje(s)...';
$messages['addingmember'] = 'Agregando contacto(s) al grupo...';
$messages['removingmember'] = 'Quitando contacto(s) del grupo...';
$messages['receiptsent'] = 'La notificación de lectura se ha enviado con éxito.';
$messages['errorsendingreceipt'] = 'No se ha podido enviar la notificación de lectura.';
$messages['deleteidentityconfirm'] = 'Realmente querés eliminar esta identidad?';
$messages['nodeletelastidentity'] = 'No se puede borrar esta identidad puesto que es la última.';
$messages['forbiddencharacter'] = 'El nombre de la carpeta contiene un carácter prohibido';
$messages['selectimportfile'] = 'Por favor, seleccione el archivo a subir';
$messages['addresswriterror'] = 'La libreta de direcciones seleccionada es de solo-lectura';
$messages['contactaddedtogroup'] = 'Contactos agregados al grupo correctamente';
$messages['contactremovedfromgroup'] = 'Contactos eliminados del grupo correctamente';
$messages['nogroupassignmentschanged'] = 'Ninguna asiganción de grupo fue modificada.';
$messages['importwait'] = 'Importando, aguarde por favor...';
$messages['importformaterror'] = 'Importación fallida! El archivo subido no es un archivo de importación de datos válido.';
$messages['importconfirm'] = '<b>Se importaron $inserted contactos correctamente. $skipped ya existentes fueron ignorados</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Se ignoraron $skipped entradas ya existentes</b>';
$messages['importmessagesuccess'] = '$nr mensajes importados exitosamente';
$messages['importmessageerror'] = 'Importación fallida! El archivo subido no es un mensaje o archivo mailbox válido';
$messages['opnotpermitted'] = 'Operación no permitida!';
$messages['nofromaddress'] = 'A la identidad seleccionada le falta la dirección de correo electrónico.';
$messages['editorwarning'] = 'Cambiar el tipo de editor puede causar la pérdida del formato. Deseas continuar?';
$messages['httpreceivedencrypterror'] = 'Ha ocurrido un error fatal de configuración. Contactá inmediatamente al administrador. <b>Tu mensaje no pudo ser enviado.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): Conexión al servidor falló';
$messages['smtpautherror'] = 'Error SMTP ($code): Falló la autentificación';
$messages['smtpfromerror'] = 'Error SMTP ($code): No se pudo establecer el remitente "$from" ($msg)';
$messages['smtptoerror'] = 'Error SMTP ($code): No se puedo agregar el destinatario "$to" ($msg)';
$messages['smtprecipientserror'] = 'Error SMTP: No se pudo leer la lista de destinatarios';
$messages['smtputf8error'] = 'Error SMTP: El servidor no soporta Unicode en las direcciones de correo.';
$messages['smtpsizeerror'] = 'Error SMTP: El mensaje excede el límite del servidor ($limit)';
$messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'Dirección de correo electrónico no válida: $email';
$messages['toomanyrecipients'] = 'Demasiados destinatarios. Reducí la cantidad a un máximo de $max.';
$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max';
$messages['internalerror'] = 'Ocurrió un error interno. Por favor, intentá nuevamente.';
$messages['contactdelerror'] = 'No se pudo eliminar el/los contactos(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminado/s exitosamente.';
$messages['contactrestoreerror'] = 'No se pudo recuperar el/los contacto/s eliminado(s).';
$messages['contactrestored'] = 'Contacto(s) recuperado/s satisfactoriamente.';
$messages['groupdeleted'] = 'Grupo eliminado correctamente.';
$messages['grouprenamed'] = 'Grupo renombrado satisfactoriamente.';
$messages['groupcreated'] = 'Grupo creado satisfactoriamente.';
$messages['savedsearchdeleted'] = 'Búsqueda guardada se eliminó satisfactoriamente.';
$messages['savedsearchdeleteerror'] = 'No se pudo eliminar la búsqueda guardada.';
$messages['savedsearchcreated'] = 'Búsqueda guardada exitosamente.';
$messages['savedsearchcreateerror'] = 'No se pudo guardar la búsqueda.';
$messages['messagedeleted'] = 'Mensaje(s) eliminado/s satisfactoriamente.';
$messages['messagemoved'] = 'Mensaje(s) movidos correctamente.';
$messages['messagemovedtotrash'] = 'Mensaje(s) movido(s) a la Papelera satisfactoriamente.';
$messages['messagecopied'] = 'Mensaje(s) copiados correctamente.';
$messages['messagemarked'] = 'Mensaje(s) marcados satisfactoriamente.';
$messages['autocompletechars'] = 'Ingresá por lo menos $min caracteres para autocompletar.';
$messages['autocompletemore'] = 'Se encontraron mas coincidencias. Por favor, escribí mas caracteres.';
$messages['namecannotbeempty'] = 'El nombre no puede estar vacio.';
$messages['nametoolong'] = 'El nombre es demasiado largo.';
$messages['namedotforbidden'] = 'El nombre de la carpeta no puede comenzar con un punto.';
$messages['folderupdated'] = 'Carpeta actualizada correctamente.';
$messages['foldercreated'] = 'Carpeta creada satisfactoriamente.';
$messages['invalidimageformat'] = 'No es un formato de imágen válido.';
$messages['mispellingsfound'] = 'Errores de ortografía encontrados en el mensaje.';
$messages['parentnotwritable'] = 'No se pudo crear/mover la carpeta dentro de la carpeta superior seleccionada. No tiene permiso para acceder a ella.';
$messages['messagetoobig'] = 'El mensaje es demasiado grande para ser procesado.';
$messages['attachmentvalidationerror'] = 'Este adjunto es sospechoso porque su tipo no coinciden con el tipo declarado en el mensaje. Si no confiás en el remitente no deberías abrir el mensaje en el navegador porque podría tener contenido malicioso.<br/><br/><em>Esperado: $expected; encontrado: $detected</em>';
$messages['noscriptwarning'] = 'Advertencia: Este servicio de webmail requiere Javascript! Para usarlo, por favor, habilite Javascript en las preferencia de tu navegador.';
$messages['messageissent'] = 'El mensaje se envió pero todavía no fue guardado. ¿Querés guardarlo ahora?';
$messages['errnotfound'] = 'Archivo no encontrado';
$messages['errnotfoundexplain'] = '¡No se encontró el recurso solicitado!';
$messages['errfailedrequest'] = 'Error en la solicitud';
$messages['errauthorizationfailed'] = 'Falló la autorización';
$messages['errunauthorizedexplain'] = '¡No pudimos verificar que estuvieses autorizado a acceder a este servicio!';
$messages['errrequestcheckfailed'] = 'Verificación de la solicitud fallida';
$messages['errcsrfprotectionexplain'] = "El acceso a este recurso está protegido contra CSRF.\nSi ves esto probablemente no cerrarste la sesión antes de salir de la aplicación web.\nSe necesita interacción humana para continuar.";
$messages['errcontactserveradmin'] = 'Por favor, contactate con el administrador del servidor.';
$messages['clicktoresumesession'] = 'Hacé clic acá para continuar la sesión previa';
$messages['errcomposesession'] = 'Error al componer la sesión';
$messages['errcomposesessionexplain'] = 'No se encontró la composición de sesión solicitada.';
$messages['clicktocompose'] = 'Hacé clic aquí para componer un nuevo mensaje';
$messages['nosupporterror'] = 'Tu navegador no tiene soporte para esta función.';
$messages['siginserted'] = 'Firma insertada satisfactoriamente.';
$messages['responseinserted'] = 'Respuesta insertada satisfactoriamente.';
$messages['noresponsesavailable'] = 'No hay respuestas disponibles';
$messages['listempty'] = 'La lista está vacía.';
$messages['listusebutton'] = 'Usá el botón Crear para agregar un nuevo registro.';
$messages['keypaircreatesuccess'] = 'Un nuevo par de claves ha sido creado satisfactoriamente para $identity.';
$messages['emptyattachment'] = 'Este archivo adjunto parece estar vacío.<br>Por favor, consulte con la persona que lo envió.';
$messages['oauthloginfailed'] = 'Falló la autenticación mediante OAuth. Por favor, intentá nuevamente.';
localization/kn_IN/labels.inc000064400000022423151727150600012176 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product ಗೆ ಸ್ವಾಗತ ';
$labels['password'] = 'ರಹಸ್ಯ ಪದ';
$labels['addressbook'] = 'ವಿಳಾಸ ಪುಸ್ತಕ';
$labels['subject'] = 'ವಿಷಯ';
$labels['from'] = 'ಇಂದ';
$labels['to'] = 'ಗೆ';
$labels['date'] = 'ದಿನಾಂಕ ';
$labels['size'] = 'ಗಾತ್ರ';
$labels['priority'] = 'ಆದ್ಯತೆ';
$labels['organization'] = 'ಸಂಘಟನೆ';
$labels['showattachment'] = 'ತೋರಿಸು';
$labels['filename'] = 'ಫೈಲ್ ಹೆಸರು';
$labels['filesize'] = 'ಫೈಲ್ ಗಾತ್ರ';
$labels['addtoaddressbook'] = 'ಪುಸ್ತಕ ವಿಳಾಸ ಸೇರಿಸು ';
$labels['sun'] = 'ಭಾನು ';
$labels['mon'] = 'ಸೋಮ';
$labels['tue'] = 'ಮಂಗಳ';
$labels['wed'] = 'ಬುಧ';
$labels['thu'] = 'ಗುರು';
$labels['fri'] = 'ಶುಕ್ರ';
$labels['sat'] = 'ಶನಿ';
$labels['sunday'] = 'ಭಾನುವಾರ';
$labels['monday'] = 'ಸೋಮವಾರ';
$labels['tuesday'] = 'ಮಂಗಳವಾರ';
$labels['wednesday'] = 'ಬುಧವಾರ';
$labels['thursday'] = 'ಗುರುವಾರ';
$labels['friday'] = 'ಶುಕ್ರವಾರ';
$labels['saturday'] = 'ಶನಿವಾರ';
$labels['may'] = 'ಮೇ';
$labels['longjan'] = 'ಜನವರಿ';
$labels['longfeb'] = 'ಫೆಬ್ರುವರಿ';
$labels['longmar'] = 'ಮಾರ್ಚ್';
$labels['longapr'] = 'ಏಪ್ರಿಲ್';
$labels['longmay'] = 'ಮೇ';
$labels['longjun'] = 'ಜೂನ್';
$labels['longjul'] = 'ಜೂಲೈ';
$labels['longaug'] = 'ಆಗಸ್ಟ್ ';
$labels['longsep'] = 'ಸೆಪ್ಟೆಂಬರ';
$labels['longoct'] = 'ಅಕ್ಟೋಬರ';
$labels['longnov'] = 'ನವೆಂಬರ';
$labels['longdec'] = 'ಡಿಸೆಂಬರ';
$labels['today'] = 'ಇಂದು';
$labels['checkmail'] = 'ಹೊಸ ಸಂದೇಶಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸು';
$labels['writenewmessage'] = 'ಒಂದು ಹೊಸ ಸಂದೇಶವನ್ನು ರಚಿಸು';
$labels['reply'] = 'ಉತ್ತರಕೊಡು';
$labels['deletemessage'] = 'ಸಂದೇಶ ಅಳಿಸು';
$labels['printmessage'] = 'ಈ ಸಂದೇಶವನ್ನು ಮುದ್ರಿಸು';
$labels['previousmessage'] = 'ಹಿಂದಿನ ಸಂದೇಶವನ್ನು ತೋರಿಸು';
$labels['firstmessage'] = 'ಮೊದಲ ಸಂದೇಶವನ್ನು ತೋರಿಸು';
$labels['nextmessage'] = 'ಮುಂದಿನ ಸಂದೇಶವನ್ನು ತೋರಿಸು';
$labels['lastmessage'] = 'ಕೊನೆಯ ಸಂದೇಶವನ್ನು ತೋರಿಸು';
$labels['unlimited'] = 'ಅನಿಯಮಿತ';
$labels['namex'] = 'ಹೆಸರು';
$labels['send'] = 'ಕಳುಹಿಸು';
$labels['sendmessage'] = 'ಸಂದೇಶ ಕಳುಹಿಸು';
$labels['savemessage'] = 'ಡ್ರಾಫ್ಟ್ ಆಗಿ ಉಳಿಸಿ';
$labels['originalmessage'] = 'ಮೂಲ ಸಂದೇಶ';
$labels['responsename'] = 'ಹೆಸರು';
$labels['close'] = 'ಮುಚ್ಚು';
$labels['messageoptions'] = 'ಸಂದೇಶ ಆಯ್ಕೆಗಳು';
$labels['low'] = 'ಕಡಿಮೆ';
$labels['lowest'] = 'ಅತಿ ಕಡಿಮೆ';
$labels['normal'] = 'ಸಾಧಾರಣ';
$labels['high'] = 'ಜಾಸ್ತಿ';
$labels['highest'] = 'ಅತಿ ಜಾಸ್ತಿ ';
$labels['nosubject'] = '(ವಿಷಯ ಇಲ್ಲ)';
$labels['showimages'] = 'ಚಿತ್ರಗಳನ್ನು ತೋರಿಸು';
$labels['alwaysshow'] = '$sender ಇಂದ ಯಾವಾಗಲೂ ಚಿತ್ರಗಳನ್ನು ತೋರಿಸು';
$labels['htmltoggle'] = 'HTML';
$labels['dontsave'] = 'ಉಳಿಸಬೇಡ';
$labels['department'] = 'ವಿಭಾಗ';
$labels['gender'] = 'ಲಿಂಗ';
$labels['email'] = 'ಇಮೇಲ್';
$labels['phone'] = 'ದೂರವಾಣಿ';
$labels['address'] = 'ವಿಳಾಸ';
$labels['street'] = 'ರಸ್ತೆ';
$labels['locality'] = 'ನಗರ';
$labels['country'] = 'ದೇಶ';
$labels['birthday'] = 'ಜನ್ಮದಿನ';
$labels['manager'] = 'ವ್ಯವಸ್ಥಾಪಕ';
$labels['assistant'] = 'ಸಹಾಯಕ';
$labels['search'] = 'ಹುಡುಕು';
$labels['typehome'] = 'ಮನೆ';
$labels['typework'] = 'ಕೆಲಸ';
$labels['typecar'] = 'ಕಾರು';
$labels['typeassistant'] = 'ಸಹಾಯಕ';
$labels['editcontact'] = 'ಸಂಪರ್ಕ ತಿದ್ದು';
$labels['contacts'] = 'ಸಂಪರ್ಕಗಳು';
$labels['edit'] = 'ತಿದ್ದು';
$labels['addphoto'] = 'ಸೇರಿಸು';
$labels['replacephoto'] = 'ಬದಲಾಯಿಸು';
$labels['uploadphoto'] = 'ಫೋಟೋ ಅಪ್ಲೋಡ್ ಮಾಡು';
$labels['deletecontact'] = 'ಆಯ್ಕೆಮಾಡಿದ ಸಂಪರ್ಕಗಳನ್ನು ಅಳಿಸು';
$labels['print'] = 'ಮುದ್ರಿಸು';
$labels['previouspage'] = 'ಹಿಂದಿನ ಪುಟವನ್ನು ತೋರಿಸು';
$labels['firstpage'] = 'ಮೊದಲ ಪುಟ ತೋರಿಸು';
$labels['nextpage'] = 'ಮುಂದಿನ ಪುಟ ತೋರಿಸು';
$labels['lastpage'] = 'ಕೊನೆಯ ಪುಟ ತೋರಿಸು';
$labels['group'] = 'ಗುಂಪು';
$labels['groups'] = 'ಗುಂಪುಗಳು';
$labels['preferences'] = 'ಆಯ್ಕೆಗಳು';
$labels['userpreferences'] = 'ಬಳಕೆದಾರ ಆಯ್ಕೆಗಳು';
$labels['editpreferences'] = 'ಬಳಕೆದಾರನ  ಆಯ್ಕೆಗಳನನ್ನು ತಿದ್ದಿ';
$labels['preferhtml'] = 'HTML  ತೋರಿಸು';
$labels['htmlmessage'] = 'HTML ಸಂದೇಶ';
$labels['digitalsig'] = 'ಡಿಜಿಟಲ್ ಸಹಿ';
$labels['dateformat'] = 'ದಿನಾಂಕ ಸ್ವರೂಪ';
$labels['timeformat'] = 'ಸಮಯ ಸ್ವರೂಪ';
$labels['language'] = 'ಭಾಷೆ';
$labels['timezone'] = 'ಸಮಯ ವಲಯ';
$labels['pagesize'] = 'ಪ್ರತಿ ಪುಟಕ್ಕೆ ಸಾಲುಗಳು';
$labels['signature'] = 'ಸಹಿ';
$labels['showinextwin'] = 'ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ಸಂದೇಶ ತೆರೆಯಿರಿ';
$labels['composeextwin'] = 'ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ರಚಿಸು';
$labels['htmleditor'] = 'HTML ಸಂದೇಶಗಳನ್ನು ರಚಿಸು';
$labels['htmlsignature'] = 'HTML ಸಹಿ';
$labels['showemail'] = ' ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಹೆಸರಿನೊಂದಿಗೆ ತೋರಿಸು';
$labels['askuser'] = 'ನನನ್ನು  ಕೇಳು';
$labels['autosend'] = 'ರಸಿಟನ್ನು  ಕಳಿಸು';
$labels['skipdeleted'] = 'ಅಳಿಸಲಾಗಿರುವ  ಸಂದೇಶಗಳನ್ನು ತೋರಿಸಬೇಡ';
$labels['always'] = 'ಯಾವಾಗಲೂ';
$labels['everynminutes'] = 'ಪ್ರತಿ $n ನಿಮಿಷ (ಗಳು)';
$labels['refreshinterval'] = 'ರಿಫ್ರೆಶ್ (ಹೊಸ ಸಂದೇಶಗಳನ್ನು, ಇತ್ಯಾದಿಗಳನ್ನು ಪರಿಶೀಲಿಸು)';
$labels['immediately'] = 'ತತ್ಕ್ಷಣ ';
$labels['mainoptions'] = 'ಮುಖ್ಯ ಆಯ್ಕೆಗಳು';
$labels['section'] = 'ವಿಭಾಗ';
$labels['newmessage'] = 'ಹೊಸ ಸಂದೇಶ';
$labels['signatureoptions'] = 'ಸಹಿ ಆಯ್ಕೆಗಳು';
$labels['whenreplying'] = 'ಪ್ರತ್ಯುತ್ತರ ನೀಡುವಾಗ';
$labels['replyempty'] = 'ಮೂಲ ಸಂದೇಶವನ್ನು ಉಲ್ಲೇಖಿಸಬೇಡ';
$labels['replyremovesignature'] = ' ಪ್ರತ್ಯುತ್ತರ ನೀಡುವಾಗ ಸಂದೇಶದಿಂದ ಮೂಲಸಹಿಯನ್ನು ತೆಗೆದು ಹಾಕು';
$labels['newmessageonly'] = 'ಹೊಸ ಸಂದೇಶ ಮಾತ್ರ    ';
$labels['insertsignature'] = 'ಸಹಿ ಸೇರಿಸು';
$labels['afternseconds'] = '$n ಸೆಕೆಂಡುಗಳ ನಂತರ';
$labels['addtodict'] = 'ನಿಘಂಟಿಗೆ ಸೇರಿಸು';
$labels['messagecount'] = 'ಸಂದೇಶಗಳು';
$labels['create'] = 'ರಚಿಸು';
$labels['properties'] = 'ಗುಣಲಕ್ಷಣಗಳು';
$labels['location'] = 'ಸ್ಥಳ';
$labels['info'] = 'ಮಾಹಿತಿ';
$labels['source'] = 'ಮೂಲ';
$labels['license'] = 'ಪರವಾನಗಿ';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['english'] = 'ಇಂಗ್ಲೀಷ್';
$labels['westerneuropean'] = 'ಪಾಶ್ಚಾತ್ಯ ಯುರೋಪಿಯನ್';
$labels['easterneuropean'] = 'ಪೂರ್ವ ಯುರೋಪಿಯನ್';
localization/kn_IN/messages.inc000064400000011763151727150600012550 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['requesttimedout'] = 'ವಿನಂತಿ ಸಮಯ ಮೀರಿತು';
$messages['checkingmail'] = 'ಹೊಸ ಸಂದೇಶಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...';
$messages['sendingmessage'] = 'ಸಂದೇಶ ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ...';
$messages['messagesent'] = 'ಸಂದೇಶ ಯಶಸ್ವಿಯಾಗಿ ಕಳುಹಿಸಲಾಗಿದೆ.';
$messages['savingmessage'] = 'ಸಂದೇಶ ಉಳಿಸಲಾಗುತ್ತಿದೆ...';
$messages['successfullysaved'] = 'ಯಶಸ್ವಿಯಾಗಿ ಉಳಿಸಲಾಗಿದೆ.';
$messages['contactnameexists'] = 'ಅದೇ ಹೆಸರಿನ ಸಂಪರ್ಕ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ.';
$messages['nocontactsfound'] = 'ಯಾವುದೇ ಸಂಪರ್ಕಗಳು ಕಂಡುಬಂದಿಲ್ಲ.';
$messages['contactnotfound'] = 'ವಿನಂತಿಸಿದ ಸಂಪರ್ಕ ಕಂಡುಬಂದಿಲ್ಲ.';
$messages['sendingfailed'] = 'ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ವಿಫಲವಾಗಿದೆ.';
$messages['senttooquickly'] = 'ಈ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವ ಮೊದಲು, $sec ಸೆಕೆಂಡು (ಗಳು) ನಿರೀಕ್ಷಿಸಿ';
$messages['deletecontactconfirm']  = 'ನೀವು ನಿಜವಾಗಿಯೂ ಆಯ್ಕೆ ಸಂಪರ್ಕ (ಗಳನ್ನು) ಅಳಿಸಲು ಬಯಸುತ್ತೀರಾ?';
$messages['deletegroupconfirm']  = 'ನೀವು ನಿಜವಾಗಿಯೂ ಆಯ್ಕೆ ಗುಂಪು ಅಳಿಸಲು ಬಯಸುತ್ತೀರಾ?';
$messages['deletemessagesconfirm'] = 'ನೀವು ನಿಜವಾಗಿಯೂ ಆಯ್ದ ಸಂದೇಶ (ಗಳು ) ಅಳಿಸಲು ಬಯಸುತ್ತೀರಾ?';
$messages['contactdeleting'] = 'ಸಂಪರ್ಕ(ಗಳು ) ಅಳಿಸಲಾಗುತ್ತಿದೆ ...';
$messages['nonamewarning']  = 'ದಯವಿಟ್ಟು ಒಂದು ಹೆಸರನ್ನು ನಮೂದಿಸಿ.';
$messages['nopagesizewarning'] = 'ದಯವಿಟ್ಟು ಒಂದು ಪುಟದ ಗಾತ್ರ ನಮೂದಿಸಿ.';
$messages['norecipientwarning'] = 'ದಯವಿಟ್ಟು ಕನಿಷ್ಠ ಒಬ್ಬ ಸ್ವೀಕರಿಸುವವರನ್ನು  ನಮೂದಿಸಿ.';
$messages['nosubjectwarning']  = '"ವಿಷಯ" ಕ್ಷೇತ್ರ ಖಾಲಿಯಾಗಿದೆ. ನೀವು ಈಗ ಒಂದು ದಾಖಲಿಸಲು ಇಚ್ಛಿಸುವಿರ?';
$messages['nosearchname'] = 'ದಯವಿಟ್ಟು ಸಂಪರ್ಕ ಹೆಸರು ಅಥವಾ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ.';
$messages['contactsearchsuccessful'] = '$nr ಸಂಪರ್ಕಗಳು ಸಿಕ್ಕಿವೆ.';
$messages['searching'] = 'ಹುಡುಕಲಾಗುತ್ತಿದೆ...';
$messages['checking'] = 'ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...';
$messages['nospellerrors'] = 'ಕಾಗುಣಿತ ದೋಷಗಳನ್ನು ಕಂಡುಬಂದಿಲ್ಲ.';
$messages['deletedsuccessfully'] = 'ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ.';
$messages['fileuploaderror'] = 'ಫೈಲ್ ಅಪ್ಲೋಡ್ ವಿಫಲವಾಗಿದೆ.';
$messages['filesizeerror'] = 'ಅಪ್ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್ $size ಗರಿಷ್ಠ ಗಾತ್ರವನ್ನು ಮೀರಿದೆ';
$messages['errorsavingcontact'] = 'ಸಂಪರ್ಕ ವಿಳಾಸ ಉಳಿಸಲಾಗಲಿಲ್ಲ.';
$messages['selectimportfile'] = 'ಅಪ್ಲೋಡ್ ಮಾಡಲು ಫೈಲ್ ಆಯ್ಕೆ ಮಾಡಿ.';
$messages['autocompletechars'] = 'ಸ್ವಯಂಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಕನಿಷ್ಠ $min ಅಕ್ಷರಗಳನ್ನು ನಮೂದಿಸಿ.';
$messages['namecannotbeempty'] = 'ಹೆಸರು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.';
$messages['nametoolong'] = 'ಹೆಸರು ತುಂಬಾ ಉದ್ದವಾಗಿದೆ.';
$messages['mispellingsfound'] = 'ಸಂದೇಶದಲ್ಲಿ ಕಾಗುಣಿತ ದೋಷಗಳು ಪತ್ತೆಯಾಗಿವೆ.';
localization/uz/timezones.inc000064400000003050151727150600012404 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjon';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Aljir';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Qohira';
$labels['tz:africa:casablanca'] = 'Kasablanka';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dor us Salom';
$labels['tz:africa:djibouti'] = 'Jibuti';
localization/uz/labels.inc000064400000071422151727150600011641 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product ga xush kelibsiz!';
$labels['username'] = 'Foydalanuvchi nomi';
$labels['password'] = 'Parol';
$labels['server'] = 'Server';
$labels['login'] = 'Kirish';
$labels['menu'] = 'Menyu';
$labels['logout'] = 'Chiqish';
$labels['mail'] = 'Pochta';
$labels['settings'] = 'Sozlamalar';
$labels['addressbook'] = 'Kontaktlar';
$labels['inbox'] = 'Kirish xatlari';
$labels['drafts'] = 'Qoralama xatlar';
$labels['sent'] = 'Jo`natilgan xatlar';
$labels['trash'] = 'Savat';
$labels['junk'] = 'SPAM';
$labels['show_real_foldernames'] = 'Maxsus papkalarning haqiqiy nomini ko`rsatish';
$labels['subject'] = 'Mavzu';
$labels['from'] = 'Kimdan';
$labels['sender'] = 'Jo`natuvchi';
$labels['to'] = 'Kimga';
$labels['cc'] = 'Nusxasi';
$labels['bcc'] = 'Berkitilgan';
$labels['replyto'] = 'Javob berish';
$labels['followupto'] = 'Kuzatib borish';
$labels['date'] = 'Sana';
$labels['size'] = 'O`lchami';
$labels['priority'] = 'Imtiyoz';
$labels['organization'] = 'Tashkilot';
$labels['readstatus'] = 'O`qilganlik statusi';
$labels['listoptions'] = 'Ro`yxat sozlamalari...';
$labels['listoptionstitle'] = 'Xossalar ro\'yxati';
$labels['mailboxlist'] = 'Papkalar';
$labels['messagesfromto'] = '$count ta xat $from dan $to ga ';
$labels['threadsfromto'] = '$count ta muhokama $from dan $to ga ';
$labels['messagenrof'] = '$count dan $nr ta xat';
$labels['fromtoshort'] = '$count ta donadan $from dan– $to ga';
$labels['copy'] = 'Nusxa olish';
$labels['move'] = 'Ko`chirish';
$labels['moveto'] = '... ga ko`chirish';
$labels['copyto'] = '... ga nusxa olish';
$labels['download'] = 'Yuklash';
$labels['open'] = 'Ochish';
$labels['showattachment'] = 'Ko`rsatish';
$labels['showanyway'] = 'Shunday bo`lsada, ko`rsatish';
$labels['filename'] = 'Fayl nomi';
$labels['filesize'] = 'Fayl o`lchami';
$labels['addtoaddressbook'] = 'Kontaktlarga qo`shish';
$labels['sun'] = 'Yak';
$labels['mon'] = 'Du';
$labels['tue'] = 'Se';
$labels['wed'] = 'Chor';
$labels['thu'] = 'Pa';
$labels['fri'] = 'Ju';
$labels['sat'] = 'Sha';
$labels['sunday'] = 'Yakshanba';
$labels['monday'] = 'Dushanba';
$labels['tuesday'] = 'Seshanba';
$labels['wednesday'] = 'Chorshanba';
$labels['thursday'] = 'Payshanba';
$labels['friday'] = 'Juma';
$labels['saturday'] = 'Shanba';
$labels['jan'] = 'Yan';
$labels['feb'] = 'Fev';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'May';
$labels['jun'] = 'Iyun';
$labels['jul'] = 'Iyul';
$labels['aug'] = 'Avg';
$labels['sep'] = 'Sen';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Noy';
$labels['dec'] = 'Dek';
$labels['longjan'] = 'Yanvar';
$labels['longfeb'] = 'Fevral';
$labels['longmar'] = 'Mart';
$labels['longapr'] = 'Aprel';
$labels['longmay'] = 'May';
$labels['longjun'] = 'Iyun';
$labels['longjul'] = 'Iyul';
$labels['longaug'] = 'Avgust';
$labels['longsep'] = 'Sentyabr';
$labels['longoct'] = 'Oktyabr';
$labels['longnov'] = 'Noyabr';
$labels['longdec'] = 'Dekabr';
$labels['today'] = 'Bugun';
$labels['refresh'] = 'Yangilash';
$labels['checkmail'] = 'Pochtani yetkazish';
$labels['compose'] = 'Xat yozish';
$labels['writenewmessage'] = 'Yangi xat';
$labels['reply'] = 'Javob berish';
$labels['replytomessage'] = 'Javob berish';
$labels['replytoallmessage'] = 'Ro`yxat bo`yicha yoki jo`natuvchi va barcha qabul qiluvchilarga javob berish';
$labels['replyall'] = 'Hammaga javob berish';
$labels['replylist'] = 'Rassilka ro`yxatiga javob berish';
$labels['forward'] = 'Uzatib yuborish';
$labels['forwardinline'] = 'Xat tarkibida uzatib yuborish';
$labels['forwardattachment'] = 'Biriktirma sifatida yuborish';
$labels['forwardmessage'] = 'Uzatib yuborish';
$labels['bouncemsg'] = 'Qayta uzatish';
$labels['bounce'] = 'Qayta uzatish';
$labels['deletemessage'] = 'Savatga';
$labels['movemessagetotrash'] = 'Xatni savatga jo`natish';
$labels['printmessage'] = 'Chop etish';
$labels['previousmessage'] = 'Avvalgi xatni ko`rsatish';
$labels['firstmessage'] = 'Dastlabki xatni ko`rsatish';
$labels['nextmessage'] = 'Keyingi xatni ko`rsatish';
$labels['lastmessage'] = 'Oxirgi xatni ko`rsatish';
$labels['backtolist'] = 'Xatlar ro`yxatiga';
$labels['viewsource'] = 'Dastlabki matn';
$labels['mark'] = 'Belgilash';
$labels['markmessages'] = 'Xatni belgilash';
$labels['markread'] = 'O`qilgandek';
$labels['markunread'] = 'O`qilmagandek';
$labels['markflagged'] = 'Belgi o`rnatish';
$labels['markunflagged'] = 'Belgini olish';
$labels['moreactions'] = 'Qo`shimcha harakatlar...';
$labels['markallread'] = 'Barchasini o`qilgan deb belgilash';
$labels['folders-cur'] = 'Faqat belgilangan papka';
$labels['folders-sub'] = 'Belgilangan papka va uning tarkibidagi papkalar';
$labels['folders-all'] = 'Barcha papkalar';
$labels['more'] = 'Yana';
$labels['back'] = 'Orqaga';
$labels['options'] = 'Sozlamalar';
$labels['first'] = 'Birinchi';
$labels['last'] = 'Oxirgi';
$labels['previous'] = 'Avvalgi';
$labels['next'] = 'Keyingi';
$labels['select'] = 'Tanlash';
$labels['all'] = 'Barchasi';
$labels['none'] = 'Mavjud emas';
$labels['currpage'] = 'Mazkur sahifa';
$labels['isread'] = 'O`qilgan';
$labels['unread'] = 'O`qilmagan';
$labels['flagged'] = 'Belgilangan';
$labels['unflagged'] = 'Belgilanmagan';
$labels['unanswered'] = 'Javob berilmagan';
$labels['withattachment'] = 'Biriktirmaga ega';
$labels['deleted'] = 'O`chirilgan';
$labels['undeleted'] = 'O`chirilmagan';
$labels['replied'] = 'Javob berilgan';
$labels['forwarded'] = 'Jo`natilgan';
$labels['invert'] = 'Invertlash';
$labels['filter'] = 'Filtr';
$labels['list'] = 'Ro`yxat';
$labels['threads'] = 'Muhokama';
$labels['expand-all'] = 'Barchasini yoyish';
$labels['expand-unread'] = 'O`qilganlarni yoyish';
$labels['collapse-all'] = 'Barchasini berkitish';
$labels['threaded'] = 'Muhokama';
$labels['autoexpand_threads'] = 'Muhokamalarni yoyish';
$labels['do_expand'] = 'Barcha muhokamalar';
$labels['expand_only_unread'] = 'Faqat o`qilmagan xatlar bilan';
$labels['fromto'] = 'Jo`natuvchi/Qabul qiluvchi';
$labels['flag'] = 'Belgi';
$labels['attachment'] = 'Ilovalar';
$labels['nonesort'] = 'Mavjud emas';
$labels['sentdate'] = 'Jo`natish vaqti';
$labels['arrival'] = 'Qabul qilish vaqti';
$labels['asc'] = 'o`sish tartibida';
$labels['desc'] = 'kamayish tartibida';
$labels['listcolumns'] = 'Kolonkalar';
$labels['listsorting'] = 'bo`yicha taxlash';
$labels['listorder'] = 'Taxlash tartibi';
$labels['listmode'] = 'Ko`rish rejimi';
$labels['layout'] = 'Joylashtirish';
$labels['layoutwidescreen'] = 'Keng ekranli';
$labels['layoutdesktop'] = 'Ish stoli';
$labels['layoutlist'] = 'Ro`yxat';
$labels['layoutwidescreendesc'] = 'Keng ekran( 3 ustunli ko`rinish)';
$labels['layoutdesktopdesc'] = 'Ish stoli (keng sahifa va quyida xat ko\'rinishi)';
$labels['layoutlistdesc'] = 'Ro\'yxat (xat ko\'rinishi yo\'q)';
$labels['folderactions'] = '... papka ustida operatsiya';
$labels['compact'] = 'Siqish';
$labels['empty'] = 'Bo`shatish';
$labels['importmessages'] = 'Xatlarni import qilish';
$labels['quota'] = 'Kvota';
$labels['unknown'] = 'ma`lum emas';
$labels['unlimited'] = 'cheklanmagan';
$labels['quotatype'] = 'Kvota turi';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Foydalanilgan';
$labels['quotastorage'] = 'Disk hajmi';
$labels['quotamessage'] = 'Xatlar soni';
$labels['quicksearch'] = 'Tezkor qidirish';
$labels['searchplaceholder'] = 'Izlash...';
$labels['resetsearch'] = 'Сброс';
$labels['searchmod'] = 'Qidirish variantlari';
$labels['msgtext'] = 'Barcha xatlar';
$labels['body'] = 'Xat tarkibi';
$labels['type'] = 'Turi';
$labels['namex'] = 'Ism';
$labels['searchscope'] = 'Viloyat';
$labels['currentfolder'] = 'Mazkur papka';
$labels['subfolders'] = 'Shu va uning tarkibidagi papkalar';
$labels['allfolders'] = 'Barcha papkalar';
$labels['searchinterval-1W'] = '1 haftadan ko`proq';
$labels['searchinterval-1M'] = '1 oydan ko`proq';
$labels['searchinterval-1Y'] = '1 yildan ko`proq';
$labels['searchinterval1W'] = '1 hahftadan kamroq';
$labels['searchinterval1M'] = '1 oydan kamroq';
$labels['searchinterval1Y'] = '1 yildan kamroq';
$labels['openinextwin'] = 'Yangi oynada ochish';
$labels['emlsave'] = 'Saqlash (.eml)';
$labels['changeformattext'] = 'Oddiy matn ko`rinishida tasvirlash';
$labels['changeformathtml'] = 'HTML formatda tasvirlash';
$labels['editasnew'] = 'Yangi kabi tahrirlash';
$labels['send'] = 'Jo`natish';
$labels['sendmessage'] = 'Hoziroq jo`natish';
$labels['savemessage'] = 'Qoralamaga saqlash';
$labels['addattachment'] = 'Ilova qo`shish';
$labels['charset'] = 'Kodirovka';
$labels['editortype'] = 'Tahrirlovchi';
$labels['returnreceipt'] = 'Javob so`rovi';
$labels['dsn'] = 'Yetib borganligi haqida eslatma';
$labels['mailreplyintro'] = '$sender yozgan kun $date:';
$labels['originalmessage'] = 'Asl xat';
$labels['selectimage'] = 'Rasm tanlash';
$labels['addimage'] = 'Rasm qo`shish';
$labels['selectmedia'] = 'Video tanlash';
$labels['addmedia'] = 'Video qo`shish';
$labels['encrypt'] = 'Shiffrlash';
$labels['encryptmessage'] = 'Xatni shifrlash';
$labels['encryptmessagemailvelope'] = 'Mailvelope yordamida xatni shifrlash';
$labels['importpubkeys'] = 'Ochiq kalitlarni import qilish';
$labels['encryptedsendialog'] = 'Shifrlangan xatni jo`natish';
$labels['keyid'] = 'Kalit ID si';
$labels['keylength'] = 'Bit';
$labels['keyexpired'] = 'Muddati o`tgan';
$labels['keyrevoked'] = 'Qayta tuzilgan';
$labels['bccinstead'] = 'BCCdan foydalanish';
$labels['editidents'] = 'Ma`lumotlarni o`zgartirish';
$labels['spellcheck'] = 'Orfografiya';
$labels['checkspelling'] = 'Orfografiyani tekshirish';
$labels['resumeediting'] = 'Tahrirlashni  davom ettirish';
$labels['revertto'] = 'Tuzatmani bekor qilish';
$labels['restore'] = 'Qayta tiklash';
$labels['restoremessage'] = 'Xabar qayta tiklansinmi?';
$labels['ignore'] = 'O`tkazib yuborish';
$labels['responses'] = 'Javoblar';
$labels['insertresponse'] = 'Javob qo`yish';
$labels['manageresponses'] = 'Javoblarni boshqarish';
$labels['newresponse'] = 'Yangi javob yaratish';
$labels['addresponse'] = 'Javob yaratish';
$labels['editresponse'] = 'Javobni tahrirlash';
$labels['editresponses'] = 'Javoblarni tahrirlash';
$labels['responsename'] = 'Nomlanishi';
$labels['responsetext'] = 'Javob matni';
$labels['attach'] = 'Biriktirish';
$labels['attachments'] = 'Ilovalar';
$labels['upload'] = 'Yuklash';
$labels['uploadprogress'] = '$percent ( $total dan $current)';
$labels['close'] = 'Закрыть';
$labels['messageoptions'] = 'Xat sozlamalari...';
$labels['togglecomposeoptions'] = 'Yaratish parametrlari';
$labels['attachmentrename'] = 'Ilova nomini o`zgartirish';
$labels['low'] = 'Pastroq';
$labels['lowest'] = 'Pastr';
$labels['normal'] = 'Normal.';
$labels['high'] = 'Yuqori';
$labels['highest'] = 'O`ta yuqori.';
$labels['nosubject'] = '(nomlanmagan)';
$labels['showimages'] = 'Rasmlarni tasvirlash';
$labels['alwaysshow'] = '$sender ning barcha xatlarida rasmlarni tasvirlash';
$labels['isdraft'] = 'Bu qoralama.';
$labels['andnmore'] = 'yana $nr...';
$labels['togglemoreheaders'] = 'Yana xat sarlavhalarini yuklash';
$labels['togglefullheaders'] = 'Xatlarning asl sarlavhalarini ko`rsatish';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Matn';
$labels['savesentmessagein'] = 'Saqlash:';
$labels['dontsave'] = 'saqlama';
$labels['maxuploadsize'] = 'Faylning maksimal hajmi $size ';
$labels['addcc'] = 'Nusxasi';
$labels['addbcc'] = 'Berkitilgan nusxasi';
$labels['addreplyto'] = 'Kimga javob berish';
$labels['addfollowupto'] = 'Followup-To ga qo`shish';
$labels['mdnrequest'] = 'Mazkur xat jo`natuvchisi xat o`qilganligi haqida eslatma yuborishni so`ragan. Eslatmani yuborasizmi?';
$labels['receiptread'] = 'O`qilganligi haqida eslatma';
$labels['yourmessage'] = 'Bu sizning xatingiz o`qilganligi haqida eslatma';
$labels['receiptnote'] = 'Bu eslatma xat qabul qiluvchi tomonidan ochilganligini bildiradi, biroq uning o`qilganligini anglatmaydi.';
$labels['name'] = 'Ko`rsatiladigan nom';
$labels['firstname'] = 'Ism';
$labels['surname'] = 'Familiya';
$labels['middlename'] = 'Otasining ismi';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Suffiks';
$labels['nickname'] = 'Taxallus';
$labels['jobtitle'] = 'Lavozim';
$labels['department'] = 'Bo`lim';
$labels['gender'] = 'Jins';
$labels['maidenname'] = 'Qizlik familiyasi';
$labels['email'] = 'E-Mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Manzil';
$labels['street'] = 'Ko`cha';
$labels['locality'] = 'Shahar';
$labels['zipcode'] = 'Indeks';
$labels['region'] = 'Viloyat';
$labels['country'] = 'Mamlakat';
$labels['birthday'] = 'Tug`ilgan kun';
$labels['anniversary'] = 'Yillik';
$labels['website'] = 'Veb sayt';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Eslatmalar';
$labels['male'] = 'erkak';
$labels['female'] = 'ayol';
$labels['manager'] = 'Boshqaruvchi';
$labels['assistant'] = 'Yordamchi';
$labels['spouse'] = 'Turmush o`rtog`i';
$labels['allfields'] = 'Barcha maydonlar';
$labels['search'] = 'Qidirish';
$labels['searchresult'] = 'Qidirish natijalari';
$labels['advsearch'] = 'Kengaytirilgan qidiruv';
$labels['advanced'] = 'Qo`shimcha';
$labels['other'] = 'Boshqa';
$labels['printcontact'] = 'Kontaktlarni chop etish';
$labels['qrcode'] = 'QR kod';
$labels['typehome'] = 'Uy';
$labels['typework'] = 'Ish';
$labels['typeother'] = 'Boshqa';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Asosiy';
$labels['typehomefax'] = 'Uy faksi';
$labels['typeworkfax'] = 'Ish faksi';
$labels['typecar'] = 'Avtomobil';
$labels['typepager'] = 'Peydjer';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Yordamchi';
$labels['typehomepage'] = 'Uy sahifasi';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Maydon qo`shish...';
$labels['addcontact'] = 'Kontakt qo`shish';
$labels['editcontact'] = 'Kontaktni tahrirlash';
$labels['contacts'] = 'Kontaktlar';
$labels['contactproperties'] = 'Kontakt xossalari';
$labels['contactnameandorg'] = 'Nom va tashkilot';
$labels['personalinfo'] = 'Shaxsiy ma`lumot';
$labels['personal'] = 'Shaxsiy';
$labels['contactphoto'] = 'Kontakt surati';
$labels['edit'] = 'Tahrirlash';
$labels['cancel'] = 'Bekor qilish';
$labels['save'] = 'Saqlash';
$labels['delete'] = 'O`chirish';
$labels['rename'] = 'Qayta nomlash';
$labels['addphoto'] = 'Qo`shish';
$labels['replacephoto'] = 'Almashtirish';
$labels['uploadphoto'] = 'Surat yuklash';
$labels['newcontact'] = 'Yangi kontakt yaratish';
$labels['deletecontact'] = 'Tanlangan kontaktlarni o`chirish';
$labels['composeto'] = 'Tanlangan kontaktlar uchun xat yaratish';
$labels['contactsfromto'] = '$count ta $from dan $to ga kontaktlar';
$labels['print'] = 'Chop etish';
$labels['export'] = 'Eksport qilish';
$labels['exportall'] = 'Barchasini eksport qilish';
$labels['exportsel'] = 'Tanlanganlarni eksport qilish';
$labels['exportvcards'] = 'Kontaktalrni vCard ko`rinishida eksport qilish';
$labels['newgroup'] = 'Yangi guruh yaratish';
$labels['addgroup'] = 'Guruh qo`shish';
$labels['grouprename'] = 'Guruh nomini o`zgartirish';
$labels['groupdelete'] = 'Guruhni o`chirish';
$labels['groupremoveselected'] = 'Tanlangan kontaktlarni guruhdan o`chirish';
$labels['uponelevel'] = 'Bir pog`ona yuqoriga';
$labels['previouspage'] = 'Avvalgi sahifani ko`rsatish';
$labels['firstpage'] = 'Birinchi sahifani ko`rsatish';
$labels['nextpage'] = 'Keyingi sahifani ko`rsatish';
$labels['lastpage'] = 'Oxirgi sahifani ko`rsatish';
$labels['group'] = 'Guruh';
$labels['groups'] = 'Guruhlar';
$labels['listgroup'] = 'Guruh a`zolari ro`yxati';
$labels['personaladrbook'] = 'Shaxsiy manzillar';
$labels['searchsave'] = 'So`rovni saqlash';
$labels['searchdelete'] = 'So`rovni o`chirish';
$labels['import'] = 'Import qilish';
$labels['importcontacts'] = 'Kontaktlarni import qilish';
$labels['importtarget'] = 'Kontaktlarni qo`shish:';
$labels['importreplace'] = 'Jami manzillar kitobini almashtirish';
$labels['importgroups'] = 'Importda guruhlar bo`yicha taqsimlash';
$labels['importgroupsall'] = 'Barcha (zaruriyat bo`lganda guruh yaratish)';
$labels['importgroupsexisting'] = 'Faqat mavjud guruhlar uchun';
$labels['done'] = 'Yakunlandi';
$labels['settingsfor'] = 'Kun sozlamalari';
$labels['about'] = 'Dastur haqida';
$labels['preferences'] = 'Sozlamalar';
$labels['userpreferences'] = 'Foydalanuvchi sozlamalari';
$labels['editpreferences'] = 'Foydalanuvchi sozlamalarini tahrirlash';
$labels['identities'] = 'Profillar';
$labels['manageidentities'] = 'Profillarni boshqarish';
$labels['newidentity'] = 'Yangi profil yaratish';
$labels['addidentity'] = 'Profil qo`shish';
$labels['editidentity'] = 'Profilni o`zgartirish';
$labels['preferhtml'] = 'HTML ni afzal ko`rish';
$labels['defaultcharset'] = 'Dastlabki holdagi simvollar to`plami';
$labels['htmlmessage'] = 'HTML xat';
$labels['messagepart'] = 'Qismlar';
$labels['digitalsig'] = 'Raqamli imzo';
$labels['dateformat'] = 'Sana formati';
$labels['timeformat'] = 'Vaqt formati';
$labels['prettydate'] = 'Chiroyli sanalar';
$labels['setdefault'] = 'Dastlabki holatdagidek belgilash';
$labels['autodetect'] = 'Avtomatik aniqlash';
$labels['language'] = 'Til';
$labels['timezone'] = 'Vaqt mintaqasi';
$labels['pagesize'] = 'Sahifada qatorlar soni';
$labels['signature'] = 'Imzo';
$labels['dstactive'] = 'Yozgi vaqt';
$labels['showinextwin'] = 'Xatni yangi sahifada ochish';
$labels['composeextwin'] = 'Yangi oynada yaratish';
$labels['htmleditor'] = 'HTML da xat yaratish';
$labels['htmlonreply'] = 'HTML da faqat javob xati uchun';
$labels['htmlonreplyandforward'] = 'HTMLda xabarni qayta uzatish yoki javob berishda';
$labels['htmlsignature'] = 'HTML da imzo';
$labels['showemail'] = 'Elektron pochta manzili va manzil nomini ko`rsatish';
$labels['previewpane'] = 'Dastlabki tasvirlash panelini ko`rsatish';
$labels['skin'] = 'Dizayn uslubi';
$labels['logoutclear'] = 'Chiqishda savatni bo`shatish';
$labels['logoutcompact'] = 'Chiqishda kirish xatlarini siqish';
$labels['uisettings'] = 'Foydalanuvchi interfeysi';
$labels['serversettings'] = 'Server sozlamalari';
$labels['mailboxview'] = 'Pochta qutisi ko`rinishi';
$labels['mdnrequests'] = 'O`qilganligi haqida eslatma';
$labels['askuser'] = 'Jo`natishdan avval so`rash';
$labels['autosend'] = 'Avtomatik tarzda yuborish';
$labels['autosendknown'] = 'Manzil kitobidagi manzillarga eslatma jo`natish, aks holda so`rash';
$labels['autosendknownignore'] = 'Manzil kitobidagi manzillarga eslatma jo`natish, qolganlariga rad etish';
$labels['ignorerequest'] = 'So`rovni o`tkazib yuborish';
$labels['readwhendeleted'] = 'O`chirganda o`qilgan deb belgilash';
$labels['flagfordeletion'] = 'O`chirish o`rniga o`chiriladigan deb belgilash';
$labels['skipdeleted'] = 'O`chirilgan xatlarni ko`rsatmaslik';
$labels['deletealways'] = 'Agar savatga joylashtirish amalga oshmayotgan bo`lsa xatni o`chirish';
$labels['deletejunk'] = 'SPAM papkasidagi xatlarni Savatga yubormasdan o`chirish';
$labels['showremoteimages'] = 'Uzoqlashgan rasmlarni ko`rsatish';
$labels['fromknownsenders'] = 'Ma`lum jo`natuvchidan';
$labels['always'] = 'doim';
$labels['alwaysbutplain'] = 'doim, javob faqat matn ko`inishda bo`lgan holdan tashqari';
$labels['showinlineimages'] = 'Ilovadagi rasmlarni xatning ostki qismida ko`rsatish';
$labels['autosavedraft'] = 'Qoralamani avto saqlash';
$labels['everynminutes'] = 'Har $n daqiqada';
$labels['refreshinterval'] = 'Yangilash (Yangi xatlarni tekshirish va hkz.)';
$labels['never'] = 'hech qachon';
$labels['immediately'] = 'zudlik bilan';
$labels['messagesdisplaying'] = 'Xatlarni tasvirlash';
$labels['messagescomposition'] = 'Xat yaratish';
$labels['mimeparamfolding'] = 'Ilovalar nomlari';
$labels['2231folding'] = 'RFC 2231 (faqat yangi dasturlar uchun)';
$labels['miscfolding'] = 'RFC 2047/2231  (ko`proq moslik)';
$labels['2047folding'] = 'RFC 2047  (eski dasturlar uchun)';
$labels['force7bit'] = '8 bitli simvollar uchun MIME dan foydalanish';
$labels['savelocalstorage'] = "Veb brauzerning lokal xotirasida saqlash (vaqtincha)";
$labels['advancedoptions'] = 'Qo`shimcha xossalar';
$labels['toggleadvancedoptions'] = 'Qo`shimcha xossalar';
$labels['focusonnewmessage'] = 'Yangi xatda brauzer oynasini fokuslantirish';
$labels['checkallfolders'] = 'Barcha papkalarda yangi xabarlarni tekshirish';
$labels['defaultfont'] = ' HTML xatda shrift';
$labels['mainoptions'] = 'Asosiy xossalar';
$labels['browseroptions'] = 'Brauzer sozlamalari';
$labels['section'] = 'Bo`lim';
$labels['maintenance'] = 'Xizmat ko`rsatish';
$labels['newmessage'] = 'Yangi xat';
$labels['signatureoptions'] = 'Imzo xossalari';
$labels['whenreplying'] = 'Javob berishda';
$labels['replyempty'] = 'Asl xatlarni izohlamaslik';
$labels['replytopposting'] = 'izohlanayotgandan xatdan avval yangi xatni boshlash';
$labels['replytoppostingnoindent'] = 'Iqtibosdan yuqorida yangi xatni yozishni boshlang (ortiqcha bo\'sh maydonsiz)';
$labels['replybottomposting'] = 'izohlanayotgandan xatdan keyin yangi xatni boshlash';
$labels['replyremovesignature'] = 'javob berishda imzoni yo`qotish';
$labels['autoaddsignature'] = 'Imzoni avtomatik qo`shish';
$labels['newmessageonly'] = 'faqat yangi xatlar uchun';
$labels['replyandforwardonly'] = 'faqat javob va qayta uzatishda';
$labels['insertsignature'] = 'Imzo qo`yish';
$labels['sigbelow'] = 'Izohlanayotgan xatdan so`ng imzo qo`yish';
$labels['sigseparator'] = 'Imzoga standart ajratuvchi qo`yish';
$labels['automarkread'] = 'Xabarlarni o‘qilgan sifatida belgilash';
$labels['afternseconds'] = ' $n sekunddan so`ng';
$labels['reqmdn'] = 'Doim yetkazilganligi haqida eslatmani so`rash';
$labels['reqdsn'] = 'Doim yetkazilganligi holati to`g`risida eslatmani so`rash';
$labels['replysamefolder'] = 'javob xatini original xat joylashgan joyga qo`yish';
$labels['defaultabook'] = 'Dastlabki holdagi Manzillar kitobi';
$labels['autocompletesingle'] = 'Avto to`ldirishda qo`shimcha manzillarni o`tkazib yuborish';
$labels['listnamedisplay'] = 'Kontaktlar ro`yxatini ko`rsatish';
$labels['spellcheckbeforesend'] = 'Jo`natishdan avval orfografiyani tekshirish';
$labels['spellcheckoptions'] = 'Orfografiyani tekshirish parametri';
$labels['spellcheckignoresyms'] = 'Simvolli so`zlarni o`tkazib yuborish';
$labels['spellcheckignorenums'] = 'Raqamli so`zlarni o`tkazib yuborish';
$labels['spellcheckignorecaps'] = 'Katta harfdagi so`zlarni o`tkazib yuborish';
$labels['addtodict'] = 'Lug`atga qo`shish';
$labels['mailtoprotohandler'] = 'Bu ssilka uchun qayta ishlovchini ishga tushirish mailto:';
$labels['standardwindows'] = 'Popup oynalarini standart holda deb qarash';
$labels['forwardmode'] = 'xatni qayta uzatish';
$labels['inline'] = 'matnda';
$labels['asattachment'] = 'ilova ko`rinishida';
$labels['replyallmode'] = '[Barchaga javob berish] tugmasining dastlabki holdagi vazifasi';
$labels['replyalldefault'] = 'Barchaga javob berish';
$labels['replyalllist'] = 'Rassilka ro`yxatiga javob berish (agar topilsa)';
$labels['folder'] = 'Papka';
$labels['folders'] = 'Papkalar';
$labels['foldername'] = 'Papka nomi';
$labels['subscribed'] = 'Imzolangan';
$labels['messagecount'] = 'Xat';
$labels['create'] = 'Yaratish';
$labels['createfolder'] = 'Yangi papka yaratish';
$labels['managefolders'] = 'Papkalarni boshqarish';
$labels['specialfolders'] = 'Alohida papkalar';
$labels['properties'] = 'Xossalar';
$labels['folderproperties'] = 'Papka xossalari';
$labels['parentfolder'] = 'Asos papka';
$labels['location'] = 'Joylashgan o`rni';
$labels['info'] = 'Axborot';
$labels['getfoldersize'] = 'Papka o`lchamini ko`rsatish';
$labels['changesubscription'] = 'Obunani o`zgartirish';
$labels['foldertype'] = 'Katalog turi';
$labels['personalfolder'] = 'Shaxsiy katalog';
$labels['otherfolder'] = 'Boshqa foydalanuvchi katalogi';
$labels['sharedfolder'] = 'Birgalikdagi katalog';
$labels['findfolders'] = 'Papkalarni qidirish';
$labels['findcontacts'] = 'Kontaktlarni topish';
$labels['findmail'] = 'Xat xabarlarini topish';
$labels['namespace.personal'] = 'Shaxsiy';
$labels['namespace.other'] = 'Boshqa foydalanuvchilarniki';
$labels['namespace.shared'] = 'Umumiy';
$labels['dualuselabel'] = 'O\'z ichiga olishi mumkin';
$labels['dualusemail'] = 'xatlar';
$labels['dualusefolder'] = 'papkalar';
$labels['sortby'] = 'Saralash';
$labels['sortasc'] = 'O`sish tartibida';
$labels['sortdesc'] = 'Kamayish tartibida';
$labels['undo'] = 'Bekor qilish';
$labels['installedplugins'] = 'O`rnatilgan qo`shimcha paket(plugin)lar';
$labels['plugin'] = 'paketlar';
$labels['version'] = 'Versiya';
$labels['source'] = 'Manbaa';
$labels['license'] = 'Litsenziya';
$labels['support'] = 'Qo`lllab-quvvatlash';
$labels['savedsearches'] = 'Saqlangan izlashlar';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unikod';
$labels['english'] = 'Inglizcha';
$labels['westerneuropean'] = 'G`arbiy Yevropa';
$labels['easterneuropean'] = 'Sharqiy Yevropa';
$labels['southeasterneuropean'] = 'janubi-sharqiy Yevropa';
$labels['baltic'] = 'Boltiqbo`yi';
$labels['cyrillic'] = 'Kirillcha';
$labels['arabic'] = 'Arabcha';
$labels['greek'] = 'Grekcha';
$labels['hebrew'] = 'Ibroniycha';
$labels['turkish'] = 'Turkcha';
$labels['nordic'] = 'Skandinavcha';
$labels['thai'] = 'Taylandcha';
$labels['celtic'] = 'Keltcha';
$labels['vietnamese'] = 'Vetnamcha';
$labels['japanese'] = 'Yaponcha';
$labels['korean'] = 'Koreyscha';
$labels['chinese'] = 'Xitoycha';
$labels['arialabeltopnav'] = 'Oynalarni boshqarish';
$labels['arialabeltasknav'] = 'Dastur vazifalari';
$labels['arialabeltoolbar'] = 'Dastur uskunalar paneli';
$labels['arialabelactivetask'] = 'Faol topshiriq';
$labels['arialabelmessagessearchfilter'] = 'Xatlar ro`yxati filtri';
$labels['arialabelmailsearchform'] = 'Xatda izlash formasi';
$labels['arialabelcontactsearchform'] = 'Kontaktlarni izlash formasi';
$labels['arialabelmailquicksearchbox'] = 'El. pochta manzillarini qidirish so`rovini kiritish';
$labels['arialabelquicksearchbox'] = 'izlash so`rovi';
$labels['arialabelfoldersearchfilter'] = 'papka ro`yxatini filtrlash';
$labels['arialabelfoldersearchform'] = 'Papkalarni izlash formasi';
$labels['arialabelfolderlist'] = 'ВEl. pochta papkalarini tanlash';
$labels['arialabelmessagelist'] = 'El. pochta xatlari ro`yxati';
$labels['arialabelmailpreviewframe'] = 'Xatni dastlabki ko`rish';
$labels['arialabelmailboxmenu'] = 'Papka ustida ish bajarish menyusi';
$labels['arialabellistselectmenu'] = 'Ro`yxatni ajratish menyusi';
$labels['arialabelthreadselectmenu'] = 'Muhokamalar ro`yxati menyusi';
$labels['arialabelmessagelistoptions'] = 'Xatlar ro`yxati va saralashni tasvirlash parametrlari';
$labels['arialabelmailimportdialog'] = 'Xatni import qilish dialogi';
$labels['arialabelmessagenav'] = 'Xatlar bo`yicha navigatsiya';
$labels['arialabelmessagebody'] = 'Xat tarkibi';
$labels['arialabelmessageactions'] = 'Xat ustidan amallar';
$labels['arialabelcontactquicksearch'] = 'Kontaktlarni qidirish formasi';
$labels['arialabelcontactsearchbox'] = 'Kontakt qidirish so`rovini kiritish';
$labels['arialabelmessageheaders'] = 'Xat sarlavhasi';
$labels['arialabelforwardingoptions'] = 'Qayta uzatish xossalari';
$labels['arialabelreplyalloptions'] = 'Barchaga javob berish xossalari';
$labels['arialabelmoremessageactions'] = 'Xat ustida qo`shimcha amallar';
$labels['arialabelmarkmessagesas'] = 'Tanlangan xatlarga belgi qo`yish...';
$labels['arialabelcomposeoptions'] = 'Yaratish sozlamalari';
$labels['arialabelresponsesmenu'] = 'Avval tayyorlangan javoblar menyusi';
$labels['arialabelattachmentuploadform'] = 'ilovalarni chiqarish formasi';
$labels['arialabelattachmentmenu'] = 'Ilova sozlamalari';
$labels['arialabelattachmentpreview'] = 'Ilovlalarni tasvirlash';
$labels['ariasummarycomposecontacts'] = 'Qabul qiluvchi sifatida kontakt va guruhlarni tanlash';
$labels['arialabelcontactexportoptions'] = 'Kontaktlarni eksport qilish xossalari';
$labels['arialabelabookgroupoptions'] = 'Manzil kitobi/guruhi xossalari';
$labels['arialabelpreferencesform'] = 'Sozlamalar formasi';
$labels['arialabelidentityeditfrom'] = 'Shaxsiy ma`lumotlarni thrirlash formasi';
$labels['arialabelresponseeditfrom'] = 'Javobni tahrirlash formasi';
$labels['arialabelsearchterms'] = 'Izlash so`rovi';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop harakati menyusi';
$labels['helplistnavigation'] = 'Ro`yxat bo`yicha navigatsiya tugmalari';
$labels['helplistkeyboardnavigation'] = "Tepa/Past strelkalari: Qatorlar/tanlanganlar bo`yicha fokusni o`zgartiradi.
Probel: Fokus turgan qatorni belgilaydi.
Shift + tepa/past: Qo`shimcha tepa/past qatorni belgilaydi.
Ctrl + probel: Tanlanganlarda belgilanishlarni Qo`shadi/O`chiradi.";
$labels['helplistkeyboardnavmessages'] = "O`ng/chap strelkalar: muhokama etilayotgan xatlarni yoyish/berkitish сообщения обсуждения.
Enter: Tanlangan xatlarni ochish.
Delete: Tanlangan xatni Savatga solish.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Tanlangan kontaktni ochish.";
localization/uz/messages.inc000064400000036267151727150600012216 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Xatolik yuzaga keldi!';
$messages['loginfailed']  = 'Kirish amalga oshirilmadi.';
$messages['cookiesdisabled'] = 'Brauzeringiz kukilarni qabul qilmayapti.';
$messages['sessionerror'] = 'Sizning sessiyangizda xatolik mavjud yoki muddati tugagan.';
$messages['storageerror'] = 'Xotira serveriga bog‘lanib bo‘lmadi.';
$messages['servererror'] = 'Serverda xatoliik!';
$messages['servererrormsg'] = 'Serverda xatolik: $msg';
$messages['accountlocked'] = 'Kirishga urinishlar soni ko‘p bo‘ldi. Keyinroq urinib ko‘ring.';
$messages['connerror'] = 'Ulanishda xato (server bilan bog‘lanib bo‘lmadi)!';
$messages['dberror'] = 'Ma’lumotlar ombori bilan xatolik yuz berdi!';
$messages['windowopenerror'] = 'Popup oynalar bloklangan!';
$messages['requesttimedout'] = 'So‘rovni kutish vaqti tugadi';
$messages['errorreadonly'] = 'Amal bajariimadi. Papka faqat o‘qish uchun.';
$messages['errornoperm'] = 'Amalni bajarib bo‘lmadi. Ruxsat berilmagan.';
$messages['erroroverquota'] = 'Amalni bajarib bo‘lmadi. Bo‘sh joy qolmagan.';
$messages['erroroverquotadelete'] = 'Bo‘sh joy qolmagan. SHIFT+DEL ni bosib, xabarni o‘chirib tashlang.';
$messages['invalidrequest'] = 'Noto‘g‘ri so‘rov! Ma’lumot saqlanmadi.';
$messages['invalidhost'] = 'Server nomi noto‘g‘ri.';
$messages['nomessagesfound'] = 'Bu pochta qutisida xabarlar topilmadi.';
$messages['mailboxempty'] = 'Pochta qutisi bo‘sh';
$messages['nomessages'] = 'Xabarlar yo‘q';
$messages['refreshing'] = 'Yangilanmoqda...';
$messages['loading'] = 'Iltimos, kuting…';
$messages['uploading'] = 'Fayl yuklanmoqda...';
$messages['attaching'] = 'Fayl ilova qilinmoqda...';
$messages['uploadingmany'] = 'Fayllar yuklanmoqda...';
$messages['loadingdata'] = 'Ma’lumotlar yuklanmoqda...';
$messages['checkingmail'] = 'Yangi xatlar tekshirilmoqda...';
$messages['sendingmessage'] = 'Xat yuborilmoqda…';
$messages['messagesent'] = 'Xat muvaffaqiyatli yuborildi.';
$messages['savingmessage'] = 'Xat saqlanmoqda…';
$messages['messagesaved'] = 'Xat Qoralamalarga saqlandi.';
$messages['successfullysaved'] = 'Muvaffaqiyatli saqlandi.';
$messages['savingresponse'] = 'Javob matni saqlanmoqda...';
$messages['deleteresponseconfirm'] = 'Siz rostdan ham bu javob xatini o‘chirmoqchimisiz?';
$messages['addedsuccessfully'] = 'Manzillar kitobiga kontakt qo‘shildi.';
$messages['contactexists'] = 'Bu e-mail manzilga ega kontakt mavjud.';
$messages['contactnameexists'] = 'Bu nomdagi kontakt mavjud.';
$messages['blockedimages'] = 'Xavfsizlik yuzasidan rasmlarni yuklash bloklangan.';
$messages['encryptedmessage'] = 'Xat shifrlangan va ko‘rsatib bo`lmaydi. Server administratoriga murojaat eting.';
$messages['externalmessagedecryption'] = 'Bu shifrlangan xabar, uni brauzeringiz kengaytmasi orqali ochishingiz mumkin.';
$messages['nopubkeyfor'] = '$email uchun amaldagi ochiq kalit topilmadi';
$messages['nopubkeyforsender'] = 'Sizning jo‘natuvchi ekanligingizni tasdiqlash uchun amaldagi ochiq kalit mavjud emas. Siz faqat qabul qiluvchilar uchun shifrlashni istaysizmi?';
$messages['encryptnoattachments'] = 'Yuklab bo‘lingan ilovalarni shifrlab bo‘lmaydi. Iltimos ularni shifrash tahrirlovchisiga qayta yuklang';
$messages['searchpubkeyservers'] = 'Mavjud bo‘lmagan kalitlar uchun ochiq kalitlar serverini qidirishni istaysizmi?';
$messages['encryptpubkeysfound'] = 'Quyidagi ochiq kalitlar topildi:';
$messages['nocontactsfound'] = 'Kontaktlar topilmadi.';
$messages['contactnotfound'] = 'Kerakli kontakt topilmadi.';
$messages['sendingfailed'] = 'Xatni jo`natish amalga oshirilmadi.';
$messages['senttooquickly'] = 'Siz xat jo‘natishdan avval $sec sekund kutishingiz kerak.';
$messages['errorsavingsent'] = 'Jo‘natilayotgan xatni saqlashda xatolik yuz berdi.';
$messages['errorsaving'] = 'Saqlash jarayonida xatolik yuz berdi.';
$messages['errormoving'] = 'Xat(lar)ni ko‘chirishda xatolik yuz berdi.';
$messages['errorcopying'] = 'Xat(lar)dan nusxa olishda xatolik yuz berdi.';
$messages['errordeleting'] = 'Xat(lar)ni o‘chirishda xatolik yuz berdi.';
$messages['errormarking'] = 'Xat(lar)ni belgilashda xatolik yuz berdi.';
$messages['deletecontactconfirm']  = 'Siz rostdan ham tanlangan kontakt(lar)ni o‘chirmoqchimisiz?';
$messages['deletegroupconfirm']  = 'Siz rostdan ham tanlangan guruhni o‘chirmoqchimisiz?';
$messages['deletemessagesconfirm'] = 'Siz rostdan ham tanlangan xat(lar)ni o‘chirmoqchimisiz?';
$messages['deletefolderconfirm']  = 'Siz rostdan ham bu papkani o‘chirmoqchimisiz?';
$messages['purgefolderconfirm']  = 'Siz rostdan ham mazkur papkadagi barcha xatlarni o‘chirmoqchimisiz?';
$messages['contactdeleting'] = 'Kontakt(lar) o‘chirilmoqda...';
$messages['groupdeleting'] = 'Guruh o‘chirilmoqda...';
$messages['folderdeleting'] = 'Papka o‘chirilmoqda...';
$messages['foldermoving'] = 'Papka ko‘chirilmoqda...';
$messages['foldersubscribing'] = 'Papkaga obuna bo‘lish';
$messages['folderunsubscribing'] = 'Papkaga obunani bekor qilish';
$messages['formincomplete'] = 'Forma to‘liq to‘ldirilmadi.';
$messages['noemailwarning'] = 'Iltimos, to‘g‘ri elektron pochta manzilini kiriting.';
$messages['nonamewarning']  = 'Iltimos, Ismni kiriting.';
$messages['nopagesizewarning'] = 'Iltimos, sahifa o‘lchamini kiriting.';
$messages['nosenderwarning'] = 'Iltimos, jo‘natuvchi elektron manzilini kirting.';
$messages['norecipientwarning'] = 'Iltimos, kamida bir dona qabul qiluvchini kiriting.';
$messages['disclosedrecipwarning'] = 'Barcha qabul qiluvchilar boshqalarning elektron manzilini ko‘ra olishadi, buni oldini olish va ularning shaxiy daxlsizligini ta’minlash uchun BCC maydonidan foydalaning.';
$messages['disclosedreciptitle'] = 'Tashqi qabul qiluvchilar juda ko‘p.';
$messages['nosubjectwarning']  = '"Mavzu" maydoni to‘ldirilmagan. Uni to‘ldirishni istaysizmi?';
$messages['nosubjecttitle']  = 'Mavzusiz';
$messages['nobodywarning'] = 'Xatni matnsiz jo‘natmoqchimisiz?';
$messages['notsentwarning'] = 'Xat jo‘natilmadi va saqlanmagan o‘zgartirishlarga ega. Siz bu o‘zgarishlarni bekor qilishni istaysizmi?';
$messages['restoresavedcomposedata'] = 'Avval $date da yaratilgan biroq, jo‘natilmagan $subject\n mavzudagi xat mavjud.Bu xatni qayta tiklashni istaysizmi?';
$messages['nosearchname'] = 'Iltimos, Ism yoki elektron pochta manzilini kiriting.';
$messages['notuploadedwarning'] = 'Barcha ilovalar hali yuklanmadi, Iltimos kuting yoki yuklashni bekor qiling.';
$messages['searchsuccessful'] = '$nr ta xat topildi.';
$messages['contactsearchsuccessful'] = '$nr ta kontaktlar topildi.';
$messages['searchnomatch'] = 'Hech narsa topilmadi.';
$messages['searching'] = 'Qidirilmoqda...';
$messages['checking'] = 'Tekshirilmoqda...';
$messages['stillsearching'] = 'Hali ham qidirilmoqda...';
$messages['nospellerrors'] = 'Imlo xatolar topilmadi.';
$messages['folderdeleted'] = 'Papka muvaffaqqiyatli o‘chirildi.';
$messages['foldersubscribed'] = 'Papkaga obuna muvaffaqqiyatli o‘rnatildi.';
$messages['folderunsubscribed'] = 'Papkaga obuna bekor qilindi.';
$messages['deletedsuccessfully'] = 'O‘chirildi.';
$messages['converting'] = 'Formatlashni o‘chirish...';
$messages['messageopenerror'] = 'Serverdan xatni yuklash amalga oshirilmadi.';
$messages['filelinkerror'] = 'Ilovani qo‘shish amalga oshirilmadi.';
$messages['fileuploaderror'] = 'Faylni yuklashda xatolik yuz berdi.';
$messages['filesizeerror'] = 'Yuklanayotgan fayl o‘lchami maksimal $size o‘lchamdan katta.';
$messages['filecounterror'] = 'Siz bir vaqtda $count ta fayl jo‘nata olasiz.';
$messages['msgsizeerror'] = 'Faylni yuklash amalga oshirilmadi. Xating maksimal o‘lchami ($size) dan oshgan.';
$messages['copysuccess'] = '$nr ta kontaktdan nusxa olish muvaffaqqiyatli amalga oshirildi.';
$messages['movesuccess'] = '$nr ta kontakt muvaffaqqiyatli ko‘chirildi.';
$messages['copyerror'] = 'Kontaktlardan nusxa olinmadi.';
$messages['moveerror'] = 'Kontaktlar ko‘chirilmadi.';
$messages['sourceisreadonly'] = 'Mazkur manzillar manbaasi faqat o‘qish uchun.';
$messages['errorsavingcontact'] = 'Kontakt manzillari saqlanmadi,';
$messages['movingmessage'] = 'Xat(lar)ni ko‘chirish...';
$messages['copyingmessage'] = 'Xat(lar)dan nusxa olish...';
$messages['copyingcontact'] = 'Kontakt(lar)dan nusxa olish ...';
$messages['movingcontact'] = 'Kontakt(lar)ni ko‘chirish...';
$messages['deletingmessage'] = 'Xat(lar)ni o‘chirish...';
$messages['markingmessage'] = 'Xat(lar)ni belgilash....';
$messages['addingmember'] = 'Kontakt(lar)ni guruhga qo‘shish...';
$messages['removingmember'] = 'Kontakt(lar)ni guruhdan o‘chirish';
$messages['receiptsent'] = 'O‘qilganlik haqida eslatma muvaffaqqiyatli jo‘natildi.';
$messages['errorsendingreceipt'] = 'O‘qilganlik haqida eslatma muvaffaqqiyatli jo‘natilmadi.';
$messages['deleteidentityconfirm'] = 'Siz rostdan ham buni o‘chirmoqchimisiz?';
$messages['nodeletelastidentity'] = 'Siz buni o‘chira olmaysiz, bu sizdagi oxirgi profil.';
$messages['forbiddencharacter'] = 'Papka nomida ruxsat etilmagan simvol mavjud.';
$messages['selectimportfile'] = 'Yuklash uchun faylni tanlang.';
$messages['addresswriterror'] = 'Tanlangan manzillar kitobida yozish uchun imkon yo‘q.';
$messages['contactaddedtogroup'] = 'Kontaktlar guruhga qo‘shildi.';
$messages['contactremovedfromgroup'] = 'Kontaktlar guruhdan o‘chirildi.';
$messages['nogroupassignmentschanged'] = 'Guruhlar bo‘yicha taqsimlash o‘zgarmadi.';
$messages['importwait'] = 'Import qilinmoqda, iltimos kuting...';
$messages['importformaterror'] = 'Import amalga oshmadi. Yuklanayotgan fayl no’malum ma’lumotlar formatiga ega.';
$messages['importconfirm'] = '<b> $inserted kontaktlar import qilindi</b>';
$messages['importconfirmskipped'] = '<b> $skipped  mavjud yozuvlar o‘tkazib yuborildi</b>';
$messages['importmessagesuccess'] = '$nr ta xat import qilindi.';
$messages['importmessageerror'] = 'Import muvaffaqqiyatsiz amalga oshdi. Yuklanayotgan fayl xat fayli yoki pochta qutisi fayli emas.';
$messages['opnotpermitted'] = 'Harakat ta’qiqlangan!';
$messages['nofromaddress'] = 'Tanlangan profilda e-mail manzili yetishmayapti.';
$messages['editorwarning'] = 'Tahrirchini almashtirishda matn farmatida yo‘qolishlar kuzatilishi mumkin. Davom ettirishni istaysizmi?';
$messages['httpreceivedencrypterror'] = 'Serverda jiddiy xatolik kuzatildi. Zudlik bilan administratorga murojaat eting. <b>Sizning xatingizni jo‘natishning imkoni yo\'q </b>';
$messages['smtpconnerror'] = 'SMTP xatolik ($code): Serverga ulanish muvaffaqqiyatsiz.';
$messages['smtpautherror'] = 'SMTP xatolik ($code): Autentifikatsiya muvaffaqqiyatsiz amalga oshdi.';
$messages['smtpfromerror'] = 'SMTP Xatolik($code): "$from" ($msg) jo‘natuvchini belgilash amalga oshmadi. ';
$messages['smtptoerror'] = 'SMTP Xatolik($code): "$from" ($msg) qabul qiluvchini belgilash amalga oshmadi. ';
$messages['smtprecipientserror'] = 'Qabul qiluvchilar ro‘yxatini qayta ishlash amalga oshirilmadi.';
$messages['smtperror'] = 'SMTP xatolik: $msg';
$messages['emailformaterror'] = 'Noto‘g‘ri elektron manzil: $email';
$messages['toomanyrecipients'] = 'Qabul qiluvchilar soni ko‘p/ Qabul qiluvchilar sonini $max ga qadar kamaytiring.';
$messages['maxgroupmembersreached'] = 'Guruh a’zolari soni maksimal $max qiymatdan ortiq.';
$messages['internalerror'] = 'ichki xatolik kuzatildi. Iltimos, qaytadan urinib ko‘ring.';
$messages['contactdelerror'] = 'Kontakt(lar)ni o‘chirish amalga oshirilmadi.';
$messages['contactdeleted'] = 'Kontakt(lar) o‘chirildi.';
$messages['contactrestoreerror'] = 'O‘chirilgan kontakt(lar) qayta tiklanmadi.';
$messages['contactrestored'] = 'Kontakt(lar) qayta tiklandi.';
$messages['groupdeleted'] = 'Guruh o‘chirildi.';
$messages['grouprenamed'] = 'Guruh qayta nomlandi.';
$messages['groupcreated'] = 'Guruh yaratildi.';
$messages['savedsearchdeleted'] = 'Saqlangan izlash so‘rovi o‘chirildi.';
$messages['savedsearchdeleteerror'] = 'Saqlangan izlash so‘rovini o‘chirish amalga oshmadi.';
$messages['savedsearchcreated'] = 'Saqlangan izlash so‘rovi muvaffaqqiyatli yaratildi.';
$messages['savedsearchcreateerror'] = 'Saqlangan izlash so‘rovi yaratilmadi.';
$messages['messagedeleted'] = 'Xat(lar) o‘chirildi.';
$messages['messagemoved'] = 'Xat(lar) ko‘chirildi.';
$messages['messagemovedtotrash'] = 'Xat(lar) savatga jo‘natildi.';
$messages['messagecopied'] = 'Xat(lar)dan nusxa olindi.';
$messages['messagemarked'] = 'Xat(lar)ga belgi qo‘yildi.';
$messages['autocompletechars'] = 'Avto to‘ldirish uchun kamida $min ta simvol kiriting.';
$messages['autocompletemore'] = 'Qidiruv so‘rovi ko\'plab yozuvlarni topdi. Iltimos so‘rovni aniqlashtiring.';
$messages['namecannotbeempty'] = 'Nom bo‘sh bo‘lmasligi lozim.';
$messages['nametoolong'] = 'Nom juda uzun.';
$messages['namedotforbidden'] = 'Papka nomi nuqta bilan boshlanmasligi kerak.';
$messages['folderupdated'] = 'Papka yangilandi.';
$messages['foldercreated'] = 'Papka yaratildi.';
$messages['invalidimageformat'] = 'Rasm formati noto‘g‘ri';
$messages['mispellingsfound'] = 'Xatda imlo xatolar mavjud.';
$messages['parentnotwritable'] = 'Tanlangan asos papkada boshqa papka yaratish/ko‘chirishni imkoni yo‘q. Ruxsat berilmaganl';
$messages['messagetoobig'] = 'Xat qismi qayta ishlash uchun juda katta.';
$messages['noscriptwarning'] = 'DIQQAT: Veb pochtaning mazkur xizmati javascriptni talab etadi. Uni ishlatish uchun brauzeringizda javascriptni qo‘llalb-quvvatlashni faollashtirishingiz lozim.';
$messages['messageissent'] = 'Xat jo‘natildi, biroq hali saqlanmadi. Uni hozir saqlashni istaysizmi?';
$messages['errnotfound'] = 'Fayl topilmadi';
$messages['errnotfoundexplain'] = 'So‘ralgan resurs topilmadi!';
$messages['errfailedrequest'] = 'Muvaffaqqiyatsiz so‘rov';
$messages['errauthorizationfailed'] = 'Muvaffaqqiyatsiz avtorizatsiya';
$messages['errunauthorizedexplain'] = 'Siz bu xizmatga kirish huquqiga ega ekanligingizni tekshirish amalga oshirilmadi.';
$messages['errrequestcheckfailed'] = 'Tekshiruv so‘rovi muvaffaqiyatsiz';
$messages['errcsrfprotectionexplain'] = "Sizning xavfsizligingizni ta’minlash maqsadida bu resursga kirish CSRF dan himoyalangan.\n Agar siz buni ko‘rayotgan bo‘lsangiz, siz veb dasturdan chiqishdan avval tizimni tark etmadingiz,\n\n Davom ettirish uchun inson harakati talab etiladi.";
$messages['errcontactserveradmin'] = 'Server administratoriga murojaat eting.';
$messages['clicktoresumesession'] = 'Avvalgi sessiyani davom ettirish uchn bu yerni bosing';
$messages['errcomposesession'] = 'Xatni yozish seansida xatolik';
$messages['errcomposesessionexplain'] = 'So‘ralgan xatni yozish seansi topilmadi.';
$messages['clicktocompose'] = 'Yangi xat yozish uchun bu yerni bosing';
localization/nn_NO/labels.inc000064400000045325151727150600012215 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Velkomen til $product';
$labels['username'] = 'Brukarnamn';
$labels['password'] = 'Passord';
$labels['server'] = 'Tenar';
$labels['login'] = 'Logg inn';
$labels['logout'] = 'Logg ut';
$labels['mail'] = 'E-post';
$labels['settings'] = 'Personlege innstillingar';
$labels['addressbook'] = 'Adressebok';
$labels['inbox'] = 'Innboks';
$labels['drafts'] = 'Kladd';
$labels['sent'] = 'Sendt';
$labels['trash'] = 'Sletta';
$labels['junk'] = 'Søppel';
$labels['subject'] = 'Emne';
$labels['from'] = 'Frå';
$labels['sender'] = 'Avsendar';
$labels['to'] = 'Til';
$labels['cc'] = 'Kopi til';
$labels['bcc'] = 'Blindkopi til';
$labels['replyto'] = 'Svar til';
$labels['followupto'] = 'Oppfølging til';
$labels['date'] = 'Dato';
$labels['size'] = 'Storleik';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisasjon';
$labels['readstatus'] = 'Lesestatus';
$labels['listoptions'] = 'Listeinnstillingar …';
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Melding $from til $to av $count';
$labels['threadsfromto'] = 'Tråd $from til $to ($count stk)';
$labels['messagenrof'] = 'Melding $nr av $count';
$labels['fromtoshort'] = '$from-$to av $count';
$labels['copy'] = 'Kopier';
$labels['move'] = 'Flytt';
$labels['moveto'] = 'flytt til …';
$labels['download'] = 'Last ned';
$labels['showattachment'] = 'Vis';
$labels['showanyway'] = 'Vis likevel';
$labels['filename'] = 'Filnamn';
$labels['filesize'] = 'Filstorleik';
$labels['addtoaddressbook'] = 'Legg til i adressebok';
$labels['sun'] = 'Sun';
$labels['mon'] = 'Mån';
$labels['tue'] = 'Tys';
$labels['wed'] = 'Ons';
$labels['thu'] = 'Tor';
$labels['fri'] = 'Fre';
$labels['sat'] = 'Lau';
$labels['sunday'] = 'Sundag';
$labels['monday'] = 'Måndag';
$labels['tuesday'] = 'Tysdag';
$labels['wednesday'] = 'Onsdag';
$labels['thursday'] = 'Torsdag';
$labels['friday'] = 'Fredag';
$labels['saturday'] = 'Laurdag';
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
$labels['apr'] = 'Apr';
$labels['may'] = 'Mai';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Aug';
$labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mars';
$labels['longapr'] = 'April';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Juni';
$labels['longjul'] = 'Juli';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Desember';
$labels['today'] = 'I dag';
$labels['refresh'] = 'Frisk opp att';
$labels['checkmail'] = 'Sjå etter nye meldingar';
$labels['compose'] = 'Skriv ei melding';
$labels['writenewmessage'] = 'Skriv ei ny melding';
$labels['reply'] = 'Svar';
$labels['replytomessage'] = 'Svar til avsendar';
$labels['replytoallmessage'] = 'Svar til avsendar og alle mottakarar';
$labels['replyall'] = 'Svar til alle';
$labels['replylist'] = 'Svar til liste';
$labels['forward'] = 'Vidaresend';
$labels['forwardinline'] = 'Send vidare innbygd';
$labels['forwardattachment'] = 'Vidresend som vedlegg';
$labels['forwardmessage'] = 'Vidaresend meldinga';
$labels['deletemessage'] = 'Slett meldinga';
$labels['movemessagetotrash'] = 'Flytt meldinga til «sletta»';
$labels['printmessage'] = 'Skriv ut meldinga';
$labels['previousmessage'] = 'Vis førre melding';
$labels['firstmessage'] = 'Vis den første meldinga';
$labels['nextmessage'] = 'Vis den neste meldinga';
$labels['lastmessage'] = 'Vis den siste meldinga';
$labels['backtolist'] = 'Tilbake til meldingslista';
$labels['viewsource'] = 'Vis kjelde';
$labels['mark'] = 'Merke';
$labels['markmessages'] = 'Marker meldingar';
$labels['markread'] = 'Som lese';
$labels['markunread'] = 'Som ulese';
$labels['markflagged'] = 'Som flagga';
$labels['markunflagged'] = 'Som uflagga';
$labels['moreactions'] = 'Fleire handlingar';
$labels['more'] = 'Meir';
$labels['back'] = 'Tilbake';
$labels['options'] = 'Innstillingar';
$labels['select'] = 'Vel';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
$labels['currpage'] = 'Gjeldande side';
$labels['isread'] = 'Lese';
$labels['unread'] = 'Uleste';
$labels['flagged'] = 'Flagga';
$labels['unanswered'] = 'Ikkje svara';
$labels['deleted'] = 'Sletta';
$labels['undeleted'] = 'Ikkje sletta';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filtrer';
$labels['list'] = 'List opp';
$labels['threads'] = 'Trådar';
$labels['expand-all'] = 'Utvid alle';
$labels['expand-unread'] = 'Utvid ulesne';
$labels['collapse-all'] = 'Slå saman alle';
$labels['threaded'] = 'Tråda';
$labels['autoexpand_threads'] = 'Utvid eposttråder';
$labels['do_expand'] = 'alle tråder';
$labels['expand_only_unread'] = 'berre med ulesne epostar';
$labels['fromto'] = 'Sendar/Mottakar';
$labels['flag'] = 'Flagg';
$labels['attachment'] = 'Vedlegg';
$labels['nonesort'] = 'Ingen';
$labels['sentdate'] = 'Sendtdato';
$labels['arrival'] = 'Mottaksdato';
$labels['asc'] = 'Alfabetisk';
$labels['desc'] = 'Motsatt alfabetisk';
$labels['listcolumns'] = 'Vis kolonner';
$labels['listsorting'] = 'Sorteringskolonne';
$labels['listorder'] = 'Sorteringsveg';
$labels['listmode'] = 'Listevisningmodus';
$labels['layoutlist'] = 'List opp';
$labels['folderactions'] = 'Mappehandlingar';
$labels['compact'] = 'Kompakt';
$labels['empty'] = 'Tom';
$labels['quota'] = 'Plassbruk';
$labels['unknown'] = 'ukjend';
$labels['unlimited'] = 'ubegrensa';
$labels['quicksearch'] = 'Snøggsøk';
$labels['resetsearch'] = 'Tilbakestill søk';
$labels['searchmod'] = 'Søkeutsagn';
$labels['msgtext'] = 'Heile eposten';
$labels['body'] = 'Meldingstekst';
$labels['openinextwin'] = 'Opna i nytt vindauga';
$labels['emlsave'] = 'Last ned (.eml)';
$labels['editasnew'] = 'Rediger som ny';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send meldinga no';
$labels['savemessage'] = 'Lagra kladd';
$labels['addattachment'] = 'Legg ved ei fil';
$labels['charset'] = 'Teiknkoding';
$labels['editortype'] = 'Redigeringstype';
$labels['returnreceipt'] = 'Epost-er-lest-kvittering';
$labels['dsn'] = 'Leveringsstatus';
$labels['mailreplyintro'] = 'Den $date skreiv $sender:';
$labels['originalmessage'] = 'Opphavleg melding';
$labels['insert'] = 'Sett inn';
$labels['recipient'] = 'Mottakar';
$labels['editidents'] = 'Redigere identitetar';
$labels['spellcheck'] = 'Stavekontroll';
$labels['checkspelling'] = 'Stavekontroll';
$labels['resumeediting'] = 'Hald fram redigering';
$labels['revertto'] = 'Tilbakestill til';
$labels['attach'] = 'Legg ved';
$labels['attachments'] = 'Vedlegg';
$labels['upload'] = 'Last opp';
$labels['close'] = 'Steng';
$labels['messageoptions'] = 'Meldingsalternativ';
$labels['low'] = 'Låg';
$labels['lowest'] = 'Lågast';
$labels['normal'] = 'Normal';
$labels['high'] = 'Høg';
$labels['highest'] = 'Høgast';
$labels['nosubject'] = '(ingen emne)';
$labels['showimages'] = 'Vis bilete';
$labels['alwaysshow'] = 'Alltid vis bilete frå $sender';
$labels['isdraft'] = 'Dette er ein kladd.';
$labels['andnmore'] = '$nr fleire …';
$labels['togglemoreheaders'] = 'Vis fleire meldingshovud';
$labels['togglefullheaders'] = 'Veksle vising av meldinga sine headere i råformat';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Vanleg tekst';
$labels['savesentmessagein'] = 'Lagra sendt epost i';
$labels['dontsave'] = 'Ikkje lagra';
$labels['maxuploadsize'] = 'Maksimalt tillatte storleik på filar er $size';
$labels['addcc'] = 'Legg til kopi';
$labels['addbcc'] = 'Legg til blindkopi';
$labels['addreplyto'] = 'Legg til svaradressa';
$labels['addfollowupto'] = 'Legg til oppfylgjing';
$labels['mdnrequest'] = 'Sendaren av denne meldinga ynskjer å få kvittering når du har lest meldinga. Ynskjer du å senda denne kvitteringa?';
$labels['receiptread'] = 'Svarkvittering (eposten-er-lest-kvittering)';
$labels['yourmessage'] = 'Dette er ein retur-kvittering for meldinga di.';
$labels['receiptnote'] = 'Hugs: Denne kvitteringa seier berre at meldinga di vart vist på mottakar sin datamaskin. Det er ingen garanti for at mottakaren faktisk har lese eller forstått innhaldet i meldinga.';
$labels['name'] = 'Visingsnamn';
$labels['firstname'] = 'Førenamn';
$labels['surname'] = 'Etternamn';
$labels['middlename'] = 'Mellomnamn';
$labels['nameprefix'] = 'Prefiks';
$labels['namesuffix'] = 'Suffiks';
$labels['nickname'] = 'Kallenamn';
$labels['jobtitle'] = 'Jobbtittel';
$labels['department'] = 'Avdeling';
$labels['gender'] = 'Kjønn';
$labels['maidenname'] = 'Pikenamn';
$labels['email'] = 'E-post';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresse';
$labels['street'] = 'Gate';
$labels['locality'] = 'By';
$labels['zipcode'] = 'Postnummer';
$labels['region'] = 'Stat/provins';
$labels['country'] = 'Land';
$labels['birthday'] = 'Fødselsdag';
$labels['anniversary'] = 'Bryllaupsdag';
$labels['website'] = 'Internettside';
$labels['instantmessenger'] = 'Lynmelding';
$labels['notes'] = 'Notatar';
$labels['male'] = 'Mann';
$labels['female'] = 'Kvinne';
$labels['manager'] = 'Leiar';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Ektefelle';
$labels['allfields'] = 'Alle felt';
$labels['search'] = 'Søk';
$labels['advsearch'] = 'Avansert søk';
$labels['advanced'] = 'Avansert';
$labels['other'] = 'Andre';
$labels['typehome'] = 'Heim';
$labels['typework'] = 'Jobb';
$labels['typeother'] = 'Andre';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Hovud';
$labels['typehomefax'] = 'Heimefax';
$labels['typeworkfax'] = 'Jobbfax';
$labels['typecar'] = 'Bil';
$labels['typepager'] = 'Personsøkjar';
$labels['typevideo'] = 'VIdeo';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Heimeside';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Legg til felt...';
$labels['editcontact'] = 'Redigere kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Eigenskapar';
$labels['personalinfo'] = 'Personleg informasjon';
$labels['edit'] = 'Redigere';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Lagre';
$labels['delete'] = 'Slette';
$labels['rename'] = 'Gi nytt namn';
$labels['addphoto'] = 'Legg til';
$labels['replacephoto'] = 'Erstatt';
$labels['uploadphoto'] = 'Last opp bilete';
$labels['deletecontact'] = 'Slett valde kontaktar';
$labels['composeto'] = 'Ny melding til';
$labels['contactsfromto'] = 'Kontaktar $from til $to av $count';
$labels['print'] = 'Skriv ut';
$labels['export'] = 'Eksport';
$labels['exportall'] = 'Eksporter alle';
$labels['exportsel'] = 'Eksporter valde';
$labels['exportvcards'] = 'Eksporter kontaktar i vCard-format';
$labels['grouprename'] = 'Endre namn på gruppe';
$labels['groupdelete'] = 'Slett gruppe';
$labels['groupremoveselected'] = 'Fjern valde kontaktar frå gruppe';
$labels['previouspage'] = 'Førre side';
$labels['firstpage'] = 'Første side';
$labels['nextpage'] = 'Neste side';
$labels['lastpage'] = 'Siste side';
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Gruppar';
$labels['personaladrbook'] = 'Personlege adresser';
$labels['searchsave'] = 'Lagre søk';
$labels['searchdelete'] = 'Slett søk';
$labels['import'] = 'Importer';
$labels['importcontacts'] = 'Importer kontaktar';
$labels['importreplace'] = 'Byt ut heile adresseboka';
$labels['done'] = 'Ferdig';
$labels['settingsfor'] = 'Innstillingar for';
$labels['about'] = 'Om';
$labels['preferences'] = 'Innstillingar';
$labels['userpreferences'] = 'Brukarinnstillingar';
$labels['editpreferences'] = 'Redigere brukarinnstillingar';
$labels['identities'] = 'Identitetar';
$labels['preferhtml'] = 'Føretrekk HTML';
$labels['defaultcharset'] = 'Standard karaktersett (charset)';
$labels['htmlmessage'] = 'HTML-melding';
$labels['messagepart'] = 'Del';
$labels['digitalsig'] = 'Digital signatur';
$labels['dateformat'] = 'Datoformat';
$labels['timeformat'] = 'Tidsformat';
$labels['prettydate'] = 'Pene datoar';
$labels['setdefault'] = 'Set som standard';
$labels['autodetect'] = 'Automatisk';
$labels['language'] = 'Språk';
$labels['timezone'] = 'Tidssone';
$labels['pagesize'] = 'Rader pr side';
$labels['signature'] = 'Signartur';
$labels['dstactive'] = 'Sumartid';
$labels['showinextwin'] = 'Opna melding i nytt vindauge';
$labels['composeextwin'] = 'Skriv i nytt vindauge';
$labels['htmleditor'] = 'Lag HTML-meldingar';
$labels['htmlonreply'] = 'ved svar på HTML-melding';
$labels['htmlonreplyandforward'] = 'ved vidaresending av eller svar på HTML-melding';
$labels['htmlsignature'] = 'HTML-signatur';
$labels['previewpane'] = 'Vis førehandsvisningsboks';
$labels['skin'] = 'Bunad';
$labels['logoutclear'] = 'Fjern alt i «sletta element» ved utlogging';
$labels['logoutcompact'] = 'Samanpress innboks ved utlogging';
$labels['uisettings'] = 'Brukargrensesnitt';
$labels['serversettings'] = 'Tenarinstillingar';
$labels['mailboxview'] = 'Epostboksvisning';
$labels['mdnrequests'] = 'Sender-notifisering';
$labels['askuser'] = 'spør brukaren';
$labels['autosend'] = 'send automatisk';
$labels['autosendknown'] = 'send kvittering til kontaktane mine, ellers spør meg';
$labels['autosendknownignore'] = 'send kvittering til kontaktane mine, ellers oversjå';
$labels['readwhendeleted'] = 'Marker melding som lese ved sletting';
$labels['flagfordeletion'] = 'Flagg meldinga for sletting i staden for å sletta';
$labels['skipdeleted'] = 'Ikkje vis sletta epostar';
$labels['deletealways'] = 'Slett epostar som ikkje kan flyttast til søppelkorga';
$labels['deletejunk'] = 'Slett meldingar i spam direkte';
$labels['showremoteimages'] = 'Vis eksterne bilete';
$labels['fromknownsenders'] = 'frå kjende sendarar';
$labels['always'] = 'alltid';
$labels['showinlineimages'] = 'Vis vedlagte bilete under meldinga';
$labels['autosavedraft'] = 'Lagra kladd automatisk';
$labels['everynminutes'] = 'kvart $n minutt';
$labels['refreshinterval'] = 'Oppdater (sjekk for nye meldingar osv.)';
$labels['never'] = 'aldri';
$labels['immediately'] = 'med ein gong';
$labels['messagesdisplaying'] = 'Meldingar som viser';
$labels['messagescomposition'] = 'Meldingar sin komposisjon';
$labels['mimeparamfolding'] = 'Vedleggsnamn';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Bruk MIME-enkoding for 8-bit characterer (æøå og slik)';
$labels['advancedoptions'] = 'Avanserte val';
$labels['focusonnewmessage'] = 'Fokuser nettlesarvindauge på ny epost';
$labels['checkallfolders'] = 'Sjekk alle mappar for nye epostar';
$labels['defaultfont'] = 'Standard skrifttype i HTML-melding';
$labels['mainoptions'] = 'Hovudinnstillingar';
$labels['browseroptions'] = 'Alternativ for nettlesar';
$labels['section'] = 'Seksjon';
$labels['maintenance'] = 'Vedlikehald';
$labels['newmessage'] = 'Ny epost';
$labels['signatureoptions'] = 'Signatur-innstillingar';
$labels['whenreplying'] = 'Når du svarar';
$labels['replyempty'] = 'Ikkje siter den opphavlege meldinga';
$labels['replytopposting'] = 'start ny epost oppante originalen';
$labels['replybottomposting'] = 'start ny epost nedanfor originalen';
$labels['replyremovesignature'] = 'Fjern den original signatur frå eposten når du svarar';
$labels['autoaddsignature'] = 'Legg signatur til automatisk';
$labels['newmessageonly'] = 'berre på nye epostar';
$labels['replyandforwardonly'] = 'berre på svar og vidaresending';
$labels['insertsignature'] = 'Sett inn signatur';
$labels['afternseconds'] = 'etter $n sekund';
$labels['reqmdn'] = 'Alltid be om svarkvittering';
$labels['reqdsn'] = 'Alltid be om leveringsstatus';
$labels['replysamefolder'] = 'Legg svar i mappa til meldinga det vert svara på';
$labels['defaultabook'] = 'Standard adressebok';
$labels['autocompletesingle'] = 'Hopp over alternative e-postadresser i autofullføring';
$labels['listnamedisplay'] = 'Vis kontaktar som';
$labels['spellcheckbeforesend'] = 'Kontroller staving før ei melding sendast';
$labels['spellcheckoptions'] = 'Alternativ for stavekontroll';
$labels['spellcheckignoresyms'] = 'Ignorer ord med symbol';
$labels['spellcheckignorenums'] = 'Ignorer ord med tal';
$labels['spellcheckignorecaps'] = 'Ignorer ord med berre store bokstavar';
$labels['addtodict'] = 'Legg til i ordliste';
$labels['mailtoprotohandler'] = 'Registrer protokollhandsaming for mailto-lenkjer';
$labels['forwardmode'] = 'Meldingar vidaresendast';
$labels['inline'] = 'i teksten';
$labels['asattachment'] = 'som vedlegg';
$labels['allmessages'] = 'alle meldingar';
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenamn';
$labels['subscribed'] = 'Abonnert';
$labels['messagecount'] = 'Meldingar';
$labels['create'] = 'Opprette';
$labels['createfolder'] = 'Opprett ny mappe';
$labels['managefolders'] = 'Mappehandsaming';
$labels['specialfolders'] = 'Spesialmapper';
$labels['properties'] = 'Eigenskapar';
$labels['folderproperties'] = 'Eigenskapar for mappe';
$labels['parentfolder'] = 'Mappa over';
$labels['location'] = 'Stad';
$labels['info'] = 'Informasjon';
$labels['getfoldersize'] = 'Klikk for å få mappestørrelse';
$labels['changesubscription'] = 'Klikk for å endre abonnement';
$labels['foldertype'] = 'Mappetype';
$labels['personalfolder'] = 'Privat mappe';
$labels['otherfolder'] = 'Annan brukar si mappe';
$labels['sharedfolder'] = 'Offentleg mappe';
$labels['sortby'] = 'Sorter etter';
$labels['sortasc'] = 'Sorter stigande';
$labels['sortdesc'] = 'Sorter søkkjande';
$labels['undo'] = 'Gjer om';
$labels['installedplugins'] = 'Installerte tillegg';
$labels['plugin'] = 'Tilleggsmodul';
$labels['version'] = 'Versjon';
$labels['source'] = 'Kjelde';
$labels['license'] = 'Lisens';
$labels['support'] = 'Få hjelp';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'UNicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Vest-europesik';
$labels['easterneuropean'] = 'Aust-europesik';
$labels['southeasterneuropean'] = 'Sør-aust-europeisk';
$labels['baltic'] = 'Baltisk';
$labels['cyrillic'] = 'Kyrilisk';
$labels['arabic'] = 'Arabisk';
$labels['greek'] = 'Gresk';
$labels['hebrew'] = 'Hebraisk';
$labels['turkish'] = 'Tyrkisk';
$labels['nordic'] = 'Nordisk';
$labels['thai'] = 'Thai';
$labels['celtic'] = 'Keltisk';
$labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
localization/nn_NO/messages.inc000064400000022455151727150600012561 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Noko gjekk feil.';
$messages['loginfailed']  = 'Feil ved innlogging.';
$messages['cookiesdisabled'] = 'Nettlesaren din tillet ikkje informasjonskapslar (cookies).';
$messages['sessionerror'] = 'Økta di er ugyldig eller har gått ut på tid.';
$messages['storageerror'] = 'Tilkoplinga til lagringstenaren vart mislukka.';
$messages['servererror'] = 'Tenarfeil.';
$messages['servererrormsg'] = 'Tenarfeil: $msg';
$messages['dberror'] = 'Databasefeil!';
$messages['requesttimedout'] = 'Førespurnaden fekk tidsavbrot';
$messages['errorreadonly'] = 'Klarte ikkje utføra handlinga. Mappa kan berre lesast.';
$messages['errornoperm'] = 'Klarte ikkje utføra handlinga. Nekta tilgang.';
$messages['invalidrequest'] = 'Eg forstår ingen ting! Ingen data lagra.';
$messages['invalidhost'] = 'Ugyldig tenarnamn.';
$messages['nomessagesfound'] = 'Ingen meldingar i denne postkassa.';
$messages['refreshing'] = 'Oppdaterer …';
$messages['loading'] = 'Hentar …';
$messages['uploading'] = 'Lastar opp fil …';
$messages['uploadingmany'] = 'Lastar opp filer …';
$messages['loadingdata'] = 'Hentar data …';
$messages['checkingmail'] = 'Ser etter nye meldingar …';
$messages['sendingmessage'] = 'Sender melding …';
$messages['messagesent'] = 'Meldinga vart sendt.';
$messages['savingmessage'] = 'Lagrar melding …';
$messages['messagesaved'] = 'Melding lagra som kladd.';
$messages['successfullysaved'] = 'Meldinga vart lagra.';
$messages['addedsuccessfully'] = 'Kontakta vart lagt til i adresseboka.';
$messages['contactnameexists'] = 'Det finst allereie en kontakt med dette namnet.';
$messages['blockedimages'] = 'Av omsyn til personvernet ditt er eksterne bilete blokkerte i denne meldinga.';
$messages['encryptedmessage'] = 'Dette er ei kryptert melding og kan ikkje visast. Orsak!';
$messages['nocontactsfound'] = 'Fann ingen kontaktar.';
$messages['contactnotfound'] = 'Fann ikkje kontakten du såg etter.';
$messages['sendingfailed'] = 'Klarte ikkje senda meldinga.';
$messages['senttooquickly'] = 'Du må venta $sec sekund for å senda meldinga.';
$messages['errormoving'] = 'Klarte ikkje flytte meldinga(r).';
$messages['errorcopying'] = 'Klarte ikkje kopiera meldinga(r).';
$messages['errordeleting'] = 'Klarte ikkje sletta meldinga(r).';
$messages['errormarking'] = 'Klarte ikkje markera meldinga(r).';
$messages['deletecontactconfirm']  = 'Sletta kontakt(ar)?';
$messages['deletegroupconfirm']  = 'Vil du sletta den valde gruppa?';
$messages['deletemessagesconfirm'] = 'Sletta melding(ar)?';
$messages['deletefolderconfirm']  = 'Sletta mappa?';
$messages['purgefolderconfirm']  = 'Sletta alle meldingane i denne mappa?';
$messages['contactdeleting'] = 'Slettar kontakt(ar) …';
$messages['groupdeleting'] = 'Slettar gruppe …';
$messages['folderdeleting'] = 'Slettar mappe …';
$messages['foldermoving'] = 'Flyttar mappe …';
$messages['foldersubscribing'] = 'Abonnerer på mappe …';
$messages['folderunsubscribing'] = 'Avsluttar mappeabonnement …';
$messages['formincomplete'] = 'Skjemaet var ikkje fullstendig fylt ut.';
$messages['noemailwarning'] = 'Skriv ei gyldig e-postadresse.';
$messages['nonamewarning']  = 'Skriv eit namn.';
$messages['nopagesizewarning'] = 'Oppgje sidestorleik.';
$messages['norecipientwarning'] = 'Skriv minst ein mottakar.';
$messages['nosubjectwarning']  = 'Emnefeltet er tomt. Vil du skriva eitt emne no?';
$messages['nobodywarning'] = 'Senda meldinga utan tekst?';
$messages['nosearchname'] = 'Skriv kontaktnamn eller epostadresse.';
$messages['notuploadedwarning'] = 'Ikkje alle vedlegga er ferdig opplasta enno. Vent litt til, eller avbryt opplastinga.';
$messages['searchsuccessful'] = 'Fann $nr meldingar.';
$messages['contactsearchsuccessful'] = '$nr kontaktar funne.';
$messages['searchnomatch'] = 'Søket fann ingenting.';
$messages['searching'] = 'Søkjer …';
$messages['checking'] = 'Sjekkar …';
$messages['nospellerrors'] = 'Fann ingen skrivefeil.';
$messages['folderdeleted'] = 'Mappe sletta.';
$messages['foldersubscribed'] = 'Abonnerte på mappa.';
$messages['folderunsubscribed'] = 'Avslutta mappeabonnement.';
$messages['deletedsuccessfully'] = 'Sletta.';
$messages['converting'] = 'Fjernar formatering frå meldinga …';
$messages['messageopenerror'] = 'Klarte ikkje lasta meldinga frå tenaren.';
$messages['fileuploaderror'] = 'Filopplasting feila.';
$messages['filesizeerror'] = 'Fila du lasta opp, er større enn største tillatne filstorleik, $size.';
$messages['sourceisreadonly'] = 'Denne adressekjelda er berre lesbar.';
$messages['errorsavingcontact'] = 'Klarte ikkje lagra kontaktadressa.';
$messages['movingmessage'] = 'Flyttar melding(ar) …';
$messages['copyingmessage'] = 'Kopierer melding(ar) …';
$messages['copyingcontact'] = 'Kopierer kontakt(ar) …';
$messages['deletingmessage'] = 'Slettar melding(ar) …';
$messages['markingmessage'] = 'Merkar melding(ar) …';
$messages['addingmember'] = 'Legg til kontakt(ar) i gruppa …';
$messages['removingmember'] = 'Fjernar kontakt(ar) frå gruppa …';
$messages['receiptsent'] = 'Har sendt lesekvittering.';
$messages['errorsendingreceipt'] = 'Klarte ikkje senda lesekvittering.';
$messages['deleteidentityconfirm'] = 'Vil du sletta denne identiteten?';
$messages['nodeletelastidentity'] = 'Du kan ikkje sletta denne identiteten, det er den siste.';
$messages['forbiddencharacter'] = 'Mappenamn inneheld eit teikn som ikkje er tillate.';
$messages['selectimportfile'] = 'Vel ei fil til å lasta opp.';
$messages['addresswriterror'] = 'Denne adresseboka kan ikkje skrivast til.';
$messages['contactaddedtogroup'] = 'La kontaktane til denne gruppa.';
$messages['contactremovedfromgroup'] = 'Tok vekk kontaktane frå denne gruppa.';
$messages['nogroupassignmentschanged'] = 'Endra ikkje gruppetilordningane.';
$messages['importwait'] = 'Importerer, vent …';
$messages['importformaterror'] = 'Importering feila. Den opplasta fila er i feil format.';
$messages['importconfirm'] = '<b>Importerte $inserted kontaktar</b>';
$messages['importconfirmskipped'] = '<b>Hoppa over $skipped oppføringar som fanst frå før</b>';
$messages['opnotpermitted'] = 'Ulovleg operasjon.';
$messages['httpreceivedencrypterror'] = 'En uopprettelig feil oppstod knytta til innstillingane. Kontakt systemansvarleg umiddelbart. <b>Meldinga kunne ikkje sendast.</b>';
$messages['smtpconnerror'] = 'SMTP-feil ($code): Tilkopling til tenar feila.';
$messages['smtpautherror'] = 'SMTP-feil ($code): Autentisering feila.';
$messages['smtpfromerror'] = 'SMTP-feil ($code): Klarte ikkje å angje sendar «$from» ($msg).';
$messages['smtptoerror'] = 'SMTP-feil ($code): Klarte ikkje å leggja til mottakar «$to» ($msg).';
$messages['smtprecipientserror'] = 'SMTP-feil: Klarte ikkje tolka mottakarlista.';
$messages['smtperror'] = 'SMTP-feil: $msg';
$messages['toomanyrecipients'] = 'For mange mottakarar. Senk talet til $max.';
$messages['maxgroupmembersreached'] = 'Ei gruppe kan ikkje ha fleire enn $max medlemmer.';
$messages['contactdelerror'] = 'Klarte ikkje sletta kontakt(ar).';
$messages['contactdeleted'] = 'Kontakt(ar) sletta utan feil.';
$messages['contactrestoreerror'] = 'Klarte ikkje gjenoppretta kontakt(ar).';
$messages['contactrestored'] = 'Kontakt(ar) gjennomretta utan feil.';
$messages['groupdeleted'] = 'Gruppa er sletta.';
$messages['grouprenamed'] = 'Gruppa har bytta namn.';
$messages['groupcreated'] = 'Gruppa er oppretta.';
$messages['savedsearchdeleted'] = 'Lagra søk er sletta.';
$messages['savedsearchdeleteerror'] = 'Klarte ikkje sletta lagra søk.';
$messages['savedsearchcreated'] = 'Oppretta lagra søk.';
$messages['savedsearchcreateerror'] = 'Klarte ikkje laga lagra søk.';
$messages['messagedeleted'] = 'Melding(ar) vart sletta.';
$messages['messagemoved'] = 'Melding(ar) vart flytta.';
$messages['messagecopied'] = 'Melding(ar) vart kopiert.';
$messages['messagemarked'] = 'Melding(ar) vart merka.';
$messages['autocompletechars'] = 'Skriv minst $min teikn for autofullføring.';
$messages['autocompletemore'] = 'Flere like oppføringar vart funne. Skriv fleire tegn.';
$messages['namecannotbeempty'] = 'Namn kan ikkje vera tomt.';
$messages['nametoolong'] = 'Namnet er for langt.';
$messages['folderupdated'] = 'Mappa er oppdatert.';
$messages['foldercreated'] = 'Mappa er oppretta.';
$messages['invalidimageformat'] = 'Ikke et gyldig bileteformat.';
$messages['mispellingsfound'] = 'Fann stavefeil i meldinga.';
$messages['parentnotwritable'] = 'Klarte ikkje laga/flytte mappa i vald overordna mappe. Ingen tilgangsrettar.';
$messages['messagetoobig'] = 'Meldingsdelen er for stor til å prosesserast.';
$messages['noscriptwarning'] = 'NB: Denne webmail-klienten krev JavaScript. Skru på JavaScript i nettlesaren din for å kunna bruka klienten.';
localization/zh_CN/labels.inc000064400000070701151727150600012203 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '欢迎使用 $product';
$labels['username'] = '用户名';
$labels['password'] = '密码';
$labels['server'] = '服务器';
$labels['login'] = '登录';
$labels['menu'] = '菜单';
$labels['logout'] = '注销';
$labels['mail'] = '邮件';
$labels['settings'] = '设置';
$labels['addressbook'] = '通讯录';
$labels['inbox'] = '收件箱';
$labels['drafts'] = '草稿箱';
$labels['sent'] = '已发送邮件';
$labels['trash'] = '已删除邮件';
$labels['junk'] = '垃圾邮件';
$labels['show_real_foldernames'] = '显示特殊文件夹的名字';
$labels['subject'] = '主题';
$labels['from'] = '发件人';
$labels['sender'] = '发件人';
$labels['to'] = '收件人';
$labels['cc'] = '抄送';
$labels['bcc'] = '密送';
$labels['replyto'] = '回复至';
$labels['followupto'] = '投递组';
$labels['date'] = '日期';
$labels['size'] = '大小';
$labels['priority'] = '优先级';
$labels['organization'] = '组织';
$labels['readstatus'] = '阅读状态';
$labels['listoptions'] = '列表选项';
$labels['listoptionstitle'] = '列表选项';
$labels['mailboxlist'] = '邮件夹';
$labels['messagesfromto'] = '从 $from 到 $to,共计 $count 封邮件';
$labels['threadsfromto'] = '从 $from 到 $to,共计 $count 个主题';
$labels['messagenrof'] = '第 $nr 封邮件,共计 $count 封';
$labels['fromtoshort'] = '$from – $to 共计 $count 个';
$labels['copy'] = '复制';
$labels['move'] = '移动';
$labels['moveto'] = '移至...';
$labels['copyto'] = '复制至';
$labels['download'] = '下载';
$labels['open'] = '打开';
$labels['showattachment'] = '显示';
$labels['showanyway'] = '总是显示';
$labels['filename'] = '文件名';
$labels['filesize'] = '文件大小';
$labels['addtoaddressbook'] = '添加至通讯录';
$labels['sun'] = '星期日';
$labels['mon'] = '星期一';
$labels['tue'] = '星期二';
$labels['wed'] = '星期三';
$labels['thu'] = '星期四';
$labels['fri'] = '星期五';
$labels['sat'] = '星期六';
$labels['sunday'] = '星期日';
$labels['monday'] = '星期一';
$labels['tuesday'] = '星期二';
$labels['wednesday'] = '星期三';
$labels['thursday'] = '星期四';
$labels['friday'] = '星期五';
$labels['saturday'] = '星期六';
$labels['jan'] = '一月';
$labels['feb'] = '二月';
$labels['mar'] = '三月';
$labels['apr'] = '四月';
$labels['may'] = '五月';
$labels['jun'] = '六月';
$labels['jul'] = '七月';
$labels['aug'] = '八月';
$labels['sep'] = '九月';
$labels['oct'] = '十月';
$labels['nov'] = '十一月';
$labels['dec'] = '十二月';
$labels['longjan'] = '一月';
$labels['longfeb'] = '二月';
$labels['longmar'] = '三月';
$labels['longapr'] = '四月';
$labels['longmay'] = '五月';
$labels['longjun'] = '六月';
$labels['longjul'] = '七月';
$labels['longaug'] = '八月';
$labels['longsep'] = '九月';
$labels['longoct'] = '十月';
$labels['longnov'] = '十一月';
$labels['longdec'] = '十二月';
$labels['today'] = '今天';
$labels['refresh'] = '刷新';
$labels['checkmail'] = '检查新邮件';
$labels['compose'] = '撰写新邮件';
$labels['writenewmessage'] = '写邮件';
$labels['reply'] = '回复';
$labels['replytomessage'] = '回复发件人';
$labels['replytoallmessage'] = '回复所有';
$labels['replyall'] = '回复全部';
$labels['replylist'] = '回复列表';
$labels['forward'] = '转发';
$labels['forwardinline'] = '直接转发';
$labels['forwardattachment'] = '以附件转发';
$labels['forwardmessage'] = '转发邮件';
$labels['bouncemsg'] = '重发 (回弹)';
$labels['bounce'] = '重发';
$labels['deletemessage'] = '删除邮件';
$labels['movemessagetotrash'] = '移至已删除邮件';
$labels['printmessage'] = '打印邮件';
$labels['previousmessage'] = '显示上一封邮件';
$labels['firstmessage'] = '显示第一封邮件';
$labels['nextmessage'] = '下一封';
$labels['lastmessage'] = '最后一封';
$labels['backtolist'] = '返回邮件列表';
$labels['viewsource'] = '显示来源';
$labels['mark'] = '标记为';
$labels['markmessages'] = '标记选中的邮件为';
$labels['markread'] = '已读';
$labels['markunread'] = '未读';
$labels['markflagged'] = '重要';
$labels['markunflagged'] = ' 不重要';
$labels['moreactions'] = '更多操作...';
$labels['markallread'] = '全部标为已读';
$labels['folders-cur'] = '仅选定的文件夹';
$labels['folders-sub'] = '选定的文件夹及其子文件夹';
$labels['folders-all'] = '所有文件夹';
$labels['more'] = '更多';
$labels['back'] = '返回';
$labels['options'] = '个人选项';
$labels['composeoptions'] = '撰写选项';
$labels['optionsandattachments'] = '选项和附件';
$labels['actions'] = '动作';
$labels['first'] = '首';
$labels['last'] = '尾';
$labels['previous'] = '前一';
$labels['next'] = '后一';
$labels['select'] = '选择';
$labels['all'] = '全部';
$labels['none'] = '无';
$labels['currpage'] = '当前页';
$labels['isread'] = '读';
$labels['unread'] = '未读邮件';
$labels['flagged'] = '已标记邮件';
$labels['unflagged'] = '未标记';
$labels['unanswered'] = '未回复邮件';
$labels['withattachment'] = '包含附件';
$labels['deleted'] = '已删除邮件';
$labels['undeleted'] = '未删除邮件';
$labels['replied'] = '已回复';
$labels['forwarded'] = '已转发';
$labels['invert'] = '反选';
$labels['filter'] = '过滤';
$labels['list'] = '列表';
$labels['threads'] = '主题';
$labels['expand-all'] = '展开全部';
$labels['expand-unread'] = '展开未读';
$labels['collapse-all'] = '收起全部';
$labels['threaded'] = '所有邮件';
$labels['autoexpand_threads'] = '展开消息主题';
$labels['do_expand'] = '所有主题';
$labels['expand_only_unread'] = '仅未读消息';
$labels['fromto'] = '发件人/收件人';
$labels['flag'] = '标志';
$labels['attachment'] = '附件';
$labels['nonesort'] = '无';
$labels['sentdate'] = '发送日期';
$labels['arrival'] = '到达日期';
$labels['asc'] = '升序';
$labels['desc'] = '降序';
$labels['listcolumns'] = '列表列';
$labels['listsorting'] = '排序列';
$labels['listorder'] = '排序';
$labels['listmode'] = '列表视图样式';
$labels['lmode'] = '列表模式';
$labels['layout'] = '布局';
$labels['layoutwidescreen'] = '宽屏';
$labels['layoutdesktop'] = '桌面';
$labels['layoutlist'] = '列表';
$labels['layoutwidescreendesc'] = '宽屏 (3栏)';
$labels['layoutdesktopdesc'] = '桌面 (很宽的列表,邮件预览在下方)';
$labels['layoutlistdesc'] = '纯列表 (无邮件预览)';
$labels['folderactions'] = '文件夹操作...';
$labels['compact'] = '压缩';
$labels['empty'] = '清空';
$labels['importmessages'] = '导入邮件';
$labels['quota'] = '邮箱容量';
$labels['unknown'] = '未知';
$labels['unlimited'] = '无限制';
$labels['quotatype'] = '容量类型';
$labels['quotatotal'] = '限额';
$labels['quotaused'] = '已用';
$labels['quotastorage'] = '存储空间';
$labels['quotamessage'] = '邮件数统计';
$labels['shortheaderdate'] = '在 $date';
$labels['shortheaderto'] = '在 $date 发给 $to';
$labels['shortheaderfrom'] = '在 $date 来自 $from';
$labels['quicksearch'] = '快速查找';
$labels['searchplaceholder'] = '搜索';
$labels['resetsearch'] = '清空';
$labels['searchmod'] = '修改搜索';
$labels['msgtext'] = '整封邮件';
$labels['body'] = '正文';
$labels['type'] = '类型:';
$labels['namex'] = '姓名';
$labels['searchscope'] = '范围';
$labels['currentfolder'] = '当前文件夹';
$labels['subfolders'] = '当前文件夹及其子文件夹';
$labels['allfolders'] = '所有文件夹';
$labels['searchinterval-1W'] = '早于一周';
$labels['searchinterval-1M'] = '早于一个月';
$labels['searchinterval-1Y'] = '早于一年';
$labels['searchinterval1W'] = '不到一周';
$labels['searchinterval1M'] = '不到一个月';
$labels['searchinterval1Y'] = '不到一年';
$labels['openinextwin'] = '在新窗口中打开';
$labels['emlsave'] = '下载(.eml)';
$labels['changeformattext'] = '以文本格式显示';
$labels['changeformathtml'] = '以 HTML 格式显示';
$labels['editasnew'] = '以新邮件编辑';
$labels['send'] = '发送';
$labels['sendmessage'] = '立即发送';
$labels['savemessage'] = '保存为草稿';
$labels['addattachment'] = '添加附件';
$labels['charset'] = '字符集';
$labels['editortype'] = '编辑器类型';
$labels['returnreceipt'] = '需要已读回执';
$labels['dsn'] = '投递状态通知';
$labels['mailreplyintro'] = '在 $date,$sender 写道:';
$labels['originalmessage'] = '原始邮件';
$labels['selectimage'] = '选择图片';
$labels['addimage'] = '添加图片';
$labels['selectmedia'] = '选择影片';
$labels['addmedia'] = '添加影片';
$labels['encrypt'] = '加密';
$labels['encryptmessage'] = '加密邮件';
$labels['encryptmessagemailvelope'] = '用 Mailvelope 加密邮件';
$labels['importpubkeys'] = '导入公钥';
$labels['encryptedsendialog'] = '正在发送加密的邮件';
$labels['encryptandsign'] = '加密并签名';
$labels['keyid'] = '密钥 ID';
$labels['keylength'] = '位';
$labels['keyexpired'] = '已过期';
$labels['keyrevoked'] = '已废除';
$labels['bccinstead'] = '使用密送';
$labels['addheader'] = '添加收件人 (信头)';
$labels['insert'] = '插入';
$labels['recipient'] = '收件人';
$labels['recipientedit'] = '编辑收件人';
$labels['editidents'] = '编辑身份';
$labels['spellcheck'] = '拼写';
$labels['checkspelling'] = '拼写检查';
$labels['resumeediting'] = '继续编辑';
$labels['revertto'] = '恢复至';
$labels['restore'] = '恢复信息';
$labels['restoremessage'] = '是否恢复信息?';
$labels['ignore'] = '忽略';
$labels['responses'] = '回复';
$labels['insertresponse'] = '插入回复';
$labels['manageresponses'] = '管理回复';
$labels['newresponse'] = '创建新回复';
$labels['addresponse'] = '添加回复';
$labels['editresponse'] = '编辑回复';
$labels['editresponses'] = '编辑回复';
$labels['responsename'] = '姓名';
$labels['responsetext'] = '以文本形式回复';
$labels['attach'] = '附加';
$labels['attachments'] = '附件';
$labels['upload'] = '上传';
$labels['uploadprogress'] = '$percent ($current of $total)';
$labels['close'] = '关闭';
$labels['messageoptions'] = '邮件选项...';
$labels['togglecomposeoptions'] = '切换布局选项';
$labels['attachmentrename'] = '重命名附件';
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '普通';
$labels['high'] = '高';
$labels['highest'] = '最高';
$labels['nosubject'] = '(无主题)';
$labels['showimages'] = '显示图片';
$labels['allow'] = '允许';
$labels['alwaysshow'] = '总是显示来自 $sender 的图片';
$labels['alwaysallow'] = '总是允许来自 $sender 的信件';
$labels['isdraft'] = '这是一封草稿';
$labels['andnmore'] = '第 $nr 封或更多...';
$labels['headers'] = '信头';
$labels['togglemoreheaders'] = '显示更多消息头';
$labels['togglefullheaders'] = '切换至原始消息头';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '纯文本';
$labels['savesentmessagein'] = '保存已发送邮件至';
$labels['dontsave'] = '不保存';
$labels['maxuploadsize'] = '上传附件最大不超过 $size';
$labels['addcc'] = '添加抄送';
$labels['addbcc'] = '添加密送';
$labels['addreplyto'] = '添加回复';
$labels['addfollowupto'] = '添加投递组';
$labels['mdnrequest'] = '发件人要求在您阅读这封邮件时发送已读通知。您是否希望通知发件人?';
$labels['receiptread'] = '发送回执(已读)';
$labels['yourmessage'] = '这是您的邮件回执';
$labels['receiptnote'] = '注意:回执只表示邮件在收件人的电脑上被打开过,不表示收件人已经阅读或了解邮件内容。';
$labels['zoomin'] = '放大';
$labels['zoomout'] = '缩小';
$labels['rotate'] = '旋转';
$labels['increaseimage'] = '增加图片大小';
$labels['decreaseimage'] = '减小图片大小';
$labels['rotateimage'] = '旋转图片';
$labels['showtools'] = '显示图像工具';
$labels['hidetools'] = '隐藏图像工具';
$labels['name'] = '显示名称';
$labels['firstname'] = '名字';
$labels['surname'] = '姓氏';
$labels['middlename'] = '中名';
$labels['nameprefix'] = '前缀';
$labels['namesuffix'] = '后缀';
$labels['nickname'] = '昵称';
$labels['jobtitle'] = '职位';
$labels['department'] = '部门';
$labels['gender'] = '性别';
$labels['maidenname'] = '娘家姓';
$labels['email'] = '邮件地址';
$labels['phone'] = '电话';
$labels['address'] = '地址';
$labels['street'] = '街道';
$labels['locality'] = '城市';
$labels['zipcode'] = '邮编';
$labels['region'] = '省份';
$labels['country'] = '国家';
$labels['birthday'] = '生日';
$labels['anniversary'] = '纪念日';
$labels['website'] = '主页';
$labels['instantmessenger'] = '即时通讯';
$labels['notes'] = '备注';
$labels['male'] = '男';
$labels['female'] = '女';
$labels['manager'] = '经理';
$labels['assistant'] = '助理';
$labels['spouse'] = '配偶';
$labels['allfields'] = '所有栏目';
$labels['search'] = '查询';
$labels['searchresult'] = '查找结果';
$labels['advsearch'] = '高级查询';
$labels['advanced'] = '高级选项';
$labels['other'] = '其他';
$labels['printcontact'] = '打印联系人';
$labels['qrcode'] = '二维码';
$labels['typehome'] = '家庭';
$labels['typework'] = '工作';
$labels['typeother'] = '其他';
$labels['typemobile'] = '手机';
$labels['typemain'] = '主要';
$labels['typehomefax'] = '家庭传真';
$labels['typeworkfax'] = '工作传真';
$labels['typecar'] = '车牌';
$labels['typepager'] = '呼机';
$labels['typevideo'] = '视频';
$labels['typeassistant'] = '助理';
$labels['typehomepage'] = '主页';
$labels['typeblog'] = '博客';
$labels['typeprofile'] = '资料';
$labels['addfield'] = '新增条目...';
$labels['addcontact'] = '添加联系人';
$labels['editcontact'] = '编辑联系人';
$labels['contacts'] = '联系人';
$labels['contactproperties'] = '联系人信息';
$labels['contactnameandorg'] = '姓名和公司';
$labels['personalinfo'] = '个人信息';
$labels['personal'] = '个人';
$labels['contactphoto'] = '联系人照片';
$labels['edit'] = '编辑';
$labels['cancel'] = '取消';
$labels['save'] = '保存';
$labels['delete'] = '删除';
$labels['discard'] = '丢弃';
$labels['continue'] = '继续';
$labels['ok'] = '确定';
$labels['rename'] = '重命名';
$labels['addphoto'] = '上传';
$labels['replacephoto'] = '替换照片';
$labels['uploadphoto'] = '上传照片';
$labels['newcontact'] = '新建联系人';
$labels['deletecontact'] = '删除选中的联系人';
$labels['composeto'] = '写信至选中的联系人';
$labels['contactsfromto'] = '第 $from 到 $to 个联系人,共 $count 个';
$labels['print'] = '打印';
$labels['export'] = '导出';
$labels['exportall'] = '导出全部';
$labels['exportsel'] = '导出选中';
$labels['exportvcards'] = '导出联系人为 vCard 格式';
$labels['newgroup'] = '创建新组';
$labels['addgroup'] = '新建组';
$labels['grouprename'] = '重命名群组';
$labels['groupdelete'] = '删除群组';
$labels['groupassign'] = '分配到分组…';
$labels['groupremove'] = '从分组中移除';
$labels['groupremoveselected'] = '删除选中';
$labels['uponelevel'] = '升一级';
$labels['previouspage'] = '上一页';
$labels['firstpage'] = '首页';
$labels['nextpage'] = '下一页';
$labels['lastpage'] = '末页';
$labels['group'] = '分组';
$labels['groups'] = '分组';
$labels['listgroup'] = '列出联系人名单';
$labels['personaladrbook'] = '个人通讯录';
$labels['searchsave'] = '保存搜索';
$labels['searchdelete'] = '删除搜索';
$labels['import'] = '导入';
$labels['importcontacts'] = '导入通讯录';
$labels['importfromfile'] = '从文件导入';
$labels['importtarget'] = '添加联系人至';
$labels['importreplace'] = '替换全部通讯录';
$labels['importgroups'] = '导入群组任务';
$labels['importgroupsall'] = '全部(如果需要则创建新的群组)';
$labels['importgroupsexisting'] = '仅限于已有群组';
$labels['done'] = '完成';
$labels['settingsfor'] = '设置';
$labels['about'] = '关于';
$labels['preferences'] = '选项';
$labels['userpreferences'] = '个人选项';
$labels['editpreferences'] = '修改个人选项';
$labels['identities'] = '发件人身份';
$labels['manageidentities'] = '管理身份';
$labels['newidentity'] = '创建新身份';
$labels['addidentity'] = '添加身份';
$labels['editidentity'] = '编辑身份';
$labels['identityencryption'] = '加密';
$labels['preferhtml'] = '以 HTML 格式显示';
$labels['defaultcharset'] = '默认字符集';
$labels['htmlmessage'] = 'HTML 邮件';
$labels['messagepart'] = '部分';
$labels['digitalsig'] = '数字签名';
$labels['dateformat'] = '日期格式';
$labels['timeformat'] = '时间格式';
$labels['prettydate'] = '短日期格式';
$labels['setdefault'] = '设为默认';
$labels['autodetect'] = '自动';
$labels['language'] = '语言';
$labels['timezone'] = '时区';
$labels['pagesize'] = '每页显示的邮件数量';
$labels['signature'] = '签名';
$labels['dstactive'] = '夏令时';
$labels['showinextwin'] = '在新窗口中打开';
$labels['composeextwin'] = '在新窗口中撰写';
$labels['htmleditor'] = '使用 HTML 编辑器';
$labels['htmlonreply'] = '仅当回复 HTML 邮件时';
$labels['htmlonreplyandforward'] = '仅当回复或转发 HTML 邮件时';
$labels['htmlsignature'] = '使用 HTML 签名';
$labels['showemail'] = '显示邮件地址时显示名字';
$labels['previewpane'] = '显示预览窗口';
$labels['skin'] = '界面皮肤';
$labels['logoutclear'] = '退出时清空回收站';
$labels['logoutcompact'] = '退出时压缩收件箱';
$labels['uisettings'] = '用户界面';
$labels['serversettings'] = '服务端设置';
$labels['mailboxview'] = '显示邮件';
$labels['mdnrequests'] = '发件人请求回执';
$labels['askuser'] = '询问用户';
$labels['autosend'] = '自动发送';
$labels['autosendknown'] = '对我的联系人发送回执,否则询问';
$labels['autosendknownignore'] = '对我的联系人发送回执,否则忽略';
$labels['ignorerequest'] = '忽略请求';
$labels['readwhendeleted'] = '删除后标记为已读';
$labels['flagfordeletion'] = '标记邮件为已删除而不是实际删除';
$labels['skipdeleted'] = '不显示标记为已删除的邮件';
$labels['deletealways'] = '如果移动邮件到回收站失败,则删除';
$labels['deletejunk'] = '直接删除垃圾邮箱中的邮件';
$labels['showremoteimages'] = '显示内嵌的图片';
$labels['allowremoteresources'] = '允许远程资源 (图片和样式表)';
$labels['fromknownsenders'] = '来自已知发件人';
$labels['always'] = '总是';
$labels['alwaysbutplain'] = '始终,除了回复纯文本';
$labels['showinlineimages'] = '在邮件下方显示附件中的图片';
$labels['autosavedraft'] = '自动保存到草稿箱';
$labels['everynminutes'] = '每隔 $n 分钟';
$labels['refreshinterval'] = '刷新间隔';
$labels['never'] = '从不';
$labels['immediately'] = '立即';
$labels['messagesdisplaying'] = '显示参数';
$labels['messagescomposition'] = '撰写邮件';
$labels['mimeparamfolding'] = '附件名';
$labels['2231folding'] = '完整的 RFC 2231(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2232(MS Outlook)';
$labels['2047folding'] = '完整的 RFC 2047(其它)';
$labels['force7bit'] = '对 8 位字符使用 MIME 编码';
$labels['savelocalstorage'] = "保存到浏览器的本地存储(临时)";
$labels['advancedoptions'] = '高级选项';
$labels['toggleadvancedoptions'] = '切换高级选项';
$labels['focusonnewmessage'] = '新邮件到达时将窗口提升为焦点窗口';
$labels['checkallfolders'] = '检查所有邮件夹里的新邮件';
$labels['defaultfont'] = '默认的 HTML 格式字体';
$labels['mainoptions'] = '主要选项';
$labels['browseroptions'] = '浏览器选项';
$labels['section'] = '项目';
$labels['maintenance'] = '维护';
$labels['newmessage'] = '新邮件';
$labels['signatureoptions'] = '签名选项';
$labels['whenreplying'] = '当回复时';
$labels['replyempty'] = '不要引用原始邮件';
$labels['replytopposting'] = '在原文上面开始新邮件';
$labels['replytoppostingnoindent'] = '在引用上方开始写新的消息 (不要使用缩进)';
$labels['replybottomposting'] = '在原文下面开始新邮件';
$labels['replyremovesignature'] = '当回复时从邮件移除原始签名';
$labels['autoaddsignature'] = '自动插入签名';
$labels['newmessageonly'] = '仅新邮件';
$labels['replyandforwardonly'] = '仅回复和转发邮件';
$labels['insertsignature'] = '插入签名';
$labels['sigbelow'] = '在引文的下方放置签名';
$labels['sigseparator'] = '强制标准的签名分隔符';
$labels['automarkread'] = '标记为已读';
$labels['afternseconds'] = '$n 秒之后';
$labels['reqmdn'] = '总是要求回执';
$labels['reqdsn'] = '总是要求投递状态通知';
$labels['replysamefolder'] = '保存回复邮件到邮件相同的文件夹';
$labels['defaultabook'] = '默认地址薄';
$labels['autocompletesingle'] = '跳过自动完成的电子邮件地址';
$labels['listnamedisplay'] = '列出联系人为';
$labels['spellcheckbeforesend'] = '发邮件前进行拼写检查';
$labels['spellcheckoptions'] = '拼写检查选项';
$labels['spellcheckignoresyms'] = '忽略带符号的单词';
$labels['spellcheckignorenums'] = '忽略带数字的单词';
$labels['spellcheckignorecaps'] = '忽略所有大写字母的单词';
$labels['addtodict'] = '添加到字典中';
$labels['mailtoprotohandler'] = '注册为处理 mailto 链接的程序';
$labels['standardwindows'] = '以标准窗口的形式弹出窗口';
$labels['forwardmode'] = '邮件转发方式';
$labels['inline'] = '内嵌';
$labels['asattachment'] = '作为附件';
$labels['replyallmode'] = '[回复所有]按钮的默认动作';
$labels['replyalldefault'] = '回复全部';
$labels['replyalllist'] = '只回复邮件列表中的联系人(找到的)';
$labels['allmessages'] = '所有邮件';
$labels['folder'] = '文件夹管理';
$labels['folders'] = '文件夹管理';
$labels['foldername'] = '邮件夹名称';
$labels['subscribed'] = '已订阅';
$labels['messagecount'] = '邮件数量';
$labels['create'] = '建立';
$labels['createfolder'] = '建立新邮件夹';
$labels['managefolders'] = '管理邮件夹';
$labels['specialfolders'] = '自定义邮件夹';
$labels['properties'] = '属性';
$labels['folderproperties'] = '文件夹属性';
$labels['parentfolder'] = '父文件夹';
$labels['location'] = '位置';
$labels['info'] = '信息';
$labels['getfoldersize'] = '获得文件夹容量';
$labels['changesubscription'] = '更改订阅';
$labels['foldertype'] = '文件夹类型';
$labels['personalfolder'] = '私有文件夹';
$labels['otherfolder'] = '他人文件夹';
$labels['sharedfolder'] = '共享文件夹';
$labels['findfolders'] = '查找文件夹';
$labels['findcontacts'] = '查找联系人';
$labels['findmail'] = '查找邮件';
$labels['namespace.personal'] = '个人';
$labels['namespace.other'] = '其他用户';
$labels['namespace.shared'] = '已共享';
$labels['dualuselabel'] = '只能包含';
$labels['dualusemail'] = '消息';
$labels['dualusefolder'] = '文件夹';
$labels['generate'] = '生成';
$labels['encryptioncreatekey'] = '创建新密钥对';
$labels['openmailvelopesettings'] = '打开 Mailvelope 设置';
$labels['encryptionprivkeysinmailvelope'] = '你的 Mailvelope 钥匙环中有 $nr 项符合条件的 PGP 私钥:';
$labels['encryptionnoprivkeysinmailvelope'] = '你的 Mailvelope 插件钥匙环中没有符合此发件人身份的 PGP 私钥。你想要生成一个以启用加密消息吗?';
$labels['encryption'] = '加密';
$labels['sortby'] = '排序';
$labels['sortasc'] = '递增排序';
$labels['sortdesc'] = '递减排序';
$labels['undo'] = '撤销';
$labels['installedplugins'] = '已安装插件';
$labels['plugin'] = '插件';
$labels['version'] = '版本';
$labels['source'] = '源代码';
$labels['license'] = '许可协议';
$labels['support'] = '支持';
$labels['savedsearches'] = '已保存的搜索';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = '英语';
$labels['westerneuropean'] = '西欧';
$labels['easterneuropean'] = '东欧';
$labels['southeasterneuropean'] = '东南欧';
$labels['baltic'] = '波罗的语';
$labels['cyrillic'] = '西里尔语';
$labels['arabic'] = '阿拉伯语';
$labels['greek'] = '希腊语';
$labels['hebrew'] = '希伯来语';
$labels['turkish'] = '土耳其语';
$labels['nordic'] = '北欧';
$labels['thai'] = '泰语';
$labels['celtic'] = '塞尔特语';
$labels['vietnamese'] = '越南语';
$labels['japanese'] = '日文';
$labels['korean'] = '韩语';
$labels['chinese'] = '中文';
$labels['arialabeltopnav'] = '窗口控制';
$labels['arialabeltasknav'] = '应用事务';
$labels['arialabeltoolbar'] = '应用工具栏';
$labels['arialabelactivetask'] = '活动事务';
$labels['arialabelmessagessearchfilter'] = '邮件列表过滤器';
$labels['arialabelmailsearchform'] = '邮件信息查询表单';
$labels['arialabelcontactsearchform'] = '联系人查询表单';
$labels['arialabelmailquicksearchbox'] = '邮件查询条件';
$labels['arialabelquicksearchbox'] = '查询条件';
$labels['arialabelfoldersearchfilter'] = '文件夹列出过滤器';
$labels['arialabelfoldersearchform'] = '文件夹搜索自';
$labels['arialabelfolderlist'] = '邮件文件夹选择';
$labels['arialabelmessagelist'] = '邮件信息列表';
$labels['arialabelmailpreviewframe'] = '邮件预览';
$labels['arialabelmailboxmenu'] = '文件夹操作菜单';
$labels['arialabellistselectmenu'] = '列表选择菜单';
$labels['arialabelthreadselectmenu'] = '线程列表菜单';
$labels['arialabelmessagelistoptions'] = '邮件列表显示和排序选项';
$labels['arialabelmailimportdialog'] = '邮件导入对话框';
$labels['arialabelmessagenav'] = '邮件导航';
$labels['arialabelmessagebody'] = '邮件正文';
$labels['arialabelmessageactions'] = '邮件动作';
$labels['arialabelcontactquicksearch'] = '联系人查询表单';
$labels['arialabelcontactsearchbox'] = '联系人查询条件';
$labels['arialabelmessageheaders'] = '邮件头';
$labels['arialabelforwardingoptions'] = '转发选项';
$labels['arialabelreplyalloptions'] = '回复全部选项';
$labels['arialabelmoremessageactions'] = '更多邮件选项';
$labels['arialabelmorecontactactions'] = '更多联系人操作';
$labels['arialabelmarkmessagesas'] = '标记选中邮件为...';
$labels['arialabelcomposeoptions'] = '布局选项';
$labels['arialabelresponsesmenu'] = '预设回复菜单';
$labels['arialabelattachmentuploadform'] = '附件上传表单';
$labels['arialabelattachmentmenu'] = '附件选项';
$labels['arialabelmailtomenu'] = '邮件地址选项';
$labels['arialabelattachmentpreview'] = '附件预览';
$labels['ariasummarycomposecontacts'] = '选择联系人或组作为收件人';
$labels['arialabelcontactexportoptions'] = '联系人导出选项';
$labels['arialabelabookgroupoptions'] = '地址簿/组选项';
$labels['arialabelpreferencesform'] = '偏好设置表单';
$labels['arialabelidentityeditfrom'] = '标识编辑表单';
$labels['arialabelresponseeditfrom'] = '回复编辑表单';
$labels['arialabelsearchterms'] = '搜索关键词';
$labels['arialabeldropactionmenu'] = '拖拽选项菜单';
$labels['arialabelheadersmenu'] = '收件人 (信头) 添加菜单';
$labels['arialabelimagetools'] = '图片工具';
$labels['helplistnavigation'] = '列表键盘导航';
$labels['helplistkeyboardnavigation'] = "方向键上/下:移动选中/焦点所在行。
空格键:选中焦点所在行。
Shift + 上/下:再选中上方/下方的行。
Ctrl + 空格键:将焦点所在行添加/移除选中。";
$labels['helplistkeyboardnavmessages'] = "方向键左/右:展开/折叠消息话题(仅话题模式下)
回车键:打开选中/焦点所在消息。
删除键:移动选中消息到垃圾箱。";
$labels['helplistkeyboardnavcontacts'] = "回车:打开选中的联系人";
localization/zh_CN/messages.inc000064400000034433151727150600012552 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = '发生错误!';
$messages['loginfailed']  = '登录失败。';
$messages['cookiesdisabled'] = '您的浏览器不支持 Cookies。';
$messages['sessionerror'] = '会话无效或已过期。';
$messages['storageerror'] = '连接至 IMAP 服务器失败。';
$messages['servererror'] = '服务器错误!';
$messages['servererrormsg'] = '服务器错误:$msg';
$messages['accountlocked'] = '登录失败太多次。请稍后再试。';
$messages['connerror'] = '连接错误(连接服务器失败)!';
$messages['dberror'] = '数据库错误!';
$messages['windowopenerror'] = '弹出窗口被屏蔽!';
$messages['requesttimedout'] = '请求超时';
$messages['errorreadonly'] = '无法完成操作。文件夹为只读。';
$messages['errornoperm'] = '无法完成操作。没有权限。';
$messages['erroroverquota'] = '无法完成操作。没有足够的磁盘空间。';
$messages['erroroverquotadelete'] = '没有足够的磁盘空间。请使用 SHIFT+DEL 删除一部分邮件。';
$messages['invalidrequest'] = '请求无效!未保存数据。';
$messages['invalidhost'] = '无效的主机名。';
$messages['nomessagesfound'] = '此邮件夹内无邮件。';
$messages['mailboxempty'] = '邮箱为空';
$messages['nomessages'] = '无邮件';
$messages['refreshing'] = '正在刷新...';
$messages['loading'] = '正在载入...';
$messages['uploading'] = '正在上传文件...';
$messages['attaching'] = '正在附加文件...';
$messages['uploadingmany'] = '正在上传文件...';
$messages['loadingdata'] = '正在载入数据...';
$messages['checkingmail'] = '正在检查新邮件...';
$messages['sendingmessage'] = '正在发送...';
$messages['messagesent'] = '邮件已发送。';
$messages['savingmessage'] = '正在保存邮件...';
$messages['messagesaved'] = '邮件已暂存至草稿箱。';
$messages['successfullysaved'] = '保存成功。';
$messages['savingresponse'] = '正在保存响应文本...';
$messages['deleteresponseconfirm'] = '是否确认删除响应文本?';
$messages['nocontactselected'] = '你还没有选择联系人';
$messages['addedsuccessfully'] = '联系人已添加。';
$messages['contactexists'] = '已经具有此电子邮件地址的联系人已经存在。';
$messages['contactnameexists'] = '已存在同名联系人。';
$messages['blockedimages'] = '由于保护隐私,此邮件中的远程图片未予显示。';
$messages['blockedresources'] = '为了保护您的隐私,远程资源已被屏蔽。';
$messages['encryptedmessage'] = '抱歉!该邮件已被加密,无法显示。';
$messages['externalmessagedecryption'] = '这是一封已加密的邮件,并且不能用您的浏览器扩展解密。';
$messages['nopubkeyfor'] = '没有找到 $email 的有效公钥';
$messages['nopubkeyforsender'] = '在您的发件人身份中没有找到有效公钥。您想只对收件人加密此邮件吗?';
$messages['encryptnoattachments'] = '已经上传的附件不能加密。请在加密编辑器中重新添加它们。';
$messages['searchpubkeyservers'] = '您想在公钥服务器搜索缺失的密钥吗?';
$messages['encryptpubkeysfound'] = '下列公钥已被找到:';
$messages['nocontactsfound'] = '未找到联系人。';
$messages['contactnotfound'] = '未找到指定的联系人。';
$messages['sendingfailed'] = '发送失败。';
$messages['senttooquickly'] = '您需要等待$sec秒才能发送邮件。';
$messages['errorsavingsent'] = '保存已发送邮件时发生错误。';
$messages['errorsaving'] = '保存时发生错误。';
$messages['errormoving'] = '无法移动邮件。';
$messages['errorcopying'] = '无法复制邮件。';
$messages['errordeleting'] = '无法删除邮件。';
$messages['errormarking'] = '无法标记邮件。';
$messages['alerttitle'] = '注意';
$messages['confirmationtitle'] = '您确定……';
$messages['deletecontactconfirm']  = '是否删除选中的联系人?';
$messages['deletegroupconfirm']  = '是否删除选中的群组?';
$messages['deletemessagesconfirm'] = '是否删除选中的邮件?';
$messages['deletefolderconfirm']  = '是否删除选中的邮件夹?';
$messages['purgefolderconfirm']  = '是否删除当前邮件夹中的全部邮件?';
$messages['contactdeleting'] = '正在删除联系人...';
$messages['groupdeleting'] = '正在删除群组...';
$messages['folderdeleting'] = '正在删除文件夹...';
$messages['foldermoving'] = '正在移动文件夹...';
$messages['foldersubscribing'] = '订阅文件夹中...';
$messages['folderunsubscribing'] = '退订中...';
$messages['formincomplete'] = '表单未填写完整。';
$messages['noemailwarning'] = '请输入一个有效的邮件地址。';
$messages['nonamewarning']  = '请输入名称。';
$messages['nopagesizewarning'] = '请输入每页显示的邮件数量。';
$messages['nosenderwarning'] = '请输入发件人的电子邮件地址。';
$messages['recipientsadded'] = '联系人添加成功';
$messages['norecipientwarning'] = '至少输入一个收件人。';
$messages['disclosedrecipwarning'] = '所有的收件人都能看到其他收件人的地址。如果您不想这么做并且想保护他人隐私,您可以使用"密送 (Bcc)"一栏。';
$messages['disclosedreciptitle'] = '太多公共收件人';
$messages['nosubjectwarning']  = '主题为空。您要输入一个主题吗?';
$messages['nosubjecttitle']  = '无主题';
$messages['nobodywarning'] = '要发送没有正文的邮件吗?';
$messages['notsentwarning'] = '此消息已发送并且有未保存的更改。您是否要放弃您的更改?';
$messages['restoresavedcomposedata'] = '您有一封邮件尚未发送.\n\nSubject: $subject\nSaved: $date\n\n您是否要恢复这封邮件?';
$messages['nosearchname'] = '请输入联系人姓名或电子邮件地址。';
$messages['notuploadedwarning'] = '附件尚未全部上传,请耐心等待或者取消上传。';
$messages['searchsuccessful'] = '共找到 $nr 封邮件。';
$messages['contactsearchsuccessful'] = '共找到 $nr 位联系人。';
$messages['searchnomatch'] = '未找到任何符合条件的邮件。';
$messages['searching'] = '正在搜索...';
$messages['checking'] = '正在检查...';
$messages['stillsearching'] = '仍在搜索中……';
$messages['nospellerrors'] = '未发现拼写错误。';
$messages['folderdeleted'] = '删除文件夹成功。';
$messages['foldersubscribed'] = '订阅文件夹成功。';
$messages['folderunsubscribed'] = '退订文件夹成功。';
$messages['deletedsuccessfully'] = '删除成功。';
$messages['converting'] = '格式转换中...';
$messages['messageopenerror'] = '无法从服务器加载邮件内容。';
$messages['filelinkerror'] = '附加文件失败。';
$messages['fileuploaderror'] = '文件上传失败。';
$messages['filesizeerror'] = '上传的文件超过了 $size 的大小限制。';
$messages['filecounterror'] = '您一次最多可以上传 $count 个文件。';
$messages['msgsizeerror'] = '附加文件失败。邮件超出最大大小 ($size)。';
$messages['copysuccess'] = '成功复制 $nr 个联系人。';
$messages['movesuccess'] = '成功移动 $nr 个联系人。';
$messages['copyerror'] = '无法复制联系人。';
$messages['moveerror'] = '无法移动联系人。';
$messages['sourceisreadonly'] = '源地址为只读。';
$messages['errorsavingcontact'] = '无法保存联系人地址。';
$messages['movingmessage'] = '正在移动邮件...';
$messages['copyingmessage'] = '正在复制邮件...';
$messages['copyingcontact'] = '正在复制联系人...';
$messages['movingcontact'] = '移动联系人...';
$messages['deletingmessage'] = '正在删除邮件...';
$messages['markingmessage'] = '正在标记邮件...';
$messages['addingmember'] = '正在添加联系人至群组...';
$messages['removingmember'] = '正在从群组中删除联系人...';
$messages['receiptsent'] = '成功发送一个已读回执。';
$messages['errorsendingreceipt'] = '无法发送已读回执。';
$messages['deleteidentityconfirm'] = '是否删除该身份?';
$messages['nodeletelastidentity'] = '无法删除该身份,这是最后一个。';
$messages['forbiddencharacter'] = '文件夹名包含禁止字符。';
$messages['selectimportfile'] = '请选择要上传的文件。';
$messages['addresswriterror'] = '选中的通讯录不可写。';
$messages['contactaddedtogroup'] = '添加联系人至该群组成功。';
$messages['contactremovedfromgroup'] = '从该群组移除联系人成功。';
$messages['nogroupassignmentschanged'] = '群组资料没有变更。';
$messages['importwait'] = '正在导入,请稍后...';
$messages['importformaterror'] = '导入失败!文件无效。';
$messages['importconfirm'] = '<b>成功导入 $inserted 联系人</b>';
$messages['importconfirmskipped'] = '<b>跳过已存在的 $skipped 项目</b>';
$messages['importmessagesuccess'] = '成功导入 $nr 条信息';
$messages['importmessageerror'] = '导入失败!文件无效';
$messages['opnotpermitted'] = '不允许的操作!';
$messages['nofromaddress'] = '选定身份中缺少电子邮件地址。';
$messages['editorwarning'] = '切换编辑模式可能导致文本格式丢失。是否继续?';
$messages['httpreceivedencrypterror'] = '<b>您的邮件无法发送</b>,因为发生了一个严重的配置错误,请立即联系管理员。';
$messages['smtpconnerror'] = 'SMTP 错误 ($code):连接服务器失败。';
$messages['smtpautherror'] = 'SMTP 错误 ($code): 认证失败。';
$messages['smtpfromerror'] = 'SMTP 错误 ($code):添加发件人失败 "$from" ($msg)。';
$messages['smtptoerror'] = 'SMTP 错误 ($code): 添加收件人失败 "$to" ($msg)。';
$messages['smtprecipientserror'] = 'SMTP 错误: 无法解析收件人列表。';
$messages['smtputf8error'] = 'SMTP 错误:服务器不支持带 Unicode 字符的邮件地址';
$messages['smtpsizeerror'] = 'SMTP 错误:消息长度超过服务器能接受的长度 ($limit)';
$messages['smtperror'] = 'SMTP 错误: $msg';
$messages['emailformaterror'] = '无效的电子邮件地址:$email';
$messages['toomanyrecipients'] = '收件人太多,请减少人数至 $max。';
$messages['maxgroupmembersreached'] = '组员数量超过最大值 $max。';
$messages['internalerror'] = '遇到一个内部错误,请重试。';
$messages['contactdelerror'] = '无法删除联系人。';
$messages['contactdeleted'] = '删除联系人成功。';
$messages['contactrestoreerror'] = '无法恢复已删除的联系人。';
$messages['contactrestored'] = '联系人恢复成功。';
$messages['groupdeleted'] = '删除群组成功。';
$messages['grouprenamed'] = '群组改名成功。';
$messages['groupcreated'] = '成功创建群组';
$messages['savedsearchdeleted'] = '成功删除保存的搜索';
$messages['savedsearchdeleteerror'] = '无法删除保存的搜索';
$messages['savedsearchcreated'] = '成功创建保存的搜索';
$messages['savedsearchcreateerror'] = '无法创建保存的搜索。';
$messages['messagedeleted'] = '删除邮件成功。';
$messages['messagemoved'] = '移动邮件成功。';
$messages['messagemovedtotrash'] = '邮件已成功移动到已删除邮件。';
$messages['messagecopied'] = '复制邮件成功';
$messages['messagemarked'] = '标记邮件成功';
$messages['autocompletechars'] = '至少需要输入 $min 个字符';
$messages['autocompletemore'] = '找到太多的结果。请输入更多字符。';
$messages['namecannotbeempty'] = '必须输入名字';
$messages['nametoolong'] = '名字太长';
$messages['namedotforbidden'] = '文件夹名称不能以“点”开头。';
$messages['folderupdated'] = '成功更新文件夹';
$messages['foldercreated'] = '成功创建文件夹';
$messages['invalidimageformat'] = '非法的图像类型。';
$messages['mispellingsfound'] = '检查到拼写错误。';
$messages['parentnotwritable'] = '无法创建/转移文件夹至指定的上级文件夹,没有权限。';
$messages['messagetoobig'] = '邮件过大无法处理。';
$messages['attachmentvalidationerror'] = '这个附件很可疑:因为它的真正类型和在消息中声明的类型不一致。如果您不是很信任发件人,请不要打开此附件,因为里面可能包含恶意内容或者病毒。<br/><br/><em>声明类型: $expected ;检测到的类型: $detected</em>';
$messages['noscriptwarning'] = '警告:本程序需要 Javascript 支持!请在浏览器设置中启用 Javascript。';
$messages['messageissent'] = '邮件已发送,但尚未保存。是否现在保存?';
$messages['errnotfound'] = '文件未找到';
$messages['errnotfoundexplain'] = '请求资源未找到!';
$messages['errfailedrequest'] = '请求失败';
$messages['errauthorizationfailed'] = '授权失败';
$messages['errunauthorizedexplain'] = '无法验证访问此服务的授权!';
$messages['errrequestcheckfailed'] = '请求检查失败';
$messages['errcsrfprotectionexplain'] = "访问此资源是保护你避免被CSRF攻击。\nlf 看到此信息,你可能在关闭web应用程序时并未登出服务。\n\n现在需要人机交互才能继续。";
$messages['errcontactserveradmin'] = '请联系你的服务器管理员。';
$messages['clicktoresumesession'] = '点击此处恢复你之前的会话';
$messages['errcomposesession'] = '撰写会话错误';
$messages['errcomposesessionexplain'] = '请求的撰写会话未找到。';
$messages['clicktocompose'] = '点击这里撰写新邮件';
$messages['nosupporterror'] = '你的网页浏览器不支持此功能';
$messages['siginserted'] = '签名插入成功';
$messages['responseinserted'] = '回复插入成功';
$messages['listempty'] = '列表为空';
$messages['listusebutton'] = '请使用 添加 按钮添加新的记录';
$messages['keypaircreatesuccess'] = '已为 $identity 添加了新的钥匙对';
localization/ar_SA/timezones.inc000064400000012503151727150600012736 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'التوقيت العالمي';
$labels['tz:africa'] = 'أفريقيا';
$labels['tz:africa:abidjan'] = 'أبيدجان';
$labels['tz:africa:accra'] = 'آكر';
$labels['tz:africa:addis_ababa'] = 'أديس أبابا';
$labels['tz:africa:algiers'] = 'الجزائر';
$labels['tz:africa:asmara'] = 'أسمرة';
$labels['tz:africa:bamako'] = 'باماكو';
$labels['tz:africa:bangui'] = 'بانغي';
$labels['tz:africa:banjul'] = 'بانجول';
$labels['tz:africa:bissau'] = 'بيساو';
$labels['tz:africa:blantyre'] = 'بلانتير';
$labels['tz:africa:brazzaville'] = 'برازافيل';
$labels['tz:africa:bujumbura'] = 'بوجمبورا';
$labels['tz:africa:cairo'] = 'القاهرة';
$labels['tz:africa:casablanca'] = 'الدار البيضاء';
$labels['tz:africa:ceuta'] = 'سبتة';
$labels['tz:africa:conakry'] = 'كوناكري';
$labels['tz:africa:dakar'] = 'داكار';
$labels['tz:africa:dar_es_salaam'] = 'دار السلام';
$labels['tz:africa:djibouti'] = 'جيبوتي';
$labels['tz:africa:douala'] = 'دوالا';
$labels['tz:africa:el_aaiun'] = 'العيون';
$labels['tz:africa:freetown'] = 'فريتاون';
$labels['tz:africa:gaborone'] = 'جابورون';
$labels['tz:africa:harare'] = 'هراري';
$labels['tz:africa:johannesburg'] = 'جوهانسبرج';
$labels['tz:africa:juba'] = 'جوبا';
$labels['tz:africa:kampala'] = 'كمبالا';
$labels['tz:africa:khartoum'] = 'الخرطوم';
$labels['tz:africa:kigali'] = 'كيغالي';
$labels['tz:africa:kinshasa'] = 'كينشاسا';
$labels['tz:africa:lagos'] = 'لاغوس';
$labels['tz:africa:libreville'] = 'ليبرفيل';
$labels['tz:africa:lome'] = 'لومي';
$labels['tz:africa:luanda'] = 'لواندا';
$labels['tz:africa:lubumbashi'] = 'لوبومباشي';
$labels['tz:africa:lusaka'] = 'لوساكا';
$labels['tz:africa:malabo'] = 'مالابو';
$labels['tz:africa:maputo'] = 'مابوتو';
$labels['tz:africa:maseru'] = 'ماسيرو';
$labels['tz:africa:mbabane'] = 'مبابان';
$labels['tz:africa:mogadishu'] = 'مقديشو';
$labels['tz:africa:monrovia'] = 'مونروفيا';
$labels['tz:africa:nairobi'] = 'نيروبي';
$labels['tz:africa:ndjamena'] = 'نجامينا';
$labels['tz:africa:niamey'] = 'نيامي';
$labels['tz:africa:nouakchott'] = 'نواكشوط';
$labels['tz:africa:ouagadougou'] = 'واغادوغو';
$labels['tz:africa:porto-novo'] = 'بورتو نوفو';
$labels['tz:africa:sao_tome'] = 'ساو تومي';
$labels['tz:africa:tripoli'] = 'طرابلس';
$labels['tz:africa:tunis'] = 'تونس';
$labels['tz:africa:windhoek'] = 'ويندهوك';
$labels['tz:america'] = 'أمريكا';
$labels['tz:america:adak'] = 'أداك';
$labels['tz:america:anchorage'] = 'أنكوريج';
$labels['tz:america:anguilla'] = 'أنغيلا';
$labels['tz:america:antigua'] = 'أنتيغوا';
$labels['tz:america:araguaina'] = 'أراغوينا';
$labels['tz:america:argentina'] = 'الأرجنتين';
$labels['tz:america:argentina:buenos_aires'] = 'بوينس ايرس';
$labels['tz:america:argentina:catamarca'] = 'كاتاماركا';
$labels['tz:america:argentina:cordoba'] = 'قرطبة';
$labels['tz:america:argentina:jujuy'] = 'جوجوي';
$labels['tz:america:argentina:la_rioja'] = 'لاريوخا';
$labels['tz:america:argentina:mendoza'] = 'مندوزا';
$labels['tz:pacific:gambier'] = 'غامبير';
$labels['tz:pacific:guadalcanal'] = 'غوادالكانال';
$labels['tz:pacific:guam'] = 'غوام';
$labels['tz:pacific:honolulu'] = 'هونولولو';
$labels['tz:pacific:johnston'] = 'جونستون';
$labels['tz:pacific:kiritimati'] = 'كيريتيماتي';
$labels['tz:pacific:kosrae'] = 'كسرى';
$labels['tz:pacific:kwajalein'] = 'كواجالين';
$labels['tz:pacific:majuro'] = 'ماجورو';
$labels['tz:pacific:marquesas'] = 'ماركيساس';
$labels['tz:pacific:midway'] = 'ميدواي';
$labels['tz:pacific:nauru'] = 'ناورو';
$labels['tz:pacific:niue'] = 'نيو';
$labels['tz:pacific:norfolk'] = 'نورفولك';
$labels['tz:pacific:noumea'] = 'نوميا';
$labels['tz:pacific:pago_pago'] = 'باغو باغو';
$labels['tz:pacific:palau'] = 'بالاو';
$labels['tz:pacific:pitcairn'] = 'بيتكيرن';
$labels['tz:pacific:pohnpei'] = 'بوهنباي';
$labels['tz:pacific:port_moresby'] = 'مرفئ مويسبي';
$labels['tz:pacific:rarotonga'] = 'راروتونجا';
$labels['tz:pacific:saipan'] = 'سايبان';
$labels['tz:pacific:tahiti'] = 'تاهيتي';
$labels['tz:pacific:tarawa'] = 'تاراوا';
$labels['tz:pacific:tongatapu'] = 'تونغاتابو';
$labels['tz:pacific:wake'] = 'واكه';
$labels['tz:pacific:wallis'] = 'واليس';
localization/ar_SA/labels.inc000064400000067521151727150600012175 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'مرحباً بكم في $product';
$labels['username'] = 'اسم المستخدم';
$labels['password'] = 'كلمة المرور';
$labels['server'] = 'الخادم';
$labels['login'] = 'تسجيل الدخول';
$labels['oauthlogin'] = 'تسجيل الدخول مع $provider';
$labels['menu'] = 'القائمة';
$labels['logout'] = 'تسجيل الخروج';
$labels['mail'] = 'البريد';
$labels['settings'] = 'الإعدادات الشخصية';
$labels['addressbook'] = 'دفتر العناوين';
$labels['darkmode'] = 'الوضع المظلم';
$labels['lightmode'] = 'وضع الضوء';
$labels['inbox'] = 'الوارد';
$labels['drafts'] = 'المسودات';
$labels['sent'] = 'المرسل';
$labels['trash'] = 'المهملات';
$labels['junk'] = 'غير المرغوب';
$labels['show_real_foldernames'] = 'عرض الاسم الحقيقي لـ المجلدات المميزة ';
$labels['subject'] = 'الموضوع';
$labels['from'] = 'المرسل';
$labels['sender'] = 'المرسل';
$labels['to'] = 'المستقبل';
$labels['cc'] = 'نسخة';
$labels['bcc'] = 'نسخة مخفية';
$labels['replyto'] = 'الرد إلى';
$labels['followupto'] = 'المتابعة إلى';
$labels['date'] = 'التاريخ';
$labels['size'] = 'الحجم';
$labels['priority'] = 'الأولوية';
$labels['organization'] = 'المنظمة';
$labels['readstatus'] = 'حالة القراءة';
$labels['listoptions'] = 'قائمة الخيارات...';
$labels['listoptionstitle'] = 'قائمة الخيارات';
$labels['mailboxlist'] = 'مجلدات';
$labels['messagesfromto'] = 'الرسالة $from إلى $to من مجموع $count';
$labels['threadsfromto'] = 'جهات الإتصال $from إلى $to من مجموع $count';
$labels['messagenrof'] = 'الرسالة $nr من $count';
$labels['fromtoshort'] = '$from – $to من  $count';
$labels['copy'] = 'نسخ';
$labels['move'] = 'نقل';
$labels['moveto'] = 'نقل إلى...';
$labels['copyto'] = 'نسخ الى ';
$labels['download'] = 'تنزيل';
$labels['open'] = 'فتح';
$labels['showattachment'] = 'إظهار';
$labels['showanyway'] = 'عرض على أي حال';
$labels['filename'] = 'اسم الملف';
$labels['filesize'] = 'حجم الملف';
$labels['addtoaddressbook'] = 'إضافة إلى دفتر العناوين';
$labels['sun'] = 'الأحد';
$labels['mon'] = 'الإثنين';
$labels['tue'] = 'الثلاثاء';
$labels['wed'] = 'الأربعاء';
$labels['thu'] = 'الخميس';
$labels['fri'] = 'الجمعة';
$labels['sat'] = 'السبت';
$labels['sunday'] = 'الأحد';
$labels['monday'] = 'الإثنين';
$labels['tuesday'] = 'الثلاثاء';
$labels['wednesday'] = 'الأربعاء';
$labels['thursday'] = 'الخميس';
$labels['friday'] = 'الجمعة';
$labels['saturday'] = 'السبت';
$labels['jan'] = 'يناير';
$labels['feb'] = 'فبراير';
$labels['mar'] = 'مارس';
$labels['apr'] = 'أبريل';
$labels['may'] = 'مايو';
$labels['jun'] = 'يونيو';
$labels['jul'] = 'يوليو';
$labels['aug'] = 'أغسطس';
$labels['sep'] = 'سبتمبر';
$labels['oct'] = 'أكتوبر';
$labels['nov'] = 'نوفمبر';
$labels['dec'] = 'ديسمبر';
$labels['longjan'] = 'يناير';
$labels['longfeb'] = 'فبراير';
$labels['longmar'] = 'مارس';
$labels['longapr'] = 'إبريل';
$labels['longmay'] = 'مايو';
$labels['longjun'] = 'يونيو';
$labels['longjul'] = 'يوليو';
$labels['longaug'] = 'أغسطس';
$labels['longsep'] = 'سبتمبر';
$labels['longoct'] = 'أكتوبر';
$labels['longnov'] = 'نوفمبر';
$labels['longdec'] = 'ديسمبر';
$labels['today'] = 'اليوم';
$labels['refresh'] = 'تحديث';
$labels['checkmail'] = 'التحقق من وجود رسائل جديدة';
$labels['compose'] = 'إنشاء رسالة';
$labels['writenewmessage'] = 'إنشاء رسالة جديدة';
$labels['reply'] = 'رد';
$labels['replytomessage'] = 'الرد على الرسالة';
$labels['replytoallmessage'] = 'الرد على المرسل وجميع مستقبلي الرسالة';
$labels['replyall'] = 'الرد على الجميع';
$labels['replylist'] = 'الرد على القائمة';
$labels['forward'] = 'إعادة توجيه';
$labels['forwardinline'] = 'تمرير الرسالة ضمنياً';
$labels['forwardattachment'] = 'تمرير الرسالة كمرفق';
$labels['forwardmessage'] = 'تمرير الرسالة';
$labels['bouncemsg'] = 'إعادة الإرسال (ارتداد)';
$labels['bounce'] = 'إعادة الإرسال';
$labels['deletemessage'] = 'حذف الرسالة إلى المهملات';
$labels['movemessagetotrash'] = 'انقل الرسالة إلى سلة المهملات';
$labels['printmessage'] = 'طباعة هذه الرسالة';
$labels['previousmessage'] = 'عرض الرسالة السابقة';
$labels['firstmessage'] = 'عرض الرسالة الأولى';
$labels['nextmessage'] = 'عرض الرسالة التالية';
$labels['lastmessage'] = 'عرض الرسالة الأخيرة';
$labels['backtolist'] = 'العودة إلى لائحة الرسائل';
$labels['viewsource'] = 'إظهار المصدر';
$labels['mark'] = 'علامة';
$labels['markmessages'] = 'وسم الرسالة';
$labels['markread'] = 'كمقروءة';
$labels['markunread'] = 'كغير مقروءة';
$labels['markflagged'] = 'كموْسومة';
$labels['markunflagged'] = 'كغير موْسومة';
$labels['moreactions'] = 'إجراءات إضافية...';
$labels['markallread'] = 'وضع علامة كمقروءة للجميع';
$labels['folders-cur'] = 'المجلد المحدد فقط';
$labels['folders-sub'] = 'المجلد المحدد ومجلداته الفرعية';
$labels['folders-all'] = 'جميع الملفات';
$labels['more'] = 'المزيد';
$labels['back'] = 'العودة';
$labels['options'] = 'خيارات';
$labels['composeoptions'] = 'خيارات الإنشاء';
$labels['optionsandattachments'] = 'الخيارات والمرفقات';
$labels['actions'] = 'الإجراءات';
$labels['first'] = 'الأول';
$labels['last'] = 'الأخير';
$labels['previous'] = 'الساب';
$labels['next'] = 'التالي';
$labels['select'] = 'تحديد';
$labels['selection'] = 'اختيار';
$labels['all'] = 'الكل';
$labels['none'] = 'لاشيء';
$labels['currpage'] = 'الصفحة الحالية';
$labels['isread'] = 'قراءة ';
$labels['unread'] = 'غير المقروءة';
$labels['flagged'] = 'موسوم';
$labels['unflagged'] = 'غير موسوم';
$labels['unanswered'] = 'بلا رد';
$labels['withattachment'] = 'مع المرفقات';
$labels['deleted'] = 'محذوف';
$labels['undeleted'] = 'غير محذوفة';
$labels['replied'] = 'رد';
$labels['forwarded'] = 'تم إرسالها';
$labels['invert'] = 'عكس';
$labels['filter'] = 'تصفية';
$labels['list'] = 'قائمة';
$labels['threads'] = 'تتابعات';
$labels['expand-all'] = 'إظهار الكل';
$labels['expand-unread'] = 'إظهار الغير مقروءة';
$labels['collapse-all'] = 'ضمّ الكل';
$labels['threaded'] = 'متتابع';
$labels['showunread'] = 'إظهار الرسائل الغير مقروءة';
$labels['autoexpand_threads'] = 'إظهار تتابعات الرسائل';
$labels['do_expand'] = 'جميع التتابعات';
$labels['expand_only_unread'] = 'فقط مع الرسائل الغير مقروءة';
$labels['fromto'] = 'المرسل/المستلم';
$labels['flag'] = 'وسم';
$labels['attachment'] = 'مرفق';
$labels['nonesort'] = 'لاشيء';
$labels['sentdate'] = 'تاريخ إرسالها';
$labels['arrival'] = 'تاريخ وصولها';
$labels['asc'] = 'تصاعدي';
$labels['desc'] = 'تنازلي';
$labels['listcolumns'] = 'أعمدة السرد';
$labels['listsorting'] = 'أعمدة الترتيب';
$labels['listorder'] = 'طريقة الترتيب';
$labels['listmode'] = 'وضع طريقة السرد';
$labels['lmode'] = 'وضع القائمة';
$labels['layout'] = 'التخطيط';
$labels['layoutwidescreen'] = 'شاشة عريضة';
$labels['layoutdesktop'] = 'سطح المكتب';
$labels['layoutlist'] = 'قائمة';
$labels['layoutwidescreendesc'] = 'شاشة عريضة (عرض عمود من 3 أعمدة)';
$labels['layoutdesktopdesc'] = 'سطح المكتب (قائمة واسعة ومعاينة البريد أدناه)';
$labels['layoutlistdesc'] = 'قائمة (لا يوجد بريد معاينة)';
$labels['folderactions'] = 'إجراءات المجلد...';
$labels['compact'] = 'ضغط';
$labels['empty'] = 'تفريغ';
$labels['importmessages'] = 'استيراد الرسائل';
$labels['mailimportdesc'] = 'يمكنك تحميل البريد باستخدام ملفات بتنسيق <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME </a>أو <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'يمكن ضغط ملفات متعددة في أرشيفات مضغوطة ZIP.';
$labels['quota'] = 'المساحة المستخدمة';
$labels['unknown'] = 'مجهول';
$labels['unlimited'] = 'غير محدود';
$labels['quotastorage'] = 'مساحة التخزين';
$labels['quotamessage'] = 'تعداد الرسائل';
$labels['quicksearch'] = 'البحث السريع';
$labels['searchplaceholder'] = 'بحث...';
$labels['resetsearch'] = 'استعادة البحث للافتراضي';
$labels['searchmod'] = 'أماكن البحث';
$labels['msgtext'] = 'كامل الرسالة';
$labels['body'] = 'محتوى ';
$labels['type'] = 'نوع ';
$labels['namex'] = 'الاسم ';
$labels['searchscope'] = 'مجال';
$labels['currentfolder'] = 'المجلد الحالي';
$labels['subfolders'] = 'هذا والملفات الفرعية';
$labels['allfolders'] = 'جميع الملفات';
$labels['openinextwin'] = 'افتح في نافذة جديدة';
$labels['emlsave'] = 'تنزيل (.eml)';
$labels['changeformattext'] = 'عرض بتنسيق النص العادي';
$labels['changeformathtml'] = 'عرض بتنسيق HTML';
$labels['editasnew'] = 'تعديل كجديد';
$labels['send'] = 'ارسل';
$labels['sendmessage'] = 'إرسال الرسالة الآن';
$labels['savemessage'] = 'حفظ هذه المسودة';
$labels['addattachment'] = 'إرفاق ملف';
$labels['charset'] = 'مجموعة المحارف';
$labels['editortype'] = 'نوع المُحرّر';
$labels['returnreceipt'] = 'ايصال استلام';
$labels['dsn'] = 'تنويه حالة التوصيل';
$labels['mailreplyintro'] = 'كتب $sender في $date:';
$labels['originalmessage'] = 'الرسالة الأساسية';
$labels['addimage'] = 'إضافة صورة';
$labels['selectmedia'] = 'إختر فيديو';
$labels['addmedia'] = 'إضافة فيديو';
$labels['encrypt'] = 'تشفير';
$labels['keyid'] = 'مفتاح المعرّف';
$labels['keyexpired'] = 'تنتهي';
$labels['insert'] = 'ادراج';
$labels['recipient'] = 'مستلم';
$labels['editidents'] = 'تعديل الهويات';
$labels['spellcheck'] = 'التدقيق اﻹملائى';
$labels['checkspelling'] = 'التدقيق الإملائي';
$labels['resumeediting'] = 'متابعة التحرير';
$labels['revertto'] = 'استعادة إلى';
$labels['restore'] = 'استعادة';
$labels['restoremessage'] = 'استعادة الرسائل؟';
$labels['ignore'] = 'تجاهل';
$labels['responses'] = 'ردود';
$labels['insertresponse'] = 'اضافة رد ';
$labels['manageresponses'] = 'ادارة الردود';
$labels['editresponse'] = 'تعديل الرد ';
$labels['editresponses'] = 'تعديل الردود';
$labels['responsename'] = 'الاسم';
$labels['responsetext'] = 'نص الرد';
$labels['attach'] = 'إرفاق';
$labels['attachments'] = 'مرفقات';
$labels['upload'] = 'تحميل';
$labels['close'] = 'إغلاق';
$labels['messageoptions'] = 'خيارات الرسائل...';
$labels['low'] = 'منخض';
$labels['lowest'] = 'الأقل';
$labels['normal'] = 'عادي';
$labels['high'] = 'مرتفع';
$labels['highest'] = 'الأعلى';
$labels['nosubject'] = '(دون موضوع)';
$labels['showimages'] = 'إظهار الصور';
$labels['alwaysshow'] = 'دائماً أظهر الصّور القادمة من $sender';
$labels['isdraft'] = 'هذه مسودّة رسالة';
$labels['andnmore'] = '$nr المزيد ...';
$labels['details'] = 'التفاصيل';
$labels['togglemoreheaders'] = 'عرض المزيد من رؤوس الرسائل';
$labels['togglefullheaders'] = 'تبديل رؤوس الرسائل الأولية';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'نص مجرد';
$labels['savesentmessagein'] = 'احفظ الرسالة المُرسلة في';
$labels['dontsave'] = 'لا تحفظها';
$labels['maxuploadsize'] = 'أقصى حجم للملف هو $size';
$labels['addcc'] = 'أضف CC';
$labels['addbcc'] = 'أضف BCC';
$labels['addreplyto'] = 'أضيف Reply-To';
$labels['addfollowupto'] = 'إضافة Mail-Followup-To';
$labels['mdnrequest'] = 'طلب المرسل إعلامه عند قراءتك لرسالته. هل تود إعلام المرسل؟';
$labels['receiptread'] = 'إيصال الاستلام )بالقراءة)';
$labels['yourmessage'] = 'هذا إيصال بقراءة رسالتك';
$labels['receiptnote'] = 'ملاحظة: يُعلمك هذا الإيصال بأن رسالتك قد ظهرت على جهاز المستقبِل. ليست هناك أية ضمانات أن المستقبل قد قرأ أو فهم محتويات الرسالة.';
$labels['zoomin'] = 'تقريب';
$labels['name'] = 'اسم العرض';
$labels['firstname'] = 'الإسم الأول';
$labels['surname'] = 'الإسم الأخير';
$labels['middlename'] = 'الاسم الثاني';
$labels['nameprefix'] = 'السابقة';
$labels['namesuffix'] = 'اللاحقة';
$labels['nickname'] = 'اللقب';
$labels['jobtitle'] = 'المسمى الوظيفي';
$labels['department'] = 'الإدارة';
$labels['gender'] = 'الجنس';
$labels['maidenname'] = 'إسم الزواج';
$labels['email'] = 'البريد الإلكتروني';
$labels['phone'] = 'الهاتف';
$labels['address'] = 'العنوان';
$labels['street'] = 'الشارع';
$labels['locality'] = 'المدينة';
$labels['zipcode'] = 'الرمز البريدي';
$labels['region'] = 'المنطقة';
$labels['country'] = 'الدولة';
$labels['birthday'] = 'تاريخ الميلاد';
$labels['anniversary'] = 'المناسبة السنوية';
$labels['website'] = 'الموقع';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'ملاحظات';
$labels['male'] = 'ذكر';
$labels['female'] = 'أنثى';
$labels['manager'] = 'مدير';
$labels['assistant'] = 'المساعد';
$labels['spouse'] = 'زوجة';
$labels['allfields'] = 'جميع الحقول';
$labels['search'] = 'بحث';
$labels['advsearch'] = 'بحث متقدم';
$labels['advanced'] = 'مُتقدم';
$labels['other'] = 'آخر';
$labels['typehome'] = 'المنزل';
$labels['typework'] = 'العمل';
$labels['typeother'] = 'آخر';
$labels['typemobile'] = 'المحمول';
$labels['typemain'] = 'الرئيسي';
$labels['typehomefax'] = 'فاكس المنزل';
$labels['typeworkfax'] = 'فاكس العمل';
$labels['typecar'] = 'السيارة';
$labels['typepager'] = 'الرنان';
$labels['typevideo'] = 'الفيديو';
$labels['typeassistant'] = 'المساعد';
$labels['typehomepage'] = 'الرئيسية';
$labels['typeblog'] = 'المدوّنة';
$labels['typeprofile'] = 'الملف الشخصي';
$labels['addfield'] = 'إضافة حقل...';
$labels['editcontact'] = 'تحرير بيانات المراسل';
$labels['contacts'] = 'المراسلين';
$labels['contactproperties'] = 'خواص جهة الإتصال';
$labels['personalinfo'] = 'المعلومات الشخصية';
$labels['edit'] = 'تحرير';
$labels['cancel'] = 'إلغاء';
$labels['save'] = 'حفظ';
$labels['delete'] = 'حذف';
$labels['rename'] = 'إعادة التسمية';
$labels['addphoto'] = 'إضافة';
$labels['replacephoto'] = 'استبدال';
$labels['uploadphoto'] = 'ارفع صورة';
$labels['deletecontact'] = 'حذف المراسلين المحددين';
$labels['composeto'] = 'إنشاء رسالة إليه';
$labels['contactsfromto'] = 'المراسلون $from إلى $to من $count';
$labels['print'] = 'طباعة';
$labels['export'] = 'تصدير';
$labels['exportall'] = 'تصدير الكل';
$labels['exportsel'] = 'تصدير المختارات';
$labels['exportvcards'] = 'صدّر المراسلين بنسق vCard';
$labels['grouprename'] = 'تغيير اسم المجموعة';
$labels['groupdelete'] = 'حذف المجموعة';
$labels['groupremoveselected'] = 'حذف العنوان المختار من المجموعة';
$labels['previouspage'] = 'عرض المجموعة السابقة';
$labels['firstpage'] = 'عرض المجموعة الأولى';
$labels['nextpage'] = 'عرض المجموعة التالية';
$labels['lastpage'] = 'عرض المجموعة الأخيرة';
$labels['group'] = 'مجموعة';
$labels['groups'] = 'المجموعات';
$labels['listgroup'] = 'قائمة اعضاء المجموعة ';
$labels['personaladrbook'] = 'العناوين الشخصية';
$labels['searchsave'] = 'حفظ البحث';
$labels['searchdelete'] = 'حذف البحث';
$labels['import'] = 'استورد';
$labels['importcontacts'] = 'استورد المراسلين';
$labels['importtarget'] = 'اضافة جهة الاتصال الى ';
$labels['importreplace'] = 'استبدل دفتر العناوين بأكمله';
$labels['importgroups'] = 'استيراد مهام المجموعة ';
$labels['importgroupsall'] = 'الكل (انشاء مجموعة في حال الحاجة)';
$labels['importgroupsexisting'] = 'فقط للمجموعات الموجودة ';
$labels['done'] = 'تم';
$labels['settingsfor'] = 'إعدادات';
$labels['about'] = 'نبذة';
$labels['preferences'] = 'التفضيلات';
$labels['userpreferences'] = 'تفضيلات المستخدم';
$labels['editpreferences'] = 'تحرير تفضيلات المستخدم';
$labels['identities'] = 'الهويات';
$labels['identityencryption'] = 'التشفير';
$labels['preferhtml'] = 'تفضيل صيغة HTML';
$labels['defaultcharset'] = 'ترميز المحارف الافتراضي';
$labels['htmlmessage'] = 'رسالة بنسق HTML';
$labels['messagepart'] = 'جزء';
$labels['digitalsig'] = 'التوقيع الالكتروني';
$labels['dateformat'] = 'نسق التاريخ';
$labels['timeformat'] = 'نسق الوقت';
$labels['prettydate'] = 'تواريخ منمقة';
$labels['setdefault'] = 'تعيين كإفتراضي';
$labels['autodetect'] = 'آلي';
$labels['language'] = 'اللغة';
$labels['timezone'] = 'المنطقة الزمنية';
$labels['pagesize'] = 'عدد الرسائل في الصفحة';
$labels['signature'] = 'التوقيع';
$labels['dstactive'] = 'التوقيت الصيفي';
$labels['showinextwin'] = 'فتح الرسالة فى نافذة جديدة';
$labels['composeextwin'] = 'أرسال عن طريق نافذة جديدة';
$labels['htmleditor'] = 'إنشاء رسائل بنسق HTML';
$labels['htmlonreply'] = 'حال الرد على الرسائل بصيغة HTML فقط';
$labels['htmlonreplyandforward'] = 'على التوجية او الرد على رسائل HTML';
$labels['htmlsignature'] = 'توقيع HTML';
$labels['showemail'] = 'عرض عنوان البريد الالكتروني مع الاسم ';
$labels['previewpane'] = 'إظهار قسم المعاينة';
$labels['skin'] = 'شكل الواجهة';
$labels['logoutclear'] = 'إفراغ سلة المحذوفات عند الخروج';
$labels['logoutcompact'] = 'ضغط صندوق الوارد عن الخروج';
$labels['uisettings'] = 'واجهة المستخدم';
$labels['serversettings'] = 'إعدادات الخادم';
$labels['mailboxview'] = 'مظهر صندوق البريد';
$labels['mdnrequests'] = 'عند طلب إشعار استلام';
$labels['askuser'] = 'اسأل المستخدم';
$labels['autosend'] = 'أرسلها تلقائياً';
$labels['autosendknown'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلااسألني';
$labels['autosendknownignore'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلاتجاهل الأمر';
$labels['readwhendeleted'] = 'تحديد الرسالة كمقروءة عند حذفها';
$labels['flagfordeletion'] = 'وضع علامة على الرسالة لحذفها بدلاً منحذفها';
$labels['skipdeleted'] = 'لا تظهر الرسائل المحذوفة';
$labels['deletealways'] = 'حذف الرسائل مباشرة، إن تعذر نقلها إلىالمهملات';
$labels['deletejunk'] = 'مباشرة احذف الرسائل الموجودة في غير المرغوب فيه';
$labels['showremoteimages'] = 'إظهار الصور الخارجية المدمجة';
$labels['fromknownsenders'] = 'للمرسلين المعلومين';
$labels['always'] = 'دائماً';
$labels['showinlineimages'] = 'إظهار الصّور المرفقة أسفل الرسالة';
$labels['autosavedraft'] = 'حفظ المسودة تلقائياً';
$labels['everynminutes'] = 'كل $n دقيقة';
$labels['refreshinterval'] = 'تحديث (التاكد من الرسائل الجديدة, الخ.)';
$labels['never'] = 'أبداً';
$labels['immediately'] = 'حالاً';
$labels['messagesdisplaying'] = 'إظهار الرسائل';
$labels['messagescomposition'] = 'إنشاء الرسائل';
$labels['mimeparamfolding'] = 'أسماء الملفات المرفقة';
$labels['2231folding'] = 'RFC 2231 بأكملها (ثندربيرد)';
$labels['miscfolding'] = 'RFC 2047/2231 (ميكروسوفت آوتلوك)';
$labels['2047folding'] = 'RFC 2047 بأكملها (غيرها)';
$labels['force7bit'] = 'استخدام ترميز MIME للحروف ذات الثمانيةبتّات';
$labels['advancedoptions'] = 'خيارات متقدّمة';
$labels['focusonnewmessage'] = 'التركيز على نافذة المتصفح عند وجود رسالةجديدة';
$labels['checkallfolders'] = 'التحقق من وجود رسائل جديدة في جميعالمجلدات';
$labels['defaultfont'] = 'الخط الافتراضي لـ رسائل HTML';
$labels['mainoptions'] = 'الخيارات الأساسية';
$labels['browseroptions'] = 'خيارات المتصفح';
$labels['section'] = 'قسم';
$labels['maintenance'] = 'الصيانة';
$labels['newmessage'] = 'رسالة جديدة';
$labels['signatureoptions'] = 'خيارات التوقيع';
$labels['whenreplying'] = 'عند الرد';
$labels['replyempty'] = 'لا تقتبس رسالة الاصل';
$labels['replytopposting'] = 'بدء رسالة جديدة ووضع النص أعلى الأصلية';
$labels['replybottomposting'] = 'بدء رسالة جديدة ووضع النص أسفل الأصلية';
$labels['replyremovesignature'] = 'إزالة التوقيع من الرسالة عند الرد';
$labels['autoaddsignature'] = 'إضافة التوقيع آلياً';
$labels['newmessageonly'] = 'الرسالة الجديدة فقط';
$labels['replyandforwardonly'] = 'الردود والتمريرات فقط';
$labels['insertsignature'] = 'إضافة التوقيع';
$labels['afternseconds'] = 'بعد $n ثواني';
$labels['reqmdn'] = 'طلب إشعار استلام دائماً';
$labels['reqdsn'] = 'طلب تنويه لحالة التوصيل دائماً';
$labels['replysamefolder'] = 'وضع الردود في المجلد الذي يحوي الرسالةالمردود عليها';
$labels['defaultabook'] = 'دفتر العناوين الافتراضي';
$labels['autocompletesingle'] = 'تجاهل عنوان البريد الإلكتروني البديل فيالتكملة التلقائية';
$labels['listnamedisplay'] = 'عرض جهات الاتصال كـ ';
$labels['spellcheckbeforesend'] = 'تحقق من الإملاء قبل إرسال الرسائل';
$labels['spellcheckoptions'] = 'خيارات التدقيق الإملاءي';
$labels['spellcheckignoresyms'] = 'تجاهل الكلمات التي تحتوي رموز';
$labels['spellcheckignorenums'] = 'تجاهل الكلمات التي تحتوي أرقام';
$labels['spellcheckignorecaps'] = 'تجاهل الكلمات التي بها أحرف كبيرة';
$labels['addtodict'] = 'إضافة إلى القامس';
$labels['mailtoprotohandler'] = 'تسجيل متحكم بروتوكول  mailto: رابط';
$labels['standardwindows'] = 'التعامل مع النوافذ المنبثقة كـ نوافذ قياسية';
$labels['forwardmode'] = 'اعادة توجية الرسائل';
$labels['inline'] = 'مضمن';
$labels['asattachment'] = 'كـ مرفق ';
$labels['replyallmode'] = 'الاجراء الافتراضي لـ زر [الرد على الجميع]';
$labels['replyalldefault'] = 'الرد على الجميع';
$labels['replyalllist'] = 'الرد فقط على القائمة البريدية (اذا كانت موجودة)';
$labels['allmessages'] = 'كل الرسائل';
$labels['folder'] = 'مجلد';
$labels['folders'] = 'مجلدات';
$labels['foldername'] = 'اسم المجلد';
$labels['subscribed'] = 'مشترك';
$labels['messagecount'] = 'الرسائل';
$labels['create'] = 'أنشئ';
$labels['createfolder'] = 'أنشئ مجلد جديد';
$labels['managefolders'] = 'إدارة المجلدات';
$labels['specialfolders'] = 'المجلّدات المُميّزة';
$labels['properties'] = 'الخواص';
$labels['folderproperties'] = 'خواص المجلد';
$labels['parentfolder'] = 'المجلد الحاوي';
$labels['location'] = 'الموضع';
$labels['info'] = 'معلومات';
$labels['getfoldersize'] = 'اضغط لمعرفة حجم المجلد';
$labels['changesubscription'] = 'اضغط لتغيير حالة الإشتراك';
$labels['foldertype'] = 'نوع المجلد';
$labels['personalfolder'] = 'مجلد خاص';
$labels['otherfolder'] = 'مجلد مستخدم آخر';
$labels['sharedfolder'] = 'مجلد عام';
$labels['encryption'] = 'التشفير';
$labels['sortby'] = 'ترتيب بحسب';
$labels['sortasc'] = 'ترتيب تصاعدي';
$labels['sortdesc'] = 'ترتيب تنازلي';
$labels['undo'] = 'تراجع';
$labels['installedplugins'] = 'اضافات مثبتة';
$labels['plugin'] = 'إضافة';
$labels['version'] = 'النسخة';
$labels['source'] = 'المصدر';
$labels['license'] = 'الترخيص';
$labels['support'] = 'احصل على الدعم الفني';
$labels['B'] = 'ب';
$labels['KB'] = 'ك.ب';
$labels['MB'] = 'م.ب';
$labels['GB'] = 'ج.ب';
$labels['unicode'] = 'يونيكود';
$labels['english'] = 'الإنجليزية';
$labels['westerneuropean'] = 'الغرب أوروبية';
$labels['easterneuropean'] = 'الشرق أوروبية';
$labels['southeasterneuropean'] = 'الجنوب شرق أوروبية';
$labels['baltic'] = 'البلطيقية';
$labels['cyrillic'] = 'الكيريلية';
$labels['arabic'] = 'العربية';
$labels['greek'] = 'اليونانية';
$labels['hebrew'] = 'العبرية';
$labels['turkish'] = 'التركية';
$labels['nordic'] = 'النرويجية';
$labels['thai'] = 'التايلندية';
$labels['celtic'] = 'الكلتية';
$labels['vietnamese'] = 'الفيتنامية';
$labels['japanese'] = 'اليابانية';
$labels['korean'] = 'الكورية';
$labels['chinese'] = 'الصينية';
$labels['arialabelmessagessearchfilter'] = 'مرشح قائمة البريد الإلكتروني';
$labels['arialabelresponsesmenu'] = 'قائمة الردود الجاهزة';
localization/ar_SA/messages.inc000064400000052137151727150600012537 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'حدث خطأ!';
$messages['loginfailed']  = 'فشل تسجيل الدخول';
$messages['cookiesdisabled'] = 'المتصفح الخاص بك لا يقبل الكوكيز';
$messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية أو أنها غيرصالحة';
$messages['cookiesmismatch'] = 'تم اكتشاف عدم تطابق في ملف تعريف الارتباط. من فضلك ، امسح ملفات تعريف الارتباط في المتصفح الخاص بك.';
$messages['storageerror'] = 'فشل الاتصال بخادم التخزين.';
$messages['servererror'] = 'خطأ في الخادم!';
$messages['servererrormsg'] = 'خطأ خادم: $msg';
$messages['accountlocked'] = 'عدد كبير جدًا من محاولات تسجيل الدخول الفاشلة. حاول مرة أخرى في وقت لاحق.';
$messages['connerror'] = 'خطأ في الاتصال (فشل في الوصول الى الخادم)!';
$messages['dberror'] = 'خطأ في قاعدة البيانات!';
$messages['dbconnerror'] = 'غير قادر على الاتصال بقاعدة البيانات!';
$messages['windowopenerror'] = 'تم منع النافذة المنبثقة!';
$messages['requesttimedout'] = 'انتهت مهلة الطلب ';
$messages['errorreadonly'] = 'تعذر تنفيذ العملية. المجلد للقراءة فقط.';
$messages['errornoperm'] = 'تعذر تنفيذ العملية. ليست لديك الصلاحية.';
$messages['erroroverquota'] = 'تعذر تنفيذ العملية. لايوجد مساحة كافية.';
$messages['erroroverquotadelete'] = 'لا يوجد مساحة كافية. استخدم SHIFT+DEL لحذف الرسالة.';
$messages['invalidrequest'] = 'طلب غير صالح! لم تحفظ أية بيانات.';
$messages['invalidhost'] = 'اسم الملقم غير صالح.';
$messages['nomessagesfound'] = 'لم يعثر على أية رسائل في صندوق البريد هذا';
$messages['loggedout'] = 'لقد أنهيت الجلسة بنجاح. مع السلامة!';
$messages['mailboxempty'] = 'صندوق البريد فارغ';
$messages['nomessages'] = 'لا يوجد رسائل';
$messages['refreshing'] = 'جاري التحديث...';
$messages['loading'] = 'جاري العمل...';
$messages['uploading'] = 'جاري رفع الملف...';
$messages['attaching'] = 'إرفاق الملف جارٍ...';
$messages['uploadingmany'] = 'جاري تحميل الملفات...';
$messages['loadingdata'] = 'تحميل البيانات...';
$messages['checkingmail'] = 'التحقق من وجود رسائل جديدة...';
$messages['sendingmessage'] = 'إرسال الرسالة...';
$messages['messagesent'] = 'تم إرسال الرسالة بنجاح';
$messages['savingmessage'] = 'حفظ الرسالة...';
$messages['messagesaved'] = 'تم حفظ الرسالة في المسودات';
$messages['successfullysaved'] = 'تم الحفظ بنجاح';
$messages['savingresponse'] = 'جاري حفظ نص الرد...';
$messages['deleteresponseconfirm'] = 'هل تريد فعلاً حذف نص الرد هذا؟';
$messages['nocontactselected'] = 'لم تقم بتحديد جهة اتصال حتى الآن.';
$messages['addedsuccessfully'] = 'تمت إضافة المراسل إلى دفتر العناوينبنجاح';
$messages['contactexists'] = 'توجد جهة اتصال لها عنوان البريد الإلكتروني نفسه.';
$messages['contactnameexists'] = 'هناك مُرسال له نفس الإسم موجود مسبقاً.';
$messages['blockedimages'] = 'لحماية خصوصيتك، تم حجب الصور الغير مضمنة(البعيدة) في هذه الرسالة.';
$messages['blockedresources'] = 'لحماية خصوصيتك تم حظر الموارد البعيدة.';
$messages['suspiciousemail'] = 'تحتوي هذه الرسالة على عناوين بريد إلكتروني مشبوهة قد تكون احتيالية.';
$messages['encryptedmessage'] = 'هذه الرسالة مشفرة ولا يمكن عرضها. عذراً!';
$messages['externalmessagedecryption'] = 'هذه رسالة مشفرة ويمكن فك تشفيرها بملحق المتصفح الخاص بك.';
$messages['nopubkeyfor'] = 'لم يتم العثور على مفتاح عام صالح لـ $email';
$messages['nopubkeyforsender'] = 'لم يتم العثور على مفتاح عام صالح لهوية المرسل الخاصة بك. هل تريد تشفير الرسالة للمستلمين فقط؟';
$messages['encryptnoattachments'] = 'لا يمكن تشفير المرفقات التي تم تحميلها بالفعل. يرجى إعادة إضافتها في محرر التشفير.';
$messages['searchpubkeyservers'] = 'هل تريد البحث في خوادم المفاتيح العامة عن المفاتيح المفقودة؟';
$messages['encryptpubkeysfound'] = 'تم العثور على المفاتيح العامة التالية:';
$messages['keyservererror'] = 'فشل الحصول على مفتاح من خادم المفاتيح.';
$messages['keyimportsuccess'] = 'تم استيراد المفتاح العام $key بنجاح إلى حلقة المفاتيح.';
$messages['nocontactsfound'] = 'لم يعثر على أي مراسل';
$messages['contactnotfound'] = 'تعذر العثور على المراسل المطلوب';
$messages['contactsearchonly'] = 'يجب عليك استخدام نموذج بحث لرؤية جهات الاتصال من دفتر العناوين المحدد.';
$messages['sendingfailed'] = 'فشل إرسال الرسالة';
$messages['senttooquickly'] = 'رجاء انتظر $sec ثوان قبل إرسال هذه الرسالة';
$messages['errorsavingsent'] = 'حدث خطأ أثناء حفظ الرسالة المُرسلة.';
$messages['errorsaving'] = 'حدث خطأ أثناء الحفظ.';
$messages['errormoving'] = 'تعذر نقل هذه الرسالة';
$messages['errorcopying'] = 'تعذر نسخ الرسائل';
$messages['errordeleting'] = 'تعذر حذف هذه الرسالة';
$messages['errormarking'] = 'تعذر تحديد الرسائل';
$messages['alerttitle'] = 'انتباه';
$messages['confirmationtitle'] = 'هل أنت متأكد...';
$messages['deletecontactconfirm']  = 'هل تريد حقاً حذف المراسلـ(ين) المحدد(ين)؟';
$messages['deletegroupconfirm']  = 'هل تريد فعلاً حذف المجموعة المحددة؟';
$messages['deletemessagesconfirm'] = 'هل تريد حذف الرسائل المحددة؟';
$messages['deletefolderconfirm']  = 'هل تريد حقاً حذف هذا المجلد؟';
$messages['movefolderconfirm']  = 'هل تريد حقًا نقل هذا المجلد؟';
$messages['purgefolderconfirm']  = 'هل تريد حقاً حذف جميع الرسائل في هذاالمجلد؟';
$messages['contactdeleting'] = 'جاري حذف المُراسلين...';
$messages['groupdeleting'] = 'جاري حذف المجموعة...';
$messages['folderdeleting'] = 'جاري حذف المجلد...';
$messages['foldermoving'] = 'جاري نقل المجلد...';
$messages['foldersubscribing'] = 'الإشتراك في المجلد...';
$messages['folderunsubscribing'] = 'إلغاء الإشتراك في المجد...';
$messages['formincomplete'] = 'لم يتم تعبئة بيانات الاستمارة بالكامل';
$messages['noemailwarning'] = 'الرجاء إدخال عنوان بريد إلكتروني صالح';
$messages['nonamewarning']  = 'الرجاء إدخال اسم';
$messages['nopagesizewarning'] = 'الرجاء إدخال حجم الصفحة';
$messages['nosenderwarning'] = 'الرجاء إدخال عنوان البريد الإلكتروني للمرسِل.';
$messages['recipientsadded'] = 'تمت إضافة المستلم(ين) بنجاح.';
$messages['norecipientwarning'] = 'الرجاء إدخال اسم مستقبل واحد على الأقل';
$messages['disclosedrecipwarning'] = 'سيرى جميع المستلمين عناوين البريد الإلكتروني لبعضهم البعض. لمنع ذلك وحماية خصوصيتهم ، يمكنك استخدام حقل نسخة مخفية الوجهة.';
$messages['disclosedreciptitle'] = 'عدد كبير جدًا من المستلمين العامين';
$messages['nosubjectwarning']  = 'حقل "الموضوع" فارغ. هل تريد كتابة موضوعللرسالة؟';
$messages['nosubjecttitle']  = 'لا يوجد عنوان';
$messages['nobodywarning'] = 'إرسال هذه الرسالة دون نص؟';
$messages['notsentwarning'] = 'لم يتم إرسال الرسالة وبها تغييرات غير محفوظة. هل تريد تجاهل التغييرات الخاصة بك؟';
$messages['restoresavedcomposedata'] = 'يوجد رسالة سابقة ولاكن غير مرسلة.\n\nالموضوع: $subject\nحفظ: $date\n\n هل تريد بالفعل استعادة هذة الرسالة ؟';
$messages['nosearchname'] = 'الرجاء إدخال اسم مراسل أو عنوان بريدإلكتروني';
$messages['notuploadedwarning'] = 'لم يتم رفع جميع المرفقات بعد. رجاءً الانتظار أو إلغاء عملية الرفع.';
$messages['searchsuccessful'] = 'عثر على $nr رسائل';
$messages['contactsearchsuccessful'] = 'عُثر على $nr مُراسَل';
$messages['searchnomatch'] = 'لم يعثر على شيء';
$messages['searching'] = 'جاري البحث...';
$messages['checking'] = 'جاري التحقق...';
$messages['stillsearching'] = 'البحث لازال جارياً...';
$messages['nospellerrors'] = 'لم يعثر على أية أخطاء إملائية';
$messages['folderdeleted'] = 'تم حذف المجلد بنجاح';
$messages['foldersubscribed'] = 'تم الإشتراك في المجلد بنجاح';
$messages['folderunsubscribed'] = 'تم إلغاء الإشتراك في المجلد بنجاح';
$messages['deletedsuccessfully'] = 'تم الحذف بنجاح';
$messages['converting'] = 'إزالة التنسيق من الرسالة...';
$messages['messageopenerror'] = 'تعذرت قراءة الرسالة من الخادم';
$messages['filelinkerror'] = 'فشل إرفاق الملف.';
$messages['fileuploaderror'] = 'فشل رفع الملف';
$messages['csvfilemismatch'] = 'لا يتم دعم استيراد ملفات CSV متعددة بحقول مختلفة.';
$messages['filesizeerror'] = 'حجم الملف الذي تحاول رفعه أكبر من الحجمالأقصى $size';
$messages['filecounterror'] = 'يمكنك تحميل ملفات بحد أقصى $count مرة واحدة.';
$messages['msgsizeerror'] = 'فشل إرفاق ملف. تم تجاوز الحد الأقصى لحجم الرسالة ($size).';
$messages['msgsizeerrorfwd'] = 'تم تجاوز الحد الأقصى لحجم الرسالة ($size). لم يتم إرفاق رسالة (رسائل) $num.';
$messages['copysuccess'] = 'تم نسخ $nr جهة اتصال بنجاح.';
$messages['movesuccess'] = 'تم نقل $nr جهة اتصال بنجاح.';
$messages['copyerror'] = 'لا يمكن نسخ أية جهة اتصال.';
$messages['moveerror'] = 'لا يمكن نقل أية جهة اتصال.';
$messages['sourceisreadonly'] = 'لا يمكن تعديل مصدر العنوان هذا';
$messages['errorsavingcontact'] = 'تعذر حفظ عنوان المراسل';
$messages['movingmessage'] = 'جاري نقل الرسالة...';
$messages['copyingmessage'] = 'جاري نسخ الرسالة...';
$messages['copyingcontact'] = 'جاري نسخ المُراسلين...';
$messages['movingcontact'] = 'جاري نقل جهات الاتصال...';
$messages['deletingmessage'] = 'جاري حذف الرسائل...';
$messages['markingmessage'] = 'جاري تحديد الرسائل...';
$messages['addingmember'] = 'جاري إضافة المُراسلين إلى المجموعة...';
$messages['removingmember'] = 'جاري إزالة المراسلين من المجموعة...';
$messages['receiptsent'] = 'أرسل إيصال الاستلام بنجاح';
$messages['errorsendingreceipt'] = 'تعذر إرسال إيصال الاستلام';
$messages['deleteidentityconfirm'] = 'هل تريد فعلاً حذف هذا المعرف؟';
$messages['nodeletelastidentity'] = 'لا يمكن حذف هذا السجل حيث أنه الوحيدالمتبقي.';
$messages['forbiddencharacter'] = 'اسم المجلّد يحتوي حروفاً ممنوعة';
$messages['selectimportfile'] = 'رجاء اختر ملفاً لرفعه';
$messages['addresswriterror'] = 'دفتر العناوين المحدد غير قابل للكتابة';
$messages['contactaddedtogroup'] = 'تمت إضافة المراسلين إلى هذه المجموعةبنجاح';
$messages['contactremovedfromgroup'] = 'تمت إزالة المراسلين من هذه المجموعةبنجاح';
$messages['nogroupassignmentschanged'] = 'لم يتم تغيير مهام المجموعة.';
$messages['importwait'] = 'جاري الاستيراد، رجاء انتظر...';
$messages['importformaterror'] = 'فشل في الاستيراد! الملف الذي تحاول رفعة ليس ملف استيراد صالح. ';
$messages['importconfirm'] = '<b>تم استيراد $inserted مراسلين بنجاح، وتجاهل$skipped موجودين مسبقاً</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>تم تجاهل $skipped عناصر موجودة</b>';
$messages['importmessagesuccess'] = 'تم استرداد $nr رسالة بنجاح';
$messages['importmessageerror'] = 'فشل في الاستيراد! الملف الذي تحاول رفعة ليس رسالة او صندوق بريد صالح. ';
$messages['opnotpermitted'] = 'العملية ممنوعة!';
$messages['nofromaddress'] = 'الهوية المحددة ينقصها عنوان البريد الإلكتروني.';
$messages['editorwarning'] = 'تغيير نوع المحرر قد يسبب فقد تنسيق النصز  هل ترغب المتابعة؟';
$messages['httpreceivedencrypterror'] = 'حدث خطأ جسيم في التهيئة. رجاءً اتصال بمدير الخادم حالاً. <b>لا يمكن إرسال بريدك.</b>';
$messages['smtpconnerror'] = 'خطأ SMTP ($code): تعذر الاتصال بالخادم';
$messages['smtpautherror'] = 'خطأ SMTP ($code): تعذر التحقق من هويتك';
$messages['smtpfromerror'] = 'خطأ SMTP ($code): تعذر تحديد المرسل "$from" ($msg)';
$messages['smtptoerror'] = 'خطأ SMTP ($code): تعذرت إضافة المستلم "$to" ($msg)';
$messages['smtprecipientserror'] = 'خطأ SMTP: تعذرت قراءة قائمة المرسل إليهم';
$messages['smtputf8error'] = 'خطأ SMTP: لا يدعم الخادم Unicode في عنوان البريد الإلكتروني.';
$messages['smtpsizeerror'] = 'خطأ SMTP: حجم الرسالة يتجاوز حد الخادم ($limit)';
$messages['smtperror'] = 'خطأ SMTP: $msg';
$messages['emailformaterror'] = 'عنوان بريد إلكتروني غير صحيح: $email';
$messages['toomanyrecipients'] = 'عدد المرسل إليهم كبير. قلص العدد إلى $max.';
$messages['maxgroupmembersreached'] = 'عدد أعضاء المجموعة أكثر من $max';
$messages['internalerror'] = 'حدث خطأ داخلي. الرجاء المحاولة مرة أخرى.';
$messages['contactdelerror'] = 'تعذر حذف أسماء جهات الإتصال';
$messages['contactdeleted'] = 'تم حذف أسماء جهات الإتصال بنجاح';
$messages['contactrestoreerror'] = 'تعذر استعادة المُراسل المحذوف.';
$messages['contactrestored'] = 'تم استعادة المُراسل بنجاح.';
$messages['groupdeleted'] = 'تم حذف المجموعة بنجاح';
$messages['grouprenamed'] = 'تم تغيير إسم المجموعة بنجاح';
$messages['groupcreated'] = 'تم إنشاء المجموعة بنجاح';
$messages['savedsearchdeleted'] = 'تم بنجاح حذف البحث المحفوظ.';
$messages['savedsearchdeleteerror'] = 'تعذر حذف البحث المحفوظ';
$messages['savedsearchcreated'] = 'تم بنجاح إنشاء البحث المحفوظ.';
$messages['savedsearchcreateerror'] = 'تعذر إنشاء بحث محفوظ.';
$messages['messagedeleted'] = 'تم حذف الرسائل بنجاح';
$messages['messagemoved'] = 'تم نقل الرسائل بنجاح';
$messages['messagemovedtotrash'] = 'تم نقل الرسالة (الرسائل) إلى المهملات بنجاح.';
$messages['messagecopied'] = 'تم نسخ الرسائل بنجاح';
$messages['messagemarked'] = 'تم تحديد الرسائل بنجاح';
$messages['autocompletechars'] = 'إكتب $min أحرف على الأقل للحصول على التكملةالتلقائية';
$messages['autocompletemore'] = 'هناك المزيد من النتائج المطابقة. رجاءاكتب كلمات بحث أكثر.';
$messages['namecannotbeempty'] = 'لا يمكن ترك الإسم فارغاً';
$messages['nametoolong'] = 'الإسم طويل جداً';
$messages['namedotforbidden'] = 'لا يمكن أن يبدأ اسم المجلد بنقطة.';
$messages['folderupdated'] = 'تم تحديث المجلد بنجاح';
$messages['foldercreated'] = 'تم إنشاء المجلد بنجاح';
$messages['invalidimageformat'] = 'ليست صيغة صورة صحيحة';
$messages['mispellingsfound'] = 'عُثر على أخطاء إملائية في الرسالة';
$messages['parentnotwritable'] = 'تعذر إنشاء/نقل المجلد إلى المجلد المحدد.ليست لديك الصلاحية.';
$messages['messagetoobig'] = 'جزء الرسالة أكبر بكثير مما يمكن معالجته.';
$messages['attachmentvalidationerror'] = 'هذا المرفق مريب لأن نوعه لا يتطابق مع النوع المعلن في الرسالة. إذا كنت لا تثق في المرسل ، فلا يجب عليك فتحه في المتصفح لأنه قد يحتوي على محتويات ضارة <br/><br/><em>. $expected; تم العثور على: $detected </em>';
$messages['noscriptwarning'] = 'تحذير: خادم البريد الالكتروني هذا يتطلب جافاسكربت , يرجى تفعيل الـ جافاسكربت في اعدادت المتصفح الخاص بك لتتمكن من استخدامة.';
$messages['messageissent'] = 'تم إرسال الرسالة بالفعل ، ولكن لم يتم حفظها بعد. هل تريد حفظها الآن؟';
$messages['errnotfound'] = 'لم يتم العثور على الملف';
$messages['errnotfoundexplain'] = 'لم يتم العثور على المورد المطلوب!';
$messages['errfailedrequest'] = 'لم يتم الطلب';
$messages['errauthorizationfailed'] = 'فشل التفويض';
$messages['errunauthorizedexplain'] = 'تعذر التحقق من أنك مخول للوصول إلى هذه الخدمة!';
$messages['errrequestcheckfailed'] = 'فشل التحقق من الطلب';
$messages['errcsrfprotectionexplain'] = "لحمايتك ، الوصول إلى هذا المورد مؤمن ضد CSRF.\n إذا رأيت هذا ، فمن المحتمل أنك لم تقم بتسجيل الخروج قبل مغادرة تطبيق الويب.\n\n التفاعل البشري مطلوب الآن للمتابعة.";
$messages['errcontactserveradmin'] = 'يرجى الاتصال بمسؤول الخادم الخاص بك.';
$messages['clicktoresumesession'] = 'انقر هنا لاستئناف جلستك السابقة';
$messages['errcomposesession'] = 'خطأ في تكوين الجلسة';
$messages['errcomposesessionexplain'] = 'لم يتم العثور على جلسة الإنشاء المطلوبة.';
$messages['clicktocompose'] = 'انقر هنا لإنشاء رسالة جديدة';
$messages['nosupporterror'] = 'هذه الميزة لا يدعمها متصفح الويب الخاص بك.';
$messages['siginserted'] = 'تم إدخال توقيع بنجاح.';
$messages['responseinserted'] = 'تم إدخال الرد بنجاح.';
$messages['noresponsesavailable'] = 'لا توجد ردود متاحة';
$messages['listempty'] = 'القائمة فارغة.';
$messages['listusebutton'] = 'استخدم الزر "إنشاء" لإضافة سجل جديد.';
$messages['keypaircreatesuccess'] = 'تم إنشاء زوج مفاتيح جديد بنجاح لـ $identity .';
$messages['emptyattachment'] = 'يبدو أن هذا المرفق فارغ. <br>من فضلك ، تحقق مع الشخص الذي أرسل هذا.';
$messages['oauthloginfailed'] = 'فشل تسجيل الدخول إلى OAuth. حاول مرة أخرى.';
localization/cs_CZ/timezones.inc000064400000047435151727150600012766 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Afrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Akkra';
$labels['tz:africa:addis_ababa'] = 'Addis Abeba';
$labels['tz:africa:algiers'] = 'Alžír';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Káhira';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Konakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salám';
$labels['tz:africa:djibouti'] = 'Džibuti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El-Aaiún';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Džúbá';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Chartúm';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadišo';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'N´Djamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto Novo';
$labels['tz:africa:sao_tome'] = 'Svatý Tomáš';
$labels['tz:africa:tripoli'] = 'Tripolis';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Amerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaina';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:catamarca'] = 'Catamarca';
$labels['tz:america:argentina:cordoba'] = 'Córdoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:rio_gallegos'] = 'Rio Gallegos';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belem';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Cambridge Bay';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancún';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Kajmanské ostrovy';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Kostarika';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:curacao'] = 'Curaçao';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominika';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepé';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Godthab';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havana';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:vevay'] = 'Vevay';
$labels['tz:america:indiana:vincennes'] = 'Vincennes';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamajka';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinik';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Merida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'Mexico City';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Severní Dakota';
$labels['tz:america:north_dakota:beulah'] = 'Beulah';
$labels['tz:america:north_dakota:center'] = 'Center';
$labels['tz:america:north_dakota:new_salem'] = 'New Salem';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarém';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'Sao Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_barthelemy'] = 'Svatý Bartoloměj';
$labels['tz:america:st_johns'] = "Saint John's";
$labels['tz:america:st_kitts'] = 'Svatý Krištof';
$labels['tz:america:st_lucia'] = 'Svatá Lucie';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Svatý Vincenc';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktida';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arctic';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Asie';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:almaty'] = 'Almaty';
$labels['tz:asia:amman'] = 'Ammán';
$labels['tz:asia:anadyr'] = 'Anadyr';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:aqtobe'] = 'Aqtobe';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:atyrau'] = 'Atyrau';
$labels['tz:asia:baghdad'] = 'Bagdád';
$labels['tz:asia:bahrain'] = 'Bahrajn';
$labels['tz:asia:baku'] = 'Baku';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Bejrút';
$labels['tz:asia:bishkek'] = 'Biškek';
$labels['tz:asia:brunei'] = 'Brunej';
$labels['tz:asia:chita'] = 'Čita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:colombo'] = 'Kolombo';
$labels['tz:asia:damascus'] = 'Damašek';
$labels['tz:asia:dhaka'] = 'Dháka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubaj';
$labels['tz:asia:dushanbe'] = 'Dušanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:gaza'] = 'Gaza';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Či Minovo Město';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jayapura'] = 'Jayapura';
$labels['tz:asia:jerusalem'] = 'Jeruzalém';
$labels['tz:asia:kabul'] = 'Kábul';
$labels['tz:asia:kamchatka'] = 'Kamčatka';
$labels['tz:asia:karachi'] = 'Karáči';
$labels['tz:asia:kathmandu'] = 'Káthmandu';
$labels['tz:asia:khandyga'] = 'Khandyga';
$labels['tz:asia:kolkata'] = 'Kalkata';
$labels['tz:asia:krasnoyarsk'] = 'Krasnojarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:kuching'] = 'Kuching';
$labels['tz:asia:kuwait'] = 'Kuvajt';
$labels['tz:asia:macau'] = 'Macau';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:makassar'] = 'Makassar';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Maskat';
$labels['tz:asia:nicosia'] = 'Nikósie';
$labels['tz:asia:novokuznetsk'] = 'Novokuzneck';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:pyongyang'] = 'Pchjongjang';
$labels['tz:asia:qatar'] = 'Katar';
$labels['tz:asia:qyzylorda'] = 'Qyzylorda';
$labels['tz:asia:riyadh'] = 'Rijád';
$labels['tz:asia:sakhalin'] = 'Sachalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:seoul'] = 'Soul';
$labels['tz:asia:shanghai'] = 'Šanghaj';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Tchaj-pej';
$labels['tz:asia:tashkent'] = 'Taškent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teherán';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokio';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:ulaanbaatar'] = 'Ulanbátar';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:ust-nera'] = 'Ust-Nera';
$labels['tz:asia:vientiane'] = 'Vientian';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Jakutsk';
$labels['tz:asia:yangon'] = 'Rangún';
$labels['tz:asia:yekaterinburg'] = 'Jekatěrinburg';
$labels['tz:asia:yerevan'] = 'Jerevan';
$labels['tz:atlantic'] = 'Atlantik';
$labels['tz:atlantic:azores'] = 'Azory';
$labels['tz:atlantic:bermuda'] = 'Bermudy';
$labels['tz:atlantic:canary'] = 'Kanárské ostrovy';
$labels['tz:atlantic:cape_verde'] = 'Kapverdy';
$labels['tz:atlantic:faroe'] = 'Faerské ostrovy';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavík';
$labels['tz:atlantic:south_georgia'] = 'Jižní Georgie';
$labels['tz:atlantic:st_helena'] = 'Sv. Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Austrálie';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:broken_hill'] = 'Broken Hill';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:lord_howe'] = 'Lord Howe';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Sydney';
$labels['tz:europe'] = 'Evropa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrachán';
$labels['tz:europe:athens'] = 'Atény';
$labels['tz:europe:belgrade'] = 'Bělehrad';
$labels['tz:europe:berlin'] = 'Berlín';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brusel';
$labels['tz:europe:bucharest'] = 'Bukurešť';
$labels['tz:europe:budapest'] = 'Budapešť';
$labels['tz:europe:busingen'] = 'Busingen';
$labels['tz:europe:chisinau'] = 'Kišiňov';
$labels['tz:europe:copenhagen'] = 'Kodaň';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Ostrov Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kyjev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:lisbon'] = 'Lisabon';
$labels['tz:europe:ljubljana'] = 'Lublaň';
$labels['tz:europe:london'] = 'Londýn';
$labels['tz:europe:luxembourg'] = 'Luxemburg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monako';
$labels['tz:europe:moscow'] = 'Moskva';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Paříž';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praha';
$labels['tz:europe:riga'] = 'Riga';
$labels['tz:europe:rome'] = 'Řím';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:stockholm'] = 'Stokholm';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirana';
$labels['tz:europe:ulyanovsk'] = 'Uljanovsk';
$labels['tz:europe:uzhgorod'] = 'Užhorod';
$labels['tz:europe:vaduz'] = 'Vaduz';
$labels['tz:europe:vatican'] = 'Vatikán';
$labels['tz:europe:vienna'] = 'Vídeň';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varšava';
$labels['tz:europe:zagreb'] = 'Záhřeb';
$labels['tz:europe:zaporozhye'] = 'Záporoží';
$labels['tz:europe:zurich'] = 'Curych';
$labels['tz:indian'] = 'Indický oceán';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Čagoské ostrovy';
$labels['tz:indian:christmas'] = 'Vánoční ostrov';
$labels['tz:indian:cocos'] = 'Kokosový ostrov';
$labels['tz:indian:comoro'] = 'Komory';
$labels['tz:indian:kerguelen'] = 'Kergueleny';
$labels['tz:indian:mahe'] = 'Mahé';
$labels['tz:indian:maldives'] = 'Maledivy';
$labels['tz:indian:mauritius'] = 'Maurícius';
$labels['tz:indian:mayotte'] = 'Mayotte';
$labels['tz:indian:reunion'] = 'Réunion';
$labels['tz:pacific'] = 'Tichomoří';
$labels['tz:pacific:apia'] = 'Apia';
$labels['tz:pacific:auckland'] = 'Auckland';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chatham'] = 'Chatham';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:easter'] = 'Velikonoční ostrov';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fakaofo'] = 'Fakaofo';
$labels['tz:pacific:fiji'] = 'Fidži';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:galapagos'] = 'Galapágy';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:guam'] = 'Guam';
$labels['tz:pacific:honolulu'] = 'Honolulu';
$labels['tz:pacific:johnston'] = 'Johnston';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:kwajalein'] = 'Kwajalein';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pitcairn'] = 'Pitcairn';
$labels['tz:pacific:pohnpei'] = 'Pohnpei';
$labels['tz:pacific:port_moresby'] = 'Port Moresby';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tarawa'] = 'Tarawa';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/cs_CZ/labels.inc000064400000103270151727150600012201 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Vítejte v $product';
$labels['username'] = 'Uživatel';
$labels['password'] = 'Heslo';
$labels['server'] = 'Server';
$labels['login'] = 'Přihlásit';
$labels['oauthlogin'] = 'Přihlášení přes $provider';
$labels['menu'] = 'Menu';
$labels['logout'] = 'Odhlásit';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Nastavení';
$labels['addressbook'] = 'Adresář';
$labels['darkmode'] = 'Tmavý režim';
$labels['lightmode'] = 'Světlý režim';
$labels['inbox'] = 'Příchozí pošta';
$labels['drafts'] = 'Rozepsané';
$labels['sent'] = 'Odeslané';
$labels['trash'] = 'Koš';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Zobrazit skutečná jména speciálních složek';
$labels['subject'] = 'Předmět';
$labels['from'] = 'Odesílatel';
$labels['sender'] = 'Odesílatel';
$labels['to'] = 'Adresát';
$labels['cc'] = 'Kopie';
$labels['bcc'] = 'Skrytá kopie';
$labels['replyto'] = 'Odpověď na';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Datum';
$labels['size'] = 'Velikost';
$labels['priority'] = 'Priorita';
$labels['organization'] = 'Organizace';
$labels['readstatus'] = 'Přečteno';
$labels['listoptions'] = 'Seznam  možností...';
$labels['listoptionstitle'] = 'Možnosti seznamu';
$labels['mailboxlist'] = 'Složky';
$labels['messagesfromto'] = 'Zprávy $from až $to z celkem $count';
$labels['threadsfromto'] = 'Konverzace $from až $to z celkem $count';
$labels['messagenrof'] = 'Zpráva $nr z $count';
$labels['fromtoshort'] = '$from - $to z $count';
$labels['copy'] = 'Kopírovat';
$labels['move'] = 'Přesunout';
$labels['moveto'] = 'Přesunout do...';
$labels['copyto'] = 'Kopírovat do...';
$labels['download'] = 'Stáhnout';
$labels['open'] = 'Otevřít';
$labels['showattachment'] = 'Zobrazit';
$labels['showanyway'] = 'Přesto zobrazit';
$labels['filename'] = 'Jméno přílohy';
$labels['filesize'] = 'Velikost přílohy';
$labels['addtoaddressbook'] = 'Přidat do adresáře';
$labels['sun'] = 'Ne';
$labels['mon'] = 'Po';
$labels['tue'] = 'Út';
$labels['wed'] = 'St';
$labels['thu'] = 'Čt';
$labels['fri'] = 'Pá';
$labels['sat'] = 'So';
$labels['sunday'] = 'Neděle';
$labels['monday'] = 'Pondělí';
$labels['tuesday'] = 'Úterý';
$labels['wednesday'] = 'Středa';
$labels['thursday'] = 'Čtvrtek';
$labels['friday'] = 'Pátek';
$labels['saturday'] = 'Sobota';
$labels['jan'] = 'led';
$labels['feb'] = 'úno';
$labels['mar'] = 'bře';
$labels['apr'] = 'dub';
$labels['may'] = 'kvě';
$labels['jun'] = 'čvn';
$labels['jul'] = 'čvc';
$labels['aug'] = 'srp';
$labels['sep'] = 'zář';
$labels['oct'] = 'říj';
$labels['nov'] = 'lis';
$labels['dec'] = 'pro';
$labels['longjan'] = 'Leden';
$labels['longfeb'] = 'Únor';
$labels['longmar'] = 'Březen';
$labels['longapr'] = 'Duben';
$labels['longmay'] = 'Květen';
$labels['longjun'] = 'Červen';
$labels['longjul'] = 'Červenec';
$labels['longaug'] = 'Srpen';
$labels['longsep'] = 'Září';
$labels['longoct'] = 'Říjen';
$labels['longnov'] = 'Listopad';
$labels['longdec'] = 'Prosinec';
$labels['today'] = 'Dnes';
$labels['refresh'] = 'Obnovit';
$labels['checkmail'] = 'Zkontrolovat nové zprávy';
$labels['compose'] = 'Napsat';
$labels['writenewmessage'] = 'Vytvořit novou zprávu';
$labels['reply'] = 'Odpovědět';
$labels['replytomessage'] = 'Odpovědět odesílateli';
$labels['replytoallmessage'] = 'Odpovědět všem';
$labels['replyall'] = 'Odpovědět všem';
$labels['replylist'] = 'Odpovědět do e-mailové konference';
$labels['forward'] = 'Přeposlat';
$labels['forwardinline'] = 'Přeposlat v textu';
$labels['forwardattachment'] = 'Přeposlat jako přílohu';
$labels['forwardmessage'] = 'Předat zprávu';
$labels['bouncemsg'] = 'Přeposlat (bounce)';
$labels['bounce'] = 'Přeposlat';
$labels['deletemessage'] = 'Odstranit zprávu';
$labels['movemessagetotrash'] = 'Přesunout zprávu do koše';
$labels['printmessage'] = 'Vytisknout zprávu';
$labels['previousmessage'] = 'Zobrazit předchozí zprávu';
$labels['firstmessage'] = 'Zobrazit první zprávu';
$labels['nextmessage'] = 'Zobrazit další zprávu';
$labels['lastmessage'] = 'Zobrazit poslední zprávu';
$labels['backtolist'] = 'Zpět do seznamu zpráv';
$labels['viewsource'] = 'Zobrazit zdroj';
$labels['mark'] = 'Označit';
$labels['markmessages'] = 'Označ zprávy';
$labels['markread'] = 'Jako přečtené';
$labels['markunread'] = 'Jako nepřečtené';
$labels['markflagged'] = 'Jako označené';
$labels['markunflagged'] = 'Jako neoznačené';
$labels['markundeleted'] = 'Jako nesmazané';
$labels['moreactions'] = 'Další akce...';
$labels['markallread'] = 'Označit vše jako přečtené';
$labels['folders-cur'] = 'Vybrat pouze složku';
$labels['folders-sub'] = 'Vybrat složku a její podsložky';
$labels['folders-all'] = 'Všechny složky';
$labels['more'] = 'Více';
$labels['back'] = 'Zpět';
$labels['options'] = 'Možnosti';
$labels['composeoptions'] = 'Možnosti psaní';
$labels['optionsandattachments'] = 'Nastavení a přílohy';
$labels['actions'] = 'Akce';
$labels['first'] = 'První';
$labels['last'] = 'Poslední';
$labels['previous'] = 'Předchozí';
$labels['next'] = 'Následující';
$labels['select'] = 'Vybrat';
$labels['selection'] = 'Výběr';
$labels['all'] = 'Vše';
$labels['none'] = 'Nic';
$labels['currpage'] = 'Aktuální stránka';
$labels['isread'] = 'Přečtené';
$labels['unread'] = 'Nepřečtené';
$labels['flagged'] = 'Označené';
$labels['unflagged'] = 'Neoznačené';
$labels['unanswered'] = 'Nezodpovězené';
$labels['withattachment'] = 'S přílohou';
$labels['deleted'] = 'Smazané';
$labels['undeleted'] = 'Nesmazáno';
$labels['replied'] = 'Odpovězeno';
$labels['forwarded'] = 'Přeposláno';
$labels['invert'] = 'Převrátit';
$labels['filter'] = 'Filtr';
$labels['list'] = 'Seznam';
$labels['threads'] = 'Konverzace';
$labels['expand-all'] = 'Rozbalit všechny';
$labels['expand-unread'] = 'Rozbalit nepřečtené';
$labels['collapse-all'] = 'Sbalit všechny';
$labels['threaded'] = 'Spojovat do konverzací';
$labels['showunread'] = 'Zobrazit nepřečtené zprávy';
$labels['autoexpand_threads'] = 'Rozbalit konverzace';
$labels['do_expand'] = 'všechny konverzace';
$labels['expand_only_unread'] = 'pouze s nepřečtenými zprávami';
$labels['fromto'] = 'Odesílatel/Příjemce';
$labels['flag'] = 'Příznak';
$labels['attachment'] = 'Příloha';
$labels['nonesort'] = 'Nic';
$labels['sentdate'] = 'Datum odeslání';
$labels['arrival'] = 'Datum přijetí';
$labels['asc'] = 'vzestupně';
$labels['desc'] = 'sestupně';
$labels['listcolumns'] = 'Seznam sloupců';
$labels['listsorting'] = 'Třídění sloupců';
$labels['listorder'] = 'Uspořádání';
$labels['listmode'] = 'Režim zobrazení seznamu';
$labels['lmode'] = 'Podoba výpisu';
$labels['layout'] = 'Rozvržení';
$labels['layoutwidescreen'] = 'Widescreen';
$labels['layoutdesktop'] = 'Desktop';
$labels['layoutlist'] = 'Seznam';
$labels['layoutwidescreendesc'] = 'Widescreen (3 sloupce)';
$labels['layoutdesktopdesc'] = 'Desktop (seznam + náhled)';
$labels['layoutlistdesc'] = 'Seznam (bez náhledu)';
$labels['folderactions'] = 'Akce se složkou...';
$labels['compact'] = 'Zmenšit';
$labels['empty'] = 'Vyprázdnit';
$labels['importmessages'] = 'Import zpráv';
$labels['mailimportdesc'] = 'E-mail můžete nahrát pomocí souborů ve formátu <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> a <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Více souborů může být zkomprimováno do ZIP archivu.';
$labels['quota'] = 'Využití schránky';
$labels['unknown'] = 'neznámý';
$labels['unlimited'] = 'neomezený';
$labels['quotatype'] = 'Typ kvóty';
$labels['quotatotal'] = 'Limit';
$labels['quotaused'] = 'Využito';
$labels['quotastorage'] = 'Využití schránky';
$labels['quotamessage'] = 'Počet zpráv';
$labels['shortheaderdate'] = 'Dne $date';
$labels['shortheaderto'] = 'Pro $to dne $date';
$labels['shortheaderfrom'] = 'Od $from dne $date';
$labels['quicksearch'] = 'Rychlé vyhledávání';
$labels['searchplaceholder'] = 'Hledat...';
$labels['resetsearch'] = 'Zrušit vyhledávání';
$labels['searchmod'] = 'Parametry hledání';
$labels['msgtext'] = 'Celá zpráva';
$labels['body'] = 'Tělo';
$labels['type'] = 'Typ';
$labels['namex'] = 'Jméno';
$labels['searchscope'] = 'Rozsah';
$labels['currentfolder'] = 'Aktuální složka';
$labels['subfolders'] = 'Tato a podsložky';
$labels['allfolders'] = 'Všechny složky';
$labels['searchinterval-1W'] = 'starší než týden';
$labels['searchinterval-1M'] = 'starší než měsíc';
$labels['searchinterval-1Y'] = 'starší než rok';
$labels['searchinterval1W'] = 'novější než týden';
$labels['searchinterval1M'] = 'novější než měsíc';
$labels['searchinterval1Y'] = 'novější než rok';
$labels['openinextwin'] = 'Otevřít v novém okně';
$labels['emlsave'] = 'Stáhnout (.eml)';
$labels['changeformattext'] = 'Zobrazit v textovém formátu';
$labels['changeformathtml'] = 'Zobrazit v HTML formátu';
$labels['editasnew'] = 'Upravit jako novou';
$labels['send'] = 'Odeslat';
$labels['sendmessage'] = 'Odeslat zprávu nyní';
$labels['savemessage'] = 'Uložit do rozepsaných';
$labels['addattachment'] = 'Přidat přílohu';
$labels['charset'] = 'Znaková sada';
$labels['editortype'] = 'Typ editoru zpráv';
$labels['returnreceipt'] = 'Doručenka';
$labels['dsn'] = 'Stav doručení';
$labels['keepformatting'] = 'Zachovat formátování';
$labels['mailreplyintro'] = 'Dne $date, $sender napsal:';
$labels['originalmessage'] = 'Původní zpráva';
$labels['selectimage'] = 'Vybrat obrázek';
$labels['addimage'] = 'Přidat obrázek';
$labels['selectmedia'] = 'Vybrat video';
$labels['addmedia'] = 'Přidat video';
$labels['encrypt'] = 'Šifrovat';
$labels['encryptmessage'] = 'Šifrovat zprávu';
$labels['encryptmessagemailvelope'] = 'Šifrovat zprávu pomocí Mailvelope';
$labels['importpubkeys'] = 'Import veřejných klíčů';
$labels['encryptedsendialog'] = 'Odesílání šifrované zprávy';
$labels['encryptandsign'] = 'Šifrovat a podepsat';
$labels['keyid'] = 'ID klíče';
$labels['keylength'] = 'Bitů';
$labels['keyexpired'] = 'Vypršelý';
$labels['keyrevoked'] = 'Odvolaný';
$labels['bccinstead'] = 'Použít skrytou kopii';
$labels['addheader'] = 'Přidat příjemce (hlavička)';
$labels['insert'] = 'Vložit';
$labels['insertcontact'] = 'Vložit kontakty';
$labels['recipient'] = 'Příjemce';
$labels['recipientedit'] = 'Úprava příjemce';
$labels['editidents'] = 'Upravit identity';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Zkontrolovat pravopis';
$labels['resumeediting'] = 'Pokračovat v úpravách';
$labels['revertto'] = 'Přejít na';
$labels['restore'] = 'Obnovit';
$labels['restoremessage'] = 'Obnovit zprávu?';
$labels['ignore'] = 'Ignorovat';
$labels['responses'] = 'Odpovědi';
$labels['insertresponse'] = 'Vložit odpověd';
$labels['manageresponses'] = 'Spravovat odpovědi';
$labels['newresponse'] = 'Vytvořit novou odpověď';
$labels['addresponse'] = 'Přidat odpověď';
$labels['editresponse'] = 'Upravit odpověď';
$labels['editresponses'] = 'Upravit odpovědi';
$labels['responsename'] = 'Název';
$labels['responsetext'] = 'Text odpovědi';
$labels['attach'] = 'Přiložit';
$labels['attachments'] = 'Přílohy';
$labels['upload'] = 'Nahrát';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zavřít';
$labels['messageoptions'] = 'Nastavení zprávy...';
$labels['togglecomposeoptions'] = 'Přepnout možnosti kompozice';
$labels['attachmentrename'] = 'Přejmenovat přílohu';
$labels['low'] = 'Nízká';
$labels['lowest'] = 'Nejnižší';
$labels['normal'] = 'Normální';
$labels['high'] = 'Vysoká';
$labels['highest'] = 'Nejvyšší';
$labels['nosubject'] = '(bez předmětu)';
$labels['showimages'] = 'Zobrazit obrázky';
$labels['allow'] = 'Povolit';
$labels['alwaysshow'] = 'Vždy ukazovat obrázky od $sender';
$labels['alwaysallow'] = 'Vždy povolit od $sender';
$labels['isdraft'] = 'Toto je šablona zprávy.';
$labels['andnmore'] = '$nr dalších...';
$labels['details'] = 'Podrobnosti';
$labels['summary'] = 'Shrnutí';
$labels['headers'] = 'Hlavičky';
$labels['allheaders'] = 'Všechny hlavičky...';
$labels['togglemoreheaders'] = 'Zobrazit více hlaviček zprávy';
$labels['togglefullheaders'] = 'Přepnout skutečné hlavičky zprávy';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Prostý text';
$labels['savesentmessagein'] = 'Ukládat odeslané zprávy v';
$labels['dontsave'] = 'neukládat';
$labels['maxuploadsize'] = 'Maximální povolená velikost souboru je $size';
$labels['addcc'] = 'Přidat pole "Kopie"';
$labels['addbcc'] = 'Přidat pole "Skrytá kopie"';
$labels['addreplyto'] = 'Přidat pole "Odpověď"';
$labels['addfollowupto'] = 'Přidat pole "Followup-To"';
$labels['sendreceipt'] = 'Odeslat potvrzení o přečtení?';
$labels['mdnrequest'] = 'Odesílatel této zprávy si přeje být upozorněn na to, že jste zprávu obdrželi. Chcete přijetí zprávy potvrdit?';
$labels['receiptread'] = 'Potvrzení o přijetí zprávy';
$labels['yourmessage'] = 'Toto je potvrzení o přijetí Vaší zprávy';
$labels['receiptnote'] = 'Poznámka: Toto potvrzení negarantuje, že zpráva byla příjemce přečtena a že porozuměl jejímu obsahu.';
$labels['sendalwaysto'] = 'Vždy odeslat na $email';
$labels['zoomin'] = 'Přiblížit';
$labels['zoomout'] = 'Oddálit';
$labels['rotate'] = 'Otočit';
$labels['increaseimage'] = 'Zvětšit rozměr obrázku';
$labels['decreaseimage'] = 'Zmenšit rozměr obrázku';
$labels['rotateimage'] = 'Otočit obrázek';
$labels['showtools'] = 'Zobrazit nástroje pro obrázky';
$labels['hidetools'] = 'Skrýt nástroje pro obrázky';
$labels['name'] = 'Zobrazit jméno';
$labels['firstname'] = 'Jméno';
$labels['surname'] = 'Příjmení';
$labels['middlename'] = 'Druhé jméno';
$labels['nameprefix'] = 'Titul před';
$labels['namesuffix'] = 'Titul za';
$labels['nickname'] = 'Přezdívka';
$labels['jobtitle'] = 'Pracovní pozice';
$labels['department'] = 'Oddělení';
$labels['gender'] = 'Pohlaví';
$labels['maidenname'] = 'Rodné příjmení';
$labels['email'] = 'E-mail';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Adresa';
$labels['street'] = 'Ulice';
$labels['locality'] = 'Město';
$labels['zipcode'] = 'PSČ';
$labels['region'] = 'Kraj';
$labels['country'] = 'Země';
$labels['birthday'] = 'Datum narození';
$labels['anniversary'] = 'Výročí';
$labels['website'] = 'WWW';
$labels['instantmessenger'] = 'Komunikace (ICQ, messenger...)';
$labels['notes'] = 'Poznámky';
$labels['male'] = 'muž';
$labels['female'] = 'žena';
$labels['manager'] = 'Manažer';
$labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Manžel/ka';
$labels['allfields'] = 'Všechny položky';
$labels['search'] = 'Hledat';
$labels['searchresult'] = 'Výsledek hledání';
$labels['advsearch'] = 'Pokročilé vyhledávání';
$labels['advanced'] = 'Pokročilé';
$labels['other'] = 'Ostatní';
$labels['printcontact'] = 'Vytisknout kontakt';
$labels['qrcode'] = 'QR kód';
$labels['typehome'] = 'Domací';
$labels['typework'] = 'Pracovní';
$labels['typeother'] = 'Ostatní';
$labels['typemobile'] = 'Mobil';
$labels['typemain'] = 'Osobní';
$labels['typehomefax'] = 'Domácí FAX';
$labels['typeworkfax'] = 'Pracovní FAX';
$labels['typecar'] = 'Automobil';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Domácí stránka';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Přidat položku...';
$labels['addcontact'] = 'Přidání kontaktu';
$labels['editcontact'] = 'Upravit kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Vlastnosti kontaktu';
$labels['contactnameandorg'] = 'Jméno a Organizace';
$labels['personalinfo'] = 'Osobní informace';
$labels['personal'] = 'Osobní';
$labels['contactphoto'] = 'Fotografie kontaktu';
$labels['edit'] = 'Upravit';
$labels['cancel'] = 'Konec';
$labels['save'] = 'Uložit';
$labels['delete'] = 'Smazat';
$labels['discard'] = 'Zahodit';
$labels['continue'] = 'Pokračovat';
$labels['ok'] = 'OK';
$labels['rename'] = 'Přejmenovat';
$labels['addphoto'] = 'Přidat';
$labels['replacephoto'] = 'Nahradit';
$labels['uploadphoto'] = 'Nahrát fotku';
$labels['choosefile'] = 'Vybrat soubor...';
$labels['choosefiles'] = 'Vybrat soubory...';
$labels['browse'] = 'Procházet';
$labels['newcontact'] = 'Vytvořit nový kontakt';
$labels['deletecontact'] = 'Smazat vybrané kontakty';
$labels['composeto'] = 'Poslat e-mail';
$labels['contactsfromto'] = 'Kontakty $from až $to z celkem $count';
$labels['print'] = 'Tisk';
$labels['export'] = 'Export';
$labels['exportall'] = 'Export všech';
$labels['exportsel'] = 'Export vybraných';
$labels['exportvcards'] = 'Exportovat kontakty ve formátu vCard';
$labels['newgroup'] = 'Vytvořit novou skupinu';
$labels['addgroup'] = 'Přidat skupinu';
$labels['grouprename'] = 'Přejmenovat skupinu';
$labels['groupdelete'] = 'Smazat skupinu';
$labels['groupassign'] = 'Přiřadit do skupiny...';
$labels['groupremove'] = 'Odebrat ze skupiny';
$labels['groupremoveselected'] = 'Odstranit označené kontakty ze skupiny';
$labels['uponelevel'] = 'O jednu úroveň výš';
$labels['previouspage'] = 'Předchozí';
$labels['firstpage'] = 'Zobrazit první zprávy';
$labels['nextpage'] = 'Další';
$labels['lastpage'] = 'Zobrazit poslední zprávy';
$labels['group'] = 'Skupina';
$labels['groups'] = 'Skupiny';
$labels['listgroup'] = ' Seznam členů skupiny';
$labels['personaladrbook'] = 'Osobní kontakty';
$labels['searchsave'] = 'Uložit hledání';
$labels['searchdelete'] = 'Smazat hledání';
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Importovat kontakty';
$labels['importfromfile'] = 'Importovat ze souboru';
$labels['importtarget'] = 'Přidat kontakty k';
$labels['importreplace'] = 'Nahradit celý seznam kontaktů';
$labels['importgroups'] = 'Importovat přiřazení do skupin';
$labels['importgroupsall'] = 'Vše (vytvořit skupiny v případě potřeby)';
$labels['importgroupsexisting'] = 'Pouze pro existující skupiny';
$labels['importdesc'] = 'Kontakty můžete nahrát z existujícího adresáře.<br/>V současnosti je podporováno načtení adres z dat ve formátu <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> a CSV (odděleno čárkou).';
$labels['importmapdesc'] = 'Potvrďte níže zobrazené přiřazení položek před importováním dat z CSV (odděleno čárkou) souboru.';
$labels['fieldnotmapped'] = 'Položka není přiřazena (nebude použita)';
$labels['skipheader'] = 'První řádku neimportovat (hlavičky)';
$labels['done'] = 'Hotovo';
$labels['settingsfor'] = 'Nastavení pro';
$labels['about'] = 'O programu';
$labels['preferences'] = 'Vlastnosti';
$labels['userpreferences'] = 'Vlastnosti uživatele';
$labels['editpreferences'] = 'Upravit vlastnosti uživatele';
$labels['identities'] = 'Profily';
$labels['manageidentities'] = 'Správa profilů';
$labels['newidentity'] = 'Vytvořit nový profil';
$labels['addidentity'] = 'Přidat profil';
$labels['editidentity'] = 'Upravit profil';
$labels['identityencryption'] = 'Šifrování';
$labels['preferhtml'] = 'Upřednostňovat HTML zobrazení';
$labels['defaultcharset'] = 'Výchozí kódování';
$labels['htmlmessage'] = 'HTML zpráva';
$labels['messagepart'] = 'Část';
$labels['digitalsig'] = 'Digitální podpis';
$labels['dateformat'] = 'Formát data';
$labels['timeformat'] = 'Formát času';
$labels['prettydate'] = 'Hezčí datum';
$labels['setdefault'] = 'Nastavit výchozí';
$labels['autodetect'] = 'Automaticky';
$labels['language'] = 'Jazyk';
$labels['timezone'] = 'Časová zóna';
$labels['pagesize'] = 'Řádků na stránku';
$labels['signature'] = 'Podpis';
$labels['dstactive'] = 'Letní čas';
$labels['showinextwin'] = 'Otevřít zprávu v novém okně';
$labels['composeextwin'] = 'Vytvořit v novém okně';
$labels['htmleditor'] = 'Vytvářet HTML zprávy';
$labels['htmlonreply'] = 'jen při odpovědi na HTML zprávy';
$labels['htmlonreplyandforward'] = 'při přeposlání nebo odpovědi na HTML zprávu';
$labels['htmlsignature'] = 'HTML podpis';
$labels['showemail'] = 'Zobrazit e-mailovou adresu se skutečným jménem';
$labels['previewpane'] = 'Zobrazit panel náhledu';
$labels['skin'] = 'Vzhled';
$labels['logoutclear'] = 'Vyprázdnit koš při odhlášení';
$labels['logoutcompact'] = 'Provést údržbu schránky při odhlášení';
$labels['uisettings'] = 'Uživatelské rozhraní';
$labels['serversettings'] = 'Nastavení serveru';
$labels['mailboxview'] = 'Zobrazení schránky';
$labels['mdnrequests'] = 'Oznámení o doručení';
$labels['askuser'] = 'zeptat se';
$labels['autosend'] = 'poslat potvrzení automaticky';
$labels['autosendknown'] = 'poslat potvrzení pouze mým kontaktům, jinak se zeptat';
$labels['autosendknownignore'] = 'poslat potvrzení pouze mým kontaktům, jinak ignorovat';
$labels['autosendtrusted'] = 'odeslat potvrzení pouze důvěryhodným odesilatelům, jinak se mě zeptat';
$labels['autosendtrustedignore'] = 'odeslat potvrzení pouze důvěryhodným odesilatelům, jinak ignorovat';
$labels['ignorerequest'] = 'ignorovat požadavek';
$labels['readwhendeleted'] = 'Při odstranění označit zprávu jako přečtenou';
$labels['flagfordeletion'] = 'Zprávu nemazat, pouze označit pro odstranění';
$labels['skipdeleted'] = 'Nezobrazovat smazané zprávy';
$labels['deletealways'] = 'Odstranit zprávy, pokud selže jejich přesun do koše';
$labels['deletejunk'] = 'Přímo mazat zprávy ze složky Nevyžádaná pošta';
$labels['showremoteimages'] = 'Zobrazovat obrázky uložené mimo mail';
$labels['allowremoteresources'] = 'Povolit vzdálené zdroje (obrázky, styly)';
$labels['fromknownsenders'] = 'od známých uživatelů';
$labels['fromtrustedsenders'] = 'od důvěryhodných odesilatelů';
$labels['frommycontacts'] = 'od mých kontaktů';
$labels['always'] = 'vždy';
$labels['alwaysbutplain'] = 'vždy, pokud se neodpovídá na zprávu ve formátu plain text';
$labels['showinlineimages'] = 'Zobrazovat připojené obrázky pod textem';
$labels['autosavedraft'] = 'Automaticky uložit rozepsané zprávy';
$labels['everynminutes'] = 'každých $n minut';
$labels['refreshinterval'] = 'Obnovit (zkontroluj nové zprávy, atd.)';
$labels['never'] = 'nikdy';
$labels['immediately'] = 'ihned';
$labels['messagesdisplaying'] = 'Zobrazování zpráv';
$labels['messagescomposition'] = 'Psaní zpráv';
$labels['mimeparamfolding'] = 'Jména příloh';
$labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (ostatní)';
$labels['force7bit'] = 'Použít kódování MIME pro 8-bitové znaky';
$labels['savelocalstorage'] = "Uložit v lokální paměti prohlížeče (dočasně)";
$labels['advancedoptions'] = 'Pokročilá nastavení';
$labels['toggleadvancedoptions'] = 'Přepnout pokročilé možnosti';
$labels['focusonnewmessage'] = 'Aktivovat okno prohlížeče při příchozí zprávě';
$labels['checkallfolders'] = 'Kontrolovat nové zprávy ve všech složkách';
$labels['displaynext'] = 'Zobrazit další záznam po smazání/přesunutí';
$labels['defaultfont'] = 'Výchozí písmo zprávy HTML';
$labels['mainoptions'] = 'Hlavní nastavení';
$labels['browseroptions'] = 'Možnosti prohlížeče';
$labels['section'] = 'Sekce';
$labels['maintenance'] = 'Údržba';
$labels['newmessage'] = 'Nová zpráva';
$labels['signatureoptions'] = 'Nastavení podpisu';
$labels['whenreplying'] = 'Při odpovídání';
$labels['replyempty'] = 'necitovat původní zprávu';
$labels['replytopposting'] = 'začít novou zprávu nad původní';
$labels['replytoppostingnoindent'] = 'Začít novou zprávu nad citovanou (bez odsazení)';
$labels['replybottomposting'] = 'začít novou zprávu pod původní';
$labels['replyremovesignature'] = 'Při odpovídání odstranit ze zprávy původní podpis';
$labels['autoaddsignature'] = 'Automaticky přidat podpis';
$labels['newmessageonly'] = 'pouze k novým zprávám';
$labels['replyandforwardonly'] = 'jen k odpovědi a přeposílané zprávě';
$labels['insertsignature'] = 'Vložit podpis';
$labels['sigbelow'] = 'Vkládat podpis pod citovanou zprávu';
$labels['sigseparator'] = 'Vynutit standardní oddělovač v podpisech';
$labels['automarkread'] = 'Označit zprávy jako přečtené';
$labels['afternseconds'] = 'po $n sekundách';
$labels['reqmdn'] = 'Vždy požadovat doručenku';
$labels['reqdsn'] = 'Vždy požádat o oznámení stavu doručení';
$labels['replysamefolder'] = 'Ukládat odpovědi ve stejné složce jako je zodpovězená zpráva';
$labels['defaultabook'] = 'Výchozí adresář kontaktů';
$labels['autocompletesingle'] = 'Při doplňování adres přeskočit alternativní e-mailovou adresu.';
$labels['listnamedisplay'] = 'Vypsat kontakty jako';
$labels['contactformmode'] = 'Forma kontaktu';
$labels['privatemode'] = 'Osobní (Domácí)';
$labels['businessmode'] = 'Pracovní';
$labels['collectedaddresses'] = 'Shromážděné adresy';
$labels['collectedrecipients'] = 'Shromáždění příjemci';
$labels['collectedrecipientsopt'] = 'Uložení příjemců z odchozích emailů do';
$labels['collectedsendersopt'] = 'Uložení důvěryhodných odesilatelů do';
$labels['trustedsenders'] = 'Důvěryhodní odesilatelé';
$labels['spellcheckbeforesend'] = 'Před odesláním zkontrolovat pravopis';
$labels['spellcheckoptions'] = 'Nastavení pravopisu';
$labels['spellcheckignoresyms'] = 'Ignorovat slova obsahující symboly';
$labels['spellcheckignorenums'] = 'Ignorovat slova obsahující čísla';
$labels['spellcheckignorecaps'] = 'Ignorovat slova psaná velkými písmeny';
$labels['addtodict'] = 'Přidat do slovníku';
$labels['mailtoprotohandler'] = 'Zaregistrovat handler pro odkazy „mailto:“';
$labels['standardwindows'] = 'Zacházet s vyskakovacími okny jako se standardními okny';
$labels['forwardmode'] = 'Přeposlat zprávu';
$labels['inline'] = 'vloženě';
$labels['asattachment'] = 'jako přílohu';
$labels['replyallmode'] = 'Výchozí akce tlačítka [Odpovědět všem]';
$labels['replyalldefault'] = 'odpovědět všem';
$labels['replyalllist'] = 'odpovědět pouze do poštovní konference (pokud je nalezena)';
$labels['allmessages'] = 'Všechny zprávy';
$labels['olderxdays'] = 'starší než $x dní';
$labels['folder'] = 'Složka';
$labels['folders'] = 'Složky';
$labels['foldername'] = 'Jméno složky';
$labels['subscribed'] = 'Vybráno';
$labels['messagecount'] = 'Počet zpráv';
$labels['create'] = 'Vytvořit';
$labels['createfolder'] = 'Vytvořit novou složku';
$labels['managefolders'] = 'Spravovat složky';
$labels['specialfolders'] = 'Speciální složky';
$labels['properties'] = 'Vlastnosti';
$labels['folderproperties'] = 'Vlastnosti složky';
$labels['parentfolder'] = 'Nadřazená složka';
$labels['location'] = 'Umístění';
$labels['info'] = 'Informace';
$labels['getfoldersize'] = 'Kliknutím zjistíte velikost složky';
$labels['changesubscription'] = 'Kliknutím změníte přednastavení';
$labels['foldertype'] = 'Typ složky';
$labels['personalfolder'] = 'Soukromá složka';
$labels['otherfolder'] = 'Složky ostatních uživatelů';
$labels['sharedfolder'] = 'Sdílená složka';
$labels['findfolders'] = 'Hledat složky';
$labels['findcontacts'] = 'Najít kontakty';
$labels['findmail'] = 'Najít zprávy';
$labels['namespace.personal'] = 'Osobní';
$labels['namespace.other'] = 'Jiných uživatelů';
$labels['namespace.shared'] = 'Sdílené';
$labels['dualuselabel'] = 'Může obsahovat pouze';
$labels['dualusemail'] = 'zprávy';
$labels['dualusefolder'] = 'složky';
$labels['generate'] = 'Vygenerovat';
$labels['encryptioncreatekey'] = 'Vytvořit nový pár klíčů';
$labels['openmailvelopesettings'] = 'Otevřít nastavení Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'V klíčence Mailvelope máte $nr odpovídajících privátních PGP klíčů:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Klíčenka Mailvelope neobsahuje privátní PGP klíč identity odesílatele. Chcete ho pro šifrování zpráv vytvořit?';
$labels['encryption'] = 'Šifrování';
$labels['mailvelopeoptions'] = 'Nastavení Mailvelope';
$labels['mailvelopemainkeyring'] = 'Použít hlavní klíčenku Mailvelope';
$labels['mailvelopenotfound'] = 'Rozšíření Mailvelope není povoleno nebo nainstalováno ve vašem prohlížeči.';
$labels['sortby'] = 'Seřadit podle';
$labels['sortasc'] = 'Seřadit vzestupně';
$labels['sortdesc'] = 'Seřadit sestupně';
$labels['undo'] = 'Vrátit zpět';
$labels['installedplugins'] = 'Nainstalované pluginy';
$labels['plugin'] = 'Zásuvný modul';
$labels['version'] = 'Verze';
$labels['source'] = 'Zdroj';
$labels['destination'] = 'Cíl';
$labels['license'] = 'Licence';
$labels['support'] = 'Podpora';
$labels['savedsearches'] = 'Uložená vyhledávání';
$labels['dateformatY'] = 'RRRR';
$labels['dateformaty'] = 'RR';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angličtina';
$labels['westerneuropean'] = 'Západní Evropa';
$labels['easterneuropean'] = 'Východní Evropa';
$labels['southeasterneuropean'] = 'Jiho-východní Evropa';
$labels['baltic'] = 'Baltština';
$labels['cyrillic'] = 'Cyrilice';
$labels['arabic'] = 'Arabština';
$labels['greek'] = 'Řečtina';
$labels['hebrew'] = 'Hebrejština';
$labels['turkish'] = 'Turečtina';
$labels['nordic'] = 'Nordština';
$labels['thai'] = 'Thajština';
$labels['celtic'] = 'Keltština';
$labels['vietnamese'] = 'Vietnamština';
$labels['japanese'] = 'Japonština';
$labels['korean'] = 'Korejština';
$labels['chinese'] = 'Čínština';
$labels['arialabeltopnav'] = 'Ovládání okna';
$labels['arialabeltasknav'] = 'Úlohy aplikace';
$labels['arialabeltoolbar'] = 'Panel nástrojů aplikace';
$labels['arialabellistnav'] = 'Seznam navigace';
$labels['arialabelactivetask'] = 'Aktivní úloha';
$labels['arialabelmessagessearchfilter'] = 'Filtr seznamu e-mailů';
$labels['arialabelmailsearchform'] = 'Formulář pro vyhledávání e-mailů';
$labels['arialabelcontactsearchform'] = 'Formulář pro vyhledávání kontaktů';
$labels['arialabelmailquicksearchbox'] = 'Vstup pro vyhledávání e-mailu';
$labels['arialabelquicksearchbox'] = 'Vstup pro vyhledávání';
$labels['arialabelfoldersearchfilter'] = 'Filtr pro seznam složek';
$labels['arialabelfoldersearchform'] = 'Formulář pro vyhledávání složek';
$labels['arialabelfolderlist'] = 'Výběr složky s e-mailovými zprávami';
$labels['arialabelmessagelist'] = 'Seznam e-mailových zpráv';
$labels['arialabelmailpreviewframe'] = 'Náhled zprávy';
$labels['arialabelmailboxmenu'] = 'Menu akcí pro složku';
$labels['arialabellistselectmenu'] = 'Menu pro výběr seznamu';
$labels['arialabelthreadselectmenu'] = 'Menu pro seznam vláken';
$labels['arialabelmessagelistoptions'] = 'Možnosti zobrazení a třídění seznamu zpráv';
$labels['arialabelmailimportdialog'] = 'Dialog pro import zpráv';
$labels['arialabelmessagenav'] = 'Navigace zprávy';
$labels['arialabelmessagebody'] = 'Tělo zprávy';
$labels['arialabelmessageactions'] = 'Akce zprávy';
$labels['arialabelcontactquicksearch'] = 'Formulář pro vyhledávání kontaktů';
$labels['arialabelcontactsearchbox'] = 'Vstup pro vyhledávání kontaktů';
$labels['arialabelmessageheaders'] = 'Hlavičky zprávy';
$labels['arialabelforwardingoptions'] = 'Možnosti přeposílání';
$labels['arialabelreplyalloptions'] = 'Možnosti pro "Odpovědět všem"';
$labels['arialabelmoremessageactions'] = 'Více akcí pro zprávu';
$labels['arialabelmorecontactactions'] = 'Další akce pro kontakt';
$labels['arialabelmarkmessagesas'] = 'Označit vybrané zprávy jako...';
$labels['arialabelcomposeoptions'] = 'Možnosti kompozice';
$labels['arialabelresponsesmenu'] = 'Menu pro předpřipravené odpovědi';
$labels['arialabelattachmentuploadform'] = 'Formulář pro vložení přílohy';
$labels['arialabelattachmentmenu'] = 'Možnosti přílohy';
$labels['arialabelmailtomenu'] = 'Možnosti e-mailové adresy';
$labels['arialabelattachmentpreview'] = 'Náhled přílohy';
$labels['ariasummarycomposecontacts'] = 'Seznam kontaktů a skupin pro výběr příjemců';
$labels['arialabelcontactexportoptions'] = 'Možnosti pro export kontaktu';
$labels['arialabelabookgroupoptions'] = 'Možnosti adresáře/skupiny';
$labels['arialabelpreferencesform'] = 'Formulář preferencí';
$labels['arialabelidentityeditfrom'] = 'Formulář pro úpravu identity';
$labels['arialabelresponseeditfrom'] = 'Formulář pro úpravu odpovědi';
$labels['arialabelsearchterms'] = 'Výrazy pro vyhledávání';
$labels['arialabeldropactionmenu'] = 'Drag-n-Drop akční menu';
$labels['arialabelheadersmenu'] = 'Menu přidání příjemce (hlavička)';
$labels['arialabelimagetools'] = 'Nástroje pro obrázky';
$labels['helplistnavigation'] = 'Seznam navigace pomocí klávesnice';
$labels['helplistkeyboardnavigation'] = "Šipky nahoru/dolu: Posunout výběr/označení řádku.
Mezerník: Označit vybraný řádek.
Shift + nahoru/dolu: Vybrat další řádek nad/pod.
Ctrl + Mezerník: Přidat/odebrat označení vybraného řádku.";
$labels['helplistkeyboardnavmessages'] = "Šipky vlevo/vpravo: Rozbalit/zabalit vlákno zprávy (pouze v režimu vláken).
Enter: Otevřít vybranou zprávu.
Delete: Přesunout vybrané zprávy do Koše.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Otevřít označený/vybraný kontakt.";
localization/cs_CZ/messages.inc000064400000043061151727150600012547 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Došlo k chybě!';
$messages['loginfailed']  = 'Přihlášení selhalo.';
$messages['cookiesdisabled'] = 'Váš prohlížeč nepodporuje cookies, které jsou pro přihlášení nezbytné.';
$messages['sessionerror'] = 'Vaše přihlášení je neplatné nebo vypršelo.';
$messages['cookiesmismatch'] = 'Nalezena nekonzistentnost v cookies. Vymažte, prosím, cookies ve vašem prohlížeči.';
$messages['storageerror'] = 'Připojení na IMAP server selhalo.';
$messages['servererror'] = 'Chyba serveru!';
$messages['servererrormsg'] = 'Chyba serveru: $msg';
$messages['accountlocked'] = 'Příliš mnoho chybných pokusů o přihlášení. Zkuste to později.';
$messages['connerror'] = 'Chyba připojení (Selhalo připojeni k serveru)!';
$messages['dberror'] = 'Chyba databáze!';
$messages['dbconnerror'] = 'Nelze se připojit k databázi!';
$messages['windowopenerror'] = 'Vyskakovací okno bylo zablokováno!';
$messages['requesttimedout'] = 'Došlo k vypršení požadavku';
$messages['errorreadonly'] = 'Příkaz nelze provést, složka je určena jen ke čtení.';
$messages['errornoperm'] = 'Příkaz nelze provést, nemáte oprávnění.';
$messages['erroroverquota'] = 'Příkaz nelze provést, není volné místo na disku.';
$messages['erroroverquotadelete'] = 'Není volné místo na disku. Použijte SHIFT+DEL k odstranění zprávy.';
$messages['invalidrequest'] = 'Nesprávný požadavek. Data nebyla uložena.';
$messages['invalidhost'] = 'Špatné jméno serveru.';
$messages['nomessagesfound'] = 'Ve schránce nebyla nalezena žádná zpráva.';
$messages['loggedout'] = 'Byli jste odhlášeni. Na shledanou!';
$messages['mailboxempty'] = 'Schránka je prázdná';
$messages['nomessages'] = 'Žádné zprávy';
$messages['refreshing'] = 'Obnovuji...';
$messages['loading'] = 'Načítám...';
$messages['uploading'] = 'Nahrávám soubor...';
$messages['attaching'] = 'Přikládám soubor...';
$messages['uploadingmany'] = 'Nahrávám soubory...';
$messages['loadingdata'] = 'Načítám data...';
$messages['checkingmail'] = 'Kontroluji nové zprávy...';
$messages['sendingmessage'] = 'Odesílám zprávu...';
$messages['messagesent'] = 'Zpráva byla odeslána.';
$messages['savingmessage'] = 'Ukládám zprávu...';
$messages['messagesaved'] = 'Zpráva uložena do Rozepsané.';
$messages['successfullysaved'] = 'Uloženo.';
$messages['savingresponse'] = 'Ukládám text odpovědi...';
$messages['deleteresponseconfirm'] = 'Opravdu chcete odstranit tento text odpovědi?';
$messages['nocontactselected'] = 'Dosud jste nevybrali kontakt.';
$messages['addedsuccessfully'] = 'Kontakt byl přidán do adresáře.';
$messages['contactexists'] = 'Kontakt se zadanou e-mailovou adresou již existuje.';
$messages['contactnameexists'] = 'Kontakt se stejným jménem již existuje.';
$messages['blockedimages'] = 'Z bezpečnostních důvodů byly zablokovány obrázky ve zprávě.';
$messages['blockedresources'] = 'Z důvodu ochrany soukromí bylo zablokováno načtení vzdálených zdrojů.';
$messages['suspiciousemail'] = 'Zpráva obsahuje podezřelé adresáty, kteří mohou být podvodní.';
$messages['bccemail'] = 'Přeposílaná zpráva obsahuje důvěrné příjemce (Bcc).';
$messages['bouncehint'] = 'Zpráva bude odeslána bez dalších změn, t.j. bude použito původní tělo zprávy, hlavičky i příjemci.';
$messages['encryptedmessage'] = 'Tato zpráva je zašifrovaná a nelze ji zobrazit.';
$messages['externalmessagedecryption'] = 'Toto je šifrovaná zpráva a může být dešifrována pomocí rozšíření ve vašem prohlížeči.';
$messages['nopubkeyfor'] = 'Nenalezen validní veřejný klíč pro $email';
$messages['nopubkeyforsender'] = 'Pro Vaši identitu odesílatele se nenašel žádný platný veřejný klíč. Chcete správu zašifrovat pro příjemce?';
$messages['encryptnoattachments'] = 'Přílohy, které jste už uložili na server, není možné zašifrovat. Prosím, přidejte je znovu v editoru pro šifrování.';
$messages['searchpubkeyservers'] = 'Přejete si prohledat servery s klíči k nalezení chybějících klíčů?';
$messages['encryptpubkeysfound'] = 'Byly nalezeny následující veřejné klíče:';
$messages['keyservererror'] = 'Nebylo možné získat klíč ze serveru s klíči.';
$messages['keyimportsuccess'] = 'Veřejný klíč $key byl vložen do vaší klíčenky.';
$messages['nocontactsfound'] = 'Kontakty nebyly nalezeny.';
$messages['contactnotfound'] = 'Požadovaný kontakt nebyl nalezen.';
$messages['contactsearchonly'] = 'Pro zobrazení kontaktů ze zvoleného adresáře použijte vyhledávací formulář.';
$messages['sendingfailed'] = 'Odesílání zprávy selhalo.';
$messages['senttooquickly'] = 'Prosím počkejte $sec sekund před odesláním zprávy.';
$messages['errorsavingsent'] = 'Nastala chyba při ukládání odeslané zprávy.';
$messages['errorsaving'] = 'Vyskytla se chyba při ukládání.';
$messages['errormoving'] = 'Nemohu přesunout zprávu.';
$messages['errorcopying'] = 'Nemohu zkopírovat zprávu.';
$messages['errordeleting'] = 'Nemohu smazat zprávu.';
$messages['errormarking'] = 'Zprávu nelze označit.';
$messages['alerttitle'] = 'Pozor';
$messages['confirmationtitle'] = 'Jste si jistý...';
$messages['deletecontactconfirm']  = 'Opravdu chcete smazat označené kontakty?';
$messages['deletegroupconfirm']  = 'Opravdu chcete smazat skupinu?';
$messages['deletemessagesconfirm'] = 'Opravdu chcete smazat označené zprávy?';
$messages['deletefolderconfirm']  = 'Opravdu chcete smazat tento adresář?';
$messages['movefolderconfirm']  = 'Opravdu chcete přesunout tento adresář?';
$messages['purgefolderconfirm']  = 'Opravdu chcete smazat všechny zprávy v této složce?';
$messages['contactdeleting'] = 'Mažu kontakty...';
$messages['groupdeleting'] = 'Mažu skupinu...';
$messages['folderdeleting'] = 'Odstraňuji složku...';
$messages['foldermoving'] = 'Přesouvám složku...';
$messages['foldersubscribing'] = 'Přihlašuji složku k odběru...';
$messages['folderunsubscribing'] = 'Odhlašuji odběr složky...';
$messages['formincomplete'] = 'Formulář nebyl korektně vyplněn.';
$messages['noemailwarning'] = 'Zadejte, prosím, platnou e-mailovou adresu.';
$messages['nonamewarning']  = 'Zadejte, prosím, jméno.';
$messages['nopagesizewarning'] = 'Zadejte, prosím, velikost stránky.';
$messages['nosenderwarning'] = 'Zadejte e-mailovou adresu odesílatele.';
$messages['recipientsadded'] = 'Příjemci byli přidáni.';
$messages['norecipientwarning'] = 'Zadejte, prosím, alespoň jednoho příjemce.';
$messages['disclosedrecipwarning'] = 'Všichni příjemci uvidí adresy ostatních příjemců. Pro ochranu soukromí příjemců můžete použít pole Skrytá kopie (Bcc).';
$messages['disclosedreciptitle'] = 'Příliš mnoho veřejných příjemců';
$messages['nosubjectwarning']  = 'Předmět nebyl vyplněn. Přejete si jej zadat nyní?';
$messages['nosubjecttitle']  = 'Žádný předmět';
$messages['nobodywarning'] = 'Opravdu chtete odeslat prázdnou zprávu?';
$messages['notsentwarning'] = 'Zpráva nebyla odeslána a obsahuje neuložené změny. Přejete si změny zahodit?';
$messages['restoresavedcomposedata'] = 'Byla nalezena dříve vytvořená ale neodeslaná zpráva.\n\nPředmět: $subject\nUloženo: $date\n\nPřejete si obnovit tuto zprávu?';
$messages['nosearchname'] = 'Zadejte, prosím, jméno nebo e-mail kontaktu.';
$messages['notuploadedwarning'] = 'Ještě nebyly nahrány všechny přílohy. Počkejte prosím nebo nahrávání zrušte.';
$messages['searchsuccessful'] = 'Nalezeno $nr zpráv.';
$messages['contactsearchsuccessful'] = 'Nalezeno $nr kontaktů.';
$messages['searchnomatch'] = 'Nenalezena žádná zpráva';
$messages['searching'] = 'Vyhledávám...';
$messages['checking'] = 'Kontroluji...';
$messages['stillsearching'] = 'Stále vyhledávám...';
$messages['nospellerrors'] = 'Nebyly nalezeny žádné chyby.';
$messages['folderdeleted'] = 'Složka byla vymazána.';
$messages['foldersubscribed'] = 'Složka byla přihlášena k odběru.';
$messages['folderunsubscribed'] = 'Odběr složky byl odhlášen.';
$messages['folderpurged'] = 'Složka byla vyprázdněna.';
$messages['folderexpunged'] = 'Složka byla zkomprimována.';
$messages['deletedsuccessfully'] = 'Smazáno.';
$messages['converting'] = 'Odstraňuji formátování ze zprávy...';
$messages['messageopenerror'] = 'Nemohu načíst zprávu ze serveru.';
$messages['filelinkerror'] = 'Přikládání souboru selhalo.';
$messages['fileuploaderror'] = 'Nahrávání souboru selhalo.';
$messages['csvfilemismatch'] = 'Iimport více CSV souborů s různými poli není podporován.';
$messages['filesizeerror'] = 'Soubor přesáhl maximální velikost $size.';
$messages['filecounterror'] = 'Můžete nahrát maximálně $count souborů najednou.';
$messages['msgsizeerror'] = 'Selhalo připojení souboru. Byla překročena maximální velikost zprávy ($size).';
$messages['msgsizeerrorfwd'] = 'Překročena maximální délka zprávy ($size). Počet položek, které nebyly připojeny je $num.';
$messages['copysuccess'] = 'Zkopírováno $nr kontaktů.';
$messages['movesuccess'] = 'Přesunuto $nr kontaktů.';
$messages['copyerror'] = 'Kontakty nelze kopírovat.';
$messages['moveerror'] = 'Kontakty nelze přesunout.';
$messages['sourceisreadonly'] = 'Tento zdroj adres je pouze pro čtení.';
$messages['errorsavingcontact'] = 'Nemohu uložit adresu kontaktu.';
$messages['movingmessage'] = 'Přesouvám zprávu...';
$messages['copyingmessage'] = 'Kopíruji zprávu...';
$messages['copyingcontact'] = 'Kopíruji kontakty...';
$messages['movingcontact'] = 'Přesouvám kontakty...';
$messages['deletingmessage'] = 'Odstraňuji zprávu...';
$messages['markingmessage'] = 'Označuji zprávu...';
$messages['addingmember'] = 'Přidávám kontakty do skupiny...';
$messages['removingmember'] = 'Odstraňuji kontakty ze skupiny...';
$messages['receiptsent'] = 'Potvrzení o přřijetí zprávy odesláno.';
$messages['errorsendingreceipt'] = 'Potvrzení o přijetí zprávy nebylo možné odeslat.';
$messages['deleteidentityconfirm'] = 'Opravdu chcete odstranit tuto identitu?';
$messages['nodeletelastidentity'] = 'Alespoň jedna identita musí být ponechána. Identitu nelze odstranit.';
$messages['forbiddencharacter'] = 'Název složky obsahuje zakázaný znak.';
$messages['selectimportfile'] = 'Prosím vyberte soubor k nahrání.';
$messages['addresswriterror'] = 'Vybraný seznam kontaktů není zapisovatelný.';
$messages['contactaddedtogroup'] = 'Kontakty byly přidány do této skupiny.';
$messages['contactremovedfromgroup'] = 'Kontakty byly odstraněny z této skupiny.';
$messages['nogroupassignmentschanged'] = 'Nebylo změněno přiřazení do skupin.';
$messages['importwait'] = 'Importuji, prosím čekejte...';
$messages['importformaterror'] = 'Import se nezdařil! Typ souboru není podporován.';
$messages['importconfirm'] = 'Úspěšně naimportováno $inserted kontaktů, $skipped existujících záznamů přeskočeno: $names';
$messages['importconfirmskipped'] = '<b>Přeskočeno $skipped existujících položek</b>';
$messages['importmessagesuccess'] = 'Naimportováno $nr zpráv';
$messages['importmessageerror'] = 'Import se nezdařil! Nahraný soubor není platnou zprávou nebo souborem mailboxu';
$messages['opnotpermitted'] = 'Operace není povolena!';
$messages['nofromaddress'] = 'Chybějící e-mailová adresa v označeném profilu.';
$messages['editorwarning'] = 'Přepnutím režimu editoru ztratíte veškeré formátování. Chcete pokračovat?';
$messages['httpreceivedencrypterror'] = 'Vyskytla se vážná chyba v konfiguraci. Kontaktujte neprodleně administátora. Vaše zpráva nemohla být odeslána.';
$messages['smtpconnerror'] = 'Chyba SMTP ($code): Připojení k serveru selhalo.';
$messages['smtpautherror'] = 'Chyba SMTP ($code): Chyba přihlášení.';
$messages['smtpfromerror'] = 'Chyba SMTP ($code): Nelze nastavit odesílatele "$from" ($msg).';
$messages['smtptoerror'] = 'Chyba SMTP ($code): Nelze přidat příjemce "$to" ($msg).';
$messages['smtprecipientserror'] = 'Chyba SMTP: Nelze zpracovat seznam příjemců.';
$messages['smtputf8error'] = 'Chyba SMTP: Unicode v e-mailové adrese není podporován na serveru.';
$messages['smtpsizeerror'] = 'Chyba SMTP: Zpráva překročila limit serveru ($limit)';
$messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
$messages['toomanyrecipients'] = 'Příliš mnoho příjemců. Změňte počet příjemců na $max.';
$messages['maxgroupmembersreached'] = 'Počet členských skupin dosáhl maximum z $max';
$messages['internalerror'] = 'Došlo k interní chybě. Zkuste to prosím znovu.';
$messages['contactdelerror'] = 'Kontakty nelze odstranit.';
$messages['contactdeleted'] = 'Kontakty byly odstraněny.';
$messages['contactrestoreerror'] = 'Nelze obnovit smazané kontakty.';
$messages['contactrestored'] = 'Kontakty byly obnoveny.';
$messages['groupdeleted'] = 'Skupina byla odstraněna.';
$messages['grouprenamed'] = 'Skupina byla přejmenována.';
$messages['groupcreated'] = 'Skupina byla vytvořena.';
$messages['savedsearchdeleted'] = 'Uložené hledání bylo ostraněno.';
$messages['savedsearchdeleteerror'] = 'Nelze odstranit uložené hledání.';
$messages['savedsearchcreated'] = 'Nové hledání bylo vytvořeno.';
$messages['savedsearchcreateerror'] = 'Nelze vytvořit uložené hledání.';
$messages['messagedeleted'] = 'Zpráva byla odstraněna.';
$messages['messagemoved'] = 'Zpráva byla přesunuta.';
$messages['messagemovedtotrash'] = 'Zpráva byla přesunuta do koše.';
$messages['messagecopied'] = 'Zpráva byla zkopirována.';
$messages['messagemarked'] = 'Zpráva označena.';
$messages['autocompletechars'] = 'Napište alespoň $min znaků pro automatické doplnění.';
$messages['autocompletemore'] = 'Napište více znaků. Nalezeno příliš mnoho položek.';
$messages['namecannotbeempty'] = 'Jméno musí být vyplněno.';
$messages['nametoolong'] = 'Jméno je příliš dlouhé.';
$messages['namedotforbidden'] = 'Jméno složky nemůže začínat tečkou.';
$messages['folderupdated'] = 'Složka byla aktualizována.';
$messages['foldercreated'] = 'Složka byla vytvořena.';
$messages['invalidimageformat'] = 'Formát obrázku není podporován.';
$messages['mispellingsfound'] = 'Ve zprávě byly zjištěny pravopisné chyby.';
$messages['parentnotwritable'] = 'Nelze vytvořit/přesunout složku do vybrané rodičovské složky. Nemáte práva.';
$messages['messagetoobig'] = 'Část zprávy je příliš velká pro zpracování.';
$messages['attachmentvalidationerror'] = 'Tato příloha je podezřelá, protože její typ se neshoduje s typem uvedeným ve zprávě. Pokud nedůvěřujete odesílateli, neměli byste přílohu otevírat v prohlížeči, protože může obsahovat škodlivý obsah.<br/><br/><em>Očekáváno: $expected; nalezeno: $detected</em>';
$messages['noscriptwarning'] = 'Upozornění: Tato emailová aplikace vyžaduje Javascript! Prosím, zapněte Javascript v nastavení prohlížeče.';
$messages['messageissent'] = 'Zpráva již byla odeslána, ovšem ještě nebyla uložena. Přejete si ji uložit nyní?';
$messages['errnotfound'] = 'Soubor nebyl nalezen';
$messages['errnotfoundexplain'] = 'Požadovaný objekt nebyl nalezen!';
$messages['errfailedrequest'] = 'Požadavek zamítnut';
$messages['errauthorizationfailed'] = 'Autorizace selhala';
$messages['errunauthorizedexplain'] = 'Nemohu ověřit, zda máte právo přistupovat k této službě!';
$messages['errrequestcheckfailed'] = 'Stav Vašeho požadavku není možné ověřit.';
$messages['errcsrfprotectionexplain'] = "Pro ochranu Vašeho účtu je přístup do této sekce dočasně zablokován.  Existuje důvodné podezření, že Váš účet byl napaden.\nPokud vidíte toto upozornění, nejspíše jste se neodhlásili před opuštěním této stránky.\n\nAbyste mohli pokračovat, je nutné kontaktovat pověřenou osobu.";
$messages['errcontactserveradmin'] = 'Prosím, kontaktujte správce serveru.';
$messages['clicktoresumesession'] = 'Klikněte sem pro obnovu Vašeho předchozího sezení.';
$messages['errcomposesession'] = 'Chybná relace pro vytvoření zprávy';
$messages['errcomposesessionexplain'] = 'Požadovaná relace pro vytvoření zprávy nebyla nalezena.';
$messages['clicktocompose'] = 'Klikněte sem pro vytvoření nové zprávy';
$messages['nosupporterror'] = 'Tato funkcionalita není vaším prohlížečem podporována.';
$messages['siginserted'] = 'Podpis byl vložen.';
$messages['responseinserted'] = 'Odpověď byla vložena.';
$messages['noresponsesavailable'] = 'Žádné odpovědi nejsou k dispozici';
$messages['listempty'] = 'Seznam je prázdný.';
$messages['listusebutton'] = 'Použijte tlačítko "Vytvořit" pro přidání nového záznamu.';
$messages['keypaircreatesuccess'] = 'Pro $identity byl vytvořen nový pár klíčů.';
$messages['emptyattachment'] = 'Příloha je prázdná.<br>Zkontrolujte její stav s odesílatelem.';
$messages['oauthloginfailed'] = 'Přihlášení přes OAuth selhalo. Prosím, zkuste to znovu';
localization/mn_MN/labels.inc000064400000005022151727150600012200 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = '$product вэб майлд тавтай морилно уу';
$labels['username'] = 'Хэрэглэгчийн нэр';
$labels['password'] = 'Нууц үг';
$labels['server'] = 'Сервер';
$labels['login'] = 'Нэвтрэх';
$labels['logout'] = 'Гарах';
$labels['mail'] = 'Захиа';
$labels['settings'] = 'Тохиргоо';
$labels['addressbook'] = 'Хаягийн дэвтэр';
$labels['inbox'] = 'Ирэх хайрцаг';
$labels['drafts'] = 'Ноорог';
$labels['sent'] = 'Илгээсэн';
$labels['trash'] = 'Хогийн сав';
$labels['junk'] = 'Спам';
$labels['show_real_foldernames'] = 'Тусгай хавтасны жинхэнэ нэрийг харуулна';
$labels['subject'] = 'Гарчиг';
$labels['from'] = 'Хэнээс';
$labels['sender'] = 'Илгээгч';
$labels['to'] = 'Хэнд';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Хариулах-Хэнд: ';
$labels['date'] = 'Огноо';
$labels['size'] = 'Хэмжээ';
$labels['priority'] = 'Ээлж';
$labels['organization'] = 'Байгууллага';
$labels['readstatus'] = 'Уншсан төлөв';
$labels['listoptions'] = 'Жагсаалтын тохиргоо...';
$labels['mailboxlist'] = 'Хавтас';
$labels['messagesfromto'] = 'Нийт $count захианы from-с $to';
$labels['showattachment'] = 'Харах';
$labels['deletemessage'] = 'Захиа устгах';
$labels['isread'] = 'Унших';
$labels['unknown'] = 'мэдэгдэхгүй';
$labels['other'] = 'Бусад';
$labels['typeother'] = 'Бусад';
$labels['delete'] = 'Устгах';
$labels['about'] = 'Танилцуулга';
$labels['allmessages'] = 'бүх зурвас';
$labels['folders'] = 'Хавтас';
$labels['license'] = 'Лиценз';
localization/mn_MN/messages.inc000064400000006475151727150600012562 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Алдаа гарлаа!';
$messages['loginfailed']  = 'Нэвтрэлт амжилтгүй.';
$messages['cookiesdisabled'] = 'Таны вэб хөтөч күүкүү зөвшөөрөхгүй байна.';
$messages['sessionerror'] = 'Та нэвтрээгүй буюу эсвэл автоматаар гарсан байна.';
$messages['storageerror'] = 'Хадгалах серверт холбогдоход алдаа гарлаа.';
$messages['servererror'] = 'Серверийн алдаа!';
$messages['servererrormsg'] = 'Серверийн Алдаа: $msg';
$messages['connerror'] = 'Холболтын Алдаа (Серверт холбогдож чадсангүй)!';
$messages['dberror'] = 'Мэдээллийн баазын Алдаа!';
$messages['windowopenerror'] = 'Попап цонх зөвшөөрөгдөөгүй!';
$messages['requesttimedout'] = 'Хүсэлтийн хугацаа дууссан';
$messages['errorreadonly'] = 'Үйлдлийг хийж чадахгүй байна. Зөвхөн унших хавтас.';
$messages['errornoperm'] = 'Үйлдлийг хийж чадахгүй байна. Хандалт зөвшөөрөгдөөгүй.';
$messages['erroroverquota'] = 'Үйлдлийг хийж чадахгүй байна. Диск дүүрсэн.';
$messages['erroroverquotadelete'] = 'Диск дүүрсэн. Захиа устгахдаа SHIFT+DEL ашиглана.';
$messages['invalidrequest'] = 'Алдаатай хүсэлт! Мэдээлэл хадгалагдаагүй.';
$messages['invalidhost'] = 'Серверийн нэр буруу.';
$messages['nomessagesfound'] = 'Захианы хавтсанд захиа байхгүй байна.';
$messages['mailboxempty'] = 'Захианы хавтас хоосон байна';
$messages['nomessages'] = 'Захиа байхгүй байна';
$messages['refreshing'] = 'Шинэчилж байна...';
$messages['loading'] = 'Боловсруулж байна...';
$messages['uploading'] = 'Файлыг хуулж байна...';
$messages['uploadingmany'] = 'Файлууд хуулж байна...';
$messages['loadingdata'] = 'Мэдээллийг боловсруулж байна...';
$messages['checkingmail'] = 'Шинэ захиа шалгаж байна...';
$messages['sendingmessage'] = 'Илгээж байна...';
$messages['messagesent'] = 'Захиа амжилттай илгээгдлээ.';
$messages['savingmessage'] = 'Захиа хадгалж байна...';
$messages['messagesaved'] = 'Захиа Ноороглож хадгалагдсан';
localization/bg_BG/timezones.inc000064400000055306151727150600012721 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Африка';
$labels['tz:africa:abidjan'] = 'Абиджан';
$labels['tz:africa:accra'] = 'Акра';
$labels['tz:africa:addis_ababa'] = 'Адис Абеба';
$labels['tz:africa:algiers'] = 'Алжир';
$labels['tz:africa:asmara'] = 'Асмара';
$labels['tz:africa:bamako'] = 'Бамако';
$labels['tz:africa:bangui'] = 'Бангуи';
$labels['tz:africa:banjul'] = 'Банджул';
$labels['tz:africa:bissau'] = 'Бисау';
$labels['tz:africa:blantyre'] = 'Блантайър';
$labels['tz:africa:brazzaville'] = 'Бразавил';
$labels['tz:africa:bujumbura'] = 'Бужумбура';
$labels['tz:africa:cairo'] = 'Кайро';
$labels['tz:africa:casablanca'] = 'Казабланка';
$labels['tz:africa:ceuta'] = 'Сеута';
$labels['tz:africa:conakry'] = 'Конакри';
$labels['tz:africa:dakar'] = 'Дакар';
$labels['tz:africa:dar_es_salaam'] = 'Дар ес Салаам';
$labels['tz:africa:djibouti'] = 'Джибути';
$labels['tz:africa:douala'] = 'Дуала';
$labels['tz:africa:el_aaiun'] = 'Ел-Аюн';
$labels['tz:africa:freetown'] = 'Фрийтаун';
$labels['tz:africa:gaborone'] = 'Габороне';
$labels['tz:africa:harare'] = 'Хараре';
$labels['tz:africa:johannesburg'] = 'Йоханесбург';
$labels['tz:africa:juba'] = 'Джуба';
$labels['tz:africa:kampala'] = 'Кампала';
$labels['tz:africa:khartoum'] = 'Хартум';
$labels['tz:africa:kigali'] = 'Кигали';
$labels['tz:africa:kinshasa'] = 'Киншаса';
$labels['tz:africa:lagos'] = 'Лагос';
$labels['tz:africa:libreville'] = 'Либревил';
$labels['tz:africa:lome'] = 'Ломе';
$labels['tz:africa:luanda'] = 'Луанда';
$labels['tz:africa:lubumbashi'] = 'Лубумбаши';
$labels['tz:africa:lusaka'] = 'Лусака';
$labels['tz:africa:malabo'] = 'Малабо';
$labels['tz:africa:maputo'] = 'Мапуто';
$labels['tz:africa:maseru'] = 'Масеру';
$labels['tz:africa:mbabane'] = 'Мбабане';
$labels['tz:africa:mogadishu'] = 'Могадишу';
$labels['tz:africa:monrovia'] = 'Монровия';
$labels['tz:africa:nairobi'] = 'Найроби';
$labels['tz:africa:ndjamena'] = 'Нджамена';
$labels['tz:africa:niamey'] = 'Ниамей';
$labels['tz:africa:nouakchott'] = 'Нуакшот';
$labels['tz:africa:ouagadougou'] = 'Уагадугу';
$labels['tz:africa:porto-novo'] = 'Порто-Ново';
$labels['tz:africa:sao_tome'] = 'Сао Томе';
$labels['tz:africa:tripoli'] = 'Триполи';
$labels['tz:africa:tunis'] = 'Тунис';
$labels['tz:africa:windhoek'] = 'Уиндхоек';
$labels['tz:america'] = 'Америка';
$labels['tz:america:adak'] = 'Адак';
$labels['tz:america:anchorage'] = 'Анкъридж';
$labels['tz:america:anguilla'] = 'Ангуила';
$labels['tz:america:antigua'] = 'Антигуа';
$labels['tz:america:araguaina'] = 'Арагуаина';
$labels['tz:america:argentina'] = 'Аржентина';
$labels['tz:america:argentina:buenos_aires'] = 'Буенос Айрес';
$labels['tz:america:argentina:catamarca'] = 'Катамарка';
$labels['tz:america:argentina:cordoba'] = 'Кордоба';
$labels['tz:america:argentina:jujuy'] = 'Жужуи';
$labels['tz:america:argentina:la_rioja'] = 'Ла Риоха';
$labels['tz:america:argentina:mendoza'] = 'Мендоса';
$labels['tz:america:argentina:rio_gallegos'] = 'Рио Галегос';
$labels['tz:america:argentina:salta'] = 'Салта';
$labels['tz:america:argentina:san_juan'] = 'Сан Хуан';
$labels['tz:america:argentina:san_luis'] = 'Сан Луис';
$labels['tz:america:argentina:tucuman'] = 'Тукуман';
$labels['tz:america:argentina:ushuaia'] = 'Ушуая';
$labels['tz:america:aruba'] = 'Аруба';
$labels['tz:america:asuncion'] = 'Асунсион';
$labels['tz:america:atikokan'] = 'Атикокан';
$labels['tz:america:bahia'] = 'Баия';
$labels['tz:america:bahia_banderas'] = 'Бандерасски залив';
$labels['tz:america:barbados'] = 'Барбадос';
$labels['tz:america:belem'] = 'Белем';
$labels['tz:america:belize'] = 'Белиз';
$labels['tz:america:blanc-sablon'] = 'Блан-Саблон';
$labels['tz:america:boa_vista'] = 'Боа Виста';
$labels['tz:america:bogota'] = 'Богота';
$labels['tz:america:boise'] = 'Бойс';
$labels['tz:america:cambridge_bay'] = 'Кеймбридж Бей';
$labels['tz:america:campo_grande'] = 'Кампо Гранде';
$labels['tz:america:cancun'] = 'Канкун';
$labels['tz:america:caracas'] = 'Каракас';
$labels['tz:america:cayenne'] = 'Кайен';
$labels['tz:america:cayman'] = 'Кайман';
$labels['tz:america:chicago'] = 'Чикаго';
$labels['tz:america:chihuahua'] = 'Чиуауа';
$labels['tz:america:costa_rica'] = 'Коста Рика';
$labels['tz:america:creston'] = 'Крестън';
$labels['tz:america:cuiaba'] = 'Куяба';
$labels['tz:america:curacao'] = 'Кюрасао';
$labels['tz:america:danmarkshavn'] = 'Данмаркшавн';
$labels['tz:america:dawson'] = 'Доусън';
$labels['tz:america:dawson_creek'] = 'Доусън Крийк';
$labels['tz:america:denver'] = 'Денвър';
$labels['tz:america:detroit'] = 'Детройт';
$labels['tz:america:dominica'] = 'Доминика';
$labels['tz:america:edmonton'] = 'Едмънтън';
$labels['tz:america:eirunepe'] = 'Ейрунепе';
$labels['tz:america:el_salvador'] = 'Ел Салвадор';
$labels['tz:america:fort_nelson'] = 'Форт Нелсън';
$labels['tz:america:fortaleza'] = 'Форталеза';
$labels['tz:america:glace_bay'] = 'Глейс Бей';
$labels['tz:america:godthab'] = 'Готхоб';
$labels['tz:america:goose_bay'] = 'Гус Бей';
$labels['tz:america:grand_turk'] = 'Гранд Търк';
$labels['tz:america:grenada'] = 'Гренада';
$labels['tz:america:guadeloupe'] = 'Гваделупа';
$labels['tz:america:guatemala'] = 'Гватемала';
$labels['tz:america:guayaquil'] = 'Гуаякил';
$labels['tz:america:guyana'] = 'Гвиана';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Хавана';
$labels['tz:america:hermosillo'] = 'Ермосильо';
$labels['tz:america:indiana'] = 'Индиана';
$labels['tz:america:indiana:indianapolis'] = 'Индианаполис';
$labels['tz:america:indiana:knox'] = 'Нокс';
$labels['tz:america:indiana:marengo'] = 'Маренго';
$labels['tz:america:indiana:petersburg'] = 'Петърбург';
$labels['tz:america:indiana:tell_city'] = 'Тел Сити';
$labels['tz:america:indiana:vevay'] = 'Вевай';
$labels['tz:america:indiana:vincennes'] = 'Венсен';
$labels['tz:america:indiana:winamac'] = 'Уинамак';
$labels['tz:america:inuvik'] = 'Инувик';
$labels['tz:america:iqaluit'] = 'Икалуит';
$labels['tz:america:jamaica'] = 'Ямайка';
$labels['tz:america:juneau'] = 'Джуно';
$labels['tz:america:kentucky'] = 'Кентъки';
$labels['tz:america:kentucky:louisville'] = 'Луисвил';
$labels['tz:america:kentucky:monticello'] = 'Монтичело';
$labels['tz:america:kralendijk'] = 'Кралендайк';
$labels['tz:america:la_paz'] = 'Ла Пас';
$labels['tz:america:lima'] = 'Лима';
$labels['tz:america:los_angeles'] = 'Лос Анжелис';
$labels['tz:america:lower_princes'] = 'Лоуър Принцес';
$labels['tz:america:maceio'] = 'Масейо';
$labels['tz:america:managua'] = 'Манагуа';
$labels['tz:america:manaus'] = 'Манауш';
$labels['tz:america:marigot'] = 'Мариго';
$labels['tz:america:martinique'] = 'Мартиника';
$labels['tz:america:matamoros'] = 'Матаморос';
$labels['tz:america:mazatlan'] = 'Масатлан';
$labels['tz:america:menominee'] = 'Мъномъний';
$labels['tz:america:merida'] = 'Мерида';
$labels['tz:america:metlakatla'] = 'Метлакатла';
$labels['tz:america:mexico_city'] = 'Мексико сити';
$labels['tz:america:miquelon'] = 'Микелон';
$labels['tz:america:moncton'] = 'Монктон';
$labels['tz:america:monterrey'] = 'Монтерей';
$labels['tz:america:montevideo'] = 'Монтевидео';
$labels['tz:america:montserrat'] = 'Монсерат';
$labels['tz:america:nassau'] = 'Насау';
$labels['tz:america:new_york'] = 'Ню Йорк';
$labels['tz:america:nipigon'] = 'Нипигон';
$labels['tz:america:nome'] = 'Ноум';
$labels['tz:america:noronha'] = 'Нороня';
$labels['tz:america:north_dakota'] = 'Северна Дакота';
$labels['tz:america:north_dakota:beulah'] = 'Бюла';
$labels['tz:america:north_dakota:center'] = 'Център';
$labels['tz:america:north_dakota:new_salem'] = 'Ню Салем';
$labels['tz:america:ojinaga'] = 'Охинага';
$labels['tz:america:panama'] = 'Панама';
$labels['tz:america:pangnirtung'] = 'Пангниртунг ';
$labels['tz:america:paramaribo'] = 'Парамарибо';
$labels['tz:america:phoenix'] = 'Финикс';
$labels['tz:america:port-au-prince'] = 'Порт о Пренс';
$labels['tz:america:port_of_spain'] = 'Порт оф Спейн';
$labels['tz:america:porto_velho'] = 'Порто Вельо';
$labels['tz:america:puerto_rico'] = 'Пуерто Рико';
$labels['tz:america:rainy_river'] = 'Рейни Ривър';
$labels['tz:america:rankin_inlet'] = 'Ранкин инлет';
$labels['tz:america:recife'] = 'Ресифи';
$labels['tz:america:regina'] = 'Риджайна';
$labels['tz:america:resolute'] = 'Резолют';
$labels['tz:america:rio_branco'] = 'Рио Бранко';
$labels['tz:america:santarem'] = 'Сантарем';
$labels['tz:america:santiago'] = 'Сантяго';
$labels['tz:america:santo_domingo'] = 'Санто Доминго';
$labels['tz:america:sao_paulo'] = 'Сао Пауло';
$labels['tz:america:scoresbysund'] = 'Скоресбисанд';
$labels['tz:america:sitka'] = 'Ситка';
$labels['tz:america:st_barthelemy'] = 'Сен Бартелми';
$labels['tz:america:st_johns'] = "Сейнт Джонс";
$labels['tz:america:st_kitts'] = 'Сейнт Китс';
$labels['tz:america:st_lucia'] = 'Сейнт Лусия';
$labels['tz:america:st_thomas'] = 'Сейнт Томас';
$labels['tz:america:st_vincent'] = 'Сейнт Винсент';
$labels['tz:america:swift_current'] = 'Суифт Кърент';
$labels['tz:america:tegucigalpa'] = 'Тегусигалпа';
$labels['tz:america:thule'] = 'Туле';
$labels['tz:america:thunder_bay'] = 'Тъндър Бей';
$labels['tz:america:tijuana'] = 'Тихуана';
$labels['tz:america:toronto'] = 'Торонто';
$labels['tz:america:tortola'] = 'Тортола';
$labels['tz:america:vancouver'] = 'Ванкувър';
$labels['tz:america:whitehorse'] = 'Уайтхорс';
$labels['tz:america:winnipeg'] = 'Уинипег';
$labels['tz:america:yakutat'] = 'Якутат';
$labels['tz:america:yellowknife'] = 'Йелоунайф';
$labels['tz:antarctica'] = 'Антарктида';
$labels['tz:antarctica:casey'] = 'Кейси';
$labels['tz:antarctica:davis'] = 'Дейвис';
$labels['tz:antarctica:dumontdurville'] = "Дюмон Дюрвил";
$labels['tz:antarctica:macquarie'] = 'Макуори';
$labels['tz:antarctica:mawson'] = 'Моусън';
$labels['tz:antarctica:mcmurdo'] = 'Макмурдо';
$labels['tz:antarctica:palmer'] = 'Палмър';
$labels['tz:antarctica:rothera'] = 'Ротера';
$labels['tz:antarctica:syowa'] = 'Сиова';
$labels['tz:antarctica:troll'] = 'Tрол';
$labels['tz:antarctica:vostok'] = 'Восток';
$labels['tz:arctic'] = 'Арктика';
$labels['tz:arctic:longyearbyen'] = 'Лонгиърбиен';
$labels['tz:asia'] = 'Азия';
$labels['tz:asia:aden'] = 'Аден';
$labels['tz:asia:almaty'] = 'Алмати';
$labels['tz:asia:amman'] = 'Аман';
$labels['tz:asia:anadyr'] = 'Анадир';
$labels['tz:asia:aqtau'] = 'Актау';
$labels['tz:asia:aqtobe'] = 'Актобе';
$labels['tz:asia:ashgabat'] = 'Ашхабад';
$labels['tz:asia:atyrau'] = 'Атърау';
$labels['tz:asia:baghdad'] = 'Багдад';
$labels['tz:asia:bahrain'] = 'Бахрейн';
$labels['tz:asia:baku'] = 'Баку';
$labels['tz:asia:bangkok'] = 'Банкок';
$labels['tz:asia:barnaul'] = 'Барнаул';
$labels['tz:asia:beirut'] = 'Бейрут';
$labels['tz:asia:bishkek'] = 'Бишкек';
$labels['tz:asia:brunei'] = 'Бруней';
$labels['tz:asia:chita'] = 'Чита';
$labels['tz:asia:choibalsan'] = 'Чойбалсан';
$labels['tz:asia:colombo'] = 'Коломбо';
$labels['tz:asia:damascus'] = 'Дамаск';
$labels['tz:asia:dhaka'] = 'Дака';
$labels['tz:asia:dili'] = 'Дили';
$labels['tz:asia:dubai'] = 'Дубай';
$labels['tz:asia:dushanbe'] = 'Душанбе';
$labels['tz:asia:famagusta'] = 'Фамагуста';
$labels['tz:asia:gaza'] = 'Газа';
$labels['tz:asia:hebron'] = 'Хеброн';
$labels['tz:asia:ho_chi_minh'] = 'Хо Ши Мин';
$labels['tz:asia:hong_kong'] = 'Хонг Конг';
$labels['tz:asia:hovd'] = 'Ховд';
$labels['tz:asia:irkutsk'] = 'Иркутск';
$labels['tz:asia:jakarta'] = 'Джакарта';
$labels['tz:asia:jayapura'] = 'Джаяпура';
$labels['tz:asia:jerusalem'] = 'Йерусалим';
$labels['tz:asia:kabul'] = 'Кабул';
$labels['tz:asia:kamchatka'] = 'Камчатка';
$labels['tz:asia:karachi'] = 'Карачи';
$labels['tz:asia:kathmandu'] = 'Катманду';
$labels['tz:asia:khandyga'] = 'Хандига';
$labels['tz:asia:kolkata'] = 'Колката';
$labels['tz:asia:krasnoyarsk'] = 'Красноярск';
$labels['tz:asia:kuala_lumpur'] = 'Куала Лумпур';
$labels['tz:asia:kuching'] = 'Кучинг';
$labels['tz:asia:kuwait'] = 'Кувейт';
$labels['tz:asia:macau'] = 'Макао';
$labels['tz:asia:magadan'] = 'Магадан';
$labels['tz:asia:makassar'] = 'Макасар';
$labels['tz:asia:manila'] = 'Манила';
$labels['tz:asia:muscat'] = 'Мускат';
$labels['tz:asia:nicosia'] = 'Никозия';
$labels['tz:asia:novokuznetsk'] = 'Новокузнецк';
$labels['tz:asia:novosibirsk'] = 'Новосибирск';
$labels['tz:asia:omsk'] = 'Омск';
$labels['tz:asia:oral'] = 'Уралск';
$labels['tz:asia:phnom_penh'] = 'Пном Пен';
$labels['tz:asia:pontianak'] = 'Понтианак';
$labels['tz:asia:pyongyang'] = 'Пхенян';
$labels['tz:asia:qatar'] = 'Катар';
$labels['tz:asia:qyzylorda'] = 'Къзълорда';
$labels['tz:asia:riyadh'] = 'Рияд';
$labels['tz:asia:sakhalin'] = 'Сахалин';
$labels['tz:asia:samarkand'] = 'Самарканд';
$labels['tz:asia:seoul'] = 'Сеул';
$labels['tz:asia:shanghai'] = 'Шанхай';
$labels['tz:asia:singapore'] = 'Сингапур';
$labels['tz:asia:srednekolymsk'] = 'Среднеколимск';
$labels['tz:asia:taipei'] = 'Тайпе';
$labels['tz:asia:tashkent'] = 'Ташкент';
$labels['tz:asia:tbilisi'] = 'Тбилиси';
$labels['tz:asia:tehran'] = 'Техеран';
$labels['tz:asia:thimphu'] = 'Тхимпху';
$labels['tz:asia:tokyo'] = 'Токио';
$labels['tz:asia:tomsk'] = 'Томск';
$labels['tz:asia:ulaanbaatar'] = 'Улан Батор';
$labels['tz:asia:urumqi'] = 'Урумчи';
$labels['tz:asia:ust-nera'] = 'Уст Нера';
$labels['tz:asia:vientiane'] = 'Виентян';
$labels['tz:asia:vladivostok'] = 'Владивосток';
$labels['tz:asia:yakutsk'] = 'Якутск';
$labels['tz:asia:yangon'] = 'Янгон';
$labels['tz:asia:yekaterinburg'] = 'Екатерининбург';
$labels['tz:asia:yerevan'] = 'Ереван';
$labels['tz:atlantic'] = 'Атлантическа';
$labels['tz:atlantic:azores'] = 'Азорски острови';
$labels['tz:atlantic:bermuda'] = 'Бермуда';
$labels['tz:atlantic:canary'] = 'Канарски острови';
$labels['tz:atlantic:cape_verde'] = 'Кабо Верде';
$labels['tz:atlantic:faroe'] = 'Фарьорски острови';
$labels['tz:atlantic:madeira'] = 'Мадейра';
$labels['tz:atlantic:reykjavik'] = 'Рейкявик';
$labels['tz:atlantic:south_georgia'] = 'Южна Джорджия';
$labels['tz:atlantic:st_helena'] = 'Света Елена';
$labels['tz:atlantic:stanley'] = 'Стенли ';
$labels['tz:australia'] = 'Австралия';
$labels['tz:australia:adelaide'] = 'Аделаида';
$labels['tz:australia:brisbane'] = 'Бризбейн';
$labels['tz:australia:broken_hill'] = 'Брокън Хил';
$labels['tz:australia:currie'] = 'Кури';
$labels['tz:australia:darwin'] = 'Дарвин';
$labels['tz:australia:eucla'] = 'Юкла';
$labels['tz:australia:hobart'] = 'Хоубарт';
$labels['tz:australia:lindeman'] = 'Остров Линдеман';
$labels['tz:australia:lord_howe'] = 'Остров Лорд Хау';
$labels['tz:australia:melbourne'] = 'Мелбърн';
$labels['tz:australia:perth'] = 'Пърт';
$labels['tz:australia:sydney'] = 'Сидни';
$labels['tz:europe'] = 'Европа';
$labels['tz:europe:amsterdam'] = 'Амстердам';
$labels['tz:europe:andorra'] = 'Андора';
$labels['tz:europe:astrakhan'] = 'Астрахан';
$labels['tz:europe:athens'] = 'Атина';
$labels['tz:europe:belgrade'] = 'Белград';
$labels['tz:europe:berlin'] = 'Берлин';
$labels['tz:europe:bratislava'] = 'Братислава';
$labels['tz:europe:brussels'] = 'Брюксел';
$labels['tz:europe:bucharest'] = 'Букурещ';
$labels['tz:europe:budapest'] = 'Будапеща';
$labels['tz:europe:busingen'] = 'Бюзинген';
$labels['tz:europe:chisinau'] = 'Кишинев';
$labels['tz:europe:copenhagen'] = 'Копенхаген';
$labels['tz:europe:dublin'] = 'Дъблин';
$labels['tz:europe:gibraltar'] = 'Гибралтар';
$labels['tz:europe:guernsey'] = 'Гърнзи';
$labels['tz:europe:helsinki'] = 'Хелзинки';
$labels['tz:europe:isle_of_man'] = 'Остров Ман';
$labels['tz:europe:istanbul'] = 'Истанбул';
$labels['tz:europe:jersey'] = 'Джърси';
$labels['tz:europe:kaliningrad'] = 'Калининград';
$labels['tz:europe:kiev'] = 'Киев';
$labels['tz:europe:kirov'] = 'Киров';
$labels['tz:europe:lisbon'] = 'Лисабон';
$labels['tz:europe:ljubljana'] = 'Любляна';
$labels['tz:europe:london'] = 'Лондон';
$labels['tz:europe:luxembourg'] = 'Люксембург';
$labels['tz:europe:madrid'] = 'Мадрид';
$labels['tz:europe:malta'] = 'Малта';
$labels['tz:europe:mariehamn'] = 'Мариехамн';
$labels['tz:europe:minsk'] = 'Минск';
$labels['tz:europe:monaco'] = 'Монако';
$labels['tz:europe:moscow'] = 'Москва';
$labels['tz:europe:oslo'] = 'Осло';
$labels['tz:europe:paris'] = 'Париж';
$labels['tz:europe:podgorica'] = 'Подгорица';
$labels['tz:europe:prague'] = 'Прага';
$labels['tz:europe:riga'] = 'Рига';
$labels['tz:europe:rome'] = 'Рим';
$labels['tz:europe:samara'] = 'Самара';
$labels['tz:europe:san_marino'] = 'Сан Марино';
$labels['tz:europe:sarajevo'] = 'Сараево';
$labels['tz:europe:saratov'] = 'Саратов';
$labels['tz:europe:simferopol'] = 'Симферопол';
$labels['tz:europe:skopje'] = 'Скопие';
$labels['tz:europe:sofia'] = 'София';
$labels['tz:europe:stockholm'] = 'Стокхолм';
$labels['tz:europe:tallinn'] = 'Талин';
$labels['tz:europe:tirane'] = 'Тирана';
$labels['tz:europe:ulyanovsk'] = 'Уляновск';
$labels['tz:europe:uzhgorod'] = 'Ужгород';
$labels['tz:europe:vaduz'] = 'Вадуц';
$labels['tz:europe:vatican'] = 'Ватикана';
$labels['tz:europe:vienna'] = 'Виена';
$labels['tz:europe:vilnius'] = 'Вилнюс';
$labels['tz:europe:volgograd'] = 'Волгоград';
$labels['tz:europe:warsaw'] = 'Варшава';
$labels['tz:europe:zagreb'] = 'Загреб';
$labels['tz:europe:zaporozhye'] = 'Запорожие';
$labels['tz:europe:zurich'] = 'Цюрих';
$labels['tz:indian'] = 'Индийски океан';
$labels['tz:indian:antananarivo'] = 'Антананариво';
$labels['tz:indian:chagos'] = 'Чагос';
$labels['tz:indian:christmas'] = 'Остров Рождество';
$labels['tz:indian:cocos'] = 'Кокосови острови';
$labels['tz:indian:comoro'] = 'Коморски острови';
$labels['tz:indian:kerguelen'] = 'Кергелен';
$labels['tz:indian:mahe'] = 'Мае';
$labels['tz:indian:maldives'] = 'Малдиви';
$labels['tz:indian:mauritius'] = 'Мавриций';
$labels['tz:indian:mayotte'] = 'Майот';
$labels['tz:indian:reunion'] = 'Реюнион';
$labels['tz:pacific'] = 'Тихоокеанска';
$labels['tz:pacific:apia'] = 'Апия';
$labels['tz:pacific:auckland'] = 'Окланд';
$labels['tz:pacific:bougainville'] = 'Бугенвил';
$labels['tz:pacific:chatham'] = 'Чатъм';
$labels['tz:pacific:chuuk'] = 'Чуюк';
$labels['tz:pacific:easter'] = 'Великденски остров';
$labels['tz:pacific:efate'] = 'Ефате';
$labels['tz:pacific:enderbury'] = 'Ендербери';
$labels['tz:pacific:fakaofo'] = 'Факаофо';
$labels['tz:pacific:fiji'] = 'Фиджи';
$labels['tz:pacific:funafuti'] = 'Фунафути';
$labels['tz:pacific:galapagos'] = 'Галапагос';
$labels['tz:pacific:gambier'] = 'Гамбе';
$labels['tz:pacific:guadalcanal'] = 'Гуадалканал';
$labels['tz:pacific:guam'] = 'Гуам';
$labels['tz:pacific:honolulu'] = 'Хонолулу';
$labels['tz:pacific:johnston'] = 'Джонстън';
$labels['tz:pacific:kiritimati'] = 'Киритимати';
$labels['tz:pacific:kosrae'] = 'Кошрай';
$labels['tz:pacific:kwajalein'] = 'Куаджалин';
$labels['tz:pacific:majuro'] = 'Маджуро';
$labels['tz:pacific:marquesas'] = 'Маркизки острови';
$labels['tz:pacific:midway'] = 'Мидуей';
$labels['tz:pacific:nauru'] = 'Науру';
$labels['tz:pacific:niue'] = 'Ниуе';
$labels['tz:pacific:norfolk'] = 'Норфолк';
$labels['tz:pacific:noumea'] = 'Нумея';
$labels['tz:pacific:pago_pago'] = 'Паго Паго';
$labels['tz:pacific:palau'] = 'Палау';
$labels['tz:pacific:pitcairn'] = 'Питкерн';
$labels['tz:pacific:pohnpei'] = 'Помпей';
$labels['tz:pacific:port_moresby'] = 'Порт Морсби';
$labels['tz:pacific:rarotonga'] = 'Раротонга';
$labels['tz:pacific:saipan'] = 'Сайпан';
$labels['tz:pacific:tahiti'] = 'Таити';
$labels['tz:pacific:tarawa'] = 'Тарава';
$labels['tz:pacific:tongatapu'] = 'Тонгатапу';
$labels['tz:pacific:wake'] = 'Уейк';
$labels['tz:pacific:wallis'] = 'Уолис';
localization/bg_BG/labels.inc000064400000130465151727150600012146 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Добре дошли в $product';
$labels['username'] = 'Потребител';
$labels['password'] = 'Парола';
$labels['server'] = 'Сървър';
$labels['login'] = 'Вход';
$labels['oauthlogin'] = 'Вход с $provider';
$labels['menu'] = 'Меню';
$labels['logout'] = 'Изход';
$labels['mail'] = 'Поща';
$labels['settings'] = 'Настройки';
$labels['addressbook'] = 'Адресна книга';
$labels['darkmode'] = 'Тъмен режим';
$labels['lightmode'] = 'Светъл режим';
$labels['inbox'] = 'Входящи';
$labels['drafts'] = 'Чернови';
$labels['sent'] = 'Изпратени';
$labels['trash'] = 'Кошче';
$labels['junk'] = 'Спам';
$labels['show_real_foldernames'] = 'Показва истинските имена на служебните папки';
$labels['subject'] = 'Заглавие';
$labels['from'] = 'От';
$labels['sender'] = 'Подател';
$labels['to'] = 'До';
$labels['cc'] = 'Копие до';
$labels['bcc'] = 'Скрито копие до';
$labels['replyto'] = 'Отговор до';
$labels['followupto'] = 'Препращане към';
$labels['date'] = 'Дата';
$labels['size'] = 'Размер';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организация';
$labels['readstatus'] = 'Статус (прочетено/ново)';
$labels['listoptions'] = 'Настройки на списък...';
$labels['listoptionstitle'] = 'Настройки на списък';
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'Писма $from до $to от $count';
$labels['threadsfromto'] = 'Кореспонденции $from до $to от $count';
$labels['messagenrof'] = 'Писмо $nr от $count';
$labels['fromtoshort'] = '$from – $to от $count';
$labels['copy'] = 'Копиране';
$labels['move'] = 'Преместване';
$labels['moveto'] = 'Премести във...';
$labels['copyto'] = 'Копирай във...';
$labels['download'] = 'Изтегли';
$labels['open'] = 'Отвори';
$labels['showattachment'] = 'Покажи';
$labels['showanyway'] = 'Показване въпреки това';
$labels['filename'] = 'Име на файла';
$labels['filesize'] = 'Размер на файла';
$labels['addtoaddressbook'] = 'Добави в адресната книга';
$labels['sun'] = 'Нед';
$labels['mon'] = 'Пон';
$labels['tue'] = 'Вто';
$labels['wed'] = 'Сря';
$labels['thu'] = 'Чет';
$labels['fri'] = 'Пет';
$labels['sat'] = 'Съб';
$labels['sunday'] = 'Неделя';
$labels['monday'] = 'Понеделник';
$labels['tuesday'] = 'Вторник';
$labels['wednesday'] = 'Сряда';
$labels['thursday'] = 'Четвъртък';
$labels['friday'] = 'Петък';
$labels['saturday'] = 'Събота';
$labels['jan'] = 'Яну';
$labels['feb'] = 'Фев';
$labels['mar'] = 'Мар';
$labels['apr'] = 'Апр';
$labels['may'] = 'Май';
$labels['jun'] = 'Юни';
$labels['jul'] = 'Юли';
$labels['aug'] = 'Авг';
$labels['sep'] = 'Сеп';
$labels['oct'] = 'Окт';
$labels['nov'] = 'Ное';
$labels['dec'] = 'Дек';
$labels['longjan'] = 'Януари';
$labels['longfeb'] = 'Февруари';
$labels['longmar'] = 'Март';
$labels['longapr'] = 'Април';
$labels['longmay'] = 'Май';
$labels['longjun'] = 'Юни';
$labels['longjul'] = 'Юли';
$labels['longaug'] = 'Август';
$labels['longsep'] = 'Септември';
$labels['longoct'] = 'Октомври';
$labels['longnov'] = 'Ноември';
$labels['longdec'] = 'Декември';
$labels['today'] = 'Днес';
$labels['refresh'] = 'Обнови';
$labels['checkmail'] = 'Провери за нова поща';
$labels['compose'] = 'Напиши';
$labels['writenewmessage'] = 'Създай ново писмо';
$labels['reply'] = 'Отговор';
$labels['replytomessage'] = 'Отговори на подателя';
$labels['replytoallmessage'] = 'Отговори на списъка или на подателя и всички получатели';
$labels['replyall'] = 'Отговор на всички';
$labels['replylist'] = 'Отговор на списък';
$labels['forward'] = 'Препрати';
$labels['forwardinline'] = 'Препрати като цитат в писмото';
$labels['forwardattachment'] = 'Препрати като прикачен файл';
$labels['forwardmessage'] = 'Препрати писмото';
$labels['bouncemsg'] = 'Повторно изпращане (bounce)';
$labels['bounce'] = 'Повторно изпращане';
$labels['deletemessage'] = 'Изтрий писмото';
$labels['movemessagetotrash'] = 'Премести писмото в Кошче';
$labels['printmessage'] = 'Печат на писмото';
$labels['previousmessage'] = 'Предишно писмо';
$labels['firstmessage'] = 'Първо писмо';
$labels['nextmessage'] = 'Следващо писмо';
$labels['lastmessage'] = 'Последно писмо';
$labels['backtolist'] = 'Обратно към списъка';
$labels['viewsource'] = 'Покажи изходния код';
$labels['mark'] = 'Маркирай';
$labels['markmessages'] = 'Маркирай писмата';
$labels['markread'] = 'Като прочетени';
$labels['markunread'] = 'Като нови';
$labels['markflagged'] = 'Като отбелязани';
$labels['markunflagged'] = 'Като неотбелязани';
$labels['markundeleted'] = 'Като неизтрити';
$labels['moreactions'] = 'Допълнителни действия...';
$labels['markallread'] = 'Маркирай всички като прочетени';
$labels['folders-cur'] = 'Само за избраната папка';
$labels['folders-sub'] = 'Избраната папка и всички подпапки';
$labels['folders-all'] = 'Всички папки';
$labels['more'] = 'Още';
$labels['back'] = 'Назад';
$labels['options'] = 'Настройки';
$labels['composeoptions'] = 'Настройки за писане';
$labels['optionsandattachments'] = 'Настройки и прикачени файлове';
$labels['actions'] = 'Действия';
$labels['first'] = 'Първо';
$labels['last'] = 'Последно';
$labels['previous'] = 'Предишно';
$labels['next'] = 'Следващо';
$labels['select'] = 'Избери';
$labels['selection'] = 'Селекция';
$labels['all'] = 'Всички';
$labels['none'] = 'Остави без избор';
$labels['currpage'] = 'Всички на страницата';
$labels['isread'] = 'Прочетено';
$labels['unread'] = 'Нови';
$labels['flagged'] = 'Отбелязани';
$labels['unflagged'] = 'Без флаг';
$labels['unanswered'] = 'Без отговор';
$labels['withattachment'] = 'С прикачен файл';
$labels['deleted'] = 'Всички изтрити';
$labels['undeleted'] = 'Които не са изтрити';
$labels['replied'] = 'Отговорено';
$labels['forwarded'] = 'Препратено';
$labels['invert'] = 'Които не са избрани';
$labels['filter'] = 'Филтър';
$labels['list'] = 'Списък';
$labels['threads'] = 'Кореспонденции';
$labels['expand-all'] = 'Разгъни всички';
$labels['expand-unread'] = 'Разгъни непрочетените';
$labels['collapse-all'] = 'Сгъни всички';
$labels['threaded'] = 'Групирани по кореспонденции';
$labels['showunread'] = 'Покажи непрочетените писма';
$labels['autoexpand_threads'] = 'Разгъни кореспонденции';
$labels['do_expand'] = 'всички кореспонденции';
$labels['expand_only_unread'] = 'само с непрочетени писма';
$labels['fromto'] = 'От/До';
$labels['flag'] = 'Отбелязано';
$labels['attachment'] = 'Прикачен файл';
$labels['nonesort'] = 'Няма';
$labels['sentdate'] = 'Дата на изпращане';
$labels['arrival'] = 'Дата на получаване';
$labels['asc'] = 'нарастваща';
$labels['desc'] = 'намаляваща';
$labels['listcolumns'] = 'Колони на списък';
$labels['listsorting'] = 'Подреди по колона';
$labels['listorder'] = 'Посока на подреждане';
$labels['listmode'] = 'Изглед на списък';
$labels['lmode'] = 'Режим на списък';
$labels['layout'] = 'Оформление';
$labels['layoutwidescreen'] = 'Широк екран';
$labels['layoutdesktop'] = 'Настолен екран';
$labels['layoutlist'] = 'Списък';
$labels['layoutwidescreendesc'] = 'Широк екран (изглед с 3 колони)';
$labels['layoutdesktopdesc'] = 'Настолен екран (широк списък и преглед на пощата по-долу)';
$labels['layoutlistdesc'] = 'Списък (без преглед на пощата)';
$labels['folderactions'] = 'Действия за папки...';
$labels['compact'] = 'Уплътни данни';
$labels['empty'] = 'Изпразни';
$labels['importmessages'] = 'Импорт на писма';
$labels['mailimportdesc'] = 'Можете да качвате поща като използвате файлове във формат <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> или <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a>.';
$labels['mailimportzip'] = 'Няколко файла могат да бъдат компресирани в zip архиви.';
$labels['quota'] = 'Използвано място';
$labels['unknown'] = 'няма информация';
$labels['unlimited'] = 'без ограничение';
$labels['quotatype'] = 'Тип квота';
$labels['quotatotal'] = 'Лимит';
$labels['quotaused'] = 'Използвано';
$labels['quotastorage'] = 'Дисково пространство';
$labels['quotamessage'] = 'Брой писма';
$labels['shortheaderdate'] = 'На $date';
$labels['shortheaderto'] = 'До $to на $date';
$labels['shortheaderfrom'] = 'От $from на $date';
$labels['quicksearch'] = 'Бързо търсене';
$labels['searchplaceholder'] = 'Търсене...';
$labels['resetsearch'] = 'Изчисти филтър и покажи всичко';
$labels['searchmod'] = 'Филтър по';
$labels['msgtext'] = 'Цялото писмо';
$labels['body'] = 'Основен текст';
$labels['type'] = 'Тип';
$labels['namex'] = 'Име';
$labels['searchscope'] = 'Обхват';
$labels['currentfolder'] = 'Текуща папка';
$labels['subfolders'] = 'Тази и подпапките';
$labels['allfolders'] = 'Всички папки';
$labels['searchinterval-1W'] = 'по-стари от седмица';
$labels['searchinterval-1M'] = 'по-стари от месец';
$labels['searchinterval-1Y'] = 'по-стари от година';
$labels['searchinterval1W'] = 'по-нови от седмица';
$labels['searchinterval1M'] = 'по-нови от месец';
$labels['searchinterval1Y'] = 'по-нови от година';
$labels['openinextwin'] = 'Отвори в нов прозорец';
$labels['emlsave'] = 'Изтегли (.eml)';
$labels['changeformattext'] = 'Покажи в текстов формат';
$labels['changeformathtml'] = 'Покажи в HTML формат';
$labels['editasnew'] = 'Редактирай като ново';
$labels['send'] = 'Изпрати';
$labels['sendmessage'] = 'Изпрати писмото';
$labels['savemessage'] = 'Запиши като чернова';
$labels['addattachment'] = 'Прикачване на файл';
$labels['charset'] = 'Кодова таблица';
$labels['editortype'] = 'Вид редактор';
$labels['returnreceipt'] = 'Обратна разписка';
$labels['dsn'] = 'Нотификация при доставка';
$labels['keepformatting'] = 'Запази форматирането';
$labels['mailreplyintro'] = 'На $date, $sender написа:';
$labels['originalmessage'] = 'Оригинално писмо';
$labels['selectimage'] = 'Избери изображение';
$labels['addimage'] = 'Добави изображение';
$labels['selectmedia'] = 'Избери клип';
$labels['addmedia'] = 'Добави клип';
$labels['encrypt'] = 'Криптиране';
$labels['encryptmessage'] = 'Криптирай писмо';
$labels['encryptmessagemailvelope'] = 'Криптирай писмо с Mailvelope';
$labels['importpubkeys'] = 'Внасяне на публични ключове';
$labels['encryptedsendialog'] = 'Изпращане на криптирано писмо';
$labels['encryptandsign'] = 'Криптиране и подписване';
$labels['keyid'] = 'ИН на ключ';
$labels['keylength'] = 'Бита';
$labels['keyexpired'] = 'Изтекъл';
$labels['keyrevoked'] = 'Отменен';
$labels['bccinstead'] = 'Използвай Скрито копие до';
$labels['addheader'] = 'Добави получател (заглавен блок)';
$labels['insert'] = 'Вмъкване';
$labels['insertcontact'] = 'Вмъкване на контакт(и)';
$labels['recipient'] = 'Получател';
$labels['recipientedit'] = 'Редактиране на получател';
$labels['editidents'] = 'Промени самоличности';
$labels['spellcheck'] = 'Правопис';
$labels['checkspelling'] = 'Проверка на правописа';
$labels['resumeediting'] = 'Продължи черновата';
$labels['revertto'] = 'Върни се към';
$labels['restore'] = 'Възстанови';
$labels['restoremessage'] = 'Възстановяване на съобщението?';
$labels['ignore'] = 'Игнорирай';
$labels['responses'] = 'Отговори';
$labels['insertresponse'] = 'Вмъкване на отговор';
$labels['manageresponses'] = 'Настройка на отговори';
$labels['newresponse'] = 'Създай нов отговор';
$labels['addresponse'] = 'Добавяне на отговор';
$labels['editresponse'] = 'Редакция на отговор';
$labels['editresponses'] = 'Редакция на отговори';
$labels['responsename'] = 'Име';
$labels['responsetext'] = 'Текст на отговор';
$labels['attach'] = 'Прикачи';
$labels['attachments'] = 'Прикачени файлове';
$labels['upload'] = 'Качи';
$labels['uploadprogress'] = '$percent ($current от $total)';
$labels['close'] = 'Затвори';
$labels['messageoptions'] = 'Настройки на писма...';
$labels['togglecomposeoptions'] = 'Превключване опции за създаване';
$labels['attachmentrename'] = 'Преименуване на прикачен файл';
$labels['low'] = 'Нисък';
$labels['lowest'] = 'Най-нисък';
$labels['normal'] = 'Нормален';
$labels['high'] = 'Висок';
$labels['highest'] = 'Най-висок';
$labels['nosubject'] = '(няма заглавие)';
$labels['showimages'] = 'Показвай изображения';
$labels['allow'] = 'Разреши';
$labels['alwaysshow'] = 'Винаги показвай изображения от $sender';
$labels['alwaysallow'] = 'Винаги разрешавай от $sender';
$labels['isdraft'] = 'Това писмо е чернова.';
$labels['andnmore'] = 'още $nr...';
$labels['details'] = 'Детайли';
$labels['summary'] = 'Резюме';
$labels['headers'] = 'Заглавни блокове';
$labels['allheaders'] = 'Всички заглавни блокове';
$labels['togglemoreheaders'] = 'Покажи още заглавни блокове';
$labels['togglefullheaders'] = 'Изходни заглавни блокове';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Текстово';
$labels['savesentmessagein'] = 'Запази изпратеното писмо в';
$labels['dontsave'] = 'не запазвай';
$labels['maxuploadsize'] = 'Максимален размер на файл е $size';
$labels['addcc'] = 'Добави Копие до';
$labels['addbcc'] = 'Добави Скрито копие до';
$labels['addreplyto'] = 'Добави Отговор до';
$labels['addfollowupto'] = 'Добави Препращане към';
$labels['sendreceipt'] = 'Да се ​​изпрати ли обратна разписка?';
$labels['mdnrequest'] = 'Подателят е поискал да бъде уведомен, че сте прочели това писмо. Желаете ли да изпратите обратна разписка?';
$labels['receiptread'] = 'Обратна разписка (прочетено)';
$labels['yourmessage'] = 'Това е обратна разписка относно писмото Ви';
$labels['receiptnote'] = 'Забележка: Тази разписка потвърждава само, че писмото е било визуализирано на екрана на получателят. Няма никаква гаранция, че той е разбрал и/или дори прочел неговото съдържание.';
$labels['sendalwaysto'] = 'Винаги изпращай до $email';
$labels['zoomin'] = 'Увеличаване';
$labels['zoomout'] = 'Намаляване';
$labels['rotate'] = 'Завъртане';
$labels['increaseimage'] = 'Увеличаване размера на изображението';
$labels['decreaseimage'] = 'Намаляване размера на изображението';
$labels['rotateimage'] = 'Завъртане на изображението';
$labels['showtools'] = 'Показване на инструменти за изображения';
$labels['hidetools'] = 'Скриване на инструменти за изображения';
$labels['name'] = 'Екранно име';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Фамилия';
$labels['middlename'] = 'Презиме';
$labels['nameprefix'] = 'Титла';
$labels['namesuffix'] = 'Наставка';
$labels['nickname'] = 'Псевдоним';
$labels['jobtitle'] = 'Длъжност';
$labels['department'] = 'Отдел';
$labels['gender'] = 'Пол';
$labels['maidenname'] = 'Моминско име';
$labels['email'] = 'Ел. поща';
$labels['phone'] = 'Телефон';
$labels['address'] = 'Адрес';
$labels['street'] = 'Улица';
$labels['locality'] = 'Град';
$labels['zipcode'] = 'Пощенски код';
$labels['region'] = 'Област';
$labels['country'] = 'Държава';
$labels['birthday'] = 'Рожден ден';
$labels['anniversary'] = 'Дата годишнина';
$labels['website'] = 'Сайт';
$labels['instantmessenger'] = 'Месинджър';
$labels['notes'] = 'Бележки';
$labels['male'] = 'мъж';
$labels['female'] = 'жена';
$labels['manager'] = 'Мениджър';
$labels['assistant'] = 'Асистент';
$labels['spouse'] = 'Съпруг(а)';
$labels['allfields'] = 'Всички полета';
$labels['search'] = 'Търсене';
$labels['searchresult'] = 'Резултат от търсене';
$labels['advsearch'] = 'Разширено търсене';
$labels['advanced'] = 'Търси';
$labels['other'] = 'Други';
$labels['printcontact'] = 'Печат на контакт';
$labels['qrcode'] = 'QR Код';
$labels['typehome'] = 'Домашен';
$labels['typework'] = 'Служебен';
$labels['typeother'] = 'Друг';
$labels['typemobile'] = 'Мобилен';
$labels['typemain'] = 'Основен';
$labels['typehomefax'] = 'Домашен факс';
$labels['typeworkfax'] = 'Служебен факс';
$labels['typecar'] = 'В колата';
$labels['typepager'] = 'Пейджър';
$labels['typevideo'] = 'Със видео';
$labels['typeassistant'] = 'На асистент';
$labels['typehomepage'] = 'Личен';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил';
$labels['addfield'] = 'Добави поле...';
$labels['addcontact'] = 'Добави контакт';
$labels['editcontact'] = 'Редактирай контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Данни на контакт';
$labels['contactnameandorg'] = 'Име и Организация';
$labels['personalinfo'] = 'Лична информация';
$labels['personal'] = 'Лична';
$labels['contactphoto'] = 'Снимка на контакт';
$labels['edit'] = 'Редактирай';
$labels['cancel'] = 'Отказ';
$labels['save'] = 'Запис';
$labels['delete'] = 'Изтрий';
$labels['discard'] = 'Изхвърли';
$labels['continue'] = 'Продължи';
$labels['ok'] = 'ОК';
$labels['rename'] = 'Преименувай';
$labels['addphoto'] = 'Добави';
$labels['replacephoto'] = 'Замени';
$labels['uploadphoto'] = 'Качване на снимка';
$labels['choosefile'] = 'Изберете файл...';
$labels['choosefiles'] = 'Изберете файлове...';
$labels['browse'] = 'Преглед';
$labels['newcontact'] = 'Създай нов контакт';
$labels['deletecontact'] = 'Изтрий избраните контакти';
$labels['composeto'] = 'Напиши писмо до';
$labels['contactsfromto'] = 'Контакти $from до $to от $count';
$labels['print'] = 'Печат';
$labels['export'] = 'Експорт';
$labels['exportall'] = 'Експортиране на всичко';
$labels['exportsel'] = 'Експортиране на избраното';
$labels['exportvcards'] = 'Експорт във vCard формат';
$labels['newgroup'] = 'Създай нова група';
$labels['addgroup'] = 'Добави група';
$labels['grouprename'] = 'Преименувай групата';
$labels['groupdelete'] = 'Изтрий групата';
$labels['groupassign'] = 'Добави към група...';
$labels['groupremove'] = 'Премахни от групата';
$labels['groupremoveselected'] = 'Премахни избраните контакти от групата';
$labels['uponelevel'] = 'Нагоре едно ниво';
$labels['previouspage'] = 'Предишна страница';
$labels['firstpage'] = 'Първа страница';
$labels['nextpage'] = 'Следваща страница';
$labels['lastpage'] = 'Последна страница';
$labels['group'] = 'Група';
$labels['groups'] = 'Групи';
$labels['listgroup'] = 'Покажи членове на групата';
$labels['personaladrbook'] = 'Лични адреси';
$labels['searchsave'] = 'Запази филтър';
$labels['searchdelete'] = 'Изтрий филтър';
$labels['import'] = 'Импорт';
$labels['importcontacts'] = 'Импортиране на контакти';
$labels['importfromfile'] = 'Импорт от файл';
$labels['importtarget'] = 'Добави контакти към';
$labels['importreplace'] = 'Замени цялата адресна книга';
$labels['importgroups'] = 'Импорт на задачи на група';
$labels['importgroupsall'] = 'Всички (създава групи ако е необходимо)';
$labels['importgroupsexisting'] = 'Само за съществуващите групи';
$labels['importdesc'] = 'Можете да качвате контакти от съществуваща адресна книга.<br/>В момента поддържаме импорт на адреси от формати <a href="https://en.wikipedia.org/wiki/VCard">vCard</a> или CSV (comma-separated).';
$labels['importmapdesc'] = 'Уверете се, че информацията за свързване на полето по-долу е вярна, преди да продължите с импортирането на CSV (разделени със запетая) данни';
$labels['fieldnotmapped'] = 'Полето не е свързано (не импортирай)';
$labels['skipheader'] = 'Не импортирай първия ред (заглавки)';
$labels['done'] = 'Готово';
$labels['settingsfor'] = 'Настройки за';
$labels['about'] = 'Относно';
$labels['preferences'] = 'Настройки';
$labels['userpreferences'] = 'Потребителски настройки';
$labels['editpreferences'] = 'Редактирай потребителските настройки';
$labels['identities'] = 'Самоличности';
$labels['manageidentities'] = 'Управление самоличности';
$labels['newidentity'] = 'Създай нова самоличност';
$labels['addidentity'] = 'Добави самоличност';
$labels['editidentity'] = 'Редактирай самоличност';
$labels['identityencryption'] = 'Криптиране';
$labels['preferhtml'] = 'Покажи първо HTML версия';
$labels['defaultcharset'] = 'Кодова таблица по подразбиране';
$labels['htmlmessage'] = 'HTML писмо';
$labels['messagepart'] = 'Част';
$labels['digitalsig'] = 'Електронен Подпис';
$labels['dateformat'] = 'Формат на дати';
$labels['timeformat'] = 'Формат на време';
$labels['prettydate'] = 'Удобни дати';
$labels['setdefault'] = 'По подразбиране';
$labels['autodetect'] = 'Автоматично';
$labels['language'] = 'Език';
$labels['timezone'] = 'Часова зона';
$labels['pagesize'] = 'Редове на страница';
$labels['signature'] = 'Подпис';
$labels['dstactive'] = 'Маркирай при лятно време';
$labels['showinextwin'] = 'Отваряй писмата в отделен прозорец';
$labels['composeextwin'] = 'Писане на ново писмо в отделен прозорец';
$labels['htmleditor'] = 'Писане на ново писмо като HTML';
$labels['htmlonreply'] = 'само при отговор на HTML писмо';
$labels['htmlonreplyandforward'] = 'само при препращане или отговор на HTML писмо';
$labels['htmlsignature'] = 'HTML подпис';
$labels['showemail'] = 'Показва адрес на ел. поща с екранното име';
$labels['previewpane'] = 'Показване на панел за преглед';
$labels['skin'] = 'Изглед на потребителски интерфейс';
$labels['logoutclear'] = 'Изпразни Кошчето при изход';
$labels['logoutcompact'] = 'Уплътни данни във Входящи при изход';
$labels['uisettings'] = 'Потребителски интерфейс';
$labels['serversettings'] = 'Настройки на сървъра';
$labels['mailboxview'] = 'Изглед на пощенска кутия';
$labels['mdnrequests'] = 'При искане за обратна разписка';
$labels['askuser'] = 'задай въпрос';
$labels['autosend'] = 'изпрати автоматично винаги';
$labels['autosendknown'] = 'изпрати автоматично само на моите контакти, иначе задай въпрос';
$labels['autosendknownignore'] = 'изпрати автоматично само на моите контакти, иначе отхвърли';
$labels['autosendtrusted'] = 'изпращай разписка на доверените податели, в противен случай ме попитай';
$labels['autosendtrustedignore'] = 'изпращай разписка на доверените податели, в противен случай игнорирай';
$labels['ignorerequest'] = 'игнорирай искането';
$labels['readwhendeleted'] = 'Маркирай писмото като прочетено при изтриване';
$labels['flagfordeletion'] = 'Отбележи писмото за изтриване';
$labels['skipdeleted'] = 'Не показвай изтритите писма';
$labels['deletealways'] = 'При неуспешно местене на писмо в Кошче, изтрий директно';
$labels['deletejunk'] = 'В папка Спам изтривай писмата без местене в Кошче';
$labels['showremoteimages'] = 'Покажи вградени изображения';
$labels['allowremoteresources'] = 'Разрешаване на отдалечени ресурси (изображения, стилове)';
$labels['fromknownsenders'] = 'от познати податели';
$labels['fromtrustedsenders'] = 'от доверени податели';
$labels['frommycontacts'] = 'от моите контакти';
$labels['always'] = 'винаги';
$labels['alwaysbutplain'] = 'винаги, освен когато е отговор на текстов формат';
$labels['showinlineimages'] = 'Покажи прикачените изображения след писмото';
$labels['autosavedraft'] = 'Автоматично записвай чернова';
$labels['everynminutes'] = 'през $n минути';
$labels['refreshinterval'] = 'Проверявай за нова поща';
$labels['never'] = 'никога';
$labels['immediately'] = 'веднага';
$labels['messagesdisplaying'] = 'Показване на писма';
$labels['messagescomposition'] = 'Писане на писма';
$labels['mimeparamfolding'] = 'Имена на прикачени файлове';
$labels['2231folding'] = 'Според RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Според RFC 2047 (други)';
$labels['force7bit'] = 'Използване на MIME кодиране за 8-битови символи';
$labels['savelocalstorage'] = "Запазване в локално хранилище на баузъра (временно)";
$labels['advancedoptions'] = 'Разширени настройки';
$labels['toggleadvancedoptions'] = 'Превключване на разширени опции';
$labels['focusonnewmessage'] = 'Премигване на прозореца при ново писмо';
$labels['checkallfolders'] = 'Проверка за нови писма във всички папки ';
$labels['displaynext'] = 'Покажи следващия запис от списъка след изтриване/преместване';
$labels['defaultfont'] = 'Шрифт по подразбиране за HTML писма';
$labels['mainoptions'] = 'Основни настройки';
$labels['browseroptions'] = 'Настройки на текущ браузър';
$labels['section'] = 'Секция';
$labels['maintenance'] = 'Поддръжка папки';
$labels['newmessage'] = 'Ново писмо';
$labels['signatureoptions'] = 'Настройки на подпис';
$labels['whenreplying'] = 'При отговор на писмо';
$labels['replyempty'] = 'не цитирай оригиналното писмо';
$labels['replytopposting'] = 'започни новото писмо над цитата';
$labels['replytoppostingnoindent'] = 'започни новото писмо над цитата (no indentation)';
$labels['replybottomposting'] = 'започни новото писмо след цитата';
$labels['replyremovesignature'] = 'При отговор на писмо премахни предишния подпис';
$labels['autoaddsignature'] = 'Автоматично добавяй подпис';
$labels['newmessageonly'] = 'само на нови писма';
$labels['replyandforwardonly'] = 'само на отговори и препратени';
$labels['insertsignature'] = 'Вмъкване на подпис';
$labels['sigbelow'] = 'Постави подписа след цитираното съобщение';
$labels['sigseparator'] = 'Използвай стандартен разделител в подписите';
$labels['automarkread'] = 'Маркиране на писмата като прочетени';
$labels['afternseconds'] = 'след $n секунди';
$labels['reqmdn'] = 'Винаги изисквай обратна разписка';
$labels['reqdsn'] = 'Винаги изисквай статус доставка на писмото';
$labels['replysamefolder'] = 'Постави отговор в папка на писмото, на което се отговаря';
$labels['defaultabook'] = 'Адресна книга по подразбиране';
$labels['autocompletesingle'] = 'Пропусни алтернативни адреси на ел. поща при автоматично попълване';
$labels['listnamedisplay'] = 'Форматирай списък с контакти като';
$labels['contactformmode'] = 'Режим на форма за контакт';
$labels['privatemode'] = 'Личен (Домашен)';
$labels['businessmode'] = 'Бизнес (Служебен)';
$labels['collectedaddresses'] = 'Събрани адреси';
$labels['collectedrecipients'] = 'Събрани Получатели';
$labels['collectedrecipientsopt'] = 'Съхранявай получателите на изходящи писма в';
$labels['collectedsendersopt'] = 'Съхранявай доверените податели в';
$labels['trustedsenders'] = 'Доверени Податели';
$labels['spellcheckbeforesend'] = 'Провери за правописни грешки преди изпращане на писмото';
$labels['spellcheckoptions'] = 'Настройки на проверката за правопис';
$labels['spellcheckignoresyms'] = 'Игнорирай думи съдържащи символи';
$labels['spellcheckignorenums'] = 'Игнорирай думи съдържащи числа';
$labels['spellcheckignorecaps'] = 'Игнорирай думи съдържащи единствено главни букви';
$labels['addtodict'] = 'Добави в речника';
$labels['mailtoprotohandler'] = 'Регистрирай RoundCube като интернет приложение, което обработва mailto: връзките в браузъра';
$labels['standardwindows'] = 'Обработва изскачащи прозорци като стандартни прозорци';
$labels['forwardmode'] = 'Препращай писмата';
$labels['inline'] = 'цитирани в писмото';
$labels['asattachment'] = 'като прикачен файл';
$labels['replyallmode'] = 'Действие по подразбиране на бутон [Отговор на всички]';
$labels['replyalldefault'] = 'отговори на всички';
$labels['replyalllist'] = 'отговори само на пощенския списък (ако има)';
$labels['allmessages'] = 'за всички писма';
$labels['olderxdays'] = 'по-стари от $x дни';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Име на папката';
$labels['subscribed'] = 'Абониран';
$labels['messagecount'] = 'Писма';
$labels['create'] = 'Създай';
$labels['createfolder'] = 'Нова папка';
$labels['managefolders'] = 'Управление на папките';
$labels['specialfolders'] = 'Служебни папки';
$labels['properties'] = 'Данни';
$labels['folderproperties'] = 'Свойства на папката';
$labels['parentfolder'] = 'Основна папка';
$labels['location'] = 'Местоположение';
$labels['info'] = 'Информация';
$labels['getfoldersize'] = 'Щракни за размер на папката';
$labels['changesubscription'] = 'Щракни за промяна на абонамент';
$labels['foldertype'] = 'Вид на папката';
$labels['personalfolder'] = 'Лична папка';
$labels['otherfolder'] = 'Папка на друг потребител';
$labels['sharedfolder'] = 'Публична папка';
$labels['findfolders'] = 'Търсене на папки';
$labels['findcontacts'] = 'Търсене на контакти';
$labels['findmail'] = 'Търсене на писма';
$labels['namespace.personal'] = 'Лична';
$labels['namespace.other'] = 'Други потребители';
$labels['namespace.shared'] = 'Споделена';
$labels['dualuselabel'] = 'Може да съдържа само';
$labels['dualusemail'] = 'писма';
$labels['dualusefolder'] = 'папки';
$labels['generate'] = 'Генериране';
$labels['encryptioncreatekey'] = 'Създай нова ключова двойка';
$labels['openmailvelopesettings'] = 'Отвори настройки на Mailvelope';
$labels['encryptionprivkeysinmailvelope'] = 'Имате $nr съвпадащи частни ключа, съхранени във вашия Mailvelope ключодържател:';
$labels['encryptionnoprivkeysinmailvelope'] = 'Тази самоличност на подателя все още няма частен PGP ключ, съхраняван във вашето Mailvelope разширение. Искате ли да създадете такъв, за да използвате криптирани писма?';
$labels['encryption'] = 'Криптиране';
$labels['mailvelopeoptions'] = 'Настройки на Mailvelope';
$labels['mailvelopemainkeyring'] = 'Използвай основния ключодържател на Mailvelope';
$labels['mailvelopenotfound'] = 'Разширението Mailvelope не е активирано/инсталирано във вашия браузър.';
$labels['sortby'] = 'Сортирай по';
$labels['sortasc'] = 'Сортирай нарастващо';
$labels['sortdesc'] = 'Сортирай намаляващо';
$labels['undo'] = 'Отмени';
$labels['installedplugins'] = 'Инсталирани добавки';
$labels['plugin'] = 'Добавка';
$labels['version'] = 'Версия';
$labels['source'] = 'Източник';
$labels['destination'] = 'Цел';
$labels['license'] = 'Лиценз';
$labels['support'] = 'Поддръжка';
$labels['savedsearches'] = 'Запазени търсения';
$labels['dateformatY'] = 'ГГГГ';
$labels['dateformaty'] = 'ГГ';
$labels['dateformatm'] = 'ММ';
$labels['dateformatd'] = 'ДД';
$labels['dateformatj'] = 'Д';
$labels['dateformatn'] = 'М';
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
$labels['unicode'] = 'Уникод';
$labels['english'] = 'Английски';
$labels['westerneuropean'] = 'Западна Европа';
$labels['easterneuropean'] = 'Източна Европа';
$labels['southeasterneuropean'] = 'Югоизточна Европа';
$labels['baltic'] = 'Балтийски';
$labels['cyrillic'] = 'Кирилица';
$labels['arabic'] = 'Арабски';
$labels['greek'] = 'Гръцки';
$labels['hebrew'] = 'Иврит';
$labels['turkish'] = 'Турски';
$labels['nordic'] = 'Скандинавски';
$labels['thai'] = 'Тайландски';
$labels['celtic'] = 'Келтски';
$labels['vietnamese'] = 'Виетнамски';
$labels['japanese'] = 'Японски';
$labels['korean'] = 'Корейски';
$labels['chinese'] = 'Китайски';
$labels['arialabeltopnav'] = 'Контрол на прозорците';
$labels['arialabeltasknav'] = 'Задачи на приложението';
$labels['arialabeltoolbar'] = 'Ленти с инструменти';
$labels['arialabellistnav'] = 'Навигация на cписък';
$labels['arialabelactivetask'] = 'Активна задача';
$labels['arialabelmessagessearchfilter'] = 'Филтър на списък с писма';
$labels['arialabelmailsearchform'] = 'Форма за търсене на писма';
$labels['arialabelcontactsearchform'] = 'Форма за търсене на контакти';
$labels['arialabelmailquicksearchbox'] = 'Поле за търсене на писма';
$labels['arialabelquicksearchbox'] = 'Поле за търсене';
$labels['arialabelfoldersearchfilter'] = 'Филтър за списък папки';
$labels['arialabelfoldersearchform'] = 'Форма за търсене в папки';
$labels['arialabelfolderlist'] = 'Избор на папка с писма';
$labels['arialabelmessagelist'] = 'Списък с писма';
$labels['arialabelmailpreviewframe'] = 'Преглед на писмо';
$labels['arialabelmailboxmenu'] = 'Меню с действия върху папка';
$labels['arialabellistselectmenu'] = 'Меню за избор в списък';
$labels['arialabelthreadselectmenu'] = 'Меню за списък с кореспонденции';
$labels['arialabelmessagelistoptions'] = 'Опции за преглед и сортиране на списък с писма';
$labels['arialabelmailimportdialog'] = 'Диалог за импорт на писма';
$labels['arialabelmessagenav'] = 'Навигация на писма';
$labels['arialabelmessagebody'] = 'Текст на писмо';
$labels['arialabelmessageactions'] = 'Действия за писмо';
$labels['arialabelcontactquicksearch'] = 'Форма за търсене на контакти';
$labels['arialabelcontactsearchbox'] = 'Поле за търсене на контакт';
$labels['arialabelmessageheaders'] = 'Заглавни блокове на писмо';
$labels['arialabelforwardingoptions'] = 'Настройки за препращане';
$labels['arialabelreplyalloptions'] = 'Настройки за отговор към всички';
$labels['arialabelmoremessageactions'] = 'Още действия с писмо';
$labels['arialabelmorecontactactions'] = 'Още действия с контакт';
$labels['arialabelmarkmessagesas'] = 'Маркирай избраните писма като...';
$labels['arialabelcomposeoptions'] = 'Настройки за създаване';
$labels['arialabelresponsesmenu'] = 'Меню с готови отговори';
$labels['arialabelattachmentuploadform'] = 'Форма за качване на прикачени файлове';
$labels['arialabelattachmentmenu'] = 'Настройки на прикачени файлове';
$labels['arialabelmailtomenu'] = 'Настройки на адреса на ел. поща';
$labels['arialabelattachmentpreview'] = 'Преглед на прикачени файлове';
$labels['ariasummarycomposecontacts'] = 'Списък с контакти и групи за избор като получатели';
$labels['arialabelcontactexportoptions'] = 'Настройки за експорт на контакти';
$labels['arialabelabookgroupoptions'] = 'Настройки на адресна книга/групи';
$labels['arialabelpreferencesform'] = 'Форма с предпочитания';
$labels['arialabelidentityeditfrom'] = 'Форма редакция на самоличност';
$labels['arialabelresponseeditfrom'] = 'Форма редакция на отговор';
$labels['arialabelsearchterms'] = 'Търсене за';
$labels['arialabeldropactionmenu'] = 'Меню за действие Drag-n-Drop';
$labels['arialabelheadersmenu'] = 'Меню за Добавяне получател (заглавен блок)';
$labels['arialabelimagetools'] = 'Инструменти за изображения';
$labels['helplistnavigation'] = 'Списък за клавиатурна навигация';
$labels['helplistkeyboardnavigation'] = "Стрелки нагоре/надолу: Премества фокус/избран ред.
Интервал: Избор на фокусиран ред.
Shift + нагоре/надолу: Добавяне към избраните на реда отгоре/отдолу.
Ctrl + Интервал: Добавяне на фокусирания ред към избраните/премахване от избраните.";
$labels['helplistkeyboardnavmessages'] = "Стрелки надясно/наляво: Разпъване/сгъване на писмата на кореспонденцията (само в изглед по кореспонденции).
Enter: Отваряне на избраното/фокусираното писмо.
Delete: Премества избраните писва в Кошче.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Отваряне на избрания/фокусирания контакт.";
localization/bg_BG/messages.inc000064400000062752151727150600012516 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Възникна грешка!';
$messages['loginfailed']  = 'Неуспешно установяване на самоличност.';
$messages['cookiesdisabled'] = 'Вашият браузър не приема cookies.';
$messages['sessionerror'] = 'Невалидна или изтекла сесия.';
$messages['cookiesmismatch'] = 'Открито е несъответствие с „бисквитките“. Моля, изчистете „бисквитките“ на браузъра си.';
$messages['storageerror'] = 'Неуспешно свързване към сървър с данни.';
$messages['servererror'] = 'Сървърна грешка!';
$messages['servererrormsg'] = 'Сървърна грешка: $msg';
$messages['accountlocked'] = 'Твърде много неуспешни опити за установяване на самоличност. Моля изчакайте временното заключване на профила Ви преди да опитате отново.';
$messages['connerror'] = 'Неуспешно свързване (Сървърът не е намерен)';
$messages['dberror'] = 'Грешка в база данни!';
$messages['dbconnerror'] = 'Неуспешно свързване с базата данни!';
$messages['windowopenerror'] = 'Изскачащият прозорец беше блокиран!';
$messages['requesttimedout'] = 'Изтекло време за изпълнение на заявката';
$messages['errorreadonly'] = 'Невъзможно изпълнение на операцията. Папката е с права само за четене.';
$messages['errornoperm'] = 'Невъзможно изпълнение на операцията. Отказани права за достъп.';
$messages['erroroverquota'] = 'Невъзможно извършване на операцията. Няма достатъчно свободно дисково пространство.';
$messages['erroroverquotadelete'] = 'Няма достатъчно свободно дисково пространство. Ползвайте Shift+Del за да изтриете писма.';
$messages['invalidrequest'] = 'Невалидна заявка! Данните не са съхранени.';
$messages['invalidhost'] = 'Невалидно име на сървър.';
$messages['nomessagesfound'] = 'Няма намерени писма в тази папка.';
$messages['loggedout'] = 'Сесията е прекратена успешно. Довиждане!';
$messages['mailboxempty'] = 'Пощенската кутия е празна';
$messages['nomessages'] = 'Няма писма';
$messages['refreshing'] = 'Обновяване...';
$messages['loading'] = 'Зареждане...';
$messages['uploading'] = 'Качване на файл...';
$messages['attaching'] = 'Качване на прикачен на файл...';
$messages['uploadingmany'] = 'Качване на файлове...';
$messages['loadingdata'] = 'Зареждане на данни...';
$messages['checkingmail'] = 'Проверка за нови писма...';
$messages['sendingmessage'] = 'Изпращане на писмо...';
$messages['messagesent'] = 'Писмото е изпратено успешно.';
$messages['savingmessage'] = 'Записване на писмо...';
$messages['messagesaved'] = 'Писмото е записано в Чернови.';
$messages['successfullysaved'] = 'Успешен запис.';
$messages['savingresponse'] = 'Записване текст на отговор...';
$messages['deleteresponseconfirm'] = 'Желаете ли да изтриете текст за отговор?';
$messages['nocontactselected'] = 'Все още не сте избрали контакт.';
$messages['addedsuccessfully'] = 'Контактът е добавен в адресната книга.';
$messages['contactexists'] = 'Вече съществува контакт с този адрес на ел. поща.';
$messages['contactnameexists'] = 'Вече съществува контакт с това име.';
$messages['blockedimages'] = 'С оглед на Вашата сигурност, изображенията в това писмо са блокирани.';
$messages['blockedresources'] = 'С оглед на Вашата сигурност, отдалечените ресурси са блокирани.';
$messages['suspiciousemail'] = 'Това писмо съдържа подозрителни имейл адреси, които може да са подправени.';
$messages['bccemail'] = 'Препратените писма съдържат поверителни получатели (Ск).';
$messages['bouncehint'] = 'Писмото ще бъде изпратено без никакви модификации, т.е. използвайки оригиналните тяло, заглавки и получатели.';
$messages['encryptedmessage'] = 'Това е кодирано писмо и не може да бъде показано. Съжаляваме!';
$messages['externalmessagedecryption'] = 'Това е кодирано писмо и може да бъде декодирано с разширение на браузъра.';
$messages['nopubkeyfor'] = 'Не е намерен валиден публичен ключ за $email';
$messages['nopubkeyforsender'] = 'Не е намерен валиден публичен ключ за самоличността на подателя. Желаете ли да кодирате писмото само за получателите?';
$messages['encryptnoattachments'] = 'Невъзможно кодиране на вече прикачени файлове. Моля качете ги отново през редактора за кодиране.';
$messages['searchpubkeyservers'] = 'Желаете ли да потърсите на сървъри за публични ключове за липсващите ключове?';
$messages['encryptpubkeysfound'] = 'Следващите публични ключове са намерени:';
$messages['keyservererror'] = 'Невъзможно получаване на ключ от сървъра.';
$messages['keyimportsuccess'] = 'Публичният ключ $key е импортиран във Вашия ключодържател успешно.';
$messages['nocontactsfound'] = 'Няма намерени контакти.';
$messages['contactnotfound'] = 'Търсеният контакт не е намерен.';
$messages['contactsearchonly'] = 'Трябва да използвате формата за търсене, за да видите контактите от избраната адресна книга.';
$messages['sendingfailed'] = 'Неуспешно изпращане на писмо.';
$messages['senttooquickly'] = 'Моля изчакайте $sec секунди преди да изпратите писмото.';
$messages['errorsavingsent'] = 'Възникна грешка при записване на изпратеното писмо.';
$messages['errorsaving'] = 'Възникна грешка при записването.';
$messages['errormoving'] = 'Писмото не може да бъде преместено.';
$messages['errorcopying'] = 'Писмото не може да бъде копирано.';
$messages['errordeleting'] = 'Писмото не може да бъде изтрито.';
$messages['errormarking'] = 'Писмото не може да бъде маркирано.';
$messages['alerttitle'] = 'Внимание';
$messages['confirmationtitle'] = 'Сигурни ли сте...';
$messages['deletecontactconfirm']  = 'Желаете ли да изтриете маркираните контакти?';
$messages['deletegroupconfirm']  = 'Желаете ли да изтриете избраната група?';
$messages['deletemessagesconfirm'] = 'Желаете ли да изтриете маркираните писма?';
$messages['deletefolderconfirm']  = 'Желаете ли да изтриете тази папка?';
$messages['movefolderconfirm']  = 'Желаете ли да преместите тази папка?';
$messages['purgefolderconfirm']  = 'Желаете ли да изтриете всички писма в тази папка?';
$messages['contactdeleting'] = 'Изтриване на контакти...';
$messages['groupdeleting'] = 'Изтриване на група...';
$messages['folderdeleting'] = 'Изтриване на папка...';
$messages['foldermoving'] = 'Преместване на папка...';
$messages['foldersubscribing'] = 'Абониране за папка...';
$messages['folderunsubscribing'] = 'Отписване от папка...';
$messages['formincomplete'] = 'Не сте попълнили всички полета.';
$messages['noemailwarning'] = 'Моля въведете валиден адрес на ел. поща.';
$messages['nonamewarning']  = 'Моля въведете име.';
$messages['nopagesizewarning'] = 'Въведете брой редове на страница.';
$messages['nosenderwarning'] = 'Моля въведете валиден адрес на ел. поща на подателя.';
$messages['recipientsadded'] = 'Получателят е добавен успешно.';
$messages['norecipientwarning'] = 'Моля въведете поне един получател.';
$messages['disclosedrecipwarning'] = 'Всеки получател ще вижда адресите на ел. поща на останалите получатели. За да предотвратите това и за да се погрижите за тяхна конфиденциалност може да използвате поле Bcc.';
$messages['disclosedreciptitle'] = 'Твърде много публични получатели';
$messages['nosubjectwarning']  = 'Полето "Заглавие" е празно. Желаете ли да въведете заглавие сега?';
$messages['nosubjecttitle']  = 'Няма Заглавие';
$messages['nobodywarning'] = 'Изпрати това писмо без текст?';
$messages['notsentwarning'] = 'Писмото не е изпратено и съдържа незапазени промени. Желаете ли да бъде унищожено?';
$messages['restoresavedcomposedata'] = 'Намерено е неизпратено писмо, което е било в процес на създаване.\n\nОтносно: $subject\nЗапазено на: $date\n\nЖелаете ли да възстановите писмото?';
$messages['nosearchname'] = 'Моля въведете име на контакта или адрес на ел. поща.';
$messages['notuploadedwarning'] = 'Все още не са качени всички прикачени файлове. Моля изчакайте или откажете качването.';
$messages['searchsuccessful'] = '$nr писма намерени.';
$messages['contactsearchsuccessful'] = '$nr контакта намерени.';
$messages['searchnomatch'] = 'Няма съвпадения от търсенето.';
$messages['searching'] = 'Търсене...';
$messages['checking'] = 'Проверка...';
$messages['stillsearching'] = 'Търсенето продължава...';
$messages['nospellerrors'] = 'Не са открити правописни грешки.';
$messages['folderdeleted'] = 'Папката е изтрита успешно.';
$messages['foldersubscribed'] = 'Абонирането за папката е успешно.';
$messages['folderunsubscribed'] = 'Отписването от папката е успешно.';
$messages['folderpurged'] = 'Папката е изпразнена успешно.';
$messages['folderexpunged'] = 'Папката е уплътнена успешно.';
$messages['deletedsuccessfully'] = 'Изтриването е успешно.';
$messages['converting'] = 'Премахване форматиране на писмото...';
$messages['messageopenerror'] = 'Невъзможно зареждане на писмото от сървъра.';
$messages['filelinkerror'] = 'Грешка при качване на файл.';
$messages['fileuploaderror'] = 'Грешка при качване на файл.';
$messages['csvfilemismatch'] = 'Импортирането на множество CSV файлове с различни полета не се поддържа.';
$messages['filesizeerror'] = 'Прикаченият файл надвишава лимита от $size.';
$messages['filecounterror'] = 'Можете да качите не повече от $count файла едновременно';
$messages['msgsizeerror'] = 'Грешка при качване на прикачен файл. Макс. допустим размер на писмо от ($size) e надвишен.';
$messages['msgsizeerrorfwd'] = 'Максималният размер на писмо ($size) е превишен. $num писма не са прикачени.';
$messages['copysuccess'] = 'Успешно копирани $nr контакта.';
$messages['movesuccess'] = 'Успешно преместени $nr контакта.';
$messages['copyerror'] = 'Невъзможно копиране на контакти.';
$messages['moveerror'] = 'Невъзможно преместване на контакти.';
$messages['sourceisreadonly'] = 'Този източник на адреси е само за четене.';
$messages['errorsavingcontact'] = 'Грешка при записване на адреса.';
$messages['movingmessage'] = 'Преместване на писма...';
$messages['copyingmessage'] = 'Копиране на писма...';
$messages['copyingcontact'] = 'Копиране на контакти...';
$messages['movingcontact'] = 'Преместване на контакти...';
$messages['deletingmessage'] = 'Изтриване на писма...';
$messages['markingmessage'] = 'Маркиране на писма...';
$messages['addingmember'] = 'Добавяне на контакти в групата...';
$messages['removingmember'] = 'Премахване на контакти от групата...';
$messages['receiptsent'] = 'Обратната разписка е изпратена успешно.';
$messages['errorsendingreceipt'] = 'Невъзможно изпращането на обратна разписка.';
$messages['deleteidentityconfirm'] = 'Наистина ли желаете да изтриете тази самоличност?';
$messages['nodeletelastidentity'] = 'Невъзможно изтриване на тази самоличност, трябва да имате поне една.';
$messages['forbiddencharacter'] = 'Името на папка съдържа непозволени символи.';
$messages['selectimportfile'] = 'Моля изберете файл за качване.';
$messages['addresswriterror'] = 'Избраната адресна книга не може да бъде модифицирана.';
$messages['contactaddedtogroup'] = 'Контактите бяха добавени към групата успешно.';
$messages['contactremovedfromgroup'] = 'Контактите бяха премахнати от групата успешно.';
$messages['nogroupassignmentschanged'] = 'Няма променени групови задачи.';
$messages['importwait'] = 'Импортиране, моля изчакайте...';
$messages['importformaterror'] = 'Неуспешен импорт! Данните в каченият файл не са във валиден формат.';
$messages['importconfirm'] = '<b>Успешно са импортирани $inserted контакта, вече съществуващите $skipped контакта са пропуснати</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Пропуснати са $skipped съществуващи записи</b>';
$messages['importmessagesuccess'] = 'Успешно импортирани $nr писма';
$messages['importmessageerror'] = 'Неуспешен импорт! Каченият файл не е валиден файл на писма или пощенска кутия';
$messages['opnotpermitted'] = 'Непозволена операция!';
$messages['nofromaddress'] = 'Липсва адрес на ел. поща за избраната самоличност.';
$messages['editorwarning'] = 'Превключване на типа на редактора може да доведе до загуба на форматиране на текста. Желаете ли да продължите?';
$messages['httpreceivedencrypterror'] = 'Фатална конфигурационна грешка. Моля свържете се с Вашия администратор. <b>Писмото не може да бъде изпратено.</b>';
$messages['smtpconnerror'] = 'SMTP грешка ($code): Няма връзка със сървъра.';
$messages['smtpautherror'] = 'SMTP грешка ($code): Грешни потребител/парола.';
$messages['smtpfromerror'] = 'SMTP грешка ($code): Не може да бъде изпратено писмо от "$from" ($msg).';
$messages['smtptoerror'] = 'SMTP грешка ($code): Не може да бъде изпратено писмо до "$to" ($msg).';
$messages['smtprecipientserror'] = 'SMTP грешка: Не може да бъде обработен списъка с получатели.';
$messages['smtputf8error'] = 'SMTP грешка: Сървърът не поддържа Unicode в имейл адреса.';
$messages['smtpsizeerror'] = 'SMTP грешка: Размерът на писмото надвишава ограничението на сървъра ($limit)';
$messages['smtperror'] = 'SMTP грешка: $msg';
$messages['emailformaterror'] = 'Невалиден адрес на ел. поща: $email';
$messages['toomanyrecipients'] = 'Прекалено много адреси за изпращане (максимум: $max).';
$messages['maxgroupmembersreached'] = 'Броят на членовете на групата е повече от максималния: $max.';
$messages['internalerror'] = 'Възникна вътрешна грешка. Моля опитайте отново.';
$messages['contactdelerror'] = 'Невъзможно изтриване на контакти.';
$messages['contactdeleted'] = 'Контактът беше изтрит успешно.';
$messages['contactrestoreerror'] = 'Неуспешно възстановяване на изтритите контакти.';
$messages['contactrestored'] = 'Контактът е възстановен успешно.';
$messages['groupdeleted'] = 'Групата беше изтрита успешно.';
$messages['grouprenamed'] = 'Групата беше преименувана успешно.';
$messages['groupcreated'] = 'Групата беше създадена успешно.';
$messages['savedsearchdeleted'] = 'Запазените филтри са изтрити успешно.';
$messages['savedsearchdeleteerror'] = 'Невъзможно изтриване на запазените филтри.';
$messages['savedsearchcreated'] = 'Запазените филтри са създадени успешно.';
$messages['savedsearchcreateerror'] = 'Невъзможно създаване на запазен филтър.';
$messages['messagedeleted'] = 'Писмото е изтрито успешно.';
$messages['messagemoved'] = 'Писмото е преместено успешно.';
$messages['messagemovedtotrash'] = 'Писмото е преместено в Кошчето успешно.';
$messages['messagecopied'] = 'Писмото е копирано успешно.';
$messages['messagemarked'] = 'Писмото е маркирано успешно.';
$messages['autocompletechars'] = 'Въведете минимум $min знака, за да започне автоматичното попълване.';
$messages['autocompletemore'] = 'Намерените съвпадения са прекалено много. Моля въведете повече текст.';
$messages['namecannotbeempty'] = 'Полето за име не може да бъде празно.';
$messages['nametoolong'] = 'Името е прекалено дълго.';
$messages['namedotforbidden'] = 'Името на папката не може да започва с точка';
$messages['folderupdated'] = 'Папката е модифицирана успешно.';
$messages['foldercreated'] = 'Папката е създадена успешно.';
$messages['invalidimageformat'] = 'Невалиден формат на изображението.';
$messages['mispellingsfound'] = 'В писмото са намерени правописни грешки.';
$messages['parentnotwritable'] = 'Неуспешно създаването/преместването на папка в избраната основна папка. Няма права за достъп.';
$messages['messagetoobig'] = 'Писмото е прекалено голямо, за да бъде обработено.';
$messages['attachmentvalidationerror'] = 'Прикаченият файл е подозрителен, защото типът му не съвпада с този, който е деклариран в писмото. Ако не се доверявате на подателя, не трябва да го отваряте в браузъра, защото може да съдържа зловредно съдържание.<br/><br/><em>Очакван тип: $expected; открит тип: $detected</em>';
$messages['noscriptwarning'] = 'ВНИМАНИЕ! Тази пощенска услуга изисква JavaScript за да функционира коректно. Моля включете поддръжката на JavaScript в настройките на текущия браузър.';
$messages['messageissent'] = 'Писмото беше изпратено, но все още не е запазено. Желаете ли да го запазите сега?';
$messages['errnotfound'] = 'Файлът не е намерен';
$messages['errnotfoundexplain'] = 'Търсеният ресурс не е намерен';
$messages['errfailedrequest'] = 'Грешка при обръщение';
$messages['errauthorizationfailed'] = 'Грешка при установяване на права';
$messages['errunauthorizedexplain'] = 'Невъзможно установяване на права за достъп до тази услуга!';
$messages['errrequestcheckfailed'] = 'Грешка при проверка на заявка';
$messages['errcsrfprotectionexplain'] = "С цел повишаване нивото на сигурност достъпът да този ресурс е защитен против CSRF.\nАко виждате това съобщение, значи вероятно не сте излезли от системата преди да напуснете страницата на самото приложение.\n\nЗа да продължите по-нататък се изисква човешка намеса.";
$messages['errcontactserveradmin'] = 'Моля свържете се с администратор на сървъра.';
$messages['clicktoresumesession'] = 'Щракнете тук за да възстановите предишната си сесия.';
$messages['errcomposesession'] = 'Грешка при сесията за писане';
$messages['errcomposesessionexplain'] = 'Заявената сесия за писане не е намерена.';
$messages['clicktocompose'] = 'Натисни тук, за да започнеш ново писмо';
$messages['nosupporterror'] = 'Тази функция не се поддържа от уеб браузъра ви.';
$messages['siginserted'] = 'Подписът е вмъкнат успешно.';
$messages['responseinserted'] = 'Отговорът е вмъкнат успешно.';
$messages['noresponsesavailable'] = 'Няма налични отговори';
$messages['listempty'] = 'Списъкът е празен.';
$messages['listusebutton'] = 'Използвайте бутона Създай, за да добавите нов запис.';
$messages['keypaircreatesuccess'] = 'Успешно е създадена нова двойка ключове за $identity.';
$messages['emptyattachment'] = 'Изглежда, че този прикачен файл е празен.<br>Моля, консултирайте се с лицето, което го е изпратило.';
$messages['oauthloginfailed'] = 'OAuth автентикацията не бе успешна. Моля опитайте отново.';
localization/et_EE/timezones.inc000064400000041661151727150600012741 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'UTC';
$labels['tz:africa'] = 'Aafrika';
$labels['tz:africa:abidjan'] = 'Abidjan';
$labels['tz:africa:accra'] = 'Accra';
$labels['tz:africa:addis_ababa'] = 'Addis Ababa';
$labels['tz:africa:algiers'] = 'Algiers';
$labels['tz:africa:asmara'] = 'Asmara';
$labels['tz:africa:bamako'] = 'Bamako';
$labels['tz:africa:bangui'] = 'Bangui';
$labels['tz:africa:banjul'] = 'Banjul';
$labels['tz:africa:bissau'] = 'Bissau';
$labels['tz:africa:blantyre'] = 'Blantyre';
$labels['tz:africa:brazzaville'] = 'Brazzaville';
$labels['tz:africa:bujumbura'] = 'Bujumbura';
$labels['tz:africa:cairo'] = 'Kairo';
$labels['tz:africa:casablanca'] = 'Casablanca';
$labels['tz:africa:ceuta'] = 'Ceuta';
$labels['tz:africa:conakry'] = 'Conakry';
$labels['tz:africa:dakar'] = 'Dakar';
$labels['tz:africa:dar_es_salaam'] = 'Dar es Salaam';
$labels['tz:africa:djibouti'] = 'Djibouti';
$labels['tz:africa:douala'] = 'Douala';
$labels['tz:africa:el_aaiun'] = 'El Aaiun';
$labels['tz:africa:freetown'] = 'Freetown';
$labels['tz:africa:gaborone'] = 'Gaborone';
$labels['tz:africa:harare'] = 'Harare';
$labels['tz:africa:johannesburg'] = 'Johannesburg';
$labels['tz:africa:juba'] = 'Juba';
$labels['tz:africa:kampala'] = 'Kampala';
$labels['tz:africa:khartoum'] = 'Hartum';
$labels['tz:africa:kigali'] = 'Kigali';
$labels['tz:africa:kinshasa'] = 'Kinshasa';
$labels['tz:africa:lagos'] = 'Lagos';
$labels['tz:africa:libreville'] = 'Libreville';
$labels['tz:africa:lome'] = 'Lomé';
$labels['tz:africa:luanda'] = 'Luanda';
$labels['tz:africa:lubumbashi'] = 'Lubumbashi';
$labels['tz:africa:lusaka'] = 'Lusaka';
$labels['tz:africa:malabo'] = 'Malabo';
$labels['tz:africa:maputo'] = 'Maputo';
$labels['tz:africa:maseru'] = 'Maseru';
$labels['tz:africa:mbabane'] = 'Mbabane';
$labels['tz:africa:mogadishu'] = 'Mogadishu';
$labels['tz:africa:monrovia'] = 'Monrovia';
$labels['tz:africa:nairobi'] = 'Nairobi';
$labels['tz:africa:ndjamena'] = 'Ndjamena';
$labels['tz:africa:niamey'] = 'Niamey';
$labels['tz:africa:nouakchott'] = 'Nouakchott';
$labels['tz:africa:ouagadougou'] = 'Ouagadougou';
$labels['tz:africa:porto-novo'] = 'Porto-Novo';
$labels['tz:africa:sao_tome'] = 'São Tomé';
$labels['tz:africa:tripoli'] = 'Tripoli';
$labels['tz:africa:tunis'] = 'Tunis';
$labels['tz:africa:windhoek'] = 'Windhoek';
$labels['tz:america'] = 'Ameerika';
$labels['tz:america:adak'] = 'Adak';
$labels['tz:america:anchorage'] = 'Anchorage';
$labels['tz:america:anguilla'] = 'Anguilla';
$labels['tz:america:antigua'] = 'Antigua';
$labels['tz:america:araguaina'] = 'Araguaína';
$labels['tz:america:argentina'] = 'Argentina';
$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires';
$labels['tz:america:argentina:cordoba'] = 'Cordoba';
$labels['tz:america:argentina:jujuy'] = 'Jujuy';
$labels['tz:america:argentina:la_rioja'] = 'La Rioja';
$labels['tz:america:argentina:mendoza'] = 'Mendoza';
$labels['tz:america:argentina:salta'] = 'Salta';
$labels['tz:america:argentina:san_juan'] = 'San Juan';
$labels['tz:america:argentina:san_luis'] = 'San Luis';
$labels['tz:america:argentina:tucuman'] = 'Tucuman';
$labels['tz:america:argentina:ushuaia'] = 'Ushuaia';
$labels['tz:america:aruba'] = 'Aruba';
$labels['tz:america:asuncion'] = 'Asunción';
$labels['tz:america:atikokan'] = 'Atikokan';
$labels['tz:america:bahia'] = 'Bahia';
$labels['tz:america:bahia_banderas'] = 'Bahia Banderas';
$labels['tz:america:barbados'] = 'Barbados';
$labels['tz:america:belem'] = 'Belém';
$labels['tz:america:belize'] = 'Belize';
$labels['tz:america:blanc-sablon'] = 'Blanc-Sablon';
$labels['tz:america:boa_vista'] = 'Boa Vista';
$labels['tz:america:bogota'] = 'Bogota';
$labels['tz:america:boise'] = 'Boise';
$labels['tz:america:cambridge_bay'] = 'Ikaluktutiak';
$labels['tz:america:campo_grande'] = 'Campo Grande';
$labels['tz:america:cancun'] = 'Cancun';
$labels['tz:america:caracas'] = 'Caracas';
$labels['tz:america:cayenne'] = 'Cayenne';
$labels['tz:america:cayman'] = 'Cayman';
$labels['tz:america:chicago'] = 'Chicago';
$labels['tz:america:chihuahua'] = 'Chihuahua';
$labels['tz:america:costa_rica'] = 'Costa Rica';
$labels['tz:america:creston'] = 'Creston';
$labels['tz:america:cuiaba'] = 'Cuiaba';
$labels['tz:america:danmarkshavn'] = 'Danmarkshavn';
$labels['tz:america:dawson'] = 'Dawson';
$labels['tz:america:dawson_creek'] = 'Dawson Creek';
$labels['tz:america:denver'] = 'Denver';
$labels['tz:america:detroit'] = 'Detroit';
$labels['tz:america:dominica'] = 'Dominica';
$labels['tz:america:edmonton'] = 'Edmonton';
$labels['tz:america:eirunepe'] = 'Eirunepe';
$labels['tz:america:el_salvador'] = 'El Salvador';
$labels['tz:america:fort_nelson'] = 'Fort Nelson';
$labels['tz:america:fortaleza'] = 'Fortaleza';
$labels['tz:america:glace_bay'] = 'Glace Bay';
$labels['tz:america:godthab'] = 'Nuuk';
$labels['tz:america:goose_bay'] = 'Goose Bay';
$labels['tz:america:grand_turk'] = 'Grand Turk';
$labels['tz:america:grenada'] = 'Grenada';
$labels['tz:america:guadeloupe'] = 'Guadeloupe';
$labels['tz:america:guatemala'] = 'Guatemala';
$labels['tz:america:guayaquil'] = 'Guayaquil';
$labels['tz:america:guyana'] = 'Guyana';
$labels['tz:america:halifax'] = 'Halifax';
$labels['tz:america:havana'] = 'Havanna';
$labels['tz:america:hermosillo'] = 'Hermosillo';
$labels['tz:america:indiana'] = 'Indiana';
$labels['tz:america:indiana:indianapolis'] = 'Indianapolis';
$labels['tz:america:indiana:knox'] = 'Knox';
$labels['tz:america:indiana:marengo'] = 'Marengo';
$labels['tz:america:indiana:petersburg'] = 'Petersburg';
$labels['tz:america:indiana:tell_city'] = 'Tell City';
$labels['tz:america:indiana:winamac'] = 'Winamac';
$labels['tz:america:inuvik'] = 'Inuvik';
$labels['tz:america:iqaluit'] = 'Iqaluit';
$labels['tz:america:jamaica'] = 'Jamaica';
$labels['tz:america:juneau'] = 'Juneau';
$labels['tz:america:kentucky'] = 'Kentucky';
$labels['tz:america:kentucky:louisville'] = 'Louisville';
$labels['tz:america:kentucky:monticello'] = 'Monticello';
$labels['tz:america:kralendijk'] = 'Kralendijk';
$labels['tz:america:la_paz'] = 'La Paz';
$labels['tz:america:lima'] = 'Lima';
$labels['tz:america:los_angeles'] = 'Los Angeles';
$labels['tz:america:lower_princes'] = 'Lower Princes';
$labels['tz:america:maceio'] = 'Maceio';
$labels['tz:america:managua'] = 'Managua';
$labels['tz:america:manaus'] = 'Manaus';
$labels['tz:america:marigot'] = 'Marigot';
$labels['tz:america:martinique'] = 'Martinique';
$labels['tz:america:matamoros'] = 'Matamoros';
$labels['tz:america:mazatlan'] = 'Mazatlan';
$labels['tz:america:menominee'] = 'Menominee';
$labels['tz:america:merida'] = 'Mérida';
$labels['tz:america:metlakatla'] = 'Metlakatla';
$labels['tz:america:mexico_city'] = 'México';
$labels['tz:america:miquelon'] = 'Miquelon';
$labels['tz:america:moncton'] = 'Moncton';
$labels['tz:america:monterrey'] = 'Monterrey';
$labels['tz:america:montevideo'] = 'Montevideo';
$labels['tz:america:montserrat'] = 'Montserrat';
$labels['tz:america:nassau'] = 'Nassau';
$labels['tz:america:new_york'] = 'New York';
$labels['tz:america:nipigon'] = 'Nipigon';
$labels['tz:america:nome'] = 'Nome';
$labels['tz:america:noronha'] = 'Noronha';
$labels['tz:america:north_dakota'] = 'Põhja-Dakota';
$labels['tz:america:ojinaga'] = 'Ojinaga';
$labels['tz:america:panama'] = 'Panama';
$labels['tz:america:pangnirtung'] = 'Pangnirtung';
$labels['tz:america:paramaribo'] = 'Paramaribo';
$labels['tz:america:phoenix'] = 'Phoenix';
$labels['tz:america:port-au-prince'] = 'Port-au-Prince';
$labels['tz:america:port_of_spain'] = 'Port of Spain';
$labels['tz:america:porto_velho'] = 'Porto Velho';
$labels['tz:america:puerto_rico'] = 'Puerto Rico';
$labels['tz:america:rainy_river'] = 'Rainy River';
$labels['tz:america:rankin_inlet'] = 'Rankin Inlet';
$labels['tz:america:recife'] = 'Recife';
$labels['tz:america:regina'] = 'Regina';
$labels['tz:america:resolute'] = 'Resolute';
$labels['tz:america:rio_branco'] = 'Rio Branco';
$labels['tz:america:santarem'] = 'Santarém';
$labels['tz:america:santiago'] = 'Santiago';
$labels['tz:america:santo_domingo'] = 'Santo Domingo';
$labels['tz:america:sao_paulo'] = 'São Paulo';
$labels['tz:america:scoresbysund'] = 'Scoresbysund';
$labels['tz:america:sitka'] = 'Sitka';
$labels['tz:america:st_lucia'] = 'Saint Lucia';
$labels['tz:america:st_thomas'] = 'Saint Thomas';
$labels['tz:america:st_vincent'] = 'Saint Vincent';
$labels['tz:america:swift_current'] = 'Swift Current';
$labels['tz:america:tegucigalpa'] = 'Tegucigalpa';
$labels['tz:america:thule'] = 'Thule';
$labels['tz:america:thunder_bay'] = 'Thunder Bay';
$labels['tz:america:tijuana'] = 'Tijuana';
$labels['tz:america:toronto'] = 'Toronto';
$labels['tz:america:tortola'] = 'Tortola';
$labels['tz:america:vancouver'] = 'Vancouver';
$labels['tz:america:whitehorse'] = 'Whitehorse';
$labels['tz:america:winnipeg'] = 'Winnipeg';
$labels['tz:america:yakutat'] = 'Yakutat';
$labels['tz:america:yellowknife'] = 'Yellowknife';
$labels['tz:antarctica'] = 'Antarktika';
$labels['tz:antarctica:casey'] = 'Casey';
$labels['tz:antarctica:davis'] = 'Davis';
$labels['tz:antarctica:dumontdurville'] = "Dumont d'Urville";
$labels['tz:antarctica:macquarie'] = 'Macquarie';
$labels['tz:antarctica:mawson'] = 'Mawson';
$labels['tz:antarctica:mcmurdo'] = 'McMurdo';
$labels['tz:antarctica:palmer'] = 'Palmer';
$labels['tz:antarctica:rothera'] = 'Rothera';
$labels['tz:antarctica:syowa'] = 'Syowa';
$labels['tz:antarctica:troll'] = 'Troll';
$labels['tz:antarctica:vostok'] = 'Vostok';
$labels['tz:arctic'] = 'Arktika';
$labels['tz:arctic:longyearbyen'] = 'Longyearbyen';
$labels['tz:asia'] = 'Aasia';
$labels['tz:asia:aden'] = 'Aden';
$labels['tz:asia:amman'] = 'Amman';
$labels['tz:asia:aqtau'] = 'Aqtau';
$labels['tz:asia:ashgabat'] = 'Ashgabat';
$labels['tz:asia:bahrain'] = 'Bahrain';
$labels['tz:asia:baku'] = 'Bakuu';
$labels['tz:asia:bangkok'] = 'Bangkok';
$labels['tz:asia:barnaul'] = 'Barnaul';
$labels['tz:asia:beirut'] = 'Beirut';
$labels['tz:asia:bishkek'] = 'Bishkek';
$labels['tz:asia:brunei'] = 'Brunei';
$labels['tz:asia:chita'] = 'Chita';
$labels['tz:asia:choibalsan'] = 'Choibalsan';
$labels['tz:asia:damascus'] = 'Damaskus';
$labels['tz:asia:dhaka'] = 'Dhaka';
$labels['tz:asia:dili'] = 'Dili';
$labels['tz:asia:dubai'] = 'Dubai';
$labels['tz:asia:dushanbe'] = 'Dushanbe';
$labels['tz:asia:famagusta'] = 'Famagusta';
$labels['tz:asia:hebron'] = 'Hebron';
$labels['tz:asia:ho_chi_minh'] = 'Ho Chi Minh';
$labels['tz:asia:hong_kong'] = 'Hong Kong';
$labels['tz:asia:hovd'] = 'Hovd';
$labels['tz:asia:irkutsk'] = 'Irkutsk';
$labels['tz:asia:jakarta'] = 'Jakarta';
$labels['tz:asia:jerusalem'] = 'Jerusalemm';
$labels['tz:asia:kabul'] = 'Kabul';
$labels['tz:asia:karachi'] = 'Karachi';
$labels['tz:asia:krasnoyarsk'] = 'Krasnojarsk';
$labels['tz:asia:kuala_lumpur'] = 'Kuala Lumpur';
$labels['tz:asia:magadan'] = 'Magadan';
$labels['tz:asia:manila'] = 'Manila';
$labels['tz:asia:muscat'] = 'Muscat';
$labels['tz:asia:novosibirsk'] = 'Novosibirsk';
$labels['tz:asia:omsk'] = 'Omsk';
$labels['tz:asia:oral'] = 'Oral';
$labels['tz:asia:phnom_penh'] = 'Phnom Penh';
$labels['tz:asia:pontianak'] = 'Pontianak';
$labels['tz:asia:sakhalin'] = 'Sakhalin';
$labels['tz:asia:samarkand'] = 'Samarkand';
$labels['tz:asia:shanghai'] = 'Shanghai';
$labels['tz:asia:singapore'] = 'Singapur';
$labels['tz:asia:srednekolymsk'] = 'Srednekolymsk';
$labels['tz:asia:taipei'] = 'Taipei';
$labels['tz:asia:tashkent'] = 'Tashkent';
$labels['tz:asia:tbilisi'] = 'Tbilisi';
$labels['tz:asia:tehran'] = 'Teheran';
$labels['tz:asia:thimphu'] = 'Thimphu';
$labels['tz:asia:tokyo'] = 'Tokyo';
$labels['tz:asia:tomsk'] = 'Tomsk';
$labels['tz:asia:urumqi'] = 'Urumqi';
$labels['tz:asia:vientiane'] = 'Vientiane';
$labels['tz:asia:vladivostok'] = 'Vladivostok';
$labels['tz:asia:yakutsk'] = 'Jakutsk';
$labels['tz:asia:yekaterinburg'] = 'Jekaterinburg';
$labels['tz:asia:yerevan'] = 'Jerevan';
$labels['tz:atlantic'] = 'Atlandi';
$labels['tz:atlantic:azores'] = 'Azores';
$labels['tz:atlantic:bermuda'] = 'Bermuda';
$labels['tz:atlantic:canary'] = 'Kanaarid';
$labels['tz:atlantic:cape_verde'] = 'Cape Verde';
$labels['tz:atlantic:faroe'] = 'Faroe';
$labels['tz:atlantic:madeira'] = 'Madeira';
$labels['tz:atlantic:reykjavik'] = 'Reykjavik';
$labels['tz:atlantic:st_helena'] = 'St Helena';
$labels['tz:atlantic:stanley'] = 'Stanley';
$labels['tz:australia'] = 'Austraalia';
$labels['tz:australia:adelaide'] = 'Adelaide';
$labels['tz:australia:brisbane'] = 'Brisbane';
$labels['tz:australia:currie'] = 'Currie';
$labels['tz:australia:darwin'] = 'Darwin';
$labels['tz:australia:eucla'] = 'Eucla';
$labels['tz:australia:hobart'] = 'Hobart';
$labels['tz:australia:lindeman'] = 'Lindeman';
$labels['tz:australia:melbourne'] = 'Melbourne';
$labels['tz:australia:perth'] = 'Perth';
$labels['tz:australia:sydney'] = 'Siyney';
$labels['tz:europe'] = 'Euroopa';
$labels['tz:europe:amsterdam'] = 'Amsterdam';
$labels['tz:europe:andorra'] = 'Andorra';
$labels['tz:europe:astrakhan'] = 'Astrakhan';
$labels['tz:europe:athens'] = 'Ateena';
$labels['tz:europe:belgrade'] = 'Belgrad';
$labels['tz:europe:berlin'] = 'Berliin';
$labels['tz:europe:bratislava'] = 'Bratislava';
$labels['tz:europe:brussels'] = 'Brüssel';
$labels['tz:europe:bucharest'] = 'Bukarest';
$labels['tz:europe:budapest'] = 'Budapest';
$labels['tz:europe:copenhagen'] = 'Kopenhaagen';
$labels['tz:europe:dublin'] = 'Dublin';
$labels['tz:europe:gibraltar'] = 'Gibraltar';
$labels['tz:europe:guernsey'] = 'Guernsey';
$labels['tz:europe:helsinki'] = 'Helsinki';
$labels['tz:europe:isle_of_man'] = 'Isle of Man';
$labels['tz:europe:istanbul'] = 'Istanbul';
$labels['tz:europe:jersey'] = 'Jersey';
$labels['tz:europe:kaliningrad'] = 'Kaliningrad';
$labels['tz:europe:kiev'] = 'Kiiev';
$labels['tz:europe:kirov'] = 'Kirov';
$labels['tz:europe:ljubljana'] = 'Ljubljana';
$labels['tz:europe:luxembourg'] = 'Luksembourg';
$labels['tz:europe:madrid'] = 'Madrid';
$labels['tz:europe:malta'] = 'Malta';
$labels['tz:europe:mariehamn'] = 'Mariehamn';
$labels['tz:europe:minsk'] = 'Minsk';
$labels['tz:europe:monaco'] = 'Monaco';
$labels['tz:europe:moscow'] = 'Moskva';
$labels['tz:europe:oslo'] = 'Oslo';
$labels['tz:europe:paris'] = 'Pariis';
$labels['tz:europe:podgorica'] = 'Podgorica';
$labels['tz:europe:prague'] = 'Praha';
$labels['tz:europe:riga'] = 'Riia';
$labels['tz:europe:rome'] = 'Rooma';
$labels['tz:europe:samara'] = 'Samara';
$labels['tz:europe:san_marino'] = 'San Marino';
$labels['tz:europe:sarajevo'] = 'Sarajevo';
$labels['tz:europe:saratov'] = 'Saratov';
$labels['tz:europe:simferopol'] = 'Simferopol';
$labels['tz:europe:skopje'] = 'Skopje';
$labels['tz:europe:sofia'] = 'Sofia';
$labels['tz:europe:tallinn'] = 'Tallinn';
$labels['tz:europe:tirane'] = 'Tirane';
$labels['tz:europe:ulyanovsk'] = 'Ulyanovsk';
$labels['tz:europe:uzhgorod'] = 'Uzhgorod';
$labels['tz:europe:vatican'] = 'Vatikan';
$labels['tz:europe:vienna'] = 'Viin';
$labels['tz:europe:vilnius'] = 'Vilnius';
$labels['tz:europe:volgograd'] = 'Volgograd';
$labels['tz:europe:warsaw'] = 'Varssavi';
$labels['tz:europe:zagreb'] = 'Zagreb';
$labels['tz:europe:zaporozhye'] = 'Zaporozhye';
$labels['tz:europe:zurich'] = 'Zürich';
$labels['tz:indian'] = 'India';
$labels['tz:indian:antananarivo'] = 'Antananarivo';
$labels['tz:indian:chagos'] = 'Chagos';
$labels['tz:indian:comoro'] = 'Comoro';
$labels['tz:indian:kerguelen'] = 'Kerguelen';
$labels['tz:indian:mahe'] = 'Mahe';
$labels['tz:indian:maldives'] = 'Maldiivid';
$labels['tz:indian:mauritius'] = 'Mauritius';
$labels['tz:indian:reunion'] = 'Reunion';
$labels['tz:pacific:bougainville'] = 'Bougainville';
$labels['tz:pacific:chuuk'] = 'Chuuk';
$labels['tz:pacific:efate'] = 'Efate';
$labels['tz:pacific:enderbury'] = 'Enderbury';
$labels['tz:pacific:fiji'] = 'Fidži';
$labels['tz:pacific:funafuti'] = 'Funafuti';
$labels['tz:pacific:gambier'] = 'Gambier';
$labels['tz:pacific:guadalcanal'] = 'Guadalcanal';
$labels['tz:pacific:kiritimati'] = 'Kiritimati';
$labels['tz:pacific:kosrae'] = 'Kosrae';
$labels['tz:pacific:majuro'] = 'Majuro';
$labels['tz:pacific:marquesas'] = 'Marquesas';
$labels['tz:pacific:midway'] = 'Midway';
$labels['tz:pacific:nauru'] = 'Nauru';
$labels['tz:pacific:niue'] = 'Niue';
$labels['tz:pacific:norfolk'] = 'Norfolk';
$labels['tz:pacific:noumea'] = 'Noumea';
$labels['tz:pacific:pago_pago'] = 'Pago Pago';
$labels['tz:pacific:palau'] = 'Palau';
$labels['tz:pacific:pohnpei'] = 'Ponpei';
$labels['tz:pacific:rarotonga'] = 'Rarotonga';
$labels['tz:pacific:saipan'] = 'Saipan';
$labels['tz:pacific:tahiti'] = 'Tahiti';
$labels['tz:pacific:tongatapu'] = 'Tongatapu';
$labels['tz:pacific:wake'] = 'Wake';
$labels['tz:pacific:wallis'] = 'Wallis';
localization/et_EE/labels.inc000064400000075564151727150600012177 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'Tere tulemast! See on $product.';
$labels['username'] = 'Kasutajanimi';
$labels['password'] = 'Parool';
$labels['server'] = 'Server';
$labels['login'] = 'Logi sisse';
$labels['oauthlogin'] = 'Logi sisse kasutades $provider';
$labels['menu'] = 'Menüü';
$labels['logout'] = 'Logi välja';
$labels['mail'] = 'Postkast';
$labels['settings'] = 'Seaded';
$labels['addressbook'] = 'Aadressiraamat';
$labels['darkmode'] = 'Tume režiim';
$labels['lightmode'] = 'Hele režiim';
$labels['inbox'] = 'Saabuvad';
$labels['drafts'] = 'Mustandid';
$labels['sent'] = 'Saadetud';
$labels['trash'] = 'Prügikast';
$labels['junk'] = 'Rämps';
$labels['show_real_foldernames'] = 'Näita eriliste kaustade päris nimesid';
$labels['subject'] = 'Pealkiri';
$labels['from'] = 'Saatja';
$labels['sender'] = 'Saatja';
$labels['to'] = 'Saaja';
$labels['cc'] = 'Koopia';
$labels['bcc'] = 'Pimekoopia';
$labels['replyto'] = 'Vastus aadressile';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Kuupäev';
$labels['size'] = 'Suurus';
$labels['priority'] = 'Tähtsus';
$labels['organization'] = 'Organisatsioon';
$labels['readstatus'] = 'Lugemise staatus';
$labels['listoptions'] = 'Nimekirja valikud…';
$labels['listoptionstitle'] = 'Nimekirja valikud';
$labels['mailboxlist'] = 'Kaustad';
$labels['messagesfromto'] = 'Kirjed $from kuni $to, kokku $count';
$labels['threadsfromto'] = 'Lõimed $from kuni $to, kokku $count';
$labels['messagenrof'] = 'Kiri $nr, kokku $count';
$labels['fromtoshort'] = '$from – $to kokku $count';
$labels['copy'] = 'Kopeeri';
$labels['move'] = 'Liiguta';
$labels['moveto'] = 'liiguta kausta...';
$labels['copyto'] = 'Kopeeri...';
$labels['download'] = 'laadi arvutisse';
$labels['open'] = 'Ava';
$labels['showattachment'] = 'Näita';
$labels['showanyway'] = 'Näita ikka';
$labels['filename'] = 'Faili nimi';
$labels['filesize'] = 'Faili suurus';
$labels['addtoaddressbook'] = 'Lisa aadressiraamatusse';
$labels['sun'] = 'P';
$labels['mon'] = 'E';
$labels['tue'] = 'T';
$labels['wed'] = 'K';
$labels['thu'] = 'N';
$labels['fri'] = 'R';
$labels['sat'] = 'L';
$labels['sunday'] = 'Pühapäev';
$labels['monday'] = 'Esmaspäev';
$labels['tuesday'] = 'Teisipäev';
$labels['wednesday'] = 'Kolmapäev';
$labels['thursday'] = 'Neljapäev';
$labels['friday'] = 'Reede';
$labels['saturday'] = 'Laupäev';
$labels['jan'] = 'jaan';
$labels['feb'] = 'veebr';
$labels['mar'] = 'märts';
$labels['apr'] = 'apr';
$labels['may'] = 'Mai';
$labels['jun'] = 'juuni';
$labels['jul'] = 'juuli';
$labels['aug'] = 'aug';
$labels['sep'] = 'sept';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dets';
$labels['longjan'] = 'Jaanuar';
$labels['longfeb'] = 'Veebruar';
$labels['longmar'] = 'Märts';
$labels['longapr'] = 'Aprill';
$labels['longmay'] = 'Mai';
$labels['longjun'] = 'Juuni';
$labels['longjul'] = 'Juuli';
$labels['longaug'] = 'August';
$labels['longsep'] = 'September';
$labels['longoct'] = 'Oktoober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Detsember';
$labels['today'] = 'Täna';
$labels['refresh'] = 'Värskenda';
$labels['checkmail'] = 'Kontrolli uusi kirju';
$labels['compose'] = 'Koosta kiri';
$labels['writenewmessage'] = 'Kirjuta uus kiri';
$labels['reply'] = 'Vasta';
$labels['replytomessage'] = 'Vasta kirjale';
$labels['replytoallmessage'] = 'Vasta saatjale ja teistele kirja saanutele';
$labels['replyall'] = 'Vasta kõigile';
$labels['replylist'] = 'Vasta meilinglisti';
$labels['forward'] = 'Edasta';
$labels['forwardinline'] = 'Edasta kirja sees';
$labels['forwardattachment'] = 'Edasta manusena';
$labels['forwardmessage'] = 'Edasta see kiri';
$labels['bounce'] = 'Saada uuesti';
$labels['deletemessage'] = 'Kustuta kiri';
$labels['movemessagetotrash'] = 'Liiguta kiri prügikasti';
$labels['printmessage'] = 'Trüki kiri';
$labels['previousmessage'] = 'Näita eelmist kirja';
$labels['firstmessage'] = 'Näita esimest kirja';
$labels['nextmessage'] = 'Näita järgmist kirja';
$labels['lastmessage'] = 'Näita viimast kirja';
$labels['backtolist'] = 'Tagasi kirjade nimekirja';
$labels['viewsource'] = 'Näita lähtekoodi';
$labels['mark'] = 'Märgista';
$labels['markmessages'] = 'Märgi kirjad';
$labels['markread'] = 'Loetuks';
$labels['markunread'] = 'Mitte loetuks';
$labels['markflagged'] = 'Lisa lipik';
$labels['markunflagged'] = 'Eemalda lipik';
$labels['moreactions'] = 'Muud toimingud...';
$labels['markallread'] = 'Märgi kõik loetuks';
$labels['folders-cur'] = 'Valitud kaustad ainult';
$labels['folders-sub'] = 'Valitud kaustad ja selle alamkaustad';
$labels['folders-all'] = 'Kõik kaustad';
$labels['more'] = 'Rohkem';
$labels['back'] = 'Tagasi';
$labels['options'] = 'Valikud';
$labels['composeoptions'] = 'Koostamise valikud';
$labels['optionsandattachments'] = 'Valikud ja manused';
$labels['actions'] = 'Tegevused';
$labels['first'] = 'Esimene';
$labels['last'] = 'Viimane';
$labels['previous'] = 'Eelmine';
$labels['next'] = 'Järgmine';
$labels['select'] = 'Vali';
$labels['selection'] = 'Valik';
$labels['all'] = 'kõik';
$labels['none'] = 'Puudub';
$labels['currpage'] = 'Praegune leht';
$labels['isread'] = 'Loe';
$labels['unread'] = 'Lugemata';
$labels['flagged'] = 'Märgistatud';
$labels['unflagged'] = 'Märgistamatta';
$labels['unanswered'] = 'Vastamata';
$labels['withattachment'] = 'Koos manusega';
$labels['deleted'] = 'Kustutatud';
$labels['undeleted'] = 'Pole kustutatud';
$labels['replied'] = 'Vastatud';
$labels['forwarded'] = 'Edastatud';
$labels['invert'] = 'Vaheta';
$labels['filter'] = 'Filtreeri';
$labels['list'] = 'Nimekiri';
$labels['threads'] = 'Lõimed';
$labels['expand-all'] = 'Laienda kõik';
$labels['expand-unread'] = 'Laienda lugemata';
$labels['collapse-all'] = 'Pane kõik kokku';
$labels['threaded'] = 'Lõimedena';
$labels['showunread'] = 'Näita lugemata sõnumeid';
$labels['autoexpand_threads'] = 'Laienda kirjade lõimed';
$labels['do_expand'] = 'kõik lõimed';
$labels['expand_only_unread'] = 'ainult lugemata kirjadega';
$labels['fromto'] = 'Saatja/saaja';
$labels['flag'] = 'Märgista';
$labels['attachment'] = 'Manus';
$labels['nonesort'] = 'Puudub';
$labels['sentdate'] = 'Saatmise kuupäev';
$labels['arrival'] = 'Saamise kuupäev';
$labels['asc'] = 'kasvavalt';
$labels['desc'] = 'kahanevalt';
$labels['listcolumns'] = 'Näita veerge';
$labels['listsorting'] = 'Järjestus veerg';
$labels['listorder'] = 'Järjestus suund';
$labels['listmode'] = 'Nimekirja vaatamise režiim';
$labels['lmode'] = 'Nimekirja režiim';
$labels['layout'] = 'Paigutus';
$labels['layoutwidescreen'] = 'Laiekraan';
$labels['layoutdesktop'] = 'Lauaarvuti';
$labels['layoutlist'] = 'Nimekiri';
$labels['layoutwidescreendesc'] = 'Laiekraan (3-paani vaade)';
$labels['layoutdesktopdesc'] = 'Töölaud (lai nimekiri ja kirja ülevaade allpool)';
$labels['layoutlistdesc'] = 'Nimekiri (kirja ülevaadet ei ole)';
$labels['folderactions'] = 'Kausta tegevused...';
$labels['compact'] = 'Tihenda';
$labels['empty'] = 'Tühjenda';
$labels['importmessages'] = 'Impordi kirju';
$labels['mailimportdesc'] = 'Saate ülesse laadida faile, mis on <a href="https://en.wikipedia.org/wiki/Email#Message_format">MIME</a> või <a href="https://en.wikipedia.org/wiki/Mbox">Mbox</a> formaadis.';
$labels['mailimportzip'] = 'Mitut faili on võimalik kokku pakkida zip arhiiviks.';
$labels['quota'] = 'Kettakasutus';
$labels['unknown'] = 'teadmata';
$labels['unlimited'] = 'piiramatu';
$labels['quotatype'] = 'Piirangu tüüp';
$labels['quotatotal'] = 'Limiit';
$labels['quotaused'] = 'Kasutatud';
$labels['quotastorage'] = 'Ketta ruum';
$labels['quotamessage'] = 'Kirjade arv';
$labels['shortheaderdate'] = 'Kuupäeval $date';
$labels['shortheaderto'] = 'Saajale $to päeval $date';
$labels['shortheaderfrom'] = 'Saatjalt $from päeval $date';
$labels['quicksearch'] = 'Kiirotsing';
$labels['searchplaceholder'] = 'Otsimine...';
$labels['resetsearch'] = 'Lähtesta otsing';
$labels['searchmod'] = 'Otsingu laiendid';
$labels['msgtext'] = 'Kogu kirjast';
$labels['body'] = 'Keha';
$labels['type'] = 'Tüüp';
$labels['namex'] = 'Nimi';
$labels['searchscope'] = 'Skoop';
$labels['currentfolder'] = 'Käesolev kaust';
$labels['subfolders'] = 'See ja alamkaust';
$labels['allfolders'] = 'Kõik kaustad';
$labels['searchinterval-1W'] = 'vanemad kui nädal';
$labels['searchinterval-1M'] = 'vanemad kui kuu';
$labels['searchinterval-1Y'] = 'vanemad kui aasta';
$labels['searchinterval1W'] = 'värskemad kui nädal';
$labels['searchinterval1M'] = 'värskemad kui kuu';
$labels['searchinterval1Y'] = 'värskemad kui aasta';
$labels['openinextwin'] = 'Ava uues aknas';
$labels['emlsave'] = 'Salvesta (.eml)';
$labels['changeformattext'] = 'Näita lihttekstina';
$labels['changeformathtml'] = 'Näita HTMLis';
$labels['editasnew'] = 'Kasuta uue kirja põhjana';
$labels['send'] = 'Saada';
$labels['sendmessage'] = 'Saada kiri kohe';
$labels['savemessage'] = 'Salvesta mustand';
$labels['addattachment'] = 'Lisa fail';
$labels['charset'] = 'Märgistik';
$labels['editortype'] = 'Redaktori tüüp';
$labels['returnreceipt'] = 'Kättesaamiskinnitus';
$labels['dsn'] = 'Kohalejõudmise teavitus';
$labels['mailreplyintro'] = '$date kirjutas $sender:';
$labels['originalmessage'] = 'Esialgne kiri';
$labels['selectimage'] = 'Vali pilt';
$labels['addimage'] = 'Lisa pilt';
$labels['selectmedia'] = 'Vali film';
$labels['addmedia'] = 'Lisa film';
$labels['encrypt'] = 'Krüpti';
$labels['encryptmessage'] = 'Krüpti kiri';
$labels['encryptmessagemailvelope'] = 'Krüpteeri kiri kasutades Mailvelope';
$labels['importpubkeys'] = 'Impordi avalikud võtmed';
$labels['encryptedsendialog'] = 'Saadan krüptitud kirja';
$labels['encryptandsign'] = 'Krüpteeri ja allkirjasta';
$labels['keyid'] = 'Võtme ID';
$labels['keylength'] = 'Bitte';
$labels['keyexpired'] = 'Aegunud';
$labels['keyrevoked'] = 'Tühistatud';
$labels['bccinstead'] = 'Kasuta Pimekoopiat';
$labels['addheader'] = 'Lisa saaja (päis)';
$labels['insert'] = 'Lisa';
$labels['insertcontact'] = 'Lisa kontakt(id)';
$labels['recipient'] = 'Saaja';
$labels['recipientedit'] = 'Saaja muutmine';
$labels['editidents'] = 'Muuda Identiteete';
$labels['spellcheck'] = 'Õigekiri';
$labels['checkspelling'] = 'Kontrolli õigekirja';
$labels['resumeediting'] = 'Jätka muutmist';
$labels['revertto'] = 'Pööra tagasi';
$labels['restore'] = 'Taasta';
$labels['restoremessage'] = 'Taasta kiri?';
$labels['ignore'] = 'Igroneeri';
$labels['responses'] = 'Vastused';
$labels['insertresponse'] = 'Lisa vastus';
$labels['manageresponses'] = 'Halda vastuseid';
$labels['newresponse'] = 'Loo uus vastus';
$labels['addresponse'] = 'Lisa vastus';
$labels['editresponse'] = 'Muuda vastust';
$labels['editresponses'] = 'Muuda vastuseid';
$labels['responsename'] = 'Nimi';
$labels['responsetext'] = 'Vastuse sisu';
$labels['attach'] = 'Manusta';
$labels['attachments'] = 'Manused';
$labels['upload'] = 'Kinnita manus';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = 'Sulge';
$labels['messageoptions'] = 'Kirja valikud...';
$labels['togglecomposeoptions'] = 'Muuda koostamise valikuid';
$labels['attachmentrename'] = 'Nimeta manus ümber';
$labels['low'] = 'Madal';
$labels['lowest'] = 'Madalaim';
$labels['normal'] = 'Tavaline';
$labels['high'] = 'Kõrge';
$labels['highest'] = 'Kõrgeim';
$labels['nosubject'] = '(teema puudub)';
$labels['showimages'] = 'Näita pilte';
$labels['allow'] = 'Luba';
$labels['alwaysshow'] = 'Näita alati $sender saadetud pilte';
$labels['alwaysallow'] = 'Alati luba $sender';
$labels['isdraft'] = 'See on mustand.';
$labels['andnmore'] = '$nr veel…';
$labels['details'] = 'Detailid';
$labels['summary'] = 'Kokkuvõte';
$labels['headers'] = 'Päised';
$labels['allheaders'] = 'Kõik päised...';
$labels['togglemoreheaders'] = 'Näita rohkem kirja päiseid';
$labels['togglefullheaders'] = 'Näita/peida algseid päiseid';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Lihttekst';
$labels['savesentmessagein'] = 'Salvesta saadetud kirjad kausta';
$labels['dontsave'] = 'ära salvesta';
$labels['maxuploadsize'] = 'Faili maksimaalne lubatud suurus on $size';
$labels['addcc'] = 'Lisa koopia';
$labels['addbcc'] = 'Lisa pimekoopia';
$labels['addreplyto'] = 'Lisa vastus aadressile';
$labels['addfollowupto'] = 'Lisa Followup-To';
$labels['sendreceipt'] = 'Kas saata lugemise kinnitus?';
$labels['mdnrequest'] = 'Selle kirja saatja soovib saada kinnitust kirja lugemise kohta. Kas soovid kinnituse saata?';
$labels['receiptread'] = 'Kättesaamiskinnitus (loetud)';
$labels['yourmessage'] = 'See on sinu saadetud kirja kättesaamiskinnitus';
$labels['receiptnote'] = 'Märkus: Kättesaamiskinnituse saamine tähendab ainult seda, et saaja on kirja avanud. Pole mingit garantiid, et ta kirja tegelikult luges ja selle sisust aru sai.';
$labels['sendalwaysto'] = 'Saada alati e-postile $email';
$labels['zoomin'] = 'Suurenda';
$labels['zoomout'] = 'Vähenda';
$labels['rotate'] = 'Keera';
$labels['increaseimage'] = 'Suurenda pildi suurust';
$labels['decreaseimage'] = 'Vähenda pildi suurust';
$labels['rotateimage'] = 'Keera pilti';
$labels['showtools'] = 'Kuva pildi tööriistad';
$labels['hidetools'] = 'Peida pildi tööriistad';
$labels['name'] = 'Näidatav nimi';
$labels['firstname'] = 'Eesnimi';
$labels['surname'] = 'Perekonnanimi';
$labels['middlename'] = 'Keskmine nimi';
$labels['nameprefix'] = 'Eesliide';
$labels['namesuffix'] = 'Järelliide';
$labels['nickname'] = 'Hüüdnimi';
$labels['jobtitle'] = 'Töökoht';
$labels['department'] = 'Osakond';
$labels['gender'] = 'Sugu';
$labels['maidenname'] = 'Neiupõlve nimi';
$labels['email'] = 'E-post';
$labels['phone'] = 'Telefon';
$labels['address'] = 'Aadress';
$labels['street'] = 'Tänav';
$labels['locality'] = 'Linn';
$labels['zipcode'] = 'Postiindeks';
$labels['region'] = 'Piirkond';
$labels['country'] = 'Riik';
$labels['birthday'] = 'Sünnipäev';
$labels['anniversary'] = 'Tähtpäev';
$labels['website'] = 'Veebileht';
$labels['instantmessenger'] = 'Kiirsuhtlus';
$labels['notes'] = 'Märkused';
$labels['male'] = 'mees';
$labels['female'] = 'naine';
$labels['manager'] = 'Juht';
$labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Abikaasa';
$labels['allfields'] = 'Kõik väljad';
$labels['search'] = 'Otsi';
$labels['searchresult'] = 'Otsingutulemused';
$labels['advsearch'] = 'Täpsem otsing';
$labels['advanced'] = 'Edasijõudnutele';
$labels['other'] = 'Muu';
$labels['printcontact'] = 'Prindi kontakt';
$labels['qrcode'] = 'QR kood';
$labels['typehome'] = 'Kodu';
$labels['typework'] = 'Töö';
$labels['typeother'] = 'Muu';
$labels['typemobile'] = 'Mobiil';
$labels['typemain'] = 'Peamine';
$labels['typehomefax'] = 'Kodune fax';
$labels['typeworkfax'] = 'Töö fax';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Piipar';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Veebileht';
$labels['typeblog'] = 'Ajaveeb';
$labels['typeprofile'] = 'Profiil';
$labels['addfield'] = 'Lisa väli...';
$labels['addcontact'] = 'Lisa kontakt';
$labels['editcontact'] = 'Muuda kontakti';
$labels['contacts'] = 'Kontaktid';
$labels['contactproperties'] = 'Kontakti omadused';
$labels['contactnameandorg'] = 'Nimi ja Organisatsioon';
$labels['personalinfo'] = 'Isiklik info';
$labels['personal'] = 'Isiklik';
$labels['contactphoto'] = 'Kontakti pilt';
$labels['edit'] = 'Muuda';
$labels['cancel'] = 'Katkesta';
$labels['save'] = 'Salvesta';
$labels['delete'] = 'Kustuta';
$labels['discard'] = 'Loobu';
$labels['continue'] = 'Jätka';
$labels['ok'] = 'OK';
$labels['rename'] = 'Nimeta ümber';
$labels['addphoto'] = 'Lisa';
$labels['replacephoto'] = 'Asenda';
$labels['uploadphoto'] = 'Lisa foto';
$labels['choosefile'] = 'Vali fail...';
$labels['choosefiles'] = 'Vali failid...';
$labels['browse'] = 'Sirvi';
$labels['newcontact'] = 'Loo uus kontakt';
$labels['deletecontact'] = 'Kustuta märgistatud kontaktid';
$labels['composeto'] = 'Kirjuta kiri';
$labels['contactsfromto'] = 'Kirjed $from kuni $to, kokku $count';
$labels['print'] = 'Trüki';
$labels['export'] = 'Ekspordi';
$labels['exportall'] = 'Ekspordi kõik';
$labels['exportsel'] = 'Ekspordi valitud';
$labels['exportvcards'] = 'Ekspordi kontaktid vCardi formaadis';
$labels['newgroup'] = 'Loo uus grupp';
$labels['addgroup'] = 'Lisa grupp';
$labels['grouprename'] = 'Nimeta grupp ümber';
$labels['groupdelete'] = 'Kustuta grupp';
$labels['groupassign'] = 'Lisa gruppi';
$labels['groupremove'] = 'Eemalda grupist';
$labels['groupremoveselected'] = 'Eemalda valitud kontaktid grupist';
$labels['uponelevel'] = 'Üks tase kõrgemale';
$labels['previouspage'] = 'Näita eelmist lehte';
$labels['firstpage'] = 'Näita esimest komplekti';
$labels['nextpage'] = 'Näita järgmist lehte';
$labels['lastpage'] = 'Näita viimast komplekti';
$labels['group'] = 'Grupp';
$labels['groups'] = 'Grupid';
$labels['listgroup'] = 'Näita grupi liikmeid';
$labels['personaladrbook'] = 'Isiklikud aadressid';
$labels['searchsave'] = 'Salvesta otsing';
$labels['searchdelete'] = 'Kustuta otsing';
$labels['import'] = 'Impordi';
$labels['importcontacts'] = 'Impordi kontakte';
$labels['importfromfile'] = 'Impordi failist';
$labels['importtarget'] = 'Lisa kontaktid ';
$labels['importreplace'] = 'Asenda kogu aadressiraamat';
$labels['importgroups'] = 'Impordi grupi ülessanded';
$labels['importgroupsall'] = 'Kõik (loo vajadusel grupid)';
$labels['importgroupsexisting'] = 'Ainult olemasolevatele gruppidele';
$labels['importdesc'] = 'Saate ülesse laadida kontakte olemasolevast aadressi raamatust. <br/>Hetkel on toetatud aadresside importimine <a href="https://en.wikipedia.org/wiki/VCard">vCard</a>või CSV(komaga eraldatud) andmete formaadis. ';
$labels['fieldnotmapped'] = 'Väli pole seotud (ära impordi)';
$labels['skipheader'] = 'Ära impordi esimest rida (päis)';
$labels['done'] = 'Valmis';
$labels['settingsfor'] = 'Kasutajaeelistused kontole';
$labels['about'] = 'Programmist lähemalt';
$labels['preferences'] = 'Eelistused';
$labels['userpreferences'] = 'Kasutaja eelistused';
$labels['editpreferences'] = 'Muuda kasutaja eelistusi';
$labels['identities'] = 'Identiteedid';
$labels['manageidentities'] = 'Halda identiteete';
$labels['newidentity'] = 'Loo uus identiteet';
$labels['addidentity'] = 'Lisa identiteet';
$labels['editidentity'] = 'Muuda identiteeti';
$labels['identityencryption'] = 'Krüpteerimine';
$labels['preferhtml'] = 'Eelista HTMLi';
$labels['defaultcharset'] = 'Vaikimisi märgistik';
$labels['htmlmessage'] = 'HTML kirjad';
$labels['messagepart'] = 'Osa';
$labels['digitalsig'] = 'Digitaalne allkiri';
$labels['dateformat'] = 'Kuupäeva vorming';
$labels['timeformat'] = 'Aja vorming';
$labels['prettydate'] = 'Kenad kuupäevad';
$labels['setdefault'] = 'Muuda vaikeseadeks';
$labels['autodetect'] = 'Automaatne';
$labels['language'] = 'Keel';
$labels['timezone'] = 'Ajavöönd';
$labels['pagesize'] = 'Ridu lehe kohta';
$labels['signature'] = 'Allkiri';
$labels['dstactive'] = 'Suveaeg';
$labels['showinextwin'] = 'Ava kiri uues aknas';
$labels['composeextwin'] = 'Koosta uues aknas';
$labels['htmleditor'] = 'Kasuta HTML redaktorit';
$labels['htmlonreply'] = 'vaid HTML-vormingus kirjale vastamisel';
$labels['htmlonreplyandforward'] = 'edastamisel või HTML kirjale vastates';
$labels['htmlsignature'] = 'HTML allkiri';
$labels['showemail'] = 'Näita nime juures e-posti aadressi';
$labels['previewpane'] = 'Näita eelvaate akent';
$labels['skin'] = 'Kliendi välimus';
$labels['logoutclear'] = 'Tühjenda väljumisel prügikast';
$labels['logoutcompact'] = 'Tihenda väljumisel sissetulevate kaust';
$labels['uisettings'] = 'Kasutajaliides';
$labels['serversettings'] = 'Serveri seaded';
$labels['mailboxview'] = 'Postkasti vaade';
$labels['mdnrequests'] = 'Kättesaamiskinnitus';
$labels['askuser'] = 'küsi kasutajalt';
$labels['autosend'] = 'saada automaatselt';
$labels['autosendknown'] = 'saada automaatselt minu kontaktidele, teised küsi üle';
$labels['autosendknownignore'] = 'saada automaatselt minu kontaktidele, teisi ignoreeri';
$labels['ignorerequest'] = 'eira palvet';
$labels['readwhendeleted'] = 'Märgi kiri kustutamisel loetuks';
$labels['flagfordeletion'] = 'Kustutamise asemel märgi kiri kustutatavaks';
$labels['skipdeleted'] = 'Ära näita kustutatud kirju';
$labels['deletealways'] = 'Kui kirjade prügikasti liigutamine nurjub, siis kustuta need';
$labels['deletejunk'] = 'Kustuta Rämps kaustas olevad kirjad kohe';
$labels['showremoteimages'] = 'Näita kirjas kaugelt kaasatud pilte';
$labels['fromknownsenders'] = 'tuntud saatjatelt';
$labels['fromtrustedsenders'] = 'usaldusväärsetelt saatjatelt';
$labels['frommycontacts'] = 'minu kontaktidelt';
$labels['always'] = 'alati';
$labels['alwaysbutplain'] = 'alati, välja arvatud lihttekstile vastates';
$labels['showinlineimages'] = 'Näita manustatud pilte kirja all';
$labels['autosavedraft'] = 'Salvesta mustandid automaatselt';
$labels['everynminutes'] = 'iga $n minuti tagant';
$labels['refreshinterval'] = 'Värskenda (kontrolli uusi kirju, jne.)';
$labels['never'] = 'mitte kunagi';
$labels['immediately'] = 'otsekohe';
$labels['messagesdisplaying'] = 'Kirjade näitamine';
$labels['messagescomposition'] = 'Kirja koostamine';
$labels['mimeparamfolding'] = 'Manuste nimed';
$labels['2231folding'] = 'Täielik RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Täielik RFC 2047 (muu)';
$labels['force7bit'] = '8-bitiste märkide puhul kasuta MIME kodeerimist';
$labels['savelocalstorage'] = "Salvesta veebilehitseja kohalikku hoidlasse (ajutiselt)";
$labels['advancedoptions'] = 'Lisaseadistused';
$labels['toggleadvancedoptions'] = 'Näita lisaseadistusi';
$labels['focusonnewmessage'] = 'Fookusta brauseri aken uue kirja korral';
$labels['checkallfolders'] = 'Kontrolli uusi kirju kõigist kaustadest';
$labels['displaynext'] = 'Näita pärast kustutamist või liigutamist järgmist sissekannet nimekirjas';
$labels['defaultfont'] = 'HTML kirjade vaikefont';
$labels['mainoptions'] = 'Peamised valikud';
$labels['browseroptions'] = 'Sirvimis valikud';
$labels['section'] = 'Osa';
$labels['maintenance'] = 'Hooldus';
$labels['newmessage'] = 'Uus kiri';
$labels['signatureoptions'] = 'Allkirja valikud';
$labels['whenreplying'] = 'Vastates';
$labels['replyempty'] = 'ära tsiteeri esialgset kirja';
$labels['replytopposting'] = 'alusta uue kirjaga esialgse kohal';
$labels['replybottomposting'] = 'alusta uue kirjaga esialgse all';
$labels['replyremovesignature'] = 'Vastates eemalda kirjast esialgne allkiri';
$labels['autoaddsignature'] = 'Lisa allkiri automaatselt';
$labels['newmessageonly'] = 'ainult uutele';
$labels['replyandforwardonly'] = 'ainult vastates ja edastades';
$labels['insertsignature'] = 'Sisesta allkiri';
$labels['sigbelow'] = 'Pane allkiri tsiteeritud kirja alla';
$labels['automarkread'] = 'Märgi sõnum loetuks';
$labels['afternseconds'] = '$n sekundi pärast';
$labels['reqmdn'] = 'Nõua alati kättesaamiskinnitust';
$labels['reqdsn'] = 'Nõua alati kohalejõudmisteavitust';
$labels['replysamefolder'] = 'Paiguta vastused samasse kausta, millele vastatakse';
$labels['defaultabook'] = 'Vaikimisi aadressiraamat';
$labels['autocompletesingle'] = 'Automaatlõpetuses jäta alternatiivne e-posti aadress vahele';
$labels['listnamedisplay'] = 'Näita kontakte kui';
$labels['contactformmode'] = 'Konktaktivormi režiim';
$labels['privatemode'] = 'Privaatne (kodu)';
$labels['businessmode'] = 'Töö (Kontor)';
$labels['collectedaddresses'] = 'Kogutud aadressid';
$labels['collectedrecipients'] = 'Kogutud saajad';
$labels['collectedrecipientsopt'] = 'Salvesta väljuvad kontaktid:';
$labels['collectedsendersopt'] = 'Salvesta usaldusväärsed saatjad:';
$labels['trustedsenders'] = 'Usaldusväärsed saatjad';
$labels['spellcheckbeforesend'] = 'Kontrolli õigekirja enne saatmist';
$labels['spellcheckoptions'] = 'Õigekirjakontrolli valikud';
$labels['spellcheckignoresyms'] = 'Ignoreeri sõnu, milles on sümbolid';
$labels['spellcheckignorenums'] = 'Ignoreeri sõnu, milles on numbreid';
$labels['spellcheckignorecaps'] = 'Ignoreeri suurte tähtedega kirjutatud sõnu';
$labels['addtodict'] = 'Lisa sõnastikku';
$labels['mailtoprotohandler'] = 'Kasuta mailto: linkide avamisel';
$labels['standardwindows'] = 'Käsitle hüpikaknaid tavaliste akendena';
$labels['forwardmode'] = 'Kirja edastamine';
$labels['inline'] = 'kirja sees';
$labels['asattachment'] = 'manusena';
$labels['replyallmode'] = 'Vaike käitumine [Vasta kõigile] nupul';
$labels['replyalldefault'] = 'Vasta kõigile';
$labels['replyalllist'] = 'vasta ainult postiloendile (juhul kui leitud)';
$labels['allmessages'] = 'kõik kirjad';
$labels['folder'] = 'Kaust';
$labels['folders'] = 'Kaustad';
$labels['foldername'] = 'Kausta nimi';
$labels['subscribed'] = 'Näitan';
$labels['messagecount'] = 'Kirju';
$labels['create'] = 'Loo';
$labels['createfolder'] = 'Uue kausta loomine';
$labels['managefolders'] = 'Halda kaustu';
$labels['specialfolders'] = 'Erilised kaustad';
$labels['properties'] = 'Omadused';
$labels['folderproperties'] = 'Kausta omadused';
$labels['parentfolder'] = 'Ülemine kaust';
$labels['location'] = 'Asukoht';
$labels['info'] = 'Teave';
$labels['getfoldersize'] = 'Kliki kausta suuruse teadasaamiseks';
$labels['changesubscription'] = 'Kliki kausta tellimuste muutmiseks';
$labels['foldertype'] = 'Kausta tüüp';
$labels['personalfolder'] = 'Isiklik kaust';
$labels['otherfolder'] = 'Teiste kasutajate kaust';
$labels['sharedfolder'] = 'Avalik kaust';
$labels['findfolders'] = 'Otsi kaustasi';
$labels['findcontacts'] = 'Otsi kontakte';
$labels['findmail'] = 'Otsi maile';
$labels['namespace.personal'] = 'Isiklik';
$labels['namespace.other'] = 'Teised kasutajad';
$labels['namespace.shared'] = 'Jagatud';
$labels['dualuselabel'] = 'Võib sisaldada ainult';
$labels['dualusemail'] = 'sõnumid';
$labels['dualusefolder'] = 'Kataloogid';
$labels['generate'] = 'Genereeri';
$labels['encryptioncreatekey'] = 'Loo uus võtme paar';
$labels['openmailvelopesettings'] = 'Ava Mailvelope seaded';
$labels['encryption'] = 'Krüpteerimine';
$labels['mailvelopeoptions'] = 'Mailvelope valikud';
$labels['mailvelopemainkeyring'] = 'Kasuta Mailvelope peamist võtmerõngast';
$labels['sortby'] = 'Järjesta';
$labels['sortasc'] = 'Järjesta kasvavalt';
$labels['sortdesc'] = 'Järjesta kahanevalt';
$labels['undo'] = 'Võta tagasi';
$labels['installedplugins'] = 'Paigaldatud pluginad';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versioon';
$labels['source'] = 'Allikas';
$labels['destination'] = 'Sihtkoht';
$labels['license'] = 'Litsents';
$labels['support'] = 'Küsi abi';
$labels['savedsearches'] = 'Salvestatud otsingud';
$labels['dateformatY'] = 'YYYY';
$labels['dateformaty'] = 'YY';
$labels['dateformatm'] = 'MM';
$labels['dateformatd'] = 'DD';
$labels['dateformatj'] = 'D';
$labels['dateformatn'] = 'M';
$labels['B'] = 'B';
$labels['KB'] = 'KiB';
$labels['MB'] = 'MiB';
$labels['GB'] = 'GiB';
$labels['unicode'] = 'Unicode';
$labels['english'] = 'inglise';
$labels['westerneuropean'] = 'Lääne-Euroopa';
$labels['easterneuropean'] = 'Ida-Euroopa';
$labels['southeasterneuropean'] = 'Kagu-Euroopa';
$labels['baltic'] = 'balti';
$labels['cyrillic'] = 'kirillitsa';
$labels['arabic'] = 'araabia';
$labels['greek'] = 'kreeka';
$labels['hebrew'] = 'heebrea';
$labels['turkish'] = 'türgi';
$labels['nordic'] = 'põhjamaa';
$labels['thai'] = 'tai';
$labels['celtic'] = 'keldi';
$labels['vietnamese'] = 'vietnami';
$labels['japanese'] = 'jaapani';
$labels['korean'] = 'korea';
$labels['chinese'] = 'hiina';
$labels['arialabeltopnav'] = 'Akna kontroll';
$labels['arialabeltasknav'] = 'Rakenduse ülesanded';
$labels['arialabeltoolbar'] = 'Rakenduse tööriba';
$labels['arialabelactivetask'] = 'Aktiivne ülesanne';
$labels['arialabelmessagessearchfilter'] = 'E-kirja näitamise filter';
$labels['arialabelmailsearchform'] = 'E-kirja otsimise vorm';
$labels['arialabelcontactsearchform'] = 'Kontakti otsimise vorm';
$labels['arialabelmailquicksearchbox'] = 'E-kirja otsingu sisend';
$labels['arialabelquicksearchbox'] = 'Otsingu sisend';
$labels['arialabelfoldersearchfilter'] = 'Kausta näitamise filter';
$labels['arialabelfoldersearchform'] = 'Kausta otsimise vorm';
$labels['arialabelfolderlist'] = 'E-kirja kausta valik';
$labels['arialabelmessagelist'] = 'E-kirjade näitamine';
$labels['arialabelmailpreviewframe'] = 'Kirja eelvaade';
$labels['arialabelmailboxmenu'] = 'Kausta tegevuste menüü';
$labels['arialabellistselectmenu'] = 'Nimekirja valiku menüü';
$labels['arialabelthreadselectmenu'] = 'Lõimede näitamise menüü';
$labels['arialabelmessagelistoptions'] = 'Kirjade näitamise ja sorteerimise võimalused';
$labels['arialabelmailimportdialog'] = 'Kirja importi dialoog';
$labels['arialabelmessagenav'] = 'Kirja navigatsioon';
$labels['arialabelmessagebody'] = 'Kirja sisu';
$labels['arialabelmessageactions'] = 'Kirja tegevus';
$labels['arialabelcontactquicksearch'] = 'Kontakti otsingu vorm';
$labels['arialabelcontactsearchbox'] = 'Kontakti otsingu sisend';
$labels['arialabelmessageheaders'] = 'Kirja päis';
$labels['arialabelforwardingoptions'] = 'Edasisuunamise valikud';
$labels['arialabelreplyalloptions'] = 'Vasta kõigile valikud';
$labels['arialabelmoremessageactions'] = 'Rohkem kirja tegevusi';
$labels['arialabelmorecontactactions'] = 'Veel kontakti tegevusi';
$labels['arialabelmarkmessagesas'] = 'Märgi valitud kirjad';
$labels['arialabelcomposeoptions'] = 'Koostamise valikud';
$labels['arialabelresponsesmenu'] = 'Vastuse mallide menüü';
$labels['arialabelattachmentuploadform'] = 'Manuse ülesselaadimise vorm';
$labels['arialabelattachmentmenu'] = 'Manuse valikud';
$labels['arialabelmailtomenu'] = 'Meiliaadressi valikud';
$labels['arialabelattachmentpreview'] = 'Manuse eelvaade';
$labels['ariasummarycomposecontacts'] = 'Nimekiri kontaktidest ja gruppidest keda valida vastuvõtjateks';
$labels['arialabelcontactexportoptions'] = 'Kontakti ekspordi võimalused';
$labels['arialabelabookgroupoptions'] = 'Telefoniraamatu/grupi võimalused';
$labels['arialabelpreferencesform'] = 'Eelistuste vorm';
$labels['arialabelidentityeditfrom'] = 'Identiteedi muutmis vorm';
$labels['arialabelresponseeditfrom'] = 'Vastuse muutmis vorm';
$labels['arialabelsearchterms'] = 'Otsingusõnad';
$labels['arialabelimagetools'] = 'Pildi tööriistad';
$labels['helplistnavigation'] = 'Näita klaviatuuri navigatsiooni';
$labels['helplistkeyboardnavigation'] = "Nooled üles/alla: Muuda rida fokuseeri/vali
Tühik: Vali fokuseeritud rida
Shift + üles/alla: Vali lisaks rida alt/ülevalt
Ctrl + Space: Lisa fokuseeritud rida valikusse/eemalda valikust";
$labels['helplistkeyboardnavmessages'] = "Nooled paremale/vasakule: laienda/peida kirjade lõimed
Enter: Ava valitud/fokuseeritud kiri
Delete: Liigutda valitud kiri prügikasti.";
$labels['helplistkeyboardnavcontacts'] = "Enter: Ava valitud/fokuseeritud kontakt";
localization/et_EE/messages.inc000064400000035140151727150600012526 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'Ilmnes tõrge!';
$messages['loginfailed']  = 'Sisselogimine ebaõnnestus.';
$messages['cookiesdisabled'] = 'Sinu veebilehitseja ei võta präänikuid vastu';
$messages['sessionerror'] = 'Sinu seanss on aegunud või vigane';
$messages['cookiesmismatch'] = 'Tuvastatud küpsise sobimatus. Tühjenda oma brauseri küpsised.';
$messages['storageerror'] = 'Ei õnnestunud IMAP serveriga ühendust luua';
$messages['servererror'] = 'Serveri tõrge!';
$messages['servererrormsg'] = 'Serveri tõrge: $msg';
$messages['accountlocked'] = 'Liiga palju ebaõnnestunud sisselogimiskatseid. Proovi hiljem uuesti.';
$messages['connerror'] = 'Viga ühenduses (Ei suutnud luua ühendust serveriga)';
$messages['dberror'] = 'Andmebaasi tõrge!';
$messages['windowopenerror'] = 'Hüpikaken blokeeriti!';
$messages['requesttimedout'] = 'Päring aegus';
$messages['errorreadonly'] = 'Operatsioon nurjus. Kaustale on vaid lugemisõigus';
$messages['errornoperm'] = 'Operatsioon nurjus. Ligipääsu õigused puuduvad';
$messages['erroroverquota'] = 'Operatsioon nurjus. Ketas on täis.';
$messages['erroroverquotadelete'] = 'Ketas on täis. Kirja kustutamiseks vajuta SHIFT+DEL.';
$messages['invalidrequest'] = 'Lubamatu päring! Andmeid ei salvestatud.';
$messages['invalidhost'] = 'Lubamatu serveri nimi.';
$messages['nomessagesfound'] = 'Postkast paistab tühi olevat';
$messages['loggedout'] = 'Oled sessiooni edukalt lõpetanud. Nägemist!';
$messages['mailboxempty'] = 'Postkast on tühi';
$messages['nomessages'] = 'Pole teateid';
$messages['refreshing'] = 'Värskendamine…';
$messages['loading'] = 'Laadin...';
$messages['uploading'] = 'Laadin faili üles...';
$messages['attaching'] = 'Lisan faili...';
$messages['uploadingmany'] = 'Failide üleslaadimine...';
$messages['loadingdata'] = 'Andmete laadimine...';
$messages['checkingmail'] = 'Kontrollin uusi kirju...';
$messages['sendingmessage'] = 'Saadan kirja...';
$messages['messagesent'] = 'Kiri edukalt saadetud';
$messages['savingmessage'] = 'Salvestan kirja...';
$messages['messagesaved'] = 'Kiri salvestatud mustanditesse';
$messages['successfullysaved'] = 'Edukalt salvestatud';
$messages['savingresponse'] = 'Salvestan vastuse teksti...';
$messages['deleteresponseconfirm'] = 'Soovid valitud vastuse kustutada?';
$messages['nocontactselected'] = 'Sa ei ole veel kontakti valinud';
$messages['addedsuccessfully'] = 'Kontakt lisati edukalt aadressiraamatusse';
$messages['contactexists'] = 'Sama e-posti aadressiga kontakt on juba olemas.';
$messages['contactnameexists'] = 'Sama nimega kontakt on juba olemas.';
$messages['blockedimages'] = 'Sinu privaatsuse kaitsmiseks on selles kirjas välised pildid blokeeritud.';
$messages['blockedresources'] = 'Sinu privaatsuse kaitsmiseks on kaugressursid blokeeritud.';
$messages['encryptedmessage'] = 'See on krüpteeritud kiri ja kahjuks pole seda võimalik näidata. Andestust!';
$messages['externalmessagedecryption'] = 'See on krüptitud kiri ja selle saab teie brauserilaiendiga dekrüpteerida.';
$messages['nopubkeyfor'] = 'Ei leitud ühtegi kehtivat avalikku $email võtit';
$messages['nocontactsfound'] = 'Ei leitud ühtegi kontakti';
$messages['contactnotfound'] = 'Otsitud kontakti ei leitud';
$messages['contactsearchonly'] = 'Valitud aadressiraamatus olevate kontaktide nägemiseks pead kasutama otsinguvormi.';
$messages['sendingfailed'] = 'Kirja saatmine ebaõnnestus';
$messages['senttooquickly'] = 'Palun oota enne selle kirja saatmist $sec sekundit.';
$messages['errorsavingsent'] = 'Saadetud kirja salvestamisel ilmnes tõrge';
$messages['errorsaving'] = 'Salvestamisel ilmnes tõrge.';
$messages['errormoving'] = 'Ei suutnud seda kirja liigutada';
$messages['errorcopying'] = 'Kirju ei õnnestunud kopeerida';
$messages['errordeleting'] = 'Ei suutnud seda kirja kustutada';
$messages['errormarking'] = 'Kirja märkimine nurjus';
$messages['alerttitle'] = 'Tähelepanu';
$messages['confirmationtitle'] = 'Oled sa kindel...';
$messages['deletecontactconfirm']  = 'Soovid valitud kontaktid kustutada?';
$messages['deletegroupconfirm']  = 'Soovid valitud grupi kustutada?';
$messages['deletemessagesconfirm'] = 'Soovid valitud kirja(d) kustutada?';
$messages['deletefolderconfirm']  = 'Soovid selle kataloogi kindlasti kustutada?';
$messages['movefolderconfirm']  = 'Kas soovid tõesti selle kausta teisaldada?';
$messages['purgefolderconfirm']  = 'Soovid sellest kaustast kõik kirjad kustutada?';
$messages['contactdeleting'] = 'Kontakti(de) kustutamine…';
$messages['groupdeleting'] = 'Grupi kustutamine…';
$messages['folderdeleting'] = 'Kustutan kausta...';
$messages['foldermoving'] = 'Liigutan kausta...';
$messages['foldersubscribing'] = 'Tellin kausta...';
$messages['folderunsubscribing'] = 'Peatan kausta tellimuse...';
$messages['formincomplete'] = 'Vormi kõik väljad ei ole täidetud';
$messages['noemailwarning'] = 'Palun sisesta toimiv e-posti aadress';
$messages['nonamewarning']  = 'Palun sisesta nimi';
$messages['nopagesizewarning'] = 'Palun sisesta lehekülje suurus';
$messages['nosenderwarning'] = 'Sisesta saatja e-posti aadress.';
$messages['recipientsadded'] = 'Adressaat edukalt lisatud.';
$messages['norecipientwarning'] = 'Palun sisesta vähemalt üks adressaat';
$messages['disclosedreciptitle'] = 'Liiga palju avalikke adressaate';
$messages['nosubjectwarning']  = 'Väli „Pealkiri“ on tühi. Soovid selle ära täita?';
$messages['nosubjecttitle']  = 'Teema puudub';
$messages['nobodywarning'] = 'Saadan selle kirja ilma tekstita?';
$messages['notsentwarning'] = 'Sõnumit ei ole saadetud ja selles on salvestamata muudatusi. Kas soovid muudatustest loobuda?';
$messages['restoresavedcomposedata'] = 'Eelnevalt loodud aga saatmatta kiri leiti.\n\nTeema: $subject\nSalvestatud: $date\n\nKas sa soovid antud kirja taastada?';
$messages['nosearchname'] = 'Palun sisesta kontakti nimi või e-posti aadress';
$messages['notuploadedwarning'] = 'Kõiki manuseid ei ole veel üles laaditud. Palun oota või tühista üleslaadimine.';
$messages['searchsuccessful'] = 'Leiti $nr kirja';
$messages['contactsearchsuccessful'] = 'Leiti $nr kontakti.';
$messages['searchnomatch'] = 'Otsingule vastavaid kirju ei leitud';
$messages['searching'] = 'Otsin...';
$messages['checking'] = 'Kontrollin...';
$messages['stillsearching'] = 'Otsin....';
$messages['nospellerrors'] = 'Õigekirjavigu ei leitud';
$messages['folderdeleted'] = 'Kausta kustutamine õnnestus';
$messages['foldersubscribed'] = 'Kausta tellimine õnnestus';
$messages['folderunsubscribed'] = 'Kausta tellimise peatamine õnnestus';
$messages['deletedsuccessfully'] = 'Edukalt kustutatud';
$messages['converting'] = 'Eemaldan kirjast vormindust...';
$messages['messageopenerror'] = 'Kirjade serverist laadimine ebaõnnestus';
$messages['filelinkerror'] = 'Faili lisamine ebaõnnestus.';
$messages['fileuploaderror'] = 'Faili üleslaadimine ebaõnnestus';
$messages['filesizeerror'] = 'Üleslaetava faili suurus ületab maksimaalse suuruse $size';
$messages['filecounterror'] = 'Maksimaalselt saad lisada $count faili korraga.';
$messages['msgsizeerror'] = 'Faili lisamine ebaõnnestus. Sõnumi maksimaalne suurus ($size) on ületatud.';
$messages['msgsizeerrorfwd'] = 'Sõnumi maksimaalne suurus ($size) on ületatud. $num sõnumit pole lisatud.';
$messages['copysuccess'] = '$nr kontakti edukalt kopeeritud.';
$messages['movesuccess'] = '$nr kontakti edukalt liigutatud.';
$messages['copyerror'] = 'Ühegi kontakti kopeerimine ei õnnestunud.';
$messages['moveerror'] = 'Ühegi kontakti liigutamine ei õnnestunud.';
$messages['sourceisreadonly'] = 'Aadressi asukohas puuduvad kirjutusõigused';
$messages['errorsavingcontact'] = 'Kontakti aadressi salvestamine ebaõnnestus';
$messages['movingmessage'] = 'Liigutan kirja...';
$messages['copyingmessage'] = 'Kopeerin kirja...';
$messages['copyingcontact'] = 'Kontakti(de) kopeerimine…';
$messages['movingcontact'] = 'Kontakti(de) liigutamine…';
$messages['deletingmessage'] = 'Kustutan kirja...';
$messages['markingmessage'] = 'Märgin kirja...';
$messages['addingmember'] = 'Kontakti(de) gruppi lisamine…';
$messages['removingmember'] = 'Kontakti(de) grupist eemaldamine…';
$messages['receiptsent'] = 'Kättesaamiskinnitus saadetud';
$messages['errorsendingreceipt'] = 'Ei õnnestunud kättesaamiskinnitust saata';
$messages['deleteidentityconfirm'] = 'Soovid selle identiteedi kustutada?';
$messages['nodeletelastidentity'] = 'See identiteet on viimane ja seda ei saa kustutada.';
$messages['forbiddencharacter'] = 'Kausta nimi sisaldab keelatud sümbolit';
$messages['selectimportfile'] = 'Palun vali üleslaadimiseks fail';
$messages['addresswriterror'] = 'Valitud aadressiraamat pole kirjutatav';
$messages['contactaddedtogroup'] = 'Kontaktide lisamine gruppi õnnestus';
$messages['contactremovedfromgroup'] = 'Kontaktide eemaldamine grupist õnnestus';
$messages['nogroupassignmentschanged'] = 'Gruppide ülesandeid ei muudetud';
$messages['importwait'] = 'Impordin, palun oota...';
$messages['importformaterror'] = 'Import nurjus! Laaditud fail ei sisalda sobilikke andmeid.';
$messages['importconfirm'] = '<b>Edukalt imporditud $inserted kontakti, $skipped olemasolevat sissekannet vahele jäetud</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b> $skipped olemasolevat kirjet jäeti vahele</b>';
$messages['importmessagesuccess'] = '$nr kirja edukalt imporditud';
$messages['importmessageerror'] = 'Import nurjus! Laaditud fail ei ole kirja ega postkasti fail';
$messages['opnotpermitted'] = 'Tegevus pole lubatud!';
$messages['nofromaddress'] = 'Valitud identiteedis puudub e-posti aadress.';
$messages['editorwarning'] = 'Klaarteksti redaktorile lülitamine kaotab kogu teksti vorminduse. Soovid jätkata?';
$messages['httpreceivedencrypterror'] = 'Viga seadistustes. Võta kohe oma süsteemiadministraatoriga ühendust. <b>Sinu kirja polnud võimalik ära saata.</b>';
$messages['smtpconnerror'] = 'SMTP tõrge ($code): serveriga ühendumine nurjus';
$messages['smtpautherror'] = 'SMTP tõrge ($code): autentimine nurjus';
$messages['smtpfromerror'] = 'SMTP tõrge ($code): "$from" saatjaks määramine nurjus ($msg)';
$messages['smtptoerror'] = 'SMTP tõrge ($code): "$to" saajaks määramine nurjus ($msg)';
$messages['smtprecipientserror'] = 'SMTP tõrge: saajate nimekirja parsimine nurjus';
$messages['smtputf8error'] = 'SMTP Viga: Server ei toeta Unicode\'i e-posti aadressi.';
$messages['smtpsizeerror'] = 'SMTP Viga: Kirja suurus ületab serveri limiiti ($limit)';
$messages['smtperror'] = 'SMTP tõrge: $msg';
$messages['emailformaterror'] = 'Vigane e-posti aadress: $email';
$messages['toomanyrecipients'] = 'Liiga palju adressaate. Vähenda kirja saajate hulka $max-ni.';
$messages['maxgroupmembersreached'] = 'Grupi liikmete arv ületab suurima lubatud $max';
$messages['internalerror'] = 'Ilmnes sisemine tõrge. Palun proovi uuesti.';
$messages['contactdelerror'] = 'Kontaktide kustutamine nurjus';
$messages['contactdeleted'] = 'Kontaktide kustutamine õnnestus';
$messages['contactrestoreerror'] = 'Kustutatud kontakti(de) taastamine nurjus.';
$messages['contactrestored'] = 'Kontakt(id) edukalt taastatud.';
$messages['groupdeleted'] = 'Grupi kustutamine õnnestus';
$messages['grouprenamed'] = 'Grupi ümbernimetamine õnnestus';
$messages['groupcreated'] = 'Grupi loomine õnnestus';
$messages['savedsearchdeleted'] = 'Salvestatud otsing edukalt kustutatud.';
$messages['savedsearchdeleteerror'] = 'Salvestatud otsingu kustutamine nurjus.';
$messages['savedsearchcreated'] = 'Salvestatud otsing edukalt loodud.';
$messages['savedsearchcreateerror'] = 'Salvestatud otsingu loomine nurjus.';
$messages['messagedeleted'] = 'Kiri edukalt kustutatud';
$messages['messagemoved'] = 'Kiri edukalt liigutatud';
$messages['messagemovedtotrash'] = 'Kiri edukalt rämpsposti teisaldatud.';
$messages['messagecopied'] = 'Kiri edukalt kopeeritud';
$messages['messagemarked'] = 'Kiri edukalt märgitud';
$messages['autocompletechars'] = 'Sisesta vähemalt $min märki autom. lõpetuseks';
$messages['autocompletemore'] = 'Otsingule on liiga palju vasteid. Palun sisesta veel mõni märk.';
$messages['namecannotbeempty'] = 'Nimi ei saa olla tühi';
$messages['nametoolong'] = 'Nimi liiga pikk';
$messages['namedotforbidden'] = 'Kausta nimi ei tohi alata punktiga.';
$messages['folderupdated'] = 'Kaust uuendatud edukalt';
$messages['foldercreated'] = 'Kaust loodud edukalt';
$messages['invalidimageformat'] = 'Pole õige pildi formaat';
$messages['mispellingsfound'] = 'Kiri sisaldab õigekirjavigu';
$messages['parentnotwritable'] = 'Kasuta loomine/liigutamine valitud kausta nurjus. Pole õigusi.';
$messages['messagetoobig'] = 'Kiri on töötlemiseks liiga suur.';
$messages['noscriptwarning'] = 'Hoiatus: see veebimaili teenus vajab Javascripti! Teenuse kasutamiseks luba Javascript oma brauseri seadetes.';
$messages['messageissent'] = 'Sõnum oli juba saadetud, kuid seda pole veel salvestatud. Kas soovid selle nüüd salvestada?';
$messages['errnotfound'] = 'Faili ei leitud';
$messages['errnotfoundexplain'] = 'Päringu ressurssi ei leitud!';
$messages['errfailedrequest'] = 'Päring nurjus';
$messages['errauthorizationfailed'] = 'Atoriseerimine ebaõnnestus';
$messages['errunauthorizedexplain'] = 'Ei saanud kontrollida, kas sul on õigus seda teenust kasutada!';
$messages['errrequestcheckfailed'] = 'Päringu kontroll nurjus';
$messages['errcontactserveradmin'] = 'Palun pöördu oma serveri administraatori poole.';
$messages['clicktoresumesession'] = 'Eelmise seansi jätkamiseks klõpsa siin';
$messages['errcomposesession'] = 'Uue sessiooni loomise tõrge';
$messages['errcomposesessionexplain'] = 'Küsitud sessiooni ei leitud.';
$messages['clicktocompose'] = 'Uue sõnumi koostamiseks klõpsa siin';
$messages['nosupporterror'] = 'Sinu veebibrauser seda funktsiooni ei toeta.';
$messages['siginserted'] = 'Allkiri on edukalt sisestatud.';
$messages['responseinserted'] = 'Vastus edukalt sisestatud.';
$messages['listempty'] = 'See nimekiri on tühi.';
$messages['listusebutton'] = 'Uue kirje lisamiseks kasuta nuppu Lisa.';
$messages['oauthloginfailed'] = 'OAuth sisselogimine ebaõnnestus. Palun proovi hiljem uuesti.';
localization/ku_IQ/timezones.inc000064400000055217151727150600012772 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/timezones/
*/

$labels['tz:utc'] = 'کاتی گەردوونیی ھاوھەنگاو';
$labels['tz:africa'] = 'ئەفریقا';
$labels['tz:africa:abidjan'] = 'ئابەجان';
$labels['tz:africa:accra'] = 'ئاکرا';
$labels['tz:africa:addis_ababa'] = 'ئەدیس ئەبابا';
$labels['tz:africa:algiers'] = 'جەزائیر';
$labels['tz:africa:asmara'] = 'ئەسمەرە';
$labels['tz:africa:bamako'] = 'باماکۆ';
$labels['tz:africa:bangui'] = 'بانگوئی';
$labels['tz:africa:banjul'] = 'بانجول';
$labels['tz:africa:bissau'] = 'بیساو';
$labels['tz:africa:blantyre'] = 'بلانتیر';
$labels['tz:africa:brazzaville'] = 'برازاڤیل';
$labels['tz:africa:bujumbura'] = 'بوجومبورە';
$labels['tz:africa:cairo'] = 'قاهیرە';
$labels['tz:africa:casablanca'] = 'کازابلانکا';
$labels['tz:africa:ceuta'] = 'کوتا';
$labels['tz:africa:conakry'] = 'کۆناکری';
$labels['tz:africa:dakar'] = 'داکار';
$labels['tz:africa:dar_es_salaam'] = 'دار ئەلسەلام';
$labels['tz:africa:djibouti'] = 'جیبووتی';
$labels['tz:africa:douala'] = 'دوالا';
$labels['tz:africa:el_aaiun'] = 'ئەلعیون';
$labels['tz:africa:freetown'] = 'فریتاون';
$labels['tz:africa:gaborone'] = 'گابۆرۆن';
$labels['tz:africa:harare'] = 'ھەرارێ';
$labels['tz:africa:johannesburg'] = 'جۆهانسبێرگ';
$labels['tz:africa:juba'] = 'جوبا';
$labels['tz:africa:kampala'] = 'کەمپالا';
$labels['tz:africa:khartoum'] = 'خەرتوم';
$labels['tz:africa:kigali'] = 'کوگالی';
$labels['tz:africa:kinshasa'] = 'کنشاسا';
$labels['tz:africa:lagos'] = 'لاگۆس';
$labels['tz:africa:libreville'] = 'لیبرێڤیل';
$labels['tz:africa:lome'] = 'لۆمێ';
$labels['tz:africa:luanda'] = 'لواندا';
$labels['tz:africa:lubumbashi'] = 'لوبومباشی';
$labels['tz:africa:lusaka'] = 'لوساکا';
$labels['tz:africa:malabo'] = 'مالابۆ';
$labels['tz:africa:maputo'] = 'ماپوتۆ';
$labels['tz:africa:maseru'] = 'مازروو';
$labels['tz:africa:mbabane'] = 'ئمبەبانێی';
$labels['tz:africa:mogadishu'] = 'مۆگادیشو';
$labels['tz:africa:monrovia'] = 'مۆنرۆڤیا';
$labels['tz:africa:nairobi'] = 'نایرۆبی';
$labels['tz:africa:ndjamena'] = 'ئنجامینا';
$labels['tz:africa:niamey'] = 'نیامی';
$labels['tz:africa:nouakchott'] = 'نواکشۆت';
$labels['tz:africa:ouagadougou'] = 'ئۆئاگادۆگۆ';
$labels['tz:africa:porto-novo'] = 'پۆرتۆ نۆڤۆ';
$labels['tz:africa:sao_tome'] = 'ساوتۆمێی';
$labels['tz:africa:tripoli'] = 'تریپۆلی';
$labels['tz:africa:tunis'] = 'توونس';
$labels['tz:africa:windhoek'] = 'ویندهوک';
$labels['tz:america'] = 'ئەمریکا';
$labels['tz:america:adak'] = 'ئەیداک';
$labels['tz:america:anchorage'] = 'ئەنکورج';
$labels['tz:america:anguilla'] = 'ئەنگویلا';
$labels['tz:america:antigua'] = 'ئەنتیگا';
$labels['tz:america:araguaina'] = 'ئەرەگوینا';
$labels['tz:america:argentina'] = 'ئەرژەنتین';
$labels['tz:america:argentina:buenos_aires'] = 'بوێنس ئایریس';
$labels['tz:america:argentina:catamarca'] = 'کاتامارکا';
$labels['tz:america:argentina:cordoba'] = 'کۆردوبا';
$labels['tz:america:argentina:jujuy'] = 'هوهوی';
$labels['tz:america:argentina:la_rioja'] = 'لا ڕیۆفا';
$labels['tz:america:argentina:mendoza'] = 'میندۆزا';
$labels['tz:america:argentina:rio_gallegos'] = 'ڕیۆ گاشێفۆس';
$labels['tz:america:argentina:salta'] = 'سەڵتا';
$labels['tz:america:argentina:san_juan'] = 'سان هوان';
$labels['tz:america:argentina:san_luis'] = 'سان لویس';
$labels['tz:america:argentina:tucuman'] = 'توکومان';
$labels['tz:america:argentina:ushuaia'] = 'ئوسوایا';
$labels['tz:america:aruba'] = 'ئەروبا';
$labels['tz:america:asuncion'] = 'ئەسنتیۆن';
$labels['tz:america:atikokan'] = 'ئەتیکۆکان';
$labels['tz:america:bahia'] = 'بەهیە';
$labels['tz:america:bahia_banderas'] = 'بەهیە بەندێراس';
$labels['tz:america:barbados'] = 'باربادۆس';
$labels['tz:america:belem'] = 'بێلوم';
$labels['tz:america:belize'] = 'بڵیز';
$labels['tz:america:blanc-sablon'] = 'بلانک سابلۆن';
$labels['tz:america:boa_vista'] = 'بۆوا ڤیستا';
$labels['tz:america:bogota'] = 'بۆگۆتا';
$labels['tz:america:boise'] = 'بۆیس';
$labels['tz:america:cambridge_bay'] = 'کامبریدج بەی';
$labels['tz:america:campo_grande'] = 'کامپۆ گراندێی';
$labels['tz:america:cancun'] = 'کانکون';
$labels['tz:america:caracas'] = 'کراکەس';
$labels['tz:america:cayenne'] = 'کاین';
$labels['tz:america:cayman'] = 'کەیمن';
$labels['tz:america:chicago'] = 'شیکاگۆ';
$labels['tz:america:chihuahua'] = 'چیواوا';
$labels['tz:america:costa_rica'] = 'کۆستاریکا';
$labels['tz:america:creston'] = 'کرێستۆن';
$labels['tz:america:cuiaba'] = 'کویبا';
$labels['tz:america:curacao'] = 'کوراساو';
$labels['tz:america:danmarkshavn'] = 'دانمارکشاڤن';
$labels['tz:america:dawson'] = 'دۆسن';
$labels['tz:america:dawson_creek'] = 'دۆسن کریک';
$labels['tz:america:denver'] = 'دێنڤەر';
$labels['tz:america:detroit'] = 'دیترۆیت';
$labels['tz:america:dominica'] = 'دۆمینیکا';
$labels['tz:america:edmonton'] = 'ئێدمنتن';
$labels['tz:america:eirunepe'] = 'ئێرنپی';
$labels['tz:america:el_salvador'] = 'ئێل سلڤادۆر';
$labels['tz:america:fort_nelson'] = 'فۆرت نیڵسن';
$labels['tz:america:fortaleza'] = 'فۆرتالێزا';
$labels['tz:america:glace_bay'] = 'گلەیس بەی';
$labels['tz:america:godthab'] = 'گۆدهاب';
$labels['tz:america:goose_bay'] = 'گووس بەی';
$labels['tz:america:grand_turk'] = 'گراند تورک';
$labels['tz:america:grenada'] = 'گرنادا';
$labels['tz:america:guadeloupe'] = 'گوادالوپ';
$labels['tz:america:guatemala'] = 'گواتیمالا';
$labels['tz:america:guayaquil'] = 'گوایەکیل';
$labels['tz:america:guyana'] = 'گوایا';
$labels['tz:america:halifax'] = 'هاڵیفاکس';
$labels['tz:america:havana'] = 'هاڤانا';
$labels['tz:america:hermosillo'] = 'ئێرمۆسیۆ';
$labels['tz:america:indiana'] = 'ئیندیانا';
$labels['tz:america:indiana:indianapolis'] = 'ئیندیانا پۆلیس';
$labels['tz:america:indiana:knox'] = 'نۆکس';
$labels['tz:america:indiana:marengo'] = 'مەرێنگۆ';
$labels['tz:america:indiana:petersburg'] = 'پیتەرسبێرگ';
$labels['tz:america:indiana:tell_city'] = 'تێڵ سیتی';
$labels['tz:america:indiana:vevay'] = 'ڤیڤای';
$labels['tz:america:indiana:vincennes'] = 'ڤانسێن';
$labels['tz:america:indiana:winamac'] = 'ویناماک';
$labels['tz:america:inuvik'] = 'ئینوڤیک';
$labels['tz:america:iqaluit'] = 'ئیکالویت';
$labels['tz:america:jamaica'] = 'جامایکا';
$labels['tz:america:juneau'] = 'جونۆو';
$labels['tz:america:kentucky'] = 'کەنتاکی';
$labels['tz:america:kentucky:louisville'] = 'لویس ڤیڵ';
$labels['tz:america:kentucky:monticello'] = 'مۆنتیچێلۆ';
$labels['tz:america:kralendijk'] = 'کرالندیجک';
$labels['tz:america:la_paz'] = 'لاپاز';
$labels['tz:america:lima'] = 'لیما';
$labels['tz:america:los_angeles'] = 'لۆس ئەنجلس';
$labels['tz:america:lower_princes'] = 'لاوەر پرینسس';
$labels['tz:america:maceio'] = 'مەسێۆ';
$labels['tz:america:managua'] = 'ماناگوا';
$labels['tz:america:manaus'] = 'ماناوس';
$labels['tz:america:marigot'] = 'ماریگۆ';
$labels['tz:america:martinique'] = 'مارتنیک';
$labels['tz:america:matamoros'] = 'مەتامۆرۆس';
$labels['tz:america:mazatlan'] = 'مەزاتلان';
$labels['tz:america:menominee'] = 'مەنامنی';
$labels['tz:america:merida'] = 'مێریدا';
$labels['tz:america:metlakatla'] = 'مەتلاکەتلا';
$labels['tz:america:mexico_city'] = 'مەکسیکۆ سیتی';
$labels['tz:america:miquelon'] = 'مکەڵان';
$labels['tz:america:moncton'] = 'مۆنکتن';
$labels['tz:america:monterrey'] = 'مۆنترای';
$labels['tz:america:montevideo'] = 'مۆنتێڤیدیۆ';
$labels['tz:america:montserrat'] = 'مۆنسێرات';
$labels['tz:america:nassau'] = 'ناساو';
$labels['tz:america:new_york'] = 'نیویۆرک';
$labels['tz:america:nipigon'] = 'نیپیگۆن';
$labels['tz:america:nome'] = 'نۆم';
$labels['tz:america:noronha'] = 'نۆرۆنها';
$labels['tz:america:north_dakota'] = 'داکۆتای باکوور';
$labels['tz:america:north_dakota:beulah'] = 'بیوڵا';
$labels['tz:america:north_dakota:center'] = 'سەنتەر';
$labels['tz:america:north_dakota:new_salem'] = 'نیو سەیلم';
$labels['tz:america:ojinaga'] = 'ئۆهیناگا';
$labels['tz:america:panama'] = 'پاناما';
$labels['tz:america:pangnirtung'] = 'پانیرتەنگ';
$labels['tz:america:paramaribo'] = 'پاراماریبۆ';
$labels['tz:america:phoenix'] = 'فینیکس';
$labels['tz:america:port-au-prince'] = 'پۆرتۆ پرینس';
$labels['tz:america:port_of_spain'] = 'پۆرت ئۆف سپەین';
$labels['tz:america:porto_velho'] = 'پۆرتۆ ڤێلۆ';
$labels['tz:america:puerto_rico'] = 'پۆرتۆ ڕیکۆ';
$labels['tz:america:rainy_river'] = 'ڕەینی ڕیڤەر';
$labels['tz:america:rankin_inlet'] = 'ڕانکین ئینلێت';
$labels['tz:america:recife'] = 'ڕەسیفی';
$labels['tz:america:regina'] = 'ڕەجینا';
$labels['tz:america:resolute'] = 'ڕێزلوت';
$labels['tz:america:rio_branco'] = 'ڕیۆ برانکۆ';
$labels['tz:america:santarem'] = 'سەنتاریم';
$labels['tz:america:santiago'] = 'سانتیاگۆ';
$labels['tz:america:santo_domingo'] = 'سانتۆ دۆمینگۆ';
$labels['tz:america:sao_paulo'] = 'ساوپاولۆ';
$labels['tz:america:scoresbysund'] = 'سکۆرس بایسەند';
$labels['tz:america:sitka'] = 'سیتکا';
$labels['tz:america:st_barthelemy'] = 'سەینت بارتێلێمی';
$labels['tz:america:st_johns'] = "سەینت جۆنس";
$labels['tz:america:st_kitts'] = 'سەینت کیتس';
$labels['tz:america:st_lucia'] = 'سەینت لوشیا';
$labels['tz:america:st_thomas'] = 'سەینت تۆماس';
$labels['tz:america:st_vincent'] = 'سەینت ڤینسنت';
$labels['tz:america:swift_current'] = 'سویفت کەڕێنت';
$labels['tz:america:tegucigalpa'] = 'تەیگوسیگالپا';
$labels['tz:america:thule'] = 'تولی';
$labels['tz:america:thunder_bay'] = 'سەندەربەی';
$labels['tz:america:tijuana'] = 'تیوانا';
$labels['tz:america:toronto'] = 'تۆرۆنتۆ';
$labels['tz:america:tortola'] = 'تۆرتۆلا';
$labels['tz:america:vancouver'] = 'ڤانکۆڤەر';
$labels['tz:america:whitehorse'] = 'وایت هۆرس';
$labels['tz:america:winnipeg'] = 'وینپیگ';
$labels['tz:america:yakutat'] = 'یاکوتات';
$labels['tz:america:yellowknife'] = 'یەلۆنایف';
$labels['tz:antarctica'] = 'ئەنتارکتیکا';
$labels['tz:antarctica:casey'] = 'کاسی';
$labels['tz:antarctica:davis'] = 'دەیڤس';
$labels['tz:antarctica:dumontdurville'] = "دومۆنت دڤیل";
$labels['tz:antarctica:macquarie'] = 'مۆکۆری';
$labels['tz:antarctica:mawson'] = 'ماوسن';
$labels['tz:antarctica:mcmurdo'] = 'مەکموردۆ';
$labels['tz:antarctica:palmer'] = 'پاڵمەر';
$labels['tz:antarctica:rothera'] = 'ڕۆزێرا';
$labels['tz:antarctica:syowa'] = 'سیوا';
$labels['tz:antarctica:troll'] = 'ترۆڵ';
$labels['tz:antarctica:vostok'] = 'ڤۆستۆک';
$labels['tz:arctic'] = 'ئارکتیک';
$labels['tz:arctic:longyearbyen'] = 'لۆنیەربێن';
$labels['tz:asia'] = 'ئاسیا';
$labels['tz:asia:aden'] = 'عەدەن';
$labels['tz:asia:almaty'] = 'ئەلماتی';
$labels['tz:asia:amman'] = 'عەمان';
$labels['tz:asia:anadyr'] = 'ئەنادر';
$labels['tz:asia:aqtau'] = 'ئەکتاو';
$labels['tz:asia:aqtobe'] = 'ئەکتۆبی';
$labels['tz:asia:ashgabat'] = 'ئاشگەبات';
$labels['tz:asia:atyrau'] = 'ئەتیراو';
$labels['tz:asia:baghdad'] = 'بەغداد';
$labels['tz:asia:bahrain'] = 'بەحرەین';
$labels['tz:asia:baku'] = 'باکو';
$labels['tz:asia:bangkok'] = 'بانگۆک';
$labels['tz:asia:barnaul'] = 'بارناڵ';
$labels['tz:asia:beirut'] = 'بەیروت';
$labels['tz:asia:bishkek'] = 'بوشکەک';
$labels['tz:asia:brunei'] = 'برونای';
$labels['tz:asia:chita'] = 'چیتا';
$labels['tz:asia:choibalsan'] = 'چۆیباڵسان';
$labels['tz:asia:colombo'] = 'کۆڵۆمبۆ';
$labels['tz:asia:damascus'] = 'دەماسکوس';
$labels['tz:asia:dhaka'] = 'دەکا';
$labels['tz:asia:dili'] = 'دیڵی';
$labels['tz:asia:dubai'] = 'دوبەی';
$labels['tz:asia:dushanbe'] = 'دوشانبێی';
$labels['tz:asia:famagusta'] = 'فاماگوستا';
$labels['tz:asia:gaza'] = 'غەزە';
$labels['tz:asia:hebron'] = 'هیبرۆن';
$labels['tz:asia:ho_chi_minh'] = 'هۆ چی مین';
$labels['tz:asia:hong_kong'] = 'هۆنگ کۆنگ';
$labels['tz:asia:hovd'] = 'هۆڤد';
$labels['tz:asia:irkutsk'] = 'ئیرکوتسکە';
$labels['tz:asia:jakarta'] = 'جاکەرتا';
$labels['tz:asia:jayapura'] = 'جایاپورا';
$labels['tz:asia:jerusalem'] = 'ئورشەلیم';
$labels['tz:asia:kabul'] = 'کابوول';
$labels['tz:asia:kamchatka'] = 'کامچاتکە';
$labels['tz:asia:karachi'] = 'کەرەچی';
$labels['tz:asia:kathmandu'] = 'کەتماندوو';
$labels['tz:asia:khandyga'] = 'هاندیگا';
$labels['tz:asia:kolkata'] = 'کەلکەتە';
$labels['tz:asia:krasnoyarsk'] = 'کرازنیاسک';
$labels['tz:asia:kuala_lumpur'] = 'کوالا لامپور';
$labels['tz:asia:kuching'] = 'کوچینگ';
$labels['tz:asia:kuwait'] = 'کوەیت';
$labels['tz:asia:macau'] = 'ماکاو';
$labels['tz:asia:magadan'] = 'ماگەدان';
$labels['tz:asia:makassar'] = 'مەکاسەر';
$labels['tz:asia:manila'] = 'مەنێڵا';
$labels['tz:asia:muscat'] = 'مەسقەت';
$labels['tz:asia:nicosia'] = 'نیکۆسیا';
$labels['tz:asia:novokuznetsk'] = 'نۆڤۆکوتزنێسک';
$labels['tz:asia:novosibirsk'] = 'نۆڤاسبرسک';
$labels['tz:asia:omsk'] = 'ئۆمسک';
$labels['tz:asia:oral'] = 'ئۆراڵ';
$labels['tz:asia:phnom_penh'] = 'پنۆم پێن';
$labels['tz:asia:pontianak'] = 'پۆنتیاناک';
$labels['tz:asia:pyongyang'] = 'پیۆنگ یانگ';
$labels['tz:asia:qatar'] = 'قەتەر';
$labels['tz:asia:qyzylorda'] = 'کیزیلۆردا';
$labels['tz:asia:riyadh'] = 'ڕیاز';
$labels['tz:asia:sakhalin'] = 'سەخالین';
$labels['tz:asia:samarkand'] = 'سەمەرقەند';
$labels['tz:asia:seoul'] = 'سیئۆل';
$labels['tz:asia:shanghai'] = 'شەنگەهای';
$labels['tz:asia:singapore'] = 'سەنگافورە';
$labels['tz:asia:srednekolymsk'] = 'سریدنکۆلیمسک';
$labels['tz:asia:taipei'] = 'تایپێ';
$labels['tz:asia:tashkent'] = 'تاشکەند';
$labels['tz:asia:tbilisi'] = 'تەبلیس';
$labels['tz:asia:tehran'] = 'تاران';
$labels['tz:asia:thimphu'] = 'تیمفوو';
$labels['tz:asia:tokyo'] = 'تۆکیۆ';
$labels['tz:asia:tomsk'] = 'تۆمسک';
$labels['tz:asia:ulaanbaatar'] = 'ئولانباتۆر';
$labels['tz:asia:urumqi'] = 'ئورومچی';
$labels['tz:asia:ust-nera'] = 'ئوست نێرا';
$labels['tz:asia:vientiane'] = 'ڤیێنتیان';
$labels['tz:asia:vladivostok'] = 'ڤلادیڤۆستۆک';
$labels['tz:asia:yakutsk'] = 'یاکوتسک';
$labels['tz:asia:yangon'] = 'یانگۆن';
$labels['tz:asia:yekaterinburg'] = 'یەکاترینبۆرگ';
$labels['tz:asia:yerevan'] = 'یەریڤان';
$labels['tz:atlantic'] = 'ئەتڵەسی';
$labels['tz:atlantic:azores'] = 'دوورگەکانی ئەزوور';
$labels['tz:atlantic:bermuda'] = 'بەرمۆدە';
$labels['tz:atlantic:canary'] = 'کەناری';
$labels['tz:atlantic:cape_verde'] = 'کەیپڤەرد';
$labels['tz:atlantic:faroe'] = 'دوورگەکانی فارۆ';
$labels['tz:atlantic:madeira'] = 'دوورگەکانی مادیرا';
$labels['tz:atlantic:reykjavik'] = 'ڕێکیاڤیک';
$labels['tz:atlantic:south_georgia'] = 'باشووری جۆرجیا';
$labels['tz:atlantic:st_helena'] = 'سەینت هێلینا';
$labels['tz:atlantic:stanley'] = 'ستانلی';
$labels['tz:australia'] = 'ئوسترالیا';
$labels['tz:australia:adelaide'] = 'ئەدێلاید';
$labels['tz:australia:brisbane'] = 'بریزبێن';
$labels['tz:australia:broken_hill'] = 'بڕۆکن هیڵ';
$labels['tz:australia:currie'] = 'کوری';
$labels['tz:australia:darwin'] = 'داروین';
$labels['tz:australia:eucla'] = 'یۆکلا';
$labels['tz:australia:hobart'] = 'هۆبارت';
$labels['tz:australia:lindeman'] = 'لیندەمان';
$labels['tz:australia:lord_howe'] = 'لۆرد هاو';
$labels['tz:australia:melbourne'] = 'مێلبۆرن';
$labels['tz:australia:perth'] = 'پێرس';
$labels['tz:australia:sydney'] = 'سیدنی';
$labels['tz:europe'] = 'ئەوروپا';
$labels['tz:europe:amsterdam'] = 'ئەمستردام';
$labels['tz:europe:andorra'] = 'ئەندۆرا';
$labels['tz:europe:astrakhan'] = 'ئەستراخان';
$labels['tz:europe:athens'] = 'ئەسینا';
$labels['tz:europe:belgrade'] = 'بێلگراد';
$labels['tz:europe:berlin'] = 'بەرلین';
$labels['tz:europe:bratislava'] = 'براتسیلاڤا';
$labels['tz:europe:brussels'] = 'برۆکسل';
$labels['tz:europe:bucharest'] = 'بوخارێست';
$labels['tz:europe:budapest'] = 'بوداپێست';
$labels['tz:europe:busingen'] = 'بۆزینگن';
$labels['tz:europe:chisinau'] = 'کیشیناو';
$labels['tz:europe:copenhagen'] = 'کۆپنهاگن';
$labels['tz:europe:dublin'] = 'دوبلین';
$labels['tz:europe:gibraltar'] = 'گیبرالتار';
$labels['tz:europe:guernsey'] = 'گەرنزی';
$labels['tz:europe:helsinki'] = 'ھێلسینکی';
$labels['tz:europe:isle_of_man'] = 'دوورگەی مان';
$labels['tz:europe:istanbul'] = 'ئیستانبوڵ';
$labels['tz:europe:jersey'] = 'جێرزی';
$labels['tz:europe:kaliningrad'] = 'کالینینگراد';
$labels['tz:europe:kiev'] = 'کیڤ';
$labels['tz:europe:kirov'] = 'کیرۆڤ';
$labels['tz:europe:lisbon'] = 'لیسبۆن';
$labels['tz:europe:ljubljana'] = 'لیوبلیانا';
$labels['tz:europe:london'] = 'لەندەن';
$labels['tz:europe:luxembourg'] = 'لوکسمبۆرگ';
$labels['tz:europe:madrid'] = 'مەدرید';
$labels['tz:europe:malta'] = 'ماڵتا';
$labels['tz:europe:mariehamn'] = 'ماریهام';
$labels['tz:europe:minsk'] = 'مینسک';
$labels['tz:europe:monaco'] = 'مۆناکۆ';
$labels['tz:europe:moscow'] = 'مۆسکۆ';
$labels['tz:europe:oslo'] = 'ئۆسلۆ';
$labels['tz:europe:paris'] = 'پاریس';
$labels['tz:europe:podgorica'] = 'پۆدگۆریتسا';
$labels['tz:europe:prague'] = 'پراگ';
$labels['tz:europe:riga'] = 'ڕیگا';
$labels['tz:europe:rome'] = 'ڕۆما';
$labels['tz:europe:samara'] = 'سەمارا';
$labels['tz:europe:san_marino'] = 'سان مارینۆ';
$labels['tz:europe:sarajevo'] = 'سارایێڤۆ';
$labels['tz:europe:saratov'] = 'ساراتۆڤ';
$labels['tz:europe:simferopol'] = 'سیمفرۆپۆڵ';
$labels['tz:europe:skopje'] = 'سکۆپیە';
$labels['tz:europe:sofia'] = 'سۆفیا';
$labels['tz:europe:stockholm'] = 'ستۆکهۆڵم';
$labels['tz:europe:tallinn'] = 'تاڵین';
$labels['tz:europe:tirane'] = 'تیرانا';
$labels['tz:europe:ulyanovsk'] = 'ئولیانۆڤسک';
$labels['tz:europe:uzhgorod'] = 'ئۆژهورود';
$labels['tz:europe:vaduz'] = 'ڤادوتس';
$labels['tz:europe:vatican'] = 'ڤاتیکان';
$labels['tz:europe:vienna'] = 'ڤیەنا';
$labels['tz:europe:vilnius'] = 'ڤیلنیوس';
$labels['tz:europe:volgograd'] = 'ڤۆڵگۆگراد';
$labels['tz:europe:warsaw'] = 'وارشۆ';
$labels['tz:europe:zagreb'] = 'زاگرێب';
$labels['tz:europe:zaporozhye'] = 'زاپرۆژیا';
$labels['tz:europe:zurich'] = 'زوریخ';
$labels['tz:indian'] = 'ھیندستان';
$labels['tz:indian:antananarivo'] = 'ئانتاناناریڤۆ';
$labels['tz:indian:chagos'] = 'چاگۆس';
$labels['tz:indian:christmas'] = 'کریسمس';
$labels['tz:indian:cocos'] = 'دوورگەکانی کۆکۆس';
$labels['tz:indian:comoro'] = 'دوورگەکانی قەمەر';
$labels['tz:indian:kerguelen'] = 'کەرگولەن';
$labels['tz:indian:mahe'] = 'ماهی';
$labels['tz:indian:maldives'] = 'ماڵدیڤ';
$labels['tz:indian:mauritius'] = 'مۆریس';
$labels['tz:indian:mayotte'] = 'مایۆت';
$labels['tz:indian:reunion'] = 'ڕیۆنیۆن';
$labels['tz:pacific'] = 'هێمن';
$labels['tz:pacific:apia'] = 'ئاپیا';
$labels['tz:pacific:auckland'] = 'ئۆکلاند';
$labels['tz:pacific:bougainville'] = 'بۆگنویڵ';
$labels['tz:pacific:chatham'] = 'چاتەم';
$labels['tz:pacific:chuuk'] = 'چوک';
$labels['tz:pacific:easter'] = 'ئیستەر';
$labels['tz:pacific:efate'] = 'ئافات';
$labels['tz:pacific:enderbury'] = 'ئەندەربۆری';
$labels['tz:pacific:fakaofo'] = 'فاکاوفو';
$labels['tz:pacific:fiji'] = 'فیجی';
$labels['tz:pacific:funafuti'] = 'فونافوتی';
$labels['tz:pacific:galapagos'] = 'دوورگەکانی گالاپاگۆس';
$labels['tz:pacific:gambier'] = 'گامبیر';
$labels['tz:pacific:guadalcanal'] = 'گوادال کەناڵ';
$labels['tz:pacific:guam'] = 'گوام';
$labels['tz:pacific:honolulu'] = 'هۆنولولو';
$labels['tz:pacific:johnston'] = 'جۆنستۆن';
$labels['tz:pacific:kiritimati'] = 'کیریتیماتی';
$labels['tz:pacific:kosrae'] = 'کۆسرای';
$labels['tz:pacific:kwajalein'] = 'کواجالین';
$labels['tz:pacific:majuro'] = 'ماجورۆ';
$labels['tz:pacific:marquesas'] = 'مارکێز';
$labels['tz:pacific:midway'] = 'میدوەی';
$labels['tz:pacific:nauru'] = 'نائووروو';
$labels['tz:pacific:niue'] = 'نیووەی';
$labels['tz:pacific:norfolk'] = 'نۆرفۆڵک';
$labels['tz:pacific:noumea'] = 'نۆمیا';
$labels['tz:pacific:pago_pago'] = 'پاگۆ پاگۆ';
$labels['tz:pacific:palau'] = 'پالاو';
$labels['tz:pacific:pitcairn'] = 'پیتکارن';
$labels['tz:pacific:pohnpei'] = 'پۆنپی';
$labels['tz:pacific:port_moresby'] = 'پۆرت مۆرسبی';
$labels['tz:pacific:rarotonga'] = 'ڕارۆتۆنگا';
$labels['tz:pacific:saipan'] = 'سایپان';
$labels['tz:pacific:tahiti'] = 'تاھیتی';
$labels['tz:pacific:tarawa'] = 'تاراوە';
$labels['tz:pacific:tongatapu'] = 'تۆنگاتاپو';
$labels['tz:pacific:wake'] = 'وەیک';
$labels['tz:pacific:wallis'] = 'واڵیس';
localization/ku_IQ/labels.inc000064400000017566151727150600012224 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/


$labels['welcome'] = 'بەخێربێیت بۆ $product';
$labels['username'] = 'ناوی بەکارهێنەر';
$labels['password'] = 'تێپەڕەوشە';
$labels['server'] = 'ڕاژەکار';
$labels['login'] = 'چوونەژوورەوە';
$labels['oauthlogin'] = 'چوونەژوورەوە لەگەڵ $provider';
$labels['menu'] = 'پێڕست';
$labels['logout'] = 'دەرچوون';
$labels['mail'] = 'پۆست';
$labels['settings'] = 'ڕێکخستنەکان';
$labels['addressbook'] = 'پەرتووکی ناونیشان';
$labels['darkmode'] = 'شێوازی تاریک';
$labels['lightmode'] = 'شێوازی ڕووناک';
$labels['inbox'] = 'هاتوو';
$labels['drafts'] = 'ڕه‌شنووسەکان';
$labels['sent'] = 'نێردراو';
$labels['trash'] = 'زبڵدان';
$labels['junk'] = 'بێکه‌ڵک';
$labels['show_real_foldernames'] = 'ناوە ڕاستییەکان پیشانبدە بۆ بوخچە تایبەتەکان';
$labels['subject'] = 'ناونیشان';
$labels['from'] = 'لە';
$labels['sender'] = 'نێردەر';
$labels['to'] = 'بۆ';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'وەڵامدانەوە-بۆ';
$labels['followupto'] = 'بەدواداچوون-بۆ';
$labels['date'] = 'بەروار';
$labels['size'] = 'قەبارە';
$labels['priority'] = 'پێشه‌نگی';
$labels['organization'] = 'ڕێکخراو';
$labels['readstatus'] = 'ڕەوشی خوێندنەوە';
$labels['listoptions'] = 'لیستی هەڵبژاردەکان';
$labels['listoptionstitle'] = 'هەڵبژاردەکانی لیستە';
$labels['mailboxlist'] = 'بوخچەکان';
$labels['messagesfromto'] = 'پەیامەکان $from بۆ $to لە $count';
$labels['messagenrof'] = 'پەیام $nr لە $count';
$labels['fromtoshort'] = '$from – $to لە $count';
$labels['copy'] = 'لەبەرگرتنەوە';
$labels['move'] = 'گواستنەوە';
$labels['moveto'] = 'گواستنەوە بۆ';
$labels['copyto'] = 'گواستنەوە بۆ...';
$labels['download'] = 'داگرتن';
$labels['open'] = 'کردنەوە';
$labels['showattachment'] = 'پیشاندان';
$labels['showanyway'] = 'هەرچۆنێک بێت پیشانیبدە';
$labels['filename'] = 'ناوی پەڕگە';
$labels['filesize'] = 'قەبارەی پەڕگە';
$labels['addtoaddressbook'] = 'زیادیبکە بۆ پەرتووکی ناونیشان';
$labels['sun'] = 'یەکشەممە';
$labels['mon'] = 'دووشەممە';
$labels['tue'] = 'سێشەممە';
$labels['wed'] = 'چوارشەممە';
$labels['thu'] = 'پێنجشەممە';
$labels['fri'] = 'هەینی';
$labels['sat'] = 'شەممە';
$labels['sunday'] = 'یەکشەممە';
$labels['monday'] = 'دووشەممە';
$labels['tuesday'] = 'سێشەممە';
$labels['wednesday'] = 'چوارشەممە';
$labels['thursday'] = 'پێنجشەممە';
$labels['friday'] = 'هەینی';
$labels['saturday'] = 'شەممە';
$labels['jan'] = 'کانوونی دووەم';
$labels['feb'] = 'شوبات';
$labels['mar'] = 'ئادار';
$labels['apr'] = 'نیسان';
$labels['may'] = 'ئایار';
$labels['jun'] = 'حوزەیران';
$labels['jul'] = 'تەمووز';
$labels['aug'] = 'ئاب';
$labels['sep'] = 'ئەیلول';
$labels['oct'] = 'تشرینی یەکەم';
$labels['nov'] = 'تشرینی دووەم';
$labels['dec'] = 'کانوونی یەکەم';
$labels['longjan'] = 'کانوونی دووەم';
$labels['longfeb'] = 'شوبات';
$labels['longmar'] = 'ئادار';
$labels['longapr'] = 'نیسان';
$labels['longmay'] = 'ئایار';
$labels['longjun'] = 'حوزەیران';
$labels['longjul'] = 'تەمووز';
$labels['longaug'] = 'ئاب';
$labels['longsep'] = 'ئەیلول';
$labels['longoct'] = 'تشرینی یەکەم';
$labels['longnov'] = 'تشرینی دووەم';
$labels['longdec'] = 'کانوونی یەکەم';
$labels['today'] = 'ئەمڕۆ';
$labels['refresh'] = 'نوێكردنه‌وه';
$labels['checkmail'] = 'تێڕوانین بۆ نامەی نوێ';
$labels['compose'] = 'پێکهێنان';
$labels['writenewmessage'] = 'درووستکردنی پەیامێکی نوێ';
$labels['reply'] = 'وەڵامدانەوە';
$labels['replytomessage'] = 'وەڵامدانەوەی نێردەر';
$labels['replytoallmessage'] = 'وەڵامدانەوەی لیست یاخوود نێردەر و هەموو وەرگرەکان';
$labels['replyall'] = 'وەڵامدانەوەی هەموو';
$labels['replylist'] = 'وەڵامدانەوەی لیست';
$labels['forward'] = 'بینێره‌ بۆ';
$labels['deletemessage'] = 'سڕینەوەی پەیام';
$labels['movemessagetotrash'] = 'پەیام بگوازەرەوە بۆ زبڵدان';
$labels['printmessage'] = 'ئەم پەیامە چاپ بکە';
$labels['folders-all'] = 'هەموو بوخچەکان';
$labels['more'] = 'زیاتر';
$labels['back'] = 'گەڕانەوە';
$labels['options'] = 'هەڵبژاردەکان';
$labels['composeoptions'] = 'هەڵبژاردەکانی پێکهێنان';
$labels['optionsandattachments'] = 'هەڵبژاردەکان و پاشکۆکان';
$labels['actions'] = 'کردارەکان';
$labels['first'] = 'یەکەم';
$labels['last'] = 'کۆتایی';
$labels['previous'] = 'پێشتر';
$labels['next'] = 'دواتر';
$labels['select'] = 'هەڵبژاردن';
$labels['all'] = 'هەمووی';
$labels['none'] = 'هیچ';
$labels['currpage'] = 'پەڕی ئێستا';
$labels['list'] = 'لیست';
$labels['fromto'] = 'لە/بۆ';
$labels['attachment'] = 'هاوپێچ';
$labels['nonesort'] = 'هیچ';
$labels['sentdate'] = 'بەرواری ناردن';
$labels['arrival'] = 'بەرواری گەیشتن';
$labels['layoutlist'] = 'لیست';
$labels['empty'] = 'بەتاڵ';
$labels['unknown'] = 'نەناسراو';
$labels['unlimited'] = 'بێ سنوور';
$labels['quotatotal'] = 'سنوور';
$labels['quotaused'] = 'بەکارهاتوو';
$labels['namex'] = 'ناو';
$labels['allfolders'] = 'هەموو بوخچەکان';
$labels['send'] = 'ناردن';
$labels['responsename'] = 'ناو';
$labels['attach'] = 'هاوپێچ';
$labels['attachments'] = 'هاوپێچەکان';
$labels['upload'] = 'بارکردن';
$labels['close'] = 'داخستن';
$labels['nickname'] = 'نازناو';
$labels['jobtitle'] = 'ناونیشانی کار';
$labels['department'] = 'بەش';
$labels['gender'] = 'ڕەگەز';
$labels['phone'] = 'تەلەفۆن';
$labels['address'] = 'ناونیشان';
$labels['street'] = 'شەقام';
$labels['locality'] = 'شار';
$labels['country'] = 'وڵات';
$labels['birthday'] = 'ڕۆژی لەدایکبوون';
$labels['website'] = 'ماڵپەڕ';
$labels['notes'] = 'تێبینییەکان';
$labels['male'] = 'نێر';
$labels['female'] = 'مێ';
$labels['manager'] = 'بەڕێوەبەر';
$labels['allfields'] = 'هەموو خانەکان';
$labels['search'] = 'گەڕان';
$labels['searchresult'] = 'ئەنجامی گەڕان';
$labels['advsearch'] = 'گەڕانی پێشکەوتوو';
$labels['advanced'] = 'پێشکەوتوو';
$labels['typehome'] = 'ماڵ';
$labels['typework'] = 'کار';
$labels['typemobile'] = 'مۆبایل';
$labels['typemain'] = 'سەرەکی';
$labels['delete'] = 'سڕینەوە';
$labels['about'] = 'دەربارە';
$labels['folders'] = 'بوخچەکان';
$labels['create'] = 'دروستکردن';
$labels['license'] = 'مۆڵەت';
localization/ku_IQ/messages.inc000064400000001643151727150600012556 0ustar00<?php

/*
 +-----------------------------------------------------------------------+
 | Localization file of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 +-----------------------------------------------------------------------+

 For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/

$messages['errortitle']  = 'هەڵەیەک ڕوویدا!';
$messages['loginfailed']  = 'چوونەژوورەوە سەرکەوتوو نەبوو.';
actions/settings/response_create.php000064400000002207151727150600013743 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show edit form for a canned response creation                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_response_create extends rcmail_action_settings_response_edit
{
}
actions/settings/folder_purge.php000064400000005500151727150600013236 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality of folder purge                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_purge extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail       = rcmail::get_instance();
        $storage      = $rcmail->get_storage();
        $mbox         = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);
        $delimiter    = $storage->get_hierarchy_delimiter();
        $trash_mbox   = $rcmail->config->get('trash_mbox');
        $trash_regexp = '/^' . preg_quote($trash_mbox . $delimiter, '/') . '/';

        // we should only be purging trash (or their subfolders)
        if (!strlen($trash_mbox) || $mbox === $trash_mbox || preg_match($trash_regexp, $mbox)) {
            $success = $storage->delete_message('*', $mbox);
            $delete  = true;
        }
        // move to Trash
        else {
            $success = $storage->move_message('1:*', $trash_mbox, $mbox);
            $delete  = false;
        }

        if (!empty($success)) {
            $rcmail->output->set_env('messagecount', 0);

            if ($delete) {
                $rcmail->output->show_message('folderpurged', 'confirmation');
                $rcmail->output->command('set_quota', self::quota_content(null, $mbox));
            }
            else {
                $rcmail->output->show_message('messagemoved', 'confirmation');
            }

            $_SESSION['unseen_count'][$mbox] = 0;
            $rcmail->output->command('show_folder', $mbox, null, true);
        }
        else {
            self::display_server_error('errorsaving');
        }

        $rcmail->output->send();
    }
}
actions/settings/folder_rename.php000064400000006752151727150600013375 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality of folder rename                              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_rename extends rcmail_action_settings_folders
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $name    = trim(rcube_utils::get_input_string('_folder_newname', rcube_utils::INPUT_POST, true));
        $oldname = rcube_utils::get_input_string('_folder_oldname', rcube_utils::INPUT_POST, true);

        if (strlen($name) && strlen($oldname)) {
            $rename = self::rename_folder($oldname, $name);
        }

        if (!empty($rename)) {
            self::update_folder_row($name, $oldname);
        }
        else {
            self::display_server_error('errorsaving');
        }

        $rcmail->output->send();
    }

    public static function rename_folder($oldname, $newname)
    {
        $rcmail    = rcmail::get_instance();
        $storage   = $rcmail->get_storage();

        $plugin = $rcmail->plugins->exec_hook('folder_rename', [
            'oldname' => $oldname, 'newname' => $newname]);

        if (empty($plugin['abort'])) {
            $renamed =  $storage->rename_folder($oldname, $newname);
        }
        else {
            $renamed = $plugin['result'];
        }

        // update per-folder options for modified folder and its subfolders
        if ($renamed) {
            $delimiter  = $storage->get_hierarchy_delimiter();
            $a_threaded = (array) $rcmail->config->get('message_threading', []);
            $oldprefix  = '/^' . preg_quote($oldname . $delimiter, '/') . '/';

            foreach ($a_threaded as $key => $val) {
                if ($key == $oldname) {
                    unset($a_threaded[$key]);
                    $a_threaded[$newname] = $val;
                }
                else if (preg_match($oldprefix, $key)) {
                    unset($a_threaded[$key]);
                    $a_threaded[preg_replace($oldprefix, $newname . $delimiter, $key)] = $val;
                }
            }

            $rcmail->user->save_prefs(['message_threading' => $a_threaded]);

            // #1488692: update session
            if (isset($_SESSION['mbox']) && $_SESSION['mbox'] === $oldname) {
                $_SESSION['mbox'] = $newname;
            }

            return true;
        }

        return false;
    }
}
actions/settings/identity_create.php000064400000002207151727150600013736 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide identity create form                                        |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_identity_create extends rcmail_action_settings_identity_edit
{
}
actions/settings/folder_subscribe.php000064400000005201151727150600014073 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handler for folder subscribe action                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_subscribe extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();
        $mbox    = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);

        if (strlen($mbox)) {
            $result = $storage->subscribe([$mbox]);

            // Handle virtual (non-existing) folders
            if (
                !$result
                && $storage->get_error_code() == -1
                && $storage->get_response_code() == rcube_storage::TRYCREATE
            ) {
                $result = $storage->create_folder($mbox, true);
                if ($result) {
                    // @TODO: remove 'virtual' class of folder's row
                }
            }
        }

        if (!empty($result)) {
            // Handle subscription of protected folder (#1487656)
            if ($rcmail->config->get('protect_default_folders') && $storage->is_special_folder($mbox)) {
                $rcmail->output->command('disable_subscription', $mbox);
            }

            $rcmail->output->show_message('foldersubscribed', 'confirmation');
        }
        else {
            self::display_server_error('errorsaving');
            $rcmail->output->command('reset_subscription', $mbox, false);
        }

        $rcmail->output->send();
    }
}
actions/settings/response_edit.php000064400000011553151727150600013431 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show edit form for a canned response record                         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_response_edit extends rcmail_action_settings_responses
{
    protected static $mode = self::MODE_HTTP;
    protected static $response;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $title  = $rcmail->gettext($rcmail->action == 'add-response' ? 'addresponse' : 'editresponse');

        if (!empty($args['post'])) {
            self::$response = $args['post'];
        }
        else if ($id = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GP)) {
            self::$response = $rcmail->get_compose_response($id);

            if (!is_array(self::$response)) {
                $rcmail->output->show_message('dberror', 'error');
                $rcmail->output->send('iframe');
            }
        }

        $rcmail->output->set_pagetitle($title);
        $rcmail->output->set_env('readonly', !empty(self::$response['static']));
        $rcmail->output->add_handler('responseform', [$this, 'response_form']);
        $rcmail->output->send('responseedit');
    }

    /**
     * Get content of a response editing/adding form
     *
     * @param array $attrib Template object attributes
     *
     * @return string HTML content
     */
    public static function response_form($attrib)
    {
        $rcmail = rcmail::get_instance();

        // add some labels to client
        $rcmail->output->add_label('converting', 'editorwarning');

        // Set form tags and hidden fields
        $readonly = !empty(self::$response['static']);
        $is_html  = self::$response['is_html'] ?? false;
        $id       = self::$response['id'] ?? '';
        $hidden   = ['name' => '_id', 'value' => $id];

        list($form_start, $form_end) = self::get_form_tags($attrib, 'save-response', $id, $hidden);
        unset($attrib['form'], $attrib['id']);

        $name_attr = [
            'id'       => 'ffname',
            'size'     => $attrib['size'] ?? null,
            'readonly' => $readonly,
            'required' => true,
        ];

        $text_attr = [
            'id'       => 'fftext',
            'size'     => $attrib['textareacols'] ?? null,
            'rows'     => $attrib['textarearows'] ?? null,
            'readonly' => $readonly,
            'spellcheck'       => true,
            'data-html-editor' => true
        ];

        $chk_attr = [
            'id'       => 'ffis_html',
            'disabled' => $readonly,
            'onclick'  => "return rcmail.command('toggle-editor', {id: 'fftext', html: this.checked}, '', event)"
        ];

        // Add HTML editor script(s)
        self::html_editor('response', 'fftext');

        // Enable TinyMCE editor
        if ($is_html) {
            $text_attr['class']      = 'mce_editor';
            $text_attr['is_escaped'] = true;

            // Correctly handle HTML entities in HTML editor (#1488483)
            self::$response['data'] = htmlspecialchars(self::$response['data'], ENT_NOQUOTES, RCUBE_CHARSET);
        }

        $table = new html_table(['cols' => 2]);

        $table->add('title', html::label('ffname', rcube::Q($rcmail->gettext('responsename'))));
        $table->add(null, rcube_output::get_edit_field('name', self::$response['name'] ?? '', $name_attr, 'text'));

        $table->add('title', html::label('fftext', rcube::Q($rcmail->gettext('responsetext'))));
        $table->add(null, rcube_output::get_edit_field('text', self::$response['data'] ?? '', $text_attr, 'textarea'));

        $table->add('title', html::label('ffis_html', rcube::Q($rcmail->gettext('htmltoggle'))));
        $table->add(null, rcube_output::get_edit_field('is_html', $is_html, $chk_attr, 'checkbox'));

        // return the complete edit form as table
        return "$form_start\n" . $table->show($attrib) . $form_end;
    }
}
actions/settings/response_delete.php000064400000004066151727150600013747 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for canned response deletion                              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_response_delete extends rcmail_action
{
    static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if ($id = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GP)) {
            $plugin = $rcmail->plugins->exec_hook('response_delete', ['id' => $id]);

            $deleted = !$plugin['abort'] ? $rcmail->user->delete_response($id) : $plugin['result'];

            if (!empty($deleted)) {
                $rcmail->output->command('display_message', $rcmail->gettext('deletedsuccessfully'), 'confirmation');
                $rcmail->output->command('remove_response', $id);
            }
            else {
                $msg = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
                $rcmail->output->show_message($msg, 'error');
            }
        }

        $rcmail->output->send();
    }
}
actions/settings/folder_edit.php000064400000032264151727150600013050 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality to edit a folder                              |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_edit extends rcmail_action_settings_folders
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->output->add_handlers([
                'folderdetails' => [$this, 'folder_form'],
        ]);

        $rcmail->output->add_label('nonamewarning');

        $rcmail->output->send('folderedit');
    }

    public static function folder_form($attrib)
    {
        // WARNING: folder names in UI are encoded with RCUBE_CHARSET
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        // edited folder name (empty in create-folder mode)
        $mbox = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_GPC, true);

        // predefined path for new folder
        $parent = rcube_utils::get_input_string('_path', rcube_utils::INPUT_GPC, true);

        $threading_supported = $storage->get_capability('THREAD');
        $dual_use_supported  = $storage->get_capability(rcube_storage::DUAL_USE_FOLDERS);
        $delimiter           = $storage->get_hierarchy_delimiter();

        // Get mailbox parameters
        if (strlen($mbox)) {
            $options   = self::folder_options($mbox);
            $namespace = $storage->get_namespace();

            $path   = explode($delimiter, $mbox);
            $folder = array_pop($path);
            $path   = implode($delimiter, $path);
            $folder = rcube_charset::convert($folder, 'UTF7-IMAP');

            $hidden_fields = ['name' => '_mbox', 'value' => $mbox];
        }
        else {
            $options       = [];
            $path          = $parent;
            $folder        = '';
            $hidden_fields = [];

            // allow creating subfolders of INBOX folder
            if ($path == 'INBOX') {
                $path = $storage->mod_folder($path, 'in');
            }
        }

        // remove personal namespace prefix
        $path_id = null;
        if (strlen($path)) {
            $path_id = $path;
            $path    = $storage->mod_folder($path . $delimiter);
            if (($path[strlen($path)-1] ?? '') == $delimiter) {
                $path = substr($path, 0, -1);
            }
        }

        $form = [];

        // General tab
        $form['props'] = [
            'name' => $rcmail->gettext('properties'),
        ];

        // Location (name)
        if (!empty($options['protected'])) {
            $foldername = str_replace($delimiter, ' &raquo; ', rcube::Q(self::localize_foldername($mbox, false, true)));
        }
        else if (!empty($options['norename'])) {
            $foldername = rcube::Q($folder);
        }
        else {
            if (isset($_POST['_name'])) {
                $folder = trim(rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST, true));
            }

            $foldername = new html_inputfield(['name' => '_name', 'id' => '_name', 'size' => 30, 'class' => 'form-control']);
            $foldername = '<span class="input-group">' . $foldername->show($folder);

            if (!empty($options['special']) && ($sname = self::localize_foldername($mbox, false, true)) != $folder) {
                $foldername .= ' <span class="input-group-append"><span class="input-group-text">(' . rcube::Q($sname) .')</span></span>';
            }

            $foldername .= '</span>';
        }

        $form['props']['fieldsets']['location'] = [
            'name'  => $rcmail->gettext('location'),
            'content' => [
                'name' => [
                    'label' => $rcmail->gettext('foldername'),
                    'value' => $foldername,
                ],
            ],
        ];

        if (!empty($options) && (!empty($options['norename']) || !empty($options['protected']))) {
            // prevent user from moving folder
            $hidden_path = new html_hiddenfield(['name' => '_parent', 'value' => $path]);
            $form['props']['fieldsets']['location']['content']['name']['value'] .= $hidden_path->show();
        }
        else {
            $selected   = $_POST['_parent'] ?? $path_id;
            $exceptions = [$mbox];

            // Exclude 'prefix' namespace from parent folders list (#1488349)
            // If INBOX. namespace exists, folders created as INBOX subfolders
            // will be listed at the same level - selecting INBOX as a parent does nothing
            if ($prefix = $storage->get_namespace('prefix')) {
                $exceptions[] = substr($prefix, 0, -1);
            }

            $select = self::folder_selector([
                    'id'          => '_parent',
                    'name'        => '_parent',
                    'noselection' => '---',
                    'maxlength'   => 150,
                    'unsubscribed' => true,
                    'skip_noinferiors' => true,
                    'exceptions'  => $exceptions,
                    'additional'  => is_string($selected) && strlen($selected) ? [$selected] : null,
            ]);

            $form['props']['fieldsets']['location']['content']['parent'] = [
                'label' => $rcmail->gettext('parentfolder'),
                'value' => $select->show($selected),
            ];
        }

        // Settings
        $form['props']['fieldsets']['settings'] = [
            'name'  => $rcmail->gettext('settings'),
        ];

        // For servers that do not support both sub-folders and messages in a folder
        if (!$dual_use_supported) {
            if (!strlen($mbox)) {
                $select = new html_select(['name' => '_type', 'id' => '_type']);
                $select->add($rcmail->gettext('dualusemail'), 'mail');
                $select->add($rcmail->gettext('dualusefolder'), 'folder');

                $value = rcube_utils::get_input_string('_type', rcube_utils::INPUT_POST);
                $value = $select->show($value ?: 'mail');
            }
            else {
                $value = $options['noselect'] ? 'folder' : 'mail';
                $value = $rcmail->gettext('dualuse' . $value);
            }

            $form['props']['fieldsets']['settings']['content']['type'] = [
                'label' => $rcmail->gettext('dualuselabel'),
                'value' => $value,
            ];
        }

        // Settings: threading
        if ($threading_supported && ($mbox == 'INBOX' || (empty($options['noselect']) && empty($options['is_root'])))) {
            $value  = 0;
            $select = new html_select(['name' => '_viewmode', 'id' => '_viewmode']);

            $select->add($rcmail->gettext('list'), 0);
            $select->add($rcmail->gettext('threads'), 1);

            if (isset($_POST['_viewmode'])) {
                $value = (int) $_POST['_viewmode'];
            }
            else if (strlen($mbox)) {
                $a_threaded   = $rcmail->config->get('message_threading', []);
                $default_mode = $rcmail->config->get('default_list_mode', 'list');

                $value = (int) ($a_threaded[$mbox] ?? $default_mode == 'threads');
            }

            $form['props']['fieldsets']['settings']['content']['viewmode'] = [
                'label' => $rcmail->gettext('listmode'),
                'value' => $select->show($value),
            ];
        }

        $msgcount = 0;

        // Information (count, size) - Edit mode
        if (strlen($mbox)) {
            // Number of messages
            $form['props']['fieldsets']['info'] = [
                'name'    => $rcmail->gettext('info'),
                'content' => []
            ];

            if ((!$options['noselect'] && !$options['is_root']) || $mbox == 'INBOX') {
                $msgcount = (int) $storage->count($mbox, 'ALL', true, false);

                if ($msgcount) {
                    // Get the size on servers with supposed-to-be-fast method for that
                    if ($storage->get_capability('STATUS=SIZE')) {
                        $size = $storage->folder_size($mbox);
                        if ($size !== false) {
                            $size = self::show_bytes($size);
                        }
                    }

                    // create link with folder-size command
                    if (!isset($size) || $size === false) {
                        $onclick = sprintf("return %s.command('folder-size', '%s', this)",
                            rcmail_output::JS_OBJECT_NAME, rcube::JQ($mbox));

                        $attr = ['href' => '#', 'onclick' => $onclick, 'id' => 'folder-size'];
                        $size = html::a($attr, $rcmail->gettext('getfoldersize'));
                    }
                }
                else {
                    // no messages -> zero size
                    $size = 0;
                }

                $form['props']['fieldsets']['info']['content']['count'] = [
                    'label' => $rcmail->gettext('messagecount'),
                    'value' => $msgcount
                ];
                $form['props']['fieldsets']['info']['content']['size'] = [
                    'label' => $rcmail->gettext('size'),
                    'value' => $size,
                ];
            }

            // show folder type only if we have non-private namespaces
            if (!empty($namespace['shared']) || !empty($namespace['others'])) {
                $form['props']['fieldsets']['info']['content']['foldertype'] = [
                    'label' => $rcmail->gettext('foldertype'),
                    'value' => $rcmail->gettext($options['namespace'] . 'folder')
                ];
            }
        }

        // Allow plugins to modify folder form content
        $plugin = $rcmail->plugins->exec_hook('folder_form', [
                'form'        => $form,
                'options'     => $options,
                'name'        => $mbox,
                'parent_name' => $parent
        ]);

        $form = $plugin['form'];

        // Set form tags and hidden fields
        list($form_start, $form_end) = self::get_form_tags($attrib, 'save-folder', null, $hidden_fields);

        unset($attrib['form'], $attrib['id']);

        // return the complete edit form as table
        $out = "$form_start\n";

        // Create form output
        foreach ($form as $idx => $tab) {
            if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) {
                $content = '';
                foreach ($tab['fieldsets'] as $fieldset) {
                    $subcontent = self::get_form_part($fieldset, $attrib);
                    if ($subcontent) {
                        $subcontent = html::tag('legend', null, rcube::Q($fieldset['name'])) . $subcontent;
                        $content .= html::tag('fieldset', null, $subcontent) ."\n";
                    }
                }
            }
            else {
                $content = self::get_form_part($tab, $attrib);
            }

            if ($idx != 'props') {
                $out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) ."\n";
            }
            else {
                $out .= $content ."\n";
            }
        }

        $out .= "\n$form_end";

        $rcmail->output->set_env('messagecount', $msgcount);
        $rcmail->output->set_env('folder', $mbox);

        if ($mbox !== null && empty($_POST)) {
            $rcmail->output->command('parent.set_quota', self::quota_content(null, $mbox));
        }

        return $out;
    }

    public static function get_form_part($form, $attrib = [])
    {
        $rcmail  = rcmail::get_instance();
        $content = '';

        if (!empty($form['content']) && is_array($form['content'])) {
            $table = new html_table(['cols' => 2]);

            foreach ($form['content'] as $col => $colprop) {
                $colprop['id'] = '_' . $col;
                $label = !empty($colprop['label']) ? $colprop['label'] : $rcmail->gettext($col);

                $table->add('title', html::label($colprop['id'], rcube::Q($label)));
                $table->add(null, $colprop['value']);
            }

            $content = $table->show($attrib);
        }
        else if (isset($form['content'])) {
            $content = $form['content'];
        }

        return $content;
    }
}
actions/settings/index.php000064400000225366151727150600011706 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality for user's settings & preferences             |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_index extends rcmail_action
{
    /**
     * Deprecated action aliases.
     *
     * @var array
     */
    public static $aliases = [
        'rename-folder'    => 'folder-rename',
        'subscribe'        => 'folder-subscribe',
        'unsubscribe'      => 'folder-unsubscribe',
        'purge'            => 'folder-purge',
        'add-folder'       => 'folder-create',
        'add-identity'     => 'identity-create',
        'add-response'     => 'response-create',
        'delete-folder'    => 'folder-delete',
        'delete-identity'  => 'identity-delete',
        'delete-response'  => 'response-delete',
        'edit-folder'      => 'folder-edit',
        'edit-identity'    => 'identity-edit',
        'edit-prefs'       => 'prefs-edit',
        'edit-response'    => 'response-edit',
        'save-folder'      => 'folder-save',
        'save-identity'    => 'identity-save',
        'save-prefs'       => 'prefs-save',
        'save-response'    => 'response-save',
    ];

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if ($rcmail->output->type == 'html') {
            $rcmail->output->set_pagetitle($rcmail->gettext('preferences'));

            // register UI objects
            $rcmail->output->add_handlers([
                    'settingstabs' => [$this, 'settings_tabs'],
                    'sectionslist' => [$this, 'sections_list'],
            ]);
        }
    }

    /**
     * Render and initialize the settings sections table
     *
     * @param array $attrib Template object attributes
     *
     * @return string HTML content
     */
    public static function sections_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        // add id to message list table if not specified
        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmsectionslist';
        }

        list($list, $cols) = self::user_prefs();

        // create XHTML table
        $out = self::table_output($attrib, $list, $cols, 'id');

        // set client env
        $rcmail->output->add_gui_object('sectionslist', $attrib['id']);
        $rcmail->output->include_script('list.js');

        return $out;
    }

    public static function user_prefs($current = null)
    {
        $rcmail = rcmail::get_instance();

        $sections['general']     = ['id' => 'general', 'section' => $rcmail->gettext('uisettings')];
        $sections['mailbox']     = ['id' => 'mailbox', 'section' => $rcmail->gettext('mailboxview')];
        $sections['mailview']    = ['id' => 'mailview','section' => $rcmail->gettext('messagesdisplaying')];
        $sections['compose']     = ['id' => 'compose', 'section' => $rcmail->gettext('messagescomposition')];
        $sections['addressbook'] = ['id' => 'addressbook','section' => $rcmail->gettext('contacts')];
        $sections['folders']     = ['id' => 'folders', 'section' => $rcmail->gettext('specialfolders')];
        $sections['server']      = ['id' => 'server',  'section' => $rcmail->gettext('serversettings')];
        $sections['encryption']  = ['id' => 'encryption', 'section' => $rcmail->gettext('encryption')];

        // hook + define list cols
        $plugin = $rcmail->plugins->exec_hook('preferences_sections_list', [
                'list' => $sections,
                'cols' => ['section']
        ]);

        $sections    = $plugin['list'];
        $config      = $rcmail->config->all();
        $no_override = array_flip((array) $rcmail->config->get('dont_override'));

        foreach ($sections as $idx => $sect) {
            $sections[$idx]['class'] = !empty($sect['class']) ? $sect['class'] : $idx;

            if ($current && $sect['id'] != $current) {
                continue;
            }

            $blocks = [];

            switch ($sect['id']) {

            // general
            case 'general':
                $blocks = [
                    'main'    => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'skin'    => ['name' => rcube::Q($rcmail->gettext('skin'))],
                    'browser' => ['name' => rcube::Q($rcmail->gettext('browseroptions'))],
                    'advanced'=> ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                // language selection
                if (!isset($no_override['language'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $a_lang = $rcmail->list_languages();
                    asort($a_lang);

                    $field_id = 'rcmfd_lang';
                    $select = new html_select([
                            'name'  => '_language',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add(array_values($a_lang), array_keys($a_lang));

                    $blocks['main']['options']['language'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('language'))),
                        'content' => $select->show($rcmail->user->language),
                    ];
                }

                // timezone selection
                if (!isset($no_override['timezone'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_timezone';
                    $select = new html_select([
                            'name'  => '_timezone',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('autodetect'), 'auto');

                    $zones = [];
                    foreach (DateTimeZone::listIdentifiers() as $i => $tzs) {
                        if ($data = self::timezone_standard_time_data($tzs)) {
                            $zones[$data['key']] = [$tzs, $data['offset']];
                        }
                    }

                    ksort($zones);

                    foreach ($zones as $zone) {
                        list($tzs, $offset) = $zone;
                        $select->add('(GMT ' . $offset . ') ' . self::timezone_label($tzs), $tzs);
                    }

                    $blocks['main']['options']['timezone'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('timezone'))),
                        'content' => $select->show((string)$config['timezone']),
                    ];
                }

                // date/time formatting
                if (!isset($no_override['time_format'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $reftime  = mktime(7,30,0);
                    $defaults = ['G:i', 'H:i', 'g:i a', 'h:i A'];
                    $formats  = (array) $rcmail->config->get('time_formats', $defaults);
                    $field_id = 'rcmfd_time_format';
                    $select   = new html_select([
                            'name'  => '_time_format',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    foreach ($formats as $choice) {
                        $select->add(date($choice, $reftime), $choice);
                    }

                    $blocks['main']['options']['time_format'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('timeformat'))),
                        'content' => $select->show($rcmail->config->get('time_format')),
                    ];
                }

                if (!isset($no_override['date_format'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $refdate  = mktime(12,30,0,7,24);
                    $defaults = ['Y-m-d','d-m-Y','Y/m/d','m/d/Y','d/m/Y','d.m.Y','j.n.Y'];
                    $formats  = (array) $rcmail->config->get('date_formats', $defaults);
                    $field_id = 'rcmfd_date_format';
                    $select   = new html_select([
                            'name'  => '_date_format',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    foreach ($formats as $choice) {
                        $select->add(date($choice, $refdate), $choice);
                    }

                    $blocks['main']['options']['date_format'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('dateformat'))),
                        'content' => $select->show($config['date_format']),
                    ];
                }

                // Show checkbox for toggling 'pretty dates'
                if (!isset($no_override['prettydate'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_prettydate';
                    $input    = new html_checkbox([
                            'name'  => '_pretty_date',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['main']['options']['prettydate'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('prettydate'))),
                        'content' => $input->show($config['prettydate']?1:0),
                    ];
                }

                // "display after delete" checkbox
                if (!isset($no_override['display_next'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_displaynext';
                    $input    = new html_checkbox([
                            'name'  => '_display_next',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['main']['options']['display_next'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('displaynext'))),
                        'content' => $input->show($config['display_next']?1:0),
                    ];
                }

                if (!isset($no_override['refresh_interval'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_refresh_interval';
                    $select   = new html_select([
                            'name'  => '_refresh_interval',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('never'), 0);
                    foreach ([1, 3, 5, 10, 15, 30, 60] as $min) {
                        if (!$config['min_refresh_interval'] || $config['min_refresh_interval'] <= $min * 60) {
                            $label = $rcmail->gettext(['name' => 'everynminutes', 'vars' => ['n' => $min]]);
                            $select->add($label, $min);
                        }
                    }

                    $blocks['main']['options']['refresh_interval'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('refreshinterval'))),
                        'content' => $select->show($config['refresh_interval']/60),
                    ];
                }

                // show drop-down for available skins
                if (!isset($no_override['skin'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $skins = self::get_skins();

                    if (count($skins) > 1) {
                        sort($skins);

                        $field_id = 'rcmfd_skin';
                        $input    = new html_radiobutton(['name' => '_skin']);

                        foreach ($skins as $skin) {
                            $skinname     = ucfirst($skin);
                            $author_link  = '';
                            $license_link = '';
                            $meta         = @json_decode(@file_get_contents(INSTALL_PATH . "skins/$skin/meta.json"), true);

                            if (is_array($meta) && !empty($meta['name'])) {
                                $skinname     = $meta['name'];
                                $author_link  = !empty($meta['url']) ? html::a(['href' => $meta['url'], 'target' => '_blank'], rcube::Q($meta['author'])) : rcube::Q($meta['author']);
                                $license_link = !empty($meta['license-url']) ? html::a(['href' => $meta['license-url'], 'target' => '_blank', 'tabindex' => '-1'], rcube::Q($meta['license'])) : rcube::Q($meta['license']);
                            }

                            $img = html::img([
                                    'src'     => $rcmail->output->asset_url("skins/$skin/thumbnail.png"),
                                    'class'   => 'skinthumbnail',
                                    'alt'     => $skin,
                                    'width'   => 64,
                                    'height'  => 64,
                                    'onerror' => "this.onerror = null; this.src = 'data:image/gif;base64," . rcmail_output::BLANK_GIF ."';",
                            ]);

                            $blocks['skin']['options'][$skin]['content'] = html::label(['class' => 'skinselection'],
                                html::span('skinitem', $input->show($config['skin'], ['value' => $skin, 'id' => $field_id.$skin])) .
                                html::span('skinitem', $img) .
                                html::span('skinitem', html::span('skinname', rcube::Q($skinname)) . html::br() .
                                    html::span('skinauthor', $author_link ? 'by ' . $author_link : '') . html::br() .
                                    html::span('skinlicense', $license_link ? $rcmail->gettext('license').':&nbsp;' . $license_link : ''))
                            );
                        }
                    }
                }

                // standard_windows option decides if new windows should be
                // opened as popups or standard windows (which can be handled by browsers as tabs)
                if (!isset($no_override['standard_windows'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_standard_windows';
                    $checkbox = new html_checkbox([
                            'name'  => '_standard_windows',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['browser']['options']['standard_windows'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('standardwindows'))),
                        'content' => $checkbox->show($config['standard_windows']?1:0),
                    ];
                }

                if ($current) {
                    $product_name = $rcmail->config->get('product_name', 'Roundcube Webmail');
                    $rcmail->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
                        rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'docready');
                }

                $blocks['browser']['options']['mailtoprotohandler'] = [
                    'content' => html::a(['href' => '#', 'id' => 'mailtoprotohandler'],
                    rcube::Q($rcmail->gettext('mailtoprotohandler'))) .
                    html::span('mailtoprotohandler-status', ''),
                ];

            break;

            // Mailbox view (mail screen)
            case 'mailbox':
                $blocks = [
                    'main'        => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'new_message' => ['name' => rcube::Q($rcmail->gettext('newmessage'))],
                    'advanced'    => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                if (!isset($no_override['layout']) && count($config['supported_layouts']) > 1) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_layout';
                    $select   = new html_select([
                            'name'  => '_layout',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $layouts = [
                        'widescreen' => 'layoutwidescreendesc',
                        'desktop'    => 'layoutdesktopdesc',
                        'list'       => 'layoutlistdesc'
                    ];

                    $available_layouts = array_intersect_key($layouts, array_flip($config['supported_layouts']));
                    foreach ($available_layouts as $val => $label) {
                        $select->add($rcmail->gettext($label), $val);
                    }

                    $blocks['main']['options']['layout'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('layout'))),
                        'content' => $select->show($config['layout'] ?: 'widescreen'),
                    ];
                }

                // show config parameter for auto marking the previewed message as read
                if (!isset($no_override['mail_read_time'])) {
                    if (!$current) {
                        continue 2;
                    }

                    // apply default if config option is not set at all
                    $config['mail_read_time'] = intval($rcmail->config->get('mail_read_time'));

                    $field_id = 'rcmfd_mail_read_time';
                    $select   = new html_select([
                            'name'  => '_mail_read_time',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('never'), -1);
                    $select->add($rcmail->gettext('immediately'), 0);

                    foreach ([5, 10, 20, 30] as $sec) {
                        $label = $rcmail->gettext(['name' => 'afternseconds', 'vars' => ['n' => $sec]]);
                        $select->add($label, $sec);
                    }

                    $blocks['main']['options']['mail_read_time'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('automarkread'))),
                        'content' => $select->show($config['mail_read_time']),
                    ];
                }

                if (!isset($no_override['autoexpand_threads'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $storage   = $rcmail->get_storage();
                    $supported = $storage->get_capability('THREAD');

                    if ($supported) {
                        $field_id = 'rcmfd_autoexpand_threads';
                        $select   = new html_select([
                                'name'  => '_autoexpand_threads',
                                'id'    => $field_id,
                                'class' => 'custom-select'
                        ]);

                        $select->add($rcmail->gettext('never'), 0);
                        $select->add($rcmail->gettext('do_expand'), 1);
                        $select->add($rcmail->gettext('expand_only_unread'), 2);

                        $blocks['main']['options']['autoexpand_threads'] = [
                            'title'   => html::label($field_id, rcube::Q($rcmail->gettext('autoexpand_threads'))),
                            'content' => $select->show($config['autoexpand_threads']),
                        ];
                    }
                }

                // show page size selection
                if (!isset($no_override['mail_pagesize'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $size     = intval($config['mail_pagesize'] ?: $config['pagesize']);
                    $field_id = 'rcmfd_mail_pagesize';
                    $input    = new html_inputfield([
                            'name'  => '_mail_pagesize',
                            'id'    => $field_id,
                            'size'  => 5,
                            'class' => 'form-control'
                    ]);

                    $blocks['main']['options']['pagesize'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('pagesize'))),
                        'content' => $input->show($size ?: 50),
                    ];
                }

                if (!isset($no_override['check_all_folders'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_check_all_folders';
                    $input    = new html_checkbox([
                            'name'  => '_check_all_folders',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['new_message']['options']['check_all_folders'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('checkallfolders'))),
                        'content' => $input->show($config['check_all_folders']?1:0),
                    ];
                }

                break;

            // Message viewing
            case 'mailview':
                $blocks = [
                    'main'     => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'advanced' => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                // show checkbox to open message view in new window
                if (!isset($no_override['message_extwin'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_message_extwin';
                    $input    = new html_checkbox(['name' => '_message_extwin', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['message_extwin'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('showinextwin'))),
                        'content' => $input->show($config['message_extwin']?1:0),
                    ];
                }

                // show checkbox to show email instead of name
                if (!isset($no_override['message_show_email'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_message_show_email';
                    $input    = new html_checkbox(['name' => '_message_show_email', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['message_show_email'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('showemail'))),
                        'content' => $input->show($config['message_show_email']?1:0),
                    ];
                }

                // show checkbox for HTML/plaintext messages
                if (!isset($no_override['prefer_html'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_htmlmsg';
                    $input    = new html_checkbox([
                            'name'     => '_prefer_html',
                            'id'       => $field_id,
                            'value'    => 1,
                            'onchange' => "$('#rcmfd_show_images').prop('disabled', !this.checked).val(0)"
                    ]);

                    $blocks['main']['options']['prefer_html'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('preferhtml'))),
                        'content' => $input->show($config['prefer_html']?1:0),
                    ];
                }

                if (!isset($no_override['default_charset'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_default_charset';

                    $blocks['advanced']['options']['default_charset'] = [
                        'title' => html::label($field_id, rcube::Q($rcmail->gettext('defaultcharset'))),
                        'content' => $rcmail->output->charset_selector([
                                'id'       => $field_id,
                                'name'     => '_default_charset',
                                'selected' => $config['default_charset'],
                                'class'    => 'custom-select',
                        ])
                    ];
                }

                if (!isset($no_override['show_images'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_show_images';
                    $input    = new html_select([
                            'name'     => '_show_images',
                            'id'       => $field_id,
                            'class'    => 'custom-select',
                            'disabled' => empty($config['prefer_html'])
                    ]);

                    $input->add($rcmail->gettext('never'), 0);
                    $input->add($rcmail->gettext('frommycontacts'), 1);
                    $input->add($rcmail->gettext('fromtrustedsenders'), 3);
                    $input->add($rcmail->gettext('always'), 2);

                    $blocks['main']['options']['show_images'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('allowremoteresources'))),
                        'content' => $input->show(!empty($config['prefer_html']) ? $config['show_images'] : 0),
                    ];
                }

                if (!isset($no_override['mdn_requests'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_mdn_requests';
                    $select   = new html_select([
                            'name'  => '_mdn_requests',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('askuser'), 0);
                    $select->add($rcmail->gettext('autosend'), 1);
                    $select->add($rcmail->gettext('autosendknown'), 3);
                    $select->add($rcmail->gettext('autosendknownignore'), 4);
                    $select->add($rcmail->gettext('autosendtrusted'), 5);
                    $select->add($rcmail->gettext('autosendtrustedignore'), 6);
                    $select->add($rcmail->gettext('ignorerequest'), 2);

                    $blocks['main']['options']['mdn_requests'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('mdnrequests'))),
                        'content' => $select->show($config['mdn_requests']),
                    ];
                }

                if (!isset($no_override['inline_images'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_inline_images';
                    $input    = new html_checkbox(['name' => '_inline_images', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['inline_images'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('showinlineimages'))),
                        'content' => $input->show($config['inline_images']?1:0),
                    ];
                }

                break;

            // Mail composition
            case 'compose':
                $blocks = [
                    'main'       => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'sig'        => ['name' => rcube::Q($rcmail->gettext('signatureoptions'))],
                    'spellcheck' => ['name' => rcube::Q($rcmail->gettext('spellcheckoptions'))],
                    'advanced'   => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                // show checkbox to compose messages in a new window
                if (!isset($no_override['compose_extwin'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfdcompose_extwin';
                    $input    = new html_checkbox(['name' => '_compose_extwin', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['compose_extwin'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('composeextwin'))),
                        'content' => $input->show($config['compose_extwin']?1:0),
                    ];
                }

                if (!isset($no_override['htmleditor'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_htmleditor';
                    $select   = new html_select([
                            'name'  => '_htmleditor',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('never'), 0);
                    $select->add($rcmail->gettext('htmlonreply'), 2);
                    $select->add($rcmail->gettext('htmlonreplyandforward'), 3);
                    $select->add($rcmail->gettext('always'), 1);
                    $select->add($rcmail->gettext('alwaysbutplain'), 4);

                    $blocks['main']['options']['htmleditor'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('htmleditor'))),
                        'content' => $select->show(intval($config['htmleditor'])),
                    ];
                }

                if (!isset($no_override['draft_autosave'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_autosave';
                    $select   = new html_select([
                            'name'     => '_draft_autosave',
                            'id'       => $field_id,
                            'class'    => 'custom-select',
                            'disabled' => empty($config['drafts_mbox'])
                    ]);

                    $select->add($rcmail->gettext('never'), 0);
                    foreach ([1, 3, 5, 10] as $i => $min) {
                        $label = $rcmail->gettext(['name' => 'everynminutes', 'vars' => ['n' => $min]]);
                        $select->add($label, $min * 60);
                    }

                    $blocks['main']['options']['draft_autosave'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('autosavedraft'))),
                        'content' => $select->show($config['draft_autosave']),
                    ];
                }

                if (!isset($no_override['mime_param_folding'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_param_folding';
                    $select   = new html_select([
                            'name'  => '_mime_param_folding',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('2231folding'), 0);
                    $select->add($rcmail->gettext('miscfolding'), 1);
                    $select->add($rcmail->gettext('2047folding'), 2);

                    $blocks['advanced']['options']['mime_param_folding'] = [
                        'title'    => html::label($field_id, rcube::Q($rcmail->gettext('mimeparamfolding'))),
                        'content'  => $select->show($config['mime_param_folding']),
                    ];
                }

                if (!isset($no_override['force_7bit'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_force_7bit';
                    $input    = new html_checkbox(['name' => '_force_7bit', 'id' => $field_id, 'value' => 1]);

                    $blocks['advanced']['options']['force_7bit'] = [
                        'title'    => html::label($field_id, rcube::Q($rcmail->gettext('force7bit'))),
                        'content'  => $input->show($config['force_7bit']?1:0),
                    ];
                }

                if (!isset($no_override['mdn_default'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_mdn_default';
                    $input    = new html_checkbox(['name' => '_mdn_default', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['mdn_default'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('reqmdn'))),
                        'content' => $input->show($config['mdn_default']?1:0),
                    ];
                }

                if (!isset($no_override['dsn_default'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_dsn_default';
                    $input    = new html_checkbox(['name' => '_dsn_default', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['dsn_default'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('reqdsn'))),
                        'content' => $input->show($config['dsn_default']?1:0),
                    ];
                }

                if (!isset($no_override['reply_same_folder'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_reply_same_folder';
                    $input    = new html_checkbox(['name' => '_reply_same_folder', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['reply_same_folder'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('replysamefolder'))),
                        'content' => $input->show($config['reply_same_folder']?1:0),
                    ];
                }

                if (!isset($no_override['reply_mode'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_reply_mode';
                    $select   = new html_select(['name' => '_reply_mode', 'id' => $field_id, 'class' => 'custom-select']);

                    $select->add($rcmail->gettext('replyempty'), -1);
                    $select->add($rcmail->gettext('replybottomposting'), 0);
                    $select->add($rcmail->gettext('replytopposting'), 1);
                    $select->add($rcmail->gettext('replytoppostingnoindent'), 2);

                    $blocks['main']['options']['reply_mode'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('whenreplying'))),
                        'content' => $select->show(intval($config['reply_mode'])),
                    ];
                }

                if (!isset($no_override['spellcheck_before_send']) && $config['enable_spellcheck']) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_spellcheck_before_send';
                    $input    = new html_checkbox([
                            'name'  => '_spellcheck_before_send',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['spellcheck']['options']['spellcheck_before_send'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('spellcheckbeforesend'))),
                        'content' => $input->show($config['spellcheck_before_send']?1:0),
                    ];
                }

                if ($config['enable_spellcheck']) {
                    if (!$current) {
                        continue 2;
                    }

                    foreach (['syms', 'nums', 'caps'] as $key) {
                        $key = 'spellcheck_ignore_' . $key;
                        if (!isset($no_override[$key])) {
                            $input = new html_checkbox(['name' => '_' . $key, 'id' => 'rcmfd_' . $key, 'value' => 1]);

                            $blocks['spellcheck']['options'][$key] = [
                                'title'   => html::label('rcmfd_' . $key, rcube::Q($rcmail->gettext(str_replace('_', '', $key)))),
                                'content' => $input->show($config[$key]?1:0),
                            ];
                        }
                    }
                }

                if (!isset($no_override['show_sig'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_show_sig';
                    $select   = new html_select([
                            'name'  => '_show_sig',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('never'), 0);
                    $select->add($rcmail->gettext('always'), 1);
                    $select->add($rcmail->gettext('newmessageonly'), 2);
                    $select->add($rcmail->gettext('replyandforwardonly'), 3);

                    $blocks['sig']['options']['show_sig'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('autoaddsignature'))),
                        'content' => $select->show($rcmail->config->get('show_sig', 1)),
                    ];
                }

                if (!isset($no_override['sig_below'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_sig_below';
                    $input    = new html_checkbox(['name' => '_sig_below', 'id' => $field_id, 'value' => 1]);

                    $blocks['sig']['options']['sig_below'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('sigbelow'))),
                        'content' => $input->show($rcmail->config->get('sig_below') ? 1 : 0),
                    ];
                }

                if (!isset($no_override['strip_existing_sig'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_strip_existing_sig';
                    $input    = new html_checkbox([
                            'name'  => '_strip_existing_sig',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['sig']['options']['strip_existing_sig'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('replyremovesignature'))),
                        'content' => $input->show($config['strip_existing_sig']?1:0),
                    ];
                }

                if (!isset($no_override['sig_separator'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_sig_separator';
                    $input    = new html_checkbox(['name' => '_sig_separator', 'id' => $field_id, 'value' => 1]);

                    $blocks['sig']['options']['sig_separator'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('sigseparator'))),
                        'content' => $input->show($rcmail->config->get('sig_separator') ? 1 : 0),
                    ];
                }

                if (!isset($no_override['forward_attachment'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_forward_attachment';
                    $select = new html_select([
                            'name'  => '_forward_attachment',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('inline'), 0);
                    $select->add($rcmail->gettext('asattachment'), 1);

                    $blocks['main']['options']['forward_attachment'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('forwardmode'))),
                        'content' => $select->show(intval($config['forward_attachment'])),
                    ];
                }

                if (!isset($no_override['default_font']) || !isset($no_override['default_font_size'])) {
                    if (!$current) {
                        continue 2;
                    }

                    // Default font size
                    $field_id = 'rcmfd_default_font_size';
                    $select_size = new html_select([
                            'name'  => '_default_font_size',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $fontsizes = ['', '8pt', '9pt', '10pt', '11pt', '12pt', '14pt', '18pt', '24pt', '36pt'];
                    foreach ($fontsizes as $size) {
                        $select_size->add($size, $size);
                    }

                    // Default font
                    $field_id = 'rcmfd_default_font';
                    $select_font = new html_select([
                            'name' => '_default_font',
                            'id' => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select_font->add('', '');

                    $fonts = self::font_defs();
                    foreach (array_keys($fonts) as $fname) {
                        $select_font->add($fname, $fname);
                    }

                    $blocks['main']['options']['default_font'] = [
                        'title' => html::label($field_id, rcube::Q($rcmail->gettext('defaultfont'))),
                        'content' => html::div('input-group',
                            $select_font->show($rcmail->config->get('default_font', 1)) .
                            $select_size->show($rcmail->config->get('default_font_size', 1))
                        )
                    ];
                }

                if (!isset($no_override['reply_all_mode'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_reply_all_mode';
                    $select   = new html_select([
                            'name'  => '_reply_all_mode',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('replyalldefault'), 0);
                    $select->add($rcmail->gettext('replyalllist'), 1);

                    $blocks['main']['options']['reply_all_mode'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('replyallmode'))),
                        'content' => $select->show(intval($config['reply_all_mode'])),
                    ];
                }

                if (!isset($no_override['compose_save_localstorage'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_compose_save_localstorage';
                    $input    = new html_checkbox([
                            'name'  => '_compose_save_localstorage',
                            'id'    => $field_id,
                            'value' => 1
                    ]);

                    $blocks['advanced']['options']['compose_save_localstorage'] = [
                        'title'    => html::label($field_id, rcube::Q($rcmail->gettext('savelocalstorage'))),
                        'content'  => $input->show($config['compose_save_localstorage']?1:0),
                    ];
                }

                break;

            // Addressbook config
            case 'addressbook':
                $blocks = [
                    'main'      => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'collected' => ['name' => rcube::Q($rcmail->gettext('collectedaddresses'))],
                    'advanced'  => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                if (!isset($no_override['default_addressbook'])
                    && (!$current || ($books = $rcmail->get_address_sources(true, true)))
                ) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_default_addressbook';
                    $select   = new html_select([
                            'name'  => '_default_addressbook',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    if (!empty($books)) {
                        foreach ($books as $book) {
                            $select->add(html_entity_decode($book['name'], ENT_COMPAT, 'UTF-8'), $book['id']);
                        }
                    }

                    $blocks['main']['options']['default_addressbook'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('defaultabook'))),
                        'content' => $select->show($config['default_addressbook']),
                    ];
                }

                // show addressbook listing mode selection
                if (!isset($no_override['addressbook_name_listing'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_addressbook_name_listing';
                    $select   = new html_select([
                            'name'  => '_addressbook_name_listing',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('name'), 0);
                    $select->add($rcmail->gettext('firstname') . ' '  . $rcmail->gettext('surname'), 1);
                    $select->add($rcmail->gettext('surname')   . ' '  . $rcmail->gettext('firstname'), 2);
                    $select->add($rcmail->gettext('surname')   . ', ' . $rcmail->gettext('firstname'), 3);

                    $blocks['main']['options']['list_name_listing'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('listnamedisplay'))),
                        'content' => $select->show($config['addressbook_name_listing']),
                    ];
                }

                // show addressbook sort column
                if (!isset($no_override['addressbook_sort_col'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_addressbook_sort_col';
                    $select   = new html_select([
                            'name'  => '_addressbook_sort_col',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('name'), 'name');
                    $select->add($rcmail->gettext('firstname'), 'firstname');
                    $select->add($rcmail->gettext('surname'), 'surname');

                    $blocks['main']['options']['sort_col'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('listsorting'))),
                        'content' => $select->show($config['addressbook_sort_col']),
                    ];
                }

                // show addressbook page size selection
                if (!isset($no_override['addressbook_pagesize'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $size     = intval($config['addressbook_pagesize'] ?: $config['pagesize']);
                    $field_id = 'rcmfd_addressbook_pagesize';
                    $input    = new html_inputfield([
                            'name'  => '_addressbook_pagesize',
                            'id'    => $field_id,
                            'size'  => 5,
                            'class' => 'form-control'
                    ]);

                    $blocks['main']['options']['pagesize'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('pagesize'))),
                        'content' => $input->show($size ?: 50),
                    ];
                }

                if (!isset($no_override['contact_form_mode'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $mode     = $config['contact_form_mode'] == 'business' ? 'business' : 'private';
                    $field_id = 'rcmfd_contact_form_mode';
                    $select   = new html_select([
                            'name'  => '_contact_form_mode',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('privatemode'), 'private');
                    $select->add($rcmail->gettext('businessmode'), 'business');

                    $blocks['main']['options']['contact_form_mode'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('contactformmode'))),
                        'content' => $select->show($mode),
                    ];
                }

                if (!isset($no_override['autocomplete_single'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_autocomplete_single';
                    $checkbox = new html_checkbox(['name' => '_autocomplete_single', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['autocomplete_single'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('autocompletesingle'))),
                        'content' => $checkbox->show($config['autocomplete_single']?1:0),
                    ];
                }

                if (!isset($no_override['collected_recipients'])) {
                    if (!$current) {
                        continue 2;
                    }

                    if (!isset($books)) {
                        $books = $rcmail->get_address_sources(true, true);
                    }

                    $field_id = 'rcmfd_collected_recipients';
                    $select   = new html_select([
                            'name'  => '_collected_recipients',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add('---', '');
                    $select->add($rcmail->gettext('collectedrecipients'), (string) rcube_addressbook::TYPE_RECIPIENT);

                    foreach ($books as $book) {
                        $select->add(html_entity_decode($book['name'], ENT_COMPAT, 'UTF-8'), $book['id']);
                    }

                    $selected = $config['collected_recipients'];
                    if (is_bool($selected)) {
                        $selected = $selected ? rcube_addressbook::TYPE_RECIPIENT : '';
                    }

                    $blocks['collected']['options']['collected_recipients'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('collectedrecipientsopt'))),
                        'content' => $select->show((string) $selected),
                    ];
                }

                if (!isset($no_override['collected_senders'])) {
                    if (!$current) {
                        continue 2;
                    }

                    if (!isset($books)) {
                        $books = $rcmail->get_address_sources(true, true);
                    }

                    $field_id = 'rcmfd_collected_senders';
                    $select   = new html_select([
                            'name'  => '_collected_senders',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('trustedsenders'), (string) rcube_addressbook::TYPE_TRUSTED_SENDER);

                    foreach ($books as $book) {
                        $select->add(html_entity_decode($book['name'], ENT_COMPAT, 'UTF-8'), $book['id']);
                    }

                    $selected = $config['collected_senders'];
                    if (is_bool($selected)) {
                        $selected = $selected ? rcube_addressbook::TYPE_TRUSTED_SENDER : '';
                    }

                    $blocks['collected']['options']['collected_senders'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('collectedsendersopt'))),
                        'content' => $select->show((string) $selected),
                    ];
                }

                break;

            // Special IMAP folders
            case 'folders':
                $blocks = [
                    'main'     => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'advanced' => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                if (!isset($no_override['show_real_foldernames'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'show_real_foldernames';
                    $input    = new html_checkbox(['name' => '_show_real_foldernames', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['show_real_foldernames'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('show_real_foldernames'))),
                        'content' => $input->show($config['show_real_foldernames']?1:0),
                    ];
                }

                // Configure special folders
                $set = ['drafts_mbox', 'sent_mbox', 'junk_mbox', 'trash_mbox'];

                if ($current && count(array_intersect($no_override, $set)) < 4) {
                    $select = self::folder_selector([
                            'noselection'   => '---',
                            'realnames'     => true,
                            'maxlength'     => 30,
                            'folder_filter' => 'mail',
                            'folder_rights' => 'w',
                            'class'         => 'custom-select',
                    ]);

                    // #1486114, #1488279, #1489219
                    $onchange = "if ($(this).val() == 'INBOX') $(this).val('')";
                }
                else {
                    $onchange = null;
                    $select   = new html_select();
                }

                if (!isset($no_override['drafts_mbox'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $attrs = ['id' => '_drafts_mbox', 'name' => '_drafts_mbox', 'onchange' => $onchange];
                    $blocks['main']['options']['drafts_mbox'] = [
                        'title'   => html::label($attrs['id'], rcube::Q($rcmail->gettext('drafts'))),
                        'content' => $select->show($config['drafts_mbox'], $attrs),
                    ];
                }

                if (!isset($no_override['sent_mbox'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $attrs = ['id' => '_sent_mbox', 'name' => '_sent_mbox', 'onchange' => ''];
                    $blocks['main']['options']['sent_mbox'] = [
                        'title'   => html::label($attrs['id'], rcube::Q($rcmail->gettext('sent'))),
                        'content' => $select->show($config['sent_mbox'], $attrs),
                    ];
                }

                if (!isset($no_override['junk_mbox'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $attrs = ['id' => '_junk_mbox', 'name' => '_junk_mbox', 'onchange' => $onchange];
                    $blocks['main']['options']['junk_mbox'] = [
                        'title'   => html::label($attrs['id'], rcube::Q($rcmail->gettext('junk'))),
                        'content' => $select->show($config['junk_mbox'], $attrs),
                    ];
                }

                if (!isset($no_override['trash_mbox'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $attrs = ['id' => '_trash_mbox', 'name' => '_trash_mbox', 'onchange' => $onchange];
                    $blocks['main']['options']['trash_mbox'] = [
                        'title'   => html::label($attrs['id'], rcube::Q($rcmail->gettext('trash'))),
                        'content' => $select->show($config['trash_mbox'], $attrs),
                    ];
                }

                break;

            // Server settings
            case 'server':
                $blocks = [
                    'main'        => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'maintenance' => ['name' => rcube::Q($rcmail->gettext('maintenance'))],
                    'advanced'    => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                if (!isset($no_override['read_when_deleted'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_read_deleted';
                    $input    = new html_checkbox(['name' => '_read_when_deleted', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['read_when_deleted'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('readwhendeleted'))),
                        'content' => $input->show($config['read_when_deleted']?1:0),
                    ];
                }

                if (!isset($no_override['flag_for_deletion'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_flag_for_deletion';
                    $input    = new html_checkbox(['name' => '_flag_for_deletion', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['flag_for_deletion'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('flagfordeletion'))),
                        'content' => $input->show($config['flag_for_deletion']?1:0),
                    ];
                }

                // don't show deleted messages
                if (!isset($no_override['skip_deleted'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_skip_deleted';
                    $input    = new html_checkbox(['name' => '_skip_deleted', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['skip_deleted'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('skipdeleted'))),
                        'content' => $input->show($config['skip_deleted']?1:0),
                    ];
                }

                if (!isset($no_override['delete_junk'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_delete_junk';
                    $input    = new html_checkbox(['name' => '_delete_junk', 'id' => $field_id, 'value' => 1]);

                    $blocks['main']['options']['delete_junk'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('deletejunk'))),
                        'content' => $input->show($config['delete_junk']?1:0),
                    ];
                }

                // Trash purging on logout
                if (!isset($no_override['logout_purge'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_logout_purge';
                    $select   = new html_select([
                            'name'  => '_logout_purge',
                            'id'    => $field_id,
                            'class' => 'custom-select'
                    ]);

                    $select->add($rcmail->gettext('never'), 'never');
                    $select->add($rcmail->gettext('allmessages'), 'all');

                    foreach ([30, 60, 90] as $days) {
                        $select->add($rcmail->gettext(['name' => 'olderxdays', 'vars' => ['x' => $days]]), (string) $days);
                    }

                    $purge = $config['logout_purge'];
                    if (!is_numeric($purge)) {
                        $purge = empty($purge) ? 'never' : 'all';
                    }

                    $blocks['maintenance']['options']['logout_purge'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('logoutclear'))),
                        'content' => $select->show((string) $purge),
                    ];
                }

                // INBOX compacting on logout
                if (!isset($no_override['logout_expunge'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_logout_expunge';
                    $input    = new html_checkbox(['name' => '_logout_expunge', 'id' => $field_id, 'value' => 1]);

                    $blocks['maintenance']['options']['logout_expunge'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('logoutcompact'))),
                        'content' => $input->show($config['logout_expunge']?1:0),
                    ];
                }

                break;

            // Server settings
            case 'encryption':
                $blocks = [
                    'main'       => ['name' => rcube::Q($rcmail->gettext('mainoptions'))],
                    'mailvelope' => ['name' => rcube::Q($rcmail->gettext('mailvelopeoptions'))],
                    'advanced'   => ['name' => rcube::Q($rcmail->gettext('advancedoptions'))],
                ];

                if (!isset($no_override['mailvelope_main_keyring'])) {
                    if (!$current) {
                        continue 2;
                    }

                    $field_id = 'rcmfd_mailvelope_main_keyring';
                    $input    = new html_checkbox(['name' => '_mailvelope_main_keyring', 'id' => $field_id, 'value' => 1]);

                    $blocks['mailvelope']['options']['mailvelope_status'] = [
                        'content' => html::div(
                            ['style' => 'display:none', 'class' => 'boxwarning', 'id' => 'mailvelope-warning'],
                            str_replace(
                                'Mailvelope', '<a href="https://www.mailvelope.com" target="_blank">Mailvelope</a>',
                                rcube::Q($rcmail->gettext('mailvelopenotfound'))
                            )
                            . html::script([], "if (!parent.mailvelope) \$('#mailvelope-warning').show()")
                        )
                    ];

                    $blocks['mailvelope']['options']['mailvelope_main_keyring'] = [
                        'title'   => html::label($field_id, rcube::Q($rcmail->gettext('mailvelopemainkeyring'))),
                        'content' => $input->show(!empty($config['mailvelope_main_keyring']) ? 1 : 0),
                    ];
                }

                break;
            }

            $found = false;
            $data  = $rcmail->plugins->exec_hook('preferences_list', [
                    'section' => $sect['id'],
                    'blocks'  => $blocks,
                    'current' => $current
            ]);

            $advanced_prefs = (array) $rcmail->config->get('advanced_prefs');

            // create output
            foreach ($data['blocks'] as $key => $block) {
                if (!empty($block['content']) || !empty($block['options'])) {
                    $found = true;
                }
                // move some options to the 'advanced' block as configured by admin
                if ($key != 'advanced') {
                    foreach ($advanced_prefs as $opt) {
                        if ($block['options'][$opt]) {
                            $data['blocks']['advanced']['options'][$opt] = $block['options'][$opt];
                            unset($data['blocks'][$key]['options'][$opt]);
                        }
                    }
                }
            }

            // move 'advanced' block to the end of the list
            if (!empty($data['blocks']['advanced'])) {
                $adv = $data['blocks']['advanced'];
                unset($data['blocks']['advanced']);
                $data['blocks']['advanced'] = $adv;
            }

            if (!$found) {
                unset($sections[$idx]);
            }
            else {
                $sections[$idx]['blocks'] = $data['blocks'];
            }

            // allow plugins to add a header to each section
            $data = $rcmail->plugins->exec_hook('preferences_section_header',
                ['section' => $sect['id'], 'header' => '', 'current' => $current]);

            if (!empty($data['header'])) {
                $sections[$idx]['header'] = $data['header'];
            }
        }

        return [$sections, $plugin['cols']];
    }

    /**
     * Get list of installed skins
     *
     * @return array List of skin names
     */
    public static function get_skins()
    {
        $rcmail = rcmail::get_instance();
        $path   = RCUBE_INSTALL_PATH . 'skins';
        $skins  = [];
        $dir    = opendir($path);
        $limit  = (array) $rcmail->config->get('skins_allowed');

        if (!$dir) {
            return false;
        }

        while (($file = readdir($dir)) !== false) {
            $filename = $path . '/' . $file;
            if ($file[0] != '.'
                && (empty($limit) || in_array($file, $limit))
                && is_dir($filename) && is_readable($filename)
            ) {
                $skins[] = $file;
            }
        }

        closedir($dir);

        return $skins;
    }

    /**
     * Render the list of settings sections (AKA tabs)
     *
     * @param array $attrib Template object attributes
     *
     * @return string HTML content
     */
    public static function settings_tabs($attrib)
    {
        $rcmail = rcmail::get_instance();

        // add default attributes
        $attrib += ['tagname' => 'span', 'idprefix' => 'settingstab', 'selclass' => 'selected'];

        $default_actions = [
            ['action' => 'preferences', 'type' => 'link', 'label' => 'preferences', 'title' => 'editpreferences'],
            ['action' => 'folders',     'type' => 'link', 'label' => 'folders',     'title' => 'managefolders'],
            ['action' => 'identities',  'type' => 'link', 'label' => 'identities',  'title' => 'manageidentities'],
            ['action' => 'responses',   'type' => 'link', 'label' => 'responses',   'title' => 'manageresponses'],
        ];

        $disabled_actions = (array) $rcmail->config->get('disabled_actions');

        // get all identities from DB and define list of cols to be displayed
        $plugin = $rcmail->plugins->exec_hook('settings_actions', [
                'actions' => $default_actions,
                'attrib'  => $attrib,
        ]);

        $selected = !empty($rcmail->action) ? $rcmail->action : 'preferences';
        $attrib   = $plugin['attrib'];
        $tagname  = $attrib['tagname'];
        $tabs     = [];

        foreach ($plugin['actions'] as $action) {
            if (empty($action['command']) && !empty($action['action'])) {
                $action['prop'] = $action['action'];
                $action['command'] = 'show';
            }
            else if (empty($action['command']) || $action['command'] != 'show') {
                // Backwards compatibility, show command added in 1.4
                $action['prop']    = !empty($action['command']) ? $action['command'] : null;
                $action['command'] = 'show';
            }

            $cmd = !empty($action['prop']) ? $action['prop'] : $action['action'];
            $id  = !empty($action['id']) ? $action['id'] : $cmd;

            if (in_array('settings.' . $cmd, $disabled_actions)) {
                continue;
            }

            if (empty($action['href'])) {
                $action['href'] = $rcmail->url(['_action' => $cmd]);
            }

            $button = $rcmail->output->button($action + ['type' => 'link']);
            $attr   = $attrib;

            if (!empty($id)) {
                $attr['id'] = preg_replace('/[^a-z0-9]/i', '', $attrib['idprefix'] . $id);
            }

            $classnames = [];
            if (!empty($attrib['class'])) {
                $classnames[] = $attrib['class'];
            }
            if (!empty($action['class'])) {
                $classnames[] = $action['class'];
            }
            else if (!empty($cmd)) {
                $classnames[] = $cmd;
            }
            if ($cmd == $selected && !empty($attrib['selclass'])) {
                $classnames[] = $attrib['selclass'];
            }

            $attr['class'] = join(' ', $classnames);
            $tabs[] = html::tag($tagname, $attr, $button, html::$common_attrib);
        }

        return join('', $tabs);
    }

    /**
     * Localize timezone identifiers
     *
     * @param string $tz Timezone name
     *
     * @return string Localized timezone name
     */
    public static function timezone_label($tz)
    {
        static $labels;

        if ($labels === null) {
            $labels = [];
            $lang   = $_SESSION['language'];
            if ($lang && $lang != 'en_US') {
                if (file_exists(RCUBE_LOCALIZATION_DIR . "$lang/timezones.inc")) {
                    include RCUBE_LOCALIZATION_DIR . "$lang/timezones.inc";
                }
            }
        }

        if (empty($labels)) {
            return str_replace('_', ' ', $tz);
        }

        $tokens = explode('/', $tz);
        $key    = 'tz';

        foreach ($tokens as $i => $token) {
            $idx   = strtolower($token);
            $token = str_replace('_', ' ', $token);
            $key  .= ":$idx";

            $tokens[$i] = !empty($labels[$key]) ? $labels[$key] : $token;
        }

        return implode('/', $tokens);
    }

    /**
     * Returns timezone offset in standard time
     */
    public static function timezone_standard_time_data($tzname)
    {
        try {
            $tz    = new DateTimeZone($tzname);
            $date  = new DateTime('now', $tz);
            $count = 12;

            // Move back for a month (up to 12 times) until non-DST date is found
            while ($count > 0 && $date->format('I')) {
                $date->sub(new DateInterval('P1M'));
                $count--;
            }

            $offset  = $date->format('Z') + 45000;
            $sortkey = sprintf('%06d.%s', $offset, $tzname);

            return [
                'key'    => $sortkey,
                'offset' => $date->format('P'),
            ];
        }
        catch (Exception $e) {
            // ignore
        }
    }

    /**
     * Attach uploaded images into signature as data URIs
     */
    public static function attach_images($html, $mode)
    {
        $rcmail = rcmail::get_instance();
        $offset = 0;
        $regexp = '/\s(poster|src)\s*=\s*[\'"]*\S+upload-display\S+file=rcmfile(\w+)[\s\'"]*/';

        while (preg_match($regexp, $html, $matches, 0, $offset)) {
            $file_id  = $matches[2];
            $data_uri = ' ';

            if ($file_id && !empty($_SESSION[$mode]['files'][$file_id])) {
                $file = $_SESSION[$mode]['files'][$file_id];
                $file = $rcmail->plugins->exec_hook('attachment_get', $file);

                $data_uri .= 'src="data:' . $file['mimetype'] . ';base64,';
                $data_uri .= base64_encode(!empty($file['data']) ? $file['data'] : file_get_contents($file['path']));
                $data_uri .= '" ';
            }

            $html    = str_replace($matches[0], $data_uri, $html);
            $offset += strlen($data_uri) - strlen($matches[0]) + 1;
        }

        return $html;
    }

    /**
     * Sanity checks/cleanups on HTML body of signature
     */
    public static function wash_html($html)
    {
        // Add header with charset spec., washtml cannot work without that
        $html = '<html><head>'
            . '<meta http-equiv="Content-Type" content="text/html; charset='.RCUBE_CHARSET.'" />'
            . '</head><body>' . $html . '</body></html>';

        // clean HTML with washtml by Frederic Motte
        $wash_opts = [
            'show_washed'   => false,
            'allow_remote'  => 1,
            'charset'       => RCUBE_CHARSET,
            'html_elements' => ['body', 'link'],
            'html_attribs'  => ['rel', 'type'],
        ];

        // initialize HTML washer
        $washer = new rcube_washtml($wash_opts);

        // Remove non-UTF8 characters (#1487813)
        $html = rcube_charset::clean($html);

        $html = $washer->wash($html);

        // remove unwanted comments and tags (produced by washtml)
        $html = preg_replace(['/<!--[^>]+-->/', '/<\/?body>/'], '', $html);

        return $html;
    }
}
actions/settings/prefs_save.php000064400000030676151727150600012732 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Save user preferences to DB and to the current session              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_prefs_save extends rcmail_action
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $CURR_SECTION  = rcube_utils::get_input_string('_section', rcube_utils::INPUT_POST);
        $dont_override = (array) $rcmail->config->get('dont_override');
        $a_user_prefs  = [];

        // set options for specified section
        switch ($CURR_SECTION) {
        case 'general':
            $a_user_prefs = [
                'language'     => self::prefs_input('language', '/^[a-zA-Z0-9_-]+$/'),
                'timezone'     => self::prefs_input('timezone', '/^[a-zA-Z_\/-]+$/'),
                'date_format'  => self::prefs_input('date_format', '/^[a-zA-Z_.\/ -]+$/'),
                'time_format'  => self::prefs_input('time_format', '/^[a-zA-Z0-9: ]+$/'),
                'prettydate'   => isset($_POST['_pretty_date']),
                'display_next' => isset($_POST['_display_next']),
                'refresh_interval' => self::prefs_input_int('refresh_interval') * 60,
                'standard_windows' => isset($_POST['_standard_windows']),
                'skin'         => self::prefs_input('skin', '/^[a-zA-Z0-9_.-]+$/'),
            ];

            // compose derived date/time format strings
            if (
                (isset($_POST['_date_format']) || isset($_POST['_time_format']))
                && !empty($a_user_prefs['date_format'])
                && !empty($a_user_prefs['time_format'])
            ) {
                $a_user_prefs['date_short'] = 'D ' . $a_user_prefs['time_format'];
                $a_user_prefs['date_long']  = $a_user_prefs['date_format'] . ' ' . $a_user_prefs['time_format'];
            }

            break;

        case 'mailbox':
            $a_user_prefs = [
                'layout'             => self::prefs_input('layout', '/^[a-z]+$/'),
                'mail_read_time'     => self::prefs_input_int('mail_read_time'),
                'autoexpand_threads' => self::prefs_input_int('autoexpand_threads'),
                'check_all_folders'  => isset($_POST['_check_all_folders']),
                'mail_pagesize'      => max(2, self::prefs_input_int('mail_pagesize')),
            ];

            break;

        case 'mailview':
            $a_user_prefs = [
                'message_extwin'     => self::prefs_input_int('message_extwin'),
                'message_show_email' => isset($_POST['_message_show_email']),
                'prefer_html'        => isset($_POST['_prefer_html']),
                'inline_images'      => isset($_POST['_inline_images']),
                'show_images'        => self::prefs_input_int('show_images'),
                'mdn_requests'       => self::prefs_input_int('mdn_requests'),
                'default_charset'    => self::prefs_input('default_charset', '/^[a-zA-Z0-9-]+$/'),
            ];

            break;

        case 'compose':
            $a_user_prefs = [
                'compose_extwin'     => self::prefs_input_int('compose_extwin'),
                'htmleditor'         => self::prefs_input_int('htmleditor'),
                'draft_autosave'     => self::prefs_input_int('draft_autosave'),
                'mime_param_folding' => self::prefs_input_int('mime_param_folding'),
                'force_7bit'         => isset($_POST['_force_7bit']),
                'mdn_default'        => isset($_POST['_mdn_default']),
                'dsn_default'        => isset($_POST['_dsn_default']),
                'reply_same_folder'  => isset($_POST['_reply_same_folder']),
                'spellcheck_before_send' => isset($_POST['_spellcheck_before_send']),
                'spellcheck_ignore_syms' => isset($_POST['_spellcheck_ignore_syms']),
                'spellcheck_ignore_nums' => isset($_POST['_spellcheck_ignore_nums']),
                'spellcheck_ignore_caps' => isset($_POST['_spellcheck_ignore_caps']),
                'show_sig'           => self::prefs_input_int('show_sig'),
                'reply_mode'         => self::prefs_input_int('reply_mode'),
                'sig_below'          => isset($_POST['_sig_below']),
                'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
                'sig_separator'      => isset($_POST['_sig_separator']),
                'default_font'       => self::prefs_input('default_font', '/^[a-zA-Z ]+$/'),
                'default_font_size'  => self::prefs_input('default_font_size', '/^[0-9]+pt$/'),
                'reply_all_mode'     => self::prefs_input_int('reply_all_mode'),
                'forward_attachment' => !empty($_POST['_forward_attachment']),
                'compose_save_localstorage' => self::prefs_input_int('compose_save_localstorage'),
            ];

            break;

        case 'addressbook':
            $a_user_prefs = [
                'default_addressbook'  => rcube_utils::get_input_string('_default_addressbook', rcube_utils::INPUT_POST, true),
                'collected_recipients' => rcube_utils::get_input_string('_collected_recipients', rcube_utils::INPUT_POST, true),
                'collected_senders'    => rcube_utils::get_input_string('_collected_senders', rcube_utils::INPUT_POST, true),
                'autocomplete_single'  => isset($_POST['_autocomplete_single']),
                'addressbook_sort_col' => self::prefs_input('addressbook_sort_col', '/^[a-z_]+$/'),
                'addressbook_name_listing' => self::prefs_input_int('addressbook_name_listing'),
                'addressbook_pagesize' => max(2, self::prefs_input_int('addressbook_pagesize')),
                'contact_form_mode'    => self::prefs_input('contact_form_mode', '/^(private|business)$/'),
            ];

            break;

        case 'server':
            $a_user_prefs = [
                'read_when_deleted' => isset($_POST['_read_when_deleted']),
                'skip_deleted'      => isset($_POST['_skip_deleted']),
                'flag_for_deletion' => isset($_POST['_flag_for_deletion']),
                'delete_junk'       => isset($_POST['_delete_junk']),
                'logout_purge'      => self::prefs_input('logout_purge', '/^(all|never|30|60|90)$/'),
                'logout_expunge'    => isset($_POST['_logout_expunge']),
            ];

            break;

        case 'folders':
            $a_user_prefs = [
                'show_real_foldernames' => isset($_POST['_show_real_foldernames']),
                // stop using SPECIAL-USE (#4782)
                'lock_special_folders'  => !in_array('lock_special_folders', $dont_override),
            ];

            foreach (rcube_storage::$folder_types as $type) {
                $a_user_prefs[$type . '_mbox'] = rcube_utils::get_input_string('_' . $type . '_mbox', rcube_utils::INPUT_POST, true);
            };

            break;

        case 'encryption':
            $a_user_prefs = [
                'mailvelope_main_keyring' => isset($_POST['_mailvelope_main_keyring']),
            ];

            break;
        }

        $plugin = rcmail::get_instance()->plugins->exec_hook('preferences_save',
            ['prefs' => $a_user_prefs, 'section' => $CURR_SECTION]);

        $a_user_prefs = $plugin['prefs'];

        // don't override these parameters
        foreach ($dont_override as $p) {
            $a_user_prefs[$p] = $rcmail->config->get($p);
        }

        // verify some options
        switch ($CURR_SECTION) {
        case 'general':
            // switch UI language
            if (isset($_POST['_language']) && $a_user_prefs['language'] != $_SESSION['language']) {
                $rcmail->load_language($a_user_prefs['language']);
                $rcmail->output->command('reload', 500);
            }

            // switch skin (if valid, otherwise unset the pref and fall back to default)
            if (!empty($a_user_prefs['skin'])) {
                if (!$rcmail->output->check_skin($a_user_prefs['skin'])) {
                    unset($a_user_prefs['skin']);
                }
                else if ($rcmail->config->get('skin') != $a_user_prefs['skin']) {
                    $rcmail->output->command('reload', 500);
                }
            }

            $a_user_prefs['timezone'] = (string) $a_user_prefs['timezone'];

            $min_refresh_interval = (int) $rcmail->config->get('min_refresh_interval');
            if (!empty($a_user_prefs['refresh_interval']) && $min_refresh_interval) {
                if ($a_user_prefs['refresh_interval'] < $min_refresh_interval) {
                    $a_user_prefs['refresh_interval'] = $min_refresh_interval;
                }
            }

            break;

        case 'mailbox':
            // force min size
            if ($a_user_prefs['mail_pagesize'] < 1) {
                $a_user_prefs['mail_pagesize'] = 10;
            }

            $max_pagesize = (int) $rcmail->config->get('max_pagesize');
            if ($max_pagesize && ($a_user_prefs['mail_pagesize'] > $max_pagesize)) {
                $a_user_prefs['mail_pagesize'] = $max_pagesize;
            }

            break;

        case 'addressbook':
            // force min size
            if ($a_user_prefs['addressbook_pagesize'] < 1) {
                $a_user_prefs['addressbook_pagesize'] = 10;
            }

            $max_pagesize = (int) $rcmail->config->get('max_pagesize');
            if ($max_pagesize && ($a_user_prefs['addressbook_pagesize'] > $max_pagesize)) {
                $a_user_prefs['addressbook_pagesize'] = $max_pagesize;
            }

            break;

        case 'folders':
            $storage  = $rcmail->get_storage();
            $specials = [];

            foreach (rcube_storage::$folder_types as $type) {
                $specials[$type] = $a_user_prefs[$type . '_mbox'];
            }

            $storage->set_special_folders($specials);

            break;

        case 'server':
            if (isset($a_user_prefs['logout_purge']) && !is_numeric($a_user_prefs['logout_purge'])) {
                $a_user_prefs['logout_purge'] = $a_user_prefs['logout_purge'] !== 'never';
            }

            break;
        }

        // Save preferences
        if (empty($plugin['abort'])) {
            $saved = $rcmail->user->save_prefs($a_user_prefs);
        }
        else {
            $saved = $plugin['result'];
        }

        if ($saved) {
            $rcmail->output->show_message('successfullysaved', 'confirmation');
        }
        else {
            $rcmail->output->show_message(!empty($plugin['message']) ? $plugin['message'] : 'errorsaving', 'error');
        }

        // display the form again
        $rcmail->overwrite_action('edit-prefs');
    }

    /**
     * Get option value from POST and validate with a regex
     */
    public static function prefs_input($name, $regex)
    {
        $rcmail = rcmail::get_instance();
        $value  = rcube_utils::get_input_value('_' . $name, rcube_utils::INPUT_POST);

        if (!is_string($value)) {
            $value = null;
        }

        if ($value !== null && strlen($value) && !preg_match($regex, $value)) {
            $value = $rcmail->config->get($name);
        }

        return $value;
    }

    /**
     * Get integer option value from POST
     */
    public static function prefs_input_int($name)
    {
        $rcmail = rcmail::get_instance();
        $value  = rcube_utils::get_input_value('_' . $name, rcube_utils::INPUT_POST);

        return (int) $value;
    }
}
actions/settings/identity_save.php000064400000020474151727150600013437 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Save an identity record or to add a new one                         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_identity_save extends rcmail_action_settings_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $IDENTITIES_LEVEL = intval($rcmail->config->get('identities_level', 0));

        $a_save_cols = ['name', 'email', 'organization', 'reply-to', 'bcc', 'standard', 'signature', 'html_signature'];
        $a_bool_cols = ['standard', 'html_signature'];
        $updated     = false;

        // check input
        if (empty($_POST['_email']) && ($IDENTITIES_LEVEL == 0 || $IDENTITIES_LEVEL == 2)) {
            $rcmail->output->show_message('noemailwarning', 'warning');
            $rcmail->overwrite_action('edit-identity');
            return;
        }

        $save_data = [];
        foreach ($a_save_cols as $col) {
            $fname = '_'.$col;
            if (isset($_POST[$fname])) {
                $save_data[$col] = rcube_utils::get_input_string($fname, rcube_utils::INPUT_POST, true);
            }
        }

        // set "off" values for checkboxes that were not checked, and therefore
        // not included in the POST body.
        foreach ($a_bool_cols as $col) {
            $fname = '_' . $col;
            if (!isset($_POST[$fname])) {
                $save_data[$col] = 0;
            }
        }

        // make the identity a "default" if only one identity is allowed
        if ($IDENTITIES_LEVEL > 1) {
            $save_data['standard'] = 1;
        }

        // unset email address if user has no rights to change it
        if ($IDENTITIES_LEVEL == 1 || $IDENTITIES_LEVEL == 3) {
            unset($save_data['email']);
        }
        // unset all fields except signature
        else if ($IDENTITIES_LEVEL == 4) {
            foreach ($save_data as $idx => $value) {
                if ($idx != 'signature' && $idx != 'html_signature') {
                    unset($save_data[$idx]);
                }
            }
        }

        // Validate e-mail addresses
        $email_checks = !empty($save_data['email']) ? [rcube_utils::idn_to_ascii($save_data['email'])] : [];
        foreach (['reply-to', 'bcc'] as $item) {
            if (!empty($save_data[$item])) {
                foreach (rcube_mime::decode_address_list($save_data[$item], null, false) as $rcpt) {
                    $email_checks[] = rcube_utils::idn_to_ascii($rcpt['mailto']);
                }
            }
        }

        foreach ($email_checks as $email) {
            if ($email && !rcube_utils::check_email($email)) {
                // show error message
                $rcmail->output->show_message('emailformaterror', 'error', ['email' => rcube_utils::idn_to_utf8($email)], false);
                $rcmail->overwrite_action('edit-identity');
                return;
            }
        }

        if (!empty($save_data['signature']) && !empty($save_data['html_signature'])) {
            // replace uploaded images with data URIs
            $save_data['signature'] = self::attach_images($save_data['signature'], 'identity');

            // XSS protection in HTML signature (#1489251)
            $save_data['signature'] = self::wash_html($save_data['signature']);

            // clear POST data of signature, we want to use safe content
            // when the form is displayed again
            unset($_POST['_signature']);
        }

        // update an existing identity
        if (!empty($_POST['_iid'])) {
            $iid = rcube_utils::get_input_string('_iid', rcube_utils::INPUT_POST);

            if (in_array($IDENTITIES_LEVEL, [1, 3, 4])) {
                // merge with old identity data, fixes #1488834
                $identity  = $rcmail->user->get_identity($iid);
                $save_data = array_merge($identity, $save_data);

                unset($save_data['changed'], $save_data['del'], $save_data['user_id'], $save_data['identity_id']);
            }

            $plugin = $rcmail->plugins->exec_hook('identity_update', ['id' => $iid, 'record' => $save_data]);
            $save_data = $plugin['record'];

            if ($save_data['email']) {
                $save_data['email'] = rcube_utils::idn_to_ascii($save_data['email']);
            }

            if (!$plugin['abort']) {
                $updated = $rcmail->user->update_identity($iid, $save_data);
            }
            else {
                $updated = $plugin['result'];
            }

            if ($updated) {
                $rcmail->output->show_message('successfullysaved', 'confirmation');

                if (!empty($save_data['standard'])) {
                    $default_id = $iid;
                }

                // update the changed col in list
                $name = $save_data['name'] . ' <' . rcube_utils::idn_to_utf8($save_data['email']) .'>';
                $rcmail->output->command('parent.update_identity_row', $iid, rcube::Q(trim($name)));
            }
            else {
                // show error message
                $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
                $rcmail->output->show_message($error, 'error', null, false);
                $rcmail->overwrite_action('edit-identity');
                return;
            }
        }
        // insert a new identity record
        else if ($IDENTITIES_LEVEL < 2) {
            if ($IDENTITIES_LEVEL == 1) {
                $save_data['email'] = $rcmail->get_user_email();
            }

            $plugin = $rcmail->plugins->exec_hook('identity_create', ['record' => $save_data]);
            $save_data = $plugin['record'];

            if ($save_data['email']) {
                $save_data['email'] = rcube_utils::idn_to_ascii($save_data['email']);
            }

            if (!$plugin['abort']) {
                $insert_id = $save_data['email'] ? $rcmail->user->insert_identity($save_data) : null;
            }
            else {
                $insert_id = $plugin['result'];
            }

            if ($insert_id) {
                $rcmail->plugins->exec_hook('identity_create_after', ['id' => $insert_id, 'record' => $save_data]);

                $rcmail->output->show_message('successfullysaved', 'confirmation', null, false);

                $_GET['_iid'] = $insert_id;

                if (!empty($save_data['standard'])) {
                    $default_id = $insert_id;
                }

                // add a new row to the list
                $name = $save_data['name'] . ' <' . rcube_utils::idn_to_utf8($save_data['email']) .'>';
                $rcmail->output->command('parent.update_identity_row', $insert_id, rcube::Q(trim($name)), true);
            }
            else {
                // show error message
                $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
                $rcmail->output->show_message($error, 'error', null, false);
                $rcmail->overwrite_action('edit-identity');
                return;
            }
        }
        else {
            $rcmail->output->show_message('opnotpermitted', 'error');
        }

        // mark all other identities as 'not-default'
        if (!empty($default_id)) {
            $rcmail->user->set_default($default_id);
        }

        // go to next step
        $rcmail->overwrite_action('edit-identity');
    }
}
actions/settings/folders.php000064400000036667151727150600012241 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality of folders listing                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folders extends rcmail_action_settings_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        $rcmail->output->set_pagetitle($rcmail->gettext('folders'));
        $rcmail->output->set_env('prefix_ns', $storage->get_namespace('prefix'));
        $rcmail->output->set_env('quota', (bool) $storage->get_capability('QUOTA'));
        $rcmail->output->include_script('treelist.js');

        // add some labels to client
        $rcmail->output->add_label('deletefolderconfirm', 'purgefolderconfirm', 'movefolderconfirm',
            'folderdeleting', 'foldermoving', 'foldersubscribing', 'folderunsubscribing',
            'move', 'quota');

        // register UI objects
        $rcmail->output->add_handlers([
                'foldersubscription' => [$this, 'folder_subscriptions'],
                'folderfilter'       => [$this, 'folder_filter'],
                'quotadisplay'       => [$rcmail, 'quota_display'],
                'searchform'         => [$rcmail->output, 'search_form'],
        ]);

        $rcmail->output->send('folders');
    }

    // build table with all folders listed by server
    public static function folder_subscriptions($attrib)
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmSubscriptionlist';
        }

        // get folders from server
        $storage->clear_cache('mailboxes', true);

        $a_unsubscribed  = $storage->list_folders();
        $a_subscribed    = $storage->list_folders_subscribed('', '*', null, null, true); // unsorted
        $delimiter       = $storage->get_hierarchy_delimiter();
        $namespace       = $storage->get_namespace();
        $special_folders = array_flip(array_merge(['inbox' => 'INBOX'], $storage->get_special_folders()));
        $protect_default = $rcmail->config->get('protect_default_folders');
        $seen            = [];
        $list_folders    = [];

        // pre-process folders list
        foreach ($a_unsubscribed as $i => $folder) {
            $folder_id     = $folder;
            $folder        = $storage->mod_folder($folder);
            $foldersplit   = explode($delimiter, $folder);
            $name          = rcube_charset::convert(array_pop($foldersplit), 'UTF7-IMAP');
            $is_special    = isset($special_folders[$folder_id]);
            $parent_folder = $is_special ? '' : join($delimiter, $foldersplit);
            $level         = $is_special ? 0 : count($foldersplit);

            // add any necessary "virtual" parent folders
            if ($parent_folder && empty($seen[$parent_folder])) {
                for ($i = 1; $i <= $level; $i++) {
                    $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i));
                    if ($ancestor_folder) {
                        if (empty($seen[$ancestor_folder])) {
                            $seen[$ancestor_folder] = true;
                            $ancestor_name = rcube_charset::convert($foldersplit[$i-1], 'UTF7-IMAP');
                            $list_folders[] = [
                                'id'      => $ancestor_folder,
                                'name'    => $ancestor_name,
                                'level'   => $i-1,
                                'virtual' => true,
                            ];
                        }
                    }
                }
            }

            // Handle properly INBOX.INBOX situation
            if (isset($seen[$folder])) {
                continue;
            }

            $seen[$folder] = true;

            $list_folders[] = [
                'id'    => $folder_id,
                'name'  => $name,
                'level' => $level,
            ];
        }

        unset($seen);

        $checkbox_subscribe = new html_checkbox([
                'name'    => '_subscribed[]',
                'title'   => $rcmail->gettext('changesubscription'),
                'onclick' => rcmail_output::JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)",
        ]);

        $js_folders = [];
        $folders    = [];
        $collapsed  = (string) $rcmail->config->get('collapsed_folders');

        // create list of available folders
        foreach ($list_folders as $i => $folder) {
            $sub_key       = array_search($folder['id'], $a_subscribed);
            $is_subscribed = $sub_key !== false;
            $is_special    = isset($special_folders[$folder['id']]);
            $is_protected  = $folder['id'] == 'INBOX' || ($protect_default && $is_special);
            $noselect      = false;
            $classes       = [];

            $folder_utf8    = rcube_charset::convert($folder['id'], 'UTF7-IMAP');
            $display_folder = rcube::Q($is_special ? self::localize_foldername($folder['id'], false, true) : $folder['name']);

            if (!empty($folder['virtual'])) {
                $classes[] = 'virtual';
            }

            // Check \Noselect flag (of existing folder)
            if (!$is_protected && in_array($folder['id'], $a_unsubscribed)) {
                $attrs = $storage->folder_attributes($folder['id']);
                $noselect = in_array_nocase('\\Noselect', $attrs);
            }

            $is_disabled = (($is_protected && $is_subscribed) || $noselect);

            // Below we will disable subscription option for "virtual" folders
            // according to namespaces, but only if they aren't already subscribed.
            // User should be able to unsubscribe from the folder
            // even if it doesn't exists or is not accessible (OTRS:1000059)
            if (!$is_subscribed && !$is_disabled && !empty($namespace) && !empty($folder['virtual'])) {
                // check if the folder is a namespace prefix, then disable subscription option on it
                if (!$is_disabled && $folder['level'] == 0) {
                    $fname = $folder['id'] . $delimiter;
                    foreach ($namespace as $ns) {
                        if (is_array($ns)) {
                            foreach ($ns as $item) {
                                if ($item[0] === $fname) {
                                    $is_disabled = true;
                                    break 2;
                                }
                            }
                        }
                    }
                }
                // check if the folder is an other users virtual-root folder, then disable subscription option on it
                if (!$is_disabled && $folder['level'] == 1 && !empty($namespace['other'])) {
                    $parts = explode($delimiter, $folder['id']);
                    $fname = $parts[0] . $delimiter;
                    foreach ($namespace['other'] as $item) {
                        if ($item[0] === $fname) {
                            $is_disabled = true;
                            break;
                        }
                    }
                }
                // check if the folder is shared, then disable subscription option on it (if not subscribed already)
                if (!$is_disabled) {
                    $tmp_ns = array_merge((array)$namespace['other'], (array)$namespace['shared']);
                    foreach ($tmp_ns as $item) {
                        if (strlen($item[0]) && strpos($folder['id'], $item[0]) === 0) {
                            $is_disabled = true;
                            break;
                        }
                    }
                }
            }

            $is_collapsed = strpos($collapsed, '&'.rawurlencode($folder['id']).'&') !== false;
            $folder_id    = rcube_utils::html_identifier($folder['id'], true);

            if ($folder_class = self::folder_classname($folder['id'])) {
                $classes[] = $folder_class;
            }

            $folders[$folder['id']] = [
                'idx'         => $folder_id,
                'folder_imap' => $folder['id'],
                'folder'      => $folder_utf8,
                'display'     => $display_folder,
                'protected'   => $is_protected || !empty($folder['virtual']),
                'class'       => join(' ', $classes),
                'subscribed'  => $is_subscribed,
                'level'       => $folder['level'],
                'collapsed'   => $is_collapsed,
                'content'     => html::a(['href' => '#'], $display_folder)
                    . $checkbox_subscribe->show(($is_subscribed ? $folder['id'] : ''),
                        ['value' => $folder['id'], 'disabled' => $is_disabled ? 'disabled' : ''])
            ];
        }

        $plugin = $rcmail->plugins->exec_hook('folders_list', ['list' => $folders]);

        // add drop-target representing 'root'
        $root = [
            'idx'         => rcube_utils::html_identifier('*', true),
            'folder_imap' => '*',
            'folder'      => '',
            'display'     => '',
            'protected'   => true,
            'class'       => 'root',
            'content'     => '<span>&nbsp;</span>',
        ];

        $folders        = [];
        $plugin['list'] = array_values($plugin['list']);

        array_unshift($plugin['list'], $root);

        for ($i = 0, $length = count($plugin['list']); $i<$length; $i++) {
            $folders[] = self::folder_tree_element($plugin['list'], $i, $js_folders);
        }

        $rcmail->output->add_gui_object('subscriptionlist', $attrib['id']);
        $rcmail->output->set_env('subscriptionrows', $js_folders);
        $rcmail->output->set_env('defaultfolders', array_keys($special_folders));
        $rcmail->output->set_env('collapsed_folders', $collapsed);
        $rcmail->output->set_env('delimiter', $delimiter);

        return html::tag('ul', $attrib, implode('', $folders), html::$common_attrib);
    }

    public static function folder_tree_element($folders, &$key, &$js_folders)
    {
        $data = $folders[$key];
        $idx  = 'rcmli' . $data['idx'];

        $js_folders[$data['folder_imap']] = [$data['folder'], $data['display'], $data['protected']];
        $content          = $data['content'];
        $attribs          = [
            'id'    => $idx,
            'class' => trim($data['class'] . ' mailbox')
        ];

        if (!isset($data['level'])) {
            $data['level'] = 0;
        }

        $children = [];
        while (!empty($folders[$key+1]) && ($folders[$key+1]['level'] > $data['level'])) {
            $key++;
            $children[] = self::folder_tree_element($folders, $key, $js_folders);
        }

        if (!empty($children)) {
            $content .= html::div('treetoggle ' . (!empty($data['collapsed']) ? 'collapsed' : 'expanded'), '&nbsp;')
                . html::tag('ul', ['style' => !empty($data['collapsed']) ? "display:none" : null],
                    implode("\n", $children));
        }

        return html::tag('li', $attribs, $content);
    }

    public static function folder_filter($attrib)
    {
        $rcmail    = rcmail::get_instance();
        $storage   = $rcmail->get_storage();
        $namespace = $storage->get_namespace();

        if (empty($namespace['personal']) && empty($namespace['shared']) && empty($namespace['other'])) {
            return '';
        }

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmfolderfilter';
        }

        if (!self::get_bool_attr($attrib, 'noevent')) {
            $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . '.folder_filter(this.value)';
        }

        $roots  = [];
        $select = new html_select($attrib);
        $select->add($rcmail->gettext('all'), '---');

        foreach (array_keys($namespace) as $type) {
            foreach ((array)$namespace[$type] as $ns) {
                $root  = rtrim($ns[0], $ns[1]);
                $label = $rcmail->gettext('namespace.' . $type);

                if (count($namespace[$type]) > 1) {
                    $label .= ' (' . rcube_charset::convert($root, 'UTF7-IMAP', RCUBE_CHARSET) . ')';
                }

                $select->add($label, $root);

                if (strlen($root)) {
                    $roots[] = $root;
                }
            }
        }

        $rcmail->output->add_gui_object('foldersfilter', $attrib['id']);
        $rcmail->output->set_env('ns_roots', $roots);

        return $select->show();
    }

    public static function folder_options($mailbox)
    {
        $rcmail  = rcmail::get_instance();
        $options = $rcmail->get_storage()->folder_info($mailbox);
        $options['protected'] = !empty($options['is_root'])
            || strtoupper($mailbox) === 'INBOX'
            || (!empty($options['special']) && $rcmail->config->get('protect_default_folders'));

        return $options;
    }

    /**
     * Updates (or creates) folder row in the subscriptions table
     *
     * @param string $name       Folder name
     * @param string $oldname    Old folder name (for update)
     * @param bool   $subscribe  Checks subscription checkbox
     * @param string $class_name CSS class name for folder row
     */
    public static function update_folder_row($name, $oldname = null, $subscribe = false, $class_name = null)
    {
        $rcmail      = rcmail::get_instance();
        $storage     = $rcmail->get_storage();
        $delimiter   = $storage->get_hierarchy_delimiter();
        $options     = self::folder_options($name);
        $name_utf8   = rcube_charset::convert($name, 'UTF7-IMAP');
        $foldersplit = explode($delimiter, $storage->mod_folder($name));
        $level       = count($foldersplit) - 1;
        $class_name  = trim($class_name . ' mailbox');

        if (!empty($options['protected'])) {
            $display_name = self::localize_foldername($name);
        }
        else {
            $display_name = rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP');
        }

        $protected = !empty($options['protected']) || !empty($options['noselect']);

        if ($oldname === null) {
            $rcmail->output->command('add_folder_row', $name, $name_utf8, $display_name,
                $protected, $subscribe, $class_name);
        }
        else {
            $rcmail->output->command('replace_folder_row', $oldname, $name, $name_utf8, $display_name,
                $protected, $class_name);
        }
    }
}
actions/settings/folder_save.php000064400000023223151727150610013055 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handler for saving the create/edit folder form                      |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_save extends rcmail_action_settings_folder_edit
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        // WARNING: folder names in UI are encoded with RCUBE_CHARSET

        $name      = trim(rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST, true));
        $path      = rcube_utils::get_input_string('_parent', rcube_utils::INPUT_POST, true);
        $old_imap  = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);
        $type      = rcube_utils::get_input_string('_type', rcube_utils::INPUT_POST);
        $name_imap = rcube_charset::convert($name, RCUBE_CHARSET, 'UTF7-IMAP');
        // $path is in UTF7-IMAP already

        // init IMAP connection
        $rcmail    = rcmail::get_instance();
        $storage   = $rcmail->get_storage();
        $delimiter = $storage->get_hierarchy_delimiter();
        $options   = strlen($old_imap) ? self::folder_options($old_imap) : [];
        $char      = null;

        // Folder name checks
        if (!empty($options['protected']) || !empty($options['norename'])) {
            // do nothing
        }
        else if (!strlen($name)) {
            $error = $rcmail->gettext('namecannotbeempty');
        }
        else if (mb_strlen($name) > 128) {
            $error = $rcmail->gettext('nametoolong');
        }
        else if ($name[0] == '.' && $rcmail->config->get('imap_skip_hidden_folders')) {
            $error = $rcmail->gettext('namedotforbidden');
        }
        else if (!$storage->folder_validate($name, $char)) {
            $error = $rcmail->gettext('forbiddencharacter') . " ($char)";
        }

        if (!empty($error)) {
            $rcmail->output->command('display_message', $error, 'error');
        }
        else {
            if (!empty($options['protected']) || !empty($options['norename'])) {
                $name_imap = $old_imap;
            }
            else if (strlen($path)) {
                $name_imap = $path . $delimiter . $name_imap;
            }
            else {
                $name_imap = $storage->mod_folder($name_imap, 'in');
            }
        }

        $dual_use_supported = $storage->get_capability(rcube_storage::DUAL_USE_FOLDERS);
        $acl_supported      = $storage->get_capability('ACL');

        // Check access rights to the parent folder
        if (empty($error) && $acl_supported && strlen($path) && (!strlen($old_imap) || $old_imap != $name_imap)) {
            $parent_opts = $storage->folder_info($path);
            if ($parent_opts['namespace'] != 'personal'
                && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts['rights'])))
            ) {
                $error = $rcmail->gettext('parentnotwritable');
            }
        }

        if (!empty($error)) {
            $rcmail->output->command('display_message', $error, 'error');
            $folder = null;
        }
        else {
            $folder = [
                'name'     => $name_imap,
                'oldname'  => $old_imap,
                'class'    => '',
                'options'  => $options,
                'settings' => [
                    // List view mode: 0-list, 1-threads
                    'view_mode'   => (int) rcube_utils::get_input_string('_viewmode', rcube_utils::INPUT_POST),
                    'sort_column' => rcube_utils::get_input_string('_sortcol', rcube_utils::INPUT_POST),
                    'sort_order'  => rcube_utils::get_input_string('_sortord', rcube_utils::INPUT_POST),
                ],
                'subscribe' => false,
                'noselect'  => false,
            ];
        }

        // create a new mailbox
        if (empty($error) && !strlen($old_imap)) {
            $folder['subscribe'] = true;

            // Server does not support both sub-folders and messages in a folder
            // For folders that are supposed to contain other folders we will:
            //    - disable subscription
            //    - add a separator at the end to make them \NoSelect
            if (!$dual_use_supported && $type == 'folder') {
                $folder['subscribe'] = false;
                $folder['noselect']  = true;
            }

            $plugin = $rcmail->plugins->exec_hook('folder_create', ['record' => $folder]);

            $folder = $plugin['record'];

            if (!$plugin['abort']) {
                $created = $storage->create_folder($folder['name'], $folder['subscribe'], null, $folder['noselect']);
            }
            else {
                $created = $plugin['result'];
            }

            if ($created) {
                // Save folder settings
                if (isset($_POST['_viewmode'])) {
                    $a_threaded = (array) $rcmail->config->get('message_threading', []);

                    $a_threaded[$folder['name']] = (bool) $_POST['_viewmode'];

                    $rcmail->user->save_prefs(['message_threading' => $a_threaded]);
                }

                self::update_folder_row($folder['name'], null, $folder['subscribe'], $folder['class']);

                $rcmail->output->show_message('foldercreated', 'confirmation');
                // reset folder preview frame
                $rcmail->output->command('subscription_select');
                $rcmail->output->send('iframe');
            }
            else {
                // show error message
                if (!empty($plugin['message'])) {
                    $rcmail->output->show_message($plugin['message'], 'error', null, false);
                }
                else {
                    self::display_server_error('errorsaving');
                }
            }
        }
        // update a mailbox
        else if (empty($error)) {
            $plugin = $rcmail->plugins->exec_hook('folder_update', ['record' => $folder]);

            $folder = $plugin['record'];
            $rename = $folder['oldname'] != $folder['name'];

            if (!$plugin['abort']) {
                if ($rename) {
                    $updated = $storage->rename_folder($folder['oldname'], $folder['name']);
                }
                else {
                    $updated = true;
                }
            }
            else {
                $updated = $plugin['result'];
            }

            if ($updated) {
                // Update folder settings,
                if (isset($_POST['_viewmode'])) {
                    $a_threaded = (array) $rcmail->config->get('message_threading', []);

                    // In case of name change update names of children in settings
                    if ($rename) {
                        $oldprefix  = '/^' . preg_quote($folder['oldname'] . $delimiter, '/') . '/';
                        foreach ($a_threaded as $key => $val) {
                            if ($key == $folder['oldname']) {
                                unset($a_threaded[$key]);
                            }
                            else if (preg_match($oldprefix, $key)) {
                                unset($a_threaded[$key]);
                                $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = $val;
                            }
                        }
                    }

                    $a_threaded[$folder['name']] = (bool) $_POST['_viewmode'];

                    $rcmail->user->save_prefs(['message_threading' => $a_threaded]);
                }

                $rcmail->output->show_message('folderupdated', 'confirmation');
                $rcmail->output->set_env('folder', $folder['name']);

                if ($rename) {
                    // #1488692: update session
                    if (isset($_SESSION['mbox']) && $_SESSION['mbox'] === $folder['oldname']) {
                        $_SESSION['mbox'] = $folder['name'];
                    }
                    self::update_folder_row($folder['name'], $folder['oldname'], $folder['subscribe'], $folder['class']);
                    $rcmail->output->send('iframe');
                }
                else if (!empty($folder['class'])) {
                    self::update_folder_row($folder['name'], $folder['oldname'], $folder['subscribe'], $folder['class']);
                }
            }
            else {
                // show error message
                if (!empty($plugin['message'])) {
                    $rcmail->output->show_message($plugin['message'], 'error', null, false);
                }
                else {
                    self::display_server_error('errorsaving');
                }
            }
        }

        $rcmail->overwrite_action('edit-folder');
    }
}
actions/settings/identity_edit.php000064400000023143151727150610013423 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show edit form for an identity record                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_identity_edit extends rcmail_action
{
    protected static $mode = self::MODE_HTTP;
    protected static $record;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $IDENTITIES_LEVEL = intval($rcmail->config->get('identities_level', 0));

        // edit-identity
        if ($rcmail->action == 'edit-identity'
            && ($id = rcube_utils::get_input_string('_iid', rcube_utils::INPUT_GPC))
        ) {
            self::$record = $rcmail->user->get_identity($id);

            if (!is_array(self::$record)) {
                $rcmail->output->show_message('dberror', 'error');
                $rcmail->output->send('iframe');
            }

            $rcmail->output->set_env('iid', self::$record['identity_id']);
            $rcmail->output->set_env('mailvelope_main_keyring', $rcmail->config->get('mailvelope_main_keyring'));
            $rcmail->output->set_env('mailvelope_keysize', $rcmail->config->get('mailvelope_keysize'));
        }
        // add-identity
        else {
            if ($IDENTITIES_LEVEL > 1) {
                $rcmail->output->show_message('opnotpermitted', 'error');
                // go to identities page
                $rcmail->overwrite_action('identities');
                return;
            }

            if ($IDENTITIES_LEVEL == 1) {
                self::$record['email'] = $rcmail->get_user_email();
            }
        }

        $rcmail->output->add_handler('identityform', [$this, 'identity_form']);
        $rcmail->output->set_env('identities_level', $IDENTITIES_LEVEL);
        $rcmail->output->add_label('deleteidentityconfirm', 'generate',
            'encryptioncreatekey', 'openmailvelopesettings', 'encryptionprivkeysinmailvelope',
            'encryptionnoprivkeysinmailvelope', 'keypaircreatesuccess');

        $rcmail->output->set_pagetitle($rcmail->gettext(($rcmail->action == 'add-identity' ? 'addidentity' : 'editidentity')));

        if ($rcmail->action == 'add-identity' && $rcmail->output->template_exists('identityadd')) {
            $rcmail->output->send('identityadd');
        }

        $rcmail->output->send('identityedit');
    }

    public static function identity_form($attrib)
    {
        $rcmail = rcmail::get_instance();

        $IDENTITIES_LEVEL = intval($rcmail->config->get('identities_level', 0));

        // Add HTML editor script(s)
        self::html_editor('identity', 'rcmfd_signature');

        // add some labels to client
        $rcmail->output->add_label('noemailwarning', 'converting', 'editorwarning');

        $i_size = !empty($attrib['size']) ? $attrib['size'] : 40;
        $t_rows = !empty($attrib['textarearows']) ? $attrib['textarearows'] : 6;
        $t_cols = !empty($attrib['textareacols']) ? $attrib['textareacols'] : 40;

        // list of available cols
        $form = [
            'addressing' => [
                'name'    => $rcmail->gettext('settings'),
                'content' => [
                    'name'         => ['type' => 'text', 'size' => $i_size],
                    'email'        => ['type' => 'text', 'size' => $i_size],
                    'organization' => ['type' => 'text', 'size' => $i_size],
                    'reply-to'     => ['type' => 'text', 'size' => $i_size],
                    'bcc'          => ['type' => 'text', 'size' => $i_size],
                    'standard'     => ['type' => 'checkbox', 'label' => $rcmail->gettext('setdefault')],
                ]
            ],
            'signature' => [
                'name'    => $rcmail->gettext('signature'),
                'content' => [
                    'signature'      => [
                        'type'       => 'textarea',
                        'size'       => $t_cols,
                        'rows'       => $t_rows,
                        'spellcheck' => true,
                        'data-html-editor' => true
                    ],
                    'html_signature' => [
                        'type' => 'checkbox',
                        'label'   => $rcmail->gettext('htmlsignature'),
                        'onclick' => "return rcmail.command('toggle-editor', {id: 'rcmfd_signature', html: this.checked}, '', event)"
                    ],
                ]
            ],
            'encryption' => [
                'name'    => $rcmail->gettext('identityencryption'),
                'attrs'   => ['class' => 'identity-encryption', 'style' => 'display:none'],
                'content' => html::div('identity-encryption-block', '')
            ]
        ];

        // Enable TinyMCE editor
        if (!empty(self::$record['html_signature'])) {
            $form['signature']['content']['signature']['class']      = 'mce_editor';
            $form['signature']['content']['signature']['is_escaped'] = true;

            // Correctly handle HTML entities in HTML editor (#1488483)
            self::$record['signature'] = htmlspecialchars(self::$record['signature'], ENT_NOQUOTES, RCUBE_CHARSET);
        }

        // hide "default" checkbox if only one identity is allowed
        if ($IDENTITIES_LEVEL > 1) {
            unset($form['addressing']['content']['standard']);
        }

        // disable some field according to access level
        if ($IDENTITIES_LEVEL == 1 || $IDENTITIES_LEVEL == 3) {
            $form['addressing']['content']['email']['disabled'] = true;
            $form['addressing']['content']['email']['class']    = 'disabled';
        }

        if ($IDENTITIES_LEVEL == 4) {
            foreach ($form['addressing']['content'] as $formfield => $value){
                $form['addressing']['content'][$formfield]['disabled'] = true;
                $form['addressing']['content'][$formfield]['class']    = 'disabled';
            }
        }

        if (!empty(self::$record['email'])) {
            self::$record['email'] = rcube_utils::idn_to_utf8(self::$record['email']);
        }

        // Allow plugins to modify identity form content
        $plugin = $rcmail->plugins->exec_hook('identity_form', [
                'form'   => $form,
                'record' => self::$record
        ]);

        $form = $plugin['form'];
        self::$record = $plugin['record'];

        // Set form tags and hidden fields
        list($form_start, $form_end) = self::get_form_tags($attrib, 'save-identity',
            intval(self::$record['identity_id'] ?? 0),
            ['name' => '_iid', 'value' => self::$record['identity_id'] ?? 0]
        );

        unset($plugin);
        unset($attrib['form'], $attrib['id']);

        // return the complete edit form as table
        $out = "$form_start\n";

        foreach ($form as $fieldset) {
            if (empty($fieldset['content'])) {
                continue;
            }

            $content = '';
            if (is_array($fieldset['content'])) {
                $table = new html_table(['cols' => 2]);

                foreach ($fieldset['content'] as $col => $colprop) {
                    $colprop['id'] = 'rcmfd_'.$col;

                    if (!empty($colprop['label'])) {
                        $label = $colprop['label'];
                    }
                    else {
                        $label = $rcmail->gettext(str_replace('-', '', $col));
                    }

                    if (!empty($colprop['value'])) {
                        $value = $colprop['value'];
                    }
                    else {
                        $val   = self::$record[$col] ?? '';
                        $value = rcube_output::get_edit_field($col, $val, $colprop, $colprop['type']);
                    }

                    $table->add('title', html::label($colprop['id'], rcube::Q($label)));
                    $table->add(null, $value);
                }

                $content = $table->show($attrib);
            }
            else {
                $content = $fieldset['content'];
            }

            $content = html::tag('legend', null, rcube::Q($fieldset['name'])) . $content;
            $out .= html::tag('fieldset', !empty($fieldset['attrs']) ? $fieldset['attrs'] : [], $content) . "\n";
        }

        $out .= $form_end;

        // add image upload form
        $max_size = self::upload_init($rcmail->config->get('identity_image_size', 64) * 1024);
        $form_id  = 'identityImageUpload';

        $out .= '<form id="' . $form_id . '" style="display: none">'
            . html::div('hint', $rcmail->gettext(['name' => 'maxuploadsize', 'vars' => ['size' => $max_size]]))
            . '</form>';

        $rcmail->output->add_gui_object('uploadform', $form_id);

        return $out;
    }
}
actions/settings/prefs_edit.php000064400000007166151727150610012720 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality for user's settings & preferences             |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_prefs_edit extends rcmail_action_settings_index
{
    protected static $mode = self::MODE_HTTP;
    protected static $section;
    protected static $sections;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->output->set_pagetitle($rcmail->gettext('preferences'));

        self::$section = rcube_utils::get_input_string('_section', rcube_utils::INPUT_GPC);
        list(self::$sections,) = self::user_prefs(self::$section);

        // register UI objects
        $rcmail->output->add_handlers([
                'userprefs'   => [$this, 'user_prefs_form'],
                'sectionname' => [$this, 'prefs_section_name'],
        ]);

        $rcmail->output->send('settingsedit');
    }

    public static function user_prefs_form($attrib)
    {
        $rcmail = rcmail::get_instance();

        // add some labels to client
        $rcmail->output->add_label('nopagesizewarning', 'nosupporterror');

        unset($attrib['form']);

        $hidden = ['name' => '_section', 'value' => self::$section];
        list($form_start, $form_end) = self::get_form_tags($attrib, 'save-prefs', null, $hidden);

        $out = $form_start;

        if (!empty(self::$sections[self::$section]['header'])) {
            $div_attr = ['id' => 'preferences-header', 'class' =>'boxcontent'];
            $out .= html::div($div_attr, self::$sections[self::$section]['header']);
        }

        foreach (self::$sections[self::$section]['blocks'] as $class => $block) {
            if (!empty($block['options'])) {
                $table = new html_table(['cols' => 2]);

                foreach ($block['options'] as $option) {
                    if (isset($option['title'])) {
                        $table->add('title', $option['title']);
                        $table->add(null, $option['content']);
                    }
                    else {
                        $table->add(['colspan' => 2], $option['content']);
                    }
                }

                $out .= html::tag('fieldset', $class, html::tag('legend', null, $block['name']) . $table->show($attrib));
            }
            else if (!empty($block['content'])) {
                $out .= html::tag('fieldset', null, html::tag('legend', null, $block['name']) . $block['content']);
            }
        }

        return $out . $form_end;
    }

    public static function prefs_section_name()
    {
        return self::$sections[self::$section]['section'];
    }
}
actions/settings/about.php000064400000012721151727150610011677 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Display license information about program and enabled plugins       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_about extends rcmail_action
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->output->set_pagetitle($rcmail->gettext('about'));

        $rcmail->output->add_handlers([
                'supportlink' => [$this, 'supportlink'],
                'pluginlist'  => [$this, 'plugins_list'],
                'copyright'   => function() {
                    return 'Copyright &copy; 2005-2022, The Roundcube Dev Team';
                },
                'license' => function() {
                    return 'This program is free software; you can redistribute it and/or modify it under the terms '
                        . 'of the <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a> '
                        . 'as published by the Free Software Foundation, either version 3 of the License, '
                        . 'or (at your option) any later version.<br/>'
                        . 'Some <a href="https://roundcube.net/license" target="_blank">exceptions</a> '
                        . 'for skins &amp; plugins apply.';
                },
        ]);

        $rcmail->output->send('about');
    }

    public static function supportlink($attrib)
    {
        $rcmail = rcmail::get_instance();

        if ($url = $rcmail->config->get('support_url')) {
            $label = !empty($attrib['label']) ? $attrib['label'] : 'support';
            $attrib['href'] = $url;

            return html::a($attrib, $rcmail->gettext($label));
        }
    }

    public static function plugins_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmpluginlist';
        }

        $plugins     = array_filter($rcmail->plugins->active_plugins);
        $plugin_info = [];

        foreach ($plugins as $name) {
            if ($info = $rcmail->plugins->get_info($name)) {
                $plugin_info[$name] = $info;
            }
        }

        // load info from required plugins, too
        foreach ($plugin_info as $name => $info) {
            if (!empty($info['require']) && is_array($info['require'])) {
                foreach ($info['require'] as $req_name) {
                    if (!isset($plugin_info[$req_name]) && ($req_info = $rcmail->plugins->get_info($req_name))) {
                        $plugin_info[$req_name] = $req_info;
                    }
                }
            }
        }

        if (empty($plugin_info)) {
            return '';
        }

        ksort($plugin_info, SORT_LOCALE_STRING);

        $table = new html_table($attrib);

        // add table header
        $table->add_header('name', $rcmail->gettext('plugin'));
        $table->add_header('version', $rcmail->gettext('version'));
        $table->add_header('license', $rcmail->gettext('license'));
        $table->add_header('source', $rcmail->gettext('source'));

        foreach ($plugin_info as $name => $data) {
            $uri = !empty($data['src_uri']) ? $data['src_uri'] : ($data['uri'] ?? '');
            if ($uri && stripos($uri, 'http') !== 0) {
                $uri = 'http://' . $uri;
            }

            if ($uri) {
                $uri = html::a([
                        'target' => '_blank',
                        'href'   => rcube::Q($uri)
                    ],
                    rcube::Q($rcmail->gettext('download'))
                );
            }

            $license = isset($data['license']) ? $data['license'] : '';

            if (!empty($data['license_uri'])) {
                $license = html::a([
                        'target' => '_blank',
                        'href' => rcube::Q($data['license_uri'])
                    ],
                    rcube::Q($data['license'])
                );
            }
            else {
                $license = rcube::Q($license);
            }

            $table->add_row();
            $table->add('name', rcube::Q(!empty($data['name']) ? $data['name'] : $name));
            $table->add('version', !empty($data['version']) ? rcube::Q($data['version']) : '');
            $table->add('license', $license);
            $table->add('source', $uri);
        }

        return $table->show();
    }
}
actions/settings/response_save.php000064400000010615151727150610013441 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for saving a canned response record                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_response_save extends rcmail_action_settings_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $id      = trim(rcube_utils::get_input_string('_id', rcube_utils::INPUT_POST));
        $name    = trim(rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST));
        $text    = trim(rcube_utils::get_input_string('_text', rcube_utils::INPUT_POST, true));
        $is_html = (bool) rcube_utils::get_input_string('_is_html', rcube_utils::INPUT_POST);

        $response = [
            'id'      => $id,
            'name'    => $name,
            'data'    => $text,
            'is_html' => $is_html,
        ];

        if (!empty($text) && $is_html) {
            // replace uploaded images with data URIs
            $text = self::attach_images($text, 'response');
            // XSS protection in HTML signature (#1489251)
            $text = self::wash_html($text);

            $response['data'] = $text;
        }

        if (empty($name) || empty($text)) {
            // TODO: error
            $rcmail->output->show_message('formincomplete', 'error');
            $rcmail->overwrite_action('edit-response', ['post' => $response]);
            return;
        }

        if (!empty($id) && is_numeric($id)) {
            $plugin   = $rcmail->plugins->exec_hook('response_update', ['id' => $id, 'record' => $response]);
            $response = $plugin['record'];

            if (!$plugin['abort']) {
                $updated = $rcmail->user->update_response($id, $response);
            }
            else {
                $updated = $plugin['result'];
            }

            if ($updated) {
                $rcmail->output->show_message('successfullysaved', 'confirmation');
                $rcmail->output->command('parent.update_response_row', $id, rcube::Q($response['name']));
            }
            else {
                // show error message
                $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
                $rcmail->output->show_message($error, 'error', null, false);
            }
        }
        else {
            $plugin   = $rcmail->plugins->exec_hook('response_create', ['record' => $response]);
            $response = $plugin['record'];

            if (!$plugin['abort']) {
                $insert_id = $rcmail->user->insert_response($response);
            }
            else {
                $insert_id = $plugin['result'];
            }

            if ($insert_id) {
                $rcmail->output->show_message('successfullysaved', 'confirmation');

                $response['id'] = $_GET['_id'] = $insert_id;

                // add a new row to the list
                $rcmail->output->command('parent.update_response_row', $insert_id, rcube::Q($response['name']), true);
            }
            else {
                $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
                $rcmail->output->show_message($error, 'error', null, false);
                $rcmail->overwrite_action('add-response');
                return;
            }
        }

        // display the form again
        $rcmail->overwrite_action('edit-response', ['post' => $response]);
    }
}
actions/settings/identities.php000064400000005457151727150610012736 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Manage identities of a user account                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_identities extends rcmail_action
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->output->set_pagetitle($rcmail->gettext('identities'));
        $rcmail->output->include_script('list.js');
        $rcmail->output->set_env('identities_level', (int) $rcmail->config->get('identities_level', 0));
        $rcmail->output->add_label('deleteidentityconfirm');
        $rcmail->output->add_handlers([
                'identitieslist' => [$this, 'identities_list'],
        ]);

        $rcmail->output->send('identities');
    }

    public static function identities_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        // add id to message list table if not specified
        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmIdentitiesList';
        }

        // get identities list and define 'mail' column
        $list = $rcmail->user->list_emails();
        foreach ($list as $idx => $row) {
            $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_utils::idn_to_utf8($row['email']) . '>');
        }

        // get all identities from DB and define list of cols to be displayed
        $plugin = $rcmail->plugins->exec_hook('identities_list', [
                'list' => $list,
                'cols' => ['mail']
        ]);

        // @TODO: use <UL> instead of <TABLE> for identities list
        $out = self::table_output($attrib, $plugin['list'], $plugin['cols'], 'identity_id');

        // set client env
        $rcmail->output->add_gui_object('identitieslist', $attrib['id']);

        return $out;
    }
}
actions/settings/folder_create.php000064400000002203151727150610013355 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality to create a folder                            |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_create extends rcmail_action_settings_folder_edit
{
}
actions/settings/upload.php000064400000012313151727150610012046 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handles image uploads                                               |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_upload extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $from   = rcube_utils::get_input_string('_from', rcube_utils::INPUT_GET);
        $type   = preg_replace('/(add|edit)-/', '', $from);

        // Plugins in Settings may use this file for some uploads (#5694)
        // Make sure it does not contain a dot, which is a special character
        // when using rcube_session::append() below
        $type = str_replace('.', '-', $type);

        // Supported image format types
        $IMAGE_TYPES = explode(',', 'jpeg,jpg,jp2,tiff,tif,bmp,eps,gif,png,png8,png24,png32,svg,ico');

        // clear all stored output properties (like scripts and env vars)
        $rcmail->output->reset();

        $max_size = $rcmail->config->get($type . '_image_size', 64) * 1024;
        $uploadid = rcube_utils::get_input_string('_uploadid', rcube_utils::INPUT_GET);

        if (!empty($_FILES['_file']['tmp_name']) && is_array($_FILES['_file']['tmp_name'])) {
            $multiple = count($_FILES['_file']['tmp_name']) > 1;

            foreach ($_FILES['_file']['tmp_name'] as $i => $filepath) {
                $err        = $_FILES['_file']['error'][$i];
                $imageprop  = null;
                $attachment = null;

                // Process uploaded attachment if there is no error
                if (!$err) {
                    if ($max_size < $_FILES['_file']['size'][$i]) {
                        $err = 'size_error';
                    }
                    // check image file type
                    else {
                        $image     = new rcube_image($filepath);
                        $imageprop = $image->props();

                        if (!in_array(strtolower($imageprop['type']), $IMAGE_TYPES)) {
                            $err = 'type_error';
                        }
                    }
                }

                // save uploaded image in storage backend
                if (!empty($imageprop)) {
                    $attachment = $rcmail->plugins->exec_hook('attachment_upload', [
                        'path'     => $filepath,
                        'size'     => $_FILES['_file']['size'][$i],
                        'name'     => $_FILES['_file']['name'][$i],
                        'mimetype' => 'image/' . $imageprop['type'],
                        'group'    => $type,
                    ]);
                }

                if (!$err && !empty($attachment['status']) && empty($attachment['abort'])) {
                    $id = $attachment['id'];

                    // store new file in session
                    unset($attachment['status'], $attachment['abort']);
                    $rcmail->session->append($type . '.files', $id, $attachment);

                    $content = rcube::Q($attachment['name']);

                    $rcmail->output->command('add2attachment_list', "rcmfile$id", [
                            'html'      => $content,
                            'name'      => $attachment['name'],
                            'mimetype'  => $attachment['mimetype'],
                            'classname' => rcube_utils::file2class($attachment['mimetype'], $attachment['name']),
                            'complete'  => true
                        ],
                        $uploadid
                    );
                }
                else {
                    $error_label = null;
                    if ($err == 'type_error') {
                        $error_label = 'invalidimageformat';
                    }
                    else if ($err == 'size_error') {
                        $error_label = ['name' => 'filesizeerror', 'vars' => ['size' => self::show_bytes($max_size)]];
                    }

                    self::upload_error($err, $attachment, $error_label);
                }
            }
        }
        else if (self::upload_failure()) {
            $rcmail->output->command('remove_from_attachment_list', $uploadid);
        }

        $rcmail->output->send('iframe');
    }
}
actions/settings/responses.php000064400000005221151727150610012603 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Listing of canned responses, and quick insert action handler        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_responses extends rcmail_action_settings_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->output->set_pagetitle($rcmail->gettext('responses'));
        $rcmail->output->include_script('list.js');
        $rcmail->output->add_label('deleteresponseconfirm');
        $rcmail->output->add_handlers(['responseslist' => [$this, 'responses_list']]);
        $rcmail->output->send('responses');
    }

    /**
     * Create template object 'responseslist'
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML table output
     */
    public static function responses_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        $attrib += ['id' => 'rcmresponseslist', 'tagname' => 'table'];

        $plugin = $rcmail->plugins->exec_hook('responses_list', [
                'list' => $rcmail->get_compose_responses(),
                'cols' => ['name']
        ]);

        $out = self::table_output($attrib, $plugin['list'], $plugin['cols'], 'id');

        $readonly_responses = [];
        foreach ($plugin['list'] as $item) {
            if (!empty($item['static'])) {
                $readonly_responses[] = $item['id'];
            }
        }

        // set client env
        $rcmail->output->add_gui_object('responseslist', $attrib['id']);
        $rcmail->output->set_env('readonly_responses', $readonly_responses);

        return $out;
    }
}
actions/settings/folder_size.php000064400000003625151727150610013075 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality of getting folder size                        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_size extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();
        $name    = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);

        $size = $storage->folder_size($name);

        // @TODO: check quota and show percentage usage of specified mailbox?

        if ($size !== false) {
            $rcmail->output->command('folder_size_update', self::show_bytes($size));
        }
        else {
            self::display_server_error();
        }

        $rcmail->output->send();
    }
}
actions/settings/identity_delete.php000064400000004262151727150610013741 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for identity delete action                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_identity_delete extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $iid     = rcube_utils::get_input_string('_iid', rcube_utils::INPUT_POST);
        $deleted = 0;

        if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid)) {
            $plugin = $rcmail->plugins->exec_hook('identity_delete', ['id' => $iid]);

            $deleted = !$plugin['abort'] ? $rcmail->user->delete_identity($iid) : $plugin['result'];
        }

        if ($deleted > 0 && $deleted !== false) {
            $rcmail->output->show_message('deletedsuccessfully', 'confirmation', null, false);
            $rcmail->output->command('remove_identity', $iid);
        }
        else {
            $msg = !empty($plugin['message']) ? $plugin['message'] : ($deleted < 0 ? 'nodeletelastidentity' : 'errorsaving');
            $rcmail->output->show_message($msg, 'error', null, false);
        }

        $rcmail->output->send();
    }
}
actions/settings/upload_display.php000064400000003634151727150610013601 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Displaying uploaded images                                          |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_upload_display extends rcmail_action
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $from = rcube_utils::get_input_string('_from', rcube_utils::INPUT_GET);
        $type = preg_replace('/(add|edit)-/', '', $from);

        // Plugins in Settings may use this file for some uploads (#5694)
        // Make sure it does not contain a dot, which is a special character
        // when using rcube_session::append() below
        $type = str_replace('.', '-', $type);

        $id = 'undefined';

        if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs)) {
            $id = $regs[1];
        }

        self::display_uploaded_file($_SESSION[$type]['files'][$id]);

        exit;
    }
}
actions/settings/folder_delete.php000064400000005110151727150610013354 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide functionality to delete a folder                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_delete extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();
        $mbox    = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);

        if (strlen($mbox)) {
            $plugin = $rcmail->plugins->exec_hook('folder_delete', ['name' => $mbox]);

            if (empty($plugin['abort'])) {
                $deleted = $storage->delete_folder($plugin['name']);
            }
            else {
                $deleted = $plugin['result'];
            }

            // #1488692: update session
            if ($deleted && isset($_SESSION['mbox']) && $_SESSION['mbox'] === $mbox) {
                $rcmail->session->remove('mbox');
            }
        }

        if (!empty($deleted)) {
            // Remove folder and subfolders rows
            $rcmail->output->command('remove_folder_row', $mbox);
            $rcmail->output->show_message('folderdeleted', 'confirmation');
            // Clear content frame
            $rcmail->output->command('subscription_select');
            $rcmail->output->command('set_quota', self::quota_content());
        }
        else {
            self::display_server_error('errorsaving');
        }

        $rcmail->output->send();
    }
}
actions/settings/folder_unsubscribe.php000064400000003716151727150610014450 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handler for folder unsubscribe action                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_folder_unsubscribe extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();
        $mbox    = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);

        if (strlen($mbox)) {
            $result = $storage->unsubscribe([$mbox]);
        }

        if (!empty($result)) {
            $rcmail->output->show_message('folderunsubscribed', 'confirmation');
        }
        else {
            self::display_server_error('errorsaving');
            $rcmail->output->command('reset_subscription', $mbox, true);
        }

        $rcmail->output->send();
    }
}
actions/settings/response_get.php000064400000004502151727150610013260 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for fetching a canned response content                    |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_settings_response_get extends rcmail_action
{
    static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $id = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GET);

        if ($id && ($response = $rcmail->get_compose_response($id))) {
            $is_html = (bool) rcube_utils::get_input_string('_is_html', rcube_utils::INPUT_GET);

            if ($is_html && empty($response['is_html'])) {
                $converter = new rcube_text2html($response['data'], false, ['wrap' => true]);

                $response['data'] = $converter->get_html();
                $response['is_html'] = true;
            }
            else if (!$is_html && !empty($response['is_html'])) {
                $params = [
                    'width' => $rcmail->config->get('line_length', 72),
                    'links' => false,
                ];

                $response['data'] = $rcmail->html2text($response['data'], $params);
                $response['is_html'] = false;
            }

            $rcmail->output->command('insert_response', $response);
        }

        $rcmail->output->send();
    }
}
actions/utils/error.php000064400000014215151727150610011216 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Display error message page                                          |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_error extends rcmail_action
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $ERROR_CODE    = !empty($args['code']) ? $args['code'] : 500;
        $ERROR_MESSAGE = !empty($args['message']) ? $args['message'] : null;

        // authorization error
        if ($ERROR_CODE == 401) {
            $error_title = $rcmail->gettext('errauthorizationfailed');
            $error_text  = nl2br($rcmail->gettext('errunauthorizedexplain')
                . "\n" . $rcmail->gettext('errcontactserveradmin'));
        }
        // forbidden due to request check
        else if ($ERROR_CODE == 403) {
            if ($_SERVER['REQUEST_METHOD'] == 'GET' && $rcmail->request_status == rcube::REQUEST_ERROR_URL) {
                $url = $rcmail->url($_GET, true, false, true);
                $add = html::a($url, $rcmail->gettext('clicktoresumesession'));
            }
            else {
                $add = $rcmail->gettext('errcontactserveradmin');
            }

            $error_title = $rcmail->gettext('errrequestcheckfailed');
            $error_text  = nl2br($rcmail->gettext('errcsrfprotectionexplain')) . '<p>' . $add . '</p>';
        }
        // failed request (wrong step in URL)
        else if ($ERROR_CODE == 404) {
            $request_url = htmlentities($_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
            $error_title = $rcmail->gettext('errnotfound');
            $error_text  = nl2br($rcmail->gettext('errnotfoundexplain')
                . "\n" . $rcmail->gettext('errcontactserveradmin'));

            $error_text .= '<p><i>' . $rcmail->gettext('errfailedrequest') . ": $request_url</i></p>";
        }
        // Gone, e.g. message cached but not in the storage
        else if ($ERROR_CODE == 410) {
            $error_title = $rcmail->gettext('servererror');
            $error_text  = $rcmail->gettext('messageopenerror');
        }
        // invalid compose ID
        else if ($ERROR_CODE == 450 && $_SERVER['REQUEST_METHOD'] == 'GET' && $rcmail->action == 'compose') {
            $url = $rcmail->url('compose');

            $error_title = $rcmail->gettext('errcomposesession');
            $error_text  = nl2br($rcmail->gettext('errcomposesessionexplain'))
                . '<p>' . html::a($url, $rcmail->gettext('clicktocompose')) . '</p>';
        }
        // database connection error
        else if ($ERROR_CODE == 601) {
            $error_title = "Configuration error";
            $error_text  =  nl2br($ERROR_MESSAGE) . "<br />Please read the INSTALL instructions!";
        }
        // database connection error
        else if ($ERROR_CODE == 603) {
            $error_title = $rcmail->gettext('dberror');
            $error_text  = nl2br($rcmail->gettext('dbconnerror') . "\n" . $rcmail->gettext('errcontactserveradmin'));
        }
        // system error
        else {
            $error_title = $rcmail->gettext('servererror');
            $error_text  = sprintf('Error No. [%s]', $ERROR_CODE);
        }

        // inform plugins
        if ($rcmail->plugins) {
            $plugin = $rcmail->plugins->exec_hook('error_page', [
                    'code'  => $ERROR_CODE,
                    'title' => $error_title,
                    'text'  => $error_text,
            ]);

            if (!empty($plugin['title'])) {
                $error_title = $plugin['title'];
            }
            if (!empty($plugin['text'])) {
                $error_text = $plugin['text'];
            }
        }

        $HTTP_ERR_CODE = $ERROR_CODE && $ERROR_CODE < 600 ? $ERROR_CODE : 500;

        // Ajax request
        if ($rcmail->output && $rcmail->output->type == 'js') {
            $rcmail->output->sendExit('', ["HTTP/1.0 $HTTP_ERR_CODE $error_title"]);
        }

        // compose page content
        $page_content = '<div class="boxerror">'
            .'<h3 class="error-title">' . mb_strtoupper($error_title) . '</h3>'
            .'<div class="error-text">' . $error_text . '</div>'
            .'</div>';

        if ($rcmail->output && $rcmail->output->template_exists('error')) {
            $GLOBALS['__page_content'] = $page_content;

            $task = empty($rcmail->user) || empty($rcmail->user->ID) ? '-login' : '';

            $rcmail->output->reset();
            $rcmail->output->set_env('error_task', 'error' . $task);
            $rcmail->output->set_env('server_error', $ERROR_CODE);
            $rcmail->output->set_env('comm_path', $rcmail->comm_path);
            $rcmail->output->send('error');
        }

        $skin    = $rcmail->config->get('skin', 'default');
        $product = $rcmail->config->get('product_name', 'Roundcube Webmail');

        $output = '<!doctype html><html><head>'
            . '<title>' . $product . ':: ERROR</title>'
            . '</head><body>'
            . '<table border="0" cellspacing="0" cellpadding="0" width="100%" height="80%">'
            . '<tr><td align="center">' . $page_content . '</td></tr>'
            . '</table>'
            . '</body></html>';

        $rcmail->output->sendExit($output);
    }
}
actions/utils/spell_html.php000064400000005516151727150610012234 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecker for TinyMCE                                            |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_spell_html extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $method = rcube_utils::get_input_string('method', rcube_utils::INPUT_POST);
        $lang   = rcube_utils::get_input_string('lang', rcube_utils::INPUT_POST);
        $result = [];

        $spellchecker = new rcube_spellchecker($lang);

        if ($method == 'addToDictionary') {
            $data = rcube_utils::get_input_string('word', rcube_utils::INPUT_POST);

            $spellchecker->add_word($data);
            $result['result'] = true;
        }
        else {
            $data = rcube_utils::get_input_string('text', rcube_utils::INPUT_POST, true);
            $data = html_entity_decode($data, ENT_QUOTES, RCUBE_CHARSET);

            if ($data && !$spellchecker->check($data)) {
                $result['words']      = $spellchecker->get();
                $result['dictionary'] = (bool) $rcmail->config->get('spellcheck_dictionary');
            }
        }

        header("Content-Type: application/json; charset=" . RCUBE_CHARSET);

        if ($error = $spellchecker->error()) {
            rcube::raise_error([
                    'code'    => 500,
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                    'message' => "Spellcheck error: " . $error
                ],
                true,
                false
            );

            echo json_encode(['error' => $rcmail->gettext('internalerror')]);
            exit;
        }

        // send output
        echo json_encode($result);
        exit;
    }
}
actions/utils/text2html.php000064400000003143151727150610012016 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Convert plain text to HTML                                          |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_text2html extends rcmail_action
{
    public static $source = 'php://input';

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $text = file_get_contents(self::$source);

        $converter = new rcube_text2html($text, false, ['wrap' => true]);

        $rcmail = rcmail::get_instance();

        $html = $converter->get_html();

        $rcmail->output->sendExit($html, ['Content-Type: text/html; charset=' . RCUBE_CHARSET]);
    }
}
actions/utils/html2text.php000064400000003355151727150610012023 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Convert HTML message to plain text                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_html2text extends rcmail_action
{
    public static $source = 'php://input';

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $html = file_get_contents(self::$source);

        $params['links'] = (bool) rcube_utils::get_input_value('_do_links', rcube_utils::INPUT_GET);
        $params['width'] = (int) rcube_utils::get_input_value('_width', rcube_utils::INPUT_GET);

        $rcmail = rcmail::get_instance();
        $text   = $rcmail->html2text($html, $params);

        $rcmail->output->sendExit($text, ['Content-Type: text/plain; charset=' . RCUBE_CHARSET]);
    }
}
actions/utils/save_pref.php000064400000006442151727150610012042 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Save preferences setting in database                                |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_save_pref extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail   = rcmail::get_instance();
        $name     = rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST);
        $value    = rcube_utils::get_input_value('_value', rcube_utils::INPUT_POST);
        $sessname = rcube_utils::get_input_string('_session', rcube_utils::INPUT_POST);

        // Whitelisted preferences and session variables, others
        // can be added by plugins
        $whitelist = [
            'list_cols',
            'collapsed_folders',
            'collapsed_abooks',
        ];

        $whitelist_sess = [
            'list_attrib/columns',
        ];

        $whitelist      = array_merge($whitelist, $rcmail->plugins->allowed_prefs);
        $whitelist_sess = array_merge($whitelist_sess, $rcmail->plugins->allowed_session_prefs);

        if (!in_array($name, $whitelist) || ($sessname && !in_array($sessname, $whitelist_sess))) {
            rcube::raise_error([
                    'code' => 500,
                    'file' => __FILE__,
                    'line' => __LINE__,
                    'message' => sprintf("Hack attempt detected (user: %s)", $rcmail->get_user_name())
                ],
                true,
                false
            );

            $rcmail->output->reset();
            $rcmail->output->send();
        }

        // save preference value
        $rcmail->user->save_prefs([$name => $value]);

        // update also session if requested
        if ($sessname) {
            // Support multidimensional arrays...
            $vars = explode('/', $sessname);

            // ... up to 3 levels
            if (count($vars) == 1) {
                $_SESSION[$vars[0]] = $value;
            }
            else if (count($vars) == 2) {
                $_SESSION[$vars[0]][$vars[1]] = $value;
            }
            else if (count($vars) == 3) {
                $_SESSION[$vars[0]][$vars[1]][$vars[2]] = $value;
            }
        }

        $rcmail->output->reset();
        $rcmail->output->send();
    }
}
actions/utils/modcss.php000064400000006100151727150610011347 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Modify CSS source from a URL                                        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_modcss extends rcmail_action
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $url = rcube_utils::get_input_string('_u', rcube_utils::INPUT_GET);
        $url = preg_replace('![^a-z0-9.-]!i', '', $url);

        if ($url === null || empty($_SESSION['modcssurls'][$url])) {
            $rcmail->output->sendExitError(403, "Unauthorized request");
        }

        $realurl = $_SESSION['modcssurls'][$url];

        // don't allow any other connections than http(s)
        if (!preg_match('~^https?://~i', $realurl, $matches)) {
            $rcmail->output->sendExitError(403, "Invalid URL");
        }

        $source = false;
        $ctype  = null;

        try {
            $client   = rcube::get_instance()->get_http_client();
            $response = $client->get($realurl);

            if (!empty($response)) {
                $ctype  = $response->getHeader('Content-Type');
                $ctype  = !empty($ctype) ? $ctype[0] : '';
                $source = $response->getBody();
            }
        }
        catch (Exception $e) {
            rcube::raise_error($e, true, false);
        }

        $cid    = rcube_utils::get_input_string('_c', rcube_utils::INPUT_GET);
        $prefix = rcube_utils::get_input_string('_p', rcube_utils::INPUT_GET);

        $container_id = preg_replace('/[^a-z0-9]/i', '', $cid);
        $css_prefix   = preg_replace('/[^a-z0-9]/i', '', $prefix);
        $ctype_regexp = '~^text/(css|plain)~i';

        if ($source !== false && $ctype && preg_match($ctype_regexp, $ctype)) {
            $rcmail->output->sendExit(
                rcube_utils::mod_css_styles($source, $container_id, false, $css_prefix),
                ['Content-Type: text/css']
            );
        }

        $rcmail->output->sendExitError(404, "Invalid response returned by server");
    }
}
actions/utils/killcache.php000064400000005012151727150610011777 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Delete rows from cache tables                                       |
 +-----------------------------------------------------------------------+
 | Author: Dennis P. Nikolaenko <dennis@nikolaenko.ru>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_killcache extends rcmail_action
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // don't allow public access if not in devel_mode
        if (!$rcmail->config->get('devel_mode')) {
            header("HTTP/1.0 401 Access denied");
            die("Access denied!");
        }

        // @TODO: transaction here (if supported by DB) would be a good thing
        $res = $rcmail->db->query("DELETE FROM " . $rcmail->db->table_name('cache', true));
        if ($err = $rcmail->db->is_error($res)) {
            exit($err);
        }

        $res = $rcmail->db->query("DELETE FROM " . $rcmail->db->table_name('cache_shared', true));
        if ($err = $rcmail->db->is_error($res)) {
            exit($err);
        }

        $res = $rcmail->db->query("DELETE FROM " . $rcmail->db->table_name('cache_messages', true));
        if ($err = $rcmail->db->is_error($res)) {
            exit($err);
        }

        $res = $rcmail->db->query("DELETE FROM " . $rcmail->db->table_name('cache_index', true));
        if ($err = $rcmail->db->is_error($res)) {
            exit($err);
        }

        $res = $rcmail->db->query("DELETE FROM " . $rcmail->db->table_name('cache_thread', true));
        if ($err = $rcmail->db->is_error($res)) {
            exit($err);
        }

        echo "Cache cleared\n";
        exit;
    }
}
actions/utils/spell.php000064400000005715151727150610011211 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Invoke the configured or default spell checking engine.             |
 +-----------------------------------------------------------------------+
 | Author: Kris Steinhoff <steinhof@umich.edu>                           |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_utils_spell extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        // read input
        $lang = rcube_utils::get_input_string('lang', rcube_utils::INPUT_GET);
        $data = file_get_contents('php://input');

        $learn_word = strpos($data, '<learnword>');

        // Get data string
        $left  = strpos($data, '<text>');
        $right = strrpos($data, '</text>');
        $data  = substr($data, $left+6, $right-($left+6));
        $data  = html_entity_decode($data, ENT_QUOTES, RCUBE_CHARSET);

        $spellchecker = new rcube_spellchecker($lang);

        if ($learn_word) {
            $spellchecker->add_word($data);
            $result = '<?xml version="1.0" encoding="'.RCUBE_CHARSET.'"?><learnwordresult></learnwordresult>';
        }
        else if (empty($data)) {
            $result = '<?xml version="1.0" encoding="'.RCUBE_CHARSET.'"?><spellresult charschecked="0"></spellresult>';
        }
        else {
            $spellchecker->check($data);
            $result = $spellchecker->get_xml();
        }

        if ($error = $spellchecker->error()) {
            rcube::raise_error([
                    'code' => 500,
                    'file' => __FILE__,
                    'line' => __LINE__,
                    'message' => "Spellcheck error: " . $error
                ],
                true,
                false
            );

            header("HTTP/1.0 500 Internal Server Error");
            exit;
        }

        // set response length
        header("Content-Length: " . strlen($result));

        // Don't use server's default Content-Type charset (#1486406)
        header("Content-Type: text/xml; charset=" . RCUBE_CHARSET);
        print $result;
        exit;
    }
}
actions/contacts/show.php000064400000021624151727150610011525 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show contact details                                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_show extends rcmail_action_contacts_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // Get contact ID and source ID from request
        $cids   = self::get_cids();
        $source = key($cids);
        $cid    = $cids ? array_first($cids[$source]) : null;

        // Initialize addressbook source
        self::$CONTACTS  = self::contact_source($source, true);
        self::$SOURCE_ID = $source;

        // read contact record (or get the one defined in 'save' action)
        if (!empty($args['contact'])) {
            self::$contact = $args['contact'];
        }
        else if ($cid) {
            self::$contact = self::$CONTACTS->get_record($cid, true);
        }

        if ($cid && self::$contact) {
            $rcmail->output->set_env('readonly', self::$CONTACTS->readonly || !empty(self::$contact['readonly']));
            $rcmail->output->set_env('cid', self::$contact['ID']);

            // remember current search request ID (if in search mode)
            if ($search = rcube_utils::get_input_string('_search', rcube_utils::INPUT_GET)) {
                $rcmail->output->set_env('search_request', $search);
            }
        }

        // get address book name (for display)
        self::set_sourcename(self::$CONTACTS);

        $rcmail->output->add_handlers([
                'contacthead'    => [$this, 'contact_head'],
                'contactdetails' => [$this, 'contact_details'],
                'contactphoto'   => [$this, 'contact_photo'],
        ]);

        $rcmail->output->send('contact');
    }

    public static function contact_head($attrib)
    {
        $rcmail = rcmail::get_instance();

        // check if we have a valid result
        if (!self::$contact) {
            $rcmail->output->show_message('contactnotfound', 'error');
            return false;
        }

        $form = [
            'head' => [  // section 'head' is magic!
                'name' => $rcmail->gettext('contactnameandorg'),
                'content' => [
                    'source'       => ['type' => 'text'],
                    'prefix'       => ['type' => 'text'],
                    'firstname'    => ['type' => 'text'],
                    'middlename'   => ['type' => 'text'],
                    'surname'      => ['type' => 'text'],
                    'suffix'       => ['type' => 'text'],
                    'name'         => ['type' => 'text'],
                    'nickname'     => ['type' => 'text'],
                    'organization' => ['type' => 'text'],
                    'department'   => ['type' => 'text'],
                    'jobtitle'     => ['type' => 'text'],
                ],
            ],
        ];

        unset($attrib['name']);

        return self::contact_form($form, self::$contact, $attrib);
    }

    public static function contact_details($attrib)
    {
        $rcmail = rcmail::get_instance();

        // check if we have a valid result
        if (!self::$contact) {
            return false;
        }

        $i_size       = !empty($attrib['size']) ? $attrib['size'] : 40;
        $short_labels = self::get_bool_attr($attrib, 'short-legend-labels');

        $form = [
            'contact' => [
                'name'    => $rcmail->gettext('properties'),
                'content' => [
                    'email'   => ['size' => $i_size, 'render_func' => 'rcmail_action_contacts_show::render_email_value'],
                    'phone'   => ['size' => $i_size, 'render_func' => 'rcmail_action_contacts_show::render_phone_value'],
                    'address' => [],
                    'website' => ['size' => $i_size, 'render_func' => 'rcmail_action_contacts_show::render_url_value'],
                    'im'      => ['size' => $i_size],
                ],
            ],
            'personal' => [
                'name'    => $rcmail->gettext($short_labels ? 'personal' : 'personalinfo'),
                'content' => [
                    'gender'      => ['size' => $i_size],
                    'maidenname'  => ['size' => $i_size],
                    'birthday'    => ['size' => $i_size],
                    'anniversary' => ['size' => $i_size],
                    'manager'     => ['size' => $i_size],
                    'assistant'   => ['size' => $i_size],
                    'spouse'      => ['size' => $i_size],
                ],
            ],
        ];

        if (isset(rcmail_action_contacts_index::$CONTACT_COLTYPES['notes'])) {
            $form['notes'] = [
                'name'    => $rcmail->gettext('notes'),
                'content' => [
                    'notes' => ['type' => 'textarea', 'label' => false],
                ],
            ];
        }

        if (self::$CONTACTS->groups) {
            $form['groups'] = [
                'name'    => $rcmail->gettext('groups'),
                'content' => self::contact_record_groups(self::$contact['ID']),
            ];
        }

        return self::contact_form($form, self::$contact, $attrib);
    }

    public static function render_email_value($email)
    {
        $rcmail = rcmail::get_instance();

        return html::a([
                'href'    => 'mailto:' . $email,
                'onclick' => sprintf(
                    "return %s.command('compose','%s',this)",
                    rcmail_output::JS_OBJECT_NAME,
                    rcube::JQ($email)
                ),
                'title'   => $rcmail->gettext('composeto'),
                'class'   => 'email',
            ],
            rcube::Q($email)
        );
    }

    public static function render_phone_value($phone)
    {
        $attrs = [
            'href'  => 'tel:' . preg_replace('/[^0-9+,;-]/', '', $phone),
            'class' => 'phone',
        ];

        return html::a($attrs, rcube::Q($phone));
    }

    public static function render_url_value($url)
    {
        $prefix = preg_match('!^(http|ftp)s?://!', $url) ? '' : 'http://';

        return html::a([
                'href'   => $prefix . $url,
                'target' => '_blank',
                'class'  => 'url',
            ],
            rcube::Q($url)
        );
    }

    public static function contact_record_groups($contact_id)
    {
        $groups = self::$CONTACTS->list_groups();

        if (empty($groups)) {
            return '';
        }

        $rcmail   = rcmail::get_instance();
        $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $members  = self::$CONTACTS->get_record_groups($contact_id);
        $table    = new html_table(['tagname' => 'ul', 'cols' => 1, 'class' => 'proplist simplelist']);
        $checkbox = new html_checkbox(['name' => '_gid[]', 'class' => 'groupmember', 'disabled' => self::$CONTACTS->readonly]);

        foreach ($groups as $group) {
            $gid   = $group['ID'];
            $input = $checkbox->show(!empty($members[$gid]) ? $gid : null, ['value' => $gid]);
            $table->add(null, html::label(null, $input . rcube::Q($group['name'])));
        }

        $hiddenfields = new html_hiddenfield(['name' => '_source', 'value' => $source]);
        $hiddenfields->add(['name' => '_cid', 'value' => $contact_id]);

        $form_attrs = [
            'name'    => 'form',
            'method'  => 'post',
            'task'    => $rcmail->task,
            'action'  => 'save',
            'request' => 'save.' . intval($contact_id),
            'noclose' => true,
        ];

        $form_start = $rcmail->output->request_form($form_attrs, $hiddenfields->show());
        $form_end   = '</form>';

        $rcmail->output->add_gui_object('editform', 'form');
        $rcmail->output->add_label('addingmember', 'removingmember');

        return $form_start . html::tag('fieldset', 'contactfieldgroup contactgroups', $table->show()) . $form_end;
    }
}
actions/contacts/qrcode.php000064400000010322151727150610012013 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show contact data as QR code                                        |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_qrcode extends rcmail_action_contacts_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        // Get contact ID and source ID from request
        $cids   = self::get_cids();
        $source = key($cids);
        $cid    = $cids ? array_first($cids[$source]) : null;
        $rcmail = rcmail::get_instance();

        // read contact record
        $abook   = self::contact_source($source, true);
        $contact = $abook->get_record($cid, true);

        // generate QR code image
        if ($data = self::contact_qrcode($contact)) {
            $headers = [
                'Content-Type: ' . self::check_support(),
                'Content-Length: ' . strlen($data)
            ];

            $rcmail->output->sendExit($data, $headers);
        }

        $rcmail->output->sendExit('', ['HTTP/1.0 404 Contact not found']);
    }

    /**
     * Generate a QR-code image for a contact
     *
     * @param array $contact Contact record
     *
     * @return string|null Image content, Null on error or missing PHP extensions
     */
    public static function contact_qrcode($contact)
    {
        if (empty($contact)) {
            return null;
        }

        $type = self::check_support();

        if (empty($type)) {
            return null;
        }

        $vcard = new rcube_vcard();

        // QR code input is limited, use only common fields
        $fields = ['name', 'firstname', 'surname', 'middlename', 'nickname',
            'organization', 'phone', 'email', 'jobtitle', 'prefix', 'suffix'];

        foreach ($contact as $field => $value) {
            if (strpos($field, ':') !== false) {
                list($field, $section) = explode(':', $field, 2);
            }
            else {
                $section = null;
            }

            if (in_array($field, $fields)) {
                foreach ((array) $value as $v) {
                    $vcard->set($field, $v, $section);
                }
            }
        }

        $data = $vcard->export();

        if (empty($data)) {
            return null;
        }

        $renderer_style = new BaconQrCode\Renderer\RendererStyle\RendererStyle(300, 1);
        $renderer_image = $type == 'image/png'
            ? new BaconQrCode\Renderer\Image\ImagickImageBackEnd()
            : new BaconQrCode\Renderer\Image\SvgImageBackEnd();

        $renderer = new BaconQrCode\Renderer\ImageRenderer($renderer_style, $renderer_image);
        $writer   = new BaconQrCode\Writer($renderer);

        return $writer->writeString($data, RCUBE_CHARSET);
    }

    /**
     * Check required extensions and classes for QR code generation
     *
     * @return string|null Content-type of the image result
     */
    public static function check_support()
    {
        if (extension_loaded('iconv') && class_exists('BaconQrCode\Renderer\ImageRenderer')) {
            if (extension_loaded('xmlwriter')) {
                return 'image/svg+xml';
            }

            if (extension_loaded('imagick')) {
                return 'image/png';
            }
        }
    }
}
actions/contacts/move.php000064400000023111151727150610011504 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Move a contact record from one directory to another                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_move extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $cids         = self::get_cids();
        $target       = rcube_utils::get_input_string('_to', rcube_utils::INPUT_POST);
        $target_group = rcube_utils::get_input_string('_togid', rcube_utils::INPUT_POST);

        $rcmail    = rcmail::get_instance();
        $all       = 0;
        $deleted   = 0;
        $success   = 0;
        $errormsg  = 'moveerror';
        $maxnum    = $rcmail->config->get('max_group_members', 0);
        $page_size = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));
        $page      = !empty($_SESSION['page']) ? $_SESSION['page'] : 1;

        foreach ($cids as $source => $source_cids) {
            // Something wrong, target not specified
            if (!strlen($target)) {
                break;
            }

            // It might happen when moving records from search result
            // Do nothing, go to the next source
            if ((string) $target === (string) $source) {
                continue;
            }

            $CONTACTS = $rcmail->get_address_book($source);
            $TARGET   = $rcmail->get_address_book($target);

            if (!$TARGET || !$TARGET->ready || $TARGET->readonly) {
                break;
            }

            if (!$CONTACTS || !$CONTACTS->ready || ($CONTACTS->readonly && empty($CONTACTS->deletable))) {
                continue;
            }

            $ids = [];

            foreach ($source_cids as $idx => $cid) {
                $record = $CONTACTS->get_record($cid, true);

                // avoid moving groups
                if (isset($record['_type']) && $record['_type'] == 'group') {
                    unset($source_cids[$idx]);
                    continue;
                }

                // Check if contact exists, if so, we'll need it's ID
                // Note: Some addressbooks allows empty email address field
                // @TODO: should we check all email addresses?
                $email = $CONTACTS->get_col_values('email', $record, true);

                if (!empty($email)) {
                    $result = $TARGET->search('email', $email[0], 1, true, true);
                }
                else if (!empty($record['name'])) {
                    $result = $TARGET->search('name', $record['name'], 1, true, true);
                }
                else {
                    $result = new rcube_result_set();
                }

                // insert contact record
                if (!$result->count) {
                    $plugin = $rcmail->plugins->exec_hook('contact_create', [
                            'record' => $record,
                            'source' => $target,
                            'group'  => $target_group
                    ]);

                    if (empty($plugin['abort'])) {
                        if ($insert_id = $TARGET->insert($plugin['record'], false)) {
                            $ids[] = $insert_id;
                            $success++;
                        }
                    }
                    else if (!empty($plugin['result'])) {
                        $ids = array_merge($ids, $plugin['result']);
                        $success++;
                    }
                }
                else {
                    $record   = $result->first();
                    $ids[]    = $record['ID'];
                    $errormsg = empty($email) ? 'contactnameexists' : 'contactexists';
                }
            }

            // remove source contacts
            if ($success && !empty($source_cids)) {
                $all   += count($source_cids);
                $plugin = $rcmail->plugins->exec_hook('contact_delete', [
                        'id'     => $source_cids,
                        'source' => $source
                ]);

                $del_status = !$plugin['abort'] ? $CONTACTS->delete($source_cids) : $plugin['result'];

                if ($del_status) {
                    $deleted += $del_status;
                }
            }

            // assign to group
            if ($target_group && $TARGET->groups && !empty($ids)) {
                $plugin = $rcmail->plugins->exec_hook('group_addmembers', [
                        'group_id' => $target_group,
                        'ids'      => $ids,
                        'source'   => $target
                ]);

                if (empty($plugin['abort'])) {
                    $TARGET->reset();
                    $TARGET->set_group($target_group);

                    if ($maxnum && ($TARGET->count()->count + count($plugin['ids']) > $maxnum)) {
                        $rcmail->output->show_message('maxgroupmembersreached', 'warning', ['max' => $maxnum]);
                        $rcmail->output->send();
                    }

                    if (($cnt = $TARGET->add_to_group($target_group, $plugin['ids'])) && $cnt > $success) {
                        $success = $cnt;
                    }
                }
                else if ($plugin['result']) {
                    $success = $plugin['result'];
                }

                $errormsg = !empty($plugin['message']) ? $plugin['message'] : 'moveerror';
            }
        }

        if (!$deleted || $deleted != $all) {
            $rcmail->output->command('list_contacts');
        }
        else {
            // update saved search after data changed
            if (($records = self::search_update(true)) !== false) {
                // create resultset object
                $count  = count($records);
                $first  = ($page-1) * $page_size;
                $result = new rcube_result_set($count, $first);
                $pages  = ceil((count($records) + $deleted) / $page_size);

                // last page and it's empty, display previous one
                if ($result->count && $result->count <= ($page_size * ($page - 1))) {
                    $rcmail->output->command('list_page', 'prev');
                    $rowcount = $rcmail->gettext('loading');
                }
                // get records from the next page to add to the list
                else if ($pages > 1 && $page < $pages) {
                    // sort the records
                    ksort($records, SORT_LOCALE_STRING);

                    $first += $page_size;
                    // create resultset object
                    $res = new rcube_result_set($count, $first - $deleted);

                    if ($page_size < $count) {
                        $records = array_slice($records, $first - $deleted, $deleted);
                    }

                    $res->records = array_values($records);
                    $records = $res;
                }
                else {
                    unset($records);
                }
            }
            else if (isset($CONTACTS)) {
                // count contacts for this user
                $result = $CONTACTS->count();
                $pages  = ceil(($result->count + $deleted) / $page_size);

                // last page and it's empty, display previous one
                if ($result->count && $result->count <= ($page_size * ($page - 1))) {
                    $rcmail->output->command('list_page', 'prev');
                    $rowcount = $rcmail->gettext('loading');
                }
                // get records from the next page to add to the list
                else if ($pages > 1 && $page < $pages) {
                    $CONTACTS->set_page($page);
                    $records = $CONTACTS->list_records(null, -$deleted);
                }
            }

            if (!isset($rowcount)) {
                $rowcount = isset($result) ? self::get_rowcount_text($result) : 0;
            }

            // update message count display
            $rcmail->output->set_env('pagecount', isset($result) ? ceil($result->count / $page_size) : 0);
            $rcmail->output->command('set_rowcount', $rowcount);

            // add new rows from next page (if any)
            if (!empty($records)) {
                self::js_contacts_list($records);
            }
        }

        if (!$success) {
            $rcmail->output->show_message($errormsg, 'error');
        }
        else {
            $rcmail->output->show_message('movesuccess', 'confirmation', ['nr' => $success]);
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/group_rename.php000064400000005714151727150610013232 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for contact groups rename action                          |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_group_rename extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail   = rcmail::get_instance();
        $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $contacts = self::contact_source($source);

        if ($contacts->readonly || !$contacts->groups) {
            $rcmail->output->show_message('sourceisreadonly', 'warning');
            $rcmail->output->send();
        }

        if (
            ($gid = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_POST))
            && ($name = trim(rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST, true)))
        ) {
            $newgid = null;
            $plugin = $rcmail->plugins->exec_hook('group_rename', [
                    'group_id' => $gid,
                    'name'     => $name,
                    'source'   => $source,
            ]);

            if (empty($plugin['abort'])) {
                $newname = $contacts->rename_group($gid, $plugin['name'], $newgid);
            }
            else {
                $newname = $plugin['result'];
            }
        }

        if (!empty($newname)) {
            $rcmail->output->show_message('grouprenamed', 'confirmation');
            $rcmail->output->command('update_contact_group', [
                    'source' => $source,
                    'id'     => $gid,
                    'name'   => $newname,
                    'newid'  => $newgid ?? null
            ]);
        }
        else {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
            $rcmail->output->show_message($error, 'error');
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/search_create.php000064400000005577151727150610013346 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Create saved search                                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_search_create extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $id     = rcube_utils::get_input_value('_search', rcube_utils::INPUT_POST);
        $name   = rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true);

        if (
            !empty($_SESSION['contact_search_params'])
            && ($params = $_SESSION['contact_search_params'])
            && $params['id'] == $id
        ) {
            $data = [
                'type' => rcube_user::SEARCH_ADDRESSBOOK,
                'name' => $name,
                'data' => [
                    'fields' => $params['data'][0],
                    'search' => $params['data'][1],
                ],
            ];

            $plugin = $rcmail->plugins->exec_hook('saved_search_create', ['data' => $data]);

            if (empty($plugin['abort'])) {
                $result = $rcmail->user->insert_search($plugin['data']);
            }
            else {
                $result = $plugin['result'];
            }
        }

        if (!empty($result)) {
            $rcmail->output->show_message('savedsearchcreated', 'confirmation');
            $rcmail->output->command('insert_saved_search', rcube::Q($name), rcube::Q($result));
        }
        else {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'savedsearchcreateerror';
            $rcmail->output->show_message($error, 'error');
        }

        $rcmail->output->send();
    }
}
actions/contacts/search_delete.php000064400000005067151727150610013337 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Delete saved search                                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_search_delete extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $id     = rcube_utils::get_input_string('_sid', rcube_utils::INPUT_POST);
        $result = false;

        if (!empty($id)) {
            $plugin = $rcmail->plugins->exec_hook('saved_search_delete', ['id' => $id]);

            if (empty($plugin['abort'])) {
                $result = $rcmail->user->delete_search($id);
            }
            else {
                $result = $plugin['result'];
            }
        }

        if ($result) {
            $rcmail->output->show_message('savedsearchdeleted', 'confirmation');
            $rcmail->output->command('remove_search_item', rcube::Q($id));
            // contact list will be cleared, clear also page counter
            $rcmail->output->command('set_rowcount', $rcmail->gettext('nocontactsfound'));
            $rcmail->output->set_env('pagecount', 0);
        }
        else {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'savedsearchdeleteerror';
            $rcmail->output->show_message($error, 'error');
        }

        $rcmail->output->send();
    }
}
actions/contacts/group_addmembers.php000064400000006474151727150610014072 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handle adding members to a contact group                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_group_addmembers extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail   = rcmail::get_instance();
        $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $contacts = self::contact_source($source);

        if ($contacts->readonly || !$contacts->groups) {
            $rcmail->output->show_message('sourceisreadonly', 'warning');
            $rcmail->output->send();
        }

        $gid    = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_POST);
        $ids    = self::get_cids($source);
        $result = false;

        if ($gid && $ids) {
            $plugin = $rcmail->plugins->exec_hook('group_addmembers', [
                    'group_id' => $gid,
                    'ids'      => $ids,
                    'source'   => $source,
            ]);

            $contacts->set_group($gid);
            $num2add = count($plugin['ids']);

            if (empty($plugin['abort'])) {
                if (
                    ($maxnum = $rcmail->config->get('max_group_members'))
                    && ($contacts->count()->count + $num2add > $maxnum)
                ) {
                    $rcmail->output->show_message('maxgroupmembersreached', 'warning', ['max' => $maxnum]);
                    $rcmail->output->send();
                }

                $result = $contacts->add_to_group($gid, $plugin['ids']);
            }
            else {
                $result = $plugin['result'];
            }
        }

        if ($result) {
            $rcmail->output->show_message('contactaddedtogroup', 'confirmation');
        }
        else if (!empty($plugin['abort']) || $contacts->get_error()) {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
            $rcmail->output->show_message($error, 'error');
        }
        else {
            $message = !empty($plugin['message']) ? $plugin['message'] : 'nogroupassignmentschanged';
            $rcmail->output->show_message($message);
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/list.php000064400000006747151727150610011531 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Send contacts list to client (as remote response)                   |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_list extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if (!empty($_GET['_page'])) {
            $page = intval($_GET['_page']);
        }
        else {
            $page = !empty($_SESSION['page']) ? $_SESSION['page'] : 1;
        }

        $_SESSION['page'] = $page;

        $page_size  = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));
        $group_data = null;

        // Use search result
        if (($records = self::search_update(true)) !== false) {
            // sort the records
            ksort($records, SORT_LOCALE_STRING);

            // create resultset object
            $count  = count($records);
            $first  = ($page-1) * $page_size;
            $result = new rcube_result_set($count, $first);

            // we need only records for current page
            if ($page_size < $count) {
                $records = array_slice($records, $first, $page_size);
            }

            $result->records = array_values($records);
        }
        // List selected directory
        else {
            $afields  = $rcmail->config->get('contactlist_fields');
            $contacts = self::contact_source(null, true);

            // get contacts for this user
            $result = $contacts->list_records($afields);

            if (!$result->count && $result->searchonly) {
                $rcmail->output->show_message('contactsearchonly', 'notice');
                // Don't invoke advanced search dialog automatically from here (#6679)
            }

            if (!empty($contacts->group_id)) {
                $group_data = ['ID' => $contacts->group_id]
                    + array_intersect_key((array) $contacts->get_group($contacts->group_id), ['name' => 1,'email' => 1]);
            }
        }

        $rcmail->output->command('set_group_prop', $group_data);

        // update message count display
        $rcmail->output->set_env('pagecount', ceil($result->count / $page_size));
        $rcmail->output->command('set_rowcount', self::get_rowcount_text($result));

        // create javascript list
        self::js_contacts_list($result);

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/index.php000064400000161313151727150610011654 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide addressbook functionality and GUI objects                   |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_index extends rcmail_action
{
    public static $aliases = [
        'add' => 'edit',
    ];

    protected static $SEARCH_MODS_DEFAULT = [
        'name'      => 1,
        'firstname' => 1,
        'surname'   => 1,
        'email'     => 1,
        '*'         => 1,
    ];

    /**
     * General definition of contact coltypes
     */
    public static $CONTACT_COLTYPES = [
        'name' => [
            'size'      => 40,
            'maxlength' => 50,
            'limit'     => 1,
            'label'     => 'name',
            'category'  => 'main'
        ],
        'firstname' => [
            'size'      => 19,
            'maxlength' => 50,
            'limit'     => 1,
            'label'     => 'firstname',
            'category'  => 'main'
        ],
        'surname' => [
            'size'      => 19,
            'maxlength' => 50,
            'limit'     => 1,
            'label'     => 'surname',
            'category'  => 'main'
        ],
        'email' => [
            'size'      => 40,
            'maxlength' => 254,
            'label'     => 'email',
            'subtypes'  => ['home', 'work', 'other'],
            'category'  => 'main'
        ],
        'middlename' => [
            'size'      => 19,
            'maxlength' => 50,
            'limit'     => 1,
            'label'     => 'middlename',
            'category'  => 'main'
        ],
        'prefix' => [
            'size'      => 8,
            'maxlength' => 20,
            'limit'     => 1,
            'label'     => 'nameprefix',
            'category'  => 'main'
        ],
        'suffix' => [
            'size'      => 8,
            'maxlength' => 20,
            'limit'     => 1,
            'label'     => 'namesuffix',
            'category'  => 'main'
        ],
        'nickname' => [
            'size'      => 40,
            'maxlength' => 50,
            'limit'     => 1,
            'label'     => 'nickname',
            'category'  => 'main'
        ],
        'jobtitle' => [
            'size'      => 40,
            'maxlength' => 128,
            'limit'     => 1,
            'label'     => 'jobtitle',
            'category'  => 'main'
        ],
        'organization' => [
            'size'      => 40,
            'maxlength' => 128,
            'limit'     => 1,
            'label'     => 'organization',
            'category'  => 'main'
        ],
        'department' => [
            'size'      => 40,
            'maxlength' => 128,
            'limit'     => 1,
            'label'     => 'department',
            'category'  => 'main'
        ],
        'gender' => [
            'type'     => 'select',
            'limit'    => 1,
            'label'    => 'gender',
            'category' => 'personal',
            'options'  => [
                'male'   => 'male',
                'female' => 'female'
            ],
        ],
        'maidenname' => [
            'size'      => 40,
            'maxlength' => 50,
            'limit'     => 1,
            'label'     => 'maidenname',
            'category'  => 'personal'
        ],
        'phone' => [
            'size'      => 40,
            'maxlength' => 20,
            'label'     => 'phone',
            'category'  => 'main',
            'subtypes'  => ['home', 'home2', 'work', 'work2', 'mobile', 'main', 'homefax', 'workfax', 'car',
                'pager', 'video', 'assistant', 'other'],
        ],
        'address' => [
            'type'     => 'composite',
            'label'    => 'address',
            'subtypes' => ['home', 'work', 'other'],
            'category' => 'main',
            'childs'   => [
                'street' => [
                    'label'     => 'street',
                    'size'      => 40,
                    'maxlength' => 50,
                ],
                'locality' => [
                    'label'     => 'locality',
                    'size'      => 28,
                    'maxlength' => 50,
                ],
                'zipcode' => [
                    'label'     => 'zipcode',
                    'size'      => 8,
                    'maxlength' => 15,
                ],
                'region' => [
                    'label'     => 'region',
                    'size'      => 12,
                    'maxlength' => 50,
                ],
                'country' => [
                    'label'     => 'country',
                    'size'      => 40,
                    'maxlength' => 50,
                ],
            ],
        ],
        'birthday' => [
            'type'      => 'date',
            'size'      => 12,
            'maxlength' => 16,
            'label'     => 'birthday',
            'limit'     => 1,
            'render_func' => 'rcmail_action_contacts_index::format_date_col',
            'category'    => 'personal'
        ],
        'anniversary' => [
            'type'      => 'date',
            'size'      => 12,
            'maxlength' => 16,
            'label'     => 'anniversary',
            'limit'     => 1,
            'render_func' => 'rcmail_action_contacts_index::format_date_col',
            'category'    => 'personal'
        ],
        'website' => [
            'size'      => 40,
            'maxlength' => 128,
            'label'     => 'website',
            'subtypes'  => ['homepage', 'work', 'blog', 'profile', 'other'],
            'category'  => 'main'
        ],
        'im' => [
            'size'      => 40,
            'maxlength' => 128,
            'label'     => 'instantmessenger',
            'subtypes'  => ['aim', 'icq', 'msn', 'yahoo', 'jabber', 'skype', 'other'],
            'category'  => 'main'
        ],
        'notes' => [
            'type'      => 'textarea',
            'size'      => 40,
            'rows'      => 15,
            'maxlength' => 500,
            'label'     => 'notes',
            'limit'     => 1
        ],
        'photo' => [
            'type'     => 'image',
            'limit'    => 1,
            'category' => 'main'
        ],
        'assistant' => [
            'size'      => 40,
            'maxlength' => 128,
            'limit'     => 1,
            'label'     => 'assistant',
            'category'  => 'personal'
        ],
        'manager' => [
            'size'      => 40,
            'maxlength' => 128,
            'limit'     => 1,
            'label'     => 'manager',
            'category'  => 'personal'
        ],
        'spouse' => [
            'size'      => 40,
            'maxlength' => 128,
            'limit'     => 1,
            'label'     => 'spouse',
            'category'  => 'personal'
        ],
    ];

    protected static $CONTACTS;
    protected static $SOURCE_ID;
    protected static $contact;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // Prepare coltypes
        foreach (self::$CONTACT_COLTYPES as $idx => $val) {
            if (!empty($val['label'])) {
                self::$CONTACT_COLTYPES[$idx]['label'] = $rcmail->gettext($val['label']);
            }
            if (!empty($val['options'])) {
                foreach ($val['options'] as $i => $v) {
                    self::$CONTACT_COLTYPES[$idx]['options'][$i] = $rcmail->gettext($v);
                }
            }
            if (!empty($val['childs'])) {
                foreach ($val['childs'] as $i => $v) {
                    self::$CONTACT_COLTYPES[$idx]['childs'][$i]['label'] = $rcmail->gettext($v['label']);
                    if (empty($v['type'])) {
                        self::$CONTACT_COLTYPES[$idx]['childs'][$i]['type'] = 'text';
                    }
                }
            }
            if (empty($val['type'])) {
                self::$CONTACT_COLTYPES[$idx]['type'] = 'text';
            }
        }

        // Addressbook UI
        if (!$rcmail->action && !$rcmail->output->ajax_call) {
            // add list of address sources to client env
            $js_list = $rcmail->get_address_sources();

            // count all/writeable sources
            $writeable = 0;
            $count     = 0;

            foreach ($js_list as $sid => $s) {
                $count++;
                if (!$s['readonly']) {
                    $writeable++;
                }
                // unset hidden sources
                if (!empty($s['hidden'])) {
                    unset($js_list[$sid]);
                }
            }

            $rcmail->output->set_env('display_next', (bool) $rcmail->config->get('display_next'));
            $rcmail->output->set_env('search_mods', $rcmail->config->get('addressbook_search_mods', self::$SEARCH_MODS_DEFAULT));
            $rcmail->output->set_env('address_sources', $js_list);
            $rcmail->output->set_env('writable_source', $writeable);
            $rcmail->output->set_env('contact_move_enabled', $writeable > 1);
            $rcmail->output->set_env('contact_copy_enabled', $writeable > 1 || ($writeable == 1 && count($js_list) > 1));

            $rcmail->output->set_pagetitle($rcmail->gettext('contacts'));

            $_SESSION['addressbooks_count']           = $count;
            $_SESSION['addressbooks_count_writeable'] = $writeable;

            // select address book
            $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);

            // use first directory by default
            if (!strlen($source) || !isset($js_list[$source])) {
                $source = $rcmail->config->get('default_addressbook');
                if (!is_string($source) || !strlen($source) || !isset($js_list[$source])) {
                    $source = strval(key($js_list));
                }
            }

            self::$CONTACTS = self::contact_source($source, true);
        }

        // remove undo information...
        if (!empty($_SESSION['contact_undo'])) {
            // ...after timeout
            $undo      = $_SESSION['contact_undo'];
            $undo_time = $rcmail->config->get('undo_timeout', 0);
            if ($undo['ts'] < time() - $undo_time) {
                $rcmail->session->remove('contact_undo');
            }
        }

        // register UI objects
        $rcmail->output->add_handlers([
                'directorylist'       => [$this, 'directory_list'],
                'savedsearchlist'     => [$this, 'savedsearch_list'],
                'addresslist'         => [$this, 'contacts_list'],
                'addresslisttitle'    => [$this, 'contacts_list_title'],
                'recordscountdisplay' => [$this, 'rowcount_display'],
                'searchform'          => [$rcmail->output, 'search_form']
        ]);

        // Disable qr-code if imagick, iconv or BaconQrCode is not installed
        if (!$rcmail->output->ajax_call && rcmail_action_contacts_qrcode::check_support()) {
            $rcmail->output->set_env('qrcode', true);
            $rcmail->output->add_label('qrcode');
        }
    }

    // instantiate a contacts object according to the given source
    public static function contact_source($source = null, $init_env = false, $writable = false)
    {
        if ($source === null || !strlen((string) $source)) {
            $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        }

        $rcmail    = rcmail::get_instance();
        $page_size = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));

        // Get object
        $contacts = $rcmail->get_address_book($source, $writable);

        if (!$contacts) {
            return null;
        }

        $contacts->set_pagesize($page_size);

        // set list properties and session vars
        if (!empty($_GET['_page'])) {
            $contacts->set_page(($_SESSION['page'] = intval($_GET['_page'])));
        }
        else {
            $contacts->set_page($_SESSION['page'] ?? 1);
        }

        if ($group = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_GP)) {
            $contacts->set_group($group);
        }

        if (!$init_env) {
            return $contacts;
        }

        $rcmail->output->set_env('readonly', $contacts->readonly);
        $rcmail->output->set_env('source', (string) $source);
        $rcmail->output->set_env('group', $group);

        // reduce/extend $CONTACT_COLTYPES with specification from the current $CONTACT object
        if (is_array($contacts->coltypes)) {
            // remove cols not listed by the backend class
            $contact_cols = isset($contacts->coltypes[0]) ? array_flip($contacts->coltypes) : $contacts->coltypes;
            self::$CONTACT_COLTYPES = array_intersect_key(self::$CONTACT_COLTYPES, $contact_cols);

            // add associative coltypes definition
            if (empty($contacts->coltypes[0])) {
                foreach ($contacts->coltypes as $col => $colprop) {
                    if (!empty($colprop['childs'])) {
                        foreach ($colprop['childs'] as $childcol => $childprop) {
                            $colprop['childs'][$childcol] = array_merge((array) self::$CONTACT_COLTYPES[$col]['childs'][$childcol], $childprop);
                        }
                    }

                    if (isset(self::$CONTACT_COLTYPES[$col])) {
                        self::$CONTACT_COLTYPES[$col] = array_merge(self::$CONTACT_COLTYPES[$col], $colprop);
                    }
                    else {
                        self::$CONTACT_COLTYPES[$col] = $colprop;
                    }
                }
            }
        }

        $rcmail->output->set_env('photocol', !empty(self::$CONTACT_COLTYPES['photo']));

        return $contacts;
    }

    public static function set_sourcename($abook)
    {
        $rcmail = rcmail::get_instance();

        // get address book name (for display)
        if ($abook && !empty($_SESSION['addressbooks_count']) && $_SESSION['addressbooks_count'] > 1) {
            $name = $abook->get_name();
            if (!$name) {
                $name = $rcmail->gettext('personaladrbook');
            }

            $rcmail->output->set_env('sourcename', html_entity_decode($name, ENT_COMPAT, 'UTF-8'));
        }
    }

    public static function directory_list($attrib)
    {

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmdirectorylist';
        }

        $rcmail = rcmail::get_instance();
        $out    = '';
        $jsdata = [];

        $line_templ = html::tag('li',
            ['id' => 'rcmli%s', 'class' => '%s', 'noclose' => true],
            html::a(
                [
                    'href'    => '%s',
                    'rel'     => '%s',
                    'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('list','%s',this)"
                ],
                '%s'
            )
        );

        $sources = (array) $rcmail->output->get_env('address_sources');
        reset($sources);

        // currently selected source
        $current = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);

        foreach ($sources as $j => $source) {
            $id = strval(strlen($source['id']) ? $source['id'] : $j);
            $js_id = rcube::JQ($id);

            // set class name(s)
            $class_name = 'addressbook';
            if ($current === $id) {
                $class_name .= ' selected';
            }
            if (!empty($source['readonly'])) {
                $class_name .= ' readonly';
            }
            if (!empty($source['class_name'])) {
                $class_name .= ' ' . $source['class_name'];
            }

            $name = $source['name'] ?: $id;
            $out .= sprintf($line_templ,
                rcube_utils::html_identifier($id, true),
                $class_name,
                rcube::Q($rcmail->url(['_source' => $id])),
                $source['id'],
                $js_id,
                $name
            );

            $groupdata = ['out' => $out, 'jsdata' => $jsdata, 'source' => $id];
            if (!empty($source['groups'])) {
                $groupdata = self::contact_groups($groupdata);
            }
            $jsdata = $groupdata['jsdata'];
            $out = $groupdata['out'];
            $out .= '</li>';
        }

        $rcmail->output->set_env('contactgroups', $jsdata);
        $rcmail->output->set_env('collapsed_abooks', (string) $rcmail->config->get('collapsed_abooks',''));
        $rcmail->output->add_gui_object('folderlist', $attrib['id']);
        $rcmail->output->include_script('treelist.js');

        // add some labels to client
        $rcmail->output->add_label('deletegroupconfirm', 'groupdeleting', 'addingmember', 'removingmember',
            'newgroup', 'grouprename', 'searchsave', 'namex', 'save', 'import', 'importcontacts',
            'advsearch', 'search'
        );

        return html::tag('ul', $attrib, $out, html::$common_attrib);
    }

    public static function savedsearch_list($attrib)
    {
        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmsavedsearchlist';
        }

        $rcmail = rcmail::get_instance();
        $out    = '';
        $line_templ = html::tag('li',
            ['id' => 'rcmli%s', 'class' => '%s'],
            html::a([
                    'href'    => '#',
                    'rel'     => 'S%s',
                    'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('listsearch', '%s', this)"
                ],
                '%s'
            )
        );

        // Saved searches
        $sources = $rcmail->user->list_searches(rcube_user::SEARCH_ADDRESSBOOK);
        foreach ($sources as $source) {
            $id    = $source['id'];
            $js_id = rcube::JQ($id);

            // set class name(s)
            $classes = ['contactsearch'];
            if (!empty($source['class_name'])) {
                $classes[] = $source['class_name'];
            }

            $out .= sprintf($line_templ,
                rcube_utils::html_identifier('S' . $id, true),
                join(' ', $classes),
                $id,
                $js_id,
                rcube::Q($source['name'] ?: $id)
            );
        }

        $rcmail->output->add_gui_object('savedsearchlist', $attrib['id']);

        return html::tag('ul', $attrib, $out, html::$common_attrib);
    }

    public static function contact_groups($args)
    {
        $rcmail = rcmail::get_instance();
        $groups = $rcmail->get_address_book($args['source'])->list_groups();
        $groups_html = '';

        if (!empty($groups)) {
            $line_templ = html::tag('li',
                ['id' => 'rcmli%s', 'class' => 'contactgroup'],
                html::a([
                        'href' => '#',
                        'rel' => '%s:%s',
                        'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('listgroup',{'source':'%s','id':'%s'},this)"
                    ],
                    '%s'
                )
            );

            // append collapse/expand toggle and open a new <ul>
            $is_collapsed = strpos($rcmail->config->get('collapsed_abooks',''), '&'.rawurlencode($args['source']).'&') !== false;
            $args['out'] .= html::div('treetoggle ' . ($is_collapsed ? 'collapsed' : 'expanded'), '&nbsp;');

            foreach ($groups as $group) {
                $groups_html .= sprintf($line_templ,
                    rcube_utils::html_identifier('G' . $args['source'] . $group['ID'], true),
                    $args['source'],
                    $group['ID'],
                    $args['source'],
                    $group['ID'],
                    rcube::Q($group['name'])
                );

                $args['jsdata']['G' . $args['source'] . $group['ID']] = [
                    'source' => $args['source'],
                    'id'     => $group['ID'],
                    'name'   => $group['name'],
                    'type'   => 'group'
                ];
            }
        }

        $style = !empty($is_collapsed) || empty($groups) ? 'display:none;' : null;

        $args['out'] .= html::tag('ul', ['class' => 'groups', 'style' => $style], $groups_html);

        return $args;
    }

    // return the contacts list as HTML table
    public static function contacts_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        // define list of cols to be displayed
        $a_show_cols = ['name', 'action'];

        // add id to message list table if not specified
        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmAddressList';
        }

        // create XHTML table
        $out = self::table_output($attrib, [], $a_show_cols, self::$CONTACTS->primary_key);

        // set client env
        $rcmail->output->add_gui_object('contactslist', $attrib['id']);
        $rcmail->output->set_env('current_page', (int) self::$CONTACTS->list_page);
        $rcmail->output->include_script('list.js');

        // add some labels to client
        $rcmail->output->add_label('deletecontactconfirm', 'copyingcontact', 'movingcontact', 'contactdeleting');

        return $out;
    }

    public static function js_contacts_list($result, $prefix = '')
    {
        if (empty($result) || $result->count == 0) {
            return;
        }

        $rcmail = rcmail::get_instance();

        // define list of cols to be displayed
        $a_show_cols = ['name', 'action'];

        while ($row = $result->next()) {
            $emails       = rcube_addressbook::get_col_values('email', $row, true);
            $row['CID']   = $row['ID'];
            $row['email'] = reset($emails);
            $source_id  = $rcmail->output->get_env('source');
            $a_row_cols = [];
            $type       = !empty($row['_type']) ? $row['_type'] : 'person';
            $classes    = [$type];

            // build contact ID with source ID
            if (isset($row['sourceid'])) {
                $row['ID'] = $row['ID'].'-'.$row['sourceid'];
                $source_id = $row['sourceid'];
            }

            // format each col
            foreach ($a_show_cols as $col) {
                $val = null;
                switch ($col) {
                    case 'name':
                        $val = rcube::Q(rcube_addressbook::compose_list_name($row));
                        break;

                    case 'action':
                        if ($type == 'group') {
                            $val = html::a([
                                    'href'    => '#list',
                                    'rel'     => $row['ID'],
                                    'title'   => $rcmail->gettext('listgroup'),
                                    'onclick' => sprintf(
                                        "return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)",
                                        rcmail_output::JS_OBJECT_NAME,
                                        $source_id,
                                        $row['CID']
                                    ),
                                    'class'   => 'pushgroup',
                                    'data-action-link' => true,
                                ],
                                '&raquo;'
                            );
                        }
                        else {
                            $val = null;
                        }
                        break;

                    default:
                        $val = rcube::Q($row[$col]);
                        break;
                }

                if ($val !== null) {
                    $a_row_cols[$col] = $val;
                }
            }

            if (!empty($row['readonly'])) {
                $classes[] = 'readonly';
            }

            $rcmail->output->command($prefix . 'add_contact_row', $row['ID'], $a_row_cols, join(' ', $classes),
                array_intersect_key($row, ['ID' => 1,'readonly' => 1, '_type' => 1, 'email' => 1,'name' => 1])
            );
        }
    }

    public static function contacts_list_title($attrib)
    {
        $rcmail = rcmail::get_instance();
        $attrib += ['label' => 'contacts', 'id' => 'rcmabooklisttitle', 'tag' => 'span'];
        unset($attrib['name']);

        $rcmail->output->add_gui_object('addresslist_title', $attrib['id']);
        $rcmail->output->add_label('contacts','uponelevel');

        return html::tag($attrib['tag'], $attrib, $rcmail->gettext($attrib['label']), html::$common_attrib);
    }

    public static function rowcount_display($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmcountdisplay';
        }

        $rcmail->output->add_gui_object('countdisplay', $attrib['id']);

        if (!empty($attrib['label'])) {
            $_SESSION['contactcountdisplay'] = $attrib['label'];
        }

        return html::span($attrib, $rcmail->gettext('loading'));
    }

    public static function get_rowcount_text($result = null)
    {
        $rcmail = rcmail::get_instance();

        // read nr of contacts
        if (empty($result) && !empty(self::$CONTACTS)) {
            $result = self::$CONTACTS->get_result();
        }

        if (empty($result) || $result->count == 0) {
            return $rcmail->gettext('nocontactsfound');
        }

        $page_size = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));

        return $rcmail->gettext([
                'name'  => !empty($_SESSION['contactcountdisplay']) ? $_SESSION['contactcountdisplay'] : 'contactsfromto',
                'vars'  => [
                    'from'  => $result->first + 1,
                    'to'    => min($result->count, $result->first + $page_size),
                    'count' => $result->count
                ]
        ]);
    }

    public static function get_type_label($type)
    {
        $rcmail = rcmail::get_instance();
        $label  = 'type' . $type;

        if ($rcmail->text_exists($label, '*', $domain)) {
            return $rcmail->gettext($label, $domain);
        }

        if (
            preg_match('/\w+(\d+)$/', $label, $m)
            && ($label = preg_replace('/(\d+)$/', '', $label))
            && $rcmail->text_exists($label, '*', $domain)
        ) {
            return $rcmail->gettext($label, $domain) . ' ' . $m[1];
        }

        return ucfirst($type);
    }

    public static function contact_form($form, $record, $attrib = null)
    {
        $rcmail = rcmail::get_instance();

        // group fields
        $head_fields = [
            'source'       => ['source'],
            'names'        => ['prefix','firstname','middlename','surname','suffix'],
            'displayname'  => ['name'],
            'nickname'     => ['nickname'],
            'organization' => ['organization'],
            'department'   => ['department'],
            'jobtitle'     => ['jobtitle'],
        ];

        // Allow plugins to modify contact form content
        $plugin = $rcmail->plugins->exec_hook('contact_form', [
                'form'        => $form,
                'record'      => $record,
                'head_fields' => $head_fields
        ]);

        $form        = $plugin['form'];
        $record      = $plugin['record'];
        $head_fields = $plugin['head_fields'];
        $edit_mode   = $rcmail->action != 'show' && $rcmail->action != 'print';
        $compact     = self::get_bool_attr($attrib, 'compact-form');
        $use_labels  = self::get_bool_attr($attrib, 'use-labels');
        $with_source = self::get_bool_attr($attrib, 'with-source');
        $out         = '';

        if (!empty($attrib['deleteicon'])) {
            $del_button = html::img([
                    'src' => $rcmail->output->get_skin_file($attrib['deleteicon']),
                    'alt' => $rcmail->gettext('delete')
            ]);
        }
        else {
            $del_button = html::span('inner', $rcmail->gettext('delete'));
        }

        unset($attrib['deleteicon']);

        // get default coltypes
        $coltypes       = self::$CONTACT_COLTYPES;
        $coltype_labels = [];
        $business_mode  = $rcmail->config->get('contact_form_mode') === 'business';

        foreach ($coltypes as $col => $prop) {
            if (!empty($prop['subtypes'])) {
                // re-order subtypes, so 'work' is before 'home'
                if ($business_mode) {
                    $work_opts = array_filter($prop['subtypes'], function($var) { return strpos($var, 'work') !== false; });
                    if (!empty($work_opts)) {
                        $coltypes[$col]['subtypes'] = $prop['subtypes'] = array_merge(
                            $work_opts,
                            array_diff($prop['subtypes'], $work_opts)
                        );
                    }
                }

                $subtype_names  = array_map('rcmail_action_contacts_index::get_type_label', $prop['subtypes']);
                $select_subtype = new html_select([
                        'name'  => "_subtype_{$col}[]",
                        'class' => 'contactselectsubtype custom-select',
                        'title' => $prop['label'] . ' ' . $rcmail->gettext('type')
                ]);
                $select_subtype->add($subtype_names, $prop['subtypes']);

                $coltypes[$col]['subtypes_select'] = $select_subtype->show();
            }

            if (!empty($prop['childs'])) {
                foreach ($prop['childs'] as $childcol => $cp) {
                    $coltype_labels[$childcol] = ['label' => $cp['label']];
                }
            }
        }

        foreach ($form as $section => $fieldset) {
            // skip empty sections
            if (empty($fieldset['content'])) {
                continue;
            }

            $select_add = new html_select([
                    'class'        => 'addfieldmenu custom-select',
                    'rel'          => $section,
                    'data-compact' => $compact ? "true" : null
            ]);

            $select_add->add($rcmail->gettext('addfield'), '');
            $select_add_count = 0;

            // render head section with name fields (not a regular list of rows)
            if ($section == 'head') {
                $content = '';

                // unset display name if it is composed from name parts
                $dname = rcube_addressbook::compose_display_name(['name' => ''] + (array) $record);
                if (isset($record['name']) && $record['name'] == $dname) {
                    unset($record['name']);
                }

                foreach ($head_fields as $blockname => $colnames) {
                    $fields     = '';
                    $block_attr = ['class' => $blockname  . (count($colnames) == 1 ? ' row' : '')];

                    foreach ($colnames as $col) {
                        if ($col == 'source') {
                            if (!$with_source || !($source = $rcmail->output->get_env('sourcename'))) {
                                continue;
                            }

                            if (!$edit_mode) {
                                $record['source'] = $rcmail->gettext('addressbook') . ': ' . $source;
                            }
                            else if ($rcmail->action == 'add') {
                                $record['source'] = $source;
                            }
                            else {
                                continue;
                            }
                        }
                        // skip cols unknown to the backend
                        else if (empty($coltypes[$col])) {
                            continue;
                        }

                        // skip cols not listed in the form definition
                        if (is_array($fieldset['content']) && !in_array($col, array_keys($fieldset['content']))) {
                            continue;
                        }

                        // only string values are expected here
                        if (isset($record[$col]) && is_array($record[$col])) {
                            $record[$col] = join(' ', $record[$col]);
                        }

                        if (!$edit_mode) {
                            if (!empty($record[$col])) {
                                $fields .= html::span('namefield ' . $col, rcube::Q($record[$col])) . ' ';
                            }
                        }
                        else {
                            $visible = true;
                            $colprop = [];

                            if (!empty($fieldset['content'][$col])) {
                                $colprop += (array) $fieldset['content'][$col];
                            }

                            if (!empty($coltypes[$col])) {
                                $colprop += (array) $coltypes[$col];
                            }

                            if (empty($colprop['id'])) {
                                $colprop['id'] = 'ff_' . $col;
                            }

                            if (empty($record[$col]) && empty($colprop['visible'])) {
                                $visible          = false;
                                $colprop['style'] = $use_labels ? null : 'display:none';
                                $select_add->add($colprop['label'], $col);
                            }

                            if ($col == 'source') {
                                $input = self::source_selector(['id' => $colprop['id']]);
                            }
                            else {
                                $val   = $record[$col] ?? null;
                                $input = rcube_output::get_edit_field($col, $val, $colprop);
                            }

                            if ($use_labels) {
                                $_content = html::label($colprop['id'], rcube::Q($colprop['label'])) . html::div(null, $input);
                                if (count($colnames) > 1) {
                                    $fields .= html::div(['class' => 'row', 'style' => $visible ? null : 'display:none'], $_content);
                                }
                                else {
                                    $fields .= $_content;
                                    $block_attr['style'] = $visible ? null : 'display:none';
                                }
                            }
                            else {
                                $fields .= $input;
                            }
                        }
                    }

                    if ($fields) {
                        $content .= html::div($block_attr, $fields);
                    }
                }

                if ($edit_mode) {
                    $content .= html::p('addfield', $select_add->show(null));
                }

                $legend = !empty($fieldset['name']) ? html::tag('legend', null, rcube::Q($fieldset['name'])) : '';
                $out   .= html::tag('fieldset', $attrib, $legend . $content, html::$common_attrib) ."\n";
                continue;
            }

            $content = '';
            if (is_array($fieldset['content'])) {
                foreach ($fieldset['content'] as $col => $colprop) {
                    // remove subtype part of col name
                    $tokens = explode(':', $col);
                    $field  = $tokens[0];

                    if (empty($tokens[1])) {
                        $subtype = $business_mode ? 'work' : 'home';
                    }
                    else {
                        $subtype = $tokens[1];
                    }

                    // skip cols unknown to the backend
                    if (empty($coltypes[$field]) && empty($colprop['value'])) {
                        continue;
                    }

                    // merge colprop with global coltype configuration
                    if (!empty($coltypes[$field])) {
                        $colprop += $coltypes[$field];
                    }

                    if (!isset($colprop['type'])) {
                        $colprop['type'] = 'text';
                    }

                    $label = $colprop['label'] ?? $rcmail->gettext($col);

                    // prepare subtype selector in edit mode
                    if ($edit_mode && isset($colprop['subtypes']) && is_array($colprop['subtypes'])) {
                        $subtype_names  = array_map('rcmail_action_contacts_index::get_type_label', $colprop['subtypes']);
                        $select_subtype = new html_select([
                                'name'  => "_subtype_{$col}[]",
                                'class' => 'contactselectsubtype custom-select',
                                'title' => $colprop['label'] . ' ' . $rcmail->gettext('type')
                        ]);
                        $select_subtype->add($subtype_names, $colprop['subtypes']);
                    }
                    else {
                        $select_subtype = null;
                    }

                    $rows = '';

                    list($values, $subtypes) = self::contact_field_values($record, "$field:$subtype", $colprop);

                    foreach ($values as $i => $val) {
                        if (!empty($subtypes[$i])) {
                            $subtype = $subtypes[$i];
                        }

                        $fc            = intval($coltypes[$field]['count'] ?? 0);
                        $colprop['id'] = 'ff_' . $col . $fc;
                        $row_class     = 'row';

                        // render composite field
                        if ($colprop['type'] == 'composite') {
                            $row_class .= ' composite';
                            $composite  = [];
                            $template   = $rcmail->config->get($col . '_template', '{'.join('} {', array_keys($colprop['childs'])).'}');
                            $j = 0;

                            foreach ($colprop['childs'] as $childcol => $cp) {
                                if (!empty($val) && is_array($val)) {
                                    if (!empty($val[$childcol])) {
                                        $childvalue = $val[$childcol];
                                    }
                                    else {
                                        $childvalue = $val[$j] ?? null;
                                    }
                                }
                                else {
                                    $childvalue = '';
                                }

                                if ($edit_mode) {
                                    if (!empty($colprop['subtypes']) || $colprop['limit'] != 1) {
                                        $cp['array'] = true;
                                    }

                                    $cp_type = $cp['type'] ?? null;
                                    $composite['{'.$childcol.'}'] = rcube_output::get_edit_field($childcol, $childvalue, $cp, $cp_type) . ' ';
                                }
                                else {
                                    if (!empty($cp['render_func'])) {
                                        $childval = call_user_func($cp['render_func'], $childvalue, $childcol);
                                    }
                                    else {
                                        $childval = rcube::Q($childvalue);
                                    }

                                    $composite['{' . $childcol . '}'] = html::span('data ' . $childcol, $childval) . ' ';
                                }

                                $j++;
                            }

                            $coltypes[$field] += (array) $colprop;

                            if (isset($coltypes[$field]['count'])) {
                                $coltypes[$field]['count']++;
                            }
                            else {
                                $coltypes[$field]['count'] = 1;
                            }

                            $val = preg_replace('/\{\w+\}/', '', strtr($template, $composite));

                            if ($compact) {
                                $val = html::div('content', str_replace('<br/>', '', $val));
                            }
                        }
                        else if ($edit_mode) {
                            // call callback to render/format value
                            if (!empty($colprop['render_func'])) {
                                $val = call_user_func($colprop['render_func'], $val, $col);
                            }

                            $coltypes[$field] = (array) $colprop + $coltypes[$field];

                            if (!empty($colprop['subtypes']) || $colprop['limit'] != 1) {
                                $colprop['array'] = true;
                            }

                            // load jquery UI datepicker for date fields
                            if (isset($colprop['type']) && $colprop['type'] == 'date') {
                                $colprop['class'] = (!empty($colprop['class']) ? $colprop['class'] . ' ' : '') . 'datepicker';
                                if (empty($colprop['render_func'])) {
                                    $val = self::format_date_col($val);
                                }
                            }

                            $val = rcube_output::get_edit_field($col, $val, $colprop, $colprop['type']);

                            if (empty($coltypes[$field]['count'])) {
                                $coltypes[$field]['count'] = 1;
                            }
                            else {
                                $coltypes[$field]['count']++;
                            }
                        }
                        else if (!empty($colprop['render_func'])) {
                            $val = call_user_func($colprop['render_func'], $val, $col);
                        }
                        else if (isset($colprop['options']) && isset($colprop['options'][$val])) {
                            $val = $colprop['options'][$val];
                        }
                        else {
                            $val = rcube::Q($val);
                        }

                        // use subtype as label
                        if (!empty($colprop['subtypes'])) {
                            $label = self::get_type_label($subtype);
                        }

                        $_del_btn = html::a([
                                'href'  => '#del',
                                'class' => 'contactfieldbutton deletebutton',
                                'title' => $rcmail->gettext('delete'),
                                'rel'   => $col
                            ],
                            $del_button
                        );

                        // add delete button/link
                        if (!$compact && $edit_mode
                            && (empty($colprop['visible']) || empty($colprop['limit']) || $colprop['limit'] > 1)
                        ) {
                            $val .= $_del_btn;
                        }

                        // display row with label
                        if ($label) {
                            if ($rcmail->action == 'print') {
                                $_label = rcube::Q($colprop['label'] . ($label != $colprop['label'] ? ' (' . $label . ')' : ''));
                                if (!$compact) {
                                    $_label = html::div('contactfieldlabel label', $_label);
                                }
                            }
                            else if ($select_subtype) {
                                $_label = $select_subtype->show($subtype);
                                if (!$compact) {
                                    $_label = html::div('contactfieldlabel label', $_label);
                                }
                            }
                            else {
                                $_label = html::label(['class' => 'contactfieldlabel label', 'for' => $colprop['id']], rcube::Q($label));
                            }

                            if (!$compact) {
                                $val = html::div('contactfieldcontent ' . $colprop['type'], $val);
                            }
                            else {
                                $val .= $_del_btn;
                            }

                            $rows .= html::div($row_class, $_label . $val);
                        }
                        // row without label
                        else {
                            $rows .= html::div($row_class, $compact ? $val : html::div('contactfield', $val));
                        }
                    }

                    // add option to the add-field menu
                    if (empty($colprop['limit']) || empty($coltypes[$field]['count']) || $coltypes[$field]['count'] < $colprop['limit']) {
                        $select_add->add($colprop['label'], $col);
                        $select_add_count++;
                    }

                    // wrap rows in fieldgroup container
                    if ($rows) {
                        $c_class    = 'contactfieldgroup '
                            . (!empty($colprop['subtypes']) ? 'contactfieldgroupmulti ' : '')
                            . 'contactcontroller' . $col;
                        $with_label = !empty($colprop['subtypes']) && $rcmail->action != 'print';
                        $content   .= html::tag(
                            'fieldset',
                            ['class' => $c_class],
                            ($with_label ? html::tag('legend', null, rcube::Q($colprop['label'])) : ' ') . $rows
                        );
                    }
                }

                if (!$content && (!$edit_mode || !$select_add_count)) {
                    continue;
                }

                // also render add-field selector
                if ($edit_mode) {
                    $content .= html::p('addfield', $select_add->show(null, ['style' => $select_add_count ? null : 'display:none']));
                }

                $content = html::div(['id' => 'contactsection' . $section], $content);
            }
            else {
                $content = $fieldset['content'];
            }

            if ($content) {
                $fattribs = !empty($attrib['fieldset-class']) ? ['class' => $attrib['fieldset-class']] : null;
                $fcontent = html::tag('legend', null, rcube::Q($fieldset['name'])) . $content;
                $out .= html::tag('fieldset', $fattribs, $fcontent) . "\n";
            }
        }

        if ($edit_mode) {
            $rcmail->output->set_env('coltypes', $coltypes + $coltype_labels);
            $rcmail->output->set_env('delbutton', $del_button);
            $rcmail->output->add_label('delete');
        }

        return $out;
    }

    public static function contact_field_values($record, $field_name, $colprop)
    {
        list($field, $subtype) = explode(':', $field_name);

        $subtypes = [];
        $values   = [];

        if (!empty($colprop['value'])) {
            $values = (array) $colprop['value'];
        }
        else if (!empty($colprop['subtypes'])) {
            // iterate over possible subtypes and collect values with their subtype
            $c_values = rcube_addressbook::get_col_values($field, $record);

            foreach ($colprop['subtypes'] as $st) {
                if (isset($c_values[$st])) {
                    foreach ((array) $c_values[$st] as $value) {
                        $i = count($values);
                        $subtypes[$i] = $st;
                        $values[$i]   = $value;
                    }

                    $c_values[$st] = null;
                }
            }

            // TODO: add $st to $select_subtype if missing ?
            foreach ($c_values as $st => $vals) {
                foreach ((array) $vals as $value) {
                    $i = count($values);
                    $subtypes[$i] = $st;
                    $values[$i]   = $value;
                }
            }
        }
        else if (isset($record[$field_name])) {
            $values = $record[$field_name];
        }
        else if (isset($record[$field])) {
            $values = $record[$field];
        }

        // hack: create empty values array to force this field to be displayed
        if (empty($values) && !empty($colprop['visible'])) {
            $values = [''];
        }

        if (!is_array($values)) {
            // $values can be an object, don't use (array)$values syntax
            $values = !empty($values) ? [$values] : [];
        }

        return [$values, $subtypes];
    }

    public static function contact_photo($attrib)
    {
        if ($result = self::$CONTACTS->get_result()) {
            $record = $result->first();
        }
        else {
            $record = ['photo' => null, '_type' => 'contact'];
        }

        $rcmail = rcmail::get_instance();

        if (!empty($record['_type']) && $record['_type'] == 'group' && !empty($attrib['placeholdergroup'])) {
            $photo_img = $rcmail->output->abs_url($attrib['placeholdergroup'], true);
            $photo_img = $rcmail->output->asset_url($photo_img);
        }
        elseif (!empty($attrib['placeholder'])) {
            $photo_img = $rcmail->output->abs_url($attrib['placeholder'], true);
            $photo_img = $rcmail->output->asset_url($photo_img);
        }
        else {
            $photo_img = 'data:image/gif;base64,' . rcmail_output::BLANK_GIF;
        }

        $rcmail->output->set_env('photo_placeholder', $photo_img);

        unset($attrib['placeholder']);

        $plugin = $rcmail->plugins->exec_hook('contact_photo', [
                'record' => $record,
                'data'   => $record['photo'] ?? null,
                'attrib' => $attrib
        ]);

        // check if we have photo data from contact form
        if (!empty(self::$contact)) {
            if (!empty(self::$contact['photo'])) {
                if (self::$contact['photo'] == '-del-') {
                    $record['photo'] = '';
                }
                else if (!empty($_SESSION['contacts']['files'][self::$contact['photo']])) {
                    $record['photo'] = $file_id = self::$contact['photo'];
                }
            }
        }

        $ff_value = '';

        if (!empty($plugin['url'])) {
            $photo_img = $plugin['url'];
        }
        else if (!empty($record['photo']) && preg_match('!^https?://!i', $record['photo'])) {
            $photo_img = $record['photo'];
        }
        else if (!empty($record['photo'])) {
            $url = ['_action' => 'photo', '_cid' => $record['ID'], '_source' => self::$SOURCE_ID];
            if (!empty($file_id)) {
                $url['_photo'] = $ff_value = $file_id;
            }
            $photo_img = $rcmail->url($url);
        }
        else {
            $ff_value = '-del-'; // will disable delete-photo action
        }

        $content = html::div($attrib, html::img([
                'src'     => $photo_img,
                'alt'     => $rcmail->gettext('contactphoto'),
                'onerror' => 'this.onerror = null; this.src = rcmail.env.photo_placeholder;',
        ]));

        if (!empty(self::$CONTACT_COLTYPES['photo']) && ($rcmail->action == 'edit' || $rcmail->action == 'add')) {
            $rcmail->output->add_gui_object('contactphoto', $attrib['id']);
            $hidden = new html_hiddenfield(['name' => '_photo', 'id' => 'ff_photo', 'value' => $ff_value]);
            $content .= $hidden->show();
        }

        return $content;
    }

    public static function format_date_col($val)
    {
        $rcmail = rcmail::get_instance();
        return $rcmail->format_date($val, $rcmail->config->get('date_format', 'Y-m-d'), false);
    }

    /**
     * Updates saved search after data changed
     */
    public static function search_update($return = false)
    {
        $rcmail = rcmail::get_instance();

        if (empty($_REQUEST['_search'])) {
            return false;
        }

        $search_request = $_REQUEST['_search'];

        if (!isset($_SESSION['contact_search'][$search_request])) {
            return false;
        }

        $search   = (array) $_SESSION['contact_search'][$search_request];
        $sort_col = $rcmail->config->get('addressbook_sort_col', 'name');
        $afields  = $return ? $rcmail->config->get('contactlist_fields') : ['name', 'email'];
        $records  = [];

        foreach ($search as $s => $set) {
            $source = $rcmail->get_address_book($s);

            // reset page
            $source->set_page(1);
            $source->set_pagesize(9999);
            $source->set_search_set($set);

            // get records
            $result = $source->list_records($afields);

            if (!$result->count) {
                unset($search[$s]);
                continue;
            }

            if ($return) {
                while ($row = $result->next()) {
                    $row['sourceid'] = $s;
                    $key = rcube_addressbook::compose_contact_key($row, $sort_col);
                    $records[$key] = $row;
                }
                unset($result);
            }

            $search[$s] = $source->get_search_set();
        }

        $_SESSION['contact_search'][$search_request] = $search;

        return $records;
    }

    /**
     * Returns contact ID(s) and source(s) from GET/POST data
     *
     * @param string $filter       Return contact identifier for this specific source
     * @param int    $request_type Type of the input var (rcube_utils::INPUT_*)
     *
     * @return array List of contact IDs per-source
     */
    public static function get_cids($filter = null, $request_type = rcube_utils::INPUT_GPC)
    {
        // contact ID (or comma-separated list of IDs) is provided in two
        // forms. If _source is an empty string then the ID is a string
        // containing contact ID and source name in form: <ID>-<SOURCE>

        $cid    = rcube_utils::get_input_value('_cid', $request_type);
        $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);

        if (is_array($cid)) {
            return $cid;
        }

        if (!is_string($cid) || !preg_match('/^[a-zA-Z0-9\+\/=_-]+(,[a-zA-Z0-9\+\/=_-]+)*$/', $cid)) {
            return [];
        }

        $cid        = explode(',', $cid);
        $got_source = strlen($source);
        $result     = [];

        // create per-source contact IDs array
        foreach ($cid as $id) {
            // extract source ID from contact ID (it's there in search mode)
            // see #1488959 and #1488862 for reference
            if (!$got_source) {
                if ($sep = strrpos($id, '-')) {
                    $contact_id = substr($id, 0, $sep);
                    $source_id  = (string) substr($id, $sep+1);
                    if (strlen($source_id)) {
                        $result[$source_id][] = $contact_id;
                    }
                }
            }
            else {
                if (substr($id, -($got_source+1)) === "-$source") {
                    $id = substr($id, 0, -($got_source+1));
                }
                $result[$source][] = $id;
            }
        }

        return $filter !== null ? $result[$filter] : $result;
    }

    /**
     * Returns HTML code for an addressbook selector
     *
     * @param array $attrib Template object attributes
     *
     * @return string HTML code of a <select> element, or <span> if there's only one writeable source
     */
    public static function source_selector($attrib)
    {
        $rcmail       = rcmail::get_instance();
        $sources_list = $rcmail->get_address_sources(true, true);

        if (count($sources_list) < 2) {
            $source      = $sources_list[self::$SOURCE_ID];
            $hiddenfield = new html_hiddenfield(['name' => '_source', 'value' => self::$SOURCE_ID]);

            return html::span($attrib, $source['name'] . $hiddenfield->show());
        }

        $attrib['name']       = '_source';
        $attrib['is_escaped'] = true;
        $attrib['onchange']   = rcmail_output::JS_OBJECT_NAME . ".command('save', 'reload', this.form)";

        $select = new html_select($attrib);

        foreach ($sources_list as $source) {
            $select->add($source['name'], $source['id']);
        }

        return $select->show(self::$SOURCE_ID);
    }
}
actions/contacts/photo.php000064400000011136151727150610011673 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show contact photo                                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_photo extends rcmail_action_contacts_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // Get contact ID and source ID from request
        $cids    = self::get_cids();
        $source  = key($cids);
        $cid     = $cids ? array_first($cids[$source]) : null;
        $file_id = rcube_utils::get_input_string('_photo', rcube_utils::INPUT_GPC);

        // read the referenced file
        if ($file_id && !empty($_SESSION['contacts']['files'][$file_id])) {
            $tempfile = $_SESSION['contacts']['files'][$file_id];
            $tempfile = $rcmail->plugins->exec_hook('attachment_display', $tempfile);

            if (!empty($tempfile['status'])) {
                if (!empty($tempfile['data'])) {
                    $data = $tempfile['data'];
                }
                else if ($tempfile['path']) {
                    $data = file_get_contents($tempfile['path']);
                }
            }
        }
        else {
            // by email, search for contact first
            if ($email = rcube_utils::get_input_string('_email', rcube_utils::INPUT_GPC)) {
                foreach ($rcmail->get_address_sources() as $s) {
                    $abook = $rcmail->get_address_book($s['id']);
                    $result = $abook->search(['email'], $email, 1, true, true, 'photo');
                    while ($result && ($record = $result->iterate())) {
                        if (!empty($record['photo'])) {
                            break 2;
                        }
                    }
                }
            }

            // by contact id
            if (empty($record) && $cid) {
                // Initialize addressbook source
                $CONTACTS = self::contact_source($source, true);
                // read contact record
                $record = $CONTACTS->get_record($cid, true);
            }

            if (!empty($record['photo'])) {
                $data = is_array($record['photo']) ? $record['photo'][0] : $record['photo'];
                if (!preg_match('![^a-z0-9/=+-]!i', $data)) {
                    $data = base64_decode($data, true);
                }
            }
        }

        // let plugins do fancy things with contact photos
        $plugin = $rcmail->plugins->exec_hook('contact_photo', [
                'record' => $record ?? null,
                'email'  => $email ?? null,
                'data'   => $data ?? null,
        ]);

        // redirect to url provided by a plugin
        if (!empty($plugin['url'])) {
            $rcmail->output->redirect($plugin['url']);
        }

        $data = $plugin['data'];

        // detect if photo data is a URL
        if ($data && strlen($data) < 1024 && filter_var($data, FILTER_VALIDATE_URL)) {
            $rcmail->output->redirect($data);
        }

        // cache for one day if requested by email
        if (!$cid && !empty($email)) {
            $rcmail->output->future_expire_header(86400);
        }

        if ($data) {
            $rcmail->output->sendExit($data, ['Content-Type: ' . rcube_mime::image_content_type($data)]);
        }

        if (!empty($_GET['_error'])) {
            $rcmail->output->sendExit('', ['HTTP/1.0 204 Photo not found']);
        }

        $rcmail->output->sendExit(base64_decode(rcmail_output::BLANK_GIF), ['Content-Type: image/gif']);
    }
}
actions/contacts/import.php000064400000046350151727150610012062 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Import contacts from a vCard or CSV file                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_import extends rcmail_action_contacts_index
{
    const UPLOAD_ERR_CSV_FIELDS = 101;

    protected static $stats;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail     = rcmail::get_instance();
        $importstep = 'import_form';
        $has_map    = isset($_POST['_map']) && is_array($_POST['_map']);

        if ($has_map || (isset($_FILES['_file']) && is_array($_FILES['_file']))) {
            $replace      = (bool) rcube_utils::get_input_string('_replace', rcube_utils::INPUT_GPC);
            $target       = rcube_utils::get_input_string('_target', rcube_utils::INPUT_GPC);
            $with_groups  = (int) rcube_utils::get_input_string('_groups', rcube_utils::INPUT_GPC);

            // reload params for CSV field mapping screen
            if ($has_map && !empty($_SESSION['contactcsvimport']['params'])) {
                $params = $_SESSION['contactcsvimport']['params'];

                $replace     = $params['replace'];
                $target      = $params['target'];
                $with_groups = $params['with_groups'];
            }

            $vcards       = [];
            $csvs         = [];
            $map          = [];
            $upload_error = null;

            $CONTACTS = $rcmail->get_address_book($target, true);

            if (!$CONTACTS->groups) {
                $with_groups = false;
            }

            if ($CONTACTS->readonly) {
                $rcmail->output->show_message('addresswriterror', 'error');
            }
            else {
                $filepaths = [];
                if ($has_map) {
                    $filepaths = $_SESSION['contactcsvimport']['files'];
                }
                else {
                    foreach ((array) $_FILES['_file']['tmp_name'] as $i => $filepath) {
                        // Process uploaded file if there is no error
                        $err = $_FILES['_file']['error'][$i];

                        if ($err) {
                            $upload_error = $err;
                        }
                        else {
                            $filepaths[] = $filepath;
                        }
                    }
                }

                foreach ($filepaths as $filepath) {
                    $file_content = file_get_contents($filepath);

                    // let rcube_vcard do the hard work :-)
                    $vcard_o = new rcube_vcard();
                    $vcard_o->extend_fieldmap($CONTACTS->vcard_map);
                    $v_list = $vcard_o->import($file_content);

                    if (!empty($v_list)) {
                        $vcards = array_merge($vcards, $v_list);
                        continue;
                    }

                    // no vCards found, try CSV
                    $csv = new rcube_csv2vcard($_SESSION['language']);

                    if ($has_map) {
                        $skip_head = isset($_POST['_skip_header']);
                        $map       = rcube_utils::get_input_value('_map', rcube_utils::INPUT_GPC);
                        $map       = array_filter($map);

                        $csv->set_map($map);
                        $csv->import($file_content, false, $skip_head);

                        unlink($filepath);
                    }
                    else {
                        // save uploaded file for the real import in the next step
                        $temp_csv = rcube_utils::temp_filename('csvimpt');
                        if (move_uploaded_file($filepath, $temp_csv) && file_exists($temp_csv)) {
                            $fields   = $csv->get_fields();
                            $last_map = $map;
                            $map = $csv->import($file_content, true);

                            // when multiple CSV files are uploaded check they all have the same structure
                            if ($last_map && $last_map !== $map) {
                                $csvs = [];
                                $upload_error = self::UPLOAD_ERR_CSV_FIELDS;
                                break;
                            }

                            $csvs[] = $temp_csv;
                        }
                        else {
                            $upload_error = UPLOAD_ERR_CANT_WRITE;
                        }

                        continue;
                    }

                    $v_list = $csv->export();

                    if (!empty($v_list)) {
                        $vcards = array_merge($vcards, $v_list);
                    }
                }
            }

            if (count($csvs) > 0) {
                // csv import, show field mapping options
                $importstep = 'import_map';

                $_SESSION['contactcsvimport']['files']  = $csvs;
                $_SESSION['contactcsvimport']['params'] = [
                    'replace'     => $replace,
                    'target'      => $target,
                    'with_groups' => $with_groups,
                    'fields'      => !empty($fields) ? $fields : [],
                ];

                // Stored separately due to nested array limitations in session
                $_SESSION['contactcsvimport']['map'] = $map;

                // Re-enable the import button
                $rcmail->output->command('parent.import_state_set', 'error');
            }
            elseif (count($vcards) > 0) {
                // import vcards
                self::$stats = new stdClass;
                self::$stats->names         = [];
                self::$stats->skipped_names = [];
                self::$stats->count         = count($vcards);
                self::$stats->inserted = 0;
                self::$stats->skipped  = 0;
                self::$stats->invalid  = 0;
                self::$stats->errors   = 0;

                if ($replace) {
                    $CONTACTS->delete_all($CONTACTS->groups && $with_groups < 2);
                }

                if ($with_groups) {
                    $import_groups = $CONTACTS->list_groups();
                }

                foreach ($vcards as $vcard) {
                    $a_record = $vcard->get_assoc();

                    // Generate contact's display name (must be before validation), the same we do in save.inc
                    if (empty($a_record['name'])) {
                        $a_record['name'] = rcube_addressbook::compose_display_name($a_record, true);
                        // Reset it if equals to email address (from compose_display_name())
                        if ($a_record['name'] == ($a_record['email'][0] ?? null)) {
                            $a_record['name'] = '';
                        }
                    }

                    // skip invalid (incomplete) entries
                    if (!$CONTACTS->validate($a_record, true)) {
                        self::$stats->invalid++;
                        continue;
                    }

                    // We're using UTF8 internally
                    $email = null;
                    if (isset($vcard->email[0])) {
                        $email = $vcard->email[0];
                        $email = rcube_utils::idn_to_utf8($email);
                    }

                    if (!$replace) {
                        $existing = null;
                        // compare e-mail address
                        if ($email) {
                            $existing = $CONTACTS->search('email', $email, 1, false);
                        }
                        // compare display name if email not found
                        if ((!$existing || !$existing->count) && $vcard->displayname) {
                            $existing = $CONTACTS->search('name', $vcard->displayname, 1, false);
                        }
                        if ($existing && $existing->count) {
                            self::$stats->skipped++;
                            self::$stats->skipped_names[] = $vcard->displayname ?: $email;
                            continue;
                        }
                    }

                    $a_record['vcard'] = $vcard->export();

                    $plugin   = $rcmail->plugins->exec_hook('contact_create', ['record' => $a_record, 'source' => null]);
                    $a_record = $plugin['record'];

                    // insert record and send response
                    if (empty($plugin['abort'])) {
                        $success = $CONTACTS->insert($a_record);
                    }
                    else {
                        $success = $plugin['result'];
                    }

                    if ($success) {
                        // assign groups for this contact (if enabled)
                        if ($with_groups && !empty($a_record['groups'])) {
                            foreach (explode(',', $a_record['groups'][0]) as $group_name) {
                                if ($group_id = self::import_group_id($group_name, $CONTACTS, $with_groups == 1, $import_groups)) {
                                    $CONTACTS->add_to_group($group_id, $success);
                                }
                            }
                        }

                        self::$stats->inserted++;
                        self::$stats->names[] = $a_record['name'] ?: $email;
                    }
                    else {
                        self::$stats->errors++;
                    }
                }

                $importstep = 'import_confirm';
                $_SESSION['contactcsvimport'] = null;

                $rcmail->output->command('parent.import_state_set', self::$stats->inserted ? 'reload' : 'ok');
            }
            else {
                if ($upload_error == self::UPLOAD_ERR_CSV_FIELDS) {
                    $rcmail->output->show_message('csvfilemismatch', 'error');
                }
                else {
                    self::upload_error($upload_error);
                }

                $rcmail->output->command('parent.import_state_set', 'error');
            }
        }

        $rcmail->output->set_pagetitle($rcmail->gettext('importcontacts'));

        $rcmail->output->add_handlers([
                'importstep' => [$this, $importstep],
        ]);

        // render page
        if ($rcmail->output->template_exists('contactimport')) {
            $rcmail->output->send('contactimport');
        }
        else {
            $rcmail->output->send('importcontacts'); // deprecated
        }
    }

    /**
     * Handler function to display the import/upload form
     */
    public static function import_form($attrib)
    {
        $rcmail = rcmail::get_instance();
        $target = rcube_utils::get_input_string('_target', rcube_utils::INPUT_GPC);

        $attrib += ['id' => 'rcmImportForm'];

        $writable_books = $rcmail->get_address_sources(true, true);
        $max_filesize   = self::upload_init();

        $form   = '';
        $hint   = $rcmail->gettext(['id' => 'importfile', 'name' => 'maxuploadsize', 'vars' => ['size' => $max_filesize]]);
        $table  = new html_table(['cols' => 2]);
        $upload = new html_inputfield([
                'type'     => 'file',
                'name'     => '_file[]',
                'id'       => 'rcmimportfile',
                'size'     => 40,
                'multiple' => 'multiple',
                'class'    => 'form-control-file',
        ]);

        $table->add('title', html::label('rcmimportfile', $rcmail->gettext('importfromfile')));
        $table->add(null, $upload->show() . html::div('hint', $hint));

        // addressbook selector
        if (count($writable_books) > 1) {
            $select = new html_select([
                    'name'       => '_target',
                    'id'         => 'rcmimporttarget',
                    'is_escaped' => true,
                    'class'      => 'custom-select'
            ]);

            foreach ($writable_books as $book) {
                $select->add($book['name'], $book['id']);
            }

            $table->add('title', html::label('rcmimporttarget', $rcmail->gettext('importtarget')));
            $table->add(null, $select->show($target));
        }
        else {
            $abook = new html_hiddenfield(['name' => '_target', 'value' => key($writable_books)]);
            $form .= $abook->show();
        }

        $form .= html::tag('input', ['type' => 'hidden', 'name' => '_unlock', 'value' => '']);

        // selector for group import options
        if (count($writable_books) >= 1 || $writable_books[0]->groups) {
            $select = new html_select([
                    'name'       => '_groups',
                    'id'         => 'rcmimportgroups',
                    'is_escaped' => true,
                    'class'      => 'custom-select'
            ]);
            $select->add($rcmail->gettext('none'), '0');
            $select->add($rcmail->gettext('importgroupsall'), '1');
            $select->add($rcmail->gettext('importgroupsexisting'), '2');

            $table->add('title', html::label('rcmimportgroups', $rcmail->gettext('importgroups')));
            $table->add(null, $select->show(rcube_utils::get_input_value('_groups', rcube_utils::INPUT_GPC)));
        }

        // checkbox to replace the entire address book
        $check_replace = new html_checkbox(['name' => '_replace', 'value' => 1, 'id' => 'rcmimportreplace']);
        $table->add('title', html::label('rcmimportreplace', $rcmail->gettext('importreplace')));
        $table->add(null, $check_replace->show(rcube_utils::get_input_string('_replace', rcube_utils::INPUT_GPC)));

        $form .= $table->show(['id' => null] + $attrib);

        // remove any info left over info from previous import attempts
        $_SESSION['contactcsvimport'] = null;

        $rcmail->output->set_env('writable_source', !empty($writable_books));
        $rcmail->output->add_label('selectimportfile','importwait');
        $rcmail->output->add_gui_object('importform', $attrib['id']);

        $attrib = [
            'action'  => $rcmail->url('import'),
            'method'  => 'post',
            'enctype' => 'multipart/form-data'
        ] + $attrib;

        return html::p(null, rcube::Q($rcmail->gettext('importdesc'), 'show'))
            . $rcmail->output->form_tag($attrib, $form);
    }

    /**
     * Render the field mapping page for the CSV import process
     */
    public static function import_map($attrib)
    {
        $rcmail = rcmail::get_instance();
        $params = $_SESSION['contactcsvimport']['params'];

        // hide groups field from list when group import disabled
        if (empty($params['with_groups'])) {
            unset($params['fields']['groups']);
        }

        $fieldlist = new html_select(['name' => '_map[]']);
        $fieldlist->add($rcmail->gettext('fieldnotmapped'), '');
        foreach ($params['fields'] as $id => $name) {
            $fieldlist->add($name, $id);
        }

        $field_table = new html_table(['cols' => 2] + $attrib);

        if ($classes = $attrib['table-header-class']) {
            $field_table->set_header_attribs($classes);
        }

        $field_table->add_header($attrib['table-col-source-class'] ?: null, $rcmail->gettext('source'));
        $field_table->add_header($attrib['table-col-destination-class'] ?: null, $rcmail->gettext('destination'));

        $map = $_SESSION['contactcsvimport']['map'];
        foreach ($map['source'] as $i => $name) {
            $field_table->add('title', html::label('rcmimportmap' . $i, rcube::Q($name)));
            $field_table->add(null, $fieldlist->show(array_key_exists($i, $map['destination']) ? $map['destination'][$i] : '', ['id' => 'rcmimportmap' . $i]));
        }

        $form = '';
        $form .= html::tag('input', ['type' => 'hidden', 'name' => '_unlock', 'value' => '']);

        // show option to import data from first line of the file
        $check_header = new html_checkbox(['name' => '_skip_header', 'value' => 1, 'id' => 'rcmskipheader']);
        $form .= html::p(null, html::label('rcmskipheader', $check_header->show(1) . $rcmail->gettext('skipheader')));

        $form .= $field_table->show();

        $attrib = ['action' => $rcmail->url('import'), 'method' => 'post'] + $attrib + ['id' => 'rcmImportFormMap'];

        $rcmail->output->add_gui_object('importformmap', $attrib['id']);

        return html::p(null, rcube::Q($rcmail->gettext('importmapdesc'), 'show'))
            . $rcmail->output->form_tag($attrib, $form);
    }

    /**
     * Render the confirmation page for the import process
     */
    public static function import_confirm($attrib)
    {
        $rcmail = rcmail::get_instance();
        $vars   = get_object_vars(self::$stats);
        $vars['names'] = $vars['skipped_names'] = '';

        $content = html::p(null, $rcmail->gettext([
                'name' => 'importconfirm',
                'nr'   => self::$stats->inserted,
                'vars' => $vars,
            ]) . (self::$stats->names ? ':' : '.')
        );

        if (self::$stats->names) {
            $content .= html::p('em', join(', ', array_map(['rcube', 'Q'], self::$stats->names)));
        }

        if (self::$stats->skipped) {
            $content .= html::p(null, $rcmail->gettext([
                    'name' => 'importconfirmskipped',
                    'nr'   => self::$stats->skipped,
                    'vars' => $vars,
                ]) . ':')
                . html::p('em', join(', ', array_map(['rcube', 'Q'], self::$stats->skipped_names)));
        }

        return html::div($attrib, $content);
    }

    /**
     * Returns the matching group id. If group doesn't exist, it'll be created if allowed.
     */
    public static function import_group_id($group_name, $contacts, $create, &$import_groups)
    {
        $group_id = 0;
        foreach ($import_groups as $group) {
            if (strtolower($group['name']) === strtolower($group_name)) {
                $group_id = $group['ID'];
                break;
            }
        }

        // create a new group
        if (!$group_id && $create) {
            $new_group = $contacts->create_group($group_name);

            if (empty($new_group['ID'])) {
                $new_group['ID'] = $new_group['id'];
            }

            $import_groups[] = $new_group;
            $group_id        = $new_group['ID'];
        }

        return $group_id;
    }
}
actions/contacts/undo.php000064400000005127151727150610011512 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Undelete contacts (CIDs) from last delete action                    |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_undo extends rcmail_action_contacts_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $delcnt = 0;

        if (!empty($_SESSION['contact_undo']) && !empty($_SESSION['contact_undo']['data'])) {
            foreach ((array) $_SESSION['contact_undo']['data'] as $source => $cid) {
                $contacts = self::contact_source($source);

                $plugin = $rcmail->plugins->exec_hook('contact_undelete', [
                        'id'     => $cid,
                        'source' => $source
                ]);

                $restored = empty($plugin['abort']) ? $contacts->undelete($cid) : $plugin['result'];

                if (!$restored) {
                    $error = !empty($plugin['message']) ? $plugin['message'] : 'contactrestoreerror';

                    $rcmail->output->show_message($error, 'error');
                    $rcmail->output->command('list_contacts');
                    $rcmail->output->send();
                }
                else {
                    $delcnt += $restored;
                }
            }
        }

        $rcmail->session->remove('contact_undo');

        if ($delcnt) {
            $rcmail->output->show_message('contactrestored', 'confirmation');
            $rcmail->output->command('list_contacts');
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/search.php000064400000026710151727150610012013 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Search action (and form) for address book contacts                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_search extends rcmail_action_contacts_index
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if (empty($_GET['_form'])) {
            self::contact_search();
        }

        $rcmail->output->add_handler('searchform', [$this, 'contact_search_form']);
        $rcmail->output->send('contactsearch');
    }

    public static function contact_search()
    {
        $rcmail = rcmail::get_instance();
        $adv    = isset($_POST['_adv']);
        $sid    = rcube_utils::get_input_string('_sid', rcube_utils::INPUT_GET);
        $search = null;

        // get search criteria from saved search
        if ($sid && ($search = $rcmail->user->get_search($sid))) {
            $fields = $search['data']['fields'];
            $search = $search['data']['search'];
        }
        // get fields/values from advanced search form
        else if ($adv) {
            foreach (array_keys($_POST) as $key) {
                $s = trim(rcube_utils::get_input_string($key, rcube_utils::INPUT_POST, true));
                if (strlen($s) && preg_match('/^_search_([a-zA-Z0-9_-]+)$/', $key, $m)) {
                    $search[] = $s;
                    $fields[] = $m[1];
                }
            }

            if (empty($fields)) {
                // do nothing, show the form again
                return;
            }
        }
        // quick-search
        else {
            $search = trim(rcube_utils::get_input_string('_q', rcube_utils::INPUT_GET, true));
            $fields = rcube_utils::get_input_string('_headers', rcube_utils::INPUT_GET);

            if (empty($fields)) {
                $fields = array_keys(self::$SEARCH_MODS_DEFAULT);
            }
            else {
                $fields = array_filter(explode(',', $fields));
            }

            // update search_mods setting
            $old_mods    = $rcmail->config->get('addressbook_search_mods');
            $search_mods = array_fill_keys($fields, 1);

            if ($old_mods != $search_mods) {
                $rcmail->user->save_prefs(['addressbook_search_mods' => $search_mods]);
            }

            if (in_array('*', $fields)) {
                $fields = '*';
            }
        }

        // Values matching mode
        $mode = (int) $rcmail->config->get('addressbook_search_mode');
        $mode |= rcube_addressbook::SEARCH_GROUPS;

        // get sources list
        $sources    = $rcmail->get_address_sources();
        $sort_col   = $rcmail->config->get('addressbook_sort_col', 'name');
        $afields    = $rcmail->config->get('contactlist_fields');
        $page_size  = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));
        $search_set = [];
        $records    = [];

        foreach ($sources as $s) {
            $source = $rcmail->get_address_book($s['id']);

            // check if search fields are supported....
            if (is_array($fields)) {
                $cols = !empty($source->coltypes[0]) ? array_flip($source->coltypes) : $source->coltypes;
                $supported = 0;

                foreach ($fields as $f) {
                    if (array_key_exists($f, $cols)) {
                        $supported ++;
                    }
                }

                // in advanced search we require all fields (AND operator)
                // in quick search we require at least one field (OR operator)
                if (($adv && $supported < count($fields)) || (!$adv && !$supported)) {
                    continue;
                }
            }

            // reset page
            $source->set_page(1);
            $source->set_pagesize(9999);

            // get contacts count
            $result = $source->search($fields, $search, $mode, false);

            if (empty($result) || !$result->count) {
                continue;
            }

            // get records
            $result = $source->list_records($afields);

            while ($row = $result->next()) {
                $row['sourceid'] = $s['id'];
                $key = rcube_addressbook::compose_contact_key($row, $sort_col);
                $records[$key] = $row;
            }

            unset($result);
            $search_set[$s['id']] = $source->get_search_set();
        }

        // sort the records
        ksort($records, SORT_LOCALE_STRING);

        // create resultset object
        $count  = count($records);
        $result = new rcube_result_set($count);

        // cut first-page records
        if ($page_size < $count) {
            $records = array_slice($records, 0, $page_size);
        }

        $result->records = array_values($records);

        // search request ID
        $search_request = md5('addr'
            . (is_array($fields) ? implode(',', $fields) : $fields)
            . (is_array($search) ? implode(',', $search) : $search)
        );

        // save search settings in session
        $_SESSION['contact_search'][$search_request] = $search_set;
        $_SESSION['contact_search_params'] = ['id' => $search_request, 'data' => [$fields, $search]];
        $_SESSION['page'] = 1;

        if ($adv) {
            $rcmail->output->command('list_contacts_clear');
        }

        if ($result->count > 0) {
            // create javascript list
            self::js_contacts_list($result);
            $rcmail->output->show_message('contactsearchsuccessful', 'confirmation', ['nr' => $result->count]);
        }
        else {
            $rcmail->output->show_message('nocontactsfound', 'notice');
        }

        // update message count display
        $rcmail->output->set_env('search_request', $search_request);
        $rcmail->output->set_env('pagecount', ceil($result->count / $page_size));
        $rcmail->output->command('set_rowcount', self::get_rowcount_text($result));
        // Re-set current source
        $rcmail->output->set_env('search_id', $sid);
        $rcmail->output->set_env('source', '');
        $rcmail->output->set_env('group', '');
        // Re-set list header
        $rcmail->output->command('set_group_prop', null);

        if (!$sid) {
            // unselect currently selected directory/group
            $rcmail->output->command('unselect_directory');
            // enable "Save search" command
            $rcmail->output->command('enable_command', 'search-create', true);
        }

        $rcmail->output->command('update_group_commands');

        // send response
        $rcmail->output->send();
    }

    public static function contact_search_form($attrib)
    {
        $rcmail       = rcmail::get_instance();
        $i_size       = !empty($attrib['size']) ? $attrib['size'] : 30;
        $short_labels = self::get_bool_attr($attrib, 'short-legend-labels');

        $form = [
            'main' => [
                'name'    => $rcmail->gettext('properties'),
                'content' => [],
            ],
            'personal' => [
                'name'    => $rcmail->gettext($short_labels ? 'personal' : 'personalinfo'),
                'content' => [],
            ],
            'other' => [
                'name'    => $rcmail->gettext('other'),
                'content' => [],
            ],
        ];

        // get supported coltypes from all address sources
        $sources  = $rcmail->get_address_sources();
        $coltypes = [];

        foreach ($sources as $s) {
            $CONTACTS = $rcmail->get_address_book($s['id']);

            if (!empty($CONTACTS->coltypes)) {
                $contact_cols = isset($CONTACTS->coltypes[0]) ? array_flip($CONTACTS->coltypes) : $CONTACTS->coltypes;
                $coltypes     = array_merge($coltypes, $contact_cols);
            }
        }

        // merge supported coltypes with global coltypes
        foreach ($coltypes as $col => $colprop) {
            if (!empty(rcmail_action_contacts_index::$CONTACT_COLTYPES[$col])) {
                $coltypes[$col] = array_merge(rcmail_action_contacts_index::$CONTACT_COLTYPES[$col], (array) $colprop);
            }
            else {
                $coltypes[$col] = (array) $colprop;
            }
        }

        // build form fields list
        foreach ($coltypes as $col => $colprop) {
            if (!isset($colprop['type'])) {
                $colprop['type'] = 'text';
            }
            if ($colprop['type'] != 'image' && empty($colprop['nosearch'])) {
                $ftype    = $colprop['type'] == 'select' ? 'select' : 'text';
                $label    = $colprop['label'] ?? $rcmail->gettext($col);
                $category = !empty($colprop['category']) ? $colprop['category'] : 'other';

                // load jquery UI datepicker for date fields
                if ($colprop['type'] == 'date') {
                    $colprop['class'] = (!empty($colprop['class']) ? $colprop['class'] . ' ' : '') . 'datepicker';
                }
                else if ($ftype == 'text') {
                    $colprop['size'] = $i_size;
                }

                $colprop['id'] = '_search_' . $col;

                $content  = html::div('row',
                    html::label(['class' => 'contactfieldlabel label', 'for' => $colprop['id']], rcube::Q($label))
                    . html::div('contactfieldcontent', rcube_output::get_edit_field('search_' . $col, '', $colprop, $ftype))
                );

                $form[$category]['content'][] = $content;
            }
        }

        $hiddenfields = new html_hiddenfield();
        $hiddenfields->add(['name' => '_adv', 'value' => 1]);

        $out = $rcmail->output->request_form([
                'name'    => 'form',
                'method'  => 'post',
                'task'    => $rcmail->task,
                'action'  => 'search',
                'noclose' => true,
            ] + $attrib, $hiddenfields->show()
        );

        $rcmail->output->add_gui_object('editform', $attrib['id']);

        unset($attrib['name']);
        unset($attrib['id']);

        foreach ($form as $f) {
            if (!empty($f['content'])) {
                $content = html::div('contactfieldgroup', join("\n", $f['content']));
                $legend  = html::tag('legend', null, rcube::Q($f['name']));

                $out .= html::tag('fieldset', $attrib, $legend . $content) . "\n";
            }
        }

        return $out . '</form>';
    }
}
actions/contacts/upload_photo.php000064400000007462151727150610013246 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handles contact photo uploads                                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_upload_photo extends rcmail_action_contacts_index
{
    /**
     * Supported image format types
     * ImageMagick works with other non-image types (e.g. pdf), we don't want that here
     *
     * @var array
     */
    public static $IMAGE_TYPES = ['jpeg','jpg','jp2','tiff','tif','bmp','eps','gif','png','png8','png24','png32','svg','ico'];

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // clear all stored output properties (like scripts and env vars)
        $rcmail->output->reset();

        if (!empty($_FILES['_photo']['tmp_name'])) {
            $filepath = $_FILES['_photo']['tmp_name'];

            // check file type and resize image
            $image     = new rcube_image($_FILES['_photo']['tmp_name']);
            $imageprop = $image->props();

            if (
                in_array(strtolower($imageprop['type']), self::$IMAGE_TYPES)
                && $imageprop['width']
                && $imageprop['height']
            ) {
                $maxsize   = intval($rcmail->config->get('contact_photo_size', 160));
                $tmpfname  = rcube_utils::temp_filename('imgconvert');
                $save_hook = 'attachment_upload';

                // scale image to a maximum size
                if (($imageprop['width'] > $maxsize || $imageprop['height'] > $maxsize) && $image->resize($maxsize, $tmpfname)) {
                    $filepath  = $tmpfname;
                    $save_hook = 'attachment_save';
                }

                // save uploaded file in storage backend
                $attachment = $rcmail->plugins->exec_hook($save_hook, [
                        'path'     => $filepath,
                        'size'     => $_FILES['_photo']['size'],
                        'name'     => $_FILES['_photo']['name'],
                        'mimetype' => 'image/' . $imageprop['type'],
                        'group'    => 'contact',
                ]);
            }
            else {
                $attachment = ['error' => $rcmail->gettext('invalidimageformat')];
            }

            if (!empty($attachment['status']) && empty($attachment['abort'])) {
                $file_id = $attachment['id'];
                $_SESSION['contacts']['files'][$file_id] = $attachment;
                $rcmail->output->command('replace_contact_photo', $file_id);
            }
            else {
                // upload failed
                self::upload_error($_FILES['_photo']['error'], $attachment);
            }
        }
        else {
            self::upload_failure();
        }

        $rcmail->output->command('photo_upload_end');
        $rcmail->output->send('iframe');
    }
}
actions/contacts/print.php000064400000012055151727150610011677 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Print contact details                                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_print extends rcmail_action_contacts_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // Get contact ID and source ID from request
        $cids   = self::get_cids();
        $source = key($cids);
        $cid    = $cids ? array_first($cids[$source]) : null;

        // Initialize addressbook source
        self::$CONTACTS  = self::contact_source($source, true);
        self::$SOURCE_ID = $source;

        // read contact record
        if ($cid && self::$CONTACTS) {
            self::$contact = self::$CONTACTS->get_record($cid, true);
        }

        $rcmail->output->add_handlers([
                'contacthead'    => [$this, 'contact_head'],
                'contactdetails' => [$this, 'contact_details'],
                'contactphoto'   => [$this, 'contact_photo'],
        ]);

        $rcmail->output->send('contactprint');
    }

    public static function contact_head($attrib)
    {
        $rcmail = rcmail::get_instance();

        // check if we have a valid result
        if (!self::$contact) {
            $rcmail->output->show_message('contactnotfound', 'error');
            return false;
        }

        $form = [
            'head' => [  // section 'head' is magic!
                'name' => $rcmail->gettext('contactnameandorg'),
                'content' => [
                    'prefix'     => [],
                    'name'       => [],
                    'firstname'  => [],
                    'middlename' => [],
                    'surname'    => [],
                    'suffix'     => [],
                ],
            ],
        ];

        unset($attrib['name']);

        return self::contact_form($form, self::$contact, $attrib);
    }

    public static function contact_details($attrib)
    {
        // check if we have a valid result
        if (!self::$contact) {
            return false;
        }

        $rcmail = rcmail::get_instance();

        $form = [
            'contact' => [
                'name'    => $rcmail->gettext('properties'),
                'content' => [
                    'organization' => [],
                    'department'   => [],
                    'jobtitle'     => [],
                    'email'        => [],
                    'phone'        => [],
                    'address'      => [],
                    'website'      => [],
                    'im'           => [],
                    'groups'       => [],
                ],
            ],
            'personal' => [
                'name'    => $rcmail->gettext('personalinfo'),
                'content' => [
                    'nickname'    => [],
                    'gender'      => [],
                    'maidenname'  => [],
                    'birthday'    => [],
                    'anniversary' => [],
                    'manager'     => [],
                    'assistant'   => [],
                    'spouse'      => [],
                ],
            ],
        ];

        if (isset(rcmail_action_contacts_index::$CONTACT_COLTYPES['notes'])) {
            $form['notes'] = [
                'name'    => $rcmail->gettext('notes'),
                'content' => [
                    'notes' => ['type' => 'textarea', 'label' => false],
                ],
            ];
        }

        if (self::$CONTACTS->groups) {
            $groups = self::$CONTACTS->get_record_groups(self::$contact['ID']);
            if (!empty($groups)) {
                $form['contact']['content']['groups'] = [
                    'value' => rcube::Q(implode(', ', $groups)),
                    'label' => $rcmail->gettext('groups')
                ];
            }
        }

        return self::contact_form($form, self::$contact, $attrib);
    }
}
actions/contacts/edit.php000064400000024640151727150610011473 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Show edit form for a contact entry                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_edit extends rcmail_action_contacts_index
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if ($rcmail->action == 'edit') {
            // Get contact ID and source ID from request
            $cids   = self::get_cids();
            $source = key($cids);
            $cid    = array_first($cids[$source]);

            // Initialize addressbook
            $CONTACTS = self::contact_source($source, true);

            // Contact edit
            if ($cid && (self::$contact = $CONTACTS->get_record($cid, true))) {
                $rcmail->output->set_env('cid', self::$contact['ID']);
            }

            // editing not allowed here
            if ($CONTACTS->readonly || !empty(self::$contact['readonly'])) {
                $rcmail->output->show_message('sourceisreadonly');
                $rcmail->overwrite_action('show');
                return;
            }

            if (empty(self::$contact)) {
                $rcmail->output->show_message('contactnotfound', 'error');
            }
        }
        else {
            $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);

            if (strlen($source)) {
                $CONTACTS = $rcmail->get_address_book($source, true);
            }

            if (empty($CONTACTS) || $CONTACTS->readonly) {
                $CONTACTS = $rcmail->get_address_book(rcube_addressbook::TYPE_DEFAULT, true);
                $source   = $rcmail->get_address_book_id($CONTACTS);
            }

            // Initialize addressbook
            $CONTACTS = self::contact_source($source, true);
        }

        self::$SOURCE_ID = $source;
        self::$CONTACTS  = $CONTACTS;
        self::set_sourcename($CONTACTS);

        // check if we have a valid result
        if (!empty($args['contact'])) {
            self::$contact = $args['contact'];
        }

        $rcmail->output->add_handlers([
                'contactedithead' => [$this, 'contact_edithead'],
                'contacteditform' => [$this, 'contact_editform'],
                'contactphoto'    => [$this, 'contact_photo'],
                'photouploadform' => [$this, 'upload_photo_form'],
                'sourceselector'  => [$this, 'source_selector'],
                'filedroparea'    => [$this, 'photo_drop_area'],
        ]);

        $rcmail->output->set_pagetitle($rcmail->gettext(($rcmail->action == 'add' ? 'addcontact' : 'editcontact')));

        if ($rcmail->action == 'add' && $rcmail->output->template_exists('contactadd')) {
            $rcmail->output->send('contactadd');
        }

        // this will be executed if no template for addcontact exists
        $rcmail->output->send('contactedit');
    }

    public static function contact_edithead($attrib)
    {
        $rcmail = rcmail::get_instance();
        $business_mode = $rcmail->config->get('contact_form_mode') === 'business';

        // check if we have a valid result
        $i_size = !empty($attrib['size']) ? $attrib['size'] : 20;

        $form = [
            'head' => [
                'name' => $rcmail->gettext('contactnameandorg'),
                'content' => [
                    'source'        => ['id' => '_source', 'label' => $rcmail->gettext('addressbook')],
                    'prefix'        => ['size' => $i_size],
                    'firstname'     => ['size' => $i_size, 'visible' => true],
                    'middlename'    => ['size' => $i_size],
                    'surname'       => ['size' => $i_size, 'visible' => true],
                    'suffix'        => ['size' => $i_size],
                    'name'          => ['size' => $i_size * 2],
                    'nickname'      => ['size' => $i_size * 2],
                    'organization'  => ['size' => $i_size * 2, 'visible' => $business_mode],
                    'department'    => ['size' => $i_size * 2, 'visible' => $business_mode],
                    'jobtitle'      => ['size' => $i_size * 2, 'visible' => $business_mode],
                ]
            ]
        ];

        list($form_start, $form_end) = self::get_form_tags($attrib);
        unset($attrib['form'], $attrib['name'], $attrib['size']);

        // return the address edit form
        $out = self::contact_form($form, self::$contact, $attrib);

        return $form_start . $out . $form_end;
    }

    public static function contact_editform($attrib)
    {
        $rcmail   = rcmail::get_instance();
        $addr_tpl = $rcmail->config->get('address_template', '');

        // copy (parsed) address template to client
        if (preg_match_all('/\{([a-z0-9]+)\}([^{]*)/i', $addr_tpl, $templ, PREG_SET_ORDER)) {
            $rcmail->output->set_env('address_template', $templ);
        }

        $i_size       = !empty($attrib['size']) ? $attrib['size'] : 40;
        $t_rows       = !empty($attrib['textarearows']) ? $attrib['textarearows'] : 10;
        $t_cols       = !empty($attrib['textareacols']) ? $attrib['textareacols'] : 40;
        $short_labels = self::get_bool_attr($attrib, 'short-legend-labels');

        $form = [
            'contact' => [
                'name'    => $rcmail->gettext('properties'),
                'content' => [
                    'email'   => ['size' => $i_size, 'maxlength' => 254, 'visible' => true],
                    'phone'   => ['size' => $i_size, 'visible' => true],
                    'address' => ['visible' => true],
                    'website' => ['size' => $i_size],
                    'im'      => ['size' => $i_size],
                ],
            ],
            'personal' => [
                'name'    => $rcmail->gettext($short_labels ? 'personal' : 'personalinfo'),
                'content' => [
                    'gender'      => ['visible' => true],
                    'maidenname'  => ['size' => $i_size],
                    'birthday'    => ['visible' => true],
                    'anniversary' => [],
                    'manager'     => ['size' => $i_size],
                    'assistant'   => ['size' => $i_size],
                    'spouse'      => ['size' => $i_size],
                ],
            ],
        ];

        if (isset(self::$CONTACT_COLTYPES['notes'])) {
            $form['notes'] = [
                'name'    => $rcmail->gettext('notes'),
                'single'  => true,
                'content' => [
                    'notes' => ['size' => $t_cols, 'rows' => $t_rows, 'label' => false, 'visible' => true, 'limit' => 1],
                ],
            ];
        }

        list($form_start, $form_end) = self::get_form_tags($attrib);
        unset($attrib['form']);

        // return the complete address edit form as table
        $out = self::contact_form($form, self::$contact, $attrib);

        return $form_start . $out . $form_end;
    }

    public static function upload_photo_form($attrib)
    {
        $rcmail = rcmail::get_instance();
        $hidden = new html_hiddenfield(['name' => '_cid', 'value' => $rcmail->output->get_env('cid')]);

        $attrib['prefix'] = $hidden->show();
        $input_attr       = ['name' => '_photo', 'accept' => 'image/*'];

        $rcmail->output->add_label('addphoto','replacephoto');

        return self::upload_form($attrib, 'uploadform', 'upload-photo', $input_attr);
    }

    /**
     * similar function as in /steps/settings/edit_identity.inc
     * @todo: Use rcmail_action::get_form_tags()
     */
    public static function get_form_tags($attrib, $action = null, $id = null, $hidden = null)
    {
        static $edit_form;

        $rcmail = rcmail::get_instance();
        $form_start = $form_end = '';

        if (empty($edit_form)) {
            $hiddenfields = new html_hiddenfield();

            if ($rcmail->action == 'edit') {
                $hiddenfields->add(['name' => '_source', 'value' => self::$SOURCE_ID]);
            }

            $hiddenfields->add(['name' => '_gid', 'value' => self::$CONTACTS->group_id]);
            $hiddenfields->add(['name' => '_search', 'value' => rcube_utils::get_input_string('_search', rcube_utils::INPUT_GPC)]);

            if ($cid = $rcmail->output->get_env('cid')) {
                $hiddenfields->add(['name' => '_cid', 'value' => $cid]);
            }

            $form_attrib = [
                'name'    => 'form',
                'method'  => 'post',
                'task'    => $rcmail->task,
                'action'  => 'save',
                'request' => 'save.' . intval($cid),
                'noclose' => true,
            ];

            $form_start = $rcmail->output->request_form($form_attrib + $attrib, $hiddenfields->show());
            $form_end   = empty($attrib['form']) ? '</form>' : '';
            $edit_form  = !empty($attrib['form']) ? $attrib['form'] : 'form';

            $rcmail->output->add_gui_object('editform', $edit_form);
        }

        return [$form_start, $form_end];
    }

    /**
     * Register container as active area to drop photos onto
     */
    public static function photo_drop_area($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (!empty($attrib['id'])) {
            $rcmail->output->add_gui_object('filedrop', $attrib['id']);
            $rcmail->output->set_env('filedrop', [
                    'action'    => 'upload-photo',
                    'fieldname' => '_photo',
                    'single'    => 1,
                    'filter'    => '^image/.+'
            ]);
        }
    }
}
actions/contacts/mailto.php000064400000007111151727150610012025 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Compose a recipient list with all selected contacts                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_mailto extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $cids    = self::get_cids();
        $mailto  = [];
        $sources = [];

        foreach ($cids as $source => $cid) {
            $contacts = $rcmail->get_address_book($source);

            if ($contacts->ready) {
                $contacts->set_page(1);
                $contacts->set_pagesize(count($cid) + 2); // +2 to skip counting query
                $sources[] = $contacts->search($contacts->primary_key, $cid, 0, true, true, 'email');
            }
        }

        if (!empty($_REQUEST['_gid']) && isset($_REQUEST['_source'])) {
            $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GP);
            $group_id = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_GP);

            $contacts   = $rcmail->get_address_book($source);
            $group_data = $contacts->get_group($group_id);

            // group has an email address assigned: use that
            if (!empty($group_data['email'])) {
                $mailto[] = format_email_recipient($group_data['email'][0], $group_data['name']);
            }
            else if ($contacts->ready) {
                $maxnum = (int) $rcmail->config->get('max_group_members');

                $contacts->set_group($group_id);
                $contacts->set_page(1);
                $contacts->set_pagesize($maxnum ?: 999);
                $sources[] = $contacts->list_records();
            }
        }

        foreach ($sources as $source) {
            while (is_object($source) && ($rec = $source->iterate())) {
                $emails = rcube_addressbook::get_col_values('email', $rec, true);

                if (!empty($emails)) {
                    $mailto[] = format_email_recipient($emails[0], $rec['name']);
                }
            }
        }

        if (!empty($mailto)) {
            $mailto_str = join(', ', $mailto);
            $mailto_id  = substr(md5($mailto_str), 0, 16);
            $_SESSION['mailto'][$mailto_id] = urlencode($mailto_str);
            $rcmail->output->command('open_compose_step', ['_mailto' => $mailto_id]);
        }
        else {
            $rcmail->output->show_message('nocontactsfound', 'warning');
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/group_delete.php000064400000005130151727150610013215 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for contact group delete action                           |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_group_delete extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail   = rcmail::get_instance();
        $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $contacts = self::contact_source($source);

        if ($contacts->readonly || !$contacts->groups) {
            $rcmail->output->show_message('sourceisreadonly', 'warning');
            $rcmail->output->send();
        }

        if ($gid = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_POST)) {
            $plugin = $rcmail->plugins->exec_hook('group_delete', [
                    'group_id' => $gid,
                    'source'   => $source,
            ]);

            if (empty($plugin['abort'])) {
                $deleted = $contacts->delete_group($gid);
            }
            else {
                $deleted = $plugin['result'];
            }
        }

        if (!empty($deleted)) {
            $rcmail->output->show_message('groupdeleted', 'confirmation');
            $rcmail->output->command('remove_group_item', ['source' => $source, 'id' => $gid]);
        }
        else {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
            $rcmail->output->show_message($error, 'error');
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/delete.php000064400000015410151727150610012003 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Delete the submitted contacts (CIDs) from the users address book    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_delete extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $cids   = self::get_cids(null, rcube_utils::INPUT_POST);
        $delcnt = 0;

        // remove previous deletes
        $undo_time = $rcmail->config->get('undo_timeout', 0);
        $rcmail->session->remove('contact_undo');

        foreach ($cids as $source => $cid) {
            $CONTACTS = self::contact_source($source);

            if ($CONTACTS->readonly && empty($CONTACTS->deletable)) {
                // more sources? do nothing, probably we have search results from
                // more than one source, some of these sources can be readonly
                if (count($cids) == 1) {
                    $rcmail->output->show_message('contactdelerror', 'error');
                    $rcmail->output->command('list_contacts');
                    $rcmail->output->send();
                }
                continue;
            }

            $plugin = $rcmail->plugins->exec_hook('contact_delete', [
                    'id'     => $cid,
                    'source' => $source
            ]);

            $deleted = !$plugin['abort'] ? $CONTACTS->delete($cid, $undo_time < 1) : $plugin['result'];

            if (!$deleted) {
                if (!empty($plugin['message'])) {
                    $error = $plugin['message'];
                }
                else if (($error = $CONTACTS->get_error()) && !empty($error['message'])) {
                    $error = $error['message'];
                }
                else {
                    $error = 'contactdelerror';
                }

                $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GP);
                $group  = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_GP);

                $rcmail->output->show_message($error, 'error');
                $rcmail->output->command('list_contacts', $source, $group);
                $rcmail->output->send();
            }
            else {
                $delcnt += $deleted;

                // store deleted contacts IDs in session for undo action
                if ($undo_time > 0 && $CONTACTS->undelete) {
                    $_SESSION['contact_undo']['data'][$source] = $cid;
                }
            }
        }

        if (!empty($_SESSION['contact_undo'])) {
            $_SESSION['contact_undo']['ts'] = time();
            $msg = html::span(null, $rcmail->gettext('contactdeleted'))
                . ' ' . html::a(
                    ['onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"],
                    $rcmail->gettext('undo')
                );

            $rcmail->output->show_message($msg, 'confirmation', null, true, $undo_time);
        }
        else {
            $rcmail->output->show_message('contactdeleted', 'confirmation');
        }

        $page_size = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));
        $page      = $_SESSION['page'] ?? 1;

        // update saved search after data changed
        if (($records = self::search_update(true)) !== false) {
            // create resultset object
            $count  = count($records);
            $first  = ($page-1) * $page_size;
            $result = new rcube_result_set($count, $first);
            $pages  = ceil((count($records) + $delcnt) / $page_size);

            // last page and it's empty, display previous one
            if ($result->count && $result->count <= ($page_size * ($page - 1))) {
                $rcmail->output->command('list_page', 'prev');
                $rowcount = $rcmail->gettext('loading');
            }
            // get records from the next page to add to the list
            else if ($pages > 1 && $page < $pages) {
                // sort the records
                ksort($records, SORT_LOCALE_STRING);

                $first += $page_size;
                // create resultset object
                $res = new rcube_result_set($count, $first - $delcnt);

                if ($page_size < $count) {
                    $records = array_slice($records, $first - $delcnt, $delcnt);
                }

                $res->records = array_values($records);
                $records = $res;
            }
            else {
                unset($records);
            }
        }
        else if (isset($CONTACTS)) {
            // count contacts for this user
            $result = $CONTACTS->count();
            $pages  = ceil(($result->count + $delcnt) / $page_size);

            // last page and it's empty, display previous one
            if ($result->count && $result->count <= ($page_size * ($page - 1))) {
                $rcmail->output->command('list_page', 'prev');
                $rowcount = $rcmail->gettext('loading');
            }
            // get records from the next page to add to the list
            else if ($pages > 1 && $page < $pages) {
                $CONTACTS->set_page($page);
                $records = $CONTACTS->list_records(null, -$delcnt);
            }
        }

        if (!isset($rowcount)) {
            $rowcount = isset($result) ? self::get_rowcount_text($result) : '';
        }

        // update message count display
        $rcmail->output->set_env('pagecount', isset($result) ? ceil($result->count / $page_size) : 0);
        $rcmail->output->command('set_rowcount', $rowcount);

        // add new rows from next page (if any)
        if (!empty($records)) {
            self::js_contacts_list($records);
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/export.php000064400000016462151727150610012072 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Export the selected address book as vCard file                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_export extends rcmail_action_contacts_index
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->request_security_check(rcube_utils::INPUT_GET);

        $sort_col = $rcmail->config->get('addressbook_sort_col', 'name');

        // Use search result
        if (!empty($_REQUEST['_search']) && isset($_SESSION['contact_search'][$_REQUEST['_search']])) {
            $search  = (array) $_SESSION['contact_search'][$_REQUEST['_search']];
            $records = [];

            // Get records from all sources
            foreach ($search as $s => $set) {
                $source = $rcmail->get_address_book($s);

                // reset page
                $source->set_page(1);
                $source->set_pagesize(99999);
                $source->set_search_set($set);

                // get records
                $result = $source->list_records();

                while ($record = $result->next()) {
                    // because vcard_map is per-source we need to create vcard here
                    self::prepare_for_export($record, $source);

                    $record['sourceid'] = $s;
                    $key = rcube_addressbook::compose_contact_key($record, $sort_col);
                    $records[$key] = $record;
                }

                unset($result);
            }

            // sort the records
            ksort($records, SORT_LOCALE_STRING);

            // create resultset object
            $count  = count($records);
            $result = new rcube_result_set($count);
            $result->records = array_values($records);
        }
        // selected contacts
        else if (!empty($_REQUEST['_cid'])) {
            $records = [];

            // Selected contact IDs (with multi-source support)
            $cids = self::get_cids();

            foreach ($cids as $s => $ids) {
                $source = $rcmail->get_address_book($s);

                // reset page and page size (#6103)
                $source->set_page(1);
                $source->set_pagesize(count($ids));

                $result = $source->search('ID', $ids, 1, true, true);

                while ($record = $result->next()) {
                    // because vcard_map is per-source we need to create vcard here
                    self::prepare_for_export($record, $source);

                    $record['sourceid'] = $s;
                    $key = rcube_addressbook::compose_contact_key($record, $sort_col);
                    $records[$key] = $record;
                }
            }

            ksort($records, SORT_LOCALE_STRING);

            // create resultset object
            $count  = count($records);
            $result = new rcube_result_set($count);
            $result->records = array_values($records);
        }
        // selected directory/group
        else {
            $CONTACTS = self::contact_source(null, true);

            // get contacts for this user
            $CONTACTS->set_page(1);
            $CONTACTS->set_pagesize(99999);
            $result = $CONTACTS->list_records(null, 0, true);
        }

        // Give plugins a possibility to implement other output formats or modify the result
        $plugin = $rcmail->plugins->exec_hook('addressbook_export', ['result' => $result]);
        $result = $plugin['result'];

        if ($plugin['abort']) {
            $rcmail->output->sendExit();
        }

        // send download headers
        $rcmail->output->header('Content-Type: text/vcard; charset=' . RCUBE_CHARSET);
        $rcmail->output->header('Content-Disposition: attachment; filename="contacts.vcf"');

        while ($result && ($row = $result->next())) {
            if (!empty($CONTACTS)) {
                self::prepare_for_export($row, $CONTACTS);
            }

            // fix folding and end-of-line chars
            $row['vcard'] = preg_replace('/\r|\n\s+/', '', $row['vcard']);
            $row['vcard'] = preg_replace('/\n/', rcube_vcard::$eol, $row['vcard']);

            echo rcube_vcard::rfc2425_fold($row['vcard']) . rcube_vcard::$eol;
        }

        $rcmail->output->sendExit();
    }

    /**
     * Copy contact record properties into a vcard object
     */
    public static function prepare_for_export(&$record, $source = null)
    {
        $groups   = $source && $source->groups && $source->export_groups ? $source->get_record_groups($record['ID']) : null;
        $fieldmap = $source ? $source->vcard_map : null;

        if (empty($record['vcard'])) {
            $vcard = new rcube_vcard(null, RCUBE_CHARSET, false, $fieldmap);
            $vcard->reset();

            foreach ($record as $key => $values) {
                list($field, $section) = rcube_utils::explode(':', $key);
                // avoid unwanted casting of DateTime objects to an array
                // (same as in rcube_contacts::convert_save_data())
                if (is_object($values) && is_a($values, 'DateTime')) {
                    $values = [$values];
                }

                foreach ((array) $values as $value) {
                    if (is_array($value) || is_a($value, 'DateTime') || @strlen($value)) {
                        $vcard->set($field, $value, $section ? strtoupper($section) : '');
                    }
                }
            }

            // append group names
            if ($groups) {
                $vcard->set('groups', join(',', $groups), null);
            }

            $record['vcard'] = $vcard->export();
        }
        // patch categories to already existing vcard block
        else {
            $vcard = new rcube_vcard($record['vcard'], RCUBE_CHARSET, false, $fieldmap);

            // unset CATEGORIES entry, it might be not up-to-date (#1490277)
            $vcard->set('groups', null);
            $record['vcard'] = $vcard->export();

            if (!empty($groups)) {
                $vgroups = 'CATEGORIES:' . rcube_vcard::vcard_quote($groups, ',') . rcube_vcard::$eol;
                $record['vcard'] = str_replace('END:VCARD', $vgroups . 'END:VCARD', $record['vcard']);
            }
        }
    }
}
actions/contacts/copy.php000064400000013335151727150610011517 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Copy a contact record from one directory to another                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_copy extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $cids         = self::get_cids();
        $target       = rcube_utils::get_input_string('_to', rcube_utils::INPUT_POST);
        $target_group = rcube_utils::get_input_string('_togid', rcube_utils::INPUT_POST);

        $success  = 0;
        $errormsg = 'copyerror';
        $maxnum   = $rcmail->config->get('max_group_members', 0);

        foreach ($cids as $source => $cid) {
            // Something wrong, target not specified
            if (!strlen($target)) {
                break;
            }

            // It might happen when copying records from search result
            // Do nothing, go to next source
            if ((string) $target == (string) $source) {
                continue;
            }

            $CONTACTS = $rcmail->get_address_book($source);
            $TARGET   = $rcmail->get_address_book($target);

            if (!$TARGET || !$TARGET->ready || $TARGET->readonly) {
                break;
            }

            $ids = [];

            foreach ($cid as $cid) {
                $a_record = $CONTACTS->get_record($cid, true);

                // avoid copying groups
                if (isset($a_record['_type']) && $a_record['_type'] == 'group') {
                    continue;
                }

                // Check if contact exists, if so, we'll need it's ID
                // Note: Some addressbooks allows empty email address field
                // @TODO: should we check all email addresses?
                $email = $CONTACTS->get_col_values('email', $a_record, true);
                if (!empty($email)) {
                    $result = $TARGET->search('email', $email[0], 1, true, true);
                }
                else if (!empty($a_record['name'])) {
                    $result = $TARGET->search('name', $a_record['name'], 1, true, true);
                }
                else {
                    $result = new rcube_result_set();
                }

                // insert contact record
                if (!$result->count) {
                    $plugin = $rcmail->plugins->exec_hook('contact_create', [
                            'record' => $a_record,
                            'source' => $target,
                            'group'  => $target_group
                    ]);

                    if (!$plugin['abort']) {
                        if ($insert_id = $TARGET->insert($plugin['record'], false)) {
                            $ids[] = $insert_id;
                            $success++;
                        }
                    }
                    else if ($plugin['result']) {
                        $ids = array_merge($ids, $plugin['result']);
                        $success++;
                    }
                }
                else {
                    $record   = $result->first();
                    $ids[]    = $record['ID'];
                    $errormsg = empty($email) ? 'contactnameexists' : 'contactexists';
                }
            }

            // assign to group
            if ($target_group && $TARGET->groups && !empty($ids)) {
                $plugin = $rcmail->plugins->exec_hook('group_addmembers', [
                        'group_id' => $target_group,
                        'ids'      => $ids,
                        'source'  => $target
                ]);

                if (!$plugin['abort']) {
                    $TARGET->reset();
                    $TARGET->set_group($target_group);

                    if ($maxnum && ($TARGET->count()->count + count($plugin['ids']) > $maxnum)) {
                        $rcmail->output->show_message('maxgroupmembersreached', 'warning', ['max' => $maxnum]);
                        $rcmail->output->send();
                    }

                    if (($cnt = $TARGET->add_to_group($target_group, $plugin['ids'])) && $cnt > $success) {
                        $success = $cnt;
                    }
                }
                else if (!empty($plugin['result'])) {
                    $success = $plugin['result'];
                }

                $errormsg = !empty($plugin['message']) ? $plugin['message'] : 'copyerror';
            }
        }

        if (!$success) {
            $rcmail->output->show_message($errormsg, 'error');
        }
        else {
            $rcmail->output->show_message('copysuccess', 'confirmation', ['nr' => $success]);
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/group_delmembers.php000064400000005351151727150610014077 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Removing members from a contact group                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_group_delmembers extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail   = rcmail::get_instance();
        $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $contacts = self::contact_source($source);

        if ($contacts->readonly || !$contacts->groups) {
            $rcmail->output->show_message('sourceisreadonly', 'warning');
            $rcmail->output->send();
        }

        $gid = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_POST);
        $ids = self::get_cids($source);

        if ($gid && $ids) {
            $plugin = $rcmail->plugins->exec_hook('group_delmembers', [
                    'group_id' => $gid,
                    'ids'      => $ids,
                    'source'   => $source,
            ]);

            if (empty($plugin['abort'])) {
                $result = $contacts->remove_from_group($gid, $plugin['ids']);
            }
            else {
                $result = $plugin['result'];
            }
        }

        if (!empty($result)) {
            $rcmail->output->show_message('contactremovedfromgroup', 'confirmation');
            $rcmail->output->command('remove_group_contacts', ['source' => $source, 'gid' => $gid]);
        }
        else {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
            $rcmail->output->show_message($error, 'error');
        }

        // send response
        $rcmail->output->send();
    }
}
actions/contacts/save.php000064400000031225151727150610011501 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Save a contact entry or to add a new one                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_save extends rcmail_action_contacts_index
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail        = rcmail::get_instance();
        $contacts      = self::contact_source(null, true);
        $cid           = rcube_utils::get_input_string('_cid', rcube_utils::INPUT_POST);
        $source        = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $return_action = empty($cid) ? 'add' : 'edit';

        // Source changed, display the form again
        if (!empty($_GET['_reload'])) {
            $rcmail->overwrite_action($return_action);
            return;
        }

        // cannot edit record
        if (!$contacts || $contacts->readonly) {
            $rcmail->output->show_message('contactreadonly', 'error');
            $rcmail->overwrite_action($return_action);
            return;
        }

        // read POST values into hash array
        $a_record = self::process_input();

        // do input checks (delegated to $contacts instance)
        if (!$contacts->validate($a_record)) {
            $err = (array) $contacts->get_error();
            $rcmail->output->show_message(!empty($err['message']) ? rcube::Q($err['message']) : 'formincomplete', 'warning');
            $rcmail->overwrite_action($return_action, ['contact' => $a_record]);
            return;
        }

        // get raw photo data if changed
        if (isset($a_record['photo'])) {
            if ($a_record['photo'] == '-del-') {
                $a_record['photo'] = '';
            }
            else if (!empty($_SESSION['contacts']['files'][$a_record['photo']])) {
                $tempfile = $_SESSION['contacts']['files'][$a_record['photo']];
                $tempfile = $rcmail->plugins->exec_hook('attachment_get', $tempfile);
                if ($tempfile['status']) {
                    $a_record['photo'] = $tempfile['data'] ?: @file_get_contents($tempfile['path']);
                }
            }
            else {
                unset($a_record['photo']);
            }

            // cleanup session data
            $rcmail->plugins->exec_hook('attachments_cleanup', ['group' => 'contact']);
            $rcmail->session->remove('contacts');
        }

        // update an existing contact
        if (!empty($cid)) {
            $plugin = $rcmail->plugins->exec_hook('contact_update', [
                    'id'     => $cid,
                    'record' => $a_record,
                    'source' => $source
            ]);

            $a_record = $plugin['record'];

            if (!$plugin['abort']) {
                $result = $contacts->update($cid, $a_record);
            }
            else {
                $result = $plugin['result'];
            }

            if ($result) {
                // show confirmation
                $rcmail->output->show_message('successfullysaved', 'confirmation', null, false);

                // in search mode, just reload the list (#1490015)
                if (!empty($_REQUEST['_search'])) {
                    $rcmail->output->command('parent.command', 'list');
                    $rcmail->output->send('iframe');
                }

                $newcid = null;

                // LDAP DN change
                if (is_string($result) && strlen($result) > 1) {
                    $newcid = $result;
                    // change cid in POST for 'show' action
                    $_POST['_cid'] = $newcid;
                }

                // refresh contact data for list update and 'show' action
                $contact = $contacts->get_record($newcid ?: $cid, true);

                // Plugins can decide to remove the contact on edit, e.g. automatic_addressbook
                // Best we can do is to refresh the list (#5522)
                if (empty($contact)) {
                    $rcmail->output->command('parent.command', 'list');
                    $rcmail->output->send('iframe');
                }

                // Update contacts list
                $a_js_cols = [];
                $record    = $contact;
                $record['email'] = array_first($contacts->get_col_values('email', $record, true));
                $record['name']  = rcube_addressbook::compose_list_name($record);

                foreach (['name'] as $col) {
                    $a_js_cols[] = rcube::Q((string) $record[$col]);
                }

                // performance: unset some big data items we don't need here
                $record = array_intersect_key($record, ['ID' => 1,'email' => 1,'name' => 1]);
                $record['_type'] = 'person';

                // update the changed col in list
                $rcmail->output->command('parent.update_contact_row', $cid, $a_js_cols, $newcid, $source, $record);

                $rcmail->overwrite_action('show', ['contact' => $contact]);
            }
            else {
                // show error message
                $error = self::error_str($contacts, $plugin);

                $rcmail->output->show_message($error, 'error', null, false);
                $rcmail->overwrite_action('show');
            }
        }
        // insert a new contact
        else {
            // Name of the addressbook already selected on the list
            $orig_source = rcube_utils::get_input_string('_orig_source', rcube_utils::INPUT_GPC);

            if (!strlen($source)) {
                $source = $orig_source;
            }

            // show notice if existing contacts with same e-mail are found
            foreach ($contacts->get_col_values('email', $a_record, true) as $email) {
                if ($email && ($res = $contacts->search('email', $email, 1, false, true)) && $res->count) {
                    $rcmail->output->show_message('contactexists', 'notice', null, false);
                    break;
                }
            }

            $plugin = $rcmail->plugins->exec_hook('contact_create', [
                    'record' => $a_record,
                    'source' => $source
            ]);

            $a_record = $plugin['record'];

            // insert record and send response
            if (!$plugin['abort']) {
                $insert_id = $contacts->insert($a_record);
            }
            else {
                $insert_id = $plugin['result'];
            }

            if ($insert_id) {
                $contacts->reset();

                // add new contact to the specified group
                if ($contacts->groups && $contacts->group_id) {
                    $plugin = $rcmail->plugins->exec_hook('group_addmembers', [
                            'group_id' => $contacts->group_id,
                            'ids'      => $insert_id,
                            'source'   => $source
                    ]);

                    if (!$plugin['abort']) {
                        if (($maxnum = $rcmail->config->get('max_group_members', 0)) && ($contacts->count()->count + 1 > $maxnum)) {
                            // @FIXME: should we remove the contact?
                            $msgtext = $rcmail->gettext(['name' => 'maxgroupmembersreached', 'vars' => ['max' => $maxnum]]);
                            $rcmail->output->command('parent.display_message', $msgtext, 'warning');
                        }
                        else {
                            $contacts->add_to_group($plugin['group_id'], $plugin['ids']);
                        }
                    }
                }

                // show confirmation
                $rcmail->output->show_message('successfullysaved', 'confirmation', null, false);

                $rcmail->output->command('parent.set_rowcount', $rcmail->gettext('loading'));
                $rcmail->output->command('parent.list_contacts');

                $rcmail->output->send('iframe');
            }
            else {
                // show error message
                $error = self::error_str($contacts, $plugin);
                $rcmail->output->show_message($error, 'error', null, false);
                $rcmail->overwrite_action('add');
            }
        }
    }

    public static function process_input()
    {
        $record = [];

        foreach (rcmail_action_contacts_index::$CONTACT_COLTYPES as $col => $colprop) {
            if (!empty($colprop['composite'])) {
                continue;
            }

            $fname = '_' . $col;

            // gather form data of composite fields
            if (!empty($colprop['childs'])) {
                $values = [];
                foreach ($colprop['childs'] as $childcol => $cp) {
                    $vals = rcube_utils::get_input_value('_' . $childcol, rcube_utils::INPUT_POST, true);
                    foreach ((array) $vals as $i => $val) {
                        $values[$i][$childcol] = $val;
                    }
                }

                if (isset($_REQUEST['_subtype_' . $col])) {
                    $subtypes = (array) rcube_utils::get_input_value('_subtype_' . $col, rcube_utils::INPUT_POST);
                }
                else {
                    $subtypes = [''];
                }

                foreach ($subtypes as $i => $subtype) {
                    $suffix = $subtype ? ":$subtype" : '';
                    if ($values[$i]) {
                        $record[$col . $suffix][] = $values[$i];
                    }
                }
            }
            // assign values and subtypes
            else if (isset($_POST[$fname]) && is_array($_POST[$fname])) {
                $values   = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true);
                $subtypes = rcube_utils::get_input_value('_subtype_' . $col, rcube_utils::INPUT_POST);

                foreach ($values as $i => $val) {
                    if ($col == 'email') {
                        // extract email from full address specification, e.g. "Name" <addr@domain.tld>
                        $addr = rcube_mime::decode_address_list($val, 1, false);
                        if (!empty($addr) && ($addr = array_pop($addr)) && $addr['mailto']) {
                            $val = $addr['mailto'];
                        }
                    }

                    $subtype = $subtypes[$i] ? ':'.$subtypes[$i] : '';
                    $record[$col.$subtype][] = $val;
                }
            }
            else if (isset($_POST[$fname])) {
                $record[$col] = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true);

                // normalize the submitted date strings
                if ($colprop['type'] == 'date') {
                    if ($record[$col] && ($dt = rcube_utils::anytodatetime($record[$col]))) {
                        $record[$col] = $dt->format('Y-m-d');
                    }
                    else {
                        unset($record[$col]);
                    }
                }
            }
        }

        // Generate contact's display name (must be before validation)
        if (empty($record['name'])) {
            $record['name'] = rcube_addressbook::compose_display_name($record, true);

            // Reset it if equals to email address (from compose_display_name())
            $email = rcube_addressbook::get_col_values('email', $record, true);
            if (isset($email[0]) && $record['name'] == $email[0]) {
                $record['name'] = '';
            }
        }

        return $record;
    }

    public static function error_str($contacts, $plugin)
    {
        if (!empty($plugin['message'])) {
            return $plugin['message'];
        }

        $err = $contacts->get_error();

        if (!empty($err['message'])) {
            return $err['message'];
        }

        return 'errorsaving';
    }
}
actions/contacts/group_create.php000064400000005203151727150610013217 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   A handler for contact groups creation                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_contacts_group_create extends rcmail_action_contacts_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail   = rcmail::get_instance();
        $source   = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $contacts = self::contact_source($source);

        if ($contacts->readonly || !$contacts->groups) {
            $rcmail->output->show_message('sourceisreadonly', 'warning');
            $rcmail->output->send();
        }

        if ($name = trim(rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST, true))) {
            $plugin = $rcmail->plugins->exec_hook('group_create', [
                    'name'   => $name,
                    'source' => $source,
            ]);

            if (empty($plugin['abort'])) {
                $created = $contacts->create_group($plugin['name']);
            }
            else {
                $created = $plugin['result'];
            }
        }

        if (!empty($created)) {
            $rcmail->output->show_message('groupcreated', 'confirmation');
            $rcmail->output->command('insert_contact_group', ['source' => $source] + $created);
        }
        else if (empty($created)) {
            $error = !empty($plugin['message']) ? $plugin['message'] : 'errorsaving';
            $rcmail->output->show_message($error, 'error');
        }

        // send response
        $rcmail->output->send();
    }
}
actions/login/oauth.php000064400000010553151727150620011157 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Perform OAuth2 user login                                           |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_login_oauth extends rcmail_action
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        $auth_code  = rcube_utils::get_input_string('code', rcube_utils::INPUT_GET);
        $auth_error = rcube_utils::get_input_string('error', rcube_utils::INPUT_GET);
        $auth_state = rcube_utils::get_input_string('state', rcube_utils::INPUT_GET);

        // auth code return from oauth login
        if (!empty($auth_code)) {
            $auth = $rcmail->oauth->request_access_token($auth_code, $auth_state);

            // oauth success
            if ($auth && isset($auth['username'], $auth['authorization'], $auth['token'])) {
                // enforce XOAUTH2 auth type
                $rcmail->config->set('imap_auth_type', 'XOAUTH2');
                $rcmail->config->set('login_password_maxlen', strlen($auth['authorization']));

                // use access_token and user info for IMAP login
                $storage_host = $rcmail->autoselect_host();
                if ($rcmail->login($auth['username'], $auth['authorization'], $storage_host, true)) {
                    // replicate post-login tasks from index.php
                    $rcmail->session->remove('temp');
                    $rcmail->session->regenerate_id(false);

                    // send auth cookie if necessary
                    $rcmail->session->set_auth_cookie();

                    // save OAuth token in session
                    $_SESSION['oauth_token'] = $auth['token'];

                    // log successful login
                    $rcmail->log_login();

                    // allow plugins to control the redirect url after login success
                    $redir = $rcmail->plugins->exec_hook('login_after', ['_task' => 'mail']);
                    unset($redir['abort'], $redir['_err']);

                    // send redirect
                    header('Location: ' . $rcmail->url($redir, true, false));
                    exit;
                }
                else {
                    $rcmail->output->show_message('loginfailed', 'warning');

                    // log failed login
                    $error_code = $rcmail->login_error();
                    $rcmail->log_login($auth['username'], true, $error_code);

                    $rcmail->plugins->exec_hook('login_failed', [
                            'code' => $error_code,
                            'host' => $storage_host,
                            'user' => $auth['username'],
                    ]);

                    $rcmail->kill_session();
                    // fall through -> login page
                }
            }
            else {
                $rcmail->output->show_message('oauthloginfailed', 'warning');
            }
        }
        // error return from oauth login
        else if (!empty($auth_error)) {
            $error_message = rcube_utils::get_input_string('error_description', rcube_utils::INPUT_GET) ?: $auth_error;
            $rcmail->output->show_message($error_message, 'warning');
        }
        // login action: redirect to `oauth_auth_uri`
        else if ($rcmail->task === 'login') {
            // this will always exit() the process
            $rcmail->oauth->login_redirect();
        }
    }
}
actions/mail/show.php000064400000113615151727150620010634 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Display a mail message similar as a usual mail application does     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_show extends rcmail_action_mail_index
{
    protected static $MESSAGE;
    protected static $CLIENT_MIMETYPES = [];

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        self::$PRINT_MODE = $rcmail->action == 'print';

        // Read browser capabilities and store them in session
        if ($caps = rcube_utils::get_input_string('_caps', rcube_utils::INPUT_GET)) {
            $browser_caps = [];
            foreach (explode(',', $caps) as $cap) {
                $cap = explode('=', $cap);
                $browser_caps[$cap[0]] = $cap[1];
            }

            $_SESSION['browser_caps'] = $browser_caps;
        }

        $msg_id    = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GET);
        $uid       = preg_replace('/\.[0-9.]+$/', '', $msg_id);
        $mbox_name = $rcmail->storage->get_folder();

        // similar code as in program/steps/mail/get.inc
        if ($uid) {
            // set message format (need to be done before rcube_message construction)
            if (!empty($_GET['_format'])) {
                $prefer_html = $_GET['_format'] == 'html';
                $rcmail->config->set('prefer_html', $prefer_html);
                $_SESSION['msg_formats'][$mbox_name.':'.$uid] = $prefer_html;
            }
            else if (isset($_SESSION['msg_formats'][$mbox_name.':'.$uid])) {
                $rcmail->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name.':'.$uid]);
            }

            $MESSAGE = new rcube_message($msg_id, $mbox_name, !empty($_GET['_safe']));

            self::$MESSAGE = $MESSAGE;

            // if message not found (wrong UID)...
            if (empty($MESSAGE->headers)) {
                self::message_error();
            }

            self::$CLIENT_MIMETYPES = self::supported_mimetypes();

            // show images?
            self::check_safe($MESSAGE);

            // set message charset as default
            if (!empty($MESSAGE->headers->charset)) {
                $rcmail->storage->set_charset($MESSAGE->headers->charset);
            }

            if (!isset($_SESSION['writeable_abook'])) {
                $_SESSION['writeable_abook'] = $rcmail->get_address_sources(true) ? true : false;
            }

            $rcmail->output->set_pagetitle(abbreviate_string($MESSAGE->subject, 128, '...', true));

            // set environment
            $rcmail->output->set_env('uid', $msg_id);
            $rcmail->output->set_env('safemode', $MESSAGE->is_safe);
            $rcmail->output->set_env('message_context', $MESSAGE->context);
            $rcmail->output->set_env('message_flags', array_keys(array_change_key_case((array) $MESSAGE->headers->flags)));
            $rcmail->output->set_env('sender', !empty($MESSAGE->sender) ? $MESSAGE->sender['string'] : '');
            $rcmail->output->set_env('mailbox', $mbox_name);
            $rcmail->output->set_env('username', $rcmail->get_user_name());
            $rcmail->output->set_env('permaurl', $rcmail->url(['_action' => 'show', '_uid' => $msg_id, '_mbox' => $mbox_name]));
            $rcmail->output->set_env('has_writeable_addressbook', $_SESSION['writeable_abook']);
            $rcmail->output->set_env('delimiter', $rcmail->storage->get_hierarchy_delimiter());
            $rcmail->output->set_env('mimetypes', self::$CLIENT_MIMETYPES);

            if ($MESSAGE->headers->get('list-post', false)) {
                $rcmail->output->set_env('list_post', true);
            }

            // set configuration
            self::set_env_config(['delete_junk', 'flag_for_deletion', 'read_when_deleted',
                'skip_deleted', 'display_next', 'forward_attachment', 'mailvelope_main_keyring']);

            // set special folders
            foreach (['drafts', 'trash', 'junk'] as $mbox) {
                if ($folder = $rcmail->config->get($mbox . '_mbox')) {
                    $rcmail->output->set_env($mbox . '_mailbox', $folder);
                }
            }

            if ($MESSAGE->has_html_part()) {
                $prefer_html = $rcmail->config->get('prefer_html');
                $rcmail->output->set_env('optional_format', $prefer_html ? 'text' : 'html');
            }

            $rcmail->output->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
                'movingmessage', 'deletingmessage', 'markingmessage', 'replyall', 'replylist',
                'bounce', 'bouncemsg', 'sendingmessage');

            // check for unset disposition notification
            self::mdn_request_handler($MESSAGE);

            if (empty($MESSAGE->headers->flags['SEEN']) && $MESSAGE->context === null) {
                $v = intval($rcmail->config->get('mail_read_time'));
                if ($v > 0) {
                    $rcmail->output->set_env('mail_read_time', $v);
                }
                else if ($v == 0) {
                    $rcmail->output->command('set_unread_message', $MESSAGE->uid, $mbox_name);
                    $rcmail->plugins->exec_hook('message_read', [
                            'uid'     => $MESSAGE->uid,
                            'mailbox' => $mbox_name,
                            'message' => $MESSAGE,
                    ]);

                    $set_seen_flag = true;
                }
            }
        }

        $rcmail->output->add_handlers([
                'mailboxname'        => [$this, 'mailbox_name_display'],
                'messageattachments' => [$this, 'message_attachments'],
                'messageobjects'     => [$this, 'message_objects'],
                'messagesummary'     => [$this, 'message_summary'],
                'messageheaders'     => [$this, 'message_headers'],
                'messagefullheaders' => [$this, 'message_full_headers'],
                'messagebody'        => [$this, 'message_body'],
                'contactphoto'       => [$this, 'message_contactphoto'],
        ]);

        if ($rcmail->action == 'print' && $rcmail->output->template_exists('messageprint')) {
            $rcmail->output->send('messageprint', false);
        }
        else if ($rcmail->action == 'preview' && $rcmail->output->template_exists('messagepreview')) {
            $rcmail->output->send('messagepreview', false);
        }
        else {
            $rcmail->output->send('message', false);
        }

        // mark message as read
        if (!empty($set_seen_flag)) {
            if ($rcmail->storage->set_flag(self::$MESSAGE->uid, 'SEEN', $mbox_name)) {
                if ($count = self::get_unseen_count($mbox_name)) {
                    self::set_unseen_count($mbox_name, $count - 1);
                }
            }
        }

        exit;
    }

    /**
     * Handler for the template object 'messageattachments'.
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML content showing the message attachments list
     */
    public static function message_attachments($attrib)
    {
        if (empty(self::$MESSAGE->attachments)) {
            return '';
        }

        $rcmail = rcmail::get_instance();
        $out    =
        $ol     = '';
        $attachments = [];

        foreach (self::$MESSAGE->attachments as $attach_prop) {
            $filename = self::attachment_name($attach_prop, true);
            $filesize = self::message_part_size($attach_prop);
            $mimetype = rcube_mime::fix_mimetype($attach_prop->mimetype);
            $class    = rcube_utils::file2class($mimetype, $filename);
            $id       = 'attach' . $attach_prop->mime_id;

            if ($mimetype == 'application/octet-stream' && ($type = rcube_mime::file_ext_type($filename))) {
                $mimetype = $type;
            }

            // Skip inline images
            if (strpos($mimetype, 'image/') === 0 && !self::is_attachment(self::$MESSAGE, $attach_prop)) {
                continue;
            }

            if (!empty($attrib['maxlength']) && mb_strlen($filename) > $attrib['maxlength']) {
                $title    = $filename;
                $filename = abbreviate_string($filename, $attrib['maxlength']);
            }
            else {
                $title = '';
            }

            $item = html::span('attachment-name', rcube::Q($filename))
                . html::span('attachment-size', '(' . rcube::Q($filesize) . ')');

            $li_class = $class;

            if (!self::$PRINT_MODE) {
                $link_attrs = [
                    'href'        => self::$MESSAGE->get_part_url($attach_prop->mime_id, false),
                    'onclick'     => sprintf('%s.command(\'load-attachment\',\'%s\',this); return false',
                        rcmail_output::JS_OBJECT_NAME, $attach_prop->mime_id),
                    'onmouseover' => $title ? '' : 'rcube_webmail.long_subject_title_ex(this, 0)',
                    'title'       => $title,
                    'class'       => 'filename',
                ];

                if ($mimetype != 'message/rfc822' && empty($attach_prop->size)) {
                    $li_class .= ' no-menu';
                    $link_attrs['onclick'] = sprintf('%s.alert_dialog(%s.get_label(\'emptyattachment\')); return false',
                            rcmail_output::JS_OBJECT_NAME, rcmail_output::JS_OBJECT_NAME);
                    $rcmail->output->add_label('emptyattachment');
                }

                $item = html::a($link_attrs, $item);
                $attachments[$attach_prop->mime_id] = $mimetype;
            }

            $ol .= html::tag('li', ['class' => $li_class, 'id' => $id], $item);
        }

        $out = html::tag('ul', $attrib, $ol, html::$common_attrib);

        $rcmail->output->set_env('attachments', $attachments);
        $rcmail->output->add_gui_object('attachments', $attrib['id']);

        return $out;
    }

    public static function remote_objects_msg()
    {
        $rcmail = rcmail::get_instance();

        $attrib['id']    = 'remote-objects-message';
        $attrib['class'] = 'notice';
        $attrib['style'] = 'display: none';

        $msg = html::span(null, rcube::Q($rcmail->gettext('blockedresources')));

        $buttons = html::a([
                'href'    => "#loadremote",
                'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('load-remote')"
            ],
            rcube::Q($rcmail->gettext('allow'))
        );

        // add link to save sender in addressbook and reload message
        $show_images = $rcmail->config->get('show_images');
        if (!empty(self::$MESSAGE->sender['mailto']) && ($show_images == 1 || $show_images == 3)) {
            $arg = $show_images == 3 ? rcube_addressbook::TYPE_TRUSTED_SENDER : 'true';
            $buttons .= ' ' . html::a([
                    'href'    => "#loadremotealways",
                    'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('load-remote', $arg)",
                    'style'   => "white-space:nowrap"
                ],
                rcube::Q($rcmail->gettext(['name' => 'alwaysallow', 'vars' => ['sender' => self::$MESSAGE->sender['mailto']]]))
            );
        }

        $rcmail->output->add_gui_object('remoteobjectsmsg', $attrib['id']);

        return html::div($attrib, $msg . '&nbsp;' . html::span('boxbuttons', $buttons));
    }

    /**
     * Display a warning whenever a suspicious email address has been found in the message.
     *
     * @return string HTML content of the warning element
     */
    public static function suspicious_content_warning()
    {
        if (empty(self::$SUSPICIOUS_EMAIL)) {
            return '';
        }

        $rcmail = rcmail::get_instance();

        $attrib = [
            'id'    => 'suspicious-content-message',
            'class' => 'notice',
        ];

        $msg = html::span(null, rcube::Q($rcmail->gettext('suspiciousemail')));

        return html::div($attrib, $msg);
    }

    public static function message_buttons()
    {
        $rcmail = rcmail::get_instance();
        $delim  = $rcmail->storage->get_hierarchy_delimiter();
        $dbox   = $rcmail->config->get('drafts_mbox');

        // the message is not a draft
        if (!empty(self::$MESSAGE->context)
            || (
                !empty(self::$MESSAGE->folder)
                && (self::$MESSAGE->folder != $dbox && strpos(self::$MESSAGE->folder, $dbox.$delim) !== 0)
            )
        ) {
            return '';
        }

        $attrib['id']    = 'message-buttons';
        $attrib['class'] = 'information notice';

        $msg = html::span(null, rcube::Q($rcmail->gettext('isdraft')))
            . '&nbsp;'
            . html::a([
                    'href'    => "#edit",
                    'onclick' => rcmail_output::JS_OBJECT_NAME.".command('edit')"
                ],
                rcube::Q($rcmail->gettext('edit'))
            );

        return html::div($attrib, $msg);
    }

    /**
     * Handler for the template object 'messageobjects' that contains
     * warning/info boxes, buttons, etc. related to the displayed message.
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML content showing the message objects
     */
    public static function message_objects($attrib)
    {
        if (empty($attrib['id'])) {
            $attrib['id'] = 'message-objects';
        }

        $rcmail  = rcmail::get_instance();
        $content = [
            self::message_buttons(),
            self::remote_objects_msg(),
            self::suspicious_content_warning(),
        ];

        $plugin = $rcmail->plugins->exec_hook('message_objects',
            ['content' => $content, 'message' => self::$MESSAGE]);

        $content = implode("\n", $plugin['content']);

        return html::div($attrib, $content);
    }

    /**
     * Handler for the template object 'contactphoto'.
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML content for the IMG tag
     */
    public static function message_contactphoto($attrib)
    {
        $rcmail        = rcmail::get_instance();
        $error_handler = false;
        $placeholder   = 'data:image/gif;base64,' . rcmail_output::BLANK_GIF;

        if (!empty($attrib['placeholder'])) {
            $placeholder = $rcmail->output->abs_url($attrib['placeholder'], true);
            $placeholder = $rcmail->output->asset_url($placeholder);

            // set error handler on <img>
            $error_handler     = true;
            $attrib['onerror'] = "this.onerror = null; this.src = '$placeholder';";
        }

        if (!empty(self::$MESSAGE->sender)) {
            $photo_img = $rcmail->url([
                    '_task'   => 'addressbook',
                    '_action' => 'photo',
                    '_email'  => self::$MESSAGE->sender['mailto'],
                    '_error'  => $error_handler ? 1 : null,
                    '_bgcolor' => $attrib['bg-color'] ?? null
            ]);
        }
        else {
            $photo_img = $placeholder;
        }

        return html::img(['src' => $photo_img, 'alt' => $rcmail->gettext('contactphoto')] + $attrib);
    }

    /**
     * Returns table with message headers
     */
    public static function message_headers($attrib, $headers = null)
    {
        static $sa_attrib;

        // keep header table attrib
        if (is_array($attrib) && !$sa_attrib && empty($attrib['valueof'])) {
            $sa_attrib = $attrib;
        }
        else if (!is_array($attrib) && is_array($sa_attrib)) {
            $attrib = $sa_attrib;
        }

        if (!isset(self::$MESSAGE)) {
            return false;
        }

        $rcmail = rcmail::get_instance();

        // get associative array of headers object
        if (!$headers) {
            $headers_obj = self::$MESSAGE->headers;
            $headers     = get_object_vars(self::$MESSAGE->headers);
        }
        else if (is_object($headers)) {
            $headers_obj = $headers;
            $headers     = get_object_vars($headers_obj);
        }
        else {
            $headers_obj = rcube_message_header::from_array($headers);
        }

        // show these headers
        $standard_headers = ['subject', 'from', 'sender', 'to', 'cc', 'bcc', 'replyto',
            'mail-reply-to', 'mail-followup-to', 'date', 'priority'];
        $exclude_headers = !empty($attrib['exclude']) ? explode(',', $attrib['exclude']) : [];
        $output_headers  = [];

        $attr_max     = $attrib['max'] ?? null;
        $attr_addicon = $attrib['addicon'] ?? null;
        $charset      = !empty($headers['charset']) ? $headers['charset'] : null;

        foreach ($standard_headers as $hkey) {
            $value = null;
            if (!empty($headers[$hkey])) {
                $value = $headers[$hkey];
            }
            else if (!empty($headers['others'][$hkey])) {
                $value = $headers['others'][$hkey];
            }
            else if (empty($attrib['valueof'])) {
                continue;
            }

            if (in_array($hkey, $exclude_headers)) {
                continue;
            }

            $ishtml       = false;
            $header_title = $rcmail->gettext(preg_replace('/(^mail-|-)/', '', $hkey));
            $header_value = null;

            if ($hkey == 'date') {
                $header_value = $rcmail->format_date($value,
                    self::$PRINT_MODE ? $rcmail->config->get('date_long', 'x') : null);
            }
            else if ($hkey == 'priority') {
                $header_value = html::span('prio' . $value, rcube::Q(self::localized_priority($value)));
                $ishtml       = true;
            }
            else if ($hkey == 'replyto') {
                if ($value != $headers['from']) {
                    $header_value = self::address_string($value, $attr_max, true, $attr_addicon, $charset, $header_title);
                    $ishtml = true;
                }
            }
            else if ($hkey == 'mail-reply-to') {
                if ((!isset($headers['replyto']) || $value != $headers['replyto']) && $value != $headers['from']) {
                    $header_value = self::address_string($value, $attr_max, true, $attr_addicon, $charset, $header_title);
                    $ishtml = true;
                }
            }
            else if ($hkey == 'sender') {
                if ($value != $headers['from']) {
                    $header_value = self::address_string($value, $attr_max, true, $attr_addicon, $charset, $header_title);
                    $ishtml = true;
                }
            }
            else if ($hkey == 'mail-followup-to') {
                $header_value = self::address_string($value, $attr_max, true, $attr_addicon, $charset, $header_title);
                $ishtml = true;
            }
            else if (in_array($hkey, ['from', 'to', 'cc', 'bcc'])) {
                $header_value = self::address_string($value, $attr_max, true, $attr_addicon, $charset, $header_title);
                $ishtml = true;
            }
            else if ($hkey == 'subject' && empty($value)) {
                $header_value = $rcmail->gettext('nosubject');
            }
            else {
                $value        = is_array($value) ? implode(' ', $value) : $value;
                $header_value = trim(rcube_mime::decode_header($value, $charset));
            }

            if (empty($header_value)) {
                continue;
            }

            $output_headers[$hkey] = [
                'title' => $header_title,
                'value' => $header_value,
                'raw'   => $value,
                'html'  => $ishtml,
            ];
        }

        $plugin = $rcmail->plugins->exec_hook('message_headers_output', [
                'output'  => $output_headers,
                'headers' => $headers_obj,
                'exclude' => $exclude_headers,       // readonly
                'folder'  => self::$MESSAGE->folder, // readonly
                'uid'     => self::$MESSAGE->uid,    // readonly
        ]);

        // single header value is requested
        if (!empty($attrib['valueof'])) {
            if (empty($plugin['output'][$attrib['valueof']])) {
                return '';
            }

            $row = $plugin['output'][$attrib['valueof']];
            return !empty($row['html']) ? $row['value'] : rcube::SQ($row['value']);
        }

        // compose html table
        $table = new html_table(['cols' => 2]);

        foreach ($plugin['output'] as $hkey => $row) {
            $val = !empty($row['html']) ? $row['value'] : rcube::SQ($row['value']);

            $table->add(['class' => 'header-title'], rcube::SQ($row['title']));
            $table->add(['class' => 'header ' . $hkey], $val);
        }

        return $table->show($attrib);
    }

    /**
     * Returns element with "From|To <sender|recipient> on <date>"
     */
    public static function message_summary($attrib)
    {
        if (!isset(self::$MESSAGE) || empty(self::$MESSAGE->headers)) {
            return;
        }

        $rcmail = rcmail::get_instance();
        $header = self::$MESSAGE->context ? 'from' : self::message_list_smart_column_name();
        $label  = 'shortheader' . $header;
        $date   = $rcmail->format_date(self::$MESSAGE->headers->date, $rcmail->config->get('date_long', 'x'));
        $user   = self::$MESSAGE->headers->$header;

        if (!$user && $header == 'to' && !empty(self::$MESSAGE->headers->cc)) {
            $user = self::$MESSAGE->headers->cc;
        }
        if (!$user && $header == 'to' && !empty(self::$MESSAGE->headers->bcc)) {
            $user = self::$MESSAGE->headers->bcc;
        }

        $vars[$header] = self::address_string($user, 1, true, $attrib['addicon'], self::$MESSAGE->headers->charset);
        $vars['date']  = html::span('text-nowrap', $date);

        if (empty($user)) {
            $label = 'shortheaderdate';
        }

        $out = html::span(null, $rcmail->gettext(['name' => $label, 'vars' => $vars]));

        return html::div($attrib, $out);
    }

    /**
     * Convert Priority header value into a localized string
     */
    public static function localized_priority($value)
    {
        $labels_map = [
            '1' => 'highest',
            '2' => 'high',
            '3' => 'normal',
            '4' => 'low',
            '5' => 'lowest',
        ];

        if ($value && !empty($labels_map[$value])) {
            return rcmail::get_instance()->gettext($labels_map[$value]);
        }

        return '';
    }

    /**
     * Returns block to show full message headers
     */
    public static function message_full_headers($attrib)
    {
        $rcmail = rcmail::get_instance();

        $html = html::div(['id' => "all-headers", 'class' => "all", 'style' => 'display:none'],
            html::div(['id' => 'headers-source'], ''));

        $html .= html::div([
                'class'   => "more-headers show-headers",
                'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('show-headers','',this)",
                'title'   => $rcmail->gettext('togglefullheaders')
            ], '');

        $rcmail->output->add_gui_object('all_headers_row', 'all-headers');
        $rcmail->output->add_gui_object('all_headers_box', 'headers-source');

        return html::div($attrib, $html);
    }

    /**
     * Handler for the 'messagebody' GUI object
     *
     * @param array $attrib Named parameters
     *
     * @return string HTML content showing the message body
     */
    public static function message_body($attrib)
    {
        if (
            empty(self::$MESSAGE)
            || (!is_array(self::$MESSAGE->parts) && empty(self::$MESSAGE->body))
        ) {
            return '';
        }

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmailMsgBody';
        }

        $rcmail    = rcmail::get_instance();
        $safe_mode = self::$MESSAGE->is_safe || !empty($_GET['_safe']);
        $out       = '';
        $part_no   = 0;

        $header_attrib = [];
        foreach ($attrib as $attr => $value) {
            if (preg_match('/^headertable([a-z]+)$/i', $attr, $regs)) {
                $header_attrib[$regs[1]] = $value;
            }
        }

        if (!empty(self::$MESSAGE->parts)) {
            foreach (self::$MESSAGE->parts as $part) {
                if ($part->type == 'headers') {
                    $out .= html::div('message-partheaders', self::message_headers(count($header_attrib) ? $header_attrib : null, $part->headers));
                }
                else if ($part->type == 'content') {
                    // unsupported (e.g. encrypted)
                    if (!empty($part->realtype)) {
                        if ($part->realtype == 'multipart/encrypted' || $part->realtype == 'application/pkcs7-mime') {
                            if (
                                !empty($_SESSION['browser_caps']['pgpmime'])
                                && ($pgp_mime_part = self::$MESSAGE->get_multipart_encrypted_part())
                            ) {
                                $out .= html::span('part-notice', $rcmail->gettext('externalmessagedecryption'));
                                $rcmail->output->set_env('pgp_mime_part', $pgp_mime_part->mime_id);
                                $rcmail->output->set_env('pgp_mime_container', '#' . $attrib['id']);
                                $rcmail->output->add_label('loadingdata');
                            }

                            if (!self::$MESSAGE->encrypted_part) {
                                $out .= html::span('part-notice', $rcmail->gettext('encryptedmessage'));
                            }
                        }
                        continue;
                    }
                    else if (!$part->size) {
                        continue;
                    }
                    // Check if we have enough memory to handle the message in it
                    // #1487424: we need up to 10x more memory than the body
                    else if (!rcube_utils::mem_check($part->size * 10)) {
                        $out .= self::part_too_big_message(self::$MESSAGE, $part->mime_id);
                        continue;
                    }

                    // fetch part body
                    $body = self::$MESSAGE->get_part_body($part->mime_id, true);

                    // message is cached but not exists (#1485443), or other error
                    if ($body === false) {
                        // Don't bail out if it is only one-of-many part of the message (#6854)
                        if (strlen($out)) {
                            $out .= html::span('part-notice', $rcmail->gettext('messageopenerror'));
                            continue;
                        }

                        self::message_error();
                    }

                    $plugin = $rcmail->plugins->exec_hook('message_body_prefix',
                        ['part' => $part, 'prefix' => '', 'message' => self::$MESSAGE]);

                    // Set attributes of the part container
                    $container_class  = $part->ctype_secondary == 'html' ? 'message-htmlpart' : 'message-part';
                    $container_id     = $container_class . (++$part_no);
                    $container_attrib = ['class' => $container_class, 'id' => $container_id];

                    $body_args = [
                        'safe'         => $safe_mode,
                        'plain'        => !$rcmail->config->get('prefer_html'),
                        'css_prefix'   => 'v' . $part_no,
                        'body_class'   => 'rcmBody',
                        'container_id'     => $container_id,
                        'container_attrib' => $container_attrib,
                    ];

                    // Parse the part content for display
                    $body = self::print_body($body, $part, $body_args);

                    // check if the message body is PGP encrypted
                    if (strpos($body, '-----BEGIN PGP MESSAGE-----') !== false) {
                        $rcmail->output->set_env('is_pgp_content', '#' . $container_id);
                    }

                    if ($part->ctype_secondary == 'html') {
                        $body = self::html4inline($body, $body_args);
                    }

                    $out .= html::div($body_args['container_attrib'], $plugin['prefix'] . $body);
                }
            }
        }
        else {
            // Check if we have enough memory to handle the message in it
            // #1487424: we need up to 10x more memory than the body
            if (isset(self::$MESSAGE->body) && !rcube_utils::mem_check(strlen(self::$MESSAGE->body) * 10)) {
                $out .= self::part_too_big_message(self::$MESSAGE, 0);
            }
            else {
                $plugin = $rcmail->plugins->exec_hook('message_body_prefix',
                    ['part' => self::$MESSAGE, 'prefix' => '']);

                $out .= html::div('message-part',
                    $plugin['prefix'] . self::plain_body(self::$MESSAGE->body));
            }
        }

        // list images after mail body
        if ($rcmail->config->get('inline_images', true) && !empty(self::$MESSAGE->attachments)) {
            $thumbnail_size   = $rcmail->config->get('image_thumbnail_size', 240);
            $show_label       = rcube::Q($rcmail->gettext('showattachment'));
            $download_label   = rcube::Q($rcmail->gettext('download'));

            foreach (self::$MESSAGE->attachments as $attach_prop) {
                // Content-Type: image/*...
                if ($mimetype = self::part_image_type($attach_prop)) {
                    // Skip inline images
                    if (!self::is_attachment(self::$MESSAGE, $attach_prop)) {
                        continue;
                    }

                    // display thumbnails
                    if ($thumbnail_size) {
                        $supported = in_array($mimetype, self::$CLIENT_MIMETYPES);
                        $show_link_attr = [
                            'href'    => self::$MESSAGE->get_part_url($attach_prop->mime_id, false),
                            'onclick' => sprintf(
                                '%s.command(\'load-attachment\',\'%s\',this); return false',
                                rcmail_output::JS_OBJECT_NAME,
                                $attach_prop->mime_id
                            )
                        ];
                        $download_link_attr = [
                            'href'  => $show_link_attr['href'] . '&_download=1',
                        ];
                        $show_link     = html::a($show_link_attr + ['class' => 'open'], $show_label);
                        $download_link = html::a($download_link_attr + ['class' => 'download'], $download_label);

                        $out .= html::p(['class' => 'image-attachment', 'style' => $supported ? '' : 'display:none'],
                            html::a($show_link_attr + ['class' => 'image-link', 'style' => sprintf('width:%dpx', $thumbnail_size)],
                                html::img([
                                    'class' => 'image-thumbnail',
                                    'src'   => self::$MESSAGE->get_part_url($attach_prop->mime_id, 'image') . '&_thumb=1',
                                    'title' => $attach_prop->filename,
                                    'alt'   => $attach_prop->filename,
                                    'style' => sprintf('max-width:%dpx; max-height:%dpx', $thumbnail_size, $thumbnail_size),
                                    'onload' => $supported ? '' : '$(this).parents(\'p.image-attachment\').show()',
                                ])
                            ) .
                            html::span('image-filename', rcube::Q($attach_prop->filename)) .
                            html::span('image-filesize', rcube::Q(self::message_part_size($attach_prop))) .
                            html::span('attachment-links', ($supported ? $show_link . '&nbsp;' : '') . $download_link) .
                            html::br(['style' => 'clear:both'])
                        );
                    }
                    else {
                        $out .= html::tag('fieldset', 'image-attachment',
                            html::tag('legend', 'image-filename', rcube::Q($attach_prop->filename)) .
                            html::p(['align' => 'center'],
                                html::img([
                                    'src'   => self::$MESSAGE->get_part_url($attach_prop->mime_id, 'image'),
                                    'title' => $attach_prop->filename,
                                    'alt'   => $attach_prop->filename,
                                ])
                            )
                        );
                    }
                }
            }
        }

        // tell client that there are blocked remote objects
        if (self::$REMOTE_OBJECTS && !$safe_mode) {
            $rcmail->output->set_env('blockedobjects', true);
        }

        $rcmail->output->add_gui_object('messagebody', $attrib['id']);

        return html::div($attrib, $out);
    }

    /**
     * Returns a HTML notice element for too big message parts
     *
     * @param rcube_message $message Email message object
     * @param string        $part_id Message part identifier
     *
     * @return string HTML content
     */
    public static function part_too_big_message($message, $part_id)
    {
        $rcmail = rcmail::get_instance();
        $token  = $rcmail->get_request_token();
        $url    = $rcmail->url([
                'task'     => 'mail',
                'action'   => 'get',
                'download' => 1,
                'uid'      => $message->uid,
                'part'     => $part_id,
                'mbox'     => $message->folder,
                'token'    => $token,
        ]);

        return html::span('part-notice', $rcmail->gettext('messagetoobig')
            . '&nbsp;' . html::a($url, $rcmail->gettext('download')));
    }

    /**
     * Handle disposition notification requests
     *
     * @param rcube_message $message Email message object
     */
    public static function mdn_request_handler($message)
    {
        $rcmail = rcmail::get_instance();

        if ($message->headers->mdn_to
            && $message->context === null
            && !empty($message->sender['mailto'])
            && empty($message->headers->flags['MDNSENT'])
            && empty($message->headers->flags['SEEN'])
            && ($rcmail->storage->check_permflag('MDNSENT') || $rcmail->storage->check_permflag('*'))
            && $message->folder != $rcmail->config->get('drafts_mbox')
            && $message->folder != $rcmail->config->get('sent_mbox')
        ) {
            $mdn_cfg = intval($rcmail->config->get('mdn_requests'));
            $exists  = $mdn_cfg == 1;

            // Check sender existence in contacts
            // 3 and 4 = my contacts, 5 and 6 = trusted senders
            if ($mdn_cfg == 3 || $mdn_cfg == 4 || $mdn_cfg == 5 || $mdn_cfg == 6) {
                $type = rcube_addressbook::TYPE_TRUSTED_SENDER;

                if ($mdn_cfg == 3 || $mdn_cfg == 4) {
                    $type |= rcube_addressbook::TYPE_WRITEABLE | rcube_addressbook::TYPE_RECIPIENT;
                }

                if ($rcmail->contact_exists($message->sender['mailto'], $type)) {
                    $exists = 1;
                }
            }

            if ($exists) {
                // Send MDN
                if (rcmail_action_mail_sendmdn::send_mdn($message, $smtp_error)) {
                    $rcmail->output->show_message('receiptsent', 'confirmation');
                }
                else if ($smtp_error && is_string($smtp_error)) {
                    $rcmail->output->show_message($smtp_error, 'error');
                }
                else if ($smtp_error && !empty($smtp_error['label'])) {
                    $rcmail->output->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
                }
                else {
                    $rcmail->output->show_message('errorsendingreceipt', 'error');
                }
            }
            else if ($mdn_cfg != 2 && $mdn_cfg != 4 && $mdn_cfg != 6) {
                // Ask the user
                $rcmail->output->add_label('sendreceipt', 'mdnrequest', 'send', 'sendalwaysto', 'ignore');
                $rcmail->output->set_env('mdn_request_save', $mdn_cfg == 3 || $mdn_cfg == 5 ? $mdn_cfg : 0);
                $rcmail->output->set_env('mdn_request_sender', $message->sender);
                $rcmail->output->set_env('mdn_request', true);
            }
        }
    }

    /**
     * Check whether the message part is a normal attachment
     *
     * @param rcube_message      $message Message object
     * @param rcube_message_part $part    Message part
     *
     * @return bool
     */
    protected static function is_attachment($message, $part)
    {
        // Inline attachment with Content-Id specified
        if (!empty($part->content_id) && $part->disposition == 'inline') {
            return false;
        }

        // Any image attached to multipart/related message (#7184)
        $parent_id = preg_replace('/\.[0-9]+$/', '', $part->mime_id);
        $parent = $message->mime_parts[$parent_id] ?? null;

        if ($parent && $parent->mimetype == 'multipart/related') {
            return false;
        }

        return true;
    }
}
actions/mail/move.php000064400000014527151727150620010624 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handler for mail move operation                                     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_move extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // count messages before changing anything
        $threading = (bool) $rcmail->storage->get_threading();
        $trash     = $rcmail->config->get('trash_mbox');
        $old_count = 0;

        if (empty($_POST['_from']) || $_POST['_from'] != 'show') {
            $old_count = $rcmail->storage->count(null, $threading ? 'THREADS' : 'ALL');
        }

        $target  = rcube_utils::get_input_string('_target_mbox', rcube_utils::INPUT_POST, true);

        if (empty($_POST['_uid']) || !strlen($target)) {
            $rcmail->output->show_message('internalerror', 'error');
            $rcmail->output->send();
        }

        $success = true;
        $addrows = false;
        $count   = 0;
        $sources = [];

        foreach (rcmail::get_uids(null, null, $multifolder, rcube_utils::INPUT_POST) as $mbox => $uids) {
            if ($mbox === $target) {
                $count += is_array($uids) ? count($uids) : 1;
            }
            else if ($rcmail->storage->move_message($uids, $target, $mbox)) {
                $count += is_array($uids) ? count($uids) : 1;
                $sources[] = $mbox;
            }
            else {
                $success = false;
            }
        }

        if (!$success) {
            // send error message
            if (empty($_POST['_from']) || $_POST['_from'] != 'show') {
                $rcmail->output->command('list_mailbox');
            }

            self::display_server_error('errormoving', null, $target == $trash ? 'delete' : '');
            $rcmail->output->send();
        }
        else {
            $rcmail->output->show_message($target == $trash ? 'messagemovedtotrash' : 'messagemoved', 'confirmation');
        }

        if (!empty($_POST['_refresh'])) {
            // FIXME: send updated message rows instead of reloading the entire list
            $rcmail->output->command('refresh_list');
        }
        else {
            $addrows = true;
        }

        $search_request = rcube_utils::get_input_string('_search', rcube_utils::INPUT_GPC);

        // refresh saved search set after moving some messages
        if ($search_request && $rcmail->storage->get_search_set()) {
            $_SESSION['search'] = $rcmail->storage->refresh_search();
        }

        if (!empty($_POST['_from']) && $_POST['_from'] == 'show') {
            if ($next = rcube_utils::get_input_string('_next_uid', rcube_utils::INPUT_GPC)) {
                $rcmail->output->command('show_message', $next);
            }
            else {
                $rcmail->output->command('command', 'list');
            }

            $rcmail->output->send();
        }

        $mbox           = $rcmail->storage->get_folder();
        $msg_count      = $rcmail->storage->count(null, $threading ? 'THREADS' : 'ALL');
        $exists         = $rcmail->storage->count($mbox, 'EXISTS', true);
        $page_size      = $rcmail->storage->get_pagesize();
        $page           = $rcmail->storage->get_page();
        $pages          = ceil($msg_count / $page_size);
        $nextpage_count = $old_count - $page_size * $page;
        $remaining      = $msg_count - $page_size * ($page - 1);

        // jump back one page (user removed the whole last page)
        if ($page > 1 && $remaining == 0) {
            $page -= 1;
            $rcmail->storage->set_page($page);
            $_SESSION['page'] = $page;
            $jump_back = true;
        }

        // update unseen messages counts for all involved folders
        foreach ($sources as $source) {
            self::send_unread_count($source, true);
        }

        self::send_unread_count($target, true);

        // update message count display
        $rcmail->output->set_env('messagecount', $msg_count);
        $rcmail->output->set_env('current_page', $page);
        $rcmail->output->set_env('pagecount', $pages);
        $rcmail->output->set_env('exists', $exists);
        $rcmail->output->command('set_quota', self::quota_content(null, $multifolder ? $sources[0] : 'INBOX'));
        $rcmail->output->command('set_rowcount', self::get_messagecount_text($msg_count), $mbox);

        if ($threading) {
            $count = rcube_utils::get_input_string('_count', rcube_utils::INPUT_POST);
        }

        // add new rows from next page (if any)
        if ($addrows && $count && $_POST['_uid'] != '*' && (!empty($jump_back) || $nextpage_count > 0)) {
            // #5862: Don't add more rows than it was on the next page
            $count = !empty($jump_back) ? null : min($nextpage_count, $count);

            $a_headers = $rcmail->storage->list_messages($mbox, NULL,
                self::sort_column(), self::sort_order(), $count);

            self::js_message_list($a_headers, false);
        }

        // set trash folder state
        if ($mbox === $trash) {
            $rcmail->output->command('set_trash_count', $exists);
        }
        else if ($target === $trash) {
            $rcmail->output->command('set_trash_count', $rcmail->storage->count($trash, 'EXISTS', true));
        }

        // send response
        $rcmail->output->send();
    }
}
actions/mail/folder_purge.php000064400000006571151727150620012333 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Implement folder PURGE request                                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_folder_purge extends rcmail_action_mail_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail       = rcmail::get_instance();
        $storage      = $rcmail->get_storage();
        $delimiter    = $storage->get_hierarchy_delimiter();
        $mbox         = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);
        $trash_mbox   = $rcmail->config->get('trash_mbox');
        $trash_regexp = '/^' . preg_quote($trash_mbox . $delimiter, '/') . '/';

        // we should only be purging trash (or their subfolders)
        if (!strlen($trash_mbox) || $mbox === $trash_mbox || preg_match($trash_regexp, $mbox)) {
            $success = $storage->delete_message('*', $mbox);
            $delete  = true;
        }
        // move to Trash
        else {
            $success = $storage->move_message('1:*', $trash_mbox, $mbox);
            $delete  = false;
        }

        if ($success) {
            $rcmail->output->show_message('folderpurged', 'confirmation');
            $rcmail->output->command('set_unread_count', $mbox, 0);
            self::set_unseen_count($mbox, 0);

            // set trash folder state
            if ($mbox === $trash_mbox) {
                $rcmail->output->command('set_trash_count', 0);
            }
            else if (strlen($trash_mbox)) {
                $rcmail->output->command('set_trash_count', $rcmail->storage->count($trash_mbox, 'EXISTS'));
            }

            if (!$delete && strlen($trash_mbox)) {
                self::send_unread_count($trash_mbox, true);
            }

            if (!empty($_REQUEST['_reload'])) {
                $rcmail->output->set_env('messagecount', 0);
                $rcmail->output->set_env('pagecount', 0);
                $rcmail->output->set_env('exists', 0);
                $rcmail->output->command('message_list.clear');
                $rcmail->output->command('set_rowcount', self::get_messagecount_text(), $mbox);
                $rcmail->output->command('set_quota', self::quota_content(null, $mbox));
            }
        }
        else {
            self::display_server_error();
        }

        $rcmail->output->send();
    }
}
actions/mail/headers.php000064400000006001151727150620011255 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Fetch message headers in raw format for display                     |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_headers extends rcmail_action_mail_index
{
    protected static $source;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $uid    = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GP);
        $inline = $rcmail->output instanceof rcmail_output_html;

        if (!$uid) {
            exit;
        }

        if ($pos = strpos($uid, '.')) {
            $message = new rcube_message($uid);
            $source  = $message->get_part_body(substr($uid, $pos + 1));
            $source  = substr($source, 0, strpos($source, "\r\n\r\n"));
        }
        else {
            $source = $rcmail->storage->get_raw_headers($uid);
        }

        if ($source !== false) {
            $source = trim(rcube_charset::clean($source));
            $source = htmlspecialchars($source, ENT_COMPAT | ENT_HTML401, RCUBE_CHARSET);
            $source = preg_replace(
                [
                    '/\n[\t\s]+/',
                    '/^([a-z0-9_:-]+)/im',
                    '/\r?\n/'
                ],
                [
                    "\n&nbsp;&nbsp;&nbsp;&nbsp;",
                    '<font class="bold">\1</font>',
                    '<br />'
                ],
                $source
            );

            self::$source = $source;

            $rcmail->output->add_handlers(['dialogcontent' => [$this, 'headers_output']]);

            if ($inline) {
                $rcmail->output->set_env('dialog_class', 'text-nowrap');
            }
            else {
                $rcmail->output->command('set_headers', $source);
            }
        }
        else if (!$inline) {
            $rcmail->output->show_message('messageopenerror', 'error');
        }

        $rcmail->output->send($inline ? 'dialog' : null);
    }

    public static function headers_output()
    {
        return self::$source;
    }
}
actions/mail/list_contacts.php000064400000021404151727150620012517 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Send contacts list to client (as remote response)                   |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_list_contacts extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail        = rcmail::get_instance();
        $source        = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $afields       = $rcmail->config->get('contactlist_fields');
        $addr_sort_col = $rcmail->config->get('addressbook_sort_col', 'name');
        $page_size     = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));
        $list_page     = max(1, $_GET['_page'] ?? 0);
        $jsresult      = [];

        // Use search result
        if (!empty($_REQUEST['_search']) && isset($_SESSION['contact_search'][$_REQUEST['_search']])) {
            $search  = (array) $_SESSION['contact_search'][$_REQUEST['_search']];
            $sparam  = $_SESSION['contact_search_params']['id'] == $_REQUEST['_search'] ? $_SESSION['contact_search_params']['data'] : [];
            $mode    = (int) $rcmail->config->get('addressbook_search_mode');
            $records = [];

            // get records from all sources
            foreach ($search as $s => $set) {
                $CONTACTS = $rcmail->get_address_book($s);

                // list matching groups of this source (on page one)
                if ($sparam[1] && $CONTACTS->groups && $list_page == 1) {
                    $jsresult += self::compose_contact_groups($CONTACTS, $s, $sparam[1], $mode);
                }

                // reset page
                $CONTACTS->set_page(1);
                $CONTACTS->set_pagesize(9999);
                $CONTACTS->set_search_set($set);

                // get records
                $result = $CONTACTS->list_records($afields);

                while ($row = $result->next()) {
                    $row['sourceid'] = $s;
                    $key = rcube_addressbook::compose_contact_key($row, $addr_sort_col);
                    $records[$key] = $row;
                }
                unset($result);
            }

            // sort the records
            ksort($records, SORT_LOCALE_STRING);

            // create resultset object
            $count  = count($records);
            $first  = ($list_page-1) * $page_size;
            $result = new rcube_result_set($count, $first);

            // we need only records for current page
            if ($page_size < $count) {
                $records = array_slice($records, $first, $page_size);
            }

            $result->records = array_values($records);
        }
        // list contacts from selected source
        else {
            $CONTACTS = $rcmail->get_address_book($source);

            if ($CONTACTS && $CONTACTS->ready) {
                // set list properties
                $CONTACTS->set_pagesize($page_size);
                $CONTACTS->set_page($list_page);

                if ($group_id = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_GET)) {
                    $CONTACTS->set_group($group_id);
                }
                // list groups of this source (on page one)
                else if ($CONTACTS->groups && $CONTACTS->list_page == 1) {
                    $jsresult = self::compose_contact_groups($CONTACTS, $source);
                }

                // get contacts for this user
                $result = $CONTACTS->list_records($afields);
            }
        }

        if (!empty($result) && !$result->count && $result->searchonly) {
            $rcmail->output->show_message('contactsearchonly', 'notice');
        }
        else if (!empty($result) && $result->count > 0) {
            // create javascript list
            while ($row = $result->next()) {
                $name = rcube_addressbook::compose_list_name($row);

                // add record for every email address of the contact
                $emails = rcube_addressbook::get_col_values('email', $row, true);
                foreach ($emails as $i => $email) {
                    $source    = !empty($row['sourceid']) ? $row['sourceid'] : $source;
                    $row_id    = $source.'-'.$row['ID'].'-'.$i;
                    $is_group  = isset($row['_type']) && $row['_type'] == 'group';
                    $classname = $is_group ? 'group' : 'person';
                    $keyname   = $is_group ? 'contactgroup' : 'contact';

                    $jsresult[$row_id] = format_email_recipient($email, $name);

                    $rcmail->output->command('add_contact_row', $row_id, [
                            $keyname => html::a(
                                ['title' => $email],
                                rcube::Q($name ?: $email)
                                . ($name && count($emails) > 1 ? '&nbsp;' . html::span('email', rcube::Q($email)) : '')
                            )
                        ],
                        $classname
                    );
                }
            }
        }

        // update env
        $rcmail->output->set_env('contactdata', $jsresult);
        $rcmail->output->set_env('pagecount', isset($result) ? ceil($result->count / $page_size) : 1);
        $rcmail->output->command('set_page_buttons');

        // send response
        $rcmail->output->send();
    }

    /**
     * Add groups from the given address source to the address book widget
     */
    public static function compose_contact_groups($abook, $source_id, $search = null, $search_mode = 0)
    {
        $rcmail   = rcmail::get_instance();
        $jsresult = [];

        foreach ($abook->list_groups($search, $search_mode) as $group) {
            $abook->reset();
            $abook->set_group($group['ID']);

            // group (distribution list) with email address(es)
            if (!empty($group['email'])) {
                foreach ((array) $group['email'] as $email) {
                    $row_id = 'G'.$group['ID'];
                    $jsresult[$row_id] = format_email_recipient($email, $group['name']);
                    $rcmail->output->command('add_contact_row', $row_id, [
                            'contactgroup' => html::span(['title' => $email], rcube::Q($group['name']))
                        ], 'group');
                }
            }
            // make virtual groups clickable to list their members
            else if (!empty($group['virtual'])) {
                $row_id = 'G'.$group['ID'];
                $rcmail->output->command('add_contact_row', $row_id, [
                        'contactgroup' => html::a([
                                'href' => '#list',
                                'rel' => $group['ID'],
                                'title' => $rcmail->gettext('listgroup'),
                                'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)",
                                    rcmail_output::JS_OBJECT_NAME, $source_id, $group['ID']),
                            ],
                            rcube::Q($group['name']) . '&nbsp;' . html::span('action', '&raquo;')
                    )],
                    'group',
                    ['ID' => $group['ID'], 'name' => $group['name'], 'virtual' => true]
                );
            }
            // show group with count
            else if (($result = $abook->count()) && $result->count) {
                $row_id = 'E'.$group['ID'];
                $jsresult[$row_id] = ['name' => $group['name'], 'source' => $source_id];
                $rcmail->output->command('add_contact_row', $row_id, [
                        'contactgroup' => rcube::Q($group['name'] . ' (' . intval($result->count) . ')')
                    ], 'group');
            }
        }

        $abook->reset();
        $abook->set_group(0);

        return $jsresult;
    }

}
actions/mail/attachment_delete.php000064400000003627151727150620013327 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Delete attachments from compose form                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_attachment_delete extends rcmail_action_mail_attachment_upload
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        self::init();

        $rcmail     = rcmail::get_instance();
        $attachment = self::get_attachment();

        if (is_array($attachment)) {
            $attachment = $rcmail->plugins->exec_hook('attachment_delete', $attachment);

            if (!empty($attachment['status'])) {
                $rcmail->session->remove(self::$SESSION_KEY . '.attachments.' . self::$file_id);
                $rcmail->output->command('remove_from_attachment_list', 'rcmfile' . self::$file_id);
            }
        }

        $rcmail->output->send();
    }
}
actions/mail/pagenav.php000064400000006054151727150620011273 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Updates message page navigation controls                            |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_pagenav extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $uid    = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GET);
        $index  = $rcmail->storage->index(null, self::sort_column(), self::sort_order());
        $cnt    = $index->count_messages();

        if ($cnt && ($pos = $index->exists($uid, true)) !== false) {
            $prev  = $pos ? $index->get_element($pos-1) : 0;
            $first = $pos ? $index->get_element('FIRST') : 0;
            $next  = $pos < $cnt-1 ? $index->get_element($pos+1) : 0;
            $last  = $pos < $cnt-1 ? $index->get_element('LAST') : 0;
        }
        else {
            // error, this will at least disable page navigation
            $rcmail->output->command('set_rowcount', '');
            $rcmail->output->send();
        }

        // Set UIDs and activate navigation buttons
        if (!empty($prev)) {
            $rcmail->output->set_env('prev_uid', $prev);
            $rcmail->output->command('enable_command', 'previousmessage', 'firstmessage', true);
        }

        if (!empty($next)) {
            $rcmail->output->set_env('next_uid', $next);
            $rcmail->output->command('enable_command', 'nextmessage', 'lastmessage', true);
        }

        if (!empty($first)) {
            $rcmail->output->set_env('first_uid', $first);
        }

        if (!empty($last)) {
            $rcmail->output->set_env('last_uid', $last);
        }

        // Don't need a real messages count value
        $rcmail->output->set_env('messagecount', 1);

        // Set rowcount text
        $rcmail->output->command('set_rowcount', $rcmail->gettext([
                'name' => 'messagenrof',
                'vars' => ['nr'  => ($pos ?? 0) + 1, 'count' => $cnt]
        ]));

        $rcmail->output->send();
    }
}
actions/mail/list.php000064400000015254151727150620010627 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Send message list to client (as remote response)                    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_list extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail        = rcmail::get_instance();
        $save_arr      = [];
        $dont_override = (array) $rcmail->config->get('dont_override');

        $sort = rcube_utils::get_input_string('_sort', rcube_utils::INPUT_GET);
        $cols = rcube_utils::get_input_string('_cols', rcube_utils::INPUT_GET);
        $layout = rcube_utils::get_input_string('_layout', rcube_utils::INPUT_GET);

        // is there a sort type for this request?
        if ($sort && preg_match('/^[a-zA-Z_-]+$/', $sort)) {
            // yes, so set the sort vars
            list($sort_col, $sort_order) = explode('_', $sort);

            // set session vars for sort (so next page and task switch know how to sort)
            if (!in_array('message_sort_col', $dont_override)) {
                $_SESSION['sort_col'] = $save_arr['message_sort_col'] = $sort_col;
            }
            if (!in_array('message_sort_order', $dont_override)) {
                $_SESSION['sort_order'] = $save_arr['message_sort_order'] = $sort_order;
            }
        }

        // is there a set of columns for this request?
        if ($cols && preg_match('/^[a-zA-Z_,-]+$/', $cols)) {
            $_SESSION['list_attrib']['columns'] = explode(',', $cols);
            if (!in_array('list_cols', $dont_override)) {
                $save_arr['list_cols'] = explode(',', $cols);
            }
        }

        // register layout change
        if ($layout && preg_match('/^[a-zA-Z_-]+$/', $layout)) {
            $rcmail->output->set_env('layout', $layout);
            $save_arr['layout'] = $layout;
            // force header replace on layout change
            if (!empty($_SESSION['list_attrib']['columns'])) {
                $cols = $_SESSION['list_attrib']['columns'];
            }
        }

        if (!empty($save_arr)) {
            $rcmail->user->save_prefs($save_arr);
        }

        $mbox_name = $rcmail->storage->get_folder();
        $threading = (bool) $rcmail->storage->get_threading();

        // Synchronize mailbox cache, handle flag changes
        $rcmail->storage->folder_sync($mbox_name);

        // fetch message headers
        $a_headers = [];
        if ($count = $rcmail->storage->count($mbox_name, $threading ? 'THREADS' : 'ALL', !empty($_REQUEST['_refresh']))) {
            $a_headers = $rcmail->storage->list_messages($mbox_name, null, self::sort_column(), self::sort_order());
        }

        // update search set (possible change of threading mode)
        if (!empty($_REQUEST['_search']) && isset($_SESSION['search'])
            && $_SESSION['search_request'] == $_REQUEST['_search']
        ) {
            $search_request = $_REQUEST['_search'];
            $_SESSION['search'] = $rcmail->storage->get_search_set();
            $multifolder = !empty($_SESSION['search']) && !empty($_SESSION['search'][1]->multi);
        }
        // remove old search data
        else if (empty($_REQUEST['_search']) && isset($_SESSION['search'])) {
            $rcmail->session->remove('search');
        }

        self::list_pagetitle();

        // update mailboxlist
        if (empty($search_request)) {
            self::send_unread_count($mbox_name, !empty($_REQUEST['_refresh']), empty($a_headers) ? 0 : null);
        }

        // update message count display
        $pages  = ceil($count / $rcmail->storage->get_pagesize());
        $page   = $count ? $rcmail->storage->get_page() : 1;
        $exists = $rcmail->storage->count($mbox_name, 'EXISTS', true);

        $rcmail->output->set_env('messagecount', $count);
        $rcmail->output->set_env('pagecount', $pages);
        $rcmail->output->set_env('threading', $threading);
        $rcmail->output->set_env('current_page', $page);
        $rcmail->output->set_env('exists', $exists);
        $rcmail->output->command('set_rowcount', self::get_messagecount_text($count), $mbox_name);

        // remove old message rows if commanded by the client
        if (!empty($_REQUEST['_clear'])) {
            $rcmail->output->command('clear_message_list');
        }

        // add message rows
        self::js_message_list($a_headers, false, $cols);

        if (!empty($a_headers)) {
            if (!empty($search_request)) {
                $rcmail->output->show_message('searchsuccessful', 'confirmation', ['nr' => $count]);
            }

            // remember last HIGHESTMODSEQ value (if supported)
            // we need it for flag updates in check-recent
            $data = $rcmail->storage->folder_data($mbox_name);
            if (!empty($data['HIGHESTMODSEQ'])) {
                $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
            }
        }
        else {
            // handle IMAP errors (e.g. #1486905)
            if ($err_code = $rcmail->storage->get_error_code()) {
                self::display_server_error();
            }
            else if (!empty($search_request)) {
                $rcmail->output->show_message('searchnomatch', 'notice');
            }
            else {
                $rcmail->output->show_message('nomessagesfound', 'notice');
            }
        }

        // set trash folder state
        if ($mbox_name === $rcmail->config->get('trash_mbox')) {
            $rcmail->output->command('set_trash_count', $exists);
        }

        if ($page == 1) {
            $rcmail->output->command('set_quota', self::quota_content(null, !empty($multifolder) ? 'INBOX' : $mbox_name));
        }

        // send response
        $rcmail->output->send();
    }
}
actions/mail/index.php000064400000200026151727150620010754 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide webmail functionality and GUI objects                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_index extends rcmail_action
{
    public static $aliases = [
        'refresh'            => 'check-recent',
        'preview'            => 'show',
        'print'              => 'show',
        'expunge'            => 'folder-expunge',
        'purge'              => 'folder-purge',
        'remove-attachment'  => 'attachment-delete',
        'rename-attachment'  => 'attachment-rename',
        'display-attachment' => 'attachment-display',
        'upload'             => 'attachment-upload',
    ];

    protected static $PRINT_MODE = false;
    protected static $REMOTE_OBJECTS;
    protected static $SUSPICIOUS_EMAIL = false;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // always instantiate storage object (but not connect to server yet)
        $rcmail->storage_init();

        // init environment - set current folder, page, list mode
        self::init_env();

        // set message set for search result
        if (
            !empty($_REQUEST['_search'])
            && isset($_SESSION['search'])
            && isset($_SESSION['search_request'])
            && $_SESSION['search_request'] == $_REQUEST['_search']
        ) {
            $rcmail->storage->set_search_set($_SESSION['search']);

            $rcmail->output->set_env('search_request', $_REQUEST['_search']);
            $rcmail->output->set_env('search_text', $_SESSION['last_text_search']);
        }

        // remove mbox part from _uid
        $uid = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GPC);
        if ($uid && preg_match('/^\d+-.+/', $uid)) {
            list($uid, $mbox) = explode('-', $uid, 2);
            if (isset($_GET['_uid'])) {
                $_GET['_uid'] = $uid;
            }
            if (isset($_POST['_uid'])) {
                $_POST['_uid'] = $uid;
            }
            $_REQUEST['_uid'] = $uid;

            // override mbox
            if (!empty($mbox)) {
                $_GET['_mbox']  = $mbox;
                $_POST['_mbox'] = $mbox;
                $rcmail->storage->set_folder($_SESSION['mbox'] = $mbox);
            }
        }

        if (!empty($_SESSION['browser_caps']) && !$rcmail->output->ajax_call) {
            $rcmail->output->set_env('browser_capabilities', $_SESSION['browser_caps']);
        }

        // set main env variables, labels and page title
        if (empty($rcmail->action) || $rcmail->action == 'list') {
            // connect to storage server and trigger error on failure
            $rcmail->storage_connect();

            $mbox_name = $rcmail->storage->get_folder();

            if (empty($rcmail->action)) {
                $rcmail->output->set_env('search_mods', self::search_mods());

                $scope = rcube_utils::get_input_string('_scope', rcube_utils::INPUT_GET);
                if (!$scope && isset($_SESSION['search_scope']) && $rcmail->output->get_env('search_request')) {
                    $scope = $_SESSION['search_scope'];
                }

                if ($scope && preg_match('/^(all|sub)$/i', $scope)) {
                    $rcmail->output->set_env('search_scope', strtolower($scope));
                }

                self::list_pagetitle();
            }

            $threading = (bool) $rcmail->storage->get_threading();
            $delimiter = $rcmail->storage->get_hierarchy_delimiter();

            // set current mailbox and some other vars in client environment
            $rcmail->output->set_env('mailbox', $mbox_name);
            $rcmail->output->set_env('pagesize', $rcmail->storage->get_pagesize());
            $rcmail->output->set_env('current_page', max(1, $_SESSION['page'] ?? 1));
            $rcmail->output->set_env('delimiter', $delimiter);
            $rcmail->output->set_env('threading', $threading);
            $rcmail->output->set_env('threads', $threading || $rcmail->storage->get_capability('THREAD'));
            $rcmail->output->set_env('reply_all_mode', (int) $rcmail->config->get('reply_all_mode'));
            $rcmail->output->set_env('layout', $rcmail->config->get('layout') ?: 'widescreen');
            $rcmail->output->set_env('quota', $rcmail->storage->get_capability('QUOTA'));

            // set special folders
            foreach (['drafts', 'trash', 'junk'] as $mbox) {
                if ($folder = $rcmail->config->get($mbox . '_mbox')) {
                    $rcmail->output->set_env($mbox . '_mailbox', $folder);
                }
            }

            if (!empty($_GET['_uid'])) {
                $rcmail->output->set_env('list_uid', $_GET['_uid']);
            }

            // set configuration
            self::set_env_config(['delete_junk', 'flag_for_deletion', 'read_when_deleted',
                'skip_deleted', 'display_next', 'message_extwin', 'forward_attachment']);

            if (!$rcmail->output->ajax_call) {
                $rcmail->output->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
                    'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
                    'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching',
                    'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded',
                    'priority', 'withattachment', 'fileuploaderror', 'mark', 'markallread',
                    'folders-cur', 'folders-sub', 'folders-all', 'cancel', 'bounce', 'bouncemsg',
                    'sendingmessage');
            }
        }

        // register UI objects
        $rcmail->output->add_handlers([
            'mailboxlist'         => [$rcmail, 'folder_list'],
            'quotadisplay'        => [$this, 'quota_display'],
            'messages'            => [$this, 'message_list'],
            'messagecountdisplay' => [$this, 'messagecount_display'],
            'listmenulink'        => [$this, 'options_menu_link'],
            'mailboxname'         => [$this, 'mailbox_name_display'],
            'messageimportform'   => [$this, 'message_import_form'],
            'searchfilter'        => [$this, 'search_filter'],
            'searchinterval'      => [$this, 'search_interval'],
            'searchform'          => [$rcmail->output, 'search_form'],
        ]);
    }

    /**
     * Sets storage properties and session
     */
    public static function init_env()
    {
        $rcmail = rcmail::get_instance();

        $default_threading  = $rcmail->config->get('default_list_mode', 'list') == 'threads';
        $a_threading        = $rcmail->config->get('message_threading', []);
        $message_sort_col   = $rcmail->config->get('message_sort_col');
        $message_sort_order = $rcmail->config->get('message_sort_order');

        $mbox = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_GPC, true);

        // set imap properties and session vars
        if (!strlen($mbox)) {
            $mbox = isset($_SESSION['mbox']) && strlen($_SESSION['mbox']) ? $_SESSION['mbox'] : 'INBOX';
        }

        // We handle 'page' argument on 'list' and 'getunread' to prevent from
        // race condition and unintentional page overwrite in session.
        // Also, when entering the Mail UI (#7932)
        if (empty($rcmail->action) || $rcmail->action == 'list' || $rcmail->action == 'getunread') {
            $page = isset($_GET['_page']) ? intval($_GET['_page']) : 0;
            if (!$page) {
                $page = !empty($_SESSION['page']) ? $_SESSION['page'] : 1;
            }

            $_SESSION['page'] = $page;
        }

        $rcmail->storage->set_folder($_SESSION['mbox'] = $mbox);
        $rcmail->storage->set_page($_SESSION['page'] ?? 1);

        // set default sort col/order to session
        if (!isset($_SESSION['sort_col'])) {
            $_SESSION['sort_col'] = $message_sort_col ?: '';
        }
        if (!isset($_SESSION['sort_order'])) {
            $_SESSION['sort_order'] = strtoupper($message_sort_order) == 'ASC' ? 'ASC' : 'DESC';
        }

        // set threads mode
        if (isset($_GET['_threads'])) {
            if ($_GET['_threads']) {
                // re-set current page number when listing mode changes
                if (empty($a_threading[$_SESSION['mbox']])) {
                    $rcmail->storage->set_page($_SESSION['page'] = 1);
                }

                $a_threading[$_SESSION['mbox']] = true;
            }
            else {
                // re-set current page number when listing mode changes
                if (!empty($a_threading[$_SESSION['mbox']])) {
                    $rcmail->storage->set_page($_SESSION['page'] = 1);
                }

                $a_threading[$_SESSION['mbox']] = false;
            }

            $rcmail->user->save_prefs(['message_threading' => $a_threading]);
        }

        $threading = $a_threading[$_SESSION['mbox']] ?? $default_threading;

        $rcmail->storage->set_threading($threading);
    }

    /**
     * Sets page title
     */
    public static function list_pagetitle()
    {
        $rcmail = rcmail::get_instance();

        if ($rcmail->output->get_env('search_request')) {
            $pagetitle = $rcmail->gettext('searchresult');
        }
        else {
            $mbox_name = $rcmail->output->get_env('mailbox') ?: $rcmail->storage->get_folder();
            $delimiter = $rcmail->storage->get_hierarchy_delimiter();
            $pagetitle = self::localize_foldername($mbox_name, true);
            $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle);
        }

        $rcmail->output->set_pagetitle($pagetitle);
    }

    /**
     * Returns default search mods
     */
    public static function search_mods()
    {
        $rcmail = rcmail::get_instance();
        $mods   = $rcmail->config->get('search_mods');

        if (empty($mods)) {
            $mods = ['*' => ['subject' => 1, 'from' => 1]];

            foreach (['sent', 'drafts'] as $mbox) {
                if ($mbox = $rcmail->config->get($mbox . '_mbox')) {
                    $mods[$mbox] = ['subject' => 1, 'to' => 1];
                }
            }
        }

        return $mods;
    }

    /**
     * Returns 'to' if current folder is configured Sent or Drafts
     * or their subfolders, otherwise returns 'from'.
     *
     * @return string Column name
     */
    public static function message_list_smart_column_name()
    {
        $rcmail      = rcmail::get_instance();
        $delim       = $rcmail->storage->get_hierarchy_delimiter();
        $sent_mbox   = $rcmail->config->get('sent_mbox');
        $drafts_mbox = $rcmail->config->get('drafts_mbox');
        $mbox        = $rcmail->output->get_env('mailbox');

        if (!is_string($mbox) || !strlen($mbox)) {
            $mbox = $rcmail->storage->get_folder();
        }

        if ((strpos($mbox.$delim, $sent_mbox.$delim) === 0 || strpos($mbox.$delim, $drafts_mbox.$delim) === 0)
            && strtoupper($mbox) != 'INBOX'
        ) {
            return 'to';
        }

        return 'from';
    }

    /**
     * Returns configured messages list sorting column name
     * The name is context-sensitive, which means if sorting is set to 'fromto'
     * it will return 'from' or 'to' according to current folder type.
     *
     * @return string Column name
     */
    public static function sort_column()
    {
        $rcmail = rcmail::get_instance();

        if (isset($_SESSION['sort_col'])) {
            $column = $_SESSION['sort_col'];
        }
        else {
            $column = $rcmail->config->get('message_sort_col');
        }

        // get name of smart From/To column in folder context
        if ($column == 'fromto') {
            $column = self::message_list_smart_column_name();
        }

        return $column;
    }

    /**
     * Returns configured message list sorting order
     *
     * @return string Sorting order (ASC|DESC)
     */
    public static function sort_order()
    {
        if (isset($_SESSION['sort_order'])) {
            return $_SESSION['sort_order'];
        }

        return rcmail::get_instance()->config->get('message_sort_order');
    }

    /**
     * return the message list as HTML table
     */
    function message_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        // add some labels to client
        $rcmail->output->add_label('from', 'to');

        // add id to message list table if not specified
        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcubemessagelist';
        }

        // define list of cols to be displayed based on parameter or config
        if (empty($attrib['columns'])) {
            $list_cols   = $rcmail->config->get('list_cols');
            $a_show_cols = !empty($list_cols) && is_array($list_cols) ? $list_cols : ['subject'];

            $rcmail->output->set_env('col_movable', !in_array('list_cols', (array) $rcmail->config->get('dont_override')));
        }
        else {
            $a_show_cols = preg_split('/[\s,;]+/', str_replace(["'", '"'], '', $attrib['columns']));
            $attrib['columns'] = $a_show_cols;
        }

        // save some variables for use in ajax list
        $_SESSION['list_attrib'] = $attrib;

        // make sure 'threads' and 'subject' columns are present
        if (!in_array('subject', $a_show_cols)) {
            array_unshift($a_show_cols, 'subject');
        }
        if (!in_array('threads', $a_show_cols)) {
            array_unshift($a_show_cols, 'threads');
        }

        $listcols = $a_show_cols;

        // set client env
        $rcmail->output->add_gui_object('messagelist', $attrib['id']);
        $rcmail->output->set_env('autoexpand_threads', intval($rcmail->config->get('autoexpand_threads')));
        $rcmail->output->set_env('sort_col', $_SESSION['sort_col']);
        $rcmail->output->set_env('sort_order', $_SESSION['sort_order']);
        $rcmail->output->set_env('messages', []);
        $rcmail->output->set_env('listcols', $listcols);
        $rcmail->output->set_env('listcols_widescreen', ['threads', 'subject', 'fromto', 'date', 'size', 'flag', 'attachment']);

        $rcmail->output->include_script('list.js');

        $table = new html_table($attrib);

        if (empty($attrib['noheader'])) {
            $allcols = array_merge($listcols, ['threads', 'subject', 'fromto', 'date', 'size', 'flag', 'attachment']);
            $allcols = array_unique($allcols);

            foreach (self::message_list_head($attrib, $allcols) as $col => $cell) {
                if (in_array($col, $listcols)) {
                    $table->add_header(['class' => $cell['className'], 'id' => $cell['id']], $cell['html']);
                }
            }
        }

        return $table->show();
    }

    /**
     * return javascript commands to add rows to the message list
     */
    public static function js_message_list($a_headers, $insert_top = false, $a_show_cols = null)
    {
        $rcmail = rcmail::get_instance();

        if (empty($a_show_cols)) {
            if (!empty($_SESSION['list_attrib']['columns'])) {
                $a_show_cols = $_SESSION['list_attrib']['columns'];
            }
            else {
                $list_cols   = $rcmail->config->get('list_cols');
                $a_show_cols = !empty($list_cols) && is_array($list_cols) ? $list_cols : ['subject'];
            }
        }
        else {
            if (!is_array($a_show_cols)) {
                $a_show_cols = preg_split('/[\s,;]+/', str_replace(["'", '"'], '', $a_show_cols));
            }
            $head_replace = true;
        }

        $delimiter   = $rcmail->storage->get_hierarchy_delimiter();
        $search_set  = $rcmail->storage->get_search_set();
        $multifolder = $search_set && !empty($search_set[1]->multi);

        // add/remove 'folder' column to the list on multi-folder searches
        if ($multifolder && !in_array('folder', $a_show_cols)) {
            $a_show_cols[] = 'folder';
            $head_replace  = true;
        }
        else if (!$multifolder && ($found = array_search('folder', $a_show_cols)) !== false) {
            unset($a_show_cols[$found]);
            $head_replace = true;
        }

        $mbox = $rcmail->output->get_env('mailbox');
        if (!is_string($mbox) || !strlen($mbox)) {
            $mbox = $rcmail->storage->get_folder();
        }

        // make sure 'threads' and 'subject' columns are present
        if (!in_array('subject', $a_show_cols)) {
            array_unshift($a_show_cols, 'subject');
        }
        if (!in_array('threads', $a_show_cols)) {
            array_unshift($a_show_cols, 'threads');
        }

        // Make sure there are no duplicated columns (#1486999)
        $a_show_cols = array_unique($a_show_cols);
        $_SESSION['list_attrib']['columns'] = $a_show_cols;

        // Plugins may set header's list_cols/list_flags and other rcube_message_header variables
        // and list columns
        $plugin = $rcmail->plugins->exec_hook('messages_list', ['messages' => $a_headers, 'cols' => $a_show_cols]);

        $a_show_cols = $plugin['cols'];
        $a_headers   = $plugin['messages'];

        // make sure minimum required columns are present (needed for widescreen layout)
        $allcols = array_merge($a_show_cols, ['threads', 'subject', 'fromto', 'date', 'size', 'flag', 'attachment']);
        $allcols = array_unique($allcols);

        $thead = !empty($head_replace) ? self::message_list_head($_SESSION['list_attrib'], $allcols) : null;

        // get name of smart From/To column in folder context
        $smart_col = self::message_list_smart_column_name();
        $rcmail->output->command('set_message_coltypes', array_values($a_show_cols), $thead, $smart_col);

        if ($multifolder && $_SESSION['search_scope'] == 'all') {
            $rcmail->output->command('select_folder', '');
        }

        $rcmail->output->set_env('multifolder_listing', $multifolder);

        if (empty($a_headers)) {
            return;
        }

        // remove 'threads', 'attachment', 'flag', 'status' columns, we don't need them here
        foreach (['threads', 'attachment', 'flag', 'status', 'priority'] as $col) {
            if (($key = array_search($col, $allcols)) !== false) {
                unset($allcols[$key]);
            }
        }

        $sort_col = $_SESSION['sort_col'];

        // loop through message headers
        foreach ($a_headers as $header) {
            if (empty($header) || empty($header->size)) {
                continue;
            }

            // make message UIDs unique by appending the folder name
            if ($multifolder) {
                $header->uid .= '-' . $header->folder;
                $header->flags['skip_mbox_check'] = true;
                if (!empty($header->parent_uid)) {
                    $header->parent_uid .= '-' . $header->folder;
                }
            }

            $a_msg_cols  = [];
            $a_msg_flags = [];

            // format each col; similar as in self::message_list()
            foreach ($allcols as $col) {
                $col_name = $col == 'fromto' ? $smart_col : $col;

                if (in_array($col_name, ['from', 'to', 'cc', 'replyto'])) {
                    $cont = self::address_string($header->$col_name, 3, false, null, $header->charset, null, false);
                    if (empty($cont)) {
                        $cont = '&nbsp;'; // for widescreen mode
                    }
                }
                else if ($col == 'subject') {
                    $cont = trim(rcube_mime::decode_header($header->subject, $header->charset));
                    if (!$cont) {
                        $cont = $rcmail->gettext('nosubject');
                    }
                    $cont = rcube::SQ($cont);
                }
                else if ($col == 'size') {
                    $cont = self::show_bytes($header->size);
                }
                else if ($col == 'date') {
                    $cont = $rcmail->format_date($sort_col == 'arrival' ? $header->internaldate : $header->date);
                }
                else if ($col == 'folder') {
                    if (!isset($last_folder) || !isset($last_folder_name) || $last_folder !== $header->folder) {
                        $last_folder      = $header->folder;
                        $last_folder_name = self::localize_foldername($last_folder, true);
                        $last_folder_name = str_replace($delimiter, " \xC2\xBB ", $last_folder_name);
                    }

                    $cont = rcube::SQ($last_folder_name);
                }
                else if (isset($header->$col)) {
                    $cont = rcube::SQ($header->$col);
                }
                else {
                    $cont = '';
                }

                $a_msg_cols[$col] = $cont;
            }

            $a_msg_flags = array_change_key_case(array_map('intval', (array) $header->flags));

            if (!empty($header->depth)) {
                $a_msg_flags['depth'] = $header->depth;
            }
            else if (!empty($header->has_children)) {
                $roots[] = $header->uid;
            }
            if (!empty($header->parent_uid)) {
                $a_msg_flags['parent_uid'] = $header->parent_uid;
            }
            if (!empty($header->has_children)) {
                $a_msg_flags['has_children'] = $header->has_children;
            }
            if (!empty($header->unread_children)) {
                $a_msg_flags['unread_children'] = $header->unread_children;
            }
            if (!empty($header->flagged_children)) {
                $a_msg_flags['flagged_children'] = $header->flagged_children;
            }
            if (!empty($header->others['list-post'])) {
                $a_msg_flags['ml'] = 1;
            }
            if (!empty($header->priority)) {
                $a_msg_flags['prio'] = (int) $header->priority;
            }

            $a_msg_flags['ctype'] = rcube::Q($header->ctype);
            $a_msg_flags['mbox']  = $header->folder;

            // merge with plugin result (Deprecated, use $header->flags)
            if (!empty($header->list_flags) && is_array($header->list_flags)) {
                $a_msg_flags = array_merge($a_msg_flags, $header->list_flags);
            }
            if (!empty($header->list_cols) && is_array($header->list_cols)) {
                $a_msg_cols = array_merge($a_msg_cols, $header->list_cols);
            }

            $rcmail->output->command('add_message_row', $header->uid, $a_msg_cols, $a_msg_flags, $insert_top);
        }

        if ($rcmail->storage->get_threading()) {
            $roots = isset($roots) ? (array) $roots : [];
            $rcmail->output->command('init_threads', $roots, $mbox);
        }
    }

    /*
     * Creates <THEAD> for message list table
     */
    public static function message_list_head($attrib, $a_show_cols)
    {
        $rcmail = rcmail::get_instance();

        // check to see if we have some settings for sorting
        $sort_col   = $_SESSION['sort_col'];
        $sort_order = $_SESSION['sort_order'];

        $dont_override  = (array) $rcmail->config->get('dont_override');
        $disabled_sort  = in_array('message_sort_col', $dont_override);
        $disabled_order = in_array('message_sort_order', $dont_override);

        $rcmail->output->set_env('disabled_sort_col', $disabled_sort);
        $rcmail->output->set_env('disabled_sort_order', $disabled_order);

        // define sortable columns
        if ($disabled_sort) {
            $a_sort_cols = $sort_col && !$disabled_order ? [$sort_col] : [];
        }
        else {
            $a_sort_cols = ['subject', 'date', 'from', 'to', 'fromto', 'size', 'cc'];
        }

        if (!empty($attrib['optionsmenuicon'])) {
            $params = [];
            foreach ($attrib as $key => $val) {
                if (preg_match('/^optionsmenu(.+)$/', $key, $matches)) {
                    $params[$matches[1]] = $val;
                }
            }

            $list_menu = self::options_menu_link($params);
        }

        $cells = $coltypes = [];

        // get name of smart From/To column in folder context
        $smart_col = null;
        if (array_search('fromto', $a_show_cols) !== false) {
            $smart_col = self::message_list_smart_column_name();
        }

        foreach ($a_show_cols as $col) {
            // sanity check
            if (!preg_match('/^[a-zA-Z_-]+$/', $col)) {
                continue;
            }

            $label    = '';
            $sortable = false;
            $rel_col  = $col == 'date' && $sort_col == 'arrival' ? 'arrival' : $col;

            // get column name
            switch ($col) {
            case 'flag':
                $col_name = html::span('flagged', $rcmail->gettext('flagged'));
                break;
            case 'attachment':
            case 'priority':
                $col_name = html::span($col, $rcmail->gettext($col));
                break;
            case 'status':
                $col_name = html::span($col, $rcmail->gettext('readstatus'));
                break;
            case 'threads':
                $col_name = !empty($list_menu) ? $list_menu : '';
                break;
            case 'fromto':
                $label    = $rcmail->gettext($smart_col);
                $col_name = rcube::Q($label);
                break;
            default:
                $label    = $rcmail->gettext($col);
                $col_name = rcube::Q($label);
            }

            // make sort links
            if (in_array($col, $a_sort_cols)) {
                $sortable = true;
                $col_name = html::a([
                        'href'  => "./#sort",
                        'class' => 'sortcol',
                        'rel'   => $rel_col,
                        'title' => $rcmail->gettext('sortby')
                    ], $col_name);
            }
            else if (empty($col_name) || $col_name[0] != '<') {
                $col_name = '<span class="' . $col .'">' . $col_name . '</span>';
            }

            $sort_class = $rel_col == $sort_col && !$disabled_order ? " sorted$sort_order" : '';
            $class_name = $col.$sort_class;

            // put it all together
            $cells[$col]    = ['className' => $class_name, 'id' => "rcm$col", 'html' => $col_name];
            $coltypes[$col] = ['className' => $class_name, 'id' => "rcm$col", 'label' => $label, 'sortable' => $sortable];
        }

        $rcmail->output->set_env('coltypes', $coltypes);

        return $cells;
    }

    public static function options_menu_link($attrib = [])
    {
        $rcmail  = rcmail::get_instance();
        $title   = $rcmail->gettext(!empty($attrib['label']) ? $attrib['label'] : 'listoptions');
        $inner   = $title;
        $onclick = sprintf(
            "return %s.command('menu-open', '%s', this, event)",
            rcmail_output::JS_OBJECT_NAME,
            !empty($attrib['ref']) ? $attrib['ref'] : 'messagelistmenu'
        );

        // Backwards compatibility, attribute renamed in v1.5
        if (isset($attrib['optionsmenuicon'])) {
            $attrib['icon'] = $attrib['optionsmenuicon'];
        }

        if (!empty($attrib['icon']) && $attrib['icon'] != 'true') {
            $inner = html::img(['src' => $rcmail->output->asset_url($attrib['icon'], true), 'alt' => $title]);
        }
        else if (!empty($attrib['innerclass'])) {
            $inner = html::span($attrib['innerclass'], $inner);
        }

        return html::a([
                'href'     => '#list-options',
                'onclick'  => $onclick,
                'class'    => $attrib['class'] ?? 'listmenu',
                'id'       => $attrib['id'] ?? 'listmenulink',
                'title'    => $title,
                'tabindex' => '0',
            ], $inner
        );
    }

    public static function messagecount_display($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmcountdisplay';
        }

        $rcmail->output->add_gui_object('countdisplay', $attrib['id']);

        $content =  $rcmail->action != 'show' ? self::get_messagecount_text() : $rcmail->gettext('loading');

        return html::span($attrib, $content);
    }

    public static function get_messagecount_text($count = null, $page = null)
    {
        $rcmail = rcmail::get_instance();

        if ($page === null) {
            $page = $rcmail->storage->get_page();
        }

        $page_size = $rcmail->storage->get_pagesize();
        $start_msg = ($page-1) * $page_size + 1;
        $max       = $count;

        if ($max === null && $rcmail->action) {
            $max = $rcmail->storage->count(null, $rcmail->storage->get_threading() ? 'THREADS' : 'ALL');
        }

        if (!$max) {
            $out = $rcmail->storage->get_search_set() ? $rcmail->gettext('nomessages') : $rcmail->gettext('mailboxempty');
        }
        else {
            $out = $rcmail->gettext([
                    'name' => $rcmail->storage->get_threading() ? 'threadsfromto' : 'messagesfromto',
                    'vars' => [
                        'from'  => $start_msg,
                        'to'    => min($max, $start_msg + $page_size - 1),
                        'count' => $max
                    ]
            ]);
        }

        return rcube::Q($out);
    }

    public static function mailbox_name_display($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmmailboxname';
        }

        $rcmail->output->add_gui_object('mailboxname', $attrib['id']);

        return html::span($attrib, self::get_mailbox_name_text());
    }

    public static function get_mailbox_name_text()
    {
        $rcmail = rcmail::get_instance();
        $mbox   = $rcmail->output->get_env('mailbox');

        if (!is_string($mbox) || !strlen($mbox)) {
            $mbox = $rcmail->storage->get_folder();
        }

        return self::localize_foldername($mbox);
    }

    public static function send_unread_count($mbox_name, $force = false, $count = null, $mark = '')
    {
        $rcmail     = rcmail::get_instance();
        $old_unseen = self::get_unseen_count($mbox_name);
        $unseen     = $count;

        if ($unseen === null) {
            $unseen = $rcmail->storage->count($mbox_name, 'UNSEEN', $force);
        }

        if ($unseen !== $old_unseen || ($mbox_name == 'INBOX')) {
            $rcmail->output->command('set_unread_count', $mbox_name, $unseen,
                ($mbox_name == 'INBOX'), $unseen && $mark ? $mark : '');
        }

        self::set_unseen_count($mbox_name, $unseen);

        return $unseen;
    }

    public static function set_unseen_count($mbox_name, $count)
    {
        // @TODO: this data is doubled (session and cache tables) if caching is enabled

        // Make sure we have an array here (#1487066)
        if (!isset($_SESSION['unseen_count']) || !is_array($_SESSION['unseen_count'])) {
            $_SESSION['unseen_count'] = [];
        }

        $_SESSION['unseen_count'][$mbox_name] = $count;
    }

    public static function get_unseen_count($mbox_name)
    {
        if (!empty($_SESSION['unseen_count']) && array_key_exists($mbox_name, $_SESSION['unseen_count'])) {
            return $_SESSION['unseen_count'][$mbox_name];
        }
    }

    /**
     * Sets message is_safe flag according to 'show_images' option value
     *
     * @param rcube_message $message Mail message object
     */
    public static function check_safe($message)
    {
        $rcmail = rcmail::get_instance();

        if (empty($message->is_safe)
            && ($show_images = $rcmail->config->get('show_images'))
            && $message->has_html_part()
        ) {
            switch ($show_images) {
            case 3: // trusted senders only
            case 1: // all my contacts
                if (!empty($message->sender['mailto'])) {
                    $type = rcube_addressbook::TYPE_TRUSTED_SENDER;

                    if ($show_images == 1) {
                        $type |= rcube_addressbook::TYPE_RECIPIENT | rcube_addressbook::TYPE_WRITEABLE;
                    }

                    if ($rcmail->contact_exists($message->sender['mailto'], $type)) {
                        $message->set_safe(true);
                    }
                }

                $rcmail->plugins->exec_hook('message_check_safe', ['message' => $message]);
                break;

            case 2: // always
                $message->set_safe(true);
                break;
            }
        }

        return !empty($message->is_safe);
    }

    /**
     * Cleans up the given message HTML Body (for displaying)
     *
     * @param string $html         HTML
     * @param array  $p            Display parameters
     * @param array  $cid_replaces CID map replaces (inline images)
     *
     * @return string Clean HTML
     */
    public static function wash_html($html, $p, $cid_replaces = [])
    {
        $rcmail = rcmail::get_instance();

        $p += ['safe' => false, 'inline_html' => true, 'css_prefix' => null, 'container_id' => null];

        // charset was converted to UTF-8 in rcube_storage::get_message_part(),
        // change/add charset specification in HTML accordingly,
        // washtml's DOMDocument methods cannot work without that
        $meta = '<meta charset="' . RCUBE_CHARSET . '" />';

        // remove old meta tag and add the new one, making sure that it is placed in the head (#3510, #7116)
        $html = preg_replace('/<meta[^>]+charset=[a-z0-9_"-]+[^>]*>/Ui', '', $html);
        $html = preg_replace('/(<head[^>]*>)/Ui', '\\1'.$meta, $html, -1, $rcount);

        if (!$rcount) {
            // Note: HTML without <html> tag may still be a valid input (#6713)
            if (($pos = stripos($html, '<html')) === false) {
                $html = '<html><head>' . $meta . '</head>' . $html;
            }
            else {
                $pos  = strpos($html, '>', $pos);
                $html = substr_replace($html, '<head>' . $meta . '</head>', $pos + 1, 0);
            }
        }

        // clean HTML with washtml by Frederic Motte
        $wash_opts = [
            'show_washed'   => false,
            'allow_remote'  => $p['safe'],
            'blocked_src'   => $rcmail->output->asset_url('program/resources/blocked.gif'),
            'charset'       => RCUBE_CHARSET,
            'cid_map'       => $cid_replaces,
            'html_elements' => ['body'],
            'css_prefix'    => $p['css_prefix'],
            'container_id'  => $p['container_id'],
        ];

        if (empty($p['inline_html'])) {
            $wash_opts['html_elements'] = ['html','head','title','body','link'];
        }
        if (!empty($p['safe'])) {
            $wash_opts['html_attribs'] = ['rel','type'];
        }

        // overwrite washer options with options from plugins
        if (isset($p['html_elements'])) {
            $wash_opts['html_elements'] = $p['html_elements'];
        }
        if (isset($p['html_attribs'])) {
            $wash_opts['html_attribs'] = $p['html_attribs'];
        }

        // initialize HTML washer
        $washer = new rcube_washtml($wash_opts);

        if (empty($p['skip_washer_form_callback'])) {
            $washer->add_callback('form', 'rcmail_action_mail_index::washtml_callback');
        }

        // allow CSS styles, will be sanitized by rcmail_washtml_callback()
        if (empty($p['skip_washer_style_callback'])) {
            $washer->add_callback('style', 'rcmail_action_mail_index::washtml_callback');
        }

        // modify HTML links to open a new window if clicked
        if (empty($p['skip_washer_link_callback'])) {
            $washer->add_callback('a', 'rcmail_action_mail_index::washtml_link_callback');
            $washer->add_callback('area', 'rcmail_action_mail_index::washtml_link_callback');
            $washer->add_callback('link', 'rcmail_action_mail_index::washtml_link_callback');
        }

        // Remove non-UTF8 characters (#1487813)
        $html = rcube_charset::clean($html);

        $html = $washer->wash($html);
        self::$REMOTE_OBJECTS = $washer->extlinks;

        return $html;
    }

    /**
     * Convert the given message part to proper HTML
     * which can be displayed the message view
     *
     * @param string             $body Message part body
     * @param rcube_message_part $part Message part
     * @param array              $p    Display parameters array
     *
     * @return string Formatted HTML string
     */
    public static function print_body($body, $part, $p = [])
    {
        $rcmail = rcmail::get_instance();

        // trigger plugin hook
        $data = $rcmail->plugins->exec_hook('message_part_before',
            [
                'type' => $part->ctype_secondary,
                'body' => $body,
                'id'   => $part->mime_id
            ] + $p + [
                'safe'  => false,
                'plain' => false,
                'inline_html' => true
            ]
        );

        // convert html to text/plain
        if ($data['plain'] && ($data['type'] == 'html' || $data['type'] == 'enriched')) {
            if ($data['type'] == 'enriched') {
                $data['body'] = rcube_enriched::to_html($data['body']);
            }

            $body = $rcmail->html2text($data['body']);
            $part->ctype_secondary = 'plain';
        }
        // text/html
        else if ($data['type'] == 'html') {
            $body = self::wash_html($data['body'], $data, $part->replaces);
            $part->ctype_secondary = $data['type'];
        }
        // text/enriched
        else if ($data['type'] == 'enriched') {
            $body = rcube_enriched::to_html($data['body']);
            $body = self::wash_html($body, $data, $part->replaces);
            $part->ctype_secondary = 'html';
        }
        else {
            // assert plaintext
            $body = $data['body'];
            $part->ctype_secondary = $data['type'] = 'plain';
        }

        // free some memory (hopefully)
        unset($data['body']);

        // plaintext postprocessing
        if ($part->ctype_secondary == 'plain') {
            $flowed = isset($part->ctype_parameters['format']) && $part->ctype_parameters['format'] == 'flowed';
            $delsp  = isset($part->ctype_parameters['delsp']) && $part->ctype_parameters['delsp'] == 'yes';
            $body   = self::plain_body($body, $flowed, $delsp);
        }

        // allow post-processing of the message body
        $data = $rcmail->plugins->exec_hook('message_part_after', [
                'type' => $part->ctype_secondary,
                'body' => $body,
                'id'   => $part->mime_id
            ] + $data);

        return $data['body'];
    }

    /**
     * Handle links and citation marks in plain text message
     *
     * @param string $body   Plain text string
     * @param bool   $flowed Set to True if the source text is in format=flowed
     * @param bool   $delsp  Enable 'delsp' option of format=flowed text
     *
     * @return string Formatted HTML string
     */
    public static function plain_body($body, $flowed = false, $delsp = false)
    {
        $options = [
            'flowed'   => $flowed,
            'replacer' => 'rcmail_string_replacer',
            'delsp'    => $delsp
        ];

        $text2html = new rcube_text2html($body, false, $options);
        $body      = $text2html->get_html();

        return $body;
    }

    /**
     * Callback function for washtml cleaning class
     */
    public static function washtml_callback($tagname, $attrib, $content, $washtml)
    {
        $out = '';

        switch ($tagname) {
        case 'form':
            $out = html::div('form', $content);
            break;

        case 'style':
            // Crazy big styles may freeze the browser (#1490539)
            // remove content with more than 5k lines
            if (substr_count($content, "\n") > 5000) {
                break;
            }

            // decode all escaped entities and reduce to ascii strings
            $decoded  = rcube_utils::xss_entity_decode($content);
            $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', $decoded);

            // now check for evil strings like expression, behavior or url()
            if (!preg_match('/expression|behavior|javascript:|import[^a]/i', $stripped)) {
                if (!$washtml->get_config('allow_remote') && preg_match('/url\((?!data:image)/', $stripped)) {
                    $washtml->extlinks = true;
                }
                else {
                    $out = html::tag('style', ['type' => 'text/css'], $decoded);
                }
            }
        }

        return $out;
    }

    /**
     * Detect if a message attachment is an image (that can be displayed in the browser).
     *
     * @param rcube_message_part $part Message part - attachment
     *
     * @return string|null Image MIME type
     */
    public static function part_image_type($part)
    {
        $mimetype = strtolower($part->mimetype);

        // Skip TIFF/WEBP images if browser doesn't support this format
        // ...until we can convert them to JPEG
        $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tiff']);
        $tiff_support = $tiff_support || rcube_image::is_convertable('image/tiff');
        $webp_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['webp']);
        $webp_support = $webp_support || rcube_image::is_convertable('image/webp');

        if ((!$tiff_support && $mimetype == 'image/tiff') || (!$webp_support && $mimetype == 'image/webp')) {
            return;
        }

        // Content-Type: image/*...
        if (strpos($mimetype, 'image/') === 0) {
            return $mimetype;
        }

        // Many clients use application/octet-stream, we'll detect mimetype
        // by checking filename extension

        // Supported image filename extensions to image type map
        $types = [
            'jpg'  => 'image/jpeg',
            'jpeg' => 'image/jpeg',
            'png'  => 'image/png',
            'gif'  => 'image/gif',
            'bmp'  => 'image/bmp',
        ];

        if ($tiff_support) {
            $types['tif']  = 'image/tiff';
            $types['tiff'] = 'image/tiff';
        }

        if ($webp_support) {
            $types['webp'] = 'image/webp';
        }

        if ($part->filename
            && $mimetype == 'application/octet-stream'
            && preg_match('/\.([^.]+)$/i', $part->filename, $m)
            && ($extension = strtolower($m[1]))
            && isset($types[$extension])
        ) {
            return $types[$extension];
        }
    }

    /**
     * Modify a HTML message that it can be displayed inside a HTML page
     */
    public static function html4inline($body, &$args)
    {
        $last_pos = 0;
        $is_safe  = !empty($args['safe']);
        $prefix   = $args['css_prefix'] ?? null;
        $cont_id  = trim(
            (!empty($args['container_id']) ? $args['container_id'] : '')
            . (!empty($args['body_class']) ? ' div.' . $args['body_class'] : '')
        );

        // find STYLE tags
        while (($pos = stripos($body, '<style', $last_pos)) !== false && ($pos2 = stripos($body, '</style>', $pos+1))) {
            $pos = strpos($body, '>', $pos) + 1;
            $len = $pos2 - $pos;

            // replace all css definitions with #container [def]
            $styles = substr($body, $pos, $len);
            $styles = rcube_utils::mod_css_styles($styles, $cont_id, $is_safe, $prefix);

            $body     = substr_replace($body, $styles, $pos, $len);
            $last_pos = $pos2 + strlen($styles) - $len;
        }

        $replace = [
            // add comments around html and other tags
            '/(<!DOCTYPE[^>]*>)/i'          => '<!--\\1-->',
            '/(<\?xml[^>]*>)/i'             => '<!--\\1-->',
            '/(<\/?html[^>]*>)/i'           => '<!--\\1-->',
            '/(<\/?head[^>]*>)/i'           => '<!--\\1-->',
            '/(<title[^>]*>.*<\/title>)/Ui' => '<!--\\1-->',
            '/(<\/?meta[^>]*>)/i'           => '<!--\\1-->',
            // quote <? of php and xml files that are specified as text/html
            '/<\?/' => '&lt;?',
            '/\?>/' => '?&gt;',
        ];

        $regexp = '/<body([^>]*)/';

        // Handle body attributes that doesn't play nicely with div elements
        if (preg_match($regexp, $body, $m)) {
            $style = [];
            $attrs = $m[0];

            // Get bgcolor, we'll set it as background-color of the message container
            if (!empty($m[1]) && preg_match('/bgcolor=["\']*([a-z0-9#]+)["\']*/i', $attrs, $mb)) {
                $style['background-color'] = $mb[1];
                $attrs = preg_replace('/\s?bgcolor=["\']*[a-z0-9#]+["\']*/i', '', $attrs);
            }

            // Get text color, we'll set it as font color of the message container
            if (!empty($m[1]) && preg_match('/text=["\']*([a-z0-9#]+)["\']*/i', $attrs, $mb)) {
                $style['color'] = $mb[1];
                $attrs = preg_replace('/\s?text=["\']*[a-z0-9#]+["\']*/i', '', $attrs);
            }

            // Get background, we'll set it as background-image of the message container
            if (!empty($m[1]) && preg_match('/background=["\']*([^"\'>\s]+)["\']*/', $attrs, $mb)) {
                $style['background-image'] = 'url('.$mb[1].')';
                $attrs = preg_replace('/\s?background=["\']*([^"\'>\s]+)["\']*/', '', $attrs);
            }

            if (!empty($style)) {
                $body = preg_replace($regexp, rtrim($attrs), $body, 1);
            }

            // handle body styles related to background image
            if (!empty($style['background-image'])) {
                // get body style
                if (preg_match('/#'.preg_quote($cont_id, '/').'\s+\{([^}]+)}/i', $body, $m)) {
                    // get background related style
                    $regexp = '/(background-position|background-repeat)\s*:\s*([^;]+);/i';
                    if (preg_match_all($regexp, $m[1], $matches, PREG_SET_ORDER)) {
                        foreach ($matches as $m) {
                            $style[$m[1]] = $m[2];
                        }
                    }
                }
            }

            if (!empty($style)) {
                foreach ($style as $idx => $val) {
                    $style[$idx] = $idx . ': ' . $val;
                }

                $args['container_attrib']['style'] = implode('; ', $style);
            }

            // replace <body> with <div>
            if (!empty($args['body_class'])) {
                $replace['/<body([^>]*)>/i'] = '<div class="' . $args['body_class'] . '"\\1>';
            }
            else {
                $replace['/<body/i'] = '<div';
            }

            $replace['/<\/body>/i'] = '</div>';
        }
        // make sure there's 'rcmBody' div, we need it for proper css modification
        // its name is hardcoded in self::message_body() also
        else if (!empty($args['body_class'])) {
            $body = '<div class="' . $args['body_class'] . '">' . $body . '</div>';
        }

        // Clean up, and replace <body> with <div>
        $body = preg_replace(array_keys($replace), array_values($replace), $body);

        return $body;
    }

    /**
     * Parse link (a, link, area) attributes and set correct target
     */
    public static function washtml_link_callback($tag, $attribs, $content, $washtml)
    {
        $rcmail = rcmail::get_instance();
        $attrib = html::parse_attrib_string($attribs);

        // Remove non-printable characters in URL (#1487805)
        if (isset($attrib['href'])) {
            $attrib['href'] = preg_replace('/[\x00-\x1F]/', '', $attrib['href']);

            if ($tag == 'link' && preg_match('/^https?:\/\//i', $attrib['href'])) {
                $tempurl = 'tmp-' . md5($attrib['href']) . '.css';
                $_SESSION['modcssurls'][$tempurl] = $attrib['href'];
                $attrib['href'] = $rcmail->url([
                        'task'   => 'utils',
                        'action' => 'modcss',
                        'u'      => $tempurl,
                        'c'      => $washtml->get_config('container_id'),
                        'p'      => $washtml->get_config('css_prefix'),
                ]);
                $content = null;
            }
            else if (preg_match('/^mailto:(.+)/i', $attrib['href'], $mailto)) {
                $url_parts = explode('?', html_entity_decode($mailto[1], ENT_QUOTES, 'UTF-8'), 2);
                $mailto    = $url_parts[0];
                $url       = $url_parts[1] ?? '';

                // #6020: use raw encoding for correct "+" character handling as specified in RFC6068
                $url       = rawurldecode($url);
                $mailto    = rawurldecode($mailto);
                $addresses = rcube_mime::decode_address_list($mailto, null, true);
                $mailto    = [];

                // do sanity checks on recipients
                foreach ($addresses as $idx => $addr) {
                    if (rcube_utils::check_email($addr['mailto'], false)) {
                        $addresses[$idx] = $addr['mailto'];
                        $mailto[]        = $addr['string'];
                    }
                    else {
                        unset($addresses[$idx]);
                    }
                }

                if (!empty($addresses)) {
                    $attrib['href']    = 'mailto:' . implode(',', $addresses);
                    $attrib['onclick'] = sprintf(
                        "return %s.command('compose','%s',this)",
                        rcmail_output::JS_OBJECT_NAME,
                        rcube::JQ(implode(',', $mailto) . ($url ? "?$url" : '')));
                }
                else {
                    $attrib['href']    = '#NOP';
                    $attrib['onclick'] = '';
                }
            }
            else if (!empty($attrib['href']) && $attrib['href'][0] != '#') {
                $attrib['target'] = '_blank';
            }

            // Better security by adding rel="noreferrer" (#1484686)
            if (($tag == 'a' || $tag == 'area') && $attrib['href'] && $attrib['href'][0] != '#') {
                $attrib['rel'] = 'noreferrer';
            }
        }

        // allowed attributes for a|link|area tags
        $allow = ['href','name','target','onclick','id','class','style','title',
            'rel','type','media','alt','coords','nohref','hreflang','shape'];

        return html::tag($tag, $attrib, $content, $allow);
    }

    /**
     * Decode address string and re-format it as HTML links
     */
    public static function address_string($input, $max = null, $linked = false, $addicon = null,
        $default_charset = null, $title = null, $spoofcheck = true)
    {
        $a_parts = rcube_mime::decode_address_list($input, null, true, $default_charset);

        if (!count($a_parts)) {
            return null;
        }

        $rcmail  = rcmail::get_instance();
        $c       = count($a_parts);
        $j       = 0;
        $out     = '';
        $allvalues       = [];
        $shown_addresses = [];
        $show_email      = $rcmail->config->get('message_show_email');

        if ($addicon && !isset($_SESSION['writeable_abook'])) {
            $_SESSION['writeable_abook'] = $rcmail->get_address_sources(true) ? true : false;
        }

        foreach ($a_parts as $part) {
            $j++;

            $name   = $part['name'];
            $mailto = $part['mailto'];
            $string = $part['string'];
            $valid  = rcube_utils::check_email($mailto, false);

            // phishing email prevention (#1488981), e.g. "valid@email.addr <phishing@email.addr>"
            if (!$show_email && $valid && $name && $name != $mailto && preg_match('/@|@|﹫/', $name)) {
                $name = '';
            }

            // IDNA ASCII to Unicode
            if ($name == $mailto) {
                $name = rcube_utils::idn_to_utf8($name);
            }
            if ($string == $mailto) {
                $string = rcube_utils::idn_to_utf8($string);
            }
            $mailto = rcube_utils::idn_to_utf8($mailto);

            // Homograph attack detection (#6891)
            if ($spoofcheck && !self::$SUSPICIOUS_EMAIL) {
                self::$SUSPICIOUS_EMAIL = rcube_spoofchecker::check($mailto);
            }

            if (self::$PRINT_MODE) {
                $address = '&lt;' . rcube::Q($mailto) . '&gt;';
                if ($name) {
                    $address = rcube::SQ($name) . ' ' . $address;
                }
            }
            else if ($valid) {
                if ($linked) {
                    $attrs = [
                        'href'    => 'mailto:' . $mailto,
                        'class'   => 'rcmContactAddress',
                        'onclick' => sprintf("return %s.command('compose','%s',this)",
                            rcmail_output::JS_OBJECT_NAME, rcube::JQ(format_email_recipient($mailto, $name))),
                    ];

                    if ($show_email && $name && $mailto) {
                        $content = rcube::SQ($name ? sprintf('%s <%s>', $name, $mailto) : $mailto);
                    }
                    else {
                        $content = rcube::SQ($name ?: $mailto);
                        $attrs['title'] = $mailto;
                    }

                    $address = html::a($attrs, $content);
                }
                else {
                    $address = html::span(['title' => $mailto, 'class' => "rcmContactAddress"],
                        rcube::SQ($name ?: $mailto));
                }

                if ($addicon && $_SESSION['writeable_abook']) {
                    $label = $rcmail->gettext('addtoaddressbook');
                    $icon = html::img([
                            'src'   => $rcmail->output->asset_url($addicon, true),
                            'alt'   => $label,
                            'class' => 'noselect',
                    ]);
                    $address .= html::a([
                            'href'    => "#add",
                            'title'   => $label,
                            'class'   => 'rcmaddcontact',
                            'onclick' => sprintf("return %s.command('add-contact','%s',this)",
                                rcmail_output::JS_OBJECT_NAME, rcube::JQ($string)),
                        ],
                        $addicon == 'virtual' ? '' : $icon
                    );
                }
            }
            else {
                $address = $name ? rcube::Q($name) : '';
                if ($mailto) {
                    $address = trim($address . ' ' . rcube::Q($name ? sprintf('<%s>', $mailto) : $mailto));
                }
            }

            $address = html::span('adr', $address);
            $allvalues[] = $address;

            if (empty($moreadrs)) {
                $out .= ($out ? ', ' : '') . $address;
                $shown_addresses[] = $address;
            }

            if ($max && $j == $max && $c > $j) {
                if ($linked) {
                    $moreadrs = $c - $j;
                }
                else {
                    $out .= '...';
                    break;
                }
            }
        }

        if (!empty($moreadrs)) {
            $label = rcube::Q($rcmail->gettext(['name' => 'andnmore', 'vars' => ['nr' => $moreadrs]]));

            if (self::$PRINT_MODE) {
                $out .= ', ' . html::a([
                        'href'    => '#more',
                        'class'   => 'morelink',
                        'onclick' => '$(this).hide().next().show()',
                    ], $label)
                    . html::span(['style' => 'display:none'], join(', ', array_diff($allvalues, $shown_addresses)));
            }
            else {
                $out .= ', ' . html::a([
                        'href'    => '#more',
                        'class'   => 'morelink',
                        'onclick' => sprintf("return %s.simple_dialog('%s','%s',null,{cancel_button:'close'})",
                            rcmail_output::JS_OBJECT_NAME,
                            rcube::JQ(join(', ', $allvalues)),
                            rcube::JQ($title))
                    ], $label);
            }
        }

        return $out;
    }
    /**
     * Return attachment filename, handle empty filename case
     *
     * @param rcube_message_part $attachment Message part
     * @param bool               $display    Convert to a description text for "special" types
     *
     * @return string Filename
     */
    public static function attachment_name($attachment, $display = false)
    {
        $rcmail = rcmail::get_instance();

        $filename = (string) $attachment->filename;
        $filename = str_replace(["\r", "\n"], '', $filename);

        if ($filename === '') {
            if ($attachment->mimetype == 'text/html') {
                $filename = $rcmail->gettext('htmlmessage');
            }
            else {
                $ext      = array_first((array) rcube_mime::get_mime_extensions($attachment->mimetype));
                $filename = $rcmail->gettext('messagepart') . ' ' . $attachment->mime_id;
                if ($ext) {
                    $filename .= '.' . $ext;
                }
            }
        }

        // Display smart names for some known mimetypes
        if ($display) {
            if (preg_match('/application\/(pgp|pkcs7)-signature/i', $attachment->mimetype)) {
                $filename = $rcmail->gettext('digitalsig');
            }
        }

        return $filename;
    }

    public static function search_filter($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmlistfilter';
        }

        if (!self::get_bool_attr($attrib, 'noevent')) {
            $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . '.filter_mailbox(this.value)';
        }

        // Content-Type values of messages with attachments
        // the same as in app.js:add_message_row()
        $ctypes = ['application/', 'multipart/m', 'multipart/signed', 'multipart/report'];

        // Build search string of "with attachment" filter
        $attachment = trim(str_repeat(' OR', count($ctypes)-1));
        foreach ($ctypes as $type) {
            $attachment .= ' HEADER Content-Type ' . rcube_imap_generic::escape($type);
        }

        $select = new html_select($attrib);
        $select->add($rcmail->gettext('all'), 'ALL');
        $select->add($rcmail->gettext('unread'), 'UNSEEN');
        $select->add($rcmail->gettext('flagged'), 'FLAGGED');
        $select->add($rcmail->gettext('unanswered'), 'UNANSWERED');
        if (!$rcmail->config->get('skip_deleted')) {
            $select->add($rcmail->gettext('deleted'), 'DELETED');
            $select->add($rcmail->gettext('undeleted'), 'UNDELETED');
        }
        $select->add($rcmail->gettext('withattachment'), $attachment);
        $select->add($rcmail->gettext('priority').': '.$rcmail->gettext('highest'), 'HEADER X-PRIORITY 1');
        $select->add($rcmail->gettext('priority').': '.$rcmail->gettext('high'), 'HEADER X-PRIORITY 2');
        $select->add($rcmail->gettext('priority').': '.$rcmail->gettext('normal'), 'NOT HEADER X-PRIORITY 1 NOT HEADER X-PRIORITY 2 NOT HEADER X-PRIORITY 4 NOT HEADER X-PRIORITY 5');
        $select->add($rcmail->gettext('priority').': '.$rcmail->gettext('low'), 'HEADER X-PRIORITY 4');
        $select->add($rcmail->gettext('priority').': '.$rcmail->gettext('lowest'), 'HEADER X-PRIORITY 5');

        $rcmail->output->add_gui_object('search_filter', $attrib['id']);

        $selected = rcube_utils::get_input_string('_filter', rcube_utils::INPUT_GET);

        if (!$selected && !empty($_REQUEST['_search'])) {
            $selected = $_SESSION['search_filter'];
        }

        return $select->show($selected ?: 'ALL');
    }

    public static function search_interval($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmsearchinterval';
        }

        $select = new html_select($attrib);
        $select->add('', '');

        foreach (['1W', '1M', '1Y', '-1W', '-1M', '-1Y'] as $value) {
            $select->add($rcmail->gettext('searchinterval' . $value), $value);
        }

        $rcmail->output->add_gui_object('search_interval', $attrib['id']);

        return $select->show(!empty($_REQUEST['_search']) ? $_SESSION['search_interval'] : '');
    }

    public static function message_error()
    {
        $rcmail = rcmail::get_instance();

        // ... display message error page
        if ($rcmail->output->template_exists('messageerror')) {
            // Set env variables for messageerror.html template
            if ($rcmail->action == 'show') {
                $mbox_name = $rcmail->storage->get_folder();

                $rcmail->output->set_env('mailbox', $mbox_name);
                $rcmail->output->set_env('uid', null);
            }

            $rcmail->output->show_message('messageopenerror', 'error');
            $rcmail->output->send('messageerror');
        }
        else {
            $rcmail->raise_error(['code' => 410], false, true);
        }
    }

    public static function message_import_form($attrib = [])
    {
        $rcmail = rcmail::get_instance();

        $rcmail->output->add_label('selectimportfile', 'importwait', 'importmessages', 'import');

        $description = $rcmail->gettext('mailimportdesc');
        $input_attr  = [
            'multiple' => true,
            'name'     => '_file[]',
            'accept'   => '.eml,.mbox,.msg,message/rfc822,text/*',
        ];

        if (class_exists('ZipArchive', false)) {
            $input_attr['accept'] .= '.zip,application/zip,application/x-zip';
            $description          .= ' ' . $rcmail->gettext('mailimportzip');
        }

        $attrib['prefix'] = html::tag('input', ['type' => 'hidden', 'name' => '_unlock', 'value' => ''])
            . html::tag('input', ['type' => 'hidden', 'name' => '_framed', 'value' => '1'])
            . html::p(null, $description);

        return self::upload_form($attrib, 'importform', 'import-messages', $input_attr);
    }

    // Return mimetypes supported by the browser
    public static function supported_mimetypes()
    {
        $rcmail = rcube::get_instance();

        // mimetypes supported by the browser (default settings)
        $mimetypes = (array) $rcmail->config->get('client_mimetypes');

        // Remove unsupported types, which makes that attachment which cannot be
        // displayed in a browser will be downloaded directly without displaying an overlay page
        if (empty($_SESSION['browser_caps']['pdf']) && ($key = array_search('application/pdf', $mimetypes)) !== false) {
            unset($mimetypes[$key]);
        }

        if (empty($_SESSION['browser_caps']['flash']) && ($key = array_search('application/x-shockwave-flash', $mimetypes)) !== false) {
            unset($mimetypes[$key]);
        }

        // We cannot securely preview XML files as we do not have a proper parser
        if (($key = array_search('text/xml', $mimetypes)) !== false) {
            unset($mimetypes[$key]);
        }

        foreach (['tiff', 'webp'] as $type) {
            if (empty($_SESSION['browser_caps'][$type]) && ($key = array_search('image/' . $type, $mimetypes)) !== false) {
                // can we convert it to jpeg?
                if (!rcube_image::is_convertable('image/' . $type)) {
                    unset($mimetypes[$key]);
                }
            }
        }

        // @TODO: support mail preview for compose attachments
        if ($rcmail->action != 'compose' && !in_array('message/rfc822', $mimetypes)) {
            $mimetypes[] = 'message/rfc822';
        }

        return array_values($mimetypes);
    }
}
actions/mail/addcontact.php000064400000007272151727150620011761 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Add the submitted contact to the user's address book                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_addcontact extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $address = rcube_utils::get_input_string('_address', rcube_utils::INPUT_POST, true);
        $source  = rcube_utils::get_input_string('_source', rcube_utils::INPUT_POST);

        // Get the default addressbook
        $CONTACTS = null;
        $SENDERS  = null;
        $type     = 0;

        if ($source != rcube_addressbook::TYPE_TRUSTED_SENDER) {
            $CONTACTS = $rcmail->get_address_book(rcube_addressbook::TYPE_DEFAULT, true);
            $type     = rcube_addressbook::TYPE_DEFAULT;
        }

        // Get the trusted senders addressbook
        if (!empty($_POST['_reload']) || $source == rcube_addressbook::TYPE_TRUSTED_SENDER) {
            $collected_senders = $rcmail->config->get('collected_senders');

            if (strlen($collected_senders)) {
                $type |= rcube_addressbook::TYPE_TRUSTED_SENDER;
                $SENDERS = $rcmail->get_address_book($collected_senders);
                if ($CONTACTS == $SENDERS) {
                    $SENDERS = null;
                }
            }
        }

        $contact = rcube_mime::decode_address_list($address, 1, false);

        if (empty($contact[1]['mailto'])) {
            $rcmail->output->show_message('errorsavingcontact', 'error', null, false);
            $rcmail->output->send();
        }

        $contact = [
            'email' => $contact[1]['mailto'],
            'name'  => $contact[1]['name'],
        ];

        $email = rcube_utils::idn_to_ascii($contact['email']);

        if (!rcube_utils::check_email($email, false)) {
            $rcmail->output->show_message('emailformaterror', 'error', ['email' => $contact['email']], false);
            $rcmail->output->send();
        }

        if ($rcmail->contact_exists($contact['email'], $type)) {
            $rcmail->output->show_message('contactexists', 'warning');
            $rcmail->output->send();
        }

        $done = $rcmail->contact_create($contact, $SENDERS ?: $CONTACTS, $error);

        if ($done) {
            $rcmail->output->show_message('addedsuccessfully', 'confirmation');

            if (!empty($_POST['_reload'])) {
                $rcmail->output->command('command', 'load-remote');
            }
        }
        else {
            $rcmail->output->show_message($error ?: 'errorsavingcontact', 'error', null, false);
        }

        $rcmail->output->send();
    }
}
actions/mail/send.php000064400000042265151727150620010607 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Compose a new mail message and send it or store as draft            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_send extends rcmail_action
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // remove all scripts and act as called in frame
        $rcmail->output->reset();
        $rcmail->output->framed = true;

        $COMPOSE_ID = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GPC);
        $COMPOSE    =& $_SESSION['compose_data_'.$COMPOSE_ID];

        // Sanity checks
        if (!isset($COMPOSE['id'])) {
            rcube::raise_error([
                    'code' => 500,
                    'file' => __FILE__,
                    'line' => __LINE__,
                    'message' => "Invalid compose ID"
                ], true, false
            );

            $rcmail->output->show_message('internalerror', 'error');
            $rcmail->output->send('iframe');
        }

        $saveonly  = !empty($_GET['_saveonly']);
        $savedraft = !empty($_POST['_draft']) && !$saveonly;
        $SENDMAIL  = new rcmail_sendmail($COMPOSE, [
                'sendmail'      => true,
                'saveonly'      => $saveonly,
                'savedraft'     => $savedraft,
                'error_handler' => function(...$args) use ($rcmail) {
                    call_user_func_array([$rcmail->output, 'show_message'], $args);
                    $rcmail->output->send('iframe');
                },
                'keepformatting' => !empty($_POST['_keepformatting']),
        ]);

        if (!isset($COMPOSE['attachments'])) {
            $COMPOSE['attachments'] = [];
        }

        // Collect input for message headers
        $headers = $SENDMAIL->headers_input();

        $COMPOSE['param']['message-id'] = $headers['Message-ID'];

        $message_id      = $headers['Message-ID'];
        $message_charset = $SENDMAIL->options['charset'];
        $message_body    = rcube_utils::get_input_string('_message', rcube_utils::INPUT_POST, true, $message_charset);
        $isHtml          = (bool) rcube_utils::get_input_string('_is_html', rcube_utils::INPUT_POST);

        // Reset message body and attachments in Mailvelope mode
        if (isset($_POST['_pgpmime'])) {
            $pgp_mime     = rcube_utils::get_input_string('_pgpmime', rcube_utils::INPUT_POST);
            $isHtml       = false;
            $message_body = '';

            // clear unencrypted attachments
            if (!empty($COMPOSE['attachments'])) {
                foreach ((array) $COMPOSE['attachments'] as $attach) {
                    $rcmail->plugins->exec_hook('attachment_delete', $attach);
                }
            }

            $COMPOSE['attachments'] = [];
        }

        if ($isHtml) {
            $bstyle = [];

            if ($font_size = $rcmail->config->get('default_font_size')) {
                $bstyle[] = 'font-size: ' . $font_size;
            }
            if ($font_family = $rcmail->config->get('default_font')) {
                $bstyle[] = 'font-family: ' . self::font_defs($font_family);
            }

            // append doctype and html/body wrappers
            $bstyle       = !empty($bstyle) ? (" style='" . implode('; ', $bstyle) . "'") : '';
            $message_body = '<html><head>'
                . '<meta http-equiv="Content-Type" content="text/html; charset='
                . ($message_charset ?: RCUBE_CHARSET) . '" /></head>'
                . "<body" . $bstyle . ">\r\n" . $message_body;
        }

        if (!$savedraft) {
            if ($isHtml) {
                $b_style   = 'padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0';
                $pre_style = 'margin: 0; padding: 0; font-family: monospace';

                $message_body = preg_replace(
                    [
                        // remove empty signature div
                        '/<div id="_rc_sig">(&nbsp;)?<\/div>[\s\r\n]*$/',
                        // replace signature's div ID (#6073)
                        '/ id="_rc_sig"/',
                        // add inline css for blockquotes and container
                        '/<blockquote>/',
                        '/<div class="pre">/',
                        // convert TinyMCE's new-line sequences (#1490463)
                        '/<p>&nbsp;<\/p>/',
                    ],
                    [
                        '',
                        ' id="signature"',
                        '<blockquote type="cite" style="'.$b_style.'">',
                        '<div class="pre" style="'.$pre_style.'">',
                        '<p><br /></p>',
                    ],
                    $message_body
                );

                rcube_utils::preg_error([
                        'line'    => __LINE__,
                        'file'    => __FILE__,
                        'message' => "Could not format HTML!"
                    ], true);
            }

            // Check spelling before send
            if (
                $rcmail->config->get('spellcheck_before_send')
                && $rcmail->config->get('enable_spellcheck')
                && empty($COMPOSE['spell_checked'])
                && !empty($message_body)
            ) {
                $language     = rcube_utils::get_input_string('_lang', rcube_utils::INPUT_GPC);
                $message_body = str_replace("\r\n", "\n", $message_body);
                $spellchecker = new rcube_spellchecker($language);
                $spell_result = $spellchecker->check($message_body, $isHtml);

                if ($error = $spellchecker->error()) {
                    rcube::raise_error([
                            'code' => 500, 'file' => __FILE__, 'line' => __LINE__,
                            'message' => "Spellcheck error: " . $error
                        ],
                        true, false
                    );
                }
                else {
                    $COMPOSE['spell_checked'] = true;

                    if (!$spell_result) {
                        if ($isHtml) {
                            $result['words']      = $spellchecker->get();
                            $result['dictionary'] = (bool) $rcmail->config->get('spellcheck_dictionary');
                        }
                        else {
                            $result = $spellchecker->get_xml();
                        }

                        $rcmail->output->show_message('mispellingsfound', 'error');
                        $rcmail->output->command('spellcheck_resume', $result);
                        $rcmail->output->send('iframe');
                    }
                }
            }

            // generic footer for all messages
            if ($footer = $SENDMAIL->generic_message_footer($isHtml)) {
                $message_body .= "\r\n" . $footer;
            }
        }

        if ($isHtml) {
            $message_body .= "\r\n</body></html>\r\n";
        }

        // sort attachments to make sure the order is the same as in the UI (#1488423)
        if ($files = rcube_utils::get_input_string('_attachments', rcube_utils::INPUT_POST)) {
            $files = explode(',', $files);
            $files = array_flip($files);
            foreach ($files as $idx => $val) {
                if (!empty($COMPOSE['attachments'][$idx])) {
                    $files[$idx] = $COMPOSE['attachments'][$idx];
                    unset($COMPOSE['attachments'][$idx]);
                }
            }

            $COMPOSE['attachments'] = array_merge(array_filter($files), (array) $COMPOSE['attachments']);
        }

        // Since we can handle big messages with disk usage, we need more time to work
        @set_time_limit(360);

        // create PEAR::Mail_mime instance, set headers, body and params
        $MAIL_MIME = $SENDMAIL->create_message($headers, $message_body, $isHtml, $COMPOSE['attachments']);

        // add stored attachments, if any
        if (is_array($COMPOSE['attachments'])) {
            self::add_attachments($SENDMAIL, $MAIL_MIME, $COMPOSE['attachments'], $isHtml);
        }

        // compose PGP/Mime message
        if (!empty($pgp_mime)) {
            $MAIL_MIME->addAttachment(new Mail_mimePart('Version: 1', [
                    'content_type' => 'application/pgp-encrypted',
                    'description'  => 'PGP/MIME version identification',
            ]));

            $MAIL_MIME->addAttachment(new Mail_mimePart($pgp_mime, [
                    'content_type' => 'application/octet-stream',
                    'filename'     => 'encrypted.asc',
                    'disposition'  => 'inline',
            ]));

            $MAIL_MIME->setContentType('multipart/encrypted', ['protocol' => 'application/pgp-encrypted']);
            $MAIL_MIME->setParam('preamble', 'This is an OpenPGP/MIME encrypted message (RFC 2440 and 3156)');
        }

        // This hook allows to modify the message before send or save action
        $plugin    = $rcmail->plugins->exec_hook('message_ready', ['message' => $MAIL_MIME]);
        $MAIL_MIME = $plugin['message'];

        // Deliver the message over SMTP
        if (!$savedraft && !$saveonly) {
            $sent = $SENDMAIL->deliver_message($MAIL_MIME);
        }

        // Save the message in Drafts/Sent
        $saved = $SENDMAIL->save_message($MAIL_MIME);

        // raise error if saving failed
        if (!$saved && $savedraft) {
            self::display_server_error('errorsaving');
            // start the auto-save timer again
            $rcmail->output->command('auto_save_start');
            $rcmail->output->send('iframe');
        }

        $store_target = $SENDMAIL->options['store_target'];
        $store_folder = $SENDMAIL->options['store_folder'];

        // delete previous saved draft
        $drafts_mbox = $rcmail->config->get('drafts_mbox');
        $old_id      = rcube_utils::get_input_string('_draft_saveid', rcube_utils::INPUT_POST);

        if ($old_id && (!empty($sent) || $saved)) {
            $deleted = $rcmail->storage->delete_message($old_id, $drafts_mbox);

            // raise error if deletion of old draft failed
            if (!$deleted) {
                rcube::raise_error([
                        'code'    => 800,
                        'type'    => 'imap',
                        'file'    => __FILE__,
                        'line'    => __LINE__,
                        'message' => "Could not delete message from $drafts_mbox"
                    ],
                    true, false
                );
            }
        }

        if ($savedraft) {
            // remember new draft-uid ($saved could be an UID or true/false here)
            if ($saved && is_bool($saved)) {
                $index = $rcmail->storage->search_once($drafts_mbox, 'HEADER Message-ID ' . $message_id);
                $saved = $index->max();
            }

            if ($saved) {
                $plugin = $rcmail->plugins->exec_hook('message_draftsaved', [
                        'msgid'  => $message_id,
                        'uid'    => $saved,
                        'folder' => $store_target
                ]);

                // display success
                $rcmail->output->show_message(!empty($plugin['message']) ? $plugin['message'] : 'messagesaved', 'confirmation');

                // update "_draft_saveid" and the "cmp_hash" to prevent "Unsaved changes" warning
                $COMPOSE['param']['draft_uid'] = $plugin['uid'];
                $rcmail->output->command('set_draft_id', $plugin['uid']);
                $rcmail->output->command('compose_field_hash', true);
            }

            // start the auto-save timer again
            $rcmail->output->command('auto_save_start');
        }
        else {
            // Collect folders which could contain the composed message,
            // we'll refresh the list if currently opened folder is one of them (#1490238)
            $folders    = [];
            $save_error = false;

            if (!$saveonly) {
                if (in_array($COMPOSE['mode'], ['reply', 'forward', 'draft'])) {
                    $folders[] = $COMPOSE['mailbox'];
                }
                if (!empty($COMPOSE['param']['draft_uid']) && $drafts_mbox) {
                    $folders[] = $drafts_mbox;
                }
            }

            if ($store_folder && !$saved) {
                $params = $saveonly ? null : ['prefix' => true];
                self::display_server_error('errorsavingsent', null, null, $params);

                if ($saveonly) {
                    $rcmail->output->send('iframe');
                }

                $save_error = true;
            }
            else {
                $rcmail->plugins->exec_hook('attachments_cleanup', ['group' => $COMPOSE_ID]);
                $rcmail->session->remove('compose_data_' . $COMPOSE_ID);
                $_SESSION['last_compose_session'] = $COMPOSE_ID;

                $rcmail->output->command('remove_compose_data', $COMPOSE_ID);

                if ($store_folder) {
                    $folders[] = $store_target;
                }
            }

            $msg = $rcmail->gettext($saveonly ? 'successfullysaved' : 'messagesent');

            $rcmail->output->command('sent_successfully', 'confirmation', $msg, $folders, $save_error);
        }

        $rcmail->output->send('iframe');
    }

    public static function add_attachments($SENDMAIL, $message, $attachments, $isHtml)
    {
        $rcmail = rcmail::get_instance();

        foreach ($attachments as $id => $attachment) {
            // This hook retrieves the attachment contents from the file storage backend
            $attachment = $rcmail->plugins->exec_hook('attachment_get', $attachment);
            $is_inline  = false;
            $dispurl    = null;

            if ($isHtml) {
                $dispurl      = '/[\'"]\S+display-attachment\S+file=rcmfile' . preg_quote($attachment['id']) . '[\'"]/';
                $message_body = $message->getHTMLBody();
                $is_inline    = preg_match($dispurl, $message_body);
            }

            $ctype = isset($attachment['mimetype']) ? $attachment['mimetype'] : '';
            $ctype = str_replace('image/pjpeg', 'image/jpeg', $ctype); // #1484914

            // inline image
            if ($is_inline) {
                // Mail_Mime does not support many inline attachments with the same name (#1489406)
                // we'll generate cid: urls here to workaround this
                $cid = preg_replace('/[^0-9a-zA-Z]/', '', uniqid(time(), true));
                if (preg_match('#(@[0-9a-zA-Z\-\.]+)#', $SENDMAIL->options['from'], $matches)) {
                    $cid .= $matches[1];
                }
                else {
                    $cid .= '@localhost';
                }

                if ($dispurl && !empty($message_body)) {
                    $message_body = preg_replace($dispurl, '"cid:' . $cid . '"', $message_body);

                    rcube_utils::preg_error([
                            'line'    => __LINE__,
                            'file'    => __FILE__,
                            'message' => "Could not replace an image reference!"
                        ], true
                    );

                    $message->setHTMLBody($message_body);
                }

                if (!empty($attachment['data'])) {
                    $message->addHTMLImage($attachment['data'], $ctype, $attachment['name'], false, $cid);
                }
                else {
                    $message->addHTMLImage($attachment['path'], $ctype, $attachment['name'], true, $cid);
                }
            }
            else {
                $file    = !empty($attachment['data']) ? $attachment['data'] : $attachment['path'];
                $folding = (int) $rcmail->config->get('mime_param_folding');

                $message->addAttachment($file,
                    $ctype,
                    $attachment['name'],
                    empty($attachment['data']),
                    $ctype == 'message/rfc822' ? '8bit' : 'base64',
                    'attachment',
                    $attachment['charset'] ?? null,
                    '', '',
                    $folding ? 'quoted-printable' : null,
                    $folding == 2 ? 'quoted-printable' : null,
                    '', RCUBE_CHARSET
                );
            }
        }
    }
}
actions/mail/import.php000064400000016706151727150620011171 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Save the uploaded file(s) as messages to the current IMAP folder    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_import extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // clear all stored output properties (like scripts and env vars)
        $rcmail->output->reset();

        if (!empty($_FILES['_file']) && is_array($_FILES['_file'])) {
            $imported = 0;
            $folder   = $rcmail->storage->get_folder();

            foreach ((array) $_FILES['_file']['tmp_name'] as $i => $filepath) {
                // Process uploaded file if there is no error
                $err = $_FILES['_file']['error'][$i];

                if (!$err) {
                    // check file content type first
                    $ctype = rcube_mime::file_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i]);
                    list($mtype_primary, $mtype_secondary) = explode('/', $ctype);

                    if (in_array($ctype, ['application/zip', 'application/x-zip'])) {
                        $filepath = self::zip_extract($filepath);
                        if (empty($filepath)) {
                            continue;
                        }
                    }
                    else if (!in_array($mtype_primary, ['text', 'message'])) {
                        continue;
                    }

                    foreach ((array) $filepath as $file) {
                        // read the first few lines to detect header-like structure
                        $fp = fopen($file, 'r');
                        do {
                            $line = fgets($fp);
                        }
                        while ($line !== false && trim($line) == '');

                        if (!preg_match('/^From .+/', $line) && !preg_match('/^[a-z-_]+:\s+.+/i', $line)) {
                            continue;
                        }

                        $message = $lastline = '';
                        fseek($fp, 0);

                        while (($line = fgets($fp)) !== false) {
                            // importing mbox file, split by From - lines
                            if ($lastline === '' && strncmp($line, 'From ', 5) === 0 && strlen($line) > 5) {
                                if (!empty($message)) {
                                    $imported += (int) self::save_message($folder, $message);
                                }

                                $message  = $line;
                                $lastline = '';
                                continue;
                            }

                            $message .= $line;
                            $lastline = rtrim($line);
                        }

                        if (!empty($message)) {
                            $imported += (int) self::save_message($folder, $message);
                        }

                        // remove temp files extracted from zip
                        if (is_array($filepath)) {
                            unlink($file);
                        }
                    }
                }
                else {
                    self::upload_error($err);
                }
            }

            if ($imported) {
                $rcmail->output->show_message($rcmail->gettext(['name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => ['nr' => $imported]]), 'confirmation');
                $rcmail->output->command('command', 'list');
            }
            else {
                $rcmail->output->show_message('importmessageerror', 'error');
            }
        }
        else {
            self::upload_failure();
        }

        // send html page with JS calls as response
        $rcmail->output->send('iframe');
    }

    public static function zip_extract($path)
    {
        if (!class_exists('ZipArchive', false)) {
            return;
        }

        $zip   = new ZipArchive;
        $files = [];

        if ($zip->open($path)) {
            for ($i = 0; $i < $zip->numFiles; $i++) {
                $entry    = $zip->getNameIndex($i);
                $tmpfname = rcube_utils::temp_filename('zipimport');

                if (copy("zip://$path#$entry", $tmpfname)) {
                    $ctype = rcube_mime::file_content_type($tmpfname, $entry);
                    list($mtype_primary, ) = explode('/', $ctype);

                    if (in_array($mtype_primary, ['text', 'message'])) {
                        $files[] = $tmpfname;
                    }
                    else {
                        unlink($tmpfname);
                    }
                }
            }

            $zip->close();
        }

        return $files;
    }

    public static function save_message($folder, &$message)
    {
        $date = null;

        if (strncmp($message, 'From ', 5) === 0) {
            // Extract the mbox from_line
            $pos     = strpos($message, "\n");
            $from    = substr($message, 0, $pos);
            $message = substr($message, $pos + 1);

            // Read the received date, support only known date formats

            // RFC4155: "Sat Jan  3 01:05:34 1996"
            $mboxdate_rx = '/^([a-z]{3} [a-z]{3} [0-9 ][0-9] [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4})/i';
            // Roundcube/Zipdownload: "12-Dec-2016 10:56:33 +0100"
            $imapdate_rx = '/^([0-9]{1,2}-[a-z]{3}-[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9+-]{5})/i';

            if (
                ($pos = strpos($from, ' ', 6))
                && ($dt_str = substr($from, $pos + 1))
                && (preg_match($mboxdate_rx, $dt_str, $m) || preg_match($imapdate_rx, $dt_str, $m))
            ) {
                try {
                    $date = new DateTime($m[0], new DateTimeZone('UTC'));
                }
                catch (Exception $e) {
                    // ignore
                }
            }
        }

        // unquote ">From " lines in message body
        $message = preg_replace('/\n>([>]*)From /', "\n\\1From ", $message);
        $message = rtrim($message);
        $rcmail  = rcmail::get_instance();

        if ($rcmail->storage->save_message($folder, $message, '', false, [], $date)) {
            return true;
        }

        rcube::raise_error("Failed to import message to $folder", true, false);

        return false;
    }
}
actions/mail/search.php000064400000026632151727150620011123 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Mail messages search action                                         |
 +-----------------------------------------------------------------------+
 | Author: Benjamin Smith <defitro@gmail.com>                            |
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_search extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        @set_time_limit(170);  // extend default max_execution_time to ~3 minutes

        // reset list_page and old search results
        $rcmail->storage->set_page(1);
        $rcmail->storage->set_search_set(null);
        $_SESSION['page'] = 1;

        // get search string
        $str      = rcube_utils::get_input_string('_q', rcube_utils::INPUT_GET, true);
        $mbox     = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_GET, true);
        $filter   = rcube_utils::get_input_string('_filter', rcube_utils::INPUT_GET);
        $headers  = rcube_utils::get_input_string('_headers', rcube_utils::INPUT_GET);
        $scope    = rcube_utils::get_input_string('_scope', rcube_utils::INPUT_GET);
        $interval = rcube_utils::get_input_string('_interval', rcube_utils::INPUT_GET);
        $continue = rcube_utils::get_input_string('_continue', rcube_utils::INPUT_GET);

        $filter         = trim((string) $filter);
        $search_request = md5($mbox . $scope . $interval . $filter . $str);

        // Parse input
        list($subject, $search) = self::search_input($str, $headers, $scope, $mbox);

        // add list filter string
        $search_str = $filter && $filter != 'ALL' ? $filter : '';

        if ($search_interval = self::search_interval_criteria($interval)) {
            $search_str .= ' ' . $search_interval;
        }

        if (!empty($subject)) {
            $search_str .= str_repeat(' OR', count($subject)-1);
            foreach ($subject as $sub) {
                $search_str .= ' ' . $sub . ' ' . rcube_imap_generic::escape($search);
            }
        }

        $search_str  = trim($search_str);
        $sort_column = self::sort_column();
        $sort_order  = self::sort_order();

        // set message set for already stored (but incomplete) search request
        if (!empty($continue) && isset($_SESSION['search']) && $_SESSION['search_request'] == $continue) {
            $rcmail->storage->set_search_set($_SESSION['search']);
            $search_str = $_SESSION['search'][0];
        }

        // execute IMAP search
        if ($search_str) {
            $mboxes = [];

            // search all, current or subfolders folders
            if ($scope == 'all') {
                $mboxes = $rcmail->storage->list_folders_subscribed('', '*', 'mail', null, true);
                // we want natural alphabetic sorting of folders in the result set
                natcasesort($mboxes);
            }
            else if ($scope == 'sub') {
                $delim  = $rcmail->storage->get_hierarchy_delimiter();
                $mboxes = $rcmail->storage->list_folders_subscribed($mbox . $delim, '*', 'mail');
                array_unshift($mboxes, $mbox);
            }

            if ($scope != 'all') {
                // Remember current folder, it can change in meantime (plugins)
                // but we need it to e.g. recognize Sent folder to handle From/To column later
                $rcmail->output->set_env('mailbox', $mbox);
            }

            $result = $rcmail->storage->search($mboxes, $search_str, RCUBE_CHARSET, $sort_column);
        }

        // save search results in session
        if (!isset($_SESSION['search']) || !is_array($_SESSION['search'])) {
            $_SESSION['search'] = [];
        }

        if ($search_str) {
            $_SESSION['search'] = $rcmail->storage->get_search_set();
            $_SESSION['last_text_search'] = $str;
        }

        $_SESSION['search_request']  = $search_request;
        $_SESSION['search_scope']    = $scope;
        $_SESSION['search_interval'] = $interval;
        $_SESSION['search_filter']   = $filter;

        // Get the headers
        if (!isset($result) || empty($result->incomplete)) {
            $result_h = $rcmail->storage->list_messages($mbox, 1, $sort_column, $sort_order);
        }

        // Make sure we got the headers
        if (!empty($result_h)) {
            $count = $rcmail->storage->count($mbox, $rcmail->storage->get_threading() ? 'THREADS' : 'ALL');

            self::js_message_list($result_h, false);

            if ($search_str) {
                $all_count = $rcmail->storage->count(null, 'ALL');
                $rcmail->output->show_message('searchsuccessful', 'confirmation', ['nr' => $all_count]);
            }

            // remember last HIGHESTMODSEQ value (if supported)
            // we need it for flag updates in check-recent
            if ($mbox !== null) {
                $data = $rcmail->storage->folder_data($mbox);
                if (!empty($data['HIGHESTMODSEQ'])) {
                    $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
                }
            }
        }
        // handle IMAP errors (e.g. #1486905)
        else if ($err_code = $rcmail->storage->get_error_code()) {
            $count = 0;
            self::display_server_error();
        }
        // advice the client to re-send the (cross-folder) search request
        else if (!empty($result) && !empty($result->incomplete)) {
            $count = 0;  // keep UI locked
            $rcmail->output->command('continue_search', $search_request);
        }
        else {
            $count = 0;

            $rcmail->output->show_message('searchnomatch', 'notice');
            $rcmail->output->set_env('multifolder_listing', isset($result) ? !empty($result->multi) : false);

            if (isset($result) && !empty($result->multi) && $scope == 'all') {
                $rcmail->output->command('select_folder', '');
            }
        }

        // update message count display
        $rcmail->output->set_env('search_request', $search_str ? $search_request : '');
        $rcmail->output->set_env('search_filter', $_SESSION['search_filter']);
        $rcmail->output->set_env('messagecount', $count);
        $rcmail->output->set_env('pagecount', ceil($count / $rcmail->storage->get_pagesize()));
        $rcmail->output->set_env('exists', $mbox === null ? 0 : $rcmail->storage->count($mbox, 'EXISTS'));
        $rcmail->output->command('set_rowcount', self::get_messagecount_text($count, 1), $mbox);

        self::list_pagetitle();

        // update unseen messages count
        if ($search_str === '') {
            self::send_unread_count($mbox, false, empty($result_h) ? 0 : null);
        }

        if (isset($result) && empty($result->incomplete)) {
            $rcmail->output->command('set_quota', self::quota_content(null, !empty($result->multi) ? 'INBOX' : $mbox));
        }

        $rcmail->output->send();
    }

    /**
     * Creates BEFORE/SINCE search criteria from the specified interval
     * Interval can be: 1W, 1M, 1Y, -1W, -1M, -1Y
     */
    public static function search_interval_criteria($interval)
    {
        if (empty($interval)) {
            return;
        }

        if ($interval[0] == '-') {
            $search   = 'BEFORE';
            $interval = substr($interval, 1);
        }
        else {
            $search = 'SINCE';
        }

        $date     = new DateTime('now');
        $interval = new DateInterval('P' . $interval);

        $date->sub($interval);

        return $search . ' ' . $date->format('j-M-Y');
    }

    /**
     * Parse search input.
     *
     * @param string $str     Search string
     * @param string $headers Comma-separated list of headers/fields to search in
     * @param string $scope   Search scope (all | base | sub)
     * @param string $mbox    Folder name
     *
     * @return array Search criteria (1st element) and search value (2nd element)
     */
    public static function search_input($str, $headers, $scope, $mbox)
    {
        $rcmail    = rcmail::get_instance();
        $subject   = [];
        $srch      = null;
        $supported = ['subject', 'from', 'to', 'cc', 'bcc'];

        // Check the search string for type of search
        if (preg_match("/^(from|to|reply-to|cc|bcc|subject):.*/i", $str, $m)) {
            list(, $srch) = explode(":", $str);
            $subject[$m[1]] = 'HEADER ' . strtoupper($m[1]);
        }
        else if (preg_match("/^body:.*/i", $str)) {
            list(, $srch) = explode(":", $str);
            $subject['body'] = 'BODY';
        }
        else if (strlen(trim($str))) {
            if ($headers) {
                foreach (explode(',', $headers) as $header) {
                    switch ($header) {
                    case 'text':
                        // #1488208: get rid of other headers when searching by "TEXT"
                        $subject = ['text' => 'TEXT'];
                        break 2;
                    case 'body':
                        $subject['body'] = 'BODY';
                        break;
                    case 'replyto':
                    case 'reply-to':
                        $subject['reply-to'] = 'HEADER REPLY-TO';
                        $subject['mail-reply-to'] = 'HEADER MAIL-REPLY-TO';
                        break;
                    case 'followupto':
                    case 'followup-to':
                        $subject['followup-to'] = 'HEADER FOLLOWUP-TO';
                        $subject['mail-followup-to'] = 'HEADER MAIL-FOLLOWUP-TO';
                        break;
                    default:
                        if (in_array_nocase($header, $supported)) {
                            $subject[$header] = 'HEADER ' . strtoupper($header);
                        }
                    }
                }

                // save search modifiers for the current folder to user prefs
                if ($scope != 'all') {
                    $search_mods       = self::search_mods();
                    $search_mods_value = array_fill_keys(array_keys($subject), 1);

                    if (!isset($search_mods[$mbox]) || $search_mods[$mbox] != $search_mods_value) {
                        $search_mods[$mbox] = $search_mods_value;
                        $rcmail->user->save_prefs(['search_mods' => $search_mods]);
                    }
                }
            }
            else {
                // search in subject by default
                $subject['subject'] = 'HEADER SUBJECT';
            }
        }

        return [$subject, isset($srch) ? trim($srch) : trim($str)];
    }
}
actions/mail/attachment_display.php000064400000002663151727150620013531 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Display attachments in compose form                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_attachment_display extends rcmail_action_mail_attachment_upload
{
    protected static $mode = self::MODE_HTTP;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        self::init();
        self::display_uploaded_file(self::get_attachment());
        exit;
    }
}
actions/mail/folder_expunge.php000064400000004072151727150620012656 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Implement folder EXPUNGE request                                    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_folder_expunge extends rcmail_action
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $mbox   = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST, true);

        $success = $rcmail->storage->expunge_folder($mbox);

        // reload message list if current mailbox
        if ($success) {
            $rcmail->output->show_message('folderexpunged', 'confirmation');

            if (!empty($_REQUEST['_reload'])) {
                $rcmail->output->command('set_quota', self::quota_content(null, $mbox));
                $rcmail->output->command('message_list.clear');
                $rcmail->action = 'list';
                return;
            }
        }
        else {
            self::display_server_error();
        }

        $rcmail->output->send();
    }
}
actions/mail/attachment_rename.php000064400000004120151727150620013321 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Rename attachments in compose form                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_attachment_rename extends rcmail_action_mail_attachment_upload
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        self::init();

        $filename = rcube_utils::get_input_string('_name', rcube_utils::INPUT_POST);
        $filename = trim($filename);

        if (
            strlen($filename)
            && ($attachment = self::get_attachment())
            && is_array($attachment)
        ) {
            $attachment['name'] = $filename;

            $rcmail->session->remove(self::$SESSION_KEY . '.attachments. ' . self::$file_id);
            $rcmail->session->append(self::$SESSION_KEY . '.attachments', $attachment['id'], $attachment);

            $rcmail->output->command('rename_attachment_handler', 'rcmfile' . self::$file_id, $filename);
        }

        $rcmail->output->send();
    }
}
actions/mail/getunread.php000064400000005504151727150620011627 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Check all mailboxes for unread messages and update GUI              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_getunread extends rcmail_action_mail_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail    = rcmail::get_instance();
        $a_folders = $rcmail->storage->list_folders_subscribed('', '*', 'mail');

        if (!empty($a_folders)) {
            $current   = $rcmail->storage->get_folder();
            $inbox     = $current == 'INBOX';
            $trash     = $rcmail->config->get('trash_mbox');
            $check_all = (bool) $rcmail->config->get('check_all_folders');

            foreach ($a_folders as $mbox) {
                $unseen_old = self::get_unseen_count($mbox);

                if (!$check_all && $unseen_old !== null && $mbox != $current) {
                    $unseen = $unseen_old;
                }
                else {
                    $unseen = $rcmail->storage->count($mbox, 'UNSEEN', $unseen_old === null);
                }

                // call it always for current folder, so it can update counter
                // after possible message status change when opening a message
                // not in preview frame
                if ($unseen || $unseen_old === null || $mbox == $current) {
                    $rcmail->output->command('set_unread_count', $mbox, $unseen, $inbox && $mbox == 'INBOX');
                }

                self::set_unseen_count($mbox, $unseen);

                // set trash folder state
                if ($mbox === $trash) {
                    $rcmail->output->command('set_trash_count', $rcmail->storage->count($mbox, 'EXISTS'));
                }
            }
        }

        $rcmail->output->send();
    }
}
actions/mail/get.php000064400000037325151727150620010436 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Delivering a specific uploaded file or mail message attachment      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_get extends rcmail_action_mail_index
{
    protected static $attachment;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // This resets X-Frame-Options for framed output (#6688)
        $rcmail->output->page_headers();

        // show loading page
        if (!empty($_GET['_preload'])) {
            unset($_GET['_preload']);
            unset($_GET['_safe']);

            $url     = $rcmail->url($_GET + ['_mimewarning' => 1, '_embed' => 1]);
            $message = $rcmail->gettext('loadingdata');

            header('Content-Type: text/html; charset=' . RCUBE_CHARSET);
            print "<html>\n<head>\n"
                . '<meta http-equiv="refresh" content="0; url='.rcube::Q($url).'">' . "\n"
                . '<meta http-equiv="content-type" content="text/html; charset=' . RCUBE_CHARSET . '">' . "\n"
                . "</head>\n<body>\n$message\n</body>\n</html>";
            exit;
        }

        $attachment = new rcmail_attachment_handler;
        $mimetype = $attachment->mimetype;
        $filename = $attachment->filename;

        self::$attachment = $attachment;

        // show part page
        if (!empty($_GET['_frame'])) {
            $rcmail->output->set_pagetitle($filename);

            // register UI objects
            $rcmail->output->add_handlers([
                    'messagepartframe'    => [$this, 'message_part_frame'],
                    'messagepartcontrols' => [$this, 'message_part_controls'],
            ]);

            $part_id = rcube_utils::get_input_string('_part', rcube_utils::INPUT_GET);
            $uid     = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GET);

            // message/rfc822 preview (Note: handle also multipart/ parts, they can
            // come from Enigma, which replaces message/rfc822 with real mimetype)
            if ($part_id && ($mimetype == 'message/rfc822' || strpos($mimetype, 'multipart/') === 0)) {
                $uid = preg_replace('/\.[0-9.]+/', '', $uid);
                $uid .= '.' . $part_id;

                $rcmail->output->set_env('is_message', true);
            }

            $rcmail->output->set_env('mailbox', $rcmail->storage->get_folder());
            $rcmail->output->set_env('uid', $uid);
            $rcmail->output->set_env('part', $part_id);
            $rcmail->output->set_env('filename', $filename);
            $rcmail->output->set_env('mimetype', $mimetype);

            $rcmail->output->send('messagepart');
        }

        // render thumbnail of an image attachment
        if (!empty($_GET['_thumb']) && $attachment->is_valid()) {
            $thumbnail_size = $rcmail->config->get('image_thumbnail_size', 240);
            $file_ident     = $attachment->ident;
            $thumb_name     = 'thumb' . md5($file_ident . ':' . $rcmail->user->ID . ':' . $thumbnail_size);
            $cache_file     = rcube_utils::temp_filename($thumb_name, false, false);

            // render thumbnail image if not done yet
            if (!is_file($cache_file) && $attachment->body_to_file($orig_name = rcube_utils::temp_filename('attmnt'))) {
                $image = new rcube_image($orig_name);

                if ($imgtype = $image->resize($thumbnail_size, $cache_file, true)) {
                    $mimetype = 'image/' . $imgtype;
                }
                else {
                    // Resize failed, we need to check the file mimetype
                    // So, we do not exit here, but goto generic file body handler below
                    $_GET['_thumb']     = 0;
                    $_REQUEST['_embed'] = 1;
                }
            }

            if (!empty($_GET['_thumb'])) {
                if (is_file($cache_file)) {
                    $rcmail->output->future_expire_header(3600);
                    header('Content-Type: ' . $mimetype);
                    header('Content-Length: ' . filesize($cache_file));
                    readfile($cache_file);
                }

                exit;
            }
        }

        // Handle attachment body (display or download)
        if (empty($_GET['_thumb']) && $attachment->is_valid()) {
            // require CSRF protected url for downloads
            if (!empty($_GET['_download'])) {
                $rcmail->request_security_check(rcube_utils::INPUT_GET);
            }

            $extensions = rcube_mime::get_mime_extensions($mimetype);

            // compare file mimetype with the stated content-type headers and file extension to avoid malicious operations
            if (!empty($_REQUEST['_embed']) && empty($_REQUEST['_nocheck'])) {
                $file_extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));

                // 1. compare filename suffix with expected suffix derived from mimetype
                $valid = $file_extension && in_array($file_extension, (array)$extensions)
                    || empty($extensions)
                    || !empty($_REQUEST['_mimeclass']);

                // 2. detect the real mimetype of the attachment part and compare it with the stated mimetype and filename extension
                if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || stripos($mimetype, 'text/') === 0) {
                    $tmp_body = $attachment->body(2048);

                    // detect message part mimetype
                    $real_mimetype = rcube_mime::file_content_type($tmp_body, $filename, $mimetype, true, true);
                    list($real_ctype_primary, $real_ctype_secondary) = explode('/', $real_mimetype);

                    // accept text/plain with any extension
                    if ($real_mimetype == 'text/plain' && self::mimetype_compare($real_mimetype, $mimetype)) {
                        $valid_extension = true;
                    }
                    // ignore differences in text/* mimetypes. Filetype detection isn't very reliable here
                    else if ($real_ctype_primary == 'text' && strpos($mimetype, $real_ctype_primary) === 0) {
                        $real_mimetype   = $mimetype;
                        $valid_extension = true;
                    }
                    // ignore filename extension if mimeclass matches (#1489029)
                    else if (!empty($_REQUEST['_mimeclass']) && $real_ctype_primary == $_REQUEST['_mimeclass']) {
                        $valid_extension = true;
                    }
                    else {
                        // get valid file extensions
                        $extensions      = rcube_mime::get_mime_extensions($real_mimetype);
                        $valid_extension = !$file_extension || empty($extensions) || in_array($file_extension, (array)$extensions);
                    }

                    if (
                        // fix mimetype for files wrongly declared as octet-stream
                        ($mimetype == 'application/octet-stream' && $valid_extension)
                        // force detected mimetype for images (#8158)
                        || (strpos($real_mimetype, 'image/') === 0)
                    ) {
                        $mimetype = $real_mimetype;
                    }

                    // "fix" real mimetype the same way the original is before comparison
                    $real_mimetype = rcube_mime::fix_mimetype($real_mimetype);

                    $valid = $valid_extension && self::mimetype_compare($real_mimetype, $mimetype);
                }
                else {
                    $real_mimetype = $mimetype;
                }

                // show warning if validity checks failed
                if (!$valid) {
                    // send blocked.gif for expected images
                    if (empty($_REQUEST['_mimewarning']) && strpos($mimetype, 'image/') === 0) {
                        // Do not cache. Failure might be the result of a misconfiguration,
                        // thus real content should be returned once fixed.
                        $content = self::get_resource_content('blocked.gif');
                        $rcmail->output->nocacheing_headers();
                        header("Content-Type: image/gif");
                        header("Content-Transfer-Encoding: binary");
                        header("Content-Length: " . strlen($content));
                        echo $content;
                    }
                    // html warning with a button to load the file anyway
                    else {
                        $rcmail->output = new rcmail_html_page();
                        $rcmail->output->register_inline_warning(
                            $rcmail->gettext([
                                    'name' => 'attachmentvalidationerror',
                                    'vars' => [
                                        'expected' => $mimetype . (!empty($file_extension) ? rcube::Q(" (.{$file_extension})") : ''),
                                        'detected' => $real_mimetype . (!empty($extensions[0]) ? " (.{$extensions[0]})" : ''),
                                    ]
                            ]),
                            $rcmail->gettext('showanyway'),
                            $rcmail->url(array_merge($_GET, ['_nocheck' => 1]))
                        );

                        $rcmail->output->write();
                    }

                    exit;
                }
            }

            // TIFF/WEBP to JPEG conversion, if needed
            foreach (['tiff', 'webp'] as $type) {
                $img_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps'][$type]);
                if (
                    !empty($_REQUEST['_embed'])
                    && !$img_support
                    && $attachment->image_type() == 'image/' . $type
                    && rcube_image::is_convertable('image/' . $type)
                ) {
                    $convert2jpeg = true;
                    $mimetype     = 'image/jpeg';
                    break;
                }
            }

            // deliver part content
            if ($mimetype == 'text/html' && empty($_GET['_download'])) {
                $rcmail->output = new rcmail_html_page();
                $out = '';

                // Check if we have enough memory to handle the message in it
                // #1487424: we need up to 10x more memory than the body
                if (!rcube_utils::mem_check($attachment->size * 10)) {
                    $rcmail->output->register_inline_warning(
                        $rcmail->gettext('messagetoobig'),
                        $rcmail->gettext('download'),
                        $rcmail->url(array_merge($_GET, ['_download' => 1]))
                    );
                }
                else {
                    // render HTML body
                    $out = $attachment->html();

                    // insert remote objects warning into HTML body
                    if (self::$REMOTE_OBJECTS) {
                        $rcmail->output->register_inline_warning(
                            $rcmail->gettext('blockedresources'),
                            $rcmail->gettext('allow'),
                            $rcmail->url(array_merge($_GET, ['_safe' => 1]))
                        );
                    }
                }

                $rcmail->output->write($out);
                exit;
            }

            // add filename extension if missing
            if (!pathinfo($filename, PATHINFO_EXTENSION) && ($extensions = rcube_mime::get_mime_extensions($mimetype))) {
                $filename .= '.' . $extensions[0];
            }

            $rcmail->output->download_headers($filename, [
                    'type'         => $mimetype,
                    'type_charset' => $attachment->charset,
                    'disposition'  => !empty($_GET['_download']) ? 'attachment' : 'inline',
            ]);

            // handle tiff to jpeg conversion
            if (!empty($convert2jpeg)) {
                $file_path = rcube_utils::temp_filename('attmnt');

                // convert image to jpeg and send it to the browser
                if ($attachment->body_to_file($file_path)) {
                    $image = new rcube_image($file_path);
                    if ($image->convert(rcube_image::TYPE_JPG, $file_path)) {
                        header("Content-Length: " . filesize($file_path));
                        readfile($file_path);
                    }
                }
            }
            else {
                $attachment->output($mimetype);
            }

            exit;
        }

        // if we arrive here, the requested part was not found
        header('HTTP/1.1 404 Not Found');
        exit;
    }

    /**
     * Compares two mimetype strings with making sure that
     * e.g. image/bmp and image/x-ms-bmp are treated as equal.
     */
    public static function mimetype_compare($type1, $type2)
    {
        $regexp = '~/(x-ms-|x-)~';
        $type1  = preg_replace($regexp, '/', $type1);
        $type2  = preg_replace($regexp, '/', $type2);

        return $type1 === $type2;
    }

    /**
     * Attachment properties table
     */
    public static function message_part_controls($attrib)
    {
        if (!self::$attachment->is_valid()) {
            return '';
        }

        $rcmail = rcmail::get_instance();
        $table  = new html_table(['cols' => 2]);

        $table->add('title', rcube::Q($rcmail->gettext('namex')).':');
        $table->add('header', rcube::Q(self::$attachment->filename));

        $table->add('title', rcube::Q($rcmail->gettext('type')).':');
        $table->add('header', rcube::Q(self::$attachment->mimetype));

        $table->add('title', rcube::Q($rcmail->gettext('size')).':');
        $table->add('header', rcube::Q(self::$attachment->size()));

        return $table->show($attrib);
    }

    /**
     * Attachment preview frame
     */
    public static function message_part_frame($attrib)
    {
        $rcmail = rcmail::get_instance();

        if ($rcmail->output->get_env('is_message')) {
            $url = [
                'task'   => 'mail',
                'action' => 'preview',
                'uid'    => $rcmail->output->get_env('uid'),
                'mbox'   => $rcmail->output->get_env('mailbox'),
            ];
        }
        else {
            $mimetype = $rcmail->output->get_env('mimetype');
            $url      = $_GET;
            $url[strpos($mimetype, 'text/') === 0 ? '_embed' : '_preload'] = 1;
            unset($url['_frame']);
        }

        $url['_framed'] = 1; // For proper X-Frame-Options:deny handling

        $attrib['src'] = $rcmail->url($url);

        $rcmail->output->add_gui_object('messagepartframe', $attrib['id']);

        return html::iframe($attrib);
    }
}
actions/mail/attachment_upload.php000064400000026522151727150620013350 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Attachment uploads handler for the compose form                     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_attachment_upload extends rcmail_action_mail_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    protected static $SESSION_KEY;
    protected static $COMPOSE;
    protected static $COMPOSE_ID;
    protected static $file_id;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        self::init();

        // clear all stored output properties (like scripts and env vars)
        $rcmail->output->reset();

        $uploadid = rcube_utils::get_input_string('_uploadid', rcube_utils::INPUT_GPC);
        $uri      = rcube_utils::get_input_string('_uri', rcube_utils::INPUT_POST);

        // handle dropping a reference to an attachment part of some message
        if ($uri) {
            $attachment = null;

            $url = parse_url($uri);

            if (!empty($url['query'])) {
                parse_str($url['query'], $params);
            }

            if (
                !empty($params) && isset($params['_mbox']) && strlen($params['_mbox'])
                && !empty($params['_uid']) && !empty($params['_part'])
            ) {
                // @TODO: at some point we might support drag-n-drop between
                // two different accounts on the same server, for now make sure
                // this is the same server and the same user
                list($host, $port) = rcube_utils::explode(':', $_SERVER['HTTP_HOST']);

                if (
                    $host == $url['host']
                    && $port == ($url['port'] ?? null)
                    && $rcmail->get_user_name() == rawurldecode($url['user'])
                ) {
                    $message = new rcube_message($params['_uid'], $params['_mbox']);

                    if ($message && !empty($message->headers)) {
                        $attachment = rcmail_action_mail_compose::save_attachment($message, $params['_part'], self::$COMPOSE_ID);
                    }
                }
            }

            $plugin = $rcmail->plugins->exec_hook('attachment_from_uri', [
                    'attachment' => $attachment,
                    'uri'        => $uri,
                    'compose_id' => self::$COMPOSE_ID
            ]);

            if ($plugin['attachment']) {
                self::attachment_success($plugin['attachment'], $uploadid);
            }
            else {
                $rcmail->output->command('display_message', $rcmail->gettext('filelinkerror'), 'error');
                $rcmail->output->command('remove_from_attachment_list', $uploadid);
            }

            $rcmail->output->send();
        }

        // handle file(s) upload
        if (is_array($_FILES['_attachments']['tmp_name'])) {
            $multiple = count($_FILES['_attachments']['tmp_name']) > 1;
            $errors   = [];

            foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath) {
                // Process uploaded attachment if there is no error
                $err = $_FILES['_attachments']['error'][$i];

                if (!$err) {
                    $filename = $_FILES['_attachments']['name'][$i];
                    $filesize = $_FILES['_attachments']['size'][$i];
                    $filetype = rcube_mime::file_content_type($filepath, $filename, $_FILES['_attachments']['type'][$i]);

                    if ($err = self::check_message_size($filesize, $filetype)) {
                        if (!in_array($err, $errors)) {
                            $rcmail->output->command('display_message', $err, 'error');
                            $rcmail->output->command('remove_from_attachment_list', $uploadid);
                            $errors[] = $err;
                        }

                        continue;
                    }

                    $attachment = $rcmail->plugins->exec_hook('attachment_upload', [
                            'path'     => $filepath,
                            'name'     => $filename,
                            'size'     => $filesize,
                            'mimetype' => $filetype,
                            'group'    => self::$COMPOSE_ID,
                    ]);
                }

                if (!$err && !empty($attachment['status']) && empty($attachment['abort'])) {
                    // store new attachment in session
                    unset($attachment['status'], $attachment['abort']);
                    $rcmail->session->append(self::$SESSION_KEY . '.attachments', $attachment['id'], $attachment);

                    self::attachment_success($attachment, $uploadid);
                }
                else {  // upload failed
                    if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
                        $size = self::show_bytes(rcube_utils::max_upload_size());
                        $msg  = $rcmail->gettext(['name' => 'filesizeerror', 'vars' => ['size' => $size]]);
                    }
                    else if (!empty($attachment['error'])) {
                        $msg = $attachment['error'];
                    }
                    else {
                        $msg = $rcmail->gettext('fileuploaderror');
                    }

                    if (!empty($attachment['error']) || $err != UPLOAD_ERR_NO_FILE) {
                        if (!in_array($msg, $errors)) {
                            $rcmail->output->command('display_message', $msg, 'error');
                            $rcmail->output->command('remove_from_attachment_list', $uploadid);
                            $errors[] = $msg;
                        }
                    }
                }
            }
        }
        else if (self::upload_failure()) {
            $rcmail->output->command('remove_from_attachment_list', $uploadid);
        }

        // send html page with JS calls as response
        $rcmail->output->command('auto_save_start', false);
        $rcmail->output->send('iframe');
    }

    public static function init()
    {
        self::$COMPOSE_ID  = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GPC);
        self::$COMPOSE     = null;
        self::$SESSION_KEY = 'compose_data_' . self::$COMPOSE_ID;

        if (self::$COMPOSE_ID && !empty($_SESSION[self::$SESSION_KEY])) {
            self::$COMPOSE =& $_SESSION[self::$SESSION_KEY];
        }

        if (!self::$COMPOSE) {
            die("Invalid session var!");
        }

        self::$file_id = rcube_utils::get_input_string('_file', rcube_utils::INPUT_GPC);
        self::$file_id = preg_replace('/^rcmfile/', '', self::$file_id) ?: 'unknown';
    }

    public static function get_attachment()
    {
        return self::$COMPOSE['attachments'][self::$file_id] ?? null;
    }

    public static function attachment_success($attachment, $uploadid)
    {
        $rcmail = rcmail::get_instance();
        $id     = $attachment['id'];

        if (!empty(self::$COMPOSE['deleteicon']) && is_file(self::$COMPOSE['deleteicon'])) {
            $button = html::img([
                    'src' => self::$COMPOSE['deleteicon'],
                    'alt' => $rcmail->gettext('delete')
            ]);
        }
        else if (!empty(self::$COMPOSE['textbuttons'])) {
            $button = rcube::Q($rcmail->gettext('delete'));
        }
        else {
            $button = '';
        }

        $link_content = sprintf(
            '<span class="attachment-name">%s</span><span class="attachment-size">(%s)</span>',
            rcube::Q($attachment['name']), self::show_bytes($attachment['size'])
        );

        $content_link = html::a([
                'href'    => "#load",
                'class'   => 'filename',
                'onclick' => sprintf(
                    "return %s.command('load-attachment','rcmfile%s', this, event)",
                    rcmail_output::JS_OBJECT_NAME,
                    $id
                ),
            ], $link_content);

        $delete_link = html::a([
                'href'    => "#delete",
                'onclick' => sprintf(
                    "return %s.command('remove-attachment','rcmfile%s', this, event)",
                    rcmail_output::JS_OBJECT_NAME,
                    $id
                ),
                'title'   => $rcmail->gettext('delete'),
                'class'   => 'delete',
                'aria-label' => $rcmail->gettext('delete') . ' ' . $attachment['name'],
            ], $button);

        if (!empty(self::$COMPOSE['icon_pos']) && self::$COMPOSE['icon_pos'] == 'left') {
            $content = $delete_link . $content_link;
        }
        else {
            $content = $content_link . $delete_link;
        }

        $rcmail->output->command('add2attachment_list', "rcmfile$id", [
                'html'      => $content,
                'name'      => $attachment['name'],
                'mimetype'  => $attachment['mimetype'],
                'classname' => rcube_utils::file2class($attachment['mimetype'], $attachment['name']),
                'complete'  => true
            ],
            $uploadid
        );
    }

    /**
     * Checks if the attached file will fit in message size limit.
     * Calculates size of all attachments and compares with the limit.
     *
     * @param int    $filesize File size
     * @param string $filetype File mimetype
     *
     * @return string Error message if the limit is exceeded
     */
    public static function check_message_size($filesize, $filetype)
    {
        $rcmail = rcmail::get_instance();
        $limit  = parse_bytes($rcmail->config->get('max_message_size'));
        $size   = 10 * 1024; // size of message body

        if (!$limit) {
            return;
        }

        // add size of already attached files
        if (!empty(self::$COMPOSE['attachments'])) {
            foreach ((array) self::$COMPOSE['attachments'] as $att) {
                // All attachments are base64-encoded except message/rfc822 (see sendmail.inc)
                $multip = $att['mimetype'] == 'message/rfc822' ? 1 : 1.33;
                $size  += $att['size'] * $multip;
            }
        }

        // add size of the new attachment
        $multip = $filetype == 'message/rfc822' ? 1 : 1.33;
        $size  += $filesize * $multip;

        if ($size > $limit) {
            $limit = self::show_bytes($limit);
            return $rcmail->gettext(['name' => 'msgsizeerror', 'vars' => ['size' => $limit]]);
        }
    }
}
actions/mail/bounce.php000064400000012323151727150620011121 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Bounce/resend an email message                                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_bounce extends rcmail_action
{
    protected static $MESSAGE;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail     = rcmail::get_instance();
        $msg_uid    = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GP);
        $msg_folder = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_GP, true);
        $MESSAGE    = new rcube_message($msg_uid, $msg_folder);

        self::$MESSAGE = $MESSAGE;

        if (!$MESSAGE->headers) {
            $rcmail->output->show_message('messageopenerror', 'error');
            $rcmail->output->send('iframe');
        }

        // Display Bounce form
        if (empty($_POST)) {
            if (!empty($MESSAGE->headers->charset)) {
                $rcmail->storage->set_charset($MESSAGE->headers->charset);
            }

            // Initialize helper class to build the UI
            $SENDMAIL = new rcmail_sendmail(
                ['mode' => rcmail_sendmail::MODE_FORWARD],
                ['message' => $MESSAGE]
            );

            $rcmail->output->set_env('mailbox', $msg_folder);
            $rcmail->output->set_env('uid', $msg_uid);
            $rcmail->output->add_handler('bounceobjects', [$this, 'bounce_objects']);
            $rcmail->output->send('bounce');
        }

        // Initialize helper class to send the message
        $SENDMAIL = new rcmail_sendmail(
            ['mode' => rcmail_sendmail::MODE_FORWARD],
            [
                'sendmail'      => true,
                'error_handler' => function(...$args) use ($rcmail) {
                    call_user_func_array([$rcmail->output, 'show_message'], $args);
                    $rcmail->output->send('iframe');
                }
            ]
        );

        // Handle the form input
        $input_headers = $SENDMAIL->headers_input();

        // Set Resent-* headers, these will be added on top of the bounced message
        $headers = [];
        foreach (['From', 'To', 'Cc', 'Bcc', 'Date', 'Message-ID'] as $name) {
            if (!empty($input_headers[$name])) {
                $headers['Resent-' . $name] = $input_headers[$name];
            }
        }

        // Create the bounce message
        $BOUNCE = new rcmail_resend_mail([
                'bounce_message' => $MESSAGE,
                'bounce_headers' => $headers,
        ]);

        // Send the bounce message
        $SENDMAIL->deliver_message($BOUNCE);

        // Save in Sent (if requested)
        $saved = $SENDMAIL->save_message($BOUNCE);

        if (!$saved && strlen($SENDMAIL->options['store_target'])) {
            self::display_server_error('errorsaving');
        }

        $rcmail->output->show_message('messagesent', 'confirmation', null, false);
        $rcmail->output->send('iframe');
    }

    /**
     * Handler for template object 'bounceObjects'
     *
     * @param array $attrib HTML attributes
     *
     * @return string HTML content
     */
    public static function bounce_objects($attrib)
    {
        if (empty($attrib['id'])) {
            $attrib['id'] = 'bounce-objects';
        }

        $rcmail  = rcmail::get_instance();
        $content = [];

        // Always display a hint about the bounce feature behavior
        $msg        = html::span(null, rcube::Q($rcmail->gettext('bouncehint')));
        $msg_attrib = ['id' => 'bounce-hint', 'class' => 'boxinformation'];
        $content[]  = html::div($msg_attrib, $msg);

        // Add a warning about Bcc recipients
        if (self::$MESSAGE->headers->get('bcc', false) || self::$MESSAGE->headers->get('resent-bcc', false)) {
            $msg        = html::span(null, rcube::Q($rcmail->gettext('bccemail')));
            $msg_attrib = ['id' => 'bcc-warning', 'class' => 'boxwarning'];
            $content[]  = html::div($msg_attrib, $msg);
        }

        $plugin = $rcmail->plugins->exec_hook('bounce_objects',
            ['content' => $content, 'message' => self::$MESSAGE]);

        $content = implode("\n", $plugin['content']);

        return $content ? html::div($attrib, $content) : '';
    }
}
actions/mail/autocomplete.php000064400000022434151727150620012353 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Perform a search on configured address books for the email          |
 |   address autocompletion                                              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_autocomplete extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $MAXNUM = (int) $rcmail->config->get('autocomplete_max', 15);
        $mode   = (int) $rcmail->config->get('addressbook_search_mode');
        $single = (bool) $rcmail->config->get('autocomplete_single');
        $search = rcube_utils::get_input_string('_search', rcube_utils::INPUT_GPC, true);
        $reqid  = rcube_utils::get_input_string('_reqid', rcube_utils::INPUT_GPC);

        $contacts = [];

        if (strlen($search) && ($book_types = self::autocomplete_addressbooks())) {
            $sort_keys = [];
            $books_num = count($book_types);
            $search_lc = mb_strtolower($search);
            $mode     |= rcube_addressbook::SEARCH_GROUPS;
            $fields    = $rcmail->config->get('contactlist_fields');

            foreach ($book_types as $abook_id) {
                $abook = $rcmail->get_address_book($abook_id);
                $abook->set_pagesize($MAXNUM);

                if ($result = $abook->search($fields, $search, $mode, true, true, 'email')) {
                    while ($record = $result->iterate()) {
                        // Contact can have more than one e-mail address
                        $email_arr = (array) $abook->get_col_values('email', $record, true);
                        $email_cnt = count($email_arr);
                        $idx       = 0;

                        foreach ($email_arr as $email) {
                            if (empty($email)) {
                                continue;
                            }

                            $name    = rcube_addressbook::compose_list_name($record);
                            $contact = format_email_recipient($email, $name);

                            // skip entries that don't match
                            if ($email_cnt > 1 && strpos(mb_strtolower($contact), $search_lc) === false) {
                                continue;
                            }

                            $index = $contact;

                            // skip duplicates
                            if (empty($contacts[$index])) {
                                $contact = [
                                    'name'   => $contact,
                                    'type'   => $record['_type'] ?? null,
                                    'id'     => $record['ID'],
                                    'source' => $abook_id,
                                ];

                                $display = rcube_addressbook::compose_search_name($record, $email, $name);

                                if ($display && $display != $contact['name']) {
                                    $contact['display'] = $display;
                                }

                                // groups with defined email address will not be expanded to its members' addresses
                                if ($contact['type'] == 'group') {
                                    $contact['email'] = $email;
                                }

                                $name              = !empty($contact['display']) ? $contact['display'] : $name;
                                $contacts[$index]  = $contact;
                                $sort_keys[$index] = sprintf('%s %03d', $name, $idx++);

                                if (count($contacts) >= $MAXNUM) {
                                    break 2;
                                }
                            }

                            // skip redundant entries (show only first email address)
                            if ($single) {
                                break;
                            }
                        }
                    }
                }

                // also list matching contact groups
                if ($abook->groups && count($contacts) < $MAXNUM) {
                    foreach ($abook->list_groups($search, $mode) as $group) {
                        $abook->reset();
                        $abook->set_group($group['ID']);

                        $group_prop = $abook->get_group($group['ID']);

                        // group (distribution list) with email address(es)
                        if (!empty($group_prop['email'])) {
                            $idx = 0;
                            foreach ((array) $group_prop['email'] as $email) {
                                $index = format_email_recipient($email, $group['name']);

                                if (empty($contacts[$index])) {
                                    $sort_keys[$index] = sprintf('%s %03d', $group['name'] , $idx++);
                                    $contacts[$index]  = [
                                        'name'   => $index,
                                        'email'  => $email,
                                        'type'   => 'group',
                                        'id'     => $group['ID'],
                                        'source' => $abook_id,
                                    ];

                                    if (count($contacts) >= $MAXNUM) {
                                        break 3;
                                    }
                                }
                            }
                        }
                        // show group with count
                        else if (($result = $abook->count()) && $result->count) {
                            if (empty($contacts[$group['name']])) {
                                $sort_keys[$group['name']] = $group['name'];
                                $contacts[$group['name']]  = [
                                    'name'   => $group['name'] . ' (' . intval($result->count) . ')',
                                    'type'   => 'group',
                                    'id'     => $group['ID'],
                                    'source' => $abook_id,
                                ];

                                if (count($contacts) >= $MAXNUM) {
                                    break 2;
                                }
                            }
                        }
                    }
                }
            }

            if (count($contacts)) {
                // sort contacts index
                asort($sort_keys, SORT_LOCALE_STRING);
                // re-sort contacts according to index
                foreach ($sort_keys as $idx => $val) {
                    $sort_keys[$idx] = $contacts[$idx];
                }
                $contacts = array_values($sort_keys);
            }
        }

        // Allow autocomplete result optimization via plugin
        $plugin = $rcmail->plugins->exec_hook('contacts_autocomplete_after', [
                'search'   => $search,
                // Provide already-found contacts to plugin if they are required
                'contacts' => $contacts,
        ]);

        $contacts = $plugin['contacts'];

        $rcmail->output->command('ksearch_query_results', $contacts, $search, $reqid);
        $rcmail->output->send();
    }

    /**
     * Collect addressbook sources used for autocompletion
     */
    public static function autocomplete_addressbooks()
    {
        $rcmail = rcmail::get_instance();
        $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);

        if (strlen($source)) {
            $book_types = [$source];
        }
        else {
            $book_types = (array) $rcmail->config->get('autocomplete_addressbooks', 'sql');
        }

        $collected_recipients = $rcmail->config->get('collected_recipients');
        $collected_senders    = $rcmail->config->get('collected_senders');

        if (strlen($collected_recipients) && !in_array($collected_recipients, $book_types)) {
            $book_types[] = $collected_recipients;
        }

        if (strlen($collected_senders) && !in_array($collected_senders, $book_types)) {
            $book_types[] = $collected_senders;
        }

        return !empty($book_types) ? $book_types : null;
    }
}
actions/mail/delete.php000064400000012733151727150620011115 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handler for mail delete operation                                   |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_delete extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // count messages before changing anything
        $threading = (bool) $rcmail->storage->get_threading();
        $trash     = $rcmail->config->get('trash_mbox');
        $sources   = [];
        $old_count = 0;
        $deleted   = 0;
        $count     = 0;

        if (empty($_POST['_from']) || $_POST['_from'] != 'show') {
            $old_count = $rcmail->storage->count(null, $threading ? 'THREADS' : 'ALL');
        }

        if (empty($_POST['_uid'])) {
            $rcmail->output->show_message('internalerror', 'error');
            $rcmail->output->send();
        }

        foreach (rcmail::get_uids(null, null, $multifolder, rcube_utils::INPUT_POST) as $mbox => $uids) {
            $deleted  += (int) $rcmail->storage->delete_message($uids, $mbox);
            $count    += is_array($uids) ? count($uids) : 1;
            $sources[] = $mbox;
        }

        if (empty($deleted)) {
            // send error message
            if ($_POST['_from'] != 'show') {
                $rcmail->output->command('list_mailbox');
            }

            self::display_server_error('errordeleting');
            $rcmail->output->send();
        }
        else {
            $rcmail->output->show_message('messagedeleted', 'confirmation');
        }

        $search_request = rcube_utils::get_input_string('_search', rcube_utils::INPUT_GPC);

        // refresh saved search set after moving some messages
        if ($search_request && $rcmail->storage->get_search_set()) {
            $_SESSION['search'] = $rcmail->storage->refresh_search();
        }

        if (!empty($_POST['_from']) && $_POST['_from'] == 'show') {
            if ($next = rcube_utils::get_input_string('_next_uid', rcube_utils::INPUT_GPC)) {
                $rcmail->output->command('show_message', $next);
            }
            else {
                $rcmail->output->command('command', 'list');
            }

            $rcmail->output->send();
        }

        $mbox           = $rcmail->storage->get_folder();
        $msg_count      = $rcmail->storage->count(null, $threading ? 'THREADS' : 'ALL');
        $exists         = $rcmail->storage->count($mbox, 'EXISTS', true);
        $page_size      = $rcmail->storage->get_pagesize();
        $page           = $rcmail->storage->get_page();
        $pages          = ceil($msg_count / $page_size);
        $nextpage_count = $old_count - $page_size * $page;
        $remaining      = $msg_count - $page_size * ($page - 1);
        $jump_back      = false;

        // jump back one page (user removed the whole last page)
        if ($page > 1 && $remaining == 0) {
            $page -= 1;
            $rcmail->storage->set_page($page);
            $_SESSION['page'] = $page;
            $jump_back = true;
        }

        // update unseen messages counts for all involved folders
        foreach ($sources as $source) {
            self::send_unread_count($source, true);
        }

        // update message count display
        $rcmail->output->set_env('messagecount', $msg_count);
        $rcmail->output->set_env('current_page', $page);
        $rcmail->output->set_env('pagecount', $pages);
        $rcmail->output->set_env('exists', $exists);
        $rcmail->output->command('set_quota', self::quota_content(null, $multifolder ? $sources[0] : 'INBOX'));
        $rcmail->output->command('set_rowcount', self::get_messagecount_text($msg_count), $mbox);

        if ($threading) {
            $count = rcube_utils::get_input_string('_count', rcube_utils::INPUT_POST);
        }

        // add new rows from next page (if any)
        if (!empty($count) && $_POST['_uid'] != '*' && ($jump_back || $nextpage_count > 0)) {
            // #5862: Don't add more rows than it was on the next page
            $count = $jump_back ? null : min($nextpage_count, $count);

            $a_headers = $rcmail->storage->list_messages($mbox, null, self::sort_column(), self::sort_order(), $count);

            self::js_message_list($a_headers, false);
        }

        // set trash folder state
        if ($mbox === $trash) {
            $rcmail->output->command('set_trash_count', $exists);
        }

        // send response
        $rcmail->output->send();
    }
}
actions/mail/copy.php000064400000004756151727150620010633 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Copy the submitted messages to a specific mailbox                   |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_copy extends rcmail_action_mail_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // copy messages
        if (empty($_POST['_uid']) || !isset($_POST['_target_mbox']) || !strlen($_POST['_target_mbox'])) {
            $rcmail->output->show_message('internalerror', 'error');
        }

        $uids    = self::get_uids(null, null, $multifolder, rcube_utils::INPUT_POST);
        $target  = rcube_utils::get_input_string('_target_mbox', rcube_utils::INPUT_POST, true);
        $sources = [];
        $copied  = false;

        foreach ($uids as $mbox => $uids) {
            if ($mbox === $target) {
                $copied++;
            }
            else {
                $copied += (int) $rcmail->storage->copy_message($uids, $target, $mbox);
                $sources[] = $mbox;
            }
        }

        if (!$copied) {
            self::display_server_error('errorcopying');
        }
        else {
            $rcmail->output->show_message('messagecopied', 'confirmation');

            self::send_unread_count($target, true);

            $rcmail->output->command('set_quota', self::quota_content(null, $multifolder ? $sources[0] : 'INBOX'));
        }

        $rcmail->output->send();
    }
}
actions/mail/sendmdn.php000064400000014550151727150620011302 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Send a message disposition notification for a specific mail         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_sendmdn extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if ($uid = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_POST)) {
            $sent = self::send_mdn($uid, $smtp_error);
        }

        // show either confirm or error message
        if (!empty($sent)) {
            $rcmail->output->set_env('mdn_request', false);
            $rcmail->output->show_message('receiptsent', 'confirmation');
        }
        else if (!empty($smtp_error) && is_string($smtp_error)) {
            $rcmail->output->show_message($smtp_error, 'error');
        }
        else if (!empty($smtp_error) && !empty($smtp_error['label'])) {
            $rcmail->output->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
        }
        else {
            $rcmail->output->show_message('errorsendingreceipt', 'error');
        }

        // Redirect to 'addcontact' action to save the sender address
        if (!empty($_POST['_save'])) {
            if ($_POST['_save'] == 5) {
                $_POST['_source'] = rcube_addressbook::TYPE_TRUSTED_SENDER;
            }

            $rcmail->action = 'addcontact';
            return;
        }

        $rcmail->output->send();
    }

    /**
     * Send the MDN response
     *
     * @param mixed        $message    Original message object (rcube_message) or UID
     * @param array|string $smtp_error SMTP error array or (deprecated) string
     *
     * @return bool Send status
     */
    public static function send_mdn($message, &$smtp_error)
    {
        $rcmail = rcmail::get_instance();

        if (!is_object($message) || !is_a($message, 'rcube_message')) {
            $message = new rcube_message($message);
        }

        if ($message->headers->mdn_to && empty($message->headers->flags['MDNSENT']) &&
            ($rcmail->storage->check_permflag('MDNSENT') || $rcmail->storage->check_permflag('*'))
        ) {
            $charset   = $message->headers->charset;
            $identity  = rcmail_sendmail::identity_select($message);
            $sender    = format_email_recipient($identity['email'], $identity['name']);
            $recipient = array_first(rcube_mime::decode_address_list($message->headers->mdn_to, 1, true, $charset));
            $mailto    = $recipient['mailto'];

            $compose = new Mail_mime("\r\n");

            $compose->setParam('text_encoding', 'quoted-printable');
            $compose->setParam('html_encoding', 'quoted-printable');
            $compose->setParam('head_encoding', 'quoted-printable');
            $compose->setParam('head_charset', RCUBE_CHARSET);
            $compose->setParam('html_charset', RCUBE_CHARSET);
            $compose->setParam('text_charset', RCUBE_CHARSET);

            // compose headers array
            $headers = [
                'Date'       => $rcmail->user_date(),
                'From'       => $sender,
                'To'         => $message->headers->mdn_to,
                'Subject'    => $rcmail->gettext('receiptread') . ': ' . $message->subject,
                'Message-ID' => $rcmail->gen_message_id($identity['email']),
                'X-Sender'   => $identity['email'],
                'References' => trim($message->headers->references . ' ' . $message->headers->messageID),
                'In-Reply-To' => $message->headers->messageID,
            ];

            $report = "Final-Recipient: rfc822; {$identity['email']}\r\n"
                . "Original-Message-ID: {$message->headers->messageID}\r\n"
                . "Disposition: manual-action/MDN-sent-manually; displayed\r\n";

            if ($message->headers->to) {
                $report .= "Original-Recipient: {$message->headers->to}\r\n";
            }

            if ($agent = $rcmail->config->get('useragent')) {
                $headers['User-Agent'] = $agent;
                $report .= "Reporting-UA: $agent\r\n";
            }

            $to   = rcube_mime::decode_mime_string($message->headers->to, $charset);
            $date = $rcmail->format_date($message->headers->date, $rcmail->config->get('date_long'));
            $body = $rcmail->gettext("yourmessage") . "\r\n\r\n" .
                "\t" . $rcmail->gettext("to") . ": {$to}\r\n" .
                "\t" . $rcmail->gettext("subject") . ": {$message->subject}\r\n" .
                "\t" . $rcmail->gettext("date") . ": {$date}\r\n" .
                "\r\n" . $rcmail->gettext("receiptnote");

            $compose->headers(array_filter($headers));
            $compose->setContentType('multipart/report', ['report-type'=> 'disposition-notification']);
            $compose->setTXTBody(rcube_mime::wordwrap($body, 75, "\r\n"));
            $compose->addAttachment($report, 'message/disposition-notification', 'MDNPart2.txt', false, '7bit', 'inline');

            // SMTP options
            $options = ['mdn_use_from' => (bool) $rcmail->config->get('mdn_use_from')];

            $sent = $rcmail->deliver_message($compose, $identity['email'], $mailto, $smtp_error, $body_file, $options, true);

            if ($sent) {
                $rcmail->storage->set_flag($message->uid, 'MDNSENT');
                return true;
            }
        }

        return false;
    }
}
actions/mail/search_contacts.php000064400000013213151727150620013010 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Search contacts from the address book widget                        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_search_contacts extends rcmail_action_mail_list_contacts
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail        = rcmail::get_instance();
        $search        = rcube_utils::get_input_string('_q', rcube_utils::INPUT_GPC, true);
        $sources       = $rcmail->get_address_sources();
        $search_mode   = (int) $rcmail->config->get('addressbook_search_mode');
        $addr_sort_col = $rcmail->config->get('addressbook_sort_col', 'name');
        $afields       = $rcmail->config->get('contactlist_fields');
        $page_size     = $rcmail->config->get('addressbook_pagesize', $rcmail->config->get('pagesize', 50));
        $records       = [];
        $search_set    = [];
        $jsresult      = [];
        $search_mode  |= rcube_addressbook::SEARCH_GROUPS;

        foreach ($sources as $s) {
            $source = $rcmail->get_address_book($s['id']);
            $source->set_page(1);
            $source->set_pagesize(9999);

            // list matching groups of this source
            if ($source->groups) {
                $jsresult += self::compose_contact_groups($source, $s['id'], $search, $search_mode);
            }

            // get contacts count
            $result = $source->search($afields, $search, $search_mode, true, true, 'email');

            if (!$result->count) {
                continue;
            }

            while ($row = $result->next()) {
                $row['sourceid'] = $s['id'];
                $key = rcube_addressbook::compose_contact_key($row, $addr_sort_col);
                $records[$key] = $row;
            }

            $search_set[$s['id']] = $source->get_search_set();
            unset($result);
        }

        $group_count = count($jsresult);

        // sort the records
        ksort($records, SORT_LOCALE_STRING);

        // create resultset object
        $count  = count($records);
        $result = new rcube_result_set($count);

        // select the requested page
        if ($page_size < $count) {
            $records = array_slice($records, $result->first, $page_size);
        }

        $result->records = array_values($records);

        if (!empty($result) && $result->count > 0) {
            // create javascript list
            while ($row = $result->next()) {
                $name      = rcube_addressbook::compose_list_name($row);
                $is_group  = isset($row['_type']) && $row['_type'] == 'group';
                $classname = $is_group ? 'group' : 'person';
                $keyname   = $is_group ? 'contactgroup' : 'contact';

                // add record for every email address of the contact
                // (same as in list_contacts.inc)
                $emails = rcube_addressbook::get_col_values('email', $row, true);

                foreach ($emails as $i => $email) {
                    $row_id = $row['sourceid'].'-'.$row['ID'].'-'.$i;

                    $jsresult[$row_id] = format_email_recipient($email, $name);

                    $title = rcube_addressbook::compose_search_name($row, $email, $name);
                    $link_content = rcube::Q($name ?: $email);
                    if ($name && count($emails) > 1) {
                        $link_content .= '&nbsp;' . html::span('email', rcube::Q($email));
                    }
                    $link = html::a(['title' => $title], $link_content);

                    $rcmail->output->command('add_contact_row', $row_id, [$keyname => $link], $classname);
                }
            }

            // search request ID
            $search_request = md5('composeaddr' . $search);

            // save search settings in session
            $_SESSION['contact_search'][$search_request] = $search_set;
            $_SESSION['contact_search_params'] = ['id' => $search_request, 'data' => [$afields, $search]];

            $rcmail->output->show_message('contactsearchsuccessful', 'confirmation', ['nr' => $result->count]);

            $rcmail->output->set_env('search_request', $search_request);
            $rcmail->output->set_env('source', '');
            $rcmail->output->command('unselect_directory');
        }
        else if (!$group_count) {
            $rcmail->output->show_message('nocontactsfound', 'notice');
        }

        // update env
        $rcmail->output->set_env('contactdata', $jsresult);
        $rcmail->output->set_env('pagecount', ceil($result->count / $page_size));
        $rcmail->output->command('set_page_buttons');

        // send response
        $rcmail->output->send();
    }
}
actions/mail/group_expand.php000064400000004607151727150630012350 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Expand addressbook group into list of email addresses               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_group_expand extends rcmail_action
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();
        $gid    = rcube_utils::get_input_string('_gid', rcube_utils::INPUT_GET);
        $source = rcube_utils::get_input_string('_source', rcube_utils::INPUT_GPC);
        $abook  = $rcmail->get_address_book($source);

        if ($gid && $abook) {
            $abook->set_group($gid);
            $abook->set_pagesize(9999);  // TODO: limit number of group members by config?

            $result  = $abook->list_records($rcmail->config->get('contactlist_fields'));
            $members = [];

            while ($result && ($record = $result->iterate())) {
                $email = array_first((array) $abook->get_col_values('email', $record, true));
                if (!empty($email)) {
                    $members[] = format_email_recipient($email, rcube_addressbook::compose_list_name($record));
                }
            }

            $rcmail->output->command('replace_group_recipients', $gid, join(', ', array_unique($members)));
        }

        $rcmail->output->send();
    }
}
actions/mail/compose.php000064400000210437151727150630011322 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Compose a new mail message with all headers and attachments         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_compose extends rcmail_action_mail_index
{
    protected static $COMPOSE_ID;
    protected static $COMPOSE;
    protected static $MESSAGE;
    protected static $MESSAGE_BODY;
    protected static $CID_MAP   = [];
    protected static $HTML_MODE = false;
    protected static $SENDMAIL;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        self::$COMPOSE_ID = rcube_utils::get_input_string('_id', rcube_utils::INPUT_GET);
        self::$COMPOSE    = null;

        if (self::$COMPOSE_ID && !empty($_SESSION['compose_data_' . self::$COMPOSE_ID])) {
            self::$COMPOSE =& $_SESSION['compose_data_' . self::$COMPOSE_ID];
        }

        // give replicated session storage some time to synchronize
        $retries = 0;
        while (self::$COMPOSE_ID && !is_array(self::$COMPOSE) && $rcmail->db->is_replicated() && $retries++ < 5) {
            usleep(500000);
            $rcmail->session->reload();
            if ($_SESSION['compose_data_' . self::$COMPOSE_ID]) {
                self::$COMPOSE =& $_SESSION['compose_data_' . self::$COMPOSE_ID];
            }
        }

        // Nothing below is called during message composition, only at "new/forward/reply/draft" initialization or
        // if a compose-ID is given (i.e. when the compose step is opened in a new window/tab).
        if (!is_array(self::$COMPOSE)) {
            // Infinite redirect prevention in case of broken session (#1487028)
            if (self::$COMPOSE_ID) {
                // if we know the message with specified ID was already sent
                // we can ignore the error and compose a new message (#1490009)
                if (
                    !isset($_SESSION['last_compose_session'])
                    || self::$COMPOSE_ID != $_SESSION['last_compose_session']
                ) {
                    rcube::raise_error(['code' => 450], false, true);
                }
            }

            self::$COMPOSE_ID = uniqid(mt_rand());
            $params     = rcube_utils::request2param(rcube_utils::INPUT_GET, 'task|action', true);

            $_SESSION['compose_data_' . self::$COMPOSE_ID] = [
                'id'      => self::$COMPOSE_ID,
                'param'   => $params,
                'mailbox' => isset($params['mbox']) && strlen($params['mbox'])
                    ? $params['mbox'] : $rcmail->storage->get_folder(),
            ];

            self::$COMPOSE =& $_SESSION['compose_data_' . self::$COMPOSE_ID];
            self::process_compose_params(self::$COMPOSE);

            // check if folder for saving sent messages exists and is subscribed (#1486802)
            if (!empty(self::$COMPOSE['param']['sent_mbox'])) {
                $sent_folder = self::$COMPOSE['param']['sent_mbox'];
                rcmail_sendmail::check_sent_folder($sent_folder, true);
            }

            // redirect to a unique URL with all parameters stored in session
            $rcmail->output->redirect([
                    '_action' => 'compose',
                    '_id'     => self::$COMPOSE['id'],
                    '_search' => !empty($_REQUEST['_search']) ? $_REQUEST['_search'] : null,
            ]);
        }

        // add some labels to client
        $rcmail->output->add_label('notuploadedwarning', 'savingmessage', 'siginserted', 'responseinserted',
            'messagesaved', 'converting', 'editorwarning', 'discard',
            'fileuploaderror', 'sendmessage', 'newresponse', 'responsename', 'responsetext', 'save',
            'savingresponse', 'restoresavedcomposedata', 'restoremessage', 'delete', 'restore', 'ignore',
            'selectimportfile', 'messageissent', 'loadingdata', 'nopubkeyfor', 'nopubkeyforsender',
            'encryptnoattachments','encryptedsendialog','searchpubkeyservers', 'importpubkeys',
            'encryptpubkeysfound',  'search', 'close', 'import', 'keyid', 'keylength', 'keyexpired',
            'keyrevoked', 'keyimportsuccess', 'keyservererror', 'attaching', 'namex', 'attachmentrename'
        );

        $rcmail->output->set_pagetitle($rcmail->gettext('compose'));

        $rcmail->output->set_env('compose_id', self::$COMPOSE['id']);
        $rcmail->output->set_env('session_id', session_id());
        $rcmail->output->set_env('mailbox', $rcmail->storage->get_folder());
        $rcmail->output->set_env('top_posting', intval($rcmail->config->get('reply_mode')) > 0);
        $rcmail->output->set_env('sig_below', $rcmail->config->get('sig_below'));
        $rcmail->output->set_env('save_localstorage', (bool) $rcmail->config->get('compose_save_localstorage'));
        $rcmail->output->set_env('is_sent', false);
        $rcmail->output->set_env('mimetypes', self::supported_mimetypes());
        $rcmail->output->set_env('keyservers', $rcmail->config->keyservers());
        $rcmail->output->set_env('mailvelope_main_keyring', $rcmail->config->get('mailvelope_main_keyring'));

        $drafts_mbox     = $rcmail->config->get('drafts_mbox');
        $config_show_sig = $rcmail->config->get('show_sig', 1);

        // add config parameters to client script
        if (strlen($drafts_mbox)) {
            $rcmail->output->set_env('drafts_mailbox', $drafts_mbox);
            $rcmail->output->set_env('draft_autosave', $rcmail->config->get('draft_autosave'));
        }

        // default font for HTML editor
        $font = self::font_defs($rcmail->config->get('default_font'));
        if ($font && !is_array($font)) {
            $rcmail->output->set_env('default_font', $font);
        }

        // default font size for HTML editor
        if ($font_size = $rcmail->config->get('default_font_size')) {
            $rcmail->output->set_env('default_font_size', $font_size);
        }

        $compose_mode = null;
        $msg_uid      = null;
        $options      = [];

        // get reference message and set compose mode
        if (!empty(self::$COMPOSE['param']['draft_uid'])) {
            $msg_uid      = self::$COMPOSE['param']['draft_uid'];
            $compose_mode = rcmail_sendmail::MODE_DRAFT;
            $rcmail->output->set_env('draft_id', $msg_uid);
            $rcmail->storage->set_folder($drafts_mbox);
        }
        else if (!empty(self::$COMPOSE['param']['reply_uid'])) {
            $msg_uid      = self::$COMPOSE['param']['reply_uid'];
            $compose_mode = rcmail_sendmail::MODE_REPLY;
        }
        else if (!empty(self::$COMPOSE['param']['forward_uid'])) {
            $msg_uid      = self::$COMPOSE['param']['forward_uid'];
            $compose_mode = rcmail_sendmail::MODE_FORWARD;
            self::$COMPOSE['forward_uid']   = $msg_uid;
            self::$COMPOSE['as_attachment'] = !empty(self::$COMPOSE['param']['attachment']);
        }
        else if (!empty(self::$COMPOSE['param']['uid'])) {
            $msg_uid = self::$COMPOSE['param']['uid'];
            $compose_mode = rcmail_sendmail::MODE_EDIT;
        }

        self::$COMPOSE['mode'] = $compose_mode;

        if ($compose_mode) {
            $rcmail->output->set_env('compose_mode', $compose_mode);
        }

        if ($compose_mode == rcmail_sendmail::MODE_EDIT || $compose_mode == rcmail_sendmail::MODE_DRAFT) {
            // don't add signature in draft/edit mode, we'll also not remove the old-one
            // but only on page display, later we should be able to change identity/sig (#1489229)
            if ($config_show_sig == 1 || $config_show_sig == 2) {
                $rcmail->output->set_env('show_sig_later', true);
            }
        }
        else if ($config_show_sig == 1) {
            $rcmail->output->set_env('show_sig', true);
        }
        else if ($config_show_sig == 2 && empty($compose_mode)) {
            $rcmail->output->set_env('show_sig', true);
        }
        else if (
            $config_show_sig == 3
            && ($compose_mode == rcmail_sendmail::MODE_REPLY || $compose_mode == rcmail_sendmail::MODE_FORWARD)
        ) {
            $rcmail->output->set_env('show_sig', true);
        }

        if (!empty($msg_uid) && (empty(self::$COMPOSE['as_attachment']) || $compose_mode == rcmail_sendmail::MODE_DRAFT)) {
            $mbox_name = $rcmail->storage->get_folder();

            // set format before rcube_message construction
            // use the same format as for the message view
            if (isset($_SESSION['msg_formats'][$mbox_name . ':' . $msg_uid])) {
                $rcmail->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name . ':' . $msg_uid]);
            }
            else {
                $prefer_html = $rcmail->config->get('prefer_html')
                    || $rcmail->config->get('htmleditor')
                    || $compose_mode == rcmail_sendmail::MODE_DRAFT
                    || $compose_mode == rcmail_sendmail::MODE_EDIT;

                $rcmail->config->set('prefer_html', $prefer_html);
            }

            self::$MESSAGE = new rcube_message($msg_uid);

            // make sure message is marked as read
            if (
                !empty(self::$MESSAGE->headers)
                && self::$MESSAGE->context === null
                && empty(self::$MESSAGE->headers->flags['SEEN'])
            ) {
                $rcmail->storage->set_flag($msg_uid, 'SEEN');
            }

            if (!empty(self::$MESSAGE->headers->charset)) {
                $rcmail->storage->set_charset(self::$MESSAGE->headers->charset);
            }

            if (empty(self::$MESSAGE->headers)) {
                // error
            }
            else if ($compose_mode == rcmail_sendmail::MODE_FORWARD || $compose_mode == rcmail_sendmail::MODE_REPLY) {
                if ($compose_mode == rcmail_sendmail::MODE_REPLY) {
                    self::$COMPOSE['reply_uid'] = self::$MESSAGE->context === null ? $msg_uid : null;

                    if (!empty(self::$COMPOSE['param']['all'])) {
                        self::$COMPOSE['reply_all'] = self::$COMPOSE['param']['all'];
                    }
                }
                else {
                    self::$COMPOSE['forward_uid'] = $msg_uid;
                }

                self::$COMPOSE['reply_msgid'] = self::$MESSAGE->headers->messageID;
                self::$COMPOSE['references']  = trim(self::$MESSAGE->headers->references . " " . self::$MESSAGE->headers->messageID);

                // Save the sent message in the same folder of the message being replied to
                if (
                    $rcmail->config->get('reply_same_folder')
                    && ($sent_folder = self::$COMPOSE['mailbox'])
                    && rcmail_sendmail::check_sent_folder($sent_folder, false)
                ) {
                    self::$COMPOSE['param']['sent_mbox'] = $sent_folder;
                }
            }
            else if ($compose_mode == rcmail_sendmail::MODE_DRAFT || $compose_mode == rcmail_sendmail::MODE_EDIT) {
                if ($compose_mode == rcmail_sendmail::MODE_DRAFT) {
                    if ($draft_info = self::$MESSAGE->headers->get('x-draft-info')) {
                        // get reply_uid/forward_uid to flag the original message when sending
                        $info = rcmail_sendmail::draftinfo_decode($draft_info);

                        if (!empty($info['type'])) {
                            if ($info['type'] == 'reply') {
                                self::$COMPOSE['reply_uid'] = $info['uid'];
                            }
                            else if ($info['type'] == 'forward') {
                                self::$COMPOSE['forward_uid'] = $info['uid'];
                            }
                        }

                        if (!empty($info['dsn']) && $info['dsn'] === 'on') {
                            $options['dsn_enabled'] = true;
                        }

                        self::$COMPOSE['mailbox'] = $info['folder'] ?? null;

                        // Save the sent message in the same folder of the message being replied to
                        if (
                            $rcmail->config->get('reply_same_folder')
                            && ($sent_folder = self::$COMPOSE['mailbox'])
                            && rcmail_sendmail::check_sent_folder($sent_folder, false)
                        ) {
                            self::$COMPOSE['param']['sent_mbox'] = $sent_folder;
                        }
                    }

                    if (($msgid = self::$MESSAGE->headers->get('message-id')) && !preg_match('/^mid:[0-9]+$/', $msgid)) {
                        self::$COMPOSE['param']['message-id'] = $msgid;
                    }

                    // use message UID as draft_id
                    $rcmail->output->set_env('draft_id', $msg_uid);
                }

                if ($in_reply_to = self::$MESSAGE->headers->get('in-reply-to')) {
                    self::$COMPOSE['reply_msgid'] = '<' . $in_reply_to . '>';
                }

                self::$COMPOSE['references'] = self::$MESSAGE->headers->references;
            }
        }
        else {
            self::$MESSAGE = new stdClass();

            // apply mailto: URL parameters
            if (!empty(self::$COMPOSE['param']['in-reply-to'])) {
                self::$COMPOSE['reply_msgid'] = '<' . trim(self::$COMPOSE['param']['in-reply-to'], '<> ') . '>';
            }

            if (!empty(self::$COMPOSE['param']['references'])) {
                self::$COMPOSE['references'] = self::$COMPOSE['param']['references'];
            }
        }

        if (!empty(self::$COMPOSE['reply_msgid'])) {
            $rcmail->output->set_env('reply_msgid', self::$COMPOSE['reply_msgid']);
        }

        $options['message'] = self::$MESSAGE;

        // Initialize helper class to build the UI
        self::$SENDMAIL = new rcmail_sendmail(self::$COMPOSE, $options);

        // process self::$MESSAGE body/attachments, set self::$MESSAGE_BODY/$HTML_MODE vars and some session data
        self::$MESSAGE_BODY = self::prepare_message_body();

        // register UI objects (Note: some objects are registered by rcmail_sendmail above)
        $rcmail->output->add_handlers([
                'composebody'           => [$this, 'compose_body'],
                'composeobjects'        => [$this, 'compose_objects'],
                'composeattachmentlist' => [$this, 'compose_attachment_list'],
                'composeattachmentform' => [$this, 'compose_attachment_form'],
                'composeattachment'     => [$this, 'compose_attachment_field'],
                'filedroparea'          => [$this, 'compose_file_drop_area'],
                'editorselector'        => [$this, 'editor_selector'],
                'addressbooks'          => [$this, 'addressbook_list'],
                'addresslist'           => [$this, 'contacts_list'],
                'responseslist'         => [$this, 'compose_responses_list'],
        ]);

        $rcmail->output->include_script('publickey.js');

        self::spellchecker_init();

        $rcmail->output->send('compose');
    }

    // process compose request parameters
    public static function process_compose_params(&$COMPOSE)
    {
        if (!empty($COMPOSE['param']['to'])) {
            $mailto = explode('?', $COMPOSE['param']['to'], 2);

            // #1486037: remove "mailto:" prefix
            $COMPOSE['param']['to'] = preg_replace('/^mailto:/i', '', $mailto[0]);
            // #1490346: decode the recipient address
            // #1490510: use raw encoding for correct "+" character handling as specified in RFC6068
            $COMPOSE['param']['to'] = rawurldecode($COMPOSE['param']['to']);

            // Supported case-insensitive tokens in mailto URL
            $url_tokens = ['to', 'cc', 'bcc', 'reply-to', 'in-reply-to', 'references', 'subject', 'body'];

            if (!empty($mailto[1])) {
                parse_str($mailto[1], $query);
                foreach ($query as $f => $val) {
                    if (($key = array_search(strtolower($f), $url_tokens)) !== false) {
                        $f = $url_tokens[$key];
                    }

                    // merge mailto: addresses with addresses from 'to' parameter
                    if ($f == 'to' && !empty($COMPOSE['param']['to'])) {
                        $to_addresses  = rcube_mime::decode_address_list($COMPOSE['param']['to'], null, true, null, true);
                        $add_addresses = rcube_mime::decode_address_list($val, null, true);

                        foreach ($add_addresses as $addr) {
                            if (!in_array($addr['mailto'], $to_addresses)) {
                                $to_addresses[]         = $addr['mailto'];
                                $COMPOSE['param']['to'] = (!empty($to_addresses) ? ', ' : '') . $addr['string'];
                            }
                        }
                    }
                    else {
                        $COMPOSE['param'][$f] = $val;
                    }
                }
            }
        }

        // resolve _forward_uid=* to an absolute list of messages from a search result
        if (
            !empty($COMPOSE['param']['forward_uid'])
            && $COMPOSE['param']['forward_uid'] == '*'
            && !empty($_SESSION['search'][1])
            && is_object($_SESSION['search'][1])
        ) {
            $COMPOSE['param']['forward_uid'] = $_SESSION['search'][1]->get();
        }

        // clean HTML message body which can be submitted by URL
        if (!empty($COMPOSE['param']['body'])) {
            if ($COMPOSE['param']['html'] = strpos($COMPOSE['param']['body'], '<') !== false) {
                $wash_params              = ['safe' => false, 'inline_html' => true];
                $COMPOSE['param']['body'] = self::prepare_html_body($COMPOSE['param']['body'], $wash_params);
            }
        }

        $rcmail = rcmail::get_instance();

        // select folder where to save the sent message
        $COMPOSE['param']['sent_mbox'] = $rcmail->config->get('sent_mbox');

        // pipe compose parameters thru plugins
        $plugin = $rcmail->plugins->exec_hook('message_compose', $COMPOSE);

        $COMPOSE['param'] = array_merge($COMPOSE['param'], $plugin['param']);

        // add attachments listed by message_compose hook
        if (!empty($plugin['attachments'])) {
            foreach ($plugin['attachments'] as $attach) {
                // we have structured data
                if (is_array($attach)) {
                    $attachment = $attach + ['group' => self::$COMPOSE_ID];
                }
                // only a file path is given
                else {
                    $filename   = basename($attach);
                    $attachment = [
                        'group'    => self::$COMPOSE_ID,
                        'name'     => $filename,
                        'mimetype' => rcube_mime::file_content_type($attach, $filename),
                        'size'     => filesize($attach),
                        'path'     => $attach,
                    ];
                }

                // save attachment if valid
                if (
                    (!empty($attachment['data']) && !empty($attachment['name']))
                    || (!empty($attachment['path']) && file_exists($attachment['path']))
                ) {
                    $attachment = $rcmail->plugins->exec_hook('attachment_save', $attachment);
                }

                if (!empty($attachment['status']) && empty($attachment['abort'])) {
                    unset($attachment['data'], $attachment['status'], $attachment['abort']);
                    $COMPOSE['attachments'][$attachment['id']] = $attachment;
                }
            }
        }
    }

    public static function compose_editor_mode()
    {
        static $useHtml;

        if ($useHtml !== null) {
            return $useHtml;
        }

        $rcmail       = rcmail::get_instance();
        $html_editor  = intval($rcmail->config->get('htmleditor'));
        $compose_mode = self::$COMPOSE['mode'];

        if (isset(self::$COMPOSE['param']['html']) && is_bool(self::$COMPOSE['param']['html'])) {
            $useHtml = self::$COMPOSE['param']['html'];
        }
        else if (isset($_POST['_is_html'])) {
            $useHtml = !empty($_POST['_is_html']);
        }
        else if ($compose_mode == rcmail_sendmail::MODE_DRAFT || $compose_mode == rcmail_sendmail::MODE_EDIT) {
            $useHtml = self::message_is_html();
        }
        else if ($compose_mode == rcmail_sendmail::MODE_REPLY) {
            $useHtml = $html_editor == 1 || ($html_editor >= 2 && self::message_is_html());
        }
        else if ($compose_mode == rcmail_sendmail::MODE_FORWARD) {
            $useHtml = $html_editor == 1 || $html_editor == 4
                || ($html_editor == 3 && self::message_is_html());
        }
        else {
            $useHtml = $html_editor == 1 || $html_editor == 4;
        }

        return $useHtml;
    }

    public static function message_is_html()
    {
        return rcmail::get_instance()->config->get('prefer_html')
            && (self::$MESSAGE instanceof rcube_message)
            && self::$MESSAGE->has_html_part(true);
    }

    public static function spellchecker_init()
    {
        $rcmail = rcmail::get_instance();

        // Set language list
        if ($rcmail->config->get('enable_spellcheck')) {
            $spellchecker = new rcube_spellchecker();
        }
        else {
            return;
        }

        $spellcheck_langs = $spellchecker->languages();

        if (empty($spellcheck_langs)) {
            if ($err = $spellchecker->error()) {
                rcube::raise_error(['code' => 500,
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Spell check engine error: " . trim($err)],
                    true, false
                );
            }
        }
        else {
            $dictionary = (bool) $rcmail->config->get('spellcheck_dictionary');
            $lang       = $_SESSION['language'];

            // if not found in the list, try with two-letter code
            if (empty($spellcheck_langs[$lang])) {
                $lang = strtolower(substr($lang, 0, 2));
            }

            if (empty($spellcheck_langs[$lang])) {
                $lang = 'en';
            }

            // include GoogieSpell
            $rcmail->output->include_script('googiespell.js');
            $rcmail->output->add_script(sprintf(
                "var googie = new GoogieSpell('%s/images/googiespell/','%s&lang=', %s);\n".
                "googie.lang_chck_spell = \"%s\";\n".
                "googie.lang_rsm_edt = \"%s\";\n".
                "googie.lang_close = \"%s\";\n".
                "googie.lang_revert = \"%s\";\n".
                "googie.lang_no_error_found = \"%s\";\n".
                "googie.lang_learn_word = \"%s\";\n".
                "googie.setLanguages(%s);\n".
                "googie.setCurrentLanguage('%s');\n".
                "googie.setDecoration(false);\n".
                "googie.decorateTextarea(rcmail.env.composebody);\n",
                $rcmail->output->asset_url($rcmail->output->get_skin_path()),
                $rcmail->url(['_task' => 'utils', '_action' => 'spell', '_remote' => 1]),
                !empty($dictionary) ? 'true' : 'false',
                rcube::JQ(rcube::Q($rcmail->gettext('checkspelling'))),
                rcube::JQ(rcube::Q($rcmail->gettext('resumeediting'))),
                rcube::JQ(rcube::Q($rcmail->gettext('close'))),
                rcube::JQ(rcube::Q($rcmail->gettext('revertto'))),
                rcube::JQ(rcube::Q($rcmail->gettext('nospellerrors'))),
                rcube::JQ(rcube::Q($rcmail->gettext('addtodict'))),
                rcube_output::json_serialize($spellcheck_langs),
                $lang
            ), 'foot');

            $rcmail->output->add_label('checking');
            $rcmail->output->set_env('spell_langs', $spellcheck_langs);
            $rcmail->output->set_env('spell_lang', $lang);
        }
    }

    public static function prepare_message_body()
    {
        $rcmail = rcmail::get_instance();
        $body   = '';

        // use posted message body
        if (!empty($_POST['_message'])) {
            $body   = rcube_utils::get_input_string('_message', rcube_utils::INPUT_POST, true);
            $isHtml = (bool) rcube_utils::get_input_string('_is_html', rcube_utils::INPUT_POST);
        }
        else if (!empty(self::$COMPOSE['param']['body'])) {
            $body   = self::$COMPOSE['param']['body'];
            $isHtml = !empty(self::$COMPOSE['param']['html']);
        }
        // forward as attachment
        else if (self::$COMPOSE['mode'] == rcmail_sendmail::MODE_FORWARD && !empty(self::$COMPOSE['as_attachment'])) {
            $isHtml = self::compose_editor_mode();

            self::write_forward_attachments();
        }
        // reply/edit/draft/forward
        else if (!empty(self::$COMPOSE['mode'])
            && (self::$COMPOSE['mode'] != rcmail_sendmail::MODE_REPLY || intval($rcmail->config->get('reply_mode')) != -1)
        ) {
            $isHtml   = self::compose_editor_mode();
            $messages = [];

            // Create a (fake) image attachments map. We need it before we handle
            // the message body. After that we'll go throughout the list and check
            // which images were used in the body and attach them for real or skip.
            if ($isHtml) {
                self::$CID_MAP = self::cid_map(self::$MESSAGE);
            }

            // set is_safe flag (before HTML body washing)
            if (self::$COMPOSE['mode'] == rcmail_sendmail::MODE_DRAFT) {
                self::$MESSAGE->is_safe = true;
            }
            else {
                self::check_safe(self::$MESSAGE);
            }

            if (!empty(self::$MESSAGE->parts)) {
                // collect IDs of message/rfc822 parts
                foreach (self::$MESSAGE->mime_parts() as $part) {
                    if ($part->mimetype == 'message/rfc822') {
                        $messages[] = $part->mime_id;
                    }
                }

                foreach (self::$MESSAGE->parts as $part) {
                    if (!empty($part->realtype) && $part->realtype == 'multipart/encrypted') {
                        // find the encrypted message payload part
                        if ($pgp_mime_part = self::$MESSAGE->get_multipart_encrypted_part()) {
                            $rcmail->output->set_env('pgp_mime_message', [
                                    '_mbox' => $rcmail->storage->get_folder(),
                                    '_uid'  => self::$MESSAGE->uid,
                                    '_part' => $pgp_mime_part->mime_id,
                            ]);
                        }
                        continue;
                    }

                    // skip no-content and attachment parts (#1488557)
                    if ($part->type != 'content' || !$part->size || self::$MESSAGE->is_attachment($part)) {
                        continue;
                    }

                    // skip all content parts inside the message/rfc822 part
                    foreach ($messages as $mimeid) {
                        if (strpos($part->mime_id, $mimeid . '.') === 0) {
                            continue 2;
                        }
                    }

                    if ($part_body = self::compose_part_body($part, $isHtml)) {
                        $body .= ($body ? ($isHtml ? '<br/>' : "\n") : '') . $part_body;
                    }
                }
            }

            // compose reply-body
            if (self::$COMPOSE['mode'] == rcmail_sendmail::MODE_REPLY) {
                $body = self::create_reply_body($body, $isHtml);

                if (!empty(self::$MESSAGE->pgp_mime)) {
                    $rcmail->output->set_env('compose_reply_header', self::get_reply_header(self::$MESSAGE));
                }
            }
            // forward message body inline
            else if (self::$COMPOSE['mode'] == rcmail_sendmail::MODE_FORWARD) {
                $body = self::create_forward_body($body, $isHtml);
            }
            // load draft message body
            else if (
                self::$COMPOSE['mode'] == rcmail_sendmail::MODE_DRAFT
                || self::$COMPOSE['mode'] == rcmail_sendmail::MODE_EDIT
            ) {
                $body = self::create_draft_body($body, $isHtml);
            }

            // Save forwarded files (or inline images) as attachments
            // This will also update inline images location in the body
            self::write_compose_attachments(self::$MESSAGE, $isHtml, $body);
        }
        // new message
        else {
            $isHtml = self::compose_editor_mode();
        }

        $plugin = $rcmail->plugins->exec_hook('message_compose_body', [
                'body'    => $body,
                'html'    => $isHtml,
                'mode'    => self::$COMPOSE['mode'],
                'message' => self::$MESSAGE,
        ]);

        $body = $plugin['body'];
        unset($plugin);

        // add blocked.gif attachment (#1486516)
        $regexp = '/ src="' . preg_quote($rcmail->output->asset_url('program/resources/blocked.gif'), '/') . '"/';
        if ($isHtml && preg_match($regexp, $body)) {
            $content = self::get_resource_content('blocked.gif');

            if ($content && ($attachment = self::save_image('blocked.gif', 'image/gif', $content))) {
                self::$COMPOSE['attachments'][$attachment['id']] = $attachment;
                $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
                    $rcmail->comm_path, self::$COMPOSE['id'], $attachment['id']);
                $body = preg_replace($regexp, ' src="' . $url . '"', $body);
            }
        }

        self::$HTML_MODE = $isHtml;

        return $body;
    }

    /**
     * Prepare message part body for composition
     *
     * @param rcube_message_part $part   Message part
     * @param bool               $isHtml Use HTML mode
     *
     * @return string Message body text
     */
    public static function compose_part_body($part, $isHtml = false)
    {
        if (!$part instanceof rcube_message_part) {
            return '';
        }

        // Check if we have enough memory to handle the message in it
        // #1487424: we need up to 10x more memory than the body
        if (!rcube_utils::mem_check($part->size * 10)) {
            return '';
        }

        // fetch part if not available
        $body = self::$MESSAGE->get_part_body($part->mime_id, true);

        // message is cached but not exists (#1485443), or other error
        if ($body === false) {
            return '';
        }

        $rcmail = rcmail::get_instance();

        // register this part as pgp encrypted
        if (strpos($body, '-----BEGIN PGP MESSAGE-----') !== false) {
            self::$MESSAGE->pgp_mime = true;
            $rcmail->output->set_env('pgp_mime_message', [
                    '_mbox' => $rcmail->storage->get_folder(),
                    '_uid'  => self::$MESSAGE->uid,
                    '_part' => $part->mime_id,
            ]);
        }

        $strip_signature = self::$COMPOSE['mode'] != rcmail_sendmail::MODE_DRAFT
            && self::$COMPOSE['mode'] != rcmail_sendmail::MODE_EDIT
            && $rcmail->config->get('strip_existing_sig', true);

        $flowed = !empty($part->ctype_parameters['format']) && $part->ctype_parameters['format'] == 'flowed';
        $delsp  = $flowed && !empty($part->ctype_parameters['delsp']) && $part->ctype_parameters['delsp'] == 'yes';

        if ($isHtml) {
            if ($part->ctype_secondary == 'html') {
                $body = self::prepare_html_body($body);
            }
            else if ($part->ctype_secondary == 'enriched') {
                $body = rcube_enriched::to_html($body);
            }
            else {
                // try to remove the signature
                if ($strip_signature) {
                    $body = self::remove_signature($body);
                }

                // add HTML formatting
                $body = self::plain_body($body, $flowed, $delsp);
            }
        }
        else {
            if ($part->ctype_secondary == 'enriched') {
                $body = rcube_enriched::to_html($body);
                $part->ctype_secondary = 'html';
            }

            if ($part->ctype_secondary == 'html') {
                // set line length for body wrapping
                $line_length = $rcmail->config->get('line_length', 72);

                // use html part if it has been used for message (pre)viewing
                // decrease line length for quoting
                $len  = self::$COMPOSE['mode'] == rcmail_sendmail::MODE_REPLY ? $line_length-2 : $line_length;
                $body = $rcmail->html2text($body, ['width' => $len]);
            }
            else {
                if ($part->ctype_secondary == 'plain' && $flowed) {
                    $body = rcube_mime::unfold_flowed($body, null, $delsp);
                }

                // try to remove the signature
                if ($strip_signature) {
                    $body = self::remove_signature($body);
                }
            }
        }

        return $body;
    }

    public static function compose_body($attrib)
    {
        list($form_start, $form_end) = self::$SENDMAIL->form_tags($attrib);
        unset($attrib['form']);

        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmComposeBody';
        }

        // If desired, set this textarea to be editable by TinyMCE
        $attrib['data-html-editor'] = true;
        if (self::$HTML_MODE) {
            $attrib['class'] = trim(($attrib['class'] ?? '') . ' mce_editor');
            $attrib['data-html-editor-content-element'] = $attrib['id'] . '-content';
        }

        $attrib['name'] = '_message';

        $rcmail   = rcmail::get_instance();
        $textarea = new html_textarea($attrib);
        $hidden   = new html_hiddenfield();

        $hidden->add(['name' => '_draft_saveid', 'value' => $rcmail->output->get_env('draft_id')]);
        $hidden->add(['name' => '_draft', 'value' => '']);
        $hidden->add(['name' => '_is_html', 'value' => self::$HTML_MODE ? "1" : "0"]);
        $hidden->add(['name' => '_framed', 'value' => '1']);

        $rcmail->output->set_env('composebody', $attrib['id']);

        $content = $hidden->show() . "\n";

        // We're adding a hidden textarea with the HTML content to workaround browsers' performance
        // issues with rendering/loading long content. It will be copied to the main editor (#8108)
        if (self::$HTML_MODE && strlen(self::$MESSAGE_BODY) > 50 * 1024) {
            $contentArea = new html_textarea(['style' => 'display:none', 'id' => $attrib['id'] . '-content']);
            $content .= $contentArea->show(self::$MESSAGE_BODY) . "\n" . $textarea->show();
        }
        else {
            $content .= $textarea->show(self::$MESSAGE_BODY);
        }

        // include HTML editor
        self::html_editor();

        return "$form_start\n$content\n$form_end\n";
    }

    public static function create_reply_body($body, $bodyIsHtml)
    {
        $rcmail       = rcmail::get_instance();
        $reply_mode   = (int) $rcmail->config->get('reply_mode');
        $reply_indent = $reply_mode != 2;

        // In top-posting without quoting it's better to use multi-line header
        if ($reply_mode == 2) {
            $prefix = self::get_forward_header(self::$MESSAGE, $bodyIsHtml, false);
        }
        else {
            $prefix = self::get_reply_header(self::$MESSAGE);
            if ($bodyIsHtml) {
                $prefix = '<p id="reply-intro">' . rcube::Q($prefix) . '</p>';
            }
            else {
                $prefix .= "\n";
            }
        }

        if (!$bodyIsHtml) {
            // quote the message text
            if ($reply_indent) {
                $body = self::quote_text($body);
            }

            if ($reply_mode > 0) { // top-posting
                $prefix = "\n\n\n" . $prefix;
                $suffix = '';
            }
            else {
                $suffix = "\n";
            }
        }
        else {
            $suffix = '';

            if ($reply_indent) {
                $prefix .= '<blockquote>';
                $suffix .= '</blockquote>';
            }

            if ($reply_mode == 2) {
                // top-posting, no indent
            }
            else if ($reply_mode > 0) {
                // top-posting
                $prefix = '<br>' . $prefix;
            }
            else {
                $suffix .= '<p><br/></p>';
            }
        }

        return $prefix . $body . $suffix;
    }

    public static function get_reply_header($message)
    {
        if (empty($message->headers)) {
            return '';
        }

        $rcmail = rcmail::get_instance();
        $list   = rcube_mime::decode_address_list($message->get_header('from'), 1, false, $message->headers->charset);
        $from   = array_pop($list);

        return $rcmail->gettext([
                'name' => 'mailreplyintro',
                'vars' => [
                    'date'   => $rcmail->format_date($message->get_header('date'), $rcmail->config->get('date_long')),
                    'sender' => !empty($from['name']) ? $from['name'] : rcube_utils::idn_to_utf8($from['mailto']),
                ]
        ]);
    }

    public static function create_forward_body($body, $bodyIsHtml)
    {
        return self::get_forward_header(self::$MESSAGE, $bodyIsHtml) . trim($body, "\r\n");
    }

    public static function get_forward_header($message, $bodyIsHtml = false, $extended = true)
    {
        if (empty($message->headers)) {
            return '';
        }

        $rcmail = rcmail::get_instance();
        $date   = $rcmail->format_date($message->get_header('date'), $rcmail->config->get('date_long'));

        if (!$bodyIsHtml) {
            $prefix = "\n\n\n-------- " . $rcmail->gettext('originalmessage') . " --------\n";
            $prefix .= $rcmail->gettext('subject') . ': ' . $message->subject . "\n";
            $prefix .= $rcmail->gettext('date')    . ': ' . $date . "\n";
            $prefix .= $rcmail->gettext('from')    . ': ' . $message->get_header('from') . "\n";
            $prefix .= $rcmail->gettext('to')      . ': ' . $message->get_header('to') . "\n";

            if ($extended && ($cc = $message->get_header('cc'))) {
                $prefix .= $rcmail->gettext('cc') . ': ' . $cc . "\n";
            }

            if ($extended && ($replyto = $message->get_header('reply-to')) && $replyto != $message->get_header('from')) {
                $prefix .= $rcmail->gettext('replyto') . ': ' . $replyto . "\n";
            }

            $prefix .= "\n";
        }
        else {
            $prefix = sprintf(
                "<br /><p>-------- " . $rcmail->gettext('originalmessage') . " --------</p>" .
                "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody>" .
                "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
                "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
                "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
                "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
                $rcmail->gettext('subject'), rcube::Q($message->subject),
                $rcmail->gettext('date'), rcube::Q($date),
                $rcmail->gettext('from'), rcube::Q($message->get_header('from'), 'replace'),
                $rcmail->gettext('to'), rcube::Q($message->get_header('to'), 'replace')
            );

            if ($extended && ($cc = $message->get_header('cc'))) {
                $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
                    $rcmail->gettext('cc'), rcube::Q($cc, 'replace'));
            }

            if ($extended && ($replyto = $message->get_header('reply-to')) && $replyto != $message->get_header('from')) {
                $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
                    $rcmail->gettext('replyto'), rcube::Q($replyto, 'replace'));
            }

            $prefix .= "</tbody></table><br>";
        }

        return $prefix;
    }

    public static function create_draft_body($body, $bodyIsHtml)
    {
        // Return the draft body as-is
        return $body;
    }

    // Clean up HTML content of Draft/Reply/Forward (part of the message)
    public static function prepare_html_body($body, $wash_params = [])
    {
        static $part_no;

        // Set attributes of the part container
        $container_id     = self::$COMPOSE['mode'] . 'body' . (++$part_no);
        $container_attrib = ['id' => $container_id];
        $body_args        = [
            'safe'             => self::$MESSAGE->is_safe,
            'plain'            => false,
            'css_prefix'       => 'v' . $part_no,
        ];

        // remove comments (produced by washtml)
        $replace = ['/<!--[^>]+-->/' => ''];

        if (self::$COMPOSE['mode'] == rcmail_sendmail::MODE_DRAFT) {
            // convert TinyMCE's empty-line sequence (#1490463)
            $replace['/<p>\xC2\xA0<\/p>/'] = '<p><br /></p>';
            // remove <body> tags
            $replace['/<body([^>]*)>/i'] = '';
            $replace['/<\/body>/i']      = '';
        }
        else {
            $body_args['container_id']     = $container_id;
            $body_args['container_attrib'] = $container_attrib;
        }

        // Make the HTML content safe and clean
        $body = self::wash_html($body, $wash_params + $body_args, self::$CID_MAP);
        $body = preg_replace(array_keys($replace), array_values($replace), $body);
        $body = self::html4inline($body, $body_args);

        if (self::$COMPOSE['mode'] != rcmail_sendmail::MODE_DRAFT) {
            $body = html::div($container_attrib, $body);
        }

        return $body;
    }

    // Removes signature from the message body
    public static function remove_signature($body)
    {
        $rcmail = rcmail::get_instance();
        $body   = str_replace("\r\n", "\n", $body);
        $len    = strlen($body);
        $sig_max_lines = $rcmail->config->get('sig_max_lines', 15);

        while (($sp = strrpos($body, "-- \n", !empty($sp) ? -$len + $sp - 1 : 0)) !== false) {
            if ($sp == 0 || $body[$sp-1] == "\n") {
                // do not touch blocks with more that X lines
                if (substr_count($body, "\n", $sp) < $sig_max_lines) {
                    $body = substr($body, 0, max(0, $sp-1));
                }
                break;
            }
        }

        return $body;
    }

    public static function write_compose_attachments(&$message, $bodyIsHtml, &$message_body)
    {
        if (!empty($message->pgp_mime) || !empty(self::$COMPOSE['forward_attachments'])) {
            return;
        }

        $messages           = [];
        $loaded_attachments = [];

        if (!empty(self::$COMPOSE['attachments'])) {
            foreach ((array) self::$COMPOSE['attachments'] as $attachment) {
                $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
            }
        }

        $rcmail   = rcmail::get_instance();
        $has_html = $message->has_html_part();

        foreach ((array) $message->mime_parts() as $pid => $part) {
            if ($part->mimetype == 'message/rfc822') {
                $messages[] = $part->mime_id;
            }

            if (
                $part->disposition == 'attachment'
                || ($part->disposition == 'inline' && $bodyIsHtml)
                || $part->filename
                || $part->mimetype == 'message/rfc822'
            ) {
                // skip parts that aren't valid attachments
                if ($part->ctype_primary == 'multipart' || $part->mimetype == 'application/ms-tnef') {
                    continue;
                }

                // skip message attachments in reply mode
                if ($part->ctype_primary == 'message' && self::$COMPOSE['mode'] == rcmail_sendmail::MODE_REPLY) {
                    continue;
                }

                // skip version.txt parts of multipart/encrypted messages
                if (!empty($message->pgp_mime) && $part->mimetype == 'application/pgp-encrypted' && $part->filename == 'version.txt') {
                    continue;
                }

                // skip attachments included in message/rfc822 attachment (#1486487, #1490607)
                foreach ($messages as $mimeid) {
                    if (strpos($part->mime_id, $mimeid . '.') === 0) {
                        continue 2;
                    }
                }

                $replace = null;

                // Skip inline images when not used in the body
                // Note: Apple Mail sends PDF files marked as inline (#7382)
                // Note: Apple clients send inline images even if there's no HTML body (#7414)
                if ($has_html && $part->disposition == 'inline' && $part->mimetype != 'application/pdf') {
                    if (!$bodyIsHtml) {
                        continue;
                    }

                    $idx = $part->content_id ? ('cid:' . $part->content_id) : $part->content_location ?? null;

                    if ($idx && isset(self::$CID_MAP[$idx]) && strpos($message_body, self::$CID_MAP[$idx]) !== false) {
                        $replace = self::$CID_MAP[$idx];
                    }
                    else {
                        continue;
                    }
                }
                // skip any other attachment on Reply
                else if (self::$COMPOSE['mode'] == rcmail_sendmail::MODE_REPLY) {
                    continue;
                }

                $key = self::attachment_name($part) . $part->mimetype;

                if (!empty($loaded_attachments[$key])) {
                    $attachment = $loaded_attachments[$key];
                }
                else {
                    $attachment = self::save_attachment($message, $pid, self::$COMPOSE['id']);
                }

                if ($attachment) {
                    if ($replace) {
                        $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
                            $rcmail->comm_path, self::$COMPOSE['id'], $attachment['id']);

                        $message_body = str_replace($replace, $url, $message_body);
                    }
                }
            }
        }

        self::$COMPOSE['forward_attachments'] = true;
    }

    /**
     * Create a map of attachment content-id/content-locations
     */
    public static function cid_map($message)
    {
        if (!empty($message->pgp_mime)) {
            return [];
        }

        $messages = [];
        $map      = [];

        foreach ((array) $message->mime_parts() as $pid => $part) {
            if ($part->mimetype == 'message/rfc822') {
                $messages[] = $part->mime_id;
            }

            if (!empty($part->content_id) || !empty($part->content_location)) {
                // skip attachments included in message/rfc822 attachment (#1486487, #1490607)
                foreach ($messages as $mimeid) {
                    if (strpos($part->mime_id, $mimeid . '.') === 0) {
                        continue 2;
                    }
                }

                $url = sprintf('RCMAP%s', md5($message->folder . '/' . $message->uid . '/' . $pid));
                $idx = !empty($part->content_id) ? ('cid:' . $part->content_id) : $part->content_location;

                $map[$idx] = $url;
            }
        }

        return $map;
    }

    // Creates attachment(s) from the forwarded message(s)
    public static function write_forward_attachments()
    {
        if (!empty(self::$MESSAGE->pgp_mime)) {
            return;
        }

        $rcmail      = rcmail::get_instance();
        $storage     = $rcmail->get_storage();
        $names       = [];
        $refs        = [];
        $size_errors = 0;
        $size_limit  = parse_bytes($rcmail->config->get('max_message_size'));
        $total_size  = 10 * 1024; // size of message body, to start with

        $loaded_attachments = [];

        if (!empty(self::$COMPOSE['attachments'])) {
            foreach ((array) self::$COMPOSE['attachments'] as $attachment) {
                $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
                $total_size += $attachment['size'];
            }
        }

        if (self::$COMPOSE['forward_uid'] == '*') {
            $index = $storage->index(null, self::sort_column(), self::sort_order());
            self::$COMPOSE['forward_uid'] = $index->get();
        }
        else if (!is_array(self::$COMPOSE['forward_uid']) && strpos(self::$COMPOSE['forward_uid'], ':')) {
            self::$COMPOSE['forward_uid'] = rcube_imap_generic::uncompressMessageSet(self::$COMPOSE['forward_uid']);
        }
        else if (is_string(self::$COMPOSE['forward_uid'])) {
            self::$COMPOSE['forward_uid'] = explode(',', self::$COMPOSE['forward_uid']);
        }

        foreach ((array) self::$COMPOSE['forward_uid'] as $uid) {
            $message = new rcube_message($uid);

            if (empty($message->headers)) {
                continue;
            }

            if (!empty($message->headers->charset)) {
                $storage->set_charset($message->headers->charset);
            }

            if (empty(self::$MESSAGE->subject)) {
                self::$MESSAGE->subject = $message->subject;
            }

            if ($message->headers->get('bcc', false) || $message->headers->get('resent-bcc', false)) {
                self::$COMPOSE['has_bcc'] = true;
            }

            // generate (unique) attachment name
            $name = strlen($message->subject) ? mb_substr($message->subject, 0, 64) : 'message_rfc822';
            if (!empty($names[$name])) {
                $names[$name]++;
                $name .= '_' . $names[$name];
            }
            $names[$name] = 1;
            $name .= '.eml';

            if (!empty($loaded_attachments[$name . 'message/rfc822'])) {
                continue;
            }

            if ($size_limit && $size_limit < $total_size + $message->headers->size) {
                $size_errors++;
                continue;
            }

            $total_size += $message->headers->size;

            self::save_attachment($message, null, self::$COMPOSE['id'], ['filename' => $name]);

            if ($message->headers->messageID) {
                $refs[] = $message->headers->messageID;
            }
        }

        // set In-Reply-To and References headers
        if (count($refs) == 1) {
            self::$COMPOSE['reply_msgid'] = $refs[0];
        }

        if (!empty($refs)) {
            self::$COMPOSE['references'] = implode(' ', $refs);
        }

        if ($size_errors) {
            $limit = self::show_bytes($size_limit);
            $error = $rcmail->gettext([
                    'name' => 'msgsizeerrorfwd',
                    'vars' => ['num' => $size_errors, 'size' => $limit]
            ]);
            $script = sprintf("%s.display_message('%s', 'error');", rcmail_output::JS_OBJECT_NAME, rcube::JQ($error));
            $rcmail->output->add_script($script, 'docready');
        }
    }

    /**
     * Saves an image as attachment
     */
    public static function save_image($path, $mimetype = '', $data = null)
    {
        $is_file = false;

        // handle attachments in memory
        if (empty($data)) {
            $data    = file_get_contents($path);
            $is_file = true;
        }

        $name = self::basename($path);

        if (empty($mimetype)) {
            if ($is_file) {
                $mimetype = rcube_mime::file_content_type($path, $name);
            }
            else {
                $mimetype = rcube_mime::file_content_type($data, $name, 'application/octet-stream', true);
            }
        }

        $attachment = [
            'group'    => self::$COMPOSE['id'],
            'name'     => $name,
            'mimetype' => $mimetype,
            'data'     => $data,
            'size'     => strlen($data),
        ];

        $attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment);

        if ($attachment['status']) {
            unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
            return $attachment;
        }

        return false;
    }

    /**
     * Unicode-safe basename()
     */
    public static function basename($filename)
    {
        // basename() is not unicode safe and locale dependent
        if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) {
            return preg_replace('/^.*[\\\\\\/]/', '', $filename);
        }
        else {
            return preg_replace('/^.*[\/]/', '', $filename);
        }
    }

    /**
     * Handler for template object 'composeObjects'
     *
     * @param array $attrib HTML attributes
     *
     * @return string HTML content
     */
    public static function compose_objects($attrib)
    {
        if (empty($attrib['id'])) {
            $attrib['id'] = 'compose-objects';
        }

        $rcmail  = rcmail::get_instance();
        $content = [];

        // Add a warning about Bcc recipients
        if (!empty(self::$COMPOSE['has_bcc'])) {
            $msg        = html::span(null, rcube::Q($rcmail->gettext('bccemail')));
            $msg_attrib = ['id' => 'bcc-warning', 'class' => 'boxwarning'];
            $content[]  = html::div($msg_attrib, $msg);
        }

        $plugin = $rcmail->plugins->exec_hook('compose_objects',
            ['content' => $content, 'message' => self::$MESSAGE]);

        $content = implode("\n", $plugin['content']);

        return $content ? html::div($attrib, $content) : '';
    }

    /**
     * Attachments list object for templates
     */
    public static function compose_attachment_list($attrib)
    {
        // add ID if not given
        if (empty($attrib['id'])) {
            $attrib['id'] = 'rcmAttachmentList';
        }

        $rcmail = rcmail::get_instance();
        $out    = '';
        $button = '';
        $jslist = [];

        if (!empty($attrib['icon_pos']) && $attrib['icon_pos'] == 'left') {
            self::$COMPOSE['icon_pos'] = 'left';
        }
        $icon_pos = self::$COMPOSE['icon_pos'] ?? null;

        if (!empty(self::$COMPOSE['attachments'])) {
            if (!empty($attrib['deleteicon'])) {
                $button = html::img([
                        'src' => $rcmail->output->asset_url($attrib['deleteicon'], true),
                        'alt' => $rcmail->gettext('delete')
                ]);
            }
            else if (self::get_bool_attr($attrib, 'textbuttons')) {
                $button = rcube::Q($rcmail->gettext('delete'));
            }

            foreach (self::$COMPOSE['attachments'] as $id => $a_prop) {
                if (empty($a_prop)) {
                    continue;
                }

                $link_content = sprintf(
                    '<span class="attachment-name" onmouseover="rcube_webmail.long_subject_title_ex(this)">%s</span>'
                        . ' <span class="attachment-size">(%s)</span>',
                    rcube::Q($a_prop['name']),
                    self::show_bytes($a_prop['size'])
                );

                $content_link = html::a([
                        'href'     => '#load',
                        'class'    => 'filename',
                        'onclick'  => sprintf(
                            "return %s.command('load-attachment','rcmfile%s', this, event)",
                            rcmail_output::JS_OBJECT_NAME,
                            $id
                        ),
                        'tabindex' => !empty($attrib['tabindex']) ? $attrib['tabindex'] : '0',
                    ],
                    $link_content
                );

                $delete_link = html::a([
                        'href'    => '#delete',
                        'title'   => $rcmail->gettext('delete'),
                        'onclick' => sprintf(
                            "return %s.command('remove-attachment','rcmfile%s', this, event)",
                            rcmail_output::JS_OBJECT_NAME,
                            $id
                        ),
                        'class'      => 'delete',
                        'tabindex'   => !empty($attrib['tabindex']) ? $attrib['tabindex'] : '0',
                        'aria-label' => $rcmail->gettext('delete') . ' ' . $a_prop['name'],
                    ],
                    $button
                );

                $out .= html::tag('li', [
                        'id'    => 'rcmfile' . $id,
                        'class' => rcube_utils::file2class($a_prop['mimetype'], $a_prop['name']),
                    ],
                    $icon_pos == 'left' ? $delete_link.$content_link : $content_link.$delete_link
                );

                $jslist['rcmfile'.$id] = [
                    'name'     => $a_prop['name'],
                    'complete' => true,
                    'mimetype' => $a_prop['mimetype']
                ];
            }
        }

        if (!empty($attrib['deleteicon'])) {
            self::$COMPOSE['deleteicon'] = $rcmail->output->asset_url($attrib['deleteicon'], true);
        }
        else if (self::get_bool_attr($attrib, 'textbuttons')) {
            self::$COMPOSE['textbuttons'] = true;
        }
        if (!empty($attrib['cancelicon'])) {
            $rcmail->output->set_env('cancelicon', $rcmail->output->asset_url($attrib['cancelicon'], true));
        }
        if (!empty($attrib['loadingicon'])) {
            $rcmail->output->set_env('loadingicon', $rcmail->output->asset_url($attrib['loadingicon'], true));
        }

        $rcmail->output->set_env('attachments', $jslist);
        $rcmail->output->add_gui_object('attachmentlist', $attrib['id']);

        // put tabindex value into data-tabindex attribute
        if (isset($attrib['tabindex'])) {
            $attrib['data-tabindex'] = $attrib['tabindex'];
            unset($attrib['tabindex']);
        }

        return html::tag('ul', $attrib, $out, html::$common_attrib);
    }

    /**
     * Attachment upload form object for templates
     */
    public static function compose_attachment_form($attrib)
    {
        $rcmail = rcmail::get_instance();

        // Limit attachment size according to message size limit
        $limit = parse_bytes($rcmail->config->get('max_message_size')) / 1.33;

        return self::upload_form($attrib, 'uploadform', 'send-attachment', ['multiple' => true], $limit);
    }

    /**
     * Register a certain container as active area to drop files onto
     */
    public static function compose_file_drop_area($attrib)
    {
        $rcmail = rcmail::get_instance();

        if (!empty($attrib['id'])) {
            $rcmail->output->add_gui_object('filedrop', $attrib['id']);
            $rcmail->output->set_env('filedrop', ['action' => 'upload', 'fieldname' => '_attachments']);
        }
    }

    /**
     * Editor mode selector object for templates
     */
    public static function editor_selector($attrib)
    {
        $rcmail = rcmail::get_instance();

        // determine whether HTML or plain text should be checked
        $useHtml = self::compose_editor_mode();

        if (empty($attrib['editorid'])) {
            $attrib['editorid'] = 'rcmComposeBody';
        }

        if (empty($attrib['name'])) {
            $attrib['name'] = 'editorSelect';
        }

        $attrib['onchange'] = "return rcmail.command('toggle-editor', {id: '".$attrib['editorid']."', html: this.value == 'html'}, '', event)";

        $select = new html_select($attrib);

        $select->add(rcube::Q($rcmail->gettext('htmltoggle')), 'html');
        $select->add(rcube::Q($rcmail->gettext('plaintoggle')), 'plain');

        return $select->show($useHtml ? 'html' : 'plain');
    }

    /**
     * Addressbooks list object for templates
     */
    public static function addressbook_list($attrib = [])
    {
        $rcmail = rcmail::get_instance();

        $attrib += ['id' => 'rcmdirectorylist'];

        $line_templ = html::tag('li',
            ['id' => 'rcmli%s', 'class' => '%s'],
            html::a([
                    'href'    => '#list',
                    'rel'     => '%s',
                    'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('list-addresses','%s',this)"
                ],
                '%s'
            )
        );

        $out = '';

        foreach ($rcmail->get_address_sources(false, true) as $j => $source) {
            $id = strval(strlen($source['id']) ? $source['id'] : $j);
            $js_id = rcube::JQ($id);

            // set class name(s)
            $class_name = 'addressbook';
            if (!empty($source['class_name'])) {
                $class_name .= ' ' . $source['class_name'];
            }

            $out .= sprintf($line_templ,
                rcube_utils::html_identifier($id,true),
                $class_name,
                $source['id'],
                $js_id,
                !empty($source['name']) ? $source['name'] : $id
            );
        }

        $rcmail->output->add_gui_object('addressbookslist', $attrib['id']);

        return html::tag('ul', $attrib, $out, html::$common_attrib);
    }

    /**
     * Contacts list object for templates
     */
    public static function contacts_list($attrib = [])
    {
        $rcmail = rcmail::get_instance();

        $attrib += ['id' => 'rcmAddressList'];

        // set client env
        $rcmail->output->add_gui_object('contactslist', $attrib['id']);
        $rcmail->output->set_env('pagecount', 0);
        $rcmail->output->set_env('current_page', 0);
        $rcmail->output->include_script('list.js');

        return $rcmail->table_output($attrib, [], ['name'], 'ID');
    }

    /**
     * Responses list object for templates
     *
     * @param array $attrib Object attributes
     *
     * @return string HTML content
     */
    public static function compose_responses_list($attrib)
    {
        $rcmail = rcmail::get_instance();

        $attrib += ['id' => 'rcmresponseslist', 'tagname' => 'ul', 'cols' => 1, 'itemclass' => ''];

        $list = new html_table($attrib);

        foreach ($rcmail->get_compose_responses() as $response) {
            $item = html::a([
                    'href'         => '#response-' . urlencode($response['id']),
                    'class'        => rtrim('insertresponse ' . $attrib['itemclass']),
                    'unselectable' => 'on',
                    'tabindex'     => '0',
                    'onclick'      => sprintf(
                        "return %s.command('insert-response', '%s', this, event)",
                        rcmail_output::JS_OBJECT_NAME,
                        rcube::JQ($response['id'])
                    ),
                ],
                rcube::Q($response['name'])
            );

            $list->add([], $item);
        }

        // add placeholder text when there are no responses available
        if (!empty($attrib['list-placeholder']) && $list->size() == 0) {
            $list->add([], html::a([
                    'href'          => '#',
                    'class'         => rtrim('insertresponse placeholder disabled'),
                    'unselectable'  => 'on',
                    'tabindex'      => '0',
                    'aria-disabled' => 'true',
                ],
                rcube::Q($rcmail->gettext($attrib['list-placeholder']))
            ));
        }

        $rcmail->output->add_gui_object('responseslist', $attrib['id']);

        return $list->show();
    }

    public static function save_attachment($message, $pid, $compose_id, $params = [])
    {
        $rcmail  = rcmail::get_instance();
        $storage = $rcmail->get_storage();

        if ($pid) {
            // attachment requested
            $part     = $message->mime_parts[$pid];
            $size     = $part->size;
            $mimetype = $part->ctype_primary . '/' . $part->ctype_secondary;
            $filename = !empty($params['filename']) ? $params['filename'] : self::attachment_name($part);
        }
        else if ($message instanceof rcube_message) {
            // the whole message requested
            $size     = $message->size ?? null;
            $mimetype = 'message/rfc822';
            $filename = !empty($params['filename']) ? $params['filename'] : 'message_rfc822.eml';
        }
        else if (is_string($message)) {
            // the whole message requested
            $size     = strlen($message);
            $data     = $message;
            $mimetype = $params['mimetype'];
            $filename = $params['filename'];
        }
        else {
            return;
        }

        if (!isset($data)) {
            $data = null;
            $path = null;

            // don't load too big attachments into memory
            if (!rcube_utils::mem_check($size)) {
                $path = rcube_utils::temp_filename('attmnt');

                if ($fp = fopen($path, 'w')) {
                    if ($pid) {
                        // part body
                        $message->get_part_body($pid, false, 0, $fp);
                    }
                    else {
                        // complete message
                        $storage->get_raw_body($message->uid, $fp);
                    }

                    fclose($fp);
                }
                else {
                    return false;
                }
            }
            else if ($pid) {
                // part body
                $data = $message->get_part_body($pid);
            }
            else {
                // complete message
                $data = $storage->get_raw_body($message->uid);
            }
        }

        $attachment = [
            'group'      => $compose_id,
            'name'       => $filename,
            'mimetype'   => $mimetype,
            'content_id' => !empty($part) && isset($part->content_id) ? $part->content_id : null,
            'data'       => $data,
            'path'       => $path ?? null,
            'size'       => isset($path) ? filesize($path) : strlen($data),
            'charset'    => !empty($part) ? $part->charset : ($params['charset'] ?? null),
        ];

        $attachment = $rcmail->plugins->exec_hook('attachment_save', $attachment);

        if ($attachment['status']) {
            unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);

            // rcube_session::append() replaces current session data with the old values
            // (in rcube_session::reload()). This is a problem in 'compose' action, because before
            // the first append() use we set some important data in the session.
            // It also overwrites attachments list. Fixing reload() is not so simple if possible
            // as we don't really know what has been added and what removed in meantime.
            // So, for now we'll do not use append() on 'compose' action (#1490608).

            if ($rcmail->action == 'compose') {
                self::$COMPOSE['attachments'][$attachment['id']] = $attachment;
            }
            else {
                $rcmail->session->append('compose_data_' . $compose_id . '.attachments', $attachment['id'], $attachment);
            }

            return $attachment;
        }
        else if (!empty($path)) {
            @unlink($path);
        }

        return false;
    }

    /**
     * Add quotation (>) to a replied message text.
     *
     * @param string $text Text to quote
     *
     * @return string The quoted text
     */
    public static function quote_text($text)
    {
        $lines = preg_split('/\r?\n/', trim($text));
        $out   = '';

        foreach ($lines as $line) {
            $quoted = isset($line[0]) && $line[0] == '>';
            $out .= '>' . ($quoted ? '' : ' ') . $line . "\n";
        }

        return rtrim($out, "\n");
    }
}
actions/mail/mark.php000064400000017464151727150630010614 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Mark the submitted messages with the specified flag                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_mark extends rcmail_action_mail_index
{
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail  = rcmail::get_instance();
        $_uids   = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST);
        $flag    = rcube_utils::get_input_string('_flag', rcube_utils::INPUT_POST);
        $folders = rcube_utils::get_input_string('_folders', rcube_utils::INPUT_POST);
        $mbox    = rcube_utils::get_input_string('_mbox', rcube_utils::INPUT_POST);

        if (empty($_uids) || empty($flag)) {
            $rcmail->output->show_message('internalerror', 'error');
            $rcmail->output->send();
        }

        $rcmail       = rcmail::get_instance();
        $threading    = (bool) $rcmail->storage->get_threading();
        $skip_deleted = (bool) $rcmail->config->get('skip_deleted');
        $read_deleted = (bool) $rcmail->config->get('read_when_deleted');
        $flag         = self::imap_flag($flag);
        $old_count    = 0;
        $from         = $_POST['_from'] ?? null;

        if ($flag == 'DELETED' && $skip_deleted && $from != 'show') {
            // count messages before changing anything
            $old_count = $rcmail->storage->count(null, $threading ? 'THREADS' : 'ALL');
        }

        if ($folders == 'all') {
            $mboxes = $rcmail->storage->list_folders_subscribed('', '*', 'mail');
            $input  = array_combine($mboxes, array_fill(0, count($mboxes), '*'));
        }
        else if ($folders == 'sub') {
            $delim  = $rcmail->storage->get_hierarchy_delimiter();
            $mboxes = $rcmail->storage->list_folders_subscribed($mbox . $delim, '*', 'mail');
            array_unshift($mboxes, $mbox);
            $input = array_combine($mboxes, array_fill(0, count($mboxes), '*'));
        }
        else if ($folders == 'cur') {
            $input = [$mbox => '*'];
        }
        else {
            $input = self::get_uids(null, null, $dummy, rcube_utils::INPUT_POST);
        }

        $marked = 0;
        $count  = 0;
        $read   = 0;

        foreach ($input as $mbox => $uids) {
            $marked += (int) $rcmail->storage->set_flag($uids, $flag, $mbox);
            $count  += is_array($uids) ? count($uids) : 1;
        }

        if (!$marked) {
            // send error message
            if ($from != 'show') {
                $rcmail->output->command('list_mailbox');
            }

            self::display_server_error('errormarking');
            $rcmail->output->send();
        }
        else if (empty($_POST['_quiet'])) {
            $rcmail->output->show_message('messagemarked', 'confirmation');
        }

        if ($flag == 'DELETED' && $read_deleted && !empty($_POST['_ruid'])) {
            if ($ruids = rcube_utils::get_input_value('_ruid', rcube_utils::INPUT_POST)) {
                foreach (self::get_uids($ruids) as $mbox => $uids) {
                    $read += (int) $rcmail->storage->set_flag($uids, 'SEEN', $mbox);
                }
            }

            if ($read && !$skip_deleted) {
                $rcmail->output->command('flag_deleted_as_read', $ruids);
            }
        }

        if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$skip_deleted)) {
            foreach ($input as $mbox => $uids) {
                self::send_unread_count($mbox);
            }

            $rcmail->output->set_env('last_flag', $flag);
        }
        else if ($flag == 'DELETED' && $skip_deleted) {
            if ($from == 'show') {
                if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC)) {
                    $rcmail->output->command('show_message', $next);
                }
                else {
                    $rcmail->output->command('command', 'list');
                }
            }
            else {
                $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC);

                // refresh saved search set after moving some messages
                if ($search_request && $rcmail->storage->get_search_set()) {
                    $_SESSION['search'] = $rcmail->storage->refresh_search();
                }

                $msg_count      = $rcmail->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
                $page_size      = $rcmail->storage->get_pagesize();
                $page           = $rcmail->storage->get_page();
                $pages          = ceil($msg_count / $page_size);
                $nextpage_count = $old_count - $page_size * $page;
                $remaining      = $msg_count - $page_size * ($page - 1);
                $jump_back      = false;

                // jump back one page (user removed the whole last page)
                if ($page > 1 && $remaining == 0) {
                    $page -= 1;
                    $rcmail->storage->set_page($page);
                    $_SESSION['page'] = $page;
                    $jump_back = true;
                }

                foreach ($input as $mbox => $uids) {
                    self::send_unread_count($mbox, true);
                }

                // update message count display
                $rcmail->output->set_env('messagecount', $msg_count);
                $rcmail->output->set_env('current_page', $page);
                $rcmail->output->set_env('pagecount', $pages);
                $rcmail->output->command('set_rowcount', self::get_messagecount_text($msg_count), $mbox);

                if ($threading) {
                    $count = rcube_utils::get_input_value('_count', rcube_utils::INPUT_POST);
                }

                // add new rows from next page (if any)
                if ($old_count && $_uids != '*' && ($jump_back || $nextpage_count > 0)) {
                    // #5862: Don't add more rows than it was on the next page
                    $count = $jump_back ? null : min($nextpage_count, $count);

                    $a_headers = $rcmail->storage->list_messages($mbox, null,
                        self::sort_column(), self::sort_order(), $count);

                    self::js_message_list($a_headers, false);
               }
            }
        }

        $rcmail->output->send();
    }

    /**
     * Map Roundcube UI's flag label into IMAP flag
     *
     * @param string $flag Flag label
     *
     * @return string Uppercase IMAP flag
     */
    public static function imap_flag($flag)
    {
        $flags_map = [
            'undelete'  => 'UNDELETED',
            'delete'    => 'DELETED',
            'read'      => 'SEEN',
            'unread'    => 'UNSEEN',
            'flagged'   => 'FLAGGED',
            'unflagged' => 'UNFLAGGED',
        ];

        return !empty($flags_map[$flag]) ? $flags_map[$flag] : strtoupper($flag);
    }
}
actions/mail/viewsource.php000064400000007171151727150630012047 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Display a mail message similar as a usual mail application does     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_viewsource extends rcmail_action
{
    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        if (!empty($_GET['_save'])) {
            $rcmail->request_security_check(rcube_utils::INPUT_GET);
        }

        ob_end_clean();

        // similar code as in program/steps/mail/get.inc
        if ($uid = rcube_utils::get_input_string('_uid', rcube_utils::INPUT_GET)) {
            if ($pos = strpos($uid, '.')) {
                $message = new rcube_message($uid);
                $headers = $message->headers;
                $part_id = substr($uid, $pos + 1);
            }
            else {
                $headers = $rcmail->storage->get_message_headers($uid);
            }

            $charset  = $headers->charset ?: $rcmail->config->get('default_charset', RCUBE_CHARSET);
            $filename = '';
            $params   = [
                'type'         => 'text/plain',
                'type_charset' => $charset,
            ];

            if (!empty($_GET['_save'])) {
                $subject  = rcube_mime::decode_header($headers->subject, $headers->charset);
                $filename = self::filename_from_subject(mb_substr($subject, 0, 128));
                $filename = ($filename ?: $uid)  . '.eml';

                $params['length'] = $headers->size;
                $params['disposition'] = 'attachment';
            }
            else {
                // Make sure it works in an iframe (#9084)
                $rcmail->output->page_headers();

                $params['disposition'] = 'inline';
            }

            $rcmail->output->download_headers($filename, $params);

            if (isset($part_id) && isset($message)) {
                $message->get_part_body($part_id, empty($_GET['_save']), 0, -1);
            }
            else {
                $rcmail->storage->print_raw_body($uid, empty($_GET['_save']));
            }
        }
        else {
            rcube::raise_error([
                    'code'    => 500,
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                    'message' => "Message UID $uid not found"
                ],
                true, true
            );
        }

        exit;
    }

    /**
     * Helper function to convert message subject into filename
     */
    public static function filename_from_subject($str)
    {
        $str = preg_replace('/[:\t\n\r\0\x0B\/]+\s*/', ' ', $str);

        return trim($str, " \t\n\r\0\x0B./_");
    }
}
actions/mail/check_recent.php000064400000021250151727150630012263 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Check for recent messages, in all mailboxes                         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

class rcmail_action_mail_check_recent extends rcmail_action_mail_index
{
    // only process ajax requests
    protected static $mode = self::MODE_AJAX;

    /**
     * Request handler.
     *
     * @param array $args Arguments from the previous step(s)
     */
    public function run($args = [])
    {
        $rcmail = rcmail::get_instance();

        // If there's no folder or messages list, there's nothing to update
        // This can happen on 'refresh' request
        if (empty($_POST['_folderlist']) && empty($_POST['_list'])) {
            return;
        }

        $trash     = $rcmail->config->get('trash_mbox');
        $current   = $rcmail->storage->get_folder();
        $check_all = $rcmail->action != 'refresh' || (bool) $rcmail->config->get('check_all_folders');
        $page      = $rcmail->storage->get_page();
        $page_size = $rcmail->storage->get_pagesize();

        $search_request = rcube_utils::get_input_string('_search', rcube_utils::INPUT_GPC);
        if ($search_request && $_SESSION['search_request'] != $search_request) {
            $search_request = null;
        }

        // list of folders to check
        if ($check_all) {
            $a_mailboxes = $rcmail->storage->list_folders_subscribed('', '*', 'mail');
        }
        else if ($search_request && isset($_SESSION['search'][1]) && is_object($_SESSION['search'][1])) {
            $a_mailboxes = (array) $_SESSION['search'][1]->get_parameters('MAILBOX');
        }
        else {
            $a_mailboxes = (array) $current;
            if ($current != 'INBOX') {
                $a_mailboxes[] = 'INBOX';
            }
        }

        // Control folders list from a plugin
        $plugin       = $rcmail->plugins->exec_hook('check_recent', ['folders' => $a_mailboxes, 'all' => $check_all]);
        $a_mailboxes  = $plugin['folders'];
        $list_cleared = false;

        self::storage_fatal_error();

        // check recent/unseen counts
        foreach ($a_mailboxes as $mbox_name) {
            $is_current = $mbox_name == $current
                || (
                    !empty($search_request)
                    && isset($_SESSION['search'][1])
                    && is_object($_SESSION['search'][1])
                    && in_array($mbox_name, (array)$_SESSION['search'][1]->get_parameters('MAILBOX'))
                );

            if ($is_current) {
                // Synchronize mailbox cache, handle flag changes
                $rcmail->storage->folder_sync($mbox_name);
            }

            // Get mailbox status
            $status = $rcmail->storage->folder_status($mbox_name, $diff);

            if ($is_current) {
                self::storage_fatal_error();
            }

            if ($status & 1) {
                // trigger plugin hook
                $rcmail->plugins->exec_hook('new_messages', [
                        'mailbox'    => $mbox_name,
                        'is_current' => $is_current,
                        'diff'       => $diff
                ]);
            }

            self::send_unread_count($mbox_name, true, null, (!$is_current && ($status & 1)) ? 'recent' : '');

            if ($status && $is_current) {
                // refresh saved search set
                if (!empty($search_request) && isset($_SESSION['search'])) {
                    unset($search_request);  // only do this once
                    $_SESSION['search'] = $rcmail->storage->refresh_search();
                    if (!empty($_SESSION['search'][1]->multi)) {
                        $mbox_name = '';
                    }
                }

                if (!empty($_POST['_quota'])) {
                    $rcmail->output->command('set_quota', self::quota_content(null, $mbox_name));
                }

                $rcmail->output->set_env('exists', $rcmail->storage->count($mbox_name, 'EXISTS', true));

                // "No-list" mode, don't get messages
                if (empty($_POST['_list'])) {
                    continue;
                }

                // get overall message count; allow caching because rcube_storage::folder_status()
                // did a refresh but only in list mode
                $list_mode = $rcmail->storage->get_threading() ? 'THREADS' : 'ALL';
                $all_count = $rcmail->storage->count($mbox_name, $list_mode, $list_mode == 'THREADS', false);

                // check current page if we're not on the first page
                if ($all_count && $page > 1) {
                    $remaining = $all_count - $page_size * ($page - 1);
                    if ($remaining <= 0) {
                        $page -= 1;
                        $rcmail->storage->set_page($page);
                        $_SESSION['page'] = $page;
                    }
                }

                $rcmail->output->set_env('messagecount', $all_count);
                $rcmail->output->set_env('pagecount', ceil($all_count/$page_size));
                $rcmail->output->command('set_rowcount', self::get_messagecount_text($all_count), $mbox_name);
                $rcmail->output->set_env('current_page', $all_count ? $page : 1);

                // remove old rows (and clear selection if new list is empty)
                $rcmail->output->command('message_list.clear', $all_count ? false : true);

                if ($all_count) {
                    $a_headers = $rcmail->storage->list_messages($mbox_name, null, self::sort_column(), self::sort_order());
                    // add message rows
                    self::js_message_list($a_headers, false);
                    // remove messages that don't exists from list selection array
                    $rcmail->output->command('update_selection');
                }

                $list_cleared = true;
            }

            // set trash folder state
            if ($mbox_name === $trash) {
                $rcmail->output->command('set_trash_count', $rcmail->storage->count($mbox_name, 'EXISTS', true));
            }
        }

        // handle flag updates
        if (!$list_cleared) {
            $uids = rcube_utils::get_input_value('_uids', rcube_utils::INPUT_POST);
            $uids = self::get_uids($uids, null, $multifolder);

            $recent_flags = [];

            foreach ($uids as $mbox_name => $set) {
                $get_flags = true;
                $modseq    = null;

                if ($mbox_name == $current) {
                    $data      = $rcmail->storage->folder_data($mbox_name);
                    $modseq    = !empty($_SESSION['list_mod_seq']) ? $_SESSION['list_mod_seq'] : null;
                    $get_flags = empty($modseq) || empty($data['HIGHESTMODSEQ']) || $modseq != $data['HIGHESTMODSEQ'];

                    // remember last HIGHESTMODSEQ value (if supported)
                    if (!empty($data['HIGHESTMODSEQ'])) {
                        $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
                    }
                }

                // TODO: Consider HIGHESTMODSEQ for all folders in multifolder search, otherwise
                // flags for all messages in a set are requested on every refresh

                if ($get_flags) {
                    $flags = $rcmail->storage->list_flags($mbox_name, $set, $modseq);

                    foreach ($flags as $idx => $row) {
                        if ($multifolder) {
                            $idx .= '-' . $mbox_name;
                        }
                        $recent_flags[$idx] = array_change_key_case(array_map('intval', $row));
                    }
                }

                $rcmail->output->set_env('recent_flags', $recent_flags);
            }
        }

        // trigger refresh hook
        $rcmail->plugins->exec_hook('refresh', []);

        $rcmail->output->send();
    }
}
lib/Roundcube/rcube_ldap_generic.php000064400000023220151727150630013553 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide basic functionality for accessing LDAP directories          |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 |         Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Model class to access an LDAP directories
 *
 * @package    Framework
 * @subpackage LDAP
 */
class rcube_ldap_generic extends Net_LDAP3
{
    /** private properties */
    protected $cache = null;
    protected $attributes = ['dn'];
    protected $error;

    /**
     * Class constructor
     *
     * @param array $config Configuration
     */
    function __construct($config = null)
    {
        parent::__construct($config);

        $this->config_set('log_hook', [$this, 'log']);
    }

    /**
     * Establish a connection to the LDAP server
     */
    public function connect($host = null)
    {
        // Net_LDAP3 does not support IDNA yet
        // also parse_host() here is very Roundcube specific
        $host = rcube_utils::parse_host($host, $this->config['mail_domain']);
        $host = rcube_utils::idn_to_ascii($host);

        return parent::connect($host);
    }

    /**
     * Prints debug/error info to the log
     */
    public function log($level, $msg)
    {
        $msg = implode("\n", $msg);

        switch ($level) {
        case LOG_DEBUG:
        case LOG_INFO:
        case LOG_NOTICE:
            if (!empty($this->config['debug'])) {
                rcube::write_log('ldap', $msg);
            }
            break;

        case LOG_EMERG:
        case LOG_ALERT:
        case LOG_CRIT:
            rcube::raise_error($msg, true, true);
            break;

        case LOG_ERR:
        case LOG_WARNING:
            $this->error = $msg;
            rcube::raise_error($msg, true, false);
            break;
        }
    }

    /**
     * Returns the last LDAP error occurred
     *
     * @return mixed Error message string or null if no error occurred
     */
    function get_error()
    {
        return $this->error;
    }

    /**
     * @deprecated
     */
    public function set_debug($dbg = true)
    {
        $this->config['debug'] = (bool) $dbg;
    }

    /**
     * @deprecated
     */
    public function set_cache($cache_engine)
    {
        $this->config['cache'] = $cache_engine;
    }

    /**
     * @deprecated
     */
    public static function scope2func($scope, &$ns_function = null)
    {
        return self::scope_to_function($scope, $ns_function);
    }

    /**
     * @deprecated
     */
    public function set_config($opt, $val = null)
    {
        $this->config_set($opt, $val);
    }

    /**
     * @deprecated
     */
    public function add($dn, $entry)
    {
        return $this->add_entry($dn, $entry);
    }

    /**
     * @deprecated
     */
    public function delete($dn)
    {
        return $this->delete_entry($dn);
    }

    /**
     * Wrapper for ldap_mod_replace()
     *
     * @see ldap_mod_replace()
     */
    public function mod_replace($dn, $entry)
    {
        $this->_debug("C: Replace $dn: ".print_r($entry, true));

        if (!ldap_mod_replace($this->conn, $dn, $entry)) {
            $this->_error("ldap_mod_replace() failed with " . ldap_error($this->conn));
            return false;
        }

        $this->_debug("S: OK");
        return true;
    }

    /**
     * Wrapper for ldap_mod_add()
     *
     * @see ldap_mod_add()
     */
    public function mod_add($dn, $entry)
    {
        $this->_debug("C: Add $dn: ".print_r($entry, true));

        if (!ldap_mod_add($this->conn, $dn, $entry)) {
            $this->_error("ldap_mod_add() failed with " . ldap_error($this->conn));
            return false;
        }

        $this->_debug("S: OK");
        return true;
    }

    /**
     * Wrapper for ldap_mod_del()
     *
     * @see ldap_mod_del()
     */
    public function mod_del($dn, $entry)
    {
        $this->_debug("C: Delete $dn: ".print_r($entry, true));

        if (!ldap_mod_del($this->conn, $dn, $entry)) {
            $this->_error("ldap_mod_del() failed with " . ldap_error($this->conn));
            return false;
        }

        $this->_debug("S: OK");
        return true;
    }

    /**
     * Wrapper for ldap_rename()
     *
     * @see ldap_rename()
     */
    public function rename($dn, $newrdn, $newparent = null, $deleteoldrdn = true)
    {
        $this->_debug("C: Rename $dn to $newrdn");

        if (!ldap_rename($this->conn, $dn, $newrdn, $newparent, $deleteoldrdn)) {
            $this->_error("ldap_rename() failed with " . ldap_error($this->conn));
            return false;
        }

        $this->_debug("S: OK");
        return true;
    }

    /**
     * Wrapper for ldap_list() + ldap_get_entries()
     *
     * @see ldap_list()
     * @see ldap_get_entries()
     */
    public function list_entries($dn, $filter, $attributes = ['dn'])
    {
        $this->_debug("C: List $dn [{$filter}]");

        if ($result = ldap_list($this->conn, $dn, $filter, $attributes)) {
            $list = ldap_get_entries($this->conn, $result);

            if ($list === false) {
                $this->_error("ldap_get_entries() failed with " . ldap_error($this->conn));
                return [];
            }

            $count = $list['count'];
            unset($list['count']);

            $this->_debug("S: $count record(s)");
        }
        else {
            $list = [];
            $this->_error("ldap_list() failed with " . ldap_error($this->conn));
        }

        return $list;
    }

    /**
     * Wrapper for ldap_read() + ldap_get_entries()
     *
     * @see ldap_read()
     * @see ldap_get_entries()
     */
    public function read_entries($dn, $filter, $attributes = null)
    {
        $this->_debug("C: Read $dn [{$filter}]");

        if ($this->conn && $dn) {
            $result = @ldap_read($this->conn, $dn, $filter, $attributes, 0, (int)$this->config['sizelimit'], (int)$this->config['timelimit']);
            if ($result === false) {
                $this->_error("ldap_read() failed with " . ldap_error($this->conn));
                return false;
            }

            $this->_debug("S: OK");
            return ldap_get_entries($this->conn, $result);
        }

        return false;
    }

    /**
     * Turn an LDAP entry into a regular PHP array with attributes as keys.
     *
     * @param array $entry Attributes array as retrieved from ldap_get_attributes() or ldap_get_entries()
     * @param bool  $flat  Convert one-element-array values into strings (not implemented)
     *
     * @return array Hash array with attributes as keys
     */
    public static function normalize_entry($entry, $flat = false)
    {
        if (!isset($entry['count'])) {
            return $entry;
        }

        $rec = [];

        for ($i=0; $i < $entry['count']; $i++) {
            $attr = $entry[$i];
            if ($entry[$attr]['count'] == 1) {
                switch ($attr) {
                    case 'objectclass':
                        $rec[$attr] = [strtolower($entry[$attr][0])];
                        break;
                    default:
                        $rec[$attr] = $entry[$attr][0];
                        break;
                }
            }
            else {
                for ($j=0; $j < $entry[$attr]['count']; $j++) {
                    $rec[$attr][$j] = $entry[$attr][$j];
                }
            }
        }

        return $rec;
    }

    /**
     * Compose an LDAP filter string matching all words from the search string
     * in the given list of attributes.
     *
     * @param string $value      Search value
     * @param mixed  $attributes List of LDAP attributes to search
     * @param int    $mode       Matching mode:
     *                           0 - partial (*abc*),
     *                           1 - strict (=),
     *                           2 - prefix (abc*)
     * @return string LDAP filter
     */
    public static function fulltext_search_filter($value, $attributes, $mode = 1)
    {
        if (empty($attributes)) {
            $attributes = ['cn'];
        }

        $groups = [];
        $value  = str_replace('*', '', $value);
        $words  = $mode == 0 ? rcube_utils::tokenize_string($value, 1) : [$value];

        // set wildcards
        $wp = $ws = '';
        if ($mode != 1) {
            $ws = '*';
            $wp = !$mode ? '*' : '';
        }

        // search each word in all listed attributes
        foreach ($words as $word) {
            $parts = [];

            foreach ($attributes as $attr) {
                $parts[] = "($attr=$wp" . self::quote_string($word) . "$ws)";
            }

            $groups[] = '(|' . implode('', $parts) . ')';
        }

        return count($groups) > 1 ? '(&' . implode('', $groups) . ')' : implode('', $groups);
    }
}
lib/Roundcube/rcube_html2text.php000064400000065471151727150630013110 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (c) 2005-2007, Jon Abernathy <jon@chuggnutt.com>            |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Converts HTML to formatted plain text (based on html2text class)    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Jon Abernathy <jon@chuggnutt.com>                             |
 +-----------------------------------------------------------------------+
 */

/**
 *  Takes HTML and converts it to formatted, plain text.
 *
 *  Thanks to Alexander Krug (http://www.krugar.de/) to pointing out and
 *  correcting an error in the regexp search array. Fixed 7/30/03.
 *
 *  Updated set_html() function's file reading mechanism, 9/25/03.
 *
 *  Thanks to Joss Sanglier (http://www.dancingbear.co.uk/) for adding
 *  several more HTML entity codes to the $search and $replace arrays.
 *  Updated 11/7/03.
 *
 *  Thanks to Darius Kasperavicius (http://www.dar.dar.lt/) for
 *  suggesting the addition of $allowed_tags and its supporting function
 *  (which I slightly modified). Updated 3/12/04.
 *
 *  Thanks to Justin Dearing for pointing out that a replacement for the
 *  <TH> tag was missing, and suggesting an appropriate fix.
 *  Updated 8/25/04.
 *
 *  Thanks to Mathieu Collas (http://www.myefarm.com/) for finding a
 *  display/formatting bug in the _build_link_list() function: email
 *  readers would show the left bracket and number ("[1") as part of the
 *  rendered email address.
 *  Updated 12/16/04.
 *
 *  Thanks to Wojciech Bajon (http://histeria.pl/) for submitting code
 *  to handle relative links, which I hadn't considered. I modified his
 *  code a bit to handle normal HTTP links and MAILTO links. Also for
 *  suggesting three additional HTML entity codes to search for.
 *  Updated 03/02/05.
 *
 *  Thanks to Jacob Chandler for pointing out another link condition
 *  for the _build_link_list() function: "https".
 *  Updated 04/06/05.
 *
 *  Thanks to Marc Bertrand (http://www.dresdensky.com/) for
 *  suggesting a revision to the word wrapping functionality; if you
 *  specify a $width of 0 or less, word wrapping will be ignored.
 *  Updated 11/02/06.
 *
 *  *** Big housecleaning updates below:
 *
 *  Thanks to Colin Brown (http://www.sparkdriver.co.uk/) for
 *  suggesting the fix to handle </li> and blank lines (whitespace).
 *  Christian Basedau (http://www.movetheweb.de/) also suggested the
 *  blank lines fix.
 *
 *  Special thanks to Marcus Bointon (http://www.synchromedia.co.uk/),
 *  Christian Basedau, Norbert Laposa (http://ln5.co.uk/),
 *  Bas van de Weijer, and Marijn van Butselaar
 *  for pointing out my glaring error in the <th> handling. Marcus also
 *  supplied a host of fixes.
 *
 *  Thanks to Jeffrey Silverman (http://www.newtnotes.com/) for pointing
 *  out that extra spaces should be compressed--a problem addressed with
 *  Marcus Bointon's fixes but that I had not yet incorporated.
 *
 *  Thanks to Daniel Schledermann (http://www.typoconsult.dk/) for
 *  suggesting a valuable fix with <a> tag handling.
 *
 *  Thanks to Wojciech Bajon (again!) for suggesting fixes and additions,
 *  including the <a> tag handling that Daniel Schledermann pointed
 *  out but that I had not yet incorporated. I haven't (yet)
 *  incorporated all of Wojciech's changes, though I may at some
 *  future time.
 *
 *  *** End of the housecleaning updates. Updated 08/08/07.
 */

/**
 * Converts HTML to formatted plain text
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_html2text
{
    const LINKS_NONE = 0;
    const LINKS_END = 1;
    const LINKS_INLINE = 2;
    const LINKS_DEFAULT = self::LINKS_END;

    /**
     * Contains the HTML content to convert.
     *
     * @var string $html
     */
    protected $html;

    /**
     * Contains the converted, formatted text.
     *
     * @var string $text
     */
    protected $text;

    /**
     * Maximum width of the formatted text, in columns.
     *
     * Set this value to 0 (or less) to ignore word wrapping
     * and not constrain text to a fixed-width column.
     *
     * @var int $width
     */
    protected $width = 70;

    /**
     * Target character encoding for output text
     *
     * @var string $charset
     */
    protected $charset = 'UTF-8';

    /**
     * List of preg* regular expression patterns to search for,
     * used in conjunction with $replace.
     *
     * @var array $search
     * @see self::$replace
     */
    protected $search = [
        '/\r/',                                  // Non-legal carriage return
        '/\n*<\/?html>\n*/is',                   // <html>
        '/\n*<head[^>]*>.*?<\/head>\n*/is',      // <head>
        '/\n*<script[^>]*>.*?<\/script>\n*/is',  // <script>
        '/\n*<style[^>]*>.*?<\/style>\n*/is',    // <style>
        '/[\n\t]+/',                             // Newlines and tabs
        '/<p[^>]*>/i',                           // <p>
        '/<\/p>[\s\n\t]*<div[^>]*>/i',           // </p> before <div>
        '/<br[^>]*>[\s\n\t]*<div[^>]*>/i',       // <br> before <div>
        '/<br[^>]*>\s*/i',                       // <br>
        '/<i[^>]*>(.*?)<\/i>/i',                 // <i>
        '/<em[^>]*>(.*?)<\/em>/i',               // <em>
        '/(<ul[^>]*>|<\/ul>)/i',                 // <ul> and </ul>
        '/(<ol[^>]*>|<\/ol>)/i',                 // <ol> and </ol>
        '/<li[^>]*>(.*?)<\/li>/i',               // <li> and </li>
        '/<li[^>]*>/i',                          // <li>
        '/<hr[^>]*>/i',                          // <hr>
        '/<div[^>]*>/i',                         // <div>
        '/(<table[^>]*>|<\/table>)/i',           // <table> and </table>
        '/(<tr[^>]*>|<\/tr>)/i',                 // <tr> and </tr>
        '/<td[^>]*>(.*?)<\/td>/i',               // <td> and </td>
    ];

    /**
     * List of pattern replacements corresponding to patterns searched.
     *
     * @var array $replace
     * @see self::$search
     */
    protected $replace = [
        '',                                     // Non-legal carriage return
        '',                                     // <html>|</html>
        '',                                     // <head>
        '',                                     // <script>
        '',                                     // <style>
        ' ',                                    // Newlines and tabs
        "\n\n",                                 // <p>
        "\n<div>",                              // </p> before <div>
        '<div>',                                // <br> before <div>
        "\n",                                   // <br>
        '_\\1_',                                // <i>
        '_\\1_',                                // <em>
        "\n\n",                                 // <ul> and </ul>
        "\n\n",                                 // <ol> and </ol>
        "\t* \\1\n",                            // <li> and </li>
        "\n\t* ",                               // <li>
        "\n-------------------------\n",        // <hr>
        "<div>\n",                              // <div>
        "\n\n",                                 // <table> and </table>
        "\n",                                   // <tr> and </tr>
        "\t\t\\1\n",                            // <td> and </td>
    ];

    /**
     * List of preg* regular expression patterns to search for,
     * used in conjunction with $ent_replace.
     *
     * @var array $ent_search
     * @see self::$ent_replace
     */
    protected $ent_search = [
        '/&(nbsp|#160);/i',                      // Non-breaking space
        '/&(quot|rdquo|ldquo|#8220|#8221|#147|#148);/i', // Double quotes
        '/&(apos|rsquo|lsquo|#8216|#8217);/i',   // Single quotes
        '/&gt;/i',                               // Greater-than
        '/&lt;/i',                               // Less-than
        '/&(copy|#169);/i',                      // Copyright
        '/&(trade|#8482|#153);/i',               // Trademark
        '/&(reg|#174);/i',                       // Registered
        '/&(mdash|#151|#8212);/i',               // mdash
        '/&(ndash|minus|#8211|#8722);/i',        // ndash
        '/&(bull|#149|#8226);/i',                // Bullet
        '/&(pound|#163);/i',                     // Pound sign
        '/&(euro|#8364);/i',                     // Euro sign
        '/&(amp|#38);/i',                        // Ampersand: see _converter()
        '/[ ]{2,}/',                             // Runs of spaces, post-handling
    ];

    /**
     * List of pattern replacements corresponding to patterns searched.
     *
     * @var array $ent_replace
     * @see self::$ent_search
     */
    protected $ent_replace = [
        "\xC2\xA0",                             // Non-breaking space
        '"',                                    // Double quotes
        "'",                                    // Single quotes
        '>',
        '<',
        '(c)',
        '(tm)',
        '(R)',
        '--',
        '-',
        '*',
        '£',
        'EUR',                                  // Euro sign. €
        '|+|amp|+|',                            // Ampersand: see _converter()
        ' ',                                    // Runs of spaces, post-handling
    ];

    /**
     * List of preg* regular expression patterns to search for
     * and replace using callback function.
     *
     * @var array $callback_search
     */
    protected $callback_search = [
        '/<(a) [^>]*href=("|\')([^"\']+)\2[^>]*>(.*?)<\/a>/i', // <a href="">
        '/<(h)[123456]( [^>]*)?>(.*?)<\/h[123456]>/i',         // h1 - h6
        '/<(th)( [^>]*)?>(.*?)<\/th>/i',                       // <th> and </th>
    ];

    /**
     * List of preg* regular expression patterns to search for in PRE body,
     * used in conjunction with $pre_replace.
     *
     * @var array $pre_search
     * @see self::$pre_replace
     */
    protected $pre_search = [
        "/\n/",
        "/\t/",
        '/ /',
        '/<pre[^>]*>/',
        '/<\/pre>/'
    ];

    /**
     * List of pattern replacements corresponding to patterns searched for PRE body.
     *
     * @var array $pre_replace
     * @see self::$pre_search
     */
    protected $pre_replace = [
        '<br>',
        '&nbsp;&nbsp;&nbsp;&nbsp;',
        '&nbsp;',
        '',
        ''
    ];

    /**
     * Temp. PRE content
     *
     * @var string $pre_content
     */
    protected $pre_content = '';

    /**
     * Contains a list of HTML tags to allow in the resulting text.
     *
     * @var string $allowed_tags
     * @see self::set_allowed_tags()
     */
    protected $allowed_tags = '';

    /**
     * Contains the base URL that relative links should resolve to.
     *
     * @var string $url
     */
    protected $url;

    /**
     * Indicates whether content in the $html variable has been converted yet.
     *
     * @var bool $_converted
     * @see self::$html
     * @see self::$text
     */
    protected $_converted = false;

    /**
     * Contains URL addresses from links to be rendered in plain text.
     *
     * @var array $_link_list
     * @see self::_build_link_list()
     */
    protected $_link_list = [];

    /**
     * Links handling.
     * - 0 if links should be removed
     * - 1 if a table of link URLs should be listed after the text
     * - 2 if the link should be displayed to the original point in the text they appeared
     *
     * @var int $_links_mode
     */
    protected $_links_mode = 1;

    /**
     * Constructor.
     *
     * If the HTML source string (or file) is supplied, the class
     * will instantiate with that source propagated, all that has
     * to be done it to call get_text().
     *
     * @param string   $source     HTML content
     * @param bool     $from_file  Indicates $source is a file to pull content from
     * @param bool|int $links_mode Links handling mode
     * @param int      $width      Maximum width of the formatted text, 0 for no limit
     */
    function __construct($source = '', $from_file = false, $links_mode = self::LINKS_DEFAULT, $width = 75, $charset = 'UTF-8')
    {
        if (!empty($source)) {
            $this->set_html($source, $from_file);
        }

        $this->set_base_url();
        $this->set_links_mode($links_mode);

        $this->width   = $width;
        $this->charset = $charset;
    }

    /**
     * Sets the links behavior mode
     *
     * @param bool|int $mode
     */
    private function set_links_mode($mode)
    {
        $allowed = [
            self::LINKS_NONE,
            self::LINKS_END,
            self::LINKS_INLINE
        ];

        if (!in_array((int) $mode, $allowed)) {
            $this->_links_mode = self::LINKS_DEFAULT;
            return;
        }

        $this->_links_mode = (int) $mode;
    }

    /**
     * Loads source HTML into memory, either from $source string or a file.
     *
     * @param string $source    HTML content
     * @param bool   $from_file Indicates $source is a file to pull content from
     */
    function set_html($source, $from_file = false)
    {
        if ($from_file && file_exists($source)) {
            $this->html = file_get_contents($source);
        }
        else {
            $this->html = $source;
        }

        $this->_converted = false;
    }

    /**
     * Returns the text, converted from HTML.
     *
     * @return string Plain text
     */
    function get_text()
    {
        if (!$this->_converted) {
            $this->_convert();
        }

        return $this->text;
    }

    /**
     * Prints the text, converted from HTML.
     */
    function print_text()
    {
        print $this->get_text();
    }

    /**
     * Sets the allowed HTML tags to pass through to the resulting text.
     *
     * Tags should be in the form "<p>", with no corresponding closing tag.
     */
    function set_allowed_tags($allowed_tags = '')
    {
        if (!empty($allowed_tags)) {
            $this->allowed_tags = $allowed_tags;
        }
    }

    /**
     * Sets a base URL to handle relative links.
     */
    function set_base_url($url = '')
    {
        if (empty($url)) {
            if (!empty($_SERVER['HTTP_HOST'])) {
                $this->url = 'http://' . $_SERVER['HTTP_HOST'];
            }
            else {
                $this->url = '';
            }
        }
        else {
            // Strip any trailing slashes for consistency (relative
            // URLs may already start with a slash like "/file.html")
            if (substr($url, -1) == '/') {
                $url = substr($url, 0, -1);
            }
            $this->url = $url;
        }
    }

    /**
     * Workhorse function that does actual conversion (calls _converter() method).
     */
    protected function _convert()
    {
        // Variables used for building the link list
        $this->_link_list = [];

        $text = $this->html;

        // Convert HTML to TXT
        $this->_converter($text);

        // Add link list
        if (!empty($this->_link_list)) {
            $text .= "\n\nLinks:\n------\n";
            foreach ($this->_link_list as $idx => $url) {
                $text .= '[' . ($idx+1) . '] ' . $url . "\n";
            }
        }

        $this->text       = $text;
        $this->_converted = true;
    }

    /**
     * Workhorse function that does actual conversion.
     *
     * First performs custom tag replacement specified by $search and
     * $replace arrays. Then strips any remaining HTML tags, reduces whitespace
     * and newlines to a readable format, and word wraps the text to
     * $width characters.
     *
     * @param string &$text Reference to HTML content string
     */
    protected function _converter(&$text)
    {
        // Convert <BLOCKQUOTE> (before PRE!)
        $this->_convert_blockquotes($text);

        // Convert <PRE>
        $this->_convert_pre($text);

        // Remove body tag and anything before
        // We used to have '/^.*<body[^>]*>\n*/is' in $this->search, but this requires
        // high pcre.backtrack_limit setting when converting long HTML strings (#8137)
        if (($pos = stripos($text, '<body')) !== false) {
            $pos = strpos($text, '>', $pos);
            $text = substr($text, $pos + 1);
            $text = ltrim($text);
        }

        // Run our defined tags search-and-replace
        $text = preg_replace($this->search, $this->replace, $text);

        // Run our defined tags search-and-replace with callback
        $text = preg_replace_callback($this->callback_search, [$this, 'tags_preg_callback'], $text);

        // Strip any other HTML tags
        $text = strip_tags($text, $this->allowed_tags);

        // Run our defined entities/characters search-and-replace
        $text = preg_replace($this->ent_search, $this->ent_replace, $text);

        // Replace known html entities
        $text = html_entity_decode($text, ENT_QUOTES, $this->charset);

        // Replace unicode nbsp to regular spaces
        $text = preg_replace('/\xC2\xA0/', ' ', $text);

        // Remove unknown/unhandled entities (this cannot be done in search-and-replace block)
        $text = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $text);

        // Convert "|+|amp|+|" into "&", need to be done after handling of unknown entities
        // This properly handles situation of "&amp;quot;" in input string
        $text = str_replace('|+|amp|+|', '&', $text);

        // Bring down number of empty lines to 2 max
        $text = preg_replace("/\n\s+\n/", "\n\n", $text);
        $text = preg_replace("/[\n]{3,}/", "\n\n", $text);

        // remove leading empty lines (can be produced by e.g. P tag on the beginning)
        $text = ltrim($text, "\n");

        // Wrap the text to a readable format
        // for PHP versions >= 4.0.2. Default width is 75
        // If width is 0 or less, don't wrap the text.
        if ($this->width > 0) {
            $text = wordwrap($text, $this->width);
        }
    }

    /**
     * Helper function called by preg_replace() on link replacement.
     *
     * Maintains an internal list of links to be displayed at the end of the
     * text, with numeric indices or simply the link to the original point in the text they
     * appeared. Also makes an effort at identifying and handling absolute
     * and relative links.
     *
     * @param string $link    URL of the link
     * @param string $display Part of the text to associate number with
     */
    protected function _handle_link($link, $display)
    {
        if (empty($link)) {
            return $display;
        }

        // Ignored link types
        if (preg_match('!^(javascript:|mailto:|#)!i', $link)) {
            return $display;
        }

        // skip links with href == content (#1490434)
        if ($link === $display) {
            return $display;
        }

        if (preg_match('!^([a-z][a-z0-9.+-]+:)!i', $link)) {
            $url = $link;
        }
        else {
            $url = $this->url;
            if (substr($link, 0, 1) != '/') {
                $url .= '/';
            }
            $url .= "$link";
        }

        if (self::LINKS_NONE === $this->_links_mode) {
            // When not using link list use URL if there's no content (#5795)
            // The content here is HTML, convert it to text first
            $h2t     = new rcube_html2text($display, false, false, 1024, $this->charset);
            $display = $h2t->get_text();

            if (empty($display) && preg_match('!^([a-z][a-z0-9.+-]+://)!i', $link)) {
                return $link;
            }

            return $display;
        }

        if (self::LINKS_INLINE === $this->_links_mode) {
            return $this->_build_link_inline($url, $display);
        }

        return $this->_build_link_list($url, $display);
    }

    /**
     * Helper function called by _handle_link() on link replacement.
     *
     * Displays the link next to the original point in the text they
     * appeared.
     *
     * @param string $url     URL of the link
     * @param string $display linktext
     */
    protected function _build_link_inline($url, $display)
    {
        return $display . ' &lt;' . $url . '&gt;';
    }

    /**
     * Helper function called by _handle_link() on link replacement.
     *
     * Maintains an internal list of links to be displayed at the end of the
     * text, with numeric indices to the original point in the text they
     * appeared.
     *
     * @param string $url    URL of the link
     * @param string $display Part of the text to associate number with
     */
    protected function _build_link_list($url, $display)
    {
        if (($index = array_search($url, $this->_link_list)) === false) {
            $index = count($this->_link_list);
            $this->_link_list[] = $url;
        }

        return $display . ' [' . ($index+1) . ']';
    }

    /**
     * Helper function for PRE body conversion.
     *
     * @param string &$text HTML content
     */
    protected function _convert_pre(&$text)
    {
        // get the content of PRE element
        while (preg_match('/<pre[^>]*>(.*)<\/pre>/ismU', $text, $matches)) {
            $this->pre_content = $matches[1];

            // Run our defined tags search-and-replace with callback
            $this->pre_content = preg_replace_callback($this->callback_search,
                [$this, 'tags_preg_callback'], $this->pre_content);

            // convert the content
            $this->pre_content = sprintf('<div><br>%s<br></div>',
                preg_replace($this->pre_search, $this->pre_replace, $this->pre_content));

            // replace the content (use callback because content can contain $0 variable)
            $text = preg_replace_callback('/<pre[^>]*>.*<\/pre>/ismU',
                [$this, 'pre_preg_callback'], $text, 1);

            // free memory
            $this->pre_content = '';
        }
    }

    /**
     * Helper function for BLOCKQUOTE body conversion.
     *
     * @param string &$text HTML content
     */
    protected function _convert_blockquotes(&$text)
    {
        $level  = 0;
        $offset = 0;

        while (($start = stripos($text, '<blockquote', $offset)) !== false) {
            $offset = $start + 12;

            do {
                $end = stripos($text, '</blockquote>', $offset);
                $next = stripos($text, '<blockquote', $offset);

                // nested <blockquote>, skip
                if ($next !== false && $next < $end) {
                    $offset = $next + 12;
                    $level++;
                }
                // nested </blockquote> tag
                if ($end !== false && $level > 0) {
                    $offset = $end + 12;
                    $level--;
                }
                // found matching end tag
                else if ($end !== false && $level == 0) {
                    $taglen = strpos($text, '>', $start) - $start;
                    $startpos = $start + $taglen + 1;

                    // get blockquote content
                    $body = trim(substr($text, $startpos, $end - $startpos));

                    // adjust text wrapping width
                    $p_width = $this->width;
                    if ($this->width > 0) $this->width -= 2;

                    // replace content with inner blockquotes
                    $this->_converter($body);

                    // restore text width
                    $this->width = $p_width;

                    // Add citation markers and create <pre> block
                    $body = preg_replace_callback('/((?:^|\n)>*)([^\n]*)/', [$this, 'blockquote_citation_callback'], trim($body));
                    $body = '<pre>' . htmlspecialchars($body, ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, $this->charset) . '</pre>';

                    $text = substr_replace($text, $body . "\n", $start, $end + 13 - $start);
                    $offset = 0;

                    break;
                }
                // abort on invalid tag structure (e.g. no closing tag found)
                else {
                    break;
                }
            }
            while ($end || $next);
        }
    }

    /**
     * Callback function to correctly add citation markers for blockquote contents
     */
    public function blockquote_citation_callback($m)
    {
        $line  = ltrim($m[2]);
        $space = isset($line[0]) && $line[0] == '>' ? '' : ' ';

        return $m[1] . '>' . $space . $line;
    }

    /**
     * Callback function for preg_replace_callback use.
     *
     * @param array $matches PREG matches
     *
     * @return string Element content
     */
    public function tags_preg_callback($matches)
    {
        switch (strtolower($matches[1])) {
        case 'th':
            return $this->_toupper("\t\t". $matches[3] ."\n");
        case 'h':
            return $this->_toupper("\n\n". $matches[3] ."\n\n");
        case 'a':
            // Remove spaces in URL (#1487805)
            $url = str_replace(' ', '', $matches[3]);
            $url = html_entity_decode($url, \ENT_HTML5, RCUBE_CHARSET);
            return $this->_handle_link($url, $matches[4]);
        }
    }

    /**
     * Callback function for preg_replace_callback use in PRE content handler.
     *
     * @param array $matches PREG matches
     *
     * @return string PRE content
     */
    public function pre_preg_callback($matches)
    {
        return $this->pre_content;
    }

    /**
     * Strtoupper function with HTML tags and entities handling.
     *
     * @param string $str Text to convert
     *
     * @return string Converted text
     */
    private function _toupper($str)
    {
        // string can containing HTML tags
        $chunks = preg_split('/(<[^>]*>)/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

        // convert toupper only the text between HTML tags
        foreach ($chunks as $idx => $chunk) {
            if ($chunk[0] != '<') {
                $chunks[$idx] = $this->_strtoupper($chunk);
            }
        }

        return implode($chunks);
    }

    /**
     * Strtoupper multibyte wrapper function with HTML entities handling.
     *
     * @param string $str Text to convert
     *
     * @return string Converted text
     */
    private function _strtoupper($str)
    {
        $str = html_entity_decode($str, ENT_COMPAT, $this->charset);
        $str = mb_strtoupper($str);
        $str = htmlspecialchars($str, ENT_COMPAT, $this->charset);

        return $str;
    }
}
lib/Roundcube/rcube_result_set.php000064400000007604151727150630013340 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Class representing an address directory result set                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Roundcube result set class
 *
 * Representing an address directory result set.
 * Implements Iterator and can thus be used in foreach() loops.
 *
 * @package    Framework
 * @subpackage Addressbook
 */
class rcube_result_set implements Iterator, ArrayAccess
{
    /**
     * @var int The number of total records. Note that when only a subset of records is requested,
     *          this number may be higher than the number of data records in this result set.
     */
    public $count = 0;

    /**
     * @var int When a subset of the total records is requested, $first gives the index into the total record
     *          set from that the data records in this result set start. This is normally a multiple of the
     *          user-configured page size.
     */
    public $first = 0;

    /**
     * @var bool True if the results are from an addressbook that does not support listing all records but
     *           requires the search function to be used.
     */
    public $searchonly = false;

    /**
     * @var array The data records of the result set. May be a subset of the total records, e.g. for one page.
     */
    public $records = [];

    private $current = 0;

    function __construct($count = 0, $first = 0)
    {
        $this->count = (int) $count;
        $this->first = (int) $first;
    }

    public function add($rec)
    {
        $this->records[] = $rec;
    }

    public function iterate()
    {
        $current = $this->current();

        $this->current++;

        return $current;
    }

    public function first()
    {
        $this->current = 0;
        return $this->current();
    }

    public function seek($i): void
    {
        $this->current = $i;
    }

    /*** Implement PHP ArrayAccess interface ***/

    public function offsetSet($offset, $value): void
    {
        if (is_null($offset)) {
            $offset = count($this->records);
            $this->records[] = $value;
        }
        else {
            $this->records[$offset] = $value;
        }
    }

    public function offsetExists($offset): bool
    {
        return isset($this->records[$offset]);
    }

    public function offsetUnset($offset): void
    {
        unset($this->records[$offset]);
    }

    #[ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return $this->records[$offset];
    }

    /***  PHP 5 Iterator interface  ***/

    public function rewind(): void
    {
        $this->current = 0;
    }

    #[ReturnTypeWillChange]
    public function current()
    {
        return $this->records[$this->current] ?? null;
    }

    #[ReturnTypeWillChange]
    public function key()
    {
        return $this->current;
    }

    #[ReturnTypeWillChange]
    public function next()
    {
        return $this->iterate();
    }

    public function valid(): bool
    {
        return isset($this->records[$this->current]);
    }
}
lib/Roundcube/rcube_message_part.php000064400000006046151727150630013620 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Class representing a message part                                   |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class representing a message part
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_message_part
{
    /**
     * Part MIME identifier
     *
     * @var string
     */
    public $mime_id = '';

    /**
     * Content main type
     *
     * @var string
     */
    public $ctype_primary = 'text';

    /**
     * Content subtype
     *
     * @var string
     */
    public $ctype_secondary = 'plain';

    /**
     * Full content type
     *
     * @var string
     */
    public $mimetype = 'text/plain';

    /**
     * Real content type (for fake parts)
     *
     * @var string|null
     */
    public $realtype;

    /**
     * Real content type of a message/rfc822 part
     *
     * @var string
     */
    public $real_mimetype = '';

    /**
     * Part size in bytes
     *
     * @var int
     */
    public $size = 0;

    /**
     * Part body
     *
     * @var string|null
     */
    public $body;

    /**
     * Part headers
     *
     * @var array
     */
    public $headers = [];

    /**
     * Sub-Parts
     *
     * @var array
     */
    public $parts = [];

    /**
     * Part Content-Id
     *
     * @var string|null
     */
    public $content_id;

    /**
     * Part Content-Location
     *
     * @var string|null
     */
    public $content_location;

    public $type;
    public $replaces     = [];
    public $disposition  = '';
    public $filename     = '';
    public $encoding     = '8bit';
    public $charset      = '';
    public $d_parameters = [];
    public $ctype_parameters = [];
    public $body_modified = false;


    /**
     * Clone handler.
     */
    function __clone()
    {
        if (isset($this->parts)) {
            foreach ($this->parts as $idx => $part) {
                if (is_object($part)) {
                    $this->parts[$idx] = clone $part;
                }
            }
        }
    }
}
lib/Roundcube/rcube_db.php000064400000127765151727150630011547 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements PHP PDO functions            |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface.
 * This is a wrapper for the PHP PDO.
 *
 * @package   Framework
 * @subpackage Database
 */
class rcube_db
{
    /** @var string Database implementation (mysql, postgres, etc.) */
    public $db_provider;

    protected $db_dsnw;               // DSN for write operations
    protected $db_dsnr;               // DSN for read operations
    protected $db_dsnw_array;         // DSN for write operations
    protected $db_dsnr_array;         // DSN for read operations
    protected $db_connected = false;  // Already connected ?
    protected $db_mode;               // Connection mode
    protected $db_pconn = false;      // Persistent connections flag
    protected $dbh;                   // Connection handle
    protected $dbhs = [];
    protected $table_connections = [];

    protected $db_error     = false;
    protected $db_error_msg = '';
    protected $conn_failure = false;
    protected $db_index     = 0;
    protected $last_result;
    protected $tables;
    protected $variables;

    protected $options = [
        // column/table quotes
        'identifier_start' => '"',
        'identifier_end'   => '"',
        // date/time input format
        'datetime_format'  => 'Y-m-d H:i:s',
        'table_prefix'     => '',
    ];

    const DEBUG_LINE_LENGTH = 4096;
    const DEFAULT_QUOTE     = '`';

    const TYPE_SQL    = 'sql';
    const TYPE_INT    = 'integer';
    const TYPE_BOOL   = 'bool';
    const TYPE_STRING = 'string';


    /**
     * Factory, returns driver-specific instance of the class
     *
     * @param string $db_dsnw DSN for read/write operations
     * @param string $db_dsnr Optional DSN for read only operations
     * @param bool   $pconn   Enables persistent connections
     *
     * @return rcube_db Object instance
     */
    public static function factory($db_dsnw, $db_dsnr = '', $pconn = false)
    {
        $db_dsnw    = (string) $db_dsnw;
        $driver     = strtolower(substr($db_dsnw, 0, strpos($db_dsnw, ':')));
        $driver_map = [
            'sqlite2' => 'sqlite',
            'sybase'  => 'mssql',
            'dblib'   => 'mssql',
            'mysqli'  => 'mysql',
            'oci'     => 'oracle',
            'oci8'    => 'oracle',
        ];

        $driver = $driver_map[$driver] ?? $driver;
        $class  = "rcube_db_$driver";

        if (!$driver || !class_exists($class)) {
            rcube::raise_error([
                    'code' => 600, 'type' => 'db',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Configuration error. Unsupported database driver: $driver"
                ],
                true, true
            );
        }

        return new $class($db_dsnw, $db_dsnr, $pconn);
    }

    /**
     * Object constructor
     *
     * @param string $db_dsnw DSN for read/write operations
     * @param string $db_dsnr Optional DSN for read only operations
     * @param bool   $pconn   Enables persistent connections
     */
    public function __construct($db_dsnw, $db_dsnr = '', $pconn = false)
    {
        if (empty($db_dsnr)) {
            $db_dsnr = $db_dsnw;
        }

        $this->db_dsnw  = $db_dsnw;
        $this->db_dsnr  = $db_dsnr;
        $this->db_pconn = $pconn;

        $this->db_dsnw_array = self::parse_dsn($db_dsnw);
        $this->db_dsnr_array = self::parse_dsn($db_dsnr);

        $config = rcube::get_instance()->config;

        $this->options['table_prefix']  = $config->get('db_prefix');
        $this->options['dsnw_noread']   = $config->get('db_dsnw_noread', false);
        $this->options['table_dsn_map'] = array_map([$this, 'table_name'], $config->get('db_table_dsn', []));
    }

    /**
     * Connect to specific database
     *
     * @param array  $dsn  DSN for DB connections
     * @param string $mode Connection mode (r|w)
     */
    protected function dsn_connect($dsn, $mode)
    {
        $this->db_error     = false;
        $this->db_error_msg = null;

        // return existing handle
        if (!empty($this->dbhs[$mode])) {
            $this->dbh     = $this->dbhs[$mode];
            $this->db_mode = $mode;

            return $this->dbh;
        }

        // connect to database
        if ($dbh = $this->conn_create($dsn)) {
            $this->dbhs[$mode]  = $dbh;
            $this->db_mode      = $mode;
            $this->db_connected = true;
        }
    }

    /**
     * Create PDO connection
     */
    protected function conn_create($dsn)
    {
        // Get database specific connection options
        $dsn_string  = $this->dsn_string($dsn);
        $dsn_options = $this->dsn_options($dsn);

        // Connect
        try {
            // with this check we skip fatal error on PDO object creation
            if (!class_exists('PDO', false)) {
                throw new Exception('PDO extension not loaded. See http://php.net/manual/en/intro.pdo.php');
            }

            $this->conn_prepare($dsn);

            $username = $dsn['username'] ?? null;
            $password = $dsn['password'] ?? null;

            $this->dbh = new PDO($dsn_string, $username, $password, $dsn_options);

            // don't throw exceptions or warnings
            $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

            // Return numbers as strings consistently for all supported PHP versions
            // Since PHP 8.1 native data types are used by default
            if (defined('PDO::ATTR_STRINGIFY_FETCHES')) {
                $this->dbh->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, 1);
            }

            $this->conn_configure($dsn, $this->dbh);
        }
        catch (Exception $e) {
            $this->db_error     = true;
            $this->db_error_msg = $e->getMessage();

            rcube::raise_error([
                    'code' => 500, 'type' => 'db',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => $this->db_error_msg
                ],
                true, false
            );

            return null;
        }

        return $this->dbh;
    }

    /**
     * Driver-specific preparation of database connection
     *
     * @param array $dsn DSN for DB connections
     */
    protected function conn_prepare($dsn)
    {
    }

    /**
     * Driver-specific configuration of database connection
     *
     * @param array $dsn DSN for DB connections
     * @param PDO   $dbh Connection handler
     */
    protected function conn_configure($dsn, $dbh)
    {
    }

    /**
     * Connect to appropriate database depending on the operation
     *
     * @param string $mode  Connection mode (r|w)
     * @param bool   $force Enforce using the given mode
     */
    public function db_connect($mode, $force = false)
    {
        // previous connection failed, don't attempt to connect again
        if ($this->conn_failure) {
            return;
        }

        // no replication
        if ($this->db_dsnw == $this->db_dsnr) {
            $mode = 'w';
        }

        // Already connected
        if ($this->db_connected) {
            // connected to db with the same or "higher" mode (if allowed)
            if ($this->db_mode == $mode || $this->db_mode == 'w' && !$force && empty($this->options['dsnw_noread'])) {
                return;
            }
        }

        $dsn = ($mode == 'r') ? $this->db_dsnr_array : $this->db_dsnw_array;
        $this->dsn_connect($dsn, $mode);

        // use write-master when read-only fails
        if (!$this->db_connected && $mode == 'r' && $this->is_replicated()) {
            $this->dsn_connect($this->db_dsnw_array, 'w');
        }

        $this->conn_failure = !$this->db_connected;
    }

    /**
     * Analyze the given SQL statement and select the appropriate connection to use
     */
    protected function dsn_select($query)
    {
        // no replication
        if ($this->db_dsnw == $this->db_dsnr) {
            return 'w';
        }

        // Read or write ?
        $mode = preg_match('/^(select|show|set)/i', $query) ? 'r' : 'w';

        $start = '[' . $this->options['identifier_start'] . self::DEFAULT_QUOTE . ']';
        $end   = '[' . $this->options['identifier_end']   . self::DEFAULT_QUOTE . ']';
        $regex = '/(?:^|\s)(from|update|into|join)\s+'.$start.'?([a-z0-9._]+)'.$end.'?\s+/i';

        // find tables involved in this query
        if (preg_match_all($regex, $query, $matches, PREG_SET_ORDER)) {
            foreach ($matches as $m) {
                $table = $m[2];

                // always use direct mapping
                if (!empty($this->options['table_dsn_map'][$table])) {
                    $mode = $this->options['table_dsn_map'][$table];
                    break;  // primary table rules
                }
                else if ($mode == 'r') {
                    // connected to db with the same or "higher" mode for this table
                    if (isset($this->table_connections[$table])) {
                        $db_mode = $this->table_connections[$table];
                        if ($db_mode == 'w' && empty($this->options['dsnw_noread'])) {
                            $mode = $db_mode;
                        }
                    }
                }
            }

            // remember mode chosen (for primary table)
            $table = $matches[0][2];
            $this->table_connections[$table] = $mode;
        }

        return $mode;
    }

    /**
     * Activate/deactivate debug mode
     *
     * @param bool $dbg True if SQL queries should be logged
     */
    public function set_debug($dbg = true)
    {
        $this->options['debug_mode'] = $dbg;
    }

    /**
     * Writes debug information/query to 'sql' log file
     *
     * @param string $query SQL query
     */
    protected function debug($query)
    {
        if (!empty($this->options['debug_mode'])) {
            if (($len = strlen($query)) > self::DEBUG_LINE_LENGTH) {
                $diff  = $len - self::DEBUG_LINE_LENGTH;
                $query = substr($query, 0, self::DEBUG_LINE_LENGTH)
                    . "... [truncated $diff bytes]";
            }

            rcube::write_log('sql', '[' . (++$this->db_index) . '] ' . $query . ';');
        }
    }

    /**
     * Getter for an information about the last error.
     *
     * @return ?array [SQLSTATE error code, driver specific error code, driver specific error message]
     */
    public function error_info()
    {
        return $this->dbh ? $this->dbh->errorInfo() : null;
    }

    /**
     * Getter for error state
     *
     * @param mixed $result Optional query result
     *
     * @return string Error message
     */
    public function is_error($result = null)
    {
        if ($result !== null) {
            return $result === false ? $this->db_error_msg : null;
        }

        return $this->db_error ? $this->db_error_msg : null;
    }

    /**
     * Connection state checker
     *
     * @return bool True if in connected state
     */
    public function is_connected()
    {
        return !is_object($this->dbh) ? false : $this->db_connected;
    }

    /**
     * Is database replication configured?
     *
     * @return bool Returns true if dsnw != dsnr
     */
    public function is_replicated()
    {
      return !empty($this->db_dsnr) && $this->db_dsnw != $this->db_dsnr;
    }

    /**
     * Get database runtime variables
     *
     * @param string $varname Variable name
     * @param mixed  $default Default value if variable is not set
     *
     * @return mixed Variable value or default
     */
    public function get_variable($varname, $default = null)
    {
        // to be implemented by driver class
        return rcube::get_instance()->config->get('db_' . $varname, $default);
    }

    /**
     * Execute a SQL query
     *
     * @param string $query     SQL query to execute
     * @param mixed  ...$params Query parameter values
     *
     * @return PDOStatement|false  Query handle or False on error
     */
    public function query($query, ...$params)
    {
        // Support one argument of type array, instead of n arguments
        if (count($params) == 1 && is_array($params[0])) {
            $params = $params[0];
        }

        return $this->_query($query, 0, 0, $params);
    }

    /**
     * Execute a SQL query with limits
     *
     * @param string $query     SQL query to execute
     * @param int    $offset    Offset for LIMIT statement
     * @param int    $limit     Number of rows for LIMIT statement
     * @param mixed  ...$params Query parameter values
     *
     * @return PDOStatement|false Query handle or False on error
     */
    public function limitquery($query, $offset, $limit, ...$params)
    {
        return $this->_query($query, $offset, $limit, $params);
    }

    /**
     * Execute a SQL query with limits
     *
     * @param string $query  SQL query to execute
     * @param int    $offset Offset for LIMIT statement
     * @param int    $limit  Number of rows for LIMIT statement
     * @param array  $params Values to be inserted in query
     *
     * @return PDOStatement|false Query handle or False on error
     */
    protected function _query($query, $offset, $limit, $params)
    {
        $query = ltrim($query);

        $this->db_connect($this->dsn_select($query), true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        if ($limit || $offset) {
            $query = $this->set_limit($query, $limit, $offset);
        }

        // replace self::DEFAULT_QUOTE with driver-specific quoting
        $query = $this->query_parse($query);

        // Because in Roundcube we mostly use queries that are
        // executed only once, we will not use prepared queries
        $pos = 0;
        $idx = 0;

        if (count($params)) {
            while ($pos = strpos($query, '?', $pos)) {
                if (isset($query[$pos+1]) && $query[$pos+1] == '?') {  // skip escaped '?'
                    $pos += 2;
                }
                else {
                    $val = $this->quote($params[$idx++]);
                    unset($params[$idx-1]);
                    $query = substr_replace($query, $val, $pos, 1);
                    $pos += strlen($val);
                }
            }
        }

        $query = rtrim($query, " \t\n\r\0\x0B;");

        // replace escaped '?' and quotes back to normal, see self::quote()
        $query = str_replace(
            ['??', self::DEFAULT_QUOTE.self::DEFAULT_QUOTE],
            ['?', self::DEFAULT_QUOTE],
            $query
        );

        // log query
        $this->debug($query);

        return $this->query_execute($query);
    }

    /**
     * Query execution
     */
    protected function query_execute($query)
    {
        // destroy reference to previous result, required for SQLite driver (#1488874)
        $this->last_result  = null;
        $this->db_error_msg = null;

        // send query
        $result = $this->dbh->query($query);

        if ($result === false) {
            $result = $this->handle_error($query);
        }

        return $this->last_result = $result;
    }

    /**
     * Parse SQL query and replace identifier quoting
     *
     * @param string $query SQL query
     *
     * @return string SQL query
     */
    protected function query_parse($query)
    {
        $start = $this->options['identifier_start'];
        $end   = $this->options['identifier_end'];
        $quote = self::DEFAULT_QUOTE;

        if ($start == $quote) {
            return $query;
        }

        $pos = 0;
        $in  = false;

        while ($pos = strpos($query, $quote, $pos)) {
            if (isset($query[$pos+1]) && $query[$pos+1] == $quote) {  // skip escaped quote
                $pos += 2;
            }
            else {
                if ($in) {
                    $q  = $end;
                    $in = false;
                }
                else {
                    $q  = $start;
                    $in = true;
                }

                $query = substr_replace($query, $q, $pos, 1);
                $pos++;
            }
        }

        return $query;
    }

    /**
     * Helper method to handle DB errors.
     * This by default logs the error but could be overridden by a driver implementation
     *
     * @param string $query Query that triggered the error
     *
     * @return mixed Result to be stored and returned
     */
    protected function handle_error($query)
    {
        $error = $this->dbh->errorInfo();

        if (empty($this->options['ignore_key_errors']) || !in_array($error[0], ['23000', '23505'])) {
            $this->db_error = true;
            $this->db_error_msg = sprintf('[%s] %s', $error[1], $error[2]);

            if (empty($this->options['ignore_errors'])) {
                rcube::raise_error([
                        'code' => 500, 'type' => 'db', 'line' => __LINE__, 'file' => __FILE__,
                        'message' => $this->db_error_msg . " (SQL Query: $query)"
                    ], true, false);
            }
        }

        return false;
    }

    /**
     * INSERT ... ON DUPLICATE KEY UPDATE (or equivalent).
     * When not supported by the engine we do UPDATE and INSERT.
     *
     * @param string $table   Table name (should be already passed via table_name() with quoting)
     * @param array  $keys    Hash array (column => value) of the unique constraint
     * @param array  $columns List of columns to update
     * @param array  $values  List of values to update (number of elements
     *                        should be the same as in $columns)
     *
     * @return PDOStatement|bool Query handle or False on error
     * @todo Multi-insert support
     */
    public function insert_or_update($table, $keys, $columns, $values)
    {
        $columns = array_map(function($i) { return "`$i`"; }, $columns);
        $sets    = array_map(function($i) { return "$i = ?"; }, $columns);
        $where   = $keys;

        array_walk($where, function(&$val, $key) {
            $val = $this->quote_identifier($key) . " = " . $this->quote($val);
        });

        // First try UPDATE
        $result = $this->query("UPDATE $table SET " . implode(", ", $sets)
            . " WHERE " . implode(" AND ", $where), $values);

        // if UPDATE fails use INSERT
        if ($result && !$this->affected_rows($result)) {
            $cols  = implode(', ', array_map(function($i) { return "`$i`"; }, array_keys($keys)));
            $cols .= ', ' . implode(', ', $columns);
            $vals  = implode(', ', array_map(function($i) { return $this->quote($i); }, $keys));
            $vals .= ', ' . rtrim(str_repeat('?, ', count($columns)), ', ');

            $result = $this->query("INSERT INTO $table ($cols) VALUES ($vals)", $values);
        }

        return $result;
    }

    /**
     * Get number of affected rows for the last query
     *
     * @param mixed $result Optional query handle
     *
     * @return int Number of (matching) rows
     */
    public function affected_rows($result = null)
    {
        if ($result || ($result === null && ($result = $this->last_result))) {
            if ($result !== true) {
                return $result->rowCount();
            }
        }

        return 0;
    }

    /**
     * Get number of rows for a SQL query
     * If no query handle is specified, the last query will be taken as reference
     *
     * @param mixed $result Optional query handle
     *
     * @return mixed Number of rows or false on failure
     * @deprecated This method shows very poor performance and should be avoided.
     */
    public function num_rows($result = null)
    {
        if (($result || ($result === null && ($result = $this->last_result))) && $result !== true) {
            // repeat query with SELECT COUNT(*) ...
            if (preg_match('/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/ims', $result->queryString, $m)) {
                $query = $this->dbh->query('SELECT COUNT(*) FROM ' . $m[1], PDO::FETCH_NUM);
                return $query ? intval($query->fetchColumn(0)) : false;
            }
            else {
                $num = count($result->fetchAll());
                $result->execute();  // re-execute query because there's no seek(0)
                return $num;
            }
        }

        return false;
    }

    /**
     * Get last inserted record ID
     *
     * @param string $table Table name (to find the incremented sequence)
     *
     * @return mixed ID or false on failure
     */
    public function insert_id($table = '')
    {
        if (!$this->db_connected || $this->db_mode == 'r') {
            return false;
        }

        if ($table) {
            // resolve table name
            $table = $this->table_name($table);
        }

        return $this->dbh->lastInsertId($table);
    }

    /**
     * Get an associative array for one row
     * If no query handle is specified, the last query will be taken as reference
     *
     * @param mixed $result Optional query handle
     *
     * @return array|false Array with col values or false on failure
     */
    public function fetch_assoc($result = null)
    {
        return $this->_fetch_row($result, PDO::FETCH_ASSOC);
    }

    /**
     * Get an index array for one row
     * If no query handle is specified, the last query will be taken as reference
     *
     * @param mixed $result Optional query handle
     *
     * @return array|false Array with col values or false on failure
     */
    public function fetch_array($result = null)
    {
        return $this->_fetch_row($result, PDO::FETCH_NUM);
    }

    /**
     * Get col values for a result row
     *
     * @param mixed $result Optional query handle
     * @param int   $mode   Fetch mode identifier
     *
     * @return array|false Array with col values or false on failure
     */
    protected function _fetch_row($result, $mode)
    {
        if ($result || ($result === null && ($result = $this->last_result))) {
            if ($result !== true) {
                return $result->fetch($mode);
            }
        }

        return false;
    }

    /**
     * Adds LIMIT,OFFSET clauses to the query
     *
     * @param string $query  SQL query
     * @param int    $limit  Number of rows
     * @param int    $offset Offset
     *
     * @return string SQL query
     */
    protected function set_limit($query, $limit = 0, $offset = 0)
    {
        if ($limit) {
            $query .= ' LIMIT ' . intval($limit);
        }

        if ($offset) {
            $query .= ' OFFSET ' . intval($offset);
        }

        return $query;
    }

    /**
     * Returns list of tables in a database
     *
     * @return array List of all tables of the current database
     */
    public function list_tables()
    {
        // get tables if not cached
        if ($this->tables === null) {
            $q = $this->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES"
                . " WHERE TABLE_TYPE = 'BASE TABLE'"
                . " ORDER BY TABLE_NAME"
            );

            $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : [];
        }

        return $this->tables;
    }

    /**
     * Returns list of columns in database table
     *
     * @param string $table Table name
     *
     * @return array List of table cols
     */
    public function list_cols($table)
    {
        $q = $this->query('SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?', $table);

        if ($q) {
            return $q->fetchAll(PDO::FETCH_COLUMN, 0);
        }

        return [];
    }

    /**
     * Start transaction
     *
     * @return bool True on success, False on failure
     */
    public function startTransaction()
    {
        $this->db_connect('w', true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        $this->debug('BEGIN TRANSACTION');

        return $this->last_result = $this->dbh->beginTransaction();
    }

    /**
     * Commit transaction
     *
     * @return bool True on success, False on failure
     */
    public function endTransaction()
    {
        $this->db_connect('w', true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        $this->debug('COMMIT TRANSACTION');

        return $this->last_result = $this->dbh->commit();
    }

    /**
     * Rollback transaction
     *
     * @return bool True on success, False on failure
     */
    public function rollbackTransaction()
    {
        $this->db_connect('w', true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        $this->debug('ROLLBACK TRANSACTION');

        return $this->last_result = $this->dbh->rollBack();
    }

    /**
     * Release resources related to the last query result.
     * When we know we don't need to access the last query result we can destroy it
     * and release memory. Useful especially if the query returned big chunk of data.
     */
    public function reset()
    {
        $this->last_result = null;
    }

    /**
     * Terminate database connection.
     */
    public function closeConnection()
    {
        $this->db_connected = false;
        $this->db_index     = 0;

        // release statement and connection resources
        $this->last_result  = null;
        $this->dbh          = null;
        $this->dbhs         = [];
    }

    /**
     * Formats input so it can be safely used in a query
     *
     * @param mixed  $input Value to quote
     * @param string $type  Type of data (integer, bool, ident)
     *
     * @return string Quoted/converted string for use in query
     */
    public function quote($input, $type = null)
    {
        if ($input instanceof rcube_db_param) {
            return (string) $input;
        }

        // handle int directly for better performance
        if ($type == 'integer' || $type == 'int') {
            return intval($input);
        }

        if (is_null($input)) {
            return 'NULL';
        }

        if ($input instanceof DateTime) {
            return $this->quote($input->format($this->options['datetime_format']));
        }

        if ($type == 'ident') {
            return $this->quote_identifier($input);
        }

        // create DB handle if not available
        if (!$this->dbh) {
            $this->db_connect('r');
        }

        if ($this->dbh) {
            $map = [
                'bool'    => PDO::PARAM_BOOL,
                'integer' => PDO::PARAM_INT,
            ];

            $type = $map[$type] ?? PDO::PARAM_STR;

            return strtr($this->dbh->quote($input, $type),
                // escape ? and `
                ['?' => '??', self::DEFAULT_QUOTE => self::DEFAULT_QUOTE.self::DEFAULT_QUOTE]
            );
        }

        return 'NULL';
    }

    /**
     * Escapes a string so it can be safely used in a query
     *
     * @param string $str A string to escape
     *
     * @return string Escaped string for use in a query
     */
    public function escape($str)
    {
        if (is_null($str)) {
            return 'NULL';
        }

        return substr($this->quote($str), 1, -1);
    }

    /**
     * Quotes a string so it can be safely used as a table or column name
     *
     * @param string $str Value to quote
     *
     * @return string Quoted string for use in query
     * @deprecated    Replaced by rcube_db::quote_identifier
     * @see           rcube_db::quote_identifier
     */
    public function quoteIdentifier($str)
    {
        return $this->quote_identifier($str);
    }

    /**
     * Escapes a string so it can be safely used in a query
     *
     * @param string $str A string to escape
     *
     * @return string Escaped string for use in a query
     * @deprecated    Replaced by rcube_db::escape
     * @see           rcube_db::escape
     */
    public function escapeSimple($str)
    {
        return $this->escape($str);
    }

    /**
     * Quotes a string so it can be safely used as a table or column name
     *
     * @param string $str Value to quote
     *
     * @return string Quoted string for use in query
     */
    public function quote_identifier($str)
    {
        $start = $this->options['identifier_start'];
        $end   = $this->options['identifier_end'];
        $name  = [];

        foreach (explode('.', $str) as $elem) {
            $elem = str_replace([$start, $end], '', $elem);
            $name[] = $start . $elem . $end;
        }

        return implode('.', $name);
    }

    /**
     * Create query parameter object
     *
     * @param mixed  $value Parameter value
     * @param string $type  Parameter type (one of rcube_db::TYPE_* constants)
     */
    public function param($value, $type = null)
    {
        return new rcube_db_param($this, $value, $type);
    }

    /**
     * Return SQL function for current time and date
     *
     * @param int $interval Optional interval (in seconds) to add/subtract
     *
     * @return string SQL function to use in query
     */
    public function now($interval = 0)
    {
        $result = 'now()';

        if ($interval) {
            $result .= ' ' . ($interval > 0 ? '+' : '-') . ' INTERVAL '
                . ($interval > 0 ? intval($interval) : intval($interval) * -1)
                . ' SECOND';
        }

        return $result;
    }

    /**
     * Return list of elements for use with SQL's IN clause
     *
     * @param array  $arr  Input array
     * @param string $type Type of data (integer, bool, ident)
     *
     * @return string Comma-separated list of quoted values for use in query
     */
    public function array2list($arr, $type = null)
    {
        if (!is_array($arr)) {
            return $this->quote($arr, $type);
        }

        foreach ($arr as $idx => $item) {
            $arr[$idx] = $this->quote($item, $type);
        }

        return implode(',', $arr);
    }

    /**
     * Return SQL statement to convert a field value into a unix timestamp
     *
     * This method is deprecated and should not be used anymore due to limitations
     * of timestamp functions in Mysql (year 2038 problem)
     *
     * @param string $field Field name
     *
     * @return string SQL statement to use in query
     * @deprecated
     */
    public function unixtimestamp($field)
    {
        return "UNIX_TIMESTAMP($field)";
    }

    /**
     * Return SQL statement to convert from a unix timestamp
     *
     * @param int $timestamp Unix timestamp
     *
     * @return string Date string in db-specific format
     * @deprecated
     */
    public function fromunixtime($timestamp)
    {
        return $this->quote(date($this->options['datetime_format'], $timestamp));
    }

    /**
     * Return SQL statement for case insensitive LIKE
     *
     * @param string $column Field name
     * @param string $value  Search value
     *
     * @return string SQL statement to use in query
     */
    public function ilike($column, $value)
    {
        return $this->quote_identifier($column) . ' LIKE ' . $this->quote($value);
    }

    /**
     * Abstract SQL statement for value concatenation
     *
     * @return string ...$args Values to concatenate
     */
    public function concat(...$args)
    {
        if (count($args) == 1 && is_array($args[0])) {
            $args = $args[0];
        }

        return '(' . implode(' || ', $args) . ')';
    }

    /**
     * Encodes non-UTF-8 characters in string/array/object (recursive)
     *
     * @param mixed $input      Data to fix
     * @param bool  $serialized Enable serialization
     *
     * @return mixed Properly UTF-8 encoded data
     */
    public static function encode($input, $serialized = false)
    {
        // use Base64 encoding to workaround issues with invalid
        // or null characters in serialized string (#1489142)
        if ($serialized) {
            return base64_encode(serialize($input));
        }

        if (is_object($input)) {
            foreach (get_object_vars($input) as $idx => $value) {
                $input->$idx = self::encode($value);
            }

            return $input;
        }
        else if (is_array($input)) {
            foreach ($input as $idx => $value) {
                $input[$idx] = self::encode($value);
            }

            return $input;
        }

        return utf8_encode($input);
    }

    /**
     * Decodes encoded UTF-8 string/object/array (recursive)
     *
     * @param mixed $input      Input data
     * @param bool  $serialized Enable serialization
     *
     * @return mixed Decoded data
     */
    public static function decode($input, $serialized = false)
    {
        // use Base64 encoding to workaround issues with invalid
        // or null characters in serialized string (#1489142)
        if ($serialized) {
            // Keep backward compatibility where base64 wasn't used
            if (strpos(substr($input, 0, 16), ':') !== false) {
                return self::decode(@unserialize($input));
            }

            return @unserialize(base64_decode($input));
        }

        if (is_object($input)) {
            foreach (get_object_vars($input) as $idx => $value) {
                $input->$idx = self::decode($value);
            }

            return $input;
        }
        else if (is_array($input)) {
            foreach ($input as $idx => $value) {
                $input[$idx] = self::decode($value);
            }

            return $input;
        }

        return utf8_decode($input);
    }

    /**
     * Return correct name for a specific database table
     *
     * @param string $table  Table name
     * @param bool   $quoted Quote table identifier
     *
     * @return string Translated table name
     */
    public function table_name($table, $quoted = false)
    {
        // let plugins alter the table name (#1489837)
        $plugin = rcube::get_instance()->plugins->exec_hook('db_table_name', ['table' => $table]);
        $table = $plugin['table'];

        // add prefix to the table name if configured
        if (($prefix = $this->options['table_prefix']) && strpos($table, $prefix) !== 0) {
            $table = $prefix . $table;
        }

        if ($quoted) {
            $table = $this->quote_identifier($table);
        }

        return $table;
    }

    /**
     * Set class option value
     *
     * @param string $name  Option name
     * @param mixed  $value Option value
     */
    public function set_option($name, $value)
    {
        $this->options[$name] = $value;
    }

    /**
     * Set DSN connection to be used for the given table
     *
     * @param string $table Table name
     * @param string $mode  DSN connection ('r' or 'w') to be used
     */
    public function set_table_dsn($table, $mode)
    {
        $this->options['table_dsn_map'][$this->table_name($table)] = $mode;
    }

    /**
     * MDB2 DSN string parser
     *
     * @param string $dsn DSN string
     *
     * @return array DSN parameters
     */
    public static function parse_dsn($dsn)
    {
        if (empty($dsn)) {
            return null;
        }

        // Find phptype and dbsyntax
        if (($pos = strpos($dsn, '://')) !== false) {
            $str = substr($dsn, 0, $pos);
            $dsn = substr($dsn, $pos + 3);
        }
        else {
            $str = $dsn;
            $dsn = null;
        }

        // Get phptype and dbsyntax
        // $str => phptype(dbsyntax)
        if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) {
            $parsed['phptype']  = $arr[1];
            $parsed['dbsyntax'] = !$arr[2] ? $arr[1] : $arr[2];
        }
        else {
            $parsed['phptype']  = $str;
            $parsed['dbsyntax'] = $str;
        }

        if (empty($dsn)) {
            return $parsed;
        }

        // Get (if found): username and password
        // $dsn => username:password@protocol+hostspec/database
        if (($at = strrpos($dsn,'@')) !== false) {
            $str = substr($dsn, 0, $at);
            $dsn = substr($dsn, $at + 1);
            if (($pos = strpos($str, ':')) !== false) {
                $parsed['username'] = rawurldecode(substr($str, 0, $pos));
                $parsed['password'] = rawurldecode(substr($str, $pos + 1));
            }
            else {
                $parsed['username'] = rawurldecode($str);
            }
        }

        // Find protocol and hostspec
        // $dsn => proto(proto_opts)/database
        if (preg_match('|^([^(]+)\((.*?)\)/?(.*?)$|', $dsn, $match)) {
            $proto       = $match[1];
            $proto_opts  = $match[2] ? $match[2] : false;
            $dsn         = $match[3];
        }
        // $dsn => protocol+hostspec/database (old format)
        else {
            if (strpos($dsn, '+') !== false) {
                list($proto, $dsn) = explode('+', $dsn, 2);
            }
            if (   strpos($dsn, '//') === 0
                && strpos($dsn, '/', 2) !== false
                && $parsed['phptype'] == 'oci8'
            ) {
                // Oracle's "Easy Connect" syntax:
                // "username/password@[//]host[:port][/service_name]"
                // e.g. "scott/tiger@//mymachine:1521/oracle"
                $proto_opts = $dsn;
                $pos = strrpos($proto_opts, '/');
                $dsn = substr($proto_opts, $pos + 1);
                $proto_opts = substr($proto_opts, 0, $pos);
            }
            else if (strpos($dsn, '/') !== false) {
                list($proto_opts, $dsn) = explode('/', $dsn, 2);
            }
            else {
                $proto_opts = $dsn;
                $dsn = null;
            }
        }

        // process the different protocol options
        $parsed['protocol'] = !empty($proto) ? $proto : 'tcp';
        $proto_opts = rawurldecode($proto_opts);
        if (strpos($proto_opts, ':') !== false) {
            list($proto_opts, $parsed['port']) = explode(':', $proto_opts);
        }
        if ($parsed['protocol'] == 'tcp' && strlen($proto_opts)) {
            $parsed['hostspec'] = $proto_opts;
        }
        else if ($parsed['protocol'] == 'unix') {
            $parsed['socket'] = $proto_opts;
        }

        // Get database if any
        // $dsn => database
        if ($dsn) {
            // /database
            if (($pos = strpos($dsn, '?')) === false) {
                $parsed['database'] = rawurldecode($dsn);
            }
            else {
                // /database?param1=value1&param2=value2
                $parsed['database'] = rawurldecode(substr($dsn, 0, $pos));
                $dsn = substr($dsn, $pos + 1);

                if (strpos($dsn, '&') !== false) {
                    $opts = explode('&', $dsn);
                }
                else { // database?param1=value1
                    $opts = [$dsn];
                }
                foreach ($opts as $opt) {
                    list($key, $value) = explode('=', $opt);
                    if (!array_key_exists($key, $parsed) || false === $parsed[$key]) {
                        // don't allow params overwrite
                        $parsed[$key] = rawurldecode($value);
                    }
                }
            }

            // remove problematic suffix (#7034)
            $parsed['database'] = preg_replace('/;.*$/', '', $parsed['database']);

            // Resolve relative path to the sqlite database file
            // so for example it works with Roundcube Installer
            if (!empty($parsed['phptype']) && !empty($parsed['database'])
                && stripos($parsed['phptype'], 'sqlite') === 0
                && $parsed['database'][0] != '/'
                && strpos($parsed['database'], ':') === false
            ) {
                $parsed['database'] = INSTALL_PATH . $parsed['database'];
            }
        }

        return $parsed;
    }

    /**
     * Returns PDO DSN string from DSN array
     *
     * @param array $dsn DSN parameters
     *
     * @return string DSN string
     */
    protected function dsn_string($dsn)
    {
        $params = [];
        $result = $dsn['phptype'] . ':';

        if (isset($dsn['hostspec'])) {
            $params[] = 'host=' . $dsn['hostspec'];
        }

        if (isset($dsn['port'])) {
            $params[] = 'port=' . $dsn['port'];
        }

        if (isset($dsn['database'])) {
            $params[] = 'dbname=' . $dsn['database'];
        }

        if (!empty($params)) {
            $result .= implode(';', $params);
        }

        return $result;
    }

    /**
     * Returns driver-specific connection options
     *
     * @param array $dsn DSN parameters
     *
     * @return array Connection options
     */
    protected function dsn_options($dsn)
    {
        $result = [];

        if ($this->db_pconn) {
            $result[PDO::ATTR_PERSISTENT] = true;
        }

        if (!empty($dsn['prefetch'])) {
            $result[PDO::ATTR_PREFETCH] = (int) $dsn['prefetch'];
        }

        if (!empty($dsn['timeout'])) {
            $result[PDO::ATTR_TIMEOUT] = (int) $dsn['timeout'];
        }

        return $result;
    }

    /**
     * Execute the given SQL script
     *
     * @param string $sql SQL queries to execute
     *
     * @return bool True on success, False on error
     */
    public function exec_script($sql)
    {
        $sql  = $this->fix_table_names($sql);
        $buff = '';
        $exec = '';

        foreach (explode("\n", $sql) as $line) {
            $trimmed = trim($line);
            if ($trimmed == '' || preg_match('/^--/', $trimmed)) {
                continue;
            }

            if ($trimmed == 'GO') {
                $exec = $buff;
            }
            else if ($trimmed[strlen($trimmed)-1] == ';') {
                $exec = $buff . substr(rtrim($line), 0, -1);
            }

            if ($exec) {
                $this->query($exec);
                $buff = '';
                $exec = '';
                if ($this->db_error) {
                    break;
                }
            }
            else {
                $buff .= $line . "\n";
            }
        }

        return !$this->db_error;
    }

    /**
     * Parse SQL file and fix table names according to table prefix
     */
    protected function fix_table_names($sql)
    {
        if (!$this->options['table_prefix']) {
            return $sql;
        }

        $sql = preg_replace_callback(
            '/((TABLE|TRUNCATE( TABLE)?|(?<!ON )UPDATE|INSERT INTO|FROM'
            . '| ON(?! (DELETE|UPDATE))|REFERENCES|CONSTRAINT|FOREIGN KEY|INDEX|UNIQUE( INDEX)?)'
            . '\s+(IF (NOT )?EXISTS )?[`"]*)([^`"\( \r\n]+)/',
            [$this, 'fix_table_names_callback'],
            $sql
        );

        return $sql;
    }

    /**
     * Preg_replace callback for fix_table_names()
     */
    protected function fix_table_names_callback($matches)
    {
        $prefix = $this->options['table_prefix'];

        // Schema prefix (ends with a dot)
        if ($prefix[strlen($prefix)-1] === '.') {
            // These can't have a schema prefix
            if (preg_match('/(CONSTRAINT|UNIQUE|INDEX)[\s\t`"]*$/', $matches[1])) {
                $prefix = '';
            }
            else {
                // check if the identifier is quoted, then quote the prefix
                $last = $matches[1][strlen($matches[1])-1];

                if ($last === '`' || $last === '"') {
                    $prefix = substr($prefix, 0, -1) . $last . '.' . $last;
                }
            }
        }

        return $matches[1] . $prefix . $matches[count($matches)-1];
    }
}
lib/Roundcube/rcube_vcard.php000064400000110242151727150630012237 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Logical representation of a vcard address record                    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Logical representation of a vcard-based address record
 * Provides functions to parse and export vCard data format
 *
 * @package    Framework
 * @subpackage Addressbook
 */
class rcube_vcard
{
    private static $values_decoded = false;
    private $raw = [
        'FN' => [],
        'N'  => [['','','','','']],
    ];
    private static $fieldmap = [
        'phone'    => 'TEL',
        'birthday' => 'BDAY',
        'website'  => 'URL',
        'notes'    => 'NOTE',
        'email'    => 'EMAIL',
        'address'  => 'ADR',
        'jobtitle' => 'TITLE',
        'department'  => 'X-DEPARTMENT',
        'gender'      => 'X-GENDER',
        'maidenname'  => 'X-MAIDENNAME',
        'anniversary' => 'X-ANNIVERSARY',
        'assistant'   => 'X-ASSISTANT',
        'manager'     => 'X-MANAGER',
        'spouse'      => 'X-SPOUSE',
        'edit'        => 'X-AB-EDIT',
        'groups'      => 'CATEGORIES',
    ];
    private $typemap = [
        'IPHONE'   => 'mobile',
        'CELL'     => 'mobile',
        'WORK,FAX' => 'workfax',
    ];
    private $phonetypemap = [
        'HOME1'       => 'HOME',
        'BUSINESS1'   => 'WORK',
        'BUSINESS2'   => 'WORK2',
        'BUSINESSFAX' => 'WORK,FAX',
        'MOBILE'      => 'CELL',
    ];
    private $addresstypemap = [
        'BUSINESS' => 'WORK',
    ];
    private $immap = [
        'X-JABBER' => 'jabber',
        'X-ICQ'    => 'icq',
        'X-MSN'    => 'msn',
        'X-AIM'    => 'aim',
        'X-YAHOO'  => 'yahoo',
        'X-SKYPE'  => 'skype',
        'X-SKYPE-USERNAME' => 'skype',
    ];

    public $business = false;
    public $displayname;
    public $surname;
    public $firstname;
    public $middlename;
    public $nickname;
    public $organization;
    public $email = [];

    public static $eol = "\r\n";


    /**
     * Constructor
     *
     * @param string $vcard    vCard content
     * @param string $charset  Charset of string values
     * @param bool   $detect   True if loading a 'foreign' vcard and extra heuristics
     *                         for charset detection is required
     * @param array  $fieldmap Fields mapping definition
     */
    public function __construct($vcard = null, $charset = RCUBE_CHARSET, $detect = false, $fieldmap = [])
    {
        if (!empty($fieldmap)) {
            $this->extend_fieldmap($fieldmap);
        }

        if (!empty($vcard)) {
            $this->load($vcard, $charset, $detect);
        }
    }

    /**
     * Load record from (internal, unfolded) vcard 3.0 format
     *
     * @param string $vcard   vCard string to parse
     * @param string $charset Charset of string values
     * @param bool   $detect  True if loading a 'foreign' vcard and extra heuristics
     *                        for charset detection is required
     */
    public function load($vcard, $charset = RCUBE_CHARSET, $detect = false)
    {
        self::$values_decoded = false;
        $this->raw = self::vcard_decode(self::cleanup($vcard));

        // resolve charset parameters
        if ($charset == null) {
            $this->raw = self::charset_convert($this->raw);
        }
        // vcard has encoded values and charset should be detected
        else if (self::$values_decoded) {
            if ($detect) {
                $charset = self::detect_encoding(self::vcard_encode($this->raw));
            }
            if ($charset != RCUBE_CHARSET) {
                $this->raw = self::charset_convert($this->raw, $charset);
            }
        }

        // find well-known address fields
        $this->displayname  = $this->raw['FN'][0][0] ?? '';
        $this->surname      = $this->raw['N'][0][0] ?? '';
        $this->firstname    = $this->raw['N'][0][1] ?? '';
        $this->middlename   = $this->raw['N'][0][2] ?? '';
        $this->nickname     = $this->raw['NICKNAME'][0][0] ?? '';
        $this->organization = $this->raw['ORG'][0][0] ?? '';
        $this->business     = (isset($this->raw['X-ABSHOWAS'][0][0]) && $this->raw['X-ABSHOWAS'][0][0] == 'COMPANY')
            || (!empty($this->organization) && isset($this->raw['N'][0]) && @implode('', (array) $this->raw['N'][0]) === '');

        if (!empty($this->raw['EMAIL'])) {
            foreach ((array) $this->raw['EMAIL'] as $i => $raw_email) {
                $this->email[$i] = is_array($raw_email) ? $raw_email[0] : $raw_email;
            }
        }

        // make the pref e-mail address the first entry in $this->email
        $pref_index = $this->get_type_index('EMAIL');
        if ($pref_index > 0) {
            $tmp = $this->email[0];
            $this->email[0] = $this->email[$pref_index];
            $this->email[$pref_index] = $tmp;
        }

        // fix broken vcards from Outlook that only supply ORG but not the required N or FN properties
        if (!strlen(trim($this->displayname . $this->surname . $this->firstname)) && strlen($this->organization)) {
            $this->displayname = $this->organization;
        }
    }

    /**
     * Return vCard data as associative array to be used in Roundcube address books
     *
     * @return array Hash array with key-value pairs
     */
    public function get_assoc()
    {
        $out     = ['name' => $this->displayname];
        $typemap = $this->typemap;

        // copy name fields to output array
        foreach (['firstname', 'surname', 'middlename', 'nickname', 'organization'] as $col) {
            if (is_string($this->$col) && strlen($this->$col)) {
                $out[$col] = $this->$col;
            }
        }

        if (!empty($this->raw['N'][0][3])) {
            $out['prefix'] = $this->raw['N'][0][3];
        }

        if (!empty($this->raw['N'][0][4])) {
            $out['suffix'] = $this->raw['N'][0][4];
        }

        // convert from raw vcard data into associative data for Roundcube
        foreach (array_flip(self::$fieldmap) as $tag => $col) {
            if (empty($this->raw[$tag])) {
                continue;
            }

            foreach ((array) $this->raw[$tag] as $i => $raw) {
                if (is_array($raw)) {
                    $k       = -1;
                    $key     = $col;
                    $subtype = '';

                    if (!empty($raw['type']) && is_array($raw['type'])) {
                        $raw['type'] = array_map('strtolower', $raw['type']);

                        $combined = implode(',', array_diff($raw['type'], ['internet', 'pref']));
                        $combined = strtoupper($combined);

                        if (!empty($typemap[$combined])) {
                            $subtype = $typemap[$combined];
                        }
                        else if (!empty($typemap[$raw['type'][++$k]])) {
                            $subtype = $typemap[$raw['type'][$k]];
                        }
                        else {
                            $subtype = $raw['type'][$k];
                        }

                        while ($k < count($raw['type']) && ($subtype == 'internet' || $subtype == 'pref')) {
                            $k++;
                            if (!empty($raw['type'][$k])) {
                                if (!empty($typemap[$raw['type'][$k]])) {
                                    $subtype = $typemap[$raw['type'][$k]];
                                }
                                else {
                                    $subtype = $raw['type'][$k];
                                }
                            }
                        }
                    }

                    // read vcard 2.1 subtype
                    if (!$subtype) {
                        foreach ($raw as $k => $v) {
                            if (!is_numeric($k) && $v === true && ($k = strtolower($k))
                                && !in_array($k, ['pref', 'internet', 'voice', 'base64'])
                            ) {
                                $k_uc    = strtoupper($k);
                                $subtype = $typemap[$k_uc] ?: $k;
                                break;
                            }
                        }
                    }

                    // force subtype if none set
                    if (!$subtype && preg_match('/^(email|phone|address|website)/', $key)) {
                        $subtype = 'other';
                    }

                    if ($subtype) {
                        $key .= ':' . $subtype;
                    }

                    // split ADR values into assoc array
                    if ($tag == 'ADR') {
                        if (isset($raw[2])) {
                            $value['street'] = $raw[2];
                        }
                        if (isset($raw[3])) {
                            $value['locality'] = $raw[3];
                        }
                        if (isset($raw[4])) {
                            $value['region'] = $raw[4];
                        }
                        if (isset($raw[5])) {
                            $value['zipcode'] = $raw[5];
                        }
                        if (isset($raw[6])) {
                            $value['country'] = $raw[6];
                        }
                        $out[$key][] = $value;
                    }
                    // support vCard v4 date format (YYYYMMDD)
                    else if ($tag == 'BDAY' && preg_match('/^([12][90]\d\d)([01]\d)([0123]\d)$/', $raw[0], $m)) {
                        $out[$key][] = sprintf('%04d-%02d-%02d', intval($m[1]), intval($m[2]), intval($m[3]));
                    }
                    else {
                        $out[$key][] = $raw[0];
                    }
                }
                else {
                    $out[$col][] = $raw;
                }
            }
        }

        // handle special IM fields as used by Apple
        foreach ($this->immap as $tag => $type) {
            if (!empty($this->raw[$tag])) {
                foreach ((array) $this->raw[$tag] as $i => $raw) {
                    $out['im:'.$type][] = $raw[0];
                }
            }
        }

        // copy photo data
        if (!empty($this->raw['PHOTO'])) {
            $out['photo'] = $this->raw['PHOTO'][0][0];
        }

        return $out;
    }

    /**
     * Convert the data structure into a vcard 3.0 string
     *
     * @param bool $folded Use RFC2425 folding
     *
     * @return string vCard output
     */
    public function export($folded = true)
    {
        $vcard = self::vcard_encode($this->raw);
        return $folded ? self::rfc2425_fold($vcard) : $vcard;
    }

    /**
     * Clear the given fields in the loaded vcard data
     *
     * @param array $fields List of field names to be reset
     */
    public function reset($fields = [])
    {
        if (empty($fields)) {
            $fields = ['FN', 'N', 'ORG', 'NICKNAME', 'EMAIL', 'ADR', 'BDAY'];
            $fields = array_merge(array_values(self::$fieldmap), array_keys($this->immap), $fields);
        }

        foreach ($fields as $f) {
            unset($this->raw[$f]);
        }

        if (empty($this->raw['N'])) {
            $this->raw['N'] = [['','','','','']];
        }

        if (empty($this->raw['FN'])) {
            $this->raw['FN'] = [];
        }

        $this->email = [];
    }

    /**
     * Setter for address record fields
     *
     * @param string $field Field name
     * @param mixed  $value Field value
     * @param string $type  Type/section name
     */
    public function set($field, $value, $type = 'HOME')
    {
        $field   = strtolower($field);
        $type_uc = strtoupper((string) $type);

        switch ($field) {
        case 'name':
        case 'displayname':
            $this->raw['FN'][0][0] = $this->displayname = $value;
            break;

        case 'surname':
            $this->raw['N'][0][0] = $this->surname = $value;
            break;

        case 'firstname':
            $this->raw['N'][0][1] = $this->firstname = $value;
            break;

        case 'middlename':
            $this->raw['N'][0][2] = $this->middlename = $value;
            break;

        case 'prefix':
            $this->raw['N'][0][3] = $value;
            break;

        case 'suffix':
            $this->raw['N'][0][4] = $value;
            break;

        case 'nickname':
            $this->raw['NICKNAME'][0][0] = $this->nickname = $value;
            break;

        case 'organization':
            $this->raw['ORG'][0][0] = $this->organization = $value;
            break;

        case 'photo':
            if (strpos($value, 'http:') === 0) {
                // TODO: fetch file from URL and save it locally?
                $this->raw['PHOTO'][0] = [0 => $value, 'url' => true];
            }
            else {
                $this->raw['PHOTO'][0] = [0 => $value, 'base64' => (bool) preg_match('![^a-z0-9/=+-]!i', $value)];
            }
            break;

        case 'email':
            $this->raw['EMAIL'][] = [0 => $value, 'type' => array_filter(['INTERNET', $type_uc])];
            $this->email[] = $value;
            break;

        case 'im':
            // save IM subtypes into extension fields
            $typemap = array_flip($this->immap);
            if (!empty($typemap[strtolower($type)])) {
                $field = $typemap[strtolower($type)];
                $this->raw[$field][] = [$value];
            }
            break;

        case 'birthday':
        case 'anniversary':
            if (($val = rcube_utils::anytodatetime($value)) && !empty(self::$fieldmap[$field])) {
                $fn = self::$fieldmap[$field];
                $this->raw[$fn][] = [0 => $val->format('Y-m-d'), 'value' => ['date']];
            }
            break;

        case 'address':
            if (!empty($this->addresstypemap[$type_uc])) {
                $type = $this->addresstypemap[$type_uc];
            }

            if (empty($value[0])) {
                $value = [
                    '',
                    '',
                    $value['street'] ?? '',
                    $value['locality'] ?? '',
                    $value['region'] ?? '',
                    $value['zipcode'] ?? '',
                    $value['country'] ?? '',
                ];
            }

            // fall through if not empty
            if (!strlen(@implode('', $value))) {
                break;
            }

        default:
            if ($field == 'phone' && !empty($this->phonetypemap[$type_uc])) {
                $type = $this->phonetypemap[$type_uc];
            }

            if (!empty(self::$fieldmap[$field])) {
                $tag = self::$fieldmap[$field];

                if (is_array($value) || (is_string($value) && strlen($value))) {
                    $this->raw[$tag][] = (array) $value;
                    if ($type) {
                        $index    = count($this->raw[$tag]) - 1;
                        $typemap  = array_flip($this->typemap);
                        $type_val = !empty($typemap[$type_uc]) ? $typemap[$type_uc] : $type;
                        $this->raw[$tag][$index]['type'] = explode(',', $type_val);
                    }
                }
                else {
                    unset($this->raw[$tag]);
                }
            }

            break;
        }
    }

    /**
     * Setter for individual vcard properties
     *
     * @param string $tag    VCard tag name
     * @param array  $value  Value-set of this vcard property
     * @param bool   $append Set to true if the value-set should be appended
     *                       instead of replacing any existing value-set
     */
    public function set_raw($tag, $value, $append = false)
    {
        $index = $append && isset($this->raw[$tag]) ? count($this->raw[$tag]) : 0;
        $this->raw[$tag][$index] = (array) $value;
    }

    /**
     * Find index with the '$type' attribute
     *
     * @param string $field Field name
     *
     * @return int Field index having $type set
     */
    private function get_type_index($field)
    {
        $result = 0;
        if (!empty($this->raw[$field])) {
            foreach ((array) $this->raw[$field] as $i => $data) {
                if (isset($data['type']) && is_array($data['type']) && in_array_nocase('pref', $data['type'])) {
                    $result = $i;
                }
            }
        }

        return $result;
    }

    /**
     * Convert a whole vcard (array) to UTF-8.
     * If $force_charset is null, each member value that has a charset parameter will be converted
     */
    private static function charset_convert($card, $force_charset = null)
    {
        foreach ($card as $key => $node) {
            foreach ($node as $i => $subnode) {
                if (!is_array($subnode)) {
                    continue;
                }

                $charset = $force_charset;
                if (!$charset && isset($subnode['charset'][0])) {
                    $charset = $subnode['charset'][0];
                }

                if ($charset) {
                    foreach ($subnode as $j => $value) {
                        if (is_numeric($j) && is_string($value)) {
                            $card[$key][$i][$j] = rcube_charset::convert($value, $charset);
                        }
                    }
                    unset($card[$key][$i]['charset']);
                }
            }
        }

        return $card;
    }

    /**
     * Extends fieldmap definition
     *
     * @param array $map Field mapping definition
     */
    public function extend_fieldmap($map)
    {
        if (is_array($map)) {
            self::$fieldmap = array_merge($map, self::$fieldmap);
        }
    }

    /**
     * Factory method to import a vcard file
     *
     * @param string $data vCard file content
     *
     * @return rcube_vcard[] List of rcube_vcard objects
     */
    public static function import($data)
    {
        $out = [];

        if (($charset = self::detect_encoding($data)) && $charset != RCUBE_CHARSET) {
            $data = rcube_charset::convert($data, $charset);
            $data = preg_replace(['/^[\xFE\xFF]{2}/', '/^\xEF\xBB\xBF/', '/^\x00+/'], '', $data); // also remove BOM
            $charset = RCUBE_CHARSET;
        }

        $vcard_block    = '';
        $in_vcard_block = false;

        foreach (preg_split("/[\r\n]+/", $data) as $line) {
            if ($in_vcard_block && !empty($line)) {
                $vcard_block .= $line . "\n";
            }

            $line = trim($line);

            if (preg_match('/^END:VCARD$/i', $line)) {
                // parse vcard
                $obj = new rcube_vcard($vcard_block, $charset, false, self::$fieldmap);

                // FN and N is required by vCard format (RFC 2426)
                // on import we can be less restrictive, let's addressbook decide
                if (!empty($obj->displayname) || !empty($obj->surname) || !empty($obj->firstname) || !empty($obj->email)) {
                    $out[] = $obj;
                }

                $in_vcard_block = false;
            }
            else if (preg_match('/^BEGIN:VCARD$/i', $line)) {
                $vcard_block    = $line . "\n";
                $in_vcard_block = true;
            }
        }

        return $out;
    }

    /**
     * Normalize vcard data for better parsing
     *
     * @param string $vcard vCard block
     *
     * @return string Cleaned vcard block
     */
    public static function cleanup($vcard)
    {
        // convert Apple X-ABRELATEDNAMES into X-* fields for better compatibility
        $vcard = preg_replace_callback(
            '/item(\d+)\.(X-ABRELATEDNAMES)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w() -]*)(?:>!\$_)?./s',
            ['rcube_vcard', 'x_abrelatednames_callback'],
            $vcard);

        // Cleanup
        $vcard = preg_replace(
            [
                // convert special types (like Skype) to normal type='skype' classes with this simple regex ;)
                '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w() -]*)(?:>!\$_)?./si',
                '/^item\d*\.X-AB.*$/mi',  // remove cruft like item1.X-AB*
                '/^item\d*\./mi',         // remove item1.ADR instead of ADR
                '/\n+/',                  // remove empty lines
                '/^(N:[^;\r\n]*)$/m',     // if N doesn't have any semicolons, add some
            ],
            [
                '\2;type=\5\3:\4',
                '',
                '',
                "\n",
                '\1;;;;',
            ],
            $vcard
        );

        // convert X-WAB-GENDER to X-GENDER
        if (preg_match('/X-WAB-GENDER:(\d)/', $vcard, $matches)) {
            $value = $matches[1] == '2' ? 'male' : 'female';
            $vcard = preg_replace('/X-WAB-GENDER:\d/', 'X-GENDER:' . $value, $vcard);
        }

        return $vcard;
    }

    /**
     * Apple X-ABRELATEDNAMES converter callback
     *
     * @param array $matches Matching entries
     *
     * @return string Replacement string
     */
    private static function x_abrelatednames_callback($matches)
    {
        return 'X-' . strtoupper($matches[5]) . $matches[3] . ':'. $matches[4];
    }

    /**
     * RFC2425 folding callback
     *
     * @param array $matches Matching entries
     *
     * @return string Replacement string
     */
    private static function rfc2425_fold_callback($matches)
    {
        // chunk_split string and avoid lines breaking multibyte characters
        $c = 71;
        $out = substr($matches[1], 0, $c);

        for ($n = $c; $c < strlen($matches[1]); $c++) {
            // break if length > 75 or multibyte character starts after position 71
            if ($n > 75 || ($n > 71 && ord($matches[1][$c]) >> 6 == 3)) {
                $out .= "\r\n ";
                $n = 0;
            }

            $out .= $matches[1][$c];
            $n++;
        }

        return $out;
    }

    /**
     * Apply RFC2425 folding to a vCard content
     *
     * @param string $val vCard content
     *
     * @return string Folded vCard string
     */
    public static function rfc2425_fold($val)
    {
        return preg_replace_callback('/([^\n]{72,})/', ['rcube_vcard', 'rfc2425_fold_callback'], $val);
    }

    /**
     * Decodes a vcard block (vcard 3.0 format, unfolded) into an array structure
     *
     * @param string $vcard vCard block to parse
     *
     * @return array Raw data structure
     */
    private static function vcard_decode($vcard)
    {
        // Perform RFC2425 line unfolding and split lines
        $vcard  = preg_replace(["/\r/", "/\n\s+/"], '', $vcard);
        $lines  = explode("\n", $vcard);
        $result = [];

        for ($i=0; $i < count($lines); $i++) {
            if (!($pos = strpos($lines[$i], ':'))) {
                continue;
            }

            $prefix = substr($lines[$i], 0, $pos);
            $data   = substr($lines[$i], $pos+1);

            if (preg_match('/^(BEGIN|END)$/i', $prefix)) {
                continue;
            }

            // convert 2.1-style "EMAIL;internet;home:" to 3.0-style "EMAIL;TYPE=internet;TYPE=home:"
            if (
                !empty($result['VERSION'])
                && $result['VERSION'][0] == "2.1"
                && preg_match('/^([^;]+);([^:]+)/', $prefix, $regs2)
                && !preg_match('/^TYPE=/i', $regs2[2])
            ) {
                $prefix = $regs2[1];
                foreach (explode(';', $regs2[2]) as $prop) {
                    $prefix .= ';' . (strpos($prop, '=') ? $prop : 'TYPE='.$prop);
                }
            }

            if (preg_match_all('/([^\\;]+);?/', $prefix, $regs2)) {
                $entry = [];
                $field = strtoupper($regs2[1][0]);
                $enc   = null;

                foreach ($regs2[1] as $attrid => $attr) {
                    $attr = preg_replace('/[\s\t\n\r\0\x0B]/', '', $attr);

                    if ((@list($key, $value) = explode('=', $attr)) && $value) {
                        if ($key == 'ENCODING') {
                            $value = strtoupper($value);
                            // add next line(s) to value string if QP line end detected
                            if ($value == 'QUOTED-PRINTABLE') {
                                while (preg_match('/=$/', $lines[$i])) {
                                    $data .= "\n" . $lines[++$i];
                                }
                            }
                            $enc = $value == 'BASE64' ? 'B' : $value;
                        }
                        else {
                            $lc_key = strtolower($key);
                            $value  = (array) self::vcard_unquote($value, ',');

                            if (array_key_exists($lc_key, $entry)) {
                                $entry[$lc_key] = array_merge((array) $entry[$lc_key], $value);
                            }
                            else {
                                $entry[$lc_key] = $value;
                            }
                        }
                    }
                    else if ($attrid > 0) {
                        $entry[strtolower($key)] = true;  // true means attr without =value
                    }
                }

                // decode value
                if ($enc || !empty($entry['base64'])) {
                    // save encoding type (#1488432)
                    if ($enc == 'B') {
                        $entry['encoding'] = 'B';
                        // should we use vCard 3.0 instead?
                        // $entry['base64'] = true;
                    }

                    $data = self::decode_value($data, $enc ?: 'base64');
                }
                else if ($field == 'PHOTO') {
                    // vCard 4.0 data URI, "PHOTO:data:image/jpeg;base64,..."
                    if (preg_match('/^data:[a-z\/_-]+;base64,/i', $data, $m)) {
                        $entry['encoding'] = $enc = 'B';
                        $data = substr($data, strlen($m[0]));
                        $data = self::decode_value($data, 'base64');
                    }
                }

                if ($enc != 'B' && empty($entry['base64'])) {
                    $data = self::vcard_unquote($data);
                }

                if (is_array($data) || (is_string($data) && strlen($data))) {
                    $entry = array_merge($entry, (array) $data);
                    $result[$field][] = $entry;
                }
            }
        }

        unset($result['VERSION']);

        return $result;
    }

    /**
     * Decode a given string with the encoding rule from ENCODING attributes
     *
     * @param string $value    String to decode
     * @param string $encoding Encoding type (quoted-printable and base64 supported)
     *
     * @return string Decoded 8bit value
     */
    private static function decode_value($value, $encoding)
    {
        switch (strtolower($encoding)) {
        case 'quoted-printable':
            self::$values_decoded = true;
            return quoted_printable_decode($value);

        case 'base64':
        case 'b':
            self::$values_decoded = true;
            return base64_decode($value);

        default:
            return $value;
        }
    }

    /**
     * Encodes an entry for storage in our database (vcard 3.0 format, unfolded)
     *
     * @param array $data Raw data structure to encode
     *
     * @return string vCard encoded string
     */
    static function vcard_encode($data)
    {
        $vcard = '';

        // Make sure FN is not empty (required by RFC2426)
        if (empty($data['FN'])) {
            $data['FN'] = !empty($data['EMAIL'][0][0]) ? $data['EMAIL'][0][0] : '';
        }

        // Make sure N is not empty (required by RFC2426)
        if (empty($data['N'])) {
            $data['N'] = [['', '', '', '', '']];
        }

        // Valid N has 5 properties
        while (isset($data['N'][0]) && is_array($data['N'][0]) && count($data['N'][0]) < 5) {
            $data['N'][0][] = '';
        }

        foreach ((array)$data as $type => $entries) {
            foreach ((array)$entries as $entry) {
                $attr = '';
                if (is_array($entry)) {
                    $value = [];
                    foreach ($entry as $attrname => $attrvalues) {
                        if (is_int($attrname)) {
                            if (!empty($entry['base64']) || (!empty($entry['encoding']) && $entry['encoding'] == 'B')) {
                                $attrvalues = base64_encode($attrvalues);
                            }
                            $value[] = $attrvalues;
                        }
                        else if (is_bool($attrvalues)) {
                            // true means just a tag, not tag=value, as in PHOTO;BASE64:...
                            if ($attrvalues) {
                                // vCard v3 uses ENCODING=b (#1489183)
                                if ($attrname == 'base64') {
                                    $attr .= ";ENCODING=b";
                                }
                                else {
                                    $attr .= strtoupper(";$attrname");
                                }
                            }
                        }
                        else {
                            foreach ((array)$attrvalues as $attrvalue) {
                                $attrname = strtoupper($attrname);
                                // TYPE=OTHER is non-standard, TYPE=INTERNET is redundant, remove these
                                if ($attrname == 'TYPE') {
                                    $attrvalue = array_map('strtolower', (array) $attrvalue);
                                    $attrvalue = array_diff($attrvalue, ['other', 'internet']);
                                    if (empty($attrvalue)) {
                                        continue;
                                    }
                                }

                                $attr .= ';' . $attrname . '=' . self::vcard_quote($attrvalue, ',');
                            }
                        }
                    }
                }
                else {
                    $value = $entry;
                }

                // Skip empty entries that aren't required by vCard v3 format
                if (!in_array($type, ['N', 'FN']) && self::is_empty($value)) {
                    continue;
                }

                $vcard .= self::vcard_quote($type) . $attr . ':' . self::vcard_quote($value) . self::$eol;
            }
        }

        return 'BEGIN:VCARD' . self::$eol . 'VERSION:3.0' . self::$eol . $vcard . 'END:VCARD';
    }

    /**
     * Join indexed data array to a vcard quoted string
     *
     * @param array  $str Field data
     * @param string $sep Separator
     *
     * @return string Joined and quoted string
     */
    public static function vcard_quote($str, $sep = ';')
    {
        if (is_array($str)) {
            $r = [];

            foreach ($str as $part) {
                $r[] = self::vcard_quote($part, $sep);
            }

            return(implode($sep, $r));
        }

        return strtr($str, ["\\" => "\\\\", "\r" => '', "\n" => '\n', $sep => "\\$sep"]);
    }

    /**
     * Split quoted string
     *
     * @param string $str vCard string to split
     * @param string $sep Separator char/string
     *
     * @return string|array Unquoted string or a list of strings if $sep was found
     */
    private static function vcard_unquote($str, $sep = ';')
    {
        // break string into parts separated by $sep
        if (!empty($sep)) {
            // Handle properly backslash escaping (#1488896)
            $rep1 = ["\\\\" => "\010", "\\$sep" => "\007"];
            $rep2 = ["\007" => "\\$sep", "\010" => "\\\\"];

            if (count($parts = explode($sep, strtr($str, $rep1))) > 1) {
                $result = [];
                foreach ($parts as $s) {
                    $result[] = self::vcard_unquote(strtr($s, $rep2));
                }

                return $result;
            }

            $str = trim(strtr($str, $rep2));
        }

        // some implementations (GMail) use non-standard backslash before colon (#1489085)
        // we will handle properly any backslashed character - removing dummy backslashes
        // return strtr($str, ["\r" => '', '\\\\' => '\\', '\n' => "\n", '\N' => "\n", '\,' => ',', '\;' => ';']);

        $str = str_replace("\r", '', $str);
        $pos = 0;

        while (($pos = strpos($str, "\\", $pos)) !== false) {
            $next = substr($str, $pos + 1, 1);
            if ($next == 'n' || $next == 'N') {
                $str = substr_replace($str, "\n", $pos, 2);
            }
            else {
                $str = substr_replace($str, '', $pos, 1);
            }

            $pos += 1;
        }

        return $str;
    }

    /**
     * Check if vCard entry is empty: empty string or an array with
     * all entries empty.
     *
     * @param string|array $value Attribute value
     *
     * @return bool True if the value is empty, False otherwise
     */
    private static function is_empty($value)
    {
        foreach ((array) $value as $v) {
            if (@strval($v) !== '') {
                return false;
            }
        }

        return true;
    }

    /**
     * Returns character set of a vCard input
     *
     * @param string $string Input string to test
     *
     * @return string Detected encoding
     */
    private static function detect_encoding($string)
    {
        // Extract the plain text from the vCard, so the detection is more accurate
        // This will for example exclude photos

        // Perform RFC2425 line unfolding and split lines
        $string = preg_replace(["/\r/", "/\n\s+/"], '', $string);
        $lines  = explode("\n", $string);
        $string = '';

        for ($i = 0, $len = count($lines); $i < $len; $i++) {
            if (!($pos = strpos($lines[$i], ':'))) {
                continue;
            }

            $prefix = substr($lines[$i], 0, $pos);

            // We remove \0 as so it works with UTF-16/UTF-32 encodings
            $prefix = str_replace("\0", '', $prefix);

            // Take only properties that are known to contain human-readable text
            if (!preg_match('/^(item\d+\.)?(N|FN|ORG|ADR|NOTE|TITLE|CATEGORIES)(;|$)/', $prefix)) {
                continue;
            }

            $data = substr($lines[$i], $pos + 1);

            if (preg_match('/;CHARSET=([a-z0-9-]+)/i', $prefix, $matches)) {
                // We assume there's only one charset in the input
                return $matches[1];
            }

            $matches = null;
            $enc = null;

            if (stripos($prefix, 'base64') || preg_match('/ENCODING=(QUOTED-PRINTABLE|B|BASE64)/i', $prefix, $matches)) {
                $enc = $matches ? strtoupper($matches[1]) : 'BASE64';
                // add next line(s) to value string if QP line end detected
                if ($enc == 'QUOTED-PRINTABLE') {
                    while (preg_match('/=$/', $lines[$i])) {
                        $data .= "\n" . $lines[++$i];
                    }
                }

                $data = self::decode_value($data, $enc);
            }

            if (!$enc || $enc == 'QUOTED-PRINTABLE') {
                $data = self::vcard_unquote($data);
            }

            if (is_array($data)) {
                $data = implode(' ', array_filter($data));
            }

            $string .= $data . ' ';

            // 100 KB should be enough for charset check
            if (strlen($string) > 100 * 1024) {
                break;
            }
        }

        return rcube_charset::check($string) ?: RCUBE_CHARSET;
    }
}
lib/Roundcube/rcube_csv2vcard.php000064400000061020151727150630013034 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   CSV to vCard data conversion                                        |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * CSV to vCard data converter
 *
 * @package    Framework
 * @subpackage Addressbook
 */
class rcube_csv2vcard
{
    /**
     * CSV to vCard fields mapping
     *
     * @var array
     */
    protected $csv2vcard_map = [
        // MS Outlook 2010
        'anniversary'           => 'anniversary',
        'assistants_name'       => 'assistant',
        'assistants_phone'      => 'phone:assistant',
        'birthday'              => 'birthday',
        'business_city'         => 'locality:work',
        'business_countryregion' => 'country:work',
        'business_fax'          => 'phone:work,fax',
        'business_phone'        => 'phone:work',
        'business_phone_2'      => 'phone:work2',
        'business_postal_code'  => 'zipcode:work',
        'business_state'        => 'region:work',
        'business_street'       => 'street:work',
        //'business_street_2'     => '',
        //'business_street_3'     => '',
        'car_phone'             => 'phone:car',
        'categories'            => 'groups',
        //'children'              => '',
        'company'               => 'organization',
        //'company_main_phone'    => '',
        'department'            => 'department',
        'email_2_address'       => 'email:other',
        //'email_2_type'          => '',
        'email_3_address'       => 'email:other',
        //'email_3_type'          => '',
        'email_address'         => 'email:pref',
        //'email_type'            => '',
        'first_name'            => 'firstname',
        'gender'                => 'gender',
        'home_city'             => 'locality:home',
        'home_countryregion'    => 'country:home',
        'home_fax'              => 'phone:home,fax',
        'home_phone'            => 'phone:home',
        'home_phone_2'          => 'phone:home2',
        'home_postal_code'      => 'zipcode:home',
        'home_state'            => 'region:home',
        'home_street'           => 'street:home',
        //'home_street_2'         => '',
        //'home_street_3'         => '',
        //'initials'              => '',
        //'isdn'                  => '',
        'job_title'             => 'jobtitle',
        //'keywords'              => '',
        //'language'              => '',
        'last_name'             => 'surname',
        //'location'              => '',
        'managers_name'         => 'manager',
        'middle_name'           => 'middlename',
        //'mileage'               => '',
        'mobile_phone'          => 'phone:cell',
        'notes'                 => 'notes',
        //'office_location'       => '',
        'other_city'            => 'locality:other',
        'other_countryregion'   => 'country:other',
        'other_fax'             => 'phone:other,fax',
        'other_phone'           => 'phone:other',
        'other_postal_code'     => 'zipcode:other',
        'other_state'           => 'region:other',
        'other_street'          => 'street:other',
        //'other_street_2'        => '',
        //'other_street_3'        => '',
        'pager'                 => 'phone:pager',
        'primary_phone'         => 'phone:pref',
        //'profession'            => '',
        //'radio_phone'           => '',
        'spouse'                => 'spouse',
        'suffix'                => 'suffix',
        'title'                 => 'title',
        'web_page'              => 'website:homepage',

        // Thunderbird
        'birth_day'             => 'birthday-d',
        'birth_month'           => 'birthday-m',
        'birth_year'            => 'birthday-y',
        'display_name'          => 'displayname',
        'fax_number'            => 'phone:fax',
        'home_address'          => 'street:home',
        //'home_address_2'        => '',
        'home_country'          => 'country:home',
        'home_zipcode'          => 'zipcode:home',
        'mobile_number'         => 'phone:cell',
        'nickname'              => 'nickname',
        'organization'          => 'organization',
        'pager_number'          => 'phone:pager',
        'primary_email'         => 'email:pref',
        'secondary_email'       => 'email:other',
        'web_page_1'            => 'website:homepage',
        'web_page_2'            => 'website:other',
        'work_phone'            => 'phone:work',
        'work_address'          => 'street:work',
        //'work_address_2'        => '',
        'work_country'          => 'country:work',
        'work_zipcode'          => 'zipcode:work',
        'last'                  => 'surname',
        'first'                 => 'firstname',
        'work_city'             => 'locality:work',
        'work_state'            => 'region:work',
        'home_city_short'       => 'locality:home',
        'home_state_short'      => 'region:home',

        // Atmail
        'date_of_birth'         => 'birthday',
        // 'email'                 => 'email:pref',
        'home_mobile'           => 'phone:cell',
        'home_zip'              => 'zipcode:home',
        'info'                  => 'notes',
        'user_photo'            => 'photo',
        'url'                   => 'website:homepage',
        'work_company'          => 'organization',
        'work_dept'             => 'department',
        'work_fax'              => 'phone:work,fax',
        'work_mobile'           => 'phone:work,cell',
        'work_title'            => 'jobtitle',
        'work_zip'              => 'zipcode:work',
        'group'                 => 'groups',

        // GMail
        'groups'                => 'groups',
        'group_membership'      => 'groups',
        'given_name'            => 'firstname',
        'additional_name'       => 'middlename',
        'family_name'           => 'surname',
        'name'                  => 'displayname',
        'name_prefix'           => 'prefix',
        'name_suffix'           => 'suffix',

        // Format of Letter Hub test files from
        // https://letterhub.com/sample-csv-file-with-contacts/
        'company_name'          => 'organization',
        'address'               => 'street:home',
        'city'                  => 'locality:home',
        //'county'                => '',
        'state'                 => 'region:home',
        'zip'                   => 'zipcode:home',
        'phone1'                => 'phone:home',
        'phone'                 => 'phone:work',
        'email'                 => 'email:home',
    ];

    /**
     * CSV label to text mapping for English
     *
     * @var array
     */
    protected $label_map = [
        // MS Outlook 2010
        'anniversary'       => "Anniversary",
        'assistants_name'   => "Assistant's Name",
        'assistants_phone'  => "Assistant's Phone",
        'birthday'          => "Birthday",
        'business_city'     => "Business City",
        'business_countryregion' => "Business Country/Region",
        'business_fax'      => "Business Fax",
        'business_phone'    => "Business Phone",
        'business_phone_2'  => "Business Phone 2",
        'business_postal_code' => "Business Postal Code",
        'business_state'    => "Business State",
        'business_street'   => "Business Street",
        //'business_street_2' => "Business Street 2",
        //'business_street_3' => "Business Street 3",
        'car_phone'         => "Car Phone",
        'categories'        => "Categories",
        //'children'          => "Children",
        'company'           => "Company",
        //'company_main_phone' => "Company Main Phone",
        'department'        => "Department",
        //'directory_server'  => "Directory Server",
        'email_2_address'   => "E-mail 2 Address",
        //'email_2_type'      => "E-mail 2 Type",
        'email_3_address'   => "E-mail 3 Address",
        //'email_3_type'      => "E-mail 3 Type",
        'email_address'     => "E-mail Address",
        //'email_type'        => "E-mail Type",
        'first_name'        => "First Name",
        'gender'            => "Gender",
        'home_city'         => "Home City",
        'home_countryregion' => "Home Country/Region",
        'home_fax'          => "Home Fax",
        'home_phone'        => "Home Phone",
        'home_phone_2'      => "Home Phone 2",
        'home_postal_code'  => "Home Postal Code",
        'home_state'        => "Home State",
        'home_street'       => "Home Street",
        //'home_street_2'     => "Home Street 2",
        //'home_street_3'     => "Home Street 3",
        //'initials'          => "Initials",
        //'isdn'              => "ISDN",
        'job_title'         => "Job Title",
        //'keywords'          => "Keywords",
        //'language'          => "Language",
        'last_name'         => "Last Name",
        //'location'          => "Location",
        'managers_name'     => "Manager's Name",
        'middle_name'       => "Middle Name",
        //'mileage'           => "Mileage",
        'mobile_phone'      => "Mobile Phone",
        'notes'             => "Notes",
        //'office_location'   => "Office Location",
        'other_city'        => "Other City",
        'other_countryregion' => "Other Country/Region",
        'other_fax'         => "Other Fax",
        'other_phone'       => "Other Phone",
        'other_postal_code' => "Other Postal Code",
        'other_state'       => "Other State",
        'other_street'      => "Other Street",
        //'other_street_2'    => "Other Street 2",
        //'other_street_3'    => "Other Street 3",
        'pager'             => "Pager",
        'primary_phone'     => "Primary Phone",
        //'profession'        => "Profession",
        //'radio_phone'       => "Radio Phone",
        'spouse'            => "Spouse",
        'suffix'            => "Suffix",
        'title'             => "Title",
        'web_page'          => "Web Page",

        // Thunderbird
        'birth_day'         => "Birth Day",
        'birth_month'       => "Birth Month",
        'birth_year'        => "Birth Year",
        'display_name'      => "Display Name",
        'fax_number'        => "Fax Number",
        'home_address'      => "Home Address",
        //'home_address_2'    => "Home Address 2",
        'home_country'      => "Home Country",
        'home_zipcode'      => "Home ZipCode",
        'mobile_number'     => "Mobile Number",
        'nickname'          => "Nickname",
        'organization'      => "Organization",
        'pager_number'      => "Pager Number",
        'primary_email'     => "Primary Email",
        'secondary_email'   => "Secondary Email",
        'web_page_1'        => "Web Page 1",
        'web_page_2'        => "Web Page 2",
        'work_phone'        => "Work Phone",
        'work_address'      => "Work Address",
        //'work_address_2'    => "Work Address 2",
        'work_city'         => "Work City",
        'work_country'      => "Work Country",
        'work_state'        => "Work State",
        'work_zipcode'      => "Work ZipCode",

        // Atmail
        'date_of_birth'     => "Date of Birth",
        'email'             => "Email",
        //'email_2'         => "Email2",
        //'email_3'         => "Email3",
        //'email_4'         => "Email4",
        //'email_5'         => "Email5",
        'home_mobile'       => "Home Mobile",
        'home_zip'          => "Home Zip",
        'info'              => "Info",
        'user_photo'        => "User Photo",
        'url'               => "URL",
        'work_company'      => "Work Company",
        'work_dept'         => "Work Dept",
        'work_fax'          => "Work Fax",
        'work_mobile'       => "Work Mobile",
        'work_title'        => "Work Title",
        'work_zip'          => "Work Zip",
        'group'             => "Group",

        // GMail
        'groups'            => "Groups",
        'group_membership'  => "Group Membership",
        'given_name'        => "Given Name",
        'additional_name'   => "Additional Name",
        'family_name'       => "Family Name",
        'name'              => "Name",
        'name_prefix'       => "Name Prefix",
        'name_suffix'       => "Name Suffix",
    ];

    /**
     * Special fields map for GMail format
     *
     * @var array
     */
    protected $gmail_label_map = [
        'E-mail' => [
            'Value' => [
                'home'  => 'email:home',
                'work'  => 'email:work',
                'other' => 'email:other',
                ''      => 'email:other',
            ],
        ],
        'Phone' => [
            'Value' => [
                'home'    => 'phone:home',
                'homefax' => 'phone:homefax',
                'main'    => 'phone:pref',
                'pager'   => 'phone:pager',
                'mobile'  => 'phone:cell',
                'work'    => 'phone:work',
                'workfax' => 'phone:workfax',
            ],
        ],
        'Relation' => [
            'Value' => [
                'spouse' => 'spouse',
            ],
        ],
        'Website' => [
            'Value' => [
                'profile'  => 'website:profile',
                'blog'     => 'website:blog',
                'homepage' => 'website:homepage',
                'work'     => 'website:work',
            ],
        ],
        'Address' => [
            'Street' => [
                'home' => 'street:home',
                'work' => 'street:work',
            ],
            'City' => [
                'home' => 'locality:home',
                'work' => 'locality:work',
            ],
            'Region' => [
                'home' => 'region:home',
                'work' => 'region:work',
            ],
            'Postal Code' => [
                'home' => 'zipcode:home',
                'work' => 'zipcode:work',
            ],
            'Country' => [
                'home' => 'country:home',
                'work' => 'country:work',
            ],
        ],
        'Organization' => [
            'Name' => [
                '' => 'organization',
            ],
            'Title' => [
                '' => 'jobtitle',
            ],
            'Department' => [
                '' => 'department',
            ],
        ],
    ];

    /** @var array Localized labels map */
    protected $local_label_map = [];

    /** @var rcube_vcard[] List of contacts as vCards */
    protected $vcards = [];

    /** @var array Field mapping */
    protected $map = [];


    /**
     * Class constructor
     *
     * @param string $lang File language
     */
    public function __construct($lang = 'en_US')
    {
        // Localize fields map
        if ($lang && $lang != 'en_US') {
            if (file_exists(RCUBE_LOCALIZATION_DIR . "$lang/csv2vcard.inc")) {
                include RCUBE_LOCALIZATION_DIR . "$lang/csv2vcard.inc";
            }

            if (!empty($map)) {
                $this->local_label_map = array_merge($this->label_map, $map);
            }
        }
    }

    /**
     * Import contacts from CSV file
     *
     * @param string $csv       Content of the CSV file
     * @param bool   $dry_run   Generate automatic field mapping
     * @param bool   $skip_head Skip header line
     *
     * @return array Field mapping info (dry run only)
     */
    public function import($csv, $dry_run = false, $skip_head = true)
    {
        // convert to UTF-8 (supports default_charset and RCUBE_CHARSET as input)
        // TODO: If the input charset is invalid we should probably just abort here
        if ($charset = rcube_charset::check($csv)) {
            $csv = rcube_charset::convert($csv, $charset);
        }
        $csv = preg_replace(['/^[\xFE\xFF]{2}/', '/^\xEF\xBB\xBF/', '/^\x00+/'], '', $csv); // also remove BOM

        // Split CSV file into lines
        $lines = rcube_utils::explode_quoted_string('[\r\n]+', $csv);

        // Parse first 2 lines of file to identify fields
        // 2 lines because for gmail CSV we need to get the value from the "Type" fields to identify which is which
        if (empty($this->map)) {
            $this->parse_header(array_slice($lines, 0, 2));
        }

        // Parse the fields
        foreach ($lines as $n => $line) {
            $elements = $this->parse_line($line);

            if ($dry_run) {
                return ['source' => $elements, 'destination' => $this->map];
            }

            if (empty($elements)) {
                continue;
            }

            // first line is the headers so do not import unless explicitly set
            if (!$skip_head || $n > 0) {
                $this->csv_to_vcard($elements);
            }
        }
    }

    /**
     * Set field mapping info
     *
     * @param array $elements Field mapping
     */
    public function set_map($elements)
    {
        // sanitize input
        $elements = array_filter($elements, function($val) {
                return in_array($val, $this->csv2vcard_map);
            });

        $this->map = $elements;
    }

    /**
     * Set field mapping info
     *
     * @return array Array of vcard fields and localized names
     */
    public function get_fields()
    {
        // get all vcard fields
        $fields            = array_unique($this->csv2vcard_map);
        $local_field_names = $this->local_label_map ?: $this->label_map;

        // translate with the local map
        $map = [];
        foreach ($fields as $csv => $vcard) {
            if ($vcard == '_auto_') {
                continue;
            }

            $map[$vcard] = $local_field_names[$csv];
        }

        // small fix to prevent "Groups" displaying as "Categories"
        $map['groups'] = $local_field_names['groups'];

        asort($map);

        return $map;
    }

    /**
     * Export vCards
     *
     * @return array rcube_vcard List of vcards
     */
    public function export()
    {
        return $this->vcards;
    }

    /**
     * Parse CSV file line
     *
     * @param string $line Line of text from CSV file
     *
     * @return array CSV data extracted from the line
     */
    protected function parse_line($line)
    {
        $line = trim($line);
        if (empty($line)) {
            return [];
        }

        $fields = str_getcsv($line);

        return $fields;
    }

    /**
     * Parse CSV header line, detect fields mapping
     *
     * @param array $lines One or two header lines in CSV file
     */
    protected function parse_header($lines)
    {
        $elements = $this->parse_line($lines[0]);

        $label_map = array_flip($this->label_map);
        $local_label_map = array_flip($this->local_label_map);

        if (count($lines) == 2) {
            // first line of contents needed to properly identify fields in gmail CSV
            $contents = $this->parse_line($lines[1]);
        }

        $map1 = [];
        $map2 = [];
        $size = count($elements);

        // check English labels
        for ($i = 0; $i < $size; $i++) {
            if (!empty($label_map[$elements[$i]])) {
                $label = $label_map[$elements[$i]];
                if ($label && !empty($this->csv2vcard_map[$label])) {
                    $map1[$i] = $this->csv2vcard_map[$label];
                }
            }
        }

        // check localized labels
        if (!empty($local_label_map)) {
            for ($i = 0; $i < $size; $i++) {
                $label = $local_label_map[$elements[$i]];

                // special localization label
                if ($label && $label[0] == '_') {
                    $label = substr($label, 1);
                }

                if ($label && !empty($this->csv2vcard_map[$label])) {
                    $map2[$i] = $this->csv2vcard_map[$label];
                }
            }
        }

        // If nothing recognized fallback to simple non-localized labels
        if (empty($map1) && empty($map2)) {
            for ($i = 0; $i < $size; $i++) {
                $label = str_replace(' ', '_', strtolower($elements[$i]));
                if (!empty($this->csv2vcard_map[$label])) {
                    $map1[$i] = $this->csv2vcard_map[$label];
                }
            }
        }

        $this->map = count($map1) >= count($map2) ? $map1 : $map2;

        if (!empty($contents)) {
            foreach ($this->gmail_label_map as $key => $items) {
                $num = 1;
                while (($_key = "$key $num - Type") && ($found = array_search($_key, $elements)) !== false) {
                    $type = $contents[$found];
                    $type = preg_replace('/[^a-z]/', '', strtolower($type));

                    foreach ($items as $item_key => $vcard_fields) {
                        $_key = "$key $num - $item_key";
                        if (($found = array_search($_key, $elements)) !== false) {
                            $this->map[$found] = $vcard_fields[$type];
                        }
                    }

                    $num++;
                }
            }
        }
    }

    /**
     * Convert CSV data row to vCard
     *
     * @param array $data CSV data array
     */
    protected function csv_to_vcard($data)
    {
        $contact = [];

        foreach ($this->map as $idx => $name) {
            if ($name == '_auto_') {
                continue;
            }

            $value = $data[$idx];
            if ($value !== null && $value !== '') {
                if (!empty($contact[$name])) {
                    $contact[$name]   = (array) $contact[$name];
                    $contact[$name][] = $value;
                }
                else {
                   $contact[$name] = $value;
                }
            }
        }

        if (empty($contact)) {
            return;
        }

        // Handle special values
        if (!empty($contact['birthday-d']) && !empty($contact['birthday-m']) && !empty($contact['birthday-y'])) {
            $contact['birthday'] = $contact['birthday-y'] .'-' .$contact['birthday-m'] . '-' . $contact['birthday-d'];
        }

        if (!empty($contact['groups'])) {
            // categories/groups separator in vCard is ',' not ';'
            $contact['groups'] = str_replace(';', ',', $contact['groups']);

            // remove "* " added by GMail
            $contact['groups'] = str_replace('* ', '', $contact['groups']);
            // replace strange delimiter added by GMail
            $contact['groups'] = str_replace(' ::: ', ',', $contact['groups']);
        }

        // Empty dates, e.g. "0/0/00", "0000-00-00 00:00:00"
        foreach (['birthday', 'anniversary'] as $key) {
            if (!empty($contact[$key])) {
                $date = preg_replace('/[0[:^word:]]/', '', $contact[$key]);
                if (empty($date)) {
                    unset($contact[$key]);
                }
            }
        }

        if (!empty($contact['gender']) && ($gender = strtolower($contact['gender']))) {
            if (!in_array($gender, ['male', 'female'])) {
                unset($contact['gender']);
            }
        }

        // Convert address(es) to rcube_vcard data
        foreach ($contact as $idx => $value) {
            $name = explode(':', $idx);
            if (in_array($name[0], ['street', 'locality', 'region', 'zipcode', 'country'])) {
                $contact['address:'.$name[1]][$name[0]] = $value;
                unset($contact[$idx]);
            }
        }

        // Create vcard object
        $vcard = new rcube_vcard();
        foreach ($contact as $name => $value) {
            $name = explode(':', $name);
            if (is_array($value) && $name[0] != 'address') {
                foreach ((array) $value as $val) {
                    $vcard->set($name[0], $val, $name[1] ?? null);
                }
            }
            else {
                $vcard->set($name[0], $value, $name[1] ?? null);
            }
        }

        // add to the list
        $this->vcards[] = $vcard;
    }
}
lib/Roundcube/spellchecker/atd.php000064400000014542151727150630013202 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecking backend implementation for afterthedeadline services  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Spellchecking backend implementation to work with an After the Deadline service
 * See http://www.afterthedeadline.com/ for more information
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spellchecker_atd extends rcube_spellchecker_engine
{
    const SERVICE_HOST = 'service.afterthedeadline.com';
    const SERVICE_PORT = 80;

    private $matches = [];
    private $content;
    private $langhosts = [
        'fr' => 'fr.',
        'de' => 'de.',
        'pt' => 'pt.',
        'es' => 'es.',
    ];

    /**
     * Return a list of languages supported by this backend
     *
     * @see rcube_spellchecker_engine::languages()
     */
    function languages()
    {
        $langs = array_values($this->langhosts);
        $langs[] = 'en';

        return $langs;
    }

    /**
     * Set content and check spelling
     *
     * @see rcube_spellchecker_engine::check()
     */
    function check($text)
    {
        $this->content = $text;

        // spell check uri is configured
        $rcube = rcube::get_instance();
        $url   = $rcube->config->get('spellcheck_uri');
        $key   = $rcube->config->get('spellcheck_atd_key');

        if ($url) {
            $a_uri = parse_url($url);
            $ssl   = ($a_uri['scheme'] == 'https' || $a_uri['scheme'] == 'ssl');
            $port  = !empty($a_uri['port']) ? $a_uri['port'] : ($ssl ? 443 : 80);
            $host  = ($ssl ? 'ssl://' : '') . $a_uri['host'];
            $path  = $a_uri['path'] . (!empty($a_uri['query']) ? '?'.$a_uri['query'] : '') . $this->lang;
        }
        else {
            $host = self::SERVICE_HOST;
            $port = self::SERVICE_PORT;
            $path = '/checkDocument';

            // prefix host for other languages than 'en'
            $lang = substr($this->lang, 0, 2);
            if (!empty($this->langhosts[$lang])) {
                $host = $this->langhosts[$lang] . $host;
            }
        }

        $postdata = 'data=' . urlencode($text);

        if (!empty($key)) {
            $postdata .= '&key=' . urlencode($key);
        }

        $response = $headers = '';
        $in_header = true;

        if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) {
            $out = "POST $path HTTP/1.0\r\n";
            $out .= "Host: " . str_replace('ssl://', '', $host) . "\r\n";
            $out .= "Content-Length: " . strlen($postdata) . "\r\n";
            $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
            $out .= "Connection: Close\r\n\r\n";
            $out .= $postdata;
            fwrite($fp, $out);

            while (!feof($fp)) {
                if ($in_header) {
                    $line = fgets($fp, 512);
                    $headers .= $line;
                    if (trim($line) == '') {
                        $in_header = false;
                    }
                }
                else {
                    $response .= fgets($fp, 1024);
                }
            }
            fclose($fp);
        }

        // parse HTTP response headers
        if (preg_match('!^HTTP/1.\d (\d+)(.+)!', $headers, $m)) {
            $http_status = $m[1];
            if ($http_status != '200') {
                $this->error = 'HTTP ' . $m[1] . $m[2];
            }
        }

        if (!$response) {
            $this->error = "Empty result from spelling engine";
        }

        try {
            $result = new SimpleXMLElement($response);
        }
        catch (Exception $e) {
            $this->error = "Unexpected response from server: " . $response;
            return [];
        }

        $matches = [];

        foreach ($result->error as $error) {
            if (strval($error->type) == 'spelling') {
                $word = strval($error->string);

                // skip exceptions
                if ($this->dictionary->is_exception($word)) {
                    continue;
                }

                $prefix = strval($error->precontext);
                $start = $prefix ? mb_strpos($text, $prefix) : 0;
                $pos = mb_strpos($text, $word, $start);
                $len = mb_strlen($word);
                $num = 0;

                $match = [$word, $pos, $len, null, []];
                foreach ($error->suggestions->option as $option) {
                    $match[4][] = strval($option);
                    if (++$num == self::MAX_SUGGESTIONS) {
                        break;
                    }
                }
                $matches[] = $match;
            }
        }

        $this->matches = $matches;

        return $matches;
    }

    /**
     * Returns suggestions for the specified word
     *
     * @see rcube_spellchecker_engine::get_words()
     */
    function get_suggestions($word)
    {
        $matches = $word ? $this->check($word) : $this->matches;

        if (!empty($matches[0][4])) {
            return $matches[0][4];
        }

        return [];
    }

    /**
     * Returns misspelled words
     *
     * @see rcube_spellchecker_engine::get_suggestions()
     */
    function get_words($text = null)
    {
        if ($text) {
            $matches = $this->check($text);
        }
        else {
            $matches = $this->matches;
            $text    = $this->content;
        }

        $result = [];

        foreach ($matches as $m) {
            $result[] = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
        }

        return $result;
    }
}
lib/Roundcube/spellchecker/googie.php000064400000013066151727150630013703 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecking backend implementation to work with Googiespell       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Spellchecking backend implementation to work with a Googiespell service
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spellchecker_googie extends rcube_spellchecker_engine
{
    const GOOGIE_HOST = 'https://spell.roundcube.net';

    private $matches = [];
    private $content;

    /**
     * Return a list of languages supported by this backend
     *
     * @see rcube_spellchecker_engine::languages()
     */
    function languages()
    {
        return [
            'am','ar','ar','bg','br','ca','cs','cy','da',
            'de_CH','de_DE','el','en_GB','en_US',
            'eo','es','et','eu','fa','fi','fr_FR','ga','gl','gl',
            'he','hr','hu','hy','is','it','ku','lt','lv','nl',
            'pl','pt_BR','pt_PT','ro','ru',
            'sk','sl','sv','uk'
        ];
    }

    /**
     * Set content and check spelling
     *
     * @see rcube_spellchecker_engine::check()
     */
    function check($text)
    {
        $this->content = $text;

        $matches = [];

        if (empty($text)) {
            return $this->matches = $matches;
        }

        $rcube  = rcube::get_instance();
        $client = $rcube->get_http_client();

        // spell check uri is configured
        $url = $rcube->config->get('spellcheck_uri');

        if (!$url) {
            $url = self::GOOGIE_HOST . '/tbproxy/spell?lang=';
        }
        $url .= $this->lang;
        $url .= sprintf('&key=%06d', !empty($_SESSION['user_id']) ? $_SESSION['user_id'] : 0);

        $gtext = '<?xml version="1.0" encoding="utf-8" ?>'
            .'<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">'
            .'<text>' . htmlspecialchars($text, ENT_QUOTES, RCUBE_CHARSET) . '</text>'
            .'</spellrequest>';

        try {
            $response = $client->post($url, [
                    'connect_timeout' => 5, // seconds
                    'headers' => [
                        'User-Agent' => "Roundcube Webmail/" . RCUBE_VERSION . " (Googiespell Wrapper)",
                            'Content-type' => 'text/xml'
                    ],
                    'body' => $gtext
                ]
            );
        }
        catch (Exception $e) {
            // Do nothing, the error set below should be logged by the caller
        }

        if (empty($response)) {
            $this->error = $e ? $e->getMessage() : "Spelling engine failure";
        }
        else if ($response->getStatusCode() != 200) {
            $this->error = 'HTTP ' . $response->getReasonPhrase();
        }
        else {
            $response_body = $response->getBody();
            if (preg_match('/<spellresult error="([^"]+)"/', $response_body, $m) && $m[1]) {
                $this->error = "Error code $m[1] returned";
                $this->error .= preg_match('/<errortext>([^<]+)/', $response_body, $m) ? ": " . html_entity_decode($m[1]) : '';
            }

            preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $response_body, $matches, PREG_SET_ORDER);

            // skip exceptions (if appropriate options are enabled)
            foreach ($matches as $idx => $m) {
                $word = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
                // skip  exceptions
                if ($this->dictionary->is_exception($word)) {
                    unset($matches[$idx]);
                }
            }
        }

        return $this->matches = $matches;
    }

    /**
     * Returns suggestions for the specified word
     *
     * @see rcube_spellchecker_engine::get_words()
     */
    function get_suggestions($word)
    {
        $matches = $word ? $this->check($word) : $this->matches;

        if (!empty($matches[0][4])) {
            $suggestions = explode("\t", $matches[0][4]);
            if (count($suggestions) > self::MAX_SUGGESTIONS) {
                $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
            }

            return $suggestions;
        }

        return [];
    }

    /**
     * Returns misspelled words
     *
     * @see rcube_spellchecker_engine::get_suggestions()
     */
    function get_words($text = null)
    {
        if ($text) {
            $matches = $this->check($text);
        }
        else {
            $matches = $this->matches;
            $text    = $this->content;
        }

        $result = [];

        foreach ($matches as $m) {
            $result[] = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
        }

        return $result;
    }
}
lib/Roundcube/spellchecker/enchant.php000064400000012600151727150630014043 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecking backend implementation to work with Enchant           |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Spellchecking backend implementation to work with Pspell
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spellchecker_enchant extends rcube_spellchecker_engine
{
    private $enchant_broker;
    private $enchant_dictionary;
    private $matches = [];

    /**
     * Return a list of languages supported by this backend
     *
     * @see rcube_spellchecker_engine::languages()
     */
    function languages()
    {
        $this->init();

        if (!$this->enchant_broker) {
            return [];
        }

        $langs = [];
        if ($dicts = enchant_broker_list_dicts($this->enchant_broker)) {
            foreach ($dicts as $dict) {
                $langs[] = preg_replace('/-.*$/', '', $dict['lang_tag']);
            }
        }

        return array_unique($langs);
    }

    /**
     * Initializes Enchant dictionary
     */
    private function init()
    {
        if (!$this->enchant_broker) {
            if (!extension_loaded('enchant')) {
                $this->error = "Enchant extension not available";
                return;
            }

            $this->enchant_broker = enchant_broker_init();
        }

        if (!enchant_broker_dict_exists($this->enchant_broker, $this->lang)) {
            $this->error = "Unable to load dictionary for selected language using Enchant";
            return;
        }

        $this->enchant_dictionary = enchant_broker_request_dict($this->enchant_broker, $this->lang);
    }

    /**
     * Set content and check spelling
     *
     * @see rcube_spellchecker_engine::check()
     */
    function check($text)
    {
        $this->init();

        if (!$this->enchant_dictionary) {
            return [];
        }

        // tokenize
        $text = preg_split($this->separator, $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);

        $diff    = 0;
        $matches = [];

        foreach ($text as $w) {
            $word = trim($w[0]);
            $pos  = $w[1] - $diff;
            $len  = mb_strlen($word);

            if ($this->dictionary->is_exception($word)) {
                // skip exceptions
            }
            else if (!enchant_dict_check($this->enchant_dictionary, $word)) {
                $suggestions = enchant_dict_suggest($this->enchant_dictionary, $word);

                if (is_array($suggestions) && count($suggestions) > self::MAX_SUGGESTIONS) {
                    $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
                }

                $matches[] = [$word, $pos, $len, null, $suggestions];
            }

            $diff += (strlen($word) - $len);
        }

        $this->matches = $matches;
        return $matches;
    }

    /**
     * Returns suggestions for the specified word
     *
     * @see rcube_spellchecker_engine::get_words()
     */
    function get_suggestions($word)
    {
        $this->init();

        if (!$this->enchant_dictionary) {
            return [];
        }

        $suggestions = enchant_dict_suggest($this->enchant_dictionary, $word);

        if (is_array($suggestions) && count($suggestions) > self::MAX_SUGGESTIONS) {
            $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
        }

        return is_array($suggestions) ? $suggestions : [];
    }

    /**
     * Returns misspelled words
     *
     * @see rcube_spellchecker_engine::get_suggestions()
     */
    function get_words($text = null)
    {
        $result = [];

        if ($text) {
            // init spellchecker
            $this->init();

            if (!$this->enchant_dictionary) {
                return [];
            }

            // With Enchant we don't need to get suggestions to return misspelled words
            $text = preg_split($this->separator, $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);

            foreach ($text as $w) {
                $word = trim($w[0]);

                // skip exceptions
                if ($this->dictionary->is_exception($word)) {
                    continue;
                }

                if (!enchant_dict_check($this->enchant_dictionary, $word)) {
                    $result[] = $word;
                }
            }

            return $result;
        }

        foreach ($this->matches as $m) {
            $result[] = $m[0];
        }

        return $result;
    }
}
lib/Roundcube/spellchecker/engine.php000064400000005326151727150640013700 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Interface class for a spell-checking backend                        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface class for a spell-checking backend
 *
 * @package    Framework
 * @subpackage Utils
 */
abstract class rcube_spellchecker_engine
{
    const MAX_SUGGESTIONS = 10;

    protected $lang;
    protected $error;
    protected $dictionary;
    protected $options = [];
    protected $separator = '/[\s\r\n\t\(\)\/\[\]{}<>\\"]+|[:;?!,\.](?=\W|$)/';

    /**
     * Default constructor
     */
    public function __construct($dict, $lang, $options = [])
    {
        $this->dictionary = $dict;
        $this->lang = $lang;
        $this->options = $options;
    }

    /**
     * Return a list of languages supported by this backend
     *
     * @return array Indexed list of language codes
     */
    abstract function languages();

    /**
     * Set content and check spelling
     *
     * @param string $text Text content for spellchecking
     *
     * @return bool True when no misspelling found, otherwise false
     */
    abstract function check($text);

    /**
     * Returns suggestions for the specified word
     *
     * @param string $word The word
     *
     * @return array Suggestions list
     */
    abstract function get_suggestions($word);

    /**
     * Returns misspelled words
     *
     * @param string $text The content for spellchecking. If empty content
     *                     used for check() method will be used.
     *
     * @return array List of misspelled words
     */
    abstract function get_words($text = null);

    /**
     * Returns error message
     *
     * @return string Error message
     */
    public function error()
    {
        return $this->error;
    }
}
lib/Roundcube/spellchecker/pspell.php000064400000012403151727150640013724 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecking backend implementation to work with Pspell            |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Spellchecking backend implementation to work with Pspell
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spellchecker_pspell extends rcube_spellchecker_engine
{
    private $plink;
    private $matches = [];

    /**
     * Return a list of languages supported by this backend
     *
     * @see rcube_spellchecker_engine::languages()
     */
    function languages()
    {
        $defaults = ['en'];
        $langs    = [];

        // get aspell dictionaries
        exec('aspell dump dicts', $dicts);
        if (!empty($dicts)) {
            $seen = [];
            foreach ($dicts as $lang) {
                $lang  = preg_replace('/-.*$/', '', $lang);
                $langc = strlen($lang) == 2 ? $lang.'_'.strtoupper($lang) : $lang;

                if (empty($seen[$langc])) {
                    $langs[] = $lang;
                    $seen[$langc] = true;
                }
            }

            $langs = array_unique($langs);
        }
        else {
            $langs = $defaults;
        }

        return $langs;
    }

    /**
     * Initializes PSpell dictionary
     */
    private function init()
    {
        if (!$this->plink) {
            if (!extension_loaded('pspell')) {
                $this->error = "Pspell extension not available";
                return;
            }

            $this->plink = pspell_new($this->lang, '', '', RCUBE_CHARSET, PSPELL_FAST);
        }

        if (!$this->plink) {
            $this->error = "Unable to load Pspell engine for selected language";
        }
    }

    /**
     * Set content and check spelling
     *
     * @see rcube_spellchecker_engine::check()
     */
    function check($text)
    {
        $this->init();

        if (!$this->plink) {
            return [];
        }

        // tokenize
        $text = preg_split($this->separator, $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);

        $diff    = 0;
        $matches = [];

        foreach ($text as $w) {
            $word = trim($w[0]);
            $pos  = $w[1] - $diff;
            $len  = mb_strlen($word);

            if ($this->dictionary->is_exception($word)) {
                // skip exceptions
            }
            else if (!pspell_check($this->plink, $word)) {
                $suggestions = pspell_suggest($this->plink, $word);

                if (count($suggestions) > self::MAX_SUGGESTIONS) {
                    $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
                }

                $matches[] = [$word, $pos, $len, null, $suggestions];
            }

            $diff += (strlen($word) - $len);
        }

        return $this->matches = $matches;
    }

    /**
     * Returns suggestions for the specified word
     *
     * @see rcube_spellchecker_engine::get_words()
     */
    function get_suggestions($word)
    {
        $this->init();

        if (!$this->plink) {
            return [];
        }

        $suggestions = pspell_suggest($this->plink, $word);

        if (count($suggestions) > self::MAX_SUGGESTIONS) {
            $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
        }

        return $suggestions ?: [];
    }

    /**
     * Returns misspelled words
     *
     * @see rcube_spellchecker_engine::get_suggestions()
     */
    function get_words($text = null)
    {
        $result = [];

        if ($text) {
            // init spellchecker
            $this->init();

            if (!$this->plink) {
                return [];
            }

            // With PSpell we don't need to get suggestions to return misspelled words
            $text = preg_split($this->separator, $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);

            foreach ($text as $w) {
                $word = trim($w[0]);

                // skip exceptions
                if ($this->dictionary->is_exception($word)) {
                    continue;
                }

                if (!pspell_check($this->plink, $word)) {
                    $result[] = $word;
                }
            }

            return $result;
        }

        foreach ($this->matches as $m) {
            $result[] = $m[0];
        }

        return $result;
    }
}
lib/Roundcube/rcube_utils.php000064400000155256151727150640012317 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Utility class providing common functions                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Utility class providing common functions
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_utils
{
    // define constants for input reading
    const INPUT_GET    = 1;
    const INPUT_POST   = 2;
    const INPUT_COOKIE = 4;
    const INPUT_GP     = 3; // GET + POST
    const INPUT_GPC    = 7; // GET + POST + COOKIE


    /**
     * A wrapper for PHP's explode() that does not throw a warning
     * when the separator does not exist in the string
     *
     * @param string $separator Separator string
     * @param string $string    The string to explode
     *
     * @return array Exploded string. Still an array if there's no separator in the string
     */
    public static function explode($separator, $string)
    {
        if (strpos($string, $separator) !== false) {
            return explode($separator, $string);
        }

        return [$string, null];
    }

    /**
     * Helper method to set a cookie with the current path and host settings
     *
     * @param string $name      Cookie name
     * @param string $value     Cookie value
     * @param int    $exp       Expiration time
     * @param bool   $http_only HTTP Only
     */
    public static function setcookie($name, $value, $exp = 0, $http_only = true)
    {
        if (headers_sent()) {
            return;
        }

        $attrib             = session_get_cookie_params();
        $attrib['expires']  = $exp;
        $attrib['secure']   = $attrib['secure'] || self::https_check();
        $attrib['httponly'] = $http_only;

        // session_get_cookie_params() return includes 'lifetime' but setcookie() does not use it, instead it uses 'expires'
        unset($attrib['lifetime']);

        setcookie($name, $value, $attrib);
    }

    /**
     * E-mail address validation.
     *
     * @param string $email     Email address
     * @param bool   $dns_check True to check dns
     *
     * @return bool True on success, False if address is invalid
     */
    public static function check_email($email, $dns_check = true)
    {
        // Check for invalid (control) characters
        if (preg_match('/\p{Cc}/u', $email)) {
            return false;
        }

        // Check for length limit specified by RFC 5321 (#1486453)
        if (strlen($email) > 254) {
            return false;
        }

        $pos = strrpos($email, '@');
        if (!$pos) {
            return false;
        }

        $domain_part = substr($email, $pos + 1);
        $local_part  = substr($email, 0, $pos);

        // quoted-string, make sure all backslashes and quotes are
        // escaped
        if (substr($local_part, 0, 1) == '"') {
            $local_quoted = preg_replace('/\\\\(\\\\|\")/','', substr($local_part, 1, -1));
            if (preg_match('/\\\\|"/', $local_quoted)) {
                return false;
            }
        }
        // dot-atom portion, make sure there's no prohibited characters
        else if (preg_match('/(^\.|\.\.|\.$)/', $local_part)
            || preg_match('/[\\ ",:;<>@]/', $local_part)
        ) {
            return false;
        }

        // Validate domain part
        if (preg_match('/^\[((IPv6:[0-9a-f:.]+)|([0-9.]+))\]$/i', $domain_part, $matches)) {
            return self::check_ip(preg_replace('/^IPv6:/i', '', $matches[1])); // valid IPv4 or IPv6 address
        }
        else {
            // If not an IP address
            $domain_array = explode('.', $domain_part);
            // Not enough parts to be a valid domain
            if (count($domain_array) < 2) {
                return false;
            }

            foreach ($domain_array as $part) {
                if (!preg_match('/^((xn--)?([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]))$/', $part)) {
                    return false;
                }
            }

            // last domain part (allow extended TLD)
            $last_part = array_pop($domain_array);
            if (strpos($last_part, 'xn--') !== 0
                && (preg_match('/[^a-zA-Z0-9]/', $last_part) || preg_match('/^[0-9]+$/', $last_part))
            ) {
                return false;
            }

            $rcube = rcube::get_instance();

            if (!$dns_check || !function_exists('checkdnsrr') || !$rcube->config->get('email_dns_check')) {
                return true;
            }

            // Check DNS record(s)
            // Note: We can't use ANY (#6581)
            foreach (['A', 'MX', 'CNAME', 'AAAA'] as $type) {
                if (checkdnsrr($domain_part, $type)) {
                    return true;
                }
            }
        }

        return false;
    }

    /**
     * Validates IPv4 or IPv6 address
     *
     * @param string $ip IP address in v4 or v6 format
     *
     * @return bool True if the address is valid
     */
    public static function check_ip($ip)
    {
        return filter_var($ip, FILTER_VALIDATE_IP) !== false;
    }

    /**
     * Replacing specials characters to a specific encoding type
     *
     * @param string $str      Input string
     * @param string $enctype  Encoding type: text|html|xml|js|url
     * @param string $mode     Replace mode for tags: show|remove|strict
     * @param bool   $newlines Convert newlines
     *
     * @return string The quoted string
     */
    public static function rep_specialchars_output($str, $enctype = '', $mode = '', $newlines = true)
    {
        static $html_encode_arr = false;
        static $js_rep_table    = false;
        static $xml_rep_table   = false;

        if (!is_string($str)) {
            $str = strval($str);
        }

        // encode for HTML output
        if ($enctype == 'html') {
            if (!$html_encode_arr) {
                $html_encode_arr = get_html_translation_table(HTML_SPECIALCHARS);
                unset($html_encode_arr['?']);
            }

            $encode_arr = $html_encode_arr;

            if ($mode == 'remove') {
                $str = strip_tags($str);
            }
            else if ($mode != 'strict') {
                // don't replace quotes and html tags
                $ltpos = strpos($str, '<');
                if ($ltpos !== false && strpos($str, '>', $ltpos) !== false) {
                    unset($encode_arr['"']);
                    unset($encode_arr['<']);
                    unset($encode_arr['>']);
                    unset($encode_arr['&']);
                }
            }

            $out = strtr($str, $encode_arr);

            return $newlines ? nl2br($out) : $out;
        }

        // if the replace tables for XML and JS are not yet defined
        if ($js_rep_table === false) {
            $js_rep_table = $xml_rep_table = [];
            $xml_rep_table['&'] = '&amp;';

            // can be increased to support more charsets
            for ($c=160; $c<256; $c++) {
                $xml_rep_table[chr($c)] = "&#$c;";
            }

            $xml_rep_table['"'] = '&quot;';
            $js_rep_table['"']  = '\\"';
            $js_rep_table["'"]  = "\\'";
            $js_rep_table["\\"] = "\\\\";
            // Unicode line and paragraph separators (#1486310)
            $js_rep_table[chr(hexdec('E2')).chr(hexdec('80')).chr(hexdec('A8'))] = '&#8232;';
            $js_rep_table[chr(hexdec('E2')).chr(hexdec('80')).chr(hexdec('A9'))] = '&#8233;';
        }

        // encode for javascript use
        if ($enctype == 'js') {
            return preg_replace(["/\r?\n/", "/\r/", '/<\\//'], ['\n', '\n', '<\\/'], strtr($str, $js_rep_table));
        }

        // encode for plaintext
        if ($enctype == 'text') {
            return str_replace("\r\n", "\n", $mode == 'remove' ? strip_tags($str) : $str);
        }

        if ($enctype == 'url') {
            return rawurlencode($str);
        }

        // encode for XML
        if ($enctype == 'xml') {
            return strtr($str, $xml_rep_table);
        }

        // no encoding given -> return original string
        return $str;
    }

    /**
     * Read input value and make sure it is a string.
     *
     * @param string $fname      Field name to read
     * @param int    $source     Source to get value from (see self::INPUT_*)
     * @param bool   $allow_html Allow HTML tags in field value
     * @param string $charset    Charset to convert into
     *
     * @return string Request parameter value
     * @see self::get_input_value()
     */
    public static function get_input_string($fname, $source, $allow_html = false, $charset = null)
    {
        $value = self::get_input_value($fname, $source, $allow_html, $charset);

        return is_string($value) ? $value : '';
    }

    /**
     * Read request parameter value and convert it for internal use
     * Performs stripslashes() and charset conversion if necessary
     *
     * @param string $fname      Field name to read
     * @param int    $source     Source to get value from (see self::INPUT_*)
     * @param bool   $allow_html Allow HTML tags in field value
     * @param string $charset    Charset to convert into
     *
     * @return string|array|null Request parameter value or NULL if not set
     */
    public static function get_input_value($fname, $source, $allow_html = false, $charset = null)
    {
        $value = null;

        if (($source & self::INPUT_GET) && isset($_GET[$fname])) {
            $value = $_GET[$fname];
        }

        if (($source & self::INPUT_POST) && isset($_POST[$fname])) {
            $value = $_POST[$fname];
        }

        if (($source & self::INPUT_COOKIE) && isset($_COOKIE[$fname])) {
            $value = $_COOKIE[$fname];
        }

        return self::parse_input_value($value, $allow_html, $charset);
    }

    /**
     * Parse/validate input value. See self::get_input_value()
     * Performs stripslashes() and charset conversion if necessary
     *
     * @param string $value      Input value
     * @param bool   $allow_html Allow HTML tags in field value
     * @param string $charset    Charset to convert into
     *
     * @return string Parsed value
     */
    public static function parse_input_value($value, $allow_html = false, $charset = null)
    {
        if (empty($value)) {
            return $value;
        }

        if (is_array($value)) {
            foreach ($value as $idx => $val) {
                $value[$idx] = self::parse_input_value($val, $allow_html, $charset);
            }

            return $value;
        }

        // remove HTML tags if not allowed
        if (!$allow_html) {
            $value = strip_tags($value);
        }

        $rcube          = rcube::get_instance();
        $output_charset = is_object($rcube->output) ? $rcube->output->get_charset() : null;

        // remove invalid characters (#1488124)
        if ($output_charset == 'UTF-8') {
            $value = rcube_charset::clean($value);
        }

        // convert to internal charset
        if ($charset && $output_charset) {
            $value = rcube_charset::convert($value, $output_charset, $charset);
        }

        return $value;
    }

    /**
     * Convert array of request parameters (prefixed with _)
     * to a regular array with non-prefixed keys.
     *
     * @param int    $mode       Source to get value from (GPC)
     * @param string $ignore     PCRE expression to skip parameters by name
     * @param bool   $allow_html Allow HTML tags in field value
     *
     * @return array Hash array with all request parameters
     */
    public static function request2param($mode = null, $ignore = 'task|action', $allow_html = false)
    {
        $out = [];
        $src = $mode == self::INPUT_GET ? $_GET : ($mode == self::INPUT_POST ? $_POST : $_REQUEST);

        foreach (array_keys($src) as $key) {
            $fname = $key[0] == '_' ? substr($key, 1) : $key;
            if ($ignore && !preg_match('/^(' . $ignore . ')$/', $fname)) {
                $out[$fname] = self::get_input_value($key, $mode, $allow_html);
            }
        }

        return $out;
    }

    /**
     * Convert the given string into a valid HTML identifier
     * Same functionality as done in app.js with rcube_webmail.html_identifier()
     *
     * @param string $str    String input
     * @param bool   $encode Use base64 encoding
     *
     * @return string Valid HTML identifier
     */
    public static function html_identifier($str, $encode = false)
    {
        if ($encode) {
            return rtrim(strtr(base64_encode($str), '+/', '-_'), '=');
        }

        return asciiwords($str, true, '_');
    }

    /**
     * Replace all css definitions with #container [def]
     * and remove css-inlined scripting, make position style safe
     *
     * @param string $source       CSS source code
     * @param string $container_id Container ID to use as prefix
     * @param bool   $allow_remote Allow remote content
     * @param string $prefix       Prefix to be added to id/class identifier
     *
     * @return string Modified CSS source
     */
    public static function mod_css_styles($source, $container_id, $allow_remote = false, $prefix = '')
    {
        $last_pos     = 0;
        $replacements = new rcube_string_replacer;

        // ignore the whole block if evil styles are detected
        $source   = self::xss_entity_decode($source);
        $stripped = preg_replace('/[^a-z\(:;]/i', '', $source);
        $evilexpr = 'expression|behavior|javascript:|import[^a]' . (!$allow_remote ? '|url\((?!data:image)' : '');

        if (preg_match("/$evilexpr/i", $stripped)) {
            return '/* evil! */';
        }

        $strict_url_regexp = '!url\s*\(\s*["\']?(https?:)//[a-z0-9/._+-]+["\']?\s*\)!Uims';

        // remove html comments
        $source = preg_replace('/(^\s*<\!--)|(-->\s*$)/m', '', $source);

        // cut out all contents between { and }
        while (($pos = strpos($source, '{', $last_pos)) && ($pos2 = strpos($source, '}', $pos))) {
            $nested = strpos($source, '{', $pos+1);
            if ($nested && $nested < $pos2) { // when dealing with nested blocks (e.g. @media), take the inner one
                $pos = $nested;
            }
            $length = $pos2 - $pos - 1;
            $styles = substr($source, $pos+1, $length);
            $output = '';

            // check every css rule in the style block...
            foreach (self::parse_css_block($styles) as $rule) {
                // Remove 'page' attributes (#7604)
                if ($rule[0] == 'page') {
                    continue;
                }

                // Convert position:fixed to position:absolute (#5264)
                if ($rule[0] == 'position' && strcasecmp($rule[1], 'fixed') === 0) {
                    $rule[1] = 'absolute';
                }
                else if ($allow_remote) {
                    $stripped = preg_replace('/[^a-z\(:;]/i', '', $rule[1]);

                    // allow data:image and strict url() values only
                    if (
                        stripos($stripped, 'url(') !== false
                        && stripos($stripped, 'url(data:image') === false
                        && !preg_match($strict_url_regexp, $rule[1])
                    ) {
                        $rule[1] = '/* evil! */';
                    }
                }

                $output .= sprintf(" %s: %s;", $rule[0] , $rule[1]);
            }

            $key      = $replacements->add($output . ' ');
            $repl     = $replacements->get_replacement($key);
            $source   = substr_replace($source, $repl, $pos+1, $length);
            $last_pos = $pos2 - ($length - strlen($repl));
        }

        // add #container to each tag selector and prefix to id/class identifiers
        if ($container_id || $prefix) {
            // Exclude rcube_string_replacer pattern matches, this is needed
            // for cases like @media { body { position: fixed; } } (#5811)
            $excl     = '(?!' . substr($replacements->pattern, 1, -1) . ')';
            $regexp   = '/(^\s*|,\s*|\}\s*|\{\s*)(' . $excl . ':?[a-z0-9\._#\*\[][a-z0-9\._:\(\)#=~ \[\]"\|\>\+\$\^-]*)/im';
            $callback = function($matches) use ($container_id, $prefix) {
                $replace = $matches[2];

                if (stripos($replace, ':root') === 0) {
                    $replace = substr($replace, 5);
                }

                if ($prefix) {
                    $replace = str_replace(['.', '#'], [".$prefix", "#$prefix"], $replace);
                }

                if ($container_id) {
                    $replace = "#$container_id " . $replace;
                }

                // Remove redundant spaces (for simpler testing)
                $replace = preg_replace('/\s+/', ' ', $replace);

                return str_replace($matches[2], $replace, $matches[0]);
            };

            $source = preg_replace_callback($regexp, $callback, $source);
        }

        // replace body definition because we also stripped off the <body> tag
        if ($container_id) {
            $regexp = '/#' . preg_quote($container_id, '/') . '\s+body/i';
            $source = preg_replace($regexp, "#$container_id", $source);
        }

        // put block contents back in
        $source = $replacements->resolve($source);

        return $source;
    }

    /**
     * Explode css style. Property names will be lower-cased and trimmed.
     * Values will be trimmed. Invalid entries will be skipped.
     *
     * @param string $style CSS style
     *
     * @return array List of CSS rule pairs, e.g. [['color', 'red'], ['top', '0']]
     */
    public static function parse_css_block($style)
    {
        $pos = 0;

        // first remove comments
        while (($pos = strpos($style, '/*', $pos)) !== false) {
            $end = strpos($style, '*/', $pos+2);

            if ($end === false) {
                $style = substr($style, 0, $pos);
            }
            else {
                $style = substr_replace($style, '', $pos, $end - $pos + 2);
            }
        }

        // Replace new lines with spaces
        $style = preg_replace('/[\r\n]+/', ' ', $style);

        $style  = trim($style);
        $length = strlen($style);
        $result = [];
        $pos    = 0;

        while ($pos < $length && ($colon_pos = strpos($style, ':', $pos))) {
            // Property name
            $name = strtolower(trim(substr($style, $pos, $colon_pos - $pos)));

            // get the property value
            $q = $s = false;
            for ($i = $colon_pos + 1; $i < $length; $i++) {
                if (($style[$i] == "\"" || $style[$i] == "'") && ($i == 0 || $style[$i-1] != "\\")) {
                    if ($q == $style[$i]) {
                        $q = false;
                    }
                    else if ($q === false) {
                        $q = $style[$i];
                    }
                }
                else if ($style[$i] == "(" && !$q && ($i == 0 || $style[$i-1] != "\\")) {
                    $q = "(";
                }
                else if ($style[$i] == ")" && $q == "(" && $style[$i-1] != "\\") {
                    $q = false;
                }

                if ($q === false && (($s = $style[$i] == ';') || $i == $length - 1)) {
                    break;
                }
            }

            $value_length = $i - $colon_pos - ($s ? 1 : 0);
            $value        = trim(substr($style, $colon_pos + 1, $value_length));

            if (strlen($name) && !preg_match('/[^a-z-]/', $name) && strlen($value) && $value !== ';') {
                $result[] = [$name, $value];
            }

            $pos = $i + 1;
        }

        return $result;
    }

    /**
     * Generate CSS classes from mimetype and filename extension
     *
     * @param string $mimetype Mimetype
     * @param string $filename Filename
     *
     * @return string CSS classes separated by space
     */
    public static function file2class($mimetype, $filename)
    {
        $mimetype = strtolower($mimetype);
        $filename = strtolower($filename);

        list($primary, $secondary) = rcube_utils::explode('/', $mimetype);

        $classes = [$primary ?: 'unknown'];

        if (!empty($secondary)) {
            $classes[] = $secondary;
        }

        if (preg_match('/\.([a-z0-9]+)$/', $filename, $m)) {
            if (!in_array($m[1], $classes)) {
                $classes[] = $m[1];
            }
        }

        return implode(' ', $classes);
    }

    /**
     * Decode escaped entities used by known XSS exploits.
     * See http://downloads.securityfocus.com/vulnerabilities/exploits/26800.eml for examples
     *
     * @param string $content CSS content to decode
     *
     * @return string Decoded string
     */
    public static function xss_entity_decode($content)
    {
        $callback = function($matches) { return chr(hexdec($matches[1])); };

        $out = html_entity_decode(html_entity_decode($content));
        $out = trim(preg_replace('/(^<!--|-->$)/', '', trim($out)));
        $out = preg_replace_callback('/\\\([0-9a-f]{2,6})\s*/i', $callback, $out);
        $out = preg_replace('/\\\([^0-9a-f])/i', '\\1', $out);
        $out = preg_replace('#/\*.*\*/#Ums', '', $out);
        $out = strip_tags($out);

        return $out;
    }

    /**
     * Check if we can process not exceeding memory_limit
     *
     * @param int $need Required amount of memory
     *
     * @return bool True if memory won't be exceeded, False otherwise
     */
    public static function mem_check($need)
    {
        $mem_limit = parse_bytes(ini_get('memory_limit'));
        $memory    = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB

        return $mem_limit > 0 && $memory + $need > $mem_limit ? false : true;
    }

    /**
     * Check if working in SSL mode
     *
     * @param int  $port      HTTPS port number
     * @param bool $use_https Enables 'use_https' option checking
     *
     * @return bool True in SSL mode, False otherwise
     */
    public static function https_check($port = null, $use_https = true)
    {
        if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') {
            return true;
        }

        if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])
            && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https'
            && self::check_proxy_whitelist_ip()
        ) {
            return true;
        }

        if ($port && isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == $port) {
            return true;
        }

        if ($use_https && rcube::get_instance()->config->get('use_https')) {
            return true;
        }

        return false;
    }

    /**
     * Check if the reported REMOTE_ADDR is in the 'proxy_whitelist' config option
     */
    public static function check_proxy_whitelist_ip() {
        return in_array($_SERVER['REMOTE_ADDR'], (array) rcube::get_instance()->config->get('proxy_whitelist', []));
    }

    /**
     * Replaces hostname variables.
     *
     * @param string $name Hostname
     * @param string $host Optional IMAP hostname
     *
     * @return string Hostname
     */
    public static function parse_host($name, $host = '')
    {
        if (!is_string($name)) {
            return $name;
        }

        // %n - host
        $n = self::server_name();
        // %t - host name without first part, e.g. %n=mail.domain.tld, %t=domain.tld
        // If %n=domain.tld then %t=domain.tld as well (remains valid)
        $t = preg_replace('/^[^.]+\.(?![^.]+$)/', '', $n);
        // %d - domain name without first part (up to domain.tld)
        $d = preg_replace('/^[^.]+\.(?![^.]+$)/', '', self::server_name('HTTP_HOST'));
        // %h - IMAP host
        $h = !empty($_SESSION['storage_host']) ? $_SESSION['storage_host'] : $host;
        // %z - IMAP domain without first part, e.g. %h=imap.domain.tld, %z=domain.tld
        // If %h=domain.tld then %z=domain.tld as well (remains valid)
        $z = preg_replace('/^[^.]+\.(?![^.]+$)/', '', $h);
        // %s - domain name after the '@' from e-mail address provided at login screen.
        //      Returns FALSE if an invalid email is provided
        $s = '';
        if (strpos($name, '%s') !== false) {
            $user_email = self::idn_to_ascii(self::get_input_value('_user', self::INPUT_POST));
            $matches    = preg_match('/(.*)@([a-z0-9\.\-\[\]\:]+)/i', $user_email, $s);
            if ($matches < 1 || filter_var($s[1]."@".$s[2], FILTER_VALIDATE_EMAIL) === false) {
                return false;
            }
            $s = $s[2];
        }

        return str_replace(['%n', '%t', '%d', '%h', '%z', '%s'], [$n, $t, $d, $h, $z, $s], $name);
    }

    /**
     * Parse host specification URI.
     *
     * @param string $host       Host URI
     * @param int    $plain_port Plain port number
     * @param int    $ssl_port   SSL port number
     *
     * @return array An array with three elements (hostname, scheme, port)
     */
    public static function parse_host_uri($host, $plain_port = null, $ssl_port = null)
    {
        if (preg_match('#^(unix|ldapi)://#i', $host, $matches)) {
            return [$host, $matches[1], -1];
        }

        $url    = parse_url($host);
        $port   = $plain_port;
        $scheme = null;

        if (!empty($url['host'])) {
            $host   = $url['host'];
            $scheme = $url['scheme'] ?? null;

            if (!empty($url['port'])) {
                $port = $url['port'];
            }
            else if (
                $scheme
                && $ssl_port
                && ($scheme === 'ssl' || ($scheme != 'tls' && $scheme[strlen($scheme) - 1] === 's'))
            ) {
                // assign SSL port to ssl://, imaps://, ldaps://, but not tls://
                $port = $ssl_port;
            }
        }

        return [$host, $scheme, $port];
    }

    /**
     * Returns the server name after checking it against trusted hostname patterns.
     *
     * Returns 'localhost' and logs a warning when the hostname is not trusted.
     *
     * @param string $type       The $_SERVER key, e.g. 'HTTP_HOST', Default: 'SERVER_NAME'.
     * @param bool   $strip_port Strip port from the host name
     *
     * @return string Server name
     */
    public static function server_name($type = null, $strip_port = true)
    {
        if (!$type) {
            $type = 'SERVER_NAME';
        }

        $name     = $_SERVER[$type] ?? '';
        $rcube    = rcube::get_instance();
        $patterns = (array) $rcube->config->get('trusted_host_patterns');

        if (!empty($name)) {
            if ($strip_port) {
                $name = preg_replace('/:\d+$/', '', $name);
            }

            if (empty($patterns)) {
                return $name;
            }

            foreach ($patterns as $pattern) {
                // the pattern might be a regular expression or just a host/domain name
                if (preg_match('/[^a-zA-Z0-9.:-]/', $pattern)) {
                    if (preg_match("/$pattern/", $name)) {
                        return $name;
                    }
                }
                else if (strtolower($name) === strtolower($pattern)) {
                    return $name;
                }
            }

            $rcube->raise_error([
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Specified host is not trusted. Using 'localhost'."
                ]
                , true, false
            );
        }

        return 'localhost';
    }

    /**
     * Returns remote IP address and forwarded addresses if found
     *
     * @return string Remote IP address(es)
     */
    public static function remote_ip()
    {
        $address = $_SERVER['REMOTE_ADDR'] ?? '';

        // append the NGINX X-Real-IP header, if set
        if (!empty($_SERVER['HTTP_X_REAL_IP']) && $_SERVER['HTTP_X_REAL_IP'] != $address) {
            $remote_ip[] = 'X-Real-IP: ' . $_SERVER['HTTP_X_REAL_IP'];
        }

        // append the X-Forwarded-For header, if set
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $remote_ip[] = 'X-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
        }

        if (!empty($remote_ip)) {
            $address .= ' (' . implode(',', $remote_ip) . ')';
        }

        return $address;
    }

    /**
     * Returns the real remote IP address
     *
     * @return string Remote IP address
     */
    public static function remote_addr()
    {
        // Check if any of the headers are set first to improve performance
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) || !empty($_SERVER['HTTP_X_REAL_IP'])) {
            $proxy_whitelist = (array) rcube::get_instance()->config->get('proxy_whitelist', []);
            if (in_array($_SERVER['REMOTE_ADDR'], $proxy_whitelist)) {
                if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                    foreach (array_reverse(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])) as $forwarded_ip) {
                        $forwarded_ip = trim($forwarded_ip);
                        if (!in_array($forwarded_ip, $proxy_whitelist)) {
                            return $forwarded_ip;
                        }
                    }
                }

                if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
                    return $_SERVER['HTTP_X_REAL_IP'];
                }
            }
        }

        if (!empty($_SERVER['REMOTE_ADDR'])) {
            return $_SERVER['REMOTE_ADDR'];
        }

        return '';
    }

    /**
     * Read a specific HTTP request header.
     *
     * @param string $name Header name
     *
     * @return string|null Header value or null if not available
     */
    public static function request_header($name)
    {
        if (function_exists('apache_request_headers')) {
            $headers = apache_request_headers();
            $key     = strtoupper($name);
        }
        else {
            $headers = $_SERVER;
            $key     = 'HTTP_' . strtoupper(strtr($name, '-', '_'));
        }

        if (!empty($headers)) {
            $headers = array_change_key_case($headers, CASE_UPPER);

            return $headers[$key] ?? null;
        }
    }

    /**
     * Explode quoted string
     *
     * @param string $delimiter Delimiter expression string for preg_match()
     * @param string $string    Input string
     *
     * @return array String items
     */
    public static function explode_quoted_string($delimiter, $string)
    {
        $result = [];
        $strlen = strlen($string);

        for ($q=$p=$i=0; $i < $strlen; $i++) {
            if ($string[$i] == "\"" && (!isset($string[$i-1]) || $string[$i-1] != "\\")) {
                $q = $q ? false : true;
            }
            else if (!$q && preg_match("/$delimiter/", $string[$i])) {
                $result[] = substr($string, $p, $i - $p);
                $p = $i + 1;
            }
        }

        $result[] = (string) substr($string, $p);

        return $result;
    }

    /**
     * Improved equivalent to strtotime()
     *
     * @param string       $date     Date string
     * @param DateTimeZone $timezone Timezone to use for DateTime object
     *
     * @return int Unix timestamp
     */
    public static function strtotime($date, $timezone = null)
    {
        $date   = self::clean_datestr($date);
        $tzname = $timezone ? ' ' . $timezone->getName() : '';

        // unix timestamp
        if (is_numeric($date)) {
            return (int) $date;
        }

        // It can be very slow when provided string is not a date and very long
        if (strlen($date) > 128) {
            $date = substr($date, 0, 128);
        }

        // if date parsing fails, we have a date in non-rfc format.
        // remove token from the end and try again
        while (($ts = @strtotime($date . $tzname)) === false || $ts < 0) {
            if (($pos = strrpos($date, ' ')) === false) {
                break;
            }

            $date = rtrim(substr($date, 0, $pos));
        }

        return (int) $ts;
    }

    /**
     * Date parsing function that turns the given value into a DateTime object
     *
     * @param string       $date     Date string
     * @param DateTimeZone $timezone Timezone to use for DateTime object
     *
     * @return DateTime|false DateTime object or False on failure
     */
    public static function anytodatetime($date, $timezone = null)
    {
        if ($date instanceof DateTime) {
            return $date;
        }

        $dt   = false;
        $date = self::clean_datestr($date);

        // try to parse string with DateTime first
        if (!empty($date)) {
            try {
                $_date = preg_match('/^[0-9]+$/', $date) ? "@$date" : $date;
                $dt    = $timezone ? new DateTime($_date, $timezone) : new DateTime($_date);
            }
            catch (Exception $e) {
                // ignore
            }
        }

        // try our advanced strtotime() method
        if (!$dt && ($timestamp = self::strtotime($date, $timezone))) {
            try {
                $dt = new DateTime("@".$timestamp);
                if ($timezone) {
                    $dt->setTimezone($timezone);
                }
            }
            catch (Exception $e) {
                // ignore
            }
        }

        return $dt;
    }

    /**
     * Clean up date string for strtotime() input
     *
     * @param string $date Date string
     *
     * @return string Date string
     */
    public static function clean_datestr($date)
    {
        $date = trim((string) $date);

        // check for MS Outlook vCard date format YYYYMMDD
        if (preg_match('/^([12][90]\d\d)([01]\d)([0123]\d)$/', $date, $m)) {
            return sprintf('%04d-%02d-%02d 00:00:00', intval($m[1]), intval($m[2]), intval($m[3]));
        }

        // Clean malformed data
        $date = preg_replace(
            [
                '/\(.*\)/',                                 // remove RFC comments
                '/GMT\s*([+-][0-9]+)/',                     // support non-standard "GMTXXXX" literal
                '/[^a-z0-9\x20\x09:\/\.+-]/i',              // remove any invalid characters
                '/\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*/i',   // remove weekday names
            ],
            [
                '',
                '\\1',
                '',
                '',
            ],
            $date
        );

        $date = trim($date);

        // try to fix dd/mm vs. mm/dd discrepancy, we can't do more here
        if (preg_match('/^(\d{1,2})[.\/-](\d{1,2})[.\/-](\d{4})(\s.*)?$/', $date, $m)) {
            $mdy   = $m[2] > 12 && $m[1] <= 12;
            $day   = $mdy ? $m[2] : $m[1];
            $month = $mdy ? $m[1] : $m[2];
            $date  = sprintf('%04d-%02d-%02d%s', $m[3], $month, $day, $m[4] ?? ' 00:00:00');
        }
        // I've found that YYYY.MM.DD is recognized wrong, so here's a fix
        else if (preg_match('/^(\d{4})\.(\d{1,2})\.(\d{1,2})(\s.*)?$/', $date, $m)) {
            $date  = sprintf('%04d-%02d-%02d%s', $m[1], $m[2], $m[3], $m[4] ?? ' 00:00:00');
        }

        return $date;
    }

    /**
     * Turns the given date-only string in defined format into YYYY-MM-DD format.
     *
     * Supported formats: 'Y/m/d', 'Y.m.d', 'd-m-Y', 'd/m/Y', 'd.m.Y', 'j.n.Y'
     *
     * @param string $date   Date string
     * @param string $format Input date format
     *
     * @return string Date string in YYYY-MM-DD format, or the original string
     *                if format is not supported
     */
    public static function format_datestr($date, $format)
    {
        $format_items = preg_split('/[.-\/\\\\]/', $format);
        $date_items   = preg_split('/[.-\/\\\\]/', $date);
        $iso_format   = '%04d-%02d-%02d';

        if (count($format_items) == 3 && count($date_items) == 3) {
            if ($format_items[0] == 'Y') {
                $date = sprintf($iso_format, $date_items[0], $date_items[1], $date_items[2]);
            }
            else if (strpos('dj', $format_items[0]) !== false) {
                $date = sprintf($iso_format, $date_items[2], $date_items[1], $date_items[0]);
            }
            else if (strpos('mn', $format_items[0]) !== false) {
                $date = sprintf($iso_format, $date_items[2], $date_items[0], $date_items[1]);
            }
        }

        return $date;
    }

    /**
     * Wrapper for idn_to_ascii with support for e-mail address.
     *
     * Warning: Domain names may be lowercase'd.
     * Warning: An empty string may be returned on invalid domain.
     *
     * @param string $str Decoded e-mail address
     *
     * @return string Encoded e-mail address
     */
    public static function idn_to_ascii($str)
    {
        return self::idn_convert($str, true);
    }

    /**
     * Wrapper for idn_to_utf8 with support for e-mail address
     *
     * @param string $str Decoded e-mail address
     *
     * @return string Encoded e-mail address
     */
    public static function idn_to_utf8($str)
    {
        return self::idn_convert($str, false);
    }

    /**
     * Convert a string to ascii or utf8 (using IDNA standard)
     *
     * @param string $input  Decoded e-mail address
     * @param bool   $is_utf Convert by idn_to_ascii if true and idn_to_utf8 if false
     *
     * @return string Encoded e-mail address
     */
    public static function idn_convert($input, $is_utf = false)
    {
        if ($at = strpos($input, '@')) {
            $user   = substr($input, 0, $at);
            $domain = substr($input, $at + 1);
        }
        else {
            $user   = '';
            $domain = $input;
        }

        // Note that in PHP 7.2/7.3 calling idn_to_* functions with default arguments
        // throws a warning, so we have to set the variant explicitly (#6075)
        $variant = INTL_IDNA_VARIANT_UTS46;
        $options = 0;

        // Because php-intl extension lowercases domains and return false
        // on invalid input (#6224), we skip conversion when not needed

        if ($is_utf) {
            if (preg_match('/[^\x20-\x7E]/', $domain)) {
                $options = IDNA_NONTRANSITIONAL_TO_ASCII;
                $domain  = idn_to_ascii($domain, $options, $variant);
            }
        }
        else if (preg_match('/(^|\.)xn--/i', $domain)) {
            $options = IDNA_NONTRANSITIONAL_TO_UNICODE;
            $domain  = idn_to_utf8($domain, $options, $variant);
        }

        if ($domain === false) {
            return '';
        }

        return $at ? $user . '@' . $domain : $domain;
    }

    /**
     * Split the given string into word tokens
     *
     * @param string $str     Input to tokenize
     * @param int    $minlen  Minimum length of a single token
     *
     * @return array List of tokens
     */
    public static function tokenize_string($str, $minlen = 2)
    {
        if (!is_string($str)) {
            return [];
        }

        $expr = ['/[\s;,"\'\/+-]+/ui', '/(\d)[-.\s]+(\d)/u'];
        $repl = [' ', '\\1\\2'];

        if ($minlen > 1) {
            $minlen--;
            $expr[] = "/(^|\s+)\w{1,$minlen}(\s+|$)/u";
            $repl[] = ' ';
        }

        $str = preg_replace($expr, $repl, $str);

        return is_string($str) ? array_filter(explode(" ", $str)) : [];
    }

    /**
     * Normalize the given string for fulltext search.
     * Currently only optimized for ISO-8859-1 and ISO-8859-2 characters; to be extended
     *
     * @param string $str      Input string (UTF-8)
     * @param bool   $as_array True to return list of words as array
     * @param int    $minlen   Minimum length of tokens
     *
     * @return string|array Normalized string or a list of normalized tokens
     */
    public static function normalize_string($str, $as_array = false, $minlen = 2)
    {
        // replace 4-byte unicode characters with '?' character,
        // these are not supported in default utf-8 charset on mysql,
        // the chance we'd need them in searching is very low
        $str = preg_replace('/('
            . '\xF0[\x90-\xBF][\x80-\xBF]{2}'
            . '|[\xF1-\xF3][\x80-\xBF]{3}'
            . '|\xF4[\x80-\x8F][\x80-\xBF]{2}'
            . ')/', '?', $str);

        // split by words
        $arr = self::tokenize_string($str, $minlen);

        // detect character set
        if (rcube_charset::convert(rcube_charset::convert($str, 'UTF-8', 'ISO-8859-1'), 'ISO-8859-1', 'UTF-8') == $str)  {
            // ISO-8859-1 (or ASCII)
            preg_match_all('/./u', 'äâàåáãæçéêëèïîìíñöôòøõóüûùúýÿ', $keys);
            preg_match_all('/./',  'aaaaaaaceeeeiiiinoooooouuuuyy', $values);

            $mapping = array_combine($keys[0], $values[0]);
            $mapping = array_merge($mapping, ['ß' => 'ss', 'ae' => 'a', 'oe' => 'o', 'ue' => 'u']);
        }
        else if (rcube_charset::convert(rcube_charset::convert($str, 'UTF-8', 'ISO-8859-2'), 'ISO-8859-2', 'UTF-8') == $str) {
            // ISO-8859-2
            preg_match_all('/./u', 'ąáâäćçčéęëěíîłľĺńňóôöŕřśšşťţůúűüźžżý', $keys);
            preg_match_all('/./',  'aaaaccceeeeiilllnnooorrsssttuuuuzzzy', $values);

            $mapping = array_combine($keys[0], $values[0]);
            $mapping = array_merge($mapping, ['ß' => 'ss', 'ae' => 'a', 'oe' => 'o', 'ue' => 'u']);
        }

        foreach ($arr as $i => $part) {
            $part = mb_strtolower($part);

            if (!empty($mapping)) {
                $part = strtr($part, $mapping);
            }

            $arr[$i] = $part;
        }

        return $as_array ? $arr : implode(' ', $arr);
    }

    /**
     * Compare two strings for matching words (order not relevant)
     *
     * @param string $haystack Haystack
     * @param string $needle   Needle
     *
     * @return bool True if match, False otherwise
     */
    public static function words_match($haystack, $needle)
    {
        $a_needle  = self::tokenize_string($needle, 1);
        $_haystack = implode(' ', self::tokenize_string($haystack, 1));
        $valid     = strlen($_haystack) > 0;
        $hits      = 0;

        foreach ($a_needle as $w) {
            if ($valid) {
                if (stripos($_haystack, $w) !== false) {
                    $hits++;
                }
            }
            else if (stripos($haystack, $w) !== false) {
                $hits++;
            }
        }

        return $hits >= count($a_needle);
    }

    /**
     * Parse commandline arguments into a hash array
     *
     * @param array $aliases Argument alias names
     *
     * @return array Argument values hash
     */
    public static function get_opt($aliases = [])
    {
        $args = [];
        $bool = [];

        // find boolean (no value) options
        foreach ($aliases as $key => $alias) {
            if ($pos = strpos($alias, ':')) {
                $aliases[$key] = substr($alias, 0, $pos);
                $bool[] = $key;
                $bool[] = $aliases[$key];
            }
        }

        for ($i=1; $i < count($_SERVER['argv']); $i++) {
            $arg   = $_SERVER['argv'][$i];
            $value = true;
            $key   = null;

            if (strlen($arg) && $arg[0] == '-') {
                $key = preg_replace('/^-+/', '', $arg);
                $sp  = strpos($arg, '=');

                if ($sp > 0) {
                    $key   = substr($key, 0, $sp - 2);
                    $value = substr($arg, $sp+1);
                }
                else if (in_array($key, $bool)) {
                    $value = true;
                }
                else if (
                    isset($_SERVER['argv'][$i + 1])
                    && strlen($_SERVER['argv'][$i + 1])
                    && $_SERVER['argv'][$i + 1][0] != '-'
                ) {
                    $value = $_SERVER['argv'][++$i];
                }

                $args[$key] = is_string($value) ? preg_replace(['/^["\']/', '/["\']$/'], '', $value) : $value;
            }
            else {
                $args[] = $arg;
            }

            if (!empty($aliases[$key])) {
                $alias = $aliases[$key];
                $args[$alias] = $args[$key];
            }
        }

        return $args;
    }

    /**
     * Safe password prompt for command line
     * from http://blogs.sitepoint.com/2009/05/01/interactive-cli-password-prompt-in-php/
     *
     * @param string $prompt Prompt text
     *
     * @return string Password
     */
    public static function prompt_silent($prompt = "Password:")
    {
        if (preg_match('/^win/i', PHP_OS)) {
            $vbscript  = sys_get_temp_dir() . 'prompt_password.vbs';
            $vbcontent = 'wscript.echo(InputBox("' . addslashes($prompt) . '", "", "password here"))';
            file_put_contents($vbscript, $vbcontent);

            $command  = "cscript //nologo " . escapeshellarg($vbscript);
            $password = rtrim(shell_exec($command));
            unlink($vbscript);

            return $password;
        }

        $command = "/usr/bin/env bash -c 'echo OK'";

        if (rtrim(shell_exec($command)) !== 'OK') {
            echo $prompt;
            $pass = trim(fgets(STDIN));
            echo chr(8)."\r" . $prompt . str_repeat("*", strlen($pass))."\n";

            return $pass;
        }

        $command  = "/usr/bin/env bash -c 'read -s -p \"" . addslashes($prompt) . "\" mypassword && echo \$mypassword'";
        $password = rtrim(shell_exec($command));
        echo "\n";

        return $password;
    }

    /**
     * Find out if the string content means true or false
     *
     * @param string $str Input value
     *
     * @return bool Boolean value
     */
    public static function get_boolean($str)
    {
        $str = strtolower((string) $str);

        return !in_array($str, ['false', '0', 'no', 'off', 'nein', ''], true);
    }

    /**
     * OS-dependent absolute path detection
     *
     * @param string $path File path
     *
     * @return bool True if the path is absolute, False otherwise
     */
    public static function is_absolute_path($path)
    {
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
            return (bool) preg_match('!^[a-z]:[\\\\/]!i', $path);
        }

        return isset($path[0]) && $path[0] == '/';
    }

    /**
     * Resolve relative URL
     *
     * @param string $url Relative URL
     *
     * @return string Absolute URL
     */
    public static function resolve_url($url)
    {
        // prepend protocol://hostname:port
        if (!preg_match('|^https?://|', $url)) {
            $schema       = 'http';
            $default_port = 80;

            if (self::https_check()) {
                $schema       = 'https';
                $default_port = 443;
            }

            $host = $_SERVER['HTTP_HOST'] ?? '';
            $port = $_SERVER['SERVER_PORT'] ?? 0;

            $prefix = $schema . '://' . preg_replace('/:\d+$/', '', $host);
            if ($port && $port != $default_port && $port != 80) {
                $prefix .= ':' . $port;
            }

            $url = $prefix . ($url[0] == '/' ? '' : '/') . $url;
        }

        return $url;
    }

    /**
     * Generate a random string
     *
     * @param int  $length String length
     * @param bool $raw    Return RAW data instead of ascii
     *
     * @return string The generated random string
     */
    public static function random_bytes($length, $raw = false)
    {
        // Use PHP7 true random generator
        if ($raw) {
            return random_bytes($length);
        }

        $hextab  = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $tabsize = strlen($hextab);

        $result = '';
        while ($length-- > 0) {
            $result .= $hextab[random_int(0, $tabsize - 1)];
        }

        return $result;
    }

    /**
     * Convert binary data into readable form (containing a-zA-Z0-9 characters)
     *
     * @param string $input Binary input
     *
     * @return string Readable output (Base62)
     * @deprecated since 1.3.1
     */
    public static function bin2ascii($input)
    {
        $hextab = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $result = '';

        for ($x = 0; $x < strlen($input); $x++) {
            $result .= $hextab[ord($input[$x]) % 62];
        }

        return $result;
    }

    /**
     * Format current date according to specified format.
     * This method supports microseconds (u).
     *
     * @param string $format Date format (default: 'd-M-Y H:i:s O')
     *
     * @return string Formatted date
     */
    public static function date_format($format = null)
    {
        if (empty($format)) {
            $format = 'd-M-Y H:i:s O';
        }

        if (strpos($format, 'u') !== false) {
            $dt = number_format(microtime(true), 6, '.', '');

            try {
                $date = date_create_from_format('U.u', $dt);
                $date->setTimeZone(new DateTimeZone(date_default_timezone_get()));

                return $date->format($format);
            }
            catch (Exception $e) {
                // ignore, fallback to date()
            }
        }

        return date($format);
    }

    /**
     * Parses socket options and returns options for specified hostname.
     *
     * @param array  &$options Configured socket options
     * @param string $host     Hostname
     */
    public static function parse_socket_options(&$options, $host = null)
    {
        if (empty($host) || empty($options)) {
            return;
        }

        // get rid of schema and port from the hostname
        $host_url = parse_url($host);
        if (isset($host_url['host'])) {
            $host = $host_url['host'];
        }

        // find per-host options
        if ($host && array_key_exists($host, $options)) {
            $options = $options[$host];
        }
    }

    /**
     * Get maximum upload size
     *
     * @return int Maximum size in bytes
     */
    public static function max_upload_size()
    {
        // find max filesize value
        $max_filesize = parse_bytes(ini_get('upload_max_filesize'));
        $max_postsize = parse_bytes(ini_get('post_max_size'));

        if ($max_postsize && $max_postsize < $max_filesize) {
            $max_filesize = $max_postsize;
        }

        return $max_filesize;
    }

    /**
     * Detect and log last PREG operation error
     *
     * @param array $error     Error data (line, file, code, message)
     * @param bool  $terminate Stop script execution
     *
     * @return bool True on error, False otherwise
     */
    public static function preg_error($error = [], $terminate = false)
    {
        if (($preg_error = preg_last_error()) != PREG_NO_ERROR) {
            $errstr = "PCRE Error: $preg_error.";

            if (function_exists('preg_last_error_msg')) {
                $errstr .= ' ' . preg_last_error_msg();
            }

            if ($preg_error == PREG_BACKTRACK_LIMIT_ERROR) {
                $errstr .= " Consider raising pcre.backtrack_limit!";
            }
            if ($preg_error == PREG_RECURSION_LIMIT_ERROR) {
                $errstr .= " Consider raising pcre.recursion_limit!";
            }

            $error = array_merge(['code' => 620, 'line' => __LINE__, 'file' => __FILE__], $error);

            if (!empty($error['message'])) {
                $error['message'] .= ' ' . $errstr;
            }
            else {
                $error['message'] = $errstr;
            }

            rcube::raise_error($error, true, $terminate);

            return true;
        }

        return false;
    }

    /**
     * Generate a temporary file path in the Roundcube temp directory
     *
     * @param string $file_name String identifier for the type of temp file
     * @param bool   $unique    Generate unique file names based on $file_name
     * @param bool   $create    Create the temp file or not
     *
     * @return string temporary file path
     */
    public static function temp_filename($file_name, $unique = true, $create = true)
    {
        $temp_dir = rcube::get_instance()->config->get('temp_dir');

        // Fall back to system temp dir if configured dir is not writable
        if (!is_writable($temp_dir)) {
            $temp_dir = sys_get_temp_dir();
        }

        // On Windows tempnam() uses only the first three characters of prefix so use uniqid() and manually add the prefix
        // Full prefix is required for garbage collection to recognise the file
        $temp_file = $unique ? str_replace('.', '', uniqid($file_name, true)) : $file_name;
        $temp_path = unslashify($temp_dir) . '/' . RCUBE_TEMP_FILE_PREFIX . $temp_file;

        // Sanity check for unique file name
        if ($unique && file_exists($temp_path)) {
            return self::temp_filename($file_name, $unique, $create);
        }

        // Create the file to prevent possible race condition like tempnam() does
        if ($create) {
            touch($temp_path);
        }

        return $temp_path;
    }

    /**
     * Clean the subject from reply and forward prefix
     * 
     * @param string $subject Subject to clean
     * @param string $mode Mode of cleaning : reply, forward or both
     * 
     * @return string Cleaned subject
     */
    public static function remove_subject_prefix($subject, $mode = 'both')
    {
        $config = rcmail::get_instance()->config;

        // Clean subject prefix for reply, forward or both
        if ($mode == 'both') {
            $reply_prefixes = $config->get('subject_reply_prefixes', ['Re:']);
            $forward_prefixes = $config->get('subject_forward_prefixes', ['Fwd:', 'Fw:']);
            $prefixes = array_merge($reply_prefixes, $forward_prefixes);
        }
        else if ($mode == 'reply') {
            $prefixes = $config->get('subject_reply_prefixes', ['Re:']);
            // replace (was: ...) (#1489375)
            $subject = preg_replace('/\s*\([wW]as:[^\)]+\)\s*$/', '', $subject);
        }
        else if ($mode == 'forward') {
            $prefixes = $config->get('subject_forward_prefixes', ['Fwd:', 'Fw:']);
        }

        // replace Re:, Re[x]:, Re-x (#1490497)
        $pieces = array_map(function($prefix) {
            $prefix = strtolower(str_replace(':', '', $prefix));
            return "$prefix:|$prefix\[\d\]:|$prefix-\d:";
        }, $prefixes);
        $pattern = '/^('.implode('|', $pieces).')\s*/i';
        do {
            $subject = preg_replace($pattern, '', $subject, -1, $count);
        }
        while ($count);

        return trim($subject);
    }
}
lib/Roundcube/rcube_imap_search.php000064400000021655151727150640013425 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Execute (multi-threaded) searches in multiple IMAP folders          |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to control search jobs on multiple IMAP folders.
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_imap_search
{
    /** @var array IMAP connection options */
    public $options = [];

    /** @var rcube_imap_search_job[] Search jobs */
    protected $jobs = [];

    /** @var int Time limit in seconds */
    protected $timelimit = 0;

    /** @var array Search results */
    protected $results;

    /** @var rcube_imap_generic IMAP connection object */
    protected $conn;

    /**
     * Default constructor
     *
     * @param array              $options IMAP connection options
     * @param rcube_imap_generic $conn    IMAP connection object
     */
    public function __construct($options, $conn)
    {
        $this->options = $options;
        $this->conn    = $conn;
    }

    /**
     * Invoke search request to IMAP server
     *
     * @param array  $folders    List of IMAP folders to search in
     * @param string $str        Search criteria
     * @param string $charset    Search charset
     * @param string $sort_field Header field to sort by
     * @param bool   $threading  True if threaded listing is active
     */
    public function exec($folders, $str, $charset = null, $sort_field = null, $threading = null)
    {
        $start   = floor(microtime(true));
        $results = new rcube_result_multifolder($folders);

        // start a search job for every folder to search in
        foreach ($folders as $folder) {
            // a complete result for this folder already exists
            $result = $this->results ? $this->results->get_set($folder) : false;
            if ($result && !$result->incomplete) {
                $results->add($result);
            }
            else {
                $search = is_array($str) && $str[$folder] ? $str[$folder] : $str;
                $job = new rcube_imap_search_job($folder, $search, $charset, $sort_field, $threading);
                $job->worker = $this;
                $this->jobs[] = $job;
            }
        }

        // execute jobs and gather results
        foreach ($this->jobs as $job) {
            // only run search if within the configured time limit
            // TODO: try to estimate the required time based on folder size and previous search performance
            if (!$this->timelimit || floor(microtime(true)) - $start < $this->timelimit) {
                $job->run();
            }

            // add result (may have ->incomplete flag set)
            $results->add($job->get_result());
        }

        return $results;
    }

    /**
     * Setter for timelimit property
     *
     * @param int $seconds Limit in seconds
     */
    public function set_timelimit($seconds)
    {
        $this->timelimit = $seconds;
    }

    /**
     * Setter for previous (potentially incomplete) search results
     *
     * @param array $res Search result
     */
    public function set_results($res)
    {
        $this->results = $res;
    }

    /**
     * Get connection to the IMAP server (used for single-thread mode)
     *
     * @return rcube_imap_generic IMAP connection object
     */
    public function get_imap()
    {
        return $this->conn;
    }
}


/**
 * Stackable item to run the search on a specific IMAP folder
 */
class rcube_imap_search_job /* extends Stackable */
{
    /** @var rcube_imap_search The job worker */
    public $worker;

    /** @var string IMAP folder to search in */
    private $folder;

    /** @var string Search criteria */
    private $search;

    /** @var string Search charset */
    private $charset;

    /** @var string Header field to sort by */
    private $sort_field;

    /** @var bool True if threaded listing is active */
    private $threading;

    /** @var rcube_result_index|rcube_result_thread Search result */
    private $result;

    /**
     * Class constructor
     *
     * @param string $folder     IMAP folder to search in
     * @param string $str        Search criteria
     * @param string $charset    Search charset
     * @param string $sort_field Header field to sort by
     * @param bool   $threading  True if threaded listing is active
     */
    public function __construct($folder, $str, $charset = null, $sort_field = null, $threading = false)
    {
        $this->folder     = $folder;
        $this->search     = $str;
        $this->charset    = $charset;
        $this->sort_field = $sort_field;
        $this->threading  = $threading;

        $this->result = new rcube_result_index($folder);
        $this->result->incomplete = true;
    }

    /**
     * Executes the IMAP search
     */
    public function run()
    {
        $this->result = $this->search_index();
    }

    /**
     * Copy of rcube_imap::search_index()
     *
     * @return rcube_result_index|rcube_result_thread Search result
     */
    protected function search_index()
    {
        $criteria = $this->search;
        $charset  = $this->charset;
        $imap     = $this->worker->get_imap();

        if (!$imap->connected()) {
            trigger_error("No IMAP connection for $this->folder", E_USER_WARNING);

            if ($this->threading) {
                return new rcube_result_thread($this->folder);
            }
            else {
                return new rcube_result_index($this->folder);
            }
        }

        if ($this->worker->options['skip_deleted'] && !preg_match('/UNDELETED/', $criteria)) {
            $criteria = 'UNDELETED '.$criteria;
        }

        // unset CHARSET if criteria string is ASCII, this way
        // SEARCH won't be re-sent after "unsupported charset" response
        if ($charset && $charset != 'US-ASCII' && is_ascii($criteria)) {
            $charset = 'US-ASCII';
        }

        if ($this->threading) {
            $threads = $imap->thread($this->folder, $this->threading, $criteria, true, $charset);

            // Error, try with US-ASCII (RFC5256: SORT/THREAD must support US-ASCII and UTF-8,
            // but I've seen that Courier doesn't support UTF-8)
            if ($threads->is_error() && $charset && $charset != 'US-ASCII') {
                $threads = $imap->thread($this->folder, $this->threading,
                    rcube_imap::convert_criteria($criteria, $charset), true, 'US-ASCII');
            }

            return $threads;
        }

        if ($this->sort_field) {
            $messages = $imap->sort($this->folder, $this->sort_field, $criteria, true, $charset);

            // Error, try with US-ASCII (RFC5256: SORT/THREAD must support US-ASCII and UTF-8,
            // but I've seen Courier with disabled UTF-8 support)
            if ($messages->is_error() && $charset && $charset != 'US-ASCII') {
                $messages = $imap->sort($this->folder, $this->sort_field,
                    rcube_imap::convert_criteria($criteria, $charset), true, 'US-ASCII');
            }
        }

        if (empty($messages) || $messages->is_error()) {
            $messages = $imap->search($this->folder,
                ($charset && $charset != 'US-ASCII' ? "CHARSET $charset " : '') . $criteria, true);

            // Error, try with US-ASCII (some servers may support only US-ASCII)
            if ($messages->is_error() && $charset && $charset != 'US-ASCII') {
                $messages = $imap->search($this->folder,
                    rcube_imap::convert_criteria($criteria, $charset), true);
            }
        }

        return $messages;
    }

    /**
     * Return the saved search set as a array
     *
     * @return array Search set
     */
    public function get_search_set()
    {
        return [
            $this->search,
            $this->result,
            $this->charset,
            $this->sort_field,
            $this->threading,
        ];
    }

    /**
     * Returns the search result.
     *
     * @return rcube_result_index|rcube_result_thread Search result
     */
    public function get_result()
    {
        return $this->result;
    }
}
lib/Roundcube/rcube_result_thread.php000064400000051656151727150640014023 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   THREAD response handler                                             |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for accessing IMAP's THREAD result
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_result_thread
{
    public $incomplete = false;

    protected $raw_data;
    protected $mailbox;
    protected $meta  = [];
    protected $order = 'ASC';

    const SEPARATOR_ELEMENT = ' ';
    const SEPARATOR_ITEM    = '~';
    const SEPARATOR_LEVEL   = ':';


    /**
     * Object constructor.
     */
    public function __construct($mailbox = null, $data = null)
    {
        $this->mailbox = $mailbox;
        $this->init($data);
    }

    /**
     * Initializes object with IMAP command response
     *
     * @param string $data IMAP response string
     */
    public function init($data = null)
    {
        $this->meta = [];

        $data = explode('*', (string) $data);

        // ...skip unilateral untagged server responses
        for ($i = 0, $len = count($data); $i < $len; $i++) {
            if (preg_match('/^ THREAD/i', $data[$i])) {
                // valid response, initialize raw_data for is_error()
                $this->raw_data = '';
                $data[$i] = substr($data[$i], 7);
                break;
            }

            unset($data[$i]);
        }

        if (empty($data)) {
            return;
        }

        $data = array_first($data);
        $data = trim($data);
        $data = preg_replace('/[\r\n]/', '', $data);
        $data = preg_replace('/\s+/', ' ', $data);

        $this->raw_data = empty($data) ? '' : $this->parse_thread($data);
    }

    /**
     * Checks the result from IMAP command
     *
     * @return bool True if the result is an error, False otherwise
     */
    public function is_error()
    {
        return $this->raw_data === null;
    }

    /**
     * Checks if the result is empty
     *
     * @return bool True if the result is empty, False otherwise
     */
    public function is_empty()
    {
        return empty($this->raw_data);
    }

    /**
     * Returns number of elements (threads) in the result
     *
     * @return int Number of elements
     */
    public function count()
    {
        if (isset($this->meta['count'])) {
            return $this->meta['count'];
        }

        if (empty($this->raw_data)) {
            $this->meta['count'] = 0;
        }
        else {
            $this->meta['count'] = 1 + substr_count($this->raw_data, self::SEPARATOR_ELEMENT);
        }

        if (!$this->meta['count']) {
            $this->meta['messages'] = 0;
        }

        return $this->meta['count'];
    }

    /**
     * Returns number of all messages in the result
     *
     * @return int Number of elements
     */
    public function count_messages()
    {
        if (isset($this->meta['messages'])) {
            return $this->meta['messages'];
        }

        if (empty($this->raw_data)) {
            $this->meta['messages'] = 0;
        }
        else {
            $this->meta['messages'] = 1
                + substr_count($this->raw_data, self::SEPARATOR_ELEMENT)
                + substr_count($this->raw_data, self::SEPARATOR_ITEM);
        }

        if ($this->meta['messages'] == 0 || $this->meta['messages'] == 1) {
            $this->meta['count'] = $this->meta['messages'];
        }

        return $this->meta['messages'];
    }

    /**
     * Returns maximum message identifier in the result
     *
     * @return int|null Maximum message identifier
     */
    public function max()
    {
        if ($this->is_empty()) {
            return null;
        }

        if (!isset($this->meta['max'])) {
            $this->meta['max'] = (int) @max($this->get());
        }

        return $this->meta['max'];
    }

    /**
     * Returns minimum message identifier in the result
     *
     * @return int|null Minimum message identifier
     */
    public function min()
    {
        if ($this->is_empty()) {
            return null;
        }

        if (!isset($this->meta['min'])) {
            $this->meta['min'] = (int) @min($this->get());
        }

        return $this->meta['min'];
    }

    /**
     * Slices data set.
     *
     * @param int $offset Offset (as for PHP's array_slice())
     * @param int $length Number of elements (as for PHP's array_slice())
     */
    public function slice($offset, $length)
    {
        $data = explode(self::SEPARATOR_ELEMENT, $this->raw_data);
        $data = array_slice($data, $offset, $length);

        $this->meta          = [];
        $this->meta['count'] = count($data);
        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
    }

    /**
     * Filters data set. Removes threads not listed in $roots list.
     *
     * @param array $roots List of IDs of thread roots.
     */
    public function filter($roots)
    {
        $datalen = strlen($this->raw_data);
        $roots   = array_flip($roots);
        $result  = '';
        $start   = 0;

        $this->meta = ['count' => 0];

        while ($start < $datalen
            && (($pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start)) !== false
                || ($pos = $datalen))
        ) {
            $len   = $pos - $start;
            $elem  = substr($this->raw_data, $start, $len);
            $start = $pos + 1;

            // extract root message ID
            if ($npos = strpos($elem, self::SEPARATOR_ITEM)) {
                $root = (int) substr($elem, 0, $npos);
            }
            else {
                $root = $elem;
            }

            if (isset($roots[$root])) {
                $this->meta['count']++;
                $result .= self::SEPARATOR_ELEMENT . $elem;
            }
        }

        $this->raw_data = ltrim($result, self::SEPARATOR_ELEMENT);
    }

    /**
     * Reverts order of elements in the result
     */
    public function revert()
    {
        $this->order = $this->order == 'ASC' ? 'DESC' : 'ASC';

        if (empty($this->raw_data)) {
            return;
        }

        $data = explode(self::SEPARATOR_ELEMENT, $this->raw_data);
        $data = array_reverse($data);
        $this->raw_data = implode(self::SEPARATOR_ELEMENT, $data);

        $this->meta['pos'] = [];
    }

    /**
     * Check if the given message ID exists in the object
     *
     * @param int $msgid Message ID
     * @param bool $get_index When enabled element's index will be returned.
     *                        Elements are indexed starting with 0
     *
     * @return bool True on success, False if message ID doesn't exist
     */
    public function exists($msgid, $get_index = false)
    {
        $msgid = (int) $msgid;
        $begin = implode('|', [
            '^',
            preg_quote(self::SEPARATOR_ELEMENT, '/'),
            preg_quote(self::SEPARATOR_LEVEL, '/'),
        ]);
        $end = implode('|', [
            '$',
            preg_quote(self::SEPARATOR_ELEMENT, '/'),
            preg_quote(self::SEPARATOR_ITEM, '/'),
        ]);

        if (preg_match("/($begin)$msgid($end)/", $this->raw_data, $m,
            $get_index ? PREG_OFFSET_CAPTURE : 0)
        ) {
            if ($get_index) {
                $idx = 0;
                if ($m[0][1]) {
                    $idx = substr_count($this->raw_data, self::SEPARATOR_ELEMENT, 0, $m[0][1]+1)
                        + substr_count($this->raw_data, self::SEPARATOR_ITEM, 0, $m[0][1]+1);
                }
                // cache position of this element, so we can use it in get_element()
                $this->meta['pos'][$idx] = (int)$m[0][1];

                return $idx;
            }
            return true;
        }

        return false;
    }

    /**
     * Return IDs of all messages in the result. Threaded data will be flattened.
     *
     * @return array List of message identifiers
     */
    public function get()
    {
        if (empty($this->raw_data)) {
            return [];
        }

        $regexp = '/(' . preg_quote(self::SEPARATOR_ELEMENT, '/')
            . '|' . preg_quote(self::SEPARATOR_ITEM, '/') . '[0-9]+' . preg_quote(self::SEPARATOR_LEVEL, '/')
            .')/';

        return preg_split($regexp, $this->raw_data);
    }

    /**
     * Return all messages in the result.
     *
     * @return array List of message identifiers
     */
    public function get_compressed()
    {
        if (empty($this->raw_data)) {
            return '';
        }

        return rcube_imap_generic::compressMessageSet($this->get());
    }

    /**
     * Return result element at specified index (all messages, not roots)
     *
     * @param int|string  $index  Element's index or "FIRST" or "LAST"
     *
     * @return int Element value
     */
    public function get_element($index)
    {
        $count = $this->count();

        if (!$count) {
            return null;
        }

        // first element
        if ($index === 0 || $index === '0' || $index === 'FIRST') {
            preg_match('/^([0-9]+)/', $this->raw_data, $m);
            $result = (int) $m[1];
            return $result;
        }

        // last element
        if ($index === 'LAST' || $index == $count-1) {
            preg_match('/([0-9]+)$/', $this->raw_data, $m);
            $result = (int) $m[1];
            return $result;
        }

        // do we know the position of the element or the neighbour of it?
        if (!empty($this->meta['pos'])) {
            $element = preg_quote(self::SEPARATOR_ELEMENT, '/');
            $item    = preg_quote(self::SEPARATOR_ITEM, '/') . '[0-9]+' . preg_quote(self::SEPARATOR_LEVEL, '/') .'?';
            $regexp  = '(' . $element . '|' . $item . ')';

            if (isset($this->meta['pos'][$index])) {
                if (preg_match('/([0-9]+)/', $this->raw_data, $m, null, $this->meta['pos'][$index])) {
                    $result = $m[1];
                }
            }
            else if (isset($this->meta['pos'][$index-1])) {
                // get chunk of data after previous element
                $data = substr($this->raw_data, $this->meta['pos'][$index-1]+1, 50);
                $data = preg_replace('/^[0-9]+/', '', $data); // remove UID at $index position
                $data = preg_replace("/^$regexp/", '', $data); // remove separator
                if (preg_match('/^([0-9]+)/', $data, $m)) {
                    $result = $m[1];
                }
            }
            else if (isset($this->meta['pos'][$index+1])) {
                // get chunk of data before next element
                $pos  = max(0, $this->meta['pos'][$index+1] - 50);
                $len  = min(50, $this->meta['pos'][$index+1]);
                $data = substr($this->raw_data, $pos, $len);
                $data = preg_replace("/$regexp\$/", '', $data); // remove separator

                if (preg_match('/([0-9]+)$/', $data, $m)) {
                    $result = $m[1];
                }
            }

            if (isset($result)) {
                return (int) $result;
            }
        }

        // Finally use less effective method
        $data = $this->get();

        return $data[$index] ?? null;
    }

    /**
     * Returns response parameters e.g. MAILBOX, ORDER
     *
     * @param string $param Parameter name
     *
     * @return array|string Response parameters or parameter value
     */
    public function get_parameters($param=null)
    {
        $params = [
            'MAILBOX' => $this->mailbox,
            'ORDER'   => $this->order,
        ];

        if ($param !== null) {
            return $params[$param];
        }

        return $params;
    }

    /**
     * THREAD=REFS sorting implementation (based on provided index)
     *
     * @param rcube_result_index $index Sorted message identifiers
     */
    public function sort($index)
    {
        $this->order = $index->get_parameters('ORDER');

        if (empty($this->raw_data)) {
            return;
        }

        // when sorting search result it's good to make the index smaller
        if ($index->count() != $this->count_messages()) {
            $index->filter($this->get());
        }

        $result  = array_fill_keys($index->get(), null);
        $datalen = strlen($this->raw_data);
        $start   = 0;

        // Here we're parsing raw_data twice, we want only one big array
        // in memory at a time

        // Assign roots
        while (
            ($start < $datalen && ($pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start)))
            || ($start < $datalen && ($pos = $datalen))
        ) {
            $len   = $pos - $start;
            $elem  = substr($this->raw_data, $start, $len);
            $start = $pos + 1;

            $items = explode(self::SEPARATOR_ITEM, $elem);
            $root  = (int) array_shift($items);

            if ($root) {
                $result[$root] = $root;
                foreach ($items as $item) {
                    list($lv, $id) = explode(self::SEPARATOR_LEVEL, $item);
                    $result[$id] = $root;
                }
            }
        }

        // get only unique roots
        $result = array_filter($result); // make sure there are no nulls
        $result = array_unique($result);

        // Re-sort raw data
        $result = array_fill_keys($result, null);
        $start = 0;

        while (
            ($start < $datalen && ($pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start)))
            || ($start < $datalen && ($pos = $datalen))
        ) {
            $len   = $pos - $start;
            $elem  = substr($this->raw_data, $start, $len);
            $start = $pos + 1;

            $npos = strpos($elem, self::SEPARATOR_ITEM);
            $root = (int) ($npos ? substr($elem, 0, $npos) : $elem);

            $result[$root] = $elem;
        }

        $this->raw_data = implode(self::SEPARATOR_ELEMENT, $result);
    }

    /**
     * Returns data as tree
     *
     * @return array Data tree
     */
    public function get_tree()
    {
        $datalen = strlen($this->raw_data);
        $result  = [];
        $start   = 0;

        while ($start < $datalen
            && (($pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT, $start)) !== false
                || ($pos = $datalen))
        ) {
            $len   = $pos - $start;
            $elem  = substr($this->raw_data, $start, $len);
            $items = explode(self::SEPARATOR_ITEM, $elem);
            $result[array_shift($items)] = $this->build_thread($items);
            $start = $pos + 1;
        }

        return $result;
    }

    /**
     * Returns thread depth and children data
     *
     * @return array Thread data
     */
    public function get_thread_data()
    {
        $data     = $this->get_tree();
        $depth    = [];
        $children = [];

        $this->build_thread_data($data, $depth, $children);

        return [$depth, $children];
    }

    /**
     * Creates 'depth' and 'children' arrays from stored thread 'tree' data.
     */
    protected function build_thread_data($data, &$depth, &$children, $level = 0)
    {
        foreach ((array)$data as $key => $val) {
            $empty          = empty($val) || !is_array($val);
            $children[$key] = !$empty;
            $depth[$key]    = $level;
            if (!$empty) {
                $this->build_thread_data($val, $depth, $children, $level + 1);
            }
        }
    }

    /**
     * Converts part of the raw thread into an array
     */
    protected function build_thread($items, $level = 1, &$pos = 0)
    {
        $result = [];

        for ($len=count($items); $pos < $len; $pos++) {
            list($lv, $id) = explode(self::SEPARATOR_LEVEL, $items[$pos]);
            if ($level == $lv) {
                $pos++;
                $result[$id] = $this->build_thread($items, $level+1, $pos);
            }
            else {
                $pos--;
                break;
            }
        }

        return $result;
    }

    /**
     * IMAP THREAD response parser
     */
    protected function parse_thread($str, $begin = 0, $end = 0, $depth = 0)
    {
        // Don't be tempted to change $str to pass by reference to speed this up - it will slow it down by about
        // 7 times instead :-) See comments on http://uk2.php.net/references and this article:
        // http://derickrethans.nl/files/phparch-php-variables-article.pdf
        $node = '';
        if (!$end) {
            $end = strlen($str);
        }

        // Let's try to store data in max. compacted structure as a string,
        // arrays handling is much more expensive
        // For the following structure: THREAD (2)(3 6 (4 23)(44 7 96))((11)(12))
        // -- 2
        // -- 3
        //     \-- 6
        //         |-- 4
        //         |    \-- 23
        //         |
        //         \-- 44
        //               \-- 7
        //                    \-- 96
        // -- 11
        //      \-- 12
        //
        // The output will be: 2 3~1:6~2:4~3:23~2:44~3:7~4:96 11~1:12
        // Note: The "11" thread has no root, we use the first message as root

        if ($str[$begin] != '(') {
            // find next bracket
            $stop      = $begin + strcspn($str, '()', $begin, $end - $begin);
            $messages  = explode(' ', trim(substr($str, $begin, $stop - $begin)));

            if (empty($messages)) {
                return $node;
            }

            foreach ($messages as $msg) {
                if ($msg) {
                    $node .= ($depth ? self::SEPARATOR_ITEM.$depth.self::SEPARATOR_LEVEL : '').$msg;
                    if (isset($this->meta['messages'])) {
                        $this->meta['messages']++;
                    }
                    else {
                        $this->meta['messages'] = 1;
                    }
                    $depth++;
                }
            }

            if ($stop < $end) {
                $node .= $this->parse_thread($str, $stop, $end, $depth);
            }
        }
        else {
            $off = $begin;
            while ($off < $end) {
                $start = $off;
                $off++;
                $n = 1;
                while ($n > 0) {
                    $p = strpos($str, ')', $off);
                    if ($p === false) {
                        // error, wrong structure, mismatched brackets in IMAP THREAD response
                        // @TODO: write error to the log or maybe set $this->raw_data = null;
                        return $node;
                    }

                    $p1 = strpos($str, '(', $off);
                    if ($p1 !== false && $p1 < $p) {
                        $off = $p1 + 1;
                        $n++;
                    }
                    else {
                        $off = $p + 1;
                        $n--;
                    }
                }

                // Handle threads with missing parent by using first message as root
                if (substr_compare($str, '((', $start, 2) === 0) {
                    // Extract the current thread, e.g. "((1)(2))"
                    $thread = substr($str, $start, $off - $start);
                    // Length of the first token, e.g. "(1)"
                    $len = strspn($thread, '(0123456789', 1) + 1;
                    // Extract the token and modify it to look like a thread root
                    $token = substr($thread, 1, $len);
                    // Warning: The order is important
                    $token = str_replace('(', '', $token);
                    $token = str_replace(' ', ' (', $token);
                    $token = str_replace(')', ' ', $token);
                    $thread  = substr_replace($thread, $token, 1, $len);
                    // Parse the thread
                    $thread = $this->parse_thread($thread, 0, 0, $depth);
                }
                else {
                    $thread = $this->parse_thread($str, $start + 1, $off - 1, $depth);
                }

                if ($thread) {
                    if (!$depth) {
                        if ($node) {
                            $node .= self::SEPARATOR_ELEMENT;
                        }
                    }
                    $node .= $thread;
                }
            }
        }

        return $node;
    }
}
lib/Roundcube/rcube_cache.php000064400000045601151727150640012212 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching engine                                                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface class for accessing Roundcube cache
 *
 * @package    Framework
 * @subpackage Cache
 */
class rcube_cache
{
    protected $type;
    protected $userid;
    protected $prefix;
    protected $ttl;
    protected $packed;
    protected $indexed;
    protected $index;
    protected $index_update;
    protected $cache        = [];
    protected $updates      = [];
    protected $exp_records  = [];
    protected $refresh_time = 0.5; // how often to refresh/save the index and cache entries
    protected $debug        = false;
    protected $max_packet   = -1;

    const MAX_EXP_LEVEL     = 2;
    const DATE_FORMAT       = 'Y-m-d H:i:s.u';
    const DATE_FORMAT_REGEX = '[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{1,6}';


    /**
     * Object factory
     *
     * @param string $type    Engine type ('db', 'memcache', 'apc', 'redis')
     * @param int    $userid  User identifier
     * @param string $prefix  Key name prefix
     * @param string $ttl     Expiration time of memcache/apc items
     * @param bool   $packed  Enables/disabled data serialization.
     *                        It's possible to disable data serialization if you're sure
     *                        stored data will be always a safe string
     * @param bool   $indexed Use indexed cache. Indexed cache is more appropriate for
     *                        storing big data with possibility to remove it by a key prefix.
     *                        Non-indexed cache does not remove data, but flags it for expiration,
     *                        also stores it in memory until close() method is called.
     *
     * @return rcube_cache Cache object
     */
    public static function factory($type, $userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        $driver = strtolower($type) ?: 'db';
        $class  = "rcube_cache_$driver";

        if (!$driver || !class_exists($class)) {
            rcube::raise_error([
                    'code' => 600, 'type' => 'db',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Configuration error. Unsupported cache driver: $driver"
                ],
                true, true
            );
        }

        return new $class($userid, $prefix, $ttl, $packed, $indexed);
    }

    /**
     * Object constructor.
     *
     * @param int    $userid  User identifier
     * @param string $prefix  Key name prefix
     * @param string $ttl     Expiration time of memcache/apc items
     * @param bool   $packed  Enables/disabled data serialization.
     *                        It's possible to disable data serialization if you're sure
     *                        stored data will be always a safe string
     * @param bool   $indexed Use indexed cache. Indexed cache is more appropriate for
     *                        storing big data with possibility to remove it by key prefix.
     *                        Non-indexed cache does not remove data, but flags it for expiration,
     *                        also stores it in memory until close() method is called.
     */
    public function __construct($userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        $this->userid  = (int) $userid;
        $this->ttl     = min(get_offset_sec($ttl), 2592000);
        $this->prefix  = $prefix;
        $this->packed  = $packed;
        $this->indexed = $indexed;
    }

    /**
     * Returns cached value.
     *
     * @param string $key Cache key name
     *
     * @return mixed Cached value
     */
    public function get($key)
    {
        if (array_key_exists($key, $this->cache)) {
            return $this->cache[$key];
        }

        return $this->read_record($key);
    }

    /**
     * Sets (add/update) value in cache.
     *
     * @param string $key  Cache key name
     * @param mixed  $data Cache data
     *
     * @return bool True on success, False on failure
     */
    public function set($key, $data)
    {
        return $this->write_record($key, $data);
    }

    /**
     * @deprecated Use self::get()
     */
    public function read($key)
    {
        return $this->get($key);
    }

    /**
     * @deprecated Use self::set()
     */
    public function write($key, $data)
    {
        return $this->set($key, $data);
    }

    /**
     * Clears the cache.
     *
     * @param string $key         Cache key name or pattern
     * @param bool   $prefix_mode Enable it to clear all keys starting
     *                            with prefix specified in $key
     */
    public function remove($key = null, $prefix_mode = false)
    {
        // Remove record(s) from the backend
        $this->remove_record($key, $prefix_mode);
    }

    /**
     * Remove cache records older than ttl
     */
    public function expunge()
    {
        // to be overwritten by engine class
    }

    /**
     * Remove expired records of all caches
     */
    public static function gc()
    {
        // Only DB cache requires an action to remove expired entries
        rcube_cache_db::gc();
    }

    /**
     * Writes the cache back to the DB.
     */
    public function close()
    {
        $this->write_index(true);
        $this->index   = null;
        $this->cache   = [];
        $this->updates = [];
    }

    /**
     * A helper to build cache key for specified parameters.
     *
     * @param string $prefix Key prefix (Max. length 64 characters)
     * @param array  $params Additional parameters
     *
     * @return string Key name
     */
    public static function key_name($prefix, $params = [])
    {
        $cache_key = $prefix;

        if (!empty($params)) {
            $func = function($v) {
                if (is_array($v)) {
                    sort($v);
                }
                return is_string($v) ? $v : serialize($v);
            };

            $params = array_map($func, $params);
            $cache_key .= '.' . md5(implode(':', $params));
        }

        return $cache_key;
    }

    /**
     * Reads cache entry.
     *
     * @param string $key Cache key name
     *
     * @return mixed Cached value
     */
    protected function read_record($key)
    {
        $this->load_index();

        // Consistency check (#1490390)
        if (is_array($this->index) && !in_array($key, $this->index)) {
            // we always check if the key exist in the index
            // to have data in consistent state. Keeping the index consistent
            // is needed for keys delete operation when we delete all keys or by prefix.
            return;
        }

        $ckey = $this->ckey($key);
        $data = $this->get_item($ckey);

        if ($this->indexed) {
            return $data !== false ? $this->unserialize($data) : null;
        }

        if ($data !== false) {
            $timestamp = 0;
            $utc       = new DateTimeZone('UTC');

            // Extract timestamp from the data entry
            if (preg_match('/^(' . self::DATE_FORMAT_REGEX . '):/', $data, $matches)) {
                try {
                    $timestamp = new DateTime($matches[1], $utc);
                    $data      = substr($data, strlen($matches[1]) + 1);
                }
                catch (Exception $e) {
                    // invalid date = no timestamp
                }
            }

            // Check if the entry is still valid by comparing with EXP timestamps
            // For example for key 'mailboxes.123456789' we check entries:
            // 'EXP:*', 'EXP:mailboxes' and 'EXP:mailboxes.123456789'.
            if ($timestamp) {
                $path     = explode('.', "*.$key");
                $path_len = min(self::MAX_EXP_LEVEL + 1, count($path));

                for ($x = 1; $x <= $path_len; $x++) {
                    $prefix = implode('.', array_slice($path, 0, $x));
                    if ($x > 1) {
                        $prefix = substr($prefix, 2); // remove "*." prefix
                    }

                    if (($ts = $this->get_exp_timestamp($prefix)) && $ts > $timestamp) {
                        $timestamp = 0;
                        break;
                    }
                }
            }

            $data = $timestamp ? $this->unserialize($data) : null;
        }
        else {
            $data = null;
        }

        return $this->cache[$key] = $data;
    }

    /**
     * Writes single cache record into DB.
     *
     * @param string $key  Cache key name
     * @param mixed  $data Serialized cache data
     *
     * @return bool True on success, False on failure
     */
    protected function write_record($key, $data)
    {
        if ($this->indexed) {
            $result = $this->store_record($key, $data);

            if ($result) {
                $this->load_index();
                $this->index[] = $key;

                if (!$this->index_update) {
                    $this->index_update = time();
                }
            }
        }
        else {
            // In this mode we do not save the entry to the database immediately
            // It's because we have cases where the same entry is updated
            // multiple times in one request (e.g. 'messagecount' entry rcube_imap).
            $this->updates[$key] = new DateTime('now', new DateTimeZone('UTC'));
            $this->cache[$key]   = $data;
            $result = true;
        }

        $this->write_index();

        return $result;
    }

    /**
     * Deletes the cache record(s).
     *
     * @param string $key         Cache key name or pattern
     * @param bool   $prefix_mode Enable it to clear all keys starting
     *                            with prefix specified in $key
     */
    protected function remove_record($key = null, $prefix_mode = false)
    {
        if ($this->indexed) {
            return $this->remove_record_indexed($key, $prefix_mode);
        }

        // "Remove" all keys
        if ($key === null) {
            $ts = new DateTime('now', new DateTimeZone('UTC'));
            $this->add_item($this->ekey('*'), $ts->format(self::DATE_FORMAT));
            $this->cache = [];
        }
        // "Remove" keys by name prefix
        else if ($prefix_mode) {
            $ts     = new DateTime('now', new DateTimeZone('UTC'));
            $prefix = implode('.', array_slice(explode('.', trim($key, '. ')), 0, self::MAX_EXP_LEVEL));

            $this->add_item($this->ekey($prefix), $ts->format(self::DATE_FORMAT));

            foreach (array_keys($this->cache) as $k) {
                if (strpos($k, $key) === 0) {
                    $this->cache[$k] = null;
                }
            }
        }
        // Remove one key by name
        else {
            $this->delete_item($this->ckey($key));
            $this->cache[$key] = null;
        }
    }

    /**
     * @see self::remove_record()
     */
    protected function remove_record_indexed($key = null, $prefix_mode = false)
    {
        $this->load_index();

        // Remove all keys
        if ($key === null) {
            foreach ($this->index as $key) {
                $this->delete_item($this->ckey($key));
                if (!$this->index_update) {
                    $this->index_update = time();
                }
            }

            $this->index = [];
        }
        // Remove keys by name prefix
        else if ($prefix_mode) {
            foreach ($this->index as $idx => $k) {
                if (strpos($k, $key) === 0) {
                    $this->delete_item($this->ckey($k));
                    unset($this->index[$idx]);
                    if (!$this->index_update) {
                        $this->index_update = time();
                    }
                }
            }
        }
        // Remove one key by name
        else {
            $this->delete_item($this->ckey($key));
            if (($idx = array_search($key, $this->index)) !== false) {
                unset($this->index[$idx]);
                if (!$this->index_update) {
                    $this->index_update = time();
                }
            }
        }

        $this->write_index();
    }

    /**
     * Writes the index entry as well as updated entries into memcache/apc/redis DB.
     */
    protected function write_index($force = null)
    {
        // Write updated/new entries when needed
        if (!$this->indexed) {
            $need_update = $force === true;

            if (!$need_update && !empty($this->updates)) {
                $now         = new DateTime('now', new DateTimeZone('UTC'));
                $need_update = floatval(min($this->updates)->format('U.u')) < floatval($now->format('U.u')) - $this->refresh_time;
            }

            if ($need_update) {
                foreach ($this->updates as $key => $ts) {
                    if (isset($this->cache[$key])) {
                        $this->store_record($key, $this->cache[$key], $ts);
                    }
                }

                $this->updates = [];
            }
        }
        // Write index entry when needed
        else {
            $need_update = $this->index_update && $this->index !== null
                && ($force === true || $this->index_update > time() - $this->refresh_time);

            if ($need_update) {
                $index = serialize(array_values(array_unique($this->index)));

                $this->add_item($this->ikey(), $index);
                $this->index_update = null;
                $this->index        = null;
            }
        }
    }

    /**
     * Gets the index entry from memcache/apc/redis DB.
     */
    protected function load_index()
    {
        if (!$this->indexed) {
            return;
        }

        if ($this->index !== null) {
            return;
        }

        $data        = $this->get_item($this->ikey());
        $this->index = $data ? unserialize($data) : [];
    }

    /**
     * Write data entry into cache
     */
    protected function store_record($key, $data, $ts = null)
    {
        $value = $this->serialize($data);

        if (!$this->indexed) {
            if (!$ts) {
                $ts = new DateTime('now', new DateTimeZone('UTC'));
            }

            $value = $ts->format(self::DATE_FORMAT) . ':' . $value;
        }

        $size = strlen($value);

        // don't attempt to write too big data sets
        if ($size > $this->max_packet_size()) {
            trigger_error("rcube_cache: max_packet_size ($this->max_packet) exceeded for key $key. Tried to write $size bytes", E_USER_WARNING);
            return false;
        }

        return $this->add_item($this->ckey($key), $value);
    }

    /**
     * Fetches cache entry.
     *
     * @param string $key Cache internal key name
     *
     * @return mixed Cached value
     */
    protected function get_item($key)
    {
        // to be overwritten by engine class
    }

    /**
     * Adds entry into memcache/apc/redis DB.
     *
     * @param string $key  Cache internal key name
     * @param mixed  $data Serialized cache data
     *
     * @return bool True on success, False on failure
     */
    protected function add_item($key, $data)
    {
        // to be overwritten by engine class
    }

    /**
     * Deletes entry from memcache/apc/redis DB.
     *
     * @param string $key Cache internal key name
     *
     * @return bool True on success, False on failure
     */
    protected function delete_item($key)
    {
        // to be overwritten by engine class
    }

    /**
     * Get EXP:<key> record value from cache
     */
    protected function get_exp_timestamp($key)
    {
        if (!array_key_exists($key, $this->exp_records)) {
            $data = $this->get_item($this->ekey($key));

            $this->exp_records[$key] = $data ? new DateTime($data, new DateTimeZone('UTC')) : null;
        }

        return $this->exp_records[$key];
    }

    /**
     * Creates per-user index cache key name (for memcache, apc, redis)
     *
     * @return string Cache key
     */
    protected function ikey()
    {
        $key = $this->prefix . 'INDEX';

        if ($this->userid) {
            $key = $this->userid . ':' . $key;
        }

        return $key;
    }

    /**
     * Creates per-user cache key name (for memcache, apc, redis)
     *
     * @param string $key Cache key name
     *
     * @return string Cache key
     */
    protected function ckey($key)
    {
        $key = $this->prefix . ':' . $key;

        if ($this->userid) {
            $key = $this->userid . ':' . $key;
        }

        return $key;
    }

    /**
     * Creates per-user cache key name for expiration time entry
     *
     * @param string $key Cache key name
     *
     * @return string Cache key
     */
    protected function ekey($key, $prefix = null)
    {
        $key = $this->prefix . 'EXP:' . $key;

        if ($this->userid) {
            $key = $this->userid . ':' . $key;
        }

        return $key;
    }

    /**
     * Serializes data for storing
     */
    protected function serialize($data)
    {
        return $this->packed ? serialize($data) : $data;
    }

    /**
     * Unserializes serialized data
     */
    protected function unserialize($data)
    {
        return $this->packed ? @unserialize($data) : $data;
    }

    /**
     * Determine the maximum size for cache data to be written
     */
    protected function max_packet_size()
    {
        if ($this->max_packet < 0) {
            $config           = rcube::get_instance()->config;
            $max_packet       = $config->get($this->type . '_max_allowed_packet');
            $this->max_packet = parse_bytes($max_packet) ?: 2097152; // default/max is 2 MB
        }

        return $this->max_packet;
    }

    /**
     * Write memcache/apc/redis debug info to the log
     */
    protected function debug($type, $key, $data = null, $result = null)
    {
        $line = strtoupper($type) . ' ' . $key;

        if ($data !== null) {
            $line .= ' ' . ($this->packed ? $data : serialize($data));
        }

        rcube::debug($this->type, $line, $result);
    }
}
lib/Roundcube/rcube_string_replacer.php000064400000026106151727150640014331 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Handle string replacements based on preg_replace_callback           |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Helper class for string replacements based on preg_replace_callback
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_string_replacer
{
    public $pattern;
    public $mailto_pattern;
    public $link_pattern;
    public $linkref_index;
    public $linkref_pattern;

    protected $values   = [];
    protected $options  = [];
    protected $linkrefs = [];
    protected $urls     = [];
    protected $noword   = '[^\w@.#-]';


    /**
     * Object constructor
     *
     * @param array $options Configuration options
     */
    function __construct($options = [])
    {
        // Create hard-to-guess replacement string
        $uniq_ident    = sprintf('%010d%010d', mt_rand(), mt_rand());
        $this->pattern = '/##' . $uniq_ident . '##(\d+)##/';

        // Simplified domain expression for UTF8 characters handling
        // Support unicode/punycode in top-level domain part
        $utf_domain = '[^?&@"\'\\/()<>\s\r\t\n]+\\.?([^\\x00-\\x2f\\x3b-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-zA-Z0-9]{2,})';
        $url1       = '.:;,';
        $url2       = 'a-zA-Z0-9%=#$@+?|!&\\/_~\\[\\]\\(\\){}\*\x80-\xFE-';

        // Supported link prefixes
        $link_prefix = "([\w]+:\/\/|{$this->noword}[Ww][Ww][Ww]\.|^[Ww][Ww][Ww]\.)";

        $this->options         = $options;
        $this->linkref_index   = '/\[([^<>\]#]+)\](:?\s*' . substr($this->pattern, 1, -1) . ')/';
        $this->linkref_pattern = '/\[([^<>\]#]+)\]/';
        $this->link_pattern    = "/$link_prefix($utf_domain([$url1]*[$url2]+)*)/";
        $this->mailto_pattern  = "/("
            . "[-\w!\#\$%&*+~\/^`|{}=]+(?:\.[-\w!\#\$%&*+~\/^`|{}=]+)*"  // local-part
            . "@$utf_domain"                                             // domain-part
            . "(\?[$url1$url2]+)?"                                       // e.g. ?subject=test...
            . ")/";
    }

    /**
     * Add a string to the internal list
     *
     * @param string $str String value
     *
     * @return int Index of value for retrieval
     */
    public function add($str)
    {
        $i = count($this->values);
        $this->values[$i] = $str;
        return $i;
    }

    /**
     * Build replacement string
     *
     * @param string|int $i Replacement index
     *
     * @return string Replacement string
     */
    public function get_replacement($i)
    {
        return str_replace('(\d+)', $i, substr($this->pattern, 1, -1));
    }

    /**
     * Callback function used to build HTML links around URL strings
     *
     * @param array $matches Matches result from preg_replace_callback
     *
     * @return string Return valid link for recognized schemes, otherwise
     *                return the unmodified URL.
     */
    protected function link_callback($matches)
    {
        $i          = -1;
        $scheme     = strtolower($matches[1]);
        $url_prefix = '';
        $prefix     = '';

        if (preg_match('!^(http|ftp|file)s?://!i', $scheme)) {
            $url = $matches[1] . $matches[2];
        }
        else if (preg_match("/^({$this->noword}*)(www\.)$/i", $matches[1], $m)) {
            $url        = $m[2] . $matches[2];
            $url_prefix = 'http://';
            $prefix     = $m[1];
        }

        if (!empty($url)) {
            $suffix = $this->parse_url_brackets($url);
            $attrib = isset($this->options['link_attribs']) ? (array) $this->options['link_attribs'] : [];
            $attrib['href'] = $url_prefix . $url;

            $i = $this->add(html::a($attrib, rcube::Q($url)) . $suffix);
            $this->urls[$i] = $attrib['href'];
        }

        return $i >= 0 ? $prefix . $this->get_replacement($i) : $matches[0];
    }

    /**
     * Callback to add an entry to the link index
     *
     * @param array $matches Matches result from preg_replace_callback with PREG_OFFSET_CAPTURE
     *
     * @return string Replacement string
     */
    protected function linkref_addindex($matches)
    {
        $key = $matches[1][0];

        if (!isset($this->linkrefs[$key])) {
            $this->linkrefs[$key] = [];
        }

        // Store the reference and its occurrence position
        $this->linkrefs[$key][] = [
            $this->urls[$matches[3][0]] ?? null,
            $matches[0][1]
        ];

        return $this->get_replacement($this->add('[' . $key . ']')) . $matches[2][0];
    }

    /**
     * Callback to replace link references with real links
     *
     * @param array $matches Matches result from preg_replace_callback with PREG_OFFSET_CAPTURE
     *
     * @return string Replacement string
     */
    protected function linkref_callback($matches)
    {
        $i = 0;
        $key = $matches[1][0];

        if (!empty($this->linkrefs[$key])) {
            $attrib = isset($this->options['link_attribs']) ? (array) $this->options['link_attribs'] : [];

            foreach ($this->linkrefs[$key] as $linkref) {
                $attrib['href'] = $linkref[0];
                if ($linkref[1] >= $matches[1][1]) {
                    break;
                }
            }

            $i = $this->add(html::a($attrib, rcube::Q($matches[1][0])));
        }

        return $i > 0 ? '[' . $this->get_replacement($i) . ']' : $matches[0][0];
    }

    /**
     * Callback function used to build mailto: links around e-mail strings
     *
     * @param array $matches Matches result from preg_replace_callback
     *
     * @return string Replacement string
     */
    protected function mailto_callback($matches)
    {
        $href   = $matches[1];
        $suffix = $this->parse_url_brackets($href);
        $i = $this->add(html::a('mailto:' . $href, rcube::Q($href)) . $suffix);

        return $i >= 0 ? $this->get_replacement($i) : '';
    }

    /**
     * Look up the index from the preg_replace matches array
     * and return the substitution value.
     *
     * @param array $matches Matches result from preg_replace_callback
     *
     * @return string Value at index $matches[1]
     */
    protected function replace_callback($matches)
    {
        return $this->values[$matches[1]] ?? null;
    }

    /**
     * Replace all defined (link|mailto) patterns with replacement string
     *
     * @param string $str Text
     *
     * @return string Text
     */
    public function replace($str)
    {
        if (!is_string($str)) {
            return '';
        }

        // search for patterns like links and e-mail addresses
        $str = preg_replace_callback($this->link_pattern, [$this, 'link_callback'], $str);
        $str = preg_replace_callback($this->mailto_pattern, [$this, 'mailto_callback'], $str);

        // resolve link references
/*
        This code requires PHP 7.4 and could be used instead of the two if() statements below,
        when we get there.

        $str = preg_replace_callback($this->linkref_index,
            [$this, 'linkref_addindex'], $str, -1, $count, PREG_OFFSET_CAPTURE
        );
        $str = preg_replace_callback($this->linkref_pattern,
            [$this, 'linkref_callback'], $str, -1, $count, PREG_OFFSET_CAPTURE
        );
*/
        if (preg_match_all($this->linkref_index, $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
            $diff = 0;
            foreach ($matches as $m) {
                $replace = $this->linkref_addindex($m);
                $str     = substr_replace($str, $replace, $m[0][1] + $diff, strlen($m[0][0]));
                $diff   += strlen($replace) - strlen($m[0][0]);
            }
        }

        if (preg_match_all($this->linkref_pattern, $str, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
            $diff = 0;
            foreach ($matches as $m) {
                $replace = $this->linkref_callback($m);
                $str     = substr_replace($str, $replace, $m[0][1] + $diff, strlen($m[0][0]));
                $diff   += strlen($replace) - strlen($m[0][0]);
            }
        }

        return $str;
    }

    /**
     * Replace substituted strings with original values
     *
     * @param string $str Text
     *
     * @return string Text
     */
    public function resolve($str)
    {
        return preg_replace_callback($this->pattern, [$this, 'replace_callback'], $str);
    }

    /**
     * Fixes bracket characters in URL handling
     *
     * @param string &$url URL
     *
     * @return string Suffix (the rest of the URL input)
     */
    protected static function parse_url_brackets(&$url)
    {
        // #1487672: special handling of square brackets,
        // URL regexp allows [] characters in URL, for example:
        // "http://example.com/?a[b]=c". However we need to handle
        // properly situation when a bracket is placed at the end
        // of the link e.g. "[http://example.com]"
        // Yes, this is not perfect handles correctly only paired characters
        // but it should work for common cases

        $suffix = '';

        if (preg_match('/(\\[|\\])/', $url)) {
            $in = false;
            for ($i=0, $len=strlen($url); $i<$len; $i++) {
                if ($url[$i] == '[') {
                    if ($in) {
                        break;
                    }
                    $in = true;
                }
                else if ($url[$i] == ']') {
                    if (!$in) {
                        break;
                    }
                    $in = false;
                }
            }

            if ($i < $len) {
                $suffix = substr($url, $i);
                $url    = substr($url, 0, $i);
            }
        }

        // Do the same for parentheses
        if (preg_match('/(\\(|\\))/', $url)) {
            $in = false;
            for ($i=0, $len=strlen($url); $i<$len; $i++) {
                if ($url[$i] == '(') {
                    if ($in) {
                        break;
                    }
                    $in = true;
                }
                else if ($url[$i] == ')') {
                    if (!$in) {
                        break;
                    }
                    $in = false;
                }
            }

            if ($i < $len) {
                $suffix = substr($url, $i);
                $url    = substr($url, 0, $i);
            }
        }

        return $suffix;
    }
}
lib/Roundcube/bootstrap.php000064400000027624151727150640012011 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | CONTENTS:                                                             |
 |   Roundcube Framework Initialization                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Roundcube Framework Initialization
 *
 * @package    Framework
 * @subpackage Core
 */

$config = [
    'error_reporting' => E_ALL & ~E_NOTICE & ~E_STRICT,
    'display_errors'  => false,
    'log_errors'      => true,
    // Some users are not using Installer, so we'll check some
    // critical PHP settings here. Only these, which doesn't provide
    // an error/warning in the logs later. See (#1486307).
    'mbstring.func_overload' => 0,
];

// check these additional ini settings if not called via CLI
if (php_sapi_name() != 'cli') {
    $config += [
        'suhosin.session.encrypt' => false,
        'file_uploads'            => true,
        'session.auto_start'      => false,
        'zlib.output_compression' => false,
    ];
}

foreach ($config as $optname => $optval) {
    $ini_optval = filter_var(ini_get($optname), is_bool($optval) ? FILTER_VALIDATE_BOOLEAN : FILTER_VALIDATE_INT);
    if ($optval != $ini_optval && @ini_set($optname, $optval) === false) {
        $optval = !is_bool($optval) ? $optval : ($optval ? 'On' : 'Off');
        $error  = "ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n"
            . "Check your PHP configuration (including php_admin_flag).";

        if (defined('STDERR')) fwrite(STDERR, $error); else echo $error;
        exit(1);
    }
}

// framework constants
define('RCUBE_VERSION', '1.6.7');
define('RCUBE_CHARSET', 'UTF-8');
define('RCUBE_TEMP_FILE_PREFIX', 'RCMTEMP');

if (!defined('RCUBE_LIB_DIR')) {
    define('RCUBE_LIB_DIR', __DIR__ . '/');
}

if (!defined('RCUBE_INSTALL_PATH')) {
    define('RCUBE_INSTALL_PATH', RCUBE_LIB_DIR);
}

if (!defined('RCUBE_CONFIG_DIR')) {
    define('RCUBE_CONFIG_DIR', RCUBE_INSTALL_PATH . 'config/');
}

if (!defined('RCUBE_PLUGINS_DIR')) {
    define('RCUBE_PLUGINS_DIR', RCUBE_INSTALL_PATH . 'plugins/');
}

if (!defined('RCUBE_LOCALIZATION_DIR')) {
    define('RCUBE_LOCALIZATION_DIR', RCUBE_INSTALL_PATH . 'localization/');
}

// set internal encoding for mbstring extension
mb_internal_encoding(RCUBE_CHARSET);
mb_regex_encoding(RCUBE_CHARSET);

// make sure the Roundcube lib directory is in the include_path
$rcube_path = realpath(RCUBE_LIB_DIR . '..');
$sep        = PATH_SEPARATOR;
$regexp     = "!(^|$sep)" . preg_quote($rcube_path, '!') . "($sep|\$)!";
$path       = ini_get('include_path');

if (!preg_match($regexp, $path)) {
    set_include_path($path . PATH_SEPARATOR . $rcube_path);
}

// Register autoloader
spl_autoload_register('rcube_autoload');

// set PEAR error handling (will also load the PEAR main class)
if (class_exists('PEAR')) {
    PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, function($err) { rcube::raise_error($err, true); });
}

/**
 * Similar function as in_array() but case-insensitive with multibyte support.
 *
 * @param string $needle   Needle value
 * @param array  $haystack Array to search in
 *
 * @return bool True if found, False if not
 */
function in_array_nocase($needle, $haystack)
{
    if (!is_string($needle) || !is_array($haystack)) {
        return false;
    }

    // use much faster method for ascii
    if (is_ascii($needle)) {
        foreach ((array) $haystack as $value) {
            if (is_string($value) && strcasecmp($value, $needle) === 0) {
                return true;
            }
        }
    }
    else {
        $needle = mb_strtolower($needle);
        foreach ((array) $haystack as $value) {
            if (is_string($value) && $needle === mb_strtolower($value)) {
                return true;
            }
        }
    }

    return false;
}

/**
 * Parse a human readable string for a number of bytes.
 *
 * @param string $str Input string
 *
 * @return float Number of bytes
 */
function parse_bytes($str)
{
    if (is_numeric($str)) {
        return floatval($str);
    }

    $bytes = 0;

    if (preg_match('/([0-9\.]+)\s*([a-z]*)/i', $str, $regs)) {
        $bytes = floatval($regs[1]);
        switch (strtolower($regs[2])) {
        case 'g':
        case 'gb':
            $bytes *= 1073741824;
            break;
        case 'm':
        case 'mb':
            $bytes *= 1048576;
            break;
        case 'k':
        case 'kb':
            $bytes *= 1024;
            break;
        }
    }

    return floatval($bytes);
}

/**
 * Make sure the string ends with a slash
 *
 * @param string $str A string
 *
 * @return string A string ending with a slash
 */
function slashify($str)
{
    return unslashify($str) . '/';
}

/**
 * Remove slashes at the end of the string
 *
 * @param string $str A string
 *
 * @return string A string ending with no slash
 */
function unslashify($str)
{
    return rtrim($str, '/');
}

/**
 * Returns number of seconds for a specified offset string.
 *
 * @param string $str String representation of the offset (e.g. 20min, 5h, 2days, 1week)
 *
 * @return int Number of seconds
 */
function get_offset_sec($str)
{
    if (preg_match('/^([0-9]+)\s*([smhdw])/i', $str, $regs)) {
        $amount = (int) $regs[1];
        $unit   = strtolower($regs[2]);
    }
    else {
        $amount = (int) $str;
        $unit   = 's';
    }

    switch ($unit) {
    case 'w':
        $amount *= 7;
    case 'd':
        $amount *= 24;
    case 'h':
        $amount *= 60;
    case 'm':
        $amount *= 60;
    }

    return $amount;
}

/**
 * Create a unix timestamp with a specified offset from now.
 *
 * @param string $offset_str String representation of the offset (e.g. 20min, 5h, 2days)
 * @param int    $factor     Factor to multiply with the offset
 *
 * @return int Unix timestamp
 */
function get_offset_time($offset_str, $factor = 1)
{
    return time() + get_offset_sec($offset_str) * $factor;
}

/**
 * Truncate string if it is longer than the allowed length.
 * Replace the middle or the ending part of a string with a placeholder.
 *
 * @param string $str         Input string
 * @param int    $maxlength   Max. length
 * @param string $placeholder Replace removed chars with this
 * @param bool   $ending      Set to True if string should be truncated from the end
 *
 * @return string Abbreviated string
 */
function abbreviate_string($str, $maxlength, $placeholder = '...', $ending = false)
{
    $length = mb_strlen($str);

    if ($length > $maxlength) {
        if ($ending) {
            return mb_substr($str, 0, $maxlength) . $placeholder;
        }

        $placeholder_length = mb_strlen($placeholder);
        $first_part_length  = floor(($maxlength - $placeholder_length)/2);
        $second_starting_location = $length - $maxlength + $first_part_length + $placeholder_length;

        $prefix = mb_substr($str, 0, $first_part_length);
        $suffix = mb_substr($str, $second_starting_location);
        $str    = $prefix . $placeholder . $suffix;
    }

    return $str;
}

/**
 * Get all keys from array (recursive).
 *
 * @param array $array Input array
 *
 * @return array List of array keys
 */
function array_keys_recursive($array)
{
    $keys = [];

    if (!empty($array) && is_array($array)) {
        foreach ($array as $key => $child) {
            $keys[] = $key;
            foreach (array_keys_recursive($child) as $val) {
                $keys[] = $val;
            }
        }
    }

    return $keys;
}

/**
 * Get first element from an array
 *
 * @param array $array Input array
 *
 * @return mixed First element if found, Null otherwise
 */
function array_first($array)
{
    if (is_array($array)) {
        reset($array);
        foreach ($array as $element) {
            return $element;
        }
    }
}

/**
 * Remove all non-ascii and non-word chars except ., -, _
 *
 * @param string $str          A string
 * @param bool   $css_id       The result may be used as CSS identifier
 * @param string $replace_with Replacement character
 *
 * @return string Clean string
 */
function asciiwords($str, $css_id = false, $replace_with = '')
{
    $allowed = 'a-z0-9\_\-' . (!$css_id ? '\.' : '');
    return preg_replace("/[^$allowed]+/i", $replace_with, (string) $str);
}

/**
 * Check if a string contains only ascii characters
 *
 * @param string $str           String to check
 * @param bool   $control_chars Includes control characters
 *
 * @return bool True if the string contains ASCII-only, False otherwise
 */
function is_ascii($str, $control_chars = true)
{
    $regexp = $control_chars ? '/[^\x00-\x7F]/' : '/[^\x20-\x7E]/';
    return preg_match($regexp, (string) $str) ? false : true;
}

/**
 * Compose a valid representation of name and e-mail address
 *
 * @param string $email E-mail address
 * @param string $name  Person name
 *
 * @return string Formatted string
 */
function format_email_recipient($email, $name = '')
{
    $email = trim($email);

    if ($name && $name != $email) {
        // Special chars as defined by RFC 822 need to in quoted string (or escaped).
        if (preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $name)) {
            $name = '"'.addcslashes($name, '"').'"';
        }

        return "$name <$email>";
    }

    return $email;
}

/**
 * Format e-mail address
 *
 * @param string $email E-mail address
 *
 * @return string Formatted e-mail address
 */
function format_email($email)
{
    $email = trim($email);
    $parts = explode('@', $email);
    $count = count($parts);

    if ($count > 1) {
        $parts[$count-1] = mb_strtolower($parts[$count-1]);

        $email = implode('@', $parts);
    }

    return $email;
}

/**
 * Fix version number so it can be used correctly in version_compare()
 *
 * @param string $version Version number string
 *
 * @return string Version number string
 */
function version_parse($version)
{
    return str_replace(
        ['-stable', '-git'],
        ['.0', '.99'],
        $version
    );
}

/**
 * Use PHP5 autoload for dynamic class loading
 *
 * @param string $classname Class name
 *
 * @return bool True when the class file has been found
 *
 * @todo Make Zend, PEAR etc play with this
 * @todo Make our classes conform to a more straight forward CS.
 */
function rcube_autoload($classname)
{
    if (strpos($classname, 'rcube') === 0) {
        $classname = preg_replace('/^rcube_(cache|db|session|spellchecker)_/', '\\1/', $classname);
        $classname = 'Roundcube/' . $classname;
    }
    else if (strpos($classname, 'html_') === 0 || $classname === 'html') {
        $classname = 'Roundcube/html';
    }
    else if (strpos($classname, 'Mail_') === 0) {
        $classname = 'Mail/' . substr($classname, 5);
    }
    else if (strpos($classname, 'Net_') === 0) {
        $classname = 'Net/' . substr($classname, 4);
    }
    else if (strpos($classname, 'Auth_') === 0) {
        $classname = 'Auth/' . substr($classname, 5);
    }

    // Translate PHP namespaces into directories,
    // i.e. use \Sabre\VObject; $vcf = VObject\Reader::read(...)
    //      -> Sabre/VObject/Reader.php
    $classname = str_replace('\\', '/', $classname);

    if ($fp = @fopen("$classname.php", 'r', true)) {
        fclose($fp);
        include_once "$classname.php";
        return true;
    }

    return false;
}
lib/Roundcube/rcube_mime.php000064400000103012151727150640012065 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   MIME message parsing utilities                                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for parsing MIME messages
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_mime
{
    private static $default_charset;


    /**
     * Object constructor.
     */
    function __construct($default_charset = null)
    {
        self::$default_charset = $default_charset;
    }

    /**
     * Returns message/object character set name
     *
     * @return string Character set name
     */
    public static function get_charset()
    {
        if (self::$default_charset) {
            return self::$default_charset;
        }

        if ($charset = rcube::get_instance()->config->get('default_charset')) {
            return $charset;
        }

        return RCUBE_CHARSET;
    }

    /**
     * Parse the given raw message source and return a structure
     * of rcube_message_part objects.
     *
     * It makes use of the rcube_mime_decode library
     *
     * @param string $raw_body The message source
     *
     * @return object rcube_message_part The message structure
     */
    public static function parse_message($raw_body)
    {
        $conf = [
            'include_bodies'  => true,
            'decode_bodies'   => true,
            'decode_headers'  => false,
            'default_charset' => self::get_charset(),
        ];

        $mime = new rcube_mime_decode($conf);

        return $mime->decode($raw_body);
    }

    /**
     * Split an address list into a structured array list
     *
     * @param string|array $input    Input string (or list of strings)
     * @param int          $max      List only this number of addresses
     * @param bool         $decode   Decode address strings
     * @param string       $fallback Fallback charset if none specified
     * @param bool         $addronly Return flat array with e-mail addresses only
     *
     * @return array Indexed list of addresses
     */
    static function decode_address_list($input, $max = null, $decode = true, $fallback = null, $addronly = false)
    {
        // A common case when the same header is used many times in a mail message
        if (is_array($input)) {
            $input = implode(', ', $input);
        }

        $a   = self::parse_address_list((string) $input, $decode, $fallback);
        $out = [];
        $j   = 0;

        // Special chars as defined by RFC 822 need to in quoted string (or escaped).
        $special_chars = '[\(\)\<\>\\\.\[\]@,;:"]';

        if (!is_array($a)) {
            return $out;
        }

        foreach ($a as $val) {
            $j++;
            $address = trim($val['address']);

            if ($addronly) {
                $out[$j] = $address;
            }
            else {
                $name   = trim($val['name']);
                $string = '';

                if ($name && $address && $name != $address) {
                    $string = sprintf('%s <%s>', preg_match("/$special_chars/", $name) ? '"'.addcslashes($name, '"').'"' : $name, $address);
                }
                else if ($address) {
                    $string = $address;
                }
                else if ($name) {
                    $string = $name;
                }

                $out[$j] = ['name' => $name, 'mailto' => $address, 'string' => $string];
            }

            if ($max && $j == $max) {
                break;
            }
        }

        return $out;
    }

    /**
     * Decode a message header value
     *
     * @param string  $input    Header value
     * @param string  $fallback Fallback charset if none specified
     *
     * @return string Decoded string
     */
    public static function decode_header($input, $fallback = null)
    {
        $str = self::decode_mime_string((string)$input, $fallback);

        return $str;
    }

    /**
     * Decode a mime-encoded string to internal charset
     *
     * @param string $input    Header value
     * @param string $fallback Fallback charset if none specified
     *
     * @return string Decoded string
     */
    public static function decode_mime_string($input, $fallback = null)
    {
        $default_charset = $fallback ?: self::get_charset();

        // rfc: all line breaks or other characters not found
        // in the Base64 Alphabet must be ignored by decoding software
        // delete all blanks between MIME-lines, differently we can
        // receive unnecessary blanks and broken utf-8 symbols
        $input = preg_replace("/\?=\s+=\?/", '?==?', $input);

        // encoded-word regexp
        $re = '/=\?([^?]+)\?([BbQq])\?([^\n]*?)\?=/';

        // Find all RFC2047's encoded words
        if (preg_match_all($re, $input, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER)) {
            // Initialize variables
            $tmp   = [];
            $out   = '';
            $start = 0;

            foreach ($matches as $idx => $m) {
                $pos      = $m[0][1];
                $charset  = $m[1][0];
                $encoding = $m[2][0];
                $text     = $m[3][0];
                $length   = strlen($m[0][0]);

                // Append everything that is before the text to be decoded
                if ($start != $pos) {
                    $substr = substr($input, $start, $pos-$start);
                    $out   .= rcube_charset::convert($substr, $default_charset);
                    $start  = $pos;
                }
                $start += $length;

                // Per RFC2047, each string part "MUST represent an integral number
                // of characters . A multi-octet character may not be split across
                // adjacent encoded-words." However, some mailers break this, so we
                // try to handle characters spanned across parts anyway by iterating
                // through and aggregating sequential encoded parts with the same
                // character set and encoding, then perform the decoding on the
                // aggregation as a whole.

                $tmp[] = $text;
                if (!empty($matches[$idx+1]) && ($next_match = $matches[$idx+1])) {
                    if ($next_match[0][1] == $start
                        && $next_match[1][0] == $charset
                        && $next_match[2][0] == $encoding
                    ) {
                        continue;
                    }
                }

                $count = count($tmp);
                $text  = '';

                // Decode and join encoded-word's chunks
                if ($encoding == 'B' || $encoding == 'b') {
                    $rest  = '';
                    // base64 must be decoded a segment at a time.
                    // However, there are broken implementations that continue
                    // in the following word, we'll handle that (#6048)
                    for ($i=0; $i<$count; $i++) {
                        $chunk  = $rest . $tmp[$i];
                        $length = strlen($chunk);
                        if ($length % 4) {
                            $length = floor($length / 4) * 4;
                            $rest   = substr($chunk, $length);
                            $chunk  = substr($chunk, 0, $length);
                        }

                        $text .= base64_decode($chunk);
                    }
                }
                else { // if ($encoding == 'Q' || $encoding == 'q') {
                    // quoted printable can be combined and processed at once
                    for ($i=0; $i<$count; $i++) {
                        $text .= $tmp[$i];
                    }

                    $text = str_replace('_', ' ', $text);
                    $text = quoted_printable_decode($text);
                }

                $out .= rcube_charset::convert($text, $charset);
                $tmp = [];
            }

            // add the last part of the input string
            if ($start != strlen($input)) {
                $out .= rcube_charset::convert(substr($input, $start), $default_charset);
            }

            // return the results
            return $out;
        }

        // no encoding information, use fallback
        return rcube_charset::convert($input, $default_charset);
    }

    /**
     * Decode a mime part
     *
     * @param string $input    Input string
     * @param string $encoding Part encoding
     *
     * @return string Decoded string
     */
    public static function decode($input, $encoding = '7bit')
    {
        switch (strtolower($encoding)) {
        case 'quoted-printable':
            return quoted_printable_decode($input);
        case 'base64':
            return base64_decode($input);
        case 'x-uuencode':
        case 'x-uue':
        case 'uue':
        case 'uuencode':
            return convert_uudecode($input);
        case '7bit':
        default:
            return $input;
        }
    }

    /**
     * Split RFC822 header string into an associative array
     */
    public static function parse_headers($headers)
    {
        $result  = [];
        $headers = preg_replace('/\r?\n(\t| )+/', ' ', $headers);
        $lines   = explode("\n", $headers);
        $count   = count($lines);

        for ($i=0; $i<$count; $i++) {
            if ($p = strpos($lines[$i], ': ')) {
                $field = strtolower(substr($lines[$i], 0, $p));
                $value = trim(substr($lines[$i], $p+1));
                if (!empty($value)) {
                    $result[$field] = $value;
                }
            }
        }

        return $result;
    }

    /**
     * E-mail address list parser
     */
    private static function parse_address_list($str, $decode = true, $fallback = null)
    {
        // remove any newlines and carriage returns before
        $str = preg_replace('/\r?\n(\s|\t)?/', ' ', $str);

        // extract list items, remove comments
        $str = self::explode_header_string(',;', $str, true);

        // simplified regexp, supporting quoted local part
        $email_rx = '([^\s:]+|("\s*(?:[^"\f\n\r\t\v\b\s]+\s*)+"))@\S+';

        $result = [];

        foreach ($str as $key => $val) {
            $name    = '';
            $address = '';
            $val     = trim($val);

            // First token might be a group name, ignore it
            $tokens = self::explode_header_string(' ', $val);
            if (isset($tokens[0]) && $tokens[0][strlen($tokens[0])-1] == ':') {
                $val = substr($val, strlen($tokens[0]));
            }

            if (preg_match('/(.*)<('.$email_rx.')$/', $val, $m)) {
                // Note: There are cases like "Test<test@domain.tld" with no closing bracket,
                // therefor we do not include it in the regexp above, but we have to
                // remove it later, because $email_rx will catch it (#8164)
                $address = rtrim($m[2], '>');
                $name    = trim($m[1]);
            }
            else if (preg_match('/^('.$email_rx.')$/', $val, $m)) {
                $address = $m[1];
                $name    = '';
            }
            // special case (#1489092)
            else if (preg_match('/(\s*<MAILER-DAEMON>)$/', $val, $m)) {
                $address = 'MAILER-DAEMON';
                $name    = substr($val, 0, -strlen($m[1]));
            }
            else if (preg_match('/('.$email_rx.')/', $val, $m)) {
                $name = $m[1];
            }
            else {
                $name = $val;
            }

            // unquote and/or decode name
            if ($name) {
                // An unquoted name ending with colon is a address group name, ignore it
                if ($name[strlen($name)-1] == ':') {
                    $name = '';
                }

                if (strlen($name) > 1 && $name[0] == '"' && $name[strlen($name)-1] == '"') {
                    $name = substr($name, 1, -1);
                    $name = stripslashes($name);
                }

                if ($decode) {
                    $name = self::decode_header($name, $fallback);
                    // some clients encode addressee name with quotes around it
                    if (strlen($name) > 1 && $name[0] == '"' && $name[strlen($name)-1] == '"') {
                        $name = substr($name, 1, -1);
                    }
                }
            }

            if (!$address && $name) {
                $address = $name;
                $name    = '';
            }

            if ($address) {
                $address      = self::fix_email($address);
                $result[$key] = ['name' => $name, 'address' => $address];
            }
        }

        return $result;
    }

    /**
     * Explodes header (e.g. address-list) string into array of strings
     * using specified separator characters with proper handling
     * of quoted-strings and comments (RFC2822)
     *
     * @param string $separator       String containing separator characters
     * @param string $str             Header string
     * @param bool   $remove_comments Enable to remove comments
     *
     * @return array Header items
     */
    public static function explode_header_string($separator, $str, $remove_comments = false)
    {
        $length  = strlen($str);
        $result  = [];
        $quoted  = false;
        $comment = 0;
        $out     = '';

        for ($i=0; $i<$length; $i++) {
            // we're inside a quoted string
            if ($quoted) {
                if ($str[$i] == '"') {
                    $quoted = false;
                }
                else if ($str[$i] == "\\") {
                    if ($comment <= 0) {
                        $out .= "\\";
                    }
                    $i++;
                }
            }
            // we are inside a comment string
            else if ($comment > 0) {
                if ($str[$i] == ')') {
                    $comment--;
                }
                else if ($str[$i] == '(') {
                    $comment++;
                }
                else if ($str[$i] == "\\") {
                    $i++;
                }
                continue;
            }
            // separator, add to result array
            else if (strpos($separator, $str[$i]) !== false) {
                if ($out) {
                    $result[] = $out;
                }
                $out = '';
                continue;
            }
            // start of quoted string
            else if ($str[$i] == '"') {
                $quoted = true;
            }
            // start of comment
            else if ($remove_comments && $str[$i] == '(') {
                $comment++;
            }

            if ($comment <= 0) {
                $out .= $str[$i];
            }
        }

        if ($out && $comment <= 0) {
            $result[] = $out;
        }

        return $result;
    }

    /**
     * Interpret a format=flowed message body according to RFC 2646
     *
     * @param string $text  Raw body formatted as flowed text
     * @param string $mark  Mark each flowed line with specified character
     * @param bool   $delsp Remove the trailing space of each flowed line
     *
     * @return string Interpreted text with unwrapped lines and stuffed space removed
     */
    public static function unfold_flowed($text, $mark = null, $delsp = false)
    {
        $text    = preg_split('/\r?\n/', $text);
        $last    = -1;
        $q_level = 0;
        $marks   = [];

        foreach ($text as $idx => $line) {
            if ($q = strspn($line, '>')) {
                // remove quote chars
                $line = substr($line, $q);
                // remove (optional) space-staffing
                if (isset($line[0]) && $line[0] === ' ') {
                    $line = substr($line, 1);
                }

                // The same paragraph (We join current line with the previous one) when:
                // - the same level of quoting
                // - previous line was flowed
                // - previous line contains more than only one single space (and quote char(s))
                if ($q == $q_level
                    && isset($text[$last]) && $text[$last][strlen($text[$last])-1] == ' '
                    && !preg_match('/^>+ {0,1}$/', $text[$last])
                ) {
                    if ($delsp) {
                        $text[$last] = substr($text[$last], 0, -1);
                    }
                    $text[$last] .= $line;
                    unset($text[$idx]);

                    if ($mark) {
                        $marks[$last] = true;
                    }
                }
                else {
                    $last = $idx;
                }
            }
            else {
                if ($line == '-- ') {
                    $last = $idx;
                }
                else {
                    // remove space-stuffing
                    if (isset($line[0]) && $line[0] === ' ') {
                        $line = substr($line, 1);
                    }

                    $last_len = isset($text[$last]) ? strlen($text[$last]) : 0;

                    if (
                        $last_len && $line && !$q_level && $text[$last] != '-- '
                        && isset($text[$last][$last_len-1]) && $text[$last][$last_len-1] == ' '
                    ) {
                        if ($delsp) {
                            $text[$last] = substr($text[$last], 0, -1);
                        }
                        $text[$last] .= $line;
                        unset($text[$idx]);

                        if ($mark) {
                            $marks[$last] = true;
                        }
                    }
                    else {
                        $text[$idx] = $line;
                        $last = $idx;
                    }
                }
            }
            $q_level = $q;
        }

        if (!empty($marks)) {
            foreach (array_keys($marks) as $mk) {
                $text[$mk] = $mark . $text[$mk];
            }
        }

        return implode("\r\n", $text);
    }

    /**
     * Wrap the given text to comply with RFC 2646
     *
     * @param string $text    Text to wrap
     * @param int    $length  Length
     * @param string $charset Character encoding of $text
     *
     * @return string Wrapped text
     */
    public static function format_flowed($text, $length = 72, $charset = null)
    {
        $text = preg_split('/\r?\n/', $text);

        foreach ($text as $idx => $line) {
            if ($line != '-- ') {
                if ($level = strspn($line, '>')) {
                    // remove quote chars
                    $line = substr($line, $level);
                    // remove (optional) space-staffing and spaces before the line end
                    $line = rtrim($line, ' ');
                    if (isset($line[0]) && $line[0] === ' ') {
                        $line = substr($line, 1);
                    }

                    $prefix = str_repeat('>', $level) . ' ';
                    $line   = $prefix . self::wordwrap($line, $length - $level - 2, " \r\n$prefix", false, $charset);
                }
                else if ($line) {
                    $line = self::wordwrap(rtrim($line), $length - 2, " \r\n", false, $charset);
                    // space-stuffing
                    $line = preg_replace('/(^|\r\n)(From| |>)/', '\\1 \\2', $line);
                }

                $text[$idx] = $line;
            }
        }

        return implode("\r\n", $text);
    }

    /**
     * Improved wordwrap function with multibyte support.
     * The code is based on Zend_Text_MultiByte::wordWrap().
     *
     * @param string $string      Text to wrap
     * @param int    $width       Line width
     * @param string $break       Line separator
     * @param bool   $cut         Enable to cut word
     * @param string $charset     Charset of $string
     * @param bool   $wrap_quoted When enabled quoted lines will not be wrapped
     *
     * @return string Text
     */
    public static function wordwrap($string, $width = 75, $break = "\n", $cut = false, $charset = null, $wrap_quoted = true)
    {
        // Note: Never try to use iconv instead of mbstring functions here
        //       Iconv's substr/strlen are 100x slower (#1489113)

        if ($charset && $charset != RCUBE_CHARSET) {
            $charset = rcube_charset::parse_charset($charset);
            mb_internal_encoding($charset);
        }

        // Convert \r\n to \n, this is our line-separator
        $string       = str_replace("\r\n", "\n", $string);
        $separator    = "\n"; // must be 1 character length
        $result       = [];

        while (($stringLength = mb_strlen($string)) > 0) {
            $breakPos = mb_strpos($string, $separator, 0);

            // quoted line (do not wrap)
            if ($wrap_quoted && $string[0] == '>') {
                if ($breakPos === $stringLength - 1 || $breakPos === false) {
                    $subString = $string;
                    $cutLength = null;
                }
                else {
                    $subString = mb_substr($string, 0, $breakPos);
                    $cutLength = $breakPos + 1;
                }
            }
            // next line found and current line is shorter than the limit
            else if ($breakPos !== false && $breakPos < $width) {
                if ($breakPos === $stringLength - 1) {
                    $subString = $string;
                    $cutLength = null;
                }
                else {
                    $subString = mb_substr($string, 0, $breakPos);
                    $cutLength = $breakPos + 1;
                }
            }
            else {
                $subString = mb_substr($string, 0, $width);

                // last line
                if ($breakPos === false && $subString === $string) {
                    $cutLength = null;
                }
                else {
                    $nextChar = mb_substr($string, $width, 1);

                    if ($nextChar === ' ' || $nextChar === $separator) {
                        $afterNextChar = mb_substr($string, $width + 1, 1);

                        // Note: mb_substr() does never return False
                        if ($afterNextChar === false || $afterNextChar === '') {
                            $subString .= $nextChar;
                        }

                        $cutLength = mb_strlen($subString) + 1;
                    }
                    else {
                        $spacePos = mb_strrpos($subString, ' ', 0);

                        if ($spacePos !== false) {
                            $subString = mb_substr($subString, 0, $spacePos);
                            $cutLength = $spacePos + 1;
                        }
                        else if ($cut === false) {
                            $spacePos = mb_strpos($string, ' ', 0);

                            if ($spacePos !== false && ($breakPos === false || $spacePos < $breakPos)) {
                                $subString = mb_substr($string, 0, $spacePos);
                                $cutLength = $spacePos + 1;
                            }
                            else if ($breakPos === false) {
                                $subString = $string;
                                $cutLength = null;
                            }
                            else {
                                $subString = mb_substr($string, 0, $breakPos);
                                $cutLength = $breakPos + 1;
                            }
                        }
                        else {
                            $cutLength = $width;
                        }
                    }
                }
            }

            $result[] = $subString;

            if ($cutLength !== null) {
                $string = mb_substr($string, $cutLength, ($stringLength - $cutLength));
            }
            else {
                break;
            }
        }

        if ($charset && $charset != RCUBE_CHARSET) {
            mb_internal_encoding(RCUBE_CHARSET);
        }

        return implode($break, $result);
    }

    /**
     * A method to guess the mime_type of an attachment.
     *
     * @param string  $path        Path to the file or file contents
     * @param string  $name        File name (with suffix)
     * @param string  $failover    Mime type supplied for failover
     * @param bool    $is_stream   Set to True if $path contains file contents
     * @param bool    $skip_suffix Set to True if the config/mimetypes.php map should be ignored
     *
     * @return string
     * @author Till Klampaeckel <till@php.net>
     * @see    http://de2.php.net/manual/en/ref.fileinfo.php
     * @see    http://de2.php.net/mime_content_type
     */
    public static function file_content_type($path, $name, $failover = 'application/octet-stream', $is_stream = false, $skip_suffix = false)
    {
        $mime_type = null;
        $config    = rcube::get_instance()->config;

        // Detect mimetype using filename extension
        if (!$skip_suffix) {
            $mime_type = self::file_ext_type($name);
        }

        // try fileinfo extension if available
        if (!$mime_type && function_exists('finfo_open')) {
            $mime_magic = $config->get('mime_magic');
            // null as a 2nd argument should be the same as no argument
            // this however is not true on all systems/versions
            if ($mime_magic) {
                $finfo = finfo_open(FILEINFO_MIME, $mime_magic);
            }
            else {
                $finfo = finfo_open(FILEINFO_MIME);
            }

            if ($finfo) {
                $func      = $is_stream ? 'finfo_buffer' : 'finfo_file';
                $mime_type = $func($finfo, $path, FILEINFO_MIME_TYPE);
                finfo_close($finfo);
            }
        }

        // try PHP's mime_content_type
        if (!$mime_type && !$is_stream && function_exists('mime_content_type')) {
            $mime_type = @mime_content_type($path);
        }

        // fall back to user-submitted string
        if (!$mime_type) {
            $mime_type = $failover;
        }

        return $mime_type;
    }

    /**
     * File type detection based on file name only.
     *
     * @param string $filename Path to the file or file contents
     *
     * @return string|null Mimetype label
     */
    public static function file_ext_type($filename)
    {
        static $mime_ext = [];

        if (empty($mime_ext)) {
            foreach (rcube::get_instance()->config->resolve_paths('mimetypes.php') as $fpath) {
                $mime_ext = array_merge($mime_ext, (array) @include($fpath));
            }
        }

        // use file name suffix with hard-coded mime-type map
        if (!empty($mime_ext) && $filename) {
            $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
            if ($ext && !empty($mime_ext[$ext])) {
                return $mime_ext[$ext];
            }
        }
    }

    /**
     * Get mimetype => file extension mapping
     *
     * @param string $mimetype Mime-Type to get extensions for
     *
     * @return array List of extensions matching the given mimetype or a hash array
     *               with ext -> mimetype mappings if $mimetype is not given
     */
    public static function get_mime_extensions($mimetype = null)
    {
        static $mime_types, $mime_extensions;

        // return cached data
        if (is_array($mime_types)) {
            return $mimetype ? (isset($mime_types[$mimetype]) ? $mime_types[$mimetype] : []) : $mime_extensions;
        }

        // load mapping file
        $file_paths = [];

        if ($mime_types = rcube::get_instance()->config->get('mime_types')) {
            $file_paths[] = $mime_types;
        }

        // try common locations
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
            $file_paths[] = 'C:/xampp/apache/conf/mime.types';
        }
        else {
            $file_paths[] = '/etc/mime.types';
            $file_paths[] = '/etc/httpd/mime.types';
            $file_paths[] = '/etc/httpd2/mime.types';
            $file_paths[] = '/etc/apache/mime.types';
            $file_paths[] = '/etc/apache2/mime.types';
            $file_paths[] = '/etc/nginx/mime.types';
            $file_paths[] = '/usr/local/etc/httpd/conf/mime.types';
            $file_paths[] = '/usr/local/etc/apache/conf/mime.types';
            $file_paths[] = '/usr/local/etc/apache24/mime.types';
        }

        $mime_types      = [];
        $mime_extensions = [];
        $lines = [];
        $regex = "/([\w\+\-\.\/]+)\s+([\w\s]+)/i";

        foreach ($file_paths as $fp) {
            if (@is_readable($fp)) {
                $lines = file($fp, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                break;
            }
        }

        foreach ($lines as $line) {
             // skip comments or mime types w/o any extensions
            if ($line[0] == '#' || !preg_match($regex, $line, $matches)) {
                continue;
            }

            $mime = $matches[1];

            foreach (explode(' ', $matches[2]) as $ext) {
                $ext = trim($ext);
                $mime_types[$mime][]   = $ext;
                $mime_extensions[$ext] = $mime;
            }
        }

        // fallback to some well-known types most important for daily emails
        if (empty($mime_types)) {
            foreach (rcube::get_instance()->config->resolve_paths('mimetypes.php') as $fpath) {
                $mime_extensions = array_merge($mime_extensions, (array) @include($fpath));
            }

            foreach ($mime_extensions as $ext => $mime) {
                $mime_types[$mime][] = $ext;
            }
        }

        // Add some known aliases that aren't included by some mime.types (#1488891)
        // the order is important here so standard extensions have higher prio
        $aliases = [
            'image/gif'      => ['gif'],
            'image/png'      => ['png'],
            'image/x-png'    => ['png'],
            'image/jpeg'     => ['jpg', 'jpeg', 'jpe'],
            'image/jpg'      => ['jpg', 'jpeg', 'jpe'],
            'image/pjpeg'    => ['jpg', 'jpeg', 'jpe'],
            'image/tiff'     => ['tif'],
            'image/bmp'      => ['bmp'],
            'image/x-ms-bmp' => ['bmp'],
            'message/rfc822' => ['eml'],
            'text/x-mail'    => ['eml'],
        ];

        foreach ($aliases as $mime => $exts) {
            if (isset($mime_types[$mime])) {
                $mime_types[$mime] = array_unique(array_merge((array) $mime_types[$mime], $exts));
            }
            else {
                $mime_types[$mime] = $exts;
            }

            foreach ($exts as $ext) {
                if (!isset($mime_extensions[$ext])) {
                    $mime_extensions[$ext] = $mime;
                }
            }
        }

        if ($mimetype) {
            return !empty($mime_types[$mimetype]) ? $mime_types[$mimetype] : [];
        }

        return $mime_extensions;
    }

    /**
     * Detect image type of the given binary data by checking magic numbers.
     *
     * @param string $data  Binary file content
     *
     * @return string Detected mime-type or jpeg as fallback
     */
    public static function image_content_type($data)
    {
        $type = 'jpeg';
        if      (preg_match('/^\x89\x50\x4E\x47/', $data)) $type = 'png';
        else if (preg_match('/^\x47\x49\x46\x38/', $data)) $type = 'gif';
        else if (preg_match('/^\x00\x00\x01\x00/', $data)) $type = 'ico';
    //  else if (preg_match('/^\xFF\xD8\xFF\xE0/', $data)) $type = 'jpeg';

        return 'image/' . $type;
    }

    /**
     * Try to fix invalid email addresses
     */
    public static function fix_email($email)
    {
        $parts = rcube_utils::explode_quoted_string('@', $email);

        foreach ($parts as $idx => $part) {
            // remove redundant quoting (#1490040)
            if (isset($part[0]) && $part[0] == '"' && preg_match('/^"([a-zA-Z0-9._+=-]+)"$/', $part, $m)) {
                $parts[$idx] = $m[1];
            }
        }

        return implode('@', $parts);
    }

    /**
     * Fix mimetype name.
     *
     * @param string $type Mimetype
     *
     * @return string Mimetype
     */
    public static function fix_mimetype($type)
    {
        $type    = strtolower(trim($type));
        $aliases = [
            'image/x-ms-bmp' => 'image/bmp',        // #4771
            'pdf'            => 'application/pdf',  // #6816
        ];

        if (!empty($aliases[$type])) {
            return $aliases[$type];
        }

        // Some versions of Outlook create garbage Content-Type:
        // application/pdf.A520491B_3BF7_494D_8855_7FAC2C6C0608
        if (preg_match('/^application\/pdf.+/', $type)) {
            return 'application/pdf';
        }

        // treat image/pjpeg (image/pjpg, image/jpg) as image/jpeg (#4196)
        if (preg_match('/^image\/p?jpe?g$/', $type)) {
            return 'image/jpeg';
        }

        return $type;
    }
}
lib/Roundcube/rcube_output.php000064400000030774151727150640012514 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | CONTENTS:                                                             |
 |   Abstract class for output generation                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for output generation
 *
 * @package    Framework
 * @subpackage View
 */
abstract class rcube_output
{
    public $browser;

    protected $app;
    protected $config;
    protected $charset = RCUBE_CHARSET;
    protected $env     = [];
    protected $skins   = [];


    /**
     * Object constructor
     */
    public function __construct()
    {
        $this->app     = rcube::get_instance();
        $this->config  = $this->app->config;
        $this->browser = new rcube_browser();
    }

    /**
     * Magic getter
     */
    public function __get($var)
    {
        // allow read-only access to some members
        switch ($var) {
            case 'env':     return $this->env;
            case 'skins':   return $this->skins;
            case 'charset': return $this->charset;
        }
    }

    /**
     * Setter for output charset.
     * To be specified in a meta tag and sent as http-header
     *
     * @param string $charset Charset name
     */
    public function set_charset($charset)
    {
        $this->charset = $charset;
    }

    /**
     * Getter for output charset
     *
     * @return string Output charset name
     */
    public function get_charset()
    {
        return $this->charset;
    }

    /**
     * Set environment variable
     *
     * @param string $name  Property name
     * @param mixed  $value Property value
     */
    public function set_env($name, $value)
    {
        $this->env[$name] = $value;
    }

    /**
     * Environment variable getter.
     *
     * @param string $name Property name
     *
     * @return mixed Property value
     */
    public function get_env($name)
    {
        return $this->env[$name] ?? null;
    }

    /**
     * Delete all stored env variables and commands
     */
    public function reset()
    {
        $this->env = [];
    }

    /**
     * Invoke display_message command
     *
     * @param string  $message  Message to display
     * @param string  $type     Message type [notice|confirm|error]
     * @param array   $vars     Key-value pairs to be replaced in localized text
     * @param bool    $override Override last set message
     * @param int     $timeout  Message displaying time in seconds
     */
    abstract function show_message($message, $type = 'notice', $vars = null, $override = true, $timeout = 0);

    /**
     * Redirect to a certain url.
     *
     * @param array|string $p     Either a string with the action or url parameters as key-value pairs
     * @param int          $delay Delay in seconds
     */
    abstract function redirect($p = [], $delay = 1);

    /**
     * Send output to the client.
     */
    abstract function send();

    /**
     * Send HTTP headers to prevent caching a page
     */
    public function nocacheing_headers()
    {
        if (headers_sent()) {
            return;
        }

        header("Expires: ".gmdate("D, d M Y H:i:s")." GMT");
        header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

        // We need to set the following headers to make downloads work using IE in HTTPS mode.
        if ($this->browser->ie && rcube_utils::https_check()) {
            header('Pragma: private');
            header("Cache-Control: private, must-revalidate");
        }
        else {
            header("Cache-Control: private, no-cache, no-store, must-revalidate, post-check=0, pre-check=0");
            header("Pragma: no-cache");
        }
    }

    /**
     * Send header with expire date 30 days in future
     *
     * @param int $offset Expiration time in seconds
     */
    public function future_expire_header($offset = 2600000)
    {
        if (headers_sent()) {
            return;
        }

        header("Expires: " . gmdate("D, d M Y H:i:s", time()+$offset) . " GMT");
        header("Cache-Control: max-age=$offset");
        header("Pragma: ");
    }

    /**
     * Send browser compatibility/security/privacy headers
     *
     * @param bool $privacy Enable privacy headers
     */
    public function common_headers($privacy = true)
    {
        if (headers_sent()) {
            return;
        }

        $headers = [];

        // Unlock IE compatibility mode
        if ($this->browser->ie) {
            $headers['X-UA-Compatible'] = 'IE=edge';
        }

        if ($privacy) {
            // Request browser to disable DNS prefetching (CVE-2010-0464)
            $headers['X-DNS-Prefetch-Control'] = 'off';

            // Request browser disable Referer (sic) header
            $headers['Referrer-Policy'] = 'same-origin';
        }

        // send CSRF and clickjacking protection headers
        if ($xframe = $this->app->config->get('x_frame_options', 'sameorigin')) {
            $headers['X-Frame-Options'] = $xframe;
        }

        $plugin = $this->app->plugins->exec_hook('common_headers', ['headers' => $headers, 'privacy' => $privacy]);

        foreach ($plugin['headers'] as $header => $value) {
            header("$header: $value");
        }
    }

    /**
     * Send headers related to file downloads.
     *
     * @param string $filename File name
     * @param array  $params   Optional parameters:
     *                         type         - File content type (default: 'application/octet-stream')
     *                         disposition  - Download type: 'inline' or 'attachment' (default)
     *                         length       - Content length
     *                         charset      - File name character set
     *                         type_charset - Content character set
     *                         time_limit   - Script execution limit (default: 3600)
     */
    public function download_headers($filename, $params = [])
    {
        // For security reasons we validate type, filename and charset params.
        // Some HTTP servers might drop a header that is malformed or very long, this then
        // can lead to web browsers unintentionally executing javascript code in the body.

        if (empty($params['disposition'])) {
            $params['disposition'] = 'attachment';
        }

        $ctype       = 'application/octet-stream';
        $disposition = $params['disposition'];

        if (!empty($params['type']) && is_string($params['type']) && strlen($params['type']) < 256
            && preg_match('/^[a-z0-9!#$&.+^_-]+\/[a-z0-9!#$&.+^_-]+$/i', $params['type'])
        ) {
            $ctype = $params['type'];
        }

        if ($disposition == 'inline' && stripos($ctype, 'text') === 0) {
            $charset = $this->charset;
            if (!empty($params['type_charset']) && rcube_charset::is_valid($params['type_charset'])) {
                $charset = $params['type_charset'];
            }

            $ctype .= "; charset={$charset}";
        }

        if (is_string($filename) && strlen($filename) > 0 && strlen($filename) <= 1024) {
            // For non-ascii characters we'll use RFC2231 syntax
            if (!preg_match('/[^a-zA-Z0-9_.:,?;@+ -]/', $filename)) {
                $disposition .= "; filename=\"{$filename}\"";
            }
            else {
                $filename = rawurlencode($filename);
                $charset  = $this->charset;
                if (!empty($params['charset']) && rcube_charset::is_valid($params['charset'])) {
                    $charset = $params['charset'];
                }

                $disposition .= "; filename*={$charset}''{$filename}";
            }
        }

        header("Content-Disposition: {$disposition}");
        header("Content-Type: {$ctype}");

        if ($params['disposition'] == 'attachment' && $this->browser->ie) {
            header("Content-Type: application/force-download");
        }

        if (isset($params['length'])) {
            header("Content-Length: " . $params['length']);
        }

        // don't kill the connection if download takes more than 30 sec.
        if (!array_key_exists('time_limit', $params)) {
            $params['time_limit'] = 3600;
        }

        if (is_numeric($params['time_limit'])) {
            @set_time_limit($params['time_limit']);
        }
    }

    /**
     * Show error page and terminate script execution
     *
     * @param int    $code     Error code
     * @param string $message  Error message
     */
    public function raise_error($code, $message)
    {
        // STUB: to be overloaded by specific output classes
        fwrite(STDERR, "Error $code: $message\n");
        exit(-1);
    }

    /**
     * Create an edit field for inclusion on a form
     *
     * @param string $name   Field name
     * @param string $value  Field value
     * @param array  $attrib HTML element attributes for the field
     * @param string $type   HTML element type (default 'text')
     *
     * @return string HTML field definition
     */
    public static function get_edit_field($name, $value, $attrib = [], $type = 'text')
    {
        static $colcounts = [];

        $fname           = '_' . $name;
        $attrib['name']  = $fname . (!empty($attrib['array']) ? '[]' : '');
        $attrib['class'] = trim((!empty($attrib['class']) ? $attrib['class'] : '') . ' ff_' . $name);

        if ($type == 'checkbox') {
            $attrib['value'] = '1';
            $input = new html_checkbox($attrib);
        }
        else if ($type == 'textarea') {
            if (!empty($attrib['size'])) {
                $attrib['cols'] = $attrib['size'];
            }
            $input = new html_textarea($attrib);
        }
        else if ($type == 'select') {
            $input = new html_select($attrib);
            if (empty($attrib['skip-empty'])) {
                $input->add('---', '');
            }
            if (!empty($attrib['options'])) {
                $input->add(array_values($attrib['options']), array_keys($attrib['options']));
            }
        }
        else if ($type == 'password' || (isset($attrib['type']) && $attrib['type'] == 'password')) {
            $input = new html_passwordfield($attrib);
        }
        else {
            if (!isset($attrib['type']) || ($attrib['type'] != 'text' && $attrib['type'] != 'hidden')) {
                $attrib['type'] = 'text';
            }
            $input = new html_inputfield($attrib);
        }

        // use value from post
        if (isset($_POST[$fname])) {
            $postvalue = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true);
            if (!empty($attrib['array'])) {
                if (!isset($colcounts[$name])) {
                    $colcounts[$name] = 0;
                }
                $idx   = intval($colcounts[$name]++);
                $value = $postvalue[$idx] ?? null;
            }
            else {
                $value = $postvalue;
            }
        }

        return $input->show($value);
    }

    /**
     * Convert a variable into a javascript object notation
     *
     * @param mixed $input  Input value
     * @param bool  $pretty Enable JSON formatting
     * @param bool  $inline Enable inline mode (generates output safe for use inside HTML)
     *
     * @return string Serialized JSON string
     */
    public static function json_serialize($input, $pretty = false, $inline = true)
    {
        $options = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_INVALID_UTF8_IGNORE;

        // JSON_HEX_TAG is needed for inlining JSON inside of the <script> tag
        // if input contains a html tag it will cause issues (#6207)
        if ($inline) {
            $options |= JSON_HEX_TAG;
        }

        if ($pretty) {
            $options |= JSON_PRETTY_PRINT;
        }

        return json_encode($input, $options);
    }
}
lib/Roundcube/rcube_plugin_api.php000064400000070235151727150640013277 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Plugins repository                                                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

// location where plugins are loaded from
if (!defined('RCUBE_PLUGINS_DIR')) {
    define('RCUBE_PLUGINS_DIR', RCUBE_INSTALL_PATH . 'plugins/');
}

/**
 * The plugin loader and global API
 *
 * @package    Framework
 * @subpackage PluginAPI
 */
class rcube_plugin_api
{
    static protected $instance;

    /** @var string */
    public $dir;
    /** @var string */
    public $url = 'plugins/';
    /** @var string */
    public $task = '';
    /** @var bool */
    public $initialized = false;

    public $output;
    public $handlers              = [];
    public $allowed_prefs         = [];
    public $allowed_session_prefs = [];
    public $active_plugins        = [];

    protected $plugins           = [];
    protected $plugins_initialized = [];
    protected $tasks             = [];
    protected $actions           = [];
    protected $actionmap         = [];
    protected $objectsmap        = [];
    protected $template_contents = [];
    protected $exec_stack        = [];
    protected $deprecated_hooks  = [];


    /**
     * This implements the 'singleton' design pattern
     *
     * @return rcube_plugin_api The one and only instance if this class
     */
    static function get_instance()
    {
        if (!self::$instance) {
            self::$instance = new rcube_plugin_api();
        }

        return self::$instance;
    }

    /**
     * Private constructor
     */
    protected function __construct()
    {
        $this->dir = slashify(RCUBE_PLUGINS_DIR);
    }

    /**
     * Initialize plugin engine
     *
     * This has to be done after rcmail::load_gui() or rcmail::json_init()
     * was called because plugins need to have access to rcmail->output
     *
     * @param rcube  $app  Instance of the rcube base class
     * @param string $task Current application task (used for conditional plugin loading)
     */
    public function init($app, $task = '')
    {
        $this->task   = $task;
        $this->output = $app->output;

        // register an internal hook
        $this->register_hook('template_container', [$this, 'template_container_hook']);
        // maybe also register a shutdown function which triggers
        // shutdown functions of all plugin objects

        foreach ($this->plugins as $plugin) {
            // ... task, request type and framed mode
            if (empty($this->plugins_initialized[$plugin->ID]) && !$this->filter($plugin)) {
                $plugin->init();
                $this->plugins_initialized[$plugin->ID] = $plugin;
            }
        }

        // we have finished initializing all plugins
        $this->initialized = true;
    }

    /**
     * Load and init all enabled plugins
     *
     * This has to be done after rcmail::load_gui() or rcmail::json_init()
     * was called because plugins need to have access to rcmail->output
     *
     * @param array $plugins_enabled  List of configured plugins to load
     * @param array $plugins_required List of plugins required by the application
     */
    public function load_plugins($plugins_enabled, $plugins_required = [])
    {
        foreach ($plugins_enabled as $plugin_name) {
            $this->load_plugin($plugin_name);
        }

        // check existence of all required core plugins
        foreach ($plugins_required as $plugin_name) {
            $loaded = false;
            foreach ($this->plugins as $plugin) {
                if ($plugin instanceof $plugin_name) {
                    $loaded = true;
                    break;
                }
            }

            // load required core plugin if no derivate was found
            if (!$loaded) {
                $loaded = $this->load_plugin($plugin_name);
            }

            // trigger fatal error if still not loaded
            if (!$loaded) {
                rcube::raise_error([
                        'code' => 520, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => "Required plugin $plugin_name was not loaded"
                    ],
                    true, true
                );
            }
        }
    }

    /**
     * Load the specified plugin
     *
     * @param string $plugin_name Plugin name
     * @param bool   $force        Force loading of the plugin even if it doesn't match the filter
     * @param bool   $require      Require loading of the plugin, error if it doesn't exist
     *
     * @return bool True on success, false if not loaded or failure
     */
    public function load_plugin($plugin_name, $force = false, $require = true)
    {
        static $plugins_dir;

        if (!$plugins_dir) {
            $dir         = dir($this->dir);
            $plugins_dir = unslashify($dir->path);
        }

        // Validate the plugin name to prevent from path traversal
        if (preg_match('/[^a-zA-Z0-9_-]/', $plugin_name)) {
            rcube::raise_error([
                    'code' => 520, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Invalid plugin name: $plugin_name"
                ],
                true, false
            );

            return false;
        }

        // plugin already loaded?
        if (!isset($this->plugins[$plugin_name])) {
            $fn = "$plugins_dir/$plugin_name/$plugin_name.php";

            if (!is_readable($fn)) {
                if ($require) {
                    rcube::raise_error([
                            'code' => 520, 'file' => __FILE__, 'line' => __LINE__,
                            'message' => "Failed to load plugin file $fn"
                        ],
                        true, false
                    );
                }

                return false;
            }

            if (!class_exists($plugin_name, false)) {
                include $fn;
            }

            // instantiate class if exists
            if (!class_exists($plugin_name, false)) {
                rcube::raise_error([
                        'code' => 520, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => "No plugin class $plugin_name found in $fn"
                    ],
                    true, false
                );

                return false;
            }

            $plugin = new $plugin_name($this);
            $this->active_plugins[] = $plugin_name;

            // check inheritance...
            if (is_subclass_of($plugin, 'rcube_plugin')) {
                // call onload method on plugin if it exists.
                // this is useful if you want to be called early in the boot process
                if (method_exists($plugin, 'onload')) {
                    $plugin->onload();
                }

                if (!empty($plugin->allowed_prefs)) {
                    $this->allowed_prefs = array_merge($this->allowed_prefs, $plugin->allowed_prefs);
                }

                $this->plugins[$plugin_name] = $plugin;
            }
        }

        if (!empty($this->plugins[$plugin_name])) {
            $plugin = $this->plugins[$plugin_name];

            // init a plugin only if $force is set or if we're called after initialization
            if (
                ($force || $this->initialized)
                && empty($this->plugins_initialized[$plugin_name])
                && ($force || !$this->filter($plugin))
            ) {
                $plugin->init();
                $this->plugins_initialized[$plugin_name] = $plugin;
            }
        }

        return true;
    }

    /**
     * Check if we should prevent this plugin from initializing
     *
     * @param rcube_plugin $plugin Plugin object
     *
     * @return bool
     */
    private function filter($plugin)
    {
        return ($plugin->noajax  && !(is_object($this->output) && $this->output->type == 'html'))
             || ($plugin->task && !preg_match('/^('.$plugin->task.')$/i', $this->task))
             || ($plugin->noframe && !empty($_REQUEST['_framed']));
    }

    /**
     * Get information about a specific plugin.
     * This is either provided by a plugin's info() method or extracted from a package.xml or a composer.json file
     *
     * @param string $plugin_name Plugin name
     *
     * @return array Meta information about a plugin or False if plugin was not found
     */
    public function get_info($plugin_name)
    {
        static $composer_lock, $license_uris = [
            'Apache'       => 'http://www.apache.org/licenses/LICENSE-2.0.html',
            'Apache-2'     => 'http://www.apache.org/licenses/LICENSE-2.0.html',
            'Apache-1'     => 'http://www.apache.org/licenses/LICENSE-1.0',
            'Apache-1.1'   => 'http://www.apache.org/licenses/LICENSE-1.1',
            'GPL'          => 'http://www.gnu.org/licenses/gpl.html',
            'GPL-2.0'      => 'http://www.gnu.org/licenses/gpl-2.0.html',
            'GPL-2.0+'     => 'http://www.gnu.org/licenses/gpl.html',
            'GPL-3.0'      => 'http://www.gnu.org/licenses/gpl-3.0.html',
            'GPL-3.0+'     => 'http://www.gnu.org/licenses/gpl.html',
            'AGPL-3.0'     => 'http://www.gnu.org/licenses/agpl.html',
            'AGPL-3.0+'     => 'http://www.gnu.org/licenses/agpl.html',
            'LGPL'         => 'http://www.gnu.org/licenses/lgpl.html',
            'LGPL-2.0'     => 'http://www.gnu.org/licenses/lgpl-2.0.html',
            'LGPL-2.1'     => 'http://www.gnu.org/licenses/lgpl-2.1.html',
            'LGPL-3.0'     => 'http://www.gnu.org/licenses/lgpl.html',
            'LGPL-3.0+'    => 'http://www.gnu.org/licenses/lgpl.html',
            'BSD'          => 'http://opensource.org/licenses/bsd-license.html',
            'BSD-2-Clause' => 'http://opensource.org/licenses/BSD-2-Clause',
            'BSD-3-Clause' => 'http://opensource.org/licenses/BSD-3-Clause',
            'FreeBSD'      => 'http://opensource.org/licenses/BSD-2-Clause',
            'MIT'          => 'http://www.opensource.org/licenses/mit-license.php',
            'PHP'          => 'http://opensource.org/licenses/PHP-3.0',
            'PHP-3'        => 'http://www.php.net/license/3_01.txt',
            'PHP-3.0'      => 'http://www.php.net/license/3_0.txt',
            'PHP-3.01'     => 'http://www.php.net/license/3_01.txt',
        ];

        $dir  = dir($this->dir);
        $fn   = unslashify($dir->path) . "/$plugin_name/$plugin_name.php";
        $info = false;

        // Validate the plugin name to prevent from path traversal
        if (preg_match('/[^a-zA-Z0-9_-]/', $plugin_name)) {
            rcube::raise_error([
                    'code' => 520, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Invalid plugin name: $plugin_name"
                ],
                true, false
            );

            return false;
        }

        if (!class_exists($plugin_name, false)) {
            if (is_readable($fn)) {
                include($fn);
            }
            else {
                return false;
            }
        }

        if (class_exists($plugin_name)) {
            $info = $plugin_name::info();
        }

        // fall back to composer.json file
        if (empty($info)) {
            $info = [];
            $composer = INSTALL_PATH . "/plugins/$plugin_name/composer.json";

            if (is_readable($composer) && ($json = json_decode(file_get_contents($composer), true))) {
                // Build list of plugins required
                $require = [];
                if (!empty($json['require'])) {
                    foreach (array_keys((array) $json['require']) as $dname) {
                        if (!preg_match('|^([^/]+)/([a-zA-Z0-9_-]+)$|', $dname, $m)) {
                            continue;
                        }

                        $vendor = $m[1];
                        $name   = $m[2];

                        if ($name != 'plugin-installer' && $vendor != 'pear' && $vendor != 'pear-pear') {
                            $dpath = unslashify($dir->path) . "/$name/$name.php";
                            if (is_readable($dpath)) {
                                $require[] = $name;
                            }
                        }
                    }
                }

                if (!empty($json['name']) && is_string($json['name']) && strpos($json['name'], '/') !== false) {
                    list($info['vendor'], $info['name']) = explode('/', $json['name'], 2);
                }

                $info['version'] = isset($json['version']) ? $json['version'] : null;
                $info['license'] = isset($json['license']) ? $json['license'] : null;
                $info['require'] = $require;

                if (!empty($json['homepage'])) {
                    $info['uri'] = $json['homepage'];
                }
            }

            // read local composer.lock file (once)
            if (!isset($composer_lock)) {
                $composer_lock = @json_decode(@file_get_contents(INSTALL_PATH . "/composer.lock"), true);
                if ($composer_lock && !empty($composer_lock['packages'])) {
                    foreach ($composer_lock['packages'] as $i => $package) {
                        $composer_lock['installed'][$package['name']] = $package;
                    }
                }
            }

            // load additional information from local composer.lock file
            if (!empty($json['name']) && $composer_lock && !empty($composer_lock['installed'])
                && !empty($composer_lock['installed'][$json['name']])
            ) {
                $lock            = $composer_lock['installed'][$json['name']];
                $info['version'] = $lock['version'];
                $info['uri']     = !empty($lock['homepage']) ? $lock['homepage'] : $lock['source']['url'];
                $info['src_uri'] = !empty($lock['dist']['url']) ? $lock['dist']['url'] : $lock['source']['url'];
            }
        }

        // fall back to package.xml file
        if (empty($info)) {
            $package = INSTALL_PATH . "/plugins/$plugin_name/package.xml";
            if (is_readable($package) && ($file = file_get_contents($package))) {
                $doc = new DOMDocument();
                $doc->loadXML($file);
                $xpath = new DOMXPath($doc);
                $xpath->registerNamespace('rc', "http://pear.php.net/dtd/package-2.0");

                // XPaths of plugin metadata elements
                $metadata = [
                    'name'        => 'string(//rc:package/rc:name)',
                    'version'     => 'string(//rc:package/rc:version/rc:release)',
                    'license'     => 'string(//rc:package/rc:license)',
                    'license_uri' => 'string(//rc:package/rc:license/@uri)',
                    'src_uri'     => 'string(//rc:package/rc:srcuri)',
                    'uri'         => 'string(//rc:package/rc:uri)',
                ];

                foreach ($metadata as $key => $path) {
                    $info[$key] = $xpath->evaluate($path);
                }

                // dependent required plugins (can be used, but not included in config)
                $deps = $xpath->evaluate('//rc:package/rc:dependencies/rc:required/rc:package/rc:name');
                for ($i = 0; $i < $deps->length; $i++) {
                    $dn = $deps->item($i)->nodeValue;
                    $info['require'][] = $dn;
                }
            }
        }

        // At least provide the name
        if (!$info && class_exists($plugin_name)) {
            $info = ['name' => $plugin_name, 'version' => '--'];
        }
        else if (!empty($info['license'])) {
            // Convert license identifier to something shorter
            if (preg_match('/^([ALGP]+)[-v]([0-9.]+)(\+|-or-later)?/', $info['license'], $matches)) {
                $info['license'] = $matches[1] . '-' . sprintf('%.1f', $matches[2])
                    . (!empty($matches[3]) ? '+' : '');
            }

            if (empty($info['license_uri']) && !empty($license_uris[$info['license']])) {
                $info['license_uri'] = $license_uris[$info['license']];
            }
        }

        return $info;
    }

    /**
     * Allows a plugin object to register a callback for a certain hook
     *
     * @param string   $hook     Hook name
     * @param callable $callback A callback function
     */
    public function register_hook($hook, $callback)
    {
        if (is_callable($callback)) {
            if (isset($this->deprecated_hooks[$hook])) {
                rcube::raise_error([
                        'code' => 522, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => "Deprecated hook name. "
                            . $hook . ' -> ' . $this->deprecated_hooks[$hook]
                    ], true, false
                );
                $hook = $this->deprecated_hooks[$hook];
            }
            $this->handlers[$hook][] = $callback;
        }
        else {
            rcube::raise_error([
                    'code' => 521, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Invalid callback function for $hook"
                ],
                true, false
            );
        }
    }

    /**
     * Allow a plugin object to unregister a callback.
     *
     * @param string   $hook     Hook name
     * @param callable $callback A callback function
     */
    public function unregister_hook($hook, $callback)
    {
        if (empty($this->handlers[$hook])) {
            return;
        }

        $callback_id = array_search($callback, (array) $this->handlers[$hook]);
        if ($callback_id !== false) {
            // array_splice() removes the element and re-indexes keys
            // that is required by the 'for' loop in exec_hook() below
            array_splice($this->handlers[$hook], $callback_id, 1);
        }
    }

    /**
     * Triggers a plugin hook.
     * This is called from the application and executes all registered handlers
     *
     * @param string $hook Hook name
     * @param array  $args Named arguments (key->value pairs)
     *
     * @return array The (probably) altered hook arguments
     */
    public function exec_hook($hook, $args = [])
    {
        if (!is_array($args)) {
            $args = ['arg' => $args];
        }

        // TODO: avoid recursion by checking in_array($hook, $this->exec_stack) ?

        $args += ['abort' => false];
        array_push($this->exec_stack, $hook);

        // Use for loop here, so handlers added in the hook will be executed too
        if (!empty($this->handlers[$hook])) {
            for ($i = 0; $i < count($this->handlers[$hook]); $i++) {
                $ret = call_user_func($this->handlers[$hook][$i], $args);
                if ($ret && is_array($ret)) {
                    $args = $ret + $args;
                }

                if (!empty($args['break'])) {
                    break;
                }
            }
        }

        array_pop($this->exec_stack);
        return $args;
    }

    /**
     * Let a plugin register a handler for a specific request
     *
     * @param string   $action   Action name (_task=mail&_action=plugin.foo)
     * @param string   $owner    Plugin name that registers this action
     * @param callable $callback A callback function
     * @param string   $task     Task name registered by this plugin
     */
    public function register_action($action, $owner, $callback, $task = null)
    {
        // check action name
        if ($task) {
            $action = $task.'.'.$action;
        }
        else if (strpos($action, 'plugin.') !== 0) {
            $action = 'plugin.'.$action;
        }

        // can register action only if it's not taken or registered by myself
        if (!isset($this->actionmap[$action]) || $this->actionmap[$action] == $owner) {
            $this->actions[$action] = $callback;
            $this->actionmap[$action] = $owner;
        }
        else {
            rcube::raise_error([
                    'code' => 523, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Cannot register action $action; already taken by another plugin"
                ],
                true, false
            );
        }
    }

    /**
     * This method handles requests like _task=mail&_action=plugin.foo
     * It executes the callback function that was registered with the given action.
     *
     * @param string $action Action name
     */
    public function exec_action($action)
    {
        if (isset($this->actions[$action])) {
            call_user_func($this->actions[$action]);
        }
        else if (rcube::get_instance()->action != 'refresh') {
            rcube::raise_error([
                    'code' => 524, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "No handler found for action $action"
                ],
                true, true
            );
        }
    }

    /**
     * Register a handler function for template objects
     *
     * @param string   $name     Object name
     * @param string   $owner    Plugin name that registers this action
     * @param callable $callback A callback function
     */
    public function register_handler($name, $owner, $callback)
    {
        // check name
        if (strpos($name, 'plugin.') !== 0) {
            $name = 'plugin.' . $name;
        }

        // can register handler only if it's not taken or registered by myself
        if (is_object($this->output)
            && (!isset($this->objectsmap[$name]) || $this->objectsmap[$name] == $owner)
        ) {
            $this->output->add_handler($name, $callback);
            $this->objectsmap[$name] = $owner;
        }
        else {
            rcube::raise_error([
                    'code' => 525, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Cannot register template handler $name;"
                        ." already taken by another plugin or no output object available"
                ],
                true, false
            );
        }
    }

    /**
     * Register this plugin to be responsible for a specific task
     *
     * @param string $task  Task name (only characters [a-z0-9_-] are allowed)
     * @param string $owner Plugin name that registers this action
     */
    public function register_task($task, $owner)
    {
        // tasks are irrelevant in framework mode
        if (!class_exists('rcmail', false)) {
            return true;
        }

        if ($task != asciiwords($task, true)) {
            rcube::raise_error([
                    'code' => 526, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Invalid task name: $task."
                        ." Only characters [a-z0-9_.-] are allowed"
                ],
                true, false
            );
        }
        else if (in_array($task, rcmail::$main_tasks)) {
            rcube::raise_error([
                    'code' => 526, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Cannot register task $task;"
                        ." already taken by another plugin or the application itself"
                ],
                true, false
            );
        }
        else {
            $this->tasks[$task] = $owner;
            rcmail::$main_tasks[] = $task;
            return true;
        }

        return false;
    }

    /**
     * Checks whether the given task is registered by a plugin
     *
     * @param string $task Task name
     *
     * @return bool True if registered, otherwise false
     */
    public function is_plugin_task($task)
    {
        return !empty($this->tasks[$task]);
    }

    /**
     * Check if a plugin hook is currently processing.
     * Mainly used to prevent loops and recursion.
     *
     * @param string $hook Hook to check (optional)
     *
     * @return bool True if any/the given hook is currently processed, otherwise false
     */
    public function is_processing($hook = null)
    {
        return count($this->exec_stack) > 0 && (!$hook || in_array($hook, $this->exec_stack));
    }

    /**
     * Include a plugin script file in the current HTML page
     *
     * @param string $fn Path to script
     */
    public function include_script($fn)
    {
        if (is_object($this->output) && $this->output->type == 'html') {
            $src = $this->resource_url($fn);
            $this->output->include_script($src, 'head_bottom', false);
        }
    }

    /**
     * Include a plugin stylesheet in the current HTML page
     *
     * @param string $fn Path to stylesheet
     */
    public function include_stylesheet($fn)
    {
        if (is_object($this->output) && $this->output->type == 'html') {
            if ($fn[0] != '/' && !preg_match('|^https?://|i', $fn)) {
                $rcube      = rcube::get_instance();
                $devel_mode = $rcube->config->get('devel_mode');
                $assets_dir = $rcube->config->get('assets_dir');
                $path       = unslashify($assets_dir ?: RCUBE_INSTALL_PATH);
                $dir        = $path . (strpos($fn, "plugins/") === false ? '/plugins' : '');

                // Prefer .less files in devel_mode (assume less.js is loaded)
                if ($devel_mode) {
                    $less = preg_replace('/\.css$/i', '.less', $fn);
                    if ($less != $fn && is_file("$dir/$less")) {
                        $fn = $less;
                    }
                }
                else if (!preg_match('/\.min\.css$/', $fn)) {
                    $min = preg_replace('/\.css$/i', '.min.css', $fn);
                    if (is_file("$dir/$min")) {
                        $fn = $min;
                    }
                }

                if (!is_file("$dir/$fn")) {
                    return;
                }
            }

            $src = $this->resource_url($fn);
            $this->output->include_css($src);
        }
    }

    /**
     * Save the given HTML content to be added to a template container
     *
     * @param string $html      HTML content
     * @param string $container Template container identifier
     */
    public function add_content($html, $container)
    {
        if (!isset($this->template_contents[$container])) {
            $this->template_contents[$container] = '';
        }

        $this->template_contents[$container] .= $html . "\n";
    }

    /**
     * Returns list of loaded plugins names
     *
     * @return array List of plugin names
     */
    public function loaded_plugins()
    {
        return array_keys($this->plugins);
    }

    /**
     * Returns loaded plugin
     *
     * @return rcube_plugin|null Plugin instance
     */
    public function get_plugin($name)
    {
        return !empty($this->plugins[$name]) ? $this->plugins[$name] : null;
    }

    /**
     * Callback for template_container hooks
     *
     * @param array $attrib Container attributes
     *
     * @return array
     */
    protected function template_container_hook($attrib)
    {
        $container     = $attrib['name'];
        $content       = $attrib['content'] ?? '';

        if (isset($this->template_contents[$container])) {
            $content .= $this->template_contents[$container];
        }

        return ['content' => $content];
    }

    /**
     * Make the given file name link into the plugins directory
     *
     * @param string $fn Filename
     *
     * @return string
     */
    protected function resource_url($fn)
    {
        // pattern "skins/" used to identify plugin resources loaded from the core skin folder
        if ($fn[0] != '/' && !preg_match('#^(https?://|skins/)#i', $fn)) {
            return $this->url . $fn;
        }
        else {
            return $fn;
        }
    }
}
lib/Roundcube/db/mysql.php000064400000017025151727150640011520 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements PHP PDO functions            |
 |   for MySQL database                                                  |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface
 *
 * This is a wrapper for the PHP PDO
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_mysql extends rcube_db
{
    public $db_provider = 'mysql';

    public function __construct($db_dsnw, $db_dsnr = '', $pconn = false)
    {
        parent::__construct($db_dsnw, $db_dsnr, $pconn);

        // SQL identifiers quoting
        $this->options['identifier_start'] = '`';
        $this->options['identifier_end'] = '`';
    }

    /**
     * Abstract SQL statement for value concatenation
     *
     * @return string ...$args Values to concatenate
     */
    public function concat(...$args)
    {
        if (count($args) == 1 && is_array($args[0])) {
            $args = $args[0];
        }

        return 'CONCAT(' . implode(', ', $args) . ')';
    }

    /**
     * Returns PDO DSN string from DSN array
     *
     * @param array $dsn DSN parameters
     *
     * @return string Connection string
     */
    protected function dsn_string($dsn)
    {
        $params = [];
        $result = 'mysql:';

        if (isset($dsn['database'])) {
            $params[] = 'dbname=' . $dsn['database'];
        }

        if (isset($dsn['hostspec'])) {
            $params[] = 'host=' . $dsn['hostspec'];
        }

        if (isset($dsn['port'])) {
            $params[] = 'port=' . $dsn['port'];
        }

        if (isset($dsn['socket'])) {
            $params[] = 'unix_socket=' . $dsn['socket'];
        }

        $params[] = 'charset=' . (!empty($dsn['charset']) ? $dsn['charset'] : 'utf8mb4');

        if (!empty($params)) {
            $result .= implode(';', $params);
        }

        return $result;
    }

    /**
     * Returns driver-specific connection options
     *
     * @param array $dsn DSN parameters
     *
     * @return array Connection options
     */
    protected function dsn_options($dsn)
    {
        $result = parent::dsn_options($dsn);

        if (!empty($dsn['key'])) {
            $result[PDO::MYSQL_ATTR_SSL_KEY] = $dsn['key'];
        }

        if (!empty($dsn['cipher'])) {
            $result[PDO::MYSQL_ATTR_SSL_CIPHER] = $dsn['cipher'];
        }

        if (!empty($dsn['cert'])) {
            $result[PDO::MYSQL_ATTR_SSL_CERT] = $dsn['cert'];
        }

        if (!empty($dsn['capath'])) {
            $result[PDO::MYSQL_ATTR_SSL_CAPATH] = $dsn['capath'];
        }

        if (!empty($dsn['ca'])) {
            $result[PDO::MYSQL_ATTR_SSL_CA] = $dsn['ca'];
        }

        if (isset($dsn['verify_server_cert'])) {
            $result[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT] = rcube_utils::get_boolean($dsn['verify_server_cert']);
        }

        // Always return matching (not affected only) rows count
        $result[PDO::MYSQL_ATTR_FOUND_ROWS] = true;

        // Enable AUTOCOMMIT mode (#1488902)
        $result[PDO::ATTR_AUTOCOMMIT] = true;

        // Disable emulating of prepared statements
        $result[PDO::ATTR_EMULATE_PREPARES] = false;

        return $result;
    }

    /**
     * Returns list of tables in a database
     *
     * @return array List of all tables of the current database
     */
    public function list_tables()
    {
        // get tables if not cached
        if ($this->tables === null) {
            $q = $this->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES"
                . " WHERE TABLE_SCHEMA = ? AND TABLE_TYPE = 'BASE TABLE'"
                . " ORDER BY TABLE_NAME", $this->db_dsnw_array['database']);

            $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : [];
        }

        return $this->tables;
    }

    /**
     * Returns list of columns in database table
     *
     * @param string $table Table name
     *
     * @return array List of table cols
     */
    public function list_cols($table)
    {
        $q = $this->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS"
            . " WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?",
            $this->db_dsnw_array['database'], $table);

        if ($q) {
            return $q->fetchAll(PDO::FETCH_COLUMN, 0);
        }

        return [];
    }

    /**
     * Get database runtime variables
     *
     * @param string $varname Variable name
     * @param mixed  $default Default value if variable is not set
     *
     * @return mixed Variable value or default
     */
    public function get_variable($varname, $default = null)
    {
        if (!isset($this->variables)) {
            $this->variables = [];
        }

        if (array_key_exists($varname, $this->variables)) {
            return $this->variables[$varname];
        }

        // configured value has higher prio
        $conf_value = rcube::get_instance()->config->get('db_' . $varname);
        if ($conf_value !== null) {
            return $this->variables[$varname] = $conf_value;
        }

        $result = $this->query('SHOW VARIABLES LIKE ?', $varname);

        while ($row = $this->fetch_array($result)) {
            $this->variables[$row[0]] = $row[1];
        }

        // not found, use default
        if (!isset($this->variables[$varname])) {
            $this->variables[$varname] = $default;
        }

        return $this->variables[$varname];
    }

    /**
     * INSERT ... ON DUPLICATE KEY UPDATE (or equivalent).
     * When not supported by the engine we do UPDATE and INSERT.
     *
     * @param string $table   Table name (should be already passed via table_name() with quoting)
     * @param array  $keys    Hash array (column => value) of the unique constraint
     * @param array  $columns List of columns to update
     * @param array  $values  List of values to update (number of elements
     *                        should be the same as in $columns)
     *
     * @return PDOStatement|bool Query handle or False on error
     * @todo Multi-insert support
     */
    public function insert_or_update($table, $keys, $columns, $values)
    {
        $columns = array_map(function($i) { return "`$i`"; }, $columns);
        $cols    = implode(', ', array_map(function($i) { return "`$i`"; }, array_keys($keys)));
        $cols   .= ', ' . implode(', ', $columns);
        $vals    = implode(', ', array_map(function($i) { return $this->quote($i); }, $keys));
        $vals   .= ', ' . rtrim(str_repeat('?, ', count($columns)), ', ');
        $update  = implode(', ', array_map(function($i) { return "$i = VALUES($i)"; }, $columns));

        return $this->query("INSERT INTO $table ($cols) VALUES ($vals)"
            . " ON DUPLICATE KEY UPDATE $update", $values);
    }
}
lib/Roundcube/db/sqlsrv.php000064400000006556151727150640011714 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements PHP PDO functions            |
 |   for MS SQL Server database                                          |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface
 * This is a wrapper for the PHP PDO
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_sqlsrv extends rcube_db_mssql
{

    /**
     * Get last inserted record ID
     *
     * @param string $table Table name (to find the incremented sequence)
     *
     * @return string|false The ID or False on failure
     */
    public function insert_id($table = '')
    {
        if (!$this->db_connected || $this->db_mode == 'r') {
            return false;
        }

        if ($table) {
            // For some unknown reason the constant described in the driver docs
            // might not exist, we'll fallback to PDO::ATTR_CLIENT_VERSION (#7564)
            if (defined('PDO::ATTR_DRIVER_VERSION')) {
                $driver_version = $this->dbh->getAttribute(PDO::ATTR_DRIVER_VERSION);
            }
            else if (defined('PDO::ATTR_CLIENT_VERSION')) {
                $client_version = $this->dbh->getAttribute(PDO::ATTR_CLIENT_VERSION);
                $driver_version = $client_version['ExtensionVer'];
            }
            else {
                $driver_version = 5;
            }

            // Starting from version 5 of the driver lastInsertId() method expects
            // a sequence name instead of a table name. We'll unset the argument
            // to get the last insert sequence (#7564)
            if (version_compare($driver_version, '5', '>=')) {
                $table = null;
            }
            else {
                // resolve table name
                $table = $this->table_name($table);
            }
        }

        return $this->dbh->lastInsertId($table);
    }

    /**
     * Returns PDO DSN string from DSN array
     */
    protected function dsn_string($dsn)
    {
        $params = [];
        $result = 'sqlsrv:';

        if (isset($dsn['hostspec'])) {
            $host = $dsn['hostspec'];

            if (isset($dsn['port'])) {
                $host .= ',' . $dsn['port'];
            }

            $params[] = 'Server=' . $host;
        }

        if (isset($dsn['database'])) {
            $params[] = 'Database=' . $dsn['database'];
        }

        if (!empty($params)) {
            $result .= implode(';', $params);
        }

        return $result;
    }
}
lib/Roundcube/db/param.php000064400000003601151727150640011446 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class for query parameters                         |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database query parameter
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_param
{
    protected $db;
    protected $type;
    protected $value;


    /**
     * Object constructor
     *
     * @param rcube_db $db    Database driver
     * @param mixed    $value Parameter value
     * @param string   $type  Parameter type (One of rcube_db::TYPE_* constants)
     */
    public function __construct($db, $value, $type = null)
    {
        $this->db    = $db;
        $this->value = $value;
        $this->type  = $type;
    }

    /**
     * Returns the value as string for inlining into SQL query
     */
    public function __toString()
    {
        if ($this->type === rcube_db::TYPE_SQL) {
            return (string) $this->value;
        }

        return (string) $this->db->quote($this->value, $this->type);
    }
}
lib/Roundcube/db/oracle.php000064400000043424151727150650011623 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements database functions           |
 |   for Oracle database using OCI8 extension                            |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_oracle extends rcube_db
{
    public $db_provider    = 'oracle';
    public $in_transaction = false;

    /**
     * Create connection instance
     */
    protected function conn_create($dsn)
    {
        // Get database specific connection options
        $dsn_options = $this->dsn_options($dsn);

        $function = $this->db_pconn ? 'oci_pconnect' : 'oci_connect';

        if (!function_exists($function)) {
            $this->db_error     = true;
            $this->db_error_msg = 'OCI8 extension not loaded. See http://php.net/manual/en/book.oci8.php';

            rcube::raise_error([
                    'code' => 500, 'type' => 'db',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => $this->db_error_msg
                ], true, false);

            return;
        }

        // connect
        $dbh = @$function($dsn['username'], $dsn['password'], $dsn_options['database'], $dsn_options['charset']);

        if (!$dbh) {
            $error              = oci_error();
            $this->db_error     = true;
            $this->db_error_msg = $error['message'];

            rcube::raise_error([
                    'code' => 500, 'type' => 'db',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => $this->db_error_msg
                ], true, false);

            return;
        }

        // configure session
        $this->conn_configure($dsn, $dbh);

        return $dbh;
    }

    /**
     * Driver-specific configuration of database connection
     *
     * @param array $dsn DSN for DB connections
     * @param PDO   $dbh Connection handler
     */
    protected function conn_configure($dsn, $dbh)
    {
        $init_queries = [
            "ALTER SESSION SET nls_date_format = 'YYYY-MM-DD'",
            "ALTER SESSION SET nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS'",
        ];

        foreach ($init_queries as $query) {
            $stmt = oci_parse($dbh, $query);
            oci_execute($stmt);
        }
    }

    /**
     * Connection state checker
     *
     * @return bool True if in connected state
     */
    public function is_connected()
    {
        return empty($this->dbh) ? false : $this->db_connected;
    }

    /**
     * Execute a SQL query with limits
     *
     * @param string $query   SQL query to execute
     * @param int    $offset  Offset for LIMIT statement
     * @param int    $numrows Number of rows for LIMIT statement
     * @param array  $params  Values to be inserted in query
     *
     * @return PDOStatement|bool Query handle or False on error
     */
    protected function _query($query, $offset, $numrows, $params)
    {
        $query = ltrim($query);

        $this->db_connect($this->dsn_select($query), true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        if ($numrows || $offset) {
            $query = $this->set_limit($query, $numrows, $offset);
        }

        // replace self::DEFAULT_QUOTE with driver-specific quoting
        $query = $this->query_parse($query);

        // Because in Roundcube we mostly use queries that are
        // executed only once, we will not use prepared queries
        $pos  = 0;
        $idx  = 0;
        $args = [];

        if (!empty($params)) {
            while ($pos = strpos($query, '?', $pos)) {
                if ($query[$pos+1] == '?') {  // skip escaped '?'
                    $pos += 2;
                }
                else {
                    $val = $this->quote($params[$idx++]);

                    // long strings are not allowed inline, need to be parametrized
                    if (strlen($val) > 4000) {
                        $key = ':param' . (count($args) + 1);
                        $args[$key] = $params[$idx-1];
                        $val = $key;
                    }

                    unset($params[$idx-1]);
                    $query = substr_replace($query, $val, $pos, 1);
                    $pos += strlen($val);
                }
            }
        }

        $query = rtrim($query, " \t\n\r\0\x0B;");

        // replace escaped '?' and quotes back to normal, see self::quote()
        $query = str_replace(
            ['??', self::DEFAULT_QUOTE.self::DEFAULT_QUOTE],
            ['?', self::DEFAULT_QUOTE],
            $query
        );

        // log query
        $this->debug($query);

        // destroy reference to previous result
        $this->last_result  = null;
        $this->db_error_msg = null;

        // prepare query
        $result = @oci_parse($this->dbh, $query);
        $mode   = $this->in_transaction ? OCI_NO_AUTO_COMMIT : OCI_COMMIT_ON_SUCCESS;

        if ($result) {
            foreach (array_keys($args) as $param) {
                oci_bind_by_name($result, $param, $args[$param], -1, SQLT_LNG);
            }
        }

        // execute query
        if (!$result || !@oci_execute($result, $mode)) {
            $result = $this->handle_error($query, $result);
        }

        return $this->last_result = $result;
    }

    /**
     * Helper method to handle DB errors.
     * This by default logs the error but could be overridden by a driver implementation
     *
     * @param string   Query that triggered the error
     * @param resource Query result
     *
     * @return bool Result to be stored and returned
     */
    protected function handle_error($query, $result = null)
    {
        $error = oci_error($result ?: $this->dbh);

        // @TODO: Find error codes for key errors
        if (empty($this->options['ignore_key_errors']) || !in_array($error['code'], ['23000', '23505'])) {
            $this->db_error = true;
            $this->db_error_msg = sprintf('[%s] %s', $error['code'], $error['message']);

            rcube::raise_error([
                    'code' => 500, 'type' => 'db',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => $this->db_error_msg . " (SQL Query: $query)"
                ], true, false);
        }

        return false;
    }

    /**
     * Get last inserted record ID
     *
     * @param string $table Table name (to find the incremented sequence)
     *
     * @return mixed ID or false on failure
     */
    public function insert_id($table = null)
    {
        if (!$this->db_connected || $this->db_mode == 'r' || empty($table)) {
            return false;
        }

        $sequence = $this->quote_identifier($this->sequence_name($table));
        $result   = $this->query("SELECT $sequence.currval FROM dual");
        $result   = $this->fetch_array($result);

        return !empty($result[0]) ? $result[0] : false;
    }

    /**
     * Get number of affected rows for the last query
     *
     * @param mixed $result Optional query handle
     *
     * @return int Number of (matching) rows
     */
    public function affected_rows($result = null)
    {
        if ($result || ($result === null && ($result = $this->last_result))) {
            return oci_num_rows($result);
        }

        return 0;
    }

    /**
     * Get number of rows for a SQL query
     * If no query handle is specified, the last query will be taken as reference
     *
     * @param mixed $result Optional query handle
     *
     * @return mixed Number of rows or false on failure
     * @deprecated This method shows very poor performance and should be avoided.
     */
    public function num_rows($result = null)
    {
        // not implemented
        return false;
    }

    /**
     * Get an associative array for one row
     * If no query handle is specified, the last query will be taken as reference
     *
     * @param mixed $result Optional query handle
     *
     * @return mixed Array with col values or false on failure
     */
    public function fetch_assoc($result = null)
    {
        return $this->_fetch_row($result, OCI_ASSOC);
    }

    /**
     * Get an index array for one row
     * If no query handle is specified, the last query will be taken as reference
     *
     * @param mixed $result Optional query handle
     *
     * @return mixed Array with col values or false on failure
     */
    public function fetch_array($result = null)
    {
        return $this->_fetch_row($result, OCI_NUM);
    }

    /**
     * Get col values for a result row
     *
     * @param mixed $result Optional query handle
     * @param int   $mode   Fetch mode identifier
     *
     * @return array|false Array with col values or false on failure
     */
    protected function _fetch_row($result, $mode)
    {
        if ($result || ($result === null && ($result = $this->last_result))) {
            return oci_fetch_array($result, $mode + OCI_RETURN_NULLS + OCI_RETURN_LOBS);
        }

        return false;
    }

    /**
     * Formats input so it can be safely used in a query
     * PDO_OCI does not implement quote() method
     *
     * @param mixed  $input Value to quote
     * @param string $type  Type of data (integer, bool, ident)
     *
     * @return string Quoted/converted string for use in query
     */
    public function quote($input, $type = null)
    {
        // handle int directly for better performance
        if ($type == 'integer' || $type == 'int') {
            return intval($input);
        }

        if (is_null($input)) {
            return 'NULL';
        }

        if ($input instanceof DateTime) {
            return $this->quote($input->format($this->options['datetime_format']));
        }

        if ($type == 'ident') {
            return $this->quote_identifier($input);
        }

        switch ($type) {
        case 'bool':
        case 'integer':
            return intval($input);
        default:
            return "'" . strtr($input, [
                    '?' => '??',
                    "'" => "''",
                    rcube_db::DEFAULT_QUOTE => rcube_db::DEFAULT_QUOTE . rcube_db::DEFAULT_QUOTE
                ]) . "'";
        }
    }

    /**
     * Return correct name for a specific database sequence
     *
     * @param string $table Table name
     *
     * @return string Translated sequence name
     */
    protected function sequence_name($table)
    {
        // Note: we support only one sequence per table
        // Note: The sequence name must be <table_name>_seq
        $sequence = $table . '_seq';

        // modify sequence name if prefix is configured
        if ($prefix = $this->options['table_prefix']) {
            return $prefix . $sequence;
        }

        return $sequence;
    }

    /**
     * Return SQL statement for case insensitive LIKE
     *
     * @param string $column Field name
     * @param string $value  Search value
     *
     * @return string SQL statement to use in query
     */
    public function ilike($column, $value)
    {
        return 'UPPER(' . $this->quote_identifier($column) . ') LIKE UPPER(' . $this->quote($value) . ')';
    }

    /**
     * Return SQL function for current time and date
     *
     * @param int $interval Optional interval (in seconds) to add/subtract
     *
     * @return string SQL function to use in query
     */
    public function now($interval = 0)
    {
        if ($interval) {
            $interval = intval($interval);
            return "current_timestamp + INTERVAL '$interval' SECOND";
        }

        return "current_timestamp";
    }

    /**
     * Return SQL statement to convert a field value into a unix timestamp
     *
     * @param string $field Field name
     *
     * @return string SQL statement to use in query
     * @deprecated
     */
    public function unixtimestamp($field)
    {
        return "(($field - to_date('1970-01-01','YYYY-MM-DD')) * 60 * 60 * 24)";
    }

    /**
     * Adds TOP (LIMIT,OFFSET) clause to the query
     *
     * @param string $query  SQL query
     * @param int    $limit  Number of rows
     * @param int    $offset Offset
     *
     * @return string SQL query
     */
    protected function set_limit($query, $limit = 0, $offset = 0)
    {
        $limit  = intval($limit);
        $offset = intval($offset);
        $end    = $offset + $limit;

        // @TODO: Oracle 12g has better OFFSET support

        if (!$offset) {
            $query = "SELECT * FROM ($query) a WHERE rownum <= $end";
        }
        else {
            $query = "SELECT * FROM (SELECT a.*, rownum as rn FROM ($query) a WHERE rownum <= $end) b WHERE rn > $offset";
        }

        return $query;
    }

    /**
     * Parse SQL file and fix table names according to table prefix
     */
    protected function fix_table_names($sql)
    {
        if (!$this->options['table_prefix']) {
            return $sql;
        }

        $sql = parent::fix_table_names($sql);

        // replace sequence names, and other Oracle-specific commands
        $sql = preg_replace_callback('/(SEQUENCE ["]?)([^" \r\n]+)/',
            [$this, 'fix_table_names_callback'],
            $sql
        );

        $sql = preg_replace_callback(
            '/([ \r\n]+["]?)([^"\' \r\n\.]+)(["]?\.nextval)/',
            [$this, 'fix_table_names_seq_callback'],
            $sql
        );

        return $sql;
    }

    /**
     * Preg_replace callback for fix_table_names()
     */
    protected function fix_table_names_seq_callback($matches)
    {
        return $matches[1] . $this->options['table_prefix'] . $matches[2] . $matches[3];
    }

    /**
     * Returns connection options from DSN array
     */
    protected function dsn_options($dsn)
    {
        $params = [];

        if (isset($dsn['hostspec'])) {
            $host = $dsn['hostspec'];
            if (isset($dsn['port'])) {
                $host .= ':' . $dsn['port'];
            }

            $params['database'] = $host . '/' . $dsn['database'];
        }

        $params['charset'] = 'UTF8';

        return $params;
    }

    /**
     * Execute the given SQL script
     *
     * @param string $sql SQL queries to execute
     *
     * @return bool True on success, False on error
     */
    public function exec_script($sql)
    {
        $sql  = $this->fix_table_names($sql);
        $buff = '';
        $body = false;

        foreach (explode("\n", $sql) as $line) {
            $tok = strtolower(trim($line));
            if (preg_match('/^--/', $line) || $tok == '' || $tok == '/') {
                continue;
            }

            $buff .= $line . "\n";

            // detect PL/SQL function bodies, don't break on semicolon
            if ($body && $tok == 'end;') {
                $body = false;
            }
            else if (!$body && $tok == 'begin') {
                $body = true;
            }

            if (!$body && substr($tok, -1) == ';') {
                $this->query($buff);
                $buff = '';
                if ($this->db_error) {
                    break;
                }
            }
        }

        return !$this->db_error;
    }

    /**
     * Start transaction
     *
     * @return bool True on success, False on failure
     */
    public function startTransaction()
    {
        $this->db_connect('w', true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        $this->debug('BEGIN TRANSACTION');

        return $this->last_result = $this->in_transaction = true;
    }

    /**
     * Commit transaction
     *
     * @return bool True on success, False on failure
     */
    public function endTransaction()
    {
        $this->db_connect('w', true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        $this->debug('COMMIT TRANSACTION');

        if ($result = @oci_commit($this->dbh)) {
            $this->in_transaction = true;
        }
        else {
            $this->handle_error('COMMIT');
        }

        return $this->last_result = $result;
    }

    /**
     * Rollback transaction
     *
     * @return bool True on success, False on failure
     */
    public function rollbackTransaction()
    {
        $this->db_connect('w', true);

        // check connection before proceeding
        if (!$this->is_connected()) {
            return $this->last_result = false;
        }

        $this->debug('ROLLBACK TRANSACTION');

        if (@oci_rollback($this->dbh)) {
            $this->in_transaction = false;
        }
        else {
            $this->handle_error('ROLLBACK');
        }

        return $this->last_result = $this->dbh->rollBack();
    }

    /**
     * Terminate database connection.
     */
    public function closeConnection()
    {
        // release statement and close connection(s)
        $this->last_result = null;
        foreach ($this->dbhs as $dbh) {
            oci_close($dbh);
        }

        parent::closeConnection();
    }
}
lib/Roundcube/db/sqlite.php000064400000012270151727150650011652 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements PHP PDO functions            |
 |   for SQLite database                                                 |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface
 * This is a wrapper for the PHP PDO
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_sqlite extends rcube_db
{
    public $db_provider = 'sqlite';

    /**
     * Prepare connection
     */
    protected function conn_prepare($dsn)
    {
        // Create database file, required by PDO to exist on connection
        if (!empty($dsn['database']) && !file_exists($dsn['database'])) {
            $created = touch($dsn['database']);

            // File mode setting, for compat. with MDB2
            if (!empty($dsn['mode']) && $created) {
                chmod($dsn['database'], octdec($dsn['mode']));
            }
        }
    }

    /**
     * Configure connection, create database if not exists
     */
    protected function conn_configure($dsn, $dbh)
    {
        // Initialize database structure in file is empty
        if (!empty($dsn['database']) && !filesize($dsn['database'])) {
            $data = file_get_contents(RCUBE_INSTALL_PATH . 'SQL/sqlite.initial.sql');

            if (strlen($data)) {
                $this->debug('INITIALIZE DATABASE');

                $q = $dbh->exec($data);

                if ($q === false) {
                    $error = $dbh->errorInfo();
                    $this->db_error = true;
                    $this->db_error_msg = sprintf('[%s] %s', $error[1], $error[2]);

                    rcube::raise_error([
                            'code' => 500, 'type' => 'db',
                            'line' => __LINE__, 'file' => __FILE__,
                            'message' => $this->db_error_msg
                        ],
                        true, false
                    );
                }
            }
        }

        // Enable WAL mode to fix locking issues like #8035.
        $dbh->query("PRAGMA journal_mode = WAL");

        // Enable foreign keys (requires sqlite 3.6.19 compiled with FK support)
        $dbh->query("PRAGMA foreign_keys = ON");
    }

    /**
     * Return SQL statement to convert a field value into a unix timestamp
     *
     * @param string $field Field name
     *
     * @return string  SQL statement to use in query
     * @deprecated
     */
    public function unixtimestamp($field)
    {
        return "strftime('%s', $field)";
    }

    /**
     * Return SQL function for current time and date
     *
     * @param int $interval Optional interval (in seconds) to add/subtract
     *
     * @return string SQL function to use in query
     */
    public function now($interval = 0)
    {
        $add = '';

        if ($interval) {
            $add = ($interval > 0 ? '+' : '') . intval($interval) . ' seconds';
        }

        return "datetime('now'" . ($add ? ", '$add'" : "") . ")";
    }

    /**
     * Returns list of tables in database
     *
     * @return array List of all tables of the current database
     */
    public function list_tables()
    {
        if ($this->tables === null) {
            $q = $this->query('SELECT name FROM sqlite_master'
                .' WHERE type = \'table\' ORDER BY name');

            $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : [];
        }

        return $this->tables;
    }

    /**
     * Returns list of columns in database table
     *
     * @param string $table Table name
     *
     * @return array List of table cols
     */
    public function list_cols($table)
    {
        $q = $this->query('PRAGMA table_info(?)', $table);

        return $q ? $q->fetchAll(PDO::FETCH_COLUMN, 1) : [];
    }

    /**
     * Build DSN string for PDO constructor
     */
    protected function dsn_string($dsn)
    {
        return $dsn['phptype'] . ':' . $dsn['database'];
    }

    /**
     * Returns driver-specific connection options
     *
     * @param array $dsn DSN parameters
     *
     * @return array Connection options
     */
    protected function dsn_options($dsn)
    {
        $result = parent::dsn_options($dsn);

        // Change the default timeout (60) to a smaller value
        $result[PDO::ATTR_TIMEOUT] = isset($dsn['timeout']) ? intval($dsn['timeout']) : 10;

        return $result;
    }
}
lib/Roundcube/db/pgsql.php000064400000024207151727150650011502 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements PHP PDO functions            |
 |   for PostgreSQL database                                             |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface
 * This is a wrapper for the PHP PDO
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_pgsql extends rcube_db
{
    public $db_provider = 'postgres';

    // See https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-PARAMKEYWORDS
    private static $libpq_connect_params = [
        'application_name',
        'sslmode',
        'sslcert',
        'sslkey',
        'sslrootcert',
        'sslcrl',
        'sslcompression',
        'service'
    ];

    public function __construct($db_dsnw, $db_dsnr = '', $pconn = false)
    {
        parent::__construct($db_dsnw, $db_dsnr, $pconn);

        // use date/time input format with timezone spec.
        $this->options['datetime_format'] = 'c';
    }

    /**
     * Driver-specific configuration of database connection
     *
     * @param array $dsn DSN for DB connections
     * @param PDO   $dbh Connection handler
     */
    protected function conn_configure($dsn, $dbh)
    {
        $dbh->query("SET NAMES 'utf8'");
        $dbh->query("SET DATESTYLE TO ISO");

        // if ?schema= is set in dsn, set the search_path
        if (!empty($dsn['schema'])) {
            $dbh->query("SET search_path TO " . $this->quote($dsn['schema']));
        }
    }

    /**
     * Get last inserted record ID
     *
     * @param string $table Table name (to find the incremented sequence)
     *
     * @return mixed ID or false on failure
     */
    public function insert_id($table = null)
    {
        if (!$this->db_connected || $this->db_mode == 'r') {
            return false;
        }

        if ($table) {
            $table = $this->sequence_name($table);
        }

        return $this->dbh->lastInsertId($table);
    }

    /**
     * Return correct name for a specific database sequence
     *
     * @param string $table Table name
     *
     * @return string Translated sequence name
     */
    protected function sequence_name($table)
    {
        // Note: we support only one sequence per table
        // Note: The sequence name must be <table_name>_seq
        $sequence = $table . '_seq';

        // modify sequence name if prefix is configured
        if ($prefix = $this->options['table_prefix']) {
            return $prefix . $sequence;
        }

        return $sequence;
    }

    /**
     * Return SQL statement to convert a field value into a unix timestamp
     *
     * @param string $field Field name
     *
     * @return string SQL statement to use in query
     * @deprecated
     */
    public function unixtimestamp($field)
    {
        return "EXTRACT (EPOCH FROM $field)";
    }

    /**
     * Return SQL function for current time and date
     *
     * @param int $interval Optional interval (in seconds) to add/subtract
     *
     * @return string SQL function to use in query
     */
    public function now($interval = 0)
    {
        $result = 'now()';

        if ($interval) {
            $result .= ' ' . ($interval > 0 ? '+' : '-') . " interval '"
                . ($interval > 0 ? intval($interval) : intval($interval) * -1)
                . " seconds'";
        }

        return $result;
    }

    /**
     * Return SQL statement for case insensitive LIKE
     *
     * @param string $column Field name
     * @param string $value  Search value
     *
     * @return string SQL statement to use in query
     */
    public function ilike($column, $value)
    {
        return $this->quote_identifier($column) . ' ILIKE ' . $this->quote($value);
    }

    /**
     * Get database runtime variables
     *
     * @param string $varname Variable name
     * @param mixed  $default Default value if variable is not set
     *
     * @return mixed Variable value or default
     */
    public function get_variable($varname, $default = null)
    {
        // There's a known case when max_allowed_packet is queried
        // PostgreSQL doesn't have such limit, return immediately
        if ($varname == 'max_allowed_packet') {
            return rcube::get_instance()->config->get('db_' . $varname, $default);
        }

        $this->variables[$varname] = rcube::get_instance()->config->get('db_' . $varname);

        if (!isset($this->variables)) {
            $this->variables = [];

            $result = $this->query('SHOW ALL');

            while ($row = $this->fetch_array($result)) {
                $this->variables[$row[0]] = $row[1];
            }
        }

        return $this->variables[$varname] ?? $default;
    }

    /**
     * INSERT ... ON CONFLICT DO UPDATE.
     * When not supported by the engine we do UPDATE and INSERT.
     *
     * @param string $table   Table name (should be already passed via table_name() with quoting)
     * @param array  $keys    Hash array (column => value) of the unique constraint
     * @param array  $columns List of columns to update
     * @param array  $values  List of values to update (number of elements
     *                        should be the same as in $columns)
     *
     * @return PDOStatement|bool Query handle or False on error
     * @todo Multi-insert support
     */
    public function insert_or_update($table, $keys, $columns, $values)
    {
        // Check if version >= 9.5, otherwise use fallback
        if ($this->get_variable('server_version_num') < 90500) {
            return parent::insert_or_update($table, $keys, $columns, $values);
        }

        $columns = array_map([$this, 'quote_identifier'], $columns);
        $target  = implode(', ', array_map([$this, 'quote_identifier'], array_keys($keys)));
        $cols    = $target . ', ' . implode(', ', $columns);
        $vals    = implode(', ', array_map(function($i) { return $this->quote($i); }, $keys));
        $vals   .= ', ' . rtrim(str_repeat('?, ', count($columns)), ', ');
        $update  = implode(', ', array_map(function($i) { return "$i = EXCLUDED.$i"; }, $columns));

        return $this->query("INSERT INTO $table ($cols) VALUES ($vals)"
            . " ON CONFLICT ($target) DO UPDATE SET $update", $values);
    }

    /**
     * Returns list of tables in a database
     *
     * @return array List of all tables of the current database
     */
    public function list_tables()
    {
        // get tables if not cached
        if ($this->tables === null) {
            if (($schema = $this->options['table_prefix']) && $schema[strlen($schema)-1] === '.') {
                $add = " AND TABLE_SCHEMA = " . $this->quote(substr($schema, 0, -1));
            }
            else {
                $add = " AND TABLE_SCHEMA NOT IN ('pg_catalog', 'information_schema')";
            }

            $q = $this->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES"
                . " WHERE TABLE_TYPE = 'BASE TABLE'" . $add
                . " ORDER BY TABLE_NAME");

            $this->tables = $q ? $q->fetchAll(PDO::FETCH_COLUMN, 0) : [];
        }

        return $this->tables;
    }

    /**
     * Returns list of columns in database table
     *
     * @param string $table Table name
     *
     * @return array List of table cols
     */
    public function list_cols($table)
    {
        $args = [$table];

        if (($schema = $this->options['table_prefix']) && $schema[strlen($schema)-1] === '.') {
            $add    = " AND TABLE_SCHEMA = ?";
            $args[] = substr($schema, 0, -1);
        }
        else {
            $add = " AND TABLE_SCHEMA NOT IN ('pg_catalog', 'information_schema')";
        }

        $q = $this->query("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS"
            . " WHERE TABLE_NAME = ?" . $add, $args);

        if ($q) {
            return $q->fetchAll(PDO::FETCH_COLUMN, 0);
        }

        return [];
    }

    /**
     * Returns PDO DSN string from DSN array
     *
     * @param array $dsn DSN parameters
     *
     * @return string DSN string
     */
    protected function dsn_string($dsn)
    {
        $params = [];
        $result = 'pgsql:';

        if (isset($dsn['hostspec'])) {
            $params[] = 'host=' . $dsn['hostspec'];
        }
        else if (isset($dsn['socket'])) {
            $params[] = 'host=' . $dsn['socket'];
        }

        if (isset($dsn['port'])) {
            $params[] = 'port=' . $dsn['port'];
        }

        if (isset($dsn['database'])) {
            $params[] = 'dbname=' . $dsn['database'];
        }

        foreach (self::$libpq_connect_params as $param) {
            if (isset($dsn[$param])) {
                $params[] = $param . '=' . $dsn[$param];
            }
        }

        if (!empty($params)) {
            $result .= implode(';', $params);
        }

        return $result;
    }

    /**
     * Parse SQL file and fix table names according to table prefix
     */
    protected function fix_table_names($sql)
    {
        if (!$this->options['table_prefix']) {
            return $sql;
        }

        $sql = parent::fix_table_names($sql);

        // replace sequence names, and other postgres-specific commands
        $sql = preg_replace_callback(
            '/((SEQUENCE |RENAME TO |nextval\()["\']*)([^"\' \r\n]+)/',
            [$this, 'fix_table_names_callback'],
            $sql
        );

        return $sql;
    }
}
lib/Roundcube/db/mssql.php000064400000013004151727150650011504 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Database wrapper class that implements PHP PDO functions            |
 |   for MS SQL Server database                                          |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Database independent query interface
 * This is a wrapper for the PHP PDO
 *
 * @package    Framework
 * @subpackage Database
 */
class rcube_db_mssql extends rcube_db
{
    public $db_provider = 'mssql';

    /**
     * {@inheritdoc}
     */
    public function __construct($db_dsnw, $db_dsnr = '', $pconn = false)
    {
        parent::__construct($db_dsnw, $db_dsnr, $pconn);

        $this->options['identifier_start'] = '[';
        $this->options['identifier_end'] = ']';
    }

    /**
     * Driver-specific configuration of database connection
     *
     * @param array $dsn DSN for DB connections
     * @param PDO   $dbh Connection handler
     */
    protected function conn_configure($dsn, $dbh)
    {
        // Set date format in case of non-default language (#1488918)
        $dbh->query("SET DATEFORMAT ymd");
    }

    /**
     * Return SQL function for current time and date
     *
     * @param int $interval Optional interval (in seconds) to add/subtract
     *
     * @return string SQL function to use in query
     */
    public function now($interval = 0)
    {
        if ($interval) {
            $interval = intval($interval);
            return "dateadd(second, $interval, getdate())";
        }

        return "getdate()";
    }

    /**
     * Return SQL statement to convert a field value into a unix timestamp
     *
     * @param string $field Field name
     *
     * @return string SQL statement to use in query
     * @deprecated
     */
    public function unixtimestamp($field)
    {
        return "DATEDIFF(second, '19700101', $field) + DATEDIFF(second, GETDATE(), GETUTCDATE())";
    }

    /**
     * Abstract SQL statement for value concatenation
     *
     * @return string ...$args Values to concatenate
     */
    public function concat(...$args)
    {
        if (count($args) == 1 && is_array($args[0])) {
            $args = $args[0];
        }

        return '(' . implode('+', $args) . ')';
    }

    /**
     * Adds TOP (LIMIT,OFFSET) clause to the query
     *
     * @param string $query  SQL query
     * @param int    $limit  Number of rows
     * @param int    $offset Offset
     *
     * @return string SQL query
     */
    protected function set_limit($query, $limit = 0, $offset = 0)
    {
        $limit  = intval($limit);
        $offset = intval($offset);
        $end    = $offset + $limit;

        // query without OFFSET
        if (!$offset) {
            $query = preg_replace('/^SELECT\s/i', "SELECT TOP $limit ", $query);
            return $query;
        }

        $orderby = stristr($query, 'ORDER BY');
        $offset += 1;

        if ($orderby !== false) {
            $query = trim(substr($query, 0, -1 * strlen($orderby)));
        }
        else {
            // it shouldn't happen, paging without sorting has not much sense
            // @FIXME: I don't know how to build paging query without ORDER BY
            $orderby = "ORDER BY 1";
        }

        $query = preg_replace('/^SELECT\s/i', '', $query);
        $query = "WITH paging AS (SELECT ROW_NUMBER() OVER ($orderby) AS [RowNumber], $query)"
            . " SELECT * FROM paging WHERE [RowNumber] BETWEEN $offset AND $end ORDER BY [RowNumber]";

        return $query;
    }

    /**
     * Returns PDO DSN string from DSN array
     */
    protected function dsn_string($dsn)
    {
        $params = [];
        $result = $dsn['phptype'] . ':';

        if (isset($dsn['hostspec'])) {
            $host = $dsn['hostspec'];
            if (isset($dsn['port'])) {
                $host .= ',' . $dsn['port'];
            }
            $params[] = 'host=' . $host;
        }

        if (isset($dsn['database'])) {
            $params[] = 'dbname=' . $dsn['database'];
        }

        if (!empty($params)) {
            $result .= implode(';', $params);
        }

        return $result;
    }

    /**
     * Parse SQL file and fix table names according to table prefix
     */
    protected function fix_table_names($sql)
    {
        if (!$this->options['table_prefix']) {
            return $sql;
        }

        // replace sequence names, and other postgres-specific commands
        $sql = preg_replace_callback(
            '/((TABLE|(?<!ON )UPDATE|INSERT INTO|FROM(?! deleted)| ON(?! (DELETE|UPDATE|\[PRIMARY\]))'
            . '|REFERENCES|CONSTRAINT|TRIGGER|INDEX)\s+(\[dbo\]\.)?[\[\]]*)([^\[\]\( \r\n]+)/',
            [$this, 'fix_table_names_callback'],
            $sql
        );

        return $sql;
    }
}
lib/Roundcube/rcube_charset.php000064400000061747151727150650012612 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 | Copyright (C) 2000 Edmund Grimley Evans <edmundo@rano.org>            |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide charset conversion functionality                            |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Edmund Grimley Evans <edmundo@rano.org>                       |
 +-----------------------------------------------------------------------+
*/

/**
 * Character sets conversion functionality
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_charset
{
    /**
     * Character set aliases (some of them from HTML5 spec.)
     *
     * @var array
     */
    static public $aliases = [
        'USASCII'       => 'WINDOWS-1252',
        'ANSIX31101983' => 'WINDOWS-1252',
        'ANSIX341968'   => 'WINDOWS-1252',
        'UNKNOWN8BIT'   => 'ISO-8859-15',
        'UNKNOWN'       => 'ISO-8859-15',
        'USERDEFINED'   => 'ISO-8859-15',
        'KSC56011987'   => 'EUC-KR',
        'GB2312'        => 'GBK',
        'GB231280'      => 'GBK',
        'UNICODE'       => 'UTF-8',
        'UTF7IMAP'      => 'UTF7-IMAP',
        'TIS620'        => 'WINDOWS-874',
        'ISO88599'      => 'WINDOWS-1254',
        'ISO885911'     => 'WINDOWS-874',
        'MACROMAN'      => 'MACINTOSH',
        '77'            => 'MAC',
        '128'           => 'SHIFT-JIS',
        '129'           => 'CP949',
        '130'           => 'CP1361',
        '134'           => 'GBK',
        '136'           => 'BIG5',
        '161'           => 'WINDOWS-1253',
        '162'           => 'WINDOWS-1254',
        '163'           => 'WINDOWS-1258',
        '177'           => 'WINDOWS-1255',
        '178'           => 'WINDOWS-1256',
        '186'           => 'WINDOWS-1257',
        '204'           => 'WINDOWS-1251',
        '222'           => 'WINDOWS-874',
        '238'           => 'WINDOWS-1250',
        'MS950'         => 'CP950',
        'WINDOWS31J'    => 'CP932',
        'WINDOWS949'    => 'UHC',
        'WINDOWS1257'   => 'ISO-8859-13',
        'ISO2022JP'     => 'ISO-2022-JP-MS',
    ];

    /**
     * Windows codepages
     *
     * @var array
     */
    static public $windows_codepages = [
         37 => 'IBM037',    // IBM EBCDIC US-Canada
        437 => 'IBM437',    // OEM United States
        500 => 'IBM500',    // IBM EBCDIC International
        708 => 'ASMO-708',  // Arabic (ASMO 708)
        720 => 'DOS-720',   // Arabic (Transparent ASMO); Arabic (DOS)
        737 => 'IBM737',    // OEM Greek (formerly 437G); Greek (DOS)
        775 => 'IBM775',    // OEM Baltic; Baltic (DOS)
        850 => 'IBM850',    // OEM Multilingual Latin 1; Western European (DOS)
        852 => 'IBM852',    // OEM Latin 2; Central European (DOS)
        855 => 'IBM855',    // OEM Cyrillic (primarily Russian)
        857 => 'IBM857',    // OEM Turkish; Turkish (DOS)
        858 => 'IBM00858',  // OEM Multilingual Latin 1 + Euro symbol
        860 => 'IBM860',    // OEM Portuguese; Portuguese (DOS)
        861 => 'IBM861',    // OEM Icelandic; Icelandic (DOS)
        862 => 'DOS-862',   // OEM Hebrew; Hebrew (DOS)
        863 => 'IBM863',    // OEM French Canadian; French Canadian (DOS)
        864 => 'IBM864',    // OEM Arabic; Arabic (864)
        865 => 'IBM865',    // OEM Nordic; Nordic (DOS)
        866 => 'cp866',     // OEM Russian; Cyrillic (DOS)
        869 => 'IBM869',    // OEM Modern Greek; Greek, Modern (DOS)
        870 => 'IBM870',    // IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2
        874 => 'windows-874',  // ANSI/OEM Thai (ISO 8859-11); Thai (Windows)
        875 => 'cp875',     // IBM EBCDIC Greek Modern
        932 => 'shift_jis', // ANSI/OEM Japanese; Japanese (Shift-JIS)
        936 => 'gb2312',    // ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312)
        950 => 'big5',      // ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5)
        1026 => 'IBM1026',      // IBM EBCDIC Turkish (Latin 5)
        1047 => 'IBM01047',     // IBM EBCDIC Latin 1/Open System
        1140 => 'IBM01140',     // IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro)
        1141 => 'IBM01141',     // IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro)
        1142 => 'IBM01142',     // IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro)
        1143 => 'IBM01143',     // IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro)
        1144 => 'IBM01144',     // IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro)
        1145 => 'IBM01145',     // IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro)
        1146 => 'IBM01146',     // IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro)
        1147 => 'IBM01147',     // IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro)
        1148 => 'IBM01148',     // IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro)
        1149 => 'IBM01149',     // IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro)
        1200 => 'UTF-16',       // Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
        1201 => 'UTF-16BE',     // Unicode UTF-16, big endian byte order; available only to managed applications
        1250 => 'windows-1250', // ANSI Central European; Central European (Windows)
        1251 => 'windows-1251', // ANSI Cyrillic; Cyrillic (Windows)
        1252 => 'windows-1252', // ANSI Latin 1; Western European (Windows)
        1253 => 'windows-1253', // ANSI Greek; Greek (Windows)
        1254 => 'windows-1254', // ANSI Turkish; Turkish (Windows)
        1255 => 'windows-1255', // ANSI Hebrew; Hebrew (Windows)
        1256 => 'windows-1256', // ANSI Arabic; Arabic (Windows)
        1257 => 'windows-1257', // ANSI Baltic; Baltic (Windows)
        1258 => 'windows-1258', // ANSI/OEM Vietnamese; Vietnamese (Windows)
        10000 => 'macintosh',   // MAC Roman; Western European (Mac)
        12000 => 'UTF-32',      // Unicode UTF-32, little endian byte order; available only to managed applications
        12001 => 'UTF-32BE',    // Unicode UTF-32, big endian byte order; available only to managed applications
        20127 => 'US-ASCII',    // US-ASCII (7-bit)
        20273 => 'IBM273',      // IBM EBCDIC Germany
        20277 => 'IBM277',      // IBM EBCDIC Denmark-Norway
        20278 => 'IBM278',      // IBM EBCDIC Finland-Sweden
        20280 => 'IBM280',      // IBM EBCDIC Italy
        20284 => 'IBM284',      // IBM EBCDIC Latin America-Spain
        20285 => 'IBM285',      // IBM EBCDIC United Kingdom
        20290 => 'IBM290',      // IBM EBCDIC Japanese Katakana Extended
        20297 => 'IBM297',      // IBM EBCDIC France
        20420 => 'IBM420',      // IBM EBCDIC Arabic
        20423 => 'IBM423',      // IBM EBCDIC Greek
        20424 => 'IBM424',      // IBM EBCDIC Hebrew
        20838 => 'IBM-Thai',    // IBM EBCDIC Thai
        20866 => 'koi8-r',      // Russian (KOI8-R); Cyrillic (KOI8-R)
        20871 => 'IBM871',      // IBM EBCDIC Icelandic
        20880 => 'IBM880',      // IBM EBCDIC Cyrillic Russian
        20905 => 'IBM905',      // IBM EBCDIC Turkish
        20924 => 'IBM00924',    // IBM EBCDIC Latin 1/Open System (1047 + Euro symbol)
        20932 => 'EUC-JP',      // Japanese (JIS 0208-1990 and 0212-1990)
        20936 => 'cp20936',     // Simplified Chinese (GB2312); Chinese Simplified (GB2312-80)
        20949 => 'cp20949',     // Korean Wansung
        21025 => 'cp1025',      // IBM EBCDIC Cyrillic Serbian-Bulgarian
        21866 => 'koi8-u',      // Ukrainian (KOI8-U); Cyrillic (KOI8-U)
        28591 => 'iso-8859-1',  // ISO 8859-1 Latin 1; Western European (ISO)
        28592 => 'iso-8859-2',  // ISO 8859-2 Central European; Central European (ISO)
        28593 => 'iso-8859-3',  // ISO 8859-3 Latin 3
        28594 => 'iso-8859-4',  // ISO 8859-4 Baltic
        28595 => 'iso-8859-5',  // ISO 8859-5 Cyrillic
        28596 => 'iso-8859-6',  // ISO 8859-6 Arabic
        28597 => 'iso-8859-7',  // ISO 8859-7 Greek
        28598 => 'iso-8859-8',  // ISO 8859-8 Hebrew; Hebrew (ISO-Visual)
        28599 => 'iso-8859-9',  // ISO 8859-9 Turkish
        28603 => 'iso-8859-13', // ISO 8859-13 Estonian
        28605 => 'iso-8859-15', // ISO 8859-15 Latin 9
        38598 => 'iso-8859-8-i', // ISO 8859-8 Hebrew; Hebrew (ISO-Logical)
        50220 => 'iso-2022-jp', // ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS)
        50221 => 'csISO2022JP', // ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana)
        50222 => 'iso-2022-jp', // ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI)
        50225 => 'iso-2022-kr', // ISO 2022 Korean
        51932 => 'EUC-JP',      // EUC Japanese
        51936 => 'EUC-CN',      // EUC Simplified Chinese; Chinese Simplified (EUC)
        51949 => 'EUC-KR',      // EUC Korean
        52936 => 'hz-gb-2312',  // HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ)
        54936 => 'GB18030',     // Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030)
        65000 => 'UTF-7',
        65001 => 'UTF-8',
    ];

    /**
     * Validate character set identifier.
     *
     * @param string $input Character set identifier
     *
     * @return bool True if valid, False if not valid
     */
    public static function is_valid($input)
    {
        return is_string($input) && preg_match('|^[a-zA-Z0-9_./:#-]{2,32}$|', $input) > 0;
    }

    /**
     * Parse and validate charset name string.
     * Sometimes charset string is malformed, there are also charset aliases,
     * but we need strict names for charset conversion (specially utf8 class)
     *
     * @param string $input Input charset name
     *
     * @return string The validated charset name
     */
    public static function parse_charset($input)
    {
        static $charsets = [];

        $charset = strtoupper((string) $input);

        if (isset($charsets[$input])) {
            return $charsets[$input];
        }

        $charset = preg_replace([
            '/^[^0-9A-Z]+/',    // e.g. _ISO-8859-JP$SIO
            '/\$.*$/',          // e.g. _ISO-8859-JP$SIO
            '/UNICODE-1-1-*/',  // RFC1641/1642
            '/^X-/',            // X- prefix (e.g. X-ROMAN8 => ROMAN8)
            '/\*.*$/'           // lang code according to RFC 2231.5
        ], '', $charset);

        if ($charset == 'BINARY') {
            return $charsets[$input] = null;
        }

        // allow A-Z and 0-9 only
        $str = preg_replace('/[^A-Z0-9]/', '', $charset);

        $result = $charset;

        if (isset(self::$aliases[$str])) {
            $result = self::$aliases[$str];
        }
        // UTF
        else if (preg_match('/U[A-Z][A-Z](7|8|16|32)(BE|LE)*/', $str, $m)) {
            $result = 'UTF-' . $m[1] . (!empty($m[2]) ? $m[2] : '');
        }
        // ISO-8859
        else if (preg_match('/ISO8859([0-9]{0,2})/', $str, $m)) {
            $iso = 'ISO-8859-' . ($m[1] ?: 1);
            // some clients sends windows-1252 text as latin1,
            // it is safe to use windows-1252 for all latin1
            $result = $iso == 'ISO-8859-1' ? 'WINDOWS-1252' : $iso;
        }
        // handle broken charset names e.g. WINDOWS-1250HTTP-EQUIVCONTENT-TYPE
        else if (preg_match('/(WIN|WINDOWS)([0-9]+)/', $str, $m)) {
            $result = 'WINDOWS-' . $m[2];
        }
        // LATIN
        else if (preg_match('/LATIN(.*)/', $str, $m)) {
            $aliases = ['2' => 2, '3' => 3, '4' => 4, '5' => 9, '6' => 10,
                '7' => 13, '8' => 14, '9' => 15, '10' => 16,
                'ARABIC' => 6, 'CYRILLIC' => 5, 'GREEK' => 7, 'GREEK1' => 7, 'HEBREW' => 8
            ];

            // some clients sends windows-1252 text as latin1,
            // it is safe to use windows-1252 for all latin1
            if ($m[1] == 1) {
                $result = 'WINDOWS-1252';
            }
            // we need ISO labels
            else if (!empty($aliases[$m[1]])) {
                $result = 'ISO-8859-'.$aliases[$m[1]];
            }
        }

        $charsets[$input] = $result;

        return $result;
    }

    /**
     * Convert a string from one charset to another.
     *
     * @param string $str  Input string
     * @param string $from Suspected charset of the input string
     * @param string $to   Target charset to convert to; defaults to RCUBE_CHARSET
     *
     * @return string Converted string
     */
    public static function convert($str, $from, $to = null)
    {
        static $iconv_options;

        $to   = empty($to) ? RCUBE_CHARSET : self::parse_charset($to);
        $from = self::parse_charset($from);

        // It is a common case when UTF-16 charset is used with US-ASCII content (#1488654)
        // In that case we can just skip the conversion (use UTF-8)
        if ($from == 'UTF-16' && !preg_match('/[^\x00-\x7F]/', $str)) {
            $from = 'UTF-8';
        }

        if ($from == $to || empty($str) || empty($from)) {
            return $str;
        }

        $out = false;
        $error_handler = function() { throw new \Exception(); };

        // Ignore invalid characters
        $mbstring_sc = mb_substitute_character();
        mb_substitute_character('none');

        // If mbstring reports an illegal character in input via E_WARNING.
        // FIXME: Is this really true with substitute character 'none'?
        // A warning is thrown in PHP<8 also on unsupported encoding, in PHP>=8 ValueError
        // is thrown instead (therefore we catch Throwable below)
        set_error_handler($error_handler, E_WARNING);

        try {
            $out = mb_convert_encoding($str, $to, $from);
        }
        catch (Throwable $e) {
            $out = false;
        }

        restore_error_handler();
        mb_substitute_character($mbstring_sc);

        if ($out !== false) {
            return $out;
        }

        if ($iconv_options === null) {
            if (function_exists('iconv')) {
                // ignore characters not available in output charset
                $iconv_options = '//IGNORE';
                if (iconv('', $iconv_options, '') === false) {
                    // iconv implementation does not support options
                    $iconv_options = '';
                }
            }
            else {
                $iconv_options = false;
            }
        }

        // Fallback to iconv module, it is slower, but supports much more charsets than mbstring
        if ($iconv_options !== false && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP'
            && $from !== 'ISO-2022-JP'
        ) {
            // If iconv reports an illegal character in input it means that input string
            // has been truncated. It's reported as E_NOTICE.
            // PHP8 will also throw E_WARNING on unsupported encoding.
            set_error_handler($error_handler, E_NOTICE | E_WARNING);

            try {
                $out = iconv($from, $to . $iconv_options, $str);
            }
            catch (Throwable $e) {
                $out = false;
            }

            restore_error_handler();

            if ($out !== false) {
                return $out;
            }
        }

        // return the original string
        return $str;
    }

    /**
     * Check if the specified input string matches one of the provided charsets.
     * This includes UTF-32, UTF-16, RCUBE_CHARSET and default_charset.
     *
     * @param string $str      Input string
     * @param array  $charsets Suspected charsets of the input string
     *
     * @return string|null First matching charset
     */
    public static function check($str, $charsets = [])
    {
        $chunk = strlen($str) > 100 * 1024 ? substr($str, 0, 100 * 1024) : $str;

        // Add dehault charset, system charset and easily detectable charset to the list
        if (substr($chunk, 0, 4) == "\0\0\xFE\xFF") $charsets[] = 'UTF-32BE';
        if (substr($chunk, 0, 4) == "\xFF\xFE\0\0") $charsets[] = 'UTF-32LE';
        if (substr($chunk, 0, 2) == "\xFE\xFF")     $charsets[] = 'UTF-16BE';
        if (substr($chunk, 0, 2) == "\xFF\xFE")     $charsets[] = 'UTF-16LE';

        // heuristics
        if (preg_match('/\x00\x00\x00[^\x00]/', $chunk))    $charsets[] = 'UTF-32BE';
        if (preg_match('/[^\x00]\x00\x00\x00/', $chunk))    $charsets[] = 'UTF-32LE';
        if (preg_match('/\x00[^\x00]\x00[^\x00]/', $chunk)) $charsets[] = 'UTF-16BE';
        if (preg_match('/[^\x00]\x00[^\x00]\x00/', $chunk)) $charsets[] = 'UTF-16LE';

        $charsets[] = RCUBE_CHARSET;
        $charsets[] = (string) rcube::get_instance()->config->get('default_charset');

        $charsets = array_map(['rcube_charset', 'parse_charset'], $charsets);
        $charsets = array_unique(array_filter($charsets));

        foreach ($charsets as $charset) {
            $ret = self::convert($chunk, $charset);

            if ($ret === rcube_charset::clean($ret)) {
                return $charset;
            }
        }
    }

    /**
     * Converts string from standard UTF-7 (RFC 2152) to UTF-8.
     *
     * @param string $str Input string (UTF-7)
     *
     * @return string Converted string (UTF-8)
     * @deprecated use self::convert()
     */
    public static function utf7_to_utf8($str)
    {
        return self::convert($str, 'UTF-7', 'UTF-8');
    }

    /**
     * Converts string from UTF-16 to UTF-8 (helper for utf-7 to utf-8 conversion)
     *
     * @param string $str Input string
     *
     * @return string The converted string
     * @deprecated use self::convert()
     */
    public static function utf16_to_utf8($str)
    {
        return self::convert($str, 'UTF-16BE', 'UTF-8');
    }

    /**
     * Convert the data ($str) from RFC 2060's UTF-7 to UTF-8.
     * If input data is invalid, return the original input string.
     * RFC 2060 obviously intends the encoding to be unique (see
     * point 5 in section 5.1.3), so we reject any non-canonical
     * form, such as &ACY- (instead of &-) or &AMA-&AMA- (instead
     * of &AMAAwA-).
     *
     * @param string $str Input string (UTF7-IMAP)
     *
     * @return string Output string (UTF-8)
     * @deprecated use self::convert()
     */
    public static function utf7imap_to_utf8($str)
    {
        return self::convert($str, 'UTF7-IMAP', 'UTF-8');
    }

    /**
     * Convert the data ($str) from UTF-8 to RFC 2060's UTF-7.
     * Unicode characters above U+FFFF are replaced by U+FFFE.
     * If input data is invalid, return an empty string.
     *
     * @param string $str Input string (UTF-8)
     *
     * @return string Output string (UTF7-IMAP)
     * @deprecated use self::convert()
     */
    public static function utf8_to_utf7imap($str)
    {
        return self::convert($str, 'UTF-8', 'UTF7-IMAP');
    }

    /**
     * A method to guess character set of a string.
     *
     * @param string $string   String
     * @param string $failover Default result for failover
     * @param string $language User language
     *
     * @return string Charset name
     * @deprecated
     */
    public static function detect($string, $failover = null, $language = null)
    {
        if (substr($string, 0, 4) == "\0\0\xFE\xFF") return 'UTF-32BE';  // Big Endian
        if (substr($string, 0, 4) == "\xFF\xFE\0\0") return 'UTF-32LE';  // Little Endian
        if (substr($string, 0, 2) == "\xFE\xFF")     return 'UTF-16BE';  // Big Endian
        if (substr($string, 0, 2) == "\xFF\xFE")     return 'UTF-16LE';  // Little Endian
        if (substr($string, 0, 3) == "\xEF\xBB\xBF") return 'UTF-8';

        // heuristics
        if (strlen($string) >= 4) {
            if ($string[0] == "\0" && $string[1] == "\0" && $string[2] == "\0" && $string[3] != "\0") return 'UTF-32BE';
            if ($string[0] != "\0" && $string[1] == "\0" && $string[2] == "\0" && $string[3] == "\0") return 'UTF-32LE';
            if ($string[0] == "\0" && $string[1] != "\0" && $string[2] == "\0" && $string[3] != "\0") return 'UTF-16BE';
            if ($string[0] != "\0" && $string[1] == "\0" && $string[2] != "\0" && $string[3] == "\0") return 'UTF-16LE';
        }

        if (empty($language)) {
            $rcube    = rcube::get_instance();
            $language = $rcube->get_user_language();
        }

        // Prioritize charsets according to the current language (#1485669)
        $prio = null;
        switch ($language) {
        case 'ja_JP':
            $prio = ['ISO-2022-JP', 'JIS', 'UTF-8', 'EUC-JP', 'eucJP-win', 'SJIS'];
            break;

        case 'zh_CN':
        case 'zh_TW':
            $prio = ['UTF-8', 'BIG-5', 'EUC-TW', 'GB18030'];
            break;

        case 'ko_KR':
            $prio = ['UTF-8', 'EUC-KR', 'ISO-2022-KR'];
            break;

        case 'ru_RU':
            $prio = ['UTF-8', 'WINDOWS-1251', 'KOI8-R'];
            break;

        case 'tr_TR':
            $prio = ['UTF-8', 'ISO-8859-9', 'WINDOWS-1254'];
            break;
        }

        // mb_detect_encoding() is not reliable for some charsets (#1490135)
        // use mb_check_encoding() to make charset priority lists really working
        if (!empty($prio) && function_exists('mb_check_encoding')) {
            foreach ($prio as $encoding) {
                if (mb_check_encoding($string, $encoding)) {
                    return $encoding;
                }
            }
        }

        if (function_exists('mb_detect_encoding')) {
            $exclude = 'BASE64,UUENCODE,HTML-ENTITIES,Quoted-Printable,'
                . '7bit,8bit,pass,wchar,byte2be,byte2le,byte4be,byte4le,'
                . 'UCS-4,UCS-4BE,UCS-4LE,UCS-2,UCS-2BE,UCS-2LE';

            if (empty($prio)) {
                $prio = [
                    'UTF-8',
                    'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4',
                    'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9',
                    'ISO-8859-10', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
                    'WINDOWS-1252', 'WINDOWS-1251', 'WINDOWS-1254',
                    'EUC-JP', 'EUC-TW', 'KOI8-R', 'BIG-5', 'ISO-2022-KR', 'ISO-2022-JP', 'GB18030',
                ];
            }

            // We have to remove unwanted/uncommon encodings from the list.
            // This is needed especially on PHP >= 8.1
            $all_encodings = array_diff(mb_list_encodings(), explode(',', $exclude));

            $encodings = array_unique(array_merge($prio, $all_encodings));

            if ($encoding = mb_detect_encoding($string, $encodings, true)) {
                return $encoding;
            }
        }

        // No match, check for UTF-8
        // from http://w3.org/International/questions/qa-forms-utf-8.html
        if (preg_match('/\A(
            [\x09\x0A\x0D\x20-\x7E]
            | [\xC2-\xDF][\x80-\xBF]
            | \xE0[\xA0-\xBF][\x80-\xBF]
            | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}
            | \xED[\x80-\x9F][\x80-\xBF]
            | \xF0[\x90-\xBF][\x80-\xBF]{2}
            | [\xF1-\xF3][\x80-\xBF]{3}
            | \xF4[\x80-\x8F][\x80-\xBF]{2}
            )*\z/xs', substr($string, 0, 2048))
        ) {
            return 'UTF-8';
        }

        return $failover;
    }

    /**
     * Removes non-unicode characters from input.
     * If the input is an array, both values and keys will be cleaned up.
     *
     * @param mixed $input String or array.
     *
     * @return mixed String or array
     */
    public static function clean($input)
    {
        // handle input of type array
        if (is_array($input)) {
            foreach (array_keys($input) as $key) {
                $k = is_string($key) ? self::clean($key) : $key;
                $v = self::clean($input[$key]);

                if ($k !== $key) {
                    unset($input[$key]);
                    if (!array_key_exists($k, $input)) {
                        $input[$k] = $v;
                    }
                }
                else {
                    $input[$k] = $v;
                }
            }
            return $input;
        }

        if (!is_string($input) || $input == '') {
            return $input;
        }

        $msch = mb_substitute_character();
        mb_substitute_character('none');
        $res = mb_convert_encoding($input, 'UTF-8', 'UTF-8');
        mb_substitute_character($msch);

        return $res;
    }
}
lib/Roundcube/rcube_imap_cache.php000064400000116117151727150650013222 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching of IMAP folder contents (messages and index)                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface class for accessing Roundcube messages cache
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_imap_cache
{
    const MODE_INDEX   = 1;
    const MODE_MESSAGE = 2;

    /**
     * Instance of rcube_imap
     *
     * @var rcube_imap
     */
    private $imap;

    /**
     * Instance of rcube_db
     *
     * @var rcube_db
     */
    private $db;

    /**
     * User ID
     *
     * @var int
     */
    private $userid;

    /**
     * Expiration time in seconds
     *
     * @var int
     */
    private $ttl;

    /**
     * Maximum cached message size
     *
     * @var int
     */
    private $threshold;

    /**
     * Internal (in-memory) cache
     *
     * @var array
     */
    private $icache = [];

    private $skip_deleted = false;
    private $mode;
    private $index_table;
    private $thread_table;
    private $messages_table;

    /**
     * List of known flags. Thanks to this we can handle flag changes
     * with good performance. Bad thing is we need to know used flags.
     */
    public $flags = [
        1       => 'SEEN',          // RFC3501
        2       => 'DELETED',       // RFC3501
        4       => 'ANSWERED',      // RFC3501
        8       => 'FLAGGED',       // RFC3501
        16      => 'DRAFT',         // RFC3501
        32      => 'MDNSENT',       // RFC3503
        64      => 'FORWARDED',     // RFC5550
        128     => 'SUBMITPENDING', // RFC5550
        256     => 'SUBMITTED',     // RFC5550
        512     => 'JUNK',
        1024    => 'NONJUNK',
        2048    => 'LABEL1',
        4096    => 'LABEL2',
        8192    => 'LABEL3',
        16384   => 'LABEL4',
        32768   => 'LABEL5',
        65536   => 'HASATTACHMENT',
        131072  => 'HASNOATTACHMENT',
    ];


    /**
     * Object constructor.
     *
     * @param rcube_db   $db           DB handler
     * @param rcube_imap $imap         IMAP handler
     * @param int        $userid       User identifier
     * @param bool       $skip_deleted skip_deleted flag
     * @param string     $ttl          Expiration time of memcache/apc items
     * @param int        $threshold    Maximum cached message size
     */
    function __construct($db, $imap, $userid, $skip_deleted, $ttl = 0, $threshold = 0)
    {
        // convert ttl string to seconds
        $ttl = get_offset_sec($ttl);
        if ($ttl > 2592000) $ttl = 2592000;

        $this->db           = $db;
        $this->imap         = $imap;
        $this->userid       = $userid;
        $this->skip_deleted = $skip_deleted;
        $this->ttl          = $ttl;
        $this->threshold    = $threshold;

        // cache all possible information by default
        $this->mode = self::MODE_INDEX | self::MODE_MESSAGE;

        // database tables
        $this->index_table    = $db->table_name('cache_index', true);
        $this->thread_table   = $db->table_name('cache_thread', true);
        $this->messages_table = $db->table_name('cache_messages', true);
    }

    /**
     * Cleanup actions (on shutdown).
     */
    public function close()
    {
        $this->save_icache();
        $this->icache = null;
    }

    /**
     * Set cache mode
     *
     * @param int $mode Cache mode
     */
    public function set_mode($mode)
    {
        $this->mode = $mode;
    }

    /**
     * Return (sorted) messages index (UIDs).
     * If index doesn't exist or is invalid, will be updated.
     *
     * @param string $mailbox    Folder name
     * @param string $sort_field Sorting column
     * @param string $sort_order Sorting order (ASC|DESC)
     * @param bool   $existing   Skip index initialization if it doesn't exist in DB
     *
     * @return array Messages index
     */
    function get_index($mailbox, $sort_field = null, $sort_order = null, $existing = false)
    {
        if (empty($this->icache[$mailbox])) {
            $this->icache[$mailbox] = [];
        }

        $sort_order = strtoupper($sort_order) == 'ASC' ? 'ASC' : 'DESC';

        // Seek in internal cache
        if (array_key_exists('index', $this->icache[$mailbox])) {
            // The index was fetched from database already, but not validated yet
            if (empty($this->icache[$mailbox]['index']['validated'])) {
                $index = $this->icache[$mailbox]['index'];
            }
            // We've got a valid index
            else if ($sort_field == 'ANY' || $this->icache[$mailbox]['index']['sort_field'] == $sort_field) {
                $result = $this->icache[$mailbox]['index']['object'];
                if ($result->get_parameters('ORDER') != $sort_order) {
                    $result->revert();
                }
                return $result;
            }
        }

        // Get index from DB (if DB wasn't already queried)
        if (empty($index) && empty($this->icache[$mailbox]['index_queried'])) {
            $index = $this->get_index_row($mailbox);

            // set the flag that DB was already queried for index
            // this way we'll be able to skip one SELECT, when
            // get_index() is called more than once
            $this->icache[$mailbox]['index_queried'] = true;
        }

        $data = null;

        // @TODO: Think about skipping validation checks.
        // If we could check only every 10 minutes, we would be able to skip
        // expensive checks, mailbox selection or even IMAP connection, this would require
        // additional logic to force cache invalidation in some cases
        // and many rcube_imap changes to connect when needed

        // Entry exists, check cache status
        if (!empty($index)) {
            $exists = true;
            $modseq = $index['modseq'] ?? null;
            $isf    = $index['sort_field'] ?? '';

            if ($sort_field == 'ANY') {
                $sort_field = $isf;
            }

            if ($sort_field != $isf) {
                $is_valid = false;
            }
            else {
                $is_valid = $this->validate($mailbox, $index, $exists);
            }

            if ($is_valid) {
                $data = $index['object'];
                // revert the order if needed
                if ($data->get_parameters('ORDER') != $sort_order) {
                    $data->revert();
                }
            }
        }
        else {
            if ($existing) {
                return null;
            }

            if ($sort_field == 'ANY') {
                $sort_field = '';
            }

            // Got it in internal cache, so the row already exist
            $exists = array_key_exists('index', $this->icache[$mailbox]);

            $modseq = null;
        }

        // Index not found, not valid or sort field changed, get index from IMAP server
        if ($data === null) {
            // Get mailbox data (UIDVALIDITY, counters, etc.) for status check
            $mbox_data = $this->imap->folder_data($mailbox);
            $data      = $this->get_index_data($mailbox, $sort_field, $sort_order, $mbox_data);

            if (isset($mbox_data['HIGHESTMODSEQ'])) {
                $modseq = $mbox_data['HIGHESTMODSEQ'];
            }

            // insert/update
            $this->add_index_row($mailbox, $sort_field, $data, $mbox_data, $exists, $modseq);
        }

        $this->icache[$mailbox]['index'] = [
            'validated'  => true,
            'object'     => $data,
            'sort_field' => $sort_field,
            'modseq'     => $modseq
        ];

        return $data;
    }

    /**
     * Return messages thread.
     * If threaded index doesn't exist or is invalid, will be updated.
     *
     * @param string $mailbox Folder name
     *
     * @return array Messages threaded index
     */
    function get_thread($mailbox)
    {
        if (empty($this->icache[$mailbox])) {
            $this->icache[$mailbox] = [];
        }

        // Seek in internal cache
        if (array_key_exists('thread', $this->icache[$mailbox])) {
            return $this->icache[$mailbox]['thread']['object'];
        }

        $index = null;

        // Get thread from DB (if DB wasn't already queried)
        if (empty($this->icache[$mailbox]['thread_queried'])) {
            $index = $this->get_thread_row($mailbox);

            // set the flag that DB was already queried for thread
            // this way we'll be able to skip one SELECT, when
            // get_thread() is called more than once or after clear()
            $this->icache[$mailbox]['thread_queried'] = true;
        }

        // Entry exist, check cache status
        if (!empty($index)) {
            $exists   = true;
            $is_valid = $this->validate($mailbox, $index, $exists);

            if (!$is_valid) {
                $index = null;
            }
        }

        // Index not found or not valid, get index from IMAP server
        if ($index === null) {
            // Get mailbox data (UIDVALIDITY, counters, etc.) for status check
            $mbox_data = $this->imap->folder_data($mailbox);
            // Get THREADS result
            $index['object'] = $this->get_thread_data($mailbox, $mbox_data);

            // insert/update
            $this->add_thread_row($mailbox, $index['object'], $mbox_data, !empty($exists));
        }

        $this->icache[$mailbox]['thread'] = $index;

        return $index['object'];
    }

    /**
     * Returns list of messages (headers). See rcube_imap::fetch_headers().
     *
     * @param string $mailbox  Folder name
     * @param array  $msgs     Message UIDs
     *
     * @return array The list of messages (rcube_message_header) indexed by UID
     */
    function get_messages($mailbox, $msgs = [])
    {
        $result = [];

        if (empty($msgs)) {
            return $result;
        }

        if ($this->mode & self::MODE_MESSAGE) {
            // Fetch messages from cache
            $sql_result = $this->db->query(
                "SELECT `uid`, `data`, `flags`"
                ." FROM {$this->messages_table}"
                ." WHERE `user_id` = ?"
                    ." AND `mailbox` = ?"
                    ." AND `uid` IN (".$this->db->array2list($msgs, 'integer').")",
                $this->userid, $mailbox);

            $msgs = array_flip($msgs);

            while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                $uid          = intval($sql_arr['uid']);
                $result[$uid] = $this->build_message($sql_arr);

                if (!empty($result[$uid])) {
                    // save memory, we don't need message body here (?)
                    $result[$uid]->body = null;

                    unset($msgs[$uid]);
                }
            }

            $this->db->reset();

            $msgs = array_flip($msgs);
        }

        // Fetch not found messages from IMAP server
        if (!empty($msgs)) {
            $messages = $this->imap->fetch_headers($mailbox, $msgs, false, true);

            // Insert to DB and add to result list
            if (!empty($messages)) {
                foreach ($messages as $msg) {
                    if ($this->mode & self::MODE_MESSAGE) {
                        $this->add_message($mailbox, $msg, !array_key_exists($msg->uid, $result));
                    }

                    $result[$msg->uid] = $msg;
                }
            }
        }

        return $result;
    }

    /**
     * Returns message data.
     *
     * @param string $mailbox Folder name
     * @param int    $uid     Message UID
     * @param bool   $update  If message doesn't exists in cache it will be fetched
     *                        from IMAP server
     * @param bool   $cache   Enables internal cache usage
     *
     * @return rcube_message_header Message data
     */
    function get_message($mailbox, $uid, $update = true, $cache = true)
    {
        // Check internal cache
        if (!empty($this->icache['__message'])
            && $this->icache['__message']['mailbox'] == $mailbox
            && $this->icache['__message']['object']->uid == $uid
        ) {
            return $this->icache['__message']['object'];
        }

        $message = null;
        $found   = false;

        if ($this->mode & self::MODE_MESSAGE) {
            $sql_result = $this->db->query(
                "SELECT `flags`, `data`"
                ." FROM {$this->messages_table}"
                ." WHERE `user_id` = ?"
                    ." AND `mailbox` = ?"
                    ." AND `uid` = ?",
                    $this->userid, $mailbox, (int)$uid);

            if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                $message = $this->build_message($sql_arr);
                $found   = true;
            }
        }

        // Get the message from IMAP server
        if (empty($message) && $update) {
            $message = $this->imap->get_message_headers($uid, $mailbox, true);
            // cache will be updated in close(), see below
        }

        if (!($this->mode & self::MODE_MESSAGE)) {
            return $message;
        }

        // Save the message in internal cache, will be written to DB in close()
        // Common scenario: user opens unseen message
        // - get message (SELECT)
        // - set message headers/structure (INSERT or UPDATE)
        // - set \Seen flag (UPDATE)
        // This way we can skip one UPDATE
        if (!empty($message) && $cache) {
            // Save current message from internal cache
            $this->save_icache();

            $this->icache['__message'] = [
                'object'  => $message,
                'mailbox' => $mailbox,
                'exists'  => $found,
                'md5sum'  => md5(serialize($message)),
            ];
        }

        return $message;
    }

    /**
     * Saves the message in cache.
     *
     * @param string               $mailbox  Folder name
     * @param rcube_message_header $message  Message data
     * @param bool                 $force    Skips message in-cache existence check
     */
    function add_message($mailbox, $message, $force = false)
    {
        if (!is_object($message) || empty($message->uid)) {
            return;
        }

        if (!($this->mode & self::MODE_MESSAGE)) {
            return;
        }

        $flags = 0;
        $msg   = clone $message;

        if (!empty($message->flags)) {
            foreach ($this->flags as $idx => $flag) {
                if (!empty($message->flags[$flag])) {
                    $flags += $idx;
                }
            }
        }

        unset($msg->flags);

        $msg     = $this->db->encode($msg, true);
        $expires = $this->db->param($this->ttl ? $this->db->now($this->ttl) : 'NULL', rcube_db::TYPE_SQL);

        $this->db->insert_or_update(
            $this->messages_table,
            ['user_id' => $this->userid, 'mailbox' => $mailbox, 'uid' => (int) $message->uid],
            ['flags', 'expires', 'data'],
            [$flags, $expires, $msg]
        );
    }

    /**
     * Sets the flag for specified message.
     *
     * @param string  $mailbox  Folder name
     * @param array   $uids     Message UIDs or null to change flag
     *                          of all messages in a folder
     * @param string  $flag     The name of the flag
     * @param bool    $enabled  Flag state
     */
    function change_flag($mailbox, $uids, $flag, $enabled = false)
    {
        if (empty($uids)) {
            return;
        }

        if (!($this->mode & self::MODE_MESSAGE)) {
            return;
        }

        $flag = strtoupper($flag);
        $idx  = (int) array_search($flag, $this->flags);
        $uids = (array) $uids;

        if (!$idx) {
            return;
        }

        // Internal cache update
        if (
            !empty($this->icache['__message'])
            && ($message = $this->icache['__message'])
            && $message['mailbox'] === $mailbox
            && in_array($message['object']->uid, $uids)
        ) {
            $message['object']->flags[$flag] = $enabled;

            if (count($uids) == 1) {
                return;
            }
        }

        $binary_check = $this->db->db_provider == 'oracle' ? "BITAND(`flags`, %d)" : "(`flags` & %d)";

        $this->db->query(
            "UPDATE {$this->messages_table}"
            ." SET `expires` = ". ($this->ttl ? $this->db->now($this->ttl) : 'NULL')
            .", `flags` = `flags` ".($enabled ? "+ $idx" : "- $idx")
            ." WHERE `user_id` = ?"
                ." AND `mailbox` = ?"
                .(!empty($uids) ? " AND `uid` IN (".$this->db->array2list($uids, 'integer').")" : "")
                ." AND " . sprintf($binary_check, $idx) . ($enabled ? " = 0" : " = $idx"),
            $this->userid, $mailbox
        );
    }

    /**
     * Removes message(s) from cache.
     *
     * @param string $mailbox  Folder name
     * @param array  $uids     Message UIDs, NULL removes all messages
     */
    function remove_message($mailbox = null, $uids = null)
    {
        if (!($this->mode & self::MODE_MESSAGE)) {
            return;
        }

        if (!strlen($mailbox)) {
            $this->db->query(
                "DELETE FROM {$this->messages_table}"
                ." WHERE `user_id` = ?",
                $this->userid);
        }
        else {
            // Remove the message from internal cache
            if (
                !empty($uids)
                && !empty($this->icache['__message'])
                && ($message = $this->icache['__message'])
                && $message['mailbox'] === $mailbox
                && in_array($message['object']->uid, (array) $uids)
            ) {
                $this->icache['__message'] = null;
            }

            $this->db->query(
                "DELETE FROM {$this->messages_table}"
                ." WHERE `user_id` = ?"
                    ." AND `mailbox` = ?"
                    .($uids !== null ? " AND `uid` IN (".$this->db->array2list((array)$uids, 'integer').")" : ""),
                $this->userid, $mailbox
            );
        }
    }

    /**
     * Clears index cache.
     *
     * @param string  $mailbox     Folder name
     * @param bool    $remove      Enable to remove the DB row
     */
    function remove_index($mailbox = null, $remove = false)
    {
        if (!($this->mode & self::MODE_INDEX)) {
            return;
        }

        // The index should be only removed from database when
        // UIDVALIDITY was detected or the mailbox is empty
        // otherwise use 'valid' flag to not loose HIGHESTMODSEQ value
        if ($remove) {
            $this->db->query(
                "DELETE FROM {$this->index_table}"
                ." WHERE `user_id` = ?"
                    .(strlen($mailbox) ? " AND `mailbox` = ".$this->db->quote($mailbox) : ""),
                $this->userid
            );
        }
        else {
            $this->db->query(
                "UPDATE {$this->index_table}"
                ." SET `valid` = 0"
                ." WHERE `user_id` = ?"
                    .(strlen($mailbox) ? " AND `mailbox` = ".$this->db->quote($mailbox) : ""),
                $this->userid
            );
        }

        if (strlen($mailbox)) {
            unset($this->icache[$mailbox]['index']);
            // Index removed, set flag to skip SELECT query in get_index()
            $this->icache[$mailbox]['index_queried'] = true;
        }
        else {
            $this->icache = [];
        }
    }

    /**
     * Clears thread cache.
     *
     * @param string $mailbox Folder name
     */
    function remove_thread($mailbox = null)
    {
        if (!($this->mode & self::MODE_INDEX)) {
            return;
        }

        $this->db->query(
            "DELETE FROM {$this->thread_table}"
            ." WHERE `user_id` = ?"
                .(strlen($mailbox) ? " AND `mailbox` = ".$this->db->quote($mailbox) : ""),
            $this->userid
        );

        if (strlen($mailbox)) {
            unset($this->icache[$mailbox]['thread']);
            // Thread data removed, set flag to skip SELECT query in get_thread()
            $this->icache[$mailbox]['thread_queried'] = true;
        }
        else {
            $this->icache = [];
        }
    }

    /**
     * Clears the cache.
     *
     * @param string $mailbox  Folder name
     * @param array  $uids     Message UIDs, NULL removes all messages in a folder
     */
    function clear($mailbox = null, $uids = null)
    {
        $this->remove_index($mailbox, true);
        $this->remove_thread($mailbox);
        $this->remove_message($mailbox, $uids);
    }

    /**
     * Delete expired cache entries
     */
    static function gc()
    {
        $rcube = rcube::get_instance();
        $db    = $rcube->get_dbh();
        $now   = $db->now();

        $db->query("DELETE FROM " . $db->table_name('cache_messages', true)
              ." WHERE `expires` < $now");

        $db->query("DELETE FROM " . $db->table_name('cache_index', true)
              ." WHERE `expires` < $now");

        $db->query("DELETE FROM ".$db->table_name('cache_thread', true)
              ." WHERE `expires` < $now");
    }

    /**
     * Fetches index data from database
     */
    private function get_index_row($mailbox)
    {
        if (!($this->mode & self::MODE_INDEX)) {
            return;
        }

        // Get index from DB
        $sql_result = $this->db->query(
            "SELECT `data`, `valid`"
            ." FROM {$this->index_table}"
            ." WHERE `user_id` = ?"
                ." AND `mailbox` = ?",
            $this->userid, $mailbox
        );

        if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            $data  = explode('@', $sql_arr['data']);
            $index = $this->db->decode($data[0], true);
            unset($data[0]);

            if (empty($index)) {
                $index = new rcube_result_index($mailbox);
            }

            return [
                'valid'      => $sql_arr['valid'],
                'object'     => $index,
                'sort_field' => $data[1],
                'deleted'    => $data[2],
                'validity'   => $data[3],
                'uidnext'    => $data[4],
                'modseq'     => $data[5],
            ];
        }
    }

    /**
     * Fetches thread data from database
     */
    private function get_thread_row($mailbox)
    {
        if (!($this->mode & self::MODE_INDEX)) {
            return;
        }

        // Get thread from DB
        $sql_result = $this->db->query(
            "SELECT `data`"
            ." FROM {$this->thread_table}"
            ." WHERE `user_id` = ?"
                ." AND `mailbox` = ?",
            $this->userid, $mailbox);

        if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            $data   = explode('@', $sql_arr['data']);
            $thread = $this->db->decode($data[0], true);
            unset($data[0]);

            if (empty($thread)) {
                $thread = new rcube_result_thread($mailbox);
            }

            return [
                'object'   => $thread,
                'deleted'  => $data[1],
                'validity' => $data[2],
                'uidnext'  => $data[3],
            ];
        }
    }

    /**
     * Saves index data into database
     */
    private function add_index_row($mailbox, $sort_field, $data, $mbox_data = [], $exists = false, $modseq = null)
    {
        if (!($this->mode & self::MODE_INDEX)) {
            return;
        }

        $data = [
            $this->db->encode($data, true),
            $sort_field,
            (int) $this->skip_deleted,
            (int) $mbox_data['UIDVALIDITY'],
            (int) $mbox_data['UIDNEXT'],
            $modseq ?: ($mbox_data['HIGHESTMODSEQ'] ?? ''),
        ];

        $data    = implode('@', $data);
        $expires = $this->db->param($this->ttl ? $this->db->now($this->ttl) : 'NULL', rcube_db::TYPE_SQL);

        $this->db->insert_or_update(
            $this->index_table,
            ['user_id' => $this->userid, 'mailbox' => $mailbox],
            ['valid', 'expires', 'data'],
            [1, $expires, $data]
        );
    }

    /**
     * Saves thread data into database
     */
    private function add_thread_row($mailbox, $data, $mbox_data = [], $exists = false)
    {
        if (!($this->mode & self::MODE_INDEX)) {
            return;
        }

        $data = [
            $this->db->encode($data, true),
            (int) $this->skip_deleted,
            (int) $mbox_data['UIDVALIDITY'],
            (int) $mbox_data['UIDNEXT'],
        ];

        $data    = implode('@', $data);
        $expires = $this->db->param($this->ttl ? $this->db->now($this->ttl) : 'NULL', rcube_db::TYPE_SQL);

        $this->db->insert_or_update(
            $this->thread_table,
            ['user_id' => $this->userid, 'mailbox' => $mailbox],
            ['expires', 'data'],
            [$expires, $data]
        );
    }

    /**
     * Checks index/thread validity
     */
    private function validate($mailbox, $index, &$exists = true)
    {
        $object    = $index['object'];
        $is_thread = is_a($object, 'rcube_result_thread');

        // sanity check
        if (empty($object)) {
            return false;
        }

        $index['validated'] = true;

        // Get mailbox data (UIDVALIDITY, counters, etc.) for status check
        $mbox_data = $this->imap->folder_data($mailbox);

        // @TODO: Think about skipping validation checks.
        // If we could check only every 10 minutes, we would be able to skip
        // expensive checks, mailbox selection or even IMAP connection, this would require
        // additional logic to force cache invalidation in some cases
        // and many rcube_imap changes to connect when needed

        // Check UIDVALIDITY
        if (empty($index['validity']) || $index['validity'] != $mbox_data['UIDVALIDITY']) {
            $this->clear($mailbox);
            $exists = false;
            return false;
        }

        // Folder is empty but cache isn't
        if (empty($mbox_data['EXISTS'])) {
            if (!$object->is_empty()) {
                $this->clear($mailbox);
                $exists = false;
                return false;
            }
        }
        // Folder is not empty but cache is
        else if ($object->is_empty()) {
            unset($this->icache[$mailbox][$is_thread ? 'thread' : 'index']);
            return false;
        }

        // Validation flag
        if (!$is_thread && empty($index['valid'])) {
            unset($this->icache[$mailbox]['index']);
            return false;
        }

        // Index was created with different skip_deleted setting
        if ($this->skip_deleted != $index['deleted']) {
            return false;
        }

        // Check HIGHESTMODSEQ
        if (!empty($index['modseq']) && !empty($mbox_data['HIGHESTMODSEQ'])
            && $index['modseq'] == $mbox_data['HIGHESTMODSEQ']
        ) {
            return true;
        }

        // Check UIDNEXT
        if ($index['uidnext'] != $mbox_data['UIDNEXT']) {
            unset($this->icache[$mailbox][$is_thread ? 'thread' : 'index']);
            return false;
        }

        // @TODO: find better validity check for threaded index
        if ($is_thread) {
            // check messages number...
            if (!$this->skip_deleted && $mbox_data['EXISTS'] != $object->count_messages()) {
                return false;
            }
            return true;
        }

        // The rest of checks, more expensive
        if (!empty($this->skip_deleted)) {
            // compare counts if available
            if (!empty($mbox_data['UNDELETED'])
                && $mbox_data['UNDELETED']->count() != $object->count()
            ) {
                return false;
            }

            // compare UID sets
            if (!empty($mbox_data['UNDELETED'])) {
                $uids_new = $mbox_data['UNDELETED']->get();
                $uids_old = $object->get();

                if (count($uids_new) != count($uids_old)) {
                    return false;
                }

                sort($uids_new, SORT_NUMERIC);
                sort($uids_old, SORT_NUMERIC);

                if ($uids_old != $uids_new) {
                    return false;
                }
            }
            else if ($object->is_empty()) {
                // We have to run ALL UNDELETED search anyway for this case, so we can
                // return early to skip the following search command.
                return false;
            }
            else {
                // get all undeleted messages excluding cached UIDs
                $existing = rcube_imap_generic::compressMessageSet($object->get());
                $ids = $this->imap->search_once($mailbox, "ALL UNDELETED NOT UID $existing");

                if (!$ids->is_empty()) {
                    return false;
                }
            }
        }
        else {
            // check messages number...
            if ($mbox_data['EXISTS'] != $object->count()) {
                return false;
            }
            // ... and max UID
            if ($object->max() != $this->imap->id2uid($mbox_data['EXISTS'], $mailbox)) {
                return false;
            }
        }

        return true;
    }

    /**
     * Synchronizes the mailbox.
     *
     * @param string $mailbox Folder name
     */
    function synchronize($mailbox)
    {
        // RFC4549: Synchronization Operations for Disconnected IMAP4 Clients
        // RFC4551: IMAP Extension for Conditional STORE Operation
        //          or Quick Flag Changes Resynchronization
        // RFC5162: IMAP Extensions for Quick Mailbox Resynchronization

        // @TODO: synchronize with other methods?
        $qresync   = $this->imap->get_capability('QRESYNC');
        $condstore = $qresync ? true : $this->imap->get_capability('CONDSTORE');

        if (!$qresync && !$condstore) {
            return;
        }

        // Get stored index
        $index = $this->get_index_row($mailbox);

        // database is empty
        if (empty($index)) {
            // set the flag that DB was already queried for index
            // this way we'll be able to skip one SELECT in get_index()
            $this->icache[$mailbox]['index_queried'] = true;
            return;
        }

        $this->icache[$mailbox]['index'] = $index;

        // no last HIGHESTMODSEQ value
        if (empty($index['modseq'])) {
            return;
        }

        if (!$this->imap->check_connection()) {
            return;
        }

        // Enable QRESYNC
        $res = $this->imap->conn->enable($qresync ? 'QRESYNC' : 'CONDSTORE');
        if ($res === false) {
            return;
        }

        // Close mailbox if already selected to get most recent data
        if ($this->imap->conn->selected == $mailbox) {
            $this->imap->conn->close();
        }

        // Get mailbox data (UIDVALIDITY, HIGHESTMODSEQ, counters, etc.)
        $mbox_data = $this->imap->folder_data($mailbox);

        if (empty($mbox_data)) {
             return;
        }

        // Check UIDVALIDITY
        if ($index['validity'] != $mbox_data['UIDVALIDITY']) {
            $this->clear($mailbox);
            return;
        }

        // QRESYNC not supported on specified mailbox
        if (!empty($mbox_data['NOMODSEQ']) || empty($mbox_data['HIGHESTMODSEQ'])) {
            return;
        }

        // Nothing new
        if ($mbox_data['HIGHESTMODSEQ'] == $index['modseq']) {
            return;
        }

        $uids    = [];
        $removed = [];

        // Get known UIDs
        if ($this->mode & self::MODE_MESSAGE) {
            $sql_result = $this->db->query(
                "SELECT `uid`"
                ." FROM {$this->messages_table}"
                ." WHERE `user_id` = ?"
                    ." AND `mailbox` = ?",
                $this->userid, $mailbox
            );

            while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                $uids[] = $sql_arr['uid'];
            }
        }

        // Synchronize messages data
        if (!empty($uids)) {
            // Get modified flags and vanished messages
            // UID FETCH 1:* (FLAGS) (CHANGEDSINCE 0123456789 VANISHED)
            $result = $this->imap->conn->fetch($mailbox, $uids, true, ['FLAGS'], $index['modseq'], $qresync);

            if (!empty($result)) {
                foreach ($result as $msg) {
                    $uid = $msg->uid;
                    // Remove deleted message
                    if ($this->skip_deleted && !empty($msg->flags['DELETED'])) {
                        $removed[] = $uid;
                        // Invalidate index
                        $index['valid'] = false;
                        continue;
                    }

                    $flags = 0;
                    if (!empty($msg->flags)) {
                        foreach ($this->flags as $idx => $flag) {
                            if (!empty($msg->flags[$flag])) {
                                $flags += $idx;
                            }
                        }
                    }

                    $this->db->query(
                        "UPDATE {$this->messages_table}"
                        ." SET `flags` = ?, `expires` = " . ($this->ttl ? $this->db->now($this->ttl) : 'NULL')
                        ." WHERE `user_id` = ?"
                            ." AND `mailbox` = ?"
                            ." AND `uid` = ?"
                            ." AND `flags` <> ?",
                        $flags, $this->userid, $mailbox, $uid, $flags
                    );
                }
            }

            // VANISHED found?
            if ($qresync) {
                $mbox_data = $this->imap->folder_data($mailbox);

                // Removed messages found
                $uids = isset($mbox_data['VANISHED']) ? rcube_imap_generic::uncompressMessageSet($mbox_data['VANISHED']) : null;
                if (!empty($uids)) {
                    $removed = array_merge($removed, $uids);
                    // Invalidate index
                    $index['valid'] = false;
                }
            }

            // remove messages from database
            if (!empty($removed)) {
                $this->remove_message($mailbox, $removed);
            }
        }

        $sort_field = $index['sort_field'];
        $sort_order = $index['object']->get_parameters('ORDER');
        $exists     = true;

        // Validate index
        if (!$this->validate($mailbox, $index, $exists)) {
            // Invalidate (remove) thread index
            // if $exists=false it was already removed in validate()
            if ($exists) {
                $this->remove_thread($mailbox);
            }

            // Update index
            $data = $this->get_index_data($mailbox, $sort_field, $sort_order, $mbox_data);
        }
        else {
            $data = $index['object'];
        }

        // update index and/or HIGHESTMODSEQ value
        $this->add_index_row($mailbox, $sort_field, $data, $mbox_data, $exists);

        // update internal cache for get_index()
        $this->icache[$mailbox]['index']['object'] = $data;
    }

    /**
     * Converts cache row into message object.
     *
     * @param array $sql_arr Message row data
     *
     * @return rcube_message_header Message object
     */
    private function build_message($sql_arr)
    {
        $message = $this->db->decode($sql_arr['data'], true);

        if ($message) {
            $message->flags = [];
            foreach ($this->flags as $idx => $flag) {
                if (($sql_arr['flags'] & $idx) == $idx) {
                    $message->flags[$flag] = true;
                }
           }
        }

        return $message;
    }

    /**
     * Saves message stored in internal cache
     */
    private function save_icache()
    {
        // Save current message from internal cache
        if (!empty($this->icache['__message'])) {
            $message = $this->icache['__message'];

            // clean up some object's data
            $this->message_object_prepare($message['object']);

            // calculate current md5 sum
            $md5sum = md5(serialize($message['object']));

            if ($message['md5sum'] != $md5sum) {
                $this->add_message($message['mailbox'], $message['object'], !$message['exists']);
            }

            $this->icache['__message']['md5sum'] = $md5sum;
        }
    }

    /**
     * Prepares message object to be stored in database.
     *
     * @param rcube_message_header|rcube_message_part $msg
     */
    private function message_object_prepare(&$msg, &$size = 0)
    {
        // Remove body too big
        if (isset($msg->body)) {
            $length = strlen($msg->body);

            if (!empty($msg->body_modified) || $size + $length > $this->threshold * 1024) {
                unset($msg->body);
            }
            else {
                $size += $length;
            }
        }

        // Fix mimetype which might be broken by some code when message is displayed
        // Another solution would be to use object's copy in rcube_message class
        // to prevent related issues, however I'm not sure which is better
        if (!empty($msg->mimetype)) {
            list($msg->ctype_primary, $msg->ctype_secondary) = explode('/', $msg->mimetype);
        }

        unset($msg->replaces);

        if (!empty($msg->structure) && is_object($msg->structure)) {
            $this->message_object_prepare($msg->structure, $size);
        }

        if (!empty($msg->parts) && is_array($msg->parts)) {
            foreach ($msg->parts as $part) {
                $this->message_object_prepare($part, $size);
            }
        }
    }

    /**
     * Fetches index data from IMAP server
     */
    private function get_index_data($mailbox, $sort_field, $sort_order, $mbox_data = [])
    {
        if (empty($mbox_data)) {
            $mbox_data = $this->imap->folder_data($mailbox);
        }

        if (!empty($mbox_data['EXISTS'])) {
            // fetch sorted sequence numbers
            $index = $this->imap->index_direct($mailbox, $sort_field, $sort_order);
        }
        else {
            $index = new rcube_result_index($mailbox, '* SORT');
        }

        return $index;
    }

    /**
     * Fetches thread data from IMAP server
     */
    private function get_thread_data($mailbox, $mbox_data = [])
    {
        if (empty($mbox_data)) {
            $mbox_data = $this->imap->folder_data($mailbox);
        }

        if (!empty($mbox_data['EXISTS'])) {
            // get all threads (default sort order)
            return $this->imap->threads_direct($mailbox);
        }

        return new rcube_result_thread($mailbox, '* THREAD');
    }
}
lib/Roundcube/rcube_tnef_decoder.php000064400000066555151727150650013604 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) 2002-2010, The Horde Project (http://www.horde.org/)    |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   MS-TNEF format decoder                                              |
 +-----------------------------------------------------------------------+
 | Author: Jan Schneider <jan@horde.org>                                 |
 | Author: Michael Slusarz <slusarz@horde.org>                           |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * MS-TNEF format decoder based on code by:
 *   Graham Norbury <gnorbury@bondcar.com>
 * Original design by:
 *   Thomas Boll <tb@boll.ch>, Mark Simpson <damned@world.std.com>
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_tnef_decoder
{
    const SIGNATURE         = 0x223e9f78;
    const LVL_MESSAGE       = 0x01;
    const LVL_ATTACHMENT    = 0x02;

    const AFROM             = 0x08000;
    const ASUBJECT          = 0x18004;
    const AMESSAGEID        = 0x18009;
    const AFILENAME         = 0x18010;
    const APARENTID         = 0x1800a;
    const ACONVERSATIONID   = 0x1800b;
    const ABODY             = 0x2800c;
    const ADATESENT         = 0x38005;
    const ADATERECEIVED     = 0x38006;
    const ADATEMODIFIED     = 0x38020;
    const APRIORITY         = 0x4800d;
    const AOWNER            = 0x60000;
    const ASENTFOR          = 0x60001;
    const ASTATUS           = 0x68007;
    const ATTACHDATA        = 0x6800f;
    const ATTACHMETAFILE    = 0x68011;
    const ATTACHCREATEDATE  = 0x38012;
    const ARENDDATA         = 0x69002;
    const AMAPIPROPS        = 0x69003;
    const ARECIPIENTTABLE   = 0x69004;
    const AMAPIATTRS        = 0x69005;
    const AOEMCODEPAGE      = 0x69007;
    const AORIGINALMCLASS   = 0x70006;
    const AMCLASS           = 0x78008;
    const AVERSION          = 0x89006;

    const MAPI_TYPE_UNSET     = 0x0000;
    const MAPI_NULL           = 0x0001;
    const MAPI_SHORT          = 0x0002;
    const MAPI_INT            = 0x0003;
    const MAPI_FLOAT          = 0x0004;
    const MAPI_DOUBLE         = 0x0005;
    const MAPI_CURRENCY       = 0x0006;
    const MAPI_APPTIME        = 0x0007;
    const MAPI_ERROR          = 0x000a;
    const MAPI_BOOLEAN        = 0x000b;
    const MAPI_OBJECT         = 0x000d;
    const MAPI_INT8BYTE       = 0x0014;
    const MAPI_STRING         = 0x001e;
    const MAPI_UNICODE_STRING = 0x001f;
    const MAPI_SYSTIME        = 0x0040;
    const MAPI_CLSID          = 0x0048;
    const MAPI_BINARY         = 0x0102;

    const MAPI_BODY                     = 0x1000;
    const MAPI_RTF_COMPRESSED           = 0x1009;
    const MAPI_BODY_HTML                = 0x1013;
    const MAPI_NATIVE_BODY              = 0x1016;

    const MAPI_DISPLAY_NAME             = 0x3001;
    const MAPI_ADDRTYPE                 = 0x3002;
    const MAPI_EMAIL_ADDRESS            = 0x3003;
    const MAPI_COMMENT                  = 0x3004;
    const MAPI_DEPTH                    = 0x3005;
    const MAPI_PROVIDER_DISPLAY         = 0x3006;
    const MAPI_CREATION_TIME            = 0x3007;
    const MAPI_LAST_MODIFICATION_TIME   = 0x3008;
    const MAPI_RESOURCE_FLAGS           = 0x3009;
    const MAPI_PROVIDER_DLL_NAME        = 0x300A;
    const MAPI_SEARCH_KEY               = 0x300B;
    const MAPI_ATTACHMENT_X400_PARAMETERS = 0x3700;
    const MAPI_ATTACH_DATA              = 0x3701;
    const MAPI_ATTACH_ENCODING          = 0x3702;
    const MAPI_ATTACH_EXTENSION         = 0x3703;
    const MAPI_ATTACH_FILENAME          = 0x3704;
    const MAPI_ATTACH_METHOD            = 0x3705;
    const MAPI_ATTACH_LONG_FILENAME     = 0x3707;
    const MAPI_ATTACH_PATHNAME          = 0x3708;
    const MAPI_ATTACH_RENDERING         = 0x3709;
    const MAPI_ATTACH_TAG               = 0x370A;
    const MAPI_RENDERING_POSITION       = 0x370B;
    const MAPI_ATTACH_TRANSPORT_NAME    = 0x370C;
    const MAPI_ATTACH_LONG_PATHNAME     = 0x370D;
    const MAPI_ATTACH_MIME_TAG          = 0x370E;
    const MAPI_ATTACH_ADDITIONAL_INFO   = 0x370F;
    const MAPI_ATTACH_MIME_SEQUENCE     = 0x3710;
    const MAPI_ATTACH_CONTENT_ID        = 0x3712;
    const MAPI_ATTACH_CONTENT_LOCATION  = 0x3713;
    const MAPI_ATTACH_FLAGS             = 0x3714;

    const MAPI_NAMED_TYPE_ID        = 0x0000;
    const MAPI_NAMED_TYPE_STRING    = 0x0001;
    const MAPI_NAMED_TYPE_NONE      = 0xff;
    const MAPI_MV_FLAG              = 0x1000;

    const RTF_UNCOMPRESSED = 0x414c454d;
    const RTF_COMPRESSED   = 0x75465a4c;

    protected $codepage;


    /**
     * Decompress the data.
     *
     * @param string $data    The data to decompress.
     * @param bool   $as_html Return message body as HTML
     *
     * @return array The decompressed data.
     */
    public function decompress($data, $as_html = false)
    {
        $attachments = [];
        $message     = [];

        if ($this->_geti($data, 32) == self::SIGNATURE) {
            $this->_geti($data, 16);

            // Version
            $this->_geti($data, 8);     // lvl_message
            $this->_geti($data, 32);    // idTnefVersion
            $this->_getx($data, $this->_geti($data, 32));
            $this->_geti($data, 16);    // checksum

            while (strlen($data) > 0) {
                switch ($this->_geti($data, 8)) {
                case self::LVL_MESSAGE:
                    $this->_decodeMessage($data, $message);
                    break;

                case self::LVL_ATTACHMENT:
                    $this->_decodeAttachment($data, $attachments);
                    break;
                }
            }
        }

        // Return the message body as HTML
        if ($message && $as_html) {
            // HTML body
            if (!empty($message['size']) && $message['subtype'] == 'html') {
                $message = $message['stream'];
            }
            // RTF body (converted to HTML)
            // Note: RTF can contain encapsulated HTML content
            else if (!empty($message['size']) && $message['subtype'] == 'rtf'
                && function_exists('iconv')
                && class_exists('RtfHtmlPhp\Document')
            ) {
                try {
                    $document  = new RtfHtmlPhp\Document($message['stream']);
                    $formatter = new RtfHtmlPhp\Html\HtmlFormatter(RCUBE_CHARSET);
                    $message   = $formatter->format($document);
                }
                catch (Exception $e) {
                    // ignore the body
                    rcube::raise_error([
                            'file' => __FILE__,
                            'line' => __LINE__,
                            'message' => "Failed to extract RTF/HTML content from TNEF attachment"
                        ], true, false
                    );
                }
            }
            else {
                $message = null;
            }
        }

        return [
            'message'     => $message,
            'attachments' => array_reverse($attachments),
        ];
    }

    /**
     * Pop specified number of bytes from the buffer.
     *
     * @param string &$data The data string.
     * @param int    $bytes How many bytes to retrieve.
     *
     * @return string Extracted data
     */
    protected function _getx(&$data, $bytes)
    {
        $value = null;

        if (strlen($data) >= $bytes) {
            $value = substr($data, 0, $bytes);
            $data  = substr($data, $bytes);
        }

        return $value;
    }

    /**
     * Pop specified number of bits from the buffer
     *
     * @param string &$data The data string.
     * @param int    $bits  How many bits to retrieve.
     *
     * @return int|null
     */
    protected function _geti(&$data, $bits)
    {
        $bytes = $bits / 8;
        $value = null;

        if (strlen($data) >= $bytes) {
            $value = ord($data[0]);
            if ($bytes >= 2) {
                $value += (ord($data[1]) << 8);
            }
            if ($bytes >= 4) {
                $value += (ord($data[2]) << 16) + (ord($data[3]) << 24);
            }

            $data = substr($data, $bytes);
        }

        return $value;
    }

    /**
     * Decode a single attribute
     *
     * @param string &$data The data string.
     *
     * @return string Extracted data
     */
    protected function _decodeAttribute(&$data)
    {
        // Data.
        $value = $this->_getx($data, $this->_geti($data, 32));

        // Checksum.
        $this->_geti($data, 16);

        return $value;
    }

    /**
     * TODO
     *
     * @param string $data    The data string.
     * @param array  &$result TODO
     */
    protected function _extractMapiAttributes($data, &$result)
    {
        // Number of attributes.
        $number = $this->_geti($data, 32);

        while ((strlen($data) > 0) && $number--) {
            $have_mval = false;
            $num_mval  = 1;
            $value     = null;
            $attr_type = $this->_geti($data, 16);
            $attr_name = $this->_geti($data, 16);

            if (($attr_type & self::MAPI_MV_FLAG) != 0) {
                $have_mval = true;
                $attr_type = $attr_type & ~self::MAPI_MV_FLAG;
            }

            if (($attr_name >= 0x8000) && ($attr_name < 0xFFFE)) {
                $this->_getx($data, 16);
                $named_type = $this->_geti($data, 32);

                switch ($named_type) {
                case self::MAPI_NAMED_TYPE_ID:
                    $attr_name = $this->_geti($data, 32);
                    break;

                case self::MAPI_NAMED_TYPE_STRING:
                    $attr_name = 0x9999;
                    $idlen     = $this->_geti($data, 32);
                    $name      = $this->_getx($data, $idlen + ((4 - ($idlen % 4)) % 4));
                    // $name      = $this->convertString(substr($name, 0, $idlen));
                    break;

                case self::MAPI_NAMED_TYPE_NONE:
                default:
                    continue 2;
                }
            }

            if ($have_mval) {
                $num_mval = $this->_geti($data, 32);
            }

            switch ($attr_type) {
            case self::MAPI_NULL:
            case self::MAPI_TYPE_UNSET:
                break;

            case self::MAPI_SHORT:
                $value = $this->_geti($data, 16);
                $this->_geti($data, 16);
                break;

            case self::MAPI_INT:
            case self::MAPI_BOOLEAN:
                for ($i = 0; $i < $num_mval; $i++) {
                    $value = $this->_geti($data, 32);
                }
                break;

            case self::MAPI_FLOAT:
            case self::MAPI_ERROR:
                $value = $this->_getx($data, 4);
                break;

            case self::MAPI_DOUBLE:
            case self::MAPI_APPTIME:
            case self::MAPI_CURRENCY:
            case self::MAPI_INT8BYTE:
            case self::MAPI_SYSTIME:
                $value = $this->_getx($data, 8);
                break;

            case self::MAPI_STRING:
            case self::MAPI_UNICODE_STRING:
            case self::MAPI_BINARY:
            case self::MAPI_OBJECT:
                $num_vals = $have_mval ? $num_mval : $this->_geti($data, 32);
                for ($i = 0; $i < $num_vals; $i++) {
                    $length = $this->_geti($data, 32);

                    // Pad to next 4 byte boundary.
                    $datalen = $length + ((4 - ($length % 4)) % 4);

                    // Read and truncate to length.
                    $value = $this->_getx($data, $datalen);
                }

                if ($attr_type == self::MAPI_UNICODE_STRING) {
                    $value = $this->convertString($value);
                }

                break;
            }

            // Store any interesting attributes.
            switch ($attr_name) {
            case self::MAPI_RTF_COMPRESSED:
                $result['type']    = 'application';
                $result['subtype'] = 'rtf';
                $result['name']    = (!empty($result['name']) ? $result['name'] : 'Untitled') . '.rtf';
                $result['stream']  = $this->_decodeRTF($value);
                $result['size']    = strlen($result['stream']);
                break;

            case self::MAPI_BODY:
            case self::MAPI_BODY_HTML:
                $result['type']    = 'text';
                $result['subtype'] = $attr_name == self::MAPI_BODY ? 'plain' : 'html';
                $result['name']    = (!empty($result['name']) ? $result['name'] : 'Untitled')
                    . ($attr_name == self::MAPI_BODY ? '.txt' : '.html');
                $result['stream']  = $value;
                $result['size']    = strlen($value);
                break;

            case self::MAPI_ATTACH_LONG_FILENAME:
                // Used in preference to AFILENAME value.
                $result['name'] = trim(preg_replace('/.*[\/](.*)$/', '\1', $value));
                break;

            case self::MAPI_ATTACH_MIME_TAG:
                // Is this ever set, and what is format?
                $value = explode('/', trim($value));
                $result['type']    = $value[0];
                $result['subtype'] = $value[1];
                break;

            case self::MAPI_ATTACH_CONTENT_ID:
                $result['content-id'] = $value;
                break;

            case self::MAPI_ATTACH_DATA:
                $this->_getx($value, 16);
                $att = new rcube_tnef_decoder;
                $res = $att->decompress($value);
                $result = array_merge($result, $res['message']);
                break;
            }
        }
    }

    /**
     * Decodes TNEF message attributes
     *
     * @param string &$data    The data string.
     * @param array  &$message Message data
     */
    protected function _decodeMessage(&$data, &$message)
    {
        $attribute = $this->_geti($data, 32);
        $value     = $this->_decodeAttribute($data);

        switch ($attribute) {
        case self::AOEMCODEPAGE:
            // Find codepage of the message
            $value = unpack('V', $value);
            $this->codepage = $value[1];
            break;

        case self::AMCLASS:
            $value = trim(str_replace('Microsoft Mail v3.0 ', '', $value));
            // Normal message will be that with prefix 'IPM.Microsoft Mail.
            break;

        case self::ASUBJECT:
            $message['name'] = $value;
            break;

        case self::AMAPIPROPS:
            $this->_extractMapiAttributes($value, $message);
            break;
        }
    }

    /**
     * Decodes TNEF attachment attributes
     *
     * @param string &$data       The data string.
     * @param array  &$attachment Attachments data
     */
    protected function _decodeAttachment(&$data, &$attachment)
    {
        $attribute = $this->_geti($data, 32);
        $size      = $this->_geti($data, 32);
        $value     = $this->_getx($data, $size);

        $this->_geti($data, 16); // checksum

        switch ($attribute) {
        case self::ARENDDATA:
            // Add a new default data block to hold details of this
            // attachment. Reverse order is easier to handle later!
            array_unshift($attachment, [
                    'type'    => 'application',
                    'subtype' => 'octet-stream',
                    'name'    => 'unknown',
                    'stream'  => ''
            ]);

            break;

        case self::AFILENAME:
            $value = $this->convertString($value, true);
            // Strip path
            $attachment[0]['name'] = trim(preg_replace('/.*[\/](.*)$/', '\1', $value));
            break;

        case self::ATTACHDATA:
            // The attachment itself
            $attachment[0]['size']   = $size;
            $attachment[0]['stream'] = $value;
            break;

        case self::AMAPIATTRS:
            $this->_extractMapiAttributes($value, $attachment[0]);
            break;
        }
    }

    /**
     * Convert string value to system charset according to defined codepage
     */
    protected function convertString($str, $use_codepage = false)
    {
        if ($use_codepage && $this->codepage
            && ($charset = rcube_charset::$windows_codepages[$this->codepage])
        ) {
            $str = rcube_charset::convert($str, $charset, RCUBE_CHARSET);
        }
        else if (($pos = strpos($str, "\0")) !== false && $pos != strlen($str)-1) {
            $str = rcube_charset::convert($str, 'UTF-16LE', RCUBE_CHARSET);
        }

        return trim($str);
    }

    /**
     * Decodes TNEF RTF
     */
    protected function _decodeRTF($data)
    {
        $c_size = $this->_geti($data, 32);
        $size   = $this->_geti($data, 32);
        $magic  = $this->_geti($data, 32);
        $crc    = $this->_geti($data, 32);

        if ($magic == self::RTF_COMPRESSED) {
            $data = $this->_decompressRTF($data, $size);
        }

        return $data;
    }

    /**
     * Decompress compressed RTF. Logic taken from Horde.
     */
    protected function _decompressRTF($data, $size)
    {
        $in = $out = $flags = $flag_count = 0;
        $uncomp    = '';
        $preload   = "{\\rtf1\\ansi\\mac\\deff0\\deftab720{\\fonttbl;}{\\f0\\fnil \\froman \\fswiss \\fmodern \\fscript \\fdecor MS Sans SerifSymbolArialTimes New RomanCourier{\\colortbl\\red0\\green0\\blue0\n\r\\par \\pard\\plain\\f0\\fs20\\b\\i\\u\\tab\\tx";
        $length_preload = strlen($preload);

        for ($cnt = 0; $cnt < $length_preload; $cnt++) {
            $uncomp .= $preload[$cnt];
            ++$out;
        }

        while ($out < ($size + $length_preload)) {
            if (($flag_count++ % 8) == 0) {
                $flags = ord($data[$in++]);
            }
            else {
                $flags = $flags >> 1;
            }

            if (($flags & 1) != 0) {
                $offset = ord($data[$in++]);
                $length = ord($data[$in++]);
                $offset = ($offset << 4) | ($length >> 4);
                $length = ($length & 0xF) + 2;
                $offset = ((int)($out / 4096)) * 4096 + $offset;

                if ($offset >= $out) {
                    $offset -= 4096;
                }

                $end = $offset + $length;

                while ($offset < $end) {
                    $uncomp.= $uncomp[$offset++];
                    ++$out;
                }
            }
            else {
                $uncomp .= $data[$in++];
                ++$out;
            }
        }

        return substr($uncomp, $length_preload);
    }

    /**
     * Parse RTF data and return the best plaintext representation we can.
     * Adapted from: http://webcheatsheet.com/php/reading_the_clean_text_from_rtf.php
     *
     * @param string $text The RTF (uncompressed) text.
     *
     * @return string The plain text.
     */
    public static function rtf2text($text)
    {
        $document = '';
        $stack    = [];
        $j        = -1;

        // Read the data character-by- character…
        for ($i = 0, $len = strlen($text); $i < $len; $i++) {
            $c = $text[$i];
            switch ($c) {
            case "\\":
                // Key Word
                $nextChar = $text[$i + 1];
                // If it is another backslash or nonbreaking space or hyphen,
                // then the character is plain text and add it to the output stream.
                if ($nextChar == "\\" && self::_rtfIsPlain($stack[$j])) {
                    $document .= "\\";
                }
                elseif ($nextChar == '~' && self::_rtfIsPlain($stack[$j])) {
                    $document .= ' ';
                }
                elseif ($nextChar == '_' && self::_rtfIsPlain($stack[$j])) {
                    $document .= '-';
                }
                elseif ($nextChar == '*') {
                    // Add to the stack.
                    $stack[$j]['*'] = true;
                }
                elseif ($nextChar == "'") {
                    // If it is a single quote, read next two characters that
                    // are the hexadecimal notation of a character we should add
                    // to the output stream.
                    $hex = substr($text, $i + 2, 2);

                    if (self::_rtfIsPlain($stack[$j])) {
                        $document .= html_entity_decode('&#' . hexdec($hex) .';');
                    }

                    //Shift the pointer.
                    $i += 2;
                }
                elseif ($nextChar >= 'a' && $nextChar <= 'z' || $nextChar >= 'A' && $nextChar <= 'Z') {
                    // Since, we’ve found the alphabetic character, the next
                    // characters are control words and, possibly, some digit
                    // parameter.
                    $word  = '';
                    $param = null;

                    // Start reading characters after the backslash.
                    for ($k = $i + 1, $m = 0; $k < strlen($text); $k++, $m++) {
                        $nextChar = $text[$k];
                        // If the current character is a letter and there were
                        // no digits before it, then we’re still reading the
                        // control word. If there were digits, we should stop
                        // since we reach the end of the control word.
                        if ($nextChar >= 'a' && $nextChar <= 'z'
                            || $nextChar >= 'A' && $nextChar <= 'Z') {
                            if (!empty($param)) {
                                break;
                            }
                            $word .= $nextChar;
                        }
                        elseif ($nextChar >= '0' && $nextChar <= '9') {
                            // If it is a digit, store the parameter.
                            $param .= $nextChar;
                        }
                        elseif ($nextChar == '-') {
                            // Since minus sign may occur only before a digit
                            // parameter, check whether $param is empty.
                            // Otherwise, we reach the end of the control word.
                            if (!empty($param)) {
                                break;
                            }
                            $param .= $nextChar;
                        }
                        else {
                            break;
                        }
                    }

                    // Shift the pointer on the number of read characters.
                    $i += $m - 1;

                    // Start analyzing.We are interested mostly in control words
                    $toText = '';

                    switch (strtolower($word)) {
                    // If the control word is "u", then its parameter is
                    // the decimal notation of the Unicode character that
                    // should be added to the output stream. We need to
                    // check whether the stack contains \ucN control word.
                    // If it does, we should remove the N characters from
                    // the output stream.
                    case 'u':
                        $toText .= html_entity_decode('&#x' . dechex($param) .';');
                        $ucDelta = @$stack[$j]['uc'];
                        if ($ucDelta > 0) {
                            $i += $ucDelta;
                        }
                        break;
                    case 'par':
                    case 'page':
                    case 'column':
                    case 'line':
                    case 'lbr':
                        $toText .= "\n";
                        break;
                    case 'emspace':
                    case 'enspace':
                    case 'qmspace':
                        $toText .= ' ';
                        break;
                    case 'tab':
                        $toText .= "\t";
                        break;
                    case 'chdate':
                        $toText .= date('m.d.Y');
                        break;
                    case 'chdpl':
                        $toText .= date('l, j F Y');
                        break;
                    case 'chdpa':
                        $toText .= date('D, j M Y');
                        break;
                    case 'chtime':
                        $toText .= date('H:i:s');
                        break;
                    case 'emdash':
                        $toText .= html_entity_decode('&mdash;');
                        break;
                    case 'endash':
                        $toText .= html_entity_decode('&ndash;');
                        break;
                    case 'bullet':
                        $toText .= html_entity_decode('&#149;');
                        break;
                    case 'lquote':
                        $toText .= html_entity_decode('&lsquo;');
                        break;
                    case 'rquote':
                        $toText .= html_entity_decode('&rsquo;');
                        break;
                    case 'ldblquote':
                        $toText .= html_entity_decode('&laquo;');
                        break;
                    case 'rdblquote':
                        $toText .= html_entity_decode('&raquo;');
                        break;
                    default:
                        $stack[$j][strtolower($word)] = empty($param) ? true : $param;
                        break;
                    }

                    // Add data to the output stream if required.
                    if (self::_rtfIsPlain($stack[$j])) {
                        $document .= $toText;
                    }
                }

                $i++;
                break;

            case '{':
                // New subgroup starts, add new stack element and write the data
                // from previous stack element to it.
                if (!empty($stack[$j])) {
                    array_push($stack, $stack[$j++]);
                }
                else {
                    $j++;
                }
                break;

            case '}':
                array_pop($stack);
                $j--;
                break;

            case '\0':
            case '\r':
            case '\f':
            case '\n':
                // Junk
                break;

            default:
                // Add other data to the output stream if required.
                if (!empty($stack[$j]) && self::_rtfIsPlain($stack[$j])) {
                    $document .= $c;
                }
                break;
            }
        }

        return $document;
    }

    /**
     * Checks if an RTF element is plain text
     */
    protected static function _rtfIsPlain($s)
    {
        $notPlain = ['*', 'fonttbl', 'colortbl', 'datastore', 'themedata', 'stylesheet'];

        for ($i = 0; $i < count($notPlain); $i++) {
            if (!empty($s[$notPlain[$i]])) {
                return false;
            }
        }

        return true;
    }
}
lib/Roundcube/rcube_text2html.php000064400000025611151727150650013102 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Converts plain text to HTML                                         |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
 */

/**
 * Converts plain text to HTML
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_text2html
{
    /** @var string Contains the HTML content after conversion */
    protected $html;

    /** @var string Contains the plain text */
    protected $text;

    /** @var array Configuration */
    protected $config = [
        // non-breaking space
        'space' => "\xC2\xA0",
        // enables format=flowed parser
        'flowed' => false,
        // enables delsp=yes parser
        'delsp' => false,
        // enables wrapping for non-flowed text
        'wrap' => true,
        // line-break tag
        'break' => "<br>\n",
        // prefix and suffix (wrapper element)
        'begin' => '<div class="pre">',
        'end'   => '</div>',
        // enables links replacement
        'links' => true,
        // string replacer class
        'replacer' => 'rcube_string_replacer',
        // prefix and suffix of unwrappable line
        'nobr_start' => '<span style="white-space:nowrap">',
        'nobr_end'   => '</span>',
    ];

    /** @var bool Internal state */
    protected $converted = false;

    /** @var bool Internal no-wrap mode state */
    protected $nowrap = false;


    /**
     * Constructor.
     *
     * If the plain text source string (or file) is supplied, the class
     * will instantiate with that source propagated, all that has
     * to be done it to call get_html().
     *
     * @param string $source    Plain text
     * @param bool   $from_file Indicates $source is a file to pull content from
     * @param array  $config    Class configuration
     */
    function __construct($source = '', $from_file = false, $config = [])
    {
        if (!empty($source)) {
            $this->set_text($source, $from_file);
        }

        if (!empty($config) && is_array($config)) {
            $this->config = array_merge($this->config, $config);
        }
    }

    /**
     * Loads source text into memory, either from $source string or a file.
     *
     * @param string $source    Plain text
     * @param bool   $from_file Indicates $source is a file to pull content from
     */
    function set_text($source, $from_file = false)
    {
        if ($from_file && file_exists($source)) {
            $this->text = file_get_contents($source);
        }
        else {
            $this->text = $source;
        }

        $this->converted = false;
    }

    /**
     * Returns the HTML content.
     *
     * @return string HTML content
     */
    function get_html()
    {
        if (!$this->converted) {
            $this->convert();
        }

        return $this->html;
    }

    /**
     * Prints the HTML.
     */
    function print_html()
    {
        print $this->get_html();
    }

    /**
     * Workhorse function that does actual conversion (calls converter() method).
     */
    protected function convert()
    {
        // Convert TXT to HTML
        $this->html      = $this->converter($this->text);
        $this->converted = true;
    }

    /**
     * Workhorse function that does actual conversion.
     *
     * @param string $text Plain text
     *
     * @return string HTML content
     */
    protected function converter($text)
    {
        // make links and email-addresses clickable
        $attribs  = ['link_attribs' => ['rel' => 'noreferrer', 'target' => '_blank']];
        $replacer = new $this->config['replacer']($attribs);

        if ($this->config['flowed']) {
            $delsp = $this->config['delsp'];
            $text  = rcube_mime::unfold_flowed($text, null, $delsp);
        }

        // search for patterns like links and e-mail addresses and replace with tokens
        if ($this->config['links']) {
            $text = $replacer->replace($text);
        }

        // split body into single lines
        $text        = preg_split('/\r?\n/', $text);
        $quote_level = 0;
        $last        = null;
        $length      = 0;

        // wrap quoted lines with <blockquote>
        for ($n = 0, $cnt = count($text); $n < $cnt; $n++) {
            $first  = $text[$n][0] ?? '';

            if ($first == '>' && preg_match('/^(>+ {0,1})+/', $text[$n], $regs)) {
                $q        = substr_count($regs[0], '>');
                $text[$n] = substr($text[$n], strlen($regs[0]));
                $text[$n] = $this->convert_line($text[$n]);
                $_length  = strlen(str_replace(' ', '', $text[$n]));

                if ($q > $quote_level) {
                    if ($last !== null) {
                        $text[$last] .= (!$length ? "\n" : '')
                            . $replacer->get_replacement($replacer->add(
                                str_repeat('<blockquote>', $q - $quote_level)))
                            . $text[$n];

                        unset($text[$n]);
                    }
                    else {
                        $text[$n] = $replacer->get_replacement($replacer->add(
                            str_repeat('<blockquote>', $q - $quote_level))) . $text[$n];

                        $last = $n;
                    }
                }
                else if ($q < $quote_level) {
                    $text[$last] .= (!$length ? "\n" : '')
                        . $replacer->get_replacement($replacer->add(
                            str_repeat('</blockquote>', $quote_level - $q)))
                        . $text[$n];

                    unset($text[$n]);
                }
                else {
                    $last = $n;
                }
            }
            else {
                $text[$n] = $this->convert_line($text[$n]);
                $q        = 0;
                $_length  = strlen(str_replace(' ', '', $text[$n]));

                if ($quote_level > 0) {
                    $text[$last] .= (!$length ? "\n" : '')
                        . $replacer->get_replacement($replacer->add(
                            str_repeat('</blockquote>', $quote_level)))
                        . $text[$n];

                    unset($text[$n]);
                }
                else {
                    $last = $n;
                }
            }

            $quote_level = $q;
            $length      = $_length;
        }

        if ($quote_level > 0) {
            $text[$last] .= $replacer->get_replacement($replacer->add(
                str_repeat('</blockquote>', $quote_level)));
        }

        $text = implode("\n", $text);

        // colorize signature (up to <sig_max_lines> lines)
        $len           = strlen($text);
        $sig_sep       = "--" . $this->config['space'] . "\n";
        $sig_max_lines = rcube::get_instance()->config->get('sig_max_lines', 15);

        while (($sp = strrpos($text, $sig_sep, !empty($sp) ? -$len+$sp-1 : 0)) !== false) {
            if ($sp == 0 || $text[$sp-1] == "\n") {
                // do not touch blocks with more that X lines
                if (substr_count($text, "\n", $sp) < $sig_max_lines) {
                    $text = substr($text, 0, max(0, $sp))
                        .'<span class="sig">'.substr($text, $sp).'</span>';
                }

                break;
            }
        }

        // insert url/mailto links and citation tags
        $text = $replacer->resolve($text);

        // replace line breaks
        $text = str_replace("\n", $this->config['break'], $text);

        return $this->config['begin'] . $text . $this->config['end'];
    }

    /**
     * Converts spaces in line of text
     *
     * @param string $text Plain text
     *
     * @return string Converted text
     */
    protected function convert_line($text)
    {
        static $table;

        if (empty($table)) {
            $table = get_html_translation_table(HTML_SPECIALCHARS);
            unset($table['?']);

            // replace some whitespace characters
            $table["\r"] = '';
            $table["\t"] = '    ';
        }

        // empty line?
        if ($text === '') {
            return $text;
        }

        // skip signature separator
        if ($text == '-- ') {
            return '--' . $this->config['space'];
        }

        if ($this->nowrap) {
            if (!in_array($text[0], [' ', '-', '+', '@'])) {
                $this->nowrap = false;
            }
        }
        else {
            // Detect start of a unified diff
            // TODO: Support normal diffs
            // TODO: Support diff header and comment
            if (
                ($text[0] === '-' && preg_match('/^--- \S+/', $text))
                || ($text[0] === '+' && preg_match('/^\+\+\+ \S+/', $text))
                || ($text[0] === '@' && preg_match('/^@@ [0-9 ,+-]+ @@/', $text))
            ) {
                $this->nowrap = true;
            }
        }

        // replace HTML special and whitespace characters
        $text = strtr($text, $table);

        $nbsp      = $this->config['space'];
        $wrappable = !$this->nowrap && ($this->config['flowed'] || $this->config['wrap']);

        // make the line wrappable
        if ($wrappable) {
            $pos  = 0;
            $diff = 0;
            $last = -2;
            $len  = strlen($nbsp);
            $copy = $text;

            while (($pos = strpos($text, ' ', $pos)) !== false) {
                if (($pos == 0 || $text[$pos-1] == ' ') && $pos - 1 != $last) {
                    $last = $pos;
                    $copy = substr_replace($copy, $nbsp, $pos + $diff, 1);
                    $diff += $len - 1;
                }
                $pos++;
            }

            $text = $copy;
        }
        // make the whole line non-breakable if needed
        else if ($text !== '' && preg_match('/[^a-zA-Z0-9_]/', $text)) {
            // use non-breakable spaces to correctly display
            // trailing/leading spaces and multi-space inside
            $text = str_replace(' ', $nbsp, $text);
            // wrap in nobr element, so it's not wrapped on e.g. - or /
            $text = $this->config['nobr_start'] . $text .  $this->config['nobr_end'];
        }

        return $text;
    }
}
lib/Roundcube/rcube_browser.php000064400000010133151727150650012623 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Class representing the client browser's properties                  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Provide details about the client's browser based on the User-Agent header
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_browser
{
    /** @var float $ver Browser version */
    public $ver = 0;

    /** @var bool $win Browser OS is Windows */
    public $win = false;

    /** @var bool $mac Browser OS is Mac */
    public $mac = false;

    /** @var bool $linux Browser OS is Linux */
    public $linux = false;

    /** @var bool $unix Browser OS is Unix */
    public $unix = false;

    /** @var bool $webkit Browser uses WebKit engine */
    public $webkit = false;

    /** @var bool $opera Browser is Opera */
    public $opera = false;

    /** @var bool $chrome Browser is Chrome */
    public $chrome = false;

    /** @var bool $ie Browser is Internet Explorer */
    public $ie = false;

    /** @var bool $edge Browser is Edge */
    public $edge = false;

    /** @var bool $safari Browser is Safari */
    public $safari = false;

    /** @var bool $mz Browser is Mozilla Firefox */
    public $mz = false;


    /**
     * Object constructor
     */
    public function __construct()
    {
        $HTTP_USER_AGENT = !empty($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USER_AGENT']) : '';

        // Operating system detection
        $this->win   = strpos($HTTP_USER_AGENT, 'win') != false;
        $this->mac   = strpos($HTTP_USER_AGENT, 'mac') != false;
        $this->linux = strpos($HTTP_USER_AGENT, 'linux') != false;
        $this->unix  = strpos($HTTP_USER_AGENT, 'unix') != false;

        // Engine detection
        $this->webkit = strpos($HTTP_USER_AGENT, 'applewebkit') !== false;
        $this->opera  = strpos($HTTP_USER_AGENT, 'opera') !== false || ($this->webkit && strpos($HTTP_USER_AGENT, 'opr/') !== false);
        $this->edge   = strpos($HTTP_USER_AGENT, 'edge/') !== false;
        $this->ie     = !$this->opera && !$this->edge && (strpos($HTTP_USER_AGENT, 'compatible; msie') !== false || strpos($HTTP_USER_AGENT, 'trident/') !== false);
        $this->chrome = !$this->opera && !$this->edge && strpos($HTTP_USER_AGENT, 'chrome') !== false;
        $this->safari = !$this->opera && !$this->chrome && !$this->edge
                        && ($this->webkit || strpos($HTTP_USER_AGENT, 'safari') !== false);
        $this->mz     = !$this->ie && !$this->edge && !$this->safari && !$this->chrome && !$this->opera
                        && strpos($HTTP_USER_AGENT, 'mozilla') !== false;

        // Version detection
        if ($this->edge && preg_match('/edge\/([0-9.]+)/', $HTTP_USER_AGENT, $regs)) {
            $this->ver = (float) $regs[1];
        }
        else if ($this->opera && preg_match('/(opera|opr)(\s*|\/)([0-9.]+)/', $HTTP_USER_AGENT, $regs)) {
            $this->ver = (float) $regs[3];
        }
        else if ($this->safari && preg_match('/(version|safari)\/([0-9.]+)/', $HTTP_USER_AGENT, $regs)) {
            $this->ver = (float) $regs[1];
        }
        else if (preg_match('/(chrome|khtml|version|msie|rv:)(\s*|\/)([0-9.]+)/', $HTTP_USER_AGENT, $regs)) {
            $this->ver = (float) $regs[3];
        }
    }
}
lib/Roundcube/rcube_session.php000064400000052155151727150650012635 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide database supported session management                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Cor Bosman <cor@roundcu.be>                                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Abstract class to provide database supported session storage
 *
 * @package    Framework
 * @subpackage Core
 */
abstract class rcube_session
{
    protected $config;
    protected $key;
    protected $ip;
    protected $cookie;
    protected $changed;
    protected $start;
    protected $vars;
    protected $now;
    protected $lifetime;
    protected $reloaded     = false;
    protected $appends      = [];
    protected $unsets       = [];
    protected $gc_enabled   = 0;
    protected $gc_handlers  = [];
    protected $cookiename   = 'roundcube_sessauth';
    protected $ip_check     = false;
    protected $logging      = false;
    protected $ignore_write = false;


    /**
     * Blocks session data from being written to database.
     * Can be used if write-race conditions are to be expected
     * @var bool
     */
    public $nowrite = false;

    /**
     * Factory, returns driver-specific instance of the class
     *
     * @param rcube_config $config
     *
     * @return rcube_session Session object
     */
    public static function factory($config)
    {
        // get session storage driver
        $storage = $config->get('session_storage', 'db');

        // class name for this storage
        $class = "rcube_session_{$storage}";

        // try to instantiate class
        if (class_exists($class)) {
            return new $class($config);
        }

        // no storage found, raise error
        rcube::raise_error([
                'code' => 604, 'type' => 'session',
                'line' => __LINE__, 'file' => __FILE__,
                'message' => "Failed to find session driver. Check session_storage config option"
            ],
            true, true
        );
    }

    /**
     * Object constructor
     *
     * @param rcube_config $config
     */
    public function __construct($config)
    {
        $this->config = $config;

        // set ip check
        $this->set_ip_check($this->config->get('ip_check'));

        // set cookie name
        if ($name = $this->config->get('session_auth_name')) {
            $this->set_cookiename($name);
        }
    }

    /**
     * Register session handler
     */
    public function register_session_handler()
    {
        if (session_id()) {
            // Session already exists, skip
            return;
        }

        ini_set('session.serialize_handler', 'php');

        // set custom functions for PHP session management
        session_set_save_handler(
            [$this, 'open'],
            [$this, 'close'],
            [$this, 'read'],
            [$this, 'sess_write'],
            [$this, 'destroy'],
            [$this, 'gc']
        );
    }

    /**
     * Wrapper for session_start()
     */
    public function start()
    {
        $this->start   = microtime(true);
        $this->ip      = rcube_utils::remote_addr();
        $this->logging = $this->config->get('session_debug', false);

        $lifetime = $this->config->get('session_lifetime', 1) * 60;
        $this->set_lifetime($lifetime);

        session_start();
    }

    /**
     * Abstract methods should be implemented by driver classes
     */
    abstract function open($save_path, $session_name);
    abstract function close();
    abstract function destroy($key);
    abstract function read($key);
    abstract function write($key, $vars);
    abstract function update($key, $newvars, $oldvars);

    /**
     * Session write handler. This calls the implementation methods for write/update after some initial checks.
     *
     * @param string $key  Session identifier
     * @param string $vars Serialized data string
     *
     * @return bool True on success, False on failure
     */
    public function sess_write($key, $vars)
    {
        if ($this->nowrite) {
            return true;
        }

        // check cache
        $oldvars = $this->get_cache($key);

        // if there are cached vars, update store, else insert new data
        if ($oldvars) {
            $newvars = $this->_fixvars($vars, $oldvars);
            return $this->update($key, $newvars, $oldvars);
        }
        else {
            return $this->write($key, $vars);
        }
    }

    /**
     * Wrapper for session_write_close()
     */
    public function write_close()
    {
        session_write_close();

        // write_close() is called on script shutdown, see rcube::shutdown()
        // execute cleanup functionality if enabled by session gc handler
        // we do this after closing the session for better performance
        $this->gc_shutdown();
    }

    /**
     * Creates a new (separate) session
     *
     * @param array $data Session data
     *
     * @return string Session identifier (on success)
     */
    public function create($data)
    {
        $length = strlen(session_id());
        $key    = rcube_utils::random_bytes($length);

        // create new session
        if ($this->write($key, $this->serialize($data))) {
            return $key;
        }
    }

    /**
     * Merge vars with old vars and apply unsets
     */
    protected function _fixvars($vars, $oldvars)
    {
        $newvars = '';

        if ($oldvars !== null) {
            $a_oldvars = $this->unserialize($oldvars);

            if (is_array($a_oldvars)) {
                // remove unset keys on oldvars
                foreach ((array)$this->unsets as $var) {
                    if (isset($a_oldvars[$var])) {
                        unset($a_oldvars[$var]);
                    }
                    else {
                        $path = explode('.', $var);
                        $k = array_pop($path);
                        $node = &$this->get_node($path, $a_oldvars);
                        unset($node[$k]);
                    }
                }

                $newvars = $this->serialize(array_merge(
                    (array)$a_oldvars, (array)$this->unserialize($vars)));
            }
            else {
                $newvars = $vars;
            }
        }

        $this->unsets = [];

        return $newvars;
    }

    /**
     * Execute registered garbage collector routines
     *
     * @param int $maxlifetime Maximum session lifetime
     *
     * @return bool True on success, False on failure
     */
    public function gc($maxlifetime)
    {
        // move gc execution to the script shutdown function
        // see rcube::shutdown() and rcube_session::write_close()
        $this->gc_enabled = $maxlifetime;

        return true;
    }

    /**
     * Register additional garbage collector functions
     *
     * @param mixed $func Callback function
     */
    public function register_gc_handler($func)
    {
        foreach ($this->gc_handlers as $handler) {
            if ($handler == $func) {
                return;
            }
        }

        $this->gc_handlers[] = $func;
    }

    /**
     * Garbage collector handler to run on script shutdown
     */
    protected function gc_shutdown()
    {
        if ($this->gc_enabled) {
            foreach ($this->gc_handlers as $fct) {
                call_user_func($fct);
            }
        }
    }

    /**
     * Generate and set new session id
     *
     * @param bool $destroy If enabled the current session will be destroyed
     *
     * @return bool True on success, False on failure
     */
    public function regenerate_id($destroy = true)
    {
        $old_id = session_id();

        // Since PHP 7.0 session_regenerate_id() will cause the old
        // session data update, we don't need this
        $this->ignore_write = true;
        session_regenerate_id($destroy);
        $this->ignore_write = false;

        $this->vars = null;
        $this->key  = session_id();

        $this->log("Session regenerate: $old_id -> {$this->key}");

        return true;
    }

    /**
     * See if we have vars of this key already cached, and if so, return them.
     *
     * @param string $key Session identifier
     *
     * @return string Serialized data string
     */
    protected function get_cache($key)
    {
        // no session data in cache (read() returns false)
        if (!$this->key) {
            $cache = null;
        }
        // use internal data for fast requests (up to 0.5 sec.)
        else if ($key == $this->key && (!$this->vars || microtime(true) - $this->start < 0.5)) {
            $cache = $this->vars;
        }
        else { // else read data again
            $cache = $this->read($key);
        }

        return $cache;
    }

    /**
     * Append the given value to the certain node in the session data array
     *
     * Warning: Do not use if you already modified $_SESSION in the same request (#1490608)
     *
     * @param string $path  Path denoting the session variable where to append the value
     * @param string $key   Key name under which to append the new value (use null for appending to an indexed list)
     * @param mixed  $value Value to append to the session data array
     */
    public function append($path, $key, $value)
    {
        // re-read session data from DB because it might be outdated
        if (!$this->reloaded && microtime(true) - $this->start > 0.5) {
            $this->reload();
            $this->reloaded = true;
            $this->start = microtime(true);
        }

        $node = &$this->get_node(explode('.', $path), $_SESSION);

        if ($key !== null) {
            $node[$key] = $value;
            $path .= '.' . $key;
        }
        else {
            $node[] = $value;
        }

        $this->appends[] = $path;

        // when overwriting a previously unset variable
        if (array_key_exists($path, $this->unsets)) {
            unset($this->unsets[$path]);
        }
    }

    /**
     * Unset a session variable
     *
     * @param string $var Variable name (can be a path denoting a certain node
     *                    in the session array, e.g. compose.attachments.5)
     *
     * @return bool True on success, False on failure
     */
    public function remove($var = null)
    {
        if (empty($var)) {
            return $this->destroy(session_id());
        }

        $this->unsets[] = $var;

        if (isset($_SESSION[$var])) {
            unset($_SESSION[$var]);
        }
        else {
            $path = explode('.', $var);
            $key = array_pop($path);
            $node = &$this->get_node($path, $_SESSION);
            unset($node[$key]);
        }

        return true;
    }

    /**
     * Kill this session
     */
    public function kill()
    {
        $this->log("Session destroy: " . session_id());

        $this->vars = null;
        $this->ip   = rcube_utils::remote_addr(); // update IP (might have changed)
        $this->destroy(session_id());

        rcube_utils::setcookie($this->cookiename, '-del-', time() - 60);
    }

    /**
     * Re-read session data from storage backend
     */
    public function reload()
    {
        // collect updated data from previous appends
        $merge_data = [];
        foreach ((array) $this->appends as $var) {
            $path = explode('.', $var);
            $value = $this->get_node($path, $_SESSION);
            $k = array_pop($path);
            $node = &$this->get_node($path, $merge_data);
            $node[$k] = $value;
        }

        if ($this->key) {
            $data = $this->read($this->key);
        }

        if (!empty($data)) {
            session_decode($data);

            // apply appends and unsets to reloaded data
            $_SESSION = array_merge_recursive($_SESSION, $merge_data);

            foreach ((array) $this->unsets as $var) {
                if (isset($_SESSION[$var])) {
                    unset($_SESSION[$var]);
                }
                else {
                    $path = explode('.', $var);
                    $k = array_pop($path);
                    $node = &$this->get_node($path, $_SESSION);
                    unset($node[$k]);
                }
            }
        }
    }

    /**
     * Returns a reference to the node in data array referenced by the given path.
     * e.g. ['compose','attachments'] will return $_SESSION['compose']['attachments']
     */
    protected function &get_node($path, &$data_arr)
    {
        $node = &$data_arr;

        if (!empty($path)) {
            foreach ((array) $path as $key) {
                if (!isset($node[$key])) {
                    $node[$key] = [];
                }
                $node = &$node[$key];
            }
        }

        return $node;
    }

    /**
     * Serialize session data
     */
    protected function serialize($vars)
    {
        $data = '';

        if (is_array($vars)) {
            foreach ($vars as $var => $value)
                $data .= $var.'|'.serialize($value);
        }
        else {
            $data = 'b:0;';
        }

        return $data;
    }

    /**
     * Unserialize session data
     * http://www.php.net/manual/en/function.session-decode.php#56106
     *
     * @param string $str Serialized data string
     *
     * @return array Unserialized data
     */
    public static function unserialize($str)
    {
        $str    = (string) $str;
        $endptr = strlen($str);
        $p      = 0;

        $serialized = '';
        $items      = 0;
        $level      = 0;

        while ($p < $endptr) {
            $q = $p;
            while ($str[$q] != '|')
                if (++$q >= $endptr)
                    break 2;

            if ($str[$p] == '!') {
                $p++;
                $has_value = false;
            }
            else {
                $has_value = true;
            }

            $name = substr($str, $p, $q - $p);
            $q++;

            $serialized .= 's:' . strlen($name) . ':"' . $name . '";';

            if ($has_value) {
                for (;;) {
                    $p = $q;
                    switch (strtolower($str[$q])) {
                    case 'n': // null
                    case 'b': // boolean
                    case 'i': // integer
                    case 'd': // decimal
                        do $q++;
                        while (($q < $endptr) && ($str[$q] != ';'));
                        $q++;
                        $serialized .= substr($str, $p, $q - $p);
                        if ($level == 0) {
                            break 2;
                        }
                        break;
                    case 'r': // reference
                        $q+= 2;
                        for ($id = ''; ($q < $endptr) && ($str[$q] != ';'); $q++) {
                            $id .= $str[$q];
                        }
                        $q++;
                        // increment pointer because of outer array
                        $serialized .= 'R:' . ($id + 1) . ';';
                        if ($level == 0) {
                            break 2;
                        }
                        break;
                    case 's': // string
                        $q+=2;
                        for ($length=''; ($q < $endptr) && ($str[$q] != ':'); $q++) {
                            $length .= $str[$q];
                        }
                        $q+=2;
                        $q+= (int)$length + 2;
                        $serialized .= substr($str, $p, $q - $p);
                        if ($level == 0) {
                            break 2;
                        }
                        break;
                    case 'a': // array
                    case 'o': // object
                        do $q++;
                        while ($q < $endptr && $str[$q] != '{');
                        $q++;
                        $level++;
                        $serialized .= substr($str, $p, $q - $p);
                        break;
                    case '}': // end of array|object
                        $q++;
                        $serialized .= substr($str, $p, $q - $p);
                        if (--$level == 0) {
                            break 2;
                        }
                        break;
                    default:
                        return false;
                    }
                }
            }
            else {
                $serialized .= 'N;';
                $q += 2;
            }
            $items++;
            $p = $q;
        }

        return unserialize('a:' . $items . ':{' . $serialized . '}');
    }

    /**
     * Setter for session lifetime
     *
     * @param int $lifetime Session lifetime (in seconds)
     */
    public function set_lifetime($lifetime)
    {
        $this->lifetime = max(120, $lifetime);

        // valid time range is now - 1/2 lifetime to now + 1/2 lifetime
        $now = time();
        $this->now = $now - ($now % ($this->lifetime / 2));
    }

    /**
     * Getter for remote IP saved with this session
     *
     * @return string Client IP address
     */
    public function get_ip()
    {
        return $this->ip;
    }

    /**
     * Setter for cookie encryption secret
     *
     * @param string $secret Authentication secret string
     */
    public function set_secret($secret = null)
    {
        // generate random hash and store in session
        if (!$secret) {
            if (!empty($_SESSION['auth_secret'])) {
                $secret = $_SESSION['auth_secret'];
            }
            else {
                $secret = rcube_utils::random_bytes(strlen($this->key));
            }
        }

        $_SESSION['auth_secret'] = $secret;
    }

    /**
     * Enable/disable IP check
     *
     * @param bool $check IP address checking state
     */
    public function set_ip_check($check)
    {
        $this->ip_check = $check;
    }

    /**
     * Setter for the cookie name used for session cookie
     *
     * @param string $name Authentication cookie name
     */
    public function set_cookiename($name)
    {
        if ($name) {
            $this->cookiename = $name;
        }
    }

    /**
     * Check session authentication cookie
     *
     * @return bool True if valid, False if not
     */
    public function check_auth()
    {
        $this->cookie = isset($_COOKIE[$this->cookiename]) ? $_COOKIE[$this->cookiename] : null;

        $result = $this->ip_check ? rcube_utils::remote_addr() == $this->ip : true;
        $prev   = null;

        if (!$result) {
            $this->log("IP check failed for " . $this->key . "; expected " . $this->ip . "; got " . rcube_utils::remote_addr());
        }

        if ($result && $this->_mkcookie($this->now) != $this->cookie) {
            $this->log("Session auth check failed for " . $this->key . "; timeslot = " . date('Y-m-d H:i:s', $this->now));
            $result = false;

            // Check if using id from a previous time slot
            for ($i = 1; $i <= 2; $i++) {
                $prev = $this->now - ($this->lifetime / 2) * $i;
                if ($this->_mkcookie($prev) == $this->cookie) {
                    $this->log("Send new auth cookie for " . $this->key . ": " . $this->cookie);
                    $this->set_auth_cookie();
                    $result = true;
                }
            }
        }

        if (!$result) {
            $this->log("Session authentication failed for " . $this->key
                . "; invalid auth cookie sent; timeslot = " . date('Y-m-d H:i:s', $prev));
        }

        return $result;
    }

    /**
     * Set session authentication cookie
     */
    public function set_auth_cookie()
    {
        $this->cookie = $this->_mkcookie($this->now);
        rcube_utils::setcookie($this->cookiename, $this->cookie, 0);
        $_COOKIE[$this->cookiename] = $this->cookie;
    }

    /**
     * Create session cookie for specified time slot.
     *
     * @param int $timeslot Time slot to use
     *
     * @return string Cookie value
     */
    protected function _mkcookie($timeslot)
    {
        // make sure the secret key exists
        $this->set_secret();

        // no need to hash this, it's just a random string
        return $_SESSION['auth_secret'] . '-' . $timeslot;
    }

    /**
     * Writes debug information to the log
     *
     * @param string $line Log line
     */
    function log($line)
    {
        if ($this->logging) {
            rcube::write_log('session', $line);
        }
    }
}
lib/Roundcube/rcube_smtp.php000064400000050647151727150650012141 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide SMTP functionality using socket connections                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 |         Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to provide SMTP functionality using PEAR Net_SMTP
 *
 * @package    Framework
 * @subpackage Mail
 */
class rcube_smtp
{
    private $conn;
    private $response;
    private $error;
    private $anonymize_log = 0;

    // define headers delimiter
    const SMTP_MIME_CRLF = "\r\n";

    const DEBUG_LINE_LENGTH = 4098; // 4KB + 2B for \r\n


    /**
     * SMTP Connection and authentication
     *
     * @param string $host Server host
     * @param string $port Server port
     * @param string $user User name
     * @param string $pass Password
     *
     * @return bool True on success, or False on error
     */
    public function connect($host = null, $port = null, $user = null, $pass = null)
    {
        $rcube = rcube::get_instance();

        // disconnect/destroy $this->conn
        $this->disconnect();

        // reset error/response var
        $this->error = $this->response = null;

        if (!$host) {
            $host = $rcube->config->get('smtp_host', 'localhost:587');
            if (is_array($host)) {
                if (array_key_exists($_SESSION['storage_host'], $host)) {
                    $host = $host[$_SESSION['storage_host']];
                }
                else {
                    $this->response[] = "Connection failed: No SMTP server found for IMAP host " . $_SESSION['storage_host'];
                    $this->error = ['label' => 'smtpconnerror', 'vars' => ['code' => '500']];
                    return false;
                }
            }
        }
        else if (!empty($port) && !empty($host) && !preg_match('/:\d+$/', $host)) {
            $host = "{$host}:{$port}";
        }

        $host = rcube_utils::parse_host($host);

        // let plugins alter smtp connection config
        $CONFIG = $rcube->plugins->exec_hook('smtp_connect', [
            'smtp_host'      => $host,
            'smtp_user'      => $user !== null ? $user : $rcube->config->get('smtp_user', '%u'),
            'smtp_pass'      => $pass !== null ? $pass : $rcube->config->get('smtp_pass', '%p'),
            'smtp_auth_cid'  => $rcube->config->get('smtp_auth_cid'),
            'smtp_auth_pw'   => $rcube->config->get('smtp_auth_pw'),
            'smtp_auth_type' => $rcube->config->get('smtp_auth_type'),
            'smtp_helo_host' => $rcube->config->get('smtp_helo_host'),
            'smtp_timeout'   => $rcube->config->get('smtp_timeout'),
            'smtp_conn_options'   => $rcube->config->get('smtp_conn_options'),
            'smtp_auth_callbacks' => [],
            'gssapi_context'      => null,
            'gssapi_cn'           => null,
        ]);

        $smtp_host = $CONFIG['smtp_host'] ?: 'localhost';

        list($smtp_host, $scheme, $smtp_port) = rcube_utils::parse_host_uri($smtp_host, 587, 465);

        $use_tls = $scheme === 'tls';

        // re-add the ssl:// prefix
        if ($scheme === 'ssl') {
            $smtp_host = "ssl://{$smtp_host}";
        }

        // Handle per-host socket options
        rcube_utils::parse_socket_options($CONFIG['smtp_conn_options'], $smtp_host);

        // Use valid EHLO/HELO host (#6408)
        $helo_host = $CONFIG['smtp_helo_host'] ?: rcube_utils::server_name();
        $helo_host = rcube_utils::idn_to_ascii($helo_host);
        if (!preg_match('/^[a-zA-Z0-9.:-]+$/', $helo_host)) {
            $helo_host = 'localhost';
        }

        // IDNA Support
        $smtp_host = rcube_utils::idn_to_ascii($smtp_host);

        $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host, false, 0, $CONFIG['smtp_conn_options'],
            $CONFIG['gssapi_context'], $CONFIG['gssapi_cn']);

        if ($rcube->config->get('smtp_debug')) {
            $this->conn->setDebug(true, [$this, 'debug_handler']);
            $this->anonymize_log = 0;

            $_host = ($use_tls ? 'tls://' : '') . $smtp_host . ':' . $smtp_port;
            $this->debug_handler($this->conn, "Connecting to $_host...");
        }

        // register authentication methods
        if (!empty($CONFIG['smtp_auth_callbacks']) && method_exists($this->conn, 'setAuthMethod')) {
            foreach ($CONFIG['smtp_auth_callbacks'] as $callback) {
                $this->conn->setAuthMethod($callback['name'], $callback['function'],
                    $callback['prepend'] ?? true);
            }
        }

        // try to connect to server and exit on failure
        $result = $this->conn->connect($CONFIG['smtp_timeout']);

        if (is_a($result, 'PEAR_Error')) {
            $this->_conn_error('smtpconnerror', "Connection failed", [], $result);
            $this->conn = null;
            return false;
        }

        // workaround for timeout bug in Net_SMTP 1.5.[0-1] (#1487843)
        if (method_exists($this->conn, 'setTimeout')
            && ($timeout = ini_get('default_socket_timeout'))
        ) {
            $this->conn->setTimeout($timeout);
        }

        // XCLIENT extension
        $result = $this->_process_xclient($use_tls, $helo_host);

        if (is_a($result, 'PEAR_Error')) {
            $this->_conn_error('smtpconnerror', "XCLIENT failed", [], $result);
            $this->disconnect();
            return false;
        }

        if ($use_tls) {
            $result = $this->conn->starttls();

            if (is_a($result, 'PEAR_Error')) {
                $this->_conn_error('smtpconnerror', "STARTTLS failed", [], $result);
                $this->disconnect();
                return false;
            }
        }

        if ($CONFIG['smtp_pass'] == '%p') {
            $smtp_pass = (string) $rcube->get_user_password();
        } else {
            $smtp_pass = $CONFIG['smtp_pass'];
        }

        $smtp_user      = str_replace('%u', (string) $rcube->get_user_name(), $CONFIG['smtp_user']);
        $smtp_auth_type = $CONFIG['smtp_auth_type'] ?: null;
        $smtp_authz     = null;

        if (!empty($CONFIG['smtp_auth_cid'])) {
            $smtp_authz = $smtp_user;
            $smtp_user  = $CONFIG['smtp_auth_cid'];
            $smtp_pass  = $CONFIG['smtp_auth_pw'];
        }

        // attempt to authenticate to the SMTP server
        if (($smtp_user && $smtp_pass) || ($smtp_auth_type == 'GSSAPI')) {
            // IDNA Support
            if (strpos($smtp_user, '@')) {
                $smtp_user = rcube_utils::idn_to_ascii($smtp_user);
            }

            $result = $this->conn->auth($smtp_user, $smtp_pass, $smtp_auth_type, false, $smtp_authz);

            if (is_a($result, 'PEAR_Error')) {
                $this->_conn_error('smtpautherror', "Authentication failure", [], $result);
                $this->disconnect();
                return false;
            }
        }

        return true;
    }

    /**
     * Function for sending mail
     *
     * @param string $from       Sender e-Mail address
     *
     * @param mixed  $recipients Either a comma-separated list of recipients
     *                           (RFC822 compliant), or an array of recipients,
     *                           each RFC822 valid. This may contain recipients not
     *                           specified in the headers, for Bcc:, resending
     *                           messages, etc.
     * @param mixed  $headers    The message headers to send with the mail
     *                           Either as an associative array or a finally
     *                           formatted string
     * @param mixed  $body       The full text of the message body, including any Mime parts
     *                           or file handle
     * @param array  $opts       Delivery options (e.g. DSN request)
     *
     * @return bool True on success, or False on error
     */
    public function send_mail($from, $recipients, $headers, $body, $opts = [])
    {
        if (!is_object($this->conn)) {
            return false;
        }

        // prepare message headers as string
        $text_headers = null;
        if (is_array($headers)) {
            if (!($headerElements = $this->_prepare_headers($headers))) {
                $this->reset();
                return false;
            }

            list($from, $text_headers) = $headerElements;
        }
        else if (is_string($headers)) {
            $text_headers = $headers;
        }

        // exit if no from address is given
        if (!isset($from)) {
            $this->reset();
            $this->response[] = "No From address has been provided";
            return false;
        }

        // prepare list of recipients
        $recipients = $this->_parse_rfc822($recipients);
        if (is_a($recipients, 'PEAR_Error')) {
            $this->error = ['label' => 'smtprecipientserror'];
            $this->reset();
            return false;
        }

        $exts             = $this->conn->getServiceExtensions();
        $from_params      = null;
        $recipient_params = null;

        // RFC3461: Delivery Status Notification
        if (!empty($opts['dsn'])) {
            if (isset($exts['DSN'])) {
                $from_params      = 'RET=HDRS';
                $recipient_params = 'NOTIFY=SUCCESS,FAILURE';
            }
        }

        // RFC6531: request SMTPUTF8 if needed
        if (preg_match('/[^\x00-\x7F]/', $from . implode('', $recipients))) {
            if (isset($exts['SMTPUTF8'])) {
                $from_params = ltrim($from_params . ' SMTPUTF8');
            }
            else {
                $this->_conn_error('smtputf8error', "SMTP server does not support unicode in email addresses");
                $this->reset();
                return false;
            }
        }

        // RFC2298.3: remove envelope sender address
        if (empty($opts['mdn_use_from'])
            && preg_match('/Content-Type: multipart\/report/', $text_headers)
            && preg_match('/report-type=disposition-notification/', $text_headers)
        ) {
            $from = '';
        }

        // set From: address
        $result = $this->conn->mailFrom($from, $from_params);
        if (is_a($result, 'PEAR_Error')) {
            $this->_conn_error('smtpfromerror', "Failed to set sender '$from'", ['from' => $from]);
            $this->reset();
            return false;
        }

        // set mail recipients
        foreach ($recipients as $recipient) {
            $result = $this->conn->rcptTo($recipient, $recipient_params);
            if (is_a($result, 'PEAR_Error')) {
                $this->_conn_error('smtptoerror', "Failed to add recipient '$recipient'", ['to' => $recipient]);
                $this->reset();
                return false;
            }
        }

        if (is_resource($body)) {
            if ($text_headers) {
                $text_headers = preg_replace('/[\r\n]+$/', '', $text_headers);
            }
        }
        else {
            if ($text_headers) {
                $body = $text_headers . "\r\n" . $body;
            }

            $text_headers = null;
        }

        // Send the message's headers and the body as SMTP data.
        $result = $this->conn->data($body, $text_headers);
        if (is_a($result, 'PEAR_Error')) {
            $err       = $this->conn->getResponse();
            $err_label = 'smtperror';
            $err_vars  = [];

            if (!in_array($err[0], [354, 250, 221])) {
                $msg = sprintf('[%d] %s', $err[0], $err[1]);
            }
            else {
                $msg = $result->getMessage();

                if (strpos($msg, 'size exceeds')) {
                    $err_label = 'smtpsizeerror';
                    $exts      = $this->conn->getServiceExtensions();

                    if (!empty($exts['SIZE'])) {
                        $limit = $exts['SIZE'];
                        $msg .= " (Limit: $limit)";
                        if (class_exists('rcmail_action')) {
                            $limit = rcmail_action::show_bytes($limit);
                        }

                        $err_vars['limit'] = $limit;
                        $err_label         = 'smtpsizeerror';
                    }
                }
            }

            $err_vars['msg'] = $msg;

            $this->error = ['label' => $err_label, 'vars' => $err_vars];
            $this->response[] = "Failed to send data. " . $msg;
            $this->reset();
            return false;
        }

        $this->response[] = implode(': ', $this->conn->getResponse());
        return true;
    }

    /**
     * Reset the global SMTP connection
     */
    public function reset()
    {
        if (is_object($this->conn)) {
            $this->conn->rset();
        }
    }

    /**
     * Disconnect the global SMTP connection
     */
    public function disconnect()
    {
        if (is_object($this->conn)) {
            $this->conn->disconnect();
            $this->conn = null;
        }
    }

    /**
     * This is our own debug handler for the SMTP connection
     */
    public function debug_handler($smtp, $message)
    {
        // catch AUTH commands and set anonymization flag for subsequent sends
        if (preg_match('/^Send: AUTH ([A-Z]+)/', $message, $m)) {
            $this->anonymize_log = $m[1] == 'LOGIN' ? 2 : 1;
        }
        // anonymize this log entry
        else if ($this->anonymize_log > 0 && strpos($message, 'Send:') === 0 && --$this->anonymize_log == 0) {
            $message = sprintf('Send: ****** [%d]', strlen($message) - 8);
        }

        if (($len = strlen($message)) > self::DEBUG_LINE_LENGTH) {
            $diff    = $len - self::DEBUG_LINE_LENGTH;
            $message = substr($message, 0, self::DEBUG_LINE_LENGTH)
                . "... [truncated $diff bytes]";
        }

        rcube::write_log('smtp', preg_replace('/\r\n$/', '', $message));
    }

    /**
     * Get error message
     */
    public function get_error()
    {
        return $this->error;
    }

    /**
     * Get server response messages array
     */
    public function get_response()
    {
         return $this->response;
    }

    /**
     * Take an array of mail headers and return a string containing
     * text usable in sending a message.
     *
     * @param array $headers The array of headers to prepare, in an associative
     *              array, where the array key is the header name (ie,
     *              'Subject'), and the array value is the header
     *              value (ie, 'test'). The header produced from those
     *              values would be 'Subject: test'.
     *
     * @return mixed Returns false if it encounters a bad address,
     *               otherwise returns an array containing two
     *               elements: Any From: address found in the headers,
     *               and the plain text version of the headers.
     */
    private function _prepare_headers($headers)
    {
        $lines = [];
        $from  = null;

        foreach ($headers as $key => $value) {
            if (strcasecmp($key, 'From') === 0) {
                $addresses = $this->_parse_rfc822($value);

                if (is_array($addresses)) {
                    $from = $addresses[0];
                }

                // Reject envelope From: addresses with spaces.
                if (strpos($from, ' ') !== false) {
                    return false;
                }

                $lines[] = $key . ': ' . $value;
            }
            else if (strcasecmp($key, 'Received') === 0) {
                $received = [];
                if (is_array($value)) {
                    foreach ($value as $line) {
                        $received[] = $key . ': ' . $line;
                    }
                }
                else {
                    $received[] = $key . ': ' . $value;
                }

                // Put Received: headers at the top.  Spam detectors often
                // flag messages with Received: headers after the Subject:
                // as spam.
                $lines = array_merge($received, $lines);
            }
            else {
                // If $value is an array (i.e., a list of addresses), convert
                // it to a comma-delimited string of its elements (addresses).
                if (is_array($value)) {
                    $value = implode(', ', $value);
                }

                $lines[] = $key . ': ' . $value;
            }
        }

        return [$from, implode(self::SMTP_MIME_CRLF, $lines) . self::SMTP_MIME_CRLF];
    }

    /**
     * Take a set of recipients and parse them, returning an array of
     * bare addresses (forward paths) that can be passed to sendmail
     * or an smtp server with the rcpt to: command.
     *
     * @param mixed $recipients Either a comma-separated list of recipients
     *                          (RFC822 compliant), or an array of recipients,
     *                          each RFC822 valid.
     *
     * @return array An array of forward paths (bare addresses).
     */
    private function _parse_rfc822($recipients)
    {
        // if we're passed an array, assume addresses are valid and implode them before parsing.
        if (is_array($recipients)) {
            $recipients = implode(', ', $recipients);
        }

        $addresses  = [];
        $recipients = preg_replace('/[\s\t]*\r?\n/', '', $recipients);
        $recipients = rcube_utils::explode_quoted_string(',', $recipients);

        reset($recipients);
        foreach ($recipients as $recipient) {
            $a = rcube_utils::explode_quoted_string(' ', $recipient);
            foreach ($a as $word) {
                $word = trim($word);
                $len  = strlen($word);

                if ($len && strpos($word, "@") > 0 && $word[$len-1] != '"') {
                    $word = preg_replace('/^<|>$/', '', $word);
                    if (!in_array($word, $addresses)) {
                        array_push($addresses, $word);
                    }
                }
            }
        }

        return $addresses;
    }

    /**
     * Send XCLIENT command if configured and supported
     */
    private function _process_xclient($use_tls, $helo_host)
    {
        $rcube = rcube::get_instance();

        if (!is_object($this->conn)) {
            return false;
        }

        $exts = $this->conn->getServiceExtensions();

        if (!isset($exts['XCLIENT'])) {
            return true;
        }

        $opts = explode(' ', $exts['XCLIENT']);
        $cmd = '';

        if ($rcube->config->get('smtp_xclient_login') && in_array_nocase('login', $opts)) {
            $cmd .= " LOGIN=" . $rcube->get_user_name();
        }

        if ($rcube->config->get('smtp_xclient_addr') && in_array_nocase('addr', $opts)) {
            $ip = rcube_utils::remote_addr();

            if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
                $r = $ip;
            }
            elseif (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
                $r = "IPV6:{$ip}";
            }
            else {
                $r = "[UNAVAILABLE]";
            }

            $cmd .= " ADDR={$r}";
        }

        if ($cmd) {
            $result = $this->conn->command("XCLIENT" . $cmd, [220]);

            if ($result !== true) {
                return $result;
            }

            if (!$use_tls) {
                return $this->conn->helo($helo_host);
            }
        }

        return true;
    }

    /**
     * Handle connection error
     */
    private function _conn_error($label, $message, $vars = [], $result = null)
    {
        $err = $this->conn->getResponse();

        $vars['code'] = $result ? $result->getCode() : $err[0];
        $vars['msg']  = $result ? $result->getMessage() : $err[1];

        $this->error = ['label' => $label, 'vars' => $vars];
        $this->response[] = "{$message}: {$err[1]} (Code: {$err[0]})";
    }
}
lib/Roundcube/rcube_result_multifolder.php000064400000023616151727150650015076 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   SORT/SEARCH/ESEARCH response handler                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Class holding a set of rcube_result_index instances that together form a
 * result set of a multi-folder search
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_result_multifolder
{
    public $multi      = true;
    public $sets       = [];
    public $incomplete = false;
    public $folder;

    protected $meta    = [];
    protected $index   = [];
    protected $folders = [];
    protected $sdata   = [];
    protected $order   = 'ASC';
    protected $sorting;


    /**
     * Object constructor.
     *
     * @param array $folders List of IMAP folders
     */
    public function __construct($folders = [])
    {
        $this->folders = $folders;
        $this->meta    = ['count' => 0];
    }

    /**
     * Initializes object with SORT command response
     *
     * @param rcube_result_index|rcube_result_thread $result Search result
     */
    public function add($result)
    {
        $this->sets[] = $result;

        if ($result->count()) {
            $this->append_result($result);
        }
        else if ($result->incomplete) {
            $this->incomplete = true;
        }
    }

    /**
     * Append message UIDs from the given result to our index
     *
     * @param rcube_result_index|rcube_result_thread $result Search result
     */
    protected function append_result($result)
    {
        $this->meta['count'] += $result->count();

        // append UIDs to global index
        $folder = $result->get_parameters('MAILBOX');
        $index  = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get());

        $this->index = array_merge($this->index, $index);
    }

    /**
     * Store a global index of (sorted) message UIDs
     *
     * @param rcube_message_header[] $headers    Messages in the index
     * @param string                 $sort_field Header field to sort by
     * @param string                 $sort_order Sort order
     */
    public function set_message_index($headers, $sort_field, $sort_order)
    {
        $this->sorting = $sort_field;
        $this->order   = $sort_order;
        $this->index   = [];

        foreach ($headers as $header) {
            $this->index[] = $header->uid . '-' . $header->folder;
        }
    }

    /**
     * Checks the result from IMAP command
     *
     * @return bool True if the result is an error, False otherwise
     */
    public function is_error()
    {
        return false;
    }

    /**
     * Checks if the result is empty
     *
     * @return bool True if the result is empty, False otherwise
     */
    public function is_empty()
    {
        return empty($this->sets) || $this->meta['count'] == 0;
    }

    /**
     * Returns number of elements in the result
     *
     * @return int Number of elements
     */
    public function count()
    {
        return $this->meta['count'];
    }

    /**
     * Returns number of elements in the result.
     * Alias for count() for compatibility with rcube_result_thread
     *
     * @return int Number of elements
     */
    public function count_messages()
    {
        return $this->count();
    }

    /**
     * Reverts order of elements in the result
     */
    public function revert()
    {
        $this->order = $this->order == 'ASC' ? 'DESC' : 'ASC';
        $this->index = array_reverse($this->index);

        // revert order in all sub-sets
        foreach ($this->sets as $set) {
            if ($this->order != $set->get_parameters('ORDER')) {
                $set->revert();
            }
        }
    }

    /**
     * Check if the given message ID exists in the object
     *
     * @param int  $msgid     Message ID
     * @param bool $get_index When enabled element's index will be returned.
     *                        Elements are indexed starting with 0
     *
     * @return mixed False if message ID doesn't exist, True if exists or
     *               index of the element if $get_index=true
     */
    public function exists($msgid, $get_index = false)
    {
        if (!empty($this->folder)) {
            $msgid .= '-' . $this->folder;
        }

        $idx = array_search($msgid, $this->index);

        if ($get_index) {
            return $idx;
        }

        return $idx !== false;
    }

    /**
     * Filters data set. Removes elements listed in $ids list.
     *
     * @param array  $ids    List of IDs to remove.
     * @param string $folder IMAP folder
     */
    public function filter($ids = [], $folder = null)
    {
        $this->meta['count'] = 0;
        foreach ($this->sets as $set) {
            if ($set->get_parameters('MAILBOX') == $folder) {
                $set->filter($ids);
            }

            $this->meta['count'] += $set->count();
        }
    }

    /**
     * Slices data set.
     *
     * @param int $offset Offset (as for PHP's array_slice())
     * @param int $length Number of elements (as for PHP's array_slice())
     */
    public function slice($offset, $length)
    {
        $data = array_slice($this->get(), $offset, $length);

        $this->index = $data;
        $this->meta['count'] = count($data);
    }

    /**
     * Filters data set. Removes elements not listed in $ids list.
     *
     * @param array $ids List of IDs to keep.
     */
    public function intersect($ids = [])
    {
        // not implemented
    }

    /**
     * Return all messages in the result.
     *
     * @return array List of message IDs
     */
    public function get()
    {
        return $this->index;
    }

    /**
     * Return all messages in the result in compressed form
     *
     * @return string List of message IDs in compressed form
     */
    public function get_compressed()
    {
        return '';
    }

    /**
     * Return result element at specified index
     *
     * @param int|string $idx Element's index or "FIRST" or "LAST"
     *
     * @return int Element value
     */
    public function get_element($idx)
    {
        switch ($idx) {
            case 'FIRST': return $this->index[0];
            case 'LAST':  return end($this->index);
            default:      return $this->index[$idx] ?? null;
        }
    }

    /**
     * Returns response parameters, e.g. ESEARCH's MIN/MAX/COUNT/ALL/MODSEQ
     * or internal data e.g. MAILBOX, ORDER
     *
     * @param string $param Parameter name
     *
     * @return array|string Response parameters or parameter value
     */
    public function get_parameters($param=null)
    {
        $params = [
            'SORT'    => $this->sorting,
            'ORDER'   => $this->order,
            'MAILBOX' => $this->folders,
        ];

        if ($param !== null) {
            return $params[$param];
        }

        return $params;
    }

    /**
     * Returns the stored result object for a particular folder
     *
     * @param string $folder Folder name
     *
     * @return false|rcube_result_index|rcube_result_thread A result set or false if none found
     */
    public function get_set($folder)
    {
        foreach ($this->sets as $set) {
            if ($set->get_parameters('MAILBOX') == $folder) {
                return $set;
            }
        }

        return false;
    }

    /**
     * Returns length of internal data representation
     *
     * @return int Data length
     */
    protected function length()
    {
        return $this->count();
    }

    /**
     * Serialization __sleep handler
     *
     * @return array Names of all object properties that should be serialized
     */
    public function __sleep()
    {
        $this->sdata = ['incomplete' => [], 'error' => []];

        foreach ($this->sets as $set) {
            if ($set->incomplete) {
                $this->sdata['incomplete'][] = $set->get_parameters('MAILBOX');
            }
            else if ($set->is_error()) {
                $this->sdata['error'][] = $set->get_parameters('MAILBOX');
            }
        }

        return ['sdata', 'index', 'folders', 'sorting', 'order'];
    }

    /**
     * Serialization __wakeup handler
     */
    public function __wakeup()
    {
        $this->meta       = ['count' => count($this->index)];
        $this->incomplete = count($this->sdata['incomplete']) > 0;

        // restore result sets from saved index
        $data = [];
        foreach ($this->index as $item) {
            list($uid, $folder) = explode('-', $item, 2);
            $data[$folder] = ($data[$folder] ?? '') . ' ' . $uid;
        }

        foreach ($this->folders as $folder) {
            if (in_array($folder, $this->sdata['error'])) {
                $data_str = null;
            }
            else {
                $data_str = '* SORT' . ($data[$folder] ?? '');
            }

            $set = new rcube_result_index($folder, $data_str, strtoupper($this->order));

            if (in_array($folder, $this->sdata['incomplete'])) {
                $set->incomplete = true;
            }

            $this->sets[] = $set;
        }
    }
}
lib/Roundcube/rcube_message_header.php000064400000021203151727150650014074 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   E-mail message headers representation                               |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Struct representing an e-mail message header
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_message_header
{
    /**
     * Message sequence number
     *
     * @var int
     */
    public $id;

    /**
     * Message unique identifier
     *
     * @var int
     */
    public $uid;

    /**
     * Message subject
     *
     * @var string
     */
    public $subject;

    /**
     * Message sender (From)
     *
     * @var string
     */
    public $from;

    /**
     * Message recipient (To)
     *
     * @var string
     */
    public $to;

    /**
     * Message additional recipients (Cc)
     *
     * @var string
     */
    public $cc;

    /**
     * Message hidden recipients (Bcc)
     *
     * @var string
     */
    public $bcc;

    /**
     * Message Reply-To header
     *
     * @var string
     */
    public $replyto;

    /**
     * Message In-Reply-To header
     *
     * @var string
     */
    public $in_reply_to;

    /**
     * Message date (Date)
     *
     * @var string
     */
    public $date;

    /**
     * Message identifier (Message-ID)
     *
     * @var string
     */
    public $messageID;

    /**
     * Message size
     *
     * @var int
     */
    public $size;

    /**
     * Message encoding
     *
     * @var string
     */
    public $encoding;

    /**
     * Message charset
     *
     * @var string
     */
    public $charset;

    /**
     * Message Content-type
     *
     * @var string
     */
    public $ctype;

    /**
     * Message timestamp (based on message date)
     *
     * @var int
     */
    public $timestamp;

    /**
     * IMAP bodystructure string
     *
     * @var string
     */
    public $bodystructure;

    /**
     * IMAP body (RFC822.TEXT)
     *
     * @var string
     */
    public $body;

    /**
     * IMAP part bodies
     *
     * @var array
     */
    public $bodypart = [];

    /**
     * IMAP internal date
     *
     * @var string
     */
    public $internaldate;

    /**
     * Message References header
     *
     * @var string
     */
    public $references;

    /**
     * Message priority (X-Priority)
     *
     * @var int
     */
    public $priority;

    /**
     * Message receipt recipient
     *
     * @var string
     */
    public $mdn_to;

    /**
     * IMAP folder this message is stored in
     *
     * @var string
     */
    public $folder;

    /**
     * Other message headers
     *
     * @var array
     */
    public $others = [];

    /**
     * Message flags
     *
     * @var array
     */
    public $flags = [];

    /**
     * Extra flags (for the messages list)
     *
     * @var array
     * @deprecated Use $flags
     */
    public $list_flags = [];

    /**
     * Extra columns content (for the messages list)
     *
     * @var array
     */
    public $list_cols = [];

    /**
     * Message structure
     *
     * @var rcube_message_part
     */
    public $structure;

    /**
     * Message thread depth
     *
     * @var int
     */
    public $depth;

    /**
     * Whether the message has references in the thread
     *
     * @var bool
     */
    public $has_children;

    /**
     * Number of flagged children (in a thread)
     *
     * @var int
     */
    public $flagged_children;

    /**
     * Number of unread children (in a thread)
     *
     * @var int
     */
    public $unread_children;

    /**
     * UID of the message parent (in a thread)
     *
     * @var int
     */
    public $parent_uid;

    /**
     * IMAP MODSEQ value
     *
     * @var int
     */
    public $modseq;

    /**
     * IMAP ENVELOPE
     *
     * @var string
     */
    public $envelope;

    /**
     * Header name to rcube_message_header object property map
     *
     * @var array
     */
    private $obj_headers = [
        'date'      => 'date',
        'from'      => 'from',
        'to'        => 'to',
        'subject'   => 'subject',
        'reply-to'  => 'replyto',
        'cc'        => 'cc',
        'bcc'       => 'bcc',
        'mbox'      => 'folder',
        'folder'    => 'folder',
        'content-transfer-encoding' => 'encoding',
        'in-reply-to'               => 'in_reply_to',
        'content-type'              => 'ctype',
        'charset'                   => 'charset',
        'references'                => 'references',
        'disposition-notification-to' => 'mdn_to',
        'x-confirm-reading-to'      => 'mdn_to',
        'message-id'                => 'messageID',
        'x-priority'                => 'priority',
    ];

    /**
     * Returns header value
     *
     * @param string $name   Header name
     * @param bool   $decode Decode the header content
     *
     * @return string|null Header content
     */
    public function get($name, $decode = true)
    {
        $name  = strtolower($name);
        $value = null;

        if (isset($this->obj_headers[$name]) && isset($this->{$this->obj_headers[$name]})) {
            $value = $this->{$this->obj_headers[$name]};
        }
        else if (isset($this->others[$name])) {
            $value = $this->others[$name];
        }

        if ($decode && $value !== null) {
            if (is_array($value)) {
                foreach ($value as $key => $val) {
                    $val         = rcube_mime::decode_header($val, $this->charset);
                    $value[$key] = rcube_charset::clean($val);
                }
            }
            else {
                $value = rcube_mime::decode_header($value, $this->charset);
                $value = rcube_charset::clean($value);
            }
        }

        return $value;
    }

    /**
     * Sets header value
     *
     * @param string $name  Header name
     * @param string $value Header content
     */
    public function set($name, $value)
    {
        $name = strtolower($name);

        if (isset($this->obj_headers[$name])) {
            $this->{$this->obj_headers[$name]} = $value;
        }
        else {
            $this->others[$name] = $value;
        }
    }

    /**
     * Factory method to instantiate headers from a data array
     *
     * @param array $arr Hash array with header values
     *
     * @return rcube_message_header instance filled with headers values
     */
    public static function from_array($arr)
    {
        $obj = new rcube_message_header;
        foreach ($arr as $k => $v) {
            $obj->set($k, $v);
        }

        return $obj;
    }
}


/**
 * Class for sorting an array of rcube_message_header objects in a predetermined order.
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_message_header_sorter
{
    /** @var array Message UIDs */
    private $uids = [];


    /**
     * Set the predetermined sort order.
     *
     * @param array $index  Numerically indexed array of IMAP UIDs
     */
    function set_index($index)
    {
        $index = array_flip($index);

        $this->uids = $index;
    }

    /**
     * Sort the array of header objects
     *
     * @param array $headers Array of rcube_message_header objects indexed by UID
     */
    function sort_headers(&$headers)
    {
        uksort($headers, [$this, "compare_uids"]);
    }

    /**
     * Sort method called by uksort()
     *
     * @param int $a Array key (UID)
     * @param int $b Array key (UID)
     */
    function compare_uids($a, $b)
    {
        // then find each sequence number in my ordered list
        $posa = isset($this->uids[$a]) ? intval($this->uids[$a]) : -1;
        $posb = isset($this->uids[$b]) ? intval($this->uids[$b]) : -1;

        // return the relative position as the comparison value
        return $posa - $posb;
    }
}
lib/Roundcube/rcube_addressbook.php000064400000075332151727150650013454 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Interface to the local address book database                        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Abstract skeleton of an address book/repository
 *
 * @package    Framework
 * @subpackage Addressbook
 */
abstract class rcube_addressbook
{
    // constants for error reporting
    const ERROR_READ_ONLY     = 1;
    const ERROR_NO_CONNECTION = 2;
    const ERROR_VALIDATE      = 3;
    const ERROR_SAVING        = 4;
    const ERROR_SEARCH        = 5;

    // search modes
    const SEARCH_ALL    = 0;
    const SEARCH_STRICT = 1;
    const SEARCH_PREFIX = 2;
    const SEARCH_GROUPS = 4;

    // contact types, note: some of these are used as addressbook source identifiers
    const TYPE_CONTACT        = 0;
    const TYPE_RECIPIENT      = 1;
    const TYPE_TRUSTED_SENDER = 2;
    const TYPE_DEFAULT        = 4;
    const TYPE_WRITEABLE      = 8;
    const TYPE_READONLY       = 16;

    // public properties (mandatory)

    /** @var string Name of the primary key field of this addressbook. Used to search for previously retrieved IDs. */
    public $primary_key;

    /** @var bool True if the addressbook supports contact groups. */
    public $groups = false;

    /**
     * @var bool True if the addressbook supports exporting contact groups. Requires the implementation of
     *              get_record_groups().
     */
    public $export_groups = true;

    /** @var bool True if the addressbook is read-only. */
    public $readonly = true;

    /**
     * @var bool True if the addressbook does not support listing all records but needs use of the search function.
     */
    public $searchonly = false;

    /** @var bool True if the addressbook supports restoring deleted contacts. */
    public $undelete = false;

    /** @var bool True if the addressbook is ready to be used. See rcmail_action_contacts_index::$CONTACT_COLTYPES */
    public $ready = false;

    /**
     * @var null|string|int If set, addressbook-specific identifier of the selected group. All contact listing and
     *                      contact searches will be limited to contacts that belong to this group.
     */
    public $group_id = null;

    /** @var int The current page of the listing. Numbering starts at 1. */
    public $list_page = 1;

    /** @var int The maximum number of records shown on a page. */
    public $page_size = 10;

    /** @var string Contact field by which to order listed records. */
    public $sort_col = 'name';

    /** @var string Whether sorting of records by $sort_col is done in ascending (ASC) or descending (DESC) order. */
    public $sort_order = 'ASC';

    /** @var string[] A list of record fields that contain dates. */
    public $date_cols = [];

    /** @var array Definition of the contact fields supported by the addressbook. */
    public $coltypes = [
        'name'      => ['limit' => 1],
        'firstname' => ['limit' => 1],
        'surname'   => ['limit' => 1],
        'email'     => ['limit' => 1]
    ];

    /**
     * @var string[] vCard additional fields mapping
     */
    public $vcard_map = [];

    /** @var ?array Error state - hash array with the following fields: type, message */
    protected $error;


    /**
     * Returns addressbook name (e.g. for addressbooks listing)
     * @return string
     */
    abstract function get_name();

    /**
     * Sets a search filter.
     *
     * This affects the contact set considered when using the count() and list_records() operations to those
     * contacts that match the filter conditions. If no search filter is set, all contacts in the addressbook are
     * considered.
     *
     * This filter mechanism is applied in addition to other filter mechanisms, see the description of the count()
     * operation.
     *
     * @param mixed $filter Search params to use in listing method, obtained by get_search_set()
     * @return void
     */
    abstract function set_search_set($filter);

    /**
     * Getter for saved search properties.
     *
     * The filter representation is opaque to roundcube, but can be set again using set_search_set().
     *
     * @return mixed Search properties used by this class
     */
    abstract function get_search_set();

    /**
     * Reset saved results and search parameters
     * @return void
     */
    abstract function reset();

    /**
     * Refresh saved search set after data has changed
     *
     * @return mixed New search set
     */
    function refresh_search()
    {
        return $this->get_search_set();
    }

    /**
     * Lists the current set of contact records.
     *
     * See the description of count() for the criteria determining which contacts are considered for the listing.
     *
     * The actual records returned may be fewer, as only the records for the current page are returned. The returned
     * records may be further limited by the $subset parameter, which means that only the first or last $subset records
     * of the page are returned, depending on whether $subset is positive or negative. If $subset is 0, all records of
     * the page are returned. The returned records are found in the $records property of the returned result set.
     *
     * Finally, the $first property of the returned result set contains the index into the total set of filtered records
     * (i.e. not considering the segmentation into pages) of the first returned record before applying the $subset
     * parameter (i.e., $first is always a multiple of the page size).
     *
     * The $nocount parameter is an optimization that allows to skip querying the total amount of records of the
     * filtered set if the caller is only interested in the records. In this case, the $count property of the returned
     * result set will simply contain the number of returned records, but the filtered set may contain more records than
     * this.
     *
     * The result of the operation is internally cached for later retrieval using get_result().
     *
     * @param ?array $cols    List of columns to include in the returned records (null means all)
     * @param int    $subset  Only return this number of records of the current page, use negative values for tail
     * @param bool   $nocount True to skip the count query (select only)
     *
     * @return rcube_result_set Indexed list of contact records, each a hash array
     */
    abstract function list_records($cols = null, $subset = 0, $nocount = false);

    /**
     * Search records
     *
     * Depending on the given parameters the search() function operates in different ways (in the order listed):
     *
     * "Direct ID search" - when $fields is either 'ID' or $this->primary_key
     *     - $values is either a string of contact IDs separated by self::SEPARATOR (,) or an array of contact IDs
     *     - Any contact with one of the given IDs is returned
     *
     * "Advanced search" - when $value is an array
     *     - Each value in $values is the search value for the field in $fields at the same index
     *     - All fields must match their value to be included in the result ("AND" semantics)
     *
     * "Search all fields" - when $fields is '*' (note: $value is a single string)
     *     - Any field must match the value to be included in the result ("OR" semantics)
     *
     * "Search given fields" - if none of the above matches
     *     - Any of the given fields must match the value to be included in the result ("OR" semantics)
     *
     * All matching is done case insensitive.
     *
     * The search settings are remembered (see set_search_set()) until reset using the reset() function. They can be
     * retrieved using get_search_set(). The remembered search settings must be considered by list_records() and
     * count().
     *
     * The search mode can be set by the admin via the config.inc.php setting addressbook_search_mode.
     * It is used as a bit mask, but the search modes are exclusive (SEARCH_GROUPS is combined with one of other modes):
     *   SEARCH_ALL: substring search (*abc*)
     *   SEARCH_STRICT: Exact match search (case insensitive =)
     *   SEARCH_PREFIX: Prefix search (abc*)
     *   SEARCH_GROUPS: include groups in search results (if supported)
     *
     * When records are requested in the returned rcube_result_set ($select is true), the results will only include the
     * contacts of the current page (see list_page, page_size). The behavior is as described with the list_records
     * function, and search() can be thought of as a sequence of set_search_set() and list_records() under that filter.
     *
     * If $nocount is true, the count property of the returned rcube_result_set will contain the amount of records
     * contained within that set. Calling search() with $select=false and $nocount=true is not a meaningful use case and
     * will result in an empty result set without records and a count property of 0, which gives no indication on the
     * actual record set matching the given filter.
     *
     * The result of the operation is internally cached for later retrieval using get_result().
     *
     * @param string|string[] $fields   Field names to search in
     * @param string|string[] $value    Search value, or array of values, one for each field in $fields
     * @param int             $mode     Search mode. Sum of rcube_addressbook::SEARCH_*.
     * @param bool            $select   True if records are requested in the result, false if count only
     * @param bool            $nocount  True to skip the count query (select only)
     * @param string|string[] $required Field or list of fields that cannot be empty
     *
     * @return rcube_result_set Contact records and 'count' value
     */
    abstract function search($fields, $value, $mode = 0, $select = true, $nocount = false, $required = []);

    /**
     * Count the number of contacts in the database matching the current filter criteria.
     *
     * The current filter criteria are defined by the search filter (see search()/set_search_set()) and the currently
     * active group (see set_group()), if applicable.
     *
     * @return rcube_result_set Result set with values for 'count' and 'first'
     */
    abstract function count();

    /**
     * Return the last result set
     *
     * @return ?rcube_result_set Current result set or NULL if nothing selected yet
     */
    abstract function get_result();

    /**
     * Get a specific contact record
     *
     * @param mixed $id    Record identifier(s)
     * @param bool  $assoc True to return record as associative array, otherwise a result set is returned
     *
     * @return rcube_result_set|array Result object with all record fields
     */
    abstract function get_record($id, $assoc = false);

    /**
     * Returns the last error occurred (e.g. when updating/inserting failed)
     *
     * @return ?array Hash array with the following fields: type, message. Null if no error set.
     */
    function get_error()
    {
        return $this->error;
    }

    /**
     * Setter for errors for internal use
     *
     * @param int    $type    Error type (one of this class' error constants)
     * @param string $message Error message (name of a text label)
     */
    protected function set_error($type, $message)
    {
        $this->error = ['type' => $type, 'message' => $message];
    }

    /**
     * Close connection to source
     * Called on script shutdown
     */
    function close() { }

    /**
     * Set internal list page
     *
     * @param int $page Page number to list
     */
    function set_page($page)
    {
        $this->list_page = (int) $page;
    }

    /**
     * Set internal page size
     *
     * @param int $size Number of messages to display on one page
     */
    function set_pagesize($size)
    {
        $this->page_size = (int) $size;
    }

    /**
     * Set internal sort settings
     *
     * @param ?string $sort_col   Sort column
     * @param ?string $sort_order Sort order
     */
    function set_sort_order($sort_col, $sort_order = null)
    {
        if ($sort_col && (array_key_exists($sort_col, $this->coltypes) || in_array($sort_col, $this->coltypes))) {
            $this->sort_col = $sort_col;
        }

        if ($sort_order) {
            $this->sort_order = strtoupper($sort_order) == 'DESC' ? 'DESC' : 'ASC';
        }
    }

    /**
     * Check the given data before saving.
     * If input isn't valid, the message to display can be fetched using get_error()
     *
     * @param array &$save_data Associative array with data to save
     * @param bool  $autofix    Attempt to fix/complete record automatically
     *
     * @return bool True if input is valid, False if not.
     */
    public function validate(&$save_data, $autofix = false)
    {
        $rcube = rcube::get_instance();
        $valid = true;

        // check validity of email addresses
        foreach ($this->get_col_values('email', $save_data, true) as $email) {
            if (strlen($email)) {
                if (!rcube_utils::check_email(rcube_utils::idn_to_ascii($email))) {
                    $error = $rcube->gettext(['name' => 'emailformaterror', 'vars' => ['email' => $email]]);
                    $this->set_error(self::ERROR_VALIDATE, $error);
                    $valid = false;
                    break;
                }
            }
        }

        // allow plugins to do contact validation and auto-fixing
        $plugin = $rcube->plugins->exec_hook('contact_validate', [
                'record'  => $save_data,
                'autofix' => $autofix,
                'valid'   => $valid,
        ]);

        if ($valid && !$plugin['valid']) {
            $this->set_error(self::ERROR_VALIDATE, $plugin['error']);
        }

        if (is_array($plugin['record'])) {
            $save_data = $plugin['record'];
        }

        return $plugin['valid'];
    }

    /**
     * Create a new contact record
     *
     * @param array $save_data Associative array with save data
     *                         Keys:   Field name with optional section in the form FIELD:SECTION
     *                         Values: Field value. Can be either a string or an array of strings for multiple values
     * @param bool  $check     True to check for duplicates first
     *
     * @return mixed The created record ID on success, False on error
     */
    function insert($save_data, $check = false)
    {
        // empty for read-only address books
    }

    /**
     * Create new contact records for every item in the record set
     *
     * @param rcube_result_set $recset Recordset to insert
     * @param bool             $check  True to check for duplicates first
     *
     * @return array List of created record IDs
     */
    function insertMultiple($recset, $check = false)
    {
        $ids = [];
        if ($recset instanceof rcube_result_set) {
            while ($row = $recset->next()) {
                if ($insert = $this->insert($row, $check)) {
                    $ids[] = $insert;
                }
            }
        }

        return $ids;
    }

    /**
     * Update a specific contact record
     *
     * @param mixed $id        Record identifier
     * @param array $save_cols Associative array with save data
     *                         Keys:   Field name with optional section in the form FIELD:SECTION
     *                         Values: Field value. Can be either a string or an array of strings for multiple values
     *
     * @return mixed On success if ID has been changed returns ID, otherwise True, False on error
     */
    function update($id, $save_cols)
    {
        // empty for read-only address books
    }

    /**
     * Mark one or more contact records as deleted
     *
     * @param array $ids   Record identifiers
     * @param bool  $force Remove records irreversible (see self::undelete)
     *
     * @return int|false Number of removed records, False on failure
     */
    function delete($ids, $force = true)
    {
        // empty for read-only address books
    }

    /**
     * Unmark delete flag on contact record(s)
     *
     * @param array $ids Record identifiers
     */
    function undelete($ids)
    {
        // empty for read-only address books
    }

    /**
     * Mark all records in database as deleted
     *
     * @param bool $with_groups Remove also groups
     */
    function delete_all($with_groups = false)
    {
        // empty for read-only address books
    }

    /**
     * Sets/clears the current group.
     *
     * This affects the contact set considered when using the count(), list_records() and search() operations to those
     * contacts that belong to the given group. If no current group is set, all contacts in the addressbook are
     * considered.
     *
     * This filter mechanism is applied in addition to other filter mechanisms, see the description of the count()
     * operation.
     *
     * @param null|int|string $group_id Database identifier of the group. Use 0/"0"/null to reset the group filter.
     */
    function set_group($group_id)
    {
        // empty for address books don't supporting groups
    }

    /**
     * List all active contact groups of this source
     *
     * @param ?string $search Optional search string to match group name
     * @param int     $mode   Search mode. Sum of self::SEARCH_*
     *
     * @return array Indexed list of contact groups, each a hash array
     */
    function list_groups($search = null, $mode = 0)
    {
        // empty for address books don't supporting groups
        return [];
    }

    /**
     * Get group properties such as name and email address(es)
     *
     * @param string $group_id Group identifier
     *
     * @return ?array Group properties as hash array, null in case of error.
     */
    function get_group($group_id)
    {
        // empty for address books don't supporting groups
        return null;
    }

    /**
     * Create a contact group with the given name
     *
     * @param string $name The group name
     *
     * @return array|false False on error, array with record props in success
     */
    function create_group($name)
    {
        // empty for address books don't supporting groups
        return false;
    }

    /**
     * Delete the given group and all linked group members
     *
     * @param string $group_id Group identifier
     *
     * @return bool True on success, false if no data was changed
     */
    function delete_group($group_id)
    {
        // empty for address books don't supporting groups
        return false;
    }

    /**
     * Rename a specific contact group
     *
     * @param string $group_id Group identifier
     * @param string $newname  New name to set for this group
     * @param string &$newid   New group identifier (if changed, otherwise don't set)
     *
     * @return string|false New name on success, false if no data was changed
     */
    function rename_group($group_id, $newname, &$newid)
    {
        // empty for address books don't supporting groups
        return false;
    }

    /**
     * Add the given contact records the a certain group
     *
     * @param string       $group_id Group identifier
     * @param array|string $ids      List of contact identifiers to be added
     *
     * @return int Number of contacts added
     */
    function add_to_group($group_id, $ids)
    {
        // empty for address books don't supporting groups
        return 0;
    }

    /**
     * Remove the given contact records from a certain group
     *
     * @param string       $group_id Group identifier
     * @param array|string $ids      List of contact identifiers to be removed
     *
     * @return int Number of deleted group members
     */
    function remove_from_group($group_id, $ids)
    {
        // empty for address books don't supporting groups
        return 0;
    }

    /**
     * Get group assignments of a specific contact record
     *
     * @param mixed $id Record identifier
     *
     * @return array List of assigned groups indexed by a group ID.
     *               Every array element can be just a group name (string), or an array
     *               with 'ID' and 'name' elements.
     * @since 0.5-beta
     */
    function get_record_groups($id)
    {
        // empty for address books don't supporting groups
        return [];
    }

    /**
     * Utility function to return all values of a certain data column
     * either as flat list or grouped by subtype
     *
     * @param string $col  Col name
     * @param array  $data Record data array as used for saving
     * @param bool   $flat True to return one array with all values,
     *                     False for hash array with values grouped by type
     *
     * @return array List of column values
     */
    public static function get_col_values($col, $data, $flat = false)
    {
        $out = [];
        foreach ((array) $data as $c => $values) {
            if ($c === $col || strpos($c, $col.':') === 0) {
                if ($flat) {
                    $out = array_merge($out, (array) $values);
                }
                else {
                    list(, $type) = rcube_utils::explode(':', $c);
                    if ($type !== null && isset($out[$type])) {
                        $out[$type] = array_merge((array) $out[$type], (array) $values);
                    }
                    else {
                        $out[$type] = (array) $values;
                    }
                }
            }
        }

        // remove duplicates
        if ($flat && !empty($out)) {
            $out = array_unique($out);
        }

        return $out;
    }

    /**
     * Compose a valid display name from the given structured contact data
     *
     * @param array $contact    Hash array with contact data as key-value pairs
     * @param bool  $full_email Don't attempt to extract components from the email address
     *
     * @return string Display name
     */
    public static function compose_display_name($contact, $full_email = false)
    {
        $contact = rcube::get_instance()->plugins->exec_hook('contact_displayname', $contact);
        $fn      = $contact['name'] ?? '';

        // default display name composition according to vcard standard
        if (!$fn) {
            $keys = ['prefix', 'firstname', 'middlename', 'surname', 'suffix'];
            $fn   = implode(' ', array_filter(array_intersect_key($contact, array_flip($keys))));
            $fn   = trim(preg_replace('/\s+/u', ' ', $fn));
        }

        // use email address part for name
        $email = self::get_col_values('email', $contact, true);
        $email = $email[0] ?? null;

        if ($email && (empty($fn) || $fn == $email)) {
            // return full email
            if ($full_email) {
                return $email;
            }

            list($emailname) = explode('@', $email);

            if (preg_match('/(.*)[\.\-\_](.*)/', $emailname, $match)) {
                $fn = trim(ucfirst($match[1]).' '.ucfirst($match[2]));
            }
            else {
                $fn = ucfirst($emailname);
            }
        }

        return $fn;
    }

    /**
     * Compose the name to display in the contacts list for the given contact record.
     * This respects the settings parameter how to list contacts.
     *
     * @param array $contact Hash array with contact data as key-value pairs
     *
     * @return string List name
     */
    public static function compose_list_name($contact)
    {
        static $compose_mode;

        if (!isset($compose_mode)) {
            $compose_mode = (int) rcube::get_instance()->config->get('addressbook_name_listing', 0);
        }

        $get_names = function ($contact, $fields) {
            $result = [];
            foreach ($fields as $field) {
                if (!empty($contact[$field])) {
                    $result[] = $contact[$field];
                }
            }
            return $result;
        };

        switch ($compose_mode) {
        case 3:
            $names = $get_names($contact, ['firstname', 'middlename']);
            if (!empty($contact['surname'])) {
                array_unshift($names, $contact['surname'] . ',');
            }
            $fn = implode(' ', $names);
            break;
        case 2:
            $keys = ['surname', 'firstname', 'middlename'];
            $fn   = implode(' ', $get_names($contact, $keys));
            break;
        case 1:
            $keys = ['firstname', 'middlename', 'surname'];
            $fn   = implode(' ', $get_names($contact, $keys));
            break;
        case 0:
            if (!empty($contact['name'])) {
                $fn = $contact['name'];
            }
            else {
                $keys = ['prefix', 'firstname', 'middlename', 'surname', 'suffix'];
                $fn   = implode(' ', $get_names($contact, $keys));
            }
            break;
        default:
            $plugin = rcube::get_instance()->plugins->exec_hook('contact_listname', ['contact' => $contact]);
            $fn     = $plugin['fn'];
        }

        $fn = trim($fn, ', ');
        $fn = preg_replace('/\s+/u', ' ', $fn);

        // fallbacks...
        if ($fn === '') {
            // ... display name
            if (isset($contact['name']) && ($name = trim($contact['name']))) {
                $fn = $name;
            }
            // ... organization
            else if (isset($contact['organization']) && ($org = trim($contact['organization']))) {
                $fn = $org;
            }
            // ... email address
            else if (($email = self::get_col_values('email', $contact, true)) && !empty($email)) {
                $fn = $email[0];
            }
        }

        return $fn;
    }

    /**
     * Build contact display name for autocomplete listing
     *
     * @param array  $contact Hash array with contact data as key-value pairs
     * @param string $email   Optional email address
     * @param string $name    Optional name (self::compose_list_name() result)
     * @param string $templ   Optional template to use (defaults to the 'contact_search_name' config option)
     *
     * @return string Display name
     */
    public static function compose_search_name($contact, $email = null, $name = null, $templ = null)
    {
        static $template;

        if (empty($templ) && !isset($template)) {  // cache this
            $template = rcube::get_instance()->config->get('contact_search_name');
            if (empty($template)) {
                $template = '{name} <{email}>';
            }
        }

        $result = $templ ?: $template;

        if (preg_match_all('/\{[a-z]+\}/', $result, $matches)) {
            foreach ($matches[0] as $key) {
                $key   = trim($key, '{}');
                $value = '';

                switch ($key) {
                case 'name':
                    $value = $name ?: self::compose_list_name($contact);

                    // If name(s) are undefined compose_list_name() may return an email address
                    // here we prevent from returning the same name and email
                    if ($name === $email && strpos($result, '{email}') !== false) {
                        $value = '';
                    }

                    break;

                case 'email':
                    $value = $email;
                    break;
                }

                if (empty($value)) {
                    $value = strpos($key, ':') ? $contact[$key] : self::get_col_values($key, $contact, true);
                    if (is_array($value) && isset($value[0])) {
                        $value = $value[0];
                    }
                }

                if (!is_string($value)) {
                    $value = '';
                }

                $result = str_replace('{' . $key . '}', $value, $result);
            }
        }

        $result = preg_replace('/\s+/u', ' ', $result);
        $result = preg_replace('/\s*(<>|\(\)|\[\])/u', '', $result);
        $result = trim($result, '/ ');

        return $result;
    }

    /**
     * Create a unique key for sorting contacts
     *
     * @param array  $contact  Contact record
     * @param string $sort_col Sorting column name
     *
     * @return string Unique key
     */
    public static function compose_contact_key($contact, $sort_col)
    {
        $key = isset($contact[$sort_col]) ? $contact[$sort_col] : null;

        // add email to a key to not skip contacts with the same name (#1488375)
        if (($email = self::get_col_values('email', $contact, true)) && !empty($email)) {
            $key .= ':' . implode(':', (array)$email);
        }

        // Make the key really unique (as we e.g. support contacts with no email)
        $key .= ':' . $contact['sourceid'] . ':' . $contact['ID'];

        return $key;
    }

    /**
     * Compare search value with contact data
     *
     * @param string       $colname Data name
     * @param string|array $value   Data value
     * @param string       $search  Search value
     * @param int          $mode    Search mode
     *
     * @return bool Comparison result
     */
    protected function compare_search_value($colname, $value, $search, $mode)
    {
        // The value is a date string, for date we'll
        // use only strict comparison (mode = 1)
        // @TODO: partial search, e.g. match only day and month
        if (in_array($colname, $this->date_cols)) {
            return (($value = rcube_utils::anytodatetime($value))
                && ($search = rcube_utils::anytodatetime($search))
                && $value->format('Ymd') == $search->format('Ymd'));
        }

        // Gender is a special value, must use strict comparison (#5757)
        if ($colname == 'gender') {
            $mode = self::SEARCH_STRICT;
        }

        // composite field, e.g. address
        foreach ((array) $value as $val) {
            $val = mb_strtolower($val);

            if ($mode & self::SEARCH_STRICT) {
                $got = ($val == $search);
            }
            else if ($mode & self::SEARCH_PREFIX) {
                $got = ($search == substr($val, 0, strlen($search)));
            }
            else {
                $got = (strpos($val, $search) !== false);
            }

            if ($got) {
                return true;
            }
        }

        return false;
    }
}
lib/Roundcube/rcube_config.php000064400000077572151727150650012431 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Class to read configuration settings                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Configuration class for Roundcube
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_config
{
    const DEFAULT_SKIN = 'elastic';

    /** @var string A skin configured in the config file (before being replaced by a user preference) */
    public $system_skin = 'elastic';

    private $env       = '';
    private $paths     = [];
    private $prop      = [];
    private $errors    = [];
    private $userprefs = [];
    private $immutable = [];
    private $client_tz;


    /**
     * Renamed options
     *
     * @var array
     */
    private $legacy_props = [
        // new name => old name
        'mail_pagesize'        => 'pagesize',
        'addressbook_pagesize' => 'pagesize',
        'reply_mode'           => 'top_posting',
        'refresh_interval'     => 'keep_alive',
        'min_refresh_interval' => 'min_keep_alive',
        'messages_cache_ttl'   => 'message_cache_lifetime',
        'mail_read_time'       => 'preview_pane_mark_read',
        'session_debug'        => 'log_session',
        'redundant_attachments_cache_ttl' => 'redundant_attachments_memcache_ttl',
        'imap_host'            => 'default_host',
        'smtp_host'            => 'smtp_server',
    ];

    /**
     * Object constructor
     *
     * @param string $env Environment suffix for config files to load
     */
    public function __construct($env = '')
    {
        $this->env = $env;

        if ($paths = getenv('RCUBE_CONFIG_PATH')) {
            $this->paths = explode(PATH_SEPARATOR, $paths);
            // make all paths absolute
            foreach ($this->paths as $i => $path) {
                if (!rcube_utils::is_absolute_path($path)) {
                    if ($realpath = realpath(RCUBE_INSTALL_PATH . $path)) {
                        $this->paths[$i] = unslashify($realpath) . '/';
                    }
                    else {
                        unset($this->paths[$i]);
                    }
                }
                else {
                    $this->paths[$i] = unslashify($path) . '/';
                }
            }
        }

        if (defined('RCUBE_CONFIG_DIR') && !in_array(RCUBE_CONFIG_DIR, $this->paths)) {
            $this->paths[] = RCUBE_CONFIG_DIR;
        }

        if (empty($this->paths)) {
            $this->paths[] = RCUBE_INSTALL_PATH . 'config/';
        }

        $this->load();

        // Defaults, that we do not require you to configure,
        // but contain information that is used in various locations in the code:
        if (empty($this->prop['contactlist_fields'])) {
            $this->set('contactlist_fields', ['name', 'firstname', 'surname', 'email']);
        }
    }

    /**
     * Looks inside the string to determine what type might be best as a container.
     *
     * @param string $value The value to inspect
     *
     * @return string The guessed type.
     */
    private function guess_type($value)
    {
        if (preg_match('/^\d+$/', $value)) {
            return 'int';
        }

        if (preg_match('/^[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?$/', $value)) {
            return 'float';
        }

        if (preg_match('/^(t(rue)?)|(f(alse)?)$/i', $value)) {
            return 'bool';
        }

        // TODO: array/object

        return 'string';
    }

    /**
     * Parse environment variable into PHP type.
     *
     * @param string $string String to parse into PHP type
     * @param string $type   Type of value to return
     *
     * @return mixed Appropriately typed interpretation of $string.
     */
    private function parse_env($string, $type = null)
    {
        switch ($type) {
        case 'bool':
            return (bool) $string;

        case 'int':
            return (int) $string;

        case 'float':
            return (float) $string;

        case 'string':
            return $string;

        case 'array':
            return json_decode($string, true);

        case 'object':
            return json_decode($string, false);
        }

        return $this->parse_env($string, $this->guess_type($string));
    }

    /**
     * Get environment variable value.
     *
     * Retrieve an environment variable's value or if it's not found, return the
     * provided default value.
     *
     * @param string $varname       Environment variable name
     * @param mixed  $default_value Default value to return if necessary
     * @param string $type          Type of value to return
     *
     * @return mixed Value of the environment variable or default if not found.
     */
    private function getenv_default($varname, $default_value, $type = null)
    {
        $value = getenv($varname);

        if ($value === false) {
            $value = $default_value;
        }
        else {
            $value = $this->parse_env($value, $type ?: gettype($default_value));
        }

        return $value;
    }

    /**
     * Load config from local config file
     */
    private function load()
    {
        // Load default settings
        if (!$this->load_from_file('defaults.inc.php')) {
            $this->errors[] = 'defaults.inc.php was not found.';
        }

        // load main config file
        if (!$this->load_from_file('config.inc.php')) {
            // Old configuration files
            if (!$this->load_from_file('main.inc.php') || !$this->load_from_file('db.inc.php')) {
                $this->errors[] = 'config.inc.php was not found.';
            }
            else if (rand(1,100) == 10) {  // log warning on every 100th request (average)
                trigger_error("config.inc.php was not found. Please migrate your config by running bin/update.sh", E_USER_WARNING);
            }
        }

        // load host-specific configuration
        $this->load_host_config();

        // set skin (with fallback to old 'skin_path' property)
        if (empty($this->prop['skin'])) {
            if (!empty($this->prop['skin_path'])) {
                $this->prop['skin'] = str_replace('skins/', '', unslashify($this->prop['skin_path']));
            }
            else {
                $this->prop['skin'] = self::DEFAULT_SKIN;
            }
        }

        if ($this->prop['skin'] == 'default') {
            $this->prop['skin'] = self::DEFAULT_SKIN;
        }

        $this->system_skin = $this->prop['skin'];

        // fix paths
        foreach (['log_dir' => 'logs', 'temp_dir' => 'temp'] as $key => $dir) {
            foreach ([$this->prop[$key], '../' . $this->prop[$key], RCUBE_INSTALL_PATH . $dir] as $path) {
                if ($path && ($realpath = realpath(unslashify($path)))) {
                    $this->prop[$key] = $realpath;
                    break;
                }
            }
        }

        // fix default imap folders encoding
        foreach (['drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox'] as $folder) {
            $this->prop[$folder] = rcube_charset::convert($this->prop[$folder], RCUBE_CHARSET, 'UTF7-IMAP');
        }

        // set PHP error logging according to config
        $error_log = $this->prop['log_driver'] ?: 'file';
        if ($error_log == 'file') {
            $error_log  = $this->prop['log_dir'] . '/errors';
            $error_log .= $this->prop['log_file_ext'] ?? '.log';
        }

        if ($error_log && $error_log != 'stdout') {
            ini_set('error_log', $error_log);
        }

        // set default screen layouts
        $this->prop['supported_layouts'] = ['widescreen', 'desktop', 'list'];

        // remove deprecated properties
        unset($this->prop['dst_active']);
    }

    /**
     * Load a host-specific config file if configured
     * This will merge the host specific configuration with the given one
     */
    private function load_host_config()
    {
        if (empty($this->prop['include_host_config'])) {
            return;
        }

        foreach (['HTTP_HOST', 'SERVER_NAME', 'SERVER_ADDR'] as $key) {
            if (empty($_SERVER[$key])) {
                continue;
            }

            $fname = null;
            $name  = $_SERVER[$key];

            if (!empty($this->prop['include_host_config']) && is_array($this->prop['include_host_config'])) {
                if (isset($this->prop['include_host_config'][$name])) {
                    $fname = $this->prop['include_host_config'][$name];
                }
            }
            else {
                $fname = preg_replace('/[^a-z0-9\.\-_]/i', '', $name) . '.inc.php';
            }

            if ($fname && $this->load_from_file($fname)) {
                return;
            }
        }
    }

    /**
     * Read configuration from a file
     * and merge with the already stored config values
     *
     * @param string $file Name of the config file to be loaded
     *
     * @return bool True on success, false on failure
     */
    public function load_from_file($file)
    {
        $success = false;

        foreach ($this->resolve_paths($file) as $fpath) {
            if ($fpath && is_file($fpath) && is_readable($fpath)) {
                // use output buffering, we don't need any output here
                ob_start();
                include($fpath);
                ob_end_clean();

                if (isset($config) && is_array($config)) {
                    $this->merge($config);
                    $success = true;
                }
                // deprecated name of config variable
                if (isset($rcmail_config) && is_array($rcmail_config)) {
                    $this->merge($rcmail_config);
                    $success = true;
                }
            }
        }

        return $success;
    }

    /**
     * Helper method to resolve absolute paths to the given config file.
     * This also takes the 'env' property into account.
     *
     * @param string $file    Filename or absolute file path
     * @param bool   $use_env Return -$env file path if exists
     *
     * @return array List of candidates in config dir path(s)
     */
    public function resolve_paths($file, $use_env = true)
    {
        $files    = [];
        $abs_path = rcube_utils::is_absolute_path($file);

        foreach ($this->paths as $basepath) {
            $realpath = $abs_path ? $file : realpath($basepath . '/' . $file);

            // check if <file>-<env>.inc.php exists
            if ($use_env && !empty($this->env)) {
                $envfile = preg_replace('/\.(inc.php)$/', '-' . $this->env . '.\\1', $file);
                $envfile = $abs_path ? $envfile : realpath($basepath . '/' . $envfile);

                if (is_file($envfile)) {
                    $realpath = $envfile;
                }
            }

            if ($realpath) {
                $files[] = $realpath;

                // no need to continue the loop if an absolute file path is given
                if ($abs_path) {
                    break;
                }
            }
        }

        return $files;
    }

    /**
     * Getter for a specific config parameter
     *
     * @param string $name Parameter name
     * @param mixed  $def  Default value if not set
     *
     * @return mixed The requested config value
     */
    public function get($name, $def = null)
    {
        if (isset($this->prop[$name])) {
            $result = $this->prop[$name];
        }
        else {
            $result = $def;
        }

        $result = $this->getenv_default('ROUNDCUBE_' . strtoupper($name), $result);
        $rcube  = rcube::get_instance();

        if ($name == 'timezone') {
            if (empty($result) || $result == 'auto') {
                $result = $this->client_timezone();
            }
        }
        else if ($name == 'client_mimetypes') {
            if (!$result && !$def) {
                $result = 'text/plain,text/html'
                    . ',image/jpeg,image/gif,image/png,image/bmp,image/tiff,image/webp'
                    . ',application/x-javascript,application/pdf,application/x-shockwave-flash';
            }
            if ($result && is_string($result)) {
                $result = explode(',', $result);
            }
        }
        else if ($name == 'layout') {
            if (!in_array($result, $this->prop['supported_layouts'])) {
                $result = $this->prop['supported_layouts'][0];
            }
        }
        else if ($name == 'collected_senders') {
            if (is_bool($result)) {
                $result = $result ? rcube_addressbook::TYPE_TRUSTED_SENDER : '';
            }
            $result = (string) $result;
        }
        else if ($name == 'collected_recipients') {
            if (is_bool($result)) {
                $result = $result ? rcube_addressbook::TYPE_RECIPIENT : '';
            }
            $result = (string) $result;
        }

        $plugin = $rcube->plugins->exec_hook('config_get', [
                'name'    => $name,
                'default' => $def,
                'result'  => $result
        ]);

        return $plugin['result'];
    }

    /**
     * Setter for a config parameter
     *
     * @param string $name      Parameter name
     * @param mixed  $value     Parameter value
     * @param bool   $immutable Make the value immutable
     */
    public function set($name, $value, $immutable = false)
    {
        $this->prop[$name] = $value;

        if ($immutable) {
            $this->immutable[$name] = $value;
        }
    }

    /**
     * Override config options with the given values (e.g. user prefs)
     *
     * @param array $prefs Hash array with config props to merge over
     */
    public function merge($prefs)
    {
        $prefs = $this->fix_legacy_props($prefs);
        $this->prop = array_merge($this->prop, $prefs, $this->userprefs, $this->immutable);
    }

    /**
     * Merge the given prefs over the current config
     * and make sure that they survive further merging.
     *
     * @param array $prefs Hash array with user prefs
     */
    public function set_user_prefs($prefs)
    {
        $prefs = $this->fix_legacy_props($prefs);

        // Honor the dont_override setting for any existing user preferences
        $dont_override = $this->get('dont_override');
        if (is_array($dont_override) && !empty($dont_override)) {
            foreach ($dont_override as $key) {
                unset($prefs[$key]);
            }
        }

        if (isset($prefs['skin']) && $prefs['skin'] == 'default') {
            $prefs['skin'] = $this->system_skin;
        }

        $skins_allowed = $this->get('skins_allowed');

        if (!empty($prefs['skin']) && !empty($skins_allowed) && !in_array($prefs['skin'], (array) $skins_allowed)) {
            unset($prefs['skin']);
        }

        $this->userprefs = $prefs;
        $this->prop      = array_merge($this->prop, $prefs);
    }

    /**
     * Getter for all config options.
     *
     * Unlike get() this method does not resolve any special
     * values like e.g. 'timezone'.
     *
     * It is discouraged to use this method outside of Roundcube core.
     *
     * @return array Hash array containing all config properties
     */
    public function all()
    {
        $props = $this->prop;

        foreach ($props as $prop_name => $prop_value) {
            $props[$prop_name] = $this->getenv_default('ROUNDCUBE_' . strtoupper($prop_name), $prop_value);
        }

        $rcube  = rcube::get_instance();
        $plugin = $rcube->plugins->exec_hook('config_get', ['name' => '*', 'result' => $props]);

        return $plugin['result'];
    }

    /**
     * Some options set as immutable that are also listed
     * in dont_override should not be stored permanently
     * in user preferences. Here's the list of these
     *
     * @return array List of transient options
     */
    public function transient_options()
    {
        return array_intersect(array_keys($this->immutable), (array) $this->get('dont_override'));
    }

    /**
     * Special getter for user's timezone offset including DST
     *
     * @return float Timezone offset (in hours)
     * @deprecated
     */
    public function get_timezone()
    {
        if ($tz = $this->get('timezone')) {
            try {
                $tz = new DateTimeZone($tz);
                return $tz->getOffset(new DateTime('now')) / 3600;
            }
            catch (Exception $e) {
            }
        }

        return 0;
    }

    /**
     * Return requested DES crypto key.
     *
     * @param string $key Crypto key name
     *
     * @return string Crypto key
     */
    public function get_crypto_key($key)
    {
        // Bomb out if the requested key does not exist
        if (!array_key_exists($key, $this->prop) || empty($this->prop[$key])) {
            rcube::raise_error([
                    'code' => 500, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Request for unconfigured crypto key \"$key\""
                ], true, true);
        }

        return $this->prop[$key];
    }

    /**
     * Return configured crypto method.
     *
     * @return string Crypto method
     */
    public function get_crypto_method()
    {
        return $this->get('cipher_method') ?: 'DES-EDE3-CBC';
    }

    /**
     * Try to autodetect operating system and find the correct line endings
     *
     * @return string The appropriate mail header delimiter
     * @deprecated Since 1.3 we don't use mail()
     */
    public function header_delimiter()
    {
        // use the configured delimiter for headers
        if (!empty($this->prop['mail_header_delimiter'])) {
            $delim = $this->prop['mail_header_delimiter'];
            if ($delim == "\n" || $delim == "\r\n") {
                return $delim;
            }
            else {
                rcube::raise_error([
                        'code' => 500, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => "Invalid mail_header_delimiter setting"
                    ], true, false);
            }
        }

        $php_os = strtolower(substr(PHP_OS, 0, 3));

        if ($php_os == 'win') {
            return "\r\n";
        }

        if ($php_os == 'mac') {
            return "\r\n";
        }

        return "\n";
    }

    /**
     * Returns list of configured PGP key servers
     *
     * @return array|null List of keyservers' URLs
     */
    public function keyservers()
    {
        $list = (array) $this->prop['keyservers'];

        foreach ($list as $idx => $host) {
            if (!preg_match('|^[a-z]+://|', $host)) {
                $host = "https://$host";
            }

            $list[$idx] = slashify($host);
        }

        return !empty($list) ? $list : null;
    }

    /**
     * Return the mail domain configured for the given host
     *
     * @param string $host   IMAP host
     * @param bool   $encode If true, domain name will be converted to IDN ASCII
     *
     * @return string Resolved SMTP host
     */
    public function mail_domain($host, $encode = true)
    {
        $domain = $host;

        if (!empty($this->prop['mail_domain'])) {
            if (is_array($this->prop['mail_domain'])) {
                if (isset($this->prop['mail_domain'][$host])) {
                    $domain = $this->prop['mail_domain'][$host];
                }
            }
            else {
                $domain = rcube_utils::parse_host($this->prop['mail_domain']);
            }
        }

        if ($encode) {
            $domain = rcube_utils::idn_to_ascii($domain);
        }

        return $domain;
    }

    /**
     * Getter for error state
     *
     * @return mixed Error message on error, False if no errors
     */
    public function get_error()
    {
        return empty($this->errors) ? false : implode("\n", $this->errors);
    }

    /**
     * Internal getter for client's (browser) timezone identifier
     */
    private function client_timezone()
    {
        if ($this->client_tz) {
            return $this->client_tz;
        }

        // @TODO: remove this legacy timezone handling in the future
        if (isset($_SESSION['timezone'])) {
            $props = $this->fix_legacy_props(['timezone' => $_SESSION['timezone']]);
        }

        if (!empty($props['timezone'])) {
            // Prevent from using deprecated timezone names
            $props['timezone'] = $this->resolve_timezone_alias($props['timezone']);

            try {
                $tz = new DateTimeZone($props['timezone']);
                return $this->client_tz = $tz->getName();
            }
            catch (Exception $e) { /* gracefully ignore */ }
        }

        // fallback to server's timezone
        return date_default_timezone_get();
    }

    /**
     * Convert legacy options into new ones
     *
     * @param array $props Hash array with config props
     *
     * @return array Converted config props
     */
    private function fix_legacy_props($props)
    {
        foreach ($this->legacy_props as $new => $old) {
            if (isset($props[$old])) {
                if (!isset($props[$new])) {
                    $props[$new] = $props[$old];
                }
                unset($props[$old]);
            }
        }

        // convert deprecated numeric timezone value
        if (isset($props['timezone']) && is_numeric($props['timezone'])) {
            if ($tz = self::timezone_name_from_abbr($props['timezone'])) {
                $props['timezone'] = $tz;
            }
            else {
                unset($props['timezone']);
            }
        }

        // translate old `preview_pane` settings to `layout`
        if (isset($props['preview_pane']) && !isset($props['layout'])) {
            $props['layout'] = $props['preview_pane'] ? 'desktop' : 'list';
            unset($props['preview_pane']);
        }

        // translate old `display_version` settings to `display_product_info`
        if (isset($props['display_version']) && !isset($props['display_product_info'])) {
            $props['display_product_info'] = $props['display_version'] ? 2 : 1;
            unset($props['display_version']);
        }

        return $props;
    }

    /**
     * timezone_name_from_abbr() replacement. Converts timezone offset
     * into timezone name abbreviation.
     *
     * @param float $offset Timezone offset (in hours)
     *
     * @return string|null Timezone abbreviation
     */
    static public function timezone_name_from_abbr($offset)
    {
        // List of timezones here is not complete - https://bugs.php.net/bug.php?id=44780
        if ($tz = timezone_name_from_abbr('', $offset * 3600, 0)) {
            return $tz;
        }

        // try with more complete list (#1489261)
        $timezones = [
            '-660' => "Pacific/Apia",
            '-600' => "Pacific/Honolulu",
            '-570' => "Pacific/Marquesas",
            '-540' => "America/Anchorage",
            '-480' => "America/Los_Angeles",
            '-420' => "America/Denver",
            '-360' => "America/Chicago",
            '-300' => "America/New_York",
            '-270' => "America/Caracas",
            '-240' => "America/Halifax",
            '-210' => "Canada/Newfoundland",
            '-180' => "America/Sao_Paulo",
             '-60' => "Atlantic/Azores",
               '0' => "Europe/London",
              '60' => "Europe/Paris",
             '120' => "Europe/Helsinki",
             '180' => "Europe/Moscow",
             '210' => "Asia/Tehran",
             '240' => "Asia/Dubai",
             '270' => "Asia/Kabul",
             '300' => "Asia/Karachi",
             '330' => "Asia/Kolkata",
             '345' => "Asia/Katmandu",
             '360' => "Asia/Yekaterinburg",
             '390' => "Asia/Rangoon",
             '420' => "Asia/Krasnoyarsk",
             '480' => "Asia/Shanghai",
             '525' => "Australia/Eucla",
             '540' => "Asia/Tokyo",
             '570' => "Australia/Adelaide",
             '600' => "Australia/Melbourne",
             '630' => "Australia/Lord_Howe",
             '660' => "Asia/Vladivostok",
             '690' => "Pacific/Norfolk",
             '720' => "Pacific/Auckland",
             '765' => "Pacific/Chatham",
             '780' => "Pacific/Enderbury",
             '840' => "Pacific/Kiritimati",
        ];

        $key = (string) intval($offset * 60);

        return !empty($timezones[$key]) ? $timezones[$key] : null;
    }

    /**
     * Replace deprecated timezone name with a valid one.
     *
     * @param string $tzname Timezone name
     *
     * @return string Timezone name
     */
    static public function resolve_timezone_alias($tzname)
    {
        // http://www.php.net/manual/en/timezones.others.php
        // https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
        $deprecated_timezones = [
            'Australia/ACT'         => 'Australia/Sydney',
            'Australia/LHI'         => 'Australia/Lord_Howe',
            'Australia/North'       => 'Australia/Darwin',
            'Australia/NSW'         => 'Australia/Sydney',
            'Australia/Queensland'  => 'Australia/Brisbane',
            'Australia/South'       => 'Australia/Adelaide',
            'Australia/Adelaide'    => 'Australia/Hobart',
            'Australia/Tasmania'    => 'Australia/Hobart',
            'Australia/Victoria'    => 'Australia/Melbourne',
            'Australia/West'        => 'Australia/Perth',
            'Brazil/Acre'           => 'America/Rio_Branco',
            'Brazil/DeNoronha'      => 'America/Noronha',
            'Brazil/East'           => 'America/Sao_Paulo',
            'Brazil/West'           => 'America/Manaus',
            'Canada/Atlantic'       => 'America/Halifax',
            'Canada/Central'        => 'America/Winnipeg',
            'Canada/Eastern'        => 'America/Toronto',
            'Canada/Mountain'       => 'America/Edmonton',
            'Canada/Newfoundland'   => 'America/St_Johns',
            'Canada/Pacific'        => 'America/Vancouver',
            'Canada/Saskatchewan'   => 'America/Regina',
            'Canada/Yukon'          => 'America/Whitehorse',
            'CET'                   => 'Europe/Berlin',
            'Chile/Continental'     => 'America/Santiago',
            'Chile/EasterIsland'    => 'Pacific/Easter',
            'CST6CDT'               => 'America/Chicago',
            'Cuba'                  => ' America/Havana',
            'EET'                   => 'Europe/Berlin',
            'Egypt'                 => 'Africa/Cairo',
            'Eire'                  => 'Europe/Dublin',
            'EST'                   => 'America/New_York',
            'EST5EDT'               => 'America/New_York',
            'Factory'               => 'UTC', // ?
            'GB'                    => 'Europe/London',
            'GB-Eire'               => 'Europe/London',
            'GMT'                   => 'UTC',
            'GMT+0'                 => 'UTC',
            'GMT-0'                 => 'UTC',
            'GMT0'                  => 'UTC',
            'Greenwich'             => 'UTC',
            'Hongkong'              => 'Asia/Hong_Kong',
            'HST'                   => 'Pacific/Honolulu',
            'Iceland'               => 'Atlantic/Reykjavik',
            'Iran'                  => 'Asia/Tehran',
            'Israel'                => 'Asia/Jerusalem',
            'Jamaica'               => 'America/Jamaica',
            'Japan'                 => 'Asia/Tokyo',
            'Kwajalein'             => 'Pacific/Kwajalein',
            'Libya'                 => 'Africa/Tripoli',
            'MET'                   => 'Europe/Berlin',
            'Mexico/BajaNorte'      => 'America/Tijuana',
            'Mexico/BajaSur'        => 'America/Mazatlan',
            'Mexico/General'        => 'America/Mexico_City',
            'MST'                   => 'America/Denver',
            'MST7MDT'               => 'America/Denver',
            'Navajo'                => 'America/Denver',
            'NZ'                    => 'Pacific/Auckland',
            'NZ-CHAT'               => 'Pacific/Chatham',
            'Poland'                => 'Europe/Warsaw',
            'Portugal'              => 'Europe/Lisbon',
            'PRC'                   => 'Asia/Shanghai',
            'PST8PDT'               => 'America/Los_Angeles',
            'ROC'                   => 'Asia/Taipei',
            'ROK'                   => 'Asia/Seoul',
            'Singapore'             => 'Asia/Singapore',
            'Turkey'                => 'Europe/Istanbul',
            'UCT'                   => 'UTC',
            'Universal'             => 'UTC',
            'US/Alaska'             => 'America/Anchorage',
            'US/Aleutian'           => 'America/Adak',
            'US/Arizona'            => 'America/Phoenix',
            'US/Central'            => 'America/Chicago',
            'US/East-Indiana'       => 'America/Indiana/Indianapolis',
            'US/Eastern'            => 'America/New_York',
            'US/Hawaii'             => 'Pacific/Honolulu',
            'US/Indiana-Starke'     => 'America/Indiana/Knox',
            'US/Michigan'           => 'America/Detroit',
            'US/Mountain'           => 'America/Denver',
            'US/Pacific'            => 'America/Los_Angeles',
            'US/Pacific-New'        => 'America/Los_Angeles',
            'US/Samoa'              => 'Pacific/Pago_Pago',
            'W-SU'                  => 'Europe/Moscow',
            'WET'                   => 'Europe/Berlin',
            'Z'                     => 'UTC',
            'Zulu'                  => 'UTC',
            // Some of these Etc/X zones are not deprecated, but still problematic
            'Etc/GMT'           => 'UTC',
            'Etc/GMT+0'         => 'UTC',
            'Etc/GMT+1'         => 'Atlantic/Azores',
            'Etc/GMT+10'        => 'Pacific/Honolulu',
            'Etc/GMT+11'        => 'Pacific/Midway',
            'Etc/GMT+12'        => 'Pacific/Auckland',
            'Etc/GMT+2'         => 'America/Noronha',
            'Etc/GMT+3'         => 'America/Argentina/Buenos_Aires',
            'Etc/GMT+4'         => 'America/Manaus',
            'Etc/GMT+5'         => 'America/New_York',
            'Etc/GMT+6'         => 'America/Chicago',
            'Etc/GMT+7'         => 'America/Denver',
            'Etc/GMT+8'         => 'America/Los_Angeles',
            'Etc/GMT+9'         => 'America/Anchorage',
            'Etc/GMT-0'         => 'UTC',
            'Etc/GMT-1'         => 'Europe/Berlin',
            'Etc/GMT-10'        => 'Australia/Sydney',
            'Etc/GMT-11'        => 'Pacific/Norfolk',
            'Etc/GMT-12'        => 'Pacific/Auckland',
            'Etc/GMT-13'        => 'Pacific/Apia',
            'Etc/GMT-14'        => 'Pacific/Kiritimati',
            'Etc/GMT-2'         => 'Africa/Cairo',
            'Etc/GMT-3'         => 'Europe/Moscow',
            'Etc/GMT-4'         => 'Europe/Samara',
            'Etc/GMT-5'         => 'Asia/Yekaterinburg',
            'Etc/GMT-6'         => 'Asia/Almaty',
            'Etc/GMT-7'         => 'Asia/Bangkok',
            'Etc/GMT-8'         => 'Asia/Hong_Kong',
            'Etc/GMT-9'         => 'Asia/Tokyo',
            'Etc/GMT0'          => 'UTC',
            'Etc/Greenwich'     => 'UTC',
            'Etc/UCT'           => 'UTC',
            'Etc/Universal'     => 'UTC',
            'Etc/UTC'           => 'UTC',
            'Etc/Zulu'          => 'UTC',
        ];

        return $deprecated_timezones[$tzname] ?? $tzname;
    }
}
lib/Roundcube/rcube_result_index.php000064400000031672151727150650013660 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   SORT/SEARCH/ESEARCH response handler                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for accessing IMAP's SORT/SEARCH/ESEARCH result
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_result_index
{
    public $incomplete = false;

    protected $raw_data;
    protected $mailbox;
    protected $meta   = [];
    protected $params = [];
    protected $order  = 'ASC';

    const SEPARATOR_ELEMENT = ' ';


    /**
     * Object constructor.
     */
    public function __construct($mailbox = null, $data = null, $order = null)
    {
        $this->mailbox = $mailbox;
        $this->order   = $order == 'DESC' ? 'DESC' : 'ASC';
        $this->init($data);
    }

    /**
     * Initializes object with SORT command response
     *
     * @param string $data IMAP response string
     */
    public function init($data = null)
    {
        $this->meta = [];

        $data = explode('*', (string)$data);

        // ...skip unilateral untagged server responses
        for ($i=0, $len=count($data); $i<$len; $i++) {
            $data_item = &$data[$i];
            if (preg_match('/^ SORT/i', $data_item)) {
                // valid response, initialize raw_data for is_error()
                $this->raw_data = '';
                $data_item = substr($data_item, 5);
                break;
            }
            else if (preg_match('/^ (E?SEARCH)/i', $data_item, $m)) {
                // valid response, initialize raw_data for is_error()
                $this->raw_data = '';
                $data_item = substr($data_item, strlen($m[0]));

                if (strtoupper($m[1]) == 'ESEARCH') {
                    $data_item = trim($data_item);
                    // remove MODSEQ response
                    if (preg_match('/\(MODSEQ ([0-9]+)\)$/i', $data_item, $m)) {
                        $data_item = substr($data_item, 0, -strlen($m[0]));
                        $this->params['MODSEQ'] = $m[1];
                    }
                    // remove TAG response part
                    if (preg_match('/^\(TAG ["a-z0-9]+\)\s*/i', $data_item, $m)) {
                        $data_item = substr($data_item, strlen($m[0]));
                    }
                    // remove UID
                    $data_item = preg_replace('/^UID\s*/i', '', $data_item);

                    // ESEARCH parameters
                    while (preg_match('/^([a-z]+) ([0-9:,]+)\s*/i', $data_item, $m)) {
                        $param = strtoupper($m[1]);
                        $value = $m[2];

                        $this->params[$param] = $value;
                        $data_item = substr($data_item, strlen($m[0]));

                        if (in_array($param, ['COUNT', 'MIN', 'MAX'])) {
                            $this->meta[strtolower($param)] = (int) $value;
                        }
                    }

// @TODO: Implement compression using compressMessageSet() in __sleep() and __wakeup() ?
// @TODO: work with compressed result?!
                    if (isset($this->params['ALL'])) {
                        $data_item = implode(self::SEPARATOR_ELEMENT,
                            rcube_imap_generic::uncompressMessageSet($this->params['ALL']));
                    }
                }

                break;
            }

            unset($data[$i]);
        }

        $data = array_filter($data);

        if (empty($data)) {
            return;
        }

        $data = array_first($data);
        $data = trim($data);
        $data = preg_replace('/[\r\n]/', '', $data);
        $data = preg_replace('/\s+/', ' ', $data);

        $this->raw_data = $data;
    }

    /**
     * Checks the result from IMAP command
     *
     * @return bool True if the result is an error, False otherwise
     */
    public function is_error()
    {
        return $this->raw_data === null;
    }

    /**
     * Checks if the result is empty
     *
     * @return bool True if the result is empty, False otherwise
     */
    public function is_empty()
    {
        return empty($this->raw_data)
            && empty($this->meta['max']) && empty($this->meta['min']) && empty($this->meta['count']);
    }

    /**
     * Returns number of elements in the result
     *
     * @return int Number of elements
     */
    public function count()
    {
        if (isset($this->meta['count'])) {
            return $this->meta['count'];
        }

        if (empty($this->raw_data)) {
            $this->meta['count']  = 0;
            $this->meta['length'] = 0;
        }
        else {
            $this->meta['count'] = 1 + substr_count($this->raw_data, self::SEPARATOR_ELEMENT);
        }

        return $this->meta['count'];
    }

    /**
     * Returns number of elements in the result.
     * Alias for count() for compatibility with rcube_result_thread
     *
     * @return int Number of elements
     */
    public function count_messages()
    {
        return $this->count();
    }

    /**
     * Returns maximal message identifier in the result
     *
     * @return int|null Maximal message identifier
     */
    public function max()
    {
        if ($this->is_empty()) {
            return null;
        }

        if (!isset($this->meta['max'])) {
            $this->meta['max'] = null;
            $all = $this->get();
            if (!empty($all)) {
                $this->meta['max'] = (int) max($all);
            }
        }

        return $this->meta['max'];
    }

    /**
     * Returns minimal message identifier in the result
     *
     * @return int|null Minimal message identifier
     */
    public function min()
    {
        if ($this->is_empty()) {
            return null;
        }

        if (!isset($this->meta['min'])) {
            $this->meta['min'] = null;
            $all = $this->get();
            if (!empty($all)) {
                $this->meta['min'] = (int) min($all);
            }
        }

        return $this->meta['min'];
    }

    /**
     * Slices data set.
     *
     * @param int $offset Offset (as for PHP's array_slice())
     * @param int $length Number of elements (as for PHP's array_slice())
     */
    public function slice($offset, $length)
    {
        $data = $this->get();
        $data = array_slice($data, $offset, $length);

        $this->meta          = [];
        $this->meta['count'] = count($data);
        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
    }

    /**
     * Filters data set. Removes elements not listed in $ids list.
     *
     * @param array $ids List of IDs to remove.
     */
    public function filter($ids = [])
    {
        $data = $this->get();
        $data = array_intersect($data, $ids);

        $this->meta          = [];
        $this->meta['count'] = count($data);
        $this->raw_data      = implode(self::SEPARATOR_ELEMENT, $data);
    }

    /**
     * Reverts order of elements in the result
     */
    public function revert()
    {
        $this->order = $this->order == 'ASC' ? 'DESC' : 'ASC';

        if (empty($this->raw_data)) {
            return;
        }

        $data = $this->get();
        $data = array_reverse($data);
        $this->raw_data = implode(self::SEPARATOR_ELEMENT, $data);

        $this->meta['pos'] = [];
    }

    /**
     * Check if the given message ID exists in the object
     *
     * @param int  $msgid     Message ID
     * @param bool $get_index When enabled element's index will be returned.
     *                        Elements are indexed starting with 0
     *
     * @return mixed False if message ID doesn't exist, True if exists or
     *               index of the element if $get_index=true
     */
    public function exists($msgid, $get_index = false)
    {
        if (empty($this->raw_data)) {
            return false;
        }

        $msgid = (int) $msgid;
        $begin = implode('|', ['^', preg_quote(self::SEPARATOR_ELEMENT, '/')]);
        $end   = implode('|', ['$', preg_quote(self::SEPARATOR_ELEMENT, '/')]);

        if (preg_match("/($begin)$msgid($end)/", $this->raw_data, $m,
            $get_index ? PREG_OFFSET_CAPTURE : 0)
        ) {
            if ($get_index) {
                $idx = 0;
                if (!empty($m[0][1])) {
                    $idx = 1 + substr_count($this->raw_data, self::SEPARATOR_ELEMENT, 0, $m[0][1]);
                }
                // cache position of this element, so we can use it in get_element()
                $this->meta['pos'][$idx] = (int)$m[0][1];

                return $idx;
            }

            return true;
        }

        return false;
    }

    /**
     * Return all messages in the result.
     *
     * @return array List of message IDs
     */
    public function get()
    {
        if (empty($this->raw_data)) {
            return [];
        }

        return explode(self::SEPARATOR_ELEMENT, $this->raw_data);
    }

    /**
     * Return all messages in the result.
     *
     * @return array List of message IDs
     */
    public function get_compressed()
    {
        if (empty($this->raw_data)) {
            return '';
        }

        return rcube_imap_generic::compressMessageSet($this->get());
    }

    /**
     * Return result element at specified index
     *
     * @param int|string  $index  Element's index or "FIRST" or "LAST"
     *
     * @return int|null Element value
     */
    public function get_element($index)
    {
        if (empty($this->raw_data)) {
            return null;
        }

        $count = $this->count();

        // first element
        if ($index === 0 || $index === '0' || $index === 'FIRST') {
            $pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT);
            if ($pos === false) {
                $result = (int) $this->raw_data;
            }
            else {
                $result = (int) substr($this->raw_data, 0, $pos);
            }

            return $result;
        }

        // last element
        if ($index === 'LAST' || $index == $count-1) {
            $pos = strrpos($this->raw_data, self::SEPARATOR_ELEMENT);
            if ($pos === false) {
                $result = (int) $this->raw_data;
            }
            else {
                $result = (int) substr($this->raw_data, $pos);
            }

            return $result;
        }

        // do we know the position of the element or the neighbour of it?
        if (!empty($this->meta['pos'])) {
            if (isset($this->meta['pos'][$index])) {
                $pos = $this->meta['pos'][$index];
            }
            else if (isset($this->meta['pos'][$index-1])) {
                $pos = strpos($this->raw_data, self::SEPARATOR_ELEMENT,
                    $this->meta['pos'][$index-1] + 1);
            }
            else if (isset($this->meta['pos'][$index+1])) {
                $pos = strrpos($this->raw_data, self::SEPARATOR_ELEMENT,
                    $this->meta['pos'][$index+1] - $this->length() - 1);
            }

            if (isset($pos) && preg_match('/([0-9]+)/', $this->raw_data, $m, 0, $pos)) {
                return (int) $m[1];
            }
        }

        // Finally use less effective method
        $data = explode(self::SEPARATOR_ELEMENT, $this->raw_data);

        return (int) $data[$index];
    }

    /**
     * Returns response parameters, e.g. ESEARCH's MIN/MAX/COUNT/ALL/MODSEQ
     * or internal data e.g. MAILBOX, ORDER
     *
     * @param ?string $param Parameter name
     *
     * @return array|string Response parameters or parameter value
     */
    public function get_parameters($param = null)
    {
        $params            = $this->params;
        $params['MAILBOX'] = $this->mailbox;
        $params['ORDER']   = $this->order;

        if ($param !== null) {
            return $params[$param] ?? null;
        }

        return $params;
    }

    /**
     * Returns length of internal data representation
     *
     * @return int Data length
     */
    protected function length()
    {
        if (!isset($this->meta['length'])) {
            $this->meta['length'] = strlen($this->raw_data);
        }

        return $this->meta['length'];
    }
}
lib/Roundcube/rcube_imap_generic.php000064400000416605151727150650013600 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide alternative IMAP library that doesn't rely on the standard  |
 |   C-Client based version. This allows to function regardless          |
 |   of whether or not the PHP build it's running on has IMAP            |
 |   functionality built-in.                                             |
 |                                                                       |
 |   Based on Iloha IMAP Library. See http://ilohamail.org/ for details  |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Ryo Chijiiwa <Ryo@IlohaMail.org>                              |
 +-----------------------------------------------------------------------+
*/

/**
 * PHP based wrapper class to connect to an IMAP server
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_imap_generic
{
    public $error;
    public $errornum;
    public $result;
    public $resultcode;
    public $selected;
    public $data  = [];
    public $flags = [
        'SEEN'      => '\\Seen',
        'DELETED'   => '\\Deleted',
        'ANSWERED'  => '\\Answered',
        'DRAFT'     => '\\Draft',
        'FLAGGED'   => '\\Flagged',
        'FORWARDED' => '$Forwarded',
        'MDNSENT'   => '$MDNSent',
        '*'         => '\\*',
    ];

    protected $fp;
    protected $host;
    protected $user;
    protected $cmd_tag;
    protected $cmd_num = 0;
    protected $resourceid;
    protected $extensions_enabled;
    protected $prefs             = [];
    protected $logged            = false;
    protected $capability        = [];
    protected $capability_read   = false;
    protected $debug             = false;
    protected $debug_handler     = false;

    const ERROR_OK       = 0;
    const ERROR_NO       = -1;
    const ERROR_BAD      = -2;
    const ERROR_BYE      = -3;
    const ERROR_UNKNOWN  = -4;
    const ERROR_COMMAND  = -5;
    const ERROR_READONLY = -6;

    const COMMAND_NORESPONSE = 1;
    const COMMAND_CAPABILITY = 2;
    const COMMAND_LASTLINE   = 4;
    const COMMAND_ANONYMIZED = 8;

    const DEBUG_LINE_LENGTH = 4098; // 4KB + 2B for \r\n


    /**
     * Send simple (one line) command to the connection stream
     *
     * @param string $string     Command string
     * @param bool   $endln      True if CRLF need to be added at the end of command
     * @param bool   $anonymized Don't write the given data to log but a placeholder
     *
     * @return int Number of bytes sent, False on error
     */
    protected function putLine($string, $endln = true, $anonymized = false)
    {
        if (!$this->fp) {
            return false;
        }

        if ($this->debug) {
            // anonymize the sent command for logging
            $cut = $endln ? 2 : 0;
            if ($anonymized && preg_match('/^(A\d+ (?:[A-Z]+ )+)(.+)/', $string, $m)) {
                $log = $m[1] . sprintf('****** [%d]', strlen($m[2]) - $cut);
            }
            else if ($anonymized) {
                $log = sprintf('****** [%d]', strlen($string) - $cut);
            }
            else {
                $log = rtrim($string);
            }

            $this->debug('C: ' . $log);
        }

        if ($endln) {
            $string .= "\r\n";
        }

        $res = fwrite($this->fp, $string);

        if ($res === false) {
            $this->closeSocket();
        }

        return $res;
    }

    /**
     * Send command to the connection stream with Command Continuation
     * Requests (RFC3501 7.5) and LITERAL+ (RFC2088) and LITERAL- (RFC7888) support.
     *
     * @param string $string     Command string
     * @param bool   $endln      True if CRLF need to be added at the end of command
     * @param bool   $anonymized Don't write the given data to log but a placeholder
     *
     * @return int|bool Number of bytes sent, False on error
     */
    protected function putLineC($string, $endln = true, $anonymized = false)
    {
        if (!$this->fp) {
            return false;
        }

        if ($endln) {
            $string .= "\r\n";
        }

        $res = 0;
        if ($parts = preg_split('/(\{[0-9]+\}\r\n)/m', $string, -1, PREG_SPLIT_DELIM_CAPTURE)) {
            for ($i = 0, $cnt = count($parts); $i < $cnt; $i++) {
                if ($i + 1 < $cnt && preg_match('/^\{([0-9]+)\}\r\n$/', $parts[$i+1], $matches)) {
                    // LITERAL+/LITERAL- support
                    $literal_plus = false;
                    if (
                        !empty($this->prefs['literal+'])
                        || (!empty($this->prefs['literal-']) && $matches[1] <= 4096)
                    ) {
                        $parts[$i+1] = sprintf("{%d+}\r\n", $matches[1]);
                        $literal_plus = true;
                    }

                    $bytes = $this->putLine($parts[$i].$parts[$i+1], false, $anonymized);
                    if ($bytes === false) {
                        return false;
                    }

                    $res += $bytes;

                    // don't wait if server supports LITERAL+ capability
                    if (!$literal_plus) {
                        $line = $this->readLine(1000);
                        // handle error in command
                        if (!isset($line[0]) || $line[0] != '+') {
                            return false;
                        }
                    }

                    $i++;
                }
                else {
                    $bytes = $this->putLine($parts[$i], false, $anonymized);
                    if ($bytes === false) {
                        return false;
                    }

                    $res += $bytes;
                }
            }
        }

        return $res;
    }

    /**
     * Reads line from the connection stream
     *
     * @param int $size Buffer size
     *
     * @return string Line of text response
     */
    protected function readLine($size = 1024)
    {
        $line = '';

        if (!$size) {
            $size = 1024;
        }

        do {
            if ($this->eof()) {
                return $line;
            }

            $buffer = fgets($this->fp, $size);

            if ($buffer === false) {
                $this->closeSocket();
                break;
            }

            if ($this->debug) {
                $this->debug('S: '. rtrim($buffer));
            }

            $line .= $buffer;
        }
        while (substr($buffer, -1) != "\n");

        return $line;
    }

    /**
     * Reads a line of data from the connection stream including all
     * string continuation literals.
     *
     * @param int $size Buffer size
     *
     * @return string Line of text response
     */
    protected function readFullLine($size = 1024)
    {
        $line = $this->readLine($size);

        // include all string literals untile the real end of "line"
        while (preg_match('/\{([0-9]+)\}\r\n$/', $line, $m)) {
            $bytes = $m[1];
            $out   = '';

            while (strlen($out) < $bytes) {
                $out = $this->readBytes($bytes);
                if ($out === '') {
                    break;
                }

                $line .= $out;
            }

            $line .= $this->readLine($size);
        }

        return $line;
    }

    /**
     * Reads more data from the connection stream when provided
     * data contain string literal
     *
     * @param string  $line    Response text
     * @param bool    $escape  Enables escaping
     *
     * @return string Line of text response
     */
    protected function multLine($line, $escape = false)
    {
        $line = rtrim($line);
        if (preg_match('/\{([0-9]+)\}$/', $line, $m)) {
            $out   = '';
            $str   = substr($line, 0, -strlen($m[0]));
            $bytes = $m[1];

            while (strlen($out) < $bytes) {
                $line = $this->readBytes($bytes);
                if ($line === '') {
                    break;
                }

                $out .= $line;
            }

            $line = $str . ($escape ? $this->escape($out) : $out);
        }

        return $line;
    }

    /**
     * Reads specified number of bytes from the connection stream
     *
     * @param int $bytes Number of bytes to get
     *
     * @return string Response text
     */
    protected function readBytes($bytes)
    {
        $data = '';
        $len  = 0;

        while ($len < $bytes && !$this->eof()) {
            $d = fread($this->fp, $bytes-$len);
            if ($this->debug) {
                $this->debug('S: '. $d);
            }
            $data .= $d;
            $data_len = strlen($data);
            if ($len == $data_len) {
                break; // nothing was read -> exit to avoid apache lockups
            }
            $len = $data_len;
        }

        return $data;
    }

    /**
     * Reads complete response to the IMAP command
     *
     * @param array $untagged Will be filled with untagged response lines
     *
     * @return string Response text
     */
    protected function readReply(&$untagged = null)
    {
        while (true) {
            $line = trim($this->readLine(1024));
            // store untagged response lines
            if (isset($line[0]) && $line[0] == '*') {
                $untagged[] = $line;
            }
            else {
                break;
            }
        }

        if ($untagged) {
            $untagged = implode("\n", $untagged);
        }

        return $line;
    }

    /**
     * Response parser.
     *
     * @param string $string     Response text
     * @param string $err_prefix Error message prefix
     *
     * @return int Response status
     */
    protected function parseResult($string, $err_prefix = '')
    {
        if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) {
            $res = strtoupper($matches[1]);
            $str = trim($matches[2]);

            if ($res == 'OK') {
                $this->errornum = self::ERROR_OK;
            }
            else if ($res == 'NO') {
                $this->errornum = self::ERROR_NO;
            }
            else if ($res == 'BAD') {
                $this->errornum = self::ERROR_BAD;
            }
            else if ($res == 'BYE') {
                $this->closeSocket();
                $this->errornum = self::ERROR_BYE;
            }

            if ($str) {
                $str = trim($str);
                // get response string and code (RFC5530)
                if (preg_match("/^\[([a-z-]+)\]/i", $str, $m)) {
                    $this->resultcode = strtoupper($m[1]);
                    $str = trim(substr($str, strlen($m[1]) + 2));
                }
                else {
                    $this->resultcode = null;
                    // parse response for [APPENDUID 1204196876 3456]
                    if (preg_match("/^\[APPENDUID [0-9]+ ([0-9]+)\]/i", $str, $m)) {
                        $this->data['APPENDUID'] = $m[1];
                    }
                    // parse response for [COPYUID 1204196876 3456:3457 123:124]
                    else if (preg_match("/^\[COPYUID [0-9]+ ([0-9,:]+) ([0-9,:]+)\]/i", $str, $m)) {
                        $this->data['COPYUID'] = [$m[1], $m[2]];
                    }
                }

                $this->result = $str;

                if ($this->errornum != self::ERROR_OK) {
                    $this->error = $err_prefix ? $err_prefix.$str : $str;
                }
            }

            return $this->errornum;
        }

        return self::ERROR_UNKNOWN;
    }

    /**
     * Checks connection stream state.
     *
     * @return bool True if connection is closed
     */
    protected function eof()
    {
        if (!$this->fp) {
            return true;
        }

        // If a connection opened by fsockopen() wasn't closed
        // by the server, feof() will hang.
        $start = microtime(true);

        if (feof($this->fp) ||
            ($this->prefs['timeout'] && (microtime(true) - $start > $this->prefs['timeout']))
        ) {
            $this->closeSocket();
            return true;
        }

        return false;
    }

    /**
     * Closes connection stream.
     */
    protected function closeSocket()
    {
        if ($this->fp) {
            fclose($this->fp);
            $this->fp = null;
        }
    }

    /**
     * Error code/message setter.
     */
    protected function setError($code, $msg = '')
    {
        $this->errornum = $code;
        $this->error    = $msg;

        return $code;
    }

    /**
     * Checks response status.
     * Checks if command response line starts with specified prefix (or * BYE/BAD)
     *
     * @param string $string   Response text
     * @param string $match    Prefix to match with (case-sensitive)
     * @param bool   $error    Enables BYE/BAD checking
     * @param bool   $nonempty Enables empty response checking
     *
     * @return bool True any check is true or connection is closed.
     */
    protected function startsWith($string, $match, $error = false, $nonempty = false)
    {
        if (!$this->fp) {
            return true;
        }

        if (strncmp($string, $match, strlen($match)) == 0) {
            return true;
        }

        if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) {
            if (strtoupper($m[1]) == 'BYE') {
                $this->closeSocket();
            }
            return true;
        }

        if ($nonempty && !strlen($string)) {
            return true;
        }

        return false;
    }

    /**
     * Capabilities checker
     */
    protected function hasCapability($name)
    {
        if (empty($this->capability) || empty($name)) {
            return false;
        }

        if (in_array($name, $this->capability)) {
            return true;
        }
        else if (strpos($name, '=')) {
            return false;
        }

        $result = [];
        foreach ($this->capability as $cap) {
            $entry = explode('=', $cap);
            if ($entry[0] == $name) {
                $result[] = $entry[1];
            }
        }

        return $result ?: false;
    }

    /**
     * Capabilities checker
     *
     * @param string $name Capability name
     *
     * @return mixed Capability values array for key=value pairs, true/false for others
     */
    public function getCapability($name)
    {
        $result = $this->hasCapability($name);

        if (!empty($result)) {
            return $result;
        }
        else if ($this->capability_read) {
            return false;
        }

        // get capabilities (only once) because initial
        // optional CAPABILITY response may differ
        $result = $this->execute('CAPABILITY');

        if ($result[0] == self::ERROR_OK) {
            $this->parseCapability($result[1]);
        }

        $this->capability_read = true;

        return $this->hasCapability($name);
    }

    /**
     * Clears detected server capabilities
     */
    public function clearCapability()
    {
        $this->capability        = [];
        $this->capability_read = false;
    }

    /**
     * DIGEST-MD5/CRAM-MD5/PLAIN Authentication
     *
     * @param string $user Username
     * @param string $pass Password
     * @param string $type Authentication type (PLAIN/CRAM-MD5/DIGEST-MD5)
     *
     * @return resource|int Connection resource on success, error code on error
     */
    protected function authenticate($user, $pass, $type = 'PLAIN')
    {
        if ($type == 'CRAM-MD5' || $type == 'DIGEST-MD5') {
            if ($type == 'DIGEST-MD5' && !class_exists('Auth_SASL')) {
                return $this->setError(self::ERROR_BYE,
                    "The Auth_SASL package is required for DIGEST-MD5 authentication");
            }

            $this->putLine($this->nextTag() . " AUTHENTICATE $type");
            $line = trim($this->readReply());

            if ($line[0] == '+') {
                $challenge = substr($line, 2);
            }
            else {
                return $this->parseResult($line);
            }

            if ($type == 'CRAM-MD5') {
                // RFC2195: CRAM-MD5
                $ipad = '';
                $opad = '';
                $xor  = function($str1, $str2) {
                    $result = '';
                    $size   = strlen($str1);
                    for ($i=0; $i<$size; $i++) {
                        $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
                    }
                    return $result;
                };

                // initialize ipad, opad
                for ($i=0; $i<64; $i++) {
                    $ipad .= chr(0x36);
                    $opad .= chr(0x5C);
                }

                // pad $pass so it's 64 bytes
                $pass = str_pad($pass, 64, chr(0));

                // generate hash
                $hash  = md5($xor($pass, $opad) . pack("H*",
                    md5($xor($pass, $ipad) . base64_decode($challenge))));
                $reply = base64_encode($user . ' ' . $hash);

                // send result
                $this->putLine($reply, true, true);
            }
            else {
                // RFC2831: DIGEST-MD5
                // proxy authorization
                if (!empty($this->prefs['auth_cid'])) {
                    $authc = $this->prefs['auth_cid'];
                    $pass  = $this->prefs['auth_pw'];
                }
                else {
                    $authc = $user;
                    $user  = '';
                }

                $auth_sasl = new Auth_SASL;
                $auth_sasl = $auth_sasl->factory('digestmd5');
                $reply     = base64_encode($auth_sasl->getResponse($authc, $pass,
                    base64_decode($challenge), $this->host, 'imap', $user));

                // send result
                $this->putLine($reply, true, true);
                $line = trim($this->readReply());

                if ($line[0] != '+') {
                    return $this->parseResult($line);
                }

                // check response
                $challenge = substr($line, 2);
                $challenge = base64_decode($challenge);
                if (strpos($challenge, 'rspauth=') === false) {
                    return $this->setError(self::ERROR_BAD,
                        "Unexpected response from server to DIGEST-MD5 response");
                }

                $this->putLine('');
            }

            $line   = $this->readReply();
            $result = $this->parseResult($line);
        }
        else if ($type == 'GSSAPI') {
            if (!extension_loaded('krb5')) {
                return $this->setError(self::ERROR_BYE,
                    "The krb5 extension is required for GSSAPI authentication");
            }

            if (empty($this->prefs['gssapi_cn'])) {
                return $this->setError(self::ERROR_BYE,
                    "The gssapi_cn parameter is required for GSSAPI authentication");
            }

            if (empty($this->prefs['gssapi_context'])) {
                return $this->setError(self::ERROR_BYE,
                    "The gssapi_context parameter is required for GSSAPI authentication");
            }

            putenv('KRB5CCNAME=' . $this->prefs['gssapi_cn']);

            try {
                $ccache = new KRB5CCache();
                $ccache->open($this->prefs['gssapi_cn']);
                $gssapicontext = new GSSAPIContext();
                $gssapicontext->acquireCredentials($ccache);

                $token   = '';
                $success = $gssapicontext->initSecContext($this->prefs['gssapi_context'], null, null, null, $token);
                $token   = base64_encode($token);
            }
            catch (Exception $e) {
                trigger_error($e->getMessage(), E_USER_WARNING);
                return $this->setError(self::ERROR_BYE, "GSSAPI authentication failed");
            }

            $this->putLine($this->nextTag() . " AUTHENTICATE GSSAPI " . $token);
            $line = trim($this->readReply());

            if ($line[0] != '+') {
                return $this->parseResult($line);
            }

            try {
                $itoken = base64_decode(substr($line, 2));

                if (!$gssapicontext->unwrap($itoken, $itoken)) {
                    throw new Exception("GSSAPI SASL input token unwrap failed");
                }

                if (strlen($itoken) < 4) {
                    throw new Exception("GSSAPI SASL input token invalid");
                }

                // Integrity/encryption layers are not supported. The first bit
                // indicates that the server supports "no security layers".
                // 0x00 should not occur, but support broken implementations.
                $server_layers = ord($itoken[0]);
                if ($server_layers && ($server_layers & 0x1) != 0x1) {
                    throw new Exception("Server requires GSSAPI SASL integrity/encryption");
                }

                // Construct output token. 0x01 in the first octet = SASL layer "none",
                // zero in the following three octets = no data follows.
                // See https://github.com/cyrusimap/cyrus-sasl/blob/e41cfb986c1b1935770de554872247453fdbb079/plugins/gssapi.c#L1284
                if (!$gssapicontext->wrap(pack("CCCC", 0x1, 0, 0, 0), $otoken, true)) {
                    throw new Exception("GSSAPI SASL output token wrap failed");
                }
            }
            catch (Exception $e) {
                trigger_error($e->getMessage(), E_USER_WARNING);
                return $this->setError(self::ERROR_BYE, "GSSAPI authentication failed");
            }

            $this->putLine(base64_encode($otoken));

            $line   = $this->readReply();
            $result = $this->parseResult($line);
        }
        else if ($type == 'PLAIN') {
            // proxy authorization
            if (!empty($this->prefs['auth_cid'])) {
                $authc = $this->prefs['auth_cid'];
                $pass  = $this->prefs['auth_pw'];
            }
            else {
                $authc = $user;
                $user  = '';
            }

            $reply = base64_encode($user . chr(0) . $authc . chr(0) . $pass);

            // RFC 4959 (SASL-IR): save one round trip
            if ($this->getCapability('SASL-IR')) {
                list($result, $line) = $this->execute("AUTHENTICATE PLAIN", [$reply],
                    self::COMMAND_LASTLINE | self::COMMAND_CAPABILITY | self::COMMAND_ANONYMIZED);
            }
            else {
                $this->putLine($this->nextTag() . " AUTHENTICATE PLAIN");
                $line = trim($this->readReply());

                if ($line[0] != '+') {
                    return $this->parseResult($line);
                }

                // send result, get reply and process it
                $this->putLine($reply, true, true);
                $line   = $this->readReply();
                $result = $this->parseResult($line);
            }
        }
        else if ($type == 'LOGIN') {
            $this->putLine($this->nextTag() . " AUTHENTICATE LOGIN");

            $line = trim($this->readReply());
            if ($line[0] != '+') {
                return $this->parseResult($line);
            }

            $this->putLine(base64_encode($user), true, true);

            $line = trim($this->readReply());
            if ($line[0] != '+') {
                return $this->parseResult($line);
            }

            // send result, get reply and process it
            $this->putLine(base64_encode($pass), true, true);

            $line   = $this->readReply();
            $result = $this->parseResult($line);
        }
        else if ($type == 'XOAUTH2') {
            $auth = base64_encode("user=$user\1auth=$pass\1\1");
            $this->putLine($this->nextTag() . " AUTHENTICATE XOAUTH2 $auth", true, true);

            $line = trim($this->readReply());

            if ($line[0] == '+') {
                // send empty line
                $this->putLine('', true, true);
                $line = $this->readReply();
            }

            $result = $this->parseResult($line);
        }
        else {
            $line  = 'not supported';
            $result = self::ERROR_UNKNOWN;
        }

        if ($result === self::ERROR_OK) {
            // optional CAPABILITY response
            if ($line && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
                $this->parseCapability($matches[1], true);
            }

            return $this->fp;
        }

        return $this->setError($result, "AUTHENTICATE $type: $line");
    }

    /**
     * LOGIN Authentication
     *
     * @param string $user     Username
     * @param string $password Password
     *
     * @return resource|int Connection resource on success, error code on error
     */
    protected function login($user, $password)
    {
        // Prevent from sending credentials in plain text when connection is not secure
        if ($this->getCapability('LOGINDISABLED')) {
            return $this->setError(self::ERROR_BAD, "Login disabled by IMAP server");
        }

        list($code, $response) = $this->execute('LOGIN', [$this->escape($user, true), $this->escape($password, true)],
            self::COMMAND_CAPABILITY | self::COMMAND_ANONYMIZED);

        // re-set capabilities list if untagged CAPABILITY response provided
        if (preg_match('/\* CAPABILITY (.+)/i', $response, $matches)) {
            $this->parseCapability($matches[1], true);
        }

        if ($code == self::ERROR_OK) {
            return $this->fp;
        }

        return $code;
    }

    /**
     * Detects hierarchy delimiter
     *
     * @return string The delimiter
     */
    public function getHierarchyDelimiter()
    {
        if (!empty($this->prefs['delimiter'])) {
            return $this->prefs['delimiter'];
        }

        // try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8)
        list($code, $response) = $this->execute('LIST', [$this->escape(''), $this->escape('')]);

        if ($code == self::ERROR_OK) {
            $args = $this->tokenizeResponse($response, 4);
            $delimiter = $args[3];

            if (strlen($delimiter) > 0) {
                return ($this->prefs['delimiter'] = $delimiter);
            }
        }
    }

    /**
     * NAMESPACE handler (RFC 2342)
     *
     * @return array Namespace data hash (personal, other, shared)
     */
    public function getNamespace()
    {
        if (array_key_exists('namespace', $this->prefs)) {
            return $this->prefs['namespace'];
        }

        if (!$this->getCapability('NAMESPACE')) {
            return self::ERROR_BAD;
        }

        list($code, $response) = $this->execute('NAMESPACE');

        if ($code == self::ERROR_OK && preg_match('/^\* NAMESPACE /', $response)) {
            $response = substr($response, 11);
            $data     = $this->tokenizeResponse($response);
        }

        if (!isset($data) || !is_array($data)) {
            return $code;
        }

        $this->prefs['namespace'] = [
            'personal' => $data[0],
            'other'    => $data[1],
            'shared'   => $data[2],
        ];

        return $this->prefs['namespace'];
    }

    /**
     * Connects to IMAP server and authenticates.
     *
     * @param string $host     Server hostname or IP
     * @param string $user     User name
     * @param string $password Password
     * @param array  $options  Connection and class options
     *
     * @return bool True on success, False on failure
     */
    public function connect($host, $user, $password, $options = [])
    {
        // configure
        $this->set_prefs($options);

        $this->host     = $host;
        $this->user     = $user;
        $this->logged   = false;
        $this->selected = null;

        // check input
        if (empty($host)) {
            $this->setError(self::ERROR_BAD, "Empty host");
            return false;
        }

        if (empty($user)) {
            $this->setError(self::ERROR_NO, "Empty user");
            return false;
        }

        if (empty($password) && empty($options['gssapi_cn'])) {
            $this->setError(self::ERROR_NO, "Empty password");
            return false;
        }

        // Connect
        if (!$this->_connect($host)) {
            return false;
        }

        // Send pre authentication ID info (#7860)
        if (!empty($this->prefs['preauth_ident']) && $this->getCapability('ID')) {
            $this->data['ID'] = $this->id($this->prefs['preauth_ident']);
        }

        $auth_method  = $this->prefs['auth_type'];
        $auth_methods = [];
        $result       = null;

        // check for supported auth methods
        if (!$auth_method || $auth_method == 'CHECK') {
            if ($auth_caps = $this->getCapability('AUTH')) {
                $auth_methods = $auth_caps;
            }

            // Use best (for security) supported authentication method
            $all_methods = ['DIGEST-MD5', 'CRAM-MD5', 'CRAM_MD5', 'PLAIN', 'LOGIN'];

            if (!empty($this->prefs['gssapi_cn'])) {
                array_unshift($all_methods, 'GSSAPI');
            }

            foreach ($all_methods as $auth_method) {
                if (in_array($auth_method, $auth_methods)) {
                    break;
                }
            }

            // Prefer LOGIN over AUTHENTICATE LOGIN for performance reasons
            if ($auth_method == 'LOGIN' && !$this->getCapability('LOGINDISABLED')) {
                $auth_method = 'IMAP';
            }
        }

        // pre-login capabilities can be not complete
        $this->capability_read = false;

        // Authenticate
        switch ($auth_method) {
            case 'CRAM_MD5':
                $auth_method = 'CRAM-MD5';
            case 'CRAM-MD5':
            case 'DIGEST-MD5':
            case 'GSSAPI':
            case 'PLAIN':
            case 'LOGIN':
            case 'XOAUTH2':
                $result = $this->authenticate($user, $password, $auth_method);
                break;

            case 'IMAP':
                $result = $this->login($user, $password);
                break;

            default:
                $this->setError(self::ERROR_BAD, "Configuration error. Unknown auth method: $auth_method");
        }

        // Connected and authenticated
        if (is_resource($result)) {
            if (!empty($this->prefs['force_caps'])) {
                $this->clearCapability();
            }

            $this->logged = true;

            // Send ID info after authentication to ensure reliable result (#7517)
            if (!empty($this->prefs['ident']) && $this->getCapability('ID')) {
                $this->data['ID'] = $this->id($this->prefs['ident']);
            }

            return true;
        }

        $this->closeConnection();

        return false;
    }

    /**
     * Connects to IMAP server.
     *
     * @param string $host Server hostname or IP
     *
     * @return bool True on success, False on failure
     */
    protected function _connect($host)
    {
        // initialize connection
        $this->error    = '';
        $this->errornum = self::ERROR_OK;

        $port     = empty($this->prefs['port']) ? 143 : $this->prefs['port'];
        $ssl_mode = $this->prefs['ssl_mode'] ?? null;

        // check for SSL
        if (!empty($ssl_mode) && $ssl_mode != 'tls') {
            $host = $ssl_mode . '://' . $host;
        }

        if (empty($this->prefs['timeout']) || $this->prefs['timeout'] < 0) {
            $this->prefs['timeout'] = max(0, intval(ini_get('default_socket_timeout')));
        }

        if ($this->debug) {
            // set connection identifier for debug output
            $this->resourceid = strtoupper(substr(md5(microtime() . $host . $this->user), 0, 4));

            $_host = ($ssl_mode == 'tls' ? 'tls://' : '') . $host . ':' . $port;
            $this->debug("Connecting to $_host...");
        }

        if (!empty($this->prefs['socket_options'])) {
            $options  = array_intersect_key($this->prefs['socket_options'], ['ssl' => 1]);
            $context  = stream_context_create($options);
            $this->fp = stream_socket_client($host . ':' . $port, $errno, $errstr,
                $this->prefs['timeout'], STREAM_CLIENT_CONNECT, $context);
        }
        else {
            $this->fp = @fsockopen($host, $port, $errno, $errstr, $this->prefs['timeout']);
        }

        if (!$this->fp) {
            $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s",
                $host, $port, $errstr ?: "Unknown reason"));

            return false;
        }

        if ($this->prefs['timeout'] > 0) {
            stream_set_timeout($this->fp, $this->prefs['timeout']);
        }

        $line = trim(fgets($this->fp, 8192));

        if ($this->debug && $line) {
            $this->debug('S: '. $line);
        }

        // Connected to wrong port or connection error?
        if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) {
            if ($line) {
                $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $port, $line);
            }
            else {
                $error = sprintf("Empty startup greeting (%s:%d)", $host, $port);
            }

            $this->setError(self::ERROR_BAD, $error);
            $this->closeConnection();
            return false;
        }

        $this->data['GREETING'] = trim(preg_replace('/\[[^\]]+\]\s*/', '', $line));

        // RFC3501 [7.1] optional CAPABILITY response
        if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
            $this->parseCapability($matches[1], true);
        }

        // TLS connection
        if ($ssl_mode == 'tls' && $this->getCapability('STARTTLS')) {
            $res = $this->execute('STARTTLS');

            if (empty($res) || $res[0] != self::ERROR_OK) {
                $this->closeConnection();
                return false;
            }

            if (isset($this->prefs['socket_options']['ssl']['crypto_method'])) {
                $crypto_method = $this->prefs['socket_options']['ssl']['crypto_method'];
            }
            else {
                // There is no flag to enable all TLS methods. Net_SMTP
                // handles enabling TLS similarly.
                $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT
                    | @STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
                    | @STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
            }

            if (!stream_socket_enable_crypto($this->fp, true, $crypto_method)) {
                $this->setError(self::ERROR_BAD, "Unable to negotiate TLS");
                $this->closeConnection();
                return false;
            }

            // Now we're secure, capabilities need to be reread
            $this->clearCapability();
        }

        return true;
    }

    /**
     * Initializes environment
     */
    protected function set_prefs($prefs)
    {
        // set preferences
        if (is_array($prefs)) {
            $this->prefs = $prefs;
        }

        // set auth method
        if (!empty($this->prefs['auth_type'])) {
            $this->prefs['auth_type'] = strtoupper($this->prefs['auth_type']);
        }
        else {
            $this->prefs['auth_type'] = 'CHECK';
        }

        // disabled capabilities
        if (!empty($this->prefs['disabled_caps'])) {
            $this->prefs['disabled_caps'] = array_map('strtoupper', (array)$this->prefs['disabled_caps']);
        }

        // additional message flags
        if (!empty($this->prefs['message_flags'])) {
            $this->flags = array_merge($this->flags, $this->prefs['message_flags']);
            unset($this->prefs['message_flags']);
        }
    }

    /**
     * Checks connection status
     *
     * @return bool True if connection is active and user is logged in, False otherwise.
     */
    public function connected()
    {
        return $this->fp && $this->logged;
    }

    /**
     * Closes connection with logout.
     */
    public function closeConnection()
    {
        if ($this->logged && $this->putLine($this->nextTag() . ' LOGOUT')) {
            $this->readReply();
        }

        $this->closeSocket();
        $this->clearCapability();
    }

    /**
     * Executes SELECT command (if mailbox is already not in selected state)
     *
     * @param string $mailbox      Mailbox name
     * @param array  $qresync_data QRESYNC data (RFC5162)
     *
     * @return bool True on success, false on error
     */
    public function select($mailbox, $qresync_data = null)
    {
        if (!strlen($mailbox)) {
            return false;
        }

        if ($this->selected === $mailbox) {
            return true;
        }

        $params = [$this->escape($mailbox)];

        // QRESYNC data items
        //    0. the last known UIDVALIDITY,
        //    1. the last known modification sequence,
        //    2. the optional set of known UIDs, and
        //    3. an optional parenthesized list of known sequence ranges and their
        //       corresponding UIDs.
        if (!empty($qresync_data)) {
            if (!empty($qresync_data[2])) {
                $qresync_data[2] = self::compressMessageSet($qresync_data[2]);
            }

            $params[] = ['QRESYNC', $qresync_data];
        }

        list($code, $response) = $this->execute('SELECT', $params);

        if ($code == self::ERROR_OK) {
            $this->clear_mailbox_cache();

            $response = explode("\r\n", $response);
            foreach ($response as $line) {
                if (preg_match('/^\* OK \[/i', $line)) {
                    $pos   = strcspn($line, ' ]', 6);
                    $token = strtoupper(substr($line, 6, $pos));
                    $pos   += 7;

                    switch ($token) {
                    case 'UIDNEXT':
                    case 'UIDVALIDITY':
                    case 'UNSEEN':
                        if ($len = strspn($line, '0123456789', $pos)) {
                            $this->data[$token] = (int) substr($line, $pos, $len);
                        }
                        break;

                    case 'HIGHESTMODSEQ':
                        if ($len = strspn($line, '0123456789', $pos)) {
                            $this->data[$token] = (string) substr($line, $pos, $len);
                        }
                        break;

                    case 'NOMODSEQ':
                        $this->data[$token] = true;
                        break;

                    case 'PERMANENTFLAGS':
                        $start = strpos($line, '(', $pos);
                        $end   = strrpos($line, ')');
                        if ($start && $end) {
                            $flags = substr($line, $start + 1, $end - $start - 1);
                            $this->data[$token] = explode(' ', $flags);
                        }
                        break;
                    }
                }
                else if (preg_match('/^\* ([0-9]+) (EXISTS|RECENT|FETCH)/i', $line, $match)) {
                    $token = strtoupper($match[2]);
                    switch ($token) {
                    case 'EXISTS':
                    case 'RECENT':
                        $this->data[$token] = (int) $match[1];
                        break;

                    case 'FETCH':
                        // QRESYNC FETCH response (RFC5162)
                        $line       = substr($line, strlen($match[0]));
                        $fetch_data = $this->tokenizeResponse($line, 1);
                        $data       = ['id' => $match[1]];

                        for ($i=0, $size=count($fetch_data); $i<$size; $i+=2) {
                            $data[strtolower($fetch_data[$i])] = $fetch_data[$i+1];
                        }

                        $this->data['QRESYNC'][$data['uid']] = $data;
                        break;
                    }
                }
                // QRESYNC VANISHED response (RFC5162)
                else if (preg_match('/^\* VANISHED [()EARLIER]*/i', $line, $match)) {
                    $line   = substr($line, strlen($match[0]));
                    $v_data = $this->tokenizeResponse($line, 1);

                    $this->data['VANISHED'] = $v_data;
                }
            }

            $this->data['READ-WRITE'] = $this->resultcode != 'READ-ONLY';
            $this->selected = $mailbox;

            return true;
        }

        return false;
    }

    /**
     * Executes STATUS command
     *
     * @param string $mailbox Mailbox name
     * @param array  $items   Additional requested item names. By default
     *                        MESSAGES and UNSEEN are requested. Other defined
     *                        in RFC3501: UIDNEXT, UIDVALIDITY, RECENT
     *
     * @return array Status item-value hash
     * @since 0.5-beta
     */
    public function status($mailbox, $items = [])
    {
        if (!strlen($mailbox)) {
            return false;
        }

        if (!in_array('MESSAGES', $items)) {
            $items[] = 'MESSAGES';
        }
        if (!in_array('UNSEEN', $items)) {
            $items[] = 'UNSEEN';
        }

        list($code, $response) = $this->execute('STATUS',
            [$this->escape($mailbox), '(' . implode(' ', $items) . ')'], 0, '/^\* STATUS /i');

        if ($code == self::ERROR_OK && $response) {
            $result   = [];
            $response = substr($response, 9); // remove prefix "* STATUS "

            list($mbox, $items) = $this->tokenizeResponse($response, 2);

            // Fix for #1487859. Some buggy server returns not quoted
            // folder name with spaces. Let's try to handle this situation
            if (!is_array($items) && ($pos = strpos($response, '(')) !== false) {
                $response = substr($response, $pos);
                $items    = $this->tokenizeResponse($response, 1);
            }

            if (!is_array($items)) {
                return $result;
            }

            for ($i=0, $len=count($items); $i<$len; $i += 2) {
                $result[$items[$i]] = $items[$i+1];
            }

            $this->data['STATUS:'.$mailbox] = $result;

            return $result;
        }

        return false;
    }

    /**
     * Executes EXPUNGE command
     *
     * @param string       $mailbox  Mailbox name
     * @param string|array $messages Message UIDs to expunge
     *
     * @return bool True on success, False on error
     */
    public function expunge($mailbox, $messages = null)
    {
        if (!$this->select($mailbox)) {
            return false;
        }

        if (empty($this->data['READ-WRITE'])) {
            $this->setError(self::ERROR_READONLY, "Mailbox is read-only");
            return false;
        }

        // Clear internal status cache
        $this->clear_status_cache($mailbox);

        if (!empty($messages) && $messages != '*' && $this->hasCapability('UIDPLUS')) {
            $messages = self::compressMessageSet($messages);
            $result   = $this->execute('UID EXPUNGE', [$messages], self::COMMAND_NORESPONSE);
        }
        else {
            $result = $this->execute('EXPUNGE', null, self::COMMAND_NORESPONSE);
        }

        if ($result == self::ERROR_OK) {
            $this->selected = null; // state has changed, need to reselect
            return true;
        }

        return false;
    }

    /**
     * Executes CLOSE command
     *
     * @return bool True on success, False on error
     * @since 0.5
     */
    public function close()
    {
        $result = $this->execute('CLOSE', null, self::COMMAND_NORESPONSE);

        if ($result == self::ERROR_OK) {
            $this->selected = null;
            return true;
        }

        return false;
    }

    /**
     * Folder subscription (SUBSCRIBE)
     *
     * @param string $mailbox Mailbox name
     *
     * @return bool True on success, False on error
     */
    public function subscribe($mailbox)
    {
        $result = $this->execute('SUBSCRIBE', [$this->escape($mailbox)], self::COMMAND_NORESPONSE);

        return $result == self::ERROR_OK;
    }

    /**
     * Folder unsubscription (UNSUBSCRIBE)
     *
     * @param string $mailbox Mailbox name
     *
     * @return bool True on success, False on error
     */
    public function unsubscribe($mailbox)
    {
        $result = $this->execute('UNSUBSCRIBE', [$this->escape($mailbox)], self::COMMAND_NORESPONSE);

        return $result == self::ERROR_OK;
    }

    /**
     * Folder creation (CREATE)
     *
     * @param string $mailbox Mailbox name
     * @param array  $types   Optional folder types (RFC 6154)
     *
     * @return bool True on success, False on error
     */
    public function createFolder($mailbox, $types = null)
    {
        $args = [$this->escape($mailbox)];

        // RFC 6154: CREATE-SPECIAL-USE
        if (!empty($types) && $this->getCapability('CREATE-SPECIAL-USE')) {
            $args[] = '(USE (' . implode(' ', $types) . '))';
        }

        $result = $this->execute('CREATE', $args, self::COMMAND_NORESPONSE);

        return $result == self::ERROR_OK;
    }

    /**
     * Folder renaming (RENAME)
     *
     * @param string $from Mailbox name
     * @param string $to   Mailbox name
     *
     * @return bool True on success, False on error
     */
    public function renameFolder($from, $to)
    {
        $result = $this->execute('RENAME', [$this->escape($from), $this->escape($to)], self::COMMAND_NORESPONSE);

        return $result == self::ERROR_OK;
    }

    /**
     * Executes DELETE command
     *
     * @param string $mailbox Mailbox name
     *
     * @return bool True on success, False on error
     */
    public function deleteFolder($mailbox)
    {
        // Unselect the folder to prevent "BYE Fatal error: Mailbox has been (re)moved" on Cyrus IMAP
        if ($this->selected === $mailbox && $this->hasCapability('UNSELECT')) {
            $this->execute('UNSELECT', [], self::COMMAND_NORESPONSE);
        }

        $result = $this->execute('DELETE', [$this->escape($mailbox)], self::COMMAND_NORESPONSE);

        return $result == self::ERROR_OK;
    }

    /**
     * Removes all messages in a folder
     *
     * @param string $mailbox Mailbox name
     *
     * @return bool True on success, False on error
     */
    public function clearFolder($mailbox)
    {
        if ($this->countMessages($mailbox) > 0) {
            $res = $this->flag($mailbox, '1:*', 'DELETED');
        }
        else {
            return true;
        }

        if (!empty($res)) {
            if ($this->selected === $mailbox) {
                $res = $this->close();
            }
            else {
                $res = $this->expunge($mailbox);
            }

            return $res;
        }

        return false;
    }

    /**
     * Returns list of mailboxes
     *
     * @param string $ref         Reference name
     * @param string $mailbox     Mailbox name
     * @param array  $return_opts (see self::_listMailboxes)
     * @param array  $select_opts (see self::_listMailboxes)
     *
     * @return array|bool List of mailboxes or hash of options if STATUS/MYRIGHTS response
     *                    is requested, False on error.
     */
    public function listMailboxes($ref, $mailbox, $return_opts = [], $select_opts = [])
    {
        return $this->_listMailboxes($ref, $mailbox, false, $return_opts, $select_opts);
    }

    /**
     * Returns list of subscribed mailboxes
     *
     * @param string $ref         Reference name
     * @param string $mailbox     Mailbox name
     * @param array  $return_opts (see self::_listMailboxes)
     *
     * @return array|bool List of mailboxes or hash of options if STATUS/MYRIGHTS response
     *                    is requested, False on error.
     */
    public function listSubscribed($ref, $mailbox, $return_opts = [])
    {
        return $this->_listMailboxes($ref, $mailbox, true, $return_opts, null);
    }

    /**
     * IMAP LIST/LSUB command
     *
     * @param string $ref         Reference name
     * @param string $mailbox     Mailbox name
     * @param bool   $subscribed  Enables returning subscribed mailboxes only
     * @param array  $return_opts List of RETURN options (RFC5819: LIST-STATUS, RFC5258: LIST-EXTENDED)
     *                            Possible: MESSAGES, RECENT, UIDNEXT, UIDVALIDITY, UNSEEN,
     *                                      MYRIGHTS, SUBSCRIBED, CHILDREN
     * @param array  $select_opts List of selection options (RFC5258: LIST-EXTENDED)
     *                            Possible: SUBSCRIBED, RECURSIVEMATCH, REMOTE,
     *                                      SPECIAL-USE (RFC6154)
     *
     * @return array|bool List of mailboxes or hash of options if STATUS/MYRIGHTS response
     *                    is requested, False on error.
     */
    protected function _listMailboxes($ref, $mailbox, $subscribed = false, $return_opts = [], $select_opts = [])
    {
        if (!strlen($mailbox)) {
            $mailbox = '*';
        }

        $lstatus = false;
        $args    = [];
        $rets    = [];

        if (!empty($select_opts) && $this->getCapability('LIST-EXTENDED')) {
            $select_opts = (array) $select_opts;

            $args[] = '(' . implode(' ', $select_opts) . ')';
        }

        $args[] = $this->escape($ref);
        $args[] = $this->escape($mailbox);

        if (!empty($return_opts) && $this->getCapability('LIST-EXTENDED')) {
            $ext_opts    = ['SUBSCRIBED', 'CHILDREN'];
            $rets        = array_intersect($return_opts, $ext_opts);
            $return_opts = array_diff($return_opts, $rets);
        }

        if (!empty($return_opts) && $this->getCapability('LIST-STATUS')) {
            $lstatus     = true;
            $status_opts = ['MESSAGES', 'RECENT', 'UIDNEXT', 'UIDVALIDITY', 'UNSEEN', 'SIZE'];
            $opts        = array_diff($return_opts, $status_opts);
            $status_opts = array_diff($return_opts, $opts);

            if (!empty($status_opts)) {
                $rets[] = 'STATUS (' . implode(' ', $status_opts) . ')';
            }

            if (!empty($opts)) {
                $rets = array_merge($rets, $opts);
            }
        }

        if (!empty($rets)) {
            $args[] = 'RETURN (' . implode(' ', $rets) . ')';
        }

        list($code, $response) = $this->execute($subscribed ? 'LSUB' : 'LIST', $args);

        if ($code == self::ERROR_OK) {
            $folders  = [];
            $last     = 0;
            $pos      = 0;
            $response .= "\r\n";

            while ($pos = strpos($response, "\r\n", $pos+1)) {
                // literal string, not real end-of-command-line
                if ($response[$pos-1] == '}') {
                    continue;
                }

                $line = substr($response, $last, $pos - $last);
                $last = $pos + 2;

                if (!preg_match('/^\* (LIST|LSUB|STATUS|MYRIGHTS) /i', $line, $m)) {
                    continue;
                }

                $cmd  = strtoupper($m[1]);
                $line = substr($line, strlen($m[0]));

                // * LIST (<options>) <delimiter> <mailbox>
                if ($cmd == 'LIST' || $cmd == 'LSUB') {
                    list($opts, $delim, $mailbox) = $this->tokenizeResponse($line, 3);

                    // Remove redundant separator at the end of folder name, UW-IMAP bug? (#1488879)
                    if ($delim) {
                        $mailbox = rtrim($mailbox, $delim);
                    }

                    // Make it easier for the client to deal with INBOX folder
                    // by always returning the word with all capital letters
                    if (strlen($mailbox) == 5
                        && ($mailbox[0] == 'i' || $mailbox[0] == 'I')
                        && ($mailbox[1] == 'n' || $mailbox[1] == 'N')
                        && ($mailbox[2] == 'b' || $mailbox[2] == 'B')
                        && ($mailbox[3] == 'o' || $mailbox[3] == 'O')
                        && ($mailbox[4] == 'x' || $mailbox[4] == 'X')
                    ) {
                        $mailbox = 'INBOX';
                    }

                    // Add to result array
                    if (!$lstatus) {
                        $folders[] = $mailbox;
                    }
                    else {
                        $folders[$mailbox] = [];
                    }

                    // store folder options
                    if ($cmd == 'LIST') {
                        // Add to options array
                        if (empty($this->data['LIST'][$mailbox])) {
                            $this->data['LIST'][$mailbox] = $opts;
                        }
                        else if (!empty($opts)) {
                            $this->data['LIST'][$mailbox] = array_unique(array_merge(
                                $this->data['LIST'][$mailbox], $opts));
                        }
                    }
                }
                else if ($lstatus) {
                    // * STATUS <mailbox> (<result>)
                    if ($cmd == 'STATUS') {
                        list($mailbox, $status) = $this->tokenizeResponse($line, 2);

                        for ($i=0, $len=count($status); $i<$len; $i += 2) {
                            list($name, $value) = $this->tokenizeResponse($status, 2);
                            $folders[$mailbox][$name] = $value;
                        }
                    }
                    // * MYRIGHTS <mailbox> <acl>
                    else if ($cmd == 'MYRIGHTS') {
                        list($mailbox, $acl)  = $this->tokenizeResponse($line, 2);
                        $folders[$mailbox]['MYRIGHTS'] = $acl;
                    }
                }
            }

            return $folders;
        }

        return false;
    }

    /**
     * Returns count of all messages in a folder
     *
     * @param string $mailbox Mailbox name
     *
     * @return int Number of messages, False on error
     */
    public function countMessages($mailbox)
    {
        if ($this->selected === $mailbox && isset($this->data['EXISTS'])) {
            return $this->data['EXISTS'];
        }

        // Check internal cache
        if (!empty($this->data['STATUS:'.$mailbox])) {
            $cache = $this->data['STATUS:'.$mailbox];
            if (isset($cache['MESSAGES'])) {
                return (int) $cache['MESSAGES'];
            }
        }

        // Try STATUS (should be faster than SELECT)
        $counts = $this->status($mailbox);
        if (is_array($counts)) {
            return (int) $counts['MESSAGES'];
        }

        return false;
    }

    /**
     * Returns count of messages with \Recent flag in a folder
     *
     * @param string $mailbox Mailbox name
     *
     * @return int Number of messages, False on error
     */
    public function countRecent($mailbox)
    {
        if ($this->selected === $mailbox && isset($this->data['RECENT'])) {
            return $this->data['RECENT'];
        }

        // Check internal cache
        $cache = $this->data['STATUS:'.$mailbox];
        if (!empty($cache) && isset($cache['RECENT'])) {
            return (int) $cache['RECENT'];
        }

        // Try STATUS (should be faster than SELECT)
        $counts = $this->status($mailbox, ['RECENT']);
        if (is_array($counts)) {
            return (int) $counts['RECENT'];
        }

        return false;
    }

    /**
     * Returns count of messages without \Seen flag in a specified folder
     *
     * @param string $mailbox Mailbox name
     *
     * @return int Number of messages, False on error
     */
    public function countUnseen($mailbox)
    {
        // Check internal cache
        if (!empty($this->data['STATUS:'.$mailbox])) {
            $cache = $this->data['STATUS:'.$mailbox];
            if (isset($cache['UNSEEN'])) {
                return (int) $cache['UNSEEN'];
            }
        }

        // Try STATUS (should be faster than SELECT+SEARCH)
        $counts = $this->status($mailbox);
        if (is_array($counts)) {
            return (int) $counts['UNSEEN'];
        }

        // Invoke SEARCH as a fallback
        $index = $this->search($mailbox, 'ALL UNSEEN', false, ['COUNT']);
        if (!$index->is_error()) {
            return $index->count();
        }

        return false;
    }

    /**
     * Executes ID command (RFC2971)
     *
     * @param array $items Client identification information key/value hash
     *
     * @return array|false Server identification information key/value hash, False on error
     * @since 0.6
     */
    public function id($items = [])
    {
        if (is_array($items) && !empty($items)) {
            foreach ($items as $key => $value) {
                $args[] = $this->escape($key, true);
                $args[] = $this->escape($value, true);
            }
        }

        list($code, $response) = $this->execute('ID',
            [!empty($args) ? '(' . implode(' ', (array) $args) . ')' : $this->escape(null)],
            0, '/^\* ID /i'
        );

        if ($code == self::ERROR_OK && $response) {
            $response = substr($response, 5); // remove prefix "* ID "
            $items    = $this->tokenizeResponse($response, 1);
            $result   = [];

            if (is_array($items)) {
                for ($i=0, $len=count($items); $i<$len; $i += 2) {
                    $result[$items[$i]] = $items[$i+1];
                }
            }

            return $result;
        }

        return false;
    }

    /**
     * Executes ENABLE command (RFC5161)
     *
     * @param mixed $extension Extension name to enable (or array of names)
     *
     * @return array|bool List of enabled extensions, False on error
     * @since 0.6
     */
    public function enable($extension)
    {
        if (empty($extension)) {
            return false;
        }

        if (!$this->hasCapability('ENABLE')) {
            return false;
        }

        if (!is_array($extension)) {
            $extension = [$extension];
        }

        if (!empty($this->extensions_enabled)) {
            // check if all extensions are already enabled
            $diff = array_diff($extension, $this->extensions_enabled);

            if (empty($diff)) {
                return $extension;
            }

            // Make sure the mailbox isn't selected, before enabling extension(s)
            if ($this->selected !== null) {
                $this->close();
            }
        }

        list($code, $response) = $this->execute('ENABLE', $extension, 0, '/^\* ENABLED /i');

        if ($code == self::ERROR_OK && $response) {
            $response = substr($response, 10); // remove prefix "* ENABLED "
            $result   = (array) $this->tokenizeResponse($response);

            $this->extensions_enabled = array_unique(array_merge((array)$this->extensions_enabled, $result));

            return $this->extensions_enabled;
        }

        return false;
    }

    /**
     * Executes SORT command
     *
     * @param string $mailbox    Mailbox name
     * @param string $field      Field to sort by (ARRIVAL, CC, DATE, FROM, SIZE, SUBJECT, TO)
     * @param string $criteria   Searching criteria
     * @param bool   $return_uid Enables UID SORT usage
     * @param string $encoding   Character set
     *
     * @return rcube_result_index Response data
     */
    public function sort($mailbox, $field = 'ARRIVAL', $criteria = '', $return_uid = false, $encoding = 'US-ASCII')
    {
        $old_sel   = $this->selected;
        $supported = ['ARRIVAL', 'CC', 'DATE', 'FROM', 'SIZE', 'SUBJECT', 'TO'];
        $field     = strtoupper($field);

        if ($field == 'INTERNALDATE') {
            $field = 'ARRIVAL';
        }

        if (!in_array($field, $supported)) {
            return new rcube_result_index($mailbox);
        }

        if (!$this->select($mailbox)) {
            return new rcube_result_index($mailbox);
        }

        // return empty result when folder is empty and we're just after SELECT
        if ($old_sel != $mailbox && empty($this->data['EXISTS'])) {
            return new rcube_result_index($mailbox, '* SORT');
        }

        // RFC 5957: SORT=DISPLAY
        if (($field == 'FROM' || $field == 'TO') && $this->getCapability('SORT=DISPLAY')) {
            $field = 'DISPLAY' . $field;
        }

        $encoding = $encoding ? trim($encoding) : 'US-ASCII';
        $criteria = $criteria ? 'ALL ' . trim($criteria) : 'ALL';

        list($code, $response) = $this->execute($return_uid ? 'UID SORT' : 'SORT',
            ["($field)", $encoding, $criteria]);

        if ($code != self::ERROR_OK) {
            $response = null;
        }

        return new rcube_result_index($mailbox, $response);
    }

    /**
     * Executes THREAD command
     *
     * @param string $mailbox    Mailbox name
     * @param string $algorithm  Threading algorithm (ORDEREDSUBJECT, REFERENCES, REFS)
     * @param string $criteria   Searching criteria
     * @param bool   $return_uid Enables UIDs in result instead of sequence numbers
     * @param string $encoding   Character set
     *
     * @return rcube_result_thread Thread data
     */
    public function thread($mailbox, $algorithm = 'REFERENCES', $criteria = '', $return_uid = false, $encoding = 'US-ASCII')
    {
        $old_sel = $this->selected;

        if (!$this->select($mailbox)) {
            return new rcube_result_thread($mailbox);
        }

        // return empty result when folder is empty and we're just after SELECT
        if ($old_sel != $mailbox && !$this->data['EXISTS']) {
            return new rcube_result_thread($mailbox, '* THREAD');
        }

        $encoding  = $encoding ? trim($encoding) : 'US-ASCII';
        $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES';
        $criteria  = $criteria ? 'ALL '.trim($criteria) : 'ALL';

        list($code, $response) = $this->execute($return_uid ? 'UID THREAD' : 'THREAD',
            [$algorithm, $encoding, $criteria]);

        if ($code != self::ERROR_OK) {
            $response = null;
        }

        return new rcube_result_thread($mailbox, $response);
    }

    /**
     * Executes SEARCH command
     *
     * @param string $mailbox    Mailbox name
     * @param string $criteria   Searching criteria
     * @param bool   $return_uid Enable UID in result instead of sequence ID
     * @param array  $items      Return items (MIN, MAX, COUNT, ALL)
     *
     * @return rcube_result_index Result data
     */
    public function search($mailbox, $criteria, $return_uid = false, $items = [])
    {
        $old_sel = $this->selected;

        if (!$this->select($mailbox)) {
            return new rcube_result_index($mailbox);
        }

        // return empty result when folder is empty and we're just after SELECT
        if ($old_sel != $mailbox && !$this->data['EXISTS']) {
            return new rcube_result_index($mailbox, '* SEARCH');
        }

        // If ESEARCH is supported always use ALL
        // but not when items are specified or using simple id2uid search
        if (empty($items) && preg_match('/[^0-9]/', $criteria)) {
            $items = ['ALL'];
        }

        $esearch  = empty($items) ? false : $this->getCapability('ESEARCH');
        $criteria = trim($criteria);
        $params   = '';

        // RFC4731: ESEARCH
        if (!empty($items) && $esearch) {
            $params .= 'RETURN (' . implode(' ', $items) . ')';
        }

        if (!empty($criteria)) {
            $params .= ($params ? ' ' : '') . $criteria;
        }
        else {
            $params .= 'ALL';
        }

        list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH', [$params]);

        if ($code != self::ERROR_OK) {
            $response = null;
        }

        return new rcube_result_index($mailbox, $response);
    }

    /**
     * Simulates SORT command by using FETCH and sorting.
     *
     * @param string       $mailbox      Mailbox name
     * @param string|array $message_set  Searching criteria (list of messages to return)
     * @param string       $index_field  Field to sort by (ARRIVAL, CC, DATE, FROM, SIZE, SUBJECT, TO)
     * @param bool         $skip_deleted Makes that DELETED messages will be skipped
     * @param bool         $uidfetch     Enables UID FETCH usage
     * @param bool         $return_uid   Enables returning UIDs instead of IDs
     *
     * @return rcube_result_index Response data
     */
    public function index($mailbox, $message_set, $index_field = '', $skip_deleted = true,
        $uidfetch = false, $return_uid = false)
    {
        $msg_index = $this->fetchHeaderIndex($mailbox, $message_set,
            $index_field, $skip_deleted, $uidfetch, $return_uid);

        if (!empty($msg_index)) {
            asort($msg_index); // ASC
            $msg_index = array_keys($msg_index);
            $msg_index = '* SEARCH ' . implode(' ', $msg_index);
        }
        else {
            $msg_index = is_array($msg_index) ? '* SEARCH' : null;
        }

        return new rcube_result_index($mailbox, $msg_index);
    }

    /**
     * Fetches specified header/data value for a set of messages.
     *
     * @param string       $mailbox      Mailbox name
     * @param string|array $message_set  Searching criteria (list of messages to return)
     * @param string       $index_field  Field to sort by (ARRIVAL, CC, DATE, FROM, SIZE, SUBJECT, TO)
     * @param bool         $skip_deleted Makes that DELETED messages will be skipped
     * @param bool         $uidfetch     Enables UID FETCH usage
     * @param bool         $return_uid   Enables returning UIDs instead of IDs
     *
     * @return array|bool List of header values or False on failure
     */
    public function fetchHeaderIndex($mailbox, $message_set, $index_field = '', $skip_deleted = true,
        $uidfetch = false, $return_uid = false)
    {
        // Validate input
        if (is_array($message_set)) {
            if (!($message_set = $this->compressMessageSet($message_set))) {
                return false;
            }
        }
        else if (empty($message_set)) {
            return false;
        }
        else if (strpos($message_set, ':')) {
            list($from_idx, $to_idx) = explode(':', $message_set);
            if ($to_idx != '*' && (int) $from_idx > (int) $to_idx) {
                return false;
            }
        }

        $index_field = empty($index_field) ? 'DATE' : strtoupper($index_field);

        $supported = [
            'DATE'         => 1,
            'INTERNALDATE' => 4,
            'ARRIVAL'      => 4,
            'FROM'         => 1,
            'REPLY-TO'     => 1,
            'SENDER'       => 1,
            'TO'           => 1,
            'CC'           => 1,
            'SUBJECT'      => 1,
            'UID'          => 2,
            'SIZE'         => 2,
            'SEEN'         => 3,
            'RECENT'       => 3,
            'DELETED'      => 3,
        ];

        if (empty($supported[$index_field])) {
            return false;
        }

        $mode = $supported[$index_field];

        //  Select the mailbox
        if (!$this->select($mailbox)) {
            return false;
        }

        // build FETCH command string
        $key    = $this->nextTag();
        $cmd    = $uidfetch ? 'UID FETCH' : 'FETCH';
        $fields = [];

        if ($return_uid) {
            $fields[] = 'UID';
        }
        if ($skip_deleted) {
            $fields[] = 'FLAGS';
        }

        if ($mode == 1) {
            if ($index_field == 'DATE') {
                $fields[] = 'INTERNALDATE';
            }
            $fields[] = "BODY.PEEK[HEADER.FIELDS ($index_field)]";
        }
        else if ($mode == 2) {
            if ($index_field == 'SIZE') {
                $fields[] = 'RFC822.SIZE';
            }
            else if (!$return_uid || $index_field != 'UID') {
                $fields[] = $index_field;
            }
        }
        else if ($mode == 3 && !$skip_deleted) {
            $fields[] = 'FLAGS';
        }
        else if ($mode == 4) {
            $fields[] = 'INTERNALDATE';
        }

        $request = "$key $cmd $message_set (" . implode(' ', $fields) . ")";

        if (!$this->putLine($request)) {
            $this->setError(self::ERROR_COMMAND, "Failed to send $cmd command");
            return false;
        }

        $result = [];

        do {
            $line = rtrim($this->readLine(200));
            $line = $this->multLine($line);

            if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) {
                $id     = $m[1];
                $flags  = null;

                if ($return_uid) {
                    if (preg_match('/UID ([0-9]+)/', $line, $matches)) {
                        $id = (int) $matches[1];
                    }
                    else {
                        continue;
                    }
                }

                if ($skip_deleted && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
                    $flags = explode(' ', strtoupper($matches[1]));
                    if (in_array('\\DELETED', $flags)) {
                        continue;
                    }
                }

                if ($mode == 1 && $index_field == 'DATE') {
                    if (preg_match('/BODY\[HEADER\.FIELDS \("*DATE"*\)\] (.*)/', $line, $matches)) {
                        $value = preg_replace(['/^"*[a-z]+:/i'], '', $matches[1]);
                        $value = trim($value);
                        $result[$id] = rcube_utils::strtotime($value);
                    }
                    // non-existent/empty Date: header, use INTERNALDATE
                    if (empty($result[$id])) {
                        if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) {
                            $result[$id] = rcube_utils::strtotime($matches[1]);
                        }
                        else {
                            $result[$id] = 0;
                        }
                    }
                }
                else if ($mode == 1) {
                    if (preg_match('/BODY\[HEADER\.FIELDS \("?(FROM|REPLY-TO|SENDER|TO|SUBJECT)"?\)\] (.*)/', $line, $matches)) {
                        $value = preg_replace(['/^"*[a-z]+:/i', '/\s+$/sm'], ['', ''], $matches[2]);
                        $result[$id] = trim($value);
                    }
                    else {
                        $result[$id] = '';
                    }
                }
                else if ($mode == 2) {
                    if (preg_match('/' . $index_field . ' ([0-9]+)/', $line, $matches)) {
                        $result[$id] = trim($matches[1]);
                    }
                    else {
                        $result[$id] = 0;
                    }
                }
                else if ($mode == 3) {
                    if (!$flags && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) {
                        $flags = explode(' ', $matches[1]);
                    }
                    $result[$id] = in_array("\\".$index_field, (array) $flags) ? 1 : 0;
                }
                else if ($mode == 4) {
                    if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) {
                        $result[$id] = rcube_utils::strtotime($matches[1]);
                    }
                    else {
                        $result[$id] = 0;
                    }
                }
            }
        }
        while (!$this->startsWith($line, $key, true, true));

        return $result;
    }

    /**
     * Returns message sequence identifier
     *
     * @param string $mailbox Mailbox name
     * @param int    $uid     Message unique identifier (UID)
     *
     * @return int Message sequence identifier
     */
    public function UID2ID($mailbox, $uid)
    {
        if ($uid > 0) {
            $index = $this->search($mailbox, "UID $uid");

            if ($index->count() == 1) {
                $arr = $index->get();
                return (int) $arr[0];
            }
        }
    }

    /**
     * Returns message unique identifier (UID)
     *
     * @param string $mailbox Mailbox name
     * @param int    $id      Message sequence identifier
     *
     * @return int Message unique identifier
     */
    public function ID2UID($mailbox, $id)
    {
        if (empty($id) || $id < 0) {
            return null;
        }

        if (!$this->select($mailbox)) {
            return null;
        }

        if (!empty($this->data['UID-MAP'][$id])) {
            return $this->data['UID-MAP'][$id];
        }

        if (isset($this->data['EXISTS']) && $id > $this->data['EXISTS']) {
            return null;
        }

        $index = $this->search($mailbox, $id, true);

        if ($index->count() == 1) {
            $arr = $index->get();
            return $this->data['UID-MAP'][$id] = (int) $arr[0];
        }
    }

    /**
     * Sets flag of the message(s)
     *
     * @param string       $mailbox  Mailbox name
     * @param string|array $messages Message UID(s)
     * @param string       $flag     Flag name
     *
     * @return bool True on success, False on failure
     */
    public function flag($mailbox, $messages, $flag)
    {
        return $this->modFlag($mailbox, $messages, $flag, '+');
    }

    /**
     * Unsets flag of the message(s)
     *
     * @param string       $mailbox  Mailbox name
     * @param string|array $messages Message UID(s)
     * @param string       $flag     Flag name
     *
     * @return bool True on success, False on failure
     */
    public function unflag($mailbox, $messages, $flag)
    {
        return $this->modFlag($mailbox, $messages, $flag, '-');
    }

    /**
     * Changes flag of the message(s)
     *
     * @param string       $mailbox  Mailbox name
     * @param string|array $messages Message UID(s)
     * @param string       $flag     Flag name
     * @param string       $mod      Modifier [+|-]. Default: "+".
     *
     * @return bool True on success, False on failure
     */
    protected function modFlag($mailbox, $messages, $flag, $mod = '+')
    {
        if (!$flag) {
            return false;
        }

        if (!$this->select($mailbox)) {
            return false;
        }

        if (empty($this->data['READ-WRITE'])) {
            $this->setError(self::ERROR_READONLY, "Mailbox is read-only");
            return false;
        }

        if (!empty($this->flags[strtoupper($flag)])) {
            $flag = $this->flags[strtoupper($flag)];
        }

        // if PERMANENTFLAGS is not specified all flags are allowed
        if (!empty($this->data['PERMANENTFLAGS'])
            && !in_array($flag, (array) $this->data['PERMANENTFLAGS'])
            && !in_array('\\*', (array) $this->data['PERMANENTFLAGS'])
        ) {
            return false;
        }

        // Clear internal status cache
        if ($flag == 'SEEN') {
            unset($this->data['STATUS:'.$mailbox]['UNSEEN']);
        }

        if ($mod != '+' && $mod != '-') {
            $mod = '+';
        }

        $result = $this->execute('UID STORE',
            [$this->compressMessageSet($messages), $mod . 'FLAGS.SILENT', "($flag)"],
            self::COMMAND_NORESPONSE
        );

        return $result == self::ERROR_OK;
    }

    /**
     * Copies message(s) from one folder to another
     *
     * @param string|array $messages Message UID(s)
     * @param string       $from     Mailbox name
     * @param string       $to       Destination mailbox name
     *
     * @return bool True on success, False on failure
     */
    public function copy($messages, $from, $to)
    {
        // Clear last COPYUID data
        unset($this->data['COPYUID']);

        if (!$this->select($from)) {
            return false;
        }

        // Clear internal status cache
        unset($this->data['STATUS:'.$to]);

        $result = $this->execute('UID COPY',
            [$this->compressMessageSet($messages), $this->escape($to)],
            self::COMMAND_NORESPONSE
        );

        return $result == self::ERROR_OK;
    }

    /**
     * Moves message(s) from one folder to another.
     *
     * @param string|array $messages Message UID(s)
     * @param string       $from     Mailbox name
     * @param string       $to       Destination mailbox name
     *
     * @return bool True on success, False on failure
     */
    public function move($messages, $from, $to)
    {
        if (!$this->select($from)) {
            return false;
        }

        if (empty($this->data['READ-WRITE'])) {
            $this->setError(self::ERROR_READONLY, "Mailbox is read-only");
            return false;
        }

        // use MOVE command (RFC 6851)
        if ($this->hasCapability('MOVE')) {
            // Clear last COPYUID data
            unset($this->data['COPYUID']);

            // Clear internal status cache
            unset($this->data['STATUS:'.$to]);
            $this->clear_status_cache($from);

            $result = $this->execute('UID MOVE',
                [$this->compressMessageSet($messages), $this->escape($to)],
                self::COMMAND_NORESPONSE
            );

            return $result == self::ERROR_OK;
        }

        // use COPY + STORE +FLAGS.SILENT \Deleted + EXPUNGE
        $result = $this->copy($messages, $from, $to);

        if ($result) {
            // Clear internal status cache
            unset($this->data['STATUS:'.$from]);

            $result = $this->flag($from, $messages, 'DELETED');

            if ($messages == '*') {
                // CLOSE+SELECT should be faster than EXPUNGE
                $this->close();
            }
            else {
                $this->expunge($from, $messages);
            }
        }

        return $result;
    }

    /**
     * FETCH command (RFC3501)
     *
     * @param string $mailbox     Mailbox name
     * @param mixed  $message_set Message(s) sequence identifier(s) or UID(s)
     * @param bool   $is_uid      True if $message_set contains UIDs
     * @param array  $query_items FETCH command data items
     * @param string $mod_seq     Modification sequence for CHANGEDSINCE (RFC4551) query
     * @param bool   $vanished    Enables VANISHED parameter (RFC5162) for CHANGEDSINCE query
     *
     * @return array List of rcube_message_header elements, False on error
     * @since 0.6
     */
    public function fetch($mailbox, $message_set, $is_uid = false, $query_items = [],
        $mod_seq = null, $vanished = false)
    {
        if (!$this->select($mailbox)) {
            return false;
        }

        $message_set = $this->compressMessageSet($message_set);
        $result      = [];

        $key      = $this->nextTag();
        $cmd      = ($is_uid ? 'UID ' : '') . 'FETCH';
        $request  = "$key $cmd $message_set (" . implode(' ', $query_items) . ")";

        if ($mod_seq !== null && $this->hasCapability('CONDSTORE')) {
            $request .= " (CHANGEDSINCE $mod_seq" . ($vanished ? " VANISHED" : '') .")";
        }

        if (!$this->putLine($request)) {
            $this->setError(self::ERROR_COMMAND, "Failed to send $cmd command");
            return false;
        }

        do {
            $line = $this->readFullLine(4096);

            if (!$line) {
                break;
            }

            // Sample reply line:
            // * 321 FETCH (UID 2417 RFC822.SIZE 2730 FLAGS (\Seen)
            // INTERNALDATE "16-Nov-2008 21:08:46 +0100" BODYSTRUCTURE (...)
            // BODY[HEADER.FIELDS ...

            if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) {
                $id = intval($m[1]);

                $result[$id]            = new rcube_message_header;
                $result[$id]->id        = $id;
                $result[$id]->subject   = '';
                $result[$id]->messageID = 'mid:' . $id;

                $headers = null;
                $line    = substr($line, strlen($m[0]) + 2);

                // Tokenize response and assign to object properties
                while (($tokens = $this->tokenizeResponse($line, 2)) && count($tokens) == 2) {
                    list($name, $value) = $tokens;
                    if ($name == 'UID') {
                        $result[$id]->uid = intval($value);
                    }
                    else if ($name == 'RFC822.SIZE') {
                        $result[$id]->size = intval($value);
                    }
                    else if ($name == 'RFC822.TEXT') {
                        $result[$id]->body = $value;
                    }
                    else if ($name == 'INTERNALDATE') {
                        $result[$id]->internaldate = $value;
                        $result[$id]->date         = $value;
                        $result[$id]->timestamp    = rcube_utils::strtotime($value);
                    }
                    else if ($name == 'FLAGS') {
                        if (!empty($value)) {
                            foreach ((array)$value as $flag) {
                                $flag = str_replace(['$', "\\"], '', $flag);
                                $flag = strtoupper($flag);

                                $result[$id]->flags[$flag] = true;
                            }
                        }
                    }
                    else if ($name == 'MODSEQ') {
                        $result[$id]->modseq = $value[0];
                    }
                    else if ($name == 'ENVELOPE') {
                        $result[$id]->envelope = $value;
                    }
                    else if ($name == 'BODYSTRUCTURE' || ($name == 'BODY' && count($value) > 2)) {
                        if (!is_array($value[0]) && (strtolower($value[0]) == 'message' && strtolower($value[1]) == 'rfc822')) {
                            $value = [$value];
                        }
                        $result[$id]->bodystructure = $value;
                    }
                    else if ($name == 'RFC822') {
                        $result[$id]->body = $value;
                    }
                    else if (stripos($name, 'BODY[') === 0) {
                        $name = str_replace(']', '', substr($name, 5));

                        if ($name == 'HEADER.FIELDS') {
                            // skip ']' after headers list
                            $this->tokenizeResponse($line, 1);
                            $headers = $this->tokenizeResponse($line, 1);
                        }
                        else if (strlen($name)) {
                            $result[$id]->bodypart[$name] = $value;
                        }
                        else {
                            $result[$id]->body = $value;
                        }
                    }
                }

                // create array with header field:data
                if (!empty($headers)) {
                    $headers = explode("\n", trim($headers));
                    $lines   = [];
                    $ln      = 0;

                    foreach ($headers as $resln) {
                        if (!isset($resln[0]) || ord($resln[0]) <= 32) {
                            $lines[$ln] = ($lines[$ln] ?? '') . (empty($lines[$ln]) ? '' : "\n") . trim($resln);
                        }
                        else {
                            $lines[++$ln] = trim($resln);
                        }
                    }

                    foreach ($lines as $str) {
                        if (strpos($str, ':') === false) {
                            continue;
                        }

                        list($field, $string) = explode(':', $str, 2);

                        $field  = strtolower($field);
                        $string = preg_replace('/\n[\t\s]*/', ' ', trim($string));

                        switch ($field) {
                        case 'date';
                            $string                 = substr($string, 0, 128);
                            $result[$id]->date      = $string;
                            $result[$id]->timestamp = rcube_utils::strtotime($string);
                            break;
                        case 'to':
                            $result[$id]->to = preg_replace('/undisclosed-recipients:[;,]*/', '', $string);
                            break;
                        case 'from':
                        case 'subject':
                            $string = substr($string, 0, 2048);
                        case 'cc':
                        case 'bcc':
                        case 'references':
                            $result[$id]->{$field} = $string;
                            break;
                        case 'reply-to':
                            $result[$id]->replyto = $string;
                            break;
                        case 'content-transfer-encoding':
                            $result[$id]->encoding = substr($string, 0, 32);
                        break;
                        case 'content-type':
                            $ctype_parts = preg_split('/[; ]+/', $string);
                            $result[$id]->ctype = strtolower(array_first($ctype_parts));
                            if (preg_match('/charset\s*=\s*"?([a-z0-9\-\.\_]+)"?/i', $string, $regs)) {
                                $result[$id]->charset = $regs[1];
                            }
                            break;
                        case 'in-reply-to':
                            $result[$id]->in_reply_to = str_replace(["\n", '<', '>'], '', $string);
                            break;
                        case 'disposition-notification-to':
                        case 'x-confirm-reading-to':
                            $result[$id]->mdn_to = substr($string, 0, 2048);
                            break;
                        case 'message-id':
                            $result[$id]->messageID = substr($string, 0, 2048);
                            break;
                        case 'x-priority':
                            if (preg_match('/^(\d+)/', $string, $matches)) {
                                $result[$id]->priority = intval($matches[1]);
                            }
                            break;
                        default:
                            if (strlen($field) < 3) {
                                break;
                            }
                            if (!empty($result[$id]->others[$field])) {
                                $string = array_merge((array) $result[$id]->others[$field], (array) $string);
                            }
                            $result[$id]->others[$field] = $string;
                        }
                    }
                }
            }
            // VANISHED response (QRESYNC RFC5162)
            // Sample: * VANISHED (EARLIER) 300:310,405,411
            else if (preg_match('/^\* VANISHED [()EARLIER]*/i', $line, $match)) {
                $line   = substr($line, strlen($match[0]));
                $v_data = $this->tokenizeResponse($line, 1);

                $this->data['VANISHED'] = $v_data;
            }
        }
        while (!$this->startsWith($line, $key, true));

        return $result;
    }

    /**
     * Returns message(s) data (flags, headers, etc.)
     *
     * @param string $mailbox     Mailbox name
     * @param mixed  $message_set Message(s) sequence identifier(s) or UID(s)
     * @param bool   $is_uid      True if $message_set contains UIDs
     * @param bool   $bodystr     Enable to add BODYSTRUCTURE data to the result
     * @param array  $add_headers List of additional headers
     *
     * @return bool|array List of rcube_message_header elements, False on error
     */
    public function fetchHeaders($mailbox, $message_set, $is_uid = false, $bodystr = false, $add_headers = [])
    {
        $query_items = ['UID', 'RFC822.SIZE', 'FLAGS', 'INTERNALDATE'];
        $headers     = ['DATE', 'FROM', 'TO', 'SUBJECT', 'CONTENT-TYPE', 'CC', 'REPLY-TO',
            'LIST-POST', 'DISPOSITION-NOTIFICATION-TO', 'X-PRIORITY'];

        if (!empty($add_headers)) {
            $add_headers = array_map('strtoupper', $add_headers);
            $headers     = array_unique(array_merge($headers, $add_headers));
        }

        if ($bodystr) {
            $query_items[] = 'BODYSTRUCTURE';
        }

        $query_items[] = 'BODY.PEEK[HEADER.FIELDS (' . implode(' ', $headers) . ')]';

        return $this->fetch($mailbox, $message_set, $is_uid, $query_items);
    }

    /**
     * Returns message data (flags, headers, etc.)
     *
     * @param string $mailbox     Mailbox name
     * @param int    $id          Message sequence identifier or UID
     * @param bool   $is_uid      True if $id is an UID
     * @param bool   $bodystr     Enable to add BODYSTRUCTURE data to the result
     * @param array  $add_headers List of additional headers
     *
     * @return bool|rcube_message_header Message data, False on error
     */
    public function fetchHeader($mailbox, $id, $is_uid = false, $bodystr = false, $add_headers = [])
    {
        $a = $this->fetchHeaders($mailbox, $id, $is_uid, $bodystr, $add_headers);

        if (is_array($a)) {
            return array_first($a);
        }

        return false;
    }

    /**
     * Sort messages by specified header field
     *
     * @param array  $messages Array of rcube_message_header objects
     * @param string $field    Name of the property to sort by
     * @param string $order    Sorting order (ASC|DESC)
     *
     * @return array Sorted input array
     */
    public static function sortHeaders($messages, $field, $order = 'ASC')
    {
        $field = empty($field) ? 'uid' : strtolower($field);
        $order = empty($order) ? 'ASC' : strtoupper($order);
        $index = [];

        reset($messages);

        // Create an index
        foreach ($messages as $key => $headers) {
            switch ($field) {
            case 'arrival':
                $field = 'internaldate';
                // no-break
            case 'date':
            case 'internaldate':
            case 'timestamp':
                $value = rcube_utils::strtotime($headers->$field);
                if (!$value && $field != 'timestamp') {
                    $value = $headers->timestamp;
                }

                break;

            default:
                // @TODO: decode header value, convert to UTF-8
                $value = $headers->$field;
                if (is_string($value)) {
                    $value = str_replace('"', '', $value);

                    if ($field == 'subject') {
                        $value = rcube_utils::remove_subject_prefix($value);
                    }
                }
            }

            $index[$key] = $value;
        }

        $sort_order = $order == 'ASC' ? SORT_ASC : SORT_DESC;
        $sort_flags = SORT_STRING | SORT_FLAG_CASE;

        if (in_array($field, ['arrival', 'date', 'internaldate', 'timestamp', 'size', 'uid', 'id'])) {
            $sort_flags = SORT_NUMERIC;
        }

        array_multisort($index, $sort_order, $sort_flags, $messages);

        return $messages;
    }

    /**
     * Fetch MIME headers of specified message parts
     *
     * @param string $mailbox Mailbox name
     * @param int    $uid     Message UID
     * @param array  $parts   Message part identifiers
     * @param bool   $mime    Use MIME instead of HEADER
     *
     * @return array|bool Array containing headers string for each specified body
     *                    False on failure.
     */
    public function fetchMIMEHeaders($mailbox, $uid, $parts, $mime = true)
    {
        if (!$this->select($mailbox)) {
            return false;
        }

        $parts  = (array) $parts;
        $key    = $this->nextTag();
        $peeks  = [];
        $type   = $mime ? 'MIME' : 'HEADER';

        // format request
        foreach ($parts as $part) {
            $peeks[] = "BODY.PEEK[$part.$type]";
        }

        $request = "$key UID FETCH $uid (" . implode(' ', $peeks) . ')';

        // send request
        if (!$this->putLine($request)) {
            $this->setError(self::ERROR_COMMAND, "Failed to send UID FETCH command");
            return false;
        }

        $result = [];

        do {
            $line = $this->readLine(1024);
            if (preg_match('/^\* [0-9]+ FETCH [0-9UID( ]+/', $line, $m)) {
                $line = ltrim(substr($line, strlen($m[0])));
                while (preg_match('/^\s*BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) {
                    $line = substr($line, strlen($matches[0]));
                    $result[$matches[1]] = trim($this->multLine($line));
                    $line = $this->readLine(1024);
                }
            }
        }
        while (!$this->startsWith($line, $key, true));

        return $result;
    }

    /**
     * Fetches message part header
     */
    public function fetchPartHeader($mailbox, $id, $is_uid = false, $part = null)
    {
        $part = empty($part) ? 'HEADER' : $part.'.MIME';

        return $this->handlePartBody($mailbox, $id, $is_uid, $part);
    }

    /**
     * Fetches body of the specified message part
     */
    public function handlePartBody($mailbox, $id, $is_uid = false, $part = '', $encoding = null, $print = null,
        $file = null, $formatted = false, $max_bytes = 0)
    {
        if (!$this->select($mailbox)) {
            return false;
        }

        $binary    = true;
        $initiated = false;

        do {
            if (!$initiated) {
                switch ($encoding) {
                case 'base64':
                    $mode = 1;
                    break;
                case 'quoted-printable':
                    $mode = 2;
                    break;
                case 'x-uuencode':
                case 'x-uue':
                case 'uue':
                case 'uuencode':
                    $mode = 3;
                    break;
                default:
                    $mode = $formatted ? 4 : 0;
                }

                // Use BINARY extension when possible (and safe)
                $binary     = $binary && $mode && preg_match('/^[0-9.]+$/', (string) $part) && $this->hasCapability('BINARY');
                $fetch_mode = $binary ? 'BINARY' : 'BODY';
                $partial    = $max_bytes ? sprintf('<0.%d>', $max_bytes) : '';

                // format request
                $key       = $this->nextTag();
                $cmd       = ($is_uid ? 'UID ' : '') . 'FETCH';
                $request   = "$key $cmd $id ($fetch_mode.PEEK[$part]$partial)";
                $result    = false;
                $found     = false;
                $initiated = true;

                // send request
                if (!$this->putLine($request)) {
                    $this->setError(self::ERROR_COMMAND, "Failed to send $cmd command");
                    return false;
                }

                if ($binary) {
                    // WARNING: Use $formatted argument with care, this may break binary data stream
                    $mode = -1;
                }
            }

            $line = trim($this->readLine(1024));

            if (!$line) {
                break;
            }

            // handle UNKNOWN-CTE response - RFC 3516, try again with standard BODY request
            if ($binary && !$found && preg_match('/^' . $key . ' NO \[(UNKNOWN-CTE|PARSE)\]/i', $line)) {
                $binary = $initiated = false;
                continue;
            }

            // skip irrelevant untagged responses (we have a result already)
            if ($found || !preg_match('/^\* ([0-9]+) FETCH (.*)$/', $line, $m)) {
                continue;
            }

            $line = $m[2];

            // handle one line response
            if ($line[0] == '(' && substr($line, -1) == ')') {
                // tokenize content inside brackets
                // the content can be e.g.: (UID 9844 BODY[2.4] NIL)
                $line = preg_replace('/(^\(|\)$)/', '', $line);
                $tokens = $this->tokenizeResponse($line);

                for ($i=0; $i<count($tokens); $i+=2) {
                    if (preg_match('/^(BODY|BINARY)/i', $tokens[$i])) {
                        $result = $tokens[$i+1];
                        $found  = true;
                        break;
                    }
                }

                // Cyrus IMAP does not return a NO-response on error, but we can detect it
                // and fallback to a non-binary fetch (#9097)
                if ($binary && !$found) {
                    $binary = $initiated = false;
                    $line = trim($this->readLine(1024)); // the OK response line
                    continue;
                }

                if ($result !== false) {
                    $result = $this->decodeContent($result, $mode, true);
                }
            }
            // response with string literal
            else if (preg_match('/\{([0-9]+)\}$/', $line, $m)) {
                $bytes = (int) $m[1];
                $prev  = '';
                $found = true;
                $chunkSize = 1024 * 1024;

                // empty body
                if (!$bytes) {
                    $result = '';
                }
                // An optimal path for a case when we need the body as-is in a string
                else if (!$mode && !$file && !$print) {
                    $result = $this->readBytes($bytes);
                }
                else while ($bytes > 0) {
                    $chunk = $this->readBytes($bytes > $chunkSize ? $chunkSize : $bytes);

                    if ($chunk === '') {
                        break;
                    }

                    $len = strlen($chunk);

                    if ($len > $bytes) {
                        $chunk = substr($chunk, 0, $bytes);
                        $len = strlen($chunk);
                    }
                    $bytes -= $len;

                    $chunk = $this->decodeContent($chunk, $mode, $bytes <= 0, $prev);

                    if ($file) {
                        if (fwrite($file, $chunk) === false) {
                            break;
                        }
                    }
                    else if ($print) {
                        echo $chunk;
                    }
                    else {
                        $result .= $chunk;
                    }
                }
            }
        }
        while (!$this->startsWith($line, $key, true) || !$initiated);

        if ($result !== false) {
            if ($file) {
                return fwrite($file, $result);
            }
            else if ($print) {
                echo $result;
                return true;
            }

            return $result;
        }

        return false;
    }

    /**
     * Decodes a chunk of a message part content from a FETCH response.
     *
     * @param string $chunk   Content
     * @param int    $mode    Encoding mode
     * @param bool   $is_last Whether it is a last chunk of data
     * @param string $prev    Extra content from the previous chunk
     *
     * @return string Encoded string
     */
    protected static function decodeContent($chunk, $mode, $is_last = false, &$prev = '')
    {
        // BASE64
        if ($mode == 1) {
            $chunk = $prev . preg_replace('|[^a-zA-Z0-9+=/]|', '', $chunk);

            // create chunks with proper length for base64 decoding
            $length = strlen($chunk);

            if ($length % 4) {
                $length = floor($length / 4) * 4;
                $prev = substr($chunk, $length);
                $chunk = substr($chunk, 0, $length);
            }
            else {
                $prev = '';
            }

            return base64_decode($chunk);
        }

        // QUOTED-PRINTABLE
        if ($mode == 2) {
            if (!self::decodeContentChunk($chunk, $prev, $is_last)) {
                return '';
            }

            $chunk = preg_replace('/[\t\r\0\x0B]+\n/', "\n", $chunk);

            return quoted_printable_decode($chunk);
        }

        // X-UUENCODE
        if ($mode == 3) {
            if (!self::decodeContentChunk($chunk, $prev, $is_last)) {
                return '';
            }

            $chunk = preg_replace(
                ['/\r?\n/', '/(^|\n)end$/', '/^begin\s+[0-7]{3,4}\s+[^\n]+\n/'],
                ["\n", '', ''],
                $chunk
            );

            if (!strlen($chunk)) {
                return '';
            }

            return convert_uudecode($chunk);
        }

        // Plain text formatted
        // TODO: Formatting should be handled outside of this class
        if ($mode == 4) {
            if (!self::decodeContentChunk($chunk, $prev, $is_last)) {
                return '';
            }

            if ($is_last) {
                $chunk = rtrim($chunk, "\t\r\n\0\x0B");
            }

            return preg_replace('/[\t\r\0\x0B]+\n/', "\n", $chunk);
        }

        return $chunk;
    }

    /**
     * A helper for a new-line aware parsing. See self::decodeContent().
     */
    private static function decodeContentChunk(&$chunk, &$prev, $is_last)
    {
        $chunk = $prev . $chunk;
        $prev = '';

        if (!$is_last) {
            if (($pos = strrpos($chunk, "\n")) !== false) {
                $prev = substr($chunk, $pos + 1);
                $chunk = substr($chunk, 0, $pos + 1);
            } else {
                $prev = $chunk;
                return false;
            }
        }

        return true;
    }

    /**
     * Handler for IMAP APPEND command
     *
     * @param string       $mailbox Mailbox name
     * @param string|array $message The message source string or array (of strings and file pointers)
     * @param array        $flags   Message flags
     * @param string       $date    Message internal date
     * @param bool         $binary  Enable BINARY append (RFC3516)
     *
     * @return string|bool On success APPENDUID response (if available) or True, False on failure
     */
    public function append($mailbox, &$message, $flags = [], $date = null, $binary = false)
    {
        unset($this->data['APPENDUID']);

        if ($mailbox === null || $mailbox === '') {
            return false;
        }

        $binary       = $binary && $this->getCapability('BINARY');
        $literal_plus = !$binary && !empty($this->prefs['literal+']);
        $len          = 0;
        $msg          = is_array($message) ? $message : [&$message];
        $chunk_size   = 512000;

        for ($i=0, $cnt=count($msg); $i<$cnt; $i++) {
            if (is_resource($msg[$i])) {
                $stat = fstat($msg[$i]);
                if ($stat === false) {
                    return false;
                }
                $len += $stat['size'];
            }
            else {
                if (!$binary) {
                    $msg[$i] = str_replace("\r", '', $msg[$i]);
                    $msg[$i] = str_replace("\n", "\r\n", $msg[$i]);
                }

                $len += strlen($msg[$i]);
            }
        }

        if (!$len) {
            return false;
        }

        // build APPEND command
        $key = $this->nextTag();
        $request = "$key APPEND " . $this->escape($mailbox) . ' (' . $this->flagsToStr($flags) . ')';
        if (!empty($date)) {
            $request .= ' ' . $this->escape($date);
        }
        $request .= ' ' . ($binary ? '~' : '') . '{' . $len . ($literal_plus ? '+' : '') . '}';

        // send APPEND command
        if (!$this->putLine($request)) {
            $this->setError(self::ERROR_COMMAND, "Failed to send APPEND command");
            return false;
        }

        // Do not wait when LITERAL+ is supported
        if (!$literal_plus) {
            $line = $this->readReply();

            if ($line[0] != '+') {
                $this->parseResult($line, 'APPEND: ');
                return false;
            }
        }

        foreach ($msg as $msg_part) {
            // file pointer
            if (is_resource($msg_part)) {
                rewind($msg_part);
                while (!feof($msg_part) && $this->fp) {
                    $buffer = fread($msg_part, $chunk_size);
                    $this->putLine($buffer, false);
                }
                fclose($msg_part);
            }
            // string
            else {
                $size = strlen($msg_part);

                // Break up the data by sending one chunk (up to 512k) at a time.
                // This approach reduces our peak memory usage
                for ($offset = 0; $offset < $size; $offset += $chunk_size) {
                    $chunk = substr($msg_part, $offset, $chunk_size);
                    if (!$this->putLine($chunk, false)) {
                        return false;
                    }
                }
            }
        }

        if (!$this->putLine('')) { // \r\n
            return false;
        }

        do {
            $line = $this->readLine();
        } while (!$this->startsWith($line, $key, true, true));

        // Clear internal status cache
        unset($this->data['STATUS:'.$mailbox]);

        if ($this->parseResult($line, 'APPEND: ') != self::ERROR_OK) {
            return false;
        }

        if (!empty($this->data['APPENDUID'])) {
            return $this->data['APPENDUID'];
        }

        return true;
    }

    /**
     * Handler for IMAP APPEND command.
     *
     * @param string $mailbox Mailbox name
     * @param string $path    Path to the file with message body
     * @param string $headers Message headers
     * @param array  $flags   Message flags
     * @param string $date    Message internal date
     * @param bool   $binary  Enable BINARY append (RFC3516)
     *
     * @return string|bool On success APPENDUID response (if available) or True, False on failure
     */
    public function appendFromFile($mailbox, $path, $headers = null, $flags = [], $date = null, $binary = false)
    {
        // open message file
        if (file_exists(realpath($path))) {
            $fp = fopen($path, 'r');
        }

        if (empty($fp)) {
            $this->setError(self::ERROR_UNKNOWN, "Couldn't open $path for reading");
            return false;
        }

        $message = [];
        if ($headers) {
            $message[] = trim($headers, "\r\n") . "\r\n\r\n";
        }
        $message[] = $fp;

        return $this->append($mailbox, $message, $flags, $date, $binary);
    }

    /**
     * Returns QUOTA information
     *
     * @param string $mailbox Mailbox name
     *
     * @return array|false Quota information, False on error
     */
    public function getQuota($mailbox = null)
    {
        if ($mailbox === null || $mailbox === '') {
            $mailbox = 'INBOX';
        }

        // a0001 GETQUOTAROOT INBOX
        // * QUOTAROOT INBOX user/sample
        // * QUOTA user/sample (STORAGE 654 9765)
        // a0001 OK Completed

        list($code, $response) = $this->execute('GETQUOTAROOT', [$this->escape($mailbox)], 0, '/^\* QUOTA /i');

        if ($code != self::ERROR_OK) {
            return false;
        }

        $min_free = PHP_INT_MAX;
        $result   = [];
        $all      = [];

        foreach (explode("\n", $response) as $line) {
            $tokens     = $this->tokenizeResponse($line, 3);
            $quota_root = $tokens[2] ?? null;
            $quotas     = $this->tokenizeResponse($line, 1);

            if (empty($quotas)) {
                continue;
            }

            foreach (array_chunk($quotas, 3) as $quota) {
                list($type, $used, $total) = $quota;
                $type = strtolower($type);

                if ($type && $total) {
                    $all[$quota_root][$type]['used']  = intval($used);
                    $all[$quota_root][$type]['total'] = intval($total);
                }
            }

            if (empty($all[$quota_root]['storage'])) {
                continue;
            }

            $used  = $all[$quota_root]['storage']['used'];
            $total = $all[$quota_root]['storage']['total'];
            $free  = $total - $used;

            // calculate lowest available space from all storage quotas
            if ($free < $min_free) {
                $min_free          = $free;
                $result['used']    = $used;
                $result['total']   = $total;
                $result['percent'] = min(100, round(($used/max(1,$total))*100));
                $result['free']    = 100 - $result['percent'];
            }
        }

        if (!empty($result)) {
            $result['all'] = $all;
        }

        return $result;
    }

    /**
     * Send the SETACL command (RFC4314)
     *
     * @param string $mailbox Mailbox name
     * @param string $user    User name
     * @param mixed  $acl     ACL string or array
     *
     * @return bool True on success, False on failure
     *
     * @since 0.5-beta
     */
    public function setACL($mailbox, $user, $acl)
    {
        if (is_array($acl)) {
            $acl = implode('', $acl);
        }

        $result = $this->execute('SETACL',
            [$this->escape($mailbox), $this->escape($user), strtolower($acl)],
            self::COMMAND_NORESPONSE
        );

        return $result == self::ERROR_OK;
    }

    /**
     * Send the DELETEACL command (RFC4314)
     *
     * @param string $mailbox Mailbox name
     * @param string $user    User name
     *
     * @return bool True on success, False on failure
     *
     * @since 0.5-beta
     */
    public function deleteACL($mailbox, $user)
    {
        $result = $this->execute('DELETEACL',
            [$this->escape($mailbox), $this->escape($user)],
            self::COMMAND_NORESPONSE
        );

        return $result == self::ERROR_OK;
    }

    /**
     * Send the GETACL command (RFC4314)
     *
     * @param string $mailbox Mailbox name
     *
     * @return array User-rights array on success, NULL on error
     * @since 0.5-beta
     */
    public function getACL($mailbox)
    {
        list($code, $response) = $this->execute('GETACL', [$this->escape($mailbox)], 0, '/^\* ACL /i');

        if ($code == self::ERROR_OK && $response) {
            // Parse server response (remove "* ACL ")
            $response = substr($response, 6);
            $ret  = $this->tokenizeResponse($response);
            $mbox = array_shift($ret);
            $size = count($ret);

            // Create user-rights hash array
            // @TODO: consider implementing fixACL() method according to RFC4314.2.1.1
            // so we could return only standard rights defined in RFC4314,
            // excluding 'c' and 'd' defined in RFC2086.
            if ($size % 2 == 0) {
                for ($i=0; $i<$size; $i++) {
                    $ret[$ret[$i]] = str_split($ret[++$i]);
                    unset($ret[$i-1]);
                    unset($ret[$i]);
                }
                return $ret;
            }

            $this->setError(self::ERROR_COMMAND, "Incomplete ACL response");
        }
    }

    /**
     * Send the LISTRIGHTS command (RFC4314)
     *
     * @param string $mailbox Mailbox name
     * @param string $user    User name
     *
     * @return array List of user rights
     * @since 0.5-beta
     */
    public function listRights($mailbox, $user)
    {
        list($code, $response) = $this->execute('LISTRIGHTS',
            [$this->escape($mailbox), $this->escape($user)], 0, '/^\* LISTRIGHTS /i');

        if ($code == self::ERROR_OK && $response) {
            // Parse server response (remove "* LISTRIGHTS ")
            $response = substr($response, 13);

            $ret_mbox = $this->tokenizeResponse($response, 1);
            $ret_user = $this->tokenizeResponse($response, 1);
            $granted  = $this->tokenizeResponse($response, 1);
            $optional = trim($response);

            return [
                'granted'  => str_split($granted),
                'optional' => explode(' ', $optional),
            ];
        }
    }

    /**
     * Send the MYRIGHTS command (RFC4314)
     *
     * @param string $mailbox Mailbox name
     *
     * @return array MYRIGHTS response on success, NULL on error
     * @since 0.5-beta
     */
    public function myRights($mailbox)
    {
        list($code, $response) = $this->execute('MYRIGHTS', [$this->escape($mailbox)], 0, '/^\* MYRIGHTS /i');

        if ($code == self::ERROR_OK && $response) {
            // Parse server response (remove "* MYRIGHTS ")
            $response = substr($response, 11);

            $ret_mbox = $this->tokenizeResponse($response, 1);
            $rights   = $this->tokenizeResponse($response, 1);

            return str_split($rights);
        }
    }

    /**
     * Send the SETMETADATA command (RFC5464)
     *
     * @param string $mailbox Mailbox name
     * @param array  $entries Entry-value array (use NULL value as NIL)
     *
     * @return bool True on success, False on failure
     * @since 0.5-beta
     */
    public function setMetadata($mailbox, $entries)
    {
        if (!is_array($entries) || empty($entries)) {
            $this->setError(self::ERROR_COMMAND, "Wrong argument for SETMETADATA command");
            return false;
        }

        foreach ($entries as $name => $value) {
            $entries[$name] = $this->escape($name) . ' ' . $this->escape($value, true);
        }

        $entries = implode(' ', $entries);
        $result = $this->execute('SETMETADATA',
            [$this->escape($mailbox), '(' . $entries . ')'],
            self::COMMAND_NORESPONSE
        );

        return $result == self::ERROR_OK;
    }

    /**
     * Send the SETMETADATA command with NIL values (RFC5464)
     *
     * @param string $mailbox Mailbox name
     * @param array  $entries Entry names array
     *
     * @return bool True on success, False on failure
     *
     * @since 0.5-beta
     */
    public function deleteMetadata($mailbox, $entries)
    {
        if (!is_array($entries) && !empty($entries)) {
            $entries = explode(' ', $entries);
        }

        if (empty($entries)) {
            $this->setError(self::ERROR_COMMAND, "Wrong argument for SETMETADATA command");
            return false;
        }

        $data = [];
        foreach ($entries as $entry) {
            $data[$entry] = null;
        }

        return $this->setMetadata($mailbox, $data);
    }

    /**
     * Send the GETMETADATA command (RFC5464)
     *
     * @param string $mailbox Mailbox name
     * @param array  $entries Entries
     * @param array  $options Command options (with MAXSIZE and DEPTH keys)
     *
     * @return array GETMETADATA result on success, NULL on error
     *
     * @since 0.5-beta
     */
    public function getMetadata($mailbox, $entries, $options = [])
    {
        if (!is_array($entries)) {
            $entries = [$entries];
        }

        $args = [];

        // create options string
        if (is_array($options)) {
            $options = array_change_key_case($options, CASE_UPPER);
            $opts    = [];

            if (!empty($options['MAXSIZE'])) {
                $opts[] = 'MAXSIZE '.intval($options['MAXSIZE']);
            }

            if (isset($options['DEPTH'])) {
                $opts[] = 'DEPTH ' . $this->escape($options['DEPTH']);
            }

            if (!empty($opts)) {
                $args[] = $opts;
            }
        }

        $args[] = $this->escape($mailbox);
        $args[] = array_map([$this, 'escape'], $entries);

        list($code, $response) = $this->execute('GETMETADATA', $args);

        if ($code == self::ERROR_OK) {
            $result = [];
            $data   = $this->tokenizeResponse($response);

            // The METADATA response can contain multiple entries in a single
            // response or multiple responses for each entry or group of entries
            for ($i = 0, $size = count($data); $i < $size; $i++) {
                if ($data[$i] === '*'
                    && $data[++$i] === 'METADATA'
                    && is_string($mbox = $data[++$i])
                    && is_array($data[++$i])
                ) {
                    for ($x = 0, $size2 = count($data[$i]); $x < $size2; $x += 2) {
                        if ($data[$i][$x+1] !== null) {
                            $result[$mbox][$data[$i][$x]] = $data[$i][$x+1];
                        }
                    }
                }
            }

            return $result;
        }
    }

    /**
     * Send the SETANNOTATION command (draft-daboo-imap-annotatemore)
     *
     * @param string $mailbox Mailbox name
     * @param array  $data    Data array where each item is an array with
     *                        three elements: entry name, attribute name, value
     *
     * @return bool True on success, False on failure
     * @since 0.5-beta
     */
    public function setAnnotation($mailbox, $data)
    {
        if (!is_array($data) || empty($data)) {
            $this->setError(self::ERROR_COMMAND, "Wrong argument for SETANNOTATION command");
            return false;
        }

        foreach ($data as $entry) {
            // ANNOTATEMORE drafts before version 08 require quoted parameters
            $entries[] = sprintf('%s (%s %s)', $this->escape($entry[0], true),
                $this->escape($entry[1], true), $this->escape($entry[2], true));
        }

        $entries = implode(' ', $entries);
        $result  = $this->execute('SETANNOTATION', [$this->escape($mailbox), $entries], self::COMMAND_NORESPONSE);

        return $result == self::ERROR_OK;
    }

    /**
     * Send the SETANNOTATION command with NIL values (draft-daboo-imap-annotatemore)
     *
     * @param string $mailbox Mailbox name
     * @param array  $data    Data array where each item is an array with
     *                        two elements: entry name and attribute name
     *
     * @return bool True on success, False on failure
     *
     * @since 0.5-beta
     */
    public function deleteAnnotation($mailbox, $data)
    {
        if (!is_array($data) || empty($data)) {
            $this->setError(self::ERROR_COMMAND, "Wrong argument for SETANNOTATION command");
            return false;
        }

        return $this->setAnnotation($mailbox, $data);
    }

    /**
     * Send the GETANNOTATION command (draft-daboo-imap-annotatemore)
     *
     * @param string $mailbox Mailbox name
     * @param array  $entries Entries names
     * @param array  $attribs Attribs names
     *
     * @return array Annotations result on success, NULL on error
     *
     * @since 0.5-beta
     */
    public function getAnnotation($mailbox, $entries, $attribs)
    {
        if (!is_array($entries)) {
            $entries = [$entries];
        }

        // create entries string
        // ANNOTATEMORE drafts before version 08 require quoted parameters
        foreach ($entries as $idx => $name) {
            $entries[$idx] = $this->escape($name, true);
        }
        $entries = '(' . implode(' ', $entries) . ')';

        if (!is_array($attribs)) {
            $attribs = [$attribs];
        }

        // create attributes string
        foreach ($attribs as $idx => $name) {
            $attribs[$idx] = $this->escape($name, true);
        }
        $attribs = '(' . implode(' ', $attribs) . ')';

        list($code, $response) = $this->execute('GETANNOTATION', [$this->escape($mailbox), $entries, $attribs]);

        if ($code == self::ERROR_OK) {
            $result     = [];
            $data       = $this->tokenizeResponse($response);
            $last_entry = null;

            // Here we returns only data compatible with METADATA result format
            if (!empty($data) && ($size = count($data))) {
                for ($i=0; $i<$size; $i++) {
                    $entry = $data[$i];
                    if (isset($mbox) && is_array($entry)) {
                        $attribs = $entry;
                        $entry   = $last_entry;
                    }
                    else if ($entry == '*') {
                        if ($data[$i+1] == 'ANNOTATION') {
                            $mbox = $data[$i+2];
                            unset($data[$i]);   // "*"
                            unset($data[++$i]); // "ANNOTATION"
                            unset($data[++$i]); // Mailbox
                        }
                        // get rid of other untagged responses
                        else {
                            unset($mbox);
                            unset($data[$i]);
                        }
                        continue;
                    }
                    else if (isset($mbox)) {
                        $attribs = $data[++$i];
                    }
                    else {
                        unset($data[$i]);
                        continue;
                    }

                    if (!empty($attribs)) {
                        for ($x=0, $len=count($attribs); $x<$len;) {
                            $attr  = $attribs[$x++];
                            $value = $attribs[$x++];
                            if ($attr == 'value.priv' && $value !== null) {
                                $result[$mbox]['/private' . $entry] = $value;
                            }
                            else if ($attr == 'value.shared' && $value !== null) {
                                $result[$mbox]['/shared' . $entry] = $value;
                            }
                        }
                    }

                    $last_entry = $entry;
                    unset($data[$i]);
                }
            }

            return $result;
        }
    }

    /**
     * Returns BODYSTRUCTURE for the specified message.
     *
     * @param string $mailbox Folder name
     * @param int    $id      Message sequence number or UID
     * @param bool   $is_uid  True if $id is an UID
     *
     * @return array|bool Body structure array or False on error.
     * @since 0.6
     */
    public function getStructure($mailbox, $id, $is_uid = false)
    {
        $result = $this->fetch($mailbox, $id, $is_uid, ['BODYSTRUCTURE']);

        if (is_array($result) && !empty($result)) {
            $result = array_first($result);
            return $result->bodystructure;
        }

        return false;
    }

    /**
     * Returns data of a message part according to specified structure.
     *
     * @param array  $structure Message structure (getStructure() result)
     * @param string $part      Message part identifier
     *
     * @return array Part data as hash array (type, encoding, charset, size)
     */
    public static function getStructurePartData($structure, $part)
    {
        $part_a = self::getStructurePartArray($structure, $part);
        $data   = [];

        if (empty($part_a)) {
            return $data;
        }

        // content-type
        if (is_array($part_a[0])) {
            $data['type'] = 'multipart';
        }
        else {
            $data['type']     = strtolower($part_a[0]);
            $data['subtype']  = strtolower($part_a[1]);
            $data['encoding'] = strtolower($part_a[5]);

            // charset
            if (is_array($part_a[2])) {
               foreach ($part_a[2] as $key => $val) {
                    if (strcasecmp($val, 'charset') == 0) {
                        $data['charset'] = $part_a[2][$key+1];
                        break;
                    }
                }
            }
        }

        // size
        $data['size'] = intval($part_a[6]);

        return $data;
    }

    public static function getStructurePartArray($a, $part)
    {
        if (!is_array($a)) {
            return false;
        }

        if (empty($part)) {
            return $a;
        }

        $ctype = is_string($a[0]) && is_string($a[1]) ? $a[0] . '/' . $a[1] : '';

        if (strcasecmp($ctype, 'message/rfc822') == 0) {
            $a = $a[8];
        }

        if (strpos($part, '.') > 0) {
            $orig_part = $part;
            $pos       = strpos($part, '.');
            $rest      = substr($orig_part, $pos+1);
            $part      = substr($orig_part, 0, $pos);

            return self::getStructurePartArray($a[$part-1], $rest);
        }
        else if ($part > 0) {
            return is_array($a[$part-1]) ? $a[$part-1] : $a;
        }
    }

    /**
     * Creates next command identifier (tag)
     *
     * @return string Command identifier
     * @since 0.5-beta
     */
    public function nextTag()
    {
        $this->cmd_num++;
        $this->cmd_tag = sprintf('A%04d', $this->cmd_num);

        return $this->cmd_tag;
    }

    /**
     * Sends IMAP command and parses result
     *
     * @param string $command   IMAP command
     * @param array  $arguments Command arguments
     * @param int    $options   Execution options
     * @param string $filter    Line filter (regexp)
     *
     * @return mixed Response code or list of response code and data
     * @since 0.5-beta
     */
    public function execute($command, $arguments = [], $options = 0, $filter = null)
    {
        $tag      = $this->nextTag();
        $query    = $tag . ' ' . $command;
        $noresp   = ($options & self::COMMAND_NORESPONSE);
        $response = $noresp ? null : '';

        if (!empty($arguments)) {
            foreach ($arguments as $arg) {
                $query .= ' ' . self::r_implode($arg);
            }
        }

        // Send command
        if (!$this->putLineC($query, true, ($options & self::COMMAND_ANONYMIZED))) {
            preg_match('/^[A-Z0-9]+ ((UID )?[A-Z]+)/', $query, $matches);
            $cmd = $matches[1] ?: 'UNKNOWN';
            $this->setError(self::ERROR_COMMAND, "Failed to send $cmd command");

            return $noresp ? self::ERROR_COMMAND : [self::ERROR_COMMAND, ''];
        }

        // Parse response
        do {
            $line = $this->readFullLine(4096);

            if ($response !== null) {
                if (!$filter || preg_match($filter, $line)) {
                    $response .= $line;
                }
            }

            // parse untagged response for [COPYUID 1204196876 3456:3457 123:124] (RFC6851)
            if ($line && $command == 'UID MOVE') {
                if (preg_match("/^\* OK \[COPYUID [0-9]+ ([0-9,:]+) ([0-9,:]+)\]/i", $line, $m)) {
                    $this->data['COPYUID'] = [$m[1], $m[2]];
                }
            }
        }
        while (!$this->startsWith($line, $tag . ' ', true, true));

        $code = $this->parseResult($line, $command . ': ');

        // Remove last line from response
        if ($response) {
            if (!$filter) {
                $line_len = min(strlen($response), strlen($line));
                $response = substr($response, 0, -$line_len);
            }

            $response = rtrim($response, "\r\n");
        }

        // optional CAPABILITY response
        if (($options & self::COMMAND_CAPABILITY) && $code == self::ERROR_OK
            && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)
        ) {
            $this->parseCapability($matches[1], true);
        }

        // return last line only (without command tag, result and response code)
        if ($line && ($options & self::COMMAND_LASTLINE)) {
            $response = preg_replace("/^$tag (OK|NO|BAD|BYE|PREAUTH)?\s*(\[[a-z-]+\])?\s*/i", '', trim($line));
        }

        return $noresp ? $code : [$code, $response];
    }

    /**
     * Splits IMAP response into string tokens
     *
     * @param string &$str The IMAP's server response
     * @param int    $num  Number of tokens to return
     *
     * @return mixed Tokens array or string if $num=1
     * @since 0.5-beta
     */
    public static function tokenizeResponse(&$str, $num=0)
    {
        $result = [];

        while (!$num || count($result) < $num) {
            // remove spaces from the beginning of the string
            $str = ltrim($str);

            // empty string
            if ($str === '' || $str === null) {
                break;
            }

            switch ($str[0]) {

            // String literal
            case '{':
                if (($epos = strpos($str, "}\r\n", 1)) == false) {
                    // error
                }
                if (!is_numeric(($bytes = substr($str, 1, $epos - 1)))) {
                    // error
                }

                $result[] = $bytes ? substr($str, $epos + 3, $bytes) : '';
                $str      = substr($str, $epos + 3 + $bytes);
                break;

            // Quoted string
            case '"':
                $len = strlen($str);

                for ($pos=1; $pos<$len; $pos++) {
                    if ($str[$pos] == '"') {
                        break;
                    }
                    if ($str[$pos] == "\\") {
                        if ($str[$pos + 1] == '"' || $str[$pos + 1] == "\\") {
                            $pos++;
                        }
                    }
                }

                // we need to strip slashes for a quoted string
                $result[] = stripslashes(substr($str, 1, $pos - 1));
                $str      = substr($str, $pos + 1);
                break;

            // Parenthesized list
            case '(':
                $str      = substr($str, 1);
                $result[] = self::tokenizeResponse($str);
                break;

            case ')':
                $str = substr($str, 1);
                return $result;

            // String atom, number, astring, NIL, *, %
            default:
                // excluded chars: SP, CTL, ), DEL
                // we do not exclude [ and ] (#1489223)
                if (preg_match('/^([^\x00-\x20\x29\x7F]+)/', $str, $m)) {
                    $result[] = $m[1] == 'NIL' ? null : $m[1];
                    $str      = substr($str, strlen($m[1]));
                }

                break;
            }
        }

        return $num == 1 ? ($result[0] ?? '') : $result;
    }

    /**
     * Joins IMAP command line elements (recursively)
     */
    protected static function r_implode($element)
    {
        if (!is_array($element)) {
            return $element;
        }

        reset($element);

        $string = '';

        foreach ($element as $value) {
            $string .= ' ' . self::r_implode($value);
        }

        return '(' . trim($string) . ')';
    }

    /**
     * Converts message identifiers array into sequence-set syntax
     *
     * @param array $messages Message identifiers
     * @param bool  $force    Forces compression of any size
     *
     * @return string Compressed sequence-set
     */
    public static function compressMessageSet($messages, $force = false)
    {
        // given a comma delimited list of independent mid's,
        // compresses by grouping sequences together
        if (!is_array($messages)) {
            // if less than 255 bytes long, let's not bother
            if (!$force && strlen($messages) < 255) {
                return preg_match('/[^0-9:,*]/', $messages) ? 'INVALID' : $messages;
            }

            // see if it's already been compressed
            if (strpos($messages, ':') !== false) {
                return preg_match('/[^0-9:,*]/', $messages) ? 'INVALID' : $messages;
            }

            // separate, then sort
            $messages = explode(',', $messages);
        }

        sort($messages);

        $result = [];
        $start  = $prev = $messages[0];

        foreach ($messages as $id) {
            $incr = $id - $prev;
            if ($incr > 1) { // found a gap
                if ($start == $prev) {
                    $result[] = $prev; // push single id
                }
                else {
                    $result[] = $start . ':' . $prev; // push sequence as start_id:end_id
                }
                $start = $id; // start of new sequence
            }
            $prev = $id;
        }

        // handle the last sequence/id
        if ($start == $prev) {
            $result[] = $prev;
        }
        else {
            $result[] = $start.':'.$prev;
        }

        // return as comma separated string
        $result = implode(',', $result);

        return preg_match('/[^0-9:,*]/', $result) ? 'INVALID' : $result;
    }

    /**
     * Converts message sequence-set into array
     *
     * @param string $messages Message identifiers
     *
     * @return array List of message identifiers
     */
    public static function uncompressMessageSet($messages)
    {
        if (empty($messages)) {
            return [];
        }

        $result   = [];
        $messages = explode(',', $messages);

        foreach ($messages as $idx => $part) {
            $items = explode(':', $part);

            if (!empty($items[1]) && $items[1] > $items[0]) {
                $max = $items[1];
            }
            else {
                $max = $items[0];
            }

            for ($x = $items[0]; $x <= $max; $x++) {
                $result[] = (int) $x;
            }

            unset($messages[$idx]);
        }

        return $result;
    }

    /**
     * Clear internal status cache
     */
    protected function clear_status_cache($mailbox)
    {
        unset($this->data['STATUS:' . $mailbox]);

        $keys = ['EXISTS', 'RECENT', 'UNSEEN', 'UID-MAP'];

        foreach ($keys as $key) {
            unset($this->data[$key]);
        }
    }

    /**
     * Clear internal cache of the current mailbox
     */
    protected function clear_mailbox_cache()
    {
        $this->clear_status_cache($this->selected);

        $keys = ['UIDNEXT', 'UIDVALIDITY', 'HIGHESTMODSEQ', 'NOMODSEQ',
            'PERMANENTFLAGS', 'QRESYNC', 'VANISHED', 'READ-WRITE'];

        foreach ($keys as $key) {
            unset($this->data[$key]);
        }
    }

    /**
     * Converts flags array into string for inclusion in IMAP command
     *
     * @param array $flags Flags (see self::flags)
     *
     * @return string Space-separated list of flags
     */
    protected function flagsToStr($flags)
    {
        foreach ((array) $flags as $idx => $flag) {
            if ($flag = $this->flags[strtoupper($flag)]) {
                $flags[$idx] = $flag;
            }
        }

        return implode(' ', (array) $flags);
    }

    /**
     * CAPABILITY response parser
     */
    protected function parseCapability($str, $trusted=false)
    {
        $str = preg_replace('/^\* CAPABILITY /i', '', $str);

        $this->capability = explode(' ', strtoupper($str));

        if (!empty($this->prefs['disabled_caps'])) {
            $this->capability = array_diff($this->capability, $this->prefs['disabled_caps']);
        }

        if (!isset($this->prefs['literal+']) && in_array('LITERAL+', $this->capability)) {
            $this->prefs['literal+'] = true;
        }
        else if (!isset($this->prefs['literal-']) && in_array('LITERAL-', $this->capability)) {
            $this->prefs['literal-'] = true;
        }

        if ($trusted) {
            $this->capability_read = true;
        }
    }

    /**
     * Escapes a string when it contains special characters (RFC3501)
     *
     * @param string $string       IMAP string
     * @param bool   $force_quotes Forces string quoting (for atoms)
     *
     * @return string String atom, quoted-string or string literal
     * @todo lists
     */
    public static function escape($string, $force_quotes = false)
    {
        if ($string === null) {
            return 'NIL';
        }

        if ($string === '') {
            return '""';
        }

        // atom-string (only safe characters)
        if (!$force_quotes && !preg_match('/[\x00-\x20\x22\x25\x28-\x2A\x5B-\x5D\x7B\x7D\x80-\xFF]/', $string)) {
            return $string;
        }

        // quoted-string
        if (!preg_match('/[\r\n\x00\x80-\xFF]/', $string)) {
            return '"' . addcslashes($string, '\\"') . '"';
        }

        // literal-string
        return sprintf("{%d}\r\n%s", strlen($string), $string);
    }

    /**
     * Set the value of the debugging flag.
     *
     * @param bool     $debug   New value for the debugging flag.
     * @param callable $handler Logging handler function
     *
     * @since 0.5-stable
     */
    public function setDebug($debug, $handler = null)
    {
        $this->debug         = $debug;
        $this->debug_handler = $handler;
    }

    /**
     * Write the given debug text to the current debug output handler.
     *
     * @param string $message Debug message text.
     *
     * @since 0.5-stable
     */
    protected function debug($message)
    {
        if (($len = strlen($message)) > self::DEBUG_LINE_LENGTH) {
            $diff    = $len - self::DEBUG_LINE_LENGTH;
            $message = substr($message, 0, self::DEBUG_LINE_LENGTH)
                . "... [truncated $diff bytes]";
        }

        if ($this->resourceid) {
            $message = sprintf('[%s] %s', $this->resourceid, $message);
        }

        if ($this->debug_handler) {
            call_user_func_array($this->debug_handler, [$this, $message]);
        }
        else {
            echo "DEBUG: $message\n";
        }
    }
}
lib/Roundcube/rcube_plugin.php000064400000032417151727150650012447 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |  Abstract plugins interface/class                                     |
 |  All plugins need to extend this class                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Plugin interface class
 *
 * @package    Framework
 * @subpackage PluginAPI
 */
abstract class rcube_plugin
{
    /**
     * Class name of the plugin instance
     *
     * @var string
     */
    public $ID;

    /**
     * Instance of Plugin API
     *
     * @var rcube_plugin_api
     */
    public $api;

    /**
     * Regular expression defining task(s) to bind with
     *
     * @var string
     */
    public $task;

    /**
     * Disables plugin in AJAX requests
     *
     * @var bool
     */
    public $noajax = false;

    /**
     * Disables plugin in framed mode
     *
     * @var bool
     */
    public $noframe = false;

    /**
     * A list of config option names that can be modified
     * by the user via user interface (with save-prefs command)
     *
     * @var array
     */
    public $allowed_prefs;

    /** @var string Plugin directory location */
    protected $home;

    /** @var string Base URL to the plugin directory */
    protected $urlbase;

    /** @var string Plugin task name (if registered) */
    private $mytask;

    /** @var array List of plugin configuration files already loaded */
    private $loaded_config = [];


    /**
     * Default constructor.
     *
     * @param rcube_plugin_api $api Plugin API
     */
    public function __construct($api)
    {
        $this->ID      = get_class($this);
        $this->api     = $api;
        $this->home    = $api->dir . $this->ID;
        $this->urlbase = $api->url . $this->ID . '/';
    }

    /**
     * Initialization method, needs to be implemented by the plugin itself
     */
    abstract function init();

    /**
     * Provide information about this
     *
     * @return array Meta information about a plugin or false if not implemented.
     * As hash array with the following keys:
     *      name: The plugin name
     *    vendor: Name of the plugin developer
     *   version: Plugin version name
     *   license: License name (short form according to http://spdx.org/licenses/)
     *       uri: The URL to the plugin homepage or source repository
     *   src_uri: Direct download URL to the source code of this plugin
     *   require: List of plugins required for this one (as array of plugin names)
     */
    public static function info()
    {
        return false;
    }

    /**
     * Attempt to load the given plugin which is required for the current plugin
     *
     * @param string $plugin_name Plugin name
     *
     * @return bool True on success, false on failure
     */
    public function require_plugin($plugin_name)
    {
        return $this->api->load_plugin($plugin_name, true);
    }

    /**
     * Attempt to load the given plugin which is optional for the current plugin
     *
     * @param string $plugin_name Plugin name
     *
     * @return bool True on success, false on failure
     */
    public function include_plugin($plugin_name)
    {
        return $this->api->load_plugin($plugin_name, true, false);
    }

    /**
     * Load local config file from plugins directory.
     * The loaded values are patched over the global configuration.
     *
     * @param string $fname Config file name relative to the plugin's folder
     *
     * @return bool True on success, false on failure
     */
    public function load_config($fname = 'config.inc.php')
    {
        if (in_array($fname, $this->loaded_config)) {
            return true;
        }

        $this->loaded_config[] = $fname;

        $fpath = slashify($this->home) . $fname;
        $rcube = rcube::get_instance();

        if (($is_local = is_file($fpath)) && !$rcube->config->load_from_file($fpath)) {
            rcube::raise_error([
                    'code' => 527, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Failed to load config from $fpath"
                ], true, false
            );
            return false;
        }
        else if (!$is_local) {
            // Search plugin_name.inc.php file in any configured path
            return $rcube->config->load_from_file($this->ID . '.inc.php');
        }

        return true;
    }

    /**
     * Register a callback function for a specific (server-side) hook
     *
     * @param string $hook     Hook name
     * @param mixed  $callback Callback function as string or array
     *                         with object reference and method name
     */
    public function add_hook($hook, $callback)
    {
        $this->api->register_hook($hook, $callback);
    }

    /**
     * Unregister a callback function for a specific (server-side) hook.
     *
     * @param string $hook     Hook name
     * @param mixed  $callback Callback function as string or array
     *                         with object reference and method name
     */
    public function remove_hook($hook, $callback)
    {
        $this->api->unregister_hook($hook, $callback);
    }

    /**
     * Load localized texts from the plugins dir
     *
     * @param string $dir        Directory to search in
     * @param mixed  $add2client Make texts also available on the client
     *                           (array with list or true for all)
     */
    public function add_texts($dir, $add2client = false)
    {
        $rcube = rcube::get_instance();
        $texts = $rcube->read_localization(realpath(slashify($this->home) . $dir));

        // prepend domain to text keys and add to the application texts repository
        if (!empty($texts)) {
            $domain = $this->ID;
            $add    = [];

            foreach ($texts as $key => $value) {
                $add[$domain.'.'.$key] = $value;
            }

            $rcube->load_language($_SESSION['language'], $add);

            // add labels to client
            if ($add2client && method_exists($rcube->output, 'add_label')) {
                if (is_array($add2client)) {
                    $js_labels = array_map([$this, 'label_map_callback'], $add2client);
                }
                else {
                    $js_labels = array_keys($add);
                }

                $rcube->output->add_label($js_labels);
            }
        }
    }

    /**
     * Wrapper for add_label() adding the plugin ID as domain
     */
    public function add_label(...$args)
    {
        $rcube = rcube::get_instance();

        if (method_exists($rcube->output, 'add_label')) {
            if (count($args) == 1 && is_array($args[0])) {
                $args = $args[0];
            }

            $args = array_map([$this, 'label_map_callback'], $args);
            $rcube->output->add_label($args);
        }
    }

    /**
     * Wrapper for rcube::gettext() adding the plugin ID as domain
     *
     * @param string|array $p Named parameters array or label name
     *
     * @return string Localized text
     * @see rcube::gettext()
     */
    public function gettext($p)
    {
        return rcube::get_instance()->gettext($p, $this->ID);
    }

    /**
     * Register this plugin to be responsible for a specific task
     *
     * @param string $task Task name (only characters [a-z0-9_-] are allowed)
     */
    public function register_task($task)
    {
        if ($this->api->register_task($task, $this->ID)) {
            $this->mytask = $task;
        }
    }

    /**
     * Register a handler for a specific client-request action
     *
     * The callback will be executed upon a request like /?_task=mail&_action=plugin.myaction
     *
     * @param string $action   Action name (should be unique)
     * @param mixed  $callback Callback function as string
     *                         or array with object reference and method name
     */
    public function register_action($action, $callback)
    {
        $this->api->register_action($action, $this->ID, $callback, $this->mytask);
    }

    /**
     * Register a handler function for a template object
     *
     * When parsing a template for display, tags like <roundcube:object name="plugin.myobject" />
     * will be replaced by the return value if the registered callback function.
     *
     * @param string $name     Object name (should be unique and start with 'plugin.')
     * @param mixed  $callback Callback function as string or array with object reference
     *                         and method name
     */
    public function register_handler($name, $callback)
    {
        $this->api->register_handler($name, $this->ID, $callback);
    }

    /**
     * Make this javascript file available on the client
     *
     * @param string $fn File path; absolute or relative to the plugin directory
     */
    public function include_script($fn)
    {
        $this->api->include_script($this->resource_url($fn));
    }

    /**
     * Make this stylesheet available on the client
     *
     * @param string $fn File path; absolute or relative to the plugin directory
     */
    public function include_stylesheet($fn)
    {
        $this->api->include_stylesheet($this->resource_url($fn));
    }

    /**
     * Append a button to a certain container
     *
     * @param array  $p         Hash array with named parameters (as used in skin templates)
     * @param string $container Container name where the buttons should be added to
     *
     * @see rcube_template::button()
     */
    public function add_button($p, $container)
    {
        if ($this->api->output->type == 'html') {
            // fix relative paths
            foreach (['imagepas', 'imageact', 'imagesel'] as $key) {
                if (!empty($p[$key])) {
                    $p[$key] = $this->api->url . $this->resource_url($p[$key]);
                }
            }

            $this->api->add_content($this->api->output->button($p), $container);
        }
    }

    /**
     * Generate an absolute URL to the given resource within the current
     * plugin directory
     *
     * @param string $fn The file name
     *
     * @return string Absolute URL to the given resource
     */
    public function url($fn)
    {
        return $this->api->url . $this->resource_url($fn);
    }

    /**
     * Make the given file name link into the plugin directory
     *
     * @param string $fn Filename
     */
    private function resource_url($fn)
    {
        // pattern "skins/[a-z0-9-_]+/plugins/$this->ID/" used to identify plugin resources loaded from the core skin folder
        if ($fn[0] != '/' && !preg_match("#^(https?://|skins/[a-z0-9-_]+/plugins/$this->ID/)#i", $fn)) {
            return $this->ID . '/' . $fn;
        }
        else {
            return $fn;
        }
    }

    /**
     * Provide path to the currently selected skin folder within the plugin directory
     * with a fallback to the default skin folder.
     *
     * @param  string $extra_dir Additional directory to search in (optional)
     * @param  mixed  $skin_name Specific skin name(s) to look for, string or array (optional)
     * @return string            Skin path relative to plugins directory
     */
    public function local_skin_path($extra_dir = null, $skin_name = null)
    {
        $rcube     = rcube::get_instance();
        $skins     = array_keys((array)$rcube->output->skins);
        $skin_path = '';

        if (empty($skins)) {
            $skins = (array) $rcube->config->get('skin');
        }

        $dirs = ['skins'];
        if (!empty($extra_dir)) {
            array_unshift($dirs, $extra_dir);
        }

        if (!empty($skin_name)) {
            $skins = (array) $skin_name;
        }

        foreach ($skins as $skin) {
            foreach ($dirs as $dir) {
                // skins folder in the plugins dir
                $skin_path = $dir . '/' . $skin;

                if (!is_dir(realpath(slashify($this->home) . $skin_path))) {
                    // plugins folder in the skins dir
                    $skin_path .= '/plugins/' . $this->ID;
                    if (is_dir(realpath(slashify(RCUBE_INSTALL_PATH) . $skin_path))) {
                        break 2;
                    }
                }
                else {
                    break 2;
                }
            }
        }

        return $skin_path;
    }

    /**
     * Callback function for array_map
     *
     * @param string $key Array key.
     *
     * @return string
     */
    private function label_map_callback($key)
    {
        if (strpos($key, $this->ID.'.') === 0) {
            return $key;
        }

        return $this->ID.'.'.$key;
    }
}
lib/Roundcube/rcube_enriched.php000064400000012473151727150650012732 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Helper class to convert Enriched to HTML format (RFC 1523, 1896)    |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Ryo Chijiiwa (IlohaMail)                                      |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for Enriched to HTML conversion
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_enriched
{
    protected static function convert_newlines($body)
    {
        // remove single newlines, convert N newlines to N-1
        $body = str_replace("\r\n", "\n", $body);
        $len  = strlen($body);
        $nl   = 0;
        $out  = '';

        for ($i=0; $i<$len; $i++) {
            $c = $body[$i];
            if (ord($c) == 10) {
                $nl++;
            }
            if ($nl && ord($c) != 10) {
                $nl = 0;
            }
            if ($nl != 1) {
                $out .= $c;
            }
            else {
                $out .= ' ';
            }
        }

        return $out;
    }

    protected static function convert_formatting($body)
    {
        $replace = [
            '<bold>'        => '<b>',            '</bold>'   => '</b>',
            '<italic>'      => '<i>',            '</italic>' => '</i>',
            '<fixed>'       => '<tt>',           '</fixed>'  => '</tt>',
            '<smaller>'     => '<font size=-1>', '</smaller>'=> '</font>',
            '<bigger>'      => '<font size=+1>', '</bigger>' => '</font>',
            '<underline>'   => '<span style="text-decoration: underline">', '</underline>'   => '</span>',
            '<flushleft>'   => '<span style="text-align: left">',           '</flushleft>'   => '</span>',
            '<flushright>'  => '<span style="text-align: right">',          '</flushright>'  => '</span>',
            '<flushboth>'   => '<span style="text-align: justified">',      '</flushboth>'   => '</span>',
            '<indent>'      => '<span style="padding-left: 20px">',         '</indent>'      => '</span>',
            '<indentright>' => '<span style="padding-right: 20px">',        '</indentright>' => '</span>',
        ];

        return str_ireplace(array_keys($replace), array_values($replace), $body);
    }

    protected static function convert_font($body)
    {
        $pattern = '/(.*)\<fontfamily\>\<param\>(.*)\<\/param\>(.*)\<\/fontfamily\>(.*)/ims';

        while (preg_match($pattern, $body, $a)) {
            if (count($a) != 5) {
                continue;
            }

            $body = $a[1].'<span style="font-family: '.$a[2].'">'.$a[3].'</span>'.$a[4];
        }

        return $body;
    }

    protected static function convert_color($body)
    {
        $pattern = '/(.*)\<color\>\<param\>(.*)\<\/param\>(.*)\<\/color\>(.*)/ims';

        while (preg_match($pattern, $body, $a)) {
            if (count($a) != 5) {
                continue;
            }

            // extract color (either by name, or ####,####,####)
            if (strpos($a[2],',')) {
                $rgb   = explode(',', $a[2]);
                $color = '#';
                for ($i=0; $i<3; $i++) {
                    $color .= substr($rgb[$i], 0, 2); // just take first 2 bytes
                }
            }
            else {
                $color = $a[2];
            }

            // put it all together
            $body = $a[1].'<span style="color: '.$color.'">'.$a[3].'</span>'.$a[4];
        }

        return $body;
    }

    protected static function convert_excerpt($body)
    {
        $pattern = '/(.*)\<excerpt\>(.*)\<\/excerpt\>(.*)/i';

        while (preg_match($pattern, $body, $a)) {
            if (count($a) != 4) {
                continue;
            }

            $quoted = '';
            $lines  = explode('<br>', $a[2]);

            foreach ($lines as $line) {
                $quoted .= '&gt;'.$line.'<br>';
            }

            $body = $a[1].'<span class="quotes">'.$quoted.'</span>'.$a[3];
        }

        return $body;
    }

    /**
     * Converts Enriched text into HTML format
     *
     * @param string $body Enriched text
     *
     * @return string HTML text
     */
    public static function to_html($body)
    {
        $body = str_replace('<<','&lt;',$body);
        $body = self::convert_newlines($body);
        $body = str_replace("\n", '<br>', $body);
        $body = self::convert_formatting($body);
        $body = self::convert_color($body);
        $body = self::convert_font($body);
        $body = self::convert_excerpt($body);
        //$body = nl2br($body);

        return $body;
    }
}
lib/Roundcube/rcube_spellchecker.php000064400000031621151727150650013611 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Spellchecking using different backends                              |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Helper class for spellchecking with GoogieSpell and PSpell support.
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spellchecker
{
    private $matches = [];
    private $options = [];
    private $content;
    private $engine;
    private $backend;
    private $lang;
    private $rc;
    private $error;
    private $dict;
    private $have_dict;


    /**
     * Constructor
     *
     * @param string $lang Language code
     */
    function __construct($lang = 'en')
    {
        $this->rc     = rcube::get_instance();
        $this->engine = $this->rc->config->get('spellcheck_engine', 'googie');
        $this->lang   = $lang ?: 'en';

        $this->options = [
            'ignore_syms' => $this->rc->config->get('spellcheck_ignore_syms'),
            'ignore_nums' => $this->rc->config->get('spellcheck_ignore_nums'),
            'ignore_caps' => $this->rc->config->get('spellcheck_ignore_caps'),
            'dictionary'  => $this->rc->config->get('spellcheck_dictionary'),
        ];

        $class = 'rcube_spellchecker_' . $this->engine;

        if (class_exists($class)) {
            $this->backend = new $class($this, $this->lang, $this->options);
        }
        else {
            $this->error = "Unknown spellcheck engine '$this->engine'";
        }
    }

    /**
     * Return a list of supported languages
     */
    function languages()
    {
        // trust configuration
        $configured = $this->rc->config->get('spellcheck_languages');
        if (!empty($configured) && is_array($configured) && empty($configured[0])) {
            return $configured;
        }

        $langs = [];
        if (!empty($configured)) {
            $langs = (array) $configured;
        }
        else if ($this->backend) {
            $langs = $this->backend->languages();
        }

        // load index
        $rcube_languages        = [];
        $rcube_language_aliases = [];

        @include(RCUBE_LOCALIZATION_DIR . 'index.inc');

        // add correct labels
        $languages = [];
        foreach ($langs as $lang) {
            $langc = strtolower(substr($lang, 0, 2));
            $alias = !empty($rcube_language_aliases[$langc]) ? $rcube_language_aliases[$langc] : null;
            if (!$alias) {
                $alias = $langc.'_'.strtoupper($langc);
            }
            if (!empty($rcube_languages[$lang])) {
                $languages[$lang] = $rcube_languages[$lang];
            }
            else if (!empty($rcube_languages[$alias])) {
                $languages[$lang] = $rcube_languages[$alias];
            }
            else {
                $languages[$lang] = ucfirst($lang);
            }
        }

        // remove possible duplicates (#1489395)
        $languages = array_unique($languages);

        asort($languages);

        return $languages;
    }

    /**
     * Set content and check spelling
     *
     * @param string $text    Text content for spellchecking
     * @param bool   $is_html Enables HTML-to-Text conversion
     *
     * @return bool True when no misspelling found, otherwise false
     */
    function check($text, $is_html = false)
    {
        // convert to plain text
        if ($is_html) {
            $this->content = $this->html2text($text);
        }
        else {
            $this->content = $text;
        }

        // ignore links (#8527)
        $callback = function ($matches) {
            // replace the link with a dummy string that has the same length
            // we can't just remove the link
            return str_repeat(' ', strlen($matches[0]));
        };

        $this->content = preg_replace_callback('~(^|\s)(www.\S+|[a-z]+://\S+)~', $callback, $this->content);

        if ($this->backend) {
            $this->matches = $this->backend->check($this->content);
        }

        return $this->found() == 0;
    }

    /**
     * Number of misspellings found (after check)
     *
     * @return int Number of misspellings
     */
    function found()
    {
        return count($this->matches);
    }

    /**
     * Returns suggestions for the specified word
     *
     * @param string $word The word
     *
     * @return array Suggestions list
     */
    function get_suggestions($word)
    {
        if ($this->backend) {
            return $this->backend->get_suggestions($word);
        }

        return [];
    }

    /**
     * Returns misspelled words
     *
     * @param string $text The content for spellchecking. If empty content
     *                     used for check() method will be used.
     *
     * @return array List of misspelled words
     */
    function get_words($text = null, $is_html=false)
    {
        if ($is_html) {
            $text = $this->html2text($text);
        }

        if ($this->backend) {
            return $this->backend->get_words($text);
        }

        return [];
    }

    /**
     * Returns checking result in XML (Googiespell) format
     *
     * @return string XML content
     */
    function get_xml()
    {
        // send output
        $out = '<?xml version="1.0" encoding="'.RCUBE_CHARSET.'"?><spellresult charschecked="'.mb_strlen($this->content).'">';

        foreach ((array) $this->matches as $item) {
            $out .= '<c o="'.$item[1].'" l="'.$item[2].'">';
            $out .= is_array($item[4]) ? implode("\t", $item[4]) : $item[4];
            $out .= '</c>';
        }

        $out .= '</spellresult>';

        return $out;
    }

    /**
     * Returns checking result (misspelled words with suggestions)
     *
     * @return array Spellchecking result. An array indexed by word.
     */
    function get()
    {
        $result = [];

        foreach ((array) $this->matches as $item) {
            if ($this->engine == 'pspell') {
                $word = $item[0];
            }
            else {
                $word = mb_substr($this->content, $item[1], $item[2], RCUBE_CHARSET);
            }

            if (is_array($item[4])) {
                $suggestions = $item[4];
            }
            else if (empty($item[4])) {
                $suggestions = [];
            }
            else {
                $suggestions = explode("\t", $item[4]);
            }

            $result[$word] = $suggestions;
        }

        return $result;
    }

    /**
     * Returns error message
     *
     * @return string Error message
     */
    function error()
    {
        return $this->error ?: ($this->backend ? $this->backend->error() : false);
    }

    private function html2text($text)
    {
        $h2t = new rcube_html2text($text, false, false, 0);
        return $h2t->get_text();
    }

    /**
     * Check if the specified word is an exception according to the spellcheck options.
     *
     * @param string $word The word
     *
     * @return bool True if the word is an exception, False otherwise
     */
    public function is_exception($word)
    {
        // Contain only symbols (e.g. "+9,0", "2:2")
        if (!$word || preg_match('/^[0-9@#$%^&_+~*<>=:;?!,.-]+$/', $word)) {
            return true;
        }

        // Contain symbols (e.g. "g@@gle"), all symbols excluding separators
        if (!empty($this->options['ignore_syms']) && preg_match('/[@#$%^&_+~*=-]/', $word)) {
            return true;
        }

        // Contain numbers (e.g. "g00g13")
        if (!empty($this->options['ignore_nums']) && preg_match('/[0-9]/', $word)) {
            return true;
        }

        // Blocked caps (e.g. "GOOGLE")
        if (!empty($this->options['ignore_caps']) && $word == mb_strtoupper($word)) {
            return true;
        }

        // Use exceptions from dictionary
        if (!empty($this->options['dictionary'])) {
            $this->load_dict();

            // @TODO: should dictionary be case-insensitive?
            if (!empty($this->dict) && in_array($word, $this->dict)) {
                return true;
            }
        }

        return false;
    }

    /**
     * Add a word to dictionary
     *
     * @param string  $word  The word to add
     */
    public function add_word($word)
    {
        $this->load_dict();

        foreach (explode(' ', $word) as $word) {
            // sanity check
            if (strlen($word) < 512) {
                $this->dict[] = $word;
                $valid = true;
            }
        }

        if (!empty($valid)) {
            $this->dict = array_unique($this->dict);
            $this->update_dict();
        }
    }

    /**
     * Remove a word from dictionary
     *
     * @param string  $word  The word to remove
     */
    public function remove_word($word)
    {
        $this->load_dict();

        if (($key = array_search($word, $this->dict)) !== false) {
            unset($this->dict[$key]);
            $this->update_dict();
        }
    }

    /**
     * Update dictionary row in DB
     */
    private function update_dict()
    {
        $userid = null;
        if (strcasecmp($this->options['dictionary'], 'shared') != 0) {
            $userid = $this->rc->get_user_id();
        }

        $plugin = $this->rc->plugins->exec_hook('spell_dictionary_save', [
            'userid' => $userid, 'language' => $this->lang, 'dictionary' => $this->dict]);

        if (!empty($plugin['abort'])) {
            return;
        }

        if ($this->have_dict) {
            if (!empty($this->dict)) {
                $this->rc->db->query(
                    "UPDATE " . $this->rc->db->table_name('dictionary', true)
                    ." SET `data` = ?"
                    ." WHERE `user_id` " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL")
                        ." AND `language` = ?",
                    implode(' ', $plugin['dictionary']), $plugin['language']);
            }
            // don't store empty dict
            else {
                $this->rc->db->query(
                    "DELETE FROM " . $this->rc->db->table_name('dictionary', true)
                    ." WHERE `user_id` " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL")
                        ." AND `language` = ?",
                    $plugin['language']);
            }
        }
        else if (!empty($this->dict)) {
            $this->rc->db->query(
                "INSERT INTO " . $this->rc->db->table_name('dictionary', true)
                ." (`user_id`, `language`, `data`) VALUES (?, ?, ?)",
                $plugin['userid'], $plugin['language'], implode(' ', $plugin['dictionary']));
        }
    }

    /**
     * Get dictionary from DB
     */
    private function load_dict()
    {
        if (is_array($this->dict)) {
            return $this->dict;
        }

        $userid = null;
        if (strcasecmp($this->options['dictionary'], 'shared') != 0) {
            $userid = $this->rc->get_user_id();
        }

        $plugin = $this->rc->plugins->exec_hook('spell_dictionary_get', [
            'userid' => $userid, 'language' => $this->lang, 'dictionary' => []]);

        if (empty($plugin['abort'])) {
            $dict = [];
            $sql_result = $this->rc->db->query(
                "SELECT `data` FROM " . $this->rc->db->table_name('dictionary', true)
                ." WHERE `user_id` ". ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL")
                    ." AND `language` = ?",
                $plugin['language']);

            if ($sql_arr = $this->rc->db->fetch_assoc($sql_result)) {
                $this->have_dict = true;
                if (!empty($sql_arr['data'])) {
                    $dict = explode(' ', $sql_arr['data']);
                }
            }

            $plugin['dictionary'] = array_merge((array)$plugin['dictionary'], $dict);
        }

        if (!empty($plugin['dictionary']) && is_array($plugin['dictionary'])) {
            $this->dict = $plugin['dictionary'];
        }
        else {
            $this->dict = [];
        }

        return $this->dict;
    }
}
lib/Roundcube/rcube_user.php000064400000077261151727150650012135 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   This class represents a system user linked and provides access      |
 |   to the related database records.                                    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class representing a system user
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_user
{
    /** @var int User identifier */
    public $ID;

    /** @var array User properties */
    public $data;

    /** @var string User language code */
    public $language;

    /** @var array User preferences */
    public $prefs;


    /** @var rcube_db Holds database connection */
    private $db;

    /** @var rcube Framework object */
    private $rc;

    /** @var array Internal identities cache */
    private $identities = [];

    /** @var array Internal emails cache */
    private $emails;


    const SEARCH_ADDRESSBOOK = 1;
    const SEARCH_MAIL        = 2;


    /**
     * Object constructor
     *
     * @param int   $id      User id
     * @param array $sql_arr SQL result set
     */
    function __construct($id = null, $sql_arr = null)
    {
        $this->rc = rcube::get_instance();
        $this->db = $this->rc->get_dbh();

        if ($id && !$sql_arr) {
            $sql_result = $this->db->query(
                "SELECT * FROM " . $this->db->table_name('users', true)
                . " WHERE `user_id` = ?", $id
            );

            $sql_arr = $this->db->fetch_assoc($sql_result);
        }

        if (!empty($sql_arr)) {
            $this->ID       = (int) $sql_arr['user_id'];
            $this->data     = $sql_arr;
            $this->language = $sql_arr['language'];
        }
    }

    /**
     * Build a user name string (as e-mail address)
     *
     * @param string $part Username part (empty or 'local' or 'domain', 'mail')
     *
     * @return string Full user name or its part
     */
    function get_username($part = null)
    {
        if (!empty($this->data['username'])) {
            // return real name
            if (!$part) {
                return $this->data['username'];
            }

            list($local, $domain) = rcube_utils::explode('@', $this->data['username']);

            // at least we should always have the local part
            if ($part == 'local') {
                return $local;
            }
            // if no domain was provided...
            if (empty($domain)) {
                $domain = $this->rc->config->mail_domain($this->data['mail_host']);
            }

            if ($part == 'domain') {
                return $domain;
            }

            if (!empty($domain)) {
                return $local . '@' . $domain;
            }

            return $local;
        }
    }

    /**
     * Get the preferences saved for this user
     *
     * @return array Hash array with prefs
     */
    function get_prefs()
    {
        if (isset($this->prefs)) {
            return $this->prefs;
        }

        $this->prefs = [];

        if (!empty($this->language)) {
            $this->prefs['language'] = $this->language;
        }

        if ($this->ID) {
            // Preferences from session (write-master is unavailable)
            if (!empty($_SESSION['preferences'])) {
                // Check last write attempt time, try to write again (every 5 minutes)
                if ($_SESSION['preferences_time'] < time() - 5 * 60) {
                    $saved_prefs = unserialize($_SESSION['preferences']);
                    $this->rc->session->remove('preferences');
                    $this->rc->session->remove('preferences_time');
                    $this->save_prefs($saved_prefs);
                }
                else {
                    $this->data['preferences'] = $_SESSION['preferences'];
                }
            }

            if ($this->data['preferences']) {
                $this->prefs += (array) unserialize($this->data['preferences']);
            }
        }

        return $this->prefs;
    }

    /**
     * Write the given user prefs to the user's record
     *
     * @param array $a_user_prefs User prefs to save
     * @param bool  $no_session   Simplified language/preferences handling
     *
     * @return bool True on success, False on failure
     */
    function save_prefs($a_user_prefs, $no_session = false)
    {
        if (!$this->ID) {
            return false;
        }

        $config       = $this->rc->config;
        $transient    = $config->transient_options();
        $a_user_prefs = array_diff_key($a_user_prefs, array_flip($transient));

        if (empty($a_user_prefs)) {
            return true;
        }

        $plugin = $this->rc->plugins->exec_hook('preferences_update', [
                'userid' => $this->ID,
                'prefs'  => $a_user_prefs,
                'old'    => (array)$this->get_prefs()
        ]);

        if (!empty($plugin['abort'])) {
            return false;
        }

        $a_user_prefs = $plugin['prefs'];
        $old_prefs    = $plugin['old'];
        $defaults     = $config->all();

        // merge (partial) prefs array with existing settings
        $this->prefs = $save_prefs = $a_user_prefs + $old_prefs;
        unset($save_prefs['language']);

        // don't save prefs with default values if they haven't been changed yet
        // Warning: we use result of rcube_config::all() here instead of just get() (#5782)
        foreach ($a_user_prefs as $key => $value) {
            if ($value === null || (!isset($old_prefs[$key]) && isset($defaults[$key]) && $value === $defaults[$key])) {
                unset($save_prefs[$key]);
            }
        }

        $save_prefs = serialize($save_prefs);
        if (!$no_session) {
            $this->language = $_SESSION['language'];
        }

        $this->db->query(
            "UPDATE ".$this->db->table_name('users', true).
            " SET `preferences` = ?, `language` = ?".
            " WHERE `user_id` = ?",
            $save_prefs,
            $this->language,
            $this->ID
        );

        // Update success
        if ($this->db->affected_rows() !== false) {
            $this->data['preferences'] = $save_prefs;

            if (!$no_session) {
                $config->set_user_prefs($this->prefs);

                if (isset($_SESSION['preferences'])) {
                    $this->rc->session->remove('preferences');
                    $this->rc->session->remove('preferences_time');
                }
            }

            return true;
        }
        // Update error, but we are using replication (we have read-only DB connection)
        // and we are storing session not in the SQL database
        // we can store preferences in session and try to write later (see get_prefs())
        else if (!$no_session && $this->db->is_replicated()
            && $config->get('session_storage', 'db') != 'db'
        ) {
            $_SESSION['preferences'] = $save_prefs;
            $_SESSION['preferences_time'] = time();
            $config->set_user_prefs($this->prefs);
            $this->data['preferences'] = $save_prefs;
        }

        return false;
    }

    /**
     * Generate a unique hash to identify this user with
     */
    function get_hash()
    {
        $prefs = $this->get_prefs();

        // generate a random hash and store it in user prefs
        if (empty($prefs['client_hash'])) {
            $prefs['client_hash'] = rcube_utils::random_bytes(16);
            $this->save_prefs(['client_hash' => $prefs['client_hash']]);
        }

        return $prefs['client_hash'];
    }

    /**
     * Return a list of all user emails (from identities)
     *
     * @param bool $default Return only default identity
     *
     * @return array List of emails (identity_id, name, email) or single email-data
     */
    function list_emails($default = false)
    {
        if ($this->emails === null) {
            $this->emails = [];

            $sql_result = $this->db->query(
                "SELECT `identity_id`, `name`, `email`"
                ." FROM " . $this->db->table_name('identities', true)
                ." WHERE `user_id` = ? AND `del` <> 1"
                ." ORDER BY `standard` DESC, `name` ASC, `email` ASC, `identity_id` ASC",
                $this->ID
            );

            while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
                $this->emails[] = $sql_arr;
            }
        }

        return $default ? $this->emails[0] : $this->emails;
    }

    /**
     * Get default identity of this user
     *
     * @param int $id Identity ID. If empty, the default identity is returned
     *
     * @return array Hash array with all cols of the identity record
     */
    function get_identity($id = null)
    {
        $id = (int) $id;

        // cache identities for better performance
        if (!array_key_exists($id, $this->identities)) {
            $result = $this->list_identities($id ? "AND `identity_id` = $id" : '');
            $this->identities[$id] = $result[0];
        }

        return $this->identities[$id];
    }

    /**
     * Return a list of all identities linked with this user
     *
     * @param string $sql_add   Optional WHERE clauses
     * @param bool   $formatted Format identity email and name
     *
     * @return array List of identities
     */
    function list_identities($sql_add = '', $formatted = false)
    {
        $result = [];

        $sql_result = $this->db->query(
            "SELECT * FROM ".$this->db->table_name('identities', true)
            . " WHERE `del` <> 1 AND `user_id` = ?" . ($sql_add ? " $sql_add" : "")
            . " ORDER BY `standard` DESC, `name` ASC, `email` ASC, `identity_id` ASC",
            $this->ID
        );

        while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            if ($formatted) {
                $ascii_email = format_email($sql_arr['email']);
                $utf8_email  = format_email(rcube_utils::idn_to_utf8($ascii_email));

                $sql_arr['email_ascii'] = $ascii_email;
                $sql_arr['email']       = $utf8_email;
                $sql_arr['ident']       = format_email_recipient($ascii_email, $sql_arr['name']);
            }

            $result[] = $sql_arr;
        }

        return $result;
    }

    /**
     * Update a specific identity record
     *
     * @param int   $iid  Identity ID
     * @param array $data Hash array with col->value pairs to save
     *
     * @return bool True if saved successfully, false if nothing changed
     */
    function update_identity($iid, $data)
    {
        if (!$this->ID) {
            return false;
        }

        $query_cols = $query_params = [];

        foreach ((array) $data as $col => $value) {
            $query_cols[]   = $this->db->quote_identifier($col) . ' = ?';
            $query_params[] = $value;
        }
        $query_params[] = $iid;
        $query_params[] = $this->ID;

        $sql = "UPDATE ".$this->db->table_name('identities', true).
            " SET `changed` = ".$this->db->now() . ", " . implode(', ', $query_cols)
            . " WHERE `identity_id` = ?"
                . " AND `user_id` = ?"
                . " AND `del` <> 1";

        $this->db->query($sql, $query_params);

        // clear the cache
        $this->identities = [];
        $this->emails     = null;

        return $this->db->affected_rows() > 0;
    }

    /**
     * Create a new identity record linked with this user
     *
     * @param array $data Hash array with col->value pairs to save
     *
     * @return int|false The inserted identity ID or false on error
     */
    function insert_identity($data)
    {
        if (!$this->ID) {
            return false;
        }

        unset($data['user_id']);

        $insert_cols   = [];
        $insert_values = [];

        foreach ((array) $data as $col => $value) {
            $insert_cols[]   = $this->db->quote_identifier($col);
            $insert_values[] = $value;
        }

        $insert_cols[]   = $this->db->quote_identifier('user_id');
        $insert_values[] = $this->ID;

        $sql = "INSERT INTO " . $this->db->table_name('identities', true)
            . " (`changed`, " . implode(', ', $insert_cols) . ")"
            . " VALUES (" . $this->db->now() . ", " . implode(', ', array_pad([], count($insert_values), '?')) . ")";

        $insert = $this->db->query($sql, $insert_values);

        // clear the cache
        $this->identities = [];
        $this->emails     = null;

        return $this->db->affected_rows($insert) ? $this->db->insert_id('identities') : false;
    }

    /**
     * Mark the given identity as deleted
     *
     * @param int $iid Identity ID
     *
     * @return bool True if deleted successfully, false if nothing changed
     */
    function delete_identity($iid)
    {
        if (!$this->ID) {
            return false;
        }

        $sql_result = $this->db->query(
            "SELECT count(*) AS ident_count FROM " . $this->db->table_name('identities', true)
            . " WHERE `user_id` = ? AND `del` <> 1",
            $this->ID
        );

        $sql_arr = $this->db->fetch_assoc($sql_result);

        // we'll not delete last identity
        if ($sql_arr['ident_count'] <= 1) {
            return false;
        }

        $this->db->query(
            "UPDATE " . $this->db->table_name('identities', true)
            . " SET `del` = 1, `changed` = " . $this->db->now()
            . " WHERE `user_id` = ? AND `identity_id` = ?",
            $this->ID,
            $iid
        );

        // clear the cache
        $this->identities = [];
        $this->emails     = null;

        return $this->db->affected_rows() > 0;
    }

    /**
     * Make this identity the default one for this user
     *
     * @param int $iid The identity ID
     */
    function set_default($iid)
    {
        if ($this->ID && $iid) {
            $this->db->query(
                "UPDATE " . $this->db->table_name('identities', true)
                . " SET `standard` = '0'"
                . " WHERE `user_id` = ? AND `identity_id` <> ?",
                $this->ID,
                $iid
            );

            $this->db->query(
                "UPDATE " . $this->db->table_name('identities', true)
                . " SET `standard` = '1'"
                . " WHERE `user_id` = ? AND `identity_id` = ?",
                $this->ID,
                $iid
            );

            $this->identities = [];
        }
    }

    /**
     * Update user's last_login timestamp
     */
    function touch()
    {
        if ($this->ID) {
            $this->db->query(
                "UPDATE " . $this->db->table_name('users', true)
                . " SET `last_login` = " . $this->db->now()
                . " WHERE `user_id` = ?",
                $this->ID
            );
        }
    }

    /**
     * Update user's failed_login timestamp and counter
     */
    function failed_login()
    {
        if ($this->ID && $this->rc->config->get('login_rate_limit', 3)) {
            $counter = 0;

            if (empty($this->data['failed_login'])) {
                $failed_login = new DateTime('now');
                $counter      = 1;
            }
            else {
                $failed_login = new DateTime($this->data['failed_login']);
                $threshold    = new DateTime('- 60 seconds');

                if ($failed_login < $threshold) {
                    $failed_login = new DateTime('now');
                    $counter      = 1;
                }
            }

            $this->db->query(
                "UPDATE " . $this->db->table_name('users', true)
                    . " SET `failed_login` = ?"
                    . ", `failed_login_counter` = " . ($counter ?: "`failed_login_counter` + 1")
                . " WHERE `user_id` = ?",
                $failed_login, $this->ID
            );
        }
    }

    /**
     * Checks if the account is locked, e.g. as a result of brute-force prevention
     */
    function is_locked()
    {
        if (empty($this->data['failed_login'])) {
            return false;
        }

        if ($rate = (int) $this->rc->config->get('login_rate_limit', 3)) {
            $last_failed = new DateTime($this->data['failed_login']);
            $threshold   = new DateTime('- 60 seconds');

            if ($last_failed > $threshold && $this->data['failed_login_counter'] >= $rate) {
                return true;
            }
        }

        return false;
    }

    /**
     * Clear the saved object state
     */
    function reset()
    {
        $this->ID   = null;
        $this->data = null;
    }

    /**
     * Find a user record matching the given name and host
     *
     * @param string $user IMAP user name
     * @param string $host IMAP host name
     *
     * @return rcube_user New user instance
     */
    static function query($user, $host)
    {
        $dbh    = rcube::get_instance()->get_dbh();
        $config = rcube::get_instance()->config;

        // query for matching user name
        $sql_result = $dbh->query("SELECT * FROM " . $dbh->table_name('users', true)
            ." WHERE `mail_host` = ? AND `username` = ?", $host, $user);

        $sql_arr = $dbh->fetch_assoc($sql_result);

        // username not found, try aliases from identities
        if (empty($sql_arr) && $config->get('user_aliases') && strpos($user, '@')) {
            $sql_result = $dbh->limitquery("SELECT u.*"
                . " FROM " . $dbh->table_name('users', true) . " u"
                . " JOIN " . $dbh->table_name('identities', true) . " i ON (i.`user_id` = u.`user_id`)"
                . " WHERE `email` = ? AND `del` <> 1",
                0, 1, $user
            );

            $sql_arr = $dbh->fetch_assoc($sql_result);
        }

        // user already registered -> overwrite username
        if ($sql_arr) {
            return new rcube_user($sql_arr['user_id'], $sql_arr);
        }
    }

    /**
     * Create a new user record and return a rcube_user instance
     *
     * @param string $user IMAP user name
     * @param string $host IMAP host
     *
     * @return rcube_user|null New user instance on success, Null on error/abort
     */
    static function create($user, $host)
    {
        $user_name  = '';
        $user_email = '';
        $rcube      = rcube::get_instance();
        $dbh        = $rcube->get_dbh();

        // try to resolve user in virtuser table and file
        if ($email_list = self::user2email($user, false, true)) {
            $user_email = is_array($email_list[0]) ? $email_list[0]['email'] : $email_list[0];
        }

        $data = $rcube->plugins->exec_hook('user_create', [
                'host'        => $host,
                'user'        => $user,
                'user_name'   => $user_name,
                'user_email'  => $user_email,
                'email_list'  => $email_list,
                'language'    => $_SESSION['language'] ?? null,
                'preferences' => [],
        ]);

        // plugin aborted this operation
        if ($data['abort']) {
            return;
        }

        $insert = $dbh->query(
            "INSERT INTO " . $dbh->table_name('users', true)
            . " (`created`, `last_login`, `username`, `mail_host`, `language`, `preferences`)"
            . " VALUES (" . $dbh->now() . ", " . $dbh->now() . ", ?, ?, ?, ?)",
            $data['user'],
            $data['host'],
            $data['language'],
            serialize($data['preferences'])
        );

        if ($dbh->affected_rows($insert) && ($user_id = $dbh->insert_id('users'))) {
            // create rcube_user instance to make plugin hooks work
            $user_instance = new rcube_user($user_id, [
                    'user_id'     => $user_id,
                    'username'    => $data['user'],
                    'mail_host'   => $data['host'],
                    'language'    => $data['language'],
                    'preferences' => serialize($data['preferences']),
            ]);

            $rcube->user = $user_instance;
            $mail_domain = $rcube->config->mail_domain($data['host']);
            $user_name   = $data['user_name'];
            $user_email  = $data['user_email'];
            $email_list  = $data['email_list'];

            if (empty($email_list)) {
                if (empty($user_email)) {
                    $user_email = strpos($data['user'], '@') ? $user : sprintf('%s@%s', $data['user'], $mail_domain);
                }
                $email_list[] = $user_email;
            }
            // identities_level check
            else if (count($email_list) > 1 && $rcube->config->get('identities_level', 0) > 1) {
                $email_list = [$email_list[0]];
            }

            if (empty($user_name)) {
                $user_name = $data['user'];
            }

            // create new identities records
            $standard = 1;
            foreach ($email_list as $row) {
                $record = [];

                if (is_array($row)) {
                    if (empty($row['email'])) {
                        continue;
                    }
                    $record = $row;
                }
                else {
                    $record['email'] = $row;
                }

                if (empty($record['name'])) {
                    $record['name'] = $user_name != $record['email'] ? $user_name : '';
                }

                $record['user_id']  = $user_id;
                $record['standard'] = $standard;

                $plugin = $rcube->plugins->exec_hook('identity_create',
                    ['login' => true, 'record' => $record]);

                if (!$plugin['abort'] && $plugin['record']['email']) {
                    $rcube->user->insert_identity($plugin['record']);
                }

                $standard = 0;
            }
        }
        else {
            rcube::raise_error([
                    'code' => 500, 'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Failed to create new user"
                ],
                true, false
            );
        }

        return !empty($user_instance) ? $user_instance : null;
    }

    /**
     * Resolve username using a virtuser plugins
     *
     * @param string $email E-mail address to resolve
     *
     * @return string Resolved IMAP username
     */
    static function email2user($email)
    {
        $rcube  = rcube::get_instance();
        $plugin = $rcube->plugins->exec_hook('email2user', ['email' => $email, 'user' => null]);

        return $plugin['user'];
    }

    /**
     * Resolve e-mail address from virtuser plugins
     *
     * @param string $user     User name
     * @param bool   $first    If true returns first found entry
     * @param bool   $extended If true returns email as array (email and name for identity)
     *
     * @return mixed Resolved e-mail address string or array of strings
     */
    static function user2email($user, $first = true, $extended = false)
    {
        $rcube  = rcube::get_instance();
        $plugin = $rcube->plugins->exec_hook('user2email', [
                'email'    => null,
                'user'     => $user,
                'first'    => $first,
                'extended' => $extended
        ]);

        return empty($plugin['email']) ? null : $plugin['email'];
    }

    /**
     * Return a list of saved searches linked with this user
     *
     * @param int $type Search type
     *
     * @return array List of saved searches indexed by search ID
     */
    function list_searches($type)
    {
        $plugin = $this->rc->plugins->exec_hook('saved_search_list', ['type' => $type]);

        if ($plugin['abort']) {
            return (array) $plugin['result'];
        }

        $result = [];

        $sql_result = $this->db->query(
            "SELECT `search_id` AS id, `name`"
            . " FROM " . $this->db->table_name('searches', true)
            . " WHERE `user_id` = ? AND `type` = ?"
            . " ORDER BY `name`",
            (int) $this->ID, (int) $type
        );

        while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            $result[$sql_arr['id']] = $sql_arr;
        }

        return $result;
    }

    /**
     * Return saved search data.
     *
     * @param int $id Row identifier
     *
     * @return array Data
     */
    function get_search($id)
    {
        $plugin = $this->rc->plugins->exec_hook('saved_search_get', ['id' => $id]);

        if ($plugin['abort']) {
            return (array) $plugin['result'];
        }

        $sql_result = $this->db->query(
            "SELECT `name`, `data`, `type`"
            . " FROM ".$this->db->table_name('searches', true)
            . " WHERE `user_id` = ? AND `search_id` = ?",
            (int) $this->ID, (int) $id
        );

        while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            return [
                'id'   => $id,
                'name' => $sql_arr['name'],
                'type' => $sql_arr['type'],
                'data' => unserialize($sql_arr['data']),
            ];
        }

        return [];
    }

    /**
     * Deletes given saved search record
     *
     * @param int $sid Search ID
     *
     * @return bool True if deleted successfully, false if nothing changed
     */
    function delete_search($sid)
    {
        if (!$this->ID) {
            return false;
        }

        $this->db->query(
            "DELETE FROM " . $this->db->table_name('searches', true)
            ." WHERE `user_id` = ? AND `search_id` = ?",
            (int) $this->ID, $sid
        );

        return $this->db->affected_rows() > 0;
    }

    /**
     * Create a new saved search record linked with this user
     *
     * @param array $data Hash array with col->value pairs to save
     *
     * @return int The inserted search ID or false on error
     */
    function insert_search($data)
    {
        if (!$this->ID) {
            return false;
        }

        $insert_cols[]   = 'user_id';
        $insert_values[] = (int) $this->ID;
        $insert_cols[]   = $this->db->quote_identifier('type');
        $insert_values[] = (int) $data['type'];
        $insert_cols[]   = $this->db->quote_identifier('name');
        $insert_values[] = $data['name'];
        $insert_cols[]   = $this->db->quote_identifier('data');
        $insert_values[] = serialize($data['data']);

        $sql = "INSERT INTO " . $this->db->table_name('searches', true)
            . " (" . implode(', ', $insert_cols) . ")"
            . " VALUES (" . implode(', ', array_pad([], count($insert_values), '?')) . ")";

        $insert = $this->db->query($sql, $insert_values);

        return $this->db->affected_rows($insert) ? $this->db->insert_id('searches') : false;
    }

    /**
     * Get a saved response of this user.
     *
     * @param int $id Response ID
     *
     * @return array|null Hash array with all cols of the response record, NULL if not found
     */
    function get_response($id)
    {
        $sql_result = $this->db->query(
            "SELECT * FROM " . $this->db->table_name('responses', true)
                . " WHERE `user_id` = ? AND `response_id` = ? AND `del` = 0",
            $this->ID, $id
        );

        if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            $sql_arr['id']      = $sql_arr['response_id'];
            $sql_arr['is_html'] = !empty($sql_arr['is_html']);

            unset($sql_arr['response_id']);

            return $sql_arr;
        }
    }

    /**
     * Return a list of all responses of this user.
     *
     * @return array List of responses (id, name)
     */
    function list_responses()
    {
        // Migrate the old responses existing in user preferences
        if (!empty($this->prefs['compose_responses'])) {
            foreach ($this->prefs['compose_responses'] as $response) {
                $this->insert_response([
                        'name' => $response['name'],
                        'data' => $response['text'],
                ]);
            }

            $this->save_prefs(['compose_responses' => null]);
        }

        $sql_result = $this->db->query(
            "SELECT `response_id`, `name` FROM " . $this->db->table_name('responses', true)
                . " WHERE `user_id` = ? AND `del` = 0"
                . " ORDER BY `name`",
            $this->ID
        );

        $result = [];

        while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            $result[] = [
                'id'   => $sql_arr['response_id'],
                'name' => $sql_arr['name'],
            ];
        }

        return $result;
    }

    /**
     * Update a specific response record.
     *
     * @param int   $id   Response ID
     * @param array $data Hash array with col->value pairs to save
     *
     * @return bool True if saved successfully, false if nothing changed
     */
    function update_response($id, $data)
    {
        if (!$this->ID) {
            return false;
        }

        $query_cols = $query_params = [];

        foreach (['name', 'data', 'is_html'] as $col) {
            if (isset($data[$col])) {
                $query_cols[]   = $this->db->quote_identifier($col) . ' = ?';
                $query_params[] = $col == 'is_html' ? intval($data[$col]) : $data[$col];
            }
        }
        $query_params[] = $id;
        $query_params[] = $this->ID;

        $sql = "UPDATE " . $this->db->table_name('responses', true)
            . " SET `changed` = " . $this->db->now() . ", " . implode(', ', $query_cols)
            . " WHERE `response_id` = ? AND `user_id` = ? AND `del` = 0";

        $this->db->query($sql, $query_params);

        return $this->db->affected_rows() > 0;
    }

    /**
     * Create a new response record for the user.
     *
     * @param array $data Hash array with col->value pairs to save
     *
     * @return int|false The inserted response ID or false on error
     */
    function insert_response($data)
    {
        if (!$this->ID) {
            return false;
        }

        $query_cols   = [$this->db->quote_identifier('user_id')];
        $query_params = [$this->ID];

        foreach (['name', 'data', 'is_html'] as $col) {
            if (isset($data[$col])) {
                $query_cols[]   = $this->db->quote_identifier($col);
                $query_params[] = $col == 'is_html' ? intval($data[$col]) : $data[$col];
            }
        }

        $sql = "INSERT INTO " . $this->db->table_name('responses', true)
            . " (`changed`, " . implode(', ', $query_cols) . ")"
            . " VALUES (" . $this->db->now() . ", " . trim(str_repeat('?, ', count($query_cols)), ', ') . ")";

        $insert = $this->db->query($sql, $query_params);

        return $this->db->affected_rows($insert) ? $this->db->insert_id('responses') : false;
    }

    /**
     * Delete the given response record
     *
     * @param int $id Response ID
     *
     * @return bool True if deleted successfully, false otherwise
     */
    function delete_response($id)
    {
        if (!$this->ID) {
            return false;
        }

        $this->db->query(
            "UPDATE " . $this->db->table_name('responses', true)
                . " SET `del` = 1 WHERE `user_id` = ? AND `response_id` = ?",
            $this->ID,
            $id
        );

        return $this->db->affected_rows() > 0;
    }
}
lib/Roundcube/rcube.php000064400000160536151727150660011076 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Framework base class providing core functions and holding           |
 |   instances of all 'global' objects like db- and storage-connections  |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Base class of the Roundcube Framework
 * implemented as singleton
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube
{
    // Init options
    const INIT_WITH_DB      = 1;
    const INIT_WITH_PLUGINS = 2;

    // Request status
    const REQUEST_VALID       = 0;
    const REQUEST_ERROR_URL   = 1;
    const REQUEST_ERROR_TOKEN = 2;

    const DEBUG_LINE_LENGTH = 4096;

    /** @var rcube_config Stores instance of rcube_config */
    public $config;

    /** @var rcube_db Instance of database class */
    public $db;

    /** @var Memcache Instance of Memcache class */
    public $memcache;

    /** @var Memcached Instance of Memcached class */
    public $memcached;

    /** @var Redis Instance of Redis class */
    public $redis;

    /** @var rcube_session Instance of rcube_session class */
    public $session;

    /** @var rcube_smtp Instance of rcube_smtp class */
    public $smtp;

    /** @var rcube_storage Instance of rcube_storage class */
    public $storage;

    /** @var rcube_output Instance of rcube_output class */
    public $output;

    /** @var rcube_plugin_api Instance of rcube_plugin_api */
    public $plugins;

    /** @var rcube_user Instance of rcube_user class */
    public $user;

    /** @var int Request status */
    public $request_status = 0;

    /** @var array Localization */
    protected $texts;

    /** @var rcube_cache[] Initialized cache objects */
    protected $caches = [];

    /** @var array Registered shutdown functions */
    protected $shutdown_functions = [];

    /** @var rcube Singleton instance of rcube */
    static protected $instance;


    /**
     * This implements the 'singleton' design pattern
     *
     * @param int    $mode Options to initialize with this instance. See rcube::INIT_WITH_* constants
     * @param string $env  Environment name to run (e.g. live, dev, test)
     *
     * @return rcube The one and only instance
     */
    static function get_instance($mode = 0, $env = '')
    {
        if (!self::$instance) {
            self::$instance = new rcube($env);
            self::$instance->init($mode);
        }

        return self::$instance;
    }

    /**
     * Private constructor
     *
     * @param string $env Environment name to run (e.g. live, dev, test)
     */
    protected function __construct($env = '')
    {
        // load configuration
        $this->config  = new rcube_config($env);
        $this->plugins = new rcube_dummy_plugin_api;

        register_shutdown_function([$this, 'shutdown']);
    }

    /**
     * Initial startup function
     *
     * @param int $mode Options to initialize with this instance. See rcube::INIT_WITH_* constants
     */
    protected function init($mode = 0)
    {
        // initialize syslog
        if ($this->config->get('log_driver') == 'syslog') {
            $syslog_id       = $this->config->get('syslog_id', 'roundcube');
            $syslog_facility = $this->config->get('syslog_facility', LOG_USER);
            openlog($syslog_id, LOG_ODELAY, $syslog_facility);
        }

        // connect to database
        if ($mode & self::INIT_WITH_DB) {
            $this->get_dbh();
        }

        // create plugin API and load plugins
        if ($mode & self::INIT_WITH_PLUGINS) {
            $this->plugins = rcube_plugin_api::get_instance();
        }
    }

    /**
     * Get the current database connection
     *
     * @return rcube_db Database object
     */
    public function get_dbh()
    {
        if (!$this->db) {
            $this->db = rcube_db::factory(
                $this->config->get('db_dsnw'),
                $this->config->get('db_dsnr'),
                $this->config->get('db_persistent')
            );

            $this->db->set_debug((bool)$this->config->get('sql_debug'));
        }

        return $this->db;
    }

    /**
     * Get global handle for memcache access
     *
     * @return Memcache The memcache engine
     */
    public function get_memcache()
    {
        if (!isset($this->memcache)) {
            $this->memcache = rcube_cache_memcache::engine();
        }

        return $this->memcache;
    }

    /**
     * Get global handle for memcached access
     *
     * @return Memcached The memcached engine
     */
    public function get_memcached()
    {
        if (!isset($this->memcached)) {
            $this->memcached = rcube_cache_memcached::engine();
        }

        return $this->memcached;
    }

    /**
     * Get global handle for redis access
     *
     * @return Redis The redis engine
     */
    public function get_redis()
    {
        if (!isset($this->redis)) {
            $this->redis = rcube_cache_redis::engine();
        }

        return $this->redis;
    }

    /**
     * Initialize and get user cache object
     *
     * @param string $name    Cache identifier
     * @param string $type    Cache type ('db', 'apc', 'memcache', 'redis')
     * @param string $ttl     Expiration time for cache items
     * @param bool   $packed  Enables/disables data serialization
     * @param bool   $indexed Use indexed cache
     *
     * @return rcube_cache|null User cache object
     */
    public function get_cache($name, $type = 'db', $ttl = 0, $packed = true, $indexed = false)
    {
        if (!isset($this->caches[$name]) && ($userid = $this->get_user_id())) {
            $this->caches[$name] = rcube_cache::factory($type, $userid, $name, $ttl, $packed, $indexed);
        }

        return $this->caches[$name] ?? null;
    }

    /**
     * Initialize and get shared cache object
     *
     * @param string $name   Cache identifier
     * @param bool   $packed Enables/disables data serialization
     *
     * @return rcube_cache Shared cache object
     */
    public function get_cache_shared($name, $packed = true)
    {
        $shared_name = "shared_$name";

        if (!array_key_exists($shared_name, $this->caches)) {
            $opt  = strtolower($name) . '_cache';
            $type = $this->config->get($opt);
            $ttl  = $this->config->get($opt . '_ttl');

            if (!$type) {
                // cache is disabled
                return $this->caches[$shared_name] = null;
            }

            if ($ttl === null) {
                $ttl = $this->config->get('shared_cache_ttl', '10d');
            }

            $this->caches[$shared_name] = rcube_cache::factory($type, null, $name, $ttl, $packed);
        }

        return $this->caches[$shared_name];
    }

    /**
     * Initialize HTTP client
     *
     * @param array $options Configuration options
     *
     * @return \GuzzleHttp\Client HTTP client
     */
    public function get_http_client($options = [])
    {
        return new \GuzzleHttp\Client($options + $this->config->get('http_client'));
    }

    /**
     * Create SMTP object and connect to server
     *
     * @param bool $connect True if connection should be established
     */
    public function smtp_init($connect = false)
    {
        $this->smtp = new rcube_smtp();

        if ($connect) {
            $this->smtp->connect();
        }
    }

    /**
     * Initialize and get storage object
     *
     * @return rcube_storage Storage object
     */
    public function get_storage()
    {
        // already initialized
        if (!is_object($this->storage)) {
            $this->storage_init();
        }

        return $this->storage;
    }

    /**
     * Initialize storage object
     */
    public function storage_init()
    {
        // already initialized
        if (is_object($this->storage)) {
            return;
        }

        $driver       = $this->config->get('storage_driver', 'imap');
        $driver_class = "rcube_{$driver}";

        if (!class_exists($driver_class)) {
            self::raise_error([
                    'code' => 700, 'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Storage driver class ($driver) not found!"
                ],
                true, true
            );
        }

        // Initialize storage object
        $this->storage = new $driver_class;

        // set class options
        $options = [
            'auth_type'      => $this->config->get("{$driver}_auth_type", 'check'),
            'auth_cid'       => $this->config->get("{$driver}_auth_cid"),
            'auth_pw'        => $this->config->get("{$driver}_auth_pw"),
            'debug'          => (bool) $this->config->get("{$driver}_debug"),
            'force_caps'     => (bool) $this->config->get("{$driver}_force_caps"),
            'disabled_caps'  => $this->config->get("{$driver}_disabled_caps"),
            'socket_options' => $this->config->get("{$driver}_conn_options"),
            'timeout'        => (int) $this->config->get("{$driver}_timeout"),
            'skip_deleted'   => (bool) $this->config->get('skip_deleted'),
            'driver'         => $driver,
        ];

        if (!empty($_SESSION['storage_host'])) {
            $options['language'] = $_SESSION['language'];
            $options['host']     = $_SESSION['storage_host'];
            $options['user']     = $_SESSION['username'];
            $options['port']     = $_SESSION['storage_port'];
            $options['ssl']      = $_SESSION['storage_ssl'];
            $options['password'] = $this->decrypt($_SESSION['password']);
            $_SESSION[$driver.'_host'] = $_SESSION['storage_host'];
        }

        $options = $this->plugins->exec_hook("storage_init", $options);

        // for backward compat. (deprecated, to be removed)
        $options = $this->plugins->exec_hook("imap_init", $options);

        $this->storage->set_options($options);
        $this->set_storage_prop();

        // subscribe to 'storage_connected' hook for session logging
        if ($this->config->get('imap_log_session', false)) {
            $this->plugins->register_hook('storage_connected', [$this, 'storage_log_session']);
        }
    }

    /**
     * Set storage parameters.
     */
    protected function set_storage_prop()
    {
        $storage = $this->get_storage();

        // set pagesize from config
        $pagesize = $this->config->get('mail_pagesize');
        if (!$pagesize) {
            $pagesize = $this->config->get('pagesize', 50);
        }

        $storage->set_pagesize($pagesize);
        $storage->set_charset($this->config->get('default_charset', RCUBE_CHARSET));

        // enable caching of mail data
        $driver         = $this->config->get('storage_driver', 'imap');
        $storage_cache  = $this->config->get("{$driver}_cache");
        $messages_cache = $this->config->get('messages_cache');

        // for backward compatibility
        if ($storage_cache === null && $messages_cache === null && $this->config->get('enable_caching')) {
            $storage_cache  = 'db';
            $messages_cache = true;
        }

        if ($storage_cache) {
            $storage->set_caching($storage_cache);
        }

        if ($messages_cache) {
            $storage->set_messages_caching(true);
        }
    }

    /**
     * Set special folders type association.
     * This must be done AFTER connecting to the server!
     */
    protected function set_special_folders()
    {
        $storage = $this->get_storage();
        $folders = $storage->get_special_folders(true);
        $prefs   = [];

        // check SPECIAL-USE flags on IMAP folders
        foreach ($folders as $type => $folder) {
            $idx = $type . '_mbox';
            if ($folder !== $this->config->get($idx)) {
                $prefs[$idx] = $folder;
            }
        }

        // Some special folders differ, update user preferences
        if (!empty($prefs) && $this->user) {
            $this->user->save_prefs($prefs);
        }

        // create default folders (on login)
        if ($this->config->get('create_default_folders')) {
            $storage->create_default_folders();
        }
    }

    /**
     * Callback for IMAP connection events to log session identifiers
     *
     * @param array $args Callback arguments
     */
    public function storage_log_session($args)
    {
        if (!empty($args['session']) && session_id()) {
            $this->write_log('imap_session', $args['session']);
        }
    }

    /**
     * Create session object and start the session.
     */
    public function session_init()
    {
        // Ignore in CLI mode or when session started (Installer?)
        if (empty($_SERVER['REMOTE_ADDR']) || session_id()) {
            return;
        }

        $storage       = $this->config->get('session_storage', 'db');
        $sess_name     = $this->config->get('session_name');
        $sess_domain   = $this->config->get('session_domain');
        $sess_path     = $this->config->get('session_path');
        $sess_samesite = $this->config->get('session_samesite');
        $lifetime      = $this->config->get('session_lifetime', 0) * 60;
        $is_secure     = $this->config->get('use_https') || rcube_utils::https_check();

        // set session domain
        if ($sess_domain) {
            ini_set('session.cookie_domain', $sess_domain);
        }
        // set session path
        if ($sess_path) {
            ini_set('session.cookie_path', $sess_path);
        }
        // set session samesite attribute
        if ($sess_samesite) {
            ini_set('session.cookie_samesite', $sess_samesite);
        }
        // set session garbage collecting time according to session_lifetime
        if ($lifetime) {
            ini_set('session.gc_maxlifetime', $lifetime * 2);
        }

        // set session cookie lifetime so it never expires (#5961)
        ini_set('session.cookie_lifetime', 0);
        ini_set('session.cookie_secure', $is_secure);
        ini_set('session.name', $sess_name ?: 'roundcube_sessid');
        ini_set('session.use_cookies', 1);
        ini_set('session.use_only_cookies', 1);
        ini_set('session.cookie_httponly', 1);

        // Make sure session garbage collector is enabled when using custom handlers (#6560)
        // Note: Use session.gc_divisor to control accuracy
        if ($storage != 'php' && !ini_get('session.gc_probability')) {
            ini_set('session.gc_probability', 1);
        }

        // Start the session
        $this->session = rcube_session::factory($this->config);
        $this->session->register_gc_handler([$this, 'gc']);
        $this->session->start();
    }

    /**
     * Garbage collector - cache/temp cleaner
     */
    public function gc()
    {
        rcube_cache::gc();
        $this->get_storage()->cache_gc();
        $this->gc_temp();
    }

    /**
     * Garbage collector function for temp files.
     * Removes temporary files older than temp_dir_ttl.
     */
    public function gc_temp()
    {
        $tmp = unslashify($this->config->get('temp_dir'));

        // expire in 48 hours by default
        $temp_dir_ttl = $this->config->get('temp_dir_ttl', '48h');
        $temp_dir_ttl = get_offset_sec($temp_dir_ttl);
        if ($temp_dir_ttl < 6*3600) {
            $temp_dir_ttl = 6*3600;   // 6 hours sensible lower bound.
        }

        $expire = time() - $temp_dir_ttl;

        if ($tmp && ($dir = opendir($tmp))) {
            while (($fname = readdir($dir)) !== false) {
                if (strpos($fname, RCUBE_TEMP_FILE_PREFIX) !== 0) {
                    continue;
                }

                if (@filemtime("$tmp/$fname") < $expire) {
                    @unlink("$tmp/$fname");
                }
            }

            closedir($dir);
        }
    }

    /**
     * Runs garbage collector with probability based on
     * session settings. This is intended for environments
     * without a session.
     */
    public function gc_run()
    {
        $probability = (int) ini_get('session.gc_probability');
        $divisor     = (int) ini_get('session.gc_divisor');

        if ($divisor > 0 && $probability > 0) {
            $random = mt_rand(1, $divisor);
            if ($random <= $probability) {
                $this->gc();
            }
        }
    }

    /**
     * Get localized text in the desired language
     *
     * @param mixed  $attrib Named parameters array or label name
     * @param string $domain Label domain (plugin) name
     *
     * @return string Localized text
     */
    public function gettext($attrib, $domain = null)
    {
        // load localization files if not done yet
        if (empty($this->texts)) {
            $this->load_language();
        }

        // extract attributes
        if (is_string($attrib)) {
            $attrib = ['name' => $attrib];
        }

        $name = (string) $attrib['name'];

        // attrib contain text values: use them from now
        $slang = !empty($_SESSION['language']) ? strtolower($_SESSION['language']) : 'en_us';
        if (isset($attrib[$slang])) {
            $this->texts[$name] = $attrib[$slang];
        }
        else if ($slang != 'en_us' && isset($attrib['en_us'])) {
            $this->texts[$name] = $attrib['en_us'];
        }

        // check for text with domain
        if ($domain && isset($this->texts["$domain.$name"])) {
            $text = $this->texts["$domain.$name"];
        }
        else if (isset($this->texts[$name])) {
            $text = $this->texts[$name];
        }

        // text does not exist
        if (!isset($text)) {
            return "[$name]";
        }

        // replace vars in text
        if (!empty($attrib['vars']) && is_array($attrib['vars'])) {
            foreach ($attrib['vars'] as $var_key => $var_value) {
                if ($var_key[0] != '$') {
                    $var_key = '$' . $var_key;
                }

                $text = str_replace($var_key, $var_value ?? '', $text);
            }
        }

        // replace \n with real line break
        $text = strtr($text, ['\n' => "\n"]);

        // case folding
        if ((!empty($attrib['uppercase']) && strtolower($attrib['uppercase']) == 'first') || !empty($attrib['ucfirst'])) {
            $case_mode = MB_CASE_TITLE;
        }
        else if (!empty($attrib['uppercase'])) {
            $case_mode = MB_CASE_UPPER;
        }
        else if (!empty($attrib['lowercase'])) {
            $case_mode = MB_CASE_LOWER;
        }

        if (isset($case_mode)) {
            $text = mb_convert_case($text, $case_mode);
        }

        return $text;
    }

    /**
     * Check if the given text label exists
     *
     * @param string $name        Label name
     * @param string $domain      Label domain (plugin) name or '*' for all domains
     * @param string &$ref_domain Sets domain name if label is found
     *
     * @return bool True if text exists (either in the current language or in en_US)
     */
    public function text_exists($name, $domain = null, &$ref_domain = null)
    {
        // load localization files if not done yet
        if (empty($this->texts)) {
            $this->load_language();
        }

        if (isset($this->texts[$name])) {
            $ref_domain = '';
            return true;
        }

        // any of loaded domains (plugins)
        if ($domain == '*') {
            foreach ($this->plugins->loaded_plugins() as $domain) {
                if (isset($this->texts[$domain.'.'.$name])) {
                    $ref_domain = $domain;
                    return true;
                }
            }
        }
        // specified domain
        else if ($domain && isset($this->texts[$domain.'.'.$name])) {
            $ref_domain = $domain;
            return true;
        }

        return false;
    }

    /**
     * Load a localization package
     *
     * @param string $lang  Language ID
     * @param array  $add   Additional text labels/messages
     * @param array  $merge Additional text labels/messages to merge
     */
    public function load_language($lang = null, $add = [], $merge = [])
    {
        $sess_lang = !empty($_SESSION['language']) ? $_SESSION['language'] : 'en_US';
        $lang      = $this->language_prop($lang ?: $sess_lang);

        // load localized texts
        if (empty($this->texts) || $lang != $sess_lang) {
            // get english labels (these should be complete)
            $files = [
                RCUBE_LOCALIZATION_DIR . 'en_US/labels.inc',
                RCUBE_LOCALIZATION_DIR . 'en_US/messages.inc',
            ];

            // include user language files
            if ($lang != 'en' && $lang != 'en_US' && is_dir(RCUBE_LOCALIZATION_DIR . $lang)) {
                $files[] = RCUBE_LOCALIZATION_DIR . $lang . '/labels.inc';
                $files[] = RCUBE_LOCALIZATION_DIR . $lang . '/messages.inc';
            }

            $this->texts = [];

            foreach ($files as $file) {
                $this->texts = self::read_localization_file($file, $this->texts);
            }

            $_SESSION['language'] = $lang;
        }

        // append additional texts (from plugin)
        if (is_array($add) && !empty($add)) {
            $this->texts += $add;
        }

        // merge additional texts (from plugin)
        if (is_array($merge) && !empty($merge)) {
            $this->texts = array_merge($this->texts, $merge);
        }
    }

    /**
     * Read localized texts from an additional location (plugins, skins).
     * Then you can use the result as 2nd arg to load_language().
     *
     * @param string      $dir  Directory to search in
     * @param string|null $lang Language code to read
     *
     * @return array Localization labels/messages
     */
    public function read_localization($dir, $lang = null)
    {
        if ($lang == null) {
            $lang = $_SESSION['language'];
        }
        $langs  = array_unique(['en_US', $lang]);
        $locdir = slashify($dir);
        $texts  = [];

        // Language aliases used to find localization in similar lang, see below
        $aliases = [
            'de_CH' => 'de_DE',
            'es_AR' => 'es_ES',
            'fa_AF' => 'fa_IR',
            'nl_BE' => 'nl_NL',
            'pt_BR' => 'pt_PT',
            'zh_CN' => 'zh_TW',
        ];

        foreach ($langs as $lng) {
            $fpath = $locdir . $lng . '.inc';
            $_texts = self::read_localization_file($fpath);

            if (!empty($_texts)) {
                $texts = array_merge($texts, $_texts);
            }
            // Fallback to a localization in similar language (#1488401)
            else if ($lng != 'en_US') {
                $alias = null;
                if (!empty($aliases[$lng])) {
                    $alias = $aliases[$lng];
                }
                else if ($key = array_search($lng, $aliases)) {
                    $alias = $key;
                }

                if (!empty($alias)) {
                    $fpath = $locdir . $alias . '.inc';
                    $texts = self::read_localization_file($fpath, $texts);
                }
            }
        }

        return $texts;
    }


    /**
     * Load localization file
     *
     * @param string $file  File location
     * @param array  $texts Additional texts to merge with
     *
     * @return array Localization labels/messages
     */
    public static function read_localization_file($file, $texts = [])
    {
        if (is_file($file) && is_readable($file)) {
            $labels   = [];
            $messages = [];

            // use buffering to handle empty lines/spaces after closing PHP tag
            ob_start();
            include $file;
            ob_end_clean();

            if (!empty($labels)) {
                $texts = array_merge($texts, $labels);
            }

            if (!empty($messages)) {
                $texts = array_merge($texts, $messages);
            }
        }

        return $texts;
    }

    /**
     * Check the given string and return a valid language code
     *
     * @param string $lang Language code
     *
     * @return string Valid language code
     */
    protected function language_prop($lang)
    {
        static $rcube_languages, $rcube_language_aliases;

        // user HTTP_ACCEPT_LANGUAGE if no language is specified
        if ((empty($lang) || $lang == 'auto') && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            $accept_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
            $lang         = $accept_langs[0];

            if (preg_match('/^([a-z]+)[_-]([a-z]+)$/i', $lang, $m)) {
                $lang = $m[1] . '_' . strtoupper($m[2]);
            }
        }

        if (empty($rcube_languages)) {
            @include(RCUBE_LOCALIZATION_DIR . 'index.inc');
        }

        // check if we have an alias for that language
        if (!isset($rcube_languages[$lang]) && isset($rcube_language_aliases[$lang])) {
            $lang = $rcube_language_aliases[$lang];
        }
        // try the first two chars
        else if ($lang && !isset($rcube_languages[$lang])) {
            $short = substr($lang, 0, 2);

            // check if we have an alias for the short language code
            if (!isset($rcube_languages[$short]) && isset($rcube_language_aliases[$short])) {
                $lang = $rcube_language_aliases[$short];
            }
            // expand 'nn' to 'nn_NN'
            else if (!isset($rcube_languages[$short])) {
                $lang = $short.'_'.strtoupper($short);
            }
        }

        if (!isset($rcube_languages[$lang]) || !is_dir(RCUBE_LOCALIZATION_DIR . $lang)) {
            $lang = 'en_US';
        }

        return $lang;
    }

    /**
     * Read directory program/localization and return a list of available languages
     *
     * @return array List of available localizations
     */
    public function list_languages()
    {
        static $sa_languages = [];

        if (!count($sa_languages)) {
            @include(RCUBE_LOCALIZATION_DIR . 'index.inc');

            if ($dh = @opendir(RCUBE_LOCALIZATION_DIR)) {
                while (($name = readdir($dh)) !== false) {
                    if ($name[0] == '.' || !is_dir(RCUBE_LOCALIZATION_DIR . $name)) {
                        continue;
                    }

                    if (isset($rcube_languages[$name])) {
                        $sa_languages[$name] = $rcube_languages[$name];
                    }
                }

                closedir($dh);
            }
        }

        return $sa_languages;
    }

    /**
     * Encrypt a string
     *
     * @param string $clear  Clear text input
     * @param string $key    Encryption key to retrieve from the configuration, defaults to 'des_key'
     * @param bool   $base64 Whether or not to base64_encode() the result before returning
     *
     * @return string|false Encrypted text, false on error
     */
    public function encrypt($clear, $key = 'des_key', $base64 = true)
    {
        if (!is_string($clear) || !strlen($clear)) {
            return '';
        }

        $ckey   = $this->config->get_crypto_key($key);
        $method = $this->config->get_crypto_method();
        $iv     = rcube_utils::random_bytes(openssl_cipher_iv_length($method), true);
        $tag    = null;

        // This distinction is for PHP 7.3 which throws a warning when
        // we use $tag argument with non-AEAD cipher method here
        if (!preg_match('/-(gcm|ccm|poly1305)$/i', $method)) {
            $cipher = openssl_encrypt($clear, $method, $ckey, OPENSSL_RAW_DATA, $iv);
        }
        else {
            $cipher = openssl_encrypt($clear, $method, $ckey, OPENSSL_RAW_DATA, $iv, $tag);
        }

        if ($cipher === false) {
            self::raise_error([
                    'file'    => __FILE__,
                    'line'    => __LINE__,
                    'message' => "Failed to encrypt data with configured cipher method: $method!"
                ], true, false);

            return false;
        }

        $cipher = $iv . $cipher;

        if ($tag !== null) {
            $cipher = "##{$tag}##{$cipher}";
        }

        return $base64 ? base64_encode($cipher) : $cipher;
    }

    /**
     * Decrypt a string
     *
     * @param string $cipher Encrypted text
     * @param string $key    Encryption key to retrieve from the configuration, defaults to 'des_key'
     * @param bool   $base64 Whether or not input is base64-encoded
     *
     * @return string|false Decrypted text, false on error
     */
    public function decrypt($cipher, $key = 'des_key', $base64 = true)
    {
        if (strlen($cipher) == 0) {
            return false;
        }

        if ($base64) {
            $cipher = base64_decode($cipher);
            if ($cipher === false) {
                return false;
            }
        }

        $ckey    = $this->config->get_crypto_key($key);
        $method  = $this->config->get_crypto_method();
        $iv_size = openssl_cipher_iv_length($method);
        $tag     = null;

        if (preg_match('/^##(.{16})##/s', $cipher, $matches)) {
            $tag    = $matches[1];
            $cipher = substr($cipher, strlen($matches[0]));
        }

        $iv = substr($cipher, 0, $iv_size);

        // session corruption? (#1485970)
        if (strlen($iv) < $iv_size) {
            return false;
        }

        $cipher = substr($cipher, $iv_size);
        $clear  = openssl_decrypt($cipher, $method, $ckey, OPENSSL_RAW_DATA, $iv, $tag);

        return $clear;
    }

    /**
     * Returns session token for secure URLs
     *
     * @param bool $generate Generate token if not exists in session yet
     *
     * @return string|bool Token string, False when disabled
     */
    public function get_secure_url_token($generate = false)
    {
        if ($len = $this->config->get('use_secure_urls')) {
            if (empty($_SESSION['secure_token']) && $generate) {
                // generate x characters long token
                $length = $len > 1 ? $len : 16;
                $token  = rcube_utils::random_bytes($length);

                $plugin = $this->plugins->exec_hook('secure_token', ['value' => $token, 'length' => $length]);

                $_SESSION['secure_token'] = $plugin['value'];
            }

            if (!empty($_SESSION['secure_token'])) {
                return $_SESSION['secure_token'];
            }
        }

        return false;
    }

    /**
     * Generate a unique token to be used in a form request
     *
     * @return string The request token
     */
    public function get_request_token()
    {
        if (empty($_SESSION['request_token'])) {
            $plugin = $this->plugins->exec_hook('request_token', ['value' => rcube_utils::random_bytes(32)]);

            $_SESSION['request_token'] = $plugin['value'];
        }

        return $_SESSION['request_token'];
    }

    /**
     * Check if the current request contains a valid token.
     * Empty requests aren't checked until use_secure_urls is set.
     *
     * @param int $mode Request method
     *
     * @return bool True if request token is valid false if not
     */
    public function check_request($mode = rcube_utils::INPUT_POST)
    {
        // check secure token in URL if enabled
        if ($token = $this->get_secure_url_token()) {
            foreach (explode('/', preg_replace('/[?#&].*$/', '', $_SERVER['REQUEST_URI'])) as $tok) {
                if ($tok == $token) {
                    return true;
                }
            }

            $this->request_status = self::REQUEST_ERROR_URL;

            return false;
        }

        $sess_tok = $this->get_request_token();

        // ajax requests
        if (rcube_utils::request_header('X-Roundcube-Request') === $sess_tok) {
            return true;
        }

        // skip empty requests
        if (($mode == rcube_utils::INPUT_POST && empty($_POST))
            || ($mode == rcube_utils::INPUT_GET && empty($_GET))
        ) {
            return true;
        }

        // default method of securing requests
        $token = rcube_utils::get_input_value('_token', $mode);

        if (empty($_COOKIE[ini_get('session.name')]) || $token !== $sess_tok) {
            $this->request_status = self::REQUEST_ERROR_TOKEN;
            return false;
        }

        return true;
    }

    /**
     * Build a valid URL to this instance of Roundcube
     *
     * @param mixed $p Either a string with the action or url parameters as key-value pairs
     *
     * @return string Valid application URL
     */
    public function url($p)
    {
        // STUB: should be overloaded by the application
        return '';
    }

    /**
     * Function to be executed in script shutdown
     * Registered with register_shutdown_function()
     */
    public function shutdown()
    {
        foreach ($this->shutdown_functions as $function) {
            call_user_func($function);
        }

        // write session data as soon as possible and before
        // closing database connection, don't do this before
        // registered shutdown functions, they may need the session
        // Note: this will run registered gc handlers (ie. cache gc)
        if (!empty($_SERVER['REMOTE_ADDR']) && is_object($this->session)) {
            $this->session->write_close();
        }

        if (is_object($this->smtp)) {
            $this->smtp->disconnect();
        }

        foreach ($this->caches as $cache) {
            if (is_object($cache)) {
                $cache->close();
            }
        }

        if (is_object($this->storage)) {
            $this->storage->close();
        }

        if ($this->config->get('log_driver') == 'syslog') {
            closelog();
        }
    }

    /**
     * Registers shutdown function to be executed on shutdown.
     * The functions will be executed before destroying any
     * objects like smtp, imap, session, etc.
     *
     * @param callable $function Function callback
     */
    public function add_shutdown_function($function)
    {
        $this->shutdown_functions[] = $function;
    }

    /**
     * When you're going to sleep the script execution for a longer time
     * it is good to close all external connections (sql, memcache, redis, SMTP, IMAP).
     *
     * No action is required on wake up, all connections will be
     * re-established automatically.
     */
    public function sleep()
    {
        foreach ($this->caches as $cache) {
            if (is_object($cache)) {
                $cache->close();
            }
        }

        if ($this->storage) {
            $this->storage->close();
        }

        if ($this->db) {
            $this->db->closeConnection();
        }

        if ($this->memcache) {
            $this->memcache->close();
        }

        if ($this->memcached) {
            $this->memcached->quit();
        }

        if ($this->smtp) {
            $this->smtp->disconnect();
        }

        if ($this->redis) {
            $this->redis->close();
        }
    }

    /**
     * Quote a given string.
     * Shortcut function for rcube_utils::rep_specialchars_output()
     *
     * @param string $str      A string to quote
     * @param string $mode     Replace mode for tags: show|remove|strict
     * @param bool   $newlines Convert newlines
     *
     * @return string HTML-quoted string
     */
    public static function Q($str, $mode = 'strict', $newlines = true)
    {
        return rcube_utils::rep_specialchars_output($str, 'html', $mode, $newlines);
    }

    /**
     * Quote a given string for javascript output.
     * Shortcut function for rcube_utils::rep_specialchars_output()
     *
     * @param string $str A string to quote
     *
     * @return string JS-quoted string
     */
    public static function JQ($str)
    {
        return rcube_utils::rep_specialchars_output($str, 'js');
    }

    /**
     * Quote a given string, remove new-line characters, use strict mode.
     * Shortcut function for rcube_utils::rep_specialchars_output()
     *
     * @param string $str A string to quote
     *
     * @return string HTML-quoted string
     */
    public static function SQ($str)
    {
        return rcube_utils::rep_specialchars_output($str, 'html', 'strict', false);
    }

    /**
     * Construct shell command, execute it and return output as string.
     * Keywords {keyword} are replaced with arguments
     *
     * @param string $cmd     Format string with {keywords} to be replaced
     * @param mixed  ...$args (zero, one or more arrays can be passed)
     *
     * @return string Output of command. Shell errors not detectable
     */
    public static function exec($cmd, ...$args)
    {
        $values = $replacements = [];

        // merge values into one array
        foreach ($args as $arg) {
            $values += (array) $arg;
        }

        preg_match_all('/({(-?)([a-z]\w*)})/', $cmd, $matches, PREG_SET_ORDER);
        foreach ($matches as $tags) {
            list(, $tag, $option, $key) = $tags;
            $parts = [];

            if ($option) {
                foreach ((array) $values["-$key"] as $key => $value) {
                    if ($value === true || $value === false || $value === null) {
                        $parts[] = $value ? $key : "";
                    }
                    else {
                        foreach ((array)$value as $val) {
                            $parts[] = "$key " . escapeshellarg($val);
                        }
                    }
                }
            }
            else {
                foreach ((array) $values[$key] as $value) {
                    $parts[] = escapeshellarg($value);
                }
            }

            $replacements[$tag] = implode(' ', $parts);
        }

        // use strtr behaviour of going through source string once
        $cmd = strtr($cmd, $replacements);

        return (string) shell_exec($cmd);
    }

    /**
     * Print or write debug messages
     *
     * @param mixed ...$args Debug message or data
     */
    public static function console(...$args)
    {
        if (class_exists('rcube', false)) {
            $rcube  = self::get_instance();
            $plugin = $rcube->plugins->exec_hook('console', ['args' => $args]);
            if ($plugin['abort']) {
                return;
            }

            $args = $plugin['args'];
        }

        $msg = [];
        foreach ($args as $arg) {
            $msg[] = !is_string($arg) ? var_export($arg, true) : $arg;
        }

        self::write_log('console', implode(";\n", $msg));
    }

    /**
     * Append a line to a logfile in the logs directory.
     * Date will be added automatically to the line.
     *
     * @param string $name Name of the log file
     * @param mixed  $line Line to append
     *
     * @return bool True on success, False on failure
     */
    public static function write_log($name, $line)
    {
        if (!is_string($line)) {
            $line = var_export($line, true);
        }

        $date_format = $log_driver = $session_key = null;
        if (self::$instance) {
            $date_format = self::$instance->config->get('log_date_format');
            $log_driver  = self::$instance->config->get('log_driver');
            $session_key = intval(self::$instance->config->get('log_session_id', 8));
        }

        $date = rcube_utils::date_format($date_format);

        // trigger logging hook
        if (is_object(self::$instance) && is_object(self::$instance->plugins)) {
            $log = self::$instance->plugins->exec_hook('write_log',
                ['name' => $name, 'date' => $date, 'line' => $line]
            );

            $name = $log['name'];
            $line = $log['line'];
            $date = $log['date'];

            if (!empty($log['abort'])) {
                return true;
            }
        }

        // add session ID to the log
        if ($session_key > 0 && ($sess = session_id())) {
            $line = '<' . substr($sess, 0, $session_key) . '> ' . $line;
        }

        if ($log_driver == 'syslog') {
            $prio = $name == 'errors' ? LOG_ERR : LOG_INFO;
            return syslog($prio, $line);
        }

        // write message with file name when configured to log to STDOUT
        if ($log_driver == 'stdout') {
            $stdout = "php://stdout";
            $line = "$name: $line\n";
            return file_put_contents($stdout, $line, FILE_APPEND) !== false;
        }

        // log_driver == 'file' is assumed here

        $line = sprintf("[%s]: %s\n", $date, $line);

        // per-user logging is activated
        if (self::$instance && self::$instance->config->get('per_user_logging')
            && self::$instance->get_user_id()
            && !in_array($name, ['userlogins', 'sendmail'])
        ) {
            $log_dir = self::$instance->get_user_log_dir();
            if (empty($log_dir) && $name !== 'errors') {
                return false;
            }
        }

        if (empty($log_dir)) {
            if (!empty($log['dir'])) {
                $log_dir = $log['dir'];
            }
            else if (self::$instance) {
                $log_dir = self::$instance->config->get('log_dir');
            }
        }

        if (empty($log_dir)) {
            $log_dir = RCUBE_INSTALL_PATH . 'logs';
        }

        if (self::$instance) {
            $name .= self::$instance->config->get('log_file_ext', '.log');
        }
        else {
            $name .= '.log';
        }

        return file_put_contents("$log_dir/$name", $line, FILE_APPEND) !== false;
    }

    /**
     * Throw system error, with optional logging and script termination.
     *
     * @param array|Throwable|string|PEAR_Error $arg Error object, string or named parameters array:
     *                                               - code:    Error code (required)
     *                                               - type:    Error type: php, db, imap, etc.
     *                                               - message: Error message
     *                                               - file:    File where error occurred
     *                                               - line:    Line where error occurred
     * @param bool $log       True to log the error
     * @param bool $terminate Terminate script execution
     */
    public static function raise_error($arg, $log = false, $terminate = false)
    {
        // handle PHP exceptions and errors
        if ($arg instanceof Throwable) {
            $arg = [
                'code' => $arg->getCode(),
                'line' => $arg->getLine(),
                'file' => $arg->getFile(),
                'message' => $arg->getMessage(),
            ];
        }
        else if (is_object($arg) && is_a($arg, 'PEAR_Error')) {
            $info = $arg->getUserInfo();
            $arg  = [
                'code'    => $arg->getCode(),
                'message' => $arg->getMessage() . ($info ? ': ' . $info : ''),
            ];
        }
        else if (is_string($arg)) {
            $arg = ['message' => $arg];
        }

        if (empty($arg['code'])) {
            $arg['code'] = 500;
        }

        $cli = php_sapi_name() == 'cli';

        $arg['cli'] = $cli;
        $arg['log'] = $log;
        $arg['terminate'] = $terminate;

        // send error to external error tracking tool
        if (self::$instance) {
            $arg = self::$instance->plugins->exec_hook('raise_error', $arg);
        }

        // installer
        if (!$cli && class_exists('rcmail_install', false)) {
            $rci = rcmail_install::get_instance();
            $rci->raise_error($arg);
            return;
        }

        if (!isset($arg['message'])) {
            $arg['message'] = '';
        }

        if (($log || $terminate) && !$cli && $arg['message']) {
            $arg['fatal'] = $terminate;
            self::log_bug($arg);
        }

        if ($cli) {
            fwrite(STDERR, 'ERROR: ' . trim($arg['message']) . "\n");
        }
        else if ($terminate && is_object(self::$instance->output)) {
            self::$instance->output->raise_error($arg['code'], $arg['message']);
        }
        else if ($terminate) {
            header("HTTP/1.0 500 Internal Error");
        }

        // terminate script
        if ($terminate) {
            if (defined('ROUNDCUBE_TEST_MODE') && ROUNDCUBE_TEST_MODE) {
                throw new Exception('Error raised');
            }
            exit(1);
        }
    }

    /**
     * Log an error
     *
     * @param array $arg_arr Named parameters
     * @see self::raise_error()
     */
    public static function log_bug($arg_arr)
    {
        $program = !empty($arg_arr['type']) ? strtoupper($arg_arr['type']) : 'PHP';
        $uri     = $_SERVER['REQUEST_URI'] ?? '';

        // write error to local log file
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $post_query = [];
            foreach (['_task', '_action'] as $arg) {
                if (isset($_POST[$arg]) && !isset($_GET[$arg])) {
                    $post_query[$arg] = $_POST[$arg];
                }
            }

            if (!empty($post_query)) {
                $uri .= (strpos($uri, '?') != false ? '&' : '?')
                    . http_build_query($post_query, '', '&');
            }
        }

        $log_entry = sprintf("%s Error: %s%s (%s %s)",
            $program,
            $arg_arr['message'],
            !empty($arg_arr['file']) ? sprintf(' in %s on line %d', $arg_arr['file'], $arg_arr['line']) : '',
            $_SERVER['REQUEST_METHOD'],
            strip_tags($uri)
        );

        if (!self::write_log('errors', $log_entry)) {
            // send error to PHPs error handler if write_log didn't succeed
            trigger_error($arg_arr['message'], E_USER_WARNING);
        }
    }

    /**
     * Write debug info to the log
     *
     * @param string $engine Engine type - file name (memcache, apc, redis)
     * @param string $data   Data string to log
     * @param bool   $result Operation result
     */
    public static function debug($engine, $data, $result = null)
    {
        static $debug_counter;

        $line = '[' . (++$debug_counter[$engine]) . '] ' . $data;

        if (($len = strlen($line)) > self::DEBUG_LINE_LENGTH) {
            $diff = $len - self::DEBUG_LINE_LENGTH;
            $line = substr($line, 0, self::DEBUG_LINE_LENGTH) . "... [truncated $diff bytes]";
        }

        if ($result !== null) {
            $line .= ' [' . ($result ? 'TRUE' : 'FALSE') . ']';
        }

        self::write_log($engine, $line);
    }

    /**
     * Returns current time (with microseconds).
     *
     * @return float Current time in seconds since the Unix
     */
    public static function timer()
    {
        return microtime(true);
    }

    /**
     * Logs time difference according to provided timer
     *
     * @param float  $timer Timer (self::timer() result)
     * @param string $label Log line prefix
     * @param string $dest  Log file name
     *
     * @see self::timer()
     */
    public static function print_timer($timer, $label = 'Timer', $dest = 'console')
    {
        static $print_count = 0;

        $print_count++;
        $now  = self::timer();
        $diff = $now - $timer;

        if (empty($label)) {
            $label = 'Timer '.$print_count;
        }

        self::write_log($dest, sprintf("%s: %0.4f sec", $label, $diff));
    }

    /**
     * Setter for system user object
     *
     * @param rcube_user $user Current user instance
     */
    public function set_user($user)
    {
        if (is_object($user)) {
            $this->user = $user;

            // overwrite config with user preferences
            $this->config->set_user_prefs((array)$this->user->get_prefs());
        }
    }

    /**
     * Getter for logged user ID.
     *
     * @return mixed User identifier
     */
    public function get_user_id()
    {
        if (is_object($this->user)) {
            return $this->user->ID;
        }
        else if (isset($_SESSION['user_id'])) {
            return $_SESSION['user_id'];
        }
    }

    /**
     * Getter for logged user name.
     *
     * @return string User name
     */
    public function get_user_name()
    {
        if (is_object($this->user)) {
            return $this->user->get_username();
        }
        else if (isset($_SESSION['username'])) {
            return $_SESSION['username'];
        }
    }

    /**
     * Getter for logged user email (derived from user name not identity).
     *
     * @return string User email address
     */
    public function get_user_email()
    {
        if (!empty($this->user_email)) {
            return $this->user_email;
        }

        if (is_object($this->user)) {
            return $this->user->get_username('mail');
        }
    }

    /**
     * Getter for logged user password.
     *
     * @return string User password
     */
    public function get_user_password()
    {
        if (!empty($this->password)) {
            return $this->password;
        }

        if (isset($_SESSION['password'])) {
            return $this->decrypt($_SESSION['password']);
        }
    }

    /**
     * Get the per-user log directory
     *
     * @return string|false Per-user log directory if it exists and is writable, False otherwise
     */
    protected function get_user_log_dir()
    {
        $log_dir      = $this->config->get('log_dir', RCUBE_INSTALL_PATH . 'logs');
        $user_name    = $this->get_user_name();
        $user_log_dir = $log_dir . '/' . $user_name;

        return !empty($user_name) && is_writable($user_log_dir) ? $user_log_dir : false;
    }

    /**
     * Getter for logged user language code.
     *
     * @return string User language code
     */
    public function get_user_language()
    {
        if (is_object($this->user)) {
            return $this->user->language;
        }
        else if (isset($_SESSION['language'])) {
            return $_SESSION['language'];
        }
    }

    /**
     * Unique Message-ID generator.
     *
     * @param string $sender Optional sender e-mail address
     *
     * @return string Message-ID
     */
    public function gen_message_id($sender = null)
    {
        $local_part  = md5(uniqid('rcube'.mt_rand(), true));
        $domain_part = '';

        if ($sender && preg_match('/@([^\s]+\.[a-z0-9-]+)/', $sender, $m)) {
            $domain_part = $m[1];
        }
        else {
            $domain_part = $this->user->get_username('domain');
        }

        // Try to find FQDN, some spamfilters doesn't like 'localhost' (#1486924)
        if (!preg_match('/\.[a-z0-9-]+$/i', $domain_part)) {
            foreach ([$_SERVER['HTTP_HOST'], $_SERVER['SERVER_NAME']] as $host) {
                $host = preg_replace('/:[0-9]+$/', '', $host);
                if ($host && preg_match('/\.[a-z]+$/i', $host)) {
                    $domain_part = $host;
                    break;
                }
            }
        }

        return sprintf('<%s@%s>', $local_part, $domain_part);
    }

    /**
     * Send the given message using the configured method.
     *
     * @param Mail_Mime    &$message    Reference to Mail_MIME object
     * @param string       $from        Sender address string
     * @param array|string $mailto      Either a comma-separated list of recipients (RFC822 compliant),
     *                                  or an array of recipients, each RFC822 valid
     * @param array|string &$error      SMTP error array or (deprecated) string
     * @param string       &$body_file  Location of file with saved message body,
     *                                  used when delay_file_io is enabled
     * @param array        $options     SMTP options (e.g. DSN request)
     * @param bool         $disconnect  Close SMTP connection ASAP
     *
     * @return bool Send status.
     */
    public function deliver_message(&$message, $from, $mailto, &$error,
        &$body_file = null, $options = null, $disconnect = false)
    {
        $plugin = $this->plugins->exec_hook('message_before_send', [
                'message' => $message,
                'from'    => $from,
                'mailto'  => $mailto,
                'options' => $options,
        ]);

        if ($plugin['abort']) {
            if (!empty($plugin['error'])) {
                $error = $plugin['error'];
            }
            if (!empty($plugin['body_file'])) {
                $body_file = $plugin['body_file'];
            }

            return $plugin['result'] ?? false;
        }

        $from    = $plugin['from'];
        $mailto  = $plugin['mailto'];
        $options = $plugin['options'];
        $message = $plugin['message'];
        $headers = $message->headers();

        // generate list of recipients
        $a_recipients = (array) $mailto;

        if (!empty($headers['Cc'])) {
            $a_recipients[] = $headers['Cc'];
        }
        if (!empty($headers['Bcc'])) {
            $a_recipients[] = $headers['Bcc'];
        }

        // remove Bcc header and get the whole head of the message as string
        $smtp_headers = $message->txtHeaders(['Bcc' => null], true);

        if ($message->getParam('delay_file_io')) {
            // use common temp dir
            $body_file   = rcube_utils::temp_filename('msg');
            $mime_result = $message->saveMessageBody($body_file);

            if (is_a($mime_result, 'PEAR_Error')) {
                self::raise_error([
                        'code' => 650, 'file' => __FILE__, 'line' => __LINE__,
                        'message' => "Could not create message: ".$mime_result->getMessage()
                    ],
                    true, false
                );
                return false;
            }

            $msg_body = fopen($body_file, 'r');
        }
        else {
            $msg_body = $message->get();
        }

        // initialize SMTP connection
        if (!is_object($this->smtp)) {
            $this->smtp_init(true);
        }

        // send message
        $sent     = $this->smtp->send_mail($from, $a_recipients, $smtp_headers, $msg_body, $options);
        $response = $this->smtp->get_response();
        $error    = $this->smtp->get_error();

        if (!$sent) {
            self::raise_error([
                    'code' => 800, 'type' => 'smtp',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => implode("\n", $response)
                ], true, false);

            // allow plugins to catch sending errors with the same parameters as in 'message_before_send'
            $plugin = $this->plugins->exec_hook('message_send_error', $plugin + ['error' => $error]);
            $error = $plugin['error'];
        }
        else {
            $this->plugins->exec_hook('message_sent', ['headers' => $headers, 'body' => $msg_body, 'message' => $message]);

            // remove MDN/DSN headers after sending
            unset($headers['Return-Receipt-To'], $headers['Disposition-Notification-To']);

            if ($this->config->get('smtp_log')) {
                // get all recipient addresses
                $mailto = implode(',', $a_recipients);
                $mailto = rcube_mime::decode_address_list($mailto, null, false, null, true);

                self::write_log('sendmail', sprintf("User %s [%s]; Message %s for %s; %s",
                    $this->user->get_username(),
                    rcube_utils::remote_addr(),
                    $headers['Message-ID'],
                    implode(', ', $mailto),
                    !empty($response) ? implode('; ', $response) : '')
                );
            }
        }

        if (is_resource($msg_body)) {
            fclose($msg_body);
        }

        if ($disconnect) {
            $this->smtp->disconnect();
        }

        // Add Bcc header back
        if (!empty($headers['Bcc'])) {
            $message->headers(['Bcc' => $headers['Bcc']], true);
        }

        return $sent;
    }
}


/**
 * Lightweight plugin API class serving as a dummy if plugins are not enabled
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_dummy_plugin_api
{
    /**
     * Triggers a plugin hook.
     *
     * @param string $hook Hook name
     * @param array  $args Hook arguments
     *
     * @return array Hook arguments
     * @see rcube_plugin_api::exec_hook()
     */
    public function exec_hook($hook, $args = [])
    {
        if (!is_array($args)) {
            $args = ['arg' => $args];
        }

        return $args += ['abort' => false];
    }
}
lib/Roundcube/rcube_contacts.php000064400000106127151727150660012770 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Interface to the local address book database                        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Model class for the local address book database
 *
 * @package    Framework
 * @subpackage Addressbook
 */
class rcube_contacts extends rcube_addressbook
{
    // protected for backward compat. with some plugins
    protected $db_name         = 'contacts';
    protected $db_groups       = 'contactgroups';
    protected $db_groupmembers = 'contactgroupmembers';
    protected $vcard_fieldmap  = [];

    /**
     * Store database connection.
     *
     * @var rcube_db
     */
    protected $db      = null;
    protected $user_id = 0;
    protected $filter  = null;
    protected $result  = null;
    protected $cache;
    protected $table_cols    = ['name', 'email', 'firstname', 'surname'];
    protected $fulltext_cols = ['name', 'firstname', 'surname', 'middlename', 'nickname',
        'jobtitle', 'organization', 'department', 'maidenname', 'email', 'phone',
        'address', 'street', 'locality', 'zipcode', 'region', 'country', 'website', 'im', 'notes'];

    // public properties
    public $primary_key = 'contact_id';
    public $name;
    public $readonly  = false;
    public $groups    = true;
    public $undelete  = true;
    public $list_page = 1;
    public $page_size = 10;
    public $group_id  = 0;
    public $ready     = false;
    public $coltypes  = ['name', 'firstname', 'surname', 'middlename', 'prefix', 'suffix', 'nickname',
        'jobtitle', 'organization', 'department', 'assistant', 'manager',
        'gender', 'maidenname', 'spouse', 'email', 'phone', 'address',
        'birthday', 'anniversary', 'website', 'im', 'notes', 'photo'];
    public $date_cols = ['birthday', 'anniversary'];

    const SEPARATOR = ',';


    /**
     * Object constructor
     *
     * @param object $dbconn Instance of the rcube_db class
     * @param int    $user   User-ID
     */
    function __construct($dbconn, $user)
    {
        $this->db      = $dbconn;
        $this->user_id = $user;
        $this->ready   = $this->db && !$this->db->is_error();
    }

    /**
     * Returns addressbook name
     *
     * @return string
     */
     function get_name()
     {
        return $this->name;
     }

    /**
     * Save a search string for future listings
     *
     * @param string $filter SQL params to use in listing method
     */
    function set_search_set($filter)
    {
        $this->filter = $filter;
        $this->cache  = null;
    }

    /**
     * Getter for saved search properties
     *
     * @return mixed Search properties used by this class
     */
    function get_search_set()
    {
        return $this->filter;
    }

    /**
     * Setter for the current group
     * (empty, has to be re-implemented by extending class)
     */
    function set_group($gid)
    {
        $this->group_id = $gid;
        $this->cache    = null;
    }

    /**
     * Reset all saved results and search parameters
     */
    function reset()
    {
        $this->result = null;
        $this->filter = null;
        $this->cache  = null;
    }

    /**
     * List all active contact groups of this source
     *
     * @param string $search Search string to match group name
     * @param int    $mode   Matching mode. Sum of rcube_addressbook::SEARCH_*
     *
     * @return array Indexed list of contact groups, each a hash array
     */
    function list_groups($search = null, $mode = 0)
    {
        $results = [];

        if (!$this->groups) {
            return $results;
        }

        $sql_filter = '';

        if ($search) {
            if ($mode & rcube_addressbook::SEARCH_STRICT) {
                $sql_filter = $this->db->ilike('name', $search);
            }
            else if ($mode & rcube_addressbook::SEARCH_PREFIX) {
                $sql_filter = $this->db->ilike('name', $search . '%');
            }
            else {
                $sql_filter = $this->db->ilike('name', '%' . $search . '%');
            }

            $sql_filter = " AND $sql_filter";
        }

        $sql_result = $this->db->query(
            "SELECT * FROM " . $this->db->table_name($this->db_groups, true)
            . " WHERE `del` <> 1 AND `user_id` = ?" . $sql_filter
            . " ORDER BY `name`",
            $this->user_id
        );

        while ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $sql_arr['ID'] = $sql_arr['contactgroup_id'];
            $results[]     = $sql_arr;
        }

        return $results;
    }

    /**
     * Get group properties such as name and email address(es)
     *
     * @param string $group_id Group identifier
     *
     * @return ?array Group properties as hash array, null in case of error.
     */
    function get_group($group_id)
    {
        $sql_result = $this->db->query(
            "SELECT * FROM " . $this->db->table_name($this->db_groups, true)
            . " WHERE `del` <> 1 AND `contactgroup_id` = ? AND `user_id` = ?",
            $group_id, $this->user_id
        );

        if ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $sql_arr['ID'] = $sql_arr['contactgroup_id'];
            return $sql_arr;
        }

        return null;
    }

    /**
     * List the current set of contact records
     *
     * @param array $cols    List of cols to show, Null means all
     * @param int   $subset  Only return this number of records, use negative values for tail
     * @param bool  $nocount True to skip the count query (select only)
     *
     * @return array Indexed list of contact records, each a hash array
     */
    function list_records($cols = null, $subset = 0, $nocount = false)
    {
        if ($nocount || $this->list_page <= 1) {
            // create dummy result, we don't need a count now
            $this->result = new rcube_result_set();
        } else {
            // count all records
            $this->result = $this->count();
        }

        $start_row = $subset < 0 ? $this->result->first + $this->page_size + $subset : $this->result->first;
        $length    = $subset != 0 ? abs($subset) : $this->page_size;
        $join      = '';

        if ($this->group_id) {
            $join = " LEFT JOIN " . $this->db->table_name($this->db_groupmembers, true) . " AS m".
                " ON (m.`contact_id` = c.`".$this->primary_key."`)";
        }

        $order_col  = in_array($this->sort_col, $this->table_cols) ? $this->sort_col : 'name';
        $order_cols = ["c.`$order_col`"];

        if ($order_col == 'firstname') {
            $order_cols[] = 'c.`surname`';
        }
        else if ($order_col == 'surname') {
            $order_cols[] = 'c.`firstname`';
        }
        if ($order_col != 'name') {
            $order_cols[] = 'c.`name`';
        }
        $order_cols[] = 'c.`email`';

        $sql_result = $this->db->limitquery(
            "SELECT * FROM " . $this->db->table_name($this->db_name, true) . " AS c" .
            $join .
            " WHERE c.`del` <> 1" .
                " AND c.`user_id` = ?" .
                ($this->group_id ? " AND m.`contactgroup_id` = ?" : "").
                ($this->filter ? " AND ".$this->filter : "") .
            " ORDER BY ". $this->db->concat($order_cols) . " " . $this->sort_order,
            $start_row,
            $length,
            $this->user_id,
            $this->group_id
        );

        // determine whether we have to parse the vcard or if only db cols are requested
        $read_vcard = !$cols || count(array_intersect($cols, $this->table_cols)) < count($cols);

        while ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $sql_arr['ID'] = $sql_arr[$this->primary_key];

            if ($read_vcard) {
                $sql_arr = $this->convert_db_data($sql_arr);
            }
            else {
                $sql_arr['email'] = $sql_arr['email'] ? explode(self::SEPARATOR, $sql_arr['email']) : [];
                $sql_arr['email'] = array_map('trim', $sql_arr['email']);
            }

            $this->result->add($sql_arr);
        }

        $cnt = count($this->result->records);

        // update counter
        if ($nocount) {
            $this->result->count = $cnt;
        }
        else if ($this->list_page <= 1) {
            if ($cnt < $this->page_size && $subset == 0) {
                $this->result->count = $cnt;
            }
            else if (isset($this->cache['count'])) {
                $this->result->count = $this->cache['count'];
            }
            else {
                $this->result->count = $this->_count();
            }
        }

        return $this->result;
    }

    /**
     * Search contacts
     *
     * @param mixed $fields   The field name or array of field names to search in
     * @param mixed $value    Search value (or array of values when $fields is array)
     * @param int   $mode     Search mode. Sum of rcube_addressbook::SEARCH_*
     * @param bool  $select   True if results are requested, False if count only
     * @param bool  $nocount  True to skip the count query (select only)
     * @param array $required List of fields that cannot be empty
     *
     * @return rcube_result_set Contact records and 'count' value
     */
    function search($fields, $value, $mode = 0, $select = true, $nocount = false, $required = [])
    {
        if (!is_array($required) && !empty($required)) {
            $required = [$required];
        }

        $where = $post_search = [];
        $mode  = intval($mode);

        // direct ID search
        if ($fields == 'ID' || $fields == $this->primary_key) {
            $ids     = !is_array($value) ? explode(self::SEPARATOR, $value) : $value;
            $ids     = $this->db->array2list($ids, 'integer');
            $where[] = 'c.' . $this->primary_key.' IN ('.$ids.')';
        }
        else if (is_array($value)) {
            foreach ((array) $fields as $idx => $col) {
                $val = $value[$idx];

                if (!strlen($val)) {
                    continue;
                }

                // table column
                if (in_array($col, $this->table_cols)) {
                    $where[] = $this->fulltext_sql_where($val, $mode, $col);
                }
                // vCard field
                else {
                    if (in_array($col, $this->fulltext_cols)) {
                        $where[] = $this->fulltext_sql_where($val, $mode, 'words');
                    }
                    $post_search[$col] = mb_strtolower($val);
                }
            }
        }
        // fulltext search in all fields
        else if ($fields == '*') {
            $where[] = $this->fulltext_sql_where($value, $mode, 'words');
        }
        else {
            // require each word in to be present in one of the fields
            $words = ($mode & rcube_addressbook::SEARCH_STRICT) ? [$value] : rcube_utils::tokenize_string($value, 1);
            foreach ($words as $word) {
                $groups = [];
                foreach ((array) $fields as $idx => $col) {
                    $groups[] = $this->fulltext_sql_where($word, $mode, $col);
                }
                $where[] = '(' . implode(' OR ', $groups) . ')';
            }
        }

        foreach (array_intersect($required, $this->table_cols) as $col) {
            $where[] = $this->db->quote_identifier($col).' <> '.$this->db->quote('');
        }
        $required = array_diff($required, $this->table_cols);

        if (!empty($where)) {
            // use AND operator for advanced searches
            $where = implode(' AND ', $where);
        }

        // Post-searching in vCard data fields
        // we will search in all records and then build a where clause for their IDs
        if (!empty($post_search) || !empty($required)) {
            $ids = [0];
            // build key name regexp
            $regexp = '/^(' . implode('|', array_keys($post_search)) . ')(?:.*)$/';
            // use initial WHERE clause, to limit records number if possible
            if (!empty($where)) {
                $this->set_search_set($where);
            }

            // count result pages
            $cnt   = $this->count()->count;
            $pages = ceil($cnt / $this->page_size);
            $scnt  = !empty($post_search) ? count($post_search) : 0;

            // get (paged) result
            for ($i=0; $i<$pages; $i++) {
                $this->list_records(null, $i, true);
                while ($row = $this->result->next()) {
                    $id    = $row[$this->primary_key];
                    $found = [];
                    if (!empty($post_search)) {
                        foreach (preg_grep($regexp, array_keys($row)) as $col) {
                            $pos     = strpos($col, ':');
                            $colname = $pos ? substr($col, 0, $pos) : $col;
                            $search  = $post_search[$colname];
                            foreach ((array) $row[$col] as $value) {
                                if ($this->compare_search_value($colname, $value, $search, $mode)) {
                                    $found[$colname] = true;
                                    break;
                                }
                            }
                        }
                    }
                    // check if required fields are present
                    if (!empty($required)) {
                        foreach ($required as $req) {
                            $hit = false;
                            foreach (array_keys($row) as $c) {
                                if ($c === $req || strpos($c, $req.':') === 0) {
                                    if ((is_string($row[$c]) && strlen($row[$c])) || !empty($row[$c])) {
                                        $hit = true;
                                        break;
                                    }
                                }
                            }
                            if (!$hit) {
                                continue 2;
                            }
                        }
                    }
                    // all fields match
                    if (count($found) >= $scnt) {
                        $ids[] = $id;
                    }
                }
            }

            // build WHERE clause
            $ids = $this->db->array2list($ids, 'integer');
            $where = 'c.`' . $this->primary_key.'` IN ('.$ids.')';
            // reset counter
            unset($this->cache['count']);

            // when we know we have an empty result
            if ($ids == '0') {
                $this->set_search_set($where);
                return ($this->result = new rcube_result_set(0, 0));
            }
        }

        if (!empty($where)) {
            $this->set_search_set($where);
            if ($select) {
                $this->list_records(null, 0, $nocount);
            }
            else {
                $this->result = $this->count();
            }
        }

        return $this->result;
    }

    /**
     * Helper method to compose SQL where statements for fulltext searching
     */
    protected function fulltext_sql_where($value, $mode, $col = 'words', $bool = 'AND')
    {
        $AS    = $col == 'words' ? ' ' : self::SEPARATOR;
        $words = $col == 'words' ? rcube_utils::normalize_string($value, true, 1) : [$value];

        $where = [];
        foreach ($words as $word) {
            if ($mode & rcube_addressbook::SEARCH_STRICT) {
                $where[] = '(' . $this->db->ilike($col, $word)
                    . ' OR ' . $this->db->ilike($col, $word . $AS . '%')
                    . ' OR ' . $this->db->ilike($col, '%' . $AS . $word . $AS . '%')
                    . ' OR ' . $this->db->ilike($col, '%' . $AS . $word) . ')';
            }
            else if ($mode & rcube_addressbook::SEARCH_PREFIX) {
                $where[] = '(' . $this->db->ilike($col, $word . '%')
                    . ' OR ' . $this->db->ilike($col, '%' . $AS . $word . '%') . ')';
            }
            else {
                $where[] = $this->db->ilike($col, '%' . $word . '%');
            }
        }

        return count($where) ? '(' . implode(" $bool ", $where) . ')' : '';
    }

    /**
     * Count number of available contacts in database
     *
     * @return rcube_result_set Result object
     */
    function count()
    {
        $count = $this->cache['count'] ?? $this->_count();

        return new rcube_result_set($count, ($this->list_page-1) * $this->page_size);
    }

    /**
     * Count number of available contacts in database
     *
     * @return int Contacts count
     */
    protected function _count()
    {
        $join = null;

        if ($this->group_id) {
            $join = " LEFT JOIN " . $this->db->table_name($this->db_groupmembers, true) . " AS m".
                " ON (m.`contact_id` = c.`".$this->primary_key."`)";
        }

        // count contacts for this user
        $sql_result = $this->db->query(
            "SELECT COUNT(c.`contact_id`) AS cnt".
            " FROM " . $this->db->table_name($this->db_name, true) . " AS c".
                $join.
            " WHERE c.`del` <> 1".
            " AND c.`user_id` = ?".
            ($this->group_id ? " AND m.`contactgroup_id` = ?" : "").
            ($this->filter ? " AND (".$this->filter.")" : ""),
            $this->user_id,
            $this->group_id
        );

        $sql_arr = $this->db->fetch_assoc($sql_result);

        $this->cache['count'] = !empty($sql_arr) ? (int) $sql_arr['cnt'] : 0;

        return $this->cache['count'];
    }

    /**
     * Return the last result set
     *
     * @return mixed Result array or NULL if nothing selected yet
     */
    function get_result()
    {
        return $this->result;
    }

    /**
     * Get a specific contact record
     *
     * @param mixed $id    Record identifier(s)
     * @param bool  $assoc Enables returning associative array
     *
     * @return rcube_result_set|array Result object with all record fields
     */
    function get_record($id, $assoc = false)
    {
        // return cached result
        if ($this->result && ($first = $this->result->first()) && $first[$this->primary_key] == $id) {
            return $assoc ? $first : $this->result;
        }

        $this->db->query(
            "SELECT * FROM " . $this->db->table_name($this->db_name, true).
            " WHERE `contact_id` = ?".
                " AND `user_id` = ?".
                " AND `del` <> 1",
            $id,
            $this->user_id
        );

        $this->result = null;

        if ($sql_arr = $this->db->fetch_assoc()) {
            $record = $this->convert_db_data($sql_arr);
            $this->result = new rcube_result_set(1);
            $this->result->add($record);
        }

        return $assoc && !empty($record) ? $record : $this->result;
    }

    /**
     * Get group assignments of a specific contact record
     *
     * @param mixed $id Record identifier
     *
     * @return array List of assigned groups, indexed by a group ID
     */
    function get_record_groups($id)
    {
        $results = [];

        if (!$this->groups) {
            return $results;
        }

        $sql_result = $this->db->query(
            "SELECT cgm.`contactgroup_id`, cg.`name` "
            . " FROM " . $this->db->table_name($this->db_groupmembers, true) . " AS cgm"
            . " LEFT JOIN " . $this->db->table_name($this->db_groups, true) . " AS cg"
                . " ON (cgm.`contactgroup_id` = cg.`contactgroup_id` AND cg.`del` <> 1)"
            . " WHERE cgm.`contact_id` = ?",
            $id
        );

        while ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $results[$sql_arr['contactgroup_id']] = $sql_arr['name'];
        }

        return $results;
    }

    /**
     * Check the given data before saving.
     * If input not valid, the message to display can be fetched using get_error()
     *
     * @param array &$save_data Associative array with data to save
     * @param bool  $autofix    Try to fix/complete record automatically
     *
     * @return bool True if input is valid, False if not.
     */
    public function validate(&$save_data, $autofix = false)
    {
        // validate e-mail addresses
        $valid = parent::validate($save_data, $autofix);

        // require at least some name or email
        if ($valid) {
            $name = ($save_data['firstname'] ?? '')
                . ($save_data['surname'] ?? '')
                . ($save_data['name'] ?? '');

            if (!strlen($name) && !count(array_filter($this->get_col_values('email', $save_data, true)))) {
                $this->set_error(self::ERROR_VALIDATE, 'nonamewarning');
                $valid = false;
            }
        }

        return $valid;
    }

    /**
     * Create a new contact record
     *
     * @param array $save_data Associative array with save data
     * @param bool  $check     Enables validity checks
     *
     * @return int|bool The created record ID on success, False on error
     */
    function insert($save_data, $check = false)
    {
        if (!is_array($save_data)) {
            return false;
        }

        $insert_id = $existing = false;

        if ($check) {
            foreach ($save_data as $col => $values) {
                if (strpos($col, 'email') === 0) {
                    foreach ((array)$values as $email) {
                        if ($existing = $this->search('email', $email, false, false))
                            break 2;
                    }
                }
            }
        }

        $save_data     = $this->convert_save_data($save_data);
        $a_insert_cols = $a_insert_values = [];

        foreach ($save_data as $col => $value) {
            $a_insert_cols[]   = $this->db->quote_identifier($col);
            $a_insert_values[] = $this->db->quote($value);
        }

        if ((empty($existing) || empty($existing->count)) && !empty($a_insert_cols)) {
            $this->db->query(
                "INSERT INTO " . $this->db->table_name($this->db_name, true)
                . " (`user_id`, `changed`, `del`, " . implode(', ', $a_insert_cols) . ")"
                . " VALUES (" . intval($this->user_id) . ", " . $this->db->now() . ", 0, " . implode(', ', $a_insert_values) . ")"
            );

            $insert_id = $this->db->insert_id($this->db_name);
        }

        $this->cache = null;

        return $insert_id;
    }

    /**
     * Update a specific contact record
     *
     * @param mixed $id        Record identifier
     * @param array $save_cols Associative array with save data
     *
     * @return bool True on success, False on error
     */
    function update($id, $save_cols)
    {
        $updated   = false;
        $write_sql = [];
        $record    = $this->get_record($id, true);
        $save_cols = $this->convert_save_data($save_cols, $record);

        foreach ($save_cols as $col => $value) {
            $write_sql[] = sprintf("%s=%s", $this->db->quote_identifier($col), $this->db->quote($value));
        }

        if (!empty($write_sql)) {
            $this->db->query(
                "UPDATE " . $this->db->table_name($this->db_name, true)
                . " SET `changed` = " . $this->db->now() . ", " . implode(', ', $write_sql)
                . " WHERE `contact_id` = ?"
                    . " AND `user_id` = ?"
                    . " AND `del` <> 1",
                $id,
                $this->user_id
            );

            $updated = $this->db->affected_rows();
            $this->result = null;  // clear current result (from get_record())
        }

        return !empty($updated);
    }

    /**
     * Convert data stored in the database into output format
     */
    private function convert_db_data($sql_arr)
    {
        $record = [
            'ID' => $sql_arr[$this->primary_key]
        ];

        if ($sql_arr['vcard']) {
            unset($sql_arr['email']);
            $vcard = new rcube_vcard($sql_arr['vcard'], RCUBE_CHARSET, false, $this->vcard_fieldmap);
            $record += $vcard->get_assoc() + $sql_arr;
        }
        else {
            $record += $sql_arr;
            $record['email'] = explode(self::SEPARATOR, $record['email']);
            $record['email'] = array_map('trim', $record['email']);
        }

        return $record;
    }

    /**
     * Convert input data for storing in the database
     */
    private function convert_save_data($save_data, $record = [])
    {
        $out   = [];
        $words = '';

        if (!empty($record['vcard'])) {
            $vcard = $record['vcard'];
        }
        else if (!empty($save_data['vcard'])) {
            $vcard = $save_data['vcard'];
        }
        else {
            $vcard = '';
        }

        // copy values into vcard object
        $vcard = new rcube_vcard($vcard, RCUBE_CHARSET, false, $this->vcard_fieldmap);
        $vcard->reset();

        // don't store groups in vCard (#1490277)
        $vcard->set('groups', null);
        unset($save_data['groups']);

        foreach ($save_data as $key => $values) {
            list($field, $section) = rcube_utils::explode(':', $key);

            $fulltext = in_array($field, $this->fulltext_cols);

            // avoid casting DateTime objects to array
            if (is_object($values) && is_a($values, 'DateTime')) {
                $values = [$values];
            }
            foreach ((array) $values as $value) {
                if (isset($value)) {
                    $vcard->set($field, $value, $section);
                }
                if ($fulltext && is_array($value)) {
                    $words .= ' ' . rcube_utils::normalize_string(implode(' ', $value));
                }
                else if ($fulltext && strlen($value) >= 3) {
                    $words .= ' ' . rcube_utils::normalize_string($value);
                }
            }
        }

        $out['vcard'] = $vcard->export(false);

        foreach ($this->table_cols as $col) {
            $key = $col;
            if (!isset($save_data[$key])) {
                $key .= ':home';
            }
            if (isset($save_data[$key])) {
                if (is_array($save_data[$key])) {
                    $out[$col] = implode(self::SEPARATOR, $save_data[$key]);
                }
                else {
                    $out[$col] = $save_data[$key];
                }
            }
        }

        // save all e-mails in the database column
        if (!empty($vcard->email)) {
            $out['email'] = implode(self::SEPARATOR, $vcard->email);
        } else {
            $out['email'] = isset($save_data['email']) ? $save_data['email'] : '';
        }

        // join words for fulltext search
        $out['words'] = implode(' ', array_unique(explode(' ', $words)));

        return $out;
    }

    /**
     * Mark one or more contact records as deleted
     *
     * @param array $ids   Record identifiers
     * @param bool  $force Remove record(s) irreversible (unsupported)
     *
     * @return int|false Number of removed records, False on failure
     */
    function delete($ids, $force = true)
    {
        if (!is_array($ids)) {
            $ids = explode(self::SEPARATOR, $ids);
        }

        $ids = $this->db->array2list($ids, 'integer');

        // flag record as deleted (always)
        $this->db->query(
            "UPDATE " . $this->db->table_name($this->db_name, true).
            " SET `del` = 1, `changed` = ".$this->db->now().
            " WHERE `user_id` = ?".
                " AND `contact_id` IN ($ids)",
            $this->user_id
        );

        $this->cache = null;

        return $this->db->affected_rows();
    }

    /**
     * Undelete one or more contact records
     *
     * @param array $ids Record identifiers
     *
     * @return int Number of undeleted contact records
     */
    function undelete($ids)
    {
        if (!is_array($ids)) {
            $ids = explode(self::SEPARATOR, $ids);
        }

        $ids = $this->db->array2list($ids, 'integer');

        // clear deleted flag
        $this->db->query(
            "UPDATE " . $this->db->table_name($this->db_name, true).
            " SET `del` = 0, `changed` = ".$this->db->now().
            " WHERE `user_id` = ?".
                " AND `contact_id` IN ($ids)",
            $this->user_id
        );

        $this->cache = null;

        return $this->db->affected_rows();
    }

    /**
     * Remove all records from the database
     *
     * @param bool $with_groups Remove also groups
     *
     * @return int Number of removed records
     */
    function delete_all($with_groups = false)
    {
        $this->cache = null;

        $now = $this->db->now();

        $this->db->query("UPDATE " . $this->db->table_name($this->db_name, true)
            . " SET `del` = 1, `changed` = $now"
            . " WHERE `user_id` = ?", $this->user_id);

        $count = $this->db->affected_rows();

        if ($with_groups) {
            $this->db->query("UPDATE " . $this->db->table_name($this->db_groups, true)
                . " SET `del` = 1, `changed` = $now"
                . " WHERE `user_id` = ?", $this->user_id);

            $count += $this->db->affected_rows();
        }

        return $count;
    }

    /**
     * Create a contact group with the given name
     *
     * @param string $name The group name
     *
     * @return array|false False on error, array with record props in success
     */
    function create_group($name)
    {
        $result = false;

        // make sure we have a unique name
        $name = $this->unique_groupname($name);

        $this->db->query(
            "INSERT INTO " . $this->db->table_name($this->db_groups, true).
            " (`user_id`, `changed`, `name`)".
            " VALUES (".intval($this->user_id).", ".$this->db->now().", ".$this->db->quote($name).")"
        );

        if ($insert_id = $this->db->insert_id($this->db_groups)) {
            $result = ['id' => $insert_id, 'name' => $name];
        }

        return $result;
    }

    /**
     * Delete the given group (and all linked group members)
     *
     * @param string $gid Group identifier
     *
     * @return bool True on success, false if no data was changed
     */
    function delete_group($gid)
    {
        // flag group record as deleted
        $sql_result = $this->db->query(
            "UPDATE " . $this->db->table_name($this->db_groups, true)
            . " SET `del` = 1, `changed` = " . $this->db->now()
            . " WHERE `contactgroup_id` = ?"
                . " AND `user_id` = ?",
            $gid, $this->user_id
        );

        $this->cache = null;

        return $this->db->affected_rows($sql_result) > 0;
    }

    /**
     * Rename a specific contact group
     *
     * @param string $gid     Group identifier
     * @param string $name    New name to set for this group
     * @param string $new_gid (not used)
     *
     * @return string|false New name on success, false if no data was changed
     */
    function rename_group($gid, $name, &$new_gid)
    {
        // make sure we have a unique name
        $name = $this->unique_groupname($name);

        $sql_result = $this->db->query(
            "UPDATE " . $this->db->table_name($this->db_groups, true).
            " SET `name` = ?, `changed` = ".$this->db->now().
            " WHERE `contactgroup_id` = ?".
                " AND `user_id` = ?",
            $name, $gid, $this->user_id
        );

        return $this->db->affected_rows($sql_result) ? $name : false;
    }

    /**
     * Add the given contact records the a certain group
     *
     * @param string       $group_id Group identifier
     * @param array|string $ids      List of contact identifiers to be added
     *
     * @return int Number of contacts added
     */
    function add_to_group($group_id, $ids)
    {
        if (!is_array($ids)) {
            $ids = explode(self::SEPARATOR, $ids);
        }

        $added  = 0;
        $exists = [];

        // get existing assignments ...
        $sql_result = $this->db->query(
            "SELECT `contact_id` FROM " . $this->db->table_name($this->db_groupmembers, true).
            " WHERE `contactgroup_id` = ?".
                " AND `contact_id` IN (".$this->db->array2list($ids, 'integer').")",
            $group_id
        );

        while ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $exists[] = $sql_arr['contact_id'];
        }

        // ... and remove them from the list
        $ids = array_diff($ids, $exists);

        foreach ($ids as $contact_id) {
            $this->db->query(
                "INSERT INTO " . $this->db->table_name($this->db_groupmembers, true).
                " (`contactgroup_id`, `contact_id`, `created`)".
                " VALUES (?, ?, ".$this->db->now().")",
                $group_id,
                $contact_id
            );

            if ($error = $this->db->is_error()) {
                $this->set_error(self::ERROR_SAVING, $error);
            }
            else {
                $added++;
            }
        }

        return $added;
    }

    /**
     * Remove the given contact records from a certain group
     *
     * @param string       $group_id Group identifier
     * @param array|string $ids      List of contact identifiers to be removed
     *
     * @return int Number of deleted group members
     */
    function remove_from_group($group_id, $ids)
    {
        if (!is_array($ids)) {
            $ids = explode(self::SEPARATOR, $ids);
        }

        $ids = $this->db->array2list($ids, 'integer');

        $sql_result = $this->db->query(
            "DELETE FROM " . $this->db->table_name($this->db_groupmembers, true).
            " WHERE `contactgroup_id` = ?".
                " AND `contact_id` IN ($ids)",
            $group_id
        );

        return $this->db->affected_rows($sql_result);
    }

    /**
     * Check for existing groups with the same name
     *
     * @param string $name Name to check
     *
     * @return string A group name which is unique for the current use
     */
    private function unique_groupname($name)
    {
        $checkname = $name;
        $num       = 2;
        $hit       = false;

        do {
            $sql_result = $this->db->query(
                "SELECT 1 FROM " . $this->db->table_name($this->db_groups, true).
                " WHERE `del` <> 1".
                    " AND `user_id` = ?".
                    " AND `name` = ?",
                $this->user_id,
                $checkname);

            // append number to make name unique
            if ($hit = $this->db->fetch_array($sql_result)) {
                $checkname = $name . ' ' . $num++;
            }
        }
        while ($hit);

        return $checkname;
    }
}
lib/Roundcube/rcube_message.php000064400000134725151727150660012603 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Logical representation of a mail message with all its data          |
 |   and related functions                                               |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Logical representation of a mail message with all its data
 * and related functions
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_message
{
    /**
     * Instance of framework class.
     *
     * @var rcube
     */
    protected $app;

    /**
     * Instance of storage class
     *
     * @var rcube_storage
     */
    protected $storage;

    /**
     * Instance of mime class
     *
     * @var rcube_mime
     */
    protected $mime;

    protected $opt               = [];
    protected $parse_alternative = false;
    protected $got_html_part     = false;
    protected $tnef_decode       = false;

    public $uid;
    public $folder;
    public $headers;
    public $sender;
    public $context;
    public $body;
    public $parts        = [];
    public $mime_parts   = [];
    public $inline_parts = [];
    public $attachments  = [];
    public $subject      = '';
    public $is_safe      = false;
    public $pgp_mime     = false;
    public $encrypted_part;

    const BODY_MAX_SIZE = 1048576; // 1MB


    /**
     * __construct
     *
     * Provide a uid, and parse message structure.
     *
     * @param string $uid     The message UID.
     * @param string $folder  Folder name
     * @param bool   $is_safe Security flag
     */
    function __construct($uid, $folder = null, $is_safe = false)
    {
        // decode combined UID-folder identifier
        if (preg_match('/^[0-9.]+-.+/', $uid)) {
            list($uid, $folder) = explode('-', $uid, 2);
        }

        $context = null;
        if (preg_match('/^([0-9]+)\.([0-9.]+)$/', $uid, $matches)) {
            $uid     = $matches[1];
            $context = $matches[2];
        }

        $this->uid     = $uid;
        $this->context = $context;
        $this->app     = rcube::get_instance();
        $this->storage = $this->app->get_storage();
        $this->folder  = is_string($folder) && strlen($folder) ? $folder : $this->storage->get_folder();

        // Set current folder
        $this->storage->set_folder($this->folder);
        $this->storage->set_options(['all_headers' => true]);

        $this->headers = $this->storage->get_message($uid);

        if (!$this->headers) {
            return;
        }

        $this->tnef_decode = (bool) $this->app->config->get('tnef_decode', true);

        $this->set_safe($is_safe || !empty($_SESSION['safe_messages'][$this->folder.':'.$uid]));
        $this->opt = [
            'safe'        => $this->is_safe,
            'prefer_html' => $this->app->config->get('prefer_html'),
            'get_url'     => $this->app->url([
                    'action' => 'get',
                    'mbox'   => $this->folder,
                    'uid'    => $uid
                ],
                false, false, true
            )
        ];

        if (!empty($this->headers->structure)) {
            $this->get_mime_numbers($this->headers->structure);
            $this->parse_structure($this->headers->structure);
        }
        else if ($this->context === null) {
            $this->body = $this->storage->get_body($uid);
        }

        $this->mime    = new rcube_mime($this->headers->charset);
        $this->subject = str_replace("\n", '', $this->headers->get('subject'));
        $from          = $this->mime->decode_address_list($this->headers->from, 1);
        $this->sender  = current($from);

        // notify plugins and let them analyze this structured message object
        $this->app->plugins->exec_hook('message_load', ['object' => $this]);
    }

    /**
     * Return a (decoded) message header
     *
     * @param string $name Header name
     * @param bool   $raw  Don't mime-decode the value
     *
     * @return string Header value
     */
    public function get_header($name, $raw = false)
    {
        if (empty($this->headers)) {
            return null;
        }

        return $this->headers->get($name, !$raw);
    }

    /**
     * Set is_safe var and session data
     *
     * @param bool $safe enable/disable
     */
    public function set_safe($safe = true)
    {
        $_SESSION['safe_messages'][$this->folder.':'.$this->uid] = $this->is_safe = $safe;
    }

    /**
     * Compose a valid URL for getting a message part
     *
     * @param string $mime_id Part MIME-ID
     * @param mixed  $embed Mimetype class for parts to be embedded
     *
     * @return string|false URL or false if part does not exist
     */
    public function get_part_url($mime_id, $embed = false)
    {
        if (!empty($this->mime_parts[$mime_id])) {
            return $this->opt['get_url'] . '&_part=' . $mime_id
                . ($embed ? '&_embed=1&_mimeclass=' . $embed : '');
        }

        return false;
    }

    /**
     * Get content of a specific part of this message
     *
     * @param string   $mime_id           Part MIME-ID
     * @param resource $fp                File pointer to save the message part
     * @param bool     $skip_charset_conv Disables charset conversion
     * @param int      $max_bytes         Only read this number of bytes
     * @param bool     $formatted         Enables formatting of text/* parts bodies
     *
     * @return string Part content
     * @deprecated
     */
    public function get_part_content($mime_id, $fp = null, $skip_charset_conv = false, $max_bytes = 0, $formatted = true)
    {
        if ($part = $this->mime_parts[$mime_id]) {
            // stored in message structure (winmail/inline-uuencode)
            if (!empty($part->body) || $part->encoding == 'stream') {
                if ($fp) {
                    fwrite($fp, $part->body);
                }
                return $fp ? true : $part->body;
            }

            // get from IMAP
            $this->storage->set_folder($this->folder);

            return $this->storage->get_message_part($this->uid, $mime_id, $part,
                null, $fp, $skip_charset_conv, $max_bytes, $formatted);
        }
    }

    /**
     * Get content of a specific part of this message
     *
     * @param string $mime_id   Part ID
     * @param bool   $formatted Enables formatting of text/* parts bodies
     * @param int    $max_bytes Only return/read this number of bytes
     * @param mixed  $mode      NULL to return a string, -1 to print body
     *                          or file pointer to save the body into
     *
     * @return string|bool Part content or operation status
     */
    public function get_part_body($mime_id, $formatted = false, $max_bytes = 0, $mode = null)
    {
        if (empty($this->mime_parts[$mime_id])) {
            return;
        }

        $part = $this->mime_parts[$mime_id];

        // allow plugins to modify part body
        $plugin = $this->app->plugins->exec_hook('message_part_body',
            ['object' => $this, 'part' => $part]);

        // only text parts can be formatted
        $formatted = $formatted && $part->ctype_primary == 'text';

        // part body not fetched yet... save in memory if it's small enough
        if ($part->body === null && is_numeric($mime_id) && $part->size < self::BODY_MAX_SIZE) {
            $this->storage->set_folder($this->folder);
            // Warning: body here should be always unformatted
            $part->body = $this->storage->get_message_part($this->uid, $mime_id, $part,
                null, null, true, 0, false);
        }

        $charset = !empty($this->headers) ? $this->headers->charset : null;

        // body stored in message structure (winmail/inline-uuencode)
        if ($part->body !== null || $part->encoding == 'stream') {
            $body = $part->body;

            if ($formatted && $body) {
                $body = self::format_part_body($body, $part, $charset);
            }

            if ($max_bytes && strlen($body) > $max_bytes) {
                $body = substr($body, 0, $max_bytes);
            }

            if (is_resource($mode)) {
                if ($body !== false) {
                    fwrite($mode, $body);
                    @rewind($mode);
                }

                return $body !== false;
            }

            if ($mode === -1) {
                if ($body !== false) {
                    print($body);
                }

                return $body !== false;
            }

            return $body;
        }

        // get the body from IMAP
        $this->storage->set_folder($this->folder);

        $body = $this->storage->get_message_part($this->uid, $mime_id, $part,
            $mode === -1, is_resource($mode) ? $mode : null,
            !($mode && $formatted), $max_bytes, $mode && $formatted);

        if (is_resource($mode)) {
            @rewind($mode);
            return $body !== false;
        }

        if (!$mode && $body && $formatted) {
            $body = self::format_part_body($body, $part, $charset);
        }

        return $body;
    }

    /**
     * Format text message part for display
     *
     * @param string             $body            Part body
     * @param rcube_message_part $part            Part object
     * @param string             $default_charset Fallback charset if part charset is not specified
     *
     * @return string Formatted body
     */
    public static function format_part_body($body, $part, $default_charset = null)
    {
        // remove useless characters
        $body = preg_replace('/[\t\r\0\x0B]+\n/', "\n", $body);

        // remove NULL characters if any (#1486189)
        if (strpos($body, "\x00") !== false) {
            $body = str_replace("\x00", '', $body);
        }

        // detect charset...
        if (empty($part->charset) || strtoupper($part->charset) == 'US-ASCII') {
            // try to extract charset information from HTML meta tag (#1488125)
            if ($part->ctype_secondary == 'html' && preg_match('/<meta[^>]+charset=([a-z0-9-_]+)/i', $body, $m)) {
                $part->charset = strtoupper($m[1]);
            }
            else if ($default_charset) {
                $part->charset = $default_charset;
            }
            else {
                $rcube         = rcube::get_instance();
                $part->charset = $rcube->config->get('default_charset', RCUBE_CHARSET);
            }
        }

        // ..convert charset encoding
        $body = rcube_charset::convert($body, $part->charset);

        return $body;
    }

    /**
     * Determine if the message contains a HTML part. This must to be
     * a real part not an attachment (or its part)
     *
     * @param bool               $enriched Enables checking for text/enriched parts too
     * @param rcube_message_part &$part    Reference to the part if found
     *
     * @return bool True if a HTML is available, False if not
     */
    public function has_html_part($enriched = false, &$part = null)
    {
        // check all message parts
        foreach ($this->mime_parts as $part) {
            if ($part->mimetype == 'text/html' || ($enriched && $part->mimetype == 'text/enriched')) {
                // Skip if part is an attachment, don't use is_attachment() here
                if ($part->filename) {
                    continue;
                }

                if (!$part->size) {
                    continue;
                }

                if (!$this->check_context($part)) {
                    continue;
                }

                // The HTML body part extracted from a winmail.dat attachment part
                if (strpos($part->mime_id, 'winmail.') === 0) {
                    return true;
                }

                $level = explode('.', $part->mime_id);
                $depth = count($level);
                $last  = '';

                // Check if the part does not belong to a message/rfc822 part
                while (array_pop($level) !== null) {
                    if (!count($level)) {
                        return true;
                    }

                    $parent = $this->mime_parts[implode('.', $level)];

                    if (!$this->check_context($parent)) {
                        return true;
                    }

                    if ($parent->mimetype == 'message/rfc822') {
                        continue 2;
                    }
                }

                return true;
            }
        }

        $part = null;

        return false;
    }

    /**
     * Determine if the message contains a text/plain part. This must to be
     * a real part not an attachment (or its part)
     *
     * @param rcube_message_part &$part Reference to the part if found
     *
     * @return bool True if a plain text part is available, False if not
     */
    public function has_text_part(&$part = null)
    {
        // check all message parts
        foreach ($this->mime_parts as $part) {
            if ($part->mimetype == 'text/plain') {
                // Skip if part is an attachment, don't use is_attachment() here
                if (!empty($part->filename)) {
                    continue;
                }

                if (empty($part->size)) {
                    continue;
                }

                if (!$this->check_context($part)) {
                    continue;
                }

                $level = explode('.', $part->mime_id);

                // Check if the part does not belong to a message/rfc822 part
                while (array_pop($level) !== null) {
                    if (!count($level)) {
                        return true;
                    }

                    $parent = $this->mime_parts[implode('.', $level)];

                    if (!$this->check_context($parent)) {
                        return true;
                    }

                    if ($parent->mimetype == 'message/rfc822') {
                        continue 2;
                    }
                }

                return true;
            }
        }

        $part = null;

        return false;
    }

    /**
     * Return the first HTML part of this message
     *
     * @param rcube_message_part &$part    Reference to the part if found
     * @param bool               $enriched Enables checking for text/enriched parts too
     *
     * @return string|null HTML message part content
     */
    public function first_html_part(&$part = null, $enriched = false)
    {
        if ($this->has_html_part($enriched, $part)) {
            $body = $this->get_part_body($part->mime_id, true);

            if ($part->mimetype == 'text/enriched') {
                $body = rcube_enriched::to_html($body);
            }

            return $body;
        }
    }

    /**
     * Return the first text part of this message.
     * If there's no text/plain part but $strict=true and text/html part
     * exists, it will be returned in text/plain format.
     *
     * @param rcube_message_part &$part  Reference to the part if found
     * @param bool               $strict Check only text/plain parts
     *
     * @return string|null Plain text message/part content
     */
    public function first_text_part(&$part = null, $strict = false)
    {
        // no message structure, return complete body
        if (empty($this->parts)) {
            return $this->body;
        }

        if ($this->has_text_part($part)) {
            return $this->get_part_body($part->mime_id, true);
        }

        if (!$strict && ($body = $this->first_html_part($part, true))) {
            // create instance of html2text class
            $h2t  = new rcube_html2text($body);
            return $h2t->get_text();
        }
    }

    /**
     * Return message parts in current context
     */
    public function mime_parts()
    {
        if ($this->context === null) {
            return $this->mime_parts;
        }

        $parts = [];

        foreach ($this->mime_parts as $part_id => $part) {
            if ($this->check_context($part)) {
                $parts[$part_id] = $part;
            }
        }

        return $parts;
    }

    /**
     * Checks if part of the message is an attachment (or part of it)
     *
     * @param rcube_message_part $part Message part
     *
     * @return bool True if the part is an attachment part
     */
    public function is_attachment($part)
    {
        foreach ($this->attachments as $att_part) {
            if ($att_part->mime_id === $part->mime_id) {
                return true;
            }

            // check if the part is a subpart of another attachment part (message/rfc822)
            if ($att_part->mimetype == 'message/rfc822') {
                if (in_array($part, (array)$att_part->parts)) {
                    return true;
                }
            }
        }

        return false;
    }

    /**
     * In a multipart/encrypted encrypted message,
     * find the encrypted message payload part.
     *
     * @return rcube_message_part
     */
    public function get_multipart_encrypted_part()
    {
        foreach ($this->mime_parts as $mime_id => $mpart) {
            if ($mpart->mimetype == 'multipart/encrypted') {
                $this->pgp_mime = true;
            }
            if ($this->pgp_mime && ($mpart->mimetype == 'application/octet-stream' ||
                    (!empty($mpart->filename) && $mpart->filename != 'version.txt'))
            ) {
                $this->encrypted_part = $mime_id;
                return $mpart;
            }
        }

        return false;
    }

    /**
     * Read the message structure returned by the IMAP server
     * and build flat lists of content parts and attachments
     *
     * @param rcube_message_part $structure Message structure node
     * @param bool               $recursive True when called recursively
     */
    private function parse_structure($structure, $recursive = false)
    {
        // real content-type of message/rfc822 part
        if ($structure->mimetype == 'message/rfc822' && !empty($structure->real_mimetype)) {
            $mimetype = $structure->real_mimetype;

            // parse headers from message/rfc822 part
            if (!isset($structure->headers['subject']) && !isset($structure->headers['from'])) {
                $part_body = $this->get_part_body($structure->mime_id, false, 32768);
                list($headers, ) = rcube_utils::explode("\r\n\r\n", $part_body, 2);
                $structure->headers = rcube_mime::parse_headers($headers);

                if ($this->context === $structure->mime_id) {
                    $this->headers = rcube_message_header::from_array($structure->headers);
                }

                // For small text messages we can optimize, so an additional FETCH is not needed
                if ($structure->size < 32768) {
                    $decoder = new rcube_mime_decode();
                    $decoded = $decoder->decode($part_body);

                    // Non-multipart message
                    if (isset($decoded->body) && count($structure->parts) == 1) {
                        $structure->parts[0]->body = $decoded->body;
                    }
                    // Multipart message
                    else {
                        foreach ($decoded->parts as $idx => $p) {
                            if (array_key_exists($idx, $structure->parts)) {
                                $structure->parts[$idx]->body = $p->body;
                            }
                        }
                    }
                }
            }
        }
        else {
            $mimetype = $structure->mimetype;
        }

        // show message headers
        if (
            $recursive
            && is_array($structure->headers)
            && (
                isset($structure->headers['subject'])
                || !empty($structure->headers['from'])
                || !empty($structure->headers['to'])
            )
        ) {
            $c = new rcube_message_part();
            $c->type    = 'headers';
            $c->headers = $structure->headers;
            $this->add_part($c);
        }

        // Allow plugins to handle message parts
        $plugin = $this->app->plugins->exec_hook('message_part_structure', [
                'object'    => $this,
                'structure' => $structure,
                'mimetype'  => $mimetype,
                'recursive' => $recursive
        ]);

        if ($plugin['abort']) {
            return;
        }

        $structure = $plugin['structure'];
        $mimetype  = $plugin['mimetype'];
        $recursive = $plugin['recursive'];

        list($message_ctype_primary, $message_ctype_secondary) = explode('/', $mimetype);

        // print body if message doesn't have multiple parts
        if ($message_ctype_primary == 'text' && !$recursive) {
            // parts with unsupported type add to attachments list
            if (!in_array($message_ctype_secondary, ['plain', 'html', 'enriched'])) {
                $this->add_part($structure, 'attachment');
                return;
            }

            $structure->type = 'content';
            $this->add_part($structure);

            // Parse simple (plain text) message body
            if ($message_ctype_secondary == 'plain') {
                foreach ((array)$this->uu_decode($structure) as $uupart) {
                    $this->mime_parts[$uupart->mime_id] = $uupart;
                    $this->add_part($uupart, 'attachment');
                }
            }
        }
        // the same for pgp signed messages
        else if ($mimetype == 'application/pgp' && !$recursive) {
            $structure->type = 'content';
            $this->add_part($structure);
        }
        // message contains (more than one!) alternative parts
        else if ($mimetype == 'multipart/alternative'
            && is_array($structure->parts) && count($structure->parts) > 1
        ) {
            // get html/plaintext parts, other add to attachments list
            foreach ($structure->parts as $p => $sub_part) {
                $sub_mimetype = $sub_part->mimetype;
                $is_multipart = preg_match('/^multipart\/(related|relative|mixed|alternative)/', $sub_mimetype);

                // skip empty text parts
                if (!$sub_part->size && !$is_multipart) {
                    continue;
                }

                // We've encountered (malformed) messages with more than
                // one text/plain or text/html part here. There's no way to choose
                // which one is better, so we'll display first of them and add
                // others as attachments (#1489358)

                // check if sub part is
                if ($is_multipart) {
                    $related_part = $p;
                }
                else if ($sub_mimetype == 'text/plain' && !isset($plain_part)) {
                    $plain_part = $p;
                }
                else if ($sub_mimetype == 'text/html' && !isset($html_part)) {
                    $html_part = $p;
                    $this->got_html_part = true;
                }
                else if ($sub_mimetype == 'text/enriched' && !isset($enriched_part)) {
                    $enriched_part = $p;
                }
                else {
                    // add unsupported/unrecognized parts to attachments list
                    $this->add_part($sub_part, 'attachment');
                }
            }

            // parse related part (alternative part could be in here)
            if (isset($related_part) && !$this->parse_alternative) {
                $this->parse_alternative = true;
                $this->parse_structure($structure->parts[$related_part], true);
                $this->parse_alternative = false;

                // if plain part was found, we should unset it if html is preferred
                if (!empty($this->opt['prefer_html']) && count($this->parts)) {
                    $plain_part = null;
                }
            }

            // choose html/plain part to print
            $print_part = null;
            if (isset($html_part) && !empty($this->opt['prefer_html'])) {
                $print_part = $structure->parts[$html_part];
            }
            else if (isset($enriched_part)) {
                $print_part = $structure->parts[$enriched_part];
            }
            else if (isset($plain_part)) {
                $print_part = $structure->parts[$plain_part];
            }

            // add the right message body
            if (is_object($print_part)) {
                $print_part->type = 'content';

                // Allow plugins to handle also this part
                $plugin = $this->app->plugins->exec_hook('message_part_structure', [
                        'object'    => $this,
                        'structure' => $print_part,
                        'mimetype'  => $print_part->mimetype,
                        'recursive' => true
                ]);

                if (!$plugin['abort']) {
                    $this->add_part($print_part);
                }
            }
            // show plaintext warning
            else if (isset($html_part) && empty($this->parts)) {
                $c = new rcube_message_part();
                $c->type            = 'content';
                $c->ctype_primary   = 'text';
                $c->ctype_secondary = 'plain';
                $c->mimetype        = 'text/plain';
                $c->realtype        = 'text/html';

                $this->add_part($c);
            }
        }
        // this is an encrypted message -> create a plaintext body with the according message
        else if ($mimetype == 'multipart/encrypted') {
            $p = new rcube_message_part();
            $p->type            = 'content';
            $p->ctype_primary   = 'text';
            $p->ctype_secondary = 'plain';
            $p->mimetype        = 'text/plain';
            $p->realtype        = 'multipart/encrypted';
            $p->mime_id         = $structure->mime_id;

            $this->add_part($p);

            // add encrypted payload part as attachment
            if (!empty($structure->parts)) {
                for ($i=0; $i < count($structure->parts); $i++) {
                    $subpart = $structure->parts[$i];
                    if ($subpart->mimetype == 'application/octet-stream' || !empty($subpart->filename)) {
                        $this->add_part($subpart, 'attachment');
                    }
                }
            }
        }
        // this is an S/MIME encrypted message -> create a plaintext body with the according message
        else if ($mimetype == 'application/pkcs7-mime') {
            $p = new rcube_message_part();
            $p->type            = 'content';
            $p->ctype_primary   = 'text';
            $p->ctype_secondary = 'plain';
            $p->mimetype        = 'text/plain';
            $p->realtype        = 'application/pkcs7-mime';
            $p->mime_id         = $structure->mime_id;

            $this->add_part($p);

            if (!empty($structure->filename)) {
                $this->add_part($structure, 'attachment');
            }
        }
        // message contains multiple parts
        else if (is_array($structure->parts) && !empty($structure->parts)) {
            // iterate over parts
            for ($i=0; $i < count($structure->parts); $i++) {
                $mail_part      = &$structure->parts[$i];
                $primary_type   = $mail_part->ctype_primary;
                $secondary_type = $mail_part->ctype_secondary;
                $part_mimetype  = $mail_part->mimetype;

                // multipart/alternative or message/rfc822
                if ($primary_type == 'multipart' || $part_mimetype == 'message/rfc822') {
                    // list message/rfc822 as attachment as well
                    if ($part_mimetype == 'message/rfc822') {
                        $this->add_part($mail_part, 'attachment');
                    }

                    $this->parse_structure($mail_part, true);
                }
                // part text/[plain|html] or delivery status
                else if ((($part_mimetype == 'text/plain' || $part_mimetype == 'text/html') && $mail_part->disposition != 'attachment')
                    || in_array($part_mimetype, ['message/delivery-status', 'text/rfc822-headers', 'message/disposition-notification'])
                ) {
                    // Allow plugins to handle also this part
                    $plugin = $this->app->plugins->exec_hook('message_part_structure', [
                            'object'    => $this,
                            'structure' => $mail_part,
                            'mimetype'  => $part_mimetype,
                            'recursive' => true
                    ]);

                    if ($plugin['abort']) {
                        continue;
                    }

                    if ($part_mimetype == 'text/html' && $mail_part->size) {
                        $this->got_html_part = true;
                    }

                    $mail_part = $plugin['structure'];
                    list($primary_type, $secondary_type) = explode('/', $plugin['mimetype']);

                    // add text part if it matches the prefs
                    if (!$this->parse_alternative
                        || ($secondary_type == 'html' && $this->opt['prefer_html'])
                        || ($secondary_type == 'plain' && !$this->opt['prefer_html'])
                    ) {
                        $mail_part->type = 'content';
                        $this->add_part($mail_part);
                    }

                    // list as attachment as well
                    if (!empty($mail_part->filename)) {
                        $this->add_part($mail_part, 'attachment');
                    }
                }
                // ignore "virtual" protocol parts
                else if ($primary_type == 'protocol') {
                    continue;
                }
                // part is Microsoft Outlook TNEF (winmail.dat)
                else if ($part_mimetype == 'application/ms-tnef' && $this->tnef_decode) {
                    $tnef_parts = (array) $this->tnef_decode($mail_part);
                    $tnef_body  = '';

                    foreach ($tnef_parts as $tpart) {
                        $this->mime_parts[$tpart->mime_id] = $tpart;

                        if (strpos($tpart->mime_id, '.html')) {
                            $tnef_body = $tpart->body;
                            if ($this->opt['prefer_html']) {
                                $tpart->type = 'content';

                                // Reset type on the plain text part that usually is added to winmail.dat messages
                                // (on the same level in the structure as the attachment itself)
                                $level = count(explode('.', $mail_part->mime_id));
                                foreach ($this->parts as $p) {
                                    if ($p->type == 'content' && $p->mimetype == 'text/plain'
                                        && count(explode('.', $p->mime_id)) == $level
                                    ) {
                                        $p->type = null;
                                    }
                                }
                            }
                            $this->add_part($tpart);
                        }
                        else {
                            $inline = !empty($tpart->content_id) && strpos($tnef_body, "cid:{$tpart->content_id}") !== false;
                            $this->add_part($tpart, $inline ? 'inline' : 'attachment');
                        }
                    }

                    // add winmail.dat to the list if it's content is unknown
                    if (empty($tnef_parts) && !empty($mail_part->filename)) {
                        $this->mime_parts[$mail_part->mime_id] = $mail_part;
                        $this->add_part($mail_part, 'attachment');
                    }
                }
                // part is a file/attachment
                else if (
                    preg_match('/^(inline|attach)/', $mail_part->disposition)
                    || !empty($mail_part->headers['content-id'])
                    || ($mail_part->filename &&
                        (empty($mail_part->disposition) || preg_match('/^[a-z0-9!#$&.+^_-]+$/i', $mail_part->disposition)))
                ) {
                    // skip apple resource forks
                    if ($message_ctype_secondary == 'appledouble' && $secondary_type == 'applefile') {
                        continue;
                    }

                    if (!empty($mail_part->headers['content-id'])) {
                        $mail_part->content_id = preg_replace(['/^</', '/>$/'], '', $mail_part->headers['content-id']);
                    }

                    if (!empty($mail_part->headers['content-location'])) {
                        $mail_part->content_location = '';
                        if (!empty($mail_part->headers['content-base'])) {
                            $mail_part->content_location = $mail_part->headers['content-base'];
                        }
                        $mail_part->content_location .= $mail_part->headers['content-location'];
                    }

                    // application/smil message's are known to use inline images that aren't really inline (#8870)
                    // TODO: This code probably does not belong here. I.e. we should not default to
                    // disposition=inline in rcube_imap::structure_part().
                    if ($primary_type === 'image'
                        && !empty($structure->ctype_parameters['type'])
                        && $structure->ctype_parameters['type'] === 'application/smil'
                    ) {
                        $mail_part->disposition = 'attachment';
                    }

                    // part belongs to a related message and is linked
                    // Note: mixed is not supposed to contain inline images, but we've found such examples (#5905)
                    if (
                        preg_match('/^multipart\/(related|relative|mixed)/', $mimetype)
                        && (!empty($mail_part->content_id) || !empty($mail_part->content_location))
                    ) {
                        $this->add_part($mail_part, 'inline');
                    }

                    // Any non-inline attachment
                    if (!preg_match('/^inline/i', $mail_part->disposition) || empty($mail_part->headers['content-id'])) {
                        // Content-Type name regexp according to RFC4288.4.2
                        if (!preg_match('/^[a-z0-9!#$&.+^_-]+\/[a-z0-9!#$&.+^_-]+$/i', $part_mimetype)) {
                            // replace malformed content type with application/octet-stream (#1487767)
                            $mail_part->ctype_primary   = 'application';
                            $mail_part->ctype_secondary = 'octet-stream';
                            $mail_part->mimetype        = 'application/octet-stream';
                        }

                        $this->add_part($mail_part, 'attachment');
                    }
                }
                // calendar part not marked as attachment (#1490325)
                else if ($part_mimetype == 'text/calendar') {
                    if (!$mail_part->filename) {
                        $mail_part->filename = 'calendar.ics';
                    }

                    $this->add_part($mail_part, 'attachment');
                }
                // Last resort, non-inline and non-text part of multipart/mixed message (#7117)
                else if ($mimetype == 'multipart/mixed'
                    && $mail_part->disposition != 'inline'
                    && $primary_type && $primary_type != 'text' && $primary_type != 'multipart'
                ) {
                    $this->add_part($mail_part, 'attachment');
                }
            }

            // if this is a related part try to resolve references
            // Note: mixed is not supposed to contain inline images, but we've found such examples (#5905)
            if (preg_match('/^multipart\/(related|relative|mixed)/', $mimetype) && count($this->inline_parts)) {
                $a_replaces = [];
                $img_regexp = '/^image\/(gif|jpe?g|png|tiff|bmp|svg)/';

                foreach ($this->inline_parts as $inline_object) {
                    $part_url = $this->get_part_url($inline_object->mime_id, $inline_object->ctype_primary);
                    if (isset($inline_object->content_id)) {
                        $a_replaces['cid:'.$inline_object->content_id] = $part_url;
                    }
                    if (!empty($inline_object->content_location)) {
                        $a_replaces[$inline_object->content_location] = $part_url;
                    }

                    if (!empty($inline_object->filename)) {
                        // MS Outlook sends sometimes non-related attachments as related
                        // In this case multipart/related message has only one text part
                        // We'll add all such attachments to the attachments list
                        if ($this->got_html_part === false) {
                            $this->add_part($inline_object, 'attachment');
                        }
                        // MS Outlook sometimes also adds non-image attachments as related
                        // We'll add all such attachments to the attachments list
                        // Warning: some browsers support pdf in <img/>
                        else if (!preg_match($img_regexp, $inline_object->mimetype)) {
                            $this->add_part($inline_object, 'attachment');
                        }
                        // @TODO: we should fetch HTML body and find attachment's content-id
                        // to handle also image attachments without reference in the body
                        // @TODO: should we list all image attachments in text mode?
                    }
                }

                // add replace array to each content part
                // (will be applied later when part body is available)
                foreach ($this->parts as $i => $part) {
                    if ($part->type == 'content') {
                        $this->parts[$i]->replaces = $a_replaces;
                    }
                }
            }
        }
        // message is a single part non-text
        else if ($structure->filename || preg_match('/^application\//i', $mimetype)) {
            $this->add_part($structure, 'attachment');
        }
    }

    /**
     * Fill a flat array with references to all parts, indexed by part numbers
     *
     * @param rcube_message_part $part Message body structure
     */
    private function get_mime_numbers(&$part)
    {
        if (strlen($part->mime_id)) {
            $this->mime_parts[$part->mime_id] = &$part;
        }

        if (is_array($part->parts)) {
            for ($i=0; $i<count($part->parts); $i++) {
                $this->get_mime_numbers($part->parts[$i]);
            }
        }
    }

    /**
     * Add a part to object parts array(s) (with context check)
     *
     * @param rcube_message_part $part Message part
     * @param string             $type Part type (inline/attachment)
     */
    private function add_part($part, $type = null)
    {
        if ($this->check_context($part)) {
            // It may happen that we add the same part to the array many times
            // use part ID index to prevent from duplicates
            switch ($type) {
                case 'inline': $this->inline_parts[(string) $part->mime_id] = $part; break;
                case 'attachment': $this->attachments[(string) $part->mime_id] = $part; break;
                default: $this->parts[] = $part; break;
            }
        }
    }

    /**
     * Check if specified part belongs to the current context
     *
     * @param rcube_message_part $part Message part
     *
     * @return bool True if the part belongs to the current context, False otherwise
     */
    private function check_context($part)
    {
        return $this->context === null || strpos($part->mime_id, $this->context . '.') === 0;
    }

    /**
     * Decode a Microsoft Outlook TNEF part (winmail.dat)
     *
     * @param rcube_message_part $part Message part to decode
     *
     * @return rcube_message_part[] List of message parts extracted from TNEF
     */
    function tnef_decode(&$part)
    {
        // @TODO: attachment may be huge, handle body via file
        $body     = $this->get_part_body($part->mime_id);
        $tnef     = new rcube_tnef_decoder;
        $tnef_arr = $tnef->decompress($body, true);
        $parts    = [];

        unset($body);

        // HTML body
        if (!empty($tnef_arr['message'])) {
            $tpart = new rcube_message_part;

            $tpart->encoding        = 'stream';
            $tpart->ctype_primary   = 'text';
            $tpart->ctype_secondary = 'html';
            $tpart->mimetype        = 'text/html';
            $tpart->mime_id         = 'winmail.' . $part->mime_id . '.html';
            $tpart->size            = strlen($tnef_arr['message']);
            $tpart->body            = $tnef_arr['message'];
            $tpart->charset         = RCUBE_CHARSET;

            $parts[] = $tpart;
        }

        // Attachments
        foreach ($tnef_arr['attachments'] as $pid => $winatt) {
            $tpart = new rcube_message_part;

            $tpart->filename        = $this->fix_attachment_name(trim($winatt['name']), $part);
            $tpart->encoding        = 'stream';
            $tpart->ctype_primary   = trim(strtolower($winatt['type']));
            $tpart->ctype_secondary = trim(strtolower($winatt['subtype']));
            $tpart->mimetype        = $tpart->ctype_primary . '/' . $tpart->ctype_secondary;
            $tpart->mime_id         = 'winmail.' . $part->mime_id . '.' . $pid;
            $tpart->size            = $winatt['size'] ?? 0;
            $tpart->body            = $winatt['stream'];

            if (!empty($winatt['content-id'])) {
                $tpart->content_id = $winatt['content-id'];
            }

            $parts[] = $tpart;
            unset($tnef_arr[$pid]);
        }

        return $parts;
    }

    /**
     * Parse message body for UUencoded attachments bodies
     *
     * @param rcube_message_part $part Message part to decode
     *
     * @return rcube_message_part[] List of message parts extracted from the file
     */
    function uu_decode(&$part)
    {
        // @TODO: messages may be huge, handle body via file
        $part->body = $this->get_part_body($part->mime_id);
        $parts      = [];
        $pid        = 0;

        // FIXME: line length is max.65?
        $uu_regexp_begin = '/begin [0-7]{3,4} ([^\r\n]+)\r?\n/s';
        $uu_regexp_end   = '/`\r?\nend((\r?\n)|($))/s';

        while (preg_match($uu_regexp_begin, $part->body, $matches, PREG_OFFSET_CAPTURE)) {
            $startpos = $matches[0][1];

            if (!preg_match($uu_regexp_end, $part->body, $m, PREG_OFFSET_CAPTURE, $startpos)) {
                break;
            }

            $endpos    = $m[0][1];
            $begin_len = strlen($matches[0][0]);
            $end_len   = strlen($m[0][0]);

            // extract attachment body
            $filebody = substr($part->body, $startpos + $begin_len, $endpos - $startpos - $begin_len - 1);
            $filebody = str_replace("\r\n", "\n", $filebody);

            // remove attachment body from the message body
            $part->body = substr_replace($part->body, '', $startpos, $endpos + $end_len - $startpos);
            // mark body as modified so it will not be cached by rcube_imap_cache
            $part->body_modified = true;

            // add attachments to the structure
            $uupart = new rcube_message_part;
            $uupart->filename = trim($matches[1][0]);
            $uupart->encoding = 'stream';
            $uupart->body     = convert_uudecode($filebody);
            $uupart->size     = strlen($uupart->body);
            $uupart->mime_id  = 'uu.' . $part->mime_id . '.' . $pid;

            $ctype = rcube_mime::file_content_type($uupart->body, $uupart->filename, 'application/octet-stream', true);
            $uupart->mimetype = $ctype;
            list($uupart->ctype_primary, $uupart->ctype_secondary) = explode('/', $ctype);

            $parts[] = $uupart;
            $pid++;
        }

        return $parts;
    }

    /**
     * Fix attachment name encoding if needed and possible
     *
     * @param string             $name Attachment name
     * @param rcube_message_part $part Message part
     *
     * @return string Fixed attachment name
     */
    protected function fix_attachment_name($name, $part)
    {
        if ($name == rcube_charset::clean($name)) {
            return $name;
        }

        // find charset from part or its parent(s)
        if ($part->charset) {
            $charsets[] = $part->charset;
        }
        else {
            // check first part (common case)
            $n = strpos($part->mime_id, '.') ? preg_replace('/\.[0-9]+$/', '', $part->mime_id) . '.1' : 1;
            if (($_part = $this->mime_parts[$n]) && $_part->charset) {
                $charsets[] = $_part->charset;
            }

            // check parents' charset
            $items = explode('.', $part->mime_id);
            for ($i = count($items)-1; $i > 0; $i--) {
                array_pop($items);
                $parent = $this->mime_parts[implode('.', $items)];

                if ($parent && $parent->charset) {
                    $charsets[] = $parent->charset;
                }
            }
        }

        if ($this->headers->charset) {
            $charsets[] = $this->headers->charset;
        }

        if ($charset = rcube_charset::check($name, $charsets)) {
            $name = rcube_charset::convert($name, $charset);
            $part->charset = $charset;
        }

        return $name;
    }

    /**
     * Deprecated methods (to be removed)
     */

    public static function unfold_flowed($text)
    {
        return rcube_mime::unfold_flowed($text);
    }

    public static function format_flowed($text, $length = 72)
    {
        return rcube_mime::format_flowed($text, $length);
    }
}
lib/Roundcube/rcube_image.php000064400000043506151727150660012235 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Image resizer and converter                                         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Image resizer and converter
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_image
{
    const TYPE_GIF = 1;
    const TYPE_JPG = 2;
    const TYPE_PNG = 3;
    const TYPE_TIF = 4;

    /** @var array Image file type to extension map */
    public static $extensions = [
        self::TYPE_GIF => 'gif',
        self::TYPE_JPG => 'jpg',
        self::TYPE_PNG => 'png',
        self::TYPE_TIF => 'tif',
    ];

    /** @var string Image file location */
    private $image_file;


    /**
     * Class constructor
     *
     * @param string $filename Image file name/path
     */
    function __construct($filename)
    {
        $this->image_file = $filename;
    }

    /**
     * Get image properties.
     *
     * @return array|null Hash array with image props like type, width, height
     */
    public function props()
    {
        $gd_type  = null;
        $channels = null;
        $width    = null;
        $height   = null;

        // use GD extension
        if (function_exists('getimagesize') && ($imsize = @getimagesize($this->image_file))) {
            $width   = $imsize[0];
            $height  = $imsize[1];
            $gd_type = $imsize[2];
            $type    = image_type_to_extension($gd_type, false);

            if (isset($imsize['channels'])) {
                $channels = $imsize['channels'];
            }
        }

        // use ImageMagick
        if (empty($type) && ($data = $this->identify())) {
            list($type, $width, $height) = $data;
            $channels = null;
        }

        if (!empty($type)) {
            return [
                'type'     => $type,
                'gd_type'  => $gd_type,
                'width'    => $width,
                'height'   => $height,
                'channels' => $channels,
            ];
        }
    }

    /**
     * Resize image to a given size. Use only to shrink an image.
     * If an image is smaller than specified size it will be not resized.
     *
     * @param int    $size           Max width/height size
     * @param string $filename       Output filename
     * @param bool   $browser_compat Convert to image type displayable by any browser
     *
     * @return string|false Output type on success, False on failure
     */
    public function resize($size, $filename = null, $browser_compat = false)
    {
        $result  = false;
        $rcube   = rcube::get_instance();
        $convert = self::getCommand('im_convert_path');
        $props   = $this->props();

        if (empty($props)) {
            return false;
        }

        if (!$filename) {
            $filename = $this->image_file;
        }

        // use Imagemagick
        if ($convert || class_exists('Imagick', false)) {
            $p['out'] = $filename;
            $p['in']  = $this->image_file;
            $type     = $props['type'];

            if (!$type && ($data = $this->identify())) {
                $type = $data[0];
            }

            $type = strtr($type, ["jpeg" => "jpg", "tiff" => "tif", "ps" => "eps", "ept" => "eps"]);
            $p['intype'] = $type;

            // convert to an image format every browser can display
            if ($browser_compat && !in_array($type, ['jpg', 'gif', 'png'])) {
                $type = 'jpg';
            }

            // If only one dimension is greater than the limit convert doesn't
            // work as expected, we need to calculate new dimensions
            $scale = $size / max($props['width'], $props['height']);

            // if file is smaller than the limit, we do nothing
            // but copy original file to destination file
            if ($scale >= 1 && $p['intype'] == $type) {
                $result = ($this->image_file == $filename || copy($this->image_file, $filename)) ? '' : false;
            }
            else {
                $valid_types = "bmp,eps,gif,jp2,jpg,png,svg,tif";

                if (in_array($type, explode(',', $valid_types))) { // Valid type?
                    if ($scale >= 1) {
                        $width  = $props['width'];
                        $height = $props['height'];
                    }
                    else {
                        $width  = intval($props['width']  * $scale);
                        $height = intval($props['height'] * $scale);
                    }

                    // use ImageMagick in command line
                    if ($convert) {
                        $p += [
                            'type'    => $type,
                            'quality' => 75,
                            'size'    => $width . 'x' . $height,
                        ];

                        $result = rcube::exec($convert
                            . ' 2>&1 -flatten -auto-orient -colorspace sRGB -strip'
                            . ' -quality {quality} -resize {size} {intype}:{in} {type}:{out}', $p);
                    }
                    // use PHP's Imagick class
                    else {
                        try {
                            $image = new Imagick($this->image_file);

                            try {
                                // it throws exception on formats not supporting these features
                                $image->setImageBackgroundColor('white');
                                $image->setImageAlphaChannel(11);
                                $image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
                            }
                            catch (Exception $e) {
                                // ignore errors
                            }

                            $image->setImageColorspace(Imagick::COLORSPACE_SRGB);
                            $image->setImageCompressionQuality(75);
                            $image->setImageFormat($type);
                            $image->stripImage();
                            $image->scaleImage($width, $height);

                            if ($image->writeImage($filename)) {
                                $result = '';
                            }
                        }
                        catch (Exception $e) {
                            rcube::raise_error($e, true, false);
                        }
                    }
                }
            }

            if ($result === '') {
                @chmod($filename, 0600);
                return $type;
            }
        }

        // do we have enough memory? (#1489937)
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && !$this->mem_check($props)) {
            return false;
        }

        // use GD extension
        if ($props['gd_type'] && $props['width'] > 0 && $props['height'] > 0) {
            if ($props['gd_type'] == IMAGETYPE_JPEG && function_exists('imagecreatefromjpeg')) {
                $image = @imagecreatefromjpeg($this->image_file);
                $type  = 'jpg';
            }
            else if ($props['gd_type'] == IMAGETYPE_GIF && function_exists('imagecreatefromgif')) {
                $image = @imagecreatefromgif($this->image_file);
                $type  = 'gif';
            }
            else if ($props['gd_type'] == IMAGETYPE_PNG && function_exists('imagecreatefrompng')) {
                $image = @imagecreatefrompng($this->image_file);
                $type  = 'png';
            }
            else {
                // @TODO: print error to the log?
                return false;
            }

            if ($image === false) {
                return false;
            }

            $scale = $size / max($props['width'], $props['height']);

            // Imagemagick resize is implemented in shrinking mode (see -resize argument above)
            // we do the same here, if an image is smaller than specified size
            // we do nothing but copy original file to destination file
            if ($scale >= 1) {
                $result = $this->image_file == $filename || copy($this->image_file, $filename);
            }
            else {
                $width     = intval($props['width']  * $scale);
                $height    = intval($props['height'] * $scale);
                $new_image = imagecreatetruecolor($width, $height);

                if ($new_image === false) {
                    return false;
                }

                // Fix transparency of gif/png image
                if ($props['gd_type'] != IMAGETYPE_JPEG) {
                    imagealphablending($new_image, false);
                    imagesavealpha($new_image, true);
                    $transparent = imagecolorallocatealpha($new_image, 255, 255, 255, 127);
                    imagefilledrectangle($new_image, 0, 0, $width, $height, $transparent);
                }

                imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, $props['width'], $props['height']);
                $image = $new_image;

                // fix orientation of image if EXIF data exists and specifies orientation (GD strips the EXIF data)
                if ($this->image_file && $type == 'jpg' && function_exists('exif_read_data')) {
                    $exif = @exif_read_data($this->image_file);
                    if ($exif && !empty($exif['Orientation'])) {
                        switch ($exif['Orientation']) {
                            case 3:
                                $image = imagerotate($image, 180, 0);
                                break;
                            case 6:
                                $image = imagerotate($image, -90, 0);
                                break;
                            case 8:
                                $image = imagerotate($image, 90, 0);
                                break;
                        }
                    }
                }

                if ($props['gd_type'] == IMAGETYPE_JPEG) {
                    $result = imagejpeg($image, $filename, 75);
                }
                elseif($props['gd_type'] == IMAGETYPE_GIF) {
                    $result = imagegif($image, $filename);
                }
                elseif($props['gd_type'] == IMAGETYPE_PNG) {
                    $result = imagepng($image, $filename, 6, PNG_ALL_FILTERS);
                }
            }

            if ($result) {
                @chmod($filename, 0600);
                return $type;
            }
        }

        // @TODO: print error to the log?
        return false;
    }

    /**
     * Convert image to a given type
     *
     * @param int    $type     Destination file type (see class constants)
     * @param string $filename Output filename (if empty, original file will be used
     *                         and filename extension will be modified)
     *
     * @return bool True on success, False on failure
     */
    public function convert($type, $filename = null)
    {
        $rcube   = rcube::get_instance();
        $convert = self::getCommand('im_convert_path');

        if (!$filename) {
            $filename = $this->image_file;

            // modify extension
            if ($extension = self::$extensions[$type]) {
                $filename = preg_replace('/\.[^.]+$/', '', $filename) . '.' . $extension;
            }
        }

        // use ImageMagick in command line
        if ($convert) {
            $p['in']   = $this->image_file;
            $p['out']  = $filename;
            $p['type'] = self::$extensions[$type];

            $result = rcube::exec($convert . ' 2>&1 -colorspace sRGB -strip -flatten -quality 75 {in} {type}:{out}', $p);

            if ($result === '') {
                chmod($filename, 0600);
                return true;
            }
        }

        // use PHP's Imagick class
        if (class_exists('Imagick', false)) {
            try {
                $image = new Imagick($this->image_file);

                $image->setImageColorspace(Imagick::COLORSPACE_SRGB);
                $image->setImageCompressionQuality(75);
                $image->setImageFormat(self::$extensions[$type]);
                $image->stripImage();

                if ($image->writeImage($filename)) {
                    @chmod($filename, 0600);
                    return true;
                }
            }
            catch (Exception $e) {
                rcube::raise_error($e, true, false);
            }
        }

        // use GD extension (TIFF isn't supported)
        $props = $this->props();

        // do we have enough memory? (#1489937)
        if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && !$this->mem_check($props)) {
            return false;
        }

        if ($props['gd_type']) {
            if ($props['gd_type'] == IMAGETYPE_JPEG && function_exists('imagecreatefromjpeg')) {
                $image = imagecreatefromjpeg($this->image_file);
            }
            else if ($props['gd_type'] == IMAGETYPE_GIF && function_exists('imagecreatefromgif')) {
                $image = imagecreatefromgif($this->image_file);
            }
            else if ($props['gd_type'] == IMAGETYPE_PNG && function_exists('imagecreatefrompng')) {
                $image = imagecreatefrompng($this->image_file);
            }
            else {
                // @TODO: print error to the log?
                return false;
            }

            if ($type == self::TYPE_JPG) {
                $result = imagejpeg($image, $filename, 75);
            }
            else if ($type == self::TYPE_GIF) {
                $result = imagegif($image, $filename);
            }
            else if ($type == self::TYPE_PNG) {
                $result = imagepng($image, $filename, 6, PNG_ALL_FILTERS);
            }

            if (!empty($result)) {
                @chmod($filename, 0600);
                return true;
            }
        }

        // @TODO: print error to the log?
        return false;
    }

    /**
     * Checks if image format conversion is supported (for specified mimetype).
     *
     * @param string $mimetype Mimetype name
     *
     * @return bool True if specified format can be converted to another format
     */
    public static function is_convertable($mimetype = null)
    {
        $rcube = rcube::get_instance();

        // @TODO: check if specified mimetype is really supported
        return class_exists('Imagick', false) || self::getCommand('im_convert_path');
    }

    /**
     * ImageMagick based image properties read.
     */
    private function identify()
    {
        $rcube = rcube::get_instance();

        // use ImageMagick in command line
        if ($cmd = self::getCommand('im_identify_path')) {
            $args = ['in' => $this->image_file, 'format' => "%m %[fx:w] %[fx:h]"];
            $id   = rcube::exec($cmd . ' 2>/dev/null -format {format} {in}', $args);

            if ($id) {
                return explode(' ', strtolower($id));
            }
        }

        // use PHP's Imagick class
        if (class_exists('Imagick', false)) {
            try {
                $image = new Imagick($this->image_file);

                return [
                    strtolower($image->getImageFormat()),
                    $image->getImageWidth(),
                    $image->getImageHeight(),
                ];
            }
            catch (Exception $e) {
                // ignore
            }
        }
    }

    /**
     * Check if we have enough memory to load specified image
     *
     * @param array $props Hash array with image props like channels, width, height
     *
     * @return bool True if there's enough memory to process the image, False otherwise
     */
    private function mem_check($props)
    {
        // image size is unknown, we can't calculate required memory
        if (!$props['width']) {
            return true;
        }

        // channels: CMYK - 4, RGB - 3
        $multip = ($props['channels'] ?: 3) + 1;

        // calculate image size in memory (in bytes)
        $size = $props['width'] * $props['height'] * $multip;

        return rcube_utils::mem_check($size);
    }

    /**
     * Get the configured command and make sure it is safe to use.
     * We cannot trust configuration, and escapeshellcmd() is useless.
     *
     * @param string $opt_name Configuration option name
     *
     * @return bool|string The command or False if not set or invalid
     */
    private static function getCommand($opt_name)
    {
        static $error = [];

        $cmd = (string) rcube::get_instance()->config->get($opt_name);

        if (empty($cmd)) {
            return false;
        }

        $cmd = trim($cmd);

        if (preg_match('/^(convert|identify)(\.exe)?$/i', $cmd)) {
            return $cmd;
        }

        // Executable must exist, also disallow network shares on Windows
        if ($cmd[0] !== '\\' && strpos($cmd, '//') !== 0 && file_exists($cmd)) {
            return $cmd;
        }

        if (empty($error[$opt_name])) {
            rcube::raise_error("Invalid $opt_name: $cmd", true, false);
            $error[$opt_name] = true;
        }

        return false;
    }
}
lib/Roundcube/rcube_ldap.php000064400000241730151727150660012072 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Interface to an LDAP address directory                              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 |         Andreas Dick <andudi (at) gmx (dot) ch>                       |
 |         Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Model class to access an LDAP address directory
 *
 * @package    Framework
 * @subpackage Addressbook
 */
class rcube_ldap extends rcube_addressbook
{
    // public properties
    public $primary_key = 'ID';
    public $groups      = false;
    public $readonly    = true;
    public $ready       = false;
    public $group_id    = 0;
    public $coltypes    = [];
    public $export_groups = false;

    // private properties
    protected $ldap;
    protected $formats  = [];
    protected $prop     = [];
    protected $fieldmap = [];
    protected $filter   = '';
    protected $sub_filter;
    protected $result;
    protected $ldap_result;
    protected $mail_domain = '';
    protected $debug       = false;

    /**
     * Group objectclass (lowercase) to member attribute mapping
     *
     * @var array
     */
    private $group_types = [
        'group'                   => 'member',
        'groupofnames'            => 'member',
        'kolabgroupofnames'       => 'member',
        'groupofuniquenames'      => 'uniqueMember',
        'kolabgroupofuniquenames' => 'uniqueMember',
        'univentiongroup'         => 'uniqueMember',
        'groupofurls'             => null,
    ];

    private $base_dn        = '';
    private $groups_base_dn = '';
    private $group_data;
    private $group_search_cache;
    private $cache;


    /**
    * Object constructor
    *
    * @param array  $p           LDAP connection properties
    * @param bool   $debug       Enables debug mode
    * @param string $mail_domain Current user mail domain name
    */
    function __construct($p, $debug = false, $mail_domain = null)
    {
        $this->prop = $p;

        $fetch_attributes = ['objectClass'];

        // Disable VLV by default
        if (!isset($this->prop['vlv'])) {
            $this->prop['vlv'] = false;
        }

        // check if groups are configured
        if (!empty($p['groups']) && is_array($p['groups'])) {
            $this->groups = true;
            // set member field
            if (!empty($p['groups']['member_attr'])) {
                $this->prop['member_attr'] = strtolower($p['groups']['member_attr']);
            }
            else if (empty($p['member_attr'])) {
                $this->prop['member_attr'] = 'member';
            }
            // set default name attribute to cn
            if (empty($this->prop['groups']['name_attr'])) {
                $this->prop['groups']['name_attr'] = 'cn';
            }
            if (empty($this->prop['groups']['scope'])) {
                $this->prop['groups']['scope'] = 'sub';
            }
            // extend group objectclass => member attribute mapping
            if (!empty($this->prop['groups']['class_member_attr'])) {
                $this->group_types = array_merge($this->group_types, $this->prop['groups']['class_member_attr']);
            }

            // add group name attrib to the list of attributes to be fetched
            $fetch_attributes[] = $this->prop['groups']['name_attr'];
        }
        if (isset($p['group_filters']) && is_array($p['group_filters'])) {
            $this->groups = $this->groups || count($p['group_filters']) > 0;

            foreach ($p['group_filters'] as $k => $group_filter) {
                // set default name attribute to cn
                if (empty($group_filter['name_attr']) && empty($this->prop['groups']['name_attr'])) {
                    $this->prop['group_filters'][$k]['name_attr'] = $group_filter['name_attr'] = 'cn';
                }

                if (!empty($group_filter['name_attr'])) {
                    $fetch_attributes[] = $group_filter['name_attr'];
                }
            }
        }

        // fieldmap property is given
        if (isset($p['fieldmap']) && is_array($p['fieldmap'])) {
            $p['fieldmap'] = array_filter($p['fieldmap']);
            foreach ($p['fieldmap'] as $rf => $lf) {
                $this->fieldmap[$rf] = $this->_attr_name($lf);
            }
        }
        else if (!empty($p)) {
            // read deprecated *_field properties to remain backwards compatible
            foreach ($p as $prop => $value) {
                if (!empty($value) && preg_match('/^(.+)_field$/', $prop, $matches)) {
                    $this->fieldmap[$matches[1]] = $this->_attr_name($value);
                }
            }
        }

        // use fieldmap to advertise supported coltypes to the application
        foreach ($this->fieldmap as $colv => $lfv) {
            list($col, $type) = rcube_utils::explode(':', $colv);
            $params           = explode(':', $lfv);

            $lf    = array_shift($params);
            $limit = 1;

            foreach ($params as $idx => $param) {
                // field format specification
                if (preg_match('/^(date)\[(.+)\]$/i', $param, $m)) {
                    $this->formats[$lf] = ['type' => strtolower($m[1]), 'format' => $m[2]];
                }
                // first argument is a limit
                else if ($idx === 0) {
                    if ($param == '*') $limit = null;
                    else               $limit = max(1, intval($param));
                }
                // second is a composite field separator
                else if ($idx === 1 && $param) {
                    $this->coltypes[$col]['serialized'][$type] = $param;
                }
            }

            if (!isset($this->coltypes[$col]) || !is_array($this->coltypes[$col])) {
                $subtypes = $type ? [$type] : null;
                $this->coltypes[$col] = ['limit' => $limit, 'subtypes' => $subtypes, 'attributes' => [$lf]];
            }
            elseif ($type) {
                $this->coltypes[$col]['subtypes'][] = $type;
                $this->coltypes[$col]['attributes'][] = $lf;
                $this->coltypes[$col]['limit'] += $limit;
            }

            $this->fieldmap[$colv] = $lf;
        }

        // support for composite address
        if (!empty($this->coltypes['street']) && !empty($this->coltypes['locality'])) {
            $this->coltypes['address'] = [
                'childs'     => [],
                'attributes' => [],
                'limit'      => max(1, ($this->coltypes['locality']['limit'] ?? 0) + ($this->coltypes['address']['limit'] ?? 0)),
                'subtypes'   => array_merge(
                    (array) ($this->coltypes['address']['subtypes'] ?? null),
                    (array) ($this->coltypes['locality']['subtypes'] ?? null)
                ),
            ] + (array) ($this->coltypes['address'] ?? []);

            foreach (['street','locality','zipcode','region','country'] as $childcol) {
                if (!empty($this->coltypes[$childcol])) {
                    $this->coltypes['address']['childs'][$childcol] = ['type' => 'text'];
                    $this->coltypes['address']['attributes'] = array_merge(
                        $this->coltypes['address']['attributes'],
                        (array) ($this->coltypes[$childcol]['attributes'] ?? null)
                    );
                    unset($this->coltypes[$childcol]);  // remove address child col from global coltypes list
                }
            }

            // at least one address type must be specified
            if (empty($this->coltypes['address']['subtypes'])) {
                $this->coltypes['address']['subtypes'] = ['home'];
            }
        }
        else if (!empty($this->coltypes['address'])) {
            $this->coltypes['address'] += ['type' => 'textarea', 'childs' => null, 'size' => 40];

            // 'serialized' means the UI has to present a composite address field
            if (!empty($this->coltypes['address']['serialized'])) {
                $childprop = ['type' => 'text'];
                $this->coltypes['address']['type'] = 'composite';
                $this->coltypes['address']['childs'] = [
                    'street'   => $childprop,
                    'locality' => $childprop,
                    'zipcode'  => $childprop,
                    'country'  => $childprop
                ];
            }
        }

        // make sure 'required_fields' and 'autovalues' are an array
        $this->prop['required_fields'] = (array) ($this->prop['required_fields'] ?? []);
        $this->prop['autovalues'] = (array) ($this->prop['autovalues'] ?? []);

        // make sure LDAP_rdn field is required
        if (
            !empty($this->prop['LDAP_rdn'])
            && !in_array($this->prop['LDAP_rdn'], $this->prop['required_fields'])
            && !array_key_exists($this->prop['LDAP_rdn'], $this->prop['autovalues'])
        ) {
            $this->prop['required_fields'][] = $this->prop['LDAP_rdn'];
        }

        foreach ($this->prop['required_fields'] as $key => $val) {
            $this->prop['required_fields'][$key] = $this->_attr_name($val);
        }

        // Build sub_fields filter
        if (!empty($this->prop['sub_fields']) && is_array($this->prop['sub_fields'])) {
            $this->sub_filter = '';
            foreach ($this->prop['sub_fields'] as $class) {
                if (!empty($class)) {
                    $class = is_array($class) ? array_pop($class) : $class;
                    $this->sub_filter .= '(objectClass=' . $class . ')';
                }
            }
            if (count($this->prop['sub_fields']) > 1) {
                $this->sub_filter = '(|' . $this->sub_filter . ')';
            }
        }

        if (!empty($p['sort'])) {
            $this->sort_col = is_array($p['sort']) ? $p['sort'][0] : $p['sort'];
        }

        $this->debug       = $debug;
        $this->mail_domain = $this->prop['mail_domain'] = $mail_domain;

        // initialize cache
        $rcube = rcube::get_instance();
        if ($cache_type = $rcube->config->get('ldap_cache', 'db')) {
            $cache_ttl  = $rcube->config->get('ldap_cache_ttl', '10m');
            $cache_name = 'LDAP.' . (!empty($this->prop['name']) ? asciiwords($this->prop['name']) : 'unnamed');

            $this->cache = $rcube->get_cache($cache_name, $cache_type, $cache_ttl);
        }

        // determine which attributes to fetch
        $this->prop['list_attributes'] = array_unique($fetch_attributes);
        $this->prop['attributes']      = array_merge(array_values($this->fieldmap), $fetch_attributes);

        foreach ($rcube->config->get('contactlist_fields') as $col) {
            $this->prop['list_attributes'] = array_merge($this->prop['list_attributes'], $this->_map_field($col));
        }

        // initialize ldap wrapper object
        $this->ldap = new rcube_ldap_generic($this->prop);
        $this->ldap->config_set(['cache' => $this->cache, 'debug' => $this->debug]);

        $this->_connect();
    }

    /**
     * Establish a connection to the LDAP server
     */
    private function _connect()
    {
        $rcube = rcube::get_instance();

        if ($this->ready) {
            return true;
        }

        if (empty($this->prop['hosts'])) {
            $this->prop['hosts'] = [];
        }

        // try to connect + bind for every host configured
        // with OpenLDAP 2.x ldap_connect() always succeeds but ldap_bind will fail if host isn't reachable
        // see http://www.php.net/manual/en/function.ldap-connect.php
        foreach ((array) $this->prop['hosts'] as $host) {
            // Parse host specification into the format expected by Net_LDAP3 (ldap_connect)
            list($host, $scheme, $port) = rcube_utils::parse_host_uri($host, 389, 636);

            $host = sprintf('%s://%s:%d', $scheme === 'ldaps' ? 'ldaps' : 'ldap', $host, $port);

            $this->ldap->config_set('use_tls', $scheme === 'tls');

            // skip host if connection failed
            if (!$this->ldap->connect($host)) {
                continue;
            }

            // See if the directory is writeable.
            if (!empty($this->prop['writable'])) {
                $this->readonly = false;
            }

            // trigger post-connect hook
            $rcube = rcube::get_instance();
            $conf  = $rcube->plugins->exec_hook('ldap_connected', $this->prop + ['host' => $host]);

            $bind_pass   = $conf['bind_pass'] ?? null;
            $bind_user   = $conf['bind_user'] ?? '';
            $bind_dn     = $conf['bind_dn'] ?? '';
            $auth_method = $conf['auth_method'] ?? '';

            $this->base_dn = $this->groups_base_dn = $conf['base_dn'] ?? null;
            if (!empty($conf['groups']['base_dn'])) {
                $this->groups_base_dn = $conf['groups']['base_dn'];
            }

            // User specific access, generate the proper values to use.
            if (!empty($conf['user_specific'])) {
                // No password set, use the session password
                if (empty($bind_pass)) {
                    $bind_pass = $rcube->get_user_password();
                }

                // Get the pieces needed for variable replacement.
                if ($fu = ($rcube->get_user_email() ?: ($conf['username'] ?? null))) {
                    list($u, $d) = explode('@', $fu);
                }
                else {
                    $u = '';
                    $d = $this->mail_domain;
                }

                $dc = 'dc='.strtr($d, ['.' => ',dc=']); // hierarchal domain string

                // resolve $dc through LDAP
                if (
                    !empty($conf['domain_filter'])
                    && !empty($conf['search_bind_dn'])
                    && method_exists($this->ldap, 'domain_root_dn')
                ) {
                    $this->ldap->bind($conf['search_bind_dn'], $conf['search_bind_pw']);
                    $dc = $this->ldap->domain_root_dn($d);
                }

                $replaces = ['%dn' => '', '%dc' => $dc, '%d' => $d, '%fu' => $fu, '%u' => $u];

                // Search for the dn to use to authenticate
                if (!empty($conf['search_base_dn']) && !empty($conf['search_filter'])
                    && (strstr($bind_dn, '%dn') || strstr($this->base_dn, '%dn') || strstr($this->groups_base_dn, '%dn'))
                ) {
                    $search_attribs = ['uid'];
                    $search_bind_attrib = null;

                    if (!empty($conf['search_bind_attrib'])) {
                        $search_bind_attrib = (array) $conf['search_bind_attrib'];
                        foreach ($search_bind_attrib as $r => $attr) {
                            $search_attribs[] = $attr;
                            $replaces[$r] = '';
                        }
                    }

                    $search_bind_dn = strtr($conf['search_bind_dn'], $replaces);
                    $search_base_dn = strtr($conf['search_base_dn'], $replaces);
                    $search_filter  = strtr($conf['search_filter'], $replaces);

                    $cache_key = rcube_cache::key_name('DN', [$host, $search_bind_dn, $search_base_dn, $search_filter, $conf['search_bind_pw']]);

                    if ($this->cache && ($dn = $this->cache->get($cache_key))) {
                        $replaces['%dn'] = $dn;
                    }
                    else {
                        $ldap = $this->ldap;
                        if (!empty($search_bind_dn) && !empty($conf['search_bind_pw'])) {
                            // To protect from "Critical extension is unavailable" error
                            // we need to use a separate LDAP connection
                            if (!empty($conf['vlv'])) {
                                $ldap = new rcube_ldap_generic($conf);
                                $ldap->config_set(['cache' => $this->cache, 'debug' => $this->debug]);
                                if (!$ldap->connect($host)) {
                                    continue;
                                }
                            }

                            if (!$ldap->bind($search_bind_dn, $conf['search_bind_pw'])) {
                                continue;  // bind failed, try next host
                            }
                        }

                        $res = $ldap->search($search_base_dn, $search_filter, 'sub', $search_attribs);
                        if ($res) {
                            $res->rewind();
                            $replaces['%dn'] = key($res->entries(true));

                            // add more replacements from 'search_bind_attrib' config
                            if (!empty($search_bind_attrib)) {
                                $res = $res->current();
                                foreach ($search_bind_attrib as $r => $attr) {
                                    $replaces[$r] = $res[$attr][0];
                                }
                            }
                        }

                        if ($ldap != $this->ldap) {
                            $ldap->close();
                        }
                    }

                    // DN not found
                    if (empty($replaces['%dn'])) {
                        if (!empty($conf['search_dn_default'])) {
                            $replaces['%dn'] = $conf['search_dn_default'];
                        }
                        else {
                            rcube::raise_error([
                                    'code' => 100, 'type' => 'ldap',
                                    'file' => __FILE__, 'line' => __LINE__,
                                    'message' => "DN not found using LDAP search."
                                ], true
                            );
                            continue;
                        }
                    }

                    if ($this->cache && !empty($replaces['%dn'])) {
                        $this->cache->set($cache_key, $replaces['%dn']);
                    }
                }

                // Replace the bind_dn and base_dn variables.
                $bind_dn              = strtr($bind_dn, $replaces);
                $this->base_dn        = strtr($this->base_dn, $replaces);
                $this->groups_base_dn = strtr($this->groups_base_dn, $replaces);

                // replace placeholders in filter settings
                if (!empty($conf['filter'])) {
                    $this->prop['filter'] = strtr($conf['filter'], $replaces);
                }

                foreach (['base_dn', 'filter', 'member_filter'] as $k) {
                    if (!empty($conf['groups'][$k])) {
                        $this->prop['groups'][$k] = strtr($conf['groups'][$k], $replaces);
                    }
                }

                if (!empty($conf['group_filters']) && is_array($conf['group_filters'])) {
                    foreach ($conf['group_filters'] as $i => $gf) {
                        if (!empty($gf['base_dn'])) {
                            $this->prop['group_filters'][$i]['base_dn'] = strtr($gf['base_dn'], $replaces);
                        }
                        if (!empty($gf['filter'])) {
                            $this->prop['group_filters'][$i]['filter'] = strtr($gf['filter'], $replaces);
                        }
                    }
                }

                if (empty($bind_user)) {
                    $bind_user = $u;
                }
            }

            if (empty($bind_pass) && strcasecmp($auth_method, 'GSSAPI') != 0) {
                $this->ready = true;
            }
            else {
                if (!empty($conf['auth_cid'])) {
                    $this->ready = $this->ldap->sasl_bind($conf['auth_cid'], $bind_pass, $bind_dn);
                }
                else if (!empty($bind_dn)) {
                    $this->ready = $this->ldap->bind($bind_dn, $bind_pass);
                }
                else {
                    $this->ready = $this->ldap->sasl_bind($bind_user, $bind_pass);
                }
            }

            // connection established, we're done here
            if ($this->ready) {
                break;
            }

        }  // end foreach hosts

        if (empty($this->ldap->conn)) {
            rcube::raise_error([
                    'code' => 100, 'type' => 'ldap',
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => "Could not connect to any LDAP server"
                ], true
            );

            return false;
        }

        return $this->ready;
    }

    /**
     * Close connection to LDAP server
     */
    function close()
    {
        if ($this->ldap) {
            $this->ldap->close();
        }
    }

    /**
     * Returns address book name
     *
     * @return string Address book name
     */
    function get_name()
    {
        return $this->prop['name'];
    }

    /**
     * Set internal list page
     *
     * @param number $page Page number to list
     */
    function set_page($page)
    {
        $this->list_page = (int) $page;
        $this->ldap->set_vlv_page($this->list_page, $this->page_size);
    }

    /**
     * Set internal page size
     *
     * @param number $size Number of records to display on one page
     */
    function set_pagesize($size)
    {
        $this->page_size = (int) $size;
        $this->ldap->set_vlv_page($this->list_page, $this->page_size);
    }

    /**
     * Set internal sort settings
     *
     * @param string $sort_col Sort column
     * @param string $sort_order Sort order
     */
    function set_sort_order($sort_col, $sort_order = null)
    {
        if (!empty($this->coltypes[$sort_col]['attributes'])) {
            $this->sort_col = $this->coltypes[$sort_col]['attributes'][0];
        }
    }

    /**
     * Save a search string for future listings
     *
     * @param string $filter Filter string
     */
    function set_search_set($filter)
    {
        $this->filter = $filter;
    }

    /**
     * Getter for saved search properties
     *
     * @return mixed Search properties used by this class
     */
    function get_search_set()
    {
        return $this->filter;
    }

    /**
     * Reset all saved results and search parameters
     */
    function reset()
    {
        $this->result      = null;
        $this->ldap_result = null;
        $this->filter      = '';
    }

    /**
     * List the current set of contact records
     *
     * @param array $cols   List of cols to show
     * @param int   $subset Only return this number of records
     * @param bool   $nocount True to skip the count query (Not used)
     *
     * @return array Indexed list of contact records, each a hash array
     */
    function list_records($cols = null, $subset = 0, $nocount = false)
    {
        if (!empty($this->prop['searchonly']) && empty($this->filter) && !$this->group_id) {
            $this->result = new rcube_result_set(0);
            $this->result->searchonly = true;

            return $this->result;
        }

        // fetch group members recursively
        if ($this->group_id && !empty($this->group_data['dn'])) {
            $entries = $this->list_group_members($this->group_data['dn']);

            // make list of entries unique and sort it
            $seen = [];
            foreach ($entries as $i => $rec) {
                if (!empty($seen[$rec['dn']])) {
                    unset($entries[$i]);
                }
                $seen[$rec['dn']] = true;
            }
            usort($entries, [$this, '_entry_sort_cmp']);

            $entries['count'] = count($entries);
            $this->result = new rcube_result_set($entries['count'], ($this->list_page-1) * $this->page_size);
        }
        else {
            // exec LDAP search if no result resource is stored
            if ($this->ready && $this->ldap_result === null) {
                $this->ldap_result = $this->extended_search();
            }

            // count contacts for this user
            $this->result = $this->count();

            $entries = $this->ldap_result;
        }  // end else

        // start and end of the page
        $start_row = $this->ldap->vlv_active ? 0 : $this->result->first;
        $start_row = $subset < 0 ? $start_row + $this->page_size + $subset : $start_row;
        $last_row = $this->result->first + $this->page_size;
        $last_row = $subset != 0 ? $start_row + abs($subset) : $last_row;

        // filter entries for this page
        for ($i = $start_row; $i < min($entries['count'] ?? 0, $last_row); $i++) {
            if (!empty($entries[$i])) {
                $this->result->add($this->_ldap2result($entries[$i]));
            }
        }

        return $this->result;
    }

    /**
     * Get all members of the given group
     *
     * @param string $dn      Group DN
     * @param bool   $count   Count only
     * @param array  $entries Group entries (if called recursively)
     *
     * @return array  Accumulated group members
     */
    function list_group_members($dn, $count = false, $entries = null)
    {
        $group_members = [];

        // fetch group object
        if (empty($entries)) {
            $attribs = array_merge(['dn', 'objectClass', 'memberURL'], array_values($this->group_types));
            $entries = $this->ldap->read_entries($dn, '(objectClass=*)', $attribs);
            if ($entries === false) {
                return $group_members;
            }
        }

        for ($i=0; $i < $entries['count']; $i++) {
            $entry = $entries[$i];
            $attrs = [];

            foreach ((array) $entry['objectclass'] as $objectclass) {
                if (($member_attr = $this->get_group_member_attr([$objectclass], ''))
                    && ($member_attr = strtolower($member_attr)) && !in_array($member_attr, $attrs)
                ) {
                    $members       = $this->_list_group_members($dn, $entry, $member_attr, $count);
                    $group_members = array_merge($group_members, $members);
                    $attrs[]       = $member_attr;
                }
                else if (!empty($entry['memberurl'])) {
                    $members       = $this->_list_group_memberurl($dn, $entry, $count);
                    $group_members = array_merge($group_members, $members);
                }

                if (!empty($this->prop['sizelimit']) && count($group_members) > $this->prop['sizelimit']) {
                    break 2;
                }
            }
        }

        return array_filter($group_members);
    }

    /**
     * Fetch members of the given group entry from server
     *
     * @param string $dn    Group DN
     * @param array  $entry Group entry
     * @param string $attr  Member attribute to use
     * @param bool   $count Count only
     *
     * @return array Accumulated group members
     */
    private function _list_group_members($dn, $entry, $attr, $count)
    {
        // Use the member attributes to return an array of member ldap objects
        // NOTE that the member attribute is supposed to contain a DN
        $group_members = [];
        if (empty($entry[$attr])) {
            return $group_members;
        }

        // read these attributes for all members
        $attrib = $count ? ['dn', 'objectClass'] : $this->prop['list_attributes'];
        $attrib = array_merge($attrib, array_values($this->group_types));
        $attrib[] = 'memberURL';

        $filter = !empty($this->prop['groups']['member_filter']) ? $this->prop['groups']['member_filter'] : '(objectclass=*)';

        for ($i=0; $i < $entry[$attr]['count']; $i++) {
            if (empty($entry[$attr][$i])) {
                continue;
            }

            $members = $this->ldap->read_entries($entry[$attr][$i], $filter, $attrib);
            if ($members == false) {
                $members = [];
            }

            // for nested groups, call recursively
            $nested_group_members = $this->list_group_members($entry[$attr][$i], $count, $members);

            unset($members['count']);
            $group_members = array_merge($group_members, array_filter($members), $nested_group_members);
        }

        return $group_members;
    }

    /**
     * List members of group class groupOfUrls
     *
     * @param string $dn    Group DN
     * @param array  $entry Group entry
     * @param bool   $count True if only used for counting
     *
     * @return array Accumulated group members
     */
    private function _list_group_memberurl($dn, $entry, $count)
    {
        $group_members = [];

        for ($i = 0; $i < $entry['memberurl']['count']; $i++) {
            // extract components from url
            if (!preg_match('!ldap://[^/]*/([^\?]+)\?\?(\w+)\?(.*)$!', $entry['memberurl'][$i], $m)) {
                continue;
            }

            // add search filter if any
            $filter = $this->filter ? '(&(' . $m[3] . ')(' . $this->filter . '))' : $m[3];
            $attrs  = $count ? ['dn', 'objectClass'] : $this->prop['list_attributes'];

            if ($result = $this->ldap->search($m[1], $filter, $m[2], $attrs, $this->group_data)) {
                $entries = $result->entries();
                for ($j = 0; $j < $entries['count']; $j++) {
                    if ($this->is_group_entry($entries[$j]) && ($nested_group_members = $this->list_group_members($entries[$j]['dn'], $count))) {
                        $group_members = array_merge($group_members, $nested_group_members);
                    }
                    else {
                        $group_members[] = $entries[$j];
                    }
                }
            }
        }

        return $group_members;
    }

    /**
     * Callback for sorting entries
     */
    function _entry_sort_cmp($a, $b)
    {
        return strcmp($a[$this->sort_col][0] ?? '', $b[$this->sort_col][0] ?? '');
    }

    /**
     * Search contacts
     *
     * @param mixed   $fields   The field name of array of field names to search in
     * @param mixed   $value    Search value (or array of values when $fields is array)
     * @param int     $mode     Matching mode. Sum of rcube_addressbook::SEARCH_*
     * @param bool    $select   True if results are requested, False if count only
     * @param bool    $nocount  (Not used)
     * @param array   $required List of fields that cannot be empty
     *
     * @return rcube_result_set List of contact records
     */
    function search($fields, $value, $mode = 0, $select = true, $nocount = false, $required = [])
    {
        $mode = intval($mode);

        // special treatment for ID-based search
        if ($fields == 'ID' || $fields == $this->primary_key) {
            $ids = !is_array($value) ? explode(',', $value) : $value;
            $result = new rcube_result_set();
            foreach ($ids as $id) {
                if ($rec = $this->get_record($id, true)) {
                    $result->add($rec);
                    $result->count++;
                }
            }
            return $result;
        }

        $rcube = rcube::get_instance();

        $list_fields  = $rcube->config->get('contactlist_fields');
        $fuzzy_search = intval(!empty($this->prop['fuzzy_search']) && !($mode & rcube_addressbook::SEARCH_STRICT));

        // use VLV pseudo-search for autocompletion
        if (!empty($this->prop['vlv_search']) && $this->ready
            && implode(',', (array)$fields) == implode(',', $list_fields)
        ) {
            $this->result = new rcube_result_set(0);

            $this->ldap->config_set('fuzzy_search', $fuzzy_search);

            $ldap_data = $this->ldap->search($this->base_dn, $this->prop['filter'], $this->prop['scope'], $this->prop['attributes'],
                ['search' => $value /*, 'sort' => $this->prop['sort'] */]);

            if ($ldap_data === false) {
                return $this->result;
            }

            // get all entries of this page and post-filter those that really match the query
            $search = mb_strtolower($value);
            foreach ($ldap_data as $entry) {
                $rec = $this->_ldap2result($entry);
                foreach ($fields as $f) {
                    if (!empty($rec[$f])) {
                        foreach ((array)$rec[$f] as $val) {
                            if ($this->compare_search_value($f, $val, $search, $mode)) {
                                $this->result->add($rec);
                                $this->result->count++;
                                break 2;
                            }
                        }
                    }
                }
            }

            return $this->result;
        }

        // advanced per-attribute search
        if (is_array($value)) {
            // use AND operator for advanced searches
            $filter = '(&';

            // set wildcards
            $wp = $ws = '';
            if ($fuzzy_search) {
                $ws = '*';
                if (!($mode & rcube_addressbook::SEARCH_PREFIX)) {
                    $wp = '*';
                }
            }

            foreach ((array) $fields as $idx => $field) {
                $val = $value[$idx];
                if (!strlen($val)) {
                    continue;
                }
                if ($attrs = $this->_map_field($field)) {
                    if (count($attrs) > 1) {
                        $filter .= '(|';
                    }
                    foreach ($attrs as $f) {
                        $filter .= "($f=$wp" . rcube_ldap_generic::quote_string($val) . "$ws)";
                    }
                    if (count($attrs) > 1) {
                        $filter .= ')';
                    }
                }
            }

            $filter .= ')';
        }
        else {
            $attributes = [];

            if ($fields == '*') {
                $fields = (array) ($this->prop['search_fields'] ?? []);

                // If search fields aren't configured use some common fields
                if (empty($fields)) {
                    $fields = ['name', 'surname', 'firstname', 'email'];
                }
            }

            // map address book fields into ldap attributes
            foreach ((array) $fields as $field) {
                if (!empty($this->coltypes[$field]) && !empty($this->coltypes[$field]['attributes'])) {
                    $attributes = array_merge($attributes, (array) $this->coltypes[$field]['attributes']);
                }
            }

            // compose a full-text-like search filter
            $filter = rcube_ldap_generic::fulltext_search_filter($value, $attributes, $mode & ~rcube_addressbook::SEARCH_GROUPS);
        }

        // add required (non empty) fields filter
        $req_filter = '';
        foreach ((array) $required as $field) {
            if (in_array($field, (array) $fields)) {
                // required field is already in search filter
                continue;
            }
            if ($attrs = $this->_map_field($field)) {
                if (count($attrs) > 1) {
                    $req_filter .= '(|';
                }
                foreach ($attrs as $f) {
                    $req_filter .= "($f=*)";
                }
                if (count($attrs) > 1) {
                    $req_filter .= ')';
                }
            }
        }

        if (!empty($req_filter)) {
            $filter = '(&' . $req_filter . $filter . ')';
        }

        // avoid double-wildcard if $value is empty
        $filter = preg_replace('/\*+/', '*', $filter);

        if ($mode & rcube_addressbook::SEARCH_GROUPS) {
            $filter = 'e:' . $filter;
        }

        // Reset the previous search result
        $this->reset();

        // set filter string and execute search
        $this->set_search_set($filter);

        if ($select) {
            $this->list_records();
        }
        else {
            $this->result = $this->count();
        }

        return $this->result;
    }

    /**
     * Count number of available contacts in database
     *
     * @return object rcube_result_set Resultset with values for 'count' and 'first'
     */
    function count()
    {
        $count = 0;

        if (!empty($this->ldap_result)) {
            $count = $this->ldap_result['count'];
        }
        else if ($this->group_id && !empty($this->group_data['dn'])) {
            $count = count($this->list_group_members($this->group_data['dn'], true));
        }
        // We have a connection but no result set, attempt to get one.
        else if ($this->ready) {
            $count = $this->extended_search(true);
        }

        return new rcube_result_set($count, ($this->list_page-1) * $this->page_size);
    }

    /**
     * Wrapper on LDAP searches with group_filters support, which
     * allows searching for contacts AND groups.
     *
     * @param bool $count Return count instead of the records
     *
     * @return int|array Count of records or the result array (with 'count' item)
     */
    protected function extended_search($count = false)
    {
        $prop    = $this->group_id ? $this->group_data : $this->prop;
        $base_dn = $this->group_id ? $prop['base_dn'] : $this->base_dn;
        $attrs   = $count ? ['dn'] : $this->prop['attributes'];

        // Use global search filter
        if ($filter = $this->filter) {
            if ($filter[0] == 'e' && $filter[1] == ':') {
                $filter = substr($filter, 2);
                $is_extended_search = !$this->group_id;
            }

            $prop['filter'] = $filter;

            // add general filter to query
            if (!empty($this->prop['filter'])) {
                $prop['filter'] = '(&(' . preg_replace('/^\(|\)$/', '', $this->prop['filter']) . ')' . $filter . ')';
            }
        }

        $search_scope  = $prop['scope'] ?? 'sub';
        $search_filter = $prop['filter'] ?? '(objectclass=*)';

        $result = $this->ldap->search($base_dn, $search_filter, $search_scope, $attrs, $prop, $count);
        $result_count = 0;

        // we have a search result resource, get all entries
        if (!$count && $result) {
            $result_count = $result->count();
            $result       = $result->entries();
            unset($result['count']);
        }

        // search for groups
        if (!empty($is_extended_search)
            && !empty($this->prop['group_filters'])
            && is_array($this->prop['group_filters'])
            && !empty($this->prop['groups']['filter'])
        ) {
            $name_attr  = $this->prop['groups']['name_attr'];
            $email_attr = $this->prop['groups']['email_attr'] ?: 'mail';
            $attrs      = array_unique(['dn', 'objectClass', $name_attr, $email_attr]);

            $search_scope  = $this->prop['groups']['scope'] ?? 'sub';
            $search_filter = '(&(' . preg_replace('/^\(|\)$/', '', $this->prop['groups']['filter']) . ')' . $filter . ')';

            // for groups we may use cn instead of displayname...
            if ($this->prop['fieldmap']['name'] != $name_attr) {
                $search_filter = str_replace(strtolower($this->prop['fieldmap']['name']) . '=', $name_attr . '=', $search_filter);
            }

            $res = $this->ldap->search($this->groups_base_dn, $search_filter, $search_scope, $attrs, $prop, $count);

            if ($count && $res) {
                $result += $res;
            }
            else if (!$count && $res && ($res_count = $res->count())) {
                $res = $res->entries();
                unset($res['count']);
                $result = array_merge($result, $res);
                $result_count += $res_count;
            }
        }

        if (!$count && $result) {
            // sorting
            if ($this->sort_col && (empty($prop['scope']) || $prop['scope'] !== 'base') && !$this->ldap->vlv_active) {
                usort($result, [$this, '_entry_sort_cmp']);
            }

            $result['count'] = $result_count;
        }

        return $result;
    }

    /**
     * Return the last result set
     *
     * @return object rcube_result_set Current resultset or NULL if nothing selected yet
     */
    function get_result()
    {
        return $this->result;
    }

    /**
     * Get a specific contact record
     *
     * @param mixed $dn    Record identifier
     * @param bool  $assoc Return as associative array
     *
     * @return mixed Hash array or rcube_result_set with all record fields
     */
    function get_record($dn, $assoc = false)
    {
        $res = $this->result = null;

        if ($this->ready && $dn) {
            $dn = self::dn_decode($dn);

            if ($rec = $this->ldap->get_entry($dn, $this->prop['attributes'])) {
                $rec = array_change_key_case($rec, CASE_LOWER);
            }

            // Use ldap_list to get subentries like country (c) attribute (#1488123)
            if (!empty($rec) && $this->sub_filter) {
                if ($entries = $this->ldap->list_entries($dn, $this->sub_filter, array_keys($this->prop['sub_fields']))) {
                    foreach ($entries as $entry) {
                        $lrec = array_change_key_case($entry, CASE_LOWER);
                        $rec  = array_merge($lrec, $rec);
                    }
                }
            }

            if (!empty($rec)) {
                // Add in the dn for the entry.
                $rec['dn'] = $dn;
                $res = $this->_ldap2result($rec);
                $this->result = new rcube_result_set(1);
                $this->result->add($res);
            }
        }

        return $assoc ? $res : $this->result;
    }

    /**
     * Returns the last error occurred (e.g. when updating/inserting failed)
     *
     * @return array Hash array with the following fields: type, message
     */
    function get_error()
    {
        $err = $this->error;

        // check ldap connection for errors
        if (!$err && $this->ldap->get_error()) {
            $err = [self::ERROR_SEARCH, $this->ldap->get_error()];
        }

        return $err;
    }

    /**
     * Check the given data before saving.
     * If input not valid, the message to display can be fetched using get_error()
     *
     * @param array &$save_data Associative array with data to save
     * @param bool  $autofix    Try to fix/complete record automatically
     *
     * @return bool True if input is valid, False if not.
     */
    public function validate(&$save_data, $autofix = false)
    {
        // validate e-mail addresses
        if (!parent::validate($save_data, $autofix)) {
            return false;
        }

        // check for name input
        if (empty($save_data['name'])) {
            $this->set_error(self::ERROR_VALIDATE, 'nonamewarning');
            return false;
        }

        // Verify that the required fields are set.
        $missing   = [];
        $ldap_data = $this->_map_data($save_data);

        foreach ($this->prop['required_fields'] as $fld) {
            if (!isset($ldap_data[$fld]) || $ldap_data[$fld] === '') {
                $missing[$fld] = 1;
            }
        }

        if (!empty($missing)) {
            // try to complete record automatically
            if ($autofix) {
                $sn_field   = $this->fieldmap['surname'];
                $fn_field   = $this->fieldmap['firstname'];
                $mail_field = $this->fieldmap['email'];

                // try to extract surname and firstname from displayname
                $name_parts = preg_split('/[\s,.]+/', $save_data['name']);

                if ($sn_field && $missing[$sn_field]) {
                    $save_data['surname'] = array_pop($name_parts);
                    unset($missing[$sn_field]);
                }

                if ($fn_field && $missing[$fn_field]) {
                    $save_data['firstname'] = array_shift($name_parts);
                    unset($missing[$fn_field]);
                }

                // try to fix missing e-mail, very often on import
                // from vCard we have email:other only defined
                if ($mail_field && $missing[$mail_field]) {
                    $emails = $this->get_col_values('email', $save_data, true);
                    if (!empty($emails) && ($email = array_first($emails))) {
                        $save_data['email'] = $email;
                        unset($missing[$mail_field]);
                    }
                }
            }

            // TODO: generate message saying which fields are missing
            if (!empty($missing)) {
                $this->set_error(self::ERROR_VALIDATE, 'formincomplete');
                return false;
            }
        }

        return true;
    }

    /**
     * Create a new contact record
     *
     * @param array $save_cols Associative array with save data
     *                         Keys:   Field name with optional section in the form FIELD:SECTION
     *                         Values: Field value. Can be either a string or an array of strings for multiple values
     * @param bool  $check True to check for duplicates first
     *
     * @return mixed The created record ID on success, False on error
     */
    function insert($save_cols, $check = false)
    {
        // Map out the column names to their LDAP ones to build the new entry.
        $newentry = $this->_map_data($save_cols);
        $newentry['objectClass'] = $this->prop['LDAP_Object_Classes'];

        // add automatically generated attributes
        $this->add_autovalues($newentry);

        // Verify that the required fields are set.
        $missing = null;
        foreach ($this->prop['required_fields'] as $fld) {
            if (!isset($newentry[$fld])) {
                $missing[] = $fld;
            }
        }

        // abort process if required fields are missing
        // TODO: generate message saying which fields are missing
        if ($missing) {
            $this->set_error(self::ERROR_VALIDATE, 'formincomplete');
            return false;
        }

        // Build the new entries DN.
        $dn = $this->prop['LDAP_rdn'].'='.rcube_ldap_generic::quote_string($newentry[$this->prop['LDAP_rdn']], true).','.$this->base_dn;

        // Remove attributes that need to be added separately (child objects)
        $xfields = [];
        if (!empty($this->prop['sub_fields']) && is_array($this->prop['sub_fields'])) {
            foreach (array_keys($this->prop['sub_fields']) as $xf) {
                if (!empty($newentry[$xf])) {
                    $xfields[$xf] = $newentry[$xf];
                    unset($newentry[$xf]);
                }
            }
        }

        if (!$this->ldap->add_entry($dn, $newentry)) {
            $this->set_error(self::ERROR_SAVING, 'errorsaving');
            return false;
        }

        foreach ($xfields as $xidx => $xf) {
            $xdn = $xidx.'='.rcube_ldap_generic::quote_string($xf).','.$dn;
            $xf = [
                $xidx => $xf,
                'objectClass' => (array) $this->prop['sub_fields'][$xidx],
            ];

            $this->ldap->add_entry($xdn, $xf);
        }

        $dn = self::dn_encode($dn);

        // add new contact to the selected group
        if ($this->group_id) {
            $this->add_to_group($this->group_id, $dn);
        }

        return $dn;
    }

    /**
     * Update a specific contact record
     *
     * @param mixed $id        Record identifier
     * @param array $save_cols Hash array with save data
     *
     * @return bool True on success, False on error
     */
    function update($id, $save_cols)
    {
        $record      = $this->get_record($id, true);
        $newdata     = [];
        $replacedata = [];
        $deletedata  = [];
        $subdata     = [];
        $subdeldata  = [];
        $subnewdata  = [];
        $ldap_data   = $this->_map_data($save_cols);
        $old_data    = $record['_raw_attrib'];

        // special handling of photo col
        if ($photo_fld = $this->fieldmap['photo']) {
            // undefined means keep old photo
            if (!array_key_exists('photo', $save_cols)) {
                $ldap_data[$photo_fld] = $record['photo'];
            }
        }

        foreach ($this->fieldmap as $fld) {
            if ($fld) {
                $val = $ldap_data[$fld];
                $old = $old_data[$fld];
                // remove empty array values
                if (is_array($val)) {
                    $val = array_filter($val);
                }
                // $this->_map_data() result and _raw_attrib use different format
                // make sure comparing array with one element with a string works as expected
                if (is_array($old) && count($old) == 1 && !is_array($val)) {
                    $old = array_pop($old);
                }
                if (is_array($val) && count($val) == 1 && !is_array($old)) {
                    $val = array_pop($val);
                }
                // Subentries must be handled separately
                if (!empty($this->prop['sub_fields']) && isset($this->prop['sub_fields'][$fld])) {
                    if ($old != $val) {
                        if ($old !== null) {
                            $subdeldata[$fld] = $old;
                        }
                        if ($val) {
                            $subnewdata[$fld] = $val;
                        }
                    }
                    else if ($old !== null) {
                        $subdata[$fld] = $old;
                    }
                    continue;
                }

                // The field does exist compare it to the ldap record.
                if ($old != $val) {
                    // Changed, but find out how.
                    if ($old === null) {
                        // Field was not set prior, need to add it.
                        $newdata[$fld] = $val;
                    }
                    else if ($val == '') {
                        // Field supplied is empty, verify that it is not required.
                        if (!in_array($fld, $this->prop['required_fields'])) {
                            // ...It is not, safe to clear.
                            // #1488420: Workaround "ldap_mod_del(): Modify: Inappropriate matching in..."
                            // jpegPhoto attribute require an array here. It looks to me that it works for other attribs too
                            $deletedata[$fld] = [];
                            //$deletedata[$fld] = $old_data[$fld];
                        }
                    }
                    else {
                        // The data was modified, save it out.
                        $replacedata[$fld] = $val;
                    }
                }
            }
        }

        // console($old_data, $ldap_data, '----', $newdata, $replacedata, $deletedata, '----', $subdata, $subnewdata, $subdeldata);

        $dn = self::dn_decode($id);

        // Update the entry as required.
        if (!empty($deletedata)) {
            // Delete the fields.
            if (!$this->ldap->mod_del($dn, $deletedata)) {
                $this->set_error(self::ERROR_SAVING, 'errorsaving');
                return false;
            }
        }

        if (!empty($replacedata)) {
            // Handle RDN change
            if (!empty($replacedata[$this->prop['LDAP_rdn']])) {
                $newdn = $this->prop['LDAP_rdn'] . '='
                    . rcube_ldap_generic::quote_string($replacedata[$this->prop['LDAP_rdn']], true)
                    . ',' . $this->base_dn;

                if ($dn != $newdn) {
                    $newrdn = $this->prop['LDAP_rdn'] . '='
                        . rcube_ldap_generic::quote_string($replacedata[$this->prop['LDAP_rdn']], true);
                    unset($replacedata[$this->prop['LDAP_rdn']]);
                }
            }
            // Replace the fields.
            if (!empty($replacedata)) {
                if (!$this->ldap->mod_replace($dn, $replacedata)) {
                    $this->set_error(self::ERROR_SAVING, 'errorsaving');
                    return false;
                }
            }
        }

        // RDN change, we need to remove all sub-entries
        if (!empty($newrdn)) {
            $subdeldata = array_merge($subdeldata, $subdata);
            $subnewdata = array_merge($subnewdata, $subdata);
        }

        // remove sub-entries
        if (!empty($subdeldata)) {
            foreach ($subdeldata as $fld => $val) {
                $subdn = $fld.'='.rcube_ldap_generic::quote_string($val).','.$dn;
                if (!$this->ldap->delete_entry($subdn)) {
                    return false;
                }
            }
        }

        if (!empty($newdata)) {
            // Add the fields.
            if (!$this->ldap->mod_add($dn, $newdata)) {
                $this->set_error(self::ERROR_SAVING, 'errorsaving');
                return false;
            }
        }

        // Handle RDN change
        if (!empty($newrdn) && !empty($newdn)) {
            if (!$this->ldap->rename($dn, $newrdn, null, true)) {
                $this->set_error(self::ERROR_SAVING, 'errorsaving');
                return false;
            }

            $dn    = self::dn_encode($dn);
            $newdn = self::dn_encode($newdn);

            // change the group membership of the contact
            if ($this->groups) {
                $group_ids = $this->get_record_groups($dn);
                foreach (array_keys($group_ids) as $group_id) {
                    $this->remove_from_group($group_id, $dn);
                    $this->add_to_group($group_id, $newdn);
                }
            }

            $dn = self::dn_decode($newdn);
        }

        // add sub-entries
        if (!empty($subnewdata)) {
            foreach ($subnewdata as $fld => $val) {
                $subdn = $fld.'='.rcube_ldap_generic::quote_string($val).','.$dn;
                $xf = [
                    $fld => $val,
                    'objectClass' => (array) $this->prop['sub_fields'][$fld],
                ];
                $this->ldap->add_entry($subdn, $xf);
            }
        }

        return $newdn ?? true;
    }

    /**
     * Mark one or more contact records as deleted
     *
     * @param array $ids   Record identifiers
     * @param bool  $force Remove record(s) irreversible (unsupported)
     *
     * @return int|bool Number of deleted records on success, False on error
     */
    function delete($ids, $force = true)
    {
        if (!is_array($ids)) {
            // Not an array, break apart the encoded DNs.
            $ids = explode(',', $ids);
        }

        foreach ($ids as $id) {
            $dn = self::dn_decode($id);

            // Need to delete all sub-entries first
            if ($this->sub_filter) {
                if ($entries = $this->ldap->list_entries($dn, $this->sub_filter)) {
                    foreach ($entries as $entry) {
                        if (!$this->ldap->delete_entry($entry['dn'])) {
                            $this->set_error(self::ERROR_SAVING, 'errorsaving');
                            return false;
                        }
                    }
                }
            }

            // Delete the record.
            if (!$this->ldap->delete_entry($dn)) {
                $this->set_error(self::ERROR_SAVING, 'errorsaving');
                return false;
            }

            // remove contact from all groups where he was a member
            if ($this->groups) {
                $dn        = self::dn_encode($dn);
                $group_ids = $this->get_record_groups($dn);

                foreach (array_keys($group_ids) as $group_id) {
                    $this->remove_from_group($group_id, $dn);
                }
            }
        }

        return count($ids);
    }

    /**
     * Remove all contact records
     *
     * @param bool $with_groups Delete also groups if enabled
     */
    function delete_all($with_groups = false)
    {
        // searching for contact entries
        $dn_list = $this->ldap->list_entries($this->base_dn, $this->prop['filter'] ?: '(objectclass=*)');

        if (!empty($dn_list)) {
            foreach ($dn_list as $idx => $entry) {
                $dn_list[$idx] = self::dn_encode($entry['dn']);
            }
            $this->delete($dn_list);
        }

        if ($with_groups && $this->groups && ($groups = $this->_fetch_groups()) && count($groups)) {
            foreach ($groups as $group) {
                $this->ldap->delete_entry($group['dn']);
            }

            if ($this->cache) {
                $this->cache->remove('groups');
            }
        }
    }

    /**
     * Generate missing attributes as configured
     *
     * @param array &$attrs LDAP record attributes
     */
    protected function add_autovalues(&$attrs)
    {
        if (empty($this->prop['autovalues'])) {
            return;
        }

        $attrvals = [];
        foreach ($attrs as $k => $v) {
            $attrvals['{'.$k.'}'] = is_array($v) ? $v[0] : $v;
        }

        foreach ($this->prop['autovalues'] as $lf => $templ) {
            if (empty($attrs[$lf])) {
                if (strpos($templ, '(') !== false) {
                    // replace {attr} placeholders with (escaped!) attribute values to be safely eval'd
                    $code = preg_replace('/\{\w+\}/', '', strtr($templ, array_map('addslashes', $attrvals)));
                    $res  = false;

                    try {
                        $res = eval("return ($code);");
                    }
                    catch (ParseError $e) {
                        // ignore
                    }

                    if ($res === false) {
                        rcube::raise_error([
                                'code' => 505, 'file' => __FILE__, 'line' => __LINE__,
                                'message' => "Expression parse error on: ($code)"
                            ], true, false);
                        continue;
                    }

                    $attrs[$lf] = $res;
                }
                else {
                    // replace {attr} placeholders with concrete attribute values
                    $attrs[$lf] = preg_replace('/\{\w+\}/', '', strtr($templ, $attrvals));
                }
            }
        }
    }

    /**
     * Converts LDAP entry into an array
     */
    private function _ldap2result($rec)
    {
        $out      = ['_type' => 'person'];
        $fieldmap = $this->fieldmap;

        if (!empty($rec['dn'])) {
            $out[$this->primary_key] = self::dn_encode($rec['dn']);
        }

        // determine record type
        if ($this->is_group_entry($rec)) {
            $out['_type']    = 'group';
            $out['readonly'] = true;

            if (!empty($this->group_data['name_attr'])) {
                $fieldmap['name'] = $this->group_data['name_attr'];
            }
            else if (!empty($this->prop['groups']['name_attr'])) {
                $fieldmap['name'] = $this->prop['groups']['name_attr'];
            }
        }

        // assign object type from object class mapping
        if (!empty($this->prop['class_type_map'])) {
            foreach (array_map('strtolower', (array)$rec['objectclass']) as $objcls) {
                if (!empty($this->prop['class_type_map'][$objcls])) {
                    $out['_type'] = $this->prop['class_type_map'][$objcls];
                    break;
                }
            }
        }

        foreach ($fieldmap as $rf => $lf) {
            if (!isset($rec[$lf])) {
                continue;
            }

            $entry = $rec[$lf];

            // we might be dealing with normalized and non-normalized data
            if (!is_array($entry) || !isset($entry['count'])) {
                $entry = (array) $entry;
                $entry['count'] = count($entry);
            }

            for ($i=0; $i < $entry['count']; $i++) {
                if (!($value = $entry[$i])) {
                    continue;
                }

                list($col, $subtype) = rcube_utils::explode(':', $rf);
                $out['_raw_attrib'][$lf][$i] = $value;

                if ($col == 'email' && $this->mail_domain && !strpos($value, '@')) {
                    $out[$rf][] = sprintf('%s@%s', $value, $this->mail_domain);
                }
                else if (in_array($col, ['street', 'zipcode', 'locality', 'country', 'region'])) {
                    $out['address' . ($subtype ? ':' : '') . $subtype][$i][$col] = $value;
                }
                else if ($col == 'address' && strpos($value, '$') !== false) {
                    // address data is represented as string separated with $
                    list($out[$rf][$i]['street'], $out[$rf][$i]['locality'], $out[$rf][$i]['zipcode'], $out[$rf][$i]['country']) = explode('$', $value);
                }
                else if ($entry['count'] > 1) {
                    $out[$rf][] = $value;
                }
                else {
                    $out[$rf] = $value;
                }
            }

            // Make sure name fields aren't arrays (#1488108)
            if (!empty($out[$rf]) && is_array($out[$rf]) && in_array($rf, ['name', 'surname', 'firstname', 'middlename', 'nickname'])) {
                $out[$rf] = $out['_raw_attrib'][$lf] = $out[$rf][0];
            }
        }

        return $out;
    }

    /**
     * Return LDAP attribute(s) for the given field
     */
    private function _map_field($field)
    {
        if (isset($this->coltypes[$field]['attributes'])) {
            return (array) $this->coltypes[$field]['attributes'];
        }

        return [];
    }

    /**
     * Convert a record data set into LDAP field attributes
     */
    private function _map_data($save_cols)
    {
        // flatten composite fields first
        foreach ($this->coltypes as $col => $colprop) {
            if (!empty($colprop['childs']) && is_array($colprop['childs'])) {
                foreach ($this->get_col_values($col, $save_cols, false) as $subtype => $childs) {
                    $subtype = $subtype ? ':'.$subtype : '';
                    foreach ($childs as $i => $child_values) {
                        foreach ((array)$child_values as $childcol => $value) {
                            $save_cols[$childcol.$subtype][$i] = $value;
                        }
                    }
                }
            }

            // if addresses are to be saved as serialized string, do so
            if (!empty($colprop['serialized']) && is_array($colprop['serialized'])) {
               foreach ($colprop['serialized'] as $subtype => $delim) {
                  $key = $col.':'.$subtype;
                  foreach ((array)$save_cols[$key] as $i => $val) {
                     $values = [$val['street'], $val['locality'], $val['zipcode'], $val['country']];
                     $save_cols[$key][$i] = count(array_filter($values)) ? implode($delim, $values) : null;
                 }
               }
            }
        }

        $ldap_data = [];
        foreach ($this->fieldmap as $rf => $fld) {
            $val = $save_cols[$rf];

            // check for value in base field (e.g. email instead of email:foo)
            list($col, $subtype) = rcube_utils::explode(':', $rf);
            if (!$val && !empty($save_cols[$col])) {
                $val = $save_cols[$col];
                unset($save_cols[$col]);  // use this value only once
            }
            else if (!$val && !$subtype) {
                // extract values from subtype cols
                $val = $this->get_col_values($col, $save_cols, true);
            }

            if (is_array($val)) {
                $val = array_filter($val);  // remove empty entries
            }

            if ($fld && $val) {
                // The field does exist, add it to the entry.
                $ldap_data[$fld] = $val;
            }
        }

        foreach ($this->formats as $fld => $format) {
            if (empty($ldap_data[$fld])) {
                continue;
            }

            switch ($format['type']) {
            case 'date':
                if ($dt = rcube_utils::anytodatetime($ldap_data[$fld])) {
                    $ldap_data[$fld] = $dt->format($format['format']);
                }
                break;
            }
        }

        return $ldap_data;
    }

    /**
     * Returns unified attribute name (resolving aliases)
     */
    private static function _attr_name($name)
    {
        // list of known attribute aliases
        static $aliases = [
            'gn'            => 'givenname',
            'rfc822mailbox' => 'email',
            'userid'        => 'uid',
            'emailaddress'  => 'email',
            'pkcs9email'    => 'email',
        ];

        $suffix = '';

        if (strpos($name, ':')) {
            list($name, $limit) = explode(':', $name, 2);
            $suffix = $limit ? ":$limit" : '';
        }

        $name = strtolower($name);

        return ($aliases[$name] ?? $name) . $suffix;
    }

    /**
     * Determines whether the given LDAP entry is a group record
     */
    private function is_group_entry($entry)
    {
        if (empty($entry['objectclass'])) {
            return false;
        }

        $classes = array_map('strtolower', (array)$entry['objectclass']);

        return count(array_intersect(array_keys($this->group_types), $classes)) > 0;
    }

    /**
     * Activate/deactivate debug mode
     *
     * @param bool $dbg True if LDAP commands should be logged
     */
    function set_debug($dbg = true)
    {
        $this->debug = $dbg;

        if ($this->ldap) {
            $this->ldap->config_set('debug', $dbg);
        }
    }

    /**
     * Setter for the current group
     *
     * @param mixed $group_id Group identifier
     */
    function set_group($group_id)
    {
        if ($group_id) {
            $this->group_id = $group_id;
            $this->group_data = $this->get_group_entry($group_id);
        }
        else {
            $this->group_id = 0;
            $this->group_data = null;
        }
    }

    /**
     * List all active contact groups of this source
     *
     * @param string $search Optional search string to match group name
     * @param int    $mode   Matching mode. Sum of rcube_addressbook::SEARCH_*
     *
     * @return array Indexed list of contact groups, each a hash array
     */
    function list_groups($search = null, $mode = 0)
    {
        if (!$this->groups) {
            return [];
        }

        $group_cache = $this->_fetch_groups($search, $mode);
        $groups      = [];

        if ($search) {
            foreach ($group_cache as $group) {
                if ($this->compare_search_value('name', $group['name'], mb_strtolower($search), $mode)) {
                    $groups[] = $group;
                }
            }
        }
        else {
            $groups = $group_cache;
        }

        return array_values($groups);
    }

    /**
     * Fetch groups from server
     */
    private function _fetch_groups($search = null, $mode = 0, $vlv_page = null)
    {
        // reset group search cache
        if ($search !== null && $vlv_page === null) {
            $this->group_search_cache = null;
        }
        // return in-memory cache from previous search results
        else if (is_array($this->group_search_cache) && $vlv_page === null) {
            return $this->group_search_cache;
        }

        // special case: list groups from 'group_filters' config
        if ($vlv_page === null && $search === null && !empty($this->prop['group_filters'])) {
            $groups = [];
            $rcube  = rcube::get_instance();

            // list regular groups configuration as special filter
            if (!empty($this->prop['groups']['filter'])) {
                $id = '__groups__';
                $groups[$id] = ['ID' => $id, 'name' => $rcube->gettext('groups'), 'virtual' => true] + $this->prop['groups'];
            }

            foreach ($this->prop['group_filters'] as $id => $prop) {
                $groups[$id] = $prop + ['ID' => $id, 'name' => ucfirst($id), 'virtual' => true, 'base_dn' => $this->base_dn];
            }

            return $groups;
        }

        if ($this->cache && $search === null && $vlv_page === null && ($groups = $this->cache->get('groups')) !== null) {
            return $groups;
        }

        $base_dn    = $this->groups_base_dn;
        $filter     = $this->prop['groups']['filter'] ?? null;
        $scope      = $this->prop['groups']['scope'] ?? 'sub';
        $name_attr  = !empty($this->prop['groups']['name_attr']) ? $this->prop['groups']['name_attr'] : 'cn';
        $email_attr = !empty($this->prop['groups']['email_attr']) ? $this->prop['groups']['email_attr'] : 'mail';
        $sort_attrs = (array) (!empty($this->prop['groups']['sort']) ? $this->prop['groups']['sort'] : $name_attr);
        $sort_attr  = array_first($sort_attrs) ?: $name_attr;
        $page_size  = 200;

        $ldap = $this->ldap;

        // use vlv to list groups
        if (!empty($this->prop['groups']['vlv'])) {
            if (empty($this->prop['groups']['sort'])) {
                $this->prop['groups']['sort'] = $sort_attrs;
            }

            $ldap = clone $this->ldap;
            $ldap->config_set($this->prop['groups']);
            $ldap->set_vlv_page($vlv_page+1, $page_size);
        }

        $props = ['sort' => $this->prop['groups']['sort'] ?? null];
        $attrs = array_unique(['dn', 'objectClass', $name_attr, $email_attr, $sort_attr]);

        // add search filter
        if ($search !== null) {
            // set wildcards
            $wp = $ws = '';
            if (!empty($this->prop['fuzzy_search']) && !($mode & rcube_addressbook::SEARCH_STRICT)) {
                $ws = '*';
                if (!($mode & rcube_addressbook::SEARCH_PREFIX)) {
                    $wp = '*';
                }
            }
            $filter = "(&$filter($name_attr=$wp" . rcube_ldap_generic::quote_string($search) . "$ws))";
            $props['search'] = $wp . $search . $ws;
        }

        $ldap_data = $ldap->search($base_dn, $filter, $scope, $attrs, $props);

        if ($ldap_data === false) {
            return [];
        }

        $groups          = [];
        $group_sortnames = [];
        $group_count     = $ldap_data->count();

        foreach ($ldap_data as $entry) {
            // DN is mandatory
            if (empty($entry['dn'])) {
                $entry['dn'] = $ldap_data->get_dn();
            }

            $group_name = is_array($entry[$name_attr]) ? $entry[$name_attr][0] : $entry[$name_attr];
            $group_id   = self::dn_encode($entry['dn']);

            $groups[$group_id]['ID'] = $group_id;
            $groups[$group_id]['dn'] = $entry['dn'];
            $groups[$group_id]['name'] = $group_name;
            $groups[$group_id]['member_attr'] = $this->get_group_member_attr($entry['objectclass'] ?? null);

            // list email attributes of a group
            for ($j=0; !empty($entry[$email_attr]) && $j < $entry[$email_attr]['count']; $j++) {
                if (strpos($entry[$email_attr][$j], '@') > 0)
                    $groups[$group_id]['email'][] = $entry[$email_attr][$j];
            }

            $group_sortnames[] = mb_strtolower($entry[$sort_attr][0] ?? '');
        }

        // recursive call can exit here
        if ($vlv_page > 0) {
            return $groups;
        }

        // call recursively until we have fetched all groups
        if (!empty($this->prop['groups']['vlv'])) {
            while ($group_count == $page_size) {
                $next_page   = $this->_fetch_groups($search, $mode, ++$vlv_page);
                $groups      = array_merge($groups, $next_page);
                $group_count = count($next_page);
            }
        }
        // when using VLV the list of groups is already sorted
        else {
            array_multisort($group_sortnames, SORT_ASC, SORT_STRING, $groups);
        }

        // cache this
        if ($this->cache && $search === null) {
            $this->cache->set('groups', $groups);
        }
        else if ($search !== null) {
            $this->group_search_cache = $groups;
        }

        return $groups;
    }

    /**
     * Fetch a group entry from LDAP and save in local cache
     */
    private function get_group_entry($group_id)
    {
        $group_cache = $this->_fetch_groups();

        // add group record to cache if it isn't yet there
        if (!isset($group_cache[$group_id])) {
            $name_attr = $this->prop['groups']['name_attr'];
            $dn    = self::dn_decode($group_id);
            $attrs = ['dn','objectClass','member','uniqueMember','memberURL',$name_attr,$this->fieldmap['email']];

            if ($list = $this->ldap->read_entries($dn, '(objectClass=*)', $attrs)) {
                $entry      = $list[0];
                $group_name = is_array($entry[$name_attr]) ? $entry[$name_attr][0] : $entry[$name_attr];
                $classes    = !empty($entry['objectclass']) ? $entry['objectclass'] : [];

                $group_cache[$group_id]['ID'] = $group_id;
                $group_cache[$group_id]['dn'] = $dn;
                $group_cache[$group_id]['name'] = $group_name;
                $group_cache[$group_id]['member_attr'] = $this->get_group_member_attr($classes);
            }
            else {
                $group_cache[$group_id] = false;
            }

            if ($this->cache) {
                $this->cache->set('groups', $group_cache);
            }
        }

        return $group_cache[$group_id];
    }

    /**
     * Get group properties such as name and email address(es)
     *
     * @param string $group_id Group identifier
     *
     * @return array Group properties as hash array
     */
    function get_group($group_id)
    {
        $group_data = $this->get_group_entry($group_id);
        unset($group_data['dn'], $group_data['member_attr']);

        return $group_data;
    }

    /**
     * Create a contact group with the given name
     *
     * @param string $group_name The group name
     *
     * @return mixed False on error, array with record props in success
     */
    function create_group($group_name)
    {
        $new_dn      = 'cn=' . rcube_ldap_generic::quote_string($group_name, true) . ',' . $this->groups_base_dn;
        $new_gid     = self::dn_encode($new_dn);
        $member_attr = $this->get_group_member_attr();
        $name_attr   = $this->prop['groups']['name_attr'] ?: 'cn';
        $new_entry   = [
            'objectClass' => $this->prop['groups']['object_classes'],
            $name_attr    => $group_name,
            $member_attr  => '',
        ];

        if (!$this->ldap->add_entry($new_dn, $new_entry)) {
            $this->set_error(self::ERROR_SAVING, 'errorsaving');
            return false;
        }

        if ($this->cache) {
            $this->cache->remove('groups');
        }

        return ['id' => $new_gid, 'name' => $group_name];
    }

    /**
     * Delete the given group and all linked group members
     *
     * @param string $group_id Group identifier
     *
     * @return bool True on success, false if no data was changed
     */
    function delete_group($group_id)
    {
        $group_cache = $this->_fetch_groups();
        $del_dn      = $group_cache[$group_id]['dn'];

        if (!$this->ldap->delete_entry($del_dn)) {
            $this->set_error(self::ERROR_SAVING, 'errorsaving');
            return false;
        }

        if ($this->cache) {
            unset($group_cache[$group_id]);
            $this->cache->set('groups', $group_cache);
        }

        return true;
    }

    /**
     * Rename a specific contact group
     *
     * @param string $group_id Group identifier
     * @param string $new_name New name to set for this group
     * @param string &$new_gid New group identifier (if changed, otherwise don't set)
     *
     * @return bool New name on success, false if no data was changed
     */
    function rename_group($group_id, $new_name, &$new_gid)
    {
        $group_cache = $this->_fetch_groups();
        $old_dn      = $group_cache[$group_id]['dn'];
        $new_rdn     = "cn=" . rcube_ldap_generic::quote_string($new_name, true);
        $new_gid     = self::dn_encode($new_rdn . ',' . $this->groups_base_dn);

        if (!$this->ldap->rename($old_dn, $new_rdn, null, true)) {
            $this->set_error(self::ERROR_SAVING, 'errorsaving');
            return false;
        }

        if ($this->cache) {
            $this->cache->remove('groups');
        }

        return $new_name;
    }

    /**
     * Add the given contact records the a certain group
     *
     * @param string       $group_id    Group identifier
     * @param array|string $contact_ids List of contact identifiers to be added
     *
     * @return int Number of contacts added
     */
    function add_to_group($group_id, $contact_ids)
    {
        $group_cache = $this->_fetch_groups();
        $member_attr = $group_cache[$group_id]['member_attr'];
        $group_dn    = $group_cache[$group_id]['dn'];
        $new_attrs   = [];

        if (!is_array($contact_ids)) {
            $contact_ids = explode(',', $contact_ids);
        }

        foreach ($contact_ids as $id) {
            $new_attrs[$member_attr][] = self::dn_decode($id);
        }

        if (!$this->ldap->mod_add($group_dn, $new_attrs)) {
            $this->set_error(self::ERROR_SAVING, 'errorsaving');
            return 0;
        }

        if ($this->cache) {
            $this->cache->remove('groups');
        }

        return count($new_attrs[$member_attr]);
    }

    /**
     * Remove the given contact records from a certain group
     *
     * @param string       $group_id    Group identifier
     * @param array|string $contact_ids List of contact identifiers to be removed
     *
     * @return int Number of deleted group members
     */
    function remove_from_group($group_id, $contact_ids)
    {
        $group_cache = $this->_fetch_groups();
        $member_attr = $group_cache[$group_id]['member_attr'];
        $group_dn    = $group_cache[$group_id]['dn'];
        $del_attrs   = [];

        if (!is_array($contact_ids)) {
            $contact_ids = explode(',', $contact_ids);
        }

        foreach ($contact_ids as $id) {
            $del_attrs[$member_attr][] = self::dn_decode($id);
        }

        if (!$this->ldap->mod_del($group_dn, $del_attrs)) {
            $this->set_error(self::ERROR_SAVING, 'errorsaving');
            return 0;
        }

        if ($this->cache) {
            $this->cache->remove('groups');
        }

        return count($del_attrs[$member_attr]);
    }

    /**
     * Get group assignments of a specific contact record
     *
     * @param mixed $contact_id Record identifier
     *
     * @return array List of assigned groups as ID=>Name pairs
     * @since 0.5-beta
     */
    function get_record_groups($contact_id)
    {
        if (!$this->groups) {
            return [];
        }

        $base_dn     = $this->groups_base_dn;
        $contact_dn  = self::dn_decode($contact_id);
        $name_attr   = $this->prop['groups']['name_attr'] ?: 'cn';
        $member_attr = $this->get_group_member_attr();
        $add_filter  = '';

        if ($member_attr != 'member' && $member_attr != 'uniqueMember') {
            $add_filter = "($member_attr=$contact_dn)";
        }

        $filter = strtr("(|(member=$contact_dn)(uniqueMember=$contact_dn)$add_filter)", ["\\" => "\\\\"]);

        $ldap_data = $this->ldap->search($base_dn, $filter, 'sub', ['dn', $name_attr]);

        if ($ldap_data === false) {
            return [];
        }

        $groups = [];
        foreach ($ldap_data as $entry) {
            if (empty($entry['dn'])) {
                $entry['dn'] = $ldap_data->get_dn();
            }

            $group_name = $entry[$name_attr][0];
            $group_id   = self::dn_encode($entry['dn']);
            $groups[$group_id] = $group_name;
        }

        return $groups;
    }

    /**
     * Detects group member attribute name
     */
    private function get_group_member_attr($object_classes = [], $default = 'member')
    {
        if (empty($object_classes) && !empty($this->prop['groups']['object_classes'])) {
            $object_classes = $this->prop['groups']['object_classes'];
        }

        if (!empty($object_classes)) {
            foreach ((array) $object_classes as $oc) {
                if (!empty($this->group_types[strtolower($oc)])) {
                    return $this->group_types[strtolower($oc)];
                }
            }
        }

        if (!empty($this->prop['groups']['member_attr'])) {
            return $this->prop['groups']['member_attr'];
        }

        return $default;
    }

    /**
     * HTML-safe DN string encoding
     *
     * @param string $str DN string
     *
     * @return string Encoded HTML identifier string
     */
    static function dn_encode($str)
    {
        // @TODO: to make output string shorter we could probably
        //        remove dc=* items from it
        return rtrim(strtr(base64_encode($str), '+/', '-_'), '=');
    }

    /**
     * Decodes DN string encoded with _dn_encode()
     *
     * @param string $str Encoded HTML identifier string
     *
     * @return string DN string
     */
    static function dn_decode($str)
    {
        $str = str_pad(strtr($str, '-_', '+/'), strlen($str) % 4, '=', STR_PAD_RIGHT);
        return base64_decode($str);
    }
}
lib/Roundcube/rcube_base_replacer.php000064400000007201151727150660013732 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide basic functions for base URL replacement                    |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Helper class to turn relative urls into absolute ones
 * using a predefined base
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_base_replacer
{
    private $base_url;


    /**
     * Class constructor
     *
     * @param string $base Base URL
     */
    public function __construct($base)
    {
        $this->base_url = $base;
    }

    /**
     * Replace callback
     *
     * @param array $matches Matching entries
     *
     * @return string Replaced text with absolute URL
     */
    public function callback($matches)
    {
        return $matches[1] . '="' . self::absolute_url($matches[3], $this->base_url) . '"';
    }

    /**
     * Convert base URLs to absolute ones
     *
     * @param string $body Text body
     *
     * @return string Replaced text
     */
    public function replace($body)
    {
        $regexp = [
            '/(src|background|href)=(["\']?)([^"\'\s>]+)(\2|\s|>)/i',
            '/(url\s*\()(["\']?)([^"\'\)\s]+)(\2)\)/i',
        ];

        return preg_replace_callback($regexp, [$this, 'callback'], $body);
    }

    /**
     * Convert paths like ../xxx to an absolute path using a base url
     *
     * @param string $path     Relative path
     * @param string $base_url Base URL
     *
     * @return string Absolute URL
     */
    public static function absolute_url($path, $base_url)
    {
        // check if path is an absolute URL
        if (preg_match('/^[fhtps]+:\/\//', $path)) {
            return $path;
        }

        // check if path is a content-id scheme
        if (strpos($path, 'cid:') === 0) {
            return $path;
        }

        $host_url = $base_url;
        $abs_path = $path;

        // cut base_url to the last directory
        if (strrpos($base_url, '/') > 7) {
            $host_url = substr($base_url, 0, strpos($base_url, '/', 7));
            $base_url = substr($base_url, 0, strrpos($base_url, '/'));
        }

        // $path is absolute
        if ($path && $path[0] == '/') {
            $abs_path = $host_url . $path;
        }
        else {
            // strip './' because its the same as ''
            $path = preg_replace('/^\.\//', '', $path);

            if (preg_match_all('/\.\.\//', $path, $matches, PREG_SET_ORDER)) {
                $cnt = count($matches);
                while ($cnt--) {
                    if ($pos = strrpos($base_url, '/')) {
                        $base_url = substr($base_url, 0, $pos);
                    }
                    $path = substr($path, 3);
                }
            }

            $abs_path = $base_url.'/'.$path;
        }

        return $abs_path;
    }
}
lib/Roundcube/session/redis.php000064400000014062151727150660012557 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide redis supported session management                          |
 +-----------------------------------------------------------------------+
 | Author: Cor Bosman <cor@roundcu.be>                                   |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to provide redis session storage
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_session_redis extends rcube_session
{
    /** @var Redis The redis engine */
    private $redis;

    /** @var bool Debug state */
    private $debug;


    /**
     * Object constructor
     *
     * @param rcube_config $config Configuration
     */
    public function __construct($config)
    {
        parent::__construct($config);

        $this->redis = rcube::get_instance()->get_redis();
        $this->debug = $config->get('redis_debug');

        if (!$this->redis) {
            rcube::raise_error([
                    'code' => 604, 'type' => 'redis',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Failed to connect to redis. Please check configuration"
                ],
                true, true);
        }

        // register sessions handler
        $this->register_session_handler();
    }

    /**
     * Opens the session
     *
     * @param string $save_path    Session save path
     * @param string $session_name Session name
     *
     * @return bool True on success, False on failure
     */
    public function open($save_path, $session_name)
    {
        return true;
    }

    /**
     * Close the session
     *
     * @return bool True on success, False on failure
     */
    public function close()
    {
        return true;
    }

    /**
     * Destroy the session
     *
     * @param string $key Session identifier
     *
     * @return bool True on success, False on failure
     */
    public function destroy($key)
    {
        if ($key) {
            try {
                $fname  = method_exists($this->redis, 'del') ? 'del' : 'delete';
                $result = $this->redis->$fname($key);
            }
            catch (Exception $e) {
                rcube::raise_error($e, true, true);
            }

            if ($this->debug) {
                $this->debug('delete', $key, null, $result ?? false);
            }
        }

        return true;
    }

    /**
     * Read data from redis store
     *
     * @param string $key Session identifier
     *
     * @return string Serialized data string
     */
    public function read($key)
    {
        $value = null;

        try {
            $value = $this->redis->get($key);
        }
        catch (Exception $e) {
            rcube::raise_error($e, true, true);
        }

        if ($this->debug) {
            $this->debug('get', $key, $value);
        }

        if ($value) {
            $arr = unserialize($value);
            $this->changed = $arr['changed'];
            $this->ip      = $arr['ip'];
            $this->vars    = $arr['vars'];
            $this->key     = $key;
        }

        return $this->vars ?: '';
    }

    /**
     * Write data to redis store
     *
     * @param string $key     Session identifier
     * @param string $newvars New session data string
     * @param string $oldvars Old session data string
     *
     * @return bool True on success, False on failure
     */
    public function update($key, $newvars, $oldvars)
    {
        $ts = microtime(true);

        if ($newvars !== $oldvars || $ts - $this->changed > $this->lifetime / 3) {
            $data   = serialize(['changed' => time(), 'ip' => $this->ip, 'vars' => $newvars]);
            $result = false;

            try {
                $result = $this->redis->setex($key, $this->lifetime + 60, $data);
            }
            catch (Exception $e) {
                rcube::raise_error($e, true, true);
            }

            if ($this->debug) {
                $this->debug('set', $key, $data, $result);
            }

            return $result;
        }

        return true;
    }

    /**
     * Write data to redis store
     *
     * @param string $key  Session identifier
     * @param array  $vars Session data
     *
     * @return bool True on success, False on failure
     */
    public function write($key, $vars)
    {
        if ($this->ignore_write) {
            return true;
        }

        $result = false;
        $data   = null;

        try {
            $data   = serialize(['changed' => time(), 'ip' => $this->ip, 'vars' => $vars]);
            $result = $this->redis->setex($key, $this->lifetime + 60, $data);
        }
        catch (Exception $e) {
            rcube::raise_error($e, true, true);
        }

        if ($this->debug) {
            $this->debug('set', $key, $data, $result);
        }

        return $result;
    }

    /**
     * Write memcache debug info to the log
     *
     * @param string $type   Operation type
     * @param string $key    Session identifier
     * @param string $data   Data to log
     * @param bool   $result Operation result
     */
    protected function debug($type, $key, $data = null, $result = null)
    {
        $line = strtoupper($type) . ' ' . $key;

        if ($data !== null) {
            $line .= ' ' . $data;
        }

        rcube::debug('redis', $line, $result);
    }
}
lib/Roundcube/session/memcached.php000064400000013125151727150660013356 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide memcached supported session management                      |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Cor Bosman <cor@roundcu.bet>                                  |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to provide memcached session storage
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_session_memcached extends rcube_session
{
    /** @var Memcached The memcache driver */
    private $memcache;

    /** @var bool Debug state */
    private $debug;


    /**
     * Object constructor
     *
     * @param rcube_config $config Configuration
     */
    public function __construct($config)
    {
        parent::__construct($config);

        $this->memcache = rcube::get_instance()->get_memcached();
        $this->debug    = $config->get('memcache_debug');

        if (!$this->memcache) {
            rcube::raise_error([
                    'code' => 604, 'type' => 'memcache',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Failed to connect to memcached. Please check configuration"
                ],
                true, true);
        }

        // register sessions handler
        $this->register_session_handler();
    }

    /**
     * Opens the session
     *
     * @param string $save_path    Session save path
     * @param string $session_name Session name
     *
     * @return bool True on success, False on failure
     */
    public function open($save_path, $session_name)
    {
        return true;
    }

    /**
     * Close the session
     *
     * @return bool True on success, False on failure
     */
    public function close()
    {
        return true;
    }

    /**
     * Destroy the session
     *
     * @param string $key Session identifier
     *
     * @return bool True on success, False on failure
     */
    public function destroy($key)
    {
        if ($key) {
            // #1488592: use 2nd argument
            $result = $this->memcache->delete($key, 0);

            if ($this->debug) {
                $this->debug('delete', $key, null, $result);
            }
        }

        return true;
    }

    /**
     * Read session data from memcache
     *
     * @param string $key Session identifier
     *
     * @return string Serialized data string
     */
    public function read($key)
    {
        if ($arr = $this->memcache->get($key)) {
            $this->changed = $arr['changed'];
            $this->ip      = $arr['ip'];
            $this->vars    = $arr['vars'];
            $this->key     = $key;
        }

        if ($this->debug) {
            $this->debug('get', $key, $arr ? serialize($arr) : '');
        }

        return $this->vars ?: '';
    }

    /**
     * Write data to memcache storage
     *
     * @param string $key  Session identifier
     * @param string $vars Session data string
     *
     * @return bool True on success, False on failure
     */
    public function write($key, $vars)
    {
        if ($this->ignore_write) {
            return true;
        }

        $data   = ['changed' => time(), 'ip' => $this->ip, 'vars' => $vars];
        $result = $this->memcache->set($key, $data, $this->lifetime + 60);

        if ($this->debug) {
            $this->debug('set', $key, serialize($data), $result);
        }

        return $result;
    }

    /**
     * Update memcache session data
     *
     * @param string $key     Session identifier
     * @param string $newvars New session data string
     * @param string $oldvars Old session data string
     *
     * @return bool True on success, False on failure
     */
    public function update($key, $newvars, $oldvars)
    {
        $ts = microtime(true);

        if ($newvars !== $oldvars || $ts - $this->changed > $this->lifetime / 3) {
            $data   = ['changed' => time(), 'ip' => $this->ip, 'vars' => $newvars];
            $result = $this->memcache->set($key, $data, $this->lifetime + 60);

            if ($this->debug) {
                $this->debug('set', $key, serialize($data), $result);
            }

            return $result;
        }

        return true;
    }

    /**
     * Write memcache debug info to the log
     *
     * @param string $type   Operation type
     * @param string $key    Session identifier
     * @param string $data   Data to log
     * @param bool   $result Operation result
     */
    protected function debug($type, $key, $data = null, $result = null)
    {
        $line = strtoupper($type) . ' ' . $key;

        if ($data !== null) {
            $line .= ' ' . $data;
        }

        rcube::debug('memcache', $line, $result);
    }
}
lib/Roundcube/session/db.php000064400000014442151727150660012040 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide database supported session management                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Cor Bosman <cor@roundcu.be>                                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to provide database session storage
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_session_db extends rcube_session
{
    /** @var rcube_db Database handler */
    private $db;

    /** @var string Session table name (quoted) */
    private $table_name;


    /**
     * Object constructor
     *
     * @param rcube_config $config Configuration
     */
    public function __construct($config)
    {
        parent::__construct($config);

        // get db instance
        $this->db = rcube::get_instance()->get_dbh();

        // session table name
        $this->table_name = $this->db->table_name('session', true);

        // register sessions handler
        $this->register_session_handler();

        // register db gc handler
        $this->register_gc_handler([$this, 'gc_db']);
    }

    /**
     * Opens the session
     *
     * @param string $save_path    Session save path
     * @param string $session_name Session name
     *
     * @return bool True on success, False on failure
     */
    public function open($save_path, $session_name)
    {
        return true;
    }

    /**
     * Close the session
     *
     * @return bool True on success, False on failure
     */
    public function close()
    {
        return true;
    }

    /**
     * Destroy the session
     *
     * @param string $key Session identifier
     *
     * @return bool True on success, False on failure
     */
    public function destroy($key)
    {
        if ($key) {
            $this->db->query("DELETE FROM {$this->table_name} WHERE `sess_id` = ?", $key);
        }

        return true;
    }

    /**
     * Read session data from database
     *
     * @param string $key Session identifier
     *
     * @return string Session vars (serialized string)
     */
    public function read($key)
    {
        if ($this->lifetime) {
            $expire_time  = $this->db->now(-$this->lifetime);
            $expire_check = "CASE WHEN `changed` < $expire_time THEN 1 ELSE 0 END AS expired";
        }

        $sql_result = $this->db->query(
            "SELECT `vars`, `ip`, `changed`, " . $this->db->now() . " AS ts"
            . (isset($expire_check) ? ", $expire_check" : '')
            . " FROM {$this->table_name} WHERE `sess_id` = ?", $key
        );

        if ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            // Remove expired sessions (we use gc, but it may not be precise enough or disabled)
            if (!empty($sql_arr['expired'])) {
                $this->destroy($key);
                return '';
            }

            $time_diff = time() - strtotime($sql_arr['ts']);

            $this->changed   = strtotime($sql_arr['changed']) + $time_diff; // local (PHP) time
            $this->ip        = $sql_arr['ip'];
            $this->vars      = base64_decode($sql_arr['vars']);
            $this->key       = $key;

            $this->db->reset();

            return !empty($this->vars) ? (string) $this->vars : '';
        }

        return '';
    }

    /**
     * Insert new data into db session store
     *
     * @param string $key  Session identifier
     * @param string $vars Serialized data string
     *
     * @return bool True on success, False on failure
     */
    public function write($key, $vars)
    {
        if ($this->ignore_write) {
            return true;
        }

        $now = $this->db->now();

        $this->db->query("INSERT INTO {$this->table_name}"
            . " (`sess_id`, `vars`, `ip`, `changed`)"
            . " VALUES (?, ?, ?, $now)",
            $key, base64_encode($vars), (string)$this->ip
        );

        return true;
    }

    /**
     * Update session data
     *
     * @param string $key     Session identifier
     * @param string $newvars New session data string
     * @param string $oldvars Old session data string
     *
     * @return bool True on success, False on failure
     */
    public function update($key, $newvars, $oldvars)
    {
        $now = $this->db->now();
        $ts  = microtime(true);

        // if new and old data are not the same, update data
        // else update expire timestamp only when certain conditions are met
        if ($newvars !== $oldvars) {
            $this->db->query("UPDATE {$this->table_name} "
                . "SET `changed` = $now, `vars` = ? WHERE `sess_id` = ?",
                base64_encode($newvars), $key);
        }
        else if ($ts - $this->changed > $this->lifetime / 2) {
            $this->db->query("UPDATE {$this->table_name} SET `changed` = $now"
                . " WHERE `sess_id` = ?", $key);
        }

        return true;
    }

    /**
     * Clean up db sessions.
     */
    public function gc_db()
    {
        // just clean all old sessions when this GC is called
        $this->db->query("DELETE FROM " . $this->db->table_name('session')
            . " WHERE `changed` < " . $this->db->now(-$this->gc_enabled));

        $this->log("Session GC (DB): remove records < "
            . date('Y-m-d H:i:s', time() - $this->gc_enabled)
            . '; rows = ' . intval($this->db->affected_rows()));
    }
}
lib/Roundcube/session/memcache.php000064400000013220151727150660013206 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide memcache supported session management                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Cor Bosman <cor@roundcu.bet>                                  |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to provide memcache session storage
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_session_memcache extends rcube_session
{
    /** @var Memcache The memcache driver */
    private $memcache;

    /** @var bool Debug state */
    private $debug;


    /**
     * Object constructor
     *
     * @param rcube_config $config Configuration
     */
    public function __construct($config)
    {
        parent::__construct($config);

        $this->memcache = rcube::get_instance()->get_memcache();
        $this->debug    = $config->get('memcache_debug');

        if (!$this->memcache) {
            rcube::raise_error([
                    'code' => 604, 'type' => 'memcache',
                    'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Failed to connect to memcached. Please check configuration"
                ],
                true, true);
        }

        // register sessions handler
        $this->register_session_handler();
    }

    /**
     * Opens the session
     *
     * @param string $save_path    Session save path
     * @param string $session_name Session name
     *
     * @return bool True on success, False on failure
     */
    public function open($save_path, $session_name)
    {
        return true;
    }

    /**
     * Close the session
     *
     * @return bool True on success, False on failure
     */
    public function close()
    {
        return true;
    }

    /**
     * Destroy the session
     *
     * @param string $key Session identifier
     *
     * @return bool True on success, False on failure
     */
    public function destroy($key)
    {
        if ($key) {
            // #1488592: use 2nd argument
            $result = $this->memcache->delete($key, 0);

            if ($this->debug) {
                $this->debug('delete', $key, null, $result);
            }
        }

        return true;
    }

    /**
     * Read session data from memcache
     *
     * @param string $key Session identifier
     *
     * @return string Serialized data string
     */
    public function read($key)
    {
        if ($value = $this->memcache->get($key)) {
            $arr = unserialize($value);
            $this->changed = $arr['changed'];
            $this->ip      = $arr['ip'];
            $this->vars    = $arr['vars'];
            $this->key     = $key;
        }

        if ($this->debug) {
            $this->debug('get', $key, $value);
        }

        return $this->vars ?: '';
    }

    /**
     * Write data to memcache storage
     *
     * @param string $key  Session identifier
     * @param string $vars Session data string
     *
     * @return bool True on success, False on failure
     */
    public function write($key, $vars)
    {
        if ($this->ignore_write) {
            return true;
        }

        $data   = serialize(['changed' => time(), 'ip' => $this->ip, 'vars' => $vars]);
        $result = $this->memcache->set($key, $data, MEMCACHE_COMPRESSED, $this->lifetime + 60);

        if ($this->debug) {
            $this->debug('set', $key, $data, $result);
        }

        return $result;
    }

    /**
     * Update memcache session data
     *
     * @param string $key     Session identifier
     * @param string $newvars New session data string
     * @param string $oldvars Old session data string
     *
     * @return bool True on success, False on failure
     */
    public function update($key, $newvars, $oldvars)
    {
        $ts = microtime(true);

        if ($newvars !== $oldvars || $ts - $this->changed > $this->lifetime / 3) {
            $data   = serialize(['changed' => time(), 'ip' => $this->ip, 'vars' => $newvars]);
            $result = $this->memcache->set($key, $data, MEMCACHE_COMPRESSED, $this->lifetime + 60);

            if ($this->debug) {
                $this->debug('set', $key, $data, $result);
            }

            return $result;
        }

        return true;
    }

    /**
     * Write memcache debug info to the log
     *
     * @param string $type   Operation type
     * @param string $key    Session identifier
     * @param string $data   Data to log
     * @param bool   $result Operation result
     */
    protected function debug($type, $key, $data = null, $result = null)
    {
        $line = strtoupper($type) . ' ' . $key;

        if ($data !== null) {
            $line .= ' ' . $data;
        }

        rcube::debug('memcache', $line, $result);
    }
}
lib/Roundcube/session/php.php000064400000004732151727150660012243 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Provide database supported session management                       |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Cor Bosman <cor@roundcu.be>                                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Class to provide native php session storage
 *
 * @package    Framework
 * @subpackage Core
 */
class rcube_session_php extends rcube_session
{
    /**
     * Native php sessions don't need a save handler.
     * We do need to define abstract function implementations but they are not used.
     */

    public function open($save_path, $session_name) {}
    public function close() {}
    public function destroy($key) {}
    public function read($key) {}
    public function write($key, $vars) {}
    public function update($key, $newvars, $oldvars) {}

    /**
     * Object constructor
     *
     * @param rcube_config $config Configuration
     */
    public function __construct($config)
    {
        parent::__construct($config);
    }

    /**
     * Wrapper for session_write_close()
     */
    public function write_close()
    {
        $_SESSION['__IP'] = $this->ip;
        $_SESSION['__MTIME'] = time();

        parent::write_close();
    }

    /**
     * Wrapper for session_start()
     */
    public function start()
    {
        parent::start();

        $this->key     = session_id();
        $this->ip      = $_SESSION['__IP'] ?? null;
        $this->changed = $_SESSION['__MTIME'] ?? null;
    }
}
lib/Roundcube/rcube_storage.php000064400000074146151727150660012623 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Mail Storage Engine                                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Abstract class for accessing mail messages storage server
 *
 * @package    Framework
 * @subpackage Storage
 */
abstract class rcube_storage
{
    /**
     * Instance of connection object e.g. rcube_imap_generic
     *
     * @var mixed
     */
    public $conn;

    /**
     * List of supported special folder types
     *
     * @var array
     */
    public static $folder_types = ['drafts', 'sent', 'junk', 'trash'];

    protected $folder          = 'INBOX';
    protected $default_charset = 'ISO-8859-1';
    protected $options         = ['auth_type' => 'check', 'language' => 'en_US'];
    protected $page_size       = 10;
    protected $list_page       = 1;
    protected $threading       = false;
    protected $search_set;

    /**
     * Internal (in-memory) cache
     *
     * @var array
     */
    protected $icache = [];

    /**
     * All (additional) headers used (in any way) by Roundcube
     * Not listed here: DATE, FROM, TO, CC, REPLY-TO, SUBJECT, CONTENT-TYPE, LIST-POST
     * (used for messages listing) are hardcoded in rcube_imap_generic::fetchHeaders()
     *
     * @var array
     */
    protected $all_headers = [
        'CONTENT-TRANSFER-ENCODING',
        'BCC',
        'IN-REPLY-TO',
        'MAIL-FOLLOWUP-TO',
        'MAIL-REPLY-TO',
        'MESSAGE-ID',
        'REFERENCES',
        'RESENT-BCC',
        'RETURN-PATH',
        'SENDER',
        'X-DRAFT-INFO',
    ];

    const UNKNOWN       = 0;
    const NOPERM        = 1;
    const READONLY      = 2;
    const TRYCREATE     = 3;
    const INUSE         = 4;
    const OVERQUOTA     = 5;
    const ALREADYEXISTS = 6;
    const NONEXISTENT   = 7;
    const CONTACTADMIN  = 8;

    const DUAL_USE_FOLDERS = 'X-DUAL-USE-FOLDERS';


    /**
     * Connect to the server
     *
     * @param string $host    Host to connect
     * @param string $user    Username for IMAP account
     * @param string $pass    Password for IMAP account
     * @param int    $port    Port to connect to
     * @param string $use_ssl SSL schema (either ssl or tls) or null if plain connection
     *
     * @return bool True on success, False on failure
     */
    abstract function connect($host, $user, $pass, $port = 143, $use_ssl = null);

    /**
     * Close connection. Usually done on script shutdown
     */
    abstract function close();

    /**
     * Checks connection state.
     *
     * @return bool True on success, False on failure
     */
    abstract function is_connected();

    /**
     * Check connection state, connect if not connected.
     *
     * @return bool Connection state.
     */
    abstract function check_connection();

    /**
     * Returns code of last error
     *
     * @return int Error code
     */
    abstract function get_error_code();

    /**
     * Returns message of last error
     *
     * @return string Error message
     */
    abstract function get_error_str();

    /**
     * Returns code of last command response
     *
     * @return int Response code (class constant)
     */
    abstract function get_response_code();

    /**
     * Set connection and class options
     *
     * @param array $opt Options array
     */
    public function set_options($opt)
    {
        $this->options = array_merge($this->options, (array) $opt);
    }

    /**
     * Get connection/class option
     *
     * @param string $name Option name
     *
     * @return mixed Option value
     */
    public function get_option($name)
    {
        return $this->options[$name];
    }

    /**
     * Activate/deactivate debug mode.
     *
     * @param bool $dbg True if conversation with the server should be logged
     */
    abstract function set_debug($dbg = true);

    /**
     * Set default message charset.
     *
     * This will be used for message decoding if a charset specification is not available
     *
     * @param string $cs Charset string
     */
    public function set_charset($cs)
    {
        $this->default_charset = $cs;
    }

    /**
     * Set internal folder reference.
     * All operations will be performed on this folder.
     *
     * @param string $folder Folder name
     */
    public function set_folder($folder)
    {
        if ($this->folder === $folder) {
            return;
        }

        $this->folder = $folder;
    }

    /**
     * Returns the currently used folder name
     *
     * @return string Name of the folder
     */
    public function get_folder()
    {
        return $this->folder;
    }

    /**
     * Set internal list page number.
     *
     * @param int $page Page number to list
     */
    public function set_page($page)
    {
        if ($page = intval($page)) {
            $this->list_page = $page;
        }
    }

    /**
     * Gets internal list page number.
     *
     * @return int Page number
     */
    public function get_page()
    {
        return $this->list_page;
    }

    /**
     * Set internal page size
     *
     * @param int $size Number of messages to display on one page
     */
    public function set_pagesize($size)
    {
        $this->page_size = (int) $size;
    }

    /**
     * Get internal page size
     *
     * @return int Number of messages to display on one page
     */
    public function get_pagesize()
    {
        return $this->page_size;
    }

    /**
     * Save a search result for future message listing methods.
     *
     * @param mixed $set Search set in driver specific format
     */
    abstract function set_search_set($set);

    /**
     * Return the saved search set.
     *
     * @return array Search set in driver specific format, NULL if search wasn't initialized
     */
    abstract function get_search_set();

    /**
     * Returns the storage server's (IMAP) capability
     *
     * @param string $cap Capability name
     *
     * @return mixed Capability value or True if supported, False if not
     */
    abstract function get_capability($cap);

    /**
     * Sets threading flag to the best supported THREAD algorithm.
     * Enable/Disable threaded mode.
     *
     * @param bool $enable True to enable threading
     *
     * @return mixed Threading algorithm or False if THREAD is not supported
     */
    public function set_threading($enable = false)
    {
        $this->threading = false;

        if ($enable && ($caps = $this->get_capability('THREAD'))) {
            $methods = ['REFS', 'REFERENCES', 'ORDEREDSUBJECT'];
            $methods = array_intersect($methods, $caps);

            $this->threading = array_first($methods);
        }

        return $this->threading;
    }

    /**
     * Get current threading flag.
     *
     * @return mixed Threading algorithm or False if THREAD is not supported or disabled
     */
    public function get_threading()
    {
        return $this->threading;
    }

    /**
     * Checks the PERMANENTFLAGS capability of the current folder
     * and returns true if the given flag is supported by the server.
     *
     * @param string $flag Permanentflag name
     *
     * @return bool True if this flag is supported
     */
    abstract function check_permflag($flag);

    /**
     * Returns the delimiter that is used by the server
     * for folder hierarchy separation.
     *
     * @return string Delimiter string
     */
    abstract function get_hierarchy_delimiter();

    /**
     * Get namespace
     *
     * @param string $name Namespace array index: personal, other, shared, prefix
     *
     * @return array Namespace data
     */
    abstract function get_namespace($name = null);

    /**
     * Get messages count for a specific folder.
     *
     * @param string $folder  Folder name
     * @param string $mode    Mode for count [ALL|THREADS|UNSEEN|RECENT|EXISTS]
     * @param bool   $force   Force reading from server and update cache
     * @param bool   $status  Enables storing folder status info (max UID/count),
     *                        required for folder_status()
     *
     * @return int Number of messages
     */
    abstract function count($folder = null, $mode = 'ALL', $force = false, $status = true);

    /**
     * Public method for listing message flags
     *
     * @param string $folder  Folder name
     * @param array  $uids    Message UIDs
     * @param int    $mod_seq Optional MODSEQ value
     *
     * @return array Indexed array with message flags
     */
    abstract function list_flags($folder, $uids, $mod_seq = null);

    /**
     * Public method for listing headers.
     *
     * @param   string   $folder     Folder name
     * @param   int      $page       Current page to list
     * @param   string   $sort_field Header field to sort by
     * @param   string   $sort_order Sort order [ASC|DESC]
     * @param   int      $slice      Number of slice items to extract from result array
     *
     * @return  array    Indexed array with message header objects
     */
    abstract function list_messages($folder = null, $page = null, $sort_field = null, $sort_order = null, $slice = 0);

    /**
     * Return sorted list of message UIDs
     *
     * @param string $folder     Folder to get index from
     * @param string $sort_field Sort column
     * @param string $sort_order Sort order [ASC, DESC]
     *
     * @return rcube_result_index|rcube_result_thread List of messages (UIDs)
     */
    abstract function index($folder = null, $sort_field = null, $sort_order = null);

    /**
     * Invoke search request to the server.
     *
     * @param  string  $folder     Folder name to search in
     * @param  string  $str        Search criteria
     * @param  string  $charset    Search charset
     * @param  string  $sort_field Header field to sort by
     *
     * @todo: Search criteria should be provided in non-IMAP format, e.g. array
     */
    abstract function search($folder = null, $str = 'ALL', $charset = null, $sort_field = null);

    /**
     * Direct (real and simple) search request (without result sorting and caching).
     *
     * @param  string  $folder  Folder name to search in
     * @param  string  $str     Search string
     *
     * @return rcube_result_index  Search result (UIDs)
     */
    abstract function search_once($folder = null, $str = 'ALL');

    /**
     * Refresh saved search set
     *
     * @return array Current search set
     */
    abstract function refresh_search();


    /* --------------------------------
     *        messages management
     * --------------------------------*/

    /**
     * Fetch message headers and body structure from the server and build
     * an object structure.
     *
     * @param int     $uid     Message UID to fetch
     * @param string  $folder  Folder to read from
     *
     * @return object rcube_message_header Message data
     */
    abstract function get_message($uid, $folder = null);

    /**
     * Return message headers object of a specific message
     *
     * @param int    $uid    Message sequence ID or UID
     * @param string $folder Folder to read from
     * @param bool   $force  True to skip cache
     *
     * @return rcube_message_header Message headers
     */
    abstract function get_message_headers($uid, $folder = null, $force = false);

    /**
     * Fetch message body of a specific message from the server
     *
     * @param  int                $uid    Message UID
     * @param  string             $part   Part number
     * @param  rcube_message_part $o_part Part object created by get_structure()
     * @param  mixed              $print  True to print part, resource to write part contents in
     * @param  resource           $fp     File pointer to save the message part
     * @param  bool               $skip_charset_conv Disables charset conversion
     *
     * @return string Message/part body if not printed
     */
    abstract function get_message_part($uid, $part = 1, $o_part = null, $print = null, $fp = null, $skip_charset_conv = false);

    /**
     * Fetch message body of a specific message from the server
     *
     * @param int $uid Message UID
     *
     * @return string $part Message/part body
     * @see    rcube_imap::get_message_part()
     */
    public function get_body($uid, $part = 1)
    {
        $headers = $this->get_message_headers($uid);
        return rcube_charset::convert($this->get_message_part($uid, $part, null),
            $headers->charset ?: $this->default_charset);
    }

    /**
     * Returns the whole message source as string (or saves to a file)
     *
     * @param int      $uid  Message UID
     * @param resource $fp   File pointer to save the message
     * @param string   $part Optional message part ID
     *
     * @return string Message source string
     */
    abstract function get_raw_body($uid, $fp = null, $part = null);

    /**
     * Returns the message headers as string
     *
     * @param int    $uid  Message UID
     * @param string $part Optional message part ID
     *
     * @return string Message headers string
     */
    abstract function get_raw_headers($uid, $part = null);

    /**
     * Sends the whole message source to stdout
     *
     * @param int  $uid       Message UID
     * @param bool $formatted Enables line-ending formatting
     */
    abstract function print_raw_body($uid, $formatted = true);

    /**
     * Set message flag to one or several messages
     *
     * @param mixed  $uids       Message UIDs as array or comma-separated string, or '*'
     * @param string $flag       Flag to set: SEEN, UNDELETED, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
     * @param string $folder     Folder name
     * @param bool   $skip_cache True to skip message cache clean up
     *
     * @return bool Operation status
     */
    abstract function set_flag($uids, $flag, $folder = null, $skip_cache = false);

    /**
     * Remove message flag for one or several messages
     *
     * @param mixed  $uids    Message UIDs as array or comma-separated string, or '*'
     * @param string $flag    Flag to unset: SEEN, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
     * @param string $folder  Folder name
     *
     * @return bool Operation status
     * @see set_flag
     */
    public function unset_flag($uids, $flag, $folder = null)
    {
        return $this->set_flag($uids, 'UN'.$flag, $folder);
    }

    /**
     * Append a mail message (source) to a specific folder.
     *
     * @param string       $folder  Target folder
     * @param string|array $message The message source string or filename
     *                              or array (of strings and file pointers)
     * @param string       $headers Headers string if $message contains only the body
     * @param bool         $is_file True if $message is a filename
     * @param array        $flags   Message flags
     * @param mixed        $date    Message internal date
     *
     * @return int|bool Appended message UID or True on success, False on error
     */
    abstract function save_message($folder, &$message, $headers = '', $is_file = false, $flags = [], $date = null);

    /**
     * Move message(s) from one folder to another.
     *
     * @param mixed  $uids  Message UIDs as array or comma-separated string, or '*'
     * @param string $to    Target folder
     * @param string $from  Source folder
     *
     * @return bool True on success, False on error
     */
    abstract function move_message($uids, $to, $from = null);

    /**
     * Copy message(s) from one mailbox to another.
     *
     * @param mixed  $uids  Message UIDs as array or comma-separated string, or '*'
     * @param string $to    Target folder
     * @param string $from  Source folder
     *
     * @return bool True on success, False on error
     */
    abstract function copy_message($uids, $to, $from = null);

    /**
     * Mark message(s) as deleted and expunge.
     *
     * @param mixed  $uids    Message UIDs as array or comma-separated string, or '*'
     * @param string $folder  Source folder
     *
     * @return bool True on success, False on error
     */
    abstract function delete_message($uids, $folder = null);

    /**
     * Expunge message(s) and clear the cache.
     *
     * @param mixed   $uids        Message UIDs as array or comma-separated string, or '*'
     * @param string  $folder      Folder name
     * @param bool    $clear_cache False if cache should not be cleared
     *
     * @return bool True on success, False on error
     */
    abstract function expunge_message($uids, $folder = null, $clear_cache = true);

    /**
     * Parse message UIDs input
     *
     * @param mixed $uids Message UIDs as array or comma-separated string, or '*'
     *                    or rcube_result_index object
     *
     * @return array Two elements array with UIDs converted to list and ALL flag
     */
    protected function parse_uids($uids)
    {
        $all = false;

        if ($uids instanceof rcube_result_index) {
            $uids = $uids->get_compressed();
        }
        else if ($uids === '*' || $uids === '1:*') {
            if (empty($this->search_set)) {
                $uids = '1:*';
                $all = true;
            }
            // get UIDs from current search set
            else {
                $uids = implode(',', $this->search_set->get());
            }
        }
        else {
            if (is_array($uids)) {
                $uids = implode(',', $uids);
            }
            else if (strpos($uids, ':')) {
                $uids = implode(',', rcube_imap_generic::uncompressMessageSet($uids));
            }

            if (preg_match('/[^0-9,]/', $uids)) {
                $uids = '';
            }
        }

        return [$uids, $all];
    }


    /* --------------------------------
     *        folder management
     * --------------------------------*/

    /**
     * Get a list of subscribed folders.
     *
     * @param   string  $root      Optional root folder
     * @param   string  $name      Optional name pattern
     * @param   string  $filter    Optional filter
     * @param   string  $rights    Optional ACL requirements
     * @param   bool    $skip_sort Enable to return unsorted list (for better performance)
     *
     * @return  array   List of folders
     */
    abstract function list_folders_subscribed($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false);

    /**
     * Get a list of all folders available on the server.
     *
     * @param string  $root      IMAP root dir
     * @param string  $name      Optional name pattern
     * @param mixed   $filter    Optional filter
     * @param string  $rights    Optional ACL requirements
     * @param bool    $skip_sort Enable to return unsorted list (for better performance)
     *
     * @return array Indexed array with folder names
     */
    abstract function list_folders($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false);

    /**
     * Subscribe to a specific folder(s)
     *
     * @param array $folders Folder name(s)
     *
     * @return bool True on success
     */
    abstract function subscribe($folders);

    /**
     * Unsubscribe folder(s)
     *
     * @param array $folders Folder name(s)
     *
     * @return bool True on success
     */
    abstract function unsubscribe($folders);

    /**
     * Create a new folder on the server.
     *
     * @param string  $folder    New folder name
     * @param bool    $subscribe True if the new folder should be subscribed
     * @param string  $type      Optional folder type (junk, trash, drafts, sent, archive)
     * @param bool    $noselect  Make the folder \NoSelect folder by adding hierarchy
     *                           separator at the end (useful for server that do not support
     *                           both folders and messages as folder children)
     *
     * @return bool True on success, False on error
     */
    abstract function create_folder($folder, $subscribe = false, $type = null, $noselect = false);

    /**
     * Set a new name to an existing folder
     *
     * @param string $folder   Folder to rename
     * @param string $new_name New folder name
     *
     * @return bool True on success, False on error
     */
    abstract function rename_folder($folder, $new_name);

    /**
     * Remove a folder from the server.
     *
     * @param string $folder Folder name
     *
     * @return bool True on success, False on error
     */
    abstract function delete_folder($folder);

    /**
     * Send expunge command and clear the cache.
     *
     * @param string  $folder      Folder name
     * @param bool    $clear_cache False if cache should not be cleared
     *
     * @return bool True on success, False on error
     */
    public function expunge_folder($folder = null, $clear_cache = true)
    {
        return $this->expunge_message('*', $folder, $clear_cache);
    }

    /**
     * Remove all messages in a folder.
     *
     * @param string  $folder  Folder name
     *
     * @return bool True on success, False on error
     */
    public function clear_folder($folder = null)
    {
        return $this->delete_message('*', $folder);
    }

    /**
     * Checks if folder exists and is subscribed
     *
     * @param string  $folder       Folder name
     * @param bool    $subscription Enable subscription checking
     *
     * @return bool True if folder exists, False otherwise
     */
    abstract function folder_exists($folder, $subscription = false);

    /**
     * Get folder size (size of all messages in a folder)
     *
     * @param string $folder Folder name
     *
     * @return int Folder size in bytes, False on error
     */
    abstract function folder_size($folder);

    /**
     * Returns the namespace where the folder is in
     *
     * @param string $folder Folder name
     *
     * @return string One of 'personal', 'other' or 'shared'
     */
    abstract function folder_namespace($folder);

    /**
     * Gets folder attributes (from LIST response, e.g. \Noselect, \Noinferiors).
     *
     * @param string $folder  Folder name
     * @param bool   $force   Set to True if attributes should be refreshed
     *
     * @return array Options list
     */
    abstract function folder_attributes($folder, $force = false);

    /**
     * Gets connection (and current folder) data: UIDVALIDITY, EXISTS, RECENT,
     * PERMANENTFLAGS, UIDNEXT, UNSEEN
     *
     * @param string $folder Folder name
     *
     * @return array Data
     */
    abstract function folder_data($folder);

    /**
     * Returns extended information about the folder.
     *
     * @param string $folder Folder name
     *
     * @return array Data
     */
    abstract function folder_info($folder);

    /**
     * Returns current status of a folder (compared to the last time use)
     *
     * @param string $folder Folder name
     * @param array  $diff   Difference data
     *
     * @return int Folder status
     */
    abstract function folder_status($folder = null, &$diff = []);

    /**
     * Synchronizes messages cache.
     *
     * @param string $folder Folder name
     */
    abstract function folder_sync($folder);

    /**
     * Modify folder name according to namespace.
     * For output it removes prefix of the personal namespace if it's possible.
     * For input it adds the prefix. Use it before creating a folder in root
     * of the folders tree.
     *
     * @param string $folder  Folder name
     * @param string $mode    Mode name (out/in)
     *
     * @return string Folder name
     */
    abstract function mod_folder($folder, $mode = 'out');

    /**
     * Check if the folder name is valid
     *
     * @param string $folder Folder name (UTF-8)
     * @param string &$char  First forbidden character found
     *
     * @return bool True if the name is valid, False otherwise
     */
    public function folder_validate($folder, &$char = null)
    {
        $delim = $this->get_hierarchy_delimiter();

        if (strpos($folder, $delim) !== false) {
            $char = $delim;
            return false;
        }

        return true;
    }

    /**
     * Create all folders specified as default
     */
    public function create_default_folders()
    {
        $rcube = rcube::get_instance();

        // create default folders if they do not exist
        foreach (self::$folder_types as $type) {
            if ($folder = $rcube->config->get($type . '_mbox')) {
                if (!$this->folder_exists($folder)) {
                    $this->create_folder($folder, true, $type);
                }
                else if (!$this->folder_exists($folder, true)) {
                    $this->subscribe($folder);
                }
            }
        }
    }

    /**
     * Check if specified folder is a special folder
     */
    public function is_special_folder($name)
    {
        return $name == 'INBOX' || in_array($name, $this->get_special_folders());
    }

    /**
     * Return configured special folders
     */
    public function get_special_folders($forced = false)
    {
        // getting config might be expensive, store special folders in memory
        if (!isset($this->icache['special-folders'])) {
            $rcube = rcube::get_instance();
            $this->icache['special-folders'] = [];

            foreach (self::$folder_types as $type) {
                if ($folder = $rcube->config->get($type . '_mbox')) {
                    $this->icache['special-folders'][$type] = $folder;
                }
            }
        }

        return $this->icache['special-folders'];
    }

    /**
     * Set special folder associations stored in backend
     */
    public function set_special_folders($specials)
    {
        // should be overridden by storage class if backend supports special folders (SPECIAL-USE)
        unset($this->icache['special-folders']);
    }

    /**
     * Get mailbox quota information.
     *
     * @param string $folder  Folder name
     *
     * @return mixed Quota info or False if not supported
     */
    abstract function get_quota($folder = null);


    /* -----------------------------------------
     *   ACL and METADATA methods
     * ----------------------------------------*/

    /**
     * Changes the ACL on the specified folder (SETACL)
     *
     * @param string $folder  Folder name
     * @param string $user    User name
     * @param string $acl     ACL string
     *
     * @return bool True on success, False on failure
     */
    abstract function set_acl($folder, $user, $acl);

    /**
     * Removes any <identifier,rights> pair for the
     * specified user from the ACL for the specified
     * folder (DELETEACL).
     *
     * @param string $folder  Folder name
     * @param string $user    User name
     *
     * @return bool True on success, False on failure
     */
    abstract function delete_acl($folder, $user);

    /**
     * Returns the access control list for a folder (GETACL).
     *
     * @param string $folder Folder name
     *
     * @return array User-rights array on success, NULL on error
     */
    abstract function get_acl($folder);

    /**
     * Returns information about what rights can be granted to the
     * user (identifier) in the ACL for the folder (LISTRIGHTS).
     *
     * @param string $folder  Folder name
     * @param string $user    User name
     *
     * @return array List of user rights
     */
    abstract function list_rights($folder, $user);

    /**
     * Returns the set of rights that the current user has to a folder (MYRIGHTS).
     *
     * @param string $folder Folder name
     *
     * @return array MYRIGHTS response on success, NULL on error
     */
    abstract function my_rights($folder);

    /**
     * Sets metadata/annotations (SETMETADATA/SETANNOTATION)
     *
     * @param string $folder  Folder name (empty for server metadata)
     * @param array  $entries Entry-value array (use NULL value as NIL)
     *
     * @return bool True on success, False on failure
     */
    abstract function set_metadata($folder, $entries);

    /**
     * Unsets metadata/annotations (SETMETADATA/SETANNOTATION)
     *
     * @param string $folder  Folder name (empty for server metadata)
     * @param array  $entries Entry names array
     *
     * @return bool True on success, False on failure
     */
    abstract function delete_metadata($folder, $entries);

    /**
     * Returns folder metadata/annotations (GETMETADATA/GETANNOTATION).
     *
     * @param string $folder   Folder name (empty for server metadata)
     * @param array  $entries  Entries
     * @param array  $options  Command options (with MAXSIZE and DEPTH keys)
     * @param bool   $force    Disables cache use
     *
     * @return array Metadata entry-value hash array on success, NULL on error
     */
    abstract function get_metadata($folder, $entries, $options = [], $force = false);

    /* -----------------------------------------
     *   Cache related functions
     * ----------------------------------------*/

    /**
     * Clears the cache.
     *
     * @param string  $key         Cache key name or pattern
     * @param bool    $prefix_mode Enable it to clear all keys starting
     *                             with prefix specified in $key
     */
    abstract function clear_cache($key = null, $prefix_mode = false);

    /**
     * Returns cached value
     *
     * @param string $key Cache key
     *
     * @return mixed Cached value
     */
    abstract function get_cache($key);

    /**
     * Delete outdated cache entries
     */
    abstract function cache_gc();
}
lib/Roundcube/rcube_washtml.php000064400000116455151727150660012636 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Utility class providing HTML sanitizer (based on Washtml class)     |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Frederic Motte <fmotte@ubixis.com>                            |
 +-----------------------------------------------------------------------+

                Washtml, a HTML sanitizer.

 Copyright (c) 2007 Frederic Motte <fmotte@ubixis.com>
 All rights reserved.

 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions and the following disclaimer.
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.

 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/**
 * Utility class providing HTML sanitizer
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_washtml
{
    /**
     * @var array Allowed HTML elements (default)
     */
    static $html_elements = ['a', 'abbr', 'acronym', 'address', 'area', 'b',
        'basefont', 'bdo', 'big', 'blockquote', 'br', 'caption', 'center',
        'cite', 'code', 'col', 'colgroup', 'dd', 'del', 'dfn', 'dir', 'div', 'dl',
        'dt', 'em', 'fieldset', 'font', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i',
        'ins', 'label', 'legend', 'li', 'map', 'menu', 'nobr', 'ol', 'p', 'pre', 'q',
        's', 'samp', 'small', 'span', 'strike', 'strong', 'sub', 'sup', 'table',
        'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'u', 'ul', 'var', 'wbr', 'img',
        'video', 'source',
        // form elements
        'button', 'input', 'textarea', 'select', 'option', 'optgroup',
        // SVG
        'svg', 'altglyph', 'altglyphdef', 'altglyphitem', 'animate',
        'animatecolor', 'animatetransform', 'circle', 'clippath', 'defs', 'desc',
        'ellipse', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line',
        'lineargradient', 'marker', 'mask', 'mpath', 'path', 'pattern',
        'polygon', 'polyline', 'radialgradient', 'rect', 'set', 'stop', 'switch', 'symbol',
        'text', 'textpath', 'tref', 'tspan', 'use', 'view', 'vkern', 'filter',
         // SVG Filters
        'feblend', 'fecolormatrix', 'fecomponenttransfer', 'fecomposite',
        'feconvolvematrix', 'fediffuselighting', 'fedisplacementmap',
        'feflood', 'fefunca', 'fefuncb', 'fefuncg', 'fefuncr', 'fegaussianblur',
        'feimage', 'femerge', 'femergenode', 'femorphology', 'feoffset',
        'fespecularlighting', 'fetile', 'feturbulence',
        // MathML
        'math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr',
        'mmuliscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow',
        'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd',
        'mtext', 'mtr', 'munder', 'munderover', 'maligngroup', 'malignmark',
        'mprescripts', 'semantics', 'annotation', 'annotation-xml', 'none',
        'infinity', 'matrix', 'matrixrow', 'ci', 'cn', 'sep', 'apply',
        'plus', 'minus', 'eq', 'power', 'times', 'divide', 'csymbol', 'root',
        'bvar', 'lowlimit', 'uplimit',
    ];

    /**
     * @var array Ignore these HTML tags and their content
     */
    static $ignore_elements = ['script', 'applet', 'embed', 'style'];

    /**
     * @var array Allowed HTML attributes
     */
    static $html_attribs = ['name', 'class', 'title', 'alt', 'width', 'height',
        'align', 'nowrap', 'col', 'row', 'id', 'rowspan', 'colspan', 'cellspacing',
        'cellpadding', 'valign', 'bgcolor', 'color', 'border', 'bordercolorlight',
        'bordercolordark', 'face', 'marginwidth', 'marginheight', 'axis', 'border',
        'abbr', 'char', 'charoff', 'clear', 'compact', 'coords', 'vspace', 'hspace',
        'cellborder', 'size', 'lang', 'dir', 'usemap', 'shape', 'media',
        'background', 'src', 'poster', 'href', 'headers', 'start', 'reversed',
        // attributes of form elements
        'type', 'rows', 'cols', 'disabled', 'readonly', 'checked', 'multiple', 'value', 'for',
        // SVG
        'accent-height', 'accumulate', 'additive', 'alignment-baseline', 'alphabetic',
        'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseprofile',
        'baseline-shift', 'begin', 'bias', 'by', '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', 'flood-color', 'flood-opacity', 'font-family', 'font-size',
        'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'from',
        'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform',
        'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints',
        'keysplines', 'keytimes', 'lengthadjust', 'letter-spacing', 'kernelmatrix',
        'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid',
        'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits',
        'maskunits', 'max', 'mask', 'mode', 'min', 'numoctaves', 'offset', 'operator',
        'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order',
        'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits',
        'points', 'preservealpha', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount',
        'repeatdur', 'restart', 'rotate', 'scale', 'seed', 'shape-rendering', 'show', 'specularconstant',
        'specularexponent', 'spreadmethod', 'stddeviation', 'stitchtiles', 'stop-color',
        'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap',
        'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width',
        'surfacescale', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration',
        'text-rendering', 'textlength', 'to', 'u1', 'u2', 'unicode', 'values', 'viewbox',
        'visibility', 'vert-adv-y', 'version', 'vert-origin-x', 'vert-origin-y', 'word-spacing',
        'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2',
        'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan',
        // MathML
        'accent', 'accentunder', 'bevelled', 'close', 'columnalign', 'columnlines',
        'columnspan', 'denomalign', 'depth', 'display', 'displaystyle', 'encoding', 'fence',
        'frame', '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',
        'fontsize', 'fontweight', 'fontstyle', 'fontfamily', 'groupalign', 'edge', 'side',
    ];

    /**
     * @var array Elements which could be empty and be returned in short form (<tag />)
     */
    static $void_elements = ['area', 'base', 'br', 'col', 'command', 'embed', 'hr',
        'img', 'input', 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr',
        // MathML
        'sep', 'infinity', 'in', 'plus', 'eq', 'power', 'times', 'divide', 'root',
        'maligngroup', 'none', 'mprescripts',
    ];

    /**
     * @var array Additional allowed attributes of body element
     */
    static $body_attribs = ['alink', 'background', 'bgcolor', 'link', 'text', 'vlink'];

    /** @var bool State indicating existence of linked objects in HTML */
    public $extlinks = false;

    /** @var array Current settings */
    private $config = [];

    /** @var array Registered callback functions for tags */
    private $handlers = [];

    /** @var array Allowed HTML elements */
    private $_html_elements = [];

    /** @var array Ignore these HTML tags but process their content */
    private $_ignore_elements = [];

    /** @var array Elements which could be empty and be returned in short form (<tag />) */
    private $_void_elements = [];

    /** @var array Allowed HTML attributes */
    private $_html_attribs = [];

    /** @var string A prefix to be added to id/class/for attribute values */
    private $_css_prefix;

    /** @var int Max nesting level */
    private $max_nesting_level;

    /** @var bool Indicates that a nesting level error was logged */
    private $max_nesting_level_error = false;

    /** @var bool True if current document is XML */
    private $is_xml = false;


    /**
     * Class constructor
     *
     * @param array $p Configuration options:
     *         allow_remote: is a boolean to allow link to remote resources (images/css)
     *         blocked_src: string with image-src to be used for blocked remote images
     *         show_washed: is a boolean to include washed out attributes as x-washed
     *         cid_map: is an array where cid urls index urls to replace them
     *         charset: is a string containing the charset of the HTML document,
     *                  to be used if the charset is not defined in the document
     *         css_prefix: A prefix to be added to id/class/for attribute values
     *         html_elements: Additional allowed HTML elements
     *         ignore_elements: Additional HTML elements to ignore
     *         html_attribs: Additional allowed HTML attributes
     *         void_elements: Elements which could be empty and be returned in short form (<tag />)
     */
    public function __construct($p = [])
    {
        $p['html_elements']   = isset($p['html_elements']) ? (array) $p['html_elements'] : [];
        $p['html_attribs']    = isset($p['html_attribs']) ? (array) $p['html_attribs'] : [];
        $p['ignore_elements'] = isset($p['ignore_elements']) ? (array) $p['ignore_elements'] : [];
        $p['void_elements']   = isset($p['void_elements']) ? (array) $p['void_elements'] : [];

        $this->_html_elements   = array_flip($p['html_elements']) + array_flip(self::$html_elements);
        $this->_html_attribs    = array_flip($p['html_attribs']) + array_flip(self::$html_attribs);
        $this->_ignore_elements = array_flip($p['ignore_elements']) + array_flip(self::$ignore_elements);
        $this->_void_elements   = array_flip($p['void_elements']) + array_flip(self::$void_elements);
        $this->_css_prefix      = isset($p['css_prefix']) && strlen($p['css_prefix']) ? $p['css_prefix'] : null;

        unset($p['html_elements'], $p['html_attribs'], $p['ignore_elements'], $p['void_elements'], $p['css_prefix']);

        $this->config = $p + ['show_washed' => true, 'allow_remote' => false, 'cid_map' => [], 'base_url' => ''];

        if (!isset($this->config['charset'])) {
            $this->config['charset'] = RCUBE_CHARSET;
        }
    }

    /**
     * Register a callback function for a certain tag
     *
     * @param string   $tag      HTML tag name
     * @param callable $callback Callback function
     */
    public function add_callback($tag, $callback)
    {
        $this->handlers[$tag] = $callback;
    }

    /**
     * Check CSS style
     *
     * @param string $style CSS style
     *
     * @return string Washed CSS style
     */
    private function wash_style($style)
    {
        $result = [];

        // Remove unwanted white-space characters so regular expressions below work better
        $style = preg_replace('/[\n\r\s\t]+/', ' ', $style);

        // Decode insecure character sequences
        $style = rcube_utils::xss_entity_decode($style);

        foreach (rcube_utils::parse_css_block($style) as $rule) {
            $cssid = $rule[0];
            $value = '';

            foreach ($this->explode_style($rule[1]) as $val) {
                if (preg_match('/^url\(/i', $val)) {
                    if (preg_match('/^url\(\s*[\'"]?([^\'"\)]*)[\'"]?\s*\)/iu', $val, $match)) {
                        if ($url = $this->wash_uri($match[1])) {
                            $value .= ' url(' . htmlspecialchars($url, ENT_QUOTES, $this->config['charset']) . ')';
                        }
                    }
                }
                else if (!preg_match('/^(behavior|expression)/i', $val)) {
                    // Set position:fixed to position:absolute for security (#5264)
                    if (!strcasecmp($cssid, 'position') && !strcasecmp($val, 'fixed')) {
                        $val = 'absolute';
                    }

                    // whitelist ?
                    $value .= ' ' . $val;

                    // #1488535: Fix size units, so width:800 would be changed to width:800px
                    if (preg_match('/^(left|right|top|bottom|width|height)/i', $cssid)
                        && preg_match('/^[0-9]+$/', $val)
                    ) {
                        $value .= 'px';
                    }
                }
            }

            if (isset($value[0])) {
                $result[] = $cssid . ': ' . trim($value);
            }
        }

        return implode('; ', $result);
    }

    /**
     * Take a node and return allowed attributes and check values
     *
     * @param DOMNode $node Document element
     *
     * @return string Washed element attributes
     */
    private function wash_attribs($node)
    {
        $result = '';
        $washed = [];
        $additional_attribs = [];

        if ($node->nodeName == 'body') {
            $additional_attribs = self::$body_attribs;
        }

        foreach ($node->attributes as $name => $attr) {
            $key   = strtolower($name);
            $value = $attr->nodeValue;

            if ($key == 'style' && ($style = $this->wash_style($value))) {
                // replace double quotes to prevent syntax error and XSS issues (#1490227)
                $result .= ' style="' . str_replace('"', '&quot;', $style) . '"';
            }
            else if (isset($this->_html_attribs[$key]) || in_array($key, $additional_attribs)) {
                $value = trim($value);
                $out   = null;

                // in SVG to/from attribs may contain anything, including URIs
                if ($key == 'to' || $key == 'from') {
                    $key = strtolower($node->getAttribute('attributeName'));
                    if ($key && !isset($this->_html_attribs[$key])) {
                        $key = null;
                    }
                }

                if ($this->is_image_attribute($node->nodeName, $key)) {
                    $out = $this->wash_uri($value, true);
                }
                else if ($this->is_link_attribute($node->nodeName, $key)) {
                    $out = $this->wash_link($value);
                }
                else if ($this->is_funciri_attribute($node->nodeName, $key)) {
                    if (preg_match('/^[a-z:]*url\(/i', $value)) {
                        if (preg_match('/^([a-z:]*url)\(\s*[\'"]?([^\'"\)]*)[\'"]?\s*\)/iu', $value, $match)) {
                            if ($url = $this->wash_uri($match[2])) {
                                $result .= ' ' . $attr->nodeName . '="' . $match[1]
                                    . '(' . htmlspecialchars($url, ENT_QUOTES, $this->config['charset']) . ')'
                                    . htmlspecialchars(substr($value, strlen($match[0])), ENT_QUOTES, $this->config['charset']) . '"';
                                continue;
                            }
                        }
                        else {
                            $out = $value;
                        }
                    }
                    else {
                        $out = $value;
                    }
                }
                else if ($this->_css_prefix !== null
                    && (in_array($key, ['id', 'class', 'for']) || ($key == 'name' && $node->nodeName == 'a'))
                ) {
                    $out = preg_replace('/(\S+)/', $this->_css_prefix . '\1', $value);
                }
                else if ($key) {
                   $out = $value;
                }

                if ($out !== null && $out !== '') {
                    $v = htmlspecialchars($out, ENT_QUOTES | ENT_SUBSTITUTE, $this->config['charset']);
                    $result .= " {$attr->nodeName}=\"{$v}\"";
                }
                else if ($value) {
                    $washed[] = htmlspecialchars($attr->nodeName, ENT_QUOTES, $this->config['charset']);
                }
            }
            else {
                $washed[] = htmlspecialchars($attr->nodeName, ENT_QUOTES, $this->config['charset']);
            }
        }

        if (!empty($washed) && $this->config['show_washed']) {
            $result .= ' x-washed="' . implode(' ', $washed) . '"';
        }

        return $result;
    }

    /**
     * Wash URI value
     *
     * @param string $uri            URI
     * @param bool   $blocked_source Block remote source
     * @param bool   $is_image       URI points to an image
     *
     * @return string Washed URI
     */
    private function wash_uri($uri, $blocked_source = false, $is_image = true)
    {
        if (!empty($this->config['cid_map'][$uri])) {
            return $this->config['cid_map'][$uri];
        }

        $key = $this->config['base_url'] . $uri;
        if (!empty($this->config['cid_map'][$key])) {
            return $this->config['cid_map'][$key];
        }

        // allow url(#id) used in SVG
        if (isset($uri[0]) && $uri[0] == '#') {
            if ($this->_css_prefix !== null) {
                $uri = '#' . $this->_css_prefix . substr($uri, 1);
            }

            return $uri;
        }

        if (preg_match('/^(http|https|ftp):.+/i', $uri)) {
            if (!empty($this->config['allow_remote'])) {
                return $uri;
            }

            $this->extlinks = true;
            if ($is_image && !empty($this->config['blocked_src'])) {
                return $this->config['blocked_src'];
            }
        }
        else if ($is_image && preg_match('/^data:image\/([^,]+),(.+)$/is', $uri, $matches)) { // RFC2397
            $type = preg_replace('/\s/', '', $matches[1]);

            // svg images can be insecure, we'll sanitize them
            if (stripos($type, 'svg') !== false) {
                $svg = $matches[2];

                if (stripos($type, ';base64') !== false) {
                    $svg = base64_decode($svg);
                }
                else {
                    $type .= ';base64';
                }

                $washer = new self($this->config);
                $svg    = $washer->wash($svg);

                // Invalid svg content
                if (empty($svg)) {
                    return null;
                }

                return 'data:image/' . $type . ',' . base64_encode($svg);
            }

            return $uri;
        }
    }

    /**
     * Wash Href value
     *
     * @param string $href Href attribute value (link)
     *
     * @return string Washed href
     */
    private function wash_link($href)
    {
        if (strlen($href) && !preg_match('!^(javascript|vbscript|data:)!i', $href)) {
            if ($href[0] == '#' && $this->_css_prefix !== null) {
                return '#' . $this->_css_prefix . substr($href, 1);
            }

            if (preg_match('!^[a-zA-Z._-]+$!', $href)) {
                return 'http://' . $href;
            }

            if (preg_match('!^([a-z][a-z0-9.+-]+:|//|#).+!i', $href)) {
                return $href;
            }
        }
    }

    /**
     * Check it the tag/attribute may contain an URI
     *
     * @param string $tag  Element name
     * @param string $attr Attribute name
     *
     * @return bool True if attribute may contain an URI, False otherwise
     */
    private function is_link_attribute($tag, $attr)
    {
        return $attr === 'href';
    }

    /**
     * Check it the tag/attribute may contain an image URI
     *
     * @param string $tag  Element name
     * @param string $attr Attribute name
     *
     * @return bool True if attribute may contain an image URI, False otherwise
     */
    private function is_image_attribute($tag, $attr)
    {
        return $attr == 'background'
            || $attr == 'color-profile' // SVG
            || ($attr == 'poster' && $tag == 'video')
            || ($attr == 'src' && preg_match('/^(img|image|source|input|video|audio)$/i', $tag))
            || ($tag == 'use' && $attr == 'href') // SVG
            || ($tag == 'image' && $attr == 'href'); // SVG
    }

    /**
     * Check it the tag/attribute may contain a FUNCIRI value
     *
     * @param string $tag  Element name
     * @param string $attr Attribute name
     *
     * @return bool True if attribute may contain a FUNCIRI value, False otherwise
     */
    private function is_funciri_attribute($tag, $attr)
    {
        return in_array($attr, ['fill', 'filter', 'stroke', 'marker-start',
            'marker-end', 'marker-mid', 'clip-path', 'mask', 'cursor']);
    }

    /**
     * Check if a specified element has an attribute with specified value.
     * Do it in case-insensitive manner.
     *
     * @param DOMElement $node       The element
     * @param string     $attr_name  The attribute name
     * @param string     $attr_value The attribute value to find
     *
     * @return bool True if the specified attribute exists and has the expected value
     */
    private static function attribute_value($node, $attr_name, $attr_value)
    {
        $attr_name = strtolower($attr_name);

        foreach ($node->attributes as $name => $attr) {
            if (strtolower($name) === $attr_name) {
                if (strtolower($attr_value) === strtolower(trim($attr->nodeValue))) {
                    return true;
                }
            }
        }

        return false;
    }

    /**
     * The main loop that recurse on a node tree.
     * It output only allowed tags with allowed attributes and allowed inline styles
     *
     * @param DOMNode $node  HTML element
     * @param int     $level Recurrence level (safe initial value found empirically)
     *
     * @return string HTML content
     */
    private function dumpHtml($node, $level = 20)
    {
        if (!$node->hasChildNodes()) {
            return '';
        }

        $level++;

        if ($this->max_nesting_level > 0 && $level == $this->max_nesting_level - 1) {
            // log error message once
            if (empty($this->max_nesting_level_error)) {
                $this->max_nesting_level_error = true;
                rcube::raise_error([
                        'code' => 500, 'line' => __LINE__, 'file' => __FILE__,
                        'message' => "Maximum nesting level exceeded (xdebug.max_nesting_level={$this->max_nesting_level})"
                    ],
                    true, false
                );
            }

            return '<!-- ignored -->';
        }

        $node = $node->firstChild;
        $dump = '';

        do {
            switch ($node->nodeType) {
            case XML_ELEMENT_NODE: //Check element
                $tagName = strtolower($node->nodeName);

                if ($tagName == 'link') {
                    $uri = $this->wash_uri($node->getAttribute('href'), false, false);
                    if (!$uri) {
                        $dump .= '<!-- link ignored -->';
                        break;
                    }

                    $node->setAttribute('href', (string) $uri);
                }
                else if (in_array($tagName, ['animate', 'animatecolor', 'set', 'animatetransform'])
                    && self::attribute_value($node, 'attributename', 'href')
                ) {
                    // Insecure svg tags
                    $dump .= "<!-- $tagName blocked -->";
                    break;
                }

                if (!empty($this->handlers[$tagName])) {
                    $callback = $this->handlers[$tagName];
                    $dump .= call_user_func($callback, $tagName,
                        $this->wash_attribs($node), $this->dumpHtml($node, $level), $this);
                }
                else if (isset($this->_html_elements[$tagName])) {
                    $content = $this->dumpHtml($node, $level);
                    $dump .= '<' . $node->nodeName;

                    if ($tagName == 'svg') {
                        $xpath = new DOMXPath($node->ownerDocument);
                        foreach ($xpath->query('namespace::*') as $ns) {
                            if ($ns->nodeName != 'xmlns:xml') {
                                $dump .= sprintf(' %s="%s"',
                                    $ns->nodeName,
                                    htmlspecialchars($ns->nodeValue, ENT_QUOTES, $this->config['charset'])
                                );
                            }
                        }
                    }
                    else if ($tagName == 'textarea' && strpos($content, '<') !== false) {
                        $content = htmlspecialchars($content, ENT_QUOTES | ENT_SUBSTITUTE, $this->config['charset']);
                    }

                    $dump .= $this->wash_attribs($node);

                    if ($content === '' && ($this->is_xml || isset($this->_void_elements[$tagName]))) {
                        $dump .= ' />';
                    }
                    else {
                        $dump .= '>' . $content . '</' . $node->nodeName . '>';
                    }
                }
                else if (isset($this->_ignore_elements[$tagName])) {
                    $dump .= '<!-- ' . htmlspecialchars($node->nodeName, ENT_QUOTES, $this->config['charset']) . ' not allowed -->';
                }
                else {
                    $dump .= '<!-- ' . htmlspecialchars($node->nodeName, ENT_QUOTES, $this->config['charset']) . ' ignored -->';
                    $dump .= $this->dumpHtml($node, $level); // ignore tags not its content
                }
                break;

            case XML_CDATA_SECTION_NODE:
            case XML_TEXT_NODE:
                $dump .= htmlspecialchars($node->nodeValue, ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, $this->config['charset']);
                break;

            case XML_HTML_DOCUMENT_NODE:
                $dump .= $this->dumpHtml($node, $level);
                break;
            }
        }
        while($node = $node->nextSibling);

        return $dump;
    }

    /**
     * Main function, give it untrusted HTML, tell it if you allow loading
     * remote images and give it a map to convert "cid:" urls.
     *
     * @param string $html HTML content
     *
     * @return string Washed HTML content
     */
    public function wash($html)
    {
        $this->extlinks = false;

        $html = $this->cleanup($html);

        // Find base URL for images
        if (preg_match('/<base\s+href=[\'"]*([^\'"]+)/is', $html, $matches)) {
            $this->config['base_url'] = $matches[1];
        }
        else {
            $this->config['base_url'] = '';
        }

        // Detect max nesting level (for dumpHTML) (#1489110)
        $this->max_nesting_level = (int) @ini_get('xdebug.max_nesting_level');

        // SVG need to be parsed as XML
        $this->is_xml = !preg_match('/<(html|head|body)/i', $html) && stripos($html, '<svg') !== false;
        $method       = $this->is_xml ? 'loadXML' : 'loadHTML';

        // DOMDocument does not support HTML5, try Masterminds parser if available
        if (!$this->is_xml && class_exists('Masterminds\HTML5')) {
            try {
                // disabled_html_ns=true is a workaround for the performance issue
                // https://github.com/Masterminds/html5-php/issues/181
                $html5 = new Masterminds\HTML5(['disable_html_ns' => true]);
                $node  = $html5->loadHTML($this->fix_html5($html));
            }
            catch (Exception $e) {
                // ignore, fallback to DOMDocument
            }
        }

        if (empty($node)) {
            // Charset seems to be ignored (probably if defined in the HTML document)
            $node = new DOMDocument('1.0', $this->config['charset']);
            @$node->{$method}($html, LIBXML_PARSEHUGE | LIBXML_COMPACT | LIBXML_NONET);
        }

        unset($html); // release some memory

        return $this->dumpHtml($node);
    }

    /**
     * Getter for config parameters
     *
     * @param string $prop Configuration parameter name
     *
     * @return mixed Configuration parameter value
     */
    public function get_config($prop)
    {
        return $this->config[$prop] ?? null;
    }

    /**
     * Clean HTML input
     *
     * @param string $html HTML content
     *
     * @return string Clean HTML content
     */
    private function cleanup($html)
    {
        $html = trim($html);

        // special replacements (not properly handled by washtml class)
        $html_search = [
            // space(s) between <NOBR>
            '/(<\/nobr>)(\s+)(<nobr>)/i',
            // PHP bug #32547 workaround: remove title tag
            '/<title[^>]*>.*<\/title>/iU',
            // remove <!doctype> before BOM (#1490291)
            '/<\!doctype[^>]+>[^<]*/im',
            // byte-order mark (only outlook?)
            '/^(\0\0\xFE\xFF|\xFF\xFE\0\0|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/',
            // washtml/DOMDocument cannot handle xml namespaces
            '/<html\s[^>]+>/i',
            // washtml/DOMDocument cannot handle xml namespaces
            // HTML5 parser cannot handler <?xml
            '/<\?xml[^>]*>/i',
        ];

        $html_replace = [
            '\\1'.' &nbsp; '.'\\3',
            '',
            '',
            '',
            '<html>',
            '',
        ];

        $html = preg_replace($html_search, $html_replace, $html);

        $err = ['line' => __LINE__, 'file' => __FILE__, 'message' => "Could not clean up HTML!"];
        if ($html === null && rcube_utils::preg_error($err)) {
            return '';
        }

        // Replace all of those weird MS Word quotes and other high characters
        $badwordchars = [
            "\xe2\x80\x98", // left single quote
            "\xe2\x80\x99", // right single quote
            "\xe2\x80\x9c", // left double quote
            "\xe2\x80\x9d", // right double quote
            "\xe2\x80\x94", // em dash
            "\xe2\x80\xa6"  // ellipses
        ];

        $fixedwordchars = [
            "'",
            "'",
            '"',
            '"',
            '&mdash;',
            '...'
        ];

        $html = str_replace($badwordchars, $fixedwordchars, $html);

        // FIXME: HTML comments handling could be better. The code below can break comments (#6464),
        //        we should probably do not modify content inside comments at all.

        // fix (unknown/malformed) HTML tags before "wash"
        $html = preg_replace_callback('/(<(?!\!)[\/]*)([^\s>]+)([^>]*)/', [$this, 'html_tag_callback'], $html);

        // Remove invalid HTML comments (#1487759)
        // Note: We don't want to remove valid comments, conditional comments
        // and MSOutlook comments (<!-->)
        $html = preg_replace('/<!--[a-zA-Z0-9]+>/', '', $html);

        // fix broken nested lists
        self::fix_broken_lists($html);

        // turn relative into absolute urls
        $html = self::resolve_base($html);

        return $html;
    }

    /**
     * Callback function for HTML tags fixing
     *
     * @param array $matches Matched elements (from preg_replace_callback())
     *
     * @return string Replacement string
     */
    public static function html_tag_callback($matches)
    {
        // It might be an ending of a comment, ignore (#6464)
        if (substr($matches[3], -2) == '--') {
            $matches[0] = '';
            return implode('', $matches);
        }

        $tagname = $matches[2];
        $tagname = preg_replace([
                '/:.*$/',                // Microsoft's Smart Tags <st1:xxxx>
                '/[^a-z0-9_\[\]\!?-]/i', // forbidden characters
            ], '', $tagname
        );

        // fix invalid closing tags - remove any attributes (#1489446)
        if ($matches[1] == '</') {
            $matches[3] = '';
        }

        return $matches[1] . $tagname . $matches[3];
    }

    /**
     * Convert all relative URLs according to a <base> in HTML
     *
     * @param string $body HTML body
     *
     * @return string HTML body
     */
    public static function resolve_base($body)
    {
        // check for <base href=...>
        if (preg_match('!(<base.*href=["\']?)([hftps]{3,5}://[a-z0-9/.%-]+)!i', $body, $regs)) {
            $replacer = new rcube_base_replacer($regs[2]);
            $body     = $replacer->replace($body);
        }

        return $body;
    }

    /**
     * Fix broken nested lists, they are not handled properly by DOMDocument (#1488768)
     *
     * @param string &$html HTML content
     */
    public static function fix_broken_lists(&$html)
    {
        // do two rounds, one for <ol>, one for <ul>
        foreach (['ol', 'ul'] as $tag) {
            $pos = 0;
            while (($pos = stripos($html, '<' . $tag, $pos)) !== false) {
                $pos++;

                // make sure this is an ol/ul tag
                if (!in_array($html[$pos+2], [' ', '>'])) {
                    continue;
                }

                $p      = $pos;
                $in_li  = false;
                $li_pos = 0;

                while (($p = strpos($html, '<', $p)) !== false) {
                    $tt = strtolower(substr($html, $p, 4));

                    // li open tag
                    if ($tt == '<li>' || $tt == '<li ') {
                        $in_li = true;
                        $p += 4;
                    }
                    // li close tag
                    else if ($tt == '</li' && in_array($html[$p+4], [' ', '>'])) {
                        $li_pos = $p;
                        $in_li  = false;
                        $p += 4;
                    }
                    // ul/ol closing tag
                    else if ($tt == '</' . $tag && in_array($html[$p+4], [' ', '>'])) {
                        break;
                    }
                    // nested ol/ul element out of li
                    else if (!$in_li && $li_pos && ($tt == '<ol>' || $tt == '<ol ' || $tt == '<ul>' || $tt == '<ul ')) {
                        // find closing tag of this ul/ol element
                        $element = substr($tt, 1, 2);
                        $cpos    = $p;
                        do {
                            $tpos = stripos($html, '<' . $element, $cpos+1);
                            $cpos = stripos($html, '</' . $element, $cpos+1);
                        }
                        while ($tpos !== false && $cpos !== false && $cpos > $tpos);

                        // not found, this is invalid HTML, skip it
                        if ($cpos === false) {
                            break;
                        }

                        // get element content
                        $end     = strpos($html, '>', $cpos);
                        $len     = $end - $p + 1;
                        $element = substr($html, $p, $len);

                        // move element to the end of the last li
                        $html = substr_replace($html, '', $p, $len);
                        $html = substr_replace($html, $element, $li_pos, 0);

                        $p = $end;
                    }
                    else {
                        $p++;
                    }
                }
            }
        }
    }

    /**
     * Cleanup and workarounds on input to Masterminds/HTML5
     *
     * @param string $html HTML content
     *
     * @return string HTML content
     */
    protected function fix_html5($html)
    {
        // There might be content before html/body tag, we'll move it to the body
        // We'll wrap it by a div container, it's an invalid HTML anyway
        $prefix = '';
        if (strpos($html, '<')) {
            $pos     = stripos($html, '<!DOCTYPE') ?: stripos($html, '<html') ?: stripos($html, '<body');
            $prefix  = '<div>' . substr($html, 0, $pos) . '</div>';
            $html    = substr($html, $pos);
        }

        // HTML5 requires <head> or <body> (#6713)
        // https://github.com/Masterminds/html5-php/issues/166
        if (strlen($prefix) > 0 || !preg_match('/<(head|body)/i', $html)) {
            $body_pos = stripos($html, '<body');
            $pos      = $body_pos !== false ? $body_pos : stripos($html, '<html');

            // No HTML and no BODY tag
            if ($pos === false) {
                $html = '<html><body>' . $prefix . $html;
            }
            // Either HTML or BODY tag found
            else {
                $pos  = strpos($html, '>', $pos);
                $html = substr_replace($html, ($body_pos === false ? '<body>' : '') . $prefix, $pos + 1, 0);
            }
        }

        // Workaround for HTML5 issue with "invalid" table structure (#7356)
        $html = preg_replace('|<tr>\s*<tr>|', '<tr>', $html);
        $html = preg_replace('|</tr>\s*</tr>|', '</tr>', $html);

        return $html;
    }

    /**
     * Explode css style value
     *
     * @param string $style CSS style
     *
     * @return array List of CSS rules
     */
    protected function explode_style($style)
    {
        $result = [];
        $strlen = strlen($style);
        $q      = false;

        // explode value
        for ($p = $i = 0; $i < $strlen; $i++) {
            if (($style[$i] == "\"" || $style[$i] == "'") && ($i == 0 || $style[$i-1] != "\\")) {
                if ($q == $style[$i]) {
                    $q = false;
                }
                else if (!$q) {
                    $q = $style[$i];
                }
            }

            if (!$q && $style[$i] == ' ' && ($i == 0 || !preg_match('/[,\(]/', $style[$i-1]))) {
                $result[] = substr($style, $p, $i - $p);
                $p = $i + 1;
            }
        }

        $result[] = (string) substr($style, $p);

        return $result;
    }
}
lib/Roundcube/cache/redis.php000064400000016425151727150660012144 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching engine - Redis                                              |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface implementation class for accessing Redis cache
 *
 * @package    Framework
 * @subpackage Cache
 */
class rcube_cache_redis extends rcube_cache
{
    /**
     * Instance of Redis object
     *
     * @var Redis
     */
    protected static $redis;

    public function __construct($userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        parent::__construct($userid, $prefix, $ttl, $packed, $indexed);

        $rcube = rcube::get_instance();

        $this->type  = 'redis';
        $this->debug = $rcube->config->get('redis_debug');

        self::engine();
    }

    /**
     * Get global handle for redis access
     *
     * @return object Redis
     */
    public static function engine()
    {
        if (self::$redis !== null) {
            return self::$redis;
        }

        if (!class_exists('Redis')) {
            self::$redis = false;

            rcube::raise_error([
                    'code' => 604,
                    'type' => 'redis',
                    'line' => __LINE__,
                    'file' => __FILE__,
                    'message' => "Failed to find Redis. Make sure php-redis is included"
                ],
                true, true);
        }

        $rcube = rcube::get_instance();
        $hosts = $rcube->config->get('redis_hosts');

        // host config is wrong
        if (!is_array($hosts) || empty($hosts)) {
            rcube::raise_error([
                    'code' => 604,
                    'type' => 'redis',
                    'line' => __LINE__,
                    'file' => __FILE__,
                    'message' => "Redis host not configured"
                ],
                true, true);
        }

        // only allow 1 host for now until we support clustering
        if (count($hosts) > 1) {
            rcube::raise_error([
                    'code' => 604,
                    'type' => 'redis',
                    'line' => __LINE__,
                    'file' => __FILE__,
                    'message' => "Redis cluster not yet supported"
                ],
                true, true);
        }

        self::$redis = new Redis;
        $failures    = 0;

        foreach ($hosts as $redis_host) {
            // explode individual fields
            list($host, $port, $database, $password) = array_pad(explode(':', $redis_host, 4), 4, null);

            if (substr($redis_host, 0, 7) === 'unix://') {
                $host = substr($port, 2);
                $port = 0;
            }
            else {
                // set default values if not set
                $host = $host ?: '127.0.0.1';
                $port = $port ?: 6379;
            }

            try {
                if (self::$redis->connect($host, $port) === false) {
                    throw new Exception("Could not connect to Redis server. Please check host and port.");
                }

                if ($password !== null && self::$redis->auth($password) === false) {
                    throw new Exception("Could not authenticate with Redis server. Please check password.");
                }

                if ($database !== null && self::$redis->select($database) === false) {
                    throw new Exception("Could not select Redis database. Please check database setting.");
                }
            }
            catch (Exception $e) {
                rcube::raise_error($e, true, false);
                $failures++;
            }
        }

        if (count($hosts) === $failures) {
            self::$redis = false;
        }

        if (self::$redis) {
            try {
                $ping = self::$redis->ping();
                if ($ping !== true && $ping !== "+PONG") {
                    throw new Exception("Redis connection failure. Ping failed.");
                }
            }
            catch (Exception $e) {
                self::$redis = false;
                rcube::raise_error($e, true, false);
            }
        }

        return self::$redis;
    }

    /**
     * Remove cache records older than ttl
     */
    public function expunge()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Remove expired records
     */
    public static function gc()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Reads cache entry.
     *
     * @param string $key Cache internal key name
     *
     * @return mixed Cached value
     */
    protected function get_item($key)
    {
        if (!self::$redis) {
            return false;
        }

        try {
            $data = self::$redis->get($key);
        }
        catch (Exception $e) {
            rcube::raise_error($e, true, false);
            return false;
        }

        if ($this->debug) {
            $this->debug('get', $key, $data);
        }

        return $data;
    }

    /**
     * Adds entry into Redis.
     *
     * @param string $key  Cache internal key name
     * @param mixed  $data Serialized cache data
     *
     * @return bool True on success, False on failure
     */
    protected function add_item($key, $data)
    {
        if (!self::$redis) {
            return false;
        }

        try {
            $result = self::$redis->setEx($key, $this->ttl, $data);
        }
        catch (Exception $e) {
            rcube::raise_error($e, true, false);
            return false;
        }

        if ($this->debug) {
            $this->debug('set', $key, $data, $result);
        }

        return $result;
    }

    /**
     * Deletes entry from Redis.
     *
     * @param string $key Cache internal key name
     *
     * @return bool True on success, False on failure
     */
    protected function delete_item($key)
    {
        if (!self::$redis) {
            return false;
        }

        try {
            $fname  = method_exists(self::$redis, 'del') ? 'del' : 'delete';
            $result = self::$redis->$fname($key);
        }
        catch (Exception $e) {
            rcube::raise_error($e, true, false);
            return false;
        }

        if ($this->debug) {
            $this->debug('delete', $key, null, $result);
        }

        return $result;
    }
}
lib/Roundcube/cache/memcached.php000064400000014313151727150660012736 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching engine - Memcache                                           |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface implementation class for accessing Memcached cache
 *
 * @package    Framework
 * @subpackage Cache
 */
class rcube_cache_memcached extends rcube_cache
{
    /**
     * Instance of memcached handler
     *
     * @var Memcached
     */
    protected static $memcache;

    public function __construct($userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        parent::__construct($userid, $prefix, $ttl, $packed, $indexed);

        $this->type  = 'memcache';
        $this->debug = rcube::get_instance()->config->get('memcache_debug');

        // Maximum TTL is 30 days, bigger values are treated by Memcached
        // as unix timestamp which is not what we want
        if ($this->ttl > 60*60*24*30) {
            $this->ttl = 60*60*24*30;
        }

        self::engine();
    }

    /**
     * Get global handle for memcache access
     *
     * @return object Memcache
     */
    public static function engine()
    {
        if (self::$memcache !== null) {
            return self::$memcache;
        }

        // no memcache support in PHP
        if (!class_exists('Memcached')) {
            self::$memcache = false;

            rcube::raise_error([
                    'code' => 604, 'type' => 'memcache', 'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Failed to find Memcached. Make sure php-memcached is installed"
                ],
                true, true);
        }

        // add all configured hosts to pool
        $rcube          = rcube::get_instance();
        $pconnect       = $rcube->config->get('memcache_pconnect', true);
        $timeout        = $rcube->config->get('memcache_timeout', 1);
        $retry_interval = $rcube->config->get('memcache_retry_interval', 15);
        $hosts          = $rcube->config->get('memcache_hosts');
        $persistent_id  = $pconnect ? ('rc' . md5(serialize($hosts))) : null;

        self::$memcache = new Memcached($persistent_id);

        self::$memcache->setOptions([
                Memcached::OPT_CONNECT_TIMEOUT => $timeout * 1000,
                Memcached::OPT_RETRY_TIMEOUT   => $timeout,
                Memcached::OPT_DISTRIBUTION    => Memcached::DISTRIBUTION_CONSISTENT,
                Memcached::OPT_COMPRESSION     => true,
        ]);

        if (!$pconnect || !count(self::$memcache->getServerList())) {
            foreach ((array) $hosts as $host) {
                if (substr($host, 0, 7) != 'unix://') {
                    list($host, $port) = explode(':', $host);
                    if (!$port) $port = 11211;
                }
                else {
                    $host = substr($host, 7);
                    $port = 0;
                }

                self::$memcache->addServer($host, $port);
            }
        }

        // test connection
        $result = self::$memcache->increment('__CONNECTIONTEST__');

        if ($result === false && ($res_code = self::$memcache->getResultCode()) !== Memcached::RES_NOTFOUND) {
            self::$memcache = false;

            rcube::raise_error([
                    'code' => 604, 'type' => 'memcache', 'line' => __LINE__, 'file' => __FILE__,
                    'message' => "Memcache connection failure (code: $res_code)."
                ],
                true, false);
        }

        return self::$memcache;
    }

    /**
     * Remove cache records older than ttl
     */
    public function expunge()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Remove expired records of all caches
     */
    public static function gc()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Reads cache entry.
     *
     * @param string $key Cache internal key name
     *
     * @return mixed Cached value
     */
    protected function get_item($key)
    {
        if (!self::$memcache) {
            return false;
        }

        $data = self::$memcache->get($key);

        if ($this->debug) {
            $this->debug('get', $key, $data);
        }

        return $data;
    }

    /**
     * Adds entry into the cache.
     *
     * @param string $key  Cache internal key name
     * @param mixed  $data Serialized cache data
     *
     * @return bool True on success, False on failure
     */
    protected function add_item($key, $data)
    {
        if (!self::$memcache) {
            return false;
        }

        $result = self::$memcache->set($key, $data, $this->ttl);

        if ($this->debug) {
            $this->debug('set', $key, $data, $result);
        }

        return $result;
    }

    /**
     * Deletes entry from the cache
     *
     * @param string $key Cache internal key name
     *
     * @return bool True on success, False on failure
     */
    protected function delete_item($key)
    {
        if (!self::$memcache) {
            return false;
        }

        // #1488592: use 2nd argument
        $result = self::$memcache->delete($key, 0);

        if ($this->debug) {
            $this->debug('delete', $key, null, $result);
        }

        return $result;
    }
}
lib/Roundcube/cache/db.php000064400000016205151727150660011417 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching engine - SQL DB                                             |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface implementation class for accessing SQL Database cache
 *
 * @package    Framework
 * @subpackage Cache
 */
class rcube_cache_db extends rcube_cache
{
    /**
     * Instance of database handler
     *
     * @var rcube_db
     */
    protected $db;

    /**
     * (Escaped) Cache table name (cache or cache_shared)
     *
     * @var string
     */
    protected $table;

    public function __construct($userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        parent::__construct($userid, $prefix, $ttl, $packed, $indexed);

        $rcube = rcube::get_instance();

        $this->type  = 'db';
        $this->db    = $rcube->get_dbh();
        $this->table = $this->db->table_name($userid ? 'cache' : 'cache_shared', true);

        $this->refresh_time *= 2;
    }

    /**
     * Remove cache records older than ttl
     */
    public function expunge()
    {
        if ($this->ttl) {
            $this->db->query(
                "DELETE FROM {$this->table} WHERE "
                . ($this->userid ? "`user_id` = {$this->userid} AND " : "")
                . "`cache_key` LIKE ?"
                . " AND `expires` < " . $this->db->now(),
                $this->prefix . '.%');
        }
    }

    /**
     * Remove expired records of all caches
     */
    public static function gc()
    {
        $rcube = rcube::get_instance();
        $db    = $rcube->get_dbh();

        $db->query("DELETE FROM " . $db->table_name('cache', true) . " WHERE `expires` < " . $db->now());
        $db->query("DELETE FROM " . $db->table_name('cache_shared', true) . " WHERE `expires` < " . $db->now());
    }

    /**
     * Reads cache entry.
     *
     * @param string $key Cache key name
     *
     * @return mixed Cached value
     */
    protected function read_record($key)
    {
        $sql_result = $this->db->query(
                "SELECT `data`, `cache_key` FROM {$this->table} WHERE "
                . ($this->userid ? "`user_id` = {$this->userid} AND " : "")
                ."`cache_key` = ?",
                $this->prefix . '.' . $key);

        $data = null;

        if ($sql_arr = $this->db->fetch_assoc($sql_result)) {
            if (strlen($sql_arr['data']) > 0) {
                $data = $this->unserialize($sql_arr['data']);
            }

            $this->db->reset();
        }

        if (!$this->indexed) {
            $this->cache[$key] = $data;
        }

        return $data;
    }

    /**
     * Writes single cache record into DB.
     *
     * @param string   $key  Cache key name
     * @param mixed    $data Serialized cache data
     * @param DateTime $ts   Timestamp
     *
     * @return bool True on success, False on failure
     */
    protected function store_record($key, $data, $ts = null)
    {
        $value = $this->serialize($data);
        $size  = strlen($value);

        // don't attempt to write too big data sets
        if ($size > $this->max_packet_size()) {
            trigger_error("rcube_cache: max_packet_size ($this->max_packet) exceeded for key $key. Tried to write $size bytes", E_USER_WARNING);
            return false;
        }

        $db_key = $this->prefix . '.' . $key;

        // Remove NULL rows (here we don't need to check if the record exist)
        if ($value == 'N;') {
            $result = $this->db->query(
                "DELETE FROM {$this->table} WHERE "
                . ($this->userid ? "`user_id` = {$this->userid} AND " : "")
                ."`cache_key` = ?",
                $db_key);

            return !$this->db->is_error($result);
        }

        $expires = $this->db->param($this->ttl ? $this->db->now($this->ttl) : 'NULL', rcube_db::TYPE_SQL);
        $pkey    = ['cache_key' => $db_key];

        if ($this->userid) {
            $pkey['user_id'] = $this->userid;
        }

        $result = $this->db->insert_or_update(
            $this->table, $pkey, ['expires', 'data'], [$expires, $value]
        );

        $count = $this->db->affected_rows($result);

        return $count > 0;
    }

    /**
     * Deletes the cache record(s).
     *
     * @param string $key         Cache key name or pattern
     * @param bool   $prefix_mode Enable it to clear all keys starting
     *                            with prefix specified in $key
     */
    protected function remove_record($key = null, $prefix_mode = false)
    {
        // Remove all keys (in specified cache)
        if ($key === null) {
            $where = "`cache_key` LIKE " . $this->db->quote($this->prefix . '.%');
            $this->cache = [];
        }
        // Remove keys by name prefix
        else if ($prefix_mode) {
            $where = "`cache_key` LIKE " . $this->db->quote($this->prefix . '.' . $key . '%');
            foreach (array_keys($this->cache) as $k) {
                if (strpos($k, $key) === 0) {
                    $this->cache[$k] = null;
                }
            }
        }
        // Remove one key by name
        else {
            $where = "`cache_key` = " . $this->db->quote($this->prefix . '.' . $key);
            $this->cache[$key] = null;
        }

        $this->db->query(
            "DELETE FROM {$this->table} WHERE "
            . ($this->userid ? "`user_id` = {$this->userid} AND " : "") . $where
        );
    }

    /**
     * Serializes data for storing
     */
    protected function serialize($data)
    {
        return $this->db->encode($data, $this->packed);
    }

    /**
     * Unserializes serialized data
     */
    protected function unserialize($data)
    {
        return $this->db->decode($data, $this->packed);
    }

    /**
     * Determine the maximum size for cache data to be written
     */
    protected function max_packet_size()
    {
        if ($this->max_packet < 0) {
            $this->max_packet = 2097152; // default/max is 2 MB

            if ($value = $this->db->get_variable('max_allowed_packet', $this->max_packet)) {
                $this->max_packet = $value;
            }

            $this->max_packet -= 2000;
        }

        return $this->max_packet;
    }
}
lib/Roundcube/cache/memcache.php000064400000014012151727150670012567 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching engine - Memcache                                           |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface implementation class for accessing Memcache cache
 *
 * @package    Framework
 * @subpackage Cache
 */
class rcube_cache_memcache extends rcube_cache
{
    /**
     * Instance of memcache handler
     *
     * @var Memcache
     */
    protected static $memcache;

    public function __construct($userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        parent::__construct($userid, $prefix, $ttl, $packed, $indexed);

        $this->type  = 'memcache';
        $this->debug = rcube::get_instance()->config->get('memcache_debug');

        self::engine();
    }

    /**
     * Get global handle for memcache access
     *
     * @return object Memcache
     */
    public static function engine()
    {
        if (self::$memcache !== null) {
            return self::$memcache;
        }

        // no memcache support in PHP
        if (!class_exists('Memcache')) {
            self::$memcache = false;

            rcube::raise_error([
                    'code' => 604,
                    'type' => 'memcache',
                    'line' => __LINE__,
                    'file' => __FILE__,
                    'message' => "Failed to find Memcache. Make sure php-memcache is included"
                ],
                true, true);
        }

        // add all configured hosts to pool
        $rcube = rcube::get_instance();
        $pconnect       = $rcube->config->get('memcache_pconnect', true);
        $timeout        = $rcube->config->get('memcache_timeout', 1);
        $retry_interval = $rcube->config->get('memcache_retry_interval', 15);
        $seen           = [];
        $available      = 0;

        // Callback for memcache failure
        $error_callback = function($host, $port) use ($seen, $available) {
            // only report once
            if (!$seen["$host:$port"]++) {
                $available--;
                rcube::raise_error([
                        'code' => 604, 'type' => 'memcache',
                        'line' => __LINE__, 'file' => __FILE__,
                        'message' => "Memcache failure on host $host:$port"
                    ],
                    true, false);
            }
        };

        self::$memcache = new Memcache;

        foreach ((array) $rcube->config->get('memcache_hosts') as $host) {
            if (substr($host, 0, 7) != 'unix://') {
                list($host, $port) = explode(':', $host);
                if (!$port) $port = 11211;
            }
            else {
                $port = 0;
            }

            $available += intval(self::$memcache->addServer(
                $host, $port, $pconnect, 1, $timeout, $retry_interval, false, $error_callback));
        }

        // test connection and failover (will result in $available == 0 on complete failure)
        self::$memcache->increment('__CONNECTIONTEST__', 1);  // NOP if key doesn't exist

        if (!$available) {
            self::$memcache = false;
        }

        return self::$memcache;
    }

    /**
     * Remove cache records older than ttl
     */
    public function expunge()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Remove expired records of all caches
     */
    public static function gc()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Reads cache entry.
     *
     * @param string $key Cache internal key name
     *
     * @return mixed Cached value
     */
    protected function get_item($key)
    {
        if (!self::$memcache) {
            return false;
        }

        $data = self::$memcache->get($key);

        if ($this->debug) {
            $this->debug('get', $key, $data);
        }

        return $data;
    }

    /**
     * Adds entry into the cache.
     *
     * @param string $key  Cache internal key name
     * @param mixed  $data Serialized cache data
     *
     * @return bool True on success, False on failure
     */
    protected function add_item($key, $data)
    {
        if (!self::$memcache) {
            return false;
        }

        $result = self::$memcache->replace($key, $data, MEMCACHE_COMPRESSED, $this->ttl);

        if (!$result) {
            $result = self::$memcache->set($key, $data, MEMCACHE_COMPRESSED, $this->ttl);
        }

        if ($this->debug) {
            $this->debug('set', $key, $data, $result);
        }

        return $result;
    }

    /**
     * Deletes entry from the cache
     *
     * @param string $key Cache internal key name
     *
     * @return bool True on success, False on failure
     */
    protected function delete_item($key)
    {
        if (!self::$memcache) {
            return false;
        }

        // #1488592: use 2nd argument
        $result = self::$memcache->delete($key, 0);

        if ($this->debug) {
            $this->debug('delete', $key, null, $result);
        }

        return $result;
    }
}
lib/Roundcube/cache/apc.php000064400000007162151727150670011600 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Caching engine - APC                                                |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface implementation class for accessing APC cache
 *
 * @package    Framework
 * @subpackage Cache
 */
class rcube_cache_apc extends rcube_cache
{
    /**
     * Indicates if APC module is enabled and in a required version
     *
     * @var bool
     */
    protected $enabled;

    public function __construct($userid, $prefix = '', $ttl = 0, $packed = true, $indexed = false)
    {
        parent::__construct($userid, $prefix, $ttl, $packed, $indexed);

        $rcube = rcube::get_instance();

        $this->type    = 'apc';
        $this->enabled = function_exists('apc_exists'); // APC 3.1.4 required
        $this->debug   = $rcube->config->get('apc_debug');
    }

    /**
     * Remove cache records older than ttl
     */
    public function expunge()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Remove expired records of all caches
     */
    public static function gc()
    {
        // No need for GC, entries are expunged automatically
    }

    /**
     * Reads cache entry.
     *
     * @param string $key Cache internal key name
     *
     * @return mixed Cached value
     */
    protected function get_item($key)
    {
        if (!$this->enabled) {
            return false;
        }

        $data = apc_fetch($key);

        if ($this->debug) {
            $this->debug('get', $key, $data);
        }

        return $data;
    }

    /**
     * Adds entry into memcache/apc/redis DB.
     *
     * @param string $key  Cache internal key name
     * @param mixed  $data Serialized cache data
     *
     * @return bool True on success, False on failure
     */
    protected function add_item($key, $data)
    {
        if (!$this->enabled) {
            return false;
        }

        if (apc_exists($key)) {
            apc_delete($key);
        }

        $result = apc_store($key, $data, $this->ttl);

        if ($this->debug) {
            $this->debug('set', $key, $data, $result);
        }

        return $result;
    }

    /**
     * Deletes entry from memcache/apc/redis DB.
     *
     * @param string $key Cache internal key name
     *
     * @return bool True on success, False on failure
     */
    protected function delete_item($key)
    {
        if (!$this->enabled) {
            return false;
        }

        $result = apc_delete($key);

        if ($this->debug) {
            $this->debug('delete', $key, null, $result);
        }

        return $result;
    }
}
lib/Roundcube/rcube_imap.php000064400000454561151727150670012111 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   IMAP Storage Engine                                                 |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Interface class for accessing an IMAP server
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_imap extends rcube_storage
{
    /**
     * Instance of rcube_imap_generic
     *
     * @var rcube_imap_generic
     */
    public $conn;

    /**
     * Instance of rcube_imap_cache
     *
     * @var rcube_imap_cache
     */
    protected $mcache;

    /**
     * Instance of rcube_cache
     *
     * @var rcube_cache
     */
    protected $cache;

    protected $plugins;
    protected $delimiter;
    protected $namespace;
    protected $struct_charset;
    protected $search_set;
    protected $search_string     = '';
    protected $search_charset    = '';
    protected $search_sort_field = '';
    protected $search_threads    = false;
    protected $search_sorted     = false;
    protected $sort_field        = '';
    protected $sort_order        = 'DESC';
    protected $options           = ['auth_type' => 'check', 'skip_deleted' => false];
    protected $caching           = false;
    protected $messages_caching  = false;
    protected $threading         = false;
    protected $connect_done      = false;
    protected $list_excludes     = [];
    protected $list_root;
    protected $msg_uid;
    protected $sort_folder_collator;


    /**
     * Object constructor.
     */
    public function __construct()
    {
        $this->conn    = new rcube_imap_generic();
        $this->plugins = rcube::get_instance()->plugins;

        // Set namespace and delimiter from session,
        // so some methods would work before connection
        if (isset($_SESSION['imap_namespace'])) {
            $this->namespace = $_SESSION['imap_namespace'];
        }
        if (isset($_SESSION['imap_delimiter'])) {
            $this->delimiter = $_SESSION['imap_delimiter'];
        }
        if (!empty($_SESSION['imap_list_conf'])) {
            list($this->list_root, $this->list_excludes) = $_SESSION['imap_list_conf'];
        }
    }

    /**
     * Magic getter for backward compat.
     *
     * @deprecated
     */
    public function __get($name)
    {
        if (isset($this->{$name})) {
            return $this->{$name};
        }
    }

    /**
     * Connect to an IMAP server
     *
     * @param string $host    Host to connect
     * @param string $user    Username for IMAP account
     * @param string $pass    Password for IMAP account
     * @param int    $port    Port to connect to
     * @param string $use_ssl SSL schema (either ssl or tls) or null if plain connection
     *
     * @return bool True on success, False on failure
     */
    public function connect($host, $user, $pass, $port = 143, $use_ssl = null)
    {
        // check for OpenSSL support in PHP build
        if ($use_ssl && extension_loaded('openssl')) {
            $this->options['ssl_mode'] = $use_ssl == 'imaps' ? 'ssl' : $use_ssl;
        }
        else if ($use_ssl) {
            rcube::raise_error([
                    'code' => 403, 'type' => 'imap',
                    'file' => __FILE__, 'line' => __LINE__,
                    'message' => "OpenSSL not available"
                ], true, false);

            $port = 143;
        }

        $this->options['port'] = $port;

        if (!empty($this->options['debug'])) {
            $this->set_debug(true);

            $this->options['ident'] = [
                'name'    => 'Roundcube',
                'version' => RCUBE_VERSION,
                'php'     => PHP_VERSION,
                'os'      => PHP_OS,
                'command' => $_SERVER['REQUEST_URI'] ?? '',
            ];
        }

        $attempt = 0;
        do {
            $data = [
                'host'    => $host,
                'user'    => $user,
                'attempt' => ++$attempt,
                'retry'   => false
            ];

            $data = $this->plugins->exec_hook('storage_connect', array_merge($this->options, $data));

            if ($attempt > 1 && !$data['retry']) {
                break;
            }

            if (!empty($data['pass'])) {
                $pass = $data['pass'];
            }

            // Handle per-host socket options
            if (isset($data['socket_options'])) {
                rcube_utils::parse_socket_options($data['socket_options'], $data['host']);
            }

            $this->conn->connect($data['host'], $data['user'], $pass, $data);
        } while(!$this->conn->connected() && $data['retry']);

        $config = [
            'host'     => $data['host'],
            'user'     => $data['user'],
            'password' => $pass,
            'port'     => $port,
            'ssl'      => $use_ssl,
        ];

        $this->options      = array_merge($this->options, $config);
        $this->connect_done = true;

        if ($this->conn->connected()) {
            // check for session identifier
            $session = null;
            if (preg_match('/\s+SESSIONID=([^=\s]+)/', $this->conn->result, $m)) {
                $session = $m[1];
            }

            // get namespace and delimiter
            $this->set_env();

            // trigger post-connect hook
            $this->plugins->exec_hook('storage_connected', [
                    'host' => $host, 'user' => $user, 'session' => $session
            ]);

            return true;
        }
        // write error log
        else if ($this->conn->error) {
            if ($pass && $user) {
                $message = sprintf("Login failed for %s against %s from %s. %s",
                    $user, $host, rcube_utils::remote_ip(), $this->conn->error);

                rcube::raise_error([
                        'code' => 403, 'type' => 'imap',
                        'file' => __FILE__, 'line' => __LINE__,
                        'message' => $message
                    ], true, false);
            }
        }

        return false;
    }

    /**
     * Close IMAP connection.
     * Usually done on script shutdown
     */
    public function close()
    {
        $this->connect_done = false;
        $this->conn->closeConnection();

        if ($this->mcache) {
            $this->mcache->close();
        }
    }

    /**
     * Check connection state, connect if not connected.
     *
     * @return bool Connection state.
     */
    public function check_connection()
    {
        // Establish connection if it wasn't done yet
        if (!$this->connect_done && !empty($this->options['user'])) {
            return $this->connect(
                $this->options['host'],
                $this->options['user'],
                $this->options['password'],
                $this->options['port'],
                $this->options['ssl']
            );
        }

        return $this->is_connected();
    }

    /**
     * Checks IMAP connection.
     *
     * @return bool True on success, False on failure
     */
    public function is_connected()
    {
        return $this->conn->connected();
    }

    /**
     * Returns code of last error
     *
     * @return int Error code
     */
    public function get_error_code()
    {
        return $this->conn->errornum;
    }

    /**
     * Returns text of last error
     *
     * @return string Error string
     */
    public function get_error_str()
    {
        return $this->conn->error;
    }

    /**
     * Returns code of last command response
     *
     * @return int Response code
     */
    public function get_response_code()
    {
        switch ($this->conn->resultcode) {
            case 'NOPERM':
                return self::NOPERM;
            case 'READ-ONLY':
                return self::READONLY;
            case 'TRYCREATE':
                return self::TRYCREATE;
            case 'INUSE':
                return self::INUSE;
            case 'OVERQUOTA':
                return self::OVERQUOTA;
            case 'ALREADYEXISTS':
                return self::ALREADYEXISTS;
            case 'NONEXISTENT':
                return self::NONEXISTENT;
            case 'CONTACTADMIN':
                return self::CONTACTADMIN;
            default:
                return self::UNKNOWN;
        }
    }

    /**
     * Activate/deactivate debug mode
     *
     * @param bool $dbg True if IMAP conversation should be logged
     */
    public function set_debug($dbg = true)
    {
        $this->options['debug'] = $dbg;
        $this->conn->setDebug($dbg, [$this, 'debug_handler']);
    }

    /**
     * Set internal folder reference.
     * All operations will be performed on this folder.
     *
     * @param string $folder Folder name
     */
    public function set_folder($folder)
    {
        $this->folder = $folder;
    }

    /**
     * Save a search result for future message listing methods
     *
     * @param array $set Search set, result from rcube_imap::get_search_set():
     *                   0 - searching criteria, string
     *                   1 - search result, rcube_result_index|rcube_result_thread
     *                   2 - searching character set, string
     *                   3 - sorting field, string
     *                   4 - true if sorted, bool
     */
    public function set_search_set($set)
    {
        $set = (array) $set;

        $this->search_string     = $set[0] ?? null;
        $this->search_set        = $set[1] ?? null;
        $this->search_charset    = $set[2] ?? null;
        $this->search_sort_field = $set[3] ?? null;
        $this->search_sorted     = $set[4] ?? null;
        $this->search_threads    = is_a($this->search_set, 'rcube_result_thread');

        if (is_a($this->search_set, 'rcube_result_multifolder')) {
            $this->set_threading(false);
        }
    }

    /**
     * Return the saved search set as hash array
     *
     * @return array|null Search set
     */
    public function get_search_set()
    {
        if (empty($this->search_set)) {
            return null;
        }

        return [
            $this->search_string,
            $this->search_set,
            $this->search_charset,
            $this->search_sort_field,
            $this->search_sorted,
        ];
    }

    /**
     * Returns the IMAP server's capability.
     *
     * @param string $cap Capability name
     *
     * @return mixed Capability value or TRUE if supported, FALSE if not
     */
    public function get_capability($cap)
    {
        $cap      = strtoupper($cap);
        $sess_key = "STORAGE_$cap";

        if (!isset($_SESSION[$sess_key])) {
            if (!$this->check_connection()) {
                return false;
            }

            if ($cap == rcube_storage::DUAL_USE_FOLDERS) {
                $_SESSION[$sess_key] = $this->detect_dual_use_folders();
            }
            else {
                $_SESSION[$sess_key] = $this->conn->getCapability($cap);
            }
        }

        return $_SESSION[$sess_key];
    }

    /**
     * Checks the PERMANENTFLAGS capability of the current folder
     * and returns true if the given flag is supported by the IMAP server
     *
     * @param string $flag Permanentflag name
     *
     * @return bool True if this flag is supported
     */
    public function check_permflag($flag)
    {
        $flag       = strtoupper($flag);
        $perm_flags = $this->get_permflags($this->folder);
        $imap_flag  = $this->conn->flags[$flag];

        return $imap_flag && !empty($perm_flags) && in_array_nocase($imap_flag, $perm_flags);
    }

    /**
     * Returns PERMANENTFLAGS of the specified folder
     *
     * @param string $folder Folder name
     *
     * @return array Flags
     */
    public function get_permflags($folder)
    {
        if (!strlen($folder)) {
            return [];
        }

        if (!$this->check_connection()) {
            return [];
        }

        if ($this->conn->select($folder)) {
            $permflags = $this->conn->data['PERMANENTFLAGS'];
        }
        else {
            return [];
        }

        if (!isset($permflags) || !is_array($permflags)) {
            $permflags = [];
        }

        return $permflags;
    }

    /**
     * Returns the delimiter that is used by the IMAP server for folder separation
     *
     * @return string Delimiter string
     */
    public function get_hierarchy_delimiter()
    {
        return $this->delimiter;
    }

    /**
     * Get namespace
     *
     * @param string $name Namespace array index: personal, other, shared, prefix
     *
     * @return array Namespace data
     */
    public function get_namespace($name = null)
    {
        $ns = $this->namespace;

        if ($name) {
            // an alias for BC
            if ($name == 'prefix') {
                $name = 'prefix_in';
            }

            return $ns[$name] ?? null;
        }

        unset($ns['prefix_in'], $ns['prefix_out']);

        return $ns;
    }

    /**
     * Sets delimiter and namespaces
     */
    protected function set_env()
    {
        if ($this->delimiter !== null && $this->namespace !== null) {
            return;
        }

        $config         = rcube::get_instance()->config;
        $imap_personal  = $config->get('imap_ns_personal');
        $imap_other     = $config->get('imap_ns_other');
        $imap_shared    = $config->get('imap_ns_shared');
        $imap_delimiter = $config->get('imap_delimiter');

        if (!$this->check_connection()) {
            return;
        }

        $ns = $this->conn->getNamespace();

        // Set namespaces (NAMESPACE supported)
        if (is_array($ns)) {
            $this->namespace = $ns;
        }
        else {
            $this->namespace = [
                'personal' => null,
                'other'    => null,
                'shared'   => null,
            ];
        }

        if ($imap_delimiter) {
            $this->delimiter = $imap_delimiter;
        }
        if (empty($this->delimiter) && !empty($this->namespace['personal'][0][1])) {
            $this->delimiter = $this->namespace['personal'][0][1];
        }
        if (empty($this->delimiter)) {
            $this->delimiter = $this->conn->getHierarchyDelimiter();
        }
        if (empty($this->delimiter)) {
            $this->delimiter = '/';
        }

        $this->list_root     = null;
        $this->list_excludes = [];

        // Overwrite namespaces
        if ($imap_personal !== null) {
            $this->namespace['personal'] = null;
            foreach ((array) $imap_personal as $dir) {
                $this->namespace['personal'][] = [$dir, $this->delimiter];
            }
        }

        if ($imap_other === false) {
            foreach ((array) $this->namespace['other'] as $dir) {
                if (is_array($dir) && !empty($dir[0])) {
                    $this->list_excludes[] = $dir[0];
                }
            }

            $this->namespace['other'] = null;
        }
        else if ($imap_other !== null) {
            $this->namespace['other'] = null;
            foreach ((array) $imap_other as $dir) {
                if ($dir) {
                    $this->namespace['other'][] = [$dir, $this->delimiter];
                }
            }
        }

        if ($imap_shared === false) {
            foreach ((array) $this->namespace['shared'] as $dir) {
                if (is_array($dir) && !empty($dir[0])) {
                    $this->list_excludes[] = $dir[0];
                }
            }

            $this->namespace['shared'] = null;
        }
        else if ($imap_shared !== null) {
            $this->namespace['shared'] = null;
            foreach ((array) $imap_shared as $dir) {
                if ($dir) {
                    $this->namespace['shared'][] = [$dir, $this->delimiter];
                }
            }
        }

        // Performance optimization for case where we have no shared/other namespace
        // and personal namespace has one prefix (#5073)
        // In such a case we can tell the server to return only content of the
        // specified folder in LIST/LSUB, no post-filtering
        if (empty($this->namespace['other']) && empty($this->namespace['shared'])
            && !empty($this->namespace['personal']) && count($this->namespace['personal']) === 1
            && strlen($this->namespace['personal'][0][0]) > 1
        ) {
            $this->list_root     = $this->namespace['personal'][0][0];
            $this->list_excludes = [];
        }

        // Find personal namespace prefix(es) for self::mod_folder()
        if (!empty($this->namespace['personal']) && is_array($this->namespace['personal'])) {
            // There can be more than one namespace root,
            // - for prefix_out get the first one but only
            //   if there is only one root
            // - for prefix_in get the first one but only
            //   if there is no non-prefixed namespace root (#5403)
            $roots = [];
            foreach ($this->namespace['personal'] as $ns) {
                $roots[] = $ns[0];
            }

            if (!in_array('', $roots)) {
                $this->namespace['prefix_in'] = $roots[0];
            }
            if (count($roots) == 1) {
                $this->namespace['prefix_out'] = $roots[0];
            }
        }

        $_SESSION['imap_namespace'] = $this->namespace;
        $_SESSION['imap_delimiter'] = $this->delimiter;
        $_SESSION['imap_list_conf'] = [$this->list_root, $this->list_excludes];
    }

    /**
     * Returns IMAP server vendor name
     *
     * @return string Vendor name
     * @since 1.2
     */
    public function get_vendor()
    {
        if (isset($_SESSION['imap_vendor'])) {
            return $_SESSION['imap_vendor'];
        }

        $config      = rcube::get_instance()->config;
        $imap_vendor = $config->get('imap_vendor');

        if ($imap_vendor) {
            return $imap_vendor;
        }

        if (!$this->check_connection()) {
            return;
        }

        if (isset($this->conn->data['ID'])) {
            $ident = $this->conn->data['ID'];
        }
        else if ($this->get_capability('ID')) {
            $ident = $this->conn->id([
                    'name'    => 'Roundcube',
                    'version' => RCUBE_VERSION,
                    'php'     => PHP_VERSION,
                    'os'      => PHP_OS,
            ]);
        }
        else {
            $ident = null;
        }

        $vendor  = (string) (!empty($ident) ? $ident['name'] : '');
        $ident   = strtolower($vendor . ' ' . $this->conn->data['GREETING']);
        $vendors = ['cyrus', 'dovecot', 'uw-imap', 'gimap', 'hmail', 'greenmail'];

        foreach ($vendors as $v) {
            if (strpos($ident, $v) !== false) {
                $vendor = $v;
                break;
            }
        }

        return $_SESSION['imap_vendor'] = $vendor;
    }

    /**
     * Get message count for a specific folder
     *
     * @param string $folder  Folder name
     * @param string $mode    Mode for count [ALL|THREADS|UNSEEN|RECENT|EXISTS]
     * @param bool   $force   Force reading from server and update cache
     * @param bool   $status  Enables storing folder status info (max UID/count),
     *                        required for folder_status()
     *
     * @return int Number of messages
     */
    public function count($folder = '', $mode = 'ALL', $force = false, $status = true)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        return $this->countmessages($folder, $mode, $force, $status);
    }

    /**
     * Protected method for getting number of messages
     *
     * @param string $folder    Folder name
     * @param string $mode      Mode for count [ALL|THREADS|UNSEEN|RECENT|EXISTS]
     * @param bool   $force     Force reading from server and update cache
     * @param bool   $status    Enables storing folder status info (max UID/count),
     *                          required for folder_status()
     * @param bool   $no_search Ignore current search result
     *
     * @return int Number of messages
     * @see rcube_imap::count()
     */
    protected function countmessages($folder, $mode = 'ALL', $force = false, $status = true, $no_search = false)
    {
        $mode = strtoupper($mode);

        // Count search set, assume search set is always up-to-date (don't check $force flag)
        // @TODO: this could be handled in more reliable way, e.g. a separate method
        //        maybe in rcube_imap_search
        if (!$no_search && $this->search_string && $folder == $this->folder) {
            if ($mode == 'ALL') {
                return $this->search_set->count_messages();
            }
            if ($mode == 'THREADS') {
                return $this->search_set->count();
            }
        }

        // EXISTS is a special alias for ALL, it allows to get the number
        // of all messages in a folder also when search is active and with
        // any skip_deleted setting

        $a_folder_cache = $this->get_cache('messagecount');

        // return cached value
        if (!$force && isset($a_folder_cache[$folder][$mode])) {
            return $a_folder_cache[$folder][$mode];
        }

        if (!isset($a_folder_cache[$folder]) || !is_array($a_folder_cache[$folder])) {
            $a_folder_cache[$folder] = [];
        }

        if ($mode == 'THREADS') {
            $res   = $this->threads($folder);
            $count = $res->count();

            if ($status) {
                $msg_count = $res->count_messages();
                $this->set_folder_stats($folder, 'cnt', $msg_count);
                $this->set_folder_stats($folder, 'maxuid', $msg_count ? $this->id2uid($msg_count, $folder) : 0);
            }
        }
        // Need connection here
        else if (!$this->check_connection()) {
            return 0;
        }
        // RECENT count is fetched a bit different
        else if ($mode == 'RECENT') {
            $count = $this->conn->countRecent($folder);
        }
        // use SEARCH for message counting
        else if ($mode != 'EXISTS' && !empty($this->options['skip_deleted'])) {
            $search_str = "ALL UNDELETED";
            $keys       = ['COUNT'];

            if ($mode == 'UNSEEN') {
                $search_str .= " UNSEEN";
            }
            else {
                if ($this->messages_caching) {
                    $keys[] = 'ALL';
                }
                if ($status) {
                    $keys[] = 'MAX';
                }
            }

            // @TODO: if $mode == 'ALL' we could try to use cache index here

            // get message count using (E)SEARCH
            // not very performant but more precise (using UNDELETED)
            $index = $this->conn->search($folder, $search_str, true, $keys);
            $count = $index->count();

            if ($mode == 'ALL') {
                // Cache index data, will be used in index_direct()
                $this->icache['undeleted_idx'] = $index;

                if ($status) {
                    $this->set_folder_stats($folder, 'cnt', $count);
                    $this->set_folder_stats($folder, 'maxuid', $index->max());
                }
            }
        }
        else {
            if ($mode == 'UNSEEN') {
                $count = $this->conn->countUnseen($folder);
            }
            else {
                $count = $this->conn->countMessages($folder);
                if ($status && $mode == 'ALL') {
                    $this->set_folder_stats($folder, 'cnt', $count);
                    $this->set_folder_stats($folder, 'maxuid', $count ? $this->id2uid($count, $folder) : 0);
                }
            }
        }

        $count = (int) $count;

        if (!isset($a_folder_cache[$folder][$mode]) || $a_folder_cache[$folder][$mode] !== $count) {
            $a_folder_cache[$folder][$mode] = $count;

            // write back to cache
            $this->update_cache('messagecount', $a_folder_cache);
        }

        return $count;
    }

    /**
     * Public method for listing message flags
     *
     * @param string $folder  Folder name
     * @param array  $uids    Message UIDs
     * @param int    $mod_seq Optional MODSEQ value (of last flag update)
     *
     * @return array Indexed array with message flags
     */
    public function list_flags($folder, $uids, $mod_seq = null)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        if (!$this->check_connection()) {
            return [];
        }

        // @TODO: when cache was synchronized in this request
        // we might already have asked for flag updates, use it.

        $flags  = $this->conn->fetch($folder, $uids, true, ['FLAGS'], $mod_seq);
        $result = [];

        if (!empty($flags)) {
            foreach ($flags as $message) {
                $result[$message->uid] = $message->flags;
            }
        }

        return $result;
    }

    /**
     * Public method for listing headers
     *
     * @param string $folder     Folder name
     * @param int    $page       Current page to list
     * @param string $sort_field Header field to sort by
     * @param string $sort_order Sort order [ASC|DESC]
     * @param int    $slice      Number of slice items to extract from result array
     *
     * @return array Indexed array with message header objects
     */
    public function list_messages($folder = '', $page = null, $sort_field = null, $sort_order = null, $slice = 0)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        return $this->_list_messages($folder, $page, $sort_field, $sort_order, $slice);
    }

    /**
     * protected method for listing message headers
     *
     * @param   string   $folder     Folder name
     * @param   int      $page       Current page to list
     * @param   string   $sort_field Header field to sort by
     * @param   string   $sort_order Sort order [ASC|DESC]
     * @param   int      $slice      Number of slice items to extract from result array
     *
     * @return array Indexed array with message header objects
     * @see rcube_imap::list_messages
     */
    protected function _list_messages($folder = '', $page = null, $sort_field = null, $sort_order = null, $slice = 0)
    {
        if (!is_string($folder) || !strlen($folder)) {
            return [];
        }

        $this->set_sort_order($sort_field, $sort_order);
        $page = $page ?: $this->list_page;

        // use saved message set
        if ($this->search_string) {
            return $this->list_search_messages($folder, $page, $slice);
        }

        if ($this->threading) {
            return $this->list_thread_messages($folder, $page, $slice);
        }

        // get UIDs of all messages in the folder, sorted
        $index = $this->index($folder, $this->sort_field, $this->sort_order);

        if ($index->is_empty()) {
            return [];
        }

        $from = ($page-1) * $this->page_size;
        $to   = $from + $this->page_size;

        $index->slice($from, $to - $from);

        if ($slice) {
            $index->slice(-$slice, $slice);
        }

        // fetch requested messages headers
        $a_index = $index->get();
        $a_msg_headers = $this->fetch_headers($folder, $a_index);

        return array_values($a_msg_headers);
    }

    /**
     * protected method for listing message headers using threads
     *
     * @param string $folder Folder name
     * @param int    $page   Current page to list
     * @param int    $slice  Number of slice items to extract from result array
     *
     * @return array Indexed array with message header objects
     * @see rcube_imap::list_messages
     */
    protected function list_thread_messages($folder, $page, $slice = 0)
    {
        // get all threads (not sorted)
        if ($mcache = $this->get_mcache_engine()) {
            $threads = $mcache->get_thread($folder);
        }
        else {
            $threads = $this->threads($folder);
        }

        return $this->fetch_thread_headers($folder, $threads, $page, $slice);
    }

    /**
     * Method for fetching threads data
     *
     * @param string $folder Folder name
     *
     * @return rcube_result_thread Thread data object
     */
    function threads($folder)
    {
        if ($mcache = $this->get_mcache_engine()) {
            // don't store in self's internal cache, cache has it's own internal cache
            return $mcache->get_thread($folder);
        }

        if (!empty($this->icache['threads'])) {
            if ($this->icache['threads']->get_parameters('MAILBOX') == $folder) {
                return $this->icache['threads'];
            }
        }

        // get all threads
        $result = $this->threads_direct($folder);

        // add to internal (fast) cache
        return $this->icache['threads'] = $result;
    }

    /**
     * Method for direct fetching of threads data
     *
     * @param string $folder Folder name
     *
     * @return rcube_result_thread Thread data object
     */
    function threads_direct($folder)
    {
        if (!$this->check_connection()) {
            return new rcube_result_thread();
        }

        // get all threads
        return $this->conn->thread($folder, $this->threading,
            $this->options['skip_deleted'] ? 'UNDELETED' : '', true);
    }

    /**
     * protected method for fetching threaded messages headers
     *
     * @param string              $folder     Folder name
     * @param rcube_result_thread $threads    Threads data object
     * @param int                 $page       List page number
     * @param int                 $slice      Number of threads to slice
     *
     * @return array Messages headers
     */
    protected function fetch_thread_headers($folder, $threads, $page, $slice = 0)
    {
        // Sort thread structure
        $this->sort_threads($threads);

        $from = ($page-1) * $this->page_size;
        $to   = $from + $this->page_size;

        $threads->slice($from, $to - $from);

        if ($slice) {
            $threads->slice(-$slice, $slice);
        }

        // Get UIDs of all messages in all threads
        $a_index = $threads->get();

        // fetch requested headers from server
        $a_msg_headers = $this->fetch_headers($folder, $a_index);

        unset($a_index);

        // Set depth, has_children and unread_children fields in headers
        $this->set_thread_flags($a_msg_headers, $threads);

        return array_values($a_msg_headers);
    }

    /**
     * protected method for setting threaded messages flags:
     * depth, has_children, unread_children, flagged_children
     *
     * @param array               $headers  Reference to headers array indexed by message UID
     * @param rcube_result_thread $threads  Threads data object
     *
     * @return array Message headers array indexed by message UID
     */
    protected function set_thread_flags(&$headers, $threads)
    {
        $parents = [];

        list($msg_depth, $msg_children) = $threads->get_thread_data();

        foreach ($headers as $uid => $header) {
            $depth = $msg_depth[$uid] ?? 0;
            $parents = array_slice($parents, 0, $depth);

            if (!empty($parents)) {
                $headers[$uid]->parent_uid = end($parents);
                if (empty($header->flags['SEEN'])) {
                    $headers[$parents[0]]->unread_children++;
                }
                if (!empty($header->flags['FLAGGED'])) {
                    $headers[$parents[0]]->flagged_children++;
                }
            }

            array_push($parents, $uid);

            $headers[$uid]->depth            = $depth;
            $headers[$uid]->has_children     = !empty($msg_children[$uid]);
            $headers[$uid]->unread_children  = 0;
            $headers[$uid]->flagged_children = 0;
        }
    }

    /**
     * A protected method for listing a set of message headers (search results)
     *
     * @param string $folder Folder name
     * @param int    $page   Current page to list
     * @param int    $slice  Number of slice items to extract from the result array
     *
     * @return array Indexed array with message header objects
     */
    protected function list_search_messages($folder, $page, $slice = 0)
    {
        if (!is_string($folder) || !strlen($folder) || empty($this->search_set) || $this->search_set->is_empty()) {
            return [];
        }

        $from = ($page-1) * $this->page_size;

        // gather messages from a multi-folder search
        if (!empty($this->search_set->multi)) {
            $page_size  = $this->page_size;
            $sort_field = $this->sort_field;
            $search_set = $this->search_set;

            // fetch resultset headers, sort and slice them
            if (!empty($sort_field) && $search_set->get_parameters('SORT') != $sort_field) {
                $this->sort_field = null;
                $this->page_size  = 1000;  // fetch up to 1000 matching messages per folder
                $this->threading  = false;

                $a_msg_headers = [];
                foreach ($search_set->sets as $resultset) {
                    if (!$resultset->is_empty()) {
                        $this->search_set     = $resultset;
                        $this->search_threads = $resultset instanceof rcube_result_thread;

                        $a_headers     =  $this->list_search_messages($resultset->get_parameters('MAILBOX'), 1);
                        $a_msg_headers = array_merge($a_msg_headers, $a_headers);
                        unset($a_headers);
                    }
                }

                // sort headers
                if (!empty($a_msg_headers)) {
                    $a_msg_headers = rcube_imap_generic::sortHeaders($a_msg_headers, $sort_field, $this->sort_order);
                }

                // store (sorted) message index
                $search_set->set_message_index($a_msg_headers, $sort_field, $this->sort_order);

                // only return the requested part of the set
                $a_msg_headers = array_slice(array_values($a_msg_headers), $from, $page_size);
            }
            else {
                if ($this->sort_order != $search_set->get_parameters('ORDER')) {
                    $search_set->revert();
                }

                // slice resultset first...
                $index = array_slice($search_set->get(), $from, $page_size);
                $fetch = [];

                foreach ($index as $msg_id) {
                    list($uid, $folder) = explode('-', $msg_id, 2);
                    $fetch[$folder][] = $uid;
                }

                // ... and fetch the requested set of headers
                $a_msg_headers = [];
                foreach ($fetch as $folder => $a_index) {
                    $a_msg_headers = array_merge($a_msg_headers, array_values($this->fetch_headers($folder, $a_index)));
                }

                // Re-sort the result according to the original search set order
                usort($a_msg_headers, function($a, $b) use ($index) {
                    return array_search($a->uid . '-' . $a->folder, $index) - array_search($b->uid . '-' . $b->folder, $index);
                });
            }

            if ($slice) {
                $a_msg_headers = array_slice($a_msg_headers, -$slice, $slice);
            }

            // restore members
            $this->sort_field = $sort_field;
            $this->page_size  = $page_size;
            $this->search_set = $search_set;

            return $a_msg_headers;
        }

        // use saved messages from searching
        if ($this->threading) {
            return $this->list_search_thread_messages($folder, $page, $slice);
        }

        // search set is threaded, we need a new one
        if ($this->search_threads) {
            $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
        }

        $index = clone $this->search_set;

        // return empty array if no messages found
        if ($index->is_empty()) {
            return [];
        }

        // quickest method (default sorting)
        if (!$this->search_sort_field && !$this->sort_field) {
            $got_index = true;
        }
        // sorted messages, so we can first slice array and then fetch only wanted headers
        else if ($this->search_sorted) { // SORT searching result
            $got_index = true;
            // reset search set if sorting field has been changed
            if ($this->sort_field && $this->search_sort_field != $this->sort_field) {
                $this->search('', $this->search_string, $this->search_charset, $this->sort_field);

                $index = clone $this->search_set;

                // return empty array if no messages found
                if ($index->is_empty()) {
                    return [];
                }
            }
        }

        if (!empty($got_index)) {
            if ($this->sort_order != $index->get_parameters('ORDER')) {
                $index->revert();
            }

            // get messages uids for one page
            $index->slice($from, $this->page_size);

            if ($slice) {
                $index->slice(-$slice, $slice);
            }

            // fetch headers
            $a_index       = $index->get();
            $a_msg_headers = $this->fetch_headers($folder, $a_index);

            return array_values($a_msg_headers);
        }

        // SEARCH result, need sorting
        $cnt = $index->count();

        // 300: experimental value for best result
        if (($cnt > 300 && $cnt > $this->page_size) || !$this->sort_field) {
            // use memory less expensive (and quick) method for big result set
            $index = clone $this->index('', $this->sort_field, $this->sort_order);
            // get messages uids for one page...
            $index->slice($from, $this->page_size);

            if ($slice) {
                $index->slice(-$slice, $slice);
            }

            // ...and fetch headers
            $a_index       = $index->get();
            $a_msg_headers = $this->fetch_headers($folder, $a_index);

            return array_values($a_msg_headers);
        }
        else {
            // for small result set we can fetch all messages headers
            $a_index       = $index->get();
            $a_msg_headers = $this->fetch_headers($folder, $a_index, false);

            // return empty array if no messages found
            if (!is_array($a_msg_headers) || empty($a_msg_headers)) {
                return [];
            }

            // if not already sorted
            $a_msg_headers = rcube_imap_generic::sortHeaders(
                $a_msg_headers, $this->sort_field, $this->sort_order);

            $a_msg_headers = array_slice(array_values($a_msg_headers), $from, $this->page_size);

            if ($slice) {
                $a_msg_headers = array_slice($a_msg_headers, -$slice, $slice);
            }

            return $a_msg_headers;
        }
    }

    /**
     * protected method for listing a set of threaded message headers (search results)
     *
     * @param   string   $folder     Folder name
     * @param   int      $page       Current page to list
     * @param   int      $slice      Number of slice items to extract from result array
     *
     * @return array Indexed array with message header objects
     * @see rcube_imap::list_search_messages()
     */
    protected function list_search_thread_messages($folder, $page, $slice = 0)
    {
        // update search_set if previous data was fetched with disabled threading
        if (!$this->search_threads) {
            if ($this->search_set->is_empty()) {
                return [];
            }
            $this->search('', $this->search_string, $this->search_charset, $this->sort_field);
        }

        return $this->fetch_thread_headers($folder, clone $this->search_set, $page, $slice);
    }

    /**
     * Fetches messages headers (by UID)
     *
     * @param  string  $folder   Folder name
     * @param  array   $msgs     Message UIDs
     * @param  bool    $sort     Enables result sorting by $msgs
     * @param  bool    $force    Disables cache use
     *
     * @return array Messages headers indexed by UID
     */
    function fetch_headers($folder, $msgs, $sort = true, $force = false)
    {
        if (empty($msgs)) {
            return [];
        }

        if (!$force && ($mcache = $this->get_mcache_engine())) {
            $headers = $mcache->get_messages($folder, $msgs);
        }
        else if (!$this->check_connection()) {
            return [];
        }
        else {
            // fetch requested headers from server
            $headers = $this->conn->fetchHeaders(
                $folder, $msgs, true, false, $this->get_fetch_headers());
        }

        if (empty($headers)) {
            return [];
        }

        $msg_headers = [];
        foreach ($headers as $h) {
            $h->folder = $folder;
            $msg_headers[$h->uid] = $h;
        }

        if ($sort) {
            // use this class for message sorting
            $sorter = new rcube_message_header_sorter();
            $sorter->set_index($msgs);
            $sorter->sort_headers($msg_headers);
        }

        return $msg_headers;
    }

    /**
     * Returns current status of a folder (compared to the last time use)
     *
     * We compare the maximum UID to determine the number of
     * new messages because the RECENT flag is not reliable.
     *
     * @param string $folder Folder name
     * @param array  $diff   Difference data
     *
     * @return int Folder status
     */
    public function folder_status($folder = null, &$diff = [])
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        $old = $this->get_folder_stats($folder);

        // refresh message count -> will update
        $this->countmessages($folder, 'ALL', true, true, true);

        $result = 0;

        if (empty($old)) {
            return $result;
        }

        $new = $this->get_folder_stats($folder);

        // got new messages
        if ($new['maxuid'] > $old['maxuid']) {
            $result += 1;
            // get new message UIDs range, that can be used for example
            // to get the data of these messages
            $diff['new'] = ($old['maxuid'] + 1 < $new['maxuid'] ? ($old['maxuid']+1).':' : '') . $new['maxuid'];
        }

        // some messages has been deleted
        if ($new['cnt'] < $old['cnt']) {
            $result += 2;
        }

        // @TODO: optional checking for messages flags changes (?)
        // @TODO: UIDVALIDITY checking

        return $result;
    }

    /**
     * Stores folder statistic data in session
     * @TODO: move to separate DB table (cache?)
     *
     * @param string $folder  Folder name
     * @param string $name    Data name
     * @param mixed  $data    Data value
     */
    protected function set_folder_stats($folder, $name, $data)
    {
        $_SESSION['folders'][$folder][$name] = $data;
    }

    /**
     * Gets folder statistic data
     *
     * @param string $folder Folder name
     *
     * @return array Stats data
     */
    protected function get_folder_stats($folder)
    {
        if (isset($_SESSION['folders'][$folder])) {
            return (array) $_SESSION['folders'][$folder];
        }

        return [];
    }

    /**
     * Return sorted list of message UIDs
     *
     * @param string $folder     Folder to get index from
     * @param string $sort_field Sort column
     * @param string $sort_order Sort order [ASC, DESC]
     * @param bool   $no_threads Get not threaded index
     * @param bool   $no_search  Get index not limited to search result (optionally)
     *
     * @return rcube_result_index|rcube_result_thread List of messages (UIDs)
     */
    public function index($folder = '', $sort_field = null, $sort_order = null,
        $no_threads = false, $no_search = false
    ) {
        if (!$no_threads && $this->threading) {
            return $this->thread_index($folder, $sort_field, $sort_order);
        }

        $this->set_sort_order($sort_field, $sort_order);

        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        // we have a saved search result, get index from there
        if ($this->search_string) {
            if ($this->search_set->is_empty()) {
                return new rcube_result_index($folder, '* SORT');
            }

            if ($this->search_set instanceof rcube_result_multifolder) {
                $index = $this->search_set;
                $index->folder = $folder;
                // TODO: handle changed sorting
            }
            // search result is an index with the same sorting?
            else if (($this->search_set instanceof rcube_result_index)
                && ((!$this->sort_field && !$this->search_sorted) ||
                    ($this->search_sorted && $this->search_sort_field == $this->sort_field))
            ) {
                $index = $this->search_set;
            }
            // $no_search is enabled when we are not interested in
            // fetching index for search result, e.g. to sort
            // threaded search result we can use full mailbox index.
            // This makes possible to use index from cache
            else if (!$no_search) {
                if (!$this->sort_field) {
                    // No sorting needed, just build index from the search result
                    // @TODO: do we need to sort by UID here?
                    $search = $this->search_set->get_compressed();
                    $index  = new rcube_result_index($folder, '* ESEARCH ALL ' . $search);
                }
                else {
                    $index = $this->index_direct($folder, $this->sort_field, $this->sort_order, $this->search_set);
                }
            }

            if (isset($index)) {
                if ($this->sort_order != $index->get_parameters('ORDER')) {
                    $index->revert();
                }

                return $index;
            }
        }

        // check local cache
        if ($mcache = $this->get_mcache_engine()) {
            return $mcache->get_index($folder, $this->sort_field, $this->sort_order);
        }

        // fetch from IMAP server
        return $this->index_direct($folder, $this->sort_field, $this->sort_order);
    }

    /**
     * Return sorted list of message UIDs ignoring current search settings.
     * Doesn't uses cache by default.
     *
     * @param string             $folder     Folder to get index from
     * @param string             $sort_field Sort column
     * @param string             $sort_order Sort order [ASC, DESC]
     * @param rcube_result_index $search     Optional messages set to limit the result
     *
     * @return rcube_result_index Sorted list of message UIDs
     */
    public function index_direct($folder, $sort_field = null, $sort_order = null, $search = null)
    {
        if (!empty($search)) {
            $search = $search->get_compressed();
        }

        // use message index sort as default sorting
        if (!$sort_field) {
            // use search result from count() if possible
            if (empty($search) && $this->options['skip_deleted']
                && !empty($this->icache['undeleted_idx'])
                && $this->icache['undeleted_idx']->get_parameters('ALL') !== null
                && $this->icache['undeleted_idx']->get_parameters('MAILBOX') == $folder
            ) {
                $index = $this->icache['undeleted_idx'];
            }
            else if (!$this->check_connection()) {
                return new rcube_result_index();
            }
            else {
                $query = $this->options['skip_deleted'] ? 'UNDELETED' : '';
                if ($search) {
                    $query = trim($query . ' UID ' . $search);
                }

                $index = $this->conn->search($folder, $query, true);
            }
        }
        else if (!$this->check_connection()) {
            return new rcube_result_index();
        }
        // fetch complete message index
        else {
            if ($this->get_capability('SORT')) {
                $query = $this->options['skip_deleted'] ? 'UNDELETED' : '';
                if ($search) {
                    $query = trim($query . ' UID ' . $search);
                }

                $index = $this->conn->sort($folder, $sort_field, $query, true);
            }

            if (empty($index) || $index->is_error()) {
                $index = $this->conn->index($folder, $search ? $search : "1:*",
                    $sort_field, $this->options['skip_deleted'],
                    $search ? true : false, true);
            }
        }

        if ($sort_order != $index->get_parameters('ORDER')) {
            $index->revert();
        }

        return $index;
    }

    /**
     * Return index of threaded message UIDs
     *
     * @param string $folder     Folder to get index from
     * @param string $sort_field Sort column
     * @param string $sort_order Sort order [ASC, DESC]
     *
     * @return rcube_result_thread Message UIDs
     */
    public function thread_index($folder = '', $sort_field = null, $sort_order = null)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        // we have a saved search result, get index from there
        if ($this->search_string && $this->search_threads && $folder == $this->folder) {
            $threads = $this->search_set;
        }
        else {
            // get all threads (default sort order)
            $threads = $this->threads($folder);
        }

        $this->set_sort_order($sort_field, $sort_order);
        $this->sort_threads($threads);

        return $threads;
    }

    /**
     * Sort threaded result, using THREAD=REFS method if available.
     * If not, use any method and re-sort the result in THREAD=REFS way.
     *
     * @param rcube_result_thread $threads Threads result set
     */
    protected function sort_threads($threads)
    {
        if ($threads->is_empty()) {
            return;
        }

        // THREAD=ORDEREDSUBJECT: sorting by sent date of root message
        // THREAD=REFERENCES:     sorting by sent date of root message
        // THREAD=REFS:           sorting by the most recent date in each thread

        if ($this->threading != 'REFS' || ($this->sort_field && $this->sort_field != 'date')) {
            $sortby = $this->sort_field ?: 'date';
            $index  = $this->index($this->folder, $sortby, $this->sort_order, true, true);

            if (!$index->is_empty()) {
                $threads->sort($index);
            }
        }
        else if ($this->sort_order != $threads->get_parameters('ORDER')) {
            $threads->revert();
        }
    }

    /**
     * Invoke search request to IMAP server
     *
     * @param  string  $folder     Folder name to search in
     * @param  string  $search     Search criteria
     * @param  string  $charset    Search charset
     * @param  string  $sort_field Header field to sort by
     *
     * @return rcube_result_index  Search result object
     * @todo: Search criteria should be provided in non-IMAP format, e.g. array
     */
    public function search($folder = '', $search = 'ALL', $charset = null, $sort_field = null)
    {
        if (!$search) {
            $search = 'ALL';
        }

        if ((is_array($folder) && empty($folder)) || (!is_array($folder) && !strlen($folder))) {
            $folder = $this->folder;
        }

        $plugin = $this->plugins->exec_hook('imap_search_before', [
                'folder'     => $folder,
                'search'     => $search,
                'charset'    => $charset,
                'sort_field' => $sort_field,
                'threading'  => $this->threading,
                'result'     => null,
        ]);

        $folder     = $plugin['folder'];
        $search     = $plugin['search'];
        $charset    = $plugin['charset'];
        $sort_field = $plugin['sort_field'];
        $results    = $plugin['result'];

        // multi-folder search
        if (!$results && is_array($folder) && count($folder) > 1 && $search != 'ALL') {
            // connect IMAP to have all the required classes and settings loaded
            $this->check_connection();

            // disable threading
            $this->threading = false;

            $searcher = new rcube_imap_search($this->options, $this->conn);

            // set limit to not exceed the client's request timeout
            $searcher->set_timelimit(60);

            // continue existing incomplete search
            if (!empty($this->search_set) && $this->search_set->incomplete && $search == $this->search_string) {
                $searcher->set_results($this->search_set);
            }

            // execute the search
            $results = $searcher->exec(
                $folder,
                $search,
                $charset ?: $this->default_charset,
                $sort_field && $this->get_capability('SORT') ? $sort_field : null,
                $this->threading
            );
        }
        else if (!$results) {
            $folder  = is_array($folder) ? $folder[0] : $folder;
            $search  = is_array($search) ? $search[$folder] : $search;
            $results = $this->search_index($folder, $search, $charset, $sort_field);
        }

        $sorted = $this->threading || $this->search_sorted || !empty($plugin['search_sorted']);

        $this->set_search_set([$search, $results, $charset, $sort_field, $sorted]);

        return $results;
    }

    /**
     * Direct (real and simple) SEARCH request (without result sorting and caching).
     *
     * @param string $folder Mailbox name to search in
     * @param string $str    Search string
     *
     * @return rcube_result_index  Search result (UIDs)
     */
    public function search_once($folder = null, $str = 'ALL')
    {
        if (!$this->check_connection()) {
            return new rcube_result_index();
        }

        if (!$str) {
            $str = 'ALL';
        }

        // multi-folder search
        if (is_array($folder) && count($folder) > 1) {
            $searcher = new rcube_imap_search($this->options, $this->conn);
            $index = $searcher->exec($folder, $str, $this->default_charset);
        }
        else {
            $folder = is_array($folder) ? $folder[0] : $folder;
            if (!strlen($folder)) {
                $folder = $this->folder;
            }
            $index = $this->conn->search($folder, $str, true);
        }

        return $index;
    }

    /**
     * protected search method
     *
     * @param string $folder     Folder name
     * @param string $criteria   Search criteria
     * @param string $charset    Charset
     * @param string $sort_field Sorting field
     *
     * @return rcube_result_index|rcube_result_thread  Search results (UIDs)
     * @see rcube_imap::search()
     */
    protected function search_index($folder, $criteria = 'ALL', $charset = null, $sort_field = null)
    {
        if (!$this->check_connection()) {
            if ($this->threading) {
                return new rcube_result_thread();
            }
            else {
                return new rcube_result_index();
            }
        }

        if ($this->options['skip_deleted'] && !preg_match('/UNDELETED/', $criteria)) {
            $criteria = 'UNDELETED '.$criteria;
        }

        // unset CHARSET if criteria string is ASCII, this way
        // SEARCH won't be re-sent after "unsupported charset" response
        if ($charset && $charset != 'US-ASCII' && is_ascii($criteria)) {
            $charset = 'US-ASCII';
        }

        if ($this->threading) {
            $threads = $this->conn->thread($folder, $this->threading, $criteria, true, $charset);

            // Error, try with US-ASCII (RFC5256: SORT/THREAD must support US-ASCII and UTF-8,
            // but I've seen that Courier doesn't support UTF-8)
            if ($threads->is_error() && $charset && $charset != 'US-ASCII') {
                $threads = $this->conn->thread($folder, $this->threading,
                    self::convert_criteria($criteria, $charset), true, 'US-ASCII');
            }

            return $threads;
        }

        if ($sort_field && $this->get_capability('SORT')) {
            $charset  = $charset ?: $this->default_charset;
            $messages = $this->conn->sort($folder, $sort_field, $criteria, true, $charset);

            // Error, try with US-ASCII (RFC5256: SORT/THREAD must support US-ASCII and UTF-8,
            // but I've seen Courier with disabled UTF-8 support)
            if ($messages->is_error() && $charset && $charset != 'US-ASCII') {
                $messages = $this->conn->sort($folder, $sort_field,
                    self::convert_criteria($criteria, $charset), true, 'US-ASCII');
            }

            if (!$messages->is_error()) {
                $this->search_sorted = true;
                return $messages;
            }
        }

        $messages = $this->conn->search($folder,
            ($charset && $charset != 'US-ASCII' ? "CHARSET $charset " : '') . $criteria, true);

        // Error, try with US-ASCII (some servers may support only US-ASCII)
        if ($messages->is_error() && $charset && $charset != 'US-ASCII') {
            $messages = $this->conn->search($folder, self::convert_criteria($criteria, $charset), true);
        }

        $this->search_sorted = false;

        return $messages;
    }

    /**
     * Converts charset of search criteria string
     *
     * @param  string  $str          Search string
     * @param  string  $charset      Original charset
     * @param  string  $dest_charset Destination charset (default US-ASCII)
     *
     * @return string  Search string
     */
    public static function convert_criteria($str, $charset, $dest_charset = 'US-ASCII')
    {
        // convert strings to US_ASCII
        if (preg_match_all('/\{([0-9]+)\}\r\n/', $str, $matches, PREG_OFFSET_CAPTURE)) {
            $last = 0;
            $res  = '';

            foreach ($matches[1] as $m) {
                $string_offset = $m[1] + strlen($m[0]) + 4; // {}\r\n
                $string = substr($str, $string_offset - 1, $m[0]);
                $string = rcube_charset::convert($string, $charset, $dest_charset);

                if ($string === false || !strlen($string)) {
                    continue;
                }

                $res .= substr($str, $last, $m[1] - $last - 1) . rcube_imap_generic::escape($string);
                $last = $m[0] + $string_offset - 1;
            }

            if ($last < strlen($str)) {
                $res .= substr($str, $last, strlen($str)-$last);
            }
        }
        // strings for conversion not found
        else {
            $res = $str;
        }

        return $res;
    }

    /**
     * Refresh saved search set
     *
     * @return array Current search set
     */
    public function refresh_search()
    {
        if (!empty($this->search_string)) {
            $this->search(
                is_object($this->search_set) ? $this->search_set->get_parameters('MAILBOX') : '',
                $this->search_string,
                $this->search_charset,
                $this->search_sort_field
            );
        }

        return $this->get_search_set();
    }

    /**
     * Flag certain result subsets as 'incomplete'.
     * For subsequent refresh_search() calls to only refresh the updated parts.
     */
    protected function set_search_dirty($folder)
    {
        if ($this->search_set && is_a($this->search_set, 'rcube_result_multifolder')) {
            if ($subset = $this->search_set->get_set($folder)) {
                $subset->incomplete = $this->search_set->incomplete = true;
            }
        }
    }

    /**
     * Return message headers object of a specific message
     *
     * @param int    $uid    Message UID
     * @param string $folder Folder to read from
     * @param bool   $force  True to skip cache
     *
     * @return rcube_message_header Message headers
     */
    public function get_message_headers($uid, $folder = null, $force = false)
    {
        // decode combined UID-folder identifier
        if (preg_match('/^\d+-.+/', $uid)) {
            list($uid, $folder) = explode('-', $uid, 2);
        }

        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        // get cached headers
        if (!$force && $uid && ($mcache = $this->get_mcache_engine())) {
            $headers = $mcache->get_message($folder, $uid);
        }
        else if (!$this->check_connection()) {
            $headers = false;
        }
        else {
            $headers = $this->conn->fetchHeader(
                $folder, $uid, true, true, $this->get_fetch_headers());

            if (is_object($headers)) {
                $headers->folder = $folder;
            }
        }

        return $headers;
    }

    /**
     * Fetch message headers and body structure from the IMAP server and build
     * an object structure.
     *
     * @param int    $uid    Message UID to fetch
     * @param string $folder Folder to read from
     *
     * @return object rcube_message_header Message data
     */
    public function get_message($uid, $folder = null)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        // decode combined UID-folder identifier
        if (preg_match('/^\d+-.+/', $uid)) {
            list($uid, $folder) = explode('-', $uid, 2);
        }

        // Check internal cache
        if (!empty($this->icache['message']) && ($headers = $this->icache['message'])) {
            // Make sure the folder and UID is what we expect.
            // In case when the same process works with folders that are personal
            // and shared two folders can contain the same UIDs.
            if ($headers->uid == $uid && $headers->folder == $folder) {
                return $headers;
            }
        }

        $headers = $this->get_message_headers($uid, $folder);

        // message doesn't exist?
        if (empty($headers)) {
            return null;
        }

        // structure might be cached
        if (!empty($headers->structure)) {
            return $headers;
        }

        $this->msg_uid = $uid;

        if (!$this->check_connection()) {
            return $headers;
        }

        if (empty($headers->bodystructure)) {
            $headers->bodystructure = $this->conn->getStructure($folder, $uid, true);
        }

        $structure = $headers->bodystructure;

        if (empty($structure)) {
            return $headers;
        }

        // set message charset from message headers
        if ($headers->charset) {
            $this->struct_charset = $headers->charset;
        }
        else {
            $this->struct_charset = $this->structure_charset($structure);
        }

        $headers->ctype = @strtolower($headers->ctype);

        // Here we can recognize malformed BODYSTRUCTURE and
        // 1. [@TODO] parse the message in other way to create our own message structure
        // 2. or just show the raw message body.
        // Example of structure for malformed MIME message:
        // ("text" "plain" NIL NIL NIL "7bit" 2154 70 NIL NIL NIL)
        if ($headers->ctype && !is_array($structure[0]) && $headers->ctype != 'text/plain'
            && strtolower($structure[0].'/'.$structure[1]) == 'text/plain'
        ) {
            // A special known case "Content-type: text" (#1488968)
            if ($headers->ctype == 'text') {
                $structure[1]   = 'plain';
                $headers->ctype = 'text/plain';
            }
            // we can handle single-part messages, by simple fix in structure (#1486898)
            else if (preg_match('/^(text|application)\/(.*)/', $headers->ctype, $m)) {
                $structure[0] = $m[1];
                $structure[1] = $m[2];
            }
            else {
                // Try to parse the message using rcube_mime_decode.
                // We need a better solution, it parses message
                // in memory, which wouldn't work for very big messages,
                // (it uses up to 10x more memory than the message size)
                // it's also buggy and not actively developed
                if ($headers->size && rcube_utils::mem_check($headers->size * 10)) {
                    $raw_msg = $this->get_raw_body($uid);
                    $struct = rcube_mime::parse_message($raw_msg);
                }
                else {
                    return $headers;
                }
            }
        }

        if (empty($struct)) {
            $struct = $this->structure_part($structure, 0, '', $headers);
        }

        // some workarounds on simple messages...
        if (empty($struct->parts)) {
            // ...don't trust given content-type
            if (!empty($headers->ctype)) {
                $struct->mime_id  = '1';
                $struct->mimetype = strtolower($headers->ctype);
                list($struct->ctype_primary, $struct->ctype_secondary) = explode('/', $struct->mimetype);
            }

            // ...and charset (there's a case described in #1488968 where invalid content-type
            // results in invalid charset in BODYSTRUCTURE)
            if (!empty($headers->charset) && $headers->charset != $struct->ctype_parameters['charset']) {
                $struct->charset                     = $headers->charset;
                $struct->ctype_parameters['charset'] = $headers->charset;
            }
        }

        $headers->structure = $struct;

        return $this->icache['message'] = $headers;
    }

    /**
     * Build message part object
     *
     * @param array  $part
     * @param int    $count
     * @param string $parent
     */
    protected function structure_part($part, $count = 0, $parent = '', $mime_headers = null)
    {
        $struct = new rcube_message_part;
        $struct->mime_id = empty($parent) ? (string)$count : "$parent.$count";

        // multipart
        if (is_array($part[0])) {
            $struct->ctype_primary = 'multipart';

        /* RFC3501: BODYSTRUCTURE fields of multipart part
            part1 array
            part2 array
            part3 array
            ....
            1. subtype
            2. parameters (optional)
            3. description (optional)
            4. language (optional)
            5. location (optional)
        */

            // find first non-array entry
            for ($i=1; $i<count($part); $i++) {
                if (is_string($part[$i])) {
                    $struct->ctype_secondary = strtolower($part[$i]);

                    // read content type parameters
                    if (isset($part[$i+1]) && is_array($part[$i+1])) {
                        $struct->ctype_parameters = [];
                        for ($j=0; $j<count($part[$i+1]); $j+=2) {
                            if (is_string($part[$i+1][$j])) {
                                $param = strtolower($part[$i+1][$j]);
                                $struct->ctype_parameters[$param] = $part[$i+1][$j+1];
                            }
                        }
                    }

                    break;
                }
            }

            $struct->mimetype = 'multipart/'.$struct->ctype_secondary;

            // build parts list for headers pre-fetching
            for ($i=0; $i<count($part); $i++) {
                // fetch message headers if message/rfc822 or named part
                if (is_array($part[$i]) && !is_array($part[$i][0])) {
                    $tmp_part_id = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;
                    if (strtolower($part[$i][0]) == 'message' && strtolower($part[$i][1]) == 'rfc822') {
                        $mime_part_headers[] = $tmp_part_id;
                    }
                    else if ($this->is_attachment_part($part[$i])) {
                        $mime_part_headers[] = $tmp_part_id;
                    }
                }
            }

            // pre-fetch headers of all parts (in one command for better performance)
            // @TODO: we could do this before _structure_part() call, to fetch
            // headers for parts on all levels
            if (!empty($mime_part_headers)) {
                $mime_part_headers = $this->conn->fetchMIMEHeaders($this->folder,
                    $this->msg_uid, $mime_part_headers);
            }

            $struct->parts = [];
            for ($i=0, $count=0; $i<count($part); $i++) {
                if (!is_array($part[$i])) {
                    break;
                }
                $tmp_part_id = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;
                $struct->parts[] = $this->structure_part($part[$i], ++$count, $struct->mime_id,
                    !empty($mime_part_headers[$tmp_part_id]) ? $mime_part_headers[$tmp_part_id] : null);
            }

            return $struct;
        }

        /* RFC3501: BODYSTRUCTURE fields of non-multipart part
            0. type
            1. subtype
            2. parameters
            3. id
            4. description
            5. encoding
            6. size
          -- text
            7. lines
          -- message/rfc822
            7. envelope structure
            8. body structure
            9. lines
          --
            x. md5 (optional)
            x. disposition (optional)
            x. language (optional)
            x. location (optional)
        */

        // Sometimes it might be: 0. subtype, 1. parameters, ...
        $params_idx = is_array($part[1]) ? 1 : 2;

        // regular part
        $struct->ctype_primary   = is_array($part[1]) ? 'multipart' : strtolower($part[0]);
        $struct->ctype_secondary = is_array($part[1]) ? strtolower($part[0]) : strtolower($part[1]);
        $struct->mimetype        = $struct->ctype_primary.'/'.$struct->ctype_secondary;

        // read content type parameters
        if (is_array($part[$params_idx])) {
            $struct->ctype_parameters = [];
            for ($i=0; $i<count($part[$params_idx]); $i+=2) {
                if (is_string($part[$params_idx][$i])) {
                    $struct->ctype_parameters[strtolower($part[$params_idx][$i])] = $part[$params_idx][$i+1];
                }
            }

            if (isset($struct->ctype_parameters['charset'])) {
                $struct->charset = $struct->ctype_parameters['charset'];
            }
        }

        // #1487700: workaround for lack of charset in malformed structure
        if (empty($struct->charset) && !empty($mime_headers) && !empty($mime_headers->charset)) {
            $struct->charset = $mime_headers->charset;
        }

        // Sanitize charset for security
        if ($struct->charset && !rcube_charset::is_valid($struct->charset)) {
            $struct->charset = '';
        }

        // read content encoding
        if (!empty($part[5]) && !is_array($part[5])) {
            $struct->encoding = strtolower($part[5]);
            $struct->headers['content-transfer-encoding'] = $struct->encoding;
        }

        // get part size
        if (!empty($part[6])) {
            $struct->size = intval($part[6]);
        }

        // read part disposition
        $di = 8;
        if ($struct->ctype_primary == 'text') {
            $di += 1;
        }
        else if ($struct->mimetype == 'message/rfc822') {
            $di += 3;
        }

        if (isset($part[$di]) && is_array($part[$di]) && count($part[$di]) == 2) {
            $struct->disposition = strtolower($part[$di][0]);
            if ($struct->disposition && $struct->disposition !== 'inline' && $struct->disposition !== 'attachment') {
                // RFC2183, Section 2.8 - unrecognized type should be treated as "attachment"
                $struct->disposition = 'attachment';
            }
            if (is_array($part[$di][1])) {
                for ($n=0; $n<count($part[$di][1]); $n+=2) {
                    if (is_string($part[$di][1][$n])) {
                        $struct->d_parameters[strtolower($part[$di][1][$n])] = $part[$di][1][$n+1];
                    }
                }
            }
        }

        // get message/rfc822's child-parts
        if (isset($part[8]) && is_array($part[8]) && $di != 8) {
            $struct->parts = [];

            for ($i=0; $i<count($part[8]); $i++) {
                if (!is_array($part[8][$i])) {
                    break;
                }

                $subpart_id = $struct->mime_id ? $struct->mime_id . '.' . ($i+1) : $i+1;

                if ($this->is_attachment_part($part[8][$i])) {
                    $mime_part_headers[] = $subpart_id;
                }

                $struct->parts[$subpart_id] = $part[8][$i];
            }

            // Fetch attachment parts' headers in one go
            if (!empty($mime_part_headers)) {
                $mime_part_headers = $this->conn->fetchMIMEHeaders($this->folder, $this->msg_uid, $mime_part_headers);
            }

            $count = 0;
            foreach ($struct->parts as $idx => $subpart) {
                $struct->parts[$idx] = $this->structure_part($subpart, ++$count, $struct->mime_id,
                    !empty($mime_part_headers[$idx]) ? $mime_part_headers[$idx] : null);
            }

            $struct->parts = array_values($struct->parts);
        }

        // get part ID
        if (!empty($part[3])) {
            $struct->content_id = $struct->headers['content-id'] = trim($part[3]);

            // FIXME: This is not the best idea. We should get rid of this at some point
            if (empty($struct->disposition)) {
                $struct->disposition = 'inline';
            }
        }

        // fetch message headers if message/rfc822 or named part (could contain Content-Location header)
        if (
            $struct->ctype_primary == 'message'
            || (!empty($struct->ctype_parameters['name']) && !empty($struct->content_id))
        ) {
            if (empty($mime_headers)) {
                $mime_headers = $this->conn->fetchPartHeader($this->folder, $this->msg_uid, true, $struct->mime_id);
            }

            if (is_string($mime_headers)) {
                $struct->headers = rcube_mime::parse_headers($mime_headers) + $struct->headers;
            }
            else if (is_object($mime_headers)) {
                $struct->headers = get_object_vars($mime_headers) + $struct->headers;
            }

            // get real content-type of message/rfc822
            if ($struct->mimetype == 'message/rfc822') {
                // single-part
                if (!is_array($part[8][0]) && !is_array($part[8][1])) {
                    $struct->real_mimetype = strtolower($part[8][0] . '/' . $part[8][1]);
                }
                // multi-part
                else {
                    for ($n=0; $n<count($part[8]); $n++) {
                        if (!is_array($part[8][$n])) {
                            break;
                        }
                    }
                    $struct->real_mimetype = 'multipart/' . strtolower($part[8][$n]);
                }
            }

            if ($struct->ctype_primary == 'message' && empty($struct->parts)) {
                if (is_array($part[8]) && $di != 8) {
                    $struct->parts[] = $this->structure_part($part[8], ++$count, $struct->mime_id);
                }
            }
        }

        // normalize filename property
        $this->set_part_filename($struct, $mime_headers);

        return $struct;
    }

    /**
     * Check if the mail structure part is an attachment part and requires
     * fetching the MIME headers for further processing.
     */
    protected function is_attachment_part($part)
    {
        if (!empty($part[2]) && is_array($part[2]) && empty($part[3])) {
            $params = array_map('strtolower', (array) $part[2]);
            $find   = ['name', 'filename', 'name*', 'filename*', 'name*0', 'filename*0', 'name*0*', 'filename*0*'];

            // In case of malformed header check disposition. E.g. some servers for
            // "Content-Type: PDF; name=test.pdf" may return text/plain and ignore name argument
            return count(array_intersect($params, $find)) > 0
                || (isset($part[9]) && is_array($part[9]) && stripos($part[9][0], 'attachment') === 0);
        }

        return false;
    }

    /**
     * Set attachment filename from message part structure
     *
     * @param rcube_message_part $part    Part object
     * @param string             $headers Part's raw headers
     */
    protected function set_part_filename(&$part, $headers = null)
    {
        // Some IMAP servers do not support RFC2231, if we have
        // part headers we'll get attachment name from them, not the BODYSTRUCTURE
        $rfc2231_params = [];
        if (!empty($headers) || !empty($part->headers)) {
            if (is_object($headers)) {
                $headers = get_object_vars($headers);
            }
            else {
                $headers = !empty($headers) ? rcube_mime::parse_headers($headers) : $part->headers;
            }

            $ctype       = $headers['content-type'] ?? '';
            $disposition = $headers['content-disposition'] ?? '';
            $tokens      = preg_split('/;[\s\r\n\t]*/',  $ctype. ';' . $disposition);

            foreach ($tokens as $token) {
                // TODO: Use order defined by the parameter name not order of occurrence in the header
                if (preg_match('/^(name|filename)\*([0-9]*)\*?="*([^"]+)"*/i', $token, $matches)) {
                    $key = strtolower($matches[1]);
                    $rfc2231_params[$key] = ($rfc2231_params[$key] ?? '') . $matches[3];
                }
            }
        }

        if (isset($rfc2231_params['name'])) {
            $filename_encoded = $rfc2231_params['name'];
        }
        else if (isset($rfc2231_params['filename'])) {
            $filename_encoded = $rfc2231_params['filename'];
        }
        else if (isset($part->d_parameters['filename*'])) {
            $filename_encoded = $part->d_parameters['filename*'];
        }
        else if (isset($part->ctype_parameters['name*'])) {
            $filename_encoded = $part->ctype_parameters['name*'];
        }
        else if (!empty($part->d_parameters['filename'])) {
            $filename_mime = $part->d_parameters['filename'];
        }
        // read 'name' after rfc2231 parameters as it may contain truncated filename (from Thunderbird)
        else if (!empty($part->ctype_parameters['name'])) {
            $filename_mime = $part->ctype_parameters['name'];
        }
        else if (!empty($part->headers['content-description'])) {
            $filename_mime = $part->headers['content-description'];
        }
        else {
            return;
        }

        // decode filename
        if (isset($filename_mime)) {
            if (!empty($part->charset)) {
                $charset = $part->charset;
            }
            else if (!empty($this->struct_charset)) {
                $charset = $this->struct_charset;
            }
            else {
                $charset = $this->default_charset;
            }

            $part->filename = rcube_mime::decode_mime_string($filename_mime, $charset);
        }
        else if (isset($filename_encoded)) {
            // decode filename according to RFC 2231, Section 4
            if (preg_match("/^([^']*)'[^']*'(.*)$/", $filename_encoded, $fmatches)) {
                $filename_charset = $fmatches[1];
                $filename_encoded = $fmatches[2];
            }

            $part->filename = rawurldecode($filename_encoded);

            if (!empty($filename_charset)) {
                $part->filename = rcube_charset::convert($part->filename, $filename_charset);
            }
        }

        // Workaround for invalid Content-Type (#6816)
        // Some servers for "Content-Type: PDF; name=test.pdf" may return text/plain and ignore name argument
        if ($part->mimetype == 'text/plain' && !empty($headers['content-type'])) {
            $tokens = preg_split('/;[\s\r\n\t]*/', $headers['content-type']);
            $type   = rcube_mime::fix_mimetype($tokens[0]);

            if ($type != $part->mimetype) {
                $part->mimetype = $type;
                list($part->ctype_primary, $part->ctype_secondary) = explode('/', $part->mimetype);
            }
        }
    }

    /**
     * Get charset name from message structure (first part)
     *
     * @param array $structure Message structure
     *
     * @return string Charset name
     */
    protected function structure_charset($structure)
    {
        while (is_array($structure)) {
            if (is_array($structure[2]) && $structure[2][0] == 'charset') {
                return $structure[2][1];
            }
            $structure = $structure[0];
        }
    }


    /**
     * Fetch message body of a specific message from the server
     *
     * @param int                $uid       Message UID
     * @param string             $part      Part number
     * @param rcube_message_part $o_part    Part object created by get_structure()
     * @param mixed              $print     True to print part, resource to write part contents in
     * @param resource           $fp        File pointer to save the message part
     * @param bool               $skip_charset_conv Disables charset conversion
     * @param int                $max_bytes Only read this number of bytes
     * @param bool               $formatted Enables formatting of text/* parts bodies
     *
     * @return string Message/part body if not printed
     */
    public function get_message_part($uid, $part = 1, $o_part = null, $print = null, $fp = null,
        $skip_charset_conv = false, $max_bytes = 0, $formatted = true)
    {
        if (!$this->check_connection()) {
            return null;
        }

        // get part data if not provided
        if (!is_object($o_part)) {
            $structure = $this->conn->getStructure($this->folder, $uid, true);
            $part_data = rcube_imap_generic::getStructurePartData($structure, $part);

            $o_part = new rcube_message_part;
            $o_part->ctype_primary   = $part_data['type'] ?? null;
            $o_part->ctype_secondary = $part_data['subtype'] ?? null;
            $o_part->encoding        = $part_data['encoding'] ?? null;
            $o_part->charset         = $part_data['charset'] ?? null;
            $o_part->size            = $part_data['size'] ?? 0;
        }

        $body = '';

        // Note: multipart/* parts will have size=0, we don't want to ignore them
        if ($o_part && ($o_part->size || $o_part->ctype_primary == 'multipart')) {
            $formatted = $formatted && $o_part->ctype_primary == 'text';
            $body = $this->conn->handlePartBody($this->folder, $uid, true,
                $part ? $part : 'TEXT', $o_part->encoding, $print, $fp, $formatted, $max_bytes);
        }

        if ($fp || $print) {
            return true;
        }

        // convert charset (if text or message part)
        if ($body && preg_match('/^(text|message)$/', $o_part->ctype_primary)) {
            // Remove NULL characters if any (#1486189)
            if ($formatted && strpos($body, "\x00") !== false) {
                $body = str_replace("\x00", '', $body);
            }

            if (!$skip_charset_conv) {
                if (!$o_part->charset || strtoupper($o_part->charset) == 'US-ASCII') {
                    // try to extract charset information from HTML meta tag (#1488125)
                    if ($o_part->ctype_secondary == 'html' && preg_match('/<meta[^>]+charset=([a-z0-9-_]+)/i', $body, $m)) {
                        $o_part->charset = strtoupper($m[1]);
                    }
                    else {
                        $o_part->charset = $this->default_charset;
                    }
                }
                $body = rcube_charset::convert($body, $o_part->charset);
            }
        }

        return $body;
    }

    /**
     * Returns the whole message source as string (or saves to a file)
     *
     * @param int      $uid  Message UID
     * @param resource $fp   File pointer to save the message
     * @param string   $part Optional message part ID
     *
     * @return string Message source string
     */
    public function get_raw_body($uid, $fp = null, $part = null)
    {
        if (!$this->check_connection()) {
            return null;
        }

        return $this->conn->handlePartBody($this->folder, $uid,
            true, $part, null, false, $fp);
    }

    /**
     * Returns the message headers as string
     *
     * @param int    $uid  Message UID
     * @param string $part Optional message part ID
     *
     * @return string Message headers string
     */
    public function get_raw_headers($uid, $part = null)
    {
        if (!$this->check_connection()) {
            return null;
        }

        return $this->conn->fetchPartHeader($this->folder, $uid, true, $part);
    }

    /**
     * Sends the whole message source to stdout
     *
     * @param int  $uid       Message UID
     * @param bool $formatted Enables line-ending formatting
     */
    public function print_raw_body($uid, $formatted = true)
    {
        if (!$this->check_connection()) {
            return;
        }

        $this->conn->handlePartBody($this->folder, $uid, true, null, null, true, null, $formatted);
    }

    /**
     * Set message flag to one or several messages
     *
     * @param mixed  $uids       Message UIDs as array or comma-separated string, or '*'
     * @param string $flag       Flag to set: SEEN, UNDELETED, DELETED, RECENT, ANSWERED, DRAFT, MDNSENT
     * @param string $folder     Folder name
     * @param bool   $skip_cache True to skip message cache clean up
     *
     * @return bool Operation status
     */
    public function set_flag($uids, $flag, $folder = null, $skip_cache = false)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $flag = strtoupper($flag);
        list($uids, $all_mode) = $this->parse_uids($uids);

        if (strpos($flag, 'UN') === 0) {
            $result = $this->conn->unflag($folder, $uids, substr($flag, 2));
        }
        else {
            $result = $this->conn->flag($folder, $uids, $flag);
        }

        if ($result && !$skip_cache) {
            // reload message headers if cached
            // update flags instead removing from cache
            if ($mcache = $this->get_mcache_engine()) {
                $status = strpos($flag, 'UN') !== 0;
                $mflag  = preg_replace('/^UN/', '', $flag);
                $mcache->change_flag($folder, $all_mode ? null : explode(',', $uids),
                    $mflag, $status);
            }

            // clear cached counters
            if ($flag == 'SEEN' || $flag == 'UNSEEN') {
                $this->clear_messagecount($folder, ['SEEN', 'UNSEEN']);
            }
            else if ($flag == 'DELETED' || $flag == 'UNDELETED') {
                $this->clear_messagecount($folder, ['ALL', 'THREADS']);
                if ($this->options['skip_deleted']) {
                    // remove cached messages
                    $this->clear_message_cache($folder, $all_mode ? null : explode(',', $uids));
                }
            }

            $this->set_search_dirty($folder);
        }

        return $result;
    }

    /**
     * Append a mail message (source) to a specific folder
     *
     * @param string       $folder  Target folder
     * @param string|array $message The message source string or filename
     *                              or array (of strings and file pointers)
     * @param string       $headers Headers string if $message contains only the body
     * @param bool         $is_file True if $message is a filename
     * @param array        $flags   Message flags
     * @param mixed        $date    Message internal date
     * @param bool         $binary  Enables BINARY append
     *
     * @return int|bool Appended message UID or True on success, False on error
     */
    public function save_message($folder, &$message, $headers = '', $is_file = false, $flags = [], $date = null, $binary = false)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        if (!$this->check_connection()) {
            return false;
        }

        // make sure folder exists
        if (!$this->folder_exists($folder)) {
            return false;
        }

        $date = $this->date_format($date);

        if ($is_file) {
            $saved = $this->conn->appendFromFile($folder, $message, $headers, $flags, $date, $binary);
        }
        else {
            $saved = $this->conn->append($folder, $message, $flags, $date, $binary);
        }

        if ($saved) {
            // increase messagecount of the target folder
            $this->set_messagecount($folder, 'ALL', 1);

            $this->plugins->exec_hook('message_saved', [
                    'folder'  => $folder,
                    'message' => $message,
                    'headers' => $headers,
                    'is_file' => $is_file,
                    'flags'   => $flags,
                    'date'    => $date,
                    'binary'  => $binary,
                    'result'  => $saved,
            ]);
        }

        return $saved;
    }

    /**
     * Move a message from one folder to another
     *
     * @param mixed  $uids      Message UIDs as array or comma-separated string, or '*'
     * @param string $to_mbox   Target folder
     * @param string $from_mbox Source folder
     *
     * @return bool True on success, False on error
     */
    public function move_message($uids, $to_mbox, $from_mbox = '')
    {
        if (!strlen($from_mbox)) {
            $from_mbox = $this->folder;
        }

        if ($to_mbox === $from_mbox) {
            return false;
        }

        list($uids, $all_mode) = $this->parse_uids($uids);

        // exit if no message uids are specified
        if (empty($uids)) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $config   = rcube::get_instance()->config;
        $to_trash = $to_mbox == $config->get('trash_mbox');

        // flag messages as read before moving them
        if ($to_trash && $config->get('read_when_deleted')) {
            // don't flush cache (4th argument)
            $this->set_flag($uids, 'SEEN', $from_mbox, true);
        }

        // move messages
        $moved = $this->conn->move($uids, $from_mbox, $to_mbox);

        // when moving to Trash we make sure the folder exists
        // as it's uncommon scenario we do this when MOVE fails, not before
        if (!$moved && $to_trash && $this->get_response_code() == rcube_storage::TRYCREATE) {
            if ($this->create_folder($to_mbox, true, 'trash')) {
                $moved = $this->conn->move($uids, $from_mbox, $to_mbox);
            }
        }

        if ($moved) {
            $this->clear_messagecount($from_mbox);
            $this->clear_messagecount($to_mbox);
            $this->set_search_dirty($from_mbox);
            $this->set_search_dirty($to_mbox);

            // unset threads internal cache
            unset($this->icache['threads']);

            // remove message ids from search set
            if ($this->search_set && $from_mbox == $this->folder) {
                // threads are too complicated to just remove messages from set
                if ($this->search_threads || $all_mode) {
                    $this->refresh_search();
                }
                else if (!$this->search_set->incomplete) {
                    $this->search_set->filter(explode(',', $uids), $this->folder);
                }
            }

            // remove cached messages
            // @TODO: do cache update instead of clearing it
            $this->clear_message_cache($from_mbox, $all_mode ? null : explode(',', $uids));
        }

        return $moved;
    }

    /**
     * Copy a message from one folder to another
     *
     * @param mixed  $uids      Message UIDs as array or comma-separated string, or '*'
     * @param string $to_mbox   Target folder
     * @param string $from_mbox Source folder
     *
     * @return bool True on success, False on error
     */
    public function copy_message($uids, $to_mbox, $from_mbox = '')
    {
        if (!strlen($from_mbox)) {
            $from_mbox = $this->folder;
        }

        list($uids, ) = $this->parse_uids($uids);

        // exit if no message uids are specified
        if (empty($uids)) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        // copy messages
        $copied = $this->conn->copy($uids, $from_mbox, $to_mbox);

        if ($copied) {
            $this->clear_messagecount($to_mbox);
        }

        return $copied;
    }

    /**
     * Mark messages as deleted and expunge them
     *
     * @param mixed  $uids   Message UIDs as array or comma-separated string, or '*'
     * @param string $folder Source folder
     *
     * @return bool True on success, False on error
     */
    public function delete_message($uids, $folder = '')
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        list($uids, $all_mode) = $this->parse_uids($uids);

        // exit if no message uids are specified
        if (empty($uids)) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $deleted = $this->conn->flag($folder, $uids, 'DELETED');

        if ($deleted) {
            // send expunge command in order to have the deleted message
            // really deleted from the folder
            $this->expunge_message($uids, $folder, false);
            $this->clear_messagecount($folder);

            // unset threads internal cache
            unset($this->icache['threads']);

            $this->set_search_dirty($folder);

            // remove message ids from search set
            if ($this->search_set && $folder == $this->folder) {
                // threads are too complicated to just remove messages from set
                if ($this->search_threads || $all_mode) {
                    $this->refresh_search();
                }
                else if (!$this->search_set->incomplete) {
                    $this->search_set->filter(explode(',', $uids));
                }
            }

            // remove cached messages
            $this->clear_message_cache($folder, $all_mode ? null : explode(',', $uids));
        }

        return $deleted;
    }

    /**
     * Send IMAP expunge command and clear cache
     *
     * @param mixed  $uids        Message UIDs as array or comma-separated string, or '*'
     * @param string $folder      Folder name
     * @param bool   $clear_cache False if cache should not be cleared
     *
     * @return bool True on success, False on failure
     */
    public function expunge_message($uids, $folder = null, $clear_cache = true)
    {
        if ($uids && $this->get_capability('UIDPLUS')) {
            list($uids, $all_mode) = $this->parse_uids($uids);
        }
        else {
            $uids = null;
        }

        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        if (!$this->check_connection()) {
            return false;
        }

        // force folder selection and check if folder is writeable
        // to prevent a situation when CLOSE is executed on closed
        // or EXPUNGE on read-only folder
        $result = $this->conn->select($folder);
        if (!$result) {
            return false;
        }

        // CLOSE(+SELECT) should be faster than EXPUNGE
        if (empty($uids) || !empty($all_mode)) {
            $result = $this->conn->close();
        }
        else {
            $result = $this->conn->expunge($folder, $uids);
        }

        if ($result && $clear_cache) {
            $this->clear_message_cache($folder, (!empty($all_mode) || empty($uids)) ? null : explode(',', $uids));
            $this->clear_messagecount($folder);
        }

        return $result;
    }


    /* --------------------------------
     *        folder management
     * --------------------------------*/

    /**
     * Public method for listing subscribed folders.
     *
     * @param   string  $root      Optional root folder
     * @param   string  $name      Optional name pattern
     * @param   string  $filter    Optional filter
     * @param   string  $rights    Optional ACL requirements
     * @param   bool    $skip_sort Enable to return unsorted list (for better performance)
     *
     * @return  array   List of folders
     */
    public function list_folders_subscribed($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false)
    {
        $cache_key = rcube_cache::key_name('mailboxes', [$root, $name, $filter, $rights]);

        // get cached folder list
        $a_mboxes = $this->get_cache($cache_key);
        if (is_array($a_mboxes)) {
            return $a_mboxes;
        }

        // Give plugins a chance to provide a list of folders
        $data = $this->plugins->exec_hook('storage_folders',
            ['root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LSUB']);

        if (isset($data['folders'])) {
            $a_mboxes = $data['folders'];
        }
        else {
            $a_mboxes = $this->list_folders_subscribed_direct($root, $name);
        }

        if (!is_array($a_mboxes)) {
            return [];
        }

        // filter folders list according to rights requirements
        if ($rights && $this->get_capability('ACL')) {
            $a_mboxes = $this->filter_rights($a_mboxes, $rights);
        }

        // INBOX should always be available
        if (in_array_nocase($root . $name, ['*', '%', 'INBOX', 'INBOX*'])
            && (!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)
        ) {
            array_unshift($a_mboxes, 'INBOX');
        }

        // sort folders (always sort for cache)
        if (!$skip_sort || $this->cache) {
            $a_mboxes = $this->sort_folder_list($a_mboxes);
        }

        // write folders list to cache
        $this->update_cache($cache_key, $a_mboxes);

        return $a_mboxes;
    }

    /**
     * Method for direct folders listing (LSUB)
     *
     * @param string $root Optional root folder
     * @param string $name Optional name pattern
     *
     * @return array List of subscribed folders
     * @see rcube_imap::list_folders_subscribed()
     */
    public function list_folders_subscribed_direct($root = '', $name = '*')
    {
        if (!$this->check_connection()) {
            return null;
        }

        $config    = rcube::get_instance()->config;
        $list_root = $root === '' && $this->list_root ? $this->list_root : $root;

        // Server supports LIST-EXTENDED, we can use selection options
        // #1486225: Some dovecot versions return wrong result using LIST-EXTENDED
        $list_extended = !$config->get('imap_force_lsub') && $this->get_capability('LIST-EXTENDED');

        if ($list_extended) {
            // This will also set folder options, LSUB doesn't do that
            $result = $this->conn->listMailboxes($list_root, $name, null, ['SUBSCRIBED']);
        }
        else {
            // retrieve list of folders from IMAP server using LSUB
            $result = $this->conn->listSubscribed($list_root, $name);
        }

        if (!is_array($result)) {
            return [];
        }

        // Add/Remove folders according to some configuration options
        $this->list_folders_filter($result, $root . $name, ($list_extended ? 'ext-' : '') . 'subscribed');

        // Save the last command state, so we can ignore errors on any following UNSUBSCRIBE calls
        $state = $this->save_conn_state();

        if ($list_extended) {
            // unsubscribe non-existent folders, remove from the list
            if ($name == '*' && !empty($this->conn->data['LIST'])) {
                foreach ($result as $idx => $folder) {
                    if (($opts = $this->conn->data['LIST'][$folder])
                        && in_array_nocase('\\NonExistent', $opts)
                    ) {
                        $this->conn->unsubscribe($folder);
                        unset($result[$idx]);
                    }
                }
            }
        }
        else {
            // unsubscribe non-existent folders, remove them from the list
            if (!empty($result) && $name == '*') {
                $existing = $this->list_folders($root, $name);

                // Try to make sure the list of existing folders is not malformed,
                // we don't want to unsubscribe existing folders on error
                if (is_array($existing) && (!empty($root) || count($existing) > 1)) {
                    $nonexisting = array_diff($result, $existing);
                    $result      = array_diff($result, $nonexisting);

                    foreach ($nonexisting as $folder) {
                        $this->conn->unsubscribe($folder);
                    }
                }
            }
        }

        $this->restore_conn_state($state);

        return $result;
    }

    /**
     * Get a list of all folders available on the server
     *
     * @param string  $root      IMAP root dir
     * @param string  $name      Optional name pattern
     * @param mixed   $filter    Optional filter
     * @param string  $rights    Optional ACL requirements
     * @param bool    $skip_sort Enable to return unsorted list (for better performance)
     *
     * @return array Indexed array with folder names
     */
    public function list_folders($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false)
    {
        $cache_key = rcube_cache::key_name('mailboxes.list', [$root, $name, $filter, $rights]);

        // get cached folder list
        $a_mboxes = $this->get_cache($cache_key);
        if (is_array($a_mboxes)) {
            return $a_mboxes;
        }

        // Give plugins a chance to provide a list of folders
        $data = $this->plugins->exec_hook('storage_folders',
            ['root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LIST']);

        if (isset($data['folders'])) {
            $a_mboxes = $data['folders'];
        }
        else {
            // retrieve list of folders from IMAP server
            $a_mboxes = $this->list_folders_direct($root, $name);
        }

        if (!is_array($a_mboxes)) {
            $a_mboxes = [];
        }

        // INBOX should always be available
        if (in_array_nocase($root . $name, ['*', '%', 'INBOX', 'INBOX*'])
            && (!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)
        ) {
            array_unshift($a_mboxes, 'INBOX');
        }

        // cache folder attributes
        if ($root == '' && $name == '*' && empty($filter) && !empty($this->conn->data)) {
            $this->update_cache('mailboxes.attributes', $this->conn->data['LIST']);
        }

        // filter folders list according to rights requirements
        if ($rights && $this->get_capability('ACL')) {
            $a_mboxes = $this->filter_rights($a_mboxes, $rights);
        }

        // filter folders and sort them
        if (!$skip_sort) {
            $a_mboxes = $this->sort_folder_list($a_mboxes);
        }

        // write folders list to cache
        $this->update_cache($cache_key, $a_mboxes);

        return $a_mboxes;
    }

    /**
     * Method for direct folders listing (LIST)
     *
     * @param string $root Optional root folder
     * @param string $name Optional name pattern
     *
     * @return array List of folders
     * @see rcube_imap::list_folders()
     */
    public function list_folders_direct($root = '', $name = '*')
    {
        if (!$this->check_connection()) {
            return null;
        }

        $list_root = $root === '' && $this->list_root ? $this->list_root : $root;

        $result = $this->conn->listMailboxes($list_root, $name);

        if (!is_array($result)) {
            return [];
        }

        // Add/Remove folders according to some configuration options
        $this->list_folders_filter($result, $root . $name);

        return $result;
    }

    /**
     * Apply configured filters on folders list
     */
    protected function list_folders_filter(&$result, $root, $update_type = null)
    {
        $config = rcube::get_instance()->config;

        // #1486796: some server configurations doesn't return folders in all namespaces
        if ($root === '*' && $config->get('imap_force_ns')) {
            $this->list_folders_update($result, $update_type);
        }

        // Remove hidden folders
        if ($config->get('imap_skip_hidden_folders')) {
            $result = array_filter($result, function($v) { return $v[0] != '.'; });
        }

        // Remove folders in shared namespaces (if configured, see self::set_env())
        if ($root === '*' && !empty($this->list_excludes)) {
            $result = array_filter($result, function($v) {
                foreach ($this->list_excludes as $prefix) {
                    if (strpos($v, $prefix) === 0) {
                        return false;
                    }
                }

                return true;
            });
        }
    }

    /**
     * Fix folders list by adding folders from other namespaces.
     * Needed on some servers e.g. Courier IMAP
     *
     * @param array  $result Reference to folders list
     * @param string $type   Listing type (ext-subscribed, subscribed or all)
     */
    protected function list_folders_update(&$result, $type = null)
    {
        $namespace = $this->get_namespace();
        $search    = [];

        // build list of namespace prefixes
        foreach ((array)$namespace as $ns) {
            if (is_array($ns)) {
                foreach ($ns as $ns_data) {
                    if (strlen($ns_data[0])) {
                        $search[] = $ns_data[0];
                    }
                }
            }
        }

        if (!empty($search)) {
            // go through all folders detecting namespace usage
            foreach ($result as $folder) {
                foreach ($search as $idx => $prefix) {
                    if (strpos($folder, $prefix) === 0) {
                        unset($search[$idx]);
                    }
                }
                if (empty($search)) {
                    break;
                }
            }

            // get folders in hidden namespaces and add to the result
            foreach ($search as $prefix) {
                if ($type == 'ext-subscribed') {
                    $list = $this->conn->listMailboxes('', $prefix . '*', null, ['SUBSCRIBED']);
                }
                else if ($type == 'subscribed') {
                    $list = $this->conn->listSubscribed('', $prefix . '*');
                }
                else {
                    $list = $this->conn->listMailboxes('', $prefix . '*');
                }

                if (!empty($list)) {
                    $result = array_merge($result, $list);
                }
            }
        }
    }

    /**
     * Filter the given list of folders according to access rights
     *
     * For performance reasons we assume user has full rights
     * on all personal folders.
     */
    protected function filter_rights($a_folders, $rights)
    {
        $regex = '/('.$rights.')/';

        foreach ($a_folders as $idx => $folder) {
            if ($this->folder_namespace($folder) == 'personal') {
                continue;
            }

            $myrights = implode('', (array)$this->my_rights($folder));

            if ($myrights !== null && !preg_match($regex, $myrights)) {
                unset($a_folders[$idx]);
            }
        }

        return $a_folders;
    }

    /**
     * Get mailbox quota information
     *
     * @param string $folder Folder name
     *
     * @return mixed Quota info or False if not supported
     */
    public function get_quota($folder = null)
    {
        if ($this->get_capability('QUOTA') && $this->check_connection()) {
            return $this->conn->getQuota($folder);
        }

        return false;
    }

    /**
     * Get folder size (size of all messages in a folder)
     *
     * @param string $folder Folder name
     *
     * @return int Folder size in bytes, False on error
     */
    public function folder_size($folder)
    {
        if (!is_string($folder) || !strlen($folder)) {
            return false;
        }

        if (!$this->check_connection()) {
            return 0;
        }

        if ($this->get_capability('STATUS=SIZE')) {
            $status = $this->conn->status($folder, ['SIZE']);
            if (is_array($status) && array_key_exists('SIZE', $status)) {
                return (int) $status['SIZE'];
            }
        }

        // On Cyrus we can use special folder annotation, which should be much faster
        if ($this->get_vendor() == 'cyrus') {
            $idx    = '/shared/vendor/cmu/cyrus-imapd/size';
            $result = $this->get_metadata($folder, $idx, [], true);

            if (!empty($result) && isset($result[$folder][$idx]) && is_numeric($result[$folder][$idx])) {
                return $result[$folder][$idx];
            }
        }

        // @TODO: could we try to use QUOTA here?
        $result = $this->conn->fetchHeaderIndex($folder, '1:*', 'SIZE', false);

        if (is_array($result)) {
            $result = array_sum($result);
        }

        return $result;
    }

    /**
     * Subscribe to a specific folder(s)
     *
     * @param array $folders Folder name(s)
     *
     * @return bool True on success, False on failure
     */
    public function subscribe($folders)
    {
        // let this common function do the main work
        return $this->change_subscription($folders, 'subscribe');
    }

    /**
     * Unsubscribe folder(s)
     *
     * @param array $folders Folder name(s)
     *
     * @return bool True on success, False on failure
     */
    public function unsubscribe($folders)
    {
        // let this common function do the main work
        return $this->change_subscription($folders, 'unsubscribe');
    }

    /**
     * Create a new folder on the server and register it in local cache
     *
     * @param string $folder    New folder name
     * @param bool   $subscribe True if the new folder should be subscribed
     * @param string $type      Optional folder type (junk, trash, drafts, sent, archive)
     * @param bool   $noselect  Make the folder a \NoSelect folder by adding hierarchy
     *                          separator at the end (useful for server that do not support
     *                          both folders and messages as folder children)
     *
     * @return bool True on success, False on failure
     */
    public function create_folder($folder, $subscribe = false, $type = null, $noselect = false)
    {
        if (!$this->check_connection()) {
            return false;
        }

        if ($noselect) {
            $folder .= $this->delimiter;
        }

        $result = $this->conn->createFolder($folder, $type ? ["\\" . ucfirst($type)] : null);

        // Folder creation may fail when specific special-use flag is not supported.
        // Try to create it anyway with no flag specified (#7147)
        if (!$result && $type) {
            $result = $this->conn->createFolder($folder);
        }

        // try to subscribe it
        if ($result) {
            // clear cache
            $this->clear_cache('mailboxes', true);

            if ($subscribe && !$noselect) {
                $this->subscribe($folder);
            }
        }

        return $result;
    }

    /**
     * Set a new name to an existing folder
     *
     * @param string $folder   Folder to rename
     * @param string $new_name New folder name
     *
     * @return bool True on success, False on failure
     */
    public function rename_folder($folder, $new_name)
    {
        if (!strlen($new_name)) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $delm = $this->get_hierarchy_delimiter();

        // get list of subscribed folders
        if ((strpos($folder, '%') === false) && (strpos($folder, '*') === false)) {
            $a_subscribed = $this->list_folders_subscribed($folder . $delm, '*');
            $subscribed   = $this->folder_exists($folder, true);
        }
        else {
            $a_subscribed = $this->list_folders_subscribed();
            $subscribed   = in_array($folder, $a_subscribed);
        }

        $result = $this->conn->renameFolder($folder, $new_name);

        if ($result) {
            // unsubscribe the old folder, subscribe the new one
            if ($subscribed) {
                $this->conn->unsubscribe($folder);
                $this->conn->subscribe($new_name);
            }

            // check if folder children are subscribed
            foreach ($a_subscribed as $c_subscribed) {
                if (strpos($c_subscribed, $folder.$delm) === 0) {
                    $this->conn->unsubscribe($c_subscribed);
                    $this->conn->subscribe(preg_replace('/^'.preg_quote($folder, '/').'/',
                        $new_name, $c_subscribed));

                    // clear cache
                    $this->clear_message_cache($c_subscribed);
                }
            }

            // clear cache
            $this->clear_message_cache($folder);
            $this->clear_cache('mailboxes', true);
        }

        return $result;
    }

    /**
     * Remove folder (with subfolders) from the server
     *
     * @param string $folder Folder name
     *
     * @return bool True on success, False on failure
     */
    public function delete_folder($folder)
    {
        if (!$this->check_connection()) {
            return false;
        }

        $delm = $this->get_hierarchy_delimiter();

        // get list of sub-folders or all folders
        // if folder name contains special characters
        $path       = strpos($folder, '*') === false && strpos($folder, '%') === false ? ($folder . $delm) : '';
        $sub_mboxes = $this->list_folders($path, '*');

        // According to RFC3501 deleting a \Noselect folder
        // with subfolders may fail. To workaround this we delete
        // subfolders first (in reverse order) (#5466)
        if (!empty($sub_mboxes)) {
            foreach (array_reverse($sub_mboxes) as $mbox) {
                if (strpos($mbox, $folder . $delm) === 0) {
                    if ($this->conn->deleteFolder($mbox)) {
                        $this->conn->unsubscribe($mbox);
                        $this->clear_message_cache($mbox);
                    }
                }
            }
        }

        // delete the folder
        if ($result = $this->conn->deleteFolder($folder)) {
            // and unsubscribe it
            $this->conn->unsubscribe($folder);
            $this->clear_message_cache($folder);
        }

        $this->clear_cache('mailboxes', true);

        return $result;
    }

    /**
     * Detect special folder associations stored in storage backend
     */
    public function get_special_folders($forced = false)
    {
        $result = parent::get_special_folders();
        $rcube  = rcube::get_instance();

        // Lock SPECIAL-USE after user preferences change (#4782)
        if ($rcube->config->get('lock_special_folders')) {
            return $result;
        }

        if (isset($this->icache['special-use'])) {
            return array_merge($result, $this->icache['special-use']);
        }

        if (!$forced || !$this->get_capability('SPECIAL-USE')) {
            return $result;
        }

        if (!$this->check_connection()) {
            return $result;
        }

        $types   = array_map(function($value) { return "\\" . ucfirst($value); }, rcube_storage::$folder_types);
        $special = [];

        // request \Subscribed flag in LIST response as performance improvement for folder_exists()
        $folders = $this->conn->listMailboxes('', '*', ['SUBSCRIBED'], ['SPECIAL-USE']);

        if (!empty($folders)) {
            foreach ($folders as $idx => $folder) {
                if (is_array($folder)) {
                    $folder = $idx;
                }
                if (!empty($this->conn->data['LIST'][$folder])) {
                    $flags = $this->conn->data['LIST'][$folder];
                    foreach ($types as $type) {
                        if (in_array($type, $flags)) {
                            $type           = strtolower(substr($type, 1));
                            $special[$type] = $folder;
                        }
                    }
                }
            }
        }

        $this->icache['special-use'] = $special;
        unset($this->icache['special-folders']);

        return array_merge($result, $special);
    }

    /**
     * Set special folder associations stored in storage backend
     */
    public function set_special_folders($specials)
    {
        if (!$this->get_capability('SPECIAL-USE') || !$this->get_capability('METADATA')) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $folders = $this->get_special_folders(true);
        $old     = isset($this->icache['special-use']) ? (array) $this->icache['special-use'] : [];

        foreach ($specials as $type => $folder) {
            if (in_array($type, rcube_storage::$folder_types)) {
                $old_folder = $old[$type] ?? null;
                if ($old_folder !== $folder) {
                    // unset old-folder metadata
                    if ($old_folder !== null) {
                        $this->delete_metadata($old_folder, ['/private/specialuse']);
                    }
                    // set new folder metadata
                    if ($folder) {
                        $this->set_metadata($folder, ['/private/specialuse' => "\\" . ucfirst($type)]);
                    }
                }
            }
        }

        $this->icache['special-use'] = $specials;
        unset($this->icache['special-folders']);

        return true;
    }

    /**
     * Checks if folder exists and is subscribed
     *
     * @param string  $folder       Folder name
     * @param bool    $subscription Enable subscription checking
     *
     * @return bool True or False
     */
    public function folder_exists($folder, $subscription = false)
    {
        if ($folder == 'INBOX') {
            return true;
        }

        $key = $subscription ? 'subscribed' : 'existing';

        if (!empty($this->icache[$key]) && in_array($folder, (array) $this->icache[$key])) {
            return true;
        }

        if (!$this->check_connection()) {
            return false;
        }

        if ($subscription) {
            // It's possible we already called LIST command, check LIST data
            if (!empty($this->conn->data['LIST']) && !empty($this->conn->data['LIST'][$folder])
                && in_array_nocase('\\Subscribed', $this->conn->data['LIST'][$folder])
            ) {
                $a_folders = [$folder];
            }
            else {
                $a_folders = $this->conn->listSubscribed('', $folder);
            }
        }
        else {
            // It's possible we already called LIST command, check LIST data
            if (!empty($this->conn->data['LIST']) && isset($this->conn->data['LIST'][$folder])) {
                $a_folders = [$folder];
            }
            else {
                $a_folders = $this->conn->listMailboxes('', $folder);
            }
        }

        if (is_array($a_folders) && in_array($folder, $a_folders)) {
            $this->icache[$key][] = $folder;
            return true;
        }

        return false;
    }

    /**
     * Returns the namespace where the folder is in
     *
     * @param string $folder Folder name
     *
     * @return string One of 'personal', 'other' or 'shared'
     */
    public function folder_namespace($folder)
    {
        if ($folder == 'INBOX') {
            return 'personal';
        }

        foreach ($this->namespace as $type => $namespace) {
            if (is_array($namespace)) {
                foreach ($namespace as $ns) {
                    if ($len = strlen($ns[0])) {
                        if (($len > 1 && $folder == substr($ns[0], 0, -1))
                            || strpos($folder, $ns[0]) === 0
                        ) {
                            return $type;
                        }
                    }
                }
            }
        }

        return 'personal';
    }

    /**
     * Modify folder name according to personal namespace prefix.
     * For output it removes prefix of the personal namespace if it's possible.
     * For input it adds the prefix. Use it before creating a folder in root
     * of the folders tree.
     *
     * @param string $folder Folder name
     * @param string $mode   Mode name (out/in)
     *
     * @return string Folder name
     */
    public function mod_folder($folder, $mode = 'out')
    {
        $prefix = $this->namespace['prefix_' . $mode] ?? null;

        if ($prefix === null || $prefix === ''
            || !($prefix_len = strlen($prefix)) || !strlen($folder)
        ) {
            return $folder;
        }

        // remove prefix for output
        if ($mode == 'out') {
            if (substr($folder, 0, $prefix_len) === $prefix) {
                return substr($folder, $prefix_len);
            }

            return $folder;
        }

        // add prefix for input (e.g. folder creation)
        return $prefix . $folder;
    }

    /**
     * Gets folder attributes from LIST response, e.g. \Noselect, \Noinferiors
     *
     * @param string $folder Folder name
     * @param bool   $force  Set to True if attributes should be refreshed
     *
     * @return array Options list
     */
    public function folder_attributes($folder, $force = false)
    {
        // get attributes directly from LIST command
        if (!empty($this->conn->data['LIST'])
            && isset($this->conn->data['LIST'][$folder])
            && is_array($this->conn->data['LIST'][$folder])
        ) {
            $opts = $this->conn->data['LIST'][$folder];
        }
        // get cached folder attributes
        else if (!$force) {
            $opts = $this->get_cache('mailboxes.attributes');
            if ($opts && isset($opts[$folder])) {
                $opts = $opts[$folder];
            }
        }

        if (!isset($opts) || !is_array($opts)) {
            if (!$this->check_connection()) {
                return [];
            }

            $this->conn->listMailboxes('', $folder);

            if (isset($this->conn->data['LIST'][$folder])) {
                $opts = $this->conn->data['LIST'][$folder];
            }
        }

        return isset($opts) && is_array($opts) ? $opts : [];
    }

    /**
     * Gets connection (and current folder) data: UIDVALIDITY, EXISTS, RECENT,
     * PERMANENTFLAGS, UIDNEXT, UNSEEN
     *
     * @param string $folder Folder name
     *
     * @return array Data
     */
    public function folder_data($folder)
    {
        if (!strlen((string) $folder)) {
            $folder = $this->folder !== null ? $this->folder : 'INBOX';
        }

        if ($this->conn->selected != $folder) {
            if (!$this->check_connection()) {
                return [];
            }

            if ($this->conn->select($folder)) {
                $this->folder = $folder;
            }
            else {
                return null;
            }
        }

        $data = $this->conn->data;

        // add (E)SEARCH result for ALL UNDELETED query
        if (!empty($this->icache['undeleted_idx'])
            && $this->icache['undeleted_idx']->get_parameters('MAILBOX') == $folder
        ) {
            $data['UNDELETED'] = $this->icache['undeleted_idx'];
        }

        // dovecot does not return HIGHESTMODSEQ until requested, we use it though in our caching system
        // calling STATUS is needed only once, after first use mod-seq db will be maintained
        if (!isset($data['HIGHESTMODSEQ']) && empty($data['NOMODSEQ'])
            && ($this->get_capability('QRESYNC') || $this->get_capability('CONDSTORE'))
        ) {
            if ($add_data = $this->conn->status($folder, ['HIGHESTMODSEQ'])) {
                $data = array_merge($data, $add_data);
            }
        }

        return $data;
    }

    /**
     * Returns extended information about the folder
     *
     * @param string $folder Folder name
     *
     * @return array Data
     */
    public function folder_info($folder)
    {
        if (!empty($this->icache['options']) && $this->icache['options']['name'] == $folder) {
            return $this->icache['options'];
        }

        // get cached metadata
        $cache_key = rcube_cache::key_name('mailboxes.folder-info', [$folder]);
        $cached    = $this->get_cache($cache_key);

        if (is_array($cached)) {
            return $cached;
        }

        $acl       = $this->get_capability('ACL');
        $namespace = $this->get_namespace();
        $options   = ['is_root' => false];

        // check if the folder is a namespace prefix
        if (!empty($namespace)) {
            $mbox = $folder . $this->delimiter;
            foreach ($namespace as $ns) {
                if (!empty($ns)) {
                    foreach ($ns as $item) {
                        if ($item[0] === $mbox) {
                            $options['is_root'] = true;
                            break 2;
                        }
                    }
                }
            }
        }
        // check if the folder is other user virtual-root
        if ($options['is_root'] && !empty($namespace) && !empty($namespace['other'])) {
            $parts = explode($this->delimiter, $folder);
            if (count($parts) == 2) {
                $mbox = $parts[0] . $this->delimiter;
                foreach ($namespace['other'] as $item) {
                    if ($item[0] === $mbox) {
                        $options['is_root'] = true;
                        break;
                    }
                }
            }
        }

        $options['name']       = $folder;
        $options['attributes'] = $this->folder_attributes($folder, true);
        $options['namespace']  = $this->folder_namespace($folder);
        $options['special']    = $this->is_special_folder($folder);
        $options['noselect']   = false;

        // Set 'noselect' flag
        if (is_array($options['attributes'])) {
            foreach ($options['attributes'] as $attrib) {
                $attrib = strtolower($attrib);
                if ($attrib == '\noselect' || $attrib == '\nonexistent') {
                    $options['noselect'] = true;
                }
            }
        }
        else {
            $options['noselect'] = true;
        }

        // Get folder rights (MYRIGHTS)
        if ($acl && ($rights = $this->my_rights($folder))) {
            $options['rights'] = $rights;
        }

        // Set 'norename' flag
        if (!empty($options['rights'])) {
            $rfc_4314 = is_array($this->get_capability('RIGHTS'));
            $options['norename'] = ($rfc_4314 && !in_array('x', $options['rights']))
                                || (!$rfc_4314 && !in_array('d', $options['rights']));

            if (!$options['noselect']) {
                $options['noselect'] = !in_array('r', $options['rights']);
            }
        }
        else {
            $options['norename'] = $options['is_root'] || $options['namespace'] != 'personal';
        }

        // update caches
        $this->icache['options'] = $options;
        $this->update_cache($cache_key, $options);

        return $options;
    }

    /**
     * Synchronizes messages cache.
     *
     * @param string $folder Folder name
     */
    public function folder_sync($folder)
    {
        if ($mcache = $this->get_mcache_engine()) {
            $mcache->synchronize($folder);
        }
    }

    /**
     * Check if the folder name is valid
     *
     * @param string $folder Folder name (UTF-8)
     * @param string &$char  First forbidden character found
     *
     * @return bool True if the name is valid, False otherwise
     */
    public function folder_validate($folder, &$char = null)
    {
        if (parent::folder_validate($folder, $char)) {
            $vendor = $this->get_vendor();
            $regexp = '\\x00-\\x1F\\x7F%*';

            if ($vendor == 'cyrus') {
                // List based on testing Kolab's Cyrus-IMAP 2.5
                $regexp .= '!`@(){}|\\?<;"';
            }

            if (!preg_match("/[$regexp]/", $folder, $m)) {
                return true;
            }

            $char = $m[0];
        }

        return false;
    }

    /**
     * Get message header names for rcube_imap_generic::fetchHeader(s)
     *
     * @return string Space-separated list of header names
     */
    protected function get_fetch_headers()
    {
        if (!empty($this->options['fetch_headers'])) {
            $headers = explode(' ', $this->options['fetch_headers']);
        }
        else {
            $headers = [];
        }

        if ($this->messages_caching || !empty($this->options['all_headers'])) {
            $headers = array_merge($headers, $this->all_headers);
        }

        return $headers;
    }


    /* -----------------------------------------
     *   ACL and METADATA/ANNOTATEMORE methods
     * ----------------------------------------*/

    /**
     * Changes the ACL on the specified folder (SETACL)
     *
     * @param string $folder  Folder name
     * @param string $user    User name
     * @param string $acl     ACL string
     *
     * @return bool True on success, False on failure
     * @since 0.5-beta
     */
    public function set_acl($folder, $user, $acl)
    {
        if (!$this->get_capability('ACL')) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $this->clear_cache(rcube_cache::key_name('mailboxes.folder-info', [$folder]));

        return $this->conn->setACL($folder, $user, $acl);
    }

    /**
     * Removes any <identifier,rights> pair for the
     * specified user from the ACL for the specified
     * folder (DELETEACL)
     *
     * @param string $folder  Folder name
     * @param string $user    User name
     *
     * @return bool True on success, False on failure
     * @since 0.5-beta
     */
    public function delete_acl($folder, $user)
    {
        if (!$this->get_capability('ACL')) {
            return false;
        }

        if (!$this->check_connection()) {
            return false;
        }

        return $this->conn->deleteACL($folder, $user);
    }

    /**
     * Returns the access control list for folder (GETACL)
     *
     * @param string $folder Folder name
     *
     * @return array User-rights array on success, NULL on error
     * @since 0.5-beta
     */
    public function get_acl($folder)
    {
        if (!$this->get_capability('ACL')) {
            return null;
        }

        if (!$this->check_connection()) {
            return null;
        }

        return $this->conn->getACL($folder);
    }

    /**
     * Returns information about what rights can be granted to the
     * user (identifier) in the ACL for the folder (LISTRIGHTS)
     *
     * @param string $folder  Folder name
     * @param string $user    User name
     *
     * @return array List of user rights
     * @since 0.5-beta
     */
    public function list_rights($folder, $user)
    {
        if (!$this->get_capability('ACL')) {
            return null;
        }

        if (!$this->check_connection()) {
            return null;
        }

        return $this->conn->listRights($folder, $user);
    }

    /**
     * Returns the set of rights that the current user has to
     * folder (MYRIGHTS)
     *
     * @param string $folder Folder name
     *
     * @return array MYRIGHTS response on success, NULL on error
     * @since 0.5-beta
     */
    public function my_rights($folder)
    {
        if (!$this->get_capability('ACL')) {
            return null;
        }

        if (!$this->check_connection()) {
            return null;
        }

        return $this->conn->myRights($folder);
    }

    /**
     * Sets IMAP metadata/annotations (SETMETADATA/SETANNOTATION)
     *
     * @param string $folder  Folder name (empty for server metadata)
     * @param array  $entries Entry-value array (use NULL value as NIL)
     *
     * @return bool True on success, False on failure
     * @since 0.5-beta
     */
    public function set_metadata($folder, $entries)
    {
        if (!$this->check_connection()) {
            return false;
        }

        $this->clear_cache('mailboxes.metadata.', true);

        if ($this->get_capability('METADATA') ||
            (!is_string($folder) || !strlen($folder) && $this->get_capability('METADATA-SERVER'))
        ) {
            return $this->conn->setMetadata($folder, $entries);
        }

        if ($this->get_capability('ANNOTATEMORE') || $this->get_capability('ANNOTATEMORE2')) {
            foreach ((array)$entries as $entry => $value) {
                list($ent, $attr) = $this->md2annotate($entry);
                $entries[$entry] = [$ent, $attr, $value];
            }

            return $this->conn->setAnnotation($folder, $entries);
        }

        return false;
    }

    /**
     * Unsets IMAP metadata/annotations (SETMETADATA/SETANNOTATION)
     *
     * @param string $folder  Folder name (empty for server metadata)
     * @param array  $entries Entry names array
     *
     * @return bool True on success, False on failure
     * @since 0.5-beta
     */
    public function delete_metadata($folder, $entries)
    {
        if (!$this->check_connection()) {
            return false;
        }

        $this->clear_cache('mailboxes.metadata.', true);

        if ($this->get_capability('METADATA') ||
            (!is_string($folder) || !strlen($folder) && $this->get_capability('METADATA-SERVER'))
        ) {
            return $this->conn->deleteMetadata($folder, $entries);
        }

        if ($this->get_capability('ANNOTATEMORE') || $this->get_capability('ANNOTATEMORE2')) {
            foreach ((array)$entries as $idx => $entry) {
                list($ent, $attr) = $this->md2annotate($entry);
                $entries[$idx] = [$ent, $attr, null];
            }

            return $this->conn->setAnnotation($folder, $entries);
        }

        return false;
    }

    /**
     * Returns IMAP metadata/annotations (GETMETADATA/GETANNOTATION)
     *
     * @param string  $folder   Folder name (empty for server metadata)
     * @param array   $entries  Entries
     * @param array   $options  Command options (with MAXSIZE and DEPTH keys)
     * @param bool    $force    Disables cache use
     *
     * @return array Metadata entry-value hash array on success, NULL on error
     * @since 0.5-beta
     */
    public function get_metadata($folder, $entries, $options = [], $force = false)
    {
        $entries = (array) $entries;

        if (!$force) {
            $cache_key = rcube_cache::key_name('mailboxes.metadata', [$folder, $options, $entries]);

            // get cached data
            $cached_data = $this->get_cache($cache_key);

            if (is_array($cached_data)) {
                return $cached_data;
            }
        }

        if (!$this->check_connection()) {
            return null;
        }

        if ($this->get_capability('METADATA') ||
            (!is_string($folder) || !strlen($folder) && $this->get_capability('METADATA-SERVER'))
        ) {
            $res = $this->conn->getMetadata($folder, $entries, $options);
        }
        else if ($this->get_capability('ANNOTATEMORE') || $this->get_capability('ANNOTATEMORE2')) {
            $queries = [];
            $res     = [];

            // Convert entry names
            foreach ($entries as $entry) {
                list($ent, $attr) = $this->md2annotate($entry);
                $queries[$attr][] = $ent;
            }

            // @TODO: Honor MAXSIZE and DEPTH options
            foreach ($queries as $attrib => $entry) {
                $result = $this->conn->getAnnotation($folder, $entry, $attrib);

                // an error, invalidate any previous getAnnotation() results
                if (!is_array($result)) {
                    return null;
                }

                foreach ($result as $fldr => $data) {
                    $res[$fldr] = array_merge((array) $res[$fldr], $data);
                }
            }
        }

        if (isset($res)) {
            if (!$force && !empty($cache_key)) {
                $this->update_cache($cache_key, $res);
            }

            return $res;
        }
    }

    /**
     * Converts the METADATA extension entry name into the correct
     * entry-attrib names for older ANNOTATEMORE version.
     *
     * @param string $entry Entry name
     *
     * @return array Entry-attribute list, NULL if not supported (?)
     */
    protected function md2annotate($entry)
    {
        if (substr($entry, 0, 7) == '/shared') {
            return [substr($entry, 7), 'value.shared'];
        }
        else if (substr($entry, 0, 8) == '/private') {
            return [substr($entry, 8), 'value.priv'];
        }

        // @TODO: log error
    }


    /* --------------------------------
     *   internal caching methods
     * --------------------------------*/

    /**
     * Enable or disable indexes caching
     *
     * @param string $type Cache type (@see rcube::get_cache)
     */
    public function set_caching($type)
    {
        if ($type) {
            $this->caching = $type;
        }
        else {
            if ($this->cache) {
                $this->cache->close();
            }
            $this->cache   = null;
            $this->caching = false;
        }
    }

    /**
     * Getter for IMAP cache object
     */
    protected function get_cache_engine()
    {
        if ($this->caching && !$this->cache) {
            $rcube = rcube::get_instance();
            $ttl   = $rcube->config->get('imap_cache_ttl', '10d');
            $this->cache = $rcube->get_cache('IMAP', $this->caching, $ttl);
        }

        return $this->cache;
    }

    /**
     * Returns cached value
     *
     * @param string $key Cache key
     *
     * @return mixed
     */
    public function get_cache($key)
    {
        if ($cache = $this->get_cache_engine()) {
            return $cache->get($key);
        }
    }

    /**
     * Update cache
     *
     * @param string $key  Cache key
     * @param mixed  $data Data
     */
    public function update_cache($key, $data)
    {
        if ($cache = $this->get_cache_engine()) {
            $cache->set($key, $data);
        }
    }

    /**
     * Clears the cache.
     *
     * @param string  $key         Cache key name or pattern
     * @param bool    $prefix_mode Enable it to clear all keys starting
     *                             with prefix specified in $key
     */
    public function clear_cache($key = null, $prefix_mode = false)
    {
        if ($cache = $this->get_cache_engine()) {
            $cache->remove($key, $prefix_mode);
        }
    }


    /* --------------------------------
     *   message caching methods
     * --------------------------------*/

    /**
     * Enable or disable messages caching
     *
     * @param bool $set  Flag
     * @param int  $mode Cache mode
     */
    public function set_messages_caching($set, $mode = null)
    {
        if ($set) {
            $this->messages_caching = true;

            if ($mode && ($cache = $this->get_mcache_engine())) {
                $cache->set_mode($mode);
            }
        }
        else {
            if ($this->mcache) {
                $this->mcache->close();
            }
            $this->mcache = null;
            $this->messages_caching = false;
        }
    }

    /**
     * Getter for messages cache object
     */
    protected function get_mcache_engine()
    {
        if ($this->messages_caching && !$this->mcache) {
            $rcube = rcube::get_instance();
            if (($dbh = $rcube->get_dbh()) && ($userid = $rcube->get_user_id())) {
                $ttl       = $rcube->config->get('messages_cache_ttl', '10d');
                $threshold = $rcube->config->get('messages_cache_threshold', 50);
                $this->mcache = new rcube_imap_cache(
                    $dbh, $this, $userid, $this->options['skip_deleted'], $ttl, $threshold);
            }
        }

        return $this->mcache;
    }

    /**
     * Clears the messages cache.
     *
     * @param string $folder Folder name
     * @param array  $uids   Optional message UIDs to remove from cache
     */
    protected function clear_message_cache($folder = null, $uids = null)
    {
        if ($mcache = $this->get_mcache_engine()) {
            $mcache->clear($folder, $uids);
        }
    }

    /**
     * Delete outdated cache entries
     */
    function cache_gc()
    {
        rcube_imap_cache::gc();
    }


    /* --------------------------------
     *         protected methods
     * --------------------------------*/

    /**
     * Determines if server supports dual use folders (those can
     * contain both sub-folders and messages).
     *
     * @return bool
     */
    protected function detect_dual_use_folders()
    {
        $val = rcube::get_instance()->config->get('imap_dual_use_folders');
        if ($val !== null) {
            return (bool) $val;
        }

        if (!$this->check_connection()) {
            return false;
        }

        $folder    = str_replace('.', '', 'foldertest' . microtime(true));
        $folder    = $this->mod_folder($folder, 'in');
        $subfolder = $folder . $this->delimiter . 'foldertest';

        if ($this->conn->createFolder($folder)) {
            if ($created = $this->conn->createFolder($subfolder)) {
                $this->conn->deleteFolder($subfolder);
            }

            $this->conn->deleteFolder($folder);

            return $created;
        }

        return false;
    }

    /**
     * Validate the given input and save to local properties
     *
     * @param string $sort_field Sort column
     * @param string $sort_order Sort order
     */
    protected function set_sort_order($sort_field, $sort_order)
    {
        if ($sort_field != null) {
            $this->sort_field = asciiwords($sort_field);
        }
        if ($sort_order != null) {
            $this->sort_order = strtoupper($sort_order) == 'DESC' ? 'DESC' : 'ASC';
        }
    }

    /**
     * Sort folders in alphabetical order. Optionally put special folders
     * first and other-users/shared namespaces last.
     *
     * @param array $a_folders    Folders list
     * @param bool  $skip_special Skip special folders handling
     *
     * @return array Sorted list
     */
    public function sort_folder_list($a_folders, $skip_special = false)
    {
        $folders = [];

        // convert names to UTF-8
        foreach ($a_folders as $folder) {
            // for better performance skip encoding conversion
            // if the string does not look like UTF7-IMAP
            $folders[$folder] = strpos($folder, '&') === false ? $folder : rcube_charset::convert($folder, 'UTF7-IMAP');
        }

        // sort folders
        // asort($folders, SORT_LOCALE_STRING) is not properly sorting case sensitive names
        uasort($folders, [$this, 'sort_folder_comparator']);

        $folders = array_keys($folders);

        if ($skip_special || empty($folders)) {
            return $folders;
        }

        // Collect special folders and non-personal namespace roots
        $specials = array_merge(['INBOX'], array_values($this->get_special_folders()));
        $ns_roots = [];

        foreach (['other', 'shared'] as $ns_name) {
            if ($ns = $this->get_namespace($ns_name)) {
                foreach ($ns as $root) {
                    if (isset($root[0]) && strlen($root[0])) {
                        $ns_roots[rtrim($root[0], $root[1])] = $root[0];
                    }
                }
            }
        }

        // Force the type of folder name variable (#1485527)
        $folders = array_map('strval', $folders);
        $out     = [];

        // Put special folders on top...
        $specials = array_unique(array_intersect($specials, $folders));
        $folders  = array_merge($specials, array_diff($folders, $specials));

        // ... and rebuild the list to move their subfolders where they belong
        $this->sort_folder_specials(null, $folders, $specials, $out);

        // Put other-user/shared namespaces at the end
        if (!empty($ns_roots)) {
            $folders = [];
            foreach ($out as $folder) {
                foreach ($ns_roots as $root => $prefix) {
                    if ($folder === $root || strpos($folder, $prefix) === 0) {
                        $folders[] = $folder;
                    }
                }
            }

            if (!empty($folders)) {
                $out = array_merge(array_diff($out, $folders), $folders);
            }
        }

        return $out;
    }

    /**
     * Recursive function to put subfolders of special folders in place
     */
    protected function sort_folder_specials($folder, &$list, &$specials, &$out)
    {
        $count = count($list);

        for ($i = 0; $i < $count; $i++) {
            $name = $list[$i];
            if ($name === null) {
                continue;
            }

            if ($folder === null || strpos($name, $folder.$this->delimiter) === 0) {
                $out[] = $name;
                $list[$i] = null;

                if (!empty($specials) && ($found = array_search($name, $specials)) !== false) {
                    unset($specials[$found]);
                    $this->sort_folder_specials($name, $list, $specials, $out);
                }
            }
        }
    }

    /**
     * Callback for uasort() that implements correct
     * locale-aware case-sensitive sorting
     */
    protected function sort_folder_comparator($str1, $str2)
    {
        if ($this->sort_folder_collator === null) {
            $this->sort_folder_collator = false;

            // strcoll() does not work with UTF8 locale on Windows,
            // use Collator from the intl extension
            if (stripos(PHP_OS, 'win') === 0 && function_exists('collator_compare')) {
                $locale = $this->options['language'] ?: 'en_US';
                $this->sort_folder_collator = collator_create($locale) ?: false;
            }
        }

        $path1 = explode($this->delimiter, $str1);
        $path2 = explode($this->delimiter, $str2);

        $len = max(count($path1), count($path2));

        for ($idx = 0; $idx < $len; $idx++) {
            $folder1 = $path1[$idx] ?? '';
            $folder2 = $path2[$idx] ?? '';

            if ($folder1 === $folder2) {
                continue;
            }

            if ($this->sort_folder_collator) {
                return collator_compare($this->sort_folder_collator, $folder1, $folder2);
            }

            return strcoll($folder1, $folder2);
        }
    }

    /**
     * Find UID of the specified message sequence ID
     *
     * @param int    $id     Message (sequence) ID
     * @param string $folder Folder name
     *
     * @return int Message UID
     */
    public function id2uid($id, $folder = null)
    {
        if (!is_string($folder) || !strlen($folder)) {
            $folder = $this->folder;
        }

        if (!$this->check_connection()) {
            return null;
        }

        return $this->conn->ID2UID($folder, $id);
    }

    /**
     * Subscribe/unsubscribe a list of folders and update local cache
     */
    protected function change_subscription($folders, $mode)
    {
        $updated = 0;
        $folders = (array) $folders;

        if (!empty($folders)) {
            if (!$this->check_connection()) {
                return false;
            }

            foreach ($folders as $folder) {
                $updated += (int) $this->conn->{$mode}($folder);
            }
        }

        // clear cached folders list(s)
        if ($updated) {
            $this->clear_cache('mailboxes', true);
        }

        return $updated == count($folders);
    }

    /**
     * Increase/decrease messagecount for a specific folder
     */
    protected function set_messagecount($folder, $mode, $increment)
    {
        if (!is_numeric($increment)) {
            return false;
        }

        $mode = strtoupper($mode);
        $a_folder_cache = $this->get_cache('messagecount');

        if (
            !isset($a_folder_cache[$folder])
            || !is_array($a_folder_cache[$folder])
            || !isset($a_folder_cache[$folder][$mode])
        ) {
            return false;
        }

        // add incremental value to messagecount
        $a_folder_cache[$folder][$mode] += $increment;

        // there's something wrong, delete from cache
        if ($a_folder_cache[$folder][$mode] < 0) {
            unset($a_folder_cache[$folder][$mode]);
        }

        // write back to cache
        $this->update_cache('messagecount', $a_folder_cache);

        return true;
    }

    /**
     * Remove messagecount of a specific folder from cache
     */
    protected function clear_messagecount($folder, $mode = [])
    {
        $a_folder_cache = $this->get_cache('messagecount');

        if (isset($a_folder_cache[$folder]) && is_array($a_folder_cache[$folder])) {
            if (!empty($mode)) {
                foreach ((array) $mode as $key) {
                    unset($a_folder_cache[$folder][$key]);
                }
            }
            else {
                unset($a_folder_cache[$folder]);
            }

            $this->update_cache('messagecount', $a_folder_cache);
        }
    }

    /**
     * Converts date string/object into IMAP date/time format
     */
    protected function date_format($date)
    {
        if (empty($date)) {
            return null;
        }

        if (!is_object($date) || !is_a($date, 'DateTime')) {
            try {
                $timestamp = rcube_utils::strtotime($date);
                $date      = new DateTime("@".$timestamp);
            }
            catch (Exception $e) {
                return null;
            }
        }

        return $date->format('d-M-Y H:i:s O');
    }

    /**
     * Remember state of the IMAP connection (last IMAP command).
     * Use e.g. if you want to execute more commands and ignore results of these.
     *
     * @return array Connection state
     */
    protected function save_conn_state()
    {
        return [
            $this->conn->error,
            $this->conn->errornum,
            $this->conn->resultcode,
        ];
    }

    /**
     * Restore saved connection state.
     *
     * @param array $state Connection result
     */
    protected function restore_conn_state($state)
    {
        list($this->conn->error, $this->conn->errornum, $this->conn->resultcode) = $state;
    }

    /**
     * This is our own debug handler for the IMAP connection
     */
    public function debug_handler($imap, $message)
    {
        rcube::write_log('imap', $message);
    }
}
lib/Roundcube/rcube_content_filter.php000064400000004065151727150670014170 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   PHP stream filter to detect evil content in mail attachments        |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * PHP stream filter to detect html/javascript code in attachments
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_content_filter extends php_user_filter
{
    private $buffer = '';
    private $cutoff = 2048;

    public function onCreate(): bool
    {
        $this->cutoff = rand(2048, 3027);
        return true;
    }

    #[ReturnTypeWillChange]
    public function filter($in, $out, &$consumed, $closing)
    {
        while ($bucket = stream_bucket_make_writeable($in)) {
            $this->buffer .= $bucket->data;

            // check for evil content and abort
            if (preg_match('/<(script|iframe|object)/i', $this->buffer)) {
                return PSFS_ERR_FATAL;
            }

            // keep buffer small enough
            if (strlen($this->buffer) > 4096) {
                $this->buffer = substr($this->buffer, $this->cutoff);
            }

            $consumed += $bucket->datalen;
            stream_bucket_append($out, $bucket);
        }

        return PSFS_PASS_ON;
    }
}
lib/Roundcube/html.php000064400000070522151727150670010736 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Helper class to create valid XHTML code                             |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for HTML code creation
 *
 * @package    Framework
 * @subpackage View
 */
class html
{
    protected $tagname;
    protected $content;
    protected $attrib  = [];
    protected $allowed = [];

    public static $doctype = 'xhtml';
    public static $lc_tags = true;
    public static $common_attrib = ['id','class','style','title','align','unselectable','tabindex','role'];
    public static $containers    = ['iframe','div','span','p','h1','h2','h3','ul','form','textarea','table','thead','tbody','tr','th','td','style','script','a'];
    public static $bool_attrib   = ['checked','multiple','disabled','selected','autofocus','readonly','required'];


    /**
     * Constructor
     *
     * @param array $attrib Hash array with tag attributes
     */
    public function __construct($attrib = [])
    {
        if (is_array($attrib)) {
            $this->attrib = $attrib;
        }
    }

    /**
     * Return the tag code
     *
     * @return string The finally composed HTML tag
     */
    public function show()
    {
        return self::tag($this->tagname, $this->attrib, $this->content, array_merge(self::$common_attrib, $this->allowed));
    }

    /****** STATIC METHODS *******/

    /**
     * Generic method to create a HTML tag
     *
     * @param string $tagname Tag name
     * @param array  $attrib  Tag attributes as key/value pairs
     * @param string $content Optional Tag content (creates a container tag)
     * @param array  $allowed List with allowed attributes, omit to allow all
     *
     * @return string The XHTML tag
     */
    public static function tag($tagname, $attrib = [], $content = null, $allowed = null)
    {
        if (is_string($attrib)) {
            $attrib = ['class' => $attrib];
        }

        $inline_tags = ['a', 'span', 'img'];
        $suffix = (isset($attrib['nl']) && $content && $attrib['nl'] && !in_array($tagname, $inline_tags)) ? "\n" : '';

        $tagname = self::$lc_tags ? strtolower($tagname) : $tagname;
        if (isset($content) || in_array($tagname, self::$containers)) {
            $suffix = !empty($attrib['noclose']) ? $suffix : '</' . $tagname . '>' . $suffix;
            unset($attrib['noclose'], $attrib['nl']);
            return '<' . $tagname  . self::attrib_string($attrib, $allowed) . '>' . $content . $suffix;
        }
        else {
            return '<' . $tagname  . self::attrib_string($attrib, $allowed) . '>' . $suffix;
        }
    }

    /**
     * Return DOCTYPE tag of specified type
     *
     * @param string $type Document type (html5, xhtml, 'xhtml-trans, xhtml-strict)
     */
    public static function doctype($type)
    {
        $doctypes = [
            'html5'        => '<!DOCTYPE html>',
            'xhtml'        => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
            'xhtml-trans'  => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
            'xhtml-strict' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
        ];

        if (!empty($doctypes[$type])) {
            self::$doctype = preg_replace('/-\w+$/', '', $type);
            return $doctypes[$type];
        }

        return '';
    }

    /**
     * Derived method for <div> containers
     *
     * @param mixed  $attr Hash array with tag attributes or string with class name
     * @param string $cont Div content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function div($attr = null, $cont = null)
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        return self::tag('div', $attr, $cont, array_merge(self::$common_attrib, ['onclick']));
    }

    /**
     * Derived method for <p> blocks
     *
     * @param mixed  $attr Hash array with tag attributes or string with class name
     * @param string $cont Paragraph content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function p($attr = null, $cont = null)
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        return self::tag('p', $attr, $cont, self::$common_attrib);
    }

    /**
     * Derived method to create <img />
     *
     * @param string|array $attr Hash array with tag attributes or string with image source (src)
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function img($attr = null)
    {
        if (is_string($attr)) {
            $attr = ['src' => $attr];
        }

        $allowed = ['src','alt','width','height','border','usemap','onclick','onerror','onload'];

        return self::tag('img', $attr + ['alt' => ''], null, array_merge(self::$common_attrib, $allowed));
    }

    /**
     * Derived method for link tags
     *
     * @param string|array $attr Hash array with tag attributes or string with link location (href)
     * @param string       $cont Link content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function a($attr, $cont)
    {
        if (is_string($attr)) {
            $attr = ['href' => $attr];
        }

        $allowed = ['href','target','name','rel','onclick','onmouseover','onmouseout','onmousedown','onmouseup'];

        return self::tag('a', $attr, $cont, array_merge(self::$common_attrib, $allowed));
    }

    /**
     * Derived method for inline span tags
     *
     * @param string|array $attr Hash array with tag attributes or string with class name
     * @param string       $cont Tag content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function span($attr, $cont)
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        return self::tag('span', $attr, $cont, self::$common_attrib);
    }

    /**
     * Derived method for form element labels
     *
     * @param string|array $attr Hash array with tag attributes or string with 'for' attrib
     * @param string       $cont Tag content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function label($attr, $cont)
    {
        if (is_string($attr)) {
            $attr = ['for' => $attr];
        }

        return self::tag('label', $attr, $cont, array_merge(self::$common_attrib, ['for','onkeypress']));
    }

    /**
     * Derived method to create <iframe></iframe>
     *
     * @param string|array $attr Hash array with tag attributes or string with frame source (src)
     * @param string       $cont Tag content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function iframe($attr = null, $cont = null)
    {
        if (is_string($attr)) {
            $attr = ['src' => $attr];
        }

        $allowed = ['src','name','width','height','border','frameborder','onload','allowfullscreen'];

        return self::tag('iframe', $attr, $cont, array_merge(self::$common_attrib, $allowed));
    }

    /**
     * Derived method to create <script> tags
     *
     * @param string|array $attr Hash array with tag attributes or string with script source (src)
     * @param string       $cont Javascript code to be placed as tag content
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function script($attr, $cont = null)
    {
        if (is_string($attr)) {
            $attr = ['src' => $attr];
        }

        if ($cont) {
            if (self::$doctype == 'xhtml') {
                $cont = "/* <![CDATA[ */\n{$cont}\n/* ]]> */";
            }

            $cont = "\n{$cont}\n";
        }

        if (self::$doctype == 'xhtml') {
            $attr += ['type' => 'text/javascript'];
        }

        return self::tag('script', $attr + ['nl' => true], $cont,
            array_merge(self::$common_attrib, ['src', 'type', 'charset']));
    }

    /**
     * Derived method for line breaks
     *
     * @param array $attrib Associative array with tag attributes
     *
     * @return string HTML code
     * @see html::tag()
     */
    public static function br($attrib = [])
    {
        return self::tag('br', $attrib);
    }

    /**
     * Create string with attributes
     *
     * @param array $attrib  Associative array with tag attributes
     * @param array $allowed List of allowed attributes
     *
     * @return string Valid attribute string
     */
    public static function attrib_string($attrib = [], $allowed = null)
    {
        if (empty($attrib)) {
            return '';
        }

        $allowed_f  = array_flip((array) $allowed);
        $attrib_arr = [];

        foreach ($attrib as $key => $value) {
            // skip size if not numeric
            if ($key == 'size' && !is_numeric($value)) {
                continue;
            }

            // ignore "internal" or empty attributes
            if ($key == 'nl' || $value === null) {
                continue;
            }

            // ignore not allowed attributes, except aria-* and data-*
            if (!empty($allowed)) {
                $is_data_attr = @substr_compare($key, 'data-', 0, 5) === 0;
                $is_aria_attr = @substr_compare($key, 'aria-', 0, 5) === 0;
                if (!$is_aria_attr && !$is_data_attr && !isset($allowed_f[$key])) {
                    continue;
                }
            }

            // skip empty eventhandlers
            if (preg_match('/^on[a-z]+/', $key) && !$value) {
                continue;
            }

            // attributes with no value
            if (in_array($key, self::$bool_attrib)) {
                if (!empty($value)) {
                    $value = $key;
                    if (self::$doctype == 'xhtml') {
                        $value .= '="' . $value . '"';
                    }

                    $attrib_arr[] = $value;
                }
            }
            else {
                $attrib_arr[] = $key . '="' . self::quote((string) $value) . '"';
            }
        }

        return count($attrib_arr) ? ' '.implode(' ', $attrib_arr) : '';
    }

    /**
     * Convert a HTML attribute string attributes to an associative array (name => value)
     *
     * @param string $str Input string
     *
     * @return array Key-value pairs of parsed attributes
     */
    public static function parse_attrib_string($str)
    {
        $attrib = [];
        $html   = '<html>'
            . '<head><meta http-equiv="Content-Type" content="text/html; charset=' . RCUBE_CHARSET . '" /></head>'
            . '<body><div ' . rtrim($str, '/ ') . ' /></body>'
            . '</html>';

        $document = new DOMDocument('1.0', RCUBE_CHARSET);
        @$document->loadHTML($html);

        if ($node = $document->getElementsByTagName('div')->item(0)) {
            foreach ($node->attributes as $name => $attr) {
                $attrib[strtolower($name)] = $attr->nodeValue;
            }
        }

        return $attrib;
    }

    /**
     * Replacing specials characters in html attribute value
     *
     * @param string $str Input string
     *
     * @return string The quoted string
     */
    public static function quote($str)
    {
        // PHP8 does not like e.g. an array as htmlspecialchars() argument
        if (!is_string($str)) {
            return (string) $str;
        }

        return @htmlspecialchars($str, ENT_COMPAT | ENT_SUBSTITUTE, RCUBE_CHARSET);
    }
}


/**
 * Class to create an HTML input field
 *
 * @package    Framework
 * @subpackage View
 */
class html_inputfield extends html
{
    protected $tagname = 'input';
    protected $type    = 'text';
    protected $allowed = [
        'type','name','value','size','tabindex','autocapitalize','required',
        'autocomplete','checked','onchange','onclick','disabled','readonly',
        'spellcheck','results','maxlength','src','multiple','accept',
        'placeholder','autofocus','pattern','oninput'
    ];

    /**
     * Object constructor
     *
     * @param array $attrib Associative array with tag attributes
     */
    public function __construct($attrib = [])
    {
        if (is_array($attrib)) {
            $this->attrib = $attrib;
        }

        if (!empty($attrib['type'])) {
            $this->type = $attrib['type'];
        }
    }

    /**
     * Compose input tag
     *
     * @param string $value  Field value
     * @param array  $attrib Additional attributes to override
     *
     * @return string HTML output
     */
    public function show($value = null, $attrib = null)
    {
        // overwrite object attributes
        if (is_array($attrib)) {
            $this->attrib = array_merge($this->attrib, $attrib);
        }

        // set value attribute
        if ($value !== null) {
            $this->attrib['value'] = $value;
        }
        // set type
        $this->attrib['type'] = $this->type;

        return parent::show();
    }
}

/**
 * Class to create an HTML password field
 *
 * @package    Framework
 * @subpackage View
 */
class html_passwordfield extends html_inputfield
{
    protected $type = 'password';
}

/**
 * Class to create an hidden HTML input field
 *
 * @package    Framework
 * @subpackage View
 */
class html_hiddenfield extends html
{
    protected $tagname = 'input';
    protected $type    = 'hidden';
    protected $allowed = ['type','name','value','onchange','disabled','readonly'];
    protected $fields  = [];

    /**
     * Constructor
     *
     * @param array $attrib Named tag attributes
     */
    public function __construct($attrib = null)
    {
        if (is_array($attrib)) {
            $this->add($attrib);
        }
    }

    /**
     * Add a hidden field to this instance
     *
     * @param array $attrib Named tag attributes
     */
    public function add($attrib)
    {
        $this->fields[] = $attrib;
    }

    /**
     * Create HTML code for the hidden fields
     *
     * @return string Final HTML code
     */
    public function show()
    {
        $out = '';

        foreach ($this->fields as $attrib) {
            $out .= self::tag($this->tagname, ['type' => $this->type] + $attrib);
        }

        return $out;
    }
}

/**
 * Class to create HTML checkboxes
 *
 * @package    Framework
 * @subpackage View
 */
class html_checkbox extends html_inputfield
{
    protected $type = 'checkbox';

    /**
     * Get HTML code for this object
     *
     * @param string $value  Value of the checked field
     * @param array  $attrib Additional attributes to override
     *
     * @return string HTML output
     */
    public function show($value = '', $attrib = null)
    {
        // overwrite object attributes
        if (is_array($attrib)) {
            $this->attrib = array_merge($this->attrib, $attrib);
        }

        // set 'checked' attribute
        $this->attrib['checked'] = (string) $value === (string) ($this->attrib['value'] ?? '');

        return parent::show();
    }
}

/**
 * Class to create HTML radio buttons
 *
 * @package    Framework
 * @subpackage View
 */
class html_radiobutton extends html_checkbox
{
    protected $type = 'radio';
}

/**
 * Class to create HTML button
 *
 * @package    Framework
 * @subpackage View
 */
class html_button extends html_inputfield
{
    protected $tagname = 'button';
    protected $type    = 'button';

    /**
     * Get HTML code for this object
     *
     * @param string $content Text Content of the button
     * @param array  $attrib  Additional attributes to override
     *
     * @return string HTML output
     */
    public function show($content = '', $attrib = null)
    {
        // overwrite object attributes
        if (is_array($attrib)) {
            $this->attrib = array_merge($this->attrib, $attrib);
        }

        $this->content = $content;

        return parent::show();
    }
}

/**
 * Class to create an HTML textarea
 *
 * @package    Framework
 * @subpackage View
 */
class html_textarea extends html
{
    protected $tagname = 'textarea';
    protected $allowed = ['name','rows','cols','wrap','tabindex',
        'onchange','disabled','readonly','spellcheck'];

    /**
     * Get HTML code for this object
     *
     * @param string $value  Textbox value
     * @param array  $attrib Additional attributes to override
     *
     * @return string HTML output
     */
    public function show($value = '', $attrib = null)
    {
        // overwrite object attributes
        if (is_array($attrib)) {
            $this->attrib = array_merge($this->attrib, $attrib);
        }

        // take value attribute as content
        if (empty($value) && !empty($this->attrib['value'])) {
            $value = $this->attrib['value'];
        }

        // make shure we don't print the value attribute
        if (isset($this->attrib['value'])) {
            unset($this->attrib['value']);
        }

        if (!empty($value) && empty($this->attrib['is_escaped'])) {
            $value = self::quote($value);
        }

        return self::tag($this->tagname, $this->attrib, $value,
            array_merge(self::$common_attrib, $this->allowed));
    }
}

/**
 * Builder for HTML drop-down menus
 * Syntax:<pre>
 * // create instance. arguments are used to set attributes of select-tag
 * $select = new html_select(['name' => 'fieldname']);
 *
 * // add one option
 * $select->add('Switzerland', 'CH');
 *
 * // add multiple options
 * $select->add(['Switzerland','Germany'], ['CH','DE']);
 *
 * // generate pulldown with selection 'Switzerland'  and return html-code
 * // as second argument the same attributes available to instantiate can be used
 * print $select->show('CH');
 * </pre>
 *
 * @package    Framework
 * @subpackage View
 */
class html_select extends html
{
    protected $tagname = 'select';
    protected $options = [];
    protected $allowed = ['name','size','tabindex','autocomplete',
        'multiple','onchange','disabled','rel'];

    /**
     * Add a new option to this drop-down
     *
     * @param mixed $names  Option name or array with option names
     * @param mixed $values Option value or array with option values
     * @param array $attrib Additional attributes for the option entry
     */
    public function add($names, $values = null, $attrib = [])
    {
        if (is_array($names)) {
            foreach ($names as $i => $text) {
                $this->options[] = [
                    'text'  => $text,
                    'value' => $values[$i] ?? $i
                ] + $attrib;
            }
        }
        else {
            $this->options[] = ['text' => $names, 'value' => $values] + $attrib;
        }
    }

    /**
     * Get HTML code for this object
     *
     * @param string $select Value of the selection option
     * @param array  $attrib Additional attributes to override
     *
     * @return string HTML output
     */
    public function show($select = [], $attrib = null)
    {
        // overwrite object attributes
        if (is_array($attrib)) {
            $this->attrib = array_merge($this->attrib, $attrib);
        }

        $this->content = "\n";
        $select = (array) $select;
        foreach ($this->options as $option) {
            $attr = [
                'value' => $option['value'],
                'selected' => (in_array($option['value'], $select, true) ||
                    in_array($option['text'], $select, true)) ? 1 : null
            ];

            $option_content = $option['text'];
            if (empty($this->attrib['is_escaped'])) {
                $option_content = self::quote($option_content);
            }

            $allowed = ['value','label','class','style','title','disabled','selected'];

            $this->content .= self::tag('option', $attr + $option, $option_content, $allowed);
        }

        return parent::show();
    }
}

/**
 * Class to build an HTML table
 *
 * @package    Framework
 * @subpackage View
 */
class html_table extends html
{
    protected $tagname = 'table';
    protected $allowed = ['id','class','style','width','summary',
        'cellpadding','cellspacing','border'];

    private $header   = null;
    private $rows     = [];
    private $rowindex = 0;
    private $colindex = 0;

    /**
     * Constructor
     *
     * @param array $attrib Named tag attributes
     */
    public function __construct($attrib = [])
    {
        $default_attrib = self::$doctype == 'xhtml' ? ['border' => '0'] : [];
        $this->attrib   = array_merge($attrib, $default_attrib);

        if (!empty($attrib['tagname']) && $attrib['tagname'] != 'table') {
          $this->tagname = $attrib['tagname'];
          $this->allowed = self::$common_attrib;
        }
    }

    /**
     * Add a table cell
     *
     * @param array  $attr Cell attributes
     * @param string $cont Cell content
     */
    public function add($attr, $cont)
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        $cell = new stdClass;
        $cell->attrib  = $attr;
        $cell->content = $cont;

        if (!isset($this->rows[$this->rowindex])) {
            $this->rows[$this->rowindex] = new stdClass;
            $this->rows[$this->rowindex]->attrib = [];
        }

        $this->rows[$this->rowindex]->cells[$this->colindex] = $cell;
        $this->colindex += max(1, isset($attr['colspan']) ? intval($attr['colspan']) : 0);

        if (!empty($this->attrib['cols']) && $this->colindex >= $this->attrib['cols']) {
            $this->add_row();
        }
    }

    /**
     * Add a table header cell
     *
     * @param string|array $attr Cell attributes array or class name
     * @param string       $cont Cell content
     */
    public function add_header($attr, $cont)
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        $cell = new stdClass;
        $cell->attrib  = $attr;
        $cell->content = $cont;

        if (empty($this->header)) {
            $this->header = new stdClass;
            $this->header->attrib = [];
        }

        $this->header->cells[] = $cell;
    }

    /**
     * Remove a column from a table
     * Useful for plugins making alterations
     *
     * @param string $class Class name
     */
    public function remove_column($class)
    {
        // Remove the header
        foreach ($this->header->cells as $index => $header) {
            if ($header->attrib['class'] == $class) {
                unset($this->header[$index]);
                break;
            }
        }

        // Remove cells from rows
        foreach ($this->rows as $i => $row) {
            foreach ($row->cells as $j => $cell) {
                if ($cell->attrib['class'] == $class) {
                    unset($this->rows[$i]->cells[$j]);
                    break;
                }
            }
        }
    }

    /**
     * Jump to next row
     *
     * @param array $attr Row attributes
     */
    public function add_row($attr = [])
    {
        $this->rowindex++;
        $this->colindex = 0;
        $this->rows[$this->rowindex] = new stdClass;
        $this->rows[$this->rowindex]->attrib = $attr;
        $this->rows[$this->rowindex]->cells  = [];
    }

    /**
     * Set header attributes
     *
     * @param string|array $attr Row attributes array or class name
     */
    public function set_header_attribs($attr = [])
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        if (empty($this->header)) {
            $this->header = new stdClass;
        }

        $this->header->attrib = $attr;
    }

    /**
     * Set row attributes
     *
     * @param string|array $attr  Row attributes array or class name
     * @param int          $index Optional row index (default current row index)
     */
    public function set_row_attribs($attr = [], $index = null)
    {
        if (is_string($attr)) {
            $attr = ['class' => $attr];
        }

        if ($index === null) {
            $index = $this->rowindex;
        }

        // make sure row object exists (#1489094)
        if (empty($this->rows[$index])) {
            $this->rows[$index] = new stdClass;
        }

        $this->rows[$index]->attrib = $attr;
    }

    /**
     * Get row attributes
     *
     * @param int $index Row index
     *
     * @return array Row attributes
     */
    public function get_row_attribs($index = null)
    {
        if ($index === null) {
            $index = $this->rowindex;
        }

        return !empty($this->rows[$index]) ? $this->rows[$index]->attrib : null;
    }

    /**
     * Build HTML output of the table data
     *
     * @param array $attrib Table attributes
     *
     * @return string The final table HTML code
     */
    public function show($attrib = null)
    {
        if (is_array($attrib)) {
            $this->attrib = array_merge($this->attrib, $attrib);
        }

        $thead        = '';
        $tbody        = '';
        $col_tagname  = $this->_col_tagname();
        $row_tagname  = $this->_row_tagname();
        $head_tagname = $this->_head_tagname();

        // include <thead>
        if (!empty($this->header)) {
            $rowcontent = '';
            foreach ($this->header->cells as $c => $col) {
                $rowcontent .= self::tag($head_tagname, $col->attrib, $col->content);
            }
            $thead = $this->tagname == 'table' ? self::tag('thead', null, self::tag('tr', $this->header->attrib ?: null, $rowcontent, parent::$common_attrib)) :
                self::tag($row_tagname, ['class' => 'thead'], $rowcontent, parent::$common_attrib);
        }

        foreach ($this->rows as $r => $row) {
            $rowcontent = '';
            foreach ($row->cells as $c => $col) {
                if ($row_tagname == 'li' && empty($col->attrib) && count($row->cells) == 1) {
                    $rowcontent .= $col->content;
                }
                else {
                    $rowcontent .= self::tag($col_tagname, $col->attrib, $col->content);
                }
            }

            if ($r < $this->rowindex || count($row->cells)) {
                $tbody .= self::tag($row_tagname, $row->attrib, $rowcontent, parent::$common_attrib);
            }
        }

        if (!empty($this->attrib['rowsonly'])) {
            return $tbody;
        }

        // add <tbody>
        $this->content = $thead . ($this->tagname == 'table' ? self::tag('tbody', null, $tbody) : $tbody);

        unset($this->attrib['cols'], $this->attrib['rowsonly']);

        return parent::show();
    }

    /**
     * Count number of rows
     *
     * @return int The number of rows
     */
    public function size()
    {
        return count($this->rows);
    }

    /**
     * Remove table body (all rows)
     */
    public function remove_body()
    {
        $this->rows     = [];
        $this->rowindex = 0;
    }

    /**
     * Getter for the corresponding tag name for table row elements
     */
    private function _row_tagname()
    {
        static $row_tagnames = ['table' => 'tr', 'ul' => 'li', '*' => 'div'];
        return !empty($row_tagnames[$this->tagname]) ? $row_tagnames[$this->tagname] : $row_tagnames['*'];
    }

    /**
     * Getter for the corresponding tag name for table row elements
     */
    private function _head_tagname()
    {
        static $head_tagnames = ['table' => 'th', '*' => 'span'];
        return !empty($head_tagnames[$this->tagname]) ? $head_tagnames[$this->tagname] : $head_tagnames['*'];
    }

    /**
     * Getter for the corresponding tag name for table cell elements
     */
    private function _col_tagname()
    {
        static $col_tagnames = ['table' => 'td', '*' => 'span'];
        return !empty($col_tagnames[$this->tagname]) ? $col_tagnames[$this->tagname] : $col_tagnames['*'];
    }
}
lib/Roundcube/rcube_spoofchecker.php000064400000005300151727150670013615 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   E-mail/Domain name spoofing detection                               |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <machniak@kolabsys.com>                   |
 +-----------------------------------------------------------------------+
*/

/**
 * Helper class for spoofing detection.
 *
 * @package    Framework
 * @subpackage Utils
 */
class rcube_spoofchecker
{
    /** @var array In-memory cache of checked domains */
    protected static $results = [];

    /**
     * Detects (potential) spoofing in an e-mail address or a domain.
     *
     * @param string $domain Email address or domain (UTF8 not punycode)
     *
     * @return bool True if spoofed/suspicious, False otherwise
     */
    public static function check($domain)
    {
        if (($pos = strrpos($domain, '@')) !== false) {
            $domain = substr($domain, $pos + 1);
        }

        if (isset(self::$results[$domain])) {
            return self::$results[$domain];
        }

        // Spoofchecker is part of ext-intl (requires ICU >= 4.2)
        try {
            $checker = new Spoofchecker();

            // Note: The constant (and method?) added in PHP 7.3.0
            if (defined('Spoofchecker::HIGHLY_RESTRICTIVE')) {
                $checker->setRestrictionLevel(Spoofchecker::HIGHLY_RESTRICTIVE);
            }
            else {
                $checker->setChecks(Spoofchecker::SINGLE_SCRIPT | Spoofchecker::INVISIBLE);
            }

            $result = $checker->isSuspicious($domain);
        }
        catch (Throwable $e) {
            rcube::raise_error($e, true);
            $result = false;
        }

        // TODO: Use areConfusable() to detect ascii-spoofing of some domains, e.g. paypa1.com?
        // TODO: Domains with non-printable characters should be considered spoofed

        return self::$results[$domain] = $result;
    }
}
lib/Roundcube/rcube_mime_decode.php000064400000034744151727150670013412 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 | Copyright (C) Kolab Systems AG                                        |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   MIME message parsing utilities derived from Mail_mimeDecode         |
 +-----------------------------------------------------------------------+
 | Author: Thomas Bruederli <roundcube@gmail.com>                        |
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 | Author: Richard Heyes <richard@phpguru.org>                           |
 +-----------------------------------------------------------------------+
*/

/**
 * Class for parsing MIME messages
 *
 * @package    Framework
 * @subpackage Storage
 */
class rcube_mime_decode
{
    /**
     * Class configuration parameters.
     *
     * @var array
     */
    protected $params = [
        'include_bodies'  => true,
        'decode_bodies'   => true,
        'decode_headers'  => true,
        'crlf'            => "\r\n",
        'default_charset' => RCUBE_CHARSET,
    ];


    /**
     * Constructor.
     *
     * Sets up the object, initialize the variables, and splits and
     * stores the header and body of the input.
     *
     * @param array $params An array of various parameters that determine
     *                       various things:
     *              include_bodies - Whether to include the body in the returned
     *                               object.
     *              decode_bodies  - Whether to decode the bodies
     *                               of the parts. (Transfer encoding)
     *              decode_headers - Whether to decode headers
     *              crlf           - CRLF type to use (CRLF/LF/CR)
     */
    public function __construct($params = [])
    {
        if (!empty($params)) {
            $this->params = array_merge($this->params, (array) $params);
        }
    }

    /**
     * Performs the decoding process.
     *
     * @param string $input   The input to decode
     * @param bool   $convert Convert result to rcube_message_part structure
     *
     * @return object|bool Decoded results or False on failure
     */
    public function decode($input, $convert = true)
    {
        list($header, $body) = $this->splitBodyHeader($input);

        $struct = $this->do_decode($header, $body);

        if ($struct && $convert) {
            $struct = $this->structure_part($struct);
        }

        if ($struct) {
            $struct->size = strlen($input);
        }

        return $struct;
    }

    /**
     * Performs the decoding. Decodes the body string passed to it
     * If it finds certain content-types it will call itself in a
     * recursive fashion
     *
     * @param string $headers       Header section
     * @param string $body          Body section
     * @param string $default_ctype Default content type
     *
     * @return object|bool Decoded results or False on error
     */
    protected function do_decode($headers, $body, $default_ctype = 'text/plain')
    {
        $return  = new rcube_message_part;
        $headers = $this->parseHeaders($headers);

        foreach ($headers as $value) {
            $header_name = strtolower($value['name']);

            if (isset($return->headers[$header_name]) && !is_array($return->headers[$header_name])) {
                $return->headers[$header_name]   = [$return->headers[$header_name]];
                $return->headers[$header_name][] = $value['value'];
            }
            else if (isset($return->headers[$header_name])) {
                $return->headers[$header_name][] = $value['value'];
            }
            else {
                $return->headers[$header_name] = $value['value'];
            }

            switch ($header_name) {
            case 'content-type':
                $content_type = $this->parseHeaderValue($value['value']);

                if (preg_match('/([0-9a-z+.-]+)\/([0-9a-z+.-]+)/i', $content_type['value'], $regs)) {
                    $return->ctype_primary   = $regs[1];
                    $return->ctype_secondary = $regs[2];
                }

                if (!empty($content_type['other'])) {
                    $return->ctype_parameters = array_merge((array) $return->ctype_parameters, (array) $content_type['other']);
                }

                break;

            case 'content-disposition';
                $content_disposition = $this->parseHeaderValue($value['value']);
                $return->disposition = $content_disposition['value'];

                if (!empty($content_disposition['other'])) {
                    $return->d_parameters = array_merge((array) $return->d_parameters, (array) $content_disposition['other']);
                }

                break;

            case 'content-transfer-encoding':
                $content_transfer_encoding = $this->parseHeaderValue($value['value']);
                break;
            }
        }

        if (isset($content_type)) {
            $ctype = strtolower($content_type['value']);

            switch ($ctype) {
            case 'text/plain':
                $encoding = $content_transfer_encoding['value'] ?? '7bit';

                if ($this->params['include_bodies']) {
                    $return->body = $this->params['decode_bodies'] ? rcube_mime::decode($body, $encoding) : $body;
                }

                break;

            case 'text/html':
                $encoding = $content_transfer_encoding['value'] ?? '7bit';

                if ($this->params['include_bodies']) {
                    $return->body = $this->params['decode_bodies'] ? rcube_mime::decode($body, $encoding) : $body;
                }

                break;

            case 'multipart/digest':
            case 'multipart/alternative':
            case 'multipart/related':
            case 'multipart/mixed':
            case 'multipart/signed':
            case 'multipart/encrypted':
                if (!isset($content_type['other']['boundary'])) {
                    return false;
                }

                $default_ctype = $ctype === 'multipart/digest' ? 'message/rfc822' : 'text/plain';
                $parts         = $this->boundarySplit($body, $content_type['other']['boundary']);

                for ($i = 0; $i < count($parts); $i++) {
                    list($part_header, $part_body) = $this->splitBodyHeader($parts[$i]);
                    $return->parts[] = $this->do_decode($part_header, $part_body, $default_ctype);
                }

                break;

            case 'message/rfc822':
                $obj = new rcube_mime_decode($this->params);
                $return->parts[] = $obj->decode($body, false);
                unset($obj);

                if ($this->params['include_bodies']) {
                    $return->body = $this->params['decode_bodies'] ? rcube_mime::decode($body) : $body;
                }

                break;

            default:
                if ($this->params['include_bodies']) {
                    $encoding = !empty($content_transfer_encoding['value']) ? $content_transfer_encoding['value'] : '7bit';
                    $return->body = $this->params['decode_bodies'] ? rcube_mime::decode($body, $encoding) : $body;
                }

                break;
            }
        }
        else {
            $ctype = explode('/', $default_ctype);
            $return->ctype_primary   = $ctype[0];
            $return->ctype_secondary = $ctype[1];

            if ($this->params['include_bodies']) {
                $return->body = $this->params['decode_bodies'] ? rcube_mime::decode($body) : $body;
            }
        }

        return $return;
    }

    /**
     * Given a string containing a header and body
     * section, this function will split them (at the first
     * blank line) and return them.
     *
     * @param string $input Input to split apart
     *
     * @return array Contains header and body section
     */
    protected function splitBodyHeader($input)
    {
        $pos = strpos($input, $this->params['crlf'] . $this->params['crlf']);
        if ($pos === false) {
            return false;
        }

        $crlf_len = strlen($this->params['crlf']);
        $header   = substr($input, 0, $pos);
        $body     = substr($input, $pos + 2 * $crlf_len);

        if (substr_compare($body, $this->params['crlf'], -$crlf_len) === 0) {
            $body = substr($body, 0, -$crlf_len);
        }

        return [$header, $body];
    }

    /**
     * Parse headers given in $input and return as assoc array.
     *
     * @param string $input Headers to parse
     *
     * @return array Contains parsed headers
     */
    protected function parseHeaders($input)
    {
        $return = [];

        if ($input !== '') {
            // Unfold the input
            $input   = preg_replace('/' . $this->params['crlf'] . "(\t| )/", ' ', $input);
            $headers = explode($this->params['crlf'], trim($input));

            foreach ($headers as $value) {
                $hdr_name  = substr($value, 0, $pos = strpos($value, ':'));
                $hdr_value = substr($value, $pos + 1);

                if (isset($hdr_value[0]) && $hdr_value[0] == ' ') {
                    $hdr_value = substr($hdr_value, 1);
                }

                $return[] = [
                    'name'  => $hdr_name,
                    'value' => $this->params['decode_headers'] ? $this->decodeHeader($hdr_value) : $hdr_value,
                ];
            }
        }

        return $return;
    }

    /**
     * Function to parse a header value, extract first part, and any secondary
     * parts (after ;) This function is not as robust as it could be.
     * Eg. header comments in the wrong place will probably break it.
     *
     * @param string $input Header value to parse
     *
     * @return array Contains parsed result
     */
    protected function parseHeaderValue($input)
    {
        $parts  = preg_split('/;\s*/', $input);
        $return = [];

        if (!empty($parts)) {
            $return['value'] = trim($parts[0]);

            for ($n = 1; $n < count($parts); $n++) {
                if (preg_match('/^([[:alnum:]]+)="?([^"]*)"?+/', $parts[$n], $matches)) {
                    $return['other'][strtolower($matches[1])] = $matches[2];
                }
                // Support RFC2231 encoding
                else if (preg_match('/^([[:alnum:]]+)\*([0-9]*)\*?="*([^"]+)"*/', $parts[$n], $matches)) {
                    $key = strtolower($matches[1]);
                    $val = $matches[3];

                    if (preg_match("/^(([^']*)'[^']*')/", $val, $m)) {
                        $val = rawurldecode(substr($val, strlen($m[0])));
                    }

                    if (isset($return['other'][$key])) {
                        $return['other'][$key] .= $val;
                    }
                    else {
                        $return['other'][$key] = $val;
                    }
                }
            }
        }
        else {
            $return['value'] = trim($input);
        }

        return $return;
    }

    /**
     * This function splits the input based on the given boundary
     *
     * @param string $input    Input to parse
     * @param string $boundary Boundary
     *
     * @return array Contains array of resulting mime parts
     */
    protected function boundarySplit($input, $boundary)
    {
        $tmp   = explode('--' . $boundary, $input);
        $parts = [];

        for ($i = 1; $i < count($tmp)-1; $i++) {
            $parts[] = $tmp[$i];
        }

        return $parts;
    }

    /**
     * Given a header, this function will decode it according to RFC2047.
     * Probably not *exactly* conformant, but it does pass all the given
     * examples (in RFC2047).
     *
     * @param string $input Input header value to decode
     *
     * @return string Decoded header value
     */
    protected function decodeHeader($input)
    {
        return rcube_mime::decode_mime_string($input, $this->params['default_charset']);
    }

    /**
     * Recursive method to convert a rcube_mime_decode structure
     * into a rcube_message_part object.
     *
     * @param object $part   A message part struct
     * @param int    $count  Part count
     * @param string $parent Parent MIME ID
     *
     * @return object rcube_message_part
     * @see self::decode()
     */
    protected function structure_part($part, $count = 0, $parent = '')
    {
        $struct = new rcube_message_part;
        $struct->mime_id          = $part->mime_id ?: (empty($parent) ? (string)$count : "$parent.$count");
        $struct->headers          = $part->headers;
        $struct->mimetype         = $part->ctype_primary . '/' . $part->ctype_secondary;
        $struct->ctype_primary    = $part->ctype_primary;
        $struct->ctype_secondary  = $part->ctype_secondary;
        $struct->ctype_parameters = $part->ctype_parameters;

        if (!empty($part->headers['content-transfer-encoding'])) {
            $struct->encoding = $part->headers['content-transfer-encoding'];
        }

        if (!empty($part->ctype_parameters['charset'])) {
            $struct->charset = $part->ctype_parameters['charset'];
        }

        // determine filename
        if (!empty($part->d_parameters['filename'])) {
            $filename = $part->d_parameters['filename'];
        }
        else if (!empty($part->ctype_parameters['name'])) {
            $filename = $part->ctype_parameters['name'];
        }

        if (!empty($filename)) {
            if (empty($this->params['decode_headers'])) {
                $filename = $this->decodeHeader($filename);
            }

            $struct->filename = $filename;
        }

        $struct->body        = $part->body;
        $struct->size        = is_string($part->body) ? strlen($part->body) : 0;
        $struct->disposition = $part->disposition;

        $count = 0;
        foreach ((array) $part->parts as $child_part) {
            $struct->parts[] = $this->structure_part($child_part, ++$count, $struct->mime_id);
        }

        return $struct;
    }
}
lib/Roundcube/rcube_addresses.php000064400000032366151727150670013133 0ustar00<?php

/**
 +-----------------------------------------------------------------------+
 | This file is part of the Roundcube Webmail client                     |
 |                                                                       |
 | Copyright (C) The Roundcube Dev Team                                  |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Interface to the collected addresses database                       |
 +-----------------------------------------------------------------------+
 | Author: Aleksander Machniak <alec@alec.pl>                            |
 +-----------------------------------------------------------------------+
*/

/**
 * Collected addresses database
 *
 * @package    Framework
 * @subpackage Addressbook
 */
class rcube_addresses extends rcube_contacts
{
    protected $db_name       = 'collected_addresses';
    protected $type          = 0;
    protected $table_cols    = ['name', 'email'];
    protected $fulltext_cols = ['name'];

    // public properties
    public $primary_key = 'address_id';
    public $readonly    = true;
    public $groups      = false;
    public $undelete    = false;
    public $deletable   = true;
    public $coltypes    = ['name', 'email'];
    public $date_cols   = [];


    /**
     * Object constructor
     *
     * @param object $dbconn Instance of the rcube_db class
     * @param int    $user   User-ID
     * @param int    $type   Type of the address (1 - recipient, 2 - trusted sender)
     */
    public function __construct($dbconn, $user, $type)
    {
        $this->db      = $dbconn;
        $this->user_id = $user;
        $this->type    = $type;
        $this->ready   = $this->db && !$this->db->is_error();
    }

    /**
     * Returns addressbook name
     *
     * @return string
     */
    public function get_name()
    {
        if ($this->type == self::TYPE_RECIPIENT) {
            return rcube::get_instance()->gettext('collectedrecipients');
        }

        if ($this->type == self::TYPE_TRUSTED_SENDER) {
            return rcube::get_instance()->gettext('trustedsenders');
        }

        return '';
    }

    /**
     * List the current set of contact records
     *
     * @param  array $cols    List of cols to show, Null means all
     * @param  int   $subset  Only return this number of records, use negative values for tail
     * @param  bool  $nocount True to skip the count query (select only)
     *
     * @return array Indexed list of contact records, each a hash array
     */
    public function list_records($cols = null, $subset = 0, $nocount = false)
    {
        if ($nocount || $this->list_page <= 1) {
            // create dummy result, we don't need a count now
            $this->result = new rcube_result_set();
        }
        else {
            // count all records
            $this->result = $this->count();
        }

        $start_row  = $subset < 0 ? $this->result->first + $this->page_size + $subset : $this->result->first;
        $length     = $subset != 0 ? abs($subset) : $this->page_size;

        $sql_result = $this->db->limitquery(
            "SELECT * FROM " . $this->db->table_name($this->db_name, true)
            . " WHERE `user_id` = ? AND `type` = ?"
            . ($this->filter ? " AND ".$this->filter : "")
            . " ORDER BY `name` " . $this->sort_order . ", `email` " . $this->sort_order,
            $start_row,
            $length,
            $this->user_id,
            $this->type
        );

        while ($sql_result && ($sql_arr = $this->db->fetch_assoc($sql_result))) {
            $sql_arr['ID'] = $sql_arr[$this->primary_key];
            $this->result->add($sql_arr);
        }

        $cnt = count($this->result->records);

        // update counter
        if ($nocount) {
            $this->result->count = $cnt;
        }
        else if ($this->list_page <= 1) {
            if ($cnt < $this->page_size && $subset == 0) {
                $this->result->count = $cnt;
            }
            else if (isset($this->cache['count'])) {
                $this->result->count = $this->cache['count'];
            }
            else {
                $this->result->count = $this->_count();
            }
        }

        return $this->result;
    }

    /**
     * Search contacts
     *
     * @param mixed $fields   The field name or array of field names to search in
     * @param mixed $value    Search value (or array of values when $fields is array)
     * @param int   $mode     Search mode. Sum of rcube_addressbook::SEARCH_*
     * @param bool  $select   True if results are requested, False if count only
     * @param bool  $nocount  True to skip the count query (select only)
     * @param array $required List of fields that cannot be empty
     *
     * @return rcube_result_set Contact records and 'count' value
     */
    public function search($fields, $value, $mode = 0, $select = true, $nocount = false, $required = [])
    {
        if (!is_array($required) && !empty($required)) {
            $required = [$required];
        }

        $where = $post_search = [];
        $mode  = intval($mode);

        // direct ID search
        if ($fields == 'ID' || $fields == $this->primary_key) {
            $ids     = !is_array($value) ? explode(self::SEPARATOR, $value) : $value;
            $ids     = $this->db->array2list($ids, 'integer');
            $where[] = $this->primary_key . ' IN (' . $ids . ')';
        }
        else if (is_array($value)) {
            foreach ((array) $fields as $idx => $col) {
                $val = $value[$idx];

                if (!strlen($val)) {
                    continue;
                }

                // table column
                if ($col == 'email' && ($mode & rcube_addressbook::SEARCH_STRICT)) {
                    $where[] = $this->db->ilike($col, $val);
                }
                else if (in_array($col, $this->table_cols)) {
                    $where[] = $this->fulltext_sql_where($val, $mode, $col);
                }
                else {
                    $where[] = '1 = 0'; // unsupported column
                }
            }
        }
        else {
            // fulltext search in all fields
            if ($fields == '*') {
                $fields = ['name', 'email'];
            }

            // require each word in to be present in one of the fields
            $words = ($mode & rcube_addressbook::SEARCH_STRICT) ? [$value] : rcube_utils::tokenize_string($value, 1);
            foreach ($words as $word) {
                $groups = [];
                foreach ((array) $fields as $idx => $col) {
                    if ($col == 'email' && ($mode & rcube_addressbook::SEARCH_STRICT)) {
                        $groups[] = $this->db->ilike($col, $word);
                    }
                    else if (in_array($col, $this->table_cols)) {
                        $groups[] = $this->fulltext_sql_where($word, $mode, $col);
                    }
                }
                $where[] = '(' . implode(' OR ', $groups) . ')';
            }
        }

        foreach (array_intersect($required, $this->table_cols) as $col) {
            $where[] = $this->db->quote_identifier($col) . ' <> ' . $this->db->quote('');
        }

        if (!empty($where)) {
            // use AND operator for advanced searches
            $where = implode(' AND ', $where);

            $this->set_search_set($where);

            if ($select) {
                $this->list_records(null, 0, $nocount);
            }
            else {
                $this->result = $this->count();
            }
        }
        else {
            $this->result = new rcube_result_set();
        }

        return $this->result;
    }

    /**
     * Count number of available contacts in database
     *
     * @return int Contacts count
     */
    protected function _count()
    {
        // count contacts for this user
        $sql_result = $this->db->query(
            "SELECT COUNT(`address_id`) AS cnt"
            . " FROM " . $this->db->table_name($this->db_name, true)
            . " WHERE `user_id` = ? AND `type` = ?"
            . ($this->filter ? " AND (" . $this->filter . ")" : ""),
            $this->user_id,
            $this->type
        );

        $sql_arr = $this->db->fetch_assoc($sql_result);

        $this->cache['count'] = (int) $sql_arr['cnt'];

        return $this->cache['count'];
    }

    /**
     * Get a specific contact record
     *
     * @param mixed $id    Record identifier(s)
     * @param bool  $assoc Enables returning associative array
     *
     * @return rcube_result_set|array Result object with all record fields
     */
    function get_record($id, $assoc = false)
    {
        // return cached result
        if ($this->result && ($first = $this->result->first()) && $first[$this->primary_key] == $id) {
            return $assoc ? $first : $this->result;
        }

        $this->db->query(
            "SELECT * FROM " . $this->db->table_name($this->db_name, true)
            . " WHERE `address_id` = ? AND `user_id` = ?",
            $id,
            $this->user_id
        );

        $this->result = null;

        if ($record = $this->db->fetch_assoc()) {
            $record['ID'] = $record['address_id'];
            $this->result = new rcube_result_set(1);
            $this->result->add($record);
        }

        return $assoc && !empty($record) ? $record : $this->result;
    }

    /**
     * Check the given data before saving.
     * If input not valid, the message to display can be fetched using get_error()
     *
     * @param array &$save_data Associative array with data to save
     * @param bool  $autofix    Try to fix/complete record automatically
     *
     * @return bool True if input is valid, False if not.
     */
    public function validate(&$save_data, $autofix = false)
    {
        $email = array_filter($this->get_col_values('email', $save_data, true));

        // require email
        if (empty($email) || count($email) > 1) {
            $this->set_error(self::ERROR_VALIDATE, 'noemailwarning');
            return false;
        }

        $email = $email[0];

        // check validity of the email address
        if (!rcube_utils::check_email(rcube_utils::idn_to_ascii($email))) {
            $rcube = rcube::get_instance();
            $error = $rcube->gettext(['name' => 'emailformaterror', 'vars' => ['email' => $email]]);
            $this->set_error(self::ERROR_VALIDATE, $error);
            return false;
        }

        return true;
    }

    /**
     * Create a new contact record
     *
     * @param array $save_data Associative array with save data
     * @param bool  $check     Enables validity checks
     *
     * @return int|bool The created record ID on success, False on error
     */
    function insert($save_data, $check = false)
    {
        if (!is_array($save_data)) {
            return false;
        }

        if ($check && ($existing = $this->search('email', $save_data['email'], false, false))) {
            if ($existing->count) {
                return false;
            }
        }

        $this->cache = null;

        $this->db->query(
            "INSERT INTO " . $this->db->table_name($this->db_name, true)
            . " (`user_id`, `changed`, `type`, `name`, `email`)"
            . " VALUES (?, " . $this->db->now() . ", ?, ?, ?)",
            $this->user_id,
            $this->type,
            $save_data['name'],
            $save_data['email']
        );

        return $this->db->insert_id($this->db_name);
    }

    /**
     * Update a specific contact record
     *
     * @param mixed $id        Record identifier
     * @param array $save_cols Associative array with save data
     *
     * @return bool True on success, False on error
     */
    function update($id, $save_cols)
    {
        return false;
    }

    /**
     * Delete one or more contact records
     *
     * @param array $ids   Record identifiers
     * @param bool  $force Remove record(s) irreversible (unsupported)
     *
     * @return int|false Number of removed records
     */
    function delete($ids, $force = true)
    {
        if (!is_array($ids)) {
            $ids = explode(self::SEPARATOR, $ids);
        }

        $ids = $this->db->array2list($ids, 'integer');

        // flag record as deleted (always)
        $this->db->query(
            "DELETE FROM " . $this->db->table_name($this->db_name, true)
            . " WHERE `user_id` = ? AND `type` = ? AND `address_id` IN ($ids)",
            $this->user_id, $this->type
        );

        $this->cache = null;

        return $this->db->affected_rows();
    }

    /**
     * Remove all records from the database
     *
     * @param bool $with_groups Remove also groups
     *
     * @return int Number of removed records
     */
    function delete_all($with_groups = false)
    {
        $this->db->query("DELETE FROM " . $this->db->table_name($this->db_name, true)
            . " WHERE `user_id` = ? AND `type` = ?",
            $this->user_id, $this->type
        );

        $this->cache = null;

        return $this->db->affected_rows();
    }
}
lib/Roundcube/README.md000064400000007341151727150670010537 0ustar00Roundcube Framework
===================

INTRODUCTION
------------
The Roundcube Framework is the basic library used for the Roundcube Webmail
application. It is an extract of classes providing the core functionality for
an email system. They can be used individually or as package for the following
tasks:

- IMAP mailbox access with optional caching
- MIME message handling
- Email message creation and sending through SMTP
- General caching utilities using the local database
- Database abstraction using PDO
- VCard parsing and writing


REQUIREMENTS
------------
PHP Version 7.3 or greater including:
   - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring, Filter, Ctype, Intl (required)
   - PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required)
   - Iconv, Zip, Fileinfo, Exif (recommended)
   - LDAP for LDAP addressbook support (optional)


INSTALLATION
------------
Copy all files of this directory to your project or install it in the default
include_path directory of your webserver. Some classes of the framework require
external libraries. See composer.json-dist for the list of required packages.


USAGE
-----
The Roundcube Framework provides a bootstrapping file which registers an
autoloader and sets up the environment necessary for the Roundcube classes.
In order to make use of the framework, simply include the bootstrap.php file
from this directory in your application and start using the classes by simply
instantiating them.

If you wanna use more complex functionality like IMAP access with database
caching or plugins, the rcube singleton helps you loading the necessary files:

```php
<?php

define('RCUBE_CONFIG_DIR',  '<path-to-config-directory>');
define('RCUBE_PLUGINS_DIR', '<path-to-roundcube-plugins-directory');

require_once '<path-to-roundcube-framework/bootstrap.php';

$rcube = rcube::get_instance(rcube::INIT_WITH_DB | rcube::INIT_WITH_PLUGINS);
$imap = $rcube->get_storage();

// do cool stuff here...

?>
```

LICENSE
-------
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License (**with exceptions
for plugins**) as published by the Free Software Foundation, either
version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see [www.gnu.org/licenses/][gpl].

This file forms part of the Roundcube Webmail Framework for which the
following exception is added: Plugins which merely make function calls to the
Roundcube Webmail Framework, and for that purpose include it by reference
shall not be considered modifications of the software.

If you wish to use this file in another project or create a modified
version that will not be part of the Roundcube Webmail Framework, you
may remove the exception above and use this source code under the
original version of the license.

For more details about licensing and the exceptions for skins and plugins
see [roundcube.net/license][license]


CONTACT
-------
For bug reports or feature requests please refer to the tracking system
at [Github][githubissues] or subscribe to our mailing list.
See [roundcube.net/support][support] for details.

You're always welcome to send a message to the project admins:
hello(at)roundcube(dot)net


[pear]:         http://pear.php.net
[gpl]:          http://www.gnu.org/licenses/
[license]:      http://roundcube.net/license
[support]:      http://roundcube.net/support
[githubissues]: https://github.com/roundcube/roundcubemail/issues